From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 77EBE21F3882D for ; Fri, 13 Oct 2017 01:52:02 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Oct 2017 01:55:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,370,1503385200"; d="scan'208";a="138084003" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga004.jf.intel.com with ESMTP; 13 Oct 2017 01:55:33 -0700 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 13 Oct 2017 01:55:32 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 13 Oct 2017 01:55:32 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.152]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.159]) with mapi id 14.03.0319.002; Fri, 13 Oct 2017 16:55:30 +0800 From: "Yao, Jiewen" To: "Zhang, Chao B" CC: "edk2-devel@lists.01.org" , "Long, Qin" , "sean.brogan@microsoft.com" , "Yao, Jiewen" Thread-Topic: [PATCH V2] SecurityPkg\Tcg2Pei: FV measure performance enhancement Thread-Index: AQHTQ/Sa8+UKYz1RQU+uF5HOQ5LVgaLheiAp Date: Fri, 13 Oct 2017 08:55:29 +0000 Message-ID: References: <20171013072549.41328-1-chao.b.zhang@intel.com> In-Reply-To: <20171013072549.41328-1-chao.b.zhang@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: MIME-Version: 1.0 Subject: Re: [PATCH V2] SecurityPkg\Tcg2Pei: FV measure performance enhancement X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Oct 2017 08:52:02 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 VGhhbmsgeW91IENoYW8hDQoNCkkgaGF2ZSAyIG1pbm9yIHN1Z2dlc3Rpb24uDQoxKSBJIGtub3cg eW91IGRpZCBsb3RzIG9mIHVuaXQgdGVzdC4NCldvdWxkIHlvdSBwbGVhc2Ugc2hhcmUgdGhlIGlu Zm9ybWF0aW9uIHRvIGFsbCBvZiB1cz8NCg0KMikgSSBmb3VuZCB0aGUgcHJlLWhhc2gvdHBtLW1h c2sgbWlzbWF0Y2ggY2FzZSBtaWdodCBiZSBtaXN1bmRlcnN0b29kLg0KV291bGQgeW91IHBsZWFz ZSBhZGQgc29tZSBjb21tZW50IGluIHRoZSBwcGkgaGVhZGVyIGZpbGUgdG8gZGVzY3JpYmUgdGhl IGV4cGVjdGF0aW9uIGNsZWFybHk/DQoNCldpdGggY29tbWVudCB1cGRhdGUgZm9yIDIpIGFuZCB1 bml0IHRlc3QgZGVzY3JpcHRpb24gZm9yIDEpLCByZXZpZXdlZC1ieSBqaWV3ZW4ueWFvQGludGVs LmNvbQ0KDQp0aGFuayB5b3UhDQpZYW8sIEppZXdlbg0KDQoNCj4g1NogMjAxN8TqMTDUwjEzyNWj rM/CzuczOjI2o6xaaGFuZywgQ2hhbyBCIDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPiDQtLXAo7oN Cj4gDQo+IDEuIExldmVyYWdlIFByZS1IYXNoZWQgRlYgUFBJIHRvIHJlZHVjZSBkdXBsaWNhdGVk IGhhc2gNCj4gMi4gT25seSBtZWFzdXJlIEJGViBhdCB0aGUgYmVnaW5uaW5nLiBPdGhlciBGVnMg YXJlIG1lYXN1cmVkIGluIEZWaW5mbyBjYWxsYmFjayB3aXRoIG5lc3RlZA0KPiAgIEZWIGNoZWNr LiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mg0KPiAN Cj4gQ2M6IExvbmcgUWluIDxxaW4ubG9uZ0BpbnRlbC5jb20+DQo+IENjOiBZYW8gSmlld2VuIDxq aWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNy b3NvZnQuY29tPg0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBB Z3JlZW1lbnQgMS4wDQo+IFNpZ25lZC1vZmYtYnk6IENoYW8gWmhhbmcgPGNoYW8uYi56aGFuZ0Bp bnRlbC5jb20+DQo+IC0tLQ0KPiAuLi4vSW5jbHVkZS9QcGkvRmlybXdhcmVWb2x1bWVJbmZvUHJl aGFzaGVkRlYuaCAgICB8ICA3MCArKysrKysNCj4gU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVj ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0NCj4gU2VjdXJpdHlQa2cvVGNnL1RjZzJQ ZWkvVGNnMlBlaS5jICAgICAgICAgICAgICAgICAgfCAyNDUgKysrKysrKysrKysrKysrLS0tLS0t DQo+IFNlY3VyaXR5UGtnL1RjZy9UY2cyUGVpL1RjZzJQZWkuaW5mICAgICAgICAgICAgICAgIHwg ICAyICsNCj4gNCBmaWxlcyBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25z KC0pDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBTZWN1cml0eVBrZy9JbmNsdWRlL1BwaS9GaXJtd2Fy ZVZvbHVtZUluZm9QcmVoYXNoZWRGVi5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvU2VjdXJpdHlQa2cv SW5jbHVkZS9QcGkvRmlybXdhcmVWb2x1bWVJbmZvUHJlaGFzaGVkRlYuaCBiL1NlY3VyaXR5UGtn L0luY2x1ZGUvUHBpL0Zpcm13YXJlVm9sdW1lSW5mb1ByZWhhc2hlZEZWLmgNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMjI3MzM1Nw0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL1NlY3VyaXR5UGtnL0luY2x1ZGUvUHBpL0Zpcm13YXJlVm9sdW1lSW5mb1ByZWhhc2hl ZEZWLmgNCj4gQEAgLTAsMCArMSw3MCBAQA0KPiArLyoqIEBmaWxlDQo+ICtQUEkgdG8gZGVzY3Jp YmUgYWxsIGhhc2ggZGlnZXN0cyBmb3IgYSBnaXZlbiBGVg0KPiArDQo+ICtDb3B5cmlnaHQgKGMp IDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1Ro aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gK2FyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QgTGljZW5zZQ0KPiArd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAraHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICtUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJ UywNCj4gK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyoqLw0KPiArLyoqDQo+ICtQUEkg dG8gZGVzY3JpYmUgYWxsIGhhc2ggZGlnZXN0cyBmb3IgYSBnaXZlbiBGVg0KPiArDQo+ICtDb3B5 cmlnaHQgKGMpIDIwMTcsIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbg0KPiArDQo+ICtBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ICttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKzEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSwNCj4gK3RoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuDQo+ICsyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQo+ICt0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u DQo+ICsgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uDQo+ICsNCj4gK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQNCj4gK0FOWSBFWFBSRVNTIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM SUVEDQo+ICtXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuDQo+ICtJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULA0KPiArSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICtCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0K PiArREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRg0KPiArTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRQ0KPiAr T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRg0KPiArQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuDQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fUEVJX0ZJUk1XQVJFX1ZPTFVN RV9JTkZPX1BSRUhBU0hFRF9GVl9IX18NCj4gKyNkZWZpbmUgX19QRUlfRklSTVdBUkVfVk9MVU1F X0lORk9fUFJFSEFTSEVEX0ZWX0hfXw0KPiArDQo+ICsjZGVmaW5lIEVES0lJX1BFSV9GSVJNV0FS RV9WT0xVTUVfSU5GT19QUkVIQVNIRURfRlZfUFBJX0dVSUQgXA0KPiArIHsgMHgzY2UxZTYzMSwg MHg3MDA4LCAweDQ3N2MsIHsgMHhhZCwgMHhhNywgMHg1ZCwgMHhjZiwgMHhjNywgMHhjMSwgMHg0 OSwgMHg0YiB9IH0NCj4gKw0KPiArLy8NCj4gKy8vIEhhc2hBbGdvSWQgaXMgVFBNX0FMR19JRCBp biBUcG0yMC5oDQo+ICsvLw0KPiArdHlwZWRlZiBzdHJ1Y3QgX0hBU0hfSU5GTyB7DQo+ICsgIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoQWxnb0lkOw0KPiAr ICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaFNpemU7DQo+ ICsgIC8vVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoW107DQo+ ICt9IEhBU0hfSU5GTzsNCj4gKw0KPiArLy8NCj4gKy8vIFRoaXMgUFBJIGluZGljYXRlcyBhIEZW IGlzIGFscmVhZHkgaGFzaGVkLCBwbGF0Zm9ybSBzaG91bGQgZW5zdXJlIDE6MSBtYXBwaW5nIGJl dHdlZW4gcHJlLWhhc2hlZCBQUEkgYW5kIEZWLg0KPiArLy8gVGhlIENvdW50IGZpZWxkIGluIFBQ SSBpcyBmb2xsb3dlZCBieSBDb3VudCBudW1iZXIgb2YgRlYgaGFzaCBpbmZvIGVudHJpZXMsIHdo aWNoIGNhbiBiZSBleHRlbmRlZCB0byBQQ1IgYW5kIGxvZ2dlZCB0byBUQ0cgZXZlbnQgbG9nIGRp cmVjdGx5IGJ5IFRDRyBtb2R1bGVzLg0KPiArLy8NCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ2QmFzZTsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ2TGVuZ3RoOw0KPiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnQ7DQo+ICsg IC8vSEFTSF9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoSW5mb1tdOw0K PiArfSBFREtJSV9QRUlfRklSTVdBUkVfVk9MVU1FX0lORk9fUFJFSEFTSEVEX0ZWX1BQSTsNCj4g Kw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdFZGtpaVBlaUZpcm13YXJlVm9sdW1lSW5mb1ByZWhhc2hl ZEZ2UHBpR3VpZDsNCj4gKw0KPiArI2VuZGlmDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5 UGtnL1NlY3VyaXR5UGtnLmRlYyBiL1NlY3VyaXR5UGtnL1NlY3VyaXR5UGtnLmRlYw0KPiBpbmRl eCA3YTkwMGRjLi40NWQ5NWM1IDEwMDY0NA0KPiAtLS0gYS9TZWN1cml0eVBrZy9TZWN1cml0eVBr Zy5kZWMNCj4gKysrIGIvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjDQo+IEBAIC03LDYgKzcs NyBAQA0KPiAjDQo+ICMgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAjIChDKSBDb3B5cmlnaHQgMjAxNSBIZXds ZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUCA8QlI+DQo+ICsjIENvcHlyaWdo dCAoYykgMjAxNywgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4g PEJSPg0KPiAjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlcg0KPiAjIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uDQo+ICMgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gQEAgLTIyMiw2ICsyMjMsOSBAQA0KPiAgICMjIEluY2x1ZGUvUHBpL0Zpcm13YXJlVm9sdW1l SW5mb01lYXN1cmVtZW50RXhjbHVkZWQuaA0KPiAgIGdFZmlQZWlGaXJtd2FyZVZvbHVtZUluZm9N ZWFzdXJlbWVudEV4Y2x1ZGVkUHBpR3VpZCA9IHsgMHg2ZTA1NmZmOSwgMHhjNjk1LCAweDQzNjQs IHsgMHg5ZSwgMHgyYywgMHg2MSwgMHgyNiwgMHhmNSwgMHhjZSwgMHhlYSwgMHhhZSB9IH0NCj4g DQo+ICsgICMjIEluY2x1ZGUvUHBpL0Zpcm13YXJlVm9sdW1lSW5mb1ByZWhhc2hlZEZWLmgNCj4g KyAgZ0Vka2lpUGVpRmlybXdhcmVWb2x1bWVJbmZvUHJlaGFzaGVkRnZQcGlHdWlkID0geyAweDNj ZTFlNjMxLCAweDcwMDgsIDB4NDc3YywgeyAweGFkLCAweGE3LCAweDVkLCAweGNmLCAweGM3LCAw eGMxLCAweDQ5LCAweDRiIH0gfQ0KPiArDQo+ICMNCj4gIyBbRXJyb3IuZ0VmaVNlY3VyaXR5UGtn VG9rZW5TcGFjZUd1aWRdDQo+ICMgICAweDgwMDAwMDAxIHwgSW52YWxpZCB2YWx1ZSBwcm92aWRl ZC4NCj4gQEAgLTQ1Miw5ICs0NTYsMTAgQEANCj4gDQo+IFtQY2RzRHluYW1pYywgUGNkc0R5bmFt aWNFeF0NCj4gDQo+IC0gICMjIFRoaXMgUENEIGluZGljYXRlcyBIYXNoIG1hc2sgZm9yIFRQTSAy LjAuPEJSPjxCUj4NCj4gKyAgIyMgVGhpcyBQQ0QgaW5kaWNhdGVzIEhhc2ggbWFzayBmb3IgVFBN IDIuMC4gQml0IGRlZmluaXRpb24gc3RyaWN0bHkgZm9sbG93cyBUQ0cgQWxnb3JpdGhtIFJlZ2lz dHJ5LjxCUj48QlI+DQo+ICAgIyAgSWYgdGhpcyBiaXQgaXMgc2V0LCB0aGF0IG1lYW5zIHRoaXMg YWxnb3JpdGhtIGlzIG5lZWRlZCB0byBleHRlbmQgdG8gUENSLjxCUj4NCj4gICAjICBJZiB0aGlz IGJpdCBpcyBjbGVhciwgdGhhdCBtZWFucyB0aGlzIGFsZ29yaXRobSBpcyBOT1QgbmVlZGVkIHRv IGV4dGVuZCB0byBQQ1IuPEJSPg0KPiArICAjICBJZiBhbGwgdGhlIGJpdHMgYXJlIGNsZWFyLCB0 aGF0IG1lYW5zIGhhc2ggYWxnb3JpdGhtIGlzIGRldGVybWluZWQgYnkgY3VycmVudCBBY3RpdmUg UENSIEJhbmtzLjxCUj4NCj4gICAjICAgIEJJVDAgIC0gIFNIQTEuPEJSPg0KPiAgICMgICAgQklU MSAgLSAgU0hBMjU2LjxCUj4NCj4gICAjICAgIEJJVDIgIC0gIFNIQTM4NC48QlI+DQo+IGRpZmYg LS1naXQgYS9TZWN1cml0eVBrZy9UY2cvVGNnMlBlaS9UY2cyUGVpLmMgYi9TZWN1cml0eVBrZy9U Y2cvVGNnMlBlaS9UY2cyUGVpLmMNCj4gaW5kZXggNjlhZGFkNC4uYTdhZTMzNSAxMDA2NDQNCj4g LS0tIGEvU2VjdXJpdHlQa2cvVGNnL1RjZzJQZWkvVGNnMlBlaS5jDQo+ICsrKyBiL1NlY3VyaXR5 UGtnL1RjZy9UY2cyUGVpL1RjZzJQZWkuYw0KPiBAQCAtMiw2ICsyLDcgQEANCj4gICBJbml0aWFs aXplIFRQTTIgZGV2aWNlIGFuZCBtZWFzdXJlIEZWcyBiZWZvcmUgaGFuZGluZyBvZmYgY29udHJv bCB0byBEWEUuDQo+IA0KPiBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE3LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtDb3B5cmlnaHQgKGMpIDIwMTcsIE1p Y3Jvc29mdCBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyANCj4gYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlIA0KPiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0IA0KPiBAQCAtMjIsNiArMjMs NyBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAjaW5jbHVkZSA8UHBpL0Zpcm13YXJlVm9sdW1l Lmg+DQo+ICNpbmNsdWRlIDxQcGkvRW5kT2ZQZWlQaGFzZS5oPg0KPiAjaW5jbHVkZSA8UHBpL0Zp cm13YXJlVm9sdW1lSW5mb01lYXN1cmVtZW50RXhjbHVkZWQuaD4NCj4gKyNpbmNsdWRlIDxQcGkv RmlybXdhcmVWb2x1bWVJbmZvUHJlaGFzaGVkRlYuaD4NCj4gDQo+ICNpbmNsdWRlIDxHdWlkL1Rj Z0V2ZW50SG9iLmg+DQo+ICNpbmNsdWRlIDxHdWlkL01lYXN1cmVkRnZIb2IuaD4NCj4gQEAgLTEz Myw3ICsxMzUsNiBAQCBFRklfUEVJX05PVElGWV9ERVNDUklQVE9SICAgICAgICAgICBtTm90aWZ5 TGlzdFtdID0gew0KPiAgIH0NCj4gfTsNCj4gDQo+IC1FRklfUEVJX0ZJUk1XQVJFX1ZPTFVNRV9J TkZPX01FQVNVUkVNRU5UX0VYQ0xVREVEX1BQSSAqbU1lYXN1cmVtZW50RXhjbHVkZWRGdlBwaTsN Cj4gDQo+IC8qKg0KPiAgIFJlY29yZCBhbGwgbWVhc3VyZWQgRmlybXdhcmUgVm9sdW0gSW5mb3Jt YXRpb24gaW50byBhIEd1aWQgSG9iDQo+IEBAIC0yMTUsNiArMjE2LDEzIEBAIFN5bmNQY3JBbGxv Y2F0aW9uc0FuZFBjck1hc2sgKA0KPiAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0K PiAgIFRwbTJQY3JNYXNrID0gUGNkR2V0MzIgKFBjZFRwbTJIYXNoTWFzayk7DQo+ICsgIGlmIChU cG0yUGNyTWFzayA9PSAwKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBpZiBQY2RUUG0ySGFzaE1h c2sgaXMgemVybywgdXNlIEFjdGl2ZVBjciBzZXR0aW5nDQo+ICsgICAgLy8NCj4gKyAgICBQY2RT ZXQzMlMgKFBjZFRwbTJIYXNoTWFzaywgVHBtQWN0aXZlUGNyQmFua3MpOw0KPiArICAgIFRwbTJQ Y3JNYXNrID0gVHBtQWN0aXZlUGNyQmFua3M7DQo+ICsgIH0NCj4gDQo+ICAgLy8NCj4gICAvLyBG aW5kIHRoZSBpbnRlcnNlY3Rpb24gb2YgUGNkIHN1cHBvcnQgYW5kIFRQTSBzdXBwb3J0Lg0KPiBA QCAtNDU1LDUzICs0NjMsMTUyIEBAIE1lYXN1cmVGdkltYWdlICgNCj4gICBJTiBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgICAgRnZMZW5ndGgNCj4gICApDQo+IHsNCj4gLSAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiAtICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiAtICBFRklfUExBVEZPUk1fRklSTVdBUkVfQkxPQiAg ICAgICAgRnZCbG9iOw0KPiAtICBUQ0dfUENSX0VWRU5UX0hEUiAgICAgICAgICAgICAgICAgVGNn RXZlbnRIZHI7DQo+IC0NCj4gLSAgLy8NCj4gLSAgLy8gQ2hlY2sgaWYgaXQgaXMgaW4gRXhjbHVk ZWQgRlYgbGlzdA0KPiAtICAvLw0KPiAtICBpZiAobU1lYXN1cmVtZW50RXhjbHVkZWRGdlBwaSAh PSBOVUxMKSB7DQo+IC0gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgbU1lYXN1cmVtZW50RXhj bHVkZWRGdlBwaS0+Q291bnQ7IEluZGV4ICsrKSB7DQo+IC0gICAgICBpZiAobU1lYXN1cmVtZW50 RXhjbHVkZWRGdlBwaS0+RnZbSW5kZXhdLkZ2QmFzZSA9PSBGdkJhc2UpIHsNCj4gLSAgICAgICAg REVCVUcgKChERUJVR19JTkZPLCAiVGhlIEZWIHdoaWNoIGlzIGV4Y2x1ZGVkIGJ5IFRjZzJQZWkg c3RhcnRzIGF0OiAweCV4XG4iLCBGdkJhc2UpKTsNCj4gLSAgICAgICAgREVCVUcgKChERUJVR19J TkZPLCAiVGhlIEZWIHdoaWNoIGlzIGV4Y2x1ZGVkIGJ5IFRjZzJQZWkgaGFzIHRoZSBzaXplOiAw eCV4XG4iLCBGdkxlbmd0aCkpOw0KPiAtICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4Ow0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9QTEFURk9STV9GSVJNV0FSRV9CTE9CICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZ2QmxvYjsNCj4gKyAgVENHX1BDUl9FVkVOVF9IRFIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGNnRXZlbnRIZHI7DQo+ICsgIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbmNlOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUcG0ySGFzaE1hc2s7DQo+ICsgIFRQTUxfRElHRVNUX1ZBTFVFUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERpZ2VzdExpc3Q7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZ2VzdENvdW50Ow0KPiArICBFRklf UEVJX0ZJUk1XQVJFX1ZPTFVNRV9JTkZPX01FQVNVUkVNRU5UX0VYQ0xVREVEX1BQSSAqTWVhc3Vy ZW1lbnRFeGNsdWRlZEZ2UHBpOw0KPiArICBFREtJSV9QRUlfRklSTVdBUkVfVk9MVU1FX0lORk9f UFJFSEFTSEVEX0ZWX1BQSSAgICAgICAqUHJlaGFzaGVkRnZQcGk7DQo+ICsgIEhBU0hfSU5GTyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQcmVIYXNoSW5mbzsN Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSGFzaEFsZ29NYXNrOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIENoZWNrIEV4Y2x1ZGVkIEZW IGxpc3QNCj4gKyAgLy8NCj4gKyAgSW5zdGFuY2UgPSAwOw0KPiArICBkbyB7DQo+ICsgICAgU3Rh dHVzID0gUGVpU2VydmljZXNMb2NhdGVQcGkoDQo+ICsgICAgICAgICAgICAgICAgICZnRWZpUGVp RmlybXdhcmVWb2x1bWVJbmZvTWVhc3VyZW1lbnRFeGNsdWRlZFBwaUd1aWQsDQo+ICsgICAgICAg ICAgICAgICAgIEluc3RhbmNlLA0KPiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAg ICAgICAgICAgICAoVk9JRCoqKSZNZWFzdXJlbWVudEV4Y2x1ZGVkRnZQcGkNCj4gKyAgICAgICAg ICAgICAgICAgKTsNCj4gKyAgICBpZiAoIUVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBNZWFzdXJlbWVudEV4Y2x1ZGVkRnZQcGktPkNvdW50OyBJ bmRleCArKykgew0KPiArICAgICAgICBpZiAoTWVhc3VyZW1lbnRFeGNsdWRlZEZ2UHBpLT5GdltJ bmRleF0uRnZCYXNlID09IEZ2QmFzZQ0KPiArICAgICAgICAgJiYgTWVhc3VyZW1lbnRFeGNsdWRl ZEZ2UHBpLT5GdltJbmRleF0uRnZMZW5ndGggPT0gRnZMZW5ndGgpIHsNCj4gKyAgICAgICAgICBE RUJVRyAoKERFQlVHX0lORk8sICJUaGUgRlYgd2hpY2ggaXMgZXhjbHVkZWQgYnkgVGNnMlBlaSBz dGFydHMgYXQ6IDB4JXhcbiIsIEZ2QmFzZSkpOw0KPiArICAgICAgICAgIERFQlVHICgoREVCVUdf SU5GTywgIlRoZSBGViB3aGljaCBpcyBleGNsdWRlZCBieSBUY2cyUGVpIGhhcyB0aGUgc2l6ZTog MHgleFxuIiwgRnZMZW5ndGgpKTsNCj4gKyAgICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ICsgICAgICAgIH0NCj4gICAgICAgfQ0KPiArDQo+ICsgICAgICBJbnN0YW5jZSsrOw0KPiAgICAg fQ0KPiAtICB9DQo+ICsgIH0gd2hpbGUgKCFFRklfRVJST1IoU3RhdHVzKSk7DQo+IA0KPiAgIC8v DQo+IC0gIC8vIENoZWNrIHdoZXRoZXIgRlYgaXMgaW4gdGhlIG1lYXN1cmVkIEZWIGxpc3QuDQo+ ICsgIC8vIENoZWNrIG1lYXN1cmVkIEZWIGxpc3QNCj4gICAvLw0KPiAgIGZvciAoSW5kZXggPSAw OyBJbmRleCA8IG1NZWFzdXJlZEJhc2VGdkluZGV4OyBJbmRleCArKykgew0KPiAtICAgIGlmICht TWVhc3VyZWRCYXNlRnZJbmZvW0luZGV4XS5CbG9iQmFzZSA9PSBGdkJhc2UpIHsNCj4gKyAgICBp ZiAobU1lYXN1cmVkQmFzZUZ2SW5mb1tJbmRleF0uQmxvYkJhc2UgPT0gRnZCYXNlICYmIG1NZWFz dXJlZEJhc2VGdkluZm9bSW5kZXhdLkJsb2JMZW5ndGggPT0gRnZMZW5ndGgpIHsNCj4gKyAgICAg IERFQlVHICgoREVCVUdfSU5GTywgIlRoZSBGViB3aGljaCBpcyBhbHJlYWR5IG1lYXN1cmVkIGJ5 IFRjZzJQZWkgc3RhcnRzIGF0OiAweCV4XG4iLCBGdkJhc2UpKTsNCj4gKyAgICAgIERFQlVHICgo REVCVUdfSU5GTywgIlRoZSBGViB3aGljaCBpcyBhbHJlYWR5IG1lYXN1cmVkIGJ5IFRjZzJQZWkg aGFzIHRoZSBzaXplOiAweCV4XG4iLCBGdkxlbmd0aCkpOw0KPiAgICAgICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ICAgICB9DQo+ICAgfQ0KPiAtICANCj4gKw0KPiAgIC8vDQo+IC0gIC8vIE1lYXN1 cmUgYW5kIHJlY29yZCB0aGUgRlYgdG8gdGhlIFRQTQ0KPiArICAvLyBDaGVjayBwcmUtaGFzaGVk IEZWIGxpc3QNCj4gICAvLw0KPiAtICBGdkJsb2IuQmxvYkJhc2UgICA9IEZ2QmFzZTsNCj4gLSAg RnZCbG9iLkJsb2JMZW5ndGggPSBGdkxlbmd0aDsNCj4gKyAgSW5zdGFuY2UgICAgID0gMDsNCj4g KyAgVHBtMkhhc2hNYXNrID0gUGNkR2V0MzIgKFBjZFRwbTJIYXNoTWFzayk7DQo+ICsgIGRvIHsN Cj4gKyAgICBTdGF0dXMgPSBQZWlTZXJ2aWNlc0xvY2F0ZVBwaSAoDQo+ICsgICAgICAgICAgICAg ICAmZ0Vka2lpUGVpRmlybXdhcmVWb2x1bWVJbmZvUHJlaGFzaGVkRnZQcGlHdWlkLA0KPiArICAg ICAgICAgICAgICAgSW5zdGFuY2UsDQo+ICsgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAg ICAgICAgICAgKFZPSUQqKikmUHJlaGFzaGVkRnZQcGkNCj4gKyAgICAgICAgICAgICAgICk7DQo+ ICsgICAgaWYgKCFFRklfRVJST1IoU3RhdHVzKSAmJiBQcmVoYXNoZWRGdlBwaS0+RnZCYXNlID09 IEZ2QmFzZSAmJiBQcmVoYXNoZWRGdlBwaS0+RnZMZW5ndGggPT0gRnZMZW5ndGgpIHsNCj4gKyAg ICAgIFplcm9NZW0gKCZEaWdlc3RMaXN0LCBzaXplb2YoVFBNTF9ESUdFU1RfVkFMVUVTKSk7DQo+ ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBUaGUgRlYgaXMgcHJlaGFzaGVkLCBjaGVjayBh Z2FpbnN0IFRQTSBoYXNoIG1hc2sNCj4gKyAgICAgIC8vDQo+ICsgICAgICBQcmVIYXNoSW5mbyA9 IChIQVNIX0lORk8gKikoUHJlaGFzaGVkRnZQcGkgKyAxKTsNCj4gKyAgICAgIGZvciAoSW5kZXgg PSAwLCBEaWdlc3RDb3VudCA9IDA7IEluZGV4IDwgUHJlaGFzaGVkRnZQcGktPkNvdW50OyBJbmRl eCsrKSB7DQo+ICsgICAgICAgIERFQlVHKChERUJVR19JTkZPLCAiSGFzaCBBbGdvIElEIGluIFBy ZWhhc2hlZEZ2UHBpPTB4JXhcbiIsIFByZUhhc2hJbmZvLT5IYXNoQWxnb0lkKSk7DQo+ICsgICAg ICAgIEhhc2hBbGdvTWFzayA9IEdldEhhc2hNYXNrRnJvbUFsZ28oUHJlSGFzaEluZm8tPkhhc2hB bGdvSWQpOw0KPiArICAgICAgICBpZiAoKFRwbTJIYXNoTWFzayAmIEhhc2hBbGdvTWFzaykgIT0g MCApIHsNCj4gKyAgICAgICAgICAvLw0KPiArICAgICAgICAgIC8vIEhhc2ggaXMgcmVxdWlyZWQs IGNvcHkgaXQgdG8gRGlnZXN0TGlzdA0KPiArICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgV3Jp dGVVbmFsaWduZWQxNigmKERpZ2VzdExpc3QuZGlnZXN0c1tEaWdlc3RDb3VudF0uaGFzaEFsZyks IFByZUhhc2hJbmZvLT5IYXNoQWxnb0lkKTsNCj4gKyAgICAgICAgICBDb3B5TWVtICgNCj4gKyAg ICAgICAgICAgICZEaWdlc3RMaXN0LmRpZ2VzdHNbRGlnZXN0Q291bnRdLmRpZ2VzdCwNCj4gKyAg ICAgICAgICAgIFByZUhhc2hJbmZvICsgMSwNCj4gKyAgICAgICAgICAgIFByZUhhc2hJbmZvLT5I YXNoU2l6ZQ0KPiArICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgICBEaWdlc3RDb3VudCsrOw0K PiArICAgICAgICAgIC8vDQo+ICsgICAgICAgICAgLy8gQ2xlYW4gdGhlIGNvcnJlc3BvbmRpbmcg SGFzaCBBbGdvIG1hc2sgYml0DQo+ICsgICAgICAgICAgLy8NCj4gKyAgICAgICAgICBUcG0ySGFz aE1hc2sgJj0gfkhhc2hBbGdvTWFzazsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBQcmVIYXNo SW5mbyA9IChIQVNIX0lORk8gKikoKFVJTlQ4ICopKFByZUhhc2hJbmZvICsgMSkgKyBQcmVIYXNo SW5mby0+SGFzaFNpemUpOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICBXcml0ZVVuYWxpZ25l ZDMyKCZEaWdlc3RMaXN0LmNvdW50LCBEaWdlc3RDb3VudCk7DQo+IA0KPiAtICBERUJVRyAoKERF QlVHX0lORk8sICJUaGUgRlYgd2hpY2ggaXMgbWVhc3VyZWQgYnkgVGNnMlBlaSBzdGFydHMgYXQ6 IDB4JXhcbiIsIEZ2QmxvYi5CbG9iQmFzZSkpOw0KPiAtICBERUJVRyAoKERFQlVHX0lORk8sICJU aGUgRlYgd2hpY2ggaXMgbWVhc3VyZWQgYnkgVGNnMlBlaSBoYXMgdGhlIHNpemU6IDB4JXhcbiIs IEZ2QmxvYi5CbG9iTGVuZ3RoKSk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAg SW5zdGFuY2UrKzsNCj4gKyAgfSB3aGlsZSAoIUVGSV9FUlJPUihTdGF0dXMpKTsNCj4gDQo+IC0g IFRjZ0V2ZW50SGRyLlBDUkluZGV4ID0gMDsNCj4gKyAgLy8NCj4gKyAgLy8gSW5pdCB0aGUgbG9n IGV2ZW50IGZvciBGViBtZWFzdXJlbWVudA0KPiArICAvLw0KPiArICBGdkJsb2IuQmxvYkJhc2Ug ICAgICAgPSBGdkJhc2U7DQo+ICsgIEZ2QmxvYi5CbG9iTGVuZ3RoICAgICA9IEZ2TGVuZ3RoOw0K PiArICBUY2dFdmVudEhkci5QQ1JJbmRleCAgPSAwOw0KPiAgIFRjZ0V2ZW50SGRyLkV2ZW50VHlw ZSA9IEVWX0VGSV9QTEFURk9STV9GSVJNV0FSRV9CTE9COw0KPiAgIFRjZ0V2ZW50SGRyLkV2ZW50 U2l6ZSA9IHNpemVvZiAoRnZCbG9iKTsNCj4gDQo+IC0gIFN0YXR1cyA9IEhhc2hMb2dFeHRlbmRF dmVudCAoDQo+IC0gICAgICAgICAgICAgMCwNCj4gLSAgICAgICAgICAgICAoVUlOVDgqKSAoVUlO VE4pIEZ2QmxvYi5CbG9iQmFzZSwNCj4gLSAgICAgICAgICAgICAoVUlOVE4pIEZ2QmxvYi5CbG9i TGVuZ3RoLA0KPiAtICAgICAgICAgICAgICZUY2dFdmVudEhkciwNCj4gLSAgICAgICAgICAgICAo VUlOVDgqKSAmRnZCbG9iDQo+IC0gICAgICAgICAgICAgKTsNCj4gKyAgaWYgKFRwbTJIYXNoTWFz ayA9PSAwKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBGViBwcmUtaGFzaCBhbGdvcyBjb21wbHkg d2l0aCBjdXJyZW50IFRQTSBoYXNoIHJlcXVpcmVtZW50DQo+ICsgICAgLy8gU2tpcCBoYXNoaW5n IHN0ZXAgaW4gbWVhc3VyZSwgb25seSBleHRlbmQgRGlnZXN0TGlzdCB0byBQQ1IgYW5kIGxvZyBl dmVudA0KPiArICAgIC8vDQo+ICsgICAgU3RhdHVzID0gVHBtMlBjckV4dGVuZCgNCj4gKyAgICAg ICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICAmRGlnZXN0TGlzdA0KPiArICAgICAgICAg ICAgICAgKTsNCj4gKw0KPiArICAgIGlmICghRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICAg ICBTdGF0dXMgPSBMb2dIYXNoRXZlbnQgKCZEaWdlc3RMaXN0LCAmVGNnRXZlbnRIZHIsIChVSU5U OCopICZGdkJsb2IpOw0KPiArICAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIlRoZSBwcmUtaGFz aGVkIEZWIHdoaWNoIGlzIGV4dGVuZGVkICYgbG9nZ2VkIGJ5IFRjZzJQZWkgc3RhcnRzIGF0OiAw eCV4XG4iLCBGdkJsb2IuQmxvYkJhc2UpKTsNCj4gKyAgICAgICBERUJVRyAoKERFQlVHX0lORk8s ICJUaGUgcHJlLWhhc2hlZCBGViB3aGljaCBpcyBleHRlbmRlZCAmIGxvZ2dlZCBieSBUY2cyUGVp IGhhcyB0aGUgc2l6ZTogMHgleFxuIiwgRnZCbG9iLkJsb2JMZW5ndGgpKTsNCj4gKyAgICB9IGVs c2UgaWYgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQo+ICsgICAgICBCdWlsZEd1aWRI b2IgKCZnVHBtRXJyb3JIb2JHdWlkLDApOw0KPiArICAgICAgUkVQT1JUX1NUQVRVU19DT0RFICgN Cj4gKyAgICAgICAgRUZJX0VSUk9SX0NPREUgfCBFRklfRVJST1JfTUlOT1IsDQo+ICsgICAgICAg IChQY2RHZXQzMiAoUGNkU3RhdHVzQ29kZVN1YkNsYXNzVHBtRGV2aWNlKSB8IEVGSV9QX0VDX0lO VEVSRkFDRV9FUlJPUikNCj4gKyAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsgIH0gZWxzZSB7DQo+ ICsgICAgLy8NCj4gKyAgICAvLyBIYXNoIHRoZSBGViwgZXh0ZW5kIGRpZ2VzdCB0byB0aGUgVFBN IGFuZCBsb2cgVENHIGV2ZW50DQo+ICsgICAgLy8NCj4gKyAgICBTdGF0dXMgPSBIYXNoTG9nRXh0 ZW5kRXZlbnQgKA0KPiArICAgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAgIChVSU5U OCopIChVSU5UTikgRnZCbG9iLkJsb2JCYXNlLA0KPiArICAgICAgICAgICAgICAgKFVJTlROKSBG dkJsb2IuQmxvYkxlbmd0aCwNCj4gKyAgICAgICAgICAgICAgICZUY2dFdmVudEhkciwNCj4gKyAg ICAgICAgICAgICAgIChVSU5UOCopICZGdkJsb2INCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsg ICAgREVCVUcgKChERUJVR19JTkZPLCAiVGhlIEZWIHdoaWNoIGlzIG1lYXN1cmVkIGJ5IFRjZzJQ ZWkgc3RhcnRzIGF0OiAweCV4XG4iLCBGdkJsb2IuQmxvYkJhc2UpKTsNCj4gKyAgICBERUJVRyAo KERFQlVHX0lORk8sICJUaGUgRlYgd2hpY2ggaXMgbWVhc3VyZWQgYnkgVGNnMlBlaSBoYXMgdGhl IHNpemU6IDB4JXhcbiIsIEZ2QmxvYi5CbG9iTGVuZ3RoKSk7DQo+ICsgIH0NCj4gKw0KPiArICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVGhl IEZWIHdoaWNoIGZhaWxlZCB0byBiZSBtZWFzdXJlZCBzdGFydHMgYXQ6IDB4JXhcbiIsIEZ2QmFz ZSkpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ICsgIH0NCj4gDQo+ICAgLy8NCj4gICAvLyBB ZGQgbmV3IEZWIGludG8gdGhlIG1lYXN1cmVkIEZWIGxpc3QuDQo+IEBAIC01MzAsNDcgKzYzNyw0 NCBAQCBNZWFzdXJlTWFpbkJpb3MgKA0KPiAgICkNCj4gew0KPiAgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGdkluc3RhbmNlczsNCj4gICBFRklfUEVJX0ZWX0hBTkRMRSAgICAgICAgICAgICAg ICAgVm9sdW1lSGFuZGxlOw0KPiAgIEVGSV9GVl9JTkZPICAgICAgICAgICAgICAgICAgICAgICBW b2x1bWVJbmZvOw0KPiAgIEVGSV9QRUlfRklSTVdBUkVfVk9MVU1FX1BQSSAgICAgICAqRnZQcGk7 DQo+IA0KPiAgIFBFUkZfU1RBUlRfRVggKG1GaWxlSGFuZGxlLCAiRXZlbnRSZWMiLCAiVGNnMlBl aSIsIDAsIFBFUkZfSURfVENHMl9QRUkpOw0KPiAtICBGdkluc3RhbmNlcyAgICA9IDA7DQo+IC0g IHdoaWxlIChUUlVFKSB7DQo+IC0gICAgLy8NCj4gLSAgICAvLyBUcmF2ZXJzZSBhbGwgZmlybXdh cmUgdm9sdW1lIGluc3RhbmNlcyBvZiBTdGF0aWMgQ29yZSBSb290IG9mIFRydXN0IGZvciBNZWFz dXJlbWVudA0KPiAtICAgIC8vIChTLUNSVE0pLCB0aGlzIGZpcm13YXJlIHZvbHVtZSBtZWFzdXJl IHBvbGljeSBjYW4gYmUgbW9kaWZpZWQvZW5oYW5jZWQgYnkgc3BlY2lhbA0KPiAtICAgIC8vIHBs YXRmb3JtIGZvciBzcGVjaWFsIENSVE0gVFBNIG1lYXN1cmluZy4NCj4gLSAgICAvLw0KPiAtICAg IFN0YXR1cyA9IFBlaVNlcnZpY2VzRmZzRmluZE5leHRWb2x1bWUgKEZ2SW5zdGFuY2VzLCAmVm9s dW1lSGFuZGxlKTsNCj4gLSAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IC0gICAgICBi cmVhazsNCj4gLSAgICB9DQo+IC0gIA0KPiAtICAgIC8vDQo+IC0gICAgLy8gTWVhc3VyZSBhbmQg cmVjb3JkIHRoZSBmaXJtd2FyZSB2b2x1bWUgdGhhdCBpcyBkaXNwYXRjaGVkIGJ5IFBlaUNvcmUN Cj4gLSAgICAvLw0KPiAtICAgIFN0YXR1cyA9IFBlaVNlcnZpY2VzRmZzR2V0Vm9sdW1lSW5mbyAo Vm9sdW1lSGFuZGxlLCAmVm9sdW1lSW5mbyk7DQo+IC0gICAgQVNTRVJUX0VGSV9FUlJPUiAoU3Rh dHVzKTsNCj4gLSAgICAvLw0KPiAtICAgIC8vIExvY2F0ZSB0aGUgY29ycmVzcG9uZGluZyBGVl9Q UEkgYWNjb3JkaW5nIHRvIGZvdW5kZWQgRlYncyBmb3JtYXQgZ3VpZA0KPiAtICAgIC8vDQo+IC0g ICAgU3RhdHVzID0gUGVpU2VydmljZXNMb2NhdGVQcGkgKA0KPiAtICAgICAgICAgICAgICAgJlZv bHVtZUluZm8uRnZGb3JtYXQsIA0KPiAtICAgICAgICAgICAgICAgMCwgDQo+IC0gICAgICAgICAg ICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgKFZPSUQqKikmRnZQcGkNCj4gLSAgICAgICAg ICAgICAgICk7DQo+IC0gICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gLSAgICAgIE1l YXN1cmVGdkltYWdlICgoRUZJX1BIWVNJQ0FMX0FERFJFU1MpIChVSU5UTikgVm9sdW1lSW5mby5G dlN0YXJ0LCBWb2x1bWVJbmZvLkZ2U2l6ZSk7DQo+IC0gICAgfQ0KPiANCj4gLSAgICBGdkluc3Rh bmNlcysrOw0KPiAtICB9DQo+ICsgIC8vDQo+ICsgIC8vIE9ubHkgbWVhc3VyZSBCRlYgYXQgdGhl IHZlcnkgYmVnaW5uaW5nLiBPdGhlciBwYXJ0cyBvZiBTdGF0aWMgQ29yZSBSb290IG9mDQo+ICsg IC8vIFRydXN0IGZvciBNZWFzdXJlbWVudChTLUNSVE0pIHdpbGwgYmUgbWVhc3VyZWQgbGF0ZXIg b24gRnZJbmZvTm90aWZ5Lg0KPiArICAvLyBCRlYgaXMgcHJvY2Vzc2VkIHdpdGhvdXQgaW5zdGFs bGluZyBGViBJbmZvIFBwaS4gT3RoZXIgRlZzIGVpdGhlciBpbnNpZGUgQkZWIG9yDQo+ICsgIC8v IHJlcG9ydGVkIGJ5IHBsYXRmb3JtIHdpbGwgYmUgaW5zdGFsbGVkIHdpdGggRnYgSW5mbyBQcGkN Cj4gKyAgLy8gVGhpcyBmaXJtd2FyZSB2b2x1bWUgbWVhc3VyZSBwb2xpY3kgY2FuIGJlIG1vZGlm aWVkL2VuaGFuY2VkIGJ5IHNwZWNpYWwNCj4gKyAgLy8gcGxhdGZvcm0gZm9yIHNwZWNpYWwgQ1JU TSBUUE0gbWVhc3VyaW5nLg0KPiArICAvLw0KPiArICBTdGF0dXMgPSBQZWlTZXJ2aWNlc0Zmc0Zp bmROZXh0Vm9sdW1lICgwLCAmVm9sdW1lSGFuZGxlKTsNCj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBNZWFzdXJlIGFuZCByZWNvcmQgdGhlIGZp cm13YXJlIHZvbHVtZSB0aGF0IGlzIGRpc3BhdGNoZWQgYnkgUGVpQ29yZQ0KPiArICAvLw0KPiAr ICBTdGF0dXMgPSBQZWlTZXJ2aWNlc0Zmc0dldFZvbHVtZUluZm8gKFZvbHVtZUhhbmRsZSwgJlZv bHVtZUluZm8pOw0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArICAvLw0KPiAr ICAvLyBMb2NhdGUgdGhlIGNvcnJlc3BvbmRpbmcgRlZfUFBJIGFjY29yZGluZyB0byBmb3VuZGVk IEZWJ3MgZm9ybWF0IGd1aWQNCj4gKyAgLy8NCj4gKyAgU3RhdHVzID0gUGVpU2VydmljZXNMb2Nh dGVQcGkgKA0KPiArICAgICAgICAgICAgICZWb2x1bWVJbmZvLkZ2Rm9ybWF0LA0KPiArICAgICAg ICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAoVk9JRCoq KSZGdlBwaQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ICsNCj4gKyAgU3RhdHVzID0gTWVhc3VyZUZ2SW1hZ2UgKChFRklfUEhZU0lDQUxfQURE UkVTUykgKFVJTlROKSBWb2x1bWVJbmZvLkZ2U3RhcnQsIFZvbHVtZUluZm8uRnZTaXplKTsNCj4g Kw0KPiAgIFBFUkZfRU5EX0VYIChtRmlsZUhhbmRsZSwgIkV2ZW50UmVjIiwgIlRjZzJQZWkiLCAw LCBQRVJGX0lEX1RDRzJfUEVJICsgMSk7DQo+IA0KPiAtICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ICsgIHJldHVybiBTdGF0dXM7DQo+IH0NCj4gDQo+IC8qKg0KPiBAQCAtNjU1LDE0ICs3NTksNiBA QCBQZWltRW50cnlNUCAoDQo+IHsNCj4gICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiANCj4gLSAgU3RhdHVzID0gUGVpU2VydmljZXNMb2NhdGVQcGkgKA0KPiAt ICAgICAgICAgICAgICAgJmdFZmlQZWlGaXJtd2FyZVZvbHVtZUluZm9NZWFzdXJlbWVudEV4Y2x1 ZGVkUHBpR3VpZCwgDQo+IC0gICAgICAgICAgICAgICAwLCANCj4gLSAgICAgICAgICAgICAgIE5V TEwsDQo+IC0gICAgICAgICAgICAgICAoVk9JRCoqKSZtTWVhc3VyZW1lbnRFeGNsdWRlZEZ2UHBp DQo+IC0gICAgICAgICAgICAgICApOw0KPiAtICAvLyBEbyBub3QgY2hlY2sgc3RhdHVzLCBiZWNh dXNlIGl0IGlzIG9wdGlvbmFsDQo+IC0NCj4gICBtTWVhc3VyZWRCYXNlRnZJbmZvICA9IChFRklf UExBVEZPUk1fRklSTVdBUkVfQkxPQiAqKSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKEVGSV9Q TEFURk9STV9GSVJNV0FSRV9CTE9CKSAqIFBjZEdldDMyIChQY2RQZWlDb3JlTWF4RnZTdXBwb3J0 ZWQpKTsNCj4gICBBU1NFUlQgKG1NZWFzdXJlZEJhc2VGdkluZm8gIT0gTlVMTCk7DQo+ICAgbU1l YXN1cmVkQ2hpbGRGdkluZm8gPSAoRUZJX1BMQVRGT1JNX0ZJUk1XQVJFX0JMT0IgKikgQWxsb2Nh dGVaZXJvUG9vbCAoc2l6ZW9mIChFRklfUExBVEZPUk1fRklSTVdBUkVfQkxPQikgKiBQY2RHZXQz MiAoUGNkUGVpQ29yZU1heEZ2U3VwcG9ydGVkKSk7DQo+IEBAIC02NzMsNiArNzY5LDkgQEAgUGVp bUVudHJ5TVAgKA0KPiAgIH0NCj4gDQo+ICAgU3RhdHVzID0gTWVhc3VyZU1haW5CaW9zICgpOw0K PiArICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiAr ICB9DQo+IA0KPiAgIC8vDQo+ICAgLy8gUG9zdCBjYWxsYmFja3M6DQo+IGRpZmYgLS1naXQgYS9T ZWN1cml0eVBrZy9UY2cvVGNnMlBlaS9UY2cyUGVpLmluZiBiL1NlY3VyaXR5UGtnL1RjZy9UY2cy UGVpL1RjZzJQZWkuaW5mDQo+IGluZGV4IDFiNzllZTQuLmY3Yjg1NDQgMTAwNjQ0DQo+IC0tLSBh L1NlY3VyaXR5UGtnL1RjZy9UY2cyUGVpL1RjZzJQZWkuaW5mDQo+ICsrKyBiL1NlY3VyaXR5UGtn L1RjZy9UY2cyUGVpL1RjZzJQZWkuaW5mDQo+IEBAIC05LDYgKzksNyBAQA0KPiAjICBUaGlzIG1v ZHVsZSB3aWxsIGluaXRpYWxpemUgVFBNIGRldmljZSwgbWVhc3VyZSByZXBvcnRlZCBGVnMgYW5k IEJJT1MgdmVyc2lvbi4NCj4gIw0KPiAjIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTcsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0IChj KSAyMDE3LCBNaWNyb3NvZnQgQ29ycG9yYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ICMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAjIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiAjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp YnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiBA QCAtNzUsNiArNzYsNyBAQA0KPiAgIGdQZWlUcG1Jbml0aWFsaXplZFBwaUd1aWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19QUk9EVUNFUw0K PiAgIGdQZWlUcG1Jbml0aWFsaXphdGlvbkRvbmVQcGlHdWlkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMjIFBST0RVQ0VTDQo+ICAgZ0VmaUVuZE9mUGVpU2lnbmFsUHBpR3Vp ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgU09NRVRJTUVT X0NPTlNVTUVTICAgICAjIyBOT1RJRlkNCj4gKyAgZ0Vka2lpUGVpRmlybXdhcmVWb2x1bWVJbmZv UHJlaGFzaGVkRnZQcGlHdWlkICAgICAgICAgICAgICAgICAgICAgICAgIyMgU09NRVRJTUVTX0NP TlNVTUVTDQo+IA0KPiBbUGNkXQ0KPiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RGaXJtd2FyZVZlcnNpb25TdHJpbmcgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1F Uw0KPiAtLSANCj4gMS45LjUubXN5c2dpdC4xDQo+IA0K