From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by sourceware.org (Postfix) with ESMTPS id 16C2F3858D33 for ; Fri, 28 Jul 2023 10:06:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 16C2F3858D33 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=W1wZprk1LFKUaRQ2L8y1C57dBZjpDPdx9gsmMNWv9fTNQ4H2t2rSgaR+Lh3puaxOPZO5vYtb2CHviMzDsWDaChDY0VmWFkzBAAqIRGe9/gSHza+UbBbDC4hSoUnkuobc6nEOKXoBUerMkI+YBMsOyQR0RuUKbF6ekjP9rXvOcUq+FKd2tXPvTCnNY13+1l5axhuZf3mKnb4QVfv9rvD9SApOjl2TtEqTAFwAp8pJdYlbp8XaJP6j910+TzskXIhXdUGF+Yq5KxPioeKxGUewoCpWwZkWJaMYCIlngGa2h8dCMh6HQB/cIEdisN4C0DTYNEixEigeAK2ziCn/5oQcjw== 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=NaTAWYJVo/duT/o3P4QsslbH5CdL/Ifq/b1qRVeLwbI=; b=dIlPyF/3BnhMiueMCgJNsj/XFjmqJ92sWVjxGvkWh+6u5p7X5CEFFDlMXsy9WxQt27pPz6TL67KUXad8Nth4lr6inxnP9hcejw8ig680x2s8SXgi3HFnxwN5egi/2TgS7BlB2h9puiv7fDjaCkQZDEDBMUe69vCttPOd4z+aA6KT16RBsOR0GwgIY5dwQOq0/HL/SWhJrKRL9d3twAEYVzoJ1P8Ii1ofvjohoeX0KwExO6Nnqx/iQhzQuNOhSMbHqJuDmH+2U7k9BKnBdneHK2PkhBYuWFhNlKmujkS8T+RH6M8Qt6a6parq8LnN5epWy7hPvoH8arEgIBg9ZCWqmg== 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=NaTAWYJVo/duT/o3P4QsslbH5CdL/Ifq/b1qRVeLwbI=; b=t3+1jGMaRyrnroFjqX7idGQgcKT5pKZ6Z8rqUxUGmq+48im1nyK7Ub0ZDWWgTXKKAKaIEtsc5md8frHX+H6Mb9FLG/Usi0hoO7AGiWVblitSw9maH77s7nuEVnqnUMlUHvRDC1a/PZAcpO99lnAQJPGplBfRhGYDac9rM0U/kPY= Received: from SJ2PR01MB8635.prod.exchangelabs.com (2603:10b6:a03:57b::16) by SA1PR01MB8132.prod.exchangelabs.com (2603:10b6:806:33d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29; Fri, 28 Jul 2023 10:06:40 +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.6631.026; Fri, 28 Jul 2023 10:06:39 +0000 From: Hao Liu OS To: Richard Sandiford CC: "GCC-patches@gcc.gnu.org" , "richard.guenther@gmail.com" 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/TgAL4XjM= Date: Fri, 28 Jul 2023 10:06:39 +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-28T10:06:38.054Z;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_|SA1PR01MB8132:EE_ x-ms-office365-filtering-correlation-id: 4763ba8c-facd-4ab2-1b05-08db8f5255dc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dYYeXMHYfxmwXlMwWvhRhgSP2WLY7rHiMu46wlkfE8MD27Ihn0XTrRIP+p+Cot3D0sHBd7+2DF4G/eLeLSNCHnWNosqLmqRYswRJ195xKzpf+H/E3MIgPD95NHHRtTKdNwjk1wVQiI0csTxFfgY8URJwzk8Csh1pefyWsjQw4JO2fx5olc1o0eoOjHY9t1ogY/8/7/+Lndfo1ion7Bpi2Y1APYsOnfdG9t8jC29iez6l/vISJYUzTLKSteBfOdtt0C6iLbkSNwbypzV9kxPcDNJb7FHk/lahRf48kHCx3+kwU6tpy2nNzXr7ghwpXilDDAQ75MWN30ulQ3Xa6WRj5pix6PriOi31J314FCZ49fghUL1pC1AbFX/3upZEUbORvbp5vfg43RjwzCUTJxGBAbmAQjhaKvzGJH+kgu/wsmHCN60SlrmEaQ/UtRrBQQlOigJYJbblILi4cHNEjoCV71GWc8hZSfLC0pB9cs98+NbjVycSka5k1DUq597HRQkKZIu01iesa+y0QLQ/uo+3mHO3gIJ613Ely/A4jC30xP687ENr68z1XMQrvk0QEjOECtgvqWTUQ5ZMnNxBNxKM2fAAjvK3G7dSMus+xFE45jE= 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)(376002)(136003)(396003)(346002)(366004)(39850400004)(451199021)(2906002)(66899021)(316002)(8936002)(8676002)(52536014)(5660300002)(38070700005)(33656002)(41300700001)(30864003)(55016003)(86362001)(7696005)(71200400001)(122000001)(54906003)(26005)(478600001)(6506007)(53546011)(186003)(9686003)(84970400001)(83380400001)(66946007)(91956017)(76116006)(38100700002)(66556008)(66476007)(6916009)(64756008)(66446008)(4326008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WFN3UXBCVURPQkZHMVFNQVVZT0N0UU9qaFVHUjNPNHQ1RGEyUDJrVnRFTTNB?= =?utf-8?B?Ui83MXVmajRIb3A1eFpSdkwveitYV2Vmc0hWSWgvbVZvNUJxVHFrVlJ4N2FS?= =?utf-8?B?RXRHOWluK2tFL0I5cDM2Y0VmY2Z3dXYyak9EZUxLSFMwVjNiUSt4d0tweFhQ?= =?utf-8?B?WkJzVkxUU0dxQVNCR3ZCRkRnNk42c2JPZGVTS05BVFlJREk5SDVFWXBYN1dT?= =?utf-8?B?Q2ZDdUdKTzR2dmVNZVhvMGNKNFA0WHlTMDlxdE05OVBCTGZISXVjWFJZY082?= =?utf-8?B?QnBJQk1MTm9IYmxhN25TNFFRRWdyckNhcE1GUkQ0VEc1UExIcUVkZTVsMmVm?= =?utf-8?B?YnNJUDJMRTN4cVdPeXFlZmVRNUwrVUlYV2hsTGRlQ00zV254cHhZUUpqa29N?= =?utf-8?B?RnRCWDVXaWlnR1UwdzVqbUg3dDRLbnFCTUc0T21uUEQ5TGorZFM0K0VXN3Fo?= =?utf-8?B?S3pGdm13ZTd3c2FkT3AzdjNyVVRRRXhZWEFybFJLUlFmVm5xSjF3N01FbnVF?= =?utf-8?B?dUU5bGlNTjBETFVleDAxOFg4ZWE1akdVUjN5eTk2bTVyVnRuNHovZFdlQ0xO?= =?utf-8?B?UGtSenREcEpYaFpFbnhKclN5TEtCYTM2VkgvUDNIcGNBY25jZWdHaTYvcHdG?= =?utf-8?B?NFFQbm1QbzF2UUljYlQvUTVIZzlTaExpZGhkc1l5em9OQWxoQ0pOeHN5UzdL?= =?utf-8?B?bXhaN1N2alpaMTIwL3hTeVBWUEVuYzJwRGxuVS9zU3lPOHdmZWRZdTFRWVN6?= =?utf-8?B?R3AvbTNRMnBLNVJXVFZ5MkIwVXFhR09zbDNrMnk2U3Y2MXZvN2ZmUkNBcVFh?= =?utf-8?B?UFpFa09ybGovV05XaU42UmJPcWsvS0t5bDR5NGJkT2dENk15TUZhZWRrOUxL?= =?utf-8?B?YW01cHBsZjhzaWp5Y0ZwRGU3WmsxaFgyRUFqMXVtYmF6Si90UU9oSFNBS0ZG?= =?utf-8?B?VlFSb3lNWXF1bjRHM2FVTzdjWjc1TGdZUXFmY2tIazRiaWFMMnNPek56dXFm?= =?utf-8?B?T1EyRDZBc1NGS3EzcE5QTmN6Uk00OHc5TXRlS3hTaFgxa2k0dVBQdURIcDJs?= =?utf-8?B?aVBtSFMvd016YVZKTnRuWE5nU0xTV0NZYU9JcW9QSURSUzF0cDk0UklRRGVV?= =?utf-8?B?aklXTHJidEJPV05IZVdobDM1dTdkd0kwOHhxS1hSd1lhYjdmUVY2MVlycHM4?= =?utf-8?B?NzQvYm91WjJCM1crZUlDZHJaZVNPT2YyWElYcWR6cjU0Q0s1WVVFT1UrNEFs?= =?utf-8?B?Z3FNeTMvSldsaWY0QWttS1R1WVN4VUgrSHZORXhhc3RaRy81djVSSW5nQkI4?= =?utf-8?B?VVpQM1UvUDdlZmhLTTc2ME9Nc09hMFBiblRqaUZJRVZycFl4UmtwNmR1aHZK?= =?utf-8?B?Nmh3N2NuWGQ3ZEpaYWRmc1lwUXE3WkQ4S3lWeHQyTXdZTDNRSnpSNnVNR1lo?= =?utf-8?B?UjRjUE5STG9TRGhtblZFSktrNUJVejZNaVNqUDZBZWU1dXBXVmVBdXZIazV1?= =?utf-8?B?R25oTEJRQ1ZRSisvMStlVllBRDl2cHQ3R0dyWnA0RUNKc3BHRG9TMFgzLzl6?= =?utf-8?B?a05WWjlEaUpRMy82VzYybFpoVkRhODNKYndSbjVhZGNRR2FDY1hUMzVnNEFS?= =?utf-8?B?Q04xbXBoUGVmOEhZQ2ZLY0pkaHNYbUdPMVBtTHlxTGJtUWsvd1ZYZmVuTVNU?= =?utf-8?B?ZTZ6RzdXMjBRUkEvVzk4M0dxanpXMGd3U3FXNE1TbDR0R215NzBLVUlydjli?= =?utf-8?B?cE04UEk3Rnl5eU9FV0RPYXFKVi9KK0MxY2xheXZSTUpKS05GZFZTcEV4bjBw?= =?utf-8?B?T1doK2VlcGRmcUtLYStaN2Q3QWE3ODVTT3VCSTBmbzVTZXdmSnNjVmpJdG5E?= =?utf-8?B?R05NQzZiSXNYdzFuTUFDODdOVjA1Q2N1ODhFT2QyUjFtd3BJY2tDYUN2U3Uz?= =?utf-8?B?dk8yTVlZeHExUnRtNzJmN2FXVjF4Zms2SXkySkhva285ekd0K3Nyd1UvbU9y?= =?utf-8?B?L0F5U1hzS3cyOFlLSVUzQXN3Qy9VMnFrYmhOT0k0ak55dFNXUnAxczJ6UEU1?= =?utf-8?B?Q2ZkWjZmRXEycTlmRTNDenJaN2o0cWpWZlh3TEZQbDg5bldRVGc0cjlKQzNO?= =?utf-8?B?WHdiN1dsREZLeTVVMUd2QnBnNlFDUXNwYmNDK0t4dkVJeFhYd2lvSEN4eUQ0?= =?utf-8?B?U3c9PQ==?= 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: 4763ba8c-facd-4ab2-1b05-08db8f5255dc X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2023 10:06:39.3029 (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: LoNO7XqRANVjuBkz1gJEJY/tRIYggd/DKU7y+09tlBQKAw7Xw0Z3LsNT85bWWIiqryTnrMq7Ke6ssMVUP3yhnncqFkoPBx6Jrgzf7EaK0/z2isxWMv0bCIiLQ7xqHpEK X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR01MB8132 X-Spam-Status: No, score=-12.0 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 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: SGkgUmljaGFyZCwNCg0KSSd2ZSB1cGRhdGVkIHRoZSBwYXRjaCBhbmQgdGVzdGVkIG9uIGFhcmNo NjQuICBJcyBpdCBPSz8NCg0KLS0tDQoNClRoZSBuZXcgY29zdHMgc2hvdWxkIG9ubHkgY291bnQg cmVkdWN0aW9uIGxhdGVuY3kgYnkgbXVsdGlwbHlpbmcgY291bnQgZm9yDQpzaW5nbGVfZGVmdXNl X2N5Y2xlLiAgRm9yIG90aGVyIHNpdHVhdGlvbnMsIHRoaXMgd2lsbCBpbmNyZWFzZSB0aGUgcmVk dWN0aW9uDQpsYXRlbmN5IGEgbG90IGFuZCBtaXNzIHZlY3Rvcml6YXRpb24gb3Bwb3J0dW5pdGll cy4NCg0KVGVzdGVkIG9uIGFhcmNoNjQtbGludXgtZ251Lg0KDQpnY2MvQ2hhbmdlTG9nOg0KDQog ICAgICAgIFBSIHRhcmdldC8xMTA2MjUNCiAgICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0 LmNjIChjb3VudF9vcHMpOiBPbmx5ICcqIGNvdW50JyBmb3INCiAgICAgICAgc2luZ2xlX2RlZnVz ZV9jeWNsZSB3aGlsZSBjb3VudGluZyByZWR1Y3Rpb25fbGF0ZW5jeS4NCg0KZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2c6DQoNCiAgICAgICAgKiBnY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5j OiBOZXcgdGVzdGNhc2UuDQogICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIu YzogTmV3IHRlc3RjYXNlLg0KLS0tDQogZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgICAg ICAgICAgICAgICAgIHwgMTMgKysrKy0tDQogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvcHIxMTA2MjVfMS5jIHwgNDYgKysrKysrKysrKysrKysrKysrKw0KIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYyB8IDE0ICsrKysrKw0KIDMgZmlsZXMgY2hh bmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIu Yw0KDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5jYw0KaW5kZXggNTYwZTU0MzE2MzYuLjEwZTc2NjNjYzQyIDEw MDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MNCisrKyBiL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LmNjDQpAQCAtMTY3ODgsMTAgKzE2Nzg4LDE1IEBAIGFhcmNoNjRf dmVjdG9yX2Nvc3RzOjpjb3VudF9vcHMgKHVuc2lnbmVkIGludCBjb3VudCwgdmVjdF9jb3N0X2Zv cl9zdG10IGtpbmQsDQogICAgIHsNCiAgICAgICB1bnNpZ25lZCBpbnQgYmFzZQ0KICAgICAgICA9 IGFhcmNoNjRfaW5fbG9vcF9yZWR1Y3Rpb25fbGF0ZW5jeSAobV92aW5mbywgc3RtdF9pbmZvLCBt X3ZlY19mbGFncyk7DQotDQotICAgICAgLyogPz8/IElkZWFsbHkgd2UnZCBkbyBDT1VOVCByZWR1 Y3Rpb25zIGluIHBhcmFsbGVsLCBidXQgdW5mb3J0dW5hdGVseQ0KLSAgICAgICAgdGhhdCdzIG5v dCB5ZXQgdGhlIGNhc2UuICAqLw0KLSAgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVgg KG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UgKiBjb3VudCk7DQorICAgICAgaWYgKFNUTVRf VklORk9fTElWRV9QIChzdG10X2luZm8pDQorICAgICAgICAgJiYgU1RNVF9WSU5GT19GT1JDRV9T SU5HTEVfQ1lDTEUgKA0KKyAgICAgICAgICAgaW5mb19mb3JfcmVkdWN0aW9uIChtX3ZpbmZvLCBz dG10X2luZm8pKSkNCisgICAgICAgLyogPz8/IElkZWFsbHkgd2UnZCB1c2UgYSB0cmVlIHRvIHJl ZHVjZSB0aGUgY29waWVzIGRvd24gdG8gMSB2ZWN0b3IsDQorICAgICAgICAgIGFuZCB0aGVuIGFj Y3VtdWxhdGUgdGhhdCwgYnV0IGF0IHRoZSBtb21lbnQgdGhlIGxvb3AtY2FycmllZA0KKyAgICAg ICAgICBkZXBlbmRlbmN5IGluY2x1ZGVzIGFsbCBjb3BpZXMuICAqLw0KKyAgICAgICBvcHMtPnJl ZHVjdGlvbl9sYXRlbmN5ID0gTUFYIChvcHMtPnJlZHVjdGlvbl9sYXRlbmN5LCBiYXNlICogY291 bnQpOw0KKyAgICAgIGVsc2UNCisgICAgICAgb3BzLT5yZWR1Y3Rpb25fbGF0ZW5jeSA9IE1BWCAo b3BzLT5yZWR1Y3Rpb25fbGF0ZW5jeSwgYmFzZSk7DQogICAgIH0NCg0KICAgLyogQXNzdW1lIHRo YXQgbXVsdGlwbHktYWRkcyB3aWxsIGJlY29tZSBhIHNpbmdsZSBvcGVyYXRpb24uICAqLw0KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYw0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4wOTY1Y2FjMzNhMA0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jDQpA QCAtMCwwICsxLDQ2IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlv bnMgIi1PZmFzdCAtbWNwdT1uZW92ZXJzZS1uMiAtZmR1bXAtdHJlZS12ZWN0LWRldGFpbHMgLWZu by10cmVlLXNscC12ZWN0b3JpemUiIH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtbm90ICJyZWR1Y3Rpb24gbGF0ZW5jeSA9IDgiICJ2ZWN0IiB9IH0gKi8NCisNCisvKiBEbyBu b3QgaW5jcmVhc2UgdGhlIHZlY3RvciBib2R5IGNvc3QgZHVlIHRvIHRoZSBpbmNvcnJlY3QgcmVk dWN0aW9uIGxhdGVuY3kNCisgICAgT3JpZ2luYWwgdmVjdG9yIGJvZHkgY29zdCA9IDUxDQorICAg IFNjYWxhciBpc3N1ZSBlc3RpbWF0ZToNCisgICAgICAuLi4NCisgICAgICByZWR1Y3Rpb24gbGF0 ZW5jeSA9IDINCisgICAgICBlc3RpbWF0ZWQgbWluIGN5Y2xlcyBwZXIgaXRlcmF0aW9uID0gMi4w MDAwMDANCisgICAgICBlc3RpbWF0ZWQgY3ljbGVzIHBlciB2ZWN0b3IgaXRlcmF0aW9uIChmb3Ig VkYgMikgPSA0LjAwMDAwMA0KKyAgICBWZWN0b3IgaXNzdWUgZXN0aW1hdGU6DQorICAgICAgLi4u DQorICAgICAgcmVkdWN0aW9uIGxhdGVuY3kgPSA4ICAgICAgPC0tIFRvbyBsYXJnZQ0KKyAgICAg IGVzdGltYXRlZCBtaW4gY3ljbGVzIHBlciBpdGVyYXRpb24gPSA4LjAwMDAwMA0KKyAgICBJbmNy ZWFzaW5nIGJvZHkgY29zdCB0byAxMDIgYmVjYXVzZSBzY2FsYXIgY29kZSB3b3VsZCBpc3N1ZSBt b3JlIHF1aWNrbHkNCisgICAgICAuLi4NCisgICAgbWlzc2VkOiAgY29zdCBtb2RlbDogdGhlIHZl Y3RvciBpdGVyYXRpb24gY29zdCA9IDEwMiBkaXZpZGVkIGJ5IHRoZSBzY2FsYXIgaXRlcmF0aW9u IGNvc3QgPSA0NCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3Rv ciA9IDIuDQorICAgIG1pc3NlZDogIG5vdCB2ZWN0b3JpemVkOiB2ZWN0b3JpemF0aW9uIG5vdCBw cm9maXRhYmxlLiAgKi8NCisNCit0eXBlZGVmIHN0cnVjdA0KK3sNCisgIHVuc2lnbmVkIHNob3J0 IG0xLCBtMiwgbTMsIG00Ow0KK30gdGhlX3N0cnVjdF90Ow0KK3R5cGVkZWYgc3RydWN0DQorew0K KyAgZG91YmxlIG0xLCBtMiwgbTMsIG00LCBtNTsNCit9IHRoZV9zdHJ1Y3QyX3Q7DQorDQorZG91 YmxlDQorYmFyICh0aGVfc3RydWN0Ml90ICopOw0KKw0KK2RvdWJsZQ0KK2ZvbyAoZG91YmxlICpr LCB1bnNpZ25lZCBpbnQgbiwgdGhlX3N0cnVjdF90ICp0aGVfc3RydWN0KQ0KK3sNCisgIHVuc2ln bmVkIGludCB1Ow0KKyAgdGhlX3N0cnVjdDJfdCByZXN1bHQ7DQorICBmb3IgKHUgPSAwOyB1IDwg bjsgdSsrLCBrLS0pDQorICAgIHsNCisgICAgICByZXN1bHQubTEgKz0gKCprKSAqIHRoZV9zdHJ1 Y3RbdV0ubTE7DQorICAgICAgcmVzdWx0Lm0yICs9ICgqaykgKiB0aGVfc3RydWN0W3VdLm0yOw0K KyAgICAgIHJlc3VsdC5tMyArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMzsNCisgICAgICByZXN1 bHQubTQgKz0gKCprKSAqIHRoZV9zdHJ1Y3RbdV0ubTQ7DQorICAgIH0NCisgIHJldHVybiBiYXIg KCZyZXN1bHQpOw0KK30NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9wcjExMDYyNV8yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjEx MDYyNV8yLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uN2E4NGFh ODM1NWUNCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3ByMTEwNjI1XzIuYw0KQEAgLTAsMCArMSwxNCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovDQorLyogeyBkZy1vcHRpb25zICItT2Zhc3QgLW1jcHU9bmVvdmVyc2UtbjIgLWZkdW1wLXRy ZWUtdmVjdC1kZXRhaWxzIC1mbm8tdHJlZS1zbHAtdmVjdG9yaXplIiB9ICovDQorLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJyZWR1Y3Rpb24gbGF0ZW5jeSA9IDgiICJ2ZWN0IiB9IH0g Ki8NCisNCisvKiBUaGUgcmVkdWN0aW9uIGxhdGVuY3kgc2hvdWxkIGJlIG11bHRpcGxpZWQgYnkg dGhlIGNvdW50IGZvcg0KKyAgIHNpbmdsZV9kZWZ1c2VfY3ljbGUuICAqLw0KKw0KK2xvbmcNCitm IChsb25nIHJlcywgc2hvcnQgKnB0cjEsIHNob3J0ICpwdHIyLCBpbnQgbikNCit7DQorICBmb3Ig KGludCBpID0gMDsgaSA8IG47ICsraSkNCisgICAgcmVzICs9IChsb25nKSBwdHIxW2ldIDw8IHB0 cjJbaV07DQorICByZXR1cm4gcmVzOw0KK30NCi0tDQoyLjM0LjENCg0KDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQpGcm9tOiBIYW8gTGl1IE9TIDxobGl1QG9zLmFt cGVyZWNvbXB1dGluZy5jb20+DQpTZW50OiBXZWRuZXNkYXksIEp1bHkgMjYsIDIwMjMgMjA6NTQN ClRvOiBSaWNoYXJkIFNhbmRpZm9yZDsgUmljaGFyZCBCaWVuZXINCkNjOiBHQ0MtcGF0Y2hlc0Bn Y2MuZ251Lm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSF0gQUFyY2g2NDogRG8gbm90IGluY3JlYXNl IHRoZSB2ZWN0IHJlZHVjdGlvbiBsYXRlbmN5IGJ5IG11bHRpcGx5aW5nIGNvdW50IFtQUjExMDYy NV0NCg0KPiBBaCwgdGhhbmtzLiAgSW4gdGhhdCBjYXNlLCBIYW8sIEkgdGhpbmsgd2UgY2FuIGF2 b2lkIHRoZSBJQ0UgYnkgY2hhbmdpbmc6DQo+DQo+ICAgaWYgKChraW5kID09IHNjYWxhcl9zdG10 IHx8IGtpbmQgPT0gdmVjdG9yX3N0bXQgfHwga2luZCA9PSB2ZWNfdG9fc2NhbGFyKQ0KPiAgICAg ICAmJiB2ZWN0X2lzX3JlZHVjdGlvbiAoc3RtdF9pbmZvKSkNCj4NCj4gdG86DQo+DQo+ICAgaWYg KChraW5kID09IHNjYWxhcl9zdG10IHx8IGtpbmQgPT0gdmVjdG9yX3N0bXQgfHwga2luZCA9PSB2 ZWNfdG9fc2NhbGFyKQ0KPiAgICAgICAmJiBTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKQ0K PiAgICAgICAmJiB2ZWN0X2lzX3JlZHVjdGlvbiAoc3RtdF9pbmZvKSkNCg0KSSAgdHJpZWQgdGhp cyBhbmQgaXQgaW5kZWVkIGNhbiBhdm9pZCBJQ0UuICBCdXQgaXQgc2VlbXMgdGhlIHJlZHVjdGlv bl9sYXRlbmN5IGNhbGN1bGF0aW9uIGlzIGFsc28gc2tpcHBlZCwgYWZ0ZXIgc3VjaCBtb2RpZmlj YXRpb24sIHRoZSByZWR1bmN0aW9uX2xhdGVuY3kgaXMgMCBmb3IgdGhpcyBjYXNlLiBQcmV2aW91 c2x5LCBpdCBpcyAxIGFuZCAyIGZvciBzY2FsYXIgYW5kIHZlY3RvciBzZXBhcmF0ZWx5Lg0KDQpJ TUhPLCB0byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCBwcmV2aW91cyByZXN1bHQsIHNob3VsZCB3 ZSBtb3ZlIFNUTVRfVklORk9fTElWRV9QIGNoZWNrIGJlbG93IGFuZCBpbnNpZGUgdGhlIGlmPyBz dWNoIGFzOg0KDQogIC8qIENhbGN1bGF0ZSB0aGUgbWluaW11bSBjeWNsZXMgcGVyIGl0ZXJhdGlv biBpbXBvc2VkIGJ5IGEgcmVkdWN0aW9uDQogICAgIG9wZXJhdGlvbi4gICovDQogIGlmICgoa2lu ZCA9PSBzY2FsYXJfc3RtdCB8fCBraW5kID09IHZlY3Rvcl9zdG10IHx8IGtpbmQgPT0gdmVjX3Rv X3NjYWxhcikNCiAgICAgICYmIHZlY3RfaXNfcmVkdWN0aW9uIChzdG10X2luZm8pKQ0KICAgIHsN CiAgICAgIHVuc2lnbmVkIGludCBiYXNlDQogICAgICAgID0gYWFyY2g2NF9pbl9sb29wX3JlZHVj dGlvbl9sYXRlbmN5IChtX3ZpbmZvLCBzdG10X2luZm8sIG1fdmVjX2ZsYWdzKTsNCiAgICAgIGlm IChTVE1UX1ZJTkZPX0xJVkVfUCAoc3RtdF9pbmZvKSAmJiBTVE1UX1ZJTkZPX0ZPUkNFX1NJTkdM RV9DWUNMRSAoDQogICAgICAgICAgICBpbmZvX2Zvcl9yZWR1Y3Rpb24gKG1fdmluZm8sIHN0bXRf aW5mbykpKQ0KICAgICAgICAvKiA/Pz8gSWRlYWxseSB3ZSdkIHVzZSBhIHRyZWUgdG8gcmVkdWNl IHRoZSBjb3BpZXMgZG93biB0byAxIHZlY3RvciwNCiAgICAgICAgICAgYW5kIHRoZW4gYWNjdW11 bGF0ZSB0aGF0LCBidXQgYXQgdGhlIG1vbWVudCB0aGUgbG9vcC1jYXJyaWVkDQogICAgICAgICAg IGRlcGVuZGVuY3kgaW5jbHVkZXMgYWxsIGNvcGllcy4gICovDQogICAgICAgIG9wcy0+cmVkdWN0 aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UgKiBjb3VudCk7 DQogICAgICBlbHNlDQogICAgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+ cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UpOw0KDQpUaGFua3MsDQpIYW8NCg0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJvbTogUmljaGFyZCBTYW5kaWZvcmQgPHJp Y2hhcmQuc2FuZGlmb3JkQGFybS5jb20+DQpTZW50OiBXZWRuZXNkYXksIEp1bHkgMjYsIDIwMjMg MTc6MTQNClRvOiBSaWNoYXJkIEJpZW5lcg0KQ2M6IEhhbyBMaXUgT1M7IEdDQy1wYXRjaGVzQGdj Yy5nbnUub3JnDQpTdWJqZWN0OiBSZTogW1BBVENIXSBBQXJjaDY0OiBEbyBub3QgaW5jcmVhc2Ug dGhlIHZlY3QgcmVkdWN0aW9uIGxhdGVuY3kgYnkgbXVsdGlwbHlpbmcgY291bnQgW1BSMTEwNjI1 XQ0KDQpSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IHdyaXRlczoN Cj4gT24gV2VkLCBKdWwgMjYsIDIwMjMgYXQgNDowMuKAr0FNIEhhbyBMaXUgT1MgdmlhIEdjYy1w YXRjaGVzDQo+IDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+Pg0KPj4gPiBXaGVu IHdhcyBTVE1UX1ZJTkZPX1JFRFVDX0RFRiBlbXB0eT8gIEkganVzdCB3YW50IHRvIG1ha2Ugc3Vy ZSB0aGF0IHdlJ3JlIG5vdCBwYXBlcmluZyBvdmVyIGFuIGlzc3VlIGVsc2V3aGVyZS4NCj4+DQo+ PiBZZXMsIEkgYWxzbyB3b25kZXIgaWYgdGhpcyBpcyBhbiBpc3N1ZSBpbiB2ZWN0b3JpemFibGVf cmVkdWN0aW9uLiAgQmVsb3cgaXMgdGhlIHRoZSBnaW1wbGUgb2YgImdjYy50YXJnZXQvYWFyY2g2 NC9zdmUvY29zdF9tb2RlbF8xMy5jIjoNCj4+DQo+PiAgIDxiYiAzPjoNCj4+ICAgIyByZXNfMTgg PSBQSEkgPHJlc18xNSg3KSwgMCg2KT4NCj4+ICAgIyBpXzIwID0gUEhJIDxpXzE2KDcpLCAwKDYp Pg0KPj4gICBfMSA9IChsb25nIHVuc2lnbmVkIGludCkgaV8yMDsNCj4+ICAgXzIgPSBfMSAqIDI7 DQo+PiAgIF8zID0geF8xNChEKSArIF8yOw0KPj4gICBfNCA9ICpfMzsNCj4+ICAgXzUgPSAodW5z aWduZWQgc2hvcnQpIF80Ow0KPj4gICByZXMuMF82ID0gKHVuc2lnbmVkIHNob3J0KSByZXNfMTg7 DQo+PiAgIF83ID0gXzUgKyByZXMuMF82OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0t IFRoZSBjdXJyZW50IHN0bXRfaW5mbw0KPj4gICByZXNfMTUgPSAoc2hvcnQgaW50KSBfNzsNCj4+ ICAgaV8xNiA9IGlfMjAgKyAxOw0KPj4gICBpZiAobl8xMShEKSA+IGlfMTYpDQo+PiAgICAgZ290 byA8YmIgNz47DQo+PiAgIGVsc2UNCj4+ICAgICBnb3RvIDxiYiA0PjsNCj4+DQo+PiAgIDxiYiA3 PjoNCj4+ICAgZ290byA8YmIgMz47DQo+Pg0KPj4gSXQgbG9va3MgbGlrZSB0aGF0IFNUTVRfVklO Rk9fUkVEVUNfREVGIHNob3VsZCBiZSAicmVzXzE4ID0gUEhJIDxyZXNfMTUoNyksIDAoNik+Ij8N Cj4+IFRoZSBzdGF0dXMgaGVyZSBpczoNCj4+ICAgU1RNVF9WSU5GT19SRURVQ19JRFggKHN0bXRf aW5mbyk6IDENCj4+ICAgU1RNVF9WSU5GT19SRURVQ19UWVBFIChzdG10X2luZm8pOiBUUkVFX0NP REVfUkVEVUNUSU9ODQo+PiAgIFNUTVRfVklORk9fUkVEVUNfVkVDVFlQRSAoc3RtdF9pbmZvKTog MHgwDQo+DQo+IE5vdCBhbGwgc3RtdHMgaW4gdGhlIFNTQSBjeWNsZSBmb3JtaW5nIHRoZSByZWR1 Y3Rpb24gaGF2ZQ0KPiBTVE1UX1ZJTkZPX1JFRFVDX0RFRiBzZXQsDQo+IG9ubHkgdGhlIGxhc3Qg KGxhdGNoIGRlZikgYW5kIGxpdmUgc3RtdHMgaGF2ZSBhdCB0aGUgbW9tZW50Lg0KDQpBaCwgdGhh bmtzLiAgSW4gdGhhdCBjYXNlLCBIYW8sIEkgdGhpbmsgd2UgY2FuIGF2b2lkIHRoZSBJQ0UgYnkg Y2hhbmdpbmc6DQoNCiAgaWYgKChraW5kID09IHNjYWxhcl9zdG10IHx8IGtpbmQgPT0gdmVjdG9y X3N0bXQgfHwga2luZCA9PSB2ZWNfdG9fc2NhbGFyKQ0KICAgICAgJiYgdmVjdF9pc19yZWR1Y3Rp b24gKHN0bXRfaW5mbykpDQoNCnRvOg0KDQogIGlmICgoa2luZCA9PSBzY2FsYXJfc3RtdCB8fCBr aW5kID09IHZlY3Rvcl9zdG10IHx8IGtpbmQgPT0gdmVjX3RvX3NjYWxhcikNCiAgICAgICYmIFNU TVRfVklORk9fTElWRV9QIChzdG10X2luZm8pDQogICAgICAmJiB2ZWN0X2lzX3JlZHVjdGlvbiAo c3RtdF9pbmZvKSkNCg0KaW5zdGVhZCBvZiB1c2luZyBhIG51bGwgY2hlY2suDQoNCkkgc2VlIHRo YXQgdmVjdG9yaXphYmxlX3JlZHVjdGlvbiBjYWxjdWxhdGVzIGEgcmVkdWNfY2hhaW5fbGVuZ3Ro Lg0KV291bGQgaXQgYmUgT0sgdG8gc3RvcmUgdGhhdCBpbiB0aGUgc3RtdF92ZWNfaW5mbz8gIEkg c3VwcG9zZSB0aGUNCkFBcmNoNjQgY29kZSBzaG91bGQgYmUgbXVsdGlwbHlpbmcgYnkgdGhhdCBh cyB3ZWxsLiAgKEl0IHdvdWxkIGJlIGENCnNlcGFyYXRlIHBhdGNoIGZyb20gdGhpcyBvbmUgdGhv dWdoLikNCg0KUmljaGFyZA0KDQoNCj4NCj4gUmljaGFyZC4NCj4NCj4+IFRoYW5rcywNCj4+IEhh bw0KPj4NCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IEZy b206IFJpY2hhcmQgU2FuZGlmb3JkIDxyaWNoYXJkLnNhbmRpZm9yZEBhcm0uY29tPg0KPj4gU2Vu dDogVHVlc2RheSwgSnVseSAyNSwgMjAyMyAxNzo0NA0KPj4gVG86IEhhbyBMaXUgT1MNCj4+IENj OiBHQ0MtcGF0Y2hlc0BnY2MuZ251Lm9yZw0KPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gQUFyY2g2 NDogRG8gbm90IGluY3JlYXNlIHRoZSB2ZWN0IHJlZHVjdGlvbiBsYXRlbmN5IGJ5IG11bHRpcGx5 aW5nIGNvdW50IFtQUjExMDYyNV0NCj4+DQo+PiBIYW8gTGl1IE9TIDxobGl1QG9zLmFtcGVyZWNv bXB1dGluZy5jb20+IHdyaXRlczoNCj4+ID4gSGksDQo+PiA+DQo+PiA+IFRoYW5rcyBmb3IgdGhl IHN1Z2dlc3Rpb24uICBJIHRlc3RlZCBpdCBhbmQgZm91bmQgYSBnY2NfYXNzZXJ0IGZhaWx1cmU6 DQo+PiA+ICAgICBnY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2Nvc3RfbW9kZWxfMTMuYyAoaW50ZXJu YWwgY29tcGlsZXIgZXJyb3I6IGluIGluZm9fZm9yX3JlZHVjdGlvbiwgYXQgdHJlZS12ZWN0LWxv b3AuY2M6NTQ3MykNCj4+ID4NCj4+ID4gSXQgaXMgY2F1c2VkIGJ5IGVtcHR5IFNUTVRfVklORk9f UkVEVUNfREVGLg0KPj4NCj4+IFdoZW4gd2FzIFNUTVRfVklORk9fUkVEVUNfREVGIGVtcHR5PyAg SSBqdXN0IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQNCj4+IHdlJ3JlIG5vdCBwYXBlcmluZyBvdmVy IGFuIGlzc3VlIGVsc2V3aGVyZS4NCj4+DQo+PiBUaGFua3MsDQo+PiBSaWNoYXJkDQo+Pg0KPj4g ICBTbywgSSBhZGRlZCBhbiBleHRyYSBjaGVjayBiZWZvcmUgY2hlY2tpbmcgc2luZ2xlX2RlZnVz ZV9jeWNsZS4gVGhlIHVwZGF0ZWQgcGF0Y2ggaXMgYmVsb3cuICBJcyBpdCBPSyBmb3IgdHJ1bms/ DQo+PiA+DQo+PiA+IC0tLQ0KPj4gPg0KPj4gPiBUaGUgbmV3IGNvc3RzIHNob3VsZCBvbmx5IGNv dW50IHJlZHVjdGlvbiBsYXRlbmN5IGJ5IG11bHRpcGx5aW5nIGNvdW50IGZvcg0KPj4gPiBzaW5n bGVfZGVmdXNlX2N5Y2xlLiAgRm9yIG90aGVyIHNpdHVhdGlvbnMsIHRoaXMgd2lsbCBpbmNyZWFz ZSB0aGUgcmVkdWN0aW9uDQo+PiA+IGxhdGVuY3kgYSBsb3QgYW5kIG1pc3MgdmVjdG9yaXphdGlv biBvcHBvcnR1bml0aWVzLg0KPj4gPg0KPj4gPiBUZXN0ZWQgb24gYWFyY2g2NC1saW51eC1nbnUu DQo+PiA+DQo+PiA+IGdjYy9DaGFuZ2VMb2c6DQo+PiA+DQo+PiA+ICAgICAgIFBSIHRhcmdldC8x MTA2MjUNCj4+ID4gICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIChjb3VudF9vcHMp OiBPbmx5ICcqIGNvdW50JyBmb3INCj4+ID4gICAgICAgc2luZ2xlX2RlZnVzZV9jeWNsZSB3aGls ZSBjb3VudGluZyByZWR1Y3Rpb25fbGF0ZW5jeS4NCj4+ID4NCj4+ID4gZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6DQo+PiA+DQo+PiA+ICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1 XzEuYzogTmV3IHRlc3RjYXNlLg0KPj4gPiAgICAgICAqIGdjYy50YXJnZXQvYWFyY2g2NC9wcjEx MDYyNV8yLmM6IE5ldyB0ZXN0Y2FzZS4NCj4+ID4gLS0tDQo+PiA+ICBnY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC5jYyAgICAgICAgICAgICAgICAgfCAxMyArKysrLS0NCj4+ID4gIGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYyB8IDQ2ICsrKysrKysrKysrKysr KysrKysNCj4+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIu YyB8IDE0ICsrKysrKw0KPj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQ0KPj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEuYw0KPj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYw0KPj4gPg0KPj4gPiBk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jYw0KPj4gPiBpbmRleCA1NjBlNTQzMTYzNi4uNDc4YTRlMDAxMTAgMTAw NjQ0DQo+PiA+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQo+PiA+ICsrKyBi L2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjDQo+PiA+IEBAIC0xNjc4OCwxMCArMTY3ODgs MTUgQEAgYWFyY2g2NF92ZWN0b3JfY29zdHM6OmNvdW50X29wcyAodW5zaWduZWQgaW50IGNvdW50 LCB2ZWN0X2Nvc3RfZm9yX3N0bXQga2luZCwNCj4+ID4gICAgICB7DQo+PiA+ICAgICAgICB1bnNp Z25lZCBpbnQgYmFzZQ0KPj4gPiAgICAgICA9IGFhcmNoNjRfaW5fbG9vcF9yZWR1Y3Rpb25fbGF0 ZW5jeSAobV92aW5mbywgc3RtdF9pbmZvLCBtX3ZlY19mbGFncyk7DQo+PiA+IC0NCj4+ID4gLSAg ICAgIC8qID8/PyBJZGVhbGx5IHdlJ2QgZG8gQ09VTlQgcmVkdWN0aW9ucyBpbiBwYXJhbGxlbCwg YnV0IHVuZm9ydHVuYXRlbHkNCj4+ID4gLSAgICAgIHRoYXQncyBub3QgeWV0IHRoZSBjYXNlLiAg Ki8NCj4+ID4gLSAgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0 aW9uX2xhdGVuY3ksIGJhc2UgKiBjb3VudCk7DQo+PiA+ICsgICAgICBpZiAoU1RNVF9WSU5GT19S RURVQ19ERUYgKHN0bXRfaW5mbykNCj4+ID4gKyAgICAgICAmJiBTVE1UX1ZJTkZPX0ZPUkNFX1NJ TkdMRV9DWUNMRSAoDQo+PiA+ICsgICAgICAgICBpbmZvX2Zvcl9yZWR1Y3Rpb24gKG1fdmluZm8s IHN0bXRfaW5mbykpKQ0KPj4gPiArICAgICAvKiA/Pz8gSWRlYWxseSB3ZSdkIHVzZSBhIHRyZWUg dG8gcmVkdWNlIHRoZSBjb3BpZXMgZG93biB0byAxIHZlY3RvciwNCj4+ID4gKyAgICAgICAgYW5k IHRoZW4gYWNjdW11bGF0ZSB0aGF0LCBidXQgYXQgdGhlIG1vbWVudCB0aGUgbG9vcC1jYXJyaWVk DQo+PiA+ICsgICAgICAgIGRlcGVuZGVuY3kgaW5jbHVkZXMgYWxsIGNvcGllcy4gICovDQo+PiA+ ICsgICAgIG9wcy0+cmVkdWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVu Y3ksIGJhc2UgKiBjb3VudCk7DQo+PiA+ICsgICAgICBlbHNlDQo+PiA+ICsgICAgIG9wcy0+cmVk dWN0aW9uX2xhdGVuY3kgPSBNQVggKG9wcy0+cmVkdWN0aW9uX2xhdGVuY3ksIGJhc2UpOw0KPj4g PiAgICAgIH0NCj4+ID4NCj4+ID4gICAgLyogQXNzdW1lIHRoYXQgbXVsdGlwbHktYWRkcyB3aWxs IGJlY29tZSBhIHNpbmdsZSBvcGVyYXRpb24uICAqLw0KPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMS5jDQo+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+PiA+IGluZGV4IDAwMDAwMDAwMDAwLi4wOTY1Y2FjMzNhMA0KPj4gPiAtLS0gL2Rldi9udWxs DQo+PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzEu Yw0KPj4gPiBAQCAtMCwwICsxLDQ2IEBADQo+PiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0K Pj4gPiArLyogeyBkZy1vcHRpb25zICItT2Zhc3QgLW1jcHU9bmVvdmVyc2UtbjIgLWZkdW1wLXRy ZWUtdmVjdC1kZXRhaWxzIC1mbm8tdHJlZS1zbHAtdmVjdG9yaXplIiB9ICovDQo+PiA+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJyZWR1Y3Rpb24gbGF0ZW5jeSA9IDgiICJ2 ZWN0IiB9IH0gKi8NCj4+ID4gKw0KPj4gPiArLyogRG8gbm90IGluY3JlYXNlIHRoZSB2ZWN0b3Ig Ym9keSBjb3N0IGR1ZSB0byB0aGUgaW5jb3JyZWN0IHJlZHVjdGlvbiBsYXRlbmN5DQo+PiA+ICsg ICAgT3JpZ2luYWwgdmVjdG9yIGJvZHkgY29zdCA9IDUxDQo+PiA+ICsgICAgU2NhbGFyIGlzc3Vl IGVzdGltYXRlOg0KPj4gPiArICAgICAgLi4uDQo+PiA+ICsgICAgICByZWR1Y3Rpb24gbGF0ZW5j eSA9IDINCj4+ID4gKyAgICAgIGVzdGltYXRlZCBtaW4gY3ljbGVzIHBlciBpdGVyYXRpb24gPSAy LjAwMDAwMA0KPj4gPiArICAgICAgZXN0aW1hdGVkIGN5Y2xlcyBwZXIgdmVjdG9yIGl0ZXJhdGlv biAoZm9yIFZGIDIpID0gNC4wMDAwMDANCj4+ID4gKyAgICBWZWN0b3IgaXNzdWUgZXN0aW1hdGU6 DQo+PiA+ICsgICAgICAuLi4NCj4+ID4gKyAgICAgIHJlZHVjdGlvbiBsYXRlbmN5ID0gOCAgICAg IDwtLSBUb28gbGFyZ2UNCj4+ID4gKyAgICAgIGVzdGltYXRlZCBtaW4gY3ljbGVzIHBlciBpdGVy YXRpb24gPSA4LjAwMDAwMA0KPj4gPiArICAgIEluY3JlYXNpbmcgYm9keSBjb3N0IHRvIDEwMiBi ZWNhdXNlIHNjYWxhciBjb2RlIHdvdWxkIGlzc3VlIG1vcmUgcXVpY2tseQ0KPj4gPiArICAgICAg Li4uDQo+PiA+ICsgICAgbWlzc2VkOiAgY29zdCBtb2RlbDogdGhlIHZlY3RvciBpdGVyYXRpb24g Y29zdCA9IDEwMiBkaXZpZGVkIGJ5IHRoZSBzY2FsYXIgaXRlcmF0aW9uIGNvc3QgPSA0NCBpcyBn cmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3RvciA9IDIuDQo+PiA+ICsg ICAgbWlzc2VkOiAgbm90IHZlY3Rvcml6ZWQ6IHZlY3Rvcml6YXRpb24gbm90IHByb2ZpdGFibGUu ICAqLw0KPj4gPiArDQo+PiA+ICt0eXBlZGVmIHN0cnVjdA0KPj4gPiArew0KPj4gPiArICB1bnNp Z25lZCBzaG9ydCBtMSwgbTIsIG0zLCBtNDsNCj4+ID4gK30gdGhlX3N0cnVjdF90Ow0KPj4gPiAr dHlwZWRlZiBzdHJ1Y3QNCj4+ID4gK3sNCj4+ID4gKyAgZG91YmxlIG0xLCBtMiwgbTMsIG00LCBt NTsNCj4+ID4gK30gdGhlX3N0cnVjdDJfdDsNCj4+ID4gKw0KPj4gPiArZG91YmxlDQo+PiA+ICti YXIgKHRoZV9zdHJ1Y3QyX3QgKik7DQo+PiA+ICsNCj4+ID4gK2RvdWJsZQ0KPj4gPiArZm9vIChk b3VibGUgKmssIHVuc2lnbmVkIGludCBuLCB0aGVfc3RydWN0X3QgKnRoZV9zdHJ1Y3QpDQo+PiA+ ICt7DQo+PiA+ICsgIHVuc2lnbmVkIGludCB1Ow0KPj4gPiArICB0aGVfc3RydWN0Ml90IHJlc3Vs dDsNCj4+ID4gKyAgZm9yICh1ID0gMDsgdSA8IG47IHUrKywgay0tKQ0KPj4gPiArICAgIHsNCj4+ ID4gKyAgICAgIHJlc3VsdC5tMSArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMTsNCj4+ID4gKyAg ICAgIHJlc3VsdC5tMiArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMjsNCj4+ID4gKyAgICAgIHJl c3VsdC5tMyArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tMzsNCj4+ID4gKyAgICAgIHJlc3VsdC5t NCArPSAoKmspICogdGhlX3N0cnVjdFt1XS5tNDsNCj4+ID4gKyAgICB9DQo+PiA+ICsgIHJldHVy biBiYXIgKCZyZXN1bHQpOw0KPj4gPiArfQ0KPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHIxMTA2MjVfMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvcHIxMTA2MjVfMi5jDQo+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+ IGluZGV4IDAwMDAwMDAwMDAwLi43YTg0YWE4MzU1ZQ0KPj4gPiAtLS0gL2Rldi9udWxsDQo+PiA+ ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTEwNjI1XzIuYw0KPj4g PiBAQCAtMCwwICsxLDE0IEBADQo+PiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4gPiAr LyogeyBkZy1vcHRpb25zICItT2Zhc3QgLW1jcHU9bmVvdmVyc2UtbjIgLWZkdW1wLXRyZWUtdmVj dC1kZXRhaWxzIC1mbm8tdHJlZS1zbHAtdmVjdG9yaXplIiB9ICovDQo+PiA+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgInJlZHVjdGlvbiBsYXRlbmN5ID0gOCIgInZlY3QiIH0gfSAq Lw0KPj4gPiArDQo+PiA+ICsvKiBUaGUgcmVkdWN0aW9uIGxhdGVuY3kgc2hvdWxkIGJlIG11bHRp cGxpZWQgYnkgdGhlIGNvdW50IGZvcg0KPj4gPiArICAgc2luZ2xlX2RlZnVzZV9jeWNsZS4gICov DQo+PiA+ICsNCj4+ID4gK2xvbmcNCj4+ID4gK2YgKGxvbmcgcmVzLCBzaG9ydCAqcHRyMSwgc2hv cnQgKnB0cjIsIGludCBuKQ0KPj4gPiArew0KPj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47 ICsraSkNCj4+ID4gKyAgICByZXMgKz0gKGxvbmcpIHB0cjFbaV0gPDwgcHRyMltpXTsNCj4+ID4g KyAgcmV0dXJuIHJlczsNCj4+ID4gK30NCg==