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.100, mailfrom: liming.gao@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Wed, 14 Aug 2019 07:00:19 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Aug 2019 07:00:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,385,1559545200"; d="scan'208";a="260504920" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga001.jf.intel.com with ESMTP; 14 Aug 2019 07:00:18 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 14 Aug 2019 07:00:17 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 14 Aug 2019 07:00:17 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.112]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.139]) with mapi id 14.03.0439.000; Wed, 14 Aug 2019 22:00:15 +0800 From: "Liming Gao" To: Laszlo Ersek , "Kinney, Michael D" , "devel@edk2.groups.io" CC: Mike Turner , "Wang, Jian J" , "Wu, Hao A" , "Bi, Dandan" Subject: Re: [edk2-devel] [Patch] MdeModulePkg DxeCore: Fix for missing MAT update Thread-Topic: [edk2-devel] [Patch] MdeModulePkg DxeCore: Fix for missing MAT update Thread-Index: AQHVUSpjqnavFFiMDECnpfoJbqgILqb3oS+AgACuvICAAlyW0A== Date: Wed, 14 Aug 2019 14:00:15 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4D0EE7@SHSMSX104.ccr.corp.intel.com> References: <20190810141022.18228-1-liming.gao@intel.com> <66665886-fff1-248a-77e5-6b8fb6966f86@redhat.com> <96f6e8a3-7049-478a-a8f2-4389c06f0e12@redhat.com> In-Reply-To: <96f6e8a3-7049-478a-a8f2-4389c06f0e12@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGFjZDQ5NmUtMzFmNS00MzBhLTkwNjYtNTE1Y2EwMzc5YTZiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiNngzZW1xR245aHA3TkRnQjkyenJYQ0JlZUlQQTltZ1JGOTN4ZUx3SzRrYkRVaGRKSk1tTlhDZGdpUDNEMFhDMyJ9 dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvOg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBF cnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MTMsIDIwMTkgNTo0OCBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IEdhbywgTGltaW5nIDxsaW1pbmcu Z2FvQGludGVsLmNvbT4NCj4gQ2M6IE1pa2UgVHVybmVyIDxtaWtldHVyQG1pY3Jvc29mdC5jb20+ OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFd1LCBIYW8gQSA8aGFvLmEu d3VAaW50ZWwuY29tPjsgQmksIERhbmRhbg0KPiA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gU3Vi amVjdDogUmU6IFtlZGsyLWRldmVsXSBbUGF0Y2hdIE1kZU1vZHVsZVBrZyBEeGVDb3JlOiBGaXgg Zm9yIG1pc3NpbmcgTUFUIHVwZGF0ZQ0KPiANCj4gT24gMDgvMTMvMTkgMDE6MjIsIEtpbm5leSwg TWljaGFlbCBEIHdyb3RlOg0KPiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdy b3Vwcy5pb10NCj4gPj4gT24gQmVoYWxmIE9mIExhc3psbyBFcnNlaw0KPiA+PiBTZW50OiBNb25k YXksIEF1Z3VzdCAxMiwgMjAxOSA5OjI0IEFNDQo+ID4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5p bzsgR2FvLCBMaW1pbmcNCj4gPj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+PiBDYzogTWlr ZSBUdXJuZXIgPG1pa2V0dXJAbWljcm9zb2Z0LmNvbT47IFdhbmcsIEppYW4gSg0KPiA+PiA8amlh bi5qLndhbmdAaW50ZWwuY29tPjsgV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+Ow0KPiA+ PiBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2Vk azItZGV2ZWxdIFtQYXRjaF0gTWRlTW9kdWxlUGtnIER4ZUNvcmU6DQo+ID4+IEZpeCBmb3IgbWlz c2luZyBNQVQgdXBkYXRlDQo+ID4+DQo+ID4+IE9uIDA4LzEwLzE5IDE2OjEwLCBMaW1pbmcgR2Fv IHdyb3RlOg0KPiA+Pj4gRnJvbTogTWlrZSBUdXJuZXIgPG1pa2V0dXJAbWljcm9zb2Z0LmNvbT4N Cj4gPj4+DQo+ID4+PiBUaGUgRnBkdCBkcml2ZXIgKEZpcm13YXJlUGVyZm9ybWFuY2VEeGUpIHNh dmVzIGEgbWVtb3J5DQo+ID4+IGFkZHJlc3MgYWNyb3NzDQo+ID4+PiByZWJvb3RzLCBhbmQgdGhl biBkb2VzIGFuIEFsbG9jYXRlUGFnZSBmb3IgdGhhdCBtZW1vcnkNCj4gPj4gYWRkcmVzcy4NCj4g Pj4+IElmLCBvbiB0aGlzIGJvb3QsIHRoYXQgbWVtb3J5IGNvbWVzIGZyb20gYSBSdW50aW1lDQo+ ID4+IG1lbW9yeSBidWNrZXQsIHRoZQ0KPiA+Pj4gTUFUIHRhYmxlIGlzIG5vdCB1cGRhdGVkLiBU aGlzIGNhdXNlcyBXaW5kb3dzIHRvIGJvb3QNCj4gPj4gaW50byBSZWNvdmVyeS4NCj4gPj4NCj4g Pj4gKDEpIFdoYXQgaXMgIk1BVCI/DQo+ID4NCj4gPiBNZW1vcnkgQXR0cmlidXRlcyBUYWJsZSAo RUZJX01FTU9SWV9BVFRSSUJVVEVTX1RBQkxFKQ0KPiA+DQo+ID4+DQo+ID4+PiBUaGlzIHBhdGNo IGJsb2NrcyB0aGUgbWVtb3J5IG1hbmFnZXIgZnJvbSBjaGFuZ2luZyB0aGUNCj4gPj4gcGFnZSBm cm9tIGENCj4gPj4+IHNwZWNpYWwgYnVja2V0IHRvIGEgZGlmZmVyZW50IG1lbW9yeSB0eXBlLiAg T25jZSB0aGUNCj4gPj4gYnVja2V0cyBhcmUNCj4gPj4+IGFsbG9jYXRlZCwgd2UgZnJlZXplIHRo ZSBtZW1vcnkgcmFuZ2VzIGZvciB0aGUgT1MsIGFuZA0KPiA+PiBmcmFnbWVudGluZyB0aGUNCj4g Pj4+IHNwZWNpYWwgYnVja2V0cyB3aWxsIGNhdXNlIGVycm9ycyByZXN1bWluZyBmcm9tDQo+ID4+ IGhpYmVybmF0ZS4NCj4gPj4NCj4gPj4gKDIpIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBDb3Jl Q29udmVydFBhZ2VzKCkgd2lsbCBvbmx5DQo+ID4+IGhhbmQgb3V0IHRoZSByZXF1ZXN0ZWQgcGFn ZXMgaWYgdGhvc2UgcGFnZXMgYXJlIGN1cnJlbnRseQ0KPiA+PiBmcmVlLiBJIHN1Z2dlc3QgY2xh cmlmeWluZyB0aGUgY29tbWl0IG1lc3NhZ2UgdGhhdCB0aGUNCj4gPj4gaW50ZW50IGlzIHRvIHBy ZXZlbnQgdGhlIGFsbG9jYXRpb24gb2Ygb3RoZXJ3aXNlICpmcmVlKg0KPiA+PiBwYWdlcywgaWYg dGhlIGFsbG9jYXRpb24gd291bGQgZnJhZ21lbnQgc3BlY2lhbCBidWNrZXRzLg0KPiA+Pg0KPiA+ PiAoMykgSSBkb24ndCB1bmRlcnN0YW5kIHRoZSBjb25qdW5jdGlvbiAiYW5kIi4gSSB3b3VsZA0K PiA+PiB1bmRlcnN0YW5kIGlmIHRoZSBzdGF0ZW1lbnQgd2VyZToNCj4gPj4NCj4gPj4gICAgIE9u Y2UgdGhlIGJ1Y2tldHMgYXJlIGFsbG9jYXRlZCwgd2UgZnJlZXplIHRoZSBtZW1vcnkNCj4gPj4g cmFuZ2VzIGZvciB0aGUNCj4gPj4gICAgIE9TLCAqYmVjYXVzZSogZnJhZ21lbnRpbmcgdGhlIHNw ZWNpYWwgYnVja2V0cyAqd291bGQqDQo+ID4+IGNhdXNlIGVycm9ycw0KPiA+PiAgICAgcmVzdW1p bmcgZnJvbSBoaWJlcm5hdGUuDQo+ID4+DQo+ID4+IElzIHRoaXMgdGhlIGludGVudD8NCj4gPj4N Cj4gPj4+DQo+ID4+PiBUaGlzIHBhdGNoIGlzIGNoZXJyeSBwaWNrIGZyb20gUHJvamVjdCBNdToN Cj4gPj4+DQo+ID4+IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbXVfYmFzZWNvcmUvY29t bWl0L2E5YmU3NjdkOQ0KPiA+PiBiZTk2YWY5NDAxNmViDQo+ID4+PiBkMzkxZWE2ZjM0MDkyMDcz NWENCj4gPj4+IFdpdGggdGhlIG1pbm9yIGNoYW5nZSwNCj4gPj4+IDEuIFVwZGF0ZSBjb21taXQg bWVzc2FnZSBmb3JtYXQgdG8ga2VlcCB0aGUgbWVzc2FnZSBpbg0KPiA+PiA4MCBjaGFyYWN0ZXJz IG9uZSBsaW5lLg0KPiA+Pj4gMi4gUmVtb3ZlIC8vIE1VX0NIQU5HRSBjb21tZW50cyBpbiBzb3Vy Y2UgY29kZS4NCj4gPj4+DQo+ID4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVs LmNvbT4NCj4gPj4+IENjOiBIYW8gQSBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+Pj4gQ2M6 IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IExp bWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+Pj4gLS0tDQo+ID4+PiAgTWRlTW9k dWxlUGtnL0NvcmUvRHhlL01lbS9QYWdlLmMgfCA0Mw0KPiA+Pj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLQ0KPiA+Pj4gIDEgZmlsZSBjaGFuZ2VkLCAzNyBpbnNlcnRp b25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9NZGVNb2R1 bGVQa2cvQ29yZS9EeGUvTWVtL1BhZ2UuYw0KPiA+Pj4gYi9NZGVNb2R1bGVQa2cvQ29yZS9EeGUv TWVtL1BhZ2UuYw0KPiA+Pj4gaW5kZXggYmQ5ZTExNmFhNS4uNjM3NTE4ODg5ZCAxMDA2NDQNCj4g Pj4+IC0tLSBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9NZW0vUGFnZS5jDQo+ID4+PiArKysgYi9N ZGVNb2R1bGVQa2cvQ29yZS9EeGUvTWVtL1BhZ2UuYw0KPiA+Pj4gQEAgLTEyNjUsMTIgKzEyNjUs MTMgQEAgQ29yZUludGVybmFsQWxsb2NhdGVQYWdlcyAoDQo+ID4+PiAgICBJTiBCT09MRUFOICAg ICAgICAgICAgICAgIE5lZWRHdWFyZA0KPiA+Pj4gICAgKQ0KPiA+Pj4gIHsNCj4gPj4+IC0gIEVG SV9TVEFUVVMgICAgICBTdGF0dXM7DQo+ID4+PiAtICBVSU5UNjQgICAgICAgICAgU3RhcnQ7DQo+ ID4+PiAtICBVSU5UNjQgICAgICAgICAgTnVtYmVyT2ZCeXRlczsNCj4gPj4+IC0gIFVJTlQ2NCAg ICAgICAgICBFbmQ7DQo+ID4+PiAtICBVSU5UNjQgICAgICAgICAgTWF4QWRkcmVzczsNCj4gPj4+ IC0gIFVJTlROICAgICAgICAgICBBbGlnbm1lbnQ7DQo+ID4+PiArICBFRklfU1RBVFVTICAgICAg IFN0YXR1czsNCj4gPj4+ICsgIFVJTlQ2NCAgICAgICAgICAgU3RhcnQ7DQo+ID4+PiArICBVSU5U NjQgICAgICAgICAgIE51bWJlck9mQnl0ZXM7DQo+ID4+PiArICBVSU5UNjQgICAgICAgICAgIEVu ZDsNCj4gPj4+ICsgIFVJTlQ2NCAgICAgICAgICAgTWF4QWRkcmVzczsNCj4gPj4+ICsgIFVJTlRO ICAgICAgICAgICAgQWxpZ25tZW50Ow0KPiA+Pj4gKyAgRUZJX01FTU9SWV9UWVBFICBDaGVja1R5 cGU7DQo+ID4+Pg0KPiA+Pj4gICAgaWYgKChVSU5UMzIpVHlwZSA+PSBNYXhBbGxvY2F0ZVR5cGUp IHsNCj4gPj4+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+IEBAIC0x MzIxLDYgKzEzMjIsNyBAQCBDb3JlSW50ZXJuYWxBbGxvY2F0ZVBhZ2VzICgNCj4gPj4+ICAgIC8v IGlmIChTdGFydCArIE51bWJlck9mQnl0ZXMpIHJvbGxzIG92ZXIgMCBvcg0KPiA+Pj4gICAgLy8g aWYgU3RhcnQgaXMgYWJvdmUgTUFYX0FMTE9DX0FERFJFU1Mgb3INCj4gPj4+ICAgIC8vIGlmIEVu ZCBpcyBhYm92ZSBNQVhfQUxMT0NfQUREUkVTUywNCj4gPj4+ICsgIC8vIGlmIFN0YXJ0Li5FbmQg b3ZlcmxhcHMgYW55IHRyYWNrZWQNCj4gPj4gTWVtb3J5VHlwZVN0YXRpc3RpY3MgcmFuZ2UNCj4g Pj4+ICAgIC8vIHJldHVybiBFRklfTk9UX0ZPVU5ELg0KPiA+Pj4gICAgLy8NCj4gPj4+ICAgIGlm IChUeXBlID09IEFsbG9jYXRlQWRkcmVzcykgew0KPiA+Pj4gQEAgLTEzMzYsNiArMTMzOCwzNSBA QCBDb3JlSW50ZXJuYWxBbGxvY2F0ZVBhZ2VzICgNCj4gPj4+ICAgICAgICAgIChFbmQgPiBNYXhB ZGRyZXNzKSkgew0KPiA+Pj4gICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+Pj4gICAg ICB9DQo+ID4+PiArDQo+ID4+PiArICAgIC8vIFByb2JsZW0gc3VtbWFyeQ0KPiA+Pj4gKw0KPiA+ Pj4gKyAgICAvKg0KPiA+Pj4gKyAgICBBIGRyaXZlciBpcyBhbGxvd2VkIHRvIGNhbGwgQWxsb2Nh dGVQYWdlcyB1c2luZyBhbg0KPiA+PiBBbGxvY2F0ZUFkZHJlc3MgdHlwZS4gIFRoaXMgdHlwZSBv Zg0KPiA+Pj4gKyAgICBBbGxvY2F0ZVBhZ2UgcmVxdWVzdCB0aGUgZXhhY3QgcGh5c2ljYWwgYWRk cmVzcyBpZg0KPiA+PiBpdCBpcyBub3QgdXNlZC4gIFRoZSBleGlzdGluZyBjb2RlDQo+ID4+PiAr ICAgIHdpbGwgYWxsb3cgdGhpcyByZXF1ZXN0IGV2ZW4gaW4gJ3NwZWNpYWwnIHBhZ2VzLg0KPiA+ PiBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgdGhhdCB0aGUNCj4gPj4+ICsgICAgcmVhc29uIHRv IGhhdmUgJ3NwZWNpYWwnIHBhZ2VzIGZvciBPUw0KPiA+PiBoaWJlcm5hdGUvcmVzdW1lIGlzIGRl ZmVhdGVkIGFzIG1lbW9yeSBpcw0KPiA+Pj4gKyAgICBmcmFnbWVudGVkLg0KPiA+Pj4gKyAgICAq Lw0KPiA+Pg0KPiA+PiAoNCkgVGhpcyBjb21tZW50IHN0eWxlIGlzIG5vdCBuYXRpdmUgdG8gZWRr Mi4NCj4gPj4NCj4gPj4gSSB0aGluayB0aGUgInByb2JsZW0gc3VtbWFyeSIgbGluZSBzaG91bGQg YmUgcmVtb3ZlZCwgYW5kDQo+ID4+IHRoZSBhY3R1YWwgcHJvYmxlbSBzdGF0ZW1lbnQgc2hvdWxk IHVzZSB0aGUgZm9sbG93aW5nDQo+ID4+IGNvbW1lbnQgc3R5bGU6DQo+ID4+DQo+ID4+ICAgLy8N Cj4gPj4gICAvLyBibGFoDQo+ID4+ICAgLy8NCg0KSSBjaGVycnkgcGljayB0aGlzIHBhdGNoIGZy b20gTXUgcHJvamVjdCB3aXRoIHRoZSBtaW5pbWFsIGNoYW5nZS4gDQpJIGNhbiB1cGRhdGUgdGhl IGNvbW1lbnQgc3R5bGUuIA0KDQo+ID4+DQo+ID4+DQo+ID4+PiArDQo+ID4+PiArICAgIGZvciAo Q2hlY2tUeXBlID0gKEVGSV9NRU1PUllfVFlQRSkgMDsgQ2hlY2tUeXBlIDwNCj4gPj4gRWZpTWF4 TWVtb3J5VHlwZTsgQ2hlY2tUeXBlKyspIHsNCj4gPj4+ICsgICAgICBpZiAoTWVtb3J5VHlwZSAh PSBDaGVja1R5cGUgJiYNCj4gPj4+ICsgICAgICAgICAgbU1lbW9yeVR5cGVTdGF0aXN0aWNzW0No ZWNrVHlwZV0uU3BlY2lhbCAmJg0KPiA+Pj4gKw0KPiA+PiBtTWVtb3J5VHlwZVN0YXRpc3RpY3Nb Q2hlY2tUeXBlXS5OdW1iZXJPZlBhZ2VzID4gMCkgew0KPiA+Pj4gKyAgICAgICAgaWYgKFN0YXJ0 ID49DQo+ID4+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVja1R5cGVdLkJhc2VBZGRyZXNzICYm DQo+ID4+PiArICAgICAgICAgICAgU3RhcnQgPD0NCj4gPj4gbU1lbW9yeVR5cGVTdGF0aXN0aWNz W0NoZWNrVHlwZV0uTWF4aW11bUFkZHJlc3MpIHsNCj4gPj4+ICsgICAgICAgICAgcmV0dXJuIEVG SV9OT1RfRk9VTkQ7DQo+ID4+PiArICAgICAgICB9DQo+ID4+PiArICAgICAgICBpZiAoRW5kID49 DQo+ID4+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVja1R5cGVdLkJhc2VBZGRyZXNzICYmDQo+ ID4+PiArICAgICAgICAgICAgRW5kIDw9DQo+ID4+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVj a1R5cGVdLk1heGltdW1BZGRyZXNzKSB7DQo+ID4+PiArICAgICAgICAgIHJldHVybiBFRklfTk9U X0ZPVU5EOw0KPiA+Pj4gKyAgICAgICAgfQ0KPiA+Pj4gKyAgICAgICAgaWYgKFN0YXJ0IDwNCj4g Pj4gbU1lbW9yeVR5cGVTdGF0aXN0aWNzW0NoZWNrVHlwZV0uQmFzZUFkZHJlc3MgJiYNCj4gPj4+ ICsgICAgICAgICAgICBFbmQgICA+DQo+ID4+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVja1R5 cGVdLk1heGltdW1BZGRyZXNzKSB7DQo+ID4+PiArICAgICAgICAgIHJldHVybiBFRklfTk9UX0ZP VU5EOw0KPiA+Pj4gKyAgICAgICAgfQ0KPiA+Pj4gKyAgICAgIH0NCj4gPj4+ICsgICAgfQ0KPiA+ Pj4gICAgfQ0KPiA+Pg0KPiA+PiAoNSkgQ2hlY2tpbmcgZm9yIG92ZXJsYXAgKGkuZS4sIHdoZXRo ZXIgdGhlIGludGVyc2VjdGlvbg0KPiA+PiBpcyBub24tZW1wdHkpIGNhbiBiZSBkb25lIG1vcmUg c2ltcGx5IChpLmUuLCB3aXRoIGZld2VyDQo+ID4+IGNvbXBhcmlzb25zIGluIHRoZSB3b3JzdCBj YXNlLCBhbmQgd2l0aCBsZXNzIGNvZGUpOg0KPiA+Pg0KPiA+PiAgIGlmIChNQVggKFN0YXJ0LA0K PiA+PiBtTWVtb3J5VHlwZVN0YXRpc3RpY3NbQ2hlY2tUeXBlXS5CYXNlQWRkcmVzcykgPD0NCj4g Pj4gICAgICAgTUlOIChFbmQsDQo+ID4+IG1NZW1vcnlUeXBlU3RhdGlzdGljc1tDaGVja1R5cGVd Lk1heGltdW1BZGRyZXNzKSkgew0KPiA+PiAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+ ICAgfQ0KPiA+Pg0KPiA+PiBidXQgdGhlIHByb3Bvc2VkIGludGVyc2VjdGlvbiBjaGVjayBpcyB0 ZWNobmljYWxseSByaWdodA0KPiA+PiBhbHJlYWR5LCBJTU8sIHNvIHRoZXJlJ3Mgbm8gc3Ryb25n IG5lZWQgdG8gdXBkYXRlIGl0Lg0KPiA+Pg0KPiA+PiAoU29tZXdoYXQgdW51c3VhbGx5IGZvciB0 aGlzIGtpbmQgb2YgY29tcGFyaXNvbiwgYWxsIGZvdXINCj4gPj4gYm91bmRhcmllcyBhcmUgaW5j bHVzaXZlIGhlcmUuKQ0KPiA+Pg0KPiA+PiAoNikgQm90aCB0aGUgY29tbWl0IG1lc3NhZ2UgYW5k IHRoZSBjb2RlIGNvbW1lbnQgc3RhdGUNCj4gPj4gdGhhdCB0aGlzIHByb2JsZW0gaXMgc3BlY2lm aWMgdG8gUzQuIFRoZXJlZm9yZSwgd2UgY2FuDQo+ID4+IGRpc3Rpbmd1aXNoIHRocmVlIGNhc2Vz Og0KPiA+Pg0KPiA+PiAoNmEpIFBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCAob3IgZG9lc24ndCBl bmFibGUpIFM0IGF0DQo+ID4+IGFsbC4NCj4gPj4NCj4gPj4gKDZiKSBQbGF0Zm9ybSBzdXBwb3J0 cyAmIGVuYWJsZXMgUzQsIGFuZCB0aGlzIGlzIGEgbm9ybWFsDQo+ID4+IGJvb3QuDQo+ID4+DQo+ ID4+ICg2YykgUGxhdGZvcm0gc3VwcG9ydHMgJiBlbmFibGVzIFM0LCBhbmQgdGhpcyBpcyBhY3R1 YWxseQ0KPiA+PiBhbiBTNCByZXN1bWUuDQo+ID4+DQo+ID4+IFRoZSBjb2RlIGJlaW5nIHByb3Bv c2VkIGFwcGxpZXMgdG8gYWxsIHRocmVlIGNhc2VzLiBJcw0KPiA+PiB0aGF0IHRoZSBpbnRlbnQ/ DQo+ID4+IFNob3VsZG4ndCB0aGUgbmV3IGNoZWNrIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gKDZj KSAtLQ0KPiA+PiBmcm9tIHRoZSBib290IG1vZGUgSE9CIC0tLCBvciBhdCBsZWFzdCBvbiAoNmIp fHwoNmMpIC0tDQo+ID4+IGkuZS4gdGhlIGNoZWNrIHNob3VsZCBiZSBkaXNhYmxlZCBpZiBTNCBp cyBhYnNlbnQNCj4gPj4gZW50aXJlbHk/DQo+ID4NCj4gPiBIaSBMYXN6bG8sDQo+ID4NCj4gPiBJ IHRoaW5rIHRoaXMgY2hlY2sgc2hvdWxkIGJlIGFkZGVkIGZvciBhbGwgY2FzZXMuIFdpdGhvdXQN Cj4gPiB0aGlzIGNoYW5nZSwgbWVtb3J5IGFsbG9jYXRpb25zIHVzaW5nIHR5cGUgQWxsb2NhdGVB ZGRyZXNzDQo+ID4gSXMgYWxsb3dlZCB0byBhbGxvY2F0ZSBpbiB0aGUgdW51c2VkIHBvcnRpb24g b2YgYSBiaW4uICBUaGlzDQo+ID4gbWVhbnMgdGhlIG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgbm90 IGNvbnNpc3Qgd2l0aCB0aGUgbWVtb3J5DQo+ID4gbWFwIHJldHVybmVkIGJ5IEdldE1lbW9yeU1h cCgpIHRoYXQgc2hvd3MgdGhlIGVudGlyZSBiaW4gYXMNCj4gPiBhbGxvY2F0ZWQuICBUaGUgb25s eSBleGNlcHRpb24gdGhhdCBpcyBhbGxvd2VkIGlzIGlmIGFuDQo+ID4gQWxsb2NhdGVBZGRyZXNz IHJlcXVlc3QgaXMgbWFkZSB0byB0aGUgdW51c2VkIHBvcnRpb24gb2YgYQ0KPiA+IGJpbiB3aGVy ZSB0aGUgcmVxdWVzdCBhbmQgdGhlIGJpbiBoYXZlIHRoZSBzYW1lIE1lbW9yeVR5cGUuDQo+IA0K PiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4gSXQgaGVscHMhIEkgdW5kZXJzdGFuZCBub3cu DQo+IA0KPiA+IFRoZSByZWZlcmVuY2VzIHRvIFM0IGhlcmUgYXJlIHRoZSB1c2UgY2FzZSB0aGF0 IGZhaWxzLiAgVGhpcw0KPiA+IGZhaWx1cmUgaXMgcm9vdCBjYXVzZWQgdG8gYW4gaW5jb25zaXN0 ZW50IGJlaGF2aW9yIG9mIHRoZQ0KPiA+IGNvcmUgbWVtb3J5IHNlcnZpY2VzIHRoZW1zZWx2ZXMg d2hlbiB0eXBlIEFsbG9jYXRlQWRkcmVzcyBpcw0KPiA+IHVzZWQuDQo+IA0KPiBDYW4gdGhlIGNv bW1pdCBtZXNzYWdlIGJlIGZyYW1lZCBhY2NvcmRpbmdseSwgcGxlYXNlPw0KPiANCj4gVGhlIG1h aW4gaXNzdWUgaXMgYXBwYXJlbnRseSB3aXRoIHRoZSBVRUZJIG1lbW9yeSBtYXAgLS0gdGhlIFVF RkkgbWVtb3J5DQo+IG1hcCByZWZsZWN0cyB0aGUgcHJlLWFsbG9jYXRlZCBiaW5zLCBidXQgdGhl IGFjdHVhbCBhbGxvY2F0aW9ucyBhdCBmaXhlZA0KPiBhZGRyZXNzZXMgbWF5IGdvIG91dCBvZiBz eW5jIHdpdGggdGhhdC4gRXZlcnl0aGluZyBlbHNlLCBzdWNoIGFzOg0KPiANCj4gLSBFRklfTUVN T1JZX0FUVFJJQlVURVNfVEFCTEUgKHBhZ2UgcHJvdGVjdGlvbnMpIGJlaW5nIG91dCBvZiBzeW5j LA0KPiANCj4gLSBTNCBmYWlsaW5nDQo+IA0KPiBhcmUganVzdCBzeW1wdG9tcyAvIGNvbnNlcXVl bmNlcy4NCj4gDQo+ID4gVGhlIG9ubHkgdGltZSB0aGVzZSB0eXBlcyBvZiBjaGVjayBjYW4gYmUg ZGlzYWJsZWQgaXMgaWYgdGhlDQo+ID4gTWVtb3J5IFR5cGUgSW5mb3JtYXRpb24gZmVhdHVyZSBp cyBkaXNhYmxlZC4NCj4gDQo+IFRoZSBnRWZpTWVtb3J5VHlwZUluZm9ybWF0aW9uR3VpZCBIT0Ig aXMgc3VwcG9zZWQgdG8gYmUgYnVpbHQgLS0gaWYgaXQNCj4gaXMgYnVpbHQgYXQgYWxsIC0tIG5v IGxhdGVyIHRoYW4gaW4gdGhlIERYRSBJUEwgUEVJTSAoaWYgVmFyaWFibGVQZWkgaXMNCj4gaW5j bHVkZWQgaW4gdGhlIHBsYXRmb3JtLCBhbmQgdGhlIHVuZGVybHlpbmcgVUVGSSB2YXJpYWJsZSBl eGlzdHMpLiBJcw0KPiB0aGF0IGNvcnJlY3Q/DQo+IA0KZ0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlv bkd1aWQgSE9CIGlzIGluc3RhbGxlZCBieSBwbGF0Zm9ybSBQRUkuIA0KSWYgdGhlIHBsYXRmb3Jt IFBFSSBkb2Vzbid0IGluc3RhbGwgdGhpcyBIT0IsIGl0IG1lYW5zIHRoaXMgZmVhdHVyZSBpcyBk aXNhYmxlZC4gDQoNClRoYW5rcw0KTGltaW5nDQo+IEJlY2FzZSBpZiBpdCBpcyBjb3JyZWN0LCB0 aGVuIEkgdGhpbmsgdGhlIGNoZWNrIGNvdWxkIGJlIGJhc2VkIChpbiB0aGUNCj4gRFhFIGNvcmUp IG9uIHRoZSBwcmVzZW5jZSBvZiB0aGlzIEhPQi4NCj4gDQo+IFRoYW5rIHlvdSENCj4gTGFzemxv DQo=