From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=helo; client-ip=104.47.34.52; helo=nam01-by2-obe.outbound.protection.outlook.com; envelope-from=leo.duran@amd.com; receiver=edk2-devel@lists.01.org Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0052.outbound.protection.outlook.com [104.47.34.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A0FBF202E6179 for ; Mon, 16 Oct 2017 11:53:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=linWY7JihqM5IfesCTDBIR/Y5+ZuKs6EYRaEguk3SK8=; b=SMpriPzKV5n05piNMK9kOcbLfLzwTIZhGfsvP+5jXFRk1Xq7Zw/cfESu0ze4JltwMeCK4WIu238XwQAVc54sZb8/Ko+yFrvSxfb1T/LvPTDPhJiJwC2Ny+c00sn15idvpY7a9Xj9TR6JAZIsmHMOpe9p4QnbkQLm5OB8qRv4sCQ= Received: from DM5PR12MB1243.namprd12.prod.outlook.com (10.168.237.22) by DM5PR12MB1243.namprd12.prod.outlook.com (10.168.237.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Mon, 16 Oct 2017 18:56:39 +0000 Received: from DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) by DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) with mapi id 15.20.0077.022; Mon, 16 Oct 2017 18:56:39 +0000 From: "Duran, Leo" To: 'Laszlo Ersek' , "Yao, Jiewen" CC: "edk2-devel@lists.01.org" , Paolo Bonzini Thread-Topic: [edk2] [PATCH v5 0/2] Enhanced SMM support for AMD-based x86 systems. Thread-Index: AQHTQsmGEES8Mp+Sr0GSX5QnxHcxuKLhBlYAgAJ9CXCAAJiGAIACoJ4AgAAF9aCAABWIgIAAAP4A Date: Mon, 16 Oct 2017 18:56:39 +0000 Message-ID: References: <1507751131-32404-1-git-send-email-leo.duran@amd.com> <74D8A39837DF1E4DA445A8C0B3885C503A9E505E@SHSMSX104.ccr.corp.intel.com> <279D7F72-28F1-4DAD-B75E-780F2638BA5E@intel.com> <3ef8c7f1-bb81-73e4-fcac-5427db379e7b@redhat.com> In-Reply-To: <3ef8c7f1-bb81-73e4-fcac-5427db379e7b@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; x-originating-ip: [165.204.77.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM5PR12MB1243; 20:NQ1M/wTxoCdFV7H5tcJMlvKZ6ywkEEk4p1Vfr0QUGbmDZE0R3SnX5j90UKpFXnU+BP9zJLH02tYgqFif5AC0Cq1W3mK3nF9J6rQ8B0+X5PkUvSn6CHeLFT2oS8J5aylZGOAJEYAgosClAV7sOxn3f3wTlJXcBV9UETm+ktvxKq0pJRv8bkCQl9X00Fz/jblNwH0njCZFMWLo7LnPS/IkTp/41Z4AIhcz+P1Bkxf/15SxP46GFQCGS/3Wjbxqk/QM x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 1938e9b6-c4a9-4c80-873a-08d514c7a247 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DM5PR12MB1243; x-ms-traffictypediagnostic: DM5PR12MB1243: x-exchange-antispam-report-test: UriScan:(767451399110)(162533806227266)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041248)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR12MB1243; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR12MB1243; x-forefront-prvs: 0462918D61 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(376002)(346002)(24454002)(189002)(52314003)(13464003)(51694002)(377454003)(199003)(93886005)(3660700001)(53546010)(3280700002)(966005)(97736004)(316002)(8936002)(2950100002)(110136005)(14454004)(66066001)(6306002)(6116002)(1720100001)(86362001)(478600001)(81156014)(9686003)(81166006)(8676002)(54906003)(2906002)(3846002)(102836003)(55016002)(6506006)(74316002)(105586002)(5660300001)(305945005)(99286003)(4326008)(50986999)(76176999)(54356999)(33656002)(53936002)(7736002)(77096006)(2900100001)(6436002)(7696004)(106356001)(25786009)(6246003)(101416001)(68736007)(229853002)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1243; H:DM5PR12MB1243.namprd12.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2017 18:56:39.5187 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1243 Subject: Re: [PATCH v5 0/2] Enhanced SMM support for AMD-based x86 systems. 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: Mon, 16 Oct 2017 18:53:06 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAxNiwgMjAx NyAxOjQ0IFBNDQo+IFRvOiBEdXJhbiwgTGVvIDxsZW8uZHVyYW5AYW1kLmNvbT47IFlhbywgSmll d2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEu b3JnOyBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBSZTog W2VkazJdIFtQQVRDSCB2NSAwLzJdIEVuaGFuY2VkIFNNTSBzdXBwb3J0IGZvciBBTUQtYmFzZWQN Cj4geDg2IHN5c3RlbXMuDQo+IA0KPiBPbiAxMC8xNi8xNyAxOTozMSwgRHVyYW4sIExlbyB3cm90 ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206 IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiA+PiBTZW50OiBNb25k YXksIE9jdG9iZXIgMTYsIDIwMTcgMTI6MDYgUE0NCj4gPj4gVG86IFlhbywgSmlld2VuIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT47IER1cmFuLCBMZW8NCj4gPj4gPGxlby5kdXJhbkBhbWQuY29tPg0K PiA+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFBhb2xvIEJvbnppbmkgPHBib256aW5p QHJlZGhhdC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIHY1IDAvMl0gRW5o YW5jZWQgU01NIHN1cHBvcnQgZm9yIEFNRC0NCj4gYmFzZWQNCj4gPj4geDg2IHN5c3RlbXMuDQo+ ID4+DQo+ID4+IE9uIDEwLzE1LzE3IDAyOjU4LCBZYW8sIEppZXdlbiB3cm90ZToNCj4gPj4+IGZv ciBydW50aW1lIHRlc3QsIEkgcmVjb21tZW5kIHVzaW5nIG92bWYuIFlvdSBkb24ndCBuZWVkIHJl YWwNCj4gaGFyZHdhcmUuDQo+ID4+IEl0IGNhbiBydW4gYm90aCAzMmJpdCBvciA2NGJpdC4gSXQg Y2FuIHJ1biBpbiBib3RoIExpbnV4IGFuZCB3aW5kb3dzLg0KPiA+Pj4NCj4gPj4+IFlvdSBuZWVk IHVzZSAtRCBTTU1fUkVRVUlSRSBvcHRpb24gdG8gYnVpbGQgb3ZtZi4NCj4gPj4+IElmIHlvdSBo YXZlIGFueSBwcm9ibGVtLCBMYXN6bG8gaXMgdGhlIGdvb2QgY29udGFjdC4NCj4gPj4NCj4gPj4g SSBkb24ndCBoYXZlIG11Y2ggY29udGV4dCBhYm91dCB0aGlzIHNlcmllcywgYnV0IGxvb2tpbmcg YXQgdGhlDQo+ID4+IGJsdXJiLCBJIHNlZSB0aGF0IHZlcnNpb24gMyByZW1vdmVkIE92bWZQa2cg cGF0Y2hlczoNCj4gPj4NCj4gPj4+IENoYW5nZXMgc2luY2UgdjI6DQo+ID4+PiBUaGUgaW50ZW50 IG9mIHRoaXMgcmV2aXNpb24gaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoDQo+ID4+ PiBleGlzdGluZyBwYWNrYWdlcy4gVG8gdGhhdCBlbmQsIGNoYW5nZXMgdG8gT3ZtZ2ZQa2cgYW5k IFF1YXJrU29jUGtnDQo+ID4+PiBhcmUgcmV2ZXJ0ZWQuIE1vcmVvdmVyLCBwZXJ0aW5lbnQgbWFj cm9zIGFyZSByZXBsYWNlZCBpbiB0aGUgQyBjb2RlLA0KPiA+Pj4gcmF0aGVyIHRoYW4gb24gaGVh ZGVyIGZpbGVzIHRoYXQgYXJlIHNoYXJlZCBnbG9iYWxseS4NCj4gPj4NCj4gPj4gSnVkZ2VkIG9u IHRoZSBkaWZmc3RhdCBvZiBwYXRjaCAjMSAtLSBvbmx5DQo+ID4+ICJVZWZpQ3B1UGtnL0xpYnJh cnkvU21tQ3B1RmVhdHVyZXNMaWIiIGZpbGVzIGFyZSBtb2RpZmllZCAtLSBJIHdvdWxkDQo+ID4+ IHNheSB0aGF0IGNoYW5nZXMgaW4gcGF0Y2ggIzEgYXJlIGludmlzaWJsZSB0byBPVk1GLiBUaGUg cmVhc29uIGlzDQo+ID4+IHRoYXQgT1ZNRiB1c2VzIGEgc2VwYXJhdGUgU21tQ3B1RmVhdHVyZXNM aWIgaW5zdGFuY2UsIG5hbWVseQ0KPiA+Pg0KPiA+PiAgIE92bWZQa2cvTGlicmFyeS9TbW1DcHVG ZWF0dXJlc0xpYg0KPiA+Pg0KPiA+PiBUaGlzIG1lYW5zIHR3byB0aGluZ3M6DQo+ID4+DQo+ID4+ IC0gY2hhbmdlcyBmcm9tIHBhdGNoICMxIGNhbm5vdCBiZSB0ZXN0ZWQgd2l0aCBPVk1GLCBzaW1w bHkgYmVjYXVzZQ0KPiA+PiAgICJVZWZpQ3B1UGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIi IGlzIG5ldmVyIGJ1aWx0IGZvciBPVk1GOw0KPiA+Pg0KPiA+PiAtIGNoYW5nZXMgZnJvbSBwYXRj aCAjMiBtYXkgb3IgbWF5IG5vdCBicmVhayBTTU0gaW4gT1ZNRiwgZGVwZW5kZW50DQo+IG9uDQo+ ID4+ICAgd2hldGhlciBwYXRjaCAjMiBpcyB0aWVkIGNsb3NlbHkgdG8gcGF0Y2ggIzEuDQo+ID4+ DQo+ID4+IEluIG9yZGVyIHRvIHNlZSB3aHkgT3ZtZlBrZyBoYXMgYSBzZXBhcmF0ZSBTbW1DcHVG ZWF0dXJlc0xpYg0KPiA+PiBpbnN0YW5jZSwgcGxlYXNlIHJldmlldyB0aGUgY29tbWl0IGxvZzoN Cj4gPj4NCj4gPj4gICBnaXQgbG9nIC0tcmV2ZXJzZSAtLSBPdm1mUGtnL0xpYnJhcnkvU21tQ3B1 RmVhdHVyZXNMaWINCj4gPj4NCj4gPj4gQXQgdGhpcyBwb2ludCBJIGNhbm5vdCBkZXRlcm1pbmUg aWYgdGhpcyBwYXRjaCBzZXQgc2hvdWxkIGlnbm9yZQ0KPiA+PiBPdm1mUGtnIGNvbXBsZXRlbHks IG9yIGVsc2UgcGF0Y2ggIzEgc2hvdWxkIGJlIGR1cGxpY2F0ZWQgZm9yDQo+ID4+ICJPdm1mUGtn L0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIiIGFzIHdlbGwuIChJIGd1ZXNzIEkgZG9uJ3QNCj4g Pj4gdW5kZXJzdGFuZCB0aGUgZ29hbCBvZiB0aGUgcGF0Y2ggc2V0IC0tIEkndmUgcmVhZCB0aGUg Ymx1cmIsIGJ1dCB0aGUNCj4gPj4gcHJvYmxlbSBoYXMgbm90IGJlZW4gc3RhdGVkIHdlbGwgZW5v dWdoIGZvciBtZSB0byB1bmRlcnN0YW5kLiBPcg0KPiA+PiBtYXliZSBpdCB3YXMgc3RhdGVkIGxv bmcgYWdvLCBhbmQgSSd2ZSBmb3Jnb3R0ZW4gaXQgOikgKQ0KPiA+Pg0KPiA+DQo+ID4gTGF6bG8s DQo+ID4gSSBwdXJwb3NlbHkgbGVmdCBvdXQgY2hhbmdlcyB0byBPVk1GIGFuZCBRdWFyaywgY29u c2lzdGVudCB3aXRoIHByZXZpb3VzDQo+IGZlZWRiYWNrLg0KPiANCj4gSSd2ZSBmb3VuZCBteSBw cmV2aW91cyBjb21tZW50czoNCj4gDQo+IGh0dHA6Ly9taWQubWFpbC1hcmNoaXZlLmNvbS8yZDNl ZmE1YS1hZDcyLWJiMzUtMWU2YS0NCj4gYjliNzgzNzkzMzdjQHJlZGhhdC5jb20NCj4gDQo+IFRo ZXJlIEkgb25seSBzdWdnZXN0ZWQgYSBkaWZmZXJlbnQgKG1vcmUgdGVsbGluZykgc3ViamVjdCBm b3IgdGhlIE92bWZQa2cNCj4gcGF0Y2gsIGFuZCB3cm90ZSwNCj4gDQo+ID4gKE9mIGNvdXJzZSBJ IHJlYWxpemUgdGhlIHBhdGNoIG1pZ2h0IGVudGlyZWx5IGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0 DQo+ID4gdmVyc2lvbiwgYmFzZWQgb24gSmlld2VuJ3MgYW5kIE1pa2UncyBmZWVkYmFjayAtLSB0 aGF0J3MgT0sgd2l0aCBtZSwgSQ0KPiA+IGp1c3Qgd2FudGVkIHRvIGdpdmUgYW4gZXhhbXBsZS4p DQo+IA0KPiBJIGRpZG4ndCB0cnkgdG8gdmFsaWRhdGUgSmlld2VuJ3MgLyBNaWtlJ3MgZmVlZGJh Y2s7IEkganVzdCBzdGF0ZWQgKmlmKiwgYWNjb3JkaW5nDQo+IHRvIHRoZW0sIHBhdGNoaW5nIE92 bWZQa2cgd2FzIG5vdCBuZWNlc3NhcnksIEknZCBiZSBPSyB3aXRoIHRoYXQuDQo+IA0KPiBTaW5j ZSB3ZSdyZSB0YWxraW5nIGFueXdheSwgY2FuIHlvdSAoYW5kL29yIEppZXdlbiAmIE1pa2UpIHBs ZWFzZSBzdGF0ZSB0aGUNCj4gcHJvYmxlbSBiZWluZyBzb2x2ZWQgaGVyZSwgYW5kIGV4cGxhaW4g d2h5IHBhdGNoaW5nIHRoZQ0KPiBTbW1DcHVGZWF0dXJlc0xpYiBpbnN0YW5jZSBpbiBPdm1mUGtn IGlzLCBvciBpcyBub3QsIG5lY2Vzc2FyeSB0byB1cGRhdGU/DQo+IA0KPiBIbW1tLi4uIElzIGl0 IHRoZSBjYXNlIHRoYXQNCj4gDQo+ICAgVWVmaUNwdVBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1cmVz TGliDQo+IA0KPiBydW5zIGNvcnJlY3RseSBvbiBJbnRlbCAqaG9zdHMqIG9ubHkgYXQgdGhlIG1v bWVudCAoc28gaXQgbmVlZHMgZml4aW5nLCBmb3INCj4gQU1EICpob3N0cyopLCB3aGlsZQ0KPiAN Cj4gICBPdm1mUGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWINCj4gDQo+IGRlYWxzIHdpdGgg QU1ELWxvb2tpbmcgKmd1ZXN0cyogYW55d2F5LCBzbyBpdCBuZWVkcyBubyBmaXhpbmcsIGZvciBB TUQNCj4gY29tcGF0aWJpbGl0eT8NCj4gDQo+IElmIHRoaXMgaXMgY29ycmVjdCwgdGhlbiBJIGFn cmVlIHBhdGNoICMxIGRvZXMgbm90IG5lZWQgdG8gYmUgZHVwbGljYXRlZCBmb3INCj4gT3ZtZlBr Zy4NCg0KTGF6bG8sDQpZZXMsIHRoYXQgaXMgbXkgdW5kZXJzdGFuZGluZy4NCg0KPiANCj4gKkhv d2V2ZXIqLCBpbiB0dXJuLCBwYXRjaCAjMiAoZm9yIFBpU21tQ3B1RHhlU21tKSBtaWdodCBiZSBu ZWNlc3NhcnkgdG8NCj4gdXBkYXRlIGZvciBRRU1VLiBQaVNtbUNwdUR4ZVNtbSBydW5zIG9uIGJv dGggYmFyZSBtZXRhbCBhbmQgb24NCj4gUUVNVS4NCj4gQW5kLCBhcyBQYW9sbyBzYXlzLCBhIHB1 cmUgQ1BVSUQgLyBtYW51ZmFjdHVyZXIgY2hlY2sgKGZvciBkZXRlcm1pbmluZyB0aGUNCj4gc3Rh dGUgc2F2ZSBsYXlvdXQpIGlzIHdyb25nIG9uIFFFTVUsIGV2ZW4gaWYgdGhlIHNhbWUgd291bGQg d29yayBvbiBiYXJlDQo+IG1ldGFsOg0KPiANCj4gQEAgLTU0Nyw2ICs1OTUsMjAgQEAgUGlDcHVT bW1FbnRyeSAoDQo+ICAgICAgKTsNCj4gDQo+ICAgIC8vDQo+ICsgIC8vIE92ZXJyaWRlIFNNUkFN IG9mZnNldHMgZm9yIEFNRA0KPiArICAvLw0KPiArICBpZiAoU3RhbmRhcmRTaWduYXR1cmVJc0F1 dGhlbnRpY0FNRCAoKSkgew0KPiArICAgIGdTbW1TbXJhbVN0YXRlTWFwT2Zmc2V0ID0NCj4gQU1E X1NNUkFNX1NBVkVfU1RBVEVfTUFQX09GRlNFVDsNCj4gKyAgICBnU21tUHNkT2Zmc2V0ID0gQU1E X1NNTV9QU0RfT0ZGU0VUOyAgfQ0KPiArDQo+IA0KPiBJZiBwYXRjaCB2NSAyLzIgaXMgbWVyZWx5 IGEgcmVmYWN0b3JpbmcgKGkuZS4sIGl0IGNhdXNlcyBQaVNtbUNwdUR4ZVNtbSB0bw0KPiBiZWhh dmUgZXhhY3RseSB0aGUgc2FtZSBhcyBiZWZvcmUsIGp1c3Qgd2l0aCBhbiBpbXByb3ZlZCBpbXBs ZW1lbnRhdGlvbiksDQo+IHRoZW4gSSBhZ3JlZSBhIENQVUlELWJhc2VkIGNoZWNrIGlzIG5vdCBu ZWNlc3NhcmlseSBhIGJ1ZyAocmVncmVzc2lvbikuDQo+IEluc3RlYWQsIGl0IG1pZ2h0IGJlIGNh bGxlZCBhIG1pc3NlZCBvcHBvcnR1bml0eSAob3IsIG1vcmUgbmljZWx5IHB1dCwgYQ0KPiAiYmFz aXMiKSBmb3IgYnJpbmdpbmcgUGlTbW1DcHVEeGVTbW0gY2xvc2VyIHRvIFFFTVUuDQpMYXpsbywN Cg0KMSkgUGVyIGZlZWRiYWNrIGZyb20gWWFvOg0KSSdtIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5n IGlmIHdlICpyZWFsbHkqcmVhbGx5KiBoYXZlIHRvIGNoYW5nZSB0aGUgUFNEIG9mZnNldC4NCg0K MikgUGVyIGZlZWRiYWNrIGZyb20gUGFvbG86DQpBbmQgaWYgdGhlIFBTRCBvZmZzZXQgY2hhbmdl IGlzIGluZGVlZCByZXF1aXJlZCwgSSB3aWxsIGludmVzdGlnYXRlIGFuIGFsdGVybmF0ZSBkZXRl Y3Rpb24gbWVjaGFuaXNtLg0KDQpUaGFua3MuDQpMZW8NCg0KPiANCj4gTXkgYXBvbG9naWVzIGlm IEknbSBjb25mdXNlZC4NCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8NCg==