From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19452 invoked by alias); 17 May 2017 17:41:38 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 16709 invoked by uid 89); 17 May 2017 17:41:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=mixture X-HELO: EUR03-DB5-obe.outbound.protection.outlook.com Received: from mail-oln040092071056.outbound.protection.outlook.com (HELO EUR03-DB5-obe.outbound.protection.outlook.com) (40.92.71.56) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 17 May 2017 17:41:29 +0000 Received: from DB5EUR03FT060.eop-EUR03.prod.protection.outlook.com (10.152.20.58) by DB5EUR03HT128.eop-EUR03.prod.protection.outlook.com (10.152.21.65) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1075.5; Wed, 17 May 2017 17:41:29 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com (10.152.20.58) by DB5EUR03FT060.mail.protection.outlook.com (10.152.21.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.5 via Frontend Transport; Wed, 17 May 2017 17:41:29 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::55fc:f172:98b5:d2bc]) by AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::55fc:f172:98b5:d2bc%19]) with mapi id 15.01.1101.011; Wed, 17 May 2017 17:41:29 +0000 From: Bernd Edlinger To: Daniel Santos CC: gcc-patches , Uros Bizjak Subject: Re: [PATCH] [i386] Recompute the frame layout less often Date: Wed, 17 May 2017 17:43:00 -0000 Message-ID: References: <9aa7427e-6cfc-b603-2ec4-1f0e02ae294d@pobox.com> <20c96fa0-328b-af1a-c558-dab6652c482e@pobox.com> <8d8b4700-98eb-aaa8-7718-d603cae106e8@pobox.com> In-Reply-To: authentication-results: pobox.com; dkim=none (message not signed) header.d=none;pobox.com; dmarc=none action=none header.from=hotmail.de; x-incomingtopheadermarker: OriginalChecksum:61ED3BB333714A28EC02A8DB55310051C84544FFB6090B7D8FE69EE950ADFA50;UpperCasedChecksum:58ACF6E1D4E9293E5B3541847573B9BEB018440945EB0FAA1F8775C466CD3670;SizeAsReceived:8937;Count:43 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DB5EUR03HT128;5:+onB0LlURGMXgZ1GCcFwTPF5i0zO6D0x4XIMhHR7aZZf3AFeEXV8yhj4FFl9HbOgri1zx/f/ZtQ7i9RITnJUCcMdn3v07I1myJ6cbKDFVQ0XIuoRpudhqhKJJHHoQi18/kkybKBB7gZo3dAwhOGKyA==;24:Pb47jJ63EQuJrmxNS8sSHn90kdti12P9qyb7fdQMwMIFdhwVX4ncD4h7DbkS2vP2yc5QkeaM9d+buZL4AGY/pL7relSE5VfhDdxJUIEAIZ4=;7:PF1oUw7gTvXDL7zxtN2+aJ6tdX7LYwnpmim3IKuoOHFSrwV1ve3Vf52ZjpCEv+vmNE/7a9fh0yxFBX1E25TuEtMmsav7OfAf+aw5ocVU9f/aYvKG2/kB3rPvcpjSkkkpZ78p42fVAmP45+81WfvRuP+EQwnIlbrj7zThB8AJRFFY1jxAV+vX7nNO8pJlmNSXGYMDO0SetM8VoncbeEtVI36GfbY/6bax2hEQY83GF+PqX1Ex70sXrXteE71j37a4furfqbENVK/YogKVvrMViGRrZuDc81nbcOmCeQJcdQx2uyfmY+DgThAD6abXbEFe x-incomingheadercount: 43 x-eopattributedmessage: 0 x-forefront-antispam-report: EFV:NLI;SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:DB5EUR03HT128;H:AM4PR0701MB2162.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:en; x-ms-office365-filtering-correlation-id: a582e6c8-8fb1-489a-bc83-08d49d4bf23d x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322274)(1601125374)(1603101448)(1701031045);SRVR:DB5EUR03HT128; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(444000031);SRVR:DB5EUR03HT128;BCL:0;PCL:0;RULEID:;SRVR:DB5EUR03HT128; x-forefront-prvs: 0310C78181 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2017 17:41:29.4156 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR03HT128 X-SW-Source: 2017-05/txt/msg01401.txt.bz2 T24gMDUvMTcvMTcgMDQ6MDEsIERhbmllbCBTYW50b3Mgd3JvdGU6DQo+IE9u IDA1LzE2LzIwMTcgMDI6NTIgUE0sIEJlcm5kIEVkbGluZ2VyIHdyb3RlOg0K Pj4gSSB0aGluayBJIHNvbHZlZCB0aGUgcHJvYmxlbSB3aXRoIC1mc3BsaXQt c3RhY2ssIEkgYW0gbm90IHN1cmUNCj4+IGlmIGl4ODZfc3RhdGljX2NoYWlu X29uX3N0YWNrIG1pZ2h0IGNoYW5nZSBhZnRlciByZWxvYWQgZHVlIHRvDQo+ PiBmaW5hbC5jIHBvc3NpYmx5IGNhbGxpbmcgdGFyZ2V0bS5jYWxscy5zdGF0 aWNfY2hhaW4sIGJ1dCBpZiB0aGF0DQo+PiBpcyB0aGUgY2FzZSwgdGhhdCBp cyBhbiBhbHJlYWR5IHByZS1leGlzdGluZyBwcm9ibGVtLg0KPj4NCj4+IFRo ZSBnb2FsIG9mIHRoaXMgcGF0Y2ggaXMgdG8gbWFrZSBhbGwgZGVjaXNpb25z IHJlZ2FyZGluZyB0aGUNCj4+IGZyYW1lIGxheW91dCBiZWZvcmUgdGhlIHJl bG9hZCBwYXNzLCBhbmQgdG8gbWFrZSBzdXJlIHRoYXQNCj4+IHRoZSBmcmFt ZSBsYXlvdXQgZG9lcyBub3QgY2hhbmdlIHVuZXhwZWN0ZWRseSBpdCBhc3Nl cnRzDQo+PiB0aGF0IHRoZSBkYXRhIHRoYXQgZ29lcyBpbnRvIHRoZSBkZWNp c2lvbiBkb2VzIG5vdCBjaGFuZ2UNCj4+IGFmdGVyIHJlbG9hZF9jb21wbGV0 ZWQuDQo+Pg0KPj4gV2l0aCB0aGUgYXR0YWNoZWQgcGF0Y2ggLWZzcGxpdC1z dGFjayBhbmQgdGhlIGF0dHJpYnV0ZSBtc19ob29rX3Byb2xvZ3VlDQo+PiBp cyBoYW5kZWQgZGlyZWN0bHkgYXQgdGhlIGl4ODZfZXhwYW5kX2NhbGwsIGJl Y2F1c2UgdGhhdCBkYXRhIGlzDQo+PiBhbHJlYWR5IGtub3duIGJlZm9yZSBl eHBhbnNpb24uDQo+Pg0KPj4gVGhlIGNhbGxzX2VoX3JldHVybiBhbmQgaXg4 Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgbWF5IGJlY29tZQ0KPj4ga25vd24g YXQgYSBsYXRlciB0aW1lLCBidXQgYWZ0ZXIgcmVsb2FkIGl0IHNob3VsZCBu b3QgY2hhbmdlIGFueSBtb3JlLg0KPj4gVG8gYmUgc3VyZSwgSSBhZGRlZCBh biBhc3NlcnRpb24gYXQgaXg4Nl9zdGF0aWNfY2hhaW4sIHdoaWNoIHRoZQ0K Pj4gcmVncmVzc2lvbiB0ZXN0IGRpZCBub3QgdHJpZ2dlciwgbmVpdGhlciB3 aXRoIC1tNjQgbm9yIHdpdGggLW0zMi4NCj4+DQo+PiBJIGhhdmUgYm9vdHN0 cmFwcGVkIHRoZSBwYXRjaCBzZXZlcmFsIHRpbWVzLCBhbmQgYSBmZXcgdGlt ZXMgSQ0KPj4gZW5jb3VudGVyZCBhIHNlZ2ZhdWx0IGluIHRoZSBnYXJiYWdl IGNvbGxlY3Rpb24sIGJ1dCBpdCBkaWQgbm90DQo+PiBoYXBwZW4gZXZlcnkg dGltZS4gIEN1cnJlbnRseSBJIHRoaW5rIHRoYXQgaXMgdW5yZWxhdGVkIHRv IHRoaXMgcGF0Y2guDQo+Pg0KPj4NCj4+IEJvb3RzdHJhcHBlZCBhbmQgcmVn LXRlc3RlZCBvbiB4ODZfNjQtcGMtbGludXgtZ251IHdpdGggLW02NC8tbTMy Lg0KPj4gSXMgaXQgT0sgZm9yIHRydW5rPw0KPj4NCj4+DQo+PiBUaGFua3MN Cj4+IEJlcm5kLg0KPg0KPiBXaXRoIGFzIG1hbnkgZm9ybWF0dGluZyBlcnJv cnMgYXMgSSBzZWVtIHRvIGhhdmUgaGFkLCBJIHdvdWxkIGxpa2UgdG8NCj4g Zml4IHRob3NlIHRoZW4geW91IHBhdGNoIG9uIHRvcCBvZiB0aGF0IGlmIHlv dSB3b3VsZG4ndCBtaW5kIHRlcnJpYmx5Lg0KPiBXaGlsZSBnY2MgdXNlcyBz dWJ2ZXJzaW9uLCBnaXQtYmxhbWUgaXMgc3RpbGwgdmVyeSBoZWxwZnVsICh0 aGVuIGFnYWluLA0KPiBzaW5jZSBVcm9zIGNvbW1pdHRlZCBpdCBmb3IgbWUs IEkgZ3Vlc3MgdGhhdCdzIGFscmVhZHkgb2ZmKS4NCj4NCg0KQXBvbG9naWVz IGlmIEkgcnVpbmVkIHlvdXIgcGF0Y2guLi4NCg0KPg0KPj4gSW5kZXg6IGdj Yy9jb25maWcvaTM4Ni9pMzg2LmMNCj4+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4+IC0tLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgIChyZXZpc2lv biAyNDgwMzEpDQo+PiArKysgZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAo d29ya2luZyBjb3B5KQ0KPj4gQEAgLTI0MjUsNyArMjQyNSw5IEBAIHN0YXRp YyBpbnQgY29uc3QgeDg2XzY0X2ludF9yZXR1cm5fcmVnaXN0ZXJzWzRdID0N Cj4+DQo+PiAgLyogQWRkaXRpb25hbCByZWdpc3RlcnMgdGhhdCBhcmUgY2xv YmJlcmVkIGJ5IFNZU1YgY2FsbHMuICAqLw0KPj4NCj4+IC11bnNpZ25lZCBj b25zdCB4ODZfNjRfbXNfc3lzdl9leHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJz WzEyXSA9DQo+PiArI2RlZmluZSBOVU1fWDg2XzY0X01TX0NMT0JCRVJFRF9S RUdTIDEyDQo+PiArc3RhdGljIGludCBjb25zdCB4ODZfNjRfbXNfc3lzdl9l eHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJzDQo+PiArICAgICAgICAgW05VTV9Y ODZfNjRfTVNfQ0xPQkJFUkVEX1JFR1NdID0NCj4NCj4gSXMgdGhlcmUgYSBy ZWFzb24geW91J3JlIGNoYW5naW5nIHRoaXMgdW5zaWduZWQgdG8gc2lnbmVk IGludD8gV2hpbGUNCj4gQVhfUkVHIGFuZCBzdWNoIGFyZSBqdXN0IHByZXBy b2Nlc3NvciBtYWNyb3MsIGV2ZXJ5d2hlcmUgZWxzZSBpdCBzZWVtcw0KPiB0 aGF0IHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRlYWx0IHdpdGggYXMgdW5zaWdu ZWQgaW50cy4NCj4NCg0KSSBhY3R1YWxseSB0aGVyZSBzZWVtcyB0byBiZSBj b25mdXNpb24gYWJvdXQgImludCIgdnMuICJ1bnNpZ25lZCBpbnQiDQpmb3Ig cmVnbm8sIHRoZSBhZHZhbnRhZ2Ugb2YgaW50LCBpcyB0aGF0IGl0IGNhbiBj b250YWluIC0xIGFzIGENCmV4Y2VwdGlvbmFsIHZhbHVlLiAgRnVydGhlcm1v cmUgdGhlcmUgYXJlIDMgc2ltaWxhciBhcnJheXMganVzdA0KYWJvdmUgdGhh dCBhbHNvIHVzZSBpbnQ6DQoNCnN0YXRpYyBpbnQgY29uc3QgeDg2XzY0X2lu dF9wYXJhbWV0ZXJfcmVnaXN0ZXJzWzZdID0NCnsNCiAgIERJX1JFRywgU0lf UkVHLCBEWF9SRUcsIENYX1JFRywgUjhfUkVHLCBSOV9SRUcNCn07DQoNCnN0 YXRpYyBpbnQgY29uc3QgeDg2XzY0X21zX2FiaV9pbnRfcGFyYW1ldGVyX3Jl Z2lzdGVyc1s0XSA9DQp7DQogICBDWF9SRUcsIERYX1JFRywgUjhfUkVHLCBS OV9SRUcNCn07DQoNCnN0YXRpYyBpbnQgY29uc3QgeDg2XzY0X2ludF9yZXR1 cm5fcmVnaXN0ZXJzWzRdID0NCnsNCiAgIEFYX1JFRywgRFhfUkVHLCBESV9S RUcsIFNJX1JFRw0KfTsNCg0KLyogQWRkaXRpb25hbCByZWdpc3RlcnMgdGhh dCBhcmUgY2xvYmJlcmVkIGJ5IFNZU1YgY2FsbHMuICAqLw0KDQojZGVmaW5l IE5VTV9YODZfNjRfTVNfQ0xPQkJFUkVEX1JFR1MgMTINCnN0YXRpYyBpbnQg Y29uc3QgeDg2XzY0X21zX3N5c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVy cw0KICAgICAgICAgICAgICAgICAgW05VTV9YODZfNjRfTVNfQ0xPQkJFUkVE X1JFR1NdID0NCnsNCiAgIFNJX1JFRywgRElfUkVHLA0KICAgWE1NNl9SRUcs IFhNTTdfUkVHLA0KICAgWE1NOF9SRUcsIFhNTTlfUkVHLCBYTU0xMF9SRUcs IFhNTTExX1JFRywNCiAgIFhNTTEyX1JFRywgWE1NMTNfUkVHLCBYTU0xNF9S RUcsIFhNTTE1X1JFRw0KfTsNCg0KU28gSU1ITyBpdCBsb29rZWQgb2RkIHRv IGhhdmUgb25lIGFycmF5IHVzZSBhIGRpZmZlcmVudCB0eXBlIGluIHRoZQ0K Zmlyc3QgcGxhY2UuDQoNCg0KPj4gQEAgLTI0ODQsMTMgKzI0ODYsMTMgQEAg Y2xhc3MgeGxvZ3VlX2xheW91dCB7DQo+PiAgICAgICBuZWVkcyB0byBzdG9y ZSByZWdpc3RlcnMgYmFzZWQgdXBvbiBkYXRhIGluIHRoZQ0KPj4gbWFjaGlu ZV9mdW5jdGlvbi4gICovDQo+PiAgICBIT1NUX1dJREVfSU5UIGdldF9zdGFj a19zcGFjZV91c2VkICgpIGNvbnN0DQo+PiAgICB7DQo+PiAtICAgIGNvbnN0 IHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICZtID0gKmNmdW4tPm1hY2hpbmU7 DQo+PiAtICAgIHVuc2lnbmVkIGxhc3RfcmVnID0gbS5jYWxsX21zMnN5c3Zf ZXh0cmFfcmVncyArIE1JTl9SRUdTIC0gMTsNCj4+ICsgICAgY29uc3Qgc3Ry dWN0IG1hY2hpbmVfZnVuY3Rpb24gKm0gPSBjZnVuLT5tYWNoaW5lOw0KPj4g KyAgICB1bnNpZ25lZCBsYXN0X3JlZyA9IG0tPmNhbGxfbXMyc3lzdl9leHRy YV9yZWdzICsgTUlOX1JFR1MgLSAxOw0KPg0KPiBXaGF0IGlzIHRoZSByZWFz b24gZm9yIHRoaXMgY2hhbmdlPw0KPg0KDQpCZWNhdXNlIGEgbWl4dHVyZSBv ZiBDIGFuZCBDKysgKEMgd2FudHMgInN0cnVjdCIgbWFjaGluZV9mdW5jdGlv bikNCmxvb2tzIHVnbHksIGFuZCBldmVyeXdoZXJlIGVsc2UgaW4gdGhpcyBt b2R1bGUsICJtIiBpcyBhIHBvaW50ZXIgYW5kIG5vDQpyZWZlcmVuY2UuDQoN Cj4+DQo+PiAtICAgIGdjY19hc3NlcnQgKG0uY2FsbF9tczJzeXN2X2V4dHJh X3JlZ3MgPD0gTUFYX0VYVFJBX1JFR1MpOw0KPj4gKyAgICBnY2NfYXNzZXJ0 IChtLT5jYWxsX21zMnN5c3ZfZXh0cmFfcmVncyA8PSBNQVhfRVhUUkFfUkVH Uyk7DQo+PiAgICAgIHJldHVybiBtX3JlZ3NbbGFzdF9yZWddLm9mZnNldA0K Pj4gLSAgICAgICAgKyAobS5jYWxsX21zMnN5c3ZfcGFkX291dCA/IDggOiAw KQ0KPj4gLSAgICAgICAgKyBTVFVCX0lOREVYX09GRlNFVDsNCj4+ICsgICAg ICAgKyAobS0+Y2FsbF9tczJzeXN2X3BhZF9vdXQgPyA4IDogMCkNCj4+ICsg ICAgICAgKyBTVFVCX0lOREVYX09GRlNFVDsNCj4+ICAgIH0NCj4+DQo+PiAg ICAvKiBSZXR1cm5zIHRoZSBvZmZzZXQgZm9yIHRoZSBiYXNlIHBvaW50ZXIg dXNlZCBieSB0aGUgc3R1Yi4gKi8NCj4+IEBAIC0yNTMyLDcgKzI1MzQsNyBA QCBjbGFzcyB4bG9ndWVfbGF5b3V0IHsNCj4+ICAgIC8qIExhenktaW5pdGVk IGNhY2hlIG9mIHN5bWJvbCBuYW1lcyBmb3Igc3R1YnMuICAqLw0KPj4gICAg Y2hhcg0KPj4gbV9zdHViX25hbWVzW1hMT0dVRV9TVFVCX0NPVU5UXVtWQVJJ QU5UX0NPVU5UXVtTVFVCX05BTUVfTUFYX0xFTl07DQo+Pg0KPj4gLSAgc3Rh dGljIGNvbnN0IHN0cnVjdCB4bG9ndWVfbGF5b3V0IEdUWSgoKSkNCj4+IHNf aW5zdGFuY2VzW1hMT0dVRV9TRVRfQ09VTlRdOw0KPj4gKyAgc3RhdGljIGNv bnN0IHN0cnVjdCBHVFkoKCkpIHhsb2d1ZV9sYXlvdXQNCj4+IHNfaW5zdGFu Y2VzW1hMT0dVRV9TRVRfQ09VTlRdOw0KPg0KPiBIbW0sIGR1cmluZyBkZXZl bG9wbWVudCBJIG9yaWdpbmFsbHkgaGFkIEMtc3R5bGUgeGxvZ3VlX2xheW91 dCBhcyBhDQo+IHN0cnVjdCBhbmQgbGF0ZXIgZGVjaWRlZCB0byBtYWtlIGl0 IGEgY2xhc3MgYW5kIGFwcGFyZW50bHkgZm9yZ290IHRvDQo+IHJlbW92ZSB0 aGUgInN0cnVjdCIgaGVyZS4gIE5vbmUgdGhlIGxlc3MsIGl0J3MgYmF6YWFy IHRoYXQgdGhlIEdUWSgpDQo+IHdvdWxkIGdvIGluIGJldHdlZW4gdGhlICJz dHJ1Y3QiIGFuZCB0aGUgInhsb2d1ZV9sYXlvdXQuIiAgQXMgSSBzYWlkDQo+ IGJlZm9yZSwgSSBkb24ndCBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIEdU WSB3b3Jrcy4gIENhbiB3ZSBqdXN0IHJlbW92ZQ0KPiB0aGUgInN0cnVjdCIg a2V5d29yZD8NCj4NCj4gQWxzbywgaWYgdGhlIHdheSBJIGhhZCBpdCB3YXMg d3JvbmcsIChhbmQgcmVzdWx0ZWQgaW4gZ2FyYmFnZSBjb2xsZWN0aW9uDQo+ IG5vdCB3b3JraW5nIHJpZ2h0KSB0aGVuIHBlcmhhcHMgaXQgd2FzIHRoZSBj YXVzZSBvZiBhIHByb2JsZW0gSSBoYWQgd2l0aA0KPiBjYWNoaW5nIHN5bWJv bCBydHggb2JqZWN0cy4gIEkgY291bGQgbm90IGdldCB0aGlzIHRvIHdvcmsg YmVjYXVzZSBteQ0KPiBjYWNoZWQgb2JqZWN0cyB3b3VsZCBzb21laG93IGJl Y29tZSBzdGFsZSBhbmQgSSd2ZSBzaW5jZSByZW1vdmVkIHRoYXQNCj4gY29k ZSAoZnJvbSB4bG9ndWVfbGF5b3V0OjpnZXRfc3R1Yl9ydHgpLiAgKGkuZS4s IGRvZXMgR1RZIGVmZmVjdA0KPiBsaWZlc3BhbiBvZiBnbG9iYWxzLCBUVSBz dGF0aWNzIGFuZCBzdGF0aWMgQysrIGRhdGEgbWVtYmVycz8pDQo+DQoNClll cywgSSBoYXZlIG5vdCBub3RpY2VkIHRoZSAic3RydWN0IiwgYW5kIGFncmVl IHRvIHJlbW92ZSBpdC4NCg0KSSBqdXN0IHNhdyBldmVyeSBvdGhlciBwbGFj ZSB3aGVyZSBHVFkgaXMgdXNlZCBpdCBpcyBkaXJlY3RseSBhZnRlcg0KInN0 cnVjdCIgb3IgInN0YXRpYyIsIHNvIG15IGltcHVsc2Ugd2FzIGp1c3QgdG8g Zm9sbG93IHRoYXQgZXhhbXBsZXMuDQoNCkJ1dCBuZWl0aGVyIHZlcnNpb24g YWN0dWFsbHkgbWFrZXMgdGhlIGNsYXNzIEdDLWFibGUuICBBcHBhcmVudGx5 DQp0aGlzIGNsYXNzIGNvbnN0cnVjdCBpcyB0b28gY29tcGxpY2F0ZWQgZm9y IHRoZSBnZW5ndHlwZSBtYWNoaW5lcnkuDQpTbyBJIGFtIGluY2xpbmVkIHRv IHJlbW92ZSB0aGUgR1RZIGtleXdvcmQgY29tcGxldGVseSBhcyBpdCBnaXZl cw0KeW91IG9ubHkgZmFsc2Ugc2VjdXJpdHkgaW4gR0MncyBhYmlsaXR5IHRv IGdhcmJhZ2UgY29sbGVjdCBhbnl0aGluZw0KaW4gdGhpcyBjbGFzcy4NCg0K Pj4gIC8qIENvbnN0cnVjdG9yIGZvciB4bG9ndWVfbGF5b3V0LiAgKi8NCj4+ IEBAIC0yNjM5LDExICsyNjQzLDExIEBAIHhsb2d1ZV9sYXlvdXQ6Onhsb2d1 ZV9sYXlvdXQgKEhPU1RfV0lERV9JTlQNCj4+IHN0YWNrXw0KPj4gICAgOiBt X2hmcCAoaGZwKSAsIG1fbnJlZ3MgKGhmcCA/IDE3IDogMTgpLA0KPj4gICAg ICBtX3N0YWNrX2FsaWduX29mZl9pbiAoc3RhY2tfYWxpZ25fb2ZmX2luKQ0K Pj4gIHsNCj4+ICsgIEhPU1RfV0lERV9JTlQgb2Zmc2V0ID0gc3RhY2tfYWxp Z25fb2ZmX2luOw0KPj4gKyAgdW5zaWduZWQgaSwgajsNCj4+ICsNCj4+ICAg IG1lbXNldCAobV9yZWdzLCAwLCBzaXplb2YgKG1fcmVncykpOw0KPj4gICAg bWVtc2V0IChtX3N0dWJfbmFtZXMsIDAsIHNpemVvZiAobV9zdHViX25hbWVz KSk7DQo+PiAtDQo+PiAtICBIT1NUX1dJREVfSU5UIG9mZnNldCA9IHN0YWNr X2FsaWduX29mZl9pbjsNCj4+IC0gIHVuc2lnbmVkIGksIGo7DQo+PiAgICBm b3IgKGkgPSBqID0gMDsgaSA8IE1BWF9SRUdTOyArK2kpDQo+PiAgICAgIHsN Cj4+ICAgICAgICB1bnNpZ25lZCByZWdubyA9IFJFR19PUkRFUltpXTsNCj4+ IEBAIC0yNjYyLDExICsyNjY2LDEyIEBAIHhsb2d1ZV9sYXlvdXQ6Onhsb2d1 ZV9sYXlvdXQgKEhPU1RfV0lERV9JTlQNCj4+IHN0YWNrXw0KPj4gICAgICAg IG1fcmVnc1tqXS5yZWdubyAgICA9IHJlZ25vOw0KPj4gICAgICAgIG1fcmVn c1tqKytdLm9mZnNldCA9IG9mZnNldCAtIFNUVUJfSU5ERVhfT0ZGU0VUOw0K Pj4gICAgICB9DQo+PiAtICAgIGdjY19hc3NlcnQgKGogPT0gbV9ucmVncyk7 DQo+PiArICBnY2NfYXNzZXJ0IChqID09IG1fbnJlZ3MpOw0KPj4gIH0NCj4N Cj4gQXNpZGUgZnJvbSBteSBmb3JtYXR0aW5nIGVycm9ycywgIHRoaXMgd291 bGQgYWN0dWFsbHkgYmUgaW5jb3JyZWN0IHBlcg0KPiB0aGUgR05VIGNvZGlu ZyBjb252ZW50aW9ucw0KPiAoaHR0cHM6Ly9nY2MuZ251Lm9yZy9jb2Rpbmdj b252ZW50aW9ucy5odG1sI1ZhcmlhYmxlKSwgd2hpY2ggaXMgcHJvYmFibHkN Cj4gYmFzZWQgb2ZmIG9mIEVmZmVjdGl2ZSBDKysgSXRlbSAyNi4gIE9idmlv dXNseSwgd2UncmUgc3RpbGwgZGVhbGluZyB3aXRoDQo+IHBhcnQgb2YgdGhp cyBhcyBjbGFzc2ljYWwgQysrIGFuZCB0aGUgcmVzdCBhcyBpZiBpdCB3ZXJl IEMsIGJ1dCBJJ20NCj4gdHJ5aW5nIHRvIGZvbGxvdyBDKysgbm9ybXMgaW4g QysrIGNsYXNzZXMgYW5kIG1lbWJlciBmdW5jdGlvbnMuDQo+DQoNCldlbGws IHllcywgYnV0IEkgZG91YnQgdGhpcyBjcmVhdGVzIGEgImNvZ25pdGl2ZSBi dXJkZW4gb24gdGhlDQpwcm9ncmFtbWVyIiwgZ2l2ZW4gdGhpcyBpcyBqdXN0 IG9uZSBsaW5lIGFib3ZlLg0KDQo+PiBAQCAtMjY3Niw3ICsyNjgxLDcgQEAg eGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9TVF9XSURFX0lOVCBz dGFja18NCj4+ICAgICAgew0KPj4gICAgICAgIGludCByZXMgPSBzbnByaW50 ZiAobmFtZSwgU1RVQl9OQU1FX01BWF9MRU4sICJfXyVzXyV1IiwNCj4+ICAg ICAgICAgICAgICAgIFNUVUJfQkFTRV9OQU1FU1tzdHViXSwgTUlOX1JFR1Mg KyBuX2V4dHJhX3JlZ3MpOw0KPj4gLSAgICAgIGdjY19jaGVja2luZ19hc3Nl cnQgKHJlcyA8PSAoaW50KVNUVUJfTkFNRV9NQVhfTEVOKTsNCj4+ICsgICAg ICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChyZXMgPCAoaW50KVNUVUJfTkFNRV9N QVhfTEVOKTsNCj4NCj4gR29vZCBjYXRjaCEgVGhhbmsgeW91Lg0KPg0KPj4g QEAgLTEyNjM0LDEwICsxMjU3Myw2IEBAIGl4ODZfaGFyZF9yZWdub19zY3Jh dGNoX29rICh1bnNpZ25lZCBpbnQgcmVnbm8pDQo+PiAgICAgICAgICAgICYm IGRmX3JlZ3NfZXZlcl9saXZlX3AgKHJlZ25vKSkpOw0KPj4gIH0NCj4+DQo+ PiAtLyogUmVnaXN0ZXJzIHdobydzIHNhdmUgJiByZXN0b3JlIHdpbGwgYmUg bWFuYWdlZCBieSBzdHVicyBjYWxsZWQgZnJvbQ0KPj4gLSAgIHByby9lcGls b2d1ZS4gICovDQo+PiAtc3RhdGljIEhBUkRfUkVHX1NFVCBHVFkoKCkpIHN0 dWJfbWFuYWdlZF9yZWdzOw0KPj4gLQ0KPj4gIC8qIFJldHVybiB0cnVlIGlm IHJlZ2lzdGVyIGNsYXNzIENMIHNob3VsZCBiZSBhbiBhZGRpdGlvbmFsIGFs bG9jbm8NCj4+ICAgICBjbGFzcy4gICovDQo+Pg0KPj4gQEAgLTEyNzE4LDEw ICsxMjY1MywxNyBAQCBpeDg2X3NhdmVfcmVnICh1bnNpZ25lZCBpbnQgcmVn bm8sIGJvb2wNCj4+IG1heWJlX2VoX3INCj4+ICAgICAgfQ0KPj4gICAgICB9 DQo+Pg0KPj4gLSAgaWYgKGlnbm9yZV9vdXRsaW5lZCAmJiBjZnVuLT5tYWNo aW5lLT5jYWxsX21zMnN5c3YNCj4+IC0gICAgICAmJiBpbl9oYXJkX3JlZ19z ZXRfcCAoc3R1Yl9tYW5hZ2VkX3JlZ3MsIERJbW9kZSwgcmVnbm8pKQ0KPj4g LSAgICByZXR1cm4gZmFsc2U7DQo+PiArICBpZiAoaWdub3JlX291dGxpbmVk ICYmIGNmdW4tPm1hY2hpbmUtPmNhbGxfbXMyc3lzdikNCj4+ICsgICAgew0K Pj4gKyAgICAgIC8qIFJlZ2lzdGVycyB3aG8ncyBzYXZlICYgcmVzdG9yZSB3 aWxsIGJlIG1hbmFnZWQgYnkgc3R1YnMNCj4+IGNhbGxlZCBmcm9tDQo+PiAr ICAgICBwcm8vZXBpbG9ndWUuICAqLw0KPj4gKyAgICAgIEhBUkRfUkVHX1NF VCBzdHViX21hbmFnZWRfcmVnczsNCj4+ICsgICAgICB4bG9ndWVfbGF5b3V0 Ojpjb21wdXRlX3N0dWJfbWFuYWdlZF9yZWdzIChzdHViX21hbmFnZWRfcmVn cyk7DQo+Pg0KPj4gKyAgICAgIGlmIChpbl9oYXJkX3JlZ19zZXRfcCAoc3R1 Yl9tYW5hZ2VkX3JlZ3MsIERJbW9kZSwgcmVnbm8pKQ0KPj4gKyAgICByZXR1 cm4gZmFsc2U7DQo+PiArICAgIH0NCj4+ICsNCj4+ICAgIGlmIChjcnRsLT5k cmFwX3JlZw0KPj4gICAgICAgICYmIHJlZ25vID09IFJFR05PIChjcnRsLT5k cmFwX3JlZykNCj4+ICAgICAgICAmJiAhY2Z1bi0+bWFjaGluZS0+bm9fZHJh cF9zYXZlX3Jlc3RvcmUpDQo+DQo+IFRoaXMgbWFrZXMgbm8gc2Vuc2UuICBU aGUgZW50aXJlIHB1cnBvc2Ugb2Ygc3R1Yl9tYW5hZ2VkX3JlZ3MgaXMgdG8N Cj4gY2FjaGUgdGhlIHJlc3VsdCBvZiB4bG9ndWVfbGF5b3V0Ojpjb21wdXRl X3N0dWJfbWFuYWdlZF9yZWdzKCkgYW5kIHRoaXMNCj4gd291bGQgdW5uZWNl c3NhcmlseSByZXBlYXQgdGhhdCBjYWxjdWxhdGlvbiBmb3IgZWFjaCB0aW1l DQo+IGl4ODZfc2F2ZV9yZWcoKSBpcyBjYWxsZWQuICBTaW5jZQ0KPiB4bG9n dWVfbGF5b3V0Ojpjb21wdXRlX3N0dWJfbWFuYWdlZF9yZWdzKCkgY2FsbHMg aXg4Nl9zYXZlX3JlZyBtYW55DQo+IHRpbWVzLCB0aGlzIG1ha2VzIGl0IGV2 ZW4gd29yc2UuV2hpY2ggcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZA0KPiBv dXQtb2YtbGluZSBhbmQgaW5saW5lIE1VU1QgYmUga25vd24gYXQgdGhlIHRp bWUgdGhlIHN0YWNrIGxheW91dCBpcw0KPiBkZXRlcm1pbmVkLiAgU28gc3R1 Yl9tYW5hZ2VkX3JlZ3NzaG91bGQgZWl0aGVyIGJlIGxlZnQgYSBUVSBzdGF0 aWMgb3INCj4ganVzdCBtb3ZlZCB0byBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlv bi4NCj4NCj4gQXMgYW4gYXNpZGUsIEkndmUgbm90aWNlZCB0aGF0IHhsb2d1 ZV9sYXlvdXQ6OmNvbXB1dGVfc3R1Yl9tYW5hZ2VkX3JlZ3MNCj4gaXMgY2Fs bGluZyBpeDg2X3NhdmVfcmVnICh3aGljaCBpc24ndCB0cml2aWFsKSBtb3Jl IG9mdGVuIHRoYW4gaXQgcmVhbGx5DQo+IGhhcyB0bywgc28gSSd2ZSByZWZh Y3RvcmVkIGl0Lg0KPg0KDQooKEFjdHVhbGx5IGl4ODZfc2F2ZV9yZWcgaXMg bm90IGFuIGV4cGVuc2l2ZSBmdW5jdGlvbi4NCkl0IHJlbGllcyBlbnRpcmVs eSBvbiBjYWNoZWQgaW5mb3JtYXRpb24uKSkNCg0KQXMgSSB0b2xkIHlvdSwg aXQgaXMgbm90IGdvb2QgdG8gcmVseSBvbiB0aGUgcGFzcy1tYW5hZ2VyIHRv IHJ1biBhbGwNCnBhc3NlcyBmb3Igb25lIGZ1bmN0aW9uIGluIGEgcm93IGFu ZCBtb3Jlb3ZlciBjZnVuIGlzIGFjdHVhbGx5IGENCnN0YWNrIG9mIGZ1bmN0 aW9ucywgc2VlIHB1c2hfY2Z1biAoKS4gIFNvIGEgc3RhdGljIHZhbHVlIHdp bGwgbm90DQpyZWZsZWN0IHRoZSBzYW1lIHZhbHVlIGFzIGNmdW4tPm1hY2hp bmUgZG9lcy4NCg0KSSB3b3VsZCBsaWtlIHRvIG1vdmUgdGhhdCBkYXRhIHRv IGkzODYuaCBidXQgSSB0aGluaw0Kd2Ugc2hvdWxkIG5vdCBhZGQgbmV3IGRl cGVuZGVuY2llcyB0byBpMzg2LmggYmVjYXVzZSBpdA0KaXMgdXNlZCBldmVy eXdoZXJlLiAgVGhlIHByb2JsZW0gaXMgSEFSRF9SRUdfU0VUIG5vdCBiZWlu Zw0KdXNlZCBiZWZvcmUgaW4gYW55IHRhcmdldCBoZWFkZXIgZmlsZSwgYW5k IEkgZG9uJ3Qgd2FudCB0byBiZQ0KdGhlIGZpcnN0IG9uZS4NCg0KU28geWVz IHRoaXMgaXMgbm90IGEgcGVyZmVjdCBzb2x1dGlvbiB5ZXQsIGJ1dCBJIHN0 aWxsIGRvdWJ0IHRoYXQNCmEgc3RhdGljIHZhbHVlIGlzIGEgYmV0dGVyIHNv bHV0aW9uLg0KDQo+Pg0KPj4gLS8qIERpc2FibGVzIG91dC1vZi1saW5lZCBt c2FiaSB0byBzeXN2IHByby9lcGlsb2d1ZXMgYW5kIGVtaXRzIGENCj4+IHdh cm5pbmcgaWYNCj4+IC0gICB3YXJuX29uY2UgaXMgbnVsbCwgb3IgKndhcm5f b25jZSBpcyB6ZXJvLiAgKi8NCj4+IC1zdGF0aWMgdm9pZCBkaXNhYmxlX2Nh bGxfbXMyc3lzdl94bG9ndWVzIChjb25zdCBjaGFyICpmZWF0dXJlKQ0KPj4g Ky8qIEVtaXRzIGEgd2FybmluZyBmb3IgdW5zdXBwb3J0ZWQgbXNhYmkgdG8g c3lzdiBwcm8vZXBpbG9ndWVzLiAgKi8NCj4+ICtzdGF0aWMgdm9pZCB3YXJu X29uY2VfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKGNvbnN0IGNoYXIgKmZlYXR1 cmUpDQo+PiAgew0KPj4gLSAgY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJzeXN2 ID0gZmFsc2U7DQo+PiAtICB3YXJuaW5nIChPUFRfbWNhbGxfbXMyc3lzdl94 bG9ndWVzLCAibm90IGN1cnJlbnRseSBjb21wYXRpYmxlIHdpdGgNCj4+ICVz LiIsDQo+PiAtICAgICAgIGZlYXR1cmUpOw0KPj4gKyAgc3RhdGljIGJvb2wg d2FybmVkX29uY2UgPSBmYWxzZTsNCj4+ICsgIGlmICghd2FybmVkX29uY2Up DQo+PiArICAgIHsNCj4+ICsgICAgICB3YXJuaW5nICgwLCAiLW1jYWxsLW1z MnN5c3YteGxvZ3VlcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoICVzIiwNCj4+ ICsgICAgICAgICAgIGZlYXR1cmUpOw0KPj4gKyAgICAgIHdhcm5lZF9vbmNl ID0gdHJ1ZTsNCj4+ICsgICAgfQ0KPj4gIH0NCj4+DQo+DQo+IFdlIHByb2Jh Ymx5IGRvbid0IHdhbnQgdG8gc3VwcHJlc3MgYWxsIHdhcm5pbmdzIGFjcm9z cyBjYXNlcy4gIEkndmUgZ290DQo+IGEgbmV3IHZlcnNpb24gb2YgdGhpcyB0 aGF0IHRha2VzIGEgbWFzayBmb3IgdGhlICJ3YXJuZWQiOg0KPg0KPiBzdGF0 aWMgdm9pZCBkaXNhYmxlX2NhbGxfbXMyc3lzdl94bG9ndWVzIChjb25zdCBj aGFyICpmZWF0dXJlLCBpbnQNCj4gd2FybmVkX21hc2spDQo+IHsNCj4gICBz dGF0aWMgaW50IHdhcm5lZCA9IDA7DQo+ICAgY2Z1bi0+bWFjaGluZS0+Y2Fs bF9tczJzeXN2ID0gZmFsc2U7DQo+DQo+ICAgaWYgKCEod2FybmVkICYgd2Fy bmVkX21hc2spKQ0KPiAgICAgew0KPiAgICAgICB3YXJuaW5nIChPUFRfbWNh bGxfbXMyc3lzdl94bG9ndWVzLCAibm90IGN1cnJlbnRseSBjb21wYXRpYmxl IHdpdGgNCj4gJXMuIiwNCj4gICAgICAgICAgICBmZWF0dXJlKTsNCj4gICAg ICAgd2FybmVkIHw9IHdhcm5lZF9tYXNrOw0KPiAgICAgfQ0KPiB9DQo+DQo+ DQoNClRoYXQgd291bGQgYmUgYSBjYW5kaWRhdGUgZm9yIGEgZm9sbG93LXVw IHBhdGNoLg0KDQpOb3RlLCB0aGF0IHRoZSBmaXJzdCBwYXJhbWV0ZXIgb3Vn aHQgdG8gYmUgYSB3YXJuaW5nIG9wdGlvbiBuYW1lLCBpZiBpdA0KaXMganVz dCByZWZlcmluZyB0byBhIGNvZGUgZ2VuZXJhdGlvbiBvcHRpb24gdGhhdCBp cyBJTUhPIG1pcy1sZWFkaW5nDQp0byB0aGUgdXNlci4NCg0KVGhhbmtzLA0K QmVybmQuDQoNCj4+ICAvKiBXaGVuIHVzaW5nIC1mc3BsaXQtc3RhY2ssIHRo ZSBhbGxvY2F0aW9uIHJvdXRpbmVzIHNldCBhIGZpZWxkIGluDQo+PiBAQCAt MTI4MzYsOCArMTI3ODAsOSBAQCBpeDg2X2J1aWx0aW5fc2V0am1wX2ZyYW1l X3ZhbHVlICh2b2lkKQ0KPj4gIC8qIEZpbGwgc3RydWN0dXJlIGl4ODZfZnJh bWUgYWJvdXQgZnJhbWUgb2YgY3VycmVudGx5IGNvbXB1dGVkDQo+PiBmdW5j dGlvbi4gICovDQo+Pg0KPj4gIHN0YXRpYyB2b2lkDQo+PiAtaXg4Nl9jb21w dXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lKQ0K Pj4gK2l4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKHZvaWQpDQo+PiAgew0K Pj4gKyAgc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lID0gJmNmdW4tPm1hY2hp bmUtPmZyYW1lOw0KPj4gICAgc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24gKm0g PSBjZnVuLT5tYWNoaW5lOw0KPj4gICAgdW5zaWduZWQgSE9TVF9XSURFX0lO VCBzdGFja19hbGlnbm1lbnRfbmVlZGVkOw0KPj4gICAgSE9TVF9XSURFX0lO VCBvZmZzZXQ7DQo+PiBAQCAtMTI4NDUsNDYgKzEyNzkwLDQxIEBAIHN0YXRp YyB2b2lkDQo+PiAgICBIT1NUX1dJREVfSU5UIHNpemUgPSBnZXRfZnJhbWVf c2l6ZSAoKTsNCj4+ICAgIEhPU1RfV0lERV9JTlQgdG9fYWxsb2NhdGU7DQo+ Pg0KPj4gLSAgQ0xFQVJfSEFSRF9SRUdfU0VUIChzdHViX21hbmFnZWRfcmVn cyk7DQo+PiAtDQo+PiAgICAvKiBtLT5jYWxsX21zMnN5c3YgaXMgaW5pdGlh bGx5IGVuYWJsZWQgaW4gaXg4Nl9leHBhbmRfY2FsbCBmb3IgYWxsDQo+PiA2 NC1iaXQNCj4+ICAgICAqIG1zX2FiaSBmdW5jdGlvbnMgdGhhdCBjYWxsIGEg c3lzdiBmdW5jdGlvbi4gIFdlIG5vdyBuZWVkIHRvDQo+PiBwcnVuZSBhd2F5 DQo+PiAgICAgKiBjYXNlcyB3aGVyZSBpdCBzaG91bGQgYmUgZGlzYWJsZWQu ICAqLw0KPj4gICAgaWYgKFRBUkdFVF82NEJJVCAmJiBtLT5jYWxsX21zMnN5 c3YpDQo+PiAtICB7DQo+PiAtICAgIGdjY19hc3NlcnQgKFRBUkdFVF82NEJJ VF9NU19BQkkpOw0KPj4gLSAgICBnY2NfYXNzZXJ0IChUQVJHRVRfQ0FMTF9N UzJTWVNWX1hMT0dVRVMpOw0KPj4gLSAgICBnY2NfYXNzZXJ0ICghVEFSR0VU X1NFSCk7DQo+PiArICAgIHsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUQVJH RVRfNjRCSVRfTVNfQUJJKTsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUQVJH RVRfQ0FMTF9NUzJTWVNWX1hMT0dVRVMpOw0KPj4gKyAgICAgIGdjY19hc3Nl cnQgKCFUQVJHRVRfU0VIKTsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUQVJH RVRfU1NFKTsNCj4+ICsgICAgICBnY2NfYXNzZXJ0ICghaXg4Nl91c2luZ19y ZWRfem9uZSAoKSk7DQo+Pg0KPj4gLSAgICBpZiAoIVRBUkdFVF9TU0UpDQo+ PiAtICAgICAgbS0+Y2FsbF9tczJzeXN2ID0gZmFsc2U7DQo+PiArICAgICAg aWYgKGNydGwtPmNhbGxzX2VoX3JldHVybikNCj4+ICsgICAgew0KPj4gKyAg ICAgIGdjY19hc3NlcnQgKCFyZWxvYWRfY29tcGxldGVkKTsNCj4+ICsgICAg ICBtLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsNCj4+ICsgICAgICB3YXJuX29u Y2VfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKCJfX2J1aWx0aW5fZWhfcmV0dXJu Iik7DQo+PiArICAgIH0NCj4+DQo+PiAtICAgIC8qIERvbid0IGJyZWFrIGhv dC1wYXRjaGVkIGZ1bmN0aW9ucy4gICovDQo+PiAtICAgIGVsc2UgaWYgKGl4 ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlv bl9kZWNsKSkNCj4+IC0gICAgICBtLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsN Cj4+ICsgICAgICBlbHNlIGlmIChpeDg2X3N0YXRpY19jaGFpbl9vbl9zdGFj aykNCj4+ICsgICAgew0KPj4gKyAgICAgIGdjY19hc3NlcnQgKCFyZWxvYWRf Y29tcGxldGVkKTsNCj4+ICsgICAgICBtLT5jYWxsX21zMnN5c3YgPSBmYWxz ZTsNCj4+ICsgICAgICB3YXJuX29uY2VfY2FsbF9tczJzeXN2X3hsb2d1ZXMg KCJzdGF0aWMgY2FsbCBjaGFpbnMiKTsNCj4+ICsgICAgfQ0KPj4NCj4+IC0g ICAgLyogVE9ETzogQ2FzZXMgbm90IHlldCBleGFtaW5lZC4gICovDQo+PiAt ICAgIGVsc2UgaWYgKGNydGwtPmNhbGxzX2VoX3JldHVybikNCj4+IC0gICAg ICBkaXNhYmxlX2NhbGxfbXMyc3lzdl94bG9ndWVzICgiX19idWlsdGluX2Vo X3JldHVybiIpOw0KPj4gKyAgICAgIC8qIEZpbmFsbHksIGNvbXB1dGUgd2hp Y2ggcmVnaXN0ZXJzIHRoZSBzdHViIHdpbGwgbWFuYWdlLiAgKi8NCj4+ICsg ICAgICBlbHNlDQo+PiArICAgICAgICB7DQo+PiArICAgICAgSEFSRF9SRUdf U0VUIHN0dWJfbWFuYWdlZF9yZWdzOw0KPj4gKyAgICAgIHVuc2lnbmVkIGNv dW50ID0geGxvZ3VlX2xheW91dA0KPj4gKyAgICAgICAgICAgICAgIDo6Y29t cHV0ZV9zdHViX21hbmFnZWRfcmVncyAoc3R1Yl9tYW5hZ2VkX3JlZ3MpOw0K Pj4gKyAgICAgIG0tPmNhbGxfbXMyc3lzdl9leHRyYV9yZWdzID0gY291bnQg LSB4bG9ndWVfbGF5b3V0OjpNSU5fUkVHUzsNCj4+ICsgICAgfQ0KPj4gKyAg ICB9DQo+Pg0KPj4gLSAgICBlbHNlIGlmIChpeDg2X3N0YXRpY19jaGFpbl9v bl9zdGFjaykNCj4+IC0gICAgICBkaXNhYmxlX2NhbGxfbXMyc3lzdl94bG9n dWVzICgic3RhdGljIGNhbGwgY2hhaW5zIik7DQo+PiAtDQo+PiAtICAgIGVs c2UgaWYgKGl4ODZfdXNpbmdfcmVkX3pvbmUgKCkpDQo+PiAtICAgICAgZGlz YWJsZV9jYWxsX21zMnN5c3ZfeGxvZ3VlcyAoInJlZCB6b25lcyIpOw0KPj4g LQ0KPj4gLSAgICBlbHNlIGlmIChmbGFnX3NwbGl0X3N0YWNrKQ0KPj4gLSAg ICAgIGRpc2FibGVfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKCJzcGxpdCBzdGFj ayIpOw0KPj4gLQ0KPj4gLSAgICAvKiBGaW5hbGx5LCBjb21wdXRlIHdoaWNo IHJlZ2lzdGVycyB0aGUgc3R1YiB3aWxsIG1hbmFnZS4gKi8NCj4+IC0gICAg ZWxzZQ0KPj4gLSAgICAgIHsNCj4+IC0gICAgdW5zaWduZWQgY291bnQgPSB4 bG9ndWVfbGF5b3V0DQo+PiAtICAgICAgICAgICAgIDo6Y29tcHV0ZV9zdHVi X21hbmFnZWRfcmVncyAoc3R1Yl9tYW5hZ2VkX3JlZ3MpOw0KPj4gLSAgICBt LT5jYWxsX21zMnN5c3ZfZXh0cmFfcmVncyA9IGNvdW50IC0geGxvZ3VlX2xh eW91dDo6TUlOX1JFR1M7DQo+PiAtICAgICAgfQ0KPj4gLSAgfQ0KPj4gLQ0K Pg0KPj4gQEAgLTI5MzIwLDcgKzI5MjY1LDI0IEBAIGl4ODZfZXhwYW5kX2Nh bGwgKHJ0eCByZXR2YWwsIHJ0eCBmbmFkZHIsIHJ0eA0KPj4gY2FsbA0KPj4N Cj4+ICAgICAgICAvKiBTZXQgaGVyZSwgYnV0IGl0IG1heSBnZXQgY2xlYXJl ZCBsYXRlci4gICovDQo+PiAgICAgICAgaWYgKFRBUkdFVF9DQUxMX01TMlNZ U1ZfWExPR1VFUykNCj4+IC0gICAgY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJz eXN2ID0gdHJ1ZTsNCj4+ICsgICAgew0KPj4gKyAgICAgIGlmICghVEFSR0VU X1NTRSkNCj4+ICsgICAgICAgIDsNCj4+ICsNCj4+ICsgICAgICAvKiBEb24n dCBicmVhayBob3QtcGF0Y2hlZCBmdW5jdGlvbnMuICAqLw0KPj4gKyAgICAg IGVsc2UgaWYgKGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3Vy cmVudF9mdW5jdGlvbl9kZWNsKSkNCj4+ICsgICAgICAgIDsNCj4+ICsNCj4+ ICsgICAgICAvKiBUT0RPOiBDYXNlcyBub3QgeWV0IGV4YW1pbmVkLiAgKi8N Cj4+ICsgICAgICBlbHNlIGlmIChmbGFnX3NwbGl0X3N0YWNrKQ0KPj4gKyAg ICAgICAgd2Fybl9vbmNlX2NhbGxfbXMyc3lzdl94bG9ndWVzICgiLWZzcGxp dC1zdGFjayIpOw0KPj4gKw0KPj4gKyAgICAgIGVsc2UNCj4+ICsgICAgICAg IHsNCj4+ICsgICAgICAgICAgZ2NjX2Fzc2VydCAoIXJlbG9hZF9jb21wbGV0 ZWQpOw0KPj4gKyAgICAgICAgICBjZnVuLT5tYWNoaW5lLT5jYWxsX21zMnN5 c3YgPSB0cnVlOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICB9DQo+PiAgICAg IH0NCj4+DQo+DQo+IE90aGVyIHRoYW4gdGhlIGxvY2FsIGNvbXB1dGVfc3R1 Yl9tYW5hZ2VkX3JlZ3MgKHdoaWNoIGlzIGEgcHJvYmxlbSksDQo+IHRoaXMg bG9va3MgbGlrZSBhIHZlcnkgZ29vZCBpbXByb3ZlbWVudC4gIEl0IGNsYXJp ZmllcyBjb25kaXRpb25zIHRoYXQNCj4gd2lsbCBub3QgY2hhbmdlIG92ZXIg dGhlIGNvdXJzZSBvZiBjb21waWxpbmcgYSBmdW5jdGlvbiAoc3BsaXQgc3Rh Y2ssDQo+IG1zX2hvb2tfcHJvbG9ndWUsIGV0Yy4pIGFuZCB0aG9zZSB0aGF0 IGNhbi4NCj4NCj4gQWZ0ZXIgc29tZSB0aG91Z2h0LCBJJ3ZlIGRlY2lkZWQg dGhhdCBpdCdzIG5vdCBiZXR0ZXIgdG8gdXNlIGEgc29ycnkoKQ0KPiB0byBm aWx0ZXIgb3V0IC1mc3BsaXQtc3RhY2sgY29tYmluZWQgd2l0aCAtbWFyY2gt bXMyc3lzdi14bG9ndWVzIGJlY2F1c2UNCj4gaXQgd291bGQgYnJlYWsgc3Vw cG9ydCBmb3IgYSBUVSB0aGF0IHVzZXMgYm90aCB2aWEgZnVuY3Rpb24gYXR0 cmlidXRlcy4NCj4gRXhhbXBsZToNCj4NCj4gdm9pZCBfX2F0dHJpYnV0ZV9f KChtc19hYmkpKQ0KPiBhICh2b2lkKQ0KPiB7DQo+ICAgY2FsbF9hX3N5c3Zf Zm4gKCk7DQo+ICAgLyogc3R1ZmYgKi8NCj4gfQ0KPg0KPiB2b2lkIF9fYXR0 cmlidXRlX18oKG9wdGltaXplKCItZnNwbGl0LXN0YWNrIikpKQ0KPiBiKHZv aWQpDQo+IHsNCj4gICAvKiBzdHVmZiAqLw0KPiB9DQo+DQo+DQo+IFNvIHlv dSdyZSBmaXhlcyBmb3IgdGhpcyBhcmUgYmV0dGVyLg0KPg0KPiBUaGFua3Ms DQo+IERhbmllbA0KPg0KPg0KPg0K