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.93; helo=mga11.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 0ECD421F657B6 for ; Sun, 1 Oct 2017 04:33:02 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Oct 2017 04:36:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,463,1500966000"; d="scan'208,217";a="141418298" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga002.jf.intel.com with ESMTP; 01 Oct 2017 04:36:19 -0700 Received: from FMSMSX110.amr.corp.intel.com (10.18.116.10) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 1 Oct 2017 04:36:19 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx110.amr.corp.intel.com (10.18.116.10) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 1 Oct 2017 04:36:18 -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; Sun, 1 Oct 2017 19:36:16 +0800 From: "Yao, Jiewen" To: Laszlo Ersek CC: edk2-devel-01 , Ladi Prosek , Ard Biesheuvel Thread-Topic: [edk2] multiple levels of support for MOR / MORLock Thread-Index: AQHTOFkQdWjN5VpEtUydh2Cd6XgU/KLLGEVggAAWqYCAAKqDwP//sp4AgAFCDoCAAJHBgIABAf09///EbQCAALmaYA== Date: Sun, 1 Oct 2017 11:36:15 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A9CBAE7@shsmsx102.ccr.corp.intel.com> References: <039cf353-80fb-9f20-6ad2-f52517ab4de7@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9C9497@shsmsx102.ccr.corp.intel.com> <1aa05a42-a7a7-410b-c123-8face8be9f78@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9C9E00@shsmsx102.ccr.corp.intel.com> <5931c346-67cd-e2fa-aa11-dec14f1841bc@redhat.com> <74D8A39837DF1E4DA445A8C0B3885C503A9CAC10@shsmsx102.ccr.corp.intel.com> <82879E98-4FBB-421B-823F-5A973E18ED96@intel.com> <179e5287-3038-acaf-b5a6-71d06181eccb@redhat.com> In-Reply-To: <179e5287-3038-acaf-b5a6-71d06181eccb@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 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: multiple levels of support for MOR / MORLock 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: Sun, 01 Oct 2017 11:33:03 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBiZWxpZXZlIGl0IGlzIGxlZ2FsIHRoYXQgU01NIGNvZGUgY2FsbHMgVUVGSSBzZXJ2aWNlcyBi ZWZvcmUgU01NX1JFQURZX1RPX0xPQ0sgZXZlbnQuDQoNCkZvciBleGFtcGxlLCBTTU1fQ09SRSBj YWxscyBnQlMtPkxvY2F0ZVByb3RvY29sKCksIGFuZCBtU2VjdXJpdHktPkZpbGVBdXRoZW50aWNh dGlvblN0YXRlKCksIHVudGlsIFNtbVJlYWR5VG9Mb2NrIGV2ZW50IHRyaWdnZXJlZC4NClNNTV9D UFUgZHJpdmVyIGNhbGxzIGdEUy0+R2V0TWVtb3J5U3BhY2VNYXAoKSBhdCBTbW1SZWFkeVRvTG9j ayBldmVudC4NCg0KQmVjYXVzZSBFbmRPZkR4ZSBoYXBwZW5zIGJlZm9yZSBTbW1SZWFkeVRvTG9j aywgaXQgaXMgT0sgdG8gY2FsbCBVRUZJIHNlcnZpY2UgYXQgdGhhdCBwb2ludC4NCg0KQWZ0ZXIg U01NX1JFQURZX1RPX0xPQ0ssIGl0IGlzIGlsbGVnYWwgdG8gY2FsbCBVRUZJIHNlcnZpY2VzIGlu IFNNTS4NCg0KVGhhbmsgeW91DQpZYW8gSmlld2VuDQoNCg0KRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQpTZW50OiBTdW5kYXksIE9jdG9iZXIgMSwgMjAxNyA0 OjIzIFBNDQpUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KQ2M6IGVkazIt ZGV2ZWwtMDEgPGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPjsgTGFkaSBQcm9zZWsgPGxwcm9zZWtA cmVkaGF0LmNvbT47IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0K U3ViamVjdDogUmU6IFtlZGsyXSBtdWx0aXBsZSBsZXZlbHMgb2Ygc3VwcG9ydCBmb3IgTU9SIC8g TU9STG9jaw0KDQpPbiAxMC8wMS8xNyAwNTo1NiwgWWFvLCBKaWV3ZW4gd3JvdGU6DQo+IEdvb2Qg dGVzdCEgVGhhbmtzIGZvciB0aGUgaW52ZXN0aWdhdGlvbi4NCj4NCj4gVGhhdCBpcyBhIGxpdHRs ZSBhbm5veWluZy4NCg0KQWdyZWVkIQ0KDQpJbiBhIHZpcnR1YWxpemF0aW9uLW9ubHkgc2NlbmFy aW8sIEkgd291bGRuJ3QgY2FyZSBtdWNoIChpdCdzIHZlcnkNCnVudXN1YWwgdG8gaW5zdGFsbCB0 d28gT1NlcyBpbiB0aGUgc2FtZSBWTSBhbmQgImR1YWwgYm9vdCIgdGhlbSksIGJ1dCBvbg0KcGh5 c2ljYWwgbWFjaGluZXMsIGR1YWwtYm9vdGluZyBXaW5kb3dzIGFuZCBMaW51eCBpcyB2ZXJ5IGZy ZXF1ZW50LCBhbmQNCndoYXRldmVyIHdlIHB1dCBpbiB0aGUgVmFyaWFibGUgZHJpdmVyIG5vdyB3 aWxsIGVuZCB1cCBvbiBwaHlzaWNhbA0KbWFjaGluZXMgc29vbmVyIG9yIGxhdGVyLg0KDQo+IEkg c3RpbGwgZG8gbm90IHdhbnQgdG8gdXNlIFBDRC4gTXkgdGhvdWdodCBpcyBiZWxvdzoNCj4NCj4g Q3VycmVudCBNT1IgaGFzIFRDRyBwcm90b2NvbCBkZXBlbmRlbmNlLiAgIFNvIGNhbiB3ZSBhZGQg b25lIG1vcmUNCj4gY2hlY2sgLSB0byBjaGVjayB0aGUgZXhpc3RlbmNlIG9mIFRDRy9UQ0cyIHBy b3RvY29sIGluIHZhcmlhYmxlDQo+IGRyaXZlcj8gQm90aCBUQ0cgYW5kIFRDRzIgYXJlIGluIG1k ZXBrZywgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeQ0KPiBpc3N1ZS4NCj4NCj4gRXZlbiBpZiBNT1Ig aXMgcHJlc2VudCwgYnV0IG5laXRoZXIgVENHIG5vciBUQ0cyIGlzIHByZXNlbnQsIGRvbid0DQo+ IGNyZWF0ZSBNT1JMIGJ1dCBkZWxldGUgTU9SLiAoSnVzdCBpbiBjYXNlIHBlb3BsZSBib290IGZl ZG9yYSwgdGhlbg0KPiBib290IHdpbmRvd3MpIEkgYmVsaWV2ZSB0aGF0IGNhbiBoYW5kbGUgdGhl IGZlZG9yYSBpc3N1ZS4NCkFjY29yZGluZyB0byB0aGUgUEkgc3BlYywgIjEuOCBNTSBUcmFkaXRp b25hbCBEcml2ZXIgSW5pdGlhbGl6YXRpb24iLCBpbg0KdGhlIFZhcmlhYmxlU21tIGRyaXZlciBJ IGNhbiBvbmx5IGxvY2F0ZSBVRUZJIHByb3RvY29scyBpbiB0aGUgZW50cnkNCnBvaW50IGZ1bmN0 aW9uOg0KDQogICAgWy4uLl0gQW4gTU0gRHJpdmVy4oCZcyBpbml0aWFsaXphdGlvbiBwaGFzZSBl bmRzIHdoZW4gdGhlIGVudHJ5IHBvaW50DQogICAgcmV0dXJucy4gWy4uLl0gVUVGSSBwcm90b2Nv bHMgY2FuIGJlIGxvY2F0ZWQgYW5kIHVzZWQgYnkgTU0gZHJpdmVycw0KICAgIG9ubHkgZHVyaW5n IE1NIEluaXRpYWxpemF0aW9uLiBbLi4uXQ0KDQpUaGUgU21tRW5kT2ZEeGUgY2FsbGJhY2sgZG9l cyBub3QgcnVuIGFzIHBhcnQgb2YgdGhlIFZhcmlhYmxlU21tDQpkcml2ZXIncyBlbnRyeSBwb2lu dCBmdW5jdGlvbiAoVmFyaWFibGVTZXJ2aWNlSW5pdGlhbGl6ZSgpKSwgc28gSQ0KYmVsaWV2ZSBJ IG1pZ2h0IG5vdCBiZSBhbGxvd2VkIHRvIGNhbGwgZ0JTLT5Mb2NhdGVQcm90b2NvbCgpIGluIHRo ZQ0KY2FsbGJhY2suIElzIHRoYXQgY29ycmVjdD8NCg0KDQpBbm90aGVyIG9wdGlvbiB3b3VsZCBi ZSB0byByZWdpc3RlciBhIFVFRkkgcHJvdG9jb2wgbm90aWZ5IGZvciB0aGUNClRDRy9UQ0cyIHBy b3RvY29scywgYW5kIHRvIHNldCBhIGdsb2JhbCB2YXJpYWJsZSAoaW4gU01SQU0pIHdoZW4gdGhp cw0Kbm90aWZ5IGZpcmVzLiBUaGVuIHRoZSBTbW1FbmRPZkR4ZSBjYWxsYmFjayBjb3VsZCBjaGVj ayB0aGUgdmFyaWFibGUuDQoNCkhvd2V2ZXIsIHdoYXQgaGFwcGVucyBpZiB0aGUgVENHL1RDRzIg cHJvdG9jb2xzIGFyZSBpbnN0YWxsZWQgKmFmdGVyKg0KUGlTbW1DcHVEeGVTbW0gaXMgZGlzcGF0 Y2hlZCwgYW5kIHRoZSBTTU0gSVBMIGNsb3NlcyBTTVJBTT8gVGhlbiB0aGUNCnByb3RvY29sIG5v dGlmeSBjb3VsZCBuZXZlciBzZXQgdGhlIHZhcmlhYmxlIGluIFNNUkFNIC0tIGluIGZhY3QsIHRo ZQ0KcHJvdG9jb2wgbm90aWZ5IGNvdWxkbid0IGV2ZW4gYmUgaW52b2tlZCwgYmVjYXVzZSB0aGUg bm90aWZ5IGZ1bmN0aW9uDQppdHNlbGYgaXMgbG9jYXRlZCBpbiBTTVJBTSAoYXMgcGFydCBvZiB0 aGUgVmFyaWFibGVTbW0gZXhlY3V0YWJsZSkuDQoNCg0KU28sIGZvciB0aGlzIHRvIHdvcmssIEkg YmVsaWV2ZSB3ZSdkIGhhdmUgdG8gbW9kaWZ5IHRoZSBTTU1fQ09SRSB0bw0KImZvcndhcmQiIHRo ZSBUQ0cvVENHMiBVRUZJIHByb3RvY29scyBpbnRvIHRoZSBTTU0gcHJvdG9jb2wgZGF0YWJhc2UN CihzaW1pbGFybHkgdG8gRW5kT2ZEeGUvU21tRW5kT2ZEeGUsIGFsdGhvdWdoIGluIHRoYXQgY2Fz ZSwgRW5kT2ZEeGUgaXMgYQ0KVUVGSSBldmVudCBncm91cCwgbm90IGEgVUVGSSBwcm90b2NvbCku DQoNCklzIG15IHVuZGVyc3RhbmRpbmcgY29ycmVjdD8gV2hhdCBkbyB5b3Ugc3VnZ2VzdD8NCg0K DQpUaGFuayB5b3UgZm9yIHRha2luZyB0aGUgdGltZSB0byBkaXNjdXNzIHRoaXMgd2l0aCBtZSEg SWYgaXQncyBiZWNvbWluZw0KdG9vIGxvbmcsIHdlIGNhbiBjb250aW51ZSBhZnRlciB0aGUgd2Vl a2VuZCAmIHRoZSBob2xpZGF5cyBlbmQuDQoNCkNoZWVycyENCkxhc3psbw0KDQo+PiDlnKggMjAx N+W5tDEw5pyIMeaXpe+8jOS4iuWNiDQ6MzPvvIxMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQu Y29tPG1haWx0bzpsZXJzZWtAcmVkaGF0LmNvbT4+IOWGmemBk++8mg0KPj4NCj4+IEhlbGxvIEpp ZXdlbiwNCj4+DQo+Pj4gT24gMDkvMzAvMTcgMDU6NTMsIFlhbywgSmlld2VuIHdyb3RlOg0KPj4+ IEFncmVlLiBBZGRpbmcgYSBob29rIGZ1bmN0aW9uIGlzIE9LIGZvciBtZSwgYXMgbG9uZyBhcyB0 aGUgaG9vaw0KPj4+IGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGlzIGluIFRjZ01vckxvY2tYWFgu Yw0KPj4NCj4+IEkndmUgaW1wbGVtZW50ZWQgdGhpcywgYnV0IEkndmUgcnVuIGludG8gYSBwcm9i bGVtIHdoaWxlIHRlc3RpbmcgaXQuDQo+Pg0KPj4gWW91ciBpZGVhIHJlcXVpcmVzIHRoYXQgKm5v dGhpbmcqIGNyZWF0ZSB0aGUgTU9SIHZhcmlhYmxlIG90aGVyIHRoYW4NCj4+DQo+PiAgU2VjdXJp dHlQa2cvVGNnL01lbW9yeU92ZXJ3cml0ZUNvbnRyb2wvVGNnTW9yLmluZg0KPj4NCj4+IFVuZm9y dHVuYXRlbHksIHJlbGVhc2VkIEZlZG9yYSBvcGVyYXRpbmcgc3lzdGVtcyBicmVhayB0aGlzIGFz c3VtcHRpb24uDQo+PiAoSXQgaXMgYSBMaW51eCBrZXJuZWwgYnVnLCBubyBxdWVzdGlvbiBhYm91 dCB0aGF0LCBidXQgaXQgc3RpbGwgYnJlYWtzDQo+PiB0aGUgaWRlYS4pDQo+Pg0KPj4gTmFtZWx5 LCBpbiB0aGUgY3VycmVudCB1cHN0cmVhbSBMaW51eCBrZXJuZWwgKHRoZSAqdXBjb21pbmcqIHY0 LjE0DQo+PiByZWxlYXNlKSwgdGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQNCj4+IGVmaV9lbmFi bGVfcmVzZXRfYXR0YWNrX21pdGlnYXRpb24oKSwgYWRkZWQgaW4gY29tbWl0IGNjYzgyOWJhMzYy NGI6DQo+Pg0KPj4gIGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv Z2l0L3RvcnZhbGRzL2xpbnV4LmdpdC9jb21taXQvP2lkPWNjYzgyOWJhMzYyNGINCj4+DQo+Pj4g LyoNCj4+PiAqIEVuYWJsZSByZWJvb3QgYXR0YWNrIG1pdGlnYXRpb24uIFRoaXMgcmVxdWVzdHMg dGhhdCB0aGUgZmlybXdhcmUgY2xlYXIgdGhlDQo+Pj4gKiBSQU0gb24gbmV4dCByZWJvb3QgYmVm b3JlIHByb2NlZWRpbmcgd2l0aCBib290LCBlbnN1cmluZyB0aGF0IGFueSBzZWNyZXRzDQo+Pj4g KiBhcmUgY2xlYXJlZC4gSWYgdXNlcmxhbmQgaGFzIGVuc3VyZWQgdGhhdCBhbGwgc2VjcmV0cyBo YXZlIGJlZW4gcmVtb3ZlZA0KPj4+ICogZnJvbSBSQU0gYmVmb3JlIHJlYm9vdCBpdCBjYW4gc2lt cGx5IHJlc2V0IHRoaXMgdmFyaWFibGUuDQo+Pj4gKi8NCj4+PiB2b2lkIGVmaV9lbmFibGVfcmVz ZXRfYXR0YWNrX21pdGlnYXRpb24oZWZpX3N5c3RlbV90YWJsZV90ICpzeXNfdGFibGVfYXJnKQ0K Pj4+IHsNCj4+PiAgICAgICAgdTggdmFsID0gMTsNCj4+PiAgICAgICAgZWZpX2d1aWRfdCB2YXJf Z3VpZCA9IE1FTU9SWV9PTkxZX1JFU0VUX0NPTlRST0xfR1VJRDsNCj4+PiAgICAgICAgZWZpX3N0 YXR1c190IHN0YXR1czsNCj4+PiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhc2l6ZSA9IDA7DQo+ Pj4NCj4+PiAgICAgICAgc3RhdHVzID0gZ2V0X2VmaV92YXIoZWZpX01lbW9yeU92ZXJXcml0ZVJl cXVlc3RfbmFtZSwgJnZhcl9ndWlkLA0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCAmZGF0YXNpemUsIE5VTEwpOw0KPj4+DQo+Pj4gICAgICAgIGlmIChzdGF0dXMgPT0gRUZJ X05PVF9GT1VORCkNCj4+PiAgICAgICAgICAgICAgICByZXR1cm47DQo+Pj4NCj4+PiAgICAgICAg c2V0X2VmaV92YXIoZWZpX01lbW9yeU92ZXJXcml0ZVJlcXVlc3RfbmFtZSwgJnZhcl9ndWlkLA0K Pj4+ICAgICAgICAgICAgICAgICAgICBFRklfVkFSSUFCTEVfTk9OX1ZPTEFUSUxFIHwNCj4+PiAg ICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQo+Pj4g ICAgICAgICAgICAgICAgICAgIEVGSV9WQVJJQUJMRV9SVU5USU1FX0FDQ0VTUywgc2l6ZW9mKHZh bCksICZ2YWwpOw0KPj4+IH0NCj4+DQo+PiBUaGlzIGZ1bmN0aW9uIGlzIGNvcnJlY3QgaW4gdGhh dCBpdCBmaXJzdCBjaGVja3Mgd2hldGhlciB0aGUgTU9SDQo+PiB2YXJpYWJsZSBleGlzdHMuIElm IGl0IGRvZXNuJ3QgZXhpc3QsIHRoZSBmdW5jdGlvbiBkb2Vzbid0ICpjcmVhdGUqIHRoZQ0KPj4g dmFyaWFibGUuDQo+Pg0KPj4gSG93ZXZlciwgc2V2ZXJhbCBGZWRvcmEgZGlzdHJpYnV0aW9uIGtl cm5lbHMgKmFscmVhZHkqIGNvbnRhaW4gYW4NCj4+ICplYXJsaWVyKiB2ZXJzaW9uIG9mIHRoZSBz YW1lIGZ1bmN0aW9uICh3aGljaCBoYWQgbmV2ZXIgYmVlbiBtZXJnZWQgaW50bw0KPj4gdXBzdHJl YW0gTGludXgpLCBhbmQgdGhhdCB2YXJpYW50IG9mIHRoZSBmdW5jdGlvbiBpcyBpbmNvcnJlY3Q6 DQo+Pg0KPj4gIGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0 L2p3Ym95ZXIvZmVkb3JhLmdpdC9jb21taXQvP2lkPTY1NjczZTM3ZTYxZDgNCj4+DQo+Pj4gc3Rh dGljIHZvaWQgZW5hYmxlX3Jlc2V0X2F0dGFja19taXRpZ2F0aW9uKHZvaWQpDQo+Pj4gew0KPj4+ ICAgICAgICBzdGF0aWMgY29uc3QgZWZpX2d1aWRfdCB2YXJfZ3VpZCA9IE1FTU9SWV9PTkxZX1JF U0VUX0NPTlRST0xfR1VJRDsNCj4+PiAgICAgICAgc3RhdGljIGNvbnN0IGVmaV9jaGFyMTZfdCBN ZW1vcnlPdmVyd3JpdGVSZXF1ZXN0Q29udHJvbF9uYW1lW10gPSB7DQo+Pj4gICAgICAgICAgICAg ICAgJ00nLCAnZScsICdtJywgJ28nLCAncicsICd5JywNCj4+PiAgICAgICAgICAgICAgICAnTycs ICd2JywgJ2UnLCAncicsICd3JywgJ3InLCAnaScsICd0JywgJ2UnLA0KPj4+ICAgICAgICAgICAg ICAgICdSJywgJ2UnLCAncScsICd1JywgJ2UnLCAncycsICd0JywNCj4+PiAgICAgICAgICAgICAg ICAnQycsICdvJywgJ24nLCAndCcsICdyJywgJ28nLCAnbCcsDQo+Pj4gICAgICAgICAgICAgICAg MA0KPj4+ICAgICAgICB9Ow0KPj4+ICAgICAgICB1OCB2YWwgPSAxOw0KPj4+DQo+Pj4gICAgICAg IC8qIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGhlcmUgLSB0aGVyZSdzIG5vdCByZWFsbHkgYSBs b3Qgd2UgY2FuIGRvICovDQo+Pj4gICAgICAgIGVmaV9jYWxsX3J1bnRpbWUoc2V0X3ZhcmlhYmxl LA0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgKGVmaV9jaGFyMTZfdCAqKU1lbW9yeU92ZXJ3 cml0ZVJlcXVlc3RDb250cm9sX25hbWUsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAoZWZp X2d1aWRfdCAqKSZ2YXJfZ3VpZCwNCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9WQVJJ QUJMRV9OT05fVk9MQVRJTEUgfA0KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklB QkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICBFRklf VkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YodmFsKSwgdmFsKTsNCj4+PiB9DQo+Pg0KPj4gVGhpcyB2YXJpYW50IGRvZXMgbm90IGNoZWNr IGlmIHRoZSBNT1IgdmFyaWFibGUgZXhpc3RzLg0KPj4NCj4+IElmIHRoZSB2YXJpYWJsZSBkb2Vz bid0IGV4aXN0LCB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgaXQNCj4+IChpbmNvcnJl Y3RseSkuIEF0IHRoZSBuZXh0IGJvb3QsIHRoZSBTbW1FbmRPZkR4ZSBjYWxsYmFjayBpbg0KPj4g IlRjZ01vckxvY2tTbW0uYyIgd2lsbCB0aGluayB0aGF0IHRoZSBmaXJtd2FyZSBwbGF0Zm9ybSBp bmNsdWRlcyBzdXBwb3J0DQo+PiBmb3IgdGhlIE1PUiB2YXJpYWJsZSAoaXQgYXNzdW1lcyB0aGF0 IFRjZ01vci5pbmYgaXMgcGFydCBvZiB0aGUgZmlybXdhcmUNCj4+IGFuZCB0aGF0IFRjZ01vci5p bmYgY3JlYXRlZCB0aGUgdmFyaWFibGUpLCBhbmQgdGhlbiB0aGUgY2FsbGJhY2sNCj4+IGNyZWF0 ZXMvc2V0cyBNb3JMb2NrIGFzIHdlbGwuDQo+Pg0KPj4gQWdhaW4sIHRoaXMgaXMgY2xlYXJseSBh IGtlcm5lbCBidWcsIGJ1dCBpdCBpcyBwYXJ0IG9mIGF0IGxlYXN0IHRoZQ0KPj4gZm9sbG93aW5n IHJlbGVhc2VzOg0KPj4NCj4+IC0gRmVkb3JhIDI2Og0KPj4gIGh0dHBzOi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2p3Ym95ZXIvZmVkb3JhLmdpdC9jb21taXQvP2lk PTY1NjczZTM3ZTYxZA0KPj4NCj4+IC0gRmVkb3JhIDI1Og0KPj4gIGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2p3Ym95ZXIvZmVkb3JhLmdpdC9jb21taXQv P2lkPTFmNGU1ZTY1NzY4NQ0KPj4NCj4+IC0gRmVkb3JhIDI0Og0KPj4gIGh0dHBzOi8vZ2l0Lmtl cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2p3Ym95ZXIvZmVkb3JhLmdpdC9jb21t aXQvP2lkPTY3Nzc2NWQ0ZGI4ZQ0KPj4NCj4+IFRodXMgdGhlIFNtbUVuZE9mRHhlIGNhbGxiYWNr IHdvdWxkbid0IHdvcmsgY29ycmVjdGx5IHRvZ2V0aGVyIHdpdGgNCj4+IHRoZXNlIEZlZG9yYSBy ZWxlYXNlcy4NCj4+DQo+PiBUaGFua3MsDQo+PiBMYXN6bG8NCj4+DQo+Pj4gRnJvbTogTGFzemxv IEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+Pj4gU2VudDogU2F0dXJkYXksIFNl cHRlbWJlciAzMCwgMjAxNyAxMjozOSBBTQ0KPj4+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4NCj4+PiBDYzogZWRrMi1k ZXZlbC0wMSA8ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMu MDEub3JnPj47IExhZGkgUHJvc2VrIDxscHJvc2VrQHJlZGhhdC5jb208bWFpbHRvOmxwcm9zZWtA cmVkaGF0LmNvbT4+DQo+Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBtdWx0aXBsZSBsZXZlbHMgb2Yg c3VwcG9ydCBmb3IgTU9SIC8gTU9STG9jaw0KPj4+DQo+Pj4+IE9uIDA5LzI5LzE3IDE1OjI2LCBZ YW8sIEppZXdlbiB3cm90ZToNCj4+Pj4gU3VyZS4gRmVlbCBmcmVlIHRvIHN1Ym1pdCBwYXRjaC4N Cj4+Pj4NCj4+Pj4gRm9yIHRoZSBmaXgsIEkgc3VnZ2VzdCB3ZSBrZWVwIGFsbCBNT1JMIHJlbGF0 ZWQgY29kZSBpbnRvDQo+Pj4+IFRjZ01vckxvY2tYWFguYy4gSSBkbyBub3Qgc3VnZ2VzdCB3ZSBt aXggdGhlIE1PUkwgc3R1ZmYgaW50bw0KPj4+PiBWYXJpYWJsZVhYWC5jLg0KPj4+DQo+Pj4gSSd2 ZSBoYWQgbW9yZSB0aG91Z2h0cyBhYm91dCB0aGlzLCBzaW5jZSBzZW5kaW5nIG15IGxhc3QgZW1h aWwuDQo+Pj4NCj4+PiBDdXJyZW50bHkgU21tRW5kT2ZEeGVDYWxsYmFjaygpDQo+Pj4gW01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbS5jXSBwZXJm b3Jtcw0KPj4+IHRoZSBmb2xsb3dpbmcgYWN0aW9uczoNCj4+Pg0KPj4+IC0gc2V0cyAibUVuZE9m RHhlIiB0byBUUlVFDQo+Pj4gLSBjYWxscyBWYXJDaGVja0xpYkluaXRpYWxpemVBdEVuZE9mRHhl KCkNCj4+PiAtIGNhbGxzIEluaXRpYWxpemVWYXJpYWJsZVF1b3RhKCkNCj4+PiAtIGNhbGxzIFJl Y2xhaW1Gb3JPUygpIG9wdGlvbmFsbHkNCj4+Pg0KPj4+IElmIHdlIHJlZ2lzdGVyIGEgc2VwYXJh dGUgY2FsbGJhY2sgZm9yIGdFZmlTbW1FbmRPZkR4ZVByb3RvY29sR3VpZCwgaW4NCj4+PiBvcmRl ciB0byBjcmVhdGUgdGhlIE1PUkwgdmFyaWFibGUsIHRoZW4gdGhhdCBjYWxsYmFjayBjb3VsZCBi ZSBpbnZva2VkDQo+Pj4gYWZ0ZXIgU21tRW5kT2ZEeGVDYWxsYmFjaygpLiBJIHRoaW5rIGl0IHdv dWxkIG5vdCBiZSBvcHRpbWFsIHRvIGNyZWF0ZQ0KPj4+IE1PUkwgYWZ0ZXIgU21tRW5kT2ZEeGVD YWxsYmFjaygpIGhhcyBydW4sIGV2ZW4gaWYgaXQgd29ya2VkLA0KPj4+IHRlY2huaWNhbGx5IHNw ZWFraW5nLiBUaGlzIHN1Z2dlc3RzIHRvIGhvb2sgdGhlIE1PUkwgY3JlYXRpb24gdG8gdGhlDQo+ Pj4gdG9wIG9mIFNtbUVuZE9mRHhlQ2FsbGJhY2soKS4gV2hhdCBkbyB5b3Ugc3VnZ2VzdD8NCj4+ Pg0KPj4+PiBBIHJlbWluZGVyIHRoYXQsIHRoZSBQUkMgdGVhbSB3aWxsIGhhdmUgdGhlIFBSQyBu YXRpb25hbCBob2xpZGF5IGluDQo+Pj4+IG5leHQgd2Vlay4gQXMgc3VjaCwgd2Ugd29uJ3QgaGF2 ZSB0b28gbXVjaCBhY3Rpdml0eSBpbiBuZXh0IHdlZWsuDQo+Pj4+DQo+Pj4+IElmIHlvdSBzdWJt aXQgdGhlIHBhdGNoLCBJIHdpbGwgdHJ5IHRvIHJldmlldyBpbiBuZXh0IHdlZWsgdG8gdW5ibG9j aw0KPj4+PiB0aGUgTGludXggd29yay4NCj4+Pg0KPj4+IEFoLCBzb3JyeSwgSSBoYXZlbid0IGJl ZW4gYXdhcmUgb2YgdGhlIGhvbGlkYXlzLg0KPj4+DQo+Pj4gSSBtaWdodCBzZW5kIGEgcGF0Y2gg c29vbiwgYnV0IHBsZWFzZSBkb24ndCBsZXQgbWUgZGlzdHVyYiB5b3UgZHVyaW5nDQo+Pj4gdGhl IGhvbGlkYXlzISBFc3BlY2lhbGx5IGJlY2F1c2UgdGhpcyBwYXRjaCBtaWdodCBuZWVkIG1vcmUg ZGlzY3Vzc2lvbg0KPj4+IGFuZCBtb3JlIHZlcnNpbnMuIEhvbGlkYXlzIGFyZSBmb3IgZ2V0dGlu ZyByZXN0ZWQgZnJvbSB3b3JrISA6KSBXZSBjYW4NCj4+PiBzb3J0IGl0IG91dCBhZnRlciB5b3Ug cmV0dXJuLg0KPj4+DQo+Pj4+IEluIHRoZSBwYXRjaCwgaWYgeW91IGNhbiBhZGQgdGhlIGRldGFp bGVkIHRlc3QgcmVzdWx0LCB0aGF0IHdpbGwgYmUNCj4+Pj4gdmVyeSBoZWxwZnVsIGZvciB1cy4g Rm9yIGV4YW1wbGUsIHRlc3QgU01NL25vbi1TTU0gdmVyc2lvbiwgdGVzdCB3aXRoDQo+Pj4+IE1P UiBwcmVzZW50L2Fic2VudCwgZXRjLg0KPj4+DQo+Pj4gRm9yIHRoZSAibm8gTU9SLCBubyBNT1JM IiBjYXNlLCBJJ2xsIGhhdmUgdG8gcmVseSBvbiBMYWRpLCBmb3IgdGVzdA0KPj4+IHJlc3VsdHMg KExhZGkgb2ZmZXJlZCB0byBoZWxwIHRlc3QgdGhhdCBjYXNlLCB0aGFua3MgYWdhaW4gZm9yIHRo YXQsDQo+Pj4gTGFkaSkuDQo+Pj4NCj4+PiBIb3dldmVyLCBmb3IgcmVncmVzc2lvbi10ZXN0aW5n IHRoZSAiYm90aCBNT1IgYW5kIE1PUkwiIGNhc2UsIEkgY2FuDQo+Pj4gb25seSByZWx5IG9uIElu dGVsIGRldmVsb3BlcnMgYW5kIHF1YWxpdHkgZW5naW5lZXJzIC0tIE9WTUYgZG9lc24ndA0KPj4+ IGhhdmUgYW55IFRQTSAvIE1PUiBzb2x1dGlvbiBhdCB0aGUgbW9tZW50LiAoSWYgd2UgaGFkIG9u ZSwgdGhlbiB3ZQ0KPj4+IHdvdWxkbid0IGhhdmUgZm91bmQgb3IgcmVwb3J0ZWQgdGhpcyBpc3N1 ZSBpbiB0aGUgZmlyc3QgcGxhY2UuIDopICkNCj4+Pg0KPj4+IFRoZSBmYWN0IHRoYXQgSSBjYW4n dCByZWdyZXNzaW9uLXRlc3QgdGhlIE1PUitNT1JMIGNhc2UgbXlzZWxmDQo+Pj4gc3VwcG9ydHMg dGhlIGlkZWEgdGhhdCB3ZSBzaG91bGQgcG9zdHBvbmUgdGhlIHJldmlldyBhbmQgY29tbWl0IChp Zg0KPj4+IGFwcHJvcHJpYXRlKSBvZiB0aGUgcGF0Y2ggdW50aWwgYWZ0ZXIgdGhlIFBSQyBuYXRp b25hbCBob2xpZGF5Lg0KPj4+DQo+Pj4gVGhhbmtzIQ0KPj4+IExhc3psbw0KPj4+DQo+Pj4NCj4+ Pj4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5v cmddIE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4+Pj4gU2VudDogRnJpZGF5LCBTZXB0ZW1i ZXIgMjksIDIwMTcgNzowNiBQTQ0KPj4+PiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50 ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRl bC5jb20lM2NtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+Pj4NCj4+Pj4gQ2M6IGVkazItZGV2 ZWwtMDEgPGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAx Lm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmclM2NtYWlsdG86ZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc+Pj4NCj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBtdWx0aXBsZSBsZXZlbHMg b2Ygc3VwcG9ydCBmb3IgTU9SIC8gTU9STG9jaw0KPj4+Pg0KPj4+Pj4gT24gMDkvMjkvMTcgMDM6 NTIsIFlhbywgSmlld2VuIHdyb3RlOg0KPj4+Pj4gVGhhbmtzIExhc3psby4NCj4+Pj4+DQo+Pj4+ PiBZZXMsIEkgYWdyZWUgaXQgaXMgYnVnLiBXb3VsZCB5b3UgcGxlYXNlIGhlbHAgdG8gZmlsZSBh IGJ1Z3ppbGFyIGluDQo+Pj4+PiBFREtJST8NCj4+Pj4+DQo+Pj4+PiBGb3IgdGhlIGZpeCwgSSB0 aGluayB3ZSBoYXZlIGEgd2F5IHRvIHJlc29sdmUgaXQgd2l0aG91dCBQQ0QuIChJIGRvDQo+Pj4+ PiBub3Qgd2FudCB0byBib3RoZXIgYSBwbGF0Zm9ybSBkZXZlbG9wZXIgdG8gc2V0IGEgbmV3IFBD RC4pDQo+Pj4+Pg0KPj4+Pj4gVGhlIG9ubHkgaW52YWxpZCBjYXNlIHdlIG5lZWQgaGFuZGxlIGlz OiBNT1IgaXMgYWJzZW50LCBidXQgTU9STCBpcw0KPj4+Pj4gcHJlc2VudC4NCj4+Pj4+DQo+Pj4+ PiBNeSB0aG91Z2h0IGlzIHRvIGxldCBWYXJpYWJsZSBkcml2ZXIgY2hlY2sgaWYgTU9SIGlzIHBy ZXNlbnQuDQo+Pj4+PiBWYXJpYWJsZSBkcml2ZXIgY2FuIGRlZmVyIHRoZSBNT1JMIHNldHRpbmcg YXQgRW5kT2ZEeGUgZXZlbnQgYmFzZWQNCj4+Pj4+IHVwb24gdGhlIHByZXNlbmNlIG9mIE1PUi4g SWYgTU9SIGRyaXZlciBpcyBwcmVzZW50LCBpdCBzZXRzIE1PUiBhdA0KPj4+Pj4gZW50cnlwb2lu dC4gRW5kT2ZEeGUgaXMgZ29vZCBlbm91Z2ggdG8ga25vdyB0aGUgc3RhdGUuDQo+Pj4+Pg0KPj4+ Pj4gQWxzbywgYmVjYXVzZSBFbmRPZkR4ZSBpcyBQSSBldmVudCwgdGhlIFVFRkkgT1MgaXMgbm90 IGF3YXJlIG9mDQo+Pj4+PiB0aGF0Lg0KPj4+Pg0KPj4+PiBTb3VuZHMgZ3JlYXQ7IHRoYW5rcyBh IGxvdCENCj4+Pj4NCj4+Pj4gSSd2ZSBmaWxlZDoNCj4+Pj4NCj4+Pj4gIGh0dHBzOi8vYnVnemls bGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3DQo+Pj4+DQo+Pj4+IElmIHBvc3Np YmxlIEknZCBsaWtlIHRoZSBmaXggdG8gYmUgY29tbWl0dGVkIHNvbWV0aW1lIG5leHQgd2Vlay4g SXMNCj4+Pj4gaXQgT0sgaWYgSSB0cnkgYW5kIHN1Ym1pdCBhIHBhdGNoIHNvb24/IE15IHBsYW4g aXMgdGhlIGZvbGxvd2luZzoNCj4+Pj4NCj4+Pj4gLSBJbiBNb3JMb2NrSW5pdCgpIFtUY2dNb3JM b2NrU21tLmNdLCBjYWxsDQo+Pj4+IGdTbXN0LT5TbW1SZWdpc3RlclByb3RvY29sTm90aWZ5KCkg aW4gb3JkZXIgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjaw0KPj4+PiBmb3IgZ0VmaVNtbUVuZE9mRHhl UHJvdG9jb2xHdWlkDQo+Pj4+DQo+Pj4+IC0gSW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCBjYWxs IFZhcmlhYmxlU2VydmljZUdldFZhcmlhYmxlKCksIHdpdGgNCj4+Pj4gc2l6ZSAwLCB0byBzZWUg aWYgTU9SIGlzIHByZXNlbnQgLS0gaWYgRUZJX0JVRkZFUl9UT09fU01BTEwgaXMNCj4+Pj4gcmV0 dXJuZWQsIE1PUiBpcyBwcmVzZW50OyBvdGhlcndpc2UgTU9SIGlzIGFic2VudC4NCj4+Pj4NCj4+ Pj4gLSBJZiBNT1IgaXMgcHJlc2VudCwgdGhlbiBjYWxsIFNldE1vckxvY2tWYXJpYWJsZSgwKSBm cm9tIHRoZQ0KPj4+PiBjYWxsYmFjayBmdW5jdGlvbjsgbGlrZSBNb3JMb2NrSW5pdCgpIGRvZXMg bm93LiBPdGhlcndpc2UsIGRvDQo+Pj4+IG5vdGhpbmcuDQo+Pj4+DQo+Pj4+IC0gSXQgbG9va3Mg bGlrZSB0aGVyZSBhcmUgbm8gY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBJIHNob3VsZA0KPj4+ PiBkZS1yZWdpc3RlciB0aGUgY2FsbGJhY2suIChJLmUuIGNhbGwgU21tUmVnaXN0ZXJQcm90b2Nv bE5vdGlmeSgpIHdpdGgNCj4+Pj4gYSBOVUxMIEZ1bmN0aW9uIGFyZ3VtZW50LikNCj4+Pj4NCj4+ Pj4NCj4+Pj4gTm93LCBJIGNhbiBzZWUgdGhhdCBWYXJpYWJsZVNtbS5jIGFscmVhZHkgaW5zdGFs bHMgc3VjaCBhIGNhbGxiYWNrIC0tDQo+Pj4+IFNtbUVuZE9mRHhlQ2FsbGJhY2soKS4gU2hvdWxk IEkgaG9vayBpbnRvIHRoYXQgY2FsbGJhY2sgZnVuY3Rpb24NCj4+Pj4gdGhyb3VnaCBhIG5ldyBC T09MRUFOIHZhcmlhYmxlLCBzdWNoIGFzICJtRGVsYXllZE1vckxvY2tJbml0IiAoYW5kDQo+Pj4+ IHRoZW4gTW9yTG9ja0luaXQoKSB3b3VsZCBvbmx5IHNldCB0aGlzIHZhcmlhYmxlIHRvIFRSVUUp LCBvciBzaG91bGQgSQ0KPj4+PiBpbnN0YWxsIGEgc2VwYXJhdGUgY2FsbGJhY2s/DQo+Pj4+DQo+ Pj4+IEVpdGhlciB3YXksIEkgZG9uJ3QgdGhpbmsgdGhhdCBJIHNob3VsZCBkbyB0aGUgTU9SL01P Ukwgc3R1ZmYgaW4gdGhlDQo+Pj4+IGN1cnJlbnQgU21tRW5kT2ZEeGVDYWxsYmFjaygpIGZ1bmN0 aW9uICp1bmNvbmRpdGlvbmFsbHkqLCBiZWNhdXNlDQo+Pj4+IHRoYXQgY2FsbGJhY2sgaXMgc2V0 IHVwIHdoZW4gdGhlICpyZWFkKiBoYWxmIG9mIHRoZSB2YXJpYWJsZSBzZXJ2aWNlcw0KPj4+PiBp cyBpbml0aWFsaXplZCwgYnV0IE1PUkwgb25seSBiZWNvbWVzIHJlbGV2YW50IHdoZW4gdGhlICp3 cml0ZSogaGFsZg0KPj4+PiBvZiB0aGUgdmFyaWFibGUgc2VydmljZXMgaXMgaW5pdGlhbGl6ZWQg KHdoaWNoIG9jY3VycyBpbiB0aGUNCj4+Pj4gU21tRnR3Tm90aWZpY2F0aW9uRXZlbnQoKSBjYWxs YmFjaywgaS5lLiB3aGVuIHRoZSBGYXVsdFRvbGVyYW50V3JpdGUNCj4+Pj4gU01NIHByb3RvY29s IGJlY29tZXMgYXZhaWxhYmxlKS4gSGVuY2UgSSB0aGluayB3ZSBuZWVkIGVpdGhlciBhDQo+Pj4+ IHNlcGFyYXRlIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiwgb3IgYSBuZXcgYm9vbGVhbiBmb3IgdGhl IGV4aXN0ZW50DQo+Pj4+IGNhbGxiYWNrLg0KPj4+Pg0KPj4+PiBUaGFua3MhDQo+Pj4+IExhc3ps bw0K