From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cCeYc-0007dJ-GZ for qemu-devel@nongnu.org; Thu, 01 Dec 2016 22:30:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cCeYW-00054Q-2r for qemu-devel@nongnu.org; Thu, 01 Dec 2016 22:30:42 -0500 Received: from 001b2d01.pphosted.com ([148.163.156.1]:37899 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cCeYV-000549-C0 for qemu-devel@nongnu.org; Thu, 01 Dec 2016 22:30:35 -0500 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id uB23SanO122977 for ; Thu, 1 Dec 2016 22:30:34 -0500 Received: from e23smtp01.au.ibm.com (e23smtp01.au.ibm.com [202.81.31.143]) by mx0a-001b2d01.pphosted.com with ESMTP id 272tqgmajp-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 01 Dec 2016 22:30:33 -0500 Received: from localhost by e23smtp01.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 2 Dec 2016 13:30:30 +1000 From: "Alastair D'Silva" Date: Fri, 02 Dec 2016 14:30:25 +1100 In-Reply-To: <993b87ea-604a-b284-84e4-e98e6980d515@ozlabs.ru> References: <20161130053629.23340-1-alastair@au1.ibm.com> <20161130053629.23340-5-alastair@au1.ibm.com> <6c328f0d-af92-4732-b1e2-5255c91536fc@ozlabs.ru> <1480637970.16973.3.camel@au1.ibm.com> <993b87ea-604a-b284-84e4-e98e6980d515@ozlabs.ru> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Message-Id: <1480649425.16973.5.camel@au1.ibm.com> Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [PATCH v2 4/6] hw/timer: Add Epson RX8900 RTC support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexey Kardashevskiy , qemu-arm@nongnu.org Cc: Peter Maydell , Andrew Jeffery , qemu-devel@nongnu.org, Chris Smart , Joel Stanley , =?ISO-8859-1?Q?C=E9dric?= Le Goater T24gRnJpLCAyMDE2LTEyLTAyIGF0IDEzOjQ4ICsxMTAwLCBBbGV4ZXkgS2FyZGFzaGV2c2tp eSB3cm90ZToNCj4gT24gMDIvMTIvMTYgMTE6MTksIEFsYXN0YWlyIEQnU2lsdmEgd3JvdGU6 DQo+ID4gT24gVGh1LCAyMDE2LTEyLTAxIGF0IDE2OjUzICsxMTAwLCBBbGV4ZXkgS2FyZGFz aGV2c2tpeSB3cm90ZToNCj4gPiANCj4gPiA+IE9uIDMwLzExLzE2IDE2OjM2LCBBbGFzdGFp ciBEJ1NpbHZhIHdyb3RlOg0KPiA+ID4gPiBGcm9tOiBBbGFzdGFpciBEJ1NpbHZhIDxhbGFz dGFpckBkLXNpbHZhLm9yZz4NCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgcGF0Y2ggYWRkcyBz dXBwb3J0IGZvciB0aGUgRXBzb24gUlg4OTAwIEkyQyBSVEMuDQo+ID4gPiA+IA0KPiA+ID4g PiBUaGUgZm9sbG93aW5nIGNoaXAgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KPiA+ID4g PiDCoC0gUlRDICh3YWxsY2xvY2sgYmFzZWQsIHB0aW1lciAxMHggb3ZlcnNhbXBsaW5nIHRv IHBpY2sgdXANCj4gPiA+ID4gCXdhbGxjbG9jayB0cmFuc2l0aW9ucykNCj4gPiA+ID4gwqAt IFRpbWUgdXBkYXRlIGludGVycnVwdCAocGVyIHNlY29uZC9taW51dGUsIHdhbGxjbG9jayBi YXNlZCkNCj4gPiA+ID4gwqAtIEFsYXJtcyAod2FsbGNsb2NrIGJhc2VkKQ0KPiA+ID4gPiDC oC0gVGVtcGVyYXR1cmUgKHNldCB2aWEgYSBwcm9wZXJ0eSkNCj4gPiA+ID4gwqAtIENvdW50 ZG93biB0aW1lciAoZW11bGF0ZWQgY2xvY2sgdmlhIHB0aW1lcikNCj4gPiA+ID4gwqAtIEZP VVQgdmlhIEdQSU8gKGVtdWxhdGVkIGNsb2NrIHZpYSBwdGltZXIpDQo+ID4gPiA+IA0KPiA+ ID4gPiBUaGUgZm9sbG93aW5nIGNoaXAgZmVhdHVyZXMgYXJlIHVuaW1wbGVtZW50ZWQ6DQo+ ID4gPiA+IMKgLSBMb3cgdm9sdGFnZSBkZXRlY3Rpb24NCj4gPiA+ID4gwqAtIGkyYyB0aW1l b3V0DQo+ID4gPiA+IA0KPiA+ID4gPiBUaGUgaW1wbGVtZW50YXRpb24gZXhwb3J0cyB0aGUg Zm9sbG93aW5nIG5hbWVkIEdQSU9zOg0KPiA+ID4gPiByeDg5MDAtaW50ZXJydXB0LW91dA0K PiA+ID4gPiByeDg5MDAtZm91dC1lbmFibGUNCj4gPiA+ID4gcng4OTAwLWZvdXQNCj4gPiA+ ID4gDQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEFsYXN0YWlyIEQnU2lsdmEgPGFsYXN0YWly QGQtc2lsdmEub3JnPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBTbWFydCA8Y2hy aXNAZGlzdHJvZ3V5LmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+IMKgZGVmYXVsdC1jb25m aWdzL2FybS1zb2Z0bW11Lm1hayB8wqDCoMKgMSArDQo+ID4gPiA+IMKgaHcvdGltZXIvTWFr ZWZpbGUub2Jqc8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKw0KPiA+ID4gPiDCoGh3 L3RpbWVyL3J4ODkwMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA4OTANCj4g PiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4g PiDCoGh3L3RpbWVyL3J4ODkwMF9yZWdzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMTM5ICsr KysrKysNCj4gPiA+ID4gwqBody90aW1lci90cmFjZS1ldmVudHPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfMKgwqAzMSArKw0KPiA+ID4gPiDCoDUgZmlsZXMgY2hhbmdlZCwgMTA2MyBpbnNl cnRpb25zKCspDQo+ID4gPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3RpbWVyL3J4ODkw MC5jDQo+ID4gPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3RpbWVyL3J4ODkwMF9yZWdz LmgNCj4gPiA+ID4gDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kZWZhdWx0LWNvbmZpZ3MvYXJt LXNvZnRtbXUubWFrIGIvZGVmYXVsdC0NCj4gPiA+ID4gY29uZmlncy9hcm0tDQo+ID4gPiA+ IHNvZnRtbXUubWFrDQo+ID4gPiA+IGluZGV4IDZkZTNlMTYuLmFkYjYwMGUgMTAwNjQ0DQo+ ID4gPiA+IC0tLSBhL2RlZmF1bHQtY29uZmlncy9hcm0tc29mdG1tdS5tYWsNCj4gPiA+ID4g KysrIGIvZGVmYXVsdC1jb25maWdzL2FybS1zb2Z0bW11Lm1haw0KPiA+ID4gPiBAQCAtMjks NiArMjksNyBAQCBDT05GSUdfU01DOTFDMTExPXkNCj4gPiA+ID4gwqBDT05GSUdfQUxMV0lO TkVSX0VNQUM9eQ0KPiA+ID4gPiDCoENPTkZJR19JTVhfRkVDPXkNCj4gPiA+ID4gwqBDT05G SUdfRFMxMzM4PXkNCj4gPiA+ID4gK0NPTkZJR19SWDg5MDA9eQ0KPiA+ID4gPiDCoENPTkZJ R19QRkxBU0hfQ0ZJMDE9eQ0KPiA+ID4gPiDCoENPTkZJR19QRkxBU0hfQ0ZJMDI9eQ0KPiA+ ID4gPiDCoENPTkZJR19NSUNST0RSSVZFPXkNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2h3L3Rp bWVyL01ha2VmaWxlLm9ianMgYi9ody90aW1lci9NYWtlZmlsZS5vYmpzDQo+ID4gPiA+IGlu ZGV4IDdiYThjMjMuLmZhMDI4YWMgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2h3L3RpbWVyL01h a2VmaWxlLm9ianMNCj4gPiA+ID4gKysrIGIvaHcvdGltZXIvTWFrZWZpbGUub2Jqcw0KPiA+ ID4gPiBAQCAtMyw2ICszLDcgQEAgY29tbW9uLW9iai0kKENPTkZJR19BUk1fTVBUSU1FUikg Kz0NCj4gPiA+ID4gYXJtX21wdGltZXIubw0KPiA+ID4gPiDCoGNvbW1vbi1vYmotJChDT05G SUdfQTlfR1RJTUVSKSArPSBhOWd0aW1lci5vDQo+ID4gPiA+IMKgY29tbW9uLW9iai0kKENP TkZJR19DQURFTkNFKSArPSBjYWRlbmNlX3R0Yy5vDQo+ID4gPiA+IMKgY29tbW9uLW9iai0k KENPTkZJR19EUzEzMzgpICs9IGRzMTMzOC5vDQo+ID4gPiA+ICtjb21tb24tb2JqLSQoQ09O RklHX1JYODkwMCkgKz0gcng4OTAwLm8NCj4gPiA+ID4gwqBjb21tb24tb2JqLSQoQ09ORklH X0hQRVQpICs9IGhwZXQubw0KPiA+ID4gPiDCoGNvbW1vbi1vYmotJChDT05GSUdfSTgyNTQp ICs9IGk4MjU0X2NvbW1vbi5vIGk4MjU0Lm8NCj4gPiA+ID4gwqBjb21tb24tb2JqLSQoQ09O RklHX000OFQ1OSkgKz0gbTQ4dDU5Lm8NCj4gPiA+ID4gQEAgLTE3LDYgKzE4LDcgQEAgY29t bW9uLW9iai0kKENPTkZJR19JTVgpICs9IGlteF9lcGl0Lm8NCj4gPiA+ID4gwqBjb21tb24t b2JqLSQoQ09ORklHX0lNWCkgKz0gaW14X2dwdC5vDQo+ID4gPiA+IMKgY29tbW9uLW9iai0k KENPTkZJR19MTTMyKSArPSBsbTMyX3RpbWVyLm8NCj4gPiA+ID4gwqBjb21tb24tb2JqLSQo Q09ORklHX01JTEtZTUlTVCkgKz0gbWlsa3ltaXN0LXN5c2N0bC5vDQo+ID4gPiA+ICtjb21t b24tb2JqLSQoQ09ORklHX1JYODkwMCkgKz0gcng4OTAwLm8NCj4gPiA+ID4gwqANCj4gPiA+ ID4gwqBvYmotJChDT05GSUdfRVhZTk9TNCkgKz0gZXh5bm9zNDIxMF9tY3Qubw0KPiA+ID4g PiDCoG9iai0kKENPTkZJR19FWFlOT1M0KSArPSBleHlub3M0MjEwX3B3bS5vDQo+ID4gPiA+ IGRpZmYgLS1naXQgYS9ody90aW1lci9yeDg5MDAuYyBiL2h3L3RpbWVyL3J4ODkwMC5jDQo+ ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAuLmU2 MzQ4MTkNCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9ody90aW1lci9y eDg5MDAuYw0KPiA+ID4gPiBAQCAtMCwwICsxLDg5MCBAQA0KPiA+ID4gPiArLyoNCj4gPiA+ ID4gKyAqIEVwc29uIFJYODkwMFNBL0NFIFJlYWx0aW1lIENsb2NrIE1vZHVsZQ0KPiA+ID4g PiArICoNCj4gPiA+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxNiBJQk0gQ29ycG9yYXRpb24N Cj4gPiA+ID4gKyAqIEF1dGhvcnM6DQo+ID4gPiA+ICsgKsKgwqBBbGFzdGFpciBEJ1NpbHZh IDxhbGFzdGFpckBkLXNpbHZhLm9yZz4NCj4gPiA+ID4gKyAqwqDCoENocmlzIFNtYXJ0IDxj aHJpc0BkaXN0cm9ndXkuY29tPg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIFRoaXMgY29k ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMIHZlcnNpb24gMiBvcg0KPiA+ID4gPiBsYXRl ci7CoMKgU2VlDQo+ID4gPiA+ICsgKiB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2 ZWwgZGlyZWN0b3J5Lg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIERhdGFzaGVldCBhdmFp bGFibGUgYXQ6DQo+ID4gPiA+ICsgKsKgwqBodHRwczovL3N1cHBvcnQuZXBzb24uYml6L3Rk L2FwaS9kb2NfY2hlY2sucGhwP2RsPWFwcF9SWDg5DQo+ID4gPiA+IDAwQ0UNCj4gPiA+ID4g Jmxhbmc9ZW4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBOb3QgaW1wbGVtZW50ZWQ6DQo+ ID4gPiA+ICsgKsKgwqBJbXBsZW1lbnQgaTJjIHRpbWVvdXQNCj4gPiA+ID4gKyAqLw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSAicWVtdS9vc2RlcC5oIg0KPiA+ID4gPiArI2lu Y2x1ZGUgInFlbXUtY29tbW9uLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAiaHcvaTJjL2kyYy5o Ig0KPiA+ID4gPiArI2luY2x1ZGUgImh3L3RpbWVyL3J4ODkwMF9yZWdzLmgiDQo+ID4gPiA+ ICsjaW5jbHVkZSAiaHcvcHRpbWVyLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAicWVtdS9tYWlu LWxvb3AuaCINCj4gPiA+ID4gKyNpbmNsdWRlICJxZW11L2JjZC5oIg0KPiA+ID4gPiArI2lu Y2x1ZGUgInFlbXUvbG9nLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAicWFwaS9lcnJvci5oIg0K PiA+ID4gPiArI2luY2x1ZGUgInFhcGkvdmlzaXRvci5oIg0KPiA+ID4gPiArI2luY2x1ZGUg InRyYWNlLmgiDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICNpbmNsdWRlIDxleGVjaW5mby5oPg0KPiA+ID4gDQo+ ID4gPiBOb3QgbmVlZGVkIGVtcHR5IGxpbmVzIGFuZCBzcGFjZXMgYmVmb3JlICIjaW5jbHVk ZSIuDQo+ID4gPiANCj4gPiANCj4gPiBPaywgdGhlc2Ugd2VyZSBsZWZ0b3ZlcnMgYW5kIGRv bid0IGJlbG9uZyB0aGVyZSBhbnl3YXkuDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ ID4gPiArI2RlZmluZSBUWVBFX1JYODkwMCAicng4OTAwIg0KPiA+ID4gPiArI2RlZmluZSBS WDg5MDAob2JqKSBPQkpFQ1RfQ0hFQ0soUlg4OTAwU3RhdGUsIChvYmopLA0KPiA+ID4gPiBU WVBFX1JYODkwMCkNCj4gPiA+ID4gKw0KPiA+ID4gPiArdHlwZWRlZiBzdHJ1Y3QgUlg4OTAw U3RhdGUgew0KPiA+ID4gPiArwqDCoMKgwqBJMkNTbGF2ZSBwYXJlbnRfb2JqOw0KPiA+ID4g PiArDQo+ID4gPiA+ICvCoMKgwqDCoHB0aW1lcl9zdGF0ZSAqc2VjX3RpbWVyOyAvKiB0cmln Z2VyZWQgb25jZSBwZXIgc2Vjb25kICovDQo+ID4gPiA+ICvCoMKgwqDCoHB0aW1lcl9zdGF0 ZSAqZm91dF90aW1lcjsNCj4gPiA+ID4gK8KgwqDCoMKgcHRpbWVyX3N0YXRlICpjb3VudGRv d25fdGltZXI7DQo+ID4gPiA+ICvCoMKgwqDCoGJvb2wgZm91dDsNCj4gPiA+IA0KPiA+ID4g SXMgdGhpcyAiRk9FIiBvbiB0aGUgY2hpcD8NCj4gPiA+IA0KPiA+IA0KPiA+IE5vLCBpdCB0 cmFja3MgdGhlIHN0YXRlIG9mIHRoZSBmb3V0IHdhdmVmb3JtLiBJJ2xsIHJlbmFtZSBpdCB0 bw0KPiA+IGZvdXRfc3RhdGUuDQo+IA0KPiBTaW5jZSBpdCBpcyBib29sLCBmb3V0X2VuYWJs ZWQgbWFrZXMgbW9yZSBzZW5zZS4NCj4gDQoNCk5vIGl0IGRvZXMndCwgaXQncyBub3QgYW4g ZW5hYmxlZCBjb250cm9sLCBidXQgdGhlIHBoYXNlIG9mIHRoZQ0Kd2F2ZWZvcm0uDQoNCj4g DQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gK8KgwqDCoMKgaW50NjRfdCBvZmZzZXQ7DQo+ID4g PiA+ICvCoMKgwqDCoHVpbnQ4X3Qgd2Vla2RheTsgLyogU2F2ZWQgZm9yIGRlZmVycmVkIG9m ZnNldCBjYWxjdWxhdGlvbiwNCj4gPiA+ID4gMC02wqANCj4gPiA+ID4gKi8NCj4gPiA+ID4g K8KgwqDCoMKgdWludDhfdCB3ZGF5X29mZnNldDsNCj4gPiA+ID4gK8KgwqDCoMKgdWludDhf dCBudnJhbVtSWDg5MDBfTlZSQU1fU0laRV07DQo+ID4gPiA+ICvCoMKgwqDCoGludDMyX3Qg cHRyOyAvKiBXcmFwcGVkIHRvIHN0YXkgd2l0aGluIFJYODkwMF9OVlJBTV9TSVpFDQo+ID4g PiA+ICovDQo+ID4gPiANCj4gPiA+IEl0IGlzIHJhdGhlciAibnZyYW1fb2Zmc2V0IiB0aGFu IHNvbWUgcG9pbnRlci4NCj4gPiA+IA0KPiA+IA0KPiA+IE9rDQo+ID4gDQo+ID4gPiANCj4g PiA+ID4gK8KgwqDCoMKgYm9vbCBhZGRyX2J5dGU7DQo+ID4gPiA+ICvCoMKgwqDCoHVpbnQ4 X3QgbGFzdF9pbnRlcnJ1cHRfc2Vjb25kczsNCj4gPiA+IA0KPiA+ID4gcy9sYXN0X2ludGVy cnVwdF9zZWNvbmRzL2xhc3RfdXBkYXRlX2ludGVycnVwdF9zZWNvbmRzLw0KPiA+ID4gDQo+ ID4gDQo+ID4gTm8sIHRoaXMgaXMgbW9yZSBnZW5lcmljIHRoYW4gdGhlIHVwZGF0ZSBpbnRl cnJ1cHQuDQo+IA0KPiANCj4gbGFzdF91cGRhdGVfaW50ZXJydXB0X21pbnV0ZXMgaXMgdXBk YXRlZCBpbiB1cGRhdGVfY29udHJvbF9yZWdpc3RlcigpDQo+IGFuZA0KPiByeDg5MDBfdGlt ZXJfdGljaygpDQo+IA0KPiBsYXN0X2ludGVycnVwdF9zZWNvbmRzIGlzIHVwZGF0ZWQgaW4g dXBkYXRlX2NvbnRyb2xfcmVnaXN0ZXIoKSBhbmQNCj4gcng4OTAwX3RpbWVyX3RpY2soKSBh cyB3ZWxsLg0KPiANCj4gWWVzLCB0aGUgY29uZGl0aW9ucyBhcmUgc29tZXRpbWUgZGlmZmVy ZW50IGJ1dCBpdCBpcyBzdGlsbCBxdWl0ZSBoYXJkDQo+IHRvDQo+IHRlbGwgaG93IG9uZSBp cyBtb3JlIGdlbmVyaWMgdGhhbiB0aGUgb3RoZXIuIEFsbCBJIGFtIHNheWluZyBoZXJlIGlz DQo+IHRoYXQNCj4gdGhlIG5hbWVzIGFyZSBub3QgY2xlYXIgYW5kIHRoZXJlIGlzIG5vIGNv bW1lbnQgYWJvdXQgdGhlbSBlaXRoZXIuDQoNCkknbGwgYWRkIHNvbWUgY29tbWVudHMuDQoN Cj4gDQo+ID4gPiANCj4gPiA+ID4gK8KgwqDCoMKgdWludDhfdCBsYXN0X3VwZGF0ZV9pbnRl cnJ1cHRfbWludXRlczsNCj4gPiA+ID4gK8KgwqDCoMKgZG91YmxlIHN1cHBseV92b2x0YWdl Ow0KPiA+ID4gPiArwqDCoMKgwqBxZW11X2lycSBpbnRlcnJ1cHRfcGluOw0KPiA+ID4gDQo+ ID4gPiBJcyB0aGlzICJJTlQiIG9uIHRoZSBjaGlwPw0KPiA+ID4gDQo+ID4gDQo+ID4gWWVz DQo+IA0KPiBJJ2Qgc3VnZ2VzdCBhZGRpbmcgYSBzaG9ydCBjb21tZW50IC8qIElOVCBwaW4g Ki8gYXQgdGhlIGVuZCBvZiB0aGUNCj4gbGluZS4NCg0KSSBkb24ndCB0aGluayBpdCdzIGEg aHVnZSBsb2dpY2FsIGxlYXAgaGVyZSB0byBhc3NvY2lhdGUNCiJpbnRlcnJ1cHRfcGluIiB3 aXRoIHRoZSBpbnRlcnJ1cHQgcGluIG9mIHRoZSBkZXZpY2UuDQoNCj4gPiANCj4gPiA+ID4g K8KgwqDCoMKgcWVtdV9pcnEgZm91dF9waW47DQo+ID4gPiANCj4gPiA+IElzIHRoaXMgIkZP VVQiIG9uIHRoZSBjaGlwPw0KPiA+ID4gDQo+ID4gDQo+ID4gWWVzDQo+IA0KPiANCj4gU2Ft ZSBoZXJlLg0KDQpEaXR0bw0KDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gK30gUlg4OTAwU3Rh dGU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRp b24gdm1zdGF0ZV9yeDg5MDAgPSB7DQo+ID4gPiA+ICvCoMKgwqDCoC5uYW1lID0gInJ4ODkw MCIsDQo+ID4gPiA+ICvCoMKgwqDCoC52ZXJzaW9uX2lkID0gMiwNCj4gPiA+IA0KPiA+ID4g DQo+ID4gPiB2bXN0YXRlIHZlcnNpb24gaXMgMiBmb3IgYSBicmFuZCBuZXcgZGV2aWNlIG1l YW5zIHRoYXQgdGhlcmUgaXMNCj4gPiA+IGFub3RoZXINCj4gPiA+IGRldmljZSB3aGljaCBj YW4gbWlncmF0ZSB0byBpdD8gSSB0aGluayB5b3Ugd2FudCB2ZXJzaW9uX2lkPTEgYW5kDQo+ ID4gPiBnZXQNCj4gPiA+IHJpZA0KPiA+ID4gb2YgX1YgYmVsb3cuDQo+ID4gPiANCj4gPiAN Cj4gPiBPaw0KPiA+IA0KPiA+ID4gDQo+ID4gPiANCj4gPiA+ID4gK8KgwqDCoMKgLm1pbmlt dW1fdmVyc2lvbl9pZCA9IDEsDQo+ID4gPiA+ICvCoMKgwqDCoC5maWVsZHMgPSAoVk1TdGF0 ZUZpZWxkW10pIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBWTVNUQVRFX0kyQ19TTEFW RShwYXJlbnRfb2JqLCBSWDg5MDBTdGF0ZSksDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg Vk1TVEFURV9QVElNRVIoc2VjX3RpbWVyLCBSWDg5MDBTdGF0ZSksDQo+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgVk1TVEFURV9QVElNRVIoZm91dF90aW1lciwgUlg4OTAwU3RhdGUpLA0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoFZNU1RBVEVfUFRJTUVSKGNvdW50ZG93bl90aW1l ciwgUlg4OTAwU3RhdGUpLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoFZNU1RBVEVfQk9P TChmb3V0LCBSWDg5MDBTdGF0ZSksDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgVk1TVEFU RV9JTlQ2NChvZmZzZXQsIFJYODkwMFN0YXRlKSwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqBWTVNUQVRFX1VJTlQ4X1Yod2Vla2RheSwgUlg4OTAwU3RhdGUsIDIpLA0KPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoFZNU1RBVEVfVUlOVDhfVih3ZGF5X29mZnNldCwgUlg4OTAwU3Rh dGUsIDIpLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoFZNU1RBVEVfVUlOVDhfQVJSQVko bnZyYW0sIFJYODkwMFN0YXRlLA0KPiA+ID4gPiBSWDg5MDBfTlZSQU1fU0laRSksDQo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgVk1TVEFURV9JTlQzMihwdHIsIFJYODkwMFN0YXRlKSwN Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBWTVNUQVRFX0JPT0woYWRkcl9ieXRlLCBSWDg5 MDBTdGF0ZSksDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgVk1TVEFURV9VSU5UOF9WKGxh c3RfaW50ZXJydXB0X3NlY29uZHMsIFJYODkwMFN0YXRlLA0KPiA+ID4gPiAyKSwNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqBWTVNUQVRFX1VJTlQ4X1YobGFzdF91cGRhdGVfaW50ZXJy dXB0X21pbnV0ZXMsDQo+ID4gPiA+IFJYODkwMFN0YXRlLCAyKSwNCj4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqBWTVNUQVRFX0VORF9PRl9MSVNUKCkNCj4gPiA+ID4gK8KgwqDCoMKgfQ0K PiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcng4OTAwX3Jl c2V0KERldmljZVN0YXRlICpkZXYpOw0KPiA+ID4gPiArc3RhdGljIHZvaWQgZGlzYWJsZV9j b3VudGRvd25fdGltZXIoUlg4OTAwU3RhdGUgKnMpOw0KPiA+ID4gDQo+ID4gPiBUaGlzIG9u ZSBub3QgbmVlZGVkLg0KPiA+ID4gDQo+ID4gDQo+ID4gT2sNCj4gPiANCj4gPiA+IA0KPiA+ ID4gPiArc3RhdGljIHZvaWQgZW5hYmxlX2NvdW50ZG93bl90aW1lcihSWDg5MDBTdGF0ZSAq cyk7DQo+ID4gPiA+ICtzdGF0aWMgdm9pZCBkaXNhYmxlX3RpbWVyKFJYODkwMFN0YXRlICpz KTsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIGVuYWJsZV90aW1lcihSWDg5MDBTdGF0ZSAqcyk7 DQo+ID4gPiA+IEZyb20gYSBxdWljayBsb29rLCBhbGwgdGhlc2UgZnVuY3Rpb25zIGNvdWxk IGJlIG1vdmVkIHJpZ2h0DQo+ID4gPiA+IGhlcmUsDQo+ID4gPiA+IGNhbm5vdCB0aGV5Pw0K PiA+IA0KPiA+IE9rLCBleGNlcHQgZm9yIHJlc2V0LCB3aGljaCBJIHByZWZlciB0byBsZWF2 ZSBuZXh0IHRvIHRoZSBvdGhlcg0KPiA+IGluaXQNCj4gPiBjb2RlIHNvIHRoYXQgYXNzb2Np YXRlZCBjb2RlIGlzIGtlcHQgdG9ndGhlci4NCj4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ ICtzdGF0aWMgdm9pZCBjYXB0dXJlX2N1cnJlbnRfdGltZShSWDg5MDBTdGF0ZSAqcykNCj4g PiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDCoMKgLyogQ2FwdHVyZSB0aGUgY3VycmVudCB0aW1l IGludG8gdGhlIHNlY29uZGFyeSByZWdpc3RlcnMNCj4gPiA+ID4gK8KgwqDCoMKgwqAqIHdo aWNoIHdpbGwgYmUgYWN0dWFsbHkgcmVhZCBieSB0aGUgZGF0YSB0cmFuc2Zlcg0KPiA+ID4g PiBvcGVyYXRpb24uDQo+ID4gPiA+ICvCoMKgwqDCoMKgKi8NCj4gPiA+ID4gK8KgwqDCoMKg c3RydWN0IHRtIG5vdzsNCj4gPiA+ID4gK8KgwqDCoMKgcWVtdV9nZXRfdGltZWRhdGUoJm5v dywgcy0+b2Zmc2V0KTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bU0VDT05EU10gPSB0 b19iY2Qobm93LnRtX3NlYyk7DQo+ID4gPiA+ICvCoMKgwqDCoHMtPm52cmFtW01JTlVURVNd ID0gdG9fYmNkKG5vdy50bV9taW4pOw0KPiA+ID4gPiArwqDCoMKgwqBzLT5udnJhbVtIT1VS U10gPSB0b19iY2Qobm93LnRtX2hvdXIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDC oHMtPm52cmFtW1dFRUtEQVldID0gMHgwMSA8PCAoKG5vdy50bV93ZGF5ICsgcy0NCj4gPiA+ ID4gPndkYXlfb2Zmc2V0KSAlDQo+ID4gPiA+IDcpOw0KPiA+ID4gDQo+ID4gPiBzLzB4MDEv MS8gPw0KPiA+IA0KPiA+IFdlZWtkYXkgaXMgYSB3YWxraW5nIGJpdCwgSSB0aGluayBoZXgg bm90YXRpb24gaXMgY2xlYXJlci4NCj4gDQo+IA0KPiAiMSIgaXMgYSBwdXJlIG9uZS4gMHgw MSBzdWdnZXN0cyBhIGJpdCBtYXNrIHNvIGl0IG1heSBiZSBwb3NzaWJsZSB0bw0KPiBzaGlm dA0KPiBzb21lIG90aGVyIHZhbHVlLiBJIGNhbm5vdCB0aGluayBob3cgMHgwMSBpcyBjbGVh cmVyLCBJIGFza2VkIFBhdWwsDQo+IGhlDQo+IGNhbm5vdCBlaXRoZXIgOykNCj4gDQoNCkZy b20gdGhlIGRhdGFzaGVldDoNClRoZSBkYXkgZGF0YSB2YWx1ZXMgYXJlIGNvdW50ZWQgYXMg Zm9sbG93czogRGF5IDAxaCwgRGF5IDAyaCwgRGF5IDA0aCwNCkRheSAwOGgsIERheSAxMGgs IERheSAyMGgsIERheSA0MGgsIERheSAwMWgsIERheSAwMmgsIGV0Yy7CoMKgwqANCg0KPiAN Cj4gPiANCj4gPiA+IA0KPiA+ID4gPiArwqDCoMKgwqBzLT5udnJhbVtEQVldID0gdG9fYmNk KG5vdy50bV9tZGF5KTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bTU9OVEhdID0gdG9f YmNkKG5vdy50bV9tb24gKyAxKTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bWUVBUl0g PSB0b19iY2Qobm93LnRtX3llYXIgJSAxMDApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKg wqDCoHMtPm52cmFtW0VYVF9TRUNPTkRTXSA9IHMtPm52cmFtW1NFQ09ORFNdOw0KPiA+ID4g PiArwqDCoMKgwqBzLT5udnJhbVtFWFRfTUlOVVRFU10gPSBzLT5udnJhbVtNSU5VVEVTXTsN Cj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bRVhUX0hPVVJTXSA9IHMtPm52cmFtW0hPVVJT XTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bRVhUX1dFRUtEQVldID0gcy0+bnZyYW1b V0VFS0RBWV07DQo+ID4gPiA+ICvCoMKgwqDCoHMtPm52cmFtW0VYVF9EQVldID0gcy0+bnZy YW1bREFZXTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bRVhUX01PTlRIXSA9IHMtPm52 cmFtW01PTlRIXTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bRVhUX1lFQVJdID0gcy0+ bnZyYW1bWUVBUl07DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgdHJhY2Vfcng4OTAw X2NhcHR1cmVfY3VycmVudF90aW1lKG5vdy50bV9ob3VyLCBub3cudG1fbWluLA0KPiA+ID4g PiBub3cudG1fc2VjLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKG5vdy50 bV93ZGF5ICsgcy0+d2RheV9vZmZzZXQpICUgNywNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG5vdy50bV9tZGF5LCBub3cudG1fbW9uLCBub3cudG1feWVhciArIDE5MDAs DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzLT5udnJhbVtIT1VSU10sIHMt Pm52cmFtW01JTlVURVNdLCBzLQ0KPiA+ID4gPiA+bnZyYW1bU0VDT05EU10sDQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzLT5udnJhbVtXRUVLREFZXSwgcy0+bnZyYW1b REFZXSwgcy0+bnZyYW1bTU9OVEhdLCANCj4gPiA+ID4gcy0NCj4gPiA+ID4gPiBudnJhbVtZ RUFSXSk7DQo+ID4gPiA+IA0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAqIEluY3JlbWVudCB0aGUgaW50ZXJuYWwgcmVnaXN0ZXIgcG9pbnRlciwg ZGVhbGluZyB3aXRoDQo+ID4gPiA+IHdyYXBwaW5nDQo+ID4gPiA+ICsgKiBAcGFyYW0gcyB0 aGUgUlRDIHRvIG9wZXJhdGUgb24NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZv aWQgaW5jX3JlZ3B0cihSWDg5MDBTdGF0ZSAqcykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8Kg wqDCoMKgLyogVGhlIHJlZ2lzdGVyIHBvaW50ZXIgd3JhcHMgYXJvdW5kIGFmdGVyIDB4MUYN Cj4gPiA+ID4gK8KgwqDCoMKgwqAqLw0KPiA+ID4gPiArwqDCoMKgwqBzLT5wdHIgPSAocy0+ cHRyICsgMSkgJiAoUlg4OTAwX05WUkFNX1NJWkUgLSAxKTsNCj4gPiA+ID4gK8KgwqDCoMKg dHJhY2Vfcng4OTAwX3JlZ3B0cl91cGRhdGUocy0+cHRyKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArwqDCoMKgwqBpZiAocy0+cHRyID09IDB4MDApIHsNCj4gPiA+IA0KPiA+ID4gDQo+ID4g PiBNYWdpYyBjb25zdGFudCAweDAwLiBJcyB0aGlzIG9mZnNldCBpbiBudnJhbT8gVGhlbiBt YWtlIGl0IGp1c3QNCj4gPiA+IDAsDQo+ID4gPiBvdGhlcndpc2UgaXQgbG9va3MgbGlrZSBh IG1hc2suDQo+ID4gDQo+ID4gUmVwbGFjZWQgd2l0aCBTVEFSVF9BRERSRVNTIGZyb20gUlg4 OTAwQWRkcmVzc2VzLg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg dHJhY2Vfcng4OTAwX3JlZ3B0cl9vdmVyZmxvdygpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoGNhcHR1cmVfY3VycmVudF90aW1lKHMpOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogUmVjZWl2ZSBh biBJMkMgRXZlbnQNCj4gPiA+ID4gKyAqIEBwYXJhbSBpMmMgdGhlIGkyYyBkZXZpY2UgaW5z dGFuY2UNCj4gPiA+ID4gKyAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnQgdG8gaGFuZGxlDQo+ ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9ldmVudChJMkNTbGF2 ZSAqaTJjLCBlbnVtIGkyY19ldmVudCBldmVudCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8Kg wqDCoMKgUlg4OTAwU3RhdGUgKnMgPSBSWDg5MDAoaTJjKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArwqDCoMKgwqBzd2l0Y2ggKGV2ZW50KSB7DQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgSTJD X1NUQVJUX1JFQ1Y6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgLyogSW4gaC93LCB0aW1l IGNhcHR1cmUgaGFwcGVucyBvbiBhbnkgU1RBUlQNCj4gPiA+ID4gY29uZGl0aW9uLA0KPiA+ ID4gPiBub3QganVzdCBhDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqAqIFNUQVJUX1JF Q1YuIEZvciB0aGUgZW11bGF0aW9uLCBpdCBkb2Vzbid0IGFjdHVhbGx5DQo+ID4gPiA+IG1h dHRlciwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoCogc2luY2UgYSBTVEFSVF9SRUNW IGhhcyB0byBvY2N1ciBiZWZvcmUgdGhlIGRhdGEgY2FuDQo+ID4gPiA+IGJlDQo+ID4gPiA+ IHJlYWQuDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqAqLw0KPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoGNhcHR1cmVfY3VycmVudF90aW1lKHMpOw0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoGJyZWFrOw0KPiA+ID4gPiArwqDCoMKgwqBjYXNlIEkyQ19TVEFSVF9TRU5EOg0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHMtPmFkZHJfYnl0ZSA9IHRydWU7DQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgSTJDX0ZJ TklTSDoNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBpZiAocy0+d2Vla2RheSA8IDcpIHsN Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFdlIGRlZmVyIHRoZSB3ZWVr ZGF5IGNhbGN1bGF0aW9uIGFzIGl0IGlzDQo+ID4gPiA+IGhhbmRlZCB0bw0KPiA+ID4gPiB1 cyBiZWZvcmUNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKiB0aGUgZGF0 ZSBoYXMgYmVlbiB1cGRhdGVkLiBJZiB3ZSBjYWxjdWxhdGUgdGhlDQo+ID4gPiA+IHdlZWtk YXkgb2Zmc2V0DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogd2hlbiBp dCBpcyBwYXNzZWQgdG8gdXMsIHdlIHdpbGwgaW5jb3JyZWN0bHkNCj4gPiA+ID4gZGV0ZXJt aW5lIGl0DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogYmFzZWQgb24g dGhlIGN1cnJlbnQgZW11bGF0ZWQgZGF0ZSwgcmF0aGVyIHRoYW4NCj4gPiA+ID4gdGhlDQo+ ID4gPiA+IGRhdGUgdGhhdA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAq IGhhcyBiZWVuIHdyaXR0ZW4uDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCovDQo+ID4gPiANCj4gPiA+IFRoZSBSWDg5MDAgc3BlYyBkb2VzIG5vdCB1c2Ugd29yZCAi b2Zmc2V0IiBhdCBhbGwgc28gSSBjYW5ub3QNCj4gPiA+IG1ha2UNCj4gPiA+IHNlbnNlDQo+ ID4gPiBmcm9tIHRoZSBwYXJhZ3JhcGggYWJvdmUgLSB3aHkgZXhhY3RseSBkbyB5b3UgbmVl ZCAyIG9mZnNldHMNCj4gPiA+ICgib2Zmc2V0IiBhbmQNCj4gPiA+ICJ3ZGF5X29mZnNldCIp IGFuZCB3aHkgd2Vla2RheSBjYW5ub3QgYmUgY2FsY3VsYXRlZCB3aGVuIGl0IGlzDQo+ID4g PiBuZWVkZWQNCj4gPiA+IGZyb20NCj4gPiA+IHRoZSBjdXJyZW50IHRpbWUgKyAib2Zmc2V0 Ij8NCj4gPiA+IA0KPiA+IA0KPiA+IFRoZSBvZmZzZXRzIHJlZmVyIHRvIHRoZSBkaWZmZXJl bmNlIGJldHdlZW4gdGhlIGhvc3QgY2xvY2sgJiB0aGUNCj4gPiBlbXVsYXRlZCBjbG9jay4g VGhlIHdlZWtkYXkgY2Fubm90IGJlIGNhbGN1bGF0ZWQgYXMgdGhlIFJYODkwMCBkb2VzDQo+ ID4gbm90DQo+ID4gdmFsaWRhdGUgdGhlIHdlZWtkYXkgLSB0aGUgdXNlciBjYW4gc2V0IHRo ZSB3ZWVrZGF5IHRvIGFueXRoaW5nLg0KPiANCj4gDQo+IFVmZmYuIE5vdyBJIGFtIHRvdGFs bHkgY29uZnVzZWQuIFlvdSBzYXkgInRoZSB3ZWVrZGF5IGNhbm5vdCBiZQ0KPiBjYWxjdWxh dGVkIg0KPiBidXQgdGhlIGNvbW1lbnQgc2F5cyB5b3UgZGVmZXIgaXRzIGNhbGN1bGF0aW9u LiBUaGUgY29tbWVudCBuZWVkcyBhbg0KPiB1cGRhdGUuDQoNClNvcnJ5LCBteSBiYWQsIHRo ZSB3ZWVrZGF5IGNhbm5vdCBiZSBjYWxjdWxhdGVkIHdpdGhvdXQgdGhlIHdlZWtkYXkNCm9m ZnNldCwgYXMgdGhlIHdlZWtkYXkgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgY29ycmVjdCBm b3IgdGhhdCBkYXRlLg0KDQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdG0gbm93Ow0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcWVtdV9nZXRfdGltZWRhdGUoJm5vdywgcy0+b2Zmc2V0KTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcy0+d2RheV9vZmZzZXQgPSAo cy0+d2Vla2RheSAtIG5vdy50bV93ZGF5ICsgNykgJQ0KPiA+ID4gPiA3Ow0KPiA+ID4gPiAr DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9yeDg5MDBfZXZlbnRf d2Vla2RheShzLT53ZWVrZGF5LCBCSVQocy0NCj4gPiA+ID4gPiB3ZWVrZGF5KSwNCj4gPiA+ ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cy0+d2RheV9vZmZzZXQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzLT53ZWVrZGF5ID0gNzsNCj4gPiA+IA0KPiA+ID4gSSdkIHJhdGhlciB1c2Ug MHhmZiAoZGVmaW5lZCBpbiBhIG1hY3JvKSBhcyBhbiBpbnZhbGlkIHdlZWtkYXkuDQo+ID4g PiANCj4gPiANCj4gPiBPaw0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgfQ0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPiA+ID4gPiArDQo+ID4g PiA+ICvCoMKgwqDCoGRlZmF1bHQ6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 DQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gTm90IG5lZWRlZCAiZGVmYXVsdCIgY2FzZS4NCj4g PiA+IA0KPiA+IA0KPiA+IFRoaXMgaXMgYSBoaW50IHRvIHN0YXRpYyBhbmFseXNlcnMgKGFu ZCBkZXZlbG9wZXJzKSB0aGF0IHRoZSBvdGhlcg0KPiA+IGVudW1lcmF0aW9uIGNhc2VzIHdl cmUgbm90IGZvcmdvdHRlbiwgYnV0IGludGVudGlvbmFsbHkgaGF2ZSBubw0KPiA+IGFjdGlv bi4NCj4gDQo+IA0KPiBPdXQgb2YgY3VyaW9zaXR5IC0gd2hhdCBzdGF0aWMgYW5hbHl6ZXIg ZG9lcyBjb21wbGFpbiBhYm91dCB0aGlzPyBJDQo+IGxvb2tlZA0KPiBhdCB0aGUga2VybmVs IGFuZCBRRU1VIHRyZWVzIGFuZCBzZWVtcyB0aGF0IGl0IGlzIG5vdCBjb21tb24gdGhpbmcg dG8NCj4gbGVhdmUNCj4gYW4gZW1wdHkgImRlZmF1bHQiIGNhc2UuDQoNCkVjbGlwc2UgQ29k YW4gd2lsbCBmbGFnIG1pc3NpbmcgZW51bSBlbGVtZW50cyBpbiBhIHN3aXRjaC4NCg0KPiAN Cj4gPiANCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAqIFBlcmZvcm0gYW4gaTJjIHJlY2VpdmUgYWN0aW9uDQo+ ID4gPiA+ICsgKiBAcGFyYW0gaTJjIHRoZSBpMmMgZGV2aWNlIGluc3RhbmNlDQo+ID4gPiA+ ICsgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCByZWdpc3Rlcg0KPiA+ID4g PiArICogQHBvc3QgdGhlIGludGVybmFsIHJlZ2lzdGVyIHBvaW50ZXIgaXMgaW5jcmVtZW50 ZWQNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIGludCByeDg5MDBfcmVjdihJMkNT bGF2ZSAqaTJjKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqBSWDg5MDBTdGF0ZSAq cyA9IFJYODkwMChpMmMpOw0KPiA+ID4gPiArwqDCoMKgwqB1aW50OF90IHJlcyA9IHMtPm52 cmFtW3MtPnB0cl07DQo+ID4gPiA+ICvCoMKgwqDCoHRyYWNlX3J4ODkwMF9yZWFkX3JlZ2lz dGVyKHMtPnB0ciwgcmVzKTsNCj4gPiA+ID4gK8KgwqDCoMKgaW5jX3JlZ3B0cihzKTsNCj4g PiA+ID4gK8KgwqDCoMKgcmV0dXJuIHJlczsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBWYWxpZGF0ZSB0aGUgZXh0ZW5zaW9uIHJlZ2lzdGVy IGFuZCBwZXJmb3JtIGFjdGlvbnMgYmFzZWQNCj4gPiA+ID4gb24NCj4gPiA+ID4gdGhlIGJp dHMNCj4gPiA+ID4gKyAqIEBwYXJhbSBzIHRoZSBSVEMgdG8gb3BlcmF0ZSBvbg0KPiA+ID4g PiArICogQHBhcmFtIGRhdGEgdGhlIG5ldyBkYXRhIGZvciB0aGUgZXh0ZW5zaW9uIHJlZ2lz dGVyDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9leHRlbnNp b25fcmVnaXN0ZXIoUlg4OTAwU3RhdGUgKnMsIHVpbnQ4X3QNCj4gPiA+ID4gZGF0YSkNCj4g PiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKGRhdGEgJiBFWFRfTUFTS19URVNUKSB7 DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJS T1IsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiVGVzdCBiaXQgaXMgZW5h YmxlZCBidXQgaXMgZm9yYmlkZGVuIGJ5IHRoZQ0KPiA+ID4gPiBtYW51ZmFjdHVyZXIiKTsN Cj4gPiA+IA0KPiA+ID4gUUVNVSB1c2VzIGluZGVudHMgdW5kZXIgb3BlbmluZyBicmFja2V0 Lg0KPiA+ID4gDQo+ID4gDQo+ID4gRGViYXRhYmxlLCBpdCdzIG5vdCBwcmVzY3JpYmVkIGlu IHRoZSBjb2Rpbmcgc3R5bGUsIGFuZCBleGlzdGluZw0KPiA+IGNvZGUNCj4gPiB2YXJpZXMu IENhbiB5b3UgcG9pbnQgbWUgYXQgd2hlcmUgdGhhdCBpcyBzdGF0ZWQ/DQo+IA0KPiBOb3Bl IGJ1dCBpdCBpcyBhbGwgb3ZlciB0aGUgcGxhY2UuIFlvdSBtYXkgc2VlIG9jY2FzaW5hbGx5 IGRpZmZlcmVudA0KPiBzdHlsZXMNCj4gYnV0IG5vdCBpbiBtYWluIGZpbGVzIHN1Y2ggYXMg dmwuYyBvciBody9wY2kvcGNpLmMuDQo+IA0KPiANCj4gPiANCj4gPiA+IEluIGdlbmVyYWws IEkgdXNlIHZpbSB3aXRoDQo+ID4gPiBzZXQgZXhwYW5kdGFiDQo+ID4gPiBzZXQgdGFic3Rv cD00DQo+ID4gPiBzZXQgc2hpZnR3aWR0aD00DQo+ID4gPiBzZXQgY2lubz06MCwoMA0KPiA+ ID4gDQo+ID4gPiANCj4gPiA+IFRoZSBjb2Rpbmcgc3R5bGUgYWxzbyBzYXlzIGFib3V0IDgw IGNoYXJhY3RlcnMgbGltaXQgKGFuZCBzb21lIG9mDQo+ID4gPiB5b3VyDQo+ID4gPiBwYXRj aGVkIGZhaWxlZCB0aGlzKSBhbmQgbWFrZXMgbm8gZXhjZXB0aW9uLCBob3dldmVyIHBlb3Bs ZQ0KPiA+ID4gb2Z0ZW7CoA0KPiA+IA0KPiA+IEFjdHVhbGx5LCBpdCBkb2VzOg0KPiANCj4g DQo+IE9rLCBnb29kIHRvIGtub3cuIFdoZW4gSSBzdHVkaWVkIHRoZSBjb2Rpbmcgc3R5bGUg bGFzdCB0aW1lLCBpdCBqdXN0DQo+IHdhcw0KPiBub3QgdGhlcmUuDQo+IA0KPiANCj4gPiAi U29tZXRpbWVzIGl0IGlzIGhhcmQgdG8gZG8sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdp dGggUUVNVQ0KPiA+IHN1YnN5c3RlbXMgdGhhdCB1c2UgbG9uZyBmdW5jdGlvbiBvciBzeW1i b2wgbmFtZXMuwqDCoEV2ZW4gaW4gdGhhdA0KPiA+IGNhc2UsDQo+ID4gZG8gbm90IG1ha2Ug bGluZXMgbXVjaCBsb25nZXIgdGhhbiA4MCBjaGFyYWN0ZXJzLiINCj4gPiANCj4gPiA+IGZv bGxvdw0KPiA+ID4gdGhlIGtlcm5lbCBydWxlIG5vdCB0byBzcGxpdCBzdHJpbmdzIGV2ZW4g aWYgdGhleSBkbyBub3QgZml0IDgwDQo+ID4gPiBjaGFyYWN0ZXJzDQo+ID4gPiBsaW1pdC4N Cj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBBbmQgcGxlYXNlIHJ1biAuL3NjcmlwdHMvY2hlY2tw YXRjaC5wbCBvbiBwYXRjaGVzIGJlZm9yZSBwb3N0aW5nLA0KPiA+ID4gMy82DQo+ID4gPiBh bmQNCj4gPiA+IDUvNiBmYWlsZWQgYmVjYXVzZSBvZiB0b28gbG9uZyBsaW5lcy4NCj4gPiAN Cj4gPiBJIGhhdmUgdGhpcyBzZXQgdXAgYXMgYSBnaXQgY29tbWl0IGhvb2ssIHNvIEknbSBu b3Qgc3VyZSBob3cgdGhpcw0KPiA+IHNsaXBwZWQgaW4sIGJ1dCBzdXJlLCBJIGNhbiByZXJ1 biBpdCBiZWZvcmUgc3VibWl0dGluZy4NCj4gPiANCj4gPiA+IA0KPiA+ID4gPiArwqDCoMKg wqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKChkYXRhIF4gcy0+bnZyYW1b RVhURU5TSU9OX1JFR0lTVEVSXSkgJg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgKEVYVF9NQVNLX0ZTRUwwIHwgRVhUX01BU0tfRlNFTDEpKSB7DQo+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgdWludDhfdCBmc2VsID0gKGRhdGEgJiAoRVhUX01BU0tfRlNFTDAgfA0K PiA+ID4gPiBFWFRfTUFTS19GU0VMMSkpDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD4+IEVYVF9SRUdfRlNFTDA7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgLyogRlNFTHggaGFzIGNoYW5nZWQgKi8NCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBz d2l0Y2ggKGZzZWwpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBjYXNlIDB4MDE6DQo+ ID4gPiANCj4gPiA+IE1hZ2ljIHZhbHVlIG9mIDB4MDEsIDB4MDIgaGVyZSBhbmQgYmVsb3cu DQo+ID4gPiANCj4gPiANCj4gPiBJIHRoaW5rIHRoaXMgdXNlIGNhc2UgaXMgcmVhc29uYWJs ZSwgd2UgYXJlIG1hdGNoaW5nIGFnYWluc3QgdGhlIDINCj4gPiBGU0VMDQo+ID4gYml0cy4N Cj4gDQo+IEknZCBsaXRlcmFsbHkgZG8gdGhpczoNCj4gDQo+IHN3aXRjaCAoZGF0YSAmIChF WFRfTUFTS19GU0VMMCB8IEVYVF9NQVNLX0ZTRUwxKSkgew0KPiBjYXNlIEVYVF9NQVNLX0ZT RUwwOg0KPiAJdHJhY2Vfcng4OTAwX3NldF9mb3V0KDEwMjQpOw0KPiAJcHRpbWVyX3NldF9s aW1pdChzLT5mb3V0X3RpbWVyLCAzMiwgMSk7DQo+IAlicmVhazsNCj4gY2FzZSBFWFRfTUFT S19GU0VMMToNCj4gCXRyYWNlX3J4ODkwMF9zZXRfZm91dCgxKTsNCj4gCXB0aW1lcl9zZXRf bGltaXQocy0+Zm91dF90aW1lciwgMzI3NjgsIDEpOw0KPiAJYnJlYWs7DQo+IGNhc2UgMDoN Cj4gY2FzZSBFWFRfTUFTS19GU0VMMCB8IEVYVF9NQVNLX0ZTRUwwOg0KPiAJdHJhY2Vfcng4 OTAwX3NldF9mb3V0KDMyNzY4KTsNCj4gCXB0aW1lcl9zZXRfbGltaXQocy0+Zm91dF90aW1l ciwgMSwgMSk7DQo+IAlicmVhazsNCj4gfQ0KPiANCj4gRWFzaWVyIHRvIHJlYWQgYW5kIHlv dSBjYW4gYmUgc3VyZSB0aGF0IG5vdGhpbmcgaXMgbWlzc2VkIGFuZCBhbGwNCj4gYml0cw0K PiBjb21iaW5hdGlvbnMgYXJlIGNvdmVyZWQuDQoNCk9rDQoNCj4gDQo+ID4gDQo+ID4gPiAN Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRyYWNlX3J4ODkwMF9zZXRfZm91 dCgxMDI0KTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHB0aW1lcl9zZXRf bGltaXQocy0+Zm91dF90aW1lciwgMzIsIDEpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYnJlYWs7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgY2FzZSAweDAyOg0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHJhY2Vfcng4OTAwX3NldF9mb3V0 KDEpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHRpbWVyX3NldF9saW1p dChzLT5mb3V0X3RpbWVyLCAzMjc2OCwgMSk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBkZWZhdWx0Og0KPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdHJhY2Vfcng4OTAwX3NldF9mb3V0KDMy NzY4KTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHB0aW1lcl9zZXRfbGlt aXQocy0+Zm91dF90aW1lciwgMSwgMSk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqB9DQo+ID4gPiA+ICvCoMKg wqDCoH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBpZiAoKGRhdGEgXiBzLT5udnJh bVtFWFRFTlNJT05fUkVHSVNURVJdKSAmDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAoRVhUX01BU0tfVFNFTDAgfCBFWFRfTUFTS19UU0VMMSkpIHsNCj4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqB1aW50OF90IHRzZWwgPSAoZGF0YSAmIChFWFRfTUFTS19UU0VMMCB8 DQo+ID4gPiA+IEVYVF9NQVNLX1RTRUwxKSkNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgPj4gRVhUX1JFR19UU0VMMDsNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqAvKiBUU0VMeCBoYXMgY2hhbmdlZCAqLw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oHN3aXRjaCAodHNlbCkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGNhc2UgMHgwMDoN Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRyYWNlX3J4ODkwMF9zZXRfY291 bnRkb3duX3RpbWVyKDY0KTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHB0 aW1lcl9zZXRfbGltaXQocy0+Y291bnRkb3duX3RpbWVyLCA0MDk2IC8gNjQsDQo+ID4gPiA+ IDEpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgY2FzZSAweDAxOg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdHJhY2Vfcng4OTAwX3NldF9jb3VudGRvd25fdGltZXIoMSk7DQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdGltZXJfc2V0X2xpbWl0KHMtPmNvdW50ZG93 bl90aW1lciwgNDA5NiwgMSk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBjYXNlIDB4MDI6DQo+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9yeDg5MDBfc2V0X2NvdW50ZG93bl90aW1l cl9wZXJfbWludXRlKCk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdGlt ZXJfc2V0X2xpbWl0KHMtPmNvdW50ZG93bl90aW1lciwgNDA2OSAqIDYwLA0KPiA+ID4gPiAx KTsNCj4gPiA+IA0KPiA+ID4gcy80MDY5LzQwOTYvID8NCj4gPiA+IEFuZCB3aHkgNDA5Nj8g UGxlYXNlIGRlZmluZSBpdCBpbiBhIG1hY3JvLg0KPiA+IA0KPiA+IE9rDQo+ID4gDQo+ID4g PiANCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoGNhc2UgMHgwMzoNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRyYWNlX3J4ODkwMF9zZXRfY291bnRkb3duX3RpbWVyKDQwOTYpOw0KPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHRpbWVyX3NldF9saW1pdChzLT5jb3VudGRv d25fdGltZXIsIDEsIDEpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKGRhdGEgJiBFWFRfTUFTS19URSkgew0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGVuYWJsZV9jb3VudGRvd25fdGltZXIocyk7DQo+ ID4gPiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBzLT5udnJh bVtFWFRFTlNJT05fUkVHSVNURVJdID0gZGF0YTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+bnZy YW1bRVhUX0VYVEVOU0lPTl9SRUdJU1RFUl0gPSBkYXRhOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICt9DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFZhbGlkYXRlIHRoZSBjb250cm9sIHJl Z2lzdGVyIGFuZCBwZXJmb3JtIGFjdGlvbnMgYmFzZWQgb24NCj4gPiA+ID4gdGhlDQo+ID4g PiA+IGJpdHMNCj4gPiA+ID4gKyAqIEBwYXJhbSBzIHRoZSBSVEMgdG8gb3BlcmF0ZSBvbg0K PiA+ID4gPiArICogQHBhcmFtIGRhdGEgdGhlIG5ldyB2YWx1ZSBmb3IgdGhlIGNvbnRyb2wg cmVnaXN0ZXINCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9p ZCB1cGRhdGVfY29udHJvbF9yZWdpc3RlcihSWDg5MDBTdGF0ZSAqcywgdWludDhfdA0KPiA+ ID4gPiBkYXRhKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqB1aW50OF90IGRpZmZt YXNrID0gfnMtPm52cmFtW0NPTlRST0xfUkVHSVNURVJdICYgZGF0YTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArwqDCoMKgwqBpZiAoZGlmZm1hc2sgJiBDVFJMX01BU0tfV1AwKSB7DQo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgZGF0YSAmPSB+Q1RSTF9NQVNLX1dQMDsNCj4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqBxZW11X2xvZ19tYXNrKExPR19HVUVTVF9FUlJPUiwNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJBdHRlbXB0IHRvIHdyaXRlIHRvIHdyaXRl IHByb3RlY3RlZCBiaXQgJWQgaW4NCj4gPiA+ID4gY29udHJvbA0KPiA+ID4gPiByZWdpc3Rl ciIsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBDVFJMX1JFR19XUDApOw0K PiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKGRp ZmZtYXNrICYgQ1RSTF9NQVNLX1dQMSkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGRh dGEgJj0gfkNUUkxfTUFTS19XUDE7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcWVtdV9s b2dfbWFzayhMT0dfR1VFU1RfRVJST1IsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAiQXR0ZW1wdCB0byB3cml0ZSB0byB3cml0ZSBwcm90ZWN0ZWQgYml0ICVkIGluDQo+ ID4gPiA+IGNvbnRyb2wNCj4gPiA+ID4gcmVnaXN0ZXIiLA0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgQ1RSTF9SRUdfV1AxKTsNCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChkYXRhICYgQ1RSTF9NQVNLX1JFU0VUKSB7 DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZGF0YSAmPSB+Q1RSTF9NQVNLX1JFU0VUOw0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHJ4ODkwMF9yZXNldChERVZJQ0UocykpOw0KPiA+ ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKGRpZmZt YXNrICYgQ1RSTF9NQVNLX1VJRSkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoC8qIFVw ZGF0ZSBpbnRlcnJ1cHRzIHdlcmUgb2ZmIGFuZCBhcmUgbm93IG9uICovDQo+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHRtIG5vdzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoHRyYWNlX3J4ODkwMF9lbmFibGVfdXBkYXRlX3RpbWVyKCk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBxZW11X2dldF90aW1lZGF0ZSgmbm93 LCBzLT5vZmZzZXQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcy0+ bGFzdF91cGRhdGVfaW50ZXJydXB0X21pbnV0ZXMgPSBub3cudG1fbWluOw0KPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoHMtPmxhc3RfaW50ZXJydXB0X3NlY29uZHMgPSBub3cudG1fc2Vj Ow0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGVuYWJsZV90aW1lcihzKTsNCj4gPiA+ID4g K8KgwqDCoMKgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChkaWZmbWFzayAm IENUUkxfTUFTS19BSUUpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAvKiBBbGFybSBp bnRlcnJ1cHRzIHdlcmUgb2ZmIGFuZCBhcmUgbm93IG9uICovDQo+ID4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHRtIG5vdzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoHRyYWNlX3J4ODkwMF9lbmFibGVfYWxhcm0oKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoHFlbXVfZ2V0X3RpbWVkYXRlKCZub3csIHMtPm9mZnNldCk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzLT5sYXN0X2ludGVycnVw dF9zZWNvbmRzID0gbm93LnRtX3NlYzsNCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBzLT5sYXN0 X3VwZGF0ZV9pbnRlcnJ1cHRfbWludXRlcyBpcyBza2lwcGVkIGhlcmUgZm9yIGEgcmVhc29u Pw0KPiA+ID4gDQo+ID4gDQo+ID4gWWVzLCB0aGF0IHBlcnRhaW5zIHRvIHRoZSB1cGRhdGUg aW50ZXJydXB0cywgYW5kIHdlIGFyZSBkZWFsaW5nDQo+ID4gd2l0aA0KPiA+IHRoZSBhbGFy bSBoZXJlLg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZW5hYmxl X3RpbWVyKHMpOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8Kg wqDCoMKgaWYgKCEoZGF0YSAmIChDVFJMX01BU0tfVUlFIHwgQ1RSTF9NQVNLX0FJRSkpKSB7 DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZGlzYWJsZV90aW1lcihzKTsNCj4gPiA+ID4g K8KgwqDCoMKgfQ0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IENhbiBVSUUgYW5kIEFJRSBiZSBi b3RoIHNldD8gSWYgbm90LCAiZWxzZSIgY291bGQgYmUgdXNlZCBpbiB0d28NCj4gPiA+ICJp ZiINCj4gPiA+IGFib3ZlDQo+ID4gPiB0byBkb2N1bWVudCB0aGlzLg0KPiA+ID4gDQo+ID4g DQo+ID4gWWVzLg0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKg cy0+bnZyYW1bQ09OVFJPTF9SRUdJU1RFUl0gPSBkYXRhOw0KPiA+ID4gPiArwqDCoMKgwqBz LT5udnJhbVtFWFRfQ09OVFJPTF9SRUdJU1RFUl0gPSBkYXRhOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFZhbGlkYXRlIHRoZSBmbGFnIHJl Z2lzdGVyDQo+ID4gPiA+ICsgKiBAcGFyYW0gcyB0aGUgUlRDIHRvIG9wZXJhdGUgb24NCj4g PiA+ID4gKyAqIEBwYXJhbSBkYXRhIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBmbGFnIHJlZ2lz dGVyDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZhbGlkYXRlX2ZsYWdf cmVnaXN0ZXIoUlg4OTAwU3RhdGUgKnMsIHVpbnQ4X3QNCj4gPiA+ID4gKmRhdGEpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICvCoMKgwqDCoHVpbnQ4X3QgZGlmZm1hc2sgPSB+cy0+bnZyYW1b RkxBR19SRUdJU1RFUl0gJiAqZGF0YTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBp ZiAoZGlmZm1hc2sgJiBGTEFHX01BU0tfVkRFVCkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoCpkYXRhICY9IH5GTEFHX01BU0tfVkRFVDsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqBxZW11X2xvZ19tYXNrKExPR19HVUVTVF9FUlJPUiwNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCJPbmx5IDAgY2FuIGJlIHdyaXR0ZW4gdG8gVkRFVCBiaXQgJWQgaW4g dGhlIGZsYWcNCj4gPiA+ID4gcmVnaXN0ZXIiLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgRkxBR19SRUdfVkRFVCk7DQo+ID4gPiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArwqDCoMKgwqBpZiAoZGlmZm1hc2sgJiBGTEFHX01BU0tfVkxGKSB7DQo+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgKmRhdGEgJj0gfkZMQUdfTUFTS19WTEY7DQo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsDQo+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiT25seSAwIGNhbiBiZSB3cml0dGVu IHRvIFZMRiBiaXQgJWQgaW4gdGhlIGZsYWcNCj4gPiA+ID4gcmVnaXN0ZXIiLA0KPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRkxBR19SRUdfVkxGKTsNCj4gPiA+ID4gK8Kg wqDCoMKgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChkaWZmbWFzayAmIEZM QUdfTUFTS19VTlVTRURfMikgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCpkYXRhICY9 IH5GTEFHX01BU0tfVU5VU0VEXzI7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcWVtdV9s b2dfbWFzayhMT0dfR1VFU1RfRVJST1IsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAiT25seSAwIGNhbiBiZSB3cml0dGVuIHRvIHVudXNlZCBiaXQgJWQgaW4gdGhlDQo+ ID4gPiA+IGZsYWcNCj4gPiA+ID4gcmVnaXN0ZXIiLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgRkxBR19SRUdfVU5VU0VEXzIpOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgaWYgKGRpZmZtYXNrICYgRkxBR19NQVNLX1VO VVNFRF82KSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgKmRhdGEgJj0gfkZMQUdfTUFT S19VTlVTRURfNjsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBxZW11X2xvZ19tYXNrKExP R19HVUVTVF9FUlJPUiwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJPbmx5 IDAgY2FuIGJlIHdyaXR0ZW4gdG8gdW51c2VkIGJpdCAlZCBpbiB0aGUNCj4gPiA+ID4gZmxh Zw0KPiA+ID4gPiByZWdpc3RlciIsDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBGTEFHX1JFR19VTlVTRURfNik7DQo+ID4gPiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4gKw0K PiA+ID4gPiArwqDCoMKgwqBpZiAoZGlmZm1hc2sgJiBGTEFHX01BU0tfVU5VU0VEXzcpIHsN Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAqZGF0YSAmPSB+RkxBR19NQVNLX1VOVVNFRF83 Ow0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VS Uk9SLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIk9ubHkgMCBjYW4gYmUg d3JpdHRlbiB0byB1bnVzZWQgYml0ICVkIGluIHRoZQ0KPiA+ID4gPiBmbGFnDQo+ID4gPiA+ IHJlZ2lzdGVyIiwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZMQUdfUkVH X1VOVVNFRF83KTsNCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFRpY2sgdGhlIHBlciBzZWNvbmQgdGltZXIg KGNhbiBiZSBjYWxsZWQgbW9yZSBmcmVxdWVudGx5IGFzDQo+ID4gPiA+IGl0DQo+ID4gPiA+ IGVhcmx5IGV4aXRzDQo+ID4gPiA+ICsgKiBpZiB0aGUgd2FsbCBjbG9jayBoYXMgbm90IHBy b2dyZXNzZWQpDQo+ID4gPiA+ICsgKiBAcGFyYW0gb3BhcXVlIHRoZSBSVEMgdG8gdGljaw0K PiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCByeDg5MDBfdGltZXJfdGljayh2 b2lkICpvcGFxdWUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICvCoMKgwqDCoFJYODkwMFN0YXRl ICpzID0gKFJYODkwMFN0YXRlICopb3BhcXVlOw0KPiA+ID4gPiArwqDCoMKgwqBzdHJ1Y3Qg dG0gbm93Ow0KPiA+ID4gPiArwqDCoMKgwqBib29sIGZpcmVfaW50ZXJydXB0ID0gZmFsc2U7 DQo+ID4gPiA+ICvCoMKgwqDCoGJvb2wgYWxhcm1fd2Vla19kYXlfbWF0Y2hlczsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBxZW11X2dldF90aW1lZGF0ZSgmbm93LCBzLT5vZmZz ZXQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChub3cudG1fc2VjID09IHMt Pmxhc3RfaW50ZXJydXB0X3NlY29uZHMpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBy ZXR1cm47DQo+ID4gPiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKg wqBzLT5sYXN0X2ludGVycnVwdF9zZWNvbmRzID0gbm93LnRtX3NlYzsNCj4gPiA+ID4gKw0K PiA+ID4gPiArwqDCoMKgwqB0cmFjZV9yeDg5MDBfdGljaygpOw0KPiA+ID4gPiArDQo+ID4g PiA+ICvCoMKgwqDCoC8qIFVwZGF0ZSB0aW1lciBpbnRlcnJ1cHQgKi8NCj4gPiA+ID4gK8Kg wqDCoMKgaWYgKHMtPm52cmFtW0NPTlRST0xfUkVHSVNURVJdICYgQ1RSTF9NQVNLX1VJRSkg ew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGlmICgocy0+bnZyYW1bRVhURU5TSU9OX1JF R0lTVEVSXSAmIEVYVF9NQVNLX1VTRUwpICYmDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG5vdy50bV9taW4gIT0gcy0NCj4gPiA+ID4gPmxhc3RfdXBkYXRl X2ludGVycnVwdF9taW51dGVzKSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzLT5sYXN0X3VwZGF0ZV9pbnRlcnJ1cHRfbWludXRlcyA9IG5vdy50bV9taW47DQo+ID4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzLT5udnJhbVtGTEFHX1JFR0lTVEVSXSB8 PSBGTEFHX01BU0tfVUY7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmaXJl X2ludGVycnVwdCA9IHRydWU7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIGlm ICghKHMtPm52cmFtW0VYVEVOU0lPTl9SRUdJU1RFUl0gJg0KPiA+ID4gPiBFWFRfTUFTS19V U0VMKSkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogcGVyIHNlY29u ZCB1cGRhdGUgaW50ZXJydXB0ICovDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzLT5udnJhbVtGTEFHX1JFR0lTVEVSXSB8PSBGTEFHX01BU0tfVUY7DQo+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmaXJlX2ludGVycnVwdCA9IHRydWU7DQo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgfQ0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gK8KgwqDCoMKgLyogQWxhcm0gaW50ZXJydXB0ICovDQo+ID4gPiA+ICvCoMKgwqDC oGFsYXJtX3dlZWtfZGF5X21hdGNoZXMgPSBzLT5udnJhbVtBTEFSTV9XRUVLX0RBWV0gPT0N Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCgocy0+bnZyYW1bRVhURU5TSU9O X1JFR0lTVEVSXSAmIEVYVF9NQVNLX1dBREEpID8NCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0b19iY2Qobm93LnRtX21kYXkpIDoNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAxIDw8ICgo bm93LnRtX3dkYXkgKyBzLT53ZGF5X29mZnNldCkgJQ0KPiA+ID4gPiA3KSk7DQo+ID4gPiAN Cj4gPiA+IA0KPiA+ID4gMHgwMSBpcyBhIG1hc2sgb3IgZW51bSBvciBqdXN0ICIxIiB3aGlj aCBuZWVkcyB0byBiZSBzaGlmdGVkPw0KPiA+ID4gDQo+ID4gDQo+ID4gV2Vla2RheSBpcyBh IHdhbGtpbmcgYml0LCBJIHRoaW5rIGhleCBpcyB0aGUgbW9zdCBhcHByb3ByaWF0ZQ0KPiA+ IG5vdGF0aW9uLg0KPiA+IA0KPiA+ID4gQWxzbywgaXQgaXMgaGFyZCB0byByZWFkIGFuIGV4 cHJlc3Npb24gd2l0aCAiPSIsICI9PSIgYW5kICI/IiwNCj4gPiA+ICJpZiINCj4gPiA+IHdv dWxkDQo+ID4gPiBiZSBiZXR0ZXIgaGVyZSBpbWhvLg0KPiA+ID4gDQo+ID4gDQo+ID4gT2sg KGl0IHJlYWQgYSBsb3QgYmV0dGVyIGJlZm9yZSBpdCB3YXMgd3JhcHBlZCkuDQo+ID4gDQo+ ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBpZiAoKHMtPm52cmFtW0NPTlRS T0xfUkVHSVNURVJdICYgQ1RSTF9NQVNLX0FJRSkgJiYNCj4gPiA+ID4gbm93LnRtX3NlYw0K PiA+ID4gPiA9PSAwKSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgaWYgKHMtPm52cmFt W0FMQVJNX01JTlVURV0gPT0gdG9fYmNkKG5vdy50bV9taW4pICYmDQo+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMtPm52cmFtW0FMQVJNX0hPVVJdID09IHRv X2JjZChub3cudG1faG91cikgJiYNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYWxhcm1fd2Vla19kYXlfbWF0Y2hlcykgew0KPiA+ID4gDQo+ID4gPiBJdCBz aG91bGQgYmUgb25lICJpZiIsIG5vdCB0d28uDQo+ID4gPiANCj4gPiANCj4gPiBPaw0KPiA+ ID4gDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9yeDg5MDBfdHJp Z2dlcl9hbGFybSgpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcy0+bnZy YW1bRkxBR19SRUdJU1RFUl0gfD0gRkxBR19NQVNLX0FGOw0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZmlyZV9pbnRlcnJ1cHQgPSB0cnVlOw0KPiA+ID4gPiArwqDCoMKg wqDCoMKgwqDCoH0NCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICvC oMKgwqDCoGlmIChmaXJlX2ludGVycnVwdCkgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oHRyYWNlX3J4ODkwMF9maXJlX2ludGVycnVwdCgpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoHFlbXVfaXJxX3B1bHNlKHMtPmludGVycnVwdF9waW4pOw0KPiA+ID4gPiArwqDCoMKg wqB9DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICog RGlzYWJsZSB0aGUgcGVyIHNlY29uZCB0aW1lcg0KPiA+ID4gPiArICogQHBhcmFtIHMgdGhl IFJUQyB0byBvcGVyYXRlIG9uDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lk IGRpc2FibGVfdGltZXIoUlg4OTAwU3RhdGUgKnMpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICvC oMKgwqDCoHRyYWNlX3J4ODkwMF9kaXNhYmxlX3RpbWVyKCk7DQo+ID4gPiA+ICvCoMKgwqDC oHB0aW1lcl9zdG9wKHMtPnNlY190aW1lcik7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4g PiA+ID4gKy8qKg0KPiA+ID4gPiArICogRW5hYmxlIHRoZSBwZXIgc2Vjb25kIHRpbWVyDQo+ ID4gPiA+ICsgKiBAcGFyYW0gcyB0aGUgUlRDIHRvIG9wZXJhdGUgb24NCj4gPiA+ID4gKyAq Lw0KPiA+ID4gPiArc3RhdGljIHZvaWQgZW5hYmxlX3RpbWVyKFJYODkwMFN0YXRlICpzKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqB0cmFjZV9yeDg5MDBfZW5hYmxlX3RpbWVy KCk7DQo+ID4gPiA+ICvCoMKgwqDCoHB0aW1lcl9ydW4ocy0+c2VjX3RpbWVyLCAwKTsNCj4g PiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBIYW5kbGUg Rk9VVF9FTkFCTEUgKEZPRSkgbGluZQ0KPiA+ID4gPiArICogRW5hYmxlcy9kaXNhYmxlcyB0 aGUgRk9VVCBsaW5lDQo+ID4gPiA+ICsgKiBAcGFyYW0gb3BhcXVlIHRoZSBkZXZpY2UgaW5z dGFuY2UNCj4gPiA+ID4gKyAqIEBwYXJhbSBuIHRoZSBJUlEgbnVtYmVyDQo+ID4gPiA+ICsg KiBAcGFyYW0gbGV2ZWwgdHJ1ZSBpZiB0aGUgbGluZSBoYXMgYmVlbiByYWlzZWQNCj4gPiA+ ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcng4OTAwX2ZvdXRfZW5hYmxlX2hhbmRs ZXIodm9pZCAqb3BhcXVlLCBpbnQgbiwNCj4gPiA+ID4gaW50DQo+ID4gPiA+IGxldmVsKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqBSWDg5MDBTdGF0ZSAqcyA9IFJYODkwMChv cGFxdWUpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChsZXZlbCkgew0KPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoHRyYWNlX3J4ODkwMF9lbmFibGVfZm91dCgpOw0KPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoHB0aW1lcl9ydW4ocy0+Zm91dF90aW1lciwgMCk7DQo+ ID4gPiA+ICvCoMKgwqDCoH0gZWxzZSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgLyog ZGlzYWJsZSBmb3V0ICovDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgdHJhY2Vfcng4OTAw X2Rpc2FibGVfZm91dCgpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHB0aW1lcl9zdG9w KHMtPmZvdXRfdGltZXIpOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogVGljayB0aGUgRk9VVCB0aW1lcg0K PiA+ID4gPiArICogQHBhcmFtIG9wYXF1ZSB0aGUgZGV2aWNlIGluc3RhbmNlDQo+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9mb3V0X3RpY2sodm9pZCAqb3Bh cXVlKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqBSWDg5MDBTdGF0ZSAqcyA9IChS WDg5MDBTdGF0ZSAqKW9wYXF1ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqB0cmFj ZV9yeDg5MDBfZm91dF90b2dnbGUoKTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+Zm91dCA9ICFz LT5mb3V0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGlmIChzLT5mb3V0KSB7DQo+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcWVtdV9pcnFfcmFpc2Uocy0+Zm91dF9waW4pOw0K PiA+ID4gPiArwqDCoMKgwqB9IGVsc2Ugew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHFl bXVfaXJxX2xvd2VyKHMtPmZvdXRfcGluKTsNCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICog RGlzYWJsZSB0aGUgY291bnRkb3duIHRpbWVyDQo+ID4gPiA+ICsgKiBAcGFyYW0gcyB0aGUg UlRDIHRvIG9wZXJhdGUgb24NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQg ZGlzYWJsZV9jb3VudGRvd25fdGltZXIoUlg4OTAwU3RhdGUgKnMpDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICvCoMKgwqDCoHRyYWNlX3J4ODkwMF9kaXNhYmxlX2NvdW50ZG93bigpOw0KPiA+ ID4gPiArwqDCoMKgwqBwdGltZXJfc3RvcChzLT5jb3VudGRvd25fdGltZXIpOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIEVuYWJsZSB0aGUg Y291bnRkb3duIHRpbWVyDQo+ID4gPiA+ICsgKiBAcGFyYW0gcyB0aGUgUlRDIHRvIG9wZXJh dGUgb24NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQgZW5hYmxlX2NvdW50 ZG93bl90aW1lcihSWDg5MDBTdGF0ZSAqcykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDC oMKgdHJhY2Vfcng4OTAwX2VuYWJsZV9jb3VudGRvd24oKTsNCj4gPiA+ID4gK8KgwqDCoMKg cHRpbWVyX3J1bihzLT5jb3VudGRvd25fdGltZXIsIDApOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFRpY2sgdGhlIGNvdW50ZG93biB0aW1l cg0KPiA+ID4gPiArICogQHBhcmFtIG9wYXF1ZSB0aGUgZGV2aWNlIGluc3RhbmNlDQo+ID4g PiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9jb3VudGRvd25fdGljayh2 b2lkICpvcGFxdWUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICvCoMKgwqDCoFJYODkwMFN0YXRl ICpzID0gKFJYODkwMFN0YXRlICopb3BhcXVlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKg wqDCoHVpbnQxNl90IGNvdW50ID0gcy0+bnZyYW1bVElNRVJfQ09VTlRFUl8wXSArDQo+ID4g PiANCj4gPiA+IE5pdDogaW4gY2FzZXMgbGlrZSB0aGlzIGl0IGlzIHVzdWFsbHkgInwiLCBu b3QgIisiLg0KPiA+ID4gDQo+ID4gDQo+ID4gT2sNCj4gPiANCj4gPiA+IA0KPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKChzLT5udnJhbVtUSU1FUl9DT1VOVEVSXzFdICYg MHgwRikgPDwgOCk7DQo+ID4gPiA+ICvCoMKgwqDCoHRyYWNlX3J4ODkwMF9jb3VudGRvd25f dGljayhjb3VudCk7DQo+ID4gPiA+ICvCoMKgwqDCoGNvdW50LS07DQo+ID4gPiA+ICsNCj4g PiA+ID4gK8KgwqDCoMKgcy0+bnZyYW1bVElNRVJfQ09VTlRFUl8wXSA9ICh1aW50OF90KShj b3VudCAmIDB4MDBmZik7DQo+ID4gPiA+ICvCoMKgwqDCoHMtPm52cmFtW1RJTUVSX0NPVU5U RVJfMV0gPSAodWludDhfdCkoKGNvdW50ICYgMHgwZjAwKSA+Pg0KPiA+ID4gPiA4KTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBpZiAoY291bnQgPT0gMCkgew0KPiA+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoHRyYWNlX3J4ODkwMF9jb3VudGRvd25fZWxhcHNlZCgpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZGlzYWJsZV9jb3VudGRvd25fdGlt ZXIocyk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzLT5udnJhbVtG TEFHX1JFR0lTVEVSXSB8PSBGTEFHX01BU0tfVEY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqBpZiAocy0+bnZyYW1bQ09OVFJPTF9SRUdJU1RFUl0gJiBDVFJMX01B U0tfVElFKSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cmFjZV9yeDg5 MDBfZmlyZV9pbnRlcnJ1cHQoKTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHFlbXVfaXJxX3B1bHNlKHMtPmludGVycnVwdF9waW4pOw0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoH0NCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFZlcmlmeSB0aGUgY3VycmVudCB2b2x0YWdlIGFu ZCByYWlzZSBmbGFncyBpZiBpdCBpcyBsb3cNCj4gPiA+ID4gKyAqIEBwYXJhbSBzIHRoZSBS VEMgdG8gb3BlcmF0ZSBvbg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCBj aGVja192b2x0YWdlKFJYODkwMFN0YXRlICpzKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDC oMKgwqBpZiAoIShzLT5udnJhbVtCQUNLVVBfRlVOQ1RJT05dICYgQkFDS1VQX01BU0tfVkRF VE9GRikpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBpZiAocy0+c3VwcGx5X3ZvbHRh Z2UgPCAyLjBmKSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzLT5udnJh bVtGTEFHX1JFR0lTVEVSXSB8PSBGTEFHX01BU0tfVkRFVDsNCj4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBpZiAocy0+ c3VwcGx5X3ZvbHRhZ2UgPCAxLjZmKSB7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzLT5udnJhbVtGTEFHX1JFR0lTVEVSXSB8PSBGTEFHX01BU0tfVkxGOw0KPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFJlY2VpdmUgYSBieXRlIG9m IGRhdGEgZnJvbSBpMmMNCj4gPiA+ID4gKyAqIEBwYXJhbSBpMmMgdGhlIGkyYyBkZXZpY2Ug dGhhdCBpcyByZWNlaXZpbmcgZGF0YQ0KPiA+ID4gPiArICogQHBhcmFtIGRhdGEgdGhlIGRh dGEgdGhhdCB3YXMgcmVjZWl2ZWQNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIGlu dCByeDg5MDBfc2VuZChJMkNTbGF2ZSAqaTJjLCB1aW50OF90IGRhdGEpDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICvCoMKgwqDCoFJYODkwMFN0YXRlICpzID0gUlg4OTAwKGkyYyk7DQo+ID4g PiA+ICvCoMKgwqDCoHN0cnVjdCB0bSBub3c7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDC oMKgdHJhY2Vfcng4OTAwX2kyY19kYXRhX3JlY2VpdmUoZGF0YSk7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK8KgwqDCoMKgaWYgKHMtPmFkZHJfYnl0ZSkgew0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoHMtPnB0ciA9IGRhdGEgJiAoUlg4OTAwX05WUkFNX1NJWkUgLSAxKTsNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqB0cmFjZV9yeDg5MDBfcmVncHRyX3VwZGF0ZShzLT5wdHIp Ow0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHMtPmFkZHJfYnl0ZSA9IGZhbHNlOw0KPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgdHJhY2Vfcng4OTAwX3NldF9yZWdpc3Rlcihz LT5wdHIsIGRhdGEpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoHFlbXVfZ2V0X3Rp bWVkYXRlKCZub3csIHMtPm9mZnNldCk7DQo+ID4gPiA+ICvCoMKgwqDCoHN3aXRjaCAocy0+ cHRyKSB7DQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgU0VDT05EUzoNCj4gPiA+ID4gK8KgwqDC oMKgY2FzZSBFWFRfU0VDT05EUzoNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBub3cudG1f c2VjID0gZnJvbV9iY2QoZGF0YSAmIDB4N2YpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oHMtPm9mZnNldCA9IHFlbXVfdGltZWRhdGVfZGlmZigmbm93KTsNCj4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqBicmVhazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBjYXNlIE1J TlVURVM6DQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgRVhUX01JTlVURVM6DQo+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgbm93LnRtX21pbiA9IGZyb21fYmNkKGRhdGEgJiAweDdmKTsNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzLT5vZmZzZXQgPSBxZW11X3RpbWVkYXRlX2RpZmYo Jm5vdyk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK8KgwqDCoMKgY2FzZSBIT1VSUzoNCj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBFWFRf SE9VUlM6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgbm93LnRtX2hvdXIgPSBmcm9tX2Jj ZChkYXRhICYgMHgzZik7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcy0+b2Zmc2V0ID0g cWVtdV90aW1lZGF0ZV9kaWZmKCZub3cpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgV0VFS0RBWToNCj4gPiA+ ID4gK8KgwqDCoMKgY2FzZSBFWFRfV0VFS0RBWTogew0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoGludCB1c2VyX3dkYXkgPSBjdHozMihkYXRhKTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqAvKiBUaGUgZGF5IGZpZWxkIGlzIHN1cHBvc2VkIHRvIGNvbnRhaW4gYSB2YWx1ZSBp bg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgKiB0aGUgcmFuZ2UgMC02LiBPdGhlcndp c2UgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg Ki8NCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKGRhdGEpIHsNCj4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqBjYXNlIDB4MDE6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg Y2FzZSAweDAyOg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGNhc2UgMHgwNDoNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqBjYXNlIDB4MDg6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgY2FzZSAweDEwOg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGNhc2UgMHgyMDoNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBjYXNlIDB4NDA6DQo+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBkZWZhdWx0 Og0KPiA+ID4gDQo+ID4gPiBJbnN0ZWFkIG9mIHRoZSBzd2l0Y2g6DQo+ID4gPiANCj4gPiA+ IGlmIChkYXRhICYgMHg4MCkgew0KPiA+IA0KPiA+IFdlZWtkYXkgaXMgYSB3YWxraW5nIGJp dCwgdGhlIHByb3Bvc2VkIGNoZWNrIGFsbG93cyBpbnZhbGlkIHZhbHVlcy4NCj4gDQo+IA0K PiBBaCwgcmlnaHQsIHNob3VsZCBoYXZlIGJlZW4gaWYoZGF0YT09MHg4MCkuDQo+IA0KPiBB Y3R1YWxseSB5b3Ugd2FudCB0byB0ZXN0IHRoYXQNCj4gKCgxPDxjdHozMihkYXRhKSkgPT0g ZGF0YSkgJiYgKHVzZXJfd2RheSA8IDcpDQoNCkl0J3Mgc2hvcnQgYW5kIGNsZXZlciwgYnV0 IHRoZSBwcm9ibGVtIHdpdGggY2xldmVyIGNvZGUgaXMgaXQgcmVxdWlyZXMNCmNsZXZlciBw ZW9wbGUgdG8gdW5kZXJzdGFuZCBpdC4gSSBoYWQgdG8gc3RvcCBhbmQgdGhpbmsgYWJvdXQg d2hhdCB0aGF0DQp3YXMgZG9pbmcuDQoNCj4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLA0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiUlg4OTAwIC0gd2Vl a2RheSBkYXRhICcleCcgaXMgb3V0IG9mIHJhbmdlLCAiDQo+ID4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidW5kZWZpbmVkIGJlaGF2 aW9yIHdpbGwgcmVzdWx0IiwNCj4gPiA+ID4gZGF0YSk7DQo+ID4gPiANCj4gPiA+IA0KPiA+ ID4gYnR3IG90aGVyIGNhc2VzIG9mIHN3aXRjaCAocy0+cHRyKSBkbyBub3QgZG8gc3VjaCBh IGNoZWNrLCBqdXN0DQo+ID4gPiAiJjB4N2YiIG9yDQo+ID4gPiAiJjB4M2YiLCB3aHkgaXMg dGhlIHdlZWtkYXkgY2FzZSBzbyBzcGVjaWFsPw0KPiA+ID4gDQo+ID4gDQo+ID4gV2Vla2Rh eSBpcyBhIHdhbGtpbmcgYml0LCBub3QgYSBudW1iZXIuDQo+IA0KPiBJdCBpcyBzdGlsbCBu b3QgY2xlYXIgd2h5IHlvdSBjaGVjayBkYXRhIHZhbGlkaXR5IGZvciBhIHdlZWtkYXkgYnV0 DQo+IG5vdA0KPiBvdGhlciB0aGluZ3Mgd2hpY2ggeW91IGp1c3QgbWFzay4gSGFzICJob3Vy cyA9PSAweDNmIiBkZWZpbmVkDQo+IGJlaGF2aW91ciwNCj4gZm9yIGV4YW1wbGU/DQo+IA0K DQpUaGUgdmFsdWVzIHdoaWNoIGFyZSBtYXNrZWQgYXJlIEJDRCBlbmNvZGVkLCB0aGUgbWFz ayBpcyBzdWZmaWNpZW50IGZvcg0KZnVsbCB2YWxpZGF0aW9uIG9mIHZhbHVlLg0KDQo+IA0K PiA+IA0KPiA+ID4gDQo+ID4gPiANCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGJyZWFrOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqBzLT53ZWVrZGF5ID0gdXNlcl93ZGF5Ow0KPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoGJyZWFrOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8Kg wqDCoMKgY2FzZSBEQVk6DQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgRVhUX0RBWToNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqBub3cudG1fbWRheSA9IGZyb21fYmNkKGRhdGEgJiAweDNm KTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzLT5vZmZzZXQgPSBxZW11X3RpbWVkYXRl X2RpZmYoJm5vdyk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBNT05USDoNCj4gPiA+ID4gK8KgwqDCoMKgY2Fz ZSBFWFRfTU9OVEg6DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgbm93LnRtX21vbiA9IGZy b21fYmNkKGRhdGEgJiAweDFmKSAtIDE7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcy0+ b2Zmc2V0ID0gcWVtdV90aW1lZGF0ZV9kaWZmKCZub3cpOw0KPiA+ID4gPiArwqDCoMKgwqDC oMKgwqDCoGJyZWFrOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgWUVBUjoN Cj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBFWFRfWUVBUjoNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqBub3cudG1feWVhciA9IGZyb21fYmNkKGRhdGEpICsgMTAwOw0KPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoHMtPm9mZnNldCA9IHFlbXVfdGltZWRhdGVfZGlmZigmbm93KTsNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDC oMKgwqBjYXNlIEVYVEVOU0lPTl9SRUdJU1RFUjoNCj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBF WFRfRVhURU5TSU9OX1JFR0lTVEVSOg0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHVwZGF0 ZV9leHRlbnNpb25fcmVnaXN0ZXIocywgZGF0YSk7DQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgYnJlYWs7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBGTEFHX1JFR0lT VEVSOg0KPiA+ID4gPiArwqDCoMKgwqBjYXNlIEVYVF9GTEFHX1JFR0lTVEVSOg0KPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoHZhbGlkYXRlX2ZsYWdfcmVnaXN0ZXIocywgJmRhdGEpOw0K PiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgcy0+bnZyYW1bRkxBR19SRUdJ U1RFUl0gPSBkYXRhOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHMtPm52cmFtW0VYVF9G TEFHX1JFR0lTVEVSXSA9IGRhdGE7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqBjaGVja192b2x0YWdlKHMpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGJyZWFr Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoGNhc2UgQ09OVFJPTF9SRUdJU1RFUjoN Cj4gPiA+ID4gK8KgwqDCoMKgY2FzZSBFWFRfQ09OVFJPTF9SRUdJU1RFUjoNCj4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqB1cGRhdGVfY29udHJvbF9yZWdpc3RlcihzLCBkYXRhKTsNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDC oMKgwqBkZWZhdWx0Og0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHMtPm52cmFtW3MtPnB0 cl0gPSBkYXRhOw0KPiA+ID4gPiArwqDCoMKgwqB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8Kg wqDCoMKgaW5jX3JlZ3B0cihzKTsNCj4gPiA+ID4gK8KgwqDCoMKgcmV0dXJuIDA7DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogR2V0IHRoZSBk ZXZpY2UgdGVtcGVyYXR1cmUgaW4gQ2VsY2l1cyBhcyBhIHByb3BlcnR5DQo+ID4gPiA+ICsg KiBAcGFyYW0gb2JqIHRoZSBkZXZpY2UNCj4gPiA+ID4gKyAqIEBwYXJhbSB2DQo+ID4gPiA+ ICsgKiBAcGFyYW0gbmFtZSB0aGUgcHJvcGVydHkgbmFtZQ0KPiA+ID4gPiArICogQHBhcmFt IG9wYXF1ZQ0KPiA+ID4gPiArICogQHBhcmFtIGVycnAgYW4gZXJyb3Igb2JqZWN0IHRvIHBv cHVsYXRlIG9uIGZhaWx1cmUNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQg cng4OTAwX2dldF90ZW1wZXJhdHVyZShPYmplY3QgKm9iaiwgVmlzaXRvciAqdiwNCj4gPiA+ ID4gY29uc3QNCj4gPiA+ID4gY2hhciAqbmFtZSwNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8Kg wqDCoMKgUlg4OTAwU3RhdGUgKnMgPSBSWDg5MDAob2JqKTsNCj4gPiA+ID4gK8KgwqDCoMKg ZG91YmxlIHZhbHVlID0gKHMtPm52cmFtW1RFTVBFUkFUVVJFXSAqIDIuMGYgLSAxODcuMWYp IC8NCj4gPiA+ID4gMy4yMThmOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoHRyYWNl X3J4ODkwMF9yZWFkX3RlbXBlcmF0dXJlKHMtPm52cmFtW1RFTVBFUkFUVVJFXSwNCj4gPiA+ ID4gdmFsdWUpOw0KPiA+ID4gDQo+ID4gPiBOaXQ6IHMvcmVhZC9nZXQvDQo+ID4gPiANCj4g PiANCj4gPiBPaw0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKg dmlzaXRfdHlwZV9udW1iZXIodiwgbmFtZSwgJnZhbHVlLCBlcnJwKTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBTZXQgdGhlIGRldmljZSB0 ZW1wZXJhdHVyZSBpbiBDZWxjaXVzIGFzIGEgcHJvcGVydHkNCj4gPiA+ID4gKyAqIEBwYXJh bSBvYmogdGhlIGRldmljZQ0KPiA+ID4gPiArICogQHBhcmFtIHYNCj4gPiA+ID4gKyAqIEBw YXJhbSBuYW1lIHRoZSBwcm9wZXJ0eSBuYW1lDQo+ID4gPiA+ICsgKiBAcGFyYW0gb3BhcXVl DQo+ID4gPiA+ICsgKiBAcGFyYW0gZXJycCBhbiBlcnJvciBvYmplY3QgdG8gcG9wdWxhdGUg b24gZmFpbHVyZQ0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCByeDg5MDBf c2V0X3RlbXBlcmF0dXJlKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LA0KPiA+ID4gPiBjb25z dA0KPiA+ID4gPiBjaGFyICpuYW1lLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZvaWQg Km9wYXF1ZSwgRXJyb3IgKiplcnJwKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqBS WDg5MDBTdGF0ZSAqcyA9IFJYODkwMChvYmopOw0KPiA+ID4gPiArwqDCoMKgwqBFcnJvciAq bG9jYWxfZXJyID0gTlVMTDsNCj4gPiA+ID4gK8KgwqDCoMKgZG91YmxlIHRlbXA7IC8qIGRl Z3JlZXMgQ2VsY2l1cyAqLw0KPiA+ID4gPiArwqDCoMKgwqB2aXNpdF90eXBlX251bWJlcih2 LCBuYW1lLCAmdGVtcCwgJmxvY2FsX2Vycik7DQo+ID4gPiA+ICvCoMKgwqDCoGlmIChsb2Nh bF9lcnIpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBlcnJvcl9wcm9wYWdhdGUoZXJy cCwgbG9jYWxfZXJyKTsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+ID4g PiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4gK8KgwqDCoMKgaWYgKHRlbXAgPj0gMTAwIHx8IHRl bXAgPCAtNTgpIHsNCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBlcnJvcl9zZXRnKGVycnAs ICJ2YWx1ZSAlZsKwQyBpcyBvdXQgb2YgcmFuZ2UiLCB0ZW1wKTsNCj4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqByZXR1cm47DQo+ID4gPiA+ICvCoMKgwqDCoH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArwqDCoMKgwqBzLT5udnJhbVtURU1QRVJBVFVSRV0gPSAodWludDhfdCkgKCh0ZW1w ICogMy4yMThmICsNCj4gPiA+ID4gMTg3LjE5ZikgLw0KPiA+ID4gPiAyKTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArwqDCoMKgwqB0cmFjZV9yeDg5MDBfc2V0X3RlbXBlcmF0dXJlKHMtPm52 cmFtW1RFTVBFUkFUVVJFXSwgdGVtcCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICogR2V0IHRoZSBkZXZpY2Ugc3VwcGx5IHZvbHRhZ2UgYXMg YSBwcm9wZXJ0eQ0KPiA+ID4gPiArICogQHBhcmFtIG9iaiB0aGUgZGV2aWNlDQo+ID4gPiA+ ICsgKiBAcGFyYW0gdg0KPiA+ID4gPiArICogQHBhcmFtIG5hbWUgdGhlIHByb3BlcnR5IG5h bWUNCj4gPiA+ID4gKyAqIEBwYXJhbSBvcGFxdWUNCj4gPiA+ID4gKyAqIEBwYXJhbSBlcnJw IGFuIGVycm9yIG9iamVjdCB0byBwb3B1bGF0ZSBvbiBmYWlsdXJlDQo+ID4gPiA+ICsgKi8N Cj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9nZXRfdm9sdGFnZShPYmplY3QgKm9iaiwg VmlzaXRvciAqdiwgY29uc3QNCj4gPiA+ID4gY2hhcg0KPiA+ID4gPiAqbmFtZSwNCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gK8KgwqDCoMKgUlg4OTAwU3RhdGUgKnMgPSBSWDg5MDAob2JqKTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqB2aXNpdF90eXBlX251bWJlcih2LCBuYW1l LCAmcy0+c3VwcGx5X3ZvbHRhZ2UsIGVycnApOw0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IHJ4 ODkwMF9nZXRfdGVtcGVyYXR1cmUoKSBnb3QgYSB0cmFjZSBwb2ludCwgdGhpcyBvbmUgZGlk IG5vdCA7KQ0KPiA+ID4gDQo+ID4gDQo+ID4gVGhpcyBkaWQgbm90IHBlcmZvcm0gYSB0cmFu c2Zvcm1hdGlvbiBvbiB0aGUgZGF0YS4NCj4gPiANCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBTZXQgdGhlIGRldmljZSBzdXBwbHkgdm9sdGFn ZSBhcyBhIHByb3BlcnR5DQo+ID4gPiA+ICsgKiBAcGFyYW0gb2JqIHRoZSBkZXZpY2UNCj4g PiA+ID4gKyAqIEBwYXJhbSB2DQo+ID4gPiA+ICsgKiBAcGFyYW0gbmFtZSB0aGUgcHJvcGVy dHkgbmFtZQ0KPiA+ID4gPiArICogQHBhcmFtIG9wYXF1ZQ0KPiA+ID4gPiArICogQHBhcmFt IGVycnAgYW4gZXJyb3Igb2JqZWN0IHRvIHBvcHVsYXRlIG9uIGZhaWx1cmUNCj4gPiA+ID4g KyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcng4OTAwX3NldF92b2x0YWdlKE9iamVjdCAq b2JqLCBWaXNpdG9yICp2LCBjb25zdA0KPiA+ID4gPiBjaGFyDQo+ID4gPiA+ICpuYW1lLA0K PiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZvaWQgKm9wYXF1ZSwgRXJyb3IgKiplcnJwKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqBSWDg5MDBTdGF0ZSAqcyA9IFJYODkwMChv YmopOw0KPiA+ID4gPiArwqDCoMKgwqBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsNCj4gPiA+ ID4gK8KgwqDCoMKgZG91YmxlIHRlbXA7DQo+ID4gPiA+ICvCoMKgwqDCoHZpc2l0X3R5cGVf bnVtYmVyKHYsIG5hbWUsICZ0ZW1wLCAmbG9jYWxfZXJyKTsNCj4gPiA+ID4gK8KgwqDCoMKg aWYgKGxvY2FsX2Vycikgew0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGVycm9yX3Byb3Bh Z2F0ZShlcnJwLCBsb2NhbF9lcnIpOw0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoHJldHVy bjsNCj4gPiA+ID4gK8KgwqDCoMKgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoHMt PnN1cHBseV92b2x0YWdlID0gdGVtcDsNCj4gPiA+ID4gK8KgwqDCoMKgdHJhY2Vfcng4OTAw X3NldF92b2x0YWdlKHMtPnN1cHBseV92b2x0YWdlKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr wqDCoMKgwqBjaGVja192b2x0YWdlKHMpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogQ29uZmlndXJlIGRldmljZSBwcm9w ZXJ0aWVzDQo+ID4gPiA+ICsgKiBAcGFyYW0gb2JqIHRoZSBkZXZpY2UNCj4gPiA+ID4gKyAq Lw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcng4OTAwX2luaXRmbihPYmplY3QgKm9iaikNCj4g PiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDCoMKgb2JqZWN0X3Byb3BlcnR5X2FkZChvYmosICJ0 ZW1wZXJhdHVyZSIsICJudW1iZXIiLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcng4OTAwX2dldF90ZW1wZXJhdHVyZSwNCj4g PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJ4ODkwMF9zZXRfdGVtcGVyYXR1cmUsIE5VTEwsIE5VTEwsDQo+ID4gPiA+IE5VTEwpOw0K PiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoG9iamVjdF9wcm9wZXJ0eV9hZGQob2JqLCAi c3VwcGx5IHZvbHRhZ2UiLCAibnVtYmVyIiwNCj4gPiA+IA0KPiA+ID4gcy9zdXBwbHkgdm9s dGFnZS92b2x0YWdlLw0KPiA+ID4gQXMgaGF2aW5nIHNwYWNlcyBpbiBhIHByb3BlcnR5IG5h bWUgbWFrZXMgaXQgaGFyZGVyIHRvIHVzZSBpbiB0aGUNCj4gPiA+IFFFTVUgY2xpDQo+ID4g PiBhbmQgdGhlcmUgaXMganVzdCBvbmUgdm9sdGFnZSBzbyAic3VwcGx5IiBpcyBub3QgcmVh bGx5IG5lZWRlZC4NCj4gPiA+IA0KPiA+IA0KPiA+IE9rDQo+ID4gDQo+ID4gPiANCj4gPiA+ IA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcng4OTAwX2dldF92b2x0YWdlLA0KPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcng4OTAwX3NldF92b2x0YWdlLCBOVUxM LCBOVUxMLCBOVUxMKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgKiBSZXNldCB0aGUgZGV2aWNlDQo+ID4gPiA+ICsgKiBAcGFyYW0gZGV2IHRo ZSBSWDg5MDAgZGV2aWNlIHRvIHJlc2V0DQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRp YyB2b2lkIHJ4ODkwMF9yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQ0KPiA+ID4gPiArew0KPiA+ ID4gPiArwqDCoMKgwqBSWDg5MDBTdGF0ZSAqcyA9IFJYODkwMChkZXYpOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICvCoMKgwqDCoHRyYWNlX3J4ODkwMF9yZXNldCgpOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICvCoMKgwqDCoC8qIFRoZSBjbG9jayBpcyBydW5uaW5nIGFuZCBzeW5jaHJvbml6 ZWQgd2l0aCB0aGUgaG9zdCAqLw0KPiA+ID4gPiArwqDCoMKgwqBzLT5vZmZzZXQgPSAwOw0K PiA+ID4gPiArwqDCoMKgwqBzLT53ZWVrZGF5ID0gNzsgLyogU2V0IHRvIGFuIGludmFsaWQg dmFsdWUgKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBzLT5udnJhbVtFWFRFTlNJ T05fUkVHSVNURVJdID0gRVhUX01BU0tfVFNFTDE7DQo+ID4gPiA+ICvCoMKgwqDCoHMtPm52 cmFtW0NPTlRST0xfUkVHSVNURVJdID0gQ1RSTF9NQVNLX0NTRUwwOw0KPiA+ID4gPiArwqDC oMKgwqBzLT5udnJhbVtGTEFHX1JFR0lTVEVSXSAmPSBGTEFHX01BU0tfVkRFVCB8IEZMQUdf TUFTS19WTEY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+cHRyID0gMDsNCj4g PiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqB0cmFjZV9yeDg5MDBfcmVncHRyX3VwZGF0ZShz LT5wdHIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoHMtPmFkZHJfYnl0ZSA9IGZh bHNlOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAq IFJlYWxpemUgYW4gUlg4OTAwIGRldmljZSBpbnN0YW5jZQ0KPiA+ID4gPiArICogU2V0IHVw IHRpbWVycw0KPiA+ID4gPiArICogQ29uZmlndXJlIEdQSU8gbGluZXMNCj4gPiA+ID4gKyAq IEBwYXJhbSBkZXYgdGhlIGRldmljZSBpbnN0YW5jZSB0byByZWFsaXplDQo+ID4gPiA+ICsg KiBAcGFyYW0gZXJycCBhbiBlcnJvciBvYmplY3QgdG8gcG9wdWxhdGUgb24gZXJyb3INCj4g PiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQgcng4OTAwX3JlYWxpemUoRGV2aWNl U3RhdGUgKmRldiwgRXJyb3IgKiplcnJwKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKg wqBSWDg5MDBTdGF0ZSAqcyA9IFJYODkwMChkZXYpOw0KPiA+ID4gPiArwqDCoMKgwqBJMkNT bGF2ZSAqaTJjID0gSTJDX1NMQVZFKGRldik7DQo+ID4gPiA+ICvCoMKgwqDCoFFFTVVCSCAq Ymg7DQo+ID4gPiA+ICvCoMKgwqDCoGNoYXIgbmFtZVs2NF07DQo+ID4gPiA+ICsNCj4gPiA+ ID4gK8KgwqDCoMKgcy0+Zm91dCA9IGZhbHNlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKg wqDCoG1lbXNldChzLT5udnJhbSwgMCwgUlg4OTAwX05WUkFNX1NJWkUpOw0KPiA+ID4gPiAr wqDCoMKgwqAvKiBUZW1wZXJhdHVyZSBmb3JtdWxhdGlvbiBmcm9tIHRoZSBkYXRhc2hlZXQN Cj4gPiA+ID4gK8KgwqDCoMKgwqAqICggVEVNUFsgNzowIF0gKiAyIC0gMTg3LjE5KSAvIDMu MjE4DQo+ID4gPiA+ICvCoMKgwqDCoMKgKg0KPiA+ID4gPiArwqDCoMKgwqDCoCogU2V0IHRo ZSBpbml0aWFsIHN0YXRlIHRvIDI1IGRlZ3JlZXMgQ2VsY2l1cw0KPiA+ID4gPiArwqDCoMKg wqDCoCovDQo+ID4gPiA+ICvCoMKgwqDCoHMtPm52cmFtW1RFTVBFUkFUVVJFXSA9IDEzNTsg LyogKDI1ICogMy4yMTggKyAxODcuMTkpIC8gMg0KPiA+ID4gPiAqLw0KPiA+ID4gDQo+ID4g PiANCj4gPiA+IE1heSBiZQ0KPiA+ID4gI2RlZmluZSBSWDg5MDBfQ19UT19URU1QKGMpCSgo KGMpICogMy4yMTggKyAxODcuMTkpIC8gMikNCj4gPiA+ID8NCj4gPiA+IA0KPiA+ID4gWW91 IGRvIHRoaXMgbWF0aCBpbiBmZXcgcGxhY2VzLg0KPiA+IA0KPiA+IE9rDQo+ID4gDQo+ID4g PiANCj4gPiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBiaCA9IHFlbXVfYmhfbmV3KHJ4ODkw MF90aW1lcl90aWNrLCBzKTsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+c2VjX3RpbWVyID0gcHRp bWVyX2luaXQoYmgsIFBUSU1FUl9QT0xJQ1lfREVGQVVMVCk7DQo+ID4gPiA+ICvCoMKgwqDC oC8qIHdlIHRyaWdnZXIgdGhlIHRpbWVyIGF0IDEwSHogYW5kIGNoZWNrIGZvciByb2xsb3Zl ciwgYXMNCj4gPiA+ID4gdGhlDQo+ID4gPiA+IHFlbXUNCj4gPiA+ID4gK8KgwqDCoMKgwqAq IGNsb2NrIGRvZXMgbm90IGFkdmFuY2UgaW4gcmVhbHRpbWUgaW4gdGhlIHRlc3QNCj4gPiA+ ID4gZW52aXJvbm1lbnQsDQo+ID4gPiA+ICvCoMKgwqDCoMKgKiBsZWFkaW5nIHRvIHVuc3Rh YmxlIHRlc3QgcmVzdWx0cw0KPiA+ID4gPiArwqDCoMKgwqDCoCovDQo+ID4gPiA+ICvCoMKg wqDCoHB0aW1lcl9zZXRfZnJlcShzLT5zZWNfdGltZXIsIDEwKTsNCj4gPiA+ID4gK8KgwqDC oMKgcHRpbWVyX3NldF9saW1pdChzLT5zZWNfdGltZXIsIDEsIDEpOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICvCoMKgwqDCoGJoID0gcWVtdV9iaF9uZXcocng4OTAwX2ZvdXRfdGljaywgcyk7 DQo+ID4gPiA+ICvCoMKgwqDCoHMtPmZvdXRfdGltZXIgPSBwdGltZXJfaW5pdChiaCwgUFRJ TUVSX1BPTElDWV9ERUZBVUxUKTsNCj4gPiA+ID4gK8KgwqDCoMKgLyogZnJlcXVlbmN5IGRv dWJsZWQgdG8gZ2VuZXJhdGUgNTAlIGR1dHkgY3ljbGUgc3F1YXJlDQo+ID4gPiA+IHdhdmUg Ki8NCj4gPiA+ID4gK8KgwqDCoMKgcHRpbWVyX3NldF9mcmVxKHMtPmZvdXRfdGltZXIsIDMy NzY4ICogMik7DQo+ID4gPiA+ICvCoMKgwqDCoHB0aW1lcl9zZXRfbGltaXQocy0+Zm91dF90 aW1lciwgMSwgMSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgYmggPSBxZW11X2Jo X25ldyhyeDg5MDBfY291bnRkb3duX3RpY2ssIHMpOw0KPiA+ID4gPiArwqDCoMKgwqBzLT5j b3VudGRvd25fdGltZXIgPSBwdGltZXJfaW5pdChiaCwNCj4gPiA+ID4gUFRJTUVSX1BPTElD WV9ERUZBVUxUKTsNCj4gPiA+ID4gK8KgwqDCoMKgcHRpbWVyX3NldF9mcmVxKHMtPmNvdW50 ZG93bl90aW1lciwgNDA5Nik7DQo+ID4gPiA+ICvCoMKgwqDCoHB0aW1lcl9zZXRfbGltaXQo cy0+Y291bnRkb3duX3RpbWVyLCA0MDk2LCAxKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ ID4gPiANCj4gPiA+IA0KPiA+ID4gQW4gZXh0cmEgZW1wdHkgbGluZS4NCj4gPiA+IA0KPiA+ IA0KPiA+IFRoaXMgaXMgaW50ZW50aW9uYWwsIHRvIHNlcGFyYXRlIHRoZSBkaWZmZXJlbnQg b3BlcmF0aW9ucy4NCj4gDQo+IE9uZSBpcyBlbm91Z2ggdGhvdWdoLiBJZiB5b3UgdGhpbmsg dGhlIG5leHQgYmxvY2sgaXMgc28gc2VwYXJhdGUsDQo+IHRoZW4gZ2l2ZQ0KPiBpdCBhIGNv bW1lbnQuDQoNClRydWUNCg0KPiANCj4gPiANCj4gPiA+ID4gK8KgwqDCoMKgc25wcmludGYo bmFtZSwgc2l6ZW9mKG5hbWUpLCAicng4OTAwLWludGVycnVwdC1vdXQiKTsNCj4gPiA+ID4g K8KgwqDCoMKgcWRldl9pbml0X2dwaW9fb3V0X25hbWVkKCZpMmMtPnFkZXYsICZzLT5pbnRl cnJ1cHRfcGluLA0KPiA+ID4gPiBuYW1lLA0KPiA+ID4gPiAxKTsNCj4gPiA+ID4gK8KgwqDC oMKgdHJhY2Vfcng4OTAwX3Bpbl9uYW1lKCJJbnRlcnJ1cHQiLCBuYW1lKTsNCj4gPiA+IA0K PiA+ID4gSSB3b3VsZCBqdXN0IHBhc3MgYSBzdHJpbmcgdG8gcWRldl9pbml0X2dwaW9fb3V0 X25hbWVkKCkgYW5kDQo+ID4gPiBkaXRjaA0KPiA+ID4gQG5hbWUNCj4gPiA+IGZyb20gdHJh Y2Vwb2ludHMgYXMgdGhleSB1c2UgdW5pcXVlIHN0cmluZ3MgYW55d2F5LiBBbmQgSSdkIGFs c28NCj4gPiANCj4gPiBUaGUgc2FtZSB0cmFjZSBpcyByZXVzZWQNCj4gDQo+IFRoZSBmaXJz dCBwYXJhbWV0ZXIgb2YgcmV1c2VkIHRyYWNlIGlzIHVuaXF1ZSBhbnl3YXkuDQo+IA0KWWVz LCBidXQgdGhlIG5hbWUgdmFsdWUtYWRkcy4NCg0KPiANCj4gPiANCj4gPiA+IGRpdGNoDQo+ ID4gPiB0cmFjZV9yeDg5MDBfcGluX25hbWUgdHJhY2Vwb2ludHMgYXMgdGhleSBkbyBub3Qg c2VlbSB2ZXJ5IHVzZWZ1bA0KPiA+ID4gLQ0KPiA+ID4gdGhleSBkbw0KPiA+ID4gbm90IHJl cG9ydCBhbiBlcnJvciBvciBhIHN1Y2Nlc3MuDQo+ID4gDQo+ID4gSXQgbWFrZXMgaXQgZWFz aWVyIHdoZW4gZGVidWdnaW5nIHRvIHZhbGlkYXRlIHRoYXQgeW91ciBpZGVhIG9mIHRoZQ0K PiA+IG5hbWVkIGludGVycnVwdCBtYXRjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbi4NCj4gDQo+ IEkgYW0gbWlzc2luZyB0aGUgcG9pbnQgaGVyZS4gSWYgdGhlIHRyYWNlIHByaW50ZWQgYSBz dHJpbmcgZnJvbSBpMmMtDQo+ID5xZGV2LA0KPiB0aGVuIHllcywgdGhlIHRyYWNlIGNvdWxk IGJlIHVzZWQgdG8gdGVsbCBpZiB0aGUgYWN0dWFsIG5hbWUgbWF0Y2hlcw0KPiB3aGF0DQo+ IHlvdSBwYXNzZWQgdG8gcWRldl9pbml0X2dwaW9faW5fbmFtZWQoKSBidXQgaW4gdGhpcyBj b2RlIHRoZSB0cmFjZQ0KPiB3aWxsDQo+IGFsd2F5cyBwcmludCB0aGUgc3RyaW5nIHlvdSBz bnByaW50ZigpIDIgbGluZXMgYWJvdmUuIFF1aXRlIHVzZWxlc3MuDQo+IA0KDQpJdCB3YXMg dXNlZnVsIHRvIG1lIGluIGRldmVsb3BtZW50LCBpdCBtYXkgYmUgdXNlZnVsIGluIHRoZSBm dXR1cmUuDQpUaGluayBvZiBpdCBhcyBhbiBhbm5vdW5jZW1lbnQgb2YgInRoaXMgaXMgd2hl cmUgeW91IGNhbiBmaW5kIG1lIi4NCg0KPiA+ID4gPiArDQo+ID4gPiA+ICvCoMKgwqDCoHNu cHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgInJ4ODkwMC1mb3V0LWVuYWJsZSIpOw0KPiA+ ID4gPiArwqDCoMKgwqBxZGV2X2luaXRfZ3Bpb19pbl9uYW1lZCgmaTJjLT5xZGV2LA0KPiA+ ID4gPiByeDg5MDBfZm91dF9lbmFibGVfaGFuZGxlciwgbmFtZSwgMSk7DQo+ID4gPiA+ICvC oMKgwqDCoHRyYWNlX3J4ODkwMF9waW5fbmFtZSgiRm91dC1lbmFibGUiLCBuYW1lKTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArwqDCoMKgwqBzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSks ICJyeDg5MDAtZm91dCIpOw0KPiA+ID4gPiArwqDCoMKgwqBxZGV2X2luaXRfZ3Bpb19vdXRf bmFtZWQoJmkyYy0+cWRldiwgJnMtPmZvdXRfcGluLCBuYW1lLA0KPiA+ID4gPiAxKTsNCj4g PiA+ID4gK8KgwqDCoMKgdHJhY2Vfcng4OTAwX3Bpbl9uYW1lKCJGb3V0IiwgbmFtZSk7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK8KgwqDCoMKgcy0+c3VwcGx5X3ZvbHRhZ2UgPSAzLjNmOw0K PiA+ID4gPiArwqDCoMKgwqB0cmFjZV9yeDg5MDBfc2V0X3ZvbHRhZ2Uocy0+c3VwcGx5X3Zv bHRhZ2UpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4g KyAqIFNldCB1cCB0aGUgZGV2aWNlIGNhbGxiYWNrcw0KPiA+ID4gPiArICogQHBhcmFtIGts YXNzIHRoZSBkZXZpY2UgY2xhc3MNCj4gPiA+ID4gKyAqIEBwYXJhbSBkYXRhDQo+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9jbGFzc19pbml0KE9iamVjdENs YXNzICprbGFzcywgdm9pZCAqZGF0YSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK8KgwqDCoMKg RGV2aWNlQ2xhc3MgKmRjID0gREVWSUNFX0NMQVNTKGtsYXNzKTsNCj4gPiA+ID4gK8KgwqDC oMKgSTJDU2xhdmVDbGFzcyAqayA9IEkyQ19TTEFWRV9DTEFTUyhrbGFzcyk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK8KgwqDCoMKgay0+ZXZlbnQgPSByeDg5MDBfZXZlbnQ7DQo+ID4gPiA+ ICvCoMKgwqDCoGstPnJlY3YgPSByeDg5MDBfcmVjdjsNCj4gPiA+ID4gK8KgwqDCoMKgay0+ c2VuZCA9IHJ4ODkwMF9zZW5kOw0KPiA+ID4gPiArwqDCoMKgwqBkYy0+cmVhbGl6ZSA9IHJ4 ODkwMF9yZWFsaXplOw0KPiA+ID4gPiArwqDCoMKgwqBkYy0+cmVzZXQgPSByeDg5MDBfcmVz ZXQ7DQo+ID4gPiA+ICvCoMKgwqDCoGRjLT52bXNkID0gJnZtc3RhdGVfcng4OTAwOw0KPiA+ ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgY29uc3QgVHlwZUluZm8gcng4 OTAwX2luZm8gPSB7DQo+ID4gPiA+ICvCoMKgwqDCoC5uYW1lID0gVFlQRV9SWDg5MDAsDQo+ ID4gPiA+ICvCoMKgwqDCoC5wYXJlbnQgPSBUWVBFX0kyQ19TTEFWRSwNCj4gPiA+ID4gK8Kg wqDCoMKgLmluc3RhbmNlX3NpemUgPSBzaXplb2YoUlg4OTAwU3RhdGUpLA0KPiA+ID4gPiAr wqDCoMKgwqAuaW5zdGFuY2VfaW5pdCA9IHJ4ODkwMF9pbml0Zm4sDQo+ID4gPiA+ICvCoMKg wqDCoC5jbGFzc19pbml0ID0gcng4OTAwX2NsYXNzX2luaXQsDQo+ID4gPiA+ICt9Ow0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIFJlZ2lzdGVyIHRoZSBkZXZpY2Ug d2l0aCBRRU1VDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ4ODkwMF9y ZWdpc3Rlcl90eXBlcyh2b2lkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArwqDCoMKgwqB0eXBl X3JlZ2lzdGVyX3N0YXRpYygmcng4OTAwX2luZm8pOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICt0eXBlX2luaXQocng4OTAwX3JlZ2lzdGVyX3R5cGVzKQ0KPiA+ID4gPiBk aWZmIC0tZ2l0IGEvaHcvdGltZXIvcng4OTAwX3JlZ3MuaCBiL2h3L3RpbWVyL3J4ODkwMF9y ZWdzLmgNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAw MDAwMC4uY2ZlYzUzNQ0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL2h3 L3RpbWVyL3J4ODkwMF9yZWdzLmgNCj4gPiA+IA0KPiA+ID4gV2h5IGNhbm5vdCB0aGUgY29u dGVudCBvZiB0aGlzIGhlYWRlciBnbyB0byBody90aW1lci9yeDg5MDAuYyA/DQo+ID4gPiBE bw0KPiA+ID4geW91DQo+ID4gPiBleHBlY3Qgc29tZSBmdXR1cmUgY29kZSB0byB1c2UgdGhl c2UgZGVmaW5pdGlvbnM/IElmIHNvLCBwbGVhc2UNCj4gPiA+IGFkZCBhDQo+ID4gPiBub3Rl DQo+ID4gPiB0byB0aGUgY29tbWl0IGxvZy4NCj4gPiA+IA0KPiA+IA0KPiA+IFRoZXNlIGFy ZSBzaGFyZWQgd2l0aCB0aGUgdGVzdCBjb2RlLg0KPiANCj4gQWgsIG15IGJhZCwgSSBkaWQg Z3JlcCBhbmQgc29tZWhvdyBtaXNzZWQgdGVzdHMvcng4OTAwLXRlc3QuYy4NCj4gDQo+IA0K PiA+IA0KPiA+ID4gDQo+ID4gPiA+IEBAIC0wLDAgKzEsMTM5IEBADQo+ID4gPiA+ICsvKg0K PiA+ID4gPiArICogRXBzb24gUlg4OTAwU0EvQ0UgUmVhbHRpbWUgQ2xvY2sgTW9kdWxlDQo+ ID4gPiA+ICsgKg0KPiA+ID4gPiArICogQ29weXJpZ2h0IChjKSAyMDE2IElCTSBDb3Jwb3Jh dGlvbg0KPiA+ID4gPiArICogQXV0aG9yczoNCj4gPiA+ID4gKyAqwqDCoEFsYXN0YWlyIEQn U2lsdmEgPGFsYXN0YWlyQGQtc2lsdmEub3JnPg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAq IFRoaXMgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMIHZlcnNpb24gMiBvcg0KPiA+ ID4gPiBsYXRlci7CoMKgU2VlDQo+ID4gPiA+ICsgKiB0aGUgQ09QWUlORyBmaWxlIGluIHRo ZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIERhdGFz aGVldCBhdmFpbGFibGUgYXQ6DQo+ID4gPiA+ICsgKsKgwqBodHRwczovL3N1cHBvcnQuZXBz b24uYml6L3RkL2FwaS9kb2NfY2hlY2sucGhwP2RsPWFwcF9SWDg5DQo+ID4gPiA+IDAwQ0UN Cj4gPiA+ID4gJmxhbmc9ZW4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4g Kw0KPiA+ID4gPiArI2lmbmRlZiBSWDg5MDBfUkVHU19IDQo+ID4gPiA+ICsjZGVmaW5lIFJY ODkwMF9SRUdTX0gNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2luY2x1ZGUgInFlbXUvYml0b3Bz LmgiDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgUlg4OTAwX05WUkFNX1NJWkUgMHgy MA0KPiA+ID4gPiArDQo+ID4gPiA+ICt0eXBlZGVmIGVudW0gUlg4OTAwQWRkcmVzc2VzIHsN Cj4gPiA+ID4gK8KgwqDCoMKgU0VDT05EUyA9IDB4MDAsDQo+ID4gPiA+ICvCoMKgwqDCoE1J TlVURVMgPSAweDAxLA0KPiA+ID4gPiArwqDCoMKgwqBIT1VSUyA9IDB4MDIsDQo+ID4gPiA+ ICvCoMKgwqDCoFdFRUtEQVkgPSAweDAzLA0KPiA+ID4gPiArwqDCoMKgwqBEQVkgPSAweDA0 LA0KPiA+ID4gPiArwqDCoMKgwqBNT05USCA9IDB4MDUsDQo+ID4gPiA+ICvCoMKgwqDCoFlF QVIgPSAweDA2LA0KPiA+ID4gPiArwqDCoMKgwqBSQU0gPSAweDA3LA0KPiA+ID4gPiArwqDC oMKgwqBBTEFSTV9NSU5VVEUgPSAweDA4LA0KPiA+ID4gPiArwqDCoMKgwqBBTEFSTV9IT1VS ID0gMHgwOSwNCj4gPiA+ID4gK8KgwqDCoMKgQUxBUk1fV0VFS19EQVkgPSAweDBBLA0KPiA+ ID4gPiArwqDCoMKgwqBUSU1FUl9DT1VOVEVSXzAgPSAweDBCLA0KPiA+ID4gPiArwqDCoMKg wqBUSU1FUl9DT1VOVEVSXzEgPSAweDBDLA0KPiA+ID4gPiArwqDCoMKgwqBFWFRFTlNJT05f UkVHSVNURVIgPSAweDBELA0KPiA+ID4gPiArwqDCoMKgwqBGTEFHX1JFR0lTVEVSID0gMFgw RSwNCj4gPiA+ID4gK8KgwqDCoMKgQ09OVFJPTF9SRUdJU1RFUiA9IDBYMEYsDQo+ID4gPiA+ ICvCoMKgwqDCoEVYVF9TRUNPTkRTID0gMHgwMTAsIC8qIEFsaWFzIG9mIFNFQ09ORFMgKi8N Cj4gPiA+ID4gK8KgwqDCoMKgRVhUX01JTlVURVMgPSAweDExLCAvKiBBbGlhcyBvZiBNSU5V VEVTICovDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9IT1VSUyA9IDB4MTIsIC8qIEFsaWFzIG9m IEhPVVJTICovDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9XRUVLREFZID0gMHgxMywgLyogQWxp YXMgb2YgV0VFS0RBWSAqLw0KPiA+ID4gPiArwqDCoMKgwqBFWFRfREFZID0gMHgxNCwgLyog QWxpYXMgb2YgREFZICovDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9NT05USCA9IDB4MTUsIC8q IEFsaWFzIG9mIE1PTlRIICovDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9ZRUFSID0gMHgxNiwg LyogQWxpYXMgb2YgWUVBUiAqLw0KPiA+ID4gPiArwqDCoMKgwqBURU1QRVJBVFVSRSA9IDB4 MTcsDQo+ID4gPiA+ICvCoMKgwqDCoEJBQ0tVUF9GVU5DVElPTiA9IDB4MTgsDQo+ID4gPiA+ ICvCoMKgwqDCoE5PX1VTRV8xID0gMHgxOSwNCj4gPiA+ID4gK8KgwqDCoMKgTk9fVVNFXzIg PSAweDFBLA0KPiA+ID4gPiArwqDCoMKgwqBFWFRfVElNRVJfQ09VTlRFUl8wID0gMHgxQiwg LyogQWxpYXMgb2YgVElNRVJfQ09VTlRFUl8wICovDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9U SU1FUl9DT1VOVEVSXzEgPSAweDFDLCAvKiBBbGlhcyBvZiBUSU1FUl9DT1VOVEVSXzEgKi8N Cj4gPiA+ID4gK8KgwqDCoMKgRVhUX0VYVEVOU0lPTl9SRUdJU1RFUiA9IDB4MUQsIC8qIEFs aWFzIG9mDQo+ID4gPiA+IEVYVEVOU0lPTl9SRUdJU1RFUg0KPiA+ID4gPiAqLw0KPiA+ID4g PiArwqDCoMKgwqBFWFRfRkxBR19SRUdJU1RFUiA9IDBYMUUsIC8qIEFsaWFzIG9mIEZMQUdf UkVHSVNURVIgKi8NCj4gPiA+ID4gK8KgwqDCoMKgRVhUX0NPTlRST0xfUkVHSVNURVIgPSAw WDFGIC8qIEFsaWFzIG9mIENPTlRST0xfUkVHSVNURVINCj4gPiA+ID4gKi8NCj4gPiA+ID4g K30gUlg4OTAwQWRkcmVzc2VzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICt0eXBlZGVmIGVudW0g RXh0UmVnQml0cyB7DQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9SRUdfVFNFTDAgPSAwLA0KPiA+ ID4gPiArwqDCoMKgwqBFWFRfUkVHX1RTRUwxID0gMSwNCj4gPiA+ID4gK8KgwqDCoMKgRVhU X1JFR19GU0VMMCA9IDIsDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9SRUdfRlNFTDEgPSAzLA0K PiA+ID4gPiArwqDCoMKgwqBFWFRfUkVHX1RFID0gNCwNCj4gPiA+ID4gK8KgwqDCoMKgRVhU X1JFR19VU0VMID0gNSwNCj4gPiA+ID4gK8KgwqDCoMKgRVhUX1JFR19XQURBID0gNiwNCj4g PiA+ID4gK8KgwqDCoMKgRVhUX1JFR19URVNUID0gNw0KPiA+ID4gPiArfSBFeHRSZWdCaXRz Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICt0eXBlZGVmIGVudW0gRXh0UmVnTWFza3Mgew0KPiA+ ID4gPiArwqDCoMKgwqBFWFRfTUFTS19UU0VMMCA9IEJJVCgwKSwNCj4gPiA+ID4gK8KgwqDC oMKgRVhUX01BU0tfVFNFTDEgPSBCSVQoMSksDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9NQVNL X0ZTRUwwID0gQklUKDIpLA0KPiA+ID4gPiArwqDCoMKgwqBFWFRfTUFTS19GU0VMMSA9IEJJ VCgzKSwNCj4gPiA+ID4gK8KgwqDCoMKgRVhUX01BU0tfVEUgPSBCSVQoNCksDQo+ID4gPiA+ ICvCoMKgwqDCoEVYVF9NQVNLX1VTRUwgPSBCSVQoNSksDQo+ID4gPiA+ICvCoMKgwqDCoEVY VF9NQVNLX1dBREEgPSBCSVQoNiksDQo+ID4gPiA+ICvCoMKgwqDCoEVYVF9NQVNLX1RFU1Qg PSBCSVQoNykNCj4gPiA+ID4gK30gRXh0UmVnTWFza3M7DQo+ID4gPiA+ICsNCj4gPiA+ID4g K3R5cGVkZWYgZW51bSBDdHJsUmVnQml0cyB7DQo+ID4gPiA+ICvCoMKgwqDCoENUUkxfUkVH X1JFU0VUID0gMCwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9SRUdfV1AwID0gMSwNCj4gPiA+ ID4gK8KgwqDCoMKgQ1RSTF9SRUdfV1AxID0gMiwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9S RUdfQUlFID0gMywNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9SRUdfVElFID0gNCwNCj4gPiA+ ID4gK8KgwqDCoMKgQ1RSTF9SRUdfVUlFID0gNSwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9S RUdfQ1NFTDAgPSA2LA0KPiA+ID4gPiArwqDCoMKgwqBDVFJMX1JFR19DU0VMMSA9IDcNCj4g PiA+ID4gK30gQ3RybFJlZ0JpdHM7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3R5cGVkZWYgZW51 bSBDdHJsUmVnTWFzayB7DQo+ID4gPiA+ICvCoMKgwqDCoENUUkxfTUFTS19SRVNFVCA9IEJJ VCgwKSwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9NQVNLX1dQMCA9IEJJVCgxKSwNCj4gPiA+ ID4gK8KgwqDCoMKgQ1RSTF9NQVNLX1dQMSA9IEJJVCgyKSwNCj4gPiA+ID4gK8KgwqDCoMKg Q1RSTF9NQVNLX0FJRSA9IEJJVCgzKSwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9NQVNLX1RJ RSA9IEJJVCg0KSwNCj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9NQVNLX1VJRSA9IEJJVCg1KSwN Cj4gPiA+ID4gK8KgwqDCoMKgQ1RSTF9NQVNLX0NTRUwwID0gQklUKDYpLA0KPiA+ID4gPiAr wqDCoMKgwqBDVFJMX01BU0tfQ1NFTDEgPSBCSVQoNykNCj4gPiA+ID4gK30gQ3RybFJlZ01h c2s7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3R5cGVkZWYgZW51bSBGbGFnUmVnQml0cyB7DQo+ ID4gPiA+ICvCoMKgwqDCoEZMQUdfUkVHX1ZERVQgPSAwLA0KPiA+ID4gPiArwqDCoMKgwqBG TEFHX1JFR19WTEYgPSAxLA0KPiA+ID4gPiArwqDCoMKgwqBGTEFHX1JFR19VTlVTRURfMiA9 IDIsDQo+ID4gPiA+ICvCoMKgwqDCoEZMQUdfUkVHX0FGID0gMywNCj4gPiA+ID4gK8KgwqDC oMKgRkxBR19SRUdfVEYgPSA0LA0KPiA+ID4gPiArwqDCoMKgwqBGTEFHX1JFR19VRiA9IDUs DQo+ID4gPiA+ICvCoMKgwqDCoEZMQUdfUkVHX1VOVVNFRF82ID0gNiwNCj4gPiA+ID4gK8Kg wqDCoMKgRkxBR19SRUdfVU5VU0VEXzcgPSA3DQo+ID4gPiA+ICt9IEZsYWdSZWdCaXRzOw0K PiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIFJYODkwMF9JTlRFUlJVUFRfU09VUkNFUyA2 DQo+ID4gPiA+ICt0eXBlZGVmIGVudW0gRmxhZ1JlZ01hc2sgew0KPiA+ID4gPiArwqDCoMKg wqBGTEFHX01BU0tfVkRFVCA9IEJJVCgwKSwNCj4gPiA+ID4gK8KgwqDCoMKgRkxBR19NQVNL X1ZMRiA9IEJJVCgxKSwNCj4gPiA+ID4gK8KgwqDCoMKgRkxBR19NQVNLX1VOVVNFRF8yID0g QklUKDIpLA0KPiA+ID4gPiArwqDCoMKgwqBGTEFHX01BU0tfQUYgPSBCSVQoMyksDQo+ID4g PiA+ICvCoMKgwqDCoEZMQUdfTUFTS19URiA9IEJJVCg0KSwNCj4gPiA+ID4gK8KgwqDCoMKg RkxBR19NQVNLX1VGID0gQklUKDUpLA0KPiA+ID4gPiArwqDCoMKgwqBGTEFHX01BU0tfVU5V U0VEXzYgPSBCSVQoNiksDQo+ID4gPiA+ICvCoMKgwqDCoEZMQUdfTUFTS19VTlVTRURfNyA9 IEJJVCg3KQ0KPiA+ID4gPiArfSBGbGFnUmVnTWFzazsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr dHlwZWRlZiBlbnVtIEJhY2t1cFJlZ0JpdHMgew0KPiA+ID4gPiArwqDCoMKgwqBCQUNLVVBf UkVHX0JLU01QMCA9IDAsDQo+ID4gPiA+ICvCoMKgwqDCoEJBQ0tVUF9SRUdfQktTTVAxID0g MSwNCj4gPiA+ID4gK8KgwqDCoMKgQkFDS1VQX1JFR19TV09GRiA9IDIsDQo+ID4gPiA+ICvC oMKgwqDCoEJBQ0tVUF9SRUdfVkRFVE9GRiA9IDMNCj4gPiA+ID4gK30gQmFja3VwUmVnQml0 czsNCj4gPiA+ID4gKw0KPiA+ID4gPiArdHlwZWRlZiBlbnVtIEJhY2t1cFJlZ01hc2sgew0K PiA+ID4gPiArwqDCoMKgwqBCQUNLVVBfTUFTS19CS1NNUDAgPSBCSVQoMCksDQo+ID4gPiA+ ICvCoMKgwqDCoEJBQ0tVUF9NQVNLX0JLU01QMSA9IEJJVCgxKSwNCj4gPiA+ID4gK8KgwqDC oMKgQkFDS1VQX01BU0tfU1dPRkYgPSBCSVQoMiksDQo+ID4gPiA+ICvCoMKgwqDCoEJBQ0tV UF9NQVNLX1ZERVRPRkYgPSBCSVQoMykNCj4gPiA+ID4gK30gQmFja3VwUmVnTWFzazsNCj4g PiA+ID4gKw0KPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9ody90aW1l ci90cmFjZS1ldmVudHMgYi9ody90aW1lci90cmFjZS1ldmVudHMNCj4gPiA+ID4gaW5kZXgg MzQ5NWM0MS4uMDU3ZTQxNCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvaHcvdGltZXIvdHJhY2Ut ZXZlbnRzDQo+ID4gPiA+ICsrKyBiL2h3L3RpbWVyL3RyYWNlLWV2ZW50cw0KPiA+ID4gPiBA QCAtNDksMyArNDksMzQgQEAgYXNwZWVkX3RpbWVyX2N0cmxfcHVsc2VfZW5hYmxlKHVpbnQ4 X3QgaSwNCj4gPiA+ID4gYm9vbA0KPiA+ID4gPiBlbmFibGUpICJUaW1lciAlIiBQUkl1OCAi OiAlZCINCj4gPiA+ID4gwqBhc3BlZWRfdGltZXJfc2V0X2N0cmwyKHVpbnQzMl90IHZhbHVl KSAiVmFsdWU6IDB4JSIgUFJJeDMyDQo+ID4gPiA+IMKgYXNwZWVkX3RpbWVyX3NldF92YWx1 ZShpbnQgdGltZXIsIGludCByZWcsIHVpbnQzMl90IHZhbHVlKQ0KPiA+ID4gPiAiVGltZXIN Cj4gPiA+ID4gJWQgcmVnaXN0ZXIgJWQ6IDB4JSIgUFJJeDMyDQo+ID4gPiA+IMKgYXNwZWVk X3RpbWVyX3JlYWQodWludDY0X3Qgb2Zmc2V0LCB1bnNpZ25lZCBzaXplLCB1aW50NjRfdA0K PiA+ID4gPiB2YWx1ZSkNCj4gPiA+ID4gIkZyb20gMHglIiBQUkl4NjQgIjogb2Ygc2l6ZSAl dTogMHglIiBQUkl4NjQNCj4gPiA+ID4gKw0KPiA+ID4gPiArIyBody90aW1lci9yeDg5MDAu Yw0KPiA+ID4gPiArcng4OTAwX2NhcHR1cmVfY3VycmVudF90aW1lKGludCBob3VyLCBpbnQg bWludXRlLCBpbnQgc2Vjb25kLA0KPiA+ID4gPiBpbnQNCj4gPiA+ID4gd2Vla2RheSwgaW50 IG1kYXksIGludCBtb250aCwgaW50IHllYXIsIGludCByYXdfaG91cnMsIGludA0KPiA+ID4g PiByYXdfbWludXRlcywgaW50IHJhd19zZWNvbmRzLCBpbnQgcmF3X3dlZWtkYXksIGludCBy YXdfZGF5LCBpbnQNCj4gPiA+ID4gcmF3X21vbnRoLCBpbnQgcmF3X3llYXIpICJVcGRhdGUg Y3VycmVudCB0aW1lIHRvICUwMmQ6JTAyZDolMDJkDQo+ID4gPiA+ICVkDQo+ID4gPiA+ICVk LyVkLyVkICgweCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngpIg0KPiA+ID4gPiArcng4 OTAwX3JlZ3B0cl91cGRhdGUodWludDMyX3QgcHRyKSAiT3BlcmF0aW5nIG9uIHJlZ2lzdGVy DQo+ID4gPiA+IDB4JTAyeCINCj4gPiA+ID4gK3J4ODkwMF9yZWdwdHJfb3ZlcmZsb3codm9p ZCkgIlJlZ2lzdGVyIHBvaW50ZXIgaGFzIG92ZXJmbG93ZWQsDQo+ID4gPiA+IHdyYXBwaW5n IHRvIDAiDQo+ID4gPiA+ICtyeDg5MDBfZXZlbnRfd2Vla2RheShpbnQgd2Vla2RheSwgaW50 IHdlZWttYXNrLCBpbnQNCj4gPiA+ID4gd2Vla2RheV9vZmZzZXQpICJTZXQgd2Vla2RheSB0 byAlZCAoMHglMDJ4KSwgd2RheV9vZmZzZXQ9JWQiDQo+ID4gPiA+ICtyeDg5MDBfcmVhZF9y ZWdpc3RlcihpbnQgYWRkcmVzcywgaW50IHZhbCkgIlJlYWQgcmVnaXN0ZXIgMHgleA0KPiA+ ID4gPiA9DQo+ID4gPiA+IDB4JXgiDQo+ID4gPiA+ICtyeDg5MDBfc2V0X2ZvdXQoaW50IGh6 KSAiU2V0dGluZyBmb3V0IHRvICVkSHoiDQo+ID4gPiA+ICtyeDg5MDBfc2V0X2NvdW50ZG93 bl90aW1lcihpbnQgaHopICJTZXR0aW5nIGNvdW50ZG93biB0aW1lciB0bw0KPiA+ID4gPiAl ZA0KPiA+ID4gPiBIeiINCj4gPiA+ID4gK3J4ODkwMF9zZXRfY291bnRkb3duX3RpbWVyX3Bl cl9taW51dGUodm9pZCkgIlNldHRpbmcgY291bnRkb3duDQo+ID4gPiA+IHRpbWVyIHRvIHBl ciBtaW51dGUgdXBkYXRlcyINCj4gPiA+ID4gK3J4ODkwMF9lbmFibGVfdXBkYXRlX3RpbWVy KHZvaWQpICJFbmFibGluZyB1cGRhdGUgdGltZXIiDQo+ID4gPiA+ICtyeDg5MDBfZW5hYmxl X2FsYXJtKHZvaWQpICJFbmFibGluZyBhbGFybSINCj4gPiA+ID4gK3J4ODkwMF90cmlnZ2Vy X2FsYXJtKHZvaWQpICJUcmlnZ2VyaW5nIGFsYXJtIg0KPiA+ID4gPiArcng4OTAwX3RpY2so dm9pZCkgIlRpY2siDQo+ID4gPiANCj4gPiA+IFdoZW4gdHJhY2VzIGFyZSBwcmludGVkLCB0 aGUgd2hvbGUgbmFtZSBpcyBwcmludGVkIGFzIHdlbGwgc28geW91DQo+ID4gPiBjYW4NCj4g PiA+IGVhc2lseSBkcm9wICJUaWNrIiBhbmQganVzdCBtYWtlIGl0IGFuIGVtcHR5IHN0cmlu ZzoNCj4gPiA+IA0KPiA+ID4gK3J4ODkwMF90aWNrKHZvaWQpICIiDQo+ID4gPiANCj4gPiA+ IFRoaXMgY2FuIGJlIGRvbmUgdG8gbW9yZSB0aGFuIGEgaGFsZiBvZiB0cmFjZXMuDQo+ID4g DQo+ID4gVGhpcyB3b3VsZCBtYWtlIGl0IGhhcmRlciB0byBpbnRlcnByZXQsIGFzIG9uZSB3 b3VsZCB0aGVuIG5vdCBiZQ0KPiA+IGFibGUNCj4gPiB0byBza2ltIGRvd24gdGhlIG1lc3Nh Z2UgY29sdW1uLCBidXQgd291bGQgaW5zdGVhZCBoYXZlIHRvIGp1bXANCj4gPiBiZXR3ZWVu DQo+ID4gdGhlIGxvY2F0aW9uICYgbWVzc2FnZSB0byBkZXRlcm1pbmUgd2hhdCBoYXBwZW5l ZC4NCj4gDQo+IEp1bXAgYmV0d2VlbiBjb2x1bW5zPyBUaGVzZSBhcmUgcHJpbnRlZCBpbiBz dGRlcnIgbGlrZToNCj4gDQo+IDI0OTQ1QDE0ODA2NDMxOTUuMzQyMzQ1OnNwYXByX3BjaV9t c2lfc2V0dXAgZGV2Im5lYy11c2IteGhjaSIgdmVjdG9yDQo+IDE1LA0KPiBhZGRyPTQwMDAw MDAwMDAwDQo+IDI0OTQ1QDE0ODA2NDMxOTUuMzQyMzUxOnNwYXByX3BjaV9ydGFzX2libV9j aGFuZ2VfbXNpIGNmZ2FkZHIgMCBmdW5jDQo+IDQsDQo+IHJlcXVlc3RlZCAxNiwgZmlyc3Qg aXJxIDQxMDQNCj4gDQo+IEkgY29uZmlndXJlIHRyYWNlcyBhczoNCj4gLS1lbmFibGUtdHJh Y2UtYmFja2VuZD1sb2cNCj4gDQo+IG9yIChmb3Igb2xkZXIgUUVNVXMpDQo+IC0tZW5hYmxl LXRyYWNlLWJhY2tlbmQ9c3RkZXJyDQo+IA0KT2sNCg0KPiANCj4gPiA+ID4gK3J4ODkwMF9m aXJlX2ludGVycnVwdCh2b2lkKSAiUHVsc2luZyBpbnRlcnJ1cHQiDQo+ID4gPiA+ICtyeDg5 MDBfZGlzYWJsZV90aW1lcih2b2lkKSAiRGlzYWJsaW5nIHRpbWVyIg0KPiA+ID4gPiArcng4 OTAwX2VuYWJsZV90aW1lcih2b2lkKSAiRW5hYmxpbmcgdGltZXIiDQo+ID4gPiA+ICtyeDg5 MDBfZGlzYWJsZV9mb3V0KHZvaWQpICJEaXNhYmxpbmcgZm91dCINCj4gPiA+ID4gK3J4ODkw MF9lbmFibGVfZm91dCh2b2lkKSAiRW5hYmxpbmcgZm91dCINCj4gPiA+ID4gK3J4ODkwMF9m b3V0X3RvZ2dsZSh2b2lkKSAiVG9nZ2xpbmcgZm91dCINCj4gPiA+ID4gK3J4ODkwMF9kaXNh YmxlX2NvdW50ZG93bih2b2lkKSAiRGlzYWJsaW5nIGNvdW50ZG93biB0aW1lciINCj4gPiA+ ID4gK3J4ODkwMF9lbmFibGVfY291bnRkb3duKHZvaWQpICJFbmFibGluZyBjb3VudGRvd24g dGltZXIiDQo+ID4gPiA+ICtyeDg5MDBfY291bnRkb3duX3RpY2soaW50IGNvdW50KSAiQ291 bnRkb3duIHRpY2ssIGNvdW50PSVkIg0KPiA+ID4gPiArcng4OTAwX2NvdW50ZG93bl9lbGFw c2VkKHZvaWQpICJDb3VudGRvd24gZWxhcHNlZCINCj4gPiA+ID4gK3J4ODkwMF9pMmNfZGF0 YV9yZWNlaXZlKHVpbnQ4X3QgZGF0YSkgIlJlY2VpdmVkIEkyQyBkYXRhDQo+ID4gPiA+IDB4 JTAyeCINCj4gPiA+ID4gK3J4ODkwMF9zZXRfcmVnaXN0ZXIodWludDMyX3QgYWRkciwgdWlu dDhfdCBkYXRhKSAiU2V0IGRhdGENCj4gPiA+ID4gMHglMDJ4PTB4JTAyeCINCj4gPiA+ID4g K3J4ODkwMF9yZWFkX3RlbXBlcmF0dXJlKHVpbnQ4X3QgcmF3LCBkb3VibGUgdmFsKSAiUmVh ZA0KPiA+ID4gPiB0ZW1wZXJhdHVyZQ0KPiA+ID4gPiBwcm9wZXJ0eSwgMHgleCA9ICVmwrBD Ig0KPiA+ID4gDQo+ID4gPiBDYW4gYmUganVzdCAiMHgleCAlZsKwQyINCj4gPiA+IA0KPiA+ IA0KPiA+IEkgZG9uJ3Qgc2VlIHRoYXQgYXMgYW4gaW1wcm92ZW1lbnQuDQo+IA0KPiBXb3Jk cyAicmVhZCIgYW5kICJ0ZW1wZXJhdHVyZSIgZG8gbm90IGFwcGVhciB0d2ljZSwgdGhlIHdv cmQNCj4gInByb3BlcnR5IiBpcw0KPiB1c2VsZXNzIGhlcmUsIHRoZSBsaW5lIGdldHMgc2hv cnRlciB3aGljaCBtYXR0ZXJzIHdoZW4geW91IHJ1biBtYW55DQo+IHRlcm1pbmFscyBuZXh0 IHRvIGVhY2ggb3RoZXIuIFRoaXMgaXMgYW4gaW1wcm92ZW1lbnQuDQoNCkR1ZSB0byB0aGUg d3JhcHBpbmcsIGFsbCBJIHNhdyB3YXMgdGhhdCB0aGUgJz0nIHdhcyBtaXNzaW5nLCBPay4N Cg0KPiANCj4gTG9vayBhdCBibG9jay90cmFjZS1ldmVudHMgb3IgLi90cmFjZS1ldmVudHMg b3IgbmV0L3RyYWNlLWV2ZW50cyAtDQo+IHBlb3BsZQ0KPiB1c3VhbGx5IHRyeSBhdm9pZGlu ZyBkdXBsaWNhdGlvbnMuDQo+IA0KPiANCj4gPiANCj4gPiA+IA0KPiA+ID4gPiArcng4OTAw X3NldF90ZW1wZXJhdHVyZSh1aW50OF90IHJhdywgZG91YmxlIHZhbCkgIlNldA0KPiA+ID4g PiB0ZW1wZXJhdHVyZQ0KPiA+ID4gPiBwcm9wZXJ0eSwgMHgleCA9ICVmwrBDIg0KPiA+ID4g PiArcng4OTAwX3Jlc2V0KHZvaWQpICJSZXNldCINCj4gPiA+ID4gK3J4ODkwMF9waW5fbmFt ZShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lKSAiJyVzJyBwaW4NCj4gPiA+ ID4gaXMNCj4gPiA+ID4gJyVzJyINCj4gPiA+ID4gK3J4ODkwMF9zZXRfdm9sdGFnZShkb3Vi bGUgdm9sdGFnZSkgIkRldmljZSB2b2x0YWdlIHNldCB0byAlZiINCj4gPiA+ID4gDQo+ID4g DQo+ID4gVGhhbmtzIGZvciB0aGUgcmV2aWV3LCBpdCdzIHF1aXRlIGRldGFpbGVkICh3aGlj aCBpcyBncmVhdCkuIEkndmUNCj4gPiBhY3Rpb25lZCB0aGUgbm9uLWNvbnRlbmRlZCByZWNv bW1lbmRhdGlvbnMgYW5kIHdpbGwgcmVzdWJtaXQuDQo+IA0KPiANCj4gDQoNCg==