From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.1.72; helo=eur01-ve1-obe.outbound.protection.outlook.com; envelope-from=sami.mujawar@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0072.outbound.protection.outlook.com [104.47.1.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5BA3721E080E8 for ; Thu, 19 Apr 2018 05:57:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=k2GPIOB92Hvf9Zr3yhzRTR+Hb91m34pG0cJsRrGTHG4=; b=GDdGsPUj7ytDuBf/tHrHSS60z3zLbaYhzIEE2oqMgxH8QjvdqX708st1QkikLGXdF6rFgxCpsqVK5Zbfd2bOEQWJ28oi8PZy7Ptvxj5Jo12ZLyFkt9NK167QqAlHXxpR6Ct7UNlc4z8ky4GVhOY3iLAB93s/b5uEdWKUvZgJO0I= Received: from AM4PR0802MB2372.eurprd08.prod.outlook.com (10.172.218.144) by AM4PR0802MB2322.eurprd08.prod.outlook.com (10.172.218.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.696.12; Thu, 19 Apr 2018 12:57:32 +0000 Received: from AM4PR0802MB2372.eurprd08.prod.outlook.com ([fe80::84b5:702f:6d7e:b775]) by AM4PR0802MB2372.eurprd08.prod.outlook.com ([fe80::84b5:702f:6d7e:b775%7]) with mapi id 15.20.0696.011; Thu, 19 Apr 2018 12:57:32 +0000 From: Sami Mujawar To: "Ni, Ruiyu" , "jaben.carsey@intel.com" CC: "leif.lindholm@linaro.org" , "Stephanie Hughes-Fitt" , "jiewen.yao@intel.com" , "edk2-devel@lists.01.org" , Ard Biesheuvel , "edk2-devel@lists.01.org" , Leif Lindholm , "Yao, Jiewen" , "bugzilla-daemon@bugzilla.tianocore.org" , nd Thread-Topic: [edk2] [PATCH v5] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTtvo4TGAq9DsloUubW+/i0xc63qPRrGYwgADRxoCANc4ckA== Date: Thu, 19 Apr 2018 12:57:31 +0000 Message-ID: References: <20180308162602.28152-1-sami.mujawar@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Sami.Mujawar@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR0802MB2322; 7:TCn5UyvsUcPfapQZppJ69stdx/kpq7GctV4hiAZUkT4JTCovhPnt75xahb7UUI5yVXKc4Zrc0W95FlwfiUPTSCqlcYtpQS+ZE0in9jSm6GoFn/QsCCR3Crdcn/GqXoDUyZPAv6G0xWGO2EYEP0/P8MOQ1936f0Nyxy5/NjW8hG3Pq+9P1VypZWJmq2rWzGw/LBAgl4XReDsY9WevKSZKwrBp2RgJeyCBsFRMYmupfC6rZSnIfM2Wv3fkI76zdIF8 x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM4PR0802MB2322; x-ms-traffictypediagnostic: AM4PR0802MB2322: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(180628864354917)(166708455590820)(131327999870524)(162533806227266)(265313219721884)(211171220733660)(228905959029699)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123564045)(201703131423095)(201703011903075)(201702281528075)(20161123555045)(201703061421075)(20161123558120)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:AM4PR0802MB2322; BCL:0; PCL:0; RULEID:; SRVR:AM4PR0802MB2322; x-forefront-prvs: 0647963F84 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(7966004)(346002)(366004)(396003)(39380400002)(39860400002)(376002)(13464003)(3660700001)(6306002)(6246003)(9686003)(16200700003)(53946003)(53936002)(3280700002)(66066001)(2900100001)(33656002)(966005)(229853002)(53366004)(53376002)(2906002)(5250100002)(2501003)(86362001)(575784001)(14454004)(11346002)(476003)(446003)(55016002)(45080400002)(5660300001)(8676002)(81166006)(76176011)(7696005)(72206003)(15188155005)(110136005)(59450400001)(53546011)(102836004)(99286004)(508600001)(6116002)(316002)(54906003)(6506007)(74316002)(3846002)(6436002)(8936002)(25786009)(16799955002)(305945005)(7736002)(26005)(4326008)(186003)(959014)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR0802MB2322; H:AM4PR0802MB2372.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; MLV:ovrnspm; PTR:InfoNoRecords; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 5je0n2oQvFdQMce2TXDi0G8znGTm1rD5P0tO+CWoCV6+TvsHfkeGy/RWiUAH5Bb6en3zB5XxHqMwdZP+/ybBCywgOojtw968DVGs7+aXuKlqZ2/nzFMbGkv2qrpEYqtOQBUmvKRKfQ+dJQJsdtdvcID0UWonI03+ROpyqGu3hgPTpuQPUjfZIAStFCSIO3GE spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: e352066e-9a25-4757-3419-08d5a5f51d58 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: e352066e-9a25-4757-3419-08d5a5f51d58 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2018 12:57:31.7881 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0802MB2322 Subject: Re: [PATCH v5] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2018 12:57:40 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgSmFiZW4sIFJheSwNCg0KSXMgdGhlcmUgYW55dGhpbmcgZWxzZSBuZWVkZWQgYmVmb3JlIHRo aXMgcGF0Y2ggY2FuIGJlIG1lcmdlZCBpbiBTaGVsbFBrZz8NCg0KVGhlIHBhdGNoIGlzIGN1cnJl bnRseToNClNpZ25lZC1vZmYtYnk6IFNhbWkgTXVqYXdhciA8c2FtaS5tdWphd2FyQGFybS5jb20+ DQpTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lkQGFybS5jb20+DQpSZXZpZXdl ZC1ieTogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KUmV2aWV3ZWQtYnk6 IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb20+DQpUZXN0ZWQtYnk6IEFyZCBCaWVzaGV1dmVs IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KDQpSZWdhcmRzLA0KDQpTYW1pIE11amF3YXIN Cg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE5pLCBSdWl5dSA8cnVpeXUubmlA SW50ZWwuY29tPiANClNlbnQ6IDE2IE1hcmNoIDIwMTggMDc6MTIgQU0NClRvOiBTYW1pIE11amF3 YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgamFiZW4uY2Fyc2V5QGludGVsLmNvbQ0KQ2M6IGxl aWYubGluZGhvbG1AbGluYXJvLm9yZzsgU3RlcGhhbmllIEh1Z2hlcy1GaXR0IDxTdGVwaGFuaWUu SHVnaGVzLUZpdHRAYXJtLmNvbT47IGppZXdlbi55YW9AaW50ZWwuY29tOyBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZzsgbmQgPG5kQGFybS5jb20+DQpTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCB2 NV0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQSSB0YWJsZXMNCg0KT24g My8xNi8yMDE4IDI6NDggQU0sIFNhbWkgTXVqYXdhciB3cm90ZToNCj4gSGksDQo+IA0KPiBQbGVh c2UgbGV0IG1lIGtub3cgaWYgdGhlcmUgaXMgYW55dGhpbmcgbW9yZSB5b3UgbmVlZCBmcm9tIG1l IGJlZm9yZSB5b3UgY2FuIGFjY2VwdCB0aGlzIHBhdGNoLg0KPiANCj4gUmVnYXJkcywNCj4gDQo+ IFNhbWkgTXVqYXdhcg0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog ZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJl aGFsZiBPZiBTYW1pIE11amF3YXINCj4gU2VudDogMDggTWFyY2ggMjAxOCAwNDoyNiBQTQ0KPiBU bzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IHJ1aXl1Lm5pQGludGVsLmNvbTsgbGVp Zi5saW5kaG9sbUBsaW5hcm8ub3JnOyBTdGVwaGFuaWUgSHVnaGVzLUZpdHQgPFN0ZXBoYW5pZS5I dWdoZXMtRml0dEBhcm0uY29tPjsgamlld2VuLnlhb0BpbnRlbC5jb207IGphYmVuLmNhcnNleUBp bnRlbC5jb207IG5kIDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBbZWRrMl0gW1BBVENIIHY1XSBT aGVsbFBrZzogQWRkIGFjcGl2aWV3IHRvb2wgdG8gZHVtcCBBQ1BJIHRhYmxlcw0KPiANCj4gW1Ro aXMgc2VuZGVyIGZhaWxlZCBvdXIgZnJhdWQgZGV0ZWN0aW9uIGNoZWNrcyBhbmQgbWF5IG5vdCBi ZSB3aG8gdGhleSBhcHBlYXIgdG8gYmUuIExlYXJuIGFib3V0IHNwb29maW5nIGF0IGh0dHA6Ly9h a2EubXMvTGVhcm5BYm91dFNwb29maW5nXQ0KPiANCj4gVGhpcyBwcm9ncmFtIGlzIHByb3ZpZGVk IHRvIGFsbG93IGV4YW1pbmF0aW9uIG9mIEFDUEkgdGFibGUgY29udGVudHMNCj4gZnJvbSB0aGUg VUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxs eSBhdA0KPiB0aGF0IHN0YWdlIHdoZXJlIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBP UyB0byBib290Lg0KPiBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5j YXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRnZQ0KPiBvZiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHRh YmxlIHR5cGVzLg0KPiANCj4gRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZGlzcGxheSB0aGUgY29u dGVudCBvZiBhbGwgdGFibGVzIGluc3RhbGxlZC4NCj4gJ0tub3duJyB0YWJsZSB0eXBlcyB3aWxs IGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkIHdpdGggZGVzY3JpcHRpb25zIGFuZA0KPiBmaWVsZCB2 YWx1ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3JlZSBvZiBjb25zaXN0ZW5jeSBjaGVja2lu ZyBpcw0KPiBkb25lIGFuZCBlcnJvcnMgbWF5IGJlIHJlcG9ydGVkIGluIHRoZSBvdXRwdXQuDQo+ IE90aGVyIHRhYmxlIHR5cGVzIHdpbGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5IG9mIEhleGFk ZWNpbWFsIGJ5dGVzLg0KPiANCj4gVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcsIHRoZSAtcyBhbmQg LWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhDQo+IGJpbmFyeSBmaWxlIGltYWdl IG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVsc2V3aGVyZSBmb3INCj4gaW52ZXN0aWdh dGlvbiB1c2luZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBU aGlzIGlzDQo+IGVzcGVjaWFsbHkgcmVsZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtlIERT RFQgYW5kIFNTRFQuDQo+IA0KPiBUaGUgaW5zcGlyYXRpb24gZm9yIHRoaXMgaXMgdGhlIGV4aXN0 aW5nIHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQo+IGNvbW1hbmQuDQo+IA0KPiBNYW55IHRhYmxl cyBhcmUgbm90IGV4cGxpY2l0bHkgaGFuZGxlZCwgaW4gcGFydCBiZWNhdXNlIG5vIGV4YW1wbGVz IGFyZQ0KPiBhdmFpbGFibGUgZm9yIG91ciB0ZXN0aW5nLg0KPiANCj4gVGhlIHByb2dyYW0gaXMg ZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1pbmltYWwNCj4gZWZm b3J0LCBhbmQgY29udHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gDQo+IENvbnRyaWJ1dGVkLXVu ZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2lnbmVkLW9mZi1i eTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTog RXZhbiBMbG95ZCA8ZXZhbi5sbG95ZEBhcm0uY29tPg0KPiBSZXZpZXdlZC1ieTogSmFiZW4gQ2Fy c2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPiAtLS0NCj4gDQo+IFRoZSB1cGRhdGVkIGNo YW5nZXMgY2FuIGJlIHZpZXdlZCBhdDoNCj4gICBodHRwczovL2dpdGh1Yi5jb20vc2FtaW11amF3 YXIvZWRrMi90cmVlLzE4OF9hY3Bpdmlld192NQ0KPiANCj4gTm90ZXM6DQo+ICAgICAgdjU6DQo+ ICAgICAgLSBCdXQgZm9yIG5vdywgbGV0J3MgcmVtb3ZlIGFueSBwdWJsaWMgbGlicmFyeSBBUElz Lg0KPiAgICAgICAgQWRkaW5nIHB1YmxpYyBBUElzIGlzIHZlcnkgZWFzeS4gQnV0IHJlbW92aW5n IHRoZW0gaXMNCj4gICAgICAgIGFsbW9zdCBpbXBvc3NpYmxlLg0KPiAgICAgICAgSWYgd2UgdGhp bmsgaXQncyB2YWx1YWJsZSB0byBhZGQgdGhlbSwgd2UgY2FuIGFkZCB0aGVtDQo+ICAgICAgICBp biBmdXR1cmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtSQVldDQo+ICAgICAgLSBSZW1vdmVkIHB1YmxpYyBsaWJyYXJ5IEFQSSdzLiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NBTUldDQo+IA0KPiAgICAgIHY0Og0KPiAg ICAgIC0gRmlyc3RseSwgcHVibGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJQVBJIiBk ZWNvcmF0b3IuICAgICBbUkFZXQ0KPiAgICAgIC0gUmVzdWJtaXR0aW5nIHVwZGF0ZWQgcGF0Y2gg d2l0aCAiRUZJQVBJIiBkZWNvcmF0b3IuICAgICAgICAgICAgIFtTQU1JXQ0KPiANCj4gICAgICAt IFNlY29uZGx5LCBJIGFtIHdvbmRlcmluZyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5vdCBleHBvc2Ug YW55DQo+ICAgICAgICBsaWJyYXJ5IGNsYXNzZXMgZm9yIGhhbmRsaW5nIG9mIG1vcmUgQUNQSSB0 YWJsZXMuDQo+ICAgICAgICBJIGFncmVlIHRvIGltcGxlbWVudCBVZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIgaW4gYSB3YXkgZm9yIGVhc3kNCj4gICAgICAgIGV4dGVuc2lvbiBmb3IgaGFuZGxp bmcgb2YgbW9yZSBBQ1BJIHRhYmxlcywgYnV0IEkgcHJlZmVyIHRvIGtlZXAgdGhlDQo+ICAgICAg ICBpbnRlcmZhY2VzIGludGVybmFsbHkgaW5zaWRlIHRoZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuICAgIFtSQVldDQo+ICAgICAgLSBVcGRhdGVkIGFzIHN1Z2dlc3RlZC4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NBTUldDQo+IA0KPiAgICAgIHYzOg0K PiAgICAgIC0gQ2FuIHRoZSBpbmRpdmlkdWFsICJjaGlsZCIgbGlicmFyaWVzIGJlIHBsYWNlZCBp bnRvDQo+ICAgICAgICBzdWJkaXJlY3RvcmllcyB1bmRlciBVZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIgZGlyZWN0b3J5DQo+ICAgICAgICBmb3IgY2xlYXIgc2VwYXJhdGlvbj8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSkFCRU5dDQo+ICAgICAgLSBQYXRjaCB1 cGRhdGVkIHRvIG1vdmUgaW5kaXZpZHVhbCAiY2hpbGQiIGxpYnJhcmllcyBpbnRvDQo+ICAgICAg ICBzdWJkaXJlY3Rvcmllcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1NBTUldDQo+IA0KPiAgICAgIC0gSW4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliLGMgd2hhdCdzIHRoZSBtb3RpdmF0aW9uIGZvciBhbGwNCj4gICAgICAgIHRoZSB3cmFwcGVy cyBhcm91bmQgcHJpbnQ/IEkgc2VlIHRoYXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4g ICAgICAgIHJlc3RyaWN0aW9ucywgYnV0IHRoZSByZXN0PyAgUHJpbnRHdWlkLCBsb29rcyB0aGUg c2FtZSBhcyB1c2luZw0KPiAgICAgICAgJWcgd2l0aCBQcmludCgpLi4uICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgIC0gVGhlIHByaW50 IHdyYXBwZXJzIGVuYWJsZSBhIGNvbW1vbiBzdHlsZWQgZm9ybWF0dGVkIHByaW50aW5nIGZvcg0K PiAgICAgICAgdGhlIEFDUEkgZmllbGRzLiBUaGUgQUNQSXZpZXcgdGFibGUgcGFyc2luZyBmcmFt ZXdvcmsgdXRpbGl6ZXMgYQ0KPiAgICAgICAgdGFibGUtZHJpdmVuIGFwcHJvYWNoIGZvciBwYXJz aW5nIHRoZSB0YWJsZXMgYW5kIHRoZXNlIGZ1bmN0aW9ucw0KPiAgICAgICAgYXJlIGludm9rZWQg YnkgdGhlIGZyYW1ld29yayBiYXNlZCBvbiB0aGUgZmllbGQgc2l6ZSBhbmQgdHlwZS4NCj4gICAg ICAgIEhvd2V2ZXIgeW91IGFyZSByaWdodCwgaXQgaXMgc3VwZXJmbHVvdXMgaW4gdGhlIGNhc2Ug b2YgUHJpbnRHdWlkDQo+ICAgICAgICAoV2hpY2ggaGFzIG5vdyBiZWVuIHJlbW92ZWQgaW4gdGhl IHVwZGF0ZWQgcGF0Y2gpLiAgICAgICAgICAgICAgW1NBTUldDQo+IA0KPiAgICAgIC0gRG8gd2Ug d2FudCB0byBjaGFuZ2UgdGhlIG1haW4gZW50cnlwb2ludCB0byBhIER5bmFtaWNDb21tYW5kDQo+ ICAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5 ZXMsIGRvIHdlIHdhbnQNCj4gICAgICAgIHRvIGRvIHRoYXQgZmlyc3Qgb3IgYWZ0ZXI/ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtKQUJFTl0NCj4gICAgICAtIFRoZSBFQ1Ig MTc4NCBmb3IgQUNQSXZpZXcgYXBwZWFycyB0byBiZSAnQXBwcm92ZWQgYXMgbmV3IGNvbnRlbnQN Cj4gICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1hbnRpcywNCj4gICAgICAgIHNlZSBo dHRwczovL21hbnRpcy51ZWZpLm9yZy9tYW50aXMvdmlldy5waHA/aWQ9MTc4NC4NCj4gICAgICAg IEFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIEVDUiBjaGFuZ2UgbmVlZHMgdG8gYmUgcHJvcGFnYXRl ZCB0byB0aGUNCj4gICAgICAgIFNoZWxsIHNwZWNpZmljYXRpb24gYW5kIGlzIHBlbmRpbmcuIElu IGxpZ2h0IG9mIHRoZSBhYm92ZSwgSSB0aGluaw0KPiAgICAgICAgdGhhdCBhZGRpbmcgRHluYW1p Y0NvbW1hbmQgc3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5LiBQbGVhc2UgbGV0IG1lDQo+ICAgICAg ICBrbm93IGlmIHlvdSBmZWVsIG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1NBTUldDQo+IA0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAgfCA2NjIgKysrKysr KysrKysrKysrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9BY3BpUGFyc2VyLmggICAgICAgICAgICAgICAgICAgIHwgNzU5ICsrKysrKysrKysrKysr KysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv QWNwaVRhYmxlUGFyc2VyLmMgICAgICAgICAgICAgICB8IDIxNSArKysrKysNCj4gICBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuaCAg ICAgICAgICAgICAgIHwgMTI2ICsrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jICAgICAgICAgICAgICAgICAgICAgIHwgNjAxICsr KysrKysrKysrKysrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpVmlldy5oICAgICAgICAgICAgICAgICAgICAgIHwgMTAzICsrKw0KPiAgIFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9C Z3J0UGFyc2VyLmMgICAgICAgfCAgNjkgKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jICAgICAgIHwgMjQy ICsrKysrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jICAgICAgIHwgIDQ3ICsrDQo+ICAgU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJz ZXIuYyAgICAgICB8IDI2MSArKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYyAgICAgICB8IDI5MyAr KysrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMgICAgICAgfCA3MDAgKysrKysrKysrKysrKysrKysr DQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9NYWR0L01hZHRQYXJzZXIuYyAgICAgICB8IDMxMyArKysrKysrKw0KPiAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2Vy LmMgICAgICAgfCAgOTQgKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXIuYyAgICAgICB8IDE2OSArKysrKw0K PiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv U2xpdC9TbGl0UGFyc2VyLmMgICAgICAgfCAxNDIgKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMgICAg ICAgfCAxNjggKysrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jICAgICAgIHwgMzMwICsrKysrKysrKw0K PiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv U3NkdC9Tc2R0UGFyc2VyLmMgICAgICAgfCAgNDcgKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jICAgICAg IHwgMTUzICsrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYyAgIHwgMTY3ICsrKysrDQo+ICAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliLmggICB8ICAzMiArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmluZiB8ICA3NCAr Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkgfCAxMjcgKysrKw0KPiAgIFNoZWxsUGtnL1NoZWxs UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDMgKy0NCj4gICAyNSBmaWxlcyBjaGFuZ2VkLCA1ODk2IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u MzE4ZjM4NmZkYTE2NTE0NmJhZDQ5ZjllZGJjMTExZDRlMjE4ZGI5OA0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDY2MiBAQA0KPiArLyoqDQo+ICsgIEFDUEkgcGFyc2Vy DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBM SUVELg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFi bGVMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVZp ZXcuaCINCj4gKw0KPiArU1RBVElDIFVJTlQzMiAgIGdJbmRlbnQ7DQo+ICtTVEFUSUMgVUlOVDMy ICAgbVRhYmxlRXJyb3JDb3VudDsNCj4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVXYXJuaW5nQ291 bnQ7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJv ciBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0KPiArVk9JRA0KPiArUmVzZXRFcnJvckNvdW50ICgN Cj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAwOw0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIGVycm9y IGNvdW50Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJyb3JzIGRl dGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0dldEVycm9y Q291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIG1UYWJsZUVycm9y Q291bnQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0 YWJsZSB3YXJuaW5nIGNvdW50ZXIgdG8gWmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtSZXNldFdh cm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVXYXJuaW5n Q291bnQgPSAwOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBB Q1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBj b3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyovDQo+ICtV SU5UMzINCj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiAr ICByZXR1cm4gbVRhYmxlV2FybmluZ0NvdW50Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ICsqLw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtJbmNyZW1lbnRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiAr ICApDQo+ICt7DQo+ICsgIG1UYWJsZUVycm9yQ291bnQrKzsNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtJbmNyZW1lbnRXYXJuaW5nQ291bnQgKA0KPiAr ICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgbVRhYmxlV2FybmluZ0NvdW50Kys7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBBQ1BJIHRhYmxlIGNoZWNrc3Vt Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIGNoZWNrc3VtIGZvciB0aGUg QUNQSSB0YWJsZSBhbmQgb3B0aW9uYWxseQ0KPiArICBwcmludHMgdGhlIHN0YXR1cy4NCj4gKw0K PiArICBAcGFyYW0gW2luXSBMb2cgICAgIElmIFRSVUUgbG9nIHRoZSBzdGF0dXMgb2YgdGhlIGNo ZWNrc3VtLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSB0YWJsZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBv ZiB0aGUgYnVmZmVyLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgVGhlIGNoZWNrc3Vt IGlzIE9LLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ ICsqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtWZXJpZnlDaGVja3N1bSAoDQo+ICsgIElO IEJPT0xFQU4gTG9nLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBMZW5n dGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiBCeXRlQ291bnQgPSAwOw0KPiArICBVSU5UOCBD aGVja3N1bSA9IDA7DQo+ICsgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArDQo+ICsgIHdo aWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gKyAgICBDaGVja3N1bSArPSAqKFB0cisrKTsN Cj4gKyAgICBCeXRlQ291bnQrKzsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChMb2cpIHsNCj4gKyAg ICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsg ICAgaWYgKENoZWNrc3VtID09IDApIHsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRp bmcgKCkpIHsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAgICAgICAg ICBFRklfVEVYVF9BVFRSIChFRklfR1JFRU4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg KChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcblxuVGFibGUg Q2hlY2tzdW0gOiBPS1xuXG4iKTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsN Cj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVY VF9BVFRSIChFRklfUkVELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxB dHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICApOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDog RkFJTEVEICgweCVYKVxuXG4iLCBDaGVja3N1bSk7DQo+ICsgICAgfQ0KPiArICAgIGlmIChHZXRD b2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1 dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ ICsNCj4gKyAgcmV0dXJuIChDaGVja3N1bSA9PSAwKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRh YmxlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBi dWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wUmF3ICgNCj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJ TlROIEJ5dGVDb3VudCA9IDA7DQo+ICsgIFVJTlROIFBhcnRMaW5lQ2hhcnM7DQo+ICsgIFVJTlRO IEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiArICBDSEFSOCBBc2NpaUJ1ZmZlclsxN107DQo+ICsN Cj4gKyAgUHJpbnQgKEwiQWRkcmVzcyAgOiAweCVwXG4iLCBQdHIpOw0KPiArICBQcmludCAoTCJM ZW5ndGggICA6ICVkXG4iLCBMZW5ndGgpOw0KPiArDQo+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBM ZW5ndGgpIHsNCj4gKyAgICBpZiAoKEJ5dGVDb3VudCAmIDB4MEYpID09IDApIHsNCj4gKyAgICAg IEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhdID0gJ1wwJzsNCj4gKyAgICAgIFByaW50IChM IiAgJWFcbiUwOFggOiAiLCBBc2NpaUJ1ZmZlciwgQnl0ZUNvdW50KTsNCj4gKyAgICAgIEFzY2lp QnVmZmVySW5kZXggPSAwOw0KPiArICAgIH0gZWxzZSBpZiAoKEJ5dGVDb3VudCAmIDB4MDcpID09 IDApIHsNCj4gKyAgICAgIFByaW50IChMIi0gIik7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYg KCgqUHRyID49ICcgJykgJiYgKCpQdHIgPCAweDdGKSkgew0KPiArICAgICAgQXNjaWlCdWZmZXJb QXNjaWlCdWZmZXJJbmRleCsrXSA9ICpQdHI7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIEFz Y2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXgrK10gPSAnLic7DQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgUHJpbnQgKEwiJTAyWCAiLCAqUHRyKyspOw0KPiArDQo+ICsgICAgQnl0ZUNvdW50Kys7DQo+ ICsgIH0NCj4gKw0KPiArICAvLyBKdXN0aWZ5IHRoZSBmaW5hbCBsaW5lIHVzaW5nIHNwYWNlcyBi ZWZvcmUgcHJpbnRpbmcNCj4gKyAgLy8gdGhlIEFTQ0lJIGRhdGEuDQo+ICsgIFBhcnRMaW5lQ2hh cnMgPSAoTGVuZ3RoICYgMHgwRik7DQo+ICsgIGlmIChQYXJ0TGluZUNoYXJzICE9IDApIHsNCj4g KyAgICBQYXJ0TGluZUNoYXJzID0gNDggLSAoUGFydExpbmVDaGFycyAqIDMpOw0KPiArICAgIGlm ICgoTGVuZ3RoICYgMHgwRikgPD0gOCkgew0KPiArICAgICAgUGFydExpbmVDaGFycyArPSAyOw0K PiArICAgIH0NCj4gKyAgICB3aGlsZSAoUGFydExpbmVDaGFycyA+IDApIHsNCj4gKyAgICAgIFBy aW50IChMIiAiKTsNCj4gKyAgICAgIFBhcnRMaW5lQ2hhcnMtLTsNCj4gKyAgICB9DQo+ICsgIH0N Cj4gKw0KPiArICAvLyBQcmludCBBU0NJSSBkYXRhIGZvciB0aGUgZmluYWwgbGluZS4NCj4gKyAg QXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleF0gPSAnXDAnOw0KPiArICBQcmludCAoTCIgICVh IiwgQXNjaWlCdWZmZXIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg MSBieXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJh Y2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcFVp bnQ4ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAg ICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKEZvcm1hdCwgKlB0cik7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAyIGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lm aWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiAr Ki8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcFVpbnQxNiAoDQo+ICsgIElOIENPTlNUIENI QVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ ICsgIFByaW50IChGb3JtYXQsICooVUlOVDE2KilQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4g KyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZv cm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK0R1bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwN Cj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoRm9y bWF0LCAqKFVJTlQzMiopUHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICsgICAgZm9ybWF0IHN0 cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtE dW1wVWludDY0ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgLy8gU29tZSBmaWVsZHMgYXJlIG5vdCBh bGlnbmVkIGFuZCB0aGlzIGNhdXNlcyBhbGlnbm1lbnQgZmF1bHRzDQo+ICsgIC8vIG9uIEFSTSBw bGF0Zm9ybXMgaWYgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBMRFJEIGluc3RydWN0aW9ucy4NCj4g KyAgLy8gUGVyZm9ybSB3b3JkIGFjY2VzcyBzbyB0aGF0IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBu b3QgZ2VuZXJhdGVkLg0KPiArICBVSU5UNjQgVmFsID0gKihVSU5UMzIqKShQdHIgKyBzaXplb2Yg KFVJTlQzMikpOw0KPiArICBWYWwgPDw9IDMyOw0KPiArICBWYWwgfD0gKihVSU5UMzIqKVB0cjsN Cj4gKw0KPiArICBQcmludCAoRm9ybWF0LCBWYWwpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsg ICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4g KyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5V TEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5n IGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ ICtEdW1wM0NoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKA0KPiAr ICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyIsDQo+ICsgICAgUHRyWzBd LA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRp b25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZp ZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1h dCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICtEdW1wNENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQg T1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAg UHJpbnQgKA0KPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjIiwN Cj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAgIFB0clsyXSwNCj4gKyAgICBQ dHJbM10NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg NiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2lu ZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0 IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRo ZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wNkNoYXJzICgN Cj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIChGb3JtYXQgIT0g TlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMlYyIsDQo+ICsgICAgUHRyWzBdLA0KPiArICAg IFB0clsxXSwNCj4gKyAgICBQdHJbMl0sDQo+ICsgICAgUHRyWzNdLA0KPiArICAgIFB0cls0XSwN Cj4gKyAgICBQdHJbNV0NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3Jt YXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYg bm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1w OENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElO IFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIChG b3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMlYyVjJWMiLA0KPiArICAgIFB0 clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdLA0KPiArICAgIFB0clszXSwNCj4g KyAgICBQdHJbNF0sDQo+ICsgICAgUHRyWzVdLA0KPiArICAgIFB0cls2XSwNCj4gKyAgICBQdHJb N10NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFu ZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxl IGluZGVudC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdsb2JhbCB0YWJsZSBp bmRlbnQgaXMgMCBieSBkZWZhdWx0OyBob3dldmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBvbiBlbnRyeSB0byB0aGUgUGFyc2VBY3BpKCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJv dmlkZWQgdG8gUGFyc2VBY3BpKCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJl c3RvcmVkIGJhY2sgb24gZXhpdC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlcmVm b3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZC4NCj4gKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFt ZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ByaW50RmllbGROYW1lICgNCj4gKyAg SU4gVUlOVDMyICAgICAgICAgSW5kZW50LA0KPiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5h bWUNCj4gKykNCj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIEwiJSphJS0qcyA6ICIsDQo+ICsg ICAgZ0luZGVudCArIEluZGVudCwNCj4gKyAgICAiIiwNCj4gKyAgICAoT1VUUFVUX0ZJRUxEX0NP TFVNTl9XSURUSCAtIGdJbmRlbnQgLSBJbmRlbnQpLA0KPiArICAgIEZpZWxkTmFtZQ0KPiArICAg ICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgYW4g QUNQSSB0YWJsZSBidWZmZXIuDQo+ICsNCj4gKyAgVGhlIEFDUEkgdGFibGUgYnVmZmVyIGlzIHBh cnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gKyAgc3BlY2lm aWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50cy4gVGhp cyBwYXJzZXINCj4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0ZW0gb24gdGhl IEFDUElfUEFSU0VSIGFycmF5IGFuZCBsb2dzIHRoZQ0KPiArICBBQ1BJIHRhYmxlIGZpZWxkcy4N Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFyc2Ug QUNQSSB0YWJsZXMgYW5kIGZldGNoIHNwZWNpZmljDQo+ICsgIGZpZWxkIHZhbHVlcy4gVGhlIEl0 ZW1QdHIgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgKHdoZXJlIHVzZWQpDQo+ ICsgIGlzIHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNl bGVjdGVkIGZpZWxkIGRhdGENCj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5ndGgg bmVzdGVkIGZpZWxkcykuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNl IHRoZSBBQ1BJIGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgTnVt YmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyAgQHBhcmFtIFtpbl0gQXNj aWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQgZGVzY3Jp YmVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFibGUgYmVpbmcgcGFyc2Vk Lg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUg YnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXIgICAgICAgUG9p bnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgdGhhdA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ ICsgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2YgaXRlbXMgaW4gdGhlIEFDUElf UEFSU0VSIGFycmF5Lg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4N Cj4gKyovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpICgNCj4gKyAgSU4gQk9P TEVBTiAgICAgICAgICAgIFRyYWNlLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgSW5kZW50 LA0KPiArICBJTiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KPiArICBJ TiBVSU5UOCogICAgICAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgTGVu Z3RoLA0KPiArICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KPiArICBJTiBVSU5UMzIg ICAgICAgICAgICAgUGFyc2VySXRlbXMNCj4gKykNCj4gK3sNCj4gKyAgVUlOVDMyICBJbmRleDsN Cj4gKyAgVUlOVDMyICBPZmZzZXQgPSAwOw0KPiArDQo+ICsgIC8vIEluY3JlbWVudCB0aGUgSW5k ZW50DQo+ICsgIGdJbmRlbnQgKz0gSW5kZW50Ow0KPiArDQo+ICsgIGlmIChUcmFjZSAmJiAoQXNj aWlOYW1lICE9IE5VTEwpKXsNCj4gKyAgICBCT09MRUFOIEhpZ2hMaWdodCA9IEdldENvbG91ckhp Z2hsaWdodGluZyAoKTsNCj4gKyAgICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArDQo+ ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1Qt PkNvbk91dC0+TW9kZS0+QXR0cmlidXRlOw0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJp YnV0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIoRUZJX1lFTExPVywNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsg ICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIH0NCj4gKyAgICBQcmludCAoDQo+ICsgICAg ICBMIiUqYSUtKmEgOlxuIiwNCj4gKyAgICAgIGdJbmRlbnQsDQo+ICsgICAgICAiIiwNCj4gKyAg ICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gZ0luZGVudCksDQo+ICsgICAgICBBc2Np aU5hbWUNCj4gKyAgICAgICk7DQo+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgZ1NU LT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsN Cj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQYXJz ZXJJdGVtczsgSW5kZXgrKykgew0KPiArICAgIGlmICgoT2Zmc2V0ICsgUGFyc2VyW0luZGV4XS5M ZW5ndGgpID4gTGVuZ3RoKSB7DQo+ICsgICAgICAvLyBXZSBkb24ndCBwYXJzZSBwYXN0IHRoZSBl bmQgb2YgdGhlIG1heCBsZW5ndGggc3BlY2lmaWVkDQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9 DQo+ICsNCj4gKyAgICBpZiAoT2Zmc2V0ICE9IFBhcnNlcltJbmRleF0uT2Zmc2V0KSB7DQo+ICsg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgUHJpbnQgKA0KPiArICAgICAg ICBMIlxuRVJST1I6ICVhOiBPZmZzZXQgTWlzbWF0Y2ggZm9yICVzXG4iDQo+ICsgICAgICAgICAg IkN1cnJlbnRPZmZzZXQgPSAlZCBGaWVsZE9mZnNldCA9ICVkXG4iLA0KPiArICAgICAgICBBc2Np aU5hbWUsDQo+ICsgICAgICAgIFBhcnNlcltJbmRleF0uTmFtZVN0ciwNCj4gKyAgICAgICAgT2Zm c2V0LA0KPiArICAgICAgICBQYXJzZXJbSW5kZXhdLk9mZnNldA0KPiArICAgICAgICApOw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIGlmIChUcmFjZSkgew0KPiArICAgICAgLy8gaWYgdGhlcmUgaXMg YSBGb3JtYXR0ZXIgZnVuY3Rpb24gbGV0IHRoZSBmdW5jdGlvbiBoYW5kbGUNCj4gKyAgICAgIC8v IHRoZSBwcmludGluZyBlbHNlIGlmIGEgRm9ybWF0IGlzIHNwZWNpZmllZCBpbiB0aGUgdGFibGUg dXNlDQo+ICsgICAgICAvLyB0aGUgRm9ybWF0IGZvciBwcmludGluZw0KPiArICAgICAgUHJpbnRG aWVsZE5hbWUgKDIsIFBhcnNlcltJbmRleF0uTmFtZVN0cik7DQo+ICsgICAgICBpZiAoUGFyc2Vy W0luZGV4XS5QcmludEZvcm1hdHRlciAhPSBOVUxMKSB7DQo+ICsgICAgICAgIFBhcnNlcltJbmRl eF0uUHJpbnRGb3JtYXR0ZXIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiArICAgICAg fSBlbHNlIGlmIChQYXJzZXJbSW5kZXhdLkZvcm1hdCAhPSBOVUxMKSB7DQo+ICsgICAgICAgIHN3 aXRjaCAoUGFyc2VyW0luZGV4XS5MZW5ndGgpIHsNCj4gKyAgICAgICAgICBjYXNlIDE6DQo+ICsg ICAgICAgICAgICBEdW1wVWludDggKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiArICAg ICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgY2FzZSAyOg0KPiArICAgICAgICAgICAgRHVt cFVpbnQxNiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICAgICAgICBicmVh azsNCj4gKyAgICAgICAgICBjYXNlIDQ6DQo+ICsgICAgICAgICAgICBEdW1wVWludDMyIChQYXJz ZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAg ICAgIGNhc2UgODoNCj4gKyAgICAgICAgICAgIER1bXBVaW50NjQgKFBhcnNlcltJbmRleF0uRm9y bWF0LCBQdHIpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgZGVmYXVsdDoN Cj4gKyAgICAgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICAgICAgTCJcbkVSUk9SOiAlYTog Q0FOTk9UIFBBUlNFIFRISVMgRklFTEQsIEZpZWxkIExlbmd0aCA9ICVkXG4iLA0KPiArICAgICAg ICAgICAgICBBc2NpaU5hbWUsDQo+ICsgICAgICAgICAgICAgIFBhcnNlcltJbmRleF0uTGVuZ3Ro DQo+ICsgICAgICAgICAgICAgICk7DQo+ICsgICAgICAgIH0gLy8gc3dpdGNoDQo+ICsNCj4gKyAg ICAgICAgLy8gVmFsaWRhdGluZyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZSB0cmFjaW5nDQo+ ICsgICAgICAgIC8vIHRoZSBwYXJzZWQgdGFibGUgZW50cmllcywgdG8gcmVwb3J0IGJ5IHRhYmxl IG5hbWUuDQo+ICsgICAgICAgIGlmIChQYXJzZXJbSW5kZXhdLkZpZWxkVmFsaWRhdG9yICE9IE5V TEwpIHsNCj4gKyAgICAgICAgICBQYXJzZXJbSW5kZXhdLkZpZWxkVmFsaWRhdG9yIChQdHIsIFBh cnNlcltJbmRleF0uQ29udGV4dCk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKyAgICAg IFByaW50IChMIlxuIik7DQo+ICsgICAgfSAvLyBpZiAoVHJhY2UpDQo+ICsNCj4gKyAgICBpZiAo UGFyc2VyW0luZGV4XS5JdGVtUHRyICE9IE5VTEwpIHsNCj4gKyAgICAgICpQYXJzZXJbSW5kZXhd Lkl0ZW1QdHIgPSAoVk9JRCopUHRyOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFB0ciArPSBQYXJz ZXJbSW5kZXhdLkxlbmd0aDsNCj4gKyAgICBPZmZzZXQgKz0gUGFyc2VyW0luZGV4XS5MZW5ndGg7 DQo+ICsgIH0gLy8gZm9yDQo+ICsNCj4gKyAgLy8gRGVjcmVtZW50IHRoZSBJbmRlbnQNCj4gKyAg Z0luZGVudCAtPSBJbmRlbnQ7DQo+ICsgIHJldHVybiBPZmZzZXQ7DQo+ICt9DQo+ICsNCj4gKy8q KiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdlbmVyaWMgQWRkcmVzcyBTdHJ1Y3R1cmUu DQo+ICsgIFRoZSBHYXNQYXJzZXIgYXJyYXkgaXMgdXNlZCBieSB0aGUgUGFyc2VBY3BpIGZ1bmN0 aW9uIHRvIHBhcnNlIGFuZC9vciB0cmFjZQ0KPiArICB0aGUgR0FTIHN0cnVjdHVyZS4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2FzUGFyc2VyW10gPSB7DQo+ICsgIHtMIkFk ZHJlc3MgU3BhY2UgSUQiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiUmVnaXN0ZXIgQml0IFdpZHRoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlZ2lzdGVyIEJpdCBPZmZzZXQiLCAxLCAyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQWRkcmVzcyBTaXplIiwgMSwgMywg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFkZHJlc3MiLCA4LCA0 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNj cmliZWQNCj4gKyAgICBieSB0aGUgR2FzUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtp bl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiArICApDQo+ICt7DQo+ ICsgIFByaW50IChMIlxuIik7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAg ICBJbmRlbnQsDQo+ICsgICAgTlVMTCwNCj4gKyAgICBQdHIsDQo+ICsgICAgR0FTX0xFTkdUSCwN Cj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJl ZCBieSB0aGUgR2FzUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9u YWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArRHVtcEdhcyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0 IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsg IER1bXBHYXNTdHJ1Y3QgKFB0ciwgMik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBh cnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArRHVtcEFjcGlIZWFkZXIgKA0K PiArICBJTiBVSU5UOCogUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKyAgQUNQSV9QQVJTRVIgQWNwaUhlYWRlclBhcnNl cltdID0gew0KPiArICAgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ICsgIH07 DQo+ICsNCj4gKyAgcmV0dXJuIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICJBQ1BJIFRhYmxlIEhlYWRlciIsDQo+ICsgICAg ICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RI LA0KPiArICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChBY3BpSGVhZGVyUGFyc2VyKQ0KPiArICAg ICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFD UEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUgQWNwaUhlYWRlclBhcnNlci4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIG9wdGlvbmFsbHkgcmV0dXJucyB0aGUgc2lnbmF0dXJlLCBsZW5ndGgg YW5kIHJldmlzaW9uIG9mIHRoZQ0KPiArICBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dICBQdHIgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUg c2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9m IHRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbb3V0XSBSZXZpc2lv biAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiAr DQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzIN Cj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpSGVhZGVyICgNCj4gKyAgSU4gIFVJTlQ4KiAgICAgICAg IFB0ciwNCj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIFNpZ25hdHVyZSwNCj4gKyAgT1VUIENPTlNU IFVJTlQzMioqIExlbmd0aCwNCj4gKyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7 DQo+ICsgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiArICBB Q1BJX1BBUlNFUiBBY3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ICsgICAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbykNCj4gKyAgfTsNCj4gKw0KPiArICBCeXRlc1BhcnNlZCA9IFBhcnNl QWNwaSAoDQo+ICsgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAg IDAsDQo+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgUHRy LA0KPiArICAgICAgICAgICAgICAgICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0K PiArICAgICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4g KyAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZv LlNpZ25hdHVyZTsNCj4gKyAgKkxlbmd0aCA9IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4gKyAgKlJl dmlzaW9uID0gQWNwaUhkckluZm8uUmV2aXNpb247DQo+ICsNCj4gKyAgcmV0dXJuIEJ5dGVzUGFy c2VkOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkYWRkNGQx MDQyM2NiNjBjYTE3YzFiMWQyODVjNTVlMmU1OGEwZTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2Vy LmgNCj4gQEAgLTAsMCArMSw3NTkgQEANCj4gKy8qKg0KPiArICBIZWFkZXIgZmlsZSBmb3IgQUNQ SSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBBQ1BJUEFSU0VSX0hfDQo+ICsj ZGVmaW5lIEFDUElQQVJTRVJfSF8NCj4gKw0KPiArI2RlZmluZSBPVVRQVVRfRklFTERfQ09MVU1O X1dJRFRIICAzNg0KPiArDQo+ICsvLy8gVGhlIFJTRFAgdGFibGUgc2lnbmF0dXJlIGlzICJSU0Qg UFRSICIgKDggYnl0ZXMpDQo+ICsvLy8gSG93ZXZlciBUaGUgc2lnbmF0dXJlIGZvciBBQ1BJIHRh YmxlcyBpcyA0IGJ5dGVzLg0KPiArLy8vIFRvIHdvcmsgYXJvdW5kIHRoaXMgb2RkaXR5IGRlZmlu ZSBhIHNpZ25hdHVyZSB0eXBlDQo+ICsvLy8gdGhhdCBhbGxvd3MgdXMgdG8gcHJvY2VzcyB0aGUg bG9nIG9wdGlvbnMuDQo+ICsjZGVmaW5lIFJTRFBfVEFCTEVfSU5GTyAgU0lHTkFUVVJFXzMyKCdS JywgJ1MnLCAnRCcsICdQJykNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0 aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtJbmNyZW1lbnRXYXJuaW5nQ291bnQgKA0K PiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRo ZSBBQ1BJIHRhYmxlIGNoZWNrc3VtLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMg dGhlIGNoZWNrc3VtIGZvciB0aGUgQUNQSSB0YWJsZSBhbmQgb3B0aW9uYWxseQ0KPiArICBwcmlu dHMgdGhlIHN0YXR1cy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBMb2cgICAgIElmIFRSVUUgbG9n IHRoZSBzdGF0dXMgb2YgdGhlIGNoZWNrc3VtLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5d IExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArDQo+ICsgIEByZXR2YWwgVFJV RSAgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAg VGhlIGNoZWNrc3VtIGZhaWxlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1Zl cmlmeUNoZWNrc3VtICgNCj4gKyAgSU4gQk9PTEVBTiBMb2csDQo+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiArICBJTiBVSU5UMzIgIExlbmd0aA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBwZXJmb3JtcyBhIHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZl ci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBSYXcgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBVSU5UMzIgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHRyYWNlcyAxIGJ5dGUgb2YgZGF0dW0gYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiAr ICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9y bWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4g K0VGSUFQSQ0KPiArRHVtcFVpbnQ4ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHRyYWNlcyAyIGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZv cm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0 cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArRHVtcFVpbnQxNiAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJ TiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0 cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQg c3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcg Zm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K0R1bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlO VDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2Vz IDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICsgICAgZm9ybWF0IHN0cmlu Zy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1w VWludDY0ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAzIGNo YXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRo ZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3Ry aW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRh dGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXAzQ2hhcnMgKA0KPiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAg ICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgY2hhcmFj dGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZv cm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcg aXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcDRDaGFycyAoDQo+ICsgIElO IENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0 cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJz IHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0 IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBz cGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wNkNoYXJzICgNCj4gKyAgSU4gQ09O U1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGNoYXJhY3RlcnMgd2hp Y2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3Ry aW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNp ZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3Jt YXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXA4Q2hhcnMgKA0KPiArICBJTiBDT05TVCBD SEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAg KTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgcHJpbnRzIHRoZSBBQ1BJ IHRhYmxlIEZpZWxkIE5hbWUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgTnVt YmVyIG9mIHNwYWNlcyB0byBhZGQgdG8gdGhlIGdsb2JhbCB0YWJsZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRlbnQuIFRoZSBnbG9iYWwgdGFibGUgaW5kZW50IGlzIDAgYnkgZGVm YXVsdDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaG93ZXZlciB0aGlzIHZhbHVlIGlz IHVwZGF0ZWQgb24gZW50cnkgdG8gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFBh cnNlQWNwaSgpIGJ5IGFkZGluZyB0aGUgaW5kZW50IHZhbHVlIHByb3ZpZGVkIHRvDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhcnNlQWNwaSgpIGFuZCByZXN0b3JlZCBiYWNrIG9uIGV4 aXQuIFRoZXJlZm9yZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG90YWwgaW5k ZW50IGluIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZyb20NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ICsgIEBwYXJhbSBb aW5dIEZpZWxkTmFtZSAgIFBvaW50ZXIgdG8gdGhlIEZpZWxkIE5hbWUuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtQcmludEZpZWxkTmFtZSAoDQo+ICsgIElOIFVJTlQzMiAgICAgICAg IEluZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiAgRmllbGROYW1lDQo+ICspOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgY3VzdG9taXpp bmcgdGhlIHRyYWNlIG91dHB1dA0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0 IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YSBhcyBzcGVjaWZpZWQgYnkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICB0aGUgJ0Zvcm1hdCcgbWVtYmVyIG9mIEFDUElfUEFSU0VSLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ICsqLw0KPiArdHlwZWRlZiBWT0lEIChFRklBUEkgKkZOUFRSX1BSSU5UX0ZPUk1BVFRFUikoQ09O U1QgQ0hBUjE2KiBGb3JtYXQsIFVJTlQ4KiBQdHIpOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdmFsaWRhdGluZyBhbiBBQ1BJIHRhYmxlIGZp ZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBj b250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGFzIHNwZWNpZmllZCBieQ0KPiArICAgICAgICAg ICAgICAgICAgICAgIHRoZSAnQ29udGV4dCcgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNFUi4NCj4g KyAgICAgICAgICAgICAgICAgICAgICBlLmcuIHRoaXMgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICt0eXBlZGVmIFZPSUQgKEVGSUFQSSAqRk5Q VFJfRklFTERfVkFMSURBVE9SKShVSU5UOCogUHRyLCBWT0lEKiBDb250ZXh0KTsNCj4gKw0KPiAr LyoqIFRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBmaWVsZHMgb2YgYW4g QUNQSSB0YWJsZSBhbmQNCj4gKyAgICBwcm92aWRlcyBtZWFucyBmb3IgdGhlIHBhcnNlciB0byBp bnRlcnByZXQgYW5kIHRyYWNlIGFwcHJvcHJpYXRlbHkuDQo+ICsNCj4gKyAgVGhlIGZpcnN0IHRo cmVlIG1lbWJlcnMgYXJlIHBvcHVsYXRlZCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBwcmVzZW50IGlu DQo+ICsgIGluIHRoZSBBQ1BJIHRhYmxlIHNwZWNpZmljYXRpb25zLiBUaGUgcmVtYWluaW5nIG1l bWJlcnMgZGVzY3JpYmUgaG93DQo+ICsgIHRoZSBwYXJzZXIgc2hvdWxkIHJlcG9ydCB0aGUgZmll bGQgaW5mb3JtYXRpb24sIHZhbGlkYXRlIHRoZSBmaWVsZCBkYXRhDQo+ICsgIGFuZC9vciB1cGRh dGUgYW4gZXh0ZXJuYWwgcG9pbnRlciB0byB0aGUgZmllbGQgKEl0ZW1QdHIpLg0KPiArDQo+ICsg IFBhcnNlQWNwaSgpIHVzZXMgdGhlIGZvcm1hdCBzdHJpbmcgc3BlY2lmaWVkIGJ5ICdGb3JtYXQn IGZvciB0cmFjaW5nDQo+ICsgIHRoZSBmaWVsZCBkYXRhLiBJZiB0aGUgZmllbGQgaXMgbW9yZSBj b21wbGV4IGFuZCByZXF1aXJlcyBhZGRpdGlvbmFsDQo+ICsgIHByb2Nlc3NpbmcgZm9yIGZvcm1h dHRpbmcgYW5kIHJlcHJlc2VudGF0aW9uIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9uDQo+ICsg IGNhbiBiZSBzcGVjaWZpZWQgaW4gJ1ByaW50Rm9ybWF0dGVyJy4NCj4gKyAgVGhlIFByaW50Rm9y bWF0dGVyIGZ1bmN0aW9uIG1heSBjaG9vc2UgdG8gdXNlIHRoZSBmb3JtYXQgc3RyaW5nDQo+ICsg IHNwZWNpZmllZCBieSAnRm9ybWF0JyBvciB1c2UgaXRzIG93biBpbnRlcm5hbCBmb3JtYXQgc3Ry aW5nLg0KPiArDQo+ICsgIFRoZSAnRm9ybWF0JyBhbmQgJ1ByaW50Rm9ybWF0dGVyJyBtZW1iZXJz IGFsbG93IGZsZXhpYmlsaXR5IGZvcg0KPiArICByZXByZXNlbnRpbmcgdGhlIGZpZWxkIGRhdGEu DQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaVBhcnNlciB7DQo+ICsNCj4gKyAgLy8vIFN0 cmluZyBkZXNjcmliaW5nIHRoZSBBQ1BJIHRhYmxlIGZpZWxkDQo+ICsgIC8vLyAoRmllbGQgY29s dW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBDT05TVCBDSEFSMTYqICAgICAgICAgTmFt ZVN0cjsNCj4gKw0KPiArICAvLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmllbGQuDQo+ICsgIC8vLyAo Qnl0ZSBMZW5ndGggY29sdW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBVSU5UMzIgICAg ICAgICAgICAgICAgTGVuZ3RoOw0KPiArDQo+ICsgIC8vLyBUaGUgb2Zmc2V0IG9mIHRoZSBmaWVs ZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGFibGUuDQo+ICsgIC8vLyAoQnl0ZSBPZmZzZXQgY29s dW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgT2Zm c2V0Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBQcmludCgpIHN0eWxlIGZvcm1hdCBzdHJpbmcg Zm9yIHRyYWNpbmcgdGhlIGRhdGEuIElmIG5vdA0KPiArICAvLy8gdXNlZCB0aGlzIG11c3QgYmUg c2V0IHRvIE5VTEwuDQo+ICsgIENPTlNUIENIQVIxNiogICAgICAgICBGb3JtYXQ7DQo+ICsNCj4g KyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBwcmludCBmb3JtYXR0ZXIgZnVuY3Rpb24gd2hp Y2gNCj4gKyAgLy8vIGlzIHR5cGljYWxseSB1c2VkIHRvIHRyYWNlIGNvbXBsZXggZmllbGQgaW5m b3JtYXRpb24uDQo+ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIG11c3QgYmUgc2V0IHRvIE5VTEwu DQo+ICsgIC8vLyBUaGUgRm9ybWF0IHN0cmluZyBpcyBwYXNzZWQgdG8gdGhlIFByaW50Rm9ybWF0 dGVyIGZ1bmN0aW9uDQo+ICsgIC8vLyBidXQgbWF5IGJlIGlnbm9yZWQgYnkgdGhlIGltcGxlbWVu dGF0aW9uIGNvZGUuDQo+ICsgIEZOUFRSX1BSSU5UX0ZPUk1BVFRFUiBQcmludEZvcm1hdHRlcjsN Cj4gKw0KPiArICAvLy8gT3B0aW9uYWwgcG9pbnRlciB3aGljaCBtYXkgYmUgc2V0IHRvIHJlcXVl c3QgdGhlIHBhcnNlciB0byB1cGRhdGUNCj4gKyAgLy8vIGEgcG9pbnRlciB0byB0aGUgZmllbGQg ZGF0YS4gSWYgdW51c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgVk9JRCoqICAg ICAgICAgICAgICAgIEl0ZW1QdHI7DQo+ICsNCj4gKyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8g YSBmaWVsZCB2YWxpZGF0b3IgZnVuY3Rpb24uDQo+ICsgIC8vLyBUaGUgZnVuY3Rpb24gc2hvdWxk IGRpcmVjdGx5IHJlcG9ydCBhbnkgYXBwcm9wcmlhdGUgZXJyb3Igb3Igd2FybmluZw0KPiArICAv Ly8gYW5kIGludm9rZSB0aGUgYXBwcm9wcmlhdGUgY291bnRlciB1cGRhdGUgZnVuY3Rpb24uDQo+ ICsgIC8vLyBJZiBub3QgdXNlZCB0aGlzIHBhcmFtZXRlciBtdXN0IGJlIHNldCB0byBOVUxMLg0K PiArICBGTlBUUl9GSUVMRF9WQUxJREFUT1IgRmllbGRWYWxpZGF0b3I7DQo+ICsNCj4gKyAgLy8v IE9wdGlvbmFsIHBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiwNCj4gKyAg Ly8vIHdoaWNoIHRoZSBGaWVsZCBWYWxpZGF0b3IgZnVuY3Rpb24gY2FuIHVzZSB0byBkZXRlcm1p bmUNCj4gKyAgLy8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFDUEkgdGFibGUg YW5kIG1ha2UNCj4gKyAgLy8vIGRlY2lzaW9ucyBhYm91dCB0aGUgZmllbGQgYmVpbmcgdmFsaWRh dGVkLg0KPiArICAvLy8gZS5nLiB0aGlzIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXINCj4gKyAgVk9JRCogICAgICAgICAgICAgICAgIENvbnRleHQ7DQo+ICt9IEFD UElfUEFSU0VSOw0KPiArDQo+ICsvKiogQSBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSB0aGUgcG9p bnRlcnMgdG8gdGhlIG1lbWJlcnMgb2YgdGhlDQo+ICsgICAgQUNQSSBkZXNjcmlwdGlvbiBoZWFk ZXIgc3RydWN0dXJlIHRoYXQgd2FzIHBhcnNlZC4NCj4gKyovDQo+ICt0eXBlZGVmIHN0cnVjdCBB Y3BpRGVzY3JpcHRpb25IZWFkZXJJbmZvIHsNCj4gKyAgLy8vIEFDUEkgdGFibGUgc2lnbmF0dXJl DQo+ICsgIFVJTlQzMiogU2lnbmF0dXJlOw0KPiArICAvLy8gTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlDQo+ICsgIFVJTlQzMiogTGVuZ3RoOw0KPiArICAvLy8gUmV2aXNpb24NCj4gKyAgVUlOVDgq ICBSZXZpc2lvbjsNCj4gKyAgLy8vIENoZWNrc3VtDQo+ICsgIFVJTlQ4KiAgQ2hlY2tzdW07DQo+ ICsgIC8vLyBPRU0gSWQgLSBsZW5ndGggaXMgNiBieXRlcw0KPiArICBVSU5UOCogIE9lbUlkOw0K PiArICAvLy8gT0VNIHRhYmxlIElkDQo+ICsgIFVJTlQ2NCogT2VtVGFibGVJZDsNCj4gKyAgLy8v IE9FTSByZXZpc2lvbiBJZA0KPiArICBVSU5UMzIqIE9lbVJldmlzaW9uOw0KPiArICAvLy8gQ3Jl YXRvciBJZA0KPiArICBVSU5UMzIqIENyZWF0b3JJZDsNCj4gKyAgLy8vIENyZWF0b3IgcmV2aXNp b24NCj4gKyAgVUlOVDMyKiBDcmVhdG9yUmV2aXNpb247DQo+ICt9IEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2Ug YW4gQUNQSSB0YWJsZSBidWZmZXIuDQo+ICsNCj4gKyAgVGhlIEFDUEkgdGFibGUgYnVmZmVyIGlz IHBhcnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gKyAgc3Bl Y2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50cy4g VGhpcyBwYXJzZXINCj4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0ZW0gb24g dGhlIEFDUElfUEFSU0VSIGFycmF5IGFuZCBsb2dzIHRoZQ0KPiArICBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFy c2UgQUNQSSB0YWJsZXMgYW5kIGZldGNoIHNwZWNpZmljDQo+ICsgIGZpZWxkIHZhbHVlcy4gVGhl IEl0ZW1QdHIgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgKHdoZXJlIHVzZWQp DQo+ICsgIGlzIHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhl IHNlbGVjdGVkIGZpZWxkIGRhdGENCj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5n dGggbmVzdGVkIGZpZWxkcykuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRy YWNlIHRoZSBBQ1BJIGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAg TnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gKyAgQHBhcmFtIFtpbl0g QXNjaWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQgZGVz Y3JpYmVzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFibGUgYmVpbmcgcGFy c2VkLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0 aGUgYnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXIgICAgICAg UG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgdGhhdA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQu DQo+ICsgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2YgaXRlbXMgaW4gdGhlIEFD UElfUEFSU0VSIGFycmF5Lg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNl ZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpICgNCj4gKyAgSU4g Qk9PTEVBTiAgICAgICAgICAgIFRyYWNlLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgSW5k ZW50LA0KPiArICBJTiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KPiAr ICBJTiBVSU5UOCogICAgICAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgICAgICAg TGVuZ3RoLA0KPiArICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KPiArICBJTiBVSU5U MzIgICAgICAgICAgICAgUGFyc2VySXRlbXMNCj4gKyk7DQo+ICsNCj4gKy8qKiBUaGlzIGlzIGEg aGVscGVyIG1hY3JvIHRvIHBhc3MgcGFyYW1ldGVycyB0byB0aGUgUGFyc2VyIGZ1bmN0aW9ucy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQYXJzZXIgVGhlIG5hbWUgb2YgdGhlIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlDQo+ICsgICAgICAgICAgICAgIEFDUEkgdGFibGUgZmllbGRz Lg0KPiArKi8NCj4gKyNkZWZpbmUgUEFSU0VSX1BBUkFNUyhQYXJzZXIpIFBhcnNlciwgc2l6ZW9m IChQYXJzZXIpIC8gc2l6ZW9mIChQYXJzZXJbMF0pDQo+ICsNCj4gKy8qKiBUaGlzIGlzIGEgaGVs cGVyIG1hY3JvIGZvciBkZXNjcmliaW5nIHRoZSBBQ1BJIGhlYWRlciBmaWVsZHMuDQo+ICsNCj4g KyAgQHBhcmFtIFtvdXRdIEluZm8gIFBvaW50ZXIgdG8gcmV0cmlldmUgdGhlIEFDUEkgdGFibGUg aGVhZGVyIGluZm9ybWF0aW9uLg0KPiArKi8NCj4gKyNkZWZpbmUgUEFSU0VfQUNQSV9IRUFERVIo SW5mbykgICAgICAgICAgICAgICAgICAgXA0KPiArICB7IEwiU2lnbmF0dXJlIiwgNCwgMCwgTlVM TCwgRHVtcDRDaGFycywgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5TaWduYXR1 cmUgLCBOVUxMLCBOVUxMIH0sICAgIFwNCj4gKyAgeyBMIkxlbmd0aCIsIDQsIDQsIEwiJWQiLCBO VUxMLCAgICAgICAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+TGVuZ3RoLCBO VUxMLCBOVUxMIH0sICAgICAgICBcDQo+ICsgIHsgTCJSZXZpc2lvbiIsIDEsIDgsIEwiJWQiLCBO VUxMLCAgICAgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPlJldmlzaW9uLCBO VUxMLCBOVUxMIH0sICAgICAgXA0KPiArICB7IEwiQ2hlY2tzdW0iLCAxLCA5LCBMIjB4JVgiLCBO VUxMLCAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5DaGVja3N1bSwgTlVM TCwgTlVMTCB9LCAgICAgIFwNCj4gKyAgeyBMIk9lbSBJRCIsIDYsIDEwLCBOVUxMLCBEdW1wNkNo YXJzLCAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+T2VtSWQsIE5VTEwsIE5V TEwgfSwgICAgICAgICBcDQo+ICsgIHsgTCJPZW0gVGFibGUgSUQiLCA4LCAxNiwgTlVMTCwgRHVt cDhDaGFycywgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbVRhYmxlSWQsIE5VTEws IE5VTEwgfSwgICAgXA0KPiArICB7IEwiT2VtIFJldmlzaW9uIiwgNCwgMjQsIEwiMHglWCIsIE5V TEwsICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5PZW1SZXZpc2lvbiwgTlVMTCwg TlVMTCB9LCAgIFwNCj4gKyAgeyBMIkNyZWF0b3IgSUQiLCA0LCAyOCwgTlVMTCwgRHVtcDRDaGFy cywgICAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+Q3JlYXRvcklkLCBOVUxMLCBOVUxM IH0sICAgICBcDQo+ICsgIHsgTCJDcmVhdG9yIFJldmlzaW9uIiwgNCwgMzIsIEwiMHglWCIsIE5V TEwsICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkNyZWF0b3JSZXZpc2lvbiwgTlVMTCwg TlVMTCB9DQo+ICsNCj4gKy8qKiBMZW5ndGggb2YgdGhlIEFDUEkgR0FTIHN0cnVjdHVyZS4NCj4g Kw0KPiArICBOT1RFOiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJlIGRlZmluZWQgYXMNCj4gKyAgICAg ICAgc2l6ZW9mIChFRklfQUNQSV82XzJfR0VORVJJQ19BRERSRVNTX1NUUlVDVFVSRSkuDQo+ICsg ICAgICAgIEhvd2V2ZXIsIHdlIGRlbGliZXJhdGVseSBtaW5pbWlzZSBhbnkgcmVmZXJlbmNlIHRv IHRoZSBFREsyIEFDUEkNCj4gKyAgICAgICAgaGVhZGVycyBpbiBhbiBhdHRlbXB0IHRvIHByb3Zp ZGUgY3Jvc3MgY2hlY2tpbmcuDQo+ICsqLw0KPiArI2RlZmluZSBHQVNfTEVOR1RIICAgICAgICAg ICAgICAgICAgICAgMTINCj4gKw0KPiArLyoqIExlbmd0aCBvZiB0aGUgQUNQSSBIZWFkZXIgc3Ry dWN0dXJlLg0KPiArDQo+ICsgIE5PVEU6IFRoaXMgbWlnaHQgbm9ybWFsbHkgYmUgZGVmaW5lZCBh cw0KPiArICAgICAgICBzaXplb2YgKEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURFUikuDQo+ICsg ICAgICAgIEhvd2V2ZXIsIHdlIGRlbGliZXJhdGVseSBtaW5pbWlzZSBhbnkgcmVmZXJlbmNlIHRv IHRoZSBFREsyIEFDUEkNCj4gKyAgICAgICAgaGVhZGVycyBpbiBhbiBhdHRlbXB0IHRvIHByb3Zp ZGUgY3Jvc3MgY2hlY2tpbmcuDQo+ICsqLw0KPiArI2RlZmluZSBBQ1BJX0RFU0NSSVBUSU9OX0hF QURFUl9MRU5HVEggIDM2DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHRy YWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNjcmliZWQNCj4gKyAgICBieSB0aGUgR2FzUGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2Vz IHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVt cEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIg ICAgICAgIEluZGVudA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg dGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5n IHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wR2FzICgN Cj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUg QUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gKyov DQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArRHVtcEFjcGlIZWFkZXIgKA0KPiArICBJTiBVSU5U OCogUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQ SSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBTaWduYXR1cmUsIExlbmd0aCBh bmQgcmV2aXNpb24gb2YgdGhlDQo+ICsgIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gIFB0ciAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAg QHBhcmFtIFtvdXRdIFNpZ25hdHVyZSAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBz aWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAgIEdldHMgbG9jYXRpb24gb2Yg dGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFJldmlzaW9u ICAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0K PiArRUZJQVBJDQo+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiArICBJTiAgVUlOVDgqICAgICAgICAg UHRyLA0KPiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiArICBPVVQgQ09OU1Qg VUlOVDMyKiogTGVuZ3RoLA0KPiArICBPVVQgQ09OU1QgVUlOVDgqKiAgUmV2aXNpb24NCj4gKyAg KTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEJHUlQgdGFibGUu DQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQkdS VCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRS VUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUJncnQgKA0KPiArICBJTiBC T09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3Bp VGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIERCRzIgdGFibGUuDQo+ ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgREJHMiB0 YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUs IHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaURiZzIgKA0KPiArICBJTiBCT09M RUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgRFNEVCB0YWJs ZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyAgRm9yIHRoZSBE U0RUIHRhYmxlIG9ubHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUgcGFyc2VkIGFuZA0KPiAr ICB0cmFjZWQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRS VUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaURzZHQgKA0KPiArICBJTiBC T09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3Bp VGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEZBRFQgdGFibGUuDQo+ ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBGQURUIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRy YWNlcyB0aGUgQUNQSQ0KPiArICB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlv biBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlGYWR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwN Cj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0K PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBHVERUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNl IGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEdURFQgdGFibGUgYW5kDQo+ICsg IHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBh bHNvIHBhcnNlcyB0aGUgZm9sbG93aW5nIHBsYXRmb3JtIHRpbWVyIHN0cnVjdHVyZXM6DQo+ICsg ICAgLSBHVCBCbG9jayB0aW1lcg0KPiArICAgIC0gV2F0Y2hkb2cgdGltZXINCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUs IHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUd0ZHQgKA0KPiArICBJTiBCT09M RUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIElPUlQgdGFibGUuDQo+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCB0YWJs ZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0 aW9uIGFsc28gcGFyc2VzIHRoZSBmb2xsb3dpbmcgbm9kZXM6DQo+ICsgICAgLSBJVFMgR3JvdXAN Cj4gKyAgICAtIE5hbWVkIENvbXBvbmVudA0KPiArICAgIC0gUm9vdCBDb21wbGV4DQo+ICsgICAg LSBTTU1VdjEvMg0KPiArICAgIC0gU01NVXYzDQo+ICsgICAgLSBQTUNHDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmll bGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0 cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsq Lw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlJb3J0ICgNCj4gKyAgSU4gQk9PTEVB TiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxl TGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQURUIHRhYmxlLg0KPiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIE1BRFQgdGFibGUg YW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBjdXJyZW50bHkgcGFyc2VzIHRoZSBmb2xsb3dpbmcgSW50ZXJydXB0IENvbnRyb2xs ZXINCj4gKyAgU3RydWN0dXJlczoNCj4gKyAgICAtIEdJQ0MNCj4gKyAgICAtIEdJQ0QNCj4gKyAg ICAtIEdJQyBNU0kgRnJhbWUNCj4gKyAgICAtIEdJQ1INCj4gKyAgICAtIEdJQyBJVFMNCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElm IFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaU1hZHQgKA0KPiArICBJ TiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBB Y3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAg KTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIE1DRkcgdGFibGUu DQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNG RyB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRS VUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBb aW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaU1jZmcgKA0KPiArICBJTiBC T09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3Bp VGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFJTRFAgdGFibGUuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBYU0RUIHRh YmxlLg0KPiArICAqIE5vdGUgLSBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFyc2lu ZyBvZiBSU0RUIHRhYmxlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBh IFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGFuZA0KPiArICB2YWxpZGF0ZXMgdGhlIGNoZWNr c3VtLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0 cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsq Lw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlSc2RwICgNCj4gKyAgSU4gQk9PTEVB TiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxl TGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTTElUIHRhYmxlLg0KPiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNMSVQgdGFibGUg YW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBhbHNvIHZhbGlkYXRlcyBTeXN0ZW0gTG9jYWxpdGllcyBmb3IgdGhlIGZvbGxvd2lu ZzoNCj4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxpemVkIHZhbHVlIG9m IDEwDQo+ICsgICAgLSBSZWxhdGl2ZSBkaXN0YW5jZSBmcm9tIFN5c3RlbSBMb2NhbGl0eSBhdCBp Kk4raiBpcyBzYW1lIGFzDQo+ICsgICAgICBqKk4raQ0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRy YWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNp b24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJz ZUFjcGlTbGl0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIs DQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQUNQSSBTUENSIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIFNQQ1IgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRp b25zIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9u IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VB Y3BpU3BjciAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0K PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFi bGVSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IEFDUEkgU1JBVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBTUkFUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUg ZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBmb2xsb3dpbmcgUmVz b3VyY2UgQWxsb2NhdGlvbiBTdHJ1Y3R1cmVzOg0KPiArICAgIC0gUHJvY2Vzc29yIExvY2FsIEFQ SUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0dXJlDQo+ICsgICAgLSBNZW1vcnkgQWZmaW5pdHkgU3Ry dWN0dXJlDQo+ICsgICAgLSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDIEFmZmluaXR5IFN0cnVjdHVy ZQ0KPiArICAgIC0gR0lDQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKw0KPiArICBUaGlzIGZ1bmN0 aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRo ZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNyYXQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNl LA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNTRFQgdGFibGUuDQo+ICsgIFdoZW4gdHJh Y2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1NEVCB0YWJsZSBhbmQNCj4g KyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyAgRm9yIHRoZSBTU0RUIHRhYmxl IG9ubHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUNCj4gKyAgcGFyc2VkIGFuZCB0cmFjZWQu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNl IHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlU YWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNzZHQgKA0KPiArICBJTiBCT09MRUFOIFRy YWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5n dGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKTsNCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFhTRFQgdGFibGUNCj4gKyAgYW5kIG9w dGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1 bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgWFNEVCB0YWJsZS4NCj4gKw0K PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFD UEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVu Z3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpWHNkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g KyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsjZW5kaWYg Ly8gQUNQSVBBUlNFUl9IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4xNGE4YjE0NDExNDNkMWUzNWZiNTk0ZjVmMWEyMDQ4MWNiYTFlZjIwDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gQEAgLTAsMCArMSwyMTUgQEANCj4gKy8qKg0KPiAr ICBBQ1BJIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBh dmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5z ZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRl eHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4g KyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8VWVmaS5o Pg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRl ICJBY3BpVGFibGVQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArDQo+ICsv KiogQSBsaXN0IG9mIHJlZ2lzdGVyZWQgQUNQSSB0YWJsZSBwYXJzZXJzLg0KPiArKi8NCj4gK1NU QVRJQyBBQ1BJX1RBQkxFX1BBUlNFUiBtVGFibGVQYXJzZXJMaXN0W01BWF9BQ1BJX1RBQkxFX1BB UlNFUlNdOw0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsN Cj4gKyAgVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4N Cj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyUHJvYyAgVGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiAr DQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBm b3IgdGhlIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJl YWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNw YWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSZWdpc3RlclBhcnNl ciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ICsgIElO ICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQcm9jDQo+ICsgICkNCj4gK3sNCj4gKyAg VUlOVDMyIGluZGV4Ow0KPiArDQo+ICsgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxMKSB8fCAoU2ln bmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkgew0KPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBTZWFyY2ggaWYgYSBw YXJzZXIgaXMgYWxyZWFkeSBpbnN0YWxsZWQNCj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ICsgICAg ICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFy c2VyTGlzdFswXSkpOw0KPiArICAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBpZiAoU2ln bmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KPiArICAgICAg aWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciAhPSBOVUxMKSB7DQo+ICsgICAgICAg IHJldHVybiBFRklfQUxSRUFEWV9TVEFSVEVEOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAg fQ0KPiArDQo+ICsgIC8vIEZpbmQgdGhlIGZpcnN0IGZyZWUgc2xvdCBhbmQgcmVnaXN0ZXIgdGhl IHBhcnNlcg0KPiArICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAgIGluZGV4IDwgKHNpemVvZiAo bVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCj4gKyAg ICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRleF0u U2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSB7DQo+ICsgICAgICBtVGFi bGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPSBTaWduYXR1cmU7DQo+ICsgICAgICBtVGFi bGVQYXJzZXJMaXN0W2luZGV4XS5QYXJzZXIgPSBQYXJzZXJQcm9jOw0KPiArICAgICAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5vIGZyZWUgc2xv dCBmb3VuZA0KPiArICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICt9DQo+ICsNCj4g Ky8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQu DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFs aWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJz ZXIgd2FzIG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0Rl cmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0 dXJlDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ICsgIGlmIChTaWdu YXR1cmUgPT0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ ICsgICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRh YmxlUGFyc2VyTGlzdFswXSkpOw0KPiArICAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBp ZiAoU2lnbmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KPiAr ICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID0gQUNQSV9QQVJTRVJfU0lH TkFUVVJFX05VTEw7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5QYXJzZXIgPSBO VUxMOw0KPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArICAgIH0NCj4gKyAgfQ0KPiAr DQo+ICsgIC8vIE5vIG1hdGNoaW5nIHJlZ2lzdGVyZWQgcGFyc2VyIGZvdW5kLg0KPiArICByZXR1 cm4gRUZJX05PVF9GT1VORDsNCj4gK30NCj4gKw0KPiArLyoqIEdldCB0aGUgQUNQSSB0YWJsZSBQ YXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFy c2VyIHByb2MgZnJvbSB0aGUgbGlzdCBvZg0KPiArICByZWdpc3RlcmVkIHBhcnNlcnMuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4N Cj4gKyAgQHBhcmFtIFtvdXRdIFBhcnNlclByb2MgIFBvaW50ZXIgdG8gYSBBQ1BJIHRhYmxlIHBh cnNlciBwcm9jLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBw YXJzZXIgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9U X0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArR2V0UGFyc2VyICgNCj4gKyAgSU4gIFVJTlQz MiAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ICsgIE9VVCBQQVJTRV9BQ1BJX1RBQkxF X1BST0MgKiAgUGFyc2VyUHJvYw0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBpbmRleDsNCj4g Kw0KPiArICBpZiAoKFBhcnNlclByb2MgPT0gTlVMTCkgfHwgKFNpZ25hdHVyZSA9PSBBQ1BJX1BB UlNFUl9TSUdOQVRVUkVfTlVMTCkpIHsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1F VEVSOw0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ICsgICAgICAgaW5kZXgg PCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdFsw XSkpOw0KPiArICAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBpZiAoU2lnbmF0dXJlID09 IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KPiArICAgICAgKlBhcnNlclBy b2MgPSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5QYXJzZXI7DQo+ICsgICAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVn aXN0ZXJlZCBwYXJzZXIgZm91bmQuDQo+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIEFDUEkgdGFibGVzLg0KPiAr ICBUaGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0 IHRoZSBBQ1BJDQo+ICsgIHRhYmxlcywgcGVyZm9ybSBiaW5hcnkgZHVtcCBvZiB0aGUgdGFibGVz IGFuZCBkZXRlcm1pbmUgaWYgdGhlDQo+ICsgIEFDUEkgZmllbGRzIHNob3VsZCBiZSB0cmFjZWQu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhl IEFDUEkgdGFibGVzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJB VyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiArICB0aGUgdW5rbm93bi91bnBh cnNlZCBBQ1BJIHRhYmxlcyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IEFDUEkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIGRhdGEgYnVm ZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUHJvY2Vzc0FjcGlUYWJsZSAoDQo+ ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgIFN0YXR1 czsNCj4gKyAgQk9PTEVBTiAgICAgICBUcmFjZTsNCj4gKyAgQ09OU1QgVUlOVDMyKiBBY3BpVGFi bGVTaWduYXR1cmU7DQo+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxlTGVuZ3RoOw0KPiArICBD T05TVCBVSU5UOCogIEFjcGlUYWJsZVJldmlzaW9uOw0KPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BS T0MgUGFyc2VyUHJvYzsNCj4gKw0KPiArICBQYXJzZUFjcGlIZWFkZXIgKA0KPiArICAgIFB0ciwN Cj4gKyAgICAmQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICZBY3BpVGFibGVMZW5ndGgsDQo+ ICsgICAgJkFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4gKw0KPiArICBUcmFjZSA9IFBy b2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiArICAgICAgICAgICAgKkFjcGlUYWJsZVNpZ25h dHVyZSwNCj4gKyAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICpBY3BpVGFibGVMZW5n dGgNCj4gKyAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRHVt cFJhdyAoUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgICBWZXJpZnlDaGVja3N1bSAoVFJV RSwgUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdl dFBhcnNlciAoKkFjcGlUYWJsZVNpZ25hdHVyZSwgJlBhcnNlclByb2MpOw0KPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgLy8gTm8gcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQs IGRvIGRlZmF1bHQgaGFuZGxpbmcuDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICBEdW1w QWNwaUhlYWRlciAoUHRyKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsN Cj4gKyAgUGFyc2VyUHJvYyAoDQo+ICsgICAgVHJhY2UsDQo+ICsgICAgUHRyLA0KPiArICAgICpB Y3BpVGFibGVMZW5ndGgsDQo+ICsgICAgKkFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4g K30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0FjcGlUYWJsZVBhcnNlci5oIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5ZDU2 ZGE2Y2Y3MjhiYjk4ZGYyNjVkZTNhZTAzMGQ4NTEyMDQ5NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsr KyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJs ZVBhcnNlci5oDQo+IEBAIC0wLDAgKzEsMTI2IEBADQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUg Zm9yIEFDUEkgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNl bnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0K PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQSVRB QkxFUEFSU0VSX0hfDQo+ICsjZGVmaW5lIEFDUElUQUJMRVBBUlNFUl9IXw0KPiArDQo+ICsvKiog VGhlIG1heGltdW0gbnVtYmVyIG9mIEFDUEkgdGFibGUgcGFyc2Vycy4NCj4gKyovDQo+ICsjZGVm aW5lIE1BWF9BQ1BJX1RBQkxFX1BBUlNFUlMgICAgICAgICAgMTYNCj4gKw0KPiArLyoqIEFuIGlu dmFsaWQvTlVMTCBzaWduYXR1cmUgdmFsdWUuDQo+ICsqLw0KPiArI2RlZmluZSBBQ1BJX1BBUlNF Ul9TSUdOQVRVUkVfTlVMTCAgICAgIDANCj4gKw0KPiArLyoqIEEgZnVuY3Rpb24gdGhhdCBwYXJz ZXMgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAg ICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKyovDQo+ICt0eXBlZGVmDQo+ICtWT0lEDQo+ICsoRUZJQVBJICogUEFSU0Vf QUNQSV9UQUJMRV9QUk9DKSAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4 KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDgg ICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsvKiogVGhlIEFDUEkgdGFibGUg cGFyc2VyIGluZm9ybWF0aW9uDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaVRhYmxlUGFy c2VyIHsNCj4gKyAgLy8vIEFDUEkgdGFibGUgc2lnbmF0dXJlDQo+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgIFNpZ25hdHVyZTsNCj4gKw0KPiArICAvLy8gVGhlIEFDUEkgdGFibGUgcGFyc2Vy IGZ1bmN0aW9uLg0KPiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXI7DQo+ICt9IEFD UElfVEFCTEVfUEFSU0VSOw0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFy c2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNp Z25hdHVyZS4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyUHJvYyAgVGhlIEFDUEkgdGFibGUgcGFy c2VyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIg aXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJh bWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhl IHBhcnNlciBmb3IgdGhlIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSZWdp c3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUs DQo+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQcm9jDQo+ICspOw0KPiAr DQo+ICsvKiogRGVyZWdpc3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlz IGZ1bmN0aW9uIGRlcmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgZGVyZWdpc3Rl cmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBp bnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQg cGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNp Z25hdHVyZQ0KPiArKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBB Q1BJIHRhYmxlcy4NCj4gKyAgVGhpcyBmdW5jdGlvbiBjYWxscyBQcm9jZXNzVGFibGVSZXBvcnRP cHRpb25zKCkgdG8gbGlzdCB0aGUgQUNQSQ0KPiArICB0YWJsZXMsIHBlcmZvcm0gYmluYXJ5IGR1 bXAgb2YgdGhlIHRhYmxlcyBhbmQgZGV0ZXJtaW5lIGlmIHRoZQ0KPiArICBBQ1BJIGZpZWxkcyBz aG91bGQgYmUgdHJhY2VkLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBpbnZva2VzIHRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFs c28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZSBpbmNsdWRpbmcNCj4gKyAg dGhlIHVua25vd24vdW5wYXJzZWQgQUNQSSB0YWJsZXMgYW5kIHZhbGlkYXRlcyB0aGUgY2hlY2tz dW0uDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBBQ1BJDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWJsZSBkYXRhIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1Byb2Nl c3NBY3BpVGFibGUgKA0KPiArICBJTiBVSU5UOCogUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBH ZXQgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jIGZyb20gdGhlIGxpc3Qgb2YNCj4gKyAgcmVnaXN0 ZXJlZCBwYXJzZXJzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBTaWduYXR1cmUgICBUaGUgQUNQ SSB0YWJsZSBzaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbb3V0XSBQYXJzZXJQcm9jICBQb2ludGVy IHRvIGEgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYy4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2Fz IG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0dldFBhcnNl ciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiArICBP VVQgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICogIFBhcnNlclByb2MNCj4gKyAgKTsNCj4gKw0KPiAr I2VuZGlmIC8vIEFDUElUQUJMRVBBUlNFUl9IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uM2JiMTQyNTM4YzAwOTlkY2RkMmRmYTNkMjA4ZDMzNTBjNDI1YWNjYg0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0FjcGlWaWV3LmMNCj4gQEAgLTAsMCArMSw2MDEgQEANCj4gKy8qKg0KPiArDQo+ICsgIENv cHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0 DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g Kw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0Ug T04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0K PiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gKyNpbmNsdWRl ICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsjaW5j bHVkZSAiQWNwaVZpZXcuaCINCj4gKyNpbmNsdWRlICJVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIuaCINCj4gKw0KPiArRUZJX0hJSV9IQU5ETEUgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBO VUxMOw0KPiArDQo+ICsvLyBSZXBvcnQgdmFyaWFibGVzDQo+ICtTVEFUSUMgVUlOVDMyICAgICAg ICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZTsNCj4gK1NUQVRJQyBDT05TVCBDSEFSMTYqICAgICAg bVNlbGVjdGVkQWNwaVRhYmxlTmFtZTsNCj4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgbVNl bGVjdGVkQWNwaVRhYmxlRm91bmQ7DQo+ICtTVEFUSUMgRVJFUE9SVF9PUFRJT04gICAgIG1SZXBv cnRUeXBlOw0KPiArU1RBVElDIFVJTlQzMiAgICAgICAgICAgICBtVGFibGVDb3VudDsNCj4gK1NU QVRJQyBVSU5UMzIgICAgICAgICAgICAgbUJpblRhYmxlQ291bnQ7DQo+ICtTVEFUSUMgQk9PTEVB TiAgICAgICAgICAgIG1WZXJib3NlOw0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtQ29u c2lzdGVuY3lDaGVjazsNCj4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgbUNvbG91ckhpZ2hs aWdodGluZzsNCj4gKw0KPiArLyoqIEFuIGFycmF5IG9mIGFjcGl2aWV3IGNvbW1hbmQgbGluZSBw YXJhbWV0ZXJzLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBTSEVMTF9QQVJBTV9JVEVNIFBhcmFt TGlzdFtdID0gew0KPiArICB7TCIvPyIsIFR5cGVGbGFnfSwNCj4gKyAge0wiLWMiLCBUeXBlRmxh Z30sDQo+ICsgIHtMIi1kIiwgVHlwZUZsYWd9LA0KPiArICB7TCItaCIsIFR5cGVWYWx1ZX0sDQo+ ICsgIHtMIi1sIiwgVHlwZUZsYWd9LA0KPiArICB7TCItcyIsIFR5cGVWYWx1ZX0sDQo+ICsgIHtM Ii12IiwgVHlwZUZsYWd9LA0KPiArICB7TlVMTCwgVHlwZU1heH0NCj4gK307DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0K PiArDQo+ICsgIEByZXR2YWwgVFJVRSBpZiBjb2xvdXIgaGlnaGxpZ2h0aW5nIGlzIGVuYWJsZWQu DQo+ICsqLw0KPiArQk9PTEVBTg0KPiArR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgVk9J RA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBtQ29sb3VySGlnaGxpZ2h0aW5nOw0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0 YXR1cy4NCj4gKw0KPiArKi8NCj4gK1ZPSUQNCj4gK1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ ICsgIEJPT0xFQU4gSGlnaGxpZ2h0DQo+ICsgICkNCj4gK3sNCj4gKyAgbUNvbG91ckhpZ2hsaWdo dGluZyA9IEhpZ2hsaWdodDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgcmVwb3J0IG9wdGlvbnMuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSByZXBv cnQgb3B0aW9uLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArRVJFUE9SVF9PUFRJT04NCj4gK0dldFJl cG9ydE9wdGlvbiAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVJlcG9y dFR5cGU7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNlbGVj dGVkIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHNpZ25hdHVyZSBvZiB0 aGUgc2VsZWN0ZWQgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1VJTlQzMg0KPiAr R2V0U2VsZWN0ZWRBY3BpVGFibGUgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIG1TZWxlY3RlZEFjcGlUYWJsZTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g ZHVtcHMgdGhlIEFDUEkgdGFibGUgdG8gYSBmaWxlLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBMZW5n dGggICAgVGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIFRS VUUgICAgICAgICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIEZhaWx1cmUu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtCT09MRUFODQo+ICtEdW1wQWNwaVRhYmxlVG9GaWxlICgN Cj4gKyAgSU4gQ09OU1QgVUlOVDgqICBQdHIsDQo+ICsgIElOIENPTlNUIFVJTlROICAgTGVuZ3Ro DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czsNCj4gKyAgQ0hB UjE2ICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsNCj4gKyAg U0hFTExfRklMRV9IQU5ETEUgIER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4gKyAgVUlOVE4gICAg ICAgICAgICAgIFRyYW5zZmVyQnl0ZXMgPSBMZW5ndGg7DQo+ICsNCj4gKyAgVW5pY29kZVNQcmlu dCAoDQo+ICsgICAgRmlsZU5hbWVCdWZmZXIsDQo+ICsgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZl ciksDQo+ICsgICAgTCIuXFwlcyUwNGQuYmluIiwNCj4gKyAgICBtU2VsZWN0ZWRBY3BpVGFibGVO YW1lLA0KPiArICAgIG1CaW5UYWJsZUNvdW50KysNCj4gKyAgICApOw0KPiArDQo+ICsgIFN0YXR1 cyA9IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiArICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVy LA0KPiArICAgICAgICAgICAgICZEdW1wRmlsZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICBFRklf RklMRV9NT0RFX1JFQUQgfCBFRklfRklMRV9NT0RFX1dSSVRFIHwgRUZJX0ZJTEVfTU9ERV9DUkVB VEUsDQo+ICsgICAgICAgICAgICAgMA0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgLTEs DQo+ICsgICAgICAtMSwNCj4gKyAgICAgIE5VTEwsDQo+ICsgICAgICBTVFJJTkdfVE9LRU4gKFNU Ul9HRU5fUkVBRE9OTFlfTUVESUEpLA0KPiArICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUs DQo+ICsgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgKTsNCj4gKyAgICByZXR1cm4gRkFMU0U7 DQo+ICsgIH0NCj4gKw0KPiArICBQcmludCAoTCJEdW1waW5nIEFDUEkgdGFibGUgdG8gOiAlcyAu Li4gIiwgRmlsZU5hbWVCdWZmZXIpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFNoZWxsV3JpdGVGaWxl ICgNCj4gKyAgICAgICAgICAgICBEdW1wRmlsZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAmVHJh bnNmZXJCeXRlcywNCj4gKyAgICAgICAgICAgICAoVk9JRCopUHRyDQo+ICsgICAgICAgICAgICAg KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIFByaW50IChMIkVSUk9S OiBGYWlsZWQgdG8gZHVtcCB0YWJsZSB0byBiaW5hcnkgZmlsZS5cbiIpOw0KPiArICAgIFRyYW5z ZmVyQnl0ZXMgPSAwOw0KPiArICB9IGVsc2Ugew0KPiArICAgIFByaW50IChMIkRPTkUuXG4iKTsN Cj4gKyAgfQ0KPiArDQo+ICsgIFNoZWxsQ2xvc2VGaWxlICgmRHVtcEZpbGVIYW5kbGUpOw0KPiAr ICByZXR1cm4gKExlbmd0aCA9PSBUcmFuc2ZlckJ5dGVzKTsNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0aW9ucyBmb3IgdGhl IEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlIFRoZSBBQ1BJIHRh YmxlIFNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtpbl0gVGFibGVQdHIgIFBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGgg Zm8gdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIFRSVUUgaWYgdGhl IEFDUEkgdGFibGUgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtQcm9j ZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBTaWduYXR1cmUs DQo+ICsgIElOIENPTlNUIFVJTlQ4KiAgVGFibGVQdHIsDQo+ICsgIElOIENPTlNUIFVJTlQzMiAg TGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4g KyAgVUlOVDgqICBTaWduYXR1cmVQdHIgPSAoVUlOVDgqKShVSU5UTikmU2lnbmF0dXJlOw0KPiAr ICBCT09MRUFOIExvZyA9IEZBTFNFOw0KPiArICBCT09MRUFOIEhpZ2hMaWdodCA9IEdldENvbG91 ckhpZ2hsaWdodGluZyAoKTsNCj4gKyAgc3dpdGNoIChHZXRSZXBvcnRPcHRpb24gKCkpIHsNCj4g KyAgICBjYXNlIEVSRVBPUlRfQUxMOg0KPiArICAgICAgTG9nID0gVFJVRTsNCj4gKyAgICAgIGJy ZWFrOw0KPiArICAgIGNhc2UgRVJFUE9SVF9TRUxFQ1RFRDoNCj4gKyAgICAgIGlmIChTaWduYXR1 cmUgPT0gR2V0U2VsZWN0ZWRBY3BpVGFibGUgKCkpIHsNCj4gKyAgICAgICAgTG9nID0gVFJVRTsN Cj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBUUlVFOw0KPiArICAgICAgfQ0K PiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFUkVQT1JUX1RBQkxFX0xJU1Q6DQo+ICsgICAg ICBpZiAobVRhYmxlQ291bnQgPT0gMCkgew0KPiArICAgICAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ ICsgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmli dXRlOw0KPiArICAgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9URVhUX0FUVFIoRUZJX0NZQU4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIFByaW50IChMIlxu SW5zdGFsbGVkIFRhYmxlKHMpOlxuIik7DQo+ICsgICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4g KyAgICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2lu YWxBdHRyaWJ1dGUpOw0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAo DQo+ICsgICAgICAgIEwiXHQlNGQuICVjJWMlYyVjXG4iLA0KPiArICAgICAgICArK21UYWJsZUNv dW50LA0KPiArICAgICAgICBTaWduYXR1cmVQdHJbMF0sDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0 clsxXSwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzJdLA0KPiArICAgICAgICBTaWduYXR1cmVQ dHJbM10NCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGNhc2UgRVJFUE9S VF9EVU1QX0JJTl9GSUxFOg0KPiArICAgICAgaWYgKFNpZ25hdHVyZSA9PSBHZXRTZWxlY3RlZEFj cGlUYWJsZSAoKSkgew0KPiArICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IFRSVUU7 DQo+ICsgICAgICAgIER1bXBBY3BpVGFibGVUb0ZpbGUgKFRhYmxlUHRyLCBMZW5ndGgpOw0KPiAr ICAgICAgfQ0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFUkVQT1JUX01BWDoNCj4gKyAg ICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBoZXJlLg0KPiArICAgICAgLy8gVGhpcyBjYXNlIGlz IG9ubHkgcHJlc2VudCB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcuDQo+ICsgICAgICBicmVh azsNCj4gKyAgfSAvLyBzd2l0Y2gNCj4gKw0KPiArICBpZiAoTG9nKSB7DQo+ICsgICAgaWYgKEhp Z2hMaWdodCkgew0KPiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9k ZS0+QXR0cmlidXRlOw0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ICsg ICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAg IEVGSV9URVhUX0FUVFIoRUZJX0xJR0hUQkxVRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg KChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAg ICAgICAgICAgICApOw0KPiArICAgIH0NCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuXG4g LS0tLS0tLS0tLS0tLS0tICVjJWMlYyVjIFRhYmxlIC0tLS0tLS0tLS0tLS0tLSBcblxuIiwNCj4g KyAgICAgIFNpZ25hdHVyZVB0clswXSwNCj4gKyAgICAgIFNpZ25hdHVyZVB0clsxXSwNCj4gKyAg ICAgIFNpZ25hdHVyZVB0clsyXSwNCj4gKyAgICAgIFNpZ25hdHVyZVB0clszXQ0KPiArICAgICAg KTsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0 cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgIH0NCj4gKyAg fQ0KPiArDQo+ICsgIHJldHVybiBMb2c7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IGNvbnZlcnRzIGEgc3RyaW5nIHRvIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFN0ciAgIFBvaW50ZXIgdG8gdGhlIHN0cmluZyB0byBiZSBjb252ZXJ0ZWQgdG8g dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArDQo+ ICsgIEByZXR2YWwgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArVUlOVDMyDQo+ICtDb252ZXJ0U3RyVG9BY3BpU2lnbmF0dXJlICgNCj4gKyAgSU4gIENPTlNU IENIQVIxNiogU3RyDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDggSW5kZXggPSAwOw0KPiArICBD SEFSOCBQdHJbNF07DQo+ICsNCj4gKyAgLy8gQ29udmVydCB0byBVcHBlciBjYXNlIGFuZCBjb252 ZXJ0IHRvIEFTQ0lJDQo+ICsgIHdoaWxlICgoSW5kZXggPCA0KSAmJiAoU3RyW0luZGV4XSAhPSAw KSkgew0KPiArICAgIGlmIChTdHJbSW5kZXhdID49IEwnYScgJiYgU3RyW0luZGV4XSA8PSBMJ3on KSB7DQo+ICsgICAgICBQdHJbSW5kZXhdID0gKENIQVI4KShTdHJbSW5kZXhdIC0gKEwnYScgLSBM J0EnKSk7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgpU3Ry W0luZGV4XTsNCj4gKyAgICB9DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArICByZXR1cm4g KihVSU5UMzIqKVB0cjsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMg dGhlIGNvbmZpZ3VyYXRpb24gdGFibGUgZW50cmllcyBpbiB0aGUNCj4gKyAgICBzeXN0ZW0gdGFi bGUsIHJldHJpZXZlcyB0aGUgUlNEUCBwb2ludGVyIGFuZCBzdGFydHMgcGFyc2luZw0KPiArICAg IHRoZSBBQ1BJIHRhYmxlcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTeXN0ZW1UYWJsZSBQb2lu dGVyIHRvIHRoZSBFRkkgc3lzdGVtIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyBF RklfTk9UX0ZPVU5EICAgaWYgdGhlIFJTRFAgcG9pbnRlciBpcyBub3QgZm91bmQuDQo+ICsgICAg ICAgICAgUmV0dXJucyBFRklfVU5TVVBQT1JURUQgaWYgdGhlIFJTRFAgdmVyc2lvbiBpcyBsZXNz IHRoYW4gMi4NCj4gKyAgICAgICAgICBSZXR1cm5zIEVGSV9TVUNDRVNTICAgICBpZiBzdWNjZXNz ZnVsLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtBY3Bp VmlldyAoDQo+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUqIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4g K3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArICBFRklfQ09ORklHVVJBVElPTl9UQUJMRSogRWZp Q29uZmlndXJhdGlvblRhYmxlOw0KPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgRm91bmRB Y3BpVGFibGU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0 ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIFByaW50QXR0cmlidXRlOw0KPiArICBF UkVQT1JUX09QVElPTiAgICAgICAgICAgUmVwb3J0T3B0aW9uOw0KPiArICBVSU5UOCogICAgICAg ICAgICAgICAgICAgUnNkcFB0cjsNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFJzZHBM ZW5ndGg7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBSc2RwUmV2aXNpb247DQo+ICsg IFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgICBSc2RwUGFyc2VyUHJvYzsNCj4gKyAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgIFRyYWNlOw0KPiArDQo+ICsgIC8vIFNlYXJjaCB0aGUgdGFibGUgZm9y IGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyB0aGUgQUNQSSBUYWJsZSBHdWlkDQo+ICsgIEZvdW5kQWNw aVRhYmxlID0gRkFMU0U7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFN5c3RlbVRhYmxl LT5OdW1iZXJPZlRhYmxlRW50cmllczsgSW5kZXgrKykgew0KPiArICAgIGlmIChDb21wYXJlR3Vp ZCAoJmdFZmlBY3BpVGFibGVHdWlkLA0KPiArICAgICAgICAgICYoU3lzdGVtVGFibGUtPkNvbmZp Z3VyYXRpb25UYWJsZVtJbmRleF0uVmVuZG9yR3VpZCkpKSB7DQo+ICsgICAgICBFZmlDb25maWd1 cmF0aW9uVGFibGUgPSAmU3lzdGVtVGFibGUtPkNvbmZpZ3VyYXRpb25UYWJsZVtJbmRleF07DQo+ ICsgICAgICBGb3VuZEFjcGlUYWJsZSA9IFRSVUU7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9 DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoRm91bmRBY3BpVGFibGUpIHsNCj4gKyAgICBSc2RwUHRy ID0gKFVJTlQ4KilFZmlDb25maWd1cmF0aW9uVGFibGUtPlZlbmRvclRhYmxlOw0KPiArDQo+ICsg ICAgLy8gVGhlIFJTRFAgcmV2aXNpb24gaXMgMSBieXRlIHN0YXJ0aW5nIGF0IG9mZnNldCAxNQ0K PiArICAgIFJzZHBSZXZpc2lvbiA9ICooUnNkcFB0ciArIFJTRFBfUkVWSVNJT05fT0ZGU0VUKTsN Cj4gKw0KPiArICAgIGlmIChSc2RwUmV2aXNpb24gPCAyKSB7DQo+ICsgICAgICBQcmludCAoDQo+ ICsgICAgICAgIEwiRVJST1I6IFJTRFAgdmVyc2lvbiBsZXNzIHRoYW4gMiBpcyBub3Qgc3VwcG9y dGVkLlxuIg0KPiArICAgICAgICApOw0KPiArICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyBUaGUgUlNEUCBsZW5ndGggaXMgNCBieXRlcyBzdGFy dGluZyBhdCBvZmZzZXQgMjANCj4gKyAgICBSc2RwTGVuZ3RoID0gKihVSU5UMzIqKShSc2RwUHRy ICsgUlNEUF9MRU5HVEhfT0ZGU0VUKTsNCj4gKw0KPiArICAgIFRyYWNlID0gUHJvY2Vzc1RhYmxl UmVwb3J0T3B0aW9ucyAoUlNEUF9UQUJMRV9JTkZPLCBSc2RwUHRyLCBSc2RwTGVuZ3RoKTsNCj4g Kw0KPiArICAgIFN0YXR1cyA9IEdldFBhcnNlciAoUlNEUF9UQUJMRV9JTkZPLCAmUnNkcFBhcnNl clByb2MpOw0KPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIFByaW50 ICgNCj4gKyAgICAgICAgTCJFUlJPUjogTm8gcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQgZm9yIFJT RFAuXG4iDQo+ICsgICAgICAgICk7DQo+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIFJzZHBQYXJzZXJQcm9jICgNCj4gKyAgICAgIFRyYWNlLA0KPiArICAgICAg UnNkcFB0ciwNCj4gKyAgICAgIFJzZHBMZW5ndGgsDQo+ICsgICAgICBSc2RwUmV2aXNpb24NCj4g KyAgICAgICk7DQo+ICsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50 ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiRVJST1I6IEZhaWxlZCB0byBmaW5kIEFD UEkgVGFibGUgR3VpZCBpbiBTeXN0ZW0gQ29uZmlndXJhdGlvbiBUYWJsZS5cbiINCj4gKyAgICAg ICk7DQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICBSZXBv cnRPcHRpb24gPSBHZXRSZXBvcnRPcHRpb24gKCk7DQo+ICsgIGlmIChFUkVQT1JUX1RBQkxFX0xJ U1QgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ICsgICAgaWYgKCgoRVJFUE9SVF9TRUxFQ1RFRCA9PSBS ZXBvcnRPcHRpb24pICB8fA0KPiArICAgICAgICAgKEVSRVBPUlRfRFVNUF9CSU5fRklMRSA9PSBS ZXBvcnRPcHRpb24pKSAmJg0KPiArICAgICAgICAoIW1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kKSkg ew0KPiArICAgICAgUHJpbnQgKEwiXG5SZXF1ZXN0ZWQgQUNQSSBUYWJsZSBub3QgZm91bmQuXG4i KTsNCj4gKyAgICB9IGVsc2UgaWYgKEVSRVBPUlRfRFVNUF9CSU5fRklMRSAhPSBSZXBvcnRPcHRp b24pIHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0 dHJpYnV0ZTsNCj4gKw0KPiArICAgICAgUHJpbnQgKEwiXG5UYWJsZSBTdGF0aXN0aWNzOlxuIik7 DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAg ICAgUHJpbnRBdHRyaWJ1dGUgPSAoR2V0RXJyb3JDb3VudCAoKSA+IDApID8NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9SRUQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKSA6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Jp Z2luYWxBdHRyaWJ1dGU7DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdT VC0+Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAo TCJcdCVkIEVycm9yKHMpXG4iLCBHZXRFcnJvckNvdW50ICgpKTsNCj4gKw0KPiArICAgICAgaWYg KEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAgICBQcmludEF0dHJpYnV0ZSA9 IChHZXRXYXJuaW5nQ291bnQgKCkgPiAwKSA/DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRUZJX1RFWFRfQVRUUiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf UkVELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0 ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkgOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0K PiArDQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBQ cmludEF0dHJpYnV0ZSk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcdCVkIFdhcm5p bmcocylcbiIsIEdldFdhcm5pbmdDb3VudCAoKSk7DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xv dXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0 ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9 DQo+ICsgIH0NCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4g KyAgRnVuY3Rpb24gZm9yICdhY3BpdmlldycgY29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5d IEltYWdlSGFuZGxlICBIYW5kbGUgdG8gdGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4g KyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChO VUxMIGlmIEludGVybmFsKS4NCj4gKyovDQo+ICtTSEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr U2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gKyAgKQ0K PiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiArICBTSEVMTF9TVEFUVVMg ICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9TVUNDRVNTOw0KPiArICBMSVNUX0VOVFJZKiAgICAg ICAgUGFja2FnZSA9IE5VTEw7DQo+ICsgIENIQVIxNiogICAgICAgICAgICBQcm9ibGVtUGFyYW07 DQo+ICsgIENPTlNUIENIQVIxNiogICAgICBUZW1wOw0KPiArICBDSEFSOCAgICAgICAgICAgICAg Q29sb3VyT3B0aW9uWzhdOw0KPiArICBTSEVMTF9GSUxFX0hBTkRMRSAgVG1wRHVtcEZpbGVIYW5k bGUgPSBOVUxMOw0KPiArDQo+ICsgIC8vIFNldCBEZWZhdWx0cw0KPiArICBtUmVwb3J0VHlwZSA9 IEVSRVBPUlRfQUxMOw0KPiArICBtVGFibGVDb3VudCA9IDA7DQo+ICsgIG1CaW5UYWJsZUNvdW50 ID0gMDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlID0gMDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRh YmxlTmFtZSA9IE5VTEw7DQo+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0gRkFMU0U7DQo+ ICsgIG1WZXJib3NlID0gVFJVRTsNCj4gKyAgbUNvbnNpc3RlbmN5Q2hlY2sgPSBUUlVFOw0KPiAr DQo+ICsgIC8vIFJlc2V0IFRoZSBlcnJvci93YXJuaW5nIGNvdW50ZXJzDQo+ICsgIFJlc2V0RXJy b3JDb3VudCAoKTsNCj4gKyAgUmVzZXRXYXJuaW5nQ291bnQgKCk7DQo+ICsNCj4gKyAgU3RhdHVz ID0gU2hlbGxDb21tYW5kTGluZVBhcnNlIChQYXJhbUxpc3QsICZQYWNrYWdlLCAmUHJvYmxlbVBh cmFtLCBUUlVFKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGlmIChT dGF0dXMgPT0gRUZJX1ZPTFVNRV9DT1JSVVBURUQgJiYgUHJvYmxlbVBhcmFtICE9IE5VTEwpIHsN Cj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAt MSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BS T0JMRU0pLA0KPiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAg TCJhY3BpdmlldyIsDQo+ICsgICAgICAgIFByb2JsZW1QYXJhbQ0KPiArICAgICAgICApOw0KPiAr ICAgICAgRnJlZVBvb2wgKFByb2JsZW1QYXJhbSk7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAg IFByaW50IChMImFjcGl2aWV3OiBFcnJvciBwcm9jZXNzaW5nIGlucHV0IHBhcmFtZXRlcihzKVxu Iik7DQo+ICsgICAgfQ0KPiArICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRDb3VudCAo UGFja2FnZSkgPiAxKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAt MSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFu ZGxlLA0KPiArICAgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgICApOw0KPiArICAgICAgU2hl bGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2UgaWYgKFNo ZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi0/IikpIHsNCj4gKyAgICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAg TlVMTCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJRVcpLA0K PiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3Bpdmll dyINCj4gKyAgICAgICAgKTsNCj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRG bGFnIChQYWNrYWdlLCBMIi1zIikgJiYNCj4gKyAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExp bmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItcyIpID09IE5VTEwpIHsNCj4gKyAgICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVM TCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX05PX1ZBTFVFKSwNCj4gKyAgICAg ICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiAr ICAgICAgICBMIi1zIg0KPiArICAgICAgICApOw0KPiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVM TF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2UgaWYgKChTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFja2FnZSwgTCItcyIpICYmDQo+ICsgICAgICAgICAgICAgICAgU2hlbGxDb21t YW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWwiKSkpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRI aWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwN Cj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCj4gKyAgICAgICAg Z1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAg ICAgICk7DQo+ICsgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0K PiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWgi KSAmJg0KPiArICAgICAgICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdl LCBMIi1oIikgPT0gTlVMTCkgew0KPiArICAgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAg ICAgICAgIC0xLA0KPiArICAgICAgICAgIC0xLA0KPiArICAgICAgICAgIE5VTEwsDQo+ICsgICAg ICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX05PX1ZBTFVFKSwNCj4gKyAgICAgICAgICBnU2hl bGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAg ICAgICBMIi1oIg0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hF TExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFja2FnZSwgTCItZCIpICYmDQo+ICsgICAgICAgICAgICAgICAhU2hlbGxDb21t YW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSkgew0KPiArICAgICAgICBTaGVsbFByaW50 SGlpRXggKA0KPiArICAgICAgICAgIC0xLA0KPiArICAgICAgICAgIC0xLA0KPiArICAgICAgICAg IE5VTEwsDQo+ICsgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX01JU1NJTkdfT1BUSU9O KSwNCj4gKyAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgICBM ImFjcGl2aWV3IiwNCj4gKyAgICAgICAgICBMIi1zIiwNCj4gKyAgICAgICAgICBMIi1kIg0KPiAr ICAgICAgICAgICk7DQo+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJB TUVURVI7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIC8vIENoZWNrIGlmIHRoZSBjb2xvdXIg b3B0aW9uIGlzIHNldA0KPiArICAgICAgVGVtcCA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAo UGFja2FnZSwgTCItaCIpOw0KPiArICAgICAgaWYgKFRlbXAgIT0gTlVMTCkgew0KPiArICAgICAg ICBVbmljb2RlU3RyVG9Bc2NpaVN0clMgKFRlbXAsIENvbG91ck9wdGlvbiwgc2l6ZW9mIChDb2xv dXJPcHRpb24pKTsNCj4gKyAgICAgICAgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwg Ik9OIikgPT0gMCkgfHwNCj4gKyAgICAgICAgICAgIChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlv biwgIlRSVUUiKSA9PSAwKSkgew0KPiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAo VFJVRSk7DQo+ICsgICAgICAgIH0gZWxzZSBpZiAoKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9u LCAiT0ZGIikgPT0gMCkgfHwNCj4gKyAgICAgICAgICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChD b2xvdXJPcHRpb24sICJGQUxTRSIpID09IDApKSB7DQo+ICsgICAgICAgICAgU2V0Q29sb3VySGln aGxpZ2h0aW5nIChGQUxTRSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKw0KPiArICAg ICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1sIikpIHsNCj4gKyAg ICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX1RBQkxFX0xJU1Q7DQo+ICsgICAgICB9IGVsc2Ug ew0KPiArICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lID0gU2hlbGxDb21tYW5kTGluZUdl dFZhbHVlIChQYWNrYWdlLCBMIi1zIik7DQo+ICsgICAgICAgIGlmIChtU2VsZWN0ZWRBY3BpVGFi bGVOYW1lICE9IE5VTEwpIHsNCj4gKyAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGUgPSAoVUlO VDMyKUNvbnZlcnRTdHJUb0FjcGlTaWduYXR1cmUgKA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICAgICAgbVJlcG9ydFR5 cGUgPSBFUkVQT1JUX1NFTEVDVEVEOw0KPiArDQo+ICsgICAgICAgICAgaWYgKFNoZWxsQ29tbWFu ZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1kIikpICB7DQo+ICsgICAgICAgICAgICAvLyBDcmVh dGUgYSB0ZW1wb3JhcnkgZmlsZSB0byBjaGVjayBpZiB0aGUgbWVkaWEgaXMgd3JpdGFibGUuDQo+ ICsgICAgICAgICAgICBDSEFSMTYgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJTEVfTkFNRV9MRU5dOw0K PiArICAgICAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0RVTVBfQklOX0ZJTEU7DQo+ICsN Cj4gKyAgICAgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgICAgICAgICAgICBGaWxlTmFt ZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZlciksDQo+ICsg ICAgICAgICAgICAgIEwiLlxcJXMlMDRkLnRtcCIsDQo+ICsgICAgICAgICAgICAgIG1TZWxlY3Rl ZEFjcGlUYWJsZU5hbWUsDQo+ICsgICAgICAgICAgICAgIG1CaW5UYWJsZUNvdW50DQo+ICsgICAg ICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAgICAgICAgIFN0YXR1cyA9IFNoZWxsT3BlbkZpbGVC eU5hbWUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgJlRtcER1bXBGaWxlSGFuZGxlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICBFRklfRklMRV9NT0RFX1JFQUQgfCBFRklfRklMRV9NT0RFX1dSSVRFIHwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9DUkVBVEUsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiAr ICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICAgICAgICBT aGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgICAgICAgICAgICBU bXBEdW1wRmlsZUhhbmRsZSA9IE5VTEw7DQo+ICsgICAgICAgICAgICAgIFNoZWxsUHJpbnRIaWlF eCAoDQo+ICsgICAgICAgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgICAgICAgLTEsDQo+ICsg ICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNU Ul9HRU5fUkVBRE9OTFlfTUVESUEpLA0KPiArICAgICAgICAgICAgICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAgICAg ICAgICAgKTsNCj4gKyAgICAgICAgICAgICAgZ290byBEb25lOw0KPiArICAgICAgICAgICAgfQ0K PiArICAgICAgICAgICAgLy8gRGVsZXRlIFRlbXBvcmFyeSBmaWxlLg0KPiArICAgICAgICAgICAg U2hlbGxEZWxldGVGaWxlICgmVG1wRHVtcEZpbGVIYW5kbGUpOw0KPiArICAgICAgICAgIH0gLy8g LWQNCj4gKyAgICAgICAgfSAvLyAtcw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICAvLyBQYXJz ZSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uDQo+ICsgICAgICBTdGF0dXMgPSBBY3BpVmlldyAoU3lz dGVtVGFibGUpOw0KPiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAg ICBTaGVsbFN0YXR1cyA9IFNIRUxMX05PVF9GT1VORDsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ ICsgIH0NCj4gKw0KPiArRG9uZToNCj4gKyAgaWYgKFBhY2thZ2UgIT0gTlVMTCkgew0KPiArICAg IFNoZWxsQ29tbWFuZExpbmVGcmVlVmFyTGlzdCAoUGFja2FnZSk7DQo+ICsgIH0NCj4gKyAgcmV0 dXJuIFNoZWxsU3RhdHVzOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaCBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u MDM1NjFlYTgxNjg2ODIxZTM3YzA1ZDkwZjA1MzczMWZkZTYzZmJiNQ0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlWaWV3LmgNCj4gQEAgLTAsMCArMSwxMDMgQEANCj4gKy8qKg0KPiArICBIZWFkZXIgZmlsZSBm b3IgQWNwaVZpZXcNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBBQ1BJVklFV19IXw0KPiAr I2RlZmluZSBBQ1BJVklFV19IXw0KPiArDQo+ICsvKiogQSBtYWNybyB0byBkZWZpbmUgdGhlIG1h eCBmaWxlIG5hbWUgbGVuZ3RoDQo+ICsqLw0KPiArI2RlZmluZSBNQVhfRklMRV9OQU1FX0xFTiAg ICAxMjgNCj4gKw0KPiArLyoqIE9mZnNldCB0byB0aGUgUlNEUCByZXZpc2lvbiBmcm9tIHRoZSBz dGFydCBvZiB0aGUgUlNEUA0KPiArKi8NCj4gKyNkZWZpbmUgUlNEUF9SRVZJU0lPTl9PRkZTRVQg MTUNCj4gKw0KPiArLyoqIE9mZnNldCB0byB0aGUgUlNEUCBsZW5ndGggZnJvbSB0aGUgc3RhcnQg b2YgdGhlIFJTRFANCj4gKyovDQo+ICsjZGVmaW5lIFJTRFBfTEVOR1RIX09GRlNFVCAgIDIwDQo+ ICsNCj4gKy8qKiBUaGUgRVJFUE9SVF9PUFRJT04gZW51bSBkZXNjcmliZXMgQUNQSSB0YWJsZSBS ZXBvcnRpbmcgb3B0aW9ucy4NCj4gKyovDQo+ICt0eXBlZGVmIGVudW0gUmVwb3J0T3B0aW9uIHsN Cj4gKyAgRVJFUE9SVF9BTEwsICAgICAgICAgICAgLy8vPCBSZXBvcnQgQWxsIHRhYmxlcy4NCj4g KyAgRVJFUE9SVF9TRUxFQ1RFRCwgICAgICAgLy8vPCBSZXBvcnQgU2VsZWN0ZWQgdGFibGUuDQo+ ICsgIEVSRVBPUlRfVEFCTEVfTElTVCwgICAgIC8vLzwgUmVwb3J0IExpc3Qgb2YgdGFibGVzLg0K PiArICBFUkVQT1JUX0RVTVBfQklOX0ZJTEUsICAvLy88IER1bXAgc2VsZWN0ZWQgdGFibGUgdG8g YSBmaWxlLg0KPiArICBFUkVQT1JUX01BWA0KPiArfSBFUkVQT1JUX09QVElPTjsNCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIgdG8g WmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtSZXNldEVycm9yQ291bnQgKA0KPiArICBWT0lEDQo+ ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUg ZXJyb3IgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiBlcnJv cnMgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArR2V0 RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlciB0byBaZXJvLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK1Jlc2V0V2FybmluZ0NvdW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291 bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVj dGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0dldFdhcm5pbmdD b3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4gKyAgQHJldHZhbCBU UlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gKyovDQo+ICtCT09MRUFO DQo+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0K PiArDQo+ICsqLw0KPiArVk9JRA0KPiArU2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgQk9P TEVBTiBIaWdobGlnaHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vz c2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0aW9ucyBmb3IgdGhlIEFDUEkgdGFibGUuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCj4g KyAgQHBhcmFtIFtpbl0gVGFibGVQdHIgIFBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGggZm8gdGhlIEFDUEkgdGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxk IGJlIHRyYWNlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRp b25zICgNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBTaWduYXR1cmUsDQo+ICsgIElOIENPTlNUIFVJ TlQ4KiAgVGFibGVQdHIsDQo+ICsgIElOIENPTlNUIFVJTlQzMiAgTGVuZ3RoDQo+ICsgICk7DQo+ ICsNCj4gKyNlbmRpZiAvLyBBQ1BJVklFV19IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIu YyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv QmdydC9CZ3J0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIzZjlhNzkwMTJhOTdkMDNkODhl YjNlMTYwYjc3ZDg2OWZjZTM5NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2Vy LmMNCj4gQEAgLTAsMCArMSw2OSBAQA0KPiArLyoqDQo+ICsgIEJHUlQgdGFibGUgcGFyc2VyDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lm aWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxl UGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElfREVT Q1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEJEUlQgVGFibGUuDQo+ICsqLw0KPiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIEJncnRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9I RUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIlZlcnNpb24iLCAyLCAzNiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlN0YXR1cyIsIDEsIDM4LCBMIjB4JXgi LCBOVUxMLCAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkltYWdlIFR5cGUiLCAxLCAzOSwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkltYWdlIEFkZHJlc3Mi LCA4LCA0MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFn ZSBPZmZzZXQgWCIsIDQsIDQ4LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkltYWdlIE9mZnNldCBZIiwgNCwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEJHUlQg dGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQkdSVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUJncnQgKA0KPiAr ICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMy ICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4g KyAgKQ0KPiArew0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUcmFjZSwNCj4gKyAgICAwLA0KPiArICAgICJC R1JUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNF Ul9QQVJBTVMgKEJncnRQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9E YmcyUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MGExMzI4Y2M5 NzY1NmY1ZDY1MWViMDFlODBkZjMyMzYyOTFhNGENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIv RGJnMlBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMjQyIEBADQo+ICsvKioNCj4gKyAgREJHMiB0YWJs ZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBNaWNy b3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBTcGVjaWZpY2F0aW9uIC0gRGVjZW1iZXIg MTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVi dWdQb3J0MlRhYmxlLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5j bHVkZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiAr DQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMgcG9pbnRpbmcgdG8gdGhlIHRhYmxlIGZpZWxkcw0KPiAr U1RBVElDIENPTlNUIFVJTlQzMiogT2Zmc2V0RGJnRGV2aWNlSW5mbzsNCj4gK1NUQVRJQyBDT05T VCBVSU5UMzIqIE51bWJlckRiZ0RldmljZUluZm87DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBE YmdEZXZJbmZvTGVuOw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiAgR2FzQ291bnQ7DQo+ICtTVEFU SUMgQ09OU1QgVUlOVDE2KiBOYW1lU3BhY2VTdHJpbmdMZW5ndGg7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDE2KiBOYW1lU3BhY2VTdHJpbmdPZmZzZXQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBP RU1EYXRhTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogT0VNRGF0YU9mZnNldDsNCj4g K1NUQVRJQyBDT05TVCBVSU5UMTYqIEJhc2VBZGRyUmVnT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNU IFVJTlQxNiogQWRkclNpemVPZmZzZXQ7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFE RVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gVmFsaWRhdGVz IHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0aC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgNCj4gKyAgSU4gIFVJTlQ4KiBQdHIsDQo+ICsgIElO ICBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g KyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgUG9pbnRlciBpbiB3aGljaCB0aGUgbGVuZ3RoIG9mIHRo ZSBkZWJ1Zw0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgaW5mb3JtYXRpb24gaXMg cmV0dXJuZWQuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBE YmdEZXZpY2VJbmZvICgNCj4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0KPiArICBPVVQgVUlOVDMyKiBM ZW5ndGgNCj4gKyAgKTsNCj4gKw0KPiArLy8vIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmcy UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiAr ICB7TCJPZmZzZXREYmdEZXZpY2VJbmZvIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAo Vk9JRCoqKSZPZmZzZXREYmdEZXZpY2VJbmZvLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTnVtYmVy RGJnRGV2aWNlSW5mbyIsIDQsIDQwLCBMIiVkIiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJk51bWJl ckRiZ0RldmljZUluZm8sIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvLy8gQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uLg0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIERiZ0RldkluZm9QYXJzZXJbXSA9IHsNCj4gKyAge0wi UmV2aXNpb24iLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIChWT0lEKiopJkRiZ0RldkluZm9MZW4sIE5V TEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIkdlbmVyaWMgQWRkcmVzcyBSZWdpc3RlcnMgQ291bnQi LCAxLCAzLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR2FzQ291bnQsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJOYW1lU3BhY2UgU3RyaW5nIExlbmd0aCIsIDIsIDQsIEwiJWQiLCBOVUxM LA0KPiArICAgKFZPSUQqKikmTmFtZVNwYWNlU3RyaW5nTGVuZ3RoLCBWYWxpZGF0ZU5hbWVTcGFj ZVN0ckxlbiwgTlVMTH0sDQo+ICsgIHtMIk5hbWVTcGFjZSBTdHJpbmcgT2Zmc2V0IiwgMiwgNiwg TCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJk5hbWVTcGFjZVN0cmluZ09mZnNldCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIk9FTSBEYXRhIExlbmd0aCIsIDIsIDgsIEwiJWQiLCBOVUxMLCAo Vk9JRCoqKSZPRU1EYXRhTGVuZ3RoLA0KPiArICAgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk9FTSBE YXRhIE9mZnNldCIsIDIsIDEwLCBMIjB4JXgiLCBOVUxMLCAoVk9JRCoqKSZPRU1EYXRhT2Zmc2V0 LA0KPiArICAgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUG9ydCBUeXBlIiwgMiwgMTIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQb3J0IFN1YlR5cGUiLCAy LCAxNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVk IiwgMiwgMTYsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJC YXNlIEFkZHJlc3MgUmVnaXN0ZXIgT2Zmc2V0IiwgMiwgMTgsIEwiMHgleCIsIE5VTEwsDQo+ICsg ICAoVk9JRCoqKSZCYXNlQWRkclJlZ09mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFkZHJl c3MgU2l6ZSBPZmZzZXQiLCAyLCAyMCwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJkFk ZHJTaXplT2Zmc2V0LCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gdmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5nIGxlbmd0aC4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0 aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRl ciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgNCj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgTmFt ZVNwYWNlU3RyTGVuID0gKihVSU5UMTYqKVB0cjsNCj4gKyAgaWYgKE5hbWVTcGFjZVN0ckxlbiA8 IDIpIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4g KyAgICAgIEwiXG5FUlJPUjogTmFtZXNwYWNlU3RyaW5nIExlbmd0aCA9ICVkLiBJZiBubyBOYW1l c3BhY2UgZGV2aWNlIGV4aXN0cyxcbiINCj4gKyAgICAgICAiICAgIHRoZW4gTmFtZXNwYWNlU3Ry aW5nW10gbXVzdCBjb250YWluIGEgcGVyaW9kICcuJyIsDQo+ICsgICAgICBOYW1lU3BhY2VTdHJM ZW4NCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsgIEBwYXJhbSBbb3V0XSBQdHIgICAgIFBvaW50ZXIgaW4gd2hpY2ggdGhlIGxlbmd0aCBv ZiB0aGUgZGVidWcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGluZm9ybWF0aW9u IGlzIHJldHVybmVkLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtE dW1wRGJnRGV2aWNlSW5mbyAoDQo+ICsgIElOICBVSU5UOCogIFB0ciwNCj4gKyAgT1VUIFVJTlQz MiogTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDE2ICBJbmRleDsNCj4gKyAgVUlOVDgq ICBEYXRhUHRyOw0KPiArICBVSU5UMzIqIEFkZHJTaXplOw0KPiArDQo+ICsgIC8vIFBhcnNlIHRo ZSBkZWJ1ZyBkZXZpY2UgaW5mbyB0byBnZXQgdGhlIExlbmd0aA0KPiArICBQYXJzZUFjcGkgKA0K PiArICAgIEZBTFNFLA0KPiArICAgIDAsDQo+ICsgICAgIkRlYnVnIERldmljZSBJbmZvIiwNCj4g KyAgICBQdHIsDQo+ICsgICAgMywgIC8vIExlbmd0aCBpcyAyIGJ5dGVzIHN0YXJ0aW5nIGF0IG9m ZnNldCAxDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoRGJnRGV2SW5mb1BhcnNlcikNCj4gKyAgICAp Ow0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAg ICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ICsgICAgUHRyLA0KPiArICAgICpEYmdEZXZJbmZvTGVu LA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ICsgICAgKTsNCj4g Kw0KPiArICAvLyBHQVMgYW5kIEFkZHJlc3MgU2l6ZQ0KPiArICBJbmRleCA9IDA7DQo+ICsgIERh dGFQdHIgPSBQdHIgKyAoKkJhc2VBZGRyUmVnT2Zmc2V0KTsNCj4gKyAgQWRkclNpemUgPSAoVUlO VDMyKikoUHRyICsgKCpBZGRyU2l6ZU9mZnNldCkpOw0KPiArICB3aGlsZSAoSW5kZXggPCAoKkdh c0NvdW50KSkgew0KPiArICAgIFByaW50RmllbGROYW1lICg0LCBMIkJhc2VBZGRyZXNzUmVnaXN0 ZXIiKTsNCj4gKyAgICBEdW1wR2FzU3RydWN0IChEYXRhUHRyLCA0KTsNCj4gKyAgICBQcmludEZp ZWxkTmFtZSAoNCwgTCJBZGRyZXNzIFNpemUiKTsNCj4gKyAgICBQcmludCAoTCIweCV4XG4iLCBB ZGRyU2l6ZVtJbmRleF0pOw0KPiArICAgIERhdGFQdHIgKz0gR0FTX0xFTkdUSDsNCj4gKyAgICBJ bmRleCsrOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gTmFtZVNwYWNlIFN0cmluZw0KPiArICBJbmRl eCA9IDA7DQo+ICsgIERhdGFQdHIgPSBQdHIgKyAoKk5hbWVTcGFjZVN0cmluZ09mZnNldCk7DQo+ ICsgIFByaW50RmllbGROYW1lICg0LCBMIk5hbWVTcGFjZSBTdHJpbmciKTsNCj4gKyAgd2hpbGUg KEluZGV4IDwgKCpOYW1lU3BhY2VTdHJpbmdMZW5ndGgpKSB7DQo+ICsgICAgUHJpbnQgKEwiJWMi LCBEYXRhUHRyW0luZGV4KytdKTsNCj4gKyAgfQ0KPiArICBQcmludCAoTCJcbiIpOw0KPiArDQo+ ICsgIC8vIE9FTSBEYXRhDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgRGF0YVB0ciA9IFB0ciArICgq T0VNRGF0YU9mZnNldCk7DQo+ICsgIFByaW50RmllbGROYW1lICg0LCBMIk9FTSBEYXRhIik7DQo+ ICsgIHdoaWxlIChJbmRleCA8ICgqT0VNRGF0YUxlbmd0aCkpIHsNCj4gKyAgICBQcmludCAoTCIl eCAiLCBEYXRhUHRyW0luZGV4KytdKTsNCj4gKyAgICBpZiAoKEluZGV4ICYgNykgPT0gMCkgew0K PiArICAgICAgUHJpbnQgKEwiXG4lLSpzICAgIiwgT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCwg TCIiKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAqTGVuZ3RoID0gKkRiZ0RldkluZm9M ZW47DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBEQkcy IHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIERCRzIgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAg ICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkg dGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlEYmcyICgNCj4g KyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQz MiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIERiZ0RldmljZUlu Zm9MZW5ndGg7DQo+ICsgIFVJTlQ4KiBEZXZJbmZvUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2Up IHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAg ICAgICAiREJHMiIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlU YWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChEYmcyUGFyc2VyKQ0K PiArICAgICAgICAgICAgICk7DQo+ICsgIERldkluZm9QdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsN Cj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAgIER1bXBEYmdE ZXZpY2VJbmZvICgNCj4gKyAgICAgIERldkluZm9QdHIsDQo+ICsgICAgICAmRGJnRGV2aWNlSW5m b0xlbmd0aA0KPiArICAgICAgKTsNCj4gKyAgICBPZmZzZXQgKz0gRGJnRGV2aWNlSW5mb0xlbmd0 aDsNCj4gKyAgICBEZXZJbmZvUHRyICs9IERiZ0RldmljZUluZm9MZW5ndGg7DQo+ICsgIH0NCj4g K30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmVmNDU5YTEyMDk5Y2FlODg4Njc2MTIzZThkNTY5NDYwZmQ2ODRkYjINCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsNDcgQEANCj4g Ky8qKg0KPiArICBEU0RUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAx NiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5j ZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVt YmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3Bp Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBh cnNlci5oIg0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBp cyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiArICB0 cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArICBGb3IgdGhlIERTRFQgdGFibGUgb25s eSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZSBwYXJzZWQgYW5kDQo+ICsgIHRyYWNlZC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpRHNkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlm ICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQWNwaUhl YWRlciAoUHRyKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMgYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBh cnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkY2NiMmFjM2JkNzY5OGJiZTFjZTA2Nzk2NGJlNTM1 MTk4MTNkYjENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQo+IEBAIC0w LDAgKzEsMjYxIEBADQo+ICsvKioNCj4gKyAgRkFEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4g KyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0g RXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAr I2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCIN Cj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBEc2R0 QWRkcmVzczsNCj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhfRHNkdEFkZHJlc3M7DQo+ICtTVEFU SUMgQ09OU1QgVUlOVDgqICBGYWR0TWlub3JSZXZpc2lvbjsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NS SVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQSBtYWNybyBkZWZp bmluZyB0aGUgSGFyZHdhcmUgcmVkdWNlZCBBQ1BJIGZsYWcNCj4gKyovDQo+ICsjZGVmaW5lIEhX X1JFRFVDRURfQUNQSSAgIEJJVDIwDQo+ICsNCj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zDQo+ ICtDT05TVCBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiArRUZJQVBJDQo+ ICtHZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiArICBWT0lEDQo+ICspOw0KPiArDQo+ICtTVEFU SUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVGaXJtd2FyZUN0cmwgKA0KPiArICBJ TiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspOw0KPiArDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVGbGFncyAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspOw0KPiArDQo+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBGQURUIFRhYmxlLg0KPiArKi8N Cj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBGYWR0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNF X0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJGSVJNV0FSRV9DVFJMIiwgNCwg MzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlRmlybXdhcmVDdHJsLCBOVUxMfSwNCj4g KyAge0wiRFNEVCIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCAoVk9JRCoqKSZEc2R0QWRkcmVzcywg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgNDQsIEwiJXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUHJlZmVycmVkX1BNX1Byb2ZpbGUiLCAxLCA0NSwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNDSV9JTlQiLCAyLCA0Niwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNSV9DTUQiLCA0LCA0 OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFDUElfRU5BQkxF IiwgMSwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJ X0RJU0FCTEUiLCAxLCA1MywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlM0QklPU19SRVEiLCAxLCA1NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBTVEFURV9DTlQiLCAxLCA1NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlBNMWFfRVZUX0JMSyIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0xYl9FVlRfQkxLIiwgNCwgNjAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFhX0NOVF9CTEsiLCA0LCA2NCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNMWJfQ05UX0JMSyIsIDQs IDY4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0yX0NOVF9C TEsiLCA0LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBN X1RNUl9CTEsiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkdQRTBfQkxLIiwgNCwgODAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJHUEUxX0JMSyIsIDQsIDg0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUE0xX0VWVF9MRU4iLCAxLCA4OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBNMV9DTlRfTEVOIiwgMSwgODksIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTJfQ05UX0xFTiIsIDEsIDkwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE1fVE1SX0xFTiIsIDEsIDkxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMF9CTEtfTEVOIiwgMSwg OTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHUEUxX0JMS19M RU4iLCAxLCA5MywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQ RTFfQkFTRSIsIDEsIDk0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQ1NUX0NOVCIsIDEsIDk1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUF9MVkwyX0xBVCIsIDIsIDk2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUF9MVkwzX0xBVCIsIDIsIDk4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiRkxVU0hfU0laRSIsIDIsIDEwMCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZMVVNIX1NUUklERSIsIDIsIDEwMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRVVFlfT0ZGU0VUIiwgMSwgMTA0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRFVUWV9XSURUSCIsIDEs IDEwNSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRBWV9BTFJN IiwgMSwgMTA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTU9O X0FMUk0iLCAxLCAxMDcsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJDRU5UVVJZIiwgMSwgMTA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiSUFQQ19CT09UX0FSQ0giLCAyLCAxMDksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEsIDExMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTEyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBWYWxpZGF0ZUZsYWdzLCBOVUxMfSwNCj4gKyAge0wiUkVTRVRfUkVHIiwgMTIsIDExNiwgTlVM TCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJFU0VUX1ZBTFVFIiwgMSwg MTI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQVJNX0JPT1Rf QVJDSCIsIDIsIDEyOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IkZBRFQgTWlub3IgVmVyc2lvbiIsIDEsIDEzMSwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRmFk dE1pbm9yUmV2aXNpb24sDQo+ICsgICAgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfRklSTVdBUkVf Q1RSTCIsIDgsIDEzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ICsgICAgVmFsaWRhdGVYRmly bXdhcmVDdHJsLCBOVUxMfSwNCj4gKyAge0wiWF9EU0RUIiwgOCwgMTQwLCBMIjB4JWx4IiwgTlVM TCwgKFZPSUQqKikmWF9Ec2R0QWRkcmVzcywgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0xYV9F VlRfQkxLIiwgMTIsIDE0OCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlhfUE0xYl9FVlRfQkxLIiwgMTIsIDE2MCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlhfUE0xYV9DTlRfQkxLIiwgMTIsIDE3MiwgTlVMTCwgRHVtcEdhcywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0xYl9DTlRfQkxLIiwgMTIsIDE4NCwgTlVM TCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0yX0NOVF9CTEsiLCAx MiwgMTk2LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTV9U TVJfQkxLIiwgMTIsIDIwOCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlhfR1BFMF9CTEsiLCAxMiwgMjIwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiWF9HUEUxX0JMSyIsIDEyLCAyMzIsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJTTEVFUF9DT05UUk9MX1JFRyIsIDEyLCAyNDQsIE5VTEwsIER1 bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTEVFUF9TVEFUVVNfUkVHIiwgMTIs IDI1NiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkh5cGVydmlz b3IgVmVuZG9ySWRlbnRpdHkiLCA4LCAyNjgsIEwiJWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgRmlybXdh cmUgQ29udHJvbCBGaWVsZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0 IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0 ZUZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250 ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQg KE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiArICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVS Uk9SOiBGaXJtd2FyZSBDb250cm9sIG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ ICsgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHZhbGlkYXRlcyB0aGUgWF9GaXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVmaW5l ZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYgKCoo VUlOVDY0KilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsg ICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBYIEZpcm13YXJlIENvbnRyb2wgbXVzdCBi ZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiINCj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYN Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBmbGFncy4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBz cGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NU QVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUZsYWdzICgNCj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKykNCj4gK3sNCj4gKyNpZiBkZWZp bmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICBpZiAo KCgqKFVJTlQzMiopUHRyKSAmIEhXX1JFRFVDRURfQUNQSSkgPT0gMCkgew0KPiArICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBI V19SRURVQ0VEX0FDUEkgZmxhZyBtdXN0IGJlIHNldCBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsg ICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgQUNQSSBGQURUIHRhYmxlLg0KPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgRkFEVCB0YWJsZSBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkNCj4gKyAgdGFibGUg ZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9u IG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAg ICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3Bp RmFkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiAr ICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4KiAgRHNkdFB0cjsNCj4gKw0KPiArICBQ YXJzZUFjcGkgKA0KPiArICAgIFRyYWNlLA0KPiArICAgIDAsDQo+ICsgICAgIkZBRFQiLA0KPiAr ICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAo RmFkdFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmIChUcmFjZSkgew0KPiArICAgIFBy aW50IChMIlxuU3VtbWFyeTpcbiIpOw0KPiArICAgIFByaW50RmllbGROYW1lICgyLCBMIkZBRFQg VmVyc2lvbiIpOw0KPiArICAgIFByaW50IChMIiVkLiVkXG4iLCAgKkFjcGlIZHJJbmZvLlJldmlz aW9uLCAqRmFkdE1pbm9yUmV2aXNpb24pOw0KPiArDQo+ICsgICAgaWYgKCpHZXRBY3BpWHNkdEhl YWRlckluZm8gKCktPk9lbVRhYmxlSWQgIT0gKkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCj4g KyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjog T0VNIFRhYmxlIElkIGRvZXMgbm90IG1hdGNoIHdpdGggUlNEVC9YU0RULlxuIik7DQo+ICsgICAg fQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gSWYgWF9EU0RUIGlzIG5vdCB6ZXJvIHRoZW4gdXNlIFhf RFNEVCBhbmQgaWdub3JlIERTRFQsDQo+ICsgIC8vIGVsc2UgdXNlIERTRFQuDQo+ICsgIGlmICgq WF9Ec2R0QWRkcmVzcyAhPSAwKSB7DQo+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgq WF9Ec2R0QWRkcmVzcyk7DQo+ICsgIH0gZWxzZSBpZiAoKkRzZHRBZGRyZXNzICE9IDApIHsNCj4g KyAgICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpEc2R0QWRkcmVzcyk7DQo+ICsgIH0gZWxz ZSB7DQo+ICsgICAgLy8gQm90aCBEU0RUIGFuZCBYX0RTRFQgY2Fubm90IGJlIHplcm8uDQo+ICsj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4g KyAgICBpZiAoVHJhY2UpIHsNCj4gKyAgICAgIC8vIFRoZSBEU0RUIFRhYmxlIGlzIG1hbmRhdG9y eSBmb3IgQVJNIHN5c3RlbXMNCj4gKyAgICAgIC8vIGFzIHRoZSBDUFUgaW5mb3JtYXRpb24gTVVT VCBiZSBwcmVzZW50ZWQgaW4NCj4gKyAgICAgIC8vIHRoZSBEU0RULg0KPiArICAgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50IChMIkVSUk9SOiBCb3RoIFhfRFNEVCBh bmQgRFNEVCBhcmUgTlVMTC5cbiIpOw0KPiArICAgIH0NCj4gKyNlbmRpZg0KPiArICAgIHJldHVy bjsNCj4gKyAgfQ0KPiArDQo+ICsgIFByb2Nlc3NBY3BpVGFibGUgKERzZHRQdHIpOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uY2U5NjYwNGVlNmY4MDBhZGZiZDg2MTY5MWZmYTcwOTNiOWJkODIzOQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwyOTMgQEANCj4gKy8q Kg0KPiArICBHVERUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAt IDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0Qg TGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJ UywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShz KToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVy IDIwMTcNCj4gKyAgKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGku aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFy c2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2Fs IHZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RkdFBsYXRmb3JtVGltZXJDb3Vu dDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyT2Zmc2V0Ow0KPiAr U1RBVElDIENPTlNUIFVJTlQ4KiAgUGxhdGZvcm1UaW1lclR5cGU7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDE2KiBQbGF0Zm9ybVRpbWVyTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RC bG9ja1RpbWVyQ291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZz ZXQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBHdEJsb2NrTGVuZ3RoOw0KPiArU1RBVElDIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUg YSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4g K1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFibGUuDQo+ ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0ZHRQYXJzZXJbXSA9IHsNCj4gKyAg UEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkNudENvbnRyb2xCYXNl IFBoeXNpY2FsIEFkZHJlc3MiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ICsgICBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgR1NJViIsIDQsIDQ4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2VjdXJlIEVMMSB0aW1l ciBGTEFHUyIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0K PiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNTYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBGTEFHUyIs IDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJW aXJ0dWFsIHRpbWVyIEdTSVYiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlZpcnR1YWwgdGltZXIgRkxBR1MiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGltZXIgR1NJ ViIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTm9u LVNlY3VyZSBFTDIgdGltZXIgRkxBR1MiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiQ250UmVhZEJhc2UgUGh5c2ljYWwgYWRkcmVzcyIsIDgs IDgwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBsYXRmb3Jt IFRpbWVyIENvdW50IiwgNCwgODgsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR3RkdFBs YXRmb3JtVGltZXJDb3VudCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIE9m ZnNldCIsIDQsIDkyLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3Jt VGltZXJPZmZzZXQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gdGltZXIgaGVhZGVyLg0KPiArKi8NCj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXJbXSA9 IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlBsYXRmb3JtVGlt ZXJUeXBlLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTlVMTCwgTlVMTCwg KFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgMSwgMywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBHVCBCbG9j ay4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1BhcnNlcltdID0g ew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja0xlbmd0 aCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRDdGxCYXNlKSIs IDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVGltZXIg Q291bnQiLCA0LCAxMiwgTCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tUaW1lckNvdW50LA0K PiArICAgVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ICsgIHtMIlRpbWVyIE9m ZnNldCIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyT2Zmc2V0LCBO VUxMLA0KPiArICAgIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgR1QgQmxvY2sgdGltZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIEd0QmxvY2tUaW1lclBhcnNlcltdID0gew0KPiArICB7TCJGcmFtZSBOdW1i ZXIiLCAxLCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgMywgMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRCYXNlWCkiLCA4LCA0LCBMIjB4JWx4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEVMMEJh c2VYKSIsIDgsIDEyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgICBOVUxMfSwN Cj4gKyAge0wiUGh5c2ljYWwgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZpcnR1YWwgVGltZXIgR1NJ ViIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVmly dHVhbCBUaW1lciBGbGFncyIsIDQsIDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiQ29tbW9uIEZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFNCU0FHZW5lcmljV2F0Y2hkb2dQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEs IDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwg MSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEs IDMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmcmVzaEZyYW1l IFBoeXNpY2FsIGFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkNvbnRyb2xGcmFtZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgMTIsIEwiMHgl bHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgR1NJ ViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiV2F0 Y2hkb2cgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgR1QgQmxv Y2sgdGltZXIgY291bnQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQ b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVH dEJsb2NrVGltZXJDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBD b250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEJsb2NrVGltZXJDb3VudCA9ICooVUlO VDMyKilQdHI7DQo+ICsgIGlmIChCbG9ja1RpbWVyQ291bnQgPiA4KSB7DQo+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFRp bWVyIENvdW50ID0gJWQuIE1heCBUaW1lciBDb3VudCBpcyA4LiIsDQo+ICsgICAgICBCbG9ja1Rp bWVyQ291bnQNCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBHVCBCbG9jayBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBMZW5ndGggIExlbmd0aCBvZiB0aGUgR1QgQmxvY2sgc3RydWN0dXJlLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcEdUQmxvY2sgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMy IEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMTYgR1RCbG9ja1RpbWVyTGVu Z3RoOw0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJV RSwNCj4gKyAgICAgICAgICAgICAyLA0KPiArICAgICAgICAgICAgICJHVCBCbG9jayIsDQo+ICsg ICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsg IEdUQmxvY2tUaW1lckxlbmd0aCA9ICgqR3RCbG9ja0xlbmd0aCAtIE9mZnNldCkgLyAoKkd0Qmxv Y2tUaW1lckNvdW50KTsNCj4gKyAgTGVuZ3RoIC09IE9mZnNldDsNCj4gKw0KPiArICBpZiAoKkd0 QmxvY2tUaW1lckNvdW50ICE9IDApIHsNCj4gKyAgICBQdHIgKz0gKCpHdEJsb2NrVGltZXJPZmZz ZXQpOw0KPiArICAgIEluZGV4ID0gMDsNCj4gKyAgICB3aGlsZSAoKEluZGV4IDwgKCpHdEJsb2Nr VGltZXJDb3VudCkpICYmIChMZW5ndGggPj0gR1RCbG9ja1RpbWVyTGVuZ3RoKSkgew0KPiArICAg ICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAg ICAgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwN Cj4gKyAgICAgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgICAgICBHVEJsb2NrVGlt ZXJMZW5ndGgsDQo+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1l clBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgIC8vIEluY3JlbWVudCBi eSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUgc2l6ZQ0KPiArICAgICAgUHRyICs9IE9mZnNldDsN Cj4gKyAgICAgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIGlmIChMZW5ndGggIT0gMCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgTCJFUlJPUjpHVCBCbG9jayBU aW1lciBsZW5ndGggbWlzbWF0Y2guIFVucGFyc2VkICVkIGJ5dGVzLlxuIiwNCj4gKyAgICAgICAg TGVuZ3RoDQo+ICsgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgd2F0 Y2hkb2cgdGltZXIgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhl IHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4g K0R1bXBXYXRjaGRvZ1RpbWVyICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2 IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4g KyAgICAyLA0KPiArICAgICJTQlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0KPiArICAgIFB0ciwNCj4g KyAgICBMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1Bh cnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgR1REVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIGZvbGxv d2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1cmVzOg0KPiArICAgIC0gR1QgQmxvY2sgdGltZXIN Cj4gKyAgICAtIFdhdGNoZG9nIHRpbWVyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBl cmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVs ZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAg TGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJ QVBJDQo+ICtQYXJzZUFjcGlHdGR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4g VUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBV SU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4 Ow0KPiArICBVSU5UOCogVGltZXJQdHI7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAg IHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4g KyAgICAwLA0KPiArICAgICJHVERUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVu Z3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEd0ZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0K PiArICBpZiAoKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQgIT0gMCkgew0KPiArICAgIFRpbWVyUHRy ID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNldCk7DQo+ICsgICAgSW5kZXggPSAwOw0K PiArICAgIGRvIHsNCj4gKyAgICAgIC8vIFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXIN Cj4gKyAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAwLA0K PiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBUaW1lclB0ciwNCj4gKyAgICAgICAgNCwgIC8v IEdUIFBsYXRmb3JtIFRpbWVyIHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0KPiArICAgICAgICBQ QVJTRVJfUEFSQU1TIChHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICk7 DQo+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9ybVRpbWVyVHlwZSkgew0KPiArICAgICAgICBjYXNl IEVGSV9BQ1BJXzZfMl9HVERUX0dUX0JMT0NLOg0KPiArICAgICAgICAgIER1bXBHVEJsb2NrIChU aW1lclB0ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX1NCU0FfR0VORVJJQ19XQVRDSERPRzoNCj4g KyAgICAgICAgICBEdW1wV2F0Y2hkb2dUaW1lciAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVu Z3RoKTsNCj4gKyAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICAgIFByaW50ICgNCj4gKyAg ICAgICAgICAgIEwiRVJST1I6IElOVkFMSUQgUGxhdGZvcm0gVGltZXIgVHlwZSA9ICVkXG4iLA0K PiArICAgICAgICAgICAgKlBsYXRmb3JtVGltZXJUeXBlDQo+ICsgICAgICAgICAgICApOw0KPiAr ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgfSAvLyBzd2l0Y2gNCj4gKyAgICAgIFRpbWVyUHRy ICs9ICgqUGxhdGZvcm1UaW1lckxlbmd0aCk7DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0g d2hpbGUgKEluZGV4IDwgKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQpOw0KPiArICB9DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi41MDNhNzQ1NzE4ZDIzMDgyYzdiYzRiMGJjOTIwMzU1YTgzOWZjODk1DQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDcwMCBAQA0KPiArLyoq DQo+ICsgIElPUlQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBM aWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMp Og0KPiArICAgIC0gSU8gUmVtYXBwaW5nIFRhYmxlLCBQbGF0Zm9ybSBEZXNpZ24gRG9jdW1lbnQs IFJldmlzaW9uIEMsIDE1IE1heSAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvSW9SZW1hcHBpbmdUYWJsZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJp bnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlICJB Y3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8v IExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8g QWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGUgRUlPUlRfTk9ERSBlbnVtIGRlc2NyaWJlcyB0 aGUgSU9SVCBOb2RlIHR5cGVzLg0KPiArKi8NCj4gK3R5cGVkZWYgZW51bSBJb3J0Tm9kZSB7DQo+ ICsgIEVJT1JUX05PREVfSVRTX0dST1VQLCAgICAgICAgLy8vPCBJVFMgR3JvdXAgbm9kZQ0KPiAr ICBFSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCwgIC8vLzwgTmFtZWQgQ29tcG9uZW50IG5vZGUN Cj4gKyAgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVgsICAgICAvLy88IFJvb3QgQ29tcGxleCBub2Rl DQo+ICsgIEVJT1JUX05PREVfU01NVVYxX1YyLCAgICAgICAgLy8vPCBTTU1VIHYxL3YyIG5vZGUN Cj4gKyAgRUlPUlRfTk9ERV9TTU1VVjMsICAgICAgICAgICAvLy88IFNNTVUgdjMgbm9kZQ0KPiAr ICBFSU9SVF9OT0RFX1BNQ0csICAgICAgICAgICAgIC8vLzwgUE1DIGdyb3VwIG5vZGUNCj4gKyAg RUlPUlRfTk9ERV9NQVgNCj4gK30gRUlPUlRfTk9ERTsNCj4gKw0KPiArLy8gTG9jYWwgVmFyaWFi bGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZUNvdW50Ow0KPiArU1RBVElDIENP TlNUIFVJTlQzMiogSW9ydE5vZGVPZmZzZXQ7DQo+ICsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCog SW9ydE5vZGVUeXBlOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogSW9ydE5vZGVMZW5ndGg7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nQ291bnQ7DQo+ICtTVEFUSUMgQ09O U1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nT2Zmc2V0Ow0KPiArDQo+ICtTVEFUSUMgQ09OU1QgVUlO VDMyKiBJbnRlcnJ1cHRDb250ZXh0Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJbnRl cnJ1cHRDb250ZXh0T2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogUG11SW50ZXJydXB0 Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRPZmZzZXQ7DQo+ICsN Cj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEl0c0NvdW50Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgY291bnQgZm9yIHRoZSBJVFMgbm9k ZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29u dGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8N Cj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUl0c0lkTWFwcGluZ0Nv dW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAg KTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFy cmF5IG9mZnNldCBmb3IgdGhlIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBb aW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4g dGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK1ZhbGlkYXRlSXRzSWRBcnJheVJlZmVyZW5jZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBIZWxwZXIgTWFjcm8g Zm9yIHBvcHVsYXRpbmcgdGhlIElPUlQgTm9kZSBoZWFkZXIgaW4gdGhlIEFDUElfUEFSU0VSDQo+ ICsgICAgYXJyYXkuDQo+ICsNCj4gKyAgQHBhcmFtIFtvdXRdIFZhbGlkYXRlSWRNYXBwaW5nQ291 bnQgICAgT3B0aW9uYWwgcG9pbnRlciB0byBhIGZ1bmN0aW9uIGZvcg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW5nIHRoZSBJRCBNYXBwaW5nIGNv dW50Lg0KPiArICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlICBPcHRpb25h bCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gZm9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIElEIEFycmF5IHJlZmVyZW5jZS4NCj4gKyov DQo+ICsjZGVmaW5lIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIoVmFsaWRhdGVJZE1hcHBpbmdDb3Vu dCwgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZhbGlkYXRlSWRBcnJheVJlZmVyZW5jZSkgICAgICAgICAgICAgICAgIFwNCj4gKyAgeyBMIlR5 cGUiLCAxLCAwLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmSW9ydE5vZGVUeXBlLCBOVUxMLCBOVUxM IH0sICAgICBcDQo+ICsgIHsgTCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikm SW9ydE5vZGVMZW5ndGgsIE5VTEwsIE5VTEwgfSwgXA0KPiArICB7IEwiUmV2aXNpb24iLCAxLCAz LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9LCAgICAgICAgICAgICAgICAgIFwNCj4g KyAgeyBMIlJlc2VydmVkIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9 LCAgICAgICAgICAgICAgICBcDQo+ICsgIHsgTCJOdW1iZXIgb2YgSUQgbWFwcGluZ3MiLCA0LCA4 LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiop JklvcnRJZE1hcHBpbmdDb3VudCwgVmFsaWRhdGVJZE1hcHBpbmdDb3VudCwgTlVMTCB9LCAgICAg ICAgIFwNCj4gKyAgeyBMIlJlZmVyZW5jZSB0byBJRCBBcnJheSIsIDQsIDEyLCBMIjB4JXgiLCBO VUxMLCAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmSW9ydElkTWFwcGlu Z09mZnNldCwgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlLCBOVUxMIH0NCj4gKw0KPiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgSU9SVCBUYWJsZQ0KPiArKi8N Cj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNF X0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJOdW1iZXIgb2YgSU9SVCBOb2Rl cyIsIDQsIDM2LCBMIiVkIiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJklvcnROb2RlQ291bnQsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJPZmZzZXQgdG8gQXJyYXkgb2YgSU9SVCBOb2RlcyIsIDQsIDQw LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW9ydE5vZGVPZmZzZXQsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJp bmcgdGhlIElPUlQgbm9kZSBoZWFkZXIgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZUhlYWRlclBhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JU X05PREVfSEVBREVSIChOVUxMLCBOVUxMKQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVTbW11VjFWMlBhcnNlcltdID0gew0KPiAr ICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiQmFzZSBBZGRy ZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi U3BhbiIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM Ik1vZGVsIiwgNCwgMzIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi RmxhZ3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IlJlZmVyZW5jZSB0byBHbG9iYWwgSW50ZXJydXB0IEFycmF5IiwgNCwgNDAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiTnVtYmVyIG9mIGNvbnRleHQg aW50ZXJydXB0cyIsIDQsIDQ0LCBMIiVkIiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJkludGVycnVw dENvbnRleHRDb3VudCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlZmVyZW5jZSB0byBDb250ZXh0 IEludGVycnVwdCBBcnJheSIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm SW50ZXJydXB0Q29udGV4dE9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk51bWJlciBvZiBQ TVUgSW50ZXJydXB0cyIsIDQsIDUyLCBMIiVkIiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJlBtdUlu dGVycnVwdENvdW50LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmZXJlbmNlIHRvIFBNVSBJbnRl cnJ1cHQgQXJyYXkiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJlBtdUlu dGVycnVwdE9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAgLy8gSW50ZXJydXB0IEFycmF5 DQo+ICsgIHtMIlNNTVVfTlNnSXJwdCIsIDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiU01NVV9OU2dJcnB0IGludGVycnVwdCBmbGFncyIsIDQsIDY0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU01NVV9OU2dDZmdJcnB0 IiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTU1V X05TZ0NmZ0lycHQgaW50ZXJydXB0IGZsYWdzIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgU01NVXYxLzIgTm9kZSBJbnRlcnJ1cHQgQXJyYXkuDQo+ICsqLw0KPiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIEludGVycnVwdEFycmF5UGFyc2VyW10gPSB7DQo+ICsgIHtM IiAgSW50ZXJydXB0IEdTSVYiLCA0LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiICBGbGFncyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgSU9SVCBJRCBNYXBwaW5nLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJ b3J0Tm9kZUlkTWFwcGluZ1BhcnNlcltdID0gew0KPiArICB7TCIgIElucHV0IGJhc2UiLCA0LCAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiICBOdW1iZXIgb2Yg SURzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIiAg T3V0cHV0IGJhc2UiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiICBPdXRwdXQgcmVmZXJlbmNlIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCIgIEZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgSU9SVCBTTU1VdjMgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgSW9ydE5vZGVTbW11VjNQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RF X0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMjQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDI4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVkFUT1MgQWRkcmVz cyIsIDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1v ZGVsIiwgNCwgNDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRXZl bnQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBS SSIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0VS UiIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3lu YyIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0K PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgSVRTIG5vZGUu DQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlSXRzUGFyc2VyW10g PSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKA0KPiArICAgIFZhbGlkYXRlSXRzSWRN YXBwaW5nQ291bnQsDQo+ICsgICAgVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlDQo+ICsgICAg KSwNCj4gKyAge0wiICBOdW1iZXIgb2YgSVRTcyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQq KikmSXRzQ291bnQsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSVRTIElELg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBJdHNJZFBhcnNlcltdID0gew0KPiArICB7IEwiICBHSUMgSVRTIElkZW50aWZpZXIiLCA0 LCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCB9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBOYW1lcyBDb21wb25lbnQgbm9kZS4N Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVOYW1lZENvbXBvbmVu dFBhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwN Cj4gKyAge0wiTm9kZSBGbGFncyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIk1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgsIDIwLCBMIjB4JWx4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRldmljZSBtZW1vcnkgYWRkcmVzcyBz aXplIGxpbWl0IiwgMSwgMjgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsN Cj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgUm9v dCBDb21wbGV4IG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRO b2RlUm9vdENvbXBsZXhQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAo TlVMTCwgTlVMTCksDQo+ICsgIHtMIk1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgsIDE2LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFUUyBBdHRyaWJ1dGUi LCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBT ZWdtZW50IG51bWJlciIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0K PiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElP UlQgUE1DRyBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9k ZVBtY2dQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVM TCksDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIk92ZXJmbG93IGludGVycnVwdCBHU0lWIiwgNCwgMjQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb2RlIHJlZmVyZW5jZSIs IDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3VudCBm b3IgdGhlIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAg ICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBo ZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRl SXRzSWRNYXBwaW5nQ291bnQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBWT0lEKiAgICAg Q29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4g KyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIlxuRVJST1I6IElP UlQgSUQgTWFwcGluZyBjb3VudCBtdXN0IGJlIHplcm8uIik7DQo+ICsgIH0NCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IG9mZnNl dCBmb3IgdGhlIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiAr ICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJs ZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlk YXRlSXRzSWRBcnJheVJlZmVyZW5jZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZP SUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMCkg ew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiXG5FUlJP UjogSU9SVCBJRCBNYXBwaW5nIG9mZnNldCBtdXN0IGJlIHplcm8uIik7DQo+ICsgIH0NCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIE5vZGUgSWQgTWFwcGlu ZyBhcnJheS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgSU9SVCBUYWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0Nv dW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZz ZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVJZE1hcHBpbmdzICgNCj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMy IE1hcHBpbmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCogSWRNYXBwaW5nUHRyOw0K PiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIENIQVI4ICBCdWZm ZXJbNDBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ ICsgIElkTWFwcGluZ1B0ciA9IFB0ciArIE1hcHBpbmdPZmZzZXQ7DQo+ICsgIEluZGV4ID0gMDsN Cj4gKyAgd2hpbGUgKEluZGV4IDwgTWFwcGluZ0NvdW50KSB7DQo+ICsgICAgQXNjaWlTUHJpbnQg KA0KPiArICAgICAgQnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAg IklEIE1hcHBpbmcgWyVkXSIsDQo+ICsgICAgICBJbmRleA0KPiArICAgICAgKTsNCj4gKyAgICBP ZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAg ICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICBJ ZE1hcHBpbmdQdHIsDQo+ICsgICAgICAgICAgICAgICAyMCwNCj4gKyAgICAgICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKElvcnROb2RlSWRNYXBwaW5nUGFyc2VyKQ0KPiArICAgICAgICAgICAgICAg KTsNCj4gKyAgICBJZE1hcHBpbmdQdHIgKz0gT2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7DQo+ICsg IH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFNNTVV2 MS8yIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAg ICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAg IFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBU aGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NU QVRJQw0KPiArVk9JRA0KPiArRHVtcElvcnROb2RlU21tdVYxVjIgKA0KPiArICBJTiBVSU5UOCog UHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50 LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQz MiBJbmRleDsNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgQ0hBUjggIEJ1ZmZlcls1MF07ICAv LyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4gKyAgVUlOVDgq IEFycmF5UHRyOw0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAy LA0KPiArICAgICJTTU1VdjEgb3IgU01NVXYyIE5vZGUiLA0KPiArICAgIFB0ciwNCj4gKyAgICBM ZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVTbW11VjFWMlBhcnNlcikNCj4g KyAgICApOw0KPiArDQo+ICsgIEFycmF5UHRyID0gUHRyICsgKkludGVycnVwdENvbnRleHRPZmZz ZXQ7DQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUgKEluZGV4IDwgKkludGVycnVwdENvbnRl eHRDb3VudCkgew0KPiArICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAg ICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICJDb250ZXh0IEludGVycnVwdHMgQXJyYXkg WyVkXSIsDQo+ICsgICAgICBJbmRleA0KPiArICAgICAgKTsNCj4gKyAgICBPZmZzZXQgPSBQYXJz ZUFjcGkgKA0KPiArICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICBBcnJheVB0ciwNCj4g KyAgICAgICAgICAgICAgIDgsDQo+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRl cnJ1cHRBcnJheVBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgQXJyYXlQdHIg Kz0gT2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICBBcnJheVB0ciA9 IFB0ciArICpQbXVJbnRlcnJ1cHRPZmZzZXQ7DQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUg KEluZGV4IDwgKlBtdUludGVycnVwdENvdW50KSB7DQo+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiAr ICAgICAgQnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgIlBNVSBJ bnRlcnJ1cHRzIEFycmF5IFslZF0iLA0KPiArICAgICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ICsg ICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAg ICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgICAg ICAgQXJyYXlQdHIsDQo+ICsgICAgICAgICAgICAgICA4LA0KPiArICAgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoSW50ZXJydXB0QXJyYXlQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICApOw0K PiArICAgIEFycmF5UHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICsN Cj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9k ZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYzIG5v ZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVu Z3RoIG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJ RCBNYXBwaW5nIGNvdW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zm c2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0K PiArVk9JRA0KPiArRHVtcElvcnROb2RlU21tdVYzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g KyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0K PiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiU01NVVYzIE5vZGUiLA0KPiArICAgIFB0 ciwNCj4gKyAgICBMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVTbW11VjNQ YXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAw KSB7DQo+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1h cHBpbmdPZmZzZXQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBh cnNlcyB0aGUgSU9SVCBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMN Cj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZUl0cyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsg IElOIFVJTlQxNiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiAr ICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQ4KiBJdHNJZFB0cjsNCj4gKyAgQ0hBUjggIEJ1ZmZl cls4MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4g KyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAg ICAgICAgIDIsDQo+ICsgICAgICAgICAgICAgIklUUyBOb2RlIiwNCj4gKyAgICAgICAgICAgICBQ dHIsDQo+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKElvcnROb2RlSXRzUGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgSXRz SWRQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUgKEluZGV4 IDwgKkl0c0NvdW50KSB7DQo+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAgQnVmZmVyLA0K PiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgIkdJQyBJVFMgSWRlbnRpZmllciBB cnJheSBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAg NCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgIEl0c0lkUHRy LA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KEl0c0lkUGFyc2VyKQ0KPiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBJdHNJZFB0ciArPSBP ZmZzZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5vdGU6IElUUyBk b2VzIG5vdCBoYXZlIHRoZSBJRCBNYXBwaW5ncyBBcnJheQ0KPiArfQ0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgTmFtZWQgQ29tcG9uZW50IG5vZGUuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNv dW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJ RCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhl IHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RHVtcElvcnROb2RlTmFtZWRDb21wb25lbnQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBV SU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIERldmljZU5hbWVQdHI7DQo+ICsgIFVJTlQz MiBEZXZpY2VOYW1lTGVuZ3RoOw0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsg ICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAyLA0KPiArICAgICAgICAgICAgICJO YW1lZCBDb21wb25lbnQgTm9kZSIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAg ICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZU5hbWVk Q29tcG9uZW50UGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgRGV2aWNlTmFt ZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKyAgLy8gRXN0aW1hdGUgdGhlIERldmljZSBOYW1lIGxl bmd0aA0KPiArICBEZXZpY2VOYW1lTGVuZ3RoID0gTGVuZ3RoIC0gT2Zmc2V0IC0gKE1hcHBpbmdD b3VudCAqIDIwKTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiRGV2aWNlIE9iamVjdCBOYW1l Iik7DQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgd2hpbGUgKChJbmRleCA8IERldmljZU5hbWVMZW5n dGgpICYmIChEZXZpY2VOYW1lUHRyW0luZGV4XSAhPSAwKSkgew0KPiArICAgIFByaW50IChMIiVj IiwgRGV2aWNlTmFtZVB0cltJbmRleCsrXSk7DQo+ICsgIH0NCj4gKyAgUHJpbnQgKEwiXG4iKTsN Cj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ICsgICAgRHVtcElv cnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiAr ICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBSb290 IENvbXBsZXggbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGgg ICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0Nv dW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZz ZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVSb290Q29tcGxleCAoDQo+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBw aW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4g KyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlJvb3QgQ29t cGxleCBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9Q QVJBTVMgKElvcnROb2RlUm9vdENvbXBsZXhQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBp ZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ICsgICAgRHVtcElvcnROb2RlSWRNYXBw aW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiArICB9DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBQTUNHIG5vZGUuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRo ZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5n IGNvdW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRo ZSBJRCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20g dGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0K PiArRHVtcElvcnROb2RlUG1jZyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQx NiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBN YXBwaW5nT2Zmc2V0DQo+ICspDQo+ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwN Cj4gKyAgICAyLA0KPiArICAgICJQTUNHIE5vZGUiLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5n dGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVQbWNnUGFyc2VyKQ0KPiArICApOw0K PiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9y dE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsg IH0NCj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCA+IDEpIHsNCj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiRVJST1I6IElE IG1hcHBpbmcgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDEuIElkIE1hcHBpbmcgQ291bnQgPSVk XG4iLA0KPiArICAgICAgKklvcnRJZE1hcHBpbmdDb3VudA0KPiArICAgICAgKTsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgSU9SVCB0YWJs ZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJ T1JUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgZmllbGRzLg0KPiArDQo+ICsgIFRo aXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIGZvbGxvd2luZyBub2RlczoNCj4gKyAgICAtIElU UyBHcm91cA0KPiArICAgIC0gTmFtZWQgQ29tcG9uZW50DQo+ICsgICAgLSBSb290IENvbXBsZXgN Cj4gKyAgICAtIFNNTVV2MS8yDQo+ICsgICAgLSBTTU1VdjMNCj4gKyAgICAtIFBNQ0cNCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElm IFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUlvcnQgKA0KPiArICBJ TiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBB Y3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAg KQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJ TlQ4KiBOb2RlUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ ICsgIH0NCj4gKw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMCwNCj4g KyAgICAiSU9SVCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAg ICBQQVJTRVJfUEFSQU1TIChJb3J0UGFyc2VyKQ0KPiArICAgICk7DQo+ICsgIE9mZnNldCA9ICpJ b3J0Tm9kZU9mZnNldDsNCj4gKyAgTm9kZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKyAgSW5kZXgg PSAwOw0KPiArDQo+ICsgIHdoaWxlICgoSW5kZXggPCAqSW9ydE5vZGVDb3VudCkgJiYgKE9mZnNl dCA8IEFjcGlUYWJsZUxlbmd0aCkpIHsNCj4gKyAgICAvLyBQYXJzZSB0aGUgSU9SVCBOb2RlIEhl YWRlcg0KPiArICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICBGQUxTRSwNCj4gKyAgICAgIDAsDQo+ ICsgICAgICAiSU9SVCBOb2RlIEhlYWRlciIsDQo+ICsgICAgICBOb2RlUHRyLA0KPiArICAgICAg MTYsDQo+ICsgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUhlYWRlclBhcnNlcikNCj4gKyAg ICAgICk7DQo+ICsgICAgaWYgKCpJb3J0Tm9kZUxlbmd0aCA9PSAwKSB7DQo+ICsgICAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgUHJpbnQgKEwiRVJST1I6IFBhcnNlciBlcnJv ci4gSW52YWxpZCB0YWJsZSBkYXRhLlxuIik7DQo+ICsgICAgICByZXR1cm47DQo+ICsgICAgfQ0K PiArDQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiKiBOb2RlIE9mZnNldCAqIik7DQo+ICsg ICAgUHJpbnQgKEwiMHgleFxuIiwgT2Zmc2V0KTsNCj4gKw0KPiArICAgIHN3aXRjaCAoKklvcnRO b2RlVHlwZSkgew0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX0lUU19HUk9VUDoNCj4gKyAgICAg ICAgRHVtcElvcnROb2RlSXRzICgNCj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiArICAgICAgICAg ICpJb3J0Tm9kZUxlbmd0aA0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgY2FzZSBFSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVDoNCj4gKyAgICAgICAgRHVtcElv cnROb2RlTmFtZWRDb21wb25lbnQgKA0KPiArICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAg ICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gKyAgICAgICAgICApOw0KPiArICAg ICAgICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVg6DQo+ICsg ICAgICAgIER1bXBJb3J0Tm9kZVJvb3RDb21wbGV4ICgNCj4gKyAgICAgICAgICBOb2RlUHRyLA0K PiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGlu Z0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ICsgICAgICAgICAg KTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfU01NVVYxX1Yy Og0KPiArICAgICAgICBEdW1wSW9ydE5vZGVTbW11VjFWMiAoDQo+ICsgICAgICAgICAgTm9kZVB0 ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJZE1h cHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAgICAg ICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1NNTVVW MzoNCj4gKyAgICAgICAgRHVtcElvcnROb2RlU21tdVYzICgNCj4gKyAgICAgICAgICBOb2RlUHRy LA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFw cGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfUE1DRzoN Cj4gKyAgICAgICAgRHVtcElvcnROb2RlUG1jZyAoDQo+ICsgICAgICAgICAgTm9kZVB0ciwNCj4g KyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdD b3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAgICAgICApOw0K PiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJpbnQgKEwiRVJST1I6IFVuc3VwcG9y dGVkIElPUlQgTm9kZSB0eXBlID0gJWRcbiIsICpJb3J0Tm9kZVR5cGUpOw0KPiArICAgIH0gLy8g c3dpdGNoDQo+ICsNCj4gKyAgICBOb2RlUHRyICs9ICgqSW9ydE5vZGVMZW5ndGgpOw0KPiArICAg IE9mZnNldCArPSAoKklvcnROb2RlTGVuZ3RoKTsNCj4gKyAgfSAvLyB3aGlsZQ0KPiArfQ0KPiBk aWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMmNjYmI3YjgwZWRjM2I0YzFlNTFhNTViNDE2YmRlMTFhMTQ1ZjI1ZA0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzMTMgQEANCj4gKy8qKg0K PiArICBNQURUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywN Cj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToN Cj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIw MTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5o Ig0KPiArI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvLyBMb2NhbCBWYXJp YWJsZXMNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCogTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBl Ow0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsN Cj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiAr DQo+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklB UEkNCj4gK1ZhbGlkYXRlR0lDRFN5c3RlbVZlY3RvckJhc2UgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0MgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxl ciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJz ZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiQ1BVIEludGVyZmFjZSBOdW1iZXIiLCA0LCA0LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlE IiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdz IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQYXJr aW5nIFByb3RvY29sIFZlcnNpb24iLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsNCj4gKyAge0wiUGVyZm9ybWFuY2UgSW50ZXJydXB0IEdTSVYiLCA0LCAyMCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBhcmtlZCBBZGRyZXNz IiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5 c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiR0lDViIsIDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIkdJQ0giLCA4LCA0OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0lDUiBCYXNlIEFkZHJlc3Mi LCA4LCA2MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJNUElE UiIsIDgsIDY4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBy b2Nlc3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwgNzYsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCA3NywgTCIleCAl eCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDRCBJbnRlcnJ1cHQNCj4gKyAg ICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJT RVIgR2ljRFBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJHSUMgSUQiLCA0LCA0LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNz IiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTeXN0 ZW0gVmVjdG9yIEJhc2UiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gKyAgICBWYWxp ZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlLCBOVUxMfSwNCj4gKyAge0wiR0lDIFZlcnNpb24iLCAx LCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIs IDMsIDIxLCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNU0kgRnJh bWUgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01TSUZyYW1lUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5 cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVu Z3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNl cnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsg IHtMIk1TSSBGcmFtZSBJRCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlNQSSBDb3VudCIsIDIsIDIwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNQSSBCYXNlIiwgMiwgMjIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDUiBJbnRlcnJ1cHQNCj4gKyAgICBDb250 cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2lj UlBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJEaXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNz IiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAg e0wiRGlzY292ZXJ5IFJhbmdlIExlbmd0aCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEdJQyBJVFMgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUu DQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0K PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKw0KPiArICB7TCJHSUMgSVRTIElEIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAxNiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1BRFQgVGFibGUuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1hZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkxvY2FsIEludGVycnVwdCBDb250cm9s bGVyIEFkZHJlc3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgIE5V TEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIE1BRFQgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUgSGVhZGVyIFN0 cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVw dENvbnRyb2xsZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAge05VTEwsIDEsIDAsIE5VTEwsIE5V TEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1cHRD b250cm9sbGVyTGVuZ3RoLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwg MiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgU3lzdGVtIFZlY3RvciBCYXNlIGluIHRoZSBHSUNE Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250 ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAg ICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlR0lDRFN5c3RlbVZlY3Rv ckJhc2UgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiAr KQ0KPiArew0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFN5c3Rl bSBWZWN0b3IgQmFzZSBtdXN0IGJlIHplcm8uIg0KPiArICAgICk7DQo+ICsgIH0NCj4gK30NCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIE1BRFQgdGFibGUuDQo+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJs ZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlz IGZ1bmN0aW9uIGN1cnJlbnRseSBwYXJzZXMgdGhlIGZvbGxvd2luZyBJbnRlcnJ1cHQgQ29udHJv bGxlcg0KPiArICBTdHJ1Y3R1cmVzOg0KPiArICAgIC0gR0lDQw0KPiArICAgIC0gR0lDRA0KPiAr ICAgIC0gR0lDIE1TSSBGcmFtZQ0KPiArICAgIC0gR0lDUg0KPiArICAgIC0gR0lDIElUUw0KPiAr DQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJ IHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAg SWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpTWFkdCAoDQo+ICsg IElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIg IEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiAr ICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQ4KiBJbnRlcnJ1cHRDb250 b2xsZXJQdHI7DQo+ICsgIFVJTlQzMiBHSUNEQ291bnQgPSAwOw0KPiArDQo+ICsgIGlmICghVHJh Y2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAg ICAgICAgICAiTUFEVCIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0UGFyc2Vy KQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIEludGVycnVwdENvbnRvbGxlclB0ciA9IFB0ciAr IE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ ICsgICAgLy8gUGFyc2UgSW50ZXJydXB0IENvbnRyb2xsZXIgU3RydWN0dXJlIHRvIG9idGFpbiBM ZW5ndGguDQo+ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgIEZBTFNFLA0KPiArICAgICAgMCwN Cj4gKyAgICAgIE5VTEwsDQo+ICsgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ICsgICAg ICAyLCAgLy8gIExlbmd0aCBpcyAxIGJ5dGUgYXQgb2Zmc2V0IDENCj4gKyAgICAgIFBBUlNFUl9Q QVJBTVMgKE1hZHRJbnRlcnJ1cHRDb250cm9sbGVySGVhZGVyUGFyc2VyKQ0KPiArICAgICAgKTsN Cj4gKw0KPiArICAgIGlmICgoKE9mZnNldCArICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5n dGgpKSA+IEFjcGlUYWJsZUxlbmd0aCkgfHwNCj4gKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29u dHJvbGxlckxlbmd0aCA8IDQpKSB7DQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiArICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgTCJFUlJPUjogSW52YWxpZCBJbnRlcnJ1cHQg Q29udHJvbGxlciBMZW5ndGgsIg0KPiArICAgICAgICAgICIgVHlwZSA9ICVkLCBMZW5ndGggPSAl ZFxuIiwNCj4gKyAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+ICsgICAg ICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCj4gKyAgICAgICAgICk7DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpNYWR0SW50ZXJydXB0 Q29udHJvbGxlclR5cGUpIHsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQzogew0KPiAr ICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwN Cj4gKyAgICAgICAgICAiR0lDQyIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRy LA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAg ICAgICBQQVJTRVJfUEFSQU1TIChHaWNDUGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAg ICAgIGJyZWFrOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9H SUNEOiB7DQo+ICsgICAgICAgIGlmICgrK0dJQ0RDb3VudCA+IDEpIHsNCj4gKyAgICAgICAgICBJ bmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAg ICAgIEwiRVJST1I6IE9ubHkgb25lIEdJQ0QgbXVzdCBiZSBwcmVzZW50LCINCj4gKyAgICAgICAg ICAgICAgIiBHSUNEQ291bnQgPSAlZFxuIiwNCj4gKyAgICAgICAgICAgIEdJQ0RDb3VudA0KPiAr ICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiAr ICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lDRCIsDQo+ ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50 ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNE UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgfQ0K PiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfTVNJX0ZSQU1FOiB7DQo+ICsgICAg ICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiAr ICAgICAgICAgICJHSUMgTVNJIEZyYW1lIiwNCj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xs ZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiAr ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY01TSUZyYW1lUGFyc2VyKQ0KPiArICAgICAgICAg ICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBjYXNlIEVG SV9BQ1BJXzZfMl9HSUNSOiB7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAg VFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgICJHSUNSIiwNCj4gKyAgICAgICAg ICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250 cm9sbGVyTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY1JQYXJzZXIpDQo+ ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAg ICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFM6IHsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgN Cj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQyBJ VFMiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAq TWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoR2ljSVRTUGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiAr ICAgICAgfQ0KPiArDQo+ICsgICAgICBkZWZhdWx0OiB7DQo+ICsgICAgICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICBMIkVSUk9SOiBV bmtub3duIEludGVycnVwdCBDb250cm9sbGVyIFN0cnVjdHVyZSwiDQo+ICsgICAgICAgICAgICAi IFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRD b250cm9sbGVyVHlwZSwNCj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5n dGgNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgfQ0KPiArICAgIH0gLy8gc3dpdGNoDQo+ICsN Cj4gKyAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIgKz0gKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVy TGVuZ3RoOw0KPiArICAgIE9mZnNldCArPSAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGg7 DQo+ICsgIH0gLy8gd2hpbGUNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcv TWNmZ1BhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMWIzMGRjMGQ1YjYwMTA4NGU0ZmZjZDA3 ZTczYjY2ZDExOGIzMjYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlci5jDQo+ IEBAIC0wLDAgKzEsOTQgQEANCj4gKy8qKg0KPiArICBNQ0ZHIHRhYmxlIHBhcnNlcg0KPiArDQo+ ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g Kw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIFBDSSBGaXJtd2FyZSBTcGVjaWZp Y2F0aW9uIC0gUmV2aXNpb24gMy4yLCBKYW51YXJ5IDI2LCAyMDE1Lg0KPiArKiovDQo+ICsNCj4g KyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNw aVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1DRkcgVGFibGUuDQo+ICsqLw0K PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1jZmdQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0Vf QUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIlJlc2VydmVkIiwgOCwgMzYsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBTcGFjZQ0K PiArICAgIEJhc2UgQWRkcmVzcyBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIFBjaUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXJbXSA9IHsNCj4gKyAge0wiQmFzZSBB ZGRyZXNzIiwgOCwgMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQQ0kgU2VnbWVudCBHcm91cCBOby4iLCAyLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiU3RhcnQgQnVzIE5vLiIsIDEsIDEwLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRW5kIEJ1cyBOby4iLCAxLCAxMSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgMTIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIEFDUEkgTUNGRyB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFi bGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNQ0ZHIHRhYmxlIGFuZA0KPiArICB0cmFjZXMg dGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJm b3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRz Lg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExl bmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNp b24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArUGFyc2VBY3BpTWNmZyAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJ TlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlO VDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7 DQo+ICsgIFVJTlQzMiBQY2lDZmdPZmZzZXQ7DQo+ICsgIFVJTlQ4KiBQY2lDZmdTcGFjZVB0cjsN Cj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4g KyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAg ICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIk1DRkciLA0KPiArICAgICAgICAgICAgIFB0ciwN Cj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VS X1BBUkFNUyAoTWNmZ1BhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArDQo+ICsgIFBjaUNm Z1NwYWNlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdoaWxlIChPZmZzZXQgPCBBY3Bp VGFibGVMZW5ndGgpIHsNCj4gKyAgICBQY2lDZmdPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAg ICAgICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIDIsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAiUENJIENvbmZpZ3VyYXRpb24gU3BhY2UiLA0KPiArICAgICAg ICAgICAgICAgICAgICAgUGNpQ2ZnU3BhY2VQdHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAo QWNwaVRhYmxlTGVuZ3RoIC0gT2Zmc2V0KSwNCj4gKyAgICAgICAgICAgICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKFBjaUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICAg ICAgICApOw0KPiArICAgIFBjaUNmZ1NwYWNlUHRyICs9IFBjaUNmZ09mZnNldDsNCj4gKyAgICBP ZmZzZXQgKz0gUGNpQ2ZnT2Zmc2V0Ow0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNk cFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDNmZTdhMjU5MTQy MjY0YWQ1NzVhYjM5ZTIxMmEyZDllOGRhNjMzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1Jz ZHBQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDE2OSBAQA0KPiArLyoqDQo+ICsgIFJTRFAgdGFibGUg cGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2 LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsN Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2Vy LmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIFZh cmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ2NCogWHNkdEFkZHJlc3M7DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCog UHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFhTRFQgQWRkcmVzcy4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBA cGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlv biBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIg dG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtWYWxpZGF0ZVhzZHRBZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g KyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEFDUEkgUlNEUCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgUnNkcFBhcnNlcltdID0gew0KPiArICB7TCJTaWduYXR1cmUiLCA4LCAwLCBOVUxMLCBE dW1wOENoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ2hlY2tzdW0iLCAxLCA4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT2VtIElEIiwgNiwgOSwg TlVMTCwgRHVtcDZDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJldmlzaW9uIiwg MSwgMTUsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUlNEVCBBZGRy ZXNzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlUnNkdEFkZHJlc3MsIE5V TEx9LA0KPiArICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJYU0RUIEFkZHJlc3MiLCA4LCAyNCwgTCIweCVseCIsIE5VTEwsIChWT0lE KiopJlhzZHRBZGRyZXNzLA0KPiArICAgVmFsaWRhdGVYc2R0QWRkcmVzcywgTlVMTH0sDQo+ICsg IHtMIkV4dGVuZGVkIENoZWNrc3VtIiwgMSwgMzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDMzLCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFy cywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lE KiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwg ZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAvLyBSZWZlcmVuY2U6IFNlcnZlciBCYXNl IEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0gUGxhdGZvcm1zDQo+ICsg IC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiArICAvLyBSb290IFN5c3RlbSBEZXNjcmlwdGlv biBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ICsgIC8vICAgLSBXaXRoaW4gdGhl IFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHplcm8pIGFuZCB0aGUN Cj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQsIG5vbi1udWxsLCA2NC1i aXQgdmFsdWUuDQo+ICsgIFVJTlQzMiBSc2R0QWRkciA9ICooVUlOVDMyKilQdHI7DQo+ICsgIGlm IChSc2R0QWRkciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAg ICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFJzZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMg bXVzdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9ybXMuIiwNCj4gKyAgICAgIFJzZHRBZGRyDQo+ICsg ICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElO IFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZpbmVkKE1ERV9DUFVfQVJN KSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIC8vIFJlZmVyZW5jZTogU2VydmVy IEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9uIEFSTSBQbGF0Zm9ybXMN Cj4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ICsgIC8vIFJvb3QgU3lzdGVtIERlc2Ny aXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIuNS4NCj4gKyAgLy8gICAtIFdpdGhp biB0aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3QgYmUgbnVsbCAoemVybykgYW5k IHRoZQ0KPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2YWxpZCwgbm9uLW51bGws IDY0LWJpdCB2YWx1ZS4NCj4gKyAgVUlOVDY0IFhzZHRBZGRyID0gKihVSU5UNjQqKVB0cjsNCj4g KyAgaWYgKFhzZHRBZGRyID09IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogWHNkdCBBZGRyZXNzID0gMHglcC4g VGhpcyBtdXN0IG5vdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9ybXMuIiwNCj4gKyAgICAgIFhzZHRB ZGRyDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFJTRFAgdGFibGUuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBYU0RUIHRhYmxlLg0KPiArICAqIE5v dGUgLSBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFyc2luZyBvZiBSU0RUIHRhYmxl Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRo ZSBBQ1BJIHRhYmxlIGFuZA0KPiArICB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBm aWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGgg ICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVS ZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtQYXJzZUFjcGlSc2RwICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAg SU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKFRyYWNl KSB7DQo+ICsgICAgRHVtcFJhdyAoUHRyLCBBY3BpVGFibGVMZW5ndGgpOw0KPiArICAgIFZlcmlm eUNoZWNrc3VtIChUUlVFLCBQdHIsIEFjcGlUYWJsZUxlbmd0aCk7DQo+ICsgIH0NCj4gKw0KPiAr ICBQYXJzZUFjcGkgKFRyYWNlLCAwLCAiUlNEUCIsIFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCBQQVJT RVJfUEFSQU1TIChSc2RwUGFyc2VyKSk7DQo+ICsNCj4gKyAgLy8gVGhpcyBjb2RlIGN1cnJlbnRs eSBzdXBwb3J0cyBwYXJzaW5nIG9mIFhTRFQgdGFibGUgb25seQ0KPiArICAvLyBhbmQgZG9lcyBu b3QgcGFyc2UgdGhlIFJTRFQgdGFibGUuIFBsYXRmb3JtcyBwcm92aWRlIHRoZQ0KPiArICAvLyBS U0RUIHRvIGVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggQUNQSSAxLjAgb3BlcmF0aW5nIHN5c3Rl bXMuDQo+ICsgIC8vIFRoZXJlZm9yZSB0aGUgUlNEVCBzaG91bGQgbm90IGJlIHVzZWQgb24gQVJN IHBsYXRmb3Jtcy4NCj4gKyAgaWYgKCgqWHNkdEFkZHJlc3MpID09IDApIHsNCj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIkVSUk9SOiBYU0RUIFBvaW50ZXIg aXMgbm90IHNldC5cbiIpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFByb2Nl c3NBY3BpVGFibGUgKChVSU5UOCopKFVJTlROKSgqWHNkdEFkZHJlc3MpKTsNCj4gK30NCj4gZGlm ZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjVmOTlmZDQ2YTAzYWNjNDE0YjcyMjEyY2E5ZjU1NmU4YWEyMzI5ODUNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMTQyIEBADQo+ICsvKioNCj4g KyAgU0xJVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vu c2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3 DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRhYmxl UGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJ TlQ2NCogU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQ7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElP Tl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgU0xJVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgU2xpdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAo JkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiTnVtYmVyIG9mIFN5c3RlbSBMb2NhbGl0aWVzIiwgOCwg MzYsIEwiMHglbHgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmU2xpdFN5c3RlbUxvY2FsaXR5Q291 bnQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogTWFjcm8gdG8gZ2V0IHRoZSB2YWx1 ZSBvZiBhIFN5c3RlbSBMb2NhbGl0eQ0KPiArKi8NCj4gKyNkZWZpbmUgU0xJVF9FTEVNRU5UKFB0 ciwgaSwgaikgKihQdHIgKyAoaSAqIExvY2FsaXR5Q291bnQpICsgaikNCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2Ug aXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU0xJVCB0YWJsZSBhbmQNCj4gKyAg dHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFs c28gdmFsaWRhdGVzIFN5c3RlbSBMb2NhbGl0aWVzIGZvciB0aGUgZm9sbG93aW5nOg0KPiArICAg IC0gRGlhZ29uYWwgZWxlbWVudHMgaGF2ZSBhIG5vcm1hbGl6ZWQgdmFsdWUgb2YgMTANCj4gKyAg ICAtIFJlbGF0aXZlIGRpc3RhbmNlIGZyb20gU3lzdGVtIExvY2FsaXR5IGF0IGkqTitqIGlzIHNh bWUgYXMNCj4gKyAgICAgIGoqTitpDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAg ICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFi bGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNsaXQg KA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNp b24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UNjQgaTsNCj4g KyAgVUlOVDY0IGo7DQo+ICsgIFVJTlQ2NCBMb2NhbGl0eUNvdW50Ow0KPiArICBVSU5UOCogTG9j YWxpdHlQdHI7DQo+ICsgIENIQVIxNiBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1l IHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1 cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAg ICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAiU0xJVCIsDQo+ ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4g KyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTbGl0UGFyc2VyKQ0KPiArICAgICAgICAgICAg ICk7DQo+ICsgIExvY2FsaXR5UHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIExvY2FsaXR5 Q291bnQgPSAqU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQ7DQo+ICsgIC8vIFdlIG9ubHkgcHJpbnQg dGhlIExvY2FsaXRpZXMgaWYgdGhlIGNvdW50IGlzIGxlc3MgdGhhbiAxNg0KPiArICAvLyBJZiB0 aGUgbG9jYWxpdHkgY291bnQgaXMgbW9yZSB0aGFuIDE2IHRoZW4gcmVmZXIgdG8gdGhlDQo+ICsg IC8vIHJhdyBkYXRhIGR1bXAuDQo+ICsgIGlmIChMb2NhbGl0eUNvdW50IDwgMTYpIHsNCj4gKyAg ICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVm ZmVyKSwNCj4gKyAgICAgIEwiRW50cnlbMHglbHhdWzB4JWx4XSIsDQo+ICsgICAgICBMb2NhbGl0 eUNvdW50LA0KPiArICAgICAgTG9jYWxpdHlDb3VudA0KPiArICAgICAgKTsNCj4gKyAgICBQcmlu dEZpZWxkTmFtZSAoMCwgQnVmZmVyKTsNCj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIFBy aW50IChMIiAgICAgICAiKTsNCj4gKyAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsg aisrKSB7DQo+ICsgICAgICBQcmludCAoTCIgKCUzZCkgIiwgaik7DQo+ICsgICAgfQ0KPiArICAg IFByaW50IChMIlxuIik7DQo+ICsgICAgZm9yIChpID0gMDsgaSA8IExvY2FsaXR5Q291bnQ7IGkr Kykgew0KPiArICAgICAgUHJpbnQgKEwiICglM2QpICIsIGkpOw0KPiArICAgICAgZm9yIChqID0g MDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiArICAgICAgICBQcmludCAoTCIgICUzZCAg IiwgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikpOw0KPiArICAgICAgfQ0KPiArICAg ICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBWYWxpZGF0 ZQ0KPiArICBmb3IgKGkgPSAwOyBpIDwgTG9jYWxpdHlDb3VudDsgaSsrKSB7DQo+ICsgICAgZm9y IChqID0gMDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiArICAgICAgLy8gRWxlbWVudFt4 XVt4XSBtdXN0IGJlIGVxdWFsIHRvIDEwDQo+ICsgICAgICBpZiAoKGkgPT0gaikgJiYgKFNMSVRf RUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopICE9IDEwKSkgew0KPiArICAgICAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgTCJFUlJP UjogRGlhZ29uYWwgRWxlbWVudFsweCVseF1bMHglbHhdICglM2QpLiINCj4gKyAgICAgICAgICAg ICIgTm9ybWFsaXplZCBWYWx1ZSBpcyBub3QgMTBcbiIsDQo+ICsgICAgICAgICAgaSwNCj4gKyAg ICAgICAgICBqLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGop DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIC8vIEVsZW1lbnRbaV1bal0g bXVzdCBiZSBlcXVhbCB0byBFbGVtZW50W2pdW2ldDQo+ICsgICAgICBpZiAoU0xJVF9FTEVNRU5U IChMb2NhbGl0eVB0ciwgaSwgaikgIT0NCj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2Fs aXR5UHRyLCBqLCBpKSkgew0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgTCJFUlJPUjogUmVsYXRpdmUgZGlzdGFuY2Vz IGZvciBFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkgYW5kIFxuIg0KPiArICAgICAgICAgICAi RWxlbWVudFsweCVseF1bMHglbHhdICglM2QpIGRvIG5vdCBtYXRjaC5cbiIsDQo+ICsgICAgICAg ICAgaSwNCj4gKyAgICAgICAgICBqLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxp dHlQdHIsIGksIGopLA0KPiArICAgICAgICAgIGosDQo+ICsgICAgICAgICAgaSwNCj4gKyAgICAg ICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBpKQ0KPiArICAgICAgICAgICk7DQo+ ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBh cnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDFhMjdmZmRmYWI3ODIx MDU0NWQwYmU5NWUxMDFmNjhiZWNmZWZjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQ YXJzZXIuYw0KPiBAQCAtMCwwICsxLDE2OCBAQA0KPiArLyoqDQo+ICsgIFNQQ1IgdGFibGUgcGFy c2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gTWljcm9zb2Z0 IFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gKyAgICAgIFNwZWNpZmlj YXRpb24gLSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiAr I2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVjdGlvblRhYmxlLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiArI2lu Y2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4g K1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEludGVycnVwdCBUeXBlLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlSW50ZXJydXB0VHlwZSAoDQo+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBw YXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9u IGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0 byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtF RklBUEkNCj4gK1ZhbGlkYXRlSXJxICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9J RCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIEFDUEkgU1BDUiBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgU3BjclBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlI ZHJJbmZvKSwNCj4gKyAge0wiSW50ZXJmYWNlIFR5cGUiLCAxLCAzNiwgTCIlZCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDM3LCBMIiV4ICV4ICV4Iiwg RHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDEy LCA0MCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkludGVycnVw dCBUeXBlIiwgMSwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUludGVycnVwdFR5cGUs IE5VTEx9LA0KPiArICB7TCJJUlEiLCAxLCA1MywgTCIlZCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRl SXJxLCBOVUxMfSwNCj4gKyAge0wiR2xvYmFsIFN5c3RlbSBJbnRlcnJ1cHQiLCA0LCA1NCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhdWQgUmF0ZSIsIDEsIDU4 LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBhcml0eSIsIDEsIDU5 LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlN0b3AgQml0cyIsIDEs IDYwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsb3cgQ29udHJv bCIsIDEsIDYxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVGVy bWluYWwgVHlwZSIsIDEsIDYyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlJlc2VydmVkIiwgMSwgNjMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Kw0KPiArICB7TCJQQ0kgRGV2aWNlIElEIiwgMiwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgVmVuZG9yIElEIiwgMiwgNjYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgQnVzIE51bWJlciIsIDEsIDY4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJIERldmljZSBOdW1iZXIi LCAxLCA2OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBG dW5jdGlvbiBOdW1iZXIiLCAxLCA3MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBDSSBGbGFncyIsIDQsIDcxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUENJIFNlZ21lbnQiLCAxLCA3NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgNzYsIEwiJXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVz IHRoZSBJbnRlcnJ1cHQgVHlwZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250 ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4g KyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFi bGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxp ZGF0ZUludGVycnVwdFR5cGUgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAg Q29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRl ZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgVUlOVDggSW50ZXJydXB0VHlwZSA9ICpQdHI7 DQo+ICsgIGlmIChJbnRlcnJ1cHRUeXBlICE9DQo+ICsgICAgICAgIEVGSV9BQ1BJX1NFUklBTF9Q T1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfSU5URVJSVVBUX1RZUEVfR0lDKSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxu RVJST1I6IEludGVycnVwdFR5cGUgPSAlZC4gVGhpcyBtdXN0IGJlIDggb24gQVJNIFBsYXRmb3Jt cyIsDQo+ICsgICAgICBJbnRlcnJ1cHRUeXBlDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5k aWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg ZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJcnEgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVm aW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgVUlO VDggSXJxID0gKlB0cjsNCj4gKyAgaWYgKElycSAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IElycSA9ICVk LiBUaGlzIG11c3QgYmUgemVybyBvbiBBUk0gUGxhdGZvcm1zXG4iLA0KPiArICAgICAgSXJxDQo+ ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5h YmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBhbmQNCj4gKyAgdHJhY2Vz IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVy Zm9ybXMgdmFsaWRhdGlvbnMgb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVs ZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAg TGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJ QVBJDQo+ICtQYXJzZUFjcGlTcGNyICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4g VUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBV SU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCFUcmFjZSkg ew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIER1bXAgdGhlIFNQQ1INCj4g KyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDAsDQo+ICsgICAgIlNQQ1IiLA0K PiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFN UyAoU3BjclBhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJz ZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkYTU1OTM1YzgzNTM5Njkx ZjUzZTBiNGM1N2E2MzU2MjEwYmJkYw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFy c2VyLmMNCj4gQEAgLTAsMCArMSwzMzAgQEANCj4gKy8qKg0KPiArICBTUkFUIHRhYmxlIHBhcnNl cg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg bWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNw ZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsj aW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Q cmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUg IkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCj4gKw0KPiAr Ly8gTG9jYWwgVmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQVR5cGU7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQUxlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NS SVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhlYWRlci4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAg ICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4g K1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQVBJQyBQcm94aW1pdHkgRG9tYWluIGZp ZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBmb3IgdHJh Y2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcFNy YXRBcGljUHJveGltaXR5ICgNCj4gKyAgSU4gIENPTlNUIENIQVIxNiogIEZvcm1hdCwNCj4gKyAg SU4gIFVJTlQ4KiAgICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgU1JBVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgU3JhdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAo JkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgVmFsaWRhdGVTcmF0UmVzZXJ2ZWQsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDgs IDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBSZXNvdXJjZSBBbGxvY2F0aW9u DQo+ICsgICAgc3RydWN0dXJlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgU3JhdFJlc291cmNlQWxsb2NhdGlvblBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwg MSwgMCwgTlVMTCwgTlVMTCwgKFZPSUQqKikmU3JhdFJBVHlwZSwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJlNyYXRSQUxlbmd0aCwgTlVM TCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBHSUNDIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgU3JhdEdpY0NBZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwg MSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIs IDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlBy b3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTAsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJDbG9jayBEb21haW4iLCA0LCAxNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBHSUMgSVRTIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdEdpY0lUU0FmZmluaXR5UGFyc2VyW10gPSB7 DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJVFMgSWQiLCA0LCA4LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBNZW1vcnkgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0TWVtQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4g KyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Kw0KPiArICB7TCJQcm94aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyBMb3ciLCA0LCA4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIEhpZ2giLCA0 LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCBM b3ciLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxl bmd0aCBIaWdoIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJSZXNlcnZlZCIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiRmxhZ3MiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEFQSUMvU0FQSUMgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBTcmF0QXBjaVNhcGljQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wi VHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJM ZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiAr ICB7TCJQcm94aW1pdHkgRG9tYWluIFs3OjBdIiwgMSwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFQSUMgSUQiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTG9jYWwgU0FQSUMgRUlEIiwgMSwgOCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4gWzMxOjhd IiwgMywgOSwgTCIweCV4IiwgRHVtcFNyYXRBcGljUHJveGltaXR5LA0KPiArICAgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5 IGRlc2NyaWJpbmcgdGhlIFByb2Nlc3NvciBMb2NhbCB4MkFQSUMNCj4gKyAgICBBZmZpbml0eSBz dHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRYMkFwY2lB ZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0 LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWDJBUElDIElE IiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdz IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDbG9j ayBEb21haW4iLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlJlc2VydmVkIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZp ZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhlYWRlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElO IFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0g MSkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiXG5F UlJPUjogUmVzZXJ2ZWQgc2hvdWxkIGJlIDEgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4i KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQ SUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQg IEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFU SUMNCj4gK1ZPSUQNCj4gK0R1bXBTcmF0QXBpY1Byb3hpbWl0eSAoDQo+ICsgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQsDQo+ICsgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyApDQo+ICt7DQo+ICsg IFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQdHJbMF0gfCAoUHRyWzFdIDw8IDgpIHwgKFB0clsy XSA8PCAxNik7DQo+ICsgIFByaW50IChGb3JtYXQsIFByb3hpbWl0eURvbWFpbik7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTUkFUIHRhYmxlLg0KPiAr ICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNSQVQgdGFi bGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiBwYXJzZXMgdGhlIGZvbGxvd2luZyBSZXNvdXJjZSBBbGxvY2F0aW9uIFN0cnVj dHVyZXM6DQo+ICsgICAgLSBQcm9jZXNzb3IgTG9jYWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1 Y3R1cmUNCj4gKyAgICAtIE1lbW9yeSBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIFByb2Nl c3NvciBMb2NhbCB4MkFQSUMgQWZmaW5pdHkgU3RydWN0dXJlDQo+ICsgICAgLSBHSUNDIEFmZmlu aXR5IFN0cnVjdHVyZQ0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxp ZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBU cmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlz aW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFy c2VBY3BpU3JhdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3Bp VGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJ TlQ4KiBSZXNvdXJjZVB0cjsNCj4gKyAgVUlOVDMyIEdpY0NBZmZpbml0eUluZGV4ID0gMDsNCj4g KyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBVSU5UMzIgTWVtb3J5QWZm aW5pdHlJbmRleCA9IDA7DQo+ICsgIFVJTlQzMiBBcGljU2FwaWNBZmZpbml0eUluZGV4ID0gMDsN Cj4gKyAgVUlOVDMyIFgyQXBpY0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBDSEFSOCAgQnVmZmVy WzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiAr ICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0 ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAs DQo+ICsgICAgICAgICAgICAgIlNSQVQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAg ICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAo U3JhdFBhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArICBSZXNvdXJjZVB0ciA9IFB0ciAr IE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgIEZBTFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAg IE5VTEwsDQo+ICsgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgIDIsICAvLyBUaGUgbGVuZ3Ro IGlzIDEgYnl0ZSBhdCBvZmZzZXQgMQ0KPiArICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFJlc291 cmNlQWxsb2NhdGlvblBhcnNlcikNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpT cmF0UkFUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNDX0FGRklOSVRZOg0K PiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAg ICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiR0lDQyBBZmZpbml0eSBTdHJ1Y3R1 cmUgWyVkXSIsDQo+ICsgICAgICAgICAgR2ljQ0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAg ICk7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAg ICAgICAyLA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwN Cj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KFNyYXRHaWNDQWZmaW5pdHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJl YWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAg ICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgICAgICJHSUMgSVRTIEFmZmluaXR5IFN0cnVj dHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBHaWNJVFNBZmZpbml0eUluZGV4KysNCj4gKyAgICAg ICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAg ICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRy LA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoU3JhdEdpY0lUU0FmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICApOw0KPiArICAgICAgICBi cmVhazsNCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfTUVNT1JZX0FGRklOSVRZOg0K PiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAg ICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVj dHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBNZW1vcnlBZmZpbml0eUluZGV4KysNCj4gKyAgICAg ICAgICApOw0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQ dHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFS QU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAg YnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX1BST0NFU1NPUl9MT0NBTF9B UElDX1NBUElDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAg ICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAi QVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQo+ICsgICAgICAgICAgQXBpY1Nh cGljQWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3Bp ICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVm ZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAgICpTcmF0UkFMZW5n dGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFy c2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBj YXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNTT1JfTE9DQUxfWDJBUElDX0FGRklOSVRZOg0KPiArICAg ICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNp emVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiWDJBUElDIEFmZmluaXR5IFN0cnVjdHVyZSBb JWRdIiwNCj4gKyAgICAgICAgICBYMkFwaWNBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICAp Ow0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAg ICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChT cmF0WDJBcGNpQWZmaW5pdHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJl YWs7DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291 bnQgKCk7DQo+ICsgICAgICAgIFByaW50IChMIkVSUk9SOiBVbmtub3duIFNSQVQgQWZmaW5pdHkg dHlwZSA9IDB4JXhcbiIsICpTcmF0UkFUeXBlKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg fQ0KPiArDQo+ICsgICAgUmVzb3VyY2VQdHIgKz0gKCpTcmF0UkFMZW5ndGgpOw0KPiArICAgIE9m ZnNldCArPSAoKlNyYXRSQUxlbmd0aCk7DQo+ICsgIH0NCj4gK30NCj4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9T c2R0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3N2NjYmUwNjA2 OGU1ZGE0N2ZmNTQ4OGNmOWFiYzk0YzU1ODNjOWMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQv U3NkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsNDcgQEANCj4gKy8qKg0KPiArICBTU0RUIHRhYmxl IHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkg Ni4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiAr DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiArI2luY2x1ZGUg IkFjcGlUYWJsZVBhcnNlci5oIg0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IEFDUEkgU1NEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBTU0RUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUg ZmllbGRzLg0KPiArICBGb3IgdGhlIFNTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmll bGRzIGFyZQ0KPiArICBwYXJzZWQgYW5kIHRyYWNlZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBU cmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlz aW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFy c2VBY3BpU3NkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3Bp VGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICBy ZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjBlZDY1ZDJlNzJjZDIxM2FkNzY5NWZlZmQ0YTVhMGMwNmY5NmZmMmMNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMTUzIEBADQo+ICsvKioN Cj4gKyAgWFNEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6 DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAy MDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJp bnRMaWIuaD4NCj4gKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQo+ICsjaW5jbHVkZSAiQWNwaVRh YmxlUGFyc2VyLmgiDQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFhTRFQgdGFibGUuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFhzZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gK307DQo+ICsNCj4gK0NPTlNUIEFDUElfREVTQ1JJ UFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ICtFRklBUEkNCj4gK0dldEFjcGlYc2R0SGVhZGVy SW5mbyAoDQo+ICsgIFZPSUQNCj4gKykNCj4gK3sNCj4gKyAgcmV0dXJuICZBY3BpSGRySW5mbzsN Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFhTRFQgdGFi bGUNCj4gKyAgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgWFNE VCB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpWHNkdCAoDQo+ICsgIElOIEJP T0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlQzMiAgICAgICAgT2Zmc2V0Ow0KPiArICBVSU5UMzIgICAgICAgIFRhYmxl T2Zmc2V0Ow0KPiArICBVSU5UNjQqICAgICAgIFRhYmxlUG9pbnRlcjsNCj4gKyAgVUlOVE4gICAg ICAgICBFbnRyeUluZGV4Ow0KPiArICBDSEFSMTYgICAgICAgIEJ1ZmZlclszMl07DQo+ICsNCj4g KyAgLy8gUGFyc2UgdGhlIEFDUEkgaGVhZGVyIHRvIGdldCB0aGUgbGVuZ3RoDQo+ICsgIFBhcnNl QWNwaSAoDQo+ICsgICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAiWFNEVCIsDQo+ICsgICAg UHRyLA0KPiArICAgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCwNCj4gKyAgICBQQVJT RVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFy c2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUcmFjZSwNCj4gKyAgICAgICAgICAgICAwLA0KPiAr ICAgICAgICAgICAgICJYU0RUIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAg ICAgKkFjcGlIZHJJbmZvLkxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChY c2R0UGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgVGFibGVPZmZzZXQgPSBP ZmZzZXQ7DQo+ICsNCj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRW50cnlJbmRleCA9IDA7DQo+ ICsgICAgVGFibGVQb2ludGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsNCj4gKyAg ICB3aGlsZSAoT2Zmc2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7DQo+ICsgICAgICBDT05T VCBVSU5UMzIqIFNpZ25hdHVyZTsNCj4gKyAgICAgIENPTlNUIFVJTlQzMiogTGVuZ3RoOw0KPiAr ICAgICAgQ09OU1QgVUlOVDgqICBSZXZpc2lvbjsNCj4gKw0KPiArICAgICAgaWYgKChVSU5UNjQq KShVSU5UTikoKlRhYmxlUG9pbnRlcikgIT0gTlVMTCkgew0KPiArICAgICAgICBVSU5UOCogICAg ICBQdHI7DQo+ICsNCj4gKyAgICAgICAgUGFyc2VBY3BpSGVhZGVyICgNCj4gKyAgICAgICAgICAo VUlOVDgqKShVSU5UTikoKlRhYmxlUG9pbnRlciksDQo+ICsgICAgICAgICAgJlNpZ25hdHVyZSwN Cj4gKyAgICAgICAgICAmTGVuZ3RoLA0KPiArICAgICAgICAgICZSZXZpc2lvbg0KPiArICAgICAg ICAgICk7DQo+ICsNCj4gKyAgICAgICAgUHRyID0gKFVJTlQ4KilTaWduYXR1cmU7DQo+ICsNCj4g KyAgICAgICAgVW5pY29kZVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAg ICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSAtICVjJWMlYyVj IiwNCj4gKyAgICAgICAgICBFbnRyeUluZGV4KyssDQo+ICsgICAgICAgICAgUHRyWzBdLA0KPiAr ICAgICAgICAgIFB0clsxXSwNCj4gKyAgICAgICAgICBQdHJbMl0sDQo+ICsgICAgICAgICAgUHRy WzNdDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIFVuaWNv ZGVTUHJpbnQgKA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXplb2YgKEJ1 ZmZlciksDQo+ICsgICAgICAgICAgTCJFbnRyeVslZF0iLA0KPiArICAgICAgICAgIEVudHJ5SW5k ZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIFByaW50Rmll bGROYW1lICgyLCBCdWZmZXIpOw0KPiArICAgICAgUHJpbnQgKEwiMHglbHhcbiIsICpUYWJsZVBv aW50ZXIpOw0KPiArDQo+ICsgICAgICAvLyBWYWxpZGF0ZSB0aGUgdGFibGUgcG9pbnRlcnMgYXJl IG5vdCBOVUxMDQo+ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSA9 PSBOVUxMKSB7DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAg IFByaW50ICgNCj4gKyAgICAgICAgICBMIkVSUk9SOiBJbnZhbGlkIHRhYmxlIGVudHJ5IGF0IDB4 JWx4LCB0YWJsZSBhZGRyZXNzIGlzIDB4JWx4XG4iLA0KPiArICAgICAgICAgIFRhYmxlUG9pbnRl ciwNCj4gKyAgICAgICAgICAqVGFibGVQb2ludGVyDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAg IH0NCj4gKyAgICAgIE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ICsgICAgICBUYWJsZVBv aW50ZXIrKzsNCj4gKyAgICB9IC8vIHdoaWxlDQo+ICsgIH0NCj4gKw0KPiArICAvLyBQcm9jZXNz IHRoZSB0YWJsZXMNCj4gKyAgT2Zmc2V0ID0gVGFibGVPZmZzZXQ7DQo+ICsgIFRhYmxlUG9pbnRl ciA9IChVSU5UNjQqKShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ICsgIHdoaWxlIChPZmZzZXQgPCAo KkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4gKyAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFi bGVQb2ludGVyKSAhPSBOVUxMKSB7DQo+ICsgICAgICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgq KShVSU5UTikoKlRhYmxlUG9pbnRlcikpOw0KPiArICAgIH0NCj4gKyAgICBPZmZzZXQgKz0gc2l6 ZW9mIChVSU5UNjQpOw0KPiArICAgIFRhYmxlUG9pbnRlcisrOw0KPiArICB9IC8vIHdoaWxlDQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjdkZTI4NjkxYmUyNmJjMTRlMjZjNGMyODRlNDA2NzAwNjY5Yzc3 Y2YNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYw0KPiBAQCAtMCww ICsxLDE2NyBAQA0KPiArLyoqDQo+ICsgIE1haW4gZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBj b21tYW5kIGZ1bmN0aW9uLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vu c2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEd1aWQv U2hlbGxMaWJIaWlHdWlkLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1No ZWxsQ29tbWFuZExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8 VWVmaS5oPg0KPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVGFi bGVQYXJzZXIuaCINCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUgIlVlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiArDQo+ICtDT05TVCBDSEFSMTYgZ1NoZWxsQWNw aVZpZXdGaWxlTmFtZVtdID0gTCJTaGVsbENvbW1hbmQiOw0KPiArDQo+ICsvKioNCj4gKyAgQSBs aXN0IG9mIGF2YWlsYWJsZSB0YWJsZSBwYXJzZXJzLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArQ09O U1QNCj4gK0FDUElfVEFCTEVfUEFSU0VSIFBhcnNlckxpc3RbXSA9IHsNCj4gKyAge0VGSV9BQ1BJ XzZfMl9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05BVFVSRSwgUGFyc2VBY3BpQmdy dH0sDQo+ICsgIHtFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRSwgUGFy c2VBY3BpRGJnMn0sDQo+ICsgIHtFRklfQUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RF U0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgIFBhcnNlQWNwaURzZHR9LA0KPiArICB7 RUZJX0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLCBQYXJz ZUFjcGlGYWR0fSwNCj4gKyAge0VGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVSX0RFU0NSSVBUSU9O X1RBQkxFX1NJR05BVFVSRSwgUGFyc2VBY3BpR3RkdH0sDQo+ICsgIHtFRklfQUNQSV82XzJfSU9f UkVNQVBQSU5HX1RBQkxFX1NJR05BVFVSRSwgUGFyc2VBY3BpSW9ydH0sDQo+ICsgIHtFRklfQUNQ SV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsIFBhcnNlQWNw aU1hZHR9LA0KPiArICB7RUZJX0FDUElfNl8yX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURfQ09O RklHVVJBVElPTl9TUEFDRV9CQVNFX0FERFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJF LA0KPiArICAgUGFyc2VBY3BpTWNmZ30sDQo+ICsgIHtSU0RQX1RBQkxFX0lORk8sIFBhcnNlQWNw aVJzZHB9LA0KPiArICB7RUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElPTl9U QUJMRV9TSUdOQVRVUkUsIFBhcnNlQWNwaVNsaXR9LA0KPiArICB7RUZJX0FDUElfNl8yX1NFUklB TF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfU0lHTkFUVVJFLCBQYXJzZUFjcGlTcGNy fSwNCj4gKyAge0VGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lH TkFUVVJFLCBQYXJzZUFjcGlTcmF0fSwNCj4gKyAge0VGSV9BQ1BJXzZfMl9TRUNPTkRBUllfU1lT VEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwgUGFyc2VBY3BpU3NkdH0sDQo+ICsgIHtF RklfQUNQSV82XzJfRVhURU5ERURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwg UGFyc2VBY3BpWHNkdH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVy cyBhbGwgdGhlIGF2YWlsYWJsZSB0YWJsZSBwYXJzZXJzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4N Cj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxp ZC4NCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0 ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyov DQo+ICtFRklfU1RBVFVTDQo+ICtSZWdpc3RlckFsbFBhcnNlcnMgKA0KPiArICApDQo+ICt7DQo+ ICsgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiArICBVSU5UTiBDb3VudCA9IHNpemVvZiAoUGFyc2Vy TGlzdCkgLyBzaXplb2YgKFBhcnNlckxpc3RbMF0pOw0KPiArICB3aGlsZSAoQ291bnQtLSAhPSAw KSB7DQo+ICsgICAgU3RhdHVzID0gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICAgICAg UGFyc2VyTGlzdFtDb3VudF0uU2lnbmF0dXJlLA0KPiArICAgICAgICAgICAgICAgUGFyc2VyTGlz dFtDb3VudF0uUGFyc2VyDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgfQ0KPiArICB9 DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm4gdGhl IGZpbGUgbmFtZSBvZiB0aGUgaGVscCB0ZXh0IGZpbGUgaWYgbm90IHVzaW5nIEhJSS4NCj4gKw0K PiArICBAcmV0dXJuIFRoZSBzdHJpbmcgcG9pbnRlciB0byB0aGUgZmlsZSBuYW1lLg0KPiArKi8N Cj4gK0NPTlNUIENIQVIxNioNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5h bWVBY3BpVmlldyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gZ1NoZWxs QWNwaVZpZXdGaWxlTmFtZTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbnN0cnVjdG9yIGZv ciB0aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFuZCBsaWJyYXJ5Lg0KPiArDQo+ICsgIEluc3RhbGwg dGhlIGhhbmRsZXJzIGZvciBhY3BpdmlldyBVRUZJIFNoZWxsIGNvbW1hbmQuDQo+ICsNCj4gKyAg QHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJv Y2Vzcy4NCj4gKyAgQHBhcmFtIFN5c3RlbVRhYmxlICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0g VGFibGUgcG9pbnRlci4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgU2hlbGwgY29tbWFuZCBoYW5kbGVycyB3ZXJlIGluc3RhbGxlZA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklD RV9FUlJPUiAgICAgIEhpaSBwYWNrYWdlIGZhaWxlZCB0byBpbnN0YWxsLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3Ry dWN0b3IgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4g RUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NU QVRVUyBTdGF0dXM7DQo+ICsgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID0gTlVMTDsNCj4gKw0K PiArICAvLyBDaGVjayBTaGVsbCBQcm9maWxlIERlYnVnMSBiaXQgb2YgdGhlIHByb2ZpbGVzIG1h c2sNCj4gKyAgaWYgKChGaXhlZFBjZEdldDggKFBjZFNoZWxsUHJvZmlsZU1hc2spICYgQklUMSkg PT0gMCkgew0KPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0 YXR1cyA9IFJlZ2lzdGVyQWxsUGFyc2VycyAoKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiArICAgIFByaW50IChMImFjcGl2aWV3OiBFcnJvciBmYWlsZWQgdG8gcmVnaXN0ZXIg cGFyc2VyLlxuIik7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIGdT aGVsbEFjcGlWaWV3SGlpSGFuZGxlID0gSGlpQWRkUGFja2FnZXMgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmdTaGVsbEFjcGlWaWV3SGlpR3VpZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYlN0cmluZ3MsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPiArICBpZiAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPT0gTlVMTCkgew0KPiAr ICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiArICB9DQo+ICsgIC8vIEluc3RhbGwgb3Vy IFNoZWxsIGNvbW1hbmQgaGFuZGxlcg0KPiArICBTaGVsbENvbW1hbmRSZWdpc3RlckNvbW1hbmRO YW1lICgNCj4gKyAgICBMImFjcGl2aWV3IiwNCj4gKyAgICBTaGVsbENvbW1hbmRSdW5BY3BpVmll dywNCj4gKyAgICBTaGVsbENvbW1hbmRHZXRNYW5GaWxlTmFtZUFjcGlWaWV3LA0KPiArICAgIDAs DQo+ICsgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgVFJVRSwNCj4gKyAgICBnU2hlbGxBY3BpVmll d0hpaUhhbmRsZSwNCj4gKyAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVMUF9BQ1BJVklFVykN Cj4gKyAgICApOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIERlc3RydWN0b3IgZm9yIHRoZSBsaWJyYXJ5LiBmcmVlIGFueSByZXNvdXJjZXMu DQo+ICsNCj4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRs ZSBvZiB0aGUgcHJvY2Vzcy4NCj4gKyAgQHBhcmFtIFN5c3RlbVRhYmxlICAgICAgICAgICAgVGhl IEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklB UEkNCj4gK1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3IgKA0KPiArICBJTiBF RklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAg KlN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3SGlpSGFu ZGxlICE9IE5VTEwpIHsNCj4gKyAgICBIaWlSZW1vdmVQYWNrYWdlcyAoZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGUpOw0KPiArICB9DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gZGlm ZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uNTljOGUyMTU0NGQ2ODI5YWM4NzI5NThmNmI4NDM1OGUxZjkxYjAyZg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+IEBAIC0wLDAgKzEsMzIgQEAN Cj4gKy8qKg0KPiArICBIZWFkZXIgZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5kIGZ1 bmN0aW9ucy4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgVUVGSV9TSEVMTF9BQ1BJ VklFV19DT01NQU5EX0xJQl9IXw0KPiArI2RlZmluZSBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1B TkRfTElCX0hfDQo+ICsNCj4gK2V4dGVybiBFRklfSElJX0hBTkRMRSBnU2hlbGxBY3BpVmlld0hp aUhhbmRsZTsNCj4gKw0KPiArLyoqDQo+ICsgIEZ1bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNvbW1h bmQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFn ZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50 ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ICsqLw0KPiArU0hF TExfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3ICgNCj4gKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFC TEUgICpTeXN0ZW1UYWJsZQ0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLy8gVUVGSV9TSEVMTF9B Q1BJVklFV19DT01NQU5EX0xJQl9IXw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmlu ZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJkYjdlMzAxYjRhNTNl NTM4ODZlOWExZjA1YjNmYjI5MjFhOTBkOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi5pbmYNCj4gQEAgLTAsMCArMSw3NCBAQA0KPiArIyMgIEBmaWxlDQo+ICsjIFBy b3ZpZGVzIFNoZWxsICdhY3BpdmlldycgY29tbWFuZCBmdW5jdGlvbnMNCj4gKyMNCj4gKyMgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gKyMNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAg ICAgICAgICAgICA9IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiArICBGSUxFX0dVSUQg ICAgICAgICAgICAgICAgICAgICAgPSBGQjVCMzA1RS04NEY1LTQ2MUYtOTQwRC04MkQzNDU3NTdB RkENCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9BUFBMSUNBVElP Tg0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFS WV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTlVMTHxVRUZJX0FQUExJQ0FUSU9OIFVFRklfRFJJ VkVSDQo+ICsgIENPTlNUUlVDVE9SICAgICAgICAgICAgICAgICAgICA9IFVlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgICAgICAgICAgICAg ICAgICA9IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3INCj4gKw0KPiArW1Nv dXJjZXMuY29tbW9uXQ0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ICsg IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi5oDQo+ICsgIEFjcGlQYXJzZXIuYw0KPiArICBBY3BpVGFibGVQYXJzZXIuYw0KPiAr ICBBY3BpVmlldy5jDQo+ICsgIFBhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMNCj4gKyAgUGFyc2Vy cy9EYmcyL0RiZzJQYXJzZXIuYw0KPiArICBQYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+ICsg IFBhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gKyAgUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIu Yw0KPiArICBQYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5jDQo+ICsgIFBhcnNlcnMvTWFkdC9NYWR0 UGFyc2VyLmMNCj4gKyAgUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXIuYw0KPiArICBQYXJzZXJzL1Jz ZHAvUnNkcFBhcnNlci5jDQo+ICsgIFBhcnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMNCj4gKyAgUGFy c2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiArICBQYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+ ICsgIFBhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLmMNCj4gKyAgUGFyc2Vycy9Yc2R0L1hzZHRQYXJz ZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNo ZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0K PiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gKyAg QmFzZUxpYg0KPiArICBCYXNlTWVtb3J5TGliDQo+ICsgIERlYnVnTGliDQo+ICsgIFNoZWxsQ29t bWFuZExpYg0KPiArICBTaGVsbExpYg0KPiArICBVZWZpTGliDQo+ICsgIFVlZmlSdW50aW1lU2Vy dmljZXNUYWJsZUxpYg0KPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gKyAgUGNkTGli DQo+ICsgIEhpaUxpYg0KPiArICBQcmludExpYg0KPiArICBGaWxlSGFuZGxlTGliDQo+ICsNCj4g Kw0KPiArW0ZpeGVkUGNkXQ0KPiArICBnRWZpU2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVs bFByb2ZpbGVNYXNrICMjIENPTlNVTUVTDQo+ICsNCj4gK1tHdWlkc10NCj4gKyAgZ1NoZWxsQWNw aVZpZXdIaWlHdWlkICAgICAgICAgICAjIyBDT05TVU1FUyAjIyBISUkNCj4gKyAgZ0VmaUFjcGlU YWJsZUd1aWQgICAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMgIyMgU3lzdGVtVGFi bGUNCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkgYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu dW5pDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNGQ2NmUxZmY1MDcwNTRkNGFhNDJiZDQ3YmZhZTg4MjRj MjE4ZTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+IEBA IC0wLDAgKzEsMTI3IEBADQo+ICsvLyAvKioNCj4gKy8vDQo+ICsvLyBDb3B5cmlnaHQgKGMpIDIw MTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsvLyBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsvLyBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UNCj4gKy8vIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArLy8g aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArLy8NCj4g Ky8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiIEJBU0lTLA0KPiArLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKy8vDQo+ICsv LyBNb2R1bGUgTmFtZToNCj4gKy8vDQo+ICsvLyBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu dW5pDQo+ICsvLw0KPiArLy8gQWJzdHJhY3Q6DQo+ICsvLw0KPiArLy8gU3RyaW5nIGRlZmluaXRp b25zIGZvciBVRUZJIFNoZWxsIGFjcGl2aWV3IGNvbW1hbmQNCj4gKy8vDQo+ICsvLw0KPiArLy8g Ki8NCj4gKw0KPiArLz0jDQo+ICsNCj4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ICsN Cj4gKyNzdHJpbmcgU1RSX0dFTl9QUk9CTEVNICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVI JXMlTjogVW5rbm93biBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX05P X1ZBTFVFICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBNaXNzaW5nIGFyZ3VtZW50 IGZvciBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBUb28gbWFueSBhcmd1bWVudHMuXHJcbiIN Cj4gKyNzdHJpbmcgU1RSX0dFTl9NSVNTSU5HX09QVElPTiAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVI JXMlTjogTWlzc2luZyBvcHRpb24gJyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVzJU4n XHJcbiINCj4gKyNzdHJpbmcgU1RSX0dFTl9SRUFET05MWV9NRURJQSAgICAjbGFuZ3VhZ2UgZW4t VVMgIiVIJXMlTjogVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgY2hl Y2sgaWYgbWVkaWEgaXMgd3JpdGFibGUuXHJcbiINCj4gKw0KPiArI3N0cmluZyBTVFJfR0VUX0hF TFBfQUNQSVZJRVcgICAjbGFuZ3VhZ2UgZW4tVVMgIiINCj4gKyIuVEggYWNwaXZpZXcgMCAiRGlz cGxheSBBQ1BJIGluZm9ybWF0aW9uLiJcclxuIg0KPiArIi5TSCBOQU1FXHJcbiINCj4gKyJEaXNw bGF5IEFDUEkgVGFibGUgaW5mb3JtYXRpb24uXHJcbiINCj4gKyIuU0ggU1lOT1BTSVNcclxuIg0K PiArIiBcclxuIg0KPiArIkFDUElWSUVXIFtbLT9dIHwgW1stbF0gfCBbLXMgQWNwaVRhYmxlIFst ZF1dXSBbLWNdIFstdl0gWy1oIEhpZ2hsaWdodF1dXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0gg T1BUSU9OU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0 YWxsZWQgQUNQSSBUYWJsZXMuXHJcbiINCj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVj aWZpZWQgQWNwaVRhYmxlIHR5cGUuXHJcbiINCj4gKyIgICAgICAgICBBY3BpVGFibGUgICAgOiBU aGUgcmVxdWlyZWQgQUNQSSBUYWJsZSB0eXBlLlxyXG4iDQo+ICsiICAtZCAtIEdlbmVyYXRlIGEg YmluYXJ5IGZpbGUgZHVtcCBvZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiArIiAg LWMgLSBDb25zaXN0ZW5jeSBjaGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiAr IiAgLXYgLSBEaXNwbGF5IHZlcmJvc2UgZGF0YSAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0K PiArIiAgLWggLSBFbmFibGUvRGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4iDQo+ICsi ICAgICAgICAgSGlnaGxpZ2h0ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxu Ig0KPiArIiAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFL09GRiAoZGVmYXVsdCkgZGlzYWJs ZXMgaGlnaGxpZ2h0aW5nLlxyXG4iDQo+ICsiICAtPyAtIFNob3cgaGVscC5cclxuIg0KPiArIiBc clxuIg0KPiArIi5TSCBERVNDUklQVElPTlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUaGlzIHBy b2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQSSB0YWJsZSB2YWx1 ZXMgZnJvbSB0aGVcclxuIg0KPiArIiAgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBp bnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxseSBhdCB0aGF0IHN0YWdlIHdoZXJlXHJcbiINCj4gKyIg IHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBib290LlxyXG4iDQo+ICsiICBU aGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRldGFp bGVkIGtub3dsZWRnZSBvZiBhXHJcbiINCj4gKyIgIGxpbWl0ZWQgbnVtYmVyIG9mIHRhYmxlIHR5 cGVzLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNw bGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ICsiICAnS25v d24nIHRhYmxlIHR5cGVzIChsaXN0ZWQgaW4gTk9URVMgYmVsb3cpIHdpbGwgYmUgcGFyc2VkIGFu ZCBkaXNwbGF5ZWRcclxuIg0KPiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZpZWxkIHZhbHVl cy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mIGNvbnNpc3RlbmN5XHJcbiINCj4gKyIg IGNoZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1 dC5cclxuIg0KPiArIiAgT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4g YXJyYXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgIFRvIGZh Y2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8g Z2VuZXJhdGUgYVxyXG4iDQo+ICsiICBiaW5hcnkgZmlsZSBpbWFnZSBvZiBhIHRhYmxlIHRoYXQg Y2FuIGJlIGNvcGllZCBlbHNld2hlcmUgZm9yIGludmVzdGlnYXRpb25cclxuIg0KPiArIiAgdXNp bmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhpcyBpcyBl c3BlY2lhbGx5IHJlbGV2YW50XHJcbiINCj4gKyIgIGZvciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBE U0RUIGFuZCBTU0RULlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiTk9URVM6XHJcbiINCj4gKyIgIDEu IFRoZSBBY3BpVGFibGUgcGFyYW1ldGVyIGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRhYmxlIHR5 cGUuXHJcbiINCj4gKyIgICAgIFRhYmxlcyB3aXRob3V0IHNwZWNpZmljIGhhbmRsaW5nIHdpbGwg YmUgZGlzcGxheWVkIGFzIGEgcmF3IGhleCBkdW1wIChvclxyXG4iDQo+ICsiICAgICBkdW1wZWQg dG8gYSBmaWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ICsiICAyLiBGb3JtYXR0ZWQgZGlzcGxh eSBhbmQgY2hlY2tpbmcgaXMgcHJvdmlkZWQgZm9yIHRoZXNlIHNpZ25hdHVyZSB0eXBlczpcclxu Ig0KPiArIiAgICAgICBBUElDICAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRpb24gVGFibGUgKE1B RFQpXHJcbiINCj4gKyIgICAgICAgQkdSVCAgLSBCb290IEdyYXBoaWNzIFJlc291cmNlIFRhYmxl XHJcbiINCj4gKyIgICAgICAgREJHMiAgLSBEZWJ1ZyBQb3J0IFRhYmxlIDJcclxuIg0KPiArIiAg ICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKEZBRFQpXHJcbiINCj4g KyIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVyIERlc2NyaXB0aW9uIFRhYmxlXHJcbiINCj4g KyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBpbmcgVGFibGVcclxuIg0KPiArIiAgICAgICBNQ0ZH ICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNwYWNlIEJhc2UgQWRkcmVzcyBEZXNjcmlwdGlvbiBU YWJsZVxyXG4iDQo+ICsiICAgICAgIFJTRFAgIC0gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9p bnRlclxyXG4iDQo+ICsiICAgICAgIFNMSVQgIC0gU3lzdGVtIExvY2FsaXR5IEluZm9ybWF0aW9u IFRhYmxlXHJcbiINCj4gKyIgICAgICAgU1BDUiAgLSBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGly ZWN0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAgICAgU1JBVCAgLSBTeXN0ZW0gUmVzb3VyY2UgQWZm aW5pdHkgVGFibGVcclxuIg0KPiArIiAgICAgICBYU0RUICAtIEV4dGVuZGVkIFN5c3RlbSBEZXNj cmlwdGlvbiBUYWJsZVxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIFNUQU5EQVJEU1xyXG4iDQo+ ICsiIFxyXG4iDQo+ICsiICBUYWJsZSBkZXRhaWxzIGNvcnJlc3BvbmQgdG8gdGhvc2UgaW4gJ0Fk dmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyXHJcbiINCj4gKyIgIEludGVyZmFjZSBTcGVj aWZpY2F0aW9uJyBWZXJzaW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3XVxyXG4iDQo+ ICsiICAoaHR0cDovL3d3dy51ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL3Jlc291cmNlcy9B Q1BJJTIwNl8yX0FfU2VwdDI5LnBkZilcclxuIg0KPiArIiBcclxuIg0KPiArIiAgTk9URTogVGhl IG5hdHVyZSBvZiB0aGUgQUNQSSBzdGFuZGFyZCBtZWFucyB0aGF0IGFsbW9zdCBhbGwgdGFibGVz IGluIDYuMSB3aWxsXHJcbiINCj4gKyIgICAgICAgIGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScg d2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGluXHJcbiINCj4gKyIgICAg ICAgIHRlcm1zIG9mIHN0cnVjdHVyZSwgc28gZm9ybWF0dGVkIG91dHB1dCBzaG91bGQgYmUgY29y cmVjdC4gIFRoZSBtYWluXHJcbiINCj4gKyIgICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQg cHJldmlvdXNseSAncmVzZXJ2ZWQnIGZpZWxkcyB3aWxsIGJlIHJlcG9ydGVkXHJcbiINCj4gKyIg ICAgICAgIHdpdGggbmV3IG5hbWVzLCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRl ciB2ZXJzaW9ucyBvZiB0aGVcclxuIg0KPiArIiAgICAgICAgc3BlY2lmaWNhdGlvbi5cclxuIg0K PiArIiBcclxuIg0KPiArIi5TSCBFWEFNUExFU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiIFxyXG4i DQo+ICsiRVhBTVBMRVM6XHJcbiINCj4gKyIgICogVG8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIGlu c3RhbGxlZCB0YWJsZSB0eXBlczpcclxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxcclxu Ig0KPiArIiBcclxuIg0KPiArIiAgKiBUbyBwYXJzZSBhbmQgZGlzcGxheSBhIHNwZWNpZmljIHRh YmxlIHR5cGU6XHJcbiINCj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdURFRcclxuIg0KPiAr IiBcclxuIg0KPiArIiAgKiBUbyBzYXZlIGEgYmluYXJ5IGR1bXAgb2YgdGhlIGNvbnRlbnRzIG9m IGEgdGFibGUgdG8gYSBmaWxlXHJcbiINCj4gKyIgICAgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBk aXJlY3Rvcnk6XHJcbiINCj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIERTRFQgLWRcclxuIg0K PiArIiBcclxuIg0KPiArIiAgKiBUbyBkaXNwbGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxl czpcclxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZpZXdcclxuIg0KPiArIiBcclxuIg0KPiArIi5T SCBSRVRVUk5WQUxVRVNcclxuIg0KPiArIiBcclxuIg0KPiArIlJFVFVSTiBWQUxVRVM6XHJcbiIN Cj4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgRGF0YSB3YXMgZGlzcGxheWVkIGFzIHJl cXVlc3RlZC5cclxuIg0KPiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBBQ1BJIFRhYmxl IHBhcnNpbmcgZmFpbGVkLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL1NoZWxsUGtnLmRlYyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBpbmRleCAwYzRm NzRmZjQxNzI2YzRhMjhlZDA4Mjg0OWMxYjg2NGIxYzQ4NzUyLi5jMDkwYWE0ZDA4YmUzYWFkNGQ5 YWVkYjU0MmMwMTA1NmJjZTQ2OTY5IDEwMDY0NA0KPiAtLS0gYS9TaGVsbFBrZy9TaGVsbFBrZy5k ZWMNCj4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+IEBAIC0zLDYgKzMsNyBAQA0KPiAg ICMNCj4gICAjIChDKSBDb3B5cmlnaHQgMjAxMy0yMDE0IEhld2xldHQtUGFja2FyZCBEZXZlbG9w bWVudCBDb21wYW55LCBMLlAuPEJSPg0KPiAgICMgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxOCwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIyBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ICAgIw0KPiAgICMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyDQo+ICAgIyB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLg0KPiBAQCAtNTYsNyArNTcsNyBAQCBbR3VpZHNdDQo+ICAgICBnU2hlbGxO ZXR3b3JrMkhpaUd1aWQgICAgICAgICAgID0gezB4MTc0YjJiNSwgMHhmNTA1LCAweDRiMTIsIHsw eGFhLCAweDYwLCAweDU5LCAweGRmLCAweGY4LCAweGQ2LCAweGVhLCAweDM3fX0NCj4gICAgIGdT aGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg3MzhhOTMxNCwgMHg4MmMxLCAweDQ1 OTIsIHsweDhmLCAweGY3LCAweGMxLCAweGJkLCAweGYxLCAweGIyLCAweDBlLCAweGQ0fX0NCj4g ICAgIGdTaGVsbEJjZmdIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgz LCAweDRhMmQsIHsweGE2LCAweGIyLCAweGViLCAweDEyLCAweGRhLCAweGI0LCAweGEyLCAweGI2 fX0NCj4gLQ0KPiArICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgID0gezB4ZGE4Y2Nk ZjQsIDB4ZWQ4ZiwgMHg0ZmZjLCB7MHhiNSwgMHhlZiwgMHgyZSwgMHhmNSwgMHg1ZSwgMHgyNCwg MHg5MywgMHgyYX19DQo+ICAgICAjIEZJTEVfR1VJRCBhcyBkZWZpbmVkIGluIFNoZWxsUGtnL0Fw cGxpY2F0aW9uL1NoZWxsL1NoZWxsLmluZg0KPiAgICAgZ1VlZmlTaGVsbEZpbGVHdWlkICAgICAg ICAgICAgICA9IHsweDdjMDRhNTgzLCAweDllM2UsIDB4NGYxYywgezB4YWQsIDB4NjUsIDB4ZTAs IDB4NTIsIDB4NjgsIDB4ZDAsIDB4YjQsIDB4ZDF9fQ0KPiANCj4gLS0NCj4gJ0d1aWQoQ0UxNjU2 NjktM0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5KScNCj4gDQo+IA0KU2FtaSwNClRoYW5rIHlv dSB2ZXJ5IG11Y2ggZm9yIHRoZSBiaWcgZmVhdHVyZSBlbmFibGluZy4NClJldmlld2VkLWJ5OiBS dWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0KDQpNYXliZSBtaW5vciBidWdzIGV4aXN0LiBM ZXQncyBmaXggdGhlbSBhZnRlciBjaGVja2luZyB0aGUgYmlnIHBhdGNoIGluLg0KDQotLSANClRo YW5rcywNClJheQ0K