From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.2478.1586487109793744094 for ; Thu, 09 Apr 2020 19:51:49 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: star.zeng@intel.com) IronPort-SDR: s86xnJlCLBx18pZQp+dqMW30CzkDQrltVFbYXb9hqljqdk9kbts+iXMDPwVQeeDNGpk5IAIH4P 4/69ZTkwfoeQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2020 19:51:49 -0700 IronPort-SDR: dI6aJjvawb/joav0LB4tuv21oc8HAFyO4RaO5lzxsFfTeD1LQFehA/qGn8FoybHRfhvdjba6bz FTNsK9FrdkGg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,364,1580803200"; d="scan'208";a="276047892" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga004.fm.intel.com with ESMTP; 09 Apr 2020 19:51:49 -0700 Received: from fmsmsx151.amr.corp.intel.com (10.18.125.4) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Apr 2020 19:51:49 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX151.amr.corp.intel.com (10.18.125.4) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 9 Apr 2020 19:51:48 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.138]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.213]) with mapi id 14.03.0439.000; Fri, 10 Apr 2020 10:51:46 +0800 From: "Zeng, Star" To: "Ni, Ray" , "Dong, Eric" , Ray Ni , "devel@edk2.groups.io" CC: "Zeng, Star" Subject: Re: [PATCH v2] UefiCpuPkg/PiSmmCpuDxeSmm: Improve the performance of GetFreeToken() Thread-Topic: [PATCH v2] UefiCpuPkg/PiSmmCpuDxeSmm: Improve the performance of GetFreeToken() Thread-Index: AQHWDtzt+YUJgLkB6EuTbxNpIiWWr6hxGs2AgAAG5YCAAIZl8A== Date: Fri, 10 Apr 2020 02:51:45 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483104061D209@shsmsx102.ccr.corp.intel.com> References: <20200410020729.249960-1-niruiyu@users.noreply.github.com> <734D49CCEBEEF84792F5B80ED585239D5C4E4334@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5C4E4334@SHSMSX104.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: star.zeng@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WW91ciB0aW1lIGlzIHN1cGVyIGZhc3QuIPCfmIoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXks IEFwcmlsIDEwLCAyMDIwIDEwOjUwIEFNDQo+IFRvOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50 ZWwuY29tPjsgUmF5IE5pDQo+IDxuaXJ1aXl1QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyXSBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tOiBJ bXByb3ZlIHRoZQ0KPiBwZXJmb3JtYW5jZSBvZiBHZXRGcmVlVG9rZW4oKQ0KPiANCj4gTXkgYmFk LiBJIHRob3VnaHQgaXQgaXMgMjAyMSBub3cuIGxldCBtZSBzZW5kIHYzLg0KPiANCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0Bp bnRlbC5jb20+DQo+ID4gU2VudDogRnJpZGF5LCBBcHJpbCAxMCwgMjAyMCAxMDoyNiBBTQ0KPiA+ IFRvOiBSYXkgTmkgPG5pcnVpeXVAdXNlcnMubm9yZXBseS5naXRodWIuY29tPjsgZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiBDYzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IFplbmcsIFN0 YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2Ml0gVWVm aUNwdVBrZy9QaVNtbUNwdUR4ZVNtbTogSW1wcm92ZSB0aGUNCj4gPiBwZXJmb3JtYW5jZSBvZiBH ZXRGcmVlVG9rZW4oKQ0KPiA+DQo+ID4gSGkgUmF5LA0KPiA+DQo+ID4gSXQgc3RpbGwgaGFzIGNv cHlyaWdodCB5ZWFyIGlzc3VlLiBTaG91bGQgMjAyMCwgbm90IDIwMjEuDQo+ID4NCj4gPiBUaGFu a3MsDQo+ID4gRXJpYw0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog UmF5IE5pIDxuaXJ1aXl1QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4NCj4gPiBTZW50OiBGcmlk YXksIEFwcmlsIDEwLCAyMDIwIDEwOjA3IEFNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlv DQo+ID4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRv bmdAaW50ZWwuY29tPjsNCj4gPiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+ IFN1YmplY3Q6IFtQQVRDSCB2Ml0gVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbTogSW1wcm92ZSB0 aGUNCj4gcGVyZm9ybWFuY2UNCj4gPiBvZiBHZXRGcmVlVG9rZW4oKQ0KPiA+DQo+ID4gVG9kYXkn cyBHZXRGcmVlVG9rZW4oKSBydW5zIGF0IHRoZSBhbGdvcml0aG0gY29tcGxleGl0eSBvZiBPKG4p IHdoZXJlIG4gaXMNCj4gdGhlIHNpemUgb2YgdGhlIHRva2VuIGxpc3QuDQo+ID4NCj4gPiBUaGUg Y2hhbmdlIGludHJvZHVjZXMgYSBuZXcgZ2xvYmFsIHZhcmlhYmxlIEZpcnN0RnJlZVRva2VuIGFu ZCBpdA0KPiA+IGFsd2F5cyBwb2ludHMgdG8gdGhlIGZpcnN0IGZyZWUgdG9rZW4uIFNvIHRoZSBh bGdvcml0aG0gY29tcGxleGl0eSBvZg0KPiBHZXRGcmVlVG9rZW4oKSBkZWNyZWFzZXMgZnJvbSBP KG4pIHRvIE8oMSkuDQo+ID4NCj4gPiBUaGUgaW1wcm92ZW1lbnQgbWF0dGVycyB3aGVuIHNvbWUg U01JIGNvZGUgdXNlcyBTdGFydHVwVGhpc0FQKCkNCj4gPiBzZXJ2aWNlIGZvciBlYWNoIG9mIHRo ZSBBUCBzdWNoIHRoYXQgdGhlIGFsZ29yaXRobSBjb21wbGV4aXR5IGJlY29tZXMgTyhuKQ0KPiAq IE8obSkgd2hlcmUgbSBpcyB0aGUgQVAgY291bnQuDQo+ID4NCj4gPiBBcyBuZXh0IHN0ZXBzLA0K PiA+IDEuIFBST0NFRFVSRV9UT0tFTi5Vc2VkIGZpZWxkIGNhbiBiZSBvcHRpbWl6ZWQgb3V0IGJl Y2F1c2UgYWxsIHRva2Vucw0KPiA+IGJlZm9yZSBGaXJzdEZyZWVUb2tlbiBzaG91bGQgaGF2ZSAi VXNlZCIgc2V0IHdoaWxlIGFsbCBhZnRlcg0KPiBGaXJzdEZyZWVUb2tlbiBzaG91bGQgaGF2ZSAi VXNlZCIgY2xlYXJlZC4NCj4gPiAyLiBSZXNldFRva2VucygpIGNhbiBiZSBvcHRpbWl6ZWQgdG8g b25seSByZXNldCB0b2tlbnMgYmVmb3JlDQo+IEZpcnN0RnJlZVRva2VuLg0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IENjOiBFcmljIERvbmcg PGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVs LmNvbT4NCj4gPiAtLS0NCj4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9NcFNlcnZpY2Uu YyAgICAgIHwgNzMNCj4gKysrKysrKystLS0tLS0tLS0tLS0tLQ0KPiA+ICBVZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmggfCAgMyArLQ0KPiA+ICAyIGZpbGVzIGNoYW5n ZWQsIDI4IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBTZXJ2aWNlLmMNCj4gPiBiL1VlZmlDcHVQ a2cvUGlTbW1DcHVEeGVTbW0vTXBTZXJ2aWNlLmMNCj4gPiBpbmRleCBjMjg1YTcwZWJiLi5iM2Y2 YzllNmE2IDEwMDY0NA0KPiA+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vTXBTZXJ2 aWNlLmMNCj4gPiArKysgYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL01wU2VydmljZS5jDQo+ ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gIC8qKiBAZmlsZQ0KPiA+ICBTTU0gTVAgc2VydmljZSBp bXBsZW1lbnRhdGlvbg0KPiA+DQo+ID4gLUNvcHlyaWdodCAoYykgMjAwOSAtIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICtDb3B5cmln aHQgKGMpIDIwMDkgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ICty ZXNlcnZlZC48QlI+DQo+ID4gIENvcHlyaWdodCAoYykgMjAxNywgQU1EIEluY29ycG9yYXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4NCj4gPiAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgQEAgLTQ1Myw2ICs0NTMsMTEgQEANCj4gPiBSZXNldFRv a2VucyAoDQo+ID4NCj4gPiAgICAgIExpbmsgPSBHZXROZXh0Tm9kZSAoJmdTbW1DcHVQcml2YXRl LT5Ub2tlbkxpc3QsIExpbmspOw0KPiA+ICAgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBSZXNldCB0aGUgRmlyc3RGcmVlVG9rZW4gdG8gdGhlIGJlZ2lubmluZyBvZiB0b2tlbiBsaXN0 IHVwb24gZXhpdGluZw0KPiBTTUkuDQo+ID4gKyAgLy8NCj4gPiArICBnU21tQ3B1UHJpdmF0ZS0+ Rmlyc3RGcmVlVG9rZW4gPSBHZXRGaXJzdE5vZGUNCj4gPiArICgmZ1NtbUNwdVByaXZhdGUtPlRv a2VuTGlzdCk7DQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtMTA2MCwyMyArMTA2NSwy MSBAQCBJc1Rva2VuSW5Vc2UgKA0KPiA+ICAvKioNCj4gPiAgICBBbGxvY2F0ZSBidWZmZXIgZm9y IHRoZSBTUElOX0xPQ0sgYW5kIFBST0NFRFVSRV9UT0tFTi4NCj4gPg0KPiA+ICsgIEByZXR1cm4g Rmlyc3QgdG9rZW4gb2YgdGhlIHRva2VuIGJ1ZmZlci4NCj4gPiAgKiovDQo+ID4gLVZPSUQNCj4g PiArTElTVF9FTlRSWSAqDQo+ID4gIEFsbG9jYXRlVG9rZW5CdWZmZXIgKA0KPiA+ICAgIFZPSUQN Cj4gPiAgICApDQo+ID4gIHsNCj4gPiAgICBVSU5UTiAgICAgICAgICAgICAgIFNwaW5Mb2NrU2l6 ZTsNCj4gPiAgICBVSU5UMzIgICAgICAgICAgICAgIFRva2VuQ291bnRQZXJDaHVuazsNCj4gPiAt ICBVSU5UTiAgICAgICAgICAgICAgIFByb2NUb2tlblNpemU7DQo+ID4gICAgVUlOVE4gICAgICAg ICAgICAgICBJbmRleDsNCj4gPiAtICBQUk9DRURVUkVfVE9LRU4gICAgICpQcm9jVG9rZW47DQo+ ID4gICAgU1BJTl9MT0NLICAgICAgICAgICAqU3BpbkxvY2s7DQo+ID4gICAgVUlOVDggICAgICAg ICAgICAgICAqU3BpbkxvY2tCdWZmZXI7DQo+ID4gLSAgVUlOVDggICAgICAgICAgICAgICAqUHJv Y1Rva2VuQnVmZmVyOw0KPiA+ICsgIFBST0NFRFVSRV9UT0tFTiAgICAgKlByb2NUb2tlbnM7DQo+ ID4NCj4gPiAgICBTcGluTG9ja1NpemUgPSBHZXRTcGluTG9ja1Byb3BlcnRpZXMgKCk7DQo+ID4g LSAgUHJvY1Rva2VuU2l6ZSA9IHNpemVvZiAoUFJPQ0VEVVJFX1RPS0VOKTsNCj4gPg0KPiA+ICAg IFRva2VuQ291bnRQZXJDaHVuayA9IEZpeGVkUGNkR2V0MzINCj4gKFBjZENwdVNtbU1wVG9rZW5D b3VudFBlckNodW5rKTsNCj4gPiAgICBBU1NFUlQgKFRva2VuQ291bnRQZXJDaHVuayAhPSAwKTsN Cj4gPiBAQCAtMTA5Miw0OSArMTA5NSwyMiBAQCBBbGxvY2F0ZVRva2VuQnVmZmVyICgNCj4gPiAg ICBTcGluTG9ja0J1ZmZlciA9IEFsbG9jYXRlUG9vbCAoU3BpbkxvY2tTaXplICogVG9rZW5Db3Vu dFBlckNodW5rKTsNCj4gPiAgICBBU1NFUlQgKFNwaW5Mb2NrQnVmZmVyICE9IE5VTEwpOw0KPiA+ DQo+ID4gLSAgUHJvY1Rva2VuQnVmZmVyID0gQWxsb2NhdGVQb29sIChQcm9jVG9rZW5TaXplICoN Cj4gPiBUb2tlbkNvdW50UGVyQ2h1bmspOw0KPiA+IC0gIEFTU0VSVCAoUHJvY1Rva2VuQnVmZmVy ICE9IE5VTEwpOw0KPiA+ICsgIFByb2NUb2tlbnMgPSBBbGxvY2F0ZVBvb2wgKHNpemVvZiAoUFJP Q0VEVVJFX1RPS0VOKSAqDQo+ID4gKyBUb2tlbkNvdW50UGVyQ2h1bmspOyAgQVNTRVJUIChQcm9j VG9rZW5zICE9IE5VTEwpOw0KPiA+DQo+ID4gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgVG9r ZW5Db3VudFBlckNodW5rOyBJbmRleCsrKSB7DQo+ID4gICAgICBTcGluTG9jayA9IChTUElOX0xP Q0sgKikoU3BpbkxvY2tCdWZmZXIgKyBTcGluTG9ja1NpemUgKiBJbmRleCk7DQo+ID4gICAgICBJ bml0aWFsaXplU3BpbkxvY2sgKFNwaW5Mb2NrKTsNCj4gPg0KPiA+IC0gICAgUHJvY1Rva2VuID0g KFBST0NFRFVSRV9UT0tFTiAqKShQcm9jVG9rZW5CdWZmZXIgKw0KPiBQcm9jVG9rZW5TaXplICog SW5kZXgpOw0KPiA+IC0gICAgUHJvY1Rva2VuLT5TaWduYXR1cmUgPSBQUk9DRURVUkVfVE9LRU5f U0lHTkFUVVJFOw0KPiA+IC0gICAgUHJvY1Rva2VuLT5TcGluTG9jayA9IFNwaW5Mb2NrOw0KPiA+ IC0gICAgUHJvY1Rva2VuLT5Vc2VkID0gRkFMU0U7DQo+ID4gLSAgICBQcm9jVG9rZW4tPlJ1bm5p bmdBcENvdW50ID0gMDsNCj4gPiArICAgIFByb2NUb2tlbnNbSW5kZXhdLlNpZ25hdHVyZSAgICAg ID0NCj4gUFJPQ0VEVVJFX1RPS0VOX1NJR05BVFVSRTsNCj4gPiArICAgIFByb2NUb2tlbnNbSW5k ZXhdLlNwaW5Mb2NrICAgICAgID0gU3BpbkxvY2s7DQo+ID4gKyAgICBQcm9jVG9rZW5zW0luZGV4 XS5Vc2VkICAgICAgICAgICA9IEZBTFNFOw0KPiA+ICsgICAgUHJvY1Rva2Vuc1tJbmRleF0uUnVu bmluZ0FwQ291bnQgPSAwOw0KPiA+DQo+ID4gLSAgICBJbnNlcnRUYWlsTGlzdCAoJmdTbW1DcHVQ cml2YXRlLT5Ub2tlbkxpc3QsICZQcm9jVG9rZW4tPkxpbmspOw0KPiA+ICsgICAgSW5zZXJ0VGFp bExpc3QgKCZnU21tQ3B1UHJpdmF0ZS0+VG9rZW5MaXN0LA0KPiA+ICsgJlByb2NUb2tlbnNbSW5k ZXhdLkxpbmspOw0KPiA+ICAgIH0NCj4gPiAtfQ0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gIEZpbmQg Zmlyc3QgZnJlZSB0b2tlbiBpbiB0aGUgYWxsb2NhdGVkIHRva2VuIGxpc3QuDQo+ID4gLQ0KPiA+ IC0gIEByZXR2YWwgICAgcmV0dXJuIHRoZSBmaXJzdCBmcmVlIFBST0NFRFVSRV9UT0tFTi4NCj4g PiAtDQo+ID4gLSoqLw0KPiA+IC1QUk9DRURVUkVfVE9LRU4gKg0KPiA+IC1GaW5kRmlyc3RGcmVl VG9rZW4gKA0KPiA+IC0gIFZPSUQNCj4gPiAtICApDQo+ID4gLXsNCj4gPiAtICBMSVNUX0VOVFJZ ICAgICAgICAqTGluazsNCj4gPiAtICBQUk9DRURVUkVfVE9LRU4gICAqUHJvY1Rva2VuOw0KPiA+ IC0NCj4gPiAtICBMaW5rID0gR2V0Rmlyc3ROb2RlICgmZ1NtbUNwdVByaXZhdGUtPlRva2VuTGlz dCk7DQo+ID4gLSAgd2hpbGUgKCFJc051bGwgKCZnU21tQ3B1UHJpdmF0ZS0+VG9rZW5MaXN0LCBM aW5rKSkgew0KPiA+IC0gICAgUHJvY1Rva2VuID0gUFJPQ0VEVVJFX1RPS0VOX0ZST01fTElOSyAo TGluayk7DQo+ID4gLQ0KPiA+IC0gICAgaWYgKCFQcm9jVG9rZW4tPlVzZWQpIHsNCj4gPiAtICAg ICAgcmV0dXJuIFByb2NUb2tlbjsNCj4gPiAtICAgIH0NCj4gPiAtDQo+ID4gLSAgICBMaW5rID0g R2V0TmV4dE5vZGUgKCZnU21tQ3B1UHJpdmF0ZS0+VG9rZW5MaXN0LCBMaW5rKTsNCj4gPiAtICB9 DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBOVUxMOw0KPiA+ICsgIHJldHVybiAmUHJvY1Rva2Vuc1sw XS5MaW5rOw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTExNTQsMTIgKzExMzAsMTUg QEAgR2V0RnJlZVRva2VuICggIHsNCj4gPiAgICBQUk9DRURVUkVfVE9LRU4gICpOZXdUb2tlbjsN Cj4gPg0KPiA+IC0gIE5ld1Rva2VuID0gRmluZEZpcnN0RnJlZVRva2VuICgpOw0KPiA+IC0gIGlm IChOZXdUb2tlbiA9PSBOVUxMKSB7DQo+ID4gLSAgICBBbGxvY2F0ZVRva2VuQnVmZmVyICgpOw0K PiA+IC0gICAgTmV3VG9rZW4gPSBGaW5kRmlyc3RGcmVlVG9rZW4gKCk7DQo+ID4gKyAgLy8NCj4g PiArICAvLyBJZiBGaXJzdEZyZWVUb2tlbiBtZWV0cyB0aGUgZW5kIG9mIHRva2VuIGxpc3QsIGVu bGFyZ2UgdGhlIHRva2VuIGxpc3QuDQo+ID4gKyAgLy8gU2V0IEZpcnN0RnJlZVRva2VuIHRvIHRo ZSBmaXJzdCBmcmVlIHRva2VuLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKGdTbW1DcHVQcml2YXRl LT5GaXJzdEZyZWVUb2tlbiA9PSAmZ1NtbUNwdVByaXZhdGUtPlRva2VuTGlzdCkNCj4gew0KPiA+ ICsgICAgZ1NtbUNwdVByaXZhdGUtPkZpcnN0RnJlZVRva2VuID0gQWxsb2NhdGVUb2tlbkJ1ZmZl ciAoKTsNCj4gPiAgICB9DQo+ID4gLSAgQVNTRVJUIChOZXdUb2tlbiAhPSBOVUxMKTsNCj4gPiAr ICBOZXdUb2tlbiA9IFBST0NFRFVSRV9UT0tFTl9GUk9NX0xJTksNCj4gPiArIChnU21tQ3B1UHJp dmF0ZS0+Rmlyc3RGcmVlVG9rZW4pOyAgZ1NtbUNwdVByaXZhdGUtPkZpcnN0RnJlZVRva2VuDQo+ ID0NCj4gPiArIEdldE5leHROb2RlICgmZ1NtbUNwdVByaXZhdGUtPlRva2VuTGlzdCwNCj4gPiAr IGdTbW1DcHVQcml2YXRlLT5GaXJzdEZyZWVUb2tlbik7DQo+ID4NCj4gPiAgICBOZXdUb2tlbi0+ VXNlZCA9IFRSVUU7DQo+ID4gICAgTmV3VG9rZW4tPlJ1bm5pbmdBcENvdW50ID0gUnVubmluZ0Fw c0NvdW50OyBAQCAtMTc4MSw3DQo+ICsxNzYwLDcgQEANCj4gPiBJbml0aWFsaXplRGF0YUZvck1t TXAgKA0KPiA+DQo+ID4gICAgSW5pdGlhbGl6ZUxpc3RIZWFkICgmZ1NtbUNwdVByaXZhdGUtPlRv a2VuTGlzdCk7DQo+ID4NCj4gPiAtICBBbGxvY2F0ZVRva2VuQnVmZmVyICgpOw0KPiA+ICsgIGdT bW1DcHVQcml2YXRlLT5GaXJzdEZyZWVUb2tlbiA9IEFsbG9jYXRlVG9rZW5CdWZmZXIgKCk7DQo+ ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9QaVNtbUNw dUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oDQo+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21t L1BpU21tQ3B1RHhlU21tLmgNCj4gPiBpbmRleCBmZTdlOGIwMzIzLi4xN2Y0YmQzNGZhIDEwMDY0 NA0KPiA+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uaA0K PiA+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uaA0KPiA+ IEBAIC0xLDcgKzEsNyBAQA0KPiA+ICAvKiogQGZpbGUNCj4gPiAgQWdlbnQgTW9kdWxlIHRvIGxv YWQgb3RoZXIgbW9kdWxlcyB0byBkZXBsb3kgU01NIEVudHJ5IFZlY3RvciBmb3INCj4gWDg2IENQ VS4NCj4gPg0KPiA+IC1Db3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDA5 IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiArcmVzZXJ2ZWQuPEJS Pg0KPiA+ICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFNRCBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+DQo+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50IEBAIC0yNTUsNiArMjU1LDcgQEANCj4gPiB0eXBlZGVmIHN0cnVjdCB7DQo+ ID4NCj4gPiAgICBQUk9DRURVUkVfV1JBUFBFUiAgICAgICAgICAgICAgICpBcFdyYXBwZXJGdW5j Ow0KPiA+ICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgVG9rZW5MaXN0Ow0KPiA+ ICsgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgKkZpcnN0RnJlZVRva2VuOw0KPiA+ ICB9IFNNTV9DUFVfUFJJVkFURV9EQVRBOw0KPiA+DQo+ID4gIGV4dGVybiBTTU1fQ1BVX1BSSVZB VEVfREFUQSAgKmdTbW1DcHVQcml2YXRlOw0KPiA+IC0tDQo+ID4gMi4yMS4wLndpbmRvd3MuMQ0K DQo=