From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=eric.dong@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 16CF321CEB159 for ; Tue, 24 Oct 2017 22:38:48 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Oct 2017 22:42:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,430,1503385200"; d="scan'208";a="166749762" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga005.fm.intel.com with ESMTP; 24 Oct 2017 22:42:33 -0700 Received: from fmsmsx118.amr.corp.intel.com (10.18.116.18) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 24 Oct 2017 22:42:32 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx118.amr.corp.intel.com (10.18.116.18) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 24 Oct 2017 22:42:32 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.213]) with mapi id 14.03.0319.002; Wed, 25 Oct 2017 13:42:30 +0800 From: "Dong, Eric" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Ni, Ruiyu" , Paolo Bonzini , Jeff Fan Thread-Topic: [edk2] [Patch 2/2] UefiCpuPkg/MpInitLib: Enhance waiting for AP initialization logic. Thread-Index: AQHTS8/RPtqizoqgTUaTHjY9+C766aLyRGEAgADUE/D//6gkgIABS5Eg Date: Wed, 25 Oct 2017 05:42:29 +0000 Message-ID: References: <1508743358-3640-1-git-send-email-eric.dong@intel.com> <1508743358-3640-3-git-send-email-eric.dong@intel.com> <4fe39a52-0cd3-de2e-84f2-7363823a1b60@redhat.com> <1329f926-4c33-aaca-108a-7d15ae0503bc@redhat.com> In-Reply-To: <1329f926-4c33-aaca-108a-7d15ae0503bc@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch 2/2] UefiCpuPkg/MpInitLib: Enhance waiting for AP initialization logic. 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: Wed, 25 Oct 2017 05:38:49 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpJIHRoaW5rIEkgaGF2ZSBjbGVhciBhYm91dCB5b3VyIHJhaXNlZCBpc3N1 ZXMgZm9yIE92bWYgcGxhdGZvcm0uIEluIHRoaXMgY2FzZSwgSSB0aGluayB5b3VyIHBsYXRmb3Jt IG5vdCBzdWl0IGZvciB0aGlzIGNvZGUgY2hhbmdlLiAgSG93IGFib3V0IEkgZG8gYmVsb3cgY2hh bmdlIGJhc2VkIG9uIHRoZSBuZXcgY29kZToNCg0KLSAgICAgIGlmIChDcHVNcERhdGEtPkNwdUNv dW50ID09IDApIHsNCiAgICAgICAgVGltZWRXYWl0Rm9yQXBGaW5pc2ggKA0KICAgICAgICAgIENw dU1wRGF0YSwNCiAgICAgICAgICBQY2RHZXQzMiAoUGNkQ3B1TWF4TG9naWNhbFByb2Nlc3Nvck51 bWJlcikgLSAxLA0KICAgICAgICAgIFBjZEdldDMyIChQY2RDcHVBcEluaXRUaW1lT3V0SW5NaWNy b1NlY29uZHMpDQogICAgICAgICAgKTsNCi0gICAgICB9DQoNCkFmdGVyIHRoaXMgY2hhbmdlLCBm b3IgT3ZtZiBjYW4gc3RpbGwgc2V0IFBjZENwdUFwSW5pdFRpbWVPdXRJbk1pY3JvU2Vjb25kcyB0 byBNQVhfVUlOVDMyIHRvIGtlZXAgb2xkIHNvbHV0aW9uLiBGb3IgdGhlIHJlYWwgcGxhdGZvcm0s IGl0IGNhbiBzZXQgYSBzbWFsbCB2YWx1ZSB0byBmb2xsb3cgdGhlIG5ldyBzb2x1dGlvbi4gRm9y IHRoaXMgbmV3IGNoYW5nZSwgaXQganVzdCB3YWl0IG9uZSBtb3JlIFBjZENwdUFwSW5pdFRpbWVP dXRJbk1pY3JvU2Vjb25kcyB0aW1lb3V0LCBzaG91bGQgbm90IGhhdmUgcGVyZm9ybWFuY2UgaW1w YWN0IChUaGlzIHRpbWUgbWF5IGFsc28gYmVlbiBjb3N0IGluIGxhdGVyIHdoaWxlIChDcHVNcERh dGEtPk1wQ3B1RXhjaGFuZ2VJbmZvLT5OdW1BcHNFeGVjdXRpbmcgIT0gMCkgbG9vcCkgb3IgaGF2 ZSBsaXR0ZXIgcGVyZm9ybWFuY2UgaW1wYWN0IChub3QgY292ZXIgYnkgdGhlIGxhdGVyIGxvb3Ap Lg0KDQpUaGFua3MsDQpFcmljDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFdlZG5l c2RheSwgT2N0b2JlciAyNSwgMjAxNyAxOjQwIEFNDQo+IFRvOiBEb25nLCBFcmljIDxlcmljLmRv bmdAaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IE5pLCBSdWl5dSA8 cnVpeXUubmlAaW50ZWwuY29tPjsgUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT47 DQo+IEplZmYgRmFuIDx2YW5qZWZmXzkxOUBob3RtYWlsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtl ZGsyXSBbUGF0Y2ggMi8yXSBVZWZpQ3B1UGtnL01wSW5pdExpYjogRW5oYW5jZSB3YWl0aW5nIGZv cg0KPiBBUCBpbml0aWFsaXphdGlvbiBsb2dpYy4NCj4gDQo+IEhpIEVyaWMsDQo+IA0KPiBPbiAx MC8yNC8xNyAxNzoyMywgRG9uZywgRXJpYyB3cm90ZToNCj4gPiBMYXN6bG8sDQo+ID4NCj4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWls dG86bGVyc2VrQHJlZGhhdC5jb21dDQo+ID4+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMjQsIDIw MTcgNjoxNiBQTQ0KPiA+PiBUbzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+IENjOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVs LmNvbT47IFBhb2xvIEJvbnppbmkNCj4gPj4gPHBib256aW5pQHJlZGhhdC5jb20+DQo+ID4+IFN1 YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoIDIvMl0gVWVmaUNwdVBrZy9NcEluaXRMaWI6IEVuaGFu Y2Ugd2FpdGluZw0KPiA+PiBmb3IgQVAgaW5pdGlhbGl6YXRpb24gbG9naWMuDQo+ID4+DQo+ID4+ IENDIFBhb2xvDQo+ID4+DQo+ID4+IE9uIDEwLzIzLzE3IDA5OjIyLCBFcmljIERvbmcgd3JvdGU6 DQo+IA0KPiA+Pj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvSWEz Mi9NcEVxdS5pbmMNCj4gPj4+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9JYTMyL01w RXF1LmluYw0KPiA+Pj4gaW5kZXggOTc2YWYxZi4uYmRmZTBkMyAxMDA2NDQNCj4gPj4+IC0tLSBh L1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvSWEzMi9NcEVxdS5pbmMNCj4gPj4+ICsrKyBi L1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvSWEzMi9NcEVxdS5pbmMNCj4gPj4+IEBAIC00 MCw0ICs0MCw1IEBAIEVuYWJsZUV4ZWN1dGVEaXNhYmxlTG9jYXRpb24gIGVxdQ0KPiBMb2NrTG9j YXRpb24NCj4gPj4gKyAzMGgNCj4gPj4+ICBDcjNMb2NhdGlvbiAgICAgICAgICAgICAgICAgICBl cXUgICAgICAgIExvY2tMb2NhdGlvbiArIDM0aA0KPiA+Pj4gIEluaXRGbGFnTG9jYXRpb24gICAg ICAgICAgICAgIGVxdSAgICAgICAgTG9ja0xvY2F0aW9uICsgMzhoDQo+ID4+PiAgQ3B1SW5mb0xv Y2F0aW9uICAgICAgICAgICAgICAgZXF1ICAgICAgICBMb2NrTG9jYXRpb24gKyAzQ2gNCj4gPj4+ ICtOdW1BcHNFeGVjdXRpbmdMb2NhdGlvbiAgICAgICBlcXUgICAgICAgIExvY2tMb2NhdGlvbiAr IDQwaA0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0 TGliL0lhMzIvTXBGdW5jcy5uYXNtDQo+ID4+PiBiL1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRM aWIvSWEzMi9NcEZ1bmNzLm5hc20NCj4gPj4+IGluZGV4IDFiOWM2YTYuLjJiNmMyN2QgMTAwNjQ0 DQo+ID4+PiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL0lhMzIvTXBGdW5jcy5u YXNtDQo+ID4+PiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL0lhMzIvTXBGdW5j cy5uYXNtDQo+ID4+PiBAQCAtODYsNiArODYsMTIgQEAgRmxhdDMyU3RhcnQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IHByb3RlY3RlZCBtb2RlDQo+ID4+IGVudHJ5IHBvaW50 DQo+ID4+Pg0KPiA+Pj4gICAgICBtb3YgICAgICAgIGVzaSwgZWJ4DQo+ID4+Pg0KPiA+Pj4gKyAg ICA7IEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIEFQcyBleGVjdXRpbmcgaGVyZSBhcyBlYXJseSBh cyBwb3NzaWJsZQ0KPiA+Pj4gKyAgICA7IFRoaXMgaXMgZGVjcmVtZW50ZWQgaW4gQyBjb2RlIHdo ZW4gQVAgaXMgZmluaXNoZWQgZXhlY3V0aW5nDQo+ID4+PiArICAgIG1vdiAgICAgICAgZWRpLCBl c2kNCj4gPj4+ICsgICAgYWRkICAgICAgICBlZGksIE51bUFwc0V4ZWN1dGluZ0xvY2F0aW9uDQo+ ID4+PiArICAgIGxvY2sgaW5jICAgZHdvcmQgW2VkaV0NCj4gPj4+ICsNCj4gPj4+ICAgICAgbW92 ICAgICAgICAgZWRpLCBlc2kNCj4gPj4+ICAgICAgYWRkICAgICAgICAgZWRpLCBFbmFibGVFeGVj dXRlRGlzYWJsZUxvY2F0aW9uDQo+ID4+PiAgICAgIGNtcCAgICAgICAgIGJ5dGUgW2VkaV0sIDAN Cj4gPj4+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliLmMN Cj4gPj4+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYi5jDQo+ID4+PiBpbmRl eCBkYjkyM2M5Li40OGY5MzBiIDEwMDY0NA0KPiA+Pj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5 L01wSW5pdExpYi9NcExpYi5jDQo+ID4+PiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0 TGliL01wTGliLmMNCj4gPj4+IEBAIC02NjIsNiArNjYyLDcgQEAgQXBXYWtldXBGdW5jdGlvbiAo DQo+ID4+PiAgICAgIC8vIEFQIGZpbmlzaGVkIGV4ZWN1dGluZyBDIGNvZGUNCj4gPj4+ICAgICAg Ly8NCj4gPj4+ICAgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQgKChVSU5UMzIgKikgJkNwdU1wRGF0 YS0+RmluaXNoZWRDb3VudCk7DQo+ID4+PiArICAgIEludGVybG9ja2VkRGVjcmVtZW50ICgoVUlO VDMyICopDQo+ID4+PiArICZDcHVNcERhdGEtPk1wQ3B1RXhjaGFuZ2VJbmZvLT5OdW1BcHNFeGVj dXRpbmcpOw0KPiA+Pj4NCj4gPj4+ICAgICAgLy8NCj4gPj4+ICAgICAgLy8gUGxhY2UgQVAgaXMg c3BlY2lmaWVkIGxvb3AgbW9kZSBAQCAtNzY1LDYgKzc2Niw3IEBADQo+ID4+PiBGaWxsRXhjaGFu Z2VJbmZvRGF0YSAoDQo+ID4+Pg0KPiA+Pj4gICAgRXhjaGFuZ2VJbmZvLT5DRnVuY3Rpb24gICAg ICAgPSAoVUlOVE4pIEFwV2FrZXVwRnVuY3Rpb247DQo+ID4+PiAgICBFeGNoYW5nZUluZm8tPkFw SW5kZXggICAgICAgICA9IDA7DQo+ID4+PiArICBFeGNoYW5nZUluZm8tPk51bUFwc0V4ZWN1dGlu ZyA9IDA7DQo+ID4+PiAgICBFeGNoYW5nZUluZm8tPkluaXRGbGFnICAgICAgICA9IChVSU5UTikg Q3B1TXBEYXRhLT5Jbml0RmxhZzsNCj4gPj4+ICAgIEV4Y2hhbmdlSW5mby0+Q3B1SW5mbyAgICAg ICAgID0gKENQVV9JTkZPX0lOX0hPQiAqKSAoVUlOVE4pDQo+ID4+IENwdU1wRGF0YS0+Q3B1SW5m b0luSG9iOw0KPiA+Pj4gICAgRXhjaGFuZ2VJbmZvLT5DcHVNcERhdGEgICAgICAgPSBDcHVNcERh dGE7DQo+ID4+PiBAQCAtOTM0LDEzICs5MzYsMTkgQEAgV2FrZVVwQVAgKA0KPiA+Pj4gICAgICB9 DQo+ID4+PiAgICAgIGlmIChDcHVNcERhdGEtPkluaXRGbGFnID09IEFwSW5pdENvbmZpZykgew0K PiA+Pj4gICAgICAgIC8vDQo+ID4+PiAtICAgICAgLy8gV2FpdCBmb3IgYWxsIHBvdGVudGlhbCBB UHMgd2FrZW4gdXAgaW4gb25lIHNwZWNpZmllZCBwZXJpb2QNCj4gPj4+ICsgICAgICAvLyBXYWl0 IGZvciBvbmUgcG90ZW50aWFsIEFQIHdha2VuIHVwIGluIG9uZSBzcGVjaWZpZWQgcGVyaW9kDQo+ ID4+PiAgICAgICAgLy8NCj4gPj4+IC0gICAgICBUaW1lZFdhaXRGb3JBcEZpbmlzaCAoDQo+ID4+ PiAtICAgICAgICBDcHVNcERhdGEsDQo+ID4+PiAtICAgICAgICBQY2RHZXQzMiAoUGNkQ3B1TWF4 TG9naWNhbFByb2Nlc3Nvck51bWJlcikgLSAxLA0KPiA+Pj4gLSAgICAgICAgUGNkR2V0MzIgKFBj ZENwdUFwSW5pdFRpbWVPdXRJbk1pY3JvU2Vjb25kcykNCj4gPj4+IC0gICAgICAgICk7DQo+ID4+ PiArICAgICAgaWYgKENwdU1wRGF0YS0+Q3B1Q291bnQgPT0gMCkgew0KPiA+Pj4gKyAgICAgICAg VGltZWRXYWl0Rm9yQXBGaW5pc2ggKA0KPiA+Pj4gKyAgICAgICAgICBDcHVNcERhdGEsDQo+ID4+ PiArICAgICAgICAgIFBjZEdldDMyIChQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyKSAt IDEsDQo+ID4+PiArICAgICAgICAgIFBjZEdldDMyIChQY2RDcHVBcEluaXRUaW1lT3V0SW5NaWNy b1NlY29uZHMpDQo+ID4+PiArICAgICAgICAgICk7DQo+ID4+PiArICAgICAgfQ0KPiA+Pg0KPiA+ PiBJIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBjaGFuZ2UuIFRoZSBuZXcgY29tbWVudCBzYXlzLA0K PiA+Pg0KPiA+PiAgIFdhaXQgZm9yICpvbmUqIHBvdGVudGlhbCBBUCB3YWtlbiB1cCBpbiBvbmUg c3BlY2lmaWVkIHBlcmlvZA0KPiA+Pg0KPiA+PiBIb3dldmVyLCB0aGUgc2Vjb25kIHBhcmFtZXRl ciBvZiBUaW1lZFdhaXRGb3JBcEZpbmlzaCgpLCBuYW1lbHkNCj4gPj4gIkZpbmlzaGVkQXBMaW1p dCIsIGdldHMgdGhlIHNhbWUgdmFsdWUgYXMgYmVmb3JlOg0KPiA+Pg0KPiA+PiAgIFBjZEdldDMy IChQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyKSAtIDENCj4gPj4NCj4gPj4gSXQgbWVh bnMgdGhhdCBhbGwgb2YgdGhlIChwb3NzaWJsZSkgQVBzIGFyZSB3YWl0ZWQtZm9yLCBqdXN0IHRo ZSBzYW1lDQo+ID4+IGFzIGJlZm9yZS4NCj4gPg0KPiA+IFtbRXJpY11dIFRoaXMgcGF0Y2ggY2hh bmdlcyB0aGUgY29sbGVjdCBBUCBjb3VudCBsb2dpYywgb3JpZ2luYWwNCj4gPiBzb2x1dGlvbiBh bHdheXMgd2FpdHMgZm9yIGEgc3BlY2lmaWMgdGltZSB0byBsZXQgYWxsIEFQcyBzdGFydCB1cC4g SWYNCj4gPiB0aGUgaW5wdXQgQ1BVIG51bWJlciAoUGNkR2V0MzIoUGNkQ3B1TWF4TG9naWNhbFBy b2Nlc3Nvck51bWJlcikgLSAxKQ0KPiA+IGhhdmUgYmVlbiBmb3VuZCBvciBhZnRlciBhIHNwZWNp ZmljIHRpbWUoUGNkR2V0MzINCj4gPiAoUGNkQ3B1QXBJbml0VGltZU91dEluTWljcm9TZWNvbmRz KSkuIEJTUCB3aWxsIG5vdCB3YWl0IGFueW1vcmUgYW5kDQo+ID4gdXNlDQo+ID4gQ3B1TXBEYXRh LT5DcHVDb3VudCBhcyB0aGUgZm91bmQgQVAgY291bnQuDQo+ID4NCj4gPiBOZXcgbG9naWMgYWxz byB3YWl0IGZvciBhIHNwZWNpZmljIHRpbWUsIGJ1dCB0aGlzIHRpbWUgaXMgc21hbGxlciB0aGFu DQo+ID4gdGhlIG9yaWdpbmFsIG9uZS4gSXQganVzdCB3YWl0IGZvciB0aGUgZmlyc3QgQVAoYW55 IEFQKSBiZWdpbiB0byBkbw0KPiA+IHRoZSBpbml0aWFsaXphdGlvbiggZG8gQ3B1TXBEYXRhLT5N cENwdUV4Y2hhbmdlSW5mby0NCj4gPk51bUFwc0V4ZWN1dGluZysrDQo+ID4gbWVhbnMgaXQgYmVn aW4gdG8gZG8gdGhlIGluaXRpYWxpemF0aW9uKS4gV2hlbiBBcCBmaW5pc2hlcw0KPiA+IGluaXRp YWxpemF0aW9uLCBpdCB3aWxsIGRvDQo+ID4gQ3B1TXBEYXRhLT5NcENwdUV4Y2hhbmdlSW5mby0+ TnVtQXBzRXhlY3V0aW5nLS0uIFNvIGFmdGVyIEJTUA0KPiB3YWl0cw0KPiA+IGZvciBhIHNwZWNp ZmljIHRpbWUgYXQgZmlyc3QsIGl0IGp1c3QgbmVlZHMgdG8gY2hlY2sgd2hldGhlcg0KPiA+IENw dU1wRGF0YS0+TXBDcHVFeGNoYW5nZUluZm8tPk51bUFwc0V4ZWN1dGluZyA9PSAwIHRvIGtub3cN Cj4gd2hldGhlciBhbGwNCj4gPiBBcHMgaGF2ZSBmaW5pc2hlZCBpbml0aWFsaXphdGlvbi4gSGVy ZSB3ZSBzdGlsbCB1c2UgdGhlIG9yaWdpbmFsIFBDRA0KPiA+IChQY2RDcHVBcEluaXRUaW1lT3V0 SW5NaWNyb1NlY29uZHMpIGZvciB0aGUgbmV3IHRpbWUgdmFsdWUuDQo+ID4NCj4gPiBXaGVuIG9u ZSBBUCBkbyB0aGUgaW5pdGlhbGl6YXRpb24sIGl0IHdpbGwgYWxzbyBkbw0KPiA+IENwdU1wRGF0 YS0+Q3B1Q291bnQrKy4gU28gaGVyZSBJIGNoZWNrIHdoZXRoZXIgQ3B1TXBEYXRhLQ0KPiA+Q3B1 Q291bnQgIT0NCj4gPiBDcHVNcERhdGEtPkNwdUNvdW50KyswDQo+ID4gdG8ga25vdyB3aGV0aGVy IEFQcyBhbHJlYWR5IGJlZ2luIHRvIGRvIHRoZSBpbml0aWFsaXphdGlvbi4gSWYgeWVzLCBJDQo+ ID4gbm90IG5lZWQgdG8gZG8gdGhlIHRpbWUgb3V0IHdhaXRpbmcgYW55bW9yZSwganVzdCBjaGVj ayB0aGUNCj4gPiBDcHVNcERhdGEtPk1wQ3B1RXhjaGFuZ2VJbmZvLT5OdW1BcHNFeGVjdXRpbmcg dG8ga25vdyB3aGV0aGVyDQo+IGFsbCBBcHMNCj4gPiBoYXZlIGZpbmlzaGVkIGluaXRpYWxpemF0 aW9uLg0KPiANCj4gVGhhbmtzIGZvciB0aGUgZXhwbGFuYXRpb24uDQo+IA0KPiBUaGUgIk51bUFw c0V4ZWN1dGluZyIgaW5jcmVtZW50IC8gZGVjcmVtZW50IGxvZ2ljIGluIHRoaXMgcGF0Y2ggZXhw ZWN0cw0KPiB0aGF0IHRoZSBBUHMgd29yayBhcyBmb2xsb3dzOg0KPiANCj4gKDEpIEFmdGVyIHRo ZSBJTklULVNJUEktU0lQSSwgdGhlcmUgbWF5IGJlIGEgZGVsYXkgYmVmb3JlIHRoZSBBUHMgc3Rh cnQNCj4gcnVubmluZy4gRHVyaW5nIHRoaXMgZGVsYXksIHRoZSBCU1AgbWF5IG9yIG1heSBub3Qg cmVhY2ggdGhlIGNvZGUgaW4NCj4gcXVlc3Rpb24uIFRoZSAoQ3B1TXBEYXRhLT5DcHVDb3VudCAh PSAwKSBjaGVjayBpcyBzdXBwb3NlZCB0byB0YWtlIHRoaXMNCj4gaW50byBhY2NvdW50Lg0KPiAN Cj4gKDIpIEFmdGVyIGF0IGxlYXN0IG9uZSBBUCBoYXMgc3RhcnRlZCBydW5uaW5nLCB0aGUgbG9n aWMgZXhwZWN0cw0KPiAiTnVtQXBzRXhlY3V0aW5nIiB0byBtb25vdG9uaWNhbGx5IGdyb3cgZm9y IGEgd2hpbGUsIGFuZCB0aGVuIHRvDQo+IG1vbm90b25pY2FsbHkgZGVjcmVhc2UsIGJhY2sgdG8g emVyby4gRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgMSBCU1AgYW5kDQo+IDcgQVBzLCB0aGUgQlNQ IGxvZ2ljIG1vcmUgb3IgbGVzcyBleHBlY3RzIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGluDQo+ICJO dW1BcHNFeGVjdXRpbmciOg0KPiANCj4gMTsgMjsgMzsgNDsgNTsgNjsgNzsNCj4gNjsgNTsgNDsg MzsgMjsgMTsgMA0KPiANCj4gDQo+IFdoaWxlIHRoaXMgbWF5IGJlIGEgdmFsaWQgZXhwZWN0YXRp b24gZm9yIHBoeXNpY2FsIHByb2Nlc3NvcnMgKHdoaWNoIGFjdHVhbGx5DQo+IHJ1biBpbiBwYXJh bGxlbCwgaW4gdGhlIHBoeXNpY2FsIHdvcmxkKSwgaW4gYSB2aXJ0dWFsIG1hY2hpbmUsIGl0IGlz IG5vdCBndWFyYW50ZWVkLg0KPiBEZXBlbmRlbnQgb24gaHlwZXJ2aXNvciBzY2hlZHVsaW5nIGFy dGlmYWN0cywgaXQgaXMgcG9zc2libGUgdGhhdCwgc2F5LCB0aHJlZQ0KPiBBUHMgc3RhcnQgdXAg KmFuZCBmaW5pc2gqIGJlZm9yZSB0aGUgcmVtYWluaW5nIGZvdXIgQVBzIHN0YXJ0IHVwICphdCBh bGwqLiBUaGUNCj4gSU5JVC1TSVBJLVNJUEkgbWFya3MgYWxsIEFQcyBmb3IgZXhlY3V0aW9uIC8g c2NoZWR1bGluZyBpbiB0aGUgaHlwZXJ2aXNvciwgeWVzLA0KPiBidXQgdGhlIGFjdHVhbCBjb2Rl IGV4ZWN1dGlvbiBtYXkgY29tbWVuY2UgYSBsb3QgbGF0ZXIuIEZvciBleGFtcGxlLCB0aGUNCj4g QlNQIG1heSB3aXRuZXNzIHRoZSBmb2xsb3dpbmcgc2VyaWVzIG9mIHZhbHVlcyBpbiAiTnVtQXBz RXhlY3V0aW5nIjoNCj4gDQo+IDE7IDI7IDM7DQo+IDI7IDE7IDA7DQo+IDE7IDI7IDM7IDQ7DQo+ IDM7IDI7IDE7IDANCj4gDQo+IGFuZCB0aGUgQlNQIGNvdWxkIHRoaW5rIHRoYXQgdGhlcmUgYXJl IDMgQVBzIG9ubHksIHdoZW4gaXQgc2VlcyB0aGUgZmlyc3QgMA0KPiB2YWx1ZS4NCj4gDQo+IA0K PiBOb3csIGxldCBtZSBnZXQgYmFjayB0byB0aGUgdXNlIGNhc2UgdGhhdCBhY3R1YWxseSBtYXR0 ZXJzIHRvIE9WTUYgYW5kDQo+IFFFTVUuIEFzIEkgbWVudGlvbmVkIGVhcmxpZXIsIE9WTUYga25v d3MgZnJvbSBRRU1VIHRoZSBleGFjdCBudW1iZXINCj4gb2YgQVBzLiBJZiB0aGVyZSBpcyBhIHdh eSBmb3IgT1ZNRiB0byB0ZWxsIE1wSW5pdExpYiB0byB3YWl0IGZvciB0aGlzIGV4YWN0DQo+IG51 bWJlciBvZiBBUHMgLS0gbm8gbWF0dGVyIGhvdyBsb25nIGl0IHRha2VzIC0tLCB0aGVuIHRoYXQn cyB3aGF0IEkgd291bGQgbGlrZQ0KPiB0byB1c2UuDQo+IA0KPiBQbGVhc2Ugc2VlIHRoZSBvcmln aW5hbCBkaXNjdXNzaW9uIGFyb3VuZCBPVk1GIGNvbW1pdCA0NWE3MGRiM2MzYTU5Og0KPiANCj4g KiBJbiB2ZXJzaW9uIDEsIEkgaW50cm9kdWNlZCBhIG5ldyBQQ0QgY2FsbGVkDQo+IA0KPiAgIFBj ZENwdUtub3duTG9naWNhbFByb2Nlc3Nvck51bWJlcg0KPiANCj4gYW5kIEkgbW9kaWZpZWQgTXBJ bml0TGliIHRvIHdhaXQgZm9yIHRoaXMgQVAgbnVtYmVyLCBpZ25vcmluZyB0aW1lb3V0DQo+IGNv bXBsZXRlbHksIGlmIHRoZSBQQ0Qgd2FzIHNldDoNCj4gDQo+ICAgaHR0cHM6Ly9saXN0cy4wMS5v cmcvcGlwZXJtYWlsL2VkazItZGV2ZWwvMjAxNi1Ob3ZlbWJlci8wMDUwNzYuaHRtbA0KPiANCj4g SG93ZXZlciwgSmVmZiBzdWdnZXN0ZWQgdG8gdXNlIHRoZSBwcmVleGlzdGVudCBQQ0QNCj4gIlBj ZENwdU1heExvZ2ljYWxQcm9jZXNzb3JOdW1iZXIiIGZvciB0aGlzIHB1cnBvc2U6DQo+IA0KPiAg IGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTYtTm92ZW1iZXIv MDA1MDkyLmh0bWwNCj4gDQo+ICogSW4gdmVyc2lvbiAyLCBJIHVzZWQgdGhlIFBDRCBzdWdnZXN0 ZWQgYnkgSmVmZiwgYnV0IEkgYWxzbyBpbnRyb2R1Y2VkIGEgbmV3DQo+IHNwZWNpYWwgdmFsdWUg Zm9yIHRoZSB0aW1lb3V0LiBUaW1lb3V0PTAgd291bGQgbWVhbiAiaW5maW5pdHkiOg0KPiANCj4g ICBodHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWRrMi1kZXZlbC8yMDE2LU5vdmVtYmVy LzAwNTIwOS5odG1sDQo+IA0KPiBKZWZmIGRpZG4ndCBsaWtlIHRoZSBzcGVjaWFsIHZhbHVlLCBh bmQgc3VnZ2VzdGVkIHRoYXQgT1ZNRiBzaW1wbHkgdXNlDQo+IE1BWF9VSU5UMzIgbWljcm9zZWNv bmRzIChhcHByb3guIDcxIG1pbnV0ZXMpIGluc3RlYWQgb2YgImluZmluaXR5IjoNCj4gDQo+ICAg aHR0cHM6Ly9saXN0cy4wMS5vcmcvcGlwZXJtYWlsL2VkazItZGV2ZWwvMjAxNi1Ob3ZlbWJlci8w MDUyNjYuaHRtbA0KPiANCj4gKiBJbiB2MywgSSBpbXBsZW1lbnRlZCB0aGF0LCBhbmQgdGhhdCB3 YXMgcHVzaGVkIGFzOg0KPiANCj4gICAtIFVlZmlDcHVQa2cgY29tbWl0IDZlMTk4N2YxOWFmNyAo IlVlZmlDcHVQa2cvTXBJbml0TGliOiB3YWl0IG5vDQo+ICAgICBsb25nZXIgdGhhbiBuZWNlc3Nh cnkgZm9yIGluaXRpYWwgQVAgc3RhcnR1cCIsIDIwMTYtMTEtMjQpDQo+IA0KPiAgIC0gYW5kIE92 bWZQa2cgY29tbWl0IDQ1YTcwZGIzYzNhNSAoIk92bWZQa2cvUGxhdGZvcm1QZWk6IHRha2UgVkNQ VQ0KPiAgICAgY291bnQgZnJvbSBRRU1VIGFuZCBjb25maWd1cmUgTXBJbml0TGliIiwgMjAxNi0x MS0yNCkuDQo+IA0KPiANCj4gU28sIGFnYWluLCB0aGUgdXNlIGNhc2UgdGhhdCBJIHdvdWxkIGxp a2UgdG8gY292ZXIgaXM6DQo+IA0KPiAqIHRoZSBleGFjdCBudW1iZXIgb2YgQVBzIGlzIGtub3du IGF0IGJvb3QsIHRvIE92bWZQa2cvUGxhdGZvcm1QZWksDQo+IA0KPiAqIGFmdGVyIHRoZSB2ZXJ5 IGZpcnN0IElOSVQtU0lQSS1TSVBJLCBNcEluaXRMaWIgc2hvdWxkIHdhaXQgZm9yIGV4YWN0bHkN Cj4gICB0aGlzIG51bWJlciBvZiBBUHMgdG8gInJlcG9ydCBpbiIsIHJlZ2FyZGxlc3Mgb2Y6DQo+ IA0KPiAgIC0gaG93IGxvbmcgaXQgdGFrZXMsDQo+IA0KPiAgIC0gaW4gd2hhdCBvcmRlciAvIHNl cXVlbmNlIHRoZSBBUHMgcmVwb3J0IGluLiAoQWdhaW4sIHBsZWFzZSByZW1lbWJlcg0KPiAgICAg dGhhdCBzb21lIEFQcyBtYXkgY29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIGJlZm9yZSBvdGhl ciBBUHMNCj4gICAgIGV4ZWN1dGUgdGhlaXIgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbi4pDQo+IA0K PiAqIFByZWZlcmFibHksIHRoZSBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIHdoZW4gdGhlIHByb2Nl c3NvciBjb3VudCBncm93cw0KPiAgIGZyb20gY29sZCBib290IHRvIFMzIHJlc3VtZSAoVkNQVSBo b3RwbHVnKS4gVGlhbm9Db3JlIEJaIzI1MSB1c2VkIHRvDQo+ICAgdHJhY2sgdGhpcyB1c2UgY2Fz ZSBzZXBhcmF0ZWx5Lg0KPiANCj4gKA0KPiANCj4gSmVmZiBjbG9zZWQgQlojMjUxIHRvZGF5LCB3 aXRoIHRoZSBhcmd1bWVudCB0aGF0IGNvbW1pdCAwNTk0ZWM0MTdjODkgKHRoaXMNCj4gcGF0Y2gp IGZpbmRzIHRoZSBDUFUgY291bnQgZHluYW1pY2FsbHkgYW55d2F5LCBzbyBhIHBsYXRmb3JtIGNh biBzaW1wbHkgc2V0DQo+ICJQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyIiB0byB0aGUg bWF4aW11bSBwb3NzaWJsZSB2YWx1ZS4NCj4gDQo+IFRoaXMgYXJndW1lbnQgZG9lcyBub3Qgd29y ayBpbiBhIHZpcnR1YWwgbWFjaGluZSwgYmVjYXVzZSBjb21taXQNCj4gMDU5NGVjNDE3Yzg5ICh0 aGlzIHBhdGNoKSBtYXkgaW4gZmFjdCBub3QgZmluZCB0aGUgVkNQVSBjb3VudCBjb3JyZWN0bHkN Cj4gLS0gaW4gYSBWTSwgKE51bUFwc0V4ZWN1dGluZz09MCkgZG9lcyBub3QgaW1wbHkgdGhhdCBh bGwgQVBzIGhhdmUgZmluaXNoZWQuDQo+IA0KPiApDQo+IA0KPiBUaGFua3MhDQo+IExhc3psbw0K