From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on20700.outbound.protection.outlook.com [IPv6:2a01:111:f403:2415::700]) by sourceware.org (Postfix) with ESMTPS id E0CF63887008 for ; Thu, 20 Jun 2024 05:47:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E0CF63887008 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E0CF63887008 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2415::700 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1718862428; cv=pass; b=NccADCaR2o7y5vDtMyzSoXBCUixjye3ucFl4YoWNTPKPcj8YrmzpciwJtQVmM2GC2XkQUi22maYVaisS8g27vdK2h3UIO5wHfrAZ1VSd9/l4jThIp7fz3ganP/uAo6Mrw936v5lgpJku214h+e/WWmuwUmWeke1ra3iDS1wXlps= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1718862428; c=relaxed/simple; bh=L03JRzZzZ5L3BALk/4hL2JuTr2+KdDLcBR8A8xQlX0o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rCqjzOcceOV3pf/gnm0x4hrGjUxSEy6zMqE76UjaoEJzX9RRI/Yd8OFUuLEbC8POrNwJFSgyeY6eb9j46pi7T3Xsqf9rA7EudVkK0zcxFB/7pjZTtP1s5IXZDtcmYWz/WA/fFJ/J/oP3IWf2iMMDIJl0+1BFn0F6LfY3D5R62sg= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cMTX9enHV9gozkQTEHvCBzOGaaQ7mQAsDAmGPeA4d8I8Lh+Ntn/FT80IZEQeOxtsGRjfvx8EtDYXEEbvg1sJUbFGecDi+o5SE8tgXlQhw+JRqCW1d18llPE2Kg7Hji3q0pYTgMflzCdWVh1YIlo1B14XpIyQMvoJddaDh8pNHw1dcBB0n4Azev08Q6mIR93Uzu3T8/kmq8w9Wsw3NvtD8BEHTrC6jaWrXy4EdVdzvpJqLplWReQk/GQpgOBhf8nIWwFxF1eK9KHZCE6iS4m5cSJWnbyp6/lDk8GQ4G1V57gfpF7FuvJAE/QAfVqV+F/Z7a/j+20DpM/V9ukeUYSSxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=L03JRzZzZ5L3BALk/4hL2JuTr2+KdDLcBR8A8xQlX0o=; b=NPAgRAjU/M3lOp6L8AVeA/X4wNhMr2Eoytuuhk+pJUNPw/HeCVd+ZMQXz1YRUVXW5YEIZf9qZ0tRfWxtXbshlH4knezAwtTyt59l/EfxYd4MuKAQWELNhdgwEVEkzkLQM/K2SAD04Pa7zw9GflGyDUsJbHutUgD8ikBSK1enR7d9l9f2MKVgOfU/uPz5oS/OeEZKyR9SKz8VgHjTNFjhABvrgnv+e0fHxmh+8SBWsG0RdoZxTJpazGybYdrBrwLmTjB1HP+Ts/w5vWw5kNNlrcbdsThc7QLqjS4+kh2Hwz03cT8v6Nt0d38iISWzthr4yUg7MpaoiH+0XuhFmB7XWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L03JRzZzZ5L3BALk/4hL2JuTr2+KdDLcBR8A8xQlX0o=; b=XNNGu/3lb93B4L8aDJkSo3ykAYWtWkvBgmyKZAN8ns8Md7jCrO/vCgDE/7Xqb+fWlRiXtQapJNU9HraF4+ze2z6o+H5WeiF/ExQR6NYbCIIaYu0mIUVk8xCeS95sq+IxXfhScb16Co/kylb3qkdKVIe3WqjNZctA67UtXldUvDI= Received: from LV2PR01MB7839.prod.exchangelabs.com (2603:10b6:408:14f::13) by BL1PR01MB7819.prod.exchangelabs.com (2603:10b6:208:39b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.31; Thu, 20 Jun 2024 05:47:01 +0000 Received: from LV2PR01MB7839.prod.exchangelabs.com ([fe80::2ac3:5a77:36fd:9c63]) by LV2PR01MB7839.prod.exchangelabs.com ([fe80::2ac3:5a77:36fd:9c63%4]) with mapi id 15.20.7698.017; Thu, 20 Jun 2024 05:47:01 +0000 From: Feng Xue OS To: Richard Biener CC: "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH 4/8] vect: Determine input vectype for multiple lane-reducing Thread-Topic: [PATCH 4/8] vect: Determine input vectype for multiple lane-reducing Thread-Index: AQHav75YqlRgryS1j066PGFahXVsRLHPEhCAgADs2Dw= Date: Thu, 20 Jun 2024 05:47:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=True;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2024-06-20T05:47:00.825Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LV2PR01MB7839:EE_|BL1PR01MB7819:EE_ x-ms-office365-filtering-correlation-id: 24f1a2f3-e804-4e99-958d-08dc90ec6825 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230037|376011|366013|1800799021|38070700015; x-microsoft-antispam-message-info: =?utf-8?B?K2N3bGNRS25wUll5Z1Q0NDNOOFNDc1VsNkd6cTFVMzIwbzRsV0g2ZzZUTXlz?= =?utf-8?B?N0xxcDRCS1Y4RlZwbHJKQkJlRHgxd0R5T0lrRjF2UEZYaFVvdTZzRGxEdEI3?= =?utf-8?B?U25Wc0xxOGRKZHo4STIydVFDSmg3UCtPUjBNTDN4eEFYOXljemplR0JLOGl2?= =?utf-8?B?cDVnY3lGeE4yYkNmNVowNmNwaFA4SGV3Q1B6aEJIV1FCbEEzaEZHcXo0Mmpj?= =?utf-8?B?QnN2eHNiUncrRHhhSlVDNzZBelhoU1QrUHF3eWF3OGhLRzdzOEY0ZzJCQUR0?= =?utf-8?B?dUhUdE5naXB1c3F5RmRCbDdWQ0pTcHpJblBmeXVmWXdLUnpmcXNRaDJ0UXdW?= =?utf-8?B?TCtNdG1zOEwvdGlDVmcxL1hBQkR0aFNsWXFOcGJ5NXFoS256SkFRWWRlQTA5?= =?utf-8?B?WWFxSXo0YWhVelB4R05PY2RzbkNiaDBlYUt1clBKcVBaNUxRdzRpMytwR1Rn?= =?utf-8?B?VmJZQnlHQWZsdGhOWDViUitUMEJmcXVzU0NTU1BkR3ZveXBsUUVRNzhTci9U?= =?utf-8?B?R1I2RUdrZXJLMTBjZVdJbU9MTHc1YU04NHR5L0U1TXAxZlFkQlI2VGRWelFP?= =?utf-8?B?dnNrVi8xOXd2dldvVWpmQS9ldC90VVN6TGZFSzMwMDF4eEVZY1ZyNmttbmNp?= =?utf-8?B?SEZuVi94S2NqY29YWGtNUDRZNWVaTEMyMjMvTzg1NWgzMk5pbFVWaC8rSnNN?= =?utf-8?B?VlFaNDB5Zi9PLzhJaDRwekwzQU9jQkxXOENEV3RhQnJJVG5VdkpKYzl2V0pC?= =?utf-8?B?ZWE2SXluejdSTTNwU09zVWdDN0wwRy95OUVSR0I2SE1MS3hIc0pTdlhDaWl2?= =?utf-8?B?ZkIwMlFySVdnZlhMYXRiemZZYVh6ZHRaclJ6c0tvWlI2eHlLY01CYUdhUmRi?= =?utf-8?B?bGN2ejUwZFoyeXhFT3dVblpucktTWFowK1lVdC9JdjZEdWZtVmZtTkFQL2E0?= =?utf-8?B?bkhaVVBvS2Q4VFBBczluREdkTXBWdWxCZ3BtRzArd1VnVTg2TkdTWTlEYitr?= =?utf-8?B?SmxwRnlnQ0dsU01FMUZqR2g4QmZWTDRBb0VJcVJiMkNnaUpmcnN1NEViSzB0?= =?utf-8?B?K3RjQmhXSWVFZnBQWkVCSXBRNkM5SUxJUkZLZmIrM2tmbzZMeVIvaGRyODVD?= =?utf-8?B?SFJRL1FZeVlUMHZxMVFPckJRODJoSjVJT1QzbFRHVGF3VjBiUFlYS29tQ3Yw?= =?utf-8?B?aW5lMFR6WUxzdmVpZDBNUVZWdFVkdS90UndiRXNuK0hpdXhNU1NpOFlKa2RV?= =?utf-8?B?MDByaUxtTzRSMjVzTlVsYW5hL2FWeFFPUkxaQ1crVXBWL01mWWJCR3dFTnl6?= =?utf-8?B?T0Zkam1TeGRMVXJtblRwYWQ2RDFtckxxaG9IS0oyVWdsOVNyc3pUdkxqYzIw?= =?utf-8?B?WnlHUEsyUmtqL1dBSk9zcDFvbVFlZ0UrNjZCV1lLTVlpWC9PTzR5MVNQV05s?= =?utf-8?B?ZlRMWUhQbDNOckZQRVJYclo5YlN0NjZ1TVJhbUdxNllPMWc3VCtmYVdxZFNT?= =?utf-8?B?cko4NHFNblkvMDY1RzZWZG9OVmFiVFpXRnZjMHBJWU9VWllSNklMeVk2eUFO?= =?utf-8?B?dks2MWEzN2ZhL1pxNzhpa1RpS2l4SjZPck9qaTBiM0ZDODZnbXRKNlFHUTR4?= =?utf-8?B?em4zWWE1d3pVS1BadkRDbUJ4aHBGSGxZWTZhUVE1cU5ocUExdm83S3RBZUJs?= =?utf-8?B?RlV6VzlPcjJCMGpQdDZZcXozQXRGUWFhaWphYWRNNTBPeUordlNrcWczbXVu?= =?utf-8?B?SXlRWmVxQ3dSMTJTN0o1ZkNFSmM0U29leXBYNlRMNW4yYkNoMlB4SUV3TVF1?= =?utf-8?Q?0nygiwTLoanJsz2haYCDYlCKV9hicpmGZKgYY=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV2PR01MB7839.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230037)(376011)(366013)(1800799021)(38070700015);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VzBzQ09lQ082aHRBNmJ4RlFKWjIyUE5LSzlhdllXWVd4TWhqSkZYb2JLZktu?= =?utf-8?B?SzZYRkdoY2JpNCtsOFArZFEvQ29mQlpVSUZzYjZPTExwYURPOEt5UndBMG5u?= =?utf-8?B?NXdNV0RRRTFidjBqWmVsSFpFRVU2QzQzNUE3blBzSVJ1Z1Z0MmxoNTBKOHY5?= =?utf-8?B?MFhiSnFZMHFGeW9xMlFQQzlhSlVvQWZROEhldDRIVmtQaEZrUW9jTjhvV3JB?= =?utf-8?B?N29mc2V4QlA0Tnh3Qyt2TnRlN2l0cjJLU1ZwWkV6ZkpWWjJTaCtpWi9JamtB?= =?utf-8?B?aWliSS9NYkdJZkVJS1VXZld5UGxMVWYrMGFRK0lpUDdTekZOWStGMFRKMVZW?= =?utf-8?B?ZVZSeTVnajF6NzlSNUJiK0NKc0Zoai9DK09ET2JHL1NqS1JvTEQ0cDlZbnFy?= =?utf-8?B?eGRGZm05STBJMElORld3a2xLQXFOR2RjVFJ1R0ZCbnRWeUFrcm1lSzZRczBt?= =?utf-8?B?V2J4RXN5SFhKVEExZkdkUVdNVmRtUjFWam1hd0tzTld0UWhpZzRUd2dxTHhl?= =?utf-8?B?OXdmTzhKbkVRbzZhWDR4UlkzRUhSeHlDOGZ0R3JvQTBPUFR1YWt0anhGalY3?= =?utf-8?B?SW9xdlYza0Q0SHVESXFYNTFBbERZdzNzaWVQTkZlK05vcGRlVzZWelpodlJv?= =?utf-8?B?Q1Z4WkN4dE9HbmlJK3NmanVOODNaYjVBSDA3WkIra2o1OHNKUTJ1eEFzOUhI?= =?utf-8?B?WnRwMitXdCtOZzNsOTlHUE1uNjNoQk9PZ3FPaDZNRnRTRlRzcnpLTzh3bUVn?= =?utf-8?B?ck5VUHg0THlKY2t0djFsNmh3Zzg0MGFxRld1UFpLUFRkczZ2R0pmSEJhdUJw?= =?utf-8?B?RG03S2lqNHR3aFhqSExNSEJ2L1RiL09GQlVKTW8yZ3cwT29lWmMySVEzL3V6?= =?utf-8?B?SmtMRnJSUkZwbzhiM0JRT3BYM1ZnOC82NGhYZjJhOUVQWTNDbDFCek9RT0Jj?= =?utf-8?B?NHYrVVBLVU5pTzQ1Yks3WWZMYmV1S1UzQkFVdGFqU1QyZGtZNXgwYkpNZ2lH?= =?utf-8?B?MXh6M3haeVE1NklBUGdiSENuTUErZDJuTWFQMklBNFZRU0tJSlVmdUR6Ry9q?= =?utf-8?B?OFhDQkRuWm1veHcwci9Cdm1vUm5XMjlUczNzQllEekhyeitNRk51dUlOS1hV?= =?utf-8?B?Ky9INHBlSFZKS1kzeUpDTEJ3bHF6UU5ZTWljdll2RTVLTEhrV0lkOHVudGlH?= =?utf-8?B?UmJZRWlNbnFoQlI2b1dnQzNVb0xCQzRKWnh4M2cwQ3VXQ0d6c3lvV3A5cUxT?= =?utf-8?B?cmRCaFpkY05Ga0FqaWlEWVRRdjhKZ1lFaXNobUFiYWZaV3lqZ3Vzekxkb21z?= =?utf-8?B?d3UxbnpnbXhFOFVvRnh1SWlOSVNHQ3NIV09iM1hvdk91NFBBUlgrRjNhbmVr?= =?utf-8?B?cWhZazFsbnhjZ0FZQzZWN3p6alk5L25wVnNuZVNsQlZRVXJtRjl5SEhiZk1E?= =?utf-8?B?cnhiYVZCVkh6eTdGa1hvTnVCekxRMkRqSzF2dWdyaFhTcEZoSDkwMVFWRmVL?= =?utf-8?B?amJXQWZySTl1dnpvbjM3b0JOd0tJV2pLY0NQd1lxeGpqKzRpc1RvUmJyTEtn?= =?utf-8?B?OVkrdjB3dDl5NmRlSHJ0UVZlSEppTHpJTW9GUHpPaklDVTI3cTNzNzI4dFUx?= =?utf-8?B?V1EwdnQxNjVoY21wM2Q0UXhLWGwwV2FaZVo1TE50UTQ0S1prTGVqQ0hGOEYw?= =?utf-8?B?SHVwWmhFVVIwWnRodnpCcHRqcEkzTEZFOFcvZE1OZXpCNlZNUFhOV1g5aXJn?= =?utf-8?B?RC9KbTdVUXRjRUZSNEUvdHRmWGlCQXljMm1wcmluZCtwb0h1NHBmUlJuTjF5?= =?utf-8?B?SDM0d3JZVWd4bXVmYUVxSkdhM2RDK3FyZ1c0WlUySW5pVzgrLy9MT1l1RU1s?= =?utf-8?B?MVJsQVNTZStHVGY3QmVSZ0pqYUpxZmZKOFlCaVFHMnIvb2FrMnQweTdvY2x0?= =?utf-8?B?b2VOV1FJNzJkeWlCNzVBZ216bDlEQkViTjd4MHRUaC9VdnI0QWw5NGxRU0ho?= =?utf-8?B?Y1ZzdUlmYUVXbklScHAzU29HYXBGR0hTamk2RGJ3QmVsQlI4STlVdDI1U1Nw?= =?utf-8?B?aGJHbEJ3Q0N5MFZoZUl6RTZkTjk3UkhHbk9rMVlJbWpsdnZYVEZONnFDUERk?= =?utf-8?Q?EWFAssKZHbzHrZUqXYd/ZVhj5?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LV2PR01MB7839.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24f1a2f3-e804-4e99-958d-08dc90ec6825 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2024 05:47:01.3327 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NeSA6Xuumovoa/fcNPttT2e2arVQlVdSocRAgKnjlhMd6hPtAYtusb2MMoyJcWJWpz4TICSPtmEbj8ufMxE9cV3hSU7AUprUmR/wgcRgeOc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR01MB7819 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Pj4gKyAgICAgICAgIGlmIChsYW5lX3JlZHVjaW5nX29wX3AgKG9wLmNvZGUpKQo+PiArICAgICAg ICAgICB7Cj4+ICsgICAgICAgICAgICAgdW5zaWduZWQgZ3JvdXBfc2l6ZSA9IHNscF9ub2RlID8g U0xQX1RSRUVfTEFORVMgKHNscF9ub2RlKSA6IDA7Cj4+ICsgICAgICAgICAgICAgdHJlZSBvcF90 eXBlID0gVFJFRV9UWVBFIChvcC5vcHNbMF0pOwo+PiArICAgICAgICAgICAgIHRyZWUgbmV3X3Zl Y3R5cGVfaW4gPSBnZXRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUgKGxvb3BfdmluZm8sCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3BfdHlwZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9zaXplKTsKPiAKPiBJIHRoaW5rIGRvaW5n IGl0IHRoaXMgd2F5IGRvZXMgbm90IGFkaGVyZSB0byB0aGUgdmVjdG9yIHR5cGUgc2l6ZSBjb25z dHJhaW50Cj4gd2l0aCBsb29wIHZlY3Rvcml6YXRpb24uICBZb3Ugc2hvdWxkIHVzZSB2ZWN0X2lz X3NpbXBsZV91c2UgbGlrZSB0aGUKPiBvcmlnaW5hbCBjb2RlIGRpZCBhcyB0aGUgYWN0dWFsIHZl Y3RvciBkZWZpbml0aW9uIGRldGVybWluZXMgdGhlIHZlY3RvciB0eXBlCj4gdXNlZC4KCk9LLCB0 aG91Z2ggdGhpcyBtaWdodCBiZSB3b3JkeS4gCgpBY3R1YWxseSwgU1RNVF9WSU5GT19SRURVQ19W RUNUWVBFX0lOIGlzIGxvZ2ljYWxseSBlcXVpdmFsZW50IHRvIG51bml0c192ZWN0eXBlCnRoYXQg aXMgZGV0ZXJtaW5lZCBpbiB2ZWN0X2RldGVybWluZV92Zl9mb3Jfc3RtdF8xKCkuIFNvIGhvdyBh Ym91dCBzZXR0aW5nIHRoZSB0eXBlCmluIHRoaXMgZnVuY3Rpb24/Cgo+IAo+IFlvdSBhcmUgYWx3 YXlzIHVzaW5nIG9wLm9wc1swXSBoZXJlIC0gSSB0aGluayB0aGF0IHdvcmtzIGJlY2F1c2UKPiBy ZWR1Y19pZHggaXMgdGhlIGxhc3Qgb3BlcmFuZCBvZiBhbGwgbGFuZS1yZWR1Y2luZyBvcHMuICBC dXQgdGhlbgo+IHdlIHNob3VsZCBhc3NlcnQgcmVkdWNfaWR4ICE9IDAgaGVyZSBhbmQgYWRkIGEg Y29tbWVudC4KCkFscmVhZHkgYWRkZWQgaW4gdGhlIGZvbGxvd2luZyBhc3NlcnRpb24uCgo+PiAr Cj4+ICsgICAgICAgICAgICAgLyogVGhlIGxhc3Qgb3BlcmFuZCBvZiBsYW5lLXJlZHVjaW5nIG9w ZXJhdGlvbiBpcyBmb3IKPj4gKyAgICAgICAgICAgICAgICByZWR1Y3Rpb24uICAqLwo+PiArICAg ICAgICAgICAgIGdjY19hc3NlcnQgKHJlZHVjX2lkeCA+IDAgJiYgcmVkdWNfaWR4ID09IChpbnQp IG9wLm51bV9vcHMgLSAxKTsKCiAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgo+PiArCj4+ICsgICAgICAgICAgICAgLyogRm9yIGxh bmUtcmVkdWNpbmcgb3BlcmF0aW9uIHZlY3Rvcml6YWJsZSBhbmFseXNpcyBuZWVkcyB0aGUKPj4g KyAgICAgICAgICAgICAgICByZWR1Y3Rpb24gUEhJIGluZm9ybWF0aW9uICovCj4+ICsgICAgICAg ICAgICAgU1RNVF9WSU5GT19SRURVQ19ERUYgKGRlZikgPSBwaGlfaW5mbzsKPj4gKwo+PiArICAg ICAgICAgICAgIGlmICghbmV3X3ZlY3R5cGVfaW4pCj4+ICsgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Cj4+ICsKPj4gKyAgICAgICAgICAgICAvKiBFYWNoIGxhbmUtcmVkdWNpbmcgb3BlcmF0 aW9uIGhhcyBpdHMgb3duIGlucHV0IHZlY3R5cGUsIHdoaWxlCj4+ICsgICAgICAgICAgICAgICAg cmVkdWN0aW9uIFBISSB3aWxsIHJlY29yZCB0aGUgaW5wdXQgdmVjdHlwZSB3aXRoIHRoZSBsZWFz dAo+PiArICAgICAgICAgICAgICAgIGxhbmVzLiAgKi8KPj4gKyAgICAgICAgICAgICBTVE1UX1ZJ TkZPX1JFRFVDX1ZFQ1RZUEVfSU4gKHZkZWYpID0gbmV3X3ZlY3R5cGVfaW47Cj4+ICsKPj4gKyAg ICAgICAgICAgICAvKiBUbyBhY2NvbW1vZGF0ZSBsYW5lLXJlZHVjaW5nIG9wZXJhdGlvbnMgb2Yg bWl4ZWQgaW5wdXQKPj4gKyAgICAgICAgICAgICAgICB2ZWN0eXBlcywgY2hvb3NlIGlucHV0IHZl Y3R5cGUgd2l0aCB0aGUgbGVhc3QgbGFuZXMgZm9yIHRoZQo+PiArICAgICAgICAgICAgICAgIHJl ZHVjdGlvbiBQSEkgc3RhdGVtZW50LCB3aGljaCB3b3VsZCByZXN1bHQgaW4gdGhlIG1vc3QKPj4g KyAgICAgICAgICAgICAgICBuY29waWVzIGZvciB2ZWN0b3JpemVkIHJlZHVjdGlvbiByZXN1bHRz LiAgKi8KPj4gKyAgICAgICAgICAgICBpZiAoIXZlY3R5cGVfaW4KPj4gKyAgICAgICAgICAgICAg ICAgfHwgKEdFVF9NT0RFX1NJWkUgKFNDQUxBUl9UWVBFX01PREUgKFRSRUVfVFlQRSAodmVjdHlw ZV9pbikpKQo+PiArICAgICAgICAgICAgICAgICAgICAgIDwgR0VUX01PREVfU0laRSAoU0NBTEFS X1RZUEVfTU9ERSAob3BfdHlwZSkpKSkKPj4gKyAgICAgICAgICAgICAgIHZlY3R5cGVfaW4gPSBu ZXdfdmVjdHlwZV9pbjsKPiAKPiBJIGtub3cgdGhpcyBpcyBhIGZyYWdpbGUgYXJlYSBidXQgSSBh bHdheXMgd29uZGVyIHNpbmNlIHRoZSBhY2N1bXVsYXRpbmcgb3BlcmFuZAo+IGlzIHRoZSBsYXJn ZXN0IChhbGwgbGFuZS1yZWR1Y2luZyBvcHMgYXJlIHdpZGVuaW5nKSwgYW5kIHRoYXQgd2lsbCBi ZQo+IGVxdWFsIHRvIHRoZQo+IHR5cGUgb2YgdGhlIFBISSBub2RlLCBob3cgdGhpcyBjb25kaXRp b24gY2FuIGJlIGV2ZXIgdHJ1ZS4KCkluIHRoZSBvcmlnaW5hbCBjb2RlLCBhY2N1bXVsYXRpbmcg b3BlcmFuZCBpcyBza2lwcGVkISBXaGlsZSBpdCBpcyBjb3JyZWN0bHksIHdlCnNob3VsZCBub3Qg Y291bnQgdGhlIG9wZXJhbmQsIHRoaXMgaXMgd2h5IHdlIGNhbGwgb3BlcmF0aW9uIGxhbmUtcmVk dWNpbmcuCgo+IAo+IG5jb3BpZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgVkYsIHNvIHRoZSBjb21t ZW50IGlzIGF0IGxlYXN0IG1pc2xlYWRpbmcuCj4gCj4+ICsgICAgICAgICAgIH0KPj4gKyAgICAg ICAgIGVsc2UKPj4gKyAgICAgICAgICAgdmVjdHlwZV9pbiA9IFNUTVRfVklORk9fVkVDVFlQRSAo cGhpX2luZm8pOwo+IAo+IFBsZWFzZSBpbml0aWFsaXplIHZlY3R5cGVfaW4gZnJvbSBwaGlfaW5m byBiZWZvcmUgdGhlIGxvb3AgKHRoYXQKPiBzaG91bGQgbmV2ZXIgYmUgTlVMTCkuCj4gCgpNYXkg bm90LCBhcyB0aGUgYmVsb3cgZXhwbGFuYXRpb24uIAoKPiBJJ2xsIG5vdGUgdGhhdCB3aXRoIHlv dXIgcGF0Y2ggaXQgc2VlbXMgd2UnZCBpbml0aWFsaXplIHZlY3R5cGVfaW4gdG8KPiB0aGUgYmln Z2VzdAo+IG5vbi1hY2N1bXVsYXRpb24gdmVjdG9yIHR5cGUgaW52b2x2ZWQgaW4gbGFuZS1yZWR1 Y2luZyBvcHMgYnV0IHRoZSBhY2N1bXVsYXRpbmcKPiB0eXBlIG1pZ2h0IHN0aWxsIGJlIGxhcmdl ci4gICBXaHksIHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBsYW5lLXJlZHVjaW5nCj4gb3BzLCB3b3Vs ZAo+IHdlIGNob3NlIHRoZSBsYXJnZXN0IGlucHV0IGhlcmU/ICBJIHNlZSB3ZSBldmVudHVhbGx5 IGRvCj4gCj4gICBpZiAoc2xwX25vZGUpCj4gICAgIG5jb3BpZXMgPSAxOwo+ICAgZWxzZQo+ICAg ICBuY29waWVzID0gdmVjdF9nZXRfbnVtX2NvcGllcyAobG9vcF92aW5mbywgdmVjdHlwZV9pbik7 Cj4gCj4gYnV0IHRoZW4gSUlSQyB3ZSBhbHdheXMgZm9yY2UgYSBzaW5nbGUgY3ljbGUgZGVmIGZv ciBsYW5lLXJlZHVjaW5nIG9wcyg/KS4KCgo+IEluIHBhcnRpY3VsYXIgZm9yIHZlY3RfdHJhbnNm b3JtX3JlZHVjdGlvbiBhbmQgU0xQIHdlIHJlbHkgb24KPiBTTFBfVFJFRV9OVU1CRVJfT0ZfVkVD X1NUTVRTIHdoaWxlIG5vbi1TTFAgdXNlcwo+IFNUTVRfVklORk9fUkVEVUNfVkVDVFlQRV9JTi4K PiAKPiBTbyBJIHdvbmRlciB3aGF0IGJyZWFrcyB3aGVuIHdlIHNldCB2ZWN0eXBlX2luID0gdmVj dG9yIHR5cGUgb2YgUEhJPwo+IAoKWWVzLiBJdCBpcyByaWdodCwgbm90aGluZyBpcyBicm9rZW4u IFN1cHBvc2UgdGhhdCBhIGxvb3AgY29udGFpbnMgdGhyZWUgZG90X3Byb2RzLAp0d28gYXJlIDwx NiAqIGNoYXI+LCBvbmUgaXMgPDggKiBzaG9ydD4sIGFuZCBjaG9vc2UgPDQgKiBpbnQ+IGFzIHZl Y3R5cGVfaW46CgpXaXRoIHRoZSBwYXRjaCAjNywgd2UgZ2V0OgoKICAgICAgdmVjdG9yPDQ+IGlu dCBzdW1fdjAgPSB7IDAsIDAsIDAsIDAgfTsKICAgICAgdmVjdG9yPDQ+IGludCBzdW1fdjEgPSB7 IDAsIDAsIDAsIDAgfTsKICAgICAgdmVjdG9yPDQ+IGludCBzdW1fdjIgPSB7IDAsIDAsIDAsIDAg fTsKICAgICAgdmVjdG9yPDQ+IGludCBzdW1fdjMgPSB7IDAsIDAsIDAsIDAgfTsKCiAgICAgIGxv b3AgKCkgewogICAgICAgICBzdW1fdjAgPSBkb3RfcHJvZDwxNiAqIGNoYXI+KGNoYXJfYTAsIGNo YXJfYTEsIHN1bV92MCk7CiAKICAgICAgICAgc3VtX3YwID0gZG90X3Byb2Q8MTYgKiBjaGFyPihj aGFyX2IwLCBjaGFyX2IxLCBzdW1fdjApOwoKICAgICAgICAgc3VtX3YwID0gZG90X3Byb2Q8OCAq IHNob3J0PihzaG9ydF9jMF9sbywgc2hvcnRfYzFfbG8sIHN1bV92MCk7CiAgICAgICAgIHN1bV92 MSA9IGRvdF9wcm9kPDggKiBzaG9ydD4oc2hvcnRfYzBfaGksIHNob3J0X2MxX2hpLCBzdW1fdjEp OwoKICAgICAgICAgc3VtX3YyID0gc3VtX3YyOwogICAgICAgICBzdW1fdjMgPSBzdW1fdjM7CiAg ICAgIH0KClRoZSBkZWYvdXNlIGN5Y2xlcyAoc3VtX3YyIGFuZCBzdW1fdjM+IHdvdWxkIGJlIG9w dGltaXplZCBhd2F5IGZpbmFsbHkuClRoZW4gdGhpcyBnZXRzIHNhbWUgcmVzdWx0IGFzIHNldHRp bmcgdmVjdHlwZV9pbiB0byA8OCAqIHNob3J0Pi4KCldpdGggdGhlIHBhdGNoICM4LCB3ZSBnZXQ6 CgogICAgICB2ZWN0b3I8ND4gaW50IHN1bV92MCA9IHsgMCwgMCwgMCwgMCB9OwogICAgICB2ZWN0 b3I8ND4gaW50IHN1bV92MSA9IHsgMCwgMCwgMCwgMCB9OwogICAgICB2ZWN0b3I8ND4gaW50IHN1 bV92MiA9IHsgMCwgMCwgMCwgMCB9OwogICAgICB2ZWN0b3I8ND4gaW50IHN1bV92MyA9IHsgMCwg MCwgMCwgMCB9OwoKICAgICAgbG9vcCAoKSB7CiAgICAgICAgIHN1bV92MCA9IGRvdF9wcm9kPDE2 ICogY2hhcj4oY2hhcl9hMCwgY2hhcl9hMSwgc3VtX3YwKTsgCgogICAgICAgICBzdW1fdjEgPSBk b3RfcHJvZDwxNiAqIGNoYXI+KGNoYXJfYjAsIGNoYXJfYjEsIHN1bV92MSk7CgogICAgICAgICBz dW1fdjIgPSBkb3RfcHJvZDw4ICogc2hvcnQ+KHNob3J0X2MwX2xvLCBzaG9ydF9jMV9sbywgc3Vt X3YyKTsKICAgICAgICAgc3VtX3YzID0gZG90X3Byb2Q8OCAqIHNob3J0PihzaG9ydF9jMF9oaSwg c2hvcnRfYzFfaGksIHN1bV92Myk7CiAgICAgIH0KCkFsbCBkb3RfcHJvZHMgYXJlIGFzc2lnbmVk IHRvIHNlcGFyYXRlIGRlZi91c2UgY3ljbGVzLCBhbmQgbm8KZGVwZW5kZW5jeS4gTW9yZSBkZWYv dXNlIGN5Y2xlcywgaGlnaGVyIGluc3RydWN0aW9uIHBhcmFsbGVsaXNtLApidXQgdGhlcmUgbmVl ZCBleHRyYSBjb3N0IGluIGVwaWxvZ3VlIHRvIGNvbWJpbmUgdGhlIHJlc3VsdC4KClNvIHdlIGNv bnNpZGVyIGEgc29tZXdoYXQgY29tcGFjdCBkZWYvdXNlIGxheW91dCBzaW1pbGFyIHRvCnNpbmds ZS1kZWZ1c2UtY3ljbGUsIGluIHdoaWNoIHR3byA8MTYgKiBjaGFyPiBkb3RfcHJvZHMgYXJlIGlu ZGVwZW5kZW50LAphbmQgY3ljbGUgMiBhbmQgMyBhcmUgbm90IHVzZWQsIGFuZCB0aGlzIGlzIGJl dHRlciB0aGFuIHRoZSAxc3Qgc2NoZW1lLgoKICAgICAgdmVjdG9yPDQ+IGludCBzdW1fdjAgPSB7 IDAsIDAsIDAsIDAgfTsKICAgICAgdmVjdG9yPDQ+IGludCBzdW1fdjEgPSB7IDAsIDAsIDAsIDAg fTsKCiAgICAgIGxvb3AgKCkgewogICAgICAgICBzdW1fdjAgPSBkb3RfcHJvZDwxNiAqIGNoYXI+ KGNoYXJfYTAsIGNoYXJfYTEsIHN1bV92MCk7IAoKICAgICAgICAgc3VtX3YxID0gZG90X3Byb2Q8 MTYgKiBjaGFyPihjaGFyX2IwLCBjaGFyX2IxLCBzdW1fdjEpOwoKICAgICAgICAgc3VtX3YwID0g ZG90X3Byb2Q8OCAqIHNob3J0PihzaG9ydF9jMF9sbywgc2hvcnRfYzFfbG8sIHN1bV92MCk7CiAg ICAgICAgIHN1bV92MSA9IGRvdF9wcm9kPDggKiBzaG9ydD4oc2hvcnRfYzBfaGksIHNob3J0X2Mx X2hpLCBzdW1fdjEpOwogICAgICB9CgpGb3IgdGhpcyBwdXJwb3NlLCB3ZSBuZWVkIHRvIHRyYWNr IHRoZSB2ZWN0eXBlX2luIHRoYXQgcmVzdWx0cyBpbgp0aGUgbW9zdCBuY29waWVzLCBmb3IgdGhp cyBjYXNlLCB0aGUgdHlwZSBpcyA8OCAqIHNob3J0Pi4KCkJUVzogd291bGQgeW91IHBsZWFzZSBh bHNvIHRha2UgYSBsb29rIGF0IHBhdGNoICM3IGFuZCAjOD8KClRoYW5rcywKRmVuZwoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcm9tOiBSaWNoYXJkIEJpZW5lciA8 cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+ClNlbnQ6IFdlZG5lc2RheSwgSnVuZSAxOSwgMjAy NCA5OjAxIFBNClRvOiBGZW5nIFh1ZSBPUwpDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcKU3Vi amVjdDogUmU6IFtQQVRDSCA0LzhdIHZlY3Q6IERldGVybWluZSBpbnB1dCB2ZWN0eXBlIGZvciBt dWx0aXBsZSBsYW5lLXJlZHVjaW5nCgpPbiBTdW4sIEp1biAxNiwgMjAyNCBhdCA5OjI14oCvQU0g RmVuZyBYdWUgT1MgPGZ4dWVAb3MuYW1wZXJlY29tcHV0aW5nLmNvbT4gd3JvdGU6Cj4KPiBUaGUg aW5wdXQgdmVjdHlwZSBvZiByZWR1Y3Rpb24gUEhJIHN0YXRlbWVudCBtdXN0IGJlIGRldGVybWlu ZWQgYmVmb3JlCj4gdmVjdCBjb3N0IGNvbXB1dGF0aW9uIGZvciB0aGUgcmVkdWN0aW9uLiBTaW5j ZSBsYW5jZS1yZWR1Y2luZyBvcGVyYXRpb24gaGFzCj4gZGlmZmVyZW50IGlucHV0IHZlY3R5cGUg ZnJvbSBub3JtYWwgb25lLCBzbyB3ZSBuZWVkIHRvIHRyYXZlcnNlIGFsbCByZWR1Y3Rpb24KPiBz dGF0ZW1lbnRzIHRvIGZpbmQgb3V0IHRoZSBpbnB1dCB2ZWN0eXBlIHdpdGggdGhlIGxlYXN0IGxh bmVzLCBhbmQgc2V0IHRoYXQgdG8KPiB0aGUgUEhJIHN0YXRlbWVudC4KPgo+IFRoYW5rcywKPiBG ZW5nCj4KPiAtLS0KPiBnY2MvCj4gICAgICAgICAqIHRyZWUtdmVjdC1sb29wLmNjICh2ZWN0b3Jp emFibGVfcmVkdWN0aW9uKTogRGV0ZXJtaW5lIGlucHV0IHZlY3R5cGUKPiAgICAgICAgIGR1cmlu ZyB0cmF2ZXJzYWwgb2YgcmVkdWN0aW9uIHN0YXRlbWVudHMuCj4gLS0tCj4gIGdjYy90cmVlLXZl Y3QtbG9vcC5jYyB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KPiAgMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZlY3QtbG9v cC5jYwo+IGluZGV4IDBmN2IxMjVlNzJkLi4zOWFhNWNiMTE5NyAxMDA2NDQKPiAtLS0gYS9nY2Mv dHJlZS12ZWN0LWxvb3AuY2MKPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MKPiBAQCAtNzY0 Myw3ICs3NjQzLDkgQEAgdmVjdG9yaXphYmxlX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvLAo+ICAgICAgewo+ICAgICAgICBzdG10X3ZlY19pbmZvIGRlZiA9IGxvb3BfdmluZm8t Pmxvb2t1cF9kZWYgKHJlZHVjX2RlZik7Cj4gICAgICAgIHN0bXRfdmVjX2luZm8gdmRlZiA9IHZl Y3Rfc3RtdF90b192ZWN0b3JpemUgKGRlZik7Cj4gLSAgICAgIGlmIChTVE1UX1ZJTkZPX1JFRFVD X0lEWCAodmRlZikgPT0gLTEpCj4gKyAgICAgIGludCByZWR1Y19pZHggPSBTVE1UX1ZJTkZPX1JF RFVDX0lEWCAodmRlZik7Cj4gKwo+ICsgICAgICBpZiAocmVkdWNfaWR4ID09IC0xKQo+ICAgICAg ICAgewo+ICAgICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpCj4gICAgICAgICAgICAgZHVt cF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwgdmVjdF9sb2NhdGlvbiwKPiBA QCAtNzY4NiwxMCArNzY4OCw1MCBAQCB2ZWN0b3JpemFibGVfcmVkdWN0aW9uIChsb29wX3ZlY19p bmZvIGxvb3BfdmluZm8sCj4gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gICAgICAgICAg ICAgfQo+ICAgICAgICAgfQo+IC0gICAgICBlbHNlIGlmICghc3RtdF9pbmZvKQo+IC0gICAgICAg LyogRmlyc3Qgbm9uLWNvbnZlcnNpb24gc3RtdC4gICovCj4gLSAgICAgICBzdG10X2luZm8gPSB2 ZGVmOwo+IC0gICAgICByZWR1Y19kZWYgPSBvcC5vcHNbU1RNVF9WSU5GT19SRURVQ19JRFggKHZk ZWYpXTsKPiArICAgICAgZWxzZQo+ICsgICAgICAgewo+ICsgICAgICAgICAvKiBGaXJzdCBub24t Y29udmVyc2lvbiBzdG10LiAgKi8KPiArICAgICAgICAgaWYgKCFzdG10X2luZm8pCj4gKyAgICAg ICAgICAgc3RtdF9pbmZvID0gdmRlZjsKPiArCj4gKyAgICAgICAgIGlmIChsYW5lX3JlZHVjaW5n X29wX3AgKG9wLmNvZGUpKQo+ICsgICAgICAgICAgIHsKPiArICAgICAgICAgICAgIHVuc2lnbmVk IGdyb3VwX3NpemUgPSBzbHBfbm9kZSA/IFNMUF9UUkVFX0xBTkVTIChzbHBfbm9kZSkgOiAwOwo+ ICsgICAgICAgICAgICAgdHJlZSBvcF90eXBlID0gVFJFRV9UWVBFIChvcC5vcHNbMF0pOwo+ICsg ICAgICAgICAgICAgdHJlZSBuZXdfdmVjdHlwZV9pbiA9IGdldF92ZWN0eXBlX2Zvcl9zY2FsYXJf dHlwZSAobG9vcF92aW5mbywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wX3R5cGUsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9zaXpl KTsKCkkgdGhpbmsgZG9pbmcgaXQgdGhpcyB3YXkgZG9lcyBub3QgYWRoZXJlIHRvIHRoZSB2ZWN0 b3IgdHlwZSBzaXplIGNvbnN0cmFpbnQKd2l0aCBsb29wIHZlY3Rvcml6YXRpb24uICBZb3Ugc2hv dWxkIHVzZSB2ZWN0X2lzX3NpbXBsZV91c2UgbGlrZSB0aGUKb3JpZ2luYWwgY29kZSBkaWQgYXMg dGhlIGFjdHVhbCB2ZWN0b3IgZGVmaW5pdGlvbiBkZXRlcm1pbmVzIHRoZSB2ZWN0b3IgdHlwZQp1 c2VkLgoKWW91IGFyZSBhbHdheXMgdXNpbmcgb3Aub3BzWzBdIGhlcmUgLSBJIHRoaW5rIHRoYXQg d29ya3MgYmVjYXVzZQpyZWR1Y19pZHggaXMgdGhlIGxhc3Qgb3BlcmFuZCBvZiBhbGwgbGFuZS1y ZWR1Y2luZyBvcHMuICBCdXQgdGhlbgp3ZSBzaG91bGQgYXNzZXJ0IHJlZHVjX2lkeCAhPSAwIGhl cmUgYW5kIGFkZCBhIGNvbW1lbnQuCgo+ICsKPiArICAgICAgICAgICAgIC8qIFRoZSBsYXN0IG9w ZXJhbmQgb2YgbGFuZS1yZWR1Y2luZyBvcGVyYXRpb24gaXMgZm9yCj4gKyAgICAgICAgICAgICAg ICByZWR1Y3Rpb24uICAqLwo+ICsgICAgICAgICAgICAgZ2NjX2Fzc2VydCAocmVkdWNfaWR4ID4g MCAmJiByZWR1Y19pZHggPT0gKGludCkgb3AubnVtX29wcyAtIDEpOwo+ICsKPiArICAgICAgICAg ICAgIC8qIEZvciBsYW5lLXJlZHVjaW5nIG9wZXJhdGlvbiB2ZWN0b3JpemFibGUgYW5hbHlzaXMg bmVlZHMgdGhlCj4gKyAgICAgICAgICAgICAgICByZWR1Y3Rpb24gUEhJIGluZm9ybWF0aW9uICov Cj4gKyAgICAgICAgICAgICBTVE1UX1ZJTkZPX1JFRFVDX0RFRiAoZGVmKSA9IHBoaV9pbmZvOwo+ ICsKPiArICAgICAgICAgICAgIGlmICghbmV3X3ZlY3R5cGVfaW4pCj4gKyAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiArCj4gKyAgICAgICAgICAgICAvKiBFYWNoIGxhbmUtcmVkdWNpbmcg b3BlcmF0aW9uIGhhcyBpdHMgb3duIGlucHV0IHZlY3R5cGUsIHdoaWxlCj4gKyAgICAgICAgICAg ICAgICByZWR1Y3Rpb24gUEhJIHdpbGwgcmVjb3JkIHRoZSBpbnB1dCB2ZWN0eXBlIHdpdGggdGhl IGxlYXN0Cj4gKyAgICAgICAgICAgICAgICBsYW5lcy4gICovCj4gKyAgICAgICAgICAgICBTVE1U X1ZJTkZPX1JFRFVDX1ZFQ1RZUEVfSU4gKHZkZWYpID0gbmV3X3ZlY3R5cGVfaW47Cj4gKwo+ICsg ICAgICAgICAgICAgLyogVG8gYWNjb21tb2RhdGUgbGFuZS1yZWR1Y2luZyBvcGVyYXRpb25zIG9m IG1peGVkIGlucHV0Cj4gKyAgICAgICAgICAgICAgICB2ZWN0eXBlcywgY2hvb3NlIGlucHV0IHZl Y3R5cGUgd2l0aCB0aGUgbGVhc3QgbGFuZXMgZm9yIHRoZQo+ICsgICAgICAgICAgICAgICAgcmVk dWN0aW9uIFBISSBzdGF0ZW1lbnQsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiB0aGUgbW9zdAo+ICsg ICAgICAgICAgICAgICAgbmNvcGllcyBmb3IgdmVjdG9yaXplZCByZWR1Y3Rpb24gcmVzdWx0cy4g ICovCj4gKyAgICAgICAgICAgICBpZiAoIXZlY3R5cGVfaW4KPiArICAgICAgICAgICAgICAgICB8 fCAoR0VUX01PREVfU0laRSAoU0NBTEFSX1RZUEVfTU9ERSAoVFJFRV9UWVBFICh2ZWN0eXBlX2lu KSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICA8IEdFVF9NT0RFX1NJWkUgKFNDQUxBUl9UWVBF X01PREUgKG9wX3R5cGUpKSkpCj4gKyAgICAgICAgICAgICAgIHZlY3R5cGVfaW4gPSBuZXdfdmVj dHlwZV9pbjsKCkkga25vdyB0aGlzIGlzIGEgZnJhZ2lsZSBhcmVhIGJ1dCBJIGFsd2F5cyB3b25k ZXIgc2luY2UgdGhlIGFjY3VtdWxhdGluZyBvcGVyYW5kCmlzIHRoZSBsYXJnZXN0IChhbGwgbGFu ZS1yZWR1Y2luZyBvcHMgYXJlIHdpZGVuaW5nKSwgYW5kIHRoYXQgd2lsbCBiZQplcXVhbCB0byB0 aGUKdHlwZSBvZiB0aGUgUEhJIG5vZGUsIGhvdyB0aGlzIGNvbmRpdGlvbiBjYW4gYmUgZXZlciB0 cnVlLgoKbmNvcGllcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBWRiwgc28gdGhlIGNvbW1lbnQgaXMg YXQgbGVhc3QgbWlzbGVhZGluZy4KCj4gKyAgICAgICAgICAgfQo+ICsgICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgdmVjdHlwZV9pbiA9IFNUTVRfVklORk9fVkVDVFlQRSAocGhpX2luZm8pOwoK UGxlYXNlIGluaXRpYWxpemUgdmVjdHlwZV9pbiBmcm9tIHBoaV9pbmZvIGJlZm9yZSB0aGUgbG9v cCAodGhhdApzaG91bGQgbmV2ZXIgYmUgTlVMTCkuCgpJJ2xsIG5vdGUgdGhhdCB3aXRoIHlvdXIg cGF0Y2ggaXQgc2VlbXMgd2UnZCBpbml0aWFsaXplIHZlY3R5cGVfaW4gdG8KdGhlIGJpZ2dlc3QK bm9uLWFjY3VtdWxhdGlvbiB2ZWN0b3IgdHlwZSBpbnZvbHZlZCBpbiBsYW5lLXJlZHVjaW5nIG9w cyBidXQgdGhlIGFjY3VtdWxhdGluZwp0eXBlIG1pZ2h0IHN0aWxsIGJlIGxhcmdlci4gICBXaHks IHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBsYW5lLXJlZHVjaW5nCm9wcywgd291bGQKd2UgY2hvc2Ug dGhlIGxhcmdlc3QgaW5wdXQgaGVyZT8gIEkgc2VlIHdlIGV2ZW50dWFsbHkgZG8KCiAgaWYgKHNs cF9ub2RlKQogICAgbmNvcGllcyA9IDE7CiAgZWxzZQogICAgbmNvcGllcyA9IHZlY3RfZ2V0X251 bV9jb3BpZXMgKGxvb3BfdmluZm8sIHZlY3R5cGVfaW4pOwoKYnV0IHRoZW4gSUlSQyB3ZSBhbHdh eXMgZm9yY2UgYSBzaW5nbGUgY3ljbGUgZGVmIGZvciBsYW5lLXJlZHVjaW5nIG9wcyg/KS4KSW4g cGFydGljdWxhciBmb3IgdmVjdF90cmFuc2Zvcm1fcmVkdWN0aW9uIGFuZCBTTFAgd2UgcmVseSBv bgpTTFBfVFJFRV9OVU1CRVJfT0ZfVkVDX1NUTVRTIHdoaWxlIG5vbi1TTFAgdXNlcwpTVE1UX1ZJ TkZPX1JFRFVDX1ZFQ1RZUEVfSU4uCgpTbyBJIHdvbmRlciB3aGF0IGJyZWFrcyB3aGVuIHdlIHNl dCB2ZWN0eXBlX2luID0gdmVjdG9yIHR5cGUgb2YgUEhJPwoKUmljaGFyZC4KCj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICByZWR1Y19kZWYgPSBvcC5vcHNbcmVkdWNfaWR4XTsKPiAgICAgICAgcmVk dWNfY2hhaW5fbGVuZ3RoKys7Cj4gICAgICAgIGlmICghc3RtdF9pbmZvICYmIHNscF9ub2RlKQo+ ICAgICAgICAgc2xwX2Zvcl9zdG10X2luZm8gPSBTTFBfVFJFRV9DSElMRFJFTiAoc2xwX2Zvcl9z dG10X2luZm8pWzBdOwo+IEBAIC03NzQ3LDYgKzc3ODksOCBAQCB2ZWN0b3JpemFibGVfcmVkdWN0 aW9uIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sCj4KPiAgICB0cmVlIHZlY3R5cGVfb3V0ID0g U1RNVF9WSU5GT19WRUNUWVBFIChzdG10X2luZm8pOwo+ICAgIFNUTVRfVklORk9fUkVEVUNfVkVD VFlQRSAocmVkdWNfaW5mbykgPSB2ZWN0eXBlX291dDsKPiArICBTVE1UX1ZJTkZPX1JFRFVDX1ZF Q1RZUEVfSU4gKHJlZHVjX2luZm8pID0gdmVjdHlwZV9pbjsKPiArCj4gICAgZ2ltcGxlX21hdGNo X29wIG9wOwo+ICAgIGlmICghZ2ltcGxlX2V4dHJhY3Rfb3AgKHN0bXRfaW5mby0+c3RtdCwgJm9w KSkKPiAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKPiBAQCAtNzgzMSwxNiArNzg3NSw2IEBAIHZl Y3Rvcml6YWJsZV9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywKPiAgICAgICAg ICAgPSBnZXRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUgKGxvb3BfdmluZm8sCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkVFX1RZUEUgKG9wLm9wc1tpXSksIHNs cF9vcFtpXSk7Cj4KPiAtICAgICAgLyogVG8gcHJvcGVybHkgY29tcHV0ZSBuY29waWVzIHdlIGFy ZSBpbnRlcmVzdGVkIGluIHRoZSB3aWRlc3QKPiAtICAgICAgICBub24tcmVkdWN0aW9uIGlucHV0 IHR5cGUgaW4gY2FzZSB3ZSdyZSBsb29raW5nIGF0IGEgd2lkZW5pbmcKPiAtICAgICAgICBhY2N1 bXVsYXRpb24gdGhhdCB3ZSBsYXRlciBoYW5kbGUgaW4gdmVjdF90cmFuc2Zvcm1fcmVkdWN0aW9u LiAgKi8KPiAtICAgICAgaWYgKGxhbmVfcmVkdWNpbmcKPiAtICAgICAgICAgJiYgdmVjdHlwZV9v cFtpXQo+IC0gICAgICAgICAmJiAoIXZlY3R5cGVfaW4KPiAtICAgICAgICAgICAgIHx8IChHRVRf TU9ERV9TSVpFIChTQ0FMQVJfVFlQRV9NT0RFIChUUkVFX1RZUEUgKHZlY3R5cGVfaW4pKSkKPiAt ICAgICAgICAgICAgICAgICA8IEdFVF9NT0RFX1NJWkUgKFNDQUxBUl9UWVBFX01PREUgKFRSRUVf VFlQRSAodmVjdHlwZV9vcFtpXSkpKSkpKQo+IC0gICAgICAgdmVjdHlwZV9pbiA9IHZlY3R5cGVf b3BbaV07Cj4gLQo+ICAgICAgICAvKiBSZWNvcmQgaG93IHRoZSBub24tcmVkdWN0aW9uLWRlZiB2 YWx1ZSBvZiBDT05EX0VYUFIgaXMgZGVmaW5lZC4KPiAgICAgICAgICA/Pz8gIEZvciBhIGNoYWlu IG9mIG11bHRpcGxlIENPTkRzIHdlJ2QgaGF2ZSB0byBtYXRjaCB0aGVtIHVwIGFsbC4gICovCj4g ICAgICAgIGlmIChvcC5jb2RlID09IENPTkRfRVhQUiAmJiByZWR1Y19jaGFpbl9sZW5ndGggPT0g MSkKPiBAQCAtNzg1OSwxNCArNzg5Myw2IEBAIHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24gKGxvb3Bf dmVjX2luZm8gbG9vcF92aW5mbywKPiAgICAgICAgICAgICB9Cj4gICAgICAgICB9Cj4gICAgICB9 Cj4gLSAgaWYgKCF2ZWN0eXBlX2luKQo+IC0gICAgdmVjdHlwZV9pbiA9IFNUTVRfVklORk9fVkVD VFlQRSAocGhpX2luZm8pOwo+IC0gIFNUTVRfVklORk9fUkVEVUNfVkVDVFlQRV9JTiAocmVkdWNf aW5mbykgPSB2ZWN0eXBlX2luOwo+IC0KPiAtICAvKiBFYWNoIGxhbmUtcmVkdWNpbmcgb3BlcmF0 aW9uIGhhcyBpdHMgb3duIGlucHV0IHZlY3R5cGUsIHdoaWxlIHJlZHVjdGlvbgo+IC0gICAgIFBI SSByZWNvcmRzIHRoZSBpbnB1dCB2ZWN0eXBlIHdpdGggbGVhc3QgbGFuZXMuICAqLwo+IC0gIGlm IChsYW5lX3JlZHVjaW5nKQo+IC0gICAgU1RNVF9WSU5GT19SRURVQ19WRUNUWVBFX0lOIChzdG10 X2luZm8pID0gdmVjdHlwZV9pbjsKPgo+ICAgIGVudW0gdmVjdF9yZWR1Y3Rpb25fdHlwZSByZWR1 Y3Rpb25fdHlwZSA9IFNUTVRfVklORk9fUkVEVUNfVFlQRSAocGhpX2luZm8pOwo+ICAgIFNUTVRf VklORk9fUkVEVUNfVFlQRSAocmVkdWNfaW5mbykgPSByZWR1Y3Rpb25fdHlwZTsKPiAtLQo+IDIu MTcuMQo=