From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: hao.a.wu@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Thu, 11 Apr 2019 01:12:15 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2019 01:12:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,336,1549958400"; d="scan'208";a="149906372" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga002.jf.intel.com with ESMTP; 11 Apr 2019 01:12:13 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 11 Apr 2019 01:12:03 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 11 Apr 2019 01:12:03 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.92]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.21]) with mapi id 14.03.0415.000; Thu, 11 Apr 2019 16:12:01 +0800 From: "Wu, Hao A" To: "Gao, Zhichao" , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "devel@edk2.groups.io" CC: Bret Barkelew , Michael Turner , "Gao, Liming" , "Zeng, Star" , "Wang, Jian J" Subject: Re: [edk2] [PATCH] MdeModulePkg/CapsulePei: Update the debug code to print 64bit data Thread-Topic: [edk2] [PATCH] MdeModulePkg/CapsulePei: Update the debug code to print 64bit data Thread-Index: AQHU6RgJB8AzVUJP5kymfbu53rqSHaYoeywAgA2iD4CAAIrm0A== Date: Thu, 11 Apr 2019 08:12:00 +0000 Message-ID: References: <20190402055020.8656-1-zhichao.gao@intel.com> <3CE959C139B4C44DBEA1810E3AA6F9000B7C1722@SHSMSX101.ccr.corp.intel.com> In-Reply-To: <3CE959C139B4C44DBEA1810E3AA6F9000B7C1722@SHSMSX101.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: hao.a.wu@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHYW8sIFpoaWNoYW8NCj4gU2Vu dDogVGh1cnNkYXksIEFwcmlsIDExLCAyMDE5IDM6NDcgUE0NCj4gVG86IFBoaWxpcHBlIE1hdGhp ZXUtRGF1ZMOpOyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogQnJldCBCYXJrZWxldzsgTWlj aGFlbCBUdXJuZXI7IEdhbywgTGltaW5nOyBaZW5nLCBTdGFyOyBXdSwgSGFvIEE7IFdhbmcsDQo+ IEppYW4gSg0KPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL0NhcHN1 bGVQZWk6IFVwZGF0ZSB0aGUgZGVidWcNCj4gY29kZSB0byBwcmludCA2NGJpdCBkYXRhDQo+IA0K PiBTb3JyeSBmb3IgbWlzc2luZyB0aGlzIGVtYWlsLg0KPiANCj4gV2hpbGUgSSBjaGFuZ2UgdGhl IGNvZGUsIGl0IGNvdWxkbid0IHBhc3MgdGhlIFBhdGNoY2hlci5weSBiZWNhdXNlIG9mIHRoZQ0K PiAnRUZJX0RfIiB2ZXJzaW9uIE1BQ1JPLiBTbyBJIGNoYW5nZSBhbGwgdGhlIGRlYnVnIG1lc3Nh Z2UgaW4gdGhpcyBkcml2ZXIuDQo+IE1heWJlIHRoYXQgaXMgYSByZWR1bmRhbnQgd29yay4NCg0K SGVsbG8gWmhpY2hhbywNCg0KRm9yIHRoaXMgY2FzZSwgeW91IGNhbiB3b3JrIG91dCBhIGZpcnN0 IHBhdGNoIHRvIHJlcGxhY2UgYWxsIHRoZSBtYWNyb3MNCnN0YXJ0aW5nIHdpdGggJ0VGSV9EXycg d2l0aCAnREVCVUdfJy4gQW5kIGEgc2Vjb25kIHBhdGNoIHRvIGFkZHJlc3MgdGhlIHJlYWwNCmlz c3VlLg0KDQo+IA0KPiBUaGFua3MsDQo+IFpoaWNoYW8NCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSBbbWFpbHRvOnBo aWxtZEByZWRoYXQuY29tXQ0KPiA+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDIsIDIwMTkgMTE6MzYg UE0NCj4gPiBUbzogR2FvLCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+OyBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZw0KPiA+IENjOiBCcmV0IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1p Y3Jvc29mdC5jb20+OyBNaWNoYWVsIFR1cm5lcg0KPiA+IDxNaWNoYWVsLlR1cm5lckBtaWNyb3Nv ZnQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiBaZW5nLCBT dGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENI XSBNZGVNb2R1bGVQa2cvQ2Fwc3VsZVBlaTogVXBkYXRlIHRoZQ0KPiBkZWJ1Zw0KPiA+IGNvZGUg dG8gcHJpbnQgNjRiaXQgZGF0YQ0KPiA+DQo+ID4gSGkgQnJldCwNCj4gPg0KPiA+IE9uIDQvMi8x OSA3OjUwIEFNLCBaaGljaGFvIEdhbyB3cm90ZToNCj4gPiA+IEZyb206IEJyZXQgQmFya2VsZXcg PEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT4NCj4gPiA+DQo+ID4gPiBSRUY6IGh0dHBzOi8v YnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Nw0KPiA+ID4NCj4gPiA+ IEZvciBzb21lIHBvaW50ZXIgYW5kIFVJTlQ2NCBkYXRhLCB0aGUgZGVidWcgY29kZSBwcmludCB3 aXRoICcleCcuDQo+ID4gPiBXaGljaCB3b3VsZCBsb3NzIHRoZSB1cHBlciAzMmJpdCBkYXRhLiBT byB1cGRhdGUgJyV4JyB0byAnJWx4Jw0KPiA+ID4gZm9yIHRoZXNlIGRhdGEuDQo+ID4NCj4gPiBT b21lIGFyZSBVSU5UTi4gUGVyIExhc3psbyBhbnN3ZXIgb24gdGhpcyB0aHJlYWQ6DQo+ID4gaHR0 cHM6Ly9saXN0cy4wMS5vcmcvcGlwZXJtYWlsL2VkazItZGV2ZWwvMjAxNi1TZXB0ZW1iZXIvMDAy MDkzLmh0bWwNCj4gPiBmb3IgdGhvc2UsIGNhc3RpbmcgYW5kIGNoYW5naW5nIGZvcm1hdCBpcyB0 aGUgYWNjZXB0ZWQgd2F5Lg0KDQpBZnRlciBhIHNraW0gb2YgdGhlIHBhdGNoLCBJIHRoaW5rIHRo ZXJlIHNlZW1zIG9ubHkgMiBjYXNlcyB0aGF0IGFyZQ0KaGFuZGxlZCBpbiB0aGlzIHBhdGNoOg0K DQoxLiBVSU5UNjQNCkZvciB0aGlzIG9uZSwgdGhlIGNoYW5nZSBpbiB0aGlzIHBhdGNoIGxvb2tz IGdvb2QgdG8gbWUuDQoNCjIuIFBvaW50ZXJzDQpJIHRoaW5rIHdlIGNhbiBkaXJlY3RseSB1c2Ug JyVwJyBmb3IgcG9pbnRlcnMuDQoNCklmIEkgaGFwcGVuIHRvIG1pc3Mgb3RoZXIgY2FzZXMsIHBs ZWFzZSBkbyBmb2xsb3cgdGhlIGFib3ZlIGxpbmsgdG8gaGFuZGxlDQpVSU5UTi4NCg0KDQpCZXN0 IFJlZ2FyZHMsDQpIYW8gV3UNCg0KPiA+DQo+ID4gSG93ZXZlciB0aGlzIGlzIGEgY2hhbmdlLA0K PiA+DQo+ID4gPiBDaGFuZ2UgdGhlIERFQlVHIFByaW50TGV2ZWwgZnJvbSBFRklfRF8gdmVyc2lv biB0byBERUJVR18gdmVyc2lvbi4NCj4gPiA+IERFQlVHXyB2ZXJzaW9uIGlzIHJlY29tbWVuZGVk IHRvIHVzZS4NCj4gPg0KPiA+IGFuZCB0aGlzIGlzIGFub3RoZXIgY2hhbmdlLg0KPiA+DQo+ID4g U3BsaXR0aW5nIHRoaXMgcGF0Y2ggaW4gMiB3b3VsZCBtYWtlIGl0IG1vcmUgZGlnZXN0YWJsZS4N Cj4gPg0KPiA+ID4NCj4gPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29t Pg0KPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+IENjOiBTdGFyIFpl bmcgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdh b0BpbnRlbC5jb20+DQo+ID4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29m dC5jb20+DQo+ID4gPiBDYzogTWljaGFlbCBUdXJuZXIgPE1pY2hhZWwuVHVybmVyQG1pY3Jvc29m dC5jb20+DQo+ID4gPiBDYzogQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQu Y29tPg0KPiA+ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdy ZWVtZW50IDEuMQ0KPiA+ID4gU2lnbmVkLW9mZi1ieTogWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2Fv QGludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIC4uLi9DYXBzdWxlUGVpL0NvbW1vbi9DYXBz dWxlQ29hbGVzY2UuYyAgICAgICB8IDkwICsrKysrKysrKy0tLS0tLS0tLS0NCj4gPiA+ICAuLi4v VW5pdmVyc2FsL0NhcHN1bGVQZWkvVWVmaUNhcHN1bGUuYyAgICAgICAgfCA0NiArKysrKy0tLS0t DQo+ID4gPiAgLi4uL1VuaXZlcnNhbC9DYXBzdWxlUGVpL1g2NC9YNjRFbnRyeS5jICAgICAgIHwg IDIgKy0NCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0 aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9DYXBzdWxlUGVpL0NvbW1vbi9DYXBzdWxlQ29hbGVzY2UuYw0KPiA+ID4gYi9NZGVN b2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkvQ29tbW9uL0NhcHN1bGVDb2FsZXNjZS5jDQo+ ID4gPiBpbmRleCAzNTc1YTk0ZDBmLi4yYTUyNzA1NGJkIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL0NvbW1vbi9DYXBzdWxlQ29hbGVzY2UuYw0K PiA+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL0NvbW1vbi9D YXBzdWxlQ29hbGVzY2UuYw0KPiA+ID4gQEAgLTI1OCw3ICsyNTgsNyBAQCBWYWxpZGF0ZUNhcHN1 bGVCeU1lbW9yeVJlc291cmNlICgNCj4gPiA+ICAgIC8vIFNhbml0eSBDaGVjaw0KPiA+ID4gICAg Ly8NCj4gPiA+ICAgIGlmIChTaXplID4gTUFYX0FERFJFU1MpIHsNCj4gPiA+IC0gICAgREVCVUcg KChFRklfRF9FUlJPUiwgIkVSUk9SOiBTaXplKDB4JWx4KSA+IE1BWF9BRERSRVNTXG4iLA0KPiBT aXplKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogU2l6ZSgweCVs eCkgPiBNQVhfQUREUkVTU1xuIiwNCj4gPiA+ICsgU2l6ZSkpOw0KPiA+ID4gICAgICByZXR1cm4g RkFMU0U7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gQEAgLTI2Niw3ICsyNjYsNyBAQCBWYWxp ZGF0ZUNhcHN1bGVCeU1lbW9yeVJlc291cmNlICgNCj4gPiA+ICAgIC8vIFNhbml0eSBDaGVjaw0K PiA+ID4gICAgLy8NCj4gPiA+ICAgIGlmIChBZGRyZXNzID4gKE1BWF9BRERSRVNTIC0gU2l6ZSkp IHsNCj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBBZGRyZXNzKDB4JWx4 KSA+IChNQVhfQUREUkVTUyAtDQo+ID4gU2l6ZSgweCVseCkpXG4iLCBBZGRyZXNzLCBTaXplKSk7 DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjogQWRkcmVzcygweCVseCkg PiAoTUFYX0FERFJFU1MgLQ0KPiA+ID4gKyBTaXplKDB4JWx4KSlcbiIsIEFkZHJlc3MsIFNpemUp KTsNCj4gPiA+ICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IEBA IC0yODAsMTQgKzI4MCwxNCBAQCBWYWxpZGF0ZUNhcHN1bGVCeU1lbW9yeVJlc291cmNlICgNCj4g PiA+ICAgIGZvciAoSW5kZXggPSAwOyBNZW1vcnlSZXNvdXJjZVtJbmRleF0uUmVzb3VyY2VMZW5n dGggIT0gMDsgSW5kZXgrKykNCj4gew0KPiA+ID4gICAgICBpZiAoKEFkZHJlc3MgPj0gTWVtb3J5 UmVzb3VyY2VbSW5kZXhdLlBoeXNpY2FsU3RhcnQpICYmDQo+ID4gPiAgICAgICAgICAoKEFkZHJl c3MgKyBTaXplKSA8PSAoTWVtb3J5UmVzb3VyY2VbSW5kZXhdLlBoeXNpY2FsU3RhcnQgKw0KPiA+ IE1lbW9yeVJlc291cmNlW0luZGV4XS5SZXNvdXJjZUxlbmd0aCkpKSB7DQo+ID4gPiAtICAgICAg REVCVUcgKChFRklfRF9JTkZPLCAiQWRkcmVzcygweCVseCkgU2l6ZSgweCVseCkgaW4NCj4gPiBN ZW1vcnlSZXNvdXJjZVsweCV4XSAtIFN0YXJ0KDB4JWx4KSBMZW5ndGgoMHglbHgpXG4iLA0KPiA+ ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIkFkZHJlc3MoMHglbHgpIFNpemUoMHglbHgp IGluDQo+ID4gPiArIE1lbW9yeVJlc291cmNlWzB4JXhdIC0gU3RhcnQoMHglbHgpIExlbmd0aCgw eCVseClcbiIsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLCBTaXpl LA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgsIE1lbW9yeVJlc291cmNl W0luZGV4XS5QaHlzaWNhbFN0YXJ0LA0KPiA+IE1lbW9yeVJlc291cmNlW0luZGV4XS5SZXNvdXJj ZUxlbmd0aCkpOw0KPiA+ID4gICAgICAgIHJldHVybiBUUlVFOw0KPiA+ID4gICAgICB9DQo+ID4g PiAgICB9DQo+ID4gPg0KPiA+ID4gLSAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBBZGRy ZXNzKDB4JWx4KSBTaXplKDB4JWx4KSBub3QgaW4gYW55DQo+ID4gPiBNZW1vcnlSZXNvdXJjZVxu IiwgQWRkcmVzcywgU2l6ZSkpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9S OiBBZGRyZXNzKDB4JWx4KSBTaXplKDB4JWx4KSBub3QgaW4NCj4gYW55DQo+ID4gPiArIE1lbW9y eVJlc291cmNlXG4iLCBBZGRyZXNzLCBTaXplKSk7DQo+ID4gPiAgICByZXR1cm4gRkFMU0U7DQo+ ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IEBAIC0zMTIsNyArMzEyLDcgQEAgVmFsaWRhdGVDYXBzdWxl SW50ZWdyaXR5ICgNCj4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBz dWxlQ291bnQ7DQo+ID4gPiAgICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SICAgKlB0cjsN Cj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJWYWxpZGF0ZUNhcHN1bGVJbnRl Z3JpdHlcbiIpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIlZhbGlkYXRlQ2Fwc3Vs ZUludGVncml0eVxuIikpOw0KPiA+ID4NCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBHbyB0aHJv dWdoIHRoZSBsaXN0IHRvIGxvb2sgZm9yIGluY29uc2lzdGVuY2llcy4gQ2hlY2sgZm9yOg0KPiA+ ID4gQEAgLTMzMywxNSArMzMzLDE1IEBAIFZhbGlkYXRlQ2Fwc3VsZUludGVncml0eSAoDQo+ID4g PiAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IC0gIERFQlVHICgo RUZJX0RfSU5GTywgIlB0ciAtIDB4JXhcbiIsIFB0cikpOw0KPiA+ID4gLSAgREVCVUcgKChFRklf RF9JTkZPLCAiUHRyLT5MZW5ndGggLSAweCV4XG4iLCBQdHItPkxlbmd0aCkpOw0KPiA+ID4gLSAg REVCVUcgKChFRklfRF9JTkZPLCAiUHRyLT5VbmlvbiAtIDB4JXhcbiIsDQo+ID4gPiBQdHItPlVu aW9uLkNvbnRpbnVhdGlvblBvaW50ZXIpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywg IlB0ciAtIDB4JWx4XG4iLCAoVUlOVDY0KVB0cikpOyAgREVCVUcNCj4gPiA+ICsgKChERUJVR19J TkZPLCAiUHRyLT5MZW5ndGggLSAweCVseFxuIiwgUHRyLT5MZW5ndGgpKTsgIERFQlVHDQo+ID4g PiArICgoREVCVUdfSU5GTywgIlB0ci0+VW5pb24gLSAweCVseFxuIiwNCj4gPiA+ICsgUHRyLT5V bmlvbi5Db250aW51YXRpb25Qb2ludGVyKSk7DQo+ID4gPiAgICB3aGlsZSAoKFB0ci0+TGVuZ3Ro ICE9IDApIHx8IChQdHItPlVuaW9uLkNvbnRpbnVhdGlvblBvaW50ZXIgIT0NCj4gPiAoRUZJX1BI WVNJQ0FMX0FERFJFU1MpIChVSU5UTikgTlVMTCkpIHsNCj4gPiA+ICAgICAgLy8NCj4gPiA+ICAg ICAgLy8gTWFrZSBzdXJlIHRoZSBkZXNjcmlwdG9yIGlzIGFsaWduZWQgYXQgVUlOVDY0IGluIG1l bW9yeQ0KPiA+ID4gICAgICAvLw0KPiA+ID4gICAgICBpZiAoKFVJTlROKSBQdHIgJiAoc2l6ZW9m KFVJTlQ2NCkgLSAxKSkgew0KPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJP UjogQmxvY2tMaXN0IGFkZHJlc3MgZmFpbGVkIGFsaWdubWVudA0KPiA+IGNoZWNrXG4iKSk7DQo+ ID4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBCbG9ja0xpc3QgYWRkcmVz cyBmYWlsZWQgYWxpZ25tZW50DQo+ID4gPiArIGNoZWNrXG4iKSk7DQo+ID4gPiAgICAgICAgcmV0 dXJuIE5VTEw7DQo+ID4gPiAgICAgIH0NCj4gPiA+DQo+ID4gPiBAQCAtMzU0LDkgKzM1NCw5IEBA IFZhbGlkYXRlQ2Fwc3VsZUludGVncml0eSAoDQo+ID4gPiAgICAgICAgaWYgKCFWYWxpZGF0ZUNh cHN1bGVCeU1lbW9yeVJlc291cmNlIChNZW1vcnlSZXNvdXJjZSwNCj4gPiAoRUZJX1BIWVNJQ0FM X0FERFJFU1MpIChVSU5UTikgUHRyLCBzaXplb2YNCj4gPiAoRUZJX0NBUFNVTEVfQkxPQ0tfREVT Q1JJUFRPUikpKSB7DQo+ID4gPiAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ICAgICAgICB9 DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiUHRyKEMpIC0gMHgleFxuIiwgUHRy KSk7DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiUHRyLT5MZW5ndGggLSAweCV4 XG4iLCBQdHItPkxlbmd0aCkpOw0KPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlB0 ci0+VW5pb24gLSAweCV4XG4iLCBQdHItDQo+ID4gPlVuaW9uLkNvbnRpbnVhdGlvblBvaW50ZXIp KTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJQdHIoQykgLSAweCVseFxuIiwg KFVJTlQ2NClQdHIpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJQdHItPkxl bmd0aCAtIDB4JWx4XG4iLCBQdHItPkxlbmd0aCkpOw0KPiA+ID4gKyAgICAgIERFQlVHICgoREVC VUdfSU5GTywgIlB0ci0+VW5pb24gLSAweCVseFxuIiwNCj4gPiA+ICsgUHRyLT5Vbmlvbi5Db250 aW51YXRpb25Qb2ludGVyKSk7DQo+ID4gPiAgICAgIH0gZWxzZSB7DQo+ID4gPiAgICAgICAgaWYg KCFWYWxpZGF0ZUNhcHN1bGVCeU1lbW9yeVJlc291cmNlIChNZW1vcnlSZXNvdXJjZSwgUHRyLQ0K PiA+ID5Vbmlvbi5EYXRhQmxvY2ssIFB0ci0+TGVuZ3RoKSkgew0KPiA+ID4gICAgICAgICAgcmV0 dXJuIE5VTEw7DQo+ID4gPiBAQCAtMzc1LDE0ICszNzUsMTQgQEAgVmFsaWRhdGVDYXBzdWxlSW50 ZWdyaXR5ICgNCj4gPiA+ICAgICAgICAgIC8vIFNhbml0eSBjaGVjaw0KPiA+ID4gICAgICAgICAg Ly8NCj4gPiA+ICAgICAgICAgIGlmIChQdHItPkxlbmd0aCA8IHNpemVvZihFRklfQ0FQU1VMRV9I RUFERVIpKSB7DQo+ID4gPiAtICAgICAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJPUjog UHRyLT5MZW5ndGgoMHglbHgpIDwNCj4gPiBzaXplb2YoRUZJX0NBUFNVTEVfSEVBREVSKVxuIiwg UHRyLT5MZW5ndGgpKTsNCj4gPiA+ICsgICAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVS Uk9SOiBQdHItPkxlbmd0aCgweCVseCkgPA0KPiA+ID4gKyBzaXplb2YoRUZJX0NBUFNVTEVfSEVB REVSKVxuIiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ ID4gPiAgICAgICAgICB9DQo+ID4gPiAgICAgICAgICAvLw0KPiA+ID4gICAgICAgICAgLy8gTWFr ZSBzdXJlIEhlYWRlclNpemUgZmllbGQgaXMgdmFsaWQNCj4gPiA+ICAgICAgICAgIC8vDQo+ID4g PiAgICAgICAgICBpZiAoQ2Fwc3VsZUhlYWRlci0+SGVhZGVyU2l6ZSA+IENhcHN1bGVIZWFkZXIt PkNhcHN1bGVJbWFnZVNpemUpDQo+ID4gew0KPiA+ID4gLSAgICAgICAgICBERUJVRyAoKEVGSV9E X0VSUk9SLCAiRVJST1I6IENhcHN1bGVIZWFkZXItDQo+ID5IZWFkZXJTaXplKDB4JXgpID4NCj4g PiBDYXBzdWxlSGVhZGVyLT5DYXBzdWxlSW1hZ2VTaXplKDB4JXgpXG4iLCBDYXBzdWxlSGVhZGVy LQ0KPiA+SGVhZGVyU2l6ZSwNCj4gPiBDYXBzdWxlSGVhZGVyLT5DYXBzdWxlSW1hZ2VTaXplKSk7 DQo+ID4gPiArICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFUlJPUjoNCj4gPiA+ICsg Q2Fwc3VsZUhlYWRlci0+SGVhZGVyU2l6ZSgweCV4KSA+DQo+ID4gPiArIENhcHN1bGVIZWFkZXIt PkNhcHN1bGVJbWFnZVNpemUoMHgleClcbiIsIENhcHN1bGVIZWFkZXItDQo+ID4gPkhlYWRlclNp emUsDQo+ID4gPiArIENhcHN1bGVIZWFkZXItPkNhcHN1bGVJbWFnZVNpemUpKTsNCj4gPiA+ICAg ICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiAgICAgICAgICB9DQo+ID4gPiAgICAgICAgICBp ZiAoSXNDYXBzdWxlQ29ycnVwdGVkIChDYXBzdWxlSGVhZGVyKSkgeyBAQCAtMzk1LDcgKzM5NSw3 IEBADQo+ID4gPiBWYWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHkgKA0KPiA+ID4gICAgICAgIGlmIChD YXBzdWxlU2l6ZSA+PSBQdHItPkxlbmd0aCkgew0KPiA+ID4gICAgICAgICAgQ2Fwc3VsZVNpemUg PSBDYXBzdWxlU2l6ZSAtIFB0ci0+TGVuZ3RoOw0KPiA+ID4gICAgICAgIH0gZWxzZSB7DQo+ID4g PiAtICAgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IENhcHN1bGVTaXplKDB4JWx4 KSA8IFB0ci0NCj4gPiA+TGVuZ3RoKDB4JWx4KVxuIiwgQ2Fwc3VsZVNpemUsIFB0ci0+TGVuZ3Ro KSk7DQo+ID4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IENhcHN1bGVT aXplKDB4JWx4KSA8DQo+ID4gPiArIFB0ci0+TGVuZ3RoKDB4JWx4KVxuIiwgQ2Fwc3VsZVNpemUs IFB0ci0+TGVuZ3RoKSk7DQo+ID4gPiAgICAgICAgICAvLw0KPiA+ID4gICAgICAgICAgLy8gU2Fu aXR5IGNoZWNrDQo+ID4gPiAgICAgICAgICAvLw0KPiA+ID4gQEAgLTQwOSw5ICs0MDksOSBAQCBW YWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHkgKA0KPiA+ID4gICAgICAgIGlmICghVmFsaWRhdGVDYXBz dWxlQnlNZW1vcnlSZXNvdXJjZSAoTWVtb3J5UmVzb3VyY2UsDQo+ID4gKEVGSV9QSFlTSUNBTF9B RERSRVNTKSAoVUlOVE4pIFB0ciwgc2l6ZW9mDQo+ID4gKEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NS SVBUT1IpKSkgew0KPiA+ID4gICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiAgICAgICAgfQ0K PiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlB0cihCKSAtIDB4JXhcbiIsIFB0cikp Ow0KPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIlB0ci0+TGVuZ3RoIC0gMHgleFxu IiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+IC0gICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJQdHIt PlVuaW9uIC0gMHgleFxuIiwgUHRyLQ0KPiA+ID5Vbmlvbi5Db250aW51YXRpb25Qb2ludGVyKSk7 DQo+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiUHRyKEIpIC0gMHglbHhcbiIsIChV SU5UNjQpUHRyKSk7DQo+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiUHRyLT5MZW5n dGggLSAweCVseFxuIiwgUHRyLT5MZW5ndGgpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVH X0lORk8sICJQdHItPlVuaW9uIC0gMHglbHhcbiIsDQo+ID4gPiArIFB0ci0+VW5pb24uQ29udGlu dWF0aW9uUG9pbnRlcikpOw0KPiA+ID4gICAgICB9DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4g QEAgLTQxOSw3ICs0MTksNyBAQCBWYWxpZGF0ZUNhcHN1bGVJbnRlZ3JpdHkgKA0KPiA+ID4gICAg ICAvLw0KPiA+ID4gICAgICAvLyBObyBhbnkgY2Fwc3VsZSBpcyBmb3VuZCBpbiBCbG9ja0xpc3QN Cj4gPiA+ICAgICAgLy8NCj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBD YXBzdWxlQ291bnQoMHgleCkgPT0gMFxuIiwNCj4gPiBDYXBzdWxlQ291bnQpKTsNCj4gPiA+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlQ291bnQoMHgleCkgPT0gMFxu IiwNCj4gPiA+ICsgQ2Fwc3VsZUNvdW50KSk7DQo+ID4gPiAgICAgIHJldHVybiBOVUxMOw0KPiA+ ID4gICAgfQ0KPiA+ID4NCj4gPiA+IEBAIC00MjcsNyArNDI3LDcgQEAgVmFsaWRhdGVDYXBzdWxl SW50ZWdyaXR5ICgNCj4gPiA+ICAgICAgLy8NCj4gPiA+ICAgICAgLy8gQ2Fwc3VsZSBkYXRhIGlz IGluY29tcGxldGUuDQo+ID4gPiAgICAgIC8vDQo+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJS T1IsICJFUlJPUjogQ2Fwc3VsZVNpemUoMHglbHgpICE9IDBcbiIsDQo+ID4gQ2Fwc3VsZVNpemUp KTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6ZSgw eCVseCkgIT0gMFxuIiwNCj4gPiA+ICsgQ2Fwc3VsZVNpemUpKTsNCj4gPiA+ICAgICAgcmV0dXJu IE5VTEw7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gQEAgLTUxNSw3ICs1MTUsNyBAQCBSZWxv Y2F0ZUJsb2NrRGVzY3JpcHRvcnMgKA0KPiA+ID4gICAgICAgICAgfQ0KPiA+ID4NCj4gPiA+ICAg ICAgICAgIENvcHlNZW0gKChWT0lEICopIFJlbG9jQnVmZmVyLCAoVk9JRCAqKSAoVUlOVE4pIFRl bXBCbG9ja0Rlc2MtDQo+ID4gPlVuaW9uLkRhdGFCbG9jaywgKFVJTlROKSBUZW1wQmxvY2tEZXNj LT5MZW5ndGgpOw0KPiA+ID4gLSAgICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSBy ZWxvY2F0ZSBkZXNjcmlwdG9ycyBmcm9tL3RvL3NpemUNCj4gPiAweCVsWCAweCVsWCAweCVsWFxu IiwgVGVtcEJsb2NrRGVzYy0+VW5pb24uRGF0YUJsb2NrLA0KPiA+IChVSU5UNjQpKFVJTlROKVJl bG9jQnVmZmVyLCBUZW1wQmxvY2tEZXNjLT5MZW5ndGgpKTsNCj4gPiA+ICsgICAgICAgIERFQlVH ICgoREVCVUdfSU5GTywgIkNhcHN1bGUgcmVsb2NhdGUgZGVzY3JpcHRvcnMNCj4gPiA+ICsgZnJv bS90by9zaXplICAweCVsWCAweCVsWCAweCVsWFxuIiwgVGVtcEJsb2NrRGVzYy0+VW5pb24uRGF0 YUJsb2NrLA0KPiA+ID4gKyAoVUlOVDY0KShVSU5UTilSZWxvY0J1ZmZlciwgVGVtcEJsb2NrRGVz Yy0+TGVuZ3RoKSk7DQo+ID4gPiAgICAgICAgICBUZW1wQmxvY2tEZXNjLT5Vbmlvbi5EYXRhQmxv Y2sgPSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpDQo+IChVSU5UTikNCj4gPiBSZWxvY0J1ZmZlcjsN Cj4gPiA+ICAgICAgICB9DQo+ID4gPiAgICAgICAgVGVtcEJsb2NrRGVzYysrOw0KPiA+ID4gQEAg LTU1Miw3ICs1NTIsNyBAQCBSZWxvY2F0ZUJsb2NrRGVzY3JpcHRvcnMgKA0KPiA+ID4gICAgICAg ICAgcmV0dXJuIE5VTEw7DQo+ID4gPiAgICAgICAgfQ0KPiA+ID4gICAgICAgIENvcHlNZW0gKChW T0lEICopIFJlbG9jQnVmZmVyLCAoVk9JRCAqKSBDdXJyQmxvY2tEZXNjSGVhZCwNCj4gPiBCbG9j a0xpc3RTaXplKTsNCj4gPiA+IC0gICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIHJl bG9jIGRlc2NyaXB0b3IgYmxvY2sgIzJcbiIpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVH X0lORk8sICJDYXBzdWxlIHJlbG9jIGRlc2NyaXB0b3IgYmxvY2sgIzJcbiIpKTsNCj4gPiA+ICAg ICAgICAvLw0KPiA+ID4gICAgICAgIC8vIFBvaW50IHRoZSBwcmV2aW91cyBibG9jaydzIG5leHQg cG9pbnQgdG8gdGhpcyBjb3BpZWQgdmVyc2lvbi4gSWYNCj4gPiA+ICAgICAgICAvLyB0aGUgdGFp bCBwb2ludGVyIGlzIG51bGwsIHRoZW4gdGhpcyBpcyB0aGUgZmlyc3QgZGVzY3JpcHRvciBibG9j ay4NCj4gPiA+IEBAIC02NTEsNyArNjUxLDcgQEAgR2V0Q2Fwc3VsZUluZm8gKA0KPiA+ID4gICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXNDYXBzdWxlSW1hZ2VTaXplOw0KPiA+ ID4gICAgRUZJX0NBUFNVTEVfSEVBREVSICAgICAgICAgICAgICpDYXBzdWxlSGVhZGVyOw0KPiA+ ID4NCj4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkdldENhcHN1bGVJbmZvIGVudGVyXG4i KSk7DQo+ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJHZXRDYXBzdWxlSW5mbyBlbnRlclxu IikpOw0KPiA+ID4NCj4gPiA+ICAgIEFTU0VSVCAoRGVzYyAhPSBOVUxMKTsNCj4gPiA+DQo+ID4g PiBAQCAtNjczLDcgKzY3Myw3IEBAIEdldENhcHN1bGVJbmZvICgNCj4gPiA+ICAgICAgICAvLyBX aGlsZSBoZXJlIHdlIG5lZWQgY2hlY2sgYWxsIGNhcHN1bGVzIHNpemUuDQo+ID4gPiAgICAgICAg Ly8NCj4gPiA+ICAgICAgICBpZiAoRGVzYy0+TGVuZ3RoID49IChNQVhfQUREUkVTUyAtIFNpemUp KSB7DQo+ID4gPiAtICAgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IERlc2MtPkxl bmd0aCgweCVseCkgPj0NCj4gPiAoTUFYX0FERFJFU1MgLSBTaXplKDB4JXgpKVxuIiwgRGVzYy0+ TGVuZ3RoLCBTaXplKSk7DQo+ID4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJS T1I6IERlc2MtPkxlbmd0aCgweCVseCkgPj0NCj4gPiA+ICsgKE1BWF9BRERSRVNTIC0gU2l6ZSgw eCV4KSlcbiIsIERlc2MtPkxlbmd0aCwgU2l6ZSkpOw0KPiA+ID4gICAgICAgICAgcmV0dXJuIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+ICAgICAgICBTaXplICs9 IChVSU5UTikgRGVzYy0+TGVuZ3RoOw0KPiA+ID4gQEAgLTcwNyw3ICs3MDcsNyBAQCBHZXRDYXBz dWxlSW5mbyAoDQo+ID4gPiAgICAvLyBJZiBubyBkZXNjcmlwdG9ycywgdGhlbiBmYWlsDQo+ID4g PiAgICAvLw0KPiA+ID4gICAgaWYgKENvdW50ID09IDApIHsNCj4gPiA+IC0gICAgREVCVUcgKChF RklfRF9FUlJPUiwgIkVSUk9SOiBDb3VudCA9PSAwXG4iKSk7DQo+ID4gPiArICAgIERFQlVHICgo REVCVUdfRVJST1IsICJFUlJPUjogQ291bnQgPT0gMFxuIikpOw0KPiA+ID4gICAgICByZXR1cm4g RUZJX05PVF9GT1VORDsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiBAQCAtNzg3LDcgKzc4Nyw3 IEBAIENhcHN1bGVUZXN0UGF0dGVyblByZUNvYWxlc2NlICgNCj4gPiA+ICAgIFVJTlQzMiAgVGVz dENvdW50ZXI7DQo+ID4gPiAgICBVSU5UMzIgIFRlc3RTaXplOw0KPiA+ID4NCj4gPiA+IC0gIERF QlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGVUZXN0UGF0dGVyblByZUNvYWxlc2NlXG4iKSk7DQo+ ID4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxlVGVzdFBhdHRlcm5QcmVDb2FsZXNj ZVxuIikpOw0KPiA+ID4NCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBGaW5kIGZpcnN0IGRhdGEg ZGVzY3JpcHRvcg0KPiA+ID4gQEAgLTgwMyw3ICs4MDMsNyBAQCBDYXBzdWxlVGVzdFBhdHRlcm5Q cmVDb2FsZXNjZSAoDQo+ID4gPiAgICAvLyBGaXJzdCBvbmUgYmV0dGVyIGJlIGxvbmcgZW5vdWdo IHRvIGF0IGxlYXN0IGhvbGQgdGhlIHRlc3Qgc2lnbmF0dXJlDQo+ID4gPiAgICAvLw0KPiA+ID4g ICAgaWYgKERlc2MtPkxlbmd0aCA8IHNpemVvZiAoVUlOVDMyKSkgew0KPiA+ID4gLSAgICBERUJV RyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBwcmUtY29hbGVzY2UgcHVudGVk DQo+ID4gIzFcbiIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSB0 ZXN0IHBhdHRlcm4gcHJlLWNvYWxlc2NlIHB1bnRlZA0KPiA+ID4gKyAjMVxuIikpOw0KPiA+ID4g ICAgICByZXR1cm4gOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IEBAIC04MjMsMTMgKzgyMywx MyBAQCBDYXBzdWxlVGVzdFBhdHRlcm5QcmVDb2FsZXNjZSAoDQo+ID4gPiAgICBUZXN0UHRyICs9 IDI7DQo+ID4gPiAgICB3aGlsZSAoMSkgew0KPiA+ID4gICAgICBpZiAoKFRlc3RTaXplICYgMHgw MykgIT0gMCkgew0KPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGUgdGVz dCBwYXR0ZXJuIHByZS1jb2FsZXNjZSBwdW50ZWQNCj4gPiAjMlxuIikpOw0KPiA+ID4gKyAgICAg IERFQlVHICgoREVCVUdfSU5GTywgIkNhcHN1bGUgdGVzdCBwYXR0ZXJuIHByZS1jb2FsZXNjZSBw dW50ZWQNCj4gPiA+ICsgIzJcbiIpKTsNCj4gPiA+ICAgICAgICByZXR1cm4gOw0KPiA+ID4gICAg ICB9DQo+ID4gPg0KPiA+ID4gICAgICB3aGlsZSAoVGVzdFNpemUgPiAwKSB7DQo+ID4gPiAgICAg ICAgaWYgKCpUZXN0UHRyICE9IFRlc3RDb3VudGVyKSB7DQo+ID4gPiAtICAgICAgICBERUJVRyAo KEVGSV9EX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBwcmUtY29hbGVzY2UgZmFpbGVkIGRh dGENCj4gPiBjb3JydXB0aW9uIGNoZWNrXG4iKSk7DQo+ID4gPiArICAgICAgICBERUJVRyAoKERF QlVHX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBwcmUtY29hbGVzY2UgZmFpbGVkDQo+ID4g PiArIGRhdGEgY29ycnVwdGlvbiBjaGVja1xuIikpOw0KPiA+ID4gICAgICAgICAgcmV0dXJuIDsN Cj4gPiA+ICAgICAgICB9DQo+ID4gPg0KPiA+ID4gQEAgLTg3Myw3ICs4NzMsNyBAQCBCdWlsZENh cHN1bGVEZXNjcmlwdG9ycyAoDQo+ID4gPiAgICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9S ICAgICAqVGVtcEJsb2NrOw0KPiA+ID4gICAgRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUiAg ICAgKkhlYWRCbG9jazsNCj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJCdWls ZENhcHN1bGVEZXNjcmlwdG9ycyBlbnRlclxuIikpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19J TkZPLCAiQnVpbGRDYXBzdWxlRGVzY3JpcHRvcnMgZW50ZXJcbiIpKTsNCj4gPiA+DQo+ID4gPiAg ICBMYXN0QmxvY2sgICAgICAgICA9IE5VTEw7DQo+ID4gPiAgICBIZWFkQmxvY2sgICAgICAgICA9 IE5VTEw7DQo+ID4gPiBAQCAtOTA0LDcgKzkwNCw3IEBAIEJ1aWxkQ2Fwc3VsZURlc2NyaXB0b3Jz ICgNCj4gPiA+ICAgICAgICAgIH0NCj4gPiA+ICAgICAgICB9DQo+ID4gPiAgICAgIH0gZWxzZSB7 DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBCbG9ja0xpc3RCdWZm ZXJbSW5kZXhdKDB4JWx4KSA8DQo+ID4gTUFYX0FERFJFU1NcbiIsIEJsb2NrTGlzdEJ1ZmZlcltJ bmRleF0pKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IEJsb2Nr TGlzdEJ1ZmZlcltJbmRleF0oMHglbHgpIDwNCj4gPiA+ICsgTUFYX0FERFJFU1NcbiIsIEJsb2Nr TGlzdEJ1ZmZlcltJbmRleF0pKTsNCj4gPiA+ICAgICAgfQ0KPiA+ID4gICAgICBJbmRleCArKzsN Cj4gPiA+ICAgIH0NCj4gPiA+IEBAIC0xMDIyLDcgKzEwMjIsNyBAQCBDYXBzdWxlRGF0YUNvYWxl c2NlICgNCj4gPiA+ICAgIEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NSSVBUT1IgICAqVGVtcEJsb2Nr RGVzYzsNCj4gPiA+ICAgIEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NSSVBUT1IgICBQcml2YXRlRGF0 YURlc2NbMl07DQo+ID4gPg0KPiA+ID4gLSAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZURh dGFDb2FsZXNjZSBlbnRlclxuIikpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fw c3VsZURhdGFDb2FsZXNjZSBlbnRlclxuIikpOw0KPiA+ID4NCj4gPiA+ICAgIENhcHN1bGVJbmRl eCAgICAgPSAwOw0KPiA+ID4gICAgU2l6ZUxlZnQgICAgICAgICA9IDA7DQo+ID4gPiBAQCAtMTA1 NSwxNSArMTA1NSwxNSBAQCBDYXBzdWxlRGF0YUNvYWxlc2NlICgNCj4gPiA+ICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICAgIH0N Cj4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGVTaXplIC0gMHgleFxuIiwgQ2Fw c3VsZVNpemUpKTsNCj4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGVOdW1iZXIg LSAweCV4XG4iLCBDYXBzdWxlTnVtYmVyKSk7DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8s ICJOdW1EZXNjcmlwdG9ycyAtIDB4JXhcbiIsIE51bURlc2NyaXB0b3JzKSk7DQo+ID4gPiArICBE RUJVRyAoKERFQlVHX0lORk8sICJDYXBzdWxlU2l6ZSAtIDB4JXhcbiIsIENhcHN1bGVTaXplKSk7 ICBERUJVRw0KPiA+ID4gKyAoKERFQlVHX0lORk8sICJDYXBzdWxlTnVtYmVyIC0gMHgleFxuIiwg Q2Fwc3VsZU51bWJlcikpOw0KPiA+DQo+ID4gVGhpcyBpcyBjb25mdXNlIENhcHN1bGVOdW1iZXIg aXMgZGVjbGFyZWQgVUlOVDY0IGluDQo+ID4gTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxl UGVpL0NvbW1vbi9Db21tb25IZWFkZXIuaCBhbmQNCj4gd2UNCj4gPiB1c2UgYSBVSU5UTiBoZXJl LiBXaHkgbm90IGtlZXAgVUlOVDY0IGFuZCB1c2UgIiVseCI/DQo+ID4NCj4gPiA+ICsgIERFQlVH ICgoREVCVUdfSU5GTywgIk51bURlc2NyaXB0b3JzIC0gMHgleFxuIiwgTnVtRGVzY3JpcHRvcnMp KTsNCj4gPiA+ICAgIGlmICgoQ2Fwc3VsZVNpemUgPT0gMCkgfHwgKE51bURlc2NyaXB0b3JzID09 IDApIHx8IChDYXBzdWxlTnVtYmVyID09DQo+IDApKQ0KPiA+IHsNCj4gPiA+ICAgICAgcmV0dXJu IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgaWYgKENhcHN1bGVO dW1iZXIgLSAxID49IChNQVhfQUREUkVTUyAtIChzaXplb2YNCj4gPiAoRUZJX0NBUFNVTEVfUEVJ TV9QUklWQVRFX0RBVEEpICArIHNpemVvZihVSU5UNjQpKSkgLyBzaXplb2YoVUlOVDY0KSkNCj4g ew0KPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiRVJST1I6IENhcHN1bGVOdW1iZXIg LSAweCV4XG4iLA0KPiA+IENhcHN1bGVOdW1iZXIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJV R19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlTnVtYmVyIC0gMHgleFxuIiwNCj4gPiA+ICsgQ2Fwc3Vs ZU51bWJlcikpOw0KPiA+ID4gICAgICByZXR1cm4gRUZJX0JVRkZFUl9UT09fU01BTEw7DQo+ID4g PiAgICB9DQo+ID4gPg0KPiA+ID4gQEAgLTEwOTMsNyArMTA5Myw3IEBAIENhcHN1bGVEYXRhQ29h bGVzY2UgKA0KPiA+ID4gICAgLy8gU2FuaXR5IGNoZWNrDQo+ID4gPiAgICAvLw0KPiA+ID4gICAg aWYgKENhcHN1bGVTaXplID49IChNQVhfQUREUkVTUyAtIChzaXplb2YNCj4gPiAoRUZJX0NBUFNV TEVfUEVJTV9QUklWQVRFX0RBVEEpICsgKENhcHN1bGVOdW1iZXIgLSAxKSAqDQo+ID4gc2l6ZW9m KFVJTlQ2NCkgKyBzaXplb2YoVUlOVDY0KSkpKSB7DQo+ID4gPiAtICAgIERFQlVHICgoRUZJX0Rf RVJST1IsICJFUlJPUjogQ2Fwc3VsZVNpemUgLSAweCV4XG4iLCBDYXBzdWxlU2l6ZSkpOw0KPiA+ ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6IENhcHN1bGVTaXplIC0gMHgleFxu IiwNCj4gPiA+ICsgQ2Fwc3VsZVNpemUpKTsNCj4gPiA+ICAgICAgcmV0dXJuIEVGSV9CVUZGRVJf VE9PX1NNQUxMOw0KPiA+ID4gICAgfQ0KPiA+ID4gICAgLy8NCj4gPiA+IEBAIC0xMTA1LDcgKzEx MDUsNyBAQCBDYXBzdWxlRGF0YUNvYWxlc2NlICgNCj4gPiA+ICAgIC8vIFNhbml0eSBjaGVjaw0K PiA+ID4gICAgLy8NCj4gPiA+ICAgIGlmIChOdW1EZXNjcmlwdG9ycyA+PSAoTUFYX0FERFJFU1Mg Lw0KPiA+IHNpemVvZihFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SKSkpIHsNCj4gPiA+IC0g ICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkVSUk9SOiBOdW1EZXNjcmlwdG9ycyAtIDB4JXhcbiIs DQo+ID4gTnVtRGVzY3JpcHRvcnMpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwg IkVSUk9SOiBOdW1EZXNjcmlwdG9ycyAtIDB4JXhcbiIsDQo+ID4gPiArIE51bURlc2NyaXB0b3Jz KSk7DQo+ID4gPiAgICAgIHJldHVybiBFRklfQlVGRkVSX1RPT19TTUFMTDsNCj4gPiA+ICAgIH0N Cj4gPiA+ICAgIERlc2NyaXB0b3JzU2l6ZSAgPSBOdW1EZXNjcmlwdG9ycyAqIHNpemVvZg0KPiA+ ID4gKEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NSSVBUT1IpOyBAQCAtMTExMyw3ICsxMTEzLDcgQEAN Cj4gPiBDYXBzdWxlRGF0YUNvYWxlc2NlICgNCj4gPiA+ICAgIC8vIFNhbml0eSBjaGVjaw0KPiA+ ID4gICAgLy8NCj4gPiA+ICAgIGlmIChEZXNjcmlwdG9yc1NpemUgPj0gKE1BWF9BRERSRVNTIC0g Q2Fwc3VsZVNpemUpKSB7DQo+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJPUjog RGVzY3JpcHRvcnNTaXplIC0gMHglbHgsIENhcHN1bGVTaXplIC0NCj4gPiAweCVseFxuIiwgKFVJ TlQ2NClEZXNjcmlwdG9yc1NpemUsIChVSU5UNjQpQ2Fwc3VsZVNpemUpKTsNCj4gPiA+ICsgICAg REVCVUcgKChERUJVR19FUlJPUiwgIkVSUk9SOiBEZXNjcmlwdG9yc1NpemUgLSAweCVseCwNCj4g Q2Fwc3VsZVNpemUNCj4gPiA+ICsgLSAweCVseFxuIiwgKFVJTlQ2NClEZXNjcmlwdG9yc1NpemUs IChVSU5UNjQpQ2Fwc3VsZVNpemUpKTsNCj4gPiA+ICAgICAgcmV0dXJuIEVGSV9CVUZGRVJfVE9P X1NNQUxMOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IEBAIC0xMTIxLDEwICsxMTIxLDEwIEBA IENhcHN1bGVEYXRhQ29hbGVzY2UgKA0KPiA+ID4gICAgLy8gRG9uJ3QgZ28gYmVsb3cgc29tZSBt aW4gYWRkcmVzcy4gSWYgdGhlIGJhc2UgaXMgYmVsb3cgaXQsDQo+ID4gPiAgICAvLyB0aGVuIG1v dmUgaXQgdXAgYW5kIGFkanVzdCB0aGUgc2l6ZSBhY2NvcmRpbmdseS4NCj4gPiA+ICAgIC8vDQo+ ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIE1lbW9yeSByYW5nZSBmcm9tIDB4 JThYIHRvDQo+IDB4JThYXG4iLA0KPiA+ID4gKFVJTlROKSAqTWVtb3J5QmFzZSwgKFVJTlROKSpN ZW1vcnlCYXNlICsgKk1lbW9yeVNpemUpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5GTywg IkNhcHN1bGUgTWVtb3J5IHJhbmdlIGZyb20gMHglOFggdG8NCj4gPiAweCU4WFxuIiwNCj4gPiA+ ICsgKFVJTlROKSAqTWVtb3J5QmFzZSwgKFVJTlROKSpNZW1vcnlCYXNlICsgKk1lbW9yeVNpemUp KTsNCj4gPg0KPiA+IERvbid0IHlvdSBhbHNvIHdhbnQgdG8gY2FzdCB0byBVSU5UNjQgYW5kIHVz ZSAiJWxYIiBoZXJlPw0KPiA+DQo+ID4gPiAgICBpZiAoKFVJTlROKSpNZW1vcnlCYXNlIDwgKFVJ TlROKSBNSU5fQ09BTEVTQ0VfQUREUikgew0KPiA+ID4gICAgICBpZiAoKChVSU5UTikqTWVtb3J5 QmFzZSArICpNZW1vcnlTaXplKSA8IChVSU5UTikNCj4gPiBNSU5fQ09BTEVTQ0VfQUREUikgew0K PiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJFUlJPUjogKk1lbW9yeUJhc2UgKyAq TWVtb3J5U2l6ZSAtDQo+ID4gMHgleFxuIiwgKFVJTlROKSpNZW1vcnlCYXNlICsgKk1lbW9yeVNp emUpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRVJST1I6ICpNZW1vcnlC YXNlICsgKk1lbW9yeVNpemUgLQ0KPiA+ID4gKyAweCV4XG4iLCAoVUlOVE4pKk1lbW9yeUJhc2Ug KyAqTWVtb3J5U2l6ZSkpOw0KPiA+ID4gICAgICAgIHJldHVybiBFRklfQlVGRkVSX1RPT19TTUFM TDsNCj4gPiA+ICAgICAgfSBlbHNlIHsNCj4gPiA+ICAgICAgICAqTWVtb3J5U2l6ZSA9ICpNZW1v cnlTaXplIC0gKChVSU5UTikgTUlOX0NPQUxFU0NFX0FERFIgLQ0KPiA+ID4gKFVJTlROKSAqTWVt b3J5QmFzZSk7IEBAIC0xMTMzLDEzICsxMTMzLDEzIEBADQo+IENhcHN1bGVEYXRhQ29hbGVzY2UN Cj4gPiAoDQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgaWYgKCpNZW1vcnlTaXplIDw9IChD YXBzdWxlU2l6ZSArIERlc2NyaXB0b3JzU2l6ZSkpIHsNCj4gPiA+IC0gICAgREVCVUcgKChFRklf RF9FUlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6ZSArIERlc2NyaXB0b3JzU2l6ZSAtDQo+ID4gMHgl eFxuIiwgQ2Fwc3VsZVNpemUgKyBEZXNjcmlwdG9yc1NpemUpKTsNCj4gPiA+ICsgICAgREVCVUcg KChERUJVR19FUlJPUiwgIkVSUk9SOiBDYXBzdWxlU2l6ZSArIERlc2NyaXB0b3JzU2l6ZSAtDQo+ ID4gPiArIDB4JXhcbiIsIENhcHN1bGVTaXplICsgRGVzY3JpcHRvcnNTaXplKSk7DQo+ID4gPiAg ICAgIHJldHVybiBFRklfQlVGRkVSX1RPT19TTUFMTDsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4g PiAgICBGcmVlTWVtQmFzZSA9ICpNZW1vcnlCYXNlOw0KPiA+ID4gICAgRnJlZU1lbVNpemUgPSAq TWVtb3J5U2l6ZTsNCj4gPiA+IC0gIERFQlVHICgoRUZJX0RfSU5GTywgIkNhcHN1bGUgRnJlZSBN ZW1vcnkgZnJvbSAweCU4WCB0byAweCU4WFxuIiwNCj4gPiA+IChVSU5UTikgRnJlZU1lbUJhc2Us IChVSU5UTikgRnJlZU1lbUJhc2UgKyBGcmVlTWVtU2l6ZSkpOw0KPiA+ID4gKyAgREVCVUcgKChE RUJVR19JTkZPLCAiQ2Fwc3VsZSBGcmVlIE1lbW9yeSBmcm9tIDB4JThYIHRvDQo+IDB4JThYXG4i LA0KPiA+ID4gKyAoVUlOVE4pIEZyZWVNZW1CYXNlLCAoVUlOVE4pIEZyZWVNZW1CYXNlICsgRnJl ZU1lbVNpemUpKTsNCj4gPiA+DQo+ID4gPiAgICAvLw0KPiA+ID4gICAgLy8gUmVsb2NhdGUgYWxs IHRoZSBibG9jayBkZXNjcmlwdG9ycyB0byBsb3cgbWVtb3J5IHRvIG1ha2UgZnVydGhlcg0KPiA+ ID4gQEAgLTEyMDUsNyArMTIwNSw3IEBAIENhcHN1bGVEYXRhQ29hbGVzY2UgKA0KPiA+ID4gICAg ICAgICAgfQ0KPiA+ID4NCj4gPiA+ICAgICAgICAgIENvcHlNZW0gKChWT0lEICopIFJlbG9jUHRy LCAoVk9JRCAqKSAoVUlOVE4pIFRlbXBCbG9ja0Rlc2MtDQo+ID4gPlVuaW9uLkRhdGFCbG9jaywg KFVJTlROKSBUZW1wQmxvY2tEZXNjLT5MZW5ndGgpOw0KPiA+ID4gLSAgICAgICAgREVCVUcgKChF RklfRF9JTkZPLCAiQ2Fwc3VsZSByZWxvYyBkYXRhIGJsb2NrIGZyb20gMHglOFggdG8NCj4gMHgl OFgNCj4gPiB3aXRoIHNpemUgMHglOFhcbiIsDQo+ID4gPiArICAgICAgICBERUJVRyAoKERFQlVH X0lORk8sICJDYXBzdWxlIHJlbG9jIGRhdGEgYmxvY2sgZnJvbSAweCU4WCB0bw0KPiA+ID4gKyAw eCU4WCB3aXRoIHNpemUgMHglOFhcbiIsDQo+ID4gPiAgICAgICAgICAgICAgICAgIChVSU5UTikg VGVtcEJsb2NrRGVzYy0+VW5pb24uRGF0YUJsb2NrLCAoVUlOVE4pDQo+ID4gPiBSZWxvY1B0ciwg KFVJTlROKSBUZW1wQmxvY2tEZXNjLT5MZW5ndGgpKTsNCj4gPiA+DQo+ID4gPiAgICAgICAgICBU ZW1wQmxvY2tEZXNjLT5Vbmlvbi5EYXRhQmxvY2sgPSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpDQo+ ID4gPiAoVUlOVE4pIFJlbG9jUHRyOyBAQCAtMTI1Niw3ICsxMjU2LDcgQEAgQ2Fwc3VsZURhdGFD b2FsZXNjZSAoDQo+ID4gPiAgICAgICAgQVNTRVJUIChDdXJyZW50QmxvY2tEZXNjLT5MZW5ndGgg PD0gU2l6ZUxlZnQpOw0KPiA+ID4NCj4gPiA+ICAgICAgICBDb3B5TWVtICgoVk9JRCAqKSBEZXN0 UHRyLCAoVk9JRCAqKSAoVUlOVE4pIChDdXJyZW50QmxvY2tEZXNjLQ0KPiA+ID5Vbmlvbi5EYXRh QmxvY2spLCAoVUlOVE4pQ3VycmVudEJsb2NrRGVzYy0+TGVuZ3RoKTsNCj4gPiA+IC0gICAgICBE RUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIGNvYWxlc2NlIGJsb2NrIG5vLjB4JWxYIGZyb20g MHglbFgNCj4gdG8NCj4gPiAweCVsWCB3aXRoIHNpemUgMHglbFhcbiIsKFVJTlQ2NClDYXBzdWxl VGltZXMsDQo+ID4gPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSBjb2FsZXNj ZSBibG9jayBuby4weCVsWCBmcm9tIDB4JWxYDQo+ID4gPiArIHRvIDB4JWxYIHdpdGggc2l6ZSAw eCVsWFxuIiwoVUlOVDY0KUNhcHN1bGVUaW1lcywNCj4gPiA+ICAgICAgICAgICAgICAgQ3VycmVu dEJsb2NrRGVzYy0+VW5pb24uRGF0YUJsb2NrLCAoVUlOVDY0KShVSU5UTilEZXN0UHRyLA0KPiA+ IEN1cnJlbnRCbG9ja0Rlc2MtPkxlbmd0aCkpOw0KPiA+ID4gICAgICAgIERlc3RQdHIgKz0gQ3Vy cmVudEJsb2NrRGVzYy0+TGVuZ3RoOw0KPiA+ID4gICAgICAgIFNpemVMZWZ0IC09IEN1cnJlbnRC bG9ja0Rlc2MtPkxlbmd0aDsgZGlmZiAtLWdpdA0KPiA+ID4gYS9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL0NhcHN1bGVQZWkvVWVmaUNhcHN1bGUuYw0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL0NhcHN1bGVQZWkvVWVmaUNhcHN1bGUuYw0KPiA+ID4gaW5kZXggMTEzMTA5NGM0Zi4uZjVl YzFjMjBlYyAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3Vs ZVBlaS9VZWZpQ2Fwc3VsZS5jDQo+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Nh cHN1bGVQZWkvVWVmaUNhcHN1bGUuYw0KPiA+ID4gQEAgLTQyNyw3ICs0MjcsNyBAQCBNb2RlU3dp dGNoICgNCj4gPiA+ICAgICAgaWYgKFJlc2VydmVkUmFuZ2VFbmQgPCBNZW1vcnlFbmQ2NCkgew0K PiA+ID4gICAgICAgIE1lbW9yeUJhc2U2NCA9IFJlc2VydmVkUmFuZ2VFbmQ7DQo+ID4gPiAgICAg IH0gZWxzZSB7DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIk1lbW9yeSBpcyBu b3QgZW5vdWdoIHRvIHByb2Nlc3MNCj4gPiBjYXBzdWxlIVxuIikpOw0KPiA+ID4gKyAgICAgIERF QlVHICgoREVCVUdfRVJST1IsICJNZW1vcnkgaXMgbm90IGVub3VnaCB0byBwcm9jZXNzDQo+ID4g PiArIGNhcHN1bGUhXG4iKSk7DQo+ID4gPiAgICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOw0KPiA+ID4gICAgICB9DQo+ID4gPiAgICB9IGVsc2UgaWYgKFJlc2VydmVkUmFuZ2VCYXNl IDwgTWVtb3J5RW5kNjQpIHsgQEAgLTUyNSw3ICs1MjUsNyBAQA0KPiA+ID4gRmluZENhcHN1bGVD b2FsZXNjZUltYWdlICgNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQXV0aGVu dGljYXRpb25TdGF0ZQ0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4g PiAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gLSAgICAgICAgREVCVUcg KChFRklfRF9FUlJPUiwgIlVuYWJsZSB0byBmaW5kIFBFMzIgc2VjdGlvbiBpbiBDYXBzdWxlWDY0 DQo+ID4gaW1hZ2UgZmZzICVyIVxuIiwgU3RhdHVzKSk7DQo+ID4gPiArICAgICAgICBERUJVRyAo KERFQlVHX0VSUk9SLCAiVW5hYmxlIHRvIGZpbmQgUEUzMiBzZWN0aW9uIGluDQo+ID4gPiArIENh cHN1bGVYNjQgaW1hZ2UgZmZzICVyIVxuIiwgU3RhdHVzKSk7DQo+ID4gPiAgICAgICAgICByZXR1 cm4gU3RhdHVzOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+ICAgICAgICAqQ29hbGVzY2VJbWFnZU1h Y2hpbmVUeXBlID0gUGVDb2ZmTG9hZGVyR2V0TWFjaGluZVR5cGUNCj4gKChWT0lEDQo+ID4gPiAq KSAoVUlOVE4pIENvYWxlc2NlSW1hZ2VBZGRyZXNzKTsgQEAgLTU3NCw3ICs1NzQsNyBAQA0KPiA+ IEdldExvbmdNb2RlQ29udGV4dCAoDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvbmdNb2RlQnVmZmVyDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICk7DQo+ID4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiAtICAg IERFQlVHICgoIEVGSV9EX0VSUk9SLCAiRXJyb3IgR2V0IExvbmdNb2RlQnVmZmVyIHZhcmlhYmxl ICVyIVxuIiwNCj4gPiBTdGF0dXMpKTsNCj4gPiA+ICsgICAgREVCVUcgKCggREVCVUdfRVJST1Is ICJFcnJvciBHZXQgTG9uZ01vZGVCdWZmZXIgdmFyaWFibGUgJXIhXG4iLA0KPiA+ID4gKyBTdGF0 dXMpKTsNCj4gPiA+ICAgIH0NCj4gPiA+ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiAgfQ0KPiA+ ID4gQEAgLTczNCw3ICs3MzQsNyBAQCBCdWlsZE1lbW9yeVJlc291cmNlRGVzY3JpcHRvciAoDQo+ ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgaWYgKEluZGV4ID09IDApIHsNCj4gPiA+IC0gICAg REVCVUcgKChFRklfRF9JTkZPIHwgRUZJX0RfV0FSTiwgIk5vIG1lbW9yeSByZXNvdXJjZQ0KPiBk ZXNjcmlwdG9yDQo+ID4gcmVwb3J0ZWQgaW4gSE9CIGxpc3QgYmVmb3JlIGNhcHN1bGUgQ29hbGVz Y2VcbiIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPIHwgREVCVUdfV0FSTiwgIk5v IG1lbW9yeSByZXNvdXJjZQ0KPiA+IGRlc2NyaXB0b3INCj4gPiA+ICsgcmVwb3J0ZWQgaW4gSE9C IGxpc3QgYmVmb3JlIGNhcHN1bGUgQ29hbGVzY2VcbiIpKTsNCj4gPiA+ICAjaWYgZGVmaW5lZCAo TURFX0NQVV9JQTMyKSB8fCBkZWZpbmVkIChNREVfQ1BVX1g2NCkNCj4gPiA+ICAgICAgLy8NCj4g PiA+ICAgICAgLy8gQWxsb2NhdGUgbWVtb3J5IHRvIGhvbGQgbWVtb3J5IHJlc291cmNlIGRlc2Ny aXB0b3IsIEBAIC03NDYsNw0KPiA+ID4gKzc0Niw3IEBAIEJ1aWxkTWVtb3J5UmVzb3VyY2VEZXNj cmlwdG9yICgNCj4gPiA+DQo+ID4gPiAgICAgIE1lbW9yeVJlc291cmNlWzBdLlBoeXNpY2FsU3Rh cnQgPSAwOw0KPiA+ID4gICAgICBNZW1vcnlSZXNvdXJjZVswXS5SZXNvdXJjZUxlbmd0aCA9IExT aGlmdFU2NCAoMSwNCj4gPiBHZXRQaHlzaWNhbEFkZHJlc3NCaXRzICgpKTsNCj4gPiA+IC0gICAg REVCVUcgKChFRklfRF9JTkZPLCAiTWVtb3J5UmVzb3VyY2VbMHgwXSAtIFN0YXJ0KDB4JTBseCkN Cj4gPiBMZW5ndGgoMHglMGx4KVxuIiwNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAi TWVtb3J5UmVzb3VyY2VbMHgwXSAtIFN0YXJ0KDB4JTBseCkNCj4gPiA+ICsgTGVuZ3RoKDB4JTBs eClcbiIsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5UmVzb3VyY2VbMHgw XS5QaHlzaWNhbFN0YXJ0LA0KPiA+IE1lbW9yeVJlc291cmNlWzB4MF0uUmVzb3VyY2VMZW5ndGgp KTsNCj4gPiA+ICAgICAgcmV0dXJuIE1lbW9yeVJlc291cmNlOw0KPiA+ID4gICNlbHNlDQo+ID4g PiBAQCAtNzcwLDcgKzc3MCw3IEBAIEJ1aWxkTWVtb3J5UmVzb3VyY2VEZXNjcmlwdG9yICgNCj4g PiA+ICAgIHdoaWxlIChIb2IuUmF3ICE9IE5VTEwpIHsNCj4gPiA+ICAgICAgUmVzb3VyY2VEZXNj cmlwdG9yID0gKEVGSV9IT0JfUkVTT1VSQ0VfREVTQ1JJUFRPUiAqKSBIb2IuUmF3Ow0KPiA+ID4g ICAgICBpZiAoUmVzb3VyY2VEZXNjcmlwdG9yLT5SZXNvdXJjZVR5cGUgPT0NCj4gPiBFRklfUkVT T1VSQ0VfU1lTVEVNX01FTU9SWSkgew0KPiA+ID4gLSAgICAgIERFQlVHICgoRUZJX0RfSU5GTywg Ik1lbW9yeVJlc291cmNlWzB4JXhdIC0gU3RhcnQoMHglMGx4KQ0KPiA+IExlbmd0aCgweCUwbHgp XG4iLA0KPiA+ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIk1lbW9yeVJlc291cmNlWzB4 JXhdIC0gU3RhcnQoMHglMGx4KQ0KPiA+ID4gKyBMZW5ndGgoMHglMGx4KVxuIiwNCj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4LCBSZXNvdXJjZURlc2NyaXB0b3ItPlBoeXNp Y2FsU3RhcnQsDQo+ID4gUmVzb3VyY2VEZXNjcmlwdG9yLT5SZXNvdXJjZUxlbmd0aCkpOw0KPiA+ ID4gICAgICAgIE1lbW9yeVJlc291cmNlW0luZGV4XS5QaHlzaWNhbFN0YXJ0ID0gUmVzb3VyY2VE ZXNjcmlwdG9yLQ0KPiA+ID5QaHlzaWNhbFN0YXJ0Ow0KPiA+ID4gICAgICAgIE1lbW9yeVJlc291 cmNlW0luZGV4XS5SZXNvdXJjZUxlbmd0aCA9DQo+ID4gPiBSZXNvdXJjZURlc2NyaXB0b3ItPlJl c291cmNlTGVuZ3RoOw0KPiA+ID4gQEAgLTk3Myw3ICs5NzMsNyBAQCBDYXBzdWxlQ29hbGVzY2Ug KA0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIFN0YXR1cyA9IFBlaVNlcnZpY2VzR2V0Qm9vdE1vZGUg KCZCb290TW9kZSk7DQo+ID4gPiAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChCb290TW9k ZSAhPSBCT09UX09OX0ZMQVNIX1VQREFURSkpIHsNCj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9F UlJPUiwgIkJvb3QgbW9kZSBpcyBub3QgY29ycmVjdCBmb3IgY2Fwc3VsZSB1cGRhdGUNCj4gPiBw YXRoLlxuIikpOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQm9vdCBtb2RlIGlz IG5vdCBjb3JyZWN0IGZvciBjYXBzdWxlDQo+IHVwZGF0ZQ0KPiA+ID4gKyBwYXRoLlxuIikpOw0K PiA+ID4gICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gICAgICBnb3RvIERvbmU7 DQo+ID4gPiAgICB9DQo+ID4gPiBAQCAtMTAxNiwxNCArMTAxNiwxNCBAQCBDYXBzdWxlQ29hbGVz Y2UgKA0KPiA+ID4gICAgICAgIC8vDQo+ID4gPiAgICAgICAgLy8gVGhlcmUgaXMgbm8gY2Fwc3Vs ZSB2YXJpYWJsZXMsIHF1aXQNCj4gPiA+ICAgICAgICAvLw0KPiA+ID4gLSAgICAgIERFQlVHICgo RUZJX0RfSU5GTywiQ2Fwc3VsZSB2YXJpYWJsZSBJbmRleCA9ICVkXG4iLCBJbmRleCkpOw0KPiA+ ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywiQ2Fwc3VsZSB2YXJpYWJsZSBJbmRleCA9ICVk XG4iLCBJbmRleCkpOw0KPiA+ID4gICAgICAgIGJyZWFrOw0KPiA+ID4gICAgICB9DQo+ID4gPiAg ICAgIFZhcmlhYmxlQ291bnQrKzsNCj4gPiA+ICAgICAgSW5kZXgrKzsNCj4gPiA+ICAgIH0NCj4g PiA+DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sIkNhcHN1bGUgdmFyaWFibGUgY291bnQg PSAlZFxuIiwNCj4gPiA+IFZhcmlhYmxlQ291bnQpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdf SU5GTywiQ2Fwc3VsZSB2YXJpYWJsZSBjb3VudCA9ICVkXG4iLA0KPiA+ID4gKyBWYXJpYWJsZUNv dW50KSk7DQo+ID4gPg0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIC8vIFRoZSBsYXN0IGVudHJ5IGlz IHRoZSBlbmQgZmxhZy4NCj4gPiA+IEBAIC0xMDM0LDcgKzEwMzQsNyBAQCBDYXBzdWxlQ29hbGVz Y2UgKA0KPiA+ID4gICAgICAgICAgICAgICApOw0KPiA+ID4NCj4gPiA+ICAgIGlmIChTdGF0dXMg IT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkFsbG9j YXRlUGFnZXMgRmFpbGVkISwgU3RhdHVzID0gJXhcbiIsDQo+IFN0YXR1cykpOw0KPiA+ID4gKyAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQWxsb2NhdGVQYWdlcyBGYWlsZWQhLCBTdGF0dXMgPSAl eFxuIiwNCj4gPiA+ICsgU3RhdHVzKSk7DQo+ID4gPiAgICAgIGdvdG8gRG9uZTsNCj4gPiA+ICAg IH0NCj4gPiA+DQo+ID4gPiBAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgQ2Fwc3VsZUNvYWxlc2NlICgN Cj4gPiA+ICAgIC8vDQo+ID4gPiAgICBTdGF0dXMgPSBHZXRDYXBzdWxlRGVzY3JpcHRvcnMgKFZh cmlhYmxlQXJyYXlBZGRyZXNzKTsNCj4gPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkZhaWwgdG8gZmluZCBjYXBzdWxlIHZh cmlhYmxlcy5cbiIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWwgdG8g ZmluZCBjYXBzdWxlIHZhcmlhYmxlcy5cbiIpKTsNCj4gPiA+ICAgICAgZ290byBEb25lOw0KPiA+ ID4gICAgfQ0KPiA+ID4NCj4gPiA+IEBAIC0xMDY0LDE0ICsxMDY0LDE0IEBAIENhcHN1bGVDb2Fs ZXNjZSAoDQo+ID4gPiAgICAgIENvYWxlc2NlSW1hZ2VFbnRyeVBvaW50ID0gMDsNCj4gPiA+ICAg ICAgU3RhdHVzID0gR2V0TG9uZ01vZGVDb250ZXh0ICgmTG9uZ01vZGVCdWZmZXIpOw0KPiA+ID4g ICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklf RF9FUlJPUiwgIkZhaWwgdG8gZmluZCB0aGUgdmFyaWFibGUgZm9yIGxvbmcgbW9kZQ0KPiA+IGNv bnRleHQhXG4iKSk7DQo+ID4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWwgdG8g ZmluZCB0aGUgdmFyaWFibGUgZm9yIGxvbmcgbW9kZQ0KPiA+ID4gKyBjb250ZXh0IVxuIikpOw0K PiA+ID4gICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiAgICAgICAgZ290byBE b25lOw0KPiA+ID4gICAgICB9DQo+ID4gPg0KPiA+ID4gICAgICBTdGF0dXMgPSBGaW5kQ2Fwc3Vs ZUNvYWxlc2NlSW1hZ2UgKCZDb2FsZXNjZUltYWdlRW50cnlQb2ludCwNCj4gPiAmQ29hbGVzY2VJ bWFnZU1hY2hpbmVUeXBlKTsNCj4gPiA+ICAgICAgaWYgKChFRklfRVJST1IgKFN0YXR1cykpIHx8 IChDb2FsZXNjZUltYWdlTWFjaGluZVR5cGUgIT0NCj4gPiBFRklfSU1BR0VfTUFDSElORV9YNjQp KSB7DQo+ID4gPiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkZhaWwgdG8gZmluZCBDYXBz dWxlWDY0IG1vZHVsZSBpbiBGViFcbiIpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiRmFpbCB0byBmaW5kIENhcHN1bGVYNjQgbW9kdWxlIGluDQo+ID4gPiArIEZWIVxuIikp Ow0KPiA+ID4gICAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ID4gPiAgICAgICAgZ290 byBEb25lOw0KPiA+ID4gICAgICB9DQo+ID4gPiBAQCAtMTA5MSwxNCArMTA5MSwxNCBAQCBDYXBz dWxlQ29hbGVzY2UgKA0KPiA+ID4gICAgU3RhdHVzID0gQ2Fwc3VsZURhdGFDb2FsZXNjZSAoUGVp U2VydmljZXMsIChFRklfUEhZU0lDQUxfQUREUkVTUw0KPiA+ID4gKikoVUlOVE4pVmFyaWFibGVB cnJheUFkZHJlc3MsIE1lbW9yeVJlc291cmNlLCBNZW1vcnlCYXNlLA0KPiA+ID4gTWVtb3J5U2l6 ZSk7ICAjZW5kaWYNCj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxl IENvYWxlc2NlIFN0YXR1cyA9ICVyIVxuIiwgU3RhdHVzKSk7DQo+ID4gPiArICBERUJVRyAoKERF QlVHX0lORk8sICJDYXBzdWxlIENvYWxlc2NlIFN0YXR1cyA9ICVyIVxuIiwgU3RhdHVzKSk7DQo+ ID4gPg0KPiA+ID4gICAgaWYgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCkgew0KPiA+ ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiVGhlcmUgaXMgbm90IGVub3VnaCBtZW1vcnkg dG8gcHJvY2Vzcw0KPiA+IGNhcHN1bGUhXG4iKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdf RVJST1IsICJUaGVyZSBpcyBub3QgZW5vdWdoIG1lbW9yeSB0byBwcm9jZXNzDQo+ID4gPiArIGNh cHN1bGUhXG4iKSk7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgaWYgKFN0YXR1cyA9PSBF RklfTk9UX0ZPVU5EKSB7DQo+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJGYWlsIHRv IHBhcnNlIGNhcHN1bGUgZGVzY3JpcHRvciBpbg0KPiA+IG1lbW9yeSFcbiIpKTsNCj4gPiA+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWwgdG8gcGFyc2UgY2Fwc3VsZSBkZXNjcmlwdG9y IGluDQo+ID4gPiArIG1lbW9yeSFcbiIpKTsNCj4gPiA+ICAgICAgUkVQT1JUX1NUQVRVU19DT0RF ICgNCj4gPiA+ICAgICAgICBFRklfRVJST1JfQ09ERSB8IEVGSV9FUlJPUl9NQUpPUiwNCj4gPiA+ ICAgICAgICAoRUZJX1NPRlRXQVJFX1BFSV9NT0RVTEUgfA0KPiA+ID4gRUZJX1NXX1BFSV9FQ19J TlZBTElEX0NBUFNVTEVfREVTQ1JJUFRPUikNCj4gPiA+IEBAIC0xMTYzLDcgKzExNjMsNyBAQCBD YXBzdWxlVGVzdFBhdHRlcm4gKA0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIGlmICgqVGVzdFB0ciA9 PSAweDU0NTM0NTU0KSB7DQo+ID4gPiAgICAgIFJldFZhbHVlID0gVFJVRTsNCj4gPiA+IC0gICAg REVCVUcgKChFRklfRF9JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBhdHRlcm4gbW9kZSBhY3RpdmF0ZWQu Li5cbiIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBh dHRlcm4gbW9kZSBhY3RpdmF0ZWQuLi5cbiIpKTsNCj4gPiA+ICAgICAgVGVzdFNpemUgPSBUZXN0 UHRyWzFdIC8gc2l6ZW9mIChVSU5UMzIpOw0KPiA+ID4gICAgICAvLw0KPiA+ID4gICAgICAvLyBT a2lwIG92ZXIgdGhlIHNpZ25hdHVyZSBhbmQgdGhlIHNpemUgZmllbGRzIGluIHRoZSBwYXR0ZXJu DQo+ID4gPiBkYXRhIGhlYWRlciBAQCAtMTE3Miw3ICsxMTcyLDcgQEAgQ2Fwc3VsZVRlc3RQYXR0 ZXJuICgNCj4gPiA+ICAgICAgVGVzdENvdW50ZXIgPSAwOw0KPiA+ID4gICAgICB3aGlsZSAoVGVz dFNpemUgPiAwKSB7DQo+ID4gPiAgICAgICAgaWYgKCpUZXN0UHRyICE9IFRlc3RDb3VudGVyKSB7 DQo+ID4gPiAtICAgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVy biBtb2RlIEZBSUxFRDoNCj4gPiBCYXNlQWRkci9GYWlsQWRkciAweCVYIDB4JVhcbiIsDQo+ID4g KFVJTlQzMikoVUlOVE4pKEVGSV9DQVBTVUxFX1BFSU1fUFJJVkFURV9EQVRBICopQ2Fwc3VsZUJh c2UsDQo+ID4gKFVJTlQzMikoVUlOVE4pVGVzdFB0cikpOw0KPiA+ID4gKyAgICAgICAgREVCVUcg KChERUJVR19JTkZPLCAiQ2Fwc3VsZSB0ZXN0IHBhdHRlcm4gbW9kZSBGQUlMRUQ6DQo+ID4gPiAr IEJhc2VBZGRyL0ZhaWxBZGRyIDB4JVggMHglWFxuIiwNCj4gPiA+ICsgKFVJTlQzMikoVUlOVE4p KEVGSV9DQVBTVUxFX1BFSU1fUFJJVkFURV9EQVRBICopQ2Fwc3VsZUJhc2UsDQo+ID4gPiArIChV SU5UMzIpKFVJTlROKVRlc3RQdHIpKTsNCj4gPiA+ICAgICAgICAgIHJldHVybiBUUlVFOw0KPiA+ ID4gICAgICAgIH0NCj4gPiA+DQo+ID4gPiBAQCAtMTE4MSw3ICsxMTgxLDcgQEAgQ2Fwc3VsZVRl c3RQYXR0ZXJuICgNCj4gPiA+ICAgICAgICBUZXN0U2l6ZS0tOw0KPiA+ID4gICAgICB9DQo+ID4g Pg0KPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIHRlc3QgcGF0dGVybiBt b2RlIFNVQ0NFU1NcbiIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiQ2Fwc3Vs ZSB0ZXN0IHBhdHRlcm4gbW9kZSBTVUNDRVNTXG4iKSk7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ ID4gICAgcmV0dXJuIFJldFZhbHVlOw0KPiA+ID4gQEAgLTEyMjYsMTEgKzEyMjYsMTEgQEAgQ3Jl YXRlU3RhdGUgKA0KPiA+ID4gICAgICByZXR1cm4gRUZJX1ZPTFVNRV9DT1JSVVBURUQ7DQo+ID4g PiAgICB9DQo+ID4gPiAgICBpZiAoUHJpdmF0ZURhdGEtPkNhcHN1bGVBbGxJbWFnZVNpemUgPj0g TUFYX0FERFJFU1MpIHsNCj4gPiA+IC0gICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkNhcHN1bGVB bGxJbWFnZVNpemUgdG9vIGJpZyAtIDB4JWx4XG4iLA0KPiA+IFByaXZhdGVEYXRhLT5DYXBzdWxl QWxsSW1hZ2VTaXplKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJDYXBzdWxl QWxsSW1hZ2VTaXplIHRvbyBiaWcgLSAweCVseFxuIiwNCj4gPiA+ICsgUHJpdmF0ZURhdGEtPkNh cHN1bGVBbGxJbWFnZVNpemUpKTsNCj4gPiA+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOw0KPiA+ID4gICAgfQ0KPiA+ID4gICAgaWYgKFByaXZhdGVEYXRhLT5DYXBzdWxlTnVtYmVy ID49IE1BWF9BRERSRVNTKSB7DQo+ID4gPiAtICAgIERFQlVHICgoRUZJX0RfRVJST1IsICJDYXBz dWxlTnVtYmVyIHRvbyBiaWcgLSAweCVseFxuIiwNCj4gPiBQcml2YXRlRGF0YS0+Q2Fwc3VsZU51 bWJlcikpOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQ2Fwc3VsZU51bWJlciB0 b28gYmlnIC0gMHglbHhcbiIsDQo+ID4gPiArIFByaXZhdGVEYXRhLT5DYXBzdWxlTnVtYmVyKSk7 DQo+ID4gPiAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ICAgIH0NCj4g PiA+ICAgIC8vDQo+ID4gPiBAQCAtMTI0OCwxMyArMTI0OCwxMyBAQCBDcmVhdGVTdGF0ZSAoDQo+ ID4gPiAgICAgICAgICAgICAgICk7DQo+ID4gPg0KPiA+ID4gICAgaWYgKFN0YXR1cyAhPSBFRklf U1VDQ0VTUykgew0KPiA+ID4gLSAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiQWxsb2NhdGVQYWdl cyBGYWlsZWQhXG4iKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJBbGxvY2F0 ZVBhZ2VzIEZhaWxlZCFcbiIpKTsNCj4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICAg IH0NCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBDb3B5IHRvIG91ciBuZXcgYnVmZmVyIGZvciBE WEUNCj4gPiA+ICAgIC8vDQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0lORk8sICJDYXBzdWxlIGNv cHkgZnJvbSAweCU4WCB0byAweCU4WCB3aXRoIHNpemUNCj4gPiA+IDB4JThYXG4iLCAoVUlOVE4p KChVSU5UOCAqKVByaXZhdGVEYXRhICsNCj4gPiA+IHNpemVvZihFRklfQ0FQU1VMRV9QRUlNX1BS SVZBVEVfREFUQSkgKyAoQ2Fwc3VsZU51bWJlciAtIDEpICoNCj4gPiA+IHNpemVvZihVSU5UNjQp KSwgKFVJTlROKSBOZXdCdWZmZXIsIFNpemUpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5G TywgIkNhcHN1bGUgY29weSBmcm9tIDB4JThYIHRvIDB4JThYIHdpdGggc2l6ZQ0KPiA+ID4gKyAw eCU4WFxuIiwgKFVJTlROKSgoVUlOVDggKilQcml2YXRlRGF0YSArDQo+ID4gPiArIHNpemVvZihF RklfQ0FQU1VMRV9QRUlNX1BSSVZBVEVfREFUQSkgKyAoQ2Fwc3VsZU51bWJlciAtIDEpICoNCj4g PiA+ICsgc2l6ZW9mKFVJTlQ2NCkpLCAoVUlOVE4pIE5ld0J1ZmZlciwgU2l6ZSkpOw0KPiA+ID4g ICAgQ29weU1lbSAoKFZPSUQgKikgKFVJTlROKSBOZXdCdWZmZXIsIChWT0lEICopIChVSU5UTikg KChVSU5UOA0KPiA+ICopUHJpdmF0ZURhdGEgKyBzaXplb2YoRUZJX0NBUFNVTEVfUEVJTV9QUklW QVRFX0RBVEEpICsNCj4gPiAoQ2Fwc3VsZU51bWJlciAtIDEpICogc2l6ZW9mKFVJTlQ2NCkpLCBT aXplKTsNCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBDaGVjayBmb3IgdGVzdCBkYXRhIHBhdHRl cm4uIElmIGl0IGlzIHRoZSB0ZXN0IHBhdHRlcm4sIHRoZW4NCj4gPiA+IHdlJ2xsIGRpZmYgLS1n aXQgYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkvWDY0L1g2NEVudHJ5LmMNCj4g PiA+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL1g2NC9YNjRFbnRyeS5jDQo+ ID4gPiBpbmRleCA0MGI3MDk1MTk0Li4yYzMwOTk5MGZiIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUGVpL1g2NC9YNjRFbnRyeS5jDQo+ID4gPiArKysg Yi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVQZWkvWDY0L1g2NEVudHJ5LmMNCj4gPiA+ IEBAIC0xNzQsNyArMTc0LDcgQEAgUGFnZUZhdWx0SGFuZGxlciAoDQo+ID4gPiAgICBBZGRyZXNz RW5jTWFzayA9IFBhZ2VGYXVsdENvbnRleHQtPkFkZHJlc3NFbmNNYXNrOw0KPiA+ID4NCj4gPiA+ ICAgIFBGQWRkcmVzcyA9IEFzbVJlYWRDcjIgKCk7DQo+ID4gPiAtICBERUJVRyAoKEVGSV9EX0VS Uk9SLCAiQ2Fwc3VsZVg2NCAtIFBhZ2VGYXVsdEhhbmRsZXI6IENyMiAtICVseFxuIiwNCj4gPiA+ IFBGQWRkcmVzcykpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19FUlJPUiwgIkNhcHN1bGVYNjQg LSBQYWdlRmF1bHRIYW5kbGVyOiBDcjIgLSAlbHhcbiIsDQo+ID4gPiArIFBGQWRkcmVzcykpOw0K PiA+ID4NCj4gPiA+ICAgIGlmIChQRkFkZHJlc3MgPj0gUGh5TWFzayArIFNJWkVfNEtCKSB7DQo+ ID4gPiAgICAgIHJldHVybiBQYWdlRmF1bHRDb250ZXh0LT5PcmlnaW5hbEhhbmRsZXI7DQo+ID4g Pg0K