From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by sourceware.org (Postfix) with ESMTPS id 2CA473858012 for ; Tue, 20 Sep 2022 06:36:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2CA473858012 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=1663655805; x=1695191805; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Y6Dxs5NLaBqnN0I2yuwogWoYrCECbT+DJUN9AcGMzxM=; b=IbtfTcGzQ7OWrrzP5ufpCuZL+erYVoURWMS7RoeTFKVDBNwgqhI3bjQB jbOYgv1hN0hNMD3LBEHSPOWg/S0A90OXwRcl8Hfzk5ixghlhjpEvTUfTF k49O1JBm4AtkeCSqW/DsA1qOYD3gHW/7z/4YTbMzkn2ShDTMWM1OD5D8l tktfO9jjCMwJcqqiIHUdOR+bEQ8pA5OPdpjI7Q2DI33On7DWRnTePAi+u hrtIpA4ld6UL/ZvN9ktjlxAMxfGVbAExh2oitgsR4h/lh85hR9oxk9O7r DptqLdvN5+ZTHbRE/GL1xJ5J8vAn3ANKprNZi/XranQqX7ZQ5KZTLRw8k A==; X-IronPort-AV: E=McAfee;i="6500,9779,10475"; a="363571503" X-IronPort-AV: E=Sophos;i="5.93,329,1654585200"; d="scan'208";a="363571503" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Sep 2022 23:36:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,329,1654585200"; d="scan'208";a="596394562" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 19 Sep 2022 23:36:44 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) 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.2375.31; Mon, 19 Sep 2022 23:36:43 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 19 Sep 2022 23:36:43 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Mon, 19 Sep 2022 23:36:43 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.108) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Mon, 19 Sep 2022 23:36:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X/xyConHS4I3390hpIRy7P1u8vQbOpnRmtcO2Dc3dMPkrRLHapppozeS77jhAzJqoo1xzUMMiat4pUG9QWrnO6kiAKsVQjhxzhFu0vbMY4ffPhGPlkWWgQ5HfaosEHiCbITu6XCajtNgrVttTSJ3fjaEKNFyqst7KrCigwzrkLyQH0LFnBz5z7z4FSvfA59bhdp75eC7I9vUmUz2QbUNEzYp+72oaWZqXx8/VZtqpy6JL4qrbcjKMAPuSbKXUgBj1OFlMwh4EqtDlkUqCkmp8IvyeFtsFDd2kaHgwFCbEDV/5tv9DfafddyhaNGGzVVZl5NrwqogiRk/O1wA4cWf1A== 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=Y6Dxs5NLaBqnN0I2yuwogWoYrCECbT+DJUN9AcGMzxM=; b=I6VFbfYeRMCd8Py1RTcrw5mFyo4cQ3Nl+eqblT+rP5YZVUk7x8BsFoFzqsv9Q3JOb7JjfFFcinqBmg5yQEv7Cka08znFV3H8yCNjAjgT1qnZNCNM+ZmLcleKs8WVKrVspvyuwmlWL+4s4OZkRIFex4oo6OR2oBnoeuERGfYXGmq2NCvXkbDBJZn15Oq0260DpDJZ51qdy4y0XKgzauSaQRmlx4OJKW6ylUaeb94L8V0NwBNXvCzND6lHqGyJER26lbYH3rfvbvVF1UiRYHPB+rICKvYQPlK76LAHlh9dqZcqUIBrzlNJ66mL3rcMJ2lMwor7O1aR4GiUKaSdffunUQ== 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 DM4PR11MB5487.namprd11.prod.outlook.com (2603:10b6:5:39f::22) by IA1PR11MB6073.namprd11.prod.outlook.com (2603:10b6:208:3d7::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Tue, 20 Sep 2022 06:36:41 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::94e2:342:174b:fa03]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::94e2:342:174b:fa03%7]) with mapi id 15.20.5654.014; Tue, 20 Sep 2022 06:36:41 +0000 From: "Kong, Lingling" To: Richard Biener CC: "Liu, Hongtao" , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] Enhance final_value_replacement_loop to handle bitop with an invariant induction.[PR105735] Thread-Topic: [PATCH] Enhance final_value_replacement_loop to handle bitop with an invariant induction.[PR105735] Thread-Index: AdiyzcjTCPng9VotSJ+bADYz6wSZJQD8+UWABB8RxqAANQ0lAABYGGWgANE9KRA= Date: Tue, 20 Sep 2022 06:36:41 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action 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: DM4PR11MB5487:EE_|IA1PR11MB6073:EE_ x-ms-office365-filtering-correlation-id: 91d498f8-6534-43ab-03ce-08da9ad27a62 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2melZPpVYieA5S5wBMv4N6+VokSzkz4dC7CijuV1vcf/N4ePQYi1qkplO4+mxRzeFHtao50kdz5G72yov4SCF2cL6ioZhK2owWHmhX1cxzjevPWoabBqntDOXe5RKhV2QKHEIuGeoD6yQrQYylDTj920Wo8luiwtAaV0ZBFO6iP5lUT1w9XgOvnzXOzTxM02eokj7fY7p9GcAWlSCFHGoh2VG70pCJLjVYz4MMXYSqBSpeQURx7QofCBWTSLtF/wu4VrfftQAOhox2KT+kvsfkvt5f/577w5U6UfP1jI2XJes6lt01LsAa4W3SyBIGk5J+tQBHAdilhUeGUrF//hy4WJjyw91JuG3s9iLZak+g6iwsJRg+JrdcukuOmdWusX64HF91qJAR9VvPcc3PErYF2dioVPM3cQ9n71Zguv4n4plG2s1Pntli+4f46I2+3Vwmy4wcVoHu4UB8xYlk3OeN/vppFGpkAe3puNmEgM4zALDR/VuU0m6F3NDA42eNmwA80oE2dRaFb0N+eOgxByOGQ/srDLN9T73opv8AAy0WbDMWudAH9OMESCrkIcqmpANgN2Fz3ilQe3tqUPMiLZ0vb1BmoWBMMGBcY7NiR8alwp2+fRFQa80D8ylu6EpAFo80ch30y86PwgKN15LQEbfazWXEFpi4hqX4ELvIdFbMTshuMesz1HRnp54FJ6xlWaoouCJ8zmtIlEAPqEfM2vU6af1bQoJzEmR6bhil+5r/vso8c5GxT8pesVtY/aoym9VAi5zSQqpnF13JD6aF4KW4NXxwQuvvCYKGWsDx1fKz4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5487.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(366004)(396003)(376002)(136003)(39860400002)(451199015)(82960400001)(4326008)(8676002)(66946007)(64756008)(38070700005)(38100700002)(55016003)(8936002)(66476007)(41300700001)(84970400001)(83380400001)(66446008)(66556008)(33656002)(6506007)(478600001)(76116006)(52536014)(5660300002)(86362001)(7696005)(186003)(30864003)(2906002)(26005)(53546011)(9686003)(122000001)(316002)(6916009)(71200400001)(54906003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WjJPVDQxUThsT05aRDl6NzdSQXRFMitnNkJtdmszOFh5TUFVRmJ5Z2R4d2xi?= =?utf-8?B?OHdHU1ZRRVFZVS9YWndXSUE1NWw3ak1zWlE3N3kwaWEvM0xEMXd2aWU1Wk9V?= =?utf-8?B?OWwrckdpQ2lCR2RWd3dDOXd1M0JMTWxzVlppQjR6NXNoYTZOcjhmUC9NTWhX?= =?utf-8?B?WTUzd3ZJT3VjZkNQVncvNG90QkJwSjk2Y0dlZzF0azFpZnBDTTRtdmZBc3RP?= =?utf-8?B?UHgrcWNoNWhJZEw5YXFPRndKTE4rOGdObE4ybm1mMWZkNHpYOTN2SHNDY2tQ?= =?utf-8?B?QnRGMm02Zkx1TDdldjV4dUI0UmZhaFE3Uit6bTBtRWdYRDNueVJzMlJ6azBo?= =?utf-8?B?Y01NelVKVEZ6aTl6SUNBZVY2Vk5DRjJqU2s3L0xZUHpSbjh2RHo3WjVpb2hL?= =?utf-8?B?NEdBR000VGkyMXR4N091OWlnY25JVmNkVk5kUEFrM0FNN29pNS90QjRHbDlx?= =?utf-8?B?MW1POW5pQ3JvTGIxVVFlblhpMW9yaC9RQUlsRTk5TmRhUnZ6and1dnJYdVVP?= =?utf-8?B?Z0tHSFM5Y3d1WFVzWUZrM0orRVZBOHRzbFpGTGNBS1FGNGtOQ1RGc1puNUg1?= =?utf-8?B?emZ1cEMzY013UHBNM0l3d3U2TFpxYk5Hb2FiZGFUd0JoMzZuTGVSLzQzV1Vk?= =?utf-8?B?VDR2dVhlb1M2c1dLQUxDaEZvc3NZMDA1cGl4K0g4QlcvMEZFN3AvWnFCaEQv?= =?utf-8?B?NjdvQXZBR2dRQjJnL1FDU1FiZmxTQzI3bHRsN21hZGFuL0dSYk9PZDhoeVBZ?= =?utf-8?B?cTFwS3VIUjJFMTg0WjF5U0FqODZUWmNKY2tJVnZvTVBGbExxYVhCcUViU1RO?= =?utf-8?B?V2t6N0g1NHh6dk9abVFsOHNvYk83SjYzcGV6NHJyU2MrbVdtRFBOdkRMUksw?= =?utf-8?B?eGltbUVBTUdLSzQxdndIOFlzd1pmcTJiOU1NakwvT1lNWEVvQkp5Y0pRclUv?= =?utf-8?B?L0JncEtocDdaOTQvZ1ZDbUxBbVBzUG04bTBQWGs4YWFPVDdSZ2hZMm5WaERW?= =?utf-8?B?bVpWRXJPUVdiQkVKMGdjZXJHN25meWl6NzRmaysxTVREcS9UYisxTFhMcHhu?= =?utf-8?B?MjU5WGppeFhmeDM0bkpaaVllNEVtWG5HL3NLaE12VE51a3hTb0d1UzY1b1o2?= =?utf-8?B?N2xxRVkzRktDZXl6TStVTnh5VnNzV05sekJmSmJ0ZTYvQzd6dHVWZHNpQVdZ?= =?utf-8?B?MklFWTgxNnJjVmdXVCs2eEhJZE5xZzZDbEZTRVBQSWV0RTBVZ1AxWXI3eDBN?= =?utf-8?B?aGo1QnpFdXYrMFdSRXJRSlI3UmxpZzZjZHBPRUlkTzBBLzJ1NzZJcHowaERY?= =?utf-8?B?NVVTVk04SjNINzU0L3VzMVN6ekswRHQxTFJteGpKenpGR1R5ZWtTUDNjZkxo?= =?utf-8?B?QTJYaytDK2ZDd2dEK09ZZzNacHQ3U0pseFdDTy9nOVN2OHRXRDBDOG5GV1g5?= =?utf-8?B?em15T0REZ2xMZ0o0TkduS2FCV3ZscWdUcm1wdFR1cXZNbWgreUhXQXpKR2Zj?= =?utf-8?B?dCs4ZG1nRE5ZVW5HTFc1dnpSZzhuKzdxT2JWRUY1LzgwUlIwdHZwNTdpazdn?= =?utf-8?B?aTFubFlFcktrdVV1SmErZTVrcmxDQzVUMTYyRkowMVQ4UGFiSXlYUTdUcXRk?= =?utf-8?B?WU1Uc2dkYVdrVFFTVlh2RFdBMTI4ZnZTSHRselRzU25PVkNUcnhibk5oalVK?= =?utf-8?B?RFhjeEhGMFVCcGEzZ1Z0K2JRelZqSHVrRy81VU1nMUFyMldJSjBLSGN1alJI?= =?utf-8?B?N29Md1FNa0tMaDRIMWcwdlA5Qk1sRmRwV1ZwOEtGL2o2VnZPejRwNURncWN2?= =?utf-8?B?bzFHd2w1cEExbkZVbXVROUg0aHp3U3lPZjROekpOT0pReDljQlJhdVZscGlG?= =?utf-8?B?VlVKNm9YeXA1czVTRWhCNjRSSmxTTmtvaDZKd28zOXVLV2RTZ21MaWRycFpw?= =?utf-8?B?MUgxYitZOSsvWFpqa2xJWFRMWWV4ZDcxeW9zWWkvdzVhWEpwUGE4Rkh6bW5a?= =?utf-8?B?Z1FSejNTc0ZKWTJqL08rRHRTL2RyV0l2RitXY1JLLzQxeUhvcWo5UVdqckpW?= =?utf-8?B?YkZWMVFXdFNnRXErUWdPdjU3ZC9OT3VVSVdOWEdWZGpqWDFrT2hUYVJWZVBp?= =?utf-8?Q?WSBbBwZuTE3qAtOgnMzp3K1NN?= 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: DM4PR11MB5487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91d498f8-6534-43ab-03ce-08da9ad27a62 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2022 06:36:41.3243 (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: cg/PD9b22tDTJXk3sxexaGyj1zd3HDs1m+spY7WwIx/rENcxIc73MQujNccNY5ovimRiCNVgJUrJRcW8kEPsJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6073 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,TXREP 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: VGhhbmtzIGEgbG90LCBwdXNoZWQgdG8gdHJ1bmsuDQoNCj4gSGkgUmljaGFyZCwNCj4gDQo+IFRo YW5rcyBhZ2FpbiBmb3IgeW91ciByZXZpZXdpbmcuDQo+IA0KPiA+IFllcywgdXNlIGVsc2UgaWYg Zm9yIHRoZSBiaXR3aXNlIGluZHVjdGlvbi4gIENhbiB5b3UgYWxzbyBtYWtlIHRoZSBuZXcNCj4g PiBjYXNlIGNvbmRpdGlvbmFsIG9uICdkZWYnDQo+ID4gKHRoZSBjb21wdXRlX292ZXJhbGxfZWZm ZWN0X29mX2lubmVyX2xvb3ApIGJlaW5nIGNocmVjX2RvbnRfa25vdz8gIElmDQo+ID4gdGhhdCBj YWxsIHByb2R1Y2VkIHNvbWV0aGluZyB1c2VmdWwgaXQgd2lsbCBub3QgYmUgb2YgZWl0aGVyIG9m IHRoZSB0d28gc3BlY2lhbA0KPiBmb3Jtcy4NCj4gPiBUaHVzIGxpa2UNCj4gPg0KPiA+ICAgaWYg KGRlZiAhPSBjaHJlY19kb250X2tub3cpDQo+ID4gICAgIC8qIEFscmVhZHkgT0suICAqLw0KPiA+ ICAgICA7DQo+ID4gIGVsc2UgaWYgKChiaXRpbnZfZGVmID0gLi4uKQ0KPiA+ICAgICAuLg0KPiA+ ICBlbHNlIGlmICh0cmVlX2ZpdHNfdWh3aV9wIChuaXRlcikNCj4gPiAgICAgICAgICAgICAgLi4u IGJpdHdpc2UgaW5kdWN0aW9uIGNhc2UuLi4pDQo+ID4gICAgIC4uLg0KPiA+DQo+IFllcywgSSBm aXhlZCBpdCBpbiBuZXcgcGF0Y2guIFRoYW5rcy4NCj4gT2sgZm9yIG1hc3RlciA/DQo+IA0KPiBU aGFua3MsDQo+IExpbmdsaW5nDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gRnJvbTogUmljaGFyZCBCaWVuZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPg0KPiA+ IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDE0LCAyMDIyIDQ6MTYgUE0NCj4gPiBUbzogS29u ZywgTGluZ2xpbmcgPGxpbmdsaW5nLmtvbmdAaW50ZWwuY29tPg0KPiA+IENjOiBnY2MtcGF0Y2hl c0BnY2MuZ251Lm9yZzsgTGl1LCBIb25ndGFvIDxob25ndGFvLmxpdUBpbnRlbC5jb20+DQo+ID4g U3ViamVjdDogUmU6IFtQQVRDSF0gRW5oYW5jZSBmaW5hbF92YWx1ZV9yZXBsYWNlbWVudF9sb29w IHRvIGhhbmRsZQ0KPiA+IGJpdG9wIHdpdGggYW4gaW52YXJpYW50IGluZHVjdGlvbi5bUFIxMDU3 MzVdDQo+ID4NCj4gPiBPbiBUdWUsIFNlcCAxMywgMjAyMiBhdCA5OjU0IEFNIEtvbmcsIExpbmds aW5nDQo+ID4gPGxpbmdsaW5nLmtvbmdAaW50ZWwuY29tPg0KPiA+IHdyb3RlOg0KPiA+ID4NCj4g PiA+IEhpIFJpY2hhcmQsDQo+ID4gPg0KPiA+ID4gVGhhbmtzIHlvdSBzbyBtdWNoIGZvciByZXZp ZXdpbmcgdGhpcyBwYXRjaC4gIEkgcmVhbGx5IGFwcHJlY2lhdGUNCj4gPiA+IGl0LiBGb3IgdGhl c2UNCj4gPiByZXZpZXcgY29tbWVudHMsIEkgaGF2ZSBtYWRlIHNvbWUgY2hhbmdlcy4NCj4gPiA+ DQo+ID4gPiA+IFRoYXQncyBhIHNpbmdsZS1zdG10IG1hdGNoLCB5b3Ugc2hvdWxkbid0IHVzZSBt YXRjaC5wZCBtYXRjaGluZyBmb3IgdGhpcy4NCj4gPiA+ID4gSW5zdGVhZCBqdXN0IGRvDQo+ID4g PiA+DQo+ID4gPiA+ICAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKHN0bXQpDQo+ID4gPiA+ICAgICAg ICYmICgoY29kZSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpKSwgdHJ1ZSkNCj4gPiA+ ID4gICAgICAgJiYgKGNvZGUgPT0gQklUX0FORF9FWFBSIHx8IGNvZGUgPT0gQklUX0lPUl9FWFBS IHx8IGNvZGUgPT0NCj4gPiA+ID4gQklUX1hPUl9FWFBSKSkNCj4gPiA+DQo+ID4gPiBZZXMsIEkg Zml4ZWQgaXQgYW5kIGRyb3BwZWQgbW9kaWZpY2F0aW9uIGZvciBtYXRjaC5wZC4NCj4gPiA+DQo+ ID4gPiA+IGFuZCBwaWNrIGdpbXBsZV9hc3NpZ25fcmhzezEsMn0gKHN0bXQpIGFzIHRoZSBvcGVy YW5kcy4gIFRoZSA6YyBpbg0KPiA+ID4gPiBiaXRfb3A6YyBpcyByZWR1bmRhbnQgYnR3LiAtIHdo aWxlIHRoZSBuYW1lIHN1Z2dlc3RzICJ3aXRoDQo+ID4gPiA+IGludmFyaWFudCIgeW91IGRvbid0 IGFjdHVhbGx5IGNoZWNrIGZvciB0aGF0LiAgQnV0IGFnYWluLCBnaXZlbg0KPiA+ID4gPiBjYW5v bmljYWxpemF0aW9uIHJ1bGVzIHRoZSBpbnZhcmlhbnQgd2lsbCBiZSByaHMyIHNvIGFib3ZlIGFk ZA0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgICYmIFRSRUVfQ09ERSAoZ2ltcGxlX2Fzc2lnbl9y aHMyIChzdG10KSkgPT0gSU5URUdFUl9DU1QNCj4gPiA+DQo+ID4gPiBGb3IgIiB3aXRoIGludmFy aWFudCIsIHRoaXMgbmVlZGVkIG9wMSBpcyBpbnZhcmlhbnQsIGFuZCBJIHVzZWQNCj4gPiBgZXhw cl9pbnZhcmlhbnRfaW5fbG9vcF9wIChsb29wLCBtYXRjaF9vcFswXSlgIGZvciBjaGVjay4NCj4g PiA+IEFuZCBvcDIganVzdCBiZSBQSEkgaXMgb2suIElmIG9wMiBpcyBJTlRFR0VSX0NTVCwgZXhp c3RpbmcgZ2NjIGNhbg0KPiA+ID4gYmUgZGlyZWN0bHkNCj4gPiBvcHRpbWl6ZWQgYW5kIGRvIG5v dCBuZWVkIG1vZGlmaWNhdGlvbi4NCj4gPiA+DQo+ID4gPiA+IHlvdSBwcm9iYWJseSBuZWVkIGRn LXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBsb25nbG9uZywgYnV0IGlzIGl0DQo+ID4gPiA+IG5l Y2Vzc2FyeSB0byB1c2UgbG9uZyBsb25nIGZvciB0aGUgdGVzdGNhc2VzIGluIHRoZSBmaXJzdCBw bGFjZT8NCj4gPiA+ID4gVGhlIElWIHNlZW1zIHRvIGJlIHVudXNlZCwgaWYgaXQgc2hvdWxkIG1h dGNoIHRoZSB2YXJpYWJsZXMgYml0DQo+ID4gPiA+IHNpemUgdXNlIHNpemVvZg0KPiA+ID4gPiAo dHlwZSkgKiA4DQo+ID4gPg0KPiA+ID4gWWVzLCBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHVzZSBs b25nIGxvbmcgZm9yIHRoZSB0ZXN0Y2FzZXMuIEkNCj4gPiA+IGNoYW5nZWQgdHlwZSB0bw0KPiA+ IHVuc2lnbmVkIGludC4NCj4gPiA+DQo+ID4gPiA+ID4gKyAgaW52ID0gUEhJX0FSR19ERUZfRlJP TV9FREdFIChoZWFkZXJfcGhpLCBsb29wX3ByZWhlYWRlcl9lZGdlDQo+ID4gPiA+ID4gKyAobG9v cCkpOyAgcmV0dXJuIGZvbGRfYnVpbGQyIChjb2RlMSwgdHlwZSwgaW52LCBtYXRjaF9vcFswXSk7 DQo+ID4gPiA+ID4gKyB9DQo+ID4gPiA+DQo+ID4gPiA+IFRoZSB9IGdvZXMgdG8gdGhlIG5leHQg bGluZS4NCj4gPiA+DQo+ID4gPiBTb3JyeSwgSXQgbWlnaHQgYmUgc29tZXRoaW5nIHdyb25nIHdp dGggbXkgdXNlIG9mIGdjYyBzZW5kLWVtYWlsIGZvcm1hdC4NCj4gPiA+DQo+ID4gPiA+ID4gKyAg ICAgIHRyZWUgYml0aW52X2RlZjsNCj4gPiA+ID4gPiArICAgICAgaWYgKChiaXRpbnZfZGVmDQo+ ID4gPiA+DQo+ID4gPiA+IHBsZWFzZSB1c2UgZWxzZSBpZiBoZXJlDQo+ID4gPg0KPiA+ID4gU29y cnksIElmIHVzZSB0aGUgZWxzZSBpZiBoZXJlLCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGFi b3ZlIGlmLg0KPiA+ID4gSSdtIG5vdCBzdXJlIGlmDQo+ID4geW91IG1lYW4gY2hhbmdlIGJpdHdp c2UgaW5kdWN0aW9uIGV4cHJlc3Npb24gaWYgdG8gZWxzZSBpZi4NCj4gPg0KPiA+IFllcywgdXNl IGVsc2UgaWYgZm9yIHRoZSBiaXR3aXNlIGluZHVjdGlvbi4gIENhbiB5b3UgYWxzbyBtYWtlIHRo ZSBuZXcNCj4gPiBjYXNlIGNvbmRpdGlvbmFsIG9uICdkZWYnDQo+ID4gKHRoZSBjb21wdXRlX292 ZXJhbGxfZWZmZWN0X29mX2lubmVyX2xvb3ApIGJlaW5nIGNocmVjX2RvbnRfa25vdz8gIElmDQo+ ID4gdGhhdCBjYWxsIHByb2R1Y2VkIHNvbWV0aGluZyB1c2VmdWwgaXQgd2lsbCBub3QgYmUgb2Yg ZWl0aGVyIG9mIHRoZSB0d28gc3BlY2lhbA0KPiBmb3Jtcy4NCj4gPiBUaHVzIGxpa2UNCj4gPg0K PiA+ICAgaWYgKGRlZiAhPSBjaHJlY19kb250X2tub3cpDQo+ID4gICAgIC8qIEFscmVhZHkgT0su ICAqLw0KPiA+ICAgICA7DQo+ID4gIGVsc2UgaWYgKChiaXRpbnZfZGVmID0gLi4uKQ0KPiA+ICAg ICAuLg0KPiA+ICBlbHNlIGlmICh0cmVlX2ZpdHNfdWh3aV9wIChuaXRlcikNCj4gPiAgICAgICAg ICAgICAgLi4uIGJpdHdpc2UgaW5kdWN0aW9uIGNhc2UuLi4pDQo+ID4gICAgIC4uLg0KPiA+DQo+ ID4gPw0KPiA+DQo+ID4gT3RoZXJ3aXNlIGxvb2tzIE9LIG5vdy4NCj4gPg0KPiA+IFRoYW5rcywN Cj4gPiBSaWNoYXJkLg0KPiA+DQo+ID4gPiBEbyB5b3UgYWdyZWUgd2l0aCB0aGVzZSBjaGFuZ2Vz PyAgVGhhbmtzIGFnYWluIGZvciB0YWtpbmcgYSBsb29rLg0KPiA+ID4NCj4gPiA+IFRoYW5rcywN Cj4gPiA+IExpbmdsaW5nDQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+ID4gPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5j b20+DQo+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyMywgMjAyMiAzOjI3IFBNDQo+ID4g PiA+IFRvOiBLb25nLCBMaW5nbGluZyA8bGluZ2xpbmcua29uZ0BpbnRlbC5jb20+DQo+ID4gPiA+ IENjOiBMaXUsIEhvbmd0YW8gPGhvbmd0YW8ubGl1QGludGVsLmNvbT47IGdjYy1wYXRjaGVzQGdj Yy5nbnUub3JnDQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIEVuaGFuY2UgZmluYWxfdmFs dWVfcmVwbGFjZW1lbnRfbG9vcCB0bw0KPiA+ID4gPiBoYW5kbGUgYml0b3Agd2l0aCBhbiBpbnZh cmlhbnQgaW5kdWN0aW9uLltQUjEwNTczNV0NCj4gPiA+ID4NCj4gPiA+ID4gT24gVGh1LCBBdWcg MTgsIDIwMjIgYXQgODo0OCBBTSBLb25nLCBMaW5nbGluZyB2aWEgR2NjLXBhdGNoZXMNCj4gPiA+ ID4gPGdjYy0gcGF0Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBIaSwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoaXMgcGF0Y2ggaXMgZm9yIHByMTA1NzM1L3By MTAxOTkxLiBJdCB3aWxsIGVuYWJsZSBiZWxvdyBvcHRpbWl6YXRpb246DQo+ID4gPiA+ID4gew0K PiA+ID4gPiA+IC0gIGxvbmcgdW5zaWduZWQgaW50IGJpdDsNCj4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gLSAgPGJiIDI+IFtsb2NhbCBjb3VudDogMzI1MzQzNzZdOg0KPiA+ID4gPiA+IC0NCj4gPiA+ ID4gPiAtICA8YmIgMz4gW2xvY2FsIGNvdW50OiAxMDQxMjA3NDQ5XToNCj4gPiA+ID4gPiAtICAj IHRtcF8xMCA9IFBISSA8dG1wXzcoNSksIHRtcF80KEQpKDIpPg0KPiA+ID4gPiA+IC0gICMgYml0 XzEyID0gUEhJIDxiaXRfOCg1KSwgMCgyKT4NCj4gPiA+ID4gPiAtICB0bXBfNyA9IGJpdDJfNihE KSAmIHRtcF8xMDsNCj4gPiA+ID4gPiAtICBiaXRfOCA9IGJpdF8xMiArIDE7DQo+ID4gPiA+ID4g LSAgaWYgKGJpdF84ICE9IDMyKQ0KPiA+ID4gPiA+IC0gICAgZ290byA8YmIgNT47IFs5Ni45NyVd DQo+ID4gPiA+ID4gLSAgZWxzZQ0KPiA+ID4gPiA+IC0gICAgZ290byA8YmIgND47IFszLjAzJV0N Cj4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gLSAgPGJiIDU+IFtsb2NhbCBjb3VudDogMTAwOTY1ODg2 NV06DQo+ID4gPiA+ID4gLSAgZ290byA8YmIgMz47IFsxMDAuMDAlXQ0KPiA+ID4gPiA+IC0NCj4g PiA+ID4gPiAtICA8YmIgND4gW2xvY2FsIGNvdW50OiAzMjUzNDM3Nl06DQo+ID4gPiA+ID4gLSAg IyB0bXBfMTEgPSBQSEkgPHRtcF83KDMpPg0KPiA+ID4gPiA+IC0gIHJldHVybiB0bXBfMTE7DQo+ ID4gPiA+ID4gKyAgdG1wXzExID0gdG1wXzQoRCkgJiBiaXQyXzYoRCk7ICByZXR1cm4gdG1wXzEx Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gfQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT2sgZm9yIG1h c3RlciA/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gICAgICAgICBQUiBtaWRkbGUtZW5kLzEwNTczNQ0KPiA+ID4gPiA+ICAgICAgICAg KiBtYXRjaC5wZCAoYml0b3Bfd2l0aF9pbnZfcCk6IE5ldyBtYXRjaC4NCj4gPiA+ID4gPiAgICAg ICAgICogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjIChnaW1wbGVfYml0b3Bfd2l0aF9pbnZfcCk6 IERlY2xhcmUuDQo+ID4gPiA+ID4gICAgICAgICAoYW5hbHl6ZV9hbmRfY29tcHV0ZV9iaXRvcF93 aXRoX2ludl9lZmZlY3QpOiBOZXcgZnVuY3Rpb24uDQo+ID4gPiA+ID4gICAgICAgICAoZmluYWxf dmFsdWVfcmVwbGFjZW1lbnRfbG9vcCk6IEVuaGFuY2VkIHRvIGhhbmRsZSBiaXRvcA0KPiA+ID4g PiA+ICAgICAgICAgd2l0aCBpbnYgaW5kdWN0aW9uLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZ2Nj L3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgICAgICAgICogZ2Nj LnRhcmdldC9pMzg2L3ByMTA1NzM1LTEuYzogTmV3IHRlc3QuDQo+ID4gPiA+ID4gICAgICAgICAq IGdjYy50YXJnZXQvaTM4Ni9wcjEwNTczNS0yLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+IC0tLQ0K PiA+ID4gPiA+ICBnY2MvbWF0Y2gucGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NCArDQo+ID4gPiA+ID4gIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTA1NzM1LTEu YyB8IDg4DQo+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjEwNTczNS0yLmMgfCAyOCArKysrKysrDQo+ID4gPiA+ ID4gIGdjYy90cmVlLXNjYWxhci1ldm9sdXRpb24uY2MgICAgICAgICAgICAgICB8IDU5ICsrKysr KysrKysrKysrKw0KPiA+ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDE3OSBpbnNlcnRpb25zKCsp ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjEwNTczNS0xLmMNCj4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMTA1NzM1LTIuYw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZCBpbmRleA0KPiA+ID4gPiA+ IDU2MjEzOGE4MDM0Li5jZmU1OTNlYmIwMiAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9nY2MvbWF0 Y2gucGQNCj4gPiA+ID4gPiArKysgYi9nY2MvbWF0Y2gucGQNCj4gPiA+ID4gPiBAQCAtODA1MCw2 ICs4MDUwLDEwIEBAIGFuZCwNCj4gPiA+ID4gPiAgIChiaXRfbm90DQo+ID4gPiA+ID4gICAgKG5v cF9jb252ZXJ0MT8gKGJpdF94b3JAMCAoY29udmVydDI/IChsc2hpZnQgaW50ZWdlcl9vbmVwQDEN Cj4gPiA+ID4gPiBAMikpDQo+ID4gPiA+ID4gQDMpKSkpDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAr KGZvciBiaXRfb3AgKGJpdF9hbmQgYml0X2lvciBiaXRfeG9yKSAgKG1hdGNoIChiaXRvcF93aXRo X2ludl9wDQo+ID4gPiA+ID4gK0AwDQo+ID4gPiA+ID4gK0AxKQ0KPiA+ID4gPiA+ICsgIChiaXRf b3A6YyBAMCBAMSkpKQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gVGhhdCdzIGEgc2lu Z2xlLXN0bXQgbWF0Y2gsIHlvdSBzaG91bGRuJ3QgdXNlIG1hdGNoLnBkIG1hdGNoaW5nIGZvciB0 aGlzLg0KPiA+ID4gPiBJbnN0ZWFkIGp1c3QgZG8NCj4gPiA+ID4NCj4gPiA+ID4gICBpZiAoaXNf Z2ltcGxlX2Fzc2lnbiAoc3RtdCkNCj4gPiA+ID4gICAgICAgJiYgKChjb2RlID0gZ2ltcGxlX2Fz c2lnbl9yaHNfY29kZSAoc3RtdCkpLCB0cnVlKQ0KPiA+ID4gPiAgICAgICAmJiAoY29kZSA9PSBC SVRfQU5EX0VYUFIgfHwgY29kZSA9PSBCSVRfSU9SX0VYUFIgfHwgY29kZSA9PQ0KPiA+ID4gPiBC SVRfWE9SX0VYUFIpKQ0KPiA+ID4gPiAgICAuLg0KPiA+ID4gPg0KPiA+ID4gPiBhbmQgcGljayBn aW1wbGVfYXNzaWduX3Joc3sxLDJ9IChzdG10KSBhcyB0aGUgb3BlcmFuZHMuICBUaGUgOmMgaW4N Cj4gPiA+ID4gYml0X29wOmMgaXMgcmVkdW5kYW50IGJ0dy4gLSB3aGlsZSB0aGUgbmFtZSBzdWdn ZXN0cyAid2l0aA0KPiA+ID4gPiBpbnZhcmlhbnQiIHlvdSBkb24ndCBhY3R1YWxseSBjaGVjayBm b3IgdGhhdC4gIEJ1dCBhZ2FpbiwgZ2l2ZW4NCj4gPiA+ID4gY2Fub25pY2FsaXphdGlvbiBydWxl cyB0aGUgaW52YXJpYW50IHdpbGwgYmUgcmhzMiBzbyBhYm92ZSBhZGQNCj4gPiA+ID4NCj4gPiA+ ID4gICAgICAgICAmJiBUUkVFX0NPREUgKGdpbXBsZV9hc3NpZ25fcmhzMiAoc3RtdCkpID09IElO VEVHRVJfQ1NUDQo+ID4gPiA+DQo+ID4gPiA+IGZvciBleGFtcGxlLg0KPiA+ID4gPg0KPiA+ID4g PiA+ICAvKiBuIC0gKCgobiA+IEMxKSA/IG4gOiBDMSkgJiAtQzIpIC0+ICBuICYgQzEgZm9yIHVu c2lnbmVkIGNhc2UuDQo+ID4gPiA+ID4gICAgIG4gLSAoKChuID4gQzEpID8gbiA6IEMxKSAmIC1D MikgLT4gIChuIDw9IEMxKSA/IG4gOiAobiAmIEMxKQ0KPiA+ID4gPiA+IGZvciBzaWduZWQgY2Fz ZS4gICovICAoc2ltcGxpZnkgZGlmZiAtLWdpdA0KPiA+ID4gPiA+IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvcHIxMDU3MzUtMS5jDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjEwNTczNS0xLmMNCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwLi44ZDIxMjNlZDM1MQ0KPiA+ID4gPiA+IC0t LSAvZGV2L251bGwNCj4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9wcjEwNTczNS0xLmMNCj4gPiA+ID4gPiBAQCAtMCwwICsxLDg4IEBADQo+ID4gPiA+ID4gKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8xIC1m ZHVtcC10cmVlLXNjY3AtZGV0YWlscyIgfSAqLw0KPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMge2ZpbmFsIHZhbHVlIHJlcGxhY2VtZW50fSA4ICJzY2NwIg0K PiA+ID4gPiA+ICt9IH0gKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK3Vuc2lnbmVkIGxvbmcg bG9uZw0KPiA+ID4gPiA+ICtfX2F0dHJpYnV0ZV9fKChub2lwYSkpDQo+ID4gPiA+ID4gK2ZvbyAo dW5zaWduZWQgbG9uZyBsb25nIHRtcCwgdW5zaWduZWQgbG9uZyBsb25nIGJpdDIpIHsNCj4gPiA+ ID4NCj4gPiA+ID4geW91IHByb2JhYmx5IG5lZWQgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IGxvbmdsb25nLCBidXQgaXMgaXQNCj4gPiA+ID4gbmVjZXNzYXJ5IHRvIHVzZSBsb25nIGxvbmcg Zm9yIHRoZSB0ZXN0Y2FzZXMgaW4gdGhlIGZpcnN0IHBsYWNlPw0KPiA+ID4gPiBUaGUgSVYgc2Vl bXMgdG8gYmUgdW51c2VkLCBpZiBpdCBzaG91bGQgbWF0Y2ggdGhlIHZhcmlhYmxlcyBiaXQgc2l6 ZQ0KPiA+ID4gPiB1c2Ugc2l6ZW9mDQo+ID4gPiA+ICh0eXBlKSAqIDgNCj4gPiA+ID4NCj4gPiA+ ID4gPiArICBmb3IgKGludCBiaXQgPSAwOyBiaXQgPCA2NDsgYml0KyspDQo+ID4gPiA+ID4gKyAg ICB0bXAgJj0gYml0MjsNCj4gPiA+ID4gPiArICByZXR1cm4gdG1wOw0KPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICt1bnNpZ25lZCBsb25nIGxvbmcNCj4gPiA+ID4gPiArX19h dHRyaWJ1dGVfXygobm9pcGEpKQ0KPiA+ID4gPiA+ICtmb28xICh1bnNpZ25lZCBsb25nIGxvbmcg dG1wLCB1bnNpZ25lZCBsb25nIGxvbmcgYml0Mikgew0KPiA+ID4gPiA+ICsgIGZvciAoaW50IGJp dCA9IDYzOyBiaXQgPj0gMDsgYml0IC09MykNCj4gPiA+ID4gPiArICAgIHRtcCAmPSBiaXQyOw0K PiA+ID4gPiA+ICsgIHJldHVybiB0bXA7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gK3Vuc2lnbmVkIGxvbmcgbG9uZw0KPiA+ID4gPiA+ICtfX2F0dHJpYnV0ZV9fKChub2lw YSkpDQo+ID4gPiA+ID4gK2ZvbzIgKHVuc2lnbmVkIGxvbmcgbG9uZyB0bXAsIHVuc2lnbmVkIGxv bmcgbG9uZyBiaXQyKSB7DQo+ID4gPiA+ID4gKyAgZm9yIChpbnQgYml0ID0gMDsgYml0IDwgNjQ7 IGJpdCsrKQ0KPiA+ID4gPiA+ICsgICAgdG1wIHw9IGJpdDI7DQo+ID4gPiA+ID4gKyAgcmV0dXJu IHRtcDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArdW5zaWduZWQgbG9u ZyBsb25nDQo+ID4gPiA+ID4gK19fYXR0cmlidXRlX18oKG5vaXBhKSkNCj4gPiA+ID4gPiArZm9v MyAodW5zaWduZWQgbG9uZyBsb25nIHRtcCwgdW5zaWduZWQgbG9uZyBsb25nIGJpdDIpIHsNCj4g PiA+ID4gPiArICBmb3IgKGludCBiaXQgPSA2MzsgYml0ID49IDA7IGJpdCAtPTMpDQo+ID4gPiA+ ID4gKyAgICB0bXAgfD0gYml0MjsNCj4gPiA+ID4gPiArICByZXR1cm4gdG1wOw0KPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICt1bnNpZ25lZCBsb25nIGxvbmcNCj4gPiA+ID4g PiArX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiA+ID4gPiA+ICtmb280ICh1bnNpZ25lZCBsb25n IGxvbmcgdG1wLCB1bnNpZ25lZCBsb25nIGxvbmcgYml0Mikgew0KPiA+ID4gPiA+ICsgIGZvciAo aW50IGJpdCA9IDA7IGJpdCA8IDY0OyBiaXQrKykNCj4gPiA+ID4gPiArICAgIHRtcCBePSBiaXQy Ow0KPiA+ID4gPiA+ICsgIHJldHVybiB0bXA7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gK3Vuc2lnbmVkIGxvbmcgbG9uZw0KPiA+ID4gPiA+ICtfX2F0dHJpYnV0ZV9fKChu b2lwYSkpDQo+ID4gPiA+ID4gK2ZvbzUgKHVuc2lnbmVkIGxvbmcgbG9uZyB0bXAsIHVuc2lnbmVk IGxvbmcgbG9uZyBiaXQyKSB7DQo+ID4gPiA+ID4gKyAgZm9yIChpbnQgYml0ID0gMDsgYml0IDwg NjM7IGJpdCsrKQ0KPiA+ID4gPiA+ICsgICAgdG1wIF49IGJpdDI7DQo+ID4gPiA+ID4gKyAgcmV0 dXJuIHRtcDsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArdW5zaWduZWQg bG9uZyBsb25nDQo+ID4gPiA+ID4gK19fYXR0cmlidXRlX18oKG5vaXBhKSkNCj4gPiA+ID4gPiAr ZiAodW5zaWduZWQgbG9uZyBsb25nIHRtcCwgbG9uZyBsb25nIGJpdCwgdW5zaWduZWQgbG9uZyBs b25nDQo+ID4gPiA+ID4gK2JpdDIpIHsNCj4gPiA+ID4gPiArICB1bnNpZ25lZCBsb25nIGxvbmcg cmVzID0gdG1wOw0KPiA+ID4gPiA+ICsgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgYml0OyBp KyspDQo+ID4gPiA+ID4gKyAgICByZXMgJj0gYml0MjsNCj4gPiA+ID4gPiArICByZXR1cm4gcmVz Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICt1bnNpZ25lZCBsb25nIGxv bmcNCj4gPiA+ID4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiA+ID4gPiA+ICtmMSAodW5z aWduZWQgbG9uZyBsb25nIHRtcCwgbG9uZyBsb25nIGJpdCwgdW5zaWduZWQgbG9uZyBsb25nDQo+ ID4gPiA+ID4gK2JpdDIpIHsNCj4gPiA+ID4gPiArICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzID0g dG1wOw0KPiA+ID4gPiA+ICsgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgYml0OyBpKyspDQo+ ID4gPiA+ID4gKyAgICByZXMgfD0gYml0MjsNCj4gPiA+ID4gPiArICByZXR1cm4gcmVzOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICt1bnNpZ25lZCBsb25nIGxvbmcNCj4g PiA+ID4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KPiA+ID4gPiA+ICtmMiAodW5zaWduZWQg bG9uZyBsb25nIHRtcCwgbG9uZyBsb25nIGJpdCwgdW5zaWduZWQgbG9uZyBsb25nDQo+ID4gPiA+ ID4gK2JpdDIpIHsNCj4gPiA+ID4gPiArICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzID0gdG1wOw0K PiA+ID4gPiA+ICsgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgYml0OyBpKyspDQo+ID4gPiA+ ID4gKyAgICByZXMgXj0gYml0MjsNCj4gPiA+ID4gPiArICByZXR1cm4gcmVzOw0KPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjEwNTczNS0yLmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3ByMTA1NzM1LTIuYw0KPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAuLjc5YzFkMzAwYjFiDQo+ID4gPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByMTA1NzM1LTIuYw0KPiA+ID4gPiA+IEBAIC0wLDAgKzEsMjggQEANCj4gPiA+ID4gPiArLyog eyBkZy1kbyBydW4gfSAqLw0KPiA+ID4gPiA+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMSIgfSAqLw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgInByMTA1NzM1LTEuYyINCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gK2ludCBtYWluKCkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsgIHVu c2lnbmVkIGxvbmcgbG9uZyB0bXAgPSAweDExMDExMDFVTEw7DQo+ID4gPiA+ID4gKyAgdW5zaWdu ZWQgbG9uZyBsb25nIGJpdDIgPSAweDExMTExMTEwMTExMTAxMTFVTEw7DQo+ID4gPiA+ID4gKyAg aWYgKGZvbyAodG1wLCBiaXQyKSAhPSAweDExMDAxMDFVTEwpDQo+ID4gPiA+ID4gKyAgICBfX2J1 aWx0aW5fYWJvcnQgKCk7DQo+ID4gPiA+ID4gKyAgaWYgKGZvbzEgKHRtcCwgYml0MikgIT0gMHgx MTAwMTAxVUxMKQ0KPiA+ID4gPiA+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+ID4gPiA+ ICsgIGlmIChmb28yICh0bXAsIGJpdDIpICE9IDB4MTExMTExMTAxMTExMTExMVVMTCkNCj4gPiA+ ID4gPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gPiA+ID4gPiArICBpZiAoZm9vMyAodG1w LCBiaXQyKSAhPSAweDExMTExMTEwMTExMTExMTFVTEwpDQo+ID4gPiA+ID4gKyAgICBfX2J1aWx0 aW5fYWJvcnQgKCk7DQo+ID4gPiA+ID4gKyAgaWYgKGZvbzQgKHRtcCwgYml0MikgIT0gMHgxMTAx MTAxVUxMKQ0KPiA+ID4gPiA+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+ID4gPiA+ICsg IGlmIChmb281ICh0bXAsIGJpdDIpICE9IDB4MTExMTExMTAxMDAxMTAxMFVMTCkNCj4gPiA+ID4g PiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gPiA+ID4gPiArICBpZiAoZiAodG1wLCA2NCwg Yml0MikgIT0gMHgxMTAwMTAxVUxMKQ0KPiA+ID4gPiA+ICsgICAgX19idWlsdGluX2Fib3J0ICgp Ow0KPiA+ID4gPiA+ICsgIGlmIChmMSAodG1wLCA2NCwgYml0MikgIT0gMHgxMTExMTExMDExMTEx MTExVUxMKQ0KPiA+ID4gPiA+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+ID4gPiA+ICsg IGlmIChmMiAodG1wLCA2NCwgYml0MikgIT0gMHgxMTAxMTAxVUxMKQ0KPiA+ID4gPiA+ICsgICAg X19idWlsdGluX2Fib3J0ICgpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXNjYWxhci1ldm9sdXRpb24uY2MNCj4gPiA+ID4gPiBiL2djYy90cmVlLXNjYWxh ci1ldm9sdXRpb24uY2MgaW5kZXggZmM1OWQwMzViMTkuLjgxMjIwZjA4ZDJlDQo+ID4gPiA+ID4g MTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZ2NjL3RyZWUtc2NhbGFyLWV2b2x1dGlvbi5jYw0KPiA+ ID4gPiA+ICsrKyBiL2djYy90cmVlLXNjYWxhci1ldm9sdXRpb24uY2MNCj4gPiA+ID4gPiBAQCAt MzYzNSw2ICszNjM1LDUzIEBAIGVudW0gYml0X29wX2tpbmQNCj4gPiA+ID4gPiAgICByZXR1cm4g Zm9sZF9idWlsZDIgKGNvZGUxLCB0eXBlLCBpbnYsIHdpZGVfaW50X3RvX3RyZWUgKHR5cGUsDQo+ ID4gPiA+ID4gYml0cykpOyAgfQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKy8qIE1hdGNoLnBkIGZ1 bmN0aW9uIHRvIG1hdGNoIGJpdG9wIHdpdGggaW52YXJpYW50IGV4cHJlc3Npb24NCj4gPiA+ID4g PiArICAuaS5lLg0KPiA+ID4gPiA+ICsgIHRtcF83ID0gXzAgJiBfMTsgKi8NCj4gPiA+ID4gPiAr ZXh0ZXJuIGJvb2wgZ2ltcGxlX2JpdG9wX3dpdGhfaW52X3AgKHRyZWUsIHRyZWUgKiwgdHJlZQ0K PiA+ID4gPiA+ICsoKikodHJlZSkpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyogUmV0dXJu IHRoZSBpbmR1Y3RpdmUgZXhwcmVzc2lvbiBvZiBiaXRvcCB3aXRoIGludmFyaWFudCBpZiBwb3Nz aWJsZSwNCj4gPiA+ID4gPiArICAgb3RoZXJ3aXNlIHJldHVybnMgREVGLiAgKi8NCj4gPiA+ID4g PiArc3RhdGljIHRyZWUNCj4gPiA+ID4gPiArYW5hbHl6ZV9hbmRfY29tcHV0ZV9iaXRvcF93aXRo X2ludl9lZmZlY3QgKGNsYXNzIGxvb3AqIGxvb3AsIHRyZWUNCj4gPiBwaGlkZWYsDQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgbml0ZXIp IHsNCj4gPiA+ID4gPiArICB0cmVlIG1hdGNoX29wWzJdLGludjsNCj4gPiA+ID4gPiArICB0cmVl IHR5cGUgPSBUUkVFX1RZUEUgKHBoaWRlZik7DQo+ID4gPiA+ID4gKyAgZ3BoaSogaGVhZGVyX3Bo aSA9IE5VTEw7DQo+ID4gPiA+ID4gKyAgLyogbWF0Y2ggdGhpbmcgbGlrZSBvcDAgKG1hdGNoWzBd KSwgb3AxKG1hdGNoWzFdKSwNCj4gPiA+ID4gPiArcGhpZGVmKFBISURFRikNCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gKyAgICBvcDEgPSAgUEhJIDxwaGlkZWYsIGludj4NCj4gPiA+ID4gPiArICAg IHBoaWRlZiA9IG9wMCAmIG9wMQ0KPiA+ID4gPiA+ICsgICAgaWYgb3AwIGlzIGFuIGludmFyaWFu dCwgaXQgY291bGQgY2hhbmdlIHRvDQo+ID4gPiA+ID4gKyAgICBwaGlkZWYgPSBvcDAgJiBpbnYu ICAqLw0KPiA+ID4gPiA+ICsgIGlmICghZ2ltcGxlX2JpdG9wX3dpdGhfaW52X3AgKHBoaWRlZiwg Jm1hdGNoX29wWzBdLCBOVUxMKQ0KPiA+ID4gPiA+ICsgICAgICB8fCBUUkVFX0NPREUgKG1hdGNo X29wWzFdKSAhPSBTU0FfTkFNRQ0KPiA+ID4gPiA+ICsgICAgICB8fCAhZXhwcl9pbnZhcmlhbnRf aW5fbG9vcF9wIChsb29wLCBtYXRjaF9vcFswXSkNCj4gPiA+ID4gPiArICAgICAgfHwgIShoZWFk ZXJfcGhpID0gZHluX2Nhc3QgPGdwaGkgKj4gKFNTQV9OQU1FX0RFRl9TVE1UDQo+ID4gPiA+ICht YXRjaF9vcFsxXSkpKQ0KPiA+ID4gPiA+ICsgICAgICB8fCBnaW1wbGVfcGhpX251bV9hcmdzICho ZWFkZXJfcGhpKSAhPSAyKQ0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgaWYgKFBISV9BUkdfREVGX0ZST01fRURHRSAoaGVhZGVyX3Bo aSwgbG9vcF9sYXRjaF9lZGdlIChsb29wKSkNCj4gPiA+ID4gPiArICE9DQo+ID4gPiA+IHBoaWRl ZikNCj4gPiA+ID4gPiArICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsgIGVudW0gdHJlZV9jb2RlIGNvZGUxDQo+ID4gPiA+ID4gKyAgICA9IGdpbXBsZV9hc3Np Z25fcmhzX2NvZGUgKFNTQV9OQU1FX0RFRl9TVE1UIChwaGlkZWYpKTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKyAgaWYgKGNvZGUxID09IEJJVF9YT1JfRVhQUikNCj4gPiA+ID4gPiArICAgIHsN Cj4gPiA+ID4gPiArICAgICAgIGlmICghdHJlZV9maXRzX3Vod2lfcCAobml0ZXIpKQ0KPiA+ID4g PiA+ICsgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPiA+ID4gPiArICAgICAgIHVuc2lnbmVk IEhPU1RfV0lERV9JTlQgbml0ZXJfbnVtOw0KPiA+ID4gPiA+ICsgICAgICAgbml0ZXJfbnVtID0g dHJlZV90b191aHdpIChuaXRlcik7DQo+ID4gPiA+ID4gKyAgICAgICBpZiAobml0ZXJfbnVtICUg MiAhPSAwKQ0KPiA+ID4gPiA+ICsgICAgICAgbWF0Y2hfb3BbMF0gPSAgYnVpbGRfemVyb19jc3Qg KHR5cGUpOw0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBpbnYg PSBQSElfQVJHX0RFRl9GUk9NX0VER0UgKGhlYWRlcl9waGksIGxvb3BfcHJlaGVhZGVyX2VkZ2UN Cj4gPiA+ID4gPiArIChsb29wKSk7ICByZXR1cm4gZm9sZF9idWlsZDIgKGNvZGUxLCB0eXBlLCBp bnYsIG1hdGNoX29wWzBdKTsgfQ0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgfSBnb2VzIHRvIHRoZSBu ZXh0IGxpbmUuDQo+ID4gPiA+DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICAvKiBEbyBmaW5hbCB2 YWx1ZSByZXBsYWNlbWVudCBmb3IgTE9PUCwgcmV0dXJuIHRydWUgaWYgd2UgZGlkDQo+ID4gPiA+ ID4gYW55dGhpbmcuICAqLw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIGJvb2wNCj4gPiA+ID4gPiBA QCAtMzY4Nyw2ICszNzM0LDE4IEBAIGZpbmFsX3ZhbHVlX3JlcGxhY2VtZW50X2xvb3AgKGNsYXNz IGxvb3ANCj4gPiAqbG9vcCkNCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmZvbGRlZF9jYXN0cyk7DQo+ID4gPiA+ID4gICAgICAgIGRlZiA9 IGNvbXB1dGVfb3ZlcmFsbF9lZmZlY3Rfb2ZfaW5uZXJfbG9vcCAoZXhfbG9vcCwgZGVmKTsNCj4g PiA+ID4gPg0KPiA+ID4gPiA+ICsgICAgICAvKiBIYW5kbGUgYml0b3Agd2l0aCBpbnZhcmlhbnQg aW5kdWN0aW9uIGV4cHJlc3Npb24uDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICAgLmku ZQ0KPiA+ID4gPiA+ICsgICAgICAgZm9yIChpbnQgaSA9MCA7aSA8IDMyOyBpKyspDQo+ID4gPiA+ ID4gKyAgICAgICAgIHRtcCAmPSBiaXQyOw0KPiA+ID4gPiA+ICsgICAgICAgaWYgYml0MiBpcyBh biBpbnZhcmlhbnQgaW4gbG9vcCB3aGljaCBjb3VsZCBzaW1wbGUgdG8NCj4gPiA+ID4gPiArICAg ICAgIHRtcCAmPSBiaXQyLiAgKi8NCj4gPiA+ID4gPiArICAgICAgdHJlZSBiaXRpbnZfZGVmOw0K PiA+ID4gPiA+ICsgICAgICBpZiAoKGJpdGludl9kZWYNCj4gPiA+ID4NCj4gPiA+ID4gcGxlYXNl IHVzZSBlbHNlIGlmIGhlcmUNCj4gPiA+ID4NCj4gPiA+ID4gb3RoZXJ3aXNlIGxvb2tzIE9LLg0K PiA+ID4gPg0KPiA+ID4gPiA+ICsgICAgICAgICAgPSBhbmFseXplX2FuZF9jb21wdXRlX2JpdG9w X3dpdGhfaW52X2VmZmVjdCAobG9vcCwgcGhpZGVmLA0KPiBuaXRlcikpKQ0KPiA+ID4gPiA+ICsg ICAgICAgZGVmID0gYml0aW52X2RlZjsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gICAgICAgIC8q IEhhbmRsZSBiaXR3aXNlIGluZHVjdGlvbiBleHByZXNzaW9uLg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gICAgICAgICAgLmkuZS4NCj4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+IDIuMTguMg0KPiA+ID4g PiA+DQo=