Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uZ6mg-00GEZL-2m for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Jul 2025 11:46:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uZ6mb-007DAC-HJ for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Jul 2025 11:46:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uZ6mb-007D9a-00 for pgsql-hackers@lists.postgresql.org; Tue, 08 Jul 2025 11:46:45 +0000 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uZ6mY-006RgV-0z for pgsql-hackers@lists.postgresql.org; Tue, 08 Jul 2025 11:46:44 +0000 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56849gIi000348 for ; Tue, 8 Jul 2025 11:46:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:reply-to:subject:to; s=pp1; bh=eg+kdf5vUmF28A89bh88+ ghdCi9FdyJWQPdFDuJY0Iw=; b=Qf5bClpGUO3bfNU4RtBEv4mray6yEpfaUZjWM bA5JeWq8goHSj0Pfe6I+rJZ3O69NNr7Nm3R36uRxOL1JUK48DQB8V9fzD94qYHjQ qNISJns7HQRNLSb4MWLbcRgf0s/Mb+nQ6jXk07+8PqGOPFHbyYW1g7UBCEXKTdAR 3T4kuE6qQyIKSUTPfMPB0P9PT7moMcMJcN9b0lshKXaqzWYQ4gUe+uYT4pFVurwg anhmSEmpV7P5P8a3VJUR3IpmzXDBeVEM4pSM64fClQQENCKHUzaslaLQgnaryoqn 9srgEwRS8kNO/QJ/f1q1YIMlK/En+NhHHw+ejc3XmyNbeEAAQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47puk3ykn7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 08 Jul 2025 11:46:38 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 568BKh1A000749 for ; Tue, 8 Jul 2025 11:46:38 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04on2045.outbound.protection.outlook.com [40.107.102.45]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47puk3ykmt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Jul 2025 11:46:37 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qJRLZfyk03t+1wV4n2u0Xb8lg6TeEu9Spd6ilHaGpTBFijSy/mHlCq5yaP3+1bCXrnMJk0bhKsohuQ5SgzIVAGMRHHr7JQKTzdUfRDPB3hDEFOxUFZicZjauFJ6UaHo7qulnTxESXcWvwm63VT1hui+dTHkJyf3bMLiw5H9ubrc2S15+Y7J3iXBcP9oXestQ4+2FPnmd5PSK++ISvOfN2oUzWDaRPyDK1X5kFYn2LqmJw7TLc/4znUn7rD5wkUxRXw4B7liHVs743iPqybGu6juTYUj6KdkTZH+kQS+mRf8OKzdMPMx2K6PQA/zoEgBy2YZr9xkRYtIUgcBNkvEFXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eg+kdf5vUmF28A89bh88+ghdCi9FdyJWQPdFDuJY0Iw=; b=rsfjzpQ9Sp3zYUa1ftmLWT9hAKDuw5H1U63JLVF4FKqiElpMQOluLhnKvvUDHEt1xxFyx0TeO1NwTL2tZEqvDzENmlHrvQ2YHh0unsvQNmW++rcv23B4liAWOtD/SZbuM7tROoP3cOJZA50q/N6zn4e3chawn3DRUJXFHhBTjvx1evV0D1hJ5Zxx0WK/3fddjwIT7TtJ5WJ1X/qHH1kAlwcj4iLczs6bXxzs84LEjJ18mnf1Ipkgy1VQFkk9qdihfkPQdQq7rHC6YnzeFza9Xb7JRuRyFLP/GuWEioEqIhkRE/v/au8eW47Qz3RDts8Ji6176N64aMUiTZVHBuWr+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from PH7PR15MB6407.namprd15.prod.outlook.com (2603:10b6:510:2fc::21) by PH3PPF86254B51F.namprd15.prod.outlook.com (2603:10b6:518:1::4b4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.16; Tue, 8 Jul 2025 11:46:29 +0000 Received: from PH7PR15MB6407.namprd15.prod.outlook.com ([fe80::3f86:7e69:c339:b0bc]) by PH7PR15MB6407.namprd15.prod.outlook.com ([fe80::3f86:7e69:c339:b0bc%7]) with mapi id 15.20.8901.024; Tue, 8 Jul 2025 11:46:29 +0000 From: Eduard Stefes To: "johncnaylorls@gmail.com" CC: "pgsql-hackers@lists.postgresql.org" , "brueckner@linux.ibm.com" , "iii@linux.ibm.com" , Eduard Stefes Subject: Re: [V2] Adding new CRC32C implementation for IBM S390X Thread-Topic: [V2] Adding new CRC32C implementation for IBM S390X Thread-Index: AQHb7/3xIl/yDUMJo0OQSrXWqnXH1A== Date: Tue, 8 Jul 2025 11:46:29 +0000 Message-ID: References: <918d9941377f6e83fbfebe96ba496ccaefa3803f.camel@ibm.com> <421931ea921dd94340808089fc1dfcf967c4c163.camel@ibm.com> <2078ad39a456088fd4a5ea98084e7d72bdf8ff2b.camel@ibm.com> In-Reply-To: Reply-To: Eduard Stefes Accept-Language: en-US, de-CH Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR15MB6407:EE_|PH3PPF86254B51F:EE_ x-ms-office365-filtering-correlation-id: 39b8e15a-3883-4621-38da-08ddbe1513c3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|4053099003|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?R2JCa0NHY0VQMS9KM1JPVmpnNjA5TXBWQ2dWTGczcUNPVHNrbmtTVUlaeEl5?= =?utf-8?B?cDJVaXpEaXhMRjBOVGxYRkh4S2pTRmZtTmxCdTlpZ1pBSjRMZFYyb0NkL2xz?= =?utf-8?B?OER3MmhjZ1psZGUzUE1RL2RJQ0d2ejJwTDBhajZMTnRuS0c0aWY4a0pPQnpm?= =?utf-8?B?UFRjQ0x1RFk4UkRBRjRadHd3akJYTklCLzVKaWR1NjQ4WFdKUFhjTnVuRUdk?= =?utf-8?B?Tm9vaHNRejhVeGVpSUlVU3ErMGRrMjdsYnIvMHV2ZzY3RnpUUXdWejZxY3Ez?= =?utf-8?B?WGlGRjhQak55OUtoTGJ6WkxrbHNwS29yQlpVeW9vRnhUVGdFM3BuMndpOFQ3?= =?utf-8?B?cUthaGo0T0JKdVJBNDVHdUltTnFFb0N5Z0JpWXNZL1dtQVV1Q2hEQTNyeGdY?= =?utf-8?B?b3JVVTBwYmYxYldackdDV28ybmdVV0d0UE9PRHNyaWxrSFczS2MvajYvZGNW?= =?utf-8?B?TjQxTWc4dU1sYTNIaVhFSFFoWXJrWkV3eUFsYTNxNE8zTEhIYWJKNTNndnVB?= =?utf-8?B?YTJMcGhFd1lQWEpJZHJkR2Z0RWtYU2w3c25XazNNcUw1Y0VqaFIrencyK0w4?= =?utf-8?B?Q1dmalNuVGp1anZLdnZXUVBpRTIwa1lYaW5GTWtaNVhGaHU5Y0wzZ0t5cjhr?= =?utf-8?B?TisxcEFJWUtscENDemJoWHFFWTFvNGRnbytoYU1BU1FkemE4d0hGdVJUbysv?= =?utf-8?B?c1pCNjBRMy8xbFVJRkh0aU8vRS9Hd3J6YkNPUG1scVcxR1Mzc2lYbFJKZms3?= =?utf-8?B?RHNoT2lNRjhrWmpTanhIYTQwUVlUUi9CK2pVT1JJL0JrajRIRTlTd2NmT0M3?= =?utf-8?B?dkhDMWtNYWhqemF3OVBiMG04MDgzdk1wTDJweGJXOTFyVDlQdmFNdjVQL21q?= =?utf-8?B?anJad0RjOTlML2NlT2kvSXFiMEJtMkNrSVpsa3hpRVpUNnQ1R1V6NkNLbWtZ?= =?utf-8?B?TnFtMUxLYnFpUFBDeHNKcTBGcE1xbjNSNFZXVTZBUzU5UWR2L0t2ekhYY0Q4?= =?utf-8?B?MktVZnR2SmdDTE1zSkd2YnRkVjc1NXAxQUVPRmMzcnduUHQ5bmMyLy9yandH?= =?utf-8?B?ZDdjaG85ZEg3Y29VSjRBR2ZqQzI1cXByNW9INTZxNVhFOVZmdlRtd0d4cmQv?= =?utf-8?B?clhVYXB2QnhsdXp0RHZMTUkwZ3JrZ2xQSDY2QStJd0ZJaFpZQ2VHcjVKTkpU?= =?utf-8?B?VnlOVmJZOU9ENEZ2Rmo3bytaalpneFFXYU5yRVlubjRBeG1XZWlWMWlnNDVH?= =?utf-8?B?R2xjdGZXN1Y1UFoyazF3Y21ZeVFrZTRWZ0JGZUpGVG9uWVViQXpkckx1Q3lC?= =?utf-8?B?aWdpN1lvbVg2Q1dFUUlFcHpxZFVDa294MkRnd2NRMU5kUkRGb3R0bERxRWFP?= =?utf-8?B?SDdUbDBBTjJUMzhYbzI4NkVyUkQzRWRxYVlKNmtNaktrOTREUTk5NTV5Qkhl?= =?utf-8?B?Wko5VkFPem1pd21pcWE3TFlVN2owbTZ5clVvVkh3aWRxSFljZXpPamVlcHJT?= =?utf-8?B?b1BYaXk4Ym41a1JBaWJHUTczS1ViQXF6dWFLRkIvREdRVC9zU2RnTkVJWE84?= =?utf-8?B?K2ZlaUkxdHl0bjRzazFzZitlY1h3TnQxcFZCT1AwUWVRWGw0RUZSNmVsVUc4?= =?utf-8?B?OHVkNHllQWRwaVo3RUtsaitOdjdJYnFHZW82dDJQc2lBMnp0Z1BjcGtGT2pk?= =?utf-8?B?TGVoQlJ0MFZ5VGUzRlNoRWNTamZnQUhJQmVvb2dsaXhzd1d5cEtRMnVvRWZq?= =?utf-8?B?UC9tMTBXaVprL1VWeHFCZWdiRFpzMkJTNlB6WnRnWHRYejlVYW9lTWtMOWVj?= =?utf-8?B?N1ozRFphdG81WXk5M1IrUDdzM0trWi8rZzhUYTd2VjZVN0Y3NnR0b3ZtQXBK?= =?utf-8?B?VnlndStnM1J3U3drRi96NkR0b1BZYzhNYTNQeFlDN3RCZEpzekh2eEJnaFR4?= =?utf-8?B?d2JaV2FReWRjMUpuUEtGVjFmM3BzNmx2SGU3bmdOSE5JTGRmbTB2cHg2bnhL?= =?utf-8?B?MFBGYVB6K3RnPT0=?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR15MB6407.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(4053099003)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N3VXVktKTmZQNXkwNFpWc3RpNWRONWNRa3dYL3VCbXZzYkViSUhHZWhSa0Zw?= =?utf-8?B?SVZPeXEza0ZqMzJtaGQ2eEZoYTFpQkM5WHNFVTZkV212cWRIRmNITmhGN1N4?= =?utf-8?B?UlhVcHJaQ2FqSXNHRjZ5Z1dGSkNHQnlEdUxsaThwTGpFWFpVM2JiQ3VGSlo1?= =?utf-8?B?cURpMGl4RFYzc2grczNRWGdvZG4xS3ZEQnBqZm5LNldEVHlYdDFpVnpGN2NY?= =?utf-8?B?VFRlb0oyU1R5UjlUSS91V1Rlb1JUaDgyOStYaG9HMFFzckYzb1YvYW92Zi9M?= =?utf-8?B?d1hwMmc1NHEyejBWWE9YeXJGcUdzVnhsMGQzT3BGbUNyeFRkQnd4Qi9QUjhJ?= =?utf-8?B?NS9pTnBRQVZONTZCU1puZUpWeldBQjlzWWpIcVN6ZHByaUlNaEZETUJ0QjNE?= =?utf-8?B?dzFZMzFJU3lhWHpvR3k0T1Rlam5sSytkbU1JSDhTNXJnU016RFJrM2FZdEpJ?= =?utf-8?B?M1dXZzRLUFRQMnJYbjhNU2x1bGp6aEZhUENsLzRMa1hFMjJIKzM4cUN3elBy?= =?utf-8?B?ZWQrRlhqNGQ1SVozL1BTcXhTQ3FvTjJxNU5VTHI2Q2Q2WTUwbkZhUGR0L2Z5?= =?utf-8?B?NDByRlJEaFNQZXBWNUZOL2xrL3RkSHVOZ3JqU3dSbFFKWXRFTVlUSEhuZ253?= =?utf-8?B?RlhJcGFvSk9jRDRwQXhPZDF4c2d0R3Y1am5GRlZxamduNW9WRytBU1VtT2dN?= =?utf-8?B?NjB0MnllWVBwb2dsb1h5UzhrRlp4bXVSK3phOFJtSVFxczJMbWpLaDgyRW1D?= =?utf-8?B?QnMvakEzNWdyTXR3ZU9SaHg0blBIVlJJZlRhTlVqUDRVT1NhSyttdEkzMzhG?= =?utf-8?B?YWEzRHBnR0VQSnl4cVFkbUc0K0c0L2dnMHQvSlluT2xGVUFXSWludk52eTI4?= =?utf-8?B?bW10ZklXUDRoU0Qwa3FFcTJCNXNQN0o1SDJJbE1CYnNxbkNGOSt1TVE2d2R5?= =?utf-8?B?T2NTMUloSUNDU21rdkM3MG5xMjMxRVBhcThxWS9WakwrME16VkJpeUxEV1FP?= =?utf-8?B?Vzg1d09tM3RBQlhmZFFxS1A5Q1F4MjRNN3NOUUNOVTlKWmZuYmpsNnRRbi9k?= =?utf-8?B?ZWFXZzZlOGlpUFFNclYzTURrMEhVb016cUh5N2VwSlFxalQrSFpKUVR6ZitW?= =?utf-8?B?bEF1K1EwSU9UM01LbERSQjliQlVQSDRwL3kzRVRCSkE4YmxCUkxDQzRqYUxT?= =?utf-8?B?NW1mRFk2RkpSbUNQVDB3UEtZRDA0QWxEWDUwSFlBWmxTa2hyY25ScnQrb2dr?= =?utf-8?B?WldPU0VCNWM3cWZMbVBtTVN5THIyOTBrSjZWRHFpWmJ3NmxsMVp2V0VKZFQ0?= =?utf-8?B?cDI3ZGRYZ29oeVl6d3A2Um9hQjhwaGh1ZzlDZ2RCNXNLd1NIcVNPNlpoczVT?= =?utf-8?B?djFDNU5PeTc0ODRJK0tnMEtMNnRvNWM0b0IxVm5oWUZvODU4S09QNXlDQW44?= =?utf-8?B?TGp2UG5xNVcyQ0JmbXNkMkw5Z0FFaHR3djZsVFNqdnJ5SkNWT1RhVlFLUXRr?= =?utf-8?B?SFFTS29vQ08rQ212aDZldFlRUWdGMUF6RUkyTnZpTlJZa1N6OUxlNXVoS21Z?= =?utf-8?B?WHFnTmhzVjhHTk5lb2k3WFMrNkFMUW5TRGtLWXVtbFJhRlZvZUVkSHpXUWJB?= =?utf-8?B?WHVlSzJYV2RMaU1Pdm40akdvZWdPNForWkd5bHRYVFRkU3BvNG5Wdnd6NlNL?= =?utf-8?B?NUVmTWsrVkxrd0JuSnYrU2gxalJjL29iemx2TjBmdS9jenRpa2FsL0hrT1Vy?= =?utf-8?B?eng1TzAySkhtWVVRbFhRWmQ0R01FMHUzODN6M241cm1kUFpUOEdkeExZNmZN?= =?utf-8?B?Mkg4dlVwZ3l4UFBJbGVkMFJJVDZlM0p3RloxODRKRTBJL1llby9PZXV4MXh5?= =?utf-8?B?Z2MreEFQK2oyRk1zc0JHaDNWQWVPam1IaHNvQUYwS1E5Y05qM2RVbHNGaU01?= =?utf-8?B?cG1TYjRaaVB1c0hFbHRTZXFodlRxcnNNSWxzeEczVGtaRWxudkxYUW9lbGVS?= =?utf-8?B?RnJIZUNnNWpLRllCWjZqQ0M1SCtkQmc0QUdkSlZNbXlSUVJ1a1FXbUdLVDA1?= =?utf-8?B?TWRqWFJXSjBzRkVUelRDRmFsbVc1TG53OGFFcE9oOS8zbXpVakg1RytnUWZa?= =?utf-8?Q?rx4i4WoAPHJRb5Ax25BI7PMsr?= Content-Type: multipart/mixed; boundary="_002_cb872244efcf9a260ff67cd5ccfc2e23c132022dcamelibmcom_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR15MB6407.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39b8e15a-3883-4621-38da-08ddbe1513c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2025 11:46:29.1482 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qqly/OwVEOFn1JL6mDGp42H/9AeNZcDJf+zZE0r1X+kqSoRklMIxGVT8GZYIzN7PC5TS33OnabjJkBEHBVX2Kw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH3PPF86254B51F X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA4MDA5OCBTYWx0ZWRfX8LnKOMqZ92b3 d9Wu6rRiUjhJkdRzpGs/w8G0SwaI6pzEbsWUo5M5M3S5PW/PEn41JJr6H6030En0R4XHKWP0NHM EmUblTZDtB/QS/otcqztMf7nxuWJ4EBca3RC2zhtw7sUPPQ6zzY2/LaDUTrBZR6pAWOZIZrGJbZ nK29t54OSAyAtC27wcmlCl+ZfzSjqmWzAZu6kf71OJuvJKjM8XJo2oEKgvjE79xfxlq7jNk4rw2 dIYmTMy2JAEXG7o32NJ8WENkHNjUAkzgxriz5+Phh+4o/MgewM2RiHIjkZ0u/4DwarsE6GWjA7j XwlxAfDNXbqPIIVr2S6VfA4I72rvGeFrXcv3/v6aZzCENeRPRdMAQSVuvaaK+ZvEQeEtvQLbyg7 Tp2dIYGDHfaoov1jw3Q8/lqCt0pTrcoF32rIocPQfB1wBww2QyI4m8NUqdkOWLxi8oqo1Rlg X-Authority-Analysis: v=2.4 cv=XYeJzJ55 c=1 sm=1 tr=0 ts=686d051e cx=c_pps a=UucT7Wiw3x0ceg0ht3lxvQ==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=iBP54l03RG7Jl_08ehYA:9 a=QEXdDO2ut3YA:10 a=3i18FND5V_43s23_aNIA:9 a=B2y7HmGcmWMA:10 X-Proofpoint-ORIG-GUID: 2mh_4Zq9jprkPc4ZYgp8d1FQ9uXCiMMy X-Proofpoint-GUID: UdOkeWb-2M_nLJKSEEHn1jxOvjEVKMwg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-08_03,2025-07-07_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 suspectscore=0 mlxscore=0 impostorscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507080098 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_cb872244efcf9a260ff67cd5ccfc2e23c132022dcamelibmcom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGksDQoNCmhlcmUgaXMgVjMgb2YgdGhlIHBhdGNoLiBDaGFuZ2VzIGZyb20gVjI6DQoNCi0gcmVt b3ZlZCBJQk0gY29weXJpZ2h0DQotIHJlbW92ZWQgR0VUQVVYVkFMIGNoZWNrIGluIGZhdm9yIG9m IHRoZSBhbHJlYWR5IHByb3ZpZGVkIGNoZWNrDQotIG1vdmVkIHJ1bnRpbWUgc2VsZWN0aW9uIGNv ZGUgZnJvbSBwZ19jcmMzMmNfczM5MHhfY2hvb3NlLmMgdG8NCnBnX2NyYzMyY19zMzkweC5jIGFu ZCByZW1vdmVkIF9jaG9vc2UuYyBmaWxlDQotIHJlbW92ZWQgdGhlIGNvbmZpZyB0aW1lIGNvbXBp bGVyIGNoZWNrIGFuZCBsZXQgdGhlIGJ1aWxkc3lzdGVtIGZhbGwNCmJhY2sgdG8gc2I4DQotIGNo YW5nZWQgYnVmZmVyIGxpbWl0IGJhY2sgdG8gMzIgYnl0ZXMgYmVmb3JlIGNhbGxpbmcgczM5MHgg c3BlY2lmaWMNCmltcGxlbWVudGF0aW9uIA0KDQoNCi0tIA0KRWR1YXJkIFN0ZWZlcyA8ZWR1YXJk LnN0ZWZlc0BpYm0uY29tPg0KDQoNCg0KDQoNCg== --_002_cb872244efcf9a260ff67cd5ccfc2e23c132022dcamelibmcom_ Content-Type: text/x-patch; name="v3-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch" Content-Description: v3-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch Content-Disposition: attachment; filename="v3-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch"; size=30491; creation-date="Tue, 08 Jul 2025 11:46:28 GMT"; modification-date="Tue, 08 Jul 2025 11:46:28 GMT" Content-ID: <7C8EE1D313E75D488BFE116191CEBC38@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAyY2QzODY2YzRmOWI1YzNlNWIwOGYzNmRmMmVlYjBmMjkyOGNmYmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiRWRkeSAoRWR1YXJkKSBTdGVmZXMiIDxlZHVhcmQuc3RlZmVz QGlibS5jb20+CkRhdGU6IFR1ZSwgMTUgQXByIDIwMjUgMTA6MjI6MDUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYzXSBBZGRlZCBjcmMzMmMgZXh0ZW5zaW9uIGZvciBpYm0gczM5MHggYmFzZWQgb24g VlgKIGludHJpbnNpY3MKCi0tLQogY29uZmlnL2MtY29tcGlsZXIubTQgICAgICAgICB8ICAzOSAr KysrKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICB8IDIyMSArKysrKysrKysrKysrKysr KysrKysrKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8ICA1MyArKysrKystCiBt ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgIDM0ICsrKysKIHNyYy9pbmNsdWRlL3BnX2Nv bmZpZy5oLmluICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaCB8ICAyNSAr KysKIHNyYy9wb3J0L01ha2VmaWxlICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9wb3J0L21lc29u LmJ1aWxkICAgICAgICAgfCAgIDYgKwogc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMgICB8IDI5 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA2 NzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMKCmRpZmYgLS1naXQgYS9jb25maWcvYy1jb21waWxlci5t NCBiL2NvbmZpZy9jLWNvbXBpbGVyLm00CmluZGV4IDVmM2UxZDFmYWY5Li43M2ZiYmY2MzYyZSAx MDA2NDQKLS0tIGEvY29uZmlnL2MtY29tcGlsZXIubTQKKysrIGIvY29uZmlnL2MtY29tcGlsZXIu bTQKQEAgLTY4NCw2ICs2ODQsNDUgQEAgZmkKIHVuZGVmaW5lKFtBY19jYWNoZXZhcl0pZG5sCiBd KSMgUEdBQ19MT09OR0FSQ0hfQ1JDMzJDX0lOVFJJTlNJQ1MKIAorIyBQR0FDX1MzOTBYX1ZFQ1RP Ul9WWF9JTlRSSU5TSUNTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENo ZWNrIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgUzM5MFggdmVjdG9yIGludHJpbnNpY3Ms IHVzaW5nCisjIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpLCB2ZWNfZ2Ztc3VtX2Fj Y3VtXzEyOAorIworIyBUaGVzZSBpbnN0cnVjdGlvbnMgd2hlcmUgaW50cm9kdWNlZCB3aXRoIC1t YXJjaD16MTMuCisjIHRoZSB0ZXN0IGFyZzEgaXMgbWFuZGF0b3J5IGFuZCBzaG91bGQgYmUgZWl0 aGVyOgorIyAnLWZ6dmVjdG9yJyBmb3IgY2xhbmcKKyMgJy1temFyY2gnIGZvciBnY2MKKyMKKyMg Y29tcGlsYXRpb24gbWF5IGZhaWwgd2l0aCBHQ0MgMTQuMC4wIDw9IGdjY192ZXJzaW9uIDwgMTQu My4wIGFuZCBDbGFuZyAxOC4wLjAgPD0gY2xhbmdfdmVyc2lvbiA8IDE5LjEuMgorIworIyBJZiB0 aGUgaW50cmluc2ljcyBhcmUgc3VwcG9ydGVkLCBzZXRzCisjIHBnYWNfczM5MHhfdmVjdG9yX2lu dHJpbnNpY3MsIGFuZCBDRkxBR1NfQ1JDLgorQUNfREVGVU4oW1BHQUNfUzM5MFhfVkVDVE9SX1ZY X0lOVFJJTlNJQ1NdLAorW2RlZmluZShbQWNfY2FjaGV2YXJdLCBbQVNfVFJfU0goW3BnYWNfY3Zf czM5MHhfdmVjdG9yX2ludHJpbnNpY3NfJDFfJDJdKV0pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9y IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpLCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3 aXRoIENGTEFHUz0kMSAkMl0sIFtBY19jYWNoZXZhcl0sCitbcGdhY19zYXZlX0NGTEFHUz0kQ0ZM QUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTICQxICQyIgorQUNfTElOS19JRkVMU0UoW0FD X0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHZlY2ludHJpbi5oPgorICAgIHVuc2lnbmVkIGxvbmcg bG9uZyBhIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICAgdW5z aWduZWQgbG9uZyBsb25nIGIgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAg fTsKKyAgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkg PSB7IDAgfTsKKyAgICBzdGF0aWMgdm9pZCB2ZWNpbnRfZ2Ztc3VtX2FjY3VtX3Rlc3Qodm9pZCl7 CisgICAgICAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChhLCBiLCBjKTsKKyAgICB9XSwKKyAg WworICAgdmVjaW50X2dmbXN1bV9hY2N1bV90ZXN0KCk7CisgICByZXR1cm4gMDtdKV0sCisgIFtB Y19jYWNoZXZhcj15ZXNdLAorICBbQWNfY2FjaGV2YXI9bm9dKQorQ0ZMQUdTPSIkcGdhY19zYXZl X0NGTEFHUyJdKQoraWYgdGVzdCB4IiRBY19jYWNoZXZhciIgPSB4InllcyI7IHRoZW4KKyAgQ0ZM QUdTX0NSQz0iJDEgJDIiCisgIEFTX1RSX1NIKFtwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNz XyQxXyQyXSk9eWVzCitmaQordW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKK10pIyBQR0FDX1Mz OTBYX1ZFQ1RPUl9WWF9JTlRSSU5TSUNTCisKICMgUEdBQ19YU0FWRV9JTlRSSU5TSUNTCiAjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgdGhl IFhTQVZFIGluc3RydWN0aW9ucyB1c2luZyB0aGUgX3hnZXRidgpkaWZmIC0tZ2l0IGEvY29uZmln dXJlIGIvY29uZmlndXJlCmluZGV4IDRmMTUzNDdjYzk1Li5hYTA2MzAzMDE5YiAxMDA3NTUKLS0t IGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTgwODgsNiArMTgwODgsMTg3IEBAIGlm IHRlc3QgeCIkcGdhY19jdl9sb29uZ2FyY2hfY3JjMzJjX2ludHJpbnNpY3MiID0geCJ5ZXMiOyB0 aGVuCiBmaQogCiAKKyMgQ2hlY2sgZm9yIFMzOTBYIFZlY3RvciBpbnRyaW5zaWNzIHRvIGRvIENS QyBjYWxjdWxhdGlvbnMuCisjCisjIEZpcnN0IGNoZWNrIGZvciB0aGUgaG9zdCBjcHUKK2lmIHRl c3QgeCIkaG9zdF9jcHUiID0geCJzMzkweCIgJiYgdGVzdCB4IiRhY19jdl9mdW5jX2dldGF1eHZh bCIgPSB4InllcyI7IHRoZW4KKyAgIyBDaGVjayBmb3IgYWxsIHBvc3NpYmxlIGNmbGFnIGNvbWJp bmF0aW9ucworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSwgdmVjX2dmbXN1bV9hY2N1 bV8xMjggd2l0aCBDRkxBR1M9LWZ6dmVjdG9yICIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm b3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4 IHdpdGggQ0ZMQUdTPS1menZlY3RvciAuLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9zMzkweF92 ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxB R1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIC1menZlY3RvciAiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8 dmVjaW50cmluLmg+CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYiBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHVuc2lnbmVkIGNoYXIgYyBf X2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHN0YXRpYyB2b2lk IHZlY2ludF9nZm1zdW1fYWNjdW1fdGVzdCh2b2lkKXsKKyAgICAgICAgYyA9IHZlY19nZm1zdW1f YWNjdW1fMTI4KGEsIGIsIGMpOworICAgIH0KK2ludAorbWFpbiAoKQoreworCisgICB2ZWNpbnRf Z2Ztc3VtX2FjY3VtX3Rlc3QoKTsKKyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQor X0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3Zf czM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXz15ZXMKK2Vsc2UKKyAgcGdhY19jdl9z MzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfPW5vCitmaQorcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv bmZ0ZXN0LiRhY19leHQKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X3MzOTB4X3Zl Y3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4 X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID4mNjsgfQoraWYgdGVzdCB4IiRwZ2FjX2N2 X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID0geCJ5ZXMiOyB0aGVuCisgIENG TEFHU19DUkM9Ii1menZlY3RvciAiCisgIHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6 dmVjdG9yXz15ZXMKK2ZpCisKKyAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5z aWNzX19menZlY3Rvcl8iICE9IHgieWVzIjsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9z aXplKDE2KSkpLCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3aXRoIENGTEFHUz0tZnp2ZWN0b3IgLW1h cmNoPXoxMyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1menZlY3Rv ciAtbWFyY2g9ejEzLi4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJp bnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFH Uz0iJHBnYWNfc2F2ZV9DRkxBR1MgLWZ6dmVjdG9yIC1tYXJjaD16MTMiCitjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisj aW5jbHVkZSA8dmVjaW50cmluLmg+CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1 dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg YiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHVuc2lnbmVk IGNoYXIgYyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHN0 YXRpYyB2b2lkIHZlY2ludF9nZm1zdW1fYWNjdW1fdGVzdCh2b2lkKXsKKyAgICAgICAgYyA9IHZl Y19nZm1zdW1fYWNjdW1fMTI4KGEsIGIsIGMpOworICAgIH0KK2ludAorbWFpbiAoKQoreworCisg ICB2ZWNpbnRfZ2Ztc3VtX2FjY3VtX3Rlc3QoKTsKKyAgIHJldHVybiAwOworICA7CisgIHJldHVy biAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Cisg IHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTM9eWVz CitlbHNlCisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJj aF96MTM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorQ0ZMQUdTPSIkcGdh Y19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19t YXJjaF96MTMiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNz X19menZlY3Rvcl9fbWFyY2hfejEzIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9zMzkweF92 ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfX21hcmNoX3oxMyIgPSB4InllcyI7IHRoZW4KKyAg Q0ZMQUdTX0NSQz0iLWZ6dmVjdG9yIC1tYXJjaD16MTMiCisgIHBnYWNfczM5MHhfdmVjdG9yX2lu dHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTM9eWVzCitmaQorCisgICAgaWYgdGVzdCB4IiRw Z2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiAhPSB4Inll cyI7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpLCB2ZWNfZ2Ztc3Vt X2FjY3VtXzEyOCB3aXRoIENGTEFHUz0tbXphcmNoICIgPiY1CiskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1f MTI4IHdpdGggQ0ZMQUdTPS1temFyY2ggLi4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFH Uz0iJHBnYWNfc2F2ZV9DRkxBR1MgLW16YXJjaCAiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8dmVj aW50cmluLmg+CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGEgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYiBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHVuc2lnbmVkIGNoYXIgYyBfX2F0 dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHN0YXRpYyB2b2lkIHZl Y2ludF9nZm1zdW1fYWNjdW1fdGVzdCh2b2lkKXsKKyAgICAgICAgYyA9IHZlY19nZm1zdW1fYWNj dW1fMTI4KGEsIGIsIGMpOworICAgIH0KK2ludAorbWFpbiAoKQoreworCisgICB2ZWNpbnRfZ2Zt c3VtX2FjY3VtX3Rlc3QoKTsKKyAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FD RU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF89eWVzCitlbHNlCisgIHBnYWNfY3ZfczM5MHhf dmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF89bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu JGFjX2V4dAorQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2lu dHJpbnNpY3NfX216YXJjaF8iID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9p bnRyaW5zaWNzX19temFyY2hfIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9zMzkweF92ZWN0 b3JfaW50cmluc2ljc19fbXphcmNoXyIgPSB4InllcyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0iLW16 YXJjaCAiCisgIHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF89eWVzCitmaQor CisgICAgICBpZiB0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8i ICE9IHgieWVzIjsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSwg dmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LW16YXJjaCAtbWFyY2g9ejEzIiA+JjUK KyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikp KSwgdmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LW16YXJjaCAtbWFyY2g9ejEzLi4u ICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9f bWFyY2hfejEzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK K2Vsc2UKKyAgcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZM QUdTIC1temFyY2ggLW1hcmNoPXoxMyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx2ZWNpbnRyaW4u aD4KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgx NikpKSA9IHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZl Y3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICAgdW5zaWduZWQgY2hhciBjIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICAgc3RhdGljIHZvaWQgdmVjaW50X2dm bXN1bV9hY2N1bV90ZXN0KHZvaWQpeworICAgICAgICBjID0gdmVjX2dmbXN1bV9hY2N1bV8xMjgo YSwgYiwgYyk7CisgICAgfQoraW50CittYWluICgpCit7CisKKyAgIHZlY2ludF9nZm1zdW1fYWNj dW1fdGVzdCgpOworICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgcGdhY19jdl9zMzkweF92ZWN0 b3JfaW50cmluc2ljc19fbXphcmNoX19tYXJjaF96MTM9eWVzCitlbHNlCisgIHBnYWNfY3ZfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hfejEzPW5vCitmaQorcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhl ZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MiCitmaQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRwZ2FjX2N2X3Mz OTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMyIgPiY1CiskYXNfZWNobyAi JHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hfejEzIiA+JjY7 IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoX19t YXJjaF96MTMiID0geCJ5ZXMiOyB0aGVuCisgIENGTEFHU19DUkM9Ii1temFyY2ggLW1hcmNoPXox MyIKKyAgcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoX19tYXJjaF96MTM9eWVz CitmaQorCisgICAgICBmaQorICAgIGZpCisgIGZpCitmaQorCiAKIAogIyBTZWxlY3QgQ1JDLTMy QyBpbXBsZW1lbnRhdGlvbi4KQEAgLTE4MTQwLDkgKzE4MzIxLDIxIEBAIGlmIHRlc3QgeCIkVVNF X1NMSUNJTkdfQllfOF9DUkMzMkMiID0geCIiICYmIHRlc3QgeCIkVVNFX1NTRTQyX0NSQzMyQyIg PSB4IiIgJiYKICAgICAgICAgICBpZiB0ZXN0IHgiJHBnYWNfbG9vbmdhcmNoX2NyYzMyY19pbnRy aW5zaWNzIiA9IHgieWVzIjsgdGhlbgogICAgICAgICAgICAgVVNFX0xPT05HQVJDSF9DUkMzMkM9 MQogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHNsaWNpbmctYnkt OCBhbGdvcml0aG0sIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSBhbnkKLSAgICAgICAgICAgICMgc3Bl Y2lhbCBDUFUgc3VwcG9ydC4KLSAgICAgICAgICAgIFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDPTEK KyAgICAgICAgICAgICMgVXNlIFMzOTBYIHZlY3RvciBleHRlbnNpb24uCisgICAgICAgICAgICBp ZiAodGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iID0geCJ5 ZXMiIHx8CisgICAgICAgICAgICAgICB0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNp Y3NfX216YXJjaF8iID0geCJ5ZXMiKTsgdGhlbgorICAgICAgICAgICAgICBVU0VfUzM5MFhfQ1JD MzJDPTEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgIyBVc2UgUzM5MFggdmVjdG9y IGV4dGVuc2lvbiB3aXRoIHJ1bnRpbWUgY2hlY2suCisgICAgICAgICAgICAgIGlmIHRlc3QgeCIk cGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfX21hcmNoX3oxMyIgPSB4Inll cyIgfHwKKyAgICAgICAgICAgICAgIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2lj c19fbXphcmNoX19tYXJjaF96MTMiID0geCJ5ZXMiOyB0aGVuCisgICAgICAgICAgICAgIFVTRV9T MzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLPTEKKyAgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHNsaWNpbmctYnktOCBhbGdvcml0aG0sIHdoaWNo IGRvZXNuJ3QgcmVxdWlyZSBhbnkKKyAgICAgICAgICAgICAgICAjIHNwZWNpYWwgQ1BVIHN1cHBv cnQuCisgICAgICAgICAgICAgICAgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkM9MQorICAgICAgICAg ICAgICBmaQorICAgICAgICAgICAgZmkKICAgICAgICAgICBmaQogICAgICAgICBmaQogICAgICAg ZmkKQEAgLTE4MTkzLDEyICsxODM4NiwzMCBAQCAkYXNfZWNobyAiI2RlZmluZSBVU0VfTE9PTkdB UkNIX0NSQzMyQyAxIiA+PmNvbmZkZWZzLmgKICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogTG9vbmdBcmNoIENSQ0MgaW5zdHJ1Y3Rpb25z IiA+JjUKICRhc19lY2hvICJMb29uZ0FyY2ggQ1JDQyBpbnN0cnVjdGlvbnMiID4mNjsgfQogICAg ICAgICBlbHNlCisgICAgICAgICAgaWYgdGVzdCB4IiRVU0VfUzM5MFhfQ1JDMzJDIiA9IHgiMSI7 IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1MzOTBYX0NSQzMyQyAxIiA+PmNvbmZkZWZz LmgKKworICAgICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19zMzkweC5vIHBnX2Ny YzMyY19zYjgubyIKKyAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMiID4mNQor JGFzX2VjaG8gIlMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMgZm9yIENSQyIgPiY2OyB9CisgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgaWYgdGVzdCB4IiRVU0VfUzM5MFhfQ1JDMzJDX1dJVEhf UlVOVElNRV9DSEVDSyIgPSB4IjEiOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9TMzkw WF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgICAg ICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfczM5MHgubyBwZ19jcmMzMmNfc2I4Lm8iCisg ICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMgd2l0aCBydW50aW1lIGNoZWNr IiA+JjUKKyRhc19lY2hvICJTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMgd2l0aCBy dW50aW1lIGNoZWNrIiA+JjY7IH0KKyAgICAgICAgICAgIGVsc2UKIAogJGFzX2VjaG8gIiNkZWZp bmUgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMgMSIgPj5jb25mZGVmcy5oCiAKLSAgICAgICAgICBQ R19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgotICAgICAgICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBzbGljaW5nLWJ5LTgiID4mNQorICAg ICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgorICAgICAgICAgICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogc2xpY2lu Zy1ieS04IiA+JjUKICRhc19lY2hvICJzbGljaW5nLWJ5LTgiID4mNjsgfQorICAgICAgICAgICAg ZmkKKyAgICAgICAgICBmaQogICAgICAgICBmaQogICAgICAgZmkKICAgICBmaQpkaWZmIC0tZ2l0 IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDRiODMzNWRjNjEzLi4wZWUwYzlh NDQ3OSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjEz OSw2ICsyMTM5LDIzIEBAIGZpCiAjIHdpdGggdGhlIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuCiBQ R0FDX0xPT05HQVJDSF9DUkMzMkNfSU5UUklOU0lDUygpCiAKKyMgQ2hlY2sgZm9yIFMzOTBYIFZl Y3RvciBpbnRyaW5zaWNzIHRvIGRvIENSQyBjYWxjdWxhdGlvbnMuCisjCisjIEZpcnN0IGNoZWNr IGZvciB0aGUgaG9zdCBjcHUKK2lmIHRlc3QgeCIkaG9zdF9jcHUiID0geCJzMzkweCIgJiYgdGVz dCB4IiRhY19jdl9mdW5jX2dldGF1eHZhbCIgPSB4InllcyI7IHRoZW4KKyAgIyBDaGVjayBmb3Ig YWxsIHBvc3NpYmxlIGNmbGFnIGNvbWJpbmF0aW9ucworICBQR0FDX1MzOTBYX1ZFQ1RPUl9WWF9J TlRSSU5TSUNTKFstZnp2ZWN0b3JdLCBbXSkKKyAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzX19menZlY3Rvcl8iICE9IHgieWVzIjsgdGhlbgorICAgIFBHQUNfUzM5MFhf VkVDVE9SX1ZYX0lOVFJJTlNJQ1MoWy1menZlY3Rvcl0sIFstbWFyY2g9ejEzXSkKKyAgICBpZiB0 ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTMi ICE9IHgieWVzIjsgdGhlbgorICAgICAgUEdBQ19TMzkwWF9WRUNUT1JfVlhfSU5UUklOU0lDUyhb LW16YXJjaF0sIFtdKQorICAgICAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5z aWNzX19temFyY2hfIiAhPSB4InllcyI7IHRoZW4KKyAgICAgICAgUEdBQ19TMzkwWF9WRUNUT1Jf VlhfSU5UUklOU0lDUyhbLW16YXJjaF0sIFstbWFyY2g9ejEzXSkKKyAgICAgIGZpCisgICAgZmkK KyAgZmkKK2ZpCisKIEFDX1NVQlNUKENGTEFHU19DUkMpCiAKICMgU2VsZWN0IENSQy0zMkMgaW1w bGVtZW50YXRpb24uCkBAIC0yMTkxLDkgKzIyMDgsMjEgQEAgaWYgdGVzdCB4IiRVU0VfU0xJQ0lO R19CWV84X0NSQzMyQyIgPSB4IiIgJiYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDIiA9IHgiIiAm JgogICAgICAgICAgIGlmIHRlc3QgeCIkcGdhY19sb29uZ2FyY2hfY3JjMzJjX2ludHJpbnNpY3Mi ID0geCJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICBVU0VfTE9PTkdBUkNIX0NSQzMyQz0xCiAgICAg ICAgICAgZWxzZQotICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04IGFsZ29y aXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQotICAgICAgICAgICAgIyBzcGVjaWFsIENQ VSBzdXBwb3J0LgotICAgICAgICAgICAgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkM9MQorICAgICAg ICAgICAgIyBVc2UgUzM5MFggdmVjdG9yIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIGlmICh0ZXN0 IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXyIgPSB4InllcyIgfHwK KyAgICAgICAgICAgICAgIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXph cmNoXyIgPSB4InllcyIpOyB0aGVuCisgICAgICAgICAgICAgIFVTRV9TMzkwWF9DUkMzMkM9MQor ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIFVzZSBTMzkwWCB2ZWN0b3IgZXh0ZW5z aW9uIHdpdGggcnVudGltZSBjaGVjay4KKyAgICAgICAgICAgICAgaWYgdGVzdCB4IiRwZ2FjX3Mz OTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiA9IHgieWVzIiB8fAor ICAgICAgICAgICAgICAgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFy Y2hfX21hcmNoX3oxMyIgPSB4InllcyI7IHRoZW4KKyAgICAgICAgICAgICAgVVNFX1MzOTBYX0NS QzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0s9MQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04IGFsZ29yaXRobSwgd2hpY2ggZG9lc24n dCByZXF1aXJlIGFueQorICAgICAgICAgICAgICAgICMgc3BlY2lhbCBDUFUgc3VwcG9ydC4KKyAg ICAgICAgICAgICAgICBVU0VfU0xJQ0lOR19CWV84X0NSQzMyQz0xCisgICAgICAgICAgICAgIGZp CisgICAgICAgICAgICBmaQogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICBmaQpAQCAt MjIyOCw5ICsyMjU3LDIxIEBAIGVsc2UKICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3Jj MzJjX2xvb25nYXJjaC5vIgogICAgICAgICAgIEFDX01TR19SRVNVTFQoTG9vbmdBcmNoIENSQ0Mg aW5zdHJ1Y3Rpb25zKQogICAgICAgICBlbHNlCi0gICAgICAgICAgQUNfREVGSU5FKFVTRV9TTElD SU5HX0JZXzhfQ1JDMzJDLCAxLCBbRGVmaW5lIHRvIDEgdG8gdXNlIHNvZnR3YXJlIENSQy0zMkMg aW1wbGVtZW50YXRpb24gKHNsaWNpbmctYnktOCkuXSkKLSAgICAgICAgICBQR19DUkMzMkNfT0JK Uz0icGdfY3JjMzJjX3NiOC5vIgotICAgICAgICAgIEFDX01TR19SRVNVTFQoc2xpY2luZy1ieS04 KQorICAgICAgICAgIGlmIHRlc3QgeCIkVVNFX1MzOTBYX0NSQzMyQyIgPSB4IjEiOyB0aGVuCisg ICAgICAgICAgICBBQ19ERUZJTkUoVVNFX1MzOTBYX0NSQzMyQywgMSwgW0RlZmluZSB0byAxIHRv IHVzZSBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZvciBDUkMuXSkKKyAgICAgICAgICAgIFBH X0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfczM5MHgubyBwZ19jcmMzMmNfc2I4Lm8iCisgICAgICAg ICAgICBBQ19NU0dfUkVTVUxUKFMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMgZm9yIENSQykKKyAg ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0IHgiJFVTRV9TMzkwWF9DUkMzMkNfV0lU SF9SVU5USU1FX0NIRUNLIiA9IHgiMSI7IHRoZW4KKyAgICAgICAgICAgICAgQUNfREVGSU5FKFVT RV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLLCAxLCBbRGVmaW5lIHRvIDEgdG8gdXNl IFMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMgd2l0aCBydW50aW1lIGNoZWNrIGZvciBDUkMuXSkK KyAgICAgICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19zMzkweC5vIHBnX2NyYzMy Y19zYjgubyIKKyAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChTMzkwWCBWZWN0b3IgaW5zdHJ1 Y3Rpb25zIGZvciBDUkMgd2l0aCBydW50aW1lIGNoZWNrKQorICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICBBQ19ERUZJTkUoVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMsIDEsIFtEZWZpbmUg dG8gMSB0byB1c2Ugc29mdHdhcmUgQ1JDLTMyQyBpbXBsZW1lbnRhdGlvbiAoc2xpY2luZy1ieS04 KS5dKQorICAgICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgorICAg ICAgICAgICAgICBBQ19NU0dfUkVTVUxUKHNsaWNpbmctYnktOCkKKyAgICAgICAgICAgIGZpCisg ICAgICAgICAgZmkKICAgICAgICAgZmkKICAgICAgIGZpCiAgICAgZmkKZGlmZiAtLWdpdCBhL21l c29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggZDE0MmUzZTQwOGIuLmVkZDAxZjUxYTQ3IDEw MDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMjU0Nyw2ICsyNTQ3 LDQwIEBAIGludCBtYWluKHZvaWQpCiAgICAgaGF2ZV9vcHRpbWl6ZWRfY3JjID0gdHJ1ZQogICBl bmRpZgogCitlbGlmIGhvc3RfY3B1ID09ICdzMzkweCcgYW5kIGNjLmhhc19mdW5jdGlvbignZ2V0 YXV4dmFsJykKKyAgaWYgY2MuZ2V0X2lkKCkgPT0gJ2NsYW5nJworICAgIFZHRk1BRkxBRz0nLWZ6 dmVjdG9yJworICBlbHNlCisgICAgVkdGTUFGTEFHPSctbXphcmNoJworICBlbmRpZgorCisgICMg Y29tcGlsYXRpb24gbWF5IGZhaWwgd2l0aCBHQ0MgMTQuMC4wIDw9IGdjY192ZXJzaW9uIDwgMTQu My4wIGFuZCBDbGFuZyAxOC4wLjAgPD0gY2xhbmdfdmVyc2lvbiA8IDE5LjEuMgorICBwcm9nID0g JycnCisjaW5jbHVkZSA8dmVjaW50cmluLmg+Cit1bnNpZ25lZCBsb25nIGxvbmcgYSBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OwordW5zaWduZWQgbG9uZyBsb25nIGIg X19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKK3Vuc2lnbmVkIGNoYXIg YyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworCitpbnQgbWFpbih2 b2lkKSB7CisgICAgLy8gdGVzdCBmb3IgdmVjdG9yIGV4dGVuc2lvbgorICAgIC8vIHdlIGNhbiBz YWZlbHkgYXNzdW1lIHRoYXQgaWYgd2UgaGF2ZSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOAorICAgIC8v IHdlIHdpbGwgaGF2ZSBhbGwgbmVlZGVkIGJ1aWx0aW5zCisgICAgYyA9IHZlY19nZm1zdW1fYWNj dW1fMTI4KGEsIGIsIGMpOworICAgIHJldHVybiBjWzBdOworfScnJworICBpZiBjYy5saW5rcyhw cm9nLCBuYW1lOiAnczM5MHhfdmVjdG9yX3Z4JywgYXJnczogdGVzdF9jX2FyZ3MgKyBbVkdGTUFG TEFHXSkKKyAgICAjIFVzZSBTMzkwWCBDUkMgRXh0ZW5zaW9uIHVuY29uZGl0aW9uYWxseQorICAg IGNkYXRhLnNldCgnVVNFX1MzOTBYX0NSQzMyQycsMSkKKyAgICBjZmxhZ3NfY3JjICs9IFZHRk1B RkxBRworICAgIGhhdmVfb3B0aW1pemVkX2NyYyA9IHRydWUKKyAgZWxpZiBjYy5saW5rcyhwcm9n LCBuYW1lOiAnczM5MHhfdmVjdG9yX3Z4K21hcmNoPXoxMycsIGFyZ3M6IHRlc3RfY19hcmdzICsg W1ZHRk1BRkxBRywgJy1tYXJjaD16MTMnXSkKKyAgICAjIFVzZSBTMzkwWCBDUkMgRXh0ZW5zaW9u LCB3aXRoIHJ1bnRpbWUgY2hlY2sKKyAgICBjZGF0YS5zZXQoJ1VTRV9TMzkwWF9DUkMzMkMnLGZh bHNlKQorICAgIGNkYXRhLnNldCgnVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sn LDEpCisgICAgY2ZsYWdzX2NyYyArPSBWR0ZNQUZMQUcKKyAgICBjZmxhZ3NfY3JjICs9ICctbWFy Y2g9ejEzJworICAgIGhhdmVfb3B0aW1pemVkX2NyYyA9IHRydWUKKyAgZW5kaWYKIGVuZGlmCiAK IGlmIG5vdCBoYXZlX29wdGltaXplZF9jcmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2Nv bmZpZy5oLmluIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggNzI2YTdjMWJlMWYu LmE5ODNmNmQ2NGQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysg Yi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtNjY2LDYgKzY2NiwxMiBAQAogLyogRGVm aW5lIHRvIDEgdG8gdXNlIEFSTXY4IENSQyBFeHRlbnNpb24gd2l0aCBhIHJ1bnRpbWUgY2hlY2su ICovCiAjdW5kZWYgVVNFX0FSTVY4X0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sKIAorLyogRGVm aW5lIHRvIDEgdG8gdXNlIFMzOTBYIENSQyBFeHRlbnNpb24uICovCisjdW5kZWYgVVNFX1MzOTBY X0NSQzMyQworCisvKiBEZWZpbmUgdG8gMSB0byB1c2UgQVJNdjggQ1JDIEV4dGVuc2lvbiB3aXRo IGEgcnVudGltZSBjaGVjay4gKi8KKyN1bmRlZiBVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElN RV9DSEVDSworCiAvKiBEZWZpbmUgdG8gMSB0byBidWlsZCB3aXRoIGFzc2VydGlvbiBjaGVja3Mu ICgtLWVuYWJsZS1jYXNzZXJ0KSAqLwogI3VuZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaCBiL3NyYy9pbmNsdWRlL3BvcnQv cGdfY3JjMzJjLmgKaW5kZXggODIzMTNiYjdmY2YuLjQ2NWRlM2VkZTEzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb3J0L3BnX2NyYzMyYy5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3Jj MzJjLmgKQEAgLTE0Miw2ICsxNDIsMzEgQEAgZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMy Y19zYjgocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKIGV4dGVy biBwZ19jcmMzMmMgKCpwZ19jb21wX2NyYzMyYykgKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQg KmRhdGEsIHNpemVfdCBsZW4pOwogZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19hcm12 OChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKIAorI2VsaWYg ZGVmaW5lZChVU0VfUzM5MFhfQ1JDMzJDKQorCisvKgorICogVXNlIFMzOTBYIHZlY3RvciBpbnN0 cnVjdGlvbnMgb25seSBmb3IgYnVmZmVycyBsb25nZXIgdGhlbiAzMiBieXRlCisgKi8KKyNkZWZp bmUgQ09NUF9DUkMzMkMoY3JjLCBkYXRhLCBsZW4pCQkJCQkJCVwKKwkoKGNyYykgPSAobGVuKSA8 IDMyID8gcGdfY29tcF9jcmMzMmNfc2I4KChjcmMpLChkYXRhKSwobGVuKSkgOiBwZ19jb21wX2Ny YzMyY19zMzkweCgoY3JjKSwgKGRhdGEpLCAobGVuKSkpCisjZGVmaW5lIEZJTl9DUkMzMkMoY3Jj KSAoKGNyYykgPSBwZ19ic3dhcDMyKGNyYykgXiAweEZGRkZGRkZGKQorCitleHRlcm4gcGdfY3Jj MzJjIHBnX2NvbXBfY3JjMzJjX3NiOChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBz aXplX3QgbGVuKTsKK2V4dGVybiBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfczM5MHgocGdfY3Jj MzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CisKKyNlbGlmIGRlZmluZWQo VVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0spCisvKgorICogVXNlIFMzOTBYIHZl Y3RvciBpbnN0cnVjdGlvbnMgb25seSBmb3IgYnVmZmVycyBsb25nZXIgdGhlbiAzMiBieXRlLgor ICogRm9yIHJ1bnRpbWUgY2hlY2sgdXNlIHBnX2NvbXBfY3JjMzJjIGluc3RlYWQgb2YgcGdfY29t cF9jcmMzMmNfczM5MHgKKyAqLworI2RlZmluZSBDT01QX0NSQzMyQyhjcmMsIGRhdGEsIGxlbikJ CQkJCQkJXAorCSgoY3JjKSA9IChsZW4pIDwgMzIgPyBwZ19jb21wX2NyYzMyY19zYjgoKGNyYyks KGRhdGEpLChsZW4pKSA6IHBnX2NvbXBfY3JjMzJjKChjcmMpLCAoZGF0YSksIChsZW4pKSkKKyNk ZWZpbmUgRklOX0NSQzMyQyhjcmMpICgoY3JjKSA9IHBnX2Jzd2FwMzIoY3JjKSBeIDB4RkZGRkZG RkYpCisKK2V4dGVybiBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfc2I4KHBnX2NyYzMyYyBjcmMs IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOworZXh0ZXJuIHBnX2NyYzMyYyAoKnBnX2Nv bXBfY3JjMzJjKSAocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7 CitleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3MzOTB4KHBnX2NyYzMyYyBjcmMsIGNv bnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOworCiAjZWxzZQogLyoKICAqIFVzZSBzbGljaW5n LWJ5LTggYWxnb3JpdGhtLgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvTWFrZWZpbGUgYi9zcmMvcG9y dC9NYWtlZmlsZQppbmRleCA0Mjc0OTQ5ZGZhNC4uZmMyYzI5MDdiMzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9wb3J0L01ha2VmaWxlCisrKyBiL3NyYy9wb3J0L01ha2VmaWxlCkBAIC04NSwxMCArODUsMTMg QEAgbGlicGdwb3J0LmE6ICQoT0JKUykKIAlybSAtZiAkQAogCSQoQVIpICQoQVJPUFQpICRAICRe CiAKLSMgYWxsIHZlcnNpb25zIG9mIHBnX2NyYzMyY19hcm12OC5vIG5lZWQgQ0ZMQUdTX0NSQwor IyBhbGwgdmVyc2lvbnMgb2YgcGdfY3JjMzJjX2FybXY4Lm8gYW5kIHBnX2NyYzMyY19zMzkweC5v IG5lZWQgQ0ZMQUdTX0NSQwogcGdfY3JjMzJjX2FybXY4Lm86IENGTEFHUys9JChDRkxBR1NfQ1JD KQogcGdfY3JjMzJjX2FybXY4X3NobGliLm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQogcGdfY3Jj MzJjX2FybXY4X3Nydi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKK3BnX2NyYzMyY19zMzkweC5v OiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKK3BnX2NyYzMyY19zMzkweF9zaGxpYi5vOiBDRkxBR1Mr PSQoQ0ZMQUdTX0NSQykKK3BnX2NyYzMyY19zMzkweF9zcnYubzogQ0ZMQUdTKz0kKENGTEFHU19D UkMpCiAKICMKICMgU2hhcmVkIGxpYnJhcnkgdmVyc2lvbnMgb2Ygb2JqZWN0IGZpbGVzCmRpZmYg LS1naXQgYS9zcmMvcG9ydC9tZXNvbi5idWlsZCBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCmluZGV4 IGZjN2IwNTlmZWU1Li5mODRjYWFmZjllMiAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVzb24uYnVp bGQKKysrIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQKQEAgLTEwMCw2ICsxMDAsMTIgQEAgcmVwbGFj ZV9mdW5jc19wb3MgPSBbCiAgICMgbG9vbmdhcmNoCiAgIFsncGdfY3JjMzJjX2xvb25nYXJjaCcs ICdVU0VfTE9PTkdBUkNIX0NSQzMyQyddLAogCisgICMgczM5MHgKKyAgWydwZ19jcmMzMmNfczM5 MHgnLCAnVVNFX1MzOTBYX0NSQzMyQycsJ2NyYyddLAorICBbJ3BnX2NyYzMyY19zMzkweCcsICdV U0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSycsICdjcmMnXSwKKyAgWydwZ19jcmMz MmNfc2I4JywgJ1VTRV9TMzkwWF9DUkMzMkMnXSwKKyAgWydwZ19jcmMzMmNfc2I4JywgJ1VTRV9T MzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCisKICAgIyBnZW5lcmljIGZhbGxiYWNr CiAgIFsncGdfY3JjMzJjX3NiOCcsICdVU0VfU0xJQ0lOR19CWV84X0NSQzMyQyddLAogXQpkaWZm IC0tZ2l0IGEvc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMgYi9zcmMvcG9ydC9wZ19jcmMzMmNf czM5MHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDNmZjNlN2Zi Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcG9ydC9wZ19jcmMzMmNfczM5MHguYwpAQCAtMCww ICsxLDI5NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfY3JjMzJjX3MzOTB4LmMK KyAqCSAgSGFyZHdhcmUtYWNjZWxlcmF0ZWQgQ1JDLTMyQyB2YXJpYW50cyBmb3IgTGludXggb24g SUJNIFogJiBMaW51eE9ORQorICoKKyAqIFRoaXMgY29kZSB3YXMgb3JpZ2luYWxseSB3cml0dGVu IGJ5IEhlbmRyaWsgQnJ1ZWNrbmVyCisgKiA8YnJ1ZWNrbmVyQGxpbnV4LmlibS5jb20+IGZvciB1 c2UgaW4gdGhlIExpbnV4IGtlcm5lbCBhbmQgaGFzIGJlZW4KKyAqIHJlbGljZW5zZWQgdW5kZXIg dGhlIHBvc3RncmVzcWwtbGljZW5zZS4KKyAqCisgKiBVc2UgdGhlIHovQXJjaGl0ZWN0dXJlIFZl Y3RvciBFeHRlbnNpb24gRmFjaWxpdHkgdG8gYWNjZWxlcmF0ZSB0aGUKKyAqIGNvbXB1dGluZyBv ZiBiaXRyZWZsZWN0ZWQgQ1JDLTMyQyBjaGVja3N1bXMuCisgKgorICogVGhpcyBDUkMtMzJDIGlt cGxlbWVudGF0aW9uIGFsZ29yaXRobSBpcyBiaXRyZWZsZWN0ZWQgYW5kIHByb2Nlc3NlcworICog dGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCBmaXJzdCAoTGl0dGxlLUVuZGlhbikuCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgImMuaCIKKyNpbmNsdWRlIDx2ZWNpbnRyaW4u aD4KKyNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgorCisjZGVmaW5lIFZYX0FMSUdOTUVOVCAx NkwKKyNkZWZpbmUgVlhfQUxJR05fTUFTSyAoVlhfQUxJR05NRU5UIC0gMSkKKwordHlwZWRlZiB1 bnNpZ25lZCBjaGFyIHV2MTZxaSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKTsKK3R5 cGVkZWYgdW5zaWduZWQgaW50IHV2NHNpIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkp OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdXYyZGkgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSk7CisKKyNpZmRlZiBVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVD SworI2lmZGVmIEhBVkVfR0VUQVVYVkFMCisjaW5jbHVkZSA8c3lzL2F1eHYuaD4KKyNlbmRpZgor CitzdGF0aWMgaW5saW5lIGJvb2wKK3BnX3MzOTB4X3Z4X2F2YWlsYWJsZSh2b2lkKQoreworI2lm ZGVmIEhBVkVfR0VUQVVYVkFMCisJcmV0dXJuIChnZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBf UzM5MF9WWCk7CisjZWxzZQorCXJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCisvKgorICogVGhp cyBnZXRzIGNhbGxlZCBvbiB0aGUgZmlyc3QgY2FsbC4gSXQgcmVwbGFjZXMgdGhlIGZ1bmN0aW9u IHBvaW50ZXIKKyAqIHNvIHRoYXQgc3Vic2VxdWVudCBjYWxscyBhcmUgcm91dGVkIGRpcmVjdGx5 IHRvIHRoZSBjaG9zZW4gaW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgcGdfY3Jj MzJjCitwZ19jb21wX2NyYzMyY19jaG9vc2UocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0 YSwgc2l6ZV90IGxlbikKK3sKKwlpZiAocGdfczM5MHhfdnhfYXZhaWxhYmxlKCkpCisJeworCQlw Z19jb21wX2NyYzMyYyA9IHBnX2NvbXBfY3JjMzJjX3MzOTB4OworCX0KKwllbHNlCisJeworCQlw Z19jb21wX2NyYzMyYyA9IHBnX2NvbXBfY3JjMzJjX3NiODsKKwl9CisKKwlyZXR1cm4gcGdfY29t cF9jcmMzMmMoY3JjLCBkYXRhLCBsZW4pOworfQorCitwZ19jcmMzMmMJKCpwZ19jb21wX2NyYzMy YykgKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pID0gcGdfY29t cF9jcmMzMmNfY2hvb3NlOworI2VuZGlmCisKK3N0YXRpYyB1aW50MzJfdAorY3JjMzJfbGVfdmdm bV8xNih1aW50MzJfdCBjcmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikK K3sKKwkvKi0tLS0tLS0tLS0KKwkgKiBUaGUgQ1JDLTMyQyBjb25zdGFudCBibG9jayBjb250YWlu cyByZWR1Y3Rpb24gY29uc3RhbnRzIHRvIGZvbGQgYW5kCisJICogcHJvY2VzcyBwYXJ0aWN1bGFy IGNodW5rcyBvZiB0aGUgaW5wdXQgZGF0YSBzdHJlYW0gaW4gcGFyYWxsZWwuCisJICoKKwkgKiBG b3IgdGhlIENSQy0zMkMgdmFyaWFudHMsIHRoZSBjb25zdGFudHMgYXJlIHByZWNvbXB1dGVkIGFj Y29yZGluZyB0bworCSAqIHRoZXNlIGRlZmluaXRpb25zOgorCSAqCisJICogICAgICBSMSA9IFso eDQqMTI4KzMyIG1vZCBQJyh4KSA8PCAzMildJyA8PCAxCisJICogICAgICBSMiA9IFsoeDQqMTI4 LTMyIG1vZCBQJyh4KSA8PCAzMildJyA8PCAxCisJICogICAgICBSMyA9IFsoeDEyOCszMiBtb2Qg UCcoeCkgPDwgMzIpXScgICA8PCAxCisJICogICAgICBSNCA9IFsoeDEyOC0zMiBtb2QgUCcoeCkg PDwgMzIpXScgICA8PCAxCisJICogICAgICBSNSA9IFsoeDY0IG1vZCBQJyh4KSA8PCAzMildJyAg ICAgICA8PCAxCisJICogICAgICBSNiA9IFsoeDMyIG1vZCBQJyh4KSA8PCAzMildJyAgICAgICA8 PCAxCisJICoKKwkgKiAgICAgIFRoZSBiaXRyZWZsZWN0ZWQgQmFycmV0IHJlZHVjdGlvbiBjb25z dGFudCwgdScsIGlzIGRlZmluZWQgYXMKKwkgKiAgICAgIHRoZSBiaXQgcmV2ZXJzYWwgb2YgZmxv b3IoeCoqNjQgLyBQKHgpKS4KKwkgKgorCSAqICAgICAgd2hlcmUgUCh4KSBpcyB0aGUgcG9seW5v bWlhbCBpbiB0aGUgbm9ybWFsIGRvbWFpbiBhbmQgdGhlIFAnKHgpIGlzIHRoZQorCSAqICAgICAg cG9seW5vbWlhbCBpbiB0aGUgcmV2ZXJzZWQgKGJpdHJlZmxlY3RlZCkgZG9tYWluLgorCSAqCisJ ICogQ1JDLTMyQyAoQ2FzdGFnbm9saSkgcG9seW5vbWlhbHM6CisJICoKKwkgKiAgICAgIFAoeCkg ID0gMHgxRURDNkY0MQorCSAqICAgICAgUCcoeCkgPSAweDgyRjYzQjc4CisJICovCisJY29uc3QJ CXV2MTZxaSBwZXJtX2xlMmJlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYs IDUsIDQsIDMsIDIsIDEsIDB9OyAvKiBCRS0+TEUgbWFzayAqLworCWNvbnN0CQl1djJkaSByMnIx ID0gezB4MDllNGFkZGY4LCAweDc0MGVlZjAyfTsgLyogUjIsIFIxICovCisJY29uc3QJCXV2MmRp IHI0cjMgPSB7MHgxNGNkMDBiZDYsIDB4ZjIwYzBkZmV9OyAvKiBSNCwgUjMgKi8KKwljb25zdAkJ dXYyZGkgcjUgPSB7MCwgMHgwZGQ0NWFhYjh9OwkvKiBSNSAqLworCWNvbnN0CQl1djJkaSBydV9w b2x5ID0gezAsIDB4MGRlYTcxM2YxfTsJLyogdScgKi8KKwljb25zdAkJdXYyZGkgY3JjX3BvbHkg PSB7MCwgMHgxMDVlYzc2ZjB9OwkvKiBQJyh4KSA8PCAxICovCisJdXYyZGkJCXYwID0gezAsIDB9 OworCXV2MmRpCQl2MSA9IHswLCAwfTsKKwl1djJkaQkJdjIgPSB7MCwgMH07CisJdXYyZGkJCXYz ID0gezAsIDB9OworCXV2MmRpCQl2NCA9IHswLCAwfTsKKwl1djE2cWkJCXY5ID0gezAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9OworCisJLyoKKwkgKiBMb2Fk IHRoZSBpbml0aWFsIENSQyB2YWx1ZS4KKwkgKgorCSAqIFRoZSBDUkMgdmFsdWUgaXMgbG9hZGVk IGludG8gdGhlIHJpZ2h0bW9zdCB3b3JkIG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIKKwkgKiBhbmQg aXMgbGF0ZXIgWE9SZWQgd2l0aCB0aGUgTFNCIHBvcnRpb24gb2YgdGhlIGxvYWRlZCBpbnB1dCBk YXRhLgorCSAqLworCXYwID0gKHV2MmRpKSB2ZWNfaW5zZXJ0KGNyYywgKHV2NHNpKSB2MCwgMyk7 CisKKwlpZiAobGVuID49IDY0KQorCXsKKwkJLyogTG9hZCBhIDY0LWJ5dGUgZGF0YSBjaHVuayBh bmQgWE9SIHdpdGggQ1JDICovCisJCXYxID0gdmVjX3Blcm0oKCh1djJkaSAqKSBidWYpWzBdLCAo KHV2MmRpICopIGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQl2MiA9IHZlY19wZXJtKCgodXYyZGkg KikgYnVmKVsxXSwgKCh1djJkaSAqKSBidWYpWzFdLCBwZXJtX2xlMmJlKTsKKwkJdjMgPSB2ZWNf cGVybSgoKHV2MmRpICopIGJ1ZilbMl0sICgodXYyZGkgKikgYnVmKVsyXSwgcGVybV9sZTJiZSk7 CisJCXY0ID0gdmVjX3Blcm0oKCh1djJkaSAqKSBidWYpWzNdLCAoKHV2MmRpICopIGJ1ZilbM10s IHBlcm1fbGUyYmUpOworCisJCXYxIF49IHYwOworCQlidWYgKz0gNjQ7CisJCWxlbiAtPSA2NDsK KworCQl3aGlsZSAobGVuID49IDY0KQorCQl7CisJCQkvKiBMb2FkIHRoZSBuZXh0IDY0LWJ5dGUg ZGF0YSBjaHVuayAqLworCQkJdXYxNnFpCQlwYXJ0MSA9IHZlY19wZXJtKCgodXYxNnFpICopIGJ1 ZilbMF0sICgodXYxNnFpICopIGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQkJdXYxNnFpCQlwYXJ0 MiA9IHZlY19wZXJtKCgodXYxNnFpICopIGJ1ZilbMV0sICgodXYxNnFpICopIGJ1ZilbMV0sIHBl cm1fbGUyYmUpOworCQkJdXYxNnFpCQlwYXJ0MyA9IHZlY19wZXJtKCgodXYxNnFpICopIGJ1Zilb Ml0sICgodXYxNnFpICopIGJ1ZilbMl0sIHBlcm1fbGUyYmUpOworCQkJdXYxNnFpCQlwYXJ0NCA9 IHZlY19wZXJtKCgodXYxNnFpICopIGJ1ZilbM10sICgodXYxNnFpICopIGJ1ZilbM10sIHBlcm1f bGUyYmUpOworCisJCQkvKgorCQkJICogUGVyZm9ybSBhIEdGKDIpIG11bHRpcGxpY2F0aW9uIG9m IHRoZSBkb3VibGV3b3JkcyBpbiBWMSB3aXRoCisJCQkgKiB0aGUgUjEgYW5kIFIyIHJlZHVjdGlv biBjb25zdGFudHMgaW4gVjAuICBUaGUgaW50ZXJtZWRpYXRlCisJCQkgKiByZXN1bHQgaXMgdGhl biBmb2xkZWQgKGFjY3VtdWxhdGVkKSB3aXRoIHRoZSBuZXh0IGRhdGEgY2h1bmsgaW4KKwkJCSAq IFBBUlQxIGFuZCBzdG9yZWQgaW4gVjEuIFJlcGVhdCB0aGlzIHN0ZXAgZm9yIHRoZSByZWdpc3Rl cgorCQkJICogY29udGVudHMgaW4gVjIsIFYzLCBhbmQgVjQgcmVzcGVjdGl2ZWx5LgorCQkJICov CisJCQl2MSA9ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjEsIHBhcnQxKTsK KwkJCXYyID0gKHV2MmRpKSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChyMnIxLCB2MiwgcGFydDIpOwor CQkJdjMgPSAodXYyZGkpIHZlY19nZm1zdW1fYWNjdW1fMTI4KHIycjEsIHYzLCBwYXJ0Myk7CisJ CQl2NCA9ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjQsIHBhcnQ0KTsKKwor CQkJYnVmICs9IDY0OworCQkJbGVuIC09IDY0OworCQl9CisKKwkJLyoKKwkJICogRm9sZCBWMSB0 byBWNCBpbnRvIGEgc2luZ2xlIDEyOC1iaXQgdmFsdWUgaW4gVjEuICBNdWx0aXBseSBWMSB3aXRo CisJCSAqIFIzIGFuZCBSNCBhbmQgYWNjdW11bGF0aW5nIHRoZSBuZXh0IDEyOC1iaXQgY2h1bmsg dW50aWwgYSBzaW5nbGUKKwkJICogMTI4LWJpdCB2YWx1ZSByZW1haW5zLgorCQkgKi8KKwkJdjEg PSAodXYyZGkpIHZlY19nZm1zdW1fYWNjdW1fMTI4KHI0cjMsIHYxLCAodXYxNnFpKSB2Mik7CisJ CXYxID0gKHV2MmRpKSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChyNHIzLCB2MSwgKHV2MTZxaSkgdjMp OworCQl2MSA9ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjRyMywgdjEsICh1djE2cWkp IHY0KTsKKwl9CisJZWxzZQorCXsKKworCQkvKgorCQkgKiBMb2FkIGEgMTYtYnl0ZSBkYXRhIGNo dW5rIGFuZCBYT1Igd2l0aCBDUkMKKwkJICovCisJCXYxID0gdmVjX3Blcm0oKCh1djJkaSAqKSBi dWYpWzBdLCAoKHV2MmRpICopIGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQl2MSBePSB2MDsKKwkJ YnVmICs9IDE2OworCQlsZW4gLT0gMTY7CisJfQorCisJd2hpbGUgKGxlbiA+PSAxNikKKwl7CisJ CS8qIExvYWQgbmV4dCBkYXRhIGNodW5rICovCisJCXYyID0gdmVjX3Blcm0oKih1djJkaSAqKSBi dWYsICoodXYyZGkgKikgYnVmLCBwZXJtX2xlMmJlKTsKKworCQkvKiBGb2xkIG5leHQgZGF0YSBj aHVuayAqLworCQl2MSA9ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjRyMywgdjEsICh1 djE2cWkpIHYyKTsKKworCQlidWYgKz0gMTY7CisJCWxlbiAtPSAxNjsKKwl9CisKKwkvKgorCSAq IFNldCB1cCBhIHZlY3RvciByZWdpc3RlciBmb3IgYnl0ZSBzaGlmdHMuICBUaGUgc2hpZnQgdmFs dWUgbXVzdCBiZQorCSAqIGxvYWRlZCBpbiBiaXRzIDEtNCBpbiBieXRlIGVsZW1lbnQgNyBvZiBh IHZlY3RvciByZWdpc3Rlci4gU2hpZnQgYnkgOAorCSAqIGJ5dGVzOiAweDQwIFNoaWZ0IGJ5IDQg Ynl0ZXM6IDB4MjAKKwkgKi8KKworCXY5ID0gdmVjX2luc2VydCgodW5zaWduZWQgY2hhcikgMHg0 MCwgdjksIDcpOworCisJLyoKKwkgKiBQcmVwYXJlIFYwIGZvciB0aGUgbmV4dCBHRigyKSBtdWx0 aXBsaWNhdGlvbjogc2hpZnQgVjAgYnkgOCBieXRlcyB0bworCSAqIG1vdmUgUjQgaW50byB0aGUg cmlnaHRtb3N0IGRvdWJsZXdvcmQgYW5kIHNldCB0aGUgbGVmdG1vc3QgZG91Ymxld29yZAorCSAq IHRvIDB4MS4KKwkgKi8KKwl2MCA9IHZlY19zcmIocjRyMywgKHV2MmRpKSB2OSk7CisJdjBbMF0g PSAxOworCisJLyoKKwkgKiBDb21wdXRlIEdGKDIpIHByb2R1Y3Qgb2YgVjEgYW5kIFYwLiAgVGhl IHJpZ2h0bW9zdCBkb3VibGV3b3JkIG9mIFYxIGlzCisJICogbXVsdGlwbGllZCB3aXRoIFI0LiAg VGhlIGxlZnRtb3N0IGRvdWJsZXdvcmQgb2YgVjEgaXMgbXVsdGlwbGllZCBieSAweDEKKwkgKiBh bmQgaXMgdGhlbiBYT1JlZCB3aXRoIHJpZ2h0bW9zdCBwcm9kdWN0LiBJbXBsaWNpdGx5LCB0aGUg aW50ZXJtZWRpYXRlCisJICogbGVmdG1vc3QgcHJvZHVjdCBiZWNvbWVzIHBhZGRlZAorCSAqLwor CXYxID0gKHV2MmRpKSB2ZWNfZ2Ztc3VtXzEyOCh2MCwgdjEpOworCisJLyoKKwkgKiBOb3cgZG8g dGhlIGZpbmFsIDMyLWJpdCBmb2xkIGJ5IG11bHRpcGx5aW5nIHRoZSByaWdodG1vc3Qgd29yZCBp biBWMQorCSAqIHdpdGggUjUgYW5kIFhPUiB0aGUgcmVzdWx0IHdpdGggdGhlIHJlbWFpbmluZyBi aXRzIGluIFYxLgorCSAqCisJICogVG8gYWNoaWV2ZSB0aGlzIGJ5IGEgc2luZ2xlIFZHRk1BRywg cmlnaHQgc2hpZnQgVjEgYnkgYSB3b3JkIGFuZCBzdG9yZQorCSAqIHRoZSByZXN1bHQgaW4gVjIg d2hpY2ggaXMgdGhlbiBhY2N1bXVsYXRlZC4gIFVzZSB0aGUgdmVjdG9yIHVucGFjaworCSAqIGlu c3RydWN0aW9uIHRvIGxvYWQgdGhlIHJpZ2h0bW9zdCBoYWxmIG9mIHRoZSBkb3VibGV3b3JkIGlu dG8gdGhlCisJICogcmlnaHRtb3N0IGRvdWJsZXdvcmQgZWxlbWVudCBvZiBWMTsgdGhlIG90aGVy IGhhbGYgaXMgbG9hZGVkIGluIHRoZQorCSAqIGxlZnRtb3N0IGRvdWJsZXdvcmQuIFRoZSB2ZWN0 b3IgcmVnaXN0ZXIgd2l0aCBDT05TVF9SNSBjb250YWlucyB0aGUgUjUKKwkgKiBjb25zdGFudCBp biB0aGUgcmlnaHRtb3N0IGRvdWJsZXdvcmQgYW5kIHRoZSBsZWZ0bW9zdCBkb3VibGV3b3JkIGlz CisJICogemVybyB0byBpZ25vcmUgdGhlIGxlZnRtb3N0IHByb2R1Y3Qgb2YgVjEuCisJICovCisJ djkgPSB2ZWNfaW5zZXJ0KCh1bnNpZ25lZCBjaGFyKSAweDIwLCB2OSwgNyk7CisJdjIgPSB2ZWNf c3JiKHYxLCAodXYyZGkpIHY5KTsKKwl2MSA9IHZlY191bnBhY2tsKCh1djRzaSkgdjEpOwkvKiBT cGxpdCByaWdodG1vc3QgZG91Ymxld29yZCAqLworCXYxID0gKHV2MmRpKSB2ZWNfZ2Ztc3VtX2Fj Y3VtXzEyOChyNSwgdjEsICh1djE2cWkpIHYyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEFwcGx5 IGEgQmFycmV0IHJlZHVjdGlvbiB0byBjb21wdXRlIHRoZSBmaW5hbCAzMi1iaXQgQ1JDIHZhbHVl LgorCSAqCisJICogVGhlIGlucHV0IHZhbHVlcyB0byB0aGUgQmFycmV0IHJlZHVjdGlvbiBhcmUg dGhlIGRlZ3JlZS02MyBwb2x5bm9taWFsCisJICogaW4gVjEgKFIoeCkpLCBkZWdyZWUtMzIgZ2Vu ZXJhdG9yIHBvbHlub21pYWwsIGFuZCB0aGUgcmVkdWN0aW9uCisJICogY29uc3RhbnQgdS4gIFRo ZSBCYXJyZXQgcmVkdWN0aW9uIHJlc3VsdCBpcyB0aGUgQ1JDIHZhbHVlIG9mIFIoeCkgbW9kCisJ ICogUCh4KS4KKwkgKgorCSAqIFRoZSBCYXJyZXQgcmVkdWN0aW9uIGFsZ29yaXRobSBpcyBkZWZp bmVkIGFzOgorCSAqCisJICogICAgMS4gVDEoeCkgPSBmbG9vciggUih4KSAvIHheMzIgKSBHRjJN VUwgdQorCSAqICAgIDIuIFQyKHgpID0gZmxvb3IoIFQxKHgpIC8geF4zMiApIEdGMk1VTCBQKHgp CisJICogICAgMy4gQyh4KSAgPSBSKHgpIFhPUiBUMih4KSBtb2QgeF4zMgorCSAqCisJICogIE5v dGU6IFRoZSBsZWZ0bW9zdCBkb3VibGV3b3JkIG9mIHZlY3RvciByZWdpc3RlciBjb250YWluaW5n CisJICogIENPTlNUX1JVX1BPTFkgaXMgemVybyBhbmQsIHRodXMsIHRoZSBpbnRlcm1lZGlhdGUg R0YoMikgcHJvZHVjdAorCSAqICBpcyB6ZXJvIGFuZCBkb2VzIG5vdCBjb250cmlidXRlIHRvIHRo ZSBmaW5hbCByZXN1bHQuCisJICovCisKKwkvKiBUMSh4KSA9IGZsb29yKCBSKHgpIC8geF4zMiAp IEdGMk1VTCB1ICovCisJdjIgPSB2ZWNfdW5wYWNrbCgodXY0c2kpIHYxKTsKKwl2MiA9ICh1djJk aSkgdmVjX2dmbXN1bV8xMjgocnVfcG9seSwgdjIpOworCisJLyoKKwkgKiBDb21wdXRlIHRoZSBH RigyKSBwcm9kdWN0IG9mIHRoZSBDUkMgcG9seW5vbWlhbCB3aXRoIFQxKHgpIGluIFYyIGFuZAor CSAqIFhPUiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCwgVDIoeCksIHdpdGggdGhlIHZhbHVlIGlu IFYxLiBUaGUgZmluYWwKKwkgKiByZXN1bHQgaXMgc3RvcmVkIGluIHdvcmQgZWxlbWVudCAyIG9m IFYyLgorCSAqLworCXYyID0gdmVjX3VucGFja2woKHV2NHNpKSB2Mik7CisJdjIgPSAodXYyZGkp IHZlY19nZm1zdW1fYWNjdW1fMTI4KGNyY19wb2x5LCB2MiwgKHV2MTZxaSkgdjEpOworCisJcmV0 dXJuICgodXY0c2kpIHYyKVsyXTsKK30KKworcGdfY3JjMzJjCitwZ19jb21wX2NyYzMyY19zMzkw eChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworCXVpbnRw dHJfdAlwcmVhbGlnbiwKKwkJCQlhbGlnbmVkLAorCQkJCXJlbWFpbmluZzsKKwljb25zdCB1bnNp Z25lZCBjaGFyICpidWYgPSBkYXRhOworCisJLyoKKwkgKiBQcmVwcm9jZXNzIGluaXRpYWwgYnl0 ZXMgd2l0aCBzYjggc28gdGhlIGh3IGNhbiBzdGFydCBhdCBhbiBhbGlnbmVkCisJICogYWRkcmVz cworCSAqLworCWlmICgodWludHB0cl90KSBidWYgJiBWWF9BTElHTl9NQVNLKQorCXsKKwkJcHJl YWxpZ24gPSBWWF9BTElHTk1FTlQgLSAoKHVpbnRwdHJfdCkgYnVmICYgVlhfQUxJR05fTUFTSyk7 CisJCWxlbiAtPSBwcmVhbGlnbjsKKwkJY3JjID0gcGdfY29tcF9jcmMzMmNfc2I4KGNyYywgYnVm LCBwcmVhbGlnbik7CisJCWJ1ZiArPSBwcmVhbGlnbjsKKwl9CisJYWxpZ25lZCA9IGxlbiAmIH5W WF9BTElHTl9NQVNLOworCXJlbWFpbmluZyA9IGxlbiAmIFZYX0FMSUdOX01BU0s7CisKKwkvKiBQ cm9jZXNzIG1ham9yIHBhcnQgb2YgdGhlIGRhdGEgd2l0aCBodyBhY2NlbGVyYXRpb24gKi8KKwlp ZiAoYWxpZ25lZCkKKwl7CisJCWNyYyA9IHBnX2Jzd2FwMzIoY3JjMzJfbGVfdmdmbV8xNihwZ19i c3dhcDMyKGNyYyksIGJ1ZiwgKHNpemVfdCkgYWxpZ25lZCkpOworCX0KKworCS8qIFByb2Nlc3Mg cmVtYWluaW5nIGJ5dGVzIHRoYXQgY291bGQgbm90IGJlIGhhbmRsZWQgYnkgaHcgKi8KKwlpZiAo cmVtYWluaW5nKQorCXsKKwkJY3JjID0gcGdfY29tcF9jcmMzMmNfc2I4KGNyYywgYnVmICsgYWxp Z25lZCwgcmVtYWluaW5nKTsKKwl9CisKKwlyZXR1cm4gY3JjOworfQotLSAKMi41MC4wCgo= --_002_cb872244efcf9a260ff67cd5ccfc2e23c132022dcamelibmcom_--