From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=chao.b.zhang@intel.com; receiver=edk2-devel@lists.01.org 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 5D6A5207DF28D for ; Tue, 3 Jul 2018 16:25:43 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jul 2018 16:25:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,306,1526367600"; d="scan'208,217";a="242767043" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga006.fm.intel.com with ESMTP; 03 Jul 2018 16:25:32 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Jul 2018 16:25:30 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Jul 2018 16:25:29 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.57]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.100]) with mapi id 14.03.0319.002; Wed, 4 Jul 2018 07:25:28 +0800 From: "Zhang, Chao B" To: Gary Lin CC: "edk2-devel@lists.01.org" , "Yao, Jiewen" , "Long, Qin" Thread-Topic: [edk2] [Patch 2/2] SecurityPkg: Tpm2DeviceLib: Enable CapCRBIdleBypass support Thread-Index: AQHUDD85lwsxi6yxo0SwiYLZm+ajIaRzQEEAgArxU2A= Date: Tue, 3 Jul 2018 23:25:27 +0000 Message-ID: References: <20180625044421.2028-1-chao.b.zhang@intel.com> <20180625044421.2028-3-chao.b.zhang@intel.com> <20180627081830.gvqh75toe74btbre@GaryWorkstation> In-Reply-To: <20180627081830.gvqh75toe74btbre@GaryWorkstation> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGQ2ZWZlZDItZmJhNy00NWZkLTk0ZWYtODQwYjUyYWM0M2I2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiNzI1TlllT0N0Q3FGSEdkQTJPVGNmSlYxa0tFOUlyVDR1a25HVndFaGVZRkRlS3hMRFlIb0ZGcG1DVlhFYXJqbSJ9 dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.26 Subject: Re: [Patch 2/2] SecurityPkg: Tpm2DeviceLib: Enable CapCRBIdleBypass support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 23:25:43 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgR2FyeToNCiAgIEl0IGlzIGNhdXNlZCBieSBjb2RlIG1lcmdlLiBUa3MgZm9yIG5vdGlmaWNh dGlvbi4gV2UgaGF2ZSBmaXhlZCBpdC4NCg0KRnJvbTogR2FyeSBMaW4gW21haWx0bzpnbGluQHN1 c2UuY29tXQ0KU2VudDogV2VkbmVzZGF5LCBKdW5lIDI3LCAyMDE4IDQ6MTkgUE0NClRvOiBaaGFu ZywgQ2hhbyBCIDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPg0KQ2M6IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnOyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBMb25nLCBRaW4gPHFp bi5sb25nQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMl0gW1BhdGNoIDIvMl0gU2VjdXJp dHlQa2c6IFRwbTJEZXZpY2VMaWI6IEVuYWJsZSBDYXBDUkJJZGxlQnlwYXNzIHN1cHBvcnQNCg0K T24gTW9uLCBKdW4gMjUsIDIwMTggYXQgMTI6NDQ6MjFQTSArMDgwMCwgWmhhbmcsIENoYW8gQiB3 cm90ZToNCj4gRGlyZWN0bHkgdHJhbnNpdGlvbiBmcm9tIENNRCBjb21wbGV0aW9uIHRvIENNRCBS ZWFkeSBzdGF0ZSBpZiBkZXZpY2UNCj4gc3VwcG9ydHMgSWRsZUJ5UGFzcw0KPg0KPiBDYzogTG9u ZyBRaW4gPHFpbi5sb25nQGludGVsLmNvbTxtYWlsdG86cWluLmxvbmdAaW50ZWwuY29tPj4NCj4g Q2M6IFlhbyBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGlu dGVsLmNvbT4+DQo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFn cmVlbWVudCAxLjENCj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBaaGFuZyA8Y2hhby5iLnpoYW5nQGlu dGVsLmNvbTxtYWlsdG86Y2hhby5iLnpoYW5nQGludGVsLmNvbT4+DQo+IFNpZ25lZC1vZmYtYnk6 IFpoYW5nLCBDaGFvIEIgPGNoYW8uYi56aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW8uYi56aGFu Z0BpbnRlbC5jb20+Pg0KPiAtLS0NCj4gIC4uLi9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1Rw bTJEZXZpY2VMaWJEVHBtLmMgIHwgMTkgKysrKysNCj4gIC4uLi9UcG0yRGV2aWNlTGliRFRwbS9U cG0yRGV2aWNlTGliRFRwbS5pbmYgICAgICAgIHwgIDEgKw0KPiAgLi4uL1RwbTJEZXZpY2VMaWJE VHBtL1RwbTJJbnN0YW5jZUxpYkRUcG0uYyAgICAgICAgfCAxOSArKysrKw0KPiAgLi4uL1RwbTJE ZXZpY2VMaWJEVHBtL1RwbTJJbnN0YW5jZUxpYkRUcG0uaW5mICAgICAgfCAgMyArLQ0KPiAgU2Vj dXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yUHRwLmMgICAgfCA5OCArKysr KysrKysrKysrKysrKysrLS0tDQo+ICBTZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kZWMgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwICsrKw0KPiAgU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cudW5p ICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0NCj4gIDcgZmlsZXMgY2hhbmdlZCwgMTQ2 IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvU2VjdXJp dHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yRGV2aWNlTGliRFRwbS5jIGIvU2Vj dXJpdHlQa2cvTGlicmFyeS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yRGV2aWNlTGliRFRwbS5jDQo+ IGluZGV4IDNmZWI2NGRmN2UuLmU2ZmU1NjNiNDAgMTAwNjQ0DQo+IC0tLSBhL1NlY3VyaXR5UGtn L0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRUcG0uYw0KPiArKysgYi9T ZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJEZXZpY2VMaWJEVHBtLmMN Cj4gQEAgLTI5LDEwICsyOSwyMiBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAgVFBNMl9QVFBf SU5URVJGQUNFX1RZUEUNCj4gIFRwbTJHZXRQdHBJbnRlcmZhY2UgKA0KPiAgICBJTiBWT0lEICpS ZWdpc3Rlcg0KPiAgICApOw0KPg0KPiArLyoqDQo+ICsgIFJldHVybiBQVFAgQ1JCIGludGVyZmFj ZSBJZGxlQnlQYXNzIHN0YXRlLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gUmVnaXN0ZXIgICAgICAg ICAgICAgICAgUG9pbnRlciB0byBQVFAgcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBQVFAg Q1JCIGludGVyZmFjZSBJZGxlQnlQYXNzIHN0YXRlLg0KPiArKiovDQo+ICtVSU5UOA0KPiArVHBt MkdldElkbGVCeVBhc3MgKA0KPiArICBJTiBWT0lEICpSZWdpc3Rlcg0KPiArICApOw0KPiArDQo+ ICAvKioNCj4gICAgVGhpcyBzZXJ2aWNlIGVuYWJsZXMgdGhlIHNlbmRpbmcgb2YgY29tbWFuZHMg dG8gdGhlIFRQTTIuDQo+DQo+ICAgIEBwYXJhbVtpbl0gICAgICBJbnB1dFBhcmFtZXRlckJsb2Nr U2l6ZSAgU2l6ZSBvZiB0aGUgVFBNMiBpbnB1dCBwYXJhbWV0ZXIgYmxvY2suDQo+ICAgIEBwYXJh bVtpbl0gICAgICBJbnB1dFBhcmFtZXRlckJsb2NrICAgICAgUG9pbnRlciB0byB0aGUgVFBNMiBp bnB1dCBwYXJhbWV0ZXIgYmxvY2suDQo+IEBAIC0xMzgsMTUgKzE1MCwyMiBAQCBFRklBUEkNCj4g IFRwbTJEZXZpY2VMaWJDb25zdHJ1Y3RvciAoDQo+ICAgIFZPSUQNCj4gICAgKQ0KPiAgew0KPiAg ICBUUE0yX1BUUF9JTlRFUkZBQ0VfVFlQRSAgUHRwSW50ZXJmYWNlOw0KPiArICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgSWRsZUJ5UGFzczsNCj4NCj4gICAgLy8NCj4gICAgLy8gQ2FjaGUgY3Vy cmVudCBhY3RpdmUgVHBtSW50ZXJmYWNlVHlwZSBvbmx5IHdoZW4gbmVlZGVkDQo+ICAgIC8vDQo+ ICAgIGlmIChQY2RHZXQ4KFBjZEFjdGl2ZVRwbUludGVyZmFjZVR5cGUpID09IDB4RkYpIHsNCj4g ICAgICBQdHBJbnRlcmZhY2UgPSBUcG0yR2V0UHRwSW50ZXJmYWNlICgoVk9JRCAqKSAoVUlOVE4p IFBjZEdldDY0IChQY2RUcG1CYXNlQWRkcmVzcykpOw0KPiAgICAgIFBjZFNldDhTKFBjZEFjdGl2 ZVRwbUludGVyZmFjZVR5cGUsIFB0cEludGVyZmFjZSk7DQo+ICAgIH0NCj4gKw0KPiArICBpZiAo UGNkR2V0OChQY2RBY3RpdmVUcG1JbnRlcmZhY2VUeXBlKSA9PSBQdHBJbnRlcmZhY2VDcmIgJiYg UGNkR2V0OChQY2RDUkJJZGxlQnlQYXNzKSA9PSAweEZGKSB7DQpJIGdvdCBhIGJ1aWxkIGVycm9y IHdpdGggUHRwSW50ZXJmYWNlQ3JiOg0KDQpTZWN1cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZpY2VM aWJEVHBtL1RwbTJEZXZpY2VMaWJEVHBtLmM6IEluIGZ1bmN0aW9uIOKAmFRwbTJEZXZpY2VMaWJD b25zdHJ1Y3RvcuKAmToNClNlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBt MkRldmljZUxpYkRUcG0uYzoxNjU6NDU6IGVycm9yOiDigJhQdHBJbnRlcmZhY2VDcmLigJkgdW5k ZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4g4oCYUHRw SW50ZXJmYWNl4oCZPw0KICAgaWYgKFBjZEdldDgoUGNkQWN0aXZlVHBtSW50ZXJmYWNlVHlwZSkg PT0gUHRwSW50ZXJmYWNlQ3JiICYmIFBjZEdldDgoUGNkQ1JCSWRsZUJ5UGFzcykgPT0gMHhGRikg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+ fn5+fn5+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdHBJ bnRlcmZhY2UNCg0KSSBhc3N1bWUgeW91IG1lYW4gVHBtMlB0cEludGVyZmFjZUNyYj8NCg0KQ2hl ZXJzLA0KDQpHYXJ5IExpbg0KDQo+ICsgICAgSWRsZUJ5UGFzcyA9IFRwbTJHZXRJZGxlQnlQYXNz KChWT0lEICopIChVSU5UTikgUGNkR2V0NjQgKFBjZFRwbUJhc2VBZGRyZXNzKSk7DQo+ICsgICAg UGNkU2V0OFMoUGNkQ1JCSWRsZUJ5UGFzcywgSWRsZUJ5UGFzcyk7DQo+ICsgIH0NCj4gKw0KPiAg ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9M aWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJEZXZpY2VMaWJEVHBtLmluZiBiL1NlY3VyaXR5 UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRUcG0uaW5mDQo+IGlu ZGV4IDYzNGJiYWU4NDcuLjJlNTRhNzhjYzAgMTAwNjQ0DQo+IC0tLSBhL1NlY3VyaXR5UGtnL0xp YnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRUcG0uaW5mDQo+ICsrKyBiL1Nl Y3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkRldmljZUxpYkRUcG0uaW5m DQo+IEBAIC01Myw1ICs1Myw2IEBADQo+ICAgIFBjZExpYg0KPg0KPiAgW1BjZF0NCj4gICAgZ0Vm aVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQuUGNkVHBtQmFzZUFkZHJlc3MgICAgICAgICAgICAj IyBDT05TVU1FUw0KPiAgICBnRWZpU2VjdXJpdHlQa2dUb2tlblNwYWNlR3VpZC5QY2RBY3RpdmVU cG1JbnRlcmZhY2VUeXBlICAgICMjIFBST0RVQ0VTDQo+ICsgIGdFZmlTZWN1cml0eVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZENSQklkbGVCeVBhc3MgICAgICAgICAgICAgIyMgUFJPRFVDRVMNCj4gXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9MaWJy YXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJJbnN0YW5jZUxpYkRUcG0uYyBiL1NlY3VyaXR5UGtn L0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkluc3RhbmNlTGliRFRwbS5jDQo+IGluZGV4 IDAxZjc4YmYwYmUuLmVkY2RiNzJhNzkgMTAwNjQ0DQo+IC0tLSBhL1NlY3VyaXR5UGtnL0xpYnJh cnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkluc3RhbmNlTGliRFRwbS5jDQo+ICsrKyBiL1NlY3Vy aXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkluc3RhbmNlTGliRFRwbS5jDQo+ IEBAIC0zMiwxMCArMzIsMjIgQEAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gIFRQTTJfUFRQX0lO VEVSRkFDRV9UWVBFDQo+ICBUcG0yR2V0UHRwSW50ZXJmYWNlICgNCj4gICAgSU4gVk9JRCAqUmVn aXN0ZXINCj4gICAgKTsNCj4NCj4gKy8qKg0KPiArICBSZXR1cm4gUFRQIENSQiBpbnRlcmZhY2Ug SWRsZUJ5UGFzcyBzdGF0ZS4NCj4gKw0KPiArICBAcGFyYW1baW5dIFJlZ2lzdGVyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gUFRQIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gUFRQIENS QiBpbnRlcmZhY2UgSWRsZUJ5UGFzcyBzdGF0ZS4NCj4gKyoqLw0KPiArVUlOVDgNCj4gK1RwbTJH ZXRJZGxlQnlQYXNzICgNCj4gKyAgSU4gVk9JRCAqUmVnaXN0ZXINCj4gKyAgKTsNCj4gKw0KPiAg LyoqDQo+ICAgIER1bXAgUFRQIHJlZ2lzdGVyIGluZm9ybWF0aW9uLg0KPg0KPiAgICBAcGFyYW1b aW5dIFJlZ2lzdGVyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gUFRQIHJlZ2lzdGVyLg0KPiAg KiovDQo+IEBAIC05NSwxMCArMTA3LDExIEBAIFRwbTJJbnN0YW5jZUxpYkRUcG1Db25zdHJ1Y3Rv ciAoDQo+ICAgIFZPSUQNCj4gICAgKQ0KPiAgew0KPiAgICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiAgICBUUE0yX1BUUF9JTlRFUkZBQ0VfVFlQRSAgUHRwSW50ZXJmYWNlOw0K PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgSWRsZUJ5UGFzczsNCj4NCj4gICAgU3RhdHVz ID0gVHBtMlJlZ2lzdGVyVHBtMkRldmljZUxpYiAoJm1EVHBtMkludGVybmFsVHBtMkRldmljZSk7 DQo+ICAgIGlmICgoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB8fCAoU3RhdHVzID09IEVGSV9VTlNV UFBPUlRFRCkpIHsNCj4gICAgICAvLw0KPiAgICAgIC8vIFVuc3VwcG9ydGVkIG1lYW5zIHBsYXRm b3JtIHBvbGljeSBkb2VzIG5vdCBuZWVkIHRoaXMgaW5zdGFuY2UgZW5hYmxlZC4NCj4gQEAgLTEw OSwxMCArMTIyLDE2IEBAIFRwbTJJbnN0YW5jZUxpYkRUcG1Db25zdHJ1Y3RvciAoDQo+ICAgICAg ICAvLw0KPiAgICAgICAgaWYgKFBjZEdldDgoUGNkQWN0aXZlVHBtSW50ZXJmYWNlVHlwZSkgPT0g MHhGRikgew0KPiAgICAgICAgICBQdHBJbnRlcmZhY2UgPSBUcG0yR2V0UHRwSW50ZXJmYWNlICgo Vk9JRCAqKSAoVUlOVE4pIFBjZEdldDY0IChQY2RUcG1CYXNlQWRkcmVzcykpOw0KPiAgICAgICAg ICBQY2RTZXQ4UyhQY2RBY3RpdmVUcG1JbnRlcmZhY2VUeXBlLCBQdHBJbnRlcmZhY2UpOw0KPiAg ICAgICAgfQ0KPiArDQo+ICsgICAgICBpZiAoUGNkR2V0OChQY2RBY3RpdmVUcG1JbnRlcmZhY2VU eXBlKSA9PSBQdHBJbnRlcmZhY2VDcmIgJiYgUGNkR2V0OChQY2RDUkJJZGxlQnlQYXNzKSA9PSAw eEZGKSB7DQo+ICsgICAgICAgIElkbGVCeVBhc3MgPSBUcG0yR2V0SWRsZUJ5UGFzcygoVk9JRCAq KSAoVUlOVE4pIFBjZEdldDY0IChQY2RUcG1CYXNlQWRkcmVzcykpOw0KPiArICAgICAgICBQY2RT ZXQ4UyhQY2RDUkJJZGxlQnlQYXNzLCBJZGxlQnlQYXNzKTsNCj4gKyAgICAgIH0NCj4gKw0KPiAg ICAgICAgRHVtcFB0cEluZm8gKChWT0lEICopIChVSU5UTikgUGNkR2V0NjQgKFBjZFRwbUJhc2VB ZGRyZXNzKSk7DQo+ICAgICAgfQ0KPiAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gICAgfQ0K PiAgICByZXR1cm4gU3RhdHVzOw0KPiBkaWZmIC0tZ2l0IGEvU2VjdXJpdHlQa2cvTGlicmFyeS9U cG0yRGV2aWNlTGliRFRwbS9UcG0ySW5zdGFuY2VMaWJEVHBtLmluZiBiL1NlY3VyaXR5UGtnL0xp YnJhcnkvVHBtMkRldmljZUxpYkRUcG0vVHBtMkluc3RhbmNlTGliRFRwbS5pbmYNCj4gaW5kZXgg ODc2YTVhNjNjNC4uMjRlNGMzNWQ1NSAxMDA2NDQNCj4gLS0tIGEvU2VjdXJpdHlQa2cvTGlicmFy eS9UcG0yRGV2aWNlTGliRFRwbS9UcG0ySW5zdGFuY2VMaWJEVHBtLmluZg0KPiArKysgYi9TZWN1 cml0eVBrZy9MaWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJJbnN0YW5jZUxpYkRUcG0uaW5m DQo+IEBAIC00OCw2ICs0OCw3IEBADQo+ICAgIERlYnVnTGliDQo+ICAgIFBjZExpYg0KPg0KPiAg W1BjZF0NCj4gICAgZ0VmaVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQuUGNkVHBtQmFzZUFkZHJl c3MgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gLSAgZ0VmaVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1 aWQuUGNkQWN0aXZlVHBtSW50ZXJmYWNlVHlwZSAgIyMgUFJPRFVDRVMNCj4gXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlDQo+ICsgIGdFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEFj dGl2ZVRwbUludGVyZmFjZVR5cGUgICMjIFBST0RVQ0VTDQo+ICsgIGdFZmlTZWN1cml0eVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZENSQklkbGVCeVBhc3MgICAgICAgICAgICAgIyMgUFJPRFVDRVMNCj4g XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9TZWN1cml0eVBrZy9M aWJyYXJ5L1RwbTJEZXZpY2VMaWJEVHBtL1RwbTJQdHAuYyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkv VHBtMkRldmljZUxpYkRUcG0vVHBtMlB0cC5jDQo+IGluZGV4IDFiYzE1M2EyYzAuLjViY2U5Zjhl MDIgMTAwNjQ0DQo+IC0tLSBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0v VHBtMlB0cC5jDQo+ICsrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtMkRldmljZUxpYkRUcG0v VHBtMlB0cC5jDQo+IEBAIC0xNzIsMTQgKzE3MiwzNCBAQCBQdHBDcmJUcG1Db21tYW5kICgNCj4g ICAgICAgICAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiJTAyeCAiLCBCdWZmZXJJbltJbmRleF0p KTsNCj4gICAgICAgIH0NCj4gICAgICB9DQo+ICAgICAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAi XG4iKSk7DQo+ICAgICk7DQo+IC0gIFRwbU91dFNpemUgPSAwOw0KPiArICBUcG1PdXRTaXplICAg ICAgICAgPSAwOw0KPg0KPiAgICAvLw0KPiAgICAvLyBTVEVQIDA6DQo+ICsgIC8vIGlmIENhcENS YklkZWxCeVBhc3MgPT0gMCwgZW5mb3JjZSBJZGxlIHN0YXRlIGJlZm9yZSBzZW5kaW5nIGNvbW1h bmQNCj4gKyAgLy8NCj4gKyAgaWYgKFBjZEdldDgoUGNkQ1JCSWRsZUJ5UGFzcykgPT0gMCAmJiAo TW1pb1JlYWQzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFN0YXR1cykgJiBQVFBfQ1JCX0NP TlRST0xfQVJFQV9TVEFUVVNfVFBNX0lETEUpID09IDApew0KPiArICAgIFN0YXR1cyA9IFB0cENy YldhaXRSZWdpc3RlckJpdHMgKA0KPiArICAgICAgICAgICAgICAmQ3JiUmVnLT5DcmJDb250cm9s U3RhdHVzLA0KPiArICAgICAgICAgICAgICBQVFBfQ1JCX0NPTlRST0xfQVJFQV9TVEFUVVNfVFBN X0lETEUsDQo+ICsgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIFBUUF9USU1FT1VU X0MNCj4gKyAgICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gVHJ5IHRvIGdvSWRsZSB0byByZWNvdmVyIFRQTQ0K PiArICAgICAgLy8NCj4gKyAgICAgIFN0YXR1cyA9IEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsgICAg ICBnb3RvIEdvSWRsZV9FeGl0Ow0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIFNURVAgMToNCj4gICAgLy8gUmVhZHkgaXMgYW55IHRpbWUgdGhlIFRQTSBpcyByZWFkeSB0 byByZWNlaXZlIGEgY29tbWFuZCwgZm9sbG93aW5nIGEgd3JpdGUNCj4gICAgLy8gb2YgMSBieSBz b2Z0d2FyZSB0byBSZXF1ZXN0LmNtZFJlYWR5LCBhcyBpbmRpY2F0ZWQgYnkgdGhlIFN0YXR1cyBm aWVsZA0KPiAgICAvLyBiZWluZyBjbGVhcmVkIHRvIDAuDQo+ICAgIC8vDQo+ICAgIE1taW9Xcml0 ZTMyKChVSU5UTikmQ3JiUmVnLT5DcmJDb250cm9sUmVxdWVzdCwgUFRQX0NSQl9DT05UUk9MX0FS RUFfUkVRVUVTVF9DT01NQU5EX1JFQURZKTsNCj4gQEAgLTE4OSwyNSArMjA5LDI1IEBAIFB0cENy YlRwbUNvbW1hbmQgKA0KPiAgICAgICAgICAgICAgIFBUUF9DUkJfQ09OVFJPTF9BUkVBX1JFUVVF U1RfQ09NTUFORF9SRUFEWSwNCj4gICAgICAgICAgICAgICBQVFBfVElNRU9VVF9DDQo+ICAgICAg ICAgICAgICAgKTsNCj4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAgICAgIFN0YXR1 cyA9IEVGSV9ERVZJQ0VfRVJST1I7DQo+IC0gICAgZ290byBFeGl0Ow0KPiArICAgIGdvdG8gR29J ZGxlX0V4aXQ7DQo+ICAgIH0NCj4gICAgU3RhdHVzID0gUHRwQ3JiV2FpdFJlZ2lzdGVyQml0cyAo DQo+ICAgICAgICAgICAgICAgJkNyYlJlZy0+Q3JiQ29udHJvbFN0YXR1cywNCj4gICAgICAgICAg ICAgICAwLA0KPiAgICAgICAgICAgICAgIFBUUF9DUkJfQ09OVFJPTF9BUkVBX1NUQVRVU19UUE1f SURMRSwNCj4gICAgICAgICAgICAgICBQVFBfVElNRU9VVF9DDQo+ICAgICAgICAgICAgICAgKTsN Cj4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAgICAgIFN0YXR1cyA9IEVGSV9ERVZJ Q0VfRVJST1I7DQo+IC0gICAgZ290byBFeGl0Ow0KPiArICAgIGdvdG8gR29JZGxlX0V4aXQ7DQo+ ICAgIH0NCj4NCj4gICAgLy8NCj4gLSAgLy8gU1RFUCAxOg0KPiArICAvLyBTVEVQIDI6DQo+ICAg IC8vIENvbW1hbmQgUmVjZXB0aW9uIG9jY3VycyBmb2xsb3dpbmcgYSBSZWFkeSBzdGF0ZSBiZXR3 ZWVuIHRoZSB3cml0ZSBvZiB0aGUNCj4gICAgLy8gZmlyc3QgYnl0ZSBvZiBhIGNvbW1hbmQgdG8g dGhlIENvbW1hbmQgQnVmZmVyIGFuZCB0aGUgcmVjZWlwdCBvZiBhIHdyaXRlDQo+ICAgIC8vIG9m IDEgdG8gU3RhcnQuDQo+ICAgIC8vDQo+ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFNpemVJ bjsgSW5kZXgrKykgew0KPiBAQCAtMjE5LDExICsyMzksMTEgQEAgUHRwQ3JiVHBtQ29tbWFuZCAo DQo+DQo+ICAgIE1taW9Xcml0ZTY0ICgoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlc3BvbnNl QWRkcnNzLCAoVUlOVDMyKShVSU5UTilDcmJSZWctPkNyYkRhdGFCdWZmZXIpOw0KPiAgICBNbWlv V3JpdGUzMiAoKFVJTlROKSZDcmJSZWctPkNyYkNvbnRyb2xSZXNwb25zZVNpemUsIHNpemVvZihD cmJSZWctPkNyYkRhdGFCdWZmZXIpKTsNCj4NCj4gICAgLy8NCj4gLSAgLy8gU1RFUCAyOg0KPiAr ICAvLyBTVEVQIDM6DQo+ICAgIC8vIENvbW1hbmQgRXhlY3V0aW9uIG9jY3VycyBhZnRlciByZWNl aXB0IG9mIGEgMSB0byBTdGFydCBhbmQgdGhlIFRQTQ0KPiAgICAvLyBjbGVhcmluZyBTdGFydCB0 byAwLg0KPiAgICAvLw0KPiAgICBNbWlvV3JpdGUzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJv bFN0YXJ0LCBQVFBfQ1JCX0NPTlRST0xfU1RBUlQpOw0KPiAgICBTdGF0dXMgPSBQdHBDcmJXYWl0 UmVnaXN0ZXJCaXRzICgNCj4gQEAgLTI0OSwxNiArMjY5LDE2IEBAIFB0cENyYlRwbUNvbW1hbmQg KA0KPiAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiAgICAgICAgLy8NCj4gICAgICAg IC8vIFN0aWxsIGluIENvbW1hbmQgRXhlY3V0aW9uIHN0YXRlLiBUcnkgdG8gZ29JZGxlLCB0aGUg YmVoYXZpb3IgaXMgYWdub3N0aWMuDQo+ICAgICAgICAvLw0KPiAgICAgICAgU3RhdHVzID0gRUZJ X0RFVklDRV9FUlJPUjsNCj4gLSAgICAgIGdvdG8gRXhpdDsNCj4gKyAgICAgIGdvdG8gR29JZGxl X0V4aXQ7DQo+ICAgICAgfQ0KPiAgICB9DQo+DQo+ICAgIC8vDQo+IC0gIC8vIFNURVAgMzoNCj4g KyAgLy8gU1RFUCA0Og0KPiAgICAvLyBDb21tYW5kIENvbXBsZXRpb24gb2NjdXJzIGFmdGVyIGNv bXBsZXRpb24gb2YgYSBjb21tYW5kIChpbmRpY2F0ZWQgYnkgdGhlDQo+ICAgIC8vIFRQTSBjbGVh cmluZyBUUE1fQ1JCX0NUUkxfU3RhcnRfeCB0byAwKSBhbmQgYmVmb3JlIGEgd3JpdGUgb2YgYSAx IGJ5IHRoZQ0KPiAgICAvLyBzb2Z0d2FyZSB0byBSZXF1ZXN0LmdvSWRsZS4NCj4gICAgLy8NCj4N Cj4gQEAgLTI4MSw0MCArMzAxLDcyIEBAIFB0cENyYlRwbUNvbW1hbmQgKA0KPiAgICBDb3B5TWVt ICgmRGF0YTE2LCBCdWZmZXJPdXQsIHNpemVvZiAoVUlOVDE2KSk7DQo+ICAgIC8vIFRQTTIgc2hv dWxkIG5vdCB1c2UgdGhpcyBSU1BfQ09NTUFORA0KPiAgICBpZiAoU3dhcEJ5dGVzMTYgKERhdGEx NikgPT0gVFBNX1NUX1JTUF9DT01NQU5EKSB7DQo+ICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwg IlRQTTI6IFRQTV9TVF9SU1AgZXJyb3IgLSAleFxuIiwgVFBNX1NUX1JTUF9DT01NQU5EKSk7DQo+ ICAgICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiAtICAgIGdvdG8gRXhpdDsNCj4gKyAg ICBnb3RvIEdvSWRsZV9FeGl0Ow0KPiAgICB9DQo+DQo+ICAgIENvcHlNZW0gKCZEYXRhMzIsIChC dWZmZXJPdXQgKyAyKSwgc2l6ZW9mIChVSU5UMzIpKTsNCj4gICAgVHBtT3V0U2l6ZSAgPSBTd2Fw Qnl0ZXMzMiAoRGF0YTMyKTsNCj4gICAgaWYgKCpTaXplT3V0IDwgVHBtT3V0U2l6ZSkgew0KPiAr ICAgIC8vDQo+ICsgICAgLy8gQ29tbWFuZCBjb21wbGV0ZWQsIGJ1dCBidWZmZXIgaXMgbm90IGVu b3VnaA0KPiArICAgIC8vDQo+ICAgICAgU3RhdHVzID0gRUZJX0JVRkZFUl9UT09fU01BTEw7DQo+ IC0gICAgZ290byBFeGl0Ow0KPiArICAgIGdvdG8gR29SZWFkeV9FeGl0Ow0KPiAgICB9DQo+ICAg ICpTaXplT3V0ID0gVHBtT3V0U2l6ZTsNCj4gICAgLy8NCj4gICAgLy8gQ29udGludWUgcmVhZGlu ZyB0aGUgcmVtYWluaW5nIGRhdGENCj4gICAgLy8NCj4gICAgZm9yIChJbmRleCA9IHNpemVvZiAo VFBNMl9SRVNQT05TRV9IRUFERVIpOyBJbmRleCA8IFRwbU91dFNpemU7IEluZGV4KyspIHsNCj4g ICAgICBCdWZmZXJPdXRbSW5kZXhdID0gTW1pb1JlYWQ4ICgoVUlOVE4pJkNyYlJlZy0+Q3JiRGF0 YUJ1ZmZlcltJbmRleF0pOw0KPiAgICB9DQo+IC1FeGl0Og0KPiArDQo+ICAgIERFQlVHX0NPREUg KA0KPiAgICAgIERFQlVHICgoRUZJX0RfVkVSQk9TRSwgIlB0cENyYlRwbUNvbW1hbmQgUmVjZWl2 ZSAtICIpKTsNCj4gICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBUcG1PdXRTaXplOyBJbmRl eCsrKSB7DQo+ICAgICAgICBERUJVRyAoKEVGSV9EX1ZFUkJPU0UsICIlMDJ4ICIsIEJ1ZmZlck91 dFtJbmRleF0pKTsNCj4gICAgICB9DQo+ICAgICAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiXG4i KSk7DQo+ICAgICk7DQo+DQo+ICtHb1JlYWR5X0V4aXQ6DQo+ICAgIC8vDQo+IC0gIC8vIFNURVAg NDoNCj4gLSAgLy8gSWRsZSBpcyBhbnkgdGltZSBUUE1fQ1JCX0NUUkxfU1RTX3guU3RhdHVzLmdv SWRsZSBpcyAxLg0KPiArICAvLyBHb3RvIFJlYWR5IFN0YXRlIGlmIGNvbW1hbmQgaXMgY29tcGxl dGVkIHN1Y2Nlc2Z1bGx5IGFuZCBUUE0gc3VwcG9ydCBJZGxlQnlwYXNzDQo+ICsgIC8vIElmIG5v dCBzdXBwb3J0ZWQuIGZsb3cgZG93biB0byBHb0lkbGUNCj4gKyAgLy8NCj4gKyAgaWYgKFBjZEdl dDgoUGNkQ1JCSWRsZUJ5UGFzcykgPT0gMSkgew0KPiArICAgIE1taW9Xcml0ZTMyKChVSU5UTikm Q3JiUmVnLT5DcmJDb250cm9sUmVxdWVzdCwgUFRQX0NSQl9DT05UUk9MX0FSRUFfUkVRVUVTVF9D T01NQU5EX1JFQURZKTsNCj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8NCj4gKyAgLy8gRG8gbm90IHdhaXQgZm9yIHN0YXRlIHRyYW5zaXRpb24gZm9yIFRJTUVPVVRf Qw0KPiArICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIHdhaXQgMiBUSU1FT1VUX0MgYXQg dGhlIGJlZ2lubmluZyBpbiBuZXh0IGNhbGwuDQo+ICsgIC8vDQo+ICtHb0lkbGVfRXhpdDoNCj4g Kw0KPiArICAvLw0KPiArICAvLyAgUmV0dXJuIHRvIElkbGUgc3RhdGUgYnkgc2V0dGluZyBUUE1f Q1JCX0NUUkxfU1RTX3guU3RhdHVzLmdvSWRsZSB0byAxLg0KPiAgICAvLw0KPiAgICBNbWlvV3Jp dGUzMigoVUlOVE4pJkNyYlJlZy0+Q3JiQ29udHJvbFJlcXVlc3QsIFBUUF9DUkJfQ09OVFJPTF9B UkVBX1JFUVVFU1RfR09fSURMRSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gT25seSBlbmZvcmNl IElkbGUgc3RhdGUgdHJhbnNpdGlvbiBpZiBleGVjdXRpb24gZmFpbHMgd2hlbiBDUkJJbmRsZUJ5 cGFzcz09MQ0KPiArICAvLyBMZWF2ZSByZWd1bGFyIElkbGUgZGVsYXkgYXQgdGhlIGJlZ2lubmlu ZyBvZiBuZXh0IGNvbW1hbmQgZXhlY3V0aW9uDQo+ICsgIC8vDQo+ICsgIGlmIChQY2RHZXQ4KFBj ZENSQklkbGVCeVBhc3MpID09IDEpew0KPiArICAgIFN0YXR1cyA9IFB0cENyYldhaXRSZWdpc3Rl ckJpdHMgKA0KPiArICAgICAgICAgICAgICAgJkNyYlJlZy0+Q3JiQ29udHJvbFN0YXR1cywNCj4g KyAgICAgICAgICAgICAgIFBUUF9DUkJfQ09OVFJPTF9BUkVBX1NUQVRVU19UUE1fSURMRSwNCj4g KyAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgICBQVFBfVElNRU9VVF9DDQo+ICsg ICAgICAgICAgICAgICApOw0KPiArICB9DQo+ICsNCj4gICAgcmV0dXJuIFN0YXR1czsNCj4gIH0N Cj4NCj4gIC8qKg0KPiAgICBTZW5kIGEgY29tbWFuZCB0byBUUE0gZm9yIGV4ZWN1dGlvbiBhbmQg cmV0dXJuIHJlc3BvbnNlIGRhdGEuDQo+IEBAIC0zOTIsMTAgKzQ0NCwzMiBAQCBUcG0yR2V0UHRw SW50ZXJmYWNlICgNCj4gICAgICByZXR1cm4gVHBtMlB0cEludGVyZmFjZUZpZm87DQo+ICAgIH0N Cj4gICAgcmV0dXJuIFRwbTJQdHBJbnRlcmZhY2VUaXM7DQo+ICB9DQo+DQo+ICsvKioNCj4gKyAg UmV0dXJuIFBUUCBDUkIgaW50ZXJmYWNlIElkbGVCeVBhc3Mgc3RhdGUuDQo+ICsNCj4gKyAgQHBh cmFtW2luXSBSZWdpc3RlciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIFBUUCByZWdpc3Rlci4N Cj4gKw0KPiArICBAcmV0dXJuIFBUUCBDUkIgaW50ZXJmYWNlIElkbGVCeVBhc3Mgc3RhdGUuDQo+ ICsqKi8NCj4gK1VJTlQ4DQo+ICtUcG0yR2V0SWRsZUJ5UGFzcyAoDQo+ICsgIElOIFZPSUQgKlJl Z2lzdGVyDQo+ICsgICkNCj4gK3sNCj4gKyAgUFRQX0NSQl9JTlRFUkZBQ0VfSURFTlRJRklFUiAg SW50ZXJmYWNlSWQ7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2hlY2sgaW50ZXJmYWNlIGlkDQo+ ICsgIC8vDQo+ICsgIEludGVyZmFjZUlkLlVpbnQzMiA9IE1taW9SZWFkMzIgKChVSU5UTikmKChQ VFBfQ1JCX1JFR0lTVEVSUyAqKVJlZ2lzdGVyKS0+SW50ZXJmYWNlSWQpOw0KPiArDQo+ICsgIHJl dHVybiAoVUlOVDgpKEludGVyZmFjZUlkLkJpdHMuQ2FwQ1JCSWRsZUJ5cGFzcyk7DQo+ICt9DQo+ ICsNCj4gIC8qKg0KPiAgICBEdW1wIFBUUCByZWdpc3RlciBpbmZvcm1hdGlvbi4NCj4NCj4gICAg QHBhcmFtW2luXSBSZWdpc3RlciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIFBUUCByZWdpc3Rl ci4NCj4gICoqLw0KPiBkaWZmIC0tZ2l0IGEvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjIGIv U2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjDQo+IGluZGV4IDYwZjFjMGEwZTMuLmUyNGI1NjNi ZGIgMTAwNjQ0DQo+IC0tLSBhL1NlY3VyaXR5UGtnL1NlY3VyaXR5UGtnLmRlYw0KPiArKysgYi9T ZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kZWMNCj4gQEAgLTQ3Miw3ICs0NzIsMTcgQEANCj4gICAg IyAgMHhGRiAtIENvbnRhaW5zIG5vIGN1cnJlbnQgYWN0aXZlIFRQTSBpbnRlcmZhY2UgdHlwZS48 QlI+DQo+ICAgICMNCj4gICAgIyBAUHJvbXB0IGN1cnJlbnQgYWN0aXZlIFRQTSBpbnRlcmZhY2Ug dHlwZS4NCj4gICAgZ0VmaVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQuUGNkQWN0aXZlVHBtSW50 ZXJmYWNlVHlwZXwweEZGfFVJTlQ4fDB4MDAwMTAwMUUNCj4NCj4gKyAgIyMgVGhpcyBQQ0QgcmVj b3JkcyBJZGxlQnlhc3Mgc3RhdHVzIHN1cHBvcnRlZCBieSBjdXJyZW50IGFjdGl2ZSBUUE0gaW50 ZXJmYWNlLg0KPiArICAjICBBY2NvZGluZ3QgdG8gVENHIFBUUCBzcGVjIDEuMywgVFBNIHdpdGgg Q1JCIGludGVyZmFjZSBjYW4gc2tpcCBpZGxlIHN0YXRlIGFuZA0KPiArICAjICBkaXJldGNseSBt b3ZlIHRvIENtZFJlYWR5IHN0YXRlLiA8QlI+DQo+ICsgICMgIDB4MDAgLSBEbyBub3Qgc3VwcG9y dCBJZGxlQnlQYXNzLjxCUj4NCj4gKyAgIyAgMHgwMSAtIFN1cHBvcnQgSWRsZUJ5UGFzcy48QlI+ DQo+ICsgICMgIDB4RkYgLSBJZGxlQnlQYXNzIFN0YXRlIGlzIG5vdCBzeW5jZWQgd2l0aCBUUE0g aGFyZHdhcmUuPEJSPg0KPiArICAjDQo+ICsgICMgQFByb21wdCBJZGxlQnlhc3Mgc3RhdHVzIHN1 cHBvcnRlZCBieSBjdXJyZW50IGFjdGl2ZSBUUE0gaW50ZXJmYWNlLg0KPiArICBnRWZpU2VjdXJp dHlQa2dUb2tlblNwYWNlR3VpZC5QY2RDUkJJZGxlQnlQYXNzfDB4RkZ8VUlOVDh8MHgwMDAxMDAx Rg0KPiArDQo+ICBbVXNlckV4dGVuc2lvbnMuVGlhbm9Db3JlLiJFeHRyYUZpbGVzIl0NCj4gICAg U2VjdXJpdHlQa2dFeHRyYS51bmkNCj4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL1NlY3VyaXR5 UGtnLnVuaSBiL1NlY3VyaXR5UGtnL1NlY3VyaXR5UGtnLnVuaQ0KPiBpbmRleCBjMzQyNTBlNDIz Li4wMDBiYzgzZDgwIDEwMDY0NA0KPiAtLS0gYS9TZWN1cml0eVBrZy9TZWN1cml0eVBrZy51bmkN Cj4gKysrIGIvU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cudW5pDQo+IEBAIC0yNTIsNiArMjUyLDE0 IEBADQo+DQo+ICAjc3RyaW5nIFNUUl9nRWZpU2VjdXJpdHlQa2dUb2tlblNwYWNlR3VpZF9QY2RB Y3RpdmVUcG1JbnRlcmZhY2VUeXBlX0hFTFAgICNsYW5ndWFnZSBlbi1VUyAiVGhpcyBQQ0QgaW5k aWNhdGVzIGN1cnJlbnQgYWN0aXZlIFRQTSBpbnRlcmZhY2UgdHlwZS5cbiINCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIweDAwIC0gRklGTyBpbnRlcmZhY2UgYXMgZGVmaW5l ZCBpbiBUSVMgMS4zIGlzIGFjdGl2ZS48QlI+XG4iDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiMHgwMSAtIEZJRk8gaW50ZXJmYWNlIGFzIGRlZmluZWQgaW4gUFRQIGZvciBU UE0gMi4wIGlzIGFjdGl2ZS48QlI+XG4iDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiMHgwMiAtIENSQiBpbnRlcmZhY2UgaXMgYWN0aXZlLjxCUj5cbiINCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIweEZGIC0gQ29udGFpbnMgbm8gY3VycmVudCBhY3Rp dmUgVFBNIGludGVyZmFjZSB0eXBlPEJSPiINCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMHhGRiAtIENvbnRhaW5zIG5v IGN1cnJlbnQgYWN0aXZlIFRQTSBpbnRlcmZhY2UgdHlwZTxCUj4iDQo+ICsNCj4gKyNzdHJpbmcg U1RSX2dFZmlTZWN1cml0eVBrZ1Rva2VuU3BhY2VHdWlkX1BjZENSQklkbGVCeVBhc3NfUFJPTVBU ICAjbGFuZ3VhZ2UgZW4tVVMgIklkbGVCeWFzcyBzdGF0dXMgc3VwcG9ydGVkIGJ5IGN1cnJlbnQg YWN0aXZlIFRQTSBpbnRlcmZhY2UuIg0KPiArDQo+ICsjc3RyaW5nIFNUUl9nRWZpU2VjdXJpdHlQ a2dUb2tlblNwYWNlR3VpZF9QY2RDUkJJZGxlQnlQYXNzX0hFTFAgICNsYW5ndWFnZSBlbi1VUyAi VGhpcyBQQ0QgcmVjb3JkcyBJZGxlQnlhc3Mgc3RhdHVzIHN1cHBvcnRlZCBieSBjdXJyZW50IGFj dGl2ZSBUUE0gaW50ZXJmYWNlLlxuIg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkFjY29kaW5ndCB0byBUQ0cgUFRQIHNwZWMgMS4zLCBUUE0gd2l0aCBDUkIgaW50ZXJmYWNl IGNhbiBza2lwIGlkbGUgc3RhdGUgYW5kIGRpcmV0Y2x5IG1vdmUgdG8gQ21kUmVhZHkgc3RhdGUu IDxCUj4iDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMHgwMSAtIERvIG5v dCBzdXBwb3J0IElkbGVCeVBhc3MuPEJSPlxuIg0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIjB4MDIgLSBTdXBwb3J0IElkbGVCeVBhc3MuPEJSPlxuIg0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjB4RkYgLSBJZGxlQnlQYXNzIFN0YXRlIGlzIG5vdCBz eW5jZWQgd2l0aCBUUE0gaGFyZHdhcmUuPEJSPiINCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlDQo+IC0tDQo+IDIuMTYuMi53aW5kb3dzLjENCj4NCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4g ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0K PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCj4NCg==