From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=33TGHub/; spf=pass (domain: arm.com, ip: 40.107.13.42, mailfrom: jeff.booher-kaeding@arm.com) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (EUR01-HE1-obe.outbound.protection.outlook.com [40.107.13.42]) by groups.io with SMTP; Mon, 05 Aug 2019 14:15:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jSGeoNX9MjPJpBk5MUIoUE3N5T7S+0Ditgyh48tqD9I06dz7zWileHdJnkY1I8xH2Bb0GBWpMFGZZ4xiJo9UTF99bSGgf4DR1U9mBYRIXVlnUG798wqFzm2Z4bC4tLKYrwBO9GtArEj1Va6osPikHjo7R2oiP+3BbkXfFNI7rVQ0KHWraOuARDiXbrQq0VAJuSy7w0Cp/DLyfd0FdAxdIZ841ikE0eNtp50njmA5qygY1AlcTnsfUM1+/LCjR+h/8ewTl/nK8Y5FCCTkcEo7qGmlJ2zLdy/vGD0LYed4dMEgZcpanmPpHjQJxLyfGpHMCBNh6gELqvmBpmGm32N41Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/WXq8m4U9N6eVjWE/VH9IlxVmAC0JvJpNOjW+qOgNKI=; b=oGiXEdCMMi0aTyM6XD4bGrc1dPQE/lW1AI9LWE2UEWqp6LUir0jC+9nikVLklcTnF/TeW/S4pFtD0HGPcYXHLrDBxSkblzO7vMosd8jJ63EFKPM6aq2iW/3VJm7nsuMuW1FkK09luOmqcQn9/Nc5ZUZhqvxaKBOEd2vyr0O8KHcerDR9IPRbGnZ6L1UqMvDShWC/iPfyT36Fkwwm+hcwCtchftdfAgsu+Ds3I+P+JLSiQrkRg9CFAa7TCMsYiQOSE59PS9MtPkMJ8d77YKpsnrIDwJEGD/UMCiE+ese9J8Z9gicDTqgboTS2BsWi13oPjb/lIgc27+nnmEu3zcy+hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=arm.com;dmarc=pass action=none header.from=arm.com;dkim=pass header.d=arm.com;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/WXq8m4U9N6eVjWE/VH9IlxVmAC0JvJpNOjW+qOgNKI=; b=33TGHub/DRenQIba9XAbT9+T09MEOL8ASPl1edVfK0G+peRRGbCb8OcmCy77ZGZynLeRG/SiAoJ9Ve2gp02FlQozhVwl7oY2TB4oLPmnJ/B4+biWEETYVzRBxvhWeSNojS/fF9IbXO0XLMhAd6OM2uKsht5mCyTGLt3zDyMw60g= Received: from AM0PR08MB5171.eurprd08.prod.outlook.com (10.255.28.153) by AM0PR08MB5281.eurprd08.prod.outlook.com (20.178.117.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2136.14; Mon, 5 Aug 2019 21:15:23 +0000 Received: from AM0PR08MB5171.eurprd08.prod.outlook.com ([fe80::64fb:c65e:471b:dec9]) by AM0PR08MB5171.eurprd08.prod.outlook.com ([fe80::64fb:c65e:471b:dec9%7]) with mapi id 15.20.2136.018; Mon, 5 Aug 2019 21:15:23 +0000 From: Jeff Booher-Kaeding To: shrishail , "devel@edk2.groups.io" CC: "eric.jin@intel.com" , Supreeth Venkatesh Subject: Re: [edk2-test][PATCH V2 1/3] Adding HII Config Access Protocol Thread-Topic: [edk2-test][PATCH V2 1/3] Adding HII Config Access Protocol Thread-Index: AQHVSDduagwsJZ9+TEOXuBDFipe2r6btFVOA Date: Mon, 5 Aug 2019 21:15:22 +0000 Message-ID: References: <20190801070326.1852-1-shrishail.patil@microchip.com> <20190801070326.1852-2-shrishail.patil@microchip.com> In-Reply-To: <20190801070326.1852-2-shrishail.patil@microchip.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN4PR0501CA0151.namprd05.prod.outlook.com (2603:10b6:803:2c::29) To AM0PR08MB5171.eurprd08.prod.outlook.com (2603:10a6:208:159::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Jeff.Booher-Kaeding@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: Evolution 3.28.5-0ubuntu0.18.04.1 x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b30edced-b352-453d-bd8a-08d719ea06ef x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:AM0PR08MB5281; x-ms-traffictypediagnostic: AM0PR08MB5281: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 01208B1E18 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(346002)(39860400002)(136003)(366004)(376002)(396003)(40434004)(189003)(199004)(86362001)(6246003)(66556008)(66946007)(3846002)(6116002)(64756008)(66476007)(229853002)(66446008)(76176011)(2906002)(50226002)(966005)(118296001)(6506007)(305945005)(14454004)(81166006)(81156014)(8676002)(2501003)(8936002)(36756003)(7736002)(386003)(53376002)(186003)(6436002)(99286004)(54906003)(316002)(110136005)(486006)(25786009)(4326008)(476003)(2616005)(53936002)(6306002)(53946003)(6512007)(68736007)(11346002)(16799955002)(446003)(15188155005)(71200400001)(30864003)(6486002)(478600001)(52116002)(66574012)(26005)(102836004)(5660300002)(66066001)(256004)(5024004)(14444005)(71190400001)(99106002)(579004)(559001)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR08MB5281;H:AM0PR08MB5171.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ppP7ENVelMHidZ5zA2k6a4ZtgJpAjZpvodzyavpezYhq3wHAZf1m7bB8Pos+Ky5yEvVJgilBxTrnNwO6GZte4cW/q8l3iFIP2K/1XRsKQVxcbSloVz2zfoSN2ZJBV7raIyYtiafd21dnsLLIkQVn76WY3MfWb7dX392E/leL2vlE5H7Gi4/bCWsjXfgN3lvfUSyJGZGOUCgo4F/FyzRfHn+m05ZpyAt5VAQDS9ZHXP1kmN77ze67bKYBnSVZGidXoeulx1G3vFC7kWejj9Xwp1waoDBuSfgfPDYZirt2LZ2vXWxLDAv60jk6y8OFQITAnAZswi76vmIT3GKIEhLi3rcS6NLhLxfmLik/gsOVxbU4A0Rp+7OB5KlVodu3RdDt9ODZPS7pXpanSTs03zvGRDfhyIIFE06vsREOvpI7MmA= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: b30edced-b352-453d-bd8a-08d719ea06ef X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2019 21:15:22.9268 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Jeff.Booher-Kaeding@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5281 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 TXkgY29tbWVudHMgYXJlIGlubGluZSwgYW5kIG15IHJldmlldyBpcyBjb25kdGlvbmFsIHVwb24g Zml4aW5nIHRoZW0NCg0KUmV2aWV3ZWQtYnk6IEplZmYgQm9vaGVyLUthZWRpbmcgPEplZmYuQm9v aGVyLUthZWRpbmdAYXJtLmNvbT4NCg0KT24gVGh1LCAyMDE5LTA4LTAxIGF0IDEyOjMzICswNTMw LCBzaHJpc2hhaWwgd3JvdGU6DQo+IEZyb206IFNocmlzaGFpbCBQYXRpbCA8U2hyaXNoYWlsLlBh dGlsQG1pY3JvY2hpcC5jb20+DQo+DQo+IEFkZGluZyBISUkgQ29uZmlnIEFjY2VzcyBQcm90b2Nv bCB0byBJSFZTQ1QNCj4gVGhpcyBwYXRjaCBjb250YWlucyBzb3VyY2UgY29kZSB3aGljaCBpcyBj b3BpZWQgZnJvbQ0KPiBVRUZJU0NUIGFuZCBhZGRlZCBpbnRvIElIVlNDVC4NCj4gQ29udHJpYnV0 ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWduZWQt b2ZmLWJ5OiBzaHJpc2hhaWwgcGF0aWwgPHNocmlzaGFpbC5wYXRpbEBtaWNyb2NoaXAuY29tPg0K PiAtLS0NCj4gLi4uL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvR3VpZC5jICAgICAgIHwg IDQ2ICsNCj4gLi4uL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvR3VpZC5oICAgICAgIHwg MTA5ICsrKw0KPiAuLi4vSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2UuYyAgICAgICAg fCA5MDgNCj4gKysrKysrKysrKysrKysrKysrDQo+IC4uLi9ISUlDb25maWdBY2Nlc3NCQlRlc3RG dW5jdGlvbi5jICAgICAgICAgICB8IDYwNiArKysrKysrKysrKysNCj4gLi4uL0JsYWNrQm94VGVz dC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmMgIHwgNjU1ICsrKysrKysrKysrKysNCj4gLi4u L0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmggIHwgMTY4ICsrKysNCj4g Li4uL0JsYWNrQm94VGVzdC9JaHZISUlDb25maWdBY2Nlc3NCQlRlc3QuaW5mIHwgIDU1ICsrDQo+ IDcgZmlsZXMgY2hhbmdlZCwgMjU0NyBpbnNlcnRpb25zKCspDQo+IGNyZWF0ZSBtb2RlIDEwMDY0 NCB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvDQo+IEhJSUNvbmZp Z0FjY2Vzcy9CbGFja0JveFRlc3QvR3VpZC5jDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCB1ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvDQo+IEhJSUNvbmZpZ0FjY2Vzcy9C bGFja0JveFRlc3QvR3VpZC5oDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCB1ZWZpLXNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvDQo+IEhJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRl c3QvSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2UuYw0KPiBjcmVhdGUgbW9kZSAxMDA2 NDQgdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sLw0KPiBISUlDb25m aWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdEZ1bmN0aW9uLmMNCj4g Y3JlYXRlIG1vZGUgMTAwNjQ0IHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90 b2NvbC8NCj4gSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRl c3RNYWluLmMNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9V RUZJL0lIVi9Qcm90b2NvbC8NCj4gSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25m aWdBY2Nlc3NCQlRlc3RNYWluLmgNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IHVlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC8NCj4gSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94 VGVzdC9JaHZISUlDb25maWdBY2Nlc3NCQlRlc3QuaW5mDQo+DQo+IGRpZmYgLS1naXQgYS91ZWZp LQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vz cy9CbGFja0JveFRlc3QvR3UNCj4gaWQuYyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9HdQ0KPiBpZC5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwLi42YTZkNGU2MA0KPiAt LS0gL2Rldi9udWxsDQo+DQo+ICsrKyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVG SS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9HdQ0KPiBpZC5jDQo+ IEBAIC0wLDAgKzEsNDYgQEANCj4gKy8qKiBAZmlsZQ0KPiArDQo+ICsgIENvcHlyaWdodCAyMDA2 IC0gMjAxMiBVbmlmaWVkIEVGSSwgSW5jLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDEwIC0g MjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiAr ICBDb3B5cmlnaHQgKGMpIDIwMTksTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLg0KPiArICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+ IHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UNCj4gbWF5IGJlIGZvdW5kIGF0DQo+ICsg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiAr ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MNCj4gT1IgSU1QTElFRC4NCj4gKw0KPiAr KiovDQo+ICsvKisrDQo+ICsNCj4gKyBNb2R1bGUgTmFtZToNCj4gKw0KPiArICAgR3VpZC5jDQo+ ICsNCj4gKyBBYnN0cmFjdDoNCj4gKw0KPiArICAgR1VJRHMgYXV0by1nZW5lcmF0ZWQgZm9yIEVG SSB0ZXN0IGFzc2VydGlvbi4NCj4gKw0KPiArLS0qLw0KPiArDQo+ICsjaW5jbHVkZSAiSElJQ29u ZmlnQWNjZXNzQkJUZXN0TWFpbi5oIg0KPiArDQoNCm5pdDogY29udmV0aW9uYWxseSBlYWNoIEdV SUQgaW4gdGhpcyBmaWxlIGhhcyBoYXMgYmxhbmsgbGluZXMgaW5iZXR3ZWVuDQo+ICtFRklfR1VJ RA0KPiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDAxPUVG SV9URVNUX0hJSUNPTkZJR0ENCj4gQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDAx X0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VB c3NlcnRpb25HdWlkMDAyPUVGSV9URVNUX0hJSUNPTkZJR0ENCj4gQ0NFU1NCQlRFU1RDT05GT1JN QU5DRV9BU1NFUlRJT05fMDAyX0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNz QkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDAzPUVGSV9URVNUX0hJSUNPTkZJR0ENCj4g Q0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDAzX0dVSUQ7DQo+ICtFRklfR1VJRA0K PiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDA0PUVGSV9U RVNUX0hJSUNPTkZJR0ENCj4gQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDA0X0dV SUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3Nl cnRpb25HdWlkMDA1PUVGSV9URVNUX0hJSUNPTkZJR0ENCj4gQ0NFU1NCQlRFU1RDT05GT1JNQU5D RV9BU1NFUlRJT05fMDA1X0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJU ZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDA2PUVGSV9URVNUX0hJSUNPTkZJR0ENCj4gQ0NF U1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDA2X0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBn SElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDA3PUVGSV9URVNU X0hJSUNPTkZJR0ENCj4gQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDA3X0dVSUQ7 DQoNClRoZSBiZWxvdyBpcyBjb21tZW50ZWQgb3V0LCB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBi ZWZvcmUgdXBzdHJlYW0uDQo+ICsvKg0KPiArRUZJX0dVSUQNCj4gZ0hJSUNvbmZpZ0FjY2Vzc0JC VGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAwOD1FRklfVEVTVF9ISUlDT05GSUdBDQo+IEND RVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9OXzAwOF9HVUlEOw0KPiArRUZJX0dVSUQNCj4g Z0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAwOT1FRklfVEVT VF9ISUlDT05GSUdBDQo+IENDRVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9OXzAwOV9HVUlE Ow0KPiArRUZJX0dVSUQNCj4gZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0 aW9uR3VpZDAwMTA9RUZJX1RFU1RfSElJQ09ORklHDQo+IEFDQ0VTU0JCVEVTVENPTkZPUk1BTkNF X0FTU0VSVElPTl8wMDEwX0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJU ZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDAxMT1FRklfVEVTVF9ISUlDT05GSUcNCj4gQUND RVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9OXzAwMTFfR1VJRDsNCj4gK0VGSV9HVUlEDQo+ IGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDEyPUVGSV9U RVNUX0hJSUNPTkZJRw0KPiBBQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDAxMl9H VUlEOw0KPiArKi8NCg0KDQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0RnVu Y3Rpb25Bc3NlcnRpb25HdWlkMDAxPUVGSV9URVNUX0hJSUNPTkZJR0FDQ0UNCj4gU1NCQlRFU1RG VU5DVElPTl9BU1NFUlRJT05fMDAxX0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBnSElJQ29uZmlnQWNj ZXNzQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAyPUVGSV9URVNUX0hJSUNPTkZJR0FDQ0UN Cj4gU1NCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDAyX0dVSUQ7DQo+ICtFRklfR1VJRA0KPiBn SElJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzPUVGSV9URVNUX0hJ SUNPTkZJR0FDQ0UNCj4gU1NCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDAzX0dVSUQ7DQo+ICtF RklfR1VJRA0KPiBnSElJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA0 PUVGSV9URVNUX0hJSUNPTkZJR0FDQ0UNCj4gU1NCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDA0 X0dVSUQ7DQo+IGRpZmYgLS1naXQgYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv SUhWL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvR3UNCj4gaWQuaCBiL3Vl ZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNj ZXNzL0JsYWNrQm94VGVzdC9HdQ0KPiBpZC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwLi5iNzAwMzAyOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3VlZmktDQo+ IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0Js YWNrQm94VGVzdC9HdQ0KPiBpZC5oDQo+IEBAIC0wLDAgKzEsMTA5IEBADQo+ICsvKiogQGZpbGUN Cj4gKw0KPiArICBDb3B5cmlnaHQgMjAwNiAtIDIwMTEgVW5pZmllZCBFRkksIEluYy48QlI+DQo+ ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LE1pY3JvY2hpcCBU ZWNobm9sb2d5IEluYy4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl DQo+IG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT DQo+IE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArLyorKw0KPiArDQo+ICsgTW9kdWxlIE5h bWU6DQo+ICsNCj4gKyAgIEd1aWQuaA0KPiArDQo+ICsgQWJzdHJhY3Q6DQo+ICsNCj4gKyAgIEdV SURzIGF1dG8tZ2VuZXJhdGVkIGZvciBFRkkgdGVzdCBhc3NlcnRpb24uDQo+ICsNCj4gKy0tKi8N Cj4gKw0KPiArI2RlZmluZSBFRklfVEVTVF9ISUlDT05GSUdBQ0NFU1NCQlRFU1RDT05GT1JNQU5D RV9BU1NFUlRJT05fMDAxX0dVSUQNCj4gXA0KPiAreyAweGE3MTczZWI1LCAweGY3NmEsIDB4NGVh MSwgeyAweDk1LCAweGQsIDB4MTQsIDB4OTEsIDB4MWUsIDB4NDksDQo+IDB4ODYsIDB4YzEgfSB9 DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFu Y2VBc3NlcnRpb25HdWlkMDAxOw0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX0hJSUNPTkZJR0FD Q0VTU0JCVEVTVENPTkZPUk1BTkNFX0FTU0VSVElPTl8wMDJfR1VJRA0KPiBcDQo+ICt7IDB4ZmE1 OTczZTIsIDB4ZDA1LCAweDQ0YzIsIHsgMHhhZiwgMHgyZCwgMHgxYiwgMHg2OCwgMHgzMywgMHg0 MiwNCj4gMHg2ZCwgMHg3NiB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdISUlDb25maWdB Y2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDI7DQo+ICsNCj4gKyNkZWZpbmUg RUZJX1RFU1RfSElJQ09ORklHQUNDRVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9OXzAwM19H VUlEDQo+IFwNCj4gK3sgMHg2ZjZkMWRkLCAweDQ5YjgsIDB4NDg4YSwgeyAweGE3LCAweDc1LCAw eGRlLCAweGJjLCAweGM3LCAweDYwLA0KPiAweGZkLCAweDI4IH0gfQ0KPiArDQo+ICtleHRlcm4g RUZJX0dVSUQgZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAw MzsNCj4gKw0KPiArI2RlZmluZSBFRklfVEVTVF9ISUlDT05GSUdBQ0NFU1NCQlRFU1RDT05GT1JN QU5DRV9BU1NFUlRJT05fMDA0X0dVSUQNCj4gXA0KPiAreyAweDI4NjUyNjEzLCAweDZiZjQsIDB4 NGY0MiwgeyAweGFiLCAweGUyLCAweDg0LCAweDRmLCAweDJmLCAweDc3LA0KPiAweGVjLCAweDJm IH0gfQ0KPiArDQo+ICtleHRlcm4gRUZJX0dVSUQgZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZv cm1hbmNlQXNzZXJ0aW9uR3VpZDAwNDsNCj4gKw0KPiArI2RlZmluZSBFRklfVEVTVF9ISUlDT05G SUdBQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDA1X0dVSUQNCj4gXA0KPiAreyAw eGViYmExOTdhLCAweDQ2N2YsIDB4NDczNiwgeyAweDkyLCAweGYyLCAweDExLCAweGIxLCAweDkx LCAweDJlLA0KPiAweGU5LCAweDkwIH0gfQ0KPiArDQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBn SElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDA1Ow0KPiArDQo+ ICsjZGVmaW5lIEVGSV9URVNUX0hJSUNPTkZJR0FDQ0VTU0JCVEVTVENPTkZPUk1BTkNFX0FTU0VS VElPTl8wMDZfR1VJRA0KPiBcDQo+ICt7IDB4MzQxZmUzZTAsIDB4ZjY4OCwgMHg0NWYyLCB7IDB4 OTEsIDB4NTYsIDB4YzcsIDB4YWUsIDB4OWYsIDB4MmMsDQo+IDB4Y2IsIDB4YjAgfSB9DQo+ICsN Cj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3Nl cnRpb25HdWlkMDA2Ow0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX0hJSUNPTkZJR0FDQ0VTU0JC VEVTVENPTkZPUk1BTkNFX0FTU0VSVElPTl8wMDdfR1VJRA0KPiBcDQo+ICt7IDB4MWY5OWViYzgs IDB4MjUzLCAweDQ1NWYsIHsgMHg4OCwgMHhhYywgMHg5ZSwgMHgyYiwgMHhhNiwgMHhkYywNCj4g MHhkNywgMHgyOSB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdISUlDb25maWdBY2Nlc3NC QlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDc7DQo+DQoNClRoZSBiZWxvdyBpcyBjb21t ZW50ZWQgb3V0LCB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBiZWZvcmUgdXBzdHJlYW0uDQo+ICsv Kg0KPiArI2RlZmluZSBFRklfVEVTVF9ISUlDT05GSUdBQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9B U1NFUlRJT05fMDA4X0dVSUQNCj4gXA0KPiAreyAweGJkZWM1YjA4LCAweDQyMywgMHg0ODJiLCB7 IDB4YjcsIDB4ZGYsIDB4ZGUsIDB4YWMsIDB4YWIsIDB4ZjcsDQo+IDB4MTMsIDB4MTEgfSB9DQo+ ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VB c3NlcnRpb25HdWlkMDA4Ow0KPiArDQo+ICsNCj4gKyNkZWZpbmUgRUZJX1RFU1RfSElJQ09ORklH QUNDRVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9OXzAwOV9HVUlEDQo+IFwNCj4gK3sgMHg1 ZmVkMDI0ZCwgMHg4NWYzLCAweDQ1YmYsIHsgMHhiZSwgMHhiMSwgMHhlNCwgMHhmNCwgMHhjYywg MHg4NiwNCj4gMHhlNSwgMHg2MSB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdISUlDb25m aWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDk7DQo+ICsNCj4gKyNkZWZp bmUNCj4gRUZJX1RFU1RfSElJQ09ORklHQUNDRVNTQkJURVNUQ09ORk9STUFOQ0VfQVNTRVJUSU9O XzAwMTBfR1VJRCBcDQo+ICt7IDB4MjJlZTkzOGUsIDB4YTlhZCwgMHg0Y2I5LCB7IDB4OGQsIDB4 NmQsIDB4NiwgMHhlNCwgMHhmYSwgMHhiMywNCj4gMHg3MiwgMHhlNyB9IH0NCj4gKw0KPiArZXh0 ZXJuIEVGSV9HVUlEIGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1 aWQwMDEwOw0KPiArDQo+ICsjZGVmaW5lDQo+IEVGSV9URVNUX0hJSUNPTkZJR0FDQ0VTU0JCVEVT VENPTkZPUk1BTkNFX0FTU0VSVElPTl8wMDExX0dVSUQgXA0KPiAreyAweDIwNTNkM2UwLCAweGVl YmUsIDB4NDM5MSwgeyAweDg0LCAweDdkLCAweGY0LCAweDYwLCAweDFiLCAweDMwLA0KPiAweDRl LCAweDMgfSB9DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJUZXN0 Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDAxMTsNCj4gKw0KPiArI2RlZmluZQ0KPiBFRklfVEVT VF9ISUlDT05GSUdBQ0NFU1NCQlRFU1RDT05GT1JNQU5DRV9BU1NFUlRJT05fMDAxMl9HVUlEIFwN Cj4gK3sgMHg4MWM1ZDdiNywgMHg3ZWJlLCAweDQ0ZTEsIHsgMHg4YSwgMHgxZiwgMHhjYywgMHg0 NywgMHg5YywgMHgyZCwNCj4gMHhmZSwgMHg0ZiB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlE IGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDEyOw0KPiAr Ki8NCg0KDQo+ICsNCj4gKyNkZWZpbmUgRUZJX1RFU1RfSElJQ09ORklHQUNDRVNTQkJURVNURlVO Q1RJT05fQVNTRVJUSU9OXzAwMV9HVUlEIFwNCj4gK3sgMHgyNGRjZjhiZiwgMHhiZmJmLCAweDQ1 ODgsIHsgMHhiYSwgMHhmLCAweDc3LCAweDFlLCAweDI0LCAweDRlLA0KPiAweDNlLCAweDggfSB9 DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25B c3NlcnRpb25HdWlkMDAxOw0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX0hJSUNPTkZJR0FDQ0VT U0JCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDJfR1VJRCBcDQo+ICt7IDB4OTYxYTUyNjgsIDB4 MTk5OCwgMHg0YTdlLCB7IDB4OWQsIDB4OWQsIDB4Y2UsIDB4ZGMsIDB4NjcsIDB4ZmIsDQo+IDB4 Y2MsIDB4NzcgfSB9DQo+ICsNCj4gK2V4dGVybiBFRklfR1VJRCBnSElJQ29uZmlnQWNjZXNzQkJU ZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAyOw0KPiArDQo+ICsjZGVmaW5lIEVGSV9URVNUX0hJ SUNPTkZJR0FDQ0VTU0JCVEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDNfR1VJRCBcDQo+ICt7IDB4 NjAzZTUyZjAsIDB4MmNlMywgMHg0ZTdhLCB7IDB4YTcsIDB4MmUsIDB4ZGYsIDB4OGMsIDB4YTMs IDB4ZmQsDQo+IDB4YjIsIDB4ZCB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdISUlDb25m aWdBY2Nlc3NCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDM7DQo+ICsNCj4gKyNkZWZpbmUg RUZJX1RFU1RfSElJQ09ORklHQUNDRVNTQkJURVNURlVOQ1RJT05fQVNTRVJUSU9OXzAwNF9HVUlE IFwNCj4gK3sgMHhhYjE2MzY3NCwgMHg2YzI3LCAweDQxNjksIHsgMHhhNiwgMHhhOSwgMHhlMSwg MHg5YywgMHg4OCwgMHgxNCwNCj4gMHg5NCwgMHg5NiB9IH0NCj4gKw0KPiArZXh0ZXJuIEVGSV9H VUlEIGdISUlDb25maWdBY2Nlc3NCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDQ7DQo+ICsN Cj4gZGlmZiAtLWdpdCBhL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJv dG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNjZXNzQkJU ZXN0Q29uZm9ybWFuY2UuYyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYv UHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNjZXNz QkJUZXN0Q29uZm9ybWFuY2UuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMC4uYzhiMzUwMDMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi91ZWZpLQ0KDQpUaGUgZmls ZSBiZWxvdyBmaWxlIGhhcyBzb21ld2hlcmUgaW4gdGhlIGJhbGxwYXJrIG9mIDMwMCBsaW5lcyBv ZiBjb2RlDQpjb21lbnRlZCBvdXQuIHdhcyB0aGUgZmlsZSBzdWJtaXRlZCBpbiBlcnJvcj8NCj4g c2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxh Y2tCb3hUZXN0L0hJDQo+IElDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZS5jDQo+IEBAIC0w LDAgKzEsOTA4IEBADQo+ICsvKiogQGZpbGUNCj4gKw0KPiArICBDb3B5cmlnaHQgMjAwNiAtIDIw MTYgVW5pZmllZCBFRkksIEluYy48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTYs IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE5LE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy4NCj4gKyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5k IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUg QlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlDQo+IG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTDQo+IE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0K PiArLyorKw0KPiArDQo+ICtNb2R1bGUgTmFtZToNCj4gKyAgICBISUlDb25maWdBY2Nlc3NCQlRl c3RDb25mb3JtYW5jZS5jDQo+ICsNCj4gK0Fic3RyYWN0Og0KPiArICAgIGZvciBFRkkgRHJpdmVy IEhJSSBDb25maWd1cmF0aW9uIEFjY2VzcyBQcm90b2NvbCdzIGNvbmZvcm1hbmNlDQo+IFRlc3QN Cj4gKw0KPiArLS0qLw0KPiArDQo+ICsjaW5jbHVkZSAiSElJQ29uZmlnQWNjZXNzQkJUZXN0TWFp bi5oIg0KPiArDQo+ICtFRklfQlJPV1NFUl9BQ1RJT04gIEVGSV9CUk9XU0VSX0FDVElPTl9VTlNV UFBPUlRFRCA9IDI7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdEV4dHJhY3RDb25maWdD b25mb3JtYW5jZVRlc3RDaGVja3BvaW50MSAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJ QlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19B Q0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKTsNCj4gKw0KPiAr RUZJX1NUQVRVUw0KPiArQkJUZXN0RXh0cmFjdENvbmZpZ0NvbmZvcm1hbmNlVGVzdENoZWNrcG9p bnQyICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3Rh bmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdfUFJPVE9DT0wgICAgICAg KkhJSUNvbmZpZ1JvdXRpbmcsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NP TCAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICApOw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ ICtCQlRlc3RFeHRyYWN0Q29uZmlnQ29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDMgKA0KPiArICBJ TiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYiwNCj4g KyAgSU4gRUZJX0hJSV9DT05GSUdfUk9VVElOR19QUk9UT0NPTCAgICAgICAqSElJQ29uZmlnUm91 dGluZywNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAqSElJ Q29uZmlnQWNjZXNzDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdEV4dHJh Y3RDb25maWdDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50NCAoDQo+ICsgIElOIEVGSV9TVEFOREFS RF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJ X0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKTsN Cj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3RD aGVja3BvaW50MSAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9DT0wg ICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wg ICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKTsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiAr QkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50MiAoDQo+ICsgIElOIEVG SV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliLA0KPiArICBJ TiBFRklfSElJX0NPTkZJR19ST1VUSU5HX1BST1RPQ09MICAgICAgICpISUlDb25maWdSb3V0aW5n LA0KPiArICBJTiBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25m aWdBY2Nlc3MNCj4gKyAgKTsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Um91dGVDb25m aWdDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50MyAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNU X0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJ R19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKTsNCj4gKw0K DQpUaGUgYmVsb3cgaXMgY29tbWVudGVkIG91dCwgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQgYmVm b3JlIHVwc3RyZWFtLg0KPiAvKg0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Q2FsbEJhY2tDb25m b3JtYW5jZVRlc3RDaGVja3BvaW50MSAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJB UllfUFJPVE9DT0wgICAgICAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklH X0FDQ0VTU19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICk7DQo+ ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdENhbGxCYWNrQ29uZm9ybWFuY2VUZXN0Q2hlY2tw b2ludDIgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAg ICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wg ICAgICAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICApOw0KPiArDQo+ICtFRklfU1RBVFVT DQo+ICtCQlRlc3RDYWxsQmFja0NvbmZvcm1hbmNlVGVzdENoZWNrcG9pbnQzICgNCj4gKyAgSU4g RUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwN Cj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAgICAgICpISUlD b25maWdBY2Nlc3MNCj4gKyAgKTsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Q2FsbEJh Y2tDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50NCAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNU X0xJQlJBUllfUFJPVE9DT0wgICAgICAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlf Q09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsg ICk7DQo+ICsqLw0KDQoNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0RXh0cmFjdENvbmZp Z0NvbmZvcm1hbmNlVGVzdCAoDQo+ICsgIElOIEVGSV9CQl9URVNUX1BST1RPQ09MICAgICpUaGlz LA0KPiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAqQ2xpZW50SW50ZXJmYWNlLA0KPiAr ICBJTiBFRklfVEVTVF9MRVZFTCAgICAgICAgICBUZXN0TGV2ZWwsDQo+ICsgIElOIEVGSV9IQU5E TEUgICAgICAgICAgICAgIFN1cHBvcnRIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RB TkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYjsNCj4gKyAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9ISUlfQ09O RklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAgKkhJSUNvbmZpZ0FjY2VzczsNCj4gKyAgRUZJX0hJ SV9DT05GSUdfUk9VVElOR19QUk9UT0NPTCAgICAgICAqSElJQ29uZmlnUm91dGluZzsNCj4gKw0K PiArICAvLw0KPiArICAvLyBpbml0DQo+ICsgIC8vDQo+ICsgIEhJSUNvbmZpZ0FjY2VzcyA9DQo+ IChFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wqKUNsaWVudEludGVyZmFjZTsNCj4gKw0K PiArICAvLw0KPiArICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQo+ICsg IC8vDQo+ICsgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sICgNCj4gKyAgICAgICAgICAg ICAgICAgICBTdXBwb3J0SGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICZnRWZpU3RhbmRh cmRUZXN0TGlicmFyeUd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZTdGFu ZGFyZExpYg0KPiArICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3Rh dHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiAr ICAvLyBHZXQgdGhlIENvbmZpZyBSb3V0aW5nIFByb3RvY29sIEludGVyZmFjZQ0KPiArICAvLw0K PiArICBTdGF0dXMgPSBHZXRISUlDb25maWdSb3V0aW5nSW50ZXJmYWNlKCAmSElJQ29uZmlnUm91 dGluZyApOw0KPiArICBpZiAoIEVGSV9FUlJPUihTdGF0dXMpICkgew0KPiArICAgIHJldHVybiBT dGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvL0NhbGwgY2hlY2sgcG9pbnRzDQo+ ICsgIC8vDQo+ICsgIEJCVGVzdEV4dHJhY3RDb25maWdDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50 MSggU3RhbmRhcmRMaWIsDQo+IEhJSUNvbmZpZ0FjY2VzcyApOw0KPiArICBCQlRlc3RFeHRyYWN0 Q29uZmlnQ29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDIoIFN0YW5kYXJkTGliLA0KPiBISUlDb25m aWdSb3V0aW5nLCBISUlDb25maWdBY2Nlc3MgKTsNCj4gKyAgQkJUZXN0RXh0cmFjdENvbmZpZ0Nv bmZvcm1hbmNlVGVzdENoZWNrcG9pbnQzKCBTdGFuZGFyZExpYiwNCj4gSElJQ29uZmlnUm91dGlu ZywgSElJQ29uZmlnQWNjZXNzICk7DQo+ICsgIEJCVGVzdEV4dHJhY3RDb25maWdDb25mb3JtYW5j ZVRlc3RDaGVja3BvaW50NCggU3RhbmRhcmRMaWIsDQo+IEhJSUNvbmZpZ0FjY2VzcyApOw0KPiAr DQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArRUZJX1NUQVRVUw0KPiAr QkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9Q Uk9UT0NPTCAgICAqVGhpcywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgKkNsaWVu dEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgVGVzdExldmVsLA0K PiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICkNCj4g K3sNCj4gKyAgRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRM aWI7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiArICBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nl c3M7DQo+ICsgIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdfUFJPVE9DT0wgICAgICAgKkhJSUNvbmZp Z1JvdXRpbmc7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gaW5pdA0KPiArICAvLw0KPiArICBISUlD b25maWdBY2Nlc3MgPQ0KPiAoRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MKilDbGllbnRJ bnRlcmZhY2U7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5 IEludGVyZmFjZQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAo DQo+ICsgICAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAg ICAgICAmZ0VmaVN0YW5kYXJkVGVzdExpYnJhcnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAg IChWT0lEICoqKSAmU3RhbmRhcmRMaWINCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IHRoZSBDb25maWcgUm91dGluZyBQcm90b2NvbCBJbnRl cmZhY2UNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gR2V0SElJQ29uZmlnUm91dGluZ0ludGVyZmFj ZSggJkhJSUNvbmZpZ1JvdXRpbmcgKTsNCj4gKyAgaWYgKCBFRklfRVJST1IoU3RhdHVzKSApIHsN Cj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy9DYWxs IGNoZWNrIHBvaW50cw0KPiArICAvLw0KPiArICBCQlRlc3RSb3V0ZUNvbmZpZ0NvbmZvcm1hbmNl VGVzdENoZWNrcG9pbnQxKCBTdGFuZGFyZExpYiwNCj4gSElJQ29uZmlnQWNjZXNzICk7DQo+ICsg IEJCVGVzdFJvdXRlQ29uZmlnQ29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDIoIFN0YW5kYXJkTGli LA0KPiBISUlDb25maWdSb3V0aW5nLCBISUlDb25maWdBY2Nlc3MgKTsNCj4gKyAgQkJUZXN0Um91 dGVDb25maWdDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50MyggU3RhbmRhcmRMaWIsDQo+IEhJSUNv bmZpZ0FjY2VzcyApOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0K DQpUaGUgYmVsb3cgaXMgY29tbWVudGVkIG91dCwgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQgYmVm b3JlIHVwc3RyZWFtLg0KPiArLyoNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdENhbGxCYWNrQ29u Zm9ybWFuY2VUZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wgICAgKlRoaXMsDQo+ ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICpDbGllbnRJbnRlcmZhY2UsDQo+ICsgIElO IEVGSV9URVNUX0xFVkVMICAgICAgICAgIFRlc3RMZXZlbCwNCj4gKyAgSU4gRUZJX0hBTkRMRSAg ICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFOREFS RF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgKlN0YW5kYXJkTGliOw0KPiArICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX0hJSV9DT05GSUdf QUNDRVNTX1BST1RPQ09MICAgICAgICAqSElJQ29uZmlnQWNjZXNzOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIGluaXQNCj4gKyAgLy8NCj4gKyAgSElJQ29uZmlnQWNjZXNzID0NCj4gKEVGSV9ISUlf Q09ORklHX0FDQ0VTU19QUk9UT0NPTCopQ2xpZW50SW50ZXJmYWNlOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCj4gKyAgLy8NCj4gKyAg U3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiArICAgICAgICAgICAgICAgICAgIFN1 cHBvcnRIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgJmdFZmlTdGFuZGFyZFRlc3RMaWJy YXJ5R3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlN0YW5kYXJkTGliDQo+ ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgICAvLw0KPiArICAvL0NhbGwg Y2hlY2sgcG9pbnRzDQo+ICsgIC8vDQo+ICsgIEJCVGVzdENhbGxCYWNrQ29uZm9ybWFuY2VUZXN0 Q2hlY2twb2ludDEoIFN0YW5kYXJkTGliLA0KPiBISUlDb25maWdBY2Nlc3MgKTsNCj4gKyAgQkJU ZXN0Q2FsbEJhY2tDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50MiggU3RhbmRhcmRMaWIsDQo+IEhJ SUNvbmZpZ0FjY2VzcyApOw0KPiArICBCQlRlc3RDYWxsQmFja0NvbmZvcm1hbmNlVGVzdENoZWNr cG9pbnQzKCBTdGFuZGFyZExpYiwNCj4gSElJQ29uZmlnQWNjZXNzICk7DQo+ICsgIEJCVGVzdENh bGxCYWNrQ29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDQoIFN0YW5kYXJkTGliLA0KPiBISUlDb25m aWdBY2Nlc3MgKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsqLw0K DQoNCj4gKw0KPiArLy8NCj4gKy8vQ2hlY2sgUG9pbnRzDQo+ICsvLw0KPiArDQo+ICtFRklfU1RB VFVTDQo+ICtCQlRlc3RFeHRyYWN0Q29uZmlnQ29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDEgKA0K PiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExp YiwNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAqSElJQ29u ZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1 czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsNCj4gKyAg RUZJX1NUUklORyAgICAgICAgICAgIFByb2dyZXNzID0gTlVMTDsNCj4gKyAgRUZJX1NUUklORyAg ICAgICAgICAgIFJlc3VsdHMgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUmVz dWx0c1B0ciA9IE5VTEw7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICBMZW4gPSAwOw0KPiAr ICBDSEFSMTYqICAgICAgICAgICAgICAgUG9pbnRlciA9IE5VTEw7DQo+ICsgIFVJTlQ4ICAgICAg ICAgICAgICAgICBJZk11bHRpID0gMDsNCj4gKw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAg UmVxdWVzdCA9IE5VTEw7DQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgRXh0cmFjdENvbmZpZyB3aXRo IFJlcXVlc3QgYmVlbiA8TXVsdGlDb25maWdSZXF1ZXN0Pg0KPiArICAvLw0KPiArICBTdGF0dXMg PSBISUlDb25maWdBY2Nlc3MtPkV4dHJhY3RDb25maWcgKA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSElJQ29uZmlnQWNjZXNzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQcm9ncmVzcywN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZSZXN1bHRzDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgIGlmICggU3RhdHVzID09IEVGSV9TVUND RVNTICkgew0KPiArICAgIExlbiA9IFNjdFN0ckxlbiAoUmVzdWx0cyk7DQo+ICsgICAgLy8NCj4g KyAgICAvLyBNYWtlIHN1cmUgdGhlIHNpemUgb2YgUmVxdWVzdCBpcyBlbm91Z2ggdG8gaG9sZA0K PiA8TXVsdGlDb25maWdSZXF1ZXN0Pg0KPiArICAgIC8vIGlmIG9yaWdpbmFsIFJlc3VsdHMgaXMg bm90IE11bHRpDQo+ICsgICAgLy8NCj4gKyAgICBSZXF1ZXN0ID0gKEVGSV9TVFJJTkcpIFNjdEFs bG9jYXRlWmVyb1Bvb2wgKCAyICogTGVuICsgMiArIDI1Nik7DQo+ICsgICAgaWYgKFJlcXVlc3Qg PT0gTlVMTCkgew0KPiArICAgICBTY3RGcmVlUG9vbCAoUmVzdWx0cyk7DQo+ICsgICAgICByZXR1 cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgICAgfQ0KPiArICB9IGVsc2Ugew0KPiArICAg IHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBNdWx0aUFsdFJlc3BU b011bHRpUmVxIChSZXN1bHRzLCBSZXF1ZXN0KTsNCj4gKyAgUmVzdWx0c1B0ciA9IFJlcXVlc3Q7 DQo+ICsNCj4gKyAgU2N0RnJlZVBvb2wgKFJlc3VsdHMpOw0KPiArICBSZXN1bHRzID0gTlVMTDsN Cj4gKw0KPiArICBpZiAoIFNjdFN0clN0ciAoUmVxdWVzdCwgTCJHVUlEPSIpICE9IE5VTEwgKSB7 DQo+ICsgICAgUG9pbnRlciA9IFNjdFN0clN0ciAoUmVxdWVzdCwgTCJHVUlEPSIpOw0KPiArICAg IFBvaW50ZXIrKzsNCj4gKyAgICBpZiAoIFNjdFN0clN0ciAoUG9pbnRlciwgTCJHVUlEPSIpICE9 IE5VTEwgKQ0KPiArICAgICBJZk11bHRpID0gMTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICggSWZN dWx0aSA9PSAwICkgew0KPiArICAgIFNjdFN0ckNhdCAoIFJlcXVlc3QsDQo+IEwiJkdVSUQ9OTcw ZWI5NGFhMGQ0NDlmN2I5ODBiZGFhNDdkNDI1MjcmTkFNRT0wMDZhMDA2OTAwNmUwMDM5JlBBVEg9 MA0KPiAwMGFjZiZncmFnJnN0YXIiKTsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEhJSUNv bmZpZ0FjY2Vzcy0+RXh0cmFjdENvbmZpZyAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBISUlDb25maWdBY2Nlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXF1ZXN0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlByb2dyZXNzLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlJlc3VsdHMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKCAoRUZJX0lOVkFMSURfUEFSQU1FVEVS ICE9IFN0YXR1cykgfHwgKFNjdFN0cm5DbXAgKFByb2dyZXNzLA0KPiBMIiZHVUlEPSIsIDYpICE9 IDApICkgew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVE Ow0KPiArICB9IGVsc2Ugew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJ T05fUEFTU0VEOw0KPiArICB9DQo+ICsgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0K PiArICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgICAgICAgQXNz ZXJ0aW9uVHlwZSwNCj4gKyAgICAgICAgICAgICAgICAgZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENv bmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAwMSwNCj4gKyAgICAgICAgICAgICAgICAgTCJISUlfQ09O RklHX0FDQ0VTU19QUk9UT0NPTC5FeHRyYWN0Q29uZmlnIC0NCj4gRXh0cmFjdENvbmZpZygpIHJl dHVybnMgRUZJX0lOVkFMSURfUEFSQU1FVEVSIHdpdGggUmVxdWVzdCBiZWVuDQo+IDxNdWx0aUNv bmZpZ1JlcXVlc3Q+LiIsDQo+ICsgICAgICAgICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAtICVy IiwNCj4gKyAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgICAgICAgIChV SU5UTilfX0xJTkVfXywNCj4gKyAgICAgICAgICAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAg ICk7DQo+ICsgIFNjdEZyZWVQb29sIChSZXF1ZXN0KTsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RFeHRyYWN0Q29uZmlnQ29uZm9y bWFuY2VUZXN0Q2hlY2twb2ludDIgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfUk9VVElO R19QUk9UT0NPTCAgICAgICAqSElJQ29uZmlnUm91dGluZywNCj4gKyAgSU4gRUZJX0hJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJU SU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsNCj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgIFJl cXVlc3QgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUmVzdWx0cyA9IE5VTEw7 DQo+ICsgIEVGSV9TVFJJTkcgICAgICAgICAgICBNdWx0aUNvbmZpZ0FsdFJlc3AgPSBOVUxMOw0K PiArICBFRklfU1RSSU5HICAgICAgICAgICAgRGV2aWNlUGF0aCA9IE5VTEw7DQo+ICsNCj4gKyAg Ly9pbml0IHRoZSBSZXF1ZXN0DQo+ICsgIFN0YXR1cyA9IEhJSUNvbmZpZ1JvdXRpbmctPkV4cG9y dENvbmZpZygNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBISUlDb25maWdSb3V0 aW5nLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZNdWx0aUNvbmZpZ0FsdFJl c3ANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg U3RhdHVzID0gR2V0RGV2aWNlUGF0aCAoIEhJSUNvbmZpZ0FjY2VzcywgJkRldmljZVBhdGggKTsN Cj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICBndEJTLT5GcmVlUG9vbCAoTXVs dGlDb25maWdBbHRSZXNwKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4g KyAgUmVxdWVzdCA9IChFRklfU1RSSU5HKSBTY3RBbGxvY2F0ZVplcm9Qb29sICggMiAqIFNjdFN0 ckxlbg0KPiAoTXVsdGlDb25maWdBbHRSZXNwKSArIDIgKTsNCj4gKyAgaWYgKFJlcXVlc3QgPT0g TlVMTCkgew0KPiArICAgIGd0QlMtPkZyZWVQb29sIChNdWx0aUNvbmZpZ0FsdFJlc3ApOw0KPiAr ICAgZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiArICAgcmV0dXJuIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gR2V0Q29ycmVzcG9uZGluZ1Jl cXVlc3QgKE11bHRpQ29uZmlnQWx0UmVzcCwgRGV2aWNlUGF0aCwNCj4gUmVxdWVzdCk7DQo+ICsg IGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKE11bHRpQ29u ZmlnQWx0UmVzcCk7DQo+ICsgICBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aCk7DQo+ICsgICBn dEJTLT5GcmVlUG9vbCAoUmVxdWVzdCk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgRXh0cmFjdENvbmZpZyB3aXRoIFByb2dyZXNzIGJl ZW4gTlVMTA0KPiArICAvLw0KPiArICBTdGF0dXMgPSBISUlDb25maWdBY2Nlc3MtPkV4dHJhY3RD b25maWcgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElJQ29uZmlnQWNjZXNz LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmUmVzdWx0cw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0K PiArICBpZiAoIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAhPSBTdGF0dXMgKSB7DQo+ICsgICAgQXNz ZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsgIH0gZWxzZSB7DQo+ ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgIH0N Cj4gKyAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgICAgICAg IFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KPiArICAg ICAgICAgICAgICAgICBnSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25H dWlkMDAyLA0KPiArICAgICAgICAgICAgICAgICBMIkhJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09M LkV4dHJhY3RDb25maWcgLQ0KPiBFeHRyYWN0Q29uZmlnKCkgcmV0dXJucyBFRklfSU5WQUxJRF9Q QVJBTUVURVIgd2l0aCBQcm9ncmVzcyBiZWVuDQo+IE5VTEwuIiwNCj4gKyAgICAgICAgICAgICAg ICAgTCIlYTolZDogU3RhdHVzIC0gJXIiLA0KPiArICAgICAgICAgICAgICAgICBfX0ZJTEVfXywN Cj4gKyAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAgICAgICAgICAg ICBTdGF0dXMNCj4gKyAgICAgICAgICAgKTsNCj4gKw0KPiArICBndEJTLT5GcmVlUG9vbCAoTXVs dGlDb25maWdBbHRSZXNwKTsNCj4gKyAgZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiAr ICBndEJTLT5GcmVlUG9vbCAoUmVxdWVzdCk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RFeHRyYWN0Q29uZmlnQ29uZm9y bWFuY2VUZXN0Q2hlY2twb2ludDMgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfUk9VVElO R19QUk9UT0NPTCAgICAgICAqSElJQ29uZmlnUm91dGluZywNCj4gKyAgSU4gRUZJX0hJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sN Cj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJU SU9OICAgIEFzc2VydGlvblR5cGU7DQo+ICsNCj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgIFJl cXVlc3QgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUHJvZ3Jlc3MgPSBOVUxM Ow0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgTXVsdGlDb25maWdBbHRSZXNwID0gTlVMTDsN Cj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgIERldmljZVBhdGggPSBOVUxMOw0KPiArDQo+ICsg IC8vaW5pdCB0aGUgUmVxdWVzdA0KPiArICBTdGF0dXMgPSBISUlDb25maWdSb3V0aW5nLT5FeHBv cnRDb25maWcoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElJQ29uZmlnUm91 dGluZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTXVsdGlDb25maWdBbHRS ZXNwDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9F UlJPUihTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsg IFN0YXR1cyA9IEdldERldmljZVBhdGggKCBISUlDb25maWdBY2Nlc3MsICZEZXZpY2VQYXRoICk7 DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKE11 bHRpQ29uZmlnQWx0UmVzcCk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ ICsgIFJlcXVlc3QgPSAoRUZJX1NUUklORykgU2N0QWxsb2NhdGVaZXJvUG9vbCAoIDIgKiBTY3RT dHJMZW4NCj4gKE11bHRpQ29uZmlnQWx0UmVzcCkgKyAyICk7DQo+ICsgIGlmIChSZXF1ZXN0ID09 IE5VTEwpIHsNCj4gKyAgICBndEJTLT5GcmVlUG9vbCAoTXVsdGlDb25maWdBbHRSZXNwKTsNCj4g KyAgIGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoKTsNCj4gKyAgIHJldHVybiBFRklfT1VUX09G X1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdldENvcnJlc3BvbmRpbmdS ZXF1ZXN0IChNdWx0aUNvbmZpZ0FsdFJlc3AsIERldmljZVBhdGgsDQo+IFJlcXVlc3QpOw0KPiAr ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgIGd0QlMtPkZyZWVQb29sIChNdWx0aUNv bmZpZ0FsdFJlc3ApOw0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiArICAg Z3RCUy0+RnJlZVBvb2wgKFJlcXVlc3QpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0N Cj4gKyAgLy8NCj4gKyAgLy8gQ2FsbCBFeHRyYWN0Q29uZmlnIHdpdGggUmVzdWx0cyBiZWVuIE5V TEwNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gSElJQ29uZmlnQWNjZXNzLT5FeHRyYWN0Q29uZmln ICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhJSUNvbmZpZ0FjY2VzcywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmUHJvZ3Jlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsg IGlmICggRUZJX0lOVkFMSURfUEFSQU1FVEVSICE9IFN0YXR1cyApIHsNCj4gKyAgICBBc3NlcnRp b25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAg ICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCj4gKyAgfQ0KPiAr ICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAgICAgICAgU3Rh bmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAg ICAgICAgICAgIGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQw MDMsDQo+ICsgICAgICAgICAgICAgICAgIEwiSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wuRXh0 cmFjdENvbmZpZyAtDQo+IEV4dHJhY3RDb25maWcoKSByZXR1cm5zIEVGSV9JTlZBTElEX1BBUkFN RVRFUiB3aXRoIFJlc3VsdHMgYmVlbg0KPiBOVUxMLiIsDQo+ICsgICAgICAgICAgICAgICAgIEwi JWE6JWQ6IFN0YXR1cyAtICVyIiwNCj4gKyAgICAgICAgICAgICAgICAgX19GSUxFX18sDQo+ICsg ICAgICAgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCj4gKyAgICAgICAgICAgICAgICAgU3Rh dHVzDQo+ICsgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgZ3RCUy0+RnJlZVBvb2wgKE11 bHRpQ29uZmlnQWx0UmVzcCk7DQo+ICsgIGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoKTsNCj4g KyAgZ3RCUy0+RnJlZVBvb2wgKFJlcXVlc3QpOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gK30NCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RFeHRyYWN0Q29uZmln Q29uZm9ybWFuY2VUZXN0Q2hlY2twb2ludDQgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9M SUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NP TkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICAp DQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9URVNU X0FTU0VSVElPTiAgICBBc3NlcnRpb25UeXBlOw0KPiArDQo+ICsgIEVGSV9TVFJJTkcgICAgICAg ICAgICBSZXF1ZXN0Ow0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUHJvZ3Jlc3MgPSBOVUxM Ow0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUmVzdWx0cyA9IE5VTEw7DQo+ICsNCj4gKyAg Ly9pbml0IHRoZSBSZXF1ZXN0DQo+ICsgIFJlcXVlc3QgPQ0KPiBMIkdVSUQ9NzFlNDMwZmIyZTg4 NDk3NzlkN2EzM2VmMTEzOWU3ZWQmTkFNRT0wMDZhMDA2OTAwNmUwMDM5JlBBVEg9MDANCj4gMGFj ZiZKYWNrJlJvbnMmTmFzaCZNYXJ5IjsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDYWxsIEV4dHJh Y3RDb25maWcgd2l0aCB1bmtub3duIG5hbWUNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gSElJQ29u ZmlnQWNjZXNzLT5FeHRyYWN0Q29uZmlnICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEhJSUNvbmZpZ0FjY2VzcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl cXVlc3QsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHJvZ3Jlc3MsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUmVzdWx0cw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBpZiAoICgoRUZJX0lOVkFMSURfUEFSQU1FVEVS ID09IFN0YXR1cykgJiYgKFNjdFN0cm5DbXAgKFByb2dyZXNzLA0KPiBMIiZKYWNrJlJvbnMmTmFz aCZNYXJ5IiwgMjApID09IDApKSB8fA0KPiArICAgICgoRUZJX05PVF9GT1VORCA9PSBTdGF0dXMp ICYmIChQcm9ncmVzcyA9PSBSZXF1ZXN0KSkgKSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVG SV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgQXNzZXJ0aW9u VHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsgIH0NCj4gKyAgU3RhbmRhcmRM aWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAg ICAgICAgICBBc3NlcnRpb25UeXBlLA0KPiArICAgICAgICAgICBnSElJQ29uZmlnQWNjZXNzQkJU ZXN0Q29uZm9ybWFuY2VBc3NlcnRpb25HdWlkMDA0LA0KPiArICAgICAgICAgICBMIkhJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MLkV4dHJhY3RDb25maWcgLQ0KPiBFeHRyYWN0Q29uZmlnKCkgcmV0 dXJucyBFRklfSU5WQUxJRF9QQVJBTUVURVIvRUZJX05PVF9GT1VORCB3aXRoDQo+IGludmFsaWQg aW5wdXQuIiwNCj4gKyAgICAgICAgICAgTCIlYTolZDogU3RhdHVzIC0gJXIiLA0KPiArICAgICAg ICAgICBfX0ZJTEVfXywNCj4gKyAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAgICAg ICAgICBTdGF0dXMNCj4gKyAgICAgICAgICAgKTsNCj4gKyByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ICsgfQ0KPiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdFJvdXRlQ29uZmlnQ29uZm9y bWFuY2VUZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19B Q0NFU1NfUFJPVE9DT0wgICAgICAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICApDQo+ICt7 DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiArICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2Vy dGlvblR5cGU7DQo+ICsNCj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQcm9ncmVzcyA9IE5VTEw7DQo+ICsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDYWxs IFJvdXRlQ29uZmlnIHdpdGggQ29uZmlndXJhdGlvbiBiZWVuIE5VTEwNCj4gKyAgLy8NCj4gKyAg U3RhdHVzID0gSElJQ29uZmlnQWNjZXNzLT5Sb3V0ZUNvbmZpZyAoDQo+ICsgICAgICAgICAgICAg ICAgICBISUlDb25maWdBY2Nlc3MsDQo+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAg ICAgICAgICAgICAgICAgJlByb2dyZXNzDQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ ICsgIGlmICggRUZJX0lOVkFMSURfUEFSQU1FVEVSICE9IFN0YXR1cyApIHsNCj4gKyAgICBBc3Nl cnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAgfSBlbHNlIHsNCj4g KyAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCj4gKyAgfQ0K PiArICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAgU3RhbmRh cmRMaWIsDQo+ICsgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAgIGdISUlD b25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDUsDQo+ICsgICAgICAg ICAgIEwiSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wuUm91dGVDb25maWcgLSBSb3V0ZUNvbmZp ZygpDQo+IHJldHVybnMgRUZJX0lOVkFMSURfUEFSQU1FVEVSIHdpdGggQ29uZmlndXJhdGlvbiBi ZWVuIE5VTEwuIiwNCj4gKyAgICAgICAgICAgTCIlYTolZDogU3RhdHVzIC0gJXIiLA0KPiArICAg ICAgICAgICBfX0ZJTEVfXywNCj4gKyAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAg ICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgICAgKTsNCj4gKyByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ICsgfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSb3V0ZUNvbmZpZ0NvbmZvcm1h bmNlVGVzdENoZWNrcG9pbnQyICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9Q Uk9UT0NPTCAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdf UFJPVE9DT0wgICAgICAgKkhJSUNvbmZpZ1JvdXRpbmcsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklH X0FDQ0VTU19QUk9UT0NPTCAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICApDQo+ICt7DQo+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9URVNUX0FTU0VSVElP TiAgICBBc3NlcnRpb25UeXBlOw0KPiArDQo+ICsgIEVGSV9TVFJJTkcgICAgICAgICAgICBDb25m aWcgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgTXVsdGlDb25maWdBbHRSZXNw ID0gTlVMTDsNCj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgIERldmljZVBhdGggPSBOVUxMOw0K PiArDQo+ICsgIC8vaW5pdCB0aGUgUmVxdWVzdA0KPiArICBTdGF0dXMgPSBISUlDb25maWdSb3V0 aW5nLT5FeHBvcnRDb25maWcoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElJ Q29uZmlnUm91dGluZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTXVsdGlD b25maWdBbHRSZXNwDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0K PiArDQo+ICsgIFN0YXR1cyA9IEdldERldmljZVBhdGggKCBISUlDb25maWdBY2Nlc3MsICZEZXZp Y2VQYXRoICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgZ3RCUy0+RnJl ZVBvb2wgKE11bHRpQ29uZmlnQWx0UmVzcCk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIENvbmZpZyA9IChFRklfU1RSSU5HKSBTY3RBbGxvY2F0ZVplcm9Qb29sICgg MiAqIFNjdFN0ckxlbg0KPiAoTXVsdGlDb25maWdBbHRSZXNwKSArIDIgKTsNCj4gKyAgaWYgKENv bmZpZyA9PSBOVUxMKSB7DQo+ICsgICAgZ3RCUy0+RnJlZVBvb2wgKE11bHRpQ29uZmlnQWx0UmVz cCk7DQo+ICsgICBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aCk7DQo+ICsgICByZXR1cm4gRUZJ X09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBHZXRDb3JyZXNw b25kaW5nUmVzcCAoTXVsdGlDb25maWdBbHRSZXNwLCBEZXZpY2VQYXRoLA0KPiBDb25maWcpOw0K PiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgIGd0QlMtPkZyZWVQb29sIChNdWx0 aUNvbmZpZ0FsdFJlc3ApOw0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiAr ICAgZ3RCUy0+RnJlZVBvb2wgKENvbmZpZyk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAg fQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgUm91dGVDb25maWcgd2l0aCBQcm9ncmVzcyBi ZWVuIE5VTEwNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gSElJQ29uZmlnQWNjZXNzLT5Sb3V0ZUNv bmZpZyAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBISUlDb25maWdBY2Nlc3Ms DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOw0KPiArDQo+ICsgIGlmICggRUZJX0lOVkFMSURfUEFSQU1FVEVSICE9IFN0YXR1cyApIHsN Cj4gKyAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAg fSBlbHNlIHsNCj4gKyAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NF RDsNCj4gKyAgfQ0KPiArICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAg ICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5 cGUsDQo+ICsgICAgICAgICAgICAgICAgIGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5j ZUFzc2VydGlvbkd1aWQwMDYsDQo+ICsgICAgICAgICAgICAgICAgIEwiSElJX0NPTkZJR19BQ0NF U1NfUFJPVE9DT0wuUm91dGVDb25maWcgLQ0KPiBSb3V0ZUNvbmZpZygpIHJldHVybnMgRUZJX0lO VkFMSURfUEFSQU1FVEVSIHdpdGggUHJvZ3Jlc3MgYmVlbg0KPiBOVUxMLiIsDQo+ICsgICAgICAg ICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAtICVyIiwNCj4gKyAgICAgICAgICAgICAgICAgX19G SUxFX18sDQo+ICsgICAgICAgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCj4gKyAgICAgICAg ICAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgZ3RCUy0+ RnJlZVBvb2wgKE11bHRpQ29uZmlnQWx0UmVzcCk7DQo+ICsgIGd0QlMtPkZyZWVQb29sIChEZXZp Y2VQYXRoKTsNCj4gKyAgZ3RCUy0+RnJlZVBvb2wgKENvbmZpZyk7DQo+ICsNCj4gKyAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RSb3V0ZUNv bmZpZ0NvbmZvcm1hbmNlVGVzdENoZWNrcG9pbnQzICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RF U1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJ SV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4g KyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICAg ICAgICBBc3NlcnRpb25UeXBlOw0KPiArDQo+ICsgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbjsNCj4gKyAgRUZJX1NUUklORyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmVzcyA9IE5VTEw7DQo+ICsNCj4gKyAgLy9p bml0IHRoZSBDb25maWd1cmF0aW9uDQo+ICsgIENvbmZpZ3VyYXRpb249TCJHVUlEPTcxZTQzMGZi MmU4ODQ5Nzc5ZDdhMzNlZjExMzllN2VkJk5BTUU9MDA2YTAwNg0KPiA5MDA2ZTAwMzkmUEFUSD0w YWNmJk9GRlNFVD0yJldJRFRIPTNWQUxVRT00NUFGIjsNCj4gKw0KPiArICAvLw0KPiArICAvLyBD YWxsIFJvdXRlQ29uZmlnIHdpdGggbm8gZm91bmQgdGFyZ2V0IGZvciB0aGUgcm91dGluZyBkYXRh DQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IEhJSUNvbmZpZ0FjY2Vzcy0+Um91dGVDb25maWcgKA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElJQ29uZmlnQWNjZXNzLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZQcm9ncmVzcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKw0KPiArICBpZiAoIEVGSV9OT1RfRk9VTkQgIT0gU3RhdHVzICkgew0KPiAr ICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KPiArICB9IGVs c2Ugew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0K PiArICB9DQo+ICsgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAg ICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCj4gKyAgICAgICAg ICAgZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAwNywNCj4g KyAgICAgICAgICAgTCJISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTC5Sb3V0ZUNvbmZpZyAtIFJv dXRlQ29uZmlnKCkNCj4gcmV0dXJucyBFRklfTk9UX0ZPVU5EIHdpdGggbm8gZm91bmQgdGFyZ2V0 IGZvciB0aGUgcm91dGluZyBkYXRhLiIsDQo+ICsgICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAt ICVyIiwNCj4gKyAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgIChVSU5UTilfX0xJ TkVfXywNCj4gKyAgICAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAgICk7DQo+ICsNCj4gKyAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQoNClRoZSBiZWxvdyBpcyBjb21tZW50ZWQg b3V0LCB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBiZWZvcmUgdXBzdHJlYW0uDQo+ICsvKg0KPiAr RUZJX1NUQVRVUw0KPiArQkJUZXN0Q2FsbEJhY2tDb25mb3JtYW5jZVRlc3RDaGVja3BvaW50MSAo DQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgICAgICAqU3Rh bmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAg ICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9URVNUX0FT U0VSVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCj4gKw0K PiArICBFRklfUVVFU1RJT05fSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0 aW9uSWQ7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVHlwZTsNCj4gKyAgRUZJX0lGUl9UWVBFX1ZBTFVFICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWYWx1ZTsNCj4gKyAgRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1QgICAgICAgICAgICAg ICAgICAgICBBY3Rpb25SZXF1ZXN0Ow0KPiArDQo+ICsgIC8vaW5pdCB0aGUgcGFyYW1ldGVyDQo+ ICsgIFF1ZXN0aW9uSWQ9MHgxMjM0Ow0KPiArICBUeXBlPUVGSV9JRlJfVFlQRV9OVU1fU0laRV84 Ow0KPiArDQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2FsbCBDYWxsQmFjayB3aXRoIHRoZSBBY3Rp b24gYmVlbiBOVUxMDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IEhJSUNvbmZpZ0FjY2Vzcy0+Q2Fs bEJhY2sgKA0KPiArICAgICAgICAgICAgICAgICAgSElJQ29uZmlnQWNjZXNzLA0KPiArICAgICAg ICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQsDQo+ICsg ICAgICAgICAgICAgICAgIFR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICZWYWx1ZSwNCj4gKyAg ICAgICAgICAgICAgICAgJkFjdGlvblJlcXVlc3QNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ ICsNCj4gKyAgaWYgKCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIT0gU3RhdHVzICkgew0KPiArICAg IEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KPiArICB9IGVsc2Ug ew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KPiAr DQo+ICsgICAvL2NoZWNrIHRoZSBvdXRwdXQgQWN0aW9uUmVxdWVzdA0KPiArICBpZiAoKEVGSV9C Uk9XU0VSX0FDVElPTl9SRVFVRVNUX05PTkUgfHwNCj4gRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVF U1RfUkVTRVQgfHwgRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1RfU1VCTUlUDQo+IHx8IEVGSV9C Uk9XU0VSX0FDVElPTl9SRVFVRVNUX0VYSVQpICE9IEFjdGlvblJlcXVlc3QpDQo+ICsgICBBc3Nl cnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKw0KPiArICB9DQo+ICsg IFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAgICAgICAgICBTdGFuZGFyZExp YiwNCj4gKyAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCj4gKyAgICAgICAgICAgZ0hJSUNvbmZp Z0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAwOSwNCj4gKyAgICAgICAgICAg TCJISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTC5DYWxsQmFjayAtIENhbGxCYWNrKCkNCj4gcmV0 dXJucyBFRklfSU5WQUxJRF9QQVJBTUVURVIgd2l0aCBBY3Rpb24gYmVlbiBOVUxMIC4iLA0KPiAr ICAgICAgICAgICBMIiVhOiVkOiBTdGF0dXMgLSAlciIsDQo+ICsgICAgICAgICAgIF9fRklMRV9f LA0KPiArICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgIFN0YXR1cw0K PiArICAgICAgICAgICApOw0KPiArIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKw0KPiArfQ0KPiAr DQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RDYWxsQmFja0NvbmZvcm1hbmNlVGVzdENoZWNrcG9p bnQyICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAgICAg ICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAg ICAgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RF U1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0K PiArDQo+ICsgIEVGSV9CUk9XU0VSX0FDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KkFjdGlvbjsNCj4gKyAgRUZJX1FVRVNUSU9OX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdWVzdGlvbklkOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFR5cGU7DQo+ICsgIEVGSV9JRlJfVFlQRV9WQUxVRSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVmFsdWU7DQo+ICsNCj4gKw0KPiArICAvL2luaXQgdGhlIHBhcmFtZXRl cg0KPiArICBBY3Rpb249RUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1RfQ0hBTkdJTkc7DQo+ICsg IFF1ZXN0aW9uSWQ9MHgxMjM0Ow0KPiArICBUeXBlPUVGSV9JRlJfVFlQRV9OVU1fU0laRV84Ow0K PiArDQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2FsbCBDYWxsQmFjayB3aXRoIHRoZSBBY3Rpb25S ZXF1ZXN0IGJlZW4gTlVMTA0KPiArICAvLw0KPiArICBTdGF0dXMgPSBISUlDb25maWdBY2Nlc3Mt PkNhbGxCYWNrICgNCj4gKyAgICAgICAgICAgICAgICAgIEhJSUNvbmZpZ0FjY2VzcywNCj4gKyAg ICAgICAgICAgICAgICAgIEFjdGlvbiwNCj4gKyAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQs DQo+ICsgICAgICAgICAgICAgICAgIFR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICZWYWx1ZSwN Cj4gKyAgICAgICAgICAgICAgICAgTlVMTA0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKw0K PiArICBpZiAoIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAhPSBTdGF0dXMgKSB7DQo+ICsgICAgQXNz ZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsgIH0gZWxzZSB7DQo+ ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsNCj4g KyAgfQ0KPiArICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAg U3RhbmRhcmRMaWIsDQo+ICsgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAg IGdISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDEwLA0KPiAr ICAgICAgICAgICBMIkhJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MLkNhbGxCYWNrIC0gQ2FsbEJh Y2soKQ0KPiByZXR1cm5zIEVGSV9JTlZBTElEX1BBUkFNRVRFUiB3aXRoIFF1ZXN0aW9uSWQgYmVl biBOVUxMLiIsDQo+ICsgICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAtICVyIiwNCj4gKyAgICAg ICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCj4gKyAgICAg ICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAgICk7DQo+ICsgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiArDQo+ICt9DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdENhbGxCYWNrQ29uZm9ybWFu Y2VUZXN0Q2hlY2twb2ludDMoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJP VE9DT0wgICAgICAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX0FDQ0VT U19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ICsgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNz ZXJ0aW9uVHlwZTsNCj4gKw0KPiArICBFRklfQlJPV1NFUl9BQ1RJT04gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpBY3Rpb247DQo+ICsgIEVGSV9RVUVTVElPTl9JRCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JZDsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlOw0KPiArICBFRklfQlJPV1NFUl9BQ1RJT05f UkVRVUVTVCAgICAgICAgICAgICAgICAgICAgIEFjdGlvblJlcXVlc3Q7DQo+ICsNCj4gKyAgLy9p bml0IHRoZSBwYXJhbWV0ZXINCj4gKyAgQWN0aW9uID0gRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVF U1RfQ0hBTkdJTkc7DQo+ICsgIFF1ZXN0aW9uSWQgPSAweDEyMzQ7DQo+ICsgIFR5cGUgPSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfODsNCj4gKw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgQ2Fs bEJhY2sgd2l0aCB0aGUgVmFsdWUgYmVlbiBOVUxMDQo+ICsgIC8vDQo+ICsgIFN0YXR1cyA9IEhJ SUNvbmZpZ0FjY2Vzcy0+Q2FsbEJhY2sgKA0KPiArICAgICAgICAgICAgICAgICAgSElJQ29uZmln QWNjZXNzLA0KPiArICAgICAgICAgICAgICAgICAgQWN0aW9uLA0KPiArICAgICAgICAgICAgICAg ICAgUXVlc3Rpb25JZCwNCj4gKyAgICAgICAgICAgICAgICAgVHlwZSwNCj4gKyAgICAgICAgICAg ICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgJkFjdGlvblJlcXVlc3QNCj4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIT0g U3RhdHVzICkgew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fRkFJ TEVEOw0KPiArICB9IGVsc2Ugew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NF UlRJT05fUEFTU0VEOw0KPiArDQo+ICsgICAvL2NoZWNrIHRoZSBvdXRwdXQgQWN0aW9uUmVxdWVz dA0KPiArICBpZiAoKEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX05PTkUgfHwNCj4gRUZJX0JS T1dTRVJfQUNUSU9OX1JFUVVFU1RfUkVTRVQgfHwgRUZJX0JST1dTRVJfQUNUSU9OX1JFUVVFU1Rf U1VCTUlUDQo+IHx8IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX0VYSVQpICE9IEFjdGlvblJl cXVlc3QpDQo+ICsgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsN Cj4gKw0KPiArICB9DQo+ICsgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KPiArICAg ICAgICAgICBTdGFuZGFyZExpYiwNCj4gKyAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCj4gKyAg ICAgICAgICAgZ0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlQXNzZXJ0aW9uR3VpZDAw MTEsDQo+ICsgICAgICAgICAgIEwiSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wuQ2FsbEJhY2sg LSBDYWxsQmFjaygpDQo+IHJldHVybnMgRUZJX0lOVkFMSURfUEFSQU1FVEVSIHdpdGggVmFsdWUg YmVlbiBOVUxMLiIsDQo+ICsgICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAtICVyIiwNCj4gKyAg ICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCj4gKyAg ICAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAgICk7DQo+ICsgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiArDQo+ICt9DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdENhbGxCYWNrQ29uZm9y bWFuY2VUZXN0Q2hlY2twb2ludDQgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19B Q0NFU1NfUFJPVE9DT0wgICAgICAgICAgICAgKkhJSUNvbmZpZ0FjY2Vzcw0KPiArICApDQo+ICt7 DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiArICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFzc2VydGlvblR5cGU7DQo+ICsNCj4gKyAgRUZJX0JST1dTRVJfQUNUSU9OICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqQWN0aW9uOw0KPiArICBFRklfUVVFU1RJT05fSUQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQ7DQo+ICsgIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTsNCj4gKyAgRUZJX0lGUl9UWVBFX1ZB TFVFICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZTsNCj4gKyAgRUZJX0JST1dTRVJf QUNUSU9OX1JFUVVFU1QgICAgICAgICAgICAgICAgICAgICBBY3Rpb25SZXF1ZXN0Ow0KPiArDQo+ ICsgIC8vaW5pdCB0aGUgcGFyYW1ldGVyDQo+ICsgIEFjdGlvbj0mRUZJX0JST1dTRVJfQUNUSU9O X1VOU1VQUE9SVEVEOw0KPiArICBRdWVzdGlvbklkPTB4MTIzNDsNCj4gKyAgVHlwZT1FRklfSUZS X1RZUEVfTlVNX1NJWkVfODsNCj4gKw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgQ2FsbEJh Y2sgd2l0aCAgdGhlIHNwZWNpZmllZCBhY3Rpb24gbm90IHN1cHBvcnRlZCBieSB0aGUNCj4gY2Fs bGJhY2sNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gSElJQ29uZmlnQWNjZXNzLT5DYWxsQmFjayAo DQo+ICsgICAgICAgICAgICAgICAgICBISUlDb25maWdBY2Nlc3MsDQo+ICsgICAgICAgICAgICAg ICAgICBBY3Rpb24sDQo+ICsgICAgICAgICAgICAgICAgICBRdWVzdGlvbklkLA0KPiArICAgICAg ICAgICAgICAgICBUeXBlLA0KPiArICAgICAgICAgICAgICAgICAmVmFsdWUsDQo+ICsgICAgICAg ICAgICAgICAgICZBY3Rpb25SZXF1ZXN0DQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ ICsgIGlmICggRUZJX1VOU1VQUE9SVEVEICE9IFN0YXR1cyApIHsNCj4gKyAgICBBc3NlcnRpb25U eXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBB c3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCj4gKw0KPiArICAgLy9j aGVjayB0aGUgb3V0cHV0IEFjdGlvblJlcXVlc3QNCj4gKyAgaWYgKChFRklfQlJPV1NFUl9BQ1RJ T05fUkVRVUVTVF9OT05FIHx8DQo+IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX1JFU0VUIHx8 IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX1NVQk1JVA0KPiB8fCBFRklfQlJPV1NFUl9BQ1RJ T05fUkVRVUVTVF9FWElUKSAhPSBBY3Rpb25SZXF1ZXN0KQ0KPiArICAgQXNzZXJ0aW9uVHlwZSA9 IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsNCj4gKyAgfQ0KPiArICBTdGFuZGFyZExp Yi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ICsgICAg ICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAgIGdISUlDb25maWdBY2Nlc3NCQlRl c3RDb25mb3JtYW5jZUFzc2VydGlvbkd1aWQwMDEyLA0KPiArICAgICAgICAgICBMIkhJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MLkNhbGxCYWNrIC0gQ2FsbEJhY2soKQ0KPiByZXR1cm5zIEVGSV8g VU5TVVBQT1JURUQgd2l0aCAgdGhlIHNwZWNpZmllZCBhY3Rpb24gbm90IHN1cHBvcnRlZCBieQ0K PiB0aGUgY2FsbGJhY2sgLiIsDQo+ICsgICAgICAgICAgIEwiJWE6JWQ6IFN0YXR1cyAtICVyIiwN Cj4gKyAgICAgICAgICAgX19GSUxFX18sDQo+ICsgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywN Cj4gKyAgICAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICAgICk7DQo+ICsgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiArDQo+ICt9DQo+ICsqLw0KDQoNCj4gZGlmZiAtLWdpdCBhL3VlZmktDQo+IHNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNr Qm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb24uYyBiL3VlZmktDQo+IHNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNr Qm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb24uYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMC4uMTRjYzU2ODQNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1Byb3RvY29sL0hJ SUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSEkNCj4gSUNvbmZpZ0FjY2Vzc0JCVGVzdEZ1bmN0 aW9uLmMNCj4gQEAgLTAsMCArMSw2MDYgQEANCj4gKy8qKiBAZmlsZQ0KPiArDQo+ICsgIENvcHly aWdodCAyMDA2IC0gMjAxNyBVbmlmaWVkIEVGSSwgSW5jLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChj KSAyMDEwIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQu PEJSPg0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTksTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLg0K PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mDQo+IHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UNCj4gbWF5IGJlIGZvdW5k IGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAN Cj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MNCj4gT1IgSU1QTElFRC4N Cj4gKw0KPiArKiovDQo+ICsvKisrDQo+ICsNCj4gK01vZHVsZSBOYW1lOg0KPiArICAgIEhJSUNv bmZpZ0FjY2Vzc0JCVGVzdEZ1bmN0aW9uLmMNCj4gKw0KPiArQWJzdHJhY3Q6DQo+ICsgICAgZm9y IEVGSSBEcml2ZXIgSElJIENvbmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29sJ3MgZnVuY3Rpb24g VGVzdA0KPiArDQo+ICstLSovDQo+ICsNCj4gKyNpbmNsdWRlICJISUlDb25maWdBY2Nlc3NCQlRl c3RNYWluLmgiDQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0RXh0cmFjdENvbmZp Z0Z1bmN0aW9uVGVzdENoZWNrcG9pbnQxICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElC UkFSWV9QUk9UT0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJSV9DT05G SUdfUk9VVElOR19QUk9UT0NPTCAgICAgICAgICAgICpISUlDb25maWdSb3V0aW5nLA0KPiArICBJ TiBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICAgICAgKkhJSUNvbmZpZ0Fj Y2Vzcw0KPiArICApOw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RFeHRyYWN0Q29uZmln RnVuY3Rpb25UZXN0Q2hlY2twb2ludDIgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJS QVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJ R19ST1VUSU5HX1BST1RPQ09MICAgICAgICAgICAgKkhJSUNvbmZpZ1JvdXRpbmcsDQo+ICsgIElO IEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNj ZXNzDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdFJvdXRlQ29uZmlnRnVu Y3Rpb25UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiArICBJTiBFRklfSElJX0NPTkZJR19S T1VUSU5HX1BST1RPQ09MICAgICAgICAgICAgKkhJSUNvbmZpZ1JvdXRpbmcsDQo+ICsgIElOIEVG SV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNjZXNz DQo+ICsgICk7DQoNClRoZSBiZWxvdyBpcyBjb21tZW50ZWQgb3V0LCB3aGljaCBzaG91bGQgYmUg cmVtb3ZlZCBiZWZvcmUgdXBzdHJlYW0uDQo+ICsvKg0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0 Q2FsbEJhY2tGdW5jdGlvblRlc3RDaGVja3BvaW50MSAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9U RVNUX0xJQlJBUllfUFJPVE9DT0wgICAgICAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9I SUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAgICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ ICsgICk7DQo+ICsqLw0KDQoNCj4gKw0KPiArLy8NCj4gKy8vVGVzdCBDYXNlcw0KPiArLy8NCg0K VGhlIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIHdoaWNoIHNob3VsZCBiZSByZW1vdmVkIGJlZm9y ZSB1cHN0cmVhbS4NCj4gKy8qDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RVbml0VGVzdCAoDQo+ ICsgIElOIEVGSV9CQl9URVNUX1BST1RPQ09MICAgICAgICpUaGlzLA0KPiArICBJTiBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAqQ2xpZW50SW50ZXJmYWNlLA0KPiArICBJTiBFRklfVEVTVF9M RVZFTCAgICAgICAgICAgICBUZXN0TGV2ZWwsDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgIFN1cHBvcnRIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX0hJSV9DT05GSUdfQUNDRVNT X1BST1RPQ09MICAgICAgICAqSElJQ29uZmlnQWNjZXNzOw0KPiArICBFRklfU1RSSU5HICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGggPSBOVUxMOw0KPiArICBFRklfU1RSSU5H ICAgIFJlcXVlc3QgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgIFJlc3AgPSBOVUxMOw0KPiAr ICBFRklfU1RSSU5HICAgIE11bHRpQ29uZmlnQWx0UmVzcCA9DQo+IEwiR1VJRD05NzBlYjk0YWEw ZDQ0OWY3Yjk4MGJkYWE0N2Q0MjUyNyZOQU1FPWZ0ODk0JlBBVEg9MDAwYWNmJk9GRlNFVA0KPiA9 MyZXSURUSD00JlZBTFVFPWFhYmJjY2RkJk9GRlNFVD0xJldJRFRIPTImVkFMVUU9ZWVmZiZHVUlE PTk3MGViOTRhYTANCj4gZDQ0OWY3Yjk4MGJkYWE0N2Q0MjUyNyZOQU1FPWZ0ODk0JlBBVEg9MDAw YWNmJkFMVENGRz0wMDM3JkEwMDA9YWJjZCZCDQo+IDAwMD1lZmVmJkdVSUQ9OTcwZWI5NGFhMGQ0 NDlmN2I5ODBiZGFhNDdkNDI1MjgmTkFNRT1mdDg5NCZQQVRIPTAxMDQxOA0KPiAwMDM1MTcwYjBm YTA4NzkzNDFiMjY2NTM4YzM4YWY0OGNlMDAwMDAwMDA3ZmZmMDQwMCZBMDAwPWFiY2QmQjAwMD1l ZmUNCj4gZiZHVUlEPTk3MGViOTRhYTBkNDQ5ZjdiOTgwYmRhYTQ3ZDQyNTI4Jk5BTUU9ZnQ4OTQm UEFUSD0wMTA0MTgwMDM1MTcwDQo+IGIwZmEwODc5MzQxYjI2NjUzOGMzOGFmNDhjZTAwMDAwMDAw N2ZmZjA0MDAmQUxUQ0ZHPTAwMzcmT0ZGU0VUPTMmV0lEVA0KPiBIPTQmVkFMVUU9YWFiYmNjZGQm T0ZGU0VUPTEmV0lEVEg9MiZWQUxVRT1lZWZmIjs7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gaW5p dA0KPiArICAvLw0KPiArICBISUlDb25maWdBY2Nlc3MgPQ0KPiAoRUZJX0hJSV9DT05GSUdfQUND RVNTX1BST1RPQ09MKilDbGllbnRJbnRlcmZhY2U7DQo+ICsNCj4gKyAgUmVxdWVzdCA9IChFRklf U1RSSU5HKSBTY3RBbGxvY2F0ZVplcm9Qb29sICgyICogU2N0U3RyTGVuDQo+IChNdWx0aUNvbmZp Z0FsdFJlc3ApICsgMik7DQo+ICsgIGlmIChSZXF1ZXN0ID09IE5VTEwpDQo+ICsgICByZXR1cm4g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsNCj4gKyAgUmVzcCA9IChFRklfU1RSSU5HKSBTY3RB bGxvY2F0ZVplcm9Qb29sICgyICogU2N0U3RyTGVuDQo+IChNdWx0aUNvbmZpZ0FsdFJlc3ApICsg Mik7DQo+ICsgIGlmIChSZXNwID09IE5VTEwpIHsNCj4gKyAgIGd0QlMtPkZyZWVQb29sIChSZXF1 ZXN0KTsNCj4gKyAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArDQo+ ICsgIFN0YXR1cyA9IEdldERldmljZVBhdGggKCBISUlDb25maWdBY2Nlc3MsICZEZXZpY2VQYXRo ICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgIGd0QlMtPkZyZWVQb29s IChSZXNwKTsNCj4gKyAgIGd0QlMtPkZyZWVQb29sIChSZXF1ZXN0KTsNCj4gKyAgICByZXR1cm4g U3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gR2V0Q29ycmVzcG9uZGluZ1JlcXVl c3QgKE11bHRpQ29uZmlnQWx0UmVzcCwgRGV2aWNlUGF0aCwNCj4gUmVxdWVzdCk7DQo+ICsNCj4g KyAgU3RhdHVzID0gR2V0Q29ycmVzcG9uZGluZ1Jlc3AgKE11bHRpQ29uZmlnQWx0UmVzcCwgRGV2 aWNlUGF0aCwNCj4gUmVzcCk7DQo+ICsNCj4gKyAgZ3RCUy0+RnJlZVBvb2wgKFJlcXVlc3QpOw0K PiArICBndEJTLT5GcmVlUG9vbCAoUmVzcCk7DQo+ICsgIGd0QlMtPkZyZWVQb29sIChEZXZpY2VQ YXRoKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsqLw0KDQoNCj4g Kw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0RXh0cmFjdENvbmZpZ0Z1bmN0aW9uVGVzdCAoDQo+ ICsgIElOIEVGSV9CQl9URVNUX1BST1RPQ09MICAgICAgICpUaGlzLA0KPiArICBJTiBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAqQ2xpZW50SW50ZXJmYWNlLA0KPiArICBJTiBFRklfVEVTVF9M RVZFTCAgICAgICAgICAgICBUZXN0TGV2ZWwsDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgIFN1cHBvcnRIYW5kbGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBTkRBUkRfVEVT VF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYjsNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9ISUlfQ09ORklHX0FDQ0VT U19QUk9UT0NPTCAgICAgICAgKkhJSUNvbmZpZ0FjY2VzczsNCj4gKyAgRUZJX0hJSV9DT05GSUdf Uk9VVElOR19QUk9UT0NPTCAgICAgICAqSElJQ29uZmlnUm91dGluZzsNCj4gKw0KPiArICAvLw0K PiArICAvLyBpbml0DQo+ICsgIC8vDQo+ICsgIEhJSUNvbmZpZ0FjY2VzcyA9DQo+IChFRklfSElJ X0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wqKUNsaWVudEludGVyZmFjZTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQo+ICsgIC8vDQo+ICsg IFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgICBT dXBwb3J0SGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICZnRWZpU3RhbmRhcmRUZXN0TGli cmFyeUd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZTdGFuZGFyZExpYg0K PiArICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0K PiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBHZXQg dGhlIENvbmZpZyBSb3V0aW5nIFByb3RvY29sIEludGVyZmFjZQ0KPiArICAvLw0KPiArICBTdGF0 dXMgPSBHZXRISUlDb25maWdSb3V0aW5nSW50ZXJmYWNlKCAmSElJQ29uZmlnUm91dGluZyApOw0K PiArICBpZiAoIEVGSV9FUlJPUihTdGF0dXMpICkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvL0NhbGwgY2hlY2sgcG9pbnRzDQo+ICsgIC8vDQo+ ICsgIEJCVGVzdEV4dHJhY3RDb25maWdGdW5jdGlvblRlc3RDaGVja3BvaW50MSggU3RhbmRhcmRM aWIsDQo+IEhJSUNvbmZpZ1JvdXRpbmcsIEhJSUNvbmZpZ0FjY2VzcyApOw0KPiArICBCQlRlc3RF eHRyYWN0Q29uZmlnRnVuY3Rpb25UZXN0Q2hlY2twb2ludDIoIFN0YW5kYXJkTGliLA0KPiBISUlD b25maWdSb3V0aW5nLCBISUlDb25maWdBY2Nlc3MgKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Um91dGVDb25m aWdGdW5jdGlvblRlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhp cywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwN Cj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBF RklfSEFORExFICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICkNCj4gK3sNCj4g KyAgRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQo+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBF RklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3M7DQo+ ICsgIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdfUFJPVE9DT0wgICAgICAgKkhJSUNvbmZpZ1JvdXRp bmc7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gaW5pdA0KPiArICAvLw0KPiArICBISUlDb25maWdB Y2Nlc3MgPQ0KPiAoRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MKilDbGllbnRJbnRlcmZh Y2U7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVy ZmFjZQ0KPiArICAvLw0KPiArICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsg ICAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAm Z0VmaVN0YW5kYXJkVGVzdExpYnJhcnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIChWT0lE ICoqKSAmU3RhbmRhcmRMaWINCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4g KyAgLy8NCj4gKyAgLy8gR2V0IHRoZSBDb25maWcgUm91dGluZyBQcm90b2NvbCBJbnRlcmZhY2UN Cj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gR2V0SElJQ29uZmlnUm91dGluZ0ludGVyZmFjZSggJkhJ SUNvbmZpZ1JvdXRpbmcgKTsNCj4gKyAgaWYgKCBFRklfRVJST1IoU3RhdHVzKSApIHsNCj4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy9DYWxsIGNoZWNr IHBvaW50cw0KPiArICAvLw0KPiArICBCQlRlc3RSb3V0ZUNvbmZpZ0Z1bmN0aW9uVGVzdENoZWNr cG9pbnQxKCBTdGFuZGFyZExpYiwNCj4gSElJQ29uZmlnUm91dGluZywgSElJQ29uZmlnQWNjZXNz ICk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQoNClRoZSBiZWxv dyBpcyBjb21tZW50ZWQgb3V0LCB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBiZWZvcmUgdXBzdHJl YW0uDQo+ICsvKg0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Q2FsbEJhY2tGdW5jdGlvblRlc3Qg KA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RF U1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExFICAgICAg ICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQU5EQVJE X1RFU1RfTElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQo+ICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfSElJX0NPTkZJR19B Q0NFU1NfUFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3M7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gaW5pdA0KPiArICAvLw0KPiArICBISUlDb25maWdBY2Nlc3MgPQ0KPiAoRUZJX0hJSV9D T05GSUdfQUNDRVNTX1BST1RPQ09MKilDbGllbnRJbnRlcmZhY2U7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KPiArICAvLw0KPiArICBT dGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsgICAgICAgICAgICAgICAgICAgU3Vw cG9ydEhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAmZ0VmaVN0YW5kYXJkVGVzdExpYnJh cnlHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmU3RhbmRhcmRMaWINCj4g KyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy9DYWxsIGNo ZWNrIHBvaW50cw0KPiArICAvLw0KPiArICBCQlRlc3RDYWxsQmFja0Z1bmN0aW9uVGVzdENoZWNr cG9pbnQxKCBTdGFuZGFyZExpYiwNCj4gSElJQ29uZmlnQWNjZXNzICk7DQo+ICsNCj4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArKi8NCg0KDQo+ICsNCj4gKy8vDQo+ICsvL0NoZWNr IFBvaW50cw0KPiArLy8NCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdEV4dHJhY3RDb25maWdGdW5j dGlvblRlc3RDaGVja3BvaW50MSAoDQo+ICsgIElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllf UFJPVE9DT0wgICAgICAgICAqU3RhbmRhcmRMaWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX1JP VVRJTkdfUFJPVE9DT0wgICAgICAgICAgICAqSElJQ29uZmlnUm91dGluZywNCj4gKyAgSU4gRUZJ X0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAgICAgICpISUlDb25maWdBY2Nlc3MN Cj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgU3RhdHVzOw0KPiArICBF RklfVEVTVF9BU1NFUlRJT04gICAgQXNzZXJ0aW9uVHlwZTsNCj4gKw0KPiArICBFRklfU1RSSU5H ICAgICAgICAgICAgUmVxdWVzdCA9IE5VTEw7DQo+ICsgIEVGSV9TVFJJTkcgICAgICAgICAgICBD b25maWdIZHIgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUHJvZ3Jlc3MgPSBO VUxMOw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUmVzdWx0cyA9IE5VTEw7DQo+ICsgIEVG SV9TVFJJTkcgICAgICAgICAgICBNdWx0aUNvbmZpZ0FsdFJlc3AgPSBOVUxMOw0KPiArICBFRklf U1RSSU5HICAgICAgICAgICAgRGV2aWNlUGF0aCA9IE5VTEw7DQo+ICsNCj4gKw0KPiArICAvL2lu aXQgdGhlIFJlcXVlc3QNCj4gKyAgU3RhdHVzID0gSElJQ29uZmlnUm91dGluZy0+RXhwb3J0Q29u ZmlnKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhJSUNvbmZpZ1JvdXRpbmcs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk11bHRpQ29uZmlnQWx0UmVzcA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1Io U3RhdHVzKSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0 dXMgPSBHZXREZXZpY2VQYXRoICggSElJQ29uZmlnQWNjZXNzLCAmRGV2aWNlUGF0aCApOw0KPiAr ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICBndEJTLT5GcmVlUG9vbCAoTXVsdGlD b25maWdBbHRSZXNwKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg UmVxdWVzdCA9IChFRklfU1RSSU5HKSBTY3RBbGxvY2F0ZVplcm9Qb29sICggMiAqIFNjdFN0ckxl bg0KPiAoTXVsdGlDb25maWdBbHRSZXNwKSArIDIgKTsNCj4gKyAgaWYgKFJlcXVlc3QgPT0gTlVM TCkgew0KPiArICAgIGd0QlMtPkZyZWVQb29sIChNdWx0aUNvbmZpZ0FsdFJlc3ApOw0KPiArICAg IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoKTsNCj4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBHZXRDb3JyZXNwb25kaW5nUmVx dWVzdCAoTXVsdGlDb25maWdBbHRSZXNwLCBEZXZpY2VQYXRoLA0KPiBSZXF1ZXN0KTsNCj4gKyAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgZ3RCUy0+RnJlZVBvb2wgKE11bHRpQ29u ZmlnQWx0UmVzcCk7DQo+ICsgICAgZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiArICAg IGd0QlMtPkZyZWVQb29sIChSZXF1ZXN0KTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2FsbCBFeHRyYWN0Q29uZmlnIHdpdGggdmFsaWQgcGFy YW1ldGVycw0KPiArICAvLw0KPiArICBTdGF0dXMgPSBISUlDb25maWdBY2Nlc3MtPkV4dHJhY3RD b25maWcoDQo+ICsgICAgICAgICAgICAgICAgICBISUlDb25maWdBY2Nlc3MsDQo+ICsgICAgICAg ICAgICAgICAgICBSZXF1ZXN0LA0KPiArICAgICAgICAgICAgICAgICAgJlByb2dyZXNzLA0KPiAr ICAgICAgICAgICAgICAgICAgJlJlc3VsdHMNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsN Cj4gKyAgaWYgKCAoRUZJX1NVQ0NFU1MgPT0gU3RhdHVzKSAmJiAoUHJvZ3Jlc3MgPT0gKFJlcXVl c3QgKyBTY3RTdHJMZW4NCj4gKFJlcXVlc3QpKSkgKSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9 IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgICAgaWYgKFJlc3VsdHMgPT0gTlVMTCkg ew0KPiArICAgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIGd0QlMtPkZyZWVQb29sIChSZXN1bHRzKTsNCj4gKyAg ICB9DQo+ICsgIH0gZWxzZSBpZiAoRUZJX09VVF9PRl9SRVNPVVJDRVMgPT0gU3RhdHVzKSB7DQo+ ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9XQVJOSU5HOw0KPiArICB9 ZWxzZSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7 DQo+ICsgIH0NCj4gKyAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAg ICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBl LA0KPiArICAgICAgICAgICAgICAgICBnSElJQ29uZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25Bc3Nl cnRpb25HdWlkMDAxLA0KPiArICAgICAgICAgICAgICAgICBMIkhJSV9DT05GSUdfQUNDRVNTX1BS T1RPQ09MLkV4dHJhY3RDb25maWctDQo+IEV4dHJhY3RDb25maWcoKSByZXR1cm5zIEVGSV9TVUND RVNTIGFuZCB2YWlsZCBSZXN1bHRzIHdpdGggdmFsaWQNCj4gcGFyYW1ldGVycyAuIiwNCj4gKyAg ICAgICAgICAgICAgICAgTCIlYTolZDogU3RhdHVzIC0gJXIiLA0KPiArICAgICAgICAgICAgICAg ICBfX0ZJTEVfXywNCj4gKyAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KPiArICAg ICAgICAgICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICAv Lw0KPiArICAvLyBDaGFuZ2UgdGhlIFJlcXVlc3QgdG8gQ29uZmlnSGRyDQo+ICsgIC8vDQo+ICsg IENvbmZpZ0hkciA9IFJlcXVlc3Q7DQo+ICsgIHdoaWxlICgqUmVxdWVzdCkgew0KPiArICAgIGlm ICgqUmVxdWVzdCA9PSBMJyYnKSB7DQo+ICsgICAgICBpZiAoU2N0U3RybkNtcCAoUmVxdWVzdCwg TCImTkFNRT0iLCA2KSA9PSAwKSB7DQo+ICsgICAgICAgIFJlcXVlc3QgPSBSZXF1ZXN0ICsgNjsN Cj4gKyAgICAgIH0gZWxzZSBpZiAoU2N0U3RybkNtcCAoUmVxdWVzdCwgTCImUEFUSD0iLCA2KSA9 PSAwKSB7DQo+ICsgICAgICAgIFJlcXVlc3QgPSBSZXF1ZXN0ICsgNjsNCj4gKyAgICAgIH0gZWxz ZSB7DQo+ICsgICAgICAgICpSZXF1ZXN0ID0gMDsNCj4gKyAgICAgIH0NCj4gKyAgICB9IGVsc2Ug ew0KPiArICAgICAgUmVxdWVzdCsrOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArICBSZXF1ZXN0ID0g Q29uZmlnSGRyOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgRXh0cmFjdENvbmZpZyB3aGVu IFJlcXVlc3QgaXMgQ29uZmlnSGRyDQo+ICsgIC8vDQo+ICsgIFByb2dyZXNzID0gTlVMTDsNCj4g KyAgUmVzdWx0cyA9IE5VTEw7DQo+ICsgIFN0YXR1cyA9IEhJSUNvbmZpZ0FjY2Vzcy0+RXh0cmFj dENvbmZpZygNCj4gKyAgICAgICAgICAgICAgICAgIEhJSUNvbmZpZ0FjY2VzcywNCj4gKyAgICAg ICAgICAgICAgICAgIFJlcXVlc3QsDQo+ICsgICAgICAgICAgICAgICAgICAmUHJvZ3Jlc3MsDQo+ ICsgICAgICAgICAgICAgICAgICAmUmVzdWx0cw0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBpZiAoIChFRklfU1VDQ0VTUyA9PSBTdGF0dXMpICYmIChQcm9ncmVzcyA9PSAoUmVx dWVzdCArIFNjdFN0ckxlbg0KPiAoUmVxdWVzdCkpKSApIHsNCj4gKyAgICBBc3NlcnRpb25UeXBl ID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCj4gKyAgICBpZiAoUmVzdWx0cyA9PSBOVUxM KSB7DQo+ICsgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsN Cj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgaWYgKE5VTEwgPT0gU2N0U3RyU3RyIChSZXN1bHRz LCBSZXF1ZXN0KSkgew0KPiArICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJU SU9OX0ZBSUxFRDsNCj4gKyAgICAgIH0NCj4gKyAgICAgIGd0QlMtPkZyZWVQb29sIChSZXN1bHRz KTsNCj4gKyAgICB9DQo+ICsgIH0gZWxzZSBpZiAoRUZJX09VVF9PRl9SRVNPVVJDRVMgPT0gU3Rh dHVzKSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9XQVJOSU5H Ow0KPiArICB9ZWxzZSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElP Tl9GQUlMRUQ7DQo+ICsgIH0NCj4gKyAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ ICsgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KPiArICAgICAgICAgICAgICAgICBBc3Nl cnRpb25UeXBlLA0KPiArICAgICAgICAgICAgICAgICBnSElJQ29uZmlnQWNjZXNzQkJUZXN0RnVu Y3Rpb25Bc3NlcnRpb25HdWlkMDAyLA0KPiArICAgICAgICAgICAgICAgICBMIkhJSV9DT05GSUdf QUNDRVNTX1BST1RPQ09MLkV4dHJhY3RDb25maWctDQo+IEV4dHJhY3RDb25maWcoKSByZXR1cm5z IEVGSV9TVUNDRVNTIGFuZCB2YWlsZCBSZXN1bHRzIHdpdGggdmFsaWQNCj4gcGFyYW1ldGVycyAu IiwNCj4gKyAgICAgICAgICAgICAgICAgTCIlYTolZDogU3RhdHVzIC0gJXIiLA0KPiArICAgICAg ICAgICAgICAgICBfX0ZJTEVfXywNCj4gKyAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9f LA0KPiArICAgICAgICAgICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBndEJTLT5GcmVlUG9vbCAoTXVsdGlDb25maWdBbHRSZXNwKTsNCj4gKyAgZ3RCUy0+ RnJlZVBvb2wgKERldmljZVBhdGgpOw0KPiArICBndEJTLT5GcmVlUG9vbCAoUmVxdWVzdCk7DQo+ ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK0VGSV9TVEFU VVMNCj4gK0JCVGVzdEV4dHJhY3RDb25maWdGdW5jdGlvblRlc3RDaGVja3BvaW50MiAoDQo+ICsg IElOIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9DT0wgICAgICAgICAqU3RhbmRhcmRM aWIsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX1JPVVRJTkdfUFJPVE9DT0wgICAgICAgICAgICAq SElJQ29uZmlnUm91dGluZywNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09M ICAgICAgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgU3RhdHVzOw0KPiArICBFRklfVEVTVF9BU1NFUlRJT04gICAgQXNzZXJ0 aW9uVHlwZTsNCj4gKw0KPiArICBFRklfU1RSSU5HICAgICAgICAgICAgUmVxdWVzdCA9IE5VTEw7 DQo+ICsgIEVGSV9TVFJJTkcgICAgICAgICAgICBQcm9ncmVzcyA9IE5VTEw7DQo+ICsgIEVGSV9T VFJJTkcgICAgICAgICAgICBSZXN1bHRzID0gTlVMTDsNCj4gKyAgRUZJX1NUUklORyAgICAgICAg ICAgIE11bHRpQ29uZmlnQWx0UmVzcCA9IE5VTEw7DQo+ICsNCj4gKw0KPiArICAvL2luaXQgdGhl IFJlcXVlc3QNCj4gKyAgU3RhdHVzID0gSElJQ29uZmlnUm91dGluZy0+RXhwb3J0Q29uZmlnKA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhJSUNvbmZpZ1JvdXRpbmcsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk11bHRpQ29uZmlnQWx0UmVzcA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVz KSkgew0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAv LyBDYWxsIEV4dHJhY3RDb25maWcgd2l0aCB2YWxpZCBwYXJhbWV0ZXJzDQo+ICsgIC8vDQo+ICsg IFN0YXR1cyA9IEhJSUNvbmZpZ0FjY2Vzcy0+RXh0cmFjdENvbmZpZygNCj4gKyAgICAgICAgICAg ICAgICAgIEhJSUNvbmZpZ0FjY2VzcywNCj4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsg ICAgICAgICAgICAgICAgICAmUHJvZ3Jlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAmUmVzdWx0 cw0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBpZiAoRUZJX09VVF9PRl9SRVNP VVJDRVMgPT0gU3RhdHVzKSB7DQo+ICsgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VS VElPTl9XQVJOSU5HOw0KPiArICB9IGVsc2UgaWYgKChFRklfTk9UX0ZPVU5EID09IFN0YXR1cykg JiYgKFByb2dyZXNzID09IE5VTEwpICYmDQo+IChSZXN1bHRzID09IE5VTEwpKSB7DQo+ICsgICAg QXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgIH0gZWxzZSBp ZiAoIEVGSV9TVUNDRVNTICE9IFN0YXR1cyApIHsNCj4gKyAgICBBc3NlcnRpb25UeXBlID0gRUZJ X1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAgICBpZiAoUmVzdWx0cyAhPSBOVUxMKSB7DQo+ ICsgICAgICBndEJTLT5GcmVlUG9vbCAoUmVzdWx0cyk7DQo+ICsgICAgfQ0KPiArICB9IGVsc2Ug ew0KPiArICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KPiAr ICAgIGlmIChSZXN1bHRzID09IE5VTEwpIHsNCj4gKyAgICAgIEFzc2VydGlvblR5cGUgPSBFRklf VEVTVF9BU1NFUlRJT05fRkFJTEVEOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArICBTdGFuZGFyZExp Yi0+UmVjb3JkQXNzZXJ0aW9uICgNCj4gKyAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQo+ ICsgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQo+ICsgICAgICAgICAgICAgICAgIGdI SUlDb25maWdBY2Nlc3NCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDMsDQo+ICsgICAgICAg ICAgICAgICAgIEwiSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wuRXh0cmFjdENvbmZpZy0NCj4g RXh0cmFjdENvbmZpZygpIHJldHVybnMgRUZJX1NVQ0NFU1Mgb3IgRUZJX05PVF9GT1VORCB3aXRo IFJlcXVlc3QNCj4gYmVlbiBOVUxMIC4iLA0KPiArICAgICAgICAgICAgICAgICBMIiVhOiVkOiBT dGF0dXMgLSAlciIsDQo+ICsgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KPiArICAgICAgICAg ICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgICAgICAgIFN0YXR1cw0KPiAr ICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsNCj4gKyAgaWYgKCBOVUxMICE9IE11bHRpQ29u ZmlnQWx0UmVzcCApew0KPiArICAgIGd0QlMtPkZyZWVQb29sIChNdWx0aUNvbmZpZ0FsdFJlc3Ap Ow0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCBOVUxMICE9UmVzdWx0cyApIHsNCj4gKyAgICBndEJT LT5GcmVlUG9vbCAoUmVzdWx0cyk7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoTlVMTCAhPSBSZXF1 ZXN0KSB7DQo+ICsgICAgZ3RCUy0+RnJlZVBvb2wgKFJlcXVlc3QpOw0KPiArICB9DQo+ICsNCj4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4g K0JCVGVzdFJvdXRlQ29uZmlnRnVuY3Rpb25UZXN0Q2hlY2twb2ludDEgKA0KPiArICBJTiBFRklf U1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICAgICAgKlN0YW5kYXJkTGliLA0KPiAr ICBJTiBFRklfSElJX0NPTkZJR19ST1VUSU5HX1BST1RPQ09MICAgICAgICAgICAgKkhJSUNvbmZp Z1JvdXRpbmcsDQo+ICsgIElOIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAg ICAgICAqSElJQ29uZmlnQWNjZXNzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgIEFzc2VydGlvblR5cGU7 DQo+ICsNCj4gKyAgRUZJX1NUUklORyAgICAgICAgICAgIFJlc3AgPSBOVUxMOw0KPiArICBFRklf U1RSSU5HICAgICAgICAgICAgUHJvZ3Jlc3MgPSBOVUxMOw0KPiArICBFRklfU1RSSU5HICAgICAg ICAgICAgTXVsdGlDb25maWdBbHRSZXNwID0gTlVMTDsNCj4gKyAgRUZJX1NUUklORyAgICAgICAg ICAgIERldmljZVBhdGggPSBOVUxMOw0KPiArDQo+ICsgIC8vaW5pdCB0aGUgUmVxdWVzdA0KPiAr ICBTdGF0dXMgPSBISUlDb25maWdSb3V0aW5nLT5FeHBvcnRDb25maWcoDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSElJQ29uZmlnUm91dGluZywNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmTXVsdGlDb25maWdBbHRSZXNwDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdldERldmljZVBhdGgg KCBISUlDb25maWdBY2Nlc3MsICZEZXZpY2VQYXRoICk7DQo+ICsgIGlmIChFRklfRVJST1IoU3Rh dHVzKSkgew0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKE11bHRpQ29uZmlnQWx0UmVzcCk7DQo+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFJlc3AgPSAoRUZJX1NUUklORykg U2N0QWxsb2NhdGVaZXJvUG9vbCAoIDIgKiBTY3RTdHJMZW4NCj4gKE11bHRpQ29uZmlnQWx0UmVz cCkgKyAyICk7DQo+ICsgIGlmIChSZXNwID09IE5VTEwpIHsNCj4gKyAgICBndEJTLT5GcmVlUG9v bCAoTXVsdGlDb25maWdBbHRSZXNwKTsNCj4gKyAgIGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRo KTsNCj4gKyAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gKyAgfQ0KPiArDQo+ICsg IFN0YXR1cyA9IEdldENvcnJlc3BvbmRpbmdSZXNwIChNdWx0aUNvbmZpZ0FsdFJlc3AsIERldmlj ZVBhdGgsDQo+IFJlc3ApOw0KPiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgIGd0 QlMtPkZyZWVQb29sIChNdWx0aUNvbmZpZ0FsdFJlc3ApOw0KPiArICAgZ3RCUy0+RnJlZVBvb2wg KERldmljZVBhdGgpOw0KPiArICAgZ3RCUy0+RnJlZVBvb2wgKFJlc3ApOw0KPiArICAgIHJldHVy biBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBDYWxsIFJvdXRlQ29uZmln IHdpdGggdmFsaWQgcGFyYW1ldGVycw0KPiArICAvLw0KPiArICBTdGF0dXMgPSBISUlDb25maWdB Y2Nlc3MtPlJvdXRlQ29uZmlnKA0KPiArICAgICAgICAgICAgICAgICBISUlDb25maWdBY2Nlc3Ms DQo+ICsgICAgICAgICAgICAgICAgIFJlc3AsDQo+ICsgICAgICAgICAgICAgICAgICZQcm9ncmVz cw0KPiArICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoIChFRklfU1VDQ0VTUyA9PSBTdGF0 dXMpICYmIChQcm9ncmVzcyA9PSBSZXNwICsgU2N0U3RyTGVuDQo+IChSZXNwKSkgKSB7DQo+ICsg ICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQo+ICsgIH0gZWxz ZSBpZiAoIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTID09IFN0YXR1cyApIHsNCj4gKyAgICBBc3NlcnRp b25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1dBUk5JTkc7DQo+ICsgIH0gZWxzZSB7DQo+ICsg ICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsgIH0NCj4g KyAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgIFN0YW5kYXJk TGliLA0KPiArICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KPiArICAgICAgICAgICBnSElJQ29u ZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzLA0KPiArICAgICAgICAgICBM IkhJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MLlJvdXRlQ29uZmlnLSBSb3V0ZUNvbmZpZygpDQo+ IHJldHVybnMgRUZJX1NVQ0NFU1Mgd2l0aCB2YWxpZCBwYXJhbWV0ZXJzIC4iLA0KPiArICAgICAg ICAgICBMIiVhOiVkOiBTdGF0dXMgLSAlciIsDQo+ICsgICAgICAgICAgIF9fRklMRV9fLA0KPiAr ICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgIFN0YXR1cw0KPiArICAg ICAgICAgICApOw0KPiArDQo+ICsgIGd0QlMtPkZyZWVQb29sIChNdWx0aUNvbmZpZ0FsdFJlc3Ap Ow0KPiArICBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aCk7DQo+ICsgIGd0QlMtPkZyZWVQb29s IChSZXNwKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCg0KVGhl IGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIHdoaWNoIHNob3VsZCBiZSByZW1vdmVkIGJlZm9yZSB1 cHN0cmVhbS4NCj4gKy8qDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RDYWxsQmFja0Z1bmN0aW9u VGVzdENoZWNrcG9pbnQxICgNCj4gKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElCUkFSWV9QUk9U T0NPTCAgICAgICAgICpTdGFuZGFyZExpYiwNCj4gKyAgSU4gRUZJX0hJSV9DT05GSUdfQUNDRVNT X1BST1RPQ09MICAgICAgICAgICAgICpISUlDb25maWdBY2Nlc3MNCj4gKyAgKQ0KPiArew0KPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gKyAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3Nl cnRpb25UeXBlOw0KPiArDQo+ICsgIEVGSV9CUk9XU0VSX0FDVElPTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkFjdGlvbjsNCj4gKyAgRUZJX1FVRVNUSU9OX0lEICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWVzdGlvbklkOw0KPiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU7DQo+ICsgIEVGSV9JRlJfVFlQRV9WQUxVRSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWU7DQo+ICsgIEVGSV9CUk9XU0VSX0FDVElP Tl9SRVFVRVNUICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUmVxdWVzdDsNCj4gKw0KPiArICAv L2luaXQgdGhlIHBhcmVtZXRlcnMNCj4gKyAgQWN0aW9uPUVGSV9CUk9XU0VSX0FDVElPTl9SRVFV RVNUX0NIQU5HSU5HOw0KPiArICBRdWVzdGlvbklkPTB4MTIzNDsNCj4gKyAgVHlwZT1FRklfSUZS X1RZUEVfTlVNX1NJWkVfODsNCj4gKw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENhbGwgQ2FsbEJh Y2sgIHdpdGggdmFsaWQgcGFyYW1ldGVycw0KPiArICAvLw0KPiArICBTdGF0dXMgPSBISUlDb25m aWdBY2Nlc3MtPkNhbGxCYWNrKA0KPiArICAgICAgICAgICAgICAgICBISUlDb25maWdBY2Nlc3Ms DQo+ICsgICAgICAgICAgICAgICAgIEFjdGlvbiwNCj4gKyAgICAgICAgICAgICAgICAgUXVlc3Rp b25JZCwNCj4gKyAgICAgICAgICAgICAgICBUeXBlLA0KPiArICAgICAgICAgICAgICAgICZWYWx1 ZSwNCj4gKyAgICAgICAgICAgICAgICAmQWN0aW9uUmVxdWVzdA0KPiArICAgICAgICAgICAgICAg ICApOw0KPiArICBpZiAoIEVGSV9TVUNDRVNTICE9IFN0YXR1cyApIHsNCj4gKyAgICBBc3NlcnRp b25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCj4gKyAgfSBlbHNlIHsNCj4gKyAg ICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCj4gKw0KPiArICAg Ly9jaGVjayB0aGUgb3V0cHV0IEFjdGlvblJlcXVlc3QNCj4gKyAgaWYgKChFRklfQlJPV1NFUl9B Q1RJT05fUkVRVUVTVF9OT05FIHx8DQo+IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX1JFU0VU IHx8IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX1NVQk1JVA0KPiB8fCBFRklfQlJPV1NFUl9B Q1RJT05fUkVRVUVTVF9FWElUKSAhPSBBY3Rpb25SZXF1ZXN0KQ0KPiArICAgQXNzZXJ0aW9uVHlw ZSA9IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQ7DQo+ICsNCj4gKyAgfQ0KPiArDQo+ICsNCj4g KyAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQo+ICsgICAgICAgICAgIFN0YW5kYXJk TGliLA0KPiArICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KPiArICAgICAgICAgICBnSElJQ29u ZmlnQWNjZXNzQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzLA0KPiArICAgICAgICAgICBM IkhJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MLkNhbGxCYWNrLSBDYWxsQmFjaygpIHJldHVybnMN Cj4gRUZJX1NVQ0NFU1Mgd2l0aCB2YWxpZCBwYXJhbWV0ZXJzIC4iLA0KPiArICAgICAgICAgICBM IiVhOiVkOiBTdGF0dXMgLSAlciIsDQo+ICsgICAgICAgICAgIF9fRklMRV9fLA0KPiArICAgICAg ICAgICAoVUlOVE4pX19MSU5FX18sDQo+ICsgICAgICAgICAgIFN0YXR1cw0KPiArICAgICAgICAg ICApOw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsqLw0KDQoNCj4gKw0KPiAr DQo+IGRpZmYgLS1naXQgYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvSUhWL1By b3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSEkNCj4gSUNvbmZpZ0FjY2Vzc0JC VGVzdE1haW4uYyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYvUHJvdG9j b2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNjZXNzQkJUZXN0 TWFpbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwLi4yOWM3OTNl Mg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISQ0KPiBJQ29u ZmlnQWNjZXNzQkJUZXN0TWFpbi5jDQo+IEBAIC0wLDAgKzEsNjU1IEBADQo+ICsvKiogQGZpbGUN Cj4gKw0KPiArICBDb3B5cmlnaHQgMjAwNiAtIDIwMTYgVW5pZmllZCBFRkksIEluYy48QlI+DQo+ ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LE1pY3JvY2hpcCBU ZWNobm9sb2d5IEluYy4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl DQo+IG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT DQo+IE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArLyorKw0KPiArDQo+ICtNb2R1bGUgTmFt ZToNCj4gKw0KPiArICBISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmMNCj4gKw0KPiArQWJzdHJh Y3Q6DQo+ICsNCj4gKyAgVGVzdCBEcml2ZXIgb2YgSElJIENvbmZpZ3VyYXRpb24gQWNjZXNzIFBy b3RvY29sDQo+ICsNCj4gKy0tKi8NCj4gKw0KPiArI2luY2x1ZGUgIkhJSUNvbmZpZ0FjY2Vzc0JC VGVzdE1haW4uaCINCj4gKw0KPiArLy8NCj4gKy8vIEdsb2JhbCB2YXJpYWJsZXMNCj4gKy8vDQo+ ICtFRklfSEFORExFIG1JbWFnZUhhbmRsZTsNCj4gKw0KPiArRUZJX0JCX1RFU1RfUFJPVE9DT0wg KmdCQlRlc3RQcm90b2NvbEludGVyZmFjZTsNCj4gKw0KPiArRUZJX0JCX1RFU1RfUFJPVE9DT0xf RklFTEQgZ0JCVGVzdFByb3RvY29sRmllbGQgPSB7DQo+ICsgIEVGSV9ISUlfQ09ORklHX0FDQ0VT U19QUk9UT0NPTF9URVNUX1JFVklTSU9OLA0KPiArICBJSFZfRUZJX0hJSV9DT05GSUdfQUNDRVNT X1BST1RPQ09MX0dVSUQsDQo+ICsgIEwiSElJIENvbmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29s IFRlc3QiLA0KPiArICBMIlVFRkkgSElJIENvbmZpZ3VyYXRpb24gQWNjZXNzICBQcm90b2NvbCBC bGFjay1Cb3ggVGVzdCINCj4gK307DQo+ICsNCj4gK0VGSV9HVUlEIGdTdXBwb3J0UHJvdG9jb2xH dWlkW10gPSB7DQo+ICsgIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfR1VJRCwNCj4gKyAgRUZJ X05VTExfR1VJRA0KPiArfTsNCj4gKw0KPiArRUZJX0JCX1RFU1RfRU5UUllfRklFTEQgZ0JCVGVz dEVudHJ5RmllbGRbXSA9IHsNCg0KVGhlIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIHdoaWNoIHNo b3VsZCBiZSByZW1vdmVkIGJlZm9yZSB1cHN0cmVhbS4NCj4gKyAgLyoNCj4gKyAgLy9Vc2UgZm9y IHVuaXQgdGVzdCBvbmx5DQo+ICsgIHsNCj4gKyAgICB7IDB4OGNkZGE4MTYsIDB4M2Y5NywgMHg0 MTU1LCB7IDB4YTYsIDB4NzMsIDB4ODYsIDB4OTMsIDB4NzksDQo+IDB4OGYsIDB4YjAsIDB4NmQg fSB9LA0KPiArICAgTCJVbml0IFRlc3QgT25seSIsDQo+ICsgICBMIlZlcmlmeSB0aGUgQXNzaXN0 YW50IEZ1bmN0aW9uIiwNCj4gKyAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULA0KPiArICAgIGdT dXBwb3J0UHJvdG9jb2xHdWlkLA0KPiArICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAgICBC QlRlc3RVbml0VGVzdA0KPiArICB9LA0KPiArICAqLw0KDQoNCj4gKyAgew0KPiArICAgIEVGSV9I SUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMTAxLA0KPiArICAgIEwi RXh0cmFjdENvbmZpZ0Z1bmN0aW9uIiwNCj4gKyAgICBMIkZ1bmN0aW9uIGF1dG8gdGVzdCBmb3Ig SElJIENvbmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29sDQo+IEV4dHJhY3RDb25maWcoKS4iLA0K PiArICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsDQo+ICsgICAgZ1N1cHBvcnRQcm90b2NvbEd1 aWQsDQo+ICsgICAgRUZJX1RFU1RfQ0FTRV9BVVRPLA0KPiArICAgIEJCVGVzdEV4dHJhY3RDb25m aWdGdW5jdGlvblRlc3QNCj4gKyAgfSwNCj4gKw0KPiArICB7DQo+ICsgICAgRUZJX0hJSV9DT05G SUdfQUNDRVNTX1BST1RPQ09MX1RFU1RfRU5UUllfR1VJRDAxMDIsDQo+ICsgICAgTCJSb3V0ZUNv bmZpZ0Z1bmN0aW9uIiwNCj4gKyAgICBMIkZ1bmN0aW9uIGF1dG8gdGVzdCBmb3IgSElJIENvbmZp Z3VyYXRpb24gQWNjZXNzIFByb3RvY29sDQo+IFJvdXRlQ29uZmlnKCkuIiwNCj4gKyAgICBFRklf VEVTVF9MRVZFTF9NSU5JTUFMLA0KPiArICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkLA0KPiArICAg IEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAgICBCQlRlc3RSb3V0ZUNvbmZpZ0Z1bmN0aW9uVGVz dA0KPiArICB9LA0KDQpUaGUgYmVsb3cgaXMgY29tbWVudGVkIG91dCwgd2hpY2ggc2hvdWxkIGJl IHJlbW92ZWQgYmVmb3JlIHVwc3RyZWFtLg0KPiArICAvKg0KPiArICB7DQo+ICsgICAgRUZJX0hJ SV9DT05GSUdfQUNDRVNTX1BST1RPQ09MX1RFU1RfRU5UUllfR1VJRDAxMDMsDQo+ICsgICAgTCJD YWxsQmFja0Z1bmN0aW9uIiwNCj4gKyAgICBMIkZ1bmN0aW9uIGF1dG8gdGVzdCBmb3IgSElJIENv bmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29sDQo+IENhbGxCYWNrKCkuIiwNCj4gKyAgICBFRklf VEVTVF9MRVZFTF9NSU5JTUFMLA0KPiArICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkLA0KPiArICAg IEVGSV9URVNUX0NBU0VfQVVUTywNCj4gKyAgICBCQlRlc3RDYWxsQmFja0Z1bmN0aW9uVGVzdA0K PiArICB9LA0KPiArICAqLw0KDQoNCj4gKyAgew0KPiArICAgIEVGSV9ISUlfQ09ORklHX0FDQ0VT U19QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMjAxLA0KPiArICAgIEwiRXh0cmFjdENvbmZpZ0Nv bmZvcm1hbmNlIiwNCj4gKyAgICBMIkNvbmZvcm1hbmNlIGF1dG8gdGVzdCBmb3IgSElJIENvbmZp Z3VyYXRpb24gQWNjZXNzIFByb3RvY29sDQo+IEV4dHJhY3RDb25maWcoKS4iLA0KPiArICAgIEVG SV9URVNUX0xFVkVMX01JTklNQUwsDQo+ICsgICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQsDQo+ICsg ICAgRUZJX1RFU1RfQ0FTRV9BVVRPLA0KPiArICAgIEJCVGVzdEV4dHJhY3RDb25maWdDb25mb3Jt YW5jZVRlc3QNCj4gKyAgfSwNCj4gKyAgew0KPiArICAgIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19Q Uk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMjAyLA0KPiArICAgIEwiUm91dGVDb25maWdDb25mb3Jt YW5jZSIsDQo+ICsgICAgTCJDb25mb3JtYW5jZSBhdXRvIHRlc3QgZm9yIEhJSSBDb25maWd1cmF0 aW9uIEFjY2VzcyBQcm90b2NvbA0KPiBSb3V0ZUNvbmZpZygpLiIsDQo+ICsgICAgRUZJX1RFU1Rf TEVWRUxfTUlOSU1BTCwNCj4gKyAgICBnU3VwcG9ydFByb3RvY29sR3VpZCwNCj4gKyAgICBFRklf VEVTVF9DQVNFX0FVVE8sDQo+ICsgICAgQkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3QN Cj4gKyAgfSwNCg0KVGhlIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIHdoaWNoIHNob3VsZCBiZSBy ZW1vdmVkIGJlZm9yZSB1cHN0cmVhbS4NCj4gKyAgLyoNCj4gKyAgew0KPiArICAgIEVGSV9ISUlf Q09ORklHX0FDQ0VTU19QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMjAzLA0KPiArICAgIEwiQ2Fs bEJhY2tDb25mb3JtYW5jZSIsDQo+ICsgICAgTCJDb25mb3JtYW5jZSBhdXRvIHRlc3QgZm9yIEhJ SSBDb25maWd1cmF0aW9uIEFjY2VzcyBQcm90b2NvbA0KPiBDYWxsQmFjaygpLiIsDQo+ICsgICAg RUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCj4gKyAgICBnU3VwcG9ydFByb3RvY29sR3VpZCwNCj4g KyAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQo+ICsgICAgQkJUZXN0Q2FsbEJhY2tDb25mb3JtYW5j ZVRlc3QNCj4gKyAgfSwNCj4gKyAgKi8NCg0KDQo+ICsgIDANCj4gK307DQo+ICsNCj4gKw0KPiAr DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0luaXRpYWxpemVISUlDb25maWdBY2Nlc3NCQlRlc3Qg KA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiAr ICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAgICAgICAgICpTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIEVmaUluaXRpYWxpemVUZXN0TGliIChJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUp Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIGluaXRpYWxpemUgdGVzdCB1dGlsaXR5IGxpYg0KPiAr ICAvLw0KPiArDQo+ICsgIFNjdEluaXRpYWxpemVMaWIgKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJs ZSk7DQo+ICsNCj4gKyAgbUltYWdlSGFuZGxlID0gSW1hZ2VIYW5kbGU7DQo+ICsNCj4gKyAgcmV0 dXJuIEVmaUluaXRBbmRJbnN0YWxsSUhWQkJUZXN0SW50ZXJmYWNlICgNCj4gKyAgICAgICAgICAg JkltYWdlSGFuZGxlLA0KPiArICAgICAgICAgICAmZ0JCVGVzdFByb3RvY29sRmllbGQsDQo+ICsg ICAgICAgICAgIGdCQlRlc3RFbnRyeUZpZWxkLA0KPiArICAgICAgICAgICBVbmxvYWRISUlDb25m aWdBY2Nlc3NCQlRlc3QsDQo+ICsgICAgICAgICAgICZnQkJUZXN0UHJvdG9jb2xJbnRlcmZhY2UN Cj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtVbmxv YWRISUlDb25maWdBY2Nlc3NCQlRlc3QgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIEVmaVVuaW5zdGFs bEFuZEZyZWVJSFZCQlRlc3RJbnRlcmZhY2UgKA0KPiArICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgICAgICAgICAgZ0JCVGVzdFByb3RvY29sSW50ZXJmYWNlDQo+ICsgICAgICAgICAgICk7 DQo+ICt9DQo+ICsNCj4gKw0KPiArLy8gQXNzaXN0YW5jZSBGdW5jdGlvbg0KPiArVUlOVE4NCj4g K0VmaURldmljZVBhdGhTaXplICgNCj4gKyAgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAq RGV2aWNlUGF0aA0KPiArICApDQo+ICsvKisrDQo+ICsNCj4gK1JvdXRpbmUgRGVzY3JpcHRpb246 DQo+ICsNCj4gKyAgQ2FsY3VsYXRlIHRoZSBzcGFjZSBzaXplIG9mIGEgZGV2aWNlIHBhdGguDQo+ ICsNCj4gK0FyZ3VtZW50czoNCj4gKw0KPiArICBEZXZpY2VQYXRoICAtIEEgc3BlY2lmaWVkIGRl dmljZSBwYXRoDQo+ICsNCj4gK1JldHVybnM6DQo+ICsNCj4gKyAgVGhlIHNpemUuDQo+ICsNCj4g Ky0tKi8NCj4gK3sNCj4gKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAqU3RhcnQ7DQo+ICsN Cj4gKyAgaWYgKERldmljZVBhdGggPT0gTlVMTCkgew0KPiArICAgIHJldHVybiAwOw0KPiArICB9 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2VhcmNoIGZvciB0aGUgZW5kIG9mIHRoZSBkZXZpY2Ug cGF0aCBzdHJ1Y3R1cmUNCj4gKyAgLy8NCj4gKyAgU3RhcnQgPSBEZXZpY2VQYXRoOw0KPiArICB3 aGlsZSAoIVNjdElzRGV2aWNlUGF0aEVuZCAoRGV2aWNlUGF0aCkpIHsNCj4gKyAgICBEZXZpY2VQ YXRoID0gU2N0TmV4dERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoKTsNCj4gKyAgfQ0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIENvbXB1dGUgdGhlIHNpemUgYW5kIGFkZCBiYWNrIGluIHRoZSBzaXpl IG9mIHRoZSBlbmQgZGV2aWNlDQo+IHBhdGggc3RydWN0dXJlDQo+ICsgIC8vDQo+ICsgIHJldHVy biAoKFVJTlROKSBEZXZpY2VQYXRoIC0gKFVJTlROKSBTdGFydCkgKyBzaXplb2YNCj4gKEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCk7DQo+ICt9DQo+ICsNCj4gKw0KPiArU1RBVElDDQo+ICtDSEFS MTYNCj4gK05pYmJsZVRvSGV4Q2hhclByaXZhdGUgKA0KPiArICBJTiBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICBOaWJibGUNCj4gKyAgKQ0KPiArLyorKw0KPiArDQo+ICsgIFJvdXRpbmUg RGVzY3JpcHRpb246DQo+ICsgICAgQ29udmVydHMgdGhlIGxvdyBuaWJibGUgb2YgYSBieXRlIHRv IGhleCB1bmljb2RlIGNoYXJhY3Rlci4NCj4gKw0KPiArICBBcmd1bWVudHM6DQo+ICsgICAgTmli YmxlIC0gbG93ZXIgbmliYmxlIG9mIGEgYnl0ZS4NCj4gKw0KPiArICBSZXR1cm5zOg0KPiArICAg IEhleCB1bmljb2RlIGNoYXJhY3RlciBiZXR3ZWVuIEwnMCcgdG8gTCdmJy4NCj4gKw0KPiArLS0q Lw0KPiArew0KPiArICBOaWJibGUgJj0gMHgwRjsNCj4gKw0KPiArICBpZiAoTmliYmxlIDw9IDB4 OSkgew0KPiArICAgIHJldHVybiAoQ0hBUjE2KShOaWJibGUgKyBMJzAnKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIHJldHVybiAoQ0hBUjE2KShOaWJibGUgLSAweEEgKyBMJ2EnKTsNCj4gK30NCj4gKw0K PiArDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0J1ZlRvSGV4U3RyaW5nUHJpdmF0ZSAo DQo+ICsgIElOIE9VVCBDSEFSMTYgICAgICAgICAgICAgICAgICAgICpTdHIsDQo+ICsgIElOIE9V VCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICpIZXhTdHJpbmdCdWZmZXJMZW5ndGgsDQo+ICsg IElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICpCdWYsDQo+ICsgIElOICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIExlbiwNCj4gKyAgSU4gICAgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgRmxhZw0KPiArICApDQo+ICsvKisrDQo+ICsNCj4gKyAgUm91dGluZSBEZXNjcmlw dGlvbjoNCj4gKyAgICBDb252ZXJ0cyBiaW5hcnkgYnVmZmVyIHRvIFVuaWNvZGUgc3RyaW5nLg0K PiArICAgIEF0IGEgbWluaW11bSwgYW55IGJsb2Igb2YgZGF0YSBjb3VsZCBiZSByZXByZXNlbnRl ZCBhcyBhIGhleA0KPiBzdHJpbmcuDQo+ICsNCj4gKyAgQXJndW1lbnRzOg0KPiArICAgIFN0ciAg ICAgICAgICAgICAgICAgICAtIFBvaW50ZXIgdG8gdGhlIHN0cmluZy4NCj4gKyAgICBIZXhTdHJp bmdCdWZmZXJMZW5ndGggLSBMZW5ndGggaW4gYnl0ZXMgb2YgYnVmZmVyIHRvIGhvbGQgdGhlDQo+ IGhleCBzdHJpbmcuIEluY2x1ZGVzIHRhaWxpbmcgJ1wwJyBjaGFyYWN0ZXIuDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSWYgcm91dGluZSByZXR1cm4gd2l0aCBFRklfU1VDQ0VTUywN Cj4gY29udGFpbmluZyBsZW5ndGggb2YgaGV4IHN0cmluZyBidWZmZXIuDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgcm91dGluZSByZXR1cm4gd2l0aA0KPiBFRklfQlVGRkVSX1RP T19TTUFMTCwgY29udGFpbmcgbGVuZ3RoIG9mIGhleCBzdHJpbmcgYnVmZmVyIGRlc2lyZWQuDQo+ ICsgICAgQnVmICAgICAgICAgICAgICAgICAgIC0gQnVmZmVyIHRvIGJlIGNvbnZlcnRlZCBmcm9t Lg0KPiArICAgIExlbiAgICAgICAgICAgICAgICAgICAtIExlbmd0aCBpbiBieXRlcyBvZiB0aGUg YnVmZmVyIHRvIGJlDQo+IGNvbnZlcnRlZC4NCj4gKyAgICBGbGFnICAgICAgICAgICAgICAgICAg LSBJZiBUUlVFLCBlbmNvZGUgdGhlIGRhdGEgaW4gdGhlIHNhbWUNCj4gb3JkZXIgYXMgdGhlIGl0 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaWRlcyBpbiB0aGUgQnVmLiBFbHNl IGVuY29kZSBpdCBpbg0KPiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24uDQo+ICsNCj4gKyAgUmV0dXJu czoNCj4gKyAgICBFRklfU1VDQ0VTUyAgICAgICAgICAgLSBSb3V0aW5lICBzdWNjZXNzLg0KPiAr ICAgIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAtIFRoZSBoZXggc3RyaW5nIGJ1ZmZlciBpcyB0b28g c21hbGwuDQo+ICsNCj4gKy0tKi8NCj4gK3sNCj4gKyAgVUlOVE4gICAgICAgSWR4Ow0KPiArICBV SU5UOCAgICAgICBCeXRlOw0KPiArICBVSU5UTiAgICAgICBTdHJMZW47DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gTWFrZSBzdXJlIHN0cmluZyBpcyBlaXRoZXIgcGFzc2VkIG9yIGFsbG9jYXRlIGVu b3VnaC4NCj4gKyAgLy8gSXQgdGFrZXMgMiBVbmljb2RlIGNoYXJhY3RlcnMgKDQgYnl0ZXMpIHRv IHJlcHJlc2VudCAxIGJ5dGUgb2YNCj4gdGhlIGJpbmFyeSBidWZmZXIuDQo+ICsgIC8vIFBsdXMg dGhlIFVuaWNvZGUgdGVybWluYXRpb24gY2hhcmFjdGVyLg0KPiArICAvLw0KPiArICBTdHJMZW4g PSBMZW4gKiAyOw0KPiArICBpZiAoKCpIZXhTdHJpbmdCdWZmZXJMZW5ndGgpIDwgKFN0ckxlbiAr IDEpICogc2l6ZW9mIChDSEFSMTYpKSB7DQo+ICsgICAgKkhleFN0cmluZ0J1ZmZlckxlbmd0aCA9 IChTdHJMZW4gKyAxKSAqIHNpemVvZiAoQ0hBUjE2KTsNCj4gKyAgICByZXR1cm4gRUZJX0JVRkZF Ul9UT09fU01BTEw7DQo+ICsgIH0NCj4gKw0KPiArICAqSGV4U3RyaW5nQnVmZmVyTGVuZ3RoID0g KFN0ckxlbiArIDEpICogc2l6ZW9mIChDSEFSMTYpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEVu ZHMgdGhlIHN0cmluZy4NCj4gKyAgLy8NCj4gKyAgU3RyW1N0ckxlbl0gPSAwOw0KPiArDQo+ICsg IGZvciAoSWR4ID0gMDsgSWR4IDwgTGVuOyBJZHgrKykgew0KPiArDQo+ICsgICAgQnl0ZSA9IEJ1 ZltJZHhdOw0KPiArICAgIGlmIChGbGFnKSB7DQo+ICsgICAgICBTdHJbSWR4ICogMl0gICAgID0g TmliYmxlVG9IZXhDaGFyUHJpdmF0ZSAoKFVJTlQ4KShCeXRlID4+DQo+IDQpKTsNCj4gKyAgICAg IFN0cltJZHggKiAyICsgMV0gPSBOaWJibGVUb0hleENoYXJQcml2YXRlIChCeXRlKTsNCj4gKyAg ICB9IGVsc2Ugew0KPiArICAgICAgU3RyW1N0ckxlbiAtIDEgLSBJZHggKiAyXSA9IE5pYmJsZVRv SGV4Q2hhclByaXZhdGUgKEJ5dGUpOw0KPiArICAgICAgU3RyW1N0ckxlbiAtIDIgLSBJZHggKiAy XSA9IE5pYmJsZVRvSGV4Q2hhclByaXZhdGUNCj4gKChVSU5UOCkoQnl0ZSA+PiA0KSk7DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ ICtFRklfU1RBVFVTDQo+ICtHZXREZXZpY2VQYXRoICgNCj4gKyAgSU4gIEVGSV9ISUlfQ09ORklH X0FDQ0VTU19QUk9UT0NPTCAgICAqQ29uZmlnQWNjZXNzLA0KPiArICBPVVQgRUZJX1NUUklORyAg ICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyDQo+ICsgICkNCj4gK3sNCj4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTm9IYW5kbGVzOw0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAg ICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAg ICAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSA9IE5VTEw7DQo+ICsgIEVGSV9ISUlfQ09ORklHX0FD Q0VTU19QUk9UT0NPTCAgICAqVGVzdGVkQ29uZmlnQWNjZXNzOw0KPiArICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICAgICAgICAgKkRldmljZVBhdGg7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQYXRoSGRyU2l6ZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBsb2NhdGUgYWxsIEhp aSBDb25maWd1cmF0aW9uIEFjY2VzcyBQcm90b2NvbCBJbnN0YW5jZXMNCj4gKyAgLy8NCj4gKyAg U3RhdHVzID0gZ3RCUy0+TG9jYXRlSGFuZGxlQnVmZmVyICgNCj4gKyAgICAgICAgICAgICAgICAg ICBCeVByb3RvY29sLA0KPiArICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hFZmlISUlDb25m aWdBY2Nlc3NQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAg ICAgICAgICAgICAgICAgICAmTm9IYW5kbGVzLA0KPiArICAgICAgICAgICAgICAgICAgICZIYW5k bGVCdWZmZXINCj4gKyAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SKFN0 YXR1cykgfHwgKE5vSGFuZGxlcyA9PSAwKSkgew0KPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5E Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gc2NhbiBmb3IgdGhlIGhhbmRsZSB0aGF0 IG1hdGNoZWQgd2l0aCB0aGUgSGlpIENvbmZpZ3VyYXRpb24NCj4gQWNjZXNzIFByb3RvY29sIHRo YXQNCj4gKyAgLy8gcGFzc2VkIGluIGJ5IHRoZSB0ZXN0IGZyYW1ld29yaw0KPiArICAvLw0KPiAr ICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOb0hhbmRsZXM7IEluZGV4KyspIHsNCj4gKyAgICBT dGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQo+ICsgICAgICAgICAgICAgICAgICAgICBI YW5kbGVCdWZmZXJbSW5kZXhdLA0KPiArICAgICAgICAgICAgICAgICAgICAgJmdCbGFja0JveEVm aUhJSUNvbmZpZ0FjY2Vzc1Byb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIChW T0lEICoqKSAmVGVzdGVkQ29uZmlnQWNjZXNzDQo+ICsgICAgICAgICAgICAgICAgICAgICApOw0K PiArICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgICAgY29udGludWU7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgaWYgKFRlc3RlZENvbmZpZ0FjY2VzcyA9PSBDb25maWdBY2Nlc3Mp IHsNCj4gKyAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSA9IEhhbmRsZUJ1ZmZlcltJbmRleF07DQo+ ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBndEJTLT5GcmVlUG9v bCAoSGFuZGxlQnVmZmVyKTsNCj4gKw0KPiArICBpZiAoQ29uZmlnQWNjZXNzSGFuZGxlID09IE5V TEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIGZpbmQgY29udHJvbGxlciBoYW5kbGVzIG1hbmFnZWQgYnkgdGhlIGNvbXBvbmVu dCBuYW1lIGhhbmRsZS4NCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9j b2wgKA0KPiArICAgICAgICAgICAgICAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAmZ0JsYWNrQm94RWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwNCj4gKyAg ICAgICAgICAgICAgICAgICAodm9pZCAqKikmRGV2aWNlUGF0aA0KPiArICAgICAgICAgICAgICAg ICAgICk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ29udmVydCB0aGUgZGV2aWNlIHBhdGggYmlu YXJ5IHRvIGhleCBVTklDT0RFICUwMnggYnl0ZXMgaW4gdGhlDQo+IHNhbWUgb3JkZXINCj4gKyAg Ly8gYXMgdGhlIGRldmljZSBwYXRoIHJlc2lkZXMgaW4gUkFNIG1lbW9yeS4NCj4gKyAgLy8NCj4g KyAgTGVuZ3RoID0gRWZpRGV2aWNlUGF0aFNpemUgKERldmljZVBhdGgpOw0KPiArICBQYXRoSGRy U2l6ZSA9IChMZW5ndGggKiAyICsgMSkgKiBzaXplb2YgKENIQVIxNik7DQo+ICsgICpEZXZpY2VQ YXRoU3RyID0gKEVGSV9TVFJJTkcpIFNjdEFsbG9jYXRlWmVyb1Bvb2wgKFBhdGhIZHJTaXplKTsN Cj4gKyAgaWYgKCpEZXZpY2VQYXRoU3RyID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKyAgU3RhdHVzID0gQnVmVG9IZXhTdHJpbmdQcml2 YXRlICgqRGV2aWNlUGF0aFN0ciwgJlBhdGhIZHJTaXplLA0KPiAoVUlOVDggKikgRGV2aWNlUGF0 aCwgTGVuZ3RoLCBUUlVFKTsNCj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0dldENvcnJlc3BvbmRpbmdSZXF1ZXN0ICgNCj4gKyAgSU4g ICAgIEVGSV9TVFJJTkcgICAgTXVsdGlDb25maWdBbHRSZXNwLA0KPiArICBJTiAgICAgRUZJX1NU UklORyAgICBEZXZpY2VQYXRoLA0KPiArICBJTiBPVVQgRUZJX1NUUklORyAgICBSZXF1ZXN0DQo+ ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUUklORyAgICBSZXNwUHRyOw0KPiArICBFRklfU1RSSU5H ICAgIFJlcVB0cjsNCj4gKyAgRUZJX1NUUklORyAgICBTaW5nbGVSZXNwOw0KPiArICBFRklfU1RS SU5HICAgIFNpbmdsZVJlc3BQdHI7DQo+ICsgIFVJTlROICAgICAgICAgTGVuOw0KPiArDQo+ICsg IFJlcVB0ciA9IFJlcXVlc3Q7DQo+ICsgIFJlc3BQdHIgPSBNdWx0aUNvbmZpZ0FsdFJlc3A7DQo+ ICsNCj4gKyAgTGVuID0gU2N0U3RyTGVuIChNdWx0aUNvbmZpZ0FsdFJlc3ApOw0KPiArDQo+ICsg IGlmIChTY3RTdHJuQ21wIChNdWx0aUNvbmZpZ0FsdFJlc3AsIEwiR1VJRD0iLCA1KSAhPSAwKSB7 DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsg IGlmIChTY3RTdHJTdHIgKE11bHRpQ29uZmlnQWx0UmVzcCwgRGV2aWNlUGF0aCkgPT0gTlVMTCkg ew0KPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiArICB9DQo+ICsNCj4gKyAgU2luZ2xl UmVzcCA9IChFRklfU1RSSU5HKSBTY3RBbGxvY2F0ZVplcm9Qb29sICggMiAqIFNjdFN0ckxlbg0K PiAoTXVsdGlDb25maWdBbHRSZXNwKSArIDIgKTsNCj4gKyAgaWYgKFNpbmdsZVJlc3AgPT0gTlVM TCkgew0KPiArICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsgIFNp bmdsZVJlc3BQdHIgPSBTaW5nbGVSZXNwOw0KPiArDQo+ICsgIHdoaWxlICgqTXVsdGlDb25maWdB bHRSZXNwICE9IDApIHsNCj4gKyAgICB3aGlsZSAoKCpNdWx0aUNvbmZpZ0FsdFJlc3AgIT0gMCkg JiYgKFNjdFN0cm5DbXANCj4gKE11bHRpQ29uZmlnQWx0UmVzcCwgTCImR1VJRD0iLCA2KSAhPSAw KSkgew0KPiArICAgICAgKihTaW5nbGVSZXNwKyspID0gKihNdWx0aUNvbmZpZ0FsdFJlc3ArKyk7 DQo+ICsgICAgfQ0KPiArICAgU2luZ2xlUmVzcCA9IFNpbmdsZVJlc3BQdHI7DQo+ICsgICBpZiAo U2N0U3RyU3RyIChTaW5nbGVSZXNwLCBEZXZpY2VQYXRoKSAhPSBOVUxMKQ0KPiArICAgICAgYnJl YWs7DQo+ICsgICBTY3RaZXJvTWVtIChTaW5nbGVSZXNwUHRyLCAyICogTGVuICsgMik7DQo+ICsg ICBpZiAoKk11bHRpQ29uZmlnQWx0UmVzcCAhPSAwKQ0KPiArICAgICAgTXVsdGlDb25maWdBbHRS ZXNwKys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoU2N0U3RyU3RyIChTaW5nbGVSZXNwLCBEZXZp Y2VQYXRoKSA9PSBOVUxMKQ0KPiArICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsNCj4gKyAg aWYgKFNjdFN0clN0ciAoU2luZ2xlUmVzcCwgTCJWQUxVRT0iKSA9PSBOVUxMKXsNCj4gKyAgICB3 aGlsZSAoKlNpbmdsZVJlc3AgIT0gMCkgew0KPiArICAgICAgd2hpbGUgKCgqU2luZ2xlUmVzcCAh PSAwKSAmJiAoU2N0U3RybkNtcCAoU2luZ2xlUmVzcCwNCj4gTCImUEFUSD0iLCA2KSAhPSAwKSkg ew0KPiArICAgICAgICAqKFJlcXVlc3QrKykgPSAqKFNpbmdsZVJlc3ArKyk7DQo+ICsgICAgIH0N Cj4gKyAgICAgKihSZXF1ZXN0KyspID0gKihTaW5nbGVSZXNwKyspOw0KPiArICAgICB3aGlsZSAo KCpTaW5nbGVSZXNwICE9IDApICYmICgqU2luZ2xlUmVzcCAhPSBMJyYnKSkgew0KPiArICAgICAg ICAqKFJlcXVlc3QrKykgPSAqKFNpbmdsZVJlc3ArKyk7DQo+ICsgICAgICB9DQo+ICsgICAgIHdo aWxlICgqU2luZ2xlUmVzcCAhPSAwKXsNCj4gKyAgICAgICAgaWYgKCpTaW5nbGVSZXNwICE9IEwn PScpIHsNCj4gKyAgICAgICAgICAqKFJlcXVlc3QrKykgPSAqKFNpbmdsZVJlc3ArKyk7DQo+ICsg ICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICB3aGlsZSAoKCpTaW5nbGVSZXNwICE9IDApICYm ICgqU2luZ2xlUmVzcCAhPSBMJyYnKSkgew0KPiArICAgICAgICAgICAgU2luZ2xlUmVzcCsrOw0K PiArICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAg fSBlbHNlIHsNCj4gKyAgICB3aGlsZSAoKlNpbmdsZVJlc3AgIT0gMCkgew0KPiArICAgICAgd2hp bGUgKCgqU2luZ2xlUmVzcCAhPSAwKSAmJiAoU2N0U3RybkNtcCAoU2luZ2xlUmVzcCwNCj4gTCIm VkFMVUU9IiwgNykpICE9IDApIHsNCj4gKyAgICAgICAgKihSZXF1ZXN0KyspID0gKihTaW5nbGVS ZXNwKyspOw0KPiArICAgICAgfQ0KPiArICAgICBTaW5nbGVSZXNwKys7DQo+ICsgICAgIHdoaWxl ICgoKlNpbmdsZVJlc3AgIT0gMCkgJiYgKCpTaW5nbGVSZXNwICE9IEwnJicpKQ0KPiArICAgICAg ICBTaW5nbGVSZXNwKys7DQo+ICsgICAgfQ0KPiArDQo+ICsgIH0NCj4gKw0KPiArICAqUmVxdWVz dCA9IDA7DQo+ICsNCj4gKyAgZ3RCUy0+RnJlZVBvb2wgKFNpbmdsZVJlc3BQdHIpOw0KPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArR2V0 Q29ycmVzcG9uZGluZ1Jlc3AgKA0KPiArICBJTiAgICAgRUZJX1NUUklORyAgICBNdWx0aUNvbmZp Z0FsdFJlc3AsDQo+ICsgIElOICAgICBFRklfU1RSSU5HICAgIERldmljZVBhdGgsDQo+ICsgIElO IE9VVCBFRklfU1RSSU5HICAgIFJlc3ANCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RSSU5HICAg IFJlc3BQdHI7DQo+ICsgIEVGSV9TVFJJTkcgICAgUmVxUHRyOw0KPiArICBVSU5UTiAgICAgICAg IExlbjsNCj4gKw0KPiArICBSZXFQdHIgPSBSZXNwOw0KPiArICBSZXNwUHRyID0gTXVsdGlDb25m aWdBbHRSZXNwOw0KPiArDQo+ICsgIExlbiA9IFNjdFN0ckxlbiAoTXVsdGlDb25maWdBbHRSZXNw KTsNCj4gKw0KPiArICBpZiAoU2N0U3RybkNtcCAoTXVsdGlDb25maWdBbHRSZXNwLCBMIkdVSUQ9 IiwgNSkgIT0gMCkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg IH0NCj4gKw0KPiArICBpZiAoU2N0U3RyU3RyIChNdWx0aUNvbmZpZ0FsdFJlc3AsIERldmljZVBh dGgpID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gKyAgfQ0KPiAr DQo+ICsgIHdoaWxlICgqTXVsdGlDb25maWdBbHRSZXNwICE9IDApIHsNCj4gKyAgICB3aGlsZSAo KCpNdWx0aUNvbmZpZ0FsdFJlc3AgIT0gMCkgJiYgKFNjdFN0cm5DbXANCj4gKE11bHRpQ29uZmln QWx0UmVzcCwgTCImR1VJRD0iLCA2KSAhPSAwKSkgew0KPiArICAgICAgKihSZXNwKyspID0gKihN dWx0aUNvbmZpZ0FsdFJlc3ArKyk7DQo+ICsgICAgfQ0KPiArICAgUmVzcCA9IFJlcVB0cjsNCj4g KyAgIGlmIChTY3RTdHJTdHIgKFJlc3AsIERldmljZVBhdGgpICE9IE5VTEwpDQo+ICsgICAgICBi cmVhazsNCj4gKyAgIFNjdFplcm9NZW0gKFJlcVB0ciwgMiAqIExlbiArIDIpOw0KPiArICAgaWYg KCpNdWx0aUNvbmZpZ0FsdFJlc3AgIT0gMCkNCj4gKyAgICAgIE11bHRpQ29uZmlnQWx0UmVzcCsr Ow0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFNjdFN0clN0ciAoUmVzcCwgRGV2aWNlUGF0aCkgPT0g TlVMTCkNCj4gKyAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiArDQo+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArDQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0dldEhJSUNv bmZpZ1JvdXRpbmdJbnRlcmZhY2UgKA0KPiArICBPVVQgRUZJX0hJSV9DT05GSUdfUk9VVElOR19Q Uk9UT0NPTCAgICAqKkhJSUNvbmZpZ1JvdXRpbmcNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vSGFuZGxlczsNCj4gKyAgRUZJX0hBTkRM RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSGFuZGxlQnVmZmVyOw0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICAvLw0KPiAr ICAvLyBHZXQgdGhlIEhJSSBEYXRhYmFzZSBQcm90b2NvbCBpbnRlcmZhY2UNCj4gKyAgLy8NCj4g KyAgU3RhdHVzID0gZ3RCUy0+TG9jYXRlSGFuZGxlQnVmZmVyICgNCj4gKyAgICAgICAgICAgICAg ICAgICBCeVByb3RvY29sLA0KPiArICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hFZmlISUlD b25maWdSb3V0aW5nUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ ICsgICAgICAgICAgICAgICAgICAgJk5vSGFuZGxlcywNCj4gKyAgICAgICAgICAgICAgICAgICAm SGFuZGxlQnVmZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKCBFRklfRVJS T1IoU3RhdHVzKSApIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg aWYgKCBOb0hhbmRsZXMgPD0gMCApIHsNCj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsN Cj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sICgNCj4gKyAg ICAgICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbMF0sDQo+ICsgICAgICAgICAgICAgICAgICAg JmdCbGFja0JveEVmaUhJSUNvbmZpZ1JvdXRpbmdQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAg ICAgICAgICAgKFZPSUQgKiopIEhJSUNvbmZpZ1JvdXRpbmcNCj4gKyAgICAgICAgICAgICAgICAg ICApOw0KPiArICBpZiAoIEVGSV9FUlJPUihTdGF0dXMpICkgew0KPiArICAgIGd0QlMtPkZyZWVQ b29sICggSGFuZGxlQnVmZmVyICk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiAr DQo+ICsgIGd0QlMtPkZyZWVQb29sICggSGFuZGxlQnVmZmVyICk7DQo+ICsNCj4gKyAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtNdWx0aUFsdFJlc3BU b011bHRpUmVxICgNCj4gKyAgSU4gICAgICAgRUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlc3AsDQo+ICsgIElOIE9VVCAgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXENCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RSSU5HIFBvaW50ZXIxID0gUmVz cDsNCj4gKyAgRUZJX1NUUklORyBQb2ludGVyMiA9IE5VTEw7DQo+ICsgIEVGSV9TVFJJTkcgUG9p bnRlcjMgPSBSZXE7DQo+ICsgIEVGSV9TVFJJTkcgQ2ZnSGRyID0gTlVMTDsNCj4gKyAgRUZJX1NU UklORyBGcmVlUHRyID0gTlVMTDsNCj4gKyAgQ0hBUjggICAgICBGbGFnID0gMDsNCj4gKw0KPiAr ICBpZiAoU2N0U3RybkNtcCAoUG9pbnRlcjEsIEwiR1VJRD0iLCA1KSAhPSAwKSB7DQo+ICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBvaW50ZXIy ID0gKEVGSV9TVFJJTkcpIFNjdEFsbG9jYXRlWmVyb1Bvb2wgKDIgKiBTY3RTdHJMZW4gKFJlc3Ap DQo+ICsgMik7DQo+ICsgIGlmIChQb2ludGVyMiA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICB9DQo+ICsgIEZyZWVQdHIgPSBQb2ludGVyMjsNCj4g Kw0KPiArICB3aGlsZSAoKlBvaW50ZXIxKSB7DQo+ICsgICAgaWYgKFNjdFN0cm5DbXAgKFBvaW50 ZXIxLCBMIkdVSUQ9IiwgNSkgPT0gMCkgew0KPiArICAgICAgQ2ZnSGRyID0gUG9pbnRlcjI7DQo+ ICsgICAgICAqKFBvaW50ZXIyKyspID0gKihQb2ludGVyMSsrKTsNCj4gKyAgICAgd2hpbGUgKCpQ b2ludGVyMSAhPSBMJyYnKSB7DQo+ICsgICAgICAgICooUG9pbnRlcjIrKykgPSAqKFBvaW50ZXIx KyspOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgIGlmIChTY3RTdHJuQ21wIChQb2ludGVy MSwgTCImR1VJRD0iLCA2KSA9PSAwKSB7DQo+ICsgICAgICAqKFBvaW50ZXIyKyspID0gKihQb2lu dGVyMSsrKTsNCj4gKyAgICAgIENmZ0hkciA9IFBvaW50ZXIyOw0KPiArICAgICB3aGlsZSAoKlBv aW50ZXIxICE9IEwnJicpIHsNCj4gKyAgICAgICAgKihQb2ludGVyMisrKSA9ICooUG9pbnRlcjEr Kyk7DQo+ICsgICAgICB9DQo+ICsgICB9DQo+ICsgICBpZiAoU2N0U3RybkNtcCAoUG9pbnRlcjEs IEwiJk5BTUU9IiwgNikgPT0gMCkgew0KPiArICAgICAgKihQb2ludGVyMisrKSA9ICooUG9pbnRl cjErKyk7DQo+ICsgICAgIHdoaWxlICgqUG9pbnRlcjEgIT0gTCcmJykgew0KPiArICAgICAgICAq KFBvaW50ZXIyKyspID0gKihQb2ludGVyMSsrKTsNCj4gKyAgICAgIH0NCj4gKyAgIH0NCj4gKyAg IGlmIChTY3RTdHJuQ21wIChQb2ludGVyMSwgTCImUEFUSD0iLCA2KSA9PSAwKSB7DQo+ICsgICAg ICAqKFBvaW50ZXIyKyspID0gKihQb2ludGVyMSsrKTsNCj4gKyAgICAgd2hpbGUgKCpQb2ludGVy MSAhPSBMJyYnKSB7DQo+ICsgICAgICAgICooUG9pbnRlcjIrKykgPSAqKFBvaW50ZXIxKyspOw0K PiArICAgICAgfQ0KPiArICAgICBpZiAoTlVMTCA9PSBTY3RTdHJTdHIgKFJlcSwgQ2ZnSGRyKSl7 DQo+ICsgICAgICAgaWYgKCpSZXEgPT0gTCdHJykNCj4gKyAgICAgICAgICAqKFBvaW50ZXIzKysp ID0gTCcmJzsNCj4gKyAgICAgICAgU2N0U3RyQ2F0IChSZXEsIENmZ0hkcik7DQo+ICsgICAgICAg IFBvaW50ZXIzICs9IFNjdFN0ckxlbiAoQ2ZnSGRyKTsNCj4gKyAgICAgICBGbGFnID0gMTsNCj4g KyAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgRmxhZyA9IDA7DQo+ICsgICAgIH0NCj4gKyAgICB9 DQo+ICsgICAgd2hpbGUgKChGbGFnID09IDEpICYmIChTY3RTdHJuQ21wIChQb2ludGVyMSwgTCIm R1VJRD0iLCA2KSAhPSAwKQ0KPiAmJiAqUG9pbnRlcjEpIHsNCj4gKyAgICAgIGlmIChTY3RTdHJu Q21wIChQb2ludGVyMSwgTCImT0ZGU0VUPSIsIDgpID09IDApIHsNCj4gKyAgICAgICAgKihQb2lu dGVyMysrKSA9ICooUG9pbnRlcjErKyk7DQo+ICsgICAgICAgd2hpbGUgKCpQb2ludGVyMSAhPSBM JyYnKSB7DQo+ICsgICAgICAgICAgKihQb2ludGVyMysrKSA9ICooUG9pbnRlcjErKyk7DQo+ICsg ICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKyAgICAgIGlmIChTY3RTdHJuQ21wIChQb2ludGVyMSwg TCImV0lEVEg9IiwgNykgPT0gMCkgew0KPiArICAgICAgICAqKFBvaW50ZXIzKyspID0gKihQb2lu dGVyMSsrKTsNCj4gKyAgICAgICB3aGlsZSAoKlBvaW50ZXIxICE9IEwnJicpIHsNCj4gKyAgICAg ICAgICAqKFBvaW50ZXIzKyspID0gKihQb2ludGVyMSsrKTsNCj4gKyAgICAgICAgfQ0KPiArICAg ICB9DQo+ICsgICAgIGlmIChTY3RTdHJuQ21wIChQb2ludGVyMSwgTCImVkFMVUU9IiwgNykgPT0g MCkgew0KPiArICAgICAgICBQb2ludGVyMSArPSA3Ow0KPiArICAgICAgIHdoaWxlICgqUG9pbnRl cjEgIT0gTCcmJyAmJiAqUG9pbnRlcjEpIHsNCj4gKyAgICAgICAgIFBvaW50ZXIxKys7DQo+ICsg ICAgICAgfQ0KPiArICAgICB9DQo+ICsgICAgIGlmIChTY3RTdHJuQ21wIChQb2ludGVyMSwgTCIm QUxUQ0ZHPSIsIDgpID09IDApIHsNCj4gKyAgICAgICAgUG9pbnRlcjEgKz0gODsNCj4gKyAgICAg ICB3aGlsZSAoKlBvaW50ZXIxICE9IEwnJicgJiYgKlBvaW50ZXIxKSB7DQo+ICsgICAgICAgICBQ b2ludGVyMSsrOw0KPiArICAgICAgIH0NCj4gKyAgICAgfQ0KPiArICAgICBpZiAoKCpQb2ludGVy MSA9PSBMJyYnKSAmJiAoU2N0U3RybkNtcCAoUG9pbnRlcjEsIEwiJkdVSUQ9IiwgNikNCj4gIT0g MCkgJiYNCj4gKyAgICAgICAgIChTY3RTdHJuQ21wIChQb2ludGVyMSwgTCImT0ZGU0VUPSIsIDgp ICE9IDApICYmIChTY3RTdHJuQ21wDQo+IChQb2ludGVyMSwgTCImV0lEVEg9IiwgNykgIT0gMCkp IHsNCj4gKyAgICAgICAgKihQb2ludGVyMysrKSA9ICooUG9pbnRlcjErKyk7DQo+ICsgICAgICAg d2hpbGUgKCpQb2ludGVyMSAhPSBMJz0nKSB7DQo+ICsgICAgICAgICAgKihQb2ludGVyMysrKSA9 ICooUG9pbnRlcjErKyk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIHdoaWxlICgqUG9pbnRlcjEg IT0gTCcmJyAmJiAqUG9pbnRlcjEpIHsNCj4gKyAgICAgICAgICBQb2ludGVyMSsrOw0KPiArICAg ICAgIH0NCj4gKyAgICAgfQ0KPiArICAgfQ0KPiArICAgUG9pbnRlcjErKzsNCj4gKyAgfQ0KPiAr DQo+ICsgIFNjdEZyZWVQb29sIChGcmVlUHRyKTsNCj4gKw0KPiArICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS91ZWZpLQ0KPiBzY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvSUhWL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSEkNCj4gSUNvbmZp Z0FjY2Vzc0JCVGVzdE1haW4uaCBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9J SFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISQ0KPiBJQ29uZmlnQWNj ZXNzQkJUZXN0TWFpbi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw Li5jODFhMDBjYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3VlZmktDQo+IHNjdC9TY3RQa2cv VGVzdENhc2UvVUVGSS9JSFYvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9I SQ0KPiBJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5oDQo+IEBAIC0wLDAgKzEsMTY4IEBADQo+ICsv KiogQGZpbGUNCj4gKw0KPiArICBDb3B5cmlnaHQgMjAwNiAtIDIwMTMgVW5pZmllZCBFRkksIElu Yy48QlI+DQo+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIwMTMsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+IHJlc2VydmVkLjxCUj4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LE1p Y3JvY2hpcCBUZWNobm9sb2d5IEluYy4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlDQo+IG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF UiBFWFBSRVNTDQo+IE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArLyorKw0KPiArDQo+ICtN b2R1bGUgTmFtZToNCj4gKw0KPiArICBISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmgNCj4gKw0K PiArQWJzdHJhY3Q6DQo+ICsNCj4gKyAgVGVzdCBEcml2ZXIgb2YgSElJIENvbmZpZ3VyYXRpb24g QWNjZXNzIFByb3RvY29sIGhlYWRlciBmaWxlDQo+ICsNCj4gKy0tKi8NCj4gKw0KPiArI2lmbmRl ZiBfSElJX0NPTkZJR19BQ0NFU1NfQkJfVEVTVF9NQUlODQo+ICsjZGVmaW5lIF9ISUlfQ09ORklH X0FDQ0VTU19CQl9URVNUX01BSU4NCj4gKw0KPiArI2RlZmluZSBfX1VFRklfSU5URVJOQUxfRk9S TVJFUFJFU0VOVEFUSU9OX0hfXw0KPiArI2luY2x1ZGUgPEJhc2UuaD4NCj4gKyNpbmNsdWRlICJT Y3RMaWIuaCINCj4gKyNpbmNsdWRlICJHdWlkLmgiDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9FZmlU ZXN0TGliLmg+DQo+ICsjaW5jbHVkZSA8VUVGSS9Qcm90b2NvbC9IaWkuaD4NCj4gKyNpbmNsdWRl IDxVRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy5oPg0KPiArI2luY2x1ZGUgPFVFRkkvUHJv dG9jb2wvSElJQ29uZmlnUm91dGluZy5oPg0KPiArDQo+ICsNCj4gKyNkZWZpbmUgRUZJX0hJSV9D T05GSUdfQUNDRVNTX1BST1RPQ09MX1RFU1RfUkVWSVNJT04gICAgMHgwMDAxMDAwMA0KPiArI2Rl ZmluZSBJSFZfRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MX0dVSUQgXA0KPiAreyAweDY4 ODIwODg0LCAweDRiZTMsIDB4NGNhOSwgeyAweDgzLCAweDgxLCAweDllLCAweDk4LCAweGYzLCAw eGY0LA0KPiAweDhkLCAweGFmIH0gfQ0KPiArLy8NCj4gKy8vIEVudHJ5IEdVSURzIGZvciBGdW5j IFRlc3QNCj4gKy8vDQo+ICsjZGVmaW5lIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTF9U RVNUX0VOVFJZX0dVSUQwMTAxIFwNCj4gK3sgMHgyYTg1Mzg3ZSwgMHhkY2Y5LCAweDQ1ZTksIHsg MHhiMywgMHg4ZiwgMHg1ZCwgMHhhMSwgMHg3NSwgMHg0MSwNCj4gMHhjZiwgMHgxYSB9IH0NCj4g Kw0KPiArI2RlZmluZSBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0xfVEVTVF9FTlRSWV9H VUlEMDEwMiBcDQo+ICt7IDB4MWExNWRmODUsIDB4NmNjMSwgMHg0M2YyLCB7IDB4OWIsIDB4ODYs IDB4MjEsIDB4OGIsIDB4ZDUsIDB4ZmQsDQo+IDB4ZjQsIDB4YTAgfSB9DQo+ICsNCj4gKw0KPiAr Ly8NCj4gKy8vIEVudHJ5IEdVSURzIGZvciBDb25mIFRlc3QNCj4gKy8vDQo+ICsjZGVmaW5lIEVG SV9ISUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTF9URVNUX0VOVFJZX0dVSUQwMjAxIFwNCj4gK3sg MHhlMmMzYjBmZSwgMHhmYmU5LCAweDQ2YTksIHsgMHhhMywgMHgxYiwgMHhhMywgMHhmMywgMHg4 MiwgMHhkLA0KPiAweGNmLCAweDQgfSB9DQo+ICsNCj4gKyNkZWZpbmUgRUZJX0hJSV9DT05GSUdf QUNDRVNTX1BST1RPQ09MX1RFU1RfRU5UUllfR1VJRDAyMDIgXA0KPiAreyAweDQ5NWM5OWYzLCAw eDIzMSwgMHg0NWE1LCB7IDB4YWYsIDB4ZmEsIDB4ZDIsIDB4NWMsIDB4NmYsIDB4OWEsDQo+IDB4 MTksIDB4MWMgfSB9DQo+ICsNCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtJbml0aWFsaXpl SElJQ29uZmlnQWNjZXNzQkJUZXN0ICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICAgICAq U3lzdGVtVGFibGUNCj4gKyAgKTsNCj4gKw0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtVbmxvYWRI SUlDb25maWdBY2Nlc3NCQlRlc3QgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAg ICAgIEltYWdlSGFuZGxlDQo+ICsgICk7DQo+ICsNCj4gKw0KPiArLy8NCj4gKy8vVGVzdCBDYXNl cw0KPiArLy8NCg0KVGhlIGJlbG93IGlzIGNvbW1lbnRlZCBvdXQsIHdoaWNoIHNob3VsZCBiZSBy ZW1vdmVkIGJlZm9yZSB1cHN0cmVhbS4NCj4gKy8qDQo+ICtFRklfU1RBVFVTDQo+ICtCQlRlc3RV bml0VGVzdCAoDQo+ICsgIElOIEVGSV9CQl9URVNUX1BST1RPQ09MICAgICAgICpUaGlzLA0KPiAr ICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAqQ2xpZW50SW50ZXJmYWNlLA0KPiArICBJ TiBFRklfVEVTVF9MRVZFTCAgICAgICAgICAgICBUZXN0TGV2ZWwsDQo+ICsgIElOIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgIFN1cHBvcnRIYW5kbGUNCj4gKyAgKTsNCj4gKyovDQoNCg0KPiAr RUZJX1NUQVRVUw0KPiArQkJUZXN0RXh0cmFjdENvbmZpZ0NvbmZvcm1hbmNlVGVzdCAoDQo+ICsg IElOIEVGSV9CQl9URVNUX1BST1RPQ09MICAgICAgICpUaGlzLA0KPiArICBJTiBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAqQ2xpZW50SW50ZXJmYWNlLA0KPiArICBJTiBFRklfVEVTVF9MRVZF TCAgICAgICAgICAgICBUZXN0TGV2ZWwsDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgIFN1cHBvcnRIYW5kbGUNCj4gKyAgKTsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0 Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NP TCAgICAgICAqVGhpcywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVu dEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVs LA0KPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsg ICk7DQoNClRoZSBiZWxvdyBpcyBjb21tZW50ZWQgb3V0LCB3aGljaCBzaG91bGQgYmUgcmVtb3Zl ZCBiZWZvcmUgdXBzdHJlYW0uDQo+ICsvKg0KPiArRUZJX1NUQVRVUw0KPiArQkJUZXN0Q2FsbEJh Y2tDb25mb3JtYW5jZVRlc3QgKA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAq VGhpcywNCj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFj ZSwNCj4gKyAgSU4gRUZJX1RFU1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJ TiBFRklfSEFORExFICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICk7DQo+ICsq Lw0KDQoNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdEV4dHJhY3RDb25maWdGdW5jdGlvblRlc3Qg KA0KPiArICBJTiBFRklfQkJfVEVTVF9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgKkNsaWVudEludGVyZmFjZSwNCj4gKyAgSU4gRUZJX1RF U1RfTEVWRUwgICAgICAgICAgICAgVGVzdExldmVsLA0KPiArICBJTiBFRklfSEFORExFICAgICAg ICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4g K0JCVGVzdFJvdXRlQ29uZmlnRnVuY3Rpb25UZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJP VE9DT0wgICAgICAgKlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpD bGllbnRJbnRlcmZhY2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVMICAgICAgICAgICAgIFRlc3RM ZXZlbCwNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0K PiArICApOw0KDQpUaGUgYmVsb3cgaXMgY29tbWVudGVkIG91dCwgd2hpY2ggc2hvdWxkIGJlIHJl bW92ZWQgYmVmb3JlIHVwc3RyZWFtLg0KPiArLyoNCj4gK0VGSV9TVEFUVVMNCj4gK0JCVGVzdENh bGxCYWNrRnVuY3Rpb25UZXN0ICgNCj4gKyAgSU4gRUZJX0JCX1RFU1RfUFJPVE9DT0wgICAgICAg KlRoaXMsDQo+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICpDbGllbnRJbnRlcmZh Y2UsDQo+ICsgIElOIEVGSV9URVNUX0xFVkVMICAgICAgICAgICAgIFRlc3RMZXZlbCwNCj4gKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KPiArICApOw0KPiAr Ki8NCg0KDQo+ICtFRklfU1RBVFVTDQo+ICtHZXREZXZpY2VQYXRoICgNCj4gKyAgSU4gIEVGSV9I SUlfQ09ORklHX0FDQ0VTU19QUk9UT0NPTCAgICAgICAqQ29uZmlnQWNjZXNzLA0KPiArICBPVVQg RUZJX1NUUklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyDQo+ICsg ICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0dldENvcnJlc3BvbmRpbmdSZXF1ZXN0ICgNCj4g KyAgSU4gICAgIEVGSV9TVFJJTkcgICAgTXVsdGlDb25maWdBbHRSZXNwLA0KPiArICBJTiAgICAg RUZJX1NUUklORyAgICBEZXZpY2VQYXRoLA0KPiArICBJTiBPVVQgRUZJX1NUUklORyAgICBSZXF1 ZXN0DQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0dldENvcnJlc3BvbmRpbmdSZXNw ICgNCj4gKyAgSU4gICAgIEVGSV9TVFJJTkcgICAgTXVsdGlDb25maWdBbHRSZXNwLA0KPiArICBJ TiAgICAgRUZJX1NUUklORyAgICBEZXZpY2VQYXRoLA0KPiArICBJTiBPVVQgRUZJX1NUUklORyAg ICBSZXNwDQo+ICsgICk7DQo+ICsNCj4gK0VGSV9TVEFUVVMNCj4gK0dldEhJSUNvbmZpZ1JvdXRp bmdJbnRlcmZhY2UgKA0KPiArICBPVVQgRUZJX0hJSV9DT05GSUdfUk9VVElOR19QUk9UT0NPTCAg ICAqKkhJSUNvbmZpZ1JvdXRpbmcNCj4gKyAgKTsNCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArTXVs dGlBbHRSZXNwVG9NdWx0aVJlcSAoDQo+ICsgIElOICAgICAgIEVGSV9TVFJJTkcgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXNwLA0KPiArICBJTiBPVVQgICBFRklfU1RSSU5HICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVxDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9ISUlD b25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0loDQo+IHZISUlDb25maWdBY2Nlc3NCQlRlc3QuaW5m IGIvdWVmaS0NCj4gc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0lIVi9Qcm90b2NvbC9ISUlDb25m aWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0loDQo+IHZISUlDb25maWdBY2Nlc3NCQlRlc3QuaW5mDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwLi4xMTY4OTg2Yg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL3VlZmktDQo+IHNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9JSFYv UHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9JaA0KPiB2SElJQ29uZmlnQWNj ZXNzQkJUZXN0LmluZg0KPiBAQCAtMCwwICsxLDU1IEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiAr IyAgQ29weXJpZ2h0IDIwMDYgLSAyMDEyIFVuaWZpZWQgRUZJLCBJbmMuPEJSPg0KPiArIyAgQ29w eXJpZ2h0IChjKSAyMDEwIC0gMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4g cmVzZXJ2ZWQuPEJSPg0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBBUk0gTHRkLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgIENvcHlyaWdodCAoYykgMjAxOSxNaWNyb2NoaXAgVGVj aG5vbG9neSBJbmMuDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUNCj4gbGlj ZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lU SE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVY UFJFU1MNCj4gT1IgSU1QTElFRC4NCj4gKyMNCj4gKyMjDQo+ICsjLyorKw0KPiArIw0KPiArIyBN b2R1bGUgTmFtZToNCj4gKyMNCj4gKyMgICBISUlDb25maWdBY2Nlc3NCQlRlc3QuaW5mDQo+ICsj DQo+ICsjIEFic3RyYWN0Og0KPiArIw0KPiArIyAgIENvbXBvbmVudCBkZXNjcmlwdGlvbiBmaWxl IGZvciBJSFYgSElJIENvbmZpZyBBY2Nlc3MgUHJvdG9jb2wNCj4gQmxhY2stQm94IFRlc3QuDQo+ ICsjDQo+ICsjLS0qLw0KPiArDQo+ICtbZGVmaW5lc10NCj4gK0lORl9WRVJTSU9OICAgICAgICAg ID0gMHgwMDAxMDAwNQ0KPiArQkFTRV9OQU1FICAgICAgICAgICAgPSBJaHZISUlDb25maWdBY2Nl c3NCQlRlc3QNCj4gK0ZJTEVfR1VJRCAgICAgICAgICAgID0gRDM5RjJBM0ItNzJCRi00MEY1LTg2 QkYtMkUxRTk2RDE1RUEzDQo+ICtNT0RVTEVfVFlQRSAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ ICtWRVJTSU9OX1NUUklORyAgICAgICA9IDEuMA0KPiArRU5UUllfUE9JTlQgICAgICAgICAgPSBJ bml0aWFsaXplSElJQ29uZmlnQWNjZXNzQkJUZXN0DQo+ICsNCj4gK1tzb3VyY2VzLmNvbW1vbl0N Cj4gKyAgSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2UuYw0KPiArICBISUlDb25maWdB Y2Nlc3NCQlRlc3RGdW5jdGlvbi5jDQo+ICsgIEhJSUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4uYw0K PiArICBHdWlkLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBTY3RQa2cvU2N0UGtnLmRlYw0K PiArICBTY3RQa2cvVUVGSS9VRUZJLmRlYw0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArDQo+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQo+ICsgIFNjdExp Yg0KPiArICBFZmlUZXN0TGliDQo+ICsNCj4gK1tQcm90b2NvbHNdDQo+ICsgIGdCbGFja0JveEVm aUhJSUNvbmZpZ0FjY2Vzc1Byb3RvY29sR3VpZA0KPiArICBnQmxhY2tCb3hFZmlISUlDb25maWdS b3V0aW5nUHJvdG9jb2xHdWlkDQo+ICsgIGdCbGFja0JveEVmaURldmljZVBhdGhQcm90b2NvbEd1 aWQNCj4gLS0NCj4gMi4yMi4wLndpbmRvd3MuMQ0KPg0KPg0KDQpJTVBPUlRBTlQgTk9USUNFOiBU aGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRl bnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRl bmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQg ZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQg Zm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkg bWVkaXVtLiBUaGFuayB5b3UuDQo=