From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 09:20:32 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 09:20:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erKO4-000593-Tn; Thu, 01 Mar 2018 09:20:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=s+6d=fx=citrix.com=prvs=591d9ebe8=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erKO3-00058x-Fe
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 09:20:27 +0000
X-Inumbo-ID: 0b6b8e97-1d32-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 0b6b8e97-1d32-11e8-b9b1-635ca7ef6cff;
 Thu, 01 Mar 2018 09:22:21 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,407,1515456000"; d="scan'208";a="68915865"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 04/14 v2] Move console handler to static
 Pdo
Thread-Index: AQHTrLJ02eT9P+8G1U6JmY4JMP1U66O7I24A
Date: Thu, 1 Mar 2018 09:20:17 +0000
Message-ID: <e2a03e7ac3f9470d8676fd9a3988aece@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-5-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-5-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 04/14 v2] Move console handler to static
 Pdo
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA0LzE0IHYyXSBNb3ZlIGNvbnNvbGUgaGFuZGxlciB0byBzdGF0aWMgUGRvDQo+IA0KPiBG
cm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBDaGFuZ2VzIHRo
ZSBGZG8gaW50byBhIHNpbXBsZSBidXMgZHJpdmVyIHRoYXQgb25seSBlbnVtZXJhdGVzDQo+IHRo
ZSBzaW5nbGUgc3RhdGljIFBkby5Nb3ZlcyB0aGUgaW50ZXJmYWNlIGFuZCBhbGwgY29uc29sZSBv
cGVyYXRpb25zDQo+IHRvIHRoZSBzdGF0aWMgUGRvLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogT3dl
biBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpSZXZpZXdlZC1ieTogUGF1bCBEdXJy
YW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy94ZW5jb25zL2Zk
by5jIHwgMTUxICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCj4gIHNyYy94ZW5jb25zL3Bkby5jIHwgMTY0DQo+ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNjEg
aW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3NyYy94
ZW5jb25zL2Zkby5jIGIvc3JjL3hlbmNvbnMvZmRvLmMNCj4gaW5kZXggMWM1MzIzYy4uNDVhMWZk
ZCAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmNvbnMvZmRvLmMNCj4gKysrIGIvc3JjL3hlbmNvbnMv
ZmRvLmMNCj4gQEAgLTQxLDcgKzQxLDYgQEANCj4gICNpbmNsdWRlIDxzdXNwZW5kX2ludGVyZmFj
ZS5oPg0KPiAgI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPg0KPiAgI2luY2x1ZGUgPGNvbnNv
bGVfaW50ZXJmYWNlLmg+DQo+IC0jaW5jbHVkZSA8eGVuY29uc19kZXZpY2UuaD4NCj4gICNpbmNs
dWRlIDx2ZXJzaW9uLmg+DQo+IA0KPiAgI2luY2x1ZGUgImRyaXZlci5oIg0KPiBAQCAtNDksNyAr
NDgsNiBAQA0KPiAgI2luY2x1ZGUgImZkby5oIg0KPiAgI2luY2x1ZGUgInBkby5oIg0KPiAgI2lu
Y2x1ZGUgIm11dGV4LmgiDQo+IC0jaW5jbHVkZSAiY29uc29sZS5oIg0KPiAgI2luY2x1ZGUgInRo
cmVhZC5oIg0KPiAgI2luY2x1ZGUgIm5hbWVzLmgiDQo+ICAjaW5jbHVkZSAiZGJnX3ByaW50Lmgi
DQo+IEBAIC05Miw4ICs5MCw2IEBAIHN0cnVjdCBfWEVOQ09OU19GRE8gew0KPiANCj4gICAgICBG
RE9fUkVTT1VSQ0UgICAgICAgICAgICAgICAgUmVzb3VyY2VbUkVTT1VSQ0VfQ09VTlRdOw0KPiAN
Cj4gLSAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAgICAgQ29uc29sZTsNCj4gLQ0KPiAgICAg
IFhFTkJVU19ERUJVR19JTlRFUkZBQ0UgICAgICBEZWJ1Z0ludGVyZmFjZTsNCj4gICAgICBYRU5C
VVNfU1VTUEVORF9JTlRFUkZBQ0UgICAgU3VzcGVuZEludGVyZmFjZTsNCj4gICAgICBYRU5CVVNf
U1RPUkVfSU5URVJGQUNFICAgICAgU3RvcmVJbnRlcmZhY2U7DQo+IEBAIC0xMDk2LDEyICsxMDky
LDYgQEAgRmRvRDNUb0QwKA0KPiANCj4gICAgICBfX0Zkb1JlbGVhc2VNdXRleChGZG8pOw0KPiAN
Cj4gLSAgICBzdGF0dXMgPSBDb25zb2xlRDNUb0QwKEZkby0+Q29uc29sZSk7DQo+IC0gICAgQVNT
RVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IC0NCj4gLSNwcmFnbWEgcHJlZmFzdChzdXBwcmVz
czoyODEyMykNCj4gLSAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0ZSgmRmRvLT5E
eC0+TGluaywgVFJVRSk7DQo+IC0NCj4gICAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiANCj4gICAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IEBAIC0xMTQ0LDExICsxMTM0LDYgQEAgRmRvRDBU
b0QzKA0KPiANCj4gICAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiANCj4gLSNwcmFnbWEgcHJlZmFz
dChzdXBwcmVzczoyODEyMykNCj4gLSAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0
ZSgmRmRvLT5EeC0+TGluaywgRkFMU0UpOw0KPiAtDQo+IC0gICAgQ29uc29sZUQwVG9EMyhGZG8t
PkNvbnNvbGUpOw0KPiAtDQo+ICAgICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsNCj4gDQo+ICAg
ICAgZm9yIChMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7DQo+IEBAIC0yNDg0
LDg1ICsyNDY5LDYgQEAgZG9uZToNCj4gIH0NCj4gDQo+ICBzdGF0aWMgREVDTFNQRUNfTk9JTkxJ
TkUgTlRTVEFUVVMNCj4gLUZkb0Rpc3BhdGNoQ3JlYXRlKA0KPiAtICAgIElOICBQWEVOQ09OU19G
RE8gICAgRmRvLA0KPiAtICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+IC0gICAgKQ0KPiAt
ew0KPiAtICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gLSAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gLQ0KPiAtICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+IC0NCj4gLSAgICBzdGF0dXMgPSBDb25z
b2xlT3BlbihGZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOw0KPiAtDQo+
IC0gICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+IC0gICAgSW9Db21wbGV0ZVJl
cXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiAtDQo+IC0gICAgcmV0dXJuIHN0YXR1czsN
Cj4gLX0NCj4gLQ0KPiAtc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IC1GZG9E
aXNwYXRjaENsZWFudXAoDQo+IC0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+IC0gICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gLSAgICApDQo+IC17DQo+IC0gICAgUElPX1NUQUNL
X0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiAtICAgIE5UU1RBVFVTICAgICAgICAgICAgc3Rh
dHVzOw0KPiAtDQo+IC0gICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9j
YXRpb24oSXJwKTsNCj4gLQ0KPiAtICAgIHN0YXR1cyA9IENvbnNvbGVDbG9zZShGZG8tPkNvbnNv
bGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOw0KPiAtDQo+IC0gICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBzdGF0dXM7DQo+IC0gICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19J
TkNSRU1FTlQpOw0KPiAtDQo+IC0gICAgcmV0dXJuIHN0YXR1czsNCj4gLX0NCj4gLQ0KPiAtc3Rh
dGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+IC1GZG9EaXNwYXRjaENsb3NlKA0KPiAt
ICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiAtICAgIElOICBQSVJQICAgICAgICAgICAg
SXJwDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0K
PiAtDQo+IC0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGZG8pOw0KPiAtDQo+IC0gICAgc3Rh
dHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+IC0NCj4gLSAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IHN0YXR1czsNCj4gLSAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
DQo+IC0NCj4gLSAgICByZXR1cm4gc3RhdHVzOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gLUZkb0Rpc3BhdGNoUmVhZFdyaXRlKA0KPiAtICAgIElO
ICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiAtICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+
IC0gICAgKQ0KPiAtew0KPiAtICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiAtDQo+
IC0gICAgc3RhdHVzID0gQ29uc29sZVB1dFF1ZXVlKEZkby0+Q29uc29sZSwgSXJwKTsNCj4gLSAg
ICBpZiAoc3RhdHVzICE9IFNUQVRVU19QRU5ESU5HKQ0KPiAtICAgICAgICBnb3RvIGZhaWwxOw0K
PiAtDQo+IC0gICAgcmV0dXJuIFNUQVRVU19QRU5ESU5HOw0KPiAtDQo+IC1mYWlsMToNCj4gLSAg
ICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiAtDQo+IC0gICAgSXJwLT5Jb1N0
YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+IC0gICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOw0KPiAtDQo+IC0gICAgcmV0dXJuIHN0YXR1czsNCj4gLX0NCj4gLQ0KPiAt
c3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+ICBGZG9EaXNwYXRjaERlZmF1bHQo
DQo+ICAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+ICAgICAgSU4gIFBJUlAgICAgICAg
ICAgICBJcnANCj4gQEAgLTI2MDIsMjMgKzI1MDgsNiBAQCBGZG9EaXNwYXRjaCgNCj4gICAgICAg
ICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hQb3dlcihGZG8sIElycCk7DQo+ICAgICAgICAgIGJyZWFr
Ow0KPiANCj4gLSAgICBjYXNlIElSUF9NSl9DUkVBVEU6DQo+IC0gICAgICAgIHN0YXR1cyA9IEZk
b0Rpc3BhdGNoQ3JlYXRlKEZkbywgSXJwKTsNCj4gLSAgICAgICAgYnJlYWs7DQo+IC0NCj4gLSAg
ICBjYXNlIElSUF9NSl9DTEVBTlVQOg0KPiAtICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaENs
ZWFudXAoRmRvLCBJcnApOw0KPiAtICAgICAgICBicmVhazsNCj4gLQ0KPiAtICAgIGNhc2UgSVJQ
X01KX0NMT1NFOg0KPiAtICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaENsb3NlKEZkbywgSXJw
KTsNCj4gLSAgICAgICAgYnJlYWs7DQo+IC0NCj4gLSAgICBjYXNlIElSUF9NSl9SRUFEOg0KPiAt
ICAgIGNhc2UgSVJQX01KX1dSSVRFOg0KPiAtICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaFJl
YWRXcml0ZShGZG8sIElycCk7DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtDQo+ICAgICAgZGVmYXVs
dDoNCj4gICAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hEZWZhdWx0KEZkbywgSXJwKTsNCj4g
ICAgICAgICAgYnJlYWs7DQo+IEBAIC0yNzM0LDkgKzI2MjMsNiBAQCBERUZJTkVfRkRPX0dFVF9J
TlRFUkZBQ0UoU3VzcGVuZCwNCj4gUFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkNCj4gIERFRklO
RV9GRE9fR0VUX0lOVEVSRkFDRShTdG9yZSwgUFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpDQo+ICBE
RUZJTkVfRkRPX0dFVF9JTlRFUkZBQ0UoQ29uc29sZSwgUFhFTkJVU19DT05TT0xFX0lOVEVSRkFD
RSkNCj4gDQo+IC0jcHJhZ21hIHdhcm5pbmcocHVzaCkNCj4gLSNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOjYwMTQpIC8vIExlYWtpbmcgbWVtb3J5ICcmRHgtPkxpbmsnDQo+IC0NCj4gIE5UU1RBVFVT
DQo+ICBGZG9DcmVhdGUoDQo+ICAgICAgSU4gIFBERVZJQ0VfT0JKRUNUICAgICAgUGh5c2ljYWxE
ZXZpY2VPYmplY3QNCj4gQEAgLTI3NjIsMTMgKzI2NDgsNiBAQCBGZG9DcmVhdGUoDQo+ICAgICAg
RHggPSAoUFhFTkNPTlNfRFgpRnVuY3Rpb25EZXZpY2VPYmplY3QtPkRldmljZUV4dGVuc2lvbjsN
Cj4gICAgICBSdGxaZXJvTWVtb3J5KER4LCBzaXplb2YgKFhFTkNPTlNfRFgpKTsNCj4gDQo+IC0g
ICAgc3RhdHVzID0gSW9SZWdpc3RlckRldmljZUludGVyZmFjZShQaHlzaWNhbERldmljZU9iamVj
dCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZHVUlEX1hFTkNP
TlNfREVWSUNFLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEeC0+TGluayk7
DQo+IC0gICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+IC0gICAgICAgIGdvdG8gZmFpbDI7
DQo+IC0NCj4gICAgICBEeC0+VHlwZSA9IEZVTkNUSU9OX0RFVklDRV9PQkpFQ1Q7DQo+ICAgICAg
RHgtPkRldmljZU9iamVjdCA9IEZ1bmN0aW9uRGV2aWNlT2JqZWN0Ow0KPiAgICAgIER4LT5EZXZp
Y2VQbnBTdGF0ZSA9IEFkZGVkOw0KPiBAQCAtMjg0NSwxMiArMjcyNCw2IEBAIEZkb0NyZWF0ZSgN
Cj4gICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gICAgICAgICAgZ290byBmYWlsMTE7
DQo+IA0KPiAtICAgIHN0YXR1cyA9IENvbnNvbGVDcmVhdGUoRmRvLCAmRmRvLT5Db25zb2xlKTsN
Cj4gLSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gLSAgICAgICAgZ290byBmYWlsMTI7
DQo+IC0NCj4gLSAgICBGdW5jdGlvbkRldmljZU9iamVjdC0+RmxhZ3MgfD0gRE9fQlVGRkVSRURf
SU87DQo+IC0NCj4gICAgICBEeC0+RmRvID0gRmRvOw0KPiANCj4gICAgICBJbml0aWFsaXplTXV0
ZXgoJkZkby0+TXV0ZXgpOw0KPiBAQCAtMjg2MywxMyArMjczNiwxMyBAQCBGZG9DcmVhdGUoDQo+
IA0KPiAgICAgIHN0YXR1cyA9IFBkb0NyZWF0ZShGZG8sIE5VTEwpOw0KPiAgICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQ0KPiAtICAgICAgICBnb3RvIGZhaWwxMzsNCj4gKyAgICAgICAgZ290
byBmYWlsMTI7DQo+IA0KPiAgICAgIEZ1bmN0aW9uRGV2aWNlT2JqZWN0LT5GbGFncyAmPSB+RE9f
REVWSUNFX0lOSVRJQUxJWklORzsNCj4gICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IA0K
PiAtZmFpbDEzOg0KPiAtICAgIEVycm9yKCJmYWlsMTNcbiIpOw0KPiArZmFpbDEyOg0KPiArICAg
IEVycm9yKCJmYWlsMTJcbiIpOw0KPiANCj4gICAgICBEeC0+RmRvID0gRmRvOw0KPiANCj4gQEAg
LTI4NzcsMTIgKzI3NTAsNiBAQCBmYWlsMTM6DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRHgtPkxp
c3RFbnRyeSwgc2l6ZW9mKExJU1RfRU5UUlkpKTsNCj4gICAgICBGZG8tPlJlZmVyZW5jZXMgPSAw
Ow0KPiANCj4gLSAgICBDb25zb2xlRGVzdHJveShGZG8tPkNvbnNvbGUpOw0KPiAtICAgIEZkby0+
Q29uc29sZSA9IE5VTEw7DQo+IC0NCj4gLWZhaWwxMjoNCj4gLSAgICBFcnJvcigiZmFpbDEyXG4i
KTsNCj4gLQ0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+Q29uc29sZUludGVyZmFjZSwNCj4g
ICAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UpKTsNCj4g
DQo+IEBAIC0yOTQ0LDExICsyODExLDYgQEAgZmFpbDQ6DQo+ICBmYWlsMzoNCj4gICAgICBFcnJv
cigiZmFpbDNcbiIpOw0KPiANCj4gLSAgICBSdGxGcmVlVW5pY29kZVN0cmluZygmRHgtPkxpbmsp
Ow0KPiAtDQo+IC1mYWlsMjoNCj4gLSAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiAtDQo+ICAgICAg
SW9EZWxldGVEZXZpY2UoRnVuY3Rpb25EZXZpY2VPYmplY3QpOw0KPiANCj4gIGZhaWwxOg0KPiBA
QCAtMjk3OSw5ICsyODQxLDYgQEAgRmRvRGVzdHJveSgNCj4gDQo+ICAgICAgRHgtPkZkbyA9IE5V
TEw7DQo+IA0KPiAtICAgIENvbnNvbGVEZXN0cm95KEZkby0+Q29uc29sZSk7DQo+IC0gICAgRmRv
LT5Db25zb2xlID0gTlVMTDsNCj4gLQ0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+Q29uc29s
ZUludGVyZmFjZSwNCj4gICAgICAgICAgICAgICAgICAgIHNpemVvZiAoWEVOQlVTX0NPTlNPTEVf
SU5URVJGQUNFKSk7DQo+IA0KPiBAQCAtMzAxNiw5ICsyODc1LDUgQEAgRmRvRGVzdHJveSgNCj4g
ICAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEZkbywgc2l6ZW9mIChYRU5DT05TX0ZETykpKTsNCj4g
ICAgICBfX0Zkb0ZyZWUoRmRvKTsNCj4gDQo+IC0gICAgUnRsRnJlZVVuaWNvZGVTdHJpbmcoJkR4
LT5MaW5rKTsNCj4gLQ0KPiAgICAgIElvRGVsZXRlRGV2aWNlKEZ1bmN0aW9uRGV2aWNlT2JqZWN0
KTsNCj4gIH0NCj4gLQ0KPiAtI3ByYWdtYSB3YXJuaW5nKHBvcCkNCj4gZGlmZiAtLWdpdCBhL3Ny
Yy94ZW5jb25zL3Bkby5jIGIvc3JjL3hlbmNvbnMvcGRvLmMNCj4gaW5kZXggNWU5MDg0NC4uMDc3
YzdlMiAxMDA3NTUNCj4gLS0tIGEvc3JjL3hlbmNvbnMvcGRvLmMNCj4gKysrIGIvc3JjL3hlbmNv
bnMvcGRvLmMNCj4gQEAgLTM3LDEyICszNywxNCBAQA0KPiAgI2luY2x1ZGUgPHN0ZGxpYi5oPg0K
PiANCj4gICNpbmNsdWRlIDxzdXNwZW5kX2ludGVyZmFjZS5oPg0KPiArI2luY2x1ZGUgPHhlbmNv
bnNfZGV2aWNlLmg+DQo+ICAjaW5jbHVkZSA8dmVyc2lvbi5oPg0KPiANCj4gICNpbmNsdWRlICJk
cml2ZXIuaCINCj4gICNpbmNsdWRlICJuYW1lcy5oIg0KPiAgI2luY2x1ZGUgImZkby5oIg0KPiAg
I2luY2x1ZGUgInBkby5oIg0KPiArI2luY2x1ZGUgImNvbnNvbGUuaCINCj4gICNpbmNsdWRlICJ0
aHJlYWQuaCINCj4gICNpbmNsdWRlICJkYmdfcHJpbnQuaCINCj4gICNpbmNsdWRlICJhc3NlcnQu
aCINCj4gQEAgLTY4LDYgKzcwLDggQEAgc3RydWN0IF9YRU5DT05TX1BETyB7DQo+IA0KPiAgICAg
IFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSAgICBTdXNwZW5kSW50ZXJmYWNlOw0KPiAgICAgIFBY
RU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJhY2tMYXRlOw0KPiArDQo+ICsg
ICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAgIENvbnNvbGU7DQo+ICB9Ow0KPiANCj4gIHN0
YXRpYyBGT1JDRUlOTElORSBQVk9JRA0KPiBAQCAtNDM3LDEwICs0NDEsMjcgQEAgUGRvRDNUb0Qw
KA0KPiANCj4gICAgICBLZUxvd2VySXJxbChJcnFsKTsNCj4gDQo+ICsgICAgc3RhdHVzID0gQ29u
c29sZUQzVG9EMChQZG8tPkNvbnNvbGUpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQ0KPiArICAgICAgICBnb3RvIGZhaWw0Ow0KPiArDQo+ICsjcHJhZ21hIHByZWZhc3Qoc3VwcHJl
c3M6MjgxMjMpDQo+ICsgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUoJlBkby0+
RHgtPkxpbmssIFRSVUUpOw0KPiArDQo+ICAgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRv
R2V0TmFtZShQZG8pKTsNCj4gDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiANCj4g
K2ZhaWw0Og0KPiArICAgIEVycm9yKCJmYWlsNFxuIik7DQo+ICsNCj4gKyAgICBLZVJhaXNlSXJx
bChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0KPiArDQo+ICsgICAgWEVOQlVTX1NVU1BFTkQoRGVy
ZWdpc3RlciwNCj4gKyAgICAgICAgICAgICAgICAgICAmUGRvLT5TdXNwZW5kSW50ZXJmYWNlLA0K
PiArICAgICAgICAgICAgICAgICAgIFBkby0+U3VzcGVuZENhbGxiYWNrTGF0ZSk7DQo+ICsgICAg
UGRvLT5TdXNwZW5kQ2FsbGJhY2tMYXRlID0gTlVMTDsNCj4gKw0KPiAgZmFpbDM6DQo+ICAgICAg
RXJyb3IoImZhaWwzXG4iKTsNCj4gDQo+IEBAIC00NzEsNiArNDkyLDExIEBAIFBkb0QwVG9EMygN
Cj4gDQo+ICAgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIFBBU1NJVkVfTEVW
RUwpOw0KPiANCj4gKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODEyMykNCj4gKyAgICAoVk9J
RCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0ZSgmUGRvLT5EeC0+TGluaywgRkFMU0UpOw0KPiAr
DQo+ICsgICAgQ29uc29sZUQwVG9EMyhQZG8tPkNvbnNvbGUpOw0KPiArDQo+ICAgICAgS2VSYWlz
ZUlycWwoRElTUEFUQ0hfTEVWRUwsICZJcnFsKTsNCj4gDQo+ICAgICAgWEVOQlVTX1NVU1BFTkQo
RGVyZWdpc3RlciwNCj4gQEAgLTUyNywxMCArNTUzLDIxIEBAIFBkb1N0YXJ0RGV2aWNlKA0KPiAg
ew0KPiAgICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiANCj4gLSAgICBzdGF0dXMg
PSBQZG9EM1RvRDAoUGRvKTsNCj4gKyAgICBpZiAoUGRvLT5EeC0+TGluay5MZW5ndGggIT0gMCkN
Cj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICsgICAgc3RhdHVzID0gSW9SZWdpc3RlckRl
dmljZUludGVyZmFjZShfX1Bkb0dldERldmljZU9iamVjdChQZG8pLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURfWEVOQ09OU19ERVZJQ0UsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJlBkby0+RHgtPkxpbmspOw0KPiAgICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiAgICAgICAgICBnb3RvIGZhaWwxOw0KPiANCj4gK2RvbmU6
DQo+ICsgICAgc3RhdHVzID0gUGRvRDNUb0QwKFBkbyk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gICAgICBfX1Bkb1NldERl
dmljZVBucFN0YXRlKFBkbywgU3RhcnRlZCk7DQo+IA0KPiAgICAgIElycC0+SW9TdGF0dXMuU3Rh
dHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+IEBAIC01MzgsNiArNTc1LDkgQEAgUGRvU3RhcnREZXZp
Y2UoDQo+IA0KPiAgICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gDQo+ICtmYWlsMjoNCj4g
KyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICBmYWlsMToNCj4gICAgICBFcnJvcigiZmFp
bDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiANCj4gQEAgLTE2MzksNiArMTY3OSw4NSBAQCBQZG9E
aXNwYXRjaFBvd2VyKA0KPiAgfQ0KPiANCj4gIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNU
QVRVUw0KPiArUGRvRGlzcGF0Y2hDcmVhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsg
ICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiArICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVu
dElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IENvbnNvbGVPcGVu
KFBkby0+Q29uc29sZSwgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICBJ
cnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJ
cnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0Rpc3BhdGNo
Q2xlYW51cCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAgICBJTiAgUElS
UCAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9fU1RBQ0tfTE9DQVRJ
T04gIFN0YWNrTG9jYXRpb247DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+
ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJ
cnApOw0KPiArDQo+ICsgICAgc3RhdHVzID0gQ29uc29sZUNsb3NlKFBkby0+Q29uc29sZSwgU3Rh
Y2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVD
TFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0Rpc3BhdGNoQ2xvc2UoDQo+ICsgICAgSU4g
IFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4g
KyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4g
KyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFBkbyk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBT
VEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVz
Ow0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0K
PiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lO
TElORSBOVFNUQVRVUw0KPiArUGRvRGlzcGF0Y2hSZWFkV3JpdGUoDQo+ICsgICAgSU4gIFBYRU5D
T05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICAp
DQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBz
dGF0dXMgPSBDb25zb2xlUHV0UXVldWUoUGRvLT5Db25zb2xlLCBJcnApOw0KPiArICAgIGlmIChz
dGF0dXMgIT0gU1RBVFVTX1BFTkRJTkcpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4g
KyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9y
KCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0
YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JF
TUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg
REVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gIFBkb0Rpc3BhdGNoRGVmYXVsdCgNCj4gICAg
ICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gICAgICBJTiAgUElSUCAgICAgICAgICAgIEly
cA0KPiBAQCAtMTY3NCw2ICsxNzkzLDIzIEBAIFBkb0Rpc3BhdGNoKA0KPiAgICAgICAgICBzdGF0
dXMgPSBQZG9EaXNwYXRjaFBvd2VyKFBkbywgSXJwKTsNCj4gICAgICAgICAgYnJlYWs7DQo+IA0K
PiArICAgIGNhc2UgSVJQX01KX0NSRUFURToNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0
Y2hDcmVhdGUoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2Ug
SVJQX01KX0NMRUFOVVA6DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoQ2xlYW51cChQ
ZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2FzZSBJUlBfTUpfQ0xP
U0U6DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoQ2xvc2UoUGRvLCBJcnApOw0KPiAr
ICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgSVJQX01KX1JFQUQ6DQo+ICsgICAgY2Fz
ZSBJUlBfTUpfV1JJVEU6DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUmVhZFdyaXRl
KFBkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gICAgICBkZWZhdWx0Og0KPiAg
ICAgICAgICBzdGF0dXMgPSBQZG9EaXNwYXRjaERlZmF1bHQoUGRvLCBJcnApOw0KPiAgICAgICAg
ICBicmVhazsNCj4gQEAgLTE3NTUsMzEgKzE4OTEsNDIgQEAgUGRvQ3JlYXRlKA0KPiANCj4gICAg
ICBEeC0+UGRvID0gUGRvOw0KPiANCj4gLSAgICBzdGF0dXMgPSBGZG9BZGRQaHlzaWNhbERldmlj
ZU9iamVjdChGZG8sIFBkbyk7DQo+ICsgICAgc3RhdHVzID0gQ29uc29sZUNyZWF0ZShGZG8sICZQ
ZG8tPkNvbnNvbGUpOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiAgICAgICAg
ICBnb3RvIGZhaWw1Ow0KPiANCj4gKyAgICBzdGF0dXMgPSBGZG9BZGRQaHlzaWNhbERldmljZU9i
amVjdChGZG8sIFBkbyk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAg
ICAgIGdvdG8gZmFpbDY7DQo+ICsNCj4gICAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVM
Ow0KPiAgICAgIGlmIChfX1Bkb0lzRWplY3RSZXF1ZXN0ZWQoUGRvKSkNCj4gLSAgICAgICAgZ290
byBmYWlsNjsNCj4gKyAgICAgICAgZ290byBmYWlsNzsNCj4gDQo+ICAgICAgSW5mbygiJXAgKCVz
KVxuIiwNCj4gICAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0LA0KPiAgICAgICAgICAgX19Q
ZG9HZXROYW1lKFBkbykpOw0KPiANCj4gKyAgICBQaHlzaWNhbERldmljZU9iamVjdC0+RmxhZ3Mg
fD0gRE9fQlVGRkVSRURfSU87DQo+ICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QtPkZsYWdzICY9
IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOw0KPiAgICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsN
Cj4gDQo+ICtmYWlsNzoNCj4gKyAgICBFcnJvcigiZmFpbDdcbiIpOw0KPiArDQo+ICsgICAgRmRv
UmVtb3ZlUGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvLCBQZG8pOw0KPiArDQo+ICBmYWlsNjoNCj4g
ICAgICBFcnJvcigiZmFpbDZcbiIpOw0KPiANCj4gLSAgICBGZG9SZW1vdmVQaHlzaWNhbERldmlj
ZU9iamVjdChGZG8sIFBkbyk7DQo+ICsgICAgKFZPSUQpX19QZG9DbGVhckVqZWN0UmVxdWVzdGVk
KFBkbyk7DQo+ICsNCj4gKyAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUpOw0KPiArICAg
IFBkby0+Q29uc29sZSA9IE5VTEw7DQo+IA0KPiAgZmFpbDU6DQo+ICAgICAgRXJyb3IoImZhaWw1
XG4iKTsNCj4gDQo+IC0gICAgKFZPSUQpX19QZG9DbGVhckVqZWN0UmVxdWVzdGVkKFBkbyk7DQo+
IC0NCj4gICAgICBEeC0+UGRvID0gTlVMTDsNCj4gDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmUGRv
LT5TdXNwZW5kSW50ZXJmYWNlLA0KPiBAQCAtMTg0Myw2ICsxOTkwLDExIEBAIFBkb0Rlc3Ryb3ko
DQo+IA0KPiAgICAgIER4LT5QZG8gPSBOVUxMOw0KPiANCj4gKyAgICBDb25zb2xlRGVzdHJveShQ
ZG8tPkNvbnNvbGUpOw0KPiArICAgIFBkby0+Q29uc29sZSA9IE5VTEw7DQo+ICsNCj4gKyAgICBS
dGxGcmVlVW5pY29kZVN0cmluZygmUGRvLT5EeC0+TGluayk7DQo+ICsNCj4gICAgICBSdGxaZXJv
TWVtb3J5KCZQZG8tPlN1c3BlbmRJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICBzaXpl
b2YoWEVOQlVTX1NVU1BFTkRfSU5URVJGQUNFKSk7DQo+IA0KPiAtLQ0KPiAyLjguMw0KPiANCj4g
DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IHdp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4t
cHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Cndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYt
ZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 10:00:09 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 10:00:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erL0S-0007y0-9i; Thu, 01 Mar 2018 10:00:08 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1erL0R-0007YG-3h
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 10:00:07 +0000
Date: Thu, 1 Mar 2018 10:00:07 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <20959277.7.1519898413166.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_6_32995262.1519898407900"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #12 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_6_32995262.1519898407900
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #12.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/12/console to view the results.
------=_Part_6_32995262.1519898407900
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_6_32995262.1519898407900--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 11:59:44 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 11:59:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erMsA-0001Jl-5C; Thu, 01 Mar 2018 11:59:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=s+6d=fx=citrix.com=prvs=591d9ebe8=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erMs8-0001J9-7I
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 11:59:40 +0000
X-Inumbo-ID: dfa797bb-1d47-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dfa797bb-1d47-11e8-ba59-bc764e045a96;
 Thu, 01 Mar 2018 12:58:38 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,408,1515456000"; d="scan'208";a="68929439"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 05/14 v2] Add IOCTLs to query instance,
 name and protocol
Thread-Index: AQHTrLHHCriJFs1PrkKxR9n2OMAJfKO7T9ig
Date: Thu, 1 Mar 2018 11:59:33 +0000
Message-ID: <52d7394969fd4ea08d25035cbaf35a7d@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-6-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-6-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 05/14 v2] Add IOCTLs to query instance,
	name and protocol
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA1LzE0IHYyXSBBZGQgSU9DVExzIHRvIHF1ZXJ5IGluc3RhbmNlLA0KPiBuYW1lIGFuZCBw
cm90b2NvbA0KPiANCj4gRnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
PiANCj4gU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0K
PiAtLS0NCj4gIGluY2x1ZGUveGVuY29uc19kZXZpY2UuaCB8ICAxNyArKysrKysrDQo+ICBzcmMv
eGVuY29ucy9jb25zb2xlLmMgICAgfCAxMTINCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0NCj4gIHNyYy94ZW5jb25zL3Bkby5jICAgICAgICB8ICAgOCAr
KystDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt
KQ0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuY29uc19kZXZpY2UuaCBiL2luY2x1ZGUv
eGVuY29uc19kZXZpY2UuaA0KPiBpbmRleCBlYWY1N2Q4Li5jOWFlMmVmIDEwMDY0NA0KPiAtLS0g
YS9pbmNsdWRlL3hlbmNvbnNfZGV2aWNlLmgNCj4gKysrIGIvaW5jbHVkZS94ZW5jb25zX2Rldmlj
ZS5oDQo+IEBAIC0zNiw0ICszNiwyMSBAQA0KPiAgREVGSU5FX0dVSUQoR1VJRF9YRU5DT05TX0RF
VklDRSwNCj4gICAgICAgICAgICAgIDB4ZDNlZGQyMSwgMHg4ZWY5LCAweDRkZmYsIDB4ODUsIDB4
NmMsIDB4OGMsIDB4NjgsIDB4YmYsIDB4NGYsIDB4ZGMsDQo+IDB4YTMpOw0KPiANCj4gKyNkZWZp
bmUgX19JT0NUTF9YRU5DT05TX0JFR0lOICAgMHg4MDANCj4gKw0KPiArI2RlZmluZSBJT0NUTF9Y
RU5DT05TX0dFVF9JTlNUQU5DRQ0KPiBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAgICAg
ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lP
Q1RMX1hFTkNPTlNfQkVHSU4gKyAwLCBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAgICAgICBcDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpDQo+
ICsNCj4gKyNkZWZpbmUgSU9DVExfWEVOQ09OU19HRVRfTkFNRQ0KPiBDVExfQ09ERShGSUxFX0RF
VklDRV9VTktOT1dOLCAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX0lPQ1RMX1hFTkNPTlNfQkVHSU4gKyAxLCBcDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIT0RfQlVGRkVSRUQsICAgICAg
ICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
SUxFX0FOWV9BQ0NFU1MpDQo+ICsNCj4gKyNkZWZpbmUgSU9DVExfWEVOQ09OU19HRVRfUFJPVE9D
T0wNCj4gQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgXA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT0NUTF9YRU5DT05TX0JFR0lO
ICsgMiwgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TUVUSE9EX0JVRkZFUkVELCAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQ0KPiArDQo+ICAjZW5kaWYgIC8v
IF9YRU5DT05TX0RFVklDRV9IDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9jb25zb2xlLmMg
Yi9zcmMveGVuY29ucy9jb25zb2xlLmMNCj4gaW5kZXggODNhZTkxNi4uYjlhYmU4MyAxMDA3NTUN
Cj4gLS0tIGEvc3JjL3hlbmNvbnMvY29uc29sZS5jDQo+ICsrKyBiL3NyYy94ZW5jb25zL2NvbnNv
bGUuYw0KPiBAQCAtMzYsNiArMzYsOCBAQA0KPiAgI2luY2x1ZGUgPG50c3Ryc2FmZS5oPg0KPiAg
I2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiANCj4gKyNpbmNsdWRlIDx4ZW5jb25zX2RldmljZS5oPg0K
PiArDQo+ICAjaW5jbHVkZSAiZHJpdmVyLmgiDQo+ICAjaW5jbHVkZSAiY29uc29sZS5oIg0KPiAg
I2luY2x1ZGUgInN0cmVhbS5oIg0KPiBAQCAtMjA2LDggKzIwOCw4IEBAIGZhaWwxOg0KPiAgICAg
IHJldHVybiBzdGF0dXM7DQo+ICB9DQo+IA0KPiAtTlRTVEFUVVMNCj4gLUNvbnNvbGVQdXRRdWV1
ZSgNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUw0KPiArX19Db25zb2xlUHV0UXVldWUo
DQoNCkknZCBwcmVmZXIgdGhpcyBiZSByZW5hbWVkIF9fQ29uc29sZVJlYWRXcml0ZSgpLCBidXQg
SSBjYW4gZG8gdGhpcyBhdCBjb21taXQuDQoNClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBh
dWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+ICAgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAg
Q29uc29sZSwNCj4gICAgICBJTiAgUElSUCAgICAgICAgICAgICAgICBJcnANCj4gICAgICApDQo+
IEBAIC0yMzksNiArMjQxLDExMiBAQCBmYWlsMToNCj4gICAgICByZXR1cm4gc3RhdHVzOw0KPiAg
fQ0KPiANCj4gK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUw0KPiArX19Db25zb2xlRGV2aWNl
Q29udHJvbCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLA0KPiArICAg
IElOICBQSVJQICAgICAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9f
U1RBQ0tfTE9DQVRJT04gICAgICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFVMT05HICAgICAgICAg
ICAgICAgICAgIElvQ29udHJvbENvZGU7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICAgICAg
SW5wdXRCdWZmZXJMZW5ndGg7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgT3V0cHV0
QnVmZmVyTGVuZ3RoOw0KPiArICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjsNCj4g
KyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICBWYWx1ZTsNCj4gKyAgICBVTE9ORyAgICAgICAg
ICAgICAgICAgICBMZW5ndGg7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVz
Ow0KPiArDQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihDb25zb2xlKTsNCj4gKw0KPiAr
ICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+
ICsgICAgSW9Db250cm9sQ29kZSA9IFN0YWNrTG9jYXRpb24tDQo+ID5QYXJhbWV0ZXJzLkRldmlj
ZUlvQ29udHJvbC5Jb0NvbnRyb2xDb2RlOw0KPiArICAgIElucHV0QnVmZmVyTGVuZ3RoID0gU3Rh
Y2tMb2NhdGlvbi0NCj4gPlBhcmFtZXRlcnMuRGV2aWNlSW9Db250cm9sLklucHV0QnVmZmVyTGVu
Z3RoOw0KPiArICAgIE91dHB1dEJ1ZmZlckxlbmd0aCA9IFN0YWNrTG9jYXRpb24tDQo+ID5QYXJh
bWV0ZXJzLkRldmljZUlvQ29udHJvbC5PdXRwdXRCdWZmZXJMZW5ndGg7DQo+ICsgICAgQnVmZmVy
ID0gSXJwLT5Bc3NvY2lhdGVkSXJwLlN5c3RlbUJ1ZmZlcjsNCj4gKw0KPiArICAgIHN3aXRjaCAo
SW9Db250cm9sQ29kZSkgew0KPiArICAgIGNhc2UgSU9DVExfWEVOQ09OU19HRVRfSU5TVEFOQ0U6
DQo+ICsgICAgICAgIFZhbHVlID0gIjAiOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICBjYXNl
IElPQ1RMX1hFTkNPTlNfR0VUX05BTUU6DQo+ICsgICAgICAgIFZhbHVlID0gImRlZmF1bHQiOw0K
PiArICAgICAgICBicmVhazsNCj4gKyAgICBjYXNlIElPQ1RMX1hFTkNPTlNfR0VUX1BST1RPQ09M
Og0KPiArICAgICAgICBWYWx1ZSA9ICJ2dDEwMCI7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAg
IGRlZmF1bHQ6DQo+ICsgICAgICAgIFZhbHVlID0gTlVMTDsNCj4gKyAgICAgICAgYnJlYWs7DQo+
ICsgICAgfQ0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7DQo+ICsg
ICAgaWYgKFZhbHVlID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAg
ICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgaWYgKElucHV0QnVm
ZmVyTGVuZ3RoICE9IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICBMZW5n
dGggPSAoVUxPTkcpc3RybGVuKFZhbHVlKSArIDE7DQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5JbmZv
cm1hdGlvbiA9IExlbmd0aDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX0JV
RkZFUl9TSVpFOw0KPiArICAgIGlmIChPdXRwdXRCdWZmZXJMZW5ndGggPT0gMCkNCj4gKyAgICAg
ICAgZ290byBmYWlsMzsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoQnVmZmVyLCBPdXRwdXRC
dWZmZXJMZW5ndGgpOw0KPiArICAgIGlmIChPdXRwdXRCdWZmZXJMZW5ndGggPCBMZW5ndGgpDQo+
ICsgICAgICAgIGdvdG8gZmFpbDQ7DQo+ICsNCj4gKyAgICBSdGxDb3B5TWVtb3J5KEJ1ZmZlciwg
VmFsdWUsIExlbmd0aCk7DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsN
Cj4gK2ZhaWw0Og0KPiArICAgIEVycm9yKCJmYWlsNFxuIik7DQo+ICsNCj4gK2ZhaWwzOg0KPiAr
ICAgIEVycm9yKCJmYWlsM1xuIik7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIEVycm9yKCJmYWls
MlxuIik7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtOVFNUQVRV
Uw0KPiArQ29uc29sZVB1dFF1ZXVlKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENv
bnNvbGUsDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiAr
ew0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgIFN0YWNrTG9jYXRpb247DQo+ICsgICAg
TlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKw0KPiArICAgIHN3aXRj
aCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgew0KPiArICAgIGNhc2UgSVJQX01KX1JF
QUQ6DQo+ICsgICAgY2FzZSBJUlBfTUpfV1JJVEU6DQo+ICsgICAgICAgIHN0YXR1cyA9IF9fQ29u
c29sZVB1dFF1ZXVlKENvbnNvbGUsIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsg
ICAgY2FzZSBJUlBfTUpfREVWSUNFX0NPTlRST0w6DQo+ICsgICAgICAgIHN0YXR1cyA9IF9fQ29u
c29sZURldmljZUNvbnRyb2woQ29uc29sZSwgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsN
Cj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiArICAgICAgICBz
dGF0dXMgPSBTVEFUVVNfTk9UX1NVUFBPUlRFRDsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg
fQ0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiAgTlRTVEFUVVMNCj4g
IENvbnNvbGVEM1RvRDAoDQo+ICAgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZQ0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvcGRvLmMgYi9zcmMveGVuY29ucy9wZG8uYw0KPiBp
bmRleCAwNzdjN2UyLi42MmYzNjZjIDEwMDc1NQ0KPiAtLS0gYS9zcmMveGVuY29ucy9wZG8uYw0K
PiArKysgYi9zcmMveGVuY29ucy9wZG8uYw0KPiBAQCAtMTczNSw3ICsxNzM1LDcgQEAgUGRvRGlz
cGF0Y2hDbG9zZSgNCj4gIH0NCj4gDQo+ICBzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFU
VVMNCj4gLVBkb0Rpc3BhdGNoUmVhZFdyaXRlKA0KPiArUGRvRGlzcGF0Y2hSZWFkV3JpdGVDb250
cm9sKA0KPiAgICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiAgICAgIElOICBQSVJQICAg
ICAgICAgICAgSXJwDQo+ICAgICAgKQ0KPiBAQCAtMTc0Myw2ICsxNzQzLDggQEAgUGRvRGlzcGF0
Y2hSZWFkV3JpdGUoDQo+ICAgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+IA0KPiAg
ICAgIHN0YXR1cyA9IENvbnNvbGVQdXRRdWV1ZShQZG8tPkNvbnNvbGUsIElycCk7DQo+ICsgICAg
aWYgKHN0YXR1cyA9PSBTVEFUVVNfU1VDQ0VTUykNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiAg
ICAgIGlmIChzdGF0dXMgIT0gU1RBVFVTX1BFTkRJTkcpDQo+ICAgICAgICAgIGdvdG8gZmFpbDE7
DQo+IA0KPiBAQCAtMTc1MSw2ICsxNzUzLDcgQEAgUGRvRGlzcGF0Y2hSZWFkV3JpdGUoDQo+ICBm
YWlsMToNCj4gICAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiANCj4gK2Rv
bmU6DQo+ICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICAgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiANCj4gQEAgLTE4MDcsNyArMTgx
MCw4IEBAIFBkb0Rpc3BhdGNoKA0KPiANCj4gICAgICBjYXNlIElSUF9NSl9SRUFEOg0KPiAgICAg
IGNhc2UgSVJQX01KX1dSSVRFOg0KPiAtICAgICAgICBzdGF0dXMgPSBQZG9EaXNwYXRjaFJlYWRX
cml0ZShQZG8sIElycCk7DQo+ICsgICAgY2FzZSBJUlBfTUpfREVWSUNFX0NPTlRST0w6DQo+ICsg
ICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUmVhZFdyaXRlQ29udHJvbChQZG8sIElycCk7DQo+
ICAgICAgICAgIGJyZWFrOw0KPiANCj4gICAgICBkZWZhdWx0Og0KPiAtLQ0KPiAyLjguMw0KPiAN
Cj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+
IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93
aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4t
cHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 12:52:07 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 12:52:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erNgt-00064l-03; Thu, 01 Mar 2018 12:52:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=s+6d=fx=citrix.com=prvs=591d9ebe8=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erNgr-00063y-RC
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 12:52:05 +0000
X-Inumbo-ID: 9b90f2c0-1d4f-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 9b90f2c0-1d4f-11e8-b9b1-635ca7ef6cff;
 Thu, 01 Mar 2018 12:53:59 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,408,1515456000"; d="scan'208";a="68934086"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 06/14 v2] Make monitor service
 multi-console	aware
Thread-Index: AQHTrLIMeF2EXzPQgU2zdS8Dg40O4qO7Xn3w
Date: Thu, 1 Mar 2018 12:51:20 +0000
Message-ID: <849e8f1bc9da439d975051516bdafb20@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-7-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-7-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 06/14 v2] Make monitor service
 multi-console	aware
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA2LzE0IHYyXSBNYWtlIG1vbml0b3Igc2VydmljZSBtdWx0aS0NCj4gY29uc29sZSBhd2Fy
ZQ0KPiANCj4gRnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiANCj4g
KiBNb3ZlIGNvbnNvbGUgc3BlY2lmaWMgZGF0YSB0byBhIHNlcGVyYXRlIHN0cnVjdHVyZQ0KPiAq
IE1ha2UgYWxsIHRocmVhZHMnIHVzZSB0aGUgY29uc29sZSBkYXRhDQo+ICogUmVtb3ZlcyB0aGUg
QWRkIGFuZCBSZW1vdmUgZXZlbnQgaW4gZmF2b3Igb2YgaW5saW5lIGFkZC9yZW1vdmUNCj4gKiBD
b252ZXJ0IFdpbjMyIGNhbGxzIHRvIGV4cGxpY2l0IG5hcnJvdy93aWRlIGNoYXJhY3RlciBzZXQg
YXMgYXBwcm9wcmlhdGUNCj4gKiBSZW1vdmVzIHRjaGFyLmggaW5jbHVkZSB0byBmb3JjZSBuYXJy
b3cvd2lkZSBjaGFyYWN0ZXIgdXNhZ2UNCj4gKiBSZW5hbWVzIHN0cnVjdHVyZXMgYW5kIHRocmVh
ZCBmdW5jdGlvbnMNCj4gKiBQaXBlIG5hbWVzIGFyZSBiYXNlZCBvbiBjb25zb2xlIG5hbWUNCj4g
KiBJTkYgZmlsZSBzdG9yZXMgIkV4ZWN1dGFibGUiIHVuZGVyIGNvbnNvbGUncyBuYW1lIHN1Ymtl
eQ0KPiAqIENoYW5nZSBwaXBlIG5hbWUgdHR5LmV4ZSB1c2VzDQo+ICogQWRkIFdhaXROYW1lZFBp
cGUoKSBiZWZvcmUgY29ubmVjdGluZyB0byBwaXBlcyBpbiB0dHkuZXhlDQo+IA0KPiBTaWduZWQt
b2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQ
YXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3JjL21v
bml0b3IvbW9uaXRvci5jIHwgMTQ0NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLS0tLQ0KPiAtLS0tLS0tLQ0KPiAgc3JjL3R0eS90dHkuYyAgICAgICAgIHwgICAyMCArLQ0K
PiAgc3JjL3hlbmNvbnMuaW5mICAgICAgIHwgICAgMiArLQ0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA3
OTIgaW5zZXJ0aW9ucygrKSwgNjc1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Ny
Yy9tb25pdG9yL21vbml0b3IuYyBiL3NyYy9tb25pdG9yL21vbml0b3IuYw0KPiBpbmRleCAwOGFl
MGYyLi41MTBiYTZmIDEwMDY0NA0KPiAtLS0gYS9zcmMvbW9uaXRvci9tb25pdG9yLmMNCj4gKysr
IGIvc3JjL21vbml0b3IvbW9uaXRvci5jDQo+IEBAIC0zMiw3ICszMiw3IEBADQo+ICAjZGVmaW5l
IElOSVRHVUlEIDENCj4gDQo+ICAjaW5jbHVkZSA8d2luZG93cy5oPg0KPiAtI2luY2x1ZGUgPHRj
aGFyLmg+DQo+ICsjaW5jbHVkZSA8d2luaW9jdGwuaD4NCj4gICNpbmNsdWRlIDxzdGRsaWIuaD4N
Cj4gICNpbmNsdWRlIDxzdHJzYWZlLmg+DQo+ICAjaW5jbHVkZSA8d3RzYXBpMzIuaD4NCj4gQEAg
LTUwLDQwICs1MCw0NSBAQA0KPiAgI2RlZmluZSBNT05JVE9SX05BTUUgICAgICAgIF9fTU9EVUxF
X18NCj4gICNkZWZpbmUgTU9OSVRPUl9ESVNQTEFZTkFNRSBNT05JVE9SX05BTUUNCj4gDQo+IC10
eXBlZGVmIHN0cnVjdCBfTU9OSVRPUl9QSVBFIHsNCj4gLSAgICBIQU5ETEUgICAgICAgICAgICAg
ICAgICBQaXBlOw0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIEV2ZW50Ow0KPiAtICAg
IEhBTkRMRSAgICAgICAgICAgICAgICAgIFRocmVhZDsNCj4gLSAgICBMSVNUX0VOVFJZICAgICAg
ICAgICAgICBMaXN0RW50cnk7DQo+IC19IE1PTklUT1JfUElQRSwgKlBNT05JVE9SX1BJUEU7DQo+
IC0NCj4gIHR5cGVkZWYgc3RydWN0IF9NT05JVE9SX0NPTlRFWFQgew0KPiAgICAgIFNFUlZJQ0Vf
U1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gICAgICBTRVJWSUNFX1NUQVRVU19IQU5ETEUgICBT
ZXJ2aWNlOw0KPiAtICAgIEhLRVkgICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnNLZXk7DQo+
ICAgICAgSEFORExFICAgICAgICAgICAgICAgICAgRXZlbnRMb2c7DQo+ICAgICAgSEFORExFICAg
ICAgICAgICAgICAgICAgU3RvcEV2ZW50Ow0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgICAg
IEFkZEV2ZW50Ow0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIFJlbW92ZUV2ZW50Ow0K
PiAtICAgIFBUQ0hBUiAgICAgICAgICAgICAgICAgIEV4ZWN1dGFibGU7DQo+ICsgICAgSEtFWSAg
ICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyc0tleTsNCj4gICAgICBIREVWTk9USUZZICAgICAg
ICAgICAgICBJbnRlcmZhY2VOb3RpZmljYXRpb247DQo+IC0gICAgUFRDSEFSICAgICAgICAgICAg
ICAgICAgRGV2aWNlUGF0aDsNCj4gKyAgICBDUklUSUNBTF9TRUNUSU9OICAgICAgICBDcml0aWNh
bFNlY3Rpb247DQo+ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgTGlzdEhlYWQ7DQo+ICsg
ICAgRFdPUkQgICAgICAgICAgICAgICAgICAgTGlzdENvdW50Ow0KPiArfSBNT05JVE9SX0NPTlRF
WFQsICpQTU9OSVRPUl9DT05URVhUOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBfTU9OSVRPUl9D
T05TT0xFIHsNCj4gKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0RW50cnk7DQo+ICsg
ICAgUFdDSEFSICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aDsNCj4gKyAgICBIQU5ETEUgICAg
ICAgICAgICAgICAgICBEZXZpY2VIYW5kbGU7DQo+ICAgICAgSERFVk5PVElGWSAgICAgICAgICAg
ICAgRGV2aWNlTm90aWZpY2F0aW9uOw0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIERl
dmljZTsNCj4gLSAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBNb25pdG9yRXZlbnQ7DQo+IC0g
ICAgSEFORExFICAgICAgICAgICAgICAgICAgTW9uaXRvclRocmVhZDsNCj4gLSAgICBIQU5ETEUg
ICAgICAgICAgICAgICAgICBEZXZpY2VFdmVudDsNCj4gKyAgICBQQ0hBUiAgICAgICAgICAgICAg
ICAgICBEZXZpY2VOYW1lOyAvLyBwcm90b2NvbCBhbmQgaW5zdGFuY2U/DQo+ICsgICAgSEFORExF
ICAgICAgICAgICAgICAgICAgRXhlY3V0YWJsZVRocmVhZDsNCj4gKyAgICBIQU5ETEUgICAgICAg
ICAgICAgICAgICBFeGVjdXRhYmxlRXZlbnQ7DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICAg
ICAgRGV2aWNlVGhyZWFkOw0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIFNlcnZlckV2
ZW50Ow0KPiArICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIERldmljZUV2ZW50Ow0KPiAgICAg
IEhBTkRMRSAgICAgICAgICAgICAgICAgIFNlcnZlclRocmVhZDsNCj4gKyAgICBIQU5ETEUgICAg
ICAgICAgICAgICAgICBTZXJ2ZXJFdmVudDsNCj4gICAgICBDUklUSUNBTF9TRUNUSU9OICAgICAg
ICBDcml0aWNhbFNlY3Rpb247DQo+ICAgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgTGlzdEhl
YWQ7DQo+ICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgTGlzdENvdW50Ow0KPiAtfSBNT05J
VE9SX0NPTlRFWFQsICpQTU9OSVRPUl9DT05URVhUOw0KPiArfSBNT05JVE9SX0NPTlNPTEUsICpQ
TU9OSVRPUl9DT05TT0xFOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBfTU9OSVRPUl9DT05ORUNU
SU9OIHsNCj4gKyAgICBQTU9OSVRPUl9DT05TT0xFICAgICAgICBDb25zb2xlOw0KPiArICAgIExJ
U1RfRU5UUlkgICAgICAgICAgICAgIExpc3RFbnRyeTsNCj4gKyAgICBIQU5ETEUgICAgICAgICAg
ICAgICAgICBQaXBlOw0KPiArICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIFRocmVhZDsNCj4g
K30gTU9OSVRPUl9DT05ORUNUSU9OLCAqUE1PTklUT1JfQ09OTkVDVElPTjsNCj4gDQo+IC1NT05J
VE9SX0NPTlRFWFQgTW9uaXRvckNvbnRleHQ7DQo+ICtzdGF0aWMgTU9OSVRPUl9DT05URVhUIE1v
bml0b3JDb250ZXh0Ow0KPiANCj4gLSNkZWZpbmUgUElQRV9OQU1FIFRFWFQoIlxcXFwuXFxwaXBl
XFx4ZW5jb25zIikNCj4gKyNkZWZpbmUgUElQRV9CQVNFX05BTUUgIlxcXFwuXFxwaXBlXFx4ZW5j
b25zXFwiDQo+IA0KPiAgI2RlZmluZSBNQVhJTVVNX0JVRkZFUl9TSVpFIDEwMjQNCj4gDQo+IEBA
IC0xMDQsMTUgKzEwOSwxNSBAQCBfX0xvZygNCj4gIHsNCj4gICNpZiBEQkcNCj4gICAgICBQTU9O
SVRPUl9DT05URVhUICAgIENvbnRleHQgPSAmTW9uaXRvckNvbnRleHQ7DQo+IC0gICAgY29uc3Qg
VENIQVIgICAgICAgICAqU3RyaW5nc1sxXTsNCj4gKyAgICBjb25zdCBDSEFSICAgICAgICAgICpT
dHJpbmdzWzFdOw0KPiAgI2VuZGlmDQo+IC0gICAgVENIQVIgICAgICAgICAgICAgICBCdWZmZXJb
TUFYSU1VTV9CVUZGRVJfU0laRV07DQo+ICsgICAgQ0hBUiAgICAgICAgICAgICAgICBCdWZmZXJb
TUFYSU1VTV9CVUZGRVJfU0laRV07DQo+ICAgICAgdmFfbGlzdCAgICAgICAgICAgICBBcmd1bWVu
dHM7DQo+ICAgICAgc2l6ZV90ICAgICAgICAgICAgICBMZW5ndGg7DQo+ICAgICAgSFJFU1VMVCAg
ICAgICAgICAgICBSZXN1bHQ7DQo+IA0KPiAgICAgIHZhX3N0YXJ0KEFyZ3VtZW50cywgRm9ybWF0
KTsNCj4gLSAgICBSZXN1bHQgPSBTdHJpbmdDY2hWUHJpbnRmKEJ1ZmZlciwNCj4gKyAgICBSZXN1
bHQgPSBTdHJpbmdDY2hWUHJpbnRmQShCdWZmZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNQVhJTVVNX0JVRkZFUl9TSVpFLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRz
KTsNCj4gQEAgLTEyMSw3ICsxMjYsNyBAQCBfX0xvZygNCj4gICAgICBpZiAoUmVzdWx0ICE9IFNf
T0sgJiYgUmVzdWx0ICE9IFNUUlNBRkVfRV9JTlNVRkZJQ0lFTlRfQlVGRkVSKQ0KPiAgICAgICAg
ICByZXR1cm47DQo+IA0KPiAtICAgIFJlc3VsdCA9IFN0cmluZ0NjaExlbmd0aChCdWZmZXIsIE1B
WElNVU1fQlVGRkVSX1NJWkUsICZMZW5ndGgpOw0KPiArICAgIFJlc3VsdCA9IFN0cmluZ0NjaExl
bmd0aEEoQnVmZmVyLCBNQVhJTVVNX0JVRkZFUl9TSVpFLCAmTGVuZ3RoKTsNCj4gICAgICBpZiAo
UmVzdWx0ICE9IFNfT0spDQo+ICAgICAgICAgIHJldHVybjsNCj4gDQo+IEBAIC0xMzksNyArMTQ0
LDcgQEAgX19Mb2coDQo+ICAgICAgU3RyaW5nc1swXSA9IEJ1ZmZlcjsNCj4gDQo+ICAgICAgaWYg
KENvbnRleHQtPkV2ZW50TG9nICE9IE5VTEwpDQo+IC0gICAgICAgIFJlcG9ydEV2ZW50KENvbnRl
eHQtPkV2ZW50TG9nLA0KPiArICAgICAgICBSZXBvcnRFdmVudEEoQ29udGV4dC0+RXZlbnRMb2cs
DQo+ICAgICAgICAgICAgICAgICAgICAgIEVWRU5UTE9HX0lORk9STUFUSU9OX1RZUEUsDQo+ICAg
ICAgICAgICAgICAgICAgICAgIDAsDQo+ICAgICAgICAgICAgICAgICAgICAgIE1PTklUT1JfTE9H
LA0KPiBAQCAtMTUyLDIzICsxNTcsMjMgQEAgX19Mb2coDQo+ICB9DQo+IA0KPiAgI2RlZmluZSBM
b2coX0Zvcm1hdCwgLi4uKSBcDQo+IC0gICAgX19Mb2coVEVYVChfX01PRFVMRV9fICJ8IiBfX0ZV
TkNUSU9OX18gIjogIiBfRm9ybWF0KSwNCj4gX19WQV9BUkdTX18pDQo+ICsgICAgX19Mb2coX19N
T0RVTEVfXyAifCIgX19GVU5DVElPTl9fICI6ICIgX0Zvcm1hdCwgX19WQV9BUkdTX18pDQo+IA0K
PiAtc3RhdGljIFBUQ0hBUg0KPiArc3RhdGljIFBDSEFSDQo+ICBHZXRFcnJvck1lc3NhZ2UoDQo+
ICAgICAgSU4gIEhSRVNVTFQgRXJyb3INCj4gICAgICApDQo+ICB7DQo+IC0gICAgUFRDSEFSICAg
ICAgTWVzc2FnZTsNCj4gKyAgICBQQ0hBUiAgICAgICBNZXNzYWdlOw0KPiAgICAgIFVMT05HICAg
ICAgIEluZGV4Ow0KPiANCj4gLSAgICBpZiAoIUZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0Vf
QUxMT0NBVEVfQlVGRkVSIHwNCj4gKyAgICBpZiAoIUZvcm1hdE1lc3NhZ2VBKEZPUk1BVF9NRVNT
QUdFX0FMTE9DQVRFX0JVRkZFUiB8DQo+ICAgICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9N
RVNTQUdFX0ZST01fU1lTVEVNIHwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01F
U1NBR0VfSUdOT1JFX0lOU0VSVFMsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLA0KPiAgICAgICAgICAgICAgICAgICAgICAg
ICBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFOR19ERUZBVUxUKSwNCj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgKExQVFNUUikmTWVzc2FnZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgKExQU1RSKSZNZXNzYWdlLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKSkNCj4gICAgICAgICAgcmV0dXJuIE5VTEw7DQo+IEBA
IC0yMTAsNyArMjE1LDggQEAgc3RhdGljIFZPSUQNCj4gIFJlcG9ydFN0YXR1cygNCj4gICAgICBJ
TiAgRFdPUkQgICAgICAgICAgIEN1cnJlbnRTdGF0ZSwNCj4gICAgICBJTiAgRFdPUkQgICAgICAg
ICAgIFdpbjMyRXhpdENvZGUsDQo+IC0gICAgSU4gIERXT1JEICAgICAgICAgICBXYWl0SGludCkN
Cj4gKyAgICBJTiAgRFdPUkQgICAgICAgICAgIFdhaXRIaW50DQo+ICsgICAgKQ0KPiAgew0KPiAg
ICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gICAg
ICBzdGF0aWMgRFdPUkQgICAgICAgIENoZWNrUG9pbnQgPSAxOw0KPiBAQCAtMjQ5LDExNiArMjU1
LDExIEBAIGZhaWwxOg0KPiAgICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7DQo+IA0KPiAgICAg
IHsNCj4gLSAgICAgICAgUFRDSEFSICBNZXNzYWdlOw0KPiAtICAgICAgICBNZXNzYWdlID0gR2V0
RXJyb3JNZXNzYWdlKEVycm9yKTsNCj4gLSAgICAgICAgTG9nKCJmYWlsMSAoJXMpIiwgTWVzc2Fn
ZSk7DQo+IC0gICAgICAgIExvY2FsRnJlZShNZXNzYWdlKTsNCj4gLSAgICB9DQo+IC19DQo+IC0N
Cj4gLXN0YXRpYyBCT09MDQo+IC1Nb25pdG9yR2V0UGF0aCgNCj4gLSAgICBJTiAgY29uc3QgR1VJ
RCAgKkd1aWQsDQo+IC0gICAgT1VUIFBUQ0hBUiAgICAgICpQYXRoDQo+IC0gICAgKQ0KPiAtew0K
PiAtICAgIEhERVZJTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZUluZm9TZXQ7
DQo+IC0gICAgU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBICAgICAgICAgICAgRGV2aWNlSW50ZXJm
YWNlRGF0YTsNCj4gLSAgICBQU1BfREVWSUNFX0lOVEVSRkFDRV9ERVRBSUxfREFUQSAgICBEZXZp
Y2VJbnRlcmZhY2VEZXRhaWw7DQo+IC0gICAgRFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2l6ZTsNCj4gLSAgICBIUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
cnJvcjsNCj4gLSAgICBCT09MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNz
Ow0KPiAtDQo+IC0gICAgTG9nKCI9PT09PiIpOw0KPiAtDQo+IC0gICAgRGV2aWNlSW5mb1NldCA9
IFNldHVwRGlHZXRDbGFzc0RldnMoR3VpZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RElHQ0ZfUFJFU0VOVCB8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRElHQ0ZfREVWSUNFSU5URVJGQUNFKTsNCj4gLSAgICBpZiAoRGV2aWNlSW5mb1NldCA9PSBJ
TlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gLSAgICAgICAgZ290byBmYWlsMTsNCj4gLQ0KPiAtICAg
IERldmljZUludGVyZmFjZURhdGEuY2JTaXplID0gc2l6ZW9mIChTUF9ERVZJQ0VfSU5URVJGQUNF
X0RBVEEpOw0KPiAtDQo+IC0gICAgU3VjY2VzcyA9IFNldHVwRGlFbnVtRGV2aWNlSW50ZXJmYWNl
cyhEZXZpY2VJbmZvU2V0LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEd1aWQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0K
PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkRldmljZUludGVy
ZmFjZURhdGEpOw0KPiAtICAgIGlmICghU3VjY2VzcykNCj4gLSAgICAgICAgZ290byBmYWlsMjsN
Cj4gLQ0KPiAtICAgIFN1Y2Nlc3MgPSBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsKERl
dmljZUluZm9TZXQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkRldmljZUludGVyZmFjZURhdGEsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZTaXplLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAtICAgIGlmICghU3VjY2VzcyAmJiBHZXRMYXN0RXJy
b3IoKSAhPSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKQ0KPiAtICAgICAgICBnb3RvIGZhaWwz
Ow0KPiAtDQo+IC0gICAgRGV2aWNlSW50ZXJmYWNlRGV0YWlsID0gY2FsbG9jKDEsIFNpemUpOw0K
PiAtICAgIGlmIChEZXZpY2VJbnRlcmZhY2VEZXRhaWwgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290
byBmYWlsNDsNCj4gLQ0KPiAtICAgIERldmljZUludGVyZmFjZURldGFpbC0+Y2JTaXplID0NCj4g
LSAgICAgICAgc2l6ZW9mIChTUF9ERVZJQ0VfSU5URVJGQUNFX0RFVEFJTF9EQVRBKTsNCj4gLQ0K
PiAtICAgIFN1Y2Nlc3MgPSBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsKERldmljZUlu
Zm9TZXQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkRldmljZUludGVyZmFjZURhdGEsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGV2aWNlSW50ZXJmYWNlRGV0YWlsLA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUsDQo+IC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gLSAgICBpZiAoIVN1Y2Nlc3Mp
DQo+IC0gICAgICAgIGdvdG8gZmFpbDU7DQo+IC0NCj4gLSAgICAqUGF0aCA9IF90Y3NkdXAoRGV2
aWNlSW50ZXJmYWNlRGV0YWlsLT5EZXZpY2VQYXRoKTsNCj4gLQ0KPiAtICAgIGlmICgqUGF0aCA9
PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWw2Ow0KPiAtDQo+IC0gICAgTG9nKCIlcyIsICpQ
YXRoKTsNCj4gLQ0KPiAtICAgIGZyZWUoRGV2aWNlSW50ZXJmYWNlRGV0YWlsKTsNCj4gLQ0KPiAt
ICAgIFNldHVwRGlEZXN0cm95RGV2aWNlSW5mb0xpc3QoRGV2aWNlSW5mb1NldCk7DQo+IC0NCj4g
LSAgICBMb2coIjw9PT09Iik7DQo+IC0NCj4gLSAgICByZXR1cm4gVFJVRTsNCj4gLQ0KPiAtZmFp
bDY6DQo+IC0gICAgTG9nKCJmYWlsNiIpOw0KPiAtDQo+IC1mYWlsNToNCj4gLSAgICBMb2coImZh
aWw1Iik7DQo+IC0NCj4gLSAgICBmcmVlKERldmljZUludGVyZmFjZURldGFpbCk7DQo+IC0NCj4g
LWZhaWw0Og0KPiAtICAgIExvZygiZmFpbDQiKTsNCj4gLQ0KPiAtZmFpbDM6DQo+IC0gICAgTG9n
KCJmYWlsMyIpOw0KPiAtDQo+IC1mYWlsMjoNCj4gLSAgICBMb2coImZhaWwyIik7DQo+IC0NCj4g
LSAgICBTZXR1cERpRGVzdHJveURldmljZUluZm9MaXN0KERldmljZUluZm9TZXQpOw0KPiAtDQo+
IC1mYWlsMToNCj4gLSAgICBFcnJvciA9IEdldExhc3RFcnJvcigpOw0KPiAtDQo+IC0gICAgew0K
PiAtICAgICAgICBQVENIQVIgIE1lc3NhZ2U7DQo+ICsgICAgICAgIFBDSEFSICBNZXNzYWdlOw0K
PiAgICAgICAgICBNZXNzYWdlID0gR2V0RXJyb3JNZXNzYWdlKEVycm9yKTsNCj4gICAgICAgICAg
TG9nKCJmYWlsMSAoJXMpIiwgTWVzc2FnZSk7DQo+ICAgICAgICAgIExvY2FsRnJlZShNZXNzYWdl
KTsNCj4gICAgICB9DQo+IC0NCj4gLSAgICByZXR1cm4gRkFMU0U7DQo+ICB9DQo+IA0KPiAgc3Rh
dGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gQEAgLTQyNSwyMiArMzI2LDI1IEBAIFB1dFN0cmluZygN
Cj4gICAgICB9DQo+ICB9DQo+IA0KPiArI2RlZmluZSBFQ0hPKF9IYW5kbGUsIF9CdWZmZXIpIFwN
Cj4gKyAgICBQdXRTdHJpbmcoKF9IYW5kbGUpLCAoUFVDSEFSKV9CdWZmZXIsIChEV09SRClzdHJs
ZW4oKF9CdWZmZXIpKSAqDQo+IHNpemVvZihDSEFSKSkNCj4gKw0KPiAgRFdPUkQgV0lOQVBJDQo+
IC1QaXBlVGhyZWFkKA0KPiArQ29ubmVjdGlvblRocmVhZCgNCj4gICAgICBJTiAgTFBWT0lEICAg
ICAgICAgIEFyZ3VtZW50DQo+ICAgICAgKQ0KPiAgew0KPiAtICAgIFBNT05JVE9SX0NPTlRFWFQg
ICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gLSAgICBQTU9OSVRPUl9QSVBFICAgICAg
IFBpcGUgPSAoUE1PTklUT1JfUElQRSlBcmd1bWVudDsNCj4gKyAgICBQTU9OSVRPUl9DT05ORUNU
SU9OIENvbm5lY3Rpb24gPQ0KPiAoUE1PTklUT1JfQ09OTkVDVElPTilBcmd1bWVudDsNCj4gKyAg
ICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGUgPSBDb25uZWN0aW9uLT5Db25zb2xlOw0KPiAg
ICAgIFVDSEFSICAgICAgICAgICAgICAgQnVmZmVyW01BWElNVU1fQlVGRkVSX1NJWkVdOw0KPiAg
ICAgIE9WRVJMQVBQRUQgICAgICAgICAgT3ZlcmxhcHBlZDsNCj4gICAgICBIQU5ETEUgICAgICAg
ICAgICAgIEhhbmRsZVsyXTsNCj4gICAgICBEV09SRCAgICAgICAgICAgICAgIExlbmd0aDsNCj4g
ICAgICBEV09SRCAgICAgICAgICAgICAgIE9iamVjdDsNCj4gICAgICBIUkVTVUxUICAgICAgICAg
ICAgIEVycm9yOw0KPiAtDQo+IC0gICAgTG9nKCI9PT09PiIpOw0KPiAtDQo+ICsNCj4gKyAgICBM
b2coIj09PT0+ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7DQo+ICsNCj4gICAgICBaZXJvTWVt
b3J5KCZPdmVybGFwcGVkLCBzaXplb2YoT1ZFUkxBUFBFRCkpOw0KPiAgICAgIE92ZXJsYXBwZWQu
aEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsDQo+IEBAIC00NDgsNjkgKzM1Miw2OSBAQCBQaXBlVGhyZWFkKA0KPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICAgICAgaWYgKE92
ZXJsYXBwZWQuaEV2ZW50ID09IE5VTEwpDQo+ICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IC0NCj4g
LSAgICBIYW5kbGVbMF0gPSBQaXBlLT5FdmVudDsNCj4gKw0KPiArICAgIEhhbmRsZVswXSA9IENv
bnNvbGUtPlNlcnZlckV2ZW50Ow0KPiAgICAgIEhhbmRsZVsxXSA9IE92ZXJsYXBwZWQuaEV2ZW50
Ow0KPiAtDQo+IC0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2Vj
dGlvbik7DQo+IC0gICAgX19JbnNlcnRUYWlsTGlzdCgmQ29udGV4dC0+TGlzdEhlYWQsICZQaXBl
LT5MaXN0RW50cnkpOw0KPiAtICAgICsrQ29udGV4dC0+TGlzdENvdW50Ow0KPiAtICAgIExlYXZl
Q3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOw0KPiAtDQo+ICsNCj4g
KyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsNCj4g
KyAgICBfX0luc2VydFRhaWxMaXN0KCZDb25zb2xlLT5MaXN0SGVhZCwgJkNvbm5lY3Rpb24tPkxp
c3RFbnRyeSk7DQo+ICsgICAgKytDb25zb2xlLT5MaXN0Q291bnQ7DQo+ICsgICAgTGVhdmVDcml0
aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2FsU2VjdGlvbik7DQo+ICsNCj4gICAgICBmb3Ig
KDs7KSB7DQo+IC0gICAgICAgIChWT0lEKSBSZWFkRmlsZShQaXBlLT5QaXBlLA0KPiArICAgICAg
ICAoVk9JRCkgUmVhZEZpbGUoQ29ubmVjdGlvbi0+UGlwZSwNCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihCdWZmZXIp
LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICZPdmVybGFwcGVkKTsNCj4gLQ0KPiArDQo+ICAgICAgICAgIE9iamVjdCA9IFdhaXRG
b3JNdWx0aXBsZU9iamVjdHMoQVJSQVlTSVpFKEhhbmRsZSksDQo+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElORklOSVRFKTsNCj4gICAgICAgICAgaWYgKE9iamVjdCA9PSBXQUlUX09C
SkVDVF8wKQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+IC0NCj4gLSAgICAgICAgaWYgKCFHZXRP
dmVybGFwcGVkUmVzdWx0KFBpcGUtPlBpcGUsDQo+ICsNCj4gKyAgICAgICAgaWYgKCFHZXRPdmVy
bGFwcGVkUmVzdWx0KENvbm5lY3Rpb24tPlBpcGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmT3ZlcmxhcHBlZCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZMZW5ndGgsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSkp
DQo+ICAgICAgICAgICAgICBicmVhazsNCj4gLQ0KPiArDQo+ICAgICAgICAgIFJlc2V0RXZlbnQo
T3ZlcmxhcHBlZC5oRXZlbnQpOw0KPiAtDQo+IC0gICAgICAgIFB1dFN0cmluZyhDb250ZXh0LT5E
ZXZpY2UsDQo+ICsNCj4gKyAgICAgICAgUHV0U3RyaW5nKENvbnNvbGUtPkRldmljZUhhbmRsZSwN
Cj4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gICAgICAgICAgICAgICAgICAgIExlbmd0
aCk7DQo+ICAgICAgfQ0KPiAtDQo+IC0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQt
PkNyaXRpY2FsU2VjdGlvbik7DQo+IC0gICAgX19SZW1vdmVFbnRyeUxpc3QoJlBpcGUtPkxpc3RF
bnRyeSk7DQo+IC0gICAgLS1Db250ZXh0LT5MaXN0Q291bnQ7DQo+IC0gICAgTGVhdmVDcml0aWNh
bFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7DQo+IC0NCj4gKw0KPiArICAgIEVu
dGVyQ3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5Dcml0aWNhbFNlY3Rpb24pOw0KPiArICAgIF9f
UmVtb3ZlRW50cnlMaXN0KCZDb25uZWN0aW9uLT5MaXN0RW50cnkpOw0KPiArICAgIC0tQ29uc29s
ZS0+TGlzdENvdW50Ow0KPiArICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5Dcml0
aWNhbFNlY3Rpb24pOw0KPiArDQo+ICAgICAgQ2xvc2VIYW5kbGUoT3ZlcmxhcHBlZC5oRXZlbnQp
Ow0KPiAtDQo+IC0gICAgRmx1c2hGaWxlQnVmZmVycyhQaXBlLT5QaXBlKTsNCj4gLSAgICBEaXNj
b25uZWN0TmFtZWRQaXBlKFBpcGUtPlBpcGUpOw0KPiAtICAgIENsb3NlSGFuZGxlKFBpcGUtPlBp
cGUpOw0KPiAtICAgIENsb3NlSGFuZGxlKFBpcGUtPlRocmVhZCk7DQo+IC0gICAgZnJlZShQaXBl
KTsNCj4gLQ0KPiAtICAgIExvZygiPD09PT0iKTsNCj4gLQ0KPiArDQo+ICsgICAgRmx1c2hGaWxl
QnVmZmVycyhDb25uZWN0aW9uLT5QaXBlKTsNCj4gKyAgICBEaXNjb25uZWN0TmFtZWRQaXBlKENv
bm5lY3Rpb24tPlBpcGUpOw0KPiArICAgIENsb3NlSGFuZGxlKENvbm5lY3Rpb24tPlBpcGUpOw0K
PiArICAgIENsb3NlSGFuZGxlKENvbm5lY3Rpb24tPlRocmVhZCk7DQo+ICsgICAgZnJlZShDb25u
ZWN0aW9uKTsNCj4gKw0KPiArICAgIExvZygiPD09PT0gJXMiLCBDb25zb2xlLT5EZXZpY2VOYW1l
KTsNCj4gKw0KPiAgICAgIHJldHVybiAwOw0KPiAtDQo+ICsNCj4gIGZhaWwxOg0KPiAgICAgIEVy
cm9yID0gR2V0TGFzdEVycm9yKCk7DQo+IC0NCj4gKw0KPiAgICAgIHsNCj4gICAgICAgICAgUFRD
SEFSICBNZXNzYWdlOw0KPiAgICAgICAgICBNZXNzYWdlID0gR2V0RXJyb3JNZXNzYWdlKEVycm9y
KTsNCj4gICAgICAgICAgTG9nKCJmYWlsMSAoJXMpIiwgTWVzc2FnZSk7DQo+ICAgICAgICAgIExv
Y2FsRnJlZShNZXNzYWdlKTsNCj4gICAgICB9DQo+IC0NCj4gKw0KPiAgICAgIHJldHVybiAxOw0K
PiAgfQ0KPiANCj4gQEAgLTUxOSwxOCArNDIzLDE3IEBAIFNlcnZlclRocmVhZCgNCj4gICAgICBJ
TiAgTFBWT0lEICAgICAgICAgIEFyZ3VtZW50DQo+ICAgICAgKQ0KPiAgew0KPiAtICAgIFBNT05J
VE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gKyAgICBQTU9OSVRP
Ul9DT05TT0xFICAgIENvbnNvbGUgPSAoUE1PTklUT1JfQ09OU09MRSlBcmd1bWVudDsNCj4gKyAg
ICBDSEFSICAgICAgICAgICAgICAgIFBpcGVOYW1lW01BWElNVU1fQlVGRkVSX1NJWkVdOw0KPiAg
ICAgIE9WRVJMQVBQRUQgICAgICAgICAgT3ZlcmxhcHBlZDsNCj4gICAgICBIQU5ETEUgICAgICAg
ICAgICAgIEhhbmRsZVsyXTsNCj4gICAgICBIQU5ETEUgICAgICAgICAgICAgIFBpcGU7DQo+ICAg
ICAgRFdPUkQgICAgICAgICAgICAgICBPYmplY3Q7DQo+IC0gICAgUE1PTklUT1JfUElQRSAgICAg
ICBJbnN0YW5jZTsNCj4gKyAgICBQTU9OSVRPUl9DT05ORUNUSU9OIENvbm5lY3Rpb247DQo+ICAg
ICAgSFJFU1VMVCAgICAgICAgICAgICBFcnJvcjsNCj4gLQ0KPiAtICAgIFVOUkVGRVJFTkNFRF9Q
QVJBTUVURVIoQXJndW1lbnQpOw0KPiAtDQo+IC0gICAgTG9nKCI9PT09PiIpOw0KPiAtDQo+ICsN
Cj4gKyAgICBMb2coIj09PT0+ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7DQo+ICsNCj4gICAg
ICBaZXJvTWVtb3J5KCZPdmVybGFwcGVkLCBzaXplb2YoT1ZFUkxBUFBFRCkpOw0KPiAgICAgIE92
ZXJsYXBwZWQuaEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsDQo+IEBAIC01MzgsMTIgKzQ0MSwyMiBAQCBTZXJ2ZXJU
aHJlYWQoDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4g
ICAgICBpZiAoT3ZlcmxhcHBlZC5oRXZlbnQgPT0gTlVMTCkNCj4gICAgICAgICAgZ290byBmYWls
MTsNCj4gLQ0KPiAtICAgIEhhbmRsZVswXSA9IENvbnRleHQtPlNlcnZlckV2ZW50Ow0KPiArDQo+
ICsgICAgSGFuZGxlWzBdID0gQ29uc29sZS0+U2VydmVyRXZlbnQ7DQo+ICAgICAgSGFuZGxlWzFd
ID0gT3ZlcmxhcHBlZC5oRXZlbnQ7DQo+ICsNCj4gKyAgICBFcnJvciA9IFN0cmluZ0NjaFByaW50
ZkEoUGlwZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWElNVU1fQlVG
RkVSX1NJWkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyVzIiwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUElQRV9CQVNFX05BTUUsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbnNvbGUtPkRldmljZU5hbWUpOw0KPiArICAgIGlmIChFcnJv
ciAhPSBTX09LICYmIEVycm9yICE9IFNUUlNBRkVfRV9JTlNVRkZJQ0lFTlRfQlVGRkVSKQ0KPiAr
ICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgTG9nKCIlcyIsIFBpcGVOYW1lKTsNCj4g
DQo+ICAgICAgZm9yICg7Oykgew0KPiAtICAgICAgICBQaXBlID0gQ3JlYXRlTmFtZWRQaXBlKFBJ
UEVfTkFNRSwNCj4gKyAgICAgICAgUGlwZSA9IENyZWF0ZU5hbWVkUGlwZShQaXBlTmFtZSwNCj4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSVBFX0FDQ0VTU19EVVBMRVggfCBGSUxF
X0ZMQUdfT1ZFUkxBUFBFRCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSVBF
X1RZUEVfTUVTU0FHRSB8IFBJUEVfUkVBRE1PREVfTUVTU0FHRSwNCj4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsDQo+IEBAIC01NTIsMTEg
KzQ2NSwxMSBAQCBTZXJ2ZXJUaHJlYWQoDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gICAgICAg
ICAgaWYgKFBpcGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+IC0gICAgICAgICAgICBnb3Rv
IGZhaWwyOw0KPiAtDQo+ICsgICAgICAgICAgICBnb3RvIGZhaWwzOw0KPiArDQo+ICAgICAgICAg
IChWT0lEKSBDb25uZWN0TmFtZWRQaXBlKFBpcGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZPdmVybGFwcGVkKTsNCj4gLQ0KPiArDQo+ICAgICAgICAgIE9iamVjdCA9IFdh
aXRGb3JNdWx0aXBsZU9iamVjdHMoQVJSQVlTSVpFKEhhbmRsZSksDQo+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiBAQCAtNTY1LDE0NiArNDc4LDYwIEBAIFNl
cnZlclRocmVhZCgNCj4gICAgICAgICAgICAgIENsb3NlSGFuZGxlKFBpcGUpOw0KPiAgICAgICAg
ICAgICAgYnJlYWs7DQo+ICAgICAgICAgIH0NCj4gLQ0KPiArDQo+ICAgICAgICAgIFJlc2V0RXZl
bnQoT3ZlcmxhcHBlZC5oRXZlbnQpOw0KPiAtDQo+IC0gICAgICAgIEluc3RhbmNlID0gKFBNT05J
VE9SX1BJUEUpbWFsbG9jKHNpemVvZihNT05JVE9SX1BJUEUpKTsNCj4gLSAgICAgICAgaWYgKElu
c3RhbmNlID09IE5VTEwpDQo+IC0gICAgICAgICAgICBnb3RvIGZhaWwzOw0KPiAtDQo+IC0gICAg
ICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZJbnN0YW5jZS0+TGlzdEVudHJ5KTsNCj4gLSAgICAg
ICAgSW5zdGFuY2UtPlBpcGUgPSBQaXBlOw0KPiAtICAgICAgICBJbnN0YW5jZS0+RXZlbnQgPSBD
b250ZXh0LT5TZXJ2ZXJFdmVudDsNCj4gLSAgICAgICAgSW5zdGFuY2UtPlRocmVhZCA9IENyZWF0
ZVRocmVhZChOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGlwZVRocmVh
ZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW5jZSwN
Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAtICAgICAgICBpZiAo
SW5zdGFuY2UtPlRocmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gKw0KPiArICAgICAg
ICBDb25uZWN0aW9uID0NCj4gKFBNT05JVE9SX0NPTk5FQ1RJT04pbWFsbG9jKHNpemVvZihNT05J
VE9SX0NPTk5FQ1RJT04pKTsNCj4gKyAgICAgICAgaWYgKENvbm5lY3Rpb24gPT0gTlVMTCkNCj4g
ICAgICAgICAgICAgIGdvdG8gZmFpbDQ7DQo+ICsNCj4gKyAgICAgICAgX19Jbml0aWFsaXplTGlz
dEhlYWQoJkNvbm5lY3Rpb24tPkxpc3RFbnRyeSk7DQo+ICsgICAgICAgIENvbm5lY3Rpb24tPkNv
bnNvbGUgPSBDb25zb2xlOw0KPiArICAgICAgICBDb25uZWN0aW9uLT5QaXBlID0gUGlwZTsNCj4g
KyAgICAgICAgQ29ubmVjdGlvbi0+VGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEwsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGlvblRocmVhZCwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb24sDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsgICAgICAgIGlmIChDb25u
ZWN0aW9uLT5UaHJlYWQgPT0gTlVMTCkNCj4gKyAgICAgICAgICAgIGdvdG8gZmFpbDU7DQo+ICAg
ICAgfQ0KPiAtDQo+ICsNCj4gICAgICBDbG9zZUhhbmRsZShPdmVybGFwcGVkLmhFdmVudCk7DQo+
ICsNCj4gKyAgICBMb2coIjw9PT09ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7DQo+ICsNCj4g
KyAgICByZXR1cm4gMDsNCj4gDQo+IC0gICAgTG9nKCI8PT09PSIpOw0KPiArZmFpbDU6DQo+ICsg
ICAgTG9nKCJmYWlsNSIpOw0KPiANCj4gLSAgICByZXR1cm4gMDsNCj4gKyAgICBmcmVlKENvbm5l
Y3Rpb24pOw0KPiANCj4gIGZhaWw0Og0KPiAgICAgIExvZygiZmFpbDQiKTsNCj4gDQo+IC0gICAg
ZnJlZShJbnN0YW5jZSk7DQo+ICsgICAgQ2xvc2VIYW5kbGUoUGlwZSk7DQo+IA0KPiAgZmFpbDM6
DQo+ICAgICAgTG9nKCJmYWlsMyIpOw0KPiANCj4gLSAgICBDbG9zZUhhbmRsZShQaXBlKTsNCj4g
LQ0KPiAgZmFpbDI6DQo+ICAgICAgTG9nKCJmYWlsMiIpOw0KPiArDQo+ICsgICAgQ2xvc2VIYW5k
bGUoT3ZlcmxhcHBlZC5oRXZlbnQpOw0KPiANCj4gIGZhaWwxOg0KPiAgICAgIEVycm9yID0gR2V0
TGFzdEVycm9yKCk7DQo+IC0NCj4gLSAgICB7DQo+IC0gICAgICAgIFBUQ0hBUiAgTWVzc2FnZTsN
Cj4gLSAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7DQo+IC0gICAgICAg
IExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOw0KPiAtICAgICAgICBMb2NhbEZyZWUoTWVzc2Fn
ZSk7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgcmV0dXJuIDE7DQo+IC19DQo+IC0NCj4gLURXT1JE
IFdJTkFQSQ0KPiAtTW9uaXRvclRocmVhZCgNCj4gLSAgICBJTiAgTFBWT0lEICAgICAgICAgIEFy
Z3VtZW50DQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4
dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gLSAgICBQUk9DRVNTX0lORk9STUFUSU9OIFByb2Nlc3NJ
bmZvOw0KPiAtICAgIFNUQVJUVVBJTkZPICAgICAgICAgU3RhcnR1cEluZm87DQo+IC0gICAgQk9P
TCAgICAgICAgICAgICAgICBTdWNjZXNzOw0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgSGFu
ZGxlWzJdOw0KPiAtICAgIERXT1JEICAgICAgICAgICAgICAgT2JqZWN0Ow0KPiAtICAgIEhSRVNV
TFQgICAgICAgICAgICAgRXJyb3I7DQo+IC0NCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVS
KEFyZ3VtZW50KTsNCj4gLQ0KPiAtICAgIExvZygiPT09PT4iKTsNCj4gLQ0KPiAtICAgIC8vIElm
IHRoZXJlIGlzIG5vIGV4ZWN1dGFibGUsIHRoaXMgdGhyZWFkIGNhbiBmaW5pc2ggbm93Lg0KPiAt
ICAgIGlmIChDb250ZXh0LT5FeGVjdXRhYmxlID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZG9u
ZTsNCj4gLQ0KPiAtYWdhaW46DQo+IC0gICAgWmVyb01lbW9yeSgmUHJvY2Vzc0luZm8sIHNpemVv
ZiAoUHJvY2Vzc0luZm8pKTsNCj4gLSAgICBaZXJvTWVtb3J5KCZTdGFydHVwSW5mbywgc2l6ZW9m
IChTdGFydHVwSW5mbykpOw0KPiAtICAgIFN0YXJ0dXBJbmZvLmNiID0gc2l6ZW9mIChTdGFydHVw
SW5mbyk7DQo+IC0NCj4gLSAgICBMb2coIkV4ZWN1dGluZzogJXMiLCBDb250ZXh0LT5FeGVjdXRh
YmxlKTsNCj4gLQ0KPiAtI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjYwNTMpIC8vIENvbW1hbmRM
aW5lIG1pZ2h0IG5vdCBiZSBOVUwtDQo+IHRlcm1pbmF0ZWQNCj4gLSAgICBTdWNjZXNzID0gQ3Jl
YXRlUHJvY2VzcyhOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQt
PkV4ZWN1dGFibGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURV9OT19X
SU5ET1cgfA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURV9ORVdfUFJPQ0VT
U19HUk9VUCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJlN0YXJ0dXBJbmZvLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQcm9jZXNz
SW5mbyk7DQo+IC0gICAgaWYgKCFTdWNjZXNzKQ0KPiAtICAgICAgICBnb3RvIGZhaWwxOw0KPiAt
DQo+IC0gICAgSGFuZGxlWzBdID0gQ29udGV4dC0+TW9uaXRvckV2ZW50Ow0KPiAtICAgIEhhbmRs
ZVsxXSA9IFByb2Nlc3NJbmZvLmhQcm9jZXNzOw0KPiAtDQo+IC0gICAgT2JqZWN0ID0gV2FpdEZv
ck11bHRpcGxlT2JqZWN0cyhBUlJBWVNJWkUoSGFuZGxlKSwNCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5G
SU5JVEUpOw0KPiAtDQo+IC0jZGVmaW5lIFdBSVRfT0JKRUNUXzEgKFdBSVRfT0JKRUNUXzAgKyAx
KQ0KPiAtDQo+IC0gICAgc3dpdGNoIChPYmplY3QpIHsNCj4gLSAgICBjYXNlIFdBSVRfT0JKRUNU
XzA6DQo+IC0gICAgICAgIFJlc2V0RXZlbnQoQ29udGV4dC0+TW9uaXRvckV2ZW50KTsNCj4gLQ0K
PiAtICAgICAgICBUZXJtaW5hdGVQcm9jZXNzKFByb2Nlc3NJbmZvLmhQcm9jZXNzLCAxKTsNCj4g
LSAgICAgICAgQ2xvc2VIYW5kbGUoUHJvY2Vzc0luZm8uaFByb2Nlc3MpOw0KPiAtICAgICAgICBD
bG9zZUhhbmRsZShQcm9jZXNzSW5mby5oVGhyZWFkKTsNCj4gLSAgICAgICAgYnJlYWs7DQo+IC0N
Cj4gLSAgICBjYXNlIFdBSVRfT0JKRUNUXzE6DQo+IC0gICAgICAgIENsb3NlSGFuZGxlKFByb2Nl
c3NJbmZvLmhQcm9jZXNzKTsNCj4gLSAgICAgICAgQ2xvc2VIYW5kbGUoUHJvY2Vzc0luZm8uaFRo
cmVhZCk7DQo+IC0gICAgICAgIGdvdG8gYWdhaW47DQo+IC0NCj4gLSAgICBkZWZhdWx0Og0KPiAt
ICAgICAgICBicmVhazsNCj4gLSAgICB9DQo+IC0NCj4gLS8vI3VuZGVmIFdBSVRfT0JKRUNUXzEN
Cj4gLQ0KPiAtZG9uZToNCj4gLSAgICBMb2coIjw9PT09Iik7DQo+IC0NCj4gLSAgICByZXR1cm4g
MDsNCj4gLQ0KPiAtZmFpbDE6DQo+IC0gICAgRXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsNCj4gLQ0K
PiArDQo+ICAgICAgew0KPiAgICAgICAgICBQVENIQVIgIE1lc3NhZ2U7DQo+ICAgICAgICAgIE1l
c3NhZ2UgPSBHZXRFcnJvck1lc3NhZ2UoRXJyb3IpOw0KPiAgICAgICAgICBMb2coImZhaWwxICgl
cykiLCBNZXNzYWdlKTsNCj4gICAgICAgICAgTG9jYWxGcmVlKE1lc3NhZ2UpOw0KPiAgICAgIH0N
Cj4gLQ0KPiArDQo+ICAgICAgcmV0dXJuIDE7DQo+ICB9DQo+IA0KPiBAQCAtNzEzLDcgKzU0MCw3
IEBAIERldmljZVRocmVhZCgNCj4gICAgICBJTiAgTFBWT0lEICAgICAgICAgIEFyZ3VtZW50DQo+
ICAgICAgKQ0KPiAgew0KPiAtICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25p
dG9yQ29udGV4dDsNCj4gKyAgICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGUgPSAoUE1PTklU
T1JfQ09OU09MRSlBcmd1bWVudDsNCj4gICAgICBPVkVSTEFQUEVEICAgICAgICAgIE92ZXJsYXBw
ZWQ7DQo+ICAgICAgSEFORExFICAgICAgICAgICAgICBEZXZpY2U7DQo+ICAgICAgVUNIQVIgICAg
ICAgICAgICAgICBCdWZmZXJbTUFYSU1VTV9CVUZGRVJfU0laRV07DQo+IEBAIC03MjEsMTEgKzU0
OCw5IEBAIERldmljZVRocmVhZCgNCj4gICAgICBEV09SRCAgICAgICAgICAgICAgIFdhaXQ7DQo+
ICAgICAgSEFORExFICAgICAgICAgICAgICBIYW5kbGVzWzJdOw0KPiAgICAgIERXT1JEICAgICAg
ICAgICAgICAgRXJyb3I7DQo+IC0NCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEFyZ3Vt
ZW50KTsNCj4gLQ0KPiAtICAgIExvZygiPT09PT4iKTsNCj4gLQ0KPiArDQo+ICsgICAgTG9nKCI9
PT09PiAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOw0KPiArDQo+ICAgICAgWmVyb01lbW9yeSgm
T3ZlcmxhcHBlZCwgc2l6ZW9mKE9WRVJMQVBQRUQpKTsNCj4gICAgICBPdmVybGFwcGVkLmhFdmVu
dCA9IENyZWF0ZUV2ZW50KE5VTEwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUlVFLA0KPiBAQCAtNzMzLDcyICs1NTgsMTcyIEBAIERldmljZVRocmVhZCgNCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAgICAgIGlmIChPdmVy
bGFwcGVkLmhFdmVudCA9PSBOVUxMKQ0KPiAgICAgICAgICBnb3RvIGZhaWwxOw0KPiAtDQo+IC0g
ICAgSGFuZGxlc1swXSA9IENvbnRleHQtPkRldmljZUV2ZW50Ow0KPiArDQo+ICsgICAgSGFuZGxl
c1swXSA9IENvbnNvbGUtPkRldmljZUV2ZW50Ow0KPiAgICAgIEhhbmRsZXNbMV0gPSBPdmVybGFw
cGVkLmhFdmVudDsNCj4gLQ0KPiAtICAgIERldmljZSA9IENyZWF0ZUZpbGUoQ29udGV4dC0+RGV2
aWNlUGF0aCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAg
ICAgICAgT1BFTl9FWElTVElORywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxB
R19PVkVSTEFQUEVELA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsNCj4g
KyAgICBEZXZpY2UgPSBDcmVhdGVGaWxlVyhDb25zb2xlLT5EZXZpY2VQYXRoLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgT1BFTl9FWElT
VElORywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gICAgICBpZiAoRGV2aWNlID09
IElOVkFMSURfSEFORExFX1ZBTFVFKQ0KPiAgICAgICAgICBnb3RvIGZhaWwyOw0KPiAtDQo+ICsN
Cj4gICAgICBmb3IgKDs7KSB7DQo+ICAgICAgICAgIFBMSVNUX0VOVFJZICAgICBMaXN0RW50cnk7
DQo+IC0NCj4gKw0KPiAgICAgICAgICAoVk9JRCkgUmVhZEZpbGUoRGV2aWNlLA0KPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVyLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKEJ1ZmZlciksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgJk92ZXJsYXBwZWQpOw0KPiAtDQo+ICsNCj4gICAgICAgICAgV2Fp
dCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoQVJSQVlTSVpFKEhhbmRsZXMpLA0KPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVzLA0KPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSU5GSU5JVEUpOw0KPiAgICAgICAgICBpZiAoV2FpdCA9PSBXQUlU
X09CSkVDVF8wKQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+IC0NCj4gKw0KPiAgICAgICAgICBp
ZiAoIUdldE92ZXJsYXBwZWRSZXN1bHQoRGV2aWNlLA0KPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJk92ZXJsYXBwZWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmTGVuZ3RoLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Up
KQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+IC0NCj4gKw0KPiAgICAgICAgICBSZXNldEV2ZW50
KE92ZXJsYXBwZWQuaEV2ZW50KTsNCj4gKw0KPiArICAgICAgICBFbnRlckNyaXRpY2FsU2VjdGlv
bigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsNCj4gKw0KPiArICAgICAgICBmb3IgKExpc3RF
bnRyeSA9IENvbnNvbGUtPkxpc3RIZWFkLkZsaW5rOw0KPiArICAgICAgICAgICAgICAgIExpc3RF
bnRyeSAhPSAmQ29uc29sZS0+TGlzdEhlYWQ7DQo+ICsgICAgICAgICAgICAgICAgTGlzdEVudHJ5
ID0gTGlzdEVudHJ5LT5GbGluaykgew0KPiArICAgICAgICAgICAgUE1PTklUT1JfQ09OTkVDVElP
TiBDb25uZWN0aW9uOw0KPiArDQo+ICsgICAgICAgICAgICBDb25uZWN0aW9uID0gQ09OVEFJTklO
R19SRUNPUkQoTGlzdEVudHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1PTklUT1JfQ09OTkVDVElPTiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMaXN0RW50cnkpOw0KPiArDQo+ICsgICAgICAgICAgICBQdXRT
dHJpbmcoQ29ubmVjdGlvbi0+UGlwZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIs
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKTsNCj4gKyAgICAgICAgfQ0KPiANCj4g
LSAgICAgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7
DQo+ICsgICAgICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5Dcml0aWNhbFNlY3Rp
b24pOw0KPiArICAgIH0NCj4gKw0KPiArICAgIENsb3NlSGFuZGxlKERldmljZSk7DQo+ICsNCj4g
KyAgICBDbG9zZUhhbmRsZShPdmVybGFwcGVkLmhFdmVudCk7DQo+ICsNCj4gKyAgICBMb2coIjw9
PT09ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsNCj4g
Kw0KPiArZmFpbDI6DQo+ICsgICAgTG9nKCJmYWlsMlxuIik7DQo+ICsNCj4gKyAgICBDbG9zZUhh
bmRsZShPdmVybGFwcGVkLmhFdmVudCk7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yID0g
R2V0TGFzdEVycm9yKCk7DQo+ICsNCj4gKyAgICB7DQo+ICsgICAgICAgIFBUQ0hBUiAgTWVzc2Fn
ZTsNCj4gKyAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7DQo+ICsgICAg
ICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOw0KPiArICAgICAgICBMb2NhbEZyZWUoTWVz
c2FnZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDE7DQo+ICt9DQo+IA0KPiAtICAg
ICAgICBmb3IgKExpc3RFbnRyeSA9IENvbnRleHQtPkxpc3RIZWFkLkZsaW5rOw0KPiAtICAgICAg
ICAgICAgIExpc3RFbnRyeSAhPSAmQ29udGV4dC0+TGlzdEhlYWQ7DQo+IC0gICAgICAgICAgICAg
TGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgew0KPiAtICAgICAgICAgICAgUE1PTklUT1Jf
UElQRSAgIEluc3RhbmNlOw0KPiArc3RhdGljIEJPT0wNCj4gK0dldEV4ZWN1dGFibGUoDQo+ICsg
ICAgSU4gIFBDSEFSICAgICAgICAgICBEZXZpY2VOYW1lLA0KPiArICAgIE9VVCBQQ0hBUiAgICAg
ICAgICAgKkV4ZWN1dGFibGUNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUE1PTklUT1JfQ09OVEVY
VCAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0Ow0KPiArICAgIEhLRVkgICAgICAgICAgICAg
ICAgS2V5Ow0KPiArICAgIERXT1JEICAgICAgICAgICAgICAgTWF4VmFsdWVMZW5ndGg7DQo+ICsg
ICAgRFdPUkQgICAgICAgICAgICAgICBFeGVjdXRhYmxlTGVuZ3RoOw0KPiArICAgIERXT1JEICAg
ICAgICAgICAgICAgVHlwZTsNCj4gKyAgICBIUkVTVUxUICAgICAgICAgICAgIEVycm9yOw0KPiAN
Cj4gLSAgICAgICAgICAgIEluc3RhbmNlID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBN
T05JVE9SX1BJUEUsDQo+IExpc3RFbnRyeSk7DQo+ICsgICAgRXJyb3IgPSBSZWdPcGVuS2V5RXhB
KENvbnRleHQtPlBhcmFtZXRlcnNLZXksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIERl
dmljZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtFWV9SRUFELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAm
S2V5KTsNCj4gKyAgICBpZiAoRXJyb3IgIT0gRVJST1JfU1VDQ0VTUykgew0KPiArICAgICAgICBT
ZXRMYXN0RXJyb3IoRXJyb3IpOw0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArICAgIH0NCj4g
DQo+IC0gICAgICAgICAgICBQdXRTdHJpbmcoSW5zdGFuY2UtPlBpcGUsDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyLA0KPiAtICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCk7DQo+
IC0gICAgICAgIH0NCj4gLSAgICAgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNy
aXRpY2FsU2VjdGlvbik7DQo+ICsgICAgRXJyb3IgPSBSZWdRdWVyeUluZm9LZXkoS2V5LA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTWF4VmFsdWVM
ZW5ndGgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAoRXJyb3IgIT0gRVJST1JfU1VD
Q0VTUykgew0KPiArICAgICAgICBTZXRMYXN0RXJyb3IoRXJyb3IpOw0KPiArICAgICAgICBnb3Rv
IGZhaWwyOw0KPiAgICAgIH0NCj4gDQo+IC0gICAgQ2xvc2VIYW5kbGUoRGV2aWNlKTsNCj4gKyAg
ICBFeGVjdXRhYmxlTGVuZ3RoID0gTWF4VmFsdWVMZW5ndGg7DQo+IA0KPiAtICAgIENsb3NlSGFu
ZGxlKE92ZXJsYXBwZWQuaEV2ZW50KTsNCj4gKyAgICAqRXhlY3V0YWJsZSA9IGNhbGxvYygxLCBF
eGVjdXRhYmxlTGVuZ3RoKTsNCj4gKyAgICBpZiAoRXhlY3V0YWJsZSA9PSBOVUxMKQ0KPiArICAg
ICAgICBnb3RvIGZhaWwzOw0KPiANCj4gLSAgICBMb2coIjw9PT09Iik7DQo+ICsgICAgRXJyb3Ig
PSBSZWdRdWVyeVZhbHVlRXhBKEtleSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4ZWN1dGFibGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVHlwZSwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKExQQllURSkoKkV4ZWN1dGFibGUpLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmRXhlY3V0YWJsZUxlbmd0aCk7DQo+ICsgICAgaWYgKEVycm9yICE9IEVSUk9S
X1NVQ0NFU1MpIHsNCj4gKyAgICAgICAgU2V0TGFzdEVycm9yKEVycm9yKTsNCj4gKyAgICAgICAg
Z290byBmYWlsNDsNCj4gKyAgICB9DQo+IA0KPiAtICAgIHJldHVybiAwOw0KPiArICAgIGlmIChU
eXBlICE9IFJFR19TWikgew0KPiArICAgICAgICBTZXRMYXN0RXJyb3IoRVJST1JfQkFEX0ZPUk1B
VCk7DQo+ICsgICAgICAgIGdvdG8gZmFpbDU7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgTG9nKCIl
cyA9ICVzIiwgRGV2aWNlTmFtZSwgKkV4ZWN1dGFibGUpOw0KPiArDQo+ICsgICAgUmVnQ2xvc2VL
ZXkoS2V5KTsNCj4gKw0KPiArICAgIHJldHVybiBUUlVFOw0KPiArDQo+ICtmYWlsNToNCj4gKyAg
ICBMb2coImZhaWw1Iik7DQo+ICsNCj4gK2ZhaWw0Og0KPiArICAgIExvZygiZmFpbDQiKTsNCj4g
Kw0KPiArICAgIGZyZWUoKkV4ZWN1dGFibGUpOw0KPiArDQo+ICtmYWlsMzoNCj4gKyAgICBMb2co
ImZhaWwzIik7DQo+IA0KPiAgZmFpbDI6DQo+IC0gICAgTG9nKCJmYWlsMlxuIik7DQo+ICsgICAg
TG9nKCJmYWlsMiIpOw0KPiANCj4gLSAgICBDbG9zZUhhbmRsZShPdmVybGFwcGVkLmhFdmVudCk7
DQo+ICsgICAgUmVnQ2xvc2VLZXkoS2V5KTsNCj4gDQo+ICBmYWlsMToNCj4gICAgICBFcnJvciA9
IEdldExhc3RFcnJvcigpOw0KPiBAQCAtODEwLDI3OCArNzM1LDYxNCBAQCBmYWlsMToNCj4gICAg
ICAgICAgTG9jYWxGcmVlKE1lc3NhZ2UpOw0KPiAgICAgIH0NCj4gDQo+IC0gICAgcmV0dXJuIDE7
DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiAgfQ0KPiANCj4gLSNkZWZpbmUgRUNITyhfSGFuZGxl
LCBfQnVmZmVyKSBcDQo+IC0gICAgUHV0U3RyaW5nKChfSGFuZGxlKSwgKFBVQ0hBUilURVhUKF9C
dWZmZXIpLA0KPiAoRFdPUkQpX3Rjc2xlbigoX0J1ZmZlcikpICogc2l6ZW9mKFRDSEFSKSkNCj4g
K0RXT1JEIFdJTkFQSQ0KPiArRXhlY3V0YWJsZVRocmVhZCgNCj4gKyAgICBJTiAgTFBWT0lEICAg
ICAgICAgIEFyZ3VtZW50DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBNT05JVE9SX0NPTlNPTEUg
ICAgQ29uc29sZSA9IChQTU9OSVRPUl9DT05TT0xFKUFyZ3VtZW50Ow0KPiArICAgIFBDSEFSICAg
ICAgICAgICAgICAgRXhlY3V0YWJsZTsNCj4gKyAgICBQUk9DRVNTX0lORk9STUFUSU9OIFByb2Nl
c3NJbmZvOw0KPiArICAgIFNUQVJUVVBJTkZPICAgICAgICAgU3RhcnR1cEluZm87DQo+ICsgICAg
Qk9PTCAgICAgICAgICAgICAgICBTdWNjZXNzOw0KPiArICAgIEhBTkRMRSAgICAgICAgICAgICAg
SGFuZGxlWzJdOw0KPiArICAgIERXT1JEICAgICAgICAgICAgICAgT2JqZWN0Ow0KPiArICAgIEhS
RVNVTFQgICAgICAgICAgICAgRXJyb3I7DQo+ICsNCj4gKyAgICBMb2coIj09PT0+ICVzIiwgQ29u
c29sZS0+RGV2aWNlTmFtZSk7DQo+ICsNCj4gKyAgICAvLyBJZiB0aGVyZSBpcyBubyBleGVjdXRh
YmxlLCB0aGlzIHRocmVhZCBjYW4gZmluaXNoIG5vdy4NCj4gKyAgICBpZiAoIUdldEV4ZWN1dGFi
bGUoQ29uc29sZS0+RGV2aWNlTmFtZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgJkV4ZWN1
dGFibGUpKQ0KPiArICAgICAgICBnb3RvIGRvbmU7DQo+ICsgICAgaWYgKEV4ZWN1dGFibGUgPT0g
TlVMTCkNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICthZ2FpbjoNCj4gKyAgICBaZXJv
TWVtb3J5KCZQcm9jZXNzSW5mbywgc2l6ZW9mIChQcm9jZXNzSW5mbykpOw0KPiArICAgIFplcm9N
ZW1vcnkoJlN0YXJ0dXBJbmZvLCBzaXplb2YgKFN0YXJ0dXBJbmZvKSk7DQo+ICsgICAgU3RhcnR1
cEluZm8uY2IgPSBzaXplb2YgKFN0YXJ0dXBJbmZvKTsNCj4gKw0KPiArICAgIExvZygiRXhlY3V0
aW5nOiAlcyIsIEV4ZWN1dGFibGUpOw0KPiArDQo+ICsjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6
NjA1MykgLy8gQ29tbWFuZExpbmUgbWlnaHQgbm90IGJlIE5VTC0NCj4gdGVybWluYXRlZA0KPiAr
ICAgIFN1Y2Nlc3MgPSBDcmVhdGVQcm9jZXNzKE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXhlY3V0YWJsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JF
QVRFX05PX1dJTkRPVyB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX05F
V19QUk9DRVNTX0dST1VQLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmU3RhcnR1cEluZm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlByb2Nlc3NJbmZvKTsNCj4gKyAgICBpZiAoIVN1Y2Nlc3MpDQo+ICsgICAgICAgIGdvdG8gZmFp
bDE7DQo+ICsNCj4gKyAgICBIYW5kbGVbMF0gPSBDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQ7DQo+
ICsgICAgSGFuZGxlWzFdID0gUHJvY2Vzc0luZm8uaFByb2Nlc3M7DQo+ICsNCj4gKyAgICBPYmpl
Y3QgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEFSUkFZU0laRShIYW5kbGUpLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJTkZJTklURSk7DQo+ICsNCj4gKyNkZWZpbmUgV0FJVF9PQkpFQ1RfMSAoV0FJ
VF9PQkpFQ1RfMCArIDEpDQo+ICsNCj4gKyAgICBzd2l0Y2ggKE9iamVjdCkgew0KPiArICAgIGNh
c2UgV0FJVF9PQkpFQ1RfMDoNCj4gKyAgICAgICAgUmVzZXRFdmVudChDb25zb2xlLT5FeGVjdXRh
YmxlRXZlbnQpOw0KPiArDQo+ICsgICAgICAgIFRlcm1pbmF0ZVByb2Nlc3MoUHJvY2Vzc0luZm8u
aFByb2Nlc3MsIDEpOw0KPiArICAgICAgICBDbG9zZUhhbmRsZShQcm9jZXNzSW5mby5oUHJvY2Vz
cyk7DQo+ICsgICAgICAgIENsb3NlSGFuZGxlKFByb2Nlc3NJbmZvLmhUaHJlYWQpOw0KPiArICAg
ICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgV0FJVF9PQkpFQ1RfMToNCj4gKyAgICAgICAg
Q2xvc2VIYW5kbGUoUHJvY2Vzc0luZm8uaFByb2Nlc3MpOw0KPiArICAgICAgICBDbG9zZUhhbmRs
ZShQcm9jZXNzSW5mby5oVGhyZWFkKTsNCj4gKyAgICAgICAgZ290byBhZ2FpbjsNCj4gKw0KPiAr
ICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArLy8jdW5k
ZWYgV0FJVF9PQkpFQ1RfMQ0KPiArDQo+ICsgICAgZnJlZShFeGVjdXRhYmxlKTsNCj4gDQo+IC1z
dGF0aWMgVk9JRA0KPiAtTW9uaXRvckFkZCgNCj4gLSAgICBWT0lEDQo+ICtkb25lOg0KPiArICAg
IExvZygiPD09PT0gJXMiLCBDb25zb2xlLT5EZXZpY2VOYW1lKTsNCj4gKw0KPiArICAgIHJldHVy
biAwOw0KPiArDQo+ICtmYWlsMToNCj4gKyAgICBFcnJvciA9IEdldExhc3RFcnJvcigpOw0KPiAr
DQo+ICsgICAgZnJlZShFeGVjdXRhYmxlKTsNCj4gKw0KPiArICAgIHsNCj4gKyAgICAgICAgUFRD
SEFSICBNZXNzYWdlOw0KPiArICAgICAgICBNZXNzYWdlID0gR2V0RXJyb3JNZXNzYWdlKEVycm9y
KTsNCj4gKyAgICAgICAgTG9nKCJmYWlsMSAoJXMpIiwgTWVzc2FnZSk7DQo+ICsgICAgICAgIExv
Y2FsRnJlZShNZXNzYWdlKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gMTsNCj4gK30N
Cj4gKw0KPiArc3RhdGljIFBNT05JVE9SX0NPTlNPTEUNCj4gK0NvbnNvbGVDcmVhdGUoDQo+ICsg
ICAgSU4gIFBXQ0hBUiAgICAgICAgICAgICAgRGV2aWNlUGF0aA0KPiAgICAgICkNCj4gIHsNCj4g
ICAgICBQTU9OSVRPUl9DT05URVhUICAgICAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0Ow0K
PiAtICAgIFBUQ0hBUiAgICAgICAgICAgICAgICAgIFBhdGg7DQo+ICsgICAgUE1PTklUT1JfQ09O
U09MRSAgICAgICAgQ29uc29sZTsNCj4gICAgICBERVZfQlJPQURDQVNUX0hBTkRMRSAgICBIYW5k
bGU7DQo+IC0gICAgSFJFU1VMVCAgICAgICAgICAgICAgICAgRXJyb3I7DQo+ICsgICAgQ0hBUiAg
ICAgICAgICAgICAgICAgICAgRGV2aWNlTmFtZVtNQVhfUEFUSF07DQo+ICsgICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgQnl0ZXM7DQo+ICAgICAgQk9PTCAgICAgICAgICAgICAgICAgICAgU3Vj
Y2VzczsNCj4gKyAgICBIUkVTVUxUICAgICAgICAgICAgICAgICBFcnJvcjsNCj4gDQo+IC0gICAg
aWYgKENvbnRleHQtPkRldmljZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gLSAgICAgICAg
cmV0dXJuOw0KPiAtDQo+IC0gICAgTG9nKCI9PT09PiIpOw0KPiAtDQo+IC0gICAgU3VjY2VzcyA9
IE1vbml0b3JHZXRQYXRoKCZHVUlEX1hFTkNPTlNfREVWSUNFLCAmUGF0aCk7DQo+ICsgICAgTG9n
KCI9PT09PiAld3MiLCBEZXZpY2VQYXRoKTsNCj4gDQo+IC0gICAgaWYgKCFTdWNjZXNzKQ0KPiAr
ICAgIENvbnNvbGUgPSBtYWxsb2Moc2l6ZW9mKE1PTklUT1JfQ09OU09MRSkpOw0KPiArICAgIGlm
IChDb25zb2xlID09IE5VTEwpDQo+ICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IA0KPiAtICAgIENv
bnRleHQtPkRldmljZSA9IENyZWF0ZUZpbGUoUGF0aCwNCj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdFTkVSSUNfV1JJVEUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLA0KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9QRU5fRVhJU1RJTkcsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMKTsNCj4gKyAgICBtZW1zZXQoQ29uc29sZSwgMCwgc2l6ZW9mKE1PTklUT1Jf
Q09OU09MRSkpOw0KPiArICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb25zb2xlLT5MaXN0SGVh
ZCk7DQo+ICsgICAgX19Jbml0aWFsaXplTGlzdEhlYWQoJkNvbnNvbGUtPkxpc3RFbnRyeSk7DQo+
ICsgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9u
KTsNCj4gDQo+IC0gICAgaWYgKENvbnRleHQtPkRldmljZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkNCj4gKyAgICBDb25zb2xlLT5EZXZpY2VQYXRoID0gX3djc2R1cChEZXZpY2VQYXRoKTsNCj4g
KyAgICBpZiAoQ29uc29sZS0+RGV2aWNlUGF0aCA9PSBOVUxMKQ0KPiAgICAgICAgICBnb3RvIGZh
aWwyOw0KPiANCj4gLSAgICBFQ0hPKENvbnRleHQtPkRldmljZSwgIlxyXG5bQVRUQUNIRURdXHJc
biIpOw0KPiAtDQo+IC0gICAgWmVyb01lbW9yeSgmSGFuZGxlLCBzaXplb2YgKEhhbmRsZSkpOw0K
PiAtICAgIEhhbmRsZS5kYmNoX3NpemUgPSBzaXplb2YgKEhhbmRsZSk7DQo+IC0gICAgSGFuZGxl
LmRiY2hfZGV2aWNldHlwZSA9IERCVF9ERVZUWVBfSEFORExFOw0KPiAtICAgIEhhbmRsZS5kYmNo
X2hhbmRsZSA9IENvbnRleHQtPkRldmljZTsNCj4gLQ0KPiAtICAgIENvbnRleHQtPkRldmljZU5v
dGlmaWNhdGlvbiA9DQo+IC0gICAgICAgIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnRl
eHQtPlNlcnZpY2UsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZIYW5k
bGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9OT1RJRllf
U0VSVklDRV9IQU5ETEUpOw0KPiAtICAgIGlmIChDb250ZXh0LT5EZXZpY2VOb3RpZmljYXRpb24g
PT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsMzsNCj4gLQ0KPiAtICAgIENvbnRleHQtPkRl
dmljZVBhdGggPSBQYXRoOw0KPiAtICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb250ZXh0LT5M
aXN0SGVhZCk7DQo+IC0gICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3Jp
dGljYWxTZWN0aW9uKTsNCj4gLQ0KPiAtICAgIENvbnRleHQtPk1vbml0b3JFdmVudCA9IENyZWF0
ZUV2ZW50KE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwN
Cj4gKyAgICBDb25zb2xlLT5EZXZpY2VIYW5kbGUgPSBDcmVhdGVGaWxlVyhEZXZpY2VQYXRoLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCB8
IEdFTkVSSUNfV1JJVEUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE9QRU5fRVhJU1RJTkcsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMLA0KPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgIGlmIChDb25zb2xl
LT5EZXZpY2VIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDM7DQo+IA0KPiAtICAgIGlmIChDb250ZXh0LT5Nb25pdG9yRXZlbnQgPT0gTlVMTCkNCj4g
KyAgICBTdWNjZXNzID0gRGV2aWNlSW9Db250cm9sKENvbnNvbGUtPkRldmljZUhhbmRsZSwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPQ1RMX1hFTkNPTlNfR0VUX05BTUUsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmlj
ZU5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoRGV2aWNlTmFt
ZSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQnl0ZXMsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICBpZiAoIVN1Y2Nlc3MpDQo+ICAg
ICAgICAgIGdvdG8gZmFpbDQ7DQo+IA0KPiAtICAgIENvbnRleHQtPk1vbml0b3JUaHJlYWQgPSBD
cmVhdGVUaHJlYWQoTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
b25pdG9yVGhyZWFkLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4g
KyAgICBEZXZpY2VOYW1lW01BWF9QQVRIIC0gMV0gPSAnXDAnOw0KPiANCj4gLSAgICBpZiAoQ29u
dGV4dC0+TW9uaXRvclRocmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gKyAgICBDb25z
b2xlLT5EZXZpY2VOYW1lID0gX3N0cmR1cChEZXZpY2VOYW1lKTsNCj4gKyAgICBpZiAoQ29uc29s
ZS0+RGV2aWNlTmFtZSA9PSBOVUxMKQ0KPiAgICAgICAgICBnb3RvIGZhaWw1Ow0KPiANCj4gLSAg
ICBDb250ZXh0LT5EZXZpY2VFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsDQo+ICsgICAgRUNITyhD
b25zb2xlLT5EZXZpY2VIYW5kbGUsICJcclxuW0FUVEFDSEVEXVxyXG4iKTsNCj4gKw0KPiArICAg
IFplcm9NZW1vcnkoJkhhbmRsZSwgc2l6ZW9mIChIYW5kbGUpKTsNCj4gKyAgICBIYW5kbGUuZGJj
aF9zaXplID0gc2l6ZW9mIChIYW5kbGUpOw0KPiArICAgIEhhbmRsZS5kYmNoX2RldmljZXR5cGUg
PSBEQlRfREVWVFlQX0hBTkRMRTsNCj4gKyAgICBIYW5kbGUuZGJjaF9oYW5kbGUgPSBDb25zb2xl
LT5EZXZpY2VIYW5kbGU7DQo+ICsNCj4gKyAgICBDb25zb2xlLT5EZXZpY2VOb3RpZmljYXRpb24g
PQ0KPiArICAgICAgICBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbihDb250ZXh0LT5TZXJ2aWNl
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkhhbmRsZSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9OT1RJRllfU0VSVklDRV9I
QU5ETEUpOw0KPiArICAgIGlmIChDb25zb2xlLT5EZXZpY2VOb3RpZmljYXRpb24gPT0gTlVMTCkN
Cj4gKyAgICAgICAgZ290byBmYWlsNjsNCj4gKw0KPiArICAgIENvbnNvbGUtPkRldmljZUV2ZW50
ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRSVUUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0K
PiArICAgIGlmIChDb25zb2xlLT5EZXZpY2VFdmVudCA9PSBOVUxMKQ0KPiArICAgICAgICBnb3Rv
IGZhaWw3Ow0KPiANCj4gLSAgICBpZiAoQ29udGV4dC0+RGV2aWNlRXZlbnQgPT0gTlVMTCkNCj4g
LSAgICAgICAgZ290byBmYWlsNjsNCj4gLQ0KPiAtICAgIENvbnRleHQtPkRldmljZVRocmVhZCA9
IENyZWF0ZVRocmVhZChOVUxMLA0KPiArICAgIENvbnNvbGUtPkRldmljZVRocmVhZCA9IENyZWF0
ZVRocmVhZChOVUxMLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VU
aHJlYWQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUsDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgIGlmIChDb25z
b2xlLT5EZXZpY2VUaHJlYWQgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsODsNCj4gDQo+
IC0gICAgaWYgKENvbnRleHQtPkRldmljZVRocmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkN
Cj4gLSAgICAgICAgZ290byBmYWlsNzsNCj4gLQ0KPiAtICAgIENvbnRleHQtPlNlcnZlckV2ZW50
ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gKyAgICBDb25zb2xlLT5TZXJ2ZXJFdmVudCA9IENyZWF0
ZUV2ZW50KE5VTEwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gLSAgICBp
ZiAoQ29udGV4dC0+U2VydmVyRXZlbnQgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsODsN
Cj4gKyAgICBpZiAoQ29uc29sZS0+U2VydmVyRXZlbnQgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290
byBmYWlsOTsNCj4gDQo+IC0gICAgQ29udGV4dC0+U2VydmVyVGhyZWFkID0gQ3JlYXRlVGhyZWFk
KE5VTEwsDQo+ICsgICAgQ29uc29sZS0+U2VydmVyVGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEws
DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlclRocmVhZCwNCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc29sZSwNCj4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+IC0gICAgaWYgKENvbnRleHQtPlNlcnZlclRo
cmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gLSAgICAgICAgZ290byBmYWlsOTsNCj4g
KyAgICBpZiAoQ29uc29sZS0+U2VydmVyVGhyZWFkID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDEwOw0KPiANCj4gLSAgICBMb2coIjw9PT09Iik7DQo+ICsgICAgQ29uc29sZS0+RXhlY3V0
YWJsZUV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgIGlmIChDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQg
PT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMTE7DQo+IA0KPiAtICAgIHJldHVybjsNCj4g
KyAgICBDb25zb2xlLT5FeGVjdXRhYmxlVGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEwsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0YWJsZVRocmVhZCwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUs
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsg
ICAgaWYgKENvbnNvbGUtPkV4ZWN1dGFibGVUaHJlYWQgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290
byBmYWlsMTI7DQo+ICsNCj4gKyAgICBMb2coIjw9PT09ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFt
ZSk7DQo+ICsNCj4gKyAgICByZXR1cm4gQ29uc29sZTsNCj4gKw0KPiArZmFpbDEyOg0KPiArICAg
IExvZygiZmFpbDEyIik7DQo+ICsNCj4gKyAgICBDbG9zZUhhbmRsZShDb25zb2xlLT5FeGVjdXRh
YmxlRXZlbnQpOw0KPiArICAgIENvbnNvbGUtPkV4ZWN1dGFibGVFdmVudCA9IE5VTEw7DQo+ICsN
Cj4gK2ZhaWwxMToNCj4gKyAgICBMb2coImZhaWwxMSIpOw0KPiArDQo+ICsgICAgU2V0RXZlbnQo
Q29uc29sZS0+U2VydmVyRXZlbnQpOw0KPiArICAgIFdhaXRGb3JTaW5nbGVPYmplY3QoQ29uc29s
ZS0+U2VydmVyVGhyZWFkLCBJTkZJTklURSk7DQo+ICsNCj4gK2ZhaWwxMDoNCj4gKyAgICBMb2co
ImZhaWwxMCIpOw0KPiArDQo+ICsgICAgQ2xvc2VIYW5kbGUoQ29uc29sZS0+U2VydmVyRXZlbnQp
Ow0KPiArICAgIENvbnNvbGUtPlNlcnZlckV2ZW50ID0gTlVMTDsNCj4gDQo+ICBmYWlsOToNCj4g
ICAgICBMb2coImZhaWw5Iik7DQo+IA0KPiAtICAgIENsb3NlSGFuZGxlKENvbnRleHQtPlNlcnZl
ckV2ZW50KTsNCj4gLSAgICBDb250ZXh0LT5TZXJ2ZXJFdmVudCA9IE5VTEw7DQo+ICsgICAgU2V0
RXZlbnQoQ29uc29sZS0+RGV2aWNlRXZlbnQpOw0KPiArICAgIFdhaXRGb3JTaW5nbGVPYmplY3Qo
Q29uc29sZS0+RGV2aWNlVGhyZWFkLCBJTkZJTklURSk7DQo+IA0KPiAgZmFpbDg6DQo+ICAgICAg
TG9nKCJmYWlsOCIpOw0KPiANCj4gLSAgICBTZXRFdmVudChDb250ZXh0LT5EZXZpY2VFdmVudCk7
DQo+IC0gICAgV2FpdEZvclNpbmdsZU9iamVjdChDb250ZXh0LT5EZXZpY2VUaHJlYWQsIElORklO
SVRFKTsNCj4gKyAgICBDbG9zZUhhbmRsZShDb25zb2xlLT5EZXZpY2VFdmVudCk7DQo+ICsgICAg
Q29uc29sZS0+RGV2aWNlRXZlbnQgPSBOVUxMOw0KPiANCj4gIGZhaWw3Og0KPiAtICAgIExvZygi
ZmFpbDdcbiIpOw0KPiArICAgIExvZygiZmFpbDciKTsNCj4gDQo+IC0gICAgQ2xvc2VIYW5kbGUo
Q29udGV4dC0+RGV2aWNlRXZlbnQpOw0KPiAtICAgIENvbnRleHQtPkRldmljZUV2ZW50ID0gTlVM
TDsNCj4gKyAgICBVbnJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnNvbGUtPkRldmljZU5v
dGlmaWNhdGlvbik7DQo+ICsgICAgQ29uc29sZS0+RGV2aWNlTm90aWZpY2F0aW9uID0gTlVMTDsN
Cj4gDQo+ICBmYWlsNjoNCj4gLSAgICBMb2coImZhaWw2XG4iKTsNCj4gKyAgICBMb2coImZhaWw2
Iik7DQo+IA0KPiAtICAgIFNldEV2ZW50KENvbnRleHQtPk1vbml0b3JUaHJlYWQpOw0KPiAtICAg
IFdhaXRGb3JTaW5nbGVPYmplY3QoQ29udGV4dC0+TW9uaXRvclRocmVhZCwgSU5GSU5JVEUpOw0K
PiArICAgIEVDSE8oQ29uc29sZS0+RGV2aWNlSGFuZGxlLCAiXHJcbltERVRBQ0hFRF1cclxuIik7
DQo+ICsNCj4gKyAgICBmcmVlKENvbnNvbGUtPkRldmljZVBhdGgpOw0KPiArICAgIENvbnNvbGUt
PkRldmljZVBhdGggPSBOVUxMOw0KPiANCj4gIGZhaWw1Og0KPiAgICAgIExvZygiZmFpbDUiKTsN
Cj4gDQo+IC0gICAgQ2xvc2VIYW5kbGUoQ29udGV4dC0+TW9uaXRvckV2ZW50KTsNCj4gLSAgICBD
b250ZXh0LT5Nb25pdG9yRXZlbnQgPSBOVUxMOw0KPiAtDQo+ICBmYWlsNDoNCj4gICAgICBMb2co
ImZhaWw0Iik7DQo+IA0KPiAtICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3Jp
dGljYWxTZWN0aW9uKTsNCj4gLSAgICBaZXJvTWVtb3J5KCZDb250ZXh0LT5MaXN0SGVhZCwgc2l6
ZW9mKExJU1RfRU5UUlkpKTsNCj4gLQ0KPiAtICAgIGZyZWUoQ29udGV4dC0+RGV2aWNlUGF0aCk7
DQo+IC0gICAgQ29udGV4dC0+RGV2aWNlUGF0aCA9IE5VTEw7DQo+IC0NCj4gLSAgICBVbnJlZ2lz
dGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnRleHQtPkRldmljZU5vdGlmaWNhdGlvbik7DQo+IC0g
ICAgQ29udGV4dC0+RGV2aWNlTm90aWZpY2F0aW9uID0gTlVMTDsNCj4gKyAgICBDbG9zZUhhbmRs
ZShDb25zb2xlLT5EZXZpY2VIYW5kbGUpOw0KPiArICAgIENvbnNvbGUtPkRldmljZUhhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOw0KPiANCj4gIGZhaWwzOg0KPiAgICAgIExvZygiZmFpbDMi
KTsNCj4gDQo+IC0gICAgQ2xvc2VIYW5kbGUoQ29udGV4dC0+RGV2aWNlKTsNCj4gLSAgICBDb250
ZXh0LT5EZXZpY2UgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsNCj4gKyAgICBmcmVlKENvbnNvbGUt
PkRldmljZVBhdGgpOw0KPiArICAgIENvbnNvbGUtPkRldmljZVBhdGggPSBOVUxMOw0KPiANCj4g
IGZhaWwyOg0KPiAgICAgIExvZygiZmFpbDIiKTsNCj4gDQo+IC0gICAgZnJlZShQYXRoKTsNCj4g
KyAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2FsU2VjdGlvbik7DQo+
ICsgICAgWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdEhlYWQsIHNpemVvZihMSVNUX0VOVFJZKSk7
DQo+ICsgICAgWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdEVudHJ5LCBzaXplb2YoTElTVF9FTlRS
WSkpOw0KPiArDQo+ICsgICAgZnJlZShDb25zb2xlKTsNCj4gDQo+ICBmYWlsMToNCj4gICAgICBF
cnJvciA9IEdldExhc3RFcnJvcigpOw0KPiANCj4gICAgICB7DQo+IC0gICAgICAgIFBUQ0hBUiAg
TWVzc2FnZTsNCj4gKyAgICAgICAgUENIQVIgIE1lc3NhZ2U7DQo+ICAgICAgICAgIE1lc3NhZ2Ug
PSBHZXRFcnJvck1lc3NhZ2UoRXJyb3IpOw0KPiAgICAgICAgICBMb2coImZhaWwxICglcykiLCBN
ZXNzYWdlKTsNCj4gICAgICAgICAgTG9jYWxGcmVlKE1lc3NhZ2UpOw0KPiAgICAgIH0NCj4gKw0K
PiArICAgIHJldHVybiBOVUxMOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBWT0lEDQo+IC1Nb25pdG9y
V2FpdEZvclBpcGVUaHJlYWRzKA0KPiAtICAgIFZPSUQNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBW
T0lEDQo+ICtDb25zb2xlV2FpdEZvclBpcGVzKA0KPiArICAgIElOICBQTU9OSVRPUl9DT05TT0xF
ICAgIENvbnNvbGUNCj4gICAgICApDQo+ICB7DQo+IC0gICAgUE1PTklUT1JfQ09OVEVYVCAgICBD
b250ZXh0ID0gJk1vbml0b3JDb250ZXh0Ow0KPiAtICAgIEhBTkRMRSAgICAgICAgICAgICAgKkhh
bmRsZXM7DQo+IC0gICAgRFdPUkQgICAgICAgICAgICAgICBJbmRleDsNCj4gLSAgICBQTElTVF9F
TlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gKyAgICBQTElTVF9FTlRSWSAgICAgICAgICAgICBM
aXN0RW50cnk7DQo+ICsgICAgSEFORExFICAgICAgICAgICAgICAgICAgKkV2ZW50czsNCj4gKyAg
ICBEV09SRCAgICAgICAgICAgICAgICAgICBDb3VudDsNCj4gKyAgICBEV09SRCAgICAgICAgICAg
ICAgICAgICBJbmRleDsNCj4gDQo+IC0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQt
PkNyaXRpY2FsU2VjdGlvbik7DQo+ICsgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUt
PkNyaXRpY2FsU2VjdGlvbik7DQo+IA0KPiAtICAgIGlmIChDb250ZXh0LT5MaXN0Q291bnQgPT0g
MCkNCj4gKyAgICBDb3VudCA9IENvbnNvbGUtPkxpc3RDb3VudCArIDE7DQo+ICsgICAgRXZlbnRz
ID0gbWFsbG9jKENvdW50ICogc2l6ZW9mKEhBTkRMRSkpOw0KPiArICAgIGlmIChFdmVudHMgPT0g
TlVMTCkNCj4gICAgICAgICAgZ290byBmYWlsMTsNCj4gDQo+IC0gICAgSGFuZGxlcyA9IChIQU5E
TEUqKW1hbGxvYyhzaXplb2YoSEFORExFKSAqIENvbnRleHQtPkxpc3RDb3VudCk7DQo+IC0gICAg
aWYgKEhhbmRsZXMgPT0gTlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsMjsNCj4gLQ0KPiAgICAg
IEluZGV4ID0gMDsNCj4gLSAgICBmb3IgKExpc3RFbnRyeSA9IENvbnRleHQtPkxpc3RIZWFkLkZs
aW5rOw0KPiAtICAgICAgICAgTGlzdEVudHJ5ICE9ICZDb250ZXh0LT5MaXN0SGVhZCAmJiBJbmRl
eCA8IENvbnRleHQtPkxpc3RDb3VudDsNCj4gKyAgICBmb3IgKExpc3RFbnRyeSA9IENvbnNvbGUt
Pkxpc3RIZWFkLkZsaW5rOw0KPiArICAgICAgICAgTGlzdEVudHJ5ICE9ICZDb25zb2xlLT5MaXN0
SGVhZDsNCj4gICAgICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+RmxpbmspIHsNCj4gLSAg
ICAgICAgUE1PTklUT1JfUElQRSBQaXBlID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LA0K
PiBNT05JVE9SX1BJUEUsIExpc3RFbnRyeSk7DQo+IC0gICAgICAgIEhhbmRsZXNbSW5kZXgrK10g
PSBQaXBlLT5UaHJlYWQ7DQo+ICsgICAgICAgIFBNT05JVE9SX0NPTk5FQ1RJT04gQ29ubmVjdGlv
bjsNCj4gKw0KPiArICAgICAgICBDb25uZWN0aW9uID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVu
dHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9OSVRPUl9D
T05ORUNUSU9OLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz
dEVudHJ5KTsNCj4gKw0KPiArI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOiA2Mzg2KSAvLyBCdWZm
ZXIgb3ZlcmZsb3cNCj4gKyAgICAgICAgRXZlbnRzW0luZGV4XSA9IENvbm5lY3Rpb24tPlRocmVh
ZDsNCj4gKyAgICAgICAgKytJbmRleDsNCj4gICAgICB9DQo+ICsgICAgRXZlbnRzW0NvdW50IC0g
MV0gPSBDb25zb2xlLT5TZXJ2ZXJUaHJlYWQ7DQo+IA0KPiAtICAgIENvbnRleHQtPkxpc3RDb3Vu
dCA9IDA7DQo+ICsgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2FsU2Vj
dGlvbik7DQo+IA0KPiAtICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNh
bFNlY3Rpb24pOw0KPiArICAgIFNldEV2ZW50KENvbnNvbGUtPlNlcnZlckV2ZW50KTsNCj4gKyAg
ICBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKENvdW50LCBFdmVudHMsIFRSVUUsIElORklOSVRFKTsN
Cj4gDQo+IC0jcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6NjM4NSkgLy8gUmVhZGluZyBpbnZhbGlk
IGRhdGEgZnJvbSAnSGFuZGxlcycuLi4NCj4gLSAgICBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKElu
ZGV4LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlcywNCj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBJ
TkZJTklURSk7DQo+IC0gICAgZnJlZShIYW5kbGVzKTsNCj4gICAgICByZXR1cm47DQo+IA0KPiAt
ZmFpbDI6DQo+IC0gICAgTG9nKCJmYWlsMiIpOw0KPiAtDQo+ICBmYWlsMToNCj4gLSAgICBMb2co
ImZhaWwxIik7DQo+ICsgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2Fs
U2VjdGlvbik7DQo+ICsNCj4gKyAgICAvLyBzZXQgdGhlIGV2ZW50IGFuZCB3YWl0IGZvciB0aGUg
c2VydmVyIHRocmVhZCBhbnl3YXkNCj4gKyAgICBTZXRFdmVudChDb25zb2xlLT5TZXJ2ZXJFdmVu
dCk7DQo+ICsgICAgV2FpdEZvclNpbmdsZU9iamVjdChDb25zb2xlLT5TZXJ2ZXJUaHJlYWQsIElO
RklOSVRFKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZPSUQNCj4gK0NvbnNvbGVEZXN0cm95KA0K
PiArICAgIElOICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGUNCj4gKyAgICApDQo+ICt7DQo+
ICsgICAgTG9nKCI9PT09PiAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOw0KPiArDQo+ICsgICAg
U2V0RXZlbnQoQ29uc29sZS0+RXhlY3V0YWJsZUV2ZW50KTsNCj4gKyAgICBXYWl0Rm9yU2luZ2xl
T2JqZWN0KENvbnNvbGUtPkV4ZWN1dGFibGVUaHJlYWQsIElORklOSVRFKTsNCj4gKw0KPiArICAg
IENsb3NlSGFuZGxlKENvbnNvbGUtPkV4ZWN1dGFibGVFdmVudCk7DQo+ICsgICAgQ29uc29sZS0+
RXhlY3V0YWJsZUV2ZW50ID0gTlVMTDsNCj4gKw0KPiArICAgIENvbnNvbGVXYWl0Rm9yUGlwZXMo
Q29uc29sZSk7DQo+ICsNCj4gKyAgICBDbG9zZUhhbmRsZShDb25zb2xlLT5TZXJ2ZXJFdmVudCk7
DQo+ICsgICAgQ29uc29sZS0+U2VydmVyRXZlbnQgPSBOVUxMOw0KPiArDQo+ICsgICAgU2V0RXZl
bnQoQ29uc29sZS0+RGV2aWNlRXZlbnQpOw0KPiArICAgIFdhaXRGb3JTaW5nbGVPYmplY3QoQ29u
c29sZS0+RGV2aWNlVGhyZWFkLCBJTkZJTklURSk7DQo+ICsNCj4gKyAgICBDbG9zZUhhbmRsZShD
b25zb2xlLT5EZXZpY2VFdmVudCk7DQo+ICsgICAgQ29uc29sZS0+RGV2aWNlRXZlbnQgPSBOVUxM
Ow0KPiArDQo+ICsgICAgVW5yZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbihDb25zb2xlLT5EZXZp
Y2VOb3RpZmljYXRpb24pOw0KPiArICAgIENvbnNvbGUtPkRldmljZU5vdGlmaWNhdGlvbiA9IE5V
TEw7DQo+ICsNCj4gKyAgICBFQ0hPKENvbnNvbGUtPkRldmljZUhhbmRsZSwgIlxyXG5bREVUQUNI
RURdXHJcbiIpOw0KPiArDQo+ICsgICAgZnJlZShDb25zb2xlLT5EZXZpY2VQYXRoKTsNCj4gKyAg
ICBDb25zb2xlLT5EZXZpY2VQYXRoID0gTlVMTDsNCj4gKw0KPiArICAgIENsb3NlSGFuZGxlKENv
bnNvbGUtPkRldmljZUhhbmRsZSk7DQo+ICsgICAgQ29uc29sZS0+RGV2aWNlSGFuZGxlID0gSU5W
QUxJRF9IQU5ETEVfVkFMVUU7DQo+ICsNCj4gKyAgICBmcmVlKENvbnNvbGUtPkRldmljZVBhdGgp
Ow0KPiArICAgIENvbnNvbGUtPkRldmljZVBhdGggPSBOVUxMOw0KPiArDQo+ICsgICAgRGVsZXRl
Q3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5Dcml0aWNhbFNlY3Rpb24pOw0KPiArICAgIFplcm9N
ZW1vcnkoJkNvbnNvbGUtPkxpc3RIZWFkLCBzaXplb2YoTElTVF9FTlRSWSkpOw0KPiArICAgIFpl
cm9NZW1vcnkoJkNvbnNvbGUtPkxpc3RFbnRyeSwgc2l6ZW9mKExJU1RfRU5UUlkpKTsNCj4gKw0K
PiArICAgIGZyZWUoQ29uc29sZSk7DQo+IA0KPiArICAgIExvZygiPD09PT0iKTsNCj4gK30NCj4g
Kw0KPiArc3RhdGljIEJPT0wNCj4gK01vbml0b3JBZGQoDQo+ICsgICAgSU4gIFBXQ0hBUiAgICAg
ICAgICBEZXZpY2VQYXRoDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBNT05JVE9SX0NPTlRFWFQg
ICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gKyAgICBQTU9OSVRPUl9DT05TT0xFICAg
IENvbnNvbGU7DQo+ICsNCj4gKyAgICBMb2coIj09PT09PiAld3MiLCBEZXZpY2VQYXRoKTsNCj4g
Kw0KPiArICAgIENvbnNvbGUgPSBDb25zb2xlQ3JlYXRlKERldmljZVBhdGgpOw0KPiArICAgIGlm
IChDb25zb2xlID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBF
bnRlckNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsNCj4gKyAgICBf
X0luc2VydFRhaWxMaXN0KCZDb250ZXh0LT5MaXN0SGVhZCwgJkNvbnNvbGUtPkxpc3RFbnRyeSk7
DQo+ICsgICAgKytDb250ZXh0LT5MaXN0Q291bnQ7DQo+ICAgICAgTGVhdmVDcml0aWNhbFNlY3Rp
b24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7DQo+IA0KPiAtICAgIHJldHVybjsNCj4gKyAg
ICBMb2coIjw9PT09PSAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOw0KPiArDQo+ICsgICAgcmV0
dXJuIFRSVUU7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIExvZygiZmFpbDEiKTsNCj4gKw0KPiAr
ICAgIHJldHVybiBGQUxTRTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgVk9JRA0KPiArc3RhdGljIEJP
T0wNCj4gIE1vbml0b3JSZW1vdmUoDQo+IC0gICAgVk9JRA0KPiArICAgIElOICBIQU5ETEUgICAg
ICAgICAgRGV2aWNlSGFuZGxlDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBNT05JVE9SX0NPTlRF
WFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gKyAgICBQTU9OSVRPUl9DT05TT0xF
ICAgIENvbnNvbGU7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7DQo+IA0K
PiAtICAgIGlmIChDb250ZXh0LT5EZXZpY2UgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQo+IC0g
ICAgICAgIHJldHVybjsNCj4gKyAgICBMb2coIj09PT09PiAweCVwIiwgRGV2aWNlSGFuZGxlKTsN
Cj4gKw0KPiArICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rp
b24pOw0KPiArICAgIGZvciAoTGlzdEVudHJ5ID0gQ29udGV4dC0+TGlzdEhlYWQuRmxpbms7DQo+
ICsgICAgICAgICBMaXN0RW50cnkgIT0gJkNvbnRleHQtPkxpc3RIZWFkOw0KPiArICAgICAgICAg
TGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgew0KPiArICAgICAgICBDb25zb2xlID0gQ09O
VEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTU9OSVRPUl9DT05TT0xFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGlzdEVudHJ5KTsNCj4gKw0KPiArICAgICAgICBpZiAoQ29uc29sZS0+RGV2aWNl
SGFuZGxlID09IERldmljZUhhbmRsZSkNCj4gKyAgICAgICAgICAgIGdvdG8gZm91bmQ7DQo+ICsg
ICAgfQ0KPiArICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rp
b24pOw0KPiANCj4gKyAgICBMb2coIkRldmljZUhhbmRsZSAweCVwIG5vdCBmb3VuZCIsIERldmlj
ZUhhbmRsZSk7DQo+ICsNCj4gKyAgICByZXR1cm4gRkFMU0U7DQo+ICsNCj4gK2ZvdW5kOg0KPiAr
ICAgIF9fUmVtb3ZlRW50cnlMaXN0KCZDb25zb2xlLT5MaXN0RW50cnkpOw0KPiArICAgIC0tQ29u
dGV4dC0+TGlzdENvdW50Ow0KPiArICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5D
cml0aWNhbFNlY3Rpb24pOw0KPiArDQo+ICsgICAgQ29uc29sZURlc3Ryb3koQ29uc29sZSk7DQo+
ICsNCj4gKyAgICBMb2coIjw9PT09PSIpOw0KPiArDQo+ICsgICAgcmV0dXJuIFRSVUU7DQo+ICt9
DQo+ICsNCj4gK3N0YXRpYyBCT09MDQo+ICtNb25pdG9yRW51bWVyYXRlKA0KPiArICAgIFZPSUQN
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgUE1PTklUT1JfQ09OVEVYVCAgICAgICAgICAgICAgICAg
ICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsNCj4gKyAgICBIREVWSU5GTyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEZXZpY2VJbmZvU2V0Ow0KPiArICAgIFNQX0RFVklDRV9JTlRFUkZB
Q0VfREFUQSAgICAgICAgICAgIERldmljZUludGVyZmFjZURhdGE7DQo+ICsgICAgUFNQX0RFVklD
RV9JTlRFUkZBQ0VfREVUQUlMX0RBVEFfVyAgRGV2aWNlSW50ZXJmYWNlRGV0YWlsOw0KPiArICAg
IFBNT05JVE9SX0NPTlNPTEUgICAgICAgICAgICAgICAgICAgIENvbnNvbGU7DQo+ICsgICAgRFdP
UkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKyAgICBEV09SRCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKyAgICBIUkVTVUxUICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFcnJvcjsNCj4gKyAgICBCT09MICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdWNjZXNzOw0KPiArDQo+ICAgICAgTG9nKCI9PT09PiIpOw0KPiArDQo+
ICsgICAgRGV2aWNlSW5mb1NldCA9IFNldHVwRGlHZXRDbGFzc0RldnMoJkdVSURfWEVOQ09OU19E
RVZJQ0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJR0NGX1BSRVNFTlQgfA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJR0NGX0RFVklDRUlOVEVS
RkFDRSk7DQo+ICsgICAgaWYgKERldmljZUluZm9TZXQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUp
DQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBEZXZpY2VJbnRlcmZhY2VEYXRh
LmNiU2l6ZSA9IHNpemVvZiAoU1BfREVWSUNFX0lOVEVSRkFDRV9EQVRBKTsNCj4gDQo+IC0gICAg
U2V0RXZlbnQoQ29udGV4dC0+U2VydmVyRXZlbnQpOw0KPiAtICAgIE1vbml0b3JXYWl0Rm9yUGlw
ZVRocmVhZHMoKTsNCj4gLSAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KENvbnRleHQtPlNlcnZlclRo
cmVhZCwgSU5GSU5JVEUpOw0KPiArICAgIGZvciAoSW5kZXggPSAwOyBUUlVFOyArK0luZGV4KSB7
DQo+ICsgICAgICAgIFN1Y2Nlc3MgPSBTZXR1cERpRW51bURldmljZUludGVyZmFjZXMoRGV2aWNl
SW5mb1NldCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZHVUlEX1hFTkNPTlNfREVWSUNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluZGV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZEZXZpY2VJbnRlcmZhY2VEYXRhKTsNCj4gKyAgICAgICAgaWYgKCFT
dWNjZXNzKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+IA0KPiAtICAgIENsb3NlSGFuZGxlKENv
bnRleHQtPlNlcnZlckV2ZW50KTsNCj4gLSAgICBDb250ZXh0LT5TZXJ2ZXJFdmVudCA9IE5VTEw7
DQo+ICsgICAgICAgIFN1Y2Nlc3MgPSBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsVyhE
ZXZpY2VJbmZvU2V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmRGV2aWNlSW50ZXJmYWNlRGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNpemUsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICBp
ZiAoIVN1Y2Nlc3MgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZF
UikNCj4gKyAgICAgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICAgICAgRGV2aWNlSW50
ZXJmYWNlRGV0YWlsID0gY2FsbG9jKDEsIFNpemUpOw0KPiArICAgICAgICBpZiAoRGV2aWNlSW50
ZXJmYWNlRGV0YWlsID09IE5VTEwpDQo+ICsgICAgICAgICAgICBnb3RvIGZhaWwzOw0KPiArDQo+
ICsgICAgICAgIERldmljZUludGVyZmFjZURldGFpbC0+Y2JTaXplID0NCj4gKyAgICAgICAgICAg
IHNpemVvZiAoU1BfREVWSUNFX0lOVEVSRkFDRV9ERVRBSUxfREFUQV9XKTsNCj4gKw0KPiArICAg
ICAgICBTdWNjZXNzID0gU2V0dXBEaUdldERldmljZUludGVyZmFjZURldGFpbFcoRGV2aWNlSW5m
b1NldCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZEZXZpY2VJbnRlcmZhY2VEYXRhLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSW50ZXJmYWNlRGV0YWlsLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsNCj4gKyAgICAgICAgaWYgKCFTdWNjZXNzKQ0KPiArICAgICAgICAgICAgZ290byBmYWlsNDsN
Cj4gDQo+IC0gICAgU2V0RXZlbnQoQ29udGV4dC0+RGV2aWNlRXZlbnQpOw0KPiAtICAgIFdhaXRG
b3JTaW5nbGVPYmplY3QoQ29udGV4dC0+RGV2aWNlVGhyZWFkLCBJTkZJTklURSk7DQo+ICsgICAg
ICAgIENvbnNvbGUgPSBDb25zb2xlQ3JlYXRlKERldmljZUludGVyZmFjZURldGFpbC0+RGV2aWNl
UGF0aCk7DQo+ICsgICAgICAgIGlmIChDb25zb2xlID09IE5VTEwpDQo+ICsgICAgICAgICAgICBn
b3RvIGZhaWw1Ow0KPiANCj4gLSAgICBDbG9zZUhhbmRsZShDb250ZXh0LT5EZXZpY2VFdmVudCk7
DQo+IC0gICAgQ29udGV4dC0+RGV2aWNlRXZlbnQgPSBOVUxMOw0KPiArICAgICAgICBFbnRlckNy
aXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsNCj4gKyAgICAgICAgX19J
bnNlcnRUYWlsTGlzdCgmQ29udGV4dC0+TGlzdEhlYWQsICZDb25zb2xlLT5MaXN0RW50cnkpOw0K
PiArICAgICAgICArK0NvbnRleHQtPkxpc3RDb3VudDsNCj4gKyAgICAgICAgTGVhdmVDcml0aWNh
bFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7DQo+IA0KPiAtICAgIFNldEV2ZW50
KENvbnRleHQtPk1vbml0b3JFdmVudCk7DQo+IC0gICAgV2FpdEZvclNpbmdsZU9iamVjdChDb250
ZXh0LT5Nb25pdG9yVGhyZWFkLCBJTkZJTklURSk7DQo+ICsgICAgICAgIGZyZWUoRGV2aWNlSW50
ZXJmYWNlRGV0YWlsKTsNCj4gDQo+IC0gICAgQ2xvc2VIYW5kbGUoQ29udGV4dC0+TW9uaXRvckV2
ZW50KTsNCj4gLSAgICBDb250ZXh0LT5Nb25pdG9yRXZlbnQgPSBOVUxMOw0KPiArICAgICAgICBj
b250aW51ZTsNCj4gDQo+IC0gICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0
aWNhbFNlY3Rpb24pOw0KPiAtICAgIFplcm9NZW1vcnkoJkNvbnRleHQtPkxpc3RIZWFkLCBzaXpl
b2YoTElTVF9FTlRSWSkpOw0KPiArICAgIGZhaWw1Og0KPiArICAgICAgICBMb2coImZhaWw1Iik7
DQo+ICsgICAgZmFpbDQ6DQo+ICsgICAgICAgIExvZygiZmFpbDQiKTsNCj4gDQo+IC0gICAgZnJl
ZShDb250ZXh0LT5EZXZpY2VQYXRoKTsNCj4gLSAgICBDb250ZXh0LT5EZXZpY2VQYXRoID0gTlVM
TDsNCj4gKyAgICAgICAgZnJlZShEZXZpY2VJbnRlcmZhY2VEZXRhaWwpOw0KPiANCj4gLSAgICBV
bnJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnRleHQtPkRldmljZU5vdGlmaWNhdGlvbik7
DQo+IC0gICAgQ29udGV4dC0+RGV2aWNlTm90aWZpY2F0aW9uID0gTlVMTDsNCj4gKyAgICBmYWls
MzoNCj4gKyAgICAgICAgTG9nKCJmYWlsMyIpOw0KPiArICAgIGZhaWwyOg0KPiArICAgICAgICBF
cnJvciA9IEdldExhc3RFcnJvcigpOw0KPiANCj4gLSAgICBFQ0hPKENvbnRleHQtPkRldmljZSwg
IlxyXG5bREVUQUNIRURdXHJcbiIpOw0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBQQ0hB
UiAgTWVzc2FnZTsNCj4gKyAgICAgICAgICAgIE1lc3NhZ2UgPSBHZXRFcnJvck1lc3NhZ2UoRXJy
b3IpOw0KPiArICAgICAgICAgICAgTG9nKCJmYWlsMiAoJXMpIiwgTWVzc2FnZSk7DQo+ICsgICAg
ICAgICAgICBMb2NhbEZyZWUoTWVzc2FnZSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+IA0K
PiAtICAgIENsb3NlSGFuZGxlKENvbnRleHQtPkRldmljZSk7DQo+IC0gICAgQ29udGV4dC0+RGV2
aWNlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7DQo+ICsgICAgU2V0dXBEaURlc3Ryb3lEZXZpY2VJ
bmZvTGlzdChEZXZpY2VJbmZvU2V0KTsNCj4gDQo+ICAgICAgTG9nKCI8PT09PSIpOw0KPiArDQo+
ICsgICAgcmV0dXJuIFRSVUU7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yID0gR2V0TGFz
dEVycm9yKCk7DQo+ICsNCj4gKyAgICB7DQo+ICsgICAgICAgIFBDSEFSICBNZXNzYWdlOw0KPiAr
ICAgICAgICBNZXNzYWdlID0gR2V0RXJyb3JNZXNzYWdlKEVycm9yKTsNCj4gKyAgICAgICAgTG9n
KCJmYWlsMSAoJXMpIiwgTWVzc2FnZSk7DQo+ICsgICAgICAgIExvY2FsRnJlZShNZXNzYWdlKTsN
Cj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gK3N0YXRp
YyBWT0lEDQo+ICtNb25pdG9yUmVtb3ZlQWxsKA0KPiArICAgIFZPSUQNCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgUE1PTklUT1JfQ09OVEVYVCAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0Ow0K
PiArICAgIFBNT05JVE9SX0NPTlNPTEUgICAgQ29uc29sZTsNCj4gKw0KPiArICAgIExvZygiPT09
PT0+Iik7DQo+ICsNCj4gKyAgICBmb3IgKDs7KSB7DQo+ICsgICAgICAgIEVudGVyQ3JpdGljYWxT
ZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOw0KPiArICAgICAgICBpZiAoQ29udGV4
dC0+TGlzdEhlYWQuRmxpbmsgPT0gJkNvbnRleHQtPkxpc3RIZWFkKQ0KPiArICAgICAgICAgICAg
YnJlYWs7DQo+ICsNCj4gKyAgICAgICAgQ29uc29sZSA9IENPTlRBSU5JTkdfUkVDT1JEKENvbnRl
eHQtPkxpc3RIZWFkLkZsaW5rLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTU9OSVRPUl9DT05TT0xFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTGlzdEVudHJ5KTsNCj4gKw0KPiArICAgICAgICBfX1JlbW92ZUVudHJ5TGlzdCgmQ29uc29s
ZS0+TGlzdEVudHJ5KTsNCj4gKyAgICAgICAgLS1Db250ZXh0LT5MaXN0Q291bnQ7DQo+ICsNCj4g
KyAgICAgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7
DQo+ICsNCj4gKyAgICAgICAgQ29uc29sZURlc3Ryb3koQ29uc29sZSk7DQo+ICsgICAgfQ0KPiAr
ICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOw0KPiAr
DQo+ICsgICAgTG9nKCI8PT09PT0iKTsNCj4gIH0NCj4gDQo+ICBEV09SRCBXSU5BUEkNCj4gQEAg
LTExMTMsMTEgKzEzNzQsMTEgQEAgTW9uaXRvckN0cmxIYW5kbGVyRXgoDQo+ICAgICAgICAgIHN3
aXRjaCAoRXZlbnRUeXBlKSB7DQo+ICAgICAgICAgIGNhc2UgREJUX0RFVklDRUFSUklWQUw6DQo+
ICAgICAgICAgICAgICBpZiAoSGVhZGVyLT5kYmNoX2RldmljZXR5cGUgPT0gREJUX0RFVlRZUF9E
RVZJQ0VJTlRFUkZBQ0UpIHsNCj4gLSAgICAgICAgICAgICAgICBQREVWX0JST0FEQ0FTVF9ERVZJ
Q0VJTlRFUkZBQ0UgIEludGVyZmFjZSA9IEV2ZW50RGF0YTsNCj4gKyAgICAgICAgICAgICAgICBQ
REVWX0JST0FEQ0FTVF9ERVZJQ0VJTlRFUkZBQ0VfVyBJbnRlcmZhY2UgPSBFdmVudERhdGE7DQo+
IA0KPiAgICAgICAgICAgICAgICAgIGlmIChJc0VxdWFsR1VJRCgmSW50ZXJmYWNlLT5kYmNjX2Ns
YXNzZ3VpZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR1VJRF9YRU5DT05T
X0RFVklDRSkpDQo+IC0gICAgICAgICAgICAgICAgICAgIFNldEV2ZW50KENvbnRleHQtPkFkZEV2
ZW50KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURfWEVOQ09OU19E
RVZJQ0UpKQ0KPiArICAgICAgICAgICAgICAgICAgICBNb25pdG9yQWRkKEludGVyZmFjZS0+ZGJj
Y19uYW1lKTsNCj4gICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4g
QEAgLTExMjcsOCArMTM4OCw3IEBAIE1vbml0b3JDdHJsSGFuZGxlckV4KA0KPiAgICAgICAgICAg
ICAgaWYgKEhlYWRlci0+ZGJjaF9kZXZpY2V0eXBlID09IERCVF9ERVZUWVBfSEFORExFKSB7DQo+
ICAgICAgICAgICAgICAgICAgUERFVl9CUk9BRENBU1RfSEFORExFIERldmljZSA9IEV2ZW50RGF0
YTsNCj4gDQo+IC0gICAgICAgICAgICAgICAgaWYgKERldmljZS0+ZGJjaF9oYW5kbGUgPT0gQ29u
dGV4dC0+RGV2aWNlKQ0KPiAtICAgICAgICAgICAgICAgICAgICBTZXRFdmVudChDb250ZXh0LT5S
ZW1vdmVFdmVudCk7DQo+ICsgICAgICAgICAgICAgICAgTW9uaXRvclJlbW92ZShEZXZpY2UtPmRi
Y2hfaGFuZGxlKTsNCj4gICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiAg
ICAgICAgICB9DQo+IEBAIC0xMTQzLDg0ICsxNDAzLDYgQEAgTW9uaXRvckN0cmxIYW5kbGVyRXgo
DQo+ICAgICAgcmV0dXJuIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEOw0KPiAgfQ0KPiANCj4g
LXN0YXRpYyBCT09MDQo+IC1HZXRFeGVjdXRhYmxlKA0KPiAtICAgIE9VVCBQVENIQVIgICAgICAg
ICAgKkV4ZWN1dGFibGUNCj4gLSAgICApDQo+IC17DQo+IC0gICAgUE1PTklUT1JfQ09OVEVYVCAg
ICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0Ow0KPiAtICAgIERXT1JEICAgICAgICAgICAgICAg
TWF4VmFsdWVMZW5ndGg7DQo+IC0gICAgRFdPUkQgICAgICAgICAgICAgICBFeGVjdXRhYmxlTGVu
Z3RoOw0KPiAtICAgIERXT1JEICAgICAgICAgICAgICAgVHlwZTsNCj4gLSAgICBIUkVTVUxUICAg
ICAgICAgICAgIEVycm9yOw0KPiAtDQo+IC0gICAgRXJyb3IgPSBSZWdRdWVyeUluZm9LZXkoQ29u
dGV4dC0+UGFyYW1ldGVyc0tleSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJk1heFZhbHVlTGVuZ3RoLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+IC0g
ICAgaWYgKEVycm9yICE9IEVSUk9SX1NVQ0NFU1MpIHsNCj4gLSAgICAgICAgU2V0TGFzdEVycm9y
KEVycm9yKTsNCj4gLSAgICAgICAgZ290byBmYWlsMTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBF
eGVjdXRhYmxlTGVuZ3RoID0gTWF4VmFsdWVMZW5ndGggKyBzaXplb2YgKFRDSEFSKTsNCj4gLQ0K
PiAtICAgICpFeGVjdXRhYmxlID0gY2FsbG9jKDEsIEV4ZWN1dGFibGVMZW5ndGgpOw0KPiAtICAg
IGlmIChFeGVjdXRhYmxlID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZmFpbDI7DQo+IC0NCj4g
LSAgICBFcnJvciA9IFJlZ1F1ZXJ5VmFsdWVFeChDb250ZXh0LT5QYXJhbWV0ZXJzS2V5LA0KPiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRhYmxlIiwNCj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZU
eXBlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpKCpFeGVjdXRhYmxl
KSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRXhlY3V0YWJsZUxlbmd0aCk7DQo+
IC0gICAgaWYgKEVycm9yICE9IEVSUk9SX1NVQ0NFU1MpIHsNCj4gLSAgICAgICAgU2V0TGFzdEVy
cm9yKEVycm9yKTsNCj4gLSAgICAgICAgZ290byBmYWlsMzsNCj4gLSAgICB9DQo+IC0NCj4gLSAg
ICBpZiAoVHlwZSAhPSBSRUdfU1opIHsNCj4gLSAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX0JB
RF9GT1JNQVQpOw0KPiAtICAgICAgICBnb3RvIGZhaWw0Ow0KPiAtICAgIH0NCj4gLQ0KPiAtICAg
IExvZygiJXMiLCAqRXhlY3V0YWJsZSk7DQo+IC0NCj4gLSAgICByZXR1cm4gVFJVRTsNCj4gLQ0K
PiAtZmFpbDQ6DQo+IC0gICAgTG9nKCJmYWlsNCIpOw0KPiAtDQo+IC1mYWlsMzoNCj4gLSAgICBM
b2coImZhaWwzIik7DQo+IC0NCj4gLSAgICBmcmVlKCpFeGVjdXRhYmxlKTsNCj4gLQ0KPiAtZmFp
bDI6DQo+IC0gICAgTG9nKCJmYWlsMiIpOw0KPiAtDQo+IC1mYWlsMToNCj4gLSAgICBFcnJvciA9
IEdldExhc3RFcnJvcigpOw0KPiAtDQo+IC0gICAgew0KPiAtICAgICAgICBQVENIQVIgIE1lc3Nh
Z2U7DQo+IC0gICAgICAgIE1lc3NhZ2UgPSBHZXRFcnJvck1lc3NhZ2UoRXJyb3IpOw0KPiAtICAg
ICAgICBMb2coImZhaWwxICglcykiLCBNZXNzYWdlKTsNCj4gLSAgICAgICAgTG9jYWxGcmVlKE1l
c3NhZ2UpOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIHJldHVybiBGQUxTRTsNCj4gLX0NCj4gLQ0K
PiAgVk9JRCBXSU5BUEkNCj4gIE1vbml0b3JNYWluKA0KPiAgICAgIF9Jbl8gICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgYXJnYywNCj4gQEAgLTEyMzAsMTQgKzE0MTIsMTMgQEAgTW9uaXRvck1h
aW4oDQo+ICAgICAgUE1PTklUT1JfQ09OVEVYVCAgICAgICAgICAgICAgICBDb250ZXh0ID0gJk1v
bml0b3JDb250ZXh0Ow0KPiAgICAgIERFVl9CUk9BRENBU1RfREVWSUNFSU5URVJGQUNFICAgSW50
ZXJmYWNlOw0KPiAgICAgIEhSRVNVTFQgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3I7DQo+
IC0gICAgQk9PTCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzOw0KPiANCj4gICAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKGFyZ2MpOw0KPiAgICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoYXJndik7DQo+IA0KPiAgICAgIExvZygiPT09PT4iKTsNCj4gDQo+IC0gICAgRXJyb3Ig
PSBSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLA0KPiArICAgIEVycm9yID0gUmVnT3Bl
bktleUV4QShIS0VZX0xPQ0FMX01BQ0hJTkUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
UEFSQU1FVEVSU19LRVkoX19NT0RVTEVfXyksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBLRVlfUkVBRCwNCj4gQEAgLTEyNDUsMTMg
KzE0MjYsMTMgQEAgTW9uaXRvck1haW4oDQo+ICAgICAgaWYgKEVycm9yICE9IEVSUk9SX1NVQ0NF
U1MpDQo+ICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IA0KPiAtICAgIENvbnRleHQtPlNlcnZpY2Ug
PSBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckV4KE1PTklUT1JfTkFNRSwNCj4gKyAgICBDb250
ZXh0LT5TZXJ2aWNlID0gUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJFeEEoTU9OSVRPUl9OQU1F
LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1vbml0b3JDdHJsSGFuZGxlckV4LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAgICAgIGlmIChDb250ZXh0LT5TZXJ2aWNl
ID09IE5VTEwpDQo+ICAgICAgICAgIGdvdG8gZmFpbDI7DQo+IA0KPiAtICAgIENvbnRleHQtPkV2
ZW50TG9nID0gUmVnaXN0ZXJFdmVudFNvdXJjZShOVUxMLA0KPiArICAgIENvbnRleHQtPkV2ZW50
TG9nID0gUmVnaXN0ZXJFdmVudFNvdXJjZUEoTlVMTCwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTU9OSVRPUl9OQU1FKTsNCj4gICAgICBpZiAoQ29udGV4
dC0+RXZlbnRMb2cgPT0gTlVMTCkNCj4gICAgICAgICAgZ290byBmYWlsMzsNCj4gQEAgLTEyNjks
MjggKzE0NTAsNiBAQCBNb25pdG9yTWFpbigNCj4gICAgICBpZiAoQ29udGV4dC0+U3RvcEV2ZW50
ID09IE5VTEwpDQo+ICAgICAgICAgIGdvdG8gZmFpbDQ7DQo+IA0KPiAtICAgIENvbnRleHQtPkFk
ZEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiAt
DQo+IC0gICAgaWYgKENvbnRleHQtPkFkZEV2ZW50ID09IE5VTEwpDQo+IC0gICAgICAgIGdvdG8g
ZmFpbDU7DQo+IC0NCj4gLSAgICBDb250ZXh0LT5SZW1vdmVFdmVudCA9IENyZWF0ZUV2ZW50KE5V
TEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gLQ0KPiAtICAgIGlmIChD
b250ZXh0LT5SZW1vdmVFdmVudCA9PSBOVUxMKQ0KPiAtICAgICAgICBnb3RvIGZhaWw2Ow0KPiAt
DQo+IC0gICAgU3VjY2VzcyA9IEdldEV4ZWN1dGFibGUoJkNvbnRleHQtPkV4ZWN1dGFibGUpOw0K
PiAtICAgIGlmICghU3VjY2VzcykNCj4gLSAgICAgICAgQ29udGV4dC0+RXhlY3V0YWJsZSA9IE5V
TEw7DQo+IC0NCj4gLSAgICBDb250ZXh0LT5EZXZpY2UgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsN
Cj4gLQ0KPiAgICAgIFplcm9NZW1vcnkoJkludGVyZmFjZSwgc2l6ZW9mIChJbnRlcmZhY2UpKTsN
Cj4gICAgICBJbnRlcmZhY2UuZGJjY19zaXplID0gc2l6ZW9mIChJbnRlcmZhY2UpOw0KPiAgICAg
IEludGVyZmFjZS5kYmNjX2RldmljZXR5cGUgPSBEQlRfREVWVFlQX0RFVklDRUlOVEVSRkFDRTsN
Cj4gQEAgLTEzMDEsNjQgKzE0NjAsMjYgQEAgTW9uaXRvck1haW4oDQo+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERFVklDRV9OT1RJRllfU0VSVklDRV9IQU5ETEUpOw0KPiAgICAgIGlm
IChDb250ZXh0LT5JbnRlcmZhY2VOb3RpZmljYXRpb24gPT0gTlVMTCkNCj4gLSAgICAgICAgZ290
byBmYWlsNzsNCj4gLQ0KPiAtICAgIC8vIFRoZSBkZXZpY2UgbWF5IGFscmVhZHkgYnkgcHJlc2Vu
dA0KPiAtICAgIFNldEV2ZW50KENvbnRleHQtPkFkZEV2ZW50KTsNCj4gKyAgICAgICAgZ290byBm
YWlsNTsNCj4gDQo+ICAgICAgUmVwb3J0U3RhdHVzKFNFUlZJQ0VfUlVOTklORywgTk9fRVJST1Is
IDApOw0KPiANCj4gLSAgICBmb3IgKDs7KSB7DQo+IC0gICAgICAgIEhBTkRMRSAgRXZlbnRzWzNd
Ow0KPiAtICAgICAgICBEV09SRCAgIE9iamVjdDsNCj4gLQ0KPiAtICAgICAgICBFdmVudHNbMF0g
PSBDb250ZXh0LT5TdG9wRXZlbnQ7DQo+IC0gICAgICAgIEV2ZW50c1sxXSA9IENvbnRleHQtPkFk
ZEV2ZW50Ow0KPiAtICAgICAgICBFdmVudHNbMl0gPSBDb250ZXh0LT5SZW1vdmVFdmVudDsNCj4g
LQ0KPiAtICAgICAgICBMb2coIndhaXRpbmcgKCV1KS4uLiIsIEFSUkFZU0laRShFdmVudHMpKTsN
Cj4gLSAgICAgICAgT2JqZWN0ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cyhBUlJBWVNJWkUoRXZl
bnRzKSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudHMs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GSU5JVEUpOw0KPiAtICAg
ICAgICBMb2coImF3YWtlIik7DQo+IC0NCj4gLSNkZWZpbmUgV0FJVF9PQkpFQ1RfMSAoV0FJVF9P
QkpFQ1RfMCArIDEpDQo+IC0jZGVmaW5lIFdBSVRfT0JKRUNUXzIgKFdBSVRfT0JKRUNUXzAgKyAy
KQ0KPiAtDQo+IC0gICAgICAgIHN3aXRjaCAoT2JqZWN0KSB7DQo+IC0gICAgICAgIGNhc2UgV0FJ
VF9PQkpFQ1RfMDoNCj4gLSAgICAgICAgICAgIFJlc2V0RXZlbnQoQ29udGV4dC0+U3RvcEV2ZW50
KTsNCj4gLSAgICAgICAgICAgIGdvdG8gZG9uZTsNCj4gKyAgICBfX0luaXRpYWxpemVMaXN0SGVh
ZCgmQ29udGV4dC0+TGlzdEhlYWQpOw0KPiArICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24o
JkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7DQo+IA0KPiAtICAgICAgICBjYXNlIFdBSVRfT0JK
RUNUXzE6DQo+IC0gICAgICAgICAgICBSZXNldEV2ZW50KENvbnRleHQtPkFkZEV2ZW50KTsNCj4g
LSAgICAgICAgICAgIE1vbml0b3JBZGQoKTsNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiArICAg
IE1vbml0b3JFbnVtZXJhdGUoKTsNCj4gDQo+IC0gICAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMjoN
Cj4gLSAgICAgICAgICAgIFJlc2V0RXZlbnQoQ29udGV4dC0+UmVtb3ZlRXZlbnQpOw0KPiAtICAg
ICAgICAgICAgTW9uaXRvclJlbW92ZSgpOw0KPiArICAgIExvZygiV2FpdGluZy4uLiIpOw0KPiAr
ICAgIFdhaXRGb3JTaW5nbGVPYmplY3QoQ29udGV4dC0+U3RvcEV2ZW50LCBJTkZJTklURSk7DQo+
ICsgICAgTG9nKCJXYWl0IENvbXBsZXRlIik7DQo+IA0KPiAtICAgICAgICBkZWZhdWx0Og0KPiAt
ICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAgIH0NCj4gLQ0KPiAtI3VuZGVmIFdBSVRfT0JK
RUNUXzENCj4gLSN1bmRlZiBXQUlUX09CSkVDVF8yDQo+IC0gICAgfQ0KPiArICAgIE1vbml0b3JS
ZW1vdmVBbGwoKTsNCj4gDQo+IC1kb25lOg0KPiAtICAgIE1vbml0b3JSZW1vdmUoKTsNCj4gKyAg
ICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7DQo+ICsg
ICAgWmVyb01lbW9yeSgmQ29udGV4dC0+TGlzdEhlYWQsIHNpemVvZihMSVNUX0VOVFJZKSk7DQo+
IA0KPiAgICAgIFVucmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb24oQ29udGV4dC0+SW50ZXJmYWNl
Tm90aWZpY2F0aW9uKTsNCj4gDQo+IC0gICAgZnJlZShDb250ZXh0LT5FeGVjdXRhYmxlKTsNCj4g
LQ0KPiAtICAgIENsb3NlSGFuZGxlKENvbnRleHQtPlJlbW92ZUV2ZW50KTsNCj4gLQ0KPiAtICAg
IENsb3NlSGFuZGxlKENvbnRleHQtPkFkZEV2ZW50KTsNCj4gLQ0KPiAgICAgIENsb3NlSGFuZGxl
KENvbnRleHQtPlN0b3BFdmVudCk7DQo+IA0KPiAgICAgIFJlcG9ydFN0YXR1cyhTRVJWSUNFX1NU
T1BQRUQsIE5PX0VSUk9SLCAwKTsNCj4gQEAgLTEzNzEsMTYgKzE0OTIsNiBAQCBkb25lOg0KPiAN
Cj4gICAgICByZXR1cm47DQo+IA0KPiAtZmFpbDc6DQo+IC0gICAgTG9nKCJmYWlsNyIpOw0KPiAt
DQo+IC0gICAgQ2xvc2VIYW5kbGUoQ29udGV4dC0+UmVtb3ZlRXZlbnQpOw0KPiAtDQo+IC1mYWls
NjoNCj4gLSAgICBMb2coImZhaWw2Iik7DQo+IC0NCj4gLSAgICBDbG9zZUhhbmRsZShDb250ZXh0
LT5BZGRFdmVudCk7DQo+IC0NCj4gIGZhaWw1Og0KPiAgICAgIExvZygiZmFpbDUiKTsNCj4gDQo+
IEBAIC0xNDE5LDEyICsxNTMwLDEyIEBAIE1vbml0b3JDcmVhdGUoDQo+ICB7DQo+ICAgICAgU0Nf
SEFORExFICAgU0NNYW5hZ2VyOw0KPiAgICAgIFNDX0hBTkRMRSAgIFNlcnZpY2U7DQo+IC0gICAg
VENIQVIgICAgICAgUGF0aFtNQVhfUEFUSF07DQo+ICsgICAgQ0hBUiAgICAgICAgUGF0aFtNQVhf
UEFUSF07DQo+ICAgICAgSFJFU1VMVCAgICAgRXJyb3I7DQo+IA0KPiAgICAgIExvZygiPT09PT4i
KTsNCj4gDQo+IC0gICAgaWYoIUdldE1vZHVsZUZpbGVOYW1lKE5VTEwsIFBhdGgsIE1BWF9QQVRI
KSkNCj4gKyAgICBpZighR2V0TW9kdWxlRmlsZU5hbWVBKE5VTEwsIFBhdGgsIE1BWF9QQVRIKSkN
Cj4gICAgICAgICAgZ290byBmYWlsMTsNCj4gDQo+ICAgICAgU0NNYW5hZ2VyID0gT3BlblNDTWFu
YWdlcihOVUxMLA0KPiBAQCAtMTU4OSw3ICsxNzAwLDcgQEAgZmFpbDE6DQo+ICB9DQo+IA0KPiAg
aW50IENBTExCQUNLDQo+IC1fdFdpbk1haW4oDQo+ICtXaW5NYWluKA0KPiAgICAgIF9Jbl8gICAg
ICAgIEhJTlNUQU5DRSAgIEN1cnJlbnQsDQo+ICAgICAgX0luX29wdF8gICAgSElOU1RBTkNFICAg
UHJldmlvdXMsDQo+ICAgICAgX0luXyAgICAgICAgTFBTVFIgICAgICAgQ21kTGluZSwNCj4gQEAg
LTE2MDIsMTAgKzE3MTMsMTAgQEAgX3RXaW5NYWluKA0KPiAgICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoUHJldmlvdXMpOw0KPiAgICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ21kU2hvdyk7
DQo+IA0KPiAtICAgIGlmIChfdGNzbGVuKENtZExpbmUpICE9IDApIHsNCj4gLSAgICAgICAgIGlm
IChfdGNzaWNtcChDbWRMaW5lLCBURVhUKCJjcmVhdGUiKSkgPT0gMCkNCj4gKyAgICBpZiAoc3Ry
bGVuKENtZExpbmUpICE9IDApIHsNCj4gKyAgICAgICAgIGlmIChfc3RyaWNtcChDbWRMaW5lLCAi
Y3JlYXRlIikgPT0gMCkNCj4gICAgICAgICAgICAgICBTdWNjZXNzID0gTW9uaXRvckNyZWF0ZSgp
Ow0KPiAtICAgICAgICAgZWxzZSBpZiAoX3Rjc2ljbXAoQ21kTGluZSwgVEVYVCgiZGVsZXRlIikp
ID09IDApDQo+ICsgICAgICAgICBlbHNlIGlmIChfc3RyaWNtcChDbWRMaW5lLCAiZGVsZXRlIikg
PT0gMCkNCj4gICAgICAgICAgICAgICBTdWNjZXNzID0gTW9uaXRvckRlbGV0ZSgpOw0KPiAgICAg
ICAgICAgZWxzZQ0KPiAgICAgICAgICAgICAgIFN1Y2Nlc3MgPSBGQUxTRTsNCj4gZGlmZiAtLWdp
dCBhL3NyYy90dHkvdHR5LmMgYi9zcmMvdHR5L3R0eS5jDQo+IGluZGV4IDk0ZDRmNjUuLmQ2MjNj
MjEgMTAwNjQ0DQo+IC0tLSBhL3NyYy90dHkvdHR5LmMNCj4gKysrIGIvc3JjL3R0eS90dHkuYw0K
PiBAQCAtMzksNyArMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBfVFRZX1NUUkVBTSB7DQo+ICAgICAg
SEFORExFICBXcml0ZTsNCj4gIH0gVFRZX1NUUkVBTSwgKlBUVFlfU1RSRUFNOw0KPiANCj4gLSNk
ZWZpbmUgUElQRV9OQU1FIFRFWFQoIlxcXFwuXFxwaXBlXFx4ZW5jb25zIikNCj4gKyNkZWZpbmUg
UElQRV9OQU1FIFRFWFQoIlxcXFwuXFxwaXBlXFx4ZW5jb25zXFxkZWZhdWx0IikNCj4gICNkZWZp
bmUgTUFYSU1VTV9CVUZGRVJfU0laRSAxMDI0DQo+IA0KPiAgdHlwZWRlZiBzdHJ1Y3QgX1RUWV9D
T05URVhUIHsNCj4gQEAgLTQwMiwxNyArNDAyLDIzIEBAIF90bWFpbigNCj4gICAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKGFyZ2MpOw0KPiAgICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoYXJn
dik7DQo+IA0KPiArICAgIGlmICghV2FpdE5hbWVkUGlwZShQSVBFX05BTUUsIE5NUFdBSVRfVVNF
X0RFRkFVTFRfV0FJVCkpDQo+ICsgICAgICAgIEV4aXRQcm9jZXNzKDEpOw0KPiArDQo+ICAgICAg
Q29udGV4dC0+RGV2aWNlLlJlYWQgPSBDcmVhdGVGaWxlKFBJUEVfTkFNRSwNCj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VORVJJQ19SRUFELA0KPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX1NIQVJFX1dSSVRFLA0KPiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLA0KPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwsDQo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX1NIQVJFX1dSSVRFLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT1BFTl9FWElTVElORywNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+IA0KPiAgICAgIGlm
IChDb250ZXh0LT5EZXZpY2UuUmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCj4gICAgICAg
ICAgRXhpdFByb2Nlc3MoMSk7DQo+IA0KPiArICAgIGlmICghV2FpdE5hbWVkUGlwZShQSVBFX05B
TUUsIE5NUFdBSVRfVVNFX0RFRkFVTFRfV0FJVCkpDQo+ICsgICAgICAgIEV4aXRQcm9jZXNzKDEp
Ow0KPiArDQo+ICAgICAgQ29udGV4dC0+RGV2aWNlLldyaXRlID0gQ3JlYXRlRmlsZShQSVBFX05B
TUUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU5FUklDX1dS
SVRFLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9TSEFS
RV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zLmlu
ZiBiL3NyYy94ZW5jb25zLmluZg0KPiBpbmRleCAzY2JkZDk2Li4zN2JjNjI4IDEwMDY0NA0KPiAt
LS0gYS9zcmMveGVuY29ucy5pbmYNCj4gKysrIGIvc3JjL3hlbmNvbnMuaW5mDQo+IEBAIC0xMTMs
NyArMTEzLDcgQEAgQWRkUmVnID0gTW9uaXRvcl9QYXJhbWV0ZXJzDQo+IA0KPiAgW01vbml0b3Jf
UGFyYW1ldGVyc10NCj4gIEhLUiwiUGFyYW1ldGVycyIsLDB4MDAwMDAwMTANCj4gLQ0KPiBIS1Is
IlBhcmFtZXRlcnMiLCJFeGVjdXRhYmxlIiwweDAwMDAwMDAwLCJ4ZW5jb25zX3R0eV9ATUFKT1Jf
VkVSU0kNCj4gT05AX0BNSU5PUl9WRVJTSU9OQF9ATUlDUk9fVkVSU0lPTkBfQEJVSUxEX05VTUJF
UkAuZXgNCj4gZSINCj4gK0hLUiwiUGFyYW1ldGVyc1xkZWZhdWx0IiwiRXhlY3V0YWJsZSIsMHgw
MDAwMDAwMCwieGVuY29uc190dHlfQE1BSg0KPiBPUl9WRVJTSU9OQF9ATUlOT1JfVkVSU0lPTkBf
QE1JQ1JPX1ZFUlNJT05AX0BCVUlMRF9OVQ0KPiBNQkVSQC5leGUiDQo+IA0KPiAgW01vbml0b3Jf
RXZlbnRMb2ddDQo+ICBBZGRSZWc9TW9uaXRvcl9FdmVudExvZ19BZGRSZWcNCj4gLS0NCj4gMi44
LjMNCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZw0KPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 13:05:00 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 13:05:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erNtJ-0007EJ-Ph; Thu, 01 Mar 2018 13:04:57 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1erNtI-0007E8-VC
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 13:04:56 +0000
Date: Thu, 1 Mar 2018 13:04:57 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <5331280.9.1519909503172.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_8_20952565.1519909497859"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #13 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_8_20952565.1519909497859
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #13.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/13/console to view the results.
------=_Part_8_20952565.1519909497859
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_8_20952565.1519909497859--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 14:00:38 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 14:00:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erOlA-0004uW-Kf; Thu, 01 Mar 2018 14:00:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=s+6d=fx=citrix.com=prvs=591d9ebe8=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erOl9-0004u9-7D
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 14:00:35 +0000
X-Inumbo-ID: 2dde06ac-1d59-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 2dde06ac-1d59-11e8-b9b1-635ca7ef6cff;
 Thu, 01 Mar 2018 14:02:30 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,408,1515456000"; d="scan'208";a="68940894"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 07/14 v2] Enumerate non-default consoles
Thread-Index: AQHTrLJdpaTGE789OUKScbQz6rGsGKO7ccwg
Date: Thu, 1 Mar 2018 14:00:26 +0000
Message-ID: <baa23ebea2764c51961d8abfbb6bc437@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-8-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-8-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 07/14 v2] Enumerate non-default consoles
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA3LzE0IHYyXSBFbnVtZXJhdGUgbm9uLWRlZmF1bHQgY29uc29sZXMNCj4gDQo+IEZyb206
IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gDQo+ICogQWRkIGVudW1lcmF0
aW9uIHRocmVhZCBhbmQgd2F0Y2gNCj4gKiBOb24tZGVmYXVsdCBjb25zb2xlcyB3aWxsIGZhaWwg
YW55IHJlYWQvd3JpdGUvaW9jb250cm9sIElSUHMNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4g
U21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6IFBhdWwgRHVycmFudCA8
cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMveGVuY29ucy9mZG8uYyB8
IDMxNg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKy0NCj4gIHNyYy94ZW5jb25zL3Bkby5jIHwgIDY0ICsrKysrKysrKy0tDQo+ICBzcmMveGVu
Y29ucy9wZG8uaCB8ICAgNSArDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCsp
LCA5IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zkby5jIGIv
c3JjL3hlbmNvbnMvZmRvLmMNCj4gaW5kZXggNDVhMWZkZC4uNDA0NmFjZiAxMDA2NDQNCj4gLS0t
IGEvc3JjL3hlbmNvbnMvZmRvLmMNCj4gKysrIGIvc3JjL3hlbmNvbnMvZmRvLmMNCj4gQEAgLTg1
LDYgKzg1LDkgQEAgc3RydWN0IF9YRU5DT05TX0ZETyB7DQo+IA0KPiAgICAgIENIQVIgICAgICAg
ICAgICAgICAgICAgICAgICBWZW5kb3JOYW1lW01BWE5BTUVMRU5dOw0KPiANCj4gKyAgICBQWEVO
Q09OU19USFJFQUQgICAgICAgICAgICAgU2NhblRocmVhZDsNCj4gKyAgICBLRVZFTlQgICAgICAg
ICAgICAgICAgICAgICAgU2NhbkV2ZW50Ow0KPiArICAgIFBYRU5CVVNfU1RPUkVfV0FUQ0ggICAg
ICAgICBTY2FuV2F0Y2g7DQo+ICAgICAgTVVURVggICAgICAgICAgICAgICAgICAgICAgIE11dGV4
Ow0KPiAgICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VzOw0KPiANCj4g
QEAgLTY1Myw2ICs2NTYsOSBAQCBkb25lOg0KPiAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRHgtPkxp
c3RFbnRyeSk7DQo+ICAgICAgQVNTRVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSAsIDApOw0KPiAg
ICAgIC0tRmRvLT5SZWZlcmVuY2VzOw0KPiArDQo+ICsgICAgaWYgKEZkby0+U2NhblRocmVhZCkN
Cj4gKyAgICAgICAgVGhyZWFkV2FrZShGZG8tPlNjYW5UaHJlYWQpOw0KPiAgfQ0KPiANCj4gIHN0
YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+IEBAIC02OTAsNiArNjk2LDExMiBAQCBGZG9SZWxlYXNl
TXV0ZXgoDQo+ICAgICAgICAgIEZkb0Rlc3Ryb3koRmRvKTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMg
Rk9SQ0VJTkxJTkUgQk9PTEVBTg0KPiArX19GZG9FbnVtZXJhdGUoDQo+ICsgICAgSU4gIFBYRU5D
T05TX0ZETyAgICBGZG8sDQo+ICsgICAgSU4gIFBBTlNJX1NUUklORyAgICBEZXZpY2VzDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIEJPT0xFQU4gICAgICAgICAgICAgTmVlZEludmFsaWRhdGU7DQo+
ICsgICAgSEFORExFICAgICAgICAgICAgICBQYXJhbWV0ZXJzS2V5Ow0KPiArICAgIFVMT05HICAg
ICAgICAgICAgICAgRW51bWVyYXRlOw0KPiArICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVu
dHJ5Ow0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+
ICsgICAgTmVlZEludmFsaWRhdGUgPSBGQUxTRTsNCj4gKw0KPiArICAgIFBhcmFtZXRlcnNLZXkg
PSBEcml2ZXJHZXRQYXJhbWV0ZXJzS2V5KCk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBSZWdpc3Ry
eVF1ZXJ5RHdvcmRWYWx1ZShQYXJhbWV0ZXJzS2V5LA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFbnVtZXJhdGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZFbnVtZXJhdGUpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQ0KPiArICAgICAgICBFbnVtZXJhdGUgPSAxOw0KPiArDQo+ICsgICAgaWYgKEVudW1lcmF0ZSA9
PSAwKQ0KPiArICAgICAgICBnb3RvIGRvbmU7DQo+ICsNCj4gKyAgICBfX0Zkb0FjcXVpcmVNdXRl
eChGZG8pOw0KPiArDQo+ICsgICAgTGlzdEVudHJ5ID0gRmRvLT5EeC0+TGlzdEVudHJ5LkZsaW5r
Ow0KPiArICAgIHdoaWxlIChMaXN0RW50cnkgIT0gJkZkby0+RHgtPkxpc3RFbnRyeSkgew0KPiAr
ICAgICAgICBQTElTVF9FTlRSWSAgICAgTmV4dCA9IExpc3RFbnRyeS0+Rmxpbms7DQo+ICsgICAg
ICAgIFBYRU5DT05TX0RYICAgICBEeCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVO
Q09OU19EWCwNCj4gTGlzdEVudHJ5KTsNCj4gKyAgICAgICAgUFhFTkNPTlNfUERPICAgIFBkbyA9
IER4LT5QZG87DQo+ICsNCj4gKyAgICAgICAgLy8gSWYgdGhlIFBETyBpcyB0aGUgZGVmYXVsdCBj
b25zb2xlLCBpdCB3b250IGV4aXN0IGluIHRoZQ0KPiArICAgICAgICAvLyB0aGUgZGV2aWNlIGxp
c3QsIGFzIGl0cyBzdGF0aWNhbGx5IGNyZWF0ZWQNCj4gKyAgICAgICAgaWYgKFBkb0lzRGVmYXVs
dChQZG8pKQ0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgaWYgKFBk
b0dldERldmljZVBucFN0YXRlKFBkbykgIT0gRGVsZXRlZCkgew0KPiArICAgICAgICAgICAgUENI
QVIgICAgICAgICAgIE5hbWU7DQo+ICsgICAgICAgICAgICBCT09MRUFOICAgICAgICAgTWlzc2lu
ZzsNCj4gKw0KPiArICAgICAgICAgICAgTmFtZSA9IFBkb0dldE5hbWUoUGRvKTsNCj4gKyAgICAg
ICAgICAgIE1pc3NpbmcgPSBUUlVFOw0KPiArDQo+ICsgICAgICAgICAgICAvLyBJZiB0aGUgUERP
IGFscmVhZHkgZXhpc3RzIGFuZCBpdHMgbmFtZSBpcyBpbiB0aGUgZGV2aWNlIGxpc3QNCj4gKyAg
ICAgICAgICAgIC8vIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byByZW1vdmUgaXQuDQo+ICsgICAgICAg
ICAgICBmb3IgKEluZGV4ID0gMDsgRGV2aWNlc1tJbmRleF0uQnVmZmVyICE9IE5VTEw7IEluZGV4
KyspIHsNCj4gKyAgICAgICAgICAgICAgICBQQU5TSV9TVFJJTkcgRGV2aWNlID0gJkRldmljZXNb
SW5kZXhdOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgaWYgKERldmljZS0+TGVuZ3RoID09IDAp
DQo+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgICAgICAg
ICAgaWYgKHN0cmNtcChOYW1lLCBEZXZpY2UtPkJ1ZmZlcikgPT0gMCkgew0KPiArICAgICAgICAg
ICAgICAgICAgICBNaXNzaW5nID0gRkFMU0U7DQo+ICsgICAgICAgICAgICAgICAgICAgIERldmlj
ZS0+TGVuZ3RoID0gMDsgIC8vIGF2b2lkIGR1cGxpY2F0aW9uDQo+ICsgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgIH0NCj4gKw0K
PiArICAgICAgICAgICAgaWYgKCFQZG9Jc01pc3NpbmcoUGRvKSkgew0KPiArICAgICAgICAgICAg
ICAgIGlmIChQZG9Jc0VqZWN0UmVxdWVzdGVkKFBkbykpIHsNCj4gKyAgICAgICAgICAgICAgICAg
ICAgSW9SZXF1ZXN0RGV2aWNlRWplY3QoUGRvR2V0RGV2aWNlT2JqZWN0KFBkbykpOw0KPiArICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoTWlzc2luZykgew0KPiArICAgICAgICAgICAgICAgICAg
ICBQZG9TZXRNaXNzaW5nKFBkbywgImRldmljZSBkaXNhcHBlYXJlZCIpOw0KPiArDQo+ICsgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBQRE8gaGFzIG5vdCB5ZXQgYmVlbiBlbnVtZXJhdGVk
IHRoZW4gd2UgY2FuDQo+ICsgICAgICAgICAgICAgICAgICAgIC8vIGdvIGFoZWFkIGFuZCBtYXJr
IGl0IGFzIGRlbGV0ZWQsIG90aGVyd2lzZSB3ZSBuZWVkDQo+ICsgICAgICAgICAgICAgICAgICAg
IC8vIHRvIG5vdGlmeSBQblAgbWFuYWdlciBhbmQgd2FpdCBmb3IgdGhlIFJFTU9WRV9ERVZJQ0UN
Cj4gKyAgICAgICAgICAgICAgICAgICAgLy8gSVJQLg0KPiArICAgICAgICAgICAgICAgICAgICBp
ZiAoUGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKSA9PSBQcmVzZW50KSB7DQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIERlbGV0ZWQpOw0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgUGRvRGVzdHJveShQZG8pOw0KPiArICAgICAgICAgICAgICAg
ICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTmVlZEludmFsaWRhdGUg
PSBUUlVFOw0KPiArICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgfQ0K
PiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgTGlzdEVudHJ5
ID0gTmV4dDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyBXYWxrIHRoZSBjbGFzcyBsaXN0IGFu
ZCBjcmVhdGUgUERPcyBmb3IgYW55IG5ldyBkZXZpY2UNCj4gKyAgICBmb3IgKEluZGV4ID0gMDsg
RGV2aWNlc1tJbmRleF0uQnVmZmVyICE9IE5VTEw7IEluZGV4KyspIHsNCj4gKyAgICAgICAgUEFO
U0lfU1RSSU5HIERldmljZSA9ICZEZXZpY2VzW0luZGV4XTsNCj4gKw0KPiArICAgICAgICBpZiAo
RGV2aWNlLT5MZW5ndGggPT0gMCkNCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsg
ICAgICAgIHN0YXR1cyA9IFBkb0NyZWF0ZShGZG8sIERldmljZSk7DQo+ICsgICAgICAgIGlmIChO
VF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgICAgICBOZWVkSW52YWxpZGF0ZSA9IFRSVUU7
DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsNCj4gKw0KPiAr
ZG9uZToNCj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiArDQo+ICsgICAgcmV0dXJuIE5lZWRJ
bnZhbGlkYXRlOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgRk9SQ0VJTkxJTkUgUEFOU0lfU1RSSU5H
DQo+ICBfX0Zkb011bHRpU3pUb1VwY2FzZUFuc2koDQo+ICAgICAgSU4gIFBDSEFSICAgICAgIEJ1
ZmZlcg0KPiBAQCAtNzY4LDYgKzg4MCwxMjUgQEAgX19GZG9GcmVlQW5zaSgNCj4gICAgICBfX0Zk
b0ZyZWUoQW5zaSk7DQo+ICB9DQo+IA0KPiArc3RhdGljIE5UU1RBVFVTDQo+ICtGZG9TY2FuKA0K
PiArICAgIFBYRU5DT05TX1RIUkVBRCAgICAgU2VsZiwNCj4gKyAgICBQVk9JRCAgICAgICAgICAg
ICAgIENvbnRleHQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRkRPICAgICAgICBG
ZG8gPSBDb250ZXh0Ow0KPiArICAgIFBLRVZFTlQgICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAg
SEFORExFICAgICAgICAgICAgICBQYXJhbWV0ZXJzS2V5Ow0KPiArICAgIE5UU1RBVFVTICAgICAg
ICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gKw0KPiArICAg
IEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7DQo+ICsNCj4gKyAgICBQYXJhbWV0ZXJzS2V5
ID0gRHJpdmVyR2V0UGFyYW1ldGVyc0tleSgpOw0KPiArDQo+ICsgICAgZm9yICg7Oykgew0KPiAr
ICAgICAgICBQQ0hBUiAgICAgICAgICAgQnVmZmVyOw0KPiArICAgICAgICBQQU5TSV9TVFJJTkcg
ICAgRGV2aWNlczsNCj4gKyAgICAgICAgUEFOU0lfU1RSSU5HICAgIFVuc3VwcG9ydGVkRGV2aWNl
czsNCj4gKyAgICAgICAgVUxPTkcgICAgICAgICAgIEluZGV4Ow0KPiArICAgICAgICBCT09MRUFO
ICAgICAgICAgTmVlZEludmFsaWRhdGU7DQo+ICsNCj4gKyAgICAgICAgVHJhY2UoIndhaXRpbmcu
Li5cbiIpOw0KPiArDQo+ICsgICAgICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdChFdmVu
dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICBLZUNsZWFyRXZlbnQoRXZl
bnQpOw0KPiArDQo+ICsgICAgICAgIGlmIChUaHJlYWRJc0FsZXJ0ZWQoU2VsZikpDQo+ICsgICAg
ICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICAvLyBJdCBpcyBub3Qgc2FmZSB0byB1c2Ug
aW50ZXJmYWNlcyBiZWZvcmUgdGhpcyBwb2ludA0KPiArICAgICAgICBpZiAoX19GZG9HZXREZXZp
Y2VQbnBTdGF0ZShGZG8pICE9IFN0YXJ0ZWQpIHsNCj4gKyAgICAgICAgICAgIEtlU2V0RXZlbnQo
JkZkby0+U2NhbkV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsNCj4gKyAgICAgICAgICAg
IGNvbnRpbnVlOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgc3RhdHVzID0gWEVOQlVT
X1NUT1JFKERpcmVjdG9yeSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGZG8t
PlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXZpY2UiLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNvbnNvbGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkJ1ZmZlcik7DQo+ICsgICAgICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsN
Cj4gKyAgICAgICAgICAgIERldmljZXMgPSBfX0Zkb011bHRpU3pUb1VwY2FzZUFuc2koQnVmZmVy
KTsNCj4gKw0KPiArICAgICAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgJkZkby0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKTsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIERl
dmljZXMgPSBOVUxMOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgaWYgKERldmljZXMg
PT0gTlVMTCkNCj4gKyAgICAgICAgICAgIGdvdG8gbG9vcDsNCj4gKw0KPiArICAgICAgICBpZiAo
UGFyYW1ldGVyc0tleSAhPSBOVUxMKSB7DQo+ICsgICAgICAgICAgICBzdGF0dXMgPSBSZWdpc3Ry
eVF1ZXJ5U3pWYWx1ZShQYXJhbWV0ZXJzS2V5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlVuc3VwcG9ydGVkRGV2aWNlcyIsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJlVuc3VwcG9ydGVkRGV2aWNlcyk7DQo+ICsgICAgICAg
ICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgICAgICAgICBVbnN1cHBv
cnRlZERldmljZXMgPSBOVUxMOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAg
VW5zdXBwb3J0ZWREZXZpY2VzID0gTlVMTDsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg
IC8vIE5VTEwgb3V0IGFueXRoaW5nIGluIHRoZSBEZXZpY2VzIGxpc3QgdGhhdCBpcyBpbiB0aGUN
Cj4gKyAgICAgICAgLy8gVW5zdXBwb3J0ZWREZXZpY2VzIGxpc3QNCj4gKyAgICAgICAgZm9yIChJ
bmRleCA9IDA7IERldmljZXNbSW5kZXhdLkJ1ZmZlciAhPSBOVUxMOyBJbmRleCsrKSB7DQo+ICsg
ICAgICAgICAgICBQQU5TSV9TVFJJTkcgICAgRGV2aWNlID0gJkRldmljZXNbSW5kZXhdOw0KPiAr
ICAgICAgICAgICAgVUxPTkcgICAgICAgICAgIEVudHJ5Ow0KPiArICAgICAgICAgICAgQk9PTEVB
TiAgICAgICAgIFN1cHBvcnRlZDsNCj4gKw0KPiArICAgICAgICAgICAgU3VwcG9ydGVkID0gVFJV
RTsNCj4gKw0KPiArICAgICAgICAgICAgZm9yIChFbnRyeSA9IDA7DQo+ICsgICAgICAgICAgICAg
ICAgIFVuc3VwcG9ydGVkRGV2aWNlcyAhPSBOVUxMICYmDQo+IFVuc3VwcG9ydGVkRGV2aWNlc1tF
bnRyeV0uQnVmZmVyICE9IE5VTEw7DQo+ICsgICAgICAgICAgICAgICAgIEVudHJ5KyspIHsNCj4g
KyAgICAgICAgICAgICAgICBpZiAoc3RybmNtcChEZXZpY2UtPkJ1ZmZlciwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbnN1cHBvcnRlZERldmljZXNbRW50cnldLkJ1ZmZlciwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UtPkxlbmd0aCkgPT0gMCkgew0KPiAr
ICAgICAgICAgICAgICAgICAgICBTdXBwb3J0ZWQgPSBGQUxTRTsNCj4gKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgfQ0KPiAr
DQo+ICsgICAgICAgICAgICBpZiAoIVN1cHBvcnRlZCkNCj4gKyAgICAgICAgICAgICAgICBEZXZp
Y2UtPkxlbmd0aCA9IDA7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBpZiAoVW5zdXBw
b3J0ZWREZXZpY2VzICE9IE5VTEwpDQo+ICsgICAgICAgICAgICBSZWdpc3RyeUZyZWVTelZhbHVl
KFVuc3VwcG9ydGVkRGV2aWNlcyk7DQo+ICsNCj4gKyAgICAgICAgTmVlZEludmFsaWRhdGUgPSBf
X0Zkb0VudW1lcmF0ZShGZG8sIERldmljZXMpOw0KPiArDQo+ICsgICAgICAgIF9fRmRvRnJlZUFu
c2koRGV2aWNlcyk7DQo+ICsNCj4gKyAgICAgICAgaWYgKE5lZWRJbnZhbGlkYXRlKSB7DQo+ICsg
ICAgICAgICAgICBOZWVkSW52YWxpZGF0ZSA9IEZBTFNFOw0KPiArICAgICAgICAgICAgSW9JbnZh
bGlkYXRlRGV2aWNlUmVsYXRpb25zKF9fRmRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvKSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNSZWxhdGlvbnMp
Ow0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICBsb29wOg0KPiArICAgICAgICBLZVNldEV2ZW50
KCZGZG8tPlNjYW5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7DQo+ICsgICAgfQ0KPiAr
DQo+ICsgICAgS2VTZXRFdmVudCgmRmRvLT5TY2FuRXZlbnQsIElPX05PX0lOQ1JFTUVOVCwgRkFM
U0UpOw0KPiArDQo+ICsgICAgVHJhY2UoIjw9PT09XG4iKTsNCj4gKyAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBGT1JDRUlOTElORSBCT09MRUFODQo+ICBf
X0Zkb01hdGNoRGlzdHJpYnV0aW9uKA0KPiAgICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0K
PiBAQCAtOTg5LDE1ICsxMjIwLDM5IEBAIF9fRmRvRDNUb0QwKA0KPiAgICAgIElOICBQWEVOQ09O
U19GRE8gICAgRmRvDQo+ICAgICAgKQ0KPiAgew0KPiArICAgIE5UU1RBVFVTICAgICAgICBzdGF0
dXM7DQo+ICsNCj4gICAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiANCj4gICAgICBBU1NFUlQzVShL
ZUdldEN1cnJlbnRJcnFsKCksID09LCBESVNQQVRDSF9MRVZFTCk7DQo+IA0KPiAgICAgIChWT0lE
KSBGZG9TZXREaXN0cmlidXRpb24oRmRvKTsNCj4gDQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX1NU
T1JFKFdhdGNoQWRkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRmRvLT5TdG9yZUlu
dGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRldmljZSIsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjb25zb2xlIiwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGhyZWFkR2V0RXZlbnQoRmRvLT5TY2FuVGhyZWFkKSwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkZkby0+U2NhbldhdGNoKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3Rh
dHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4gKw0KPiArICAgIChWT0lEKVhFTkJVU19T
VE9SRShQcmludGYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICZGZG8tPlN0b3JlSW50ZXJm
YWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAiZmVhdHVyZS9ob3RwbHVnIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgImNv
bnNvbGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAiJXUiLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFKTsNCj4gKw0KPiAgICAgIFRyYWNlKCI8PT09PVxuIik7DQo+IA0KPiAg
ICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+
ICB9DQo+IA0KPiAgc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gQEAgLTEwMDksNiArMTI2NCwx
NyBAQCBfX0Zkb0QwVG9EMygNCj4gDQo+ICAgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgp
LCA9PSwgRElTUEFUQ0hfTEVWRUwpOw0KPiANCj4gKyAgICAoVk9JRClYRU5CVVNfU1RPUkUoUmVt
b3ZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAmRmRvLT5TdG9yZUludGVyZmFjZSwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ImZlYXR1cmUvaG90cGx1ZyIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICJjb25zb2xlIik7
DQo+ICsNCj4gKyAgICAoVk9JRClYRU5CVVNfU1RPUkUoV2F0Y2hSZW1vdmUsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICZGZG8tPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICBGZG8tPlNjYW5XYXRjaCk7DQo+ICsgICAgRmRvLT5TY2FuV2F0Y2ggPSBOVUxMOw0K
PiArDQo+ICAgICAgRmRvQ2xlYXJEaXN0cmlidXRpb24oRmRvKTsNCj4gDQo+ICAgICAgVHJhY2Uo
Ijw9PT09XG4iKTsNCj4gQEAgLTEyMjEsMTcgKzE0ODcsMzEgQEAgRmRvU3RhcnREZXZpY2UoDQo+
ICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5TdGFydERl
dmljZS5BbGxvY2F0ZWRSZXNvdXJjZXMsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tM
b2NhdGlvbi0NCj4gPlBhcmFtZXRlcnMuU3RhcnREZXZpY2UuQWxsb2NhdGVkUmVzb3VyY2VzVHJh
bnNsYXRlZCk7DQo+IA0KPiAtICAgIHN0YXR1cyA9IEZkb0QzVG9EMChGZG8pOw0KPiArICAgIEtl
SW5pdGlhbGl6ZUV2ZW50KCZGZG8tPlNjYW5FdmVudCwgTm90aWZpY2F0aW9uRXZlbnQsIEZBTFNF
KTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShGZG9TY2FuLCBGZG8sICZGZG8t
PlNjYW5UaHJlYWQpOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiAgICAgICAg
ICBnb3RvIGZhaWwyOw0KPiANCj4gKyAgICBzdGF0dXMgPSBGZG9EM1RvRDAoRmRvKTsNCj4gKyAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMzsNCj4gKw0K
PiAgICAgIF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBTdGFydGVkKTsNCj4gKyAgICBUaHJl
YWRXYWtlKEZkby0+U2NhblRocmVhZCk7DQo+IA0KPiAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0
dXMuU3RhdHVzOw0KPiAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5U
KTsNCj4gDQo+ICAgICAgcmV0dXJuIHN0YXR1czsNCj4gDQo+ICtmYWlsMzoNCj4gKyAgICBFcnJv
cigiZmFpbDNcbiIpOw0KPiArDQo+ICsgICAgVGhyZWFkQWxlcnQoRmRvLT5TY2FuVGhyZWFkKTsN
Cj4gKyAgICBUaHJlYWRKb2luKEZkby0+U2NhblRocmVhZCk7DQo+ICsgICAgRmRvLT5TY2FuVGhy
ZWFkID0gTlVMTDsNCj4gKw0KPiAgZmFpbDI6DQo+ICAgICAgRXJyb3IoImZhaWwyXG4iKTsNCj4g
DQo+IEBAIC0xMjkyLDYgKzE1NzIsMTIgQEAgRmRvU3RvcERldmljZSgNCj4gICAgICBpZiAoX19G
ZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykgPT0gUG93ZXJEZXZpY2VEMCkNCj4gICAgICAgICAg
RmRvRDBUb0QzKEZkbyk7DQo+IA0KPiArICAgIFRocmVhZEFsZXJ0KEZkby0+U2NhblRocmVhZCk7
DQo+ICsgICAgVGhyZWFkSm9pbihGZG8tPlNjYW5UaHJlYWQpOw0KPiArICAgIEZkby0+U2NhblRo
cmVhZCA9IE5VTEw7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlNjYW5FdmVudCwg
c2l6ZW9mKEtFVkVOVCkpOw0KPiArDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5SZXNvdXJj
ZSwgc2l6ZW9mIChGRE9fUkVTT1VSQ0UpICoNCj4gUkVTT1VSQ0VfQ09VTlQpOw0KPiANCj4gICAg
ICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZkbywgU3RvcHBlZCk7DQo+IEBAIC0xMzg3LDYgKzE2
NzMsMTcgQEAgRmRvUmVtb3ZlRGV2aWNlKA0KPiAgICAgIGlmIChfX0Zkb0dldFByZXZpb3VzRGV2
aWNlUG5wU3RhdGUoRmRvKSAhPSBTdGFydGVkKQ0KPiAgICAgICAgICBnb3RvIGRvbmU7DQo+IA0K
PiArICAgIEtlQ2xlYXJFdmVudCgmRmRvLT5TY2FuRXZlbnQpOw0KPiArICAgIFRocmVhZFdha2Uo
RmRvLT5TY2FuVGhyZWFkKTsNCj4gKw0KPiArICAgIFRyYWNlKCJ3YWl0aW5nIGZvciBzY2FuIHRo
cmVhZFxuIik7DQo+ICsNCj4gKyAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZkby0+
U2NhbkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUs
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsNCj4gKw0KPiAgICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7
DQo+IA0KPiAgICAgIExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsNCj4gQEAg
LTE0MTQsNiArMTcxMSwxMiBAQCBGZG9SZW1vdmVEZXZpY2UoDQo+ICAgICAgaWYgKF9fRmRvR2V0
RGV2aWNlUG93ZXJTdGF0ZShGZG8pID09IFBvd2VyRGV2aWNlRDApDQo+ICAgICAgICAgIEZkb0Qw
VG9EMyhGZG8pOw0KPiANCj4gKyAgICBUaHJlYWRBbGVydChGZG8tPlNjYW5UaHJlYWQpOw0KPiAr
ICAgIFRocmVhZEpvaW4oRmRvLT5TY2FuVGhyZWFkKTsNCj4gKyAgICBGZG8tPlNjYW5UaHJlYWQg
PSBOVUxMOw0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TY2FuRXZlbnQsIHNpemVv
ZihLRVZFTlQpKTsNCj4gKw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+UmVzb3VyY2UsIHNp
emVvZiAoRkRPX1JFU09VUkNFKSAqDQo+IFJFU09VUkNFX0NPVU5UKTsNCj4gDQo+ICBkb25lOg0K
PiBAQCAtMTQ2Myw2ICsxNzY2LDE3IEBAIEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zKA0KPiAgICAg
ICAgICBnb3RvIGRvbmU7DQo+ICAgICAgfQ0KPiANCj4gKyAgICBLZUNsZWFyRXZlbnQoJkZkby0+
U2NhbkV2ZW50KTsNCj4gKyAgICBUaHJlYWRXYWtlKEZkby0+U2NhblRocmVhZCk7DQo+ICsNCj4g
KyAgICBUcmFjZSgid2FpdGluZyBmb3Igc2NhbiB0aHJlYWRcbiIpOw0KPiArDQo+ICsgICAgKFZP
SUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZGZG8tPlNjYW5FdmVudCwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBLZXJuZWxNb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsN
Cj4gICAgICBfX0Zkb0FjcXVpcmVNdXRleChGZG8pOw0KPiANCj4gICAgICBDb3VudCA9IDA7DQo+
IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9wZG8uYyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+IGlu
ZGV4IDYyZjM2NmMuLjJhY2Q4NmEgMTAwNzU1DQo+IC0tLSBhL3NyYy94ZW5jb25zL3Bkby5jDQo+
ICsrKyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+IEBAIC03MSw2ICs3MSw3IEBAIHN0cnVjdCBfWEVO
Q09OU19QRE8gew0KPiAgICAgIFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSAgICBTdXNwZW5kSW50
ZXJmYWNlOw0KPiAgICAgIFBYRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJh
Y2tMYXRlOw0KPiANCj4gKyAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgSXNEZWZhdWx0
Ow0KPiAgICAgIFBYRU5DT05TX0NPTlNPTEUgICAgICAgICAgICBDb25zb2xlOw0KPiAgfTsNCj4g
DQo+IEBAIC0yODYsNiArMjg3LDE0IEBAIF9fUGRvR2V0TmFtZSgNCj4gICAgICByZXR1cm4gRHgt
Pk5hbWU7DQo+ICB9DQo+IA0KPiArUENIQVINCj4gK1Bkb0dldE5hbWUoDQo+ICsgICAgSU4gIFBY
RU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIF9fUGRvR2V0
TmFtZShQZG8pOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgRk9SQ0VJTkxJTkUgUENIQVINCj4gIF9f
UGRvR2V0VmVuZG9yTmFtZSgNCj4gICAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiBAQCAt
Mjk1LDYgKzMwNCwyMiBAQCBfX1Bkb0dldFZlbmRvck5hbWUoDQo+ICB9DQo+IA0KPiAgc3RhdGlj
IEZPUkNFSU5MSU5FIEJPT0xFQU4NCj4gK19fUGRvSXNEZWZhdWx0KA0KPiArICAgIElOICBQWEVO
Q09OU19QRE8gICAgUGRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBQZG8tPklzRGVm
YXVsdDsNCj4gK30NCj4gKw0KPiArQk9PTEVBTg0KPiArUGRvSXNEZWZhdWx0KA0KPiArICAgIElO
ICBQWEVOQ09OU19QRE8gICAgUGRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBfX1Bk
b0lzRGVmYXVsdChQZG8pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVB
Tg0KPiAgX19QZG9TZXRFamVjdFJlcXVlc3RlZCgNCj4gICAgICBJTiAgUFhFTkNPTlNfUERPICAg
IFBkbw0KPiAgICAgICkNCj4gQEAgLTQ0MSw3ICs0NjYsMTAgQEAgUGRvRDNUb0QwKA0KPiANCj4g
ICAgICBLZUxvd2VySXJxbChJcnFsKTsNCj4gDQo+IC0gICAgc3RhdHVzID0gQ29uc29sZUQzVG9E
MChQZG8tPkNvbnNvbGUpOw0KPiArICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQ0KPiArICAg
ICAgICBzdGF0dXMgPSBDb25zb2xlRDNUb0QwKFBkby0+Q29uc29sZSk7DQo+ICsgICAgZWxzZQ0K
PiArICAgICAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gICAgICBpZiAoIU5UX1NVQ0NF
U1Moc3RhdHVzKSkNCj4gICAgICAgICAgZ290byBmYWlsNDsNCj4gDQo+IEBAIC00OTUsNyArNTIz
LDggQEAgUGRvRDBUb0QzKA0KPiAgI3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQ0KPiAg
ICAgIChWT0lEKSBJb1NldERldmljZUludGVyZmFjZVN0YXRlKCZQZG8tPkR4LT5MaW5rLCBGQUxT
RSk7DQo+IA0KPiAtICAgIENvbnNvbGVEMFRvRDMoUGRvLT5Db25zb2xlKTsNCj4gKyAgICBpZiAo
X19QZG9Jc0RlZmF1bHQoUGRvKSkNCj4gKyAgICAgICAgQ29uc29sZUQwVG9EMyhQZG8tPkNvbnNv
bGUpOw0KPiANCj4gICAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0KPiAN
Cj4gQEAgLTE2ODksNyArMTcxOCwxMCBAQCBQZG9EaXNwYXRjaENyZWF0ZSgNCj4gDQo+ICAgICAg
U3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gDQo+
IC0gICAgc3RhdHVzID0gQ29uc29sZU9wZW4oUGRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5G
aWxlT2JqZWN0KTsNCj4gKyAgICBpZiAoX19QZG9Jc0RlZmF1bHQoUGRvKSkNCj4gKyAgICAgICAg
c3RhdHVzID0gQ29uc29sZU9wZW4oUGRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2Jq
ZWN0KTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0K
PiANCj4gICAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gICAgICBJb0NvbXBs
ZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+IEBAIC0xNzA4LDcgKzE3NDAsMTAg
QEAgUGRvRGlzcGF0Y2hDbGVhbnVwKA0KPiANCj4gICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiANCj4gLSAgICBzdGF0dXMgPSBDb25zb2xl
Q2xvc2UoUGRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gKyAgICBp
ZiAoX19QZG9Jc0RlZmF1bHQoUGRvKSkNCj4gKyAgICAgICAgc3RhdHVzID0gQ29uc29sZUNsb3Nl
KFBkby0+Q29uc29sZSwgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7DQo+ICsgICAgZWxzZQ0K
PiArICAgICAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gDQo+ICAgICAgSXJwLT5Jb1N0
YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOw0KPiBAQCAtMTc0Miw3ICsxNzc3LDEwIEBAIFBkb0Rpc3BhdGNoUmVhZFdy
aXRlQ29udHJvbCgNCj4gIHsNCj4gICAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4g
DQo+IC0gICAgc3RhdHVzID0gQ29uc29sZVB1dFF1ZXVlKFBkby0+Q29uc29sZSwgSXJwKTsNCj4g
KyAgICBpZiAoX19QZG9Jc0RlZmF1bHQoUGRvKSkNCj4gKyAgICAgICAgc3RhdHVzID0gQ29uc29s
ZVB1dFF1ZXVlKFBkby0+Q29uc29sZSwgSXJwKTsNCj4gKyAgICBlbHNlDQo+ICsgICAgICAgIHN0
YXR1cyA9IFNUQVRVU19ERVZJQ0VfTk9UX1JFQURZOw0KPiAgICAgIGlmIChzdGF0dXMgPT0gU1RB
VFVTX1NVQ0NFU1MpDQo+ICAgICAgICAgIGdvdG8gZG9uZTsNCj4gICAgICBpZiAoc3RhdHVzICE9
IFNUQVRVU19QRU5ESU5HKQ0KPiBAQCAtMTg5NSw3ICsxOTMzLDExIEBAIFBkb0NyZWF0ZSgNCj4g
DQo+ICAgICAgRHgtPlBkbyA9IFBkbzsNCj4gDQo+IC0gICAgc3RhdHVzID0gQ29uc29sZUNyZWF0
ZShGZG8sICZQZG8tPkNvbnNvbGUpOw0KPiArICAgIFBkby0+SXNEZWZhdWx0ID0gKERldmljZSA9
PSBOVUxMKTsNCj4gKyAgICBpZiAoUGRvLT5Jc0RlZmF1bHQpDQo+ICsgICAgICAgIHN0YXR1cyA9
IENvbnNvbGVDcmVhdGUoRmRvLCAmUGRvLT5Db25zb2xlKTsNCj4gKyAgICBlbHNlDQo+ICsgICAg
ICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQ0KPiAgICAgICAgICBnb3RvIGZhaWw1Ow0KPiANCj4gQEAgLTE5MjUsOSArMTk2NywxMiBA
QCBmYWlsNjoNCj4gDQo+ICAgICAgKFZPSUQpX19QZG9DbGVhckVqZWN0UmVxdWVzdGVkKFBkbyk7
DQo+IA0KPiAtICAgIENvbnNvbGVEZXN0cm95KFBkby0+Q29uc29sZSk7DQo+ICsgICAgaWYgKF9f
UGRvSXNEZWZhdWx0KFBkbykpDQo+ICsgICAgICAgIENvbnNvbGVEZXN0cm95KFBkby0+Q29uc29s
ZSk7DQo+ICAgICAgUGRvLT5Db25zb2xlID0gTlVMTDsNCj4gDQo+ICsgICAgUGRvLT5Jc0RlZmF1
bHQgPSBGQUxTRTsNCj4gKw0KPiAgZmFpbDU6DQo+ICAgICAgRXJyb3IoImZhaWw1XG4iKTsNCj4g
DQo+IEBAIC0xOTk0LDkgKzIwMzksMTIgQEAgUGRvRGVzdHJveSgNCj4gDQo+ICAgICAgRHgtPlBk
byA9IE5VTEw7DQo+IA0KPiAtICAgIENvbnNvbGVEZXN0cm95KFBkby0+Q29uc29sZSk7DQo+ICsg
ICAgaWYgKF9fUGRvSXNEZWZhdWx0KFBkbykpDQo+ICsgICAgICAgIENvbnNvbGVEZXN0cm95KFBk
by0+Q29uc29sZSk7DQo+ICAgICAgUGRvLT5Db25zb2xlID0gTlVMTDsNCj4gDQo+ICsgICAgUGRv
LT5Jc0RlZmF1bHQgPSBGQUxTRTsNCj4gKw0KPiAgICAgIFJ0bEZyZWVVbmljb2RlU3RyaW5nKCZQ
ZG8tPkR4LT5MaW5rKTsNCj4gDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmUGRvLT5TdXNwZW5kSW50
ZXJmYWNlLA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvcGRvLmggYi9zcmMveGVuY29ucy9w
ZG8uaA0KPiBpbmRleCAwNjA1NDgzLi44NWY3M2EzIDEwMDc1NQ0KPiAtLS0gYS9zcmMveGVuY29u
cy9wZG8uaA0KPiArKysgYi9zcmMveGVuY29ucy9wZG8uaA0KPiBAQCAtODMsNiArODMsMTEgQEAg
UGRvR2V0RGV2aWNlT2JqZWN0KA0KPiAgICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+ICAg
ICAgKTsNCj4gDQo+ICtleHRlcm4gQk9PTEVBTg0KPiArUGRvSXNEZWZhdWx0KA0KPiArICAgIElO
ICBQWEVOQ09OU19QRE8gICAgUGRvDQo+ICsgICAgKTsNCj4gKw0KPiAgZXh0ZXJuIE5UU1RBVFVT
DQo+ICBQZG9DcmVhdGUoDQo+ICAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+IC0tDQo+
IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Mar 01 14:30:59 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Mar 2018 14:30:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erPEW-0007pT-RT; Thu, 01 Mar 2018 14:30:56 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1erPEV-0007pK-Ey
 for win-pv-devel@lists.xenproject.org; Thu, 01 Mar 2018 14:30:55 +0000
Date: Thu, 1 Mar 2018 14:30:56 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <2239188.11.1519914661737.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_10_10301086.1519914656487"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #14 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_10_10301086.1519914656487
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #14.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/14/console to view the results.
------=_Part_10_10301086.1519914656487
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_10_10301086.1519914656487--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:25:19 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:25:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkgW-0004DS-Bm; Fri, 02 Mar 2018 13:25:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkgU-0004Cd-RF
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:25:14 +0000
X-Inumbo-ID: fdb93144-1e1c-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id fdb93144-1e1c-11e8-ba59-bc764e045a96;
 Fri, 02 Mar 2018 14:24:11 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033425"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 08/14 v2] Hide console access behind an
 interface
Thread-Index: AQHTrLIhBeJQl3hQ80CF+tORk0XznqO8+kLA
Date: Fri, 2 Mar 2018 13:25:07 +0000
Message-ID: <d768bca416e242e6bb7e6468d8d87c38@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-9-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-9-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 08/14 v2] Hide console access behind
	an	interface
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA4LzE0IHYyXSBIaWRlIGNvbnNvbGUgYWNjZXNzIGJlaGluZCBhbg0KPiBpbnRlcmZhY2UN
Cj4gDQo+IEZyb206IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gDQo+ICog
QWxsb3dzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb25zb2xlIHByb3RvY29s
IGZvcg0KPiAgIG5vbi1kZWZhdWx0IGNvbnNvbGVzDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2Vu
IFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQg
PHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3JjL3hlbmNvbnMvY29uc29s
ZS5jICAgICB8IDE3NA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t
LS0tLS0tDQo+ICBzcmMveGVuY29ucy9jb25zb2xlLmggICAgIHwgIDQwICstLS0tLS0tLS0tDQo+
ICBzcmMveGVuY29ucy9jb25zb2xlX2FiaS5oIHwgIDk5ICsrKysrKysrKysrKysrKysrKysrKysr
KysrDQo+ICBzcmMveGVuY29ucy9wZG8uYyAgICAgICAgIHwgIDcyICsrKysrKysrKy0tLS0tLS0t
LS0NCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMo
LSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9jb25zb2xlX2FiaS5oDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvY29uc29sZS5jIGIvc3JjL3hlbmNvbnMvY29uc29s
ZS5jDQo+IGluZGV4IGI5YWJlODMuLjUwZmUxNDUgMTAwNzU1DQo+IC0tLSBhL3NyYy94ZW5jb25z
L2NvbnNvbGUuYw0KPiArKysgYi9zcmMveGVuY29ucy9jb25zb2xlLmMNCj4gQEAgLTUzLDExICs1
MywxMiBAQCB0eXBlZGVmIHN0cnVjdCBfQ09OU09MRV9IQU5ETEUgew0KPiAgICAgIFBYRU5DT05T
X1NUUkVBTSBTdHJlYW07DQo+ICB9IENPTlNPTEVfSEFORExFLCAqUENPTlNPTEVfSEFORExFOw0K
PiANCj4gLXN0cnVjdCBfWEVOQ09OU19DT05TT0xFIHsNCj4gK3R5cGVkZWYgc3RydWN0IF9YRU5D
T05TX0NPTlNPTEUgew0KPiArICAgIExPTkcgICAgICAgICAgICBSZWZDb3VudDsNCj4gICAgICBQ
WEVOQ09OU19GRE8gICAgRmRvOw0KPiAgICAgIExJU1RfRU5UUlkgICAgICBMaXN0Ow0KPiAgICAg
IEtTUElOX0xPQ0sgICAgICBMb2NrOw0KPiAtfTsNCj4gK30gWEVOQ09OU19DT05TT0xFLCAqUFhF
TkNPTlNfQ09OU09MRTsNCj4gDQo+ICBzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQNCj4gIF9fQ29u
c29sZUFsbG9jYXRlKA0KPiBAQCAtMTM2LDcgKzEzNyw3IEBAIGZhaWwxOg0KPiAgICAgIHJldHVy
biBOVUxMOw0KPiAgfQ0KPiANCj4gLU5UU1RBVFVTDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gIENv
bnNvbGVPcGVuKA0KPiAgICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsDQo+ICAg
ICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgRmlsZU9iamVjdA0KPiBAQCAtMTc4LDcgKzE3OSw3
IEBAIGZhaWwxOg0KPiAgICAgIHJldHVybiBzdGF0dXM7DQo+ICB9DQo+IA0KPiAtTlRTVEFUVVMN
Cj4gK3N0YXRpYyBOVFNUQVRVUw0KPiAgQ29uc29sZUNsb3NlKA0KPiAgICAgIElOICBQWEVOQ09O
U19DT05TT0xFICAgIENvbnNvbGUsDQo+ICAgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgRmls
ZU9iamVjdA0KPiBAQCAtMzE3LDcgKzMxOCw3IEBAIGZhaWwxOg0KPiAgICAgIHJldHVybiBzdGF0
dXM7DQo+ICB9DQo+IA0KPiAtTlRTVEFUVVMNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiAgQ29uc29s
ZVB1dFF1ZXVlKA0KPiAgICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsDQo+ICAg
ICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgSXJwDQo+IEBAIC0zNDcsNyArMzQ4LDcgQEAgQ29u
c29sZVB1dFF1ZXVlKA0KPiAgICAgIHJldHVybiBzdGF0dXM7DQo+ICB9DQo+IA0KPiAtTlRTVEFU
VVMNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiAgQ29uc29sZUQzVG9EMCgNCj4gICAgICBJTiAgUFhF
TkNPTlNfQ09OU09MRSAgICBDb25zb2xlDQo+ICAgICAgKQ0KPiBAQCAtMzYxLDcgKzM2Miw3IEBA
IENvbnNvbGVEM1RvRDAoDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiAgfQ0KPiAN
Cj4gLVZPSUQNCj4gK3N0YXRpYyBWT0lEDQo+ICBDb25zb2xlRDBUb0QzKA0KPiAgICAgIElOICBQ
WEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUNCj4gICAgICApDQo+IEBAIC00MDAsNTIgKzQwMSwx
NTcgQEAgQ29uc29sZUQwVG9EMygNCj4gICAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiAgfQ0KPiAN
Cj4gLU5UU1RBVFVTDQo+IC1Db25zb2xlQ3JlYXRlKA0KPiAtICAgIElOICBQWEVOQ09OU19GRE8g
ICAgICAgIEZkbywNCj4gLSAgICBPVVQgUFhFTkNPTlNfQ09OU09MRSAgICAqQ29uc29sZQ0KPiAr
c3RhdGljIFZPSUQNCj4gK0NvbnNvbGVEZXN0cm95KA0KPiArICAgIElOICBQWEVOQ09OU19DT05T
T0xFICAgIENvbnNvbGUNCj4gICAgICApDQo+IC17DQo+IC0gICAgTlRTVEFUVVMgICAgICAgICAg
ICAgICAgc3RhdHVzOw0KPiAtDQo+ICt7DQo+ICAgICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gDQo+
IC0gICAgKkNvbnNvbGUgPSBfX0NvbnNvbGVBbGxvY2F0ZShzaXplb2YoWEVOQ09OU19DT05TT0xF
KSk7DQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZDb25zb2xlLT5MaXN0KSk7DQo+ICsgICAg
UnRsWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdCwgc2l6ZW9mKExJU1RfRU5UUlkpKTsNCj4gDQo+
IC0gICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gLSAgICBpZiAoKkNvbnNvbGUgPT0g
TlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsMTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZDb25z
b2xlLT5Mb2NrLCBzaXplb2YoS1NQSU5fTE9DSykpOw0KPiArDQo+ICsgICAgQ29uc29sZS0+RmRv
ID0gTlVMTDsNCj4gDQo+IC0gICAgKCpDb25zb2xlKS0+RmRvID0gRmRvOw0KPiAtICAgIEluaXRp
YWxpemVMaXN0SGVhZCgmKCpDb25zb2xlKS0+TGlzdCk7DQo+IC0gICAgS2VJbml0aWFsaXplU3Bp
bkxvY2soJigqQ29uc29sZSktPkxvY2spOw0KPiArICAgIEFTU0VSVChJc1plcm9NZW1vcnkoQ29u
c29sZSwgc2l6ZW9mKFhFTkNPTlNfQ09OU09MRSkpKTsNCj4gKyAgICBfX0NvbnNvbGVGcmVlKENv
bnNvbGUpOw0KPiANCj4gICAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiArfQ0KPiArDQo+ICtzdGF0
aWMgTlRTVEFUVVMNCj4gK0NvbnNvbGVBYmlBY3F1aXJlKA0KPiArICAgIElOICBQWEVOQ09OU19D
T05TT0xFX0NPTlRFWFQgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09O
U19DT05TT0xFICAgICAgICAgICAgICAgIENvbnNvbGUgPSAoUFhFTkNPTlNfQ09OU09MRSlDb250
ZXh0Ow0KPiArDQo+ICsgICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJkNvbnNvbGUtPlJlZkNvdW50
KTsNCj4gDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArfQ0KPiANCj4gLWZhaWwx
Og0KPiAtICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICtzdGF0aWMgVk9J
RA0KPiArQ29uc29sZUFiaVJlbGVhc2UoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09O
VEVYVCAgICBDb250ZXh0DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0NPTlNPTEUg
ICAgICAgICAgICAgICAgQ29uc29sZSA9IChQWEVOQ09OU19DT05TT0xFKUNvbnRleHQ7DQo+ICsg
ICAgTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudDsNCj4gDQo+IC0gICAgcmV0
dXJuIHN0YXR1czsNCj4gKyAgICBDb3VudCA9IEludGVybG9ja2VkRGVjcmVtZW50KCZDb25zb2xl
LT5SZWZDb3VudCk7DQo+ICsNCj4gKyAgICBpZiAoQ291bnQgPT0gMCkNCj4gKyAgICAgICAgQ29u
c29sZURlc3Ryb3koQ29uc29sZSk7DQo+ICB9DQo+IA0KPiAtVk9JRA0KPiAtQ29uc29sZURlc3Ry
b3koDQo+IC0gICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZQ0KPiArc3RhdGljIEJP
T0xFQU4NCj4gK0NvbnNvbGVBYmlJc0RlZmF1bHQoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNP
TEVfQ09OVEVYVCAgICBDb250ZXh0DQo+ICAgICAgKQ0KPiAtew0KPiArew0KPiArICAgIFVOUkVG
RVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7DQo+ICsgICAgcmV0dXJuIFRSVUU7DQo+ICt9DQo+
ICsNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiArQ29uc29sZUFiaUQzVG9EMCgNCj4gKyAgICBJTiAg
UFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4gKyAgICApDQo+ICt7DQo+ICsg
ICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAgICAgICBDb25zb2xlID0gKFBYRU5DT05TX0NP
TlNPTEUpQ29udGV4dDsNCj4gKw0KPiArICAgIHJldHVybiBDb25zb2xlRDNUb0QwKENvbnNvbGUp
Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgVk9JRA0KPiArQ29uc29sZUFiaUQwVG9EMygNCj4gKyAg
ICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAgICAgICBDb25zb2xlID0gKFBYRU5D
T05TX0NPTlNPTEUpQ29udGV4dDsNCj4gKw0KPiArICAgIENvbnNvbGVEMFRvRDMoQ29uc29sZSk7
DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiArQ29uc29sZUFiaU9wZW4oDQo+ICsg
ICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LA0KPiArICAgIElOICBQ
RklMRV9PQkpFQ1QgICAgICAgICAgICAgICAgRmlsZU9iamVjdA0KPiArICAgICkNCj4gK3sNCj4g
KyAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAgICAgICAgIENvbnNvbGUgPSAoUFhFTkNPTlNf
Q09OU09MRSlDb250ZXh0Ow0KPiArDQo+ICsgICAgcmV0dXJuIENvbnNvbGVPcGVuKENvbnNvbGUs
IEZpbGVPYmplY3QpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0NvbnNvbGVB
YmlDbG9zZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQs
DQo+ICsgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0DQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0NPTlNPTEUgICAgICAgICAgICAgICAgQ29uc29s
ZSA9IChQWEVOQ09OU19DT05TT0xFKUNvbnRleHQ7DQo+ICsNCj4gKyAgICByZXR1cm4gQ29uc29s
ZUNsb3NlKENvbnNvbGUsIEZpbGVPYmplY3QpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgTlRTVEFU
VVMNCj4gK0NvbnNvbGVBYmlQdXRRdWV1ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9D
T05URVhUICAgIENvbnRleHQsDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgICAgICAg
ICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAg
ICAgICBDb25zb2xlID0gKFBYRU5DT05TX0NPTlNPTEUpQ29udGV4dDsNCj4gKw0KPiArICAgIHJl
dHVybiBDb25zb2xlUHV0UXVldWUoQ29uc29sZSwgSXJwKTsNCj4gK30NCj4gKw0KPiArc3RhdGlj
IFhFTkNPTlNfQ09OU09MRV9BQkkgQ29uc29sZUFiaVYxID0gew0KPiArICAgIE5VTEwsDQo+ICsg
ICAgQ29uc29sZUFiaUFjcXVpcmUsDQo+ICsgICAgQ29uc29sZUFiaVJlbGVhc2UsDQo+ICsgICAg
Q29uc29sZUFiaUlzRGVmYXVsdCwNCj4gKyAgICBDb25zb2xlQWJpRDNUb0QwLA0KPiArICAgIENv
bnNvbGVBYmlEMFRvRDMsDQo+ICsgICAgQ29uc29sZUFiaU9wZW4sDQo+ICsgICAgQ29uc29sZUFi
aUNsb3NlLA0KPiArICAgIENvbnNvbGVBYmlQdXRRdWV1ZQ0KPiArfTsNCj4gKw0KPiArTlRTVEFU
VVMNCj4gK0NvbnNvbGVDcmVhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICAgICAgICAg
IEZkbywNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9BQkkgICAgQ29uc29sZUFiaQ0KPiAr
ICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAgICAgQ29uc29sZTsN
Cj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICAgICAg
VHJhY2UoIj09PT0+XG4iKTsNCj4gDQo+IC0gICAgQVNTRVJUKElzTGlzdEVtcHR5KCZDb25zb2xl
LT5MaXN0KSk7DQo+IC0gICAgUnRsWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdCwgc2l6ZW9mKExJ
U1RfRU5UUlkpKTsNCj4gKyAgICBDb25zb2xlID0gX19Db25zb2xlQWxsb2NhdGUoc2l6ZW9mKFhF
TkNPTlNfQ09OU09MRSkpOw0KPiANCj4gLSAgICBSdGxaZXJvTWVtb3J5KCZDb25zb2xlLT5Mb2Nr
LCBzaXplb2YoS1NQSU5fTE9DSykpOw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7
DQo+ICsgICAgaWYgKENvbnNvbGUgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4g
DQo+IC0gICAgQ29uc29sZS0+RmRvID0gTlVMTDsNCj4gKyAgICBDb25zb2xlLT5SZWZDb3VudCA9
IDE7DQo+ICsgICAgQ29uc29sZS0+RmRvID0gRmRvOw0KPiArICAgIEluaXRpYWxpemVMaXN0SGVh
ZCgmQ29uc29sZS0+TGlzdCk7DQo+ICsgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkNvbnNvbGUt
PkxvY2spOw0KPiANCj4gLSAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KENvbnNvbGUsIHNpemVvZihY
RU5DT05TX0NPTlNPTEUpKSk7DQo+IC0gICAgX19Db25zb2xlRnJlZShDb25zb2xlKTsNCj4gKyAg
ICAqQ29uc29sZUFiaSA9IENvbnNvbGVBYmlWMTsNCj4gKyAgICBDb25zb2xlQWJpLT5Db250ZXh0
ID0gKFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVClDb25zb2xlOw0KPiANCj4gICAgICBUcmFjZSgi
PD09PT1cbiIpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtm
YWlsMToNCj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsg
ICAgcmV0dXJuIHN0YXR1czsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2NvbnNv
bGUuaCBiL3NyYy94ZW5jb25zL2NvbnNvbGUuaA0KPiBpbmRleCAxMDk0ZjgyLi44MWE3YzEzIDEw
MDc1NQ0KPiAtLS0gYS9zcmMveGVuY29ucy9jb25zb2xlLmgNCj4gKysrIGIvc3JjL3hlbmNvbnMv
Y29uc29sZS5oDQo+IEBAIC0zNSw0NiArMzUsMTIgQEANCj4gICNpbmNsdWRlIDxudGRkay5oPg0K
PiANCj4gICNpbmNsdWRlICJkcml2ZXIuaCINCj4gLQ0KPiAtdHlwZWRlZiBzdHJ1Y3QgX1hFTkNP
TlNfQ09OU09MRSBYRU5DT05TX0NPTlNPTEUsDQo+ICpQWEVOQ09OU19DT05TT0xFOw0KPiArI2lu
Y2x1ZGUgImNvbnNvbGVfYWJpLmgiDQo+IA0KPiAgZXh0ZXJuIE5UU1RBVFVTDQo+ICBDb25zb2xl
Q3JlYXRlKA0KPiAtICAgIElOICBQWEVOQ09OU19GRE8gICAgICAgIEZkbywNCj4gLSAgICBPVVQg
UFhFTkNPTlNfQ09OU09MRSAgICAqQ29uc29sZQ0KPiAtICAgICk7DQo+IC0NCj4gLWV4dGVybiBW
T0lEDQo+IC1Db25zb2xlRGVzdHJveSgNCj4gLSAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBD
b25zb2xlDQo+IC0gICAgKTsNCj4gLQ0KPiAtZXh0ZXJuIE5UU1RBVFVTDQo+IC1Db25zb2xlRDNU
b0QwKA0KPiAtICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUNCj4gLSAgICApOw0K
PiAtDQo+IC1leHRlcm4gVk9JRA0KPiAtQ29uc29sZUQwVG9EMygNCj4gLSAgICBJTiAgUFhFTkNP
TlNfQ09OU09MRSAgICBDb25zb2xlDQo+IC0gICAgKTsNCj4gLQ0KPiAtZXh0ZXJuIE5UU1RBVFVT
DQo+IC1Db25zb2xlT3BlbigNCj4gLSAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xl
LA0KPiAtICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAgIEZpbGVPYmplY3QNCj4gLSAgICApOw0K
PiAtDQo+IC1leHRlcm4gTlRTVEFUVVMNCj4gLUNvbnNvbGVDbG9zZSgNCj4gLSAgICBJTiAgUFhF
TkNPTlNfQ09OU09MRSAgICBDb25zb2xlLA0KPiAtICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAg
IEZpbGVPYmplY3QNCj4gLSAgICApOw0KPiAtDQo+IC1leHRlcm4gTlRTVEFUVVMNCj4gLUNvbnNv
bGVQdXRRdWV1ZSgNCj4gLSAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLA0KPiAt
ICAgIElOICBQSVJQICAgICAgICAgICAgICAgIElycA0KPiArICAgIElOICBQWEVOQ09OU19GRE8g
ICAgICAgICAgICBGZG8sDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQUJJICAgIENvbnNv
bGVBYmkNCj4gICAgICApOw0KPiANCj4gICNlbmRpZiAgLy8gX1hFTkNPTlNfQ09OU09MRV9IDQo+
IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9jb25zb2xlX2FiaS5oIGIvc3JjL3hlbmNvbnMvY29u
c29sZV9hYmkuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwLi5hYjhk
ODAwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL3hlbmNvbnMvY29uc29sZV9hYmkuaA0K
PiBAQCAtMCwwICsxLDk5IEBADQo+ICsvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIElu
Yy4NCj4gKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyoNCj4gKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyogd2l0aCBvciB3aXRob3V0
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArKiB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiArKg0KPiArKiAqICAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArKiAgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIuDQo+ICsqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyogICAgIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsqDQo+ICsqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiArKiBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiArKiBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0K
PiArKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQ0KPiArKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUg0KPiArKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwNCj4gKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+ICsqIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArKiBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+
ICsqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YNCj4gKyogU1VDSCBEQU1BR0UuDQo+ICsqLw0KPiArDQo+ICsjaWZuZGVmIF9YRU5DT05TX0NP
TlNPTEVfQUJJX0gNCj4gKyNkZWZpbmUgX1hFTkNPTlNfQ09OU09MRV9BQklfSA0KPiArDQo+ICsj
aW5jbHVkZSA8bnRkZGsuaD4NCj4gKw0KPiArI2luY2x1ZGUgImRyaXZlci5oIg0KPiArDQo+ICt0
eXBlZGVmIFBWT0lEICpQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQ7DQo+ICsNCj4gK3R5cGVkZWYg
TlRTVEFUVVMNCj4gKygqWEVOQ09OU19DT05TT0xFX0FCSV9BQ1FVSVJFKSgNCj4gKyAgICBJTiAg
UFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+ICt0
eXBlZGVmIFZPSUQNCj4gKygqWEVOQ09OU19DT05TT0xFX0FCSV9SRUxFQVNFKSgNCj4gKyAgICBJ
TiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4gKyAgICApOw0KPiArDQo+
ICt0eXBlZGVmIEJPT0xFQU4NCj4gKygqWEVOQ09OU19DT05TT0xFX0FCSV9JU19ERUZBVUxUKSgN
Cj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4gKyAgICAp
Ow0KPiArDQo+ICt0eXBlZGVmIE5UU1RBVFVTDQo+ICsoKlhFTkNPTlNfQ09OU09MRV9BQklfRDNU
T0QwKSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4g
KyAgICApOw0KPiArDQo+ICt0eXBlZGVmIFZPSUQNCj4gKygqWEVOQ09OU19DT05TT0xFX0FCSV9E
MFRPRDMpKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQgICAgQ29udGV4dA0K
PiArICAgICk7DQo+ICsNCj4gK3R5cGVkZWYgTlRTVEFUVVMNCj4gKygqWEVOQ09OU19DT05TT0xF
X0FCSV9PUEVOKSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRl
eHQsDQo+ICsgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0DQo+
ICsgICAgKTsNCj4gKw0KPiArdHlwZWRlZiBOVFNUQVRVUw0KPiArKCpYRU5DT05TX0NPTlNPTEVf
QUJJX0NMT1NFKSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRl
eHQsDQo+ICsgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0DQo+
ICsgICAgKTsNCj4gKw0KPiArdHlwZWRlZiBOVFNUQVRVUw0KPiArKCpYRU5DT05TX0NPTlNPTEVf
QUJJX1BVVF9RVUVVRSkoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBD
b250ZXh0LA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICAgICAgSXJwDQo+ICsg
ICAgKTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfQ09OU09MRV9BQkkgew0KPiAr
ICAgIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiAr
ICAgIFhFTkNPTlNfQ09OU09MRV9BQklfQUNRVUlSRSAgICAgICAgICAgICBDb25zb2xlQWJpQWNx
dWlyZTsNCj4gKyAgICBYRU5DT05TX0NPTlNPTEVfQUJJX1JFTEVBU0UgICAgICAgICAgICAgQ29u
c29sZUFiaVJlbGVhc2U7DQo+ICsgICAgWEVOQ09OU19DT05TT0xFX0FCSV9JU19ERUZBVUxUICAg
ICAgICAgIENvbnNvbGVBYmlJc0RlZmF1bHQ7DQo+ICsgICAgWEVOQ09OU19DT05TT0xFX0FCSV9E
M1RPRDAgICAgICAgICAgICAgIENvbnNvbGVBYmlEM1RvRDA7DQo+ICsgICAgWEVOQ09OU19DT05T
T0xFX0FCSV9EMFRPRDMgICAgICAgICAgICAgIENvbnNvbGVBYmlEMFRvRDM7DQo+ICsgICAgWEVO
Q09OU19DT05TT0xFX0FCSV9PUEVOICAgICAgICAgICAgICAgIENvbnNvbGVBYmlPcGVuOw0KPiAr
ICAgIFhFTkNPTlNfQ09OU09MRV9BQklfQ0xPU0UgICAgICAgICAgICAgICBDb25zb2xlQWJpQ2xv
c2U7DQo+ICsgICAgWEVOQ09OU19DT05TT0xFX0FCSV9QVVRfUVVFVUUgICAgICAgICAgIENvbnNv
bGVBYmlQdXRRdWV1ZTsNCj4gK30gWEVOQ09OU19DT05TT0xFX0FCSSwgKlBYRU5DT05TX0NPTlNP
TEVfQUJJOw0KPiArDQo+ICsjZGVmaW5lIFhFTkNPTlNfQ09OU09MRV9BQkkoX01ldGhvZCwgX0Fi
aSwgLi4uKSAgIFwNCj4gKyAgICAoX0FiaSktPkNvbnNvbGVBYmkgIyMgX01ldGhvZCgoX0FiaSkt
PkNvbnRleHQsIF9fVkFfQVJHU19fKQ0KPiArDQo+ICsjZW5kaWYgIC8vIF9YRU5DT05TX0NPTlNP
TEVfQUJJX0gNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL3Bkby5jIGIvc3JjL3hlbmNvbnMv
cGRvLmMNCj4gaW5kZXggMmFjZDg2YS4uNzRiZTc1OSAxMDA3NTUNCj4gLS0tIGEvc3JjL3hlbmNv
bnMvcGRvLmMNCj4gKysrIGIvc3JjL3hlbmNvbnMvcGRvLmMNCj4gQEAgLTQ0LDYgKzQ0LDcgQEAN
Cj4gICNpbmNsdWRlICJuYW1lcy5oIg0KPiAgI2luY2x1ZGUgImZkby5oIg0KPiAgI2luY2x1ZGUg
InBkby5oIg0KPiArI2luY2x1ZGUgImNvbnNvbGVfYWJpLmgiDQo+ICAjaW5jbHVkZSAiY29uc29s
ZS5oIg0KPiAgI2luY2x1ZGUgInRocmVhZC5oIg0KPiAgI2luY2x1ZGUgImRiZ19wcmludC5oIg0K
PiBAQCAtNzEsOCArNzIsNyBAQCBzdHJ1Y3QgX1hFTkNPTlNfUERPIHsNCj4gICAgICBYRU5CVVNf
U1VTUEVORF9JTlRFUkZBQ0UgICAgU3VzcGVuZEludGVyZmFjZTsNCj4gICAgICBQWEVOQlVTX1NV
U1BFTkRfQ0FMTEJBQ0sgICAgU3VzcGVuZENhbGxiYWNrTGF0ZTsNCj4gDQo+IC0gICAgQk9PTEVB
TiAgICAgICAgICAgICAgICAgICAgIElzRGVmYXVsdDsNCj4gLSAgICBQWEVOQ09OU19DT05TT0xF
ICAgICAgICAgICAgQ29uc29sZTsNCj4gKyAgICBYRU5DT05TX0NPTlNPTEVfQUJJICAgICAgICAg
Q29uc29sZUFiaTsNCj4gIH07DQo+IA0KPiAgc3RhdGljIEZPUkNFSU5MSU5FIFBWT0lEDQo+IEBA
IC0zMDgsNyArMzA4LDcgQEAgX19QZG9Jc0RlZmF1bHQoDQo+ICAgICAgSU4gIFBYRU5DT05TX1BE
TyAgICBQZG8NCj4gICAgICApDQo+ICB7DQo+IC0gICAgcmV0dXJuIFBkby0+SXNEZWZhdWx0Ow0K
PiArICAgIHJldHVybiBYRU5DT05TX0NPTlNPTEVfQUJJKElzRGVmYXVsdCwgJlBkby0+Q29uc29s
ZUFiaSk7DQo+ICB9DQo+IA0KPiAgQk9PTEVBTg0KPiBAQCAtNDY2LDEwICs0NjYsNyBAQCBQZG9E
M1RvRDAoDQo+IA0KPiAgICAgIEtlTG93ZXJJcnFsKElycWwpOw0KPiANCj4gLSAgICBpZiAoX19Q
ZG9Jc0RlZmF1bHQoUGRvKSkNCj4gLSAgICAgICAgc3RhdHVzID0gQ29uc29sZUQzVG9EMChQZG8t
PkNvbnNvbGUpOw0KPiAtICAgIGVsc2UNCj4gLSAgICAgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NF
U1M7DQo+ICsgICAgc3RhdHVzID0gWEVOQ09OU19DT05TT0xFX0FCSShEM1RvRDAsICZQZG8tPkNv
bnNvbGVBYmkpOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiAgICAgICAgICBn
b3RvIGZhaWw0Ow0KPiANCj4gQEAgLTUyMyw4ICs1MjAsNyBAQCBQZG9EMFRvRDMoDQo+ICAjcHJh
Z21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxMjMpDQo+ICAgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50
ZXJmYWNlU3RhdGUoJlBkby0+RHgtPkxpbmssIEZBTFNFKTsNCj4gDQo+IC0gICAgaWYgKF9fUGRv
SXNEZWZhdWx0KFBkbykpDQo+IC0gICAgICAgIENvbnNvbGVEMFRvRDMoUGRvLT5Db25zb2xlKTsN
Cj4gKyAgICBYRU5DT05TX0NPTlNPTEVfQUJJKEQwVG9EMywgJlBkby0+Q29uc29sZUFiaSk7DQo+
IA0KPiAgICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7DQo+IA0KPiBAQCAt
MTcxOCwxMCArMTcxNCw5IEBAIFBkb0Rpc3BhdGNoQ3JlYXRlKA0KPiANCj4gICAgICBTdGFja0xv
Y2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiANCj4gLSAgICBp
ZiAoX19QZG9Jc0RlZmF1bHQoUGRvKSkNCj4gLSAgICAgICAgc3RhdHVzID0gQ29uc29sZU9wZW4o
UGRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gLSAgICBlbHNlDQo+
IC0gICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArICAgIHN0YXR1cyA9IFhFTkNP
TlNfQ09OU09MRV9BQkkoT3BlbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZQZG8tPkNvbnNvbGVBYmksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gDQo+ICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0
dXMgPSBzdGF0dXM7DQo+ICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOw0KPiBAQCAtMTc0MCwxMCArMTczNSw5IEBAIFBkb0Rpc3BhdGNoQ2xlYW51cCgNCj4gDQo+
ICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsN
Cj4gDQo+IC0gICAgaWYgKF9fUGRvSXNEZWZhdWx0KFBkbykpDQo+IC0gICAgICAgIHN0YXR1cyA9
IENvbnNvbGVDbG9zZShQZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOw0K
PiAtICAgIGVsc2UNCj4gLSAgICAgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsgICAg
c3RhdHVzID0gWEVOQ09OU19DT05TT0xFX0FCSShDbG9zZSwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZQZG8tPkNvbnNvbGVBYmksDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gDQo+ICAgICAgSXJw
LT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOw0KPiBAQCAtMTc3NywxMiArMTc3MSwxMiBAQCBQZG9EaXNwYXRj
aFJlYWRXcml0ZUNvbnRyb2woDQo+ICB7DQo+ICAgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0
dXM7DQo+IA0KPiAtICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQ0KPiAtICAgICAgICBzdGF0
dXMgPSBDb25zb2xlUHV0UXVldWUoUGRvLT5Db25zb2xlLCBJcnApOw0KPiAtICAgIGVsc2UNCj4g
LSAgICAgICAgc3RhdHVzID0gU1RBVFVTX0RFVklDRV9OT1RfUkVBRFk7DQo+ICsgICAgc3RhdHVz
ID0gWEVOQ09OU19DT05TT0xFX0FCSShQdXRRdWV1ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZQZG8tPkNvbnNvbGVBYmksDQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJcnApOw0KPiAgICAgIGlmIChzdGF0dXMgPT0gU1RBVFVTX1NVQ0NFU1MpDQo+
ICAgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiAgICAgIGlmIChzdGF0dXMgIT0gU1RBVFVTX1BF
TkRJTkcpDQo+ICAgICAgICAgIGdvdG8gZmFpbDE7DQo+IA0KPiBAQCAtMTg2NSw5ICsxODU5LDIx
IEBAIFBkb1Jlc3VtZSgNCj4gICAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiAgICAgICkN
Cj4gIHsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiAgICAgIFRy
YWNlKCIoJXMpID09PT0+XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7DQo+ICsNCj4gKyAgICBzdGF0
dXMgPSBYRU5DT05TX0NPTlNPTEVfQUJJKEFjcXVpcmUsICZQZG8tPkNvbnNvbGVBYmkpOw0KPiAr
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiAr
DQo+ICAgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsNCj4gICAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJm
YWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiAg
fQ0KPiANCj4gIFZPSUQNCj4gQEAgLTE4NzYsNiArMTg4Miw5IEBAIFBkb1N1c3BlbmQoDQo+ICAg
ICAgKQ0KPiAgew0KPiAgICAgIFRyYWNlKCIoJXMpID09PT0+XG4iLCBfX1Bkb0dldE5hbWUoUGRv
KSk7DQo+ICsNCj4gKyAgICBYRU5DT05TX0NPTlNPTEVfQUJJKFJlbGVhc2UsICZQZG8tPkNvbnNv
bGVBYmkpOw0KPiArDQo+ICAgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQ
ZG8pKTsNCj4gIH0NCj4gDQo+IEBAIC0xOTMzLDExICsxOTQyLDEwIEBAIFBkb0NyZWF0ZSgNCj4g
DQo+ICAgICAgRHgtPlBkbyA9IFBkbzsNCj4gDQo+IC0gICAgUGRvLT5Jc0RlZmF1bHQgPSAoRGV2
aWNlID09IE5VTEwpOw0KPiAtICAgIGlmIChQZG8tPklzRGVmYXVsdCkNCj4gLSAgICAgICAgc3Rh
dHVzID0gQ29uc29sZUNyZWF0ZShGZG8sICZQZG8tPkNvbnNvbGUpOw0KPiArICAgIGlmIChEZXZp
Y2UgPT0gTlVMTCkNCj4gKyAgICAgICAgc3RhdHVzID0gQ29uc29sZUNyZWF0ZShGZG8sICZQZG8t
PkNvbnNvbGVBYmkpOw0KPiAgICAgIGVsc2UNCj4gLSAgICAgICAgc3RhdHVzID0gU1RBVFVTX1NV
Q0NFU1M7DQo+ICsgICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOy8vIFRPRE86IGNyZWF0
ZSBmcm9udGVuZA0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiAgICAgICAgICBn
b3RvIGZhaWw1Ow0KPiANCj4gQEAgLTE5NjcsMTEgKzE5NzUsOCBAQCBmYWlsNjoNCj4gDQo+ICAg
ICAgKFZPSUQpX19QZG9DbGVhckVqZWN0UmVxdWVzdGVkKFBkbyk7DQo+IA0KPiAtICAgIGlmIChf
X1Bkb0lzRGVmYXVsdChQZG8pKQ0KPiAtICAgICAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNv
bGUpOw0KPiAtICAgIFBkby0+Q29uc29sZSA9IE5VTEw7DQo+IC0NCj4gLSAgICBQZG8tPklzRGVm
YXVsdCA9IEZBTFNFOw0KPiArICAgIFhFTkNPTlNfQ09OU09MRV9BQkkoUmVsZWFzZSwgJlBkby0+
Q29uc29sZUFiaSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmUGRvLT5Db25zb2xlQWJpLCBzaXpl
b2YoWEVOQ09OU19DT05TT0xFX0FCSSkpOw0KPiANCj4gIGZhaWw1Og0KPiAgICAgIEVycm9yKCJm
YWlsNVxuIik7DQo+IEBAIC0yMDM5LDExICsyMDQ0LDggQEAgUGRvRGVzdHJveSgNCj4gDQo+ICAg
ICAgRHgtPlBkbyA9IE5VTEw7DQo+IA0KPiAtICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQ0K
PiAtICAgICAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUpOw0KPiAtICAgIFBkby0+Q29u
c29sZSA9IE5VTEw7DQo+IC0NCj4gLSAgICBQZG8tPklzRGVmYXVsdCA9IEZBTFNFOw0KPiArICAg
IFhFTkNPTlNfQ09OU09MRV9BQkkoUmVsZWFzZSwgJlBkby0+Q29uc29sZUFiaSk7DQo+ICsgICAg
UnRsWmVyb01lbW9yeSgmUGRvLT5Db25zb2xlQWJpLCBzaXplb2YoWEVOQ09OU19DT05TT0xFX0FC
SSkpOw0KPiANCj4gICAgICBSdGxGcmVlVW5pY29kZVN0cmluZygmUGRvLT5EeC0+TGluayk7DQo+
IA0KPiAtLQ0KPiAyLjguMw0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:25:49 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:25:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkh3-0004Ej-Eq; Fri, 02 Mar 2018 13:25:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkh2-0004EY-9d
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:25:48 +0000
X-Inumbo-ID: 0dddc94b-1e1d-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0dddc94b-1e1d-11e8-ba59-bc764e045a96;
 Fri, 02 Mar 2018 14:24:38 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033465"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 09/14 v2] Add boilerplate frontend
Thread-Index: AQHTrLHC63coqt+D5k2aA+KTSodswKO8+mXQ
Date: Fri, 2 Mar 2018 13:25:34 +0000
Message-ID: <662cc900642e4d28a00cb2bcc88c89d8@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-10-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-10-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 09/14 v2] Add boilerplate frontend
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDA5LzE0IHYyXSBBZGQgYm9pbGVycGxhdGUgZnJvbnRlbmQNCj4gDQo+IEZyb206IE93ZW4g
U21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gDQo+ICogRnJvbnRlbmQgaXMgdXNlZCBm
b3Igbm9uLWRlZmF1bHQgY29uc29sZXMNCj4gKiBTdGF0ZSBjaGFuZ2VzIGFyZSBkaXNhYmxlZCBm
b3Igbm93LCBhcyB0aGVyZSBpcyBpbnN1ZmZpY2llbnQNCj4gICBpbXBsZW1lbnRhdGlvbiB0byBo
YW5kbGUgdGhlIHN0YXRlIG1vZGVsIChubyBldnRjaG4vZ250dGFiIGNoYW5nZXMpDQo+ICogUmVh
ZHMgInByb3RvY29sIiBhbmQgIm5hbWUiIHhlbnN0b3JlIGZpZWxkcw0KPiANCj4gU2lnbmVkLW9m
Zi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpBY2tlZC1ieTogUGF1
bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIGluY2x1ZGUv
eGVuLXR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDU1ICsrDQo+ICBpbmNsdWRlL3hl
bi12ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgIHwgICAzNyArDQo+ICBpbmNsdWRlL3hlbi13
YXJuaW5ncy5oICAgICAgICAgICAgICAgICAgIHwgICA0MiArDQo+ICBpbmNsdWRlL3hlbi5oICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSArDQo+ICBpbmNsdWRlL3hlbi9wdWJsaWMv
YXJjaC14ODYveGVuLXg4Nl8zMi5oIHwgIDE2OSArKysrDQo+ICBpbmNsdWRlL3hlbi9wdWJsaWMv
YXJjaC14ODYveGVuLXg4Nl82NC5oIHwgIDIwMiArKysrDQo+ICBpbmNsdWRlL3hlbi9wdWJsaWMv
YXJjaC14ODYveGVuLmggICAgICAgIHwgIDMzOCArKysrKysrDQo+ICBpbmNsdWRlL3hlbi9wdWJs
aWMvZXJybm8uaCAgICAgICAgICAgICAgIHwgIDEyNCArKysNCj4gIGluY2x1ZGUveGVuL3B1Ymxp
Yy9ncmFudF90YWJsZS5oICAgICAgICAgfCAgNjg0ICsrKysrKysrKysrKysrDQo+ICBpbmNsdWRl
L3hlbi9wdWJsaWMvaW8vY29uc29sZS5oICAgICAgICAgIHwgICA1MSArDQo+ICBpbmNsdWRlL3hl
bi9wdWJsaWMvaW8vcmluZy5oICAgICAgICAgICAgIHwgIDMyNiArKysrKysrDQo+ICBpbmNsdWRl
L3hlbi9wdWJsaWMvaW8veGVuYnVzLmggICAgICAgICAgIHwgICA4MCArKw0KPiAgaW5jbHVkZS94
ZW4vcHVibGljL3RyYWNlLmggICAgICAgICAgICAgICB8ICAzMzcgKysrKysrKw0KPiAgaW5jbHVk
ZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaCAgICAgICAgICB8ICAgNDQgKw0KPiAgaW5jbHVkZS94
ZW4vcHVibGljL3hlbi5oICAgICAgICAgICAgICAgICB8ICA5OTUgKysrKysrKysrKysrKysrKysr
KysNCj4gIGluY2x1ZGUveGVuL3hlbi9lcnJuby5oICAgICAgICAgICAgICAgICAgfCAgIDE4ICsN
Cj4gIHNyYy94ZW5jb25zL2Zkby5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstDQo+
ICBzcmMveGVuY29ucy9mcm9udGVuZC5jICAgICAgICAgICAgICAgICAgIHwgMTQ5OQ0KPiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHNyYy94ZW5jb25zL2Zyb250ZW5kLmggICAg
ICAgICAgICAgICAgICAgfCAgIDY4ICsrDQo+ICBzcmMveGVuY29ucy9wZG8uYyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMyArLQ0KPiAgdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9q
ICAgICAgICAgICB8ICAgIDEgKw0KPiAgdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qICAg
ICAgICAgICB8ICAgIDEgKw0KPiAgMjIgZmlsZXMgY2hhbmdlZCwgNTEyMSBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuLXR5cGVz
LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi12ZXJzaW9uLmgNCj4gIGNyZWF0
ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi13YXJuaW5ncy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3
NTUgaW5jbHVkZS94ZW4uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1Ymxp
Yy9hcmNoLXg4Ni94ZW4teDg2XzMyLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hl
bi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl82NC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5j
bHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5j
bHVkZS94ZW4vcHVibGljL2Vycm5vLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hl
bi9wdWJsaWMvZ3JhbnRfdGFibGUuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVu
L3B1YmxpYy9pby9jb25zb2xlLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9w
dWJsaWMvaW8vcmluZy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGlj
L2lvL3hlbmJ1cy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL3Ry
YWNlLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLWNvbXBh
dC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oDQo+ICBj
cmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4veGVuL2Vycm5vLmgNCj4gIGNyZWF0ZSBtb2Rl
IDEwMDc1NSBzcmMveGVuY29ucy9mcm9udGVuZC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3Jj
L3hlbmNvbnMvZnJvbnRlbmQuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuLXR5cGVz
LmggYi9pbmNsdWRlL3hlbi10eXBlcy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4
IDAwMDAwMDAuLjIzMmQ3OTkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi10
eXBlcy5oDQo+IEBAIC0wLDAgKzEsNTUgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLg0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICog
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
ICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0K
PiArICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsg
Kg0KPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EDQo+ICsgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLA0KPiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
DQo+ICsgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwNCj4gKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu
DQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfWEVOX1RZUEVTX0gNCj4gKyNkZWZpbmUgX1hFTl9U
WVBFU19IDQo+ICsNCj4gKyNpbmNsdWRlIDxudGRkay5oPg0KPiArDQo+ICsvLyBEZWZpbmUgdHlw
ZXMgbmVjZXNzYXJ5IHRvIGluY2x1ZGUgeGVuIGhlYWRlcnMNCj4gKw0KPiArdHlwZWRlZiBDSEFS
ICAgIGludDhfdDsNCj4gK3R5cGVkZWYgU0hPUlQgICBpbnQxNl90Ow0KPiArdHlwZWRlZiBMT05H
ICAgIGludDMyX3Q7DQo+ICt0eXBlZGVmIExPTkc2NCAgaW50NjRfdDsNCj4gKw0KPiArdHlwZWRl
ZiBVQ0hBUiAgIHVpbnQ4X3Q7DQo+ICt0eXBlZGVmIFVTSE9SVCAgdWludDE2X3Q7DQo+ICt0eXBl
ZGVmIFVMT05HICAgdWludDMyX3Q7DQo+ICt0eXBlZGVmIFVMT05HNjQgdWludDY0X3Q7DQo+ICsN
Cj4gKyNkZWZpbmUgb2Zmc2V0b2YoX3R5cGUsIF9maWVsZCkgRklFTERfT0ZGU0VUKF90eXBlLCBf
ZmllbGQpDQo+ICsNCj4gKyNkZWZpbmUgeGVuX21iKCkgICAgS2VNZW1vcnlCYXJyaWVyKCkNCj4g
KyNkZWZpbmUgeGVuX3dtYigpICAgS2VNZW1vcnlCYXJyaWVyKCkNCj4gKyNkZWZpbmUgeGVuX3Jt
YigpICAgS2VtZW1vcnlCYXJyaWVyKCkNCj4gKw0KPiArI2VuZGlmICAvLyBfWEVOX1RZUEVTX0gN
Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuLXZlcnNpb24uaCBiL2luY2x1ZGUveGVuLXZlcnNp
b24uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwLi41ZGE0MjMzDQo+
IC0tLSAvZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS94ZW4tdmVyc2lvbi5oDQo+IEBAIC0wLDAg
KzEsMzcgQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArICogd2l0aCBvciB3aXRob3V0IG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArICogdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAqICAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArICogICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyAqICAgICBmb2xsb3dp
bmcgZGlzY2xhaW1lci4NCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArICogICAgIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsgKg0KPiArICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsgKiBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0K
PiArICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFDQo+ICsgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUg0KPiArICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArICogQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4g
KyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORw0KPiArICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQ0KPiArICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0UuDQo+ICsgKi8NCj4gKw0KPiAr
I2lmbmRlZiBfWEVOX1ZFUlNJT05fSA0KPiArI2RlZmluZSBfWEVOX1ZFUlNJT05fSA0KPiArDQo+
ICsjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18NCj4gX19YRU5fTEFURVNUX0lOVEVS
RkFDRV9WRVJTSU9OX18NCj4gKw0KPiArI2VuZGlmICAvLyBfWEVOX1ZFUlNJT05fSA0KPiBkaWZm
IC0tZ2l0IGEvaW5jbHVkZS94ZW4td2FybmluZ3MuaCBiL2luY2x1ZGUveGVuLXdhcm5pbmdzLmgN
Cj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4gaW5kZXggMDAwMDAwMC4uNWEwOTViNA0KPiAtLS0g
L2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUveGVuLXdhcm5pbmdzLmgNCj4gQEAgLTAsMCArMSw0
MiBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsg
KiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
Rg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICog
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
DQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaWZu
ZGVmIF9YRU5fV0FSTklOR1NfSA0KPiArI2RlZmluZSBfWEVOX1dBUk5JTkdTX0gNCj4gKw0KPiAr
I2luY2x1ZGUgPG50ZGRrLmg+DQo+ICsNCj4gKy8vIERpc2FibGUgd2FybmluZ3MgbmVjZXNzYXJ5
IHRvIGluY2x1ZGUgeGVuIGhlYWRlcnMNCj4gKw0KPiArIyBwcmFnbWEgd2FybmluZyhkaXNhYmxl
OjQyMTQpIC8vIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogYml0IGZpZWxkDQo+IHR5cGVz
IG90aGVyIHRoYW4gaW50DQo+ICsjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMCkgLy8gbm9u
c3RhbmRhcmQgZXh0ZW5zaW9uIHVzZWQgOiB6ZXJvLXNpemVkDQo+IGFycmF5IGluIHN0cnVjdC91
bmlvbg0KPiArDQo+ICsjZW5kaWYgIC8vIF9YRU5fV0FSTklOR1NfSA0KPiBkaWZmIC0tZ2l0IGEv
aW5jbHVkZS94ZW4uaCBiL2luY2x1ZGUveGVuLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4g
aW5kZXggMDAwMDAwMC4uMjdmYWYyNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUv
eGVuLmgNCj4gQEAgLTAsMCArMSw0NSBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lz
dGVtcyBJbmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsgKiB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsgKiB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAqICogICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsg
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0K
PiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+
ICsgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAq
DQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQNCj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsg
KiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IN
Cj4gKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MNCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERBTUFHRS4N
Cj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9YRU5fSA0KPiArI2RlZmluZSBfWEVOX0gNCj4gKw0K
PiArI2luY2x1ZGUgPG50ZGRrLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDx4ZW4tdmVyc2lvbi5oPg0K
PiArI2luY2x1ZGUgPHhlbi10eXBlcy5oPg0KPiArI2luY2x1ZGUgPHhlbi13YXJuaW5ncy5oPg0K
PiArDQo+ICsjaW5jbHVkZSA8cHVibGljL2lvL3JpbmcuaD4NCj4gKyNpbmNsdWRlIDxwdWJsaWMv
aW8vY29uc29sZS5oPg0KPiArI2luY2x1ZGUgPHB1YmxpYy9pby94ZW5idXMuaD4NCj4gKw0KPiAr
I2VuZGlmICAvLyBfWEVOX0gNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNo
LXg4Ni94ZW4teDg2XzMyLmgNCj4gYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4
Nl8zMi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLmQyMzM0MGIN
Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVu
LXg4Nl8zMi5oDQo+IEBAIC0wLDAgKzEsMTY5IEBADQo+ICsvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioq
KioqKg0KPiArICogeGVuLXg4Nl8zMi5oDQo+ICsgKg0KPiArICogR3Vlc3QgT1MgaW50ZXJmYWNl
IHRvIHg4NiAzMi1iaXQgWGVuLg0KPiArICoNCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+IGNvcHkN
Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0bw0KPiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUNCj4gKyAqIHJp
Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vcg0KPiArICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUNCj4gaXMNCj4gKyAqIGZ1cm5p
c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICsg
Kg0KPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KPiArICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KPiBFWFBS
RVNTIE9SDQo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GDQo+IE1FUkNIQU5UQUJJTElUWSwNCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PDQo+IEVWRU5UIFNIQUxM
IFRIRQ0KPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUw0KPiBPUiBPVEhFUg0KPiArICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+IEFSSVNJTkcNCj4g
KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1INCj4gT1RIRVINCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gKyAq
DQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNywgSyBBIEZyYXNlcg0KPiArICovDQo+ICsN
Cj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fDQo+ICsjZGVm
aW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hfXw0KPiArDQo+ICsvKg0KPiAr
ICogSHlwZXJjYWxsIGludGVyZmFjZToNCj4gKyAqICBJbnB1dDogICVlYngsICVlY3gsICVlZHgs
ICVlc2ksICVlZGksICVlYnAgKGFyZ3VtZW50cyAxLTYpDQo+ICsgKiAgT3V0cHV0OiAlZWF4DQo+
ICsgKiBBY2Nlc3MgaXMgdmlhIGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVy
IG9yIHZpYSBhIFhlbiBNU1IpOg0KPiArICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNh
bGwtbnVtYmVyICogMzINCj4gKyAqIENsb2JiZXJlZDogQXJndW1lbnQgcmVnaXN0ZXJzIChlLmcu
LCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJlcnMNCj4gJWVieCwlZWN4KQ0KPiArICovDQo+ICsNCj4g
Ky8qDQo+ICsgKiBUaGVzZSBmbGF0IHNlZ21lbnRzIGFyZSBpbiB0aGUgWGVuLXByaXZhdGUgc2Vj
dGlvbiBvZiBldmVyeSBHRFQuIFNpbmNlDQo+IHRoZXNlDQo+ICsgKiBhcmUgYWxzbyBwcmVzZW50
IGluIHRoZSBpbml0aWFsIEdEVCwgbWFueSBPU2VzIHdpbGwgYmUgYWJsZSB0byBhdm9pZA0KPiAr
ICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RULg0KPiArICovDQo+ICsjZGVmaW5lIEZMQVRfUklO
RzFfQ1MgMHhlMDE5ICAgIC8qIEdEVCBpbmRleCAyNTkgKi8NCj4gKyNkZWZpbmUgRkxBVF9SSU5H
MV9EUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLw0KPiArI2RlZmluZSBGTEFUX1JJTkcx
X1NTIDB4ZTAyMSAgICAvKiBHRFQgaW5kZXggMjYwICovDQo+ICsjZGVmaW5lIEZMQVRfUklORzNf
Q1MgMHhlMDJiICAgIC8qIEdEVCBpbmRleCAyNjEgKi8NCj4gKyNkZWZpbmUgRkxBVF9SSU5HM19E
UyAweGUwMzMgICAgLyogR0RUIGluZGV4IDI2MiAqLw0KPiArI2RlZmluZSBGTEFUX1JJTkczX1NT
IDB4ZTAzMyAgICAvKiBHRFQgaW5kZXggMjYyICovDQo+ICsNCj4gKyNkZWZpbmUgRkxBVF9LRVJO
RUxfQ1MgRkxBVF9SSU5HMV9DUw0KPiArI2RlZmluZSBGTEFUX0tFUk5FTF9EUyBGTEFUX1JJTkcx
X0RTDQo+ICsjZGVmaW5lIEZMQVRfS0VSTkVMX1NTIEZMQVRfUklORzFfU1MNCj4gKyNkZWZpbmUg
RkxBVF9VU0VSX0NTICAgIEZMQVRfUklORzNfQ1MNCj4gKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAg
IEZMQVRfUklORzNfRFMNCj4gKyNkZWZpbmUgRkxBVF9VU0VSX1NTICAgIEZMQVRfUklORzNfU1MN
Cj4gKw0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9QQUUgICAgMHhGNTgwMDAw
MA0KPiArI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRSAgICAgMHhGNTgwMDAwMA0K
PiArI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUgICAgICAgMHhGNjgwMDAwMA0KPiAr
I2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RBUlRfUEFFDQo+IHhlbl9ta191bG9uZyhfX0hZUEVS
VklTT1JfVklSVF9TVEFSVF9QQUUpDQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUX1BB
RQ0KPiB4ZW5fbWtfdWxvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVF9QQUUpDQo+ICsjZGVmaW5l
IE1BQ0gyUEhZU19WSVJUX0VORF9QQUUNCj4geGVuX21rX3Vsb25nKF9fTUFDSDJQSFlTX1ZJUlRf
RU5EX1BBRSkNCj4gKw0KPiArLyogTm9uLVBBRSBib3VuZHMgYXJlIG9ic29sZXRlLiAqLw0KPiAr
I2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFSVF9OT05QQUUgMHhGQzAwMDAwMA0KPiArI2Rl
ZmluZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSAgMHhGQzAwMDAwMA0KPiArI2RlZmlu
ZSBfX01BQ0gyUEhZU19WSVJUX0VORF9OT05QQUUgICAgMHhGQzQwMDAwMA0KPiArI2RlZmluZSBI
WVBFUlZJU09SX1ZJUlRfU1RBUlRfTk9OUEFFICAgXA0KPiArICAgIHhlbl9ta191bG9uZyhfX0hZ
UEVSVklTT1JfVklSVF9TVEFSVF9OT05QQUUpDQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NU
QVJUX05PTlBBRSAgICBcDQo+ICsgICAgeGVuX21rX3Vsb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RB
UlRfTk9OUEFFKQ0KPiArI2RlZmluZSBNQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgICAgXA0K
PiArICAgIHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORF9OT05QQUUpDQo+ICsNCj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlQgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRf
UEFFDQo+ICsjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIF9fTUFDSDJQSFlTX1ZJUlRf
U1RBUlRfUEFFDQo+ICsjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfRU5EICAgIF9fTUFDSDJQSFlT
X1ZJUlRfRU5EX1BBRQ0KPiArDQo+ICsjaWZuZGVmIEhZUEVSVklTT1JfVklSVF9TVEFSVA0KPiAr
I2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RBUlQNCj4geGVuX21rX3Vsb25nKF9fSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUKQ0KPiArI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRf
U1RBUlQNCj4geGVuX21rX3Vsb25nKF9fTUFDSDJQSFlTX1ZJUlRfU1RBUlQpDQo+ICsjZGVmaW5l
IE1BQ0gyUEhZU19WSVJUX0VORA0KPiB4ZW5fbWtfdWxvbmcoX19NQUNIMlBIWVNfVklSVF9FTkQp
DQo+ICsjZGVmaW5lIE1BQ0gyUEhZU19OUl9FTlRSSUVTICAoKE1BQ0gyUEhZU19WSVJUX0VORC0N
Cj4gTUFDSDJQSFlTX1ZJUlRfU1RBUlQpPj4yKQ0KPiArI2lmbmRlZiBtYWNoaW5lX3RvX3BoeXNf
bWFwcGluZw0KPiArI2RlZmluZSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZyAoKFVMT05HX1BUUg0K
PiAqKU1BQ0gyUEhZU19WSVJUX1NUQVJUKQ0KPiArI2VuZGlmDQo+ICsNCj4gKy8qIDMyLS82NC1i
aXQgaW52YXJpYWJpbGl0eSBmb3IgY29udHJvbCBpbnRlcmZhY2VzIChkb21jdGwvc3lzY3RsKS4g
Ki8NCj4gKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykNCj4g
KyN1bmRlZiBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRQ0KPiArI2RlZmluZSBfX19ERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShuYW1lLCB0eXBlKSAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB0
eXBlZGVmIHN0cnVjdCB7IHR5cGUgKnA7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQo+ICsgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXA0KPiArICAgIHR5cGVkZWYgc3RydWN0IHsgdW5pb24geyB0eXBlICpw
OyB1aW50NjRfYWxpZ25lZF90IHE7IH07IH0gIFwNCj4gKyAgICAgICAgX19ndWVzdF9oYW5kbGVf
NjRfICMjIG5hbWUNCj4gKyN1bmRlZiBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcNCj4gKyNkZWZp
bmUgc2V0X3hlbl9ndWVzdF9oYW5kbGVfcmF3KGhuZCwgdmFsKSAgICAgICAgICAgICAgICAgIFwN
Cj4gKyAgICBkbyB7IGlmICggc2l6ZW9mKGhuZCkgPT0gOCApICoodWludDY0X3QgKikmKGhuZCkg
PSAwOyAgIFwNCj4gKyAgICAgICAgIChobmQpLnAgPSB2YWw7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwNCj4gKyAgICB9IHdoaWxlICggMCApDQo+ICsjZGVmaW5lICBpbnQ2
NF9hbGlnbmVkX3QgIGludDY0X3QgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpDQo+ICsjZGVm
aW5lIHVpbnQ2NF9hbGlnbmVkX3QgdWludDY0X3QgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkp
DQo+ICsjZGVmaW5lIF9fWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBfX2d1ZXN0X2hhbmRsZV82
NF8gIyMgbmFtZQ0KPiArI2RlZmluZSBYRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpDQo+IF9fWEVO
X0dVRVNUX0hBTkRMRV82NChuYW1lKQ0KPiArI2VuZGlmDQo+ICsNCj4gKyNpZm5kZWYgX19BU1NF
TUJMWV9fDQo+ICsNCj4gK3N0cnVjdCBjcHVfdXNlcl9yZWdzIHsNCj4gKyAgICB1aW50MzJfdCBl
Yng7DQo+ICsgICAgdWludDMyX3QgZWN4Ow0KPiArICAgIHVpbnQzMl90IGVkeDsNCj4gKyAgICB1
aW50MzJfdCBlc2k7DQo+ICsgICAgdWludDMyX3QgZWRpOw0KPiArICAgIHVpbnQzMl90IGVicDsN
Cj4gKyAgICB1aW50MzJfdCBlYXg7DQo+ICsgICAgdWludDE2X3QgZXJyb3JfY29kZTsgICAgLyog
cHJpdmF0ZSAqLw0KPiArICAgIHVpbnQxNl90IGVudHJ5X3ZlY3RvcjsgIC8qIHByaXZhdGUgKi8N
Cj4gKyAgICB1aW50MzJfdCBlaXA7DQo+ICsgICAgdWludDE2X3QgY3M7DQo+ICsgICAgdWludDhf
dCAgc2F2ZWRfdXBjYWxsX21hc2s7DQo+ICsgICAgdWludDhfdCAgX3BhZDA7DQo+ICsgICAgdWlu
dDMyX3QgZWZsYWdzOyAgICAgICAgLyogZWZsYWdzLklGID09ICFzYXZlZF91cGNhbGxfbWFzayAq
Lw0KPiArICAgIHVpbnQzMl90IGVzcDsNCj4gKyAgICB1aW50MTZfdCBzcywgX3BhZDE7DQo+ICsg
ICAgdWludDE2X3QgZXMsIF9wYWQyOw0KPiArICAgIHVpbnQxNl90IGRzLCBfcGFkMzsNCj4gKyAg
ICB1aW50MTZfdCBmcywgX3BhZDQ7DQo+ICsgICAgdWludDE2X3QgZ3MsIF9wYWQ1Ow0KPiArfTsN
Cj4gK3R5cGVkZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJfcmVnc190Ow0KPiArREVG
SU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsNCj4gKw0KPiArLyoNCj4gKyAq
IFBhZ2UtZGlyZWN0b3J5IGFkZHJlc3NlcyBhYm92ZSA0R0IgZG8gbm90IGZpdCBpbnRvIGFyY2hp
dGVjdHVyYWwgJWNyMy4NCj4gKyAqIFdoZW4gYWNjZXNzaW5nICVjcjMsIG9yIGVxdWl2YWxlbnQg
ZmllbGQgaW4gdmNwdV9ndWVzdF9jb250ZXh0LCBndWVzdHMNCj4gKyAqIG11c3QgdXNlIHRoZSBm
b2xsb3dpbmcgYWNjZXNzb3IgbWFjcm9zIHRvIHBhY2svdW5wYWNrIHZhbGlkIE1GTnMuDQo+ICsg
Ki8NCj4gKyNkZWZpbmUgeGVuX3Bmbl90b19jcjMocGZuKSAoKCh1bnNpZ25lZCkocGZuKSA8PCAx
MikgfCAoKHVuc2lnbmVkKShwZm4pDQo+ID4+IDIwKSkNCj4gKyNkZWZpbmUgeGVuX2NyM190b19w
Zm4oY3IzKSAoKCh1bnNpZ25lZCkoY3IzKSA+PiAxMikgfCAoKHVuc2lnbmVkKShjcjMpIDw8DQo+
IDIwKSkNCj4gKw0KPiArc3RydWN0IGFyY2hfdmNwdV9pbmZvIHsNCj4gKyAgICBVTE9OR19QVFIg
Y3IyOw0KPiArICAgIFVMT05HX1BUUiBwYWRbNV07IC8qIHNpemVvZih2Y3B1X2luZm9fdCkgPT0g
NjQgKi8NCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBhcmNoX3ZjcHVfaW5mbyBhcmNoX3ZjcHVf
aW5mb190Ow0KPiArDQo+ICtzdHJ1Y3QgeGVuX2NhbGxiYWNrIHsNCj4gKyAgICBVTE9OR19QVFIg
Y3M7DQo+ICsgICAgVUxPTkdfUFRSIGVpcDsNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5f
Y2FsbGJhY2sgeGVuX2NhbGxiYWNrX3Q7DQo+ICsNCj4gKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9f
ICovDQo+ICsNCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX1g4Nl8zMl9I
X18gKi8NCj4gKw0KPiArLyoNCj4gKyAqIExvY2FsIHZhcmlhYmxlczoNCj4gKyAqIG1vZGU6IEMN
Cj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCINCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQo+ICsg
KiB0YWItd2lkdGg6IDQNCj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbA0KPiArICogRW5kOg0K
PiArICovDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4
Nl82NC5oDQo+IGIvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaA0KPiBu
ZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwLi4yZjUzZjY5DQo+IC0tLSAvZGV2
L251bGwNCj4gKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfNjQuaA0K
PiBAQCAtMCwwICsxLDIwMiBAQA0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqKioqKioqKioNCj4gKyAq
IHhlbi14ODZfNjQuaA0KPiArICoNCj4gKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgNjQt
Yml0IFhlbi4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiBjb3B5DQo+ICsgKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8NCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlDQo+ICsgKiByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3INCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlDQo+IGlzDQo+ICsgKiBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCj4gRVhQUkVTUyBPUg0KPiAr
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
Rg0KPiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTw0KPiBFVkVOVCBTSEFMTCBUSEUNCj4gKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMNCj4gT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g
T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBBUklTSU5HDQo+ICsgKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQo+
IE9USEVSDQo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+ICsgKg0KPiArICogQ29w
eXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXINCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVm
IF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzY0X0hfXw0KPiArI2RlZmluZSBfX1hFTl9Q
VUJMSUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18NCj4gKw0KPiArLyoNCj4gKyAqIEh5cGVyY2Fs
bCBpbnRlcmZhY2U6DQo+ICsgKiAgSW5wdXQ6ICAlcmRpLCAlcnNpLCAlcmR4LCAlcjEwLCAlcjgs
ICVyOSAoYXJndW1lbnRzIDEtNikNCj4gKyAqICBPdXRwdXQ6ICVyYXgNCj4gKyAqIEFjY2VzcyBp
cyB2aWEgaHlwZXJjYWxsIHBhZ2UgKHNldCB1cCBieSBndWVzdCBsb2FkZXIgb3IgdmlhIGEgWGVu
IE1TUik6DQo+ICsgKiAgY2FsbCBoeXBlcmNhbGxfcGFnZSArIGh5cGVyY2FsbC1udW1iZXIgKiAz
Mg0KPiArICogQ2xvYmJlcmVkOiBhcmd1bWVudCByZWdpc3RlcnMgKGUuZy4sIDItYXJnIGh5cGVy
Y2FsbCBjbG9iYmVycyAlcmRpLCVyc2kpDQo+ICsgKi8NCj4gKw0KPiArLyoNCj4gKyAqIDY0LWJp
dCBzZWdtZW50IHNlbGVjdG9ycw0KPiArICogVGhlc2UgZmxhdCBzZWdtZW50cyBhcmUgaW4gdGhl
IFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZQ0KPiB0aGVzZQ0KPiArICog
YXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3aWxsIGJlIGFi
bGUgdG8gYXZvaWQNCj4gKyAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4NCj4gKyAqLw0KPiAr
DQo+ICsjZGVmaW5lIEZMQVRfUklORzNfQ1MzMiAweGUwMjMgIC8qIEdEVCBpbmRleCAyNjAgKi8N
Cj4gKyNkZWZpbmUgRkxBVF9SSU5HM19DUzY0IDB4ZTAzMyAgLyogR0RUIGluZGV4IDI2MSAqLw0K
PiArI2RlZmluZSBGTEFUX1JJTkczX0RTMzIgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYyICovDQo+
ICsjZGVmaW5lIEZMQVRfUklORzNfRFM2NCAweDAwMDAgIC8qIE5VTEwgc2VsZWN0b3IgKi8NCj4g
KyNkZWZpbmUgRkxBVF9SSU5HM19TUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLw0KPiAr
I2RlZmluZSBGTEFUX1JJTkczX1NTNjQgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYyICovDQo+ICsN
Cj4gKyNkZWZpbmUgRkxBVF9LRVJORUxfRFM2NCBGTEFUX1JJTkczX0RTNjQNCj4gKyNkZWZpbmUg
RkxBVF9LRVJORUxfRFMzMiBGTEFUX1JJTkczX0RTMzINCj4gKyNkZWZpbmUgRkxBVF9LRVJORUxf
RFMgICBGTEFUX0tFUk5FTF9EUzY0DQo+ICsjZGVmaW5lIEZMQVRfS0VSTkVMX0NTNjQgRkxBVF9S
SU5HM19DUzY0DQo+ICsjZGVmaW5lIEZMQVRfS0VSTkVMX0NTMzIgRkxBVF9SSU5HM19DUzMyDQo+
ICsjZGVmaW5lIEZMQVRfS0VSTkVMX0NTICAgRkxBVF9LRVJORUxfQ1M2NA0KPiArI2RlZmluZSBG
TEFUX0tFUk5FTF9TUzY0IEZMQVRfUklORzNfU1M2NA0KPiArI2RlZmluZSBGTEFUX0tFUk5FTF9T
UzMyIEZMQVRfUklORzNfU1MzMg0KPiArI2RlZmluZSBGTEFUX0tFUk5FTF9TUyAgIEZMQVRfS0VS
TkVMX1NTNjQNCj4gKw0KPiArI2RlZmluZSBGTEFUX1VTRVJfRFM2NCBGTEFUX1JJTkczX0RTNjQN
Cj4gKyNkZWZpbmUgRkxBVF9VU0VSX0RTMzIgRkxBVF9SSU5HM19EUzMyDQo+ICsjZGVmaW5lIEZM
QVRfVVNFUl9EUyAgIEZMQVRfVVNFUl9EUzY0DQo+ICsjZGVmaW5lIEZMQVRfVVNFUl9DUzY0IEZM
QVRfUklORzNfQ1M2NA0KPiArI2RlZmluZSBGTEFUX1VTRVJfQ1MzMiBGTEFUX1JJTkczX0NTMzIN
Cj4gKyNkZWZpbmUgRkxBVF9VU0VSX0NTICAgRkxBVF9VU0VSX0NTNjQNCj4gKyNkZWZpbmUgRkxB
VF9VU0VSX1NTNjQgRkxBVF9SSU5HM19TUzY0DQo+ICsjZGVmaW5lIEZMQVRfVVNFUl9TUzMyIEZM
QVRfUklORzNfU1MzMg0KPiArI2RlZmluZSBGTEFUX1VTRVJfU1MgICBGTEFUX1VTRVJfU1M2NA0K
PiArDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUIDB4RkZGRjgwMDAwMDAwMDAw
MA0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9FTkQgICAweEZGRkY4ODAwMDAwMDAwMDAN
Cj4gKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVCAgMHhGRkZGODAwMDAwMDAwMDAwDQo+
ICsjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfRU5EICAgIDB4RkZGRjgwNDAwMDAwMDAwMA0KPiAr
DQo+ICsjaWZuZGVmIEhZUEVSVklTT1JfVklSVF9TVEFSVA0KPiArI2RlZmluZSBIWVBFUlZJU09S
X1ZJUlRfU1RBUlQNCj4geGVuX21rX3Vsb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUKQ0KPiAr
I2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfRU5EDQo+IHhlbl9ta191bG9uZyhfX0hZUEVSVklTT1Jf
VklSVF9FTkQpDQo+ICsjZW5kaWYNCj4gKw0KPiArI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFS
VA0KPiB4ZW5fbWtfdWxvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkNCj4gKyNkZWZpbmUgTUFD
SDJQSFlTX1ZJUlRfRU5EDQo+IHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkNCj4g
KyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMgICgoTUFDSDJQSFlTX1ZJUlRfRU5ELQ0KPiBN
QUNIMlBIWVNfVklSVF9TVEFSVCk+PjMpDQo+ICsjaWZuZGVmIG1hY2hpbmVfdG9fcGh5c19tYXBw
aW5nDQo+ICsjZGVmaW5lIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nICgoVUxPTkdfUFRSDQo+ICop
SFlQRVJWSVNPUl9WSVJUX1NUQVJUKQ0KPiArI2VuZGlmDQo+ICsNCj4gKy8qDQo+ICsgKiBpbnQg
SFlQRVJWSVNPUl9zZXRfc2VnbWVudF9iYXNlKHVuc2lnbmVkIGludCB3aGljaCwgVUxPTkdfUFRS
DQo+IGJhc2UpDQo+ICsgKiAgQHdoaWNoID09IFNFR0JBU0VfKiAgOyAgQGJhc2UgPT0gNjQtYml0
IGJhc2UgYWRkcmVzcw0KPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MuDQo+ICsgKi8NCj4gKyNk
ZWZpbmUgU0VHQkFTRV9GUyAgICAgICAgICAwDQo+ICsjZGVmaW5lIFNFR0JBU0VfR1NfVVNFUiAg
ICAgMQ0KPiArI2RlZmluZSBTRUdCQVNFX0dTX0tFUk5FTCAgIDINCj4gKyNkZWZpbmUgU0VHQkFT
RV9HU19VU0VSX1NFTCAzIC8qIFNldCB1c2VyICVncyBzcGVjaWZpZWQgaW4gYmFzZVsxNTowXSAq
Lw0KPiArDQo+ICsvKg0KPiArICogaW50IEhZUEVSVklTT1JfaXJldCh2b2lkKQ0KPiArICogQWxs
IGFyZ3VtZW50cyBhcmUgb24gdGhlIGtlcm5lbCBzdGFjaywgaW4gdGhlIGZvbGxvd2luZyBmb3Jt
YXQuDQo+ICsgKiBOZXZlciByZXR1cm5zIGlmIHN1Y2Nlc3NmdWwuIEN1cnJlbnQga2VybmVsIGNv
bnRleHQgaXMgbG9zdC4NCj4gKyAqIFRoZSBzYXZlZCBDUyBpcyBtYXBwZWQgYXMgZm9sbG93czoN
Cj4gKyAqICAgUklORzAgLT4gUklORzMga2VybmVsIG1vZGUuDQo+ICsgKiAgIFJJTkcxIC0+IFJJ
TkczIGtlcm5lbCBtb2RlLg0KPiArICogICBSSU5HMiAtPiBSSU5HMyBrZXJuZWwgbW9kZS4NCj4g
KyAqICAgUklORzMgLT4gUklORzMgdXNlciBtb2RlLg0KPiArICogSG93ZXZlciBSSU5HMCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgZ3Vlc3Qga2VybmVsIHNob3VsZCByZXR1cm4gdG8gaXRlc2VsZg0KPiAr
ICogZGlyZWN0bHkgd2l0aA0KPiArICogICAgICBvcmIgICAkMywxKjgoJXJzcCkNCj4gKyAqICAg
ICAgaXJldHENCj4gKyAqIElmIGZsYWdzIGNvbnRhaW5zIFZHQ0ZfaW5fc3lzY2FsbDoNCj4gKyAq
ICAgUmVzdG9yZSBSQVgsIFJJUCwgUkZMQUdTLCBSU1AuDQo+ICsgKiAgIERpc2NhcmQgUjExLCBS
Q1gsIENTLCBTUy4NCj4gKyAqIE90aGVyd2lzZToNCj4gKyAqICAgUmVzdG9yZSBSQVgsIFIxMSwg
UkNYLCBDUzpSSVAsIFJGTEFHUywgU1M6UlNQLg0KPiArICogQWxsIG90aGVyIHJlZ2lzdGVycyBh
cmUgc2F2ZWQgb24gaHlwZXJjYWxsIGVudHJ5IGFuZCByZXN0b3JlZCB0byB1c2VyLg0KPiArICov
DQo+ICsvKiBHdWVzdCBleGl0ZWQgaW4gU1lTQ0FMTCBjb250ZXh0PyBSZXR1cm4gdG8gZ3Vlc3Qg
d2l0aCBTWVNSRVQ/ICovDQo+ICsjZGVmaW5lIF9WR0NGX2luX3N5c2NhbGwgOA0KPiArI2RlZmlu
ZSBWR0NGX2luX3N5c2NhbGwgICgxPDxfVkdDRl9pbl9zeXNjYWxsKQ0KPiArI2RlZmluZSBWR0NG
X0lOX1NZU0NBTEwgIFZHQ0ZfaW5fc3lzY2FsbA0KPiArDQo+ICsjaWZuZGVmIF9fQVNTRU1CTFlf
Xw0KPiArDQo+ICtzdHJ1Y3QgaXJldF9jb250ZXh0IHsNCj4gKyAgICAvKiBUb3Agb2Ygc3RhY2sg
KCVyc3AgYXQgcG9pbnQgb2YgaHlwZXJjYWxsKS4gKi8NCj4gKyAgICB1aW50NjRfdCByYXgsIHIx
MSwgcmN4LCBmbGFncywgcmlwLCBjcywgcmZsYWdzLCByc3AsIHNzOw0KPiArICAgIC8qIEJvdHRv
bSBvZiBpcmV0IHN0YWNrIGZyYW1lLiAqLw0KPiArfTsNCj4gKw0KPiArI2lmIGRlZmluZWQoX19H
TlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykNCj4gKy8qIEFub255bW91cyB1bmlv
biBpbmNsdWRlcyBib3RoIDMyLSBhbmQgNjQtYml0IG5hbWVzIChlLmcuLCBlYXgvcmF4KS4gKi8N
Cj4gKyNkZWZpbmUgX19ERUNMX1JFRyhuYW1lKSB1bmlvbiB7IFwNCj4gKyAgICB1aW50NjRfdCBy
ICMjIG5hbWUsIGUgIyMgbmFtZTsgXA0KPiArICAgIHVpbnQzMl90IF9lICMjIG5hbWU7IFwNCj4g
K30NCj4gKyNlbHNlDQo+ICsvKiBOb24tZ2NjIHNvdXJjZXMgbXVzdCBhbHdheXMgdXNlIHRoZSBw
cm9wZXIgNjQtYml0IG5hbWUgKGUuZy4sIHJheCkuICovDQo+ICsjZGVmaW5lIF9fREVDTF9SRUco
bmFtZSkgdWludDY0X3QgciAjIyBuYW1lDQo+ICsjZW5kaWYNCj4gKw0KPiArc3RydWN0IGNwdV91
c2VyX3JlZ3Mgew0KPiArICAgIHVpbnQ2NF90IHIxNTsNCj4gKyAgICB1aW50NjRfdCByMTQ7DQo+
ICsgICAgdWludDY0X3QgcjEzOw0KPiArICAgIHVpbnQ2NF90IHIxMjsNCj4gKyAgICBfX0RFQ0xf
UkVHKGJwKTsNCj4gKyAgICBfX0RFQ0xfUkVHKGJ4KTsNCj4gKyAgICB1aW50NjRfdCByMTE7DQo+
ICsgICAgdWludDY0X3QgcjEwOw0KPiArICAgIHVpbnQ2NF90IHI5Ow0KPiArICAgIHVpbnQ2NF90
IHI4Ow0KPiArICAgIF9fREVDTF9SRUcoYXgpOw0KPiArICAgIF9fREVDTF9SRUcoY3gpOw0KPiAr
ICAgIF9fREVDTF9SRUcoZHgpOw0KPiArICAgIF9fREVDTF9SRUcoc2kpOw0KPiArICAgIF9fREVD
TF9SRUcoZGkpOw0KPiArICAgIHVpbnQzMl90IGVycm9yX2NvZGU7ICAgIC8qIHByaXZhdGUgKi8N
Cj4gKyAgICB1aW50MzJfdCBlbnRyeV92ZWN0b3I7ICAvKiBwcml2YXRlICovDQo+ICsgICAgX19E
RUNMX1JFRyhpcCk7DQo+ICsgICAgdWludDE2X3QgY3MsIF9wYWQwWzFdOw0KPiArICAgIHVpbnQ4
X3QgIHNhdmVkX3VwY2FsbF9tYXNrOw0KPiArICAgIHVpbnQ4X3QgIF9wYWQxWzNdOw0KPiArICAg
IF9fREVDTF9SRUcoZmxhZ3MpOyAgICAgIC8qIHJmbGFncy5JRiA9PSAhc2F2ZWRfdXBjYWxsX21h
c2sgKi8NCj4gKyAgICBfX0RFQ0xfUkVHKHNwKTsNCj4gKyAgICB1aW50MTZfdCBzcywgX3BhZDJb
M107DQo+ICsgICAgdWludDE2X3QgZXMsIF9wYWQzWzNdOw0KPiArICAgIHVpbnQxNl90IGRzLCBf
cGFkNFszXTsNCj4gKyAgICB1aW50MTZfdCBmcywgX3BhZDVbM107IC8qIE5vbi16ZXJvID0+IHRh
a2VzIHByZWNlZGVuY2Ugb3ZlciBmc19iYXNlLg0KPiAqLw0KPiArICAgIHVpbnQxNl90IGdzLCBf
cGFkNlszXTsgLyogTm9uLXplcm8gPT4gdGFrZXMgcHJlY2VkZW5jZSBvdmVyDQo+IGdzX2Jhc2Vf
dXNyLiAqLw0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJf
cmVnc190Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsNCj4g
Kw0KPiArI3VuZGVmIF9fREVDTF9SRUcNCj4gKw0KPiArI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhw
Zm4pICgoVUxPTkdfUFRSKShwZm4pIDw8IDEyKQ0KPiArI2RlZmluZSB4ZW5fY3IzX3RvX3Bmbihj
cjMpICgoVUxPTkdfUFRSKShjcjMpID4+IDEyKQ0KPiArDQo+ICtzdHJ1Y3QgYXJjaF92Y3B1X2lu
Zm8gew0KPiArICAgIFVMT05HX1BUUiBjcjI7DQo+ICsgICAgVUxPTkdfUFRSIHBhZDsgLyogc2l6
ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLw0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0IGFyY2hf
dmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7DQo+ICsNCj4gK3R5cGVkZWYgVUxPTkdfUFRSIHhl
bl9jYWxsYmFja190Ow0KPiArDQo+ICsjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLw0KPiArDQo+
ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fICovDQo+ICsN
Cj4gKy8qDQo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICsgKiBtb2RlOiBDDQo+ICsgKiBjLWZp
bGUtc3R5bGU6ICJCU0QiDQo+ICsgKiBjLWJhc2ljLW9mZnNldDogNA0KPiArICogdGFiLXdpZHRo
OiA0DQo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCj4gKyAqIEVuZDoNCj4gKyAqLw0KPiBk
aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oIGIvaW5jbHVkZS94
ZW4vcHVibGljL2FyY2gtDQo+IHg4Ni94ZW4uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBp
bmRleCAwMDAwMDAwLi4wNWRiNzdmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS94
ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oDQo+IEBAIC0wLDAgKzEsMzM4IEBADQo+ICsvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoq
KioqKioqKioqKioqKioqKioqKg0KPiArICogYXJjaC14ODYveGVuLmgNCj4gKyAqDQo+ICsgKiBH
dWVzdCBPUyBpbnRlcmZhY2UgdG8geDg2IFhlbi4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YQ0KPiBjb3B5DQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8NCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
DQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3INCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlDQo+IGlzDQo+
ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwNCj4gRVhQUkVTUyBPUg0KPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KPiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTw0KPiBF
VkVOVCBTSEFMTCBUSEUNCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB
QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMNCj4gT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBB
UklTSU5HDQo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SDQo+IE9USEVSDQo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB
UkUuDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXINCj4g
KyAqLw0KPiArDQo+ICsjaW5jbHVkZSAiLi4veGVuLmgiDQo+ICsNCj4gKyNpZm5kZWYgX19YRU5f
UFVCTElDX0FSQ0hfWDg2X1hFTl9IX18NCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfWDg2
X1hFTl9IX18NCj4gKw0KPiArLyogU3RydWN0dXJhbCBndWVzdCBoYW5kbGVzIGludHJvZHVjZWQg
aW4gMHgwMDAzMDIwMS4gKi8NCj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4
MDAwMzAyMDENCj4gKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlw
ZSkgXA0KPiArICAgIHR5cGVkZWYgc3RydWN0IHsgdHlwZSAqcDsgfSBfX2d1ZXN0X2hhbmRsZV8g
IyMgbmFtZQ0KPiArI2Vsc2UNCj4gKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
bmFtZSwgdHlwZSkgXA0KPiArICAgIHR5cGVkZWYgdHlwZSAqIF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lDQo+ICsjZW5kaWYNCj4gKw0KPiArLyoNCj4gKyAqIFhFTl9HVUVTVF9IQU5ETEUgcmVwcmVz
ZW50cyBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGEgZmllbGQNCj4gKyAqIGluIGEg
c3RydWN0IGluIG1lbW9yeS4NCj4gKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gcmVwcmVzZW50
IGEgZ3Vlc3QgcG9pbnRlciwgd2hlbiBwYXNzZWQNCj4gYXMgYW4NCj4gKyAqIGh5cGVyY2FsbCBh
cmd1bWVudC4NCj4gKyAqIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0gYW5kIFhFTl9HVUVTVF9IQU5E
TEUgYXJlIHRoZSBzYW1lDQo+IG9uIFg4NiBidXQNCj4gKyAqIHRoZXkgbWlnaHQgbm90IGJlIG9u
IG90aGVyIGFyY2hpdGVjdHVyZXMuDQo+ICsgKi8NCj4gKyNkZWZpbmUgX19ERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRShuYW1lLCB0eXBlKSBcDQo+ICsgICAgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSk7ICAgXA0KPiArICAgIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNv
bnN0XyMjbmFtZSwgY29uc3QgdHlwZSkNCj4gKyNkZWZpbmUgREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSkNCj4gX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCBuYW1lKQ0KPiArI2Rl
ZmluZSBfX1hFTl9HVUVTVF9IQU5ETEUobmFtZSkgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXyAjIyBu
YW1lDQo+ICsjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEUobmFtZSkgICAgICAgICAgX19YRU5fR1VF
U1RfSEFORExFKG5hbWUpDQo+ICsjZGVmaW5lIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0obmFtZSkN
Cj4gWEVOX0dVRVNUX0hBTkRMRShuYW1lKQ0KPiArI2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRs
ZV9yYXcoaG5kLCB2YWwpICBkbyB7IChobmQpLnAgPSB2YWw7IH0gd2hpbGUgKDApDQo+ICsjZGVm
aW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFsKSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9y
YXcoaG5kLA0KPiB2YWwpDQo+ICsNCj4gKyNpZiBkZWZpbmVkKF9faTM4Nl9fKQ0KPiArI2luY2x1
ZGUgInhlbi14ODZfMzIuaCINCj4gKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykNCj4gKyNpbmNs
dWRlICJ4ZW4teDg2XzY0LmgiDQo+ICsjZW5kaWYNCj4gKw0KPiArI2lmbmRlZiBfX0FTU0VNQkxZ
X18NCj4gK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsNCj4gKyNkZWZpbmUgUFJJX3hlbl9w
Zm4gImx4Ig0KPiArI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5U
UlkgMQ0KPiArDQo+ICsjZGVmaW5lIFhFTl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDENCj4gKw0KPiAr
LyoNCj4gKyAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNjIFNlZ21lbnQgRGVzY3JpcHRvciBUYWJs
ZXMNCj4gKyAqLw0KPiArLyoNCj4gKyAqIGAgZW51bSBuZWdfZXJybm92YWwNCj4gKyAqIGAgSFlQ
RVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5zaWduZWQgaW50IGVu
dHJpZXMpOw0KPiArICogYA0KPiArICovDQo+ICsvKg0KPiArICogQSBudW1iZXIgb2YgR0RUIGVu
dHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdA0KPiB0
aGUNCj4gKyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9y
dCBoYXJkLWNvZGVkIHNlbGVjdG9yDQo+IHZhbHVlcw0KPiArICogaW4gdGhlaXIgQUJJLiBUaGVz
ZSBoYXJkLWNvZGVkIHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZQ0KPiBH
RFQsDQo+ICsgKiBzbyBYZW4gcGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZh
ciBlbmQgb2YgdGhlIEdEVC4NCj4gKyAqDQo+ICsgKiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0
aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2YNCj4gSFlQRVJWSVNPUl9tbXVleHRfb3ANCj4gKyAqLw0K
PiArI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAgMTQNCj4gKyNkZWZpbmUgRklSU1Rf
UkVTRVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRSAqIDQwOTYpDQo+ICsj
ZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1RfUkVTRVJWRURfR0RUX0JZVEUg
LyA4KQ0KPiArDQo+ICsNCj4gKy8qDQo+ICsgKiBgIGVudW0gbmVnX2Vycm5vdmFsDQo+ICsgKiBg
IEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7DQo+ICsgKiBg
DQo+ICsgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2Ny
aXB0b3IgdG8NCj4gKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0
b3IgcGFnZSBvciB3cml0YWJsZS4NCj4gKyAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUg
dG8gdXBkYXRlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQ0KPiArICogYCAgICAgICBuYXRpdmUg
ZGVzY3JpcHRvciB0YWJsZSBlbnRyeS4NCj4gKyAqLw0KPiArDQo+ICsvKiBNYXhpbXVtIG51bWJl
ciBvZiB2aXJ0dWFsIENQVXMgaW4gbGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovDQo+
ICsjZGVmaW5lIFhFTl9MRUdBQ1lfTUFYX1ZDUFVTIDMyDQo+ICsNCj4gKyNpZm5kZWYgX19BU1NF
TUJMWV9fDQo+ICsNCj4gK3R5cGVkZWYgVUxPTkdfUFRSIHhlbl91bG9uZ190Ow0KPiArI2RlZmlu
ZSBQUklfeGVuX3Vsb25nICJseCINCj4gKw0KPiArLyoNCj4gKyAqIGAgZW51bSBuZWdfZXJybm92
YWwNCj4gKyAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBVTE9OR19Q
VFIgZXNwKTsNCj4gKyAqIGANCj4gKyAqIFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50
ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuDQo+ICsgKi8NCj4gKw0KPiArLyoNCj4gKyAqIGAgZW51
bSBuZWdfZXJybm92YWwNCj4gKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBz
dHJ1Y3QgdHJhcF9pbmZvIHRyYXBzW10pOw0KPiArICogYA0KPiArICovDQo+ICsvKg0KPiArICog
U2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBIWVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCkuDQo+
ICsgKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGggYSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFw
c1tdLmFkZHJlc3M9PTAuDQo+ICsgKiBUaGUgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllcyB3aGlj
aCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNvZnR3YXJlDQo+ICsgKiBpbnRlcnJ1cHQu
IE9uIHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUgdW5hdmFpbGFibGUsIHdlIGFsbG9j
YXRlDQo+ICsgKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6DQo+ICsgKiAgTGV2ZWwgPT0g
MDogTm9vbmUgbWF5IGVudGVyDQo+ICsgKiAgTGV2ZWwgPT0gMTogS2VybmVsIG1heSBlbnRlcg0K
PiArICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50ZXINCj4gKyAqICBMZXZlbCA9PSAzOiBF
dmVyeW9uZSBtYXkgZW50ZXINCj4gKyAqLw0KPiArI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAg
ICAoKF90aSktPmZsYWdzICYgMykNCj4gKyNkZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChf
dGkpLT5mbGFncyAmIDQpDQo+ICsjZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+
ZmxhZ3MgfD0gKF9kcGwpKQ0KPiArI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAoKF90aSkt
PmZsYWdzIHw9ICgoISEoX2lmKSk8PDIpKQ0KPiArc3RydWN0IHRyYXBfaW5mbyB7DQo+ICsgICAg
dWludDhfdCAgICAgICB2ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8NCj4gKyAgICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzog
cHJpdmlsZWdlIGxldmVsOyA0OiBjbGVhciBldmVudCBlbmFibGU/ICAqLw0KPiArICAgIHVpbnQx
Nl90ICAgICAgY3M7ICAgICAgLyogY29kZSBzZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovDQo+ICsgICAgVUxPTkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiArfTsNCj4gK3R5cGVkZWYgc3Ry
dWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsNCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHRy
YXBfaW5mb190KTsNCj4gKw0KPiArdHlwZWRlZiB1aW50NjRfdCB0c2NfdGltZXN0YW1wX3Q7IC8q
IFJEVFNDIHRpbWVzdGFtcCAqLw0KPiArDQo+ICsvKg0KPiArICogVGhlIGZvbGxvd2luZyBpcyBh
bGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMgZmlsbGVkDQo+
ICsgKiBpbiBieSBGWFNBVkUgaWYgdGhlIENQVSBoYXMgZmVhdHVyZSBGWFNSOyBvdGhlcndpc2Ug
RlNBVkUgaXMgdXNlZC4NCj4gKyAqDQo+ICsgKiBBbHNvIG5vdGUgdGhhdCB3aGVuIGNhbGxpbmcg
RE9NQ1RMX3NldHZjcHVjb250ZXh0IGFuZCBWQ1BVX2luaXRpYWxpc2UNCj4gKyAqIGZvciBIVk0g
YW5kIFBWSCBndWVzdHMsIG5vdCBhbGwgaW5mb3JtYXRpb24gaW4gdGhpcyBzdHJ1Y3R1cmUgaXMg
dXBkYXRlZDoNCj4gKyAqDQo+ICsgKiAtIEZvciBIVk0gZ3Vlc3RzLCB0aGUgc3RydWN0dXJlcyBy
ZWFkIGluY2x1ZGU6IGZwdV9jdHh0IChpZg0KPiArICogVkdDVF9JMzg3X1ZBTElEIGlzIHNldCks
IGZsYWdzLCB1c2VyX3JlZ3MsIGRlYnVncmVnWypdDQo+ICsgKg0KPiArICogLSBQVkggZ3Vlc3Rz
IGFyZSB0aGUgc2FtZSBhcyBIVk0gZ3Vlc3RzLCBidXQgYWRkaXRpb25hbGx5IHVzZSBjdHJscmVn
WzNdDQo+IHRvDQo+ICsgKiBzZXQgY3IzLiBBbGwgb3RoZXIgZmllbGRzIG5vdCB1c2VkIHNob3Vs
ZCBiZSBzZXQgdG8gMC4NCj4gKyAqLw0KPiArc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB7DQo+
ICsgICAgLyogRlBVIHJlZ2lzdGVycyBjb21lIGZpcnN0IHNvIHRoZXkgY2FuIGJlIGFsaWduZWQg
Zm9yIEZYU0FWRS9GWFJTVE9SLg0KPiAqLw0KPiArICAgIHN0cnVjdCB7IGNoYXIgeFs1MTJdOyB9
IGZwdV9jdHh0OyAgICAgICAvKiBVc2VyLWxldmVsIEZQVSByZWdpc3RlcnMgICAgICovDQo+ICsj
ZGVmaW5lIFZHQ0ZfSTM4N19WQUxJRCAgICAgICAgICAgICAgICAoMTw8MCkNCj4gKyNkZWZpbmUg
VkdDRl9JTl9LRVJORUwgICAgICAgICAgICAgICAgICgxPDwyKQ0KPiArI2RlZmluZSBfVkdDRl9p
Mzg3X3ZhbGlkICAgICAgICAgICAgICAgMA0KPiArI2RlZmluZSBWR0NGX2kzODdfdmFsaWQgICAg
ICAgICAgICAgICAgKDE8PF9WR0NGX2kzODdfdmFsaWQpDQo+ICsjZGVmaW5lIF9WR0NGX2luX2tl
cm5lbCAgICAgICAgICAgICAgICAyDQo+ICsjZGVmaW5lIFZHQ0ZfaW5fa2VybmVsICAgICAgICAg
ICAgICAgICAoMTw8X1ZHQ0ZfaW5fa2VybmVsKQ0KPiArI2RlZmluZSBfVkdDRl9mYWlsc2FmZV9k
aXNhYmxlc19ldmVudHMgMw0KPiArI2RlZmluZSBWR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50
cw0KPiAoMTw8X1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNfZXZlbnRzKQ0KPiArI2RlZmluZSBfVkdD
Rl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cyAgNA0KPiArI2RlZmluZSBWR0NGX3N5c2NhbGxfZGlz
YWJsZXNfZXZlbnRzDQo+ICgxPDxfVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cykNCj4gKyNk
ZWZpbmUgX1ZHQ0Zfb25saW5lICAgICAgICAgICAgICAgICAgIDUNCj4gKyNkZWZpbmUgVkdDRl9v
bmxpbmUgICAgICAgICAgICAgICAgICAgICgxPDxfVkdDRl9vbmxpbmUpDQo+ICsgICAgVUxPTkdf
UFRSIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgLyogVkdDRl8qIGZsYWdzICAgICAgICAgICAg
ICAgICAqLw0KPiArICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzIHVzZXJfcmVnczsgICAgICAgICAv
KiBVc2VyLWxldmVsIENQVSByZWdpc3RlcnMgICAgICovDQo+ICsgICAgc3RydWN0IHRyYXBfaW5m
byB0cmFwX2N0eHRbMjU2XTsgICAgICAgIC8qIFZpcnR1YWwgSURUICAgICAgICAgICAgICAgICAg
Ki8NCj4gKyAgICBVTE9OR19QVFIgbGR0X2Jhc2UsIGxkdF9lbnRzOyAgICAgICAvKiBMRFQgKGxp
bmVhciBhZGRyZXNzLCAjIGVudHMpICovDQo+ICsgICAgVUxPTkdfUFRSIGdkdF9mcmFtZXNbMTZd
LCBnZHRfZW50czsgLyogR0RUIChtYWNoaW5lIGZyYW1lcywgIyBlbnRzKQ0KPiAqLw0KPiArICAg
IFVMT05HX1BUUiBrZXJuZWxfc3MsIGtlcm5lbF9zcDsgICAgIC8qIFZpcnR1YWwgVFNTIChvbmx5
IFNTMS9TUDEpICAgKi8NCj4gKyAgICAvKiBOQi4gVXNlciBwYWdldGFibGUgb24geDg2LzY0IGlz
IHBsYWNlZCBpbiBjdHJscmVnWzFdLiAqLw0KPiArICAgIFVMT05HX1BUUiBjdHJscmVnWzhdOyAg
ICAgICAgICAgICAgIC8qIENSMC1DUjcgKGNvbnRyb2wgcmVnaXN0ZXJzKSAgKi8NCj4gKyAgICBV
TE9OR19QVFIgZGVidWdyZWdbOF07ICAgICAgICAgICAgICAvKiBEQjAtREI3IChkZWJ1ZyByZWdp
c3RlcnMpICAgICovDQo+ICsjaWZkZWYgX19pMzg2X18NCj4gKyAgICBVTE9OR19QVFIgZXZlbnRf
Y2FsbGJhY2tfY3M7ICAgICAgICAvKiBDUzpFSVAgb2YgZXZlbnQgY2FsbGJhY2sgICAgICovDQo+
ICsgICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsNCj4gKyAgICBVTE9OR19QVFIgZmFp
bHNhZmVfY2FsbGJhY2tfY3M7ICAgICAvKiBDUzpFSVAgb2YgZmFpbHNhZmUgY2FsbGJhY2sgICov
DQo+ICsgICAgVUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsNCj4gKyNlbHNlDQo+ICsg
ICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsNCj4gKyAgICBVTE9OR19QVFIgZmFpbHNh
ZmVfY2FsbGJhY2tfZWlwOw0KPiArI2lmZGVmIF9fWEVOX18NCj4gKyAgICB1bmlvbiB7DQo+ICsg
ICAgICAgIFVMT05HX1BUUiBzeXNjYWxsX2NhbGxiYWNrX2VpcDsNCj4gKyAgICAgICAgc3RydWN0
IHsNCj4gKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBldmVudF9jYWxsYmFja19jczsgICAgLyog
Y29tcGF0IENTIG9mIGV2ZW50IGNiICAgICAqLw0KPiArICAgICAgICAgICAgdW5zaWduZWQgaW50
IGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAvKiBjb21wYXQgQ1Mgb2YgZmFpbHNhZmUgY2IgICovDQo+
ICsgICAgICAgIH07DQo+ICsgICAgfTsNCj4gKyNlbHNlDQo+ICsgICAgVUxPTkdfUFRSIHN5c2Nh
bGxfY2FsbGJhY2tfZWlwOw0KPiArI2VuZGlmDQo+ICsjZW5kaWYNCj4gKyAgICBVTE9OR19QVFIg
dm1fYXNzaXN0OyAgICAgICAgICAgICAgICAvKiBWTUFTU1RfVFlQRV8qIGJpdG1hcCAqLw0KPiAr
I2lmZGVmIF9feDg2XzY0X18NCj4gKyAgICAvKiBTZWdtZW50IGJhc2UgYWRkcmVzc2VzLiAqLw0K
PiArICAgIHVpbnQ2NF90ICAgICAgZnNfYmFzZTsNCj4gKyAgICB1aW50NjRfdCAgICAgIGdzX2Jh
c2Vfa2VybmVsOw0KPiArICAgIHVpbnQ2NF90ICAgICAgZ3NfYmFzZV91c2VyOw0KPiArI2VuZGlm
DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0IHZjcHVfZ3Vlc3Rf
Y29udGV4dF90Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodmNwdV9ndWVzdF9jb250ZXh0
X3QpOw0KPiArDQo+ICtzdHJ1Y3QgYXJjaF9zaGFyZWRfaW5mbyB7DQo+ICsgICAgLyoNCj4gKyAg
ICAgKiBOdW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUgcDJtIHRhYmxlKHMpIGFuY2hvcmVk
IGF0DQo+ICsgICAgICogcGZuX3RvX21mbl9mcmFtZV9saXN0X2xpc3QgYW5kL29yIHAybV92YWRk
ci4NCj4gKyAgICAgKi8NCj4gKyAgICBVTE9OR19QVFIgbWF4X3BmbjsNCj4gKyAgICAvKg0KPiAr
ICAgICAqIEZyYW1lIGNvbnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNvbnRhaW5pbmcgbGlzdCBvZiBt
Zm5zIGNvbnRhaW5pbmcgcDJtLg0KPiArICAgICAqIEEgdmFsdWUgb2YgMCBpbmRpY2F0ZXMgaXQg
aGFzIG5vdCB5ZXQgYmVlbiBzZXQgdXAsIH4wIGluZGljYXRlcyBpdCBoYXMNCj4gKyAgICAgKiBi
ZWVuIHNldCB0byBpbnZhbGlkIGUuZy4gZHVlIHRvIHRoZSBwMm0gYmVpbmcgdG9vIGxhcmdlIGZv
ciB0aGUgMy1sZXZlbA0KPiArICAgICAqIHAybSB0cmVlLiBJbiB0aGlzIGNhc2UgdGhlIGxpbmVh
ciBtYXBwZXIgcDJtIGxpc3QgYW5jaG9yZWQgYXQNCj4gcDJtX3ZhZGRyDQo+ICsgICAgICogaXMg
dG8gYmUgdXNlZC4NCj4gKyAgICAgKi8NCj4gKyAgICB4ZW5fcGZuX3QgICAgIHBmbl90b19tZm5f
ZnJhbWVfbGlzdF9saXN0Ow0KPiArICAgIFVMT05HX1BUUiBubWlfcmVhc29uOw0KPiArICAgIC8q
DQo+ICsgICAgICogRm9sbG93aW5nIHRocmVlIGZpZWxkcyBhcmUgdmFsaWQgaWYgcDJtX2NyMyBj
b250YWlucyBhIHZhbHVlIGRpZmZlcmVudA0KPiArICAgICAqIGZyb20gMC4NCj4gKyAgICAgKiBw
Mm1fY3IzIGlzIHRoZSByb290IG9mIHRoZSBhZGRyZXNzIHNwYWNlIHdoZXJlIHAybV92YWRkciBp
cyB2YWxpZC4NCj4gKyAgICAgKiBwMm1fY3IzIGlzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBhIGNy
MyB2YWx1ZSBpbiB0aGUgdmNwdSByZWdpc3RlciBzdGF0ZQ0KPiArICAgICAqIGFuZCBob2xkcyB0
aGUgZm9sZGVkIG1hY2hpbmUgZnJhbWUgbnVtYmVyICh2aWEgeGVuX3Bmbl90b19jcjMpIG9mIGEN
Cj4gKyAgICAgKiBMMyBvciBMNCBwYWdlIHRhYmxlLg0KPiArICAgICAqIHAybV92YWRkciBob2xk
cyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBsaW5lYXIgcDJtIGxpc3QuIEFsbCBlbnRyaWVz
DQo+ICsgICAgICogaW4gdGhlIHJhbmdlIFswLi4ubWF4X3BmblsgYXJlIGFjY2Vzc2libGUgdmlh
IHRoaXMgcG9pbnRlci4NCj4gKyAgICAgKiBwMm1fZ2VuZXJhdGlvbiB3aWxsIGJlIGluY3JlbWVu
dGVkIGJ5IHRoZSBndWVzdCBiZWZvcmUgYW5kIGFmdGVyDQo+IGVhY2gNCj4gKyAgICAgKiBjaGFu
Z2Ugb2YgdGhlIG1hcHBpbmdzIG9mIHRoZSBwMm0gbGlzdC4gcDJtX2dlbmVyYXRpb24gc3RhcnRz
IGF0IDAgYW5kDQo+ICsgICAgICogYSB2YWx1ZSB3aXRoIHRoZSBsZWFzdCBzaWduaWZpY2FudCBi
aXQgc2V0IGluZGljYXRlcyB0aGF0IGEgbWFwcGluZw0KPiArICAgICAqIHVwZGF0ZSBpcyBpbiBw
cm9ncmVzcy4gVGhpcyBhbGxvd3MgZ3Vlc3QgZXh0ZXJuYWwgc29mdHdhcmUgKGUuZy4gaW4gRG9t
MCkNCj4gKyAgICAgKiB0byB2ZXJpZnkgdGhhdCByZWFkIG1hcHBpbmdzIGFyZSBjb25zaXN0ZW50
IGFuZCB3aGV0aGVyIHRoZXkgaGF2ZQ0KPiBjaGFuZ2VkDQo+ICsgICAgICogc2luY2UgdGhlIGxh
c3QgY2hlY2suDQo+ICsgICAgICogTW9kaWZ5aW5nIGEgcDJtIGVsZW1lbnQgaW4gdGhlIGxpbmVh
ciBwMm0gbGlzdCBpcyBhbGxvd2VkIHZpYSBhbiBhdG9taWMNCj4gKyAgICAgKiB3cml0ZSBvbmx5
Lg0KPiArICAgICAqLw0KPiArICAgIFVMT05HX1BUUiBwMm1fY3IzOyAgICAgICAgIC8qIGNyMyB2
YWx1ZSBvZiB0aGUgcDJtIGFkZHJlc3Mgc3BhY2UgKi8NCj4gKyAgICBVTE9OR19QVFIgcDJtX3Zh
ZGRyOyAgICAgICAvKiB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIHAybSBsaXN0ICovDQo+ICsgICAg
VUxPTkdfUFRSIHAybV9nZW5lcmF0aW9uOyAgLyogZ2VuZXJhdGlvbiBjb3VudCBvZiBwMm0gbWFw
cGluZyAqLw0KPiArI2lmZGVmIF9faTM4Nl9fDQo+ICsgICAgLyogVGhlcmUncyBubyByb29tIGZv
ciB0aGlzIGZpZWxkIGluIHRoZSBnZW5lcmljIHN0cnVjdHVyZS4gKi8NCj4gKyAgICB1aW50MzJf
dCB3Y19zZWNfaGk7DQo+ICsjZW5kaWYNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBhcmNoX3No
YXJlZF9pbmZvIGFyY2hfc2hhcmVkX2luZm9fdDsNCj4gKw0KPiArI2lmIGRlZmluZWQoX19YRU5f
XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQ0KPiArLyoNCj4gKyAqIHN0cnVjdCB4ZW5fYXJj
aF9kb21haW5jb25maWcncyBBQkkgaXMgY292ZXJlZCBieQ0KPiArICogWEVOX0RPTUNUTF9JTlRF
UkZBQ0VfVkVSU0lPTi4NCj4gKyAqLw0KPiArc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyB7
DQo+ICsjZGVmaW5lIF9YRU5fWDg2X0VNVV9MQVBJQyAgICAgICAgICAwDQo+ICsjZGVmaW5lIFhF
Tl9YODZfRU1VX0xBUElDICAgICAgICAgICAoMVU8PF9YRU5fWDg2X0VNVV9MQVBJQykNCj4gKyNk
ZWZpbmUgX1hFTl9YODZfRU1VX0hQRVQgICAgICAgICAgIDENCj4gKyNkZWZpbmUgWEVOX1g4Nl9F
TVVfSFBFVCAgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX0hQRVQpDQo+ICsjZGVmaW5lIF9Y
RU5fWDg2X0VNVV9QTSAgICAgICAgICAgICAyDQo+ICsjZGVmaW5lIFhFTl9YODZfRU1VX1BNICAg
ICAgICAgICAgICAoMVU8PF9YRU5fWDg2X0VNVV9QTSkNCj4gKyNkZWZpbmUgX1hFTl9YODZfRU1V
X1JUQyAgICAgICAgICAgIDMNCj4gKyNkZWZpbmUgWEVOX1g4Nl9FTVVfUlRDICAgICAgICAgICAg
ICgxVTw8X1hFTl9YODZfRU1VX1JUQykNCj4gKyNkZWZpbmUgX1hFTl9YODZfRU1VX0lPQVBJQyAg
ICAgICAgIDQNCj4gKyNkZWZpbmUgWEVOX1g4Nl9FTVVfSU9BUElDICAgICAgICAgICgxVTw8X1hF
Tl9YODZfRU1VX0lPQVBJQykNCj4gKyNkZWZpbmUgX1hFTl9YODZfRU1VX1BJQyAgICAgICAgICAg
IDUNCj4gKyNkZWZpbmUgWEVOX1g4Nl9FTVVfUElDICAgICAgICAgICAgICgxVTw8X1hFTl9YODZf
RU1VX1BJQykNCj4gKyNkZWZpbmUgX1hFTl9YODZfRU1VX1ZHQSAgICAgICAgICAgIDYNCj4gKyNk
ZWZpbmUgWEVOX1g4Nl9FTVVfVkdBICAgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX1ZHQSkN
Cj4gKyNkZWZpbmUgX1hFTl9YODZfRU1VX0lPTU1VICAgICAgICAgIDcNCj4gKyNkZWZpbmUgWEVO
X1g4Nl9FTVVfSU9NTVUgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX0lPTU1VKQ0KPiArI2Rl
ZmluZSBfWEVOX1g4Nl9FTVVfUElUICAgICAgICAgICAgOA0KPiArI2RlZmluZSBYRU5fWDg2X0VN
VV9QSVQgICAgICAgICAgICAgKDFVPDxfWEVOX1g4Nl9FTVVfUElUKQ0KPiArDQo+ICsjZGVmaW5l
IFhFTl9YODZfRU1VX0FMTCAgICAgICAgICAgICAoWEVOX1g4Nl9FTVVfTEFQSUMgfA0KPiBYRU5f
WDg2X0VNVV9IUEVUIHwgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBYRU5fWDg2X0VNVV9QTSB8IFhFTl9YODZfRU1VX1JUQyB8ICAgICAgXA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9YODZfRU1VX0lPQVBJQyB8IFhFTl9YODZf
RU1VX1BJQyB8ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVO
X1g4Nl9FTVVfVkdBIHwgWEVOX1g4Nl9FTVVfSU9NTVUgfCAgIFwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBYRU5fWDg2X0VNVV9QSVQpDQo+ICsgICAgdWludDMyX3Qg
ZW11bGF0aW9uX2ZsYWdzOw0KPiArfTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYgLyogIV9f
QVNTRU1CTFlfXyAqLw0KPiArDQo+ICsvKg0KPiArICogYCBlbnVtIG5lZ19lcnJub3ZhbA0KPiAr
ICogYCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOw0KPiArICogYA0KPiArICog
U2V0cyAoaWYgc2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLg0KPiArICovDQo+
ICsNCj4gKy8qDQo+ICsgKiBgIGVudW0gbmVnX2Vycm5vdmFsDQo+ICsgKiBgIEhZUEVSVklTT1Jf
c2V0X2RlYnVncmVnKGludCByZWdubywgVUxPTkdfUFRSIHZhbHVlKTsNCj4gKyAqDQo+ICsgKiBg
IFVMT05HX1BUUg0KPiArICogYCBIWVBFUlZJU09SX2dldF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOw0K
PiArICogRm9yIDA8PXJlZzw9NywgcmV0dXJucyB0aGUgZGVidWcgcmVnaXN0ZXIgdmFsdWUuDQo+
ICsgKiBGb3Igb3RoZXIgdmFsdWVzIG9mIHJlZywgcmV0dXJucyAoKFVMT05HX1BUUiktRUlOVkFM
KS4NCj4gKyAqIChVbmZvcnR1bmF0ZWx5LCB0aGlzIGludGVyZmFjZSBpcyBkZWZlY3RpdmUuKQ0K
PiArICovDQo+ICsNCj4gKy8qDQo+ICsgKiBQcmVmaXggZm9yY2VzIGVtdWxhdGlvbiBvZiBzb21l
IG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuDQo+ICsgKiBDdXJyZW50bHkgb25seSBDUFVJRC4N
Cj4gKyAqLw0KPiArI2lmZGVmIF9fQVNTRU1CTFlfXw0KPiArI2RlZmluZSBYRU5fRU1VTEFURV9Q
UkVGSVggLmJ5dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsNCj4gKyNkZWZpbmUgWEVOX0NQ
VUlEICAgICAgICAgIFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZA0KPiArI2Vsc2UNCj4gKyNkZWZp
bmUgWEVOX0VNVUxBVEVfUFJFRklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAi
DQo+ICsjZGVmaW5lIFhFTl9DUFVJRCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlk
Ig0KPiArI2VuZGlmDQo+ICsNCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVO
X0hfXyAqLw0KPiArDQo+ICsvKg0KPiArICogTG9jYWwgdmFyaWFibGVzOg0KPiArICogbW9kZTog
Qw0KPiArICogYy1maWxlLXN0eWxlOiAiQlNEIg0KPiArICogYy1iYXNpYy1vZmZzZXQ6IDQNCj4g
KyAqIHRhYi13aWR0aDogNA0KPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsDQo+ICsgKiBFbmQ6
DQo+ICsgKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oIGIvaW5j
bHVkZS94ZW4vcHVibGljL2Vycm5vLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4gaW5kZXgg
MDAwMDAwMC4uZTQ0MDIzNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUveGVuL3B1
YmxpYy9lcnJuby5oDQo+IEBAIC0wLDAgKzEsMTI0IEBADQo+ICsvKg0KPiArICogVGhlcmUgYXJl
IHR3byBleHBlY3RlZCB3YXlzIG9mIGluY2x1ZGluZyB0aGlzIGhlYWRlci4NCj4gKyAqDQo+ICsg
KiAxKSBUaGUgImRlZmF1bHQiIGNhc2UgKGV4cGVjdGVkIGZyb20gdG9vbHMgZXRjKS4NCj4gKyAq
DQo+ICsgKiBTaW1wbHkgI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPg0KPiArICoNCj4gKyAqIElu
IHRoaXMgY2lyY3Vtc3RhbmNlLCBub3JtYWwgaGVhZGVyIGd1YXJkcyBhcHBseSBhbmQgdGhlIGlu
Y2x1ZGVyIHNoYWxsDQo+IGdldA0KPiArICogYW4gZW51bWVyYXRpb24gaW4gdGhlIFhFTl94eHgg
bmFtZXNwYWNlLCBhcHByb3ByaWF0ZSBmb3IgQyBvcg0KPiBhc3NlbWJseS4NCj4gKyAqDQo+ICsg
KiAyKSBUaGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBpbmNsdWRlciBwcm92aWRlcyBhIFhFTl9F
UlJOTygpIGluIHNjb3BlLg0KPiArICoNCj4gKyAqIEluIHRoaXMgY2FzZSwgbm8gaW5jbHVzaW9u
IGd1YXJkcyBhcHBseSBhbmQgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3INCj4gKyAqIHRo
ZWlyIFhFTl9FUlJOTygpIGJlaW5nIGFwcHJvcHJpYXRlIGluIHRoZSBpbmNsdWRlZCBjb250ZXh0
LiAgVGhlDQo+IGhlYWRlcg0KPiArICogd2lsbCB1bmlsYXRlcmFsbHkgI3VuZGVmIFhFTl9FUlJO
TygpLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgWEVOX0VSUk5PDQo+ICsNCj4gKy8qDQo+ICsg
KiBJbmNsdWRlciBoYXMgbm90IHByb3ZpZGVkIGEgY3VzdG9tIFhFTl9FUlJOTygpLiAgQXJyYW5n
ZSBmb3Igbm9ybWFsDQo+IGhlYWRlcg0KPiArICogZ3VhcmRzLCBhbiBhdXRvbWF0aWMgZW51bSAo
Zm9yIEMgY29kZSkgYW5kIGNvbnN0YW50cyBpbiB0aGUgWEVOX3h4eA0KPiArICogbmFtZXNwYWNl
Lg0KPiArICovDQo+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19FUlJOT19IX18NCj4gKyNkZWZpbmUg
X19YRU5fUFVCTElDX0VSUk5PX0hfXw0KPiArDQo+ICsjZGVmaW5lIFhFTl9FUlJOT19ERUZBVUxU
X0lOQ0xVREUNCj4gKw0KPiArI2lmbmRlZiBfX0FTU0VNQkxZX18NCj4gKw0KPiArI2RlZmluZSBY
RU5fRVJSTk8obmFtZSwgdmFsdWUpIFhFTl8jI25hbWUgPSB2YWx1ZSwNCj4gK2VudW0geGVuX2Vy
cm5vIHsNCj4gKw0KPiArI2VsaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA3
MDANCj4gKw0KPiArI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIC5lcXUgWEVOXyMjbmFt
ZSwgdmFsdWUNCj4gKw0KPiArI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLw0KPiArDQo+ICsjZW5k
aWYgLyogX19YRU5fUFVCTElDX0VSUk5PX0hfXyAqLw0KPiArI2VuZGlmIC8qICFYRU5fRVJSTk8g
Ki8NCj4gKw0KPiArLyogYCBlbnVtIG5lZ19lcnJub3ZhbCB7ICBbIC1FZm9vIGZvciBlYWNoIEVm
b28gaW4gdGhlIGxpc3QgYmVsb3cgXSAgfSAqLw0KPiArLyogYCBlbnVtIGVycm5vdmFsIHsgKi8N
Cj4gKw0KPiArI2lmZGVmIFhFTl9FUlJOTw0KPiArDQo+ICsvKg0KPiArICogVmFsdWVzIG9yaWdp
bmF0aW5nIGZyb20geDg2IExpbnV4LiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgcmVzcGVjdGl2ZQ0K
PiArICogdmFsdWVzIHdoZW4gYWRkaW5nIG5ldyBkZWZpbml0aW9ucyBoZXJlLg0KPiArICoNCj4g
KyAqIFRoZSBzZXQgb2YgaWRlbnRpZmllcnMgdG8gYmUgYWRkZWQgaGVyZSBzaG91bGRuJ3QgZXh0
ZW5kIGJleW9uZCB3aGF0DQo+ICsgKiBQT1NJWCBtYW5kYXRlcyAoc2VlIGUuZy4NCj4gKyAqDQo+
IGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L2Jhc2VkZWZz
L2Vycm5vLmguaHRtbCkNCj4gKyAqIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHdlIHN1cHBvcnQg
c29tZSBvcHRpb25hbCAoWFNSKSB2YWx1ZXMNCj4gKyAqIHNwZWNpZmllZCB0aGVyZSAoYnV0IG5v
IG5ldyBvbmVzIHNob3VsZCBiZSBhZGRlZCkuDQo+ICsgKi8NCj4gKw0KPiArWEVOX0VSUk5PKEVQ
RVJNLAkgMSkJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8NCj4gK1hFTl9FUlJOTyhFTk9F
TlQsCSAyKQkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovDQo+ICtYRU5fRVJSTk8oRVNS
Q0gsCSAzKQkvKiBObyBzdWNoIHByb2Nlc3MgKi8NCj4gKyNpZmRlZiBfX1hFTl9fIC8qIEludGVy
bmFsIG9ubHksIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8NCj4gK1hF
Tl9FUlJOTyhFSU5UUiwJIDQpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsICovDQo+ICsjZW5k
aWYNCj4gK1hFTl9FUlJOTyhFSU8sCQkgNSkJLyogSS9PIGVycm9yICovDQo+ICtYRU5fRVJSTk8o
RU5YSU8sCSA2KQkvKiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzICovDQo+ICtYRU5fRVJSTk8o
RTJCSUcsCSA3KQkvKiBBcmcgbGlzdCB0b28gTE9OR19QVFIgKi8NCj4gK1hFTl9FUlJOTyhFTk9F
WEVDLAkgOCkJLyogRXhlYyBmb3JtYXQgZXJyb3IgKi8NCj4gK1hFTl9FUlJOTyhFQkFERiwJIDkp
CS8qIEJhZCBmaWxlIG51bWJlciAqLw0KPiArWEVOX0VSUk5PKEVDSElMRCwJMTApCS8qIE5vIGNo
aWxkIHByb2Nlc3NlcyAqLw0KPiArWEVOX0VSUk5PKEVBR0FJTiwJMTEpCS8qIFRyeSBhZ2FpbiAq
Lw0KPiArWEVOX0VSUk5PKEVXT1VMREJMT0NLLAkxMSkJLyogT3BlcmF0aW9uIHdvdWxkIGJsb2Nr
LiAgQWxpYXNlcw0KPiBFQUdBSU4gKi8NCj4gK1hFTl9FUlJOTyhFTk9NRU0sCTEyKQkvKiBPdXQg
b2YgbWVtb3J5ICovDQo+ICtYRU5fRVJSTk8oRUFDQ0VTLAkxMykJLyogUGVybWlzc2lvbiBkZW5p
ZWQgKi8NCj4gK1hFTl9FUlJOTyhFRkFVTFQsCTE0KQkvKiBCYWQgYWRkcmVzcyAqLw0KPiArWEVO
X0VSUk5PKEVCVVNZLAkxNikJLyogRGV2aWNlIG9yIHJlc291cmNlIGJ1c3kgKi8NCj4gK1hFTl9F
UlJOTyhFRVhJU1QsCTE3KQkvKiBGaWxlIGV4aXN0cyAqLw0KPiArWEVOX0VSUk5PKEVYREVWLAkx
OCkJLyogQ3Jvc3MtZGV2aWNlIGxpbmsgKi8NCj4gK1hFTl9FUlJOTyhFTk9ERVYsCTE5KQkvKiBO
byBzdWNoIGRldmljZSAqLw0KPiArWEVOX0VSUk5PKEVJU0RJUiwJMjEpCS8qIElzIGEgZGlyZWN0
b3J5ICovDQo+ICtYRU5fRVJSTk8oRUlOVkFMLAkyMikJLyogSW52YWxpZCBhcmd1bWVudCAqLw0K
PiArWEVOX0VSUk5PKEVORklMRSwJMjMpCS8qIEZpbGUgdGFibGUgb3ZlcmZsb3cgKi8NCj4gK1hF
Tl9FUlJOTyhFTUZJTEUsCTI0KQkvKiBUb28gbWFueSBvcGVuIGZpbGVzICovDQo+ICtYRU5fRVJS
Tk8oRU5PU1BDLAkyOCkJLyogTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UgKi8NCj4gK1hFTl9FUlJO
TyhFUk9GUywJMzApCS8qIFJlYWQtb25seSBmaWxlIHN5c3RlbSAqLw0KPiArWEVOX0VSUk5PKEVN
TElOSywJMzEpCS8qIFRvbyBtYW55IGxpbmtzICovDQo+ICtYRU5fRVJSTk8oRURPTSwJCTMzKQkv
KiBNYXRoIGFyZ3VtZW50IG91dCBvZiBkb21haW4gb2YNCj4gZnVuYyAqLw0KPiArWEVOX0VSUk5P
KEVSQU5HRSwJMzQpCS8qIE1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRhYmxlICovDQo+ICtYRU5f
RVJSTk8oRURFQURMSywJMzUpCS8qIFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyICovDQo+
ICtYRU5fRVJSTk8oRURFQURMT0NLLAkzNSkJLyogUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2Nj
dXIuDQo+IEFsaWFzZXMgRURFQURMSyAqLw0KPiArWEVOX0VSUk5PKEVOQU1FVE9PTE9ORywJMzYp
CS8qIEZpbGUgbmFtZSB0b28gTE9OR19QVFINCj4gKi8NCj4gK1hFTl9FUlJOTyhFTk9MQ0ssCTM3
KQkvKiBObyByZWNvcmQgbG9ja3MgYXZhaWxhYmxlICovDQo+ICtYRU5fRVJSTk8oRU5PVEVNUFRZ
LAkzOSkJLyogRGlyZWN0b3J5IG5vdCBlbXB0eSAqLw0KPiArWEVOX0VSUk5PKEVOT1NZUywJMzgp
CS8qIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCAqLw0KPiArWEVOX0VSUk5PKEVOT0RBVEEsCTYx
KQkvKiBObyBkYXRhIGF2YWlsYWJsZSAqLw0KPiArWEVOX0VSUk5PKEVUSU1FLAk2MikJLyogVGlt
ZXIgZXhwaXJlZCAqLw0KPiArWEVOX0VSUk5PKEVCQURNU0csCTc0KQkvKiBOb3QgYSBkYXRhIG1l
c3NhZ2UgKi8NCj4gK1hFTl9FUlJOTyhFT1ZFUkZMT1csCTc1KQkvKiBWYWx1ZSB0b28gbGFyZ2Ug
Zm9yIGRlZmluZWQgZGF0YQ0KPiB0eXBlICovDQo+ICtYRU5fRVJSTk8oRUlMU0VRLAk4NCkJLyog
SWxsZWdhbCBieXRlIHNlcXVlbmNlICovDQo+ICsjaWZkZWYgX19YRU5fXyAvKiBJbnRlcm5hbCBv
bmx5LCBzaG91bGQgbmV2ZXIgYmUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovDQo+ICtYRU5fRVJS
Tk8oRVJFU1RBUlQsCTg1KQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUNCj4g
cmVzdGFydGVkICovDQo+ICsjZW5kaWYNCj4gK1hFTl9FUlJOTyhFTk9UU09DSywJODgpCS8qIFNv
Y2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldCAqLw0KPiArWEVOX0VSUk5PKEVPUE5PVFNVUFAs
CTk1KQkvKiBPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbg0KPiB0cmFuc3BvcnQgZW5kcG9pbnQg
Ki8NCj4gK1hFTl9FUlJOTyhFQUREUklOVVNFLAk5OCkJLyogQWRkcmVzcyBhbHJlYWR5IGluIHVz
ZSAqLw0KPiArWEVOX0VSUk5PKEVBRERSTk9UQVZBSUwsIDk5KQkvKiBDYW5ub3QgYXNzaWduIHJl
cXVlc3RlZCBhZGRyZXNzDQo+ICovDQo+ICtYRU5fRVJSTk8oRU5PQlVGUywJMTA1KQkvKiBObyBi
dWZmZXIgc3BhY2UgYXZhaWxhYmxlICovDQo+ICtYRU5fRVJSTk8oRUlTQ09OTiwJMTA2KQkvKiBU
cmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeQ0KPiBjb25uZWN0ZWQgKi8NCj4gK1hFTl9FUlJO
TyhFTk9UQ09OTiwJMTA3KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90DQo+IGNvbm5lY3Rl
ZCAqLw0KPiArWEVOX0VSUk5PKEVUSU1FRE9VVCwJMTEwKQkvKiBDb25uZWN0aW9uIHRpbWVkIG91
dCAqLw0KPiArDQo+ICsjdW5kZWYgWEVOX0VSUk5PDQo+ICsjZW5kaWYgLyogWEVOX0VSUk5PICov
DQo+ICsvKiBgIH0gKi8NCj4gKw0KPiArLyogQ2xlYW4gdXAgZnJvbSBhIGRlZmF1bHQgaW5jbHVk
ZS4gIENsb3NlIHRoZSBlbnVtIChmb3IgQykuICovDQo+ICsjaWZkZWYgWEVOX0VSUk5PX0RFRkFV
TFRfSU5DTFVERQ0KPiArI3VuZGVmIFhFTl9FUlJOT19ERUZBVUxUX0lOQ0xVREUNCj4gKyNpZm5k
ZWYgX19BU1NFTUJMWV9fDQo+ICt9Ow0KPiArI2VuZGlmDQo+ICsNCj4gKyNlbmRpZiAvKiBYRU5f
RVJSTk9fREVGQVVMVF9JTkNMVURFICovDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJs
aWMvZ3JhbnRfdGFibGUuaA0KPiBiL2luY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oDQo+
IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLmI2OGZmZGQNCj4gLS0tIC9k
ZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUuaA0KPiBAQCAt
MCwwICsxLDY4NCBAQA0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqKioqKioqKioNCj4gKyAqIGdyYW50
X3RhYmxlLmgNCj4gKyAqDQo+ICsgKiBJbnRlcmZhY2UgZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNj
ZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVjZWl2aW5nDQo+ICsgKiBwYWdlLW93bmVyc2hpcCB0
cmFuc2ZlcnMuDQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gY29weQ0KPiArICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvDQo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQ0KPiArICogcmlnaHRzIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yDQo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQ0KPiBpcw0KPiArICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gKyAqDQo+ICsgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbg0KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuDQo+ICsgKg0KPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+IEVYUFJFU1MgT1INCj4g
KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YNCj4gTUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8NCj4gRVZFTlQgU0hBTEwgVEhFDQo+ICsg
KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTDQo+IE9SIE9USEVSDQo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwNCj4gQVJJU0lORw0KPiArICogRlJPTSwg
T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0K
PiBPVEhFUg0KPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICoNCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNCwgSyBBIEZyYXNlcg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19Y
RU5fUFVCTElDX0dSQU5UX1RBQkxFX0hfXw0KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfR1JBTlRf
VEFCTEVfSF9fDQo+ICsNCj4gKyNpbmNsdWRlICJ4ZW4uaCINCj4gKw0KPiArLyoNCj4gKyAqIGBp
bmNvbnRlbnRzIDE1MCBnbnR0YWIgR3JhbnQgVGFibGVzDQo+ICsgKg0KPiArICogWGVuJ3MgZ3Jh
bnQgdGFibGVzIHByb3ZpZGUgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBtZW1vcnkgc2hhcmluZw0K
PiArICogYmV0d2VlbiBkb21haW5zLiBUaGlzIHNoYXJlZCBtZW1vcnkgaW50ZXJmYWNlIHVuZGVy
cGlucyB0aGUgc3BsaXQNCj4gKyAqIGRldmljZSBkcml2ZXJzIGZvciBibG9jayBhbmQgbmV0d29y
ayBJTy4NCj4gKyAqDQo+ICsgKiBFYWNoIGRvbWFpbiBoYXMgaXRzIG93biBncmFudCB0YWJsZS4g
VGhpcyBpcyBhIGRhdGEgc3RydWN0dXJlIHRoYXQNCj4gKyAqIGlzIHNoYXJlZCB3aXRoIFhlbjsg
aXQgYWxsb3dzIHRoZSBkb21haW4gdG8gdGVsbCBYZW4gd2hhdCBraW5kIG9mDQo+ICsgKiBwZXJt
aXNzaW9ucyBvdGhlciBkb21haW5zIGhhdmUgb24gaXRzIHBhZ2VzLiBFbnRyaWVzIGluIHRoZSBn
cmFudA0KPiArICogdGFibGUgYXJlIGlkZW50aWZpZWQgYnkgZ3JhbnQgcmVmZXJlbmNlcy4gQSBn
cmFudCByZWZlcmVuY2UgaXMgYW4NCj4gKyAqIGludGVnZXIsIHdoaWNoIGluZGV4ZXMgaW50byB0
aGUgZ3JhbnQgdGFibGUuIEl0IGFjdHMgYXMgYQ0KPiArICogY2FwYWJpbGl0eSB3aGljaCB0aGUg
Z3JhbnRlZSBjYW4gdXNlIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiB0aGUNCj4gKyAqIGdyYW50
ZXIncyBtZW1vcnkuDQo+ICsgKg0KPiArICogVGhpcyBjYXBhYmlsaXR5LWJhc2VkIHN5c3RlbSBh
bGxvd3Mgc2hhcmVkLW1lbW9yeSBjb21tdW5pY2F0aW9ucw0KPiArICogYmV0d2VlbiB1bnByaXZp
bGVnZWQgZG9tYWlucy4gQSBncmFudCByZWZlcmVuY2UgYWxzbyBlbmNhcHN1bGF0ZXMNCj4gKyAq
IHRoZSBkZXRhaWxzIG9mIGEgc2hhcmVkIHBhZ2UsIHJlbW92aW5nIHRoZSBuZWVkIGZvciBhIGRv
bWFpbiB0bw0KPiArICoga25vdyB0aGUgcmVhbCBtYWNoaW5lIGFkZHJlc3Mgb2YgYSBwYWdlIGl0
IGlzIHNoYXJpbmcuIFRoaXMgbWFrZXMNCj4gKyAqIGl0IHBvc3NpYmxlIHRvIHNoYXJlIG1lbW9y
eSBjb3JyZWN0bHkgd2l0aCBkb21haW5zIHJ1bm5pbmcgaW4NCj4gKyAqIGZ1bGx5IHZpcnR1YWxp
c2VkIG1lbW9yeS4NCj4gKyAqLw0KPiArDQo+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioNCj4gKyAqIEdSQU5UIFRBQkxFIFJFUFJFU0VOVEFUSU9ODQo+ICsgKi8NCj4gKw0K
PiArLyogU29tZSByb3VnaCBndWlkZWxpbmVzIG9uIGFjY2Vzc2luZyBhbmQgdXBkYXRpbmcgZ3Jh
bnQtdGFibGUgZW50cmllcw0KPiArICogaW4gYSBjb25jdXJyZW5jeS1zYWZlIG1hbm5lci4gRm9y
IG1vcmUgaW5mb3JtYXRpb24sIExpbnV4IGNvbnRhaW5zIGENCj4gKyAqIHJlZmVyZW5jZSBpbXBs
ZW1lbnRhdGlvbiBmb3IgZ3Vlc3QgT1NlcyAoZHJpdmVycy94ZW4vZ3JhbnRfdGFibGUuYywNCj4g
c2VlDQo+ICsgKg0KPiBodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVsL2dpdC90
b3J2YWxkcy9saW51eC5naXQ7YT1ibG9iO2Y9ZHJpdmVycy8NCj4geGVuL2dyYW50LXRhYmxlLmM7
aGI9SEVBRA0KPiArICoNCj4gKyAqIE5CLiBXTUIgaXMgYSBuby1vcCBvbiBjdXJyZW50LWdlbmVy
YXRpb24geDg2IHByb2Nlc3NvcnMuIEhvd2V2ZXIsIGENCj4gKyAqICAgICBjb21waWxlciBiYXJy
aWVyIHdpbGwgc3RpbGwgYmUgcmVxdWlyZWQuDQo+ICsgKg0KPiArICogSW50cm9kdWNpbmcgYSB2
YWxpZCBlbnRyeSBpbnRvIHRoZSBncmFudCB0YWJsZToNCj4gKyAqICAxLiBXcml0ZSBlbnQtPmRv
bWlkLg0KPiArICogIDIuIFdyaXRlIGVudC0+ZnJhbWU6DQo+ICsgKiAgICAgIEdURl9wZXJtaXRf
YWNjZXNzOiAgIEZyYW1lIHRvIHdoaWNoIGFjY2VzcyBpcyBwZXJtaXR0ZWQuDQo+ICsgKiAgICAg
IEdURl9hY2NlcHRfdHJhbnNmZXI6IFBzZXVkby1waHlzIGZyYW1lIHNsb3QgYmVpbmcgZmlsbGVk
IGJ5IG5ldw0KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSwgb3IgemVybyBp
ZiBub25lLg0KPiArICogIDMuIFdyaXRlIG1lbW9yeSBiYXJyaWVyIChXTUIpLg0KPiArICogIDQu
IFdyaXRlIGVudC0+ZmxhZ3MsIGluYy4gdmFsaWQgdHlwZS4NCj4gKyAqDQo+ICsgKiBJbnZhbGlk
YXRpbmcgYW4gdW51c2VkIEdURl9wZXJtaXRfYWNjZXNzIGVudHJ5Og0KPiArICogIDEuIGZsYWdz
ID0gZW50LT5mbGFncy4NCj4gKyAqICAyLiBPYnNlcnZlIHRoYXQgIShmbGFncyAmIChHVEZfcmVh
ZGluZ3xHVEZfd3JpdGluZykpLg0KPiArICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAtc2FmZSBD
TVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuDQo+ICsgKiAgTkIuIE5vIG5lZWQgZm9yIFdN
QiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzDQo+IG9m
DQo+ICsgKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRl
cmluZyBvZiBjdHJsLWRlcCB3cml0ZXMuDQo+ICsgKg0KPiArICogSW52YWxpZGF0aW5nIGFuIGlu
LXVzZSBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToNCj4gKyAqICBUaGlzIGNhbm5vdCBiZSBkb25l
IGRpcmVjdGx5LiBSZXF1ZXN0IGFzc2lzdGFuY2UgZnJvbSB0aGUgZG9tYWluDQo+IGNvbnRyb2xs
ZXINCj4gKyAqICB3aGljaCBjYW4gc2V0IGEgdGltZW91dCBvbiB0aGUgdXNlIG9mIGEgZ3JhbnQg
ZW50cnkgYW5kIHRha2UgbmVjZXNzYXJ5DQo+ICsgKiAgYWN0aW9uLiAoTkIuIFRoaXMgaXMgbm90
IHlldCBpbXBsZW1lbnRlZCEpLg0KPiArICoNCj4gKyAqIEludmFsaWRhdGluZyBhbiB1bnVzZWQg
R1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToNCj4gKyAqICAxLiBmbGFncyA9IGVudC0+ZmxhZ3Mu
DQo+ICsgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiBHVEZfdHJhbnNmZXJfY29tbWl0dGVk
KS4gWypdDQo+ICsgKiAgMy4gQ2hlY2sgcmVzdWx0IG9mIFNNUC1zYWZlIENNUFhDSEcoJmVudC0+
ZmxhZ3MsIGZsYWdzLCAwKS4NCj4gKyAqICBOQi4gTm8gbmVlZCBmb3IgV01CIGFzIHJldXNlIG9m
IGVudHJ5IGlzIGNvbnRyb2wtZGVwZW5kZW50IG9uIHN1Y2Nlc3MNCj4gb2YNCj4gKyAqICAgICAg
c3RlcCAzLCBhbmQgYWxsIGFyY2hpdGVjdHVyZXMgZ3VhcmFudGVlIG9yZGVyaW5nIG9mIGN0cmwt
ZGVwIHdyaXRlcy4NCj4gKyAqICBbKl0gSWYgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZCBpcyBzZXQg
dGhlbiB0aGUgZ3JhbnQgZW50cnkgaXMgJ2NvbW1pdHRlZCcuDQo+ICsgKiAgICAgIFRoZSBndWVz
dCBtdXN0IC9ub3QvIG1vZGlmeSB0aGUgZ3JhbnQgZW50cnkgdW50aWwgdGhlIGFkZHJlc3Mgb2Yg
dGhlDQo+ICsgKiAgICAgIHRyYW5zZmVycmVkIGZyYW1lIGlzIHdyaXR0ZW4uIEl0IGlzIHNhZmUg
Zm9yIHRoZSBndWVzdCB0byBzcGluIHdhaXRpbmcNCj4gKyAqICAgICAgZm9yIHRoaXMgdG8gb2Nj
dXIgKGRldGVjdCBieSBvYnNlcnZpbmcgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCBpbg0KPiArICog
ICAgICBlbnQtPmZsYWdzKS4NCj4gKyAqDQo+ICsgKiBJbnZhbGlkYXRpbmcgYSBjb21taXR0ZWQg
R1RGX2FjY2VwdF90cmFuc2ZlciBlbnRyeToNCj4gKyAqICAxLiBXYWl0IGZvciAoZW50LT5mbGFn
cyAmIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQpLg0KPiArICoNCj4gKyAqIENoYW5naW5nIGEgR1RG
X3Blcm1pdF9hY2Nlc3MgZnJvbSB3cml0YWJsZSB0byByZWFkLW9ubHk6DQo+ICsgKiAgVXNlIFNN
UC1zYWZlIENNUFhDSEcgdG8gc2V0IEdURl9yZWFkb25seSwgd2hpbGUgY2hlY2tpbmcNCj4gIUdU
Rl93cml0aW5nLg0KPiArICoNCj4gKyAqIENoYW5naW5nIGEgR1RGX3Blcm1pdF9hY2Nlc3MgZnJv
bSByZWFkLW9ubHkgdG8gd3JpdGFibGU6DQo+ICsgKiAgVXNlIFNNUC1zYWZlIGJpdC1zZXR0aW5n
IGluc3RydWN0aW9uLg0KPiArICovDQo+ICsNCj4gKy8qDQo+ICsgKiBSZWZlcmVuY2UgdG8gYSBn
cmFudCBlbnRyeSBpbiBhIHNwZWNpZmllZCBkb21haW4ncyBncmFudCB0YWJsZS4NCj4gKyAqLw0K
PiArdHlwZWRlZiB1aW50MzJfdCBncmFudF9yZWZfdDsNCj4gKw0KPiArLyoNCj4gKyAqIEEgZ3Jh
bnQgdGFibGUgY29tcHJpc2VzIGEgcGFja2VkIGFycmF5IG9mIGdyYW50IGVudHJpZXMgaW4gb25l
IG9yIG1vcmUNCj4gKyAqIHBhZ2UgZnJhbWVzIHNoYXJlZCBiZXR3ZWVuIFhlbiBhbmQgYSBndWVz
dC4NCj4gKyAqIFtYRU5dOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgWGVuIGFuZCByZWFkIGJ5
IHRoZSBzaGFyaW5nIGd1ZXN0Lg0KPiArICogW0dTVF06IFRoaXMgZmllbGQgaXMgd3JpdHRlbiBi
eSB0aGUgZ3Vlc3QgYW5kIHJlYWQgYnkgWGVuLg0KPiArICovDQo+ICsNCj4gKy8qDQo+ICsgKiBW
ZXJzaW9uIDEgb2YgdGhlIGdyYW50IHRhYmxlIGVudHJ5IHN0cnVjdHVyZSBpcyBtYWludGFpbmVk
IHB1cmVseQ0KPiArICogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgTmV3IGd1ZXN0cyBz
aG91bGQgdXNlIHZlcnNpb24gMi4NCj4gKyAqLw0KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJT
SU9OX18gPCAweDAwMDMwMjBhDQo+ICsjZGVmaW5lIGdyYW50X2VudHJ5X3YxIGdyYW50X2VudHJ5
DQo+ICsjZGVmaW5lIGdyYW50X2VudHJ5X3YxX3QgZ3JhbnRfZW50cnlfdA0KPiArI2VuZGlmDQo+
ICtzdHJ1Y3QgZ3JhbnRfZW50cnlfdjEgew0KPiArICAgIC8qIEdURl94eHg6IHZhcmlvdXMgdHlw
ZSBhbmQgZmxhZyBpbmZvcm1hdGlvbi4gIFtYRU4sR1NUXSAqLw0KPiArICAgIHVpbnQxNl90IGZs
YWdzOw0KPiArICAgIC8qIFRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBmb3JlaWduIHByaXZpbGVn
ZXMuIFtHU1RdICovDQo+ICsgICAgZG9taWRfdCAgZG9taWQ7DQo+ICsgICAgLyoNCj4gKyAgICAg
KiBHVEZfcGVybWl0X2FjY2VzczogR0ZOIHRoYXQgQGRvbWlkIGlzIGFsbG93ZWQgdG8gbWFwIGFu
ZCBhY2Nlc3MuDQo+IFtHU1RdDQo+ICsgICAgICogR1RGX2FjY2VwdF90cmFuc2ZlcjogR0ZOIHRo
YXQgQGRvbWlkIGlzIGFsbG93ZWQgdG8gdHJhbnNmZXIgaW50by4NCj4gW0dTVF0NCj4gKyAgICAg
KiBHVEZfdHJhbnNmZXJfY29tcGxldGVkOiBNRk4gd2hvc2Ugb3duZXJzaGlwIHRyYW5zZmVycmVk
IGJ5DQo+IEBkb21pZA0KPiArICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdHJh
bnNsYXRlZCBndWVzdHMgb25seSkuIFtYRU5dDQo+ICsgICAgICovDQo+ICsgICAgdWludDMyX3Qg
ZnJhbWU7DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgZ3JhbnRfZW50cnlfdjEgZ3JhbnRfZW50
cnlfdjFfdDsNCj4gKw0KPiArLyogVGhlIGZpcnN0IGZldyBncmFudCB0YWJsZSBlbnRyaWVzIHdp
bGwgYmUgcHJlc2VydmVkIGFjcm9zcyBncmFudCB0YWJsZQ0KPiArICogdmVyc2lvbiBjaGFuZ2Vz
IGFuZCBtYXkgYmUgcHJlLXBvcHVsYXRlZCBhdCBkb21haW4gY3JlYXRpb24gYnkgdG9vbHMuDQo+
ICsgKi8NCj4gKyNkZWZpbmUgR05UVEFCX05SX1JFU0VSVkVEX0VOVFJJRVMgICAgIDgNCj4gKyNk
ZWZpbmUgR05UVEFCX1JFU0VSVkVEX0NPTlNPTEUgICAgICAgIDANCj4gKyNkZWZpbmUgR05UVEFC
X1JFU0VSVkVEX1hFTlNUT1JFICAgICAgIDENCj4gKw0KPiArLyoNCj4gKyAqIFR5cGUgb2YgZ3Jh
bnQgZW50cnkuDQo+ICsgKiAgR1RGX2ludmFsaWQ6IFRoaXMgZ3JhbnQgZW50cnkgZ3JhbnRzIG5v
IHByaXZpbGVnZXMuDQo+ICsgKiAgR1RGX3Blcm1pdF9hY2Nlc3M6IEFsbG93IEBkb21pZCB0byBt
YXAvYWNjZXNzIEBmcmFtZS4NCj4gKyAqICBHVEZfYWNjZXB0X3RyYW5zZmVyOiBBbGxvdyBAZG9t
aWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIG9uZSBwYWdlDQo+IGZyYW1lDQo+ICsgKiAgICAg
ICAgICAgICAgICAgICAgICAgdG8gdGhpcyBndWVzdC4gWGVuIHdyaXRlcyB0aGUgcGFnZSBudW1i
ZXIgdG8gQGZyYW1lLg0KPiArICogIEdURl90cmFuc2l0aXZlOiBBbGxvdyBAZG9taWQgdG8gdHJh
bnNpdGl2ZWx5IGFjY2VzcyBhIHN1YnJhbmdlIG9mDQo+ICsgKiAgICAgICAgICAgICAgICAgIEB0
cmFuc19ncmFudCBpbiBAdHJhbnNfZG9taWQuICBObyBtYXBwaW5ncyBhcmUgYWxsb3dlZC4NCj4g
KyAqLw0KPiArI2RlZmluZSBHVEZfaW52YWxpZCAgICAgICAgICgwVTw8MCkNCj4gKyNkZWZpbmUg
R1RGX3Blcm1pdF9hY2Nlc3MgICAoMVU8PDApDQo+ICsjZGVmaW5lIEdURl9hY2NlcHRfdHJhbnNm
ZXIgKDJVPDwwKQ0KPiArI2RlZmluZSBHVEZfdHJhbnNpdGl2ZSAgICAgICgzVTw8MCkNCj4gKyNk
ZWZpbmUgR1RGX3R5cGVfbWFzayAgICAgICAoM1U8PDApDQo+ICsNCj4gKy8qDQo+ICsgKiBTdWJm
bGFncyBmb3IgR1RGX3Blcm1pdF9hY2Nlc3MuDQo+ICsgKiAgR1RGX3JlYWRvbmx5OiBSZXN0cmlj
dCBAZG9taWQgdG8gcmVhZC1vbmx5IG1hcHBpbmdzIGFuZCBhY2Nlc3Nlcy4NCj4gW0dTVF0NCj4g
KyAqICBHVEZfcmVhZGluZzogR3JhbnQgZW50cnkgaXMgY3VycmVudGx5IG1hcHBlZCBmb3IgcmVh
ZGluZyBieSBAZG9taWQuDQo+IFtYRU5dDQo+ICsgKiAgR1RGX3dyaXRpbmc6IEdyYW50IGVudHJ5
IGlzIGN1cnJlbnRseSBtYXBwZWQgZm9yIHdyaXRpbmcgYnkgQGRvbWlkLg0KPiBbWEVOXQ0KPiAr
ICogIEdURl9QQVQsIEdURl9QV1QsIEdURl9QQ0Q6ICh4ODYpIGNhY2hlIGF0dHJpYnV0ZSBmbGFn
cyBmb3IgdGhlIGdyYW50DQo+IFtHU1RdDQo+ICsgKiAgR1RGX3N1Yl9wYWdlOiBHcmFudCBhY2Nl
c3MgdG8gb25seSBhIHN1YnJhbmdlIG9mIHRoZSBwYWdlLiAgQGRvbWlkDQo+ICsgKiAgICAgICAg
ICAgICAgICB3aWxsIG9ubHkgYmUgYWxsb3dlZCB0byBjb3B5IGZyb20gdGhlIGdyYW50LCBhbmQg
bm90DQo+ICsgKiAgICAgICAgICAgICAgICBtYXAgaXQuIFtHU1RdDQo+ICsgKi8NCj4gKyNkZWZp
bmUgX0dURl9yZWFkb25seSAgICAgICAoMikNCj4gKyNkZWZpbmUgR1RGX3JlYWRvbmx5ICAgICAg
ICAoMVU8PF9HVEZfcmVhZG9ubHkpDQo+ICsjZGVmaW5lIF9HVEZfcmVhZGluZyAgICAgICAgKDMp
DQo+ICsjZGVmaW5lIEdURl9yZWFkaW5nICAgICAgICAgKDFVPDxfR1RGX3JlYWRpbmcpDQo+ICsj
ZGVmaW5lIF9HVEZfd3JpdGluZyAgICAgICAgKDQpDQo+ICsjZGVmaW5lIEdURl93cml0aW5nICAg
ICAgICAgKDFVPDxfR1RGX3dyaXRpbmcpDQo+ICsjZGVmaW5lIF9HVEZfUFdUICAgICAgICAgICAg
KDUpDQo+ICsjZGVmaW5lIEdURl9QV1QgICAgICAgICAgICAgKDFVPDxfR1RGX1BXVCkNCj4gKyNk
ZWZpbmUgX0dURl9QQ0QgICAgICAgICAgICAoNikNCj4gKyNkZWZpbmUgR1RGX1BDRCAgICAgICAg
ICAgICAoMVU8PF9HVEZfUENEKQ0KPiArI2RlZmluZSBfR1RGX1BBVCAgICAgICAgICAgICg3KQ0K
PiArI2RlZmluZSBHVEZfUEFUICAgICAgICAgICAgICgxVTw8X0dURl9QQVQpDQo+ICsjZGVmaW5l
IF9HVEZfc3ViX3BhZ2UgICAgICAgKDgpDQo+ICsjZGVmaW5lIEdURl9zdWJfcGFnZSAgICAgICAg
KDFVPDxfR1RGX3N1Yl9wYWdlKQ0KPiArDQo+ICsvKg0KPiArICogU3ViZmxhZ3MgZm9yIEdURl9h
Y2NlcHRfdHJhbnNmZXI6DQo+ICsgKiAgR1RGX3RyYW5zZmVyX2NvbW1pdHRlZDogWGVuIHNldHMg
dGhpcyBmbGFnIHRvIGluZGljYXRlIHRoYXQgaXQgaXMNCj4gY29tbWl0dGVkDQo+ICsgKiAgICAg
IHRvIHRyYW5zZmVycmluZyBvd25lcnNoaXAgb2YgYSBwYWdlIGZyYW1lLiBXaGVuIGEgZ3Vlc3Qg
c2VlcyB0aGlzIGZsYWcNCj4gKyAqICAgICAgaXQgbXVzdCAvbm90LyBtb2RpZnkgdGhlIGdyYW50
IGVudHJ5IHVudGlsIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgaXMNCj4gKyAqICAgICAgc2V0IGJ5
IFhlbi4NCj4gKyAqICBHVEZfdHJhbnNmZXJfY29tcGxldGVkOiBJdCBpcyBzYWZlIGZvciB0aGUg
Z3Vlc3QgdG8gc3Bpbi13YWl0IG9uIHRoaXMgZmxhZw0KPiArICogICAgICBhZnRlciByZWFkaW5n
IEdURl90cmFuc2Zlcl9jb21taXR0ZWQuIFhlbiB3aWxsIGFsd2F5cyB3cml0ZSB0aGUNCj4gZnJh
bWUNCj4gKyAqICAgICAgYWRkcmVzcywgZm9sbG93ZWQgYnkgT1JpbmcgdGhpcyBmbGFnLCBpbiBh
IHRpbWVseSBtYW5uZXIuDQo+ICsgKi8NCj4gKyNkZWZpbmUgX0dURl90cmFuc2Zlcl9jb21taXR0
ZWQgKDIpDQo+ICsjZGVmaW5lIEdURl90cmFuc2Zlcl9jb21taXR0ZWQgICgxVTw8X0dURl90cmFu
c2Zlcl9jb21taXR0ZWQpDQo+ICsjZGVmaW5lIF9HVEZfdHJhbnNmZXJfY29tcGxldGVkICgzKQ0K
PiArI2RlZmluZSBHVEZfdHJhbnNmZXJfY29tcGxldGVkICAoMVU8PF9HVEZfdHJhbnNmZXJfY29t
cGxldGVkKQ0KPiArDQo+ICsvKg0KPiArICogVmVyc2lvbiAyIGdyYW50IHRhYmxlIGVudHJpZXMu
ICBUaGVzZSBmdWxmaWwgdGhlIHNhbWUgcm9sZSBhcw0KPiArICogdmVyc2lvbiAxIGVudHJpZXMs
IGJ1dCBjYW4gcmVwcmVzZW50IG1vcmUgY29tcGxpY2F0ZWQgb3BlcmF0aW9ucy4NCj4gKyAqIEFu
eSBnaXZlbiBkb21haW4gd2lsbCBoYXZlIGVpdGhlciBhIHZlcnNpb24gMSBvciBhIHZlcnNpb24g
MiB0YWJsZSwNCj4gKyAqIGFuZCBldmVyeSBlbnRyeSBpbiB0aGUgdGFibGUgd2lsbCBiZSB0aGUg
c2FtZSB2ZXJzaW9uLg0KPiArICoNCj4gKyAqIFRoZSBpbnRlcmZhY2UgYnkgd2hpY2ggZG9tYWlu
cyB1c2UgZ3JhbnQgcmVmZXJlbmNlcyBkb2VzIG5vdCBkZXBlbmQNCj4gKyAqIG9uIHRoZSBncmFu
dCB0YWJsZSB2ZXJzaW9uIGluIHVzZSBieSB0aGUgb3RoZXIgZG9tYWluLg0KPiArICovDQo+ICsj
aWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjBhDQo+ICsvKg0KPiArICog
VmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgZ3JhbnQgZW50cmllcyBzaGFyZSBhIGNvbW1vbiBwcmVm
aXguICBUaGUNCj4gKyAqIGZpZWxkcyBvZiB0aGUgcHJlZml4IGFyZSBkb2N1bWVudGVkIGFzIHBh
cnQgb2Ygc3RydWN0DQo+ICsgKiBncmFudF9lbnRyeV92MS4NCj4gKyAqLw0KPiArc3RydWN0IGdy
YW50X2VudHJ5X2hlYWRlciB7DQo+ICsgICAgdWludDE2X3QgZmxhZ3M7DQo+ICsgICAgZG9taWRf
dCAgZG9taWQ7DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgZ3JhbnRfZW50cnlfaGVhZGVyIGdy
YW50X2VudHJ5X2hlYWRlcl90Ow0KPiArDQo+ICsvKg0KPiArICogVmVyc2lvbiAyIG9mIHRoZSBn
cmFudCBlbnRyeSBzdHJ1Y3R1cmUuDQo+ICsgKi8NCj4gK3VuaW9uIGdyYW50X2VudHJ5X3YyIHsN
Cj4gKyAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7DQo+ICsNCj4gKyAgICAvKg0KPiArICAg
ICAqIFRoaXMgbWVtYmVyIGlzIHVzZWQgZm9yIFYxLXN0eWxlIGZ1bGwgcGFnZSBncmFudHMsIHdo
ZXJlIGVpdGhlcjoNCj4gKyAgICAgKg0KPiArICAgICAqIC0tIGhkci50eXBlIGlzIEdURl9hY2Nl
cHRfdHJhbnNmZXIsIG9yDQo+ICsgICAgICogLS0gaGRyLnR5cGUgaXMgR1RGX3Blcm1pdF9hY2Nl
c3MgYW5kIEdURl9zdWJfcGFnZSBpcyBub3Qgc2V0Lg0KPiArICAgICAqDQo+ICsgICAgICogSW4g
dGhhdCBjYXNlLCB0aGUgZnJhbWUgZmllbGQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUN
Cj4gKyAgICAgKiBmaWVsZCBvZiB0aGUgc2FtZSBuYW1lIGluIHRoZSBWMSBlbnRyeSBzdHJ1Y3R1
cmUuDQo+ICsgICAgICovDQo+ICsgICAgc3RydWN0IHsNCj4gKyAgICAgICAgZ3JhbnRfZW50cnlf
aGVhZGVyX3QgaGRyOw0KPiArICAgICAgICB1aW50MzJfdCBwYWQwOw0KPiArICAgICAgICB1aW50
NjRfdCBmcmFtZTsNCj4gKyAgICB9IGZ1bGxfcGFnZTsNCj4gKw0KPiArICAgIC8qDQo+ICsgICAg
ICogSWYgdGhlIGdyYW50IHR5cGUgaXMgR1RGX2dyYW50X2FjY2VzcyBhbmQgR1RGX3N1Yl9wYWdl
IGlzIHNldCwNCj4gKyAgICAgKiBAZG9taWQgaXMgYWxsb3dlZCB0byBhY2Nlc3MgYnl0ZXMgW0Bw
YWdlX29mZixAcGFnZV9vZmYrQGxlbmd0aCkNCj4gKyAgICAgKiBpbiBmcmFtZSBAZnJhbWUuDQo+
ICsgICAgICovDQo+ICsgICAgc3RydWN0IHsNCj4gKyAgICAgICAgZ3JhbnRfZW50cnlfaGVhZGVy
X3QgaGRyOw0KPiArICAgICAgICB1aW50MTZfdCBwYWdlX29mZjsNCj4gKyAgICAgICAgdWludDE2
X3QgbGVuZ3RoOw0KPiArICAgICAgICB1aW50NjRfdCBmcmFtZTsNCj4gKyAgICB9IHN1Yl9wYWdl
Ow0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAgKiBJZiB0aGUgZ3JhbnQgaXMgR1RGX3RyYW5zaXRp
dmUsIEBkb21pZCBpcyBhbGxvd2VkIHRvIHVzZSB0aGUNCj4gKyAgICAgKiBncmFudCBAZ3JlZiBp
biBkb21haW4gQHRyYW5zX2RvbWlkLCBhcyBpZiBpdCB3YXMgdGhlIGxvY2FsDQo+ICsgICAgICog
ZG9tYWluLiAgT2J2aW91c2x5LCB0aGUgdHJhbnNpdGl2ZSBhY2Nlc3MgbXVzdCBiZSBjb21wYXRp
YmxlDQo+ICsgICAgICogd2l0aCB0aGUgb3JpZ2luYWwgZ3JhbnQuDQo+ICsgICAgICoNCj4gKyAg
ICAgKiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIFhlbiBkb2VzIG5vdCBhbGxvdyB0cmFuc2l0aXZl
IGdyYW50cw0KPiArICAgICAqIHRvIGJlIG1hcHBlZC4NCj4gKyAgICAgKi8NCj4gKyAgICBzdHJ1
Y3Qgew0KPiArICAgICAgICBncmFudF9lbnRyeV9oZWFkZXJfdCBoZHI7DQo+ICsgICAgICAgIGRv
bWlkX3QgdHJhbnNfZG9taWQ7DQo+ICsgICAgICAgIHVpbnQxNl90IHBhZDA7DQo+ICsgICAgICAg
IGdyYW50X3JlZl90IGdyZWY7DQo+ICsgICAgfSB0cmFuc2l0aXZlOw0KPiArDQo+ICsgICAgdWlu
dDMyX3QgX19zcGFjZXJbNF07IC8qIFBhZCB0byBhIHBvd2VyIG9mIHR3byAqLw0KPiArfTsNCj4g
K3R5cGVkZWYgdW5pb24gZ3JhbnRfZW50cnlfdjIgZ3JhbnRfZW50cnlfdjJfdDsNCj4gKw0KPiAr
dHlwZWRlZiB1aW50MTZfdCBncmFudF9zdGF0dXNfdDsNCj4gKw0KPiArI2VuZGlmIC8qIF9fWEVO
X0lOVEVSRkFDRV9WRVJTSU9OX18gKi8NCj4gKw0KPiArLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqDQo+ICsgKiBHUkFOVCBUQUJMRSBRVUVSSUVTIEFORCBVU0VTDQo+ICsgKi8N
Cj4gKw0KPiArLyogYCBlbnVtIG5lZ19lcnJub3ZhbA0KPiArICogYCBIWVBFUlZJU09SX2dyYW50
X3RhYmxlX29wKGVudW0gZ3JhbnRfdGFibGVfb3AgY21kLA0KPiArICogYCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKmFyZ3MsDQo+ICsgKiBgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNvdW50KQ0KPiArICogYA0KPiArICoNCj4gKyAqIEBhcmdzIHBvaW50
cyB0byBhbiBhcnJheSBvZiBhIHBlci1jb21tYW5kIGRhdGEgc3RydWN0dXJlLiBUaGUgYXJyYXkN
Cj4gKyAqIGhhcyBAY291bnQgbWVtYmVycw0KPiArICovDQo+ICsNCj4gKy8qIGAgZW51bSBncmFu
dF90YWJsZV9vcCB7IC8vIEdOVFRBQk9QXyogPT4gc3RydWN0IGdudHRhYl8qICovDQo+ICsjZGVm
aW5lIEdOVFRBQk9QX21hcF9ncmFudF9yZWYgICAgICAgIDANCj4gKyNkZWZpbmUgR05UVEFCT1Bf
dW5tYXBfZ3JhbnRfcmVmICAgICAgMQ0KPiArI2RlZmluZSBHTlRUQUJPUF9zZXR1cF90YWJsZSAg
ICAgICAgICAyDQo+ICsjZGVmaW5lIEdOVFRBQk9QX2R1bXBfdGFibGUgICAgICAgICAgIDMNCj4g
KyNkZWZpbmUgR05UVEFCT1BfdHJhbnNmZXIgICAgICAgICAgICAgNA0KPiArI2RlZmluZSBHTlRU
QUJPUF9jb3B5ICAgICAgICAgICAgICAgICA1DQo+ICsjZGVmaW5lIEdOVFRBQk9QX3F1ZXJ5X3Np
emUgICAgICAgICAgIDYNCj4gKyNkZWZpbmUgR05UVEFCT1BfdW5tYXBfYW5kX3JlcGxhY2UgICAg
Nw0KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQ0KPiArI2Rl
ZmluZSBHTlRUQUJPUF9zZXRfdmVyc2lvbiAgICAgICAgICA4DQo+ICsjZGVmaW5lIEdOVFRBQk9Q
X2dldF9zdGF0dXNfZnJhbWVzICAgIDkNCj4gKyNkZWZpbmUgR05UVEFCT1BfZ2V0X3ZlcnNpb24g
ICAgICAgICAgMTANCj4gKyNkZWZpbmUgR05UVEFCT1Bfc3dhcF9ncmFudF9yZWYJICAgICAgMTEN
Cj4gKyNkZWZpbmUgR05UVEFCT1BfY2FjaGVfZmx1c2gJICAgICAgMTINCj4gKyNlbmRpZiAvKiBf
X1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fICovDQo+ICsvKiBgIH0gKi8NCj4gKw0KPiArLyoNCj4g
KyAqIEhhbmRsZSB0byB0cmFjayBhIG1hcHBpbmcgY3JlYXRlZCB2aWEgYSBncmFudCByZWZlcmVu
Y2UuDQo+ICsgKi8NCj4gK3R5cGVkZWYgdWludDMyX3QgZ3JhbnRfaGFuZGxlX3Q7DQo+ICsNCj4g
Ky8qDQo+ICsgKiBHTlRUQUJPUF9tYXBfZ3JhbnRfcmVmOiBNYXAgdGhlIGdyYW50IGVudHJ5ICg8
ZG9tPiw8cmVmPikgZm9yDQo+IGFjY2Vzcw0KPiArICogYnkgZGV2aWNlcyBhbmQvb3IgaG9zdCBD
UFVzLiBJZiBzdWNjZXNzZnVsLCA8aGFuZGxlPiBpcyBhIHRyYWNraW5nIG51bWJlcg0KPiArICog
dGhhdCBtdXN0IGJlIHByZXNlbnRlZCBsYXRlciB0byBkZXN0cm95IHRoZSBtYXBwaW5nKHMpLiBP
biBlcnJvciwNCj4gPHN0YXR1cz4NCj4gKyAqIGlzIGEgbmVnYXRpdmUgc3RhdHVzIGNvZGUuDQo+
ICsgKiBOT1RFUzoNCj4gKyAqICAxLiBJZiBHTlRNQVBfZGV2aWNlX21hcCBpcyBzcGVjaWZpZWQg
dGhlbiA8ZGV2X2J1c19hZGRyPiBpcyB0aGUNCj4gYWRkcmVzcw0KPiArICogICAgIHZpYSB3aGlj
aCBJL08gZGV2aWNlcyBtYXkgYWNjZXNzIHRoZSBncmFudGVkIGZyYW1lLg0KPiArICogIDIuIElm
IEdOVE1BUF9ob3N0X21hcCBpcyBzcGVjaWZpZWQgdGhlbiBhIG1hcHBpbmcgd2lsbCBiZSBhZGRl
ZCBhdA0KPiArICogICAgIGVpdGhlciBhIGhvc3QgdmlydHVhbCBhZGRyZXNzIGluIHRoZSBjdXJy
ZW50IGFkZHJlc3Mgc3BhY2UsIG9yIGF0DQo+ICsgKiAgICAgYSBQVEUgYXQgdGhlIHNwZWNpZmll
ZCBtYWNoaW5lIGFkZHJlc3MuICBUaGUgdHlwZSBvZiBtYXBwaW5nIHRvDQo+ICsgKiAgICAgcGVy
Zm9ybSBpcyBzZWxlY3RlZCB0aHJvdWdoIHRoZSBHTlRNQVBfY29udGFpbnNfcHRlIGZsYWcsIGFu
ZCB0aGUNCj4gKyAqICAgICBhZGRyZXNzIGlzIHNwZWNpZmllZCBpbiA8aG9zdF9hZGRyPi4NCj4g
KyAqICAzLiBNYXBwaW5ncyBzaG91bGQgb25seSBiZSBkZXN0cm95ZWQgdmlhIEdOVFRBQk9QX3Vu
bWFwX2dyYW50X3JlZi4NCj4gSWYgYQ0KPiArICogICAgIGhvc3QgbWFwcGluZyBpcyBkZXN0cm95
ZWQgYnkgb3RoZXIgbWVhbnMgdGhlbiBpdCBpcyAqTk9UKiBndWFyYW50ZWVkDQo+ICsgKiAgICAg
dG8gYmUgYWNjb3VudGVkIHRvIHRoZSBjb3JyZWN0IGdyYW50IHJlZmVyZW5jZSENCj4gKyAqLw0K
PiArc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmIHsNCj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJz
LiAqLw0KPiArICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsNCj4gKyAgICB1aW50MzJfdCBmbGFnczsg
ICAgICAgICAgICAgICAvKiBHTlRNQVBfKiAqLw0KPiArICAgIGdyYW50X3JlZl90IHJlZjsNCj4g
KyAgICBkb21pZF90ICBkb207DQo+ICsgICAgLyogT1VUIHBhcmFtZXRlcnMuICovDQo+ICsgICAg
aW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8N
Cj4gKyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7DQo+ICsgICAgdWludDY0X3QgZGV2X2J1c19h
ZGRyOw0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmIGdudHRh
Yl9tYXBfZ3JhbnRfcmVmX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfbWFw
X2dyYW50X3JlZl90KTsNCj4gKw0KPiArLyoNCj4gKyAqIEdOVFRBQk9QX3VubWFwX2dyYW50X3Jl
ZjogRGVzdHJveSBvbmUgb3IgbW9yZSBncmFudC1yZWZlcmVuY2UNCj4gbWFwcGluZ3MNCj4gKyAq
IHRyYWNrZWQgYnkgPGhhbmRsZT4uIElmIDxob3N0X2FkZHI+IG9yIDxkZXZfYnVzX2FkZHI+IGlz
IHplcm8sIHRoYXQNCj4gKyAqIGZpZWxkIGlzIGlnbm9yZWQuIElmIG5vbi16ZXJvLCB0aGV5IG11
c3QgcmVmZXIgdG8gYSBkZXZpY2UvaG9zdCBtYXBwaW5nDQo+ICsgKiB0aGF0IGlzIHRyYWNrZWQg
YnkgPGhhbmRsZT4NCj4gKyAqIE5PVEVTOg0KPiArICogIDEuIFRoZSBjYWxsIG1heSBmYWlsIGlu
IGFuIHVuZGVmaW5lZCBtYW5uZXIgaWYgZWl0aGVyIG1hcHBpbmcgaXMgbm90DQo+ICsgKiAgICAg
dHJhY2tlZCBieSA8aGFuZGxlPi4NCj4gKyAqICAzLiBBZnRlciBleGVjdXRpbmcgYSBiYXRjaCBv
ZiB1bm1hcHMsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQ0KPiArICogICAgIG1hcHBp
bmdzIHdpbGwgcmVtYWluIGluIHRoZSBkZXZpY2Ugb3IgaG9zdCBUTEJzLg0KPiArICovDQo+ICtz
dHJ1Y3QgZ250dGFiX3VubWFwX2dyYW50X3JlZiB7DQo+ICsgICAgLyogSU4gcGFyYW1ldGVycy4g
Ki8NCj4gKyAgICB1aW50NjRfdCBob3N0X2FkZHI7DQo+ICsgICAgdWludDY0X3QgZGV2X2J1c19h
ZGRyOw0KPiArICAgIGdyYW50X2hhbmRsZV90IGhhbmRsZTsNCj4gKyAgICAvKiBPVVQgcGFyYW1l
dGVycy4gKi8NCj4gKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVt
IGdyYW50X3N0YXR1cyAqLw0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0IGdudHRhYl91bm1hcF9n
cmFudF9yZWYgZ250dGFiX3VubWFwX2dyYW50X3JlZl90Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoZ250dGFiX3VubWFwX2dyYW50X3JlZl90KTsNCj4gKw0KPiArLyoNCj4gKyAqIEdOVFRB
Qk9QX3NldHVwX3RhYmxlOiBTZXQgdXAgYSBncmFudCB0YWJsZSBmb3IgPGRvbT4gY29tcHJpc2lu
ZyBhdA0KPiBsZWFzdA0KPiArICogPG5yX2ZyYW1lcz4gcGFnZXMuIFRoZSBmcmFtZSBhZGRyZXNz
ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlDQo+IDxmcmFtZV9saXN0Pi4NCj4gKyAqIE9ubHkgPG5yX2Zy
YW1lcz4gYWRkcmVzc2VzIGFyZSB3cml0dGVuLCBldmVuIGlmIHRoZSB0YWJsZSBpcyBsYXJnZXIu
DQo+ICsgKiBOT1RFUzoNCj4gKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERPTUlE
X1NFTEYuDQo+ICsgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFpbiBt
YXkgc3BlY2lmeSA8ZG9tPiAhPQ0KPiBET01JRF9TRUxGLg0KPiArICogIDMuIFhlbiBtYXkgbm90
IHN1cHBvcnQgbW9yZSB0aGFuIGEgc2luZ2xlIGdyYW50LXRhYmxlIHBhZ2UgcGVyIGRvbWFpbi4N
Cj4gKyAqLw0KPiArc3RydWN0IGdudHRhYl9zZXR1cF90YWJsZSB7DQo+ICsgICAgLyogSU4gcGFy
YW1ldGVycy4gKi8NCj4gKyAgICBkb21pZF90ICBkb207DQo+ICsgICAgdWludDMyX3QgbnJfZnJh
bWVzOw0KPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLw0KPiArICAgIGludDE2X3QgIHN0YXR1
czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovDQo+ICsjaWYgX19YRU5f
SU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDAzMDANCj4gKyAgICBYRU5fR1VFU1RfSEFORExF
KHVsb25nKSBmcmFtZV9saXN0Ow0KPiArI2Vsc2UNCj4gKyAgICBYRU5fR1VFU1RfSEFORExFKHhl
bl9wZm5fdCkgZnJhbWVfbGlzdDsNCj4gKyNlbmRpZg0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0
IGdudHRhYl9zZXR1cF90YWJsZSBnbnR0YWJfc2V0dXBfdGFibGVfdDsNCj4gK0RFRklORV9YRU5f
R1VFU1RfSEFORExFKGdudHRhYl9zZXR1cF90YWJsZV90KTsNCj4gKw0KPiArLyoNCj4gKyAqIEdO
VFRBQk9QX2R1bXBfdGFibGU6IER1bXAgdGhlIGNvbnRlbnRzIG9mIHRoZSBncmFudCB0YWJsZSB0
byB0aGUNCj4gKyAqIHhlbiBjb25zb2xlLiBEZWJ1Z2dpbmcgdXNlIG9ubHkuDQo+ICsgKi8NCj4g
K3N0cnVjdCBnbnR0YWJfZHVtcF90YWJsZSB7DQo+ICsgICAgLyogSU4gcGFyYW1ldGVycy4gKi8N
Cj4gKyAgICBkb21pZF90IGRvbTsNCj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8NCj4gKyAg
ICBpbnQxNl90IHN0YXR1czsgICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAq
Lw0KPiArfTsNCj4gK3R5cGVkZWYgc3RydWN0IGdudHRhYl9kdW1wX3RhYmxlIGdudHRhYl9kdW1w
X3RhYmxlX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfZHVtcF90YWJsZV90
KTsNCj4gKw0KPiArLyoNCj4gKyAqIEdOVFRBQk9QX3RyYW5zZmVyX2dyYW50X3JlZjogVHJhbnNm
ZXIgPGZyYW1lPiB0byBhIGZvcmVpZ24gZG9tYWluLg0KPiBUaGUNCj4gKyAqIGZvcmVpZ24gZG9t
YWluIGhhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgaXRzIGludGVyZXN0IGluIHRoZSB0cmFuc2Zl
ciB2aWENCj4gKyAqIDxkb21pZCwgcmVmPi4NCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQsIGV2ZW4g
aWYgdGhlIHRyYW5zZmVyIGZhaWxzLCB0aGUgc3BlY2lmaWVkIHBhZ2Ugbm8gTE9OR19QVFJlcg0K
PiBiZWxvbmdzDQo+ICsgKiB0byB0aGUgY2FsbGluZyBkb21haW4gKnVubGVzcyogdGhlIGVycm9y
IGlzIEdOVFNUX2JhZF9wYWdlLg0KPiArICovDQo+ICtzdHJ1Y3QgZ250dGFiX3RyYW5zZmVyIHsN
Cj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLw0KPiArICAgIHhlbl9wZm5fdCAgICAgbWZuOw0K
PiArICAgIGRvbWlkX3QgICAgICAgZG9taWQ7DQo+ICsgICAgZ3JhbnRfcmVmX3QgICByZWY7DQo+
ICsgICAgLyogT1VUIHBhcmFtZXRlcnMuICovDQo+ICsgICAgaW50MTZfdCAgICAgICBzdGF0dXM7
DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3RyYW5zZmVyIGdudHRhYl90cmFuc2Zl
cl90Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3RyYW5zZmVyX3QpOw0KPiAr
DQo+ICsNCj4gKy8qDQo+ICsgKiBHTlRUQUJPUF9jb3B5OiBIeXBlcnZpc29yIGJhc2VkIGNvcHkN
Cj4gKyAqIHNvdXJjZSBhbmQgZGVzdGluYXRpb25zIGNhbiBiZSBlaXRoZXJzIE1GTnMgb3IsIGZv
ciBmb3JlaWduIGRvbWFpbnMsDQo+ICsgKiBncmFudCByZWZlcmVuY2VzLiB0aGUgZm9yZWlnbiBk
b21haW4gaGFzIHRvIGdyYW50IHJlYWQvd3JpdGUgYWNjZXNzDQo+ICsgKiBpbiBpdHMgZ3JhbnQg
dGFibGUuDQo+ICsgKg0KPiArICogVGhlIGZsYWdzIHNwZWNpZnkgd2hhdCB0eXBlIHNvdXJjZSBh
bmQgZGVzdGluYXRpb25zIGFyZSAoZWl0aGVyIE1GTg0KPiArICogb3IgZ3JhbnQgcmVmZXJlbmNl
KS4NCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQgdGhpcyBjYW4gYWxzbyBiZSB1c2VkIHRvIGNvcHkg
ZGF0YSBiZXR3ZWVuIHR3byBkb21haW5zDQo+ICsgKiB2aWEgYSB0aGlyZCBwYXJ0eSBpZiB0aGUg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBkb21haW5zIGhhZCBwcmV2aW91c2x5DQo+ICsgKiBncmFu
dCBhcHByb3ByaWF0ZSBhY2Nlc3MgdG8gdGhlaXIgcGFnZXMgdG8gdGhlIHRoaXJkIHBhcnR5Lg0K
PiArICoNCj4gKyAqIHNvdXJjZV9vZmZzZXQgc3BlY2lmaWVzIGFuIG9mZnNldCBpbiB0aGUgc291
cmNlIGZyYW1lLCBkZXN0X29mZnNldA0KPiArICogdGhlIG9mZnNldCBpbiB0aGUgdGFyZ2V0IGZy
YW1lIGFuZCAgbGVuIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mDQo+ICsgKiBieXRlcyB0byBiZSBj
b3BpZWQuDQo+ICsgKi8NCj4gKw0KPiArI2RlZmluZSBfR05UQ09QWV9zb3VyY2VfZ3JlZiAgICAg
ICgwKQ0KPiArI2RlZmluZSBHTlRDT1BZX3NvdXJjZV9ncmVmICAgICAgICgxPDxfR05UQ09QWV9z
b3VyY2VfZ3JlZikNCj4gKyNkZWZpbmUgX0dOVENPUFlfZGVzdF9ncmVmICAgICAgICAoMSkNCj4g
KyNkZWZpbmUgR05UQ09QWV9kZXN0X2dyZWYgICAgICAgICAoMTw8X0dOVENPUFlfZGVzdF9ncmVm
KQ0KPiArDQo+ICtzdHJ1Y3QgZ250dGFiX2NvcHkgew0KPiArICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovDQo+ICsgICAgc3RydWN0IGdudHRhYl9jb3B5X3B0ciB7DQo+ICsgICAgICAgIHVuaW9uIHsN
Cj4gKyAgICAgICAgICAgIGdyYW50X3JlZl90IHJlZjsNCj4gKyAgICAgICAgICAgIHhlbl9wZm5f
dCAgIGdtZm47DQo+ICsgICAgICAgIH0gdTsNCj4gKyAgICAgICAgZG9taWRfdCAgZG9taWQ7DQo+
ICsgICAgICAgIHVpbnQxNl90IG9mZnNldDsNCj4gKyAgICB9IHNvdXJjZSwgZGVzdDsNCj4gKyAg
ICB1aW50MTZfdCAgICAgIGxlbjsNCj4gKyAgICB1aW50MTZfdCAgICAgIGZsYWdzOyAgICAgICAg
ICAvKiBHTlRDT1BZXyogKi8NCj4gKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8NCj4gKyAgICBp
bnQxNl90ICAgICAgIHN0YXR1czsNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfY29w
eSAgZ250dGFiX2NvcHlfdDsNCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9jb3B5
X3QpOw0KPiArDQo+ICsvKg0KPiArICogR05UVEFCT1BfcXVlcnlfc2l6ZTogUXVlcnkgdGhlIGN1
cnJlbnQgYW5kIG1heGltdW0gc2l6ZXMgb2YgdGhlDQo+IHNoYXJlZA0KPiArICogZ3JhbnQgdGFi
bGUuDQo+ICsgKiBOT1RFUzoNCj4gKyAqICAxLiA8ZG9tPiBtYXkgYmUgc3BlY2lmaWVkIGFzIERP
TUlEX1NFTEYuDQo+ICsgKiAgMi4gT25seSBhIHN1ZmZpY2llbnRseS1wcml2aWxlZ2VkIGRvbWFp
biBtYXkgc3BlY2lmeSA8ZG9tPiAhPQ0KPiBET01JRF9TRUxGLg0KPiArICovDQo+ICtzdHJ1Y3Qg
Z250dGFiX3F1ZXJ5X3NpemUgew0KPiArICAgIC8qIElOIHBhcmFtZXRlcnMuICovDQo+ICsgICAg
ZG9taWRfdCAgZG9tOw0KPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLw0KPiArICAgIHVpbnQz
Ml90IG5yX2ZyYW1lczsNCj4gKyAgICB1aW50MzJfdCBtYXhfbnJfZnJhbWVzOw0KPiArICAgIGlu
dDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovDQo+
ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgZ250dGFiX3F1ZXJ5X3Np
emVfdDsNCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9xdWVyeV9zaXplX3QpOw0K
PiArDQo+ICsvKg0KPiArICogR05UVEFCT1BfdW5tYXBfYW5kX3JlcGxhY2U6IERlc3Ryb3kgb25l
IG9yIG1vcmUgZ3JhbnQtcmVmZXJlbmNlDQo+IG1hcHBpbmdzDQo+ICsgKiB0cmFja2VkIGJ5IDxo
YW5kbGU+IGJ1dCBhdG9taWNhbGx5IHJlcGxhY2UgdGhlIHBhZ2UgdGFibGUgZW50cnkgd2l0aCBv
bmUNCj4gKyAqIHBvaW50aW5nIHRvIHRoZSBtYWNoaW5lIGFkZHJlc3MgdW5kZXIgPG5ld19hZGRy
Pi4gIDxuZXdfYWRkcj4gd2lsbA0KPiBiZQ0KPiArICogcmVkaXJlY3RlZCB0byB0aGUgbnVsbCBl
bnRyeS4NCj4gKyAqIE5PVEVTOg0KPiArICogIDEuIFRoZSBjYWxsIG1heSBmYWlsIGluIGFuIHVu
ZGVmaW5lZCBtYW5uZXIgaWYgZWl0aGVyIG1hcHBpbmcgaXMgbm90DQo+ICsgKiAgICAgdHJhY2tl
ZCBieSA8aGFuZGxlPi4NCj4gKyAqICAyLiBBZnRlciBleGVjdXRpbmcgYSBiYXRjaCBvZiB1bm1h
cHMsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBubyBzdGFsZQ0KPiArICogICAgIG1hcHBpbmdzIHdp
bGwgcmVtYWluIGluIHRoZSBkZXZpY2Ugb3IgaG9zdCBUTEJzLg0KPiArICovDQo+ICtzdHJ1Y3Qg
Z250dGFiX3VubWFwX2FuZF9yZXBsYWNlIHsNCj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAqLw0K
PiArICAgIHVpbnQ2NF90IGhvc3RfYWRkcjsNCj4gKyAgICB1aW50NjRfdCBuZXdfYWRkcjsNCj4g
KyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7DQo+ICsgICAgLyogT1VUIHBhcmFtZXRlcnMuICov
DQo+ICsgICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9z
dGF0dXMgKi8NCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfYW5kX3JlcGxh
Y2UgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRM
RShnbnR0YWJfdW5tYXBfYW5kX3JlcGxhY2VfdCk7DQo+ICsNCj4gKyNpZiBfX1hFTl9JTlRFUkZB
Q0VfVkVSU0lPTl9fID49IDB4MDAwMzAyMGENCj4gKy8qDQo+ICsgKiBHTlRUQUJPUF9zZXRfdmVy
c2lvbjogUmVxdWVzdCBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgZ3JhbnQNCj4gKyAqIHRh
YmxlIHNoYXJlZCB0YWJsZSBzdHJ1Y3R1cmUuICBUaGlzIG9wZXJhdGlvbiBjYW4gb25seSBiZSBw
ZXJmb3JtZWQNCj4gKyAqIG9uY2UgaW4gYW55IGdpdmVuIGRvbWFpbi4gIEl0IG11c3QgYmUgcGVy
Zm9ybWVkIGJlZm9yZSBhbnkgZ3JhbnRzDQo+ICsgKiBhcmUgYWN0aXZhdGVkOyBvdGhlcndpc2Us
IHRoZSBkb21haW4gd2lsbCBiZSBzdHVjayB3aXRoIHZlcnNpb24gMS4NCj4gKyAqIFRoZSBvbmx5
IGRlZmluZWQgdmVyc2lvbnMgYXJlIDEgYW5kIDIuDQo+ICsgKi8NCj4gK3N0cnVjdCBnbnR0YWJf
c2V0X3ZlcnNpb24gew0KPiArICAgIC8qIElOL09VVCBwYXJhbWV0ZXJzICovDQo+ICsgICAgdWlu
dDMyX3QgdmVyc2lvbjsNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0X3ZlcnNp
b24gZ250dGFiX3NldF92ZXJzaW9uX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0
YWJfc2V0X3ZlcnNpb25fdCk7DQo+ICsNCj4gKw0KPiArLyoNCj4gKyAqIEdOVFRBQk9QX2dldF9z
dGF0dXNfZnJhbWVzOiBHZXQgdGhlIGxpc3Qgb2YgZnJhbWVzIHVzZWQgdG8gc3RvcmUgZ3JhbnQN
Cj4gKyAqIHN0YXR1cyBmb3IgPGRvbT4uIEluIGdyYW50IGZvcm1hdCB2ZXJzaW9uIDIsIHRoZSBz
dGF0dXMgaXMgc2VwYXJhdGVkDQo+ICsgKiBmcm9tIHRoZSBvdGhlciBzaGFyZWQgZ3JhbnQgZmll
bGRzIHRvIGFsbG93IG1vcmUgZWZmaWNpZW50IHN5bmNocm9uaXphdGlvbg0KPiArICogdXNpbmcg
YmFycmllcnMgaW5zdGVhZCBvZiBhdG9taWMgY21wZXhjaCBvcGVyYXRpb25zLg0KPiArICogPG5y
X2ZyYW1lcz4gc3BlY2lmeSB0aGUgc2l6ZSBvZiB2ZWN0b3IgPGZyYW1lX2xpc3Q+Lg0KPiArICog
VGhlIGZyYW1lIGFkZHJlc3NlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIDxmcmFtZV9saXN0Pi4NCj4g
KyAqIE9ubHkgPG5yX2ZyYW1lcz4gYWRkcmVzc2VzIGFyZSByZXR1cm5lZCwgZXZlbiBpZiB0aGUg
dGFibGUgaXMgbGFyZ2VyLg0KPiArICogTk9URVM6DQo+ICsgKiAgMS4gPGRvbT4gbWF5IGJlIHNw
ZWNpZmllZCBhcyBET01JRF9TRUxGLg0KPiArICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJp
dmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0NCj4gRE9NSURfU0VMRi4NCj4gKyAq
Lw0KPiArc3RydWN0IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyB7DQo+ICsgICAgLyogSU4gcGFy
YW1ldGVycy4gKi8NCj4gKyAgICB1aW50MzJfdCBucl9mcmFtZXM7DQo+ICsgICAgZG9taWRfdCAg
ZG9tOw0KPiArICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLw0KPiArICAgIGludDE2X3QgIHN0YXR1
czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovDQo+ICsgICAgWEVOX0dV
RVNUX0hBTkRMRSh1aW50NjRfdCkgZnJhbWVfbGlzdDsNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVj
dCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3Q7DQo+
ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCk7DQo+
ICsNCj4gKy8qDQo+ICsgKiBHTlRUQUJPUF9nZXRfdmVyc2lvbjogR2V0IHRoZSBncmFudCB0YWJs
ZSB2ZXJzaW9uIHdoaWNoIGlzIGluDQo+ICsgKiBlZmZlY3QgZm9yIGRvbWFpbiA8ZG9tPi4NCj4g
KyAqLw0KPiArc3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiB7DQo+ICsgICAgLyogSU4gcGFyYW1l
dGVycyAqLw0KPiArICAgIGRvbWlkX3QgZG9tOw0KPiArICAgIHVpbnQxNl90IHBhZDsNCj4gKyAg
ICAvKiBPVVQgcGFyYW1ldGVycyAqLw0KPiArICAgIHVpbnQzMl90IHZlcnNpb247DQo+ICt9Ow0K
PiArdHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2dldF92ZXJzaW9uIGdudHRhYl9nZXRfdmVyc2lvbl90
Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX2dldF92ZXJzaW9uX3QpOw0KPiAr
DQo+ICsvKg0KPiArICogR05UVEFCT1Bfc3dhcF9ncmFudF9yZWY6IFN3YXAgdGhlIGNvbnRlbnRz
IG9mIHR3byBncmFudCBlbnRyaWVzLg0KPiArICovDQo+ICtzdHJ1Y3QgZ250dGFiX3N3YXBfZ3Jh
bnRfcmVmIHsNCj4gKyAgICAvKiBJTiBwYXJhbWV0ZXJzICovDQo+ICsgICAgZ3JhbnRfcmVmX3Qg
cmVmX2E7DQo+ICsgICAgZ3JhbnRfcmVmX3QgcmVmX2I7DQo+ICsgICAgLyogT1VUIHBhcmFtZXRl
cnMgKi8NCj4gKyAgICBpbnQxNl90IHN0YXR1czsgICAgICAgICAgICAgLyogPT4gZW51bSBncmFu
dF9zdGF0dXMgKi8NCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfc3dhcF9ncmFudF9y
ZWYgZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfc3dhcF9ncmFudF9yZWZfdCk7DQo+ICsNCj4gKy8qDQo+ICsgKiBJc3N1ZSBvbmUgb3Ig
bW9yZSBjYWNoZSBtYWludGVuYW5jZSBvcGVyYXRpb25zIG9uIGEgcG9ydGlvbiBvZiBhDQo+ICsg
KiBwYWdlIGdyYW50ZWQgdG8gdGhlIGNhbGxpbmcgZG9tYWluIGJ5IGEgZm9yZWlnbiBkb21haW4u
DQo+ICsgKi8NCj4gK3N0cnVjdCBnbnR0YWJfY2FjaGVfZmx1c2ggew0KPiArICAgIHVuaW9uIHsN
Cj4gKyAgICAgICAgdWludDY0X3QgZGV2X2J1c19hZGRyOw0KPiArICAgICAgICBncmFudF9yZWZf
dCByZWY7DQo+ICsgICAgfSBhOw0KPiArICAgIHVpbnQxNl90IG9mZnNldDsgLyogb2Zmc2V0IGZy
b20gc3RhcnQgb2YgZ3JhbnQgKi8NCj4gKyAgICB1aW50MTZfdCBsZW5ndGg7IC8qIHNpemUgd2l0
aGluIHRoZSBncmFudCAqLw0KPiArI2RlZmluZSBHTlRUQUJfQ0FDSEVfQ0xFQU4gICAgICAgICAg
KDE8PDApDQo+ICsjZGVmaW5lIEdOVFRBQl9DQUNIRV9JTlZBTCAgICAgICAgICAoMTw8MSkNCj4g
KyNkZWZpbmUgR05UVEFCX0NBQ0hFX1NPVVJDRV9HUkVGICAgICgxPDwzMSkNCj4gKyAgICB1aW50
MzJfdCBvcDsNCj4gK307DQo+ICt0eXBlZGVmIHN0cnVjdCBnbnR0YWJfY2FjaGVfZmx1c2ggZ250
dGFiX2NhY2hlX2ZsdXNoX3Q7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfY2Fj
aGVfZmx1c2hfdCk7DQo+ICsNCj4gKyNlbmRpZiAvKiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9f
ICovDQo+ICsNCj4gKy8qDQo+ICsgKiBCaXRmaWVsZCB2YWx1ZXMgZm9yIGdudHRhYl9tYXBfZ3Jh
bnRfcmVmLmZsYWdzLg0KPiArICovDQo+ICsgLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNj
ZXNzIGJ5IEkvTyBkZXZpY2VzLiAqLw0KPiArI2RlZmluZSBfR05UTUFQX2RldmljZV9tYXAgICAg
ICAoMCkNCj4gKyNkZWZpbmUgR05UTUFQX2RldmljZV9tYXAgICAgICAgKDE8PF9HTlRNQVBfZGV2
aWNlX21hcCkNCj4gKyAvKiBNYXAgdGhlIGdyYW50IGVudHJ5IGZvciBhY2Nlc3MgYnkgaG9zdCBD
UFVzLiAqLw0KPiArI2RlZmluZSBfR05UTUFQX2hvc3RfbWFwICAgICAgICAoMSkNCj4gKyNkZWZp
bmUgR05UTUFQX2hvc3RfbWFwICAgICAgICAgKDE8PF9HTlRNQVBfaG9zdF9tYXApDQo+ICsgLyog
QWNjZXNzZXMgdG8gdGhlIGdyYW50ZWQgZnJhbWUgd2lsbCBiZSByZXN0cmljdGVkIHRvIHJlYWQt
b25seSBhY2Nlc3MuICovDQo+ICsjZGVmaW5lIF9HTlRNQVBfcmVhZG9ubHkgICAgICAgICgyKQ0K
PiArI2RlZmluZSBHTlRNQVBfcmVhZG9ubHkgICAgICAgICAoMTw8X0dOVE1BUF9yZWFkb25seSkN
Cj4gKyAvKg0KPiArICAqIEdOVE1BUF9ob3N0X21hcCBzdWJmbGFnOg0KPiArICAqICAwID0+IFRo
ZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIG9ubHkgYnkgdGhlIGd1ZXN0IE9TLg0KPiArICAqICAx
ID0+IFRoZSBob3N0IG1hcHBpbmcgaXMgdXNhYmxlIGJ5IGd1ZXN0IE9TICsgY3VycmVudCBhcHBs
aWNhdGlvbi4NCj4gKyAgKi8NCj4gKyNkZWZpbmUgX0dOVE1BUF9hcHBsaWNhdGlvbl9tYXAgKDMp
DQo+ICsjZGVmaW5lIEdOVE1BUF9hcHBsaWNhdGlvbl9tYXAgICgxPDxfR05UTUFQX2FwcGxpY2F0
aW9uX21hcCkNCj4gKw0KPiArIC8qDQo+ICsgICogR05UTUFQX2NvbnRhaW5zX3B0ZSBzdWJmbGFn
Og0KPiArICAqICAwID0+IFRoaXMgbWFwIHJlcXVlc3QgY29udGFpbnMgYSBob3N0IHZpcnR1YWwg
YWRkcmVzcy4NCj4gKyAgKiAgMSA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIHRoZSBtYWNo
aW5lIGFkZGVzcyBvZiB0aGUgUFRFIHRvDQo+IHVwZGF0ZS4NCj4gKyAgKi8NCj4gKyNkZWZpbmUg
X0dOVE1BUF9jb250YWluc19wdGUgICAgKDQpDQo+ICsjZGVmaW5lIEdOVE1BUF9jb250YWluc19w
dGUgICAgICgxPDxfR05UTUFQX2NvbnRhaW5zX3B0ZSkNCj4gKw0KPiArI2RlZmluZSBfR05UTUFQ
X2Nhbl9mYWlsICAgICAgICAoNSkNCj4gKyNkZWZpbmUgR05UTUFQX2Nhbl9mYWlsICAgICAgICAg
KDE8PF9HTlRNQVBfY2FuX2ZhaWwpDQo+ICsNCj4gKy8qDQo+ICsgKiBCaXRzIHRvIGJlIHBsYWNl
ZCBpbiBndWVzdCBrZXJuZWwgYXZhaWxhYmxlIFBURSBiaXRzIChhcmNoaXRlY3R1cmUNCj4gKyAq
IGRlcGVuZGVudDsgb25seSBzdXBwb3J0ZWQgd2hlbiBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxf
Yml0cyBpcw0KPiBzZXQpLg0KPiArICovDQo+ICsjZGVmaW5lIF9HTlRNQVBfZ3Vlc3RfYXZhaWww
ICAgICgxNikNCj4gKyNkZWZpbmUgR05UTUFQX2d1ZXN0X2F2YWlsX21hc2sgKCh1aW50MzJfdCl+
MCA8PA0KPiBfR05UTUFQX2d1ZXN0X2F2YWlsMCkNCj4gKw0KPiArLyoNCj4gKyAqIFZhbHVlcyBm
b3IgZXJyb3Igc3RhdHVzIHJldHVybnMuIEFsbCBlcnJvcnMgYXJlIC12ZS4NCj4gKyAqLw0KPiAr
LyogYCBlbnVtIGdyYW50X3N0YXR1cyB7ICovDQo+ICsjZGVmaW5lIEdOVFNUX29rYXkgICAgICAg
ICAgICAgKDApICAvKiBOb3JtYWwgcmV0dXJuLiAgICAgICAgICAgICAgICAgICAgICAgICovDQo+
ICsjZGVmaW5lIEdOVFNUX2dlbmVyYWxfZXJyb3IgICAgKC0xKSAvKiBHZW5lcmFsIHVuZGVmaW5l
ZCBlcnJvci4gICAgICAgICAgICAgICovDQo+ICsjZGVmaW5lIEdOVFNUX2JhZF9kb21haW4gICAg
ICAgKC0yKSAvKiBVbnJlY29nbnNlZCBkb21haW4gaWQuICAgICAgICAgICAgICAgICovDQo+ICsj
ZGVmaW5lIEdOVFNUX2JhZF9nbnRyZWYgICAgICAgKC0zKSAvKiBVbnJlY29nbmlzZWQgb3IgaW5h
cHByb3ByaWF0ZQ0KPiBnbnRyZWYuICovDQo+ICsjZGVmaW5lIEdOVFNUX2JhZF9oYW5kbGUgICAg
ICAgKC00KSAvKiBVbnJlY29nbmlzZWQgb3IgaW5hcHByb3ByaWF0ZQ0KPiBoYW5kbGUuICovDQo+
ICsjZGVmaW5lIEdOVFNUX2JhZF92aXJ0X2FkZHIgICAgKC01KSAvKiBJbmFwcHJvcHJpYXRlIHZp
cnR1YWwgYWRkcmVzcyB0bw0KPiBtYXAuICovDQo+ICsjZGVmaW5lIEdOVFNUX2JhZF9kZXZfYWRk
ciAgICAgKC02KSAvKiBJbmFwcHJvcHJpYXRlIGRldmljZSBhZGRyZXNzIHRvDQo+IHVubWFwLiov
DQo+ICsjZGVmaW5lIEdOVFNUX25vX2RldmljZV9zcGFjZSAgKC03KSAvKiBPdXQgb2Ygc3BhY2Ug
aW4gSS9PIE1NVS4NCj4gKi8NCj4gKyNkZWZpbmUgR05UU1RfcGVybWlzc2lvbl9kZW5pZWQgKC04
KSAvKiBOb3QgZW5vdWdoIHByaXZpbGVnZSBmb3INCj4gb3BlcmF0aW9uLiAgKi8NCj4gKyNkZWZp
bmUgR05UU1RfYmFkX3BhZ2UgICAgICAgICAoLTkpIC8qIFNwZWNpZmllZCBwYWdlIHdhcyBpbnZh
bGlkIGZvciBvcC4gICAgKi8NCj4gKyNkZWZpbmUgR05UU1RfYmFkX2NvcHlfYXJnICAgICgtMTAp
IC8qIGNvcHkgYXJndW1lbnRzIGNyb3NzIHBhZ2UNCj4gYm91bmRhcnkuICAgKi8NCj4gKyNkZWZp
bmUgR05UU1RfYWRkcmVzc190b29fYmlnICgtMTEpIC8qIHRyYW5zZmVyIHBhZ2UgYWRkcmVzcyB0
b28gbGFyZ2UuDQo+ICovDQo+ICsjZGVmaW5lIEdOVFNUX2VhZ2FpbiAgICAgICAgICAoLTEyKSAv
KiBPcGVyYXRpb24gbm90IGRvbmU7IHRyeSBhZ2Fpbi4gICAgICAgICovDQo+ICsvKiBgIH0gKi8N
Cj4gKw0KPiArI2RlZmluZSBHTlRUQUJPUF9lcnJvcl9tc2dzIHsgICAgICAgICAgICAgICAgICAg
XA0KPiArICAgICJva2F5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
PiArICAgICJ1bmRlZmluZWQgZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr
ICAgICJ1bnJlY29nbmlzZWQgZG9tYWluIGlkIiwgICAgICAgICAgICAgICAgICAgXA0KPiArICAg
ICJpbnZhbGlkIGdyYW50IHJlZmVyZW5jZSIsICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJp
bnZhbGlkIG1hcHBpbmcgaGFuZGxlIiwgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJpbnZh
bGlkIHZpcnR1YWwgYWRkcmVzcyIsICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJpbnZhbGlk
IGRldmljZSBhZGRyZXNzIiwgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJubyBzcGFyZSB0
cmFuc2xhdGlvbiBzbG90IGluIHRoZSBJL08gTU1VIiwgXA0KPiArICAgICJwZXJtaXNzaW9uIGRl
bmllZCIsICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJiYWQgcGFnZSIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICJjb3B5IGFyZ3VtZW50cyBjcm9z
cyBwYWdlIGJvdW5kYXJ5IiwgICAgICAgXA0KPiArICAgICJwYWdlIGFkZHJlc3Mgc2l6ZSB0b28g
bGFyZ2UiLCAgICAgICAgICAgICAgXA0KPiArICAgICJvcGVyYXRpb24gbm90IGRvbmU7IHRyeSBh
Z2FpbiIgICAgICAgICAgICAgXA0KPiArfQ0KPiArDQo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElD
X0dSQU5UX1RBQkxFX0hfXyAqLw0KPiArDQo+ICsvKg0KPiArICogTG9jYWwgdmFyaWFibGVzOg0K
PiArICogbW9kZTogQw0KPiArICogYy1maWxlLXN0eWxlOiAiQlNEIg0KPiArICogYy1iYXNpYy1v
ZmZzZXQ6IDQNCj4gKyAqIHRhYi13aWR0aDogNA0KPiArICogaW5kZW50LXRhYnMtbW9kZTogbmls
DQo+ICsgKiBFbmQ6DQo+ICsgKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9p
by9jb25zb2xlLmgNCj4gYi9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vY29uc29sZS5oDQo+IG5ldyBm
aWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLjY0OTYwMTgNCj4gLS0tIC9kZXYvbnVs
bA0KPiArKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vY29uc29sZS5oDQo+IEBAIC0wLDAgKzEs
NTEgQEANCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioNCj4gKioqKioqKioqKioqKioqKioqKioqDQo+ICsgKiBjb25zb2xlLmgNCj4g
KyAqDQo+ICsgKiBDb25zb2xlIEkvTyBpbnRlcmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLg0KPiAr
ICoNCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+IGNvcHkNCj4gKyAqIG9mIHRoaXMgc29mdHdhcmUg
YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bw0K
PiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUNCj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcg0KPiArICog
c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUNCj4gaXMNCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICsgKg0KPiArICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4NCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLg0KPiArICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KPiBFWFBSRVNTIE9SDQo+ICsgKiBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQo+IE1FUkNIQU5U
QUJJTElUWSwNCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PDQo+IEVWRU5UIFNIQUxMIFRIRQ0KPiArICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUw0KPiBPUiBP
VEhFUg0KPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsDQo+IEFSSVNJTkcNCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1INCj4gT1RIRVINCj4gKyAq
IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw
MDUsIEtlaXIgRnJhc2VyDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX1hFTl9QVUJMSUNfSU9f
Q09OU09MRV9IX18NCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0NPTlNPTEVfSF9fDQo+ICsN
Cj4gK3R5cGVkZWYgdWludDMyX3QgWEVOQ09OU19SSU5HX0lEWDsNCj4gKw0KPiArI2RlZmluZSBN
QVNLX1hFTkNPTlNfSURYKGlkeCwgcmluZykgKChpZHgpICYgKHNpemVvZihyaW5nKS0xKSkNCj4g
Kw0KPiArc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlIHsNCj4gKyAgICBjaGFyIGluWzEwMjRdOw0K
PiArICAgIGNoYXIgb3V0WzIwNDhdOw0KPiArICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywg
aW5fcHJvZDsNCj4gKyAgICBYRU5DT05TX1JJTkdfSURYIG91dF9jb25zLCBvdXRfcHJvZDsNCj4g
K307DQo+ICsNCj4gKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fQ09OU09MRV9IX18gKi8NCj4g
Kw0KPiArLyoNCj4gKyAqIExvY2FsIHZhcmlhYmxlczoNCj4gKyAqIG1vZGU6IEMNCj4gKyAqIGMt
ZmlsZS1zdHlsZTogIkJTRCINCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQo+ICsgKiB0YWItd2lk
dGg6IDQNCj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbA0KPiArICogRW5kOg0KPiArICovDQo+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vcmluZy5oIGIvaW5jbHVkZS94ZW4v
cHVibGljL2lvL3JpbmcuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAw
Li4xZDI5Y2MwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2lv
L3JpbmcuaA0KPiBAQCAtMCwwICsxLDMyNiBAQA0KPiArLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqKioqKioq
KioNCj4gKyAqIHJpbmcuaA0KPiArICoNCj4gKyAqIFNoYXJlZCBwcm9kdWNlci1jb25zdW1lciBy
aW5nIG1hY3Jvcy4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiBjb3B5DQo+ICsgKiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8NCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlDQo+ICsgKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3INCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlDQo+IGlzDQo+ICsgKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCj4gRVhQUkVTUyBPUg0K
PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRg0KPiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTw0KPiBFVkVOVCBTSEFMTCBUSEUNCj4g
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMNCj4gT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBBUklTSU5HDQo+ICsgKiBGUk9N
LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S
DQo+IE9USEVSDQo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+ICsgKg0KPiArICog
VGltIERlZWdhbiBhbmQgQW5kcmV3IFdhcmZpZWxkIE5vdmVtYmVyIDIwMDQuDQo+ICsgKi8NCj4g
Kw0KPiArI2lmbmRlZiBfX1hFTl9QVUJMSUNfSU9fUklOR19IX18NCj4gKyNkZWZpbmUgX19YRU5f
UFVCTElDX0lPX1JJTkdfSF9fDQo+ICsNCj4gKyNpbmNsdWRlICIuLi94ZW4tY29tcGF0LmgiDQo+
ICsNCj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwOA0KPiArI2Rl
ZmluZSB4ZW5fbWIoKSAgbWIoKQ0KPiArI2RlZmluZSB4ZW5fcm1iKCkgcm1iKCkNCj4gKyNkZWZp
bmUgeGVuX3dtYigpIHdtYigpDQo+ICsjZW5kaWYNCj4gKw0KPiArdHlwZWRlZiB1bnNpZ25lZCBp
bnQgUklOR19JRFg7DQo+ICsNCj4gKy8qIFJvdW5kIGEgMzItYml0IHVuc2lnbmVkIGNvbnN0YW50
IGRvd24gdG8gdGhlIG5lYXJlc3QgcG93ZXIgb2YgdHdvLiAqLw0KPiArI2RlZmluZSBfX1JEMihf
eCkgICgoKF94KSAmIDB4MDAwMDAwMDIpID8gMHgyICAgICAgICAgICAgICAgICAgOiAoKF94KSAm
IDB4MSkpDQo+ICsjZGVmaW5lIF9fUkQ0KF94KSAgKCgoX3gpICYgMHgwMDAwMDAwYykgPyBfX1JE
MigoX3gpPj4yKTw8MiAgICA6DQo+IF9fUkQyKF94KSkNCj4gKyNkZWZpbmUgX19SRDgoX3gpICAo
KChfeCkgJiAweDAwMDAwMGYwKSA/IF9fUkQ0KChfeCk+PjQpPDw0ICAgIDoNCj4gX19SRDQoX3gp
KQ0KPiArI2RlZmluZSBfX1JEMTYoX3gpICgoKF94KSAmIDB4MDAwMGZmMDApID8gX19SRDgoKF94
KT4+OCk8PDggICAgOg0KPiBfX1JEOChfeCkpDQo+ICsjZGVmaW5lIF9fUkQzMihfeCkgKCgoX3gp
ICYgMHhmZmZmMDAwMCkgPyBfX1JEMTYoKF94KT4+MTYpPDwxNiA6DQo+IF9fUkQxNihfeCkpDQo+
ICsNCj4gKy8qDQo+ICsgKiBDYWxjdWxhdGUgc2l6ZSBvZiBhIHNoYXJlZCByaW5nLCBnaXZlbiB0
aGUgdG90YWwgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUNCj4gKyAqIHJpbmcgYW5kIGluZGV4ZXMg
KF9zeiksIGFuZCB0aGUgbmFtZSB0YWcgb2YgdGhlIHJlcXVlc3QvcmVzcG9uc2UNCj4gc3RydWN0
dXJlLg0KPiArICogQSByaW5nIGNvbnRhaW5zIGFzIG1hbnkgZW50cmllcyBhcyB3aWxsIGZpdCwg
cm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0DQo+ICsgKiBwb3dlciBvZiB0d28gKHNvIHdlIGNh
biBtYXNrIHdpdGggKHNpemUtMSkgdG8gbG9vcCBhcm91bmQpLg0KPiArICovDQo+ICsjZGVmaW5l
IF9fQ09OU1RfUklOR19TSVpFKF9zLCBfc3opIFwNCj4gKyAgICAoX19SRDMyKCgoX3N6KSAtIG9m
ZnNldG9mKHN0cnVjdCBfcyMjX3NyaW5nLCByaW5nKSkgLyBcDQo+ICsJICAgIHNpemVvZigoKHN0
cnVjdCBfcyMjX3NyaW5nICopMCktPnJpbmdbMF0pKSkNCj4gKy8qDQo+ICsgKiBUaGUgc2FtZSBm
b3IgcGFzc2luZyBpbiBhbiBhY3R1YWwgcG9pbnRlciBpbnN0ZWFkIG9mIGEgbmFtZSB0YWcuDQo+
ICsgKi8NCj4gKyNkZWZpbmUgX19SSU5HX1NJWkUoX3MsIF9zeikgXA0KPiArICAgIChfX1JEMzIo
KChfc3opIC0gKExPTkdfUFRSKShfcyktPnJpbmcgKyAoTE9OR19QVFIpKF9zKSkgLyBzaXplb2Yo
KF9zKS0NCj4gPnJpbmdbMF0pKSkNCj4gKw0KPiArLyoNCj4gKyAqIE1hY3JvcyB0byBtYWtlIHRo
ZSBjb3JyZWN0IEMgZGF0YXR5cGVzIGZvciBhIG5ldyBraW5kIG9mIHJpbmcuDQo+ICsgKg0KPiAr
ICogVG8gbWFrZSBhIG5ldyByaW5nIGRhdGF0eXBlLCB5b3UgbmVlZCB0byBoYXZlIHR3byBtZXNz
YWdlIHN0cnVjdHVyZXMsDQo+ICsgKiBsZXQncyBzYXkgcmVxdWVzdF90LCBhbmQgcmVzcG9uc2Vf
dCBhbHJlYWR5IGRlZmluZWQuDQo+ICsgKg0KPiArICogSW4gYSBoZWFkZXIgd2hlcmUgeW91IHdh
bnQgdGhlIHJpbmcgZGF0YXR5cGUgZGVjbGFyZWQsIHlvdSB0aGVuIGRvOg0KPiArICoNCj4gKyAq
ICAgICBERUZJTkVfUklOR19UWVBFUyhteXRhZywgcmVxdWVzdF90LCByZXNwb25zZV90KTsNCj4g
KyAqDQo+ICsgKiBUaGVzZSBleHBhbmQgb3V0IHRvIGdpdmUgeW91IGEgc2V0IG9mIHR5cGVzLCBh
cyB5b3UgY2FuIHNlZSBiZWxvdy4NCj4gKyAqIFRoZSBtb3N0IGltcG9ydGFudCBvZiB0aGVzZSBh
cmU6DQo+ICsgKg0KPiArICogICAgIG15dGFnX3NyaW5nX3QgICAgICAtIFRoZSBzaGFyZWQgcmlu
Zy4NCj4gKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgLSBUaGUgJ2Zyb250JyBoYWxmIG9mIHRo
ZSByaW5nLg0KPiArICogICAgIG15dGFnX2JhY2tfcmluZ190ICAtIFRoZSAnYmFjaycgaGFsZiBv
ZiB0aGUgcmluZy4NCj4gKyAqDQo+ICsgKiBUbyBpbml0aWFsaXplIGEgcmluZyBpbiB5b3VyIGNv
ZGUgeW91IG5lZWQgdG8ga25vdyB0aGUgbG9jYXRpb24gYW5kIHNpemUNCj4gKyAqIG9mIHRoZSBz
aGFyZWQgbWVtb3J5IGFyZWEgKFBBR0VfU0laRSwgZm9yIGluc3RhbmNlKS4gVG8gaW5pdGlhbGlz
ZQ0KPiArICogdGhlIGZyb250IGhhbGY6DQo+ICsgKg0KPiArICogICAgIG15dGFnX2Zyb250X3Jp
bmdfdCBmcm9udF9yaW5nOw0KPiArICogICAgIFNIQVJFRF9SSU5HX0lOSVQoKG15dGFnX3NyaW5n
X3QgKilzaGFyZWRfcGFnZSk7DQo+ICsgKiAgICAgRlJPTlRfUklOR19JTklUKCZmcm9udF9yaW5n
LCAobXl0YWdfc3JpbmdfdCAqKXNoYXJlZF9wYWdlLA0KPiBQQUdFX1NJWkUpOw0KPiArICoNCj4g
KyAqIEluaXRpYWxpemluZyB0aGUgYmFjayBmb2xsb3dzIHNpbWlsYXJseSAobm90ZSB0aGF0IG9u
bHkgdGhlIGZyb250DQo+ICsgKiBpbml0aWFsaXplcyB0aGUgc2hhcmVkIHJpbmcpOg0KPiArICoN
Cj4gKyAqICAgICBteXRhZ19iYWNrX3JpbmdfdCBiYWNrX3Jpbmc7DQo+ICsgKiAgICAgQkFDS19S
SU5HX0lOSVQoJmJhY2tfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFnZSwNCj4gUEFH
RV9TSVpFKTsNCj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIERFRklORV9SSU5HX1RZUEVTKF9fbmFt
ZSwgX19yZXFfdCwgX19yc3BfdCkgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQo+ICsvKiBTaGFyZWQgcmluZyBlbnRyeSAqLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt1bmlvbiBfX25hbWUjI19zcmluZ19lbnRy
eSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg
X19yZXFfdCByZXE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcDQo+ICsgICAgX19yc3BfdCByc3A7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt9OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcDQo+ICsvKiBTaGFyZWQgcmluZyBwYWdlICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICtzdHJ1Y3QgX19uYW1l
IyNfc3JpbmcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQo+ICsgICAgUklOR19JRFggcmVxX3Byb2QsIHJlcV9ldmVudDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgUklOR19JRFggcnNwX3Byb2QsIHJzcF9l
dmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgdW5p
b24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcDQo+ICsgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICB1aW50OF90IHNt
YXJ0cG9sbF9hY3RpdmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg
ICAgICAgIH0gbmV0aWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcDQo+ICsgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICB1aW50
OF90IG1zZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
DQo+ICsgICAgICAgIH0gdGFwaWZfdXNlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgIHVpbnQ4X3QgcHZ0X3BhZFs0XTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgfSBwdnQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQo+ICsgICAgdWludDhfdCBfX3BhZFs0NF07ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgdW5pb24gX19uYW1lIyNfc3Jpbmdf
ZW50cnkgcmluZ1sxXTsgLyogdmFyaWFibGUtbGVuZ3RoICovICAgICAgICAgICBcDQo+ICt9OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsvKiAiRnJvbnQiIGVuZCdzIHBy
aXZhdGUgdmFyaWFibGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+
ICtzdHJ1Y3QgX19uYW1lIyNfZnJvbnRfcmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgUklOR19JRFggcmVxX3Byb2RfcHZ0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgUklOR19JRFgg
cnNwX2NvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQo+ICsgICAgdW5zaWduZWQgaW50IG5yX2VudHM7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgc3RydWN0IF9fbmFtZSMjX3NyaW5nICpz
cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt9OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsvKiAiQmFjayIgZW5kJ3MgcHJpdmF0
ZSB2YXJpYWJsZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICtz
dHJ1Y3QgX19uYW1lIyNfYmFja19yaW5nIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcDQo+ICsgICAgUklOR19JRFggcnNwX3Byb2RfcHZ0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgUklOR19JRFggcmVx
X2NvbnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
DQo+ICsgICAgdW5zaWduZWQgaW50IG5yX2VudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgc3RydWN0IF9fbmFtZSMjX3NyaW5nICpzcmlu
ZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt9OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsvKiBTeW50YWN0aWMgc3VnYXIgKi8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt0eXBl
ZGVmIHN0cnVjdCBfX25hbWUjI19zcmluZyBfX25hbWUjI19zcmluZ190OyAgICAgICAgICAgICAg
ICAgICAgICAgICBcDQo+ICt0eXBlZGVmIHN0cnVjdCBfX25hbWUjI19mcm9udF9yaW5nIF9fbmFt
ZSMjX2Zyb250X3JpbmdfdDsgICAgICAgICAgICAgICBcDQo+ICt0eXBlZGVmIHN0cnVjdCBfX25h
bWUjI19iYWNrX3JpbmcgX19uYW1lIyNfYmFja19yaW5nX3QNCj4gKw0KPiArLyoNCj4gKyAqIE1h
Y3JvcyBmb3IgbWFuaXB1bGF0aW5nIHJpbmdzLg0KPiArICoNCj4gKyAqIEZST05UX1JJTkdfd2hh
dGV2ZXIgd29ya3Mgb24gdGhlICJmcm9udCBlbmQiIG9mIGEgcmluZzogaGVyZQ0KPiArICogcmVx
dWVzdHMgYXJlIHB1c2hlZCBvbiB0byB0aGUgcmluZyBhbmQgcmVzcG9uc2VzIHRha2VuIG9mZiBp
dC4NCj4gKyAqDQo+ICsgKiBCQUNLX1JJTkdfd2hhdGV2ZXIgd29ya3Mgb24gdGhlICJiYWNrIGVu
ZCIgb2YgYSByaW5nOiBoZXJlDQo+ICsgKiByZXF1ZXN0cyBhcmUgdGFrZW4gb2ZmIHRoZSByaW5n
IGFuZCByZXNwb25zZXMgcHV0IG9uLg0KPiArICoNCj4gKyAqIE4uQi4gdGhlc2UgbWFjcm9zIGRv
IE5PIElOVEVSTE9DS1MgT1IgRkxPVyBDT05UUk9MLg0KPiArICogVGhpcyBpcyBPSyBpbiAxLWZv
ci0xIHJlcXVlc3QtcmVzcG9uc2Ugc2l0dWF0aW9ucyB3aGVyZSB0aGUNCj4gKyAqIHJlcXVlc3Rv
ciAoZnJvbnQgZW5kKSBuZXZlciBoYXMgbW9yZSB0aGFuIFJJTkdfU0laRSgpLTENCj4gKyAqIG91
dHN0YW5kaW5nIHJlcXVlc3RzLg0KPiArICovDQo+ICsNCj4gKy8qIEluaXRpYWxpc2luZyBlbXB0
eSByaW5ncyAqLw0KPiArI2RlZmluZSBTSEFSRURfUklOR19JTklUKF9zKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIChfcyktPnJlcV9wcm9kICA9
IChfcyktPnJzcF9wcm9kICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr
ICAgIChfcyktPnJlcV9ldmVudCA9IChfcyktPnJzcF9ldmVudCA9IDE7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXA0KPiArICAgICh2b2lkKW1lbXNldCgoX3MpLT5wdnQucHZ0X3BhZCwg
MCwgc2l6ZW9mKChfcyktPnB2dC5wdnRfcGFkKSk7ICAgICAgXA0KPiArICAgICh2b2lkKW1lbXNl
dCgoX3MpLT5fX3BhZCwgMCwgc2l6ZW9mKChfcyktPl9fcGFkKSk7ICAgICAgICAgICAgICAgICAg
XA0KPiArfSB3aGlsZSgwKQ0KPiArDQo+ICsjZGVmaW5lIEZST05UX1JJTkdfSU5JVChfciwgX3Ms
IF9fc2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF9yKS0+
cmVxX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcDQo+ICsgICAgKF9yKS0+cnNwX2NvbnMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF9yKS0+bnJfZW50cyA9IF9fUklO
R19TSVpFKF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg
KF9yKS0+c3JpbmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcDQo+ICt9IHdoaWxlICgwKQ0KPiArDQo+ICsjZGVmaW5lIEJBQ0tfUklOR19J
TklUKF9yLCBfcywgX19zaXplKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+
ICsgICAgKF9yKS0+cnNwX3Byb2RfcHZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF9yKS0+cmVxX2NvbnMgPSAwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF9yKS0+bnJf
ZW50cyA9IF9fUklOR19TSVpFKF9zLCBfX3NpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQo+ICsgICAgKF9yKS0+c3JpbmcgPSAoX3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICt9IHdoaWxlICgwKQ0KPiArDQo+ICsvKiBIb3cg
YmlnIGlzIHRoaXMgcmluZz8gKi8NCj4gKyNkZWZpbmUgUklOR19TSVpFKF9yKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAoKF9yKS0+
bnJfZW50cykNCj4gKw0KPiArLyogTnVtYmVyIG9mIGZyZWUgcmVxdWVzdHMgKGZvciB1c2Ugb24g
ZnJvbnQgc2lkZSBvbmx5KS4gKi8NCj4gKyNkZWZpbmUgUklOR19GUkVFX1JFUVVFU1RTKF9yKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAoUklOR19T
SVpFKF9yKSAtICgoX3IpLT5yZXFfcHJvZF9wdnQgLSAoX3IpLT5yc3BfY29ucykpDQo+ICsNCj4g
Ky8qIFRlc3QgaWYgdGhlcmUgaXMgYW4gZW1wdHkgc2xvdCBhdmFpbGFibGUgb24gdGhlIGZyb250
IHJpbmcuDQo+ICsgKiAoVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZnJvbSB0aGUgZnJvbnQuICkN
Cj4gKyAqLw0KPiArI2RlZmluZSBSSU5HX0ZVTEwoX3IpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIChSSU5HX0ZSRUVfUkVRVUVTVFMo
X3IpID09IDApDQo+ICsNCj4gKy8qIFRlc3QgaWYgdGhlcmUgYXJlIG91dHN0YW5kaW5nIG1lc3Nh
Z2VzIHRvIGJlIHByb2Nlc3NlZCBvbiBhIHJpbmcuICovDQo+ICsjZGVmaW5lIFJJTkdfSEFTX1VO
Q09OU1VNRURfUkVTUE9OU0VTKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+
ICsgICAgKChfciktPnNyaW5nLT5yc3BfcHJvZCAtIChfciktPnJzcF9jb25zKQ0KPiArDQo+ICsj
aWZkZWYgX19HTlVDX18NCj4gKyNkZWZpbmUgUklOR19IQVNfVU5DT05TVU1FRF9SRVFVRVNUUyhf
cikgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB1bnNpZ25lZCBpbnQg
cmVxID0gKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9yKS0+cmVxX2NvbnM7ICAgICAgICAgIFwN
Cj4gKyAgICB1bnNpZ25lZCBpbnQgcnNwID0gUklOR19TSVpFKF9yKSAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgKChfciktPnJlcV9jb25zIC0gKF9yKS0+
cnNwX3Byb2RfcHZ0KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICByZXEgPCBy
c3AgPyByZXEgOiByc3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCj4gK30pDQo+ICsjZWxzZQ0KPiArLyogU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGhvdXQg
dGhlIG5pY2UgR0NDICh7IC4uLiB9KSBzeW50YXguICovDQo+ICsjZGVmaW5lIFJJTkdfSEFTX1VO
Q09OU1VNRURfUkVRVUVTVFMoX3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+
ICsgICAgKCgoKF9yKS0+c3JpbmctPnJlcV9wcm9kIC0gKF9yKS0+cmVxX2NvbnMpIDwgICAgICAg
ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAoUklOR19TSVpFKF9yKSAtICgoX3IpLT5yZXFf
Y29ucyAtIChfciktPnJzcF9wcm9kX3B2dCkpKSA/ICAgICAgICBcDQo+ICsgICAgICgoX3IpLT5z
cmluZy0+cmVxX3Byb2QgLSAoX3IpLT5yZXFfY29ucykgOiAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQo+ICsgICAgIChSSU5HX1NJWkUoX3IpIC0gKChfciktPnJlcV9jb25zIC0gKF9yKS0+cnNw
X3Byb2RfcHZ0KSkpDQo+ICsjZW5kaWYNCj4gKw0KPiArLyogRGlyZWN0IGFjY2VzcyB0byBpbmRp
dmlkdWFsIHJpbmcgZWxlbWVudHMsIGJ5IGluZGV4LiAqLw0KPiArI2RlZmluZSBSSU5HX0dFVF9S
RVFVRVNUKF9yLCBfaWR4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
PiArICAgICgmKChfciktPnNyaW5nLT5yaW5nWygoX2lkeCkgJiAoUklOR19TSVpFKF9yKSAtIDEp
KV0ucmVxKSkNCj4gKw0KPiArLyoNCj4gKyAqIEdldCBhIGxvY2FsIGNvcHkgb2YgYSByZXF1ZXN0
Lg0KPiArICoNCj4gKyAqIFVzZSB0aGlzIGluIHByZWZlcmVuY2UgdG8gUklOR19HRVRfUkVRVUVT
VCgpIHNvIGFsbCBwcm9jZXNzaW5nIGlzDQo+ICsgKiBkb25lIG9uIGEgbG9jYWwgY29weSB0aGF0
IGNhbm5vdCBiZSBtb2RpZmllZCBieSB0aGUgb3RoZXIgZW5kLg0KPiArICoNCj4gKyAqIE5vdGUg
dGhhdCBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01ODE0NSBt
YXkNCj4gY2F1c2UgdGhpcw0KPiArICogdG8gYmUgaW5lZmZlY3RpdmUgd2hlcmUgX3JlcSBpcyBh
IHN0cnVjdCB3aGljaCBjb25zaXN0cyBvZiBvbmx5IGJpdGZpZWxkcy4NCj4gKyAqLw0KPiArI2Rl
ZmluZSBSSU5HX0NPUFlfUkVRVUVTVChfciwgX2lkeCwgX3JlcSkgZG8gew0KPiAJXA0KPiArCS8q
IFVzZSB2b2xhdGlsZSB0byBmb3JjZSB0aGUgY29weSBpbnRvIF9yZXEuICovCQkJXA0KPiArCSoo
X3JlcSkgPSAqKHZvbGF0aWxlIHR5cGVvZihfcmVxKSlSSU5HX0dFVF9SRVFVRVNUKF9yLCBfaWR4
KTsNCj4gCVwNCj4gK30gd2hpbGUgKDApDQo+ICsNCj4gKyNkZWZpbmUgUklOR19HRVRfUkVTUE9O
U0UoX3IsIF9pZHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg
ICAoJigoX3IpLT5zcmluZy0+cmluZ1soKF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJz
cCkpDQo+ICsNCj4gKy8qIExvb3AgdGVybWluYXRpb24gY29uZGl0aW9uOiBXb3VsZCB0aGUgc3Bl
Y2lmaWVkIGluZGV4IG92ZXJmbG93IHRoZQ0KPiByaW5nPyAqLw0KPiArI2RlZmluZSBSSU5HX1JF
UVVFU1RfQ09OU19PVkVSRkxPVyhfciwgX2NvbnMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
XA0KPiArICAgICgoKF9jb25zKSAtIChfciktPnJzcF9wcm9kX3B2dCkgPj0gUklOR19TSVpFKF9y
KSkNCj4gKw0KPiArLyogSWxsLWJlaGF2ZWQgZnJvbnRlbmQgZGV0ZXJtaW5hdGlvbjogQ2FuIHRo
ZXJlIGJlIHRoaXMgbWFueSByZXF1ZXN0cz8NCj4gKi8NCj4gKyNkZWZpbmUgUklOR19SRVFVRVNU
X1BST0RfT1ZFUkZMT1coX3IsIF9wcm9kKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g
KyAgICAoKChfcHJvZCkgLSAoX3IpLT5yc3BfcHJvZF9wdnQpID4gUklOR19TSVpFKF9yKSkNCj4g
Kw0KPiArI2RlZmluZSBSSU5HX1BVU0hfUkVRVUVTVFMoX3IpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHhlbl93bWIoKTsgLyogYmFjayBzZWVzIHJl
cXVlc3RzIC9iZWZvcmUvIHVwZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gXA0KPiArICAgIChfcikt
PnNyaW5nLT5yZXFfcHJvZCA9IChfciktPnJlcV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAg
ICAgICAgXA0KPiArfSB3aGlsZSAoMCkNCj4gKw0KPiArI2RlZmluZSBSSU5HX1BVU0hfUkVTUE9O
U0VTKF9yKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg
IHhlbl93bWIoKTsgLyogZnJvbnQgc2VlcyByZXNwcyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2Vy
IGluZGV4ICovICAgXA0KPiArICAgIChfciktPnNyaW5nLT5yc3BfcHJvZCA9IChfciktPnJzcF9w
cm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArfSB3aGlsZSAoMCkNCj4gKw0K
PiArLyoNCj4gKyAqIE5vdGlmaWNhdGlvbiBob2xkLW9mZiAocmVxX2V2ZW50IGFuZCByc3BfZXZl
bnQpOg0KPiArICoNCj4gKyAqIFdoZW4gcXVldWVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzIG9u
IGEgc2hhcmVkIHJpbmcsIGl0IG1heSBub3QNCj4gYWx3YXlzIGJlDQo+ICsgKiBuZWNlc3Nhcnkg
dG8gbm90aWZ5IHRoZSByZW1vdGUgZW5kLiBGb3IgZXhhbXBsZSwgaWYgcmVxdWVzdHMgYXJlIGlu
IGZsaWdodA0KPiArICogaW4gYSBiYWNrZW5kLCB0aGUgZnJvbnQgbWF5IGJlIGFibGUgdG8gcXVl
dWUgZnVydGhlciByZXF1ZXN0cyB3aXRob3V0DQo+ICsgKiBub3RpZnlpbmcgdGhlIGJhY2sgKGlm
IHRoZSBiYWNrIGNoZWNrcyBmb3IgbmV3IHJlcXVlc3RzIHdoZW4gaXQgcXVldWVzDQo+ICsgKiBy
ZXNwb25zZXMpLg0KPiArICoNCj4gKyAqIFdoZW4gZW5xdWV1aW5nIHJlcXVlc3RzIG9yIHJlc3Bv
bnNlczoNCj4gKyAqDQo+ICsgKiAgVXNlIFJJTkdfUFVTSF97UkVRVUVTVFMsUkVTUE9OU0VTfV9B
TkRfQ0hFQ0tfTk9USUZZKCkuIFRoZQ0KPiBzZWNvbmQgYXJndW1lbnQNCj4gKyAqICBpcyBhIGJv
b2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVlIGluZGljYXRlcyB0aGF0IHRoZSByZWNlaXZlciByZXF1
aXJlcyBhbg0KPiArICogIGFzeW5jaHJvbm91cyBub3RpZmljYXRpb24uDQo+ICsgKg0KPiArICog
QWZ0ZXIgZGVxdWV1aW5nIHJlcXVlc3RzIG9yIHJlc3BvbnNlcyAoYmVmb3JlIHNsZWVwaW5nIHRo
ZSBjb25uZWN0aW9uKToNCj4gKyAqDQo+ICsgKiAgVXNlIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JF
UVVFU1RTKCkgb3INCj4gUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkuDQo+ICsgKiAg
VGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlLiBUcnVlIGluZGlj
YXRlcyB0aGF0IHRoZXJlDQo+ICsgKiAgYXJlIHBlbmRpbmcgbWVzc2FnZXMgb24gdGhlIHJpbmcg
KGkuZS4sIHRoZSBjb25uZWN0aW9uIHNob3VsZCBub3QgYmUgcHV0DQo+ICsgKiAgdG8gc2xlZXAp
Lg0KPiArICoNCj4gKyAqICBUaGVzZSBtYWNyb3Mgd2lsbCBzZXQgdGhlIHJlcV9ldmVudC9yc3Bf
ZXZlbnQgZmllbGQgdG8gdHJpZ2dlciBhDQo+ICsgKiAgbm90aWZpY2F0aW9uIG9uIHRoZSB2ZXJ5
IG5leHQgbWVzc2FnZSB0aGF0IGlzIGVucXVldWVkLiBJZiB5b3Ugd2FudCB0bw0KPiArICogIGNy
ZWF0ZSBiYXRjaGVzIG9mIHdvcmsgKGkuZS4sIG9ubHkgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBh
ZnRlciBzZXZlcmFsDQo+ICsgKiAgbWVzc2FnZXMgaGF2ZSBiZWVuIGVucXVldWVkKSB0aGVuIHlv
dSB3aWxsIG5lZWQgdG8gY3JlYXRlIGENCj4gY3VzdG9taXNlZA0KPiArICogIHZlcnNpb24gb2Yg
dGhlIEZJTkFMX0NIRUNLIG1hY3JvIGluIHlvdXIgb3duIGNvZGUsIHdoaWNoIHNldHMgdGhlDQo+
IGV2ZW50DQo+ICsgKiAgZmllbGQgYXBwcm9wcmlhdGVseS4NCj4gKyAqLw0KPiArDQo+ICsjZGVm
aW5lIFJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hFQ0tfTk9USUZZKF9yLCBfbm90aWZ5KSBkbyB7
DQo+IFwNCj4gKyAgICBSSU5HX0lEWCBfX29sZCA9IChfciktPnNyaW5nLT5yZXFfcHJvZDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBSSU5HX0lEWCBfX25ldyA9IChfcikt
PnJlcV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB4
ZW5fd21iKCk7IC8qIGJhY2sgc2VlcyByZXF1ZXN0cyAvYmVmb3JlLyB1cGRhdGVkIHByb2R1Y2Vy
IGluZGV4ICovIFwNCj4gKyAgICAoX3IpLT5zcmluZy0+cmVxX3Byb2QgPSBfX25ldzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB4ZW5fbWIoKTsgLyogYmFj
ayBzZWVzIG5ldyByZXF1ZXN0cyAvYmVmb3JlLyB3ZSBjaGVjayByZXFfZXZlbnQgKi8gIFwNCj4g
KyAgICAoX25vdGlmeSkgPSAoKFJJTkdfSURYKShfX25ldyAtIChfciktPnNyaW5nLT5yZXFfZXZl
bnQpIDwgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgKFJJTkdfSURYKShfX25ldyAt
IF9fb2xkKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gK30gd2hpbGUgKDApDQo+
ICsNCj4gKyNkZWZpbmUgUklOR19QVVNIX1JFU1BPTlNFU19BTkRfQ0hFQ0tfTk9USUZZKF9yLCBf
bm90aWZ5KSBkbyB7DQo+IFwNCj4gKyAgICBSSU5HX0lEWCBfX29sZCA9IChfciktPnNyaW5nLT5y
c3BfcHJvZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBSSU5HX0lEWCBf
X25ldyA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwNCj4gKyAgICB4ZW5fd21iKCk7IC8qIGZyb250IHNlZXMgcmVzcHMgL2JlZm9yZS8gdXBkYXRl
ZCBwcm9kdWNlciBpbmRleCAqLyAgIFwNCj4gKyAgICAoX3IpLT5zcmluZy0+cnNwX3Byb2QgPSBf
X25ldzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB4ZW5f
bWIoKTsgLyogZnJvbnQgc2VlcyBuZXcgcmVzcHMgL2JlZm9yZS8gd2UgY2hlY2sgcnNwX2V2ZW50
ICovICAgIFwNCj4gKyAgICAoX25vdGlmeSkgPSAoKFJJTkdfSURYKShfX25ldyAtIChfciktPnNy
aW5nLT5yc3BfZXZlbnQpIDwgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgKFJJTkdf
SURYKShfX25ldyAtIF9fb2xkKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gK30g
d2hpbGUgKDApDQo+ICsNCj4gKyNkZWZpbmUgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMo
X3IsIF93b3JrX3RvX2RvKSBkbyB7DQo+IFwNCj4gKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19I
QVNfVU5DT05TVU1FRF9SRVFVRVNUUyhfcik7ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBp
ZiAoX3dvcmtfdG9fZG8pIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwNCj4gKyAgICAoX3IpLT5zcmluZy0+cmVxX2V2ZW50ID0gKF9yKS0+cmVxX2Nv
bnMgKyAxOyAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB4ZW5fbWIoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g
KyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19IQVNfVU5DT05TVU1FRF9SRVFVRVNUUyhfcik7ICAg
ICAgICAgICAgICAgICAgIFwNCj4gK30gd2hpbGUgKDApDQo+ICsNCj4gKyNkZWZpbmUgUklOR19G
SU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKF9yLCBfd29ya190b19kbykgZG8gew0KPiBcDQo+ICsg
ICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VOQ09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAg
ICAgICAgICAgICAgICBcDQo+ICsgICAgaWYgKF93b3JrX3RvX2RvKSBicmVhazsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF9yKS0+c3Jpbmct
PnJzcF9ldmVudCA9IChfciktPnJzcF9jb25zICsgMTsgICAgICAgICAgICAgICAgICAgICAgICBc
DQo+ICsgICAgeGVuX21iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKF93b3JrX3RvX2RvKSA9IFJJTkdfSEFTX1VO
Q09OU1VNRURfUkVTUE9OU0VTKF9yKTsgICAgICAgICAgICAgICAgICBcDQo+ICt9IHdoaWxlICgw
KQ0KPiArDQo+ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1JJTkdfSF9fICovDQo+ICsNCj4g
Ky8qDQo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6DQo+ICsgKiBtb2RlOiBDDQo+ICsgKiBjLWZpbGUt
c3R5bGU6ICJCU0QiDQo+ICsgKiBjLWJhc2ljLW9mZnNldDogNA0KPiArICogdGFiLXdpZHRoOiA0
DQo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCj4gKyAqIEVuZDoNCj4gKyAqLw0KPiBkaWZm
IC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2lvL3hlbmJ1cy5oDQo+IGIvaW5jbHVkZS94ZW4v
cHVibGljL2lvL3hlbmJ1cy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAw
MDAuLjkyN2Y5ZGINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMv
aW8veGVuYnVzLmgNCj4gQEAgLTAsMCArMSw4MCBAQA0KPiArLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqKioq
KioqKg0KPiArICogeGVuYnVzLmgNCj4gKyAqDQo+ICsgKiBYZW5idXMgcHJvdG9jb2wgZGV0YWls
cy4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiBjb3B5DQo+ICsgKiBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8NCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlDQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IN
Cj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlDQo+IGlzDQo+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCj4gRVhQUkVTUyBPUg0KPiArICogSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KPiBN
RVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTw0KPiBFVkVOVCBTSEFMTCBUSEUNCj4gKyAqIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMN
Cj4gT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBBUklTSU5HDQo+ICsgKiBGUk9NLCBPVVQgT0Yg
T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQo+IE9USEVS
DQo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+ICsgKg0KPiArICogQ29weXJpZ2h0
IChDKSAyMDA1IFhlblNvdXJjZSBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfWEVOX1BV
QkxJQ19JT19YRU5CVVNfSA0KPiArI2RlZmluZSBfWEVOX1BVQkxJQ19JT19YRU5CVVNfSA0KPiAr
DQo+ICsvKg0KPiArICogVGhlIHN0YXRlIG9mIGVpdGhlciBlbmQgb2YgdGhlIFhlbmJ1cywgaS5l
LiB0aGUgY3VycmVudCBjb21tdW5pY2F0aW9uDQo+ICsgKiBzdGF0dXMgb2YgaW5pdGlhbGlzYXRp
b24gYWNyb3NzIHRoZSBidXMuICBTdGF0ZXMgaGVyZSBpbXBseSBub3RoaW5nIGFib3V0DQo+ICsg
KiB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUg
a2VybmVsJ3MgZGV2aWNlDQo+ICsgKiBsYXllcnMuDQo+ICsgKi8NCj4gK2VudW0geGVuYnVzX3N0
YXRlIHsNCj4gKyAgICBYZW5idXNTdGF0ZVVua25vd24gICAgICAgPSAwLA0KPiArDQo+ICsgICAg
WGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgID0gMSwNCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICog
SW5pdFdhaXQ6IEZpbmlzaGVkIGVhcmx5IGluaXRpYWxpc2F0aW9uIGJ1dCB3YWl0aW5nIGZvciBp
bmZvcm1hdGlvbg0KPiArICAgICAqIGZyb20gdGhlIHBlZXIgb3IgaG90cGx1ZyBzY3JpcHRzLg0K
PiArICAgICAqLw0KPiArICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQgICAgICA9IDIsDQo+ICsNCj4g
KyAgICAvKg0KPiArICAgICAqIEluaXRpYWxpc2VkOiBXYWl0aW5nIGZvciBhIGNvbm5lY3Rpb24g
ZnJvbSB0aGUgcGVlci4NCj4gKyAgICAgKi8NCj4gKyAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2Vk
ICAgPSAzLA0KPiArDQo+ICsgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQgICAgID0gNCwNCj4gKw0K
PiArICAgIC8qDQo+ICsgICAgICogQ2xvc2luZzogVGhlIGRldmljZSBpcyBiZWluZyBjbG9zZWQg
ZHVlIHRvIGFuIGVycm9yIG9yIGFuIHVucGx1ZyBldmVudC4NCj4gKyAgICAgKi8NCj4gKyAgICBY
ZW5idXNTdGF0ZUNsb3NpbmcgICAgICAgPSA1LA0KPiArDQo+ICsgICAgWGVuYnVzU3RhdGVDbG9z
ZWQgICAgICAgID0gNiwNCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogUmVjb25maWd1cmluZzog
VGhlIGRldmljZSBpcyBiZWluZyByZWNvbmZpZ3VyZWQuDQo+ICsgICAgICovDQo+ICsgICAgWGVu
YnVzU3RhdGVSZWNvbmZpZ3VyaW5nID0gNywNCj4gKw0KPiArICAgIFhlbmJ1c1N0YXRlUmVjb25m
aWd1cmVkICA9IDgNCj4gK307DQo+ICt0eXBlZGVmIGVudW0geGVuYnVzX3N0YXRlIFhlbmJ1c1N0
YXRlOw0KPiArDQo+ICsjZW5kaWYgLyogX1hFTl9QVUJMSUNfSU9fWEVOQlVTX0ggKi8NCj4gKw0K
PiArLyoNCj4gKyAqIExvY2FsIHZhcmlhYmxlczoNCj4gKyAqIG1vZGU6IEMNCj4gKyAqIGMtZmls
ZS1zdHlsZTogIkJTRCINCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0DQo+ICsgKiB0YWItd2lkdGg6
IDQNCj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbA0KPiArICogRW5kOg0KPiArICovDQo+IGRp
ZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaCBiL2luY2x1ZGUveGVuL3B1Ymxp
Yy90cmFjZS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLjk1YjAw
ZTgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaA0K
PiBAQCAtMCwwICsxLDMzNyBAQA0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqKioqKioqKioNCj4gKyAq
IGluY2x1ZGUvcHVibGljL3RyYWNlLmgNCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiBj
b3B5DQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8NCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlDQo+ICsg
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3INCj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlDQo+IGlzDQo+ICsgKiBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0K
PiArICoNCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCj4g
RVhQUkVTUyBPUg0KPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRg0KPiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTw0KPiBFVkVOVCBT
SEFMTCBUSEUNCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMNCj4gT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBBUklTSU5H
DQo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SDQo+IE9USEVSDQo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+
ICsgKg0KPiArICogTWFyayBXaWxsaWFtc29uLCAoQykgMjAwNCBJbnRlbCBSZXNlYXJjaCBDYW1i
cmlkZ2UNCj4gKyAqIENvcHlyaWdodCAoQykgMjAwNSBCaW4gUmVuDQo+ICsgKi8NCj4gKw0KPiAr
I2lmbmRlZiBfX1hFTl9QVUJMSUNfVFJBQ0VfSF9fDQo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19U
UkFDRV9IX18NCj4gKw0KPiArI2RlZmluZSBUUkFDRV9FWFRSQV9NQVggICAgNw0KPiArI2RlZmlu
ZSBUUkFDRV9FWFRSQV9TSElGVCAyOA0KPiArDQo+ICsvKiBUcmFjZSBjbGFzc2VzICovDQo+ICsj
ZGVmaW5lIFRSQ19DTFNfU0hJRlQgMTYNCj4gKyNkZWZpbmUgVFJDX0dFTiAgICAgIDB4MDAwMWYw
MDAgICAgLyogR2VuZXJhbCB0cmFjZSAgICAgICAgICAgICovDQo+ICsjZGVmaW5lIFRSQ19TQ0hF
RCAgICAweDAwMDJmMDAwICAgIC8qIFhlbiBTY2hlZHVsZXIgdHJhY2UgICAgICAqLw0KPiArI2Rl
ZmluZSBUUkNfRE9NME9QICAgMHgwMDA0ZjAwMCAgICAvKiBYZW4gRE9NMCBvcGVyYXRpb24gdHJh
Y2UgKi8NCj4gKyNkZWZpbmUgVFJDX0hWTSAgICAgIDB4MDAwOGYwMDAgICAgLyogWGVuIEhWTSB0
cmFjZSAgICAgICAgICAgICovDQo+ICsjZGVmaW5lIFRSQ19NRU0gICAgICAweDAwMTBmMDAwICAg
IC8qIFhlbiBtZW1vcnkgdHJhY2UgICAgICAgICAqLw0KPiArI2RlZmluZSBUUkNfUFYgICAgICAg
MHgwMDIwZjAwMCAgICAvKiBYZW4gUFYgdHJhY2VzICAgICAgICAgICAgKi8NCj4gKyNkZWZpbmUg
VFJDX1NIQURPVyAgIDB4MDA0MGYwMDAgICAgLyogWGVuIHNoYWRvdyB0cmFjaW5nICAgICAgICov
DQo+ICsjZGVmaW5lIFRSQ19IVyAgICAgICAweDAwODBmMDAwICAgIC8qIFhlbiBoYXJkd2FyZS1y
ZWxhdGVkIHRyYWNlcyAqLw0KPiArI2RlZmluZSBUUkNfR1VFU1QgICAgMHgwODAwZjAwMCAgICAv
KiBHdWVzdC1nZW5lcmF0ZWQgdHJhY2VzICAgKi8NCj4gKyNkZWZpbmUgVFJDX0FMTCAgICAgIDB4
MGZmZmYwMDANCj4gKyNkZWZpbmUgVFJDX0hEX1RPX0VWRU5UKHgpICgoeCkmMHgwZmZmZmZmZikN
Cj4gKyNkZWZpbmUgVFJDX0hEX0NZQ0xFX0ZMQUcgKDFVTDw8MzEpDQo+ICsjZGVmaW5lIFRSQ19I
RF9JTkNMVURFU19DWUNMRV9DT1VOVCh4KSAoICEhKCAoeCkgJg0KPiBUUkNfSERfQ1lDTEVfRkxB
RyApICkNCj4gKyNkZWZpbmUgVFJDX0hEX0VYVFJBKHgpDQo+ICgoKHgpPj5UUkFDRV9FWFRSQV9T
SElGVCkmVFJBQ0VfRVhUUkFfTUFYKQ0KPiArDQo+ICsvKiBUcmFjZSBzdWJjbGFzc2VzICovDQo+
ICsjZGVmaW5lIFRSQ19TVUJDTFNfU0hJRlQgMTINCj4gKw0KPiArLyogdHJhY2Ugc3ViY2xhc3Nl
cyBmb3IgU1ZNICovDQo+ICsjZGVmaW5lIFRSQ19IVk1fRU5UUllFWElUICAgMHgwMDA4MTAwMCAg
IC8qIFZNRU5UUlkgYW5kICNWTUVYSVQNCj4gKi8NCj4gKyNkZWZpbmUgVFJDX0hWTV9IQU5ETEVS
ICAgICAweDAwMDgyMDAwICAgLyogdmFyaW91cyBIVk0gaGFuZGxlcnMgICAgICAqLw0KPiArI2Rl
ZmluZSBUUkNfSFZNX0VNVUwgICAgICAgIDB4MDAwODQwMDAgICAvKiBlbXVsYXRlZCBkZXZpY2Vz
ICovDQo+ICsNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX01JTiAgICAgICAweDAwMDIxMDAwICAgLyog
SnVzdCBydW5zdGF0ZSBjaGFuZ2VzICovDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9DTEFTUyAgICAg
MHgwMDAyMjAwMCAgIC8qIFNjaGVkdWxlci1zcGVjaWZpYyAgICAqLw0KPiArI2RlZmluZSBUUkNf
U0NIRURfVkVSQk9TRSAgIDB4MDAwMjgwMDAgICAvKiBNb3JlIGluY2x1c2l2ZSBzY2hlZHVsaW5n
DQo+ICovDQo+ICsNCj4gKy8qDQo+ICsgKiBUaGUgaGlnaGVzdCAzIGJpdHMgb2YgdGhlIGxhc3Qg
MTIgYml0cyBvZiBUUkNfU0NIRURfQ0xBU1MgYWJvdmUgYXJlDQo+ICsgKiByZXNlcnZlZCBmb3Ig
ZW5jb2Rpbmcgd2hhdCBzY2hlZHVsZXIgcHJvZHVjZWQgdGhlIGluZm9ybWF0aW9uLiBUaGUNCj4g
KyAqIGFjdHVhbCBldmVudCBpcyBlbmNvZGVkIGluIHRoZSBsYXN0IDkgYml0cy4NCj4gKyAqDQo+
ICsgKiBUaGlzIG1lYW5zIHdlIGhhdmUgOCBzY2hlZHVsaW5nIElEcyBhdmFpbGFibGUgKHdoaWNo
IG1lYW5zIGF0IG1vc3QgOA0KPiArICogc2NoZWR1bGVycyBnZW5lcmF0aW5nIGV2ZW50cykgYW5k
LCBpbiBlYWNoIHNjaGVkdWxlciwgdXAgdG8gNTEyDQo+ICsgKiBkaWZmZXJlbnQgZXZlbnRzLg0K
PiArICovDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9JRF9CSVRTIDMNCj4gKyNkZWZpbmUgVFJDX1ND
SEVEX0lEX1NISUZUIChUUkNfU1VCQ0xTX1NISUZUIC0gVFJDX1NDSEVEX0lEX0JJVFMpDQo+ICsj
ZGVmaW5lIFRSQ19TQ0hFRF9JRF9NQVNLICgoKDFVTDw8VFJDX1NDSEVEX0lEX0JJVFMpIC0gMSkg
PDwNCj4gVFJDX1NDSEVEX0lEX1NISUZUKQ0KPiArI2RlZmluZSBUUkNfU0NIRURfRVZUX01BU0sg
KH4oVFJDX1NDSEVEX0lEX01BU0spKQ0KPiArDQo+ICsvKiBQZXItc2NoZWR1bGVyIElEcywgdG8g
aWRlbnRpZnkgc2NoZWR1bGVyIHNwZWNpZmljIGV2ZW50cyAqLw0KPiArI2RlZmluZSBUUkNfU0NI
RURfQ1NDSEVEICAgMA0KPiArI2RlZmluZSBUUkNfU0NIRURfQ1NDSEVEMiAgMQ0KPiArLyogI2Rl
ZmluZSBYRU5fU0NIRURVTEVSX1NFREYgMiAoUmVtb3ZlZCkgKi8NCj4gKyNkZWZpbmUgVFJDX1ND
SEVEX0FSSU5DNjUzIDMNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1JURFMgICAgIDQNCj4gKw0KPiAr
LyogUGVyLXNjaGVkdWxlciB0cmFjaW5nICovDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9DTEFTU19F
VlQoX2MsIF9lKSBcDQo+ICsgICggKCBUUkNfU0NIRURfQ0xBU1MgfCBcDQo+ICsgICAgICAoKFRS
Q19TQ0hFRF8jI19jIDw8IFRSQ19TQ0hFRF9JRF9TSElGVCkgJiBUUkNfU0NIRURfSURfTUFTSykN
Cj4gKSArIFwNCj4gKyAgICAoX2UgJiBUUkNfU0NIRURfRVZUX01BU0spICkNCj4gKw0KPiArLyog
VHJhY2UgY2xhc3NlcyBmb3IgRE9NMCBvcGVyYXRpb25zICovDQo+ICsjZGVmaW5lIFRSQ19ET00w
X0RPTU9QUyAgICAgMHgwMDA0MTAwMCAgIC8qIERvbWFpbnMgbWFuaXB1bGF0aW9ucyAqLw0KPiAr
DQo+ICsvKiBUcmFjZSBjbGFzc2VzIGZvciBIYXJkd2FyZSAqLw0KPiArI2RlZmluZSBUUkNfSFdf
UE0gICAgICAgICAgIDB4MDA4MDEwMDAgICAvKiBQb3dlciBtYW5hZ2VtZW50IHRyYWNlcyAqLw0K
PiArI2RlZmluZSBUUkNfSFdfSVJRICAgICAgICAgIDB4MDA4MDIwMDAgICAvKiBUcmFjZXMgcmVs
YXRpbmcgdG8gdGhlIGhhbmRsaW5nIG9mDQo+IElSUXMgKi8NCj4gKw0KPiArLyogVHJhY2UgZXZl
bnRzIHBlciBjbGFzcyAqLw0KPiArI2RlZmluZSBUUkNfTE9TVF9SRUNPUkRTICAgICAgICAoVFJD
X0dFTiArIDEpDQo+ICsjZGVmaW5lIFRSQ19UUkFDRV9XUkFQX0JVRkZFUiAgKFRSQ19HRU4gKyAy
KQ0KPiArI2RlZmluZSBUUkNfVFJBQ0VfQ1BVX0NIQU5HRSAgICAoVFJDX0dFTiArIDMpDQo+ICsN
Cj4gKyNkZWZpbmUgVFJDX1NDSEVEX1JVTlNUQVRFX0NIQU5HRSAgIChUUkNfU0NIRURfTUlOICsg
MSkNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX0NPTlRJTlVFX1JVTk5JTkcgIChUUkNfU0NIRURfTUlO
ICsgMikNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX0RPTV9BREQgICAgICAgIChUUkNfU0NIRURfVkVS
Qk9TRSArICAxKQ0KPiArI2RlZmluZSBUUkNfU0NIRURfRE9NX1JFTSAgICAgICAgKFRSQ19TQ0hF
RF9WRVJCT1NFICsgIDIpDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9TTEVFUCAgICAgICAgICAoVFJD
X1NDSEVEX1ZFUkJPU0UgKyAgMykNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1dBS0UgICAgICAgICAg
IChUUkNfU0NIRURfVkVSQk9TRSArICA0KQ0KPiArI2RlZmluZSBUUkNfU0NIRURfWUlFTEQgICAg
ICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDUpDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9CTE9D
SyAgICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNikNCj4gKyNkZWZpbmUgVFJDX1NDSEVE
X1NIVVRET1dOICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA3KQ0KPiArI2RlZmluZSBUUkNf
U0NIRURfQ1RMICAgICAgICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDgpDQo+ICsjZGVmaW5l
IFRSQ19TQ0hFRF9BREpET00gICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgOSkNCj4gKyNk
ZWZpbmUgVFJDX1NDSEVEX1NXSVRDSCAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEwKQ0K
PiArI2RlZmluZSBUUkNfU0NIRURfU19USU1FUl9GTiAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsg
MTEpDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9UX1RJTUVSX0ZOICAgICAoVFJDX1NDSEVEX1ZFUkJP
U0UgKyAxMikNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX0RPTV9USU1FUl9GTiAgIChUUkNfU0NIRURf
VkVSQk9TRSArIDEzKQ0KPiArI2RlZmluZSBUUkNfU0NIRURfU1dJVENIX0lORlBSRVYgKFRSQ19T
Q0hFRF9WRVJCT1NFICsgMTQpDQo+ICsjZGVmaW5lIFRSQ19TQ0hFRF9TV0lUQ0hfSU5GTkVYVCAo
VFJDX1NDSEVEX1ZFUkJPU0UgKyAxNSkNCj4gKyNkZWZpbmUgVFJDX1NDSEVEX1NIVVRET1dOX0NP
REUgIChUUkNfU0NIRURfVkVSQk9TRSArIDE2KQ0KPiArDQo+ICsjZGVmaW5lIFRSQ19ET00wX0RP
TV9BREQgICAgICAgICAoVFJDX0RPTTBfRE9NT1BTICsgMSkNCj4gKyNkZWZpbmUgVFJDX0RPTTBf
RE9NX1JFTSAgICAgICAgIChUUkNfRE9NMF9ET01PUFMgKyAyKQ0KPiArDQo+ICsjZGVmaW5lIFRS
Q19NRU1fUEFHRV9HUkFOVF9NQVAgICAgICAoVFJDX01FTSArIDEpDQo+ICsjZGVmaW5lIFRSQ19N
RU1fUEFHRV9HUkFOVF9VTk1BUCAgICAoVFJDX01FTSArIDIpDQo+ICsjZGVmaW5lIFRSQ19NRU1f
UEFHRV9HUkFOVF9UUkFOU0ZFUiAoVFJDX01FTSArIDMpDQo+ICsjZGVmaW5lIFRSQ19NRU1fU0VU
X1AyTV9FTlRSWSAgICAgICAoVFJDX01FTSArIDQpDQo+ICsjZGVmaW5lIFRSQ19NRU1fREVDUkVB
U0VfUkVTRVJWQVRJT04gKFRSQ19NRU0gKyA1KQ0KPiArI2RlZmluZSBUUkNfTUVNX1BPRF9QT1BV
TEFURSAgICAgICAgKFRSQ19NRU0gKyAxNikNCj4gKyNkZWZpbmUgVFJDX01FTV9QT0RfWkVST19S
RUNMQUlNICAgIChUUkNfTUVNICsgMTcpDQo+ICsjZGVmaW5lIFRSQ19NRU1fUE9EX1NVUEVSUEFH
RV9TUExJTlRFUiAoVFJDX01FTSArIDE4KQ0KPiArDQo+ICsjZGVmaW5lIFRSQ19QVl9FTlRSWSAg
IDB4MDAyMDEwMDAgLyogSHlwZXJ2aXNvciBlbnRyeSBwb2ludHMgZm9yIFBWDQo+IGd1ZXN0cy4g
Ki8NCj4gKyNkZWZpbmUgVFJDX1BWX1NVQkNBTEwgMHgwMDIwMjAwMCAvKiBTdWItY2FsbCBpbiBh
IG11bHRpY2FsbCBoeXBlcmNhbGwgKi8NCj4gKw0KPiArI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxM
ICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMSkNCj4gKyNkZWZpbmUgVFJDX1BWX1RSQVAg
ICAgICAgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDMpDQo+ICsjZGVmaW5lIFRSQ19QVl9Q
QUdFX0ZBVUxUICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA0KQ0KPiArI2RlZmluZSBUUkNf
UFZfRk9SQ0VEX0lOVkFMSURfT1AgICAgIChUUkNfUFZfRU5UUlkgKyAgNSkNCj4gKyNkZWZpbmUg
VFJDX1BWX0VNVUxBVEVfUFJJVk9QICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDYpDQo+ICsjZGVm
aW5lIFRSQ19QVl9FTVVMQVRFXzRHQiAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA3KQ0KPiAr
I2RlZmluZSBUUkNfUFZfTUFUSF9TVEFURV9SRVNUT1JFICAgIChUUkNfUFZfRU5UUlkgKyAgOCkN
Cj4gKyNkZWZpbmUgVFJDX1BWX1BBR0lOR19GSVhVUCAgICAgICAgICAoVFJDX1BWX0VOVFJZICsg
IDkpDQo+ICsjZGVmaW5lIFRSQ19QVl9HRFRfTERUX01BUFBJTkdfRkFVTFQgKFRSQ19QVl9FTlRS
WSArIDEwKQ0KPiArI2RlZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT04gICAgICAgIChUUkNfUFZf
RU5UUlkgKyAxMSkNCj4gKyNkZWZpbmUgVFJDX1BWX1BUV1JfRU1VTEFUSU9OX1BBRSAgICAoVFJD
X1BWX0VOVFJZICsgMTIpDQo+ICsjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjIgICAgICAgICAg
KFRSQ19QVl9FTlRSWSArIDEzKQ0KPiArI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1NVQkNBTEwg
ICAgIChUUkNfUFZfU1VCQ0FMTCArIDE0KQ0KPiArDQo+ICsvKg0KPiArICogVFJDX1BWX0hZUEVS
Q0FMTF9WMiBmb3JtYXQNCj4gKyAqDQo+ICsgKiBPbmx5IHNvbWUgb2YgdGhlIGh5cGVyY2FsbCBh
cmd1bWVudCBhcmUgcmVjb3JkZWQuIEJpdCBmaWVsZHMgQTAgdG8NCj4gKyAqIEE1IGluIHRoZSBm
aXJzdCBleHRyYSB3b3JkIGFyZSBzZXQgaWYgdGhlIGFyZ3VtZW50IGlzIHByZXNlbnQgYW5kDQo+
ICsgKiB0aGUgYXJndW1lbnRzIHRoZW1zZWx2ZXMgYXJlIHBhY2tlZCBzZXF1ZW50aWFsbHkgaW4g
dGhlIGZvbGxvd2luZw0KPiArICogd29yZHMuDQo+ICsgKg0KPiArICogVGhlIFRSQ182NF9GTEFH
IGJpdCBpcyBub3Qgc2V0IGZvciB0aGVzZSBldmVudHMgKGV2ZW4gaWYgdGhlcmUgYXJlDQo+ICsg
KiA2NC1iaXQgYXJndW1lbnRzIGluIHRoZSByZWNvcmQpLg0KPiArICoNCj4gKyAqIFdvcmQNCj4g
KyAqIDAgICAgYml0IDMxIDMwfDI5IDI4fDI3IDI2fDI1IDI0fDIzIDIyfDIxIDIwfDE5IC4uLiAw
DQo+ICsgKiAgICAgICAgICBBNSAgIHxBNCAgIHxBMyAgIHxBMiAgIHxBMSAgIHxBMCAgIHxIeXBl
cmNhbGwgb3ANCj4gKyAqIDEgICAgRmlyc3QgMzIgYml0IChvciBsb3cgd29yZCBvZiBmaXJzdCA2
NCBiaXQpIGFyZyBpbiByZWNvcmQNCj4gKyAqIDIgICAgU2Vjb25kIDMyIGJpdCAob3IgaGlnaCB3
b3JkIG9mIGZpcnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZA0KPiArICogLi4uDQo+ICsgKg0KPiAr
ICogQTAtQTUgYml0ZmllbGQgdmFsdWVzOg0KPiArICoNCj4gKyAqICAgMDBiICBBcmd1bWVudCBu
b3QgcHJlc2VudA0KPiArICogICAwMWIgIDMyLWJpdCBhcmd1bWVudCBwcmVzZW50DQo+ICsgKiAg
IDEwYiAgNjQtYml0IGFyZ3VtZW50IHByZXNlbnQNCj4gKyAqICAgMTFiICBSZXNlcnZlZA0KPiAr
ICovDQo+ICsjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJHXzMyKGkpICgweDEgPDwgKDIw
ICsgMiooaSkpKQ0KPiArI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1YyX0FSR182NChpKSAoMHgy
IDw8ICgyMCArIDIqKGkpKSkNCj4gKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FMTF9WMl9BUkdfTUFT
SyAgKDB4ZmZmMDAwMDApDQo+ICsNCj4gKyNkZWZpbmUgVFJDX1NIQURPV19OT1RfU0hBRE9XICAg
ICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAxKQ0KPiArI2RlZmluZSBUUkNfU0hBRE9XX0ZB
U1RfUFJPUEFHQVRFICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDIpDQo+ICsjZGVmaW5lIFRS
Q19TSEFET1dfRkFTVF9NTUlPICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgMykNCj4g
KyNkZWZpbmUgVFJDX1NIQURPV19GQUxTRV9GQVNUX1BBVEggICAgICAgICAgICAoVFJDX1NIQURP
VyArICA0KQ0KPiArI2RlZmluZSBUUkNfU0hBRE9XX01NSU8gICAgICAgICAgICAgICAgICAgICAg
IChUUkNfU0hBRE9XICsgIDUpDQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfRklYVVAgICAgICAgICAg
ICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgNikNCj4gKyNkZWZpbmUgVFJDX1NIQURPV19ET01G
X0RZSU5HICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICA3KQ0KPiArI2RlZmluZSBUUkNf
U0hBRE9XX0VNVUxBVEUgICAgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDgpDQo+ICsj
ZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURV9VTlNIQURPV19VU0VSICAgICAgKFRSQ19TSEFET1cg
Kw0KPiA5KQ0KPiArI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5TSEFET1dfRVZUSU5KICAg
IChUUkNfU0hBRE9XICsNCj4gMTApDQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfRU1VTEFURV9VTlNI
QURPV19VTkhBTkRMRUQNCj4gKFRSQ19TSEFET1cgKyAxMSkNCj4gKyNkZWZpbmUgVFJDX1NIQURP
V19XUk1BUF9CRiAgICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArIDEyKQ0KPiArI2RlZmlu
ZSBUUkNfU0hBRE9XX1BSRUFMTE9DX1VOUElOICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgMTMp
DQo+ICsjZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX0ZVTEwgICAgICAgICAgICAgICAgKFRSQ19T
SEFET1cgKyAxNCkNCj4gKyNkZWZpbmUgVFJDX1NIQURPV19SRVNZTkNfT05MWSAgICAgICAgICAg
ICAgICAoVFJDX1NIQURPVyArIDE1KQ0KPiArDQo+ICsvKiB0cmFjZSBldmVudHMgcGVyIHN1YmNs
YXNzICovDQo+ICsjZGVmaW5lIFRSQ19IVk1fTkVTVEVERkxBRyAgICAgICgweDQwMCkNCj4gKyNk
ZWZpbmUgVFJDX0hWTV9WTUVOVFJZICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsgMHgwMSkN
Cj4gKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQgICAgICAgICAgKFRSQ19IVk1fRU5UUllFWElUICsg
MHgwMikNCj4gKyNkZWZpbmUgVFJDX0hWTV9WTUVYSVQ2NCAgICAgICAgKFRSQ19IVk1fRU5UUllF
WElUICsgVFJDXzY0X0ZMQUcgKw0KPiAweDAyKQ0KPiArI2RlZmluZSBUUkNfSFZNX1BGX1hFTiAg
ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwMSkNCj4gKyNkZWZpbmUgVFJDX0hWTV9QRl9Y
RU42NCAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsNCj4gMHgwMSkNCj4g
KyNkZWZpbmUgVFJDX0hWTV9QRl9JTkpFQ1QgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDIp
DQo+ICsjZGVmaW5lIFRSQ19IVk1fUEZfSU5KRUNUNjQgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBU
UkNfNjRfRkxBRyArDQo+IDB4MDIpDQo+ICsjZGVmaW5lIFRSQ19IVk1fSU5KX0VYQyAgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyAweDAzKQ0KPiArI2RlZmluZSBUUkNfSFZNX0lOSl9WSVJRICAg
ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNCkNCj4gKyNkZWZpbmUgVFJDX0hWTV9SRUlOSl9W
SVJRICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDUpDQo+ICsjZGVmaW5lIFRSQ19IVk1fSU9f
UkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA2KQ0KPiArI2RlZmluZSBUUkNfSFZN
X0lPX1dSSVRFICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNykNCj4gKyNkZWZpbmUgVFJD
X0hWTV9DUl9SRUFEICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDgpDQo+ICsjZGVmaW5l
IFRSQ19IVk1fQ1JfUkVBRDY0ICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyAr
DQo+IDB4MDgpDQo+ICsjZGVmaW5lIFRSQ19IVk1fQ1JfV1JJVEUgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDA5KQ0KPiArI2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFNjQgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKw0KPiAweDA5KQ0KPiArI2RlZmluZSBUUkNfSFZNX0RS
X1JFQUQgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwQSkNCj4gKyNkZWZpbmUgVFJDX0hW
TV9EUl9XUklURSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEIpDQo+ICsjZGVmaW5lIFRS
Q19IVk1fTVNSX1JFQUQgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBDKQ0KPiArI2RlZmlu
ZSBUUkNfSFZNX01TUl9XUklURSAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRCkNCj4gKyNk
ZWZpbmUgVFJDX0hWTV9DUFVJRCAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEUpDQo+
ICsjZGVmaW5lIFRSQ19IVk1fSU5UUiAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBG
KQ0KPiArI2RlZmluZSBUUkNfSFZNX05NSSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgxMCkNCj4gKyNkZWZpbmUgVFJDX0hWTV9TTUkgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExF
UiArIDB4MTEpDQo+ICsjZGVmaW5lIFRSQ19IVk1fVk1NQ0FMTCAgICAgICAgIChUUkNfSFZNX0hB
TkRMRVIgKyAweDEyKQ0KPiArI2RlZmluZSBUUkNfSFZNX0hMVCAgICAgICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgxMykNCj4gKyNkZWZpbmUgVFJDX0hWTV9JTlZMUEcgICAgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MTQpDQo+ICsjZGVmaW5lIFRSQ19IVk1fSU5WTFBHNjQgICAgICAg
IChUUkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArDQo+IDB4MTQpDQo+ICsjZGVmaW5lIFRS
Q19IVk1fTUNFICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE1KQ0KPiArI2RlZmlu
ZSBUUkNfSFZNX0lPUE9SVF9SRUFEICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxNikNCj4gKyNk
ZWZpbmUgVFJDX0hWTV9JT01FTV9SRUFEICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTcpDQo+
ICsjZGVmaW5lIFRSQ19IVk1fQ0xUUyAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE4
KQ0KPiArI2RlZmluZSBUUkNfSFZNX0xNU1cgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgxOSkNCj4gKyNkZWZpbmUgVFJDX0hWTV9MTVNXNjQgICAgICAgICAgKFRSQ19IVk1fSEFORExF
UiArIFRSQ182NF9GTEFHICsNCj4gMHgxOSkNCj4gKyNkZWZpbmUgVFJDX0hWTV9SRFRTQyAgICAg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MWEpDQo+ICsjZGVmaW5lIFRSQ19IVk1fSU5UUl9X
SU5ET1cgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIwKQ0KPiArI2RlZmluZSBUUkNfSFZNX05Q
RiAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMSkNCj4gKyNkZWZpbmUgVFJDX0hW
TV9SRUFMTU9ERV9FTVVMQVRFIChUUkNfSFZNX0hBTkRMRVIgKyAweDIyKQ0KPiArI2RlZmluZSBU
UkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjMpDQo+ICsjZGVm
aW5lIFRSQ19IVk1fVFJBUF9ERUJVRyAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNCkNCj4g
KyNkZWZpbmUgVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI1
KQ0KPiArDQo+ICsjZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZNX0hBTkRM
RVIgKyAweDIxNikNCj4gKyNkZWZpbmUgVFJDX0hWTV9JT01FTV9XUklURSAgICAgKFRSQ19IVk1f
SEFORExFUiArIDB4MjE3KQ0KPiArDQo+ICsvKiBUcmFjZSBldmVudHMgZm9yIGVtdWxhdGVkIGRl
dmljZXMgKi8NCj4gKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0hQRVRfU1RBUlRfVElNRVIgIChUUkNf
SFZNX0VNVUwgKyAweDEpDQo+ICsjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSVRfU1RBUlRfVElNRVIg
ICAoVFJDX0hWTV9FTVVMICsgMHgyKQ0KPiArI2RlZmluZSBUUkNfSFZNX0VNVUxfUlRDX1NUQVJU
X1RJTUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MykNCj4gKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xB
UElDX1NUQVJUX1RJTUVSIChUUkNfSFZNX0VNVUwgKyAweDQpDQo+ICsjZGVmaW5lIFRSQ19IVk1f
RU1VTF9IUEVUX1NUT1BfVElNRVIgICAoVFJDX0hWTV9FTVVMICsgMHg1KQ0KPiArI2RlZmluZSBU
UkNfSFZNX0VNVUxfUElUX1NUT1BfVElNRVIgICAgKFRSQ19IVk1fRU1VTCArIDB4NikNCj4gKyNk
ZWZpbmUgVFJDX0hWTV9FTVVMX1JUQ19TVE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDcp
DQo+ICsjZGVmaW5lIFRSQ19IVk1fRU1VTF9MQVBJQ19TVE9QX1RJTUVSICAoVFJDX0hWTV9FTVVM
ICsgMHg4KQ0KPiArI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1RJTUVSX0NCICAgICAgKFRSQ19I
Vk1fRU1VTCArIDB4OSkNCj4gKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xBUElDX1RJTUVSX0NCICAg
IChUUkNfSFZNX0VNVUwgKyAweEEpDQo+ICsjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UX09V
VFBVVCAgICAoVFJDX0hWTV9FTVVMICsgMHhCKQ0KPiArI2RlZmluZSBUUkNfSFZNX0VNVUxfUElD
X0tJQ0sgICAgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4QykNCj4gKyNkZWZpbmUgVFJDX0hWTV9F
TVVMX1BJQ19JTlRBQ0sgICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEQpDQo+ICsjZGVmaW5lIFRS
Q19IVk1fRU1VTF9QSUNfUE9TRURHRSAgICAgICAoVFJDX0hWTV9FTVVMICsgMHhFKQ0KPiArI2Rl
ZmluZSBUUkNfSFZNX0VNVUxfUElDX05FR0VER0UgICAgICAgKFRSQ19IVk1fRU1VTCArIDB4RikN
Cj4gKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19QRU5EX0lSUV9DQUxMIChUUkNfSFZNX0VNVUwg
KyAweDEwKQ0KPiArI2RlZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfUElDX0lOVFIgICAgKFRSQ19I
Vk1fRU1VTCArIDB4MTEpDQo+ICsNCj4gKy8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNzICov
DQo+ICsjZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQ0K
PiArI2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikNCj4g
KyNkZWZpbmUgVFJDX1BNX0lETEVfRVhJVCAgICAgICAgKFRSQ19IV19QTSArIDB4MDMpDQo+ICsN
Cj4gKy8qIFRyYWNlIGV2ZW50cyBmb3IgSVJRcyAqLw0KPiArI2RlZmluZSBUUkNfSFdfSVJRX01P
VkVfQ0xFQU5VUF9ERUxBWSAoVFJDX0hXX0lSUSArIDB4MSkNCj4gKyNkZWZpbmUgVFJDX0hXX0lS
UV9NT1ZFX0NMRUFOVVAgICAgICAgKFRSQ19IV19JUlEgKyAweDIpDQo+ICsjZGVmaW5lIFRSQ19I
V19JUlFfQklORF9WRUNUT1IgICAgICAgIChUUkNfSFdfSVJRICsgMHgzKQ0KPiArI2RlZmluZSBU
UkNfSFdfSVJRX0NMRUFSX1ZFQ1RPUiAgICAgICAoVFJDX0hXX0lSUSArIDB4NCkNCj4gKyNkZWZp
bmUgVFJDX0hXX0lSUV9NT1ZFX0ZJTklTSCAgICAgICAgKFRSQ19IV19JUlEgKyAweDUpDQo+ICsj
ZGVmaW5lIFRSQ19IV19JUlFfQVNTSUdOX1ZFQ1RPUiAgICAgIChUUkNfSFdfSVJRICsgMHg2KQ0K
PiArI2RlZmluZSBUUkNfSFdfSVJRX1VOTUFQUEVEX1ZFQ1RPUiAgICAoVFJDX0hXX0lSUSArIDB4
NykNCj4gKyNkZWZpbmUgVFJDX0hXX0lSUV9IQU5ETEVEICAgICAgICAgICAgKFRSQ19IV19JUlEg
KyAweDgpDQo+ICsNCj4gKy8qDQo+ICsgKiBFdmVudCBGbGFncw0KPiArICoNCj4gKyAqIFNvbWUg
ZXZlbnRzIChlLmcsIFRSQ19QVl9UUkFQIGFuZCBUUkNfSFZNX0lPTUVNX1JFQUQpIGhhdmUNCj4g
bXVsdGlwbGUNCj4gKyAqIHJlY29yZCBmb3JtYXRzLiAgVGhlc2UgZXZlbnQgZmxhZ3MgZGlzdGlu
Z3Vpc2ggYmV0d2VlbiB0aGUNCj4gKyAqIGRpZmZlcmVudCBmb3JtYXRzLg0KPiArICovDQo+ICsj
ZGVmaW5lIFRSQ182NF9GTEFHIDB4MTAwIC8qIEFkZHJlc3NlcyBhcmUgNjQgYml0cyAoaW5zdGVh
ZCBvZiAzMiBiaXRzKSAqLw0KPiArDQo+ICsvKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEg
c2luZ2xlIHRyYWNlIGJ1ZmZlciByZWNvcmQuICovDQo+ICtzdHJ1Y3QgdF9yZWMgew0KPiArICAg
IHVpbnQzMl90IGV2ZW50OjI4Ow0KPiArICAgIHVpbnQzMl90IGV4dHJhX3UzMjozOyAgICAgICAg
IC8qICMgZW50cmllcyBpbiB0cmFpbGluZyBleHRyYV91MzJbXSBhcnJheSAqLw0KPiArICAgIHVp
bnQzMl90IGN5Y2xlc19pbmNsdWRlZDoxOyAgIC8qIHUuY3ljbGVzIG9yIHUubm9fY3ljbGVzPyAq
Lw0KPiArICAgIHVuaW9uIHsNCj4gKyAgICAgICAgc3RydWN0IHsNCj4gKyAgICAgICAgICAgIHVp
bnQzMl90IGN5Y2xlc19sbywgY3ljbGVzX2hpOyAvKiBjeWNsZSBjb3VudGVyIHRpbWVzdGFtcCAq
Lw0KPiArICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMyWzddOyAgICAgICAgIC8qIGV2ZW50
IGRhdGEgaXRlbXMgKi8NCj4gKyAgICAgICAgfSBjeWNsZXM7DQo+ICsgICAgICAgIHN0cnVjdCB7
DQo+ICsgICAgICAgICAgICB1aW50MzJfdCBleHRyYV91MzJbN107ICAgICAgICAgLyogZXZlbnQg
ZGF0YSBpdGVtcyAqLw0KPiArICAgICAgICB9IG5vY3ljbGVzOw0KPiArICAgIH0gdTsNCj4gK307
DQo+ICsNCj4gKy8qDQo+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyB0aGUgbWV0YWRhdGEg
Zm9yIGEgc2luZ2xlIHRyYWNlIGJ1ZmZlci4gIFRoZSBoZWFkDQo+ICsgKiBmaWVsZCwgaW5kZXhl
cyBpbnRvIGFuIGFycmF5IG9mIHN0cnVjdCB0X3JlYydzLg0KPiArICovDQo+ICtzdHJ1Y3QgdF9i
dWYgew0KPiArICAgIC8qIEFzc3VtZSB0aGUgZGF0YSBidWZmZXIgc2l6ZSBpcyBYLiAgWCBpcyBn
ZW5lcmFsbHkgbm90IGEgcG93ZXIgb2YgMi4NCj4gKyAgICAgKiBDT05TIGFuZCBQUk9EIGFyZSBp
bmNyZW1lbnRlZCBtb2R1bG8gKDIqWCk6DQo+ICsgICAgICogICAgIDAgPD0gY29ucyA8IDIqWA0K
PiArICAgICAqICAgICAwIDw9IHByb2QgPCAyKlgNCj4gKyAgICAgKiBUaGlzIGlzIGRvbmUgYmVj
YXVzZSBhZGRpdGlvbiBtb2R1bG8gWCBicmVha3MgYXQgMl4zMiB3aGVuIFggaXMgbm90IGENCj4g
KyAgICAgKiBwb3dlciBvZiAyOg0KPiArICAgICAqICAgICAoKCgyXjMyIC0gMSkgJSBYKSArIDEp
ICUgWCAhPSAoMl4zMikgJSBYDQo+ICsgICAgICovDQo+ICsgICAgdWludDMyX3QgY29uczsgICAv
KiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIGNvbnN1bWVkIGJ5IGNvbnRyb2wgdG9vbHMuICov
DQo+ICsgICAgdWludDMyX3QgcHJvZDsgICAvKiBPZmZzZXQgb2YgbmV4dCBpdGVtIHRvIGJlIHBy
b2R1Y2VkIGJ5IFhlbi4gICAgICAgICAgICovDQo+ICsgICAgLyogIFJlY29yZHMgZm9sbG93IGlt
bWVkaWF0ZWx5IGFmdGVyIHRoZSBtZXRhLWRhdGEgaGVhZGVyLiAgICAqLw0KPiArfTsNCj4gKw0K
PiArLyogU3RydWN0dXJlIHVzZWQgdG8gcGFzcyBNRk5zIHRvIHRoZSB0cmFjZSBidWZmZXJzIGJh
Y2sgdG8gdHJhY2UNCj4gY29uc3VtZXJzLg0KPiArICogT2Zmc2V0IGlzIGFuIG9mZnNldCBpbnRv
IHRoZSBtYXBwZWQgc3RydWN0dXJlIHdoZXJlIHRoZSBtZm4gbGlzdCB3aWxsIGJlDQo+IGhlbGQu
DQo+ICsgKiBNRk5zIHdpbGwgYmUgYXQgKChVTE9OR19QVFIgKikodF9pbmZvKSkrKHRfaW5mby0+
Y3B1X29mZnNldFtjcHVdKS4NCj4gKyAqLw0KPiArc3RydWN0IHRfaW5mbyB7DQo+ICsgICAgdWlu
dDE2X3QgdGJ1Zl9zaXplOyAvKiBTaXplIGluIHBhZ2VzIG9mIGVhY2ggdHJhY2UgYnVmZmVyICov
DQo+ICsgICAgdWludDE2X3QgbWZuX29mZnNldFtdOyAgLyogT2Zmc2V0IHdpdGhpbiB0X2luZm8g
c3RydWN0dXJlIG9mIHRoZSBwYWdlIGxpc3QNCj4gcGVyIGNwdSAqLw0KPiArICAgIC8qIE1GTiBs
aXN0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgaGVhZGVyICovDQo+ICt9Ow0KPiArDQo+ICsjZW5k
aWYgLyogX19YRU5fUFVCTElDX1RSQUNFX0hfXyAqLw0KPiArDQo+ICsvKg0KPiArICogTG9jYWwg
dmFyaWFibGVzOg0KPiArICogbW9kZTogQw0KPiArICogYy1maWxlLXN0eWxlOiAiQlNEIg0KPiAr
ICogYy1iYXNpYy1vZmZzZXQ6IDQNCj4gKyAqIHRhYi13aWR0aDogNA0KPiArICogaW5kZW50LXRh
YnMtbW9kZTogbmlsDQo+ICsgKiBFbmQ6DQo+ICsgKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv
eGVuL3B1YmxpYy94ZW4tY29tcGF0LmggYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLQ0KPiBjb21w
YXQuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwLi4yZWVhMGUyDQo+
IC0tLSAvZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaA0K
PiBAQCAtMCwwICsxLDQ0IEBADQo+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKioqKg0KPiArICog
eGVuLWNvbXBhdC5oDQo+ICsgKg0KPiArICogR3Vlc3QgT1MgaW50ZXJmYWNlIHRvIFhlbi4gIENv
bXBhdGliaWxpdHkgbGF5ZXIuDQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gY29weQ0K
PiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvDQo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQ0KPiArICogcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yDQo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQ0KPiBpcw0KPiArICogZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gKyAq
DQo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICsgKg0KPiArICogVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+IEVYUFJF
U1MgT1INCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YNCj4gTUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8NCj4gRVZFTlQgU0hBTEwg
VEhFDQo+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTDQo+IE9SIE9USEVSDQo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwNCj4gQVJJU0lORw0KPiAr
ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUg0KPiBPVEhFUg0KPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICoN
Cj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwgQ2hyaXN0aWFuIExpbXBhY2gNCj4gKyAqLw0KPiAr
DQo+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hfXw0KPiArI2RlZmluZSBfX1hF
Tl9QVUJMSUNfWEVOX0NPTVBBVF9IX18NCj4gKw0KPiArI2RlZmluZSBfX1hFTl9MQVRFU1RfSU5U
RVJGQUNFX1ZFUlNJT05fXyAweDAwMDQwNzAwDQo+ICsNCj4gKyNpZiBkZWZpbmVkKF9fWEVOX18p
IHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykNCj4gKy8qIFhlbiBpcyBidWlsdCB3aXRoIG1hdGNo
aW5nIGhlYWRlcnMgYW5kIGltcGxlbWVudHMgdGhlIGxhdGVzdCBpbnRlcmZhY2UuDQo+ICovDQo+
ICsjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18NCj4gX19YRU5fTEFURVNUX0lOVEVS
RkFDRV9WRVJTSU9OX18NCj4gKyNlbGlmICFkZWZpbmVkKF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9O
X18pDQo+ICsvKiBHdWVzdHMgd2hpY2ggZG8gbm90IHNwZWNpZnkgYSB2ZXJzaW9uIGdldCB0aGUg
bGVnYWN5IGludGVyZmFjZS4gKi8NCj4gKyNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05f
XyAweDAwMDAwMDAwDQo+ICsjZW5kaWYNCj4gKw0KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJT
SU9OX18gPg0KPiBfX1hFTl9MQVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXw0KPiArI2Vycm9yICJU
aGVzZSBoZWFkZXIgZmlsZXMgZG8gbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBpbnRlcmZhY2Ug
dmVyc2lvbi4iDQo+ICsjZW5kaWYNCj4gKw0KPiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19YRU5f
Q09NUEFUX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL3hlbi5oIGIv
aW5jbHVkZS94ZW4vcHVibGljL3hlbi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4
IDAwMDAwMDAuLjIwNTdiNTINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL3hlbi9w
dWJsaWMveGVuLmgNCj4gQEAgLTAsMCArMSw5OTUgQEANCj4gKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioq
KioqKioqDQo+ICsgKiB4ZW4uaA0KPiArICoNCj4gKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byBY
ZW4uDQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gY29weQ0KPiArICogb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksIHRvDQo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp
bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQ0KPiArICogcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
DQo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u
cyB0byB3aG9tIHRoZSBTb2Z0d2FyZQ0KPiBpcw0KPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gKyAqDQo+ICsgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbg0KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuDQo+ICsgKg0KPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+IEVYUFJFU1MgT1INCj4gKyAqIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCj4g
TUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8NCj4gRVZFTlQgU0hBTEwgVEhFDQo+ICsgKiBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
DQo+IE9SIE9USEVSDQo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwNCj4gQVJJU0lORw0KPiArICogRlJPTSwgT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KPiBPVEhF
Ug0KPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICoNCj4gKyAqIENvcHlyaWdo
dCAoYykgMjAwNCwgSyBBIEZyYXNlcg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19YRU5fUFVC
TElDX1hFTl9IX18NCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX1hFTl9IX18NCj4gKw0KPiArI2lu
Y2x1ZGUgInhlbi1jb21wYXQuaCINCj4gKw0KPiArI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl
ZmluZWQoX194ODZfNjRfXykNCj4gKyNpbmNsdWRlICJhcmNoLXg4Ni94ZW4uaCINCj4gKyNlbGlm
IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pDQo+ICsjaW5jbHVkZSAi
YXJjaC1hcm0uaCINCj4gKyNlbHNlDQo+ICsjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVy
ZSINCj4gKyNlbmRpZg0KPiArDQo+ICsjaWZuZGVmIF9fQVNTRU1CTFlfXw0KPiArLyogR3Vlc3Qg
aGFuZGxlcyBmb3IgcHJpbWl0aXZlIEMgdHlwZXMuICovDQo+ICtERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRShjaGFyKTsNCj4gK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWNoYXIsIHVuc2lnbmVk
IGNoYXIpOw0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoaW50KTsNCj4gK19fREVGSU5FX1hF
Tl9HVUVTVF9IQU5ETEUodWludCwgIHVuc2lnbmVkIGludCk7DQo+ICsjaWYgX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyA8IDB4MDAwNDAzMDANCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKExP
TkdfUFRSKTsNCj4gK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWxvbmcsIFVMT05HX1BUUik7
DQo+ICsjZW5kaWYNCj4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHZvaWQpOw0KPiArDQo+ICtE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50NjRfdCk7DQo+ICtERUZJTkVfWEVOX0dVRVNUX0hB
TkRMRSh4ZW5fcGZuX3QpOw0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3Vsb25nX3Qp
Ow0KPiArDQo+ICsvKiBUdXJuIGEgcGxhaW4gbnVtYmVyIGludG8gYSBDIHVuc2lnbmVkIChMT05H
X1BUUikgY29uc3RhbnQuICovDQo+ICsjZGVmaW5lIF9feGVuX21rX3VpbnQoeCkgIHggIyMgVQ0K
PiArI2RlZmluZSBfX3hlbl9ta191bG9uZyh4KSB4ICMjIFVMDQo+ICsjZGVmaW5lIHhlbl9ta191
aW50KHgpICAgIF9feGVuX21rX3VpbnQoeCkNCj4gKyNkZWZpbmUgeGVuX21rX3Vsb25nKHgpICAg
X194ZW5fbWtfdWxvbmcoeCkNCj4gKw0KPiArI2Vsc2UNCj4gKw0KPiArLyogSW4gYXNzZW1ibHkg
Y29kZSB3ZSBjYW5ub3QgdXNlIEMgbnVtZXJpYyBjb25zdGFudCBzdWZmaXhlcy4gKi8NCj4gKyNk
ZWZpbmUgeGVuX21rX3VpbnQoeCkgIHgNCj4gKyNkZWZpbmUgeGVuX21rX3Vsb25nKHgpIHgNCj4g
Kw0KPiArI2VuZGlmDQo+ICsNCj4gKy8qDQo+ICsgKiBIWVBFUkNBTExTDQo+ICsgKi8NCj4gKw0K
PiArLyogYGluY29udGVudHMgMTAwIGhjYWxscyBMaXN0IG9mIGh5cGVyY2FsbHMNCj4gKyAqIGAg
ZW51bSBoeXBlcmNhbGxfbnVtIHsgLy8gX19IWVBFUlZJU09SXyogPT4gSFlQRVJWSVNPUl8qKCkN
Cj4gKyAqLw0KPiArDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZSAgICAg
ICAgMA0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfbW11X3VwZGF0ZSAgICAgICAgICAgIDENCj4g
KyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9nZHQgICAgICAgICAgICAgICAyDQo+ICsjZGVmaW5l
IF9fSFlQRVJWSVNPUl9zdGFja19zd2l0Y2ggICAgICAgICAgMw0KPiArI2RlZmluZSBfX0hZUEVS
VklTT1Jfc2V0X2NhbGxiYWNrcyAgICAgICAgIDQNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2Zw
dV90YXNrc3dpdGNoICAgICAgICA1DQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcF9j
b21wYXQgICAgICAgNiAvKiBjb21wYXQgc2luY2UNCj4gMHgwMDAzMDEwMSAqLw0KPiArI2RlZmlu
ZSBfX0hZUEVSVklTT1JfcGxhdGZvcm1fb3AgICAgICAgICAgIDcNCj4gKyNkZWZpbmUgX19IWVBF
UlZJU09SX3NldF9kZWJ1Z3JlZyAgICAgICAgICA4DQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9n
ZXRfZGVidWdyZWcgICAgICAgICAgOQ0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX2Rl
c2NyaXB0b3IgICAgMTANCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX21lbW9yeV9vcCAgICAgICAg
ICAgIDEyDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9tdWx0aWNhbGwgICAgICAgICAgICAxMw0K
PiArI2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcgICAgMTQNCj4gKyNkZWZp
bmUgX19IWVBFUlZJU09SX3NldF90aW1lcl9vcCAgICAgICAgIDE1DQo+ICsjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2NvbXBhdCAxNiAvKiBjb21wYXQgc2luY2UNCj4gMHgw
MDAzMDIwMiAqLw0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfeGVuX3ZlcnNpb24gICAgICAgICAg
MTcNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2NvbnNvbGVfaW8gICAgICAgICAgIDE4DQo+ICsj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wX2NvbXBhdCAgICAxOSAvKiBjb21wYXQgc2lu
Y2UNCj4gMHgwMDAzMDIwMiAqLw0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfZ3JhbnRfdGFibGVf
b3AgICAgICAgMjANCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZtX2Fzc2lzdCAgICAgICAgICAg
IDIxDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFp
biAyMg0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfaXJldCAgICAgICAgICAgICAgICAgMjMgLyog
eDg2IG9ubHkgKi8NCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3ZjcHVfb3AgICAgICAgICAgICAg
IDI0DQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfc2VnbWVudF9iYXNlICAgICAyNSAvKiB4
ODYvNjQgb25seSAqLw0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfbW11ZXh0X29wICAgICAgICAg
ICAgMjYNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hzbV9vcCAgICAgICAgICAgICAgIDI3DQo+
ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9ubWlfb3AgICAgICAgICAgICAgICAyOA0KPiArI2RlZmlu
ZSBfX0hZUEVSVklTT1Jfc2NoZWRfb3AgICAgICAgICAgICAgMjkNCj4gKyNkZWZpbmUgX19IWVBF
UlZJU09SX2NhbGxiYWNrX29wICAgICAgICAgIDMwDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl94
ZW5vcHJvZl9vcCAgICAgICAgICAzMQ0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hh
bm5lbF9vcCAgICAgMzINCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgICAgICAg
ICAgIDMzDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9odm1fb3AgICAgICAgICAgICAgICAzNA0K
PiArI2RlZmluZSBfX0hZUEVSVklTT1Jfc3lzY3RsICAgICAgICAgICAgICAgMzUNCj4gKyNkZWZp
bmUgX19IWVBFUlZJU09SX2RvbWN0bCAgICAgICAgICAgICAgIDM2DQo+ICsjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9rZXhlY19vcCAgICAgICAgICAgICAzNw0KPiArI2RlZmluZSBfX0hZUEVSVklTT1Jf
dG1lbV9vcCAgICAgICAgICAgICAgMzgNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2Vy
dmVkX29wICAgICAgIDM5IC8qIHJlc2VydmVkIGZvciBYZW5DbGllbnQgKi8NCj4gKyNkZWZpbmUg
X19IWVBFUlZJU09SX3hlbnBtdV9vcCAgICAgICAgICAgIDQwDQo+ICsNCj4gKy8qIEFyY2hpdGVj
dHVyZS1zcGVjaWZpYyBoeXBlcmNhbGwgZGVmaW5pdGlvbnMuICovDQo+ICsjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OA0KPiArI2RlZmluZSBfX0hZUEVSVklTT1Jf
YXJjaF8xICAgICAgICAgICAgICAgNDkNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfMiAg
ICAgICAgICAgICAgIDUwDQo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzMgICAgICAgICAg
ICAgICA1MQ0KPiArI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF80ICAgICAgICAgICAgICAgNTIN
Cj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNSAgICAgICAgICAgICAgIDUzDQo+ICsjZGVm
aW5lIF9fSFlQRVJWSVNPUl9hcmNoXzYgICAgICAgICAgICAgICA1NA0KPiArI2RlZmluZSBfX0hZ
UEVSVklTT1JfYXJjaF83ICAgICAgICAgICAgICAgNTUNCj4gKw0KPiArLyogYCB9ICovDQo+ICsN
Cj4gKy8qDQo+ICsgKiBIWVBFUkNBTEwgQ09NUEFUSUJJTElUWS4NCj4gKyAqLw0KPiArDQo+ICsv
KiBOZXcgc2NoZWRfb3AgaHlwZXJjYWxsIGludHJvZHVjZWQgaW4gMHgwMDAzMDEwMS4gKi8NCj4g
KyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDEwMQ0KPiArI3VuZGVmIF9f
SFlQRVJWSVNPUl9zY2hlZF9vcA0KPiArI2RlZmluZSBfX0hZUEVSVklTT1Jfc2NoZWRfb3AgX19I
WVBFUlZJU09SX3NjaGVkX29wX2NvbXBhdA0KPiArI2VuZGlmDQo+ICsNCj4gKy8qIE5ldyBldmVu
dC1jaGFubmVsIGFuZCBwaHlzZGV2IGh5cGVyY2FsbHMgaW50cm9kdWNlZCBpbiAweDAwMDMwMjAy
LiAqLw0KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAyDQo+ICsj
dW5kZWYgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3ANCj4gKyNkZWZpbmUgX19IWVBFUlZJ
U09SX2V2ZW50X2NoYW5uZWxfb3ANCj4gX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3BfY29t
cGF0DQo+ICsjdW5kZWYgX19IWVBFUlZJU09SX3BoeXNkZXZfb3ANCj4gKyNkZWZpbmUgX19IWVBF
UlZJU09SX3BoeXNkZXZfb3AgX19IWVBFUlZJU09SX3BoeXNkZXZfb3BfY29tcGF0DQo+ICsjZW5k
aWYNCj4gKw0KPiArLyogTmV3IHBsYXRmb3JtX29wIGh5cGVyY2FsbCBpbnRyb2R1Y2VkIGluIDB4
MDAwMzAyMDQuICovDQo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwMzAy
MDQNCj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvbTBfb3AgX19IWVBFUlZJU09SX3BsYXRmb3Jt
X29wDQo+ICsjZW5kaWYNCj4gKw0KPiArLyoNCj4gKyAqIFZJUlRVQUwgSU5URVJSVVBUUw0KPiAr
ICoNCj4gKyAqIFZpcnR1YWwgaW50ZXJydXB0cyB0aGF0IGEgZ3Vlc3QgT1MgbWF5IHJlY2VpdmUg
ZnJvbSBYZW4uDQo+ICsgKg0KPiArICogSW4gdGhlIHNpZGUgY29tbWVudHMsICdWLicgZGVub3Rl
cyBhIHBlci1WQ1BVIFZJUlEgd2hpbGUgJ0cuJyBkZW5vdGVzIGENCj4gKyAqIGdsb2JhbCBWSVJR
LiBUaGUgZm9ybWVyIGNhbiBiZSBib3VuZCBvbmNlIHBlciBWQ1BVIGFuZCBjYW5ub3QgYmUgcmUt
DQo+IGJvdW5kLg0KPiArICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25jZSBw
ZXIgZ3Vlc3Q6IHRoZXkgbXVzdCBpbml0aWFsbHkgYmUNCj4gKyAqIGFsbG9jYXRlZCB0byBWQ1BV
MCBidXQgY2FuIHN1YnNlcXVlbnRseSBiZSByZS1ib3VuZC4NCj4gKyAqLw0KPiArLyogYCBlbnVt
IHZpcnEgeyAqLw0KPiArI2RlZmluZSBWSVJRX1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2Ug
dXBkYXRlLCBhbmQvb3IgcmVxdWVzdGVkDQo+IHRpbWVvdXQuICAqLw0KPiArI2RlZmluZSBWSVJR
X0RFQlVHICAgICAgMSAgLyogVi4gUmVxdWVzdCBndWVzdCB0byBkdW1wIGRlYnVnIGluZm8uICAg
ICAgICAgICAqLw0KPiArI2RlZmluZSBWSVJRX0NPTlNPTEUgICAgMiAgLyogRy4gKERPTTApIEJ5
dGVzIHJlY2VpdmVkIG9uIGVtZXJnZW5jeQ0KPiBjb25zb2xlLiAqLw0KPiArI2RlZmluZSBWSVJR
X0RPTV9FWEMgICAgMyAgLyogRy4gKERPTTApIEV4Y2VwdGlvbmFsIGV2ZW50IGZvciBzb21lDQo+
IGRvbWFpbi4gICAqLw0KPiArI2RlZmluZSBWSVJRX1RCVUYgICAgICAgNCAgLyogRy4gKERPTTAp
IFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFpbGFibGUuDQo+ICovDQo+ICsjZGVmaW5lIFZJ
UlFfREVCVUdHRVIgICA2ICAvKiBHLiAoRE9NMCkgQSBkb21haW4gaGFzIHBhdXNlZCBmb3INCj4g
ZGVidWdnaW5nLiAgICovDQo+ICsjZGVmaW5lIFZJUlFfWEVOT1BST0YgICA3ICAvKiBWLiBYZW5P
cHJvZmlsZSBpbnRlcnJ1cHQ6IG5ldyBzYW1wbGUNCj4gYXZhaWxhYmxlICovDQo+ICsjZGVmaW5l
IFZJUlFfQ09OX1JJTkcgICA4ICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQgb24gY29uc29s
ZQ0KPiAqLw0KPiArI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyogRy4gKERPTTApIFBDUFUg
c3RhdGUgY2hhbmdlZA0KPiAqLw0KPiArI2RlZmluZSBWSVJRX01FTV9FVkVOVCAgMTAgLyogRy4g
KERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1cmVkDQo+ICovDQo+ICsjZGVmaW5lIFZJUlFf
WENfUkVTRVJWRUQgMTEgLyogRy4gUmVzZXJ2ZWQgZm9yIFhlbkNsaWVudCAgICAgICAgICAgICAg
ICAgICAgICovDQo+ICsjZGVmaW5lIFZJUlFfRU5PTUVNICAgICAxMiAvKiBHLiAoRE9NMCkgTG93
IG9uIGhlYXAgbWVtb3J5ICAgICAgICovDQo+ICsjZGVmaW5lIFZJUlFfWEVOUE1VICAgICAxMyAv
KiBWLiAgUE1DIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ICsN
Cj4gKy8qIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBWSVJRIGRlZmluaXRpb25zLiAqLw0KPiArI2Rl
ZmluZSBWSVJRX0FSQ0hfMCAgICAxNg0KPiArI2RlZmluZSBWSVJRX0FSQ0hfMSAgICAxNw0KPiAr
I2RlZmluZSBWSVJRX0FSQ0hfMiAgICAxOA0KPiArI2RlZmluZSBWSVJRX0FSQ0hfMyAgICAxOQ0K
PiArI2RlZmluZSBWSVJRX0FSQ0hfNCAgICAyMA0KPiArI2RlZmluZSBWSVJRX0FSQ0hfNSAgICAy
MQ0KPiArI2RlZmluZSBWSVJRX0FSQ0hfNiAgICAyMg0KPiArI2RlZmluZSBWSVJRX0FSQ0hfNyAg
ICAyMw0KPiArLyogYCB9ICovDQo+ICsNCj4gKyNkZWZpbmUgTlJfVklSUVMgICAgICAgMjQNCj4g
Kw0KPiArLyoNCj4gKyAqIGAgZW51bSBuZWdfZXJybm92YWwNCj4gKyAqIGAgSFlQRVJWSVNPUl9t
bXVfdXBkYXRlKGNvbnN0IHN0cnVjdCBtbXVfdXBkYXRlIHJlcXNbXSwNCj4gKyAqIGAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCAqZG9uZV9vdXQsDQo+ICsg
KiBgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JlaWduZG9tKQ0KPiArICogYA0K
PiArICogQHJlcXMgaXMgYW4gYXJyYXkgb2YgbW11X3VwZGF0ZV90IHN0cnVjdHVyZXMgKChwdHIs
IHZhbCkgcGFpcnMpLg0KPiArICogQGNvdW50IGlzIHRoZSBsZW5ndGggb2YgdGhlIGFib3ZlIGFy
cmF5Lg0KPiArICogQHBkb25lIGlzIGFuIG91dHB1dCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBudW1i
ZXIgb2YgY29tcGxldGVkDQo+IG9wZXJhdGlvbnMNCj4gKyAqIEBmb3JlaWduZG9tWzE1OjBdOiBG
RCwgdGhlIGV4cGVjdGVkIG93bmVyIG9mIGRhdGEgcGFnZXMgcmVmZXJlbmNlZCBpbg0KPiB0aGlz
DQo+ICsgKiAgICAgICAgICAgICAgICAgICAgaHlwZXJjYWxsIGludm9jYXRpb24uIENhbiBiZSBE
T01JRF9TRUxGLg0KPiArICogQGZvcmVpZ25kb21bMzE6MTZdOiBQRkQsIHRoZSBleHBlY3RlZCBv
d25lciBvZiBwYWdldGFibGUgcGFnZXMNCj4gcmVmZXJlbmNlZA0KPiArICogICAgICAgICAgICAg
ICAgICAgICBpbiB0aGlzIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBUaGUgdmFsdWUgb2YgdGhpcyBm
aWVsZA0KPiArICogICAgICAgICAgICAgICAgICAgICAoeCkgZW5jb2RlcyB0aGUgUEZEIGFzIGZv
bGxvd3M6DQo+ICsgKiAgICAgICAgICAgICAgICAgICAgIHggPT0gMCA9PiBQRkQgPT0gRE9NSURf
U0VMRg0KPiArICogICAgICAgICAgICAgICAgICAgICB4ICE9IDAgPT4gUEZEID09IHggLSAxDQo+
ICsgKg0KPiArICogU3ViLWNvbW1hbmRzOiBwdHJbMTowXSBzcGVjaWZpZXMgdGhlIGFwcHJvcHJp
YXRlIE1NVV8qIGNvbW1hbmQuDQo+ICsgKiAtLS0tLS0tLS0tLS0tDQo+ICsgKiBwdHJbMTowXSA9
PSBNTVVfTk9STUFMX1BUX1VQREFURToNCj4gKyAqIFVwZGF0ZXMgYW4gZW50cnkgaW4gYSBwYWdl
IHRhYmxlIGJlbG9uZ2luZyB0byBQRkQuIElmIHVwZGF0aW5nIGFuIEwxIHRhYmxlLA0KPiArICog
YW5kIHRoZSBuZXcgdGFibGUgZW50cnkgaXMgdmFsaWQvcHJlc2VudCwgdGhlIG1hcHBlZCBmcmFt
ZSBtdXN0IGJlbG9uZw0KPiB0bw0KPiArICogRkQuIElmIGF0dGVtcHRpbmcgdG8gbWFwIGFuIEkv
TyBwYWdlIHRoZW4gdGhlIGNhbGxlciBhc3N1bWVzIHRoZQ0KPiBwcml2aWxlZ2UNCj4gKyAqIG9m
IHRoZSBGRC4NCj4gKyAqIEZEID09IERPTUlEX0lPOiBQZXJtaXQgL29ubHkvIEkvTyBtYXBwaW5n
cywgYXQgdGhlIHByaXYgbGV2ZWwgb2YgdGhlDQo+IGNhbGxlci4NCj4gKyAqIEZEID09IERPTUlE
X1hFTjogTWFwIHJlc3RyaWN0ZWQgYXJlYXMgb2YgWGVuJ3MgaGVhcCBzcGFjZS4NCj4gKyAqIHB0
cls6Ml0gIC0tIE1hY2hpbmUgYWRkcmVzcyBvZiB0aGUgcGFnZS10YWJsZSBlbnRyeSB0byBtb2Rp
ZnkuDQo+ICsgKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZS4NCj4gKyAqDQo+ICsgKiBUaGVy
ZSBhbHNvIGNlcnRhaW4gaW1wbGljaXQgcmVxdWlyZW1lbnRzIHdoZW4gdXNpbmcgdGhpcyBoeXBl
cmNhbGwuIFRoZQ0KPiArICogcGFnZXMgdGhhdCBtYWtlIHVwIGEgcGFnZXRhYmxlIG11c3QgYmUg
bWFwcGVkIHJlYWQtb25seSBpbiB0aGUgZ3Vlc3QuDQo+ICsgKiBUaGlzIHByZXZlbnRzIHVuY29u
dHJvbGxlZCBndWVzdCB1cGRhdGVzIHRvIHRoZSBwYWdldGFibGUuIFhlbiBzdHJpY3RseQ0KPiAr
ICogZW5mb3JjZXMgdGhpcywgYW5kIHdpbGwgZGlzYWxsb3cgYW55IHBhZ2V0YWJsZSB1cGRhdGUg
d2hpY2ggd2lsbCBlbmQgdXANCj4gKyAqIG1hcHBpbmcgcGFnZXRhYmxlIHBhZ2UgUlcsIGFuZCB3
aWxsIGRpc2FsbG93IHVzaW5nIGFueSB3cml0YWJsZSBwYWdlIGFzDQo+IGENCj4gKyAqIHBhZ2V0
YWJsZS4gSW4gcHJhY3RpY2UgaXQgbWVhbnMgdGhhdCB3aGVuIGNvbnN0cnVjdGluZyBhIHBhZ2Ug
dGFibGUgZm9yIGENCj4gKyAqIHByb2Nlc3MsIHRocmVhZCwgZXRjLCB3ZSBNVVNUIGJlIHZlcnkg
ZGlsbGlnaWVudCBpbiBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6DQo+ICsgKiAgMSkuIFN0YXJ0IHdp
dGggdG9wLWxldmVsIHBhZ2UgKFBHRCBvciBpbiBYZW4gbGFuZ3VhZ2U6IEw0KS4gRmlsbCBvdXQN
Cj4gKyAqICAgICAgdGhlIGVudHJpZXMuDQo+ICsgKiAgMikuIEtlZXAgb24gZ29pbmcsIGZpbGxp
bmcgb3V0IHRoZSB1cHBlciAoUFVEIG9yIEwzKSwgYW5kIG1pZGRsZSAoUE1EDQo+ICsgKiAgICAg
IG9yIEwyKS4NCj4gKyAqICAzKS4gU3RhcnQgZmlsbGluZyBvdXQgdGhlIFBURSB0YWJsZSAoTDEp
IHdpdGggdGhlIFBURSBlbnRyaWVzLiBPbmNlDQo+ICsgKiAgCWRvbmUsIG1ha2Ugc3VyZSB0byBz
ZXQgZWFjaCBvZiB0aG9zZSBlbnRyaWVzIHRvIFJPIChzbyB3cml0ZWFibGUgYml0DQo+ICsgKiAg
CWlzIHVuc2V0KS4gT25jZSB0aGF0IGhhcyBiZWVuIGNvbXBsZXRlZCwgc2V0IHRoZSBQTUQgKEwy
KSBmb3IgdGhpcw0KPiArICogIAlQVEUgdGFibGUgYXMgUk8uDQo+ICsgKiAgNCkuIFdoZW4gY29t
cGxldGVkIHdpdGggYWxsIG9mIHRoZSBQTUQgKEwyKSBlbnRyaWVzLCBhbmQgYWxsIG9mIHRoZW0N
Cj4gaGF2ZQ0KPiArICogIAliZWVuIHNldCB0byBSTywgbWFrZSBzdXJlIHRvIHNldCBSTyB0aGUg
UFVEIChMMykuIERvIHRoZSBzYW1lDQo+ICsgKiAgCW9wZXJhdGlvbiBvbiBQR0QgKEw0KSBwYWdl
dGFibGUgZW50cmllcyB0aGF0IGhhdmUgYSBQVUQgKEwzKSBlbnRyeS4NCj4gKyAqICA1KS4gTm93
IGJlZm9yZSB5b3UgY2FuIHVzZSB0aG9zZSBwYWdlcyAoc28gc2V0dGluZyB0aGUgY3IzKSwgeW91
IE1VU1QNCj4gYWxzbw0KPiArICogICAgICBwaW4gdGhlbSBzbyB0aGF0IHRoZSBoeXBlcnZpc29y
IGNhbiB2ZXJpZnkgdGhlIGVudHJpZXMuIFRoaXMgaXMgZG9uZQ0KPiArICogICAgICB2aWEgdGhl
IEhZUEVSVklTT1JfbW11ZXh0X29wKE1NVUVYVF9QSU5fTDRfVEFCTEUsIGd1ZXN0DQo+IHBoeXNp
Y2FsIGZyYW1lDQo+ICsgKiAgICAgIG51bWJlciBvZiB0aGUgUEdEIChMNCkpLiBBbmQgdGhpcyBw
b2ludCB0aGUNCj4gSFlQRVJWSVNPUl9tbXVleHRfb3AoDQo+ICsgKiAgICAgIE1NVUVYVF9ORVdf
QkFTRVBUUiwgZ3Vlc3QgcGh5c2ljYWwgZnJhbWUgbnVtYmVyIG9mIHRoZSBQR0QNCj4gKEw0KSkg
Y2FuIGJlDQo+ICsgKiAgICAgIGlzc3VlZC4NCj4gKyAqIEZvciAzMi1iaXQgZ3Vlc3RzLCB0aGUg
TDQgaXMgbm90IHVzZWQgKGFzIHRoZXJlIGlzIGxlc3MgcGFnZXRhYmxlcyksIHNvDQo+ICsgKiBp
bnN0ZWFkIHVzZSBMMy4NCj4gKyAqIEF0IHRoaXMgcG9pbnQgdGhlIHBhZ2V0YWJsZXMgY2FuIGJl
IG1vZGlmaWVkIHVzaW5nIHRoZQ0KPiBNTVVfTk9STUFMX1BUX1VQREFURQ0KPiArICogaHlwZXJj
YWxsLiBBbHNvIGlmIHNvIGRlc2lyZWQgdGhlIE9TIGNhbiBhbHNvIHRyeSB0byB3cml0ZSB0byB0
aGUgUFRFDQo+ICsgKiBhbmQgYmUgdHJhcHBlZCBieSB0aGUgaHlwZXJ2aXNvciAoYXMgdGhlIFBU
RSBlbnRyeSBpcyBSTykuDQo+ICsgKg0KPiArICogVG8gZGVhbGxvY2F0ZSB0aGUgcGFnZXMsIHRo
ZSBvcGVyYXRpb25zIGFyZSB0aGUgcmV2ZXJzZSBvZiB0aGUgc3RlcHMNCj4gKyAqIG1lbnRpb25l
ZCBhYm92ZS4gVGhlIGFyZ3VtZW50IGlzIE1NVUVYVF9VTlBJTl9UQUJMRSBmb3IgYWxsIGxldmVs
cw0KPiBhbmQgdGhlDQo+ICsgKiBwYWdldGFibGUgTVVTVCBub3QgYmUgaW4gdXNlIChtZWFuaW5n
IHRoYXQgdGhlIGNyMyBpcyBub3Qgc2V0IHRvIGl0KS4NCj4gKyAqDQo+ICsgKiBwdHJbMTowXSA9
PSBNTVVfTUFDSFBIWVNfVVBEQVRFOg0KPiArICogVXBkYXRlcyBhbiBlbnRyeSBpbiB0aGUgbWFj
aGluZS0+cHNldWRvLXBoeXNpY2FsIG1hcHBpbmcgdGFibGUuDQo+ICsgKiBwdHJbOjJdICAtLSBN
YWNoaW5lIGFkZHJlc3Mgd2l0aGluIHRoZSBmcmFtZSB3aG9zZSBtYXBwaW5nIHRvIG1vZGlmeS4N
Cj4gKyAqICAgICAgICAgICAgIFRoZSBmcmFtZSBtdXN0IGJlbG9uZyB0byB0aGUgRkQsIGlmIG9u
ZSBpcyBzcGVjaWZpZWQuDQo+ICsgKiB2YWwgICAgICAtLSBWYWx1ZSB0byB3cml0ZSBpbnRvIHRo
ZSBtYXBwaW5nIGVudHJ5Lg0KPiArICoNCj4gKyAqIHB0clsxOjBdID09IE1NVV9QVF9VUERBVEVf
UFJFU0VSVkVfQUQ6DQo+ICsgKiBBcyBNTVVfTk9STUFMX1BUX1VQREFURSBhYm92ZSwgYnV0IEEv
RCBiaXRzIGN1cnJlbnRseSBpbiB0aGUgUFRFDQo+IGFyZSBPUmVkDQo+ICsgKiB3aXRoIHRob3Nl
IGluIEB2YWwuDQo+ICsgKg0KPiArICogQHZhbCBpcyB1c3VhbGx5IHRoZSBtYWNoaW5lIGZyYW1l
IG51bWJlciBhbG9uZyB3aXRoIHNvbWUgYXR0cmlidXRlcy4NCj4gKyAqIFRoZSBhdHRyaWJ1dGVz
IGJ5IGRlZmF1bHQgZm9sbG93IHRoZSBhcmNoaXRlY3R1cmUgZGVmaW5lZCBiaXRzLiBNZWFuaW5n
DQo+IHRoYXQNCj4gKyAqIGlmIHRoaXMgaXMgYSBYODZfNjQgbWFjaGluZSBhbmQgZm91ciBwYWdl
IHRhYmxlIGxheW91dCBpcyB1c2VkLCB0aGUgbGF5b3V0DQo+ICsgKiBvZiB2YWwgaXM6DQo+ICsg
KiAgLSA2MyBpZiBzZXQgbWVhbnMgTm8gZXhlY3V0ZSAoTlgpDQo+ICsgKiAgLSA0Ni0xMyB0aGUg
bWFjaGluZSBmcmFtZSBudW1iZXINCj4gKyAqICAtIDEyIGF2YWlsYWJsZSBmb3IgZ3Vlc3QNCj4g
KyAqICAtIDExIGF2YWlsYWJsZSBmb3IgZ3Vlc3QNCj4gKyAqICAtIDEwIGF2YWlsYWJsZSBmb3Ig
Z3Vlc3QNCj4gKyAqICAtIDkgYXZhaWxhYmxlIGZvciBndWVzdA0KPiArICogIC0gOCBnbG9iYWwN
Cj4gKyAqICAtIDcgUEFUIChQU0UgaXMgZGlzYWJsZWQsIG11c3QgdXNlIGh5cGVyY2FsbCB0byBt
YWtlIDRNQiBvciAyTUIgcGFnZXMpDQo+ICsgKiAgLSA2IGRpcnR5DQo+ICsgKiAgLSA1IGFjY2Vz
c2VkDQo+ICsgKiAgLSA0IHBhZ2UgY2FjaGVkIGRpc2FibGVkDQo+ICsgKiAgLSAzIHBhZ2Ugd3Jp
dGUgdGhyb3VnaA0KPiArICogIC0gMiB1c2Vyc3BhY2UgYWNjZXNzaWJsZQ0KPiArICogIC0gMSB3
cml0ZWFibGUNCj4gKyAqICAtIDAgcHJlc2VudA0KPiArICoNCj4gKyAqICBUaGUgb25lIGJpdHMg
dGhhdCBkb2VzIG5vdCBmaXQgd2l0aCB0aGUgZGVmYXVsdCBsYXlvdXQgaXMgdGhlIFBBR0VfUFNF
DQo+ICsgKiAgYWxzbyBjYWxsZWQgUEFHRV9QQVQpLiBUaGUgTU1VRVhUX1tVTl1NQVJLX1NVUEVS
IGFyZ3VtZW50cyB0bw0KPiB0aGUNCj4gKyAqICBIWVBFUlZJU09SX21tdWV4dF9vcCBzZXJ2ZSBh
cyBtZWNoYW5pc20gdG8gc2V0IGEgcGFnZXRhYmxlIHRvIGJlDQo+IDRNQg0KPiArICogIChvciAy
TUIpIGluc3RlYWQgb2YgdXNpbmcgdGhlIFBBR0VfUFNFIGJpdC4NCj4gKyAqDQo+ICsgKiAgVGhl
IHJlYXNvbiB0aGF0IHRoZSBQQUdFX1BTRSAoYml0IDcpIGlzIG5vdCBiZWluZyB1dGlsaXplZCBp
cyBkdWUgdG8gWGVuDQo+ICsgKiAgdXNpbmcgaXQgYXMgdGhlIFBhZ2UgQXR0cmlidXRlIFRhYmxl
IChQQVQpIGJpdCAtIGZvciBkZXRhaWxzIG9uIGl0IHBsZWFzZQ0KPiArICogIHJlZmVyIHRvIElu
dGVsIFNETSAxMC4xMi4gVGhlIFBBVCBhbGxvd3MgdG8gc2V0IHRoZSBjYWNoaW5nIGF0dHJpYnV0
ZXMgb2YNCj4gKyAqICBwYWdlcyBpbnN0ZWFkIG9mIHVzaW5nIE1UUlJzLg0KPiArICoNCj4gKyAq
ICBUaGUgUEFUIE1TUiBpcyBhcyBmb2xsb3dzIChpdCBpcyBhIDY0LWJpdCB2YWx1ZSwgZWFjaCBl
bnRyeSBpcyA4IGJpdHMpOg0KPiArICogICAgICAgICAgICAgICAgICAgIFBBVDQgICAgICAgICAg
ICAgICAgIFBBVDANCj4gKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0t
LSstLS0tKw0KPiArICogIHwgVUMgIHwgVUMtIHwgV0MgfCBXQiB8IFVDIHwgVUMtIHwgV0MgfCBX
QiB8ICA8PSBMaW51eA0KPiArICogICstLS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSst
LS0tKy0tLS0rDQo+ICsgKiAgfCBVQyAgfCBVQy0gfCBXVCB8IFdCIHwgVUMgfCBVQy0gfCBXVCB8
IFdCIHwgIDw9IEJJT1MgKGRlZmF1bHQgd2hlbg0KPiBtYWNoaW5lIGJvb3RzKQ0KPiArICogICst
LS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0rDQo+ICsgKiAgfCByc3Yg
fCByc3YgfCBXUCB8IFdDIHwgVUMgfCBVQy0gfCBXVCB8IFdCIHwgIDw9IFhlbg0KPiArICogICst
LS0tLSstLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0rDQo+ICsgKg0KPiArICog
IFRoZSBsb29rdXAgb2YgdGhpcyBpbmRleCB0YWJsZSB0cmFuc2xhdGVzIHRvIGxvb2tpbmcgdXAN
Cj4gKyAqICBCaXQgNywgQml0IDQsIGFuZCBCaXQgMyBvZiB2YWwgZW50cnk6DQo+ICsgKg0KPiAr
ICogIFBBVC9QU0UgKGJpdCA3KSAuLi4gUENEIChiaXQgNCkgLi4gUFdUIChiaXQgMykuDQo+ICsg
Kg0KPiArICogIElmIGFsbCBiaXRzIGFyZSBvZmYsIHRoZW4gd2UgYXJlIHVzaW5nIFBBVDAuIElm
IGJpdCAzIHR1cm5lZCBvbiwNCj4gKyAqICB0aGVuIHdlIGFyZSB1c2luZyBQQVQxLCBpZiBiaXQg
MyBhbmQgYml0IDQsIHRoZW4gUEFUMi4uDQo+ICsgKg0KPiArICogIEFzIHlvdSBjYW4gc2VlLCB0
aGUgTGludXggUEFUMSB0cmFuc2xhdGVzIHRvIFBBVDQgdW5kZXIgWGVuLiBXaGljaA0KPiBtZWFu
cw0KPiArICogIHRoYXQgaWYgYSBndWVzdCB0aGF0IGZvbGxvd3MgTGludXgncyBQQVQgc2V0dXAg
YW5kIHdvdWxkIGxpa2UgdG8gc2V0IFdyaXRlDQo+ICsgKiAgQ29tYmluZWQgb24gcGFnZXMgaXQg
TVVTVCB1c2UgUEFUNCBlbnRyeS4gTWVhbmluZyB0aGF0IEJpdCA3DQo+IChQQUdFX1BBVCkgaXMN
Cj4gKyAqICBzZXQuIEZvciBleGFtcGxlLCB1bmRlciBMaW51eCBpdCBvbmx5IHVzZXMgUEFUMCwg
UEFUMSwgYW5kIFBBVDIgZm9yIHRoZQ0KPiArICogIGNhY2hpbmcgYXM6DQo+ICsgKg0KPiArICog
ICBXQiA9IG5vbmUgKHNvIFBBVDApDQo+ICsgKiAgIFdDID0gUFdUIChiaXQgMyBvbikNCj4gKyAq
ICAgVUMgPSBQV1QgfCBQQ0QgKGJpdCAzIGFuZCA0IGFyZSBvbikuDQo+ICsgKg0KPiArICogVG8g
bWFrZSBpdCB3b3JrIHdpdGggWGVuLCBpdCBuZWVkcyB0byB0cmFuc2xhdGUgdGhlIFdDIGJpdCBh
cyBzbzoNCj4gKyAqDQo+ICsgKiAgUFdUIChzbyBiaXQgMyBvbikgLS0+IFBBVCAoc28gYml0IDcg
aXMgb24pIGFuZCBjbGVhciBiaXQgMw0KPiArICoNCj4gKyAqIEFuZCB0byB0cmFuc2xhdGUgYmFj
ayBpdCB3b3VsZDoNCj4gKyAqDQo+ICsgKiBQQVQgKGJpdCA3IG9uKSAtLT4gUFdUIChiaXQgMyBv
bikgYW5kIGNsZWFyIGJpdCA3Lg0KPiArICovDQo+ICsjZGVmaW5lIE1NVV9OT1JNQUxfUFRfVVBE
QVRFICAgICAgMCAvKiBjaGVja2VkICcqcHRyID0gdmFsJy4gcHRyIGlzIE1BLg0KPiAqLw0KPiAr
I2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRFICAgICAgIDEgLyogcHRyID0gTUEgb2YgZnJhbWUg
dG8gbW9kaWZ5DQo+IGVudHJ5IGZvciAqLw0KPiArI2RlZmluZSBNTVVfUFRfVVBEQVRFX1BSRVNF
UlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZhbCB8DQo+ICgqcHRyJihBfEQpKSAqLw0K
PiArDQo+ICsvKg0KPiArICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMNCj4gKyAqDQo+ICsgKiBg
IGVudW0gbmVnX2Vycm5vdmFsDQo+ICsgKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4dF9v
cF90IHVvcHNbXSwNCj4gKyAqIGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50LA0KPiArICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLA0K
PiArICogYCAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkNCj4g
KyAqLw0KPiArLyogSFlQRVJWSVNPUl9tbXVleHRfb3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVl
eHRfb3Agc3RydWN0dXJlcy4NCj4gKyAqIEEgZm9yZWlnbmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZp
ZWQgKG9yIERPTUlEX1NFTEYgZm9yIG5vbmUpLg0KPiArICogV2hlcmUgdGhlIEZEIGhhcyBzb21l
IGVmZmVjdCwgaXQgaXMgZGVzY3JpYmVkIGJlbG93Lg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhU
XyhVTilQSU5fKl9UQUJMRQ0KPiArICogbWZuOiBNYWNoaW5lIGZyYW1lIG51bWJlciB0byBiZSAo
dW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLg0KPiArICogICAgICBUaGUgZnJhbWUgbXVzdCBiZWxv
bmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lmaWVkLg0KPiArICoNCj4gKyAqIGNtZDogTU1V
RVhUX05FV19CQVNFUFRSDQo+ICsgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBw
YWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuDQo+ICsgKg0KPiArICogY21kOiBNTVVF
WFRfTkVXX1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldDQo+ICsgKiBtZm46IE1hY2hpbmUgZnJh
bWUgbnVtYmVyIG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUNCj4gKyAq
ICAgICAgd2hlbiBpbiB1c2VyIHNwYWNlLg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhUX1RMQl9G
TFVTSF9MT0NBTA0KPiArICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwg
VExCLg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhUX0lOVkxQR19MT0NBTA0KPiArICogbGluZWFy
X2FkZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZsdXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLg0K
PiArICoNCj4gKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9NVUxUSQ0KPiArICogdmNwdW1hc2s6
IFBvaW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNoZWQuDQo+ICsgKg0KPiArICog
Y21kOiBNTVVFWFRfSU5WTFBHX01VTFRJDQo+ICsgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFkZHJl
c3MgdG8gYmUgZmx1c2hlZC4NCj4gKyAqIHZjcHVtYXNrOiBQb2ludGVyIHRvIGJpdG1hcCBvZiBW
Q1BVcyB0byBiZSBmbHVzaGVkLg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9B
TEwNCj4gKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVzIGFsbCBWQ1BVcycgVExC
cy4NCj4gKyAqDQo+ICsgKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMDQo+ICsgKiBsaW5lYXJfYWRk
cjogTGluZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExCcy4NCj4g
KyAqDQo+ICsgKiBjbWQ6IE1NVUVYVF9GTFVTSF9DQUNIRQ0KPiArICogTm8gYWRkaXRpb25hbCBh
cmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLg0KPiArICoN
Cj4gKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTA0KPiArICogTm8gYWRkaXRpb25h
bCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzDQo+ICsg
KiBvbiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhUX1NF
VF9MRFQNCj4gKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyBvZiBMRFQgYmFzZSAoTkIu
IG11c3QgYmUgcGFnZS1hbGlnbmVkKS4NCj4gKyAqIG5yX2VudHM6IE51bWJlciBvZiBlbnRyaWVz
IGluIExEVC4NCj4gKyAqDQo+ICsgKiBjbWQ6IE1NVUVYVF9DTEVBUl9QQUdFDQo+ICsgKiBtZm46
IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQuDQo+ICsgKg0KPiArICogY21kOiBN
TVVFWFRfQ09QWV9QQUdFDQo+ICsgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIHRoZSBk
ZXN0aW5hdGlvbiBwYWdlLg0KPiArICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2Yg
dGhlIHNvdXJjZSBwYWdlLg0KPiArICoNCj4gKyAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NVUEVS
DQo+ICsgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRv
IGJlIFt1bl1tYXJrZWQuDQo+ICsgKi8NCj4gKy8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8NCj4g
KyNkZWZpbmUgTU1VRVhUX1BJTl9MMV9UQUJMRSAgICAgIDANCj4gKyNkZWZpbmUgTU1VRVhUX1BJ
Tl9MMl9UQUJMRSAgICAgIDENCj4gKyNkZWZpbmUgTU1VRVhUX1BJTl9MM19UQUJMRSAgICAgIDIN
Cj4gKyNkZWZpbmUgTU1VRVhUX1BJTl9MNF9UQUJMRSAgICAgIDMNCj4gKyNkZWZpbmUgTU1VRVhU
X1VOUElOX1RBQkxFICAgICAgIDQNCj4gKyNkZWZpbmUgTU1VRVhUX05FV19CQVNFUFRSICAgICAg
IDUNCj4gKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9MT0NBTCAgIDYNCj4gKyNkZWZpbmUgTU1V
RVhUX0lOVkxQR19MT0NBTCAgICAgIDcNCj4gKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9NVUxU
SSAgIDgNCj4gKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxUSSAgICAgIDkNCj4gKyNkZWZpbmUg
TU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTANCj4gKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19BTEwg
ICAgICAgMTENCj4gKyNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAgMTINCj4gKyNkZWZp
bmUgTU1VRVhUX1NFVF9MRFQgICAgICAgICAgMTMNCj4gKyNkZWZpbmUgTU1VRVhUX05FV19VU0VS
X0JBU0VQVFIgMTUNCj4gKyNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYNCj4gKyNk
ZWZpbmUgTU1VRVhUX0NPUFlfUEFHRSAgICAgICAgMTcNCj4gKyNkZWZpbmUgTU1VRVhUX0ZMVVNI
X0NBQ0hFX0dMT0JBTCAxOA0KPiArI2RlZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQ0K
PiArI2RlZmluZSBNTVVFWFRfVU5NQVJLX1NVUEVSICAgICAyMA0KPiArLyogYCB9ICovDQo+ICsN
Cj4gKyNpZm5kZWYgX19BU1NFTUJMWV9fDQo+ICtzdHJ1Y3QgbW11ZXh0X29wIHsNCj4gKyAgICB1
bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBlbnVtIG1tdWV4dF9jbWQgKi8NCj4gKyAgICB1bmlvbiB7
DQo+ICsgICAgICAgIC8qIFtVTl1QSU5fVEFCTEUsIE5FV19CQVNFUFRSLCBORVdfVVNFUl9CQVNF
UFRSDQo+ICsgICAgICAgICAqIENMRUFSX1BBR0UsIENPUFlfUEFHRSwgW1VOXU1BUktfU1VQRVIg
Ki8NCj4gKyAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47DQo+ICsgICAgICAgIC8qIElOVkxQR19M
T0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLw0KPiArICAgICAgICBVTE9OR19QVFIgbGluZWFy
X2FkZHI7DQo+ICsgICAgfSBhcmcxOw0KPiArICAgIHVuaW9uIHsNCj4gKyAgICAgICAgLyogU0VU
X0xEVCAqLw0KPiArICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsNCj4gKyAgICAgICAgLyog
VExCX0ZMVVNIX01VTFRJLCBJTlZMUEdfTVVMVEkgKi8NCj4gKyNpZiBfX1hFTl9JTlRFUkZBQ0Vf
VkVSU0lPTl9fID49IDB4MDAwMzAyMDUNCj4gKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25z
dF92b2lkKSB2Y3B1bWFzazsNCj4gKyNlbHNlDQo+ICsgICAgICAgIGNvbnN0IHZvaWQgKnZjcHVt
YXNrOw0KPiArI2VuZGlmDQo+ICsgICAgICAgIC8qIENPUFlfUEFHRSAqLw0KPiArICAgICAgICB4
ZW5fcGZuX3Qgc3JjX21mbjsNCj4gKyAgICB9IGFyZzI7DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1
Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobW11
ZXh0X29wX3QpOw0KPiArI2VuZGlmDQo+ICsNCj4gKy8qDQo+ICsgKiBgIGVudW0gbmVnX2Vycm5v
dmFsDQo+ICsgKiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdfUFRSIHZhLCB1
NjQgdmFsLA0KPiArICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdXZtX2Zs
YWdzIGZsYWdzKQ0KPiArICogYA0KPiArICogYCBlbnVtIG5lZ19lcnJub3ZhbA0KPiArICogYCBI
WVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0
DQo+IHZhbCwNCj4gKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbnVtIHV2bV9mbGFncyBmbGFncywNCj4gKyAqIGAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlkKQ0KPiArICogYA0KPiArICogYCBAdmE6IFRo
ZSB2aXJ0dWFsIGFkZHJlc3Mgd2hvc2UgbWFwcGluZyB3ZSB3YW50IHRvIGNoYW5nZQ0KPiArICog
YCBAdmFsOiBUaGUgbmV3IHBhZ2UgdGFibGUgZW50cnksIG11c3QgY29udGFpbiBhIG1hY2hpbmUg
YWRkcmVzcw0KPiArICogYCBAZmxhZ3M6IENvbnRyb2wgVExCIGZsdXNoZXMNCj4gKyAqLw0KPiAr
LyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3MnIHRvIHVwZGF0ZV92YV9tYXBwaW5nLiBUaGV5
IGNhbiBiZSBPUmVkLiAqLw0KPiArLyogV2hlbiBzcGVjaWZ5aW5nIFVWTUZfTVVMVEksIGFsc28g
T1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4gICAqLw0KPiArLyogVVZNRl9MT0NBTCBp
cyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRtYXAgcG9pbnRlci4NCj4gKi8NCj4g
Ky8qIGAgZW51bSB1dm1fZmxhZ3MgeyAqLw0KPiArI2RlZmluZSBVVk1GX05PTkUgICAgICAgICAg
ICh4ZW5fbWtfdWxvbmcoMCk8PDApIC8qIE5vIGZsdXNoaW5nIGF0IGFsbC4gICAqLw0KPiArI2Rl
ZmluZSBVVk1GX1RMQl9GTFVTSCAgICAgICh4ZW5fbWtfdWxvbmcoMSk8PDApIC8qIEZsdXNoIGVu
dGlyZSBUTEIocykuDQo+ICovDQo+ICsjZGVmaW5lIFVWTUZfSU5WTFBHICAgICAgICAgKHhlbl9t
a191bG9uZygyKTw8MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuDQo+ICovDQo+ICsjZGVmaW5l
IFVWTUZfRkxVU0hUWVBFX01BU0sgKHhlbl9ta191bG9uZygzKTw8MCkNCj4gKyNkZWZpbmUgVVZN
Rl9NVUxUSSAgICAgICAgICAoeGVuX21rX3Vsb25nKDApPDwyKSAvKiBGbHVzaCBzdWJzZXQgb2Yg
VExCcy4NCj4gKi8NCj4gKyNkZWZpbmUgVVZNRl9MT0NBTCAgICAgICAgICAoeGVuX21rX3Vsb25n
KDApPDwyKSAvKiBGbHVzaCBsb2NhbCBUTEIuICAgICAgKi8NCj4gKyNkZWZpbmUgVVZNRl9BTEwg
ICAgICAgICAgICAoeGVuX21rX3Vsb25nKDEpPDwyKSAvKiBGbHVzaCBhbGwgVExCcy4gICAgICAg
Ki8NCj4gKy8qIGAgfSAqLw0KPiArDQo+ICsvKg0KPiArICogQ29tbWFuZHMgdG8gSFlQRVJWSVNP
Ul9jb25zb2xlX2lvKCkuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ09OU09MRUlPX3dyaXRlICAgICAg
ICAgMA0KPiArI2RlZmluZSBDT05TT0xFSU9fcmVhZCAgICAgICAgICAxDQo+ICsNCj4gKy8qDQo+
ICsgKiBDb21tYW5kcyB0byBIWVBFUlZJU09SX3ZtX2Fzc2lzdCgpLg0KPiArICovDQo+ICsjZGVm
aW5lIFZNQVNTVF9DTURfZW5hYmxlICAgICAgICAgICAgICAgIDANCj4gKyNkZWZpbmUgVk1BU1NU
X0NNRF9kaXNhYmxlICAgICAgICAgICAgICAgMQ0KPiArDQo+ICsvKiB4ODYvMzIgZ3Vlc3RzOiBz
aW11bGF0ZSBmdWxsIDRHQiBzZWdtZW50IGxpbWl0cy4gKi8NCj4gKyNkZWZpbmUgVk1BU1NUX1RZ
UEVfNGdiX3NlZ21lbnRzICAgICAgICAgMA0KPiArDQo+ICsvKiB4ODYvMzIgZ3Vlc3RzOiB0cmFw
ICh2ZWN0b3IgMTUpIHdoZW5ldmVyIGFib3ZlIHZtYXNzaXN0IGlzIHVzZWQuICovDQo+ICsjZGVm
aW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdtZW50c19ub3RpZnkgIDENCj4gKw0KPiArLyoNCj4gKyAq
IHg4NiBndWVzdHM6IHN1cHBvcnQgd3JpdGVzIHRvIGJvdHRvbS1sZXZlbCBQVEVzLg0KPiArICog
TkIxLiBQYWdlLWRpcmVjdG9yeSBlbnRyaWVzIGNhbm5vdCBiZSB3cml0dGVuLg0KPiArICogTkIy
LiBHdWVzdCBtdXN0IGNvbnRpbnVlIHRvIHJlbW92ZSBhbGwgd3JpdGFibGUgbWFwcGluZ3Mgb2Yg
UFRFcy4NCj4gKyAqLw0KPiArI2RlZmluZSBWTUFTU1RfVFlQRV93cml0YWJsZV9wYWdldGFibGVz
ICAyDQo+ICsNCj4gKy8qIHg4Ni9QQUUgZ3Vlc3RzOiBzdXBwb3J0IFBEUFRzIGFib3ZlIDRHQi4g
Ki8NCj4gKyNkZWZpbmUgVk1BU1NUX1RZUEVfcGFlX2V4dGVuZGVkX2NyMyAgICAgMw0KPiArDQo+
ICsvKg0KPiArICogeDg2IGd1ZXN0czogU2FuZSBiZWhhdmlvdXIgZm9yIHZpcnR1YWwgaW9wbA0K
PiArICogIC0gdmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBkb19pcmV0KCkgaHlwZXJjYWxscy4N
Cj4gKyAqICAtIHZpcnR1YWwgaW9wbCByZXBvcnRlZCBpbiBib3VuY2UgZnJhbWVzLg0KPiArICog
IC0gZ3Vlc3Qga2VybmVscyBhc3N1bWVkIHRvIGJlIGxldmVsIDAgZm9yIHRoZSBwdXJwb3NlIG9m
IGlvcGwgY2hlY2tzLg0KPiArICovDQo+ICsjZGVmaW5lIFZNQVNTVF9UWVBFX2FyY2hpdGVjdHVy
YWxfaW9wbCAgIDQNCj4gKw0KPiArLyoNCj4gKyAqIHg4Ni82NCBndWVzdHM6IHN0cmljdGx5IGhp
ZGUgTTJQIGZyb20gdXNlciBtb2RlLg0KPiArICogVGhpcyBhbGxvd3MgdGhlIGd1ZXN0IHRvIGNv
bnRyb2wgcmVzcGVjdGl2ZSBoeXBlcnZpc29yIGJlaGF2aW9yOg0KPiArICogLSB3aGVuIG5vdCBz
ZXQsIEw0IHRhYmxlcyBnZXQgY3JlYXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHNsb3QgYmxhbmss
DQo+ICsgKiAgIGFuZCB3aGVuZXZlciB0aGUgTDQgdGFibGUgZ2V0cyB1c2VkIGFzIGEga2VybmVs
IG9uZSB0aGUgbWlzc2luZw0KPiArICogICBtYXBwaW5nIGdldHMgaW5zZXJ0ZWQsDQo+ICsgKiAt
IHdoZW4gc2V0LCBMNCB0YWJsZXMgZ2V0IGNyZWF0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSBzbG90
IGluaXRpYWxpemVkDQo+ICsgKiAgIGFzIGJlZm9yZSwgYW5kIHdoZW5ldmVyIHRoZSBMNCB0YWJs
ZSBnZXRzIHVzZWQgYXMgYSB1c2VyIG9uZSB0aGUNCj4gKyAqICAgbWFwcGluZyBnZXRzIHphcHBl
ZC4NCj4gKyAqLw0KPiArI2RlZmluZSBWTUFTU1RfVFlQRV9tMnBfc3RyaWN0ICAgICAgICAgICAz
Mg0KPiArDQo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA2MDANCj4g
KyNkZWZpbmUgTUFYX1ZNQVNTVF9UWVBFICAgICAgICAgICAgICAgICAgMw0KPiArI2VuZGlmDQo+
ICsNCj4gKy8qIERvbWFpbiBpZHMgPj0gRE9NSURfRklSU1RfUkVTRVJWRUQgY2Fubm90IGJlIHVz
ZWQgZm9yIG9yZGluYXJ5DQo+IGRvbWFpbnMuICovDQo+ICsjZGVmaW5lIERPTUlEX0ZJUlNUX1JF
U0VSVkVEIHhlbl9ta191aW50KDB4N0ZGMCkNCj4gKw0KPiArLyogRE9NSURfU0VMRiBpcyB1c2Vk
IGluIGNlcnRhaW4gY29udGV4dHMgdG8gcmVmZXIgdG8gb25lc2VsZi4gKi8NCj4gKyNkZWZpbmUg
RE9NSURfU0VMRiAgICAgICAgICAgeGVuX21rX3VpbnQoMHg3RkYwKQ0KPiArDQo+ICsvKg0KPiAr
ICogRE9NSURfSU8gaXMgdXNlZCB0byByZXN0cmljdCBwYWdlLXRhYmxlIHVwZGF0ZXMgdG8gbWFw
cGluZyBJL08NCj4gbWVtb3J5Lg0KPiArICogQWx0aG91Z2ggbm8gRm9yZWlnbiBEb21haW4gbmVl
ZCBiZSBzcGVjaWZpZWQgdG8gbWFwIEkvTyBwYWdlcywNCj4gRE9NSURfSU8NCj4gKyAqIGlzIHVz
ZWZ1bCB0byBlbnN1cmUgdGhhdCBubyBtYXBwaW5ncyB0byB0aGUgT1MncyBvd24gaGVhcCBhcmUN
Cj4gYWNjaWRlbnRhbGx5DQo+ICsgKiBpbnN0YWxsZWQuIChlLmcuLCBpbiBMaW51eCB0aGlzIGNv
dWxkIGNhdXNlIGhhdm9jIGFzIHJlZmVyZW5jZSBjb3VudHMNCj4gKyAqIGFyZW4ndCBhZGp1c3Rl
ZCBvbiB0aGUgSS9PLW1hcHBpbmcgY29kZSBwYXRoKS4NCj4gKyAqIFRoaXMgb25seSBtYWtlcyBz
ZW5zZSBpbiBNTVVFWFRfU0VUX0ZPUkVJR05ET00sIGJ1dCBpbiB0aGF0DQo+IGNvbnRleHQgY2Fu
DQo+ICsgKiBiZSBzcGVjaWZpZWQgYnkgYW55IGNhbGxpbmcgZG9tYWluLg0KPiArICovDQo+ICsj
ZGVmaW5lIERPTUlEX0lPICAgICAgICAgICAgIHhlbl9ta191aW50KDB4N0ZGMSkNCj4gKw0KPiAr
LyoNCj4gKyAqIERPTUlEX1hFTiBpcyB1c2VkIHRvIGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0
byBtYXAgcmVzdHJpY3RlZCBwYXJ0cw0KPiBvZg0KPiArICogWGVuJ3MgaGVhcCBzcGFjZSAoZS5n
LiwgdGhlIG1hY2hpbmVfdG9fcGh5cyB0YWJsZSkuDQo+ICsgKiBUaGlzIG9ubHkgbWFrZXMgc2Vu
c2UgaW4gTU1VRVhUX1NFVF9GT1JFSUdORE9NLCBhbmQgaXMgb25seQ0KPiBwZXJtaXR0ZWQgaWYN
Cj4gKyAqIHRoZSBjYWxsZXIgaXMgcHJpdmlsZWdlZC4NCj4gKyAqLw0KPiArI2RlZmluZSBET01J
RF9YRU4gICAgICAgICAgICB4ZW5fbWtfdWludCgweDdGRjIpDQo+ICsNCj4gKy8qDQo+ICsgKiBE
T01JRF9DT1cgaXMgdXNlZCBhcyB0aGUgb3duZXIgb2Ygc2hhcmFibGUgcGFnZXMgKi8NCj4gKyNk
ZWZpbmUgRE9NSURfQ09XICAgICAgICAgICAgeGVuX21rX3VpbnQoMHg3RkYzKQ0KPiArDQo+ICsv
KiBET01JRF9JTlZBTElEIGlzIHVzZWQgdG8gaWRlbnRpZnkgcGFnZXMgd2l0aCB1bmtub3duIG93
bmVyLiAqLw0KPiArI2RlZmluZSBET01JRF9JTlZBTElEICAgICAgICB4ZW5fbWtfdWludCgweDdG
RjQpDQo+ICsNCj4gKy8qIElkbGUgZG9tYWluLiAqLw0KPiArI2RlZmluZSBET01JRF9JRExFICAg
ICAgICAgICB4ZW5fbWtfdWludCgweDdGRkYpDQo+ICsNCj4gKyNpZm5kZWYgX19BU1NFTUJMWV9f
DQo+ICsNCj4gK3R5cGVkZWYgdWludDE2X3QgZG9taWRfdDsNCj4gKw0KPiArLyoNCj4gKyAqIFNl
bmQgYW4gYXJyYXkgb2YgdGhlc2UgdG8gSFlQRVJWSVNPUl9tbXVfdXBkYXRlKCkuDQo+ICsgKiBO
Qi4gVGhlIGZpZWxkcyBhcmUgbmF0dXJhbCBwb2ludGVyL2FkZHJlc3Mgc2l6ZSBmb3IgdGhpcyBh
cmNoaXRlY3R1cmUuDQo+ICsgKi8NCj4gK3N0cnVjdCBtbXVfdXBkYXRlIHsNCj4gKyAgICB1aW50
NjRfdCBwdHI7ICAgICAgIC8qIE1hY2hpbmUgYWRkcmVzcyBvZiBQVEUuICovDQo+ICsgICAgdWlu
dDY0X3QgdmFsOyAgICAgICAvKiBOZXcgY29udGVudHMgb2YgUFRFLiAgICAqLw0KPiArfTsNCj4g
K3R5cGVkZWYgc3RydWN0IG1tdV91cGRhdGUgbW11X3VwZGF0ZV90Ow0KPiArREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUobW11X3VwZGF0ZV90KTsNCj4gKw0KPiArLyoNCj4gKyAqIGAgZW51bSBuZWdf
ZXJybm92YWwNCj4gKyAqIGAgSFlQRVJWSVNPUl9tdWx0aWNhbGwobXVsdGljYWxsX2VudHJ5X3Qg
Y2FsbF9saXN0W10sDQo+ICsgKiBgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5yX2Nh
bGxzKTsNCj4gKyAqDQo+ICsgKiBOQi4gVGhlIGZpZWxkcyBhcmUgbG9naWNhbGx5IHRoZSBuYXR1
cmFsIHJlZ2lzdGVyIHNpemUgZm9yIHRoaXMNCj4gKyAqIGFyY2hpdGVjdHVyZS4gSW4gY2FzZXMg
d2hlcmUgeGVuX3Vsb25nX3QgaXMgbGFyZ2VyIHRoYW4gdGhpcyB0aGVuDQo+ICsgKiBhbnkgdW51
c2VkIGJpdHMgaW4gdGhlIHVwcGVyIHBvcnRpb24gbXVzdCBiZSB6ZXJvLg0KPiArICovDQo+ICtz
dHJ1Y3QgbXVsdGljYWxsX2VudHJ5IHsNCj4gKyAgICB4ZW5fdWxvbmdfdCBvcCwgcmVzdWx0Ow0K
PiArICAgIHhlbl91bG9uZ190IGFyZ3NbNl07DQo+ICt9Ow0KPiArdHlwZWRlZiBzdHJ1Y3QgbXVs
dGljYWxsX2VudHJ5IG11bHRpY2FsbF9lbnRyeV90Ow0KPiArREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobXVsdGljYWxsX2VudHJ5X3QpOw0KPiArDQo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJ
T05fXyA8IDB4MDAwNDA0MDANCj4gKy8qDQo+ICsgKiBFdmVudCBjaGFubmVsIGVuZHBvaW50cyBw
ZXIgZG9tYWluICh3aGVuIHVzaW5nIHRoZSAyLWxldmVsIEFCSSk6DQo+ICsgKiAgMTAyNCBpZiBh
IExPTkdfUFRSIGlzIDMyIGJpdHM7IDQwOTYgaWYgYSBMT05HX1BUUiBpcyA2NCBiaXRzLg0KPiAr
ICovDQo+ICsjZGVmaW5lIE5SX0VWRU5UX0NIQU5ORUxTIEVWVENITl8yTF9OUl9DSEFOTkVMUw0K
PiArI2VuZGlmDQo+ICsNCj4gK3N0cnVjdCB2Y3B1X3RpbWVfaW5mbyB7DQo+ICsgICAgLyoNCj4g
KyAgICAgKiBVcGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBwcmVjZWRlZCBhbmQg
Zm9sbG93ZWQgYnkgYW4NCj4gKyAgICAgKiBpbmNyZW1lbnQgb2YgJ3ZlcnNpb24nLiBUaGUgZ3Vl
c3QgY2FuIHRoZXJlZm9yZSBkZXRlY3QgdXBkYXRlcyBieQ0KPiArICAgICAqIGxvb2tpbmcgZm9y
IGNoYW5nZXMgdG8gJ3ZlcnNpb24nLiBJZiB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0IG9mDQo+
ICsgICAgICogdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0ZSBpcyBpbiBw
cm9ncmVzcyBhbmQgdGhlIGd1ZXN0DQo+ICsgICAgICogbXVzdCB3YWl0IHRvIHJlYWQgYSBjb25z
aXN0ZW50IHNldCBvZiB2YWx1ZXMuDQo+ICsgICAgICogVGhlIGNvcnJlY3Qgd2F5IHRvIGludGVy
YWN0IHdpdGggdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNpbWlsYXIgdG8NCj4gKyAgICAgKiBMaW51
eCdzIHNlcWxvY2s6IHNlZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mDQo+IHJlYWRfc2VxYmVnaW4v
cmVhZF9zZXFyZXRyeS4NCj4gKyAgICAgKi8NCj4gKyAgICB1aW50MzJfdCB2ZXJzaW9uOw0KPiAr
ICAgIHVpbnQzMl90IHBhZDA7DQo+ICsgICAgdWludDY0X3QgdHNjX3RpbWVzdGFtcDsgICAvKiBU
U0MgYXQgbGFzdCB1cGRhdGUgb2YgdGltZSB2YWxzLiAgKi8NCj4gKyAgICB1aW50NjRfdCBzeXN0
ZW1fdGltZTsgICAgIC8qIFRpbWUsIGluIG5hbm9zZWNzLCBzaW5jZSBib290LiAgICAqLw0KPiAr
ICAgIC8qDQo+ICsgICAgICogQ3VycmVudCBzeXN0ZW0gdGltZToNCj4gKyAgICAgKiAgIHN5c3Rl
bV90aW1lICsNCj4gKyAgICAgKiAgICgoKCh0c2MgLSB0c2NfdGltZXN0YW1wKSA8PCB0c2Nfc2hp
ZnQpICogdHNjX3RvX3N5c3RlbV9tdWwpID4+IDMyKQ0KPiArICAgICAqIENQVSBmcmVxdWVuY3kg
KEh6KToNCj4gKyAgICAgKiAgICgoMTBeOSA8PCAzMikgLyB0c2NfdG9fc3lzdGVtX211bCkgPj4g
dHNjX3NoaWZ0DQo+ICsgICAgICovDQo+ICsgICAgdWludDMyX3QgdHNjX3RvX3N5c3RlbV9tdWw7
DQo+ICsgICAgaW50OF90ICAgdHNjX3NoaWZ0Ow0KPiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJT
SU9OX18gPiAweDA0MDYwMA0KPiArICAgIHVpbnQ4X3QgIGZsYWdzOw0KPiArICAgIHVpbnQ4X3Qg
IHBhZDFbMl07DQo+ICsjZWxzZQ0KPiArICAgIGludDhfdCAgIHBhZDFbM107DQo+ICsjZW5kaWYN
Cj4gK307IC8qIDMyIGJ5dGVzICovDQo+ICt0eXBlZGVmIHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB2
Y3B1X3RpbWVfaW5mb190Ow0KPiArDQo+ICsjZGVmaW5lIFhFTl9QVkNMT0NLX1RTQ19TVEFCTEVf
QklUICAgICAoMSA8PCAwKQ0KPiArI2RlZmluZSBYRU5fUFZDTE9DS19HVUVTVF9TVE9QUEVEICAg
ICAgKDEgPDwgMSkNCj4gKw0KPiArc3RydWN0IHZjcHVfaW5mbyB7DQo+ICsgICAgLyoNCj4gKyAg
ICAgKiAnZXZ0Y2huX3VwY2FsbF9wZW5kaW5nJyBpcyB3cml0dGVuIG5vbi16ZXJvIGJ5IFhlbiB0
byBpbmRpY2F0ZQ0KPiArICAgICAqIGEgcGVuZGluZyBub3RpZmljYXRpb24gZm9yIGEgcGFydGlj
dWxhciBWQ1BVLiBJdCBpcyB0aGVuIGNsZWFyZWQNCj4gKyAgICAgKiBieSB0aGUgZ3Vlc3QgT1Mg
L2JlZm9yZS8gY2hlY2tpbmcgZm9yIHBlbmRpbmcgd29yaywgdGh1cyBhdm9pZGluZw0KPiArICAg
ICAqIGEgc2V0LWFuZC1jaGVjayByYWNlLiBOb3RlIHRoYXQgdGhlIG1hc2sgaXMgb25seSBhY2Nl
c3NlZCBieSBYZW4NCj4gKyAgICAgKiBvbiB0aGUgQ1BVIHRoYXQgaXMgY3VycmVudGx5IGhvc3Rp
bmcgdGhlIFZDUFUuIFRoaXMgbWVhbnMgdGhhdCB0aGUNCj4gKyAgICAgKiBwZW5kaW5nIGFuZCBt
YXNrIGZsYWdzIGNhbiBiZSB1cGRhdGVkIGJ5IHRoZSBndWVzdCB3aXRob3V0IHNwZWNpYWwNCj4g
KyAgICAgKiBzeW5jaHJvbmlzYXRpb24gKGkuZS4sIG5vIG5lZWQgZm9yIHRoZSB4ODYgTE9DSyBw
cmVmaXgpLg0KPiArICAgICAqIFRoaXMgbWF5IHNlZW0gc3Vib3B0aW1hbCBiZWNhdXNlIGlmIHRo
ZSBwZW5kaW5nIGZsYWcgaXMgc2V0IGJ5DQo+ICsgICAgICogYSBkaWZmZXJlbnQgQ1BVIHRoZW4g
YW4gSVBJIG1heSBiZSBzY2hlZHVsZWQgZXZlbiB3aGVuIHRoZSBtYXNrDQo+ICsgICAgICogaXMg
c2V0LiBIb3dldmVyLCBub3RlOg0KPiArICAgICAqICAxLiBUaGUgdGFzayBvZiAnaW50ZXJydXB0
IGhvbGRvZmYnIGlzIGNvdmVyZWQgYnkgdGhlIHBlci1ldmVudC0NCj4gKyAgICAgKiAgICAgY2hh
bm5lbCBtYXNrIGJpdHMuIEEgJ25vaXN5JyBldmVudCB0aGF0IGlzIGNvbnRpbnVhbGx5IGJlaW5n
DQo+ICsgICAgICogICAgIHRyaWdnZXJlZCBjYW4gYmUgbWFza2VkIGF0IHNvdXJjZSBhdCB0aGlz
IHZlcnkgcHJlY2lzZQ0KPiArICAgICAqICAgICBncmFudWxhcml0eS4NCj4gKyAgICAgKiAgMi4g
VGhlIG1haW4gcHVycG9zZSBvZiB0aGUgcGVyLVZDUFUgbWFzayBpcyB0aGVyZWZvcmUgdG8gcmVz
dHJpY3QNCj4gKyAgICAgKiAgICAgcmVlbnRyYW50IGV4ZWN1dGlvbjogd2hldGhlciBmb3IgY29u
Y3VycmVuY3kgY29udHJvbCwgb3IgdG8NCj4gKyAgICAgKiAgICAgcHJldmVudCB1bmJvdW5kZWQg
c3RhY2sgdXNhZ2UuIFdoYXRldmVyIHRoZSBwdXJwb3NlLCB3ZSBleHBlY3QNCj4gKyAgICAgKiAg
ICAgdGhhdCB0aGUgbWFzayB3aWxsIGJlIGFzc2VydGVkIG9ubHkgZm9yIHNob3J0IHBlcmlvZHMg
YXQgYSB0aW1lLA0KPiArICAgICAqICAgICBhbmQgc28gdGhlIGxpa2VsaWhvb2Qgb2YgYSAnc3B1
cmlvdXMnIElQSSBpcyBzdWl0YWJseSBzbWFsbC4NCj4gKyAgICAgKiBUaGUgbWFzayBpcyByZWFk
IGJlZm9yZSBtYWtpbmcgYW4gZXZlbnQgdXBjYWxsIHRvIHRoZSBndWVzdDogYQ0KPiArICAgICAq
IG5vbi16ZXJvIG1hc2sgdGhlcmVmb3JlIGd1YXJhbnRlZXMgdGhhdCB0aGUgVkNQVSB3aWxsIG5v
dCByZWNlaXZlDQo+ICsgICAgICogYW4gdXBjYWxsIGFjdGl2YXRpb24uIFRoZSBtYXNrIGlzIGNs
ZWFyZWQgd2hlbiB0aGUgVkNQVSByZXF1ZXN0cw0KPiArICAgICAqIHRvIGJsb2NrOiB0aGlzIGF2
b2lkcyB3YWtldXAtd2FpdGluZyByYWNlcy4NCj4gKyAgICAgKi8NCj4gKyAgICB1aW50OF90IGV2
dGNobl91cGNhbGxfcGVuZGluZzsNCj4gKyNpZmRlZiBYRU5fSEFWRV9QVl9VUENBTExfTUFTSw0K
PiArICAgIHVpbnQ4X3QgZXZ0Y2huX3VwY2FsbF9tYXNrOw0KPiArI2Vsc2UgLyogWEVOX0hBVkVf
UFZfVVBDQUxMX01BU0sgKi8NCj4gKyAgICB1aW50OF90IHBhZDA7DQo+ICsjZW5kaWYgLyogWEVO
X0hBVkVfUFZfVVBDQUxMX01BU0sgKi8NCj4gKyAgICB4ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGlu
Z19zZWw7DQo+ICsgICAgc3RydWN0IGFyY2hfdmNwdV9pbmZvIGFyY2g7DQo+ICsgICAgc3RydWN0
IHZjcHVfdGltZV9pbmZvIHRpbWU7DQo+ICt9OyAvKiA2NCBieXRlcyAoeDg2KSAqLw0KPiArI2lm
bmRlZiBfX1hFTl9fDQo+ICt0eXBlZGVmIHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9pbmZvX3Q7DQo+
ICsjZW5kaWYNCj4gKw0KPiArLyoNCj4gKyAqIGBpbmNvbnRlbnRzIDIwMCBzdGFydG9mZGF5X3No
YXJlZCBTdGFydC1vZi1kYXkgc2hhcmVkIGRhdGEgc3RydWN0dXJlDQo+ICsgKiBYZW4va2VybmVs
IHNoYXJlZCBkYXRhIC0tIHBvaW50ZXIgcHJvdmlkZWQgaW4gc3RhcnRfaW5mby4NCj4gKyAqDQo+
ICsgKiBUaGlzIHN0cnVjdHVyZSBpcyBkZWZpbmVkIHRvIGJlIGJvdGggc21hbGxlciB0aGFuIGEg
cGFnZSwgYW5kIHRoZQ0KPiArICogb25seSBkYXRhIG9uIHRoZSBzaGFyZWQgcGFnZSwgYnV0IG1h
eSB2YXJ5IGluIGFjdHVhbCBzaXplIGV2ZW4gd2l0aGluDQo+ICsgKiBjb21wYXRpYmxlIFhlbiB2
ZXJzaW9uczsgZ3Vlc3RzIHNob3VsZCBub3QgcmVseSBvbiB0aGUgc2l6ZQ0KPiArICogb2YgdGhp
cyBzdHJ1Y3R1cmUgcmVtYWluaW5nIGNvbnN0YW50Lg0KPiArICovDQo+ICtzdHJ1Y3Qgc2hhcmVk
X2luZm8gew0KPiArICAgIHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9pbmZvW1hFTl9MRUdBQ1lfTUFY
X1ZDUFVTXTsNCj4gKw0KPiArICAgIC8qDQo+ICsgICAgICogQSBkb21haW4gY2FuIGNyZWF0ZSAi
ZXZlbnQgY2hhbm5lbHMiIG9uIHdoaWNoIGl0IGNhbiBzZW5kIGFuZCByZWNlaXZlDQo+ICsgICAg
ICogYXN5bmNocm9ub3VzIGV2ZW50IG5vdGlmaWNhdGlvbnMuIFRoZXJlIGFyZSB0aHJlZSBjbGFz
c2VzIG9mIGV2ZW50IHRoYXQNCj4gKyAgICAgKiBhcmUgZGVsaXZlcmVkIGJ5IHRoaXMgbWVjaGFu
aXNtOg0KPiArICAgICAqICAxLiBCaS1kaXJlY3Rpb25hbCBpbnRlci0gYW5kIGludHJhLWRvbWFp
biBjb25uZWN0aW9ucy4gRG9tYWlucyBtdXN0DQo+ICsgICAgICogICAgIGFycmFuZ2Ugb3V0LW9m
LWJhbmQgdG8gc2V0IHVwIGEgY29ubmVjdGlvbiAodXN1YWxseSBieSBhbGxvY2F0aW5nDQo+ICsg
ICAgICogICAgIGFuIHVuYm91bmQgJ2xpc3RlbmVyJyBwb3J0IGFuZCBhdmVydGlzaW5nIHRoYXQg
dmlhIGEgc3RvcmFnZSBzZXJ2aWNlDQo+ICsgICAgICogICAgIHN1Y2ggYXMgeGVuc3RvcmUpLg0K
PiArICAgICAqICAyLiBQaHlzaWNhbCBpbnRlcnJ1cHRzLiBBIGRvbWFpbiB3aXRoIHN1aXRhYmxl
IGhhcmR3YXJlLWFjY2Vzcw0KPiArICAgICAqICAgICBwcml2aWxlZ2VzIGNhbiBiaW5kIGFuIGV2
ZW50LWNoYW5uZWwgcG9ydCB0byBhIHBoeXNpY2FsIGludGVycnVwdA0KPiArICAgICAqICAgICBz
b3VyY2UuDQo+ICsgICAgICogIDMuIFZpcnR1YWwgaW50ZXJydXB0cyAoJ2V2ZW50cycpLiBBIGRv
bWFpbiBjYW4gYmluZCBhbiBldmVudC1jaGFubmVsDQo+ICsgICAgICogICAgIHBvcnQgdG8gYSB2
aXJ0dWFsIGludGVycnVwdCBzb3VyY2UsIHN1Y2ggYXMgdGhlIHZpcnR1YWwtdGltZXINCj4gKyAg
ICAgKiAgICAgZGV2aWNlIG9yIHRoZSBlbWVyZ2VuY3kgY29uc29sZS4NCj4gKyAgICAgKg0KPiAr
ICAgICAqIEV2ZW50IGNoYW5uZWxzIGFyZSBhZGRyZXNzZWQgYnkgYSAicG9ydCBpbmRleCIuIEVh
Y2ggY2hhbm5lbCBpcw0KPiArICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZv
cm1hdGlvbjoNCj4gKyAgICAgKiAgMS4gUEVORElORyAtLSBub3RpZmllcyB0aGUgZG9tYWluIHRo
YXQgdGhlcmUgaXMgYSBwZW5kaW5nIG5vdGlmaWNhdGlvbg0KPiArICAgICAqICAgICB0byBiZSBw
cm9jZXNzZWQuIFRoaXMgYml0IGlzIGNsZWFyZWQgYnkgdGhlIGd1ZXN0Lg0KPiArICAgICAqICAy
LiBNQVNLIC0tIGlmIHRoaXMgYml0IGlzIGNsZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2Yg
UEVORElORw0KPiArICAgICAqICAgICB3aWxsIGNhdXNlIGFuIGFzeW5jaHJvbm91cyB1cGNhbGwg
dG8gYmUgc2NoZWR1bGVkLiBUaGlzIGJpdCBpcyBvbmx5DQo+ICsgICAgICogICAgIHVwZGF0ZWQg
YnkgdGhlIGd1ZXN0LiBJdCBpcyByZWFkLW9ubHkgd2l0aGluIFhlbi4gSWYgYSBjaGFubmVsDQo+
ICsgICAgICogICAgIGJlY29tZXMgcGVuZGluZyB3aGlsZSB0aGUgY2hhbm5lbCBpcyBtYXNrZWQg
dGhlbiB0aGUgJ2VkZ2UnIGlzIGxvc3QNCj4gKyAgICAgKiAgICAgKGkuZS4sIHdoZW4gdGhlIGNo
YW5uZWwgaXMgdW5tYXNrZWQsIHRoZSBndWVzdCBtdXN0IG1hbnVhbGx5IGhhbmRsZQ0KPiArICAg
ICAqICAgICBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgYXMgbm8gdXBjYWxsIHdpbGwgYmUgc2NoZWR1
bGVkIGJ5IFhlbikuDQo+ICsgICAgICoNCj4gKyAgICAgKiBUbyBleHBlZGl0ZSBzY2FubmluZyBv
ZiBwZW5kaW5nIG5vdGlmaWNhdGlvbnMsIGFueSAwLT4xIHBlbmRpbmcNCj4gKyAgICAgKiB0cmFu
c2l0aW9uIG9uIGFuIHVubWFza2VkIGNoYW5uZWwgY2F1c2VzIGEgY29ycmVzcG9uZGluZyBiaXQg
aW4gYQ0KPiArICAgICAqIHBlci12Y3B1IHNlbGVjdG9yIHdvcmQgdG8gYmUgc2V0LiBFYWNoIGJp
dCBpbiB0aGUgc2VsZWN0b3IgY292ZXJzIGENCj4gKyAgICAgKiAnQyBMT05HX1BUUicgaW4gdGhl
IFBFTkRJTkcgYml0ZmllbGQgYXJyYXkuDQo+ICsgICAgICovDQo+ICsgICAgeGVuX3Vsb25nX3Qg
ZXZ0Y2huX3BlbmRpbmdbc2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOw0KPiArICAgIHhlbl91bG9u
Z190IGV2dGNobl9tYXNrW3NpemVvZih4ZW5fdWxvbmdfdCkgKiA4XTsNCj4gKw0KPiArICAgIC8q
DQo+ICsgICAgICogV2FsbGNsb2NrIHRpbWU6IHVwZGF0ZWQgb25seSBieSBjb250cm9sIHNvZnR3
YXJlLiBHdWVzdHMgc2hvdWxkIGJhc2UNCj4gKyAgICAgKiB0aGVpciBnZXR0aW1lb2ZkYXkoKSBz
eXNjYWxsIG9uIHRoaXMgd2FsbGNsb2NrLWJhc2UgdmFsdWUuDQo+ICsgICAgICovDQo+ICsgICAg
dWludDMyX3Qgd2NfdmVyc2lvbjsgICAgICAvKiBWZXJzaW9uIGNvdW50ZXI6IHNlZSB2Y3B1X3Rp
bWVfaW5mb190LiAqLw0KPiArICAgIHVpbnQzMl90IHdjX3NlYzsgICAgICAgICAgLyogU2VjcyAg
MDA6MDA6MDAgVVRDLCBKYW4gMSwgMTk3MC4gICovDQo+ICsgICAgdWludDMyX3Qgd2NfbnNlYzsg
ICAgICAgICAvKiBOc2VjcyAwMDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8NCj4gKyNpZiAh
ZGVmaW5lZChfX2kzODZfXykNCj4gKyAgICB1aW50MzJfdCB3Y19zZWNfaGk7DQo+ICsjIGRlZmlu
ZSB4ZW5fd2Nfc2VjX2hpIHdjX3NlY19oaQ0KPiArI2VsaWYgIWRlZmluZWQoX19YRU5fXykgJiYg
IWRlZmluZWQoX19YRU5fVE9PTFNfXykNCj4gKyMgZGVmaW5lIHhlbl93Y19zZWNfaGkgYXJjaC53
Y19zZWNfaGkNCj4gKyNlbmRpZg0KPiArDQo+ICsgICAgc3RydWN0IGFyY2hfc2hhcmVkX2luZm8g
YXJjaDsNCj4gKw0KPiArfTsNCj4gKyNpZm5kZWYgX19YRU5fXw0KPiArdHlwZWRlZiBzdHJ1Y3Qg
c2hhcmVkX2luZm8gc2hhcmVkX2luZm9fdDsNCj4gKyNlbmRpZg0KPiArDQo+ICsvKg0KPiArICog
YGluY29udGVudHMgMjAwIHN0YXJ0b2ZkYXkgU3RhcnQtb2YtZGF5IG1lbW9yeSBsYXlvdXQNCj4g
KyAqDQo+ICsgKiAgMS4gVGhlIGRvbWFpbiBpcyBzdGFydGVkIHdpdGhpbiBjb250aWd1b3VzIHZp
cnR1YWwtbWVtb3J5IHJlZ2lvbi4NCj4gKyAqICAyLiBUaGUgY29udGlndW91cyByZWdpb24gZW5k
cyBvbiBhbiBhbGlnbmVkIDRNQiBib3VuZGFyeS4NCj4gKyAqICAzLiBUaGlzIHRoZSBvcmRlciBv
ZiBib290c3RyYXAgZWxlbWVudHMgaW4gdGhlIGluaXRpYWwgdmlydHVhbCByZWdpb246DQo+ICsg
KiAgICAgIGEuIHJlbG9jYXRlZCBrZXJuZWwgaW1hZ2UNCj4gKyAqICAgICAgYi4gaW5pdGlhbCBy
YW0gZGlzayAgICAgICAgICAgICAgW21vZF9zdGFydCwgbW9kX2xlbl0NCj4gKyAqICAgICAgICAg
KG1heSBiZSBvbWl0dGVkKQ0KPiArICogICAgICBjLiBsaXN0IG9mIGFsbG9jYXRlZCBwYWdlIGZy
YW1lcyBbbWZuX2xpc3QsIG5yX3BhZ2VzXQ0KPiArICogICAgICAgICAodW5sZXNzIHJlbG9jYXRl
ZCBkdWUgdG8gWEVOX0VMRk5PVEVfSU5JVF9QMk0pDQo+ICsgKiAgICAgIGQuIHN0YXJ0X2luZm9f
dCBzdHJ1Y3R1cmUgICAgICAgIFtyZWdpc3RlciBFU0kgKHg4NildDQo+ICsgKiAgICAgICAgIGlu
IGNhc2Ugb2YgZG9tMCB0aGlzIHBhZ2UgY29udGFpbnMgdGhlIGNvbnNvbGUgaW5mbywgdG9vDQo+
ICsgKiAgICAgIGUuIHVubGVzcyBkb20wOiB4ZW5zdG9yZSByaW5nIHBhZ2UNCj4gKyAqICAgICAg
Zi4gdW5sZXNzIGRvbTA6IGNvbnNvbGUgcmluZyBwYWdlDQo+ICsgKiAgICAgIGcuIGJvb3RzdHJh
cCBwYWdlIHRhYmxlcyAgICAgICAgIFtwdF9iYXNlIGFuZCBDUjMgKHg4NildDQo+ICsgKiAgICAg
IGguIGJvb3RzdHJhcCBzdGFjayAgICAgICAgICAgICAgIFtyZWdpc3RlciBFU1AgKHg4NildDQo+
ICsgKiAgNC4gQm9vdHN0cmFwIGVsZW1lbnRzIGFyZSBwYWNrZWQgdG9nZXRoZXIsIGJ1dCBlYWNo
IGlzIDRrQi1hbGlnbmVkLg0KPiArICogIDUuIFRoZSBsaXN0IG9mIHBhZ2UgZnJhbWVzIGZvcm1z
IGEgY29udGlndW91cyAncHNldWRvLXBoeXNpY2FsJyBtZW1vcnkNCj4gKyAqICAgICBsYXlvdXQg
Zm9yIHRoZSBkb21haW4uIEluIHBhcnRpY3VsYXIsIHRoZSBib290c3RyYXAgdmlydHVhbC1tZW1v
cnkNCj4gKyAqICAgICByZWdpb24gaXMgYSAxOjEgbWFwcGluZyB0byB0aGUgZmlyc3Qgc2VjdGlv
biBvZiB0aGUgcHNldWRvLXBoeXNpY2FsIG1hcC4NCj4gKyAqICA2LiBBbGwgYm9vdHN0cmFwIGVs
ZW1lbnRzIGFyZSBtYXBwZWQgcmVhZC13cml0YWJsZSBmb3IgdGhlIGd1ZXN0IE9TLg0KPiBUaGUN
Cj4gKyAqICAgICBvbmx5IGV4Y2VwdGlvbiBpcyB0aGUgYm9vdHN0cmFwIHBhZ2UgdGFibGUsIHdo
aWNoIGlzIG1hcHBlZCByZWFkLW9ubHkuDQo+ICsgKiAgNy4gVGhlcmUgaXMgZ3VhcmFudGVlZCB0
byBiZSBhdCBsZWFzdCA1MTJrQiBwYWRkaW5nIGFmdGVyIHRoZSBmaW5hbA0KPiArICogICAgIGJv
b3RzdHJhcCBlbGVtZW50LiBJZiBuZWNlc3NhcnksIHRoZSBib290c3RyYXAgdmlydHVhbCByZWdp
b24gaXMNCj4gKyAqICAgICBleHRlbmRlZCBieSBhbiBleHRyYSA0TUIgdG8gZW5zdXJlIHRoaXMu
DQo+ICsgKg0KPiArICogTm90ZTogUHJpb3IgdG8gMjU4MzM6YmI4NWJiY2NiMWM5LiAoIng4Ni8z
Mi1vbi02NCBhZGp1c3QgRG9tMCBpbml0aWFsDQo+IHBhZ2UNCj4gKyAqIHRhYmxlIGxheW91dCIp
IGEgYnVnIGNhdXNlZCB0aGUgcHRfYmFzZSAoMy5nIGFib3ZlKSBhbmQgY3IzIHRvIG5vdCBwb2lu
dA0KPiArICogdG8gdGhlIHN0YXJ0IG9mIHRoZSBndWVzdCBwYWdlIHRhYmxlcyAoaXQgd2FzIG9m
ZnNldCBieSB0d28gcGFnZXMpLg0KPiArICogVGhpcyBvbmx5IG1hbmlmZXN0ZWQgaXRzZWxmIG9u
IDMyLW9uLTY0IGRvbTAga2VybmVscyBhbmQgbm90IDMyLW9uLTY0DQo+IGRvbVUNCj4gKyAqIG9y
IDY0LWJpdCBrZXJuZWxzIG9mIGFueSBjb2xvdXIuIFRoZSBwYWdlIHRhYmxlcyBmb3IgYSAzMi1v
bi02NCBkb20wIGdvdA0KPiArICogYWxsb2NhdGVkIGluIHRoZSBvcmRlcjogJ2ZpcnN0IEwxJywn
Zmlyc3QgTDInLCAnZmlyc3QgTDMnLCBzbyB0aGUgb2Zmc2V0DQo+ICsgKiB0byB0aGUgcGFnZSB0
YWJsZSBiYXNlIGlzIGJ5IHR3byBwYWdlcyBiYWNrLiBUaGUgaW5pdGlhbCBkb21haW4gaWYgaXQg
aXMNCj4gKyAqIDMyLWJpdCBhbmQgcnVucyB1bmRlciBhIDY0LWJpdCBoeXBlcnZpc29yIHNob3Vs
ZCBfTk9UXyB1c2UgdHdvIG9mIHRoZQ0KPiArICogcGFnZXMgcHJlY2VkaW5nIHB0X2Jhc2UgYW5k
IG1hcmsgdGhlbSBhcyByZXNlcnZlZC91bnVzZWQuDQo+ICsgKi8NCj4gKyNpZmRlZiBYRU5fSEFW
RV9QVl9HVUVTVF9FTlRSWQ0KPiArc3RydWN0IHN0YXJ0X2luZm8gew0KPiArICAgIC8qIFRIRSBG
T0xMT1dJTkcgQVJFIEZJTExFRCBJTiBCT1RIIE9OIElOSVRJQUwgQk9PVCBBTkQgT04NCj4gUkVT
VU1FLiAgICAqLw0KPiArICAgIGNoYXIgbWFnaWNbMzJdOyAgICAgICAgICAgICAvKiAieGVuLTx2
ZXJzaW9uPi08cGxhdGZvcm0+Ii4gICAgICAgICAgICAqLw0KPiArICAgIFVMT05HX1BUUiBucl9w
YWdlczsgICAgIC8qIFRvdGFsIHBhZ2VzIGFsbG9jYXRlZCB0byB0aGlzIGRvbWFpbi4gICovDQo+
ICsgICAgVUxPTkdfUFRSIHNoYXJlZF9pbmZvOyAgLyogTUFDSElORSBhZGRyZXNzIG9mIHNoYXJl
ZCBpbmZvIHN0cnVjdC4gKi8NCj4gKyAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAgICAgLyog
U0lGX3h4eCBmbGFncy4gICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICB4ZW5fcGZu
X3Qgc3RvcmVfbWZuOyAgICAgICAgLyogTUFDSElORSBwYWdlIG51bWJlciBvZiBzaGFyZWQgcGFn
ZS4gICAgKi8NCj4gKyAgICB1aW50MzJfdCBzdG9yZV9ldnRjaG47ICAgICAgLyogRXZlbnQgY2hh
bm5lbCBmb3Igc3RvcmUgY29tbXVuaWNhdGlvbi4gKi8NCj4gKyAgICB1bmlvbiB7DQo+ICsgICAg
ICAgIHN0cnVjdCB7DQo+ICsgICAgICAgICAgICB4ZW5fcGZuX3QgbWZuOyAgICAgIC8qIE1BQ0hJ
TkUgcGFnZSBudW1iZXIgb2YgY29uc29sZSBwYWdlLiAgICovDQo+ICsgICAgICAgICAgICB1aW50
MzJfdCAgZXZ0Y2huOyAgIC8qIEV2ZW50IGNoYW5uZWwgZm9yIGNvbnNvbGUgcGFnZS4gICAgICAg
ICovDQo+ICsgICAgICAgIH0gZG9tVTsNCj4gKyAgICAgICAgc3RydWN0IHsNCj4gKyAgICAgICAg
ICAgIHVpbnQzMl90IGluZm9fb2ZmOyAgLyogT2Zmc2V0IG9mIGNvbnNvbGVfaW5mbyBzdHJ1Y3Qu
ICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgIHVpbnQzMl90IGluZm9fc2l6ZTsgLyogU2l6ZSBv
ZiBjb25zb2xlX2luZm8gc3RydWN0IGZyb20gc3RhcnQuKi8NCj4gKyAgICAgICAgfSBkb20wOw0K
PiArICAgIH0gY29uc29sZTsNCj4gKyAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBPTkxZIEZJTExF
RCBJTiBPTiBJTklUSUFMIEJPT1QgKE5PVCBSRVNVTUUpLg0KPiAqLw0KPiArICAgIFVMT05HX1BU
UiBwdF9iYXNlOyAgICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwYWdlIGRpcmVjdG9yeS4gICAg
ICovDQo+ICsgICAgVUxPTkdfUFRSIG5yX3B0X2ZyYW1lczsgLyogTnVtYmVyIG9mIGJvb3RzdHJh
cCBwLnQuIGZyYW1lcy4gICAgICAgKi8NCj4gKyAgICBVTE9OR19QVFIgbWZuX2xpc3Q7ICAgICAv
KiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZS1mcmFtZSBsaXN0LiAgICAqLw0KPiArICAgIFVMT05H
X1BUUiBtb2Rfc3RhcnQ7ICAgIC8qIFZJUlRVQUwgYWRkcmVzcyBvZiBwcmUtbG9hZGVkIG1vZHVs
ZSAgICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChQRk4gb2YgcHJl
LWxvYWRlZCBtb2R1bGUgaWYgICAgICAgICAgICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qICBTSUZfTU9EX1NUQVJUX1BGTiBzZXQgaW4gZmxhZ3MpLiAgICAgICovDQo+
ICsgICAgVUxPTkdfUFRSIG1vZF9sZW47ICAgICAgLyogU2l6ZSAoYnl0ZXMpIG9mIHByZS1sb2Fk
ZWQgbW9kdWxlLiAgICAgKi8NCj4gKyNkZWZpbmUgTUFYX0dVRVNUX0NNRExJTkUgMTAyNA0KPiAr
ICAgIGludDhfdCBjbWRfbGluZVtNQVhfR1VFU1RfQ01ETElORV07DQo+ICsgICAgLyogVGhlIHBm
biByYW5nZSBoZXJlIGNvdmVycyBib3RoIHBhZ2UgdGFibGUgYW5kIHAtPm0gdGFibGUgZnJhbWVz
LiAgICovDQo+ICsgICAgVUxPTkdfUFRSIGZpcnN0X3AybV9wZm47LyogMXN0IHBmbiBmb3JtaW5n
IGluaXRpYWwgUC0+TSB0YWJsZS4gICAgKi8NCj4gKyAgICBVTE9OR19QVFIgbnJfcDJtX2ZyYW1l
czsvKiAjIG9mIHBmbnMgZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAqLw0KPiArfTsNCj4g
K3R5cGVkZWYgc3RydWN0IHN0YXJ0X2luZm8gc3RhcnRfaW5mb190Ow0KPiArDQo+ICsvKg0KPiAr
ICogU3RhcnQgb2YgZGF5IHN0cnVjdHVyZSBwYXNzZWQgdG8gUFZIIGd1ZXN0cyBpbiAlZWJ4Lg0K
PiArICoNCj4gKyAqIE5PVEU6IG5vdGhpbmcgd2lsbCBiZSBsb2FkZWQgYXQgcGh5c2ljYWwgYWRk
cmVzcyAwLCBzbyBhIDAgdmFsdWUgaW4gYW55DQo+ICsgKiBvZiB0aGUgYWRkcmVzcyBmaWVsZHMg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgbm90IHByZXNlbnQuDQo+ICsgKg0KPiArICogIDAgKy0tLS0t
LS0tLS0tLS0tLS0rDQo+ICsgKiAgICB8IG1hZ2ljICAgICAgICAgIHwgQ29udGFpbnMgdGhlIG1h
Z2ljIHZhbHVlDQo+IFhFTl9IVk1fU1RBUlRfTUFHSUNfVkFMVUUNCj4gKyAqICAgIHwgICAgICAg
ICAgICAgICAgfCAoInhFbjMiIHdpdGggdGhlIDB4ODAgYml0IG9mIHRoZSAiRSIgc2V0KS4NCj4g
KyAqICA0ICstLS0tLS0tLS0tLS0tLS0tKw0KPiArICogICAgfCB2ZXJzaW9uICAgICAgICB8IFZl
cnNpb24gb2YgdGhpcyBzdHJ1Y3R1cmUuIEN1cnJlbnQgdmVyc2lvbiBpcyAwLiBOZXcNCj4gKyAq
ICAgIHwgICAgICAgICAgICAgICAgfCB2ZXJzaW9ucyBhcmUgZ3VhcmFudGVlZCB0byBiZSBiYWNr
d2FyZHMtY29tcGF0aWJsZS4NCj4gKyAqICA4ICstLS0tLS0tLS0tLS0tLS0tKw0KPiArICogICAg
fCBmbGFncyAgICAgICAgICB8IFNJRl94eHggZmxhZ3MuDQo+ICsgKiAxMiArLS0tLS0tLS0tLS0t
LS0tLSsNCj4gKyAqICAgIHwgbnJfbW9kdWxlcyAgICAgfCBOdW1iZXIgb2YgbW9kdWxlcyBwYXNz
ZWQgdG8gdGhlIGtlcm5lbC4NCj4gKyAqIDE2ICstLS0tLS0tLS0tLS0tLS0tKw0KPiArICogICAg
fCBtb2RsaXN0X3BhZGRyICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgYW4gYXJyYXkgb2YgbW9kdWxl
cw0KPiArICogICAgfCAgICAgICAgICAgICAgICB8IChsYXlvdXQgb2YgdGhlIHN0cnVjdHVyZSBi
ZWxvdykuDQo+ICsgKiAyNCArLS0tLS0tLS0tLS0tLS0tLSsNCj4gKyAqICAgIHwgY21kbGluZV9w
YWRkciAgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBjb21tYW5kIGxpbmUsDQo+ICsgKiAgICB8
ICAgICAgICAgICAgICAgIHwgYSB6ZXJvLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLg0KPiArICog
MzIgKy0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKiAgICB8IHJzZHBfcGFkZHIgICAgIHwgUGh5c2lj
YWwgYWRkcmVzcyBvZiB0aGUgUlNEUCBBQ1BJIGRhdGEgc3RydWN0dXJlLg0KPiArICogNDAgKy0t
LS0tLS0tLS0tLS0tLS0rDQo+ICsgKg0KPiArICogVGhlIGxheW91dCBvZiBlYWNoIGVudHJ5IGlu
IHRoZSBtb2R1bGUgc3RydWN0dXJlIGlzIHRoZSBmb2xsb3dpbmc6DQo+ICsgKg0KPiArICogIDAg
Ky0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKiAgICB8IHBhZGRyICAgICAgICAgIHwgUGh5c2ljYWwg
YWRkcmVzcyBvZiB0aGUgbW9kdWxlLg0KPiArICogIDggKy0tLS0tLS0tLS0tLS0tLS0rDQo+ICsg
KiAgICB8IHNpemUgICAgICAgICAgIHwgU2l6ZSBvZiB0aGUgbW9kdWxlIGluIGJ5dGVzLg0KPiAr
ICogMTYgKy0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKiAgICB8IGNtZGxpbmVfcGFkZHIgIHwgUGh5
c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5lLA0KPiArICogICAgfCAgICAgICAgICAg
ICAgICB8IGEgemVyby10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4NCj4gKyAqIDI0ICstLS0tLS0t
LS0tLS0tLS0tKw0KPiArICogICAgfCByZXNlcnZlZCAgICAgICB8DQo+ICsgKiAzMiArLS0tLS0t
LS0tLS0tLS0tLSsNCj4gKyAqDQo+ICsgKiBUaGUgYWRkcmVzcyBhbmQgc2l6ZXMgYXJlIGFsd2F5
cyBhIDY0Yml0IGxpdHRsZSBlbmRpYW4gdW5zaWduZWQgaW50ZWdlci4NCj4gKyAqDQo+ICsgKiBO
QjogWGVuIG9uIHg4NiB3aWxsIGFsd2F5cyB0cnkgdG8gcGxhY2UgYWxsIHRoZSBkYXRhIGJlbG93
IHRoZSA0R2lCDQo+ICsgKiBib3VuZGFyeS4NCj4gKyAqLw0KPiArI2RlZmluZSBYRU5fSFZNX1NU
QVJUX01BR0lDX1ZBTFVFIDB4MzM2ZWM1NzgNCj4gKw0KPiArLyogTmV3IGNvbnNvbGUgdW5pb24g
Zm9yIGRvbTAgaW50cm9kdWNlZCBpbiAweDAwMDMwMjAzLiAqLw0KPiArI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjAzDQo+ICsjZGVmaW5lIGNvbnNvbGVfbWZuICAgIGNv
bnNvbGUuZG9tVS5tZm4NCj4gKyNkZWZpbmUgY29uc29sZV9ldnRjaG4gY29uc29sZS5kb21VLmV2
dGNobg0KPiArI2VuZGlmDQo+ICsjZW5kaWYgLyogWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkgKi8N
Cj4gKw0KPiArLyogVGhlc2UgZmxhZ3MgYXJlIHBhc3NlZCBpbiB0aGUgJ2ZsYWdzJyBmaWVsZCBv
ZiBzdGFydF9pbmZvX3QuICovDQo+ICsjZGVmaW5lIFNJRl9QUklWSUxFR0VEICAgICgxPDwwKSAg
LyogSXMgdGhlIGRvbWFpbiBwcml2aWxlZ2VkPyAqLw0KPiArI2RlZmluZSBTSUZfSU5JVERPTUFJ
TiAgICAoMTw8MSkgIC8qIElzIHRoaXMgdGhlIGluaXRpYWwgY29udHJvbCBkb21haW4/ICovDQo+
ICsjZGVmaW5lIFNJRl9NVUxUSUJPT1RfTU9EICgxPDwyKSAgLyogSXMgbW9kX3N0YXJ0IGEgbXVs
dGlib290DQo+IG1vZHVsZT8gKi8NCj4gKyNkZWZpbmUgU0lGX01PRF9TVEFSVF9QRk4gKDE8PDMp
ICAvKiBJcyBtb2Rfc3RhcnQgYSBQRk4/ICovDQo+ICsjZGVmaW5lIFNJRl9WSVJUX1AyTV80VE9P
TFMgKDE8PDQpIC8qIERvIFhlbiB0b29scyB1bmRlcnN0YW5kIGEgdmlydC4NCj4gbWFwcGVkICov
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFAtPk0gbWFraW5nIHRo
ZSAzIGxldmVsIHRyZWUgb2Jzb2xldGU/ICovDQo+ICsjZGVmaW5lIFNJRl9QTV9NQVNLICAgICAg
ICgweEZGPDw4KSAvKiByZXNlcnZlIDEgYnl0ZSBmb3IgeGVuLXBtIG9wdGlvbnMNCj4gKi8NCj4g
Kw0KPiArLyoNCj4gKyAqIEEgbXVsdGlib290IG1vZHVsZSBpcyBhIHBhY2thZ2UgY29udGFpbmlu
ZyBtb2R1bGVzIHZlcnkgc2ltaWxhciB0byBhDQo+ICsgKiBtdWx0aWJvb3QgbW9kdWxlIGFycmF5
LiBUaGUgb25seSBkaWZmZXJlbmNlcyBhcmU6DQo+ICsgKiAtIHRoZSBhcnJheSBvZiBtb2R1bGUg
ZGVzY3JpcHRvcnMgaXMgYnkgY29udmVudGlvbiBzaW1wbHkgYXQgdGhlIGJlZ2lubmluZw0KPiAr
ICogICBvZiB0aGUgbXVsdGlib290IG1vZHVsZSwNCj4gKyAqIC0gYWRkcmVzc2VzIGluIHRoZSBt
b2R1bGUgZGVzY3JpcHRvcnMgYXJlIGJhc2VkIG9uIHRoZSBiZWdpbm5pbmcgb2YgdGhlDQo+ICsg
KiAgIG11bHRpYm9vdCBtb2R1bGUsDQo+ICsgKiAtIHRoZSBudW1iZXIgb2YgbW9kdWxlcyBpcyBk
ZXRlcm1pbmVkIGJ5IGEgdGVybWluYXRpb24gZGVzY3JpcHRvciB0aGF0DQo+IGhhcw0KPiArICog
ICBtb2Rfc3RhcnQgPT0gMC4NCj4gKyAqDQo+ICsgKiBUaGlzIHBlcm1pdHMgdG8gYm90aCBidWls
ZCBpdCBzdGF0aWNhbGx5IGFuZCByZWZlcmVuY2UgaXQgaW4gYSBjb25maWd1cmF0aW9uDQo+ICsg
KiBmaWxlLCBhbmQgbGV0IHRoZSBQViBndWVzdCBlYXNpbHkgcmViYXNlIHRoZSBhZGRyZXNzZXMg
dG8gdmlydHVhbCBhZGRyZXNzZXMNCj4gKyAqIGFuZCBhdCB0aGUgc2FtZSB0aW1lIGNvdW50IHRo
ZSBudW1iZXIgb2YgbW9kdWxlcy4NCj4gKyAqLw0KPiArc3RydWN0IHhlbl9tdWx0aWJvb3RfbW9k
X2xpc3QNCj4gK3sNCj4gKyAgICAvKiBBZGRyZXNzIG9mIGZpcnN0IGJ5dGUgb2YgdGhlIG1vZHVs
ZSAqLw0KPiArICAgIHVpbnQzMl90IG1vZF9zdGFydDsNCj4gKyAgICAvKiBBZGRyZXNzIG9mIGxh
c3QgYnl0ZSBvZiB0aGUgbW9kdWxlIChpbmNsdXNpdmUpICovDQo+ICsgICAgdWludDMyX3QgbW9k
X2VuZDsNCj4gKyAgICAvKiBBZGRyZXNzIG9mIHplcm8tdGVybWluYXRlZCBjb21tYW5kIGxpbmUg
Ki8NCj4gKyAgICB1aW50MzJfdCBjbWRsaW5lOw0KPiArICAgIC8qIFVudXNlZCwgbXVzdCBiZSB6
ZXJvICovDQo+ICsgICAgdWludDMyX3QgcGFkOw0KPiArfTsNCj4gKy8qDQo+ICsgKiBgaW5jb250
ZW50cyAyMDAgc3RhcnRvZmRheV9kb20wX2NvbnNvbGUgRG9tMF9jb25zb2xlDQo+ICsgKg0KPiAr
ICogVGhlIGNvbnNvbGUgc3RydWN0dXJlIGluIHN0YXJ0X2luZm8uY29uc29sZS5kb20wDQo+ICsg
Kg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgaW5jbHVkZXMgYSB2YXJpZXR5IG9mIGluZm9ybWF0aW9u
IHJlcXVpcmVkIHRvDQo+ICsgKiBoYXZlIGEgd29ya2luZyBWR0EvVkVTQSBjb25zb2xlLg0KPiAr
ICovDQo+ICt0eXBlZGVmIHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8gew0KPiArICAgIHVp
bnQ4X3QgdmlkZW9fdHlwZTsgLyogRE9NMF9WR0FfQ09OU09MRV8/Pz8gKi8NCj4gKyNkZWZpbmUg
WEVOX1ZHQVRZUEVfVEVYVF9NT0RFXzMgMHgwMw0KPiArI2RlZmluZSBYRU5fVkdBVFlQRV9WRVNB
X0xGQiAgICAweDIzDQo+ICsjZGVmaW5lIFhFTl9WR0FUWVBFX0VGSV9MRkIgICAgIDB4NzANCj4g
Kw0KPiArICAgIHVuaW9uIHsNCj4gKyAgICAgICAgc3RydWN0IHsNCj4gKyAgICAgICAgICAgIC8q
IEZvbnQgaGVpZ2h0LCBpbiBwaXhlbHMuICovDQo+ICsgICAgICAgICAgICB1aW50MTZfdCBmb250
X2hlaWdodDsNCj4gKyAgICAgICAgICAgIC8qIEN1cnNvciBsb2NhdGlvbiAoY29sdW1uLCByb3cp
LiAqLw0KPiArICAgICAgICAgICAgdWludDE2X3QgY3Vyc29yX3gsIGN1cnNvcl95Ow0KPiArICAg
ICAgICAgICAgLyogTnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgKGRpbWVuc2lvbnMgaW4gY2hh
cmFjdGVycykuICovDQo+ICsgICAgICAgICAgICB1aW50MTZfdCByb3dzLCBjb2x1bW5zOw0KPiAr
ICAgICAgICB9IHRleHRfbW9kZV8zOw0KPiArDQo+ICsgICAgICAgIHN0cnVjdCB7DQo+ICsgICAg
ICAgICAgICAvKiBXaWR0aCBhbmQgaGVpZ2h0LCBpbiBwaXhlbHMuICovDQo+ICsgICAgICAgICAg
ICB1aW50MTZfdCB3aWR0aCwgaGVpZ2h0Ow0KPiArICAgICAgICAgICAgLyogQnl0ZXMgcGVyIHNj
YW4gbGluZS4gKi8NCj4gKyAgICAgICAgICAgIHVpbnQxNl90IGJ5dGVzX3Blcl9saW5lOw0KPiAr
ICAgICAgICAgICAgLyogQml0cyBwZXIgcGl4ZWwuICovDQo+ICsgICAgICAgICAgICB1aW50MTZf
dCBiaXRzX3Blcl9waXhlbDsNCj4gKyAgICAgICAgICAgIC8qIExGQiBwaHlzaWNhbCBhZGRyZXNz
LCBhbmQgc2l6ZSAoaW4gdW5pdHMgb2YgNjRrQikuICovDQo+ICsgICAgICAgICAgICB1aW50MzJf
dCBsZmJfYmFzZTsNCj4gKyAgICAgICAgICAgIHVpbnQzMl90IGxmYl9zaXplOw0KPiArICAgICAg
ICAgICAgLyogUkdCIG1hc2sgb2Zmc2V0cyBhbmQgc2l6ZXMsIGFzIGRlZmluZWQgYnkgVkJFIDEu
MisgKi8NCj4gKyAgICAgICAgICAgIHVpbnQ4X3QgIHJlZF9wb3MsIHJlZF9zaXplOw0KPiArICAg
ICAgICAgICAgdWludDhfdCAgZ3JlZW5fcG9zLCBncmVlbl9zaXplOw0KPiArICAgICAgICAgICAg
dWludDhfdCAgYmx1ZV9wb3MsIGJsdWVfc2l6ZTsNCj4gKyAgICAgICAgICAgIHVpbnQ4X3QgIHJz
dmRfcG9zLCByc3ZkX3NpemU7DQo+ICsjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAw
eDAwMDMwMjA2DQo+ICsgICAgICAgICAgICAvKiBWRVNBIGNhcGFiaWxpdGllcyAob2Zmc2V0IDB4
YSwgVkVTQSBjb21tYW5kIDB4NGYwMCkuICovDQo+ICsgICAgICAgICAgICB1aW50MzJfdCBnYmxf
Y2FwczsNCj4gKyAgICAgICAgICAgIC8qIE1vZGUgYXR0cmlidXRlcyAob2Zmc2V0IDB4MCwgVkVT
QSBjb21tYW5kIDB4NGYwMSkuICovDQo+ICsgICAgICAgICAgICB1aW50MTZfdCBtb2RlX2F0dHJz
Ow0KPiArI2VuZGlmDQo+ICsgICAgICAgIH0gdmVzYV9sZmI7DQo+ICsgICAgfSB1Ow0KPiArfSBk
b20wX3ZnYV9jb25zb2xlX2luZm9fdDsNCj4gKyNkZWZpbmUgeGVuX3ZnYV9jb25zb2xlX2luZm8g
ZG9tMF92Z2FfY29uc29sZV9pbmZvDQo+ICsjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvX3Qg
ZG9tMF92Z2FfY29uc29sZV9pbmZvX3QNCj4gKw0KPiArdHlwZWRlZiB1aW50OF90IHhlbl9kb21h
aW5faGFuZGxlX3RbMTZdOw0KPiArDQo+ICtfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ4
LCAgdWludDhfdCk7DQo+ICtfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQxNiwgdWludDE2
X3QpOw0KPiArX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1aW50MzIsIHVpbnQzMl90KTsNCj4g
K19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0LCB1aW50NjRfdCk7DQo+ICsNCj4gKyNl
bmRpZiAvKiAhX19BU1NFTUJMWV9fICovDQo+ICsNCj4gKy8qIERlZmF1bHQgZGVmaW5pdGlvbnMg
Zm9yIG1hY3JvcyB1c2VkIGJ5IGRvbWN0bC9zeXNjdGwuICovDQo+ICsjaWYgZGVmaW5lZChfX1hF
Tl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pDQo+ICsNCj4gKyNpZm5kZWYgaW50NjRfYWxp
Z25lZF90DQo+ICsjZGVmaW5lIGludDY0X2FsaWduZWRfdCBpbnQ2NF90DQo+ICsjZW5kaWYNCj4g
KyNpZm5kZWYgdWludDY0X2FsaWduZWRfdA0KPiArI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVp
bnQ2NF90DQo+ICsjZW5kaWYNCj4gKyNpZm5kZWYgWEVOX0dVRVNUX0hBTkRMRV82NA0KPiArI2Rl
ZmluZSBYRU5fR1VFU1RfSEFORExFXzY0KG5hbWUpIFhFTl9HVUVTVF9IQU5ETEUobmFtZSkNCj4g
KyNlbmRpZg0KPiArDQo+ICsjaWZuZGVmIF9fQVNTRU1CTFlfXw0KPiArc3RydWN0IHhlbmN0bF9i
aXRtYXAgew0KPiArICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIGJpdG1hcDsNCj4gKyAg
ICB1aW50MzJfdCBucl9iaXRzOw0KPiArfTsNCj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYgLyog
ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovDQo+ICsNCj4gKyNl
bmRpZiAvKiBfX1hFTl9QVUJMSUNfWEVOX0hfXyAqLw0KPiArDQo+ICsvKg0KPiArICogTG9jYWwg
dmFyaWFibGVzOg0KPiArICogbW9kZTogQw0KPiArICogYy1maWxlLXN0eWxlOiAiQlNEIg0KPiAr
ICogYy1iYXNpYy1vZmZzZXQ6IDQNCj4gKyAqIHRhYi13aWR0aDogNA0KPiArICogaW5kZW50LXRh
YnMtbW9kZTogbmlsDQo+ICsgKiBFbmQ6DQo+ICsgKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv
eGVuL3hlbi9lcnJuby5oIGIvaW5jbHVkZS94ZW4veGVuL2Vycm5vLmgNCj4gbmV3IGZpbGUgbW9k
ZSAxMDA3NTUNCj4gaW5kZXggMDAwMDAwMC4uNjliMjhkZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsr
KyBiL2luY2x1ZGUveGVuL3hlbi9lcnJuby5oDQo+IEBAIC0wLDAgKzEsMTggQEANCj4gKyNpZm5k
ZWYgX19YRU5fRVJSTk9fSF9fDQo+ICsjZGVmaW5lIF9fWEVOX0VSUk5PX0hfXw0KPiArDQo+ICsj
aWZuZGVmIF9fQVNTRU1CTFlfXw0KPiArDQo+ICsjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1
ZSkgbmFtZSA9IHZhbHVlLA0KPiArZW51bSB7DQo+ICsjaW5jbHVkZSA8cHVibGljL2Vycm5vLmg+
DQo+ICt9Ow0KPiArDQo+ICsjZWxzZSAvKiAhX19BU1NFTUJMWV9fICovDQo+ICsNCj4gKyNkZWZp
bmUgWEVOX0VSUk5PKG5hbWUsIHZhbHVlKSAuZXF1IG5hbWUsIHZhbHVlDQo+ICsjaW5jbHVkZSA8
cHVibGljL2Vycm5vLmg+DQo+ICsNCj4gKyNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8NCj4gKw0K
PiArI2VuZGlmIC8qICBfX1hFTl9FUlJOT19IX18gKi8NCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5j
b25zL2Zkby5jIGIvc3JjL3hlbmNvbnMvZmRvLmMNCj4gaW5kZXggNDA0NmFjZi4uZTI4MzU1YyAx
MDA2NDQNCj4gLS0tIGEvc3JjL3hlbmNvbnMvZmRvLmMNCj4gKysrIGIvc3JjL3hlbmNvbnMvZmRv
LmMNCj4gQEAgLTczNCw4ICs3MzQsMTAgQEAgX19GZG9FbnVtZXJhdGUoDQo+IA0KPiAgICAgICAg
ICAvLyBJZiB0aGUgUERPIGlzIHRoZSBkZWZhdWx0IGNvbnNvbGUsIGl0IHdvbnQgZXhpc3QgaW4g
dGhlDQo+ICAgICAgICAgIC8vIHRoZSBkZXZpY2UgbGlzdCwgYXMgaXRzIHN0YXRpY2FsbHkgY3Jl
YXRlZA0KPiAtICAgICAgICBpZiAoUGRvSXNEZWZhdWx0KFBkbykpDQo+ICsgICAgICAgIGlmIChQ
ZG9Jc0RlZmF1bHQoUGRvKSkgew0KPiArICAgICAgICAgICAgTGlzdEVudHJ5ID0gTmV4dDsNCj4g
ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICB9DQo+IA0KPiAgICAgICAgICBpZiAo
UGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKSAhPSBEZWxldGVkKSB7DQo+ICAgICAgICAgICAgICBQ
Q0hBUiAgICAgICAgICAgTmFtZTsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zyb250ZW5k
LmMgYi9zcmMveGVuY29ucy9mcm9udGVuZC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGlu
ZGV4IDAwMDAwMDAuLmJkZDI5NDUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuY29u
cy9mcm9udGVuZC5jDQo+IEBAIC0wLDAgKzEsMTQ5OSBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBD
aXRyaXggU3lzdGVtcyBJbmMuDQo+ICsqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsqDQo+ICsq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsq
IHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4g
KyogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gKyoNCj4gKyogKiAg
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4g
KyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArKiAqICAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KPiArKiAgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArKiAgICAgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsq
ICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArKg0KPiAr
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQN
Cj4gKyogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywNCj4gKyogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YNCj4gKyogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsqIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KPiArKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+ICsqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0K
PiArKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcNCj4gKyogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQ0KPiArKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GDQo+ICsqIFNVQ0ggREFNQUdFLg0KPiArKi8NCj4gKw0KPiArI2Rl
ZmluZSBJTklUR1VJRCAxDQo+ICsNCj4gKyNpbmNsdWRlIDxudGRkay5oPg0KPiArI2luY2x1ZGUg
PHdkbWd1aWQuaD4NCj4gKyNpbmNsdWRlIDxudHN0cnNhZmUuaD4NCj4gKyNpbmNsdWRlIDxzdGRs
aWIuaD4NCj4gKw0KPiArI2luY2x1ZGUgPHhlbi5oPg0KPiArI2luY2x1ZGUgPHN0b3JlX2ludGVy
ZmFjZS5oPg0KPiArI2luY2x1ZGUgPHN1c3BlbmRfaW50ZXJmYWNlLmg+DQo+ICsjaW5jbHVkZSA8
ZGVidWdfaW50ZXJmYWNlLmg+DQo+ICsjaW5jbHVkZSA8eGVuY29uc19kZXZpY2UuaD4NCj4gKw0K
PiArI2luY2x1ZGUgImRyaXZlci5oIg0KPiArI2luY2x1ZGUgImZyb250ZW5kLmgiDQo+ICsjaW5j
bHVkZSAidGhyZWFkLmgiDQo+ICsjaW5jbHVkZSAiZGJnX3ByaW50LmgiDQo+ICsjaW5jbHVkZSAi
YXNzZXJ0LmgiDQo+ICsjaW5jbHVkZSAidXRpbC5oIg0KPiArDQo+ICsjZGVmaW5lIEZST05URU5E
X1BPT0wgJ1ROUkYnDQo+ICsjZGVmaW5lIERPTUlEX0lOVkFMSUQgKDB4N0ZGRlUpDQo+ICsNCj4g
K3R5cGVkZWYgZW51bSBfRlJPTlRFTkRfU1RBVEUgew0KPiArICAgIEZST05URU5EX1VOS05PV04s
DQo+ICsgICAgRlJPTlRFTkRfQ0xPU0VELA0KPiArICAgIEZST05URU5EX1BSRVBBUkVELA0KPiAr
ICAgIEZST05URU5EX0NPTk5FQ1RFRCwNCj4gKyAgICBGUk9OVEVORF9FTkFCTEVEDQo+ICt9IEZS
T05URU5EX1NUQVRFLCAqUEZST05URU5EX1NUQVRFOw0KPiArDQo+ICtzdHJ1Y3QgX1hFTkNPTlNf
RlJPTlRFTkQgew0KPiArICAgIExPTkcgICAgICAgICAgICAgICAgICAgICAgICBSZWZDb3VudDsN
Cj4gKyAgICBQWEVOQ09OU19QRE8gICAgICAgICAgICAgICAgUGRvOw0KPiArICAgIFBDSEFSICAg
ICAgICAgICAgICAgICAgICAgICBQYXRoOw0KPiArICAgIEZST05URU5EX1NUQVRFICAgICAgICAg
ICAgICBTdGF0ZTsNCj4gKyAgICBLU1BJTl9MT0NLICAgICAgICAgICAgICAgICAgTG9jazsNCj4g
KyAgICBQWEVOQ09OU19USFJFQUQgICAgICAgICAgICAgRWplY3RUaHJlYWQ7DQo+ICsgICAgS0VW
RU5UICAgICAgICAgICAgICAgICAgICAgIEVqZWN0RXZlbnQ7DQo+ICsgICAgQk9PTEVBTiAgICAg
ICAgICAgICAgICAgICAgIE9ubGluZTsNCj4gKw0KPiArICAgIFBDSEFSICAgICAgICAgICAgICAg
ICAgICAgICBCYWNrZW5kUGF0aDsNCj4gKyAgICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAg
QmFja2VuZERvbWFpbjsNCj4gKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgTmFtZTsN
Cj4gKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2w7DQo+ICsNCj4gKyAg
ICBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICAgRGVidWdJbnRlcmZhY2U7DQo+ICsgICAgWEVO
QlVTX1NVU1BFTkRfSU5URVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7DQo+ICsgICAgWEVOQlVT
X1NUT1JFX0lOVEVSRkFDRSAgICAgIFN0b3JlSW50ZXJmYWNlOw0KPiArDQo+ICsgICAgUFhFTkJV
U19TVVNQRU5EX0NBTExCQUNLICAgIFN1c3BlbmRDYWxsYmFjazsNCj4gKyAgICBQWEVOQlVTX0RF
QlVHX0NBTExCQUNLICAgICAgRGVidWdDYWxsYmFjazsNCj4gKyAgICBQWEVOQlVTX1NUT1JFX1dB
VENIICAgICAgICAgV2F0Y2g7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3QgUENIQVINCj4g
K0Zyb250ZW5kU3RhdGVOYW1lKA0KPiArICAgIElOICBGUk9OVEVORF9TVEFURSAgU3RhdGUNCj4g
KyAgICApDQo+ICt7DQo+ICsjZGVmaW5lIF9TVEFURV9OQU1FKF9TdGF0ZSkgICAgIFwNCj4gKyAg
ICBjYXNlICBGUk9OVEVORF8gIyMgX1N0YXRlOiAgXA0KPiArICAgICAgICByZXR1cm4gI19TdGF0
ZTsNCj4gKw0KPiArICAgIHN3aXRjaCAoU3RhdGUpIHsNCj4gKyAgICAgICAgX1NUQVRFX05BTUUo
VU5LTk9XTik7DQo+ICsgICAgICAgIF9TVEFURV9OQU1FKENMT1NFRCk7DQo+ICsgICAgICAgIF9T
VEFURV9OQU1FKFBSRVBBUkVEKTsNCj4gKyAgICAgICAgX1NUQVRFX05BTUUoQ09OTkVDVEVEKTsN
Cj4gKyAgICAgICAgX1NUQVRFX05BTUUoRU5BQkxFRCk7DQo+ICsgICAgZGVmYXVsdDoNCj4gKyAg
ICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuICJJTlZBTElEIjsNCj4g
Kw0KPiArI3VuZGVmICBfU1RBVEVfTkFNRQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3QgUENI
QVINCj4gK1hlbmJ1c1N0YXRlTmFtZSgNCj4gKyAgICBJTiAgWGVuYnVzU3RhdGUgU3RhdGUNCj4g
KyAgICApDQo+ICt7DQo+ICsjZGVmaW5lIF9TVEFURV9OQU1FKF9TdGF0ZSkgICAgICAgICBcDQo+
ICsgICAgY2FzZSAgWGVuYnVzU3RhdGUgIyMgX1N0YXRlOiAgICBcDQo+ICsgICAgICAgIHJldHVy
biAjX1N0YXRlOw0KPiArDQo+ICsgICAgc3dpdGNoIChTdGF0ZSkgew0KPiArICAgICAgICBfU1RB
VEVfTkFNRShVbmtub3duKTsNCj4gKyAgICAgICAgX1NUQVRFX05BTUUoSW5pdGlhbGlzaW5nKTsN
Cj4gKyAgICAgICAgX1NUQVRFX05BTUUoSW5pdFdhaXQpOw0KPiArICAgICAgICBfU1RBVEVfTkFN
RShJbml0aWFsaXNlZCk7DQo+ICsgICAgICAgIF9TVEFURV9OQU1FKENvbm5lY3RlZCk7DQo+ICsg
ICAgICAgIF9TVEFURV9OQU1FKENsb3NpbmcpOw0KPiArICAgICAgICBfU1RBVEVfTkFNRShDbG9z
ZWQpOw0KPiArICAgICAgICBfU1RBVEVfTkFNRShSZWNvbmZpZ3VyaW5nKTsNCj4gKyAgICAgICAg
X1NUQVRFX05BTUUoUmVjb25maWd1cmVkKTsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBi
cmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gIklOVkFMSUQiOw0KPiArDQo+ICsj
dW5kZWYgIF9TVEFURV9OQU1FDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBQVk9J
RA0KPiArX19Gcm9udGVuZEFsbG9jYXRlKA0KPiArICAgIElOICBVTE9ORyAgIExlbmd0aA0KPiAr
ICAgICkNCj4gK3sNCj4gKyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2Vk
UG9vbCwgTGVuZ3RoLA0KPiBGUk9OVEVORF9QT09MKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZP
UkNFSU5MSU5FIFZPSUQNCj4gK19fRnJvbnRlbmRGcmVlKA0KPiArICAgIElOICBQVk9JRCAgIEJ1
ZmZlcg0KPiArICAgICkNCj4gK3sNCj4gKyAgICBfX0ZyZWVQb29sV2l0aFRhZyhCdWZmZXIsIEZS
T05URU5EX1BPT0wpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgUFhFTkNPTlNf
UERPDQo+ICtfX0Zyb250ZW5kR2V0UGRvKA0KPiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAg
IEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBGcm9udGVuZC0+UGRvOw0K
PiArfQ0KPiArDQo+ICtQWEVOQ09OU19QRE8NCj4gK0Zyb250ZW5kR2V0UGRvKA0KPiArICAgIElO
ICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJl
dHVybiBfX0Zyb250ZW5kR2V0UGRvKEZyb250ZW5kKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZP
UkNFSU5MSU5FIFBDSEFSDQo+ICtfX0Zyb250ZW5kR2V0UGF0aCgNCj4gKyAgICBJTiAgUFhFTkNP
TlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAgICkNCj4gK3sNCj4gKyAgICByZXR1cm4gRnJv
bnRlbmQtPlBhdGg7DQo+ICt9DQo+ICsNCj4gK1BDSEFSDQo+ICtGcm9udGVuZEdldFBhdGgoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+
ICsgICAgcmV0dXJuIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKTsNCj4gK30NCj4gKw0KPiAr
c3RhdGljIEZPUkNFSU5MSU5FIFBDSEFSDQo+ICtfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+
ICsgICAgcmV0dXJuIEZyb250ZW5kLT5CYWNrZW5kUGF0aDsNCj4gK30NCj4gKw0KPiArUENIQVIN
Cj4gK0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5E
ICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIF9fRnJvbnRlbmRHZXRC
YWNrZW5kUGF0aChGcm9udGVuZCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBV
U0hPUlQNCj4gK19fRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKA0KPiArICAgIElOICBQWEVOQ09O
U19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBGcm9u
dGVuZC0+QmFja2VuZERvbWFpbjsNCj4gK30NCj4gKw0KPiArVVNIT1JUDQo+ICtGcm9udGVuZEdl
dEJhY2tlbmREb21haW4oDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQN
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIF9fRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWlu
KEZyb250ZW5kKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEJPT0xFQU4NCj4gK0Zyb250ZW5kSXNP
bmxpbmUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICAp
DQo+ICt7DQo+ICsgICAgcmV0dXJuIEZyb250ZW5kLT5PbmxpbmU7DQo+ICt9DQo+ICsNCj4gK3N0
YXRpYyBCT09MRUFODQo+ICtGcm9udGVuZElzQmFja2VuZE9ubGluZSgNCj4gKyAgICBJTiAgUFhF
TkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQQ0hBUiAg
ICAgICAgICAgICAgICAgICBCdWZmZXI7DQo+ICsgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAg
T25saW5lOw0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiAr
ICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFj
a2VuZFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAib25saW5l
IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkJ1ZmZlcik7DQo+ICsgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpIHsNCj4gKyAgICAgICAgT25saW5lID0gRkFMU0U7DQo+ICsgICAg
fSBlbHNlIHsNCj4gKyAgICAgICAgT25saW5lID0gKEJPT0xFQU4pc3RydG9sKEJ1ZmZlciwgTlVM
TCwgMik7DQo+ICsNCj4gKyAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVyKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gT25saW5lOw0KPiAr
fQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK0Zyb250ZW5k
RWplY3QoDQo+ICsgICAgSU4gIFBYRU5DT05TX1RIUkVBRCBTZWxmLA0KPiArICAgIElOICBQVk9J
RCAgICAgICAgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19GUk9O
VEVORCAgIEZyb250ZW5kID0gQ29udGV4dDsNCj4gKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2
ZW50Ow0KPiArDQo+ICsgICAgVHJhY2UoIiVzOiA9PT09PlxuIiwgX19Gcm9udGVuZEdldFBhdGgo
RnJvbnRlbmQpKTsNCj4gKw0KPiArICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7DQo+
ICsNCj4gKyAgICBmb3IgKDs7KSB7DQo+ICsgICAgICAgIEtJUlFMICAgICAgIElycWw7DQo+ICsN
Cj4gKyAgICAgICAgS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsgICAgICAgIEtl
Q2xlYXJFdmVudChFdmVudCk7DQo+ICsNCj4gKyAgICAgICAgaWYgKFRocmVhZElzQWxlcnRlZChT
ZWxmKSkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIEtlQWNxdWlyZVNw
aW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgJklycWwpOw0KPiArDQo+ICsgICAgICAgIC8vIEl0IGlz
IG5vdCBzYWZlIHRvIHVzZSBpbnRlcmZhY2VzIGJlZm9yZSB0aGlzIHBvaW50DQo+ICsgICAgICAg
IGlmIChGcm9udGVuZC0+U3RhdGUgPT0gRlJPTlRFTkRfVU5LTk9XTiB8fA0KPiArICAgICAgICAg
ICAgRnJvbnRlbmQtPlN0YXRlID09IEZST05URU5EX0NMT1NFRCkNCj4gKyAgICAgICAgICAgIGdv
dG8gbG9vcDsNCj4gKw0KPiArICAgICAgICBpZiAoIUZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQp
KQ0KPiArICAgICAgICAgICAgZ290byBsb29wOw0KPiArDQo+ICsgICAgICAgIGlmICghRnJvbnRl
bmRJc0JhY2tlbmRPbmxpbmUoRnJvbnRlbmQpKQ0KPiArICAgICAgICAgICAgUGRvUmVxdWVzdEVq
ZWN0KF9fRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKTsNCj4gKw0KPiArICAgIGxvb3A6DQo+ICsg
ICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgSXJxbCk7DQo+ICsNCj4g
KyAgICAgICAgS2VTZXRFdmVudCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsIElPX05PX0lOQ1JFTUVO
VCwgRkFMU0UpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIEtlU2V0RXZlbnQoJkZyb250ZW5kLT5F
amVjdEV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsNCj4gKw0KPiArICAgIFRyYWNlKCIl
czogPD09PT1cbiIsIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKSk7DQo+ICsNCj4gKyAgICBy
ZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK0Zyb250ZW5kRWpl
Y3RGYWlsZWQoDQo+ICsgICAgSU4gUFhFTkNPTlNfRlJPTlRFTkQgICAgRnJvbnRlbmQNCj4gKyAg
ICApDQo+ICt7DQo+ICsgICAgS0lSUUwgICAgICAgICAgICAgICAgICAgSXJxbDsNCj4gKyAgICBV
TE9ORyAgICAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ICsgICAgUENIQVIgICAgICAgICAgICAg
ICAgICAgUGF0aDsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsN
Cj4gKyAgICBLZUFjcXVpcmVTcGluTG9jaygmRnJvbnRlbmQtPkxvY2ssICZJcnFsKTsNCj4gKw0K
PiArICAgIEluZm8oIiVzOiBkZXZpY2UgZWplY3QgZmFpbGVkXG4iLCBfX0Zyb250ZW5kR2V0UGF0
aChGcm9udGVuZCkpOw0KPiArDQo+ICsgICAgTGVuZ3RoID0gc2l6ZW9mKCJlcnJvci8iKSArDQo+
IChVTE9ORylzdHJsZW4oX19Gcm9udGVuZEdldFBhdGgoRnJvbnRlbmQpKTsNCj4gKyAgICBQYXRo
ID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0aCk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFU
VVNfTk9fTUVNT1JZOw0KPiArICAgIGlmIChQYXRoID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8g
ZmFpbDE7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBSdGxTdHJpbmdDYlByaW50ZkEoUGF0aCwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXJyb3IvJXMiLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCkpOw0KPiArICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgKFZP
SUQpWEVOQlVTX1NUT1JFKFByaW50ZiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgJkZyb250
ZW5kLT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgUGF0aCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ImVycm9yIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIlVOUExVRyBGQUlMRUQ6IGRldmlj
ZSBpcyBzdGlsbCBpbiB1c2UiKTsNCj4gKw0KPiArICAgIF9fRnJvbnRlbmRGcmVlKFBhdGgpOw0K
PiArDQo+ICsgICAgS2VSZWxlYXNlU3BpbkxvY2soJkZyb250ZW5kLT5Mb2NrLCBJcnFsKTsNCj4g
KyAgICByZXR1cm47DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIEVycm9yKCJmYWlsMlxuIik7DQo+
ICsNCj4gKyAgICBfX0Zyb250ZW5kRnJlZShQYXRoKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAg
RXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIEtlUmVsZWFzZVNw
aW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgSXJxbCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBWT0lE
DQo+ICtGcm9udGVuZFNldE9ubGluZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBG
cm9udGVuZA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+
ICsgICAgRnJvbnRlbmQtPk9ubGluZSA9IFRSVUU7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1c
biIpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgVk9JRA0KPiArRnJvbnRlbmRTZXRPZmZsaW5lKA0K
PiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0K
PiArICAgIFRyYWNlKCI9PT09PlxuIik7DQo+ICsNCj4gKyAgICBGcm9udGVuZC0+T25saW5lID0g
RkFMU0U7DQo+ICsgICAgUGRvUmVxdWVzdEVqZWN0KF9fRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQp
KTsNCj4gKw0KPiArICAgIFRyYWNlKCI8PT09PVxuIik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBW
T0lEDQo+ICtGcm9udGVuZFNldFhlbmJ1c1N0YXRlKA0KPiArICAgIElOICBQWEVOQ09OU19GUk9O
VEVORCAgIEZyb250ZW5kLA0KPiArICAgIElOICBYZW5idXNTdGF0ZSAgICAgICAgIFN0YXRlDQo+
ICsgICAgKQ0KPiArew0KPiArICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIE9ubGluZTsNCj4g
Kw0KPiArICAgIFRyYWNlKCIlczogPT09PT4gJXNcbiIsDQo+ICsgICAgICAgICAgX19Gcm9udGVu
ZEdldFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgIFhlbmJ1c1N0YXRlTmFtZShTdGF0ZSkp
Ow0KPiArDQo+ICsgICAgQVNTRVJUKEZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKTsNCj4gKw0K
PiArICAgIE9ubGluZSA9IEZyb250ZW5kSXNCYWNrZW5kT25saW5lKEZyb250ZW5kKTsNCj4gKw0K
PiArICAgIChWT0lEKVhFTkJVU19TVE9SRShQcmludGYsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250
ZW5kKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlIiwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIiV1IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUpOw0KPiAr
DQo+ICsgICAgaWYgKFN0YXRlID09IFhlbmJ1c1N0YXRlQ2xvc2VkICYmICFPbmxpbmUpDQo+ICsg
ICAgICAgIEZyb250ZW5kU2V0T2ZmbGluZShGcm9udGVuZCk7DQo+ICsNCj4gKyAgICBUcmFjZSgi
JXM6IDw9PT09ICVzXG4iLA0KPiArICAgICAgICAgIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5k
KSwNCj4gKyAgICAgICAgICBYZW5idXNTdGF0ZU5hbWUoU3RhdGUpKTsNCj4gK30NCj4gKw0KPiAr
c3RhdGljIFZPSUQNCj4gK0Zyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZSgN
Cj4gKyAgICBJTiAgICAgIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQsDQo+ICsgICAgSU4g
T1VUICBYZW5idXNTdGF0ZSAgICAgICAgICpTdGF0ZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBL
RVZFTlQgICAgICAgICAgICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUFhFTkJVU19TVE9SRV9X
QVRDSCAgICAgICAgIFdhdGNoOw0KPiArICAgIExBUkdFX0lOVEVHRVIgICAgICAgICAgICAgICBT
dGFydDsNCj4gKyAgICBVTE9OR0xPTkcgICAgICAgICAgICAgICAgICAgVGltZURlbHRhOw0KPiAr
ICAgIExBUkdFX0lOVEVHRVIgICAgICAgICAgICAgICBUaW1lb3V0Ow0KPiArICAgIFhlbmJ1c1N0
YXRlICAgICAgICAgICAgICAgICBPbGQgPSAqU3RhdGU7DQo+ICsgICAgTlRTVEFUVVMgICAgICAg
ICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFRyYWNlKCIlczogPT09PT4gJXNcbiIs
DQo+ICsgICAgICAgICAgX19Gcm9udGVuZEdldEJhY2tlbmRQYXRoKEZyb250ZW5kKSwNCj4gKyAg
ICAgICAgICBYZW5idXNTdGF0ZU5hbWUoKlN0YXRlKSk7DQo+ICsNCj4gKyAgICBBU1NFUlQoRnJv
bnRlbmRJc09ubGluZShGcm9udGVuZCkpOw0KPiArDQo+ICsgICAgS2VJbml0aWFsaXplRXZlbnQo
JkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOw0KPiArDQo+ICsgICAgc3RhdHVzID0g
WEVOQlVTX1NUT1JFKFdhdGNoQWRkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJv
bnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zy
b250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RhdGUiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRXZlbnQsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICZXYXRjaCk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpDQo+ICsgICAgICAgIFdhdGNoID0gTlVMTDsNCj4gKw0KPiArICAgIEtlUXVlcnlT
eXN0ZW1UaW1lKCZTdGFydCk7DQo+ICsgICAgVGltZURlbHRhID0gMDsNCj4gKw0KPiArICAgIFRp
bWVvdXQuUXVhZFBhcnQgPSAwOw0KPiArDQo+ICsgICAgd2hpbGUgKCpTdGF0ZSA9PSBPbGQgJiYg
VGltZURlbHRhIDwgMTIwMDAwKSB7DQo+ICsgICAgICAgIFBDSEFSICAgICAgICAgICBCdWZmZXI7
DQo+ICsgICAgICAgIExBUkdFX0lOVEVHRVIgICBOb3c7DQo+ICsNCj4gKyAgICAgICAgaWYgKFdh
dGNoICE9IE5VTEwpIHsNCj4gKyAgICAgICAgICAgIFVMT05HICAgQXR0ZW1wdCA9IDA7DQo+ICsN
Cj4gKyAgICAgICAgICAgIHdoaWxlICgrK0F0dGVtcHQgPCAxMDAwKSB7DQo+ICsgICAgICAgICAg
ICAgICAgc3RhdHVzID0gS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZFdmVudCwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWxNb2RlLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRpbWVv
dXQpOw0KPiArICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gU1RBVFVTX1RJTUVPVVQpDQo+
ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgLy8g
V2UgYXJlIHdhaXRpbmcgZm9yIGEgd2F0Y2ggZXZlbnQgYXQgRElTUEFUQ0hfTEVWRUwgc28NCj4g
KyAgICAgICAgICAgICAgICAvLyBpdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gcG9sbCB0aGUg
c3RvcmUgcmluZy4NCj4gKyAgICAgICAgICAgICAgICBYRU5CVVNfU1RPUkUoUG9sbCwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7DQo+
ICsNCj4gKyAgICAgICAgICAgICAgICBLZVN0YWxsRXhlY3V0aW9uUHJvY2Vzc29yKDEwMDApOyAg
IC8vIDFtcw0KPiArICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICBLZUNsZWFyRXZl
bnQoJkV2ZW50KTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIHN0YXR1cyA9IFhFTkJV
U19TVE9SRShSZWFkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5k
LT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFja2VuZFBh
dGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlIiwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZCdWZmZXIpOw0KPiArICAgICAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkgew0KPiArICAgICAgICAgICAgKlN0YXRlID0gWGVuYnVz
U3RhdGVVbmtub3duOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgKlN0YXRl
ID0gKFhlbmJ1c1N0YXRlKXN0cnRvbChCdWZmZXIsIE5VTEwsIDEwKTsNCj4gKw0KPiArICAgICAg
ICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJkZy
b250ZW5kLT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXIpOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgS2VRdWVyeVN5c3RlbVRpbWUoJk5v
dyk7DQo+ICsNCj4gKyAgICAgICAgVGltZURlbHRhID0gKE5vdy5RdWFkUGFydCAtIFN0YXJ0LlF1
YWRQYXJ0KSAvIDEwMDAwdWxsOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChXYXRjaCAhPSBO
VUxMKQ0KPiArICAgICAgICAoVk9JRCkgWEVOQlVTX1NUT1JFKFdhdGNoUmVtb3ZlLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2gpOw0KPiArDQo+ICsgICAgVHJhY2UoIiVz
OiA8PT09PSAoJXMpXG4iLA0KPiArICAgICAgICAgIF9fRnJvbnRlbmRHZXRCYWNrZW5kUGF0aChG
cm9udGVuZCksDQo+ICsgICAgICAgICAgWGVuYnVzU3RhdGVOYW1lKCpTdGF0ZSkpOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kQWNxdWlyZUJhY2tlbmQoDQo+ICsg
ICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+ICsg
ICAgUENIQVIgICAgICAgICAgICAgICAgICAgQnVmZmVyOw0KPiArICAgIE5UU1RBVFVTICAgICAg
ICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFRyYWNlKCI9PT09PT5cbiIpOw0KPiArDQo+
ICsgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKFJlYWQsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRnJvbnRlbmRHZXRQ
YXRoKEZyb250ZW5kKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2tlbmQiLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAmQnVmZmVyKTsNCj4gKyAgICBpZiAoIU5UX1NV
Q0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4gKw0KPiArICAgIEZyb250
ZW5kLT5CYWNrZW5kUGF0aCA9IEJ1ZmZlcjsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19T
VE9SRShSZWFkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3Jl
SW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCksDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICJiYWNrZW5kLWlkIiwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkJ1ZmZlcik7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpIHsNCj4g
KyAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4gPSAwOw0KPiArICAgIH0gZWxzZSB7DQo+
ICsgICAgICAgIEZyb250ZW5kLT5CYWNrZW5kRG9tYWluID0gKFVTSE9SVClzdHJ0b2woQnVmZmVy
LCBOVUxMLCAxMCk7DQo+ICsNCj4gKyAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiArICAgIHJldHVybiBz
dGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtGcm9udGVuZFJlbGVhc2VCYWNr
ZW5kKA0KPiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0K
PiArew0KPiArICAgIFRyYWNlKCI9PT09PT5cbiIpOw0KPiArDQo+ICsgICAgQVNTRVJUKEZyb250
ZW5kLT5CYWNrZW5kRG9tYWluICE9IERPTUlEX0lOVkFMSUQpOw0KPiArICAgIEFTU0VSVChGcm9u
dGVuZC0+QmFja2VuZFBhdGggIT0gTlVMTCk7DQo+ICsNCj4gKyAgICBGcm9udGVuZC0+QmFja2Vu
ZERvbWFpbiA9IERPTUlEX0lOVkFMSUQ7DQo+ICsNCj4gKyAgICBYRU5CVVNfU1RPUkUoRnJlZSwN
Cj4gKyAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAg
ICAgICAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmRQYXRoKTsNCj4gKyAgICBGcm9udGVuZC0+QmFj
a2VuZFBhdGggPSBOVUxMOw0KPiArDQo+ICsgICAgVHJhY2UoIjw9PT09PVxuIik7DQo+ICt9DQo+
ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtGcm9udGVuZENsb3NlKA0KPiArICAgIElOICBQWEVOQ09O
U19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFhlbmJ1c1N0YXRl
ICAgICAgICAgICAgIFN0YXRlOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gKw0K
PiArICAgIEFTU0VSVChGcm9udGVuZC0+V2F0Y2ggIT0gTlVMTCk7DQo+ICsgICAgKFZPSUQpWEVO
QlVTX1NUT1JFKFdhdGNoUmVtb3ZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRl
bmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+
V2F0Y2gpOw0KPiArICAgIEZyb250ZW5kLT5XYXRjaCA9IE5VTEw7DQo+ICsNCj4gKyAgICBTdGF0
ZSA9IFhlbmJ1c1N0YXRlVW5rbm93bjsNCj4gKyAgICB3aGlsZSAoU3RhdGUgIT0gWGVuYnVzU3Rh
dGVDbG9zZWQpIHsNCj4gKyAgICAgICAgaWYgKCFGcm9udGVuZElzT25saW5lKEZyb250ZW5kKSkN
Cj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIEZyb250ZW5kU2V0WGVuYnVz
U3RhdGUoRnJvbnRlbmQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVz
U3RhdGVDbG9zZWQpOw0KPiArDQo+ICsgICAgICAgIEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5i
dXNTdGF0ZUNoYW5nZShGcm9udGVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZTdGF0ZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgRnJvbnRl
bmRSZWxlYXNlQmFja2VuZChGcm9udGVuZCk7DQo+ICsNCj4gKyAgICBYRU5CVVNfU1RPUkUoUmVs
ZWFzZSwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09
PT1cbiIpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kUHJlcGFy
ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAgICkNCj4g
K3sNCj4gKyAgICBYZW5idXNTdGF0ZSAgICAgICAgICAgICBTdGF0ZTsNCj4gKyAgICBOVFNUQVRV
UyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBUcmFjZSgiPT09PT5cbiIpOw0K
PiArDQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKEFjcXVpcmUsICZGcm9udGVuZC0+U3Rv
cmVJbnRlcmZhY2UpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAg
ICBnb3RvIGZhaWwxOw0KPiArDQo+ICsgICAgRnJvbnRlbmRTZXRPbmxpbmUoRnJvbnRlbmQpOw0K
PiArDQo+ICsgICAgc3RhdHVzID0gRnJvbnRlbmRBY3F1aXJlQmFja2VuZChGcm9udGVuZCk7DQo+
ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+
ICsNCj4gKyAgICBTdGF0ZSA9IFhlbmJ1c1N0YXRlVW5rbm93bjsNCj4gKyAgICB3aGlsZSAoU3Rh
dGUgIT0gWGVuYnVzU3RhdGVJbml0V2FpdCkgew0KPiArICAgICAgICBpZiAoIUZyb250ZW5kSXNP
bmxpbmUoRnJvbnRlbmQpKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAg
RnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyk7DQo+ICsNCj4gKyAgICAgICAgRnJv
bnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5kLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRlKTsNCj4gKyAg
ICB9DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOw0KPiArICAgIGlm
IChTdGF0ZSAhPSBYZW5idXNTdGF0ZUluaXRXYWl0KQ0KPiArICAgICAgICBnb3RvIGZhaWwzOw0K
PiArDQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKFdhdGNoQWRkLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAib25saW5lIiwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGhyZWFkR2V0RXZlbnQoRnJvbnRlbmQtPkVqZWN0VGhyZWFkKSwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5XYXRjaCk7DQo+ICsgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDQ7DQo+ICsNCj4gKyAgICBUcmFj
ZSgiPD09PT1cbiIpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFp
bDQ6DQo+ICsgICAgRXJyb3IoImZhaWw0XG4iKTsNCj4gKw0KPiArZmFpbDM6DQo+ICsgICAgRXJy
b3IoImZhaWwzXG4iKTsNCj4gKw0KPiArICAgIEZyb250ZW5kUmVsZWFzZUJhY2tlbmQoRnJvbnRl
bmQpOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICsg
ICAgRnJvbnRlbmRTZXRPZmZsaW5lKEZyb250ZW5kKTsNCj4gKw0KPiArICAgIFhFTkJVU19TVE9S
RShSZWxlYXNlLCAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlKTsNCj4gKw0KPiArZmFpbDE6DQo+
ICsgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIHJldHVy
biBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtGcm9udGVuZERlYnVnQ2Fs
bGJhY2soDQo+ICsgICAgSU4gIFBWT0lEICAgICAgICAgICAgICAgQXJndW1lbnQsDQo+ICsgICAg
SU4gIEJPT0xFQU4gICAgICAgICAgICAgQ3Jhc2hpbmcNCj4gKyAgICApDQo+ICt7DQo+ICsgICAg
UFhFTkNPTlNfRlJPTlRFTkQgICAgICAgRnJvbnRlbmQgPSBBcmd1bWVudDsNCj4gKw0KPiArICAg
IFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3Jhc2hpbmcpOw0KPiArDQo+ICsgICAgWEVOQlVTX0RF
QlVHKFByaW50ZiwNCj4gKyAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFj
ZSwNCj4gKyAgICAgICAgICAgICAgICAgIlBBVEg6ICVzXG4iLA0KPiArICAgICAgICAgICAgICAg
ICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCkpOw0KPiArICAgIFhFTkJVU19ERUJVRyhQcmlu
dGYsDQo+ICsgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsDQo+ICsg
ICAgICAgICAgICAgICAgICJOQU1FOiAlc1xuIiwNCj4gKyAgICAgICAgICAgICAgICAgRnJvbnRl
bmQtPk5hbWUpOw0KPiArICAgIFhFTkJVU19ERUJVRyhQcmludGYsDQo+ICsgICAgICAgICAgICAg
ICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICJQUk9U
T0NPTDogJXNcbiIsDQo+ICsgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5Qcm90b2NvbCk7DQo+
ICt9DQo+ICsNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiArRnJvbnRlbmRDb25uZWN0KA0KPiArICAg
IElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAg
IFhlbmJ1c1N0YXRlICAgICAgICAgICAgIFN0YXRlOw0KPiArICAgIFVMT05HICAgICAgICAgICAg
ICAgICAgIEF0dGVtcHQ7DQo+ICsgICAgUENIQVIgICAgICAgICAgICAgICAgICAgQnVmZmVyOw0K
PiArICAgIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0aDsNCj4gKyAgICBOVFNUQVRVUyAg
ICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiAr
DQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX0RFQlVHKEFjcXVpcmUsICZGcm9udGVuZC0+RGVidWdJ
bnRlcmZhY2UpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBn
b3RvIGZhaWwxOw0KPiArDQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX0RFQlVHKFJlZ2lzdGVyLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX01PRFVMRV9fICJ8RlJPTlRFTkQiLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZERlYnVnQ2FsbGJhY2ssDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAmRnJvbnRlbmQtPkRlYnVnQ2FsbGJhY2spOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgLy8gVE9ETzogQ29u
bmVjdCBSaW5nDQo+ICsNCj4gKyAgICBBdHRlbXB0ID0gMDsNCj4gKyAgICBkbyB7DQo+ICsgICAg
ICAgIFBYRU5CVVNfU1RPUkVfVFJBTlNBQ1RJT04gICBUcmFuc2FjdGlvbjsNCj4gKw0KPiArICAg
ICAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoVHJhbnNhY3Rpb25TdGFydCwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmVHJhbnNhY3Rpb24pOw0KPiArICAgICAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAg
ICAgIC8vIFRPRE86IFN0b3JlV3JpdGUgUmluZw0KPiArDQo+ICsgICAgICAgIHN0YXR1cyA9IFhF
TkJVU19TVE9SRShUcmFuc2FjdGlvbkVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUcmFuc2FjdGlvbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUpOw0KPiArICAgICAgICBpZiAoc3RhdHVzICE9IFNUQVRVU19SRVRSWSB8fCArK0F0dGVtcHQg
PiAxMCkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgIGNvbnRpbnVlOw0K
PiArDQo+ICsgICAgLy9hYm9ydDoNCj4gKyAgICAvLyAgICAoVk9JRClYRU5CVVNfU1RPUkUoVHJh
bnNhY3Rpb25FbmQsDQo+ICsgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+
U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0
aW9uLA0KPiArICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7DQo+ICsgICAgLy8g
ICAgYnJlYWs7DQo+ICsgICAgfSB3aGlsZSAoc3RhdHVzID09IFNUQVRVU19SRVRSWSk7DQo+ICsN
Cj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsNDsN
Cj4gKw0KPiArICAgIFN0YXRlID0gWGVuYnVzU3RhdGVVbmtub3duOw0KPiArICAgIHdoaWxlIChT
dGF0ZSAhPSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkgew0KPiArICAgICAgICBpZiAoIUZyb250ZW5k
SXNPbmxpbmUoRnJvbnRlbmQpKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAg
ICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7DQo+ICsNCj4gKyAgICAgICAgRnJv
bnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5kLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRlKTsNCj4gKyAg
ICB9DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOw0KPiArICAgIGlm
IChTdGF0ZSAhPSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkNCj4gKyAgICAgICAgZ290byBmYWlsNTsN
Cj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250
ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZCdWZmZXIpOw0KPiArICAg
IGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsNCj4gKyAgICAgICAgTGVuZ3RoID0gKFVMT05HKXN0
cmxlbihCdWZmZXIpOw0KPiArDQo+ICsgICAgICAgIEZyb250ZW5kLT5OYW1lID0gX19Gcm9udGVu
ZEFsbG9jYXRlKExlbmd0aCk7DQo+ICsgICAgICAgIGlmIChGcm9udGVuZC0+TmFtZSkNCj4gKyAg
ICAgICAgICAgIFJ0bENvcHlNZW1vcnkoRnJvbnRlbmQtPk5hbWUsIEJ1ZmZlciwgTGVuZ3RoKTsN
Cj4gKw0KPiArICAgICAgICBYRU5CVVNfU1RPUkUoRnJlZSwNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICBC
dWZmZXIpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFk
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNl
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAicHJvdG9jb2wiLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQnVmZmVyKTsNCj4gKyAgICBpZiAoTlRfU1VDQ0VTUyhzdGF0dXMpKSB7DQo+ICsgICAg
ICAgIExlbmd0aCA9IChVTE9ORylzdHJsZW4oQnVmZmVyKTsNCj4gKw0KPiArICAgICAgICBGcm9u
dGVuZC0+UHJvdG9jb2wgPSBfX0Zyb250ZW5kQWxsb2NhdGUoTGVuZ3RoKTsNCj4gKyAgICAgICAg
aWYgKEZyb250ZW5kLT5Qcm90b2NvbCkNCj4gKyAgICAgICAgICAgIFJ0bENvcHlNZW1vcnkoRnJv
bnRlbmQtPlByb3RvY29sLCBCdWZmZXIsIExlbmd0aCk7DQo+ICsNCj4gKyAgICAgICAgWEVOQlVT
X1NUT1JFKEZyZWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50
ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgQnVmZmVyKTsNCj4gKyAgICB9DQo+ICsN
Cj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsN
Cj4gKw0KPiArZmFpbDU6DQo+ICsgICAgRXJyb3IoImZhaWw1XG4iKTsNCj4gKw0KPiArZmFpbDQ6
DQo+ICsgICAgRXJyb3IoImZhaWw0XG4iKTsNCj4gKw0KPiArLy9mYWlsMzoNCj4gKyAgICBFcnJv
cigiZmFpbDNcbiIpOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0K
PiArDQo+ICtmYWlsMToNCj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0K
PiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZPSUQNCj4g
K0Zyb250ZW5kRGlzY29ubmVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9u
dGVuZA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+ICsg
ICAgX19Gcm9udGVuZEZyZWUoRnJvbnRlbmQtPlByb3RvY29sKTsNCj4gKyAgICBGcm9udGVuZC0+
UHJvdG9jb2wgPSBOVUxMOw0KPiArDQo+ICsgICAgX19Gcm9udGVuZEZyZWUoRnJvbnRlbmQtPk5h
bWUpOw0KPiArICAgIEZyb250ZW5kLT5OYW1lID0gTlVMTDsNCj4gKw0KPiArICAgIC8vIFRPRE86
IERpc2Nvbm5lY3QgUmluZw0KPiArDQo+ICsgICAgWEVOQlVTX0RFQlVHKERlcmVnaXN0ZXIsDQo+
ICsgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsDQo+ICsgICAgICAg
ICAgICAgICAgIEZyb250ZW5kLT5EZWJ1Z0NhbGxiYWNrKTsNCj4gKyAgICBGcm9udGVuZC0+RGVi
dWdDYWxsYmFjayA9IE5VTEw7DQo+ICsNCj4gKyAgICBYRU5CVVNfREVCVUcoUmVsZWFzZSwgJkZy
b250ZW5kLT5EZWJ1Z0ludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0K
PiArfQ0KPiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kRW5hYmxlKA0KPiArICAg
IElOICBQWEVOQ09OU19GUk9OVEVORCAgICBGcm9udGVuZA0KPiArICAgICkNCj4gK3sNCj4gKyAg
ICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihG
cm9udGVuZCk7DQo+ICsgICAgLy8gVE9ETzogRW5hYmxlIFJpbmcNCj4gKw0KPiArICAgIFRyYWNl
KCI8PT09PVxuIik7DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+
ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtGcm9udGVuZERpc2FibGUoDQo+ICsgICAgSU4gIFBYRU5D
T05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgVHJhY2UoIj09
PT0+XG4iKTsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOw0K
PiArICAgIC8vIFRPRE86IERpc2FibGUgUmluZw0KPiArDQo+ICsgICAgVHJhY2UoIjw9PT09XG4i
KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIE5UU1RBVFVTDQo+ICtGcm9udGVuZFNldFN0YXRlKA0K
PiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kLA0KPiArICAgIElOICBGUk9O
VEVORF9TVEFURSAgICAgIFN0YXRlDQo+ICsgICAgKQ0KPiArew0KPiArICAgIEJPT0xFQU4gICAg
ICAgICAgICAgICAgIEZhaWxlZDsNCj4gKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFs
Ow0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkZyb250ZW5kLT5Mb2NrLCAmSXJxbCk7
DQo+ICsNCj4gKyAgICBJbmZvKCIlczogPT09PT4gJyVzJyAtPiAnJXMnXG4iLA0KPiArICAgICAg
ICAgICAgX19Gcm9udGVuZEdldFBhdGgoRnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgRnJvbnRl
bmRTdGF0ZU5hbWUoRnJvbnRlbmQtPlN0YXRlKSwNCj4gKyAgICAgICAgICAgIEZyb250ZW5kU3Rh
dGVOYW1lKFN0YXRlKSk7DQo+ICsNCj4gKyAgICBGYWlsZWQgPSBGQUxTRTsNCj4gKyAgICB3aGls
ZSAoRnJvbnRlbmQtPlN0YXRlICE9IFN0YXRlICYmICFGYWlsZWQpIHsNCj4gKyAgICAgICAgTlRT
VEFUVVMgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgICAgIHN3aXRjaCAoRnJvbnRlbmQtPlN0YXRl
KSB7DQo+ICsgICAgICAgIGNhc2UgRlJPTlRFTkRfVU5LTk9XTjoNCj4gKyAgICAgICAgICAgIHN3
aXRjaCAoU3RhdGUpIHsNCj4gKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfQ0xPU0VEOg0KPiAr
ICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9QUkVQQVJFRDoNCj4gKyAgICAgICAgICAgIGNhc2Ug
RlJPTlRFTkRfQ09OTkVDVEVEOg0KPiArICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9FTkFCTEVE
Og0KPiArICAgICAgICAgICAgICAgIHN0YXR1cyA9IEZyb250ZW5kUHJlcGFyZShGcm9udGVuZCk7
DQo+ICsgICAgICAgICAgICAgICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgew0KPiArICAgICAg
ICAgICAgICAgICAgICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9QUkVQQVJFRDsNCj4gKyAg
ICAgICAgICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICBGYWlsZWQgPSBU
UlVFOw0KPiArICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4g
Kw0KPiArICAgICAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgICBBU1NFUlQoRkFM
U0UpOw0KPiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgfQ0KPiArICAg
ICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgY2FzZSBGUk9OVEVORF9DTE9TRUQ6DQo+
ICsgICAgICAgICAgICBzd2l0Y2ggKFN0YXRlKSB7DQo+ICsgICAgICAgICAgICBjYXNlIEZST05U
RU5EX1BSRVBBUkVEOg0KPiArICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9DT05ORUNURUQ6DQo+
ICsgICAgICAgICAgICBjYXNlIEZST05URU5EX0VOQUJMRUQ6DQo+ICsgICAgICAgICAgICAgICAg
c3RhdHVzID0gRnJvbnRlbmRQcmVwYXJlKEZyb250ZW5kKTsNCj4gKyAgICAgICAgICAgICAgICBp
ZiAoTlRfU1VDQ0VTUyhzdGF0dXMpKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgIEZyb250ZW5k
LT5TdGF0ZSA9IEZST05URU5EX1BSRVBBUkVEOw0KPiArICAgICAgICAgICAgICAgIH0gZWxzZSB7
DQo+ICsgICAgICAgICAgICAgICAgICAgIEZhaWxlZCA9IFRSVUU7DQo+ICsgICAgICAgICAgICAg
ICAgfQ0KPiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgICAgICBjYXNl
IEZST05URU5EX1VOS05PV046DQo+ICsgICAgICAgICAgICAgICAgRnJvbnRlbmQtPlN0YXRlID0g
RlJPTlRFTkRfVU5LTk9XTjsNCj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
ICAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiAr
ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg
YnJlYWs7DQo+ICsNCj4gKyAgICAgICAgY2FzZSBGUk9OVEVORF9QUkVQQVJFRDoNCj4gKyAgICAg
ICAgICAgIHN3aXRjaCAoU3RhdGUpIHsNCj4gKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfQ09O
TkVDVEVEOg0KPiArICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9FTkFCTEVEOg0KPiArICAgICAg
ICAgICAgICAgIHN0YXR1cyA9IEZyb250ZW5kQ29ubmVjdChGcm9udGVuZCk7DQo+ICsgICAgICAg
ICAgICAgICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgew0KPiArICAgICAgICAgICAgICAgICAg
ICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9DT05ORUNURUQ7DQo+ICsgICAgICAgICAgICAg
ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRDbG9zZShGcm9udGVu
ZCk7DQo+ICsgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdGF0ZSA9IEZST05URU5EX0NM
T1NFRDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICBGYWlsZWQgPSBUUlVFOw0KPiArICAg
ICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAg
ICAgICAgY2FzZSBGUk9OVEVORF9DTE9TRUQ6DQo+ICsgICAgICAgICAgICBjYXNlIEZST05URU5E
X1VOS05PV046DQo+ICsgICAgICAgICAgICAgICAgRnJvbnRlbmRDbG9zZShGcm9udGVuZCk7DQo+
ICsgICAgICAgICAgICAgICAgRnJvbnRlbmQtPlN0YXRlID0gRlJPTlRFTkRfQ0xPU0VEOw0KPiAr
ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgICAgICBkZWZhdWx0Og0KPiAr
ICAgICAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQo+ICsgICAgICAgICAgICAgICAgYnJlYWs7
DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAg
ICBjYXNlIEZST05URU5EX0NPTk5FQ1RFRDoNCj4gKyAgICAgICAgICAgIHN3aXRjaCAoU3RhdGUp
IHsNCj4gKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfRU5BQkxFRDoNCj4gKyAgICAgICAgICAg
ICAgICBzdGF0dXMgPSBGcm9udGVuZEVuYWJsZShGcm9udGVuZCk7DQo+ICsgICAgICAgICAgICAg
ICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgew0KPiArICAgICAgICAgICAgICAgICAgICBGcm9u
dGVuZC0+U3RhdGUgPSBGUk9OVEVORF9FTkFCTEVEOw0KPiArICAgICAgICAgICAgICAgIH0gZWxz
ZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kQ2xvc2UoRnJvbnRlbmQpOw0KPiAr
ICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9DTE9TRUQ7DQo+
ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmREaXNjb25uZWN0KEZyb250ZW5kKTsN
Cj4gKyAgICAgICAgICAgICAgICAgICAgRmFpbGVkID0gVFJVRTsNCj4gKyAgICAgICAgICAgICAg
ICB9DQo+ICsgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgICAgIGNhc2Ug
RlJPTlRFTkRfUFJFUEFSRUQ6DQo+ICsgICAgICAgICAgICBjYXNlIEZST05URU5EX0NMT1NFRDoN
Cj4gKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfVU5LTk9XTjoNCj4gKyAgICAgICAgICAgICAg
ICBGcm9udGVuZENsb3NlKEZyb250ZW5kKTsNCj4gKyAgICAgICAgICAgICAgICBGcm9udGVuZC0+
U3RhdGUgPSBGUk9OVEVORF9DTE9TRUQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICBGcm9udGVu
ZERpc2Nvbm5lY3QoRnJvbnRlbmQpOw0KPiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+
ICsgICAgICAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7
DQo+ICsgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAg
ICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICBjYXNlIEZST05URU5EX0VOQUJMRUQ6DQo+ICsg
ICAgICAgICAgICBzd2l0Y2ggKFN0YXRlKSB7DQo+ICsgICAgICAgICAgICBjYXNlIEZST05URU5E
X0NPTk5FQ1RFRDoNCj4gKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfUFJFUEFSRUQ6DQo+ICsg
ICAgICAgICAgICBjYXNlIEZST05URU5EX0NMT1NFRDoNCj4gKyAgICAgICAgICAgIGNhc2UgRlJP
TlRFTkRfVU5LTk9XTjoNCj4gKyAgICAgICAgICAgICAgICBGcm9udGVuZERpc2FibGUoRnJvbnRl
bmQpOw0KPiArICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdGF0ZSA9IEZST05URU5EX0NPTk5F
Q1RFRDsNCj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICAgICAgZGVm
YXVsdDoNCj4gKyAgICAgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiArICAgICAgICAgICAg
ICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsN
Cj4gKyAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQo+ICsg
ICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIEluZm8oIiVz
IGluIHN0YXRlICclcydcbiIsDQo+ICsgICAgICAgICAgICAgICAgX19Gcm9udGVuZEdldFBhdGgo
RnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAgIEZyb250ZW5kU3RhdGVOYW1lKEZyb250ZW5k
LT5TdGF0ZSkpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGcm9u
dGVuZC0+TG9jaywgSXJxbCk7DQo+ICsNCj4gKyAgICBJbmZvKCIlczogPD09PT09XG4iLCBfX0Zy
b250ZW5kR2V0UGF0aChGcm9udGVuZCkpOw0KPiArDQo+ICsgICAgcmV0dXJuICghRmFpbGVkKSA/
IFNUQVRVU19TVUNDRVNTIDogU1RBVFVTX1VOU1VDQ0VTU0ZVTDsNCj4gK30NCj4gKw0KPiArc3Rh
dGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fRnJvbnRlbmRSZXN1bWUoDQo+ICsgICAgSU4gIFBY
RU5DT05TX0ZST05URU5EICAgIEZyb250ZW5kDQo+ICsgICAgKQ0KPiArew0KPiArICAgIEFTU0VS
VDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBESVNQQVRDSF9MRVZFTCk7DQo+ICsNCj4gKyAg
ICBBU1NFUlQzVShGcm9udGVuZC0+U3RhdGUsID09ICwgRlJPTlRFTkRfVU5LTk9XTik7DQo+ICsg
ICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9udGVuZCk7DQo+ICsgICAgLy8oVk9JRClGcm9u
dGVuZFNldFN0YXRlKEZyb250ZW5kLCBGUk9OVEVORF9DTE9TRUQpOw0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiArX19Gcm9udGVuZFN1c3BlbmQoDQo+ICsgICAgSU4g
IFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgQVNT
RVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIERJU1BBVENIX0xFVkVMKTsNCj4gKw0KPiAr
ICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOw0KPiArICAgIC8vKFZPSUQpRnJv
bnRlbmRTZXRTdGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfVU5LTk9XTik7DQo+ICt9DQo+ICsNCj4g
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lEDQo+ICtGcm9udGVuZFN1c3BlbmRDYWxsYmFj
aygNCj4gKyAgICBJTiAgUFZPSUQgICAgICAgICAgIEFyZ3VtZW50DQo+ICsgICAgKQ0KPiArew0K
PiArICAgIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQgPSBBcmd1bWVudDsNCj4gKw0KPiAr
ICAgIF9fRnJvbnRlbmRTdXNwZW5kKEZyb250ZW5kKTsNCj4gKyAgICBfX0Zyb250ZW5kUmVzdW1l
KEZyb250ZW5kKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIE5UU1RBVFVTDQo+ICtGcm9udGVuZFJl
c3VtZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAgICkN
Cj4gK3sNCj4gKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOw0KPiArICAgIE5UU1RB
VFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFRyYWNlKCI9PT09PlxuIik7
DQo+ICsNCj4gKyAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0KPiArDQo+
ICsgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoQWNxdWlyZSwgJkZyb250ZW5kLT5TdXNwZW5k
SW50ZXJmYWNlKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAg
Z290byBmYWlsMTsNCj4gKw0KPiArICAgIF9fRnJvbnRlbmRSZXN1bWUoRnJvbnRlbmQpOw0KPiAr
DQo+ICsgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoUmVnaXN0ZXIsDQo+ICsgICAgICAgICAg
ICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICBTVVNQRU5EX0NB
TExCQUNLX0xBVEUsDQo+ICsgICAgICAgICAgICBGcm9udGVuZFN1c3BlbmRDYWxsYmFjaywNCj4g
KyAgICAgICAgICAgIEZyb250ZW5kLA0KPiArICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5k
Q2FsbGJhY2spOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBn
b3RvIGZhaWwyOw0KPiArDQo+ICsgICAgS2VMb3dlcklycWwoSXJxbCk7DQo+ICsNCj4gKyAgICBL
ZUNsZWFyRXZlbnQoJkZyb250ZW5kLT5FamVjdEV2ZW50KTsNCj4gKyAgICBUaHJlYWRXYWtlKEZy
b250ZW5kLT5FamVjdFRocmVhZCk7DQo+ICsNCj4gKyAgICBUcmFjZSgid2FpdGluZyBmb3IgZWpl
Y3QgdGhyZWFkXG4iKTsNCj4gKw0KPiArICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgm
RnJvbnRlbmQtPkVqZWN0RXZlbnQsDQo+ICsgICAgICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiAr
ICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAgICAgICAgICAgICAgRkFMU0UsDQo+
ICsgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0K
PiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAg
ICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICsgICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRl
bmQpOw0KPiArDQo+ICsgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwgJkZyb250ZW5kLT5TdXNw
ZW5kSW50ZXJmYWNlKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3IoImZhaWwxICglMDh4
KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIEtlTG93ZXJJcnFsKElycWwpOw0KPiArDQo+ICsg
ICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIFZPSUQNCj4gK0Zyb250ZW5k
U3VzcGVuZCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAg
ICkNCj4gK3sNCj4gKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOw0KPiArDQo+ICsg
ICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gKw0KPiArICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xF
VkVMLCAmSXJxbCk7DQo+ICsNCj4gKyAgICBYRU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLA0KPiAr
ICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSwNCj4gKyAgICAg
ICAgICAgICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrKTsNCj4gKyAgICBGcm9udGVu
ZC0+U3VzcGVuZENhbGxiYWNrID0gTlVMTDsNCj4gKw0KPiArICAgIF9fRnJvbnRlbmRTdXNwZW5k
KEZyb250ZW5kKTsNCj4gKw0KPiArICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2UsICZGcm9udGVu
ZC0+U3VzcGVuZEludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBLZUxvd2VySXJxbChJcnFsKTsNCj4g
Kw0KPiArICAgIEtlQ2xlYXJFdmVudCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQpOw0KPiArICAgIFRo
cmVhZFdha2UoRnJvbnRlbmQtPkVqZWN0VGhyZWFkKTsNCj4gKw0KPiArICAgIFRyYWNlKCJ3YWl0
aW5nIGZvciBlamVjdCB0aHJlYWRcbiIpOw0KPiArDQo+ICsgICAgKFZPSUQpS2VXYWl0Rm9yU2lu
Z2xlT2JqZWN0KCZGcm9udGVuZC0+RWplY3RFdmVudCwNCj4gKyAgICAgICAgICAgICAgICBFeGVj
dXRpdmUsDQo+ICsgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAgICAg
ICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKw0KPiArICAgIFRyYWNlKCI8
PT09PVxuIik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtGcm9udGVuZERlc3Ryb3ko
DQo+ICsgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQNCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgVHJhY2UoIj09PT09PlxuIik7DQo+ICsNCj4gKyAgICBBU1NFUlQoRnJvbnRlbmQt
PlJlZkNvdW50ID09IDApOw0KPiArICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0g
LCBQQVNTSVZFX0xFVkVMKTsNCj4gKw0KPiArICAgIEFTU0VSVChGcm9udGVuZC0+U3RhdGUgPT0g
RlJPTlRFTkRfVU5LTk9XTik7DQo+ICsNCj4gKyAgICBUaHJlYWRBbGVydChGcm9udGVuZC0+RWpl
Y3RUaHJlYWQpOw0KPiArICAgIFRocmVhZEpvaW4oRnJvbnRlbmQtPkVqZWN0VGhyZWFkKTsNCj4g
KyAgICBGcm9udGVuZC0+RWplY3RUaHJlYWQgPSBOVUxMOw0KPiArDQo+ICsgICAgUnRsWmVyb01l
bW9yeSgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsIHNpemVvZihLRVZFTlQpKTsNCj4gKw0KPiArICAg
IC8vIFRPRE86IFRlYXJkb3duIFJpbmcNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZyb250
ZW5kLT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNf
U1RPUkVfSU5URVJGQUNFKSk7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+
U3VzcGVuZEludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1VT
UEVORF9JTlRFUkZBQ0UpKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5E
ZWJ1Z0ludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdf
SU5URVJGQUNFKSk7DQo+ICsNCj4gKyAgICBGcm9udGVuZC0+T25saW5lID0gRkFMU0U7DQo+ICsN
Cj4gKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0sp
KTsNCj4gKw0KPiArICAgIEZyb250ZW5kLT5CYWNrZW5kRG9tYWluID0gMDsNCj4gKw0KPiArICAg
IF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kLT5QYXRoKTsNCj4gKyAgICBGcm9udGVuZC0+UGF0aCA9
IE5VTEw7DQo+ICsNCj4gKyAgICBGcm9udGVuZC0+UGRvID0gTlVMTDsNCj4gKw0KPiArICAgIEFT
U0VSVChJc1plcm9NZW1vcnkoRnJvbnRlbmQsIHNpemVvZihYRU5DT05TX0ZST05URU5EKSkpOw0K
PiArICAgIF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kKTsNCj4gKw0KPiArICAgIFRyYWNlKCI8PT09
PT1cbiIpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kQWJpQWNx
dWlyZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQNCj4g
KyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAgICAgICAgICAgICBGcm9u
dGVuZCA9DQo+IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0Ow0KPiArICAgIEtJUlFMICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSXJxbDsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIEludGVybG9ja2VkSW5jcmVtZW50KCZGcm9u
dGVuZC0+UmVmQ291bnQpOw0KPiArDQo+ICsgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUws
ICZJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKEFjcXVpcmUsICZG
cm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBfX0Zyb250ZW5kUmVzdW1l
KEZyb250ZW5kKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKFJlZ2lzdGVy
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZEludGVy
ZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVNQRU5EX0NBTExCQUNLX0xB
VEUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRTdXNwZW5kQ2FsbGJh
Y2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kQ2FsbGJhY2spOw0KPiArICAg
IGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+
ICsgICAgS2VMb3dlcklycWwoSXJxbCk7DQo+ICsNCj4gKyAgICBLZUNsZWFyRXZlbnQoJkZyb250
ZW5kLT5FamVjdEV2ZW50KTsNCj4gKyAgICBUaHJlYWRXYWtlKEZyb250ZW5kLT5FamVjdFRocmVh
ZCk7DQo+ICsNCj4gKyAgICBUcmFjZSgid2FpdGluZyBmb3IgZWplY3QgdGhyZWFkXG4iKTsNCj4g
Kw0KPiArICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmRnJvbnRlbmQtPkVqZWN0RXZl
bnQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+
ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICsgICAgX19Gcm9udGVu
ZFN1c3BlbmQoRnJvbnRlbmQpOw0KPiArDQo+ICsgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwg
JkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJy
b3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIEtlTG93ZXJJcnFsKEly
cWwpOw0KPiArDQo+ICsgICAgSW50ZXJsb2NrZWREZWNyZW1lbnQoJkZyb250ZW5kLT5SZWZDb3Vu
dCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgVk9J
RA0KPiArRnJvbnRlbmRBYmlSZWxlYXNlKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xFX0NP
TlRFWFQgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19GUk9OVEVO
RCAgICAgICAgICAgICAgIEZyb250ZW5kID0NCj4gKFBYRU5DT05TX0ZST05URU5EKUNvbnRleHQ7
DQo+ICsgICAgTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudDsNCj4gKyAgICBL
SVJRTCAgICAgICAgICAgICAgICAgICAgICAgICAgIElycWw7DQo+ICsNCj4gKyAgICBDb3VudCA9
IEludGVybG9ja2VkRGVjcmVtZW50KCZGcm9udGVuZC0+UmVmQ291bnQpOw0KPiArDQo+ICsgICAg
S2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUwsICZJcnFsKTsNCj4gKw0KPiArICAgIFhFTkJVU19T
VVNQRU5EKERlcmVnaXN0ZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNw
ZW5kSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdXNwZW5kQ2Fs
bGJhY2spOw0KPiArICAgIEZyb250ZW5kLT5TdXNwZW5kQ2FsbGJhY2sgPSBOVUxMOw0KPiArDQo+
ICsgICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRlbmQpOw0KPiArDQo+ICsgICAgWEVOQlVTX1NV
U1BFTkQoUmVsZWFzZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsNCj4gKw0KPiArICAg
IEtlTG93ZXJJcnFsKElycWwpOw0KPiArDQo+ICsgICAgS2VDbGVhckV2ZW50KCZGcm9udGVuZC0+
RWplY3RFdmVudCk7DQo+ICsgICAgVGhyZWFkV2FrZShGcm9udGVuZC0+RWplY3RUaHJlYWQpOw0K
PiArDQo+ICsgICAgVHJhY2UoIndhaXRpbmcgZm9yIGVqZWN0IHRocmVhZFxuIik7DQo+ICsNCj4g
KyAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZyb250ZW5kLT5FamVjdEV2ZW50LA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMKTsNCj4gKw0KPiArICAgIGlmIChDb3VudCA9PSAwKQ0KPiArICAgICAgICBGcm9udGVu
ZERlc3Ryb3koRnJvbnRlbmQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgQk9PTEVBTg0KPiArRnJv
bnRlbmRBYmlJc0RlZmF1bHQoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAg
ICBDb250ZXh0DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
Q29udGV4dCk7DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgTlRT
VEFUVVMNCj4gK0Zyb250ZW5kQWJpRDNUb0QwKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xF
X0NPTlRFWFQgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19GUk9O
VEVORCAgICAgICAgICAgICAgIEZyb250ZW5kID0NCj4gKFBYRU5DT05TX0ZST05URU5EKUNvbnRl
eHQ7DQo+ICsNCj4gKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEZyb250ZW5kKTsNCj4gKyAg
ICAvL3JldHVybiBGcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBGUk9OVEVORF9FTkFCTEVEKTsN
Cj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBWT0lE
DQo+ICtGcm9udGVuZEFiaUQwVG9EMygNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05U
RVhUICAgIENvbnRleHQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRlJPTlRFTkQg
ICAgICAgICAgICAgICBGcm9udGVuZCA9DQo+IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0Ow0K
PiArDQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9udGVuZCk7DQo+ICsgICAgLy8o
Vk9JRCkgRnJvbnRlbmRTZXRTdGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfQ0xPU0VEKTsNCj4gK30N
Cj4gKw0KPiArc3RhdGljIE5UU1RBVFVTDQo+ICtGcm9udGVuZEFiaU9wZW4oDQo+ICsgICAgSU4g
IFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LA0KPiArICAgIElOICBQRklMRV9P
QkpFQ1QgICAgICAgICAgICAgICAgRmlsZU9iamVjdA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnRleHQpOw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRmlsZU9iamVjdCk7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kQWJpQ2xvc2UoDQo+ICsgICAgSU4g
IFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LA0KPiArICAgIElOICBQRklMRV9P
QkpFQ1QgICAgICAgICAgICAgICAgRmlsZU9iamVjdA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnRleHQpOw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRmlsZU9iamVjdCk7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgTlRTVEFUVVMNCj4gK0Zyb250ZW5kQWJpUHV0UXVldWUoDQo+ICsgICAg
SU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LA0KPiArICAgIElOICBQSVJQ
ICAgICAgICAgICAgICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFVOUkVG
RVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7DQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRF
UihJcnApOw0KPiArICAgIHJldHVybiBTVEFUVVNfREVWSUNFX05PVF9SRUFEWTsNCj4gK30NCj4g
Kw0KPiArc3RhdGljIFhFTkNPTlNfQ09OU09MRV9BQkkgRnJvbnRlbmRBYmlWMSA9IHsNCj4gKyAg
ICBOVUxMLA0KPiArICAgIEZyb250ZW5kQWJpQWNxdWlyZSwNCj4gKyAgICBGcm9udGVuZEFiaVJl
bGVhc2UsDQo+ICsgICAgRnJvbnRlbmRBYmlJc0RlZmF1bHQsDQo+ICsgICAgRnJvbnRlbmRBYmlE
M1RvRDAsDQo+ICsgICAgRnJvbnRlbmRBYmlEMFRvRDMsDQo+ICsgICAgRnJvbnRlbmRBYmlPcGVu
LA0KPiArICAgIEZyb250ZW5kQWJpQ2xvc2UsDQo+ICsgICAgRnJvbnRlbmRBYmlQdXRRdWV1ZQ0K
PiArfTsNCj4gKw0KPiArTlRTVEFUVVMNCj4gK0Zyb250ZW5kQ3JlYXRlKA0KPiArICAgIElOICBQ
WEVOQ09OU19QRE8gICAgICAgICAgICBQZG8sDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVf
QUJJICAgIENvbnNvbGVBYmkNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUENIQVIgICAgICAgICAg
ICAgICAgICAgICAgIE5hbWU7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIExl
bmd0aDsNCj4gKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgUGF0aDsNCj4gKyAgICBQ
WEVOQ09OU19GUk9OVEVORCAgICAgICAgICAgRnJvbnRlbmQ7DQo+ICsgICAgTlRTVEFUVVMgICAg
ICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFRyYWNlKCI9PT09PlxuIik7DQo+
ICsNCj4gKyAgICBOYW1lID0gUGRvR2V0TmFtZShQZG8pOw0KPiArDQo+ICsgICAgTGVuZ3RoID0g
c2l6ZW9mKCJkZXZpY2VzL2NvbnNvbGUvIikgKyAoVUxPTkcpc3RybGVuKE5hbWUpOw0KPiArDQo+
ICsgICAgUGF0aCA9IF9fRnJvbnRlbmRBbGxvY2F0ZShMZW5ndGgpOw0KPiArDQo+ICsgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBpZiAoUGF0aCA9PSBOVUxMKQ0KPiArICAg
ICAgICBnb3RvIGZhaWwxOw0KPiArDQo+ICsgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZB
KFBhdGgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRldmljZS9jb25zb2xlLyVzIiwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSk7DQo+ICsgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICBGcm9udGVu
ZCA9IF9fRnJvbnRlbmRBbGxvY2F0ZShzaXplb2YoWEVOQ09OU19GUk9OVEVORCkpOw0KPiArDQo+
ICsgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBpZiAoRnJvbnRlbmQgPT0g
TlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMzsNCj4gKw0KPiArICAgIEZyb250ZW5kLT5SZWZD
b3VudCA9IDE7DQo+ICsgICAgRnJvbnRlbmQtPlBkbyA9IFBkbzsNCj4gKyAgICBGcm9udGVuZC0+
UGF0aCA9IFBhdGg7DQo+ICsgICAgRnJvbnRlbmQtPkJhY2tlbmREb21haW4gPSBET01JRF9JTlZB
TElEOw0KPiArDQo+ICsgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJkZyb250ZW5kLT5Mb2NrKTsN
Cj4gKw0KPiArICAgIEZkb0dldERlYnVnSW50ZXJmYWNlKFBkb0dldEZkbyhQZG8pLCAmRnJvbnRl
bmQtPkRlYnVnSW50ZXJmYWNlKTsNCj4gKyAgICBGZG9HZXRTdXNwZW5kSW50ZXJmYWNlKFBkb0dl
dEZkbyhQZG8pLCAmRnJvbnRlbmQtDQo+ID5TdXNwZW5kSW50ZXJmYWNlKTsNCj4gKyAgICBGZG9H
ZXRTdG9yZUludGVyZmFjZShQZG9HZXRGZG8oUGRvKSwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFj
ZSk7DQo+ICsNCj4gKyAgICAvLyBUT0RPOiBJbml0aWFsaXplIFJpbmcNCj4gKw0KPiArICAgIEtl
SW5pdGlhbGl6ZUV2ZW50KCZGcm9udGVuZC0+RWplY3RFdmVudCwgTm90aWZpY2F0aW9uRXZlbnQs
IEZBTFNFKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFRocmVhZENyZWF0ZShGcm9udGVuZEVqZWN0
LCBGcm9udGVuZCwgJkZyb250ZW5kLQ0KPiA+RWplY3RUaHJlYWQpOw0KPiArICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWw1Ow0KPiArDQo+ICsgICAgKkNv
bnNvbGVBYmkgPSBGcm9udGVuZEFiaVYxOw0KPiArICAgIENvbnNvbGVBYmktPkNvbnRleHQgPSAo
UFhFTkNPTlNfQ09OU09MRV9DT05URVhUKUZyb250ZW5kOw0KPiArDQo+ICsgICAgVHJhY2UoIjw9
PT09XG4iKTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFp
bDU6DQo+ICsgICAgRXJyb3IoImZhaWw1XG4iKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnko
JkZyb250ZW5kLT5FamVjdEV2ZW50LCBzaXplb2YoS0VWRU5UKSk7DQo+ICsNCj4gKyAgICAvLyBU
T0RPOiBUZWFyZG93biBSaW5nDQo+ICsNCj4gKy8vZmFpbDQ6DQo+ICsgICAgRXJyb3IoImZhaWw0
XG4iKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5TdG9yZUludGVyZmFj
ZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1RPUkVfSU5URVJGQUNFKSk7
DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSwN
Cj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1VTUEVORF9JTlRFUkZBQ0UpKTsN
Cj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwNCj4g
KyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7DQo+ICsN
Cj4gKyAgICBGcm9udGVuZC0+T25saW5lID0gRkFMU0U7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVt
b3J5KCZGcm9udGVuZC0+TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsNCj4gKw0KPiArICAgIEZy
b250ZW5kLT5CYWNrZW5kRG9tYWluID0gMDsNCj4gKyAgICBGcm9udGVuZC0+UGF0aCA9IE5VTEw7
DQo+ICsgICAgRnJvbnRlbmQtPlBkbyA9IE5VTEw7DQo+ICsNCj4gKyAgICBBU1NFUlQoSXNaZXJv
TWVtb3J5KEZyb250ZW5kLCBzaXplb2YoWEVOQ09OU19GUk9OVEVORCkpKTsNCj4gKw0KPiArICAg
IF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kKTsNCj4gKw0KPiArZmFpbDM6DQo+ICsgICAgRXJyb3Io
ImZhaWwzXG4iKTsNCj4gKw0KPiArZmFpbDI6DQo+ICsgICAgRXJyb3IoImZhaWwyXG4iKTsNCj4g
Kw0KPiArICAgIF9fRnJvbnRlbmRGcmVlKFBhdGgpOw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+
ICt9DQo+ICsNCj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zyb250ZW5kLmggYi9zcmMveGVu
Y29ucy9mcm9udGVuZC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAu
LjI4OWYzNmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuY29ucy9mcm9udGVuZC5o
DQo+IEBAIC0wLDAgKzEsNjggQEANCj4gKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMg
SW5jLg0KPiArKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArKg0KPiArKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiArKiB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsqIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+ICsqDQo+ICsqICogICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lci4NCj4gKyogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyogICAgIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlcg0KPiArKiAgICAgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyoNCj4gKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ICsqIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsq
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
DQo+ICsqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFDQo+ICsqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SDQo+ICsqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLA0KPiArKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiArKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiArKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gKyogV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UN
Cj4gKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRg0KPiArKiBTVUNIIERBTUFHRS4NCj4gKyovDQo+ICsNCj4gKyNpZm5kZWYgX1hFTkNPTlNf
RlJPTlRFTkRfSA0KPiArI2RlZmluZSBfWEVOQ09OU19GUk9OVEVORF9IDQo+ICsNCj4gKyNpbmNs
dWRlIDxudGRkay5oPg0KPiArDQo+ICsjaW5jbHVkZSAiZHJpdmVyLmgiDQo+ICsjaW5jbHVkZSAi
Y29uc29sZV9hYmkuaCINCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfRlJPTlRFTkQg
WEVOQ09OU19GUk9OVEVORCwNCj4gKlBYRU5DT05TX0ZST05URU5EOw0KPiArDQo+ICtleHRlcm4g
TlRTVEFUVVMNCj4gK0Zyb250ZW5kQ3JlYXRlKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAg
ICAgICAgICBQZG8sDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQUJJICAgIENvbnNvbGVB
YmkNCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4gUFhFTkNPTlNfUERPDQo+ICtGcm9udGVuZEdl
dFBkbygNCj4gKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZA0KPiArICAgICk7
DQo+ICsNCj4gK2V4dGVybiBQQ0hBUg0KPiArRnJvbnRlbmRHZXRQYXRoKA0KPiArICAgIElOICBQ
WEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFBD
SEFSDQo+ICtGcm9udGVuZEdldEJhY2tlbmRQYXRoKA0KPiArICAgIElOICBQWEVOQ09OU19GUk9O
VEVORCAgIEZyb250ZW5kDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFVTSE9SVA0KPiArRnJv
bnRlbmRHZXRCYWNrZW5kRG9tYWluKA0KPiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZy
b250ZW5kDQo+ICsgICAgKTsNCj4gKw0KPiArI2VuZGlmICAvLyBfWEVOQ09OU19GUk9OVEVORF9I
DQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9wZG8uYyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+
IGluZGV4IDc0YmU3NTkuLjkzNWI2Y2EgMTAwNzU1DQo+IC0tLSBhL3NyYy94ZW5jb25zL3Bkby5j
DQo+ICsrKyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+IEBAIC00Niw2ICs0Niw3IEBADQo+ICAjaW5j
bHVkZSAicGRvLmgiDQo+ICAjaW5jbHVkZSAiY29uc29sZV9hYmkuaCINCj4gICNpbmNsdWRlICJj
b25zb2xlLmgiDQo+ICsjaW5jbHVkZSAiZnJvbnRlbmQuaCINCj4gICNpbmNsdWRlICJ0aHJlYWQu
aCINCj4gICNpbmNsdWRlICJkYmdfcHJpbnQuaCINCj4gICNpbmNsdWRlICJhc3NlcnQuaCINCj4g
QEAgLTE5NDUsNyArMTk0Niw3IEBAIFBkb0NyZWF0ZSgNCj4gICAgICBpZiAoRGV2aWNlID09IE5V
TEwpDQo+ICAgICAgICAgIHN0YXR1cyA9IENvbnNvbGVDcmVhdGUoRmRvLCAmUGRvLT5Db25zb2xl
QWJpKTsNCj4gICAgICBlbHNlDQo+IC0gICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOy8v
IFRPRE86IGNyZWF0ZSBmcm9udGVuZA0KPiArICAgICAgICBzdGF0dXMgPSBGcm9udGVuZENyZWF0
ZShQZG8sICZQZG8tPkNvbnNvbGVBYmkpOw0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQ0KPiAgICAgICAgICBnb3RvIGZhaWw1Ow0KPiANCj4gZGlmZiAtLWdpdCBhL3ZzMjAxNS94ZW5j
b25zL3hlbmNvbnMudmN4cHJvag0KPiBiL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0K
PiBpbmRleCAyZTlkMjA4Li44ODQ2YjhlIDEwMDY0NA0KPiAtLS0gYS92czIwMTUveGVuY29ucy94
ZW5jb25zLnZjeHByb2oNCj4gKysrIGIvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+
IEBAIC03MCw2ICs3MCw3IEBADQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMv
eGVuY29ucy9yZWdpc3RyeS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4v
c3JjL3hlbmNvbnMvY29uc29sZS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4v
Li4vc3JjL3hlbmNvbnMvc3RyZWFtLmMiIC8+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Li8uLi9zcmMveGVuY29ucy9mcm9udGVuZC5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi4vLi4vc3JjL3hlbmNvbnMvdGhyZWFkLmMiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiAg
ICA8SXRlbUdyb3VwPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hw
cm9qDQo+IGIvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IGluZGV4IDZjNjdmZTgu
Ljk4MTFkYTAgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0K
PiArKysgYi92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gQEAgLTc4LDYgKzc4LDcg
QEANCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3JlZ2lzdHJ5
LmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9jb25z
b2xlLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9z
dHJlYW0uYyIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25z
L2Zyb250ZW5kLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVu
Y29ucy90aHJlYWQuYyIgLz4NCj4gICAgPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+
IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:26:14 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:26:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkhS-0004H4-Kt; Fri, 02 Mar 2018 13:26:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkhQ-0004G5-PC
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:26:12 +0000
X-Inumbo-ID: 8ca4c8f6-1e1d-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 8ca4c8f6-1e1d-11e8-b9b1-635ca7ef6cff;
 Fri, 02 Mar 2018 13:28:10 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033517"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 10/14 v2] Respond to non-default console
 IOCTLs
Thread-Index: AQHTrLKfLzefZbYco0OZnNdlZxDjrqO8+oWw
Date: Fri, 2 Mar 2018 13:26:01 +0000
Message-ID: <cafbac6958a24269928124b79371feb3@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-11-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-11-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 10/14 v2] Respond to non-default
	console	IOCTLs
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDEwLzE0IHYyXSBSZXNwb25kIHRvIG5vbi1kZWZhdWx0IGNvbnNvbGUNCj4gSU9DVExzDQo+
IA0KPiBGcm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBTaWdu
ZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5
OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3Jj
L3hlbmNvbnMvZnJvbnRlbmQuYyB8IDk0DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgOTEgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9mcm9udGVu
ZC5jIGIvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYw0KPiBpbmRleCBiZGQyOTQ1Li5hNmU1N2QxIDEw
MDc1NQ0KPiAtLS0gYS9zcmMveGVuY29ucy9mcm9udGVuZC5jDQo+ICsrKyBiL3NyYy94ZW5jb25z
L2Zyb250ZW5kLmMNCj4gQEAgLTEyMTUsNiArMTIxNSw4MCBAQCBGcm9udGVuZERlc3Ryb3koDQo+
ICB9DQo+IA0KPiAgc3RhdGljIE5UU1RBVFVTDQo+ICtGcm9udGVuZEdldFByb3BlcnR5KA0KPiAr
ICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kLA0KPiArICAgIElOICBQSVJQICAg
ICAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9fU1RBQ0tfTE9DQVRJ
T04gICAgICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgICAgIElv
Q29udHJvbENvZGU7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgSW5wdXRCdWZmZXJM
ZW5ndGg7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgT3V0cHV0QnVmZmVyTGVuZ3Ro
Ow0KPiArICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjsNCj4gKyAgICBQQ0hBUiAg
ICAgICAgICAgICAgICAgICBWYWx1ZTsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBM
ZW5ndGg7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsg
ICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4g
KyAgICBJb0NvbnRyb2xDb2RlID0gU3RhY2tMb2NhdGlvbi0NCj4gPlBhcmFtZXRlcnMuRGV2aWNl
SW9Db250cm9sLklvQ29udHJvbENvZGU7DQo+ICsgICAgSW5wdXRCdWZmZXJMZW5ndGggPSBTdGFj
a0xvY2F0aW9uLQ0KPiA+UGFyYW1ldGVycy5EZXZpY2VJb0NvbnRyb2wuSW5wdXRCdWZmZXJMZW5n
dGg7DQo+ICsgICAgT3V0cHV0QnVmZmVyTGVuZ3RoID0gU3RhY2tMb2NhdGlvbi0NCj4gPlBhcmFt
ZXRlcnMuRGV2aWNlSW9Db250cm9sLk91dHB1dEJ1ZmZlckxlbmd0aDsNCj4gKyAgICBCdWZmZXIg
PSBJcnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOw0KPiArDQo+ICsgICAgc3dpdGNoIChJ
b0NvbnRyb2xDb2RlKSB7DQo+ICsgICAgY2FzZSBJT0NUTF9YRU5DT05TX0dFVF9JTlNUQU5DRToN
Cj4gKyAgICAgICAgVmFsdWUgPSBQZG9HZXROYW1lKEZyb250ZW5kLT5QZG8pOw0KPiArICAgICAg
ICBicmVhazsNCj4gKyAgICBjYXNlIElPQ1RMX1hFTkNPTlNfR0VUX05BTUU6DQo+ICsgICAgICAg
IFZhbHVlID0gRnJvbnRlbmQtPk5hbWU7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIGNhc2Ug
SU9DVExfWEVOQ09OU19HRVRfUFJPVE9DT0w6DQo+ICsgICAgICAgIFZhbHVlID0gRnJvbnRlbmQt
PlByb3RvY29sOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAg
ICBWYWx1ZSA9IE5VTEw7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAg
IHN0YXR1cyA9IFNUQVRVU19OT1RfU1VQUE9SVEVEOw0KPiArICAgIGlmIChWYWx1ZSA9PSBOVUxM
KQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX0lO
VkFMSURfUEFSQU1FVEVSOw0KPiArICAgIGlmIChJbnB1dEJ1ZmZlckxlbmd0aCAhPSAwKQ0KPiAr
ICAgICAgICBnb3RvIGZhaWwyOw0KPiArDQo+ICsgICAgTGVuZ3RoID0gKFVMT05HKXN0cmxlbihW
YWx1ZSkgKyAxOw0KPiArICAgIElycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSBMZW5ndGg7DQo+
ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9CVUZGRVJfU0laRTsNCj4gKyAgICBp
ZiAoT3V0cHV0QnVmZmVyTGVuZ3RoID09IDApDQo+ICsgICAgICAgIGdvdG8gZmFpbDM7DQo+ICsN
Cj4gKyAgICBSdGxaZXJvTWVtb3J5KEJ1ZmZlciwgT3V0cHV0QnVmZmVyTGVuZ3RoKTsNCj4gKyAg
ICBpZiAoT3V0cHV0QnVmZmVyTGVuZ3RoIDwgTGVuZ3RoKQ0KPiArICAgICAgICBnb3RvIGZhaWw0
Ow0KPiArDQo+ICsgICAgUnRsQ29weU1lbW9yeShCdWZmZXIsIFZhbHVlLCBMZW5ndGgpOw0KPiAr
DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsNDoNCj4gKyAgICBF
cnJvcigiZmFpbDRcbiIpOw0KPiArDQo+ICtmYWlsMzoNCj4gKyAgICBFcnJvcigiZmFpbDNcbiIp
Ow0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICtmYWls
MToNCj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsgICAg
cmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIE5UU1RBVFVTDQo+ICBGcm9udGVu
ZEFiaUFjcXVpcmUoDQo+ICAgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250
ZXh0DQo+ICAgICAgKQ0KPiBAQCAtMTM3Myw5ICsxNDQ3LDIzIEBAIEZyb250ZW5kQWJpUHV0UXVl
dWUoDQo+ICAgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgICAgICAgICBJcnANCj4gICAgICAp
DQo+ICB7DQo+IC0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihDb250ZXh0KTsNCj4gLSAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7DQo+IC0gICAgcmV0dXJuIFNUQVRVU19ERVZJQ0Vf
Tk9UX1JFQURZOw0KPiArICAgIFBYRU5DT05TX0ZST05URU5EICAgICAgICAgICAgICAgRnJvbnRl
bmQgPQ0KPiAoUFhFTkNPTlNfRlJPTlRFTkQpQ29udGV4dDsNCj4gKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gICAgICAgICAgICAgIFN0YWNrTG9jYXRpb247DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0
aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArDQo+ICsgICAgc3dp
dGNoIChTdGFja0xvY2F0aW9uLT5NYWpvckZ1bmN0aW9uKSB7DQo+ICsgICAgY2FzZSBJUlBfTUpf
UkVBRDoNCj4gKyAgICBjYXNlIElSUF9NSl9XUklURToNCj4gKyAgICAgICAgcmV0dXJuIFNUQVRV
U19ERVZJQ0VfTk9UX1JFQURZOw0KPiArDQo+ICsgICAgY2FzZSBJUlBfTUpfREVWSUNFX0NPTlRS
T0w6DQo+ICsgICAgICAgIHJldHVybiBGcm9udGVuZEdldFByb3BlcnR5KEZyb250ZW5kLCBJcnAp
Ow0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgQVNTRVJUKEZBTFNFKTsNCj4gKyAg
ICAgICAgcmV0dXJuIFNUQVRVU19OT1RfU1VQUE9SVEVEOw0KPiArICAgIH0NCj4gIH0NCj4gDQo+
ICBzdGF0aWMgWEVOQ09OU19DT05TT0xFX0FCSSBGcm9udGVuZEFiaVYxID0gew0KPiAtLQ0KPiAy
LjguMw0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:27:44 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:27:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkit-0004M3-Qo; Fri, 02 Mar 2018 13:27:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkir-0004Lt-Uo
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:27:42 +0000
X-Inumbo-ID: 54d55620-1e1d-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 54d55620-1e1d-11e8-ba59-bc764e045a96;
 Fri, 02 Mar 2018 14:26:36 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033622"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 12/14 v2] Implement ring protocol
Thread-Index: AQHTrLK0fTjBEpxpL0eWspxyCpqW+KO8+swg
Date: Fri, 2 Mar 2018 13:27:01 +0000
Message-ID: <a5166ae115e243d9994fae7dad5f3e75@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-13-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-13-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 12/14 v2] Implement ring protocol
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDEyLzE0IHYyXSBJbXBsZW1lbnQgcmluZyBwcm90b2NvbA0KPiANCj4gRnJvbTogT3dlbiBT
bWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiANCj4gQWRkcyByaW5nLmgvLmMgd2hpY2gg
aW1wbGVtZW50cyB0aGUgY29uc29sZSByaW5nIHByb3RvY29sIGFuZA0KPiBoYW5kbGVzIHRoZSBj
YW5jZWwgc2FmZSBxdWV1ZXMgZm9yIHRoZSBvdXRzdGFuZGluZyByZWFkL3dyaXRlIElSUHMuDQo+
IENvbm5lY3QgdGhlIHJpbmcgd2l0aCB0aGUgc3RhdGUgcHJvdG9jb2wgaW4gdGhlIGZyb250ZW5k
Lg0KPiBBbHNvIGZpeGVzIGZyb250ZW5kIHN0YXRlIHRyYW5zaXRpb25zIHRvIGdldCBhbGxvdyB0
aGUgcmluZyB0bw0KPiBjb25uZWN0IGFuZCBvcGVyYXRlIGNvcnJlY3RseS4NCj4gDQo+IFNpZ25l
ZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6
IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMv
eGVuY29ucy9mcm9udGVuZC5jICAgICAgICAgfCAgMjI3ICsrKysrLS0tLQ0KPiAgc3JjL3hlbmNv
bnMvcmluZy5jICAgICAgICAgICAgIHwgMTA2NA0KPiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICBzcmMveGVuY29ucy9yaW5nLmggICAgICAgICAgICAgfCAgIDk2
ICsrKysNCj4gIHZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvaiB8ICAgIDEgKw0KPiAgdnMy
MDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qIHwgICAgMSArDQo+ICA1IGZpbGVzIGNoYW5nZWQs
IDEzMDYgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA3
NTUgc3JjL3hlbmNvbnMvcmluZy5jDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMv
cmluZy5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYyBiL3NyYy94
ZW5jb25zL2Zyb250ZW5kLmMNCj4gaW5kZXggYTZlNTdkMS4uZjdkM2IyMyAxMDA3NTUNCj4gLS0t
IGEvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYw0KPiArKysgYi9zcmMveGVuY29ucy9mcm9udGVuZC5j
DQo+IEBAIC00NCw2ICs0NCw3IEBADQo+IA0KPiAgI2luY2x1ZGUgImRyaXZlci5oIg0KPiAgI2lu
Y2x1ZGUgImZyb250ZW5kLmgiDQo+ICsjaW5jbHVkZSAicmluZy5oIg0KPiAgI2luY2x1ZGUgInRo
cmVhZC5oIg0KPiAgI2luY2x1ZGUgImRiZ19wcmludC5oIg0KPiAgI2luY2x1ZGUgImFzc2VydC5o
Ig0KPiBAQCAtODIsNiArODMsOCBAQCBzdHJ1Y3QgX1hFTkNPTlNfRlJPTlRFTkQgew0KPiAgICAg
IFBYRU5CVVNfU1VTUEVORF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJhY2s7DQo+ICAgICAgUFhF
TkJVU19ERUJVR19DQUxMQkFDSyAgICAgIERlYnVnQ2FsbGJhY2s7DQo+ICAgICAgUFhFTkJVU19T
VE9SRV9XQVRDSCAgICAgICAgIFdhdGNoOw0KPiArDQo+ICsgICAgUFhFTkNPTlNfUklORyAgICAg
ICAgICAgICAgIFJpbmc7DQo+ICB9Ow0KPiANCj4gIHN0YXRpYyBjb25zdCBQQ0hBUg0KPiBAQCAt
NTkyLDExICs1OTUsMjEgQEAgRnJvbnRlbmRDbG9zZSgNCj4gICAgICAgICAgaWYgKCFGcm9udGVu
ZElzT25saW5lKEZyb250ZW5kKSkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4gLSAgICAg
ICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZCk7DQo+IC0NCj4gICAgICAgICAgRnJvbnRl
bmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5kLA0KPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRlKTsNCj4gKw0KPiAr
ICAgICAgICBzd2l0Y2ggKFN0YXRlKSB7DQo+ICsgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDbG9z
aW5nOg0KPiArICAgICAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkKTsN
Cj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIFhlbmJ1c1N0YXRlQ2xvc2Vk
Og0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAg
ICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcpOw0KPiArICAgICAgICAgICAg
YnJlYWs7DQo+ICsgICAgICAgIH0NCj4gICAgICB9DQo+IA0KPiAgICAgIEZyb250ZW5kUmVsZWFz
ZUJhY2tlbmQoRnJvbnRlbmQpOw0KPiBAQCAtNjMxLDExICs2NDQsMjAgQEAgRnJvbnRlbmRQcmVw
YXJlKA0KPiAgICAgICAgICBpZiAoIUZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKQ0KPiAgICAg
ICAgICAgICAgYnJlYWs7DQo+IA0KPiAtICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZy
b250ZW5kLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5p
dGlhbGlzaW5nKTsNCj4gLQ0KPiAgICAgICAgICBGcm9udGVuZFdhaXRGb3JCYWNrZW5kWGVuYnVz
U3RhdGVDaGFuZ2UoRnJvbnRlbmQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmU3RhdGUpOw0KPiArICAgICAgICBzd2l0Y2ggKFN0YXRlKSB7DQo+
ICsgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVJbml0V2FpdDoNCj4gKyAgICAgICAgICAgIGJyZWFr
Ow0KPiArICAgICAgICBjYXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOg0KPiArICAgICAgICAgICAgRnJv
bnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+
ICsgICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRl
KEZyb250ZW5kLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVz
U3RhdGVJbml0aWFsaXNpbmcpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0N
Cj4gICAgICB9DQo+IA0KPiAgICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7DQo+IEBA
IC03MjUsNyArNzQ3LDkgQEAgRnJvbnRlbmRDb25uZWN0KA0KPiAgICAgIGlmICghTlRfU1VDQ0VT
UyhzdGF0dXMpKQ0KPiAgICAgICAgICBnb3RvIGZhaWwyOw0KPiANCj4gLSAgICAvLyBUT0RPOiBD
b25uZWN0IFJpbmcNCj4gKyAgICBzdGF0dXMgPSBSaW5nQ29ubmVjdChGcm9udGVuZC0+UmluZyk7
DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDM7
DQo+IA0KPiAgICAgIEF0dGVtcHQgPSAwOw0KPiAgICAgIGRvIHsNCj4gQEAgLTczNyw3ICs3NjEs
MTAgQEAgRnJvbnRlbmRDb25uZWN0KA0KPiAgICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4gLSAgICAgICAgLy8gVE9ETzogU3RvcmVX
cml0ZSBSaW5nDQo+ICsgICAgICAgIHN0YXR1cyA9IFJpbmdTdG9yZVdyaXRlKEZyb250ZW5kLT5S
aW5nLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbik7DQo+
ICsgICAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICAgICAgZ290byBh
Ym9ydDsNCj4gDQo+ICAgICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShUcmFuc2FjdGlvbkVu
ZCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRl
cmZhY2UsDQo+IEBAIC03NDgsMTIgKzc3NSwxMiBAQCBGcm9udGVuZENvbm5lY3QoDQo+IA0KPiAg
ICAgICAgICBjb250aW51ZTsNCj4gDQo+IC0gICAgLy9hYm9ydDoNCj4gLSAgICAvLyAgICAoVk9J
RClYRU5CVVNfU1RPUkUoVHJhbnNhY3Rpb25FbmQsDQo+IC0gICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+IC0gICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgIFRyYW5zYWN0aW9uLA0KPiAtICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSk7DQo+IC0gICAgLy8gICAgYnJlYWs7DQo+ICsgICAgYWJvcnQ6DQo+ICsgICAgICAgIChW
T0lEKVhFTkJVU19TVE9SRShUcmFuc2FjdGlvbkVuZCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUcmFuc2FjdGlvbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
KTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICAgICAgfSB3aGlsZSAoc3RhdHVzID09IFNUQVRVU19S
RVRSWSk7DQo+IA0KPiAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiBAQCAtNzY0LDEx
ICs3OTEsMjQgQEAgRnJvbnRlbmRDb25uZWN0KA0KPiAgICAgICAgICBpZiAoIUZyb250ZW5kSXNP
bmxpbmUoRnJvbnRlbmQpKQ0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+IA0KPiAtICAgICAgICBG
cm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFhlbmJ1c1N0YXRlQ29ubmVjdGVkKTsNCj4gLQ0KPiAgICAgICAgICBGcm9udGVu
ZFdhaXRGb3JCYWNrZW5kWGVuYnVzU3RhdGVDaGFuZ2UoRnJvbnRlbmQsDQo+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhdGUpOw0KPiArDQo+ICsg
ICAgICAgIHN3aXRjaCAoU3RhdGUpIHsNCj4gKyAgICAgICAgY2FzZSBYZW5idXNTdGF0ZUluaXRX
YWl0Og0KPiArICAgICAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQp
Ow0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDb25u
ZWN0ZWQ6DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgY2FzZSBYZW5idXNTdGF0
ZVVua25vd246DQo+ICsgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDbG9zaW5nOg0KPiArICAgICAg
ICBjYXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOg0KPiArICAgICAgICAgICAgRnJvbnRlbmRTZXRPZmZs
aW5lKEZyb250ZW5kKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBkZWZhdWx0
Og0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0NCj4gICAgICB9DQo+IA0KPiAg
ICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7DQo+IEBAIC03ODQsNyArODI0LDcgQEAg
RnJvbnRlbmRDb25uZWN0KA0KPiAgICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsNCj4gICAg
ICAgICAgTGVuZ3RoID0gKFVMT05HKXN0cmxlbihCdWZmZXIpOw0KPiANCj4gLSAgICAgICAgRnJv
bnRlbmQtPk5hbWUgPSBfX0Zyb250ZW5kQWxsb2NhdGUoTGVuZ3RoKTsNCj4gKyAgICAgICAgRnJv
bnRlbmQtPk5hbWUgPSBfX0Zyb250ZW5kQWxsb2NhdGUoTGVuZ3RoICsgMSk7DQo+ICAgICAgICAg
IGlmIChGcm9udGVuZC0+TmFtZSkNCj4gICAgICAgICAgICAgIFJ0bENvcHlNZW1vcnkoRnJvbnRl
bmQtPk5hbWUsIEJ1ZmZlciwgTGVuZ3RoKTsNCj4gDQo+IEBAIC04MDIsNyArODQyLDcgQEAgRnJv
bnRlbmRDb25uZWN0KA0KPiAgICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsNCj4gICAgICAg
ICAgTGVuZ3RoID0gKFVMT05HKXN0cmxlbihCdWZmZXIpOw0KPiANCj4gLSAgICAgICAgRnJvbnRl
bmQtPlByb3RvY29sID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0aCk7DQo+ICsgICAgICAgIEZy
b250ZW5kLT5Qcm90b2NvbCA9IF9fRnJvbnRlbmRBbGxvY2F0ZShMZW5ndGggKyAxKTsNCj4gICAg
ICAgICAgaWYgKEZyb250ZW5kLT5Qcm90b2NvbCkNCj4gICAgICAgICAgICAgIFJ0bENvcHlNZW1v
cnkoRnJvbnRlbmQtPlByb3RvY29sLCBCdWZmZXIsIExlbmd0aCk7DQo+IA0KPiBAQCAtODIwLDEy
ICs4NjAsMjEgQEAgZmFpbDU6DQo+ICBmYWlsNDoNCj4gICAgICBFcnJvcigiZmFpbDRcbiIpOw0K
PiANCj4gLS8vZmFpbDM6DQo+ICsgICAgUmluZ0Rpc2Nvbm5lY3QoRnJvbnRlbmQtPlJpbmcpOw0K
PiArDQo+ICtmYWlsMzoNCj4gICAgICBFcnJvcigiZmFpbDNcbiIpOw0KPiANCj4gKyAgICBYRU5C
VVNfREVCVUcoRGVyZWdpc3RlciwNCj4gKyAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5EZWJ1
Z0ludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgRnJvbnRlbmQtPkRlYnVnQ2FsbGJhY2sp
Ow0KPiArICAgIEZyb250ZW5kLT5EZWJ1Z0NhbGxiYWNrID0gTlVMTDsNCj4gKw0KPiAgZmFpbDI6
DQo+ICAgICAgRXJyb3IoImZhaWwyXG4iKTsNCj4gDQo+ICsgICAgWEVOQlVTX0RFQlVHKFJlbGVh
c2UsICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UpOw0KPiArDQo+ICBmYWlsMToNCj4gICAgICBF
cnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiANCj4gQEAgLTg0NSw3ICs4OTQsNyBA
QCBGcm9udGVuZERpc2Nvbm5lY3QoDQo+ICAgICAgX19Gcm9udGVuZEZyZWUoRnJvbnRlbmQtPk5h
bWUpOw0KPiAgICAgIEZyb250ZW5kLT5OYW1lID0gTlVMTDsNCj4gDQo+IC0gICAgLy8gVE9ETzog
RGlzY29ubmVjdCBSaW5nDQo+ICsgICAgUmluZ0Rpc2Nvbm5lY3QoRnJvbnRlbmQtPlJpbmcpOw0K
PiANCj4gICAgICBYRU5CVVNfREVCVUcoRGVyZWdpc3RlciwNCj4gICAgICAgICAgICAgICAgICAg
JkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwNCj4gQEAgLTg2MiwxNCArOTExLDIyIEBAIEZyb250
ZW5kRW5hYmxlKA0KPiAgICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgICBGcm9udGVuZA0KPiAg
ICAgICkNCj4gIHsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsN
Cj4gICAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiANCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1F
VEVSKEZyb250ZW5kKTsNCj4gLSAgICAvLyBUT0RPOiBFbmFibGUgUmluZw0KPiArICAgIHN0YXR1
cyA9IFJpbmdFbmFibGUoRnJvbnRlbmQtPlJpbmcpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiANCj4gICAgICBUcmFjZSgiPD09PT1c
biIpOw0KPiANCj4gICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwxOg0K
PiArICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1
cm4gc3RhdHVzOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBWT0lEDQo+IEBAIC04NzksOCArOTM2LDcg
QEAgRnJvbnRlbmREaXNhYmxlKA0KPiAgew0KPiAgICAgIFRyYWNlKCI9PT09PlxuIik7DQo+IA0K
PiAtICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOw0KPiAtICAgIC8vIFRPRE86
IERpc2FibGUgUmluZw0KPiArICAgIFJpbmdEaXNhYmxlKEZyb250ZW5kLT5SaW5nKTsNCj4gDQo+
ICAgICAgVHJhY2UoIjw9PT09XG4iKTsNCj4gIH0NCj4gQEAgLTEwNDgsNiArMTEwNCw3IEBAIF9f
RnJvbnRlbmRSZXN1bWUoDQo+IA0KPiAgICAgIEFTU0VSVDNVKEZyb250ZW5kLT5TdGF0ZSwgPT0g
LCBGUk9OVEVORF9VTktOT1dOKTsNCj4gICAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEZyb250
ZW5kKTsNCj4gKyAgICAvLyBDdXJyZW50IGJhY2tlbmRzIGRvbnQgbGlrZSByZS1vcGVuaW5nIGFm
dGVyIGJlaW5nIGNsb3NlZA0KPiAgICAgIC8vKFZPSUQpRnJvbnRlbmRTZXRTdGF0ZShGcm9udGVu
ZCwgRlJPTlRFTkRfQ0xPU0VEKTsNCj4gIH0NCj4gDQo+IEBAIC0xMDU5LDcgKzExMTYsNyBAQCBf
X0Zyb250ZW5kU3VzcGVuZCgNCj4gICAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
ICwgRElTUEFUQ0hfTEVWRUwpOw0KPiANCj4gICAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEZy
b250ZW5kKTsNCj4gLSAgICAvLyhWT0lEKUZyb250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIEZST05U
RU5EX1VOS05PV04pOw0KPiArICAgIChWT0lEKUZyb250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIEZS
T05URU5EX1VOS05PV04pOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBW
T0lEDQo+IEBAIC0xMTg2LDcgKzEyNDMsOCBAQCBGcm9udGVuZERlc3Ryb3koDQo+IA0KPiAgICAg
IFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5FamVjdEV2ZW50LCBzaXplb2YoS0VWRU5UKSk7DQo+
IA0KPiAtICAgIC8vIFRPRE86IFRlYXJkb3duIFJpbmcNCj4gKyAgICBSaW5nRGVzdHJveShGcm9u
dGVuZC0+UmluZyk7DQo+ICsgICAgRnJvbnRlbmQtPlJpbmcgPSBOVUxMOw0KPiANCj4gICAgICBS
dGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsDQo+ICAgICAgICAgICAgICAg
ICAgICBzaXplb2YoWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSkpOw0KPiBAQCAtMTI5NCw0MCArMTM1
Miw0MiBAQCBGcm9udGVuZEFiaUFjcXVpcmUoDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBYRU5D
T05TX0ZST05URU5EICAgICAgICAgICAgICAgRnJvbnRlbmQgPQ0KPiAoUFhFTkNPTlNfRlJPTlRF
TkQpQ29udGV4dDsNCj4gKyAgICBMT05HICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50
Ow0KPiAgICAgIEtJUlFMICAgICAgICAgICAgICAgICAgICAgICAgICAgSXJxbDsNCj4gICAgICBO
VFNUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gDQo+IC0gICAgSW50ZXJs
b2NrZWRJbmNyZW1lbnQoJkZyb250ZW5kLT5SZWZDb3VudCk7DQo+ICsgICAgQ291bnQgPSBJbnRl
cmxvY2tlZEluY3JlbWVudCgmRnJvbnRlbmQtPlJlZkNvdW50KTsNCj4gKyAgICBpZiAoQ291bnQg
PT0gMikgew0KPiArICAgICAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0K
PiANCj4gLSAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0KPiArICAgICAg
ICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChBY3F1aXJlLCAmRnJvbnRlbmQtPlN1c3BlbmRJbnRl
cmZhY2UpOw0KPiArICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAg
ICAgIGdvdG8gZmFpbDE7DQo+IA0KPiAtICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKEFjcXVp
cmUsICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSk7DQo+IC0gICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpDQo+IC0gICAgICAgIGdvdG8gZmFpbDE7DQo+ICsgICAgICAgIF9fRnJvbnRlbmRS
ZXN1bWUoRnJvbnRlbmQpOw0KPiANCj4gLSAgICBfX0Zyb250ZW5kUmVzdW1lKEZyb250ZW5kKTsN
Cj4gKyAgICAgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoUmVnaXN0ZXIsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VTUEVORF9DQUxMQkFDS19MQVRFLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFN1c3BlbmRDYWxsYmFj
aywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrKTsN
Cj4gKyAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgICAgICBnb3Rv
IGZhaWwyOw0KPiANCj4gLSAgICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChSZWdpc3RlciwNCj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2Us
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VTUEVORF9DQUxMQkFDS19MQVRFLA0K
PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kU3VzcGVuZENhbGxiYWNrLA0K
PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLA0KPiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrKTsNCj4gLSAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gLSAgICAgICAgZ290byBmYWlsMjsNCj4gKyAgICAgICAg
S2VMb3dlcklycWwoSXJxbCk7DQo+IA0KPiAtICAgIEtlTG93ZXJJcnFsKElycWwpOw0KPiArICAg
ICAgICBLZUNsZWFyRXZlbnQoJkZyb250ZW5kLT5FamVjdEV2ZW50KTsNCj4gKyAgICAgICAgVGhy
ZWFkV2FrZShGcm9udGVuZC0+RWplY3RUaHJlYWQpOw0KPiANCj4gLSAgICBLZUNsZWFyRXZlbnQo
JkZyb250ZW5kLT5FamVjdEV2ZW50KTsNCj4gLSAgICBUaHJlYWRXYWtlKEZyb250ZW5kLT5FamVj
dFRocmVhZCk7DQo+IC0NCj4gLSAgICBUcmFjZSgid2FpdGluZyBmb3IgZWplY3QgdGhyZWFkXG4i
KTsNCj4gKyAgICAgICAgVHJhY2UoIndhaXRpbmcgZm9yIGVqZWN0IHRocmVhZFxuIik7DQo+IA0K
PiAtICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQs
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwNCj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwNCj4gLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOw0KPiArICAgICAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZyb250
ZW5kLT5FamVjdEV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXhlY3V0aXZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVs
TW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsgICAgfQ0KPiAN
Cj4gICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IA0KPiBAQCAtMTM1OCwzMSArMTQxOCwz
MSBAQCBGcm9udGVuZEFiaVJlbGVhc2UoDQo+ICAgICAgS0lSUUwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJcnFsOw0KPiANCj4gICAgICBDb3VudCA9IEludGVybG9ja2VkRGVjcmVtZW50KCZG
cm9udGVuZC0+UmVmQ291bnQpOw0KPiArICAgIGlmIChDb3VudCA9PSAxKSB7DQo+ICsgICAgICAg
IEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7DQo+IA0KPiAtICAgIEtlUmFpc2VJ
cnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7DQo+IC0NCj4gLSAgICBYRU5CVVNfU1VTUEVORChE
ZXJlZ2lzdGVyLA0KPiAtICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZEludGVy
ZmFjZSwNCj4gLSAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrKTsN
Cj4gLSAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrID0gTlVMTDsNCj4gLQ0KPiAtICAgIF9f
RnJvbnRlbmRTdXNwZW5kKEZyb250ZW5kKTsNCj4gKyAgICAgICAgWEVOQlVTX1NVU1BFTkQoRGVy
ZWdpc3RlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kSW50
ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxi
YWNrKTsNCj4gKyAgICAgICAgRnJvbnRlbmQtPlN1c3BlbmRDYWxsYmFjayA9IE5VTEw7DQo+IA0K
PiAtICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2UsICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFj
ZSk7DQo+ICsgICAgICAgIF9fRnJvbnRlbmRTdXNwZW5kKEZyb250ZW5kKTsNCj4gDQo+IC0gICAg
S2VMb3dlcklycWwoSXJxbCk7DQo+ICsgICAgICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2UsICZG
cm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSk7DQo+IA0KPiAtICAgIEtlQ2xlYXJFdmVudCgmRnJv
bnRlbmQtPkVqZWN0RXZlbnQpOw0KPiAtICAgIFRocmVhZFdha2UoRnJvbnRlbmQtPkVqZWN0VGhy
ZWFkKTsNCj4gKyAgICAgICAgS2VMb3dlcklycWwoSXJxbCk7DQo+IA0KPiAtICAgIFRyYWNlKCJ3
YWl0aW5nIGZvciBlamVjdCB0aHJlYWRcbiIpOw0KPiArICAgICAgICBLZUNsZWFyRXZlbnQoJkZy
b250ZW5kLT5FamVjdEV2ZW50KTsNCj4gKyAgICAgICAgVGhyZWFkV2FrZShGcm9udGVuZC0+RWpl
Y3RUaHJlYWQpOw0KPiANCj4gLSAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZyb250
ZW5kLT5FamVjdEV2ZW50LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVj
dXRpdmUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICAgICAgVHJhY2UoIndhaXRpbmcgZm9y
IGVqZWN0IHRocmVhZFxuIik7DQo+IA0KPiArICAgICAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVP
YmplY3QoJkZyb250ZW5kLT5FamVjdEV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+
ICsgICAgfQ0KPiAgICAgIGlmIChDb3VudCA9PSAwKQ0KPiAgICAgICAgICBGcm9udGVuZERlc3Ry
b3koRnJvbnRlbmQpOw0KPiAgfQ0KPiBAQCAtMTQwMyw5ICsxNDYzLDcgQEAgRnJvbnRlbmRBYmlE
M1RvRDAoDQo+ICB7DQo+ICAgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAgICAgICAgICAgICBGcm9u
dGVuZCA9DQo+IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0Ow0KPiANCj4gLSAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKEZyb250ZW5kKTsNCj4gLSAgICAvL3JldHVybiBGcm9udGVuZFNldFN0
YXRlKEZyb250ZW5kLCBGUk9OVEVORF9FTkFCTEVEKTsNCj4gLSAgICByZXR1cm4gU1RBVFVTX1NV
Q0NFU1M7DQo+ICsgICAgcmV0dXJuIEZyb250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIEZST05URU5E
X0VOQUJMRUQpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBWT0lEDQo+IEBAIC0xNDE2LDcgKzE0NzQs
NyBAQCBGcm9udGVuZEFiaUQwVG9EMygNCj4gICAgICBQWEVOQ09OU19GUk9OVEVORCAgICAgICAg
ICAgICAgIEZyb250ZW5kID0NCj4gKFBYRU5DT05TX0ZST05URU5EKUNvbnRleHQ7DQo+IA0KPiAg
ICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOw0KPiAtICAgIC8vKFZPSUQpIEZy
b250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIEZST05URU5EX0NMT1NFRCk7DQo+ICsgICAgKFZPSUQp
IEZyb250ZW5kU2V0U3RhdGUoRnJvbnRlbmQsIEZST05URU5EX0NMT1NFRCk7DQo+ICB9DQo+IA0K
PiAgc3RhdGljIE5UU1RBVFVTDQo+IEBAIC0xNDI1LDkgKzE0ODMsOSBAQCBGcm9udGVuZEFiaU9w
ZW4oDQo+ICAgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0DQo+
ICAgICAgKQ0KPiAgew0KPiAtICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7DQo+
IC0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGaWxlT2JqZWN0KTsNCj4gLSAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7DQo+ICsgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAgICAgICAgICAgICBG
cm9udGVuZCA9DQo+IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0Ow0KPiArDQo+ICsgICAgcmV0
dXJuIFJpbmdPcGVuKEZyb250ZW5kLT5SaW5nLCBGaWxlT2JqZWN0KTsNCj4gIH0NCj4gDQo+ICBz
dGF0aWMgTlRTVEFUVVMNCj4gQEAgLTE0MzYsOSArMTQ5NCw5IEBAIEZyb250ZW5kQWJpQ2xvc2Uo
DQo+ICAgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0DQo+ICAg
ICAgKQ0KPiAgew0KPiAtICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7DQo+IC0g
ICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGaWxlT2JqZWN0KTsNCj4gLSAgICByZXR1cm4gU1RB
VFVTX1NVQ0NFU1M7DQo+ICsgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAgICAgICAgICAgICBGcm9u
dGVuZCA9DQo+IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0Ow0KPiArDQo+ICsgICAgcmV0dXJu
IFJpbmdDbG9zZShGcm9udGVuZC0+UmluZywgRmlsZU9iamVjdCk7DQo+ICB9DQo+IA0KPiAgc3Rh
dGljIE5UU1RBVFVTDQo+IEBAIC0xNDU1LDcgKzE1MTMsNyBAQCBGcm9udGVuZEFiaVB1dFF1ZXVl
KA0KPiAgICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgew0KPiAgICAg
IGNhc2UgSVJQX01KX1JFQUQ6DQo+ICAgICAgY2FzZSBJUlBfTUpfV1JJVEU6DQo+IC0gICAgICAg
IHJldHVybiBTVEFUVVNfREVWSUNFX05PVF9SRUFEWTsNCj4gKyAgICAgICAgcmV0dXJuIFJpbmdQ
dXRRdWV1ZShGcm9udGVuZC0+UmluZywgSXJwKTsNCj4gDQo+ICAgICAgY2FzZSBJUlBfTUpfREVW
SUNFX0NPTlRST0w6DQo+ICAgICAgICAgIHJldHVybiBGcm9udGVuZEdldFByb3BlcnR5KEZyb250
ZW5kLCBJcnApOw0KPiBAQCAtMTUyNiw3ICsxNTg0LDkgQEAgRnJvbnRlbmRDcmVhdGUoDQo+ICAg
ICAgRmRvR2V0U3VzcGVuZEludGVyZmFjZShQZG9HZXRGZG8oUGRvKSwgJkZyb250ZW5kLQ0KPiA+
U3VzcGVuZEludGVyZmFjZSk7DQo+ICAgICAgRmRvR2V0U3RvcmVJbnRlcmZhY2UoUGRvR2V0RmRv
KFBkbyksICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UpOw0KPiANCj4gLSAgICAvLyBUT0RPOiBJ
bml0aWFsaXplIFJpbmcNCj4gKyAgICBzdGF0dXMgPSBSaW5nQ3JlYXRlKEZyb250ZW5kLCAmRnJv
bnRlbmQtPlJpbmcpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAg
ICBnb3RvIGZhaWw0Ow0KPiANCj4gICAgICBLZUluaXRpYWxpemVFdmVudCgmRnJvbnRlbmQtPkVq
ZWN0RXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7DQo+IA0KPiBAQCAtMTU0Niw5ICsx
NjA2LDEwIEBAIGZhaWw1Og0KPiANCj4gICAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+RWpl
Y3RFdmVudCwgc2l6ZW9mKEtFVkVOVCkpOw0KPiANCj4gLSAgICAvLyBUT0RPOiBUZWFyZG93biBS
aW5nDQo+ICsgICAgUmluZ0Rlc3Ryb3koRnJvbnRlbmQtPlJpbmcpOw0KPiArICAgIEZyb250ZW5k
LT5SaW5nID0gTlVMTDsNCj4gDQo+IC0vL2ZhaWw0Og0KPiArZmFpbDQ6DQo+ICAgICAgRXJyb3Io
ImZhaWw0XG4iKTsNCj4gDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPlN0b3JlSW50
ZXJmYWNlLA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvcmluZy5jIGIvc3JjL3hlbmNvbnMv
cmluZy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLjIwYzQ1MjAN
Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuY29ucy9yaW5nLmMNCj4gQEAgLTAsMCAr
MSwxMDY0IEBADQo+ICsvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4NCj4gKyog
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyoNCj4gKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiArKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0Og0KPiArKg0KPiArKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiArKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArKiAgICAgZm9sbG93aW5nIGRpc2Ns
YWltZXIuDQo+ICsqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlDQo+ICsqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlDQo+ICsqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsqDQo+ICsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiArKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLA0KPiArKiBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArKiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KPiAr
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUg0K
PiArKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwNCj4gKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywNCj4gKyogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SDQo+ICsqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+ICsqIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORw0KPiArKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4gKyog
U1VDSCBEQU1BR0UuDQo+ICsqLw0KPiArDQo+ICsjaW5jbHVkZSA8bnRkZGsuaD4NCj4gKyNpbmNs
dWRlIDxudHN0cnNhZmUuaD4NCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gKw0KPiArI2luY2x1
ZGUgPHhlbi5oPg0KPiArI2luY2x1ZGUgPGRlYnVnX2ludGVyZmFjZS5oPg0KPiArI2luY2x1ZGUg
PHN0b3JlX2ludGVyZmFjZS5oPg0KPiArI2luY2x1ZGUgPGdudHRhYl9pbnRlcmZhY2UuaD4NCj4g
KyNpbmNsdWRlIDxldnRjaG5faW50ZXJmYWNlLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJmcm9udGVu
ZC5oIg0KPiArI2luY2x1ZGUgInJpbmcuaCINCj4gKyNpbmNsdWRlICJuYW1lcy5oIg0KPiArI2lu
Y2x1ZGUgImRiZ19wcmludC5oIg0KPiArI2luY2x1ZGUgImFzc2VydC5oIg0KPiArI2luY2x1ZGUg
InV0aWwuaCINCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfUVVFVUUgew0KPiArICAg
IElPX0NTUSAgICAgICAgICAgICAgICAgIENzcTsNCj4gKyAgICBMSVNUX0VOVFJZICAgICAgICAg
ICAgICBMaXN0Ow0KPiArICAgIEtTUElOX0xPQ0sgICAgICAgICAgIAlMb2NrOw0KPiArfSBYRU5D
T05TX1FVRVVFLCAqUFhFTkNPTlNfUVVFVUU7DQo+ICsNCj4gK3N0cnVjdCBfWEVOQ09OU19SSU5H
IHsNCj4gKyAgICBQWEVOQ09OU19GUk9OVEVORCAgICAgICAgICAgRnJvbnRlbmQ7DQo+ICsgICAg
Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZDsNCj4gKyAgICBCT09MRUFOICAg
ICAgICAgICAgICAgICAgICAgRW5hYmxlZDsNCj4gKyAgICBLU1BJTl9MT0NLICAgICAgICAgICAg
ICAgICAgTG9jazsNCj4gKyAgICBQWEVOQlVTX0dOVFRBQl9DQUNIRSAgICAgICAgR250dGFiQ2Fj
aGU7DQo+ICsgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICAgICpTaGFyZWQ7DQo+ICsgICAg
UE1ETCAgICAgICAgICAgICAgICAgICAgICAgIE1kbDsNCj4gKyAgICBQWEVOQlVTX0dOVFRBQl9F
TlRSWSAgICAgICAgRW50cnk7DQo+ICsgICAgS0RQQyAgICAgICAgICAgICAgICAgICAgICAgIERw
YzsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgRHBjczsNCj4gKyAgICBVTE9O
RyAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzOw0KPiArICAgIFBYRU5CVVNfRVZUQ0hOX0NI
QU5ORUwgICAgICBDaGFubmVsOw0KPiArICAgIFhFTkJVU19HTlRUQUJfSU5URVJGQUNFICAgICBH
bnR0YWJJbnRlcmZhY2U7DQo+ICsgICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAgIFN0b3Jl
SW50ZXJmYWNlOw0KPiArICAgIFhFTkJVU19FVlRDSE5fSU5URVJGQUNFICAgICBFdnRjaG5JbnRl
cmZhY2U7DQo+ICsgICAgWEVOQlVTX0RFQlVHX0lOVEVSRkFDRSAgICAgIERlYnVnSW50ZXJmYWNl
Ow0KPiArICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJBQ0sgICAgICBEZWJ1Z0NhbGxiYWNrOw0KPiAr
ICAgIFhFTkNPTlNfUVVFVUUgICAgICAgICAgICAgICBSZWFkOw0KPiArICAgIFhFTkNPTlNfUVVF
VUUgICAgICAgICAgICAgICBXcml0ZTsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAg
ICAgQnl0ZXNSZWFkOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBCeXRlc1dy
aXR0ZW47DQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIE1BWE5BTUVMRU4gICAgICAgICAgMTI4DQo+
ICsjZGVmaW5lIFhFTkNPTlNfUklOR19UQUcgICdHTklSJw0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJ
TkxJTkUgUFZPSUQNCj4gK19fUmluZ0FsbG9jYXRlKA0KPiArICAgIElOICBVTE9ORyAgIExlbmd0
aA0KPiArICAgICkNCj4gK3sNCj4gKyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5v
blBhZ2VkUG9vbCwgTGVuZ3RoLA0KPiBYRU5DT05TX1JJTkdfVEFHKTsNCj4gK30NCj4gKw0KPiAr
c3RhdGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fUmluZ0ZyZWUoDQo+ICsgICAgSU4gIFBWT0lE
ICAgQnVmZmVyDQo+ICsgICAgKQ0KPiArew0KPiArICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1ZmZl
ciwgWEVOQ09OU19SSU5HX1RBRyk7DQo+ICt9DQo+ICsNCj4gK0lPX0NTUV9JTlNFUlRfSVJQX0VY
IFJpbmdDc3FJbnNlcnRJcnBFeDsNCj4gKw0KPiArTlRTVEFUVVMNCj4gK1JpbmdDc3FJbnNlcnRJ
cnBFeCgNCj4gKyAgICBJTiAgUElPX0NTUSAgICAgICAgIENzcSwNCj4gKyAgICBJTiAgUElSUCAg
ICAgICAgICAgIElycCwNCj4gKyAgICBJTiAgUFZPSUQgICAgICAgICAgIEluc2VydENvbnRleHQg
T1BUSU9OQUwNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgQk9PTEVBTiAgICAgICAgICAgICBSZUlu
c2VydCA9IChCT09MRUFOKShVTE9OR19QVFIpSW5zZXJ0Q29udGV4dDsNCj4gKyAgICBQWEVOQ09O
U19RVUVVRSAgICAgIFF1ZXVlOw0KPiArDQo+ICsgICAgUXVldWUgPSBDT05UQUlOSU5HX1JFQ09S
RChDc3EsIFhFTkNPTlNfUVVFVUUsIENzcSk7DQo+ICsNCj4gKyAgICBpZiAoUmVJbnNlcnQpIHsN
Cj4gKyAgICAgICAgLy8gVGhpcyBvbmx5IG9jY3VycyBpZiB0aGUgRFBDIGRlLXF1ZXVlZCB0aGUg
SVJQIGJ1dA0KPiArICAgICAgICAvLyB0aGVuIGZvdW5kIHRoZSBjb25zb2xlIHRvIGJlIGJsb2Nr
ZWQuDQo+ICsgICAgICAgIEluc2VydEhlYWRMaXN0KCZRdWV1ZS0+TGlzdCwgJklycC0+VGFpbC5P
dmVybGF5Lkxpc3RFbnRyeSk7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgSW5zZXJ0VGFp
bExpc3QoJlF1ZXVlLT5MaXN0LCAmSXJwLT5UYWlsLk92ZXJsYXkuTGlzdEVudHJ5KTsNCj4gKyAg
ICB9DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7DQo+ICt9DQo+ICsNCj4gK0lP
X0NTUV9SRU1PVkVfSVJQIFJpbmdDc3FSZW1vdmVJcnA7DQo+ICsNCj4gK1ZPSUQNCj4gK1JpbmdD
c3FSZW1vdmVJcnAoDQo+ICsgICAgSU4gIFBJT19DU1EgICAgIENzcSwNCj4gKyAgICBJTiAgUElS
UCAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVU
RVIoQ3NxKTsNCj4gKw0KPiArICAgIFJlbW92ZUVudHJ5TGlzdCgmSXJwLT5UYWlsLk92ZXJsYXku
TGlzdEVudHJ5KTsNCj4gK30NCj4gKw0KPiArSU9fQ1NRX1BFRUtfTkVYVF9JUlAgUmluZ0NzcVBl
ZWtOZXh0SXJwOw0KPiArDQo+ICtQSVJQDQo+ICtSaW5nQ3NxUGVla05leHRJcnAoDQo+ICsgICAg
SU4gIFBJT19DU1EgICAgIENzcSwNCj4gKyAgICBJTiAgUElSUCAgICAgICAgSXJwLA0KPiArICAg
IElOICBQVk9JRCAgICAgICBQZWVrQ29udGV4dCBPUFRJT05BTA0KPiArICAgICkNCj4gK3sNCj4g
KyAgICBQWEVOQ09OU19RVUVVRSAgUXVldWU7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgIExpc3RF
bnRyeTsNCj4gKyAgICBQSVJQICAgICAgICAgICAgTmV4dElycDsNCj4gKw0KPiArICAgIFF1ZXVl
ID0gQ09OVEFJTklOR19SRUNPUkQoQ3NxLCBYRU5DT05TX1FVRVVFLCBDc3EpOw0KPiArDQo+ICsg
ICAgTGlzdEVudHJ5ID0gKElycCA9PSBOVUxMKSA/DQo+ICsgICAgICAgIFF1ZXVlLT5MaXN0LkZs
aW5rIDoNCj4gKyAgICAgICAgSXJwLT5UYWlsLk92ZXJsYXkuTGlzdEVudHJ5LkZsaW5rOw0KPiAr
DQo+ICsgICAgd2hpbGUgKExpc3RFbnRyeSAhPSAmUXVldWUtPkxpc3QpIHsNCj4gKyAgICAgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiArDQo+ICsgICAgICAgIE5leHRJ
cnAgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIElSUCwgVGFpbC5PdmVybGF5Lkxpc3RF
bnRyeSk7DQo+ICsgICAgICAgIGlmIChQZWVrQ29udGV4dCA9PSBOVUxMKQ0KPiArICAgICAgICAg
ICAgcmV0dXJuIE5leHRJcnA7DQo+ICsNCj4gKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oTmV4dElycCk7DQo+ICsgICAgICAgIGlmIChTdGFja0xv
Y2F0aW9uLT5GaWxlT2JqZWN0ID09IChQRklMRV9PQkpFQ1QpUGVla0NvbnRleHQpDQo+ICsgICAg
ICAgICAgICByZXR1cm4gTmV4dElycDsNCj4gKw0KPiArICAgICAgICBMaXN0RW50cnkgPSBMaXN0
RW50cnktPkZsaW5rOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiBOVUxMOw0KPiArfQ0K
PiArDQo+ICsjcHJhZ21hIHdhcm5pbmcocHVzaCkNCj4gKyNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OjI4MTY3KSAvLyBmdW5jdGlvbiBjaGFuZ2VzIElSUUwNCj4gKw0KPiArSU9fQ1NRX0FDUVVJUkVf
TE9DSyBSaW5nQ3NxQWNxdWlyZUxvY2s7DQo+ICsNCj4gK1ZPSUQNCj4gK1JpbmdDc3FBY3F1aXJl
TG9jaygNCj4gKyAgICBJTiAgUElPX0NTUSAgICAgQ3NxLA0KPiArICAgIE9VVCBQS0lSUUwgICAg
ICBJcnFsDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX1FVRVVFICBRdWV1ZTsNCj4g
Kw0KPiArICAgIFF1ZXVlID0gQ09OVEFJTklOR19SRUNPUkQoQ3NxLCBYRU5DT05TX1FVRVVFLCBD
c3EpOw0KPiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsN
Cj4gK30NCj4gKw0KPiArSU9fQ1NRX1JFTEVBU0VfTE9DSyBSaW5nQ3NxUmVsZWFzZUxvY2s7DQo+
ICsNCj4gK1ZPSUQNCj4gK1JpbmdDc3FSZWxlYXNlTG9jaygNCj4gKyAgICBJTiAgUElPX0NTUSAg
ICAgQ3NxLA0KPiArICAgIElOICBLSVJRTCAgICAgICBJcnFsDQo+ICsgICAgKQ0KPiArew0KPiAr
ICAgIFBYRU5DT05TX1FVRVVFICBRdWV1ZTsNCj4gKw0KPiArICAgIFF1ZXVlID0gQ09OVEFJTklO
R19SRUNPUkQoQ3NxLCBYRU5DT05TX1FVRVVFLCBDc3EpOw0KPiArDQo+ICsgICAgS2VSZWxlYXNl
U3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJcnFsKTsNCj4gK30NCj4gKw0KPiArI3ByYWdtYSB3YXJu
aW5nKHBvcCkNCj4gKw0KPiArSU9fQ1NRX0NPTVBMRVRFX0NBTkNFTEVEX0lSUCBSaW5nQ3NxQ29t
cGxldGVDYW5jZWxlZElycDsNCj4gKw0KPiArVk9JRA0KPiArUmluZ0NzcUNvbXBsZXRlQ2FuY2Vs
ZWRJcnAoDQo+ICsgICAgSU4gIFBJT19DU1EgICAgICAgICBDc3EsDQo+ICsgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUElPX1NUQUNLX0xPQ0FUSU9O
ICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFVDSEFSICAgICAgICAgICAgICAgTWFqb3JGdW5jdGlv
bjsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3NxKTsNCj4gKw0KPiArICAg
IFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+ICsg
ICAgTWFqb3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1ham9yRnVuY3Rpb247DQo+ICsNCj4g
KyAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uID0gMDsNCj4gKyAgICBJcnAtPklvU3RhdHVz
LlN0YXR1cyA9IFNUQVRVU19DQU5DRUxMRUQ7DQo+ICsNCj4gKyAgICBUcmFjZSgiQ0FOQ0VMTEVE
ICglMDJ4OiVzKVxuIiwNCj4gKyAgICAgICAgICBNYWpvckZ1bmN0aW9uLA0KPiArICAgICAgICAg
IE1ham9yRnVuY3Rpb25OYW1lKE1ham9yRnVuY3Rpb24pKTsNCj4gKw0KPiArICAgIElvQ29tcGxl
dGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZP
UkNFSU5MSU5FIFZPSUQNCj4gK19fUmluZ0NhbmNlbFJlcXVlc3RzKA0KPiArICAgIElOICBQWEVO
Q09OU19SSU5HICAgUmluZywNCj4gKyAgICBJTiAgUEZJTEVfT0JKRUNUICAgIEZpbGVPYmplY3QN
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgZm9yICg7Oykgew0KPiArICAgICAgICBQSVJQICAgIEly
cDsNCj4gKw0KPiArICAgICAgICBJcnAgPSBJb0NzcVJlbW92ZU5leHRJcnAoJlJpbmctPlJlYWQu
Q3NxLCBGaWxlT2JqZWN0KTsNCj4gKyAgICAgICAgaWYgKElycCA9PSBOVUxMKQ0KPiArICAgICAg
ICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgUmluZ0NzcUNvbXBsZXRlQ2FuY2VsZWRJcnAo
JlJpbmctPlJlYWQuQ3NxLCBJcnApOw0KPiArICAgIH0NCj4gKyAgICBmb3IgKDs7KSB7DQo+ICsg
ICAgICAgIFBJUlAgICAgSXJwOw0KPiArDQo+ICsgICAgICAgIElycCA9IElvQ3NxUmVtb3ZlTmV4
dElycCgmUmluZy0+V3JpdGUuQ3NxLCBGaWxlT2JqZWN0KTsNCj4gKyAgICAgICAgaWYgKElycCA9
PSBOVUxMKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgUmluZ0NzcUNv
bXBsZXRlQ2FuY2VsZWRJcnAoJlJpbmctPldyaXRlLkNzcSwgSXJwKTsNCj4gKyAgICB9DQo+ICt9
DQo+ICsNCj4gK3N0YXRpYyBWT0lEDQo+ICtSaW5nQWNxdWlyZUxvY2soDQo+ICsgICAgSU4gIFBW
T0lEICAgICAgIEFyZ3VtZW50DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX1JJTkcg
ICBSaW5nID0gQXJndW1lbnQ7DQo+ICsNCj4gKyAgICBLZUFjcXVpcmVTcGluTG9ja0F0RHBjTGV2
ZWwoJlJpbmctPkxvY2spOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgVk9JRA0KPiArUmluZ1JlbGVh
c2VMb2NrKA0KPiArICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudA0KPiArICAgICkNCj4gK3sN
Cj4gKyAgICBQWEVOQ09OU19SSU5HICAgUmluZyA9IEFyZ3VtZW50Ow0KPiArDQo+ICsjcHJhZ21h
IHByZWZhc3Qoc3VwcHJlc3M6MjYxMTApDQo+ICsgICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBj
TGV2ZWwoJlJpbmctPkxvY2spOw0KPiArfQ0KPiArDQo+ICtOVFNUQVRVUw0KPiArUmluZ09wZW4o
DQo+ICsgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nLA0KPiArICAgIElOICBQRklMRV9PQkpF
Q1QgICAgRmlsZU9iamVjdA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBVTlJFRkVSRU5DRURfUEFS
QU1FVEVSKFJpbmcpOw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRmlsZU9iamVjdCk7
DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICtOVFNUQVRVUw0K
PiArUmluZ0Nsb3NlKA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZywNCj4gKyAgICBJ
TiAgUEZJTEVfT0JKRUNUICAgIEZpbGVPYmplY3QNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgX19S
aW5nQ2FuY2VsUmVxdWVzdHMoUmluZywgRmlsZU9iamVjdCk7DQo+ICsgICAgcmV0dXJuIFNUQVRV
U19TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICtOVFNUQVRVUw0KPiArUmluZ1B1dFF1ZXVlKA0KPiAr
ICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZywNCj4gKyAgICBJTiAgUElSUCAgICAgICAgICAg
IElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9j
YXRpb247DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBT
dGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArDQo+
ICsgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NYWpvckZ1bmN0aW9uKSB7DQo+ICsgICAgY2Fz
ZSBJUlBfTUpfUkVBRDoNCj4gKyAgICAgICAgc3RhdHVzID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmlu
Zy0+UmVhZC5Dc3EsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXJwLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFBWT0lEKUZBTFNFKTsNCj4gKyAgICAgICAgYnJlYWs7
DQo+ICsNCj4gKyAgICBjYXNlIElSUF9NSl9XUklURToNCj4gKyAgICAgICAgc3RhdHVzID0gSW9D
c3FJbnNlcnRJcnBFeCgmUmluZy0+V3JpdGUuQ3NxLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElycCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQVk9JRClGQUxTRSk7
DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgQVNT
RVJUKEZBTFNFKTsNCj4gKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7IC8v
IEtlZXAgU0RWIGhhcHB5DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgICBpZiAo
c3RhdHVzICE9IFNUQVRVU19QRU5ESU5HKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArDQo+
ICsgICAgS2VJbnNlcnRRdWV1ZURwYygmUmluZy0+RHBjLCBOVUxMLCBOVUxMKTsNCj4gKyAgICBy
ZXR1cm4gU1RBVFVTX1BFTkRJTkc7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJmYWls
MSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgVUxPTkcNCj4gK1JpbmdDb3B5RnJvbVJlYWQoDQo+ICsgICAgSU4gIFBY
RU5DT05TX1JJTkcgICAgICAgICAgIFJpbmcsDQo+ICsgICAgSU4gIFBDSEFSICAgICAgICAgICAg
ICAgICAgIERhdGEsDQo+ICsgICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0aA0K
PiArICAgICkNCj4gK3sNCj4gKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgICAgKlNoYXJl
ZDsNCj4gKyAgICBYRU5DT05TX1JJTkdfSURYICAgICAgICAgICAgY29uczsNCj4gKyAgICBYRU5D
T05TX1JJTkdfSURYICAgICAgICAgICAgcHJvZDsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAg
ICAgICAgICAgT2Zmc2V0Ow0KPiArDQo+ICsgICAgU2hhcmVkID0gUmluZy0+U2hhcmVkOw0KPiAr
DQo+ICsgICAgS2VNZW1vcnlCYXJyaWVyKCk7DQo+ICsNCj4gKyAgICBjb25zID0gU2hhcmVkLT5p
bl9jb25zOw0KPiArICAgIHByb2QgPSBTaGFyZWQtPmluX3Byb2Q7DQo+ICsNCj4gKyAgICBLZU1l
bW9yeUJhcnJpZXIoKTsNCj4gKw0KPiArICAgIE9mZnNldCA9IDA7DQo+ICsgICAgd2hpbGUgKExl
bmd0aCAhPSAwKSB7DQo+ICsgICAgICAgIFVMT05HICAgQXZhaWxhYmxlOw0KPiArICAgICAgICBV
TE9ORyAgIEluZGV4Ow0KPiArICAgICAgICBVTE9ORyAgIENvcHlMZW5ndGg7DQo+ICsNCj4gKyAg
ICAgICAgQXZhaWxhYmxlID0gcHJvZCAtIGNvbnM7DQo+ICsNCj4gKyAgICAgICAgaWYgKEF2YWls
YWJsZSA9PSAwKQ0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgSW5kZXgg
PSBNQVNLX1hFTkNPTlNfSURYKGNvbnMsIFNoYXJlZC0+aW4pOw0KPiArDQo+ICsgICAgICAgIENv
cHlMZW5ndGggPSBfX21pbihMZW5ndGgsIEF2YWlsYWJsZSk7DQo+ICsgICAgICAgIENvcHlMZW5n
dGggPSBfX21pbihDb3B5TGVuZ3RoLCBzaXplb2YoU2hhcmVkLT5pbikgLSBJbmRleCk7DQo+ICsN
Cj4gKyAgICAgICAgUnRsQ29weU1lbW9yeShEYXRhICsgT2Zmc2V0LCAmU2hhcmVkLT5pbltJbmRl
eF0sIENvcHlMZW5ndGgpOw0KPiArDQo+ICsgICAgICAgIE9mZnNldCArPSBDb3B5TGVuZ3RoOw0K
PiArICAgICAgICBMZW5ndGggLT0gQ29weUxlbmd0aDsNCj4gKw0KPiArICAgICAgICBjb25zICs9
IENvcHlMZW5ndGg7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgS2VNZW1vcnlCYXJyaWVyKCk7DQo+
ICsNCj4gKyAgICBTaGFyZWQtPmluX2NvbnMgPSBjb25zOw0KPiArDQo+ICsgICAgS2VNZW1vcnlC
YXJyaWVyKCk7DQo+ICsNCj4gKyAgICByZXR1cm4gT2Zmc2V0Ow0KPiArfQ0KPiArDQo+ICtzdGF0
aWMgVUxPTkcNCj4gK1JpbmdDb3B5VG9Xcml0ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAg
ICAgICAgICAgUmluZywNCj4gKyAgICBJTiAgUENIQVIgICAgICAgICAgICAgICAgICAgRGF0YSwN
Cj4gKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgTGVuZ3RoDQo+ICsgICAgKQ0KPiAr
ew0KPiArICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAgICAqU2hhcmVkOw0KPiArICAgIFhF
TkNPTlNfUklOR19JRFggICAgICAgICAgICBjb25zOw0KPiArICAgIFhFTkNPTlNfUklOR19JRFgg
ICAgICAgICAgICBwcm9kOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBPZmZz
ZXQ7DQo+ICsNCj4gKyAgICBTaGFyZWQgPSBSaW5nLT5TaGFyZWQ7DQo+ICsNCj4gKyAgICBLZU1l
bW9yeUJhcnJpZXIoKTsNCj4gKw0KPiArICAgIHByb2QgPSBTaGFyZWQtPm91dF9wcm9kOw0KPiAr
ICAgIGNvbnMgPSBTaGFyZWQtPm91dF9jb25zOw0KPiArDQo+ICsgICAgS2VNZW1vcnlCYXJyaWVy
KCk7DQo+ICsNCj4gKyAgICBPZmZzZXQgPSAwOw0KPiArICAgIHdoaWxlIChMZW5ndGggIT0gMCkg
ew0KPiArICAgICAgICBVTE9ORyAgIEF2YWlsYWJsZTsNCj4gKyAgICAgICAgVUxPTkcgICBJbmRl
eDsNCj4gKyAgICAgICAgVUxPTkcgICBDb3B5TGVuZ3RoOw0KPiArDQo+ICsgICAgICAgIEF2YWls
YWJsZSA9IGNvbnMgKyBzaXplb2YoU2hhcmVkLT5vdXQpIC0gcHJvZDsNCj4gKw0KPiArICAgICAg
ICBpZiAoQXZhaWxhYmxlID09IDApDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
ICAgICBJbmRleCA9IE1BU0tfWEVOQ09OU19JRFgocHJvZCwgU2hhcmVkLT5vdXQpOw0KPiArDQo+
ICsgICAgICAgIENvcHlMZW5ndGggPSBfX21pbihMZW5ndGgsIEF2YWlsYWJsZSk7DQo+ICsgICAg
ICAgIENvcHlMZW5ndGggPSBfX21pbihDb3B5TGVuZ3RoLCBzaXplb2YoU2hhcmVkLT5vdXQpIC0g
SW5kZXgpOw0KPiArDQo+ICsgICAgICAgIFJ0bENvcHlNZW1vcnkoJlNoYXJlZC0+b3V0W0luZGV4
XSwgRGF0YSArIE9mZnNldCwgQ29weUxlbmd0aCk7DQo+ICsNCj4gKyAgICAgICAgT2Zmc2V0ICs9
IENvcHlMZW5ndGg7DQo+ICsgICAgICAgIExlbmd0aCAtPSBDb3B5TGVuZ3RoOw0KPiArDQo+ICsg
ICAgICAgIHByb2QgKz0gQ29weUxlbmd0aDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBLZU1lbW9y
eUJhcnJpZXIoKTsNCj4gKw0KPiArICAgIFNoYXJlZC0+b3V0X3Byb2QgPSBwcm9kOw0KPiArDQo+
ICsgICAgS2VNZW1vcnlCYXJyaWVyKCk7DQo+ICsNCj4gKyAgICByZXR1cm4gT2Zmc2V0Ow0KPiAr
fQ0KPiArDQo+ICtzdGF0aWMgQk9PTEVBTg0KPiArUmluZ1BvbGwoDQo+ICsgICAgSU4gIFBYRU5D
T05TX1JJTkcgICBSaW5nDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJUlAgICAgICAgICAgICAg
ICAgSXJwOw0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAg
ICBVTE9ORyAgICAgICAgICAgICAgIExlbmd0aDsNCj4gKyAgICBQQ0hBUiAgICAgICAgICAgICAg
IEJ1ZmZlcjsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAg
IGZvciAoOzspIHsNCj4gKyAgICAgICAgVUxPTkcgICAgICAgICAgIFJlYWQ7DQo+ICsNCj4gKyAg
ICAgICAgSXJwID0gSW9Dc3FSZW1vdmVOZXh0SXJwKCZSaW5nLT5SZWFkLkNzcSwgTlVMTCk7DQo+
ICsgICAgICAgIGlmIChJcnAgPT0gTlVMTCkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+
ICsgICAgICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKEly
cCk7DQo+ICsgICAgICAgIEFTU0VSVChTdGFja0xvY2F0aW9uLT5NYWpvckZ1bmN0aW9uID09IElS
UF9NSl9SRUFEKTsNCj4gKw0KPiArICAgICAgICBMZW5ndGggPSBTdGFja0xvY2F0aW9uLT5QYXJh
bWV0ZXJzLlJlYWQuTGVuZ3RoOw0KPiArICAgICAgICBCdWZmZXIgPSBJcnAtPkFzc29jaWF0ZWRJ
cnAuU3lzdGVtQnVmZmVyOw0KPiArDQo+ICsgICAgICAgIFJlYWQgPSBSaW5nQ29weUZyb21SZWFk
KFJpbmcsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKTsNCj4gKyAgICAgICAgaWYgKFJl
YWQgPT0gMCkgew0KPiArICAgICAgICAgICAgc3RhdHVzID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmlu
Zy0+UmVhZC5Dc3EsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEly
cCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBWT0lEKVRSVUUpOw0KPiArICAg
ICAgICAgICAgQVNTRVJUKHN0YXR1cyA9PSBTVEFUVVNfUEVORElORyk7DQo+ICsgICAgICAgICAg
ICBicmVhazsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIFJpbmctPkJ5dGVzUmVhZCAr
PSBSZWFkOw0KPiArDQo+ICsgICAgICAgIElycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSBSZWFk
Ow0KPiArICAgICAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiAr
DQo+ICsgICAgICAgIFRyYWNlKCJDT01QTEVURSAoUkVBRCkgKCV1IGJ5dGVzKVxuIiwNCj4gKyAg
ICAgICAgICAgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7DQo+ICsNCj4gKyAgICAgICAg
SW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiArICAgIH0NCj4gKw0K
PiArICAgIGZvciAoOzspIHsNCj4gKyAgICAgICAgVUxPTkcgICAgICAgICAgIFdyaXR0ZW47DQo+
ICsNCj4gKyAgICAgICAgSXJwID0gSW9Dc3FSZW1vdmVOZXh0SXJwKCZSaW5nLT5Xcml0ZS5Dc3Es
IE5VTEwpOw0KPiArICAgICAgICBpZiAoSXJwID09IE5VTEwpDQo+ICsgICAgICAgICAgICBicmVh
azsNCj4gKw0KPiArICAgICAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tM
b2NhdGlvbihJcnApOw0KPiArICAgICAgICBBU1NFUlQoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5j
dGlvbiA9PSBJUlBfTUpfV1JJVEUpOw0KPiArDQo+ICsgICAgICAgIExlbmd0aCA9IFN0YWNrTG9j
YXRpb24tPlBhcmFtZXRlcnMuV3JpdGUuTGVuZ3RoOw0KPiArICAgICAgICBCdWZmZXIgPSBJcnAt
PkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOw0KPiArDQo+ICsgICAgICAgIFdyaXR0ZW4gPSBS
aW5nQ29weVRvV3JpdGUoUmluZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKTsN
Cj4gKyAgICAgICAgaWYgKFdyaXR0ZW4gPT0gMCkgew0KPiArICAgICAgICAgICAgc3RhdHVzID0g
SW9Dc3FJbnNlcnRJcnBFeCgmUmluZy0+V3JpdGUuQ3NxLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJcnAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChQVk9JRClUUlVFKTsNCj4gKyAgICAgICAgICAgIEFTU0VSVChzdGF0dXMgPT0gU1RBVFVTX1BF
TkRJTkcpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAg
ICAgICBSaW5nLT5CeXRlc1dyaXR0ZW4gKz0gV3JpdHRlbjsNCj4gKw0KPiArICAgICAgICBJcnAt
PklvU3RhdHVzLkluZm9ybWF0aW9uID0gV3JpdHRlbjsNCj4gKyAgICAgICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgICAgICBUcmFjZSgiQ09NUExF
VEUgKFdSSVRFKSAoJXUgYnl0ZXMpXG4iLA0KPiArICAgICAgICAgICAgICBJcnAtPklvU3RhdHVz
LkluZm9ybWF0aW9uKTsNCj4gKw0KPiArICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiAr
fQ0KPiArDQo+ICtfX2Rydl9mdW5jdGlvbkNsYXNzKEtERUZFUlJFRF9ST1VUSU5FKQ0KPiArX19k
cnZfbWF4SVJRTChESVNQQVRDSF9MRVZFTCkNCj4gK19fZHJ2X21pbklSUUwoUEFTU0lWRV9MRVZF
TCkNCj4gK19fZHJ2X3NhbWVJUlFMDQo+ICtzdGF0aWMgVk9JRA0KPiArUmluZ0RwYygNCj4gKyAg
ICBJTiAgUEtEUEMgICAgICAgICAgICAgICBEcGMsDQo+ICsgICAgSU4gIFBWT0lEICAgICAgICAg
ICAgICAgQ29udGV4dCwNCj4gKyAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICBBcmd1bWVudDEs
DQo+ICsgICAgSU4gIFBWT0lEICAgICAgICAgICAgICAgQXJndW1lbnQyDQo+ICsgICAgKQ0KPiAr
ew0KPiArICAgIFBYRU5DT05TX1JJTkcgICAgICAgUmluZyA9IENvbnRleHQ7DQo+ICsNCj4gKyAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERwYyk7DQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFN
RVRFUihBcmd1bWVudDEpOw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQXJndW1lbnQy
KTsNCj4gKw0KPiArICAgIEFTU0VSVChSaW5nICE9IE5VTEwpOw0KPiArDQo+ICsgICAgZm9yICg7
Oykgew0KPiArICAgICAgICBCT09MRUFOIEVuYWJsZWQ7DQo+ICsgICAgICAgIEJPT0xFQU4gUmV0
cnk7DQo+ICsgICAgICAgIEtJUlFMICAgSXJxbDsNCj4gKw0KPiArICAgICAgICBLZUFjcXVpcmVT
cGluTG9jaygmUmluZy0+TG9jaywgJklycWwpOw0KPiArICAgICAgICBFbmFibGVkID0gUmluZy0+
RW5hYmxlZDsNCj4gKyAgICAgICAgS2VSZWxlYXNlU3BpbkxvY2soJlJpbmctPkxvY2ssIElycWwp
Ow0KPiArDQo+ICsgICAgICAgIGlmICghRW5hYmxlZCkNCj4gKyAgICAgICAgICAgIGJyZWFrOw0K
PiArDQo+ICsgICAgICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7DQo+ICsg
ICAgICAgIFJldHJ5ID0gUmluZ1BvbGwoUmluZyk7DQo+ICsgICAgICAgIEtlTG93ZXJJcnFsKEly
cWwpOw0KPiArDQo+ICsgICAgICAgIGlmICghUmV0cnkpDQo+ICsgICAgICAgICAgICBicmVhazsN
Cj4gKyAgICB9DQo+ICsNCj4gKyAgICAoVk9JRCkgWEVOQlVTX0VWVENITihVbm1hc2ssDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsNCj4gK30N
Cj4gKw0KPiArS1NFUlZJQ0VfUk9VVElORSAgICBSaW5nRXZ0Y2huQ2FsbGJhY2s7DQo+ICsNCj4g
K0JPT0xFQU4NCj4gK1JpbmdFdnRjaG5DYWxsYmFjaygNCj4gKyAgICBJTiAgUEtJTlRFUlJVUFQg
SW50ZXJydXB0T2JqZWN0LA0KPiArICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudA0KPiArICAg
ICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19SSU5HICAgUmluZyA9IEFyZ3VtZW50Ow0KPiArDQo+
ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihJbnRlcnJ1cHRPYmplY3QpOw0KPiArDQo+ICsg
ICAgQVNTRVJUKFJpbmcgIT0gTlVMTCk7DQo+ICsNCj4gKyAgICBSaW5nLT5FdmVudHMrKzsNCj4g
Kw0KPiArICAgIGlmIChLZUluc2VydFF1ZXVlRHBjKCZSaW5nLT5EcGMsIE5VTEwsIE5VTEwpKQ0K
PiArICAgICAgICBSaW5nLT5EcGNzKys7DQo+ICsNCj4gKyAgICByZXR1cm4gVFJVRTsNCj4gK30N
Cj4gKw0KPiArc3RhdGljIFZPSUQNCj4gK1JpbmdEZWJ1Z0NhbGxiYWNrKA0KPiArICAgIElOICBQ
Vk9JRCAgICAgICBBcmd1bWVudCwNCj4gKyAgICBJTiAgQk9PTEVBTiAgICAgQ3Jhc2hpbmcNCj4g
KyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfUklORyAgIFJpbmcgPSBBcmd1bWVudDsNCj4g
Kw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3Jhc2hpbmcpOw0KPiArDQo+ICsgICAg
WEVOQlVTX0RFQlVHKFByaW50ZiwNCj4gKyAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50
ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAiMHglcCBbJXNdXG4iLA0KPiArICAgICAgICAg
ICAgICAgICBSaW5nLA0KPiArICAgICAgICAgICAgICAgICAoUmluZy0+RW5hYmxlZCkgPyAiRU5B
QkxFRCIgOiAiRElTQUJMRUQiKTsNCj4gKw0KPiArICAgIC8vIER1bXAgc2hhcmVkIHJpbmcNCj4g
KyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLA0KPiArICAgICAgICAgICAgICAgICAmUmluZy0+RGVi
dWdJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICJTSEFSRUQ6IGluX2NvbnMgPSAldSBp
bl9wcm9kID0gJXUgb3V0X2NvbnMgPSAldSBvdXRfcHJvZCA9DQo+ICV1XG4iLA0KPiArICAgICAg
ICAgICAgICAgICBSaW5nLT5TaGFyZWQtPmluX2NvbnMsDQo+ICsgICAgICAgICAgICAgICAgIFJp
bmctPlNoYXJlZC0+aW5fcHJvZCwNCj4gKyAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkLT5v
dXRfY29ucywNCj4gKyAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkLT5vdXRfcHJvZCk7DQo+
ICsNCj4gKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLA0KPiArICAgICAgICAgICAgICAgICAmUmlu
Zy0+RGVidWdJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICJCWVRFUzogcmVhZCA9ICV1
IHdyaXR0ZW4gPSAldVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgUmluZy0+Qnl0ZXNSZWFkLA0K
PiArICAgICAgICAgICAgICAgICBSaW5nLT5CeXRlc1dyaXR0ZW4pOw0KPiArfQ0KPiArDQo+ICtO
VFNUQVRVUw0KPiArUmluZ0VuYWJsZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcN
Cj4gKyAgICApDQo+ICt7DQo+ICsgICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gKw0KPiArICAgIEtl
QWNxdWlyZVNwaW5Mb2NrQXREcGNMZXZlbCgmUmluZy0+TG9jayk7DQo+ICsgICAgUmluZy0+RW5h
YmxlZCA9IFRSVUU7DQo+ICsgICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBjTGV2ZWwoJlJpbmct
PkxvY2spOw0KPiArDQo+ICsgICAgKFZPSUQpS2VJbnNlcnRRdWV1ZURwYygmUmluZy0+RHBjLCBO
VUxMLCBOVUxMKTsNCj4gKw0KPiArICAgIFRyYWNlKCI8PT09PVxuIik7DQo+ICsNCj4gKyAgICBy
ZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK1JpbmdEaXNhYmxl
KA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZw0KPiArICAgICkNCj4gK3sNCj4gKyAg
ICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+ICsgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJx
bCgpLCA9PSAsIERJU1BBVENIX0xFVkVMKTsNCj4gKw0KPiArICAgIEtlQWNxdWlyZVNwaW5Mb2Nr
QXREcGNMZXZlbCgmUmluZy0+TG9jayk7DQo+ICsgICAgUmluZy0+RW5hYmxlZCA9IEZBTFNFOw0K
PiArICAgIEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZSaW5nLT5Mb2NrKTsNCj4gKw0K
PiArICAgIFRyYWNlKCI8PT09PVxuIik7DQo+ICt9DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtSaW5n
Q29ubmVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcNCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgQ0hBUiAgICAgICAgICAgICAgICBOYW1lW01BWE5BTUVMRU5dOw0KPiArICAgIE5U
U1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+XG4iKTsN
Cj4gKw0KPiArICAgIEFTU0VSVCghUmluZy0+Q29ubmVjdGVkKTsNCj4gKw0KPiArICAgIHN0YXR1
cyA9IFhFTkJVU19ERUJVRyhBY3F1aXJlLCAmUmluZy0+RGVidWdJbnRlcmZhY2UpOw0KPiArICAg
IGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArDQo+
ICsgICAgc3RhdHVzID0gWEVOQlVTX0VWVENITihBY3F1aXJlLCAmUmluZy0+RXZ0Y2huSW50ZXJm
YWNlKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBm
YWlsMjsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19HTlRUQUIoQWNxdWlyZSwgJlJpbmct
PkdudHRhYkludGVyZmFjZSk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsg
ICAgICAgIGdvdG8gZmFpbDM7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoQWNx
dWlyZSwgJlJpbmctPlN0b3JlSW50ZXJmYWNlKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3Rh
dHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsNDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFJ0bFN0
cmluZ0NiUHJpbnRmQShOYW1lLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoTmFtZSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zb2xl
XyVzX2dudHRhYiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBkb0dldE5h
bWUoRnJvbnRlbmRHZXRQZG8oUmluZy0+RnJvbnRlbmQpKSk7DQo+ICsgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDU7DQo+ICsNCj4gKyAgICBzdGF0dXMg
PSBYRU5CVVNfR05UVEFCKENyZWF0ZUNhY2hlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJlJpbmctPkdudHRhYkludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5hbWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmluZ0FjcXVpcmVMb2NrLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmluZ1JlbGVhc2VMb2NrLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlu
ZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5HbnR0YWJDYWNoZSk7DQo+
ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDY7DQo+
ICsNCj4gKyAgICBSaW5nLT5NZGwgPSBfX0FsbG9jYXRlUGFnZSgpOw0KPiArDQo+ICsgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBpZiAoUmluZy0+TWRsID09IE5VTEwpDQo+
ICsgICAgICAgIGdvdG8gZmFpbDc7DQo+ICsNCj4gKyAgICBBU1NFUlQoUmluZy0+TWRsLT5NZGxG
bGFncyAmIE1ETF9NQVBQRURfVE9fU1lTVEVNX1ZBKTsNCj4gKyAgICBSaW5nLT5TaGFyZWQgPSBS
aW5nLT5NZGwtPk1hcHBlZFN5c3RlbVZhOw0KPiArICAgIEFTU0VSVChSaW5nLT5TaGFyZWQgIT0g
TlVMTCk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBYRU5CVVNfR05UVEFCKFBlcm1pdEZvcmVpZ25B
Y2Nlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+R250dGFiSW50ZXJm
YWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+R250dGFiQ2FjaGUsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKFJpbmctPkZyb250ZW5kKSwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1tR2V0TWRsUGZuQXJyYXkoUmluZy0+TWRsKVswXSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJlJpbmctPkVudHJ5KTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkNCj4gKyAgICAgICAgZ290byBmYWlsODsNCj4gKw0KPiArICAgIFJpbmctPkNoYW5uZWwgPSBY
RU5CVVNfRVZUQ0hOKE9wZW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlJpbmctPkV2dGNobkludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBYRU5CVVNfRVZUQ0hOX1RZUEVfVU5CT1VORCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSaW5nRXZ0Y2huQ2FsbGJhY2ssDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmluZywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcm9udGVuZEdldEJhY2tlbmREb21haW4oUmluZy0+RnJvbnRlbmQpLA0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOw0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RB
VFVTX1VOU1VDQ0VTU0ZVTDsNCj4gKyAgICBpZiAoUmluZy0+Q2hhbm5lbCA9PSBOVUxMKQ0KPiAr
ICAgICAgICBnb3RvIGZhaWw5Ow0KPiArDQo+ICsgICAgKFZPSUQpWEVOQlVTX0VWVENITihVbm1h
c2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLA0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7DQo+
ICsNCj4gKyAgICBzdGF0dXMgPSBYRU5CVVNfREVCVUcoUmVnaXN0ZXIsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19NT0RVTEVfXyAifFBPTExFUiIsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJpbmdEZWJ1Z0NhbGxiYWNrLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBS
aW5nLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdDYWxsYmFjayk7
DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDEw
Ow0KPiArDQo+ICsgICAgUmluZy0+Q29ubmVjdGVkID0gVFJVRTsNCj4gKw0KPiArICAgIFRyYWNl
KCI8PT09PVxuIik7DQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWls
MTA6DQo+ICsgICAgRXJyb3IoImZhaWwxMFxuIik7DQo+ICsNCj4gKyAgICBSaW5nLT5FdmVudHMg
PSAwOw0KPiArDQo+ICsgICAgWEVOQlVTX0VWVENITihDbG9zZSwNCj4gKyAgICAgICAgICAgICAg
ICAgICZSaW5nLT5FdnRjaG5JbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICBSaW5nLT5D
aGFubmVsKTsNCj4gKyAgICBSaW5nLT5DaGFubmVsID0gTlVMTDsNCj4gKw0KPiArZmFpbDk6DQo+
ICsgICAgRXJyb3IoImZhaWw5XG4iKTsNCj4gKw0KPiArICAgIChWT0lEKVhFTkJVU19HTlRUQUIo
UmV2b2tlRm9yZWlnbkFjY2VzcywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5H
bnR0YWJJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5HbnR0YWJD
YWNoZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICBSaW5nLT5FbnRyeSk7DQo+ICsgICAgUmluZy0+RW50cnkgPSBOVUxMOw0KPiAr
DQo+ICtmYWlsODoNCj4gKyAgICBFcnJvcigiZmFpbDhcbiIpOw0KPiArDQo+ICsgICAgUnRsWmVy
b01lbW9yeShSaW5nLT5TaGFyZWQsIFBBR0VfU0laRSk7DQo+ICsNCj4gKyAgICBSaW5nLT5TaGFy
ZWQgPSBOVUxMOw0KPiArICAgIF9fRnJlZVBhZ2UoUmluZy0+TWRsKTsNCj4gKyAgICBSaW5nLT5N
ZGwgPSBOVUxMOw0KPiArDQo+ICtmYWlsNzoNCj4gKyAgICBFcnJvcigiZmFpbDdcbiIpOw0KPiAr
DQo+ICsgICAgWEVOQlVTX0dOVFRBQihEZXN0cm95Q2FjaGUsDQo+ICsgICAgICAgICAgICAgICAg
ICAmUmluZy0+R250dGFiSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgUmluZy0+R250
dGFiQ2FjaGUpOw0KPiArICAgIFJpbmctPkdudHRhYkNhY2hlID0gTlVMTDsNCj4gKw0KPiArZmFp
bDY6DQo+ICsgICAgRXJyb3IoImZhaWw2XG4iKTsNCj4gKw0KPiArZmFpbDU6DQo+ICsgICAgRXJy
b3IoImZhaWw1XG4iKTsNCj4gKw0KPiArICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmUmluZy0+
U3RvcmVJbnRlcmZhY2UpOw0KPiArDQo+ICtmYWlsNDoNCj4gKyAgICBFcnJvcigiZmFpbDRcbiIp
Ow0KPiArDQo+ICsgICAgWEVOQlVTX0dOVFRBQihSZWxlYXNlLCAmUmluZy0+R250dGFiSW50ZXJm
YWNlKTsNCj4gKw0KPiArZmFpbDM6DQo+ICsgICAgRXJyb3IoImZhaWwzXG4iKTsNCj4gKw0KPiAr
ICAgIFhFTkJVU19FVlRDSE4oUmVsZWFzZSwgJlJpbmctPkV2dGNobkludGVyZmFjZSk7DQo+ICsN
Cj4gK2ZhaWwyOg0KPiArICAgIEVycm9yKCJmYWlsMlxuIik7DQo+ICsNCj4gKyAgICBYRU5CVVNf
REVCVUcoUmVsZWFzZSwgJlJpbmctPkRlYnVnSW50ZXJmYWNlKTsNCj4gKw0KPiArZmFpbDE6DQo+
ICsgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIHJldHVy
biBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtSaW5nU3RvcmVXcml0ZSgNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcsDQo+ICsgICAgSU4gIFBWT0lEICAgICAgICAg
ICBUcmFuc2FjdGlvbg0KPiArICAgICkNCj4gK3sNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAg
IFBvcnQ7DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICBHcmFudFJlZjsNCj4gKyAgICBOVFNU
QVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFBvcnQgPSBYRU5CVVNfRVZUQ0hO
KEdldFBvcnQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkV2dGNobkludGVy
ZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5DaGFubmVsKTsNCj4gKw0K
PiArICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsDQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICZSaW5nLT5TdG9yZUludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHJhbnNhY3Rpb24sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5k
R2V0UGF0aChSaW5nLT5Gcm9udGVuZCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICJw
b3J0IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgUG9ydCk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+
ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBHcmFudFJlZiA9IFhFTkJVU19HTlRU
QUIoR2V0UmVmZXJlbmNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+
R250dGFiSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5F
bnRyeSk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoUHJpbnRmLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+U3RvcmVJbnRlcmZhY2UsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9uLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcm9udGVuZEdldFBhdGgoUmluZy0+RnJvbnRlbmQpLA0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAicmluZy1yZWYiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUi
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFudFJlZik7DQo+ICsgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDI7DQo+ICsNCj4gKyAgICBy
ZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIEVycm9yKCJmYWls
MlxuIik7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+
ICtSaW5nRGlzY29ubmVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcNCj4gKyAg
ICApDQo+ICt7DQo+ICsgICAgVHJhY2UoIj09PT0+XG4iKTsNCj4gKw0KPiArICAgIEFTU0VSVChS
aW5nLT5Db25uZWN0ZWQpOw0KPiArICAgIFJpbmctPkNvbm5lY3RlZCA9IEZBTFNFOw0KPiArDQo+
ICsgICAgWEVOQlVTX0RFQlVHKERlcmVnaXN0ZXIsDQo+ICsgICAgICAgICAgICAgICAgICZSaW5n
LT5EZWJ1Z0ludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgUmluZy0+RGVidWdDYWxsYmFj
ayk7DQo+ICsgICAgUmluZy0+RGVidWdDYWxsYmFjayA9IE5VTEw7DQo+ICsNCj4gKyAgICBSaW5n
LT5EcGNzID0gMDsNCj4gKyAgICBSaW5nLT5FdmVudHMgPSAwOw0KPiArICAgIFJpbmctPkJ5dGVz
UmVhZCA9IDA7DQo+ICsgICAgUmluZy0+Qnl0ZXNXcml0dGVuID0gMDsNCj4gKw0KPiArICAgIFhF
TkJVU19FVlRDSE4oQ2xvc2UsDQo+ICsgICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50
ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCk7DQo+ICsgICAgUmlu
Zy0+Q2hhbm5lbCA9IE5VTEw7DQo+ICsNCj4gKyAgICAoVk9JRClYRU5CVVNfR05UVEFCKFJldm9r
ZUZvcmVpZ25BY2Nlc3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+R250dGFi
SW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+R250dGFiQ2FjaGUs
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgUmluZy0+RW50cnkpOw0KPiArICAgIFJpbmctPkVudHJ5ID0gTlVMTDsNCj4gKw0KPiAr
ICAgIFJ0bFplcm9NZW1vcnkoUmluZy0+U2hhcmVkLCBQQUdFX1NJWkUpOw0KPiArDQo+ICsgICAg
UmluZy0+U2hhcmVkID0gTlVMTDsNCj4gKyAgICBfX0ZyZWVQYWdlKFJpbmctPk1kbCk7DQo+ICsg
ICAgUmluZy0+TWRsID0gTlVMTDsNCj4gKw0KPiArICAgIFhFTkJVU19HTlRUQUIoRGVzdHJveUNh
Y2hlLA0KPiArICAgICAgICAgICAgICAgICAgJlJpbmctPkdudHRhYkludGVyZmFjZSwNCj4gKyAg
ICAgICAgICAgICAgICAgIFJpbmctPkdudHRhYkNhY2hlKTsNCj4gKyAgICBSaW5nLT5HbnR0YWJD
YWNoZSA9IE5VTEw7DQo+ICsNCj4gKyAgICBYRU5CVVNfU1RPUkUoUmVsZWFzZSwgJlJpbmctPlN0
b3JlSW50ZXJmYWNlKTsNCj4gKw0KPiArICAgIFhFTkJVU19HTlRUQUIoUmVsZWFzZSwgJlJpbmct
PkdudHRhYkludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBYRU5CVVNfRVZUQ0hOKFJlbGVhc2UsICZS
aW5nLT5FdnRjaG5JbnRlcmZhY2UpOw0KPiArDQo+ICsgICAgWEVOQlVTX0RFQlVHKFJlbGVhc2Us
ICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1cbiIpOw0K
PiArfQ0KPiArDQo+ICtOVFNUQVRVUw0KPiArUmluZ0NyZWF0ZSgNCj4gKyAgICBJTiAgUFhFTkNP
TlNfRlJPTlRFTkQgICBGcm9udGVuZCwNCj4gKyAgICBPVVQgUFhFTkNPTlNfUklORyAgICAgICAq
UmluZw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0
dXM7DQo+ICsNCj4gKyAgICAqUmluZyA9IF9fUmluZ0FsbG9jYXRlKHNpemVvZihYRU5DT05TX1JJ
TkcpKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7DQo+ICsgICAgaWYg
KCpSaW5nID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICAoKlJp
bmcpLT5Gcm9udGVuZCA9IEZyb250ZW5kOw0KPiArDQo+ICsgICAgRmRvR2V0RGVidWdJbnRlcmZh
Y2UoUGRvR2V0RmRvKEZyb250ZW5kR2V0UGRvKEZyb250ZW5kKSksDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgJigqUmluZyktPkRlYnVnSW50ZXJmYWNlKTsNCj4gKw0KPiArICAgIEZkb0dl
dEV2dGNobkludGVyZmFjZShQZG9HZXRGZG8oRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKSwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJigqUmluZyktPkV2dGNobkludGVyZmFjZSk7DQo+
ICsNCj4gKyAgICBGZG9HZXRHbnR0YWJJbnRlcmZhY2UoUGRvR2V0RmRvKEZyb250ZW5kR2V0UGRv
KEZyb250ZW5kKSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJigqUmluZyktPkdudHRh
YkludGVyZmFjZSk7DQo+ICsNCj4gKyAgICBGZG9HZXRTdG9yZUludGVyZmFjZShQZG9HZXRGZG8o
RnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAm
KCpSaW5nKS0+U3RvcmVJbnRlcmZhY2UpOw0KPiArDQo+ICsgICAgS2VJbml0aWFsaXplU3Bpbkxv
Y2soJigqUmluZyktPkxvY2spOw0KPiArDQo+ICsgICAgS2VJbml0aWFsaXplVGhyZWFkZWREcGMo
JigqUmluZyktPkRwYywgUmluZ0RwYywgKlJpbmcpOw0KPiArDQo+ICsgICAgS2VJbml0aWFsaXpl
U3BpbkxvY2soJigqUmluZyktPlJlYWQuTG9jayk7DQo+ICsgICAgSW5pdGlhbGl6ZUxpc3RIZWFk
KCYoKlJpbmcpLT5SZWFkLkxpc3QpOw0KPiArDQo+ICsgICAgc3RhdHVzID0gSW9Dc3FJbml0aWFs
aXplRXgoJigqUmluZyktPlJlYWQuQ3NxLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJpbmdDc3FJbnNlcnRJcnBFeCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSaW5nQ3NxUmVtb3ZlSXJwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJp
bmdDc3FQZWVrTmV4dElycCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5n
Q3NxQWNxdWlyZUxvY2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0Nz
cVJlbGVhc2VMb2NrLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdDc3FD
b21wbGV0ZUNhbmNlbGVkSXJwKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4g
KyAgICAgICAgZ290byBmYWlsMjsNCj4gKw0KPiArICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCYo
KlJpbmcpLT5Xcml0ZS5Mb2NrKTsNCj4gKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJigqUmluZykt
PldyaXRlLkxpc3QpOw0KPiArDQo+ICsgICAgc3RhdHVzID0gSW9Dc3FJbml0aWFsaXplRXgoJigq
UmluZyktPldyaXRlLkNzcSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5n
Q3NxSW5zZXJ0SXJwRXgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0Nz
cVJlbW92ZUlycCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxUGVl
a05leHRJcnAsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0NzcUFjcXVp
cmVMb2NrLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdDc3FSZWxlYXNl
TG9jaywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxQ29tcGxldGVD
YW5jZWxlZElycCk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAg
IGdvdG8gZmFpbDM7DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4g
K2ZhaWwzOg0KPiArICAgIEVycm9yKCJmYWlsM1xuIik7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVt
b3J5KCYoKlJpbmcpLT5Xcml0ZS5MaXN0LCBzaXplb2YoTElTVF9FTlRSWSkpOw0KPiArICAgIFJ0
bFplcm9NZW1vcnkoJigqUmluZyktPldyaXRlLkxvY2ssIHNpemVvZihLU1BJTl9MT0NLKSk7DQo+
ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCYoKlJpbmcpLT5SZWFkLkNzcSwgc2l6ZW9mKElPX0NT
USkpOw0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICsg
ICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+UmVhZC5MaXN0LCBzaXplb2YoTElTVF9FTlRSWSkp
Ow0KPiArICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPlJlYWQuTG9jaywgc2l6ZW9mKEtTUElO
X0xPQ0spKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwg
c3RhdHVzKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK1ZPSUQN
Cj4gK1JpbmdEZXN0cm95KA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZw0KPiArICAg
ICkNCj4gK3sNCj4gKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09ICwgUEFTU0lW
RV9MRVZFTCk7DQo+ICsNCj4gKyAgICAvLyBDYW5jZWwgYWxsIG91dHN0YW5kaW5nIElSUHMNCj4g
KyAgICBfX1JpbmdDYW5jZWxSZXF1ZXN0cyhSaW5nLCBOVUxMKTsNCj4gKw0KPiArICAgIEFTU0VS
VChJc0xpc3RFbXB0eSgmUmluZy0+UmVhZC5MaXN0KSk7DQo+ICsgICAgQVNTRVJUKElzTGlzdEVt
cHR5KCZSaW5nLT5Xcml0ZS5MaXN0KSk7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5n
LT5Xcml0ZS5Dc3EsIHNpemVvZihJT19DU1EpKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnko
JlJpbmctPldyaXRlLkxpc3QsIHNpemVvZihMSVNUX0VOVFJZKSk7DQo+ICsgICAgUnRsWmVyb01l
bW9yeSgmUmluZy0+V3JpdGUuTG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsNCj4gKw0KPiArICAg
IFJ0bFplcm9NZW1vcnkoJlJpbmctPlJlYWQuQ3NxLCBzaXplb2YoSU9fQ1NRKSk7DQo+ICsNCj4g
KyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5SZWFkLkxpc3QsIHNpemVvZihMSVNUX0VOVFJZKSk7
DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+UmVhZC5Mb2NrLCBzaXplb2YoS1NQSU5fTE9D
SykpOw0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+RHBjLCBzaXplb2YoS0RQQykp
Ow0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+TG9jaywgc2l6ZW9mKEtTUElOX0xP
Q0spKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPlN0b3JlSW50ZXJmYWNlLA0K
PiArICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpKTsNCj4g
Kw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkdudHRhYkludGVyZmFjZSwNCj4gKyAgICAg
ICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfR05UVEFCX0lOVEVSRkFDRSkpOw0KPiArDQo+ICsg
ICAgUnRsWmVyb01lbW9yeSgmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKFhFTkJVU19FVlRDSE5fSU5URVJGQUNFKSk7DQo+ICsNCj4gKyAgICBSdGxa
ZXJvTWVtb3J5KCZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIHNp
emVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7DQo+ICsNCj4gKyAgICBSaW5nLT5Gcm9udGVu
ZCA9IE5VTEw7DQo+ICsNCj4gKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KFJpbmcsIHNpemVvZihY
RU5DT05TX1JJTkcpKSk7DQo+ICsgICAgX19SaW5nRnJlZShSaW5nKTsNCj4gK30NCj4gZGlmZiAt
LWdpdCBhL3NyYy94ZW5jb25zL3JpbmcuaCBiL3NyYy94ZW5jb25zL3JpbmcuaA0KPiBuZXcgZmls
ZSBtb2RlIDEwMDc1NQ0KPiBpbmRleCAwMDAwMDAwLi5hY2EzMmEyDQo+IC0tLSAvZGV2L251bGwN
Cj4gKysrIGIvc3JjL3hlbmNvbnMvcmluZy5oDQo+IEBAIC0wLDAgKzEsOTYgQEANCj4gKy8qIENv
cHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLg0KPiArKiBBbGwgcmlnaHRzIHJlc2VydmVk
Lg0KPiArKg0KPiArKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLA0KPiArKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkDQo+ICsqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQo+
ICsqDQo+ICsqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlDQo+ICsqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlDQo+ICsqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyogKiAgIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4g
KyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUN
Cj4gKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlcg0KPiArKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4NCj4gKyoNCj4gKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EDQo+ICsqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQo+ICsqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQo+ICsqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLA0KPiAr
KiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IN
Cj4gKyogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
Uw0KPiArKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwNCj4gKyogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HDQo+ICsqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArKiBTVUNIIERBTUFHRS4NCj4gKyov
DQo+ICsNCj4gKyNpZm5kZWYgX1hFTkNPTlNfUklOR19IDQo+ICsjZGVmaW5lIF9YRU5DT05TX1JJ
TkdfSA0KPiArDQo+ICsjaW5jbHVkZSA8bnRkZGsuaD4NCj4gKw0KPiArI2luY2x1ZGUgImZyb250
ZW5kLmgiDQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IF9YRU5DT05TX1JJTkcgWEVOQ09OU19SSU5H
LCAqUFhFTkNPTlNfUklORzsNCj4gKw0KPiArZXh0ZXJuIE5UU1RBVFVTDQo+ICtSaW5nQ3JlYXRl
KA0KPiArICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kLA0KPiArICAgIE9VVCBQ
WEVOQ09OU19SSU5HICAgICAgICpSaW5nDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQN
Cj4gK1JpbmdEZXN0cm95KA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZw0KPiArICAg
ICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArUmluZ0Nvbm5lY3QoDQo+ICsgICAgSU4g
IFBYRU5DT05TX1JJTkcgICBSaW5nDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIE5UU1RBVFVT
DQo+ICtSaW5nU3RvcmVXcml0ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcsDQo+
ICsgICAgSU4gIFBWT0lEICAgICAgICAgICBUcmFuc2FjdGlvbg0KPiArICAgICk7DQo+ICsNCj4g
K2V4dGVybiBWT0lEDQo+ICtSaW5nRGlzY29ubmVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklO
RyAgIFJpbmcNCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4gTlRTVEFUVVMNCj4gK1JpbmdFbmFi
bGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nDQo+ICsgICAgKTsNCj4gKw0KPiAr
ZXh0ZXJuIFZPSUQNCj4gK1JpbmdEaXNhYmxlKA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAg
UmluZw0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArUmluZ09wZW4oDQo+
ICsgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nLA0KPiArICAgIElOICBQRklMRV9PQkpFQ1Qg
ICAgRmlsZU9iamVjdA0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArUmlu
Z0Nsb3NlKA0KPiArICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZywNCj4gKyAgICBJTiAgUEZJ
TEVfT0JKRUNUICAgIEZpbGVPYmplY3QNCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4gTlRTVEFU
VVMNCj4gK1JpbmdQdXRRdWV1ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcsDQo+
ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApOw0KPiArDQo+ICsjZW5kaWYg
IC8vIF9YRU5DT05TX1JJTkdfSA0KPiBkaWZmIC0tZ2l0IGEvdnMyMDE1L3hlbmNvbnMveGVuY29u
cy52Y3hwcm9qDQo+IGIvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IGluZGV4IDg4
NDZiOGUuLjQzNWVmMjEgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4
cHJvag0KPiArKysgYi92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gQEAgLTcxLDYg
KzcxLDcgQEANCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Nv
bnNvbGUuYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25z
L3N0cmVhbS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNv
bnMvZnJvbnRlbmQuYyIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94
ZW5jb25zL3JpbmcuYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94
ZW5jb25zL3RocmVhZC5jIiAvPg0KPiAgICA8L0l0ZW1Hcm91cD4NCj4gICAgPEl0ZW1Hcm91cD4N
Cj4gZGlmZiAtLWdpdCBhL3ZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0KPiBiL3ZzMjAx
Ny94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0KPiBpbmRleCA5ODExZGEwLi5kZWZiMTFlIDEwMDY0
NA0KPiAtLS0gYS92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gKysrIGIvdnMyMDE3
L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IEBAIC03OSw2ICs3OSw3IEBADQo+ICAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9jb25zb2xlLmMiIC8+DQo+ICAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9zdHJlYW0uYyIgLz4NCj4gICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Zyb250ZW5kLmMiIC8+DQo+
ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9yaW5nLmMiIC8+DQo+
ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy90aHJlYWQuYyIgLz4N
Cj4gICAgPC9JdGVtR3JvdXA+DQo+ICAgIDxJdGVtR3JvdXA+DQo+IC0tDQo+IDIuOC4zDQo+IA0K
PiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dp
bi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1w
di1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:27:55 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:27:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkj4-0004NV-Uh; Fri, 02 Mar 2018 13:27:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkj4-0004N1-Lo
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:27:54 +0000
X-Inumbo-ID: c9b35b82-1e1d-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id c9b35b82-1e1d-11e8-b9b1-635ca7ef6cff;
 Fri, 02 Mar 2018 13:29:52 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033656"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 13/14 v2] Ensure D0 <-> D3 transitions
 occur	from the correct state only.
Thread-Index: AQHTrLKxhxMXRy+YSUyGTHkAruVzg6O8+ukA
Date: Fri, 2 Mar 2018 13:27:25 +0000
Message-ID: <42c9b6e6af7c406eb4b1695a7a3b6bd0@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-14-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-14-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 13/14 v2] Ensure D0 <-> D3 transitions
 occur	from the correct state only.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDEzLzE0IHYyXSBFbnN1cmUgRDAgPC0+IEQzIHRyYW5zaXRpb25zIG9jY3VyDQo+IGZyb20g
dGhlIGNvcnJlY3Qgc3RhdGUgb25seS4NCj4gDQo+IEZyb206IE93ZW4gU21pdGggPG93ZW4uc21p
dGhAY2l0cml4LmNvbT4NCj4gDQo+IEF0dGVtcHRpbmcgdG8gc2V0IEQwIHdoZW4gYWxyZWFkeSBh
dCBEMCB3aWxsIHRyaWdnZXIgYW4gQVNTRVJUDQo+IGFuZCBvdmVyd3JpdGUgc2V2ZXJhbCB2YXJp
YWJsZXMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJp
eC5jb20+DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t
Pg0KDQo+IC0tLQ0KPiAgc3JjL3hlbmNvbnMvcGRvLmMgfCA3ICsrKysrKysNCj4gIDEgZmlsZSBj
aGFuZ2VkLCA3IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9w
ZG8uYyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+IGluZGV4IDkzNWI2Y2EuLjZhNDE5MzQgMTAwNzU1
DQo+IC0tLSBhL3NyYy94ZW5jb25zL3Bkby5jDQo+ICsrKyBiL3NyYy94ZW5jb25zL3Bkby5jDQo+
IEBAIC00NDUsNiArNDQ1LDggQEAgUGRvRDNUb0QwKA0KPiAgICAgIFRyYWNlKCIoJXMpID09PT0+
XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7DQo+IA0KPiAgICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVu
dElycWwoKSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAgICBpZiAoX19QZG9HZXREZXZpY2VQ
b3dlclN0YXRlKFBkbykgPT0gUG93ZXJEZXZpY2VEMCkNCj4gKyAgICAgICAgZ290byBkb25lOw0K
PiANCj4gICAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOw0KPiANCj4gQEAg
LTQ3MSw2ICs0NzMsNyBAQCBQZG9EM1RvRDAoDQo+ICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpDQo+ICAgICAgICAgIGdvdG8gZmFpbDQ7DQo+IA0KPiArZG9uZToNCj4gICNwcmFnbWEgcHJl
ZmFzdChzdXBwcmVzczoyODEyMykNCj4gICAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VT
dGF0ZSgmUGRvLT5EeC0+TGluaywgVFJVRSk7DQo+IA0KPiBAQCAtNTIxLDYgKzUyNCw5IEBAIFBk
b0QwVG9EMygNCj4gICNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODEyMykNCj4gICAgICAoVk9J
RCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0ZSgmUGRvLT5EeC0+TGluaywgRkFMU0UpOw0KPiAN
Cj4gKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgPT0gUG93ZXJEZXZpY2VE
MykNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICAgICAgWEVOQ09OU19DT05TT0xFX0FC
SShEMFRvRDMsICZQZG8tPkNvbnNvbGVBYmkpOw0KPiANCj4gICAgICBLZVJhaXNlSXJxbChESVNQ
QVRDSF9MRVZFTCwgJklycWwpOw0KPiBAQCAtNTM2LDYgKzU0Miw3IEBAIFBkb0QwVG9EMygNCj4g
DQo+ICAgICAgS2VMb3dlcklycWwoSXJxbCk7DQo+IA0KPiArZG9uZToNCj4gICAgICBUcmFjZSgi
KCVzKSA8PT09PVxuIiwgX19QZG9HZXROYW1lKFBkbykpOw0KPiAgfQ0KPiANCj4gLS0NCj4gMi44
LjMNCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KPiB3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZw0KPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vd2luLXB2LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:28:03 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:28:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkjC-0004Oi-WC; Fri, 02 Mar 2018 13:28:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erkjC-0004OU-DD
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:28:02 +0000
X-Inumbo-ID: 62ce5059-1e1d-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 62ce5059-1e1d-11e8-ba59-bc764e045a96;
 Fri, 02 Mar 2018 14:27:00 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69033694"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 14/14 v2] Fail FrontendPrepare if backend
 doesn't reinitialize
Thread-Index: AQHTrLKddUT0KZYpfES5tIhjugk4XKO8+w0Q
Date: Fri, 2 Mar 2018 13:27:59 +0000
Message-ID: <922ec833704241638921961fc628b1d8@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-15-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-15-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 14/14 v2] Fail FrontendPrepare if
	backend	doesn't reinitialize
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIy
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDE0LzE0IHYyXSBGYWlsIEZyb250ZW5kUHJlcGFyZSBpZiBiYWNrZW5kDQo+IGRvZXNuJ3Qg
cmVpbml0aWFsaXplDQo+IA0KPiBGcm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5j
b20+DQo+IA0KPiBDdXJyZW50IGJhY2tlbmQgd2lsbCBjcmFzaCAodGFraW5nIG91dCB0aGUgVk0p
IGlmIGFueSBhdHRlbXB0IGlzDQo+IG1hZGUgdG8gcmVjb25uZWN0IHRvIGEgYmFja2VuZCB0aGF0
IGhhcyB0cmFuc2l0aW9uZWQgdG8gdGhlDQo+IENsb3NlZCBzdGF0ZS4gRm9yY2VzIHRoZSBmcm9u
dGVuZCBvZmZsaW5lLCB3aGljaCB3aWxsIGZhaWwgdGhlDQo+IGZyb250ZW5kIHN0YXRlIHRyYW5z
aXRpb25zLCBhbmQgaXRzIGluaXRpYXRpbmcgSVJQLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogT3dl
biBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpBY2tlZC1ieTogUGF1bCBEdXJyYW50
IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gIHNyYy94ZW5jb25zL2Zyb250
ZW5kLmMgfCA2ICsrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQ0KPiAN
Cj4gZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zyb250ZW5kLmMgYi9zcmMveGVuY29ucy9mcm9u
dGVuZC5jDQo+IGluZGV4IGY3ZDNiMjMuLjlmNmUxM2QgMTAwNzU1DQo+IC0tLSBhL3NyYy94ZW5j
b25zL2Zyb250ZW5kLmMNCj4gKysrIGIvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYw0KPiBAQCAtNjUy
LDYgKzY1MiwxMiBAQCBGcm9udGVuZFByZXBhcmUoDQo+ICAgICAgICAgIGNhc2UgWGVuYnVzU3Rh
dGVDbG9zZWQ6DQo+ICAgICAgICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5k
LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3Nl
ZCk7DQo+ICsgICAgICAgICAgICAvLyBUaGVyZSBpcyBjdXJyZW50bHkgYSBidWcgaW4gdGhlIGJh
Y2tlbmQuDQo+ICsgICAgICAgICAgICAvLyBPbmNlIHRoZSBiYWNrZW5kIHJlYWNoZXMgQ2xvc2Vk
LCBpdCB3aWxsIGNyYXNoIHRoZQ0KPiArICAgICAgICAgICAgLy8gZnJvbnRlbmQgYXR0ZW1wdHMg
dG8gbWFrZSBhbnkgc3RhdGUgdHJhbnNpdGlvbi4NCj4gKyAgICAgICAgICAgIC8vIEF2b2lkIHRo
ZSBidWcgYnkgZm9yY2luZyB0aGUgZnJvbnRlbmQgb2ZmbGluZSBhbmQNCj4gKyAgICAgICAgICAg
IC8vIGZhaWxpbmcgRnJvbnRlbmRQcmVwYXJlDQo+ICsgICAgICAgICAgICBGcm9udGVuZFNldE9m
ZmxpbmUoRnJvbnRlbmQpOw0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgIGRlZmF1
bHQ6DQo+ICAgICAgICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLA0KPiAt
LQ0KPiAyLjguMw0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fDQo+IHdpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gd2luLXB2LWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 13:33:32 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 13:33:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erkoV-0004z9-D4; Fri, 02 Mar 2018 13:33:31 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1erkoU-0004z3-CW
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 13:33:30 +0000
Date: Fri, 2 Mar 2018 13:33:32 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <31584370.13.1519997617779.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_12_30666333.1519997612576"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: FAILURE
Subject: [win-pv-devel] XENCONS-master - Build #15 - Failure
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_12_30666333.1519997612576
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #15.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/15/console to view the results.
------=_Part_12_30666333.1519997612576
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_12_30666333.1519997612576--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 14:40:18 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 14:40:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1erlr4-0002fD-SW; Fri, 02 Mar 2018 14:40:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=mlvu=fy=citrix.com=prvs=5924c51eb=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1erlr4-0002f5-9R
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 14:40:14 +0000
X-Inumbo-ID: e36e9b3c-1e27-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id e36e9b3c-1e27-11e8-b9b1-635ca7ef6cff;
 Fri, 02 Mar 2018 14:42:11 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,412,1515456000"; d="scan'208";a="69039422"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH 00/14 v2] Support multiple consoles
Thread-Index: AQHTrLHE/+Qx73pceESlHKOfsPDIJKO9DyhQ
Date: Fri, 2 Mar 2018 14:39:59 +0000
Message-ID: <93f41dd1a7574ab2b411f267e98a6b21@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH 00/14 v2] Support multiple consoles
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMyBGZWJydWFyeSAyMDE4IDE0OjIx
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIIDAwLzE0IHYyXSBTdXBwb3J0IG11bHRpcGxlIGNvbnNvbGVzDQo+IA0KPiBGcm9tOiBPd2Vu
IFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KDQpTZXJpZXMgYXBwbGllZC4gVGhh
bmtzLA0KDQogIFBhdWwNCg0KPiBDb252ZXJ0cyB0aGUgeGVuY29ucyBGZG8gaW50byBhIGJ1cyBk
cml2ZXIgdGhhdCBlbnVtZXJhdGVzIDEgb3IgbW9yZQ0KPiBQZG9zLiBUaGUgZmlyc3QgUGRvIG1h
bmFnZXMgdGhlIHN0YXRpYyAiZGVmYXVsdCIgY29uc29sZSBleHBvc2VkIGJ5DQo+IHRoZSBYRU5C
VVNfQ09OU09MRSBpbnRlcmZhY2UuIFN1YnNpcXVlbnQgUGRvcyBtYW5hZ2UgdGhlIGR5bmFtaWMN
Cj4gbm9uLWRlZmF1bHQgY29uc29sZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBWTS4gQWxsIGNv
bnNvbGVzIGV4cG9zZQ0KPiBzZXZlcmFsIHByb3BlcnRpZXMgdG8gZGlmZmVyZW50aWF0ZSB0aGVp
ciB1c2VhZ2UgKCJuYW1lIiwgImluc3RhbmNlIiwNCj4gYW5kICJwcm90b2NvbCIpLiBUaGUgbW9u
aXRvciBzZXJ2aWNlIGlzIG1vZGlmaWVkIHRvIG1hbmFnZSBtdWx0aXBsZQ0KPiBjb25zb2xlcyBh
bmQgY3JlYXRlIGEgbmFtZWQgcGlwZSBmb3IgZWFjaCwgd2l0aCB0aGUgcGlwZSdzIG5hbWUgYmVp
bmcNCj4gYmFzZWQgb24gdGhlICJuYW1lIiBwcm9wZXJ0eSBvZiB0aGUgY29uc29sZSAoaS5lLg0K
PiBcXC5ccGlwZVx4ZW5jb25zXDxuYW1lPikNCj4gVXNlcnMgb2YgYSBwYXJ0aWN1bGFyIGNvbnNv
bGUgY2FuIGRpcmVjdGx5IGNvbm5lY3QgdG8gdGhlIHdlbGwta25vd24NCj4gbmFtZSBvZiB0aGUg
Y29ycmVjdCBuYW1lZCBwaXBlLg0KPiANCj4gQ3VycmVudGx5LCB0aGUgZGVmYXVsdCBjb25zb2xl
IChcXC5ccGlwZVx4ZW5jb25zXGRlZmF1bHQpIGlzIHVzZWQgYnkNCj4geGVuY29uc190dHkgdG8g
ZXhwb3NlIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgYmFja2VuZC4NCj4gQWRkaXRp
b25hbCB1c2VzIHNob3VsZCBiZSBkZWZpbmVkIGluIGFjY29yZGFuY2Ugd2l0aA0KPiBodHRwczov
L3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL21hbi94ZW4tcHYtY2hhbm5lbC43Lmh0bWwN
Cj4gDQo+IE93ZW4gU21pdGggKDE0KToNCj4gICBjaG1vZCA3NzcgbXNidWlsZC5iYXQNCj4gICBN
b3ZlIGNvbnNvbGUgaGFuZGxlcnMgdG8gY29uc29sZS5jDQo+ICAgQWRkIGJvaWxlcnBsYXRlIFBk
bw0KPiAgIE1vdmUgY29uc29sZSBoYW5kbGVyIHRvIHN0YXRpYyBQZG8NCj4gICBBZGQgSU9DVExz
IHRvIHF1ZXJ5IGluc3RhbmNlLCBuYW1lIGFuZCBwcm90b2NvbA0KPiAgIE1ha2UgbW9uaXRvciBz
ZXJ2aWNlIG11bHRpLWNvbnNvbGUgYXdhcmUNCj4gICBFbnVtZXJhdGUgbm9uLWRlZmF1bHQgY29u
c29sZXMNCj4gICBIaWRlIGNvbnNvbGUgYWNjZXNzIGJlaGluZCBhbiBpbnRlcmZhY2UNCj4gICBB
ZGQgYm9pbGVycGxhdGUgZnJvbnRlbmQNCj4gICBSZXNwb25kIHRvIG5vbi1kZWZhdWx0IGNvbnNv
bGUgSU9DVExzDQo+ICAgQWRkIEVWVENITiBhbmQgR05UVEFCIGludGVyZmFjZXMNCj4gICBJbXBs
ZW1lbnQgcmluZyBwcm90b2NvbA0KPiAgIEVuc3VyZSBEMCA8LT4gRDMgdHJhbnNpdGlvbnMgb2Nj
dXIgZnJvbSB0aGUgY29ycmVjdCBzdGF0ZSBvbmx5Lg0KPiAgIEZhaWwgRnJvbnRlbmRQcmVwYXJl
IGlmIGJhY2tlbmQgZG9lc24ndCByZWluaXRpYWxpemUNCj4gDQo+ICBpbmNsdWRlL2NhY2hlX2lu
dGVyZmFjZS5oICAgICAgICAgICAgICAgIHwgIDIzMyArKysrDQo+ICBpbmNsdWRlL2V2dGNobl9p
bnRlcmZhY2UuaCAgICAgICAgICAgICAgIHwgIDM1NyArKysrKw0KPiAgaW5jbHVkZS9nbnR0YWJf
aW50ZXJmYWNlLmggICAgICAgICAgICAgICB8ICAyODcgKysrKysNCj4gIGluY2x1ZGUveGVuLXR5
cGVzLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDU1ICsNCj4gIGluY2x1ZGUveGVuLXZlcnNp
b24uaCAgICAgICAgICAgICAgICAgICAgfCAgIDM3ICsNCj4gIGluY2x1ZGUveGVuLXdhcm5pbmdz
LmggICAgICAgICAgICAgICAgICAgfCAgIDQyICsNCj4gIGluY2x1ZGUveGVuLmggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4
Ni94ZW4teDg2XzMyLmggfCAgMTY5ICsrKw0KPiAgaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2
L3hlbi14ODZfNjQuaCB8ICAyMDIgKysrDQo+ICBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYv
eGVuLmggICAgICAgIHwgIDMzOCArKysrKw0KPiAgaW5jbHVkZS94ZW4vcHVibGljL2Vycm5vLmgg
ICAgICAgICAgICAgICB8ICAxMjQgKysNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90YWJs
ZS5oICAgICAgICAgfCAgNjg0ICsrKysrKysrKysNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy9pby9j
b25zb2xlLmggICAgICAgICAgfCAgIDUxICsNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy9pby9yaW5n
LmggICAgICAgICAgICAgfCAgMzI2ICsrKysrDQo+ICBpbmNsdWRlL3hlbi9wdWJsaWMvaW8veGVu
YnVzLmggICAgICAgICAgIHwgICA4MCArKw0KPiAgaW5jbHVkZS94ZW4vcHVibGljL3RyYWNlLmgg
ICAgICAgICAgICAgICB8ICAzMzcgKysrKysNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29t
cGF0LmggICAgICAgICAgfCAgIDQ0ICsNCj4gIGluY2x1ZGUveGVuL3B1YmxpYy94ZW4uaCAgICAg
ICAgICAgICAgICAgfCAgOTk1ICsrKysrKysrKysrKysrDQo+ICBpbmNsdWRlL3hlbi94ZW4vZXJy
bm8uaCAgICAgICAgICAgICAgICAgIHwgICAxOCArDQo+ICBpbmNsdWRlL3hlbmNvbnNfZGV2aWNl
LmggICAgICAgICAgICAgICAgIHwgICAxNyArDQo+ICBtc2J1aWxkLmJhdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMA0KPiAgc3JjL21vbml0b3IvbW9uaXRvci5jICAgICAgICAg
ICAgICAgICAgICB8IDE0NDUgKysrKysrKysrKystLS0tLS0tLS0tDQo+ICBzcmMvdHR5L3R0eS5j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQ0KPiAgc3JjL3hlbmNvbnMuaW5m
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0NCj4gIHNyYy94ZW5jb25zL2NvbnNv
bGUuYyAgICAgICAgICAgICAgICAgICAgfCAgNTU3ICsrKysrKysrDQo+ICBzcmMveGVuY29ucy9j
b25zb2xlLmggICAgICAgICAgICAgICAgICAgIHwgICA0NiArDQo+ICBzcmMveGVuY29ucy9jb25z
b2xlX2FiaS5oICAgICAgICAgICAgICAgIHwgICA5OSArKw0KPiAgc3JjL3hlbmNvbnMvZHJpdmVy
LmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKw0KPiAgc3JjL3hlbmNvbnMvZHJpdmVyLmgg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0NCj4gIHNyYy94ZW5jb25zL2Zkby5jICAgICAg
ICAgICAgICAgICAgICAgICAgfCAxMTI2ICsrKysrKysrKysrLS0tLS0NCj4gIHNyYy94ZW5jb25z
L2Zkby5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsNCj4gIHNyYy94ZW5jb25zL2Zy
b250ZW5kLmMgICAgICAgICAgICAgICAgICAgfCAxNjU0ICsrKysrKysrKysrKysrKysrKysrKysr
Kw0KPiAgc3JjL3hlbmNvbnMvZnJvbnRlbmQuaCAgICAgICAgICAgICAgICAgICB8ICAgNjggKw0K
PiAgc3JjL3hlbmNvbnMvbXV0ZXguaCAgICAgICAgICAgICAgICAgICAgICB8ICAgODIgKysNCj4g
IHNyYy94ZW5jb25zL3Bkby5jICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDc5ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmNvbnMvcGRvLmggICAgICAgICAgICAg
ICAgICAgICAgICB8ICAxMTggKysNCj4gIHNyYy94ZW5jb25zL3JpbmcuYyAgICAgICAgICAgICAg
ICAgICAgICAgfCAxMDY0ICsrKysrKysrKysrKysrKw0KPiAgc3JjL3hlbmNvbnMvcmluZy5oICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgOTYgKysNCj4gIHZzMjAxNS94ZW5jb25zL3hlbmNvbnMu
dmN4cHJvaiAgICAgICAgICAgfCAgICA0ICsNCj4gIHZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4
cHJvaiAgICAgICAgICAgfCAgICA0ICsNCj4gIDQwIGZpbGVzIGNoYW5nZWQsIDExOTU2IGluc2Vy
dGlvbnMoKyksIDEwMTYgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVk
ZS9jYWNoZV9pbnRlcmZhY2UuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUvZXZ0Y2hu
X2ludGVyZmFjZS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS9nbnR0YWJfaW50ZXJm
YWNlLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi10eXBlcy5oDQo+ICBjcmVh
dGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4tdmVyc2lvbi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3
NTUgaW5jbHVkZS94ZW4td2FybmluZ3MuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUv
eGVuLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYv
eGVuLXg4Nl8zMi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL2Fy
Y2gteDg2L3hlbi14ODZfNjQuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1
YmxpYy9hcmNoLXg4Ni94ZW4uaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1
YmxpYy9lcnJuby5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL2dy
YW50X3RhYmxlLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvaW8v
Y29uc29sZS5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL2lvL3Jp
bmcuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy9pby94ZW5idXMu
aA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy90cmFjZS5oDQo+ICBj
cmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaA0KPiAgY3Jl
YXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy94ZW4uaA0KPiAgY3JlYXRlIG1vZGUg
MTAwNzU1IGluY2x1ZGUveGVuL3hlbi9lcnJuby5oDQo+ICBtb2RlIGNoYW5nZSAxMDA2NDQgPT4g
MTAwNzU1IG1zYnVpbGQuYmF0DQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvY29u
c29sZS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvY29uc29sZS5oDQo+ICBj
cmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvY29uc29sZV9hYmkuaA0KPiAgY3JlYXRlIG1v
ZGUgMTAwNzU1IHNyYy94ZW5jb25zL2Zyb250ZW5kLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBz
cmMveGVuY29ucy9mcm9udGVuZC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMv
bXV0ZXguaA0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25zL3Bkby5jDQo+ICBjcmVh
dGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvcGRvLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBz
cmMveGVuY29ucy9yaW5nLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9yaW5n
LmgNCj4gDQo+IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3
aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 02 15:10:05 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 02 Mar 2018 15:10:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ermJw-0006C1-24; Fri, 02 Mar 2018 15:10:04 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.84_2)
 (envelope-from <paul.durrant@xenproject.org>) id 1ermJu-0005jQ-Ey
 for win-pv-devel@lists.xenproject.org; Fri, 02 Mar 2018 15:10:02 +0000
Date: Fri, 2 Mar 2018 15:10:04 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <5952394.15.1520003409923.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
In-Reply-To: <31584370.13.1519997617779.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
References: <31584370.13.1519997617779.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_14_11875779.1520003404798"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #16 - Fixed
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_14_11875779.1520003404798
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #16.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENCONS-master/16/console to view the results.
------=_Part_14_11875779.1520003404798
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_14_11875779.1520003404798--


From win-pv-devel-bounces@lists.xenproject.org Wed Mar 07 10:00:19 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 07 Mar 2018 10:00:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1etVrr-0004F7-Ev; Wed, 07 Mar 2018 10:00:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=rihp=f5=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1etVrq-0004Eq-K4
 for win-pv-devel@lists.xenproject.org; Wed, 07 Mar 2018 10:00:14 +0000
X-Inumbo-ID: 29e26e16-21ee-11e8-ba59-bc764e045a96
Received: from mail-wm0-x22a.google.com (unknown [2a00:1450:400c:c09::22a])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 29e26e16-21ee-11e8-ba59-bc764e045a96;
 Wed, 07 Mar 2018 10:59:04 +0100 (CET)
Received: by mail-wm0-x22a.google.com with SMTP id 139so3526435wmn.2;
 Wed, 07 Mar 2018 02:00:11 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:subject:from:in-reply-to:date:cc:message-id:references
 :to; bh=PLUcMmm++3zt0rNzt+qnRvxL3SkVXclrIgxUgXK+GWM=;
 b=qJ4APIlVPn7Z0M7STBZ9830C+M8cz+TmLktoJCEm1eo4xunG5wjsHjlJsCFD7UFR5I
 XWVNUEIXHWZ/+pyioLK37ymUBgHQNE7H6PBbPu1gFqsaGOEYOQrSc09r3R8X41WE9VwZ
 nUQ9USs5+vfN/UORlaPLqUJ2l88i5gItEFQaOAFYO0h3a1vNfjaYuSpdlEhhZ+QkrvT3
 Fz/eLI1RjcxX38Bcjp5qJ9yl5fRBo8XQXd88sfg0VryUepNTlJFhydos3l0uV/N8jGzn
 mr+BvbCX9Oimt0pA1Q2NURZH1THwuQcAV7uW8kZVG/ujhkNJmqHs9t0KJnqhNxb3Cdry
 7VYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :message-id:references:to;
 bh=PLUcMmm++3zt0rNzt+qnRvxL3SkVXclrIgxUgXK+GWM=;
 b=LH8BCjJn82rQITZTa9+YWcgt8ezC3JKEnc/fsc9fzIyEExYeS4xw1aN8cBEWQIE8VF
 8OpaWeu2pKzR78WtQ0BqMRBQKPuDy8HdI9pyTjXfDPr4dZLAN1VrovzQToilOmIW8+zm
 /mVaz0POF3zCEQYSHimxLOJlIO4sFesEttspJ8UkUIiK1q3mUrJnBSK95r1SzLx0J9rU
 MvqDC9TlCqrduTSMdd1Q2WNAzUcgMtc3jTR/6t4oflN4mU1Jjdc0n18M9gg8aKn3vITC
 h9Ov3X/i2tVk+2JTn5p7mgd62LpI78ijccWimLEw6ckQbRdsqjs2dfZpiQg4VkghOX80
 dEow==
X-Gm-Message-State: APf1xPCmnCmlfinG1PeEfBcsRUOpCTagGhecGB8wYMRAefO6Y+NCkCWV
 MeqoMJtegzlUwSoModrmt1QdOtoG
X-Google-Smtp-Source: AG47ELvtQeLVt4H1e7uX5RAVoUk77ExjcjxoTkg3wZi4cHo06ODLsTLizrftX9cBkEwupLMAgTmaVw==
X-Received: by 10.80.195.78 with SMTP id q14mr27309392edb.254.1520416809943;
 Wed, 07 Mar 2018 02:00:09 -0800 (PST)
Received: from ?IPv6:2a00:c1a0:4883:a700:28ff:4b76:e09b:11a1?
 ([2a00:c1a0:4883:a700:28ff:4b76:e09b:11a1])
 by smtp.gmail.com with ESMTPSA id z7sm10333203edb.46.2018.03.07.02.00.08
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 07 Mar 2018 02:00:09 -0800 (PST)
Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\))
From: Lars Kurth <lars.kurth.xen@gmail.com>
In-Reply-To: <7B105F1A-A54A-4613-8108-91D96DEB9708@gmail.com>
Date: Wed, 7 Mar 2018 11:00:07 +0100
Message-Id: <BC87D943-9E13-48CB-A8FB-2EDBC8A2F813@gmail.com>
References: <7B105F1A-A54A-4613-8108-91D96DEB9708@gmail.com>
To: xen-devel <xen-devel@lists.xenproject.org>,
 mirageos-devel@lists.xenproject.org, unikraft-devel@lists.xenproject.org,
 win-pv-devel@lists.xenproject.org, embedded-pv-devel@lists.xenproject.org,
 xen-api@lists.xenproject.org
X-Mailer: Apple Mail (2.3445.5.20)
Cc: advisory-board@lists.xenproject.org, committers@xenproject.org
Subject: Re: [win-pv-devel] Save the date: Xen Project Developer Summit,
 Nanjing, China, June 20-22 (Wednesday - Friday)
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============7523479291181571938=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>


--===============7523479291181571938==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_57E2C50C-4D64-4C0A-82C5-593101269260"


--Apple-Mail=_57E2C50C-4D64-4C0A-82C5-593101269260
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi everyone,

a quick update. We finally have the contract in hand: that took a lot =
longer than expected as we didn't realise that contracts which involve =
foreign events hosted in China, need to be vetted by the Chinese =
government.

My LF contact will meet the Linux Foundation's contract specialist later =
today to make sure there are no large red flags: hopefully there aren't =
any which means we will be able to offically announce the event, publish =
the website, etc. this week.

Best Regards
Lars

> On 5 Feb 2018, at 15:52, Lars Kurth <lars.kurth.xen@gmail.com> wrote:
>=20
> Dear Community members,
>=20
> we finalized the Xen Project Developer Summit proposal with the event =
hotel. Apologies this has taken so long.
>=20
> The event will be held at the Crowne Plaza Nanjing Jiangning =
<https://www.ihg.com/crowneplaza/hotels/us/en/nanjing/nkgnj/hoteldetail/ev=
ents-facilities#scmisc=3Dnav_events-facilities_cp>. I am still waiting =
for the schedule to put registration and the website into place, as well =
as CfP time-table, but this should all be done within a couple of weeks =
or so.
> The cost per hotel room is $135/night + taxes.
> The dates for the summit are June 20-22 (Wednesday - Friday), allowing =
attendees to travel to Beijing and attend LinuxCon China the following =
Monday. =20
>=20
> For those, who want to attend LinuxCon as well as the Dev Summit, the =
LinuxCon CfP is still open until March 4th (see =
https://www.lfasiallc.com/linuxcon-containercon-cloudopen-china/cfp =
<https://www.lfasiallc.com/linuxcon-containercon-cloudopen-china/cfp>)
> =20
> I will provide more information on travel logistics, etc. a little =
later
>=20
> Best Regards
> Lars


--Apple-Mail=_57E2C50C-4D64-4C0A-82C5-593101269260
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">Hi =
everyone,<div class=3D""><br class=3D""><div class=3D"">a quick =
update.&nbsp;We finally have the contract in hand: that took a lot =
longer than expected as we didn't realise that contracts which involve =
foreign events hosted in China, need to be vetted by the Chinese =
government.</div><div class=3D""><br class=3D""></div><div class=3D"">My =
LF contact will meet the Linux Foundation's contract specialist later =
today to make sure there are no large red flags: hopefully there aren't =
any which means we will be able to offically announce the event, publish =
the website, etc. this week.</div><div class=3D""><br =
class=3D""></div><div class=3D"">Best Regards</div><div =
class=3D"">Lars</div><div class=3D""><div><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D"">On 5 Feb 2018, at 15:52, Lars =
Kurth &lt;<a href=3D"mailto:lars.kurth.xen@gmail.com" =
class=3D"">lars.kurth.xen@gmail.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii" =
class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: =
space; line-break: after-white-space;" class=3D"">Dear Community =
members,<div class=3D""><br class=3D""></div><div class=3D""><div =
class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt;" class=3D"">we =
finalized the Xen Project Developer Summit proposal with the event =
hotel. Apologies this has taken so long.</div><div style=3D"margin: 0cm =
0cm 0.0001pt;" class=3D""><br class=3D""></div><div style=3D"margin: 0cm =
0cm 0.0001pt;" class=3D"">The event will be held at the&nbsp;<a =
href=3D"https://www.ihg.com/crowneplaza/hotels/us/en/nanjing/nkgnj/hotelde=
tail/events-facilities#scmisc=3Dnav_events-facilities_cp" style=3D"color: =
purple;" class=3D"">Crowne Plaza Nanjing Jiangning</a>. I am still =
waiting for the schedule to put registration and the website into place, =
as well as CfP time-table, but this should all be done within a couple =
of weeks or so.<o:p class=3D""></o:p></div></div><div style=3D"margin: =
0cm 0cm 0.0001pt;" class=3D"">The cost per hotel room is $135/night + =
taxes.</div><div style=3D"margin: 0cm 0cm 0.0001pt;" class=3D"">The =
dates for the summit are June 20-22 (Wednesday - Friday), allowing =
attendees to travel to Beijing and attend LinuxCon China the following =
Monday. &nbsp;</div><div class=3D""><div style=3D"margin: 0cm 0cm =
0.0001pt;" class=3D""><o:p class=3D""></o:p></div></div><div =
class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0cm 0cm 0.0001pt;" class=3D"">For =
those, who want to attend LinuxCon as well as the Dev Summit, the =
LinuxCon CfP is still open until March 4th (see&nbsp;<a =
href=3D"https://www.lfasiallc.com/linuxcon-containercon-cloudopen-china/cf=
p" =
class=3D"">https://www.lfasiallc.com/linuxcon-containercon-cloudopen-china=
/cfp</a>)</div><div style=3D"margin: 0cm 0cm 0.0001pt;" =
class=3D"">&nbsp;</div></div><div class=3D""><div style=3D"margin: 0cm =
0cm 0.0001pt;" class=3D"">I will provide more information on travel =
logistics, etc. a little later</div></div></div><div style=3D"margin: =
0cm 0cm 0.0001pt;" class=3D""><br class=3D""></div><div style=3D"margin: =
0cm 0cm 0.0001pt;" class=3D"">Best Regards</div><div style=3D"margin: =
0cm 0cm 0.0001pt;" class=3D"">Lars</div></div></div></blockquote></div><br=
 class=3D""></div></div></body></html>=

--Apple-Mail=_57E2C50C-4D64-4C0A-82C5-593101269260--


--===============7523479291181571938==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

--===============7523479291181571938==--


From win-pv-devel-bounces@lists.xenproject.org Thu Mar 15 16:09:03 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 15 Mar 2018 16:09:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ewVR7-00017Y-Gl; Thu, 15 Mar 2018 16:09:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=ymaq=gf=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1ewVR6-00017J-EI
 for win-pv-devel@lists.xenproject.org; Thu, 15 Mar 2018 16:09:00 +0000
X-Inumbo-ID: 27cb4192-286b-11e8-9728-bc764e045a96
Received: from mail-wm0-x242.google.com (unknown [2a00:1450:400c:c09::242])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 27cb4192-286b-11e8-9728-bc764e045a96;
 Thu, 15 Mar 2018 17:08:54 +0100 (CET)
Received: by mail-wm0-x242.google.com with SMTP id z9so11490703wmb.3
 for <win-pv-devel@lists.xenproject.org>; Thu, 15 Mar 2018 09:08:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:mime-version:subject:message-id:date:to;
 bh=Imlha57+5tKhSZuvKn9Dc/Zi4BsH20kQWW/UNLxLU6w=;
 b=YFiKvZe6Tff0l3xpmxvpWeOGgd+iwxw44iGujJqd6tiE0YoDGXEMIebc6taFiAPNX0
 yrFbL064nYP6xRzui1rdBsmr3L9YnXHMoWf7uv5VVDtqXQK6o4vGbq1Z0EDWL5MEr8WW
 Z5lw3wDo7nfcBexQ2Q7Z+l0gVdElqLFi9NPn58cBFhkOeVPlhJ+YP/ZHiRLGjIW1yb1/
 II9dCZr4shBEEqVxCjcQcKnqEXc6QCSPy6oekKg1CFp7Vl/w3xi0yVudoNjfsNdvarmo
 xRjUwbir4Pv5yEuSSnVxeS3+Wqucgm6VZpCvcAdZEn1EtklgZ7HA4X0y1K/JkdMWA2UC
 MRxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:mime-version:subject:message-id:date:to;
 bh=Imlha57+5tKhSZuvKn9Dc/Zi4BsH20kQWW/UNLxLU6w=;
 b=uBhiOKODNDEUxUJR6WdMM3LFXvXMbk5PTfPpp5vuZWqM47/kLwFfl96sTJJhAtcO68
 fYTz8hf20gYm0dN0uu0NJlfeTkQAXcS3X9xENBEIGykQPZRBXhXfR83tPfyTbmF5cssp
 cSb+0AgwvojkJ9EYRiO0jiU7ZNeku9xrQhIoC87fMIoG9V9KvGDLDkKa1+eZ1wvvPQ0K
 NHK2uuOKfbv7fxGJ6IMqVphzr8gM0/8p6JK18fckoqkpYApfHZREEYa94fZL6IAO/Ehp
 Ei9jlCeuS2CnSNQVPeyQABKiCYjLWAv5M3I9Tx8cpz8f/UuTxST1WFAUCGV0IH7RxjrB
 T6tg==
X-Gm-Message-State: AElRT7FyIFS0wAVe2LOSqI05CGtVnhswMZhtY0v+y9u19G4nCxp22BVf
 ymZ7MnQO0yjelc7OP033Eg9aUPXC
X-Google-Smtp-Source: AG47ELuYorUcIuTY2JSyYYKuWDhNDeXRX9o+B2CUenpcAKWo5K5Hy5zyvAGIINDNGCMsBetoK8gzSw==
X-Received: by 10.80.165.143 with SMTP id a15mr9423356edc.289.1521130137007;
 Thu, 15 Mar 2018 09:08:57 -0700 (PDT)
Received: from ?IPv6:2a00:c1a0:4883:a700:81ec:b016:3b25:4325?
 ([2a00:c1a0:4883:a700:81ec:b016:3b25:4325])
 by smtp.gmail.com with ESMTPSA id l91sm2222460ede.50.2018.03.15.09.08.55
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 15 Mar 2018 09:08:55 -0700 (PDT)
From: Community Manager <lars.kurth.xen@gmail.com>
X-Google-Original-From: Community Manager <community.manager@xenproject.org>
Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\))
Message-Id: <E8435A24-3B9E-4D6B-B547-DA5AE4155191@xenproject.org>
Date: Thu, 15 Mar 2018 17:08:54 +0100
To: win-pv-devel@lists.xenproject.org
X-Mailer: Apple Mail (2.3445.5.20)
Subject: [win-pv-devel] 2018 Xen Project Developer and Design Summit: CfP
 open from now to April 13, Event is held June 20-22, 2018 in Nanjing, China
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============2838593990085785465=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>


--===============2838593990085785465==
Content-Type: multipart/signed;
	boundary="Apple-Mail=_C36B04A1-4409-491C-BCF4-4282FCAC326D";
	protocol="application/pgp-signature";
	micalg=pgp-sha512


--Apple-Mail=_C36B04A1-4409-491C-BCF4-4282FCAC326D
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Dear Community Members,

I am excited to announce that registration and the call for
proposals is open for Xen Project Developer and Design
Summit 2018. The event will be held in at the Crowne Plaza
Nanjing, China from June 20-22, 2018. The Xen Project
Developer and Design Summit will follow the same format
as last year combining Xen Project Developer Summits with
Xen Project Hackathons. We will have talks in the mornings
and smaller interactive design and problem solving sessions
in the afternoon.

Note that the CfP period is quite short: if you need extra
time, or you otherwise have difficulties with the CfP please
contact me via community.manager@xenproject.org.

Submit a Talk
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Several formats are being accepted for speaking proposals,
including:

* Presentations and Panels: these are presentations and
panels as we always had them at Developer Summits in the
past.
* Interactive design and problem solving sessions. These
sessions can be submitted as part of the CFP, but we will
reserve a number of design sessions to be allocated during
the event. Proposers of design sessions are expected to
host and moderate design sessions following the format we
have used at Xen Project Hackathons.

If you have not participated in these in the past, check
out past event reports from 2018
* https://xen.markmail.org/thread/hs6gpgjbbx2smadn
(Notes from PCI Passthrough design discussion at Xen Summit)
* https://markmail.org/thread/7e2mdpimvrmsppq5
(Notes Design Session: Making Releases Lessons Learned:
 Improving Our Release Process and Tooling)
* https://xen.markmail.org/thread/37annnvm7wwygr4j
(Notes from Design Summit Hypervisor Fuzzing Session)

Never talked at a conference before? Don=E2=80=99t worry! We encourage
new speakers to submit for our events and have plenty of
resources to help you prepare for your presentation.

Here are some dates to remember for submissions and in
general:

* CFP Close: April 13, 2018
* CFP Notifications: April 30, 2018
* Schedule Announced: May 3, 2018
* Event: June 20-22, 2018

Links to the CfP are at:
https://www.lfasiallc.com/events/xensummit2018/program/cfp/
=
https://www.lfasiallc.com/events/xensummit2018/program/cfp-designsessions/=


Note that each link goes to the same back-end: the main
difference between the two links are the instructions.

Registration
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Registration information is available at
https://www.regonline.com/registration/Checkin.aspx?EventID=3D2239305

Travel stipends are only available for students or individuals
that are not associated with a company.

Accommodation and other information
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

General information about the event can be found on
https://www.lfasiallc.com/events/xensummit2018/

Note that the following information is not yet in place: we
will add this shortly
- hotel block booking information

Travel
=3D=3D=3D=3D=3D=3D
Most international flights to Nanjing will go via Beijing or
Shanghai. There are non-stop flights from many Asian cities,
as well as Frankfurt (Lufthansa), Milan (Neos) and Los Angeles
(China Eastern). It is also possible to take a flight to
Shanghai and then a bullet train from Shanghai Hongqiao to
Nanjing South (G trains take about 1h15 - 1h30). If you want
to take up this option, drop me a line. I have done this many
times before.

If you have any questions, please contact me via
community.manager@xenproject.org

Best Regards
Lars

--Apple-Mail=_C36B04A1-4409-491C-BCF4-4282FCAC326D
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEGMt8INYPShzLT5l8yRKINn2yyNoFAlqqmpYACgkQyRKINn2y
yNpHLw//VDwzsNf5bDHupSN8or80M7FlnZ5AtmOgXSPw3F573Q3feir/fwqHJUax
7Eq9fExdSQIifb4O5lXfnSw4o1/vMAt42024pcoWJK75wjFogmqzWFK+AqLKU6oI
oOx7iNIag3UaY4FGk5ozluyVSZ0Kz4mpdjy7Hzgp0IBvk8nTBVRpamA9hU8mjQ51
SdcCbvkC1Iu+vzMnrHcanlfMiSLclS5pePARmPgrN4vOpF03pQutLaPQRas5NUMn
dfJDE4rpkYy8Cd5EOL0lfcIyLzBGEBkNkcy8ZSibOxVymPxl2/ME8jQXYQctJPKx
i9zTgkdsdmvdcCNrZE20ULywoUYTdvX/9h6u/nLKd1zzxx+cLs1Q9LwBXY8sZkVf
EX2JArlOYx+tBbIIoU8HMBJryJ7oZby74hB/i86BJguRXQVcrOXeeX7NaCHsnmei
5+RkqyHoSAMOnPjqxOB/y0p0iQX2wrKPLdMeVopF1UJUqFDcbnZ16Vfci4k+wGzC
63AY2ec9mqB9y5xXOgDeI7rTkSubsq7JsmGtXrKLB8qkqj9IXJ0+lOkshoMiclMM
aQVK4qSSEHDzkFqPPSIx7EZc4n5B/k7hmuYv4IQkxTvtJg9Kqq/dToPjn/iDadiU
rR+Pxx64KkqXGxl3RCXQM4TZqv22A2THzDrXxo02p+EyQ2hKFKQ=
=EPpR
-----END PGP SIGNATURE-----

--Apple-Mail=_C36B04A1-4409-491C-BCF4-4282FCAC326D--


--===============2838593990085785465==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

--===============2838593990085785465==--


From win-pv-devel-bounces@lists.xenproject.org Mon Mar 19 17:31:40 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 19 Mar 2018 17:31:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.84_2)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1exydF-0007UG-A0; Mon, 19 Mar 2018 17:31:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from
 <srs0=chf4=gj=citrix.com=prvs=6096d3c21=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1exydE-0007UA-S9
 for win-pv-devel@lists.xenproject.org; Mon, 19 Mar 2018 17:31:36 +0000
X-Inumbo-ID: 6a1328ac-2b9b-11e8-8248-2fda3a446a53
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 6a1328ac-2b9b-11e8-8248-2fda3a446a53;
 Mon, 19 Mar 2018 17:31:53 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.48,331,1517875200"; d="scan'208";a="468554846"
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 19 Mar 2018 17:18:56 +0000
Message-ID: <1521479936-164-1-git-send-email-paul.durrant@citrix.com>
X-Mailer: git-send-email 2.5.3
MIME-Version: 1.0
Cc: Paul Durrant <paul.durrant@citrix.com>
Subject: [win-pv-devel] [PATCH xenbus] Log system timers pre- and
	post-suspend
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

SXQncyB1c2VmdWwgdG8ga25vdyB3aGF0IGRpZmZlcmVuY2UsIGlmIGFueSwgaW4gdGhlIG1haW4g
c3lzdGVtIHRpbWVycwpXaW5kb3dzIGlzIHN1YmplY3QgdG8gYWNyb3NzIGEgc3VzcGVuZC9yZXN1
bWUgb3IgbWlncmF0ZS4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50
QGNpdHJpeC5jb20+Ci0tLQogc3JjL3hlbmJ1cy9zdXNwZW5kLmMgfCA0NCArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2Vy
dGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMveGVuYnVzL3N1c3BlbmQuYyBiL3NyYy94ZW5idXMv
c3VzcGVuZC5jCmluZGV4IDE4Y2FlMWIuLjU2NjdlODQgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5idXMv
c3VzcGVuZC5jCisrKyBiL3NyYy94ZW5idXMvc3VzcGVuZC5jCkBAIC0xNDAsNiArMTQwLDQ2IEBA
IFN1c3BlbmREZXJlZ2lzdGVyKAogICAgIF9fU3VzcGVuZEZyZWUoQ2FsbGJhY2spOwogfQogCitz
dGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19TdXNwZW5kTG9nVGltZXJzKAorICAgIElOICBjb25z
dCBDSEFSICAqUHJlZml4CisgICAgKQoreworICAgIExBUkdFX0lOVEVHRVIgICBTeXN0ZW1UaW1l
OworICAgIExBUkdFX0lOVEVHRVIgICBUaWNrQ291bnQ7CisgICAgVUxPTkcgICAgICAgICAgIFRp
bWVJbmNyZW1lbnQ7CisgICAgTEFSR0VfSU5URUdFUiAgIFBlcmZvcm1hbmNlQ291bnRlcjsKKyAg
ICBMQVJHRV9JTlRFR0VSICAgUGVyZm9ybWFuY2VGcmVxdWVuY3k7CisKKyAgICBLZVF1ZXJ5U3lz
dGVtVGltZSgmU3lzdGVtVGltZSk7CisKKyAgICBUaW1lSW5jcmVtZW50ID0gS2VRdWVyeVRpbWVJ
bmNyZW1lbnQoKTsKKyAgICBLZVF1ZXJ5VGlja0NvdW50KCZUaWNrQ291bnQpOworCisgICAgUGVy
Zm9ybWFuY2VDb3VudGVyID0gS2VRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmUGVyZm9ybWFuY2VG
cmVxdWVuY3kpOworCisgICAgTG9nUHJpbnRmKExPR19MRVZFTF9JTkZPLAorICAgICAgICAgICAg
ICAiJXM6IFN5c3RlbVRpbWUgPSAlMDh4LiUwOHhcbiIsCisgICAgICAgICAgICAgIFByZWZpeCwK
KyAgICAgICAgICAgICAgU3lzdGVtVGltZS5IaWdoUGFydCwKKyAgICAgICAgICAgICAgU3lzdGVt
VGltZS5Mb3dQYXJ0KTsKKworICAgIExvZ1ByaW50ZihMT0dfTEVWRUxfSU5GTywKKyAgICAgICAg
ICAgICAgIiVzOiBUaWNrQ291bnQgPSAlMDh4LiUwOHggKFRpbWVJbmNyZW1lbnQgPSAlMDh4KVxu
IiwKKyAgICAgICAgICAgICAgUHJlZml4LAorICAgICAgICAgICAgICBUaWNrQ291bnQuSGlnaFBh
cnQsCisgICAgICAgICAgICAgIFRpY2tDb3VudC5Mb3dQYXJ0LAorICAgICAgICAgICAgICBUaW1l
SW5jcmVtZW50KTsKKworICAgIExvZ1ByaW50ZihMT0dfTEVWRUxfSU5GTywKKyAgICAgICAgICAg
ICAgIiVzOiBQZXJmb3JtYW5jZUNvdW50ZXIgPSAlMDh4LiUwOHggKEZyZXF1ZW5jeSA9ICUwOHgu
JTA4eClcbiIsCisgICAgICAgICAgICAgIFByZWZpeCwKKyAgICAgICAgICAgICAgUGVyZm9ybWFu
Y2VDb3VudGVyLkhpZ2hQYXJ0LAorICAgICAgICAgICAgICBQZXJmb3JtYW5jZUNvdW50ZXIuTG93
UGFydCwKKyAgICAgICAgICAgICAgUGVyZm9ybWFuY2VGcmVxdWVuY3kuSGlnaFBhcnQsCisgICAg
ICAgICAgICAgIFBlcmZvcm1hbmNlRnJlcXVlbmN5Lkxvd1BhcnQpOworfQorCiBOVFNUQVRVUwog
I3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTY3KSAvLyBGdW5jdGlvbiBjaGFuZ2VzIElSUUwK
IFN1c3BlbmRUcmlnZ2VyKApAQCAtMTU4LDYgKzE5OCw4IEBAIFN1c3BlbmRUcmlnZ2VyKAogICAg
IFN5bmNDYXB0dXJlKCk7CiAgICAgU3luY0Rpc2FibGVJbnRlcnJ1cHRzKCk7CiAKKyAgICBfX1N1
c3BlbmRMb2dUaW1lcnMoIlBSRS1TVVNQRU5EIik7CisKICAgICBMb2dQcmludGYoTE9HX0xFVkVM
X0lORk8sCiAgICAgICAgICAgICAgICJTVVNQRU5EOiBTQ0hFRE9QX3NodXRkb3duOlNIVVRET1dO
X3N1c3BlbmQgPT09PT5cbiIpOwogICAgIHN0YXR1cyA9IFNjaGVkU2h1dGRvd24oU0hVVERPV05f
c3VzcGVuZCk7CkBAIC0xNjUsNiArMjA3LDggQEAgU3VzcGVuZFRyaWdnZXIoCiAgICAgICAgICAg
ICAgICJTVVNQRU5EOiBTQ0hFRE9QX3NodXRkb3duOlNIVVRET1dOX3N1c3BlbmQgPD09PT0gKCUw
OHgpXG4iLAogICAgICAgICAgICAgICBzdGF0dXMpOwogCisgICAgX19TdXNwZW5kTG9nVGltZXJz
KCJQT1NULVNVU1BFTkQiKTsKKwogICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsKICAgICAg
ICAgUExJU1RfRU5UUlkgTGlzdEVudHJ5OwogCi0tIAoyLjUuMwoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QK
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 20 14:20:10 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 20 Mar 2018 14:20:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1eyI7T-0005fN-SK; Tue, 20 Mar 2018 14:20:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <srs0=w1tw=gk=citrix.com=prvs=610284b50=owen.smith@srs-us1.protection.inumbo.net>)
 id 1eyI7S-0005cZ-Lf
 for win-pv-devel@lists.xenproject.org; Tue, 20 Mar 2018 14:20:06 +0000
X-Inumbo-ID: bfec6876-2c49-11e8-9728-bc764e045a96
Received: from SMTP02.CITRIX.COM (unknown [66.165.176.63])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bfec6876-2c49-11e8-9728-bc764e045a96;
 Tue, 20 Mar 2018 15:19:50 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.48,335,1517875200"; d="scan'208";a="466850363"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Tue, 20 Mar 2018 14:19:47 +0000
Message-ID: <20180320141947.12192-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Subject: [win-pv-devel] [PATCH] Ack "control/shutdown" as soon as possible.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Owen Smith <owen.smith@citrix.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW5hZ2VudC9zZXJ2
aWNlLmNwcCB8IDYgKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy94ZW5hZ2VudC9zZXJ2aWNlLmNwcCBiL3NyYy94
ZW5hZ2VudC9zZXJ2aWNlLmNwcAppbmRleCA0NjI1MGU4Li45NmU2MjBhIDEwMDY0NAotLS0gYS9z
cmMveGVuYWdlbnQvc2VydmljZS5jcHAKKysrIGIvc3JjL3hlbmFnZW50L3NlcnZpY2UuY3BwCkBA
IC0xODcsMTIgKzE4NywxMyBAQCBib29sIENYZW5JZmFjZUNyZWF0b3I6OkNoZWNrU2h1dGRvd24o
KQogICAgIGlmICghbV9kZXZpY2UtPlN0b3JlUmVhZCgiY29udHJvbC9zaHV0ZG93biIsIHR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2RldmljZS0+U3RvcmVXcml0ZSgiY29u
dHJvbC9zaHV0ZG93biIsICIiKTsKKwogICAgIENYZW5BZ2VudDo6TG9nKCJTaHV0ZG93bigld3Mp
ID0gJXNcbiIsIG1fZGV2aWNlLT5QYXRoKCksIHR5cGUuY19zdHIoKSk7CiAKICAgICBpZiAodHlw
ZSA9PSAicG93ZXJvZmYiKSB7CiAgICAgICAgIG1fYWdlbnQuRXZlbnRMb2coRVZFTlRfWEVOVVNF
Ul9QT1dFUk9GRik7CiAKLSAgICAgICAgbV9kZXZpY2UtPlN0b3JlV3JpdGUoImNvbnRyb2wvc2h1
dGRvd24iLCAiIik7CiAgICAgICAgIEFjcXVpcmVTaHV0ZG93blByaXZpbGVnZSgpOwogI3ByYWdt
YSB3YXJuaW5nKHN1cHByZXNzOjI4MTU5KSAvKiBDb25zaWRlciB1c2luZyBhIGRlc2lnbiBhbHRl
cm5hdGl2ZS4uLiBSZWFyY2hpdGVjdCB0byBhdm9pZCBSZWJvb3QgKi8KICAgICAgICAgaWYgKCFJ
bml0aWF0ZVN5c3RlbVNodXRkb3duRXgoTlVMTCwgTlVMTCwgMCwgVFJVRSwgRkFMU0UsCkBAIC0y
MDUsNyArMjA2LDYgQEAgYm9vbCBDWGVuSWZhY2VDcmVhdG9yOjpDaGVja1NodXRkb3duKCkKICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT0gInJlYm9vdCIpIHsKICAgICAgICAgbV9hZ2VudC5FdmVudExv
ZyhFVkVOVF9YRU5VU0VSX1JFQk9PVCk7CiAKLSAgICAgICAgbV9kZXZpY2UtPlN0b3JlV3JpdGUo
ImNvbnRyb2wvc2h1dGRvd24iLCAiIik7CiAgICAgICAgIEFjcXVpcmVTaHV0ZG93blByaXZpbGVn
ZSgpOwogI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjI4MTU5KSAvKiBDb25zaWRlciB1c2luZyBh
IGRlc2lnbiBhbHRlcm5hdGl2ZS4uLiBSZWFyY2hpdGVjdCB0byBhdm9pZCBSZWJvb3QgKi8KICAg
ICAgICAgaWYgKCFJbml0aWF0ZVN5c3RlbVNodXRkb3duRXgoTlVMTCwgTlVMTCwgMCwgVFJVRSwg
VFJVRSwKQEAgLTIxOCw3ICsyMTgsNiBAQCBib29sIENYZW5JZmFjZUNyZWF0b3I6OkNoZWNrU2h1
dGRvd24oKQogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiczQiKSB7CiAgICAgICAgIG1fYWdlbnQu
RXZlbnRMb2coRVZFTlRfWEVOVVNFUl9TNCk7CiAKLSAgICAgICAgbV9kZXZpY2UtPlN0b3JlV3Jp
dGUoImNvbnRyb2wvc2h1dGRvd24iLCAiIik7CiAgICAgICAgIEFjcXVpcmVTaHV0ZG93blByaXZp
bGVnZSgpOwogICAgICAgICBpZiAoIVNldFN5c3RlbVBvd2VyU3RhdGUoRkFMU0UsIEZBTFNFKSkg
ewogICAgICAgICAgICAgQ1hlbkFnZW50OjpMb2coIlNldFN5c3RlbVBvd2VyU3RhdGUgZmFpbGVk
ICUwOHhcbiIsIEdldExhc3RFcnJvcigpKTsKQEAgLTIyNyw3ICsyMjYsNiBAQCBib29sIENYZW5J
ZmFjZUNyZWF0b3I6OkNoZWNrU2h1dGRvd24oKQogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiczMi
KSB7CiAgICAgICAgIG1fYWdlbnQuRXZlbnRMb2coRVZFTlRfWEVOVVNFUl9TMyk7CiAKLSAgICAg
ICAgbV9kZXZpY2UtPlN0b3JlV3JpdGUoImNvbnRyb2wvc2h1dGRvd24iLCAiIik7CiAgICAgICAg
IEFjcXVpcmVTaHV0ZG93blByaXZpbGVnZSgpOwogICAgICAgICBpZiAoIVNldFN1c3BlbmRTdGF0
ZShGQUxTRSwgVFJVRSwgRkFMU0UpKSB7CiAgICAgICAgICAgICBDWGVuQWdlbnQ6OkxvZygiU2V0
U3VzcGVuZFN0YXRlIGZhaWxlZCAlMDh4XG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0tIAoyLjguMwoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1k
ZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Tue Mar 20 15:11:44 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 20 Mar 2018 15:11:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1eyIvP-0000vJ-Ne; Tue, 20 Mar 2018 15:11:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <srs0=tcfy=gk=citrix.com=prvs=6108bc5fa=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1eyIvO-0000vE-Vl
 for win-pv-devel@lists.xenproject.org; Tue, 20 Mar 2018 15:11:43 +0000
X-Inumbo-ID: 0d9105ae-2c51-11e8-8248-2fda3a446a53
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 0d9105ae-2c51-11e8-8248-2fda3a446a53;
 Tue, 20 Mar 2018 15:12:07 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.48,336,1517875200"; d="scan'208";a="70265202"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Owen Smith <owen.smith@citrix.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [win-pv-devel] [PATCH] Ack "control/shutdown" as soon as
 possible.
Thread-Index: AQHTwFmZbsvSmrPlG0Ozyl1JlSpI9KPZM0pQ
Date: Tue, 20 Mar 2018 14:46:18 +0000
Message-ID: <3a6777fb41f44e2ab21fc5d17a82a33e@AMSPEX02CL03.citrite.net>
References: <20180320141947.12192-1-owen.smith@citrix.com>
In-Reply-To: <20180320141947.12192-1-owen.smith@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
MIME-Version: 1.0
Subject: Re: [win-pv-devel] [PATCH] Ack "control/shutdown" as soon as
 possible.
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Owen Smith <owen.smith@citrix.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiB3aW4tcHYtZGV2ZWwgW21haWx0
bzp3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZ10gT24NCj4gQmVoYWxm
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAyMCBNYXJjaCAyMDE4IDE0OjIwDQo+
IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21pdGgg
PG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BBVENI
XSBBY2sgImNvbnRyb2wvc2h1dGRvd24iIGFzIHNvb24gYXMNCj4gcG9zc2libGUuDQo+IA0KPiBG
cm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBTaWduZWQtb2Zm
LWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQYXVs
IER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+IC0tLQ0KPiAgc3JjL3hlbmFn
ZW50L3NlcnZpY2UuY3BwIHwgNiArKy0tLS0NCj4gIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv
bnMoKyksIDQgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmFnZW50L3Nl
cnZpY2UuY3BwIGIvc3JjL3hlbmFnZW50L3NlcnZpY2UuY3BwDQo+IGluZGV4IDQ2MjUwZTguLjk2
ZTYyMGEgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5hZ2VudC9zZXJ2aWNlLmNwcA0KPiArKysgYi9z
cmMveGVuYWdlbnQvc2VydmljZS5jcHANCj4gQEAgLTE4NywxMiArMTg3LDEzIEBAIGJvb2wgQ1hl
bklmYWNlQ3JlYXRvcjo6Q2hlY2tTaHV0ZG93bigpDQo+ICAgICAgaWYgKCFtX2RldmljZS0+U3Rv
cmVSZWFkKCJjb250cm9sL3NodXRkb3duIiwgdHlwZSkpDQo+ICAgICAgICAgIHJldHVybiBmYWxz
ZTsNCj4gDQo+ICsgICAgbV9kZXZpY2UtPlN0b3JlV3JpdGUoImNvbnRyb2wvc2h1dGRvd24iLCAi
Iik7DQo+ICsNCj4gICAgICBDWGVuQWdlbnQ6OkxvZygiU2h1dGRvd24oJXdzKSA9ICVzXG4iLCBt
X2RldmljZS0+UGF0aCgpLA0KPiB0eXBlLmNfc3RyKCkpOw0KPiANCj4gICAgICBpZiAodHlwZSA9
PSAicG93ZXJvZmYiKSB7DQo+ICAgICAgICAgIG1fYWdlbnQuRXZlbnRMb2coRVZFTlRfWEVOVVNF
Ul9QT1dFUk9GRik7DQo+IA0KPiAtICAgICAgICBtX2RldmljZS0+U3RvcmVXcml0ZSgiY29udHJv
bC9zaHV0ZG93biIsICIiKTsNCj4gICAgICAgICAgQWNxdWlyZVNodXRkb3duUHJpdmlsZWdlKCk7
DQo+ICAjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6MjgxNTkpIC8qIENvbnNpZGVyIHVzaW5nIGEg
ZGVzaWduIGFsdGVybmF0aXZlLi4uDQo+IFJlYXJjaGl0ZWN0IHRvIGF2b2lkIFJlYm9vdCAqLw0K
PiAgICAgICAgICBpZiAoIUluaXRpYXRlU3lzdGVtU2h1dGRvd25FeChOVUxMLCBOVUxMLCAwLCBU
UlVFLCBGQUxTRSwNCj4gQEAgLTIwNSw3ICsyMDYsNiBAQCBib29sIENYZW5JZmFjZUNyZWF0b3I6
OkNoZWNrU2h1dGRvd24oKQ0KPiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAicmVib290Iikgew0K
PiAgICAgICAgICBtX2FnZW50LkV2ZW50TG9nKEVWRU5UX1hFTlVTRVJfUkVCT09UKTsNCj4gDQo+
IC0gICAgICAgIG1fZGV2aWNlLT5TdG9yZVdyaXRlKCJjb250cm9sL3NodXRkb3duIiwgIiIpOw0K
PiAgICAgICAgICBBY3F1aXJlU2h1dGRvd25Qcml2aWxlZ2UoKTsNCj4gICNwcmFnbWEgd2Fybmlu
ZyhzdXBwcmVzczoyODE1OSkgLyogQ29uc2lkZXIgdXNpbmcgYSBkZXNpZ24gYWx0ZXJuYXRpdmUu
Li4NCj4gUmVhcmNoaXRlY3QgdG8gYXZvaWQgUmVib290ICovDQo+ICAgICAgICAgIGlmICghSW5p
dGlhdGVTeXN0ZW1TaHV0ZG93bkV4KE5VTEwsIE5VTEwsIDAsIFRSVUUsIFRSVUUsDQo+IEBAIC0y
MTgsNyArMjE4LDYgQEAgYm9vbCBDWGVuSWZhY2VDcmVhdG9yOjpDaGVja1NodXRkb3duKCkNCj4g
ICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gInM0Iikgew0KPiAgICAgICAgICBtX2FnZW50LkV2ZW50
TG9nKEVWRU5UX1hFTlVTRVJfUzQpOw0KPiANCj4gLSAgICAgICAgbV9kZXZpY2UtPlN0b3JlV3Jp
dGUoImNvbnRyb2wvc2h1dGRvd24iLCAiIik7DQo+ICAgICAgICAgIEFjcXVpcmVTaHV0ZG93blBy
aXZpbGVnZSgpOw0KPiAgICAgICAgICBpZiAoIVNldFN5c3RlbVBvd2VyU3RhdGUoRkFMU0UsIEZB
TFNFKSkgew0KPiAgICAgICAgICAgICAgQ1hlbkFnZW50OjpMb2coIlNldFN5c3RlbVBvd2VyU3Rh
dGUgZmFpbGVkICUwOHhcbiIsDQo+IEdldExhc3RFcnJvcigpKTsNCj4gQEAgLTIyNyw3ICsyMjYs
NiBAQCBib29sIENYZW5JZmFjZUNyZWF0b3I6OkNoZWNrU2h1dGRvd24oKQ0KPiAgICAgIH0gZWxz
ZSBpZiAodHlwZSA9PSAiczMiKSB7DQo+ICAgICAgICAgIG1fYWdlbnQuRXZlbnRMb2coRVZFTlRf
WEVOVVNFUl9TMyk7DQo+IA0KPiAtICAgICAgICBtX2RldmljZS0+U3RvcmVXcml0ZSgiY29udHJv
bC9zaHV0ZG93biIsICIiKTsNCj4gICAgICAgICAgQWNxdWlyZVNodXRkb3duUHJpdmlsZWdlKCk7
DQo+ICAgICAgICAgIGlmICghU2V0U3VzcGVuZFN0YXRlKEZBTFNFLCBUUlVFLCBGQUxTRSkpIHsN
Cj4gICAgICAgICAgICAgIENYZW5BZ2VudDo6TG9nKCJTZXRTdXNwZW5kU3RhdGUgZmFpbGVkICUw
OHhcbiIsIEdldExhc3RFcnJvcigpKTsNCj4gLS0NCj4gMi44LjMNCj4gDQo+IA0KPiBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4tcHYtZGV2ZWwg
bWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVsDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2
ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Mar 23 10:16:17 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Mar 2018 10:16:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ezJk5-0006IP-Qy; Fri, 23 Mar 2018 10:16:13 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <paul.durrant@xenproject.org>) id 1ezJk5-0006IK-K1
 for win-pv-devel@lists.xenproject.org; Fri, 23 Mar 2018 10:16:13 +0000
Date: Fri, 23 Mar 2018 10:16:20 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <5115195.17.1521800181032.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_16_1389669.1521800180766"
X-Jenkins-Job: XENBUS-8.2
X-Jenkins-Result: UNSTABLE
Subject: [win-pv-devel] XENBUS-8.2 - Build #7 - Unstable
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_16_1389669.1521800180766
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #7.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENBUS-8.2/7/console to view the results.
------=_Part_16_1389669.1521800180766
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_16_1389669.1521800180766--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 23 11:37:26 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Mar 2018 11:37:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ezL0c-0004kB-Lc; Fri, 23 Mar 2018 11:37:22 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <paul.durrant@xenproject.org>) id 1ezL0b-0004k3-GG
 for win-pv-devel@lists.xenproject.org; Fri, 23 Mar 2018 11:37:21 +0000
Date: Fri, 23 Mar 2018 11:37:28 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <25587615.19.1521805048987.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_18_31828017.1521805048847"
X-Jenkins-Job: XENIFACE-master
X-Jenkins-Result: UNSTABLE
Subject: [win-pv-devel] XENIFACE-master - Build #73 - Unstable
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_18_31828017.1521805048847
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #73.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENIFACE-master/73/console to view the results.
------=_Part_18_31828017.1521805048847
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_18_31828017.1521805048847--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 23 14:27:22 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Mar 2018 14:27:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ezNf7-0001SI-IW; Fri, 23 Mar 2018 14:27:21 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <paul.durrant@xenproject.org>) id 1ezNf6-0001S0-1a
 for win-pv-devel@lists.xenproject.org; Fri, 23 Mar 2018 14:27:20 +0000
Date: Fri, 23 Mar 2018 14:27:27 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <6969840.21.1521815247664.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
In-Reply-To: <25587615.19.1521805048987.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
References: <25587615.19.1521805048987.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_20_1467540.1521815247539"
X-Jenkins-Job: XENIFACE-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENIFACE-master - Build #74 - Fixed
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_20_1467540.1521815247539
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #74.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENIFACE-master/74/console to view the results.
------=_Part_20_1467540.1521815247539
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_20_1467540.1521815247539--


From win-pv-devel-bounces@lists.xenproject.org Fri Mar 23 15:37:31 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Mar 2018 15:37:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1ezOkx-00077J-KD; Fri, 23 Mar 2018 15:37:27 +0000
Received: from winpvdrvbuild.xenproject.org ([162.242.160.44])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <paul.durrant@xenproject.org>) id 1ezOkw-00077E-EB
 for win-pv-devel@lists.xenproject.org; Fri, 23 Mar 2018 15:37:26 +0000
Date: Fri, 23 Mar 2018 15:37:33 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <12590126.23.1521819454104.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_22_8033146.1521819453995"
X-Jenkins-Job: XENBUS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENBUS-master - Build #157 - Successful
X-BeenThere: win-pv-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>

------=_Part_22_8033146.1521819453995
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #157.

Check console output at https://winpvdrvbuild.xenproject.org:8080/job/XENBUS-master/157/console to view the results.
------=_Part_22_8033146.1521819453995
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_22_8033146.1521819453995--


