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=star.zeng@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 9581621138AA2 for ; Sun, 16 Sep 2018 22:58:25 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Sep 2018 22:58:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,384,1531810800"; d="scan'208";a="91121502" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga001.jf.intel.com with ESMTP; 16 Sep 2018 22:57:55 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 16 Sep 2018 22:57:50 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 16 Sep 2018 22:57:50 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.226]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.143]) with mapi id 14.03.0319.002; Mon, 17 Sep 2018 13:57:08 +0800 From: "Zeng, Star" To: "Wang, Jian J" , Laszlo Ersek , "edk2-devel@lists.01.org" CC: Ard Biesheuvel , "Ni, Ruiyu" , "Yao, Jiewen" , "Zeng, Star" Thread-Topic: [PATCH] MdeModulePkg/DxeIpl: support more NX related PCDs Thread-Index: AQHUS+m+TPP7kBPs30yRR1wKpmW/MqTvAu6AgAQ2nYCAAMAfIA== Date: Mon, 17 Sep 2018 05:57:07 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103BBBA7A4@shsmsx102.ccr.corp.intel.com> References: <20180914051335.2644-1-jian.j.wang@intel.com> <9d5d297a-4d10-3ffd-3d02-1f369cfe5bda@redhat.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] MdeModulePkg/DxeIpl: support more NX related PCDs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2018 05:58:25 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SG93IGFib3V0IHdlIHNlZSB0aGUgcHJvYmxlbSBpbiBhbm90aGVyIHdheT8NCg0KSWYgbXkgdW5k ZXJzdGFuZGluZyBpcyBjb3JyZWN0LCBjdXJyZW50IGRpc2N1c3Npb24gYW5kIHBhdGNoZXMgdGhp bmsgRkFMU0UvMCBtZWFucyBkaXNhYmxlL2NsZWFyIE5YLCBidXQgdGhhdCBpcyBub3QgdGhlIGZh Y3QuDQpBY2NvcmRpbmcgdG8gdGhlIGNvZGUgaW1wbGVtZW50YXRpb24sIEZBTFNFLzAgc2VlbXMg bWVhbiAqQVMgSVMqIHRvIGRvIHRoaW5nIChubyBjb2RlIHRvIGRpc2FibGUvY2xlYXIgTlgpLg0K DQpQY2RTZXROeEZvclN0YWNrDQpUUlVFOiBTZXQgTlggZm9yIHN0YWNrLg0KRkFMU0U6IE5vIGNv ZGUgdG8gY2xlYXIgTlggZm9yIHN0YWNrLg0KDQpQY2REeGVOeE1lbW9yeVByb3RlY3Rpb25Qb2xp Y3kNCkJJVFggMTogU2V0IE5YIGZvciB0aGF0IG1lbW9yeSB0eXBlLg0KQklUWCAwOiBObyBjb2Rl IHRvIGNsZWFyIE5YIGZvciB0aGF0IG1lbW9yeSB0eXBlLg0KDQpQY2RJbWFnZVByb3RlY3Rpb25Q b2xpY3kNCkJJVFggMTogU2V0IE5YIGZvciB0aGUgaW1hZ2UgZGF0YSBzZWN0aW9uLg0KQklUWCAw OiBOb3QgY29kZSB0byBjbGVhciBOWCBmb3IgdGhlIGltYWdlIGRhdGEgc2VjdGlvbi4NCg0KU28s IGhvdyBhYm91dCB3ZSB0aGluayBvbmUgUENEIGp1c3Qgd29ya3MgZm9yIGl0c2VsZiBhbmQgaXQg ZG9lcyBub3QgaW1wYWN0IG90aGVyIFBDRHMgdG8gcHJvdGVjdD8NClRoYXQgbWVhbnMgVFJVRS8x IGlzIHRvIHByb3RlY3QgYW5kIEZBTFNFLzAgaXMgKkFTIElTKiB0byBkbyBub3RoaW5nLg0KVGhl IGRlc2NyaXB0aW9uIG9mIHRoZXNlIFBDRHMgY291bGQgYmUgZW5oYW5jZW1lbnQgaWYgd2UgdGhp bmsgaXQgaXMgYSBnb29kIHdheSB0byBzZWUgdGhlIHByb2JsZW0uDQoNCg0KVGhhbmtzLA0KU3Rh cg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFdhbmcsIEppYW4gSiANClNlbnQ6 IE1vbmRheSwgU2VwdGVtYmVyIDE3LCAyMDE4IDEwOjExIEFNDQpUbzogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQpDYzogWmVuZywgU3Rh ciA8c3Rhci56ZW5nQGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBs aW5hcm8ub3JnPjsgTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb20+DQpTdWJqZWN0OiBSRTogW1BBVENIXSBNZGVNb2R1bGVQa2cv RHhlSXBsOiBzdXBwb3J0IG1vcmUgTlggcmVsYXRlZCBQQ0RzDQoNCkxhc3psbywNCg0KVGhhbmtz IGZvciB0aGUgY29tbWVudHMuDQoNClJlZ2FyZHMsDQpKaWFuDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5j b21dDQo+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDE0LCAyMDE4IDU6NTEgUE0NCj4gVG86IFdh bmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmcNCj4gQ2M6IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBBcmQgQmllc2hldXZl bCANCj4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGlu dGVsLmNvbT47IFlhbywgDQo+IEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9EeGVJcGw6IHN1cHBvcnQgbW9yZSBOWCByZWxh dGVkIFBDRHMNCj4gDQo+IEkndmXCoGdvdMKgc29tZcKgY29tbWVudHPCoG9uwqB0aGXCoGNvZGXC oGFzwqB3ZWxsOg0KPiANCj4gT27CoDA5LzE0LzE4wqAwNzoxMyzCoEppYW7CoErCoFdhbmfCoHdy b3RlOg0KPiA+wqBCWiMxMTE2OsKgaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3df YnVnLmNnaT9pZD0xMTE2DQo+ID4NCj4gPsKgQ3VycmVudGx5wqBJQTMyX0VGRVIuTlhFwqBpc8Kg b25secKgc2V0wqBhZ2FpbnN0wqBQY2RTZXROeEZvclN0YWNrLsKgVGhpcw0KPiA+wqBjb25mdXNl c8KgZGV2ZWxvcGVyc8KgYmVjYXVzZcKgZm9sbG93aW5nwqB0d2/CoG90aGVywqBQQ0RzwqBhbHNv wqBuZWVkwqBOWEUNCj4gPsKgdG/CoGJlwqBzZXQswqBidXTCoGFjdHVhbGx5wqBub3QuDQo+ID4N Cj4gPsKgwqDCoMKgwqBQY2REeGVOeE1lbW9yeVByb3RlY3Rpb25Qb2xpY3kNCj4gPsKgwqDCoMKg wqBQY2RJbWFnZVByb3RlY3Rpb25Qb2xpY3kNCj4gPg0KPiA+wqBUaGlzwqBwYXRjaMKgc29sdmVz wqB0aGlzwqBpc3N1ZcKgYnnCoGFkZGluZ8KgbG9naWPCoHRvwqBlbmFibGXCoElBMzJfRUZFUi5O WEUNCj4gPsKgaWbCoGFuecKgb2bCoHRob3NlwqBQQ0RzwqBoYXZlwqBhbnl0aGluZ8KgZW5hYmxl ZC4NCj4gPg0KPiA+wqBEdWXCoHRvwqB0aGXCoGZhY3TCoHRoYXTCoE5YwqBtZW1vcnnCoHR5cGXC oG9mwqBzdGFja8KgKGVuYWJsZWTCoGJ5wqANCj4gPlBjZFNldE54Rm9yU3RhY2spDQo+ID7CoGFu ZMKgaW1hZ2XCoGRhdGHCoHNlY3Rpb27CoChlbmFibGVkwqBiecKgUGNkSW1hZ2VQcm90ZWN0aW9u UG9saWN5KcKgYXJlwqANCj4gPmFsc28NCj4gPsKgcGFydMKgb2bCoFBjZER4ZU54TWVtb3J5UHJv dGVjdGlvblBvbGljeSzCoHRoaXPCoHBhdGNowqBhbHNvwqBhZGTCoG1vcmXCoA0KPiA+Y2hlY2tz DQo+ID7CoHRvwqB3YXJuwqAoQVNTRVJUKcKgdXNlcnPCoGFuecKgdW5yZWFzb25hYmxlwqBzZXR0 aW5nwqBjb21iaW5hdGlvbnMuwqBGb3LCoA0KPiA+ZXhhbXBsZSwNCj4gPg0KPiA+wqDCoMKgwqDC oFBjZFNldE54Rm9yU3RhY2vCoD09wqBGQUxTRcKgJiYNCj4gPsKgwqDCoMKgwqDCoMKgKFBjZER4 ZU54TWVtb3J5UHJvdGVjdGlvblBvbGljecKgJsKgKDHCoDw8RWZpQm9vdFNlcnZpY2VzRGF0YSkp wqANCj4gPiE9wqAwDQo+ID4NCj4gPsKgwqDCoMKgwqBQY2RJbWFnZVByb3RlY3Rpb25Qb2xpY3nC oD09wqAwwqAmJg0KPiA+wqDCoMKgwqDCoMKgwqAoUGNkRHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9s aWN5wqAmwqAoMcKgPDzCoA0KPiA+RWZpUnVudGltZVNlcnZpY2VzRGF0YSkpwqAhPcKgMA0KPiA+ DQo+ID7CoMKgwqDCoMKgUGNkSW1hZ2VQcm90ZWN0aW9uUG9saWN5wqA9PcKgMMKgJiYNCj4gPsKg wqDCoMKgwqDCoMKgKFBjZER4ZU54TWVtb3J5UHJvdGVjdGlvblBvbGljecKgJsKgKDHCoDw8RWZp Qm9vdFNlcnZpY2VzRGF0YSkpwqANCj4gPiE9wqAwDQo+ID4NCj4gPsKgwqDCoMKgwqBQY2RJbWFn ZVByb3RlY3Rpb25Qb2xpY3nCoD09wqAwwqAmJg0KPiA+wqDCoMKgwqDCoMKgwqAoUGNkRHhlTnhN ZW1vcnlQcm90ZWN0aW9uUG9saWN5wqAmwqAoMcKgPDxFZmlMb2FkZXJEYXRhKSnCoCE9wqAwDQo+ ID4NCj4gPsKgSW7CoG90aGVywqB3b3JkcyzCoFBjZFNldE54Rm9yU3RhY2vCoGFuZMKgUGNkSW1h Z2VQcm90ZWN0aW9uUG9saWN5wqBoYXZlDQo+ID7CoHByaW9yaXR5wqBvdmVywqBQY2REeGVOeE1l bW9yeVByb3RlY3Rpb25Qb2xpY3kuDQo+ID4NCj4gPsKgQ2M6wqBTdGFywqBaZW5nwqA8c3Rhci56 ZW5nQGludGVsLmNvbT4NCj4gPsKgQ2M6wqBMYXN6bG/CoEVyc2VrwqA8bGVyc2VrQHJlZGhhdC5j b20+DQo+ID7CoENjOsKgQXJkwqBCaWVzaGV1dmVswqA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9y Zz4NCj4gPsKgQ2M6wqBSdWl5dcKgTmnCoDxydWl5dS5uaUBpbnRlbC5jb20+DQo+ID7CoENjOsKg Smlld2VuwqBZYW/CoDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPsKgQ29udHJpYnV0ZWQtdW5k ZXI6wqBUaWFub0NvcmXCoENvbnRyaWJ1dGlvbsKgQWdyZWVtZW50wqAxLjENCj4gPsKgU2lnbmVk LW9mZi1ieTrCoEppYW7CoErCoFdhbmfCoDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID7CoC0t LQ0KPiA+wqDCoE1kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vRHhlSXBsLmluZsKgwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqAywqArDQo+ID7CoMKgTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVp bS9JYTMyL0R4ZUxvYWRGdW5jLmPCoMKgfMKgwqA0wqArLQ0KPiA+wqDCoE1kZU1vZHVsZVBrZy9D b3JlL0R4ZUlwbFBlaW0vWDY0L1ZpcnR1YWxNZW1vcnkuY8KgfMKgNTXCoCsrKysrKysrKysrKysN Cj4gKysrKysrKysrKy0NCj4gPsKgwqBNZGVNb2R1bGVQa2cvQ29yZS9EeGVJcGxQZWltL1g2NC9W aXJ0dWFsTWVtb3J5LmjCoHzCoDMzwqArKysrKysrKysrKysrDQo+ICsNCj4gPsKgwqA0wqBmaWxl c8KgY2hhbmdlZCzCoDkxwqBpbnNlcnRpb25zKCspLMKgM8KgZGVsZXRpb25zKC0pDQo+ID4NCj4g PsKgZGlmZsKgLS0NCj4gZ2l0wqBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vRHhlSXBs LmluZsKgDQo+IGIvTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXAgbFBlaW0vRHhlSXBsLmluZg0KPiA+ wqBpbmRleMKgZmQ4MjY1NzQwNC4uMDY4ZTcwMDA3NMKgMTAwNjQ0DQo+ID7CoC0tLcKgYS9NZGVN b2R1bGVQa2cvQ29yZS9EeGVJcGxQZWltL0R4ZUlwbC5pbmYNCj4gPsKgKysrwqBiL01kZU1vZHVs ZVBrZy9Db3JlL0R4ZUlwbFBlaW0vRHhlSXBsLmluZg0KPiA+wqBAQMKgLTExNyw2wqArMTE3LDjC oEBADQo+ID4NCj4gPsKgwqBbUGNkLklBMzIsUGNkLlg2NCxQY2QuQVJNLFBjZC5BQVJDSDY0XQ0K PiA+wqDCoMKgwqBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2V0TnhGb3JTdGFj a8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCMjwqANCj4gPlNPTUVUSU0NCj4gRVNfQ09O U1VNRVMNCj4gPsKgK8KgwqBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRHhlTnhN ZW1vcnlQcm90ZWN0aW9uUG9saWN5wqAjIw0KPiBTT01FVElNRVNfQ09OU1VNRVMNCj4gPsKgK8Kg wqBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkSW1hZ2VQcm90ZWN0aW9uUG9saWN5 wqDCoMKgwqDCoMKgwqAjI8KgDQo+ID5TT01FDQo+IFRJTUVTX0NPTlNVTUVTDQo+ID4NCj4gPsKg wqBbRGVwZXhdDQo+ID7CoMKgwqDCoGdFZmlQZWlMb2FkRmlsZVBwaUd1aWTCoEFORMKgZ0VmaVBl aU1hc3RlckJvb3RNb2RlUHBpR3VpZA0KPiA+wqBkaWZmwqAtLQ0KPiBnaXTCoGEvTWRlTW9kdWxl UGtnL0NvcmUvRHhlSXBsUGVpbS9JYTMyL0R4ZUxvYWRGdW5jLmPCoGIvTWRlTW9kdWxlUGtnLyAN Cj4gQ29yZS9EeGVJcGxQZWltL0lhMzIvRHhlTG9hZEZ1bmMuYw0KPiA+wqBpbmRleMKgZDI4YmFh MzYxNS4uOWE5NzIwNWVmOMKgMTAwNjQ0DQo+ID7CoC0tLcKgYS9NZGVNb2R1bGVQa2cvQ29yZS9E eGVJcGxQZWltL0lhMzIvRHhlTG9hZEZ1bmMuYw0KPiA+wqArKyvCoGIvTWRlTW9kdWxlUGtnL0Nv cmUvRHhlSXBsUGVpbS9JYTMyL0R4ZUxvYWRGdW5jLmMNCj4gPsKgQEDCoC0yNDUsN8KgKzI0NSw3 wqBAQMKgVG9CdWlsZFBhZ2VUYWJsZcKgKA0KPiA+wqDCoMKgwqDCoMKgcmV0dXJuwqBUUlVFOw0K PiA+wqDCoMKgwqB9DQo+ID4NCj4gPsKgLcKgwqBpZsKgKFBjZEdldEJvb2zCoChQY2RTZXROeEZv clN0YWNrKcKgJibCoElzRXhlY3V0ZURpc2FibGVCaXRBdmFpbGFibGXCoA0KPiA+KCkpwqB7DQo+ ID7CoCvCoMKgaWbCoChUb0VuYWJsZUV4ZWN1dGVEaXNhYmxlRmVhdHVyZcKgKCkpwqB7DQo+ID7C oMKgwqDCoMKgwqByZXR1cm7CoFRSVUU7DQo+ID7CoMKgwqDCoH0NCj4gPg0KPiA+wqBAQMKgLTQz Niw3wqArNDM2LDfCoEBAwqBIYW5kT2ZmVG9EeGVDb3JlwqAoDQo+ID7CoMKgwqDCoMKgwqBCdWls ZFBhZ2VUYWJsZXNJYTMyUGFlwqA9wqBUb0J1aWxkUGFnZVRhYmxlwqAoKTsNCj4gPsKgwqDCoMKg wqDCoGlmwqAoQnVpbGRQYWdlVGFibGVzSWEzMlBhZSnCoHsNCj4gPsKgwqDCoMKgwqDCoMKgwqBQ YWdlVGFibGVzwqA9wqBDcmVhdGU0R1BhZ2VUYWJsZXNJYTMyUGFlwqAoQmFzZU9mU3RhY2sswqAN Cj4gPlNUQUNLX1NJWkUpOw0KPiA+wqAtwqDCoMKgwqDCoMKgaWbCoChJc0V4ZWN1dGVEaXNhYmxl Qml0QXZhaWxhYmxlwqAoKSnCoHsNCj4gPsKgK8KgwqDCoMKgwqDCoGlmwqAoVG9FbmFibGVFeGVj dXRlRGlzYWJsZUZlYXR1cmXCoCgpKcKgew0KPiA+wqDCoMKgwqDCoMKgwqDCoMKgwqBFbmFibGVF eGVjdXRlRGlzYWJsZUJpdCgpOw0KPiA+wqDCoMKgwqDCoMKgwqDCoH0NCj4gPsKgwqDCoMKgwqDC oH0NCj4gPsKgZGlmZsKgLS0NCj4gZ2l0wqBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0v WDY0L1ZpcnR1YWxNZW1vcnkuY8KgYi9NZGVNb2R1bGVQa2cgDQo+IC9Db3JlL0R4ZUlwbFBlaW0v WDY0L1ZpcnR1YWxNZW1vcnkuYw0KPiA+wqBpbmRleMKgNDk2ZTIxOTkxMy4uMjUzZmU4NDIyM8Kg MTAwNjQ0DQo+ID7CoC0tLcKgYS9NZGVNb2R1bGVQa2cvQ29yZS9EeGVJcGxQZWltL1g2NC9WaXJ0 dWFsTWVtb3J5LmMNCj4gPsKgKysrwqBiL01kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vWDY0 L1ZpcnR1YWxNZW1vcnkuYw0KPiA+wqBAQMKgLTEwNiw2wqArMTA2LDU2wqBAQMKgSXNOdWxsRGV0 ZWN0aW9uRW5hYmxlZMKgKA0KPiA+wqDCoMKgwqByZXR1cm7CoCgoUGNkR2V0OMKgKFBjZE51bGxQ b2ludGVyRGV0ZWN0aW9uUHJvcGVydHlNYXNrKcKgJsKgQklUMCnCoCE9wqANCj4gPjApOw0KPiA+ wqDCoH0NCj4gPg0KPiA+wqArLyoqDQo+ID7CoCvCoMKgQ2hlY2vCoGlmwqBFeGVjdXRlwqBEaXNh YmxlwqBCaXTCoChJQTMyX0VGRVIuTlhFKcKgc2hvdWxkwqBiZcKgZW5hYmxlZMKgb3LCoG5vdC4N Cj4gPsKgKw0KPiA+wqArwqDCoEByZXR2YWzCoFRSVUXCoMKgwqDCoElBMzJfRUZFUi5OWEXCoHNo b3VsZMKgYmXCoGVuYWJsZWQuDQo+ID7CoCvCoMKgQHJldHZhbMKgRkFMU0XCoMKgwqBJQTMyX0VG RVIuTlhFwqBzaG91bGTCoG5vdMKgYmXCoGVuYWJsZWQuDQo+ID7CoCsNCj4gPsKgKyoqLw0KPiA+ wqArQk9PTEVBTg0KPiA+wqArVG9FbmFibGVFeGVjdXRlRGlzYWJsZUZlYXR1cmXCoCgNCj4gPsKg K8KgwqBWT0lEDQo+ID7CoCvCoMKgKQ0KPiANCj4gScKgdGhpbmvCoHdlJ3JlwqBvdmVyLWNvbXBs aWNhdGluZ8KgdGhlwqBuYW1lwqBvZsKgdGhpc8KgZnVuY3Rpb24uwqBGaXJzdCzCoCJUbyINCj4g bG9va3PCoHVubmVjZXNzYXJ5LsKgU2Vjb25kLMKgIkVuYWJsZcKgRXhlY3V0ZcKgRGlzYWJsZSLC oGlzwqBqdXN0wqBhbiANCj4gZW5naW5lZXInc8Kgd2F5wqB0b8Kgc2F5wqAiRGlzYWJsZcKgRXhl Y3V0aW9uIi7CoENhbsKgd2XCoHNhecKgcmlnaHTCoHRoYXQ6DQo+IERpc2FibGVFeGVjKCk/DQo+ IA0KPiBPcsKgYXTCoGxlYXN0LMKgaWbCoHdlwqBjb25zaWRlcsKgIk5YIsKgYcKgd29yZMKgaW7C oGl0c8Kgb3duwqByaWdodCzCoCJFbmFibGVOWCgpIj8NCg0KSSBwcmVmZXIgbW9yZSBnZW5lcmFs IG9uZS4gTGV0J3MgdXNlIERpc2FibGVFeGVjKCkuDQoNCj4gDQo+ID7CoCt7DQo+ID7CoCvCoMKg aWbCoCghSXNFeGVjdXRlRGlzYWJsZUJpdEF2YWlsYWJsZcKgKCkpwqB7DQo+ID7CoCvCoMKgwqDC oHJldHVybsKgRkFMU0U7DQo+ID7CoCvCoMKgfQ0KPiA+wqArDQo+ID7CoCvCoMKgLy8NCj4gPsKg K8KgwqAvL8KgTm9ybWFsbHnCoHN0YWNrwqBpc8KgdHlwZcKgb2bCoEVmaUJvb3RTZXJ2aWNlc0Rh dGEuwqBEaXNhYmxpbmfCoE5YwqANCj4gPmZvcsKgc3RhY2sNCj4gPsKgK8KgwqAvL8KgYnV0wqBl bmFibGluZ8KgTljCoGZvcsKgRWZpQm9vdFNlcnZpY2VzRGF0YcKgZG9lc24ndMKgbWFrZcKgYW55 wqBzZW5zZS4NCj4gPsKgK8KgwqAvLw0KPiANCj4gVGhpc8KgY29tbWVudMKgaXPCoGdvb2QuDQo+ IA0KPiA+wqArwqDCoGlmwqAoUGNkR2V0Qm9vbMKgKFBjZFNldE54Rm9yU3RhY2spwqA9PcKgRkFM U0XCoCYmDQo+IA0KPiBQbGVhc2XCoGRvbid0wqBjb21wYXJlwqBQY2RHZXRCb29sKCnCoGFnYWlu c3TCoFRSVUXCoG9ywqBGQUxTRSzCoGp1c3TCoHNheSANCj4gUGNkR2V0Qm9vbCgpLMKgb3LCoCFQ Y2RHZXRCb29sKCkuDQo+IA0KPiA+wqArwqDCoMKgwqDCoMKgKFBjZEdldDY0wqAoUGNkRHhlTnhN ZW1vcnlQcm90ZWN0aW9uUG9saWN5KcKgJsKgDQo+ID5TVEFDS19NRU1PUllfVFlQRSkNCj4gwqAh PcKgMCnCoHsNCj4gPsKgK8KgwqDCoMKgREVCVUfCoCgoREVCVUdfRVJST1IsDQo+ID7CoCvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAiRVJST1I6wqBOWMKgZm9ywqBzdGFja8KgaXPCoGRpc2FibGVk wqBidXTCoE5YwqBmb3LCoGl0c8KgbWVtb3J5wqANCj4gPnR5cGXCoGlzwqBlbmFibGVkDQo+ICFc clxuIikpOw0KPiA+wqArwqDCoMKgwqBBU1NFUlQoIShQY2RHZXRCb29swqAoUGNkU2V0TnhGb3JT dGFjaynCoD09wqBGQUxTRcKgJiYNCj4gPsKgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKFBj ZEdldDY0wqAoUGNkRHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9saWN5KcKgJsKgDQo+ID5TVEFDS19N RU1PUllfVA0KPiBZUEUpwqAhPcKgMCkpOw0KPiA+wqArwqDCoH0NCj4gDQo+IFBsZWFzZcKgZHJv cMKgYm90aMKgdGhlwqBleHBsaWNpdMKgImlmIizCoGFuZMKgdGhlwqBERUJVR8KgbWVzc2FnZS7C oEp1c3TCoGtlZXDCoA0KPiB0aGUgY29tbWVudMKgKHdoaWNowqBpc8KgYWxyZWFkecKgZmluZSnC oGFuZMKgdGhlwqBBU1NFUlQoKS7CoFRoZcKgQVNTRVJUKCnCoA0KPiB3aWxswqB0ZWxsIHBlb3Bs ZcKgd2hlcmXCoHRvwqBsb29rLMKgYW5kwqB0aGXCoGNvbW1lbnTCoHdpbGzCoGV4cGxhaW7CoHRo ZcKgDQo+IGFzc2VydGlvbi7CoEFsc28sIGluwqBhwqBSRUxFQVNFwqBidWlsZCzCoHRoZcKgY2hl Y2vCoHNob3VsZMKgYmXCoGVsaW1pbmF0ZWTCoA0KPiBlbnRpcmVseSzCoGJ1dMKgdGhhdCBtaWdo dMKgbm90wqB3b3JrwqBmb3LCoHRoZcKgZXhwbGljaXTCoCJpZiLCoChkZXBlbmRlbnTCoG9uwqAN Cj4gY29tcGlsZXJzwqBhbmQvb3IgZml4ZWTCoHZzLsKgZHluYW1pY8KgUENEcykuDQo+IA0KPiBG dXJ0aGVybW9yZSzCoGtlZXBpbmfCoHRoZcKgbG9naWNhbMKgbmVnYXRpb27CoG9wZXJhdG9ywqBh c8KgdGhlwqBvdXRlcm1vc3QgDQo+IG9wZXJhdG9ywqBtYWtlc8KgdGhlwqBjb2RlwqBhwqBsb3TC oGhhcmRlcsKgdG/CoHJlYWQuwqBJdCdzwqBtdWNowqBiZXR0ZXLCoHRvwqBqdXN0IA0KPiBhc3Nl cnTCoHdoYXTCoHdlwqBhY3R1YWxsecKgcmVxdWlyZSzCoHdoaWNowqBpczoNCj4gDQo+IMKgwqAo RHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9saWN5wqBjb3ZlcnPCoEJTRCnCoC0tPsKgU2V0TnhGb3JT dGFjaw0KPiANCj4gcHV0wqBkaWZmZXJlbnRseSwNCj4gDQo+IMKgwqBOT1QoRHhlTnhNZW1vcnlQ cm90ZWN0aW9uUG9saWN5wqBjb3ZlcnPCoEJTRCnCoE9SwqBTZXROeEZvclN0YWNrDQo+IA0KPiBp bsKgQzoNCj4gDQo+IMKgwqBBU1NFUlTCoCgNCj4gwqDCoMKgwqAoUGNkR2V0NjTCoChQY2REeGVO eE1lbW9yeVByb3RlY3Rpb25Qb2xpY3kpwqAmwqBTVEFDS19NRU1PUllfVFlQRSnCoD09DQo+IDDC oHx8DQo+IMKgwqDCoMKgUGNkR2V0Qm9vbMKgKFBjZFNldE54Rm9yU3RhY2spDQo+IMKgwqDCoMKg KTsNCj4gDQoNCkkgZG9uJ3QgaGF2ZSBzdHJvbmcgb3BpbmlvbnMgb24gdGhlc2UuIFNvIGxldCdz IGRvIGl0IHlvdXIgd2F5Lg0KDQo+ID7CoCsNCj4gPsKgK8KgwqAvLw0KPiA+wqArwqDCoC8vwqBJ bWFnZcKgZGF0YcKgc2VjdGlvbsKgY291bGTCoGJlwqB0eXBlwqBvZsKgRWZpTG9hZGVyRGF0YSzC oA0KPiA+RWZpQm9vdFNlcnZpY2VzRGF0YQ0KPiA+wqArwqDCoC8vwqBvcsKgRWZpUnVudGltZVNl cnZpY2VzRGF0YS7CoERpc2FibGluZ8KgTljCoGZvcsKgaW1hZ2XCoGRhdGHCoGJ1dMKgDQo+ID5l bmFibGluZ8KgTlgNCj4gPsKgK8KgwqAvL8KgZm9ywqBhbnnCoHRob3NlwqBtZW1vcnnCoHR5cGVz wqBkb2Vzbid0wqBtYWtlwqBhbnnCoHNlbnNlLg0KPiA+wqArwqDCoC8vDQo+IA0KPiBUaGXCoGNv bW1lbnTCoGlzwqBnb29kLMKgScKganVzdMKgc3VnZ2VzdMKgZXh0ZW5kaW5nwqBpdMKgd2l0aMKg dGhlwqBvcmlnaW7CoG9mwqANCj4gdGhlDQo+IGltYWdlOsKgIkRpc2FibGluZ8KgTljCoGZvcsKg aW1hZ2XCoGRhdGHCoChyZWdhcmRsZXNzwqBvZsKgaW1hZ2XCoG9yaWdpbinCoGZvcsKgDQo+IGFu eSB0aG9zZcKgbWVtb3J5wqB0eXBlc8KgLi4uIi4NCj4gDQoNClN1cmUuIEknbGwgYWRkIGl0Lg0K DQo+ID7CoCvCoMKgaWbCoChQY2RHZXQzMsKgKFBjZEltYWdlUHJvdGVjdGlvblBvbGljeSnCoD09 wqAwwqAmJg0KPiA+wqArwqDCoMKgwqDCoMKgKFBjZEdldDY0wqAoUGNkRHhlTnhNZW1vcnlQcm90 ZWN0aW9uUG9saWN5KcKgJsKgSU1BR0VfREFUQV9NRU1PUg0KPiBZX1RZUEUpwqAhPcKgMCnCoHsN Cj4gPsKgK8KgwqDCoMKgREVCVUfCoCgoREVCVUdfRVJST1IsDQo+ID7CoCvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAiRVJST1I6wqBOWMKgZm9ywqBpbWFnZcKgZGF0YcKgaXPCoGRpc2FibGVkwqBi dXTCoE5YwqBmb3LCoGl0c8KgDQo+ID5tZW1vcnnCoHR5cGUocynCoGlzDQo+IGVuYWJsZWQhXHJc biIpKTsNCj4gPsKgK8KgwqDCoMKgQVNTRVJUwqAoIShQY2RHZXQzMsKgKFBjZEltYWdlUHJvdGVj dGlvblBvbGljeSnCoD09wqAwwqAmJg0KPiA+wqArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oChQY2RHZXQ2NMKgKFBjZER4ZU54TWVtb3J5UHJvdGVjdGlvblBvbGljeSnCoCbCoA0KPiA+SU1B R0VfREFUQV9NRQ0KPiBNT1JZX1RZUEUpwqAhPcKgMCkpOw0KPiA+wqArwqDCoH0NCj4gDQo+IFN1 bW1hcml6aW5nwqBtecKgcG9pbnRzwqBmcm9twqBiZWZvcmUswqBoZXJlwqB3ZcKgc2hvdWxkwqBo YXZlOg0KPiANCj4gwqDCoEFTU0VSVMKgKA0KPiDCoMKgwqDCoChQY2RHZXQ2NMKgKFBjZER4ZU54 TWVtb3J5UHJvdGVjdGlvblBvbGljeSnCoCbCoElNQUdFX0RBVEFfTUVNT1JZX1RZDQo+IFBFKcKg PT3CoDDCoHx8DQo+IMKgwqDCoMKgUGNkR2V0MzLCoChQY2RJbWFnZVByb3RlY3Rpb25Qb2xpY3kp wqA9PcKgMw0KPiDCoMKgwqDCoCk7DQo+IA0KPiBUaGF0wqBpcywNCj4gDQo+IC3CoElmwqB3ZcKg ZGlzYWJsZcKgRHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9saWN5wqBmb3LCoGFsbMKgb2bCoEVmaUxv YWRlckRhdGEsDQo+IMKgwqBFZmlCb290U2VydmljZXNEYXRhLMKgYW5kwqBFZmlSdW50aW1lU2Vy dmljZXNEYXRhLMKgdGhlbsKgYW55DQo+IMKgwqBJbWFnZVByb3RlY3Rpb25Qb2xpY3nCoGlzwqBm aW5lLg0KPiANCj4gLcKgSWbCoHdlwqBlbmFibGXCoMKgRHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9s aWN5wqBmb3LCoGFuecKgb2bCoEVmaUxvYWRlckRhdGEsDQo+IMKgwqBFZmlCb290U2VydmljZXNE YXRhLMKgYW5kwqBFZmlSdW50aW1lU2VydmljZXNEYXRhLMKgdGhlbsKgd2XCoHJlcXVpcmXCoHRo ZQ0KPiDCoMKgcGxhdGZvcm3CoHRvwqBzZXTCoEltYWdlUHJvdGVjdGlvblBvbGljecKgcmVnYXJk bGVzc8Kgb2bCoGltYWdlwqBvcmlnaW4uDQo+IA0KPiBUaGFua3MNCj4gTGFzemxvDQo+IA0KDQpH b29kIGNhdGNoLiBJIG1pc3NlZCB0aGF0IHBhcnQuIFRoYW5rcy4NCg0KPiA+wqArDQo+ID7CoCvC oMKgLy8NCj4gPsKgK8KgwqAvL8KgWETCoGZsYWfCoChCSVQ2MynCoGluwqBwYWdlwqB0YWJsZcKg ZW50cnnCoGlzwqBvbmx5wqB2YWxpZMKgaWbCoElBMzJfRUZFUi5OWEXCoGlzwqBzZXQuDQo+ID7C oCvCoMKgLy/CoEZlYXR1cmVzwqBjb250cm9sbGVkwqBiecKgRm9sbG93aW5nwqBQQ0RzwqBuZWVk wqB0aGlzwqBmZWF0dXJlwqB0b8KgYmXCoGVuYWJsZWQuDQo+ID7CoCvCoMKgLy8NCj4gPsKgK8Kg wqByZXR1cm7CoChQY2RHZXRCb29swqAoUGNkU2V0TnhGb3JTdGFjaynCoHx8DQo+ID7CoCvCoMKg wqDCoMKgwqDCoMKgwqDCoFBjZEdldDY0wqAoUGNkRHhlTnhNZW1vcnlQcm90ZWN0aW9uUG9saWN5 KcKgIT3CoDDCoHx8DQo+ID7CoCvCoMKgwqDCoMKgwqDCoMKgwqDCoFBjZEdldDMywqAoUGNkSW1h Z2VQcm90ZWN0aW9uUG9saWN5KcKgIT3CoDApOw0KPiA+wqArfQ0KPiA+wqArDQo+ID7CoMKgLyoq DQo+ID7CoMKgwqDCoEVuYWJsZcKgRXhlY3V0ZcKgRGlzYWJsZcKgQml0Lg0KPiA+DQo+ID7CoEBA wqAtNzU1LDfCoCs4MDUsMTDCoEBAwqBDcmVhdGVJZGVudGl0eU1hcHBpbmdQYWdlVGFibGVzwqAo DQo+ID7CoMKgwqDCoC8vDQo+ID7CoMKgwqDCoEVuYWJsZVBhZ2VUYWJsZVByb3RlY3Rpb27CoCgo VUlOVE4pUGFnZU1hcCzCoFRSVUUpOw0KPiA+DQo+ID7CoC3CoMKgaWbCoChQY2RHZXRCb29swqAo UGNkU2V0TnhGb3JTdGFjaykpwqB7DQo+ID7CoCvCoMKgLy8NCj4gPsKgK8KgwqAvL8KgU2V0wqBJ QTMyX0VGRVIuTlhFwqBpZsKgbmVjZXNzYXJ5Lg0KPiA+wqArwqDCoC8vDQo+ID7CoCvCoMKgaWbC oChUb0VuYWJsZUV4ZWN1dGVEaXNhYmxlRmVhdHVyZcKgKCkpwqB7DQo+ID7CoMKgwqDCoMKgwqBF bmFibGVFeGVjdXRlRGlzYWJsZUJpdMKgKCk7DQo+ID7CoMKgwqDCoH0NCj4gPg0KPiA+wqBkaWZm wqAtLQ0KPiBnaXTCoGEvTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1l bW9yeS5owqBiL01kZU1vZHVsZVBrZyANCj4gL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1l bW9yeS5oDQo+ID7CoGluZGV4wqA4NTQ1N2ZmOTM3Li45ZjE1MmU2NTMxwqAxMDA2NDQNCj4gPsKg LS0twqBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vWDY0L1ZpcnR1YWxNZW1vcnkuaA0K PiA+wqArKyvCoGIvTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1lbW9y eS5oDQo+ID7CoEBAwqAtMTc5LDbCoCsxNzksMznCoEBAwqB0eXBlZGVmwqBzdHJ1Y3TCoHsNCj4g PsKgwqDCoMKgVUlOVE7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgRnJlZVBhZ2VzOw0KPiA+wqDCoH3C oFBBR0VfVEFCTEVfUE9PTDsNCj4gPg0KPiA+wqArLy8NCj4gPsKgKy8vwqBCaXTCoGZpZWxkwqBy ZXBzZW50YXRpb25zwqBvZsKgc29tZcKgRUZJX01FTU9SWV9UWVBFLMKgZm9ywqBwYWdlwqB0YWJs ZcKgDQo+ID5pbml0aWFsaXoNCj4gYXRpb24uDQo+ID7CoCsvLw0KPiA+wqArI2RlZmluZcKgU1RB Q0tfTUVNT1JZX1RZUEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDHCoDw8wqBFZmlCb290U2Vydmlj ZXNEYXRhKcKgwqDCoMKgDQo+ID4vKsKgMHgxMMKgKi8NCj4gPsKgKyNkZWZpbmXCoElNQUdFX0RB VEFfTUVNT1JZX1RZUEXCoMKgwqDCoMKgwqAoKDHCoDw8wqBFZmlMb2FkZXJEYXRhKcKgwqDCoMKg wqDCoMKgfMKgDQo+ID4vKsKgMHgwNA0KPiAqL1wNCj4gPsKgK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDHC oDw8wqBFZmlCb290U2VydmljZXNEYXRhKcKgfMKgDQo+ID4vKsKgMHgxMMKgKi9cDQo+ID7CoCvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCgxwqA8PMKgDQo+ID5FZmlSdW50aW1lU2VydmljZXNEYXRhKS8qwqAw eDQwwqAqL1wNCj4gPsKgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+ID4vKsKgMHg1NMKgKi8NCj4gPsKg Kw0KPiA+wqArLyoqDQo+ID7CoCvCoMKgQ2hlY2vCoGlmwqBFeGVjdXRlwqBEaXNhYmxlwqBCaXTC oChJQTMyX0VGRVIuTlhFKcKgc2hvdWxkwqBiZcKgZW5hYmxlZMKgb3LCoG5vdC4NCj4gPsKgKw0K PiA+wqArwqDCoEByZXR2YWzCoFRSVUXCoMKgwqDCoElBMzJfRUZFUi5OWEXCoHNob3VsZMKgYmXC oGVuYWJsZWQuDQo+ID7CoCvCoMKgQHJldHZhbMKgRkFMU0XCoMKgwqBJQTMyX0VGRVIuTlhFwqBz aG91bGTCoG5vdMKgYmXCoGVuYWJsZWQuDQo+ID7CoCsNCj4gPsKgKyoqLw0KPiA+wqArQk9PTEVB Tg0KPiA+wqArVG9FbmFibGVFeGVjdXRlRGlzYWJsZUZlYXR1cmXCoCgNCj4gPsKgK8KgwqBWT0lE DQo+ID7CoCvCoMKgKTsNCj4gPsKgKw0KPiA+wqArLyoqDQo+ID7CoCvCoMKgVGhlwqBmdW5jdGlv bsKgd2lsbMKgY2hlY2vCoGlmwqBFeGVjdXRlwqBEaXNhYmxlwqBCaXTCoGlzwqBhdmFpbGFibGUu DQo+ID7CoCsNCj4gPsKgK8KgwqBAcmV0dmFswqBUUlVFwqDCoMKgwqDCoMKgRXhlY3V0ZcKgRGlz YWJsZcKgQml0wqBpc8KgYXZhaWxhYmxlLg0KPiA+wqArwqDCoEByZXR2YWzCoEZBTFNFwqDCoMKg wqDCoEV4ZWN1dGXCoERpc2FibGXCoEJpdMKgaXPCoG5vdMKgYXZhaWxhYmxlLg0KPiA+wqArDQo+ ID7CoCsqKi8NCj4gPsKgK0JPT0xFQU4NCj4gPsKgK0lzRXhlY3V0ZURpc2FibGVCaXRBdmFpbGFi bGXCoCgNCj4gPsKgK8KgwqBWT0lEDQo+ID7CoCvCoMKgKTsNCj4gPsKgKw0KPiA+wqDCoC8qKg0K PiA+wqDCoMKgwqBFbmFibGXCoEV4ZWN1dGXCoERpc2FibGXCoEJpdC4NCj4gPg0KPiA+DQo=