From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.ex10.biz (ikhexhub04.ex10.biz [178.170.125.68]) by sourceware.org (Postfix) with ESMTPS id 575333858D20 for ; Fri, 14 Apr 2023 15:07:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 575333858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=sipearl.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sipearl.com Received: from ex13mbxc01n02.ikhex.ikoula.com (178.170.74.67) by ikhexhub04.ikhex.ikoula.com (178.170.125.68) with Microsoft SMTP Server (TLS) id 14.3.487.0; Fri, 14 Apr 2023 17:07:21 +0200 Received: from ex13mbxc01n01.ikhex.ikoula.com (2002:b2aa:4a42::b2aa:4a42) by ex13mbxc01n02.ikhex.ikoula.com (2002:b2aa:4a43::b2aa:4a43) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Fri, 14 Apr 2023 17:07:10 +0200 Received: from ex13mbxc01n01.ikhex.ikoula.com ([fe80::7cfa:8f3a:5d4b:2d27]) by ex13mbxc01n01.ikhex.ikoula.com ([fe80::7cfa:8f3a:5d4b:2d27%15]) with mapi id 15.00.1497.044; Fri, 14 Apr 2023 17:07:10 +0200 From: Lou Knauer To: "Andre Vieira (lists)" , Andrew Pinski CC: "gcc-patches@gcc.gnu.org" , Etienne Renault Subject: RE: [PATCH] aarch64: Add -mveclibabi=sleefgnu Thread-Topic: [PATCH] aarch64: Add -mveclibabi=sleefgnu Thread-Index: AdlungKdRQS+x06IT1KxiCcVvZfH1///4gsA//+19dCAAIKZgP//kwAw Date: Fri, 14 Apr 2023 15:07:10 +0000 Message-ID: References: <93172fa5c23b4e0086b46d513a84922d@ex13mbxc01n01.ikhex.ikoula.com> <5583800a-c090-8261-406c-df232b1ae4d4@arm.com> In-Reply-To: <5583800a-c090-8261-406c-df232b1ae4d4@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [178.170.125.114] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Status: No, score=-13.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,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: SGVsbG8gQW5kcmUsDQoNClRoYW5rIHlvdSBmb3IgeW91ciBuaWNlIHJlcGx5LiBJIGNhbiBzZWUg dGhhdCB5b3VyIHBhdGNoZXMsDQpjb21iaW5lZCB3aXRoIHVwY29taW5nIEFBcmNoNjQgc3VwcG9y dCBpbiBsaWJtdmVjLA0Kd2lsbCBudWxsaWZ5IHRoZSBuZWVkIGZvciBteSBwYXRjaC4NCg0KSSB3 aWxsIGRlZmluaXRlbHkgdGVzdCB5b3VyIHBhdGNoZXMgYW5kIGxvb2sgZm9yd2FyZCB0byBzZWVp bmcgdGhlbQ0KZXZvbHZlLCBJIHdpbGwgcmViYXNlIGFuZCBhcHBseSB0aGVtIG15c2VsZi4gDQoN ClRoYW5rIHlvdSB2ZXJ5IG11Y2ghDQpLaW5kIHJlZ2FyZHMsDQpMb3UNCg0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZSBWaWVpcmEgKGxpc3RzKSA8YW5kcmUuc2lt b2VzZGlhc3ZpZWlyYUBhcm0uY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDE0LCAyMDIzIDEy OjMwDQo+IFRvOiBMb3UgS25hdWVyIDxsb3Uua25hdWVyQHNpcGVhcmwuY29tPjsgQW5kcmV3IFBp bnNraSA8cGluc2tpYUBnbWFpbC5jb20+DQo+IENjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsg RXRpZW5uZSBSZW5hdWx0IDxldGllbm5lLnJlbmF1bHRAc2lwZWFybC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbUEFUQ0hdIGFhcmNoNjQ6IEFkZCAtbXZlY2xpYmFiaT1zbGVlZmdudQ0KPiANCj4gSSBo YXZlIChvdXRkYXRlZCkgUkZDJ3MgaGVyZToNCj4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1h aWwvZ2NjLXBhdGNoZXMvMjAyMy1NYXJjaC82MTM1OTMuaHRtbA0KPiANCj4gSSBhbSB3b3JraW5n IG9uIHRoaXMgcGF0Y2ggc2VyaWVzIGZvciBzdGFnZSAxLiBUaGUgbGlzdCBvZiBmZWF0dXJlcyBJ IGFtDQo+IHdvcmtpbmcgb24gYXJlOg0KPiAqIFNWRSBzdXBwb3J0IGZvciAjcHJhZ21hIG9tcCBk ZWNsYXJlIHNpbWQNCj4gKiBTdXBwb3J0IGZvciBzaW1kY2xvbmUgdXNhZ2UgaW4gYXV0b3ZlYyBm cm9tICNwcmFnbWEgb21wIGRlY2xhcmUgdmFyaWFudA0KPiAgICBUaGlzIG9mZmVycyB1cyBhIG1v cmUgZmluZS10dW5lZCBhcHByb2FjaCB0byBkZWZpbmUgd2hhdCBpcyBhbmQNCj4gd2hhdCdzIG5v dCBhdmFpbGFibGUgcGVyIGZ1bmN0aW9uDQo+ICogU3VwcG9ydCBmb3IgdXNlIG9mIHNpbWRjbG9u ZXMgaW4gU0xQDQo+IA0KPiBBbHNvIHBsYW5uaW5nIHRvIGVuYWJsZSB0aGUgdXNlIG9mIG1peGVk LXR5cGVzIHRoYXQgaXMgY3VycmVudGx5DQo+IGRpc2FibGVkIGZvciBBQXJjaDY0LCBpdCdzIG5v dCBhIGZlYXR1cmUgSSBzdXNwZWN0IHdlIG5lZWQgZm9yIG91cg0KPiB1c2UtY2FzZSBidXQgaXQg d2lsbCBlbmFibGUgYmV0dGVyIHRlc3RpbmcgYXMgd2UgY2FuIHRoZW4gZW5hYmxlIEFBcmNoNjQN Cj4gYXMgYSBzaW1kY2xvbmUgdGFyZ2V0IGluIHRoZSB0ZXN0c3VpdGUuDQo+IA0KPiBJIGNvdWxk IHRyeSB0byBwb3N0IHNvbWUgdXBkYXRlcyB0byB0aGUgUkZDcywgSSBoYXZlIGJlZW4gcmViYXNp bmcgdGhlbQ0KPiBvbiB0b3Agb2YgQW5kcmV3IFN0dWJicyBsYXRlc3QgcGF0Y2ggdG8gZW5hYmxl IGluYnJhbmNoIGNvZGVnZW4uIExldCBtZQ0KPiBrbm93IGlmIHlvdSdkIGxpa2UgdG8gc2VlIHRo ZXNlIHVwZGF0ZXMgc29vbmVyIHJhdGhlciB0aGFuIGxhdGVyIHNvIHlvdQ0KPiBjYW4gdHJ5IHRo ZW0gb3V0IGZvciB5b3VyIHVzZWNhc2UuDQo+IA0KPiBLaW5kIHJlZ2FyZHMsDQo+IEFuZHJlDQo+ IA0KPiBPbiAxNC8wNC8yMDIzIDEwOjM0LCBMb3UgS25hdWVyIHZpYSBHY2MtcGF0Y2hlcyB3cm90 ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQW5kcmV3IFBp bnNraSA8cGluc2tpYUBnbWFpbC5jb20+DQo+ID4+IFNlbnQ6IEZyaWRheSwgQXByaWwgMTQsIDIw MjMgMDk6MDgNCj4gPj4gVG86IExvdSBLbmF1ZXIgPGxvdS5rbmF1ZXJAc2lwZWFybC5jb20+DQo+ ID4+IENjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZzsgRXRpZW5uZSBSZW5hdWx0IDxldGllbm5l LnJlbmF1bHRAc2lwZWFybC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGFhcmNoNjQ6 IEFkZCAtbXZlY2xpYmFiaT1zbGVlZmdudQ0KPiA+Pg0KPiA+PiBPbiBGcmksIEFwciAxNCwgMjAy MyBhdCAxMjowM+KAr0FNIExvdSBLbmF1ZXIgdmlhIEdjYy1wYXRjaGVzDQo+ID4+IDxnY2MtcGF0 Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+ID4+Pg0KPiA+Pj4gVGhpcyBhZGRzIHN1cHBvcnQg Zm9yIHRoZSAtbXZlY2xpYmFiaSBvcHRpb24gdG8gdGhlIEFBcmNoNjQgYmFja2VuZCBvZiBHQ0Mg YnkNCj4gPj4+IGltcGxlbWVudGluZyB0aGUgYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uIHRh cmdldCBob29rIGZvciBBQXJjaDY0Lg0KPiA+Pj4gVGhlIFNMRUVGIFZlY3Rvcml6ZWQgTWF0aCBM aWJyYXJ5J3MgR05VQUJJIGludGVyZmFjZSBpcyB1c2VkLCBhbmQNCj4gPj4+IE5FT04vQWR2YW5j ZWQgU0lNRCBhcyB3ZWxsIGFzIFNWRSBhcmUgc3VwcG9ydGVkLg0KPiA+Pj4NCj4gPj4+IFRoaXMg d2FzIHRlc3RlZCBvbiB0aGUgZ2NjIHRlc3RzdWl0ZSBhbmQgdGhlIGxsdm0tdGVzdC1zdWl0ZSBv biBhIEFBcmNoNjQNCj4gPj4+IGhvc3QgZm9yIE5FT04gYW5kIFNWRSBhcyB3ZWxsIGFzIG9uIGhh bmQtd3JpdHRlbiBiZW5jaG1hcmtzLiBXaGVyZSB0aGUNCj4gPj4+IHZlY3Rvcml6YXRpb24gb2Yg YnVpbHRpbnMgd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5IGluIGxvb3BzIGJvdW5kIGJ5IHRoZQ0K PiA+Pj4gY2FsbHMgdG8gdGhvc2UsIHNpZ25pZmljYW50ICg+MikgcGVyZm9ybWFuY2UgZ2FpbnMg Y2FuIGJlIG9ic2VydmVkLg0KPiA+Pg0KPiA+PiBUaGlzIGlzIHNvIHdyb25nIGFuZCBpdCBpcyBi ZXR0ZXIgaWYgeW91IGFjdHVhbGx5IGp1c3QgdXNlZCBhIGhlYWRlcg0KPiA+PiBmaWxlIGluc3Rl YWQuICBTcGVjaWZpY2FsbHkgdGhlIG9wZW5tcCB2ZWN0IHByYWdtYXMuDQo+ID4+DQo+ID4+IFRo YW5rcywNCj4gPj4gQW5kcmV3IFBpbnNraQ0KPiA+Pg0KPiA+DQo+ID4gVGhhbmsgeW91IGZvciB5 b3VyIHF1aWNrIHJlc3BvbnNlLiBJIGRvIG5vdCBmdWxseSB1bmRlcnN0YW5kIHlvdXIgcG9pbnQ6 DQo+ID4gdGhlIE9wZW5NUCBEZWNsYXJlIFNJTUQgcHJhZ21hcyBhcmUgbm90IHlldCBpbXBsZW1l bnRlZCBmb3IgU1ZFIChoZXJlIFswXQ0KPiA+IHNvbWVvbmUgc3RhcnRlZCB3b3JraW5nIG9uIHRo YXQsIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGluIGl0cyBjdXJyZW50IHN0YXRlKS4NCj4gPiBUaGUg YC1tdmVjbGliYWJpYCBmbGFnIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHNvbHV0aW9uIGZvciBTVkUg dmVjdG9yaXphdGlvbiBvZg0KPiA+IGxpYm0gZnVuY3Rpb25zIGZyb20gb3VyIHBvaW50IG9mIHZp ZXcuDQo+ID4NCj4gPiBJbmRlZWQsIGEgY3VzdG9tIGhlYWRlciB0aGF0IHJlZGlyZWN0cyByZWd1 bGFyIGxpYm0gZnVuY3Rpb24gY2FsbHMgdG8gdGhlaXINCj4gPiBTbGVlZiBlcXVpdmFsZW50IHdv dWxkIGJlIGEgc29sdXRpb24gZm9yIE5FT04gc2luY2UgT3Blbk1QIERlY2xhcmUgU0lNRA0KPiA+ IHByYWdtYXMgYXJlIGltcGxlbWVudGVkIGZvciBORU9OIGluIEdDQy4gTm9uZXRoZWxlc3MgYXMg ZmFyIGFzIEkgY2FuIHRlbGwsDQo+ID4gdGhlIGxpYm12ZWMgaXMgbm90IHlldCBzdXBwb3J0IGZv ciBBQXJjaDY0LCBzbyBTbGVlZiBpcyB1bmF2b2lkYWJsZS4gSQ0KPiA+IHRoZXJlZm9yZSBvcHRl ZCBmb3IgYSBzb2x1dGlvbiBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHg4NiBhbmQgdGhlIFNWTUws IHdoZXJlDQo+ID4gb25seSBhIGFkZGl0aW9uYWwgZmxhZyBkdXJpbmcgY29tcGlsYXRpb24gaXMg bmVlZGVkIChpbnN0ZWFkIG9mIGhhdmluZyB0bw0KPiA+IG1vZGlmeSBzb3VyY2UgY29kZSB0byBh ZGQgaW5jbHVkZXMpLiBGcm9tIGEgdmVjdG9yaXphdGlvbiBsZWdhbGl0eSBwZXJzcGVjdGl2ZSwN Cj4gPiB0aGlzIHN0cmF0ZWd5IGFsc28gc2VlbXMgbW9yZSByZWxpYWJsZSB0aGFuIGEgcmVkaXJl Y3RpbmcgaGVhZGVyIHNpbmNlDQo+ID4gU2xlZWYgZnVuY3Rpb25zIChldmVuIHRoZSBzY2FsYXIg b25lcykgbmV2ZXIgc2V0IHRoZSBlcnJubyBhbmQgR0NDIGFscmVhZHkNCj4gPiB2ZXJpZmllcyBz dWNoIGRldGFpbHMgd2hlbiB0cmFuc2Zvcm1pbmcgbGlibSBjYWxscyB0byBidWlsdGlucy4NCj4g Pg0KPiA+IEFsdGVybmF0aXZlbHksIGRvIHlvdSBwcmVmZXJlIGEgcGF0Y2ggdGhhdCBhZGRzIFNW RSBzdXBwb3J0IGZvcg0KPiA+ICNwcmFnbWEgb21wIGRlY2xhcmUgc2ltZCBkZWNsYXJhdGlvbnMs IHRodXMgZW5hYmxpbmcgdGhlIHNhbWUgaGVhZGVyLWJhc2VkDQo+ID4gc3RyYXRlZ3kgZm9yIFNW RSBhcyBmb3IgTkVPTj8NCj4gPg0KPiA+IFRoYW5rIHlvdSBhbmQga2luZCByZWdhcmRzLA0KPiA+ IExvdSBLbmF1ZXINCj4gPg0KPiA+IFswXTogaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9z aG93X2J1Zy5jZ2k/aWQ9OTYzNDINCj4gPg0KPiA+Pg0KPiA+Pj4NCj4gPj4+IGdjYy9DaGFuZ2VM b2c6DQo+ID4+Pg0KPiA+Pj4gICAgICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdDog QWRkIC1tdmVjbGliYWJpIG9wdGlvbi4NCj4gPj4+ICAgICAgICAgICogY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1vcHRzLmg6IEFkZCBhYXJjaDY0X3ZlY2xpYmFiaSBlbnVtLg0KPiA+Pj4gICAgICAg ICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oOiBBZGQNCj4gPj4+ICAgICAgICAg IGFhcmNoNjRfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uIGRlY2xhcmF0aW9uLg0KPiA+Pj4g ICAgICAgICAgKiBjb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjOiBIYW5kbGUgLW12ZWNsaWJhYmkg b3B0aW9uIGFuZCBwdXJlDQo+ID4+PiAgICAgICAgICBzY2FsYWJsZSB0eXBlIGluZm8gZm9yIHNj YWxhYmxlIHZlY3RvcnMgd2l0aG91dCAiU1ZFIHR5cGUiIGF0dHJpYnV0ZXMuDQo+ID4+PiAgICAg ICAgICAqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2M6IEFkZA0KPiA+Pj4gICAg ICAgICAgYWFyY2g2NF9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24gZGVmaW5pdGlvbi4NCj4g Pj4+ICAgICAgICAgICogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbXZlY2xpYmFiaSBmb3Ig QUFyY2g2NCB0YXJnZXRzLg0KPiA+Pj4NCj4gPj4+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0K PiA+Pj4NCj4gPj4+ICAgICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3QtdmVjYWJpLXNs ZWVmZ251LW5lb24uYzogTmV3IHRlc3RjYXNlLg0KPiA+Pj4gICAgICAgICAgKiBnY2MudGFyZ2V0 L2FhcmNoNjQvdmVjdC12ZWNhYmktc2xlZWZnbnUtc3ZlLmM6IE5ldyB0ZXN0Y2FzZS4NCj4gPj4+ IC0tLQ0KPiA+Pj4gICBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYyAgICAg ICAgfCAxMTMgKysrKysrKysrKysrKysrKysrDQo+ID4+PiAgIGdjYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LW9wdHMuaCAgICAgICAgICAgICB8ICAgNSArDQo+ID4+PiAgIGdjYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXByb3Rvcy5oICAgICAgICAgICB8ICAgMyArDQo+ID4+PiAgIGdjYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LmNjICAgICAgICAgICAgICAgICB8ICA2NiArKysrKysrKysrDQo+ ID4+PiAgIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdCAgICAgICAgICAgICAgICB8ICAx NSArKysNCj4gPj4+ICAgZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE1ICsrKw0KPiA+Pj4gICAuLi4vYWFyY2g2NC92ZWN0LXZlY2FiaS1zbGVlZmdudS1u ZW9uLmMgICAgICAgfCAgMTYgKysrDQo+ID4+PiAgIC4uLi9hYXJjaDY0L3ZlY3QtdmVjYWJpLXNs ZWVmZ251LXN2ZS5jICAgICAgICB8ICAxNiArKysNCj4gPj4+ICAgOCBmaWxlcyBjaGFuZ2VkLCAy NDkgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC12ZWNhYmktc2xlZWZnbnUtbmVvbi5jDQo+ID4+PiAg IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92ZWN0 LXZlY2FiaS1zbGVlZmdudS1zdmUuYw0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0LWJ1aWx0aW5zLmNjDQo+ID4+PiBpbmRleCBjYzZiN2MwMWZkMS4uZjUzZmE5MWI4ZDAgMTAw NjQ0DQo+ID4+PiAtLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jYw0K PiA+Pj4gKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MNCj4gPj4+ IEBAIC00Nyw2ICs0Nyw3IEBADQo+ID4+PiAgICNpbmNsdWRlICJzdHJpbmdwb29sLmgiDQo+ID4+ PiAgICNpbmNsdWRlICJhdHRyaWJzLmgiDQo+ID4+PiAgICNpbmNsdWRlICJnaW1wbGUtZm9sZC5o Ig0KPiA+Pj4gKyNpbmNsdWRlICJidWlsdGlucy5oIg0KPiA+Pj4NCj4gPj4+ICAgI2RlZmluZSB2 OHFpX1VQICBFX1Y4UUltb2RlDQo+ID4+PiAgICNkZWZpbmUgdjhkaV9VUCAgRV9WOERJbW9kZQ0K PiA+Pj4gQEAgLTM0NTAsNiArMzQ1MSwxMTggQEAgYWFyY2g2NF9yZXNvbHZlX292ZXJsb2FkZWRf YnVpbHRpbl9nZW5lcmFsIChsb2NhdGlvbl90IGxvYywgdHJlZSBmdW5jdGlvbiwNCj4gPj4+ICAg ICByZXR1cm4gTlVMTF9UUkVFOw0KPiA+Pj4gICB9DQo+ID4+Pg0KPiA+Pj4gKy8qIFRoZSB2ZWN0 b3IgbGlicmFyeSBhYmkgdG8gdXNlLCBpZiBhbnkuICAqLw0KPiA+Pj4gK2V4dGVybiBlbnVtIGFh cmNoNjRfdmVjbGliYWJpIGFhcmNoNjRfc2VsZWN0ZWRfdmVjbGliYWJpOw0KPiA+Pj4gKw0KPiA+ Pj4gKy8qIFJldHVybnMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3IgYSB2ZWN0b3JpemVkIHZl cnNpb24gb2YgdGhlIGNvbWJpbmVkDQo+ID4+PiArICAgZnVuY3Rpb24gd2l0aCBjb21iaW5lZF9m biBjb2RlIEZOIGFuZCB0aGUgcmVzdWx0IHZlY3RvciB0eXBlIFRZUEUuDQo+ID4+PiArICAgTlVM TF9UUkVFIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzIG5vbmUgYXZhaWxhYmxlLiAgKi8NCj4gPj4+ ICt0cmVlDQo+ID4+PiArYWFyY2g2NF9idWlsdGluX3ZlY3Rvcml6ZWRfZnVuY3Rpb24gKHVuc2ln bmVkIGludCBmbl9jb2RlLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRyZWUgdHlwZV9vdXQsIHRyZWUgdHlwZV9pbikNCj4gPj4+ICt7DQo+ID4+PiArICBpZiAo VFJFRV9DT0RFICh0eXBlX291dCkgIT0gVkVDVE9SX1RZUEUNCj4gPj4+ICsgICAgICB8fCBUUkVF X0NPREUgKHR5cGVfaW4pICE9IFZFQ1RPUl9UWVBFDQo+ID4+PiArICAgICAgfHwgYWFyY2g2NF9z ZWxlY3RlZF92ZWNsaWJhYmkgIT0gYWFyY2g2NF92ZWNsaWJhYmlfdHlwZV9zbGVlZmdudQ0KPiA+ Pj4gKyAgICAgIHx8ICFmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMpDQo+ID4+PiArICAg IHJldHVybiBOVUxMX1RSRUU7DQo+ID4+PiArDQo+ID4+PiArICBtYWNoaW5lX21vZGUgbW9kZSA9 IFRZUEVfTU9ERSAoVFJFRV9UWVBFICh0eXBlX291dCkpOw0KPiA+Pj4gKyAgcG9seV91aW50NjQg biA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0eXBlX291dCk7DQo+ID4+PiArICBpZiAobW9kZSAh PSBUWVBFX01PREUgKFRSRUVfVFlQRSAodHlwZV9pbikpDQo+ID4+PiArICAgICAgfHwgIWtub3du X2VxIChuLCBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodHlwZV9pbikpKQ0KPiA+Pj4gKyAgICByZXR1 cm4gTlVMTF9UUkVFOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgYm9vbCBpc19zY2FsYWJsZSA9ICFuLmlz X2NvbnN0YW50ICgpOw0KPiA+Pj4gKyAgaWYgKGlzX3NjYWxhYmxlKQ0KPiA+Pj4gKyAgICB7DQo+ ID4+PiArICAgICAgLyogU1ZFIGlzIG5lZWRlZCBmb3Igc2NhbGFibGUgdmVjdG9ycywgYSBTVkUg cmVnaXN0ZXIncyBzaXplIGlzDQo+ID4+PiArICAgICAgICBhbHdheXMgYSBtdWx0aXBsZSBvZiAx MjguICAqLw0KPiA+Pj4gKyAgICAgIGlmICghVEFSR0VUX1NWRQ0KPiA+Pj4gKyAgICAgICAgIHx8 IChtb2RlID09IERGbW9kZSAmJiAha25vd25fZXEgKG4sIHBvbHlfdWludDY0ICgyLCAyKSkpDQo+ ID4+PiArICAgICAgICAgfHwgKG1vZGUgPT0gU0Ztb2RlICYmICFrbm93bl9lcSAobiwgcG9seV91 aW50NjQgKDQsIDQpKSkpDQo+ID4+PiArICAgICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ID4+PiAr ICAgIH0NCj4gPj4+ICsgIGVsc2UNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIC8qIEEgTkVP TiByZWdpc3RlciBjYW4gaG9sZCB0d28gZG91YmxlcyBvciBvbmUgZmxvYXQuICAqLw0KPiA+Pj4g KyAgICAgIGlmICghVEFSR0VUX1NJTUQNCj4gPj4+ICsgICAgICAgICB8fCAobW9kZSA9PSBERm1v ZGUgJiYgbi50b19jb25zdGFudCAoKSAhPSAyKQ0KPiA+Pj4gKyAgICAgICAgIHx8IChtb2RlID09 IFNGbW9kZSAmJiBuLnRvX2NvbnN0YW50ICgpICE9IDQpKQ0KPiA+Pj4gKyAgICAgICByZXR1cm4g TlVMTF9UUkVFOw0KPiA+Pj4gKyAgICB9DQo+ID4+PiArDQo+ID4+PiArICB0cmVlIGZudHlwZTsN Cj4gPj4+ICsgIGNvbWJpbmVkX2ZuIGZuID0gY29tYmluZWRfZm4gKGZuX2NvZGUpOw0KPiA+Pj4g KyAgY29uc3QgY2hhciAqYXJnZW5jb2Rpbmc7DQo+ID4+PiArICBzd2l0Y2ggKGZuKQ0KPiA+Pj4g KyAgICB7DQo+ID4+PiArICAgICAgQ0FTRV9DRk5fRVhQOg0KPiA+Pj4gKyAgICAgIENBU0VfQ0ZO X0xPRzoNCj4gPj4+ICsgICAgICBDQVNFX0NGTl9MT0cxMDoNCj4gPj4+ICsgICAgICBDQVNFX0NG Tl9UQU5IOg0KPiA+Pj4gKyAgICAgIENBU0VfQ0ZOX1RBTjoNCj4gPj4+ICsgICAgICBDQVNFX0NG Tl9BVEFOOg0KPiA+Pj4gKyAgICAgIENBU0VfQ0ZOX0FUQU5IOg0KPiA+Pj4gKyAgICAgIENBU0Vf Q0ZOX0NCUlQ6DQo+ID4+PiArICAgICAgQ0FTRV9DRk5fU0lOSDoNCj4gPj4+ICsgICAgICBDQVNF X0NGTl9TSU46DQo+ID4+PiArICAgICAgQ0FTRV9DRk5fQVNJTkg6DQo+ID4+PiArICAgICAgQ0FT RV9DRk5fQVNJTjoNCj4gPj4+ICsgICAgICBDQVNFX0NGTl9DT1NIOg0KPiA+Pj4gKyAgICAgIENB U0VfQ0ZOX0NPUzoNCj4gPj4+ICsgICAgICBDQVNFX0NGTl9BQ09TSDoNCj4gPj4+ICsgICAgICBD QVNFX0NGTl9BQ09TOg0KPiA+Pj4gKyAgICAgICBmbnR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBl X2xpc3QgKHR5cGVfb3V0LCB0eXBlX2luLCBOVUxMKTsNCj4gPj4+ICsgICAgICAgYXJnZW5jb2Rp bmcgPSAidiI7DQo+ID4+PiArICAgICAgIGJyZWFrOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgIENB U0VfQ0ZOX1BPVzoNCj4gPj4+ICsgICAgICBDQVNFX0NGTl9BVEFOMjoNCj4gPj4+ICsgICAgICAg Zm50eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh0eXBlX291dCwgdHlwZV9pbiwgdHlw ZV9pbiwgTlVMTCk7DQo+ID4+PiArICAgICAgIGFyZ2VuY29kaW5nID0gInZ2IjsNCj4gPj4+ICsg ICAgICAgYnJlYWs7DQo+ID4+PiArDQo+ID4+PiArICAgICAgZGVmYXVsdDoNCj4gPj4+ICsgICAg ICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPj4+ICsgICAgfQ0KPiA+Pj4gKw0KPiA+Pj4gKyAgdHJl ZSBmbmRlY2wgPSBtYXRoZm5fYnVpbHRfaW4gKG1vZGUgPT0gREZtb2RlDQo+ID4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRvdWJsZV90eXBlX25vZGUgOiBmbG9hdF90eXBl X25vZGUsIGZuKTsNCj4gPj4+ICsgIGNvbnN0IGNoYXIgKnNjYWxhcl9uYW1lID0gSURFTlRJRklF Ul9QT0lOVEVSIChERUNMX05BTUUgKGZuZGVjbCkpOw0KPiA+Pj4gKyAgLyogQnVpbHRpbnMgd2ls bCBhbHdheXMgYmUgcHJlZml4ZWQgd2l0aCAnX19idWlsdGluXycuICAqLw0KPiA+Pj4gKyAgZ2Nj X2Fzc2VydCAoc3RybmNtcCAoc2NhbGFyX25hbWUsICJfX2J1aWx0aW5fIiwgMTApID09IDApOw0K PiA+Pj4gKyAgc2NhbGFyX25hbWUgKz0gMTA7DQo+ID4+PiArDQo+ID4+PiArICBjaGFyIHZlY3Rv cml6ZWRfbmFtZVszMl07DQo+ID4+PiArICBpZiAoaXNfc2NhbGFibGUpDQo+ID4+PiArICAgIHsN Cj4gPj4+ICsgICAgICAvKiBTVkUgSVNBICovDQo+ID4+PiArICAgICAgaW50IG4gPSBzbnByaW50 ZiAodmVjdG9yaXplZF9uYW1lLCBzaXplb2YgKHZlY3Rvcml6ZWRfbmFtZSksDQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgICAiX1pHVnNOeCVzXyVzIiwgYXJnZW5jb2RpbmcsIHNjYWxhcl9u YW1lKTsNCj4gPj4+ICsgICAgICBpZiAobiA8IDAgfHwgbiA+IHNpemVvZiAodmVjdG9yaXplZF9u YW1lKSkNCj4gPj4+ICsgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPj4+ICsgICAgfQ0KPiA+ Pj4gKyAgZWxzZQ0KPiA+Pj4gKyAgICB7DQo+ID4+PiArICAgICAgLyogTkVPTiBJU0EgKi8NCj4g Pj4+ICsgICAgICBpbnQgbiA9IHNucHJpbnRmICh2ZWN0b3JpemVkX25hbWUsIHNpemVvZiAodmVj dG9yaXplZF9uYW1lKSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJfWkdWbk4lZCVz XyVzIiwgbW9kZSA9PSBTRm1vZGUgPyA0IDogMiwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGFyZ2VuY29kaW5nLCBzY2FsYXJfbmFtZSk7DQo+ID4+PiArICAgICAgaWYgKG4gPCAwIHx8 IG4gPiBzaXplb2YgKHZlY3Rvcml6ZWRfbmFtZSkpDQo+ID4+PiArICAgICAgIHJldHVybiBOVUxM X1RSRUU7DQo+ID4+PiArICAgIH0NCj4gPj4+ICsNCj4gPj4+ICsgIHRyZWUgbmV3X2ZuZGVjbCA9 IGJ1aWxkX2RlY2wgKEJVSUxUSU5TX0xPQ0FUSU9OLCBGVU5DVElPTl9ERUNMLA0KPiA+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaWRlbnRpZmllciAodmVjdG9yaXplZF9u YW1lKSwgZm50eXBlKTsNCj4gPj4+ICsgIFRSRUVfUFVCTElDIChuZXdfZm5kZWNsKSA9IDE7DQo+ ID4+PiArICBUUkVFX1JFQURPTkxZIChuZXdfZm5kZWNsKSA9IDE7DQo+ID4+PiArICBERUNMX0VY VEVSTkFMIChuZXdfZm5kZWNsKSA9IDE7DQo+ID4+PiArICBERUNMX0lTX05PVk9QUyAobmV3X2Zu ZGVjbCkgPSAxOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgcmV0dXJuIG5ld19mbmRlY2w7DQo+ID4+PiAr fQ0KPiA+Pj4gKw0KPiA+Pj4gICAjdW5kZWYgQUFSQ0g2NF9DSEVDS19CVUlMVElOX01PREUNCj4g Pj4+ICAgI3VuZGVmIEFBUkNINjRfRklORF9GUklOVF9WQVJJQU5UDQo+ID4+PiAgICN1bmRlZiBD RjANCj4gPj4+IGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1vcHRzLmgg Yi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1vcHRzLmgNCj4gPj4+IGluZGV4IGE5ZjNlMjcx NWNhLi5kMTI4NzFiODkzYyAxMDA2NDQNCj4gPj4+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LW9wdHMuaA0KPiA+Pj4gKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtb3B0 cy5oDQo+ID4+PiBAQCAtOTgsNCArOTgsOSBAQCBlbnVtIGFhcmNoNjRfa2V5X3R5cGUgew0KPiA+ Pj4gICAgIEFBUkNINjRfS0VZX0INCj4gPj4+ICAgfTsNCj4gPj4+DQo+ID4+PiArZW51bSBhYXJj aDY0X3ZlY2xpYmFiaSB7DQo+ID4+PiArICBhYXJjaDY0X3ZlY2xpYmFiaV90eXBlX25vbmUsDQo+ ID4+PiArICBhYXJjaDY0X3ZlY2xpYmFiaV90eXBlX3NsZWVmZ251DQo+ID4+PiArfTsNCj4gPj4+ ICsNCj4gPj4+ICAgI2VuZGlmDQo+ID4+PiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtcHJvdG9zLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90b3MuaA0K PiA+Pj4gaW5kZXggNjMzMzlmYTQ3ZGYuLjUzYzZlNDU1ZGE4IDEwMDY0NA0KPiA+Pj4gLS0tIGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgNCj4gPj4+ICsrKyBiL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oDQo+ID4+PiBAQCAtMTA2Niw0ICsxMDY2LDcgQEAg ZXh0ZXJuIGJvb2wgYWFyY2g2NF9oYXJkZW5fc2xzX2Jscl9wICh2b2lkKTsNCj4gPj4+DQo+ID4+ PiAgIGV4dGVybiB2b2lkIGFhcmNoNjRfb3V0cHV0X3BhdGNoYWJsZV9hcmVhICh1bnNpZ25lZCBp bnQsIGJvb2wpOw0KPiA+Pj4NCj4gPj4+ICtleHRlcm4gdHJlZSBhYXJjaDY0X2J1aWx0aW5fdmVj dG9yaXplZF9mdW5jdGlvbiAodW5zaWduZWQgaW50IGZuLA0KPiA+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgdHlwZV9vdXQsIHRyZWUgdHlw ZV9pbik7DQo+ID4+PiArDQo+ID4+PiAgICNlbmRpZiAvKiBHQ0NfQUFSQ0g2NF9QUk9UT1NfSCAq Lw0KPiA+Pj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MNCj4gPj4+IGluZGV4IDQyNjE3Y2VkNzNhLi41MGFj MzdmZjAxZSAxMDA2NDQNCj4gPj4+IC0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNj DQo+ID4+PiArKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jYw0KPiA+Pj4gQEAgLTg0 LDYgKzg0LDcgQEANCj4gPj4+ICAgI2luY2x1ZGUgImFhcmNoNjQtZmVhdHVyZS1kZXBzLmgiDQo+ ID4+PiAgICNpbmNsdWRlICJjb25maWcvYXJtL2FhcmNoLWNvbW1vbi5oIg0KPiA+Pj4gICAjaW5j bHVkZSAiY29uZmlnL2FybS9hYXJjaC1jb21tb24tcHJvdG9zLmgiDQo+ID4+PiArI2luY2x1ZGUg InByaW50LXRyZWUuaCINCj4gPj4+DQo+ID4+PiAgIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5j bHVkZWQgbGFzdC4gICovDQo+ID4+PiAgICNpbmNsdWRlICJ0YXJnZXQtZGVmLmgiDQo+ID4+PiBA QCAtMjk1MSw2ICsyOTUyLDYyIEBAIHB1cmVfc2NhbGFibGVfdHlwZV9pbmZvOjphbmFseXplIChj b25zdF90cmVlIHR5cGUpDQo+ID4+PiAgICAgICAgIHJldHVybiBJU19QU1Q7DQo+ID4+PiAgICAg ICB9DQo+ID4+Pg0KPiA+Pj4gKyAgLyogT25seSBmdW5jdGlvbnMgYW5kIHR5cGVzIHRoYXQgYXJl IHBhcnQgb2YgdGhlIEFSTSBDIExhbmd1YWdlDQo+ID4+PiArICAgICBFeHRlbnNpb25zIChhcm1f c3ZlLmgpIGhhdmUgdGhlIFNWRSB0eXBlIGF0dHJpYnV0ZXMuDQo+ID4+PiArICAgICBUaGUgYXV0 by12ZWN0b3JpemVyIGRvZXMgbm90IGFubm90YXRlIHRoZSB2ZWN0b3IgdHlwZXMgaXQgY3JlYXRl cyB3aXRoDQo+ID4+PiArICAgICB0aG9zZSBhdHRyaWJ1dGVzLiBXaXRoIHRoZSBzdXBwb3J0IG9m IHZlY3Rvcml6ZWQgbGlibSBmdW5jdGlvbg0KPiA+Pj4gKyAgICAgYnVpbHRpbnMgIGZvciBTVkUs IHNjYWxhYmxlIHZlY3RvcnMgd2l0aG91dCBzcGVjaWFsIGF0dHJpYnV0ZXMNCj4gPj4+ICsgICAg IGhhdmUgdG8gYmUgdHJlYXRlZCBhcyB3ZWxsLiAgKi8NCj4gPj4+ICsgIGlmIChUUkVFX0NPREUg KHR5cGUpID09IFZFQ1RPUl9UWVBFDQo+ID4+PiArICAgICAgJiYgIVRZUEVfVkVDVE9SX1NVQlBB UlRTICh0eXBlKS5pc19jb25zdGFudCAoKSkNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIC8q IEJvb2xlYW4gdmVjdG9ycyBhcmUgc3BlY2lhbCBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYnkNCj4g Pj4+ICsgICAgICAgIHRoZSB2ZWN0b3JpemVyIGFzIG1hc2tzIHRoYXQgbXVzdCBnbyBpbnRvIHRo ZQ0KPiA+Pj4gKyAgICAgICAgcHJlZGljYXRlIHJlZ2lzdGVycy4gICovDQo+ID4+PiArICAgICAg aWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh0eXBlKSkgPT0gQk9PTEVBTl9UWVBFKQ0KPiA+Pj4g KyAgICAgICB7DQo+ID4+PiArICAgICAgICAgcC5udW1fenIgPSAwOw0KPiA+Pj4gKyAgICAgICAg IHAubnVtX3ByID0gMTsNCj4gPj4+ICsgICAgICAgICBwLm1vZGUgPSBwLm9yaWdfbW9kZSA9IFRZ UEVfTU9ERSAodHlwZSk7DQo+ID4+PiArICAgICAgICAgYWRkX3BpZWNlIChwKTsNCj4gPj4+ICsg ICAgICAgICByZXR1cm4gSVNfUFNUOw0KPiA+Pj4gKyAgICAgICB9DQo+ID4+PiArDQo+ID4+PiAr ICAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7DQo+ID4+PiArICAgICAgIG1hY2hpbmVfbW9kZSBt b2RlOw0KPiA+Pj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudF9zaXplOw0KPiA+Pj4gKyAg ICAgICBwb2x5X3VpbnQ2NCB2ZWN0b3Jfc2l6ZTsNCj4gPj4+ICsgICAgICB9IHZhbGlkX3ZlY3Rv cnNbXSA9IHsNCj4gPj4+ICsgICAgICAgeyBWTng4QkZtb2RlLCAxNiwgcG9seV91aW50NjQgKDgs IDgpIH0sIC8qIHN2YmZsb2F0MTZfdCAqLw0KPiA+Pj4gKyAgICAgICB7IFZOeDhIRm1vZGUsIDE2 LCBwb2x5X3VpbnQ2NCAoOCwgOCkgfSwgLyogc3ZmbG9hdDE2X3QgKi8NCj4gPj4+ICsgICAgICAg eyBWTng0U0Ztb2RlLCAzMiwgcG9seV91aW50NjQgKDQsIDQpIH0sIC8qIHN2ZmxvYXQzMl90ICov DQo+ID4+PiArICAgICAgIHsgVk54MkRGbW9kZSwgNjQsIHBvbHlfdWludDY0ICgyLCAyKSB9LCAv KiBzdmZsb2F0NjRfdCAqLw0KPiA+Pj4gKyAgICAgICB7IFZOeDE2Qkltb2RlLCA4LCBwb2x5X3Vp bnQ2NCAoMTYsIDE2KSB9LCAvKiBzdlt1XWludDhfdCAqLw0KPiA+Pj4gKyAgICAgICB7IFZOeDhI SW1vZGUsIDE2LCBwb2x5X3VpbnQ2NCAoOCwgOCkgfSwgLyogc3ZbdV1pbnQxNl90ICovDQo+ID4+ PiArICAgICAgIHsgVk54NFNJbW9kZSwgMzIsIHBvbHlfdWludDY0ICg0LCA0KSB9LCAvKiBzdlt1 XWludDMyX3QgKi8NCj4gPj4+ICsgICAgICAgeyBWTngyREltb2RlLCA2NCwgcG9seV91aW50NjQg KDIsIDIpIH0sIC8qIHN2W3VdaW50NjRfdCAqLw0KPiA+Pj4gKyAgICAgIH07DQo+ID4+PiArDQo+ ID4+PiArICAgICAgbWFjaGluZV9tb2RlIGVsbV9tb2RlID0gVFlQRV9NT0RFIChUUkVFX1RZUEUg KHR5cGUpKTsNCj4gPj4+ICsgICAgICB1bnNpZ25lZCBpbnQgZWxtX3NpemUgPSBHRVRfTU9ERV9C SVRTSVpFIChlbG1fbW9kZSkudG9fY29uc3RhbnQgKCk7DQo+ID4+PiArICAgICAgZm9yICh1bnNp Z25lZCBpID0gMDsNCj4gPj4+ICsgICAgICAgICAgaSA8IHNpemVvZiAodmFsaWRfdmVjdG9ycykg LyBzaXplb2YgKHZhbGlkX3ZlY3RvcnNbMF0pOyBpKyspDQo+ID4+PiArICAgICAgIGlmICh2YWxp ZF92ZWN0b3JzW2ldLmVsZW1lbnRfc2l6ZSA9PSBlbG1fc2l6ZQ0KPiA+Pj4gKyAgICAgICAgICAg JiYgdmFsaWRfdmVjdG9yc1tpXS5tb2RlID09IFRZUEVfTU9ERSAodHlwZSkNCj4gPj4+ICsgICAg ICAgICAgICYmIGtub3duX2VxICh2YWxpZF92ZWN0b3JzW2ldLnZlY3Rvcl9zaXplLA0KPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0eXBlKSkpDQo+ ID4+PiArICAgICAgICAgew0KPiA+Pj4gKyAgICAgICAgICAgcC5udW1fenIgPSAxOw0KPiA+Pj4g KyAgICAgICAgICAgcC5udW1fcHIgPSAwOw0KPiA+Pj4gKyAgICAgICAgICAgcC5tb2RlID0gcC5v cmlnX21vZGUgPSB2YWxpZF92ZWN0b3JzW2ldLm1vZGU7DQo+ID4+PiArICAgICAgICAgICBhZGRf cGllY2UgKHApOw0KPiA+Pj4gKyAgICAgICAgICAgcmV0dXJuIElTX1BTVDsNCj4gPj4+ICsgICAg ICAgICB9DQo+ID4+PiArDQo+ID4+PiArICAgICAgZmF0YWxfZXJyb3IgKGlucHV0X2xvY2F0aW9u LCAidW5zdXBwb3J0ZWQgdmVjdG9yIHR5cGUgJXFUIg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAg ICIgYXMgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGhvdXQgU1ZFIGF0dHJpYnV0ZXMiLCB0eXBlKTsN Cj4gPj4+ICsgICAgfQ0KPiA+Pj4gKw0KPiA+Pj4gICAgIC8qIENoZWNrIGZvciB1c2VyLWRlZmlu ZWQgUFNUcy4gICovDQo+ID4+PiAgICAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQ RSkNCj4gPj4+ICAgICAgIHJldHVybiBhbmFseXplX2FycmF5ICh0eXBlKTsNCj4gPj4+IEBAIC0x Nzg1MSw2ICsxNzkwOCw4IEBAIGFhcmNoNjRfb3ZlcnJpZGVfb3B0aW9uc19hZnRlcl9jaGFuZ2Vf MSAoc3RydWN0IGdjY19vcHRpb25zICpvcHRzKQ0KPiA+Pj4gICAgICAgZmxhZ19tcmVjaXBfbG93 X3ByZWNpc2lvbl9zcXJ0ID0gdHJ1ZTsNCj4gPj4+ICAgfQ0KPiA+Pj4NCj4gPj4+ICtlbnVtIGFh cmNoNjRfdmVjbGliYWJpIGFhcmNoNjRfc2VsZWN0ZWRfdmVjbGliYWJpID0gYWFyY2g2NF92ZWNs aWJhYmlfdHlwZV9ub25lOw0KPiA+Pj4gKw0KPiA+Pj4gICAvKiAnVW5wYWNrJyB1cCB0aGUgaW50 ZXJuYWwgdHVuaW5nIHN0cnVjdHMgYW5kIHVwZGF0ZSB0aGUgb3B0aW9ucw0KPiA+Pj4gICAgICAg aW4gT1BUUy4gIFRoZSBjYWxsZXIgbXVzdCBoYXZlIHNldCB1cCBzZWxlY3RlZF90dW5lIGFuZCBz ZWxlY3RlZF9hcmNoDQo+ID4+PiAgICAgICBhcyBhbGwgdGhlIG90aGVyIHRhcmdldC1zcGVjaWZp YyBjb2RlZ2VuIGRlY2lzaW9ucyBhcmUNCj4gPj4+IEBAIC0xODAzMSw2ICsxODA5MCw5IEBAIGFh cmNoNjRfb3ZlcnJpZGVfb3B0aW9uc19pbnRlcm5hbCAoc3RydWN0IGdjY19vcHRpb25zICpvcHRz KQ0KPiA+Pj4gICAgICAgICAmJiBvcHRzLT54X29wdGltaXplID49IGFhcmNoNjRfdHVuZV9wYXJh bXMucHJlZmV0Y2gtPmRlZmF1bHRfb3B0X2xldmVsKQ0KPiA+Pj4gICAgICAgb3B0cy0+eF9mbGFn X3ByZWZldGNoX2xvb3BfYXJyYXlzID0gMTsNCj4gPj4+DQo+ID4+PiArICBpZiAob3B0cy0+eF9h YXJjaDY0X3ZlY2xpYmFiaV90eXBlID09IGFhcmNoNjRfdmVjbGliYWJpX3R5cGVfc2xlZWZnbnUp DQo+ID4+PiArICAgIGFhcmNoNjRfc2VsZWN0ZWRfdmVjbGliYWJpID0gYWFyY2g2NF92ZWNsaWJh YmlfdHlwZV9zbGVlZmdudTsNCj4gPj4+ICsNCj4gPj4+ICAgICBhYXJjaDY0X292ZXJyaWRlX29w dGlvbnNfYWZ0ZXJfY2hhbmdlXzEgKG9wdHMpOw0KPiA+Pj4gICB9DQo+ID4+Pg0KPiA+Pj4gQEAg LTI4MDg1LDYgKzI4MTQ3LDEwIEBAIGFhcmNoNjRfbGliZ2NjX2Zsb2F0aW5nX21vZGVfc3VwcG9y dGVkX3ANCj4gPj4+ICAgI3VuZGVmIFRBUkdFVF9DT05TVF9BTkNIT1INCj4gPj4+ICAgI2RlZmlu ZSBUQVJHRVRfQ09OU1RfQU5DSE9SIDB4MTAwMDAwMA0KPiA+Pj4NCj4gPj4+ICsjdW5kZWYgVEFS R0VUX1ZFQ1RPUklaRV9CVUlMVElOX1ZFQ1RPUklaRURfRlVOQ1RJT04NCj4gPj4+ICsjZGVmaW5l IFRBUkdFVF9WRUNUT1JJWkVfQlVJTFRJTl9WRUNUT1JJWkVEX0ZVTkNUSU9OIFwNCj4gPj4+ICsg IGFhcmNoNjRfYnVpbHRpbl92ZWN0b3JpemVkX2Z1bmN0aW9uDQo+ID4+PiArDQo+ID4+PiAgIHN0 cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJHRVRfSU5JVElBTElaRVI7DQo+ID4+Pg0KPiA+ Pj4gICAjaW5jbHVkZSAiZ3QtYWFyY2g2NC5oIg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0Lm9wdCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdA0K PiA+Pj4gaW5kZXggMWQ3OTY3ZGI5YzAuLjc2MDEzZGFjZGVhIDEwMDY0NA0KPiA+Pj4gLS0tIGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0DQo+ID4+PiArKysgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5vcHQNCj4gPj4+IEBAIC0zMDIsMyArMzAyLDE4IEBAIENvbnN0YW50IG1l bXNldCBzaXplIGluIGJ5dGVzIGZyb20gd2hpY2ggdG8gc3RhcnQgdXNpbmcgTU9QUyBzZXF1ZW5j ZS4NCj4gPj4+ICAgLXBhcmFtPWFhcmNoNjQtdmVjdC11bnJvbGwtbGltaXQ9DQo+ID4+PiAgIFRh cmdldCBKb2luZWQgVUludGVnZXIgVmFyKGFhcmNoNjRfdmVjdF91bnJvbGxfbGltaXQpIEluaXQo NCkgUGFyYW0NCj4gPj4+ICAgTGltaXQgaG93IG11Y2ggdGhlIGF1dG92ZWN0b3JpemVyIG1heSB1 bnJvbGwgYSBsb29wLg0KPiA+Pj4gKw0KPiA+Pj4gKzs7IC1tdmVjbGliYWJpPQ0KPiA+Pj4gK1Rh cmdldFZhcmlhYmxlDQo+ID4+PiArZW51bSBhYXJjaDY0X3ZlY2xpYmFiaSBhYXJjaDY0X3ZlY2xp YmFiaV90eXBlID0gYWFyY2g2NF92ZWNsaWJhYmlfdHlwZV9ub25lDQo+ID4+PiArDQo+ID4+PiAr bXZlY2xpYmFiaT0NCj4gPj4+ICtUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIFZhcihhYXJj aDY0X3ZlY2xpYmFiaV90eXBlKSBFbnVtKGFhcmNoNjRfdmVjbGliYWJpKSBJbml0KGFhcmNoNjRf dmVjbGliYWJpX3R5cGVfbm9uZSkNCj4gPj4+ICtWZWN0b3IgbGlicmFyeSBBQkkgdG8gdXNlLg0K PiA+Pj4gKw0KPiA+Pj4gK0VudW0NCj4gPj4+ICtOYW1lKGFhcmNoNjRfdmVjbGliYWJpKSBUeXBl KGVudW0gYWFyY2g2NF92ZWNsaWJhYmkpDQo+ID4+PiArS25vd24gdmVjdG9yaXphdGlvbiBsaWJy YXJ5IEFCSXMgKGZvciB1c2Ugd2l0aCB0aGUgLW12ZWNsaWJhYmk9IG9wdGlvbik6DQo+ID4+PiAr DQo+ID4+PiArRW51bVZhbHVlDQo+ID4+PiArRW51bShhYXJjaDY0X3ZlY2xpYmFiaSkgU3RyaW5n KHNsZWVmZ251KSBWYWx1ZShhYXJjaDY0X3ZlY2xpYmFiaV90eXBlX3NsZWVmZ251KQ0KPiA+Pj4g ZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpDQo+ ID4+PiBpbmRleCBhMzg1NDdmNTNlNS4uNzFmYmJmMjc1MjIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9n Y2MvZG9jL2ludm9rZS50ZXhpDQo+ID4+PiArKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpDQo+ID4+ PiBAQCAtMjAzODMsNiArMjAzODMsMjEgQEAgYWNyb3NzIHJlbGVhc2VzLg0KPiA+Pj4NCj4gPj4+ ICAgVGhpcyBvcHRpb24gaXMgb25seSBpbnRlbmRlZCB0byBiZSB1c2VmdWwgd2hlbiBkZXZlbG9w aW5nIEdDQy4NCj4gPj4+DQo+ID4+PiArQG9waW5kZXggbXZlY2xpYmFiaQ0KPiA+Pj4gK0BpdGVt IC1tdmVjbGliYWJpPUB2YXJ7dHlwZX0NCj4gPj4+ICtTcGVjaWZpZXMgdGhlIEFCSSB0eXBlIHRv IHVzZSBmb3IgdmVjdG9yaXppbmcgaW50cmluc2ljcyB1c2luZyBhbg0KPiA+Pj4gK2V4dGVybmFs IGxpYnJhcnkuICBUaGUgb25seSB0eXBlIHN1cHBvcnRlZCBhdCBwcmVzZW50IGlzIEBzYW1we3Ns ZWVmZ251fSwNCj4gPj4+ICt3aGljaCBzcGVjaWZpZXMgdG8gdXNlIHRoZSBHTlUgQUJJIHZhcmlh bnQgb2YgdGhlIFNsZWVmIFZlY3Rvcml6ZWQNCj4gPj4+ICtNYXRoIExpYnJhcnkuIFRoaXMgZmxh ZyBjYW4gYmUgdXNlZCBmb3IgYm90aCwgQWR2YW5jZWQgU0lNRCAoTkVPTikgYW5kIFNWRS4NCj4g Pj4+ICsNCj4gPj4+ICtHQ0MgY3VycmVudGx5IGVtaXRzIHZlY3Rvcml6ZWQgY2FsbHMgdG8gQGNv ZGV7ZXhwfSwgQGNvZGV7bG9nfSwgQGNvZGV7bG9nMTB9LA0KPiA+Pj4gK0Bjb2Rle3Rhbmh9LCBA Y29kZXt0YW59LCBAY29kZXthdGFufSwgQGNvZGV7YXRhbmh9LCBAY29kZXtjYnJ0fSwgQGNvZGV7 c2luaH0sDQo+ID4+PiArQGNvZGV7c2lufSwgQGNvZGV7YXNpbmh9IGFuZCBAY29kZXthc2lufSB3 aGVuIHBvc3NpYmxlIGFuZCBwcm9maXRhYmxlDQo+ID4+PiArb24gQUFyY2g2NC4NCj4gPj4+ICsN Cj4gPj4+ICtCb3RoIEBvcHRpb257LWZ0cmVlLXZlY3Rvcml6ZX0gYW5kIEBvcHRpb257LWZ1bnNh ZmUtbWF0aC1vcHRpbWl6YXRpb25zfQ0KPiA+Pj4gK211c3QgYWxzbyBiZSBlbmFibGVkLiBUaGUg bGlic2xlZWZnbnUgbXVzdCBiZSBzcGVjaWZpZWQgYXQgbGluayB0aW1lLg0KPiA+Pj4gKw0KPiA+ Pj4gICBAb3BpbmRleCBtdmVyYm9zZS1jb3N0LWR1bXANCj4gPj4+ICAgQGl0ZW0gLW12ZXJib3Nl LWNvc3QtZHVtcA0KPiA+Pj4gICBFbmFibGUgdmVyYm9zZSBjb3N0IG1vZGVsIGR1bXBpbmcgaW4g dGhlIGRlYnVnIGR1bXAgZmlsZXMuICBUaGlzIG9wdGlvbiBpcw0KPiA+Pj4gZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3QtdmVjYWJpLXNsZWVmZ251LW5l b24uYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3QtDQo+IHZlY2FiaS0N Cj4gPj4gc2xlZWZnbnUtbmVvbi5jDQo+ID4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4g aW5kZXggMDAwMDAwMDAwMDAuLmU5ZjYwNzhjZDEyDQo+ID4+PiAtLS0gL2Rldi9udWxsDQo+ID4+ PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92ZWN0LXZlY2FiaS1zbGVl ZmdudS1uZW9uLmMNCj4gPj4+IEBAIC0wLDAgKzEsMTYgQEANCj4gPj4+ICsvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLw0KPiA+Pj4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1tYXJjaD1hcm12OC1hK3Np bWQgLWZ0cmVlLXZlY3Rvcml6ZSAtbXZlY2xpYmFiaT1zbGVlZmdudSAtZmZhc3QtbWF0aCIgfSAq Lw0KPiA+Pj4gKw0KPiA+Pj4gK2V4dGVybiBmbG9hdCBzaW5mKGZsb2F0KTsNCj4gPj4+ICsNCj4g Pj4+ICtmbG9hdCB4WzI1Nl07DQo+ID4+PiArDQo+ID4+PiArdm9pZCBmb28odm9pZCkNCj4gPj4+ ICt7DQo+ID4+PiArICBpbnQgaTsNCj4gPj4+ICsNCj4gPj4+ICsgIGZvciAoaT0wOyBpPDI1Njsg KytpKQ0KPiA+Pj4gKyAgICB4W2ldID0gc2luZih4W2ldKTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ ID4+PiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfWkdWbk40dl9zaW5mIiB9IH0g Ki8NCj4gPj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92 ZWN0LXZlY2FiaS1zbGVlZmdudS1zdmUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3ZlY3QtdmVjYWJpLQ0KPiA+PiBzbGVlZmdudS1zdmUuYw0KPiA+Pj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPj4+IGluZGV4IDAwMDAwMDAwMDAwLi44MzE5YWU0MjBlMQ0KPiA+Pj4gLS0t IC9kZXYvbnVsbA0KPiA+Pj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv dmVjdC12ZWNhYmktc2xlZWZnbnUtc3ZlLmMNCj4gPj4+IEBAIC0wLDAgKzEsMTYgQEANCj4gPj4+ ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+Pj4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1t YXJjaD1hcm12OC1hK3N2ZSAtZnRyZWUtdmVjdG9yaXplIC1tdmVjbGliYWJpPXNsZWVmZ251IC1m ZmFzdC1tYXRoIiB9ICovDQo+ID4+PiArDQo+ID4+PiArZXh0ZXJuIGZsb2F0IHNpbmYoZmxvYXQp Ow0KPiA+Pj4gKw0KPiA+Pj4gK2Zsb2F0IHhbMjU2XTsNCj4gPj4+ICsNCj4gPj4+ICt2b2lkIGZv byh2b2lkKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIGludCBpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgZm9y IChpPTA7IGk8MjU2OyArK2kpDQo+ID4+PiArICAgIHhbaV0gPSBzaW5mKHhbaV0pOw0KPiA+Pj4g K30NCj4gPj4+ICsNCj4gPj4+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9aR1Zz Tnh2X3NpbmYiIH0gfSAqLw0KPiA+Pj4gLS0NCj4gPj4+IDIuMjUuMQ0KPiA+Pj4NCg==