From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2121.outbound.protection.outlook.com [40.107.94.121]) by sourceware.org (Postfix) with ESMTPS id 436383858D35 for ; Wed, 26 Jul 2023 12:54:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 436383858D35 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-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KT0xsh24wV9zh6qnYMOlEi3kYARHAPWDX5oL69L8Zmg9XjY5AjKewvlCuMY/3ccKRS8AybWr26iHNvSbR2NbJU6V7Euj1I40S19+UQqnDmlr2fQedWeDdIe1iwtkMPOR24qLAfFqGkNjhRULwKHH7qaGpg+K8jaWljh/PDGXlJgkaHtU8H2AMRdocnVxgVrkKxCv2j4ft80l/gduJ7k69D3DkF9iJT8JZA7cZFtAXmL/uk2FfrvD3WuSLfDRc1yqKFdqBX/e8i1pGdd8OOisiSvoarRKsgCWcNQ9vlVpwIy9io3jSnyQch9wu4iJbFp1cO8uQczcgifEzfgDfw4Tsg== 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=0Mi9+osMEEv6RxlGxDDHcAF8UUruaDXCp6KUJbTjj4M=; b=KVFTXQr8E6/wG5L2SP7f0EgcBIdJMH/i8ZYOmNoDYHWeZKn7tU9ME5qYuf2Dv3FDh/pdZTKSpLSqmAUOEGRTjqZR13qyaxpQbbOvYC0YzEaOI/7NVLR9tip2YCg3s+2wPfjLm5mMLgIZATKGAv4qlUz3SytSyFKVDfy4ek4TkCrUaXC06ByxrHoaa1fkPGOZ/GzoxPEpjsVWsExhf/s0ts0bWmVcwaQWYwbKuybBsrMyMoAH2/GiCNjzEKC12ve5J5FspGdFWO6/u6J72jgxc18xXzjo+vEAT1tMlslH2XjrrLA9a54OMmEYmC3U8dkWEKa8DMo7LS0AnqwKHMlAzQ== 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=0Mi9+osMEEv6RxlGxDDHcAF8UUruaDXCp6KUJbTjj4M=; b=da/jyPKiTj6SPVK7H9UaZIHRtNEshD+7ooV7RScJV9T2wWBriDA02th2+GP12CrbdNryplZ9qWvCu5ZLOGrG6SHOYvgW35ZMuGSswYdxotugcdwZweoBnK5HXAvWlgDYKdeWgFcpS908gtbta5vnP+BD6VB2KSK3y/9yHaYHoBo= Received: from SJ2PR01MB8635.prod.exchangelabs.com (2603:10b6:a03:57b::16) by IA0PR01MB8253.prod.exchangelabs.com (2603:10b6:208:48e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.24; Wed, 26 Jul 2023 12:54:52 +0000 Received: from SJ2PR01MB8635.prod.exchangelabs.com ([fe80::4c34:715d:c446:7fc5]) by SJ2PR01MB8635.prod.exchangelabs.com ([fe80::4c34:715d:c446:7fc5%5]) with mapi id 15.20.6609.032; Wed, 26 Jul 2023 12:54:52 +0000 From: Hao Liu OS To: Richard Sandiford , Richard Biener CC: "GCC-patches@gcc.gnu.org" Subject: Re: [PATCH] AArch64: Do not increase the vect reduction latency by multiplying count [PR110625] Thread-Topic: [PATCH] AArch64: Do not increase the vect reduction latency by multiplying count [PR110625] Thread-Index: AQHZuflIfzSQE63nDUGU9bz2B+2yKq/Iyx9zgAFtZ+aAAAyoV4ABDpZUgABz54CAAAd444AAOh/T Date: Wed, 26 Jul 2023 12:54:52 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US, zh-CN 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=2023-07-26T12:54:49.758Z;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: SJ2PR01MB8635:EE_|IA0PR01MB8253:EE_ x-ms-office365-filtering-correlation-id: 416e570a-3808-4cc3-6364-08db8dd780d0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8EwUTTK8nHGyLnHID5c7pNX1TJQXZR8raa5K6as2yLYhMsBy/0G5DYTgBgnIhNfdEzyIWqfFS8XUobwYrrt2fUul93t4G+3AV9xAFD0GVZQ2iTSQsIUwGsIuJ1Kt8bXhIVmZ6O8MCaIkOxtFbAtQe0CL57neRtbblM8GJwI97+eNS5ryP67xWO+nZ4sBxqLplfQy6pdaOHjo7FQCei9w/x+Ilw7TOoQKeMF75Jo6LTT0xZzWwr/RqGmr9/6mmT3rEEQxg3ozaiisqnW4cRK6K0i5KN2IEZX+R8tiIHySKR+t62DcuBlhFrHFgM3kaSIhA4JQGNYKk3T/uhDkaMXi0t8oUagEPqV5A5Eq7RILzyMv7lpzYd6KgqZvnmq8NyEMh5e2MMWv6s+xAcJ9JuefodGpxOSRDAhQRQ3Iomc6cus50ZUYMbmbwafn0kpyEyel0Egy04ydtAvf+WBPtvIuQ0UpmFHjSOE2I5Ii4O0Ic9k3AR48P+CTaxmGkFkBR9aBrJu6a9scqFs+DYCftcFrg1Y+kgL9r5EHA0QcJRQaP0w33vEypcSWeDILmxpAkEkEdbehkOnGhDt2xVTfR/YOKVFSoRHy5KODDCpCwAeemCk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR01MB8635.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(346002)(376002)(366004)(136003)(39850400004)(451199021)(2906002)(41300700001)(38070700005)(110136005)(478600001)(8936002)(66899021)(52536014)(8676002)(5660300002)(66476007)(66556008)(91956017)(66446008)(76116006)(64756008)(66946007)(55016003)(4326008)(33656002)(86362001)(26005)(316002)(84970400001)(122000001)(71200400001)(186003)(6506007)(53546011)(9686003)(83380400001)(7696005)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZE1pWXV0Q2EwejhYTzRvbDR2OEZsNmNaaFhyMTNxcUJ3ZmZvK0lMTGZYYWxX?= =?utf-8?B?UlVTa1BXU0twdTB5SW9tUDJmUVhseFJUNWdubEliWEFvQ3JpT3dWdXl3bWJk?= =?utf-8?B?V3RMcVdFaE1Zc2R4TVg0SUUyQjVUQnNmTnZXR1hmQk5sRDNOMnhCQWQ2R2NQ?= =?utf-8?B?R1QxTWV2VGYxcHZLa2lNQ1dFTlBnakZ4VG5mNUtVdHlVWnFlYlhqcnFZdllC?= =?utf-8?B?OHZHVWRxOEFYc1NUdzBHWURBbXgwN3R3c2RjRkJ3K2ZBUlBDZXVIRVNIWEph?= =?utf-8?B?MHA3eERNUDZRUktWR1MvQ3hETitZT0FiUTBIVWlJRnJUOWNBbHg1Y2RBczlj?= =?utf-8?B?dTg0c1NUN0dkT3pseE1MRENZM1cyckxkSHpTWVhYZFhoSkRXeDBtTW1nZGVl?= =?utf-8?B?d3FpU2ZiUzJEWEYxRnNlbC9XajdnTFQyL1lXNFVsQzZwU1Yrbnd0WW56VmdX?= =?utf-8?B?d3pFQjJicjZMc1U0cU1uVldEbnMweU5HZDhxdUJpOVFjUkFKOVBHUlNiZzVa?= =?utf-8?B?bWJnNUZUaXNEd0FCU0lDcmU4WFBrTEJ6c3dQamV4azJXNWNRUWxEL2owclA3?= =?utf-8?B?VUJIeWI3THZnclNZV3VOeHpyZVZIUVFmejdRUUdONGZnVFExL3ZMbzRlNXZY?= =?utf-8?B?a255TTlTMGplbXJIMW5HV1BxeHR4K0NTRGJIQWROUlpTNUhSeEU2M2dLMDg4?= =?utf-8?B?WUlyMG9HTWNRM1cvNUFYTWN1QmpQTWcwRnJkOW1FWlFyeExiaWlyRC9UdUo1?= =?utf-8?B?RlNjN0xaTDdMQ0I4UmtKQUdPZGIxRVdhL05DamFLTS9TcDFsSnVvZGN1Mnpi?= =?utf-8?B?TUt1TzY5Unk1NzJXMkd5R1h2Z283eDVnbUUxc2tKYmxHQlVjVHNMRVBVcHNy?= =?utf-8?B?WFdFYjRRNC9ydW5yTWtPcW9MYXdDUnR0NmMrZFpkSFNCMWFRMW1jc1EyTGky?= =?utf-8?B?SVg3cFNZMEhEdGxjOHFWUndTTEE1SExnUG53Wk9Cc2ZYcURBOENhSDZOc0w1?= =?utf-8?B?eW1TS2pJUnZ3Y3RyZ2c3YUpPdnRVcHpUQzBRbDJJbGJyMmZhMGNZR3FYbk5U?= =?utf-8?B?NHZBbDYzZTU4UjhTVVYxbUxQUGpCTHdZQXNScDlQNmx3eEdZSHZLdlhmU21u?= =?utf-8?B?dG0ySS91RDR0VUJUdGY4SFEvWlZRcUI1K0ZnN29yZjhLWVhISmFoQlNhVjZR?= =?utf-8?B?R3AzQ1lpYmtPSC9LNEk3T0VBZXd5WGNWWkx6TnlJZVRwYUdQTGd4b3dsM1h4?= =?utf-8?B?YjRydmx1NHptVzY4a01PaGNXdnY5ejE1NlpaTGh5UnU5N3UxMjEwU2Z6UXFv?= =?utf-8?B?QW95ZDVHc0pzNURsUGNaT25IUXYyUHk4VlFpbjFIcnZreUErM1A5V2NiRzIw?= =?utf-8?B?OEYzRTNWcUJrYnJ0SzZQV3JKc09LazVXNUUzWi9JVlFzMnRYOE5oRFgzVlg4?= =?utf-8?B?UTJNb3A3THMyaDB5UEdhTDhEZ0hkZkhvSWdUTWlNSGR4Q29HQ2QvdGMxaXI2?= =?utf-8?B?eDZDNkFWZTdEUlREaHNIckNFRXA4UHZGMGhYRlNEV2FpMEtRU0RJaFk0emE4?= =?utf-8?B?UmdvV05Wd3cvZUFha3gzRytKRk9EaWFsVHZuNmZYNE5hNXhNSVQrTGJ4RzBX?= =?utf-8?B?Qyt6Rks1V0ZQZk0xYXhaT1VoMS9teG5TVHN1aEpxcWVzNzNnVnF2Uk9GTExN?= =?utf-8?B?TWx1enNvQ0VUT1lwV2RLc0ZzbnRsVmNsdlFpRzhHVkZubVVlUitKY3llaU5U?= =?utf-8?B?TThuZWZ1NHJ1dkNQT2JjQ29JbVBKa0tIV1dmWlQrSFBXK0ljd1pDZ3gxMGpj?= =?utf-8?B?Yzh6TFFydE1xS2xsOHBKNGQvT1YzOTNyQnNDUC90M29EQytVRnRoblAwM3gy?= =?utf-8?B?eU9sekVCd25zQWVRS0p0bFJUUEh5U0ZLTnpSNjBieFZJTmZVckZLZkpONGZO?= =?utf-8?B?ZVJON1hKSUViUVdveVZMb0ZQN3UxM2FiTENyMUtuVzBja1RSSU05bFM3cEJr?= =?utf-8?B?WEg4cnlOaWNsSHg0RDZNcjh2bklTVStDK2hEeXdzekhpbkZEMldKWnRjWEhz?= =?utf-8?B?L0pZYWpKQ0JoR1phV1g1NGxNL0ltYjNWem1YK0ZHMVQ0blVybzB5b3RsMlNG?= =?utf-8?B?L2ZrRE0vTjBNcGVmQTdOK24xbGZ4aW9OdTh6OTdFSkJHVXNZSTVsUm1UYTcr?= =?utf-8?B?Ync9PQ==?= 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: SJ2PR01MB8635.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 416e570a-3808-4cc3-6364-08db8dd780d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jul 2023 12:54:52.1178 (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: rA0pN196cE/Is70Mx/lmg9y6U0+w44iCJx2bbmFM1UrkuXGsTcQbOmJQnFmmBPymWZ9fOXIrS7DylI+UBl6Lo72AgNmAceGvZ8+a0HrW237ywq0YhL1pZGQoA+q1hTwK X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR01MB8253 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK 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: PiBBaCwgdGhhbmtzLiAgSW4gdGhhdCBjYXNlLCBIYW8sIEkgdGhpbmsgd2UgY2FuIGF2b2lkIHRo ZSBJQ0UgYnkgY2hhbmdpbmc6DQo+DQo+ICAgaWYgKChraW5kID09IHNjYWxhcl9zdG10IHx8IGtp bmQgPT0gdmVjdG9yX3N0bXQgfHwga2luZCA9PSB2ZWNfdG9fc2NhbGFyKQ0KPiAgICAgICAmJiB2 ZWN0X2lzX3JlZHVjdGlvbiAoc3RtdF9pbmZvKSkNCj4NCj4gdG86DQo+DQo+ICAgaWYgKChraW5k ID09IHNjYWxhcl9zdG10IHx8IGtpbmQgPT0gdmVjdG9yX3N0bXQgfHwga2luZCA9PSB2ZWNfdG9f c2NhbGFyKQ0KPiAgICAgICAmJiBTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKQ0KPiAgICAg ICAmJiB2ZWN0X2lzX3JlZHVjdGlvbiAoc3RtdF9pbmZvKSkNCg0KSSAgdHJpZWQgdGhpcyBhbmQg aXQgaW5kZWVkIGNhbiBhdm9pZCBJQ0UuICBCdXQgaXQgc2VlbXMgdGhlIHJlZHVjdGlvbl9sYXRl bmN5IGNhbGN1bGF0aW9uIGlzIGFsc28gc2tpcHBlZCwgYWZ0ZXIgc3VjaCBtb2RpZmljYXRpb24s IHRoZSByZWR1bmN0aW9uX2xhdGVuY3kgaXMgMCBmb3IgdGhpcyBjYXNlLiBQcmV2aW91c2x5LCBp dCBpcyAxIGFuZCAyIGZvciBzY2FsYXIgYW5kIHZlY3RvciBzZXBhcmF0ZWx5Lg0KDQpJTUhPLCB0 byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCBwcmV2aW91cyByZXN1bHQsIHNob3VsZCB3ZSBtb3Zl IFNUTVRfVklORk9fTElWRV9QIGNoZWNrIGJlbG93IGFuZCBpbnNpZGUgdGhlIGlmPyBzdWNoIGFz Og0KDQogIC8qIENhbGN1bGF0ZSB0aGUgbWluaW11bSBjeWNsZXMgcGVyIGl0ZXJhdGlvbiBpbXBv c2VkIGJ5IGEgcmVkdWN0aW9uDQogICAgIG9wZXJhdGlvbi4gICovDQogIGlmICgoa2luZCA9PSBz Y2FsYXJfc3RtdCB8fCBraW5kID09IHZlY3Rvcl9zdG10IHx8IGtpbmQgPT0gdmVjX3RvX3NjYWxh cikNCiAgICAgICYmIHZlY3RfaXNfcmVkdWN0aW9uIChzdG10X2luZm8pKQ0KICAgIHsNCiAgICAg IHVuc2lnbmVkIGludCBiYXNlDQogICAgICAgID0gYWFyY2g2NF9pbl9sb29wX3JlZHVjdGlvbl9s YXRlbmN5IChtX3ZpbmZvLCBzdG10X2luZm8sIG1fdmVjX2ZsYWdzKTsNCiAgICAgIGlmIChTVE1U X1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKSAmJiBTVE1UX1ZJTkZPX0ZPUkNFX1NJTkdMRV9DWUNM RSAoDQogICAgICAgICAgICBpbmZvX2Zvcl9yZWR1Y3Rpb24gKG1fdmluZm8sIHN0bXRfaW5mbykp KQ0KICAgICAgICAvKiA/Pz8gSWRlYWxseSB3ZSdkIHVzZSBhIHRyZWUgdG8gcmVkdWNlIHRoZSBj b3BpZXMgZG93biB0byAxIHZlY3RvciwNCiAgICAgICAgICAgYW5kIHRoZW4gYWNjdW11bGF0ZSB0 aGF0LCBidXQgYXQgdGhlIG1vbWVudCB0aGUgbG9vcC1jYXJyaWVkDQogICAgICAgICAgIGRlcGVu ZGVuY3kgaW5jbHVkZXMgYWxsIGNvcGllcy4gICovDQogICAgICAgIG9wcy0+cmVkdWN0aW9uX2xh dGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UgKiBjb3VudCk7DQogICAg ICBlbHNlDQogICAgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0 aW9uX2xhdGVuY3ksIGJhc2UpOw0KDQpUaGFua3MsDQpIYW8NCg0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXw0KRnJvbTogUmljaGFyZCBTYW5kaWZvcmQgPHJpY2hhcmQu c2FuZGlmb3JkQGFybS5jb20+DQpTZW50OiBXZWRuZXNkYXksIEp1bHkgMjYsIDIwMjMgMTc6MTQN ClRvOiBSaWNoYXJkIEJpZW5lcg0KQ2M6IEhhbyBMaXUgT1M7IEdDQy1wYXRjaGVzQGdjYy5nbnUu b3JnDQpTdWJqZWN0OiBSZTogW1BBVENIXSBBQXJjaDY0OiBEbyBub3QgaW5jcmVhc2UgdGhlIHZl Y3QgcmVkdWN0aW9uIGxhdGVuY3kgYnkgbXVsdGlwbHlpbmcgY291bnQgW1BSMTEwNjI1XQ0KDQpS aWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IHdyaXRlczoNCj4gT24g V2VkLCBKdWwgMjYsIDIwMjMgYXQgNDowMuKAr0FNIEhhbyBMaXUgT1MgdmlhIEdjYy1wYXRjaGVz DQo+IDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+Pg0KPj4gPiBXaGVuIHdhcyBT VE1UX1ZJTkZPX1JFRFVDX0RFRiBlbXB0eT8gIEkganVzdCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0 IHdlJ3JlIG5vdCBwYXBlcmluZyBvdmVyIGFuIGlzc3VlIGVsc2V3aGVyZS4NCj4+DQo+PiBZZXMs IEkgYWxzbyB3b25kZXIgaWYgdGhpcyBpcyBhbiBpc3N1ZSBpbiB2ZWN0b3JpemFibGVfcmVkdWN0 aW9uLiAgQmVsb3cgaXMgdGhlIHRoZSBnaW1wbGUgb2YgImdjYy50YXJnZXQvYWFyY2g2NC9zdmUv Y29zdF9tb2RlbF8xMy5jIjoNCj4+DQo+PiAgIDxiYiAzPjoNCj4+ICAgIyByZXNfMTggPSBQSEkg PHJlc18xNSg3KSwgMCg2KT4NCj4+ICAgIyBpXzIwID0gUEhJIDxpXzE2KDcpLCAwKDYpPg0KPj4g ICBfMSA9IChsb25nIHVuc2lnbmVkIGludCkgaV8yMDsNCj4+ICAgXzIgPSBfMSAqIDI7DQo+PiAg IF8zID0geF8xNChEKSArIF8yOw0KPj4gICBfNCA9ICpfMzsNCj4+ICAgXzUgPSAodW5zaWduZWQg c2hvcnQpIF80Ow0KPj4gICByZXMuMF82ID0gKHVuc2lnbmVkIHNob3J0KSByZXNfMTg7DQo+PiAg IF83ID0gXzUgKyByZXMuMF82OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tIFRoZSBj dXJyZW50IHN0bXRfaW5mbw0KPj4gICByZXNfMTUgPSAoc2hvcnQgaW50KSBfNzsNCj4+ICAgaV8x NiA9IGlfMjAgKyAxOw0KPj4gICBpZiAobl8xMShEKSA+IGlfMTYpDQo+PiAgICAgZ290byA8YmIg Nz47DQo+PiAgIGVsc2UNCj4+ICAgICBnb3RvIDxiYiA0PjsNCj4+DQo+PiAgIDxiYiA3PjoNCj4+ ICAgZ290byA8YmIgMz47DQo+Pg0KPj4gSXQgbG9va3MgbGlrZSB0aGF0IFNUTVRfVklORk9fUkVE VUNfREVGIHNob3VsZCBiZSAicmVzXzE4ID0gUEhJIDxyZXNfMTUoNyksIDAoNik+Ij8NCj4+IFRo ZSBzdGF0dXMgaGVyZSBpczoNCj4+ICAgU1RNVF9WSU5GT19SRURVQ19JRFggKHN0bXRfaW5mbyk6 IDENCj4+ICAgU1RNVF9WSU5GT19SRURVQ19UWVBFIChzdG10X2luZm8pOiBUUkVFX0NPREVfUkVE VUNUSU9ODQo+PiAgIFNUTVRfVklORk9fUkVEVUNfVkVDVFlQRSAoc3RtdF9pbmZvKTogMHgwDQo+ DQo+IE5vdCBhbGwgc3RtdHMgaW4gdGhlIFNTQSBjeWNsZSBmb3JtaW5nIHRoZSByZWR1Y3Rpb24g aGF2ZQ0KPiBTVE1UX1ZJTkZPX1JFRFVDX0RFRiBzZXQsDQo+IG9ubHkgdGhlIGxhc3QgKGxhdGNo IGRlZikgYW5kIGxpdmUgc3RtdHMgaGF2ZSBhdCB0aGUgbW9tZW50Lg0KDQpBaCwgdGhhbmtzLiAg SW4gdGhhdCBjYXNlLCBIYW8sIEkgdGhpbmsgd2UgY2FuIGF2b2lkIHRoZSBJQ0UgYnkgY2hhbmdp bmc6DQoNCiAgaWYgKChraW5kID09IHNjYWxhcl9zdG10IHx8IGtpbmQgPT0gdmVjdG9yX3N0bXQg fHwga2luZCA9PSB2ZWNfdG9fc2NhbGFyKQ0KICAgICAgJiYgdmVjdF9pc19yZWR1Y3Rpb24gKHN0 bXRfaW5mbykpDQoNCnRvOg0KDQogIGlmICgoa2luZCA9PSBzY2FsYXJfc3RtdCB8fCBraW5kID09 IHZlY3Rvcl9zdG10IHx8IGtpbmQgPT0gdmVjX3RvX3NjYWxhcikNCiAgICAgICYmIFNUTVRfVklO Rk9fTElWRV9QIChzdG10X2luZm8pDQogICAgICAmJiB2ZWN0X2lzX3JlZHVjdGlvbiAoc3RtdF9p bmZvKSkNCg0KaW5zdGVhZCBvZiB1c2luZyBhIG51bGwgY2hlY2suDQoNCkkgc2VlIHRoYXQgdmVj dG9yaXphYmxlX3JlZHVjdGlvbiBjYWxjdWxhdGVzIGEgcmVkdWNfY2hhaW5fbGVuZ3RoLg0KV291 bGQgaXQgYmUgT0sgdG8gc3RvcmUgdGhhdCBpbiB0aGUgc3RtdF92ZWNfaW5mbz8gIEkgc3VwcG9z ZSB0aGUNCkFBcmNoNjQgY29kZSBzaG91bGQgYmUgbXVsdGlwbHlpbmcgYnkgdGhhdCBhcyB3ZWxs LiAgKEl0IHdvdWxkIGJlIGENCnNlcGFyYXRlIHBhdGNoIGZyb20gdGhpcyBvbmUgdGhvdWdoLikN Cg0KUmljaGFyZA0KDQoNCj4NCj4gUmljaGFyZC4NCj4NCj4+IFRoYW5rcywNCj4+IEhhbw0KPj4N Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IEZyb206IFJp Y2hhcmQgU2FuZGlmb3JkIDxyaWNoYXJkLnNhbmRpZm9yZEBhcm0uY29tPg0KPj4gU2VudDogVHVl c2RheSwgSnVseSAyNSwgMjAyMyAxNzo0NA0KPj4gVG86IEhhbyBMaXUgT1MNCj4+IENjOiBHQ0Mt cGF0Y2hlc0BnY2MuZ251Lm9yZw0KPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gQUFyY2g2NDogRG8g bm90IGluY3JlYXNlIHRoZSB2ZWN0IHJlZHVjdGlvbiBsYXRlbmN5IGJ5IG11bHRpcGx5aW5nIGNv dW50IFtQUjExMDYyNV0NCj4+DQo+PiBIYW8gTGl1IE9TIDxobGl1QG9zLmFtcGVyZWNvbXB1dGlu Zy5jb20+IHdyaXRlczoNCj4+ID4gSGksDQo+PiA+DQo+PiA+IFRoYW5rcyBmb3IgdGhlIHN1Z2dl c3Rpb24uICBJIHRlc3RlZCBpdCBhbmQgZm91bmQgYSBnY2NfYXNzZXJ0IGZhaWx1cmU6DQo+PiA+ ICAgICBnY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2Nvc3RfbW9kZWxfMTMuYyAoaW50ZXJuYWwgY29t cGlsZXIgZXJyb3I6IGluIGluZm9fZm9yX3JlZHVjdGlvbiwgYXQgdHJlZS12ZWN0LWxvb3AuY2M6 NTQ3MykNCj4+ID4NCj4+ID4gSXQgaXMgY2F1c2VkIGJ5IGVtcHR5IFNUTVRfVklORk9fUkVEVUNf REVGLg0KPj4NCj4+IFdoZW4gd2FzIFNUTVRfVklORk9fUkVEVUNfREVGIGVtcHR5PyAgSSBqdXN0 IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQNCj4+IHdlJ3JlIG5vdCBwYXBlcmluZyBvdmVyIGFuIGlz c3VlIGVsc2V3aGVyZS4NCj4+DQo+PiBUaGFua3MsDQo+PiBSaWNoYXJkDQo+Pg0KPj4gICBTbywg SSBhZGRlZCBhbiBleHRyYSBjaGVjayBiZWZvcmUgY2hlY2tpbmcgc2luZ2xlX2RlZnVzZV9jeWNs ZS4gVGhlIHVwZGF0ZWQgcGF0Y2ggaXMgYmVsb3cuICBJcyBpdCBPSyBmb3IgdHJ1bms/DQo+PiA+ DQo+PiA+IC0tLQ0KPj4gPg0KPj4gPiBUaGUgbmV3IGNvc3RzIHNob3VsZCBvbmx5IGNvdW50IHJl ZHVjdGlvbiBsYXRlbmN5IGJ5IG11bHRpcGx5aW5nIGNvdW50IGZvcg0KPj4gPiBzaW5nbGVfZGVm dXNlX2N5Y2xlLiAgRm9yIG90aGVyIHNpdHVhdGlvbnMsIHRoaXMgd2lsbCBpbmNyZWFzZSB0aGUg cmVkdWN0aW9uDQo+PiA+IGxhdGVuY3kgYSBsb3QgYW5kIG1pc3MgdmVjdG9yaXphdGlvbiBvcHBv cnR1bml0aWVzLg0KPj4gPg0KPj4gPiBUZXN0ZWQgb24gYWFyY2g2NC1saW51eC1nbnUuDQo+PiA+ DQo+PiA+IGdjYy9DaGFuZ2VMb2c6DQo+PiA+DQo+PiA+ICAgICAgIFBSIHRhcmdldC8xMTA2MjUN Cj4+ID4gICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIChjb3VudF9vcHMpOiBPbmx5 ICcqIGNvdW50JyBmb3INCj4+ID4gICAgICAgc2luZ2xlX2RlZnVzZV9jeWNsZSB3aGlsZSBjb3Vu dGluZyByZWR1Y3Rpb25fbGF0ZW5jeS4NCj4+ID4NCj4+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6DQo+PiA+DQo+PiA+ICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYzog TmV3IHRlc3RjYXNlLg0KPj4gPiAgICAgICAqIGdjYy50YXJnZXQvYWFyY2g2NC9wcjExMDYyNV8y LmM6IE5ldyB0ZXN0Y2FzZS4NCj4+ID4gLS0tDQo+PiA+ICBnY2MvY29uZmlnL2FhcmNoNjQvYWFy Y2g2NC5jYyAgICAgICAgICAgICAgICAgfCAxMyArKysrLS0NCj4+ID4gIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysN Cj4+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYyB8IDE0 ICsrKysrKw0KPj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQ0KPj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3ByMTEwNjI1XzEuYw0KPj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYw0KPj4gPg0KPj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5jYw0KPj4gPiBpbmRleCA1NjBlNTQzMTYzNi4uNDc4YTRlMDAxMTAgMTAwNjQ0DQo+ PiA+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQo+PiA+ICsrKyBiL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQo+PiA+IEBAIC0xNjc4OCwxMCArMTY3ODgsMTUgQEAg YWFyY2g2NF92ZWN0b3JfY29zdHM6OmNvdW50X29wcyAodW5zaWduZWQgaW50IGNvdW50LCB2ZWN0 X2Nvc3RfZm9yX3N0bXQga2luZCwNCj4+ID4gICAgICB7DQo+PiA+ICAgICAgICB1bnNpZ25lZCBp bnQgYmFzZQ0KPj4gPiAgICAgICA9IGFhcmNoNjRfaW5fbG9vcF9yZWR1Y3Rpb25fbGF0ZW5jeSAo bV92aW5mbywgc3RtdF9pbmZvLCBtX3ZlY19mbGFncyk7DQo+PiA+IC0NCj4+ID4gLSAgICAgIC8q ID8/PyBJZGVhbGx5IHdlJ2QgZG8gQ09VTlQgcmVkdWN0aW9ucyBpbiBwYXJhbGxlbCwgYnV0IHVu Zm9ydHVuYXRlbHkNCj4+ID4gLSAgICAgIHRoYXQncyBub3QgeWV0IHRoZSBjYXNlLiAgKi8NCj4+ ID4gLSAgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xh dGVuY3ksIGJhc2UgKiBjb3VudCk7DQo+PiA+ICsgICAgICBpZiAoU1RNVF9WSU5GT19SRURVQ19E RUYgKHN0bXRfaW5mbykNCj4+ID4gKyAgICAgICAmJiBTVE1UX1ZJTkZPX0ZPUkNFX1NJTkdMRV9D WUNMRSAoDQo+PiA+ICsgICAgICAgICBpbmZvX2Zvcl9yZWR1Y3Rpb24gKG1fdmluZm8sIHN0bXRf aW5mbykpKQ0KPj4gPiArICAgICAvKiA/Pz8gSWRlYWxseSB3ZSdkIHVzZSBhIHRyZWUgdG8gcmVk dWNlIHRoZSBjb3BpZXMgZG93biB0byAxIHZlY3RvciwNCj4+ID4gKyAgICAgICAgYW5kIHRoZW4g YWNjdW11bGF0ZSB0aGF0LCBidXQgYXQgdGhlIG1vbWVudCB0aGUgbG9vcC1jYXJyaWVkDQo+PiA+ ICsgICAgICAgIGRlcGVuZGVuY3kgaW5jbHVkZXMgYWxsIGNvcGllcy4gICovDQo+PiA+ICsgICAg IG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJh c2UgKiBjb3VudCk7DQo+PiA+ICsgICAgICBlbHNlDQo+PiA+ICsgICAgIG9wcy0+cmVkdWN0aW9u X2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UpOw0KPj4gPiAgICAg IH0NCj4+ID4NCj4+ID4gICAgLyogQXNzdW1lIHRoYXQgbXVsdGlwbHktYWRkcyB3aWxsIGJlY29t ZSBhIHNpbmdsZSBvcGVyYXRpb24uICAqLw0KPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jDQo+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+ IGluZGV4IDAwMDAwMDAwMDAwLi4wOTY1Y2FjMzNhMA0KPj4gPiAtLS0gL2Rldi9udWxsDQo+PiA+ ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYw0KPj4g PiBAQCAtMCwwICsxLDQ2IEBADQo+PiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4gPiAr LyogeyBkZy1vcHRpb25zICItT2Zhc3QgLW1jcHU9bmVvdmVyc2UtbjIgLWZkdW1wLXRyZWUtdmVj dC1kZXRhaWxzIC1mbm8tdHJlZS1zbHAtdmVjdG9yaXplIiB9ICovDQo+PiA+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJyZWR1Y3Rpb24gbGF0ZW5jeSA9IDgiICJ2ZWN0IiB9 IH0gKi8NCj4+ID4gKw0KPj4gPiArLyogRG8gbm90IGluY3JlYXNlIHRoZSB2ZWN0b3IgYm9keSBj b3N0IGR1ZSB0byB0aGUgaW5jb3JyZWN0IHJlZHVjdGlvbiBsYXRlbmN5DQo+PiA+ICsgICAgT3Jp Z2luYWwgdmVjdG9yIGJvZHkgY29zdCA9IDUxDQo+PiA+ICsgICAgU2NhbGFyIGlzc3VlIGVzdGlt YXRlOg0KPj4gPiArICAgICAgLi4uDQo+PiA+ICsgICAgICByZWR1Y3Rpb24gbGF0ZW5jeSA9IDIN Cj4+ID4gKyAgICAgIGVzdGltYXRlZCBtaW4gY3ljbGVzIHBlciBpdGVyYXRpb24gPSAyLjAwMDAw MA0KPj4gPiArICAgICAgZXN0aW1hdGVkIGN5Y2xlcyBwZXIgdmVjdG9yIGl0ZXJhdGlvbiAoZm9y IFZGIDIpID0gNC4wMDAwMDANCj4+ID4gKyAgICBWZWN0b3IgaXNzdWUgZXN0aW1hdGU6DQo+PiA+ ICsgICAgICAuLi4NCj4+ID4gKyAgICAgIHJlZHVjdGlvbiBsYXRlbmN5ID0gOCAgICAgIDwtLSBU b28gbGFyZ2UNCj4+ID4gKyAgICAgIGVzdGltYXRlZCBtaW4gY3ljbGVzIHBlciBpdGVyYXRpb24g PSA4LjAwMDAwMA0KPj4gPiArICAgIEluY3JlYXNpbmcgYm9keSBjb3N0IHRvIDEwMiBiZWNhdXNl IHNjYWxhciBjb2RlIHdvdWxkIGlzc3VlIG1vcmUgcXVpY2tseQ0KPj4gPiArICAgICAgLi4uDQo+ PiA+ICsgICAgbWlzc2VkOiAgY29zdCBtb2RlbDogdGhlIHZlY3RvciBpdGVyYXRpb24gY29zdCA9 IDEwMiBkaXZpZGVkIGJ5IHRoZSBzY2FsYXIgaXRlcmF0aW9uIGNvc3QgPSA0NCBpcyBncmVhdGVy IG9yIGVxdWFsIHRvIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3RvciA9IDIuDQo+PiA+ICsgICAgbWlz c2VkOiAgbm90IHZlY3Rvcml6ZWQ6IHZlY3Rvcml6YXRpb24gbm90IHByb2ZpdGFibGUuICAqLw0K Pj4gPiArDQo+PiA+ICt0eXBlZGVmIHN0cnVjdA0KPj4gPiArew0KPj4gPiArICB1bnNpZ25lZCBz aG9ydCBtMSwgbTIsIG0zLCBtNDsNCj4+ID4gK30gdGhlX3N0cnVjdF90Ow0KPj4gPiArdHlwZWRl ZiBzdHJ1Y3QNCj4+ID4gK3sNCj4+ID4gKyAgZG91YmxlIG0xLCBtMiwgbTMsIG00LCBtNTsNCj4+ ID4gK30gdGhlX3N0cnVjdDJfdDsNCj4+ID4gKw0KPj4gPiArZG91YmxlDQo+PiA+ICtiYXIgKHRo ZV9zdHJ1Y3QyX3QgKik7DQo+PiA+ICsNCj4+ID4gK2RvdWJsZQ0KPj4gPiArZm9vIChkb3VibGUg KmssIHVuc2lnbmVkIGludCBuLCB0aGVfc3RydWN0X3QgKnRoZV9zdHJ1Y3QpDQo+PiA+ICt7DQo+ PiA+ICsgIHVuc2lnbmVkIGludCB1Ow0KPj4gPiArICB0aGVfc3RydWN0Ml90IHJlc3VsdDsNCj4+ ID4gKyAgZm9yICh1ID0gMDsgdSA8IG47IHUrKywgay0tKQ0KPj4gPiArICAgIHsNCj4+ID4gKyAg ICAgIHJlc3VsdC5tMSArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMTsNCj4+ID4gKyAgICAgIHJl c3VsdC5tMiArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMjsNCj4+ID4gKyAgICAgIHJlc3VsdC5t MyArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMzsNCj4+ID4gKyAgICAgIHJlc3VsdC5tNCArPSAo KmspICogdGhlX3N0cnVjdFt1XS5tNDsNCj4+ID4gKyAgICB9DQo+PiA+ICsgIHJldHVybiBiYXIg KCZyZXN1bHQpOw0KPj4gPiArfQ0KPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvcHIxMTA2MjVfMi5jDQo+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+IGluZGV4 IDAwMDAwMDAwMDAwLi43YTg0YWE4MzU1ZQ0KPj4gPiAtLS0gL2Rldi9udWxsDQo+PiA+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYw0KPj4gPiBAQCAt MCwwICsxLDE0IEBADQo+PiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4gPiArLyogeyBk Zy1vcHRpb25zICItT2Zhc3QgLW1jcHU9bmVvdmVyc2UtbjIgLWZkdW1wLXRyZWUtdmVjdC1kZXRh aWxzIC1mbm8tdHJlZS1zbHAtdmVjdG9yaXplIiB9ICovDQo+PiA+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgInJlZHVjdGlvbiBsYXRlbmN5ID0gOCIgInZlY3QiIH0gfSAqLw0KPj4g PiArDQo+PiA+ICsvKiBUaGUgcmVkdWN0aW9uIGxhdGVuY3kgc2hvdWxkIGJlIG11bHRpcGxpZWQg YnkgdGhlIGNvdW50IGZvcg0KPj4gPiArICAgc2luZ2xlX2RlZnVzZV9jeWNsZS4gICovDQo+PiA+ ICsNCj4+ID4gK2xvbmcNCj4+ID4gK2YgKGxvbmcgcmVzLCBzaG9ydCAqcHRyMSwgc2hvcnQgKnB0 cjIsIGludCBuKQ0KPj4gPiArew0KPj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkN Cj4+ID4gKyAgICByZXMgKz0gKGxvbmcpIHB0cjFbaV0gPDwgcHRyMltpXTsNCj4+ID4gKyAgcmV0 dXJuIHJlczsNCj4+ID4gK30NCg==