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.31, mailfrom: michael.d.kinney@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Mon, 29 Apr 2019 11:23:38 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Apr 2019 11:23:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,410,1549958400"; d="scan'208";a="153338514" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by FMSMGA003.fm.intel.com with ESMTP; 29 Apr 2019 11:23:37 -0700 Received: from orsmsx151.amr.corp.intel.com (10.22.226.38) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 29 Apr 2019 11:23:36 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.24]) by ORSMSX151.amr.corp.intel.com ([169.254.7.24]) with mapi id 14.03.0415.000; Mon, 29 Apr 2019 11:23:36 -0700 From: "Michael D Kinney" To: "Gao, Liming" , "devel@edk2.groups.io" , "lersek@redhat.com" , "brian.johnson@hpe.com" , "Kinney, Michael D" Subject: Re: [edk2-devel] [Patch 1/4] MdePkg/BaseLib: Verify SSE2 support in IA32 AsmLfence() Thread-Topic: [edk2-devel] [Patch 1/4] MdePkg/BaseLib: Verify SSE2 support in IA32 AsmLfence() Thread-Index: AQHU+4/UQoqkhqm9dUWajfB4774IqaZPWzyAgAALQwCABBFqAIAAMMQA//++QvA= Date: Mon, 29 Apr 2019 18:23:35 +0000 Message-ID: References: <20190425175334.5944-1-michael.d.kinney@intel.com> <20190425175334.5944-2-michael.d.kinney@intel.com> <7b0ca337-3642-2070-0fff-515704a24bdf@hpe.com> <5858ea67-9618-3345-5151-f107d190eb5f@redhat.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E43F599@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E43F599@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNClRoYW5rcyBmb3IgdGhlIGRldGFpbGVkIGZlZWRiYWNrLg0KDQpJIGRpZCBjb25zaWRl ciBtb3ZpbmcgdGhlIENQVUlEIGNoZWNrIHVwIGEgbGV2ZWwgc28NCkFzbUxmZW5jZSgpIHdvdWxk IGFsd2F5cyBkbyB0aGUgcmVxdWVzdGVkIGluc3RydWN0aW9uLg0KVGhpcyB3b3VsZCBoYXZlIGJl ZW4gYSBsYXJnZXIgcGF0Y2ggc2V0IHRoYXQgd291bGQNCmludHJvZHVjZSBhbiBJQTMyIGFuZCBY NjQgc3BlY2lmaWMgdmVyc2lvbiBvZg0KU3BlY3VsYXRpb25CYXJyaWVyKCkuDQoNCkkgYWdyZWUg dGhhdCBhIGJ1aWxkIHRpbWUgUENEIHdvdWxkIGlzIGEgYmV0dGVyDQphcHByb2FjaC4gIEl0IHNo b3VsZCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBvZiBlbmFibGVkLA0KYW5kIG9ubHkgcGxhdGZvcm1z IHRoYXQgdXNlIENQVXMgdGhhdCBkbyBub3Qgc3VwcG9ydA0KTEZFTkNFIHdvdWxkIGF2b2lkIHRo ZSBjYWxsIHRvIEFzbUxmZW5jZSgpIGFuZCB1c2UgYW4NCmFsdGVybmF0ZSBzZXJpYWxpemluZyBp bnN0cnVjdGlvbi4NCg0KSGVyZSBpcyB0aGUgcHJvcG9zZWQgUENEOg0KDQpbUGNkc0ZpeGVkQXRC dWlsZF0NCiAgIyMgSW5kaWNhdGVzIHRoZSB0eXBlIG9mIGluc3RydWN0aW9uIHNlcXVlbmNlIHRv IHVzZQ0KICAjICBmb3IgYSBzcGVjdWxhdGlvbiBiYXJyaWVyLiAgVGhlIGRlZmF1bHQgaW5zdHJ1 Y3Rpb24NCiAgIyAgc2VxdWVuY2UgaXMgTEZFTkNFLjxCUj4NCiAgIyAgIDB4MDAgLSBObyBvcGVy YXRpb24uPEJSPg0KICAjICAgMHgwMSAtIExGRU5DRSAoSUEzMi9YNjQpLjxCUj4NCiAgIyAgIDB4 MDIgLSBDUFVJRCAgKElBMzIvWDY0KS48QlI+DQogICMgICBPdGhlciAtIHJlc2VydmVkDQogICMg QFByb21wdCBTcGVjdWxhdGlvbiBCYXJyaWVyIFR5cGUuDQogIGdFZmlNZGVQa2dUb2tlblNwYWNl R3VpZC5QY2RTcGVjdWxhdGlvbkJhcnJpZXJUeXBlfDB4MDF8VUlOVDh8MHgzMDAwMTAxOA0KDQpC ZXN0IHJlZ2FyZHMsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBHYW8sIExpbWluZw0KPiBTZW50OiBNb25kYXksIEFwcmlsIDI5LCAyMDE5IDc6MTAgQU0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBsZXJzZWtAcmVkaGF0LmNvbTsNCj4gYnJpYW4u am9obnNvbkBocGUuY29tOyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BhdGNoIDEvNF0gTWRlUGtn L0Jhc2VMaWI6DQo+IFZlcmlmeSBTU0UyIHN1cHBvcnQgaW4gSUEzMiBBc21MZmVuY2UoKQ0KPiAN Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+IFttYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZiBPZiBMYXN6 bG8gRXJzZWsNCj4gPiBTZW50OiBNb25kYXksIEFwcmlsIDI5LCAyMDE5IDc6MTUgUE0NCj4gPiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGJyaWFuLmpvaG5zb25AaHBlLmNvbTsNCj4gS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IENjOiBHYW8sIExp bWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVs XSBbUGF0Y2ggMS80XSBNZGVQa2cvQmFzZUxpYjoNCj4gVmVyaWZ5IFNTRTIgc3VwcG9ydCBpbiBJ QTMyIEFzbUxmZW5jZSgpDQo+ID4NCj4gPiBPbiAwNC8yNi8xOSAyMzowOCwgQnJpYW4gSi4gSm9o bnNvbiB3cm90ZToNCj4gPiA+IE9uIDQvMjYvMTkgMzoyNyBQTSwgTGFzemxvIEVyc2VrIHdyb3Rl Og0KPiA+ID4+IE9uIDA0LzI1LzE5IDE5OjUzLCBNaWNoYWVsIEQgS2lubmV5IHdyb3RlOg0KPiA+ ID4+PiBVc2UgQ1BVSUQgaW4gSUEzMiBpbXBsZW1lbnRhdGlvbiBvZiBBc21MZmVuY2UoKSB0bw0K PiB2ZXJpZnkNCj4gPiA+Pj4gdGhhdCBTU0UyIGlzIHN1cHBvcnRlZCBiZWZvcmUgdXNpbmcgdGhl IExGRU5DRQ0KPiBpbnN0cnVjdGlvbi4NCj4gPiA+Pj4NCj4gPiA+Pj4gQ2M6IExpbWluZyBHYW8g PGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+ID4+PiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEQg S2lubmV5DQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+Pj4gLS0tDQo+ID4g Pj4+IMKgIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9MZmVuY2UubmFzbSB8IDE0DQo+ICsr KysrKysrKysrKystDQo+ID4gPj4+IMKgIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pDQo+ID4gPj4+DQo+ID4gPj4+IGRpZmYgLS1naXQNCj4gYS9NZGVQa2cv TGlicmFyeS9CYXNlTGliL0lhMzIvTGZlbmNlLm5hc20NCj4gPiA+Pj4gYi9NZGVQa2cvTGlicmFy eS9CYXNlTGliL0lhMzIvTGZlbmNlLm5hc20NCj4gPiA+Pj4gaW5kZXggNDQ0NzhiZTM1Zi4uMGE2 MGFlMWQ1NyAxMDA2NDQNCj4gPiA+Pj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMy L0xmZW5jZS5uYXNtDQo+ID4gPj4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9M ZmVuY2UubmFzbQ0KPiA+ID4+PiBAQCAtMSw1ICsxLDUgQEANCj4gPiA+Pj4NCj4gPiA+Pj4gOy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+Pj4gOw0KPiA+ID4+PiAtOyBDb3B5cmlnaHQg KGMpIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiA+Pj4gKzsgQ29weXJpZ2h0IChjKSAyMDE4IC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24u DQo+IEFsbCByaWdodHMNCj4gPiA+Pj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4+PiDCoCA7IFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPj4+IMKgIDsNCj4g PiA+Pj4gwqAgOyBNb2R1bGUgTmFtZToNCj4gPiA+Pj4gQEAgLTI2LDUgKzI2LDE3IEBADQo+ID4g Pj4+DQo+ID4gPj4+IDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPj4+DQo+ID4gPj4+ IMKgIGdsb2JhbCBBU01fUEZYKEFzbUxmZW5jZSkNCj4gPiA+Pj4gwqAgQVNNX1BGWChBc21MZmVu Y2UpOg0KPiA+ID4+PiArwqDCoMKgIDsNCj4gPiA+Pj4gK8KgwqDCoCA7IFVzZSBDUFVJRCBpbnN0 cnVjdGlvbg0KPiAoQ1BVSUQuMDFIOkVEWC5TU0UyW2JpdCAyNl0gPSAxKSB0byB0ZXN0DQo+ID4g Pj4+IHdoZXRoZXIgdGhlDQo+ID4gPj4+ICvCoMKgwqAgOyBwcm9jZXNzb3Igc3VwcG9ydHMgU1NF Mg0KPiBpbnN0cnVjdGlvbi7CoCBTYXZlL3Jlc3RvcmUNCj4gPiA+Pj4gbm9uLXZvbGF0aWxlIHJl Z2lzdGVyDQo+ID4gPj4+ICvCoMKgwqAgOyBFQlggdGhhdCBpcyBtb2RpZmllZCBieSBDUFVJRA0K PiA+ID4+PiArwqDCoMKgIDsNCj4gPiA+Pj4gK8KgwqDCoCBwdXNowqDCoMKgIGVieA0KPiA+ID4+ PiArwqDCoMKgIG1vdsKgwqDCoMKgIGVheCwgMQ0KPiA+ID4+PiArwqDCoMKgIGNwdWlkDQo+ID4g Pj4+ICvCoMKgwqAgYnTCoMKgwqDCoMKgIGVkeCwgMjYNCj4gPiA+Pj4gK8KgwqDCoCBqbmPCoMKg wqDCoCBEb25lDQo+ID4gPj4+IMKgwqDCoMKgwqAgbGZlbmNlDQo+ID4gPj4+ICtEb25lOg0KPiA+ ID4+PiArwqDCoMKgIHBvcMKgwqDCoMKgIGVieA0KPiA+ID4+PiDCoMKgwqDCoMKgIHJldA0KPiA+ ID4+Pg0KPiA+ID4+DQo+ID4gPj4gVGhlIFNETSBzZWVtcyB0byBjb25maXJtIHRoYXQgbGZlbmNl IGRlcGVuZHMgb24NCj4gU1NFMi4NCj4gPiA+Pg0KPiA+ID4+IEhvd2V2ZXIsIHRoYXQgcmFpc2Vz IGFub3RoZXIgcXVlc3Rpb246DQo+ID4gPj4NCj4gPiA+PiBBc21MZmVuY2UoKSBpcyB1c2VkIGZv ciBpbXBsZW1lbnRpbmcNCj4gU3BlY3VsYXRpb25CYXJyaWVyKCkgb24gSUEzMi9YNjQuDQo+ID4g Pj4gQW5kIHNvIEkgd29uZGVyOiB0aGUgcGxhZm9ybXMgd2hlcmUgbGZlbmNlIGlzDQo+IHVuYXZh aWxhYmxlLCBkbyB0aGV5ICpub3QqDQo+ID4gPj4gbmVlZCBhIHNwZWN1bGF0aW9uIGJhcnJpZXIg YXQgYWxsLCBvciBkbyB0aGV5IG5lZWQNCj4gYSAqZGlmZmVyZW50Kg0KPiA+ID4+IGltcGxlbWVu dGF0aW9uPw0KPiA+ID4+DQo+ID4gPj4gVGhhbmtzLA0KPiA+ID4+IExhc3psbw0KPiA+ID4NCj4g PiA+IFNldmVyYWwgaXNzdWVzOg0KPiA+ID4NCj4gPiA+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBz dHJvbmdlciBmZW5jaW5nIHRoYW4gaXMNCj4gcmVxdWlyZWQuwqAgVGhlIFNETSBzYXlzLA0KPiA+ ID4gIlJlYWRzIG9yIHdyaXRlcyBjYW5ub3QgYmUgcmVvcmRlcmVkIHdpdGggSS9PDQo+IGluc3Ry dWN0aW9ucywgbG9ja2VkDQo+ID4gPiBpbnN0cnVjdGlvbnMsIG9yIHNlcmlhbGl6aW5nIGluc3Ry dWN0aW9ucy4iICh2b2wgM2EsDQo+IHNlYyA4LjIuMi4pwqAgVGhlDQo+ID4gPiBjcHVpZCBpbnN0 cnVjdGlvbiBpcyBhICJzZXJpYWxpemluZyBpbnN0cnVjdGlvbiINCj4gKHNlYyA4LjMpLsKgIFNv IHRoZQ0KPiA+ID4gY3B1aWQgaXMgZXNzZW50aWFsbHkgYSBsb2FkIGZlbmNlIHBsdXMgYSBzdG9y ZSBmZW5jZQ0KPiAocGx1cyBvdGhlcg0KPiA+ID4gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBkcmFp bmluZyB0aGUgbWVtb3J5DQo+IHF1ZXVlcy4pwqAgVGhhdCBtYWtlcyB0aGUNCj4gPiA+IGxmZW5j ZSBmb2xsb3dpbmcgaXQgcmVkdW5kYW50Lg0KPiA+ID4NCj4gPiA+IENwdWlkIGlzIGEgZmFpcmx5 IGhlYXZ5d2VpZ2h0IGluc3RydWN0aW9uIGR1ZSB0byBpdHMNCj4gc2VyaWFsaXppbmcNCj4gPiA+ IGJlaGF2aW9yLsKgIEl0IHByb3ZpZGVzIHRoZSBsb2FkIGZlbmNpbmcgc2VtYW50aWNzIG9mDQo+ IGxmZW5jZSwgYnV0IGNhbg0KPiA+ID4gaW50cm9kdWNlIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFu Y2UgaGl0IGlmIGl0J3MNCj4gY2FsbGVkIG9mdGVuLsKgIExmZW5jZSBpcw0KPiA+ID4gYSBsb3Qg bGlnaHRlciB3ZWlnaHQgaW5zdHJ1Y3Rpb24uwqAgU28gdXNpbmcgY3B1aWQgaW4NCj4gQXNtTGZl bmNlIG1heSBtYWtlDQo+ID4gPiBpdCBhIGxvdCBzbG93ZXIgdGhhbiB0aGUgY2FsbGVyIGV4cGVj dHMuDQo+ID4gPg0KPiA+ID4gQWxzbywgc2tpcHBpbmcgYSBmZW5jaW5nIGluc3RydWN0aW9uIGlm IGl0J3Mgbm90DQo+IHN1cHBvcnRlZCBkb2Vzbid0IHNlZW0NCj4gPiA+IGxpa2UgdGhlIHJpZ2h0 IGFwcHJvYWNoIGluIGFueSBjYXNlLsKgIFRoZSBjYWxsZXINCj4gZXhwZWN0cyBBc21MZmVuY2Ug dG8NCj4gPiA+IHByb3ZpZGUgY2VydGFpbiBmZW5jaW5nIHNlbWFudGljcy4uLiB0aGUNCj4gaW1w bGVtZW50YXRpb24gaXNuJ3QgZnJlZSB0bw0KPiA+ID4ganVzdCBkbyBub3RoaW5nICh1bmxlc3Mg aXQncyBvbiBhbiBhcmNoaXRlY3R1cmUNCj4gd2hlcmUgbG9hZCBmZW5jaW5nIGlzDQo+ID4gPiBu b3QgcmVxdWlyZWQsIHNpbmNlIG1lbW9yeSBpcyBhbHdheXMNCj4gb3JkZXJlZC4pwqAgUGx1cywg dGhlIHJvdXRpbmUgaXMNCj4gPiA+IGNhbGxlZCAiQXNtTGZlbmNlIiwgc28gSSdkIGV4cGVjdCBp dCB0byBhbHdheXMgdXNlDQo+IGxmZW5jZSwgYW5kIGNhdXNlIGFuDQo+ID4gPiBleGNlcHRpb24g aWYgdGhlIGluc3RydWN0aW9uIGlzbid0IGltcGxlbWVudGVkLsKgIEknZA0KPiB0aGluayB0aGUg Y2FsbGVycw0KPiA+ID4gc2hvdWxkIGJlIG1vZGlmaWVkIHRvIGNhbGwgQXNtTGZlbmNlIG9yIHJv dXRpbmVzDQo+IHVzaW5nIG90aGVyDQo+ID4gPiBpbnN0cnVjdGlvbnMgKHN1Y2ggYXMgY3B1aWQp IHRvIHByb3ZpZGUgZmVuY2luZw0KPiBhY2NvcmRpbmcgdG8gdGhlIENQVQ0KPiA+ID4gYXJjaGl0 ZWN0dXJlIHRoZXkgYXJlIG9uLg0KPiA+DQo+ID4gVGhhdCBhcHBlYXJzIHRoZSByaWdodCBhcHBy b2FjaCB0byBtZSAtLSBsZXQgQXNtTGZlbmNlDQo+IGRvIHdoYXQgaXRzIG5hbWUNCj4gPiBzYXlz LCBhbmQgbGV0IHBsYXRmb3JtcyBwaWNrIHRoZSByaWdodCBpbXBsZW1lbnRhdGlvbg0KPiBmb3IN Cj4gPiBTcGVjdWxhdGlvbkJhcnJpZXIgLS0gcG9zc2libHkgYXQgYnVpbGQgdGltZSwgcG9zc2li bHkNCj4gYXQgYm9vdCB0aW1lLg0KPiA+DQo+ID4gPiBJcyB0aGVyZSBhIHdheSB0byBtYWtlIHRo aXMgYSBjb21waWxlLXRpbWUNCj4gZGVjaXNpb24/wqAgSSBoYXZlbid0IHRyaWVkIHRvDQo+ID4g PiB0cmFjayBkb3duIGFsbCB0aGUgY2FsbGVycyBvZiBBc21MZmVuY2UuLi4uDQo+ID4NCj4gPiBS aWdodCBub3cgQXNtTGZlbmNlIGlzIG9ubHkgY2FsbGVkIGZyb20NCj4gPiAiTWRlUGtnL0xpYnJh cnkvQmFzZUxpYi9YODZTcGVjdWxhdGlvbkJhcnJpZXIuYyIuDQo+ID4NCj4gVGhpcyBpcyBhIGdv b2Qgc3VnZ2VzdGlvbiB0byBkZWNpZGUgaXQgYXQgYnVpbGQgdGltZS4NCj4gT25lIFBDRCBjYW4g YmUgaW50cm9kdWNlZCB0byBjb250cm9sIGl0cyBsb2dpYy4NCj4gPiBTcGVjdWxhdGlvbkJhcnJp ZXIoKSBpcyBjYWxsZWQgaW4gU01NIGRyaXZlcnMgLyBsaWINCj4gaW5zdGFuY2VzOg0KPiA+IC0g RmF1bHRUb2xlcmFudFdyaXRlU21tLA0KPiBGYXVsdFRvbGVyYW50V3JpdGVTdGFuZGFsb25lTW0N Cj4gPiAtIFNtbUxvY2tCb3hMaWINCj4gPiAtIFZhcmlhYmxlU21tLCBWYXJpYWJsZVN0YW5kYWxv bmVNbQ0KPiA+IC0gUGlTbW1DcHVEeGVTbW0NCj4gPg0KPiA+IEdpdmVuIHRoYXQgdGhlcmUncyBh IG1vZGUgc3dpdGNoIGFueXdheSwgdGhlIHJ1bnRpbWUNCj4gY29zdCBvZiBhIHNpbXBsZQ0KPiA+ IENQVUlELWJhc2VkIGltcGxlbWVudGF0aW9uIG1pZ2h0IGJlIHRvbGVyYWJsZS4NCj4gPg0KPiA+ IFRoYW5rcywNCj4gPiBMYXN6bG8NCj4gPg0KPiA+IA0KDQo=