From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by sourceware.org (Postfix) with ESMTPS id 248B63857C66 for ; Thu, 29 Jun 2023 09:35:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 248B63857C66 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688031315; x=1719567315; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=QirIesQSxgOXLk/p/LRaHcdu2ePyK8QVj6E8+1ftn5M=; b=DlEB5axpEvlJxdpxJ8hy44NUiBA/BvloPApEDzqZskO40kMEb/SovKD/ RvC7d2kU3L8ytU0IplJrtgx1FTuliGRdbaww1wjDthNH4xNPV/zrZC/Jg wFwD4BR9xP/JHX135iWQInBtmrFEeSjzjnwLjALHhXyKamSaDETjPADyf w0kYos8giJIqs8B69l5X5+3ppPMSjoJXN58LVw61Ikm9dvb+8pt4YprBW jtT3ng0gjrgWwh3h5rCgPFAVxHWr/xvniH4NGXbymXb/lgXtreaqIyhlV e1Xp/O5v7GNQjq5muqzWiIa6pzAQBd+y9Yr8bykmk6F/POzorQWpqHoal w==; X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="360915188" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="360915188" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2023 02:35:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="841393619" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="841393619" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP; 29 Jun 2023 02:35:13 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 29 Jun 2023 02:35:12 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 29 Jun 2023 02:35:12 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Thu, 29 Jun 2023 02:35:12 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.40) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Thu, 29 Jun 2023 02:35:12 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nzsUbBydJ9kTKrqNEkhxh7szsjl7pv6h/9oR1hNbRplHVReI4HonN7xUHCpGXjwW1Vsg7Wztm29t3WfKackt7WxB7iUttZH1CvJUTG3MOiFGESForpfLHXmixeBEWBz3C57A2I9JbnQK1/RhITl/tmkM0MrlHavB56zjc/ptbhxItnb4xqlc7fWMNl/JUav4WVV/d+xFo3AEcR72/5M6MgR87hRAxJWFsuoBr6DXEMuO9wchrKsuAG9q0NFOC0OkCiS7SGNrJCwrOstUw5wuRKjHxOyDx5HL6X+cDfoGlApM9NCzlAAl6vApXbAG3awLV+aFRA2+3NJ0DIaxaPtxMQ== 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=QirIesQSxgOXLk/p/LRaHcdu2ePyK8QVj6E8+1ftn5M=; b=YTXP9+Ba+6OJlIO744+eymt1uSJ7GkEXGreH4UdNuZDu+5ZGLCQ08lEec1ONj9ACvo5QWfPI3zDyokmaDb179dSG3R1z1zMW+CA3qvDltEThPqdC95ifTc4LHQzPlT2aLjW9pZSEPuDav8meE/GBxNAUj2WaU91/jiNz94ho2DRoQ58iYNM+4HGuoT1+xAubA0cqCLJ67OUtKRiIrU+FiUjkBkHkjofG7z6T/0g4Tsjc0Bw0oqRSvIOJMofQ3YDXopYd13zF1aDc5F+Rnfnij+woNwBaTDgy4LCpTfNryIFq/mAVSaBgX29FPk/B6Crnc/UcNottStXxB9Uc7F0hPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by DM4PR11MB5310.namprd11.prod.outlook.com (2603:10b6:5:391::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Thu, 29 Jun 2023 09:35:10 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::50ed:c141:93dd:16d1]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::50ed:c141:93dd:16d1%3]) with mapi id 15.20.6521.024; Thu, 29 Jun 2023 09:35:10 +0000 From: "Cui, Lili" To: Richard Biener CC: "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] PR gcc/110148:Avoid adding loop-carried ops to long chains Thread-Topic: [PATCH] PR gcc/110148:Avoid adding loop-carried ops to long chains Thread-Index: AQHZqiv5gQ8wMroqbk+2Li1lYhXJHa+hVUsAgAAvyKA= Date: Thu, 29 Jun 2023 09:35:10 +0000 Message-ID: References: <20230629014949.1995621-1-lili.cui@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|DM4PR11MB5310:EE_ x-ms-office365-filtering-correlation-id: 85dfdf54-6bac-4d5f-408e-08db788421e7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LLEbIhBEVLbwo/jYVaG4KQdTeThd7P/2AxkwGKRDxKHFBApF0l9gTpxTn/Mg7Ek7E5nSfNxdQBiz4jX9X2LQ7n9yC3ZwMirZq9L+5QPeaB8qFZreU2xr6cHvtIbT31O2apv11DGbF28C59SQDTkpTWY7rilT4jAuiV/Z6Nw0D3NkP7u8ySINCKJrIDnjA15SU8uHlpwItQx0F8e+gJifobLsLRBVRsl1vGtBjSjm/eoW+v9zmtmLyZC3bHTVmOozpi1Fo+i27zRyYGOoXNBJvQkLbSGI3MCLrQs9/vvrOWDgxPcFGjfBY6MYFnGpNB9EVi51Rz+R0bqmiMYrEjHmRzRwiNzWtaHpB425clUIYGYf7tfmNC6eJs46lRswV/KYoRviKSEIO4a3+ALAgPFk1W+r2vz7DBQIwr3nfbkGrxW0m9V0qN/1b7ETmbWeeYQKhyJyErswXYZXJn1ADCBNL/GDJ18N5f48RzocjwGMhjsbEiVMW4Y84MbqImH01yCyIVvfFcOGK+oGg8/1dOckkaH6poAYQrSylq8DA0fmvURwJlw0Njb+q4TDJWiJaMRmUlR6ryqP6cL61wu+FCbdzLUgAoF+WZ2ST6nteaqPJxAfsY/fihSJal0M89eqYXaw x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(346002)(136003)(376002)(366004)(396003)(451199021)(33656002)(38100700002)(30864003)(5660300002)(86362001)(41300700001)(6916009)(66476007)(8936002)(8676002)(66446008)(64756008)(38070700005)(316002)(66946007)(122000001)(55016003)(4326008)(66556008)(82960400001)(76116006)(478600001)(52536014)(6506007)(71200400001)(2906002)(53546011)(9686003)(26005)(186003)(7696005)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vy9YZEkwbUZxWjBuOXFSWXZ6dG9kamNzeTFock1yS2FZT3FRT0RRV3lvSjNx?= =?utf-8?B?Zmtrd0RzRURIRjQvNjRncmgvU0psZCtUUmtCSXpXUDdlbzgzVStGR2J3TnNy?= =?utf-8?B?S0szbVFjZFVUalpHb0xYY1E2VWl4ZU1LdGx3bml6bVBzZWIwS1NGdDJkdllT?= =?utf-8?B?V0tFbURiM3lQbUZVdldNeHpFdXlNYzkydmNvWVc0ZjRXazV5TThLVXhhbTVB?= =?utf-8?B?KzVDc0tvY3lKN2JUOW9oVklUMkJKcnFNaVRaTGlWd1o0S01xcUlmTkxNaU1a?= =?utf-8?B?TnFiRTVGY0Jick5lOENsdGxIRFFOeVNpeDRUeGxzL2VxMFRmT05ubE1PQ2Zk?= =?utf-8?B?dThyOWRXaXNrdk1xMEhuNnVDeVFoazdzRXBsQVpzWGd5d29OYTMvSXpid3NJ?= =?utf-8?B?MjVvUk1pRmN1dFhWb3hraVJjdDFoTCtlbDFBa0Fqc04zTEg3Z29QLytuZEh5?= =?utf-8?B?MnZYNi9EWFdzSit1K1RqSjB1d0ZhQ3ZKMDVIWUpqeDBhN0R3QkszWWdlZHhk?= =?utf-8?B?cGUwd3JIZFhPbU1EWi9zTFdqeVpuU0lpZ2lVSlJKdzI0R0ovOGlWdlk1azQx?= =?utf-8?B?NWF2dFY5SmgxeVdOWTIvdFRhM05rZ2s0QzY5U1B4VXcxQkFVeDNSRjd6UGRW?= =?utf-8?B?SC9sOXlXTTdvSXVVaTJmMG1CbEtRekNrQ1BBY1JHa3FkQy8zU0lVc3pvOFk2?= =?utf-8?B?TTlpdkdKTWZqU1NJbTFocWJSYjVpSjV1YTJvbWwrUTg4ekFYckkxMk5GdWJC?= =?utf-8?B?YUhXMGFqSmdWZTF2YVYvWkZoNDR4OUhwbU9rNFRtMHRkWW5Hc1VNWkRiOFds?= =?utf-8?B?VDZzc1Y5MEErcU5IWXJUSmFKL3B1K3d0QjdkejN5YXRBd2ptYU13MmJxMTBs?= =?utf-8?B?aFF3b3VhWU0zY216YTB6ZkRzVjN4RnhBbmROcU9MVzFURW1Jc0dGMHQ2cmly?= =?utf-8?B?VFdGL0RmUisxenBLR3JFT092R1UyNytUM3VkTmNocnU3UEFIbW4vWVhPR2th?= =?utf-8?B?V3MwOUlieXhzalVIY2RmTTFHS3FXbUx4OXhzMEs4L0pzTUNjVEtPakRJdVcw?= =?utf-8?B?ajE2N2g3bkxMaHV1VGFKeU8xcTVUbkJUMHhLVDY0aHVkMzFVZG8rdVJGclhS?= =?utf-8?B?OVQvYTg4Q2s3TnAySi9EUVhXREhlNlNPcUw3WHdTMWtXd1JsZUlYbDVTQmtZ?= =?utf-8?B?aCtTckp3Q1FqTGh6T3ZRY0g1eW82Qkh2dDdEQU1IeDhPckhBWWhVZE5DcFdz?= =?utf-8?B?WEc4M094N2FpN1ZaOUxjVmpVUGNndWV2UzlVMExFVjV3bXFYUGJTU0ZKTi9V?= =?utf-8?B?RDJKN0hZNzV3VTMydWM4NE81QksvNTAzWi9TMkZRUThQdEVlZFgvYzhiQUQr?= =?utf-8?B?aC9TaDF5VzIyNmhPbE9YWW1xUjl1Ujd3bDh1bldxWFZnM3pFUUFGWWVwK01u?= =?utf-8?B?MEFhUTFnbnNqN0l3QktZczQwWWtkcWlpeTh5RnlQemp0eitJd3k4dGtvdVIw?= =?utf-8?B?ODc1M3owbVN5SWZTWkQ2Zm5iMDRnYkxoS1hvU1o4K21HRWpjRUZDQmIvWlJZ?= =?utf-8?B?dGhkeWszekN0NkFDUDUyWndrbnVBL1hXYnRUcW4ybGNXanlpQ0RsQUtvNEZD?= =?utf-8?B?YXpnSmROU3J2cjAxditUWnNpaitURVQzWGhtRUx5RHhXZFI0MWd0UVJZc01X?= =?utf-8?B?eW1hbkJRU0l6R3E2b081akh5VWVOQnZzSnVGK3VyOVhTWUpBdFkza0I2d0F4?= =?utf-8?B?S2kxTWpOYlR2Z3NlNHZjUWcwZWU2MmFKT1dFK1Y3UHpvOUZMSG9hbktiK0hX?= =?utf-8?B?K3dWWlJaMFVBcEpGN2V1bnNxZGlnSG9nTkVpSWUrVDZpck5sUVljSWVjSm1E?= =?utf-8?B?N3N1YzZQTmRUSG01eU1LZks5bVZFSm1jU1AxR0plNmhkVFNZQzE3MG0xaUVW?= =?utf-8?B?d0VRc3ZzemRWUlpDWE9WZ1RHb1pDT0xHRVdLdXdVNXpzN3lQQUZsb3pSZkRp?= =?utf-8?B?ZHdWeTM4SWdkNlpGYlU3eUNLNzdKYlZNSHdyVnQ5Rnc4czJ2Z2tMc1BRR3N1?= =?utf-8?B?WS9iYVhQdEpobGRhR2lhUXBKT3M4TXFpQmNDaTNIalFmV0poQlFKNHg2YzdY?= =?utf-8?Q?+GYMTYiWmw0quMHzREfSVxt5t?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85dfdf54-6bac-4d5f-408e-08db788421e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2023 09:35:10.2254 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RH8kTbW06N8qY3hDwdKLzEYORCZpG+WI2xRTkt8eeb9Hqv6Nuj3xIZK90utx+D2qoXRxhW0K98gbqM58+kIeQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5310 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,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: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBCaWVuZXIg PHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVuZSAyOSwg MjAyMyAyOjQyIFBNDQo+IFRvOiBDdWksIExpbGkgPGxpbGkuY3VpQGludGVsLmNvbT4NCj4gQ2M6 IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIFBSIGdjYy8x MTAxNDg6QXZvaWQgYWRkaW5nIGxvb3AtY2FycmllZCBvcHMgdG8gbG9uZw0KPiBjaGFpbnMNCj4g DQo+IE9uIFRodSwgSnVuIDI5LCAyMDIzIGF0IDM6NDnigK9BTSBDdWksIExpbGkgPGxpbGkuY3Vp QGludGVsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBGcm9tOiBMaWxpIEN1aSA8bGlsaS5jdWlAaW50 ZWwuY29tPg0KPiA+DQo+ID4gSGkgTWFpbnRhaW5lcg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBpcyB0 byBmaXggVFNWQzI0MiByZWdyZXNzaW9uIHJlbGF0ZWQgdG8gbG9vcC1jYXJyaWVkIG9wcy4NCj4g Pg0KPiA+IEJvb3RzdHJhcHBlZCBhbmQgcmVndGVzdGVkLiBPayBmb3IgdHJ1bms/DQo+IA0KPiBP Sy4NCj4gDQpDb21taXR0ZWQsIHRoYW5rcyBSaWNoYXJkLg0KDQpSZWdhcmRzLA0KTGlsaS4NCg0K PiBUaGFua3MsDQo+IFJpY2hhcmQuDQo+IA0KPiA+IFJlZ2FyZHMNCj4gPiBMaWxpLg0KPiA+DQo+ ID4gQXZvaWQgYWRkaW5nIGxvb3AtY2FycmllZCBvcHMgdG8gbG9uZyBjaGFpbnMsIG90aGVyd2lz ZSB0aGUgd2hvbGUNCj4gPiBjaGFpbiB3aWxsIGhhdmUgZGVwZW5kZW5jaWVzIGFjcm9zcyB0aGUg bG9vcCBpdGVyYXRpb24uIEp1c3Qga2VlcA0KPiA+IGxvb3AtY2FycmllZCBvcHMgaW4gYSBzZXBh cmF0ZSBjaGFpbi4NCj4gPiAgICBFLmcuDQo+ID4gICAgeF8xID0gcGhpKHhfMCwgeF8yKQ0KPiA+ ICAgIHlfMSA9IHBoaSh5XzAsIHlfMikNCj4gPg0KPiA+ICAgIGEgKyBiICsgYyArIGQgKyBlICsg eDEgKyB5MQ0KPiA+DQo+ID4gICAgU1NBMSA9IGEgKyBiOw0KPiA+ICAgIFNTQTIgPSBjICsgZDsN Cj4gPiAgICBTU0EzID0gU1NBMSArIGU7DQo+ID4gICAgU1NBNCA9IFNTQTMgKyBTU0EyOw0KPiA+ ICAgIFNTQTUgPSB4MSArIHkxOw0KPiA+ICAgIFNTQTYgPSBTU0E0ICsgU1NBNTsNCj4gPg0KPiA+ IFdpdGggdGhlIHBhdGNoIGFwcGxpZWQsIHRoZXNlIHRlc3QgY2FzZXMgaW1wcm92ZWQgYnkgMzIl fjEwMCUuDQo+ID4NCj4gPiBTMjQyOg0KPiA+IGZvciAoaW50IGkgPSAxOyBpIDwgTEVOXzFEOyAr K2kpIHsNCj4gPiAgICAgYVtpXSA9IGFbaSAtIDFdICsgczEgKyBzMiArIGJbaV0gKyBjW2ldICsg ZFtpXTt9DQo+ID4NCj4gPiBDYXNlIDE6DQo+ID4gZm9yIChpbnQgaSA9IDE7IGkgPCBMRU5fMUQ7 ICsraSkgew0KPiA+ICAgICBhW2ldID0gYVtpIC0gMV0gKyBzMSArIHMyICsgYltpXSArIGNbaV0g KyBkW2ldICsgZVtpXTt9DQo+ID4NCj4gPiBDYXNlIDI6DQo+ID4gZm9yIChpbnQgaSA9IDE7IGkg PCBMRU5fMUQ7ICsraSkgew0KPiA+ICAgICBhW2ldID0gYVtpIC0gMV0gKyBiW2kgLSAxXSArIHMx ICsgczIgKyBiW2ldICsgY1tpXSArIGRbaV0gKyBlW2ldO30NCj4gPg0KPiA+IFRoZSB2YWx1ZSBp cyB0aGUgZXhlY3V0aW9uIHRpbWUNCj4gPiBBOiBvcmlnaW5hbCB2ZXJzaW9uDQo+ID4gQjogd2l0 aCBGTUEgcGF0Y2ggZzplNTQwNWYwNjViYWNlMDY4NWNiM2I4ODc4ZDFkZmM3YTZlN2VmNDA5KGJh c2UNCj4gb24NCj4gPiBBKQ0KPiA+IEM6IHdpdGggY3VycmVudCBwYXRjaChiYXNlIG9uIEIpDQo+ ID4NCj4gPiAgICAgICAgICAgQSAgICAgICBCICAgICAgIEMgICAgIEIvQSAgICAgICAgICAgICBD L0ENCj4gPiBzMjQyICAgIDIuODU5ICAgNS4xNTIgICAyLjg1OSAgIDEuODAyMDI4NjgxICAgICAx DQo+ID4gY2FzZSAxICA1LjQ4OSAgIDUuNDg4ICAgMy41MTEgICAwLjk5OTgxOCAgICAgICAgMC42 NA0KPiA+IGNhc2UgMiAgNy4yMTYgICA3LjQ5OSAgIDQuODg1ICAgMS4wMzkyMTggICAgICAgIDAu NjgNCj4gPg0KPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4gICAgICAgICBQUiB0cmVlLW9wdGltaXph dGlvbi8xMTAxNDgNCj4gPiAgICAgICAgICogdHJlZS1zc2EtcmVhc3NvYy5jYyAocmV3cml0ZV9l eHByX3RyZWVfcGFyYWxsZWwpOiBIYW5kbGUgbG9vcC1jYXJyaWVkDQo+ID4gICAgICAgICBvcHMg aW4gdGhpcyBmdW5jdGlvbi4NCj4gPiAtLS0NCj4gPiAgZ2NjL3RyZWUtc3NhLXJlYXNzb2MuY2Mg fCAyMzYNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4g IDEgZmlsZSBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXJlYXNzb2MuY2MgYi9nY2MvdHJlZS1zc2Et cmVhc3NvYy5jYyBpbmRleA0KPiA+IDk2Yzg4ZWMwMDNlLi5mNWRhMzg1ZTBiMiAxMDA2NDQNCj4g PiAtLS0gYS9nY2MvdHJlZS1zc2EtcmVhc3NvYy5jYw0KPiA+ICsrKyBiL2djYy90cmVlLXNzYS1y ZWFzc29jLmNjDQo+ID4gQEAgLTU0NzEsMzcgKzU0NzEsNjIgQEAgZ2V0X3JlYXNzb2NpYXRpb25f d2lkdGggKGludCBvcHNfbnVtLCBlbnVtDQo+IHRyZWVfY29kZSBvcGMsDQo+ID4gICAgcmV0dXJu IHdpZHRoOw0KPiA+ICB9DQo+ID4NCj4gPiArI2RlZmluZSBTUEVDSUFMX0JJQVNFRF9FTkRfU1RN VCAwIC8qIEl0IGlzIHRoZSBlbmQgc3RtdCBvZiBhbGwgb3BzLg0KPiA+ICsqLyAjZGVmaW5lIEJJ QVNFRF9FTkRfU1RNVCAxIC8qIEl0IGlzIHRoZSBlbmQgc3RtdCBvZiBub3JtYWwgb3INCj4gPiAr Ymlhc2VkIG9wcy4gICovICNkZWZpbmUgTk9STUFMX0VORF9TVE1UIDIgLyogSXQgaXMgdGhlIGVu ZCBzdG10IG9mDQo+ID4gK25vcm1hbCBvcHMuICAqLw0KPiA+ICsNCj4gPiAgLyogUmV3cml0ZSBz dGF0ZW1lbnRzIHdpdGggZGVwZW5kZW5jeSBjaGFpbiB3aXRoIHJlZ2FyZCB0aGUgY2hhbmNlIHRv DQo+IGdlbmVyYXRlDQo+ID4gICAgIEZNQS4NCj4gPiAgICAgRm9yIHRoZSBjaGFpbiB3aXRoIEZN QTogVHJ5IHRvIGtlZXAgZm1hIG9wcG9ydHVuaXR5IGFzIG11Y2ggYXMgcG9zc2libGUuDQo+ID4g ICAgIEZvciB0aGUgY2hhaW4gd2l0aG91dCBGTUE6IFB1dHRpbmcgdGhlIGNvbXB1dGF0aW9uIGlu IHJhbmsgb3JkZXIgYW5kDQo+IHRyeWluZw0KPiA+ICAgICB0byBhbGxvdyBvcGVyYXRpb25zIHRv IGJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsLg0KPiA+ICAgICBFLmcuDQo+ID4gLSAgIGUgKyBmICsg ZyArIGEgKiBiICsgYyAqIGQ7DQo+ID4gKyAgIGUgKyBmICsgYSAqIGIgKyBjICogZDsNCj4gPg0K PiA+IC0gICBzc2ExID0gZSArIGY7DQo+ID4gLSAgIHNzYTIgPSBnICsgYSAqIGI7DQo+ID4gLSAg IHNzYTMgPSBzc2ExICsgYyAqIGQ7DQo+ID4gLSAgIHNzYTQgPSBzc2EyICsgc3NhMzsNCj4gPiAr ICAgc3NhMSA9IGUgKyBhICogYjsNCj4gPiArICAgc3NhMiA9IGYgKyBjICogZDsNCj4gPiArICAg c3NhMyA9IHNzYTEgKyBzc2EyOw0KPiA+DQo+ID4gICAgIFRoaXMgcmVhc3NvY2lhdGlvbiBhcHBy b2FjaCBwcmVzZXJ2ZXMgdGhlIGNoYW5jZSBvZiBmbWEgZ2VuZXJhdGlvbiBhcw0KPiBtdWNoDQo+ ID4gLSAgIGFzIHBvc3NpYmxlLiAgKi8NCj4gPiArICAgYXMgcG9zc2libGUuDQo+ID4gKw0KPiA+ ICsgICBBbm90aGVyIHRoaW5nIGlzIHRvIGF2b2lkIGFkZGluZyBsb29wLWNhcnJpZWQgb3BzIHRv IGxvbmcgY2hhaW5zLA0KPiBvdGhlcndpc2UNCj4gPiArICAgdGhlIHdob2xlIGNoYWluIHdpbGwg aGF2ZSBkZXBlbmRlbmNpZXMgYWNyb3NzIHRoZSBsb29wIGl0ZXJhdGlvbi4gSnVzdA0KPiBrZWVw DQo+ID4gKyAgIGxvb3AtY2FycmllZCBvcHMgaW4gYSBzZXBhcmF0ZSBjaGFpbi4NCj4gPiArICAg RS5nLg0KPiA+ICsgICB4XzEgPSBwaGkoeF8wLCB4XzIpDQo+ID4gKyAgIHlfMSA9IHBoaSh5XzAs IHlfMikNCj4gPiArDQo+ID4gKyAgIGEgKyBiICsgYyArIGQgKyBlICsgeDEgKyB5MQ0KPiA+ICsN Cj4gPiArICAgU1NBMSA9IGEgKyBiOw0KPiA+ICsgICBTU0EyID0gYyArIGQ7DQo+ID4gKyAgIFNT QTMgPSBTU0ExICsgZTsNCj4gPiArICAgU1NBNCA9IFNTQTMgKyBTU0EyOw0KPiA+ICsgICBTU0E1 ID0geDEgKyB5MTsNCj4gPiArICAgU1NBNiA9IFNTQTQgKyBTU0E1Ow0KPiA+ICsgKi8NCj4gPiAg c3RhdGljIHZvaWQNCj4gPiAgcmV3cml0ZV9leHByX3RyZWVfcGFyYWxsZWwgKGdhc3NpZ24gKnN0 bXQsIGludCB3aWR0aCwgYm9vbCBoYXNfZm1hLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdmVjPG9wZXJhbmRfZW50cnkgKj4gJm9wcykNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjPG9wZXJhbmRfZW50cnkgKj4gJm9w cykNCj4gPiAgew0KPiA+ICAgIGVudW0gdHJlZV9jb2RlIG9wY29kZSA9IGdpbXBsZV9hc3NpZ25f cmhzX2NvZGUgKHN0bXQpOw0KPiA+ICAgIGludCBvcF9udW0gPSBvcHMubGVuZ3RoICgpOw0KPiA+ ICsgIGludCBvcF9ub3JtYWxfbnVtID0gb3BfbnVtOw0KPiA+ICAgIGdjY19hc3NlcnQgKG9wX251 bSA+IDApOw0KPiA+ICAgIGludCBzdG10X251bSA9IG9wX251bSAtIDE7DQo+ID4gICAgZ2ltcGxl ICoqc3RtdHMgPSBYQUxMT0NBVkVDIChnaW1wbGUgKiwgc3RtdF9udW0pOw0KPiA+IC0gIGludCBv cF9pbmRleCA9IG9wX251bSAtIDE7DQo+ID4gLSAgaW50IHdpZHRoX2NvdW50ID0gd2lkdGg7DQo+ ID4gICAgaW50IGkgPSAwLCBqID0gMDsNCj4gPiAgICB0cmVlIHRtcF9vcFsyXSwgb3AxOw0KPiA+ ICAgIG9wZXJhbmRfZW50cnkgKm9lOw0KPiA+ICAgIGdpbXBsZSAqc3RtdDEgPSBOVUxMOw0KPiA+ ICAgIHRyZWUgbGFzdF9yaHMxID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChzdG10KTsNCj4gPiArICBp bnQgbGFzdF9yaHMxX3N0bXRfaW5kZXggPSAwLCBsYXN0X3JoczJfc3RtdF9pbmRleCA9IDA7ICBp bnQNCj4gPiArIHdpZHRoX2FjdGl2ZSA9IDAsIHdpZHRoX2NvdW50ID0gMDsgIGJvb2wgaGFzX2Jp YXNlZCA9IGZhbHNlLA0KPiA+ICsgb3BzX2NoYW5nZWQgPSBmYWxzZTsgIGF1dG9fdmVjPG9wZXJh bmRfZW50cnkgKj4gb3BzX25vcm1hbDsNCj4gPiArIGF1dG9fdmVjPG9wZXJhbmRfZW50cnkgKj4g b3BzX2JpYXNlZDsgIHZlYzxvcGVyYW5kX2VudHJ5ICo+ICpvcHMxOw0KPiA+DQo+ID4gICAgLyog V2Ugc3RhcnQgZXhwcmVzc2lvbiByZXdyaXRpbmcgZnJvbSB0aGUgdG9wIHN0YXRlbWVudHMuDQo+ ID4gICAgICAgU28sIGluIHRoaXMgbG9vcCB3ZSBjcmVhdGUgYSBmdWxsIGxpc3Qgb2Ygc3RhdGVt ZW50cyBAQCAtNTUxMCw4Mw0KPiA+ICs1NTM1LDE1NSBAQCByZXdyaXRlX2V4cHJfdHJlZV9wYXJh bGxlbCAoZ2Fzc2lnbiAqc3RtdCwgaW50IHdpZHRoLCBib29sDQo+IGhhc19mbWEsDQo+ID4gICAg Zm9yIChpID0gc3RtdF9udW0gLSAyOyBpID49IDA7IGktLSkNCj4gPiAgICAgIHN0bXRzW2ldID0g U1NBX05BTUVfREVGX1NUTVQgKGdpbXBsZV9hc3NpZ25fcmhzMSAoc3RtdHNbaSsxXSkpOw0KPiA+ DQo+ID4gLSAgLyogV2lkdGggc2hvdWxkIG5vdCBiZSBsYXJnZXIgdGhhbiBvcF9udW0gLyAyLCBz aW5jZSB3ZSBjYW4gbm90DQo+ID4gY3JlYXRlDQo+ID4gKyAgLyogQXZvaWQgYWRkaW5nIGxvb3At Y2FycmllZCBvcHMgdG8gbG9uZyBjaGFpbnMsIGZpcnN0IGZpbHRlciBvdXQgdGhlDQo+ID4gKyAg ICAgbG9vcC1jYXJyaWVkLiAgQnV0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxlbmd0 aCBvZiB0aGUNCj4gcmVtYWluZGVyDQo+ID4gKyAgICAgaXMgbm90IGxlc3MgdGhhbiA0LCB3aGlj aCBpcyB0aGUgc21hbGxlc3Qgb3BzIGxlbmd0aCB3ZSBjYW4gYnJlYWsgdGhlDQo+ID4gKyAgICAg ZGVwZW5kZW5jeS4gICovDQo+ID4gKyAgRk9SX0VBQ0hfVkVDX0VMVCAob3BzLCBpLCBvZSkNCj4g PiArICAgIHsNCj4gPiArICAgICAgaWYgKFRSRUVfQ09ERSAob2UtPm9wKSA9PSBTU0FfTkFNRQ0K PiA+ICsgICAgICAgICAmJiBiaXRtYXBfYml0X3AgKGJpYXNlZF9uYW1lcywgU1NBX05BTUVfVkVS U0lPTiAob2UtPm9wKSkNCj4gPiArICAgICAgICAgJiYgb3Bfbm9ybWFsX251bSA+IDQpDQo+ID4g KyAgICAgICB7DQo+ID4gKyAgICAgICAgIG9wc19iaWFzZWQuc2FmZV9wdXNoIChvZSk7DQo+ID4g KyAgICAgICAgIGhhc19iaWFzZWQgPSB0cnVlOw0KPiA+ICsgICAgICAgICBvcF9ub3JtYWxfbnVt IC0tOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICBlbHNlDQo+ID4gKyAgICAgICBvcHNfbm9y bWFsLnNhZmVfcHVzaCAob2UpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAvKiBXaWR0aCBz aG91bGQgbm90IGJlIGxhcmdlciB0aGFuIG9wcyBsZW5ndGggLyAyLCBzaW5jZSB3ZSBjYW4gbm90 DQo+ID4gKyBjcmVhdGUNCj4gPiAgICAgICBtb3JlIHBhcmFsbGVsIGRlcGVuZGVuY3kgY2hhaW5z IHRoYXQgZXhjZWVkcyBzdWNoIHZhbHVlLiAgKi8NCj4gPiAtICB3aWR0aCA9IHdpZHRoIDw9IG9w X251bSAvIDIgPyB3aWR0aCA6IG9wX251bSAvIDI7DQo+ID4gKyAgaW50IHdpZHRoX25vcm1hbCA9 IG9wX25vcm1hbF9udW0gLyAyOyAgaW50IHdpZHRoX2JpYXNlZCA9IChvcF9udW0gLQ0KPiA+ICsg b3Bfbm9ybWFsX251bSkgLyAyOyAgd2lkdGhfbm9ybWFsID0gd2lkdGggPD0gd2lkdGhfbm9ybWFs ID8gd2lkdGggOg0KPiA+ICsgd2lkdGhfbm9ybWFsOyAgd2lkdGhfYmlhc2VkID0gd2lkdGggPD0g d2lkdGhfYmlhc2VkID8gd2lkdGggOg0KPiA+ICsgd2lkdGhfYmlhc2VkOw0KPiA+ICsNCj4gPiAr ICBvcHMxID0gJm9wc19ub3JtYWw7DQo+ID4gKyAgd2lkdGhfY291bnQgPSB3aWR0aF9hY3RpdmUg PSB3aWR0aF9ub3JtYWw7DQo+ID4NCj4gPiAgICAvKiBCdWlsZCBwYXJhbGxlbCBkZXBlbmRlbmN5 IGNoYWluIGFjY29yZGluZyB0byB3aWR0aC4gICovDQo+ID4gLSAgZm9yIChpID0gMDsgaSA8IHdp ZHRoOyBpKyspDQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IHN0bXRfbnVtOyBpKyspDQo+ID4gICAg ICB7DQo+ID4gLSAgICAgIC8qIElmIHRoZSBjaGFpbiBoYXMgRkFNLCB3ZSBkbyBub3Qgc3dhcCB0 d28gb3BlcmFuZHMuICAqLw0KPiA+IC0gICAgICBpZiAob3BfaW5kZXggPiAxICYmICFoYXNfZm1h KQ0KPiA+IC0gICAgICAgc3dhcF9vcHNfZm9yX2JpbmFyeV9zdG10IChvcHMsIG9wX2luZGV4IC0g Mik7DQo+ID4gLQ0KPiA+IC0gICAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKQ0KPiA+ICsgICAg ICBpZiAoZHVtcF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQ0KPiA+ICAgICAg ICAgew0KPiA+IC0gICAgICAgICBnY2NfYXNzZXJ0IChvcF9pbmRleCA+PSAwKTsNCj4gPiAtICAg ICAgICAgb2UgPSBvcHNbb3BfaW5kZXgtLV07DQo+ID4gLSAgICAgICAgIHRtcF9vcFtqXSA9IG9l LT5vcDsNCj4gPiAtICAgICAgICAgLyogSWYgdGhlIHN0bXQgdGhhdCBkZWZpbmVzIG9wZXJhbmQg aGFzIHRvIGJlIGluc2VydGVkLCBpbnNlcnQgaXQNCj4gPiAtICAgICAgICAgICAgYmVmb3JlIHRo ZSB1c2UuICAqLw0KPiA+IC0gICAgICAgICBzdG10MSA9IG9lLT5zdG10X3RvX2luc2VydDsNCj4g PiAtICAgICAgICAgaWYgKHN0bXQxKQ0KPiA+IC0gICAgICAgICAgIGluc2VydF9zdG10X2JlZm9y ZV91c2UgKHN0bXRzW2ldLCBzdG10MSk7DQo+ID4gLSAgICAgICAgIHN0bXQxID0gTlVMTDsNCj4g PiArICAgICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiVHJhbnNmb3JtaW5nICIpOw0KPiA+ICsg ICAgICAgICBwcmludF9naW1wbGVfc3RtdCAoZHVtcF9maWxlLCBzdG10c1tpXSwgMCk7DQo+ID4g ICAgICAgICB9DQo+ID4gLSAgICAgIHN0bXRzW2ldID0gYnVpbGRfYW5kX2FkZF9zdW0gKFRSRUVf VFlQRSAobGFzdF9yaHMxKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0bXBfb3BbMV0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1w X29wWzBdLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7 DQo+ID4gLSAgICAgIGdpbXBsZV9zZXRfdmlzaXRlZCAoc3RtdHNbaV0sIHRydWUpOw0KPiA+DQo+ ID4gLSAgICAgIGlmIChkdW1wX2ZpbGUgJiYgKGR1bXBfZmxhZ3MgJiBUREZfREVUQUlMUykpDQo+ ID4gKyAgICAgIC8qIFdoZW4gdGhlIHdvcmsgb2Ygbm9ybWFsIG9wcyBpcyBvdmVyLCBidXQgdGhl IGxvb3AgaXMgbm90IG92ZXIsDQo+ID4gKyAgICAgICAgY29udGludWUgdG8gZG8gYmlhc2VkIG9w cy4gICovDQo+ID4gKyAgICAgIGlmICh3aWR0aF9jb3VudCA9PSAwICYmIG9wczEgPT0gJm9wc19u b3JtYWwpDQo+ID4gICAgICAgICB7DQo+ID4gLSAgICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwg IiBpbnRvICIpOw0KPiA+IC0gICAgICAgICBwcmludF9naW1wbGVfc3RtdCAoZHVtcF9maWxlLCBz dG10c1tpXSwgMCk7DQo+ID4gKyAgICAgICAgIG9wczEgPSAmb3BzX2JpYXNlZDsNCj4gPiArICAg ICAgICAgd2lkdGhfY291bnQgPSB3aWR0aF9hY3RpdmUgPSB3aWR0aF9iaWFzZWQ7DQo+ID4gKyAg ICAgICAgIG9wc19jaGFuZ2VkID0gdHJ1ZTsNCj4gPiAgICAgICAgIH0NCj4gPiAtICAgIH0NCj4g Pg0KPiA+IC0gIGZvciAoaSA9IHdpZHRoOyBpIDwgc3RtdF9udW07IGkrKykNCj4gPiAtICAgIHsN Cj4gPiAtICAgICAgLyogV2Uga2VlcCBvcmlnaW5hbCBzdGF0ZW1lbnQgb25seSBmb3IgdGhlIGxh c3Qgb25lLiAgQWxsIG90aGVycyBhcmUNCj4gPiAtICAgICAgICByZWNyZWF0ZWQuICAqLw0KPiA+ IC0gICAgICBpZiAoIG9wX2luZGV4IDwgMCkNCj4gPiArICAgICAgLyogU3dhcCB0aGUgb3BlcmFu ZHMgaWYgbm8gRk1BIGluIHRoZSBjaGFpbi4gICovDQo+ID4gKyAgICAgIGlmIChvcHMxLT5sZW5n dGggKCkgPiAyICYmICFoYXNfZm1hKQ0KPiA+ICsgICAgICAgc3dhcF9vcHNfZm9yX2JpbmFyeV9z dG10ICgqb3BzMSwgb3BzMS0+bGVuZ3RoICgpIC0gMyk7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAo aSA8IHdpZHRoX2FjdGl2ZQ0KPiA+ICsgICAgICAgICB8fCAob3BzX2NoYW5nZWQgJiYgaSA8PSAo bGFzdF9yaHMxX3N0bXRfaW5kZXggKw0KPiA+ICsgd2lkdGhfYWN0aXZlKSkpDQo+ID4gICAgICAg ICB7DQo+ID4gLSAgICAgICAgIGlmICh3aWR0aF9jb3VudCA9PSAyKQ0KPiA+ICsgICAgICAgICBm b3IgKGogPSAwOyBqIDwgMjsgaisrKQ0KPiA+ICAgICAgICAgICAgIHsNCj4gPiAtDQo+ID4gLSAg ICAgICAgICAgICAvKiBXZSBrZWVwIG9yaWdpbmFsIHN0YXRlbWVudCBvbmx5IGZvciB0aGUgbGFz dCBvbmUuICBBbGwNCj4gPiAtICAgICAgICAgICAgICAgIG90aGVycyBhcmUgcmVjcmVhdGVkLiAg Ki8NCj4gPiAtICAgICAgICAgICAgIGdpbXBsZV9hc3NpZ25fc2V0X3JoczEgKHN0bXRzW2ldLCBn aW1wbGVfYXNzaWduX2xocyAoc3RtdHNbaS0xXSkpOw0KPiA+IC0gICAgICAgICAgICAgZ2ltcGxl X2Fzc2lnbl9zZXRfcmhzMiAoc3RtdHNbaV0sIGdpbXBsZV9hc3NpZ25fbGhzIChzdG10c1tpLTJd KSk7DQo+ID4gLSAgICAgICAgICAgICB1cGRhdGVfc3RtdCAoc3RtdHNbaV0pOw0KPiA+ICsgICAg ICAgICAgICAgb2UgPSBvcHMxLT5wb3AgKCk7DQo+ID4gKyAgICAgICAgICAgICB0bXBfb3Bbal0g PSBvZS0+b3A7DQo+ID4gKyAgICAgICAgICAgICAvKiBJZiB0aGUgc3RtdCB0aGF0IGRlZmluZXMg b3BlcmFuZCBoYXMgdG8gYmUgaW5zZXJ0ZWQsIGluc2VydCBpdA0KPiA+ICsgICAgICAgICAgICAg ICAgYmVmb3JlIHRoZSB1c2UuICAqLw0KPiA+ICsgICAgICAgICAgICAgc3RtdDEgPSBvZS0+c3Rt dF90b19pbnNlcnQ7DQo+ID4gKyAgICAgICAgICAgICBpZiAoc3RtdDEpDQo+ID4gKyAgICAgICAg ICAgICAgIGluc2VydF9zdG10X2JlZm9yZV91c2UgKHN0bXRzW2ldLCBzdG10MSk7DQo+ID4gKyAg ICAgICAgICAgICBzdG10MSA9IE5VTEw7DQo+ID4gICAgICAgICAgICAgfQ0KPiA+IC0gICAgICAg ICBlbHNlDQo+ID4gLSAgICAgICAgICAgew0KPiA+ICsgICAgICAgICBzdG10c1tpXSA9IGJ1aWxk X2FuZF9hZGRfc3VtIChUUkVFX1RZUEUgKGxhc3RfcmhzMSksDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9vcFsxXSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG1wX29wWzBdLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOw0KPiA+ICsgICAgICAgICBnaW1wbGVfc2V0 X3Zpc2l0ZWQgKHN0bXRzW2ldLCB0cnVlKTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgc3RtdHNb aV0gPQ0KPiA+IC0gICAgICAgICAgICAgICBidWlsZF9hbmRfYWRkX3N1bSAoVFJFRV9UWVBFIChs YXN0X3JoczEpLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ltcGxl X2Fzc2lnbl9saHMgKHN0bXRzW2ktd2lkdGhfY291bnRdKSwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdpbXBsZV9hc3NpZ25fbGhzIChzdG10c1tpLXdpZHRoX2NvdW50 KzFdKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7DQo+ ID4gLSAgICAgICAgICAgICBnaW1wbGVfc2V0X3Zpc2l0ZWQgKHN0bXRzW2ldLCB0cnVlKTsNCj4g PiAtICAgICAgICAgICAgIHdpZHRoX2NvdW50LS07DQo+ID4gLSAgICAgICAgICAgfQ0KPiA+ICAg ICAgICAgfQ0KPiA+ICAgICAgICBlbHNlDQo+ID4gICAgICAgICB7DQo+ID4gLSAgICAgICAgIC8q IEF0dGFjaCB0aGUgcmVzdCBvZiB0aGUgb3BzIHRvIHRoZSBwYXJhbGxlbCBkZXBlbmRlbmN5IGNo YWluLiAgKi8NCj4gPiAtICAgICAgICAgb2UgPSBvcHNbb3BfaW5kZXgtLV07DQo+ID4gLSAgICAg ICAgIG9wMSA9IG9lLT5vcDsNCj4gPiAtICAgICAgICAgc3RtdDEgPSBvZS0+c3RtdF90b19pbnNl cnQ7DQo+ID4gLSAgICAgICAgIGlmIChzdG10MSkNCj4gPiAtICAgICAgICAgICBpbnNlcnRfc3Rt dF9iZWZvcmVfdXNlIChzdG10c1tpXSwgc3RtdDEpOw0KPiA+IC0gICAgICAgICBzdG10MSA9IE5V TEw7DQo+ID4gLSAgICAgICAgIHN0bXRzW2ldID0gYnVpbGRfYW5kX2FkZF9zdW0gKFRSRUVfVFlQ RSAobGFzdF9yaHMxKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXRzW2ktd2lkdGhdKSwNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AxLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOw0KPiA+IC0gICAgICAgICBnaW1wbGVfc2V0X3Zp c2l0ZWQgKHN0bXRzW2ldLCB0cnVlKTsNCj4gPiArICAgICAgICAgLyogV2Uga2VlcCBvcmlnaW5h bCBzdGF0ZW1lbnQgb25seSBmb3IgdGhlIGxhc3Qgb25lLiAgQWxsIG90aGVycyBhcmUNCj4gPiAr ICAgICAgICAgICAgcmVjcmVhdGVkLiAgKi8NCj4gPiArICAgICAgICAgaWYgKCFvcHMxLT5sZW5n dGggKCkpDQo+ID4gKyAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgLyogRm9yIGJpYXNl ZCBsZW5ndGggZXF1YWwgdG8gMi4gICovDQo+ID4gKyAgICAgICAgICAgICBpZiAod2lkdGhfY291 bnQgPT0gQklBU0VEX0VORF9TVE1UICYmICFsYXN0X3JoczJfc3RtdF9pbmRleCkNCj4gPiArICAg ICAgICAgICAgICAgbGFzdF9yaHMyX3N0bXRfaW5kZXggPSBpIC0gMTsNCj4gPiArDQo+ID4gKyAg ICAgICAgICAgICAvKiBXaGVuIHdpZHRoX2NvdW50ID09IDIgYW5kIHRoZXJlIGlzIG5vIGJpYXNl ZCwganVzdCBmaW5pc2guICAqLw0KPiA+ICsgICAgICAgICAgICAgaWYgKHdpZHRoX2NvdW50ID09 IE5PUk1BTF9FTkRfU1RNVCAmJiAhaGFzX2JpYXNlZCkNCj4gPiArICAgICAgICAgICAgICAgew0K PiA+ICsgICAgICAgICAgICAgICAgIGxhc3RfcmhzMV9zdG10X2luZGV4ID0gaSAtIDE7DQo+ID4g KyAgICAgICAgICAgICAgICAgbGFzdF9yaHMyX3N0bXRfaW5kZXggPSBpIC0gMjsNCj4gPiArICAg ICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgaWYgKGxhc3RfcmhzMV9zdG10X2luZGV4 ICYmIChsYXN0X3JoczJfc3RtdF9pbmRleCB8fCAhaGFzX2JpYXNlZCkpDQo+ID4gKyAgICAgICAg ICAgICAgIHsNCj4gPiArICAgICAgICAgICAgICAgICAvKiBXZSBrZWVwIG9yaWdpbmFsIHN0YXRl bWVudCBvbmx5IGZvciB0aGUgbGFzdCBvbmUuICBBbGwNCj4gPiArICAgICAgICAgICAgICAgICAg ICBvdGhlcnMgYXJlIHJlY3JlYXRlZC4gICovDQo+ID4gKyAgICAgICAgICAgICAgICAgZ2ltcGxl X2Fzc2lnbl9zZXRfcmhzMSAoc3RtdHNbaV0sIGdpbXBsZV9hc3NpZ25fbGhzDQo+IChzdG10c1ts YXN0X3JoczFfc3RtdF9pbmRleF0pKTsNCj4gPiArICAgICAgICAgICAgICAgICBnaW1wbGVfYXNz aWduX3NldF9yaHMyIChzdG10c1tpXSwgZ2ltcGxlX2Fzc2lnbl9saHMNCj4gKHN0bXRzW2xhc3Rf cmhzMl9zdG10X2luZGV4XSkpOw0KPiA+ICsgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdG10IChz dG10c1tpXSk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGVsc2UN Cj4gPiArICAgICAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgICAgIHN0bXRzW2ldID0N Cj4gPiArICAgICAgICAgICAgICAgICAgIGJ1aWxkX2FuZF9hZGRfc3VtIChUUkVFX1RZUEUgKGxh c3RfcmhzMSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lt cGxlX2Fzc2lnbl9saHMgKHN0bXRzW2ktd2lkdGhfY291bnRdKSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW1wbGVfYXNzaWduX2xocyAoc3RtdHNbaS13aWR0 aF9jb3VudCsxXSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3Bjb2RlKTsNCj4gPiArICAgICAgICAgICAgICAgICBnaW1wbGVfc2V0X3Zpc2l0ZWQgKHN0bXRz W2ldLCB0cnVlKTsNCj4gPiArICAgICAgICAgICAgICAgICB3aWR0aF9jb3VudC0tOw0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgICAgICAvKiBJdCBpcyB0aGUgZW5kIG9mIG5vcm1hbCBvciBiaWFz ZWQgb3BzLg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGxhc3RfcmhzMV9zdG10X2luZGV4IHVz ZWQgdG8gcmVjb3JkIHRoZSBsYXN0IHN0bXQgaW5kZXgNCj4gPiArICAgICAgICAgICAgICAgICAg ICBmb3Igbm9ybWFsIG9wcy4gIGxhc3RfcmhzMl9zdG10X2luZGV4IHVzZWQgdG8gcmVjb3JkIHRo ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGxhc3Qgc3RtdCBpbmRleCBmb3IgYmlhc2VkIG9w cy4gICovDQo+ID4gKyAgICAgICAgICAgICAgICAgaWYgKHdpZHRoX2NvdW50ID09IEJJQVNFRF9F TkRfU1RNVCkNCj4gPiArICAgICAgICAgICAgICAgICAgIHsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgZ2NjX2Fzc2VydCAoaGFzX2JpYXNlZCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGlmIChvcHNfYmlhc2VkLmxlbmd0aCAoKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBs YXN0X3JoczFfc3RtdF9pbmRleCA9IGk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGVsc2UN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3JoczJfc3RtdF9pbmRleCA9IGk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHdpZHRoX2NvdW50LS07DQo+ID4gKyAgICAgICAgICAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICB9DQo+ID4g KyAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAvKiBB dHRhY2ggdGhlIHJlc3Qgb2YgdGhlIG9wcyB0byB0aGUgcGFyYWxsZWwgZGVwZW5kZW5jeSBjaGFp bi4gICovDQo+ID4gKyAgICAgICAgICAgICBvZSA9IG9wczEtPnBvcCAoKTsNCj4gPiArICAgICAg ICAgICAgIG9wMSA9IG9lLT5vcDsNCj4gPiArICAgICAgICAgICAgIHN0bXQxID0gb2UtPnN0bXRf dG9faW5zZXJ0Ow0KPiA+ICsgICAgICAgICAgICAgaWYgKHN0bXQxKQ0KPiA+ICsgICAgICAgICAg ICAgICBpbnNlcnRfc3RtdF9iZWZvcmVfdXNlIChzdG10c1tpXSwgc3RtdDEpOw0KPiA+ICsgICAg ICAgICAgICAgc3RtdDEgPSBOVUxMOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIC8qIEZvciBv bmx5IG9uZSBiaWFzZWQgb3BzLiAgKi8NCj4gPiArICAgICAgICAgICAgIGlmICh3aWR0aF9jb3Vu dCA9PSBTUEVDSUFMX0JJQVNFRF9FTkRfU1RNVCkNCj4gPiArICAgICAgICAgICAgICAgew0KPiA+ ICsgICAgICAgICAgICAgICAgIC8qIFdlIGtlZXAgb3JpZ2luYWwgc3RhdGVtZW50IG9ubHkgZm9y IHRoZSBsYXN0IG9uZS4gIEFsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIG90aGVycyBhcmUg cmVjcmVhdGVkLiAgKi8NCj4gPiArICAgICAgICAgICAgICAgICBnY2NfYXNzZXJ0IChoYXNfYmlh c2VkKTsNCj4gPiArICAgICAgICAgICAgICAgICBnaW1wbGVfYXNzaWduX3NldF9yaHMxIChzdG10 c1tpXSwgZ2ltcGxlX2Fzc2lnbl9saHMNCj4gKHN0bXRzW2xhc3RfcmhzMV9zdG10X2luZGV4XSkp Ow0KPiA+ICsgICAgICAgICAgICAgICAgIGdpbXBsZV9hc3NpZ25fc2V0X3JoczIgKHN0bXRzW2ld LCBvcDEpOw0KPiA+ICsgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdG10IChzdG10c1tpXSk7DQo+ ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAg ICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAgICAgIHN0bXRzW2ldID0gYnVpbGRfYW5kX2Fk ZF9zdW0gKFRSRUVfVFlQRSAobGFzdF9yaHMxKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW1wbGVfYXNzaWduX2xocyAoc3RtdHNbaS13aWR0 aF9hY3RpdmVdKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcDEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3Bjb2RlKTsNCj4gPiArICAgICAgICAgICAgICAgICBnaW1wbGVfc2V0X3Zpc2l0 ZWQgKHN0bXRzW2ldLCB0cnVlKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAg ICAgIH0NCj4gPiAgICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICBpZiAoZHVtcF9maWxlICYmIChk dW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKSBAQCAtNTU5NSw2ICs1NjkyLDcNCj4gPiBAQCByZXdy aXRlX2V4cHJfdHJlZV9wYXJhbGxlbCAoZ2Fzc2lnbiAqc3RtdCwgaW50IHdpZHRoLCBib29sIGhh c19mbWEsDQo+ID4gICAgICAgICAgIHByaW50X2dpbXBsZV9zdG10IChkdW1wX2ZpbGUsIHN0bXRz W2ldLCAwKTsNCj4gPiAgICAgICAgIH0NCj4gPiAgICAgIH0NCj4gPiArDQo+ID4gICAgcmVtb3Zl X3Zpc2l0ZWRfc3RtdF9jaGFpbiAobGFzdF9yaHMxKTsgIH0NCj4gPg0KPiA+IC0tDQo+ID4gMi4y NS4xDQo+ID4NCg==