From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 EDD0321AE30D1 for ; Tue, 6 Jun 2017 08:42:18 -0700 (PDT) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jun 2017 08:43:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,306,1493708400"; d="scan'208,217";a="1157219189" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 06 Jun 2017 08:43:22 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Jun 2017 08:43:21 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Jun 2017 08:43:21 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.146]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.56]) with mapi id 14.03.0319.002; Tue, 6 Jun 2017 23:43:18 +0800 From: "Yao, Jiewen" To: "afish@apple.com" CC: Brijesh Singh , "Zeng, Star" , "Justen, Jordan L" , Laszlo Ersek , "edk2-devel@lists.01.org" , "Dong, Eric" , "Thomas.Lendacky@amd.com" , "leo.duran@amd.com" , "Fan, Jeff" , "Gao, Liming" , "Yao, Jiewen" Thread-Topic: [edk2] [PATCH v6 00/17] x86: Secure Encrypted Virtualization (AMD) Thread-Index: AQHS1i6XS3nccqY8p0ihaGPO2ea5zKIGlS8AgAQSUICAAJ0DgIAAFskAgAPHAYCAABkkAIAHHyQAgAA22ACAAA+sgIAAHKOAgAE3sqD//4oeAIAAhr6g Date: Tue, 6 Jun 2017 15:43:17 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A9645DB@shsmsx102.ccr.corp.intel.com> References: <1495809845-32472-1-git-send-email-brijesh.singh@amd.com> <149583274037.25973.13062338567511386932@jljusten-skl> <6ecd0138-454e-6a6e-d034-beaf63466120@redhat.com> <149609029319.5770.13917390389219314003@jljusten-skl> <14301d64-9fa3-8231-42c1-52c2dcd9f96f@amd.com> <149630284935.10663.16670660897918560882@jljusten-skl> <661e46af-5e1c-733a-d027-1ae2e3052a28@amd.com> <149671154262.11907.18297341281786344033@jljusten-skl> <0C09AFA07DD0434D9E2A0C6AEB0483103B8E3C1D@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503A964542@shsmsx102.ccr.corp.intel.com> <89CEBE18-D16B-4D1E-8E51-263C4375FDB2@apple.com> In-Reply-To: <89CEBE18-D16B-4D1E-8E51-263C4375FDB2@apple.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH v6 00/17] x86: Secure Encrypted Virtualization (AMD) 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: Tue, 06 Jun 2017 15:42:19 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQW5kcmV3DQpZZXMsIEkgYWdyZWUuIElmIHdlIGNvdWxkIGZpZ3VyZSBvdXQgYSBjbGVhbmVy IHdheSB0byByZXNvbHZlIHRoZSBwcm9ibGVtLCB3ZSBzaG91bGQgdXNlIHRoZSBjbGVhbmVyIHdh eS4NCg0KDQoNCklmIHdlIHJlYWxseSByZWFsbHkgZG8gbm90IHdhbnQgdG8gdXNlIGEgcHJpb3Jp IGZvciBBbWRTZWMsIHdlIGNhbiBsZXQgQW1kU2VjIHRvIHB1Ymxpc2ggYSBzcGVjaWFsIHByb3Rv Y29sLCBhbmQgbGV0IHRoZSBkcml2ZXIgZGVwZW5kIHRoYXQgcHJvdG9jb2wsIGlmIHRoaXMgZHJp dmVyIG5lZWQgYWRkIE1NSU8gcmVnaW9uLg0KQmVjYXVzZSBBbWRTZWMgaXMgaW5zaWRlIG9mIE92 bWZQa2csIHRoaXMgc3BlY2lhbCBwcm90b2NvbCBjYW4gYmUgaW4gT3ZtZlBrZy4NCg0KVGhhdCBp cyBqdXN0IGFub3RoZXIgb3B0aW9uLg0KDQpUaGFuayB5b3UNCllhbyBKaWV3ZW4NCg0KRnJvbTog YWZpc2hAYXBwbGUuY29tIFttYWlsdG86YWZpc2hAYXBwbGUuY29tXQ0KU2VudDogVHVlc2RheSwg SnVuZSA2LCAyMDE3IDExOjI1IFBNDQpUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPg0KQ2M6IEJyaWplc2ggU2luZ2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IFplbmcsIFN0 YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBMIDxqb3JkYW4ubC5qdXN0 ZW5AaW50ZWwuY29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IGVkazItZGV2 ZWxAbGlzdHMuMDEub3JnOyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgVGhvbWFz LkxlbmRhY2t5QGFtZC5jb207IGxlby5kdXJhbkBhbWQuY29tOyBGYW4sIEplZmYgPGplZmYuZmFu QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NClN1YmplY3Q6 IFJlOiBbZWRrMl0gW1BBVENIIHY2IDAwLzE3XSB4ODY6IFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVh bGl6YXRpb24gKEFNRCkNCg0KDQo+IE9uIEp1biA2LCAyMDE3LCBhdCA3OjU0IEFNLCBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4g d3JvdGU6DQo+DQo+IEhpDQo+IEl0IHRha2VzIG1lIHNvbWUgdGltZSB0byByZWFkIGFsbCBlbWFp bCBiZWxvdy4gSSBiZWxpZXZlIGFsbCBvZiB1cyBoYXZlIGEgY2xlYW4gdW5kZXJzdGFuZGluZyBv biB3aGF0IHByb2JsZW0gd2UgaGF2ZSBub3cgYW5kIHRoZSBwb3NzaWJsZSBzb2x1dGlvbnMgdG8g Y2xlYXIgQyBiaXQgYXJlIGJlbG93DQo+DQo+IDEpICAgICAgIEluIER4ZUlwbCwgd2hlbiBpdCBi dWlsZHMgcGFnZSB0YWJsZS4NCj4NCj4gMikgICAgICAgSW4gRHhlQ29yZQ0KPg0KPiBhKSAgICAg ICAgIEJ5IHVzZSBDcHVBcmNoDQo+DQo+IGIpICAgICAgICAgQnkgdXNlIHBhZ2UgdGFibGUgbGli DQo+DQo+IGMpICAgICAgICAgQnkgdXNlIGEgR0NEIHVwZGF0ZSBjYWxsYmFjaw0KPg0KPiBkKSAg ICAgICAgIEJ5IHVzZSBQbGF0Zm9ybUhvb2sgbGliDQo+DQo+IDMpICAgICAgIEluIGEgc3RhbmRh bG9uZSBBbWRTZXYgZHJpdmVyLg0KPg0KPiBIZXJlIGlzIG15IHRob3VnaHQ6DQo+IDIuYSkgaXMg bm90IHBvc3NpYmxlLCBwZXIgTGVv4oCZcyBpbnZlc3RpZ2F0aW9uLg0KPiAyLmIpIGlzIG5vdCBh IGdvb2QgZGVzaWduLCBiZWNhdXNlIHdlIGRvIG5vdCBpbnRyb2R1Y2UgYW55IENwdSBTcGVjaWZp YyB0aGluZyB0byBEeGVDb3JlIHNvIGZhci4NCj4gMi5jKSBhbmQgMi5kKSBhcmUgc2FtZS4gSSBk byBub3Qgc3VnZ2VzdCB3ZSBhZGQgYSBwcml2YXRlIGludGVyZmFjZSB0byB0aGUgY29yZSBqdXN0 IHRvIHN1cHBvcnQgb25lIHNwZWNpZmljIGZlYXR1cmUuDQo+DQo+IDEpIGlzIG9uZSBwb3NzaWJs ZSBzb2x1dGlvbiwgSSBzdWdnZXN0ZWQgYmVmb3JlLiBCdXQgaWYgTGVvL0xhc3psbyB0aGluayBp dCBpcyB0b28gaGFyZCB0byBpbXBsZW1lbnQsIEkgYW0gT0suDQo+DQo+IElmIDEpIGNhbm5vdCBi ZSBjaG9zZW4sIEkgc3RpbGwgdGhpbmsgMykgaXMgdGhlIGJlc3QgaWRlYS4NCj4gSXQgbWFrZXMg dGhlIGNvZGUgdmVyeSBjbGVhbiBieSBpbnRyb2R1Y2luZyBhIHN0YW5kYWxvbmUgZHJpdmVyIHRv IHJlc29sdmUgdGhlIHByb2JsZW0uDQo+IFplcm8gaW1wYWN0IG9uIGV4aXN0aW5nIHBsYXRmb3Jt Lg0KPiBJZiB0aGlzIGZlYXR1cmUgaXMgbm90IG5lZWRlZCwganVzdCByZW1vdmUgdGhlIGRyaXZl ci4NCj4NCj4gSSBkbyBub3Qgc2VlIGFueSBpc3N1ZSBvbiB1c2luZyBhIHByaW9yaSwgYmVjYXVz ZTogQSkg4oCcYSBwcmlvcmnigJ0gaXMgY2xlYXJseSBkZWZpbmVkIGluIFBJIHNwZWMsIEIpIOKA nGEgcHJpb3Jp4oCdIGhhcyBhbHJlYWR5IGJlZW4gd2lkZWx5IHVzZWQgaW4gY3VycmVudCBwbGF0 Zm9ybSBpbiBFREtJSSBvcGVuIHNvdXJjZSwgYXMgd2VsbCBhcyBjbG9zZSBzb3VyY2UgcGxhdGZv cm0uDQo+DQoNCkppZXdlbiwNCg0KSSBhZ3JlZSB0aGF0ICJhIHByaW9yaSIgaXMgcGFydCBvZiB0 aGUgYXJjaGl0ZWN0dXJlIHNvIGl0IGlzIE9LIHRvIHVzZSBpdCwgYnV0ICJhIHByaW9yaSIgd2Fz IG5ldmVyIHJlYWxseSBpbnRlbmRlZCBhcyBhIHdheSB0byBhZGQgYmFzaWMgZmVhdHVyZXMuIGl0 IHdhcyBtb3JlIGZvciBkZWJ1Z2dpbmcgYW5kIHdvcmsgYXJvdW5kcy4gSXQgc2VlbXMgbGlrZSBh IGZlYXR1cmUgbGlrZSB0aGlzIHNob3VsZCBub3QgcmVxdWlyZSBhIHdvcmsgYXJvdW5kLi4uLg0K DQonU28gSSB0aGluayBpdCBpcyBPSyB0byBhY2NlcHQgdGhpcyBwYXRjaCB0byBnZXQgdGhlIGZl YXR1cmUgZW5hYmxlZCwgYnV0IHdlIG5lZWQgdG8gbG9vayBhdCB0aGUgR0NEIGltcGxlbWVudGF0 aW9uIGFuZCBQSSBhcmNoaXRlY3R1cmUgdG8gZmlndXJlIG91dCB3aHkgdGhlcmUgaXMgbm90IGEg Y2xlYW5lciB3YXkgdG8gYWRkIHRoaXMgZmVhdHVyZS4gTWF5YmUgd2UgbmVlZCB0byBjaGFuZ2Ug dGhlIGltcGxlbWVudGF0aW9uLCBhbmQvb3IgdGhlIFBJIFNwZWM/DQoNClRoYW5rcywNCg0KQW5k cmV3IEZpc2gNCg0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0KPg0KPg0KPg0KPiBGcm9tOiBC cmlqZXNoIFNpbmdoIFttYWlsdG86YnJpamVzaC5zaW5naEBhbWQuY29tXQ0KPiBTZW50OiBUdWVz ZGF5LCBKdW5lIDYsIDIwMTcgMTE6NTEgQU0NCj4gVG86IFplbmcsIFN0YXIgPHN0YXIuemVuZ0Bp bnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+PjsgSnVzdGVuLCBKb3JkYW4gTCA8 am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNv bT4+OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPG1haWx0bzpsZXJzZWtAcmVkaGF0 LmNvbT4+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdA aW50ZWwuY29tPj47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amll d2VuLnlhb0BpbnRlbC5jb20+Pg0KPiBDYzogVGhvbWFzLkxlbmRhY2t5QGFtZC5jb208bWFpbHRv OlRob21hcy5MZW5kYWNreUBhbWQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbT4+OyBsZW8uZHVyYW5AYW1kLmNvbTxtYWls dG86bGVvLmR1cmFuQGFtZC5jb20+OyBGYW4sIEplZmYgPGplZmYuZmFuQGludGVsLmNvbTxtYWls dG86amVmZi5mYW5AaW50ZWwuY29tPj4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggdjYg MDAvMTddIHg4NjogU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoQU1EKQ0KPg0KPiBI aSBKb3JkYW4sDQo+DQo+DQo+IE9uIDYvNS8xNyA5OjA4IFBNLCBaZW5nLCBTdGFyIHdyb3RlOg0K Pj4gSSB3YXMgbm90IHRyYWNraW5nIHRoaXMgdGhyZWFkLg0KPj4gSmlld2VuIHdpbGwgaGVscCBn aXZlIGNvbW1lbnRzIGFib3V0IHRoZSBwb3RlbnRpYWwgY2hhbmdlIGluIE1kZU1vZHVsZVBrZy4N Cj4+DQo+PiBUaGFua3MsDQo+PiBTdGFyDQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K Pj4gRnJvbTogSnVzdGVuLCBKb3JkYW4gTA0KPj4gU2VudDogVHVlc2RheSwgSnVuZSA2LCAyMDE3 IDk6MTIgQU0NCj4+IFRvOiBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLnNpbmdoQGFtZC5jb208bWFp bHRvOmJyaWplc2guc2luZ2hAYW1kLmNvbTxtYWlsdG86YnJpamVzaC5zaW5naEBhbWQuY29tJTNj bWFpbHRvOmJyaWplc2guc2luZ2hAYW1kLmNvbT4+PjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVk aGF0LmNvbTxtYWlsdG86bGVyc2VrQHJlZGhhdC5jb208bWFpbHRvOmxlcnNla0ByZWRoYXQuY29t JTNjbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxt YWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEu b3JnJTNjbWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPj47IFplbmcsIFN0YXIgPHN0YXIu emVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVu Z0BpbnRlbC5jb20lM2NtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+PjsgRG9uZywgRXJpYyA8 ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJp Yy5kb25nQGludGVsLmNvbSUzY21haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj4+DQo+PiBDYzog VGhvbWFzLkxlbmRhY2t5QGFtZC5jb208bWFpbHRvOlRob21hcy5MZW5kYWNreUBhbWQuY29tPG1h aWx0bzpUaG9tYXMuTGVuZGFja3lAYW1kLmNvbSUzY21haWx0bzpUaG9tYXMuTGVuZGFja3lAYW1k LmNvbT4+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb208bWFpbHRvOmxpbWluZy5n YW9AaW50ZWwuY29tPG1haWx0bzpsaW1pbmcuZ2FvQGludGVsLmNvbSUzY21haWx0bzpsaW1pbmcu Z2FvQGludGVsLmNvbT4+PjsgbGVvLmR1cmFuQGFtZC5jb208bWFpbHRvOmxlby5kdXJhbkBhbWQu Y29tPG1haWx0bzpsZW8uZHVyYW5AYW1kLmNvbSUzY21haWx0bzpsZW8uZHVyYW5AYW1kLmNvbT4+ OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50 ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbSUzY21haWx0bzpqaWV3ZW4ueWFvQGlu dGVsLmNvbT4+PjsgRmFuLCBKZWZmIDxqZWZmLmZhbkBpbnRlbC5jb208bWFpbHRvOmplZmYuZmFu QGludGVsLmNvbTxtYWlsdG86amVmZi5mYW5AaW50ZWwuY29tJTNjbWFpbHRvOmplZmYuZmFuQGlu dGVsLmNvbT4+Pg0KPj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggdjYgMDAvMTddIHg4Njog U2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoQU1EKQ0KPj4NCj4+IE9uIDIwMTctMDYt MDUgMTQ6NTY6MDQsIEJyaWplc2ggU2luZ2ggd3JvdGU6DQo+Pj4gT24gMDYvMDEvMjAxNyAwNDox MCBBTSwgTGFzemxvIEVyc2VrIHdyb3RlOg0KPj4+PiBPbiAwNi8wMS8xNyAwOTo0MCwgSm9yZGFu IEp1c3RlbiB3cm90ZToNCj4+Pj4+IEluIGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9l ZGsyLWRldmVsLzIwMTctQXByaWwvMDA5ODgzLmh0bWwNCj4+Pj4+IExlbyBzYWlkIHRoYXQgRHhl SXBsIHdvbid0IHdvcmsgYmVjYXVzZSBuZXcgSS9PIHJhbmdlcyBtaWdodCBiZSBhZGRlZC4NCj4+ Pj4+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzLCBiZWNhdXNlIGlzbid0IER4ZUlwbCBhbmQgYW4g ZWFybHkgQVBSSU9SSQ0KPj4+Pj4gZW50cnkgYXJlIHJvdWdobHkgZXF1aXZhbGVudCBpbiB0aGUg Ym9vdCBzZXF1ZW5jZT8NCj4+Pj4gSSB0aGluayB5b3UgYXJlIHJpZ2h0LiBJIGJlbGlldmUgYSBw YXRjaCBmb3IgdGhpcyBleGFjdCBpZGVhIGhhc24ndA0KPj4+PiBiZWVuIHBvc3RlZCB5ZXQuIEpp ZXdlbidzIG1lc3NhZ2UgdGhhdCB5b3UgbGlua2VkIGFib3ZlIGNvbnRhaW5zIHRoZQ0KPj4+PiBl eHByZXNzaW9uDQo+Pj4+DQo+Pj4+ICAgICBhbHdheXMgY2xlYXIgU0VWIG1hc2sgZm9yIE1NSU8g KmFuZCBhbGwgcmVzdCoNCj4+Pj4NCj4+Pj4gKGVtcGhhc2lzIG1pbmUpLCB3aGljaCBJIHRoaW5r IHdlIG1heSBoYXZlIG1pc3NlZCAqaW4gY29tYmluYXRpb24NCj4+Pj4gd2l0aCogdGhlIER4ZUlw bC4NCj4+Pj4NCj4+Pj4gU28gdGhlIGlkZWEgd291bGQgYmUgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0 aGUgSE9CcyBpbiB0aGUgRHhlSXBsIFBFSU0uDQo+Pj4+IEtlZXAgdGhlIEMgYml0IHNldCBmb3Ig c3lzdGVtIG1lbW9yeSByZWdpb25zLiBDbGVhciB0aGUgQyBiaXQgZm9yDQo+Pj4+IE1NSU8gcmVn aW9ucyB0aGF0IGFyZSBrbm93biBmcm9tIHRoZSBIT0IgbGlzdC4gQWxzbyBjbGVhciB0aGUgQyBi aXQNCj4+Pj4gZXZlcnl3aGVyZSBlbHNlIGluIHRoZSBhZGRyZXNzIHNwYWNlIChrbm93biBmcm9t IHRoZSBDUFUgSE9CKSB3aGVyZQ0KPj4+PiBubyBjb3ZlcmFnZSBpcyBwcm92aWRlZCBieSBhbnkg bWVtb3J5IHJlc291cmNlIGRlc2NyaXB0b3IgSE9CLg0KPj4+Pg0KPj4+PiBUaGlzIGlzIGdvaW5n IHRvIGJlIGhhcmRlciB0aGFuIHRoZSBjdXJyZW50IGFwcHJvYWNoLCBiZWNhdXNlOg0KPj4+Pg0K Pj4+PiAtIFRoZSBjdXJyZW50IGFwcHJvYWNoIGNhbiB3b3JrIG9mZiBvZiB0aGUgR0NEIG1lbW9y eSBzcGFjZSBtYXAsDQo+Pj4+IHdoaWNoIHByb3ZpZGVzIGV4cGxpY2l0IE5vbkV4aXN0ZW50IGVu dHJpZXMsIGNvdmVyaW5nIHRoZSBlbnRpcmUNCj4+Pj4gYWRkcmVzcyBzcGFjZSAoYWNjb3JkaW5n IHRvIHRoZSBDUFUgSE9CKS4NCj4+Pj4NCj4+Pj4gLSBIb3dldmVyLCB0aGUgRHhlSXBsIG1ldGhv ZCB3b3VsZCB0YWtlIHBsYWNlIGJlZm9yZSBlbnRlcmluZyBEWEUsDQo+Pj4+IHNvIG5vIEdDRCBt ZW1vcnkgc3BhY2UgbWFwIHdvdWxkIGJlIGF2YWlsYWJsZSAtLSB0aGUgIk5vbkV4aXN0ZW50Ig0K Pj4+PiBlbnRyaWVzIHdvdWxkIGhhdmUgdG8gYmUgc3ludGhlc2l6ZWQgbWFudWFsbHkgZnJvbSB0 aGUgYWRkcmVzcyBzcGFjZQ0KPj4+PiBzaXplIChrbm93biBmcm9tIHRoZSBDUFUgSE9CKSBhbmQg dGhlIGxhY2sgb2YgY292ZXJhZ2UgYnkgbWVtb3J5DQo+Pj4+IHJlc291cmNlIGRlc2NyaXB0b3Ig SE9Ccy4NCj4+Pj4NCj4+Pj4gQmFzaWNhbGx5LCBpbiBvcmRlciB0byBtb3ZlIHRoZSBjdXJyZW50 IEdDRCBtZW1vcnkgc3BhY2UgbWFwDQo+Pj4+IHRyYXZlcnNhbCBmcm9tIGVhcmx5IERYRSB0byBs YXRlIFBFSSwgdGhlIG1lbW9yeSBzcGFjZSBtYXAgYnVpbGRpbmcNCj4+Pj4gbG9naWMgb2YgdGhl IERYRSBDb3JlIHdvdWxkIGhhdmUgdG8gYmUgZHVwbGljYXRlZCBpbiB0aGUgRHhlSXBsDQo+Pj4+ IFBFSU0uIElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHkuIChUaGUgRHhlSXBsIFBFSU0gbWF5IGFs cmVhZHkNCj4+Pj4gY29udGFpbiB2ZXJ5IHNpbWlsYXIgY29kZSwgZm9yIHRoZSBwYWdlIHRhYmxl IGJ1aWxkaW5nLCB3aGljaCBtaWdodA0KPj4+PiBub3QgYmUgZGlmZmljdWx0IHRvIGV4dGVuZCBs aWtlIHRoaXMgLS0gSSBoYXZlbid0IGxvb2tlZC4pDQo+Pj4+DQo+Pj4+IElzIHRoaXMgd2hhdCB5 b3UgaGF2ZSBpbiBtaW5kPw0KPj4+Pg0KPj4+IERvIHlvdSBoYXZlIGFueSBmdXJ0aGVyIHRob3Vn aHQgb24gdGhpcz8NCj4+IFJlZ2FyZGluZyBMYXN6bG8ncyBmZWVkYmFjaywgSSdtIG5vdCBjb252 aW5jZWQgdGhhdCBpdCB3b3VsZCBiZSBleGNlc3NpdmVseSBkaWZmaWN1bHQgdG8gYWNjb21wbGlz aCB0aGlzIGluIER4ZUlwbC4gKEknbSBub3Qgc2F5aW5nIHRoYXQgSSBjb3VsZG4ndCBiZSBjb252 aW5jZWQuIDopDQo+Pg0KPj4gQXMgZmFyIGFzIEkgY2FuIHNlZSwgdGhpcyBpcyBhbiBhcmNoaXRl Y3R1cmFsbHkgZGVmaW5lZCBBTUQgZmVhdHVyZS4NCj4+IChJcyB0aGlzIHRydWUsIG9yIGlzIEJh c2VNZW1jcnlwdFNldkxpYiBhY3R1YWxseSBPVk1GIHNwZWNpZmljPykNCj4NCj4gWWVzLCBTRVYg aXMgQU1ELVYgYXJjaGl0ZWN0dXJlIGV4dGVuc2lvbiBhbmQgaXRzIGFwcGxpY2FibGUgdG8NCj4g dmlydHVhbGl6YXRpb24gcGxhdGZvcm0gb25seSAod2UgY2FuIHNheXMgQmFzZU1lbUVuY3J5cHRT ZXZMaWIgaXMgT1ZNRg0KPiBzcGVjaWZpYykuDQo+PiBZb3UndmUgYXNzZXJ0ZWQgdGhhdCBpdCBz aG91bGQgd29yayAoU0VWIHdvdWxkIG5vdCBiZSBkZXRlY3RlZCkgd2l0aCBhbnkgSW50ZWwgcHJv Y2Vzc29yIGFzIHdlbGwuIFRoZXJlZm9yZSwgSSBkb24ndCBzZWUgYSBnb29kIHJlYXNvbiB0aGF0 IHdlIHNob3VsZG4ndCBiZSBhYmxlIHRvIHN1cHBvcnQgaXQgaW4gbW9kdWxlcyB0aGF0IGFscmVh ZHkgaGF2ZQ0KPj4gSUEzMi9YNjQgc3BlY2lmaWMgY29kZS4gKEknbSByZWNhbGxpbmcNCj4+IDg4 MTgxM2Q3YTkzZDkwMDljODczNTE1YjA0M2M0MWM0NTU0Nzc5ZTQuKQ0KPj4NCj4+IFNpbmNlIER4 ZUlwbCBidWlsZHMgdGhlIElBMzIvWDY0IHBhZ2UgdGFibGVzLCBhbmQgeW91IG5lZWQgdG8gbW9k aWZ5IHRoZSBwYWdlIHRhYmxlcyBmb3IgdGhpcyBmZWF0dXJlIChjb3JyZWN0PyksIEkgdGhpbmsg d2Ugc2hvdWxkIHRyeSB0byBzdXBwb3J0IHRoZSBmZWF0dXJlIHRoZXJlIGlmIGl0IGlzIGZlYXNp YmxlLiBJIGNhbiB1bmRlcnN0YW5kIHRoZSBhcmd1bWVudCB0aGF0IHRoaXMgZG9lc24ndCBhcHBs eSB0byBhbGwgbm9uLVZNIHBsYXRmb3Jtcywgc28gSSB0aGluayB3ZSBjb3VsZCBhZGQgYSBQQ0Qg d2hpY2ggZGlzYWJsZXMgdGhpcyBzdXBwb3J0IGJ5IGRlZmF1bHQuDQo+Pg0KPj4gSSBkb24ndCBr bm93IHRoYXQgdGhlIG93bmVycyBvZiBNZGVNb2R1bGVQa2cgYW5kIFVlZmlDcHVQa2cgd2lsbCBh Z3JlZSB3aXRoIG1lIHRob3VnaC4NCj4NCj4gSSBhbSBmbGV4aWJsZSB0byBpbXBsZW1lbnQgQVBS SU9SSSBvciBQbGF0Zm9ybSBob29rcyBMaWIuIEJ1dCBvbmUgdGhpbmcNCj4gSSB3YW50IHRvIGhp Z2hsaWdodCBpczogSSdsbCBwcmVmZXIgY2xlYXJpbmcgQy1iaXQgIHRocm91Z2gNCj4gQmFzZU1l bUVuY3J5cHRTZXZMaWIgZnVuY3Rpb25zLiBPbmUgb2YgdGhlIG1haW4gcmVhc29uIGZvciBkb2lu ZyBzbyAtIEluDQo+IGZ1dHVyZSB3aGVuIHdlIGFkZCBtaWdyYXRpb24gc3VwcG9ydCBmb3IgdGhl IFNFViBndWVzdCB0aGVuIHdlIHdpbGwgYmUNCj4gcmVxdWlyZWQgdG8gbm90aWZ5IHRoZSB1bmVu Y3J5cHRlZCBwYWdlIHJhbmdlIHRvIGh5cGV2aXNvciAoIHRocm91Z2gNCj4gaHlwZXJjYWxsKS4g RHVyaW5nIG1pZ3JhdGlvbiBwaGFzZSwgSHlwZXJ2aXNvciB3aWxsIHVzZSB0aGlzIGluZm9ybWF0 aW9uDQo+IHRvIG1ha2UgZGVjaXNpb24gb24gd2hldGhlciB0byBpbnZva2UgdGhlIFNFViBmaXJt d2FyZSB0byBlbmNyeXB0IHRoZQ0KPiBtZW1vcnkgcmVnaW9uIGZvciB0cmFuc3BvcnQgcHVycG9z ZXMuIElmIGNsZWFyaW5nIEMtYml0IGxvZ2ljIGlzDQo+IGNvbnRhaW5lZCBpbnNpZGUgQmFzZU1l bUVuY3J5cHRTZXZMaWIgdGhlbiBpdCB3aWxsIG1ha2UgbGlmZSBtdWNoIGVhc2llci4NCj4NCj4+ PiBJbiBtZWFudGltZSwgSSBoYXZlIGJlZW4gbG9va2luZyBpbnRvIE1kZU1vZHVsZS9Db3JlL0R4 ZS9EeGVNYWluIHRvDQo+Pj4gc2VlIGlmIEkgY2FuIGludm9rZSBhIHBsYXRmb3JtIGRlcGVuZGVu dCBsaWJyYXJ5IHRvIGNsZWFyIEMtYml0IGJlZm9yZQ0KPj4+IER4ZU1haW4gZmluaXNoZXMgaXRz IGV4ZWN1dGlvbi4gQXMgTGFzemxvIHBvaW50ZWQsIGN1cnJlbnQgYXBwcm9hY2ggaXMNCj4+PiB1 c2luZyBHQ0QgbWVtb3J5IHNwYWNlIG1hcCB0byBnZXQgTU1JTyBhbmQgTm9uRXhpc3RlbnQgZW50 cmllcy4gSSBoYXZlDQo+Pj4gcHVzaGVkIHR3byBwYXRjaGVzIGluIG15IGRldmVsb3BtZW50IGJy YW5jaCB0byBzaG93IHdoYXQgSSBoYXZlIGJlZW4gZG9pbmc6DQo+Pj4NCj4+PiAxKSBhZGQgYSBu ZXcgbnVsbCBEeGVHY2RDb3JlUGxhdGZvcm1Ib29rTGliDQo+Pj4NCj4+PiBodHRwczovL2dpdGh1 Yi5jb20vY29kb21hbmlhL2VkazIvY29tbWl0LzE3MWY4MTYzNzZiM2IwNjc3Y2JmYjkwMjcxYTk0 DQo+Pj4gYTkyMGQ3YWQ3MmQNCj4+Pg0KPj4+IFRoZSBsaWJyYXJ5IHByb3ZpZGVzIGEgZnVuY3Rp b24gIkR4ZUdjZENvcmVQbGF0Zm9ybUhvb2tSZWFkeSIgd2hpY2gNCj4+PiBjYW4gYmUgY2FsbGVk IGJ5IER4ZU1haW4ganVzdCBhZnRlciBpdCBpbml0aWFsaXplcyB0aGUgR2NkU2VydmljZXMNCj4+ PiAod2hpY2ggd2lsbCBndWFyYW50ZWUgdGhhdCBHY2QgbWVtb3J5IHNwYWNlIG1hcCBpcyBhdmFp bGFibGUpLg0KPj4gUmVnYXJkaW5nIGhvb2tpbmcgaW50byBEeGVDb3JlLCBJIGRvbid0IHRoaW5r IGl0IGlzIHRoZSBiZXN0IGFwcHJvYWNoLCBidXQgaXQgaXMgYmV0dGVyIHRoYW4gQVBSSU9SSS4g SSB3b25kZXIgaWYgdGhlIE1kZU1vZHVsZVBrZyBvd25lcnMgY291bGQganVtcCBpbiB3aXRoIGFu IG9waW5pb24uIChIb3BlZnVsbHkgYmVzaWRlcyBqdXN0IHB1c2hpbmcgdGhlIHByb2JsZW0gYXdh eSB2aWEgQVBSSU9SSS4pDQo+DQo+IEppZXdlbiwgYW55IGNvbW1lbnRzID8NCj4NCj4+IC1Kb3Jk YW4NCj4+DQo+Pj4gMikgb3ZlcnJpZGUgRHhlR2NkQ29yZVBsYXRmb3JtSG9va0xpYiBpbnNpZGUg dGhlIE92bWYgdG8gY2xlYXIgdGhlIEMtYml0IHdoZW4NCj4+PiAgU0VWIGlzIGRldGVjdGVkLg0K Pj4+DQo+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2NvZG9tYW5pYS9lZGsyL2NvbW1pdC85MTRjZTkw NGNhMWI3NjQ3Yzk2NjU2MjU5NmJhNQ0KPj4+IDNjOTU5NDlmNjU5DQo+Pj4NCj4+PiBJJ3ZlIHRl c3RlZCB0aGUgYXBwcm9hY2ggYW5kIGl0IHNlZW1zIHRvIHdvcmsuIElzIHRoaXMgc29tZXRoaW5n DQo+Pj4gYWxpZ25lZCB3aXRoIHlvdXIgdGhpbmtpbmc/DQo+Pj4NCj4+Pg0KPj4+PiBUaGFua3MN Cj4+Pj4gTGFzemxvDQo+Pj4+DQo+Pj4+PiAtSm9yZGFuDQo+Pj4+Pg0KPj4+Pj4+IEluIHNlY29u ZCBwYXRjaA0KPj4+Pj4+IFsyXSwgTGVvIHRyaWVkIHRvIGludHJvZHVjZSBhIG5ldyBub3RpZnkg cHJvdG9jb2wgdG8gZ2V0IE1NSU8NCj4+Pj4+PiBhZGQvcmVtb3ZlIGV2ZW50cy4gRHVyaW5nIGRp c2N1c3Npb24gSmlld2VuIHN1Z2dlc3RlZCB0byBsb29rIGludG8NCj4+Pj4+PiBhZGRpbmcgYSBu ZXcgcGxhdGZvcm0gZHJpdmVyIGludG8gQVBSSU9SSSB0byBhdm9pZCB0aGUgbmVlZCBmb3INCj4+ Pj4+PiBhbnkgbW9kaWZpY2F0aW9ucyBpbnNpZGUgdGhlIEdjZGNvcmUgLSB0aGlzIHNlZW1zIHdv cmthYmxlDQo+Pj4+Pj4gc29sdXRpb24gd2hpY2ggZGlkIG5vdCByZXF1aXJlIGFkZGluZyBhbnkg Q1BVIHNwZWNpZmljIGNvZGUgaW5zaWRlIHRoZSBHY2QuDQo+Pj4+Pj4NCj4+Pj4+PiBbMV0NCj4+ Pj4+PiBodHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWRrMi1kZXZlbC8yMDE3LU1hcmNo LzAwODk3NC5odG1sDQo+Pj4+Pj4gWzJdDQo+Pj4+Pj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvcGlw ZXJtYWlsL2VkazItZGV2ZWwvMjAxNy1BcHJpbC8wMDk4NTIuaHRtbA0KPj4+Pj4+DQo+Pj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+PiBlZGsyLWRl dmVsIG1haWxpbmcgbGlzdA0KPj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsy LWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmclM2NtYWls dG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+Pg0KPj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21h aWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQo+IGh0dHBz Oi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K