From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: eric.dong@intel.com) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by groups.io with SMTP; Mon, 12 Aug 2019 00:46:34 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Aug 2019 00:46:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,376,1559545200"; d="scan'208";a="178260217" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 12 Aug 2019 00:46:33 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 12 Aug 2019 00:46:21 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 12 Aug 2019 00:46:15 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 12 Aug 2019 00:46:14 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.19]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.139]) with mapi id 14.03.0439.000; Mon, 12 Aug 2019 15:46:13 +0800 From: "Dong, Eric" To: "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Ni, Ray" Subject: Re: [edk2-devel] [Patch 1/4] UefiCpuPkg/RegisterCpuFeaturesLib: Add "detect before set" Micros. Thread-Topic: [edk2-devel] [Patch 1/4] UefiCpuPkg/RegisterCpuFeaturesLib: Add "detect before set" Micros. Thread-Index: AQHVTsUUYVFv7cz0DkS5fixBb/Co4ab3JL5A Date: Mon, 12 Aug 2019 07:46:12 +0000 Message-ID: References: <20190809061159.40248-1-eric.dong@intel.com> <20190809061159.40248-2-eric.dong@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: eric.dong@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVs QGVkazIuZ3JvdXBzLmlvIFttYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZiBP Zg0KPiBMYXN6bG8gRXJzZWsNCj4gU2VudDogRnJpZGF5LCBBdWd1c3QgOSwgMjAxOSAxMToxNCBQ TQ0KPiBUbzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W2VkazItZGV2ZWxdIFtQYXRjaCAxLzRdIFVlZmlDcHVQa2cvUmVnaXN0ZXJDcHVGZWF0dXJlc0xp YjoNCj4gQWRkICJkZXRlY3QgYmVmb3JlIHNldCIgTWljcm9zLg0KPiANCj4gT24gMDgvMDkvMTkg MDg6MTEsIEVyaWMgRG9uZyB3cm90ZToNCj4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9j b3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MA0KPiA+DQo+ID4gQWRkIGJlbG93IG5ldyBtaWNy b3Mgd2hpY2ggdGVzdCB0aGUgY3VycmVudCB2YWx1ZSBiZWZvcmUgc2V0IHRoZSBuZXcNCj4gPiB2 YWx1ZS4gT25seSBzZXQgbmV3IHZhbHVlIHdoZW4gY3VycmVudCB2YWx1ZSBub3Qgc2FtZSBhcyBu ZXcgdmFsdWUuDQo+ID4gICBDUFVfUkVHSVNURVJfVEFCTEVfVEVTVF9USEVOX1dSSVRFMzINCj4g PiAgIENQVV9SRUdJU1RFUl9UQUJMRV9URVNUX1RIRU5fV1JJVEU2NA0KPiA+ICAgQ1BVX1JFR0lT VEVSX1RBQkxFX1RFU1RfVEhFTl9XUklURV9GSUVMRA0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTog RXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiA+IENjOiBSYXkgTmkgPHJheS5uaUBp bnRlbC5jb20+DQo+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4g LS0tDQo+ID4gIFVlZmlDcHVQa2cvSW5jbHVkZS9BY3BpQ3B1RGF0YS5oICAgICAgICAgICAgICB8 ICAxICsNCj4gPiAgLi4uL0luY2x1ZGUvTGlicmFyeS9SZWdpc3RlckNwdUZlYXR1cmVzTGliLmgg IHwgNzcgKysrKysrKysrKysrKysrKystLQ0KPiA+ICAuLi4vUmVnaXN0ZXJDcHVGZWF0dXJlc0xp Yi5jICAgICAgICAgICAgICAgICAgfCAxNCArKystDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgODAg aW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pDQo+IA0KPiAoMSkgV2hlbiB5b3UgZm9ybWF0 IHlvdXIgcGF0Y2ggc2V0cywgY2FuIHlvdSBwbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgdHdvDQo+ IG9wdGlvbnM6DQo+IA0KPiAgLS1zdGF0PTEwMDAgLS1zdGF0LWdyYXBoLXdpZHRoPTIwDQo+IA0K PiBPdGhlcndpc2UgdGhlIGRpZmZzdGF0cyBhcmUgdHJ1bmNhdGVkIChvbiB0aGUgbGVmdCkgYW5k IGhhcmQgdG8gdW5kZXJzdGFuZC4NCj4gDQoNCjEuIEkgdXNlIFRvcnRvaXNlR2l0IHRvIGNyZWF0 ZSBwYXRjaCwgZG8geW91IGtub3cgaG93IHRvIGVuYWJsZSB0aGVzZSBzZXR0aW5nIGluIFRvcnRv aXNlR2l0Pw0KIA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvSW5jbHVkZS9BY3Bp Q3B1RGF0YS5oDQo+ID4gYi9VZWZpQ3B1UGtnL0luY2x1ZGUvQWNwaUNwdURhdGEuaA0KPiA+IGlu ZGV4IGI5NjNhMmY1OTIuLmM3NjRlMjA5Y2YgMTAwNjQ0DQo+ID4gLS0tIGEvVWVmaUNwdVBrZy9J bmNsdWRlL0FjcGlDcHVEYXRhLmgNCj4gPiArKysgYi9VZWZpQ3B1UGtnL0luY2x1ZGUvQWNwaUNw dURhdGEuaA0KPiA+IEBAIC04MSw2ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgICBV SU5UMTYgICAgICAgICBSZXNlcnZlZDsgICAgICAgICAgICAgIC8vIG9mZnNldCAxMCAtIDExDQo+ ID4gICAgVUlOVDMyICAgICAgICAgSGlnaEluZGV4OyAgICAgICAgICAgICAvLyBvZmZzZXQgMTIt MTUsIG9ubHkgdmFsaWQgZm9yDQo+IE1lbW9yeU1hcHBlZA0KPiA+ICAgIFVJTlQ2NCAgICAgICAg IFZhbHVlOyAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IDE2LTIzDQo+ID4gKyAgVUlOVDggICAg ICAgICAgRGV0ZWN0SXQ7ICAgICAgICAgICAgICAvLyAwZmZzZXQgMjQNCj4gPiAgfSBDUFVfUkVH SVNURVJfVEFCTEVfRU5UUlk7DQo+IA0KPiAoMikgQW5vdGhlciBxdWl0ZSBnZW5lcmljIGNvbW1l bnQgLS0gIkRldGVjdEl0IiBkb2VzIG5vdCBsb29rIGhlbHBmdWwuDQo+IFNvbWVob3cgdGhlIHZl cmIgImRldGVjdCIgZG9lcyBub3QgY29tbXVuaWNhdGUgdGhlIHJpZ2h0IGFjdGlvbiB0byBtZS4N Cj4gDQo+IEhvdyBhYm91dCB1c2luZyBhIG1vcmUgZXN0YWJsaXNoZWQgbmFtZSwgc3VjaCBhczoN Cj4gDQo+IC0gQ29tcGFyZUFuZFN3YXANCj4gLSBDb21wYXJlQW5kU2V0DQo+IC0gVGVzdEFuZFNl dA0KPiANCj4gPw0KPiANCj4gSWYgeW91IGFncmVlLCB0aGVuIEkgc3VnZ2VzdCB1cGRhdGluZyB0 aGUgcGFyYW1ldGVyIG5hbWVzLCBhbmQgdGhlaXINCj4gY29tbWVudHMgdG9vLCBiZWxvdy4NCg0K Mi4gIFllcywgSSBjaGFuZ2UgZnJvbSAiVGVzdEl0IiB0byAiRGV0ZWN0SXQiIGJlY2F1c2UgSSB0 aGluayBpdCdzIGJldHRlci4gU2VlbXMgbGlrZSB0aGlzIGlzIG5vdCBhIGNvcnJlY3QgY2hhbmdl LiANCkkgd2lsbCB1c2UgIlRlc3RUaGVuV3JpdGUiIGFzIHRoZSBuZXcgbmFtZSB3aGljaCBhbGln biBvdXIgbmV3IG1hY3JvICIgQ1BVX1JFR0lTVEVSX1RBQkxFX1RFU1RfVEhFTl9XUklURSoqKioi LiBXaGF0IGRvIHlvdSB0aGluaz8NCg0KVGhhbmtzLA0KRXJpYw0KDQo+IA0KPiBUaGFua3MNCj4g TGFzemxvDQo+IA0KPiANCj4gPg0KPiA+ICAvLw0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtn L0luY2x1ZGUvTGlicmFyeS9SZWdpc3RlckNwdUZlYXR1cmVzTGliLmgNCj4gPiBiL1VlZmlDcHVQ a2cvSW5jbHVkZS9MaWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIuaA0KPiA+IGluZGV4IGU0 MjBlN2YwNzUuLjg3ZmU4N2FjYjcgMTAwNjQ0DQo+ID4gLS0tIGEvVWVmaUNwdVBrZy9JbmNsdWRl L0xpYnJhcnkvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi5oDQo+ID4gKysrIGIvVWVmaUNwdVBrZy9J bmNsdWRlL0xpYnJhcnkvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi5oDQo+ID4gQEAgLTMzNSw2ICsz MzUsNyBAQCBTd2l0Y2hCc3BBZnRlckZlYXR1cmVzSW5pdGlhbGl6ZSAoDQo+ID4gICAgQHBhcmFt W2luXSAgSW5kZXggICAgICAgICAgICBJbmRleCBvZiB0aGUgcmVnaXN0ZXIgdG8gcHJvZ3JhbQ0K PiA+ICAgIEBwYXJhbVtpbl0gIFZhbHVlTWFzayAgICAgICAgTWFzayBvZiBiaXRzIGluIHJlZ2lz dGVyIHRvIHdyaXRlDQo+ID4gICAgQHBhcmFtW2luXSAgVmFsdWUgICAgICAgICAgICBWYWx1ZSB0 byB3cml0ZQ0KPiA+ICsgIEBwYXJhbVtpbl0gIERldGVjdEl0ICAgICAgICAgV2hldGhlciBuZWVk IHRvIGRldGVjdCBjdXJyZW50IFZhbHVlIGJlZm9yZQ0KPiB3cml0aW5nLg0KPiA+DQo+ID4gICAg QG5vdGUgVGhpcyBzZXJ2aWNlIGNvdWxkIGJlIGNhbGxlZCBieSBCU1Agb25seS4NCj4gPiAgKiov DQo+ID4gQEAgLTM0NSw3ICszNDYsOCBAQCBDcHVSZWdpc3RlclRhYmxlV3JpdGUgKA0KPiA+ICAg IElOIFJFR0lTVEVSX1RZUEUgICAgICAgUmVnaXN0ZXJUeXBlLA0KPiA+ICAgIElOIFVJTlQ2NCAg ICAgICAgICAgICAgSW5kZXgsDQo+ID4gICAgSU4gVUlOVDY0ICAgICAgICAgICAgICBWYWx1ZU1h c2ssDQo+ID4gLSAgSU4gVUlOVDY0ICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ICsgIElOIFVJTlQ2 NCAgICAgICAgICAgICAgVmFsdWUsDQo+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICBEZXRl Y3RJdA0KPiA+ICAgICk7DQo+ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTM4NSw5ICszODcsNDUgQEAg UHJlU21tQ3B1UmVnaXN0ZXJUYWJsZVdyaXRlICgNCj4gPg0KPiA+ICAgIEBub3RlIFRoaXMgc2Vy dmljZSBjb3VsZCBiZSBjYWxsZWQgYnkgQlNQIG9ubHkuDQo+ID4gICoqLw0KPiA+IC0jZGVmaW5l IENQVV9SRUdJU1RFUl9UQUJMRV9XUklURTMyKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBl LA0KPiBJbmRleCwgVmFsdWUpICAgICAgIFwNCj4gPiAtICBkbyB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ID4gLSAgICBDcHVSZWdpc3RlclRhYmxlV3JpdGUgKFByb2Nlc3Nvck51bWJlciwg UmVnaXN0ZXJUeXBlLCBJbmRleCwNCj4gTUFYX1VJTlQzMiwgVmFsdWUpOyAgXA0KPiA+ICsjZGVm aW5lIENQVV9SRUdJU1RFUl9UQUJMRV9XUklURTMyKFByb2Nlc3Nvck51bWJlciwNCj4gUmVnaXN0 ZXJUeXBlLCBJbmRleCwgVmFsdWUpICAgICAgICAgICAgICBcDQo+ID4gKyAgZG8geyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAgIENwdVJlZ2lzdGVyVGFibGVXcml0ZSAo UHJvY2Vzc29yTnVtYmVyLCBSZWdpc3RlclR5cGUsIEluZGV4LA0KPiA+ICtNQVhfVUlOVDMyLCBW YWx1ZSwgRkFMU0UpOyAgXA0KPiA+ICsgIH0gd2hpbGUoRkFMU0UpOw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgQWRkcyBhIDMyLWJpdCByZWdpc3RlciB3cml0ZSBlbnRyeSBpbiBzcGVjaWZpZWQg cmVnaXN0ZXIgdGFibGUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgbWFjcm8gYWRkcyBhbiBlbnRyeSBp biBzcGVjaWZpZWQgcmVnaXN0ZXIgdGFibGUsIHdpdGggZ2l2ZW4NCj4gPiArIHJlZ2lzdGVyIHR5 cGUsICByZWdpc3RlciBpbmRleCwgYW5kIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d ICBQcm9jZXNzb3JOdW1iZXIgIFRoZSBpbmRleCBvZiB0aGUgQ1BVIHRvIGFkZCBhIHJlZ2lzdGVy DQo+IHRhYmxlIGVudHJ5Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlZ2lzdGVyVHlwZSAgICAgVHlw ZSBvZiB0aGUgcmVnaXN0ZXIgdG8gcHJvZ3JhbQ0KPiA+ICsgIEBwYXJhbVtpbl0gIEluZGV4ICAg ICAgICAgICAgSW5kZXggb2YgdGhlIHJlZ2lzdGVyIHRvIHByb2dyYW0NCj4gPiArICBAcGFyYW1b aW5dICBWYWx1ZSAgICAgICAgICAgIFZhbHVlIHRvIHdyaXRlDQo+ID4gKw0KPiA+ICsgIEBub3Rl IFRoaXMgc2VydmljZSBjb3VsZCBiZSBjYWxsZWQgYnkgQlNQIG9ubHkuDQo+ID4gKyoqLw0KPiA+ ICsjZGVmaW5lIENQVV9SRUdJU1RFUl9UQUJMRV9URVNUX1RIRU5fV1JJVEUzMihQcm9jZXNzb3JO dW1iZXIsDQo+IFJlZ2lzdGVyVHlwZSwgSW5kZXgsIFZhbHVlKSAgIFwNCj4gPiArICBkbyB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gKyAgICBDcHVSZWdpc3RlclRhYmxlV3Jp dGUgKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBlLCBJbmRleCwNCj4gPiArTUFYX1VJTlQz MiwgVmFsdWUsIFRSVUUpOyAgXA0KPiA+ICsgIH0gd2hpbGUoRkFMU0UpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgQWRkcyBhIDY0LWJpdCByZWdpc3RlciB3cml0ZSBlbnRyeSBpbiBzcGVjaWZp ZWQgcmVnaXN0ZXIgdGFibGUuDQo+ID4gKw0KPiA+ICsgIFRoaXMgbWFjcm8gYWRkcyBhbiBlbnRy eSBpbiBzcGVjaWZpZWQgcmVnaXN0ZXIgdGFibGUsIHdpdGggZ2l2ZW4NCj4gPiArIHJlZ2lzdGVy IHR5cGUsICByZWdpc3RlciBpbmRleCwgYW5kIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dICBQcm9jZXNzb3JOdW1iZXIgIFRoZSBpbmRleCBvZiB0aGUgQ1BVIHRvIGFkZCBhIHJlZ2lz dGVyDQo+IHRhYmxlIGVudHJ5Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlZ2lzdGVyVHlwZSAgICAg VHlwZSBvZiB0aGUgcmVnaXN0ZXIgdG8gcHJvZ3JhbQ0KPiA+ICsgIEBwYXJhbVtpbl0gIEluZGV4 ICAgICAgICAgICAgSW5kZXggb2YgdGhlIHJlZ2lzdGVyIHRvIHByb2dyYW0NCj4gPiArICBAcGFy YW1baW5dICBWYWx1ZSAgICAgICAgICAgIFZhbHVlIHRvIHdyaXRlDQo+ID4gKw0KPiA+ICsgIEBu b3RlIFRoaXMgc2VydmljZSBjb3VsZCBiZSBjYWxsZWQgYnkgQlNQIG9ubHkuDQo+ID4gKyoqLw0K PiA+ICsjZGVmaW5lIENQVV9SRUdJU1RFUl9UQUJMRV9XUklURTY0KFByb2Nlc3Nvck51bWJlciwN Cj4gUmVnaXN0ZXJUeXBlLCBJbmRleCwgVmFsdWUpICAgICAgICAgICAgICBcDQo+ID4gKyAgZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAgIENwdVJlZ2lzdGVyVGFi bGVXcml0ZSAoUHJvY2Vzc29yTnVtYmVyLCBSZWdpc3RlclR5cGUsIEluZGV4LA0KPiA+ICtNQVhf VUlOVDY0LCBWYWx1ZSwgRkFMU0UpOyAgXA0KPiA+ICAgIH0gd2hpbGUoRkFMU0UpOw0KPiA+DQo+ ID4gIC8qKg0KPiA+IEBAIC00MDMsOSArNDQxLDkgQEAgUHJlU21tQ3B1UmVnaXN0ZXJUYWJsZVdy aXRlICgNCj4gPg0KPiA+ICAgIEBub3RlIFRoaXMgc2VydmljZSBjb3VsZCBiZSBjYWxsZWQgYnkg QlNQIG9ubHkuDQo+ID4gICoqLw0KPiA+IC0jZGVmaW5lIENQVV9SRUdJU1RFUl9UQUJMRV9XUklU RTY0KFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBlLA0KPiBJbmRleCwgVmFsdWUpICAgICAg IFwNCj4gPiAtICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ID4gLSAgICBDcHVSZWdp c3RlclRhYmxlV3JpdGUgKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBlLCBJbmRleCwNCj4g TUFYX1VJTlQ2NCwgVmFsdWUpOyAgXA0KPiA+ICsjZGVmaW5lIENQVV9SRUdJU1RFUl9UQUJMRV9U RVNUX1RIRU5fV1JJVEU2NChQcm9jZXNzb3JOdW1iZXIsDQo+IFJlZ2lzdGVyVHlwZSwgSW5kZXgs IFZhbHVlKSAgIFwNCj4gPiArICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ID4gKyAgICBDcHVSZWdpc3RlclRhYmxlV3JpdGUgKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJU eXBlLCBJbmRleCwNCj4gPiArTUFYX1VJTlQ2NCwgVmFsdWUsIFRSVUUpOyAgXA0KPiA+ICAgIH0g d2hpbGUoRkFMU0UpOw0KPiA+DQo+ID4gIC8qKg0KPiA+IEBAIC00MjgsNyArNDY2LDMwIEBAIFBy ZVNtbUNwdVJlZ2lzdGVyVGFibGVXcml0ZSAoDQo+ID4gICAgICBVSU5UNjQgIFZhbHVlTWFzazsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ID4gICAgICBWYWx1ZU1hc2sgPSBNQVhfVUlOVDY0OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ID4gICAgICAoKFR5cGUgKikoJlZhbHVlTWFzaykpLT5GaWVsZCA9IDA7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ID4gLSAgICBDcHVSZWdpc3RlclRhYmxlV3JpdGUgKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0 ZXJUeXBlLCBJbmRleCwNCj4gflZhbHVlTWFzaywgVmFsdWUpOyAgICAgICAgICAgICBcDQo+ID4g KyAgICBDcHVSZWdpc3RlclRhYmxlV3JpdGUgKFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBl LCBJbmRleCwNCj4gflZhbHVlTWFzaywgVmFsdWUsIEZBTFNFKTsgICAgICBcDQo+ID4gKyAgfSB3 aGlsZShGQUxTRSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBBZGRzIGEgYml0IGZpZWxkIHdy aXRlIGVudHJ5IGluIHNwZWNpZmllZCByZWdpc3RlciB0YWJsZS4NCj4gPiArDQo+ID4gKyAgVGhp cyBtYWNybyBhZGRzIGFuIGVudHJ5IGluIHNwZWNpZmllZCByZWdpc3RlciB0YWJsZSwgd2l0aCBn aXZlbg0KPiA+ICsgcmVnaXN0ZXIgdHlwZSwgIHJlZ2lzdGVyIGluZGV4LCBiaXQgZmllbGQgc2Vj dGlvbiwgYW5kIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBQcm9jZXNzb3JOdW1i ZXIgIFRoZSBpbmRleCBvZiB0aGUgQ1BVIHRvIGFkZCBhIHJlZ2lzdGVyDQo+IHRhYmxlIGVudHJ5 Lg0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlZ2lzdGVyVHlwZSAgICAgVHlwZSBvZiB0aGUgcmVnaXN0 ZXIgdG8gcHJvZ3JhbS4NCj4gPiArICBAcGFyYW1baW5dICBJbmRleCAgICAgICAgICAgIEluZGV4 IG9mIHRoZSByZWdpc3RlciB0byBwcm9ncmFtLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFR5cGUgICAg ICAgICAgICAgVGhlIGRhdGEgdHlwZSBuYW1lIG9mIGEgcmVnaXN0ZXIgc3RydWN0dXJlLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIEZpZWxkICAgICAgICAgICAgVGhlIGJpdCBmaWVsIG5hbWUgaW4gcmVn aXN0ZXIgc3RydWN0dXJlIHRvIHdyaXRlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFZhbHVlICAgICAg ICAgICAgVmFsdWUgdG8gd3JpdGUgdG8gdGhlIGJpdCBmaWVsZC4NCj4gPiArDQo+ID4gKyAgQG5v dGUgVGhpcyBzZXJ2aWNlIGNvdWxkIGJlIGNhbGxlZCBieSBCU1Agb25seS4NCj4gPiArKiovDQo+ ID4gKyNkZWZpbmUNCj4gQ1BVX1JFR0lTVEVSX1RBQkxFX1RFU1RfVEhFTl9XUklURV9GSUVMRChQ cm9jZXNzb3JOdW1iZXIsDQo+IFJlZ2lzdGVyVHlwZSwgSW5kZXgsIFR5cGUsIEZpZWxkLCBWYWx1 ZSkgXA0KPiA+ICsgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gPiArICAgIFVJTlQ2NCAgVmFsdWVNYXNrOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ID4gKyAgICBWYWx1ZU1hc2sgPSBNQVhfVUlOVDY0OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiA+ICsgICAgKChUeXBlICopKCZWYWx1ZU1hc2spKS0+RmllbGQgPSAwOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gPiArICAgIENwdVJlZ2lzdGVyVGFibGVXcml0ZSAoUHJvY2Vzc29yTnVtYmVy LCBSZWdpc3RlclR5cGUsIEluZGV4LA0KPiB+VmFsdWVNYXNrLCBWYWx1ZSwgVFJVRSk7ICAgICAg ICAgICAgICAgICBcDQo+ID4gICAgfSB3aGlsZShGQUxTRSk7DQo+ID4NCj4gPiAgLyoqDQo+ID4g ZGlmZiAtLWdpdA0KPiA+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNM aWIvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi5jDQo+ID4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvUmVn aXN0ZXJDcHVGZWF0dXJlc0xpYi9SZWdpc3RlckNwdUZlYXR1cmVzTGliLmMNCj4gPiBpbmRleCA2 Nzg4NWJmNjliLi4xNTJhYjc1OTg4IDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvVWVmaUNwdVBrZy9M aWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvUmVnaXN0ZXJDcHVGZWF0dXJlc0xpYi5jDQo+ ID4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvUmVn aXN0ZXJDcHVGZWF0dXJlc0xpYg0KPiA+ICsrKyAuYw0KPiA+IEBAIC0xMDI1LDYgKzEwMjUsOCBA QCBFbmxhcmdlUmVnaXN0ZXJUYWJsZSAoDQo+ID4gICAgQHBhcmFtW2luXSAgVmFsaWRCaXRTdGFy dCAgICBTdGFydCBvZiB0aGUgYml0IHNlY3Rpb24NCj4gPiAgICBAcGFyYW1baW5dICBWYWxpZEJp dExlbmd0aCAgIExlbmd0aCBvZiB0aGUgYml0IHNlY3Rpb24NCj4gPiAgICBAcGFyYW1baW5dICBW YWx1ZSAgICAgICAgICAgIFZhbHVlIHRvIHdyaXRlDQo+ID4gKyAgQHBhcmFtW2luXSAgRGV0ZWN0 SXQgICAgICAgICBXaGV0aGVyIG5lZWQgdG8gZGV0ZWN0IGN1cnJlbnQgVmFsdWUgYmVmb3JlDQo+ IHdyaXRpbmcuDQo+ID4gKw0KPiA+ICAqKi8NCj4gPiAgVk9JRA0KPiA+ICBDcHVSZWdpc3RlclRh YmxlV3JpdGVXb3JrZXIgKA0KPiA+IEBAIC0xMDM0LDcgKzEwMzYsOCBAQCBDcHVSZWdpc3RlclRh YmxlV3JpdGVXb3JrZXIgKA0KPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgIEluZGV4 LA0KPiA+ICAgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgIFZhbGlkQml0U3RhcnQsDQo+ID4g ICAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgVmFsaWRCaXRMZW5ndGgsDQo+ID4gLSAgSU4g VUlOVDY0ICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiArICBJTiBVSU5UNjQgICAgICAgICAg ICAgICAgICBWYWx1ZSwNCj4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICBEZXRlY3RJ dA0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIENQVV9GRUFUVVJFU19EQVRBICAgICAgICAqQ3B1 RmVhdHVyZXNEYXRhOw0KPiA+IEBAIC0xMDcwLDYgKzEwNzMsNyBAQCBDcHVSZWdpc3RlclRhYmxl V3JpdGVXb3JrZXIgKA0KPiA+ICAgIFJlZ2lzdGVyVGFibGVFbnRyeVtSZWdpc3RlclRhYmxlLT5U YWJsZUxlbmd0aF0uVmFsaWRCaXRTdGFydCAgPQ0KPiBWYWxpZEJpdFN0YXJ0Ow0KPiA+ICAgIFJl Z2lzdGVyVGFibGVFbnRyeVtSZWdpc3RlclRhYmxlLT5UYWJsZUxlbmd0aF0uVmFsaWRCaXRMZW5n dGggPQ0KPiBWYWxpZEJpdExlbmd0aDsNCj4gPiAgICBSZWdpc3RlclRhYmxlRW50cnlbUmVnaXN0 ZXJUYWJsZS0+VGFibGVMZW5ndGhdLlZhbHVlICAgICAgICAgID0gVmFsdWU7DQo+ID4gKyAgUmVn aXN0ZXJUYWJsZUVudHJ5W1JlZ2lzdGVyVGFibGUtPlRhYmxlTGVuZ3RoXS5EZXRlY3RJdCAgICAg ICA9IERldGVjdEl0Ow0KPiA+DQo+ID4gICAgUmVnaXN0ZXJUYWJsZS0+VGFibGVMZW5ndGgrKzsN Cj4gPiAgfQ0KPiA+IEBAIC0xMDg1LDYgKzEwODksNyBAQCBDcHVSZWdpc3RlclRhYmxlV3JpdGVX b3JrZXIgKA0KPiA+ICAgIEBwYXJhbVtpbl0gIEluZGV4ICAgICAgICAgICAgSW5kZXggb2YgdGhl IHJlZ2lzdGVyIHRvIHByb2dyYW0NCj4gPiAgICBAcGFyYW1baW5dICBWYWx1ZU1hc2sgICAgICAg IE1hc2sgb2YgYml0cyBpbiByZWdpc3RlciB0byB3cml0ZQ0KPiA+ICAgIEBwYXJhbVtpbl0gIFZh bHVlICAgICAgICAgICAgVmFsdWUgdG8gd3JpdGUNCj4gPiArICBAcGFyYW1baW5dICBEZXRlY3RJ dCAgICAgICAgIFdoZXRoZXIgbmVlZCB0byBkZXRlY3QgY3VycmVudCBWYWx1ZSBiZWZvcmUNCj4g d3JpdGluZy4NCj4gPg0KPiA+ICAgIEBub3RlIFRoaXMgc2VydmljZSBjb3VsZCBiZSBjYWxsZWQg YnkgQlNQIG9ubHkuDQo+ID4gICoqLw0KPiA+IEBAIC0xMDk1LDcgKzExMDAsOCBAQCBDcHVSZWdp c3RlclRhYmxlV3JpdGUgKA0KPiA+ICAgIElOIFJFR0lTVEVSX1RZUEUgICAgICAgUmVnaXN0ZXJU eXBlLA0KPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gICAgSU4gVUlO VDY0ICAgICAgICAgICAgICBWYWx1ZU1hc2ssDQo+ID4gLSAgSU4gVUlOVDY0ICAgICAgICAgICAg ICBWYWx1ZQ0KPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgVmFsdWUsDQo+ID4gKyAgSU4g VUlOVDggICAgICAgICAgICAgICBEZXRlY3RJdA0KPiA+ICAgICkNCj4gPiAgew0KPiA+ICAgIFVJ TlQ4ICAgICAgICAgICAgICAgICAgIFN0YXJ0Ow0KPiA+IEBAIC0xMTA1LDcgKzExMTEsNyBAQCBD cHVSZWdpc3RlclRhYmxlV3JpdGUgKA0KPiA+ICAgIFN0YXJ0ICA9IChVSU5UOClMb3dCaXRTZXQ2 NCAgKFZhbHVlTWFzayk7DQo+ID4gICAgRW5kICAgID0gKFVJTlQ4KUhpZ2hCaXRTZXQ2NCAoVmFs dWVNYXNrKTsNCj4gPiAgICBMZW5ndGggPSBFbmQgLSBTdGFydCArIDE7DQo+ID4gLSAgQ3B1UmVn aXN0ZXJUYWJsZVdyaXRlV29ya2VyIChGQUxTRSwgUHJvY2Vzc29yTnVtYmVyLCBSZWdpc3RlclR5 cGUsDQo+ID4gSW5kZXgsIFN0YXJ0LCBMZW5ndGgsIFZhbHVlKTsNCj4gPiArICBDcHVSZWdpc3Rl clRhYmxlV3JpdGVXb3JrZXIgKEZBTFNFLCBQcm9jZXNzb3JOdW1iZXIsIFJlZ2lzdGVyVHlwZSwN Cj4gPiArIEluZGV4LCBTdGFydCwgTGVuZ3RoLCBWYWx1ZSwgRGV0ZWN0SXQpOw0KPiA+ICB9DQo+ ID4NCj4gPiAgLyoqDQo+ID4gQEAgLTExMzksNyArMTE0NSw3IEBAIFByZVNtbUNwdVJlZ2lzdGVy VGFibGVXcml0ZSAoDQo+ID4gICAgU3RhcnQgID0gKFVJTlQ4KUxvd0JpdFNldDY0ICAoVmFsdWVN YXNrKTsNCj4gPiAgICBFbmQgICAgPSAoVUlOVDgpSGlnaEJpdFNldDY0IChWYWx1ZU1hc2spOw0K PiA+ICAgIExlbmd0aCA9IEVuZCAtIFN0YXJ0ICsgMTsNCj4gPiAtICBDcHVSZWdpc3RlclRhYmxl V3JpdGVXb3JrZXIgKFRSVUUsIFByb2Nlc3Nvck51bWJlciwgUmVnaXN0ZXJUeXBlLA0KPiA+IElu ZGV4LCBTdGFydCwgTGVuZ3RoLCBWYWx1ZSk7DQo+ID4gKyAgQ3B1UmVnaXN0ZXJUYWJsZVdyaXRl V29ya2VyIChUUlVFLCBQcm9jZXNzb3JOdW1iZXIsIFJlZ2lzdGVyVHlwZSwNCj4gPiArIEluZGV4 LCBTdGFydCwgTGVuZ3RoLCBWYWx1ZSwgRkFMU0UpOw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ ID4NCj4gDQo+IA0KPiANCg0K