From win-pv-devel-bounces@lists.xenproject.org Thu Feb 01 02:21:02 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Feb 2018 02:21:02 +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 1eh4Um-00008Z-02; Thu, 01 Feb 2018 02:20:59 +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 1eh4Uk-00008T-ON
 for win-pv-devel@lists.xenproject.org; Thu, 01 Feb 2018 02:20:58 +0000
Date: Thu, 1 Feb 2018 02:21:05 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <15499348.27.1517451670954.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_26_4769561.1517451665673"
X-Jenkins-Job: XENBUS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENBUS-master - Build #156 - 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_26_4769561.1517451665673
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #156.

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_26_4769561.1517451665673--


From win-pv-devel-bounces@lists.xenproject.org Thu Feb 01 14:40:14 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Feb 2018 14:40: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 1ehG28-0005L1-4s; Thu, 01 Feb 2018 14:40:12 +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=gqwz=e3=citrix.com=prvs=5632b0f9a=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1ehG26-0005H6-OY
 for win-pv-devel@lists.xenproject.org; Thu, 01 Feb 2018 14:40:10 +0000
X-Inumbo-ID: dda8ecf1-075d-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id dda8ecf1-075d-11e8-b9b1-635ca7ef6cff;
 Thu, 01 Feb 2018 14:40:37 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.46,444,1511827200"; d="scan'208";a="460666482"
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 1 Feb 2018 14:39:48 +0000
Message-ID: <1517495988-5653-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 xenvkbd] Dynamically build key-code to usage
	map
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>

VGhpcyBwYXRjaCBjcmVhdGVzIGEgaGVhZGVyIGRlZmluaW5nIHRoZSBsaW51eCBrZXljb2RlcyB1
c2VkIGJ5IHRoZQp2a2JkIHByb3RvY29sIGFuZCBtYWNyb3MgdG8gbWFwIHRob3NlIChieSBuYW1l
KSB0byBISUQgdXNhZ2UgY29kZXMuCkEgbmV3IGZ1bmN0aW9uIHRoZW4gbWFrZXMgdXNlIG9mIHRo
ZXNlIG9mIHRoZSBuZXcgZGVmaW5pdGlvbnMgYW5kIG1hY3Jvcwp0byBjcmVhdGUgYSBkaXJlY3Qg
bWFwcGluZyBmcm9tIGtleS1jb2RlIHRvIHVzYWdlIGR5bmFtaWNhbGx5IGR1cmluZwpyaW5nIGlu
aXRpYWxpemF0aW9uLgoKVGhlIHBhdGNoIGFsc28gYWRkcyBtaXNzaW5nIGxvY2tpbmcgaW5zaWRl
IHRoZSBEUEMgYW5kIGEgc2h1dGRvd24gcmFjZQp3aGljaCBjb3VsZCBvY2Nhc2lvbmFsbHkgZnJl
ZSB0aGUgcmluZyBzdHJ1Y3R1cmUgZnJvbSB1bmRlcm5lYXRoIHRoZSBEUEMuCgpTaWduZWQtb2Zm
LWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KIGluY2x1ZGUv
bGludXgta2V5Y29kZXMuaCB8IDI0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKIHNyYy94ZW52a2JkL3JpbmcuYyAgICAgICB8ICA5NyArKysrKysrKysrKysr
LS0tLS0KIHNyYy94ZW52a2JkL3ZrYmQuaCAgICAgICB8IDI1NiArKysrKysrKysrKysrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0NDkgaW5zZXJ0
aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGlu
dXgta2V5Y29kZXMuaAoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgta2V5Y29kZXMuaCBiL2lu
Y2x1ZGUvbGludXgta2V5Y29kZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43N2I0YzRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC1rZXljb2Rlcy5oCkBA
IC0wLDAgKzEsMjQ5IEBACisjZGVmaW5lIEtFWV9SRVNFUlZFRCAwCisjZGVmaW5lIEtFWV9FU0Mg
MQorI2RlZmluZSBLRVlfMSAyCisjZGVmaW5lIEtFWV8yIDMKKyNkZWZpbmUgS0VZXzMgNAorI2Rl
ZmluZSBLRVlfNCA1CisjZGVmaW5lIEtFWV81IDYKKyNkZWZpbmUgS0VZXzYgNworI2RlZmluZSBL
RVlfNyA4CisjZGVmaW5lIEtFWV84IDkKKyNkZWZpbmUgS0VZXzkgMTAKKyNkZWZpbmUgS0VZXzAg
MTEKKyNkZWZpbmUgS0VZX01JTlVTIDEyCisjZGVmaW5lIEtFWV9FUVVBTCAxMworI2RlZmluZSBL
RVlfQkFDS1NQQUNFIDE0CisjZGVmaW5lIEtFWV9UQUIgMTUKKyNkZWZpbmUgS0VZX1EgMTYKKyNk
ZWZpbmUgS0VZX1cgMTcKKyNkZWZpbmUgS0VZX0UgMTgKKyNkZWZpbmUgS0VZX1IgMTkKKyNkZWZp
bmUgS0VZX1QgMjAKKyNkZWZpbmUgS0VZX1kgMjEKKyNkZWZpbmUgS0VZX1UgMjIKKyNkZWZpbmUg
S0VZX0kgMjMKKyNkZWZpbmUgS0VZX08gMjQKKyNkZWZpbmUgS0VZX1AgMjUKKyNkZWZpbmUgS0VZ
X0xFRlRCUkFDRSAyNgorI2RlZmluZSBLRVlfUklHSFRCUkFDRSAyNworI2RlZmluZSBLRVlfRU5U
RVIgMjgKKyNkZWZpbmUgS0VZX0xFRlRDVFJMIDI5CisjZGVmaW5lIEtFWV9BIDMwCisjZGVmaW5l
IEtFWV9TIDMxCisjZGVmaW5lIEtFWV9EIDMyCisjZGVmaW5lIEtFWV9GIDMzCisjZGVmaW5lIEtF
WV9HIDM0CisjZGVmaW5lIEtFWV9IIDM1CisjZGVmaW5lIEtFWV9KIDM2CisjZGVmaW5lIEtFWV9L
IDM3CisjZGVmaW5lIEtFWV9MIDM4CisjZGVmaW5lIEtFWV9TRU1JQ09MT04gMzkKKyNkZWZpbmUg
S0VZX0FQT1NUUk9QSEUgNDAKKyNkZWZpbmUgS0VZX0dSQVZFIDQxCisjZGVmaW5lIEtFWV9MRUZU
U0hJRlQgNDIKKyNkZWZpbmUgS0VZX0JBQ0tTTEFTSCA0MworI2RlZmluZSBLRVlfWiA0NAorI2Rl
ZmluZSBLRVlfWCA0NQorI2RlZmluZSBLRVlfQyA0NgorI2RlZmluZSBLRVlfViA0NworI2RlZmlu
ZSBLRVlfQiA0OAorI2RlZmluZSBLRVlfTiA0OQorI2RlZmluZSBLRVlfTSA1MAorI2RlZmluZSBL
RVlfQ09NTUEgNTEKKyNkZWZpbmUgS0VZX0RPVCA1MgorI2RlZmluZSBLRVlfU0xBU0ggNTMKKyNk
ZWZpbmUgS0VZX1JJR0hUU0hJRlQgNTQKKyNkZWZpbmUgS0VZX0tQQVNURVJJU0sgNTUKKyNkZWZp
bmUgS0VZX0xFRlRBTFQgNTYKKyNkZWZpbmUgS0VZX1NQQUNFIDU3CisjZGVmaW5lIEtFWV9DQVBT
TE9DSyA1OAorI2RlZmluZSBLRVlfRjEgNTkKKyNkZWZpbmUgS0VZX0YyIDYwCisjZGVmaW5lIEtF
WV9GMyA2MQorI2RlZmluZSBLRVlfRjQgNjIKKyNkZWZpbmUgS0VZX0Y1IDYzCisjZGVmaW5lIEtF
WV9GNiA2NAorI2RlZmluZSBLRVlfRjcgNjUKKyNkZWZpbmUgS0VZX0Y4IDY2CisjZGVmaW5lIEtF
WV9GOSA2NworI2RlZmluZSBLRVlfRjEwIDY4CisjZGVmaW5lIEtFWV9OVU1MT0NLIDY5CisjZGVm
aW5lIEtFWV9TQ1JPTExMT0NLIDcwCisjZGVmaW5lIEtFWV9LUDcgNzEKKyNkZWZpbmUgS0VZX0tQ
OCA3MgorI2RlZmluZSBLRVlfS1A5IDczCisjZGVmaW5lIEtFWV9LUE1JTlVTIDc0CisjZGVmaW5l
IEtFWV9LUDQgNzUKKyNkZWZpbmUgS0VZX0tQNSA3NgorI2RlZmluZSBLRVlfS1A2IDc3CisjZGVm
aW5lIEtFWV9LUFBMVVMgNzgKKyNkZWZpbmUgS0VZX0tQMSA3OQorI2RlZmluZSBLRVlfS1AyIDgw
CisjZGVmaW5lIEtFWV9LUDMgODEKKyNkZWZpbmUgS0VZX0tQMCA4MgorI2RlZmluZSBLRVlfS1BE
T1QgODMKKy8vIEdBUAorI2RlZmluZSBLRVlfWkVOS0FLVUhBTktBS1UgODUKKyNkZWZpbmUgS0VZ
XzEwMk5EIDg2CisjZGVmaW5lIEtFWV9GMTEgODcKKyNkZWZpbmUgS0VZX0YxMiA4OAorI2RlZmlu
ZSBLRVlfUk8gODkKKyNkZWZpbmUgS0VZX0tBVEFLQU5BIDkwCisjZGVmaW5lIEtFWV9ISVJBR0FO
QSA5MQorI2RlZmluZSBLRVlfSEVOS0FOIDkyCisjZGVmaW5lIEtFWV9LQVRBS0FOQUhJUkFHQU5B
IDkzCisjZGVmaW5lIEtFWV9NVUhFTktBTiA5NAorI2RlZmluZSBLRVlfS1BKUENPTU1BIDk1Cisj
ZGVmaW5lIEtFWV9LUEVOVEVSIDk2CisjZGVmaW5lIEtFWV9SSUdIVENUUkwgOTcKKyNkZWZpbmUg
S0VZX0tQU0xBU0ggOTgKKyNkZWZpbmUgS0VZX1NZU1JRIDk5CisjZGVmaW5lIEtFWV9SSUdIVEFM
VCAxMDAKKyNkZWZpbmUgS0VZX0xJTkVGRUVEIDEwMQorI2RlZmluZSBLRVlfSE9NRSAxMDIKKyNk
ZWZpbmUgS0VZX1VQIDEwMworI2RlZmluZSBLRVlfUEFHRVVQIDEwNAorI2RlZmluZSBLRVlfTEVG
VCAxMDUKKyNkZWZpbmUgS0VZX1JJR0hUIDEwNgorI2RlZmluZSBLRVlfRU5EIDEwNworI2RlZmlu
ZSBLRVlfRE9XTiAxMDgKKyNkZWZpbmUgS0VZX1BBR0VET1dOIDEwOQorI2RlZmluZSBLRVlfSU5T
RVJUIDExMAorI2RlZmluZSBLRVlfREVMRVRFIDExMQorI2RlZmluZSBLRVlfTUFDUk8gMTEyCisj
ZGVmaW5lIEtFWV9NVVRFIDExMworI2RlZmluZSBLRVlfVk9MVU1FRE9XTiAxMTQKKyNkZWZpbmUg
S0VZX1ZPTFVNRVVQIDExNQorI2RlZmluZSBLRVlfUE9XRVIgMTE2CisjZGVmaW5lIEtFWV9LUEVR
VUFMIDExNworI2RlZmluZSBLRVlfS1BQTFVTTUlOVVMgMTE4CisjZGVmaW5lIEtFWV9QQVVTRSAx
MTkKKyNkZWZpbmUgS0VZX1NDQUxFIDEyMAorI2RlZmluZSBLRVlfS1BDT01NQSAxMjEKKyNkZWZp
bmUgS0VZX0hBTkdFVUwgMTIyCisjZGVmaW5lIEtFWV9IQU5KQSAxMjMKKyNkZWZpbmUgS0VZX1lF
TiAxMjQKKyNkZWZpbmUgS0VZX0xFRlRNRVRBIDEyNQorI2RlZmluZSBLRVlfUklHSFRNRVRBIDEy
NgorI2RlZmluZSBLRVlfQ09NUE9TRSAxMjcKKyNkZWZpbmUgS0VZX1NUT1AgMTI4CisjZGVmaW5l
IEtFWV9BR0FJTiAxMjkKKyNkZWZpbmUgS0VZX1BST1BTIDEzMAorI2RlZmluZSBLRVlfVU5ETyAx
MzEKKyNkZWZpbmUgS0VZX0ZST05UIDEzMgorI2RlZmluZSBLRVlfQ09QWSAxMzMKKyNkZWZpbmUg
S0VZX09QRU4gMTM0CisjZGVmaW5lIEtFWV9QQVNURSAxMzUKKyNkZWZpbmUgS0VZX0ZJTkQgMTM2
CisjZGVmaW5lIEtFWV9DVVQgMTM3CisjZGVmaW5lIEtFWV9IRUxQIDEzOAorI2RlZmluZSBLRVlf
TUVOVSAxMzkKKyNkZWZpbmUgS0VZX0NBTEMgMTQwCisjZGVmaW5lIEtFWV9TRVRVUCAxNDEKKyNk
ZWZpbmUgS0VZX1NMRUVQIDE0MgorI2RlZmluZSBLRVlfV0FLRVVQIDE0MworI2RlZmluZSBLRVlf
RklMRSAxNDQKKyNkZWZpbmUgS0VZX1NFTkRGSUxFIDE0NQorI2RlZmluZSBLRVlfREVMRVRFRklM
RSAxNDYKKyNkZWZpbmUgS0VZX1hGRVIgMTQ3CisjZGVmaW5lIEtFWV9QUk9HMSAxNDgKKyNkZWZp
bmUgS0VZX1BST0cyIDE0OQorI2RlZmluZSBLRVlfV1dXIDE1MAorI2RlZmluZSBLRVlfTVNET1Mg
MTUxCisjZGVmaW5lIEtFWV9TQ1JFRU5MT0NLIDE1MgorI2RlZmluZSBLRVlfUk9UQVRFX0RJU1BM
QVkgMTUzCisjZGVmaW5lIEtFWV9DWUNMRVdJTkRPV1MgMTU0CisjZGVmaW5lIEtFWV9NQUlMIDE1
NQorI2RlZmluZSBLRVlfQk9PS01BUktTIDE1NgorI2RlZmluZSBLRVlfQ09NUFVURVIgMTU3Cisj
ZGVmaW5lIEtFWV9CQUNLIDE1OAorI2RlZmluZSBLRVlfRk9SV0FSRCAxNTkKKyNkZWZpbmUgS0VZ
X0NMT1NFQ0QgMTYwCisjZGVmaW5lIEtFWV9FSkVDVENEIDE2MQorI2RlZmluZSBLRVlfRUpFQ1RD
TE9TRUNEIDE2MgorI2RlZmluZSBLRVlfTkVYVFNPTkcgMTYzCisjZGVmaW5lIEtFWV9QTEFZUEFV
U0UgMTY0CisjZGVmaW5lIEtFWV9QUkVWSU9VU1NPTkcgMTY1CisjZGVmaW5lIEtFWV9TVE9QQ0Qg
MTY2CisjZGVmaW5lIEtFWV9SRUNPUkQgMTY3CisjZGVmaW5lIEtFWV9SRVdJTkQgMTY4CisjZGVm
aW5lIEtFWV9QSE9ORSAxNjkKKyNkZWZpbmUgS0VZX0lTTyAxNzAKKyNkZWZpbmUgS0VZX0NPTkZJ
RyAxNzEKKyNkZWZpbmUgS0VZX0hPTUVQQUdFIDE3MgorI2RlZmluZSBLRVlfUkVGUkVTSCAxNzMK
KyNkZWZpbmUgS0VZX0VYSVQgMTc0CisjZGVmaW5lIEtFWV9NT1ZFIDE3NQorI2RlZmluZSBLRVlf
RURJVCAxNzYKKyNkZWZpbmUgS0VZX1NDUk9MTFVQIDE3NworI2RlZmluZSBLRVlfU0NST0xMRE9X
TiAxNzgKKyNkZWZpbmUgS0VZX0tQTEVGVFBBUkVOIDE3OQorI2RlZmluZSBLRVlfS1BSSUdIVFBB
UkVOIDE4MAorI2RlZmluZSBLRVlfTkVXIDE4MQorI2RlZmluZSBLRVlfUkVETyAxODIKKyNkZWZp
bmUgS0VZX0YxMyAxODMKKyNkZWZpbmUgS0VZX0YxNCAxODQKKyNkZWZpbmUgS0VZX0YxNSAxODUK
KyNkZWZpbmUgS0VZX0YxNiAxODYKKyNkZWZpbmUgS0VZX0YxNyAxODcKKyNkZWZpbmUgS0VZX0Yx
OCAxODgKKyNkZWZpbmUgS0VZX0YxOSAxODkKKyNkZWZpbmUgS0VZX0YyMCAxOTAKKyNkZWZpbmUg
S0VZX0YyMSAxOTEKKyNkZWZpbmUgS0VZX0YyMiAxOTIKKyNkZWZpbmUgS0VZX0YyMyAxOTMKKyNk
ZWZpbmUgS0VZX0YyNCAxOTQKKy8vR0FQCisvL0dBUAorLy9HQVAKKy8vR0FQCisvL0dBUAorI2Rl
ZmluZSBLRVlfUExBWUNEIDIwMAorI2RlZmluZSBLRVlfUEFVU0VDRCAyMDEKKyNkZWZpbmUgS0VZ
X1BST0czIDIwMgorI2RlZmluZSBLRVlfUFJPRzQgMjAzCisjZGVmaW5lIEtFWV9EQVNIQk9BUkQg
MjA0CisjZGVmaW5lIEtFWV9TVVNQRU5EIDIwNQorI2RlZmluZSBLRVlfQ0xPU0UgMjA2CisjZGVm
aW5lIEtFWV9QTEFZIDIwNworI2RlZmluZSBLRVlfRkFTVEZPUldBUkQgMjA4CisjZGVmaW5lIEtF
WV9CQVNTQk9PU1QgMjA5CisjZGVmaW5lIEtFWV9QUklOVCAyMTAKKyNkZWZpbmUgS0VZX0hQIDIx
MQorI2RlZmluZSBLRVlfQ0FNRVJBIDIxMgorI2RlZmluZSBLRVlfU09VTkQgMjEzCisjZGVmaW5l
IEtFWV9RVUVTVElPTiAyMTQKKyNkZWZpbmUgS0VZX0VNQUlMIDIxNQorI2RlZmluZSBLRVlfQ0hB
VCAyMTYKKyNkZWZpbmUgS0VZX1NFQVJDSCAyMTcKKyNkZWZpbmUgS0VZX0NPTk5FQ1QgMjE4Cisj
ZGVmaW5lIEtFWV9GSU5BTkNFIDIxOQorI2RlZmluZSBLRVlfU1BPUlQgMjIwCisjZGVmaW5lIEtF
WV9TSE9QIDIyMQorI2RlZmluZSBLRVlfQUxURVJBU0UgMjIyCisjZGVmaW5lIEtFWV9DQU5DRUwg
MjIzCisjZGVmaW5lIEtFWV9CUklHSFRORVNTRE9XTiAyMjQKKyNkZWZpbmUgS0VZX0JSSUdIVE5F
U1NVUCAyMjUKKyNkZWZpbmUgS0VZX01FRElBIDIyNgorI2RlZmluZSBLRVlfU1dJVENIVklERU9N
T0RFIDIyNworI2RlZmluZSBLRVlfS0JESUxMVU1UT0dHTEUgMjI4CisjZGVmaW5lIEtFWV9LQkRJ
TExVTURPV04gMjI5CisjZGVmaW5lIEtFWV9LQkRJTExVTVVQIDIzMAorI2RlZmluZSBLRVlfU0VO
RCAyMzEKKyNkZWZpbmUgS0VZX1JFUExZIDIzMgorI2RlZmluZSBLRVlfRk9SV0FSRE1BSUwgMjMz
CisjZGVmaW5lIEtFWV9TQVZFIDIzNAorI2RlZmluZSBLRVlfRE9DVU1FTlRTIDIzNQorI2RlZmlu
ZSBLRVlfQkFUVEVSWSAyMzYKKyNkZWZpbmUgS0VZX0JMVUVUT09USCAyMzcKKyNkZWZpbmUgS0VZ
X1dMQU4gMjM4CisjZGVmaW5lIEtFWV9VV0IgMjM5CisjZGVmaW5lIEtFWV9VTktOT1dOIDI0MAor
I2RlZmluZSBLRVlfVklERU9fTkVYVCAyNDEKKyNkZWZpbmUgS0VZX1ZJREVPX1BSRVYgMjQyCisj
ZGVmaW5lIEtFWV9CUklHSFRORVNTX0NZQ0xFIDI0MworI2RlZmluZSBLRVlfQlJJR0hUTkVTU19B
VVRPIDI0NAorI2RlZmluZSBLRVlfRElTUExBWV9PRkYgMjQ1CisjZGVmaW5lIEtFWV9XV0FOIDI0
NgorI2RlZmluZSBLRVlfUkZLSUxMIDI0NworI2RlZmluZSBLRVlfTUlDTVVURSAyNDgKZGlmZiAt
LWdpdCBhL3NyYy94ZW52a2JkL3JpbmcuYyBiL3NyYy94ZW52a2JkL3JpbmcuYwppbmRleCBkOTcw
Y2VjLi4yNWQ5N2VjIDEwMDY0NAotLS0gYS9zcmMveGVudmtiZC9yaW5nLmMKKysrIGIvc3JjL3hl
bnZrYmQvcmluZy5jCkBAIC04NCw2ICs4NCw4IEBAIHN0cnVjdCBfWEVOVktCRF9SSU5HIHsKICAg
ICBYRU5WS0JEX0hJRF9BQlNNT1VTRSAgICBBYnNNb3VzZVJlcG9ydDsKICAgICBCT09MRUFOICAg
ICAgICAgICAgICAgICBLZXlib2FyZFBlbmRpbmc7CiAgICAgQk9PTEVBTiAgICAgICAgICAgICAg
ICAgQWJzTW91c2VQZW5kaW5nOworCisgICAgVVNIT1JUICAgICAgICAgICAgICAgICAgS2V5Q29k
ZVRvVXNhZ2VNYXBwaW5nWzEgPDwgKHNpemVvZihVQ0hBUikgKiA4KV07CiB9OwogCiAjZGVmaW5l
IFhFTlZLQkRfUklOR19UQUcgICAgJ2duaVInCkBAIC0xODYsMTMgKzE4OCw0NCBAQCBTZXRBcnJh
eSgKICAgICB9CiB9CiAKK3N0cnVjdCBfS0VZX0NPREVfVE9fVVNBR0UgeworICAgIFVDSEFSICAg
ICAgIEtleUNvZGU7CisgICAgVVNIT1JUICAgICAgVXNhZ2U7Cit9OworCisjZGVmaW5lIERFRklO
RV9VU0FHRShfS2V5Q29kZSwgX1VzYWdlKSBcCisgICAgeyBfS2V5Q29kZSwgX1VzYWdlIH0KKwor
c3RhdGljIHN0cnVjdCBfS0VZX0NPREVfVE9fVVNBR0UgS2V5Q29kZVRvVXNhZ2VUYWJsZVtdID0g
eworICAgIERFRklORV9VU0FHRV9UQUJMRQorfTsKKworI3VuZGVmIERFRklORV9VU0FHRQorCitz
dGF0aWMgVk9JRCBSaW5nQnVpbGRLZXlDb2RlVG9Vc2FnZU1hcHBpbmcoCisgICAgSU4gIFBYRU5W
S0JEX1JJTkcgICBSaW5nCisgICAgKQoreworICAgIFVMT05HICAgICAgICAgICAgICAgSW5kZXg7
CisKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBBUlJBWVNJWkUoS2V5Q29kZVRvVXNhZ2VU
YWJsZSk7IEluZGV4KyspIHsKKyAgICAgICAgc3RydWN0IF9LRVlfQ09ERV9UT19VU0FHRSAgICpF
bnRyeSA9ICZLZXlDb2RlVG9Vc2FnZVRhYmxlW0luZGV4XTsKKworICAgICAgICBBU1NFUlQzVShF
bnRyeS0+S2V5Q29kZSwgPCwgQVJSQVlTSVpFKFJpbmctPktleUNvZGVUb1VzYWdlTWFwcGluZykp
OworICAgICAgICBBU1NFUlQzVShSaW5nLT5LZXlDb2RlVG9Vc2FnZU1hcHBpbmdbRW50cnktPktl
eUNvZGVdLCA9PSwgMCk7CisgICAgICAgIFJpbmctPktleUNvZGVUb1VzYWdlTWFwcGluZ1tFbnRy
eS0+S2V5Q29kZV0gPSBFbnRyeS0+VXNhZ2U7CisgICAgfQorfQorCiBzdGF0aWMgRk9SQ0VJTkxJ
TkUgVVNIT1JUCi1LZXlDb2RlVG9Vc2FnZSgKLSAgICBJTiAgVUxPTkcgICBLZXlDb2RlCitfX1Jp
bmdLZXlDb2RlVG9Vc2FnZSgKKyAgICBJTiAgUFhFTlZLQkRfUklORyAgIFJpbmcsCisgICAgSU4g
IFVMT05HICAgICAgICAgICBLZXlDb2RlCiAgICAgKQogewotICAgIGlmIChLZXlDb2RlIDwgc2l6
ZW9mKFZrYmRLZXlDb2RlVG9Vc2FnZSkvc2l6ZW9mKFZrYmRLZXlDb2RlVG9Vc2FnZVswXSkpCi0g
ICAgICAgIHJldHVybiBWa2JkS2V5Q29kZVRvVXNhZ2VbS2V5Q29kZV07CisgICAgaWYgKEtleUNv
ZGUgPCBBUlJBWVNJWkUoUmluZy0+S2V5Q29kZVRvVXNhZ2VNYXBwaW5nKSkKKyAgICAgICAgcmV0
dXJuIFJpbmctPktleUNvZGVUb1VzYWdlTWFwcGluZ1tLZXlDb2RlXTsKKwogICAgIHJldHVybiAw
OwogfQogCkBAIC0yMzIsNyArMjY1LDcgQEAgX19SaW5nRXZlbnRLZXlwcmVzcygKIAogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIG1hcCBLZXlDb2RlIHRvIFVzYWdlCi0gICAgICAgIFVTSE9SVCAg
VXNhZ2UgPSBLZXlDb2RlVG9Vc2FnZShLZXlDb2RlKTsKKyAgICAgICAgVVNIT1JUICBVc2FnZSA9
IF9fUmluZ0tleUNvZGVUb1VzYWdlKFJpbmcsIEtleUNvZGUpOwogICAgICAgICBpZiAoVXNhZ2Ug
PT0gMCkKICAgICAgICAgICAgIHJldHVybjsgLy8gbm9uLXN0YW5kYXJkIGtleQogCkBAIC0yNzIs
NiArMzA1LDI1IEBAIF9fUmluZ0V2ZW50UG9zaXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTlZLQkRfSElEX0FCU01PVVNFKSk7CiB9
CiAKK3N0YXRpYyBWT0lECitSaW5nQWNxdWlyZUxvY2soCisgICAgSU4gIFBWT0lEICAgICAgIENv
bnRleHQKKyAgICApCit7CisgICAgUFhFTlZLQkRfUklORyAgIFJpbmcgPSBDb250ZXh0OworICAg
IEtlQWNxdWlyZVNwaW5Mb2NrQXREcGNMZXZlbCgmUmluZy0+TG9jayk7Cit9CisKK3N0YXRpYyBW
T0lECitSaW5nUmVsZWFzZUxvY2soCisgICAgSU4gIFBWT0lEICAgICAgIENvbnRleHQKKyAgICAp
Cit7CisgICAgUFhFTlZLQkRfUklORyAgIFJpbmcgPSBDb250ZXh0OworI3ByYWdtYSB3YXJuaW5n
KHN1cHByZXNzOjI2MTEwKQorICAgIEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZSaW5n
LT5Mb2NrKTsKK30KKwogX19kcnZfZnVuY3Rpb25DbGFzcyhLREVGRVJSRURfUk9VVElORSkKIF9f
ZHJ2X21heElSUUwoRElTUEFUQ0hfTEVWRUwpCiBfX2Rydl9taW5JUlFMKERJU1BBVENIX0xFVkVM
KQpAQCAtMjkzLDYgKzM0NSwxMSBAQCBSaW5nRHBjKAogCiAgICAgQVNTRVJUKFJpbmcgIT0gTlVM
TCk7CiAKKyAgICBSaW5nQWNxdWlyZUxvY2soUmluZyk7CisKKyAgICBpZiAoIVJpbmctPkVuYWJs
ZWQpCisgICAgICAgIGdvdG8gZG9uZTsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgVUxPTkcg
ICBpbl9jb25zOwogICAgICAgICBVTE9ORyAgIGluX3Byb2Q7CkBAIC0zNTUsMjUgKzQxMiw5IEBA
IFJpbmdEcGMoCiAgICAgICAgICAgICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAogICAg
ICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5lbCwKICAgICAgICAgICAgICAgICAgIEZBTFNFKTsK
LX0KLQotc3RhdGljIFZPSUQKLVJpbmdBY3F1aXJlTG9jaygKLSAgICBJTiAgUFZPSUQgICAgICAg
Q29udGV4dAotICAgICkKLXsKLSAgICBQWEVOVktCRF9SSU5HICAgUmluZyA9IENvbnRleHQ7Ci0g
ICAgS2VBY3F1aXJlU3BpbkxvY2tBdERwY0xldmVsKCZSaW5nLT5Mb2NrKTsKLX0KIAotc3RhdGlj
IFZPSUQKLVJpbmdSZWxlYXNlTG9jaygKLSAgICBJTiAgUFZPSUQgICAgICAgQ29udGV4dAotICAg
ICkKLXsKLSAgICBQWEVOVktCRF9SSU5HICAgUmluZyA9IENvbnRleHQ7Ci0jcHJhZ21hIHdhcm5p
bmcoc3VwcHJlc3M6MjYxMTApCi0gICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBjTGV2ZWwoJlJp
bmctPkxvY2spOworZG9uZToKKyAgICBSaW5nUmVsZWFzZUxvY2soUmluZyk7CiB9CiAKIEtTRVJW
SUNFX1JPVVRJTkUgICAgUmluZ0V2dGNobkNhbGxiYWNrOwpAQCAtNDY4LDYgKzUwOSw4IEBAIFJp
bmdJbml0aWFsaXplKAogICAgIEZkb0dldEV2dGNobkludGVyZmFjZShQZG9HZXRGZG8oRnJvbnRl
bmRHZXRQZG8oRnJvbnRlbmQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJigqUmluZykt
PkV2dGNobkludGVyZmFjZSk7CiAKKyAgICBSaW5nQnVpbGRLZXlDb2RlVG9Vc2FnZU1hcHBpbmco
KlJpbmcpOworCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogCiBmYWlsMToKQEAgLTgwMSw2
ICs4NDQsOCBAQCBSaW5nRGlzY29ubmVjdCgKIHsKICAgICBUcmFjZSgiPT09PT0+XG4iKTsKIAor
ICAgIFJpbmctPkNvbm5lY3RlZCA9IEZBTFNFOworCiAgICAgWEVOQlVTX0RFQlVHKERlcmVnaXN0
ZXIsCiAgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwKICAgICAgICAgICAg
ICAgICAgUmluZy0+RGVidWdDYWxsYmFjayk7CkBAIC04NTAsOCArODk1LDEzIEBAIFJpbmdUZWFy
ZG93bigKICAgICApCiB7CiAgICAgVHJhY2UoIj09PT09PlxuIik7CisKKyAgICBLZUZsdXNoUXVl
dWVkRHBjcygpOwogICAgIFJpbmctPkRwY3MgPSAwOwogCisgICAgUnRsWmVyb01lbW9yeSgmUmlu
Zy0+S2V5Q29kZVRvVXNhZ2VNYXBwaW5nLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mIChSaW5n
LT5LZXlDb2RlVG9Vc2FnZU1hcHBpbmcpKTsKKwogICAgIFJpbmctPkFic1BvaW50ZXIgPSBGQUxT
RTsKICAgICBSaW5nLT5SYXdQb2ludGVyID0gRkFMU0U7CiAKQEAgLTg3Nyw2ICs5MjcsNyBAQCBS
aW5nVGVhcmRvd24oCiAKICAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KFJpbmcsIHNpemVvZiAoWEVO
VktCRF9SSU5HKSkpOwogICAgIF9fUmluZ0ZyZWUoUmluZyk7CisKICAgICBUcmFjZSgiPD09PT09
XG4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3hlbnZrYmQvdmtiZC5oIGIvc3JjL3hlbnZrYmQv
dmtiZC5oCmluZGV4IGU0NTUwNzguLmQ4YjI3MjUgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52a2JkL3Zr
YmQuaAorKysgYi9zcmMveGVudmtiZC92a2JkLmgKQEAgLTEyNSwxMzUgKzEyNSwxMzEgQEAgc3Rh
dGljIGNvbnN0IEhJRF9ERVZJQ0VfQVRUUklCVVRFUyBWa2JkRGV2aWNlQXR0cmlidXRlcyA9IHsK
ICAgICAweDAxMDEKIH07CiAKLXN0YXRpYyBjb25zdCBVU0hPUlQgVmtiZEtleUNvZGVUb1VzYWdl
W10gPSB7Ci0gICAgMHgwMCwgLy8gS0VZX1JFU0VSVkVECi0gICAgMHgyOSwgLy8gS0VZX0VTQwot
ICAgIDB4MUUsIC8vIEtFWV8xCi0gICAgMHgxRiwgLy8gS0VZXzIKLSAgICAweDIwLCAvLyBLRVlf
MwotICAgIDB4MjEsIC8vIEtFWV80Ci0gICAgMHgyMiwgLy8gS0VZXzUKLSAgICAweDIzLCAvLyBL
RVlfNgotICAgIDB4MjQsIC8vIEtFWV83Ci0gICAgMHgyNSwgLy8gS0VZXzgKLSAgICAweDI2LCAv
LyBLRVlfOQotICAgIDB4MjcsIC8vIEtFWV8wCi0gICAgMHgyRCwgLy8gS0VZX01JTlVTCi0gICAg
MHgyRSwgLy8gS0VZX0VRVUFMCi0gICAgMHgyQSwgLy8gS0VZX0JBQ0tTUEFDRQotICAgIDB4MkIs
IC8vIEtFWV9UQUIKLSAgICAweDE0LCAvLyBLRVlfUQotICAgIDB4MUEsIC8vIEtFWV9XCi0gICAg
MHgwOCwgLy8gS0VZX0UKLSAgICAweDE1LCAvLyBLRVlfUgotICAgIDB4MTcsIC8vIEtFWV9UCi0g
ICAgMHgxQywgLy8gS0VZX1kKLSAgICAweDE4LCAvLyBLRVlfVQotICAgIDB4MEMsIC8vIEtFWV9J
Ci0gICAgMHgxMiwgLy8gS0VZX08KLSAgICAweDEzLCAvLyBLRVlfUAotICAgIDB4MkYsIC8vIEtF
WV9MRUZUQlJBQ0UKLSAgICAweDMwLCAvLyBLRVlfUklHSFRCUkFDRQotICAgIDB4MjgsIC8vIEtF
WV9FTlRFUgotICAgIDB4RTAsIC8vIEtFWV9MRUZUQ1RSTAotICAgIDB4MDQsIC8vIEtFWV9BCi0g
ICAgMHgxNiwgLy8gS0VZX1MKLSAgICAweDA3LCAvLyBLRVlfRAotICAgIDB4MDksIC8vIEtFWV9G
Ci0gICAgMHgwQSwgLy8gS0VZX0cKLSAgICAweDBCLCAvLyBLRVlfSAotICAgIDB4MEQsIC8vIEtF
WV9KCi0gICAgMHgwRSwgLy8gS0VZX0sKLSAgICAweDBGLCAvLyBLRVlfTAotICAgIDB4MzMsIC8v
IEtFWV9TRU1JQ09MT04KLSAgICAweDI0LCAvLyBLRVlfQVBPU1RST1BIRQotICAgIDB4MzUsIC8v
IEtFWV9HUkFWRQotICAgIDB4RTEsIC8vIEtFWV9MRUZUU0hJRlQKLSAgICAweDMxLCAvLyBLRVlf
QkFDS1NMQVNICi0gICAgMHgxRCwgLy8gS0VZX1oKLSAgICAweDFCLCAvLyBLRVlfWAotICAgIDB4
MDYsIC8vIEtFWV9DCi0gICAgMHgxOSwgLy8gS0VZX1YKLSAgICAweDA1LCAvLyBLRVlfQgotICAg
IDB4MTEsIC8vIEtFWV9OCi0gICAgMHgxMCwgLy8gS0VZX00KLSAgICAweDM2LCAvLyBLRVlfQ09N
TUEKLSAgICAweDM3LCAvLyBLRVlfRE9UCi0gICAgMHgzOCwgLy8gS0VZX1NMQVNICi0gICAgMHhF
NSwgLy8gS0VZX1JJR0hUU0hJRlQKLSAgICAweDU1LCAvLyBLRVlfS1BBU1RFUklTSwotICAgIDB4
RTIsIC8vIEtFWV9MRUZUQUxUCi0gICAgMHgyQywgLy8gS0VZX1NQQUNFCi0gICAgMHgzOSwgLy8g
S0VZX0NBUFNMT0NLCi0gICAgMHgzQSwgLy8gS0VZX0YxCi0gICAgMHgzQiwgLy8gS0VZX0YyCi0g
ICAgMHgzQywgLy8gS0VZX0YzCi0gICAgMHgzRCwgLy8gS0VZX0Y0Ci0gICAgMHgzRSwgLy8gS0VZ
X0Y1Ci0gICAgMHgzRiwgLy8gS0VZX0Y2Ci0gICAgMHg0MCwgLy8gS0VZX0Y3Ci0gICAgMHg0MSwg
Ly8gS0VZX0Y4Ci0gICAgMHg0MiwgLy8gS0VZX0Y5Ci0gICAgMHg0MywgLy8gS0VZX0YxMAotICAg
IDB4NTMsIC8vIEtFWV9OVU1MT0NLCi0gICAgMHg0NywgLy8gS0VZX1NDUk9MTExPQ0sKLSAgICAw
eDVGLCAvLyBLRVlfS1A3Ci0gICAgMHg2MCwgLy8gS0VZX0tQOAotICAgIDB4NjEsIC8vIEtFWV9L
UDkKLSAgICAweDU2LCAvLyBLRVlfS1BNSU5VUwotICAgIDB4NUMsIC8vIEtFWV9LUDQKLSAgICAw
eDVELCAvLyBLRVlfS1A1Ci0gICAgMHg1RSwgLy8gS0VZX0tQNgotICAgIDB4NTcsIC8vIEtFWV9L
UFBMVVMKLSAgICAweDU5LCAvLyBLRVlfS1AxCi0gICAgMHg1QSwgLy8gS0VZX0tQMgotICAgIDB4
NUIsIC8vIEtFWV9LUDMKLSAgICAweDYyLCAvLyBLRVlfS1AwCi0gICAgMHg2MywgLy8gS0VZX0tQ
RE9UCi0gICAgMHgwMCwgLy8gZ2FwIGluIHNlcXVlbmNlCi0gICAgMHg4RiwgLy8gS0VZX1pFTktB
S1VIQU5LQUtVCi0gICAgMHg2NCwgLy8gS0VZXzEwMk5ECi0gICAgMHg0NCwgLy8gS0VZX0YxMQot
ICAgIDB4NDUsIC8vIEtFWV9GMTIKLSAgICAweDg3LCAvLyBLRVlfUk8KLSAgICAweDg4LCAvLyBL
RVlfS0FUQUtBTkEKLSAgICAweDhBLCAvLyBLRVlfSElSQUdBTkEKLSAgICAweDhCLCAvLyBLRVlf
SEVOS0FOCi0gICAgMHg4QywgLy8gS0VZX0tBVEFLQU5BSElSQUdBTkEKLSAgICAweDhELCAvLyBL
RVlfTVVIRU5LQU4KLSAgICAweDhFLCAvLyBLRVlfS1BKUENPTU1BCi0gICAgMHg1OCwgLy8gS0VZ
X0tQRU5URVIKLSAgICAweEU0LCAvLyBLRVlfUklHSFRDVFJMCi0gICAgMHg1NCwgLy8gS0VZX0tQ
U0xBU0gKLSAgICAweDQ4LCAvLyBLRVlfU1lTUlEKLSAgICAweEU2LCAvLyBLRVlfUklHSFRBTFQK
LSAgICAweDAwLCAvLyBnYXAgaW4gc2VxdWVuY2UKLSAgICAweDRBLCAvLyBLRVlfSE9NRQotICAg
IDB4NTIsIC8vIEtFWV9VUAotICAgIDB4NEIsIC8vIEtFWV9QQUdFVVAKLSAgICAweDUwLCAvLyBL
RVlfTEVGVAotICAgIDB4NEYsIC8vIEtFWV9SSUdIVAotICAgIDB4NEQsIC8vIEtFWV9FTkQKLSAg
ICAweDUxLCAvLyBLRVlfRE9XTgotICAgIDB4NEUsIC8vIEtFWV9QQUdFRE9XTgotICAgIDB4NDks
IC8vIEtFWV9JTlNFUlQKLSAgICAweDRELCAvLyBLRVlfREVMRVRFCi0gICAgMHgwMCwgLy8gZ2Fw
IGluIHNlcXVlbmNlCi0gICAgMHg3RiwgLy8gS0VZX01VVEUKLSAgICAweDgxLCAvLyBLRVlfVk9M
VU1FRE9XTgotICAgIDB4ODAsIC8vIEtFWV9WT0xVTUVVUAotICAgIDB4NjYsIC8vIEtFWV9QT1dF
UgotICAgIDB4NjcsIC8vIEtFWV9LUEVRVUFMCi0gICAgMHgwMCwgLy8gS0VZX0tQUExVU01JTlVT
Ci0gICAgMHgwMCwgLy8gZ2FwIGluIHNlcXVlbmNlCi0gICAgMHgwMCwgLy8gZ2FwIGluIHNlcXVl
bmNlCi0gICAgMHgwMCwgLy8gZ2FwIGluIHNlcXVlbmNlCi0gICAgMHg4NSwgLy8gS0VZX0tQQ09N
TUEKLSAgICAweDkwLCAvLyBLRVlfSEFOR0VVTAotICAgIDB4OTEsIC8vIEtFWV9IQU5KQQotICAg
IDB4ODksIC8vIEtFWV9ZRU4KLSAgICAweEUzLCAvLyBLRVlfTEVGVE1FVEEKLSAgICAweEU3LCAv
LyBLRVlfUklHSFRNRVRBCi19OworLy8gTGludXgga2V5Y29kZSBkZWZpbml0aW9ucworI2luY2x1
ZGUgPGxpbnV4LWtleWNvZGVzLmg+CisKKyNkZWZpbmUgREVGSU5FX1VTQUdFX1RBQkxFICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JFU0VSVkVELCAweDAwKSwg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0VTQywgMHgyOSksICAgICAgICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzEsIDB4MUUpLCAgICAgICAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZXzIsIDB4MUYpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZXzMsIDB4MjApLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZXzQsIDB4MjEpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZXzUsIDB4MjIpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzYs
IDB4MjMpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzcsIDB4MjQp
LCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzgsIDB4MjUpLCAgICAg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzksIDB4MjYpLCAgICAgICAgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzAsIDB4MjcpLCAgICAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX01JTlVTLCAweDJEKSwgICAgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX0VRVUFMLCAweDJFKSwgICAgICAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0JBQ0tTUEFDRSwgMHgyQSksICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX1RBQiwgMHgyQiksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X1EsIDB4MTQpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1csIDB4
MUEpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0UsIDB4MDgpLCAg
ICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1IsIDB4MTUpLCAgICAgICAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1QsIDB4MTcpLCAgICAgICAgICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1ksIDB4MUMpLCAgICAgICAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX1UsIDB4MTgpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX0ksIDB4MEMpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX08sIDB4MTIpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX1AsIDB4MTMpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0xF
RlRCUkFDRSwgMHgyRiksICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JJR0hUQlJB
Q0UsIDB4MzApLCAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0VOVEVSLCAweDI4KSwg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0xFRlRDVFJMLCAweEUwKSwgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0EsIDB4MDQpLCAgICAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1MsIDB4MTYpLCAgICAgICAgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX0QsIDB4MDcpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0YsIDB4MDkpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX0csIDB4MEEpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X0gsIDB4MEIpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0osIDB4
MEQpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0ssIDB4MEUpLCAg
ICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0wsIDB4MEYpLCAgICAgICAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1NFTUlDT0xPTiwgMHgzMyksICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0FQT1NUUk9QSEUsIDB4MzQpLCAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX0dSQVZFLCAweDM1KSwgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX0xFRlRTSElGVCwgMHhFMSksICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX0JBQ0tTTEFTSCwgMHgzMSksICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX1osIDB4MUQpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1gs
IDB4MUIpLCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0MsIDB4MDYp
LCAgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1YsIDB4MTkpLCAgICAg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0IsIDB4MDUpLCAgICAgICAgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX04sIDB4MTEpLCAgICAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX00sIDB4MTApLCAgICAgICAgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX0NPTU1BLCAweDM2KSwgICAgICAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0RPVCwgMHgzNyksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX1NMQVNILCAweDM4KSwgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X1JJR0hUU0hJRlQsIDB4RTUpLCAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQQVNU
RVJJU0ssIDB4NTUpLCAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0xFRlRBTFQsIDB4
RTIpLCAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1NQQUNFLCAweDJDKSwgICAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0NBUFNMT0NLLCAweDM5KSwgICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0YxLCAweDNBKSwgICAgICAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX0YyLCAweDNCKSwgICAgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX0YzLCAweDNDKSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX0Y0LCAweDNEKSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX0Y1LCAweDNFKSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0Y2
LCAweDNGKSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0Y3LCAweDQw
KSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0Y4LCAweDQxKSwgICAg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0Y5LCAweDQyKSwgICAgICAgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0YxMCwgMHg0MyksICAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX05VTUxPQ0ssIDB4NTMpLCAgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX1NDUk9MTExPQ0ssIDB4NDcpLCAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0tQNywgMHg1RiksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX0tQOCwgMHg2MCksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X0tQOSwgMHg2MSksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQTUlO
VVMsIDB4NTYpLCAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQNCwgMHg1Qyks
ICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQNSwgMHg1RCksICAgICAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQNiwgMHg1RSksICAgICAgICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQUExVUywgMHg1NyksICAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX0tQMSwgMHg1OSksICAgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX0tQMiwgMHg1QSksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX0tQMywgMHg1QiksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX0tQMCwgMHg2MiksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQ
RE9ULCAweDYzKSwgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1pFTktBS1VI
QU5LQUtVLCAweDhGKSwgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZXzEwMk5ELCAweDY0KSwg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0YxMSwgMHg0NCksICAgICAgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0YxMiwgMHg0NSksICAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JPLCAweDg3KSwgICAgICAgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX0tBVEFLQU5BLCAweDg4KSwgICAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0hJUkFHQU5BLCAweDhBKSwgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX0hFTktBTiwgMHg4QiksICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X0tBVEFLQU5BSElSQUdBTkEsIDB4OEMpLCAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX01VSEVO
S0FOLCAweDhEKSwgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQSlBDT01NQSwg
MHg4RSksICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQRU5URVIsIDB4NTgpLCAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JJR0hUQ1RSTCwgMHhFNCksICAgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQU0xBU0gsIDB4NTQpLCAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX1NZU1JRLCAweDQ4KSwgICAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX1JJR0hUQUxULCAweEU2KSwgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX0hPTUUsIDB4NEEpLCAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX1VQLCAweDUyKSwgICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1BB
R0VVUCwgMHg0QiksICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0xFRlQsIDB4
NTApLCAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JJR0hULCAweDRGKSwg
ICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0VORCwgMHg0RCksICAgICAgICAg
ICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0RPV04sIDB4NTEpLCAgICAgICAgICAgICAg
IFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1BBR0VET1dOLCAweDRFKSwgICAgICAgICAgIFwKKyAg
ICBERUZJTkVfVVNBR0UoS0VZX0lOU0VSVCwgMHg0OSksICAgICAgICAgICAgIFwKKyAgICBERUZJ
TkVfVVNBR0UoS0VZX0RFTEVURSwgMHg0RCksICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNB
R0UoS0VZX01VVEUsIDB4N0YpLCAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZ
X1ZPTFVNRURPV04sIDB4ODEpLCAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1ZPTFVN
RVVQLCAweDgwKSwgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1BPV0VSLCAweDY2
KSwgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQRVFVQUwsIDB4NjcpLCAg
ICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQUExVU01JTlVTLCAweDAwKSwgICAg
ICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX0tQQ09NTUEsIDB4ODUpLCAgICAgICAgICAgIFwK
KyAgICBERUZJTkVfVVNBR0UoS0VZX0hBTkdFVUwsIDB4OTApLCAgICAgICAgICAgIFwKKyAgICBE
RUZJTkVfVVNBR0UoS0VZX0hBTkpBLCAweDkxKSwgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVf
VVNBR0UoS0VZX1lFTiwgMHg4OSksICAgICAgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0Uo
S0VZX0xFRlRNRVRBLCAweEUzKSwgICAgICAgICAgIFwKKyAgICBERUZJTkVfVVNBR0UoS0VZX1JJ
R0hUTUVUQSwgMHhFNykKIAogI2VuZGlmICAvLyBfWEVOVktCRF9WS0JEX0gKLS0gCjIuNS4zCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Thu Feb 01 15:40:38 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Feb 2018 15:40: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 1ehGyZ-0001YK-Ol; Thu, 01 Feb 2018 15:40:35 +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=gqwz=e3=citrix.com=prvs=5632b0f9a=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1ehGyY-0001YE-DB
 for win-pv-devel@lists.xenproject.org; Thu, 01 Feb 2018 15:40:34 +0000
X-Inumbo-ID: 33349238-0766-11e8-ba59-bc764e045a96
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 33349238-0766-11e8-ba59-bc764e045a96;
 Thu, 01 Feb 2018 16:40:17 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.46,444,1511827200"; d="scan'208";a="460682285"
From: Paul Durrant <paul.durrant@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Thu, 1 Feb 2018 15:40:22 +0000
Message-ID: <1517499622-5812-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 xenvkbd] Fix a couple of key mappings...
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>

Li4ud2hpY2ggZ2V0cyBDVFJMK0FMVCtERUwgd29ya2luZwoKVGhpcyBwYXRjaCBhbHNvIGFkZHMg
c29tZSBoZWxwZnVsIGRlYnVnIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBh
dWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW52a2JkL3JpbmcuYyB8IDI1ICsrKysr
KysrKysrKysrKysrKysrKysrKy0KIHNyYy94ZW52a2JkL3ZrYmQuaCB8ICAzICsrLQogMiBmaWxl
cyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L3NyYy94ZW52a2JkL3JpbmcuYyBiL3NyYy94ZW52a2JkL3JpbmcuYwppbmRleCAyNWQ5N2VjLi5i
ZDlkYzUzIDEwMDY0NAotLS0gYS9zcmMveGVudmtiZC9yaW5nLmMKKysrIGIvc3JjL3hlbnZrYmQv
cmluZy5jCkBAIC0xODksMTIgKzE4OSwxMyBAQCBTZXRBcnJheSgKIH0KIAogc3RydWN0IF9LRVlf
Q09ERV9UT19VU0FHRSB7CisgICAgY29uc3QgQ0hBUiAgKktleU5hbWU7CiAgICAgVUNIQVIgICAg
ICAgS2V5Q29kZTsKICAgICBVU0hPUlQgICAgICBVc2FnZTsKIH07CiAKICNkZWZpbmUgREVGSU5F
X1VTQUdFKF9LZXlDb2RlLCBfVXNhZ2UpIFwKLSAgICB7IF9LZXlDb2RlLCBfVXNhZ2UgfQorICAg
IHsgI19LZXlDb2RlLCBfS2V5Q29kZSwgX1VzYWdlIH0KIAogc3RhdGljIHN0cnVjdCBfS0VZX0NP
REVfVE9fVVNBR0UgS2V5Q29kZVRvVXNhZ2VUYWJsZVtdID0gewogICAgIERFRklORV9VU0FHRV9U
QUJMRQpAQCAtMjE3LDYgKzIxOCwyMyBAQCBzdGF0aWMgVk9JRCBSaW5nQnVpbGRLZXlDb2RlVG9V
c2FnZU1hcHBpbmcoCiAgICAgfQogfQogCitzdGF0aWMgRk9SQ0VJTkxJTkUgY29uc3QgQ0hBUiAq
CitfX0tleUNvZGVUb0tleU5hbWUoCisgICAgVUxPTkcgICBLZXlDb2RlCisgICAgKQoreworICAg
IFVMT05HICAgSW5kZXg7CisKKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBBUlJBWVNJWkUo
S2V5Q29kZVRvVXNhZ2VUYWJsZSk7IEluZGV4KyspIHsKKyAgICAgICAgc3RydWN0IF9LRVlfQ09E
RV9UT19VU0FHRSAgICpFbnRyeSA9ICZLZXlDb2RlVG9Vc2FnZVRhYmxlW0luZGV4XTsKKworICAg
ICAgICBpZiAoRW50cnktPktleUNvZGUgPT0gS2V5Q29kZSkKKyAgICAgICAgICAgIHJldHVybiBF
bnRyeS0+S2V5TmFtZTsKKyAgICB9CisKKyAgICByZXR1cm4gIlVOS05PV04iOworfQorCiBzdGF0
aWMgRk9SQ0VJTkxJTkUgVVNIT1JUCiBfX1JpbmdLZXlDb2RlVG9Vc2FnZSgKICAgICBJTiAgUFhF
TlZLQkRfUklORyAgIFJpbmcsCkBAIC0yNjYsNiArMjg0LDExIEBAIF9fUmluZ0V2ZW50S2V5cHJl
c3MoCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gbWFwIEtleUNvZGUgdG8gVXNhZ2UKICAgICAg
ICAgVVNIT1JUICBVc2FnZSA9IF9fUmluZ0tleUNvZGVUb1VzYWdlKFJpbmcsIEtleUNvZGUpOwor
CisgICAgICAgIFRyYWNlKCIlcyAoJTAyeCkgLT4gJTA0eCAoJXMpXG4iLAorICAgICAgICAgICAg
ICBfX0tleUNvZGVUb0tleU5hbWUoS2V5Q29kZSksIEtleUNvZGUsCisgICAgICAgICAgICAgIFVz
YWdlLCBQcmVzc2VkID8gIlBSRVNTRUQiIDogIlJFTEVBU0VEIik7CisKICAgICAgICAgaWYgKFVz
YWdlID09IDApCiAgICAgICAgICAgICByZXR1cm47IC8vIG5vbi1zdGFuZGFyZCBrZXkKIApkaWZm
IC0tZ2l0IGEvc3JjL3hlbnZrYmQvdmtiZC5oIGIvc3JjL3hlbnZrYmQvdmtiZC5oCmluZGV4IGQ4
YjI3MjUuLmZhNGNkN2YgMTAwNjQ0Ci0tLSBhL3NyYy94ZW52a2JkL3ZrYmQuaAorKysgYi9zcmMv
eGVudmtiZC92a2JkLmgKQEAgLTIyOCw2ICsyMjgsNyBAQCBzdGF0aWMgY29uc3QgSElEX0RFVklD
RV9BVFRSSUJVVEVTIFZrYmREZXZpY2VBdHRyaWJ1dGVzID0gewogICAgIERFRklORV9VU0FHRShL
RVlfUklHSFRDVFJMLCAweEU0KSwgICAgICAgICAgXAogICAgIERFRklORV9VU0FHRShLRVlfS1BT
TEFTSCwgMHg1NCksICAgICAgICAgICAgXAogICAgIERFRklORV9VU0FHRShLRVlfU1lTUlEsIDB4
NDgpLCAgICAgICAgICAgICAgXAorICAgIERFRklORV9VU0FHRShLRVlfUEFVU0UsIDB4NDgpLCAg
ICAgICAgICAgICAgXAogICAgIERFRklORV9VU0FHRShLRVlfUklHSFRBTFQsIDB4RTYpLCAgICAg
ICAgICAgXAogICAgIERFRklORV9VU0FHRShLRVlfSE9NRSwgMHg0QSksICAgICAgICAgICAgICAg
XAogICAgIERFRklORV9VU0FHRShLRVlfVVAsIDB4NTIpLCAgICAgICAgICAgICAgICAgXApAQCAt
MjM4LDcgKzIzOSw3IEBAIHN0YXRpYyBjb25zdCBISURfREVWSUNFX0FUVFJJQlVURVMgVmtiZERl
dmljZUF0dHJpYnV0ZXMgPSB7CiAgICAgREVGSU5FX1VTQUdFKEtFWV9ET1dOLCAweDUxKSwgICAg
ICAgICAgICAgICBcCiAgICAgREVGSU5FX1VTQUdFKEtFWV9QQUdFRE9XTiwgMHg0RSksICAgICAg
ICAgICBcCiAgICAgREVGSU5FX1VTQUdFKEtFWV9JTlNFUlQsIDB4NDkpLCAgICAgICAgICAgICBc
Ci0gICAgREVGSU5FX1VTQUdFKEtFWV9ERUxFVEUsIDB4NEQpLCAgICAgICAgICAgICBcCisgICAg
REVGSU5FX1VTQUdFKEtFWV9ERUxFVEUsIDB4NEMpLCAgICAgICAgICAgICBcCiAgICAgREVGSU5F
X1VTQUdFKEtFWV9NVVRFLCAweDdGKSwgICAgICAgICAgICAgICBcCiAgICAgREVGSU5FX1VTQUdF
KEtFWV9WT0xVTUVET1dOLCAweDgxKSwgICAgICAgICBcCiAgICAgREVGSU5FX1VTQUdFKEtFWV9W
T0xVTUVVUCwgMHg4MCksICAgICAgICAgICBcCi0tIAoyLjUuMwoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QK
d2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Thu Feb 01 16:00:34 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 01 Feb 2018 16:00:34 +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 1ehHHr-0003iu-6V; Thu, 01 Feb 2018 16:00: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 1ehHHp-0003iQ-Uj
 for win-pv-devel@lists.xenproject.org; Thu, 01 Feb 2018 16:00:29 +0000
Date: Thu, 1 Feb 2018 16:00:37 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <20274362.29.1517500842713.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_28_3616467.1517500837464"
X-Jenkins-Job: XENVKBD-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENVKBD-master - Build #11 - 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_28_3616467.1517500837464
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #11.

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_28_3616467.1517500837464--


From win-pv-devel-bounces@lists.xenproject.org Mon Feb 05 14:52:26 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 05 Feb 2018 14:52:26 +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 1eii87-0008Id-6C; Mon, 05 Feb 2018 14:52:23 +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=fgnt=e7=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1eii85-0008IA-9t
 for win-pv-devel@lists.xenproject.org; Mon, 05 Feb 2018 14:52:21 +0000
X-Inumbo-ID: 1c59d453-0a84-11e8-ba59-bc764e045a96
Received: from mail-wr0-x235.google.com (unknown [2a00:1450:400c:c0c::235])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1c59d453-0a84-11e8-ba59-bc764e045a96;
 Mon, 05 Feb 2018 15:51:57 +0100 (CET)
Received: by mail-wr0-x235.google.com with SMTP id h9so16871352wre.12;
 Mon, 05 Feb 2018 06:52:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:mime-version:date:subject:cc:to:message-id;
 bh=Esx2mDWwl8v8ANm/7fKWAkldQXlakqEt9dpUY5O6hB8=;
 b=RednC7PRuFpdCXPIsxAo9b74KkfVsF2/SM8VZGnsIS2tr+RreIt0wCyImxXx6XXV8C
 O7/DYvfLsE0rF1eYb5kBYbqusq7/7d3ug1Rbo6yQJ+tzHMGhlDmwlwwaRW9rTi69ZEex
 8KKBG9h9DAoaH3ypb6FgcUQZicBg05rQ2sWzQZytykVctJnZLq5hUm+j77riHjv2DsT/
 OGf/LjBie5uRHK+Q/65TRjBL0ln/+m8d7BS+el57WnZoCGTAI/6f8nGJAMxq1whwx8dQ
 z+G2XU2nd1vMydYIkfT/qfcLXitSdSbVqdFrbyXRgweOmtp2FZ31JHLyDbrX+m5aCM9g
 i2zw==
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:date:subject:cc:to:message-id;
 bh=Esx2mDWwl8v8ANm/7fKWAkldQXlakqEt9dpUY5O6hB8=;
 b=L80cd33Tqh5uAOxYQ8HzoyH6aKd+/64jGbJqrWdsTHzs8mIAk/iZDwTVHasohQIu4i
 0B4BP2WmQw1KEEGyGGeNsvAJ+covSSlWB39vKEwcjL57RgEiDtXqaH4a86IgN/DcnUDp
 gu7C2EcEDg1/AfEl8/BRgFHqHpSFT5lsKin2oluUjIGXL9ZtLAZAUaNJ+p8KPLmIwK2C
 kKXKdnLNRUM0pSNJl9c8eqKtNO560pDJSmLWc9U3aOlag4eYqFJAlVA5O53159BqPnF9
 MKyJBIffTuslFaX3FauwY5szbEa1o440W1oxEw+wHX6Ovs9RYyCZiQ7Xa0jvtY8J2rWs
 kUHA==
X-Gm-Message-State: AKwxytemwkfQVA5c+gzAQxLGJ6JbejhcowJ1xKIyjF6I2FvokdySmaoQ
 SLNeXRr/h5IZR7kj5ga24EcMkzy0
X-Google-Smtp-Source: AH8x227LgCNiKsgJfWEUZ2i2qWYx2Gd9OdB5IrhqbdIrtbe3cEVo5LZk3khHduZ2Z16oEe9By7niyw==
X-Received: by 10.223.135.18 with SMTP id a18mr16652746wra.126.1517842337485; 
 Mon, 05 Feb 2018 06:52:17 -0800 (PST)
Received: from ?IPv6:2a02:c7f:ac18:da00:bdf6:4551:c4ca:398d?
 ([2a02:c7f:ac18:da00:bdf6:4551:c4ca:398d])
 by smtp.gmail.com with ESMTPSA id p21sm3742522wmc.28.2018.02.05.06.52.16
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 05 Feb 2018 06:52:16 -0800 (PST)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\))
Date: Mon, 5 Feb 2018 14:52:15 +0000
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,
 xapi@lists.xenproject.org
Message-Id: <7B105F1A-A54A-4613-8108-91D96DEB9708@gmail.com>
X-Mailer: Apple Mail (2.3445.5.20)
Cc: advisory-board@lists.xenproject.org, committers@xenproject.org
Subject: [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="===============6246880247333532310=="
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>


--===============6246880247333532310==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_A54FEB5F-42FA-4310-9976-DC4F85AF75EC"


--Apple-Mail=_A54FEB5F-42FA-4310-9976-DC4F85AF75EC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Dear Community members,

we finalized the Xen Project Developer Summit proposal with the event =
hotel. Apologies this has taken so long.

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

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

Best Regards
Lars=

--Apple-Mail=_A54FEB5F-42FA-4310-9976-DC4F85AF75EC
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"">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></body></html>=

--Apple-Mail=_A54FEB5F-42FA-4310-9976-DC4F85AF75EC--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

--===============6246880247333532310==--


From win-pv-devel-bounces@lists.xenproject.org Mon Feb 12 10:19:39 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 12 Feb 2018 10:19:39 +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 1elBCz-0000sq-6v; Mon, 12 Feb 2018 10:19:37 +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=/zyz=fg=citrix.com=prvs=574e4a532=owen.smith@srs-us1.protection.inumbo.net>)
 id 1elBCy-0000sZ-Qn
 for win-pv-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:19:36 +0000
X-Inumbo-ID: 2573f6cf-0fde-11e8-ba59-bc764e045a96
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2573f6cf-0fde-11e8-ba59-bc764e045a96;
 Mon, 12 Feb 2018 11:19:02 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.46,501,1511827200"; d="scan'208";a="462316594"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Mon, 12 Feb 2018 10:19:19 +0000
Message-ID: <20180212101919.4716-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH] Use a threaded DPC for ring processing
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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKVGhlIGN1cnJlbnQgRFBD
IGJhY2stb2ZmIG1lY2hhbmlzbSB1c2VzIGEgdGltZXIgdG8gcmVzY2hlZHVsZSBsb25nCnJ1bm5p
bmcgRFBDcy4gVGltZXJzIHNlZW0gdG8gYWx3YXlzIGhhdmUgYSBtaW5pbXVtIHRpY2sgcGVyaW9k
LCBzbwpyZXNjaGVkdWxlZCBEUENzIGFsd2F5cyBoYXZlIGFuIGFkZGl0aW9uYWwgbGV2ZWwgb2Yg
bGF0ZW5jeS4KVXNpbmcgYSB0aHJlYWRlZCBEUEMgKHdoaWNoIGV4ZWN1dGVzIGF0IFBBU1NJVkVf
TEVWRUwpIHdpbGwgYWxsb3cKb3RoZXIgZHJpdmVycyB0byBpbnRlcnJ1cHQgdGhlIHZiZCBEUEMs
IGFuZCBtYWludGFpbiBzeXN0ZW0KcmVzcG9uc2l2ZW5lc3MuIE9uY2UgdGhlIHZiZCdzIERQQyBj
YW4gYmUgcHJlLWVtcHRlZCBieSBhbm90aGVyCkRQQywgYSBEUEMgYmFjay1vZmYgbWVjaGFuaXNt
IGlzIG5vIGxvbmdlciByZXF1aXJlZC4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVudmJkL3JpbmcuYyB8IDc5ICsrKysrKysrKysr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu
Z2VkLCAxNiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv
eGVudmJkL3JpbmcuYyBiL3NyYy94ZW52YmQvcmluZy5jCmluZGV4IDBiMGRmNzIuLmY2MTJmYzcg
MTAwNjQ0Ci0tLSBhL3NyYy94ZW52YmQvcmluZy5jCisrKyBiL3NyYy94ZW52YmQvcmluZy5jCkBA
IC03Niw4ICs3Niw2IEBAIHN0cnVjdCBfWEVOVkJEX1JJTkcgewogICAgIFBWT0lEICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR3JhbnRzW1hFTlZCRF9NQVhfUklOR19QQUdFU107CiAgICAgUFhF
TkJVU19FVlRDSE5fQ0hBTk5FTCAgICAgICAgICBDaGFubmVsOwogICAgIEtEUEMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRHBjOwotICAgIEtEUEMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGltZXJEcGM7Ci0gICAgS1RJTUVSICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lcjsK
IAogICAgIFBYRU5CVVNfQ0FDSEUgICAgICAgICAgICAgICAgICAgUmVxdWVzdENhY2hlOwogICAg
IFBYRU5CVVNfQ0FDSEUgICAgICAgICAgICAgICAgICAgU2VnbWVudENhY2hlOwpAQCAtMTI1NCw2
ICsxMjUyLDkgQEAgUmluZ05vdGlmeVJlc3BvbnNlcygKIHsKICAgICBCT09MRUFOICAgICAgICAg
ICAgIFJldHJ5ID0gRkFMU0U7CiAKKyAgICBpZiAoIVJpbmctPkVuYWJsZWQpCisgICAgICAgIHJl
dHVybiBGQUxTRTsKKwogICAgIFJldHJ5IHw9IFJpbmdQb2xsKFJpbmcpOwogICAgIFJldHJ5IHw9
IFJpbmdTdWJtaXRSZXF1ZXN0cyhSaW5nKTsKIApAQCAtMTI4NCwzNyArMTI4NSw2IEBAIFJpbmdJ
bnRlcnJ1cHQoCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyBGT1JDRUlOTElORSBCT09M
RUFOCi1fX1JpbmdEcGNUaW1lb3V0KAotICAgIElOICBQWEVOVkJEX1JJTkcgICAgICAgICAgICBS
aW5nCi0gICAgKQotewotICAgIEtEUENfV0FUQ0hET0dfSU5GT1JNQVRJT04gICBXYXRjaGRvZzsK
LSAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOwotCi0gICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihSaW5nKTsKLQotICAgIFJ0bFplcm9NZW1vcnkoJldhdGNoZG9nLCBzaXpl
b2YgKFdhdGNoZG9nKSk7Ci0KLSAgICBzdGF0dXMgPSBLZVF1ZXJ5RHBjV2F0Y2hkb2dJbmZvcm1h
dGlvbigmV2F0Y2hkb2cpOwotICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOwotCi0gICAg
aWYgKFdhdGNoZG9nLkRwY1RpbWVMaW1pdCA9PSAwIHx8Ci0gICAgICAgIFdhdGNoZG9nLkRwY1dh
dGNoZG9nTGltaXQgPT0gMCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgaWYgKFdhdGNo
ZG9nLkRwY1RpbWVDb3VudCA+IChXYXRjaGRvZy5EcGNUaW1lTGltaXQgLyAyKSAmJgotICAgICAg
ICBXYXRjaGRvZy5EcGNXYXRjaGRvZ0NvdW50ID4gKFdhdGNoZG9nLkRwY1dhdGNoZG9nTGltaXQg
LyAyKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLSNk
ZWZpbmUgVElNRV9VUyhfdXMpICAgICAgICAoKF91cykgKiAxMCkKLSNkZWZpbmUgVElNRV9NUyhf
bXMpICAgICAgICAoVElNRV9VUygoX21zKSAqIDEwMDApKQotI2RlZmluZSBUSU1FX1MoX3MpICAg
ICAgICAgIChUSU1FX01TKChfcykgKiAxMDAwKSkKLSNkZWZpbmUgVElNRV9SRUxBVElWRShfdCkg
ICAoLShfdCkpCi0KIEtERUZFUlJFRF9ST1VUSU5FIFJpbmdEcGM7CiAKIFZPSUQKQEAgLTEzMzMs
MjggKzEzMDMsMjIgQEAgUmluZ0RwYygKIAogICAgIEFTU0VSVChSaW5nICE9IE5VTEwpOwogCi0g
ICAgaWYgKCFSaW5nLT5Db25uZWN0ZWQpCi0gICAgICAgIHJldHVybjsKLQogICAgIGZvciAoOzsp
IHsKLSAgICAgICAgaWYgKCFSaW5nTm90aWZ5UmVzcG9uc2VzKFJpbmcpKSB7Ci0gICAgICAgICAg
ICBYRU5CVVNfRVZUQ0hOKFVubWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmct
PkV2dGNobkludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+Q2hhbm5l
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKF9fUmluZ0RwY1RpbWVvdXQoUmluZykpIHsKLSAgICAg
ICAgICAgIExBUkdFX0lOVEVHRVIgICBEZWxheTsKKyAgICAgICAgS0lSUUwgICAgICAgSXJxbDsK
KyAgICAgICAgQk9PTEVBTiAgICAgUmV0cnk7CiAKLSAgICAgICAgICAgIERlbGF5LlF1YWRQYXJ0
ID0gVElNRV9SRUxBVElWRShUSU1FX1VTKDEwMCkpOworICAgICAgICBLZVJhaXNlSXJxbChESVNQ
QVRDSF9MRVZFTCwgJklycWwpOworICAgICAgICBSZXRyeSA9IFJpbmdOb3RpZnlSZXNwb25zZXMo
UmluZyk7CisgICAgICAgIEtlTG93ZXJJcnFsKElycWwpOwogCi0gICAgICAgICAgICBLZVNldFRp
bWVyKCZSaW5nLT5UaW1lciwKLSAgICAgICAgICAgICAgICAgICAgICAgRGVsYXksCi0gICAgICAg
ICAgICAgICAgICAgICAgICZSaW5nLT5UaW1lckRwYyk7CisgICAgICAgIGlmICghUmV0cnkpCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgIH0KKworICAgIFhFTkJVU19FVlRDSE4o
VW5tYXNrLAorICAgICAgICAgICAgICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwKKyAgICAg
ICAgICAgICAgICAgIFJpbmctPkNoYW5uZWwsCisgICAgICAgICAgICAgICAgICBGQUxTRSk7CiB9
CiAKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECkBAIC0xNTkwLDkgKzE1NTQsOCBAQCBS
aW5nQ3JlYXRlKAogCiAgICAgKCpSaW5nKS0+RnJvbnRlbmQgPSBGcm9udGVuZDsKICAgICBLZUlu
aXRpYWxpemVTcGluTG9jaygmKCpSaW5nKS0+TG9jayk7Ci0gICAgS2VJbml0aWFsaXplRHBjKCYo
KlJpbmcpLT5EcGMsIFJpbmdEcGMsICpSaW5nKTsKLSAgICBLZUluaXRpYWxpemVEcGMoJigqUmlu
ZyktPlRpbWVyRHBjLCBSaW5nRHBjLCAqUmluZyk7Ci0gICAgS2VJbml0aWFsaXplVGltZXIoJigq
UmluZyktPlRpbWVyKTsKKyAgICBLZUluaXRpYWxpemVUaHJlYWRlZERwYygmKCpSaW5nKS0+RHBj
LCBSaW5nRHBjLCAqUmluZyk7CisgICAgS2VTZXRJbXBvcnRhbmNlRHBjKCYoKlJpbmcpLT5EcGMs
IE1lZGl1bUhpZ2hJbXBvcnRhbmNlKTsKIAogICAgIFF1ZXVlSW5pdCgmKCpSaW5nKS0+RnJlc2hT
cmJzKTsKICAgICBRdWV1ZUluaXQoJigqUmluZyktPlByZXBhcmVkUmVxcyk7CkBAIC0xNzAzLDgg
KzE2NjYsNiBAQCBmYWlsMjoKICAgICBSdGxaZXJvTWVtb3J5KCYoKlJpbmcpLT5TdWJtaXR0ZWRS
ZXFzLCBzaXplb2YoWEVOVkJEX1FVRVVFKSk7CiAgICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+
U2h1dGRvd25TcmJzLCBzaXplb2YoWEVOVkJEX1FVRVVFKSk7CiAKLSAgICBSdGxaZXJvTWVtb3J5
KCYoKlJpbmcpLT5UaW1lciwgc2l6ZW9mKEtUSU1FUikpOwotICAgIFJ0bFplcm9NZW1vcnkoJigq
UmluZyktPlRpbWVyRHBjLCBzaXplb2YoS0RQQykpOwogICAgIFJ0bFplcm9NZW1vcnkoJigqUmlu
ZyktPkRwYywgc2l6ZW9mKEtEUEMpKTsKICAgICBSdGxaZXJvTWVtb3J5KCYoKlJpbmcpLT5Mb2Nr
LCBzaXplb2YoS1NQSU5fTE9DSykpOwogICAgICgqUmluZyktPkZyb250ZW5kID0gTlVMTDsKQEAg
LTE3NDgsOCArMTcwOSw2IEBAIFJpbmdEZXN0cm95KAogICAgIFJ0bFplcm9NZW1vcnkoJlJpbmct
PlN1Ym1pdHRlZFJlcXMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsKICAgICBSdGxaZXJvTWVtb3J5
KCZSaW5nLT5TaHV0ZG93blNyYnMsIHNpemVvZihYRU5WQkRfUVVFVUUpKTsKIAotICAgIFJ0bFpl
cm9NZW1vcnkoJlJpbmctPlRpbWVyLCBzaXplb2YoS1RJTUVSKSk7Ci0gICAgUnRsWmVyb01lbW9y
eSgmUmluZy0+VGltZXJEcGMsIHNpemVvZihLRFBDKSk7CiAgICAgUnRsWmVyb01lbW9yeSgmUmlu
Zy0+RHBjLCBzaXplb2YoS0RQQykpOwogICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkxvY2ssIHNp
emVvZihLU1BJTl9MT0NLKSk7CiAgICAgUmluZy0+RnJvbnRlbmQgPSBOVUxMOwpAQCAtMjA5MSwx
MiArMjA1MCw2IEBAIFJpbmdEaXNhYmxlKAogICAgICAgICAgICAgQWRhcHRlckNvbXBsZXRlU3Ji
KEFkYXB0ZXIsIFNyYkV4dCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICAvLwotICAgIC8vIE5v
IG5ldyB0aW1lcnMgY2FuIGJlIHNjaGVkdWxlZCBvbmNlIEVuYWJsZWQgZ29lcyB0byBGQUxTRS4K
LSAgICAvLyBDYW5jZWwgYW55IGV4aXN0aW5nIG9uZXMuCi0gICAgLy8KLSAgICAoVk9JRCkgS2VD
YW5jZWxUaW1lcigmUmluZy0+VGltZXIpOwogfQogCiBWT0lECi0tIAoyLjguMwoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWls
aW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Mon Feb 12 10:53:14 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 12 Feb 2018 10:53: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 1elBjT-00056p-Uy; Mon, 12 Feb 2018 10:53:11 +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=0ew1=fg=citrix.com=prvs=57411e68b=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1elBjT-00056h-If
 for win-pv-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:53:11 +0000
X-Inumbo-ID: d54bedcf-0fe2-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d54bedcf-0fe2-11e8-ba59-bc764e045a96;
 Mon, 12 Feb 2018 11:52:36 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.46,501,1511827200"; d="scan'208";a="67710427"
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] Use a threaded DPC for ring processing
Thread-Index: AQHTo+sFgzo8WvH0OUK1ARwOJJRLIqOgl05A
Date: Mon, 12 Feb 2018 10:53:06 +0000
Message-ID: <9392017f41a0435abd23a5af11f8496c@AMSPEX02CL03.citrite.net>
References: <20180212101919.4716-1-owen.smith@citrix.com>
In-Reply-To: <20180212101919.4716-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] Use a threaded DPC for ring processing
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
IE9mIG93ZW4uc21pdGhAY2l0cml4LmNvbQ0KPiBTZW50OiAxMiBGZWJydWFyeSAyMDE4IDEwOjE5
DQo+IFRvOiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gQ2M6IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW3dpbi1wdi1kZXZlbF0gW1BB
VENIXSBVc2UgYSB0aHJlYWRlZCBEUEMgZm9yIHJpbmcgcHJvY2Vzc2luZw0KPiANCj4gRnJvbTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KPiANCj4gVGhlIGN1cnJlbnQgRFBD
IGJhY2stb2ZmIG1lY2hhbmlzbSB1c2VzIGEgdGltZXIgdG8gcmVzY2hlZHVsZSBsb25nDQo+IHJ1
bm5pbmcgRFBDcy4gVGltZXJzIHNlZW0gdG8gYWx3YXlzIGhhdmUgYSBtaW5pbXVtIHRpY2sgcGVy
aW9kLCBzbw0KPiByZXNjaGVkdWxlZCBEUENzIGFsd2F5cyBoYXZlIGFuIGFkZGl0aW9uYWwgbGV2
ZWwgb2YgbGF0ZW5jeS4NCj4gVXNpbmcgYSB0aHJlYWRlZCBEUEMgKHdoaWNoIGV4ZWN1dGVzIGF0
IFBBU1NJVkVfTEVWRUwpIHdpbGwgYWxsb3cNCj4gb3RoZXIgZHJpdmVycyB0byBpbnRlcnJ1cHQg
dGhlIHZiZCBEUEMsIGFuZCBtYWludGFpbiBzeXN0ZW0NCj4gcmVzcG9uc2l2ZW5lc3MuIE9uY2Ug
dGhlIHZiZCdzIERQQyBjYW4gYmUgcHJlLWVtcHRlZCBieSBhbm90aGVyDQo+IERQQywgYSBEUEMg
YmFjay1vZmYgbWVjaGFuaXNtIGlzIG5vIGxvbmdlciByZXF1aXJlZC4NCj4gDQo+IFNpZ25lZC1v
ZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6IFBh
dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMveGVu
dmJkL3JpbmcuYyB8IDc5ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA2MyBk
ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVudmJkL3JpbmcuYyBiL3NyYy94
ZW52YmQvcmluZy5jDQo+IGluZGV4IDBiMGRmNzIuLmY2MTJmYzcgMTAwNjQ0DQo+IC0tLSBhL3Ny
Yy94ZW52YmQvcmluZy5jDQo+ICsrKyBiL3NyYy94ZW52YmQvcmluZy5jDQo+IEBAIC03Niw4ICs3
Niw2IEBAIHN0cnVjdCBfWEVOVkJEX1JJTkcgew0KPiAgICAgIFBWT0lEICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR3JhbnRzW1hFTlZCRF9NQVhfUklOR19QQUdFU107DQo+ICAgICAgUFhFTkJV
U19FVlRDSE5fQ0hBTk5FTCAgICAgICAgICBDaGFubmVsOw0KPiAgICAgIEtEUEMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRHBjOw0KPiAtICAgIEtEUEMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGltZXJEcGM7DQo+IC0gICAgS1RJTUVSICAgICAgICAgICAgICAgICAgICAgICAgICBU
aW1lcjsNCj4gDQo+ICAgICAgUFhFTkJVU19DQUNIRSAgICAgICAgICAgICAgICAgICBSZXF1ZXN0
Q2FjaGU7DQo+ICAgICAgUFhFTkJVU19DQUNIRSAgICAgICAgICAgICAgICAgICBTZWdtZW50Q2Fj
aGU7DQo+IEBAIC0xMjU0LDYgKzEyNTIsOSBAQCBSaW5nTm90aWZ5UmVzcG9uc2VzKA0KPiAgew0K
PiAgICAgIEJPT0xFQU4gICAgICAgICAgICAgUmV0cnkgPSBGQUxTRTsNCj4gDQo+ICsgICAgaWYg
KCFSaW5nLT5FbmFibGVkKQ0KPiArICAgICAgICByZXR1cm4gRkFMU0U7DQo+ICsNCj4gICAgICBS
ZXRyeSB8PSBSaW5nUG9sbChSaW5nKTsNCj4gICAgICBSZXRyeSB8PSBSaW5nU3VibWl0UmVxdWVz
dHMoUmluZyk7DQo+IA0KPiBAQCAtMTI4NCwzNyArMTI4NSw2IEBAIFJpbmdJbnRlcnJ1cHQoDQo+
ICAgICAgcmV0dXJuIFRSVUU7DQo+ICB9DQo+IA0KPiAtc3RhdGljIEZPUkNFSU5MSU5FIEJPT0xF
QU4NCj4gLV9fUmluZ0RwY1RpbWVvdXQoDQo+IC0gICAgSU4gIFBYRU5WQkRfUklORyAgICAgICAg
ICAgIFJpbmcNCj4gLSAgICApDQo+IC17DQo+IC0gICAgS0RQQ19XQVRDSERPR19JTkZPUk1BVElP
TiAgIFdhdGNoZG9nOw0KPiAtICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICBzdGF0dXM7
DQo+IC0NCj4gLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFJpbmcpOw0KPiAtDQo+IC0gICAg
UnRsWmVyb01lbW9yeSgmV2F0Y2hkb2csIHNpemVvZiAoV2F0Y2hkb2cpKTsNCj4gLQ0KPiAtICAg
IHN0YXR1cyA9IEtlUXVlcnlEcGNXYXRjaGRvZ0luZm9ybWF0aW9uKCZXYXRjaGRvZyk7DQo+IC0g
ICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IC0NCj4gLSAgICBpZiAoV2F0Y2hkb2cu
RHBjVGltZUxpbWl0ID09IDAgfHwNCj4gLSAgICAgICAgV2F0Y2hkb2cuRHBjV2F0Y2hkb2dMaW1p
dCA9PSAwKQ0KPiAtICAgICAgICByZXR1cm4gRkFMU0U7DQo+IC0NCj4gLSAgICBpZiAoV2F0Y2hk
b2cuRHBjVGltZUNvdW50ID4gKFdhdGNoZG9nLkRwY1RpbWVMaW1pdCAvIDIpICYmDQo+IC0gICAg
ICAgIFdhdGNoZG9nLkRwY1dhdGNoZG9nQ291bnQgPiAoV2F0Y2hkb2cuRHBjV2F0Y2hkb2dMaW1p
dCAvIDIpKQ0KPiAtICAgICAgICByZXR1cm4gRkFMU0U7DQo+IC0NCj4gLSAgICByZXR1cm4gVFJV
RTsNCj4gLX0NCj4gLQ0KPiAtI2RlZmluZSBUSU1FX1VTKF91cykgICAgICAgICgoX3VzKSAqIDEw
KQ0KPiAtI2RlZmluZSBUSU1FX01TKF9tcykgICAgICAgIChUSU1FX1VTKChfbXMpICogMTAwMCkp
DQo+IC0jZGVmaW5lIFRJTUVfUyhfcykgICAgICAgICAgKFRJTUVfTVMoKF9zKSAqIDEwMDApKQ0K
PiAtI2RlZmluZSBUSU1FX1JFTEFUSVZFKF90KSAgICgtKF90KSkNCj4gLQ0KPiAgS0RFRkVSUkVE
X1JPVVRJTkUgUmluZ0RwYzsNCj4gDQo+ICBWT0lEDQo+IEBAIC0xMzMzLDI4ICsxMzAzLDIyIEBA
IFJpbmdEcGMoDQo+IA0KPiAgICAgIEFTU0VSVChSaW5nICE9IE5VTEwpOw0KPiANCj4gLSAgICBp
ZiAoIVJpbmctPkNvbm5lY3RlZCkNCj4gLSAgICAgICAgcmV0dXJuOw0KPiAtDQo+ICAgICAgZm9y
ICg7Oykgew0KPiAtICAgICAgICBpZiAoIVJpbmdOb3RpZnlSZXNwb25zZXMoUmluZykpIHsNCj4g
LSAgICAgICAgICAgIFhFTkJVU19FVlRDSE4oVW5tYXNrLA0KPiAtICAgICAgICAgICAgICAgICAg
ICAgICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLA0KPiAtICAgICAgICAgICAgICAgICAgICAg
ICAgICBSaW5nLT5DaGFubmVsLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7
DQo+IC0gICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAoX19S
aW5nRHBjVGltZW91dChSaW5nKSkgew0KPiAtICAgICAgICAgICAgTEFSR0VfSU5URUdFUiAgIERl
bGF5Ow0KPiArICAgICAgICBLSVJRTCAgICAgICBJcnFsOw0KPiArICAgICAgICBCT09MRUFOICAg
ICBSZXRyeTsNCj4gDQo+IC0gICAgICAgICAgICBEZWxheS5RdWFkUGFydCA9IFRJTUVfUkVMQVRJ
VkUoVElNRV9VUygxMDApKTsNCj4gKyAgICAgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUws
ICZJcnFsKTsNCj4gKyAgICAgICAgUmV0cnkgPSBSaW5nTm90aWZ5UmVzcG9uc2VzKFJpbmcpOw0K
PiArICAgICAgICBLZUxvd2VySXJxbChJcnFsKTsNCj4gDQo+IC0gICAgICAgICAgICBLZVNldFRp
bWVyKCZSaW5nLT5UaW1lciwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgRGVsYXksDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5UaW1lckRwYyk7DQo+ICsgICAgICAgIGlmICgh
UmV0cnkpDQo+ICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgfQ0KPiAgICAgIH0NCj4g
Kw0KPiArICAgIFhFTkJVU19FVlRDSE4oVW5tYXNrLA0KPiArICAgICAgICAgICAgICAgICAgJlJp
bmctPkV2dGNobkludGVyZmFjZSwNCj4gKyAgICAgICAgICAgICAgICAgIFJpbmctPkNoYW5uZWws
DQo+ICsgICAgICAgICAgICAgICAgICBGQUxTRSk7DQo+ICB9DQo+IA0KPiAgc3RhdGljIERFQ0xT
UEVDX05PSU5MSU5FIFZPSUQNCj4gQEAgLTE1OTAsOSArMTU1NCw4IEBAIFJpbmdDcmVhdGUoDQo+
IA0KPiAgICAgICgqUmluZyktPkZyb250ZW5kID0gRnJvbnRlbmQ7DQo+ICAgICAgS2VJbml0aWFs
aXplU3BpbkxvY2soJigqUmluZyktPkxvY2spOw0KPiAtICAgIEtlSW5pdGlhbGl6ZURwYygmKCpS
aW5nKS0+RHBjLCBSaW5nRHBjLCAqUmluZyk7DQo+IC0gICAgS2VJbml0aWFsaXplRHBjKCYoKlJp
bmcpLT5UaW1lckRwYywgUmluZ0RwYywgKlJpbmcpOw0KPiAtICAgIEtlSW5pdGlhbGl6ZVRpbWVy
KCYoKlJpbmcpLT5UaW1lcik7DQo+ICsgICAgS2VJbml0aWFsaXplVGhyZWFkZWREcGMoJigqUmlu
ZyktPkRwYywgUmluZ0RwYywgKlJpbmcpOw0KPiArICAgIEtlU2V0SW1wb3J0YW5jZURwYygmKCpS
aW5nKS0+RHBjLCBNZWRpdW1IaWdoSW1wb3J0YW5jZSk7DQo+IA0KPiAgICAgIFF1ZXVlSW5pdCgm
KCpSaW5nKS0+RnJlc2hTcmJzKTsNCj4gICAgICBRdWV1ZUluaXQoJigqUmluZyktPlByZXBhcmVk
UmVxcyk7DQo+IEBAIC0xNzAzLDggKzE2NjYsNiBAQCBmYWlsMjoNCj4gICAgICBSdGxaZXJvTWVt
b3J5KCYoKlJpbmcpLT5TdWJtaXR0ZWRSZXFzLCBzaXplb2YoWEVOVkJEX1FVRVVFKSk7DQo+ICAg
ICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+U2h1dGRvd25TcmJzLCBzaXplb2YoWEVOVkJEX1FV
RVVFKSk7DQo+IA0KPiAtICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPlRpbWVyLCBzaXplb2Yo
S1RJTUVSKSk7DQo+IC0gICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+VGltZXJEcGMsIHNpemVv
ZihLRFBDKSk7DQo+ICAgICAgUnRsWmVyb01lbW9yeSgmKCpSaW5nKS0+RHBjLCBzaXplb2YoS0RQ
QykpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPkxvY2ssIHNpemVvZihLU1BJTl9M
T0NLKSk7DQo+ICAgICAgKCpSaW5nKS0+RnJvbnRlbmQgPSBOVUxMOw0KPiBAQCAtMTc0OCw4ICsx
NzA5LDYgQEAgUmluZ0Rlc3Ryb3koDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+U3VibWl0
dGVkUmVxcywgc2l6ZW9mKFhFTlZCRF9RVUVVRSkpOw0KPiAgICAgIFJ0bFplcm9NZW1vcnkoJlJp
bmctPlNodXRkb3duU3Jicywgc2l6ZW9mKFhFTlZCRF9RVUVVRSkpOw0KPiANCj4gLSAgICBSdGxa
ZXJvTWVtb3J5KCZSaW5nLT5UaW1lciwgc2l6ZW9mKEtUSU1FUikpOw0KPiAtICAgIFJ0bFplcm9N
ZW1vcnkoJlJpbmctPlRpbWVyRHBjLCBzaXplb2YoS0RQQykpOw0KPiAgICAgIFJ0bFplcm9NZW1v
cnkoJlJpbmctPkRwYywgc2l6ZW9mKEtEUEMpKTsNCj4gICAgICBSdGxaZXJvTWVtb3J5KCZSaW5n
LT5Mb2NrLCBzaXplb2YoS1NQSU5fTE9DSykpOw0KPiAgICAgIFJpbmctPkZyb250ZW5kID0gTlVM
TDsNCj4gQEAgLTIwOTEsMTIgKzIwNTAsNiBAQCBSaW5nRGlzYWJsZSgNCj4gICAgICAgICAgICAg
IEFkYXB0ZXJDb21wbGV0ZVNyYihBZGFwdGVyLCBTcmJFeHQpOw0KPiAgICAgICAgICB9DQo+ICAg
ICAgfQ0KPiAtDQo+IC0gICAgLy8NCj4gLSAgICAvLyBObyBuZXcgdGltZXJzIGNhbiBiZSBzY2hl
ZHVsZWQgb25jZSBFbmFibGVkIGdvZXMgdG8gRkFMU0UuDQo+IC0gICAgLy8gQ2FuY2VsIGFueSBl
eGlzdGluZyBvbmVzLg0KPiAtICAgIC8vDQo+IC0gICAgKFZPSUQpIEtlQ2FuY2VsVGltZXIoJlJp
bmctPlRpbWVyKTsNCj4gIH0NCj4gDQo+ICBWT0lEDQo+IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4g
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gd2luLXB2
LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcN
Cj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2lu
LXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZl
bA==

From win-pv-devel-bounces@lists.xenproject.org Tue Feb 13 17:58:14 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 13 Feb 2018 17:58: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 1eleqJ-0004LC-1A; Tue, 13 Feb 2018 17:58:11 +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 1eleqI-0004KN-7i
 for win-pv-devel@lists.xenproject.org; Tue, 13 Feb 2018 17:58:10 +0000
Date: Tue, 13 Feb 2018 17:58:11 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <12285218.1.1518544697922.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_0_6662949.1518544692391"
X-Jenkins-Job: XENVBD-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENVBD-master - Build #107 - 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_0_6662949.1518544692391
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #107.

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_0_6662949.1518544692391--


From win-pv-devel-bounces@lists.xenproject.org Tue Feb 20 21:15:24 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 20 Feb 2018 21:15:24 +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 1eoFFw-0004kG-Qq; Tue, 20 Feb 2018 21:15:20 +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=ttic=fo=gmail.com=cjp256@srs-us1.protection.inumbo.net>)
 id 1eoFFw-0004kA-1k
 for win-pv-devel@lists.xenproject.org; Tue, 20 Feb 2018 21:15:20 +0000
X-Inumbo-ID: 0b67e74e-1683-11e8-ba59-bc764e045a96
Received: from mail-qk0-x244.google.com (unknown [2607:f8b0:400d:c09::244])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0b67e74e-1683-11e8-ba59-bc764e045a96;
 Tue, 20 Feb 2018 22:14:32 +0100 (CET)
Received: by mail-qk0-x244.google.com with SMTP id s188so8645896qkb.2
 for <win-pv-devel@lists.xenproject.org>; Tue, 20 Feb 2018 13:15:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=ZdT/9eyL5Tk2DBM3HTAnty3BSHZ0gMsqF+s/3Ab1E1g=;
 b=cqDmAcG60pVJvENM1dmVNOsgXu5GaulBXsiKfQrY6atZGsa0kIQe6jMN088CneM19L
 2PbrQsvyheOe30kv3GOuj/HdpA3SuNDz6mmUc9Sbuf5OMcu1PJFYKYbiSwoCpE5ZWD89
 J11Xu4rXInK5MT3XFSdfCV6avrpLelLAQkBqYl2Yd2JDW0Y03AjlNWi0SlBakJH80xoh
 tnW5e3GRWC3x0t7zVomfj0Z8fP7Qx4DFNkbKiXNTXcTMf8UgF/xAWmm02eXTbt1YZRkv
 E9SsRPif5ZfJ7A5vWwjbuJL7XrPWdCB5lIrOGXZyrucqPT3xoU73FpEIngsu53bW5izJ
 XeGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=ZdT/9eyL5Tk2DBM3HTAnty3BSHZ0gMsqF+s/3Ab1E1g=;
 b=Hsro9VCbeB0EYo6LGyRYIx/4NCiGoulexKLJ7byldOKKb6zQb48mPNwqCAH8wODP5p
 kwFA/3wg2NojJmpFPBkJlsgoTwwY/idUi/v2yf/4NOCujBsmlvuxbjVUA9br7EDR8Mt+
 Frc5svyEzTJMhxhG9tGR2LmRc84FKJAFWZptQI4NJggIzQgUDGyKxKJ0/Yt6Bfz5Ay5V
 fjgni41zx2loygIC9UNsyll3Zunhwacunc0Ey/vIpIfmjDNHMRhWdTdvGRYDHLINbHT1
 Gy7ozYslSEubkGCl2jtPzPOMH5K0K+DtcIcr68A7YoU1Ld5rFsB25hTg+Ye7GWZyNqdw
 qRnA==
X-Gm-Message-State: APf1xPAxeybF2SppZAy+TDpoKxia+VikjNMqs8kph869xrM2Y9GZiAev
 1/1lUrF7k74HcyRO3NBn0QJ68NsRr8k=
X-Google-Smtp-Source: AG47ELsNRQ0Q3yVuPm6IS8htV5QkQdTXdhw/qAtavtRgxfMAyy4E2xUwSSYnHtg+APQmVLL8QGLDnw==
X-Received: by 10.55.186.193 with SMTP id k184mr1697752qkf.4.1519161317432;
 Tue, 20 Feb 2018 13:15:17 -0800 (PST)
Received: from roost.members.linode.com (chrispatterson.net. [66.175.209.160])
 by smtp.gmail.com with ESMTPSA id
 c4sm18166715qtj.97.2018.02.20.13.15.16
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
 Tue, 20 Feb 2018 13:15:16 -0800 (PST)
From: Chris Patterson <cjp256@gmail.com>
To: win-pv-devel@lists.xenproject.org
Date: Tue, 20 Feb 2018 16:15:13 -0500
Message-Id: <1519161313-17281-1-git-send-email-cjp256@gmail.com>
X-Mailer: git-send-email 2.1.4
Cc: Chris Patterson <cjp256@gmail.com>, ben.chalmers@citrix.com,
 paul.durrant@citrix.com, owen.smith@citrix.com
Subject: [win-pv-devel] [PATCH] poller: fix event channels when backends do
	not support multi-queue
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>
MIME-Version: 1.0
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>

VGhlIGV2ZW50IGNoYW5uZWxzIGZvciByeCAmIHR4IGFyZSB3cml0dGVuIHRvIGEgbXVsdGktcXVl
dWUgZm9ybWF0dGVkCnBhdGggZXZlbiB3aGVuIG11bHRpcGxlIHF1ZXVlcyBhcmUgbm90IHN1cHBv
cnRlZC4gVGhpcyByZXN1bHRzIGluIGEgaHVuZwpWTSB3aXRoIHRoZSBmb2xsb3dpbmcgbG9nczoK
WEVOQlVTfEV2dGNobldhaXQ6IFRJTUVEIE9VVDogQ291bnQgPSAwMDAwMDAwMSBDaGFubmVsLT5D
b3VudCA9IDAwMDAwMDAwCi4uLgoKVGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBieSBoYXZpbmcgYSBM
aW51eCBWTSBuZXR3b3JrIGJhY2tlbmQgd2l0aCAxIHZDUFUuCgpJZiBGcm9udGVuZEdldE51bVF1
ZXVlcygpIGlzIDEgYW5kIG11bHRpcGxlIHF1ZXVlcyBhcmUgbm90IHN1cHBvcnRlZCwKdGhlIGZv
bGxvd2luZyBwYXRocyBhcmUgdXNlZCBmb3IgdGhlIHBvbGxlciBldmVudCBjaGFubmVsOgogICAg
ZGV2aWNlL3ZpZi8xL3F1ZXVlLTAvZXZlbnQtY2hhbm5lbC1bcnh8dHhdCgpIb3dldmVyLCB0aGUg
cHJvcGVyIHhlbnN0b3JlIHBhdGggaW4gdGhpcyBjYXNlIGlzOgogICAgZGV2aWNlL3ZpZi8xL2V2
ZW50LWNoYW5uZWwtW3J4fHR4XQoKUG9sbGVySW5zdGFuY2VJbml0aWFsaXplKCkgc2V0cyBpdHMg
cGF0aCB1c2luZyBGcm9udGVuZEZvcm1hdFBhdGgoKSwKd2hpY2ggYXNzdW1lcyBhIG11bHRpLXF1
ZXVlIHBhdGggbGF5b3V0LiAgVGhpcyBpcyBkb25lIGluIGEgZmFzaGlvbgpzaW1pbGFyIHRvIHRo
ZSB0cmFuc21pdHRlciBhbmQgcmVjZWl2ZXIgcmluZ3MuICBIb3dldmVyLCB0aGUgdHgvcnggcmlu
Z3MKY2hlY2sgZm9yIHRoZSBtdXR1YWxseSBzdXBwb3J0ZWQgbnVtYmVyIG9mIHF1ZXVlcyB0byBk
ZXRlcm1pbmUgdGhlCmFjdHVhbCBwYXRoIHdyaXR0ZW4gdG8geGVuc3RvcmUsIHVzaW5nIEZyb250
ZW5kR2V0TnVtUXVldWVzKCkuIFNlZQpfX1RyYW5zbWl0dGVyUmluZ1N0b3JlV3JpdGUoKSBhbmQg
X19SZWNlaXZlclJpbmdTdG9yZVdyaXRlKCkuICBUaGlzIHBhdGNoCmFkZHMgYSBzaW1pbGFyIHBy
b2NlZHVyZSBmb3IgdGhlIHBvbGxlciB0byB3cml0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcGF0aApp
biB4ZW5zdG9yZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFBhdHRlcnNvbiA8Y2pwMjU2QGdtYWls
LmNvbT4KLS0tCiBzcmMveGVudmlmL3BvbGxlci5jIHwgNyArKysrKystCiAxIGZpbGUgY2hhbmdl
ZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbnZp
Zi9wb2xsZXIuYyBiL3NyYy94ZW52aWYvcG9sbGVyLmMKaW5kZXggYTdjZTM3YS4uNmZmMmM4YyAx
MDA2NDQKLS0tIGEvc3JjL3hlbnZpZi9wb2xsZXIuYworKysgYi9zcmMveGVudmlmL3BvbGxlci5j
CkBAIC0zNTEsNiArMzUxLDcgQEAgUG9sbGVyQ2hhbm5lbFN0b3JlV3JpdGUoCiB7CiAgICAgUFhF
TlZJRl9QT0xMRVJfSU5TVEFOQ0UgICAgICAgICBJbnN0YW5jZTsKICAgICBQWEVOVklGX1BPTExF
UiAgICAgICAgICAgICAgICAgIFBvbGxlcjsKKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhdGg7CiAgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0Owog
ICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOwogCkBAIC0zNjAsNiAr
MzYxLDEwIEBAIFBvbGxlckNoYW5uZWxTdG9yZVdyaXRlKAogICAgIGlmIChDaGFubmVsLT5DaGFu
bmVsID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAorICAgIFBhdGggPSAoRnJvbnRlbmRH
ZXROdW1RdWV1ZXMoUG9sbGVyLT5Gcm9udGVuZCkgPT0gMSkgPworICAgICAgICAgICBGcm9udGVu
ZEdldFBhdGgoUG9sbGVyLT5Gcm9udGVuZCkgOgorICAgICAgICAgICBJbnN0YW5jZS0+UGF0aDsK
KwogICAgIFBvcnQgPSBYRU5CVVNfRVZUQ0hOKEdldFBvcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJlBvbGxlci0+RXZ0Y2huSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
IENoYW5uZWwtPkNoYW5uZWwpOwpAQCAtMzY3LDcgKzM3Miw3IEBAIFBvbGxlckNoYW5uZWxTdG9y
ZVdyaXRlKAogICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZQb2xsZXItPlN0b3JlSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBUcmFuc2FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2Ut
PlBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChQQ0hBUilDaGFubmVsLT5Ob2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0KTsKLS0gCjIuMS40CgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVs
IG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 21 09:34:55 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 21 Feb 2018 09:34: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 1eoQnd-0000RO-4t; Wed, 21 Feb 2018 09:34:53 +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=hmd8=fp=citrix.com=prvs=5831fb9b4=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1eoQnc-0000RE-0i
 for win-pv-devel@lists.xenproject.org; Wed, 21 Feb 2018 09:34:52 +0000
X-Inumbo-ID: 59d3b95e-16ea-11e8-ba59-bc764e045a96
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 59d3b95e-16ea-11e8-ba59-bc764e045a96;
 Wed, 21 Feb 2018 10:34:02 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.46,543,1511827200"; d="scan'208";a="68283422"
From: Paul Durrant <Paul.Durrant@citrix.com>
To: 'Chris Patterson' <cjp256@gmail.com>, "win-pv-devel@lists.xenproject.org"
 <win-pv-devel@lists.xenproject.org>
Thread-Topic: [PATCH] poller: fix event channels when backends do not support
 multi-queue
Thread-Index: AQHTqo/5wjeWDliU7US1+3/OOHK1BqOumPOA
Date: Wed, 21 Feb 2018 09:34:47 +0000
Message-ID: <18ff4eb433504f33a17a4f87b89d7c52@AMSPEX02CL03.citrite.net>
References: <1519161313-17281-1-git-send-email-cjp256@gmail.com>
In-Reply-To: <1519161313-17281-1-git-send-email-cjp256@gmail.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: Ben Chalmers <ben.chalmers@citrix.com>, Owen Smith <owen.smith@citrix.com>
Subject: Re: [win-pv-devel] [PATCH] poller: fix event channels when backends
 do not support multi-queue
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>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IENocmlzIFBhdHRlcnNvbiBbbWFp
bHRvOmNqcDI1NkBnbWFpbC5jb21dCj4gU2VudDogMjAgRmVicnVhcnkgMjAxOCAyMToxNQo+IFRv
OiB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBDYzogUGF1bCBEdXJyYW50IDxQ
YXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IEJlbiBDaGFsbWVycwo+IDxiZW4uY2hhbG1lcnNAY2l0
cml4LmNvbT47IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT47IENocmlzCj4gUGF0
dGVyc29uIDxjanAyNTZAZ21haWwuY29tPgo+IFN1YmplY3Q6IFtQQVRDSF0gcG9sbGVyOiBmaXgg
ZXZlbnQgY2hhbm5lbHMgd2hlbiBiYWNrZW5kcyBkbyBub3Qgc3VwcG9ydAo+IG11bHRpLXF1ZXVl
Cj4gCj4gVGhlIGV2ZW50IGNoYW5uZWxzIGZvciByeCAmIHR4IGFyZSB3cml0dGVuIHRvIGEgbXVs
dGktcXVldWUgZm9ybWF0dGVkCj4gcGF0aCBldmVuIHdoZW4gbXVsdGlwbGUgcXVldWVzIGFyZSBu
b3Qgc3VwcG9ydGVkLiBUaGlzIHJlc3VsdHMgaW4gYSBodW5nCj4gVk0gd2l0aCB0aGUgZm9sbG93
aW5nIGxvZ3M6Cj4gWEVOQlVTfEV2dGNobldhaXQ6IFRJTUVEIE9VVDogQ291bnQgPSAwMDAwMDAw
MSBDaGFubmVsLT5Db3VudCA9Cj4gMDAwMDAwMDAKPiAuLi4KClF1aXRlIHJpZ2h0LiBJIGNsZWFy
bHkgbWlzc2VkIHRoaXMuIFRoYW5rcyBmb3Igc3BvdHRpbmcgaXQuCgo+IAo+IFRoaXMgY2FuIGJl
IHJlcHJvZHVjZWQgYnkgaGF2aW5nIGEgTGludXggVk0gbmV0d29yayBiYWNrZW5kIHdpdGggMSB2
Q1BVLgo+IAo+IElmIEZyb250ZW5kR2V0TnVtUXVldWVzKCkgaXMgMSBhbmQgbXVsdGlwbGUgcXVl
dWVzIGFyZSBub3Qgc3VwcG9ydGVkLAo+IHRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIHVzZWQgZm9y
IHRoZSBwb2xsZXIgZXZlbnQgY2hhbm5lbDoKPiAgICAgZGV2aWNlL3ZpZi8xL3F1ZXVlLTAvZXZl
bnQtY2hhbm5lbC1bcnh8dHhdCj4gCj4gSG93ZXZlciwgdGhlIHByb3BlciB4ZW5zdG9yZSBwYXRo
IGluIHRoaXMgY2FzZSBpczoKPiAgICAgZGV2aWNlL3ZpZi8xL2V2ZW50LWNoYW5uZWwtW3J4fHR4
XQo+IAo+IFBvbGxlckluc3RhbmNlSW5pdGlhbGl6ZSgpIHNldHMgaXRzIHBhdGggdXNpbmcgRnJv
bnRlbmRGb3JtYXRQYXRoKCksCj4gd2hpY2ggYXNzdW1lcyBhIG11bHRpLXF1ZXVlIHBhdGggbGF5
b3V0LiAgVGhpcyBpcyBkb25lIGluIGEgZmFzaGlvbgo+IHNpbWlsYXIgdG8gdGhlIHRyYW5zbWl0
dGVyIGFuZCByZWNlaXZlciByaW5ncy4gIEhvd2V2ZXIsIHRoZSB0eC9yeCByaW5ncwo+IGNoZWNr
IGZvciB0aGUgbXV0dWFsbHkgc3VwcG9ydGVkIG51bWJlciBvZiBxdWV1ZXMgdG8gZGV0ZXJtaW5l
IHRoZQo+IGFjdHVhbCBwYXRoIHdyaXR0ZW4gdG8geGVuc3RvcmUsIHVzaW5nIEZyb250ZW5kR2V0
TnVtUXVldWVzKCkuIFNlZQo+IF9fVHJhbnNtaXR0ZXJSaW5nU3RvcmVXcml0ZSgpIGFuZCBfX1Jl
Y2VpdmVyUmluZ1N0b3JlV3JpdGUoKS4gIFRoaXMgcGF0Y2gKPiBhZGRzIGEgc2ltaWxhciBwcm9j
ZWR1cmUgZm9yIHRoZSBwb2xsZXIgdG8gd3JpdGUgdG8gdGhlIGFwcHJvcHJpYXRlIHBhdGgKPiBp
biB4ZW5zdG9yZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBQYXR0ZXJzb24gPGNqcDI1NkBn
bWFpbC5jb20+CgpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4
LmNvbT4KCj4gLS0tCj4gIHNyYy94ZW52aWYvcG9sbGVyLmMgfCA3ICsrKysrKy0KPiAgMSBmaWxl
IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQg
YS9zcmMveGVudmlmL3BvbGxlci5jIGIvc3JjL3hlbnZpZi9wb2xsZXIuYwo+IGluZGV4IGE3Y2Uz
N2EuLjZmZjJjOGMgMTAwNjQ0Cj4gLS0tIGEvc3JjL3hlbnZpZi9wb2xsZXIuYwo+ICsrKyBiL3Ny
Yy94ZW52aWYvcG9sbGVyLmMKPiBAQCAtMzUxLDYgKzM1MSw3IEBAIFBvbGxlckNoYW5uZWxTdG9y
ZVdyaXRlKAo+ICB7Cj4gICAgICBQWEVOVklGX1BPTExFUl9JTlNUQU5DRSAgICAgICAgIEluc3Rh
bmNlOwo+ICAgICAgUFhFTlZJRl9QT0xMRVIgICAgICAgICAgICAgICAgICBQb2xsZXI7Cj4gKyAg
ICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGg7Cj4gICAgICBVTE9ORyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBvcnQ7Cj4gICAgICBOVFNUQVRVUyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1czsKPiAKPiBAQCAtMzYwLDYgKzM2MSwxMCBAQCBQb2xsZXJDaGFubmVs
U3RvcmVXcml0ZSgKPiAgICAgIGlmIChDaGFubmVsLT5DaGFubmVsID09IE5VTEwpCj4gICAgICAg
ICAgZ290byBkb25lOwo+IAo+ICsgICAgUGF0aCA9IChGcm9udGVuZEdldE51bVF1ZXVlcyhQb2xs
ZXItPkZyb250ZW5kKSA9PSAxKSA/Cj4gKyAgICAgICAgICAgRnJvbnRlbmRHZXRQYXRoKFBvbGxl
ci0+RnJvbnRlbmQpIDoKPiArICAgICAgICAgICBJbnN0YW5jZS0+UGF0aDsKPiArCj4gICAgICBQ
b3J0ID0gWEVOQlVTX0VWVENITihHZXRQb3J0LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlBvbGxlci0+RXZ0Y2huSW50ZXJmYWNlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hh
bm5lbC0+Q2hhbm5lbCk7Cj4gQEAgLTM2Nyw3ICszNzIsNyBAQCBQb2xsZXJDaGFubmVsU3RvcmVX
cml0ZSgKPiAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsCj4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJlBvbGxlci0+U3RvcmVJbnRlcmZhY2UsCj4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHJhbnNhY3Rpb24sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgSW5z
dGFuY2UtPlBhdGgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aCwKPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoUENIQVIpQ2hhbm5lbC0+Tm9kZSwKPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJXUiLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQpOwo+
IC0tCj4gMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2lu
LXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 21 19:49:37 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 21 Feb 2018 19:49:37 +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 1eoaOT-0001PY-H9; Wed, 21 Feb 2018 19:49:33 +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 1eoaOS-0001PS-KN
 for win-pv-devel@lists.xenproject.org; Wed, 21 Feb 2018 19:49:32 +0000
Date: Wed, 21 Feb 2018 19:49:32 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <20917881.3.1519242578081.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_2_22849040.1519242572659"
X-Jenkins-Job: XENVIF-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENVIF-master - Build #152 - 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_2_22849040.1519242572659
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #152.

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_2_22849040.1519242572659--


From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:22:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:22:06 +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 1epEEd-0004uH-Jx; Fri, 23 Feb 2018 14:22:03 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEEc-0004tw-2p
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:22:02 +0000
X-Inumbo-ID: cbed3f3d-18a4-11e8-ba59-bc764e045a96
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cbed3f3d-18a4-11e8-ba59-bc764e045a96;
 Fri, 23 Feb 2018 15:21:11 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185829"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:37 +0000
Message-ID: <20180223142142.12548-10-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKKiBGcm9udGVuZCBpcyB1
c2VkIGZvciBub24tZGVmYXVsdCBjb25zb2xlcwoqIFN0YXRlIGNoYW5nZXMgYXJlIGRpc2FibGVk
IGZvciBub3csIGFzIHRoZXJlIGlzIGluc3VmZmljaWVudAogIGltcGxlbWVudGF0aW9uIHRvIGhh
bmRsZSB0aGUgc3RhdGUgbW9kZWwgKG5vIGV2dGNobi9nbnR0YWIgY2hhbmdlcykKKiBSZWFkcyAi
cHJvdG9jb2wiIGFuZCAibmFtZSIgeGVuc3RvcmUgZmllbGRzCgpTaWduZWQtb2ZmLWJ5OiBPd2Vu
IFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQogaW5jbHVkZS94ZW4tdHlwZXMuaCAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNTUgKysKIGluY2x1ZGUveGVuLXZlcnNpb24uaCAgICAg
ICAgICAgICAgICAgICAgfCAgIDM3ICsKIGluY2x1ZGUveGVuLXdhcm5pbmdzLmggICAgICAgICAg
ICAgICAgICAgfCAgIDQyICsKIGluY2x1ZGUveGVuLmggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQ1ICsKIGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzMyLmggfCAg
MTY5ICsrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggfCAgMjAy
ICsrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4uaCAgICAgICAgfCAgMzM4ICsr
KysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oICAgICAgICAgICAgICAgfCAgMTI0ICsr
KwogaW5jbHVkZS94ZW4vcHVibGljL2dyYW50X3RhYmxlLmggICAgICAgICB8ICA2ODQgKysrKysr
KysrKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9jb25zb2xlLmggICAgICAgICAgfCAgIDUx
ICsKIGluY2x1ZGUveGVuL3B1YmxpYy9pby9yaW5nLmggICAgICAgICAgICAgfCAgMzI2ICsrKysr
KysKIGluY2x1ZGUveGVuL3B1YmxpYy9pby94ZW5idXMuaCAgICAgICAgICAgfCAgIDgwICsrCiBp
bmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaCAgICAgICAgICAgICAgIHwgIDMzNyArKysrKysrCiBp
bmNsdWRlL3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oICAgICAgICAgIHwgICA0NCArCiBpbmNsdWRl
L3hlbi9wdWJsaWMveGVuLmggICAgICAgICAgICAgICAgIHwgIDk5NSArKysrKysrKysrKysrKysr
KysrKwogaW5jbHVkZS94ZW4veGVuL2Vycm5vLmggICAgICAgICAgICAgICAgICB8ICAgMTggKwog
c3JjL3hlbmNvbnMvZmRvLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIHNyYy94
ZW5jb25zL2Zyb250ZW5kLmMgICAgICAgICAgICAgICAgICAgfCAxNDk5ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogc3JjL3hlbmNvbnMvZnJvbnRlbmQuaCAgICAgICAgICAgICAgICAg
ICB8ICAgNjggKysKIHNyYy94ZW5jb25zL3Bkby5jICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAzICstCiB2czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2ogICAgICAgICAgIHwgICAgMSAr
CiB2czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2ogICAgICAgICAgIHwgICAgMSArCiAyMiBm
aWxlcyBjaGFuZ2VkLCA1MTIxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4tdHlwZXMuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1
ZGUveGVuLXZlcnNpb24uaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuLXdhcm5pbmdz
LmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi5oCiBjcmVhdGUgbW9kZSAxMDA3NTUg
aW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi14ODZfMzIuaAogY3JlYXRlIG1vZGUgMTAw
NzU1IGluY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKIGNyZWF0ZSBtb2Rl
IDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmgKIGNyZWF0ZSBtb2RlIDEw
MDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvZXJybm8uaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1
ZGUveGVuL3B1YmxpYy9ncmFudF90YWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94
ZW4vcHVibGljL2lvL2NvbnNvbGUuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1
YmxpYy9pby9yaW5nLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvaW8v
eGVuYnVzLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaAog
Y3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKIGNyZWF0
ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgKIGNyZWF0ZSBtb2RlIDEwMDc1
NSBpbmNsdWRlL3hlbi94ZW4vZXJybm8uaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25z
L2Zyb250ZW5kLmMKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9mcm9udGVuZC5oCgpk
aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4tdHlwZXMuaCBiL2luY2x1ZGUveGVuLXR5cGVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjMyZDc5OQotLS0gL2Rldi9udWxsCisr
KyBiL2luY2x1ZGUveGVuLXR5cGVzLmgKQEAgLTAsMCArMSw1NSBAQAorLyogQ29weXJpZ2h0IChj
KSBDaXRyaXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdp
dGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAg
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAq
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IAorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgX1hFTl9UWVBFU19ICisjZGVmaW5lIF9YRU5fVFlQRVNf
SAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKworLy8gRGVmaW5lIHR5cGVzIG5lY2Vzc2FyeSB0byBp
bmNsdWRlIHhlbiBoZWFkZXJzCisKK3R5cGVkZWYgQ0hBUiAgICBpbnQ4X3Q7Cit0eXBlZGVmIFNI
T1JUICAgaW50MTZfdDsKK3R5cGVkZWYgTE9ORyAgICBpbnQzMl90OwordHlwZWRlZiBMT05HNjQg
IGludDY0X3Q7CisKK3R5cGVkZWYgVUNIQVIgICB1aW50OF90OwordHlwZWRlZiBVU0hPUlQgIHVp
bnQxNl90OwordHlwZWRlZiBVTE9ORyAgIHVpbnQzMl90OwordHlwZWRlZiBVTE9ORzY0IHVpbnQ2
NF90OworCisjZGVmaW5lIG9mZnNldG9mKF90eXBlLCBfZmllbGQpIEZJRUxEX09GRlNFVChfdHlw
ZSwgX2ZpZWxkKQorCisjZGVmaW5lIHhlbl9tYigpICAgIEtlTWVtb3J5QmFycmllcigpCisjZGVm
aW5lIHhlbl93bWIoKSAgIEtlTWVtb3J5QmFycmllcigpCisjZGVmaW5lIHhlbl9ybWIoKSAgIEtl
bWVtb3J5QmFycmllcigpCisKKyNlbmRpZiAgLy8gX1hFTl9UWVBFU19ICmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi12ZXJzaW9uLmggYi9pbmNsdWRlL3hlbi12ZXJzaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWRhNDIzMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1
ZGUveGVuLXZlcnNpb24uaApAQCAtMCwwICsxLDM3IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJp
eCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3
aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBfWEVOX1ZFUlNJT05fSAorI2RlZmluZSBfWEVOX1ZFUlNJT05fSAor
CisjZGVmaW5lIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gX19YRU5fTEFURVNUX0lOVEVSRkFD
RV9WRVJTSU9OX18KKworI2VuZGlmICAvLyBfWEVOX1ZFUlNJT05fSApkaWZmIC0tZ2l0IGEvaW5j
bHVkZS94ZW4td2FybmluZ3MuaCBiL2luY2x1ZGUveGVuLXdhcm5pbmdzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWEwOTViNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1
ZGUveGVuLXdhcm5pbmdzLmgKQEAgLTAsMCArMSw0MiBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRy
aXggU3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCAKKyAqIHdpdGggb3Ig
d2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgCisgKiB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICogCisgKiAqICAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgCisgKiAgICAgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCAKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiAKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIAorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAKKyAqIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgX1hFTl9XQVJOSU5HU19ICisjZGVmaW5lIF9YRU5fV0FSTklOR1Nf
SAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKworLy8gRGlzYWJsZSB3YXJuaW5ncyBuZWNlc3Nhcnkg
dG8gaW5jbHVkZSB4ZW4gaGVhZGVycworCisjIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIxNCkg
Ly8gbm9uc3RhbmRhcmQgZXh0ZW5zaW9uIHVzZWQgOiBiaXQgZmllbGQgdHlwZXMgb3RoZXIgdGhh
biBpbnQKKyMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjAwKSAvLyBub25zdGFuZGFyZCBleHRl
bnNpb24gdXNlZCA6IHplcm8tc2l6ZWQgYXJyYXkgaW4gc3RydWN0L3VuaW9uCisKKyNlbmRpZiAg
Ly8gX1hFTl9XQVJOSU5HU19ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi5oIGIvaW5jbHVkZS94
ZW4uaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yN2ZhZjI2Ci0tLSAvZGV2
L251bGwKKysrIGIvaW5jbHVkZS94ZW4uaApAQCAtMCwwICsxLDQ1IEBACisvKiBDb3B5cmlnaHQg
KGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIAorICog
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCAKKyAq
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKiAKKyAqICogICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIAorICogICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAg
ICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciAKKyAqICAgICBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAor
ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIAorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVOX0gKKyNkZWZpbmUgX1hFTl9ICisKKyNpbmNs
dWRlIDxudGRkay5oPgorCisjaW5jbHVkZSA8eGVuLXZlcnNpb24uaD4KKyNpbmNsdWRlIDx4ZW4t
dHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4td2FybmluZ3MuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9p
by9yaW5nLmg+CisjaW5jbHVkZSA8cHVibGljL2lvL2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvaW8veGVuYnVzLmg+CisKKyNlbmRpZiAgLy8gX1hFTl9ICmRpZmYgLS1naXQgYS9pbmNsdWRl
L3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2Fy
Y2gteDg2L3hlbi14ODZfMzIuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5k
MjMzNDBiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hl
bi14ODZfMzIuaApAQCAtMCwwICsxLDE2OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog
eGVuLXg4Nl8zMi5oCisgKgorICogR3Vlc3QgT1MgaW50ZXJmYWNlIHRvIHg4NiAzMi1iaXQgWGVu
LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVh
bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRI
RSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNywgSyBBIEZyYXNlcgor
ICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fCisjZGVm
aW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzMyX0hfXworCisvKgorICogSHlwZXJj
YWxsIGludGVyZmFjZToKKyAqICBJbnB1dDogICVlYngsICVlY3gsICVlZHgsICVlc2ksICVlZGks
ICVlYnAgKGFyZ3VtZW50cyAxLTYpCisgKiAgT3V0cHV0OiAlZWF4CisgKiBBY2Nlc3MgaXMgdmlh
IGh5cGVyY2FsbCBwYWdlIChzZXQgdXAgYnkgZ3Vlc3QgbG9hZGVyIG9yIHZpYSBhIFhlbiBNU1Ip
OgorICogIGNhbGwgaHlwZXJjYWxsX3BhZ2UgKyBoeXBlcmNhbGwtbnVtYmVyICogMzIKKyAqIENs
b2JiZXJlZDogQXJndW1lbnQgcmVnaXN0ZXJzIChlLmcuLCAyLWFyZyBoeXBlcmNhbGwgY2xvYmJl
cnMgJWVieCwlZWN4KQorICovCisKKy8qCisgKiBUaGVzZSBmbGF0IHNlZ21lbnRzIGFyZSBpbiB0
aGUgWGVuLXByaXZhdGUgc2VjdGlvbiBvZiBldmVyeSBHRFQuIFNpbmNlIHRoZXNlCisgKiBhcmUg
YWxzbyBwcmVzZW50IGluIHRoZSBpbml0aWFsIEdEVCwgbWFueSBPU2VzIHdpbGwgYmUgYWJsZSB0
byBhdm9pZAorICogaW5zdGFsbGluZyB0aGVpciBvd24gR0RULgorICovCisjZGVmaW5lIEZMQVRf
UklORzFfQ1MgMHhlMDE5ICAgIC8qIEdEVCBpbmRleCAyNTkgKi8KKyNkZWZpbmUgRkxBVF9SSU5H
MV9EUyAweGUwMjEgICAgLyogR0RUIGluZGV4IDI2MCAqLworI2RlZmluZSBGTEFUX1JJTkcxX1NT
IDB4ZTAyMSAgICAvKiBHRFQgaW5kZXggMjYwICovCisjZGVmaW5lIEZMQVRfUklORzNfQ1MgMHhl
MDJiICAgIC8qIEdEVCBpbmRleCAyNjEgKi8KKyNkZWZpbmUgRkxBVF9SSU5HM19EUyAweGUwMzMg
ICAgLyogR0RUIGluZGV4IDI2MiAqLworI2RlZmluZSBGTEFUX1JJTkczX1NTIDB4ZTAzMyAgICAv
KiBHRFQgaW5kZXggMjYyICovCisKKyNkZWZpbmUgRkxBVF9LRVJORUxfQ1MgRkxBVF9SSU5HMV9D
UworI2RlZmluZSBGTEFUX0tFUk5FTF9EUyBGTEFUX1JJTkcxX0RTCisjZGVmaW5lIEZMQVRfS0VS
TkVMX1NTIEZMQVRfUklORzFfU1MKKyNkZWZpbmUgRkxBVF9VU0VSX0NTICAgIEZMQVRfUklORzNf
Q1MKKyNkZWZpbmUgRkxBVF9VU0VSX0RTICAgIEZMQVRfUklORzNfRFMKKyNkZWZpbmUgRkxBVF9V
U0VSX1NTICAgIEZMQVRfUklORzNfU1MKKworI2RlZmluZSBfX0hZUEVSVklTT1JfVklSVF9TVEFS
VF9QQUUgICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRSAg
ICAgMHhGNTgwMDAwMAorI2RlZmluZSBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUgICAgICAgMHhG
NjgwMDAwMAorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfU1RBUlRfUEFFICAgICAgeGVuX21rX3Vs
b25nKF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRSkKKyNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRf
U1RBUlRfUEFFICAgICAgIHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRSkK
KyNkZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EX1BBRSAgICAgICAgIHhlbl9ta191bG9uZyhfX01B
Q0gyUEhZU19WSVJUX0VORF9QQUUpCisKKy8qIE5vbi1QQUUgYm91bmRzIGFyZSBvYnNvbGV0ZS4g
Ki8KKyNkZWZpbmUgX19IWVBFUlZJU09SX1ZJUlRfU1RBUlRfTk9OUEFFIDB4RkMwMDAwMDAKKyNk
ZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFSVF9OT05QQUUgIDB4RkMwMDAwMDAKKyNkZWZpbmUg
X19NQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFICAgIDB4RkM0MDAwMDAKKyNkZWZpbmUgSFlQRVJW
SVNPUl9WSVJUX1NUQVJUX05PTlBBRSAgIFwKKyAgICB4ZW5fbWtfdWxvbmcoX19IWVBFUlZJU09S
X1ZJUlRfU1RBUlRfTk9OUEFFKQorI2RlZmluZSBNQUNIMlBIWVNfVklSVF9TVEFSVF9OT05QQUUg
ICAgXAorICAgIHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX1NUQVJUX05PTlBBRSkKKyNk
ZWZpbmUgTUFDSDJQSFlTX1ZJUlRfRU5EX05PTlBBRSAgICAgIFwKKyAgICB4ZW5fbWtfdWxvbmco
X19NQUNIMlBIWVNfVklSVF9FTkRfTk9OUEFFKQorCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9WSVJU
X1NUQVJUIF9fSFlQRVJWSVNPUl9WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBfX01BQ0gyUEhZU19W
SVJUX1NUQVJUICBfX01BQ0gyUEhZU19WSVJUX1NUQVJUX1BBRQorI2RlZmluZSBfX01BQ0gyUEhZ
U19WSVJUX0VORCAgICBfX01BQ0gyUEhZU19WSVJUX0VORF9QQUUKKworI2lmbmRlZiBIWVBFUlZJ
U09SX1ZJUlRfU1RBUlQKKyNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUIHhlbl9ta191bG9u
ZyhfX0hZUEVSVklTT1JfVklSVF9TVEFSVCkKKyNlbmRpZgorCisjZGVmaW5lIE1BQ0gyUEhZU19W
SVJUX1NUQVJUICB4ZW5fbWtfdWxvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNkZWZpbmUg
TUFDSDJQSFlTX1ZJUlRfRU5EICAgIHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkK
KyNkZWZpbmUgTUFDSDJQSFlTX05SX0VOVFJJRVMgICgoTUFDSDJQSFlTX1ZJUlRfRU5ELU1BQ0gy
UEhZU19WSVJUX1NUQVJUKT4+MikKKyNpZm5kZWYgbWFjaGluZV90b19waHlzX21hcHBpbmcKKyNk
ZWZpbmUgbWFjaGluZV90b19waHlzX21hcHBpbmcgKChVTE9OR19QVFIgKilNQUNIMlBIWVNfVklS
VF9TVEFSVCkKKyNlbmRpZgorCisvKiAzMi0vNjQtYml0IGludmFyaWFiaWxpdHkgZm9yIGNvbnRy
b2wgaW50ZXJmYWNlcyAoZG9tY3RsL3N5c2N0bCkuICovCisjaWYgZGVmaW5lZChfX1hFTl9fKSB8
fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisjdW5kZWYgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUKKyNkZWZpbmUgX19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUobmFtZSwgdHlwZSkgICAgICAg
ICAgICAgICAgICBcCisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB0eXBlICpwOyB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0eXBlZGVmIHN0cnVjdCB7IHVu
aW9uIHsgdHlwZSAqcDsgdWludDY0X2FsaWduZWRfdCBxOyB9OyB9ICBcCisgICAgICAgIF9fZ3Vl
c3RfaGFuZGxlXzY0XyAjIyBuYW1lCisjdW5kZWYgc2V0X3hlbl9ndWVzdF9oYW5kbGVfcmF3Cisj
ZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlX3JhdyhobmQsIHZhbCkgICAgICAgICAgICAgICAg
ICBcCisgICAgZG8geyBpZiAoIHNpemVvZihobmQpID09IDggKSAqKHVpbnQ2NF90ICopJihobmQp
ID0gMDsgICBcCisgICAgICAgICAoaG5kKS5wID0gdmFsOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoIDAgKQorI2RlZmluZSAgaW50NjRfYWxpZ25l
ZF90ICBpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQorI2RlZmluZSB1aW50NjRf
YWxpZ25lZF90IHVpbnQ2NF90IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQorI2RlZmluZSBf
X1hFTl9HVUVTVF9IQU5ETEVfNjQobmFtZSkgX19ndWVzdF9oYW5kbGVfNjRfICMjIG5hbWUKKyNk
ZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBfX1hFTl9HVUVTVF9IQU5ETEVfNjQobmFt
ZSkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCitzdHJ1Y3QgY3B1X3VzZXJfcmVn
cyB7CisgICAgdWludDMyX3QgZWJ4OworICAgIHVpbnQzMl90IGVjeDsKKyAgICB1aW50MzJfdCBl
ZHg7CisgICAgdWludDMyX3QgZXNpOworICAgIHVpbnQzMl90IGVkaTsKKyAgICB1aW50MzJfdCBl
YnA7CisgICAgdWludDMyX3QgZWF4OworICAgIHVpbnQxNl90IGVycm9yX2NvZGU7ICAgIC8qIHBy
aXZhdGUgKi8KKyAgICB1aW50MTZfdCBlbnRyeV92ZWN0b3I7ICAvKiBwcml2YXRlICovCisgICAg
dWludDMyX3QgZWlwOworICAgIHVpbnQxNl90IGNzOworICAgIHVpbnQ4X3QgIHNhdmVkX3VwY2Fs
bF9tYXNrOworICAgIHVpbnQ4X3QgIF9wYWQwOworICAgIHVpbnQzMl90IGVmbGFnczsgICAgICAg
IC8qIGVmbGFncy5JRiA9PSAhc2F2ZWRfdXBjYWxsX21hc2sgKi8KKyAgICB1aW50MzJfdCBlc3A7
CisgICAgdWludDE2X3Qgc3MsIF9wYWQxOworICAgIHVpbnQxNl90IGVzLCBfcGFkMjsKKyAgICB1
aW50MTZfdCBkcywgX3BhZDM7CisgICAgdWludDE2X3QgZnMsIF9wYWQ0OworICAgIHVpbnQxNl90
IGdzLCBfcGFkNTsKK307Cit0eXBlZGVmIHN0cnVjdCBjcHVfdXNlcl9yZWdzIGNwdV91c2VyX3Jl
Z3NfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNwdV91c2VyX3JlZ3NfdCk7CisKKy8qCisg
KiBQYWdlLWRpcmVjdG9yeSBhZGRyZXNzZXMgYWJvdmUgNEdCIGRvIG5vdCBmaXQgaW50byBhcmNo
aXRlY3R1cmFsICVjcjMuCisgKiBXaGVuIGFjY2Vzc2luZyAlY3IzLCBvciBlcXVpdmFsZW50IGZp
ZWxkIGluIHZjcHVfZ3Vlc3RfY29udGV4dCwgZ3Vlc3RzCisgKiBtdXN0IHVzZSB0aGUgZm9sbG93
aW5nIGFjY2Vzc29yIG1hY3JvcyB0byBwYWNrL3VucGFjayB2YWxpZCBNRk5zLgorICovCisjZGVm
aW5lIHhlbl9wZm5fdG9fY3IzKHBmbikgKCgodW5zaWduZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNp
Z25lZCkocGZuKSA+PiAyMCkpCisjZGVmaW5lIHhlbl9jcjNfdG9fcGZuKGNyMykgKCgodW5zaWdu
ZWQpKGNyMykgPj4gMTIpIHwgKCh1bnNpZ25lZCkoY3IzKSA8PCAyMCkpCisKK3N0cnVjdCBhcmNo
X3ZjcHVfaW5mbyB7CisgICAgVUxPTkdfUFRSIGNyMjsKKyAgICBVTE9OR19QVFIgcGFkWzVdOyAv
KiBzaXplb2YodmNwdV9pbmZvX3QpID09IDY0ICovCit9OwordHlwZWRlZiBzdHJ1Y3QgYXJjaF92
Y3B1X2luZm8gYXJjaF92Y3B1X2luZm9fdDsKKworc3RydWN0IHhlbl9jYWxsYmFjayB7CisgICAg
VUxPTkdfUFRSIGNzOworICAgIFVMT05HX1BUUiBlaXA7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVu
X2NhbGxiYWNrIHhlbl9jYWxsYmFja190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLwor
CisjZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfMzJfSF9fICovCisKKy8q
CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi
CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t
b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2Fy
Y2gteDg2L3hlbi14ODZfNjQuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2
XzY0LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmY1M2Y2OQotLS0gL2Rl
di9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKQEAg
LTAsMCArMSwyMDIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHhlbi14ODZfNjQuaAor
ICoKKyAqIEd1ZXN0IE9TIGludGVyZmFjZSB0byB4ODYgNjQtYml0IFhlbi4KKyAqCisgKiBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg
KgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDYsIEsgQSBGcmFzZXIKKyAqLworCisjaWZuZGVm
IF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9YRU5fWDg2XzY0X0hfXworI2RlZmluZSBfX1hFTl9QVUJM
SUNfQVJDSF9YODZfWEVOX1g4Nl82NF9IX18KKworLyoKKyAqIEh5cGVyY2FsbCBpbnRlcmZhY2U6
CisgKiAgSW5wdXQ6ICAlcmRpLCAlcnNpLCAlcmR4LCAlcjEwLCAlcjgsICVyOSAoYXJndW1lbnRz
IDEtNikKKyAqICBPdXRwdXQ6ICVyYXgKKyAqIEFjY2VzcyBpcyB2aWEgaHlwZXJjYWxsIHBhZ2Ug
KHNldCB1cCBieSBndWVzdCBsb2FkZXIgb3IgdmlhIGEgWGVuIE1TUik6CisgKiAgY2FsbCBoeXBl
cmNhbGxfcGFnZSArIGh5cGVyY2FsbC1udW1iZXIgKiAzMgorICogQ2xvYmJlcmVkOiBhcmd1bWVu
dCByZWdpc3RlcnMgKGUuZy4sIDItYXJnIGh5cGVyY2FsbCBjbG9iYmVycyAlcmRpLCVyc2kpCisg
Ki8KKworLyoKKyAqIDY0LWJpdCBzZWdtZW50IHNlbGVjdG9ycworICogVGhlc2UgZmxhdCBzZWdt
ZW50cyBhcmUgaW4gdGhlIFhlbi1wcml2YXRlIHNlY3Rpb24gb2YgZXZlcnkgR0RULiBTaW5jZSB0
aGVzZQorICogYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgaW5pdGlhbCBHRFQsIG1hbnkgT1NlcyB3
aWxsIGJlIGFibGUgdG8gYXZvaWQKKyAqIGluc3RhbGxpbmcgdGhlaXIgb3duIEdEVC4KKyAqLwor
CisjZGVmaW5lIEZMQVRfUklORzNfQ1MzMiAweGUwMjMgIC8qIEdEVCBpbmRleCAyNjAgKi8KKyNk
ZWZpbmUgRkxBVF9SSU5HM19DUzY0IDB4ZTAzMyAgLyogR0RUIGluZGV4IDI2MSAqLworI2RlZmlu
ZSBGTEFUX1JJTkczX0RTMzIgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYyICovCisjZGVmaW5lIEZM
QVRfUklORzNfRFM2NCAweDAwMDAgIC8qIE5VTEwgc2VsZWN0b3IgKi8KKyNkZWZpbmUgRkxBVF9S
SU5HM19TUzMyIDB4ZTAyYiAgLyogR0RUIGluZGV4IDI2MiAqLworI2RlZmluZSBGTEFUX1JJTkcz
X1NTNjQgMHhlMDJiICAvKiBHRFQgaW5kZXggMjYyICovCisKKyNkZWZpbmUgRkxBVF9LRVJORUxf
RFM2NCBGTEFUX1JJTkczX0RTNjQKKyNkZWZpbmUgRkxBVF9LRVJORUxfRFMzMiBGTEFUX1JJTkcz
X0RTMzIKKyNkZWZpbmUgRkxBVF9LRVJORUxfRFMgICBGTEFUX0tFUk5FTF9EUzY0CisjZGVmaW5l
IEZMQVRfS0VSTkVMX0NTNjQgRkxBVF9SSU5HM19DUzY0CisjZGVmaW5lIEZMQVRfS0VSTkVMX0NT
MzIgRkxBVF9SSU5HM19DUzMyCisjZGVmaW5lIEZMQVRfS0VSTkVMX0NTICAgRkxBVF9LRVJORUxf
Q1M2NAorI2RlZmluZSBGTEFUX0tFUk5FTF9TUzY0IEZMQVRfUklORzNfU1M2NAorI2RlZmluZSBG
TEFUX0tFUk5FTF9TUzMyIEZMQVRfUklORzNfU1MzMgorI2RlZmluZSBGTEFUX0tFUk5FTF9TUyAg
IEZMQVRfS0VSTkVMX1NTNjQKKworI2RlZmluZSBGTEFUX1VTRVJfRFM2NCBGTEFUX1JJTkczX0RT
NjQKKyNkZWZpbmUgRkxBVF9VU0VSX0RTMzIgRkxBVF9SSU5HM19EUzMyCisjZGVmaW5lIEZMQVRf
VVNFUl9EUyAgIEZMQVRfVVNFUl9EUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9DUzY0IEZMQVRfUklO
RzNfQ1M2NAorI2RlZmluZSBGTEFUX1VTRVJfQ1MzMiBGTEFUX1JJTkczX0NTMzIKKyNkZWZpbmUg
RkxBVF9VU0VSX0NTICAgRkxBVF9VU0VSX0NTNjQKKyNkZWZpbmUgRkxBVF9VU0VSX1NTNjQgRkxB
VF9SSU5HM19TUzY0CisjZGVmaW5lIEZMQVRfVVNFUl9TUzMyIEZMQVRfUklORzNfU1MzMgorI2Rl
ZmluZSBGTEFUX1VTRVJfU1MgICBGTEFUX1VTRVJfU1M2NAorCisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9WSVJUX1NUQVJUIDB4RkZGRjgwMDAwMDAwMDAwMAorI2RlZmluZSBfX0hZUEVSVklTT1JfVklS
VF9FTkQgICAweEZGRkY4ODAwMDAwMDAwMDAKKyNkZWZpbmUgX19NQUNIMlBIWVNfVklSVF9TVEFS
VCAgMHhGRkZGODAwMDAwMDAwMDAwCisjZGVmaW5lIF9fTUFDSDJQSFlTX1ZJUlRfRU5EICAgIDB4
RkZGRjgwNDAwMDAwMDAwMAorCisjaWZuZGVmIEhZUEVSVklTT1JfVklSVF9TVEFSVAorI2RlZmlu
ZSBIWVBFUlZJU09SX1ZJUlRfU1RBUlQgeGVuX21rX3Vsb25nKF9fSFlQRVJWSVNPUl9WSVJUX1NU
QVJUKQorI2RlZmluZSBIWVBFUlZJU09SX1ZJUlRfRU5EICAgeGVuX21rX3Vsb25nKF9fSFlQRVJW
SVNPUl9WSVJUX0VORCkKKyNlbmRpZgorCisjZGVmaW5lIE1BQ0gyUEhZU19WSVJUX1NUQVJUICB4
ZW5fbWtfdWxvbmcoX19NQUNIMlBIWVNfVklSVF9TVEFSVCkKKyNkZWZpbmUgTUFDSDJQSFlTX1ZJ
UlRfRU5EICAgIHhlbl9ta191bG9uZyhfX01BQ0gyUEhZU19WSVJUX0VORCkKKyNkZWZpbmUgTUFD
SDJQSFlTX05SX0VOVFJJRVMgICgoTUFDSDJQSFlTX1ZJUlRfRU5ELU1BQ0gyUEhZU19WSVJUX1NU
QVJUKT4+MykKKyNpZm5kZWYgbWFjaGluZV90b19waHlzX21hcHBpbmcKKyNkZWZpbmUgbWFjaGlu
ZV90b19waHlzX21hcHBpbmcgKChVTE9OR19QVFIgKilIWVBFUlZJU09SX1ZJUlRfU1RBUlQpCisj
ZW5kaWYKKworLyoKKyAqIGludCBIWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UodW5zaWduZWQg
aW50IHdoaWNoLCBVTE9OR19QVFIgYmFzZSkKKyAqICBAd2hpY2ggPT0gU0VHQkFTRV8qICA7ICBA
YmFzZSA9PSA2NC1iaXQgYmFzZSBhZGRyZXNzCisgKiBSZXR1cm5zIDAgb24gc3VjY2Vzcy4KKyAq
LworI2RlZmluZSBTRUdCQVNFX0ZTICAgICAgICAgIDAKKyNkZWZpbmUgU0VHQkFTRV9HU19VU0VS
ICAgICAxCisjZGVmaW5lIFNFR0JBU0VfR1NfS0VSTkVMICAgMgorI2RlZmluZSBTRUdCQVNFX0dT
X1VTRVJfU0VMIDMgLyogU2V0IHVzZXIgJWdzIHNwZWNpZmllZCBpbiBiYXNlWzE1OjBdICovCisK
Ky8qCisgKiBpbnQgSFlQRVJWSVNPUl9pcmV0KHZvaWQpCisgKiBBbGwgYXJndW1lbnRzIGFyZSBv
biB0aGUga2VybmVsIHN0YWNrLCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdC4KKyAqIE5ldmVyIHJl
dHVybnMgaWYgc3VjY2Vzc2Z1bC4gQ3VycmVudCBrZXJuZWwgY29udGV4dCBpcyBsb3N0LgorICog
VGhlIHNhdmVkIENTIGlzIG1hcHBlZCBhcyBmb2xsb3dzOgorICogICBSSU5HMCAtPiBSSU5HMyBr
ZXJuZWwgbW9kZS4KKyAqICAgUklORzEgLT4gUklORzMga2VybmVsIG1vZGUuCisgKiAgIFJJTkcy
IC0+IFJJTkczIGtlcm5lbCBtb2RlLgorICogICBSSU5HMyAtPiBSSU5HMyB1c2VyIG1vZGUuCisg
KiBIb3dldmVyIFJJTkcwIGluZGljYXRlcyB0aGF0IHRoZSBndWVzdCBrZXJuZWwgc2hvdWxkIHJl
dHVybiB0byBpdGVzZWxmCisgKiBkaXJlY3RseSB3aXRoCisgKiAgICAgIG9yYiAgICQzLDEqOCgl
cnNwKQorICogICAgICBpcmV0cQorICogSWYgZmxhZ3MgY29udGFpbnMgVkdDRl9pbl9zeXNjYWxs
OgorICogICBSZXN0b3JlIFJBWCwgUklQLCBSRkxBR1MsIFJTUC4KKyAqICAgRGlzY2FyZCBSMTEs
IFJDWCwgQ1MsIFNTLgorICogT3RoZXJ3aXNlOgorICogICBSZXN0b3JlIFJBWCwgUjExLCBSQ1gs
IENTOlJJUCwgUkZMQUdTLCBTUzpSU1AuCisgKiBBbGwgb3RoZXIgcmVnaXN0ZXJzIGFyZSBzYXZl
ZCBvbiBoeXBlcmNhbGwgZW50cnkgYW5kIHJlc3RvcmVkIHRvIHVzZXIuCisgKi8KKy8qIEd1ZXN0
IGV4aXRlZCBpbiBTWVNDQUxMIGNvbnRleHQ/IFJldHVybiB0byBndWVzdCB3aXRoIFNZU1JFVD8g
Ki8KKyNkZWZpbmUgX1ZHQ0ZfaW5fc3lzY2FsbCA4CisjZGVmaW5lIFZHQ0ZfaW5fc3lzY2FsbCAg
KDE8PF9WR0NGX2luX3N5c2NhbGwpCisjZGVmaW5lIFZHQ0ZfSU5fU1lTQ0FMTCAgVkdDRl9pbl9z
eXNjYWxsCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0cnVjdCBpcmV0X2NvbnRleHQgewor
ICAgIC8qIFRvcCBvZiBzdGFjayAoJXJzcCBhdCBwb2ludCBvZiBoeXBlcmNhbGwpLiAqLworICAg
IHVpbnQ2NF90IHJheCwgcjExLCByY3gsIGZsYWdzLCByaXAsIGNzLCByZmxhZ3MsIHJzcCwgc3M7
CisgICAgLyogQm90dG9tIG9mIGlyZXQgc3RhY2sgZnJhbWUuICovCit9OworCisjaWYgZGVmaW5l
ZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQorLyogQW5vbnltb3VzIHVu
aW9uIGluY2x1ZGVzIGJvdGggMzItIGFuZCA2NC1iaXQgbmFtZXMgKGUuZy4sIGVheC9yYXgpLiAq
LworI2RlZmluZSBfX0RFQ0xfUkVHKG5hbWUpIHVuaW9uIHsgXAorICAgIHVpbnQ2NF90IHIgIyMg
bmFtZSwgZSAjIyBuYW1lOyBcCisgICAgdWludDMyX3QgX2UgIyMgbmFtZTsgXAorfQorI2Vsc2UK
Ky8qIE5vbi1nY2Mgc291cmNlcyBtdXN0IGFsd2F5cyB1c2UgdGhlIHByb3BlciA2NC1iaXQgbmFt
ZSAoZS5nLiwgcmF4KS4gKi8KKyNkZWZpbmUgX19ERUNMX1JFRyhuYW1lKSB1aW50NjRfdCByICMj
IG5hbWUKKyNlbmRpZgorCitzdHJ1Y3QgY3B1X3VzZXJfcmVncyB7CisgICAgdWludDY0X3QgcjE1
OworICAgIHVpbnQ2NF90IHIxNDsKKyAgICB1aW50NjRfdCByMTM7CisgICAgdWludDY0X3QgcjEy
OworICAgIF9fREVDTF9SRUcoYnApOworICAgIF9fREVDTF9SRUcoYngpOworICAgIHVpbnQ2NF90
IHIxMTsKKyAgICB1aW50NjRfdCByMTA7CisgICAgdWludDY0X3Qgcjk7CisgICAgdWludDY0X3Qg
cjg7CisgICAgX19ERUNMX1JFRyhheCk7CisgICAgX19ERUNMX1JFRyhjeCk7CisgICAgX19ERUNM
X1JFRyhkeCk7CisgICAgX19ERUNMX1JFRyhzaSk7CisgICAgX19ERUNMX1JFRyhkaSk7CisgICAg
dWludDMyX3QgZXJyb3JfY29kZTsgICAgLyogcHJpdmF0ZSAqLworICAgIHVpbnQzMl90IGVudHJ5
X3ZlY3RvcjsgIC8qIHByaXZhdGUgKi8KKyAgICBfX0RFQ0xfUkVHKGlwKTsKKyAgICB1aW50MTZf
dCBjcywgX3BhZDBbMV07CisgICAgdWludDhfdCAgc2F2ZWRfdXBjYWxsX21hc2s7CisgICAgdWlu
dDhfdCAgX3BhZDFbM107CisgICAgX19ERUNMX1JFRyhmbGFncyk7ICAgICAgLyogcmZsYWdzLklG
ID09ICFzYXZlZF91cGNhbGxfbWFzayAqLworICAgIF9fREVDTF9SRUcoc3ApOworICAgIHVpbnQx
Nl90IHNzLCBfcGFkMlszXTsKKyAgICB1aW50MTZfdCBlcywgX3BhZDNbM107CisgICAgdWludDE2
X3QgZHMsIF9wYWQ0WzNdOworICAgIHVpbnQxNl90IGZzLCBfcGFkNVszXTsgLyogTm9uLXplcm8g
PT4gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGZzX2Jhc2UuICAgICAqLworICAgIHVpbnQxNl90IGdz
LCBfcGFkNlszXTsgLyogTm9uLXplcm8gPT4gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGdzX2Jhc2Vf
dXNyLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IGNwdV91c2VyX3JlZ3MgY3B1X3VzZXJfcmVnc190
OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY3B1X3VzZXJfcmVnc190KTsKKworI3VuZGVmIF9f
REVDTF9SRUcKKworI2RlZmluZSB4ZW5fcGZuX3RvX2NyMyhwZm4pICgoVUxPTkdfUFRSKShwZm4p
IDw8IDEyKQorI2RlZmluZSB4ZW5fY3IzX3RvX3BmbihjcjMpICgoVUxPTkdfUFRSKShjcjMpID4+
IDEyKQorCitzdHJ1Y3QgYXJjaF92Y3B1X2luZm8geworICAgIFVMT05HX1BUUiBjcjI7CisgICAg
VUxPTkdfUFRSIHBhZDsgLyogc2l6ZW9mKHZjcHVfaW5mb190KSA9PSA2NCAqLworfTsKK3R5cGVk
ZWYgc3RydWN0IGFyY2hfdmNwdV9pbmZvIGFyY2hfdmNwdV9pbmZvX3Q7CisKK3R5cGVkZWYgVUxP
TkdfUFRSIHhlbl9jYWxsYmFja190OworCisjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisj
ZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfWDg2X1hFTl9YODZfNjRfSF9fICovCisKKy8qCisg
KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg
KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl
OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gt
eDg2L3hlbi5oIGIvaW5jbHVkZS94ZW4vcHVibGljL2FyY2gteDg2L3hlbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1ZGI3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNs
dWRlL3hlbi9wdWJsaWMvYXJjaC14ODYveGVuLmgKQEAgLTAsMCArMSwzMzggQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqIGFyY2gteDg2L3hlbi5oCisgKgorICogR3Vlc3QgT1MgaW50ZXJm
YWNlIHRvIHg4NiBYZW4uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBz
ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t
IHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
CisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICog
REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA2
LCBLIEEgRnJhc2VyCisgKi8KKworI2luY2x1ZGUgIi4uL3hlbi5oIgorCisjaWZuZGVmIF9fWEVO
X1BVQkxJQ19BUkNIX1g4Nl9YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX1g4Nl9Y
RU5fSF9fCisKKy8qIFN0cnVjdHVyYWwgZ3Vlc3QgaGFuZGxlcyBpbnRyb2R1Y2VkIGluIDB4MDAw
MzAyMDEuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+PSAweDAwMDMwMjAxCisj
ZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUpIFwKKyAgICB0eXBl
ZGVmIHN0cnVjdCB7IHR5cGUgKnA7IH0gX19ndWVzdF9oYW5kbGVfICMjIG5hbWUKKyNlbHNlCisj
ZGVmaW5lIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5cGUpIFwKKyAgICB0eXBl
ZGVmIHR5cGUgKiBfX2d1ZXN0X2hhbmRsZV8gIyMgbmFtZQorI2VuZGlmCisKKy8qCisgKiBYRU5f
R1VFU1RfSEFORExFIHJlcHJlc2VudHMgYSBndWVzdCBwb2ludGVyLCB3aGVuIHBhc3NlZCBhcyBh
IGZpZWxkCisgKiBpbiBhIHN0cnVjdCBpbiBtZW1vcnkuCisgKiBYRU5fR1VFU1RfSEFORExFX1BB
UkFNIHJlcHJlc2VudCBhIGd1ZXN0IHBvaW50ZXIsIHdoZW4gcGFzc2VkIGFzIGFuCisgKiBoeXBl
cmNhbGwgYXJndW1lbnQuCisgKiBYRU5fR1VFU1RfSEFORExFX1BBUkFNIGFuZCBYRU5fR1VFU1Rf
SEFORExFIGFyZSB0aGUgc2FtZSBvbiBYODYgYnV0CisgKiB0aGV5IG1pZ2h0IG5vdCBiZSBvbiBv
dGhlciBhcmNoaXRlY3R1cmVzLgorICovCisjZGVmaW5lIF9fREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSwgdHlwZSkgXAorICAgIF9fX0RFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUsIHR5
cGUpOyAgIFwKKyAgICBfX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShjb25zdF8jI25hbWUsIGNv
bnN0IHR5cGUpCisjZGVmaW5lIERFRklORV9YRU5fR1VFU1RfSEFORExFKG5hbWUpICAgX19ERUZJ
TkVfWEVOX0dVRVNUX0hBTkRMRShuYW1lLCBuYW1lKQorI2RlZmluZSBfX1hFTl9HVUVTVF9IQU5E
TEUobmFtZSkgICAgICAgIF9fZ3Vlc3RfaGFuZGxlXyAjIyBuYW1lCisjZGVmaW5lIFhFTl9HVUVT
VF9IQU5ETEUobmFtZSkgICAgICAgICAgX19YRU5fR1VFU1RfSEFORExFKG5hbWUpCisjZGVmaW5l
IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0obmFtZSkgICAgWEVOX0dVRVNUX0hBTkRMRShuYW1lKQor
I2RlZmluZSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpICBkbyB7IChobmQpLnAg
PSB2YWw7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGhuZCwgdmFs
KSBzZXRfeGVuX2d1ZXN0X2hhbmRsZV9yYXcoaG5kLCB2YWwpCisKKyNpZiBkZWZpbmVkKF9faTM4
Nl9fKQorI2luY2x1ZGUgInhlbi14ODZfMzIuaCIKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykK
KyNpbmNsdWRlICJ4ZW4teDg2XzY0LmgiCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18K
K3R5cGVkZWYgVUxPTkdfUFRSIHhlbl9wZm5fdDsKKyNkZWZpbmUgUFJJX3hlbl9wZm4gImx4Igor
I2VuZGlmCisKKyNkZWZpbmUgWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkgMQorCisjZGVmaW5lIFhF
Tl9IQVZFX1BWX1VQQ0FMTF9NQVNLIDEKKworLyoKKyAqIGBpbmNvbnRlbnRzIDIwMCBzZWdkZXNj
IFNlZ21lbnQgRGVzY3JpcHRvciBUYWJsZXMKKyAqLworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92
YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfZ2R0KGNvbnN0IHhlbl9wZm5fdCBmcmFtZXNbXSwgdW5z
aWduZWQgaW50IGVudHJpZXMpOworICogYAorICovCisvKgorICogQSBudW1iZXIgb2YgR0RUIGVu
dHJpZXMgYXJlIHJlc2VydmVkIGJ5IFhlbi4gVGhlc2UgYXJlIG5vdCBzaXR1YXRlZCBhdCB0aGUK
KyAqIHN0YXJ0IG9mIHRoZSBHRFQgYmVjYXVzZSBzb21lIHN0dXBpZCBPU2VzIGV4cG9ydCBoYXJk
LWNvZGVkIHNlbGVjdG9yIHZhbHVlcworICogaW4gdGhlaXIgQUJJLiBUaGVzZSBoYXJkLWNvZGVk
IHZhbHVlcyBhcmUgYWx3YXlzIG5lYXIgdGhlIHN0YXJ0IG9mIHRoZSBHRFQsCisgKiBzbyBYZW4g
cGxhY2VzIGl0c2VsZiBvdXQgb2YgdGhlIHdheSwgYXQgdGhlIGZhciBlbmQgb2YgdGhlIEdEVC4K
KyAqCisgKiBOQiBUaGUgTERUIGlzIHNldCB1c2luZyB0aGUgTU1VRVhUX1NFVF9MRFQgb3Agb2Yg
SFlQRVJWSVNPUl9tbXVleHRfb3AKKyAqLworI2RlZmluZSBGSVJTVF9SRVNFUlZFRF9HRFRfUEFH
RSAgMTQKKyNkZWZpbmUgRklSU1RfUkVTRVJWRURfR0RUX0JZVEUgIChGSVJTVF9SRVNFUlZFRF9H
RFRfUEFHRSAqIDQwOTYpCisjZGVmaW5lIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSAoRklSU1Rf
UkVTRVJWRURfR0RUX0JZVEUgLyA4KQorCisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisg
KiBgIEhZUEVSVklTT1JfdXBkYXRlX2Rlc2NyaXB0b3IodTY0IHBhLCB1NjQgZGVzYyk7CisgKiBg
CisgKiBgIEBwYSAgIFRoZSBtYWNoaW5lIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0
b3IgdG8KKyAqIGAgICAgICAgdXBkYXRlLiBNdXN0IGJlIGVpdGhlciBhIGRlc2NyaXB0b3IgcGFn
ZSBvciB3cml0YWJsZS4KKyAqIGAgQGRlc2MgVGhlIGRlc2NyaXB0b3IgdmFsdWUgdG8gdXBkYXRl
LCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgYQorICogYCAgICAgICBuYXRpdmUgZGVzY3JpcHRvciB0
YWJsZSBlbnRyeS4KKyAqLworCisvKiBNYXhpbXVtIG51bWJlciBvZiB2aXJ0dWFsIENQVXMgaW4g
bGVnYWN5IG11bHRpLXByb2Nlc3NvciBndWVzdHMuICovCisjZGVmaW5lIFhFTl9MRUdBQ1lfTUFY
X1ZDUFVTIDMyCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVkZWYgVUxPTkdfUFRSIHhl
bl91bG9uZ190OworI2RlZmluZSBQUklfeGVuX3Vsb25nICJseCIKKworLyoKKyAqIGAgZW51bSBu
ZWdfZXJybm92YWwKKyAqIGAgSFlQRVJWSVNPUl9zdGFja19zd2l0Y2goVUxPTkdfUFRSIHNzLCBV
TE9OR19QVFIgZXNwKTsKKyAqIGAKKyAqIFNldHMgdGhlIHN0YWNrIHNlZ21lbnQgYW5kIHBvaW50
ZXIgZm9yIHRoZSBjdXJyZW50IHZjcHUuCisgKi8KKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92
YWwKKyAqIGAgSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZShjb25zdCBzdHJ1Y3QgdHJhcF9pbmZv
IHRyYXBzW10pOworICogYAorICovCisvKgorICogU2VuZCBhbiBhcnJheSBvZiB0aGVzZSB0byBI
WVBFUlZJU09SX3NldF90cmFwX3RhYmxlKCkuCisgKiBUZXJtaW5hdGUgdGhlIGFycmF5IHdpdGgg
YSBzZW50aW5lbCBlbnRyeSwgd2l0aCB0cmFwc1tdLmFkZHJlc3M9PTAuCisgKiBUaGUgcHJpdmls
ZWdlIGxldmVsIHNwZWNpZmllcyB3aGljaCBtb2RlcyBtYXkgZW50ZXIgYSB0cmFwIHZpYSBhIHNv
ZnR3YXJlCisgKiBpbnRlcnJ1cHQuIE9uIHg4Ni82NCwgc2luY2UgcmluZ3MgMSBhbmQgMiBhcmUg
dW5hdmFpbGFibGUsIHdlIGFsbG9jYXRlCisgKiBwcml2aWxlZ2UgbGV2ZWxzIGFzIGZvbGxvd3M6
CisgKiAgTGV2ZWwgPT0gMDogTm9vbmUgbWF5IGVudGVyCisgKiAgTGV2ZWwgPT0gMTogS2VybmVs
IG1heSBlbnRlcgorICogIExldmVsID09IDI6IEtlcm5lbCBtYXkgZW50ZXIKKyAqICBMZXZlbCA9
PSAzOiBFdmVyeW9uZSBtYXkgZW50ZXIKKyAqLworI2RlZmluZSBUSV9HRVRfRFBMKF90aSkgICAg
ICAoKF90aSktPmZsYWdzICYgMykKKyNkZWZpbmUgVElfR0VUX0lGKF90aSkgICAgICAgKChfdGkp
LT5mbGFncyAmIDQpCisjZGVmaW5lIFRJX1NFVF9EUEwoX3RpLF9kcGwpICgoX3RpKS0+ZmxhZ3Mg
fD0gKF9kcGwpKQorI2RlZmluZSBUSV9TRVRfSUYoX3RpLF9pZikgICAoKF90aSktPmZsYWdzIHw9
ICgoISEoX2lmKSk8PDIpKQorc3RydWN0IHRyYXBfaW5mbyB7CisgICAgdWludDhfdCAgICAgICB2
ZWN0b3I7ICAvKiBleGNlcHRpb24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ki8KKyAgICB1aW50OF90ICAgICAgIGZsYWdzOyAgIC8qIDAtMzogcHJpdmlsZWdlIGxldmVsOyA0
OiBjbGVhciBldmVudCBlbmFibGU/ICAqLworICAgIHVpbnQxNl90ICAgICAgY3M7ICAgICAgLyog
Y29kZSBzZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVUxP
TkdfUFRSIGFkZHJlc3M7IC8qIGNvZGUgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworfTsKK3R5cGVkZWYgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2luZm9fdDsKK0RF
RklORV9YRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb190KTsKKwordHlwZWRlZiB1aW50NjRfdCB0
c2NfdGltZXN0YW1wX3Q7IC8qIFJEVFNDIHRpbWVzdGFtcCAqLworCisvKgorICogVGhlIGZvbGxv
d2luZyBpcyBhbGwgQ1BVIGNvbnRleHQuIE5vdGUgdGhhdCB0aGUgZnB1X2N0eHQgYmxvY2sgaXMg
ZmlsbGVkCisgKiBpbiBieSBGWFNBVkUgaWYgdGhlIENQVSBoYXMgZmVhdHVyZSBGWFNSOyBvdGhl
cndpc2UgRlNBVkUgaXMgdXNlZC4KKyAqCisgKiBBbHNvIG5vdGUgdGhhdCB3aGVuIGNhbGxpbmcg
RE9NQ1RMX3NldHZjcHVjb250ZXh0IGFuZCBWQ1BVX2luaXRpYWxpc2UKKyAqIGZvciBIVk0gYW5k
IFBWSCBndWVzdHMsIG5vdCBhbGwgaW5mb3JtYXRpb24gaW4gdGhpcyBzdHJ1Y3R1cmUgaXMgdXBk
YXRlZDoKKyAqCisgKiAtIEZvciBIVk0gZ3Vlc3RzLCB0aGUgc3RydWN0dXJlcyByZWFkIGluY2x1
ZGU6IGZwdV9jdHh0IChpZgorICogVkdDVF9JMzg3X1ZBTElEIGlzIHNldCksIGZsYWdzLCB1c2Vy
X3JlZ3MsIGRlYnVncmVnWypdCisgKgorICogLSBQVkggZ3Vlc3RzIGFyZSB0aGUgc2FtZSBhcyBI
Vk0gZ3Vlc3RzLCBidXQgYWRkaXRpb25hbGx5IHVzZSBjdHJscmVnWzNdIHRvCisgKiBzZXQgY3Iz
LiBBbGwgb3RoZXIgZmllbGRzIG5vdCB1c2VkIHNob3VsZCBiZSBzZXQgdG8gMC4KKyAqLworc3Ry
dWN0IHZjcHVfZ3Vlc3RfY29udGV4dCB7CisgICAgLyogRlBVIHJlZ2lzdGVycyBjb21lIGZpcnN0
IHNvIHRoZXkgY2FuIGJlIGFsaWduZWQgZm9yIEZYU0FWRS9GWFJTVE9SLiAqLworICAgIHN0cnVj
dCB7IGNoYXIgeFs1MTJdOyB9IGZwdV9jdHh0OyAgICAgICAvKiBVc2VyLWxldmVsIEZQVSByZWdp
c3RlcnMgICAgICovCisjZGVmaW5lIFZHQ0ZfSTM4N19WQUxJRCAgICAgICAgICAgICAgICAoMTw8
MCkKKyNkZWZpbmUgVkdDRl9JTl9LRVJORUwgICAgICAgICAgICAgICAgICgxPDwyKQorI2RlZmlu
ZSBfVkdDRl9pMzg3X3ZhbGlkICAgICAgICAgICAgICAgMAorI2RlZmluZSBWR0NGX2kzODdfdmFs
aWQgICAgICAgICAgICAgICAgKDE8PF9WR0NGX2kzODdfdmFsaWQpCisjZGVmaW5lIF9WR0NGX2lu
X2tlcm5lbCAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFZHQ0ZfaW5fa2VybmVsICAgICAgICAg
ICAgICAgICAoMTw8X1ZHQ0ZfaW5fa2VybmVsKQorI2RlZmluZSBfVkdDRl9mYWlsc2FmZV9kaXNh
Ymxlc19ldmVudHMgMworI2RlZmluZSBWR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50cyAgKDE8
PF9WR0NGX2ZhaWxzYWZlX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZpbmUgX1ZHQ0Zfc3lzY2FsbF9k
aXNhYmxlc19ldmVudHMgIDQKKyNkZWZpbmUgVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cyAg
ICgxPDxfVkdDRl9zeXNjYWxsX2Rpc2FibGVzX2V2ZW50cykKKyNkZWZpbmUgX1ZHQ0Zfb25saW5l
ICAgICAgICAgICAgICAgICAgIDUKKyNkZWZpbmUgVkdDRl9vbmxpbmUgICAgICAgICAgICAgICAg
ICAgICgxPDxfVkdDRl9vbmxpbmUpCisgICAgVUxPTkdfUFRSIGZsYWdzOyAgICAgICAgICAgICAg
ICAgICAgLyogVkdDRl8qIGZsYWdzICAgICAgICAgICAgICAgICAqLworICAgIHN0cnVjdCBjcHVf
dXNlcl9yZWdzIHVzZXJfcmVnczsgICAgICAgICAvKiBVc2VyLWxldmVsIENQVSByZWdpc3RlcnMg
ICAgICovCisgICAgc3RydWN0IHRyYXBfaW5mbyB0cmFwX2N0eHRbMjU2XTsgICAgICAgIC8qIFZp
cnR1YWwgSURUICAgICAgICAgICAgICAgICAgKi8KKyAgICBVTE9OR19QVFIgbGR0X2Jhc2UsIGxk
dF9lbnRzOyAgICAgICAvKiBMRFQgKGxpbmVhciBhZGRyZXNzLCAjIGVudHMpICovCisgICAgVUxP
TkdfUFRSIGdkdF9mcmFtZXNbMTZdLCBnZHRfZW50czsgLyogR0RUIChtYWNoaW5lIGZyYW1lcywg
IyBlbnRzKSAqLworICAgIFVMT05HX1BUUiBrZXJuZWxfc3MsIGtlcm5lbF9zcDsgICAgIC8qIFZp
cnR1YWwgVFNTIChvbmx5IFNTMS9TUDEpICAgKi8KKyAgICAvKiBOQi4gVXNlciBwYWdldGFibGUg
b24geDg2LzY0IGlzIHBsYWNlZCBpbiBjdHJscmVnWzFdLiAqLworICAgIFVMT05HX1BUUiBjdHJs
cmVnWzhdOyAgICAgICAgICAgICAgIC8qIENSMC1DUjcgKGNvbnRyb2wgcmVnaXN0ZXJzKSAgKi8K
KyAgICBVTE9OR19QVFIgZGVidWdyZWdbOF07ICAgICAgICAgICAgICAvKiBEQjAtREI3IChkZWJ1
ZyByZWdpc3RlcnMpICAgICovCisjaWZkZWYgX19pMzg2X18KKyAgICBVTE9OR19QVFIgZXZlbnRf
Y2FsbGJhY2tfY3M7ICAgICAgICAvKiBDUzpFSVAgb2YgZXZlbnQgY2FsbGJhY2sgICAgICovCisg
ICAgVUxPTkdfUFRSIGV2ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9OR19QVFIgZmFpbHNhZmVf
Y2FsbGJhY2tfY3M7ICAgICAvKiBDUzpFSVAgb2YgZmFpbHNhZmUgY2FsbGJhY2sgICovCisgICAg
VUxPTkdfUFRSIGZhaWxzYWZlX2NhbGxiYWNrX2VpcDsKKyNlbHNlCisgICAgVUxPTkdfUFRSIGV2
ZW50X2NhbGxiYWNrX2VpcDsKKyAgICBVTE9OR19QVFIgZmFpbHNhZmVfY2FsbGJhY2tfZWlwOwor
I2lmZGVmIF9fWEVOX18KKyAgICB1bmlvbiB7CisgICAgICAgIFVMT05HX1BUUiBzeXNjYWxsX2Nh
bGxiYWNrX2VpcDsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
dmVudF9jYWxsYmFja19jczsgICAgLyogY29tcGF0IENTIG9mIGV2ZW50IGNiICAgICAqLworICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGZhaWxzYWZlX2NhbGxiYWNrX2NzOyAvKiBjb21wYXQgQ1Mg
b2YgZmFpbHNhZmUgY2IgICovCisgICAgICAgIH07CisgICAgfTsKKyNlbHNlCisgICAgVUxPTkdf
UFRSIHN5c2NhbGxfY2FsbGJhY2tfZWlwOworI2VuZGlmCisjZW5kaWYKKyAgICBVTE9OR19QVFIg
dm1fYXNzaXN0OyAgICAgICAgICAgICAgICAvKiBWTUFTU1RfVFlQRV8qIGJpdG1hcCAqLworI2lm
ZGVmIF9feDg2XzY0X18KKyAgICAvKiBTZWdtZW50IGJhc2UgYWRkcmVzc2VzLiAqLworICAgIHVp
bnQ2NF90ICAgICAgZnNfYmFzZTsKKyAgICB1aW50NjRfdCAgICAgIGdzX2Jhc2Vfa2VybmVsOwor
ICAgIHVpbnQ2NF90ICAgICAgZ3NfYmFzZV91c2VyOworI2VuZGlmCit9OwordHlwZWRlZiBzdHJ1
Y3QgdmNwdV9ndWVzdF9jb250ZXh0IHZjcHVfZ3Vlc3RfY29udGV4dF90OworREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUodmNwdV9ndWVzdF9jb250ZXh0X3QpOworCitzdHJ1Y3QgYXJjaF9zaGFyZWRf
aW5mbyB7CisgICAgLyoKKyAgICAgKiBOdW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUgcDJt
IHRhYmxlKHMpIGFuY2hvcmVkIGF0CisgICAgICogcGZuX3RvX21mbl9mcmFtZV9saXN0X2xpc3Qg
YW5kL29yIHAybV92YWRkci4KKyAgICAgKi8KKyAgICBVTE9OR19QVFIgbWF4X3BmbjsKKyAgICAv
KgorICAgICAqIEZyYW1lIGNvbnRhaW5pbmcgbGlzdCBvZiBtZm5zIGNvbnRhaW5pbmcgbGlzdCBv
ZiBtZm5zIGNvbnRhaW5pbmcgcDJtLgorICAgICAqIEEgdmFsdWUgb2YgMCBpbmRpY2F0ZXMgaXQg
aGFzIG5vdCB5ZXQgYmVlbiBzZXQgdXAsIH4wIGluZGljYXRlcyBpdCBoYXMKKyAgICAgKiBiZWVu
IHNldCB0byBpbnZhbGlkIGUuZy4gZHVlIHRvIHRoZSBwMm0gYmVpbmcgdG9vIGxhcmdlIGZvciB0
aGUgMy1sZXZlbAorICAgICAqIHAybSB0cmVlLiBJbiB0aGlzIGNhc2UgdGhlIGxpbmVhciBtYXBw
ZXIgcDJtIGxpc3QgYW5jaG9yZWQgYXQgcDJtX3ZhZGRyCisgICAgICogaXMgdG8gYmUgdXNlZC4K
KyAgICAgKi8KKyAgICB4ZW5fcGZuX3QgICAgIHBmbl90b19tZm5fZnJhbWVfbGlzdF9saXN0Owor
ICAgIFVMT05HX1BUUiBubWlfcmVhc29uOworICAgIC8qCisgICAgICogRm9sbG93aW5nIHRocmVl
IGZpZWxkcyBhcmUgdmFsaWQgaWYgcDJtX2NyMyBjb250YWlucyBhIHZhbHVlIGRpZmZlcmVudAor
ICAgICAqIGZyb20gMC4KKyAgICAgKiBwMm1fY3IzIGlzIHRoZSByb290IG9mIHRoZSBhZGRyZXNz
IHNwYWNlIHdoZXJlIHAybV92YWRkciBpcyB2YWxpZC4KKyAgICAgKiBwMm1fY3IzIGlzIGluIHRo
ZSBzYW1lIGZvcm1hdCBhcyBhIGNyMyB2YWx1ZSBpbiB0aGUgdmNwdSByZWdpc3RlciBzdGF0ZQor
ICAgICAqIGFuZCBob2xkcyB0aGUgZm9sZGVkIG1hY2hpbmUgZnJhbWUgbnVtYmVyICh2aWEgeGVu
X3Bmbl90b19jcjMpIG9mIGEKKyAgICAgKiBMMyBvciBMNCBwYWdlIHRhYmxlLgorICAgICAqIHAy
bV92YWRkciBob2xkcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBsaW5lYXIgcDJtIGxpc3Qu
IEFsbCBlbnRyaWVzCisgICAgICogaW4gdGhlIHJhbmdlIFswLi4ubWF4X3BmblsgYXJlIGFjY2Vz
c2libGUgdmlhIHRoaXMgcG9pbnRlci4KKyAgICAgKiBwMm1fZ2VuZXJhdGlvbiB3aWxsIGJlIGlu
Y3JlbWVudGVkIGJ5IHRoZSBndWVzdCBiZWZvcmUgYW5kIGFmdGVyIGVhY2gKKyAgICAgKiBjaGFu
Z2Ugb2YgdGhlIG1hcHBpbmdzIG9mIHRoZSBwMm0gbGlzdC4gcDJtX2dlbmVyYXRpb24gc3RhcnRz
IGF0IDAgYW5kCisgICAgICogYSB2YWx1ZSB3aXRoIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQg
c2V0IGluZGljYXRlcyB0aGF0IGEgbWFwcGluZworICAgICAqIHVwZGF0ZSBpcyBpbiBwcm9ncmVz
cy4gVGhpcyBhbGxvd3MgZ3Vlc3QgZXh0ZXJuYWwgc29mdHdhcmUgKGUuZy4gaW4gRG9tMCkKKyAg
ICAgKiB0byB2ZXJpZnkgdGhhdCByZWFkIG1hcHBpbmdzIGFyZSBjb25zaXN0ZW50IGFuZCB3aGV0
aGVyIHRoZXkgaGF2ZSBjaGFuZ2VkCisgICAgICogc2luY2UgdGhlIGxhc3QgY2hlY2suCisgICAg
ICogTW9kaWZ5aW5nIGEgcDJtIGVsZW1lbnQgaW4gdGhlIGxpbmVhciBwMm0gbGlzdCBpcyBhbGxv
d2VkIHZpYSBhbiBhdG9taWMKKyAgICAgKiB3cml0ZSBvbmx5LgorICAgICAqLworICAgIFVMT05H
X1BUUiBwMm1fY3IzOyAgICAgICAgIC8qIGNyMyB2YWx1ZSBvZiB0aGUgcDJtIGFkZHJlc3Mgc3Bh
Y2UgKi8KKyAgICBVTE9OR19QVFIgcDJtX3ZhZGRyOyAgICAgICAvKiB2aXJ0dWFsIGFkZHJlc3Mg
b2YgdGhlIHAybSBsaXN0ICovCisgICAgVUxPTkdfUFRSIHAybV9nZW5lcmF0aW9uOyAgLyogZ2Vu
ZXJhdGlvbiBjb3VudCBvZiBwMm0gbWFwcGluZyAqLworI2lmZGVmIF9faTM4Nl9fCisgICAgLyog
VGhlcmUncyBubyByb29tIGZvciB0aGlzIGZpZWxkIGluIHRoZSBnZW5lcmljIHN0cnVjdHVyZS4g
Ki8KKyAgICB1aW50MzJfdCB3Y19zZWNfaGk7CisjZW5kaWYKK307Cit0eXBlZGVmIHN0cnVjdCBh
cmNoX3NoYXJlZF9pbmZvIGFyY2hfc2hhcmVkX2luZm9fdDsKKworI2lmIGRlZmluZWQoX19YRU5f
XykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorLyoKKyAqIHN0cnVjdCB4ZW5fYXJjaF9kb21h
aW5jb25maWcncyBBQkkgaXMgY292ZXJlZCBieQorICogWEVOX0RPTUNUTF9JTlRFUkZBQ0VfVkVS
U0lPTi4KKyAqLworc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyB7CisjZGVmaW5lIF9YRU5f
WDg2X0VNVV9MQVBJQyAgICAgICAgICAwCisjZGVmaW5lIFhFTl9YODZfRU1VX0xBUElDICAgICAg
ICAgICAoMVU8PF9YRU5fWDg2X0VNVV9MQVBJQykKKyNkZWZpbmUgX1hFTl9YODZfRU1VX0hQRVQg
ICAgICAgICAgIDEKKyNkZWZpbmUgWEVOX1g4Nl9FTVVfSFBFVCAgICAgICAgICAgICgxVTw8X1hF
Tl9YODZfRU1VX0hQRVQpCisjZGVmaW5lIF9YRU5fWDg2X0VNVV9QTSAgICAgICAgICAgICAyCisj
ZGVmaW5lIFhFTl9YODZfRU1VX1BNICAgICAgICAgICAgICAoMVU8PF9YRU5fWDg2X0VNVV9QTSkK
KyNkZWZpbmUgX1hFTl9YODZfRU1VX1JUQyAgICAgICAgICAgIDMKKyNkZWZpbmUgWEVOX1g4Nl9F
TVVfUlRDICAgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX1JUQykKKyNkZWZpbmUgX1hFTl9Y
ODZfRU1VX0lPQVBJQyAgICAgICAgIDQKKyNkZWZpbmUgWEVOX1g4Nl9FTVVfSU9BUElDICAgICAg
ICAgICgxVTw8X1hFTl9YODZfRU1VX0lPQVBJQykKKyNkZWZpbmUgX1hFTl9YODZfRU1VX1BJQyAg
ICAgICAgICAgIDUKKyNkZWZpbmUgWEVOX1g4Nl9FTVVfUElDICAgICAgICAgICAgICgxVTw8X1hF
Tl9YODZfRU1VX1BJQykKKyNkZWZpbmUgX1hFTl9YODZfRU1VX1ZHQSAgICAgICAgICAgIDYKKyNk
ZWZpbmUgWEVOX1g4Nl9FTVVfVkdBICAgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX1ZHQSkK
KyNkZWZpbmUgX1hFTl9YODZfRU1VX0lPTU1VICAgICAgICAgIDcKKyNkZWZpbmUgWEVOX1g4Nl9F
TVVfSU9NTVUgICAgICAgICAgICgxVTw8X1hFTl9YODZfRU1VX0lPTU1VKQorI2RlZmluZSBfWEVO
X1g4Nl9FTVVfUElUICAgICAgICAgICAgOAorI2RlZmluZSBYRU5fWDg2X0VNVV9QSVQgICAgICAg
ICAgICAgKDFVPDxfWEVOX1g4Nl9FTVVfUElUKQorCisjZGVmaW5lIFhFTl9YODZfRU1VX0FMTCAg
ICAgICAgICAgICAoWEVOX1g4Nl9FTVVfTEFQSUMgfCBYRU5fWDg2X0VNVV9IUEVUIHwgIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fWDg2X0VNVV9QTSB8IFhFTl9Y
ODZfRU1VX1JUQyB8ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFhFTl9YODZfRU1VX0lPQVBJQyB8IFhFTl9YODZfRU1VX1BJQyB8ICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1g4Nl9FTVVfVkdBIHwgWEVOX1g4Nl9FTVVfSU9N
TVUgfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fWDg2X0VN
VV9QSVQpCisgICAgdWludDMyX3QgZW11bGF0aW9uX2ZsYWdzOworfTsKKyNlbmRpZgorCisjZW5k
aWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisvKgorICogYCBlbnVtIG5lZ19lcnJub3ZhbAorICog
YCBIWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoKGludCBzZXQpOworICogYAorICogU2V0cyAoaWYg
c2V0IT0wKSBvciBjbGVhcnMgKGlmIHNldD09MCkgQ1IwLlRTLgorICovCisKKy8qCisgKiBgIGVu
dW0gbmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1Jfc2V0X2RlYnVncmVnKGludCByZWdubywg
VUxPTkdfUFRSIHZhbHVlKTsKKyAqCisgKiBgIFVMT05HX1BUUgorICogYCBIWVBFUlZJU09SX2dl
dF9kZWJ1Z3JlZyhpbnQgcmVnbm8pOworICogRm9yIDA8PXJlZzw9NywgcmV0dXJucyB0aGUgZGVi
dWcgcmVnaXN0ZXIgdmFsdWUuCisgKiBGb3Igb3RoZXIgdmFsdWVzIG9mIHJlZywgcmV0dXJucyAo
KFVMT05HX1BUUiktRUlOVkFMKS4KKyAqIChVbmZvcnR1bmF0ZWx5LCB0aGlzIGludGVyZmFjZSBp
cyBkZWZlY3RpdmUuKQorICovCisKKy8qCisgKiBQcmVmaXggZm9yY2VzIGVtdWxhdGlvbiBvZiBz
b21lIG5vbi10cmFwcGluZyBpbnN0cnVjdGlvbnMuCisgKiBDdXJyZW50bHkgb25seSBDUFVJRC4K
KyAqLworI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBYRU5fRU1VTEFURV9QUkVGSVggLmJ5
dGUgMHgwZiwweDBiLDB4NzgsMHg2NSwweDZlIDsKKyNkZWZpbmUgWEVOX0NQVUlEICAgICAgICAg
IFhFTl9FTVVMQVRFX1BSRUZJWCBjcHVpZAorI2Vsc2UKKyNkZWZpbmUgWEVOX0VNVUxBVEVfUFJF
RklYICIuYnl0ZSAweDBmLDB4MGIsMHg3OCwweDY1LDB4NmUgOyAiCisjZGVmaW5lIFhFTl9DUFVJ
RCAgICAgICAgICBYRU5fRU1VTEFURV9QUkVGSVggImNwdWlkIgorI2VuZGlmCisKKyNlbmRpZiAv
KiBfX1hFTl9QVUJMSUNfQVJDSF9YODZfWEVOX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFi
bGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZz
ZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6
CisgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oIGIvaW5jbHVkZS94
ZW4vcHVibGljL2Vycm5vLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTQ0
MDIzNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy9lcnJuby5oCkBAIC0w
LDAgKzEsMTI0IEBACisvKgorICogVGhlcmUgYXJlIHR3byBleHBlY3RlZCB3YXlzIG9mIGluY2x1
ZGluZyB0aGlzIGhlYWRlci4KKyAqCisgKiAxKSBUaGUgImRlZmF1bHQiIGNhc2UgKGV4cGVjdGVk
IGZyb20gdG9vbHMgZXRjKS4KKyAqCisgKiBTaW1wbHkgI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5o
PgorICoKKyAqIEluIHRoaXMgY2lyY3Vtc3RhbmNlLCBub3JtYWwgaGVhZGVyIGd1YXJkcyBhcHBs
eSBhbmQgdGhlIGluY2x1ZGVyIHNoYWxsIGdldAorICogYW4gZW51bWVyYXRpb24gaW4gdGhlIFhF
Tl94eHggbmFtZXNwYWNlLCBhcHByb3ByaWF0ZSBmb3IgQyBvciBhc3NlbWJseS4KKyAqCisgKiAy
KSBUaGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBpbmNsdWRlciBwcm92aWRlcyBhIFhFTl9FUlJO
TygpIGluIHNjb3BlLgorICoKKyAqIEluIHRoaXMgY2FzZSwgbm8gaW5jbHVzaW9uIGd1YXJkcyBh
cHBseSBhbmQgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKKyAqIHRoZWlyIFhFTl9FUlJO
TygpIGJlaW5nIGFwcHJvcHJpYXRlIGluIHRoZSBpbmNsdWRlZCBjb250ZXh0LiAgVGhlIGhlYWRl
cgorICogd2lsbCB1bmlsYXRlcmFsbHkgI3VuZGVmIFhFTl9FUlJOTygpLgorICovCisKKyNpZm5k
ZWYgWEVOX0VSUk5PCisKKy8qCisgKiBJbmNsdWRlciBoYXMgbm90IHByb3ZpZGVkIGEgY3VzdG9t
IFhFTl9FUlJOTygpLiAgQXJyYW5nZSBmb3Igbm9ybWFsIGhlYWRlcgorICogZ3VhcmRzLCBhbiBh
dXRvbWF0aWMgZW51bSAoZm9yIEMgY29kZSkgYW5kIGNvbnN0YW50cyBpbiB0aGUgWEVOX3h4eAor
ICogbmFtZXNwYWNlLgorICovCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19FUlJOT19IX18KKyNkZWZp
bmUgX19YRU5fUFVCTElDX0VSUk5PX0hfXworCisjZGVmaW5lIFhFTl9FUlJOT19ERUZBVUxUX0lO
Q0xVREUKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwg
dmFsdWUpIFhFTl8jI25hbWUgPSB2YWx1ZSwKK2VudW0geGVuX2Vycm5vIHsKKworI2VsaWYgX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA3MDAKKworI2RlZmluZSBYRU5fRVJSTk8o
bmFtZSwgdmFsdWUpIC5lcXUgWEVOXyMjbmFtZSwgdmFsdWUKKworI2VuZGlmIC8qIF9fQVNTRU1C
TFlfXyAqLworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0VSUk5PX0hfXyAqLworI2VuZGlmIC8q
ICFYRU5fRVJSTk8gKi8KKworLyogYCBlbnVtIG5lZ19lcnJub3ZhbCB7ICBbIC1FZm9vIGZvciBl
YWNoIEVmb28gaW4gdGhlIGxpc3QgYmVsb3cgXSAgfSAqLworLyogYCBlbnVtIGVycm5vdmFsIHsg
Ki8KKworI2lmZGVmIFhFTl9FUlJOTworCisvKgorICogVmFsdWVzIG9yaWdpbmF0aW5nIGZyb20g
eDg2IExpbnV4LiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgcmVzcGVjdGl2ZQorICogdmFsdWVzIHdo
ZW4gYWRkaW5nIG5ldyBkZWZpbml0aW9ucyBoZXJlLgorICoKKyAqIFRoZSBzZXQgb2YgaWRlbnRp
ZmllcnMgdG8gYmUgYWRkZWQgaGVyZSBzaG91bGRuJ3QgZXh0ZW5kIGJleW9uZCB3aGF0CisgKiBQ
T1NJWCBtYW5kYXRlcyAoc2VlIGUuZy4KKyAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25s
aW5lcHVicy85Njk5OTE5Nzk5L2Jhc2VkZWZzL2Vycm5vLmguaHRtbCkKKyAqIHdpdGggdGhlIGV4
Y2VwdGlvbiB0aGF0IHdlIHN1cHBvcnQgc29tZSBvcHRpb25hbCAoWFNSKSB2YWx1ZXMKKyAqIHNw
ZWNpZmllZCB0aGVyZSAoYnV0IG5vIG5ldyBvbmVzIHNob3VsZCBiZSBhZGRlZCkuCisgKi8KKwor
WEVOX0VSUk5PKEVQRVJNLAkgMSkJLyogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQgKi8KK1hFTl9F
UlJOTyhFTk9FTlQsCSAyKQkvKiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICovCitYRU5fRVJS
Tk8oRVNSQ0gsCSAzKQkvKiBObyBzdWNoIHByb2Nlc3MgKi8KKyNpZmRlZiBfX1hFTl9fIC8qIElu
dGVybmFsIG9ubHksIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHRoZSBndWVzdC4gKi8KK1hF
Tl9FUlJOTyhFSU5UUiwJIDQpCS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxsICovCisjZW5kaWYK
K1hFTl9FUlJOTyhFSU8sCQkgNSkJLyogSS9PIGVycm9yICovCitYRU5fRVJSTk8oRU5YSU8sCSA2
KQkvKiBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzICovCitYRU5fRVJSTk8oRTJCSUcsCSA3KQkv
KiBBcmcgbGlzdCB0b28gTE9OR19QVFIgKi8KK1hFTl9FUlJOTyhFTk9FWEVDLAkgOCkJLyogRXhl
YyBmb3JtYXQgZXJyb3IgKi8KK1hFTl9FUlJOTyhFQkFERiwJIDkpCS8qIEJhZCBmaWxlIG51bWJl
ciAqLworWEVOX0VSUk5PKEVDSElMRCwJMTApCS8qIE5vIGNoaWxkIHByb2Nlc3NlcyAqLworWEVO
X0VSUk5PKEVBR0FJTiwJMTEpCS8qIFRyeSBhZ2FpbiAqLworWEVOX0VSUk5PKEVXT1VMREJMT0NL
LAkxMSkJLyogT3BlcmF0aW9uIHdvdWxkIGJsb2NrLiAgQWxpYXNlcyBFQUdBSU4gKi8KK1hFTl9F
UlJOTyhFTk9NRU0sCTEyKQkvKiBPdXQgb2YgbWVtb3J5ICovCitYRU5fRVJSTk8oRUFDQ0VTLAkx
MykJLyogUGVybWlzc2lvbiBkZW5pZWQgKi8KK1hFTl9FUlJOTyhFRkFVTFQsCTE0KQkvKiBCYWQg
YWRkcmVzcyAqLworWEVOX0VSUk5PKEVCVVNZLAkxNikJLyogRGV2aWNlIG9yIHJlc291cmNlIGJ1
c3kgKi8KK1hFTl9FUlJOTyhFRVhJU1QsCTE3KQkvKiBGaWxlIGV4aXN0cyAqLworWEVOX0VSUk5P
KEVYREVWLAkxOCkJLyogQ3Jvc3MtZGV2aWNlIGxpbmsgKi8KK1hFTl9FUlJOTyhFTk9ERVYsCTE5
KQkvKiBObyBzdWNoIGRldmljZSAqLworWEVOX0VSUk5PKEVJU0RJUiwJMjEpCS8qIElzIGEgZGly
ZWN0b3J5ICovCitYRU5fRVJSTk8oRUlOVkFMLAkyMikJLyogSW52YWxpZCBhcmd1bWVudCAqLwor
WEVOX0VSUk5PKEVORklMRSwJMjMpCS8qIEZpbGUgdGFibGUgb3ZlcmZsb3cgKi8KK1hFTl9FUlJO
TyhFTUZJTEUsCTI0KQkvKiBUb28gbWFueSBvcGVuIGZpbGVzICovCitYRU5fRVJSTk8oRU5PU1BD
LAkyOCkJLyogTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UgKi8KK1hFTl9FUlJOTyhFUk9GUywJMzAp
CS8qIFJlYWQtb25seSBmaWxlIHN5c3RlbSAqLworWEVOX0VSUk5PKEVNTElOSywJMzEpCS8qIFRv
byBtYW55IGxpbmtzICovCitYRU5fRVJSTk8oRURPTSwJCTMzKQkvKiBNYXRoIGFyZ3VtZW50IG91
dCBvZiBkb21haW4gb2YgZnVuYyAqLworWEVOX0VSUk5PKEVSQU5HRSwJMzQpCS8qIE1hdGggcmVz
dWx0IG5vdCByZXByZXNlbnRhYmxlICovCitYRU5fRVJSTk8oRURFQURMSywJMzUpCS8qIFJlc291
cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyICovCitYRU5fRVJSTk8oRURFQURMT0NLLAkzNSkJLyog
UmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIuIEFsaWFzZXMgRURFQURMSyAqLworWEVOX0VS
Uk5PKEVOQU1FVE9PTE9ORywJMzYpCS8qIEZpbGUgbmFtZSB0b28gTE9OR19QVFIgKi8KK1hFTl9F
UlJOTyhFTk9MQ0ssCTM3KQkvKiBObyByZWNvcmQgbG9ja3MgYXZhaWxhYmxlICovCitYRU5fRVJS
Tk8oRU5PVEVNUFRZLAkzOSkJLyogRGlyZWN0b3J5IG5vdCBlbXB0eSAqLworWEVOX0VSUk5PKEVO
T1NZUywJMzgpCS8qIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCAqLworWEVOX0VSUk5PKEVOT0RB
VEEsCTYxKQkvKiBObyBkYXRhIGF2YWlsYWJsZSAqLworWEVOX0VSUk5PKEVUSU1FLAk2MikJLyog
VGltZXIgZXhwaXJlZCAqLworWEVOX0VSUk5PKEVCQURNU0csCTc0KQkvKiBOb3QgYSBkYXRhIG1l
c3NhZ2UgKi8KK1hFTl9FUlJOTyhFT1ZFUkZMT1csCTc1KQkvKiBWYWx1ZSB0b28gbGFyZ2UgZm9y
IGRlZmluZWQgZGF0YSB0eXBlICovCitYRU5fRVJSTk8oRUlMU0VRLAk4NCkJLyogSWxsZWdhbCBi
eXRlIHNlcXVlbmNlICovCisjaWZkZWYgX19YRU5fXyAvKiBJbnRlcm5hbCBvbmx5LCBzaG91bGQg
bmV2ZXIgYmUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovCitYRU5fRVJSTk8oRVJFU1RBUlQsCTg1
KQkvKiBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCBzaG91bGQgYmUgcmVzdGFydGVkICovCisjZW5k
aWYKK1hFTl9FUlJOTyhFTk9UU09DSywJODgpCS8qIFNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNv
Y2tldCAqLworWEVOX0VSUk5PKEVPUE5PVFNVUFAsCTk1KQkvKiBPcGVyYXRpb24gbm90IHN1cHBv
cnRlZCBvbiB0cmFuc3BvcnQgZW5kcG9pbnQgKi8KK1hFTl9FUlJOTyhFQUREUklOVVNFLAk5OCkJ
LyogQWRkcmVzcyBhbHJlYWR5IGluIHVzZSAqLworWEVOX0VSUk5PKEVBRERSTk9UQVZBSUwsIDk5
KQkvKiBDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzICovCitYRU5fRVJSTk8oRU5PQlVG
UywJMTA1KQkvKiBObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlICovCitYRU5fRVJSTk8oRUlTQ09O
TiwJMTA2KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgKi8KK1hF
Tl9FUlJOTyhFTk9UQ09OTiwJMTA3KQkvKiBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5l
Y3RlZCAqLworWEVOX0VSUk5PKEVUSU1FRE9VVCwJMTEwKQkvKiBDb25uZWN0aW9uIHRpbWVkIG91
dCAqLworCisjdW5kZWYgWEVOX0VSUk5PCisjZW5kaWYgLyogWEVOX0VSUk5PICovCisvKiBgIH0g
Ki8KKworLyogQ2xlYW4gdXAgZnJvbSBhIGRlZmF1bHQgaW5jbHVkZS4gIENsb3NlIHRoZSBlbnVt
IChmb3IgQykuICovCisjaWZkZWYgWEVOX0VSUk5PX0RFRkFVTFRfSU5DTFVERQorI3VuZGVmIFhF
Tl9FUlJOT19ERUZBVUxUX0lOQ0xVREUKKyNpZm5kZWYgX19BU1NFTUJMWV9fCit9OworI2VuZGlm
CisKKyNlbmRpZiAvKiBYRU5fRVJSTk9fREVGQVVMVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUuaCBiL2luY2x1ZGUveGVuL3B1YmxpYy9ncmFu
dF90YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI2OGZmZGQKLS0t
IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRfdGFibGUuaApAQCAtMCww
ICsxLDY4NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogZ3JhbnRfdGFibGUuaAorICoK
KyAqIEludGVyZmFjZSBmb3IgZ3JhbnRpbmcgZm9yZWlnbiBhY2Nlc3MgdG8gcGFnZSBmcmFtZXMs
IGFuZCByZWNlaXZpbmcKKyAqIHBhZ2Utb3duZXJzaGlwIHRyYW5zZmVycy4KKyAqCisgKiBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
CisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg
KgorICogQ29weXJpZ2h0IChjKSAyMDA0LCBLIEEgRnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfR1JBTlRfVEFCTEVfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19HUkFOVF9UQUJM
RV9IX18KKworI2luY2x1ZGUgInhlbi5oIgorCisvKgorICogYGluY29udGVudHMgMTUwIGdudHRh
YiBHcmFudCBUYWJsZXMKKyAqCisgKiBYZW4ncyBncmFudCB0YWJsZXMgcHJvdmlkZSBhIGdlbmVy
aWMgbWVjaGFuaXNtIHRvIG1lbW9yeSBzaGFyaW5nCisgKiBiZXR3ZWVuIGRvbWFpbnMuIFRoaXMg
c2hhcmVkIG1lbW9yeSBpbnRlcmZhY2UgdW5kZXJwaW5zIHRoZSBzcGxpdAorICogZGV2aWNlIGRy
aXZlcnMgZm9yIGJsb2NrIGFuZCBuZXR3b3JrIElPLgorICoKKyAqIEVhY2ggZG9tYWluIGhhcyBp
dHMgb3duIGdyYW50IHRhYmxlLiBUaGlzIGlzIGEgZGF0YSBzdHJ1Y3R1cmUgdGhhdAorICogaXMg
c2hhcmVkIHdpdGggWGVuOyBpdCBhbGxvd3MgdGhlIGRvbWFpbiB0byB0ZWxsIFhlbiB3aGF0IGtp
bmQgb2YKKyAqIHBlcm1pc3Npb25zIG90aGVyIGRvbWFpbnMgaGF2ZSBvbiBpdHMgcGFnZXMuIEVu
dHJpZXMgaW4gdGhlIGdyYW50CisgKiB0YWJsZSBhcmUgaWRlbnRpZmllZCBieSBncmFudCByZWZl
cmVuY2VzLiBBIGdyYW50IHJlZmVyZW5jZSBpcyBhbgorICogaW50ZWdlciwgd2hpY2ggaW5kZXhl
cyBpbnRvIHRoZSBncmFudCB0YWJsZS4gSXQgYWN0cyBhcyBhCisgKiBjYXBhYmlsaXR5IHdoaWNo
IHRoZSBncmFudGVlIGNhbiB1c2UgdG8gcGVyZm9ybSBvcGVyYXRpb25zIG9uIHRoZQorICogZ3Jh
bnRlcidzIG1lbW9yeS4KKyAqCisgKiBUaGlzIGNhcGFiaWxpdHktYmFzZWQgc3lzdGVtIGFsbG93
cyBzaGFyZWQtbWVtb3J5IGNvbW11bmljYXRpb25zCisgKiBiZXR3ZWVuIHVucHJpdmlsZWdlZCBk
b21haW5zLiBBIGdyYW50IHJlZmVyZW5jZSBhbHNvIGVuY2Fwc3VsYXRlcworICogdGhlIGRldGFp
bHMgb2YgYSBzaGFyZWQgcGFnZSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGEgZG9tYWluIHRvCisg
KiBrbm93IHRoZSByZWFsIG1hY2hpbmUgYWRkcmVzcyBvZiBhIHBhZ2UgaXQgaXMgc2hhcmluZy4g
VGhpcyBtYWtlcworICogaXQgcG9zc2libGUgdG8gc2hhcmUgbWVtb3J5IGNvcnJlY3RseSB3aXRo
IGRvbWFpbnMgcnVubmluZyBpbgorICogZnVsbHkgdmlydHVhbGlzZWQgbWVtb3J5LgorICovCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUgUkVQ
UkVTRU5UQVRJT04KKyAqLworCisvKiBTb21lIHJvdWdoIGd1aWRlbGluZXMgb24gYWNjZXNzaW5n
IGFuZCB1cGRhdGluZyBncmFudC10YWJsZSBlbnRyaWVzCisgKiBpbiBhIGNvbmN1cnJlbmN5LXNh
ZmUgbWFubmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgTGludXggY29udGFpbnMgYQorICogcmVm
ZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBndWVzdCBPU2VzIChkcml2ZXJzL3hlbi9ncmFudF90
YWJsZS5jLCBzZWUKKyAqIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0
L3RvcnZhbGRzL2xpbnV4LmdpdDthPWJsb2I7Zj1kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jO2hi
PUhFQUQKKyAqCisgKiBOQi4gV01CIGlzIGEgbm8tb3Agb24gY3VycmVudC1nZW5lcmF0aW9uIHg4
NiBwcm9jZXNzb3JzLiBIb3dldmVyLCBhCisgKiAgICAgY29tcGlsZXIgYmFycmllciB3aWxsIHN0
aWxsIGJlIHJlcXVpcmVkLgorICoKKyAqIEludHJvZHVjaW5nIGEgdmFsaWQgZW50cnkgaW50byB0
aGUgZ3JhbnQgdGFibGU6CisgKiAgMS4gV3JpdGUgZW50LT5kb21pZC4KKyAqICAyLiBXcml0ZSBl
bnQtPmZyYW1lOgorICogICAgICBHVEZfcGVybWl0X2FjY2VzczogICBGcmFtZSB0byB3aGljaCBh
Y2Nlc3MgaXMgcGVybWl0dGVkLgorICogICAgICBHVEZfYWNjZXB0X3RyYW5zZmVyOiBQc2V1ZG8t
cGh5cyBmcmFtZSBzbG90IGJlaW5nIGZpbGxlZCBieSBuZXcKKyAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUsIG9yIHplcm8gaWYgbm9uZS4KKyAqICAzLiBXcml0ZSBtZW1vcnkgYmFy
cmllciAoV01CKS4KKyAqICA0LiBXcml0ZSBlbnQtPmZsYWdzLCBpbmMuIHZhbGlkIHR5cGUuCisg
KgorICogSW52YWxpZGF0aW5nIGFuIHVudXNlZCBHVEZfcGVybWl0X2FjY2VzcyBlbnRyeToKKyAq
ICAxLiBmbGFncyA9IGVudC0+ZmxhZ3MuCisgKiAgMi4gT2JzZXJ2ZSB0aGF0ICEoZmxhZ3MgJiAo
R1RGX3JlYWRpbmd8R1RGX3dyaXRpbmcpKS4KKyAqICAzLiBDaGVjayByZXN1bHQgb2YgU01QLXNh
ZmUgQ01QWENIRygmZW50LT5mbGFncywgZmxhZ3MsIDApLgorICogIE5CLiBObyBuZWVkIGZvciBX
TUIgYXMgcmV1c2Ugb2YgZW50cnkgaXMgY29udHJvbC1kZXBlbmRlbnQgb24gc3VjY2VzcyBvZgor
ICogICAgICBzdGVwIDMsIGFuZCBhbGwgYXJjaGl0ZWN0dXJlcyBndWFyYW50ZWUgb3JkZXJpbmcg
b2YgY3RybC1kZXAgd3JpdGVzLgorICoKKyAqIEludmFsaWRhdGluZyBhbiBpbi11c2UgR1RGX3Bl
cm1pdF9hY2Nlc3MgZW50cnk6CisgKiAgVGhpcyBjYW5ub3QgYmUgZG9uZSBkaXJlY3RseS4gUmVx
dWVzdCBhc3Npc3RhbmNlIGZyb20gdGhlIGRvbWFpbiBjb250cm9sbGVyCisgKiAgd2hpY2ggY2Fu
IHNldCBhIHRpbWVvdXQgb24gdGhlIHVzZSBvZiBhIGdyYW50IGVudHJ5IGFuZCB0YWtlIG5lY2Vz
c2FyeQorICogIGFjdGlvbi4gKE5CLiBUaGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQhKS4KKyAq
CisgKiBJbnZhbGlkYXRpbmcgYW4gdW51c2VkIEdURl9hY2NlcHRfdHJhbnNmZXIgZW50cnk6Cisg
KiAgMS4gZmxhZ3MgPSBlbnQtPmZsYWdzLgorICogIDIuIE9ic2VydmUgdGhhdCAhKGZsYWdzICYg
R1RGX3RyYW5zZmVyX2NvbW1pdHRlZCkuIFsqXQorICogIDMuIENoZWNrIHJlc3VsdCBvZiBTTVAt
c2FmZSBDTVBYQ0hHKCZlbnQtPmZsYWdzLCBmbGFncywgMCkuCisgKiAgTkIuIE5vIG5lZWQgZm9y
IFdNQiBhcyByZXVzZSBvZiBlbnRyeSBpcyBjb250cm9sLWRlcGVuZGVudCBvbiBzdWNjZXNzIG9m
CisgKiAgICAgIHN0ZXAgMywgYW5kIGFsbCBhcmNoaXRlY3R1cmVzIGd1YXJhbnRlZSBvcmRlcmlu
ZyBvZiBjdHJsLWRlcCB3cml0ZXMuCisgKiAgWypdIElmIEdURl90cmFuc2Zlcl9jb21taXR0ZWQg
aXMgc2V0IHRoZW4gdGhlIGdyYW50IGVudHJ5IGlzICdjb21taXR0ZWQnLgorICogICAgICBUaGUg
Z3Vlc3QgbXVzdCAvbm90LyBtb2RpZnkgdGhlIGdyYW50IGVudHJ5IHVudGlsIHRoZSBhZGRyZXNz
IG9mIHRoZQorICogICAgICB0cmFuc2ZlcnJlZCBmcmFtZSBpcyB3cml0dGVuLiBJdCBpcyBzYWZl
IGZvciB0aGUgZ3Vlc3QgdG8gc3BpbiB3YWl0aW5nCisgKiAgICAgIGZvciB0aGlzIHRvIG9jY3Vy
IChkZXRlY3QgYnkgb2JzZXJ2aW5nIEdURl90cmFuc2Zlcl9jb21wbGV0ZWQgaW4KKyAqICAgICAg
ZW50LT5mbGFncykuCisgKgorICogSW52YWxpZGF0aW5nIGEgY29tbWl0dGVkIEdURl9hY2NlcHRf
dHJhbnNmZXIgZW50cnk6CisgKiAgMS4gV2FpdCBmb3IgKGVudC0+ZmxhZ3MgJiBHVEZfdHJhbnNm
ZXJfY29tcGxldGVkKS4KKyAqCisgKiBDaGFuZ2luZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20g
d3JpdGFibGUgdG8gcmVhZC1vbmx5OgorICogIFVzZSBTTVAtc2FmZSBDTVBYQ0hHIHRvIHNldCBH
VEZfcmVhZG9ubHksIHdoaWxlIGNoZWNraW5nICFHVEZfd3JpdGluZy4KKyAqCisgKiBDaGFuZ2lu
ZyBhIEdURl9wZXJtaXRfYWNjZXNzIGZyb20gcmVhZC1vbmx5IHRvIHdyaXRhYmxlOgorICogIFVz
ZSBTTVAtc2FmZSBiaXQtc2V0dGluZyBpbnN0cnVjdGlvbi4KKyAqLworCisvKgorICogUmVmZXJl
bmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUu
CisgKi8KK3R5cGVkZWYgdWludDMyX3QgZ3JhbnRfcmVmX3Q7CisKKy8qCisgKiBBIGdyYW50IHRh
YmxlIGNvbXByaXNlcyBhIHBhY2tlZCBhcnJheSBvZiBncmFudCBlbnRyaWVzIGluIG9uZSBvciBt
b3JlCisgKiBwYWdlIGZyYW1lcyBzaGFyZWQgYmV0d2VlbiBYZW4gYW5kIGEgZ3Vlc3QuCisgKiBb
WEVOXTogVGhpcyBmaWVsZCBpcyB3cml0dGVuIGJ5IFhlbiBhbmQgcmVhZCBieSB0aGUgc2hhcmlu
ZyBndWVzdC4KKyAqIFtHU1RdOiBUaGlzIGZpZWxkIGlzIHdyaXR0ZW4gYnkgdGhlIGd1ZXN0IGFu
ZCByZWFkIGJ5IFhlbi4KKyAqLworCisvKgorICogVmVyc2lvbiAxIG9mIHRoZSBncmFudCB0YWJs
ZSBlbnRyeSBzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5lZCBwdXJlbHkKKyAqIGZvciBiYWNrd2FyZHMg
Y29tcGF0aWJpbGl0eS4gIE5ldyBndWVzdHMgc2hvdWxkIHVzZSB2ZXJzaW9uIDIuCisgKi8KKyNp
ZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwYQorI2RlZmluZSBncmFudF9l
bnRyeV92MSBncmFudF9lbnRyeQorI2RlZmluZSBncmFudF9lbnRyeV92MV90IGdyYW50X2VudHJ5
X3QKKyNlbmRpZgorc3RydWN0IGdyYW50X2VudHJ5X3YxIHsKKyAgICAvKiBHVEZfeHh4OiB2YXJp
b3VzIHR5cGUgYW5kIGZsYWcgaW5mb3JtYXRpb24uICBbWEVOLEdTVF0gKi8KKyAgICB1aW50MTZf
dCBmbGFnczsKKyAgICAvKiBUaGUgZG9tYWluIGJlaW5nIGdyYW50ZWQgZm9yZWlnbiBwcml2aWxl
Z2VzLiBbR1NUXSAqLworICAgIGRvbWlkX3QgIGRvbWlkOworICAgIC8qCisgICAgICogR1RGX3Bl
cm1pdF9hY2Nlc3M6IEdGTiB0aGF0IEBkb21pZCBpcyBhbGxvd2VkIHRvIG1hcCBhbmQgYWNjZXNz
LiBbR1NUXQorICAgICAqIEdURl9hY2NlcHRfdHJhbnNmZXI6IEdGTiB0aGF0IEBkb21pZCBpcyBh
bGxvd2VkIHRvIHRyYW5zZmVyIGludG8uIFtHU1RdCisgICAgICogR1RGX3RyYW5zZmVyX2NvbXBs
ZXRlZDogTUZOIHdob3NlIG93bmVyc2hpcCB0cmFuc2ZlcnJlZCBieSBAZG9taWQKKyAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAobm9uLXRyYW5zbGF0ZWQgZ3Vlc3RzIG9ubHkpLiBbWEVO
XQorICAgICAqLworICAgIHVpbnQzMl90IGZyYW1lOworfTsKK3R5cGVkZWYgc3RydWN0IGdyYW50
X2VudHJ5X3YxIGdyYW50X2VudHJ5X3YxX3Q7CisKKy8qIFRoZSBmaXJzdCBmZXcgZ3JhbnQgdGFi
bGUgZW50cmllcyB3aWxsIGJlIHByZXNlcnZlZCBhY3Jvc3MgZ3JhbnQgdGFibGUKKyAqIHZlcnNp
b24gY2hhbmdlcyBhbmQgbWF5IGJlIHByZS1wb3B1bGF0ZWQgYXQgZG9tYWluIGNyZWF0aW9uIGJ5
IHRvb2xzLgorICovCisjZGVmaW5lIEdOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTICAgICA4Cisj
ZGVmaW5lIEdOVFRBQl9SRVNFUlZFRF9DT05TT0xFICAgICAgICAwCisjZGVmaW5lIEdOVFRBQl9S
RVNFUlZFRF9YRU5TVE9SRSAgICAgICAxCisKKy8qCisgKiBUeXBlIG9mIGdyYW50IGVudHJ5Lgor
ICogIEdURl9pbnZhbGlkOiBUaGlzIGdyYW50IGVudHJ5IGdyYW50cyBubyBwcml2aWxlZ2VzLgor
ICogIEdURl9wZXJtaXRfYWNjZXNzOiBBbGxvdyBAZG9taWQgdG8gbWFwL2FjY2VzcyBAZnJhbWUu
CisgKiAgR1RGX2FjY2VwdF90cmFuc2ZlcjogQWxsb3cgQGRvbWlkIHRvIHRyYW5zZmVyIG93bmVy
c2hpcCBvZiBvbmUgcGFnZSBmcmFtZQorICogICAgICAgICAgICAgICAgICAgICAgIHRvIHRoaXMg
Z3Vlc3QuIFhlbiB3cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIEBmcmFtZS4KKyAqICBHVEZfdHJh
bnNpdGl2ZTogQWxsb3cgQGRvbWlkIHRvIHRyYW5zaXRpdmVseSBhY2Nlc3MgYSBzdWJyYW5nZSBv
ZgorICogICAgICAgICAgICAgICAgICBAdHJhbnNfZ3JhbnQgaW4gQHRyYW5zX2RvbWlkLiAgTm8g
bWFwcGluZ3MgYXJlIGFsbG93ZWQuCisgKi8KKyNkZWZpbmUgR1RGX2ludmFsaWQgICAgICAgICAo
MFU8PDApCisjZGVmaW5lIEdURl9wZXJtaXRfYWNjZXNzICAgKDFVPDwwKQorI2RlZmluZSBHVEZf
YWNjZXB0X3RyYW5zZmVyICgyVTw8MCkKKyNkZWZpbmUgR1RGX3RyYW5zaXRpdmUgICAgICAoM1U8
PDApCisjZGVmaW5lIEdURl90eXBlX21hc2sgICAgICAgKDNVPDwwKQorCisvKgorICogU3ViZmxh
Z3MgZm9yIEdURl9wZXJtaXRfYWNjZXNzLgorICogIEdURl9yZWFkb25seTogUmVzdHJpY3QgQGRv
bWlkIHRvIHJlYWQtb25seSBtYXBwaW5ncyBhbmQgYWNjZXNzZXMuIFtHU1RdCisgKiAgR1RGX3Jl
YWRpbmc6IEdyYW50IGVudHJ5IGlzIGN1cnJlbnRseSBtYXBwZWQgZm9yIHJlYWRpbmcgYnkgQGRv
bWlkLiBbWEVOXQorICogIEdURl93cml0aW5nOiBHcmFudCBlbnRyeSBpcyBjdXJyZW50bHkgbWFw
cGVkIGZvciB3cml0aW5nIGJ5IEBkb21pZC4gW1hFTl0KKyAqICBHVEZfUEFULCBHVEZfUFdULCBH
VEZfUENEOiAoeDg2KSBjYWNoZSBhdHRyaWJ1dGUgZmxhZ3MgZm9yIHRoZSBncmFudCBbR1NUXQor
ICogIEdURl9zdWJfcGFnZTogR3JhbnQgYWNjZXNzIHRvIG9ubHkgYSBzdWJyYW5nZSBvZiB0aGUg
cGFnZS4gIEBkb21pZAorICogICAgICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGFsbG93ZWQgdG8g
Y29weSBmcm9tIHRoZSBncmFudCwgYW5kIG5vdAorICogICAgICAgICAgICAgICAgbWFwIGl0LiBb
R1NUXQorICovCisjZGVmaW5lIF9HVEZfcmVhZG9ubHkgICAgICAgKDIpCisjZGVmaW5lIEdURl9y
ZWFkb25seSAgICAgICAgKDFVPDxfR1RGX3JlYWRvbmx5KQorI2RlZmluZSBfR1RGX3JlYWRpbmcg
ICAgICAgICgzKQorI2RlZmluZSBHVEZfcmVhZGluZyAgICAgICAgICgxVTw8X0dURl9yZWFkaW5n
KQorI2RlZmluZSBfR1RGX3dyaXRpbmcgICAgICAgICg0KQorI2RlZmluZSBHVEZfd3JpdGluZyAg
ICAgICAgICgxVTw8X0dURl93cml0aW5nKQorI2RlZmluZSBfR1RGX1BXVCAgICAgICAgICAgICg1
KQorI2RlZmluZSBHVEZfUFdUICAgICAgICAgICAgICgxVTw8X0dURl9QV1QpCisjZGVmaW5lIF9H
VEZfUENEICAgICAgICAgICAgKDYpCisjZGVmaW5lIEdURl9QQ0QgICAgICAgICAgICAgKDFVPDxf
R1RGX1BDRCkKKyNkZWZpbmUgX0dURl9QQVQgICAgICAgICAgICAoNykKKyNkZWZpbmUgR1RGX1BB
VCAgICAgICAgICAgICAoMVU8PF9HVEZfUEFUKQorI2RlZmluZSBfR1RGX3N1Yl9wYWdlICAgICAg
ICg4KQorI2RlZmluZSBHVEZfc3ViX3BhZ2UgICAgICAgICgxVTw8X0dURl9zdWJfcGFnZSkKKwor
LyoKKyAqIFN1YmZsYWdzIGZvciBHVEZfYWNjZXB0X3RyYW5zZmVyOgorICogIEdURl90cmFuc2Zl
cl9jb21taXR0ZWQ6IFhlbiBzZXRzIHRoaXMgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIGNv
bW1pdHRlZAorICogICAgICB0byB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwIG9mIGEgcGFnZSBmcmFt
ZS4gV2hlbiBhIGd1ZXN0IHNlZXMgdGhpcyBmbGFnCisgKiAgICAgIGl0IG11c3QgL25vdC8gbW9k
aWZ5IHRoZSBncmFudCBlbnRyeSB1bnRpbCBHVEZfdHJhbnNmZXJfY29tcGxldGVkIGlzCisgKiAg
ICAgIHNldCBieSBYZW4uCisgKiAgR1RGX3RyYW5zZmVyX2NvbXBsZXRlZDogSXQgaXMgc2FmZSBm
b3IgdGhlIGd1ZXN0IHRvIHNwaW4td2FpdCBvbiB0aGlzIGZsYWcKKyAqICAgICAgYWZ0ZXIgcmVh
ZGluZyBHVEZfdHJhbnNmZXJfY29tbWl0dGVkLiBYZW4gd2lsbCBhbHdheXMgd3JpdGUgdGhlIGZy
YW1lCisgKiAgICAgIGFkZHJlc3MsIGZvbGxvd2VkIGJ5IE9SaW5nIHRoaXMgZmxhZywgaW4gYSB0
aW1lbHkgbWFubmVyLgorICovCisjZGVmaW5lIF9HVEZfdHJhbnNmZXJfY29tbWl0dGVkICgyKQor
I2RlZmluZSBHVEZfdHJhbnNmZXJfY29tbWl0dGVkICAoMVU8PF9HVEZfdHJhbnNmZXJfY29tbWl0
dGVkKQorI2RlZmluZSBfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCAoMykKKyNkZWZpbmUgR1RGX3Ry
YW5zZmVyX2NvbXBsZXRlZCAgKDFVPDxfR1RGX3RyYW5zZmVyX2NvbXBsZXRlZCkKKworLyoKKyAq
IFZlcnNpb24gMiBncmFudCB0YWJsZSBlbnRyaWVzLiAgVGhlc2UgZnVsZmlsIHRoZSBzYW1lIHJv
bGUgYXMKKyAqIHZlcnNpb24gMSBlbnRyaWVzLCBidXQgY2FuIHJlcHJlc2VudCBtb3JlIGNvbXBs
aWNhdGVkIG9wZXJhdGlvbnMuCisgKiBBbnkgZ2l2ZW4gZG9tYWluIHdpbGwgaGF2ZSBlaXRoZXIg
YSB2ZXJzaW9uIDEgb3IgYSB2ZXJzaW9uIDIgdGFibGUsCisgKiBhbmQgZXZlcnkgZW50cnkgaW4g
dGhlIHRhYmxlIHdpbGwgYmUgdGhlIHNhbWUgdmVyc2lvbi4KKyAqCisgKiBUaGUgaW50ZXJmYWNl
IGJ5IHdoaWNoIGRvbWFpbnMgdXNlIGdyYW50IHJlZmVyZW5jZXMgZG9lcyBub3QgZGVwZW5kCisg
KiBvbiB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiBpbiB1c2UgYnkgdGhlIG90aGVyIGRvbWFpbi4K
KyAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDAzMDIwYQorLyoKKyAq
IFZlcnNpb24gMSBhbmQgdmVyc2lvbiAyIGdyYW50IGVudHJpZXMgc2hhcmUgYSBjb21tb24gcHJl
Zml4LiAgVGhlCisgKiBmaWVsZHMgb2YgdGhlIHByZWZpeCBhcmUgZG9jdW1lbnRlZCBhcyBwYXJ0
IG9mIHN0cnVjdAorICogZ3JhbnRfZW50cnlfdjEuCisgKi8KK3N0cnVjdCBncmFudF9lbnRyeV9o
ZWFkZXIgeworICAgIHVpbnQxNl90IGZsYWdzOworICAgIGRvbWlkX3QgIGRvbWlkOworfTsKK3R5
cGVkZWYgc3RydWN0IGdyYW50X2VudHJ5X2hlYWRlciBncmFudF9lbnRyeV9oZWFkZXJfdDsKKwor
LyoKKyAqIFZlcnNpb24gMiBvZiB0aGUgZ3JhbnQgZW50cnkgc3RydWN0dXJlLgorICovCit1bmlv
biBncmFudF9lbnRyeV92MiB7CisgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOworCisgICAg
LyoKKyAgICAgKiBUaGlzIG1lbWJlciBpcyB1c2VkIGZvciBWMS1zdHlsZSBmdWxsIHBhZ2UgZ3Jh
bnRzLCB3aGVyZSBlaXRoZXI6CisgICAgICoKKyAgICAgKiAtLSBoZHIudHlwZSBpcyBHVEZfYWNj
ZXB0X3RyYW5zZmVyLCBvcgorICAgICAqIC0tIGhkci50eXBlIGlzIEdURl9wZXJtaXRfYWNjZXNz
IGFuZCBHVEZfc3ViX3BhZ2UgaXMgbm90IHNldC4KKyAgICAgKgorICAgICAqIEluIHRoYXQgY2Fz
ZSwgdGhlIGZyYW1lIGZpZWxkIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlCisgICAgICog
ZmllbGQgb2YgdGhlIHNhbWUgbmFtZSBpbiB0aGUgVjEgZW50cnkgc3RydWN0dXJlLgorICAgICAq
LworICAgIHN0cnVjdCB7CisgICAgICAgIGdyYW50X2VudHJ5X2hlYWRlcl90IGhkcjsKKyAgICAg
ICAgdWludDMyX3QgcGFkMDsKKyAgICAgICAgdWludDY0X3QgZnJhbWU7CisgICAgfSBmdWxsX3Bh
Z2U7CisKKyAgICAvKgorICAgICAqIElmIHRoZSBncmFudCB0eXBlIGlzIEdURl9ncmFudF9hY2Nl
c3MgYW5kIEdURl9zdWJfcGFnZSBpcyBzZXQsCisgICAgICogQGRvbWlkIGlzIGFsbG93ZWQgdG8g
YWNjZXNzIGJ5dGVzIFtAcGFnZV9vZmYsQHBhZ2Vfb2ZmK0BsZW5ndGgpCisgICAgICogaW4gZnJh
bWUgQGZyYW1lLgorICAgICAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGdyYW50X2VudHJ5X2hl
YWRlcl90IGhkcjsKKyAgICAgICAgdWludDE2X3QgcGFnZV9vZmY7CisgICAgICAgIHVpbnQxNl90
IGxlbmd0aDsKKyAgICAgICAgdWludDY0X3QgZnJhbWU7CisgICAgfSBzdWJfcGFnZTsKKworICAg
IC8qCisgICAgICogSWYgdGhlIGdyYW50IGlzIEdURl90cmFuc2l0aXZlLCBAZG9taWQgaXMgYWxs
b3dlZCB0byB1c2UgdGhlCisgICAgICogZ3JhbnQgQGdyZWYgaW4gZG9tYWluIEB0cmFuc19kb21p
ZCwgYXMgaWYgaXQgd2FzIHRoZSBsb2NhbAorICAgICAqIGRvbWFpbi4gIE9idmlvdXNseSwgdGhl
IHRyYW5zaXRpdmUgYWNjZXNzIG11c3QgYmUgY29tcGF0aWJsZQorICAgICAqIHdpdGggdGhlIG9y
aWdpbmFsIGdyYW50LgorICAgICAqCisgICAgICogVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBYZW4g
ZG9lcyBub3QgYWxsb3cgdHJhbnNpdGl2ZSBncmFudHMKKyAgICAgKiB0byBiZSBtYXBwZWQuCisg
ICAgICovCisgICAgc3RydWN0IHsKKyAgICAgICAgZ3JhbnRfZW50cnlfaGVhZGVyX3QgaGRyOwor
ICAgICAgICBkb21pZF90IHRyYW5zX2RvbWlkOworICAgICAgICB1aW50MTZfdCBwYWQwOworICAg
ICAgICBncmFudF9yZWZfdCBncmVmOworICAgIH0gdHJhbnNpdGl2ZTsKKworICAgIHVpbnQzMl90
IF9fc3BhY2VyWzRdOyAvKiBQYWQgdG8gYSBwb3dlciBvZiB0d28gKi8KK307Cit0eXBlZGVmIHVu
aW9uIGdyYW50X2VudHJ5X3YyIGdyYW50X2VudHJ5X3YyX3Q7CisKK3R5cGVkZWYgdWludDE2X3Qg
Z3JhbnRfc3RhdHVzX3Q7CisKKyNlbmRpZiAvKiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fICov
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR1JBTlQgVEFCTEUg
UVVFUklFUyBBTkQgVVNFUworICovCisKKy8qIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQ
RVJWSVNPUl9ncmFudF90YWJsZV9vcChlbnVtIGdyYW50X3RhYmxlX29wIGNtZCwKKyAqIGAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdzLAorICogYCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCkKKyAqIGAKKyAqCisgKiBAYXJncyBwb2ludHMg
dG8gYW4gYXJyYXkgb2YgYSBwZXItY29tbWFuZCBkYXRhIHN0cnVjdHVyZS4gVGhlIGFycmF5Cisg
KiBoYXMgQGNvdW50IG1lbWJlcnMKKyAqLworCisvKiBgIGVudW0gZ3JhbnRfdGFibGVfb3AgeyAv
LyBHTlRUQUJPUF8qID0+IHN0cnVjdCBnbnR0YWJfKiAqLworI2RlZmluZSBHTlRUQUJPUF9tYXBf
Z3JhbnRfcmVmICAgICAgICAwCisjZGVmaW5lIEdOVFRBQk9QX3VubWFwX2dyYW50X3JlZiAgICAg
IDEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0dXBfdGFibGUgICAgICAgICAgMgorI2RlZmluZSBHTlRU
QUJPUF9kdW1wX3RhYmxlICAgICAgICAgICAzCisjZGVmaW5lIEdOVFRBQk9QX3RyYW5zZmVyICAg
ICAgICAgICAgIDQKKyNkZWZpbmUgR05UVEFCT1BfY29weSAgICAgICAgICAgICAgICAgNQorI2Rl
ZmluZSBHTlRUQUJPUF9xdWVyeV9zaXplICAgICAgICAgICA2CisjZGVmaW5lIEdOVFRBQk9QX3Vu
bWFwX2FuZF9yZXBsYWNlICAgIDcKKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4
MDAwMzAyMGEKKyNkZWZpbmUgR05UVEFCT1Bfc2V0X3ZlcnNpb24gICAgICAgICAgOAorI2RlZmlu
ZSBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lcyAgICA5CisjZGVmaW5lIEdOVFRBQk9QX2dldF92
ZXJzaW9uICAgICAgICAgIDEwCisjZGVmaW5lIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmCSAgICAg
IDExCisjZGVmaW5lIEdOVFRBQk9QX2NhY2hlX2ZsdXNoCSAgICAgIDEyCisjZW5kaWYgLyogX19Y
RU5fSU5URVJGQUNFX1ZFUlNJT05fXyAqLworLyogYCB9ICovCisKKy8qCisgKiBIYW5kbGUgdG8g
dHJhY2sgYSBtYXBwaW5nIGNyZWF0ZWQgdmlhIGEgZ3JhbnQgcmVmZXJlbmNlLgorICovCit0eXBl
ZGVmIHVpbnQzMl90IGdyYW50X2hhbmRsZV90OworCisvKgorICogR05UVEFCT1BfbWFwX2dyYW50
X3JlZjogTWFwIHRoZSBncmFudCBlbnRyeSAoPGRvbT4sPHJlZj4pIGZvciBhY2Nlc3MKKyAqIGJ5
IGRldmljZXMgYW5kL29yIGhvc3QgQ1BVcy4gSWYgc3VjY2Vzc2Z1bCwgPGhhbmRsZT4gaXMgYSB0
cmFja2luZyBudW1iZXIKKyAqIHRoYXQgbXVzdCBiZSBwcmVzZW50ZWQgbGF0ZXIgdG8gZGVzdHJv
eSB0aGUgbWFwcGluZyhzKS4gT24gZXJyb3IsIDxzdGF0dXM+CisgKiBpcyBhIG5lZ2F0aXZlIHN0
YXR1cyBjb2RlLgorICogTk9URVM6CisgKiAgMS4gSWYgR05UTUFQX2RldmljZV9tYXAgaXMgc3Bl
Y2lmaWVkIHRoZW4gPGRldl9idXNfYWRkcj4gaXMgdGhlIGFkZHJlc3MKKyAqICAgICB2aWEgd2hp
Y2ggSS9PIGRldmljZXMgbWF5IGFjY2VzcyB0aGUgZ3JhbnRlZCBmcmFtZS4KKyAqICAyLiBJZiBH
TlRNQVBfaG9zdF9tYXAgaXMgc3BlY2lmaWVkIHRoZW4gYSBtYXBwaW5nIHdpbGwgYmUgYWRkZWQg
YXQKKyAqICAgICBlaXRoZXIgYSBob3N0IHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgY3VycmVudCBh
ZGRyZXNzIHNwYWNlLCBvciBhdAorICogICAgIGEgUFRFIGF0IHRoZSBzcGVjaWZpZWQgbWFjaGlu
ZSBhZGRyZXNzLiAgVGhlIHR5cGUgb2YgbWFwcGluZyB0bworICogICAgIHBlcmZvcm0gaXMgc2Vs
ZWN0ZWQgdGhyb3VnaCB0aGUgR05UTUFQX2NvbnRhaW5zX3B0ZSBmbGFnLCBhbmQgdGhlCisgKiAg
ICAgYWRkcmVzcyBpcyBzcGVjaWZpZWQgaW4gPGhvc3RfYWRkcj4uCisgKiAgMy4gTWFwcGluZ3Mg
c2hvdWxkIG9ubHkgYmUgZGVzdHJveWVkIHZpYSBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYuIElm
IGEKKyAqICAgICBob3N0IG1hcHBpbmcgaXMgZGVzdHJveWVkIGJ5IG90aGVyIG1lYW5zIHRoZW4g
aXQgaXMgKk5PVCogZ3VhcmFudGVlZAorICogICAgIHRvIGJlIGFjY291bnRlZCB0byB0aGUgY29y
cmVjdCBncmFudCByZWZlcmVuY2UhCisgKi8KK3N0cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiB7
CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRfdCBob3N0X2FkZHI7CisgICAg
dWludDMyX3QgZmxhZ3M7ICAgICAgICAgICAgICAgLyogR05UTUFQXyogKi8KKyAgICBncmFudF9y
ZWZfdCByZWY7CisgICAgZG9taWRfdCAgZG9tOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLwor
ICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVz
ICovCisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAgIHVpbnQ2NF90IGRldl9idXNfYWRk
cjsKK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiBnbnR0YWJfbWFwX2dy
YW50X3JlZl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX21hcF9ncmFudF9yZWZf
dCk7CisKKy8qCisgKiBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWY6IERlc3Ryb3kgb25lIG9yIG1v
cmUgZ3JhbnQtcmVmZXJlbmNlIG1hcHBpbmdzCisgKiB0cmFja2VkIGJ5IDxoYW5kbGU+LiBJZiA8
aG9zdF9hZGRyPiBvciA8ZGV2X2J1c19hZGRyPiBpcyB6ZXJvLCB0aGF0CisgKiBmaWVsZCBpcyBp
Z25vcmVkLiBJZiBub24temVybywgdGhleSBtdXN0IHJlZmVyIHRvIGEgZGV2aWNlL2hvc3QgbWFw
cGluZworICogdGhhdCBpcyB0cmFja2VkIGJ5IDxoYW5kbGU+CisgKiBOT1RFUzoKKyAqICAxLiBU
aGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhlciBtYXBwaW5n
IGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCisgKiAgMy4gQWZ0ZXIgZXhlY3V0
aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8gc3RhbGUKKyAq
ICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3QgVExCcy4KKyAq
Lworc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgeworICAgIC8qIElOIHBhcmFtZXRlcnMu
ICovCisgICAgdWludDY0X3QgaG9zdF9hZGRyOworICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsK
KyAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisg
ICAgaW50MTZfdCAgc3RhdHVzOyAgICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMg
Ki8KK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIGdudHRhYl91bm1h
cF9ncmFudF9yZWZfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl91bm1hcF9ncmFu
dF9yZWZfdCk7CisKKy8qCisgKiBHTlRUQUJPUF9zZXR1cF90YWJsZTogU2V0IHVwIGEgZ3JhbnQg
dGFibGUgZm9yIDxkb20+IGNvbXByaXNpbmcgYXQgbGVhc3QKKyAqIDxucl9mcmFtZXM+IHBhZ2Vz
LiBUaGUgZnJhbWUgYWRkcmVzc2VzIGFyZSB3cml0dGVuIHRvIHRoZSA8ZnJhbWVfbGlzdD4uCisg
KiBPbmx5IDxucl9mcmFtZXM+IGFkZHJlc3NlcyBhcmUgd3JpdHRlbiwgZXZlbiBpZiB0aGUgdGFi
bGUgaXMgbGFyZ2VyLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBh
cyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21h
aW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqICAzLiBYZW4gbWF5IG5vdCBz
dXBwb3J0IG1vcmUgdGhhbiBhIHNpbmdsZSBncmFudC10YWJsZSBwYWdlIHBlciBkb21haW4uCisg
Ki8KK3N0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICov
CisgICAgZG9taWRfdCAgZG9tOworICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKKyAgICAvKiBPVVQg
cGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBl
bnVtIGdyYW50X3N0YXR1cyAqLworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAw
MDQwMzAwCisgICAgWEVOX0dVRVNUX0hBTkRMRSh1bG9uZykgZnJhbWVfbGlzdDsKKyNlbHNlCisg
ICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fcGZuX3QpIGZyYW1lX2xpc3Q7CisjZW5kaWYKK307Cit0
eXBlZGVmIHN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgZ250dGFiX3NldHVwX3RhYmxlX3Q7CitE
RUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfc2V0dXBfdGFibGVfdCk7CisKKy8qCisgKiBH
TlRUQUJPUF9kdW1wX3RhYmxlOiBEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JhbnQgdGFibGUg
dG8gdGhlCisgKiB4ZW4gY29uc29sZS4gRGVidWdnaW5nIHVzZSBvbmx5LgorICovCitzdHJ1Y3Qg
Z250dGFiX2R1bXBfdGFibGUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRf
dCBkb207CisgICAgLyogT1VUIHBhcmFtZXRlcnMuICovCisgICAgaW50MTZfdCBzdGF0dXM7ICAg
ICAgICAgICAgICAgLyogPT4gZW51bSBncmFudF9zdGF0dXMgKi8KK307Cit0eXBlZGVmIHN0cnVj
dCBnbnR0YWJfZHVtcF90YWJsZSBnbnR0YWJfZHVtcF90YWJsZV90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoZ250dGFiX2R1bXBfdGFibGVfdCk7CisKKy8qCisgKiBHTlRUQUJPUF90cmFuc2Zl
cl9ncmFudF9yZWY6IFRyYW5zZmVyIDxmcmFtZT4gdG8gYSBmb3JlaWduIGRvbWFpbi4gVGhlCisg
KiBmb3JlaWduIGRvbWFpbiBoYXMgcHJldmlvdXNseSByZWdpc3RlcmVkIGl0cyBpbnRlcmVzdCBp
biB0aGUgdHJhbnNmZXIgdmlhCisgKiA8ZG9taWQsIHJlZj4uCisgKgorICogTm90ZSB0aGF0LCBl
dmVuIGlmIHRoZSB0cmFuc2ZlciBmYWlscywgdGhlIHNwZWNpZmllZCBwYWdlIG5vIExPTkdfUFRS
ZXIgYmVsb25ncworICogdG8gdGhlIGNhbGxpbmcgZG9tYWluICp1bmxlc3MqIHRoZSBlcnJvciBp
cyBHTlRTVF9iYWRfcGFnZS4KKyAqLworc3RydWN0IGdudHRhYl90cmFuc2ZlciB7CisgICAgLyog
SU4gcGFyYW1ldGVycy4gKi8KKyAgICB4ZW5fcGZuX3QgICAgIG1mbjsKKyAgICBkb21pZF90ICAg
ICAgIGRvbWlkOworICAgIGdyYW50X3JlZl90ICAgcmVmOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
LiAqLworICAgIGludDE2X3QgICAgICAgc3RhdHVzOworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRh
Yl90cmFuc2ZlciBnbnR0YWJfdHJhbnNmZXJfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdu
dHRhYl90cmFuc2Zlcl90KTsKKworCisvKgorICogR05UVEFCT1BfY29weTogSHlwZXJ2aXNvciBi
YXNlZCBjb3B5CisgKiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBjYW4gYmUgZWl0aGVycyBNRk5z
IG9yLCBmb3IgZm9yZWlnbiBkb21haW5zLAorICogZ3JhbnQgcmVmZXJlbmNlcy4gdGhlIGZvcmVp
Z24gZG9tYWluIGhhcyB0byBncmFudCByZWFkL3dyaXRlIGFjY2VzcworICogaW4gaXRzIGdyYW50
IHRhYmxlLgorICoKKyAqIFRoZSBmbGFncyBzcGVjaWZ5IHdoYXQgdHlwZSBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9ucyBhcmUgKGVpdGhlciBNRk4KKyAqIG9yIGdyYW50IHJlZmVyZW5jZSkuCisgKgor
ICogTm90ZSB0aGF0IHRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBjb3B5IGRhdGEgYmV0d2VlbiB0
d28gZG9tYWlucworICogdmlhIGEgdGhpcmQgcGFydHkgaWYgdGhlIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gZG9tYWlucyBoYWQgcHJldmlvdXNseQorICogZ3JhbnQgYXBwcm9wcmlhdGUgYWNjZXNz
IHRvIHRoZWlyIHBhZ2VzIHRvIHRoZSB0aGlyZCBwYXJ0eS4KKyAqCisgKiBzb3VyY2Vfb2Zmc2V0
IHNwZWNpZmllcyBhbiBvZmZzZXQgaW4gdGhlIHNvdXJjZSBmcmFtZSwgZGVzdF9vZmZzZXQKKyAq
IHRoZSBvZmZzZXQgaW4gdGhlIHRhcmdldCBmcmFtZSBhbmQgIGxlbiBzcGVjaWZpZXMgdGhlIG51
bWJlciBvZgorICogYnl0ZXMgdG8gYmUgY29waWVkLgorICovCisKKyNkZWZpbmUgX0dOVENPUFlf
c291cmNlX2dyZWYgICAgICAoMCkKKyNkZWZpbmUgR05UQ09QWV9zb3VyY2VfZ3JlZiAgICAgICAo
MTw8X0dOVENPUFlfc291cmNlX2dyZWYpCisjZGVmaW5lIF9HTlRDT1BZX2Rlc3RfZ3JlZiAgICAg
ICAgKDEpCisjZGVmaW5lIEdOVENPUFlfZGVzdF9ncmVmICAgICAgICAgKDE8PF9HTlRDT1BZX2Rl
c3RfZ3JlZikKKworc3RydWN0IGdudHRhYl9jb3B5IHsKKyAgICAvKiBJTiBwYXJhbWV0ZXJzLiAq
LworICAgIHN0cnVjdCBnbnR0YWJfY29weV9wdHIgeworICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICBncmFudF9yZWZfdCByZWY7CisgICAgICAgICAgICB4ZW5fcGZuX3QgICBnbWZuOworICAg
ICAgICB9IHU7CisgICAgICAgIGRvbWlkX3QgIGRvbWlkOworICAgICAgICB1aW50MTZfdCBvZmZz
ZXQ7CisgICAgfSBzb3VyY2UsIGRlc3Q7CisgICAgdWludDE2X3QgICAgICBsZW47CisgICAgdWlu
dDE2X3QgICAgICBmbGFnczsgICAgICAgICAgLyogR05UQ09QWV8qICovCisgICAgLyogT1VUIHBh
cmFtZXRlcnMuICovCisgICAgaW50MTZfdCAgICAgICBzdGF0dXM7Cit9OwordHlwZWRlZiBzdHJ1
Y3QgZ250dGFiX2NvcHkgIGdudHRhYl9jb3B5X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShn
bnR0YWJfY29weV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6IFF1ZXJ5IHRoZSBj
dXJyZW50IGFuZCBtYXhpbXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKKyAqIGdyYW50IHRhYmxlLgor
ICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmllZCBhcyBET01JRF9TRUxGLgor
ICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdlZCBkb21haW4gbWF5IHNwZWNpZnkg
PGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqLworc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIHsKKyAg
ICAvKiBJTiBwYXJhbWV0ZXJzLiAqLworICAgIGRvbWlkX3QgIGRvbTsKKyAgICAvKiBPVVQgcGFy
YW1ldGVycy4gKi8KKyAgICB1aW50MzJfdCBucl9mcmFtZXM7CisgICAgdWludDMyX3QgbWF4X25y
X2ZyYW1lczsKKyAgICBpbnQxNl90ICBzdGF0dXM7ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdy
YW50X3N0YXR1cyAqLworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9xdWVyeV9zaXplIGdudHRh
Yl9xdWVyeV9zaXplX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShnbnR0YWJfcXVlcnlfc2l6
ZV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3VubWFwX2FuZF9yZXBsYWNlOiBEZXN0cm95IG9uZSBv
ciBtb3JlIGdyYW50LXJlZmVyZW5jZSBtYXBwaW5ncworICogdHJhY2tlZCBieSA8aGFuZGxlPiBi
dXQgYXRvbWljYWxseSByZXBsYWNlIHRoZSBwYWdlIHRhYmxlIGVudHJ5IHdpdGggb25lCisgKiBw
b2ludGluZyB0byB0aGUgbWFjaGluZSBhZGRyZXNzIHVuZGVyIDxuZXdfYWRkcj4uICA8bmV3X2Fk
ZHI+IHdpbGwgYmUKKyAqIHJlZGlyZWN0ZWQgdG8gdGhlIG51bGwgZW50cnkuCisgKiBOT1RFUzoK
KyAqICAxLiBUaGUgY2FsbCBtYXkgZmFpbCBpbiBhbiB1bmRlZmluZWQgbWFubmVyIGlmIGVpdGhl
ciBtYXBwaW5nIGlzIG5vdAorICogICAgIHRyYWNrZWQgYnkgPGhhbmRsZT4uCisgKiAgMi4gQWZ0
ZXIgZXhlY3V0aW5nIGEgYmF0Y2ggb2YgdW5tYXBzLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8g
c3RhbGUKKyAqICAgICBtYXBwaW5ncyB3aWxsIHJlbWFpbiBpbiB0aGUgZGV2aWNlIG9yIGhvc3Qg
VExCcy4KKyAqLworc3RydWN0IGdudHRhYl91bm1hcF9hbmRfcmVwbGFjZSB7CisgICAgLyogSU4g
cGFyYW1ldGVycy4gKi8KKyAgICB1aW50NjRfdCBob3N0X2FkZHI7CisgICAgdWludDY0X3QgbmV3
X2FkZHI7CisgICAgZ3JhbnRfaGFuZGxlX3QgaGFuZGxlOworICAgIC8qIE9VVCBwYXJhbWV0ZXJz
LiAqLworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRf
c3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3VubWFwX2FuZF9yZXBsYWNlIGdu
dHRhYl91bm1hcF9hbmRfcmVwbGFjZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250dGFi
X3VubWFwX2FuZF9yZXBsYWNlX3QpOworCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+
PSAweDAwMDMwMjBhCisvKgorICogR05UVEFCT1Bfc2V0X3ZlcnNpb246IFJlcXVlc3QgYSBwYXJ0
aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdyYW50CisgKiB0YWJsZSBzaGFyZWQgdGFibGUgc3RydWN0
dXJlLiAgVGhpcyBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkCisgKiBvbmNlIGluIGFu
eSBnaXZlbiBkb21haW4uICBJdCBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgYW55IGdyYW50cwor
ICogYXJlIGFjdGl2YXRlZDsgb3RoZXJ3aXNlLCB0aGUgZG9tYWluIHdpbGwgYmUgc3R1Y2sgd2l0
aCB2ZXJzaW9uIDEuCisgKiBUaGUgb25seSBkZWZpbmVkIHZlcnNpb25zIGFyZSAxIGFuZCAyLgor
ICovCitzdHJ1Y3QgZ250dGFiX3NldF92ZXJzaW9uIHsKKyAgICAvKiBJTi9PVVQgcGFyYW1ldGVy
cyAqLworICAgIHVpbnQzMl90IHZlcnNpb247Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX3Nl
dF92ZXJzaW9uIGdudHRhYl9zZXRfdmVyc2lvbl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
Z250dGFiX3NldF92ZXJzaW9uX3QpOworCisKKy8qCisgKiBHTlRUQUJPUF9nZXRfc3RhdHVzX2Zy
YW1lczogR2V0IHRoZSBsaXN0IG9mIGZyYW1lcyB1c2VkIHRvIHN0b3JlIGdyYW50CisgKiBzdGF0
dXMgZm9yIDxkb20+LiBJbiBncmFudCBmb3JtYXQgdmVyc2lvbiAyLCB0aGUgc3RhdHVzIGlzIHNl
cGFyYXRlZAorICogZnJvbSB0aGUgb3RoZXIgc2hhcmVkIGdyYW50IGZpZWxkcyB0byBhbGxvdyBt
b3JlIGVmZmljaWVudCBzeW5jaHJvbml6YXRpb24KKyAqIHVzaW5nIGJhcnJpZXJzIGluc3RlYWQg
b2YgYXRvbWljIGNtcGV4Y2ggb3BlcmF0aW9ucy4KKyAqIDxucl9mcmFtZXM+IHNwZWNpZnkgdGhl
IHNpemUgb2YgdmVjdG9yIDxmcmFtZV9saXN0Pi4KKyAqIFRoZSBmcmFtZSBhZGRyZXNzZXMgYXJl
IHJldHVybmVkIGluIHRoZSA8ZnJhbWVfbGlzdD4uCisgKiBPbmx5IDxucl9mcmFtZXM+IGFkZHJl
c3NlcyBhcmUgcmV0dXJuZWQsIGV2ZW4gaWYgdGhlIHRhYmxlIGlzIGxhcmdlci4KKyAqIE5PVEVT
OgorICogIDEuIDxkb20+IG1heSBiZSBzcGVjaWZpZWQgYXMgRE9NSURfU0VMRi4KKyAqICAyLiBP
bmx5IGEgc3VmZmljaWVudGx5LXByaXZpbGVnZWQgZG9tYWluIG1heSBzcGVjaWZ5IDxkb20+ICE9
IERPTUlEX1NFTEYuCisgKi8KK3N0cnVjdCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMgeworICAg
IC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgdWludDMyX3QgbnJfZnJhbWVzOworICAgIGRvbWlk
X3QgIGRvbTsKKyAgICAvKiBPVVQgcGFyYW1ldGVycy4gKi8KKyAgICBpbnQxNl90ICBzdGF0dXM7
ICAgICAgICAgICAgICAvKiA9PiBlbnVtIGdyYW50X3N0YXR1cyAqLworICAgIFhFTl9HVUVTVF9I
QU5ETEUodWludDY0X3QpIGZyYW1lX2xpc3Q7Cit9OwordHlwZWRlZiBzdHJ1Y3QgZ250dGFiX2dl
dF9zdGF0dXNfZnJhbWVzIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190OworREVGSU5FX1hFTl9H
VUVTVF9IQU5ETEUoZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX3QpOworCisvKgorICogR05UVEFC
T1BfZ2V0X3ZlcnNpb246IEdldCB0aGUgZ3JhbnQgdGFibGUgdmVyc2lvbiB3aGljaCBpcyBpbgor
ICogZWZmZWN0IGZvciBkb21haW4gPGRvbT4uCisgKi8KK3N0cnVjdCBnbnR0YWJfZ2V0X3ZlcnNp
b24geworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICBkb21pZF90IGRvbTsKKyAgICB1aW50
MTZfdCBwYWQ7CisgICAgLyogT1VUIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCB2ZXJzaW9u
OworfTsKK3R5cGVkZWYgc3RydWN0IGdudHRhYl9nZXRfdmVyc2lvbiBnbnR0YWJfZ2V0X3ZlcnNp
b25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGdudHRhYl9nZXRfdmVyc2lvbl90KTsKKwor
LyoKKyAqIEdOVFRBQk9QX3N3YXBfZ3JhbnRfcmVmOiBTd2FwIHRoZSBjb250ZW50cyBvZiB0d28g
Z3JhbnQgZW50cmllcy4KKyAqLworc3RydWN0IGdudHRhYl9zd2FwX2dyYW50X3JlZiB7CisgICAg
LyogSU4gcGFyYW1ldGVycyAqLworICAgIGdyYW50X3JlZl90IHJlZl9hOworICAgIGdyYW50X3Jl
Zl90IHJlZl9iOworICAgIC8qIE9VVCBwYXJhbWV0ZXJzICovCisgICAgaW50MTZfdCBzdGF0dXM7
ICAgICAgICAgICAgIC8qID0+IGVudW0gZ3JhbnRfc3RhdHVzICovCit9OwordHlwZWRlZiBzdHJ1
Y3QgZ250dGFiX3N3YXBfZ3JhbnRfcmVmIGdudHRhYl9zd2FwX2dyYW50X3JlZl90OworREVGSU5F
X1hFTl9HVUVTVF9IQU5ETEUoZ250dGFiX3N3YXBfZ3JhbnRfcmVmX3QpOworCisvKgorICogSXNz
dWUgb25lIG9yIG1vcmUgY2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBvbiBhIHBvcnRpb24g
b2YgYQorICogcGFnZSBncmFudGVkIHRvIHRoZSBjYWxsaW5nIGRvbWFpbiBieSBhIGZvcmVpZ24g
ZG9tYWluLgorICovCitzdHJ1Y3QgZ250dGFiX2NhY2hlX2ZsdXNoIHsKKyAgICB1bmlvbiB7Cisg
ICAgICAgIHVpbnQ2NF90IGRldl9idXNfYWRkcjsKKyAgICAgICAgZ3JhbnRfcmVmX3QgcmVmOwor
ICAgIH0gYTsKKyAgICB1aW50MTZfdCBvZmZzZXQ7IC8qIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGdy
YW50ICovCisgICAgdWludDE2X3QgbGVuZ3RoOyAvKiBzaXplIHdpdGhpbiB0aGUgZ3JhbnQgKi8K
KyNkZWZpbmUgR05UVEFCX0NBQ0hFX0NMRUFOICAgICAgICAgICgxPDwwKQorI2RlZmluZSBHTlRU
QUJfQ0FDSEVfSU5WQUwgICAgICAgICAgKDE8PDEpCisjZGVmaW5lIEdOVFRBQl9DQUNIRV9TT1VS
Q0VfR1JFRiAgICAoMTw8MzEpCisgICAgdWludDMyX3Qgb3A7Cit9OwordHlwZWRlZiBzdHJ1Y3Qg
Z250dGFiX2NhY2hlX2ZsdXNoIGdudHRhYl9jYWNoZV9mbHVzaF90OworREVGSU5FX1hFTl9HVUVT
VF9IQU5ETEUoZ250dGFiX2NhY2hlX2ZsdXNoX3QpOworCisjZW5kaWYgLyogX19YRU5fSU5URVJG
QUNFX1ZFUlNJT05fXyAqLworCisvKgorICogQml0ZmllbGQgdmFsdWVzIGZvciBnbnR0YWJfbWFw
X2dyYW50X3JlZi5mbGFncy4KKyAqLworIC8qIE1hcCB0aGUgZ3JhbnQgZW50cnkgZm9yIGFjY2Vz
cyBieSBJL08gZGV2aWNlcy4gKi8KKyNkZWZpbmUgX0dOVE1BUF9kZXZpY2VfbWFwICAgICAgKDAp
CisjZGVmaW5lIEdOVE1BUF9kZXZpY2VfbWFwICAgICAgICgxPDxfR05UTUFQX2RldmljZV9tYXAp
CisgLyogTWFwIHRoZSBncmFudCBlbnRyeSBmb3IgYWNjZXNzIGJ5IGhvc3QgQ1BVcy4gKi8KKyNk
ZWZpbmUgX0dOVE1BUF9ob3N0X21hcCAgICAgICAgKDEpCisjZGVmaW5lIEdOVE1BUF9ob3N0X21h
cCAgICAgICAgICgxPDxfR05UTUFQX2hvc3RfbWFwKQorIC8qIEFjY2Vzc2VzIHRvIHRoZSBncmFu
dGVkIGZyYW1lIHdpbGwgYmUgcmVzdHJpY3RlZCB0byByZWFkLW9ubHkgYWNjZXNzLiAqLworI2Rl
ZmluZSBfR05UTUFQX3JlYWRvbmx5ICAgICAgICAoMikKKyNkZWZpbmUgR05UTUFQX3JlYWRvbmx5
ICAgICAgICAgKDE8PF9HTlRNQVBfcmVhZG9ubHkpCisgLyoKKyAgKiBHTlRNQVBfaG9zdF9tYXAg
c3ViZmxhZzoKKyAgKiAgMCA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBvbmx5IGJ5IHRo
ZSBndWVzdCBPUy4KKyAgKiAgMSA9PiBUaGUgaG9zdCBtYXBwaW5nIGlzIHVzYWJsZSBieSBndWVz
dCBPUyArIGN1cnJlbnQgYXBwbGljYXRpb24uCisgICovCisjZGVmaW5lIF9HTlRNQVBfYXBwbGlj
YXRpb25fbWFwICgzKQorI2RlZmluZSBHTlRNQVBfYXBwbGljYXRpb25fbWFwICAoMTw8X0dOVE1B
UF9hcHBsaWNhdGlvbl9tYXApCisKKyAvKgorICAqIEdOVE1BUF9jb250YWluc19wdGUgc3ViZmxh
ZzoKKyAgKiAgMCA9PiBUaGlzIG1hcCByZXF1ZXN0IGNvbnRhaW5zIGEgaG9zdCB2aXJ0dWFsIGFk
ZHJlc3MuCisgICogIDEgPT4gVGhpcyBtYXAgcmVxdWVzdCBjb250YWlucyB0aGUgbWFjaGluZSBh
ZGRlc3Mgb2YgdGhlIFBURSB0byB1cGRhdGUuCisgICovCisjZGVmaW5lIF9HTlRNQVBfY29udGFp
bnNfcHRlICAgICg0KQorI2RlZmluZSBHTlRNQVBfY29udGFpbnNfcHRlICAgICAoMTw8X0dOVE1B
UF9jb250YWluc19wdGUpCisKKyNkZWZpbmUgX0dOVE1BUF9jYW5fZmFpbCAgICAgICAgKDUpCisj
ZGVmaW5lIEdOVE1BUF9jYW5fZmFpbCAgICAgICAgICgxPDxfR05UTUFQX2Nhbl9mYWlsKQorCisv
KgorICogQml0cyB0byBiZSBwbGFjZWQgaW4gZ3Vlc3Qga2VybmVsIGF2YWlsYWJsZSBQVEUgYml0
cyAoYXJjaGl0ZWN0dXJlCisgKiBkZXBlbmRlbnQ7IG9ubHkgc3VwcG9ydGVkIHdoZW4gWEVORkVB
VF9nbnR0YWJfbWFwX2F2YWlsX2JpdHMgaXMgc2V0KS4KKyAqLworI2RlZmluZSBfR05UTUFQX2d1
ZXN0X2F2YWlsMCAgICAoMTYpCisjZGVmaW5lIEdOVE1BUF9ndWVzdF9hdmFpbF9tYXNrICgodWlu
dDMyX3QpfjAgPDwgX0dOVE1BUF9ndWVzdF9hdmFpbDApCisKKy8qCisgKiBWYWx1ZXMgZm9yIGVy
cm9yIHN0YXR1cyByZXR1cm5zLiBBbGwgZXJyb3JzIGFyZSAtdmUuCisgKi8KKy8qIGAgZW51bSBn
cmFudF9zdGF0dXMgeyAqLworI2RlZmluZSBHTlRTVF9va2F5ICAgICAgICAgICAgICgwKSAgLyog
Tm9ybWFsIHJldHVybi4gICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHTlRTVF9n
ZW5lcmFsX2Vycm9yICAgICgtMSkgLyogR2VuZXJhbCB1bmRlZmluZWQgZXJyb3IuICAgICAgICAg
ICAgICAqLworI2RlZmluZSBHTlRTVF9iYWRfZG9tYWluICAgICAgICgtMikgLyogVW5yZWNvZ25z
ZWQgZG9tYWluIGlkLiAgICAgICAgICAgICAgICAqLworI2RlZmluZSBHTlRTVF9iYWRfZ250cmVm
ICAgICAgICgtMykgLyogVW5yZWNvZ25pc2VkIG9yIGluYXBwcm9wcmlhdGUgZ250cmVmLiAqLwor
I2RlZmluZSBHTlRTVF9iYWRfaGFuZGxlICAgICAgICgtNCkgLyogVW5yZWNvZ25pc2VkIG9yIGlu
YXBwcm9wcmlhdGUgaGFuZGxlLiAqLworI2RlZmluZSBHTlRTVF9iYWRfdmlydF9hZGRyICAgICgt
NSkgLyogSW5hcHByb3ByaWF0ZSB2aXJ0dWFsIGFkZHJlc3MgdG8gbWFwLiAqLworI2RlZmluZSBH
TlRTVF9iYWRfZGV2X2FkZHIgICAgICgtNikgLyogSW5hcHByb3ByaWF0ZSBkZXZpY2UgYWRkcmVz
cyB0byB1bm1hcC4qLworI2RlZmluZSBHTlRTVF9ub19kZXZpY2Vfc3BhY2UgICgtNykgLyogT3V0
IG9mIHNwYWNlIGluIEkvTyBNTVUuICAgICAgICAgICAgICAqLworI2RlZmluZSBHTlRTVF9wZXJt
aXNzaW9uX2RlbmllZCAoLTgpIC8qIE5vdCBlbm91Z2ggcHJpdmlsZWdlIGZvciBvcGVyYXRpb24u
ICAqLworI2RlZmluZSBHTlRTVF9iYWRfcGFnZSAgICAgICAgICgtOSkgLyogU3BlY2lmaWVkIHBh
Z2Ugd2FzIGludmFsaWQgZm9yIG9wLiAgICAqLworI2RlZmluZSBHTlRTVF9iYWRfY29weV9hcmcg
ICAgKC0xMCkgLyogY29weSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeS4gICAqLworI2Rl
ZmluZSBHTlRTVF9hZGRyZXNzX3Rvb19iaWcgKC0xMSkgLyogdHJhbnNmZXIgcGFnZSBhZGRyZXNz
IHRvbyBsYXJnZS4gICAgICAqLworI2RlZmluZSBHTlRTVF9lYWdhaW4gICAgICAgICAgKC0xMikg
LyogT3BlcmF0aW9uIG5vdCBkb25lOyB0cnkgYWdhaW4uICAgICAgICAqLworLyogYCB9ICovCisK
KyNkZWZpbmUgR05UVEFCT1BfZXJyb3JfbXNncyB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAi
b2theSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidW5kZWZp
bmVkIGVycm9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidW5yZWNvZ25pc2Vk
IGRvbWFpbiBpZCIsICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCBncmFudCByZWZl
cmVuY2UiLCAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCBtYXBwaW5nIGhhbmRsZSIs
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MiLCAgICAg
ICAgICAgICAgICAgIFwKKyAgICAiaW52YWxpZCBkZXZpY2UgYWRkcmVzcyIsICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAibm8gc3BhcmUgdHJhbnNsYXRpb24gc2xvdCBpbiB0aGUgSS9PIE1NVSIs
IFwKKyAgICAicGVybWlzc2lvbiBkZW5pZWQiLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAiYmFkIHBhZ2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiY29w
eSBhcmd1bWVudHMgY3Jvc3MgcGFnZSBib3VuZGFyeSIsICAgICAgIFwKKyAgICAicGFnZSBhZGRy
ZXNzIHNpemUgdG9vIGxhcmdlIiwgICAgICAgICAgICAgIFwKKyAgICAib3BlcmF0aW9uIG5vdCBk
b25lOyB0cnkgYWdhaW4iICAgICAgICAgICAgIFwKK30KKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJ
Q19HUkFOVF9UQUJMRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6
IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt
d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n
aXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vY29uc29sZS5oIGIvaW5jbHVkZS94ZW4vcHVibGlj
L2lvL2NvbnNvbGUuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NDk2MDE4
Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL2NvbnNvbGUuaApAQCAt
MCwwICsxLDUxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zb2xlLmgKKyAqCisg
KiBDb25zb2xlIEkvTyBpbnRlcmZhY2UgZm9yIFhlbiBndWVzdCBPU2VzLgorICoKKyAqIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUK
KyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us
IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEtlaXIgRnJhc2VyCisgKi8KKworI2lmbmRlZiBfX1hF
Tl9QVUJMSUNfSU9fQ09OU09MRV9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0NPTlNPTEVf
SF9fCisKK3R5cGVkZWYgdWludDMyX3QgWEVOQ09OU19SSU5HX0lEWDsKKworI2RlZmluZSBNQVNL
X1hFTkNPTlNfSURYKGlkeCwgcmluZykgKChpZHgpICYgKHNpemVvZihyaW5nKS0xKSkKKworc3Ry
dWN0IHhlbmNvbnNfaW50ZXJmYWNlIHsKKyAgICBjaGFyIGluWzEwMjRdOworICAgIGNoYXIgb3V0
WzIwNDhdOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZDsKKyAgICBYRU5D
T05TX1JJTkdfSURYIG91dF9jb25zLCBvdXRfcHJvZDsKK307CisKKyNlbmRpZiAvKiBfX1hFTl9Q
VUJMSUNfSU9fQ09OU09MRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1v
ZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0
YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYg
LS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMvaW8vcmluZy5oIGIvaW5jbHVkZS94ZW4vcHVibGlj
L2lvL3JpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDI5Y2MwCi0t
LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVibGljL2lvL3JpbmcuaApAQCAtMCwwICsx
LDMyNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogcmluZy5oCisgKgorICogU2hhcmVk
IHByb2R1Y2VyLWNvbnN1bWVyIHJpbmcgbWFjcm9zLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBUaW0gRGVl
Z2FuIGFuZCBBbmRyZXcgV2FyZmllbGQgTm92ZW1iZXIgMjAwNC4KKyAqLworCisjaWZuZGVmIF9f
WEVOX1BVQkxJQ19JT19SSU5HX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSU9fUklOR19IX18K
KworI2luY2x1ZGUgIi4uL3hlbi1jb21wYXQuaCIKKworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJT
SU9OX18gPCAweDAwMDMwMjA4CisjZGVmaW5lIHhlbl9tYigpICBtYigpCisjZGVmaW5lIHhlbl9y
bWIoKSBybWIoKQorI2RlZmluZSB4ZW5fd21iKCkgd21iKCkKKyNlbmRpZgorCit0eXBlZGVmIHVu
c2lnbmVkIGludCBSSU5HX0lEWDsKKworLyogUm91bmQgYSAzMi1iaXQgdW5zaWduZWQgY29uc3Rh
bnQgZG93biB0byB0aGUgbmVhcmVzdCBwb3dlciBvZiB0d28uICovCisjZGVmaW5lIF9fUkQyKF94
KSAgKCgoX3gpICYgMHgwMDAwMDAwMikgPyAweDIgICAgICAgICAgICAgICAgICA6ICgoX3gpICYg
MHgxKSkKKyNkZWZpbmUgX19SRDQoX3gpICAoKChfeCkgJiAweDAwMDAwMDBjKSA/IF9fUkQyKChf
eCk+PjIpPDwyICAgIDogX19SRDIoX3gpKQorI2RlZmluZSBfX1JEOChfeCkgICgoKF94KSAmIDB4
MDAwMDAwZjApID8gX19SRDQoKF94KT4+NCk8PDQgICAgOiBfX1JENChfeCkpCisjZGVmaW5lIF9f
UkQxNihfeCkgKCgoX3gpICYgMHgwMDAwZmYwMCkgPyBfX1JEOCgoX3gpPj44KTw8OCAgICA6IF9f
UkQ4KF94KSkKKyNkZWZpbmUgX19SRDMyKF94KSAoKChfeCkgJiAweGZmZmYwMDAwKSA/IF9fUkQx
NigoX3gpPj4xNik8PDE2IDogX19SRDE2KF94KSkKKworLyoKKyAqIENhbGN1bGF0ZSBzaXplIG9m
IGEgc2hhcmVkIHJpbmcsIGdpdmVuIHRoZSB0b3RhbCBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZQor
ICogcmluZyBhbmQgaW5kZXhlcyAoX3N6KSwgYW5kIHRoZSBuYW1lIHRhZyBvZiB0aGUgcmVxdWVz
dC9yZXNwb25zZSBzdHJ1Y3R1cmUuCisgKiBBIHJpbmcgY29udGFpbnMgYXMgbWFueSBlbnRyaWVz
IGFzIHdpbGwgZml0LCByb3VuZGVkIGRvd24gdG8gdGhlIG5lYXJlc3QKKyAqIHBvd2VyIG9mIHR3
byAoc28gd2UgY2FuIG1hc2sgd2l0aCAoc2l6ZS0xKSB0byBsb29wIGFyb3VuZCkuCisgKi8KKyNk
ZWZpbmUgX19DT05TVF9SSU5HX1NJWkUoX3MsIF9zeikgXAorICAgIChfX1JEMzIoKChfc3opIC0g
b2Zmc2V0b2Yoc3RydWN0IF9zIyNfc3JpbmcsIHJpbmcpKSAvIFwKKwkgICAgc2l6ZW9mKCgoc3Ry
dWN0IF9zIyNfc3JpbmcgKikwKS0+cmluZ1swXSkpKQorLyoKKyAqIFRoZSBzYW1lIGZvciBwYXNz
aW5nIGluIGFuIGFjdHVhbCBwb2ludGVyIGluc3RlYWQgb2YgYSBuYW1lIHRhZy4KKyAqLworI2Rl
ZmluZSBfX1JJTkdfU0laRShfcywgX3N6KSBcCisgICAgKF9fUkQzMigoKF9zeikgLSAoTE9OR19Q
VFIpKF9zKS0+cmluZyArIChMT05HX1BUUikoX3MpKSAvIHNpemVvZigoX3MpLT5yaW5nWzBdKSkp
CisKKy8qCisgKiBNYWNyb3MgdG8gbWFrZSB0aGUgY29ycmVjdCBDIGRhdGF0eXBlcyBmb3IgYSBu
ZXcga2luZCBvZiByaW5nLgorICoKKyAqIFRvIG1ha2UgYSBuZXcgcmluZyBkYXRhdHlwZSwgeW91
IG5lZWQgdG8gaGF2ZSB0d28gbWVzc2FnZSBzdHJ1Y3R1cmVzLAorICogbGV0J3Mgc2F5IHJlcXVl
c3RfdCwgYW5kIHJlc3BvbnNlX3QgYWxyZWFkeSBkZWZpbmVkLgorICoKKyAqIEluIGEgaGVhZGVy
IHdoZXJlIHlvdSB3YW50IHRoZSByaW5nIGRhdGF0eXBlIGRlY2xhcmVkLCB5b3UgdGhlbiBkbzoK
KyAqCisgKiAgICAgREVGSU5FX1JJTkdfVFlQRVMobXl0YWcsIHJlcXVlc3RfdCwgcmVzcG9uc2Vf
dCk7CisgKgorICogVGhlc2UgZXhwYW5kIG91dCB0byBnaXZlIHlvdSBhIHNldCBvZiB0eXBlcywg
YXMgeW91IGNhbiBzZWUgYmVsb3cuCisgKiBUaGUgbW9zdCBpbXBvcnRhbnQgb2YgdGhlc2UgYXJl
OgorICoKKyAqICAgICBteXRhZ19zcmluZ190ICAgICAgLSBUaGUgc2hhcmVkIHJpbmcuCisgKiAg
ICAgbXl0YWdfZnJvbnRfcmluZ190IC0gVGhlICdmcm9udCcgaGFsZiBvZiB0aGUgcmluZy4KKyAq
ICAgICBteXRhZ19iYWNrX3JpbmdfdCAgLSBUaGUgJ2JhY2snIGhhbGYgb2YgdGhlIHJpbmcuCisg
KgorICogVG8gaW5pdGlhbGl6ZSBhIHJpbmcgaW4geW91ciBjb2RlIHlvdSBuZWVkIHRvIGtub3cg
dGhlIGxvY2F0aW9uIGFuZCBzaXplCisgKiBvZiB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIChQQUdF
X1NJWkUsIGZvciBpbnN0YW5jZSkuIFRvIGluaXRpYWxpc2UKKyAqIHRoZSBmcm9udCBoYWxmOgor
ICoKKyAqICAgICBteXRhZ19mcm9udF9yaW5nX3QgZnJvbnRfcmluZzsKKyAqICAgICBTSEFSRURf
UklOR19JTklUKChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2UpOworICogICAgIEZST05UX1JJ
TkdfSU5JVCgmZnJvbnRfcmluZywgKG15dGFnX3NyaW5nX3QgKilzaGFyZWRfcGFnZSwgUEFHRV9T
SVpFKTsKKyAqCisgKiBJbml0aWFsaXppbmcgdGhlIGJhY2sgZm9sbG93cyBzaW1pbGFybHkgKG5v
dGUgdGhhdCBvbmx5IHRoZSBmcm9udAorICogaW5pdGlhbGl6ZXMgdGhlIHNoYXJlZCByaW5nKToK
KyAqCisgKiAgICAgbXl0YWdfYmFja19yaW5nX3QgYmFja19yaW5nOworICogICAgIEJBQ0tfUklO
R19JTklUKCZiYWNrX3JpbmcsIChteXRhZ19zcmluZ190ICopc2hhcmVkX3BhZ2UsIFBBR0VfU0la
RSk7CisgKi8KKworI2RlZmluZSBERUZJTkVfUklOR19UWVBFUyhfX25hbWUsIF9fcmVxX3QsIF9f
cnNwX3QpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLyogU2hhcmVk
IHJpbmcgZW50cnkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAordW5pb24gX19uYW1lIyNfc3JpbmdfZW50cnkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcmVxX3QgcmVxOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fcnNwX3Qg
cnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLyogU2hhcmVkIHJpbmcg
cGFnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorc3RydWN0IF9fbmFtZSMjX3NyaW5nIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJlcV9wcm9kLCByZXFfZXZlbnQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJzcF9w
cm9kLCByc3BfZXZlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdWludDhfdCBz
bWFydHBvbGxfYWN0aXZlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB9IG5ldGlmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdWludDhfdCBtc2c7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB9IHRhcGlmX3VzZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB1aW50OF90IHB2dF9wYWRbNF07ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gcHZ0OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQ4
X3QgX19wYWRbNDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHVuaW9uIF9fbmFtZSMjX3NyaW5nX2VudHJ5IHJpbmdbMV07IC8qIHZhcmlh
YmxlLWxlbmd0aCAqLyAgICAgICAgICAgXAorfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorLyogIkZyb250IiBlbmQncyBwcml2YXRlIHZhcmlhYmxlcyAqLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorc3RydWN0IF9fbmFtZSMjX2Zyb250X3JpbmcgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJl
cV9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIFJJTkdfSURYIHJzcF9jb25zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHVuc2lnbmVkIGludCBucl9lbnRzOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0cnVjdCBfX25hbWUj
I19zcmluZyAqc3Jpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLyogIkJhY2siIGVuZCdzIHByaXZh
dGUgdmFyaWFibGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3Ry
dWN0IF9fbmFtZSMjX2JhY2tfcmluZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJJTkdfSURYIHJlcV9jb25zOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVu
c2lnbmVkIGludCBucl9lbnRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHN0cnVjdCBfX25hbWUjI19zcmluZyAqc3Jpbmc7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorLyogU3ludGFjdGljIHN1Z2FyICovICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAordHlwZWRlZiBzdHJ1Y3QgX19uYW1lIyNfc3Jpbmcg
X19uYW1lIyNfc3JpbmdfdDsgICAgICAgICAgICAgICAgICAgICAgICAgXAordHlwZWRlZiBzdHJ1
Y3QgX19uYW1lIyNfZnJvbnRfcmluZyBfX25hbWUjI19mcm9udF9yaW5nX3Q7ICAgICAgICAgICAg
ICAgXAordHlwZWRlZiBzdHJ1Y3QgX19uYW1lIyNfYmFja19yaW5nIF9fbmFtZSMjX2JhY2tfcmlu
Z190CisKKy8qCisgKiBNYWNyb3MgZm9yIG1hbmlwdWxhdGluZyByaW5ncy4KKyAqCisgKiBGUk9O
VF9SSU5HX3doYXRldmVyIHdvcmtzIG9uIHRoZSAiZnJvbnQgZW5kIiBvZiBhIHJpbmc6IGhlcmUK
KyAqIHJlcXVlc3RzIGFyZSBwdXNoZWQgb24gdG8gdGhlIHJpbmcgYW5kIHJlc3BvbnNlcyB0YWtl
biBvZmYgaXQuCisgKgorICogQkFDS19SSU5HX3doYXRldmVyIHdvcmtzIG9uIHRoZSAiYmFjayBl
bmQiIG9mIGEgcmluZzogaGVyZQorICogcmVxdWVzdHMgYXJlIHRha2VuIG9mZiB0aGUgcmluZyBh
bmQgcmVzcG9uc2VzIHB1dCBvbi4KKyAqCisgKiBOLkIuIHRoZXNlIG1hY3JvcyBkbyBOTyBJTlRF
UkxPQ0tTIE9SIEZMT1cgQ09OVFJPTC4KKyAqIFRoaXMgaXMgT0sgaW4gMS1mb3ItMSByZXF1ZXN0
LXJlc3BvbnNlIHNpdHVhdGlvbnMgd2hlcmUgdGhlCisgKiByZXF1ZXN0b3IgKGZyb250IGVuZCkg
bmV2ZXIgaGFzIG1vcmUgdGhhbiBSSU5HX1NJWkUoKS0xCisgKiBvdXRzdGFuZGluZyByZXF1ZXN0
cy4KKyAqLworCisvKiBJbml0aWFsaXNpbmcgZW1wdHkgcmluZ3MgKi8KKyNkZWZpbmUgU0hBUkVE
X1JJTkdfSU5JVChfcykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoX3MpLT5yZXFfcHJvZCAgPSAoX3MpLT5yc3BfcHJvZCAgPSAwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3MpLT5yZXFfZXZlbnQgPSAoX3MpLT5yc3BfZXZl
bnQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAodm9pZCltZW1zZXQo
KF9zKS0+cHZ0LnB2dF9wYWQsIDAsIHNpemVvZigoX3MpLT5wdnQucHZ0X3BhZCkpOyAgICAgIFwK
KyAgICAodm9pZCltZW1zZXQoKF9zKS0+X19wYWQsIDAsIHNpemVvZigoX3MpLT5fX3BhZCkpOyAg
ICAgICAgICAgICAgICAgIFwKK30gd2hpbGUoMCkKKworI2RlZmluZSBGUk9OVF9SSU5HX0lOSVQo
X3IsIF9zLCBfX3NpemUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChf
ciktPnJlcV9wcm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIChfciktPnJzcF9jb25zID0gMDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPm5yX2VudHMgPSBfX1JJTkdf
U0laRShfcywgX19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfcikt
PnNyaW5nID0gKF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBCQUNLX1JJTkdfSU5JVChfciwgX3MsIF9f
c2l6ZSkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnJzcF9w
cm9kX3B2dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIChfciktPnJlcV9jb25zID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPm5yX2VudHMgPSBfX1JJTkdfU0laRShfcywg
X19zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChfciktPnNyaW5nID0g
KF9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
fSB3aGlsZSAoMCkKKworLyogSG93IGJpZyBpcyB0aGlzIHJpbmc/ICovCisjZGVmaW5lIFJJTkdf
U0laRShfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgKChfciktPm5yX2VudHMpCisKKy8qIE51bWJlciBvZiBmcmVlIHJlcXVlc3RzIChm
b3IgdXNlIG9uIGZyb250IHNpZGUgb25seSkuICovCisjZGVmaW5lIFJJTkdfRlJFRV9SRVFVRVNU
UyhfcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKFJJ
TkdfU0laRShfcikgLSAoKF9yKS0+cmVxX3Byb2RfcHZ0IC0gKF9yKS0+cnNwX2NvbnMpKQorCisv
KiBUZXN0IGlmIHRoZXJlIGlzIGFuIGVtcHR5IHNsb3QgYXZhaWxhYmxlIG9uIHRoZSBmcm9udCBy
aW5nLgorICogKFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZyb20gdGhlIGZyb250LiApCisgKi8K
KyNkZWZpbmUgUklOR19GVUxMKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAoUklOR19GUkVFX1JFUVVFU1RTKF9yKSA9PSAwKQorCisv
KiBUZXN0IGlmIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBtZXNzYWdlcyB0byBiZSBwcm9jZXNzZWQg
b24gYSByaW5nLiAqLworI2RlZmluZSBSSU5HX0hBU19VTkNPTlNVTUVEX1JFU1BPTlNFUyhfcikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoX3IpLT5zcmluZy0+cnNwX3By
b2QgLSAoX3IpLT5yc3BfY29ucykKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIFJJTkdfSEFT
X1VOQ09OU1VNRURfUkVRVUVTVFMoX3IpICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdW5zaWduZWQgaW50IHJlcSA9IChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJl
cV9jb25zOyAgICAgICAgICBcCisgICAgdW5zaWduZWQgaW50IHJzcCA9IFJJTkdfU0laRShfcikg
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgoX3IpLT5yZXFf
Y29ucyAtIChfciktPnJzcF9wcm9kX3B2dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgcmVxIDwgcnNwID8gcmVxIDogcnNwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCit9KQorI2Vsc2UKKy8qIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRob3V0
IHRoZSBuaWNlIEdDQyAoeyAuLi4gfSkgc3ludGF4LiAqLworI2RlZmluZSBSSU5HX0hBU19VTkNP
TlNVTUVEX1JFUVVFU1RTKF9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICgoKChfciktPnNyaW5nLT5yZXFfcHJvZCAtIChfciktPnJlcV9jb25zKSA8ICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgKFJJTkdfU0laRShfcikgLSAoKF9yKS0+cmVxX2NvbnMgLSAo
X3IpLT5yc3BfcHJvZF9wdnQpKSkgPyAgICAgICAgXAorICAgICAoKF9yKS0+c3JpbmctPnJlcV9w
cm9kIC0gKF9yKS0+cmVxX2NvbnMpIDogICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAo
UklOR19TSVpFKF9yKSAtICgoX3IpLT5yZXFfY29ucyAtIChfciktPnJzcF9wcm9kX3B2dCkpKQor
I2VuZGlmCisKKy8qIERpcmVjdCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCByaW5nIGVsZW1lbnRzLCBi
eSBpbmRleC4gKi8KKyNkZWZpbmUgUklOR19HRVRfUkVRVUVTVChfciwgX2lkeCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoJigoX3IpLT5zcmluZy0+cmluZ1so
KF9pZHgpICYgKFJJTkdfU0laRShfcikgLSAxKSldLnJlcSkpCisKKy8qCisgKiBHZXQgYSBsb2Nh
bCBjb3B5IG9mIGEgcmVxdWVzdC4KKyAqCisgKiBVc2UgdGhpcyBpbiBwcmVmZXJlbmNlIHRvIFJJ
TkdfR0VUX1JFUVVFU1QoKSBzbyBhbGwgcHJvY2Vzc2luZyBpcworICogZG9uZSBvbiBhIGxvY2Fs
IGNvcHkgdGhhdCBjYW5ub3QgYmUgbW9kaWZpZWQgYnkgdGhlIG90aGVyIGVuZC4KKyAqCisgKiBO
b3RlIHRoYXQgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTgx
NDUgbWF5IGNhdXNlIHRoaXMKKyAqIHRvIGJlIGluZWZmZWN0aXZlIHdoZXJlIF9yZXEgaXMgYSBz
dHJ1Y3Qgd2hpY2ggY29uc2lzdHMgb2Ygb25seSBiaXRmaWVsZHMuCisgKi8KKyNkZWZpbmUgUklO
R19DT1BZX1JFUVVFU1QoX3IsIF9pZHgsIF9yZXEpIGRvIHsJCQkJXAorCS8qIFVzZSB2b2xhdGls
ZSB0byBmb3JjZSB0aGUgY29weSBpbnRvIF9yZXEuICovCQkJXAorCSooX3JlcSkgPSAqKHZvbGF0
aWxlIHR5cGVvZihfcmVxKSlSSU5HX0dFVF9SRVFVRVNUKF9yLCBfaWR4KTsJXAorfSB3aGlsZSAo
MCkKKworI2RlZmluZSBSSU5HX0dFVF9SRVNQT05TRShfciwgX2lkeCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICgmKChfciktPnNyaW5nLT5yaW5nWygoX2lkeCkg
JiAoUklOR19TSVpFKF9yKSAtIDEpKV0ucnNwKSkKKworLyogTG9vcCB0ZXJtaW5hdGlvbiBjb25k
aXRpb246IFdvdWxkIHRoZSBzcGVjaWZpZWQgaW5kZXggb3ZlcmZsb3cgdGhlIHJpbmc/ICovCisj
ZGVmaW5lIFJJTkdfUkVRVUVTVF9DT05TX09WRVJGTE9XKF9yLCBfY29ucykgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgKCgoX2NvbnMpIC0gKF9yKS0+cnNwX3Byb2RfcHZ0KSA+PSBS
SU5HX1NJWkUoX3IpKQorCisvKiBJbGwtYmVoYXZlZCBmcm9udGVuZCBkZXRlcm1pbmF0aW9uOiBD
YW4gdGhlcmUgYmUgdGhpcyBtYW55IHJlcXVlc3RzPyAqLworI2RlZmluZSBSSU5HX1JFUVVFU1Rf
UFJPRF9PVkVSRkxPVyhfciwgX3Byb2QpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICgoKF9wcm9kKSAtIChfciktPnJzcF9wcm9kX3B2dCkgPiBSSU5HX1NJWkUoX3IpKQorCisjZGVm
aW5lIFJJTkdfUFVTSF9SRVFVRVNUUyhfcikgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBiYWNrIHNlZXMgcmVxdWVzdHMgL2JlZm9y
ZS8gdXBkYXRlZCBwcm9kdWNlciBpbmRleCAqLyBcCisgICAgKF9yKS0+c3JpbmctPnJlcV9wcm9k
ID0gKF9yKS0+cmVxX3Byb2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxl
ICgwKQorCisjZGVmaW5lIFJJTkdfUFVTSF9SRVNQT05TRVMoX3IpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeGVuX3dtYigpOyAvKiBmcm9udCBzZWVzIHJl
c3BzIC9iZWZvcmUvIHVwZGF0ZWQgcHJvZHVjZXIgaW5kZXggKi8gICBcCisgICAgKF9yKS0+c3Jp
bmctPnJzcF9wcm9kID0gKF9yKS0+cnNwX3Byb2RfcHZ0OyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCit9IHdoaWxlICgwKQorCisvKgorICogTm90aWZpY2F0aW9uIGhvbGQtb2ZmIChyZXFfZXZl
bnQgYW5kIHJzcF9ldmVudCk6CisgKgorICogV2hlbiBxdWV1ZWluZyByZXF1ZXN0cyBvciByZXNw
b25zZXMgb24gYSBzaGFyZWQgcmluZywgaXQgbWF5IG5vdCBhbHdheXMgYmUKKyAqIG5lY2Vzc2Fy
eSB0byBub3RpZnkgdGhlIHJlbW90ZSBlbmQuIEZvciBleGFtcGxlLCBpZiByZXF1ZXN0cyBhcmUg
aW4gZmxpZ2h0CisgKiBpbiBhIGJhY2tlbmQsIHRoZSBmcm9udCBtYXkgYmUgYWJsZSB0byBxdWV1
ZSBmdXJ0aGVyIHJlcXVlc3RzIHdpdGhvdXQKKyAqIG5vdGlmeWluZyB0aGUgYmFjayAoaWYgdGhl
IGJhY2sgY2hlY2tzIGZvciBuZXcgcmVxdWVzdHMgd2hlbiBpdCBxdWV1ZXMKKyAqIHJlc3BvbnNl
cykuCisgKgorICogV2hlbiBlbnF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9uc2VzOgorICoKKyAq
ICBVc2UgUklOR19QVVNIX3tSRVFVRVNUUyxSRVNQT05TRVN9X0FORF9DSEVDS19OT1RJRlkoKS4g
VGhlIHNlY29uZCBhcmd1bWVudAorICogIGlzIGEgYm9vbGVhbiByZXR1cm4gdmFsdWUuIFRydWUg
aW5kaWNhdGVzIHRoYXQgdGhlIHJlY2VpdmVyIHJlcXVpcmVzIGFuCisgKiAgYXN5bmNocm9ub3Vz
IG5vdGlmaWNhdGlvbi4KKyAqCisgKiBBZnRlciBkZXF1ZXVpbmcgcmVxdWVzdHMgb3IgcmVzcG9u
c2VzIChiZWZvcmUgc2xlZXBpbmcgdGhlIGNvbm5lY3Rpb24pOgorICoKKyAqICBVc2UgUklOR19G
SU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSBvciBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05T
RVMoKS4KKyAqICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgYm9vbGVhbiByZXR1cm4gdmFsdWUu
IFRydWUgaW5kaWNhdGVzIHRoYXQgdGhlcmUKKyAqICBhcmUgcGVuZGluZyBtZXNzYWdlcyBvbiB0
aGUgcmluZyAoaS5lLiwgdGhlIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBwdXQKKyAqICB0byBz
bGVlcCkuCisgKgorICogIFRoZXNlIG1hY3JvcyB3aWxsIHNldCB0aGUgcmVxX2V2ZW50L3JzcF9l
dmVudCBmaWVsZCB0byB0cmlnZ2VyIGEKKyAqICBub3RpZmljYXRpb24gb24gdGhlIHZlcnkgbmV4
dCBtZXNzYWdlIHRoYXQgaXMgZW5xdWV1ZWQuIElmIHlvdSB3YW50IHRvCisgKiAgY3JlYXRlIGJh
dGNoZXMgb2Ygd29yayAoaS5lLiwgb25seSByZWNlaXZlIGEgbm90aWZpY2F0aW9uIGFmdGVyIHNl
dmVyYWwKKyAqICBtZXNzYWdlcyBoYXZlIGJlZW4gZW5xdWV1ZWQpIHRoZW4geW91IHdpbGwgbmVl
ZCB0byBjcmVhdGUgYSBjdXN0b21pc2VkCisgKiAgdmVyc2lvbiBvZiB0aGUgRklOQUxfQ0hFQ0sg
bWFjcm8gaW4geW91ciBvd24gY29kZSwgd2hpY2ggc2V0cyB0aGUgZXZlbnQKKyAqICBmaWVsZCBh
cHByb3ByaWF0ZWx5LgorICovCisKKyNkZWZpbmUgUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVD
S19OT1RJRlkoX3IsIF9ub3RpZnkpIGRvIHsgICAgICAgICAgIFwKKyAgICBSSU5HX0lEWCBfX29s
ZCA9IChfciktPnNyaW5nLT5yZXFfcHJvZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBSSU5HX0lEWCBfX25ldyA9IChfciktPnJlcV9wcm9kX3B2dDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB4ZW5fd21iKCk7IC8qIGJhY2sgc2VlcyByZXF1ZXN0cyAv
YmVmb3JlLyB1cGRhdGVkIHByb2R1Y2VyIGluZGV4ICovIFwKKyAgICAoX3IpLT5zcmluZy0+cmVx
X3Byb2QgPSBfX25ldzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB4ZW5fbWIoKTsgLyogYmFjayBzZWVzIG5ldyByZXF1ZXN0cyAvYmVmb3JlLyB3ZSBjaGVjayBy
ZXFfZXZlbnQgKi8gIFwKKyAgICAoX25vdGlmeSkgPSAoKFJJTkdfSURYKShfX25ldyAtIChfcikt
PnNyaW5nLT5yZXFfZXZlbnQpIDwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgKFJJTkdf
SURYKShfX25ldyAtIF9fb2xkKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hp
bGUgKDApCisKKyNkZWZpbmUgUklOR19QVVNIX1JFU1BPTlNFU19BTkRfQ0hFQ0tfTk9USUZZKF9y
LCBfbm90aWZ5KSBkbyB7ICAgICAgICAgIFwKKyAgICBSSU5HX0lEWCBfX29sZCA9IChfciktPnNy
aW5nLT5yc3BfcHJvZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBSSU5HX0lE
WCBfX25ldyA9IChfciktPnJzcF9wcm9kX3B2dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB4ZW5fd21iKCk7IC8qIGZyb250IHNlZXMgcmVzcHMgL2JlZm9yZS8gdXBkYXRl
ZCBwcm9kdWNlciBpbmRleCAqLyAgIFwKKyAgICAoX3IpLT5zcmluZy0+cnNwX3Byb2QgPSBfX25l
dzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB4ZW5fbWIoKTsg
LyogZnJvbnQgc2VlcyBuZXcgcmVzcHMgL2JlZm9yZS8gd2UgY2hlY2sgcnNwX2V2ZW50ICovICAg
IFwKKyAgICAoX25vdGlmeSkgPSAoKFJJTkdfSURYKShfX25ldyAtIChfciktPnNyaW5nLT5yc3Bf
ZXZlbnQpIDwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgKFJJTkdfSURYKShfX25ldyAt
IF9fb2xkKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNk
ZWZpbmUgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoX3IsIF93b3JrX3RvX2RvKSBkbyB7
ICAgICAgICAgICAgIFwKKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19IQVNfVU5DT05TVU1FRF9S
RVFVRVNUUyhfcik7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX3dvcmtfdG9fZG8pIGJy
ZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAo
X3IpLT5zcmluZy0+cmVxX2V2ZW50ID0gKF9yKS0+cmVxX2NvbnMgKyAxOyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB4ZW5fbWIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19I
QVNfVU5DT05TVU1FRF9SRVFVRVNUUyhfcik7ICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUg
KDApCisKKyNkZWZpbmUgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKF9yLCBfd29ya190
b19kbykgZG8geyAgICAgICAgICAgIFwKKyAgICAoX3dvcmtfdG9fZG8pID0gUklOR19IQVNfVU5D
T05TVU1FRF9SRVNQT05TRVMoX3IpOyAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX3dvcmtf
dG9fZG8pIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoX3IpLT5zcmluZy0+cnNwX2V2ZW50ID0gKF9yKS0+cnNwX2NvbnMgKyAxOyAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB4ZW5fbWIoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoX3dvcmtfdG9fZG8p
ID0gUklOR19IQVNfVU5DT05TVU1FRF9SRVNQT05TRVMoX3IpOyAgICAgICAgICAgICAgICAgIFwK
K30gd2hpbGUgKDApCisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fUklOR19IX18gKi8KKwor
LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT
RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz
LW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMv
aW8veGVuYnVzLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvaW8veGVuYnVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTI3ZjlkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1
ZGUveGVuL3B1YmxpYy9pby94ZW5idXMuaApAQCAtMCwwICsxLDgwIEBACisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqIHhlbmJ1cy5oCisgKgorICogWGVuYnVzIHByb3RvY29sIGRldGFpbHMuCisg
KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np
YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor
ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP
UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS
CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBYZW5Tb3VyY2UgTHRkLgorICovCisK
KyNpZm5kZWYgX1hFTl9QVUJMSUNfSU9fWEVOQlVTX0gKKyNkZWZpbmUgX1hFTl9QVUJMSUNfSU9f
WEVOQlVTX0gKKworLyoKKyAqIFRoZSBzdGF0ZSBvZiBlaXRoZXIgZW5kIG9mIHRoZSBYZW5idXMs
IGkuZS4gdGhlIGN1cnJlbnQgY29tbXVuaWNhdGlvbgorICogc3RhdHVzIG9mIGluaXRpYWxpc2F0
aW9uIGFjcm9zcyB0aGUgYnVzLiAgU3RhdGVzIGhlcmUgaW1wbHkgbm90aGluZyBhYm91dAorICog
dGhlIHN0YXRlIG9mIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIGtl
cm5lbCdzIGRldmljZQorICogbGF5ZXJzLgorICovCitlbnVtIHhlbmJ1c19zdGF0ZSB7CisgICAg
WGVuYnVzU3RhdGVVbmtub3duICAgICAgID0gMCwKKworICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlz
aW5nICA9IDEsCisKKyAgICAvKgorICAgICAqIEluaXRXYWl0OiBGaW5pc2hlZCBlYXJseSBpbml0
aWFsaXNhdGlvbiBidXQgd2FpdGluZyBmb3IgaW5mb3JtYXRpb24KKyAgICAgKiBmcm9tIHRoZSBw
ZWVyIG9yIGhvdHBsdWcgc2NyaXB0cy4KKyAgICAgKi8KKyAgICBYZW5idXNTdGF0ZUluaXRXYWl0
ICAgICAgPSAyLAorCisgICAgLyoKKyAgICAgKiBJbml0aWFsaXNlZDogV2FpdGluZyBmb3IgYSBj
b25uZWN0aW9uIGZyb20gdGhlIHBlZXIuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVJbml0aWFs
aXNlZCAgID0gMywKKworICAgIFhlbmJ1c1N0YXRlQ29ubmVjdGVkICAgICA9IDQsCisKKyAgICAv
KgorICAgICAqIENsb3Npbmc6IFRoZSBkZXZpY2UgaXMgYmVpbmcgY2xvc2VkIGR1ZSB0byBhbiBl
cnJvciBvciBhbiB1bnBsdWcgZXZlbnQuCisgICAgICovCisgICAgWGVuYnVzU3RhdGVDbG9zaW5n
ICAgICAgID0gNSwKKworICAgIFhlbmJ1c1N0YXRlQ2xvc2VkICAgICAgICA9IDYsCisKKyAgICAv
KgorICAgICAqIFJlY29uZmlndXJpbmc6IFRoZSBkZXZpY2UgaXMgYmVpbmcgcmVjb25maWd1cmVk
LgorICAgICAqLworICAgIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyA9IDcsCisKKyAgICBYZW5i
dXNTdGF0ZVJlY29uZmlndXJlZCAgPSA4Cit9OwordHlwZWRlZiBlbnVtIHhlbmJ1c19zdGF0ZSBY
ZW5idXNTdGF0ZTsKKworI2VuZGlmIC8qIF9YRU5fUFVCTElDX0lPX1hFTkJVU19IICovCisKKy8q
CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi
CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t
b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vcHVibGljL3Ry
YWNlLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi45NWIwMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ZW4vcHVi
bGljL3RyYWNlLmgKQEAgLTAsMCArMSwzMzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq
IGluY2x1ZGUvcHVibGljL3RyYWNlLmgKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisg
KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAq
CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogTWFyayBXaWxsaWFtc29u
LCAoQykgMjAwNCBJbnRlbCBSZXNlYXJjaCBDYW1icmlkZ2UKKyAqIENvcHlyaWdodCAoQykgMjAw
NSBCaW4gUmVuCisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfVFJBQ0VfSF9fCisjZGVmaW5l
IF9fWEVOX1BVQkxJQ19UUkFDRV9IX18KKworI2RlZmluZSBUUkFDRV9FWFRSQV9NQVggICAgNwor
I2RlZmluZSBUUkFDRV9FWFRSQV9TSElGVCAyOAorCisvKiBUcmFjZSBjbGFzc2VzICovCisjZGVm
aW5lIFRSQ19DTFNfU0hJRlQgMTYKKyNkZWZpbmUgVFJDX0dFTiAgICAgIDB4MDAwMWYwMDAgICAg
LyogR2VuZXJhbCB0cmFjZSAgICAgICAgICAgICovCisjZGVmaW5lIFRSQ19TQ0hFRCAgICAweDAw
MDJmMDAwICAgIC8qIFhlbiBTY2hlZHVsZXIgdHJhY2UgICAgICAqLworI2RlZmluZSBUUkNfRE9N
ME9QICAgMHgwMDA0ZjAwMCAgICAvKiBYZW4gRE9NMCBvcGVyYXRpb24gdHJhY2UgKi8KKyNkZWZp
bmUgVFJDX0hWTSAgICAgIDB4MDAwOGYwMDAgICAgLyogWGVuIEhWTSB0cmFjZSAgICAgICAgICAg
ICovCisjZGVmaW5lIFRSQ19NRU0gICAgICAweDAwMTBmMDAwICAgIC8qIFhlbiBtZW1vcnkgdHJh
Y2UgICAgICAgICAqLworI2RlZmluZSBUUkNfUFYgICAgICAgMHgwMDIwZjAwMCAgICAvKiBYZW4g
UFYgdHJhY2VzICAgICAgICAgICAgKi8KKyNkZWZpbmUgVFJDX1NIQURPVyAgIDB4MDA0MGYwMDAg
ICAgLyogWGVuIHNoYWRvdyB0cmFjaW5nICAgICAgICovCisjZGVmaW5lIFRSQ19IVyAgICAgICAw
eDAwODBmMDAwICAgIC8qIFhlbiBoYXJkd2FyZS1yZWxhdGVkIHRyYWNlcyAqLworI2RlZmluZSBU
UkNfR1VFU1QgICAgMHgwODAwZjAwMCAgICAvKiBHdWVzdC1nZW5lcmF0ZWQgdHJhY2VzICAgKi8K
KyNkZWZpbmUgVFJDX0FMTCAgICAgIDB4MGZmZmYwMDAKKyNkZWZpbmUgVFJDX0hEX1RPX0VWRU5U
KHgpICgoeCkmMHgwZmZmZmZmZikKKyNkZWZpbmUgVFJDX0hEX0NZQ0xFX0ZMQUcgKDFVTDw8MzEp
CisjZGVmaW5lIFRSQ19IRF9JTkNMVURFU19DWUNMRV9DT1VOVCh4KSAoICEhKCAoeCkgJiBUUkNf
SERfQ1lDTEVfRkxBRyApICkKKyNkZWZpbmUgVFJDX0hEX0VYVFJBKHgpICAgICgoKHgpPj5UUkFD
RV9FWFRSQV9TSElGVCkmVFJBQ0VfRVhUUkFfTUFYKQorCisvKiBUcmFjZSBzdWJjbGFzc2VzICov
CisjZGVmaW5lIFRSQ19TVUJDTFNfU0hJRlQgMTIKKworLyogdHJhY2Ugc3ViY2xhc3NlcyBmb3Ig
U1ZNICovCisjZGVmaW5lIFRSQ19IVk1fRU5UUllFWElUICAgMHgwMDA4MTAwMCAgIC8qIFZNRU5U
UlkgYW5kICNWTUVYSVQgICAgICAgKi8KKyNkZWZpbmUgVFJDX0hWTV9IQU5ETEVSICAgICAweDAw
MDgyMDAwICAgLyogdmFyaW91cyBIVk0gaGFuZGxlcnMgICAgICAqLworI2RlZmluZSBUUkNfSFZN
X0VNVUwgICAgICAgIDB4MDAwODQwMDAgICAvKiBlbXVsYXRlZCBkZXZpY2VzICovCisKKyNkZWZp
bmUgVFJDX1NDSEVEX01JTiAgICAgICAweDAwMDIxMDAwICAgLyogSnVzdCBydW5zdGF0ZSBjaGFu
Z2VzICovCisjZGVmaW5lIFRSQ19TQ0hFRF9DTEFTUyAgICAgMHgwMDAyMjAwMCAgIC8qIFNjaGVk
dWxlci1zcGVjaWZpYyAgICAqLworI2RlZmluZSBUUkNfU0NIRURfVkVSQk9TRSAgIDB4MDAwMjgw
MDAgICAvKiBNb3JlIGluY2x1c2l2ZSBzY2hlZHVsaW5nICovCisKKy8qCisgKiBUaGUgaGlnaGVz
dCAzIGJpdHMgb2YgdGhlIGxhc3QgMTIgYml0cyBvZiBUUkNfU0NIRURfQ0xBU1MgYWJvdmUgYXJl
CisgKiByZXNlcnZlZCBmb3IgZW5jb2Rpbmcgd2hhdCBzY2hlZHVsZXIgcHJvZHVjZWQgdGhlIGlu
Zm9ybWF0aW9uLiBUaGUKKyAqIGFjdHVhbCBldmVudCBpcyBlbmNvZGVkIGluIHRoZSBsYXN0IDkg
Yml0cy4KKyAqCisgKiBUaGlzIG1lYW5zIHdlIGhhdmUgOCBzY2hlZHVsaW5nIElEcyBhdmFpbGFi
bGUgKHdoaWNoIG1lYW5zIGF0IG1vc3QgOAorICogc2NoZWR1bGVycyBnZW5lcmF0aW5nIGV2ZW50
cykgYW5kLCBpbiBlYWNoIHNjaGVkdWxlciwgdXAgdG8gNTEyCisgKiBkaWZmZXJlbnQgZXZlbnRz
LgorICovCisjZGVmaW5lIFRSQ19TQ0hFRF9JRF9CSVRTIDMKKyNkZWZpbmUgVFJDX1NDSEVEX0lE
X1NISUZUIChUUkNfU1VCQ0xTX1NISUZUIC0gVFJDX1NDSEVEX0lEX0JJVFMpCisjZGVmaW5lIFRS
Q19TQ0hFRF9JRF9NQVNLICgoKDFVTDw8VFJDX1NDSEVEX0lEX0JJVFMpIC0gMSkgPDwgVFJDX1ND
SEVEX0lEX1NISUZUKQorI2RlZmluZSBUUkNfU0NIRURfRVZUX01BU0sgKH4oVFJDX1NDSEVEX0lE
X01BU0spKQorCisvKiBQZXItc2NoZWR1bGVyIElEcywgdG8gaWRlbnRpZnkgc2NoZWR1bGVyIHNw
ZWNpZmljIGV2ZW50cyAqLworI2RlZmluZSBUUkNfU0NIRURfQ1NDSEVEICAgMAorI2RlZmluZSBU
UkNfU0NIRURfQ1NDSEVEMiAgMQorLyogI2RlZmluZSBYRU5fU0NIRURVTEVSX1NFREYgMiAoUmVt
b3ZlZCkgKi8KKyNkZWZpbmUgVFJDX1NDSEVEX0FSSU5DNjUzIDMKKyNkZWZpbmUgVFJDX1NDSEVE
X1JURFMgICAgIDQKKworLyogUGVyLXNjaGVkdWxlciB0cmFjaW5nICovCisjZGVmaW5lIFRSQ19T
Q0hFRF9DTEFTU19FVlQoX2MsIF9lKSBcCisgICggKCBUUkNfU0NIRURfQ0xBU1MgfCBcCisgICAg
ICAoKFRSQ19TQ0hFRF8jI19jIDw8IFRSQ19TQ0hFRF9JRF9TSElGVCkgJiBUUkNfU0NIRURfSURf
TUFTSykgKSArIFwKKyAgICAoX2UgJiBUUkNfU0NIRURfRVZUX01BU0spICkKKworLyogVHJhY2Ug
Y2xhc3NlcyBmb3IgRE9NMCBvcGVyYXRpb25zICovCisjZGVmaW5lIFRSQ19ET00wX0RPTU9QUyAg
ICAgMHgwMDA0MTAwMCAgIC8qIERvbWFpbnMgbWFuaXB1bGF0aW9ucyAqLworCisvKiBUcmFjZSBj
bGFzc2VzIGZvciBIYXJkd2FyZSAqLworI2RlZmluZSBUUkNfSFdfUE0gICAgICAgICAgIDB4MDA4
MDEwMDAgICAvKiBQb3dlciBtYW5hZ2VtZW50IHRyYWNlcyAqLworI2RlZmluZSBUUkNfSFdfSVJR
ICAgICAgICAgIDB4MDA4MDIwMDAgICAvKiBUcmFjZXMgcmVsYXRpbmcgdG8gdGhlIGhhbmRsaW5n
IG9mIElSUXMgKi8KKworLyogVHJhY2UgZXZlbnRzIHBlciBjbGFzcyAqLworI2RlZmluZSBUUkNf
TE9TVF9SRUNPUkRTICAgICAgICAoVFJDX0dFTiArIDEpCisjZGVmaW5lIFRSQ19UUkFDRV9XUkFQ
X0JVRkZFUiAgKFRSQ19HRU4gKyAyKQorI2RlZmluZSBUUkNfVFJBQ0VfQ1BVX0NIQU5HRSAgICAo
VFJDX0dFTiArIDMpCisKKyNkZWZpbmUgVFJDX1NDSEVEX1JVTlNUQVRFX0NIQU5HRSAgIChUUkNf
U0NIRURfTUlOICsgMSkKKyNkZWZpbmUgVFJDX1NDSEVEX0NPTlRJTlVFX1JVTk5JTkcgIChUUkNf
U0NIRURfTUlOICsgMikKKyNkZWZpbmUgVFJDX1NDSEVEX0RPTV9BREQgICAgICAgIChUUkNfU0NI
RURfVkVSQk9TRSArICAxKQorI2RlZmluZSBUUkNfU0NIRURfRE9NX1JFTSAgICAgICAgKFRSQ19T
Q0hFRF9WRVJCT1NFICsgIDIpCisjZGVmaW5lIFRSQ19TQ0hFRF9TTEVFUCAgICAgICAgICAoVFJD
X1NDSEVEX1ZFUkJPU0UgKyAgMykKKyNkZWZpbmUgVFJDX1NDSEVEX1dBS0UgICAgICAgICAgIChU
UkNfU0NIRURfVkVSQk9TRSArICA0KQorI2RlZmluZSBUUkNfU0NIRURfWUlFTEQgICAgICAgICAg
KFRSQ19TQ0hFRF9WRVJCT1NFICsgIDUpCisjZGVmaW5lIFRSQ19TQ0hFRF9CTE9DSyAgICAgICAg
ICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgNikKKyNkZWZpbmUgVFJDX1NDSEVEX1NIVVRET1dOICAg
ICAgIChUUkNfU0NIRURfVkVSQk9TRSArICA3KQorI2RlZmluZSBUUkNfU0NIRURfQ1RMICAgICAg
ICAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgIDgpCisjZGVmaW5lIFRSQ19TQ0hFRF9BREpET00g
ICAgICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAgOSkKKyNkZWZpbmUgVFJDX1NDSEVEX1NXSVRD
SCAgICAgICAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEwKQorI2RlZmluZSBUUkNfU0NIRURfU19U
SU1FUl9GTiAgICAgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTEpCisjZGVmaW5lIFRSQ19TQ0hFRF9U
X1RJTUVSX0ZOICAgICAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxMikKKyNkZWZpbmUgVFJDX1NDSEVE
X0RPTV9USU1FUl9GTiAgIChUUkNfU0NIRURfVkVSQk9TRSArIDEzKQorI2RlZmluZSBUUkNfU0NI
RURfU1dJVENIX0lORlBSRVYgKFRSQ19TQ0hFRF9WRVJCT1NFICsgMTQpCisjZGVmaW5lIFRSQ19T
Q0hFRF9TV0lUQ0hfSU5GTkVYVCAoVFJDX1NDSEVEX1ZFUkJPU0UgKyAxNSkKKyNkZWZpbmUgVFJD
X1NDSEVEX1NIVVRET1dOX0NPREUgIChUUkNfU0NIRURfVkVSQk9TRSArIDE2KQorCisjZGVmaW5l
IFRSQ19ET00wX0RPTV9BREQgICAgICAgICAoVFJDX0RPTTBfRE9NT1BTICsgMSkKKyNkZWZpbmUg
VFJDX0RPTTBfRE9NX1JFTSAgICAgICAgIChUUkNfRE9NMF9ET01PUFMgKyAyKQorCisjZGVmaW5l
IFRSQ19NRU1fUEFHRV9HUkFOVF9NQVAgICAgICAoVFJDX01FTSArIDEpCisjZGVmaW5lIFRSQ19N
RU1fUEFHRV9HUkFOVF9VTk1BUCAgICAoVFJDX01FTSArIDIpCisjZGVmaW5lIFRSQ19NRU1fUEFH
RV9HUkFOVF9UUkFOU0ZFUiAoVFJDX01FTSArIDMpCisjZGVmaW5lIFRSQ19NRU1fU0VUX1AyTV9F
TlRSWSAgICAgICAoVFJDX01FTSArIDQpCisjZGVmaW5lIFRSQ19NRU1fREVDUkVBU0VfUkVTRVJW
QVRJT04gKFRSQ19NRU0gKyA1KQorI2RlZmluZSBUUkNfTUVNX1BPRF9QT1BVTEFURSAgICAgICAg
KFRSQ19NRU0gKyAxNikKKyNkZWZpbmUgVFJDX01FTV9QT0RfWkVST19SRUNMQUlNICAgIChUUkNf
TUVNICsgMTcpCisjZGVmaW5lIFRSQ19NRU1fUE9EX1NVUEVSUEFHRV9TUExJTlRFUiAoVFJDX01F
TSArIDE4KQorCisjZGVmaW5lIFRSQ19QVl9FTlRSWSAgIDB4MDAyMDEwMDAgLyogSHlwZXJ2aXNv
ciBlbnRyeSBwb2ludHMgZm9yIFBWIGd1ZXN0cy4gKi8KKyNkZWZpbmUgVFJDX1BWX1NVQkNBTEwg
MHgwMDIwMjAwMCAvKiBTdWItY2FsbCBpbiBhIG11bHRpY2FsbCBoeXBlcmNhbGwgKi8KKworI2Rl
ZmluZSBUUkNfUFZfSFlQRVJDQUxMICAgICAgICAgICAgIChUUkNfUFZfRU5UUlkgKyAgMSkKKyNk
ZWZpbmUgVFJDX1BWX1RSQVAgICAgICAgICAgICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDMpCisj
ZGVmaW5lIFRSQ19QVl9QQUdFX0ZBVUxUICAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA0KQor
I2RlZmluZSBUUkNfUFZfRk9SQ0VEX0lOVkFMSURfT1AgICAgIChUUkNfUFZfRU5UUlkgKyAgNSkK
KyNkZWZpbmUgVFJDX1BWX0VNVUxBVEVfUFJJVk9QICAgICAgICAoVFJDX1BWX0VOVFJZICsgIDYp
CisjZGVmaW5lIFRSQ19QVl9FTVVMQVRFXzRHQiAgICAgICAgICAgKFRSQ19QVl9FTlRSWSArICA3
KQorI2RlZmluZSBUUkNfUFZfTUFUSF9TVEFURV9SRVNUT1JFICAgIChUUkNfUFZfRU5UUlkgKyAg
OCkKKyNkZWZpbmUgVFJDX1BWX1BBR0lOR19GSVhVUCAgICAgICAgICAoVFJDX1BWX0VOVFJZICsg
IDkpCisjZGVmaW5lIFRSQ19QVl9HRFRfTERUX01BUFBJTkdfRkFVTFQgKFRSQ19QVl9FTlRSWSAr
IDEwKQorI2RlZmluZSBUUkNfUFZfUFRXUl9FTVVMQVRJT04gICAgICAgIChUUkNfUFZfRU5UUlkg
KyAxMSkKKyNkZWZpbmUgVFJDX1BWX1BUV1JfRU1VTEFUSU9OX1BBRSAgICAoVFJDX1BWX0VOVFJZ
ICsgMTIpCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjIgICAgICAgICAgKFRSQ19QVl9FTlRS
WSArIDEzKQorI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1NVQkNBTEwgICAgIChUUkNfUFZfU1VC
Q0FMTCArIDE0KQorCisvKgorICogVFJDX1BWX0hZUEVSQ0FMTF9WMiBmb3JtYXQKKyAqCisgKiBP
bmx5IHNvbWUgb2YgdGhlIGh5cGVyY2FsbCBhcmd1bWVudCBhcmUgcmVjb3JkZWQuIEJpdCBmaWVs
ZHMgQTAgdG8KKyAqIEE1IGluIHRoZSBmaXJzdCBleHRyYSB3b3JkIGFyZSBzZXQgaWYgdGhlIGFy
Z3VtZW50IGlzIHByZXNlbnQgYW5kCisgKiB0aGUgYXJndW1lbnRzIHRoZW1zZWx2ZXMgYXJlIHBh
Y2tlZCBzZXF1ZW50aWFsbHkgaW4gdGhlIGZvbGxvd2luZworICogd29yZHMuCisgKgorICogVGhl
IFRSQ182NF9GTEFHIGJpdCBpcyBub3Qgc2V0IGZvciB0aGVzZSBldmVudHMgKGV2ZW4gaWYgdGhl
cmUgYXJlCisgKiA2NC1iaXQgYXJndW1lbnRzIGluIHRoZSByZWNvcmQpLgorICoKKyAqIFdvcmQK
KyAqIDAgICAgYml0IDMxIDMwfDI5IDI4fDI3IDI2fDI1IDI0fDIzIDIyfDIxIDIwfDE5IC4uLiAw
CisgKiAgICAgICAgICBBNSAgIHxBNCAgIHxBMyAgIHxBMiAgIHxBMSAgIHxBMCAgIHxIeXBlcmNh
bGwgb3AKKyAqIDEgICAgRmlyc3QgMzIgYml0IChvciBsb3cgd29yZCBvZiBmaXJzdCA2NCBiaXQp
IGFyZyBpbiByZWNvcmQKKyAqIDIgICAgU2Vjb25kIDMyIGJpdCAob3IgaGlnaCB3b3JkIG9mIGZp
cnN0IDY0IGJpdCkgYXJnIGluIHJlY29yZAorICogLi4uCisgKgorICogQTAtQTUgYml0ZmllbGQg
dmFsdWVzOgorICoKKyAqICAgMDBiICBBcmd1bWVudCBub3QgcHJlc2VudAorICogICAwMWIgIDMy
LWJpdCBhcmd1bWVudCBwcmVzZW50CisgKiAgIDEwYiAgNjQtYml0IGFyZ3VtZW50IHByZXNlbnQK
KyAqICAgMTFiICBSZXNlcnZlZAorICovCisjZGVmaW5lIFRSQ19QVl9IWVBFUkNBTExfVjJfQVJH
XzMyKGkpICgweDEgPDwgKDIwICsgMiooaSkpKQorI2RlZmluZSBUUkNfUFZfSFlQRVJDQUxMX1Yy
X0FSR182NChpKSAoMHgyIDw8ICgyMCArIDIqKGkpKSkKKyNkZWZpbmUgVFJDX1BWX0hZUEVSQ0FM
TF9WMl9BUkdfTUFTSyAgKDB4ZmZmMDAwMDApCisKKyNkZWZpbmUgVFJDX1NIQURPV19OT1RfU0hB
RE9XICAgICAgICAgICAgICAgICAoVFJDX1NIQURPVyArICAxKQorI2RlZmluZSBUUkNfU0hBRE9X
X0ZBU1RfUFJPUEFHQVRFICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDIpCisjZGVmaW5lIFRS
Q19TSEFET1dfRkFTVF9NTUlPICAgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAgMykKKyNk
ZWZpbmUgVFJDX1NIQURPV19GQUxTRV9GQVNUX1BBVEggICAgICAgICAgICAoVFJDX1NIQURPVyAr
ICA0KQorI2RlZmluZSBUUkNfU0hBRE9XX01NSU8gICAgICAgICAgICAgICAgICAgICAgIChUUkNf
U0hBRE9XICsgIDUpCisjZGVmaW5lIFRSQ19TSEFET1dfRklYVVAgICAgICAgICAgICAgICAgICAg
ICAgKFRSQ19TSEFET1cgKyAgNikKKyNkZWZpbmUgVFJDX1NIQURPV19ET01GX0RZSU5HICAgICAg
ICAgICAgICAgICAoVFJDX1NIQURPVyArICA3KQorI2RlZmluZSBUUkNfU0hBRE9XX0VNVUxBVEUg
ICAgICAgICAgICAgICAgICAgIChUUkNfU0hBRE9XICsgIDgpCisjZGVmaW5lIFRSQ19TSEFET1df
RU1VTEFURV9VTlNIQURPV19VU0VSICAgICAgKFRSQ19TSEFET1cgKyAgOSkKKyNkZWZpbmUgVFJD
X1NIQURPV19FTVVMQVRFX1VOU0hBRE9XX0VWVElOSiAgICAoVFJDX1NIQURPVyArIDEwKQorI2Rl
ZmluZSBUUkNfU0hBRE9XX0VNVUxBVEVfVU5TSEFET1dfVU5IQU5ETEVEIChUUkNfU0hBRE9XICsg
MTEpCisjZGVmaW5lIFRSQ19TSEFET1dfV1JNQVBfQkYgICAgICAgICAgICAgICAgICAgKFRSQ19T
SEFET1cgKyAxMikKKyNkZWZpbmUgVFJDX1NIQURPV19QUkVBTExPQ19VTlBJTiAgICAgICAgICAg
ICAoVFJDX1NIQURPVyArIDEzKQorI2RlZmluZSBUUkNfU0hBRE9XX1JFU1lOQ19GVUxMICAgICAg
ICAgICAgICAgIChUUkNfU0hBRE9XICsgMTQpCisjZGVmaW5lIFRSQ19TSEFET1dfUkVTWU5DX09O
TFkgICAgICAgICAgICAgICAgKFRSQ19TSEFET1cgKyAxNSkKKworLyogdHJhY2UgZXZlbnRzIHBl
ciBzdWJjbGFzcyAqLworI2RlZmluZSBUUkNfSFZNX05FU1RFREZMQUcgICAgICAoMHg0MDApCisj
ZGVmaW5lIFRSQ19IVk1fVk1FTlRSWSAgICAgICAgIChUUkNfSFZNX0VOVFJZRVhJVCArIDB4MDEp
CisjZGVmaW5lIFRSQ19IVk1fVk1FWElUICAgICAgICAgIChUUkNfSFZNX0VOVFJZRVhJVCArIDB4
MDIpCisjZGVmaW5lIFRSQ19IVk1fVk1FWElUNjQgICAgICAgIChUUkNfSFZNX0VOVFJZRVhJVCAr
IFRSQ182NF9GTEFHICsgMHgwMikKKyNkZWZpbmUgVFJDX0hWTV9QRl9YRU4gICAgICAgICAgKFRS
Q19IVk1fSEFORExFUiArIDB4MDEpCisjZGVmaW5lIFRSQ19IVk1fUEZfWEVONjQgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyBUUkNfNjRfRkxBRyArIDB4MDEpCisjZGVmaW5lIFRSQ19IVk1fUEZf
SU5KRUNUICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDAyKQorI2RlZmluZSBUUkNfSFZNX1BG
X0lOSkVDVDY0ICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDAyKQorI2Rl
ZmluZSBUUkNfSFZNX0lOSl9FWEMgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwMykKKyNk
ZWZpbmUgVFJDX0hWTV9JTkpfVklSUSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDQpCisj
ZGVmaW5lIFRSQ19IVk1fUkVJTkpfVklSUSAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA1KQor
I2RlZmluZSBUUkNfSFZNX0lPX1JFQUQgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwNikK
KyNkZWZpbmUgVFJDX0hWTV9JT19XUklURSAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MDcp
CisjZGVmaW5lIFRSQ19IVk1fQ1JfUkVBRCAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDA4
KQorI2RlZmluZSBUUkNfSFZNX0NSX1JFQUQ2NCAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJD
XzY0X0ZMQUcgKyAweDA4KQorI2RlZmluZSBUUkNfSFZNX0NSX1dSSVRFICAgICAgICAoVFJDX0hW
TV9IQU5ETEVSICsgMHgwOSkKKyNkZWZpbmUgVFJDX0hWTV9DUl9XUklURTY0ICAgICAgKFRSQ19I
Vk1fSEFORExFUiArIFRSQ182NF9GTEFHICsgMHgwOSkKKyNkZWZpbmUgVFJDX0hWTV9EUl9SRUFE
ICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEEpCisjZGVmaW5lIFRSQ19IVk1fRFJfV1JJ
VEUgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBCKQorI2RlZmluZSBUUkNfSFZNX01TUl9S
RUFEICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwQykKKyNkZWZpbmUgVFJDX0hWTV9NU1Jf
V1JJVEUgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MEQpCisjZGVmaW5lIFRSQ19IVk1fQ1BV
SUQgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDBFKQorI2RlZmluZSBUUkNfSFZNX0lO
VFIgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgwRikKKyNkZWZpbmUgVFJDX0hWTV9O
TUkgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTApCisjZGVmaW5lIFRSQ19IVk1f
U01JICAgICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDExKQorI2RlZmluZSBUUkNfSFZN
X1ZNTUNBTEwgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgxMikKKyNkZWZpbmUgVFJDX0hW
TV9ITFQgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MTMpCisjZGVmaW5lIFRSQ19I
Vk1fSU5WTFBHICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDE0KQorI2RlZmluZSBUUkNf
SFZNX0lOVkxQRzY0ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgVFJDXzY0X0ZMQUcgKyAweDE0
KQorI2RlZmluZSBUUkNfSFZNX01DRSAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgx
NSkKKyNkZWZpbmUgVFJDX0hWTV9JT1BPUlRfUkVBRCAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4
MTYpCisjZGVmaW5lIFRSQ19IVk1fSU9NRU1fUkVBRCAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw
eDE3KQorI2RlZmluZSBUUkNfSFZNX0NMVFMgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsg
MHgxOCkKKyNkZWZpbmUgVFJDX0hWTV9MTVNXICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiAr
IDB4MTkpCisjZGVmaW5lIFRSQ19IVk1fTE1TVzY0ICAgICAgICAgIChUUkNfSFZNX0hBTkRMRVIg
KyBUUkNfNjRfRkxBRyArIDB4MTkpCisjZGVmaW5lIFRSQ19IVk1fUkRUU0MgICAgICAgICAgIChU
UkNfSFZNX0hBTkRMRVIgKyAweDFhKQorI2RlZmluZSBUUkNfSFZNX0lOVFJfV0lORE9XICAgICAo
VFJDX0hWTV9IQU5ETEVSICsgMHgyMCkKKyNkZWZpbmUgVFJDX0hWTV9OUEYgICAgICAgICAgICAg
KFRSQ19IVk1fSEFORExFUiArIDB4MjEpCisjZGVmaW5lIFRSQ19IVk1fUkVBTE1PREVfRU1VTEFU
RSAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMikKKyNkZWZpbmUgVFJDX0hWTV9UUkFQICAgICAgICAg
ICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIzKQorI2RlZmluZSBUUkNfSFZNX1RSQVBfREVCVUcg
ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjQpCisjZGVmaW5lIFRSQ19IVk1fVkxBUElDICAg
ICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNSkKKworI2RlZmluZSBUUkNfSFZNX0lPUE9S
VF9XUklURSAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMTYpCisjZGVmaW5lIFRSQ19IVk1fSU9N
RU1fV1JJVEUgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNykKKworLyogVHJhY2UgZXZlbnRz
IGZvciBlbXVsYXRlZCBkZXZpY2VzICovCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9IUEVUX1NUQVJU
X1RJTUVSICAoVFJDX0hWTV9FTVVMICsgMHgxKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElUX1NU
QVJUX1RJTUVSICAgKFRSQ19IVk1fRU1VTCArIDB4MikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1JU
Q19TVEFSVF9USU1FUiAgIChUUkNfSFZNX0VNVUwgKyAweDMpCisjZGVmaW5lIFRSQ19IVk1fRU1V
TF9MQVBJQ19TVEFSVF9USU1FUiAoVFJDX0hWTV9FTVVMICsgMHg0KQorI2RlZmluZSBUUkNfSFZN
X0VNVUxfSFBFVF9TVE9QX1RJTUVSICAgKFRSQ19IVk1fRU1VTCArIDB4NSkKKyNkZWZpbmUgVFJD
X0hWTV9FTVVMX1BJVF9TVE9QX1RJTUVSICAgIChUUkNfSFZNX0VNVUwgKyAweDYpCisjZGVmaW5l
IFRSQ19IVk1fRU1VTF9SVENfU1RPUF9USU1FUiAgICAoVFJDX0hWTV9FTVVMICsgMHg3KQorI2Rl
ZmluZSBUUkNfSFZNX0VNVUxfTEFQSUNfU1RPUF9USU1FUiAgKFRSQ19IVk1fRU1VTCArIDB4OCkK
KyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJVF9USU1FUl9DQiAgICAgIChUUkNfSFZNX0VNVUwgKyAw
eDkpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9MQVBJQ19USU1FUl9DQiAgICAoVFJDX0hWTV9FTVVM
ICsgMHhBKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX0lOVF9PVVRQVVQgICAgKFRSQ19IVk1f
RU1VTCArIDB4QikKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19LSUNLICAgICAgICAgIChUUkNf
SFZNX0VNVUwgKyAweEMpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfSU5UQUNLICAgICAgICAo
VFJDX0hWTV9FTVVMICsgMHhEKQorI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX1BPU0VER0UgICAg
ICAgKFRSQ19IVk1fRU1VTCArIDB4RSkKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX1BJQ19ORUdFREdF
ICAgICAgIChUUkNfSFZNX0VNVUwgKyAweEYpCisjZGVmaW5lIFRSQ19IVk1fRU1VTF9QSUNfUEVO
RF9JUlFfQ0FMTCAoVFJDX0hWTV9FTVVMICsgMHgxMCkKKyNkZWZpbmUgVFJDX0hWTV9FTVVMX0xB
UElDX1BJQ19JTlRSICAgIChUUkNfSFZNX0VNVUwgKyAweDExKQorCisvKiB0cmFjZSBldmVudHMg
Zm9yIHBlciBjbGFzcyAqLworI2RlZmluZSBUUkNfUE1fRlJFUV9DSEFOR0UgICAgICAoVFJDX0hX
X1BNICsgMHgwMSkKKyNkZWZpbmUgVFJDX1BNX0lETEVfRU5UUlkgICAgICAgKFRSQ19IV19QTSAr
IDB4MDIpCisjZGVmaW5lIFRSQ19QTV9JRExFX0VYSVQgICAgICAgIChUUkNfSFdfUE0gKyAweDAz
KQorCisvKiBUcmFjZSBldmVudHMgZm9yIElSUXMgKi8KKyNkZWZpbmUgVFJDX0hXX0lSUV9NT1ZF
X0NMRUFOVVBfREVMQVkgKFRSQ19IV19JUlEgKyAweDEpCisjZGVmaW5lIFRSQ19IV19JUlFfTU9W
RV9DTEVBTlVQICAgICAgIChUUkNfSFdfSVJRICsgMHgyKQorI2RlZmluZSBUUkNfSFdfSVJRX0JJ
TkRfVkVDVE9SICAgICAgICAoVFJDX0hXX0lSUSArIDB4MykKKyNkZWZpbmUgVFJDX0hXX0lSUV9D
TEVBUl9WRUNUT1IgICAgICAgKFRSQ19IV19JUlEgKyAweDQpCisjZGVmaW5lIFRSQ19IV19JUlFf
TU9WRV9GSU5JU0ggICAgICAgIChUUkNfSFdfSVJRICsgMHg1KQorI2RlZmluZSBUUkNfSFdfSVJR
X0FTU0lHTl9WRUNUT1IgICAgICAoVFJDX0hXX0lSUSArIDB4NikKKyNkZWZpbmUgVFJDX0hXX0lS
UV9VTk1BUFBFRF9WRUNUT1IgICAgKFRSQ19IV19JUlEgKyAweDcpCisjZGVmaW5lIFRSQ19IV19J
UlFfSEFORExFRCAgICAgICAgICAgIChUUkNfSFdfSVJRICsgMHg4KQorCisvKgorICogRXZlbnQg
RmxhZ3MKKyAqCisgKiBTb21lIGV2ZW50cyAoZS5nLCBUUkNfUFZfVFJBUCBhbmQgVFJDX0hWTV9J
T01FTV9SRUFEKSBoYXZlIG11bHRpcGxlCisgKiByZWNvcmQgZm9ybWF0cy4gIFRoZXNlIGV2ZW50
IGZsYWdzIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlCisgKiBkaWZmZXJlbnQgZm9ybWF0cy4KKyAq
LworI2RlZmluZSBUUkNfNjRfRkxBRyAweDEwMCAvKiBBZGRyZXNzZXMgYXJlIDY0IGJpdHMgKGlu
c3RlYWQgb2YgMzIgYml0cykgKi8KKworLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyBhIHNp
bmdsZSB0cmFjZSBidWZmZXIgcmVjb3JkLiAqLworc3RydWN0IHRfcmVjIHsKKyAgICB1aW50MzJf
dCBldmVudDoyODsKKyAgICB1aW50MzJfdCBleHRyYV91MzI6MzsgICAgICAgICAvKiAjIGVudHJp
ZXMgaW4gdHJhaWxpbmcgZXh0cmFfdTMyW10gYXJyYXkgKi8KKyAgICB1aW50MzJfdCBjeWNsZXNf
aW5jbHVkZWQ6MTsgICAvKiB1LmN5Y2xlcyBvciB1Lm5vX2N5Y2xlcz8gKi8KKyAgICB1bmlvbiB7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBjeWNsZXNfbG8sIGN5Y2xl
c19oaTsgLyogY3ljbGUgY291bnRlciB0aW1lc3RhbXAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90
IGV4dHJhX3UzMls3XTsgICAgICAgICAvKiBldmVudCBkYXRhIGl0ZW1zICovCisgICAgICAgIH0g
Y3ljbGVzOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDMyX3QgZXh0cmFfdTMy
WzddOyAgICAgICAgIC8qIGV2ZW50IGRhdGEgaXRlbXMgKi8KKyAgICAgICAgfSBub2N5Y2xlczsK
KyAgICB9IHU7Cit9OworCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIG1ldGFk
YXRhIGZvciBhIHNpbmdsZSB0cmFjZSBidWZmZXIuICBUaGUgaGVhZAorICogZmllbGQsIGluZGV4
ZXMgaW50byBhbiBhcnJheSBvZiBzdHJ1Y3QgdF9yZWMncy4KKyAqLworc3RydWN0IHRfYnVmIHsK
KyAgICAvKiBBc3N1bWUgdGhlIGRhdGEgYnVmZmVyIHNpemUgaXMgWC4gIFggaXMgZ2VuZXJhbGx5
IG5vdCBhIHBvd2VyIG9mIDIuCisgICAgICogQ09OUyBhbmQgUFJPRCBhcmUgaW5jcmVtZW50ZWQg
bW9kdWxvICgyKlgpOgorICAgICAqICAgICAwIDw9IGNvbnMgPCAyKlgKKyAgICAgKiAgICAgMCA8
PSBwcm9kIDwgMipYCisgICAgICogVGhpcyBpcyBkb25lIGJlY2F1c2UgYWRkaXRpb24gbW9kdWxv
IFggYnJlYWtzIGF0IDJeMzIgd2hlbiBYIGlzIG5vdCBhCisgICAgICogcG93ZXIgb2YgMjoKKyAg
ICAgKiAgICAgKCgoMl4zMiAtIDEpICUgWCkgKyAxKSAlIFggIT0gKDJeMzIpICUgWAorICAgICAq
LworICAgIHVpbnQzMl90IGNvbnM7ICAgLyogT2Zmc2V0IG9mIG5leHQgaXRlbSB0byBiZSBjb25z
dW1lZCBieSBjb250cm9sIHRvb2xzLiAqLworICAgIHVpbnQzMl90IHByb2Q7ICAgLyogT2Zmc2V0
IG9mIG5leHQgaXRlbSB0byBiZSBwcm9kdWNlZCBieSBYZW4uICAgICAgICAgICAqLworICAgIC8q
ICBSZWNvcmRzIGZvbGxvdyBpbW1lZGlhdGVseSBhZnRlciB0aGUgbWV0YS1kYXRhIGhlYWRlci4g
ICAgKi8KK307CisKKy8qIFN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgTUZOcyB0byB0aGUgdHJhY2Ug
YnVmZmVycyBiYWNrIHRvIHRyYWNlIGNvbnN1bWVycy4KKyAqIE9mZnNldCBpcyBhbiBvZmZzZXQg
aW50byB0aGUgbWFwcGVkIHN0cnVjdHVyZSB3aGVyZSB0aGUgbWZuIGxpc3Qgd2lsbCBiZSBoZWxk
LgorICogTUZOcyB3aWxsIGJlIGF0ICgoVUxPTkdfUFRSICopKHRfaW5mbykpKyh0X2luZm8tPmNw
dV9vZmZzZXRbY3B1XSkuCisgKi8KK3N0cnVjdCB0X2luZm8geworICAgIHVpbnQxNl90IHRidWZf
c2l6ZTsgLyogU2l6ZSBpbiBwYWdlcyBvZiBlYWNoIHRyYWNlIGJ1ZmZlciAqLworICAgIHVpbnQx
Nl90IG1mbl9vZmZzZXRbXTsgIC8qIE9mZnNldCB3aXRoaW4gdF9pbmZvIHN0cnVjdHVyZSBvZiB0
aGUgcGFnZSBsaXN0IHBlciBjcHUgKi8KKyAgICAvKiBNRk4gbGlzdHMgaW1tZWRpYXRlbHkgYWZ0
ZXIgdGhlIGhlYWRlciAqLworfTsKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19UUkFDRV9IX18g
Ki8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHls
ZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVu
dC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9w
dWJsaWMveGVuLWNvbXBhdC5oIGIvaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZWVhMGUyCi0tLSAvZGV2L251bGwKKysr
IGIvaW5jbHVkZS94ZW4vcHVibGljL3hlbi1jb21wYXQuaApAQCAtMCwwICsxLDQ0IEBACisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisgKiB4ZW4tY29tcGF0LmgKKyAqCisgKiBHdWVzdCBPUyBpbnRl
cmZhY2UgdG8gWGVuLiAgQ29tcGF0aWJpbGl0eSBsYXllci4KKyAqCisgKiBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdo
dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29w
eXJpZ2h0IChjKSAyMDA2LCBDaHJpc3RpYW4gTGltcGFjaAorICovCisKKyNpZm5kZWYgX19YRU5f
UFVCTElDX1hFTl9DT01QQVRfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5fQ09NUEFUX0hf
XworCisjZGVmaW5lIF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0VfVkVSU0lPTl9fIDB4MDAwNDA3MDAK
KworI2lmIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKQorLyogWGVu
IGlzIGJ1aWx0IHdpdGggbWF0Y2hpbmcgaGVhZGVycyBhbmQgaW1wbGVtZW50cyB0aGUgbGF0ZXN0
IGludGVyZmFjZS4gKi8KKyNkZWZpbmUgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyBfX1hFTl9M
QVRFU1RfSU5URVJGQUNFX1ZFUlNJT05fXworI2VsaWYgIWRlZmluZWQoX19YRU5fSU5URVJGQUNF
X1ZFUlNJT05fXykKKy8qIEd1ZXN0cyB3aGljaCBkbyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gZ2V0
IHRoZSBsZWdhY3kgaW50ZXJmYWNlLiAqLworI2RlZmluZSBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lP
Tl9fIDB4MDAwMDAwMDAKKyNlbmRpZgorCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA+
IF9fWEVOX0xBVEVTVF9JTlRFUkZBQ0VfVkVSU0lPTl9fCisjZXJyb3IgIlRoZXNlIGhlYWRlciBm
aWxlcyBkbyBub3Qgc3VwcG9ydCB0aGUgcmVxdWVzdGVkIGludGVyZmFjZSB2ZXJzaW9uLiIKKyNl
bmRpZgorCisjZW5kaWYgLyogX19YRU5fUFVCTElDX1hFTl9DT01QQVRfSF9fICovCmRpZmYgLS1n
aXQgYS9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLmggYi9pbmNsdWRlL3hlbi9wdWJsaWMveGVuLmgK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjA1N2I1MgotLS0gL2Rldi9udWxs
CisrKyBiL2luY2x1ZGUveGVuL3B1YmxpYy94ZW4uaApAQCAtMCwwICsxLDk5NSBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorICogeGVuLmgKKyAqCisgKiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8g
WGVuLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICog
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElO
IFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQsIEsgQSBGcmFzZXIKKyAq
LworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19YRU5fSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19Y
RU5fSF9fCisKKyNpbmNsdWRlICJ4ZW4tY29tcGF0LmgiCisKKyNpZiBkZWZpbmVkKF9faTM4Nl9f
KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisjaW5jbHVkZSAiYXJjaC14ODYveGVuLmgiCisjZWxp
ZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKQorI2luY2x1ZGUgImFy
Y2gtYXJtLmgiCisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCisjZW5k
aWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIEd1ZXN0IGhhbmRsZXMgZm9yIHByaW1pdGl2
ZSBDIHR5cGVzLiAqLworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoY2hhcik7CitfX0RFRklORV9Y
RU5fR1VFU1RfSEFORExFKHVjaGFyLCB1bnNpZ25lZCBjaGFyKTsKK0RFRklORV9YRU5fR1VFU1Rf
SEFORExFKGludCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQsICB1bnNpZ25lZCBp
bnQpOworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDQwMzAwCitERUZJTkVf
WEVOX0dVRVNUX0hBTkRMRShMT05HX1BUUik7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVs
b25nLCBVTE9OR19QVFIpOworI2VuZGlmCitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2b2lkKTsK
KworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDY0X3QpOworREVGSU5FX1hFTl9HVUVTVF9I
QU5ETEUoeGVuX3Bmbl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsK
KworLyogVHVybiBhIHBsYWluIG51bWJlciBpbnRvIGEgQyB1bnNpZ25lZCAoTE9OR19QVFIpIGNv
bnN0YW50LiAqLworI2RlZmluZSBfX3hlbl9ta191aW50KHgpICB4ICMjIFUKKyNkZWZpbmUgX194
ZW5fbWtfdWxvbmcoeCkgeCAjIyBVTAorI2RlZmluZSB4ZW5fbWtfdWludCh4KSAgICBfX3hlbl9t
a191aW50KHgpCisjZGVmaW5lIHhlbl9ta191bG9uZyh4KSAgIF9feGVuX21rX3Vsb25nKHgpCisK
KyNlbHNlCisKKy8qIEluIGFzc2VtYmx5IGNvZGUgd2UgY2Fubm90IHVzZSBDIG51bWVyaWMgY29u
c3RhbnQgc3VmZml4ZXMuICovCisjZGVmaW5lIHhlbl9ta191aW50KHgpICB4CisjZGVmaW5lIHhl
bl9ta191bG9uZyh4KSB4CisKKyNlbmRpZgorCisvKgorICogSFlQRVJDQUxMUworICovCisKKy8q
IGBpbmNvbnRlbnRzIDEwMCBoY2FsbHMgTGlzdCBvZiBoeXBlcmNhbGxzCisgKiBgIGVudW0gaHlw
ZXJjYWxsX251bSB7IC8vIF9fSFlQRVJWSVNPUl8qID0+IEhZUEVSVklTT1JfKigpCisgKi8KKwor
I2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3RyYXBfdGFibGUgICAgICAgIDAKKyNkZWZpbmUgX19I
WVBFUlZJU09SX21tdV91cGRhdGUgICAgICAgICAgICAxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9z
ZXRfZ2R0ICAgICAgICAgICAgICAgMgorI2RlZmluZSBfX0hZUEVSVklTT1Jfc3RhY2tfc3dpdGNo
ICAgICAgICAgIDMKKyNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9jYWxsYmFja3MgICAgICAgICA0
CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9mcHVfdGFza3N3aXRjaCAgICAgICAgNQorI2RlZmluZSBf
X0hZUEVSVklTT1Jfc2NoZWRfb3BfY29tcGF0ICAgICAgIDYgLyogY29tcGF0IHNpbmNlIDB4MDAw
MzAxMDEgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX3BsYXRmb3JtX29wICAgICAgICAgICA3Cisj
ZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfZGVidWdyZWcgICAgICAgICAgOAorI2RlZmluZSBfX0hZ
UEVSVklTT1JfZ2V0X2RlYnVncmVnICAgICAgICAgIDkKKyNkZWZpbmUgX19IWVBFUlZJU09SX3Vw
ZGF0ZV9kZXNjcmlwdG9yICAgIDEwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9tZW1vcnlfb3AgICAg
ICAgICAgICAxMgorI2RlZmluZSBfX0hZUEVSVklTT1JfbXVsdGljYWxsICAgICAgICAgICAgMTMK
KyNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nICAgIDE0CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9zZXRfdGltZXJfb3AgICAgICAgICAxNQorI2RlZmluZSBfX0hZUEVSVklTT1Jf
ZXZlbnRfY2hhbm5lbF9vcF9jb21wYXQgMTYgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8K
KyNkZWZpbmUgX19IWVBFUlZJU09SX3hlbl92ZXJzaW9uICAgICAgICAgIDE3CisjZGVmaW5lIF9f
SFlQRVJWSVNPUl9jb25zb2xlX2lvICAgICAgICAgICAxOAorI2RlZmluZSBfX0hZUEVSVklTT1Jf
cGh5c2Rldl9vcF9jb21wYXQgICAgMTkgLyogY29tcGF0IHNpbmNlIDB4MDAwMzAyMDIgKi8KKyNk
ZWZpbmUgX19IWVBFUlZJU09SX2dyYW50X3RhYmxlX29wICAgICAgIDIwCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl92bV9hc3Npc3QgICAgICAgICAgICAyMQorI2RlZmluZSBfX0hZUEVSVklTT1JfdXBk
YXRlX3ZhX21hcHBpbmdfb3RoZXJkb21haW4gMjIKKyNkZWZpbmUgX19IWVBFUlZJU09SX2lyZXQg
ICAgICAgICAgICAgICAgIDIzIC8qIHg4NiBvbmx5ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92
Y3B1X29wICAgICAgICAgICAgICAyNAorI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X3NlZ21lbnRf
YmFzZSAgICAgMjUgLyogeDg2LzY0IG9ubHkgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX21tdWV4
dF9vcCAgICAgICAgICAgIDI2CisjZGVmaW5lIF9fSFlQRVJWSVNPUl94c21fb3AgICAgICAgICAg
ICAgICAyNworI2RlZmluZSBfX0hZUEVSVklTT1Jfbm1pX29wICAgICAgICAgICAgICAgMjgKKyNk
ZWZpbmUgX19IWVBFUlZJU09SX3NjaGVkX29wICAgICAgICAgICAgIDI5CisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9jYWxsYmFja19vcCAgICAgICAgICAzMAorI2RlZmluZSBfX0hZUEVSVklTT1JfeGVu
b3Byb2Zfb3AgICAgICAgICAgMzEKKyNkZWZpbmUgX19IWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxf
b3AgICAgIDMyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wICAgICAgICAgICAzMwor
I2RlZmluZSBfX0hZUEVSVklTT1JfaHZtX29wICAgICAgICAgICAgICAgMzQKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3N5c2N0bCAgICAgICAgICAgICAgIDM1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9k
b21jdGwgICAgICAgICAgICAgICAzNgorI2RlZmluZSBfX0hZUEVSVklTT1Jfa2V4ZWNfb3AgICAg
ICAgICAgICAgMzcKKyNkZWZpbmUgX19IWVBFUlZJU09SX3RtZW1fb3AgICAgICAgICAgICAgIDM4
CisjZGVmaW5lIF9fSFlQRVJWSVNPUl94Y19yZXNlcnZlZF9vcCAgICAgICAzOSAvKiByZXNlcnZl
ZCBmb3IgWGVuQ2xpZW50ICovCisjZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5wbXVfb3AgICAgICAg
ICAgICA0MAorCisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25z
LiAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8wICAgICAgICAgICAgICAgNDgKKyNkZWZp
bmUgX19IWVBFUlZJU09SX2FyY2hfMSAgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIF9fSFlQRVJW
SVNPUl9hcmNoXzIgICAgICAgICAgICAgICA1MAorI2RlZmluZSBfX0hZUEVSVklTT1JfYXJjaF8z
ICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgX19IWVBFUlZJU09SX2FyY2hfNCAgICAgICAgICAg
ICAgIDUyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzUgICAgICAgICAgICAgICA1MworI2Rl
ZmluZSBfX0hZUEVSVklTT1JfYXJjaF82ICAgICAgICAgICAgICAgNTQKKyNkZWZpbmUgX19IWVBF
UlZJU09SX2FyY2hfNyAgICAgICAgICAgICAgIDU1CisKKy8qIGAgfSAqLworCisvKgorICogSFlQ
RVJDQUxMIENPTVBBVElCSUxJVFkuCisgKi8KKworLyogTmV3IHNjaGVkX29wIGh5cGVyY2FsbCBp
bnRyb2R1Y2VkIGluIDB4MDAwMzAxMDEuICovCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05f
XyA8IDB4MDAwMzAxMDEKKyN1bmRlZiBfX0hZUEVSVklTT1Jfc2NoZWRfb3AKKyNkZWZpbmUgX19I
WVBFUlZJU09SX3NjaGVkX29wIF9fSFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQKKyNlbmRpZgor
CisvKiBOZXcgZXZlbnQtY2hhbm5lbCBhbmQgcGh5c2RldiBoeXBlcmNhbGxzIGludHJvZHVjZWQg
aW4gMHgwMDAzMDIwMi4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAz
MDIwMgorI3VuZGVmIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wCisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9ldmVudF9jaGFubmVsX29wIF9fSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wX2Nv
bXBhdAorI3VuZGVmIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wCisjZGVmaW5lIF9fSFlQRVJWSVNP
Ul9waHlzZGV2X29wIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wX2NvbXBhdAorI2VuZGlmCisKKy8q
IE5ldyBwbGF0Zm9ybV9vcCBoeXBlcmNhbGwgaW50cm9kdWNlZCBpbiAweDAwMDMwMjA0LiAqLwor
I2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDMwMjA0CisjZGVmaW5lIF9fSFlQ
RVJWSVNPUl9kb20wX29wIF9fSFlQRVJWSVNPUl9wbGF0Zm9ybV9vcAorI2VuZGlmCisKKy8qCisg
KiBWSVJUVUFMIElOVEVSUlVQVFMKKyAqCisgKiBWaXJ0dWFsIGludGVycnVwdHMgdGhhdCBhIGd1
ZXN0IE9TIG1heSByZWNlaXZlIGZyb20gWGVuLgorICoKKyAqIEluIHRoZSBzaWRlIGNvbW1lbnRz
LCAnVi4nIGRlbm90ZXMgYSBwZXItVkNQVSBWSVJRIHdoaWxlICdHLicgZGVub3RlcyBhCisgKiBn
bG9iYWwgVklSUS4gVGhlIGZvcm1lciBjYW4gYmUgYm91bmQgb25jZSBwZXIgVkNQVSBhbmQgY2Fu
bm90IGJlIHJlLWJvdW5kLgorICogVGhlIGxhdHRlciBjYW4gYmUgYWxsb2NhdGVkIG9ubHkgb25j
ZSBwZXIgZ3Vlc3Q6IHRoZXkgbXVzdCBpbml0aWFsbHkgYmUKKyAqIGFsbG9jYXRlZCB0byBWQ1BV
MCBidXQgY2FuIHN1YnNlcXVlbnRseSBiZSByZS1ib3VuZC4KKyAqLworLyogYCBlbnVtIHZpcnEg
eyAqLworI2RlZmluZSBWSVJRX1RJTUVSICAgICAgMCAgLyogVi4gVGltZWJhc2UgdXBkYXRlLCBh
bmQvb3IgcmVxdWVzdGVkIHRpbWVvdXQuICAqLworI2RlZmluZSBWSVJRX0RFQlVHICAgICAgMSAg
LyogVi4gUmVxdWVzdCBndWVzdCB0byBkdW1wIGRlYnVnIGluZm8uICAgICAgICAgICAqLworI2Rl
ZmluZSBWSVJRX0NPTlNPTEUgICAgMiAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVkIG9uIGVt
ZXJnZW5jeSBjb25zb2xlLiAqLworI2RlZmluZSBWSVJRX0RPTV9FWEMgICAgMyAgLyogRy4gKERP
TTApIEV4Y2VwdGlvbmFsIGV2ZW50IGZvciBzb21lIGRvbWFpbi4gICAqLworI2RlZmluZSBWSVJR
X1RCVUYgICAgICAgNCAgLyogRy4gKERPTTApIFRyYWNlIGJ1ZmZlciBoYXMgcmVjb3JkcyBhdmFp
bGFibGUuICAqLworI2RlZmluZSBWSVJRX0RFQlVHR0VSICAgNiAgLyogRy4gKERPTTApIEEgZG9t
YWluIGhhcyBwYXVzZWQgZm9yIGRlYnVnZ2luZy4gICAqLworI2RlZmluZSBWSVJRX1hFTk9QUk9G
ICAgNyAgLyogVi4gWGVuT3Byb2ZpbGUgaW50ZXJydXB0OiBuZXcgc2FtcGxlIGF2YWlsYWJsZSAq
LworI2RlZmluZSBWSVJRX0NPTl9SSU5HICAgOCAgLyogRy4gKERPTTApIEJ5dGVzIHJlY2VpdmVk
IG9uIGNvbnNvbGUgICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1BDUFVfU1RBVEUgOSAgLyog
Ry4gKERPTTApIFBDUFUgc3RhdGUgY2hhbmdlZCAgICAgICAgICAgICAgICAgICAqLworI2RlZmlu
ZSBWSVJRX01FTV9FVkVOVCAgMTAgLyogRy4gKERPTTApIEEgbWVtb3J5IGV2ZW50IGhhcyBvY2N1
cmVkICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX1hDX1JFU0VSVkVEIDExIC8qIEcuIFJlc2Vy
dmVkIGZvciBYZW5DbGllbnQgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBWSVJRX0VO
T01FTSAgICAgMTIgLyogRy4gKERPTTApIExvdyBvbiBoZWFwIG1lbW9yeSAgICAgICAqLworI2Rl
ZmluZSBWSVJRX1hFTlBNVSAgICAgMTMgLyogVi4gIFBNQyBpbnRlcnJ1cHQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworCisvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgVklSUSBkZWZp
bml0aW9ucy4gKi8KKyNkZWZpbmUgVklSUV9BUkNIXzAgICAgMTYKKyNkZWZpbmUgVklSUV9BUkNI
XzEgICAgMTcKKyNkZWZpbmUgVklSUV9BUkNIXzIgICAgMTgKKyNkZWZpbmUgVklSUV9BUkNIXzMg
ICAgMTkKKyNkZWZpbmUgVklSUV9BUkNIXzQgICAgMjAKKyNkZWZpbmUgVklSUV9BUkNIXzUgICAg
MjEKKyNkZWZpbmUgVklSUV9BUkNIXzYgICAgMjIKKyNkZWZpbmUgVklSUV9BUkNIXzcgICAgMjMK
Ky8qIGAgfSAqLworCisjZGVmaW5lIE5SX1ZJUlFTICAgICAgIDI0CisKKy8qCisgKiBgIGVudW0g
bmVnX2Vycm5vdmFsCisgKiBgIEhZUEVSVklTT1JfbW11X3VwZGF0ZShjb25zdCBzdHJ1Y3QgbW11
X3VwZGF0ZSByZXFzW10sCisgKiBgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb3Vu
dCwgdW5zaWduZWQgKmRvbmVfb3V0LAorICogYCAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZm9yZWlnbmRvbSkKKyAqIGAKKyAqIEByZXFzIGlzIGFuIGFycmF5IG9mIG1tdV91cGRhdGVf
dCBzdHJ1Y3R1cmVzICgocHRyLCB2YWwpIHBhaXJzKS4KKyAqIEBjb3VudCBpcyB0aGUgbGVuZ3Ro
IG9mIHRoZSBhYm92ZSBhcnJheS4KKyAqIEBwZG9uZSBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGlu
ZGljYXRpbmcgbnVtYmVyIG9mIGNvbXBsZXRlZCBvcGVyYXRpb25zCisgKiBAZm9yZWlnbmRvbVsx
NTowXTogRkQsIHRoZSBleHBlY3RlZCBvd25lciBvZiBkYXRhIHBhZ2VzIHJlZmVyZW5jZWQgaW4g
dGhpcworICogICAgICAgICAgICAgICAgICAgIGh5cGVyY2FsbCBpbnZvY2F0aW9uLiBDYW4gYmUg
RE9NSURfU0VMRi4KKyAqIEBmb3JlaWduZG9tWzMxOjE2XTogUEZELCB0aGUgZXhwZWN0ZWQgb3du
ZXIgb2YgcGFnZXRhYmxlIHBhZ2VzIHJlZmVyZW5jZWQKKyAqICAgICAgICAgICAgICAgICAgICAg
aW4gdGhpcyBoeXBlcmNhbGwgaW52b2NhdGlvbi4gVGhlIHZhbHVlIG9mIHRoaXMgZmllbGQKKyAq
ICAgICAgICAgICAgICAgICAgICAgKHgpIGVuY29kZXMgdGhlIFBGRCBhcyBmb2xsb3dzOgorICog
ICAgICAgICAgICAgICAgICAgICB4ID09IDAgPT4gUEZEID09IERPTUlEX1NFTEYKKyAqICAgICAg
ICAgICAgICAgICAgICAgeCAhPSAwID0+IFBGRCA9PSB4IC0gMQorICoKKyAqIFN1Yi1jb21tYW5k
czogcHRyWzE6MF0gc3BlY2lmaWVzIHRoZSBhcHByb3ByaWF0ZSBNTVVfKiBjb21tYW5kLgorICog
LS0tLS0tLS0tLS0tLQorICogcHRyWzE6MF0gPT0gTU1VX05PUk1BTF9QVF9VUERBVEU6CisgKiBV
cGRhdGVzIGFuIGVudHJ5IGluIGEgcGFnZSB0YWJsZSBiZWxvbmdpbmcgdG8gUEZELiBJZiB1cGRh
dGluZyBhbiBMMSB0YWJsZSwKKyAqIGFuZCB0aGUgbmV3IHRhYmxlIGVudHJ5IGlzIHZhbGlkL3By
ZXNlbnQsIHRoZSBtYXBwZWQgZnJhbWUgbXVzdCBiZWxvbmcgdG8KKyAqIEZELiBJZiBhdHRlbXB0
aW5nIHRvIG1hcCBhbiBJL08gcGFnZSB0aGVuIHRoZSBjYWxsZXIgYXNzdW1lcyB0aGUgcHJpdmls
ZWdlCisgKiBvZiB0aGUgRkQuCisgKiBGRCA9PSBET01JRF9JTzogUGVybWl0IC9vbmx5LyBJL08g
bWFwcGluZ3MsIGF0IHRoZSBwcml2IGxldmVsIG9mIHRoZSBjYWxsZXIuCisgKiBGRCA9PSBET01J
RF9YRU46IE1hcCByZXN0cmljdGVkIGFyZWFzIG9mIFhlbidzIGhlYXAgc3BhY2UuCisgKiBwdHJb
OjJdICAtLSBNYWNoaW5lIGFkZHJlc3Mgb2YgdGhlIHBhZ2UtdGFibGUgZW50cnkgdG8gbW9kaWZ5
LgorICogdmFsICAgICAgLS0gVmFsdWUgdG8gd3JpdGUuCisgKgorICogVGhlcmUgYWxzbyBjZXJ0
YWluIGltcGxpY2l0IHJlcXVpcmVtZW50cyB3aGVuIHVzaW5nIHRoaXMgaHlwZXJjYWxsLiBUaGUK
KyAqIHBhZ2VzIHRoYXQgbWFrZSB1cCBhIHBhZ2V0YWJsZSBtdXN0IGJlIG1hcHBlZCByZWFkLW9u
bHkgaW4gdGhlIGd1ZXN0LgorICogVGhpcyBwcmV2ZW50cyB1bmNvbnRyb2xsZWQgZ3Vlc3QgdXBk
YXRlcyB0byB0aGUgcGFnZXRhYmxlLiBYZW4gc3RyaWN0bHkKKyAqIGVuZm9yY2VzIHRoaXMsIGFu
ZCB3aWxsIGRpc2FsbG93IGFueSBwYWdldGFibGUgdXBkYXRlIHdoaWNoIHdpbGwgZW5kIHVwCisg
KiBtYXBwaW5nIHBhZ2V0YWJsZSBwYWdlIFJXLCBhbmQgd2lsbCBkaXNhbGxvdyB1c2luZyBhbnkg
d3JpdGFibGUgcGFnZSBhcyBhCisgKiBwYWdldGFibGUuIEluIHByYWN0aWNlIGl0IG1lYW5zIHRo
YXQgd2hlbiBjb25zdHJ1Y3RpbmcgYSBwYWdlIHRhYmxlIGZvciBhCisgKiBwcm9jZXNzLCB0aHJl
YWQsIGV0Yywgd2UgTVVTVCBiZSB2ZXJ5IGRpbGxpZ2llbnQgaW4gZm9sbG93aW5nIHRoZXNlIHJ1
bGVzOgorICogIDEpLiBTdGFydCB3aXRoIHRvcC1sZXZlbCBwYWdlIChQR0Qgb3IgaW4gWGVuIGxh
bmd1YWdlOiBMNCkuIEZpbGwgb3V0CisgKiAgICAgIHRoZSBlbnRyaWVzLgorICogIDIpLiBLZWVw
IG9uIGdvaW5nLCBmaWxsaW5nIG91dCB0aGUgdXBwZXIgKFBVRCBvciBMMyksIGFuZCBtaWRkbGUg
KFBNRAorICogICAgICBvciBMMikuCisgKiAgMykuIFN0YXJ0IGZpbGxpbmcgb3V0IHRoZSBQVEUg
dGFibGUgKEwxKSB3aXRoIHRoZSBQVEUgZW50cmllcy4gT25jZQorICogIAlkb25lLCBtYWtlIHN1
cmUgdG8gc2V0IGVhY2ggb2YgdGhvc2UgZW50cmllcyB0byBSTyAoc28gd3JpdGVhYmxlIGJpdAor
ICogIAlpcyB1bnNldCkuIE9uY2UgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQsIHNldCB0aGUgUE1E
IChMMikgZm9yIHRoaXMKKyAqICAJUFRFIHRhYmxlIGFzIFJPLgorICogIDQpLiBXaGVuIGNvbXBs
ZXRlZCB3aXRoIGFsbCBvZiB0aGUgUE1EIChMMikgZW50cmllcywgYW5kIGFsbCBvZiB0aGVtIGhh
dmUKKyAqICAJYmVlbiBzZXQgdG8gUk8sIG1ha2Ugc3VyZSB0byBzZXQgUk8gdGhlIFBVRCAoTDMp
LiBEbyB0aGUgc2FtZQorICogIAlvcGVyYXRpb24gb24gUEdEIChMNCkgcGFnZXRhYmxlIGVudHJp
ZXMgdGhhdCBoYXZlIGEgUFVEIChMMykgZW50cnkuCisgKiAgNSkuIE5vdyBiZWZvcmUgeW91IGNh
biB1c2UgdGhvc2UgcGFnZXMgKHNvIHNldHRpbmcgdGhlIGNyMyksIHlvdSBNVVNUIGFsc28KKyAq
ICAgICAgcGluIHRoZW0gc28gdGhhdCB0aGUgaHlwZXJ2aXNvciBjYW4gdmVyaWZ5IHRoZSBlbnRy
aWVzLiBUaGlzIGlzIGRvbmUKKyAqICAgICAgdmlhIHRoZSBIWVBFUlZJU09SX21tdWV4dF9vcChN
TVVFWFRfUElOX0w0X1RBQkxFLCBndWVzdCBwaHlzaWNhbCBmcmFtZQorICogICAgICBudW1iZXIg
b2YgdGhlIFBHRCAoTDQpKS4gQW5kIHRoaXMgcG9pbnQgdGhlIEhZUEVSVklTT1JfbW11ZXh0X29w
KAorICogICAgICBNTVVFWFRfTkVXX0JBU0VQVFIsIGd1ZXN0IHBoeXNpY2FsIGZyYW1lIG51bWJl
ciBvZiB0aGUgUEdEIChMNCkpIGNhbiBiZQorICogICAgICBpc3N1ZWQuCisgKiBGb3IgMzItYml0
IGd1ZXN0cywgdGhlIEw0IGlzIG5vdCB1c2VkIChhcyB0aGVyZSBpcyBsZXNzIHBhZ2V0YWJsZXMp
LCBzbworICogaW5zdGVhZCB1c2UgTDMuCisgKiBBdCB0aGlzIHBvaW50IHRoZSBwYWdldGFibGVz
IGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgTU1VX05PUk1BTF9QVF9VUERBVEUKKyAqIGh5cGVy
Y2FsbC4gQWxzbyBpZiBzbyBkZXNpcmVkIHRoZSBPUyBjYW4gYWxzbyB0cnkgdG8gd3JpdGUgdG8g
dGhlIFBURQorICogYW5kIGJlIHRyYXBwZWQgYnkgdGhlIGh5cGVydmlzb3IgKGFzIHRoZSBQVEUg
ZW50cnkgaXMgUk8pLgorICoKKyAqIFRvIGRlYWxsb2NhdGUgdGhlIHBhZ2VzLCB0aGUgb3BlcmF0
aW9ucyBhcmUgdGhlIHJldmVyc2Ugb2YgdGhlIHN0ZXBzCisgKiBtZW50aW9uZWQgYWJvdmUuIFRo
ZSBhcmd1bWVudCBpcyBNTVVFWFRfVU5QSU5fVEFCTEUgZm9yIGFsbCBsZXZlbHMgYW5kIHRoZQor
ICogcGFnZXRhYmxlIE1VU1Qgbm90IGJlIGluIHVzZSAobWVhbmluZyB0aGF0IHRoZSBjcjMgaXMg
bm90IHNldCB0byBpdCkuCisgKgorICogcHRyWzE6MF0gPT0gTU1VX01BQ0hQSFlTX1VQREFURToK
KyAqIFVwZGF0ZXMgYW4gZW50cnkgaW4gdGhlIG1hY2hpbmUtPnBzZXVkby1waHlzaWNhbCBtYXBw
aW5nIHRhYmxlLgorICogcHRyWzoyXSAgLS0gTWFjaGluZSBhZGRyZXNzIHdpdGhpbiB0aGUgZnJh
bWUgd2hvc2UgbWFwcGluZyB0byBtb2RpZnkuCisgKiAgICAgICAgICAgICBUaGUgZnJhbWUgbXVz
dCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lmaWVkLgorICogdmFsICAgICAgLS0g
VmFsdWUgdG8gd3JpdGUgaW50byB0aGUgbWFwcGluZyBlbnRyeS4KKyAqCisgKiBwdHJbMTowXSA9
PSBNTVVfUFRfVVBEQVRFX1BSRVNFUlZFX0FEOgorICogQXMgTU1VX05PUk1BTF9QVF9VUERBVEUg
YWJvdmUsIGJ1dCBBL0QgYml0cyBjdXJyZW50bHkgaW4gdGhlIFBURSBhcmUgT1JlZAorICogd2l0
aCB0aG9zZSBpbiBAdmFsLgorICoKKyAqIEB2YWwgaXMgdXN1YWxseSB0aGUgbWFjaGluZSBmcmFt
ZSBudW1iZXIgYWxvbmcgd2l0aCBzb21lIGF0dHJpYnV0ZXMuCisgKiBUaGUgYXR0cmlidXRlcyBi
eSBkZWZhdWx0IGZvbGxvdyB0aGUgYXJjaGl0ZWN0dXJlIGRlZmluZWQgYml0cy4gTWVhbmluZyB0
aGF0CisgKiBpZiB0aGlzIGlzIGEgWDg2XzY0IG1hY2hpbmUgYW5kIGZvdXIgcGFnZSB0YWJsZSBs
YXlvdXQgaXMgdXNlZCwgdGhlIGxheW91dAorICogb2YgdmFsIGlzOgorICogIC0gNjMgaWYgc2V0
IG1lYW5zIE5vIGV4ZWN1dGUgKE5YKQorICogIC0gNDYtMTMgdGhlIG1hY2hpbmUgZnJhbWUgbnVt
YmVyCisgKiAgLSAxMiBhdmFpbGFibGUgZm9yIGd1ZXN0CisgKiAgLSAxMSBhdmFpbGFibGUgZm9y
IGd1ZXN0CisgKiAgLSAxMCBhdmFpbGFibGUgZm9yIGd1ZXN0CisgKiAgLSA5IGF2YWlsYWJsZSBm
b3IgZ3Vlc3QKKyAqICAtIDggZ2xvYmFsCisgKiAgLSA3IFBBVCAoUFNFIGlzIGRpc2FibGVkLCBt
dXN0IHVzZSBoeXBlcmNhbGwgdG8gbWFrZSA0TUIgb3IgMk1CIHBhZ2VzKQorICogIC0gNiBkaXJ0
eQorICogIC0gNSBhY2Nlc3NlZAorICogIC0gNCBwYWdlIGNhY2hlZCBkaXNhYmxlZAorICogIC0g
MyBwYWdlIHdyaXRlIHRocm91Z2gKKyAqICAtIDIgdXNlcnNwYWNlIGFjY2Vzc2libGUKKyAqICAt
IDEgd3JpdGVhYmxlCisgKiAgLSAwIHByZXNlbnQKKyAqCisgKiAgVGhlIG9uZSBiaXRzIHRoYXQg
ZG9lcyBub3QgZml0IHdpdGggdGhlIGRlZmF1bHQgbGF5b3V0IGlzIHRoZSBQQUdFX1BTRQorICog
IGFsc28gY2FsbGVkIFBBR0VfUEFUKS4gVGhlIE1NVUVYVF9bVU5dTUFSS19TVVBFUiBhcmd1bWVu
dHMgdG8gdGhlCisgKiAgSFlQRVJWSVNPUl9tbXVleHRfb3Agc2VydmUgYXMgbWVjaGFuaXNtIHRv
IHNldCBhIHBhZ2V0YWJsZSB0byBiZSA0TUIKKyAqICAob3IgMk1CKSBpbnN0ZWFkIG9mIHVzaW5n
IHRoZSBQQUdFX1BTRSBiaXQuCisgKgorICogIFRoZSByZWFzb24gdGhhdCB0aGUgUEFHRV9QU0Ug
KGJpdCA3KSBpcyBub3QgYmVpbmcgdXRpbGl6ZWQgaXMgZHVlIHRvIFhlbgorICogIHVzaW5nIGl0
IGFzIHRoZSBQYWdlIEF0dHJpYnV0ZSBUYWJsZSAoUEFUKSBiaXQgLSBmb3IgZGV0YWlscyBvbiBp
dCBwbGVhc2UKKyAqICByZWZlciB0byBJbnRlbCBTRE0gMTAuMTIuIFRoZSBQQVQgYWxsb3dzIHRv
IHNldCB0aGUgY2FjaGluZyBhdHRyaWJ1dGVzIG9mCisgKiAgcGFnZXMgaW5zdGVhZCBvZiB1c2lu
ZyBNVFJScy4KKyAqCisgKiAgVGhlIFBBVCBNU1IgaXMgYXMgZm9sbG93cyAoaXQgaXMgYSA2NC1i
aXQgdmFsdWUsIGVhY2ggZW50cnkgaXMgOCBiaXRzKToKKyAqICAgICAgICAgICAgICAgICAgICBQ
QVQ0ICAgICAgICAgICAgICAgICBQQVQwCisgKiAgKy0tLS0tKy0tLS0tKy0tLS0rLS0tLSstLS0t
Ky0tLS0tKy0tLS0rLS0tLSsKKyAqICB8IFVDICB8IFVDLSB8IFdDIHwgV0IgfCBVQyB8IFVDLSB8
IFdDIHwgV0IgfCAgPD0gTGludXgKKyAqICArLS0tLS0rLS0tLS0rLS0tLSstLS0tKy0tLS0rLS0t
LS0rLS0tLSstLS0tKworICogIHwgVUMgIHwgVUMtIHwgV1QgfCBXQiB8IFVDIHwgVUMtIHwgV1Qg
fCBXQiB8ICA8PSBCSU9TIChkZWZhdWx0IHdoZW4gbWFjaGluZSBib290cykKKyAqICArLS0tLS0r
LS0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICogIHwgcnN2IHwgcnN2IHwg
V1AgfCBXQyB8IFVDIHwgVUMtIHwgV1QgfCBXQiB8ICA8PSBYZW4KKyAqICArLS0tLS0rLS0tLS0r
LS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tKworICoKKyAqICBUaGUgbG9va3VwIG9mIHRo
aXMgaW5kZXggdGFibGUgdHJhbnNsYXRlcyB0byBsb29raW5nIHVwCisgKiAgQml0IDcsIEJpdCA0
LCBhbmQgQml0IDMgb2YgdmFsIGVudHJ5OgorICoKKyAqICBQQVQvUFNFIChiaXQgNykgLi4uIFBD
RCAoYml0IDQpIC4uIFBXVCAoYml0IDMpLgorICoKKyAqICBJZiBhbGwgYml0cyBhcmUgb2ZmLCB0
aGVuIHdlIGFyZSB1c2luZyBQQVQwLiBJZiBiaXQgMyB0dXJuZWQgb24sCisgKiAgdGhlbiB3ZSBh
cmUgdXNpbmcgUEFUMSwgaWYgYml0IDMgYW5kIGJpdCA0LCB0aGVuIFBBVDIuLgorICoKKyAqICBB
cyB5b3UgY2FuIHNlZSwgdGhlIExpbnV4IFBBVDEgdHJhbnNsYXRlcyB0byBQQVQ0IHVuZGVyIFhl
bi4gV2hpY2ggbWVhbnMKKyAqICB0aGF0IGlmIGEgZ3Vlc3QgdGhhdCBmb2xsb3dzIExpbnV4J3Mg
UEFUIHNldHVwIGFuZCB3b3VsZCBsaWtlIHRvIHNldCBXcml0ZQorICogIENvbWJpbmVkIG9uIHBh
Z2VzIGl0IE1VU1QgdXNlIFBBVDQgZW50cnkuIE1lYW5pbmcgdGhhdCBCaXQgNyAoUEFHRV9QQVQp
IGlzCisgKiAgc2V0LiBGb3IgZXhhbXBsZSwgdW5kZXIgTGludXggaXQgb25seSB1c2VzIFBBVDAs
IFBBVDEsIGFuZCBQQVQyIGZvciB0aGUKKyAqICBjYWNoaW5nIGFzOgorICoKKyAqICAgV0IgPSBu
b25lIChzbyBQQVQwKQorICogICBXQyA9IFBXVCAoYml0IDMgb24pCisgKiAgIFVDID0gUFdUIHwg
UENEIChiaXQgMyBhbmQgNCBhcmUgb24pLgorICoKKyAqIFRvIG1ha2UgaXQgd29yayB3aXRoIFhl
biwgaXQgbmVlZHMgdG8gdHJhbnNsYXRlIHRoZSBXQyBiaXQgYXMgc286CisgKgorICogIFBXVCAo
c28gYml0IDMgb24pIC0tPiBQQVQgKHNvIGJpdCA3IGlzIG9uKSBhbmQgY2xlYXIgYml0IDMKKyAq
CisgKiBBbmQgdG8gdHJhbnNsYXRlIGJhY2sgaXQgd291bGQ6CisgKgorICogUEFUIChiaXQgNyBv
bikgLS0+IFBXVCAoYml0IDMgb24pIGFuZCBjbGVhciBiaXQgNy4KKyAqLworI2RlZmluZSBNTVVf
Tk9STUFMX1BUX1VQREFURSAgICAgIDAgLyogY2hlY2tlZCAnKnB0ciA9IHZhbCcuIHB0ciBpcyBN
QS4gICAgICAqLworI2RlZmluZSBNTVVfTUFDSFBIWVNfVVBEQVRFICAgICAgIDEgLyogcHRyID0g
TUEgb2YgZnJhbWUgdG8gbW9kaWZ5IGVudHJ5IGZvciAqLworI2RlZmluZSBNTVVfUFRfVVBEQVRF
X1BSRVNFUlZFX0FEIDIgLyogYXRvbWljYWxseTogKnB0ciA9IHZhbCB8ICgqcHRyJihBfEQpKSAq
LworCisvKgorICogTU1VIEVYVEVOREVEIE9QRVJBVElPTlMKKyAqCisgKiBgIGVudW0gbmVnX2Vy
cm5vdmFsCisgKiBgIEhZUEVSVklTT1JfbW11ZXh0X29wKG1tdWV4dF9vcF90IHVvcHNbXSwKKyAq
IGAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvdW50LAorICogYCAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBkb25lLAorICogYCAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZm9yZWlnbmRvbSkKKyAqLworLyogSFlQRVJWSVNPUl9tbXVleHRf
b3AoKSBhY2NlcHRzIGEgbGlzdCBvZiBtbXVleHRfb3Agc3RydWN0dXJlcy4KKyAqIEEgZm9yZWln
bmRvbSAoRkQpIGNhbiBiZSBzcGVjaWZpZWQgKG9yIERPTUlEX1NFTEYgZm9yIG5vbmUpLgorICog
V2hlcmUgdGhlIEZEIGhhcyBzb21lIGVmZmVjdCwgaXQgaXMgZGVzY3JpYmVkIGJlbG93LgorICoK
KyAqIGNtZDogTU1VRVhUXyhVTilQSU5fKl9UQUJMRQorICogbWZuOiBNYWNoaW5lIGZyYW1lIG51
bWJlciB0byBiZSAodW4pcGlubmVkIGFzIGEgcC50LiBwYWdlLgorICogICAgICBUaGUgZnJhbWUg
bXVzdCBiZWxvbmcgdG8gdGhlIEZELCBpZiBvbmUgaXMgc3BlY2lmaWVkLgorICoKKyAqIGNtZDog
TU1VRVhUX05FV19CQVNFUFRSCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIG5ldyBw
YWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUuCisgKgorICogY21kOiBNTVVFWFRfTkVX
X1VTRVJfQkFTRVBUUiBbeDg2LzY0IG9ubHldCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVy
IG9mIG5ldyBwYWdlLXRhYmxlIGJhc2UgdG8gaW5zdGFsbCBpbiBNTVUKKyAqICAgICAgd2hlbiBp
biB1c2VyIHNwYWNlLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9MT0NBTAorICogTm8g
YWRkaXRpb25hbCBhcmd1bWVudHMuIEZsdXNoZXMgbG9jYWwgVExCLgorICoKKyAqIGNtZDogTU1V
RVhUX0lOVkxQR19MT0NBTAorICogbGluZWFyX2FkZHI6IExpbmVhciBhZGRyZXNzIHRvIGJlIGZs
dXNoZWQgZnJvbSB0aGUgbG9jYWwgVExCLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9N
VUxUSQorICogdmNwdW1hc2s6IFBvaW50ZXIgdG8gYml0bWFwIG9mIFZDUFVzIHRvIGJlIGZsdXNo
ZWQuCisgKgorICogY21kOiBNTVVFWFRfSU5WTFBHX01VTFRJCisgKiBsaW5lYXJfYWRkcjogTGlu
ZWFyIGFkZHJlc3MgdG8gYmUgZmx1c2hlZC4KKyAqIHZjcHVtYXNrOiBQb2ludGVyIHRvIGJpdG1h
cCBvZiBWQ1BVcyB0byBiZSBmbHVzaGVkLgorICoKKyAqIGNtZDogTU1VRVhUX1RMQl9GTFVTSF9B
TEwKKyAqIE5vIGFkZGl0aW9uYWwgYXJndW1lbnRzLiBGbHVzaGVzIGFsbCBWQ1BVcycgVExCcy4K
KyAqCisgKiBjbWQ6IE1NVUVYVF9JTlZMUEdfQUxMCisgKiBsaW5lYXJfYWRkcjogTGluZWFyIGFk
ZHJlc3MgdG8gYmUgZmx1c2hlZCBmcm9tIGFsbCBWQ1BVcycgVExCcy4KKyAqCisgKiBjbWQ6IE1N
VUVYVF9GTFVTSF9DQUNIRQorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNr
IGFuZCBmbHVzaGVzIGNhY2hlIGNvbnRlbnRzLgorICoKKyAqIGNtZDogTU1VRVhUX0ZMVVNIX0NB
Q0hFX0dMT0JBTAorICogTm8gYWRkaXRpb25hbCBhcmd1bWVudHMuIFdyaXRlcyBiYWNrIGFuZCBm
bHVzaGVzIGNhY2hlIGNvbnRlbnRzCisgKiBvbiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLgorICoK
KyAqIGNtZDogTU1VRVhUX1NFVF9MRFQKKyAqIGxpbmVhcl9hZGRyOiBMaW5lYXIgYWRkcmVzcyBv
ZiBMRFQgYmFzZSAoTkIuIG11c3QgYmUgcGFnZS1hbGlnbmVkKS4KKyAqIG5yX2VudHM6IE51bWJl
ciBvZiBlbnRyaWVzIGluIExEVC4KKyAqCisgKiBjbWQ6IE1NVUVYVF9DTEVBUl9QQUdFCisgKiBt
Zm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIHRvIGJlIGNsZWFyZWQuCisgKgorICogY21kOiBNTVVF
WFRfQ09QWV9QQUdFCisgKiBtZm46IE1hY2hpbmUgZnJhbWUgbnVtYmVyIG9mIHRoZSBkZXN0aW5h
dGlvbiBwYWdlLgorICogc3JjX21mbjogTWFjaGluZSBmcmFtZSBudW1iZXIgb2YgdGhlIHNvdXJj
ZSBwYWdlLgorICoKKyAqIGNtZDogTU1VRVhUX1tVTl1NQVJLX1NVUEVSCisgKiBtZm46IE1hY2hp
bmUgZnJhbWUgbnVtYmVyIG9mIGhlYWQgb2Ygc3VwZXJwYWdlIHRvIGJlIFt1bl1tYXJrZWQuCisg
Ki8KKy8qIGAgZW51bSBtbXVleHRfY21kIHsgKi8KKyNkZWZpbmUgTU1VRVhUX1BJTl9MMV9UQUJM
RSAgICAgIDAKKyNkZWZpbmUgTU1VRVhUX1BJTl9MMl9UQUJMRSAgICAgIDEKKyNkZWZpbmUgTU1V
RVhUX1BJTl9MM19UQUJMRSAgICAgIDIKKyNkZWZpbmUgTU1VRVhUX1BJTl9MNF9UQUJMRSAgICAg
IDMKKyNkZWZpbmUgTU1VRVhUX1VOUElOX1RBQkxFICAgICAgIDQKKyNkZWZpbmUgTU1VRVhUX05F
V19CQVNFUFRSICAgICAgIDUKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVTSF9MT0NBTCAgIDYKKyNk
ZWZpbmUgTU1VRVhUX0lOVkxQR19MT0NBTCAgICAgIDcKKyNkZWZpbmUgTU1VRVhUX1RMQl9GTFVT
SF9NVUxUSSAgIDgKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19NVUxUSSAgICAgIDkKKyNkZWZpbmUg
TU1VRVhUX1RMQl9GTFVTSF9BTEwgICAgMTAKKyNkZWZpbmUgTU1VRVhUX0lOVkxQR19BTEwgICAg
ICAgMTEKKyNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFICAgICAgMTIKKyNkZWZpbmUgTU1VRVhU
X1NFVF9MRFQgICAgICAgICAgMTMKKyNkZWZpbmUgTU1VRVhUX05FV19VU0VSX0JBU0VQVFIgMTUK
KyNkZWZpbmUgTU1VRVhUX0NMRUFSX1BBR0UgICAgICAgMTYKKyNkZWZpbmUgTU1VRVhUX0NPUFlf
UEFHRSAgICAgICAgMTcKKyNkZWZpbmUgTU1VRVhUX0ZMVVNIX0NBQ0hFX0dMT0JBTCAxOAorI2Rl
ZmluZSBNTVVFWFRfTUFSS19TVVBFUiAgICAgICAxOQorI2RlZmluZSBNTVVFWFRfVU5NQVJLX1NV
UEVSICAgICAyMAorLyogYCB9ICovCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCitzdHJ1Y3QgbW11
ZXh0X29wIHsKKyAgICB1bnNpZ25lZCBpbnQgY21kOyAvKiA9PiBlbnVtIG1tdWV4dF9jbWQgKi8K
KyAgICB1bmlvbiB7CisgICAgICAgIC8qIFtVTl1QSU5fVEFCTEUsIE5FV19CQVNFUFRSLCBORVdf
VVNFUl9CQVNFUFRSCisgICAgICAgICAqIENMRUFSX1BBR0UsIENPUFlfUEFHRSwgW1VOXU1BUktf
U1VQRVIgKi8KKyAgICAgICAgeGVuX3Bmbl90ICAgICBtZm47CisgICAgICAgIC8qIElOVkxQR19M
T0NBTCwgSU5WTFBHX0FMTCwgU0VUX0xEVCAqLworICAgICAgICBVTE9OR19QVFIgbGluZWFyX2Fk
ZHI7CisgICAgfSBhcmcxOworICAgIHVuaW9uIHsKKyAgICAgICAgLyogU0VUX0xEVCAqLworICAg
ICAgICB1bnNpZ25lZCBpbnQgbnJfZW50czsKKyAgICAgICAgLyogVExCX0ZMVVNIX01VTFRJLCBJ
TlZMUEdfTVVMVEkgKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fID49IDB4MDAwMzAy
MDUKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRShjb25zdF92b2lkKSB2Y3B1bWFzazsKKyNlbHNl
CisgICAgICAgIGNvbnN0IHZvaWQgKnZjcHVtYXNrOworI2VuZGlmCisgICAgICAgIC8qIENPUFlf
UEFHRSAqLworICAgICAgICB4ZW5fcGZuX3Qgc3JjX21mbjsKKyAgICB9IGFyZzI7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgbW11ZXh0X29wIG1tdWV4dF9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5E
TEUobW11ZXh0X29wX3QpOworI2VuZGlmCisKKy8qCisgKiBgIGVudW0gbmVnX2Vycm5vdmFsCisg
KiBgIEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoVUxPTkdfUFRSIHZhLCB1NjQgdmFsLAor
ICogYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdXZtX2ZsYWdzIGZsYWdzKQor
ICogYAorICogYCBlbnVtIG5lZ19lcnJub3ZhbAorICogYCBIWVBFUlZJU09SX3VwZGF0ZV92YV9t
YXBwaW5nX290aGVyZG9tYWluKFVMT05HX1BUUiB2YSwgdTY0IHZhbCwKKyAqIGAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHV2bV9mbGFncyBmbGFncywKKyAq
IGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlk
KQorICogYAorICogYCBAdmE6IFRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hvc2UgbWFwcGluZyB3ZSB3
YW50IHRvIGNoYW5nZQorICogYCBAdmFsOiBUaGUgbmV3IHBhZ2UgdGFibGUgZW50cnksIG11c3Qg
Y29udGFpbiBhIG1hY2hpbmUgYWRkcmVzcworICogYCBAZmxhZ3M6IENvbnRyb2wgVExCIGZsdXNo
ZXMKKyAqLworLyogVGhlc2UgYXJlIHBhc3NlZCBhcyAnZmxhZ3MnIHRvIHVwZGF0ZV92YV9tYXBw
aW5nLiBUaGV5IGNhbiBiZSBPUmVkLiAqLworLyogV2hlbiBzcGVjaWZ5aW5nIFVWTUZfTVVMVEks
IGFsc28gT1IgaW4gYSBwb2ludGVyIHRvIGEgQ1BVIGJpdG1hcC4gICAqLworLyogVVZNRl9MT0NB
TCBpcyBtZXJlbHkgVVZNRl9NVUxUSSB3aXRoIGEgTlVMTCBiaXRtYXAgcG9pbnRlci4gICAgICAg
ICAqLworLyogYCBlbnVtIHV2bV9mbGFncyB7ICovCisjZGVmaW5lIFVWTUZfTk9ORSAgICAgICAg
ICAgKHhlbl9ta191bG9uZygwKTw8MCkgLyogTm8gZmx1c2hpbmcgYXQgYWxsLiAgICovCisjZGVm
aW5lIFVWTUZfVExCX0ZMVVNIICAgICAgKHhlbl9ta191bG9uZygxKTw8MCkgLyogRmx1c2ggZW50
aXJlIFRMQihzKS4gICovCisjZGVmaW5lIFVWTUZfSU5WTFBHICAgICAgICAgKHhlbl9ta191bG9u
ZygyKTw8MCkgLyogRmx1c2ggb25seSBvbmUgZW50cnkuICovCisjZGVmaW5lIFVWTUZfRkxVU0hU
WVBFX01BU0sgKHhlbl9ta191bG9uZygzKTw8MCkKKyNkZWZpbmUgVVZNRl9NVUxUSSAgICAgICAg
ICAoeGVuX21rX3Vsb25nKDApPDwyKSAvKiBGbHVzaCBzdWJzZXQgb2YgVExCcy4gKi8KKyNkZWZp
bmUgVVZNRl9MT0NBTCAgICAgICAgICAoeGVuX21rX3Vsb25nKDApPDwyKSAvKiBGbHVzaCBsb2Nh
bCBUTEIuICAgICAgKi8KKyNkZWZpbmUgVVZNRl9BTEwgICAgICAgICAgICAoeGVuX21rX3Vsb25n
KDEpPDwyKSAvKiBGbHVzaCBhbGwgVExCcy4gICAgICAgKi8KKy8qIGAgfSAqLworCisvKgorICog
Q29tbWFuZHMgdG8gSFlQRVJWSVNPUl9jb25zb2xlX2lvKCkuCisgKi8KKyNkZWZpbmUgQ09OU09M
RUlPX3dyaXRlICAgICAgICAgMAorI2RlZmluZSBDT05TT0xFSU9fcmVhZCAgICAgICAgICAxCisK
Ky8qCisgKiBDb21tYW5kcyB0byBIWVBFUlZJU09SX3ZtX2Fzc2lzdCgpLgorICovCisjZGVmaW5l
IFZNQVNTVF9DTURfZW5hYmxlICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgVk1BU1NUX0NNRF9k
aXNhYmxlICAgICAgICAgICAgICAgMQorCisvKiB4ODYvMzIgZ3Vlc3RzOiBzaW11bGF0ZSBmdWxs
IDRHQiBzZWdtZW50IGxpbWl0cy4gKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVfNGdiX3NlZ21lbnRz
ICAgICAgICAgMAorCisvKiB4ODYvMzIgZ3Vlc3RzOiB0cmFwICh2ZWN0b3IgMTUpIHdoZW5ldmVy
IGFib3ZlIHZtYXNzaXN0IGlzIHVzZWQuICovCisjZGVmaW5lIFZNQVNTVF9UWVBFXzRnYl9zZWdt
ZW50c19ub3RpZnkgIDEKKworLyoKKyAqIHg4NiBndWVzdHM6IHN1cHBvcnQgd3JpdGVzIHRvIGJv
dHRvbS1sZXZlbCBQVEVzLgorICogTkIxLiBQYWdlLWRpcmVjdG9yeSBlbnRyaWVzIGNhbm5vdCBi
ZSB3cml0dGVuLgorICogTkIyLiBHdWVzdCBtdXN0IGNvbnRpbnVlIHRvIHJlbW92ZSBhbGwgd3Jp
dGFibGUgbWFwcGluZ3Mgb2YgUFRFcy4KKyAqLworI2RlZmluZSBWTUFTU1RfVFlQRV93cml0YWJs
ZV9wYWdldGFibGVzICAyCisKKy8qIHg4Ni9QQUUgZ3Vlc3RzOiBzdXBwb3J0IFBEUFRzIGFib3Zl
IDRHQi4gKi8KKyNkZWZpbmUgVk1BU1NUX1RZUEVfcGFlX2V4dGVuZGVkX2NyMyAgICAgMworCisv
KgorICogeDg2IGd1ZXN0czogU2FuZSBiZWhhdmlvdXIgZm9yIHZpcnR1YWwgaW9wbAorICogIC0g
dmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBkb19pcmV0KCkgaHlwZXJjYWxscy4KKyAqICAtIHZp
cnR1YWwgaW9wbCByZXBvcnRlZCBpbiBib3VuY2UgZnJhbWVzLgorICogIC0gZ3Vlc3Qga2VybmVs
cyBhc3N1bWVkIHRvIGJlIGxldmVsIDAgZm9yIHRoZSBwdXJwb3NlIG9mIGlvcGwgY2hlY2tzLgor
ICovCisjZGVmaW5lIFZNQVNTVF9UWVBFX2FyY2hpdGVjdHVyYWxfaW9wbCAgIDQKKworLyoKKyAq
IHg4Ni82NCBndWVzdHM6IHN0cmljdGx5IGhpZGUgTTJQIGZyb20gdXNlciBtb2RlLgorICogVGhp
cyBhbGxvd3MgdGhlIGd1ZXN0IHRvIGNvbnRyb2wgcmVzcGVjdGl2ZSBoeXBlcnZpc29yIGJlaGF2
aW9yOgorICogLSB3aGVuIG5vdCBzZXQsIEw0IHRhYmxlcyBnZXQgY3JlYXRlZCB3aXRoIHRoZSBy
ZXNwZWN0aXZlIHNsb3QgYmxhbmssCisgKiAgIGFuZCB3aGVuZXZlciB0aGUgTDQgdGFibGUgZ2V0
cyB1c2VkIGFzIGEga2VybmVsIG9uZSB0aGUgbWlzc2luZworICogICBtYXBwaW5nIGdldHMgaW5z
ZXJ0ZWQsCisgKiAtIHdoZW4gc2V0LCBMNCB0YWJsZXMgZ2V0IGNyZWF0ZWQgd2l0aCB0aGUgcmVz
cGVjdGl2ZSBzbG90IGluaXRpYWxpemVkCisgKiAgIGFzIGJlZm9yZSwgYW5kIHdoZW5ldmVyIHRo
ZSBMNCB0YWJsZSBnZXRzIHVzZWQgYXMgYSB1c2VyIG9uZSB0aGUKKyAqICAgbWFwcGluZyBnZXRz
IHphcHBlZC4KKyAqLworI2RlZmluZSBWTUFTU1RfVFlQRV9tMnBfc3RyaWN0ICAgICAgICAgICAz
MgorCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4MDAwNDA2MDAKKyNkZWZpbmUg
TUFYX1ZNQVNTVF9UWVBFICAgICAgICAgICAgICAgICAgMworI2VuZGlmCisKKy8qIERvbWFpbiBp
ZHMgPj0gRE9NSURfRklSU1RfUkVTRVJWRUQgY2Fubm90IGJlIHVzZWQgZm9yIG9yZGluYXJ5IGRv
bWFpbnMuICovCisjZGVmaW5lIERPTUlEX0ZJUlNUX1JFU0VSVkVEIHhlbl9ta191aW50KDB4N0ZG
MCkKKworLyogRE9NSURfU0VMRiBpcyB1c2VkIGluIGNlcnRhaW4gY29udGV4dHMgdG8gcmVmZXIg
dG8gb25lc2VsZi4gKi8KKyNkZWZpbmUgRE9NSURfU0VMRiAgICAgICAgICAgeGVuX21rX3VpbnQo
MHg3RkYwKQorCisvKgorICogRE9NSURfSU8gaXMgdXNlZCB0byByZXN0cmljdCBwYWdlLXRhYmxl
IHVwZGF0ZXMgdG8gbWFwcGluZyBJL08gbWVtb3J5LgorICogQWx0aG91Z2ggbm8gRm9yZWlnbiBE
b21haW4gbmVlZCBiZSBzcGVjaWZpZWQgdG8gbWFwIEkvTyBwYWdlcywgRE9NSURfSU8KKyAqIGlz
IHVzZWZ1bCB0byBlbnN1cmUgdGhhdCBubyBtYXBwaW5ncyB0byB0aGUgT1MncyBvd24gaGVhcCBh
cmUgYWNjaWRlbnRhbGx5CisgKiBpbnN0YWxsZWQuIChlLmcuLCBpbiBMaW51eCB0aGlzIGNvdWxk
IGNhdXNlIGhhdm9jIGFzIHJlZmVyZW5jZSBjb3VudHMKKyAqIGFyZW4ndCBhZGp1c3RlZCBvbiB0
aGUgSS9PLW1hcHBpbmcgY29kZSBwYXRoKS4KKyAqIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpbiBN
TVVFWFRfU0VUX0ZPUkVJR05ET00sIGJ1dCBpbiB0aGF0IGNvbnRleHQgY2FuCisgKiBiZSBzcGVj
aWZpZWQgYnkgYW55IGNhbGxpbmcgZG9tYWluLgorICovCisjZGVmaW5lIERPTUlEX0lPICAgICAg
ICAgICAgIHhlbl9ta191aW50KDB4N0ZGMSkKKworLyoKKyAqIERPTUlEX1hFTiBpcyB1c2VkIHRv
IGFsbG93IHByaXZpbGVnZWQgZG9tYWlucyB0byBtYXAgcmVzdHJpY3RlZCBwYXJ0cyBvZgorICog
WGVuJ3MgaGVhcCBzcGFjZSAoZS5nLiwgdGhlIG1hY2hpbmVfdG9fcGh5cyB0YWJsZSkuCisgKiBU
aGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gTU1VRVhUX1NFVF9GT1JFSUdORE9NLCBhbmQgaXMgb25s
eSBwZXJtaXR0ZWQgaWYKKyAqIHRoZSBjYWxsZXIgaXMgcHJpdmlsZWdlZC4KKyAqLworI2RlZmlu
ZSBET01JRF9YRU4gICAgICAgICAgICB4ZW5fbWtfdWludCgweDdGRjIpCisKKy8qCisgKiBET01J
RF9DT1cgaXMgdXNlZCBhcyB0aGUgb3duZXIgb2Ygc2hhcmFibGUgcGFnZXMgKi8KKyNkZWZpbmUg
RE9NSURfQ09XICAgICAgICAgICAgeGVuX21rX3VpbnQoMHg3RkYzKQorCisvKiBET01JRF9JTlZB
TElEIGlzIHVzZWQgdG8gaWRlbnRpZnkgcGFnZXMgd2l0aCB1bmtub3duIG93bmVyLiAqLworI2Rl
ZmluZSBET01JRF9JTlZBTElEICAgICAgICB4ZW5fbWtfdWludCgweDdGRjQpCisKKy8qIElkbGUg
ZG9tYWluLiAqLworI2RlZmluZSBET01JRF9JRExFICAgICAgICAgICB4ZW5fbWtfdWludCgweDdG
RkYpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3R5cGVkZWYgdWludDE2X3QgZG9taWRfdDsK
KworLyoKKyAqIFNlbmQgYW4gYXJyYXkgb2YgdGhlc2UgdG8gSFlQRVJWSVNPUl9tbXVfdXBkYXRl
KCkuCisgKiBOQi4gVGhlIGZpZWxkcyBhcmUgbmF0dXJhbCBwb2ludGVyL2FkZHJlc3Mgc2l6ZSBm
b3IgdGhpcyBhcmNoaXRlY3R1cmUuCisgKi8KK3N0cnVjdCBtbXVfdXBkYXRlIHsKKyAgICB1aW50
NjRfdCBwdHI7ICAgICAgIC8qIE1hY2hpbmUgYWRkcmVzcyBvZiBQVEUuICovCisgICAgdWludDY0
X3QgdmFsOyAgICAgICAvKiBOZXcgY29udGVudHMgb2YgUFRFLiAgICAqLworfTsKK3R5cGVkZWYg
c3RydWN0IG1tdV91cGRhdGUgbW11X3VwZGF0ZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
bW11X3VwZGF0ZV90KTsKKworLyoKKyAqIGAgZW51bSBuZWdfZXJybm92YWwKKyAqIGAgSFlQRVJW
SVNPUl9tdWx0aWNhbGwobXVsdGljYWxsX2VudHJ5X3QgY2FsbF9saXN0W10sCisgKiBgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IG5yX2NhbGxzKTsKKyAqCisgKiBOQi4gVGhlIGZpZWxk
cyBhcmUgbG9naWNhbGx5IHRoZSBuYXR1cmFsIHJlZ2lzdGVyIHNpemUgZm9yIHRoaXMKKyAqIGFy
Y2hpdGVjdHVyZS4gSW4gY2FzZXMgd2hlcmUgeGVuX3Vsb25nX3QgaXMgbGFyZ2VyIHRoYW4gdGhp
cyB0aGVuCisgKiBhbnkgdW51c2VkIGJpdHMgaW4gdGhlIHVwcGVyIHBvcnRpb24gbXVzdCBiZSB6
ZXJvLgorICovCitzdHJ1Y3QgbXVsdGljYWxsX2VudHJ5IHsKKyAgICB4ZW5fdWxvbmdfdCBvcCwg
cmVzdWx0OworICAgIHhlbl91bG9uZ190IGFyZ3NbNl07Cit9OwordHlwZWRlZiBzdHJ1Y3QgbXVs
dGljYWxsX2VudHJ5IG11bHRpY2FsbF9lbnRyeV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo
bXVsdGljYWxsX2VudHJ5X3QpOworCisjaWYgX19YRU5fSU5URVJGQUNFX1ZFUlNJT05fXyA8IDB4
MDAwNDA0MDAKKy8qCisgKiBFdmVudCBjaGFubmVsIGVuZHBvaW50cyBwZXIgZG9tYWluICh3aGVu
IHVzaW5nIHRoZSAyLWxldmVsIEFCSSk6CisgKiAgMTAyNCBpZiBhIExPTkdfUFRSIGlzIDMyIGJp
dHM7IDQwOTYgaWYgYSBMT05HX1BUUiBpcyA2NCBiaXRzLgorICovCisjZGVmaW5lIE5SX0VWRU5U
X0NIQU5ORUxTIEVWVENITl8yTF9OUl9DSEFOTkVMUworI2VuZGlmCisKK3N0cnVjdCB2Y3B1X3Rp
bWVfaW5mbyB7CisgICAgLyoKKyAgICAgKiBVcGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVz
IGFyZSBwcmVjZWRlZCBhbmQgZm9sbG93ZWQgYnkgYW4KKyAgICAgKiBpbmNyZW1lbnQgb2YgJ3Zl
cnNpb24nLiBUaGUgZ3Vlc3QgY2FuIHRoZXJlZm9yZSBkZXRlY3QgdXBkYXRlcyBieQorICAgICAq
IGxvb2tpbmcgZm9yIGNoYW5nZXMgdG8gJ3ZlcnNpb24nLiBJZiB0aGUgbGVhc3Qtc2lnbmlmaWNh
bnQgYml0IG9mCisgICAgICogdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0aGVuIGFuIHVwZGF0
ZSBpcyBpbiBwcm9ncmVzcyBhbmQgdGhlIGd1ZXN0CisgICAgICogbXVzdCB3YWl0IHRvIHJlYWQg
YSBjb25zaXN0ZW50IHNldCBvZiB2YWx1ZXMuCisgICAgICogVGhlIGNvcnJlY3Qgd2F5IHRvIGlu
dGVyYWN0IHdpdGggdGhlIHZlcnNpb24gbnVtYmVyIGlzIHNpbWlsYXIgdG8KKyAgICAgKiBMaW51
eCdzIHNlcWxvY2s6IHNlZSB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHJlYWRfc2VxYmVnaW4vcmVh
ZF9zZXFyZXRyeS4KKyAgICAgKi8KKyAgICB1aW50MzJfdCB2ZXJzaW9uOworICAgIHVpbnQzMl90
IHBhZDA7CisgICAgdWludDY0X3QgdHNjX3RpbWVzdGFtcDsgICAvKiBUU0MgYXQgbGFzdCB1cGRh
dGUgb2YgdGltZSB2YWxzLiAgKi8KKyAgICB1aW50NjRfdCBzeXN0ZW1fdGltZTsgICAgIC8qIFRp
bWUsIGluIG5hbm9zZWNzLCBzaW5jZSBib290LiAgICAqLworICAgIC8qCisgICAgICogQ3VycmVu
dCBzeXN0ZW0gdGltZToKKyAgICAgKiAgIHN5c3RlbV90aW1lICsKKyAgICAgKiAgICgoKCh0c2Mg
LSB0c2NfdGltZXN0YW1wKSA8PCB0c2Nfc2hpZnQpICogdHNjX3RvX3N5c3RlbV9tdWwpID4+IDMy
KQorICAgICAqIENQVSBmcmVxdWVuY3kgKEh6KToKKyAgICAgKiAgICgoMTBeOSA8PCAzMikgLyB0
c2NfdG9fc3lzdGVtX211bCkgPj4gdHNjX3NoaWZ0CisgICAgICovCisgICAgdWludDMyX3QgdHNj
X3RvX3N5c3RlbV9tdWw7CisgICAgaW50OF90ICAgdHNjX3NoaWZ0OworI2lmIF9fWEVOX0lOVEVS
RkFDRV9WRVJTSU9OX18gPiAweDA0MDYwMAorICAgIHVpbnQ4X3QgIGZsYWdzOworICAgIHVpbnQ4
X3QgIHBhZDFbMl07CisjZWxzZQorICAgIGludDhfdCAgIHBhZDFbM107CisjZW5kaWYKK307IC8q
IDMyIGJ5dGVzICovCit0eXBlZGVmIHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyB2Y3B1X3RpbWVfaW5m
b190OworCisjZGVmaW5lIFhFTl9QVkNMT0NLX1RTQ19TVEFCTEVfQklUICAgICAoMSA8PCAwKQor
I2RlZmluZSBYRU5fUFZDTE9DS19HVUVTVF9TVE9QUEVEICAgICAgKDEgPDwgMSkKKworc3RydWN0
IHZjcHVfaW5mbyB7CisgICAgLyoKKyAgICAgKiAnZXZ0Y2huX3VwY2FsbF9wZW5kaW5nJyBpcyB3
cml0dGVuIG5vbi16ZXJvIGJ5IFhlbiB0byBpbmRpY2F0ZQorICAgICAqIGEgcGVuZGluZyBub3Rp
ZmljYXRpb24gZm9yIGEgcGFydGljdWxhciBWQ1BVLiBJdCBpcyB0aGVuIGNsZWFyZWQKKyAgICAg
KiBieSB0aGUgZ3Vlc3QgT1MgL2JlZm9yZS8gY2hlY2tpbmcgZm9yIHBlbmRpbmcgd29yaywgdGh1
cyBhdm9pZGluZworICAgICAqIGEgc2V0LWFuZC1jaGVjayByYWNlLiBOb3RlIHRoYXQgdGhlIG1h
c2sgaXMgb25seSBhY2Nlc3NlZCBieSBYZW4KKyAgICAgKiBvbiB0aGUgQ1BVIHRoYXQgaXMgY3Vy
cmVudGx5IGhvc3RpbmcgdGhlIFZDUFUuIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgICAgKiBwZW5k
aW5nIGFuZCBtYXNrIGZsYWdzIGNhbiBiZSB1cGRhdGVkIGJ5IHRoZSBndWVzdCB3aXRob3V0IHNw
ZWNpYWwKKyAgICAgKiBzeW5jaHJvbmlzYXRpb24gKGkuZS4sIG5vIG5lZWQgZm9yIHRoZSB4ODYg
TE9DSyBwcmVmaXgpLgorICAgICAqIFRoaXMgbWF5IHNlZW0gc3Vib3B0aW1hbCBiZWNhdXNlIGlm
IHRoZSBwZW5kaW5nIGZsYWcgaXMgc2V0IGJ5CisgICAgICogYSBkaWZmZXJlbnQgQ1BVIHRoZW4g
YW4gSVBJIG1heSBiZSBzY2hlZHVsZWQgZXZlbiB3aGVuIHRoZSBtYXNrCisgICAgICogaXMgc2V0
LiBIb3dldmVyLCBub3RlOgorICAgICAqICAxLiBUaGUgdGFzayBvZiAnaW50ZXJydXB0IGhvbGRv
ZmYnIGlzIGNvdmVyZWQgYnkgdGhlIHBlci1ldmVudC0KKyAgICAgKiAgICAgY2hhbm5lbCBtYXNr
IGJpdHMuIEEgJ25vaXN5JyBldmVudCB0aGF0IGlzIGNvbnRpbnVhbGx5IGJlaW5nCisgICAgICog
ICAgIHRyaWdnZXJlZCBjYW4gYmUgbWFza2VkIGF0IHNvdXJjZSBhdCB0aGlzIHZlcnkgcHJlY2lz
ZQorICAgICAqICAgICBncmFudWxhcml0eS4KKyAgICAgKiAgMi4gVGhlIG1haW4gcHVycG9zZSBv
ZiB0aGUgcGVyLVZDUFUgbWFzayBpcyB0aGVyZWZvcmUgdG8gcmVzdHJpY3QKKyAgICAgKiAgICAg
cmVlbnRyYW50IGV4ZWN1dGlvbjogd2hldGhlciBmb3IgY29uY3VycmVuY3kgY29udHJvbCwgb3Ig
dG8KKyAgICAgKiAgICAgcHJldmVudCB1bmJvdW5kZWQgc3RhY2sgdXNhZ2UuIFdoYXRldmVyIHRo
ZSBwdXJwb3NlLCB3ZSBleHBlY3QKKyAgICAgKiAgICAgdGhhdCB0aGUgbWFzayB3aWxsIGJlIGFz
c2VydGVkIG9ubHkgZm9yIHNob3J0IHBlcmlvZHMgYXQgYSB0aW1lLAorICAgICAqICAgICBhbmQg
c28gdGhlIGxpa2VsaWhvb2Qgb2YgYSAnc3B1cmlvdXMnIElQSSBpcyBzdWl0YWJseSBzbWFsbC4K
KyAgICAgKiBUaGUgbWFzayBpcyByZWFkIGJlZm9yZSBtYWtpbmcgYW4gZXZlbnQgdXBjYWxsIHRv
IHRoZSBndWVzdDogYQorICAgICAqIG5vbi16ZXJvIG1hc2sgdGhlcmVmb3JlIGd1YXJhbnRlZXMg
dGhhdCB0aGUgVkNQVSB3aWxsIG5vdCByZWNlaXZlCisgICAgICogYW4gdXBjYWxsIGFjdGl2YXRp
b24uIFRoZSBtYXNrIGlzIGNsZWFyZWQgd2hlbiB0aGUgVkNQVSByZXF1ZXN0cworICAgICAqIHRv
IGJsb2NrOiB0aGlzIGF2b2lkcyB3YWtldXAtd2FpdGluZyByYWNlcy4KKyAgICAgKi8KKyAgICB1
aW50OF90IGV2dGNobl91cGNhbGxfcGVuZGluZzsKKyNpZmRlZiBYRU5fSEFWRV9QVl9VUENBTExf
TUFTSworICAgIHVpbnQ4X3QgZXZ0Y2huX3VwY2FsbF9tYXNrOworI2Vsc2UgLyogWEVOX0hBVkVf
UFZfVVBDQUxMX01BU0sgKi8KKyAgICB1aW50OF90IHBhZDA7CisjZW5kaWYgLyogWEVOX0hBVkVf
UFZfVVBDQUxMX01BU0sgKi8KKyAgICB4ZW5fdWxvbmdfdCBldnRjaG5fcGVuZGluZ19zZWw7Cisg
ICAgc3RydWN0IGFyY2hfdmNwdV9pbmZvIGFyY2g7CisgICAgc3RydWN0IHZjcHVfdGltZV9pbmZv
IHRpbWU7Cit9OyAvKiA2NCBieXRlcyAoeDg2KSAqLworI2lmbmRlZiBfX1hFTl9fCit0eXBlZGVm
IHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9pbmZvX3Q7CisjZW5kaWYKKworLyoKKyAqIGBpbmNvbnRl
bnRzIDIwMCBzdGFydG9mZGF5X3NoYXJlZCBTdGFydC1vZi1kYXkgc2hhcmVkIGRhdGEgc3RydWN0
dXJlCisgKiBYZW4va2VybmVsIHNoYXJlZCBkYXRhIC0tIHBvaW50ZXIgcHJvdmlkZWQgaW4gc3Rh
cnRfaW5mby4KKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBpcyBkZWZpbmVkIHRvIGJlIGJvdGggc21h
bGxlciB0aGFuIGEgcGFnZSwgYW5kIHRoZQorICogb25seSBkYXRhIG9uIHRoZSBzaGFyZWQgcGFn
ZSwgYnV0IG1heSB2YXJ5IGluIGFjdHVhbCBzaXplIGV2ZW4gd2l0aGluCisgKiBjb21wYXRpYmxl
IFhlbiB2ZXJzaW9uczsgZ3Vlc3RzIHNob3VsZCBub3QgcmVseSBvbiB0aGUgc2l6ZQorICogb2Yg
dGhpcyBzdHJ1Y3R1cmUgcmVtYWluaW5nIGNvbnN0YW50LgorICovCitzdHJ1Y3Qgc2hhcmVkX2lu
Zm8geworICAgIHN0cnVjdCB2Y3B1X2luZm8gdmNwdV9pbmZvW1hFTl9MRUdBQ1lfTUFYX1ZDUFVT
XTsKKworICAgIC8qCisgICAgICogQSBkb21haW4gY2FuIGNyZWF0ZSAiZXZlbnQgY2hhbm5lbHMi
IG9uIHdoaWNoIGl0IGNhbiBzZW5kIGFuZCByZWNlaXZlCisgICAgICogYXN5bmNocm9ub3VzIGV2
ZW50IG5vdGlmaWNhdGlvbnMuIFRoZXJlIGFyZSB0aHJlZSBjbGFzc2VzIG9mIGV2ZW50IHRoYXQK
KyAgICAgKiBhcmUgZGVsaXZlcmVkIGJ5IHRoaXMgbWVjaGFuaXNtOgorICAgICAqICAxLiBCaS1k
aXJlY3Rpb25hbCBpbnRlci0gYW5kIGludHJhLWRvbWFpbiBjb25uZWN0aW9ucy4gRG9tYWlucyBt
dXN0CisgICAgICogICAgIGFycmFuZ2Ugb3V0LW9mLWJhbmQgdG8gc2V0IHVwIGEgY29ubmVjdGlv
biAodXN1YWxseSBieSBhbGxvY2F0aW5nCisgICAgICogICAgIGFuIHVuYm91bmQgJ2xpc3RlbmVy
JyBwb3J0IGFuZCBhdmVydGlzaW5nIHRoYXQgdmlhIGEgc3RvcmFnZSBzZXJ2aWNlCisgICAgICog
ICAgIHN1Y2ggYXMgeGVuc3RvcmUpLgorICAgICAqICAyLiBQaHlzaWNhbCBpbnRlcnJ1cHRzLiBB
IGRvbWFpbiB3aXRoIHN1aXRhYmxlIGhhcmR3YXJlLWFjY2VzcworICAgICAqICAgICBwcml2aWxl
Z2VzIGNhbiBiaW5kIGFuIGV2ZW50LWNoYW5uZWwgcG9ydCB0byBhIHBoeXNpY2FsIGludGVycnVw
dAorICAgICAqICAgICBzb3VyY2UuCisgICAgICogIDMuIFZpcnR1YWwgaW50ZXJydXB0cyAoJ2V2
ZW50cycpLiBBIGRvbWFpbiBjYW4gYmluZCBhbiBldmVudC1jaGFubmVsCisgICAgICogICAgIHBv
cnQgdG8gYSB2aXJ0dWFsIGludGVycnVwdCBzb3VyY2UsIHN1Y2ggYXMgdGhlIHZpcnR1YWwtdGlt
ZXIKKyAgICAgKiAgICAgZGV2aWNlIG9yIHRoZSBlbWVyZ2VuY3kgY29uc29sZS4KKyAgICAgKgor
ICAgICAqIEV2ZW50IGNoYW5uZWxzIGFyZSBhZGRyZXNzZWQgYnkgYSAicG9ydCBpbmRleCIuIEVh
Y2ggY2hhbm5lbCBpcworICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0d28gYml0cyBvZiBpbmZvcm1h
dGlvbjoKKyAgICAgKiAgMS4gUEVORElORyAtLSBub3RpZmllcyB0aGUgZG9tYWluIHRoYXQgdGhl
cmUgaXMgYSBwZW5kaW5nIG5vdGlmaWNhdGlvbgorICAgICAqICAgICB0byBiZSBwcm9jZXNzZWQu
IFRoaXMgYml0IGlzIGNsZWFyZWQgYnkgdGhlIGd1ZXN0LgorICAgICAqICAyLiBNQVNLIC0tIGlm
IHRoaXMgYml0IGlzIGNsZWFyIHRoZW4gYSAwLT4xIHRyYW5zaXRpb24gb2YgUEVORElORworICAg
ICAqICAgICB3aWxsIGNhdXNlIGFuIGFzeW5jaHJvbm91cyB1cGNhbGwgdG8gYmUgc2NoZWR1bGVk
LiBUaGlzIGJpdCBpcyBvbmx5CisgICAgICogICAgIHVwZGF0ZWQgYnkgdGhlIGd1ZXN0LiBJdCBp
cyByZWFkLW9ubHkgd2l0aGluIFhlbi4gSWYgYSBjaGFubmVsCisgICAgICogICAgIGJlY29tZXMg
cGVuZGluZyB3aGlsZSB0aGUgY2hhbm5lbCBpcyBtYXNrZWQgdGhlbiB0aGUgJ2VkZ2UnIGlzIGxv
c3QKKyAgICAgKiAgICAgKGkuZS4sIHdoZW4gdGhlIGNoYW5uZWwgaXMgdW5tYXNrZWQsIHRoZSBn
dWVzdCBtdXN0IG1hbnVhbGx5IGhhbmRsZQorICAgICAqICAgICBwZW5kaW5nIG5vdGlmaWNhdGlv
bnMgYXMgbm8gdXBjYWxsIHdpbGwgYmUgc2NoZWR1bGVkIGJ5IFhlbikuCisgICAgICoKKyAgICAg
KiBUbyBleHBlZGl0ZSBzY2FubmluZyBvZiBwZW5kaW5nIG5vdGlmaWNhdGlvbnMsIGFueSAwLT4x
IHBlbmRpbmcKKyAgICAgKiB0cmFuc2l0aW9uIG9uIGFuIHVubWFza2VkIGNoYW5uZWwgY2F1c2Vz
IGEgY29ycmVzcG9uZGluZyBiaXQgaW4gYQorICAgICAqIHBlci12Y3B1IHNlbGVjdG9yIHdvcmQg
dG8gYmUgc2V0LiBFYWNoIGJpdCBpbiB0aGUgc2VsZWN0b3IgY292ZXJzIGEKKyAgICAgKiAnQyBM
T05HX1BUUicgaW4gdGhlIFBFTkRJTkcgYml0ZmllbGQgYXJyYXkuCisgICAgICovCisgICAgeGVu
X3Vsb25nX3QgZXZ0Y2huX3BlbmRpbmdbc2l6ZW9mKHhlbl91bG9uZ190KSAqIDhdOworICAgIHhl
bl91bG9uZ190IGV2dGNobl9tYXNrW3NpemVvZih4ZW5fdWxvbmdfdCkgKiA4XTsKKworICAgIC8q
CisgICAgICogV2FsbGNsb2NrIHRpbWU6IHVwZGF0ZWQgb25seSBieSBjb250cm9sIHNvZnR3YXJl
LiBHdWVzdHMgc2hvdWxkIGJhc2UKKyAgICAgKiB0aGVpciBnZXR0aW1lb2ZkYXkoKSBzeXNjYWxs
IG9uIHRoaXMgd2FsbGNsb2NrLWJhc2UgdmFsdWUuCisgICAgICovCisgICAgdWludDMyX3Qgd2Nf
dmVyc2lvbjsgICAgICAvKiBWZXJzaW9uIGNvdW50ZXI6IHNlZSB2Y3B1X3RpbWVfaW5mb190LiAq
LworICAgIHVpbnQzMl90IHdjX3NlYzsgICAgICAgICAgLyogU2VjcyAgMDA6MDA6MDAgVVRDLCBK
YW4gMSwgMTk3MC4gICovCisgICAgdWludDMyX3Qgd2NfbnNlYzsgICAgICAgICAvKiBOc2VjcyAw
MDowMDowMCBVVEMsIEphbiAxLCAxOTcwLiAgKi8KKyNpZiAhZGVmaW5lZChfX2kzODZfXykKKyAg
ICB1aW50MzJfdCB3Y19zZWNfaGk7CisjIGRlZmluZSB4ZW5fd2Nfc2VjX2hpIHdjX3NlY19oaQor
I2VsaWYgIWRlZmluZWQoX19YRU5fXykgJiYgIWRlZmluZWQoX19YRU5fVE9PTFNfXykKKyMgZGVm
aW5lIHhlbl93Y19zZWNfaGkgYXJjaC53Y19zZWNfaGkKKyNlbmRpZgorCisgICAgc3RydWN0IGFy
Y2hfc2hhcmVkX2luZm8gYXJjaDsKKworfTsKKyNpZm5kZWYgX19YRU5fXwordHlwZWRlZiBzdHJ1
Y3Qgc2hhcmVkX2luZm8gc2hhcmVkX2luZm9fdDsKKyNlbmRpZgorCisvKgorICogYGluY29udGVu
dHMgMjAwIHN0YXJ0b2ZkYXkgU3RhcnQtb2YtZGF5IG1lbW9yeSBsYXlvdXQKKyAqCisgKiAgMS4g
VGhlIGRvbWFpbiBpcyBzdGFydGVkIHdpdGhpbiBjb250aWd1b3VzIHZpcnR1YWwtbWVtb3J5IHJl
Z2lvbi4KKyAqICAyLiBUaGUgY29udGlndW91cyByZWdpb24gZW5kcyBvbiBhbiBhbGlnbmVkIDRN
QiBib3VuZGFyeS4KKyAqICAzLiBUaGlzIHRoZSBvcmRlciBvZiBib290c3RyYXAgZWxlbWVudHMg
aW4gdGhlIGluaXRpYWwgdmlydHVhbCByZWdpb246CisgKiAgICAgIGEuIHJlbG9jYXRlZCBrZXJu
ZWwgaW1hZ2UKKyAqICAgICAgYi4gaW5pdGlhbCByYW0gZGlzayAgICAgICAgICAgICAgW21vZF9z
dGFydCwgbW9kX2xlbl0KKyAqICAgICAgICAgKG1heSBiZSBvbWl0dGVkKQorICogICAgICBjLiBs
aXN0IG9mIGFsbG9jYXRlZCBwYWdlIGZyYW1lcyBbbWZuX2xpc3QsIG5yX3BhZ2VzXQorICogICAg
ICAgICAodW5sZXNzIHJlbG9jYXRlZCBkdWUgdG8gWEVOX0VMRk5PVEVfSU5JVF9QMk0pCisgKiAg
ICAgIGQuIHN0YXJ0X2luZm9fdCBzdHJ1Y3R1cmUgICAgICAgIFtyZWdpc3RlciBFU0kgKHg4Nild
CisgKiAgICAgICAgIGluIGNhc2Ugb2YgZG9tMCB0aGlzIHBhZ2UgY29udGFpbnMgdGhlIGNvbnNv
bGUgaW5mbywgdG9vCisgKiAgICAgIGUuIHVubGVzcyBkb20wOiB4ZW5zdG9yZSByaW5nIHBhZ2UK
KyAqICAgICAgZi4gdW5sZXNzIGRvbTA6IGNvbnNvbGUgcmluZyBwYWdlCisgKiAgICAgIGcuIGJv
b3RzdHJhcCBwYWdlIHRhYmxlcyAgICAgICAgIFtwdF9iYXNlIGFuZCBDUjMgKHg4NildCisgKiAg
ICAgIGguIGJvb3RzdHJhcCBzdGFjayAgICAgICAgICAgICAgIFtyZWdpc3RlciBFU1AgKHg4Nild
CisgKiAgNC4gQm9vdHN0cmFwIGVsZW1lbnRzIGFyZSBwYWNrZWQgdG9nZXRoZXIsIGJ1dCBlYWNo
IGlzIDRrQi1hbGlnbmVkLgorICogIDUuIFRoZSBsaXN0IG9mIHBhZ2UgZnJhbWVzIGZvcm1zIGEg
Y29udGlndW91cyAncHNldWRvLXBoeXNpY2FsJyBtZW1vcnkKKyAqICAgICBsYXlvdXQgZm9yIHRo
ZSBkb21haW4uIEluIHBhcnRpY3VsYXIsIHRoZSBib290c3RyYXAgdmlydHVhbC1tZW1vcnkKKyAq
ICAgICByZWdpb24gaXMgYSAxOjEgbWFwcGluZyB0byB0aGUgZmlyc3Qgc2VjdGlvbiBvZiB0aGUg
cHNldWRvLXBoeXNpY2FsIG1hcC4KKyAqICA2LiBBbGwgYm9vdHN0cmFwIGVsZW1lbnRzIGFyZSBt
YXBwZWQgcmVhZC13cml0YWJsZSBmb3IgdGhlIGd1ZXN0IE9TLiBUaGUKKyAqICAgICBvbmx5IGV4
Y2VwdGlvbiBpcyB0aGUgYm9vdHN0cmFwIHBhZ2UgdGFibGUsIHdoaWNoIGlzIG1hcHBlZCByZWFk
LW9ubHkuCisgKiAgNy4gVGhlcmUgaXMgZ3VhcmFudGVlZCB0byBiZSBhdCBsZWFzdCA1MTJrQiBw
YWRkaW5nIGFmdGVyIHRoZSBmaW5hbAorICogICAgIGJvb3RzdHJhcCBlbGVtZW50LiBJZiBuZWNl
c3NhcnksIHRoZSBib290c3RyYXAgdmlydHVhbCByZWdpb24gaXMKKyAqICAgICBleHRlbmRlZCBi
eSBhbiBleHRyYSA0TUIgdG8gZW5zdXJlIHRoaXMuCisgKgorICogTm90ZTogUHJpb3IgdG8gMjU4
MzM6YmI4NWJiY2NiMWM5LiAoIng4Ni8zMi1vbi02NCBhZGp1c3QgRG9tMCBpbml0aWFsIHBhZ2UK
KyAqIHRhYmxlIGxheW91dCIpIGEgYnVnIGNhdXNlZCB0aGUgcHRfYmFzZSAoMy5nIGFib3ZlKSBh
bmQgY3IzIHRvIG5vdCBwb2ludAorICogdG8gdGhlIHN0YXJ0IG9mIHRoZSBndWVzdCBwYWdlIHRh
YmxlcyAoaXQgd2FzIG9mZnNldCBieSB0d28gcGFnZXMpLgorICogVGhpcyBvbmx5IG1hbmlmZXN0
ZWQgaXRzZWxmIG9uIDMyLW9uLTY0IGRvbTAga2VybmVscyBhbmQgbm90IDMyLW9uLTY0IGRvbVUK
KyAqIG9yIDY0LWJpdCBrZXJuZWxzIG9mIGFueSBjb2xvdXIuIFRoZSBwYWdlIHRhYmxlcyBmb3Ig
YSAzMi1vbi02NCBkb20wIGdvdAorICogYWxsb2NhdGVkIGluIHRoZSBvcmRlcjogJ2ZpcnN0IEwx
JywnZmlyc3QgTDInLCAnZmlyc3QgTDMnLCBzbyB0aGUgb2Zmc2V0CisgKiB0byB0aGUgcGFnZSB0
YWJsZSBiYXNlIGlzIGJ5IHR3byBwYWdlcyBiYWNrLiBUaGUgaW5pdGlhbCBkb21haW4gaWYgaXQg
aXMKKyAqIDMyLWJpdCBhbmQgcnVucyB1bmRlciBhIDY0LWJpdCBoeXBlcnZpc29yIHNob3VsZCBf
Tk9UXyB1c2UgdHdvIG9mIHRoZQorICogcGFnZXMgcHJlY2VkaW5nIHB0X2Jhc2UgYW5kIG1hcmsg
dGhlbSBhcyByZXNlcnZlZC91bnVzZWQuCisgKi8KKyNpZmRlZiBYRU5fSEFWRV9QVl9HVUVTVF9F
TlRSWQorc3RydWN0IHN0YXJ0X2luZm8geworICAgIC8qIFRIRSBGT0xMT1dJTkcgQVJFIEZJTExF
RCBJTiBCT1RIIE9OIElOSVRJQUwgQk9PVCBBTkQgT04gUkVTVU1FLiAgICAqLworICAgIGNoYXIg
bWFnaWNbMzJdOyAgICAgICAgICAgICAvKiAieGVuLTx2ZXJzaW9uPi08cGxhdGZvcm0+Ii4gICAg
ICAgICAgICAqLworICAgIFVMT05HX1BUUiBucl9wYWdlczsgICAgIC8qIFRvdGFsIHBhZ2VzIGFs
bG9jYXRlZCB0byB0aGlzIGRvbWFpbi4gICovCisgICAgVUxPTkdfUFRSIHNoYXJlZF9pbmZvOyAg
LyogTUFDSElORSBhZGRyZXNzIG9mIHNoYXJlZCBpbmZvIHN0cnVjdC4gKi8KKyAgICB1aW50MzJf
dCBmbGFnczsgICAgICAgICAgICAgLyogU0lGX3h4eCBmbGFncy4gICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKyAgICB4ZW5fcGZuX3Qgc3RvcmVfbWZuOyAgICAgICAgLyogTUFDSElORSBwYWdl
IG51bWJlciBvZiBzaGFyZWQgcGFnZS4gICAgKi8KKyAgICB1aW50MzJfdCBzdG9yZV9ldnRjaG47
ICAgICAgLyogRXZlbnQgY2hhbm5lbCBmb3Igc3RvcmUgY29tbXVuaWNhdGlvbi4gKi8KKyAgICB1
bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB4ZW5fcGZuX3QgbWZuOyAgICAg
IC8qIE1BQ0hJTkUgcGFnZSBudW1iZXIgb2YgY29uc29sZSBwYWdlLiAgICovCisgICAgICAgICAg
ICB1aW50MzJfdCAgZXZ0Y2huOyAgIC8qIEV2ZW50IGNoYW5uZWwgZm9yIGNvbnNvbGUgcGFnZS4g
ICAgICAgICovCisgICAgICAgIH0gZG9tVTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVpbnQzMl90IGluZm9fb2ZmOyAgLyogT2Zmc2V0IG9mIGNvbnNvbGVfaW5mbyBzdHJ1Y3QuICAg
ICAgICAgKi8KKyAgICAgICAgICAgIHVpbnQzMl90IGluZm9fc2l6ZTsgLyogU2l6ZSBvZiBjb25z
b2xlX2luZm8gc3RydWN0IGZyb20gc3RhcnQuKi8KKyAgICAgICAgfSBkb20wOworICAgIH0gY29u
c29sZTsKKyAgICAvKiBUSEUgRk9MTE9XSU5HIEFSRSBPTkxZIEZJTExFRCBJTiBPTiBJTklUSUFM
IEJPT1QgKE5PVCBSRVNVTUUpLiAgICAgKi8KKyAgICBVTE9OR19QVFIgcHRfYmFzZTsgICAgICAv
KiBWSVJUVUFMIGFkZHJlc3Mgb2YgcGFnZSBkaXJlY3RvcnkuICAgICAqLworICAgIFVMT05HX1BU
UiBucl9wdF9mcmFtZXM7IC8qIE51bWJlciBvZiBib290c3RyYXAgcC50LiBmcmFtZXMuICAgICAg
ICovCisgICAgVUxPTkdfUFRSIG1mbl9saXN0OyAgICAgLyogVklSVFVBTCBhZGRyZXNzIG9mIHBh
Z2UtZnJhbWUgbGlzdC4gICAgKi8KKyAgICBVTE9OR19QVFIgbW9kX3N0YXJ0OyAgICAvKiBWSVJU
VUFMIGFkZHJlc3Mgb2YgcHJlLWxvYWRlZCBtb2R1bGUgICAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiAoUEZOIG9mIHByZS1sb2FkZWQgbW9kdWxlIGlmICAgICAgICAgICAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgU0lGX01PRF9TVEFSVF9QRk4g
c2V0IGluIGZsYWdzKS4gICAgICAqLworICAgIFVMT05HX1BUUiBtb2RfbGVuOyAgICAgIC8qIFNp
emUgKGJ5dGVzKSBvZiBwcmUtbG9hZGVkIG1vZHVsZS4gICAgICovCisjZGVmaW5lIE1BWF9HVUVT
VF9DTURMSU5FIDEwMjQKKyAgICBpbnQ4X3QgY21kX2xpbmVbTUFYX0dVRVNUX0NNRExJTkVdOwor
ICAgIC8qIFRoZSBwZm4gcmFuZ2UgaGVyZSBjb3ZlcnMgYm90aCBwYWdlIHRhYmxlIGFuZCBwLT5t
IHRhYmxlIGZyYW1lcy4gICAqLworICAgIFVMT05HX1BUUiBmaXJzdF9wMm1fcGZuOy8qIDFzdCBw
Zm4gZm9ybWluZyBpbml0aWFsIFAtPk0gdGFibGUuICAgICovCisgICAgVUxPTkdfUFRSIG5yX3Ay
bV9mcmFtZXM7LyogIyBvZiBwZm5zIGZvcm1pbmcgaW5pdGlhbCBQLT5NIHRhYmxlLiAgKi8KK307
Cit0eXBlZGVmIHN0cnVjdCBzdGFydF9pbmZvIHN0YXJ0X2luZm9fdDsKKworLyoKKyAqIFN0YXJ0
IG9mIGRheSBzdHJ1Y3R1cmUgcGFzc2VkIHRvIFBWSCBndWVzdHMgaW4gJWVieC4KKyAqCisgKiBO
T1RFOiBub3RoaW5nIHdpbGwgYmUgbG9hZGVkIGF0IHBoeXNpY2FsIGFkZHJlc3MgMCwgc28gYSAw
IHZhbHVlIGluIGFueQorICogb2YgdGhlIGFkZHJlc3MgZmllbGRzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIG5vdCBwcmVzZW50LgorICoKKyAqICAwICstLS0tLS0tLS0tLS0tLS0tKworICogICAgfCBt
YWdpYyAgICAgICAgICB8IENvbnRhaW5zIHRoZSBtYWdpYyB2YWx1ZSBYRU5fSFZNX1NUQVJUX01B
R0lDX1ZBTFVFCisgKiAgICB8ICAgICAgICAgICAgICAgIHwgKCJ4RW4zIiB3aXRoIHRoZSAweDgw
IGJpdCBvZiB0aGUgIkUiIHNldCkuCisgKiAgNCArLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgIHwg
dmVyc2lvbiAgICAgICAgfCBWZXJzaW9uIG9mIHRoaXMgc3RydWN0dXJlLiBDdXJyZW50IHZlcnNp
b24gaXMgMC4gTmV3CisgKiAgICB8ICAgICAgICAgICAgICAgIHwgdmVyc2lvbnMgYXJlIGd1YXJh
bnRlZWQgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuCisgKiAgOCArLS0tLS0tLS0tLS0tLS0t
LSsKKyAqICAgIHwgZmxhZ3MgICAgICAgICAgfCBTSUZfeHh4IGZsYWdzLgorICogMTIgKy0tLS0t
LS0tLS0tLS0tLS0rCisgKiAgICB8IG5yX21vZHVsZXMgICAgIHwgTnVtYmVyIG9mIG1vZHVsZXMg
cGFzc2VkIHRvIHRoZSBrZXJuZWwuCisgKiAxNiArLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgIHwg
bW9kbGlzdF9wYWRkciAgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIGFuIGFycmF5IG9mIG1vZHVsZXMK
KyAqICAgIHwgICAgICAgICAgICAgICAgfCAobGF5b3V0IG9mIHRoZSBzdHJ1Y3R1cmUgYmVsb3cp
LgorICogMjQgKy0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICB8IGNtZGxpbmVfcGFkZHIgIHwgUGh5
c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29tbWFuZCBsaW5lLAorICogICAgfCAgICAgICAgICAgICAg
ICB8IGEgemVyby10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4KKyAqIDMyICstLS0tLS0tLS0tLS0t
LS0tKworICogICAgfCByc2RwX3BhZGRyICAgICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFJT
RFAgQUNQSSBkYXRhIHN0cnVjdHVyZS4KKyAqIDQwICstLS0tLS0tLS0tLS0tLS0tKworICoKKyAq
IFRoZSBsYXlvdXQgb2YgZWFjaCBlbnRyeSBpbiB0aGUgbW9kdWxlIHN0cnVjdHVyZSBpcyB0aGUg
Zm9sbG93aW5nOgorICoKKyAqICAwICstLS0tLS0tLS0tLS0tLS0tKworICogICAgfCBwYWRkciAg
ICAgICAgICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1vZHVsZS4KKyAqICA4ICstLS0tLS0t
LS0tLS0tLS0tKworICogICAgfCBzaXplICAgICAgICAgICB8IFNpemUgb2YgdGhlIG1vZHVsZSBp
biBieXRlcy4KKyAqIDE2ICstLS0tLS0tLS0tLS0tLS0tKworICogICAgfCBjbWRsaW5lX3BhZGRy
ICB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbW1hbmQgbGluZSwKKyAqICAgIHwgICAgICAg
ICAgICAgICAgfCBhIHplcm8tdGVybWluYXRlZCBBU0NJSSBzdHJpbmcuCisgKiAyNCArLS0tLS0t
LS0tLS0tLS0tLSsKKyAqICAgIHwgcmVzZXJ2ZWQgICAgICAgfAorICogMzIgKy0tLS0tLS0tLS0t
LS0tLS0rCisgKgorICogVGhlIGFkZHJlc3MgYW5kIHNpemVzIGFyZSBhbHdheXMgYSA2NGJpdCBs
aXR0bGUgZW5kaWFuIHVuc2lnbmVkIGludGVnZXIuCisgKgorICogTkI6IFhlbiBvbiB4ODYgd2ls
bCBhbHdheXMgdHJ5IHRvIHBsYWNlIGFsbCB0aGUgZGF0YSBiZWxvdyB0aGUgNEdpQgorICogYm91
bmRhcnkuCisgKi8KKyNkZWZpbmUgWEVOX0hWTV9TVEFSVF9NQUdJQ19WQUxVRSAweDMzNmVjNTc4
CisKKy8qIE5ldyBjb25zb2xlIHVuaW9uIGZvciBkb20wIGludHJvZHVjZWQgaW4gMHgwMDAzMDIw
My4gKi8KKyNpZiBfX1hFTl9JTlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDAzMDIwMworI2RlZmlu
ZSBjb25zb2xlX21mbiAgICBjb25zb2xlLmRvbVUubWZuCisjZGVmaW5lIGNvbnNvbGVfZXZ0Y2hu
IGNvbnNvbGUuZG9tVS5ldnRjaG4KKyNlbmRpZgorI2VuZGlmIC8qIFhFTl9IQVZFX1BWX0dVRVNU
X0VOVFJZICovCisKKy8qIFRoZXNlIGZsYWdzIGFyZSBwYXNzZWQgaW4gdGhlICdmbGFncycgZmll
bGQgb2Ygc3RhcnRfaW5mb190LiAqLworI2RlZmluZSBTSUZfUFJJVklMRUdFRCAgICAoMTw8MCkg
IC8qIElzIHRoZSBkb21haW4gcHJpdmlsZWdlZD8gKi8KKyNkZWZpbmUgU0lGX0lOSVRET01BSU4g
ICAgKDE8PDEpICAvKiBJcyB0aGlzIHRoZSBpbml0aWFsIGNvbnRyb2wgZG9tYWluPyAqLworI2Rl
ZmluZSBTSUZfTVVMVElCT09UX01PRCAoMTw8MikgIC8qIElzIG1vZF9zdGFydCBhIG11bHRpYm9v
dCBtb2R1bGU/ICovCisjZGVmaW5lIFNJRl9NT0RfU1RBUlRfUEZOICgxPDwzKSAgLyogSXMgbW9k
X3N0YXJ0IGEgUEZOPyAqLworI2RlZmluZSBTSUZfVklSVF9QMk1fNFRPT0xTICgxPDw0KSAvKiBE
byBYZW4gdG9vbHMgdW5kZXJzdGFuZCBhIHZpcnQuIG1hcHBlZCAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBQLT5NIG1ha2luZyB0aGUgMyBsZXZlbCB0cmVlIG9ic29s
ZXRlPyAqLworI2RlZmluZSBTSUZfUE1fTUFTSyAgICAgICAoMHhGRjw8OCkgLyogcmVzZXJ2ZSAx
IGJ5dGUgZm9yIHhlbi1wbSBvcHRpb25zICovCisKKy8qCisgKiBBIG11bHRpYm9vdCBtb2R1bGUg
aXMgYSBwYWNrYWdlIGNvbnRhaW5pbmcgbW9kdWxlcyB2ZXJ5IHNpbWlsYXIgdG8gYQorICogbXVs
dGlib290IG1vZHVsZSBhcnJheS4gVGhlIG9ubHkgZGlmZmVyZW5jZXMgYXJlOgorICogLSB0aGUg
YXJyYXkgb2YgbW9kdWxlIGRlc2NyaXB0b3JzIGlzIGJ5IGNvbnZlbnRpb24gc2ltcGx5IGF0IHRo
ZSBiZWdpbm5pbmcKKyAqICAgb2YgdGhlIG11bHRpYm9vdCBtb2R1bGUsCisgKiAtIGFkZHJlc3Nl
cyBpbiB0aGUgbW9kdWxlIGRlc2NyaXB0b3JzIGFyZSBiYXNlZCBvbiB0aGUgYmVnaW5uaW5nIG9m
IHRoZQorICogICBtdWx0aWJvb3QgbW9kdWxlLAorICogLSB0aGUgbnVtYmVyIG9mIG1vZHVsZXMg
aXMgZGV0ZXJtaW5lZCBieSBhIHRlcm1pbmF0aW9uIGRlc2NyaXB0b3IgdGhhdCBoYXMKKyAqICAg
bW9kX3N0YXJ0ID09IDAuCisgKgorICogVGhpcyBwZXJtaXRzIHRvIGJvdGggYnVpbGQgaXQgc3Rh
dGljYWxseSBhbmQgcmVmZXJlbmNlIGl0IGluIGEgY29uZmlndXJhdGlvbgorICogZmlsZSwgYW5k
IGxldCB0aGUgUFYgZ3Vlc3QgZWFzaWx5IHJlYmFzZSB0aGUgYWRkcmVzc2VzIHRvIHZpcnR1YWwg
YWRkcmVzc2VzCisgKiBhbmQgYXQgdGhlIHNhbWUgdGltZSBjb3VudCB0aGUgbnVtYmVyIG9mIG1v
ZHVsZXMuCisgKi8KK3N0cnVjdCB4ZW5fbXVsdGlib290X21vZF9saXN0Cit7CisgICAgLyogQWRk
cmVzcyBvZiBmaXJzdCBieXRlIG9mIHRoZSBtb2R1bGUgKi8KKyAgICB1aW50MzJfdCBtb2Rfc3Rh
cnQ7CisgICAgLyogQWRkcmVzcyBvZiBsYXN0IGJ5dGUgb2YgdGhlIG1vZHVsZSAoaW5jbHVzaXZl
KSAqLworICAgIHVpbnQzMl90IG1vZF9lbmQ7CisgICAgLyogQWRkcmVzcyBvZiB6ZXJvLXRlcm1p
bmF0ZWQgY29tbWFuZCBsaW5lICovCisgICAgdWludDMyX3QgY21kbGluZTsKKyAgICAvKiBVbnVz
ZWQsIG11c3QgYmUgemVybyAqLworICAgIHVpbnQzMl90IHBhZDsKK307CisvKgorICogYGluY29u
dGVudHMgMjAwIHN0YXJ0b2ZkYXlfZG9tMF9jb25zb2xlIERvbTBfY29uc29sZQorICoKKyAqIFRo
ZSBjb25zb2xlIHN0cnVjdHVyZSBpbiBzdGFydF9pbmZvLmNvbnNvbGUuZG9tMAorICoKKyAqIFRo
aXMgc3RydWN0dXJlIGluY2x1ZGVzIGEgdmFyaWV0eSBvZiBpbmZvcm1hdGlvbiByZXF1aXJlZCB0
bworICogaGF2ZSBhIHdvcmtpbmcgVkdBL1ZFU0EgY29uc29sZS4KKyAqLwordHlwZWRlZiBzdHJ1
Y3QgZG9tMF92Z2FfY29uc29sZV9pbmZvIHsKKyAgICB1aW50OF90IHZpZGVvX3R5cGU7IC8qIERP
TTBfVkdBX0NPTlNPTEVfPz8/ICovCisjZGVmaW5lIFhFTl9WR0FUWVBFX1RFWFRfTU9ERV8zIDB4
MDMKKyNkZWZpbmUgWEVOX1ZHQVRZUEVfVkVTQV9MRkIgICAgMHgyMworI2RlZmluZSBYRU5fVkdB
VFlQRV9FRklfTEZCICAgICAweDcwCisKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAvKiBGb250IGhlaWdodCwgaW4gcGl4ZWxzLiAqLworICAgICAgICAgICAgdWlu
dDE2X3QgZm9udF9oZWlnaHQ7CisgICAgICAgICAgICAvKiBDdXJzb3IgbG9jYXRpb24gKGNvbHVt
biwgcm93KS4gKi8KKyAgICAgICAgICAgIHVpbnQxNl90IGN1cnNvcl94LCBjdXJzb3JfeTsKKyAg
ICAgICAgICAgIC8qIE51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIChkaW1lbnNpb25zIGluIGNo
YXJhY3RlcnMpLiAqLworICAgICAgICAgICAgdWludDE2X3Qgcm93cywgY29sdW1uczsKKyAgICAg
ICAgfSB0ZXh0X21vZGVfMzsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLyogV2lk
dGggYW5kIGhlaWdodCwgaW4gcGl4ZWxzLiAqLworICAgICAgICAgICAgdWludDE2X3Qgd2lkdGgs
IGhlaWdodDsKKyAgICAgICAgICAgIC8qIEJ5dGVzIHBlciBzY2FuIGxpbmUuICovCisgICAgICAg
ICAgICB1aW50MTZfdCBieXRlc19wZXJfbGluZTsKKyAgICAgICAgICAgIC8qIEJpdHMgcGVyIHBp
eGVsLiAqLworICAgICAgICAgICAgdWludDE2X3QgYml0c19wZXJfcGl4ZWw7CisgICAgICAgICAg
ICAvKiBMRkIgcGh5c2ljYWwgYWRkcmVzcywgYW5kIHNpemUgKGluIHVuaXRzIG9mIDY0a0IpLiAq
LworICAgICAgICAgICAgdWludDMyX3QgbGZiX2Jhc2U7CisgICAgICAgICAgICB1aW50MzJfdCBs
ZmJfc2l6ZTsKKyAgICAgICAgICAgIC8qIFJHQiBtYXNrIG9mZnNldHMgYW5kIHNpemVzLCBhcyBk
ZWZpbmVkIGJ5IFZCRSAxLjIrICovCisgICAgICAgICAgICB1aW50OF90ICByZWRfcG9zLCByZWRf
c2l6ZTsKKyAgICAgICAgICAgIHVpbnQ4X3QgIGdyZWVuX3BvcywgZ3JlZW5fc2l6ZTsKKyAgICAg
ICAgICAgIHVpbnQ4X3QgIGJsdWVfcG9zLCBibHVlX3NpemU7CisgICAgICAgICAgICB1aW50OF90
ICByc3ZkX3BvcywgcnN2ZF9zaXplOworI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0g
MHgwMDAzMDIwNgorICAgICAgICAgICAgLyogVkVTQSBjYXBhYmlsaXRpZXMgKG9mZnNldCAweGEs
IFZFU0EgY29tbWFuZCAweDRmMDApLiAqLworICAgICAgICAgICAgdWludDMyX3QgZ2JsX2NhcHM7
CisgICAgICAgICAgICAvKiBNb2RlIGF0dHJpYnV0ZXMgKG9mZnNldCAweDAsIFZFU0EgY29tbWFu
ZCAweDRmMDEpLiAqLworICAgICAgICAgICAgdWludDE2X3QgbW9kZV9hdHRyczsKKyNlbmRpZgor
ICAgICAgICB9IHZlc2FfbGZiOworICAgIH0gdTsKK30gZG9tMF92Z2FfY29uc29sZV9pbmZvX3Q7
CisjZGVmaW5lIHhlbl92Z2FfY29uc29sZV9pbmZvIGRvbTBfdmdhX2NvbnNvbGVfaW5mbworI2Rl
ZmluZSB4ZW5fdmdhX2NvbnNvbGVfaW5mb190IGRvbTBfdmdhX2NvbnNvbGVfaW5mb190CisKK3R5
cGVkZWYgdWludDhfdCB4ZW5fZG9tYWluX2hhbmRsZV90WzE2XTsKKworX19ERUZJTkVfWEVOX0dV
RVNUX0hBTkRMRSh1aW50OCwgIHVpbnQ4X3QpOworX19ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh1
aW50MTYsIHVpbnQxNl90KTsKK19fREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodWludDMyLCB1aW50
MzJfdCk7CitfX0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ2NCwgdWludDY0X3QpOworCisj
ZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAqLworCisvKiBEZWZhdWx0IGRlZmluaXRpb25zIGZvciBt
YWNyb3MgdXNlZCBieSBkb21jdGwvc3lzY3RsLiAqLworI2lmIGRlZmluZWQoX19YRU5fXykgfHwg
ZGVmaW5lZChfX1hFTl9UT09MU19fKQorCisjaWZuZGVmIGludDY0X2FsaWduZWRfdAorI2RlZmlu
ZSBpbnQ2NF9hbGlnbmVkX3QgaW50NjRfdAorI2VuZGlmCisjaWZuZGVmIHVpbnQ2NF9hbGlnbmVk
X3QKKyNkZWZpbmUgdWludDY0X2FsaWduZWRfdCB1aW50NjRfdAorI2VuZGlmCisjaWZuZGVmIFhF
Tl9HVUVTVF9IQU5ETEVfNjQKKyNkZWZpbmUgWEVOX0dVRVNUX0hBTkRMRV82NChuYW1lKSBYRU5f
R1VFU1RfSEFORExFKG5hbWUpCisjZW5kaWYKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KK3N0cnVj
dCB4ZW5jdGxfYml0bWFwIHsKKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4KSBiaXRtYXA7
CisgICAgdWludDMyX3QgbnJfYml0czsKK307CisjZW5kaWYKKworI2VuZGlmIC8qIGRlZmluZWQo
X19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLworCisjZW5kaWYgLyogX19YRU5f
UFVCTElDX1hFTl9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK
KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk
dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaCBiL2luY2x1ZGUveGVuL3hlbi9lcnJuby5oCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5YjI4ZGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9pbmNsdWRlL3hlbi94ZW4vZXJybm8uaApAQCAtMCwwICsxLDE4IEBACisjaWZuZGVmIF9fWEVO
X0VSUk5PX0hfXworI2RlZmluZSBfX1hFTl9FUlJOT19IX18KKworI2lmbmRlZiBfX0FTU0VNQkxZ
X18KKworI2RlZmluZSBYRU5fRVJSTk8obmFtZSwgdmFsdWUpIG5hbWUgPSB2YWx1ZSwKK2VudW0g
eworI2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorfTsKKworI2Vsc2UgLyogIV9fQVNTRU1CTFlf
XyAqLworCisjZGVmaW5lIFhFTl9FUlJOTyhuYW1lLCB2YWx1ZSkgLmVxdSBuYW1lLCB2YWx1ZQor
I2luY2x1ZGUgPHB1YmxpYy9lcnJuby5oPgorCisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisK
KyNlbmRpZiAvKiAgX19YRU5fRVJSTk9fSF9fICovCmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9m
ZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jCmluZGV4IDQwNDZhY2YuLmUyODM1NWMgMTAwNjQ0Ci0t
LSBhL3NyYy94ZW5jb25zL2Zkby5jCisrKyBiL3NyYy94ZW5jb25zL2Zkby5jCkBAIC03MzQsOCAr
NzM0LDEwIEBAIF9fRmRvRW51bWVyYXRlKAogCiAgICAgICAgIC8vIElmIHRoZSBQRE8gaXMgdGhl
IGRlZmF1bHQgY29uc29sZSwgaXQgd29udCBleGlzdCBpbiB0aGUKICAgICAgICAgLy8gdGhlIGRl
dmljZSBsaXN0LCBhcyBpdHMgc3RhdGljYWxseSBjcmVhdGVkCi0gICAgICAgIGlmIChQZG9Jc0Rl
ZmF1bHQoUGRvKSkKKyAgICAgICAgaWYgKFBkb0lzRGVmYXVsdChQZG8pKSB7CisgICAgICAgICAg
ICBMaXN0RW50cnkgPSBOZXh0OwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAog
ICAgICAgICBpZiAoUGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKSAhPSBEZWxldGVkKSB7CiAgICAg
ICAgICAgICBQQ0hBUiAgICAgICAgICAgTmFtZTsKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zy
b250ZW5kLmMgYi9zcmMveGVuY29ucy9mcm9udGVuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLmJkZDI5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuY29ucy9mcm9u
dGVuZC5jCkBAIC0wLDAgKzEsMTQ5OSBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVt
cyBJbmMuCisqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCisqIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQKKyogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKyoKKyogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUKKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAqICAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQor
KiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyCisqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQK
KyogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywKKyogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YKKyogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsCisqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyogTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisqIFNVQ0ggREFNQUdFLgor
Ki8KKworI2RlZmluZSBJTklUR1VJRCAxCisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUg
PHdkbWd1aWQuaD4KKyNpbmNsdWRlIDxudHN0cnNhZmUuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KworI2luY2x1ZGUgPHhlbi5oPgorI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgorI2luY2x1
ZGUgPHN1c3BlbmRfaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8ZGVidWdfaW50ZXJmYWNlLmg+Cisj
aW5jbHVkZSA8eGVuY29uc19kZXZpY2UuaD4KKworI2luY2x1ZGUgImRyaXZlci5oIgorI2luY2x1
ZGUgImZyb250ZW5kLmgiCisjaW5jbHVkZSAidGhyZWFkLmgiCisjaW5jbHVkZSAiZGJnX3ByaW50
LmgiCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisjaW5jbHVkZSAidXRpbC5oIgorCisjZGVmaW5lIEZS
T05URU5EX1BPT0wgJ1ROUkYnCisjZGVmaW5lIERPTUlEX0lOVkFMSUQgKDB4N0ZGRlUpCisKK3R5
cGVkZWYgZW51bSBfRlJPTlRFTkRfU1RBVEUgeworICAgIEZST05URU5EX1VOS05PV04sCisgICAg
RlJPTlRFTkRfQ0xPU0VELAorICAgIEZST05URU5EX1BSRVBBUkVELAorICAgIEZST05URU5EX0NP
Tk5FQ1RFRCwKKyAgICBGUk9OVEVORF9FTkFCTEVECit9IEZST05URU5EX1NUQVRFLCAqUEZST05U
RU5EX1NUQVRFOworCitzdHJ1Y3QgX1hFTkNPTlNfRlJPTlRFTkQgeworICAgIExPTkcgICAgICAg
ICAgICAgICAgICAgICAgICBSZWZDb3VudDsKKyAgICBQWEVOQ09OU19QRE8gICAgICAgICAgICAg
ICAgUGRvOworICAgIFBDSEFSICAgICAgICAgICAgICAgICAgICAgICBQYXRoOworICAgIEZST05U
RU5EX1NUQVRFICAgICAgICAgICAgICBTdGF0ZTsKKyAgICBLU1BJTl9MT0NLICAgICAgICAgICAg
ICAgICAgTG9jazsKKyAgICBQWEVOQ09OU19USFJFQUQgICAgICAgICAgICAgRWplY3RUaHJlYWQ7
CisgICAgS0VWRU5UICAgICAgICAgICAgICAgICAgICAgIEVqZWN0RXZlbnQ7CisgICAgQk9PTEVB
TiAgICAgICAgICAgICAgICAgICAgIE9ubGluZTsKKworICAgIFBDSEFSICAgICAgICAgICAgICAg
ICAgICAgICBCYWNrZW5kUGF0aDsKKyAgICBVU0hPUlQgICAgICAgICAgICAgICAgICAgICAgQmFj
a2VuZERvbWFpbjsKKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgTmFtZTsKKyAgICBQ
Q0hBUiAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2w7CisKKyAgICBYRU5CVVNfREVCVUdf
SU5URVJGQUNFICAgICAgRGVidWdJbnRlcmZhY2U7CisgICAgWEVOQlVTX1NVU1BFTkRfSU5URVJG
QUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7CisgICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAg
IFN0b3JlSW50ZXJmYWNlOworCisgICAgUFhFTkJVU19TVVNQRU5EX0NBTExCQUNLICAgIFN1c3Bl
bmRDYWxsYmFjazsKKyAgICBQWEVOQlVTX0RFQlVHX0NBTExCQUNLICAgICAgRGVidWdDYWxsYmFj
azsKKyAgICBQWEVOQlVTX1NUT1JFX1dBVENIICAgICAgICAgV2F0Y2g7Cit9OworCitzdGF0aWMg
Y29uc3QgUENIQVIKK0Zyb250ZW5kU3RhdGVOYW1lKAorICAgIElOICBGUk9OVEVORF9TVEFURSAg
U3RhdGUKKyAgICApCit7CisjZGVmaW5lIF9TVEFURV9OQU1FKF9TdGF0ZSkgICAgIFwKKyAgICBj
YXNlICBGUk9OVEVORF8gIyMgX1N0YXRlOiAgXAorICAgICAgICByZXR1cm4gI19TdGF0ZTsKKwor
ICAgIHN3aXRjaCAoU3RhdGUpIHsKKyAgICAgICAgX1NUQVRFX05BTUUoVU5LTk9XTik7CisgICAg
ICAgIF9TVEFURV9OQU1FKENMT1NFRCk7CisgICAgICAgIF9TVEFURV9OQU1FKFBSRVBBUkVEKTsK
KyAgICAgICAgX1NUQVRFX05BTUUoQ09OTkVDVEVEKTsKKyAgICAgICAgX1NUQVRFX05BTUUoRU5B
QkxFRCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJu
ICJJTlZBTElEIjsKKworI3VuZGVmICBfU1RBVEVfTkFNRQorfQorCitzdGF0aWMgY29uc3QgUENI
QVIKK1hlbmJ1c1N0YXRlTmFtZSgKKyAgICBJTiAgWGVuYnVzU3RhdGUgU3RhdGUKKyAgICApCit7
CisjZGVmaW5lIF9TVEFURV9OQU1FKF9TdGF0ZSkgICAgICAgICBcCisgICAgY2FzZSAgWGVuYnVz
U3RhdGUgIyMgX1N0YXRlOiAgICBcCisgICAgICAgIHJldHVybiAjX1N0YXRlOworCisgICAgc3dp
dGNoIChTdGF0ZSkgeworICAgICAgICBfU1RBVEVfTkFNRShVbmtub3duKTsKKyAgICAgICAgX1NU
QVRFX05BTUUoSW5pdGlhbGlzaW5nKTsKKyAgICAgICAgX1NUQVRFX05BTUUoSW5pdFdhaXQpOwor
ICAgICAgICBfU1RBVEVfTkFNRShJbml0aWFsaXNlZCk7CisgICAgICAgIF9TVEFURV9OQU1FKENv
bm5lY3RlZCk7CisgICAgICAgIF9TVEFURV9OQU1FKENsb3NpbmcpOworICAgICAgICBfU1RBVEVf
TkFNRShDbG9zZWQpOworICAgICAgICBfU1RBVEVfTkFNRShSZWNvbmZpZ3VyaW5nKTsKKyAgICAg
ICAgX1NUQVRFX05BTUUoUmVjb25maWd1cmVkKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gIklOVkFMSUQiOworCisjdW5kZWYgIF9TVEFURV9OQU1F
Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQVk9JRAorX19Gcm9udGVuZEFsbG9jYXRlKAorICAg
IElOICBVTE9ORyAgIExlbmd0aAorICAgICkKK3sKKyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xX
aXRoVGFnKE5vblBhZ2VkUG9vbCwgTGVuZ3RoLCBGUk9OVEVORF9QT09MKTsKK30KKworc3RhdGlj
IEZPUkNFSU5MSU5FIFZPSUQKK19fRnJvbnRlbmRGcmVlKAorICAgIElOICBQVk9JRCAgIEJ1ZmZl
cgorICAgICkKK3sKKyAgICBfX0ZyZWVQb29sV2l0aFRhZyhCdWZmZXIsIEZST05URU5EX1BPT0wp
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFhFTkNPTlNfUERPCitfX0Zyb250ZW5kR2V0UGRv
KAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKQoreworICAgIHJl
dHVybiBGcm9udGVuZC0+UGRvOworfQorCitQWEVOQ09OU19QRE8KK0Zyb250ZW5kR2V0UGRvKAor
ICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKQoreworICAgIHJldHVy
biBfX0Zyb250ZW5kR2V0UGRvKEZyb250ZW5kKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFBD
SEFSCitfX0Zyb250ZW5kR2V0UGF0aCgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9u
dGVuZAorICAgICkKK3sKKyAgICByZXR1cm4gRnJvbnRlbmQtPlBhdGg7Cit9CisKK1BDSEFSCitG
cm9udGVuZEdldFBhdGgoCisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAg
ICApCit7CisgICAgcmV0dXJuIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKTsKK30KKworc3Rh
dGljIEZPUkNFSU5MSU5FIFBDSEFSCitfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoCisgICAgSU4g
IFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgcmV0dXJuIEZyb250
ZW5kLT5CYWNrZW5kUGF0aDsKK30KKworUENIQVIKK0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoCisg
ICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgcmV0dXJu
IF9fRnJvbnRlbmRHZXRCYWNrZW5kUGF0aChGcm9udGVuZCk7Cit9CisKK3N0YXRpYyBGT1JDRUlO
TElORSBVU0hPUlQKK19fRnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKAorICAgIElOICBQWEVOQ09O
U19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKQoreworICAgIHJldHVybiBGcm9udGVuZC0+QmFj
a2VuZERvbWFpbjsKK30KKworVVNIT1JUCitGcm9udGVuZEdldEJhY2tlbmREb21haW4oCisgICAg
SU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgcmV0dXJuIF9f
RnJvbnRlbmRHZXRCYWNrZW5kRG9tYWluKEZyb250ZW5kKTsKK30KKworc3RhdGljIEJPT0xFQU4K
K0Zyb250ZW5kSXNPbmxpbmUoCisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQK
KyAgICApCit7CisgICAgcmV0dXJuIEZyb250ZW5kLT5PbmxpbmU7Cit9CisKK3N0YXRpYyBCT09M
RUFOCitGcm9udGVuZElzQmFja2VuZE9ubGluZSgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQg
ICBGcm9udGVuZAorICAgICkKK3sKKyAgICBQQ0hBUiAgICAgICAgICAgICAgICAgICBCdWZmZXI7
CisgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgT25saW5lOworICAgIE5UU1RBVFVTICAgICAg
ICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zy
b250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAib25saW5lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkJ1ZmZlcik7CisgICAgaWYg
KCFOVF9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgT25saW5lID0gRkFMU0U7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgT25saW5lID0gKEJPT0xFQU4pc3RydG9sKEJ1ZmZlciwgTlVMTCwgMik7
CisKKyAgICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsCisgICAgICAgICAgICAgICAgICAgICAmRnJv
bnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgQnVmZmVyKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gT25saW5lOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUg
TlRTVEFUVVMKK0Zyb250ZW5kRWplY3QoCisgICAgSU4gIFBYRU5DT05TX1RIUkVBRCBTZWxmLAor
ICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19G
Uk9OVEVORCAgIEZyb250ZW5kID0gQ29udGV4dDsKKyAgICBQS0VWRU5UICAgICAgICAgICAgIEV2
ZW50OworCisgICAgVHJhY2UoIiVzOiA9PT09PlxuIiwgX19Gcm9udGVuZEdldFBhdGgoRnJvbnRl
bmQpKTsKKworICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7CisKKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIEtJUlFMICAgICAgIElycWw7CisKKyAgICAgICAgS2VXYWl0Rm9yU2luZ2xl
T2JqZWN0KEV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7CisgICAgICAgIEtlQ2xlYXJFdmVudChFdmVudCk7CisKKyAgICAgICAgaWYgKFRocmVhZElz
QWxlcnRlZChTZWxmKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEtlQWNxdWlyZVNw
aW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgJklycWwpOworCisgICAgICAgIC8vIEl0IGlzIG5vdCBz
YWZlIHRvIHVzZSBpbnRlcmZhY2VzIGJlZm9yZSB0aGlzIHBvaW50CisgICAgICAgIGlmIChGcm9u
dGVuZC0+U3RhdGUgPT0gRlJPTlRFTkRfVU5LTk9XTiB8fAorICAgICAgICAgICAgRnJvbnRlbmQt
PlN0YXRlID09IEZST05URU5EX0NMT1NFRCkKKyAgICAgICAgICAgIGdvdG8gbG9vcDsKKworICAg
ICAgICBpZiAoIUZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKQorICAgICAgICAgICAgZ290byBs
b29wOworCisgICAgICAgIGlmICghRnJvbnRlbmRJc0JhY2tlbmRPbmxpbmUoRnJvbnRlbmQpKQor
ICAgICAgICAgICAgUGRvUmVxdWVzdEVqZWN0KF9fRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKTsK
KworICAgIGxvb3A6CisgICAgICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGcm9udGVuZC0+TG9jaywg
SXJxbCk7CisKKyAgICAgICAgS2VTZXRFdmVudCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsIElPX05P
X0lOQ1JFTUVOVCwgRkFMU0UpOworICAgIH0KKworICAgIEtlU2V0RXZlbnQoJkZyb250ZW5kLT5F
amVjdEV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAgIFRyYWNlKCIlczogPD09
PT1cbiIsIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKSk7CisKKyAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7Cit9CisKK1ZPSUQKK0Zyb250ZW5kRWplY3RGYWlsZWQoCisgICAgSU4gUFhFTkNP
TlNfRlJPTlRFTkQgICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgS0lSUUwgICAgICAgICAgICAg
ICAgICAgSXJxbDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBMZW5ndGg7CisgICAgUENI
QVIgICAgICAgICAgICAgICAgICAgUGF0aDsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBz
dGF0dXM7CisKKyAgICBLZUFjcXVpcmVTcGluTG9jaygmRnJvbnRlbmQtPkxvY2ssICZJcnFsKTsK
KworICAgIEluZm8oIiVzOiBkZXZpY2UgZWplY3QgZmFpbGVkXG4iLCBfX0Zyb250ZW5kR2V0UGF0
aChGcm9udGVuZCkpOworCisgICAgTGVuZ3RoID0gc2l6ZW9mKCJlcnJvci8iKSArIChVTE9ORylz
dHJsZW4oX19Gcm9udGVuZEdldFBhdGgoRnJvbnRlbmQpKTsKKyAgICBQYXRoID0gX19Gcm9udGVu
ZEFsbG9jYXRlKExlbmd0aCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAg
IGlmIChQYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBzdGF0dXMgPSBS
dGxTdHJpbmdDYlByaW50ZkEoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IvJXMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCkp
OworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOworCisg
ICAgKFZPSUQpWEVOQlVTX1NUT1JFKFByaW50ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgJkZy
b250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgImVycm9y
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIlVOUExVRyBGQUlMRUQ6IGRldmljZSBpcyBzdGls
bCBpbiB1c2UiKTsKKworICAgIF9fRnJvbnRlbmRGcmVlKFBhdGgpOworCisgICAgS2VSZWxlYXNl
U3BpbkxvY2soJkZyb250ZW5kLT5Mb2NrLCBJcnFsKTsKKyAgICByZXR1cm47CisKK2ZhaWwyOgor
ICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBfX0Zyb250ZW5kRnJlZShQYXRoKTsKKworZmFp
bDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIEtlUmVsZWFz
ZVNwaW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgSXJxbCk7Cit9CisKK3N0YXRpYyBWT0lECitGcm9u
dGVuZFNldE9ubGluZSgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZAorICAg
ICkKK3sKKyAgICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgRnJvbnRlbmQtPk9ubGluZSA9IFRS
VUU7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworfQorCitzdGF0aWMgVk9JRAorRnJvbnRlbmRT
ZXRPZmZsaW5lKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKQor
eworICAgIFRyYWNlKCI9PT09PlxuIik7CisKKyAgICBGcm9udGVuZC0+T25saW5lID0gRkFMU0U7
CisgICAgUGRvUmVxdWVzdEVqZWN0KF9fRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKTsKKworICAg
IFRyYWNlKCI8PT09PVxuIik7Cit9CisKK3N0YXRpYyBWT0lECitGcm9udGVuZFNldFhlbmJ1c1N0
YXRlKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kLAorICAgIElOICBYZW5i
dXNTdGF0ZSAgICAgICAgIFN0YXRlCisgICAgKQoreworICAgIEJPT0xFQU4gICAgICAgICAgICAg
ICAgIE9ubGluZTsKKworICAgIFRyYWNlKCIlczogPT09PT4gJXNcbiIsCisgICAgICAgICAgX19G
cm9udGVuZEdldFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgIFhlbmJ1c1N0YXRlTmFtZShTdGF0
ZSkpOworCisgICAgQVNTRVJUKEZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKTsKKworICAgIE9u
bGluZSA9IEZyb250ZW5kSXNCYWNrZW5kT25saW5lKEZyb250ZW5kKTsKKworICAgIChWT0lEKVhF
TkJVU19TVE9SRShQcmludGYsCisgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3Rv
cmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAg
ICAgICAgICAgIF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgInN0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgU3RhdGUpOworCisgICAgaWYgKFN0YXRlID09IFhlbmJ1c1N0YXRlQ2xvc2Vk
ICYmICFPbmxpbmUpCisgICAgICAgIEZyb250ZW5kU2V0T2ZmbGluZShGcm9udGVuZCk7CisKKyAg
ICBUcmFjZSgiJXM6IDw9PT09ICVzXG4iLAorICAgICAgICAgIF9fRnJvbnRlbmRHZXRQYXRoKEZy
b250ZW5kKSwKKyAgICAgICAgICBYZW5idXNTdGF0ZU5hbWUoU3RhdGUpKTsKK30KKworc3RhdGlj
IFZPSUQKK0Zyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZSgKKyAgICBJTiAg
ICAgIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQsCisgICAgSU4gT1VUICBYZW5idXNTdGF0
ZSAgICAgICAgICpTdGF0ZQorICAgICkKK3sKKyAgICBLRVZFTlQgICAgICAgICAgICAgICAgICAg
ICAgRXZlbnQ7CisgICAgUFhFTkJVU19TVE9SRV9XQVRDSCAgICAgICAgIFdhdGNoOworICAgIExB
UkdFX0lOVEVHRVIgICAgICAgICAgICAgICBTdGFydDsKKyAgICBVTE9OR0xPTkcgICAgICAgICAg
ICAgICAgICAgVGltZURlbHRhOworICAgIExBUkdFX0lOVEVHRVIgICAgICAgICAgICAgICBUaW1l
b3V0OworICAgIFhlbmJ1c1N0YXRlICAgICAgICAgICAgICAgICBPbGQgPSAqU3RhdGU7CisgICAg
TlRTVEFUVVMgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKKworICAgIFRyYWNlKCIlczogPT09
PT4gJXNcbiIsCisgICAgICAgICAgX19Gcm9udGVuZEdldEJhY2tlbmRQYXRoKEZyb250ZW5kKSwK
KyAgICAgICAgICBYZW5idXNTdGF0ZU5hbWUoKlN0YXRlKSk7CisKKyAgICBBU1NFUlQoRnJvbnRl
bmRJc09ubGluZShGcm9udGVuZCkpOworCisgICAgS2VJbml0aWFsaXplRXZlbnQoJkV2ZW50LCBO
b3RpZmljYXRpb25FdmVudCwgRkFMU0UpOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKFdh
dGNoQWRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgo
RnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdGUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAmRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZXYXRj
aCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIFdhdGNoID0gTlVMTDsK
KworICAgIEtlUXVlcnlTeXN0ZW1UaW1lKCZTdGFydCk7CisgICAgVGltZURlbHRhID0gMDsKKwor
ICAgIFRpbWVvdXQuUXVhZFBhcnQgPSAwOworCisgICAgd2hpbGUgKCpTdGF0ZSA9PSBPbGQgJiYg
VGltZURlbHRhIDwgMTIwMDAwKSB7CisgICAgICAgIFBDSEFSICAgICAgICAgICBCdWZmZXI7Cisg
ICAgICAgIExBUkdFX0lOVEVHRVIgICBOb3c7CisKKyAgICAgICAgaWYgKFdhdGNoICE9IE5VTEwp
IHsKKyAgICAgICAgICAgIFVMT05HICAgQXR0ZW1wdCA9IDA7CisKKyAgICAgICAgICAgIHdoaWxl
ICgrK0F0dGVtcHQgPCAxMDAwKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gS2VXYWl0Rm9y
U2luZ2xlT2JqZWN0KCZFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJlRpbWVvdXQpOworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0g
U1RBVFVTX1RJTUVPVVQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIHdhaXRpbmcgZm9yIGEgd2F0Y2ggZXZlbnQgYXQgRElTUEFUQ0hfTEVW
RUwgc28KKyAgICAgICAgICAgICAgICAvLyBpdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gcG9s
bCB0aGUgc3RvcmUgcmluZy4KKyAgICAgICAgICAgICAgICBYRU5CVVNfU1RPUkUoUG9sbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7CisK
KyAgICAgICAgICAgICAgICBLZVN0YWxsRXhlY3V0aW9uUHJvY2Vzc29yKDEwMDApOyAgIC8vIDFt
cworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBLZUNsZWFyRXZlbnQoJkV2ZW50KTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInN0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZCdWZm
ZXIpOworICAgICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAgICAgKlN0
YXRlID0gWGVuYnVzU3RhdGVVbmtub3duOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
KlN0YXRlID0gKFhlbmJ1c1N0YXRlKXN0cnRvbChCdWZmZXIsIE5VTEwsIDEwKTsKKworICAgICAg
ICAgICAgWEVOQlVTX1NUT1JFKEZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250
ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIpOwor
ICAgICAgICB9CisKKyAgICAgICAgS2VRdWVyeVN5c3RlbVRpbWUoJk5vdyk7CisKKyAgICAgICAg
VGltZURlbHRhID0gKE5vdy5RdWFkUGFydCAtIFN0YXJ0LlF1YWRQYXJ0KSAvIDEwMDAwdWxsOwor
ICAgIH0KKworICAgIGlmIChXYXRjaCAhPSBOVUxMKQorICAgICAgICAoVk9JRCkgWEVOQlVTX1NU
T1JFKFdhdGNoUmVtb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+
U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2gpOworCisg
ICAgVHJhY2UoIiVzOiA8PT09PSAoJXMpXG4iLAorICAgICAgICAgIF9fRnJvbnRlbmRHZXRCYWNr
ZW5kUGF0aChGcm9udGVuZCksCisgICAgICAgICAgWGVuYnVzU3RhdGVOYW1lKCpTdGF0ZSkpOwor
fQorCitzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5kQWNxdWlyZUJhY2tlbmQoCisgICAgSU4gIFBY
RU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgUENIQVIgICAgICAgICAg
ICAgICAgICAgQnVmZmVyOworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsKKwor
ICAgIFRyYWNlKCI9PT09PT5cbiIpOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKFJlYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fRnJvbnRlbmRHZXRQYXRoKEZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ImJhY2tlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmQnVmZmVyKTsKKyAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIEZyb250ZW5k
LT5CYWNrZW5kUGF0aCA9IEJ1ZmZlcjsKKworICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJiYWNrZW5kLWlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkJ1ZmZlcik7CisgICAg
aWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpIHsKKyAgICAgICAgRnJvbnRlbmQtPkJhY2tlbmREb21h
aW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIEZyb250ZW5kLT5CYWNrZW5kRG9tYWluID0g
KFVTSE9SVClzdHJ0b2woQnVmZmVyLCBOVUxMLCAxMCk7CisKKyAgICAgICAgWEVOQlVTX1NUT1JF
KEZyZWUsCisgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7
CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRp
YyBWT0lECitGcm9udGVuZFJlbGVhc2VCYWNrZW5kKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVO
RCAgIEZyb250ZW5kCisgICAgKQoreworICAgIFRyYWNlKCI9PT09PT5cbiIpOworCisgICAgQVNT
RVJUKEZyb250ZW5kLT5CYWNrZW5kRG9tYWluICE9IERPTUlEX0lOVkFMSUQpOworICAgIEFTU0VS
VChGcm9udGVuZC0+QmFja2VuZFBhdGggIT0gTlVMTCk7CisKKyAgICBGcm9udGVuZC0+QmFja2Vu
ZERvbWFpbiA9IERPTUlEX0lOVkFMSUQ7CisKKyAgICBYRU5CVVNfU1RPUkUoRnJlZSwKKyAgICAg
ICAgICAgICAgICAgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
RnJvbnRlbmQtPkJhY2tlbmRQYXRoKTsKKyAgICBGcm9udGVuZC0+QmFja2VuZFBhdGggPSBOVUxM
OworCisgICAgVHJhY2UoIjw9PT09PVxuIik7Cit9CisKK3N0YXRpYyBWT0lECitGcm9udGVuZENs
b3NlKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKQoreworICAg
IFhlbmJ1c1N0YXRlICAgICAgICAgICAgIFN0YXRlOworCisgICAgVHJhY2UoIj09PT0+XG4iKTsK
KworICAgIEFTU0VSVChGcm9udGVuZC0+V2F0Y2ggIT0gTlVMTCk7CisgICAgKFZPSUQpWEVOQlVT
X1NUT1JFKFdhdGNoUmVtb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0
b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+V2F0Y2gpOwor
ICAgIEZyb250ZW5kLT5XYXRjaCA9IE5VTEw7CisKKyAgICBTdGF0ZSA9IFhlbmJ1c1N0YXRlVW5r
bm93bjsKKyAgICB3aGlsZSAoU3RhdGUgIT0gWGVuYnVzU3RhdGVDbG9zZWQpIHsKKyAgICAgICAg
aWYgKCFGcm9udGVuZElzT25saW5lKEZyb250ZW5kKSkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIEZyb250ZW5kU2V0WGVuYnVzU3RhdGUoRnJvbnRlbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQpOworCisgICAgICAgIEZyb250ZW5kV2Fp
dEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZShGcm9udGVuZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGF0ZSk7CisgICAgfQorCisgICAgRnJv
bnRlbmRSZWxlYXNlQmFja2VuZChGcm9udGVuZCk7CisKKyAgICBYRU5CVVNfU1RPUkUoUmVsZWFz
ZSwgJkZyb250ZW5kLT5TdG9yZUludGVyZmFjZSk7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOwor
fQorCitzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5kUHJlcGFyZSgKKyAgICBJTiAgUFhFTkNPTlNf
RlJPTlRFTkQgICBGcm9udGVuZAorICAgICkKK3sKKyAgICBYZW5idXNTdGF0ZSAgICAgICAgICAg
ICBTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBUcmFj
ZSgiPT09PT5cbiIpOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NUT1JFKEFjcXVpcmUsICZGcm9u
dGVuZC0+U3RvcmVJbnRlcmZhY2UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAg
ICAgICBnb3RvIGZhaWwxOworCisgICAgRnJvbnRlbmRTZXRPbmxpbmUoRnJvbnRlbmQpOworCisg
ICAgc3RhdHVzID0gRnJvbnRlbmRBY3F1aXJlQmFja2VuZChGcm9udGVuZCk7CisgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBTdGF0ZSA9IFhl
bmJ1c1N0YXRlVW5rbm93bjsKKyAgICB3aGlsZSAoU3RhdGUgIT0gWGVuYnVzU3RhdGVJbml0V2Fp
dCkgeworICAgICAgICBpZiAoIUZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyk7CisK
KyAgICAgICAgRnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRl
KTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlmIChT
dGF0ZSAhPSBYZW5idXNTdGF0ZUluaXRXYWl0KQorICAgICAgICBnb3RvIGZhaWwzOworCisgICAg
c3RhdHVzID0gWEVOQlVTX1NUT1JFKFdhdGNoQWRkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAib25saW5lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkR2V0RXZlbnQo
RnJvbnRlbmQtPkVqZWN0VGhyZWFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250
ZW5kLT5XYXRjaCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8g
ZmFpbDQ7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VT
UzsKKworZmFpbDQ6CisgICAgRXJyb3IoImZhaWw0XG4iKTsKKworZmFpbDM6CisgICAgRXJyb3Io
ImZhaWwzXG4iKTsKKworICAgIEZyb250ZW5kUmVsZWFzZUJhY2tlbmQoRnJvbnRlbmQpOworCitm
YWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgRnJvbnRlbmRTZXRPZmZsaW5lKEZy
b250ZW5kKTsKKworICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmRnJvbnRlbmQtPlN0b3JlSW50
ZXJmYWNlKTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsK
KworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBWT0lECitGcm9udGVuZERlYnVnQ2Fs
bGJhY2soCisgICAgSU4gIFBWT0lEICAgICAgICAgICAgICAgQXJndW1lbnQsCisgICAgSU4gIEJP
T0xFQU4gICAgICAgICAgICAgQ3Jhc2hpbmcKKyAgICApCit7CisgICAgUFhFTkNPTlNfRlJPTlRF
TkQgICAgICAgRnJvbnRlbmQgPSBBcmd1bWVudDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVU
RVIoQ3Jhc2hpbmcpOworCisgICAgWEVOQlVTX0RFQlVHKFByaW50ZiwKKyAgICAgICAgICAgICAg
ICAgJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIlBBVEg6ICVz
XG4iLAorICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCkpOworICAg
IFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJOQU1FOiAlc1xuIiwKKyAgICAgICAgICAgICAg
ICAgRnJvbnRlbmQtPk5hbWUpOworICAgIFhFTkJVU19ERUJVRyhQcmludGYsCisgICAgICAgICAg
ICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJQUk9U
T0NPTDogJXNcbiIsCisgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5Qcm90b2NvbCk7Cit9CisK
K3N0YXRpYyBOVFNUQVRVUworRnJvbnRlbmRDb25uZWN0KAorICAgIElOICBQWEVOQ09OU19GUk9O
VEVORCAgIEZyb250ZW5kCisgICAgKQoreworICAgIFhlbmJ1c1N0YXRlICAgICAgICAgICAgIFN0
YXRlOworICAgIFVMT05HICAgICAgICAgICAgICAgICAgIEF0dGVtcHQ7CisgICAgUENIQVIgICAg
ICAgICAgICAgICAgICAgQnVmZmVyOworICAgIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0
aDsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBUcmFjZSgiPT09
PT5cbiIpOworCisgICAgc3RhdHVzID0gWEVOQlVTX0RFQlVHKEFjcXVpcmUsICZGcm9udGVuZC0+
RGVidWdJbnRlcmZhY2UpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgc3RhdHVzID0gWEVOQlVTX0RFQlVHKFJlZ2lzdGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX01PRFVMRV9fICJ8RlJPTlRFTkQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBGcm9udGVuZERlYnVnQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyb250ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPkRlYnVn
Q2FsbGJhY2spOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZh
aWwyOworCisgICAgLy8gVE9ETzogQ29ubmVjdCBSaW5nCisKKyAgICBBdHRlbXB0ID0gMDsKKyAg
ICBkbyB7CisgICAgICAgIFBYRU5CVVNfU1RPUkVfVFJBTlNBQ1RJT04gICBUcmFuc2FjdGlvbjsK
KworICAgICAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoVHJhbnNhY3Rpb25TdGFydCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmVHJhbnNhY3Rpb24pOworICAgICAgICBpZiAoIU5U
X1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRPRE86
IFN0b3JlV3JpdGUgUmluZworCisgICAgICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShUcmFuc2Fj
dGlvbkVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworICAgICAgICBpZiAoc3RhdHVzICE9
IFNUQVRVU19SRVRSWSB8fCArK0F0dGVtcHQgPiAxMCkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNvbnRpbnVlOworCisgICAgLy9hYm9ydDoKKyAgICAvLyAgICAoVk9JRClYRU5CVVNf
U1RPUkUoVHJhbnNhY3Rpb25FbmQsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICZGcm9u
dGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
YWN0aW9uLAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7CisgICAgLy8gICAg
YnJlYWs7CisgICAgfSB3aGlsZSAoc3RhdHVzID09IFNUQVRVU19SRVRSWSk7CisKKyAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsNDsKKworICAgIFN0YXRlID0g
WGVuYnVzU3RhdGVVbmtub3duOworICAgIHdoaWxlIChTdGF0ZSAhPSBYZW5idXNTdGF0ZUNvbm5l
Y3RlZCkgeworICAgICAgICBpZiAoIUZyb250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7CisK
KyAgICAgICAgRnJvbnRlbmRXYWl0Rm9yQmFja2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRl
KTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlmIChT
dGF0ZSAhPSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkKKyAgICAgICAgZ290byBmYWlsNTsKKworICAg
IHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAm
RnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250ZW5kR2V0QmFja2VuZFBhdGgoRnJv
bnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICZCdWZmZXIpOworICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsKKyAg
ICAgICAgTGVuZ3RoID0gKFVMT05HKXN0cmxlbihCdWZmZXIpOworCisgICAgICAgIEZyb250ZW5k
LT5OYW1lID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0aCk7CisgICAgICAgIGlmIChGcm9udGVu
ZC0+TmFtZSkKKyAgICAgICAgICAgIFJ0bENvcHlNZW1vcnkoRnJvbnRlbmQtPk5hbWUsIEJ1ZmZl
ciwgTGVuZ3RoKTsKKworICAgICAgICBYRU5CVVNfU1RPUkUoRnJlZSwKKyAgICAgICAgICAgICAg
ICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICBC
dWZmZXIpOworICAgIH0KKworICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShSZWFkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX0Zyb250
ZW5kR2V0QmFja2VuZFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
cHJvdG9jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmQnVmZmVyKTsKKyAgICBpZiAo
TlRfU1VDQ0VTUyhzdGF0dXMpKSB7CisgICAgICAgIExlbmd0aCA9IChVTE9ORylzdHJsZW4oQnVm
ZmVyKTsKKworICAgICAgICBGcm9udGVuZC0+UHJvdG9jb2wgPSBfX0Zyb250ZW5kQWxsb2NhdGUo
TGVuZ3RoKTsKKyAgICAgICAgaWYgKEZyb250ZW5kLT5Qcm90b2NvbCkKKyAgICAgICAgICAgIFJ0
bENvcHlNZW1vcnkoRnJvbnRlbmQtPlByb3RvY29sLCBCdWZmZXIsIExlbmd0aCk7CisKKyAgICAg
ICAgWEVOQlVTX1NUT1JFKEZyZWUsCisgICAgICAgICAgICAgICAgICAgICAmRnJvbnRlbmQtPlN0
b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgQnVmZmVyKTsKKyAgICB9CisKKyAg
ICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6
CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKworZmFpbDQ6CisgICAgRXJyb3IoImZhaWw0XG4iKTsK
KworLy9mYWlsMzoKKyAgICBFcnJvcigiZmFpbDNcbiIpOworCitmYWlsMjoKKyAgICBFcnJvcigi
ZmFpbDJcbiIpOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMp
OworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIFZPSUQKK0Zyb250ZW5kRGlzY29u
bmVjdCgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZAorICAgICkKK3sKKyAg
ICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgX19Gcm9udGVuZEZyZWUoRnJvbnRlbmQtPlByb3Rv
Y29sKTsKKyAgICBGcm9udGVuZC0+UHJvdG9jb2wgPSBOVUxMOworCisgICAgX19Gcm9udGVuZEZy
ZWUoRnJvbnRlbmQtPk5hbWUpOworICAgIEZyb250ZW5kLT5OYW1lID0gTlVMTDsKKworICAgIC8v
IFRPRE86IERpc2Nvbm5lY3QgUmluZworCisgICAgWEVOQlVTX0RFQlVHKERlcmVnaXN0ZXIsCisg
ICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgIEZyb250ZW5kLT5EZWJ1Z0NhbGxiYWNrKTsKKyAgICBGcm9udGVuZC0+RGVidWdDYWxsYmFj
ayA9IE5VTEw7CisKKyAgICBYRU5CVVNfREVCVUcoUmVsZWFzZSwgJkZyb250ZW5kLT5EZWJ1Z0lu
dGVyZmFjZSk7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworfQorCitzdGF0aWMgTlRTVEFUVVMK
K0Zyb250ZW5kRW5hYmxlKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgICBGcm9udGVuZAor
ICAgICkKK3sKKyAgICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFN
RVRFUihGcm9udGVuZCk7CisgICAgLy8gVE9ETzogRW5hYmxlIFJpbmcKKworICAgIFRyYWNlKCI8
PT09PVxuIik7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBWT0lE
CitGcm9udGVuZERpc2FibGUoCisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQK
KyAgICApCit7CisgICAgVHJhY2UoIj09PT0+XG4iKTsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRnJvbnRlbmQpOworICAgIC8vIFRPRE86IERpc2FibGUgUmluZworCisgICAgVHJhY2Uo
Ijw9PT09XG4iKTsKK30KKworc3RhdGljIE5UU1RBVFVTCitGcm9udGVuZFNldFN0YXRlKAorICAg
IElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kLAorICAgIElOICBGUk9OVEVORF9TVEFU
RSAgICAgIFN0YXRlCisgICAgKQoreworICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEZhaWxl
ZDsKKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworCisgICAgS2VBY3F1aXJlU3Bp
bkxvY2soJkZyb250ZW5kLT5Mb2NrLCAmSXJxbCk7CisKKyAgICBJbmZvKCIlczogPT09PT4gJyVz
JyAtPiAnJXMnXG4iLAorICAgICAgICAgICAgX19Gcm9udGVuZEdldFBhdGgoRnJvbnRlbmQpLAor
ICAgICAgICAgICAgRnJvbnRlbmRTdGF0ZU5hbWUoRnJvbnRlbmQtPlN0YXRlKSwKKyAgICAgICAg
ICAgIEZyb250ZW5kU3RhdGVOYW1lKFN0YXRlKSk7CisKKyAgICBGYWlsZWQgPSBGQUxTRTsKKyAg
ICB3aGlsZSAoRnJvbnRlbmQtPlN0YXRlICE9IFN0YXRlICYmICFGYWlsZWQpIHsKKyAgICAgICAg
TlRTVEFUVVMgICAgc3RhdHVzOworCisgICAgICAgIHN3aXRjaCAoRnJvbnRlbmQtPlN0YXRlKSB7
CisgICAgICAgIGNhc2UgRlJPTlRFTkRfVU5LTk9XTjoKKyAgICAgICAgICAgIHN3aXRjaCAoU3Rh
dGUpIHsKKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfQ0xPU0VEOgorICAgICAgICAgICAgY2Fz
ZSBGUk9OVEVORF9QUkVQQVJFRDoKKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfQ09OTkVDVEVE
OgorICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIHN0
YXR1cyA9IEZyb250ZW5kUHJlcGFyZShGcm9udGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKE5U
X1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3RhdGUg
PSBGUk9OVEVORF9QUkVQQVJFRDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBGYWlsZWQgPSBUUlVFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NF
UlQoRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBGUk9OVEVORF9DTE9TRUQ6CisgICAgICAgICAg
ICBzd2l0Y2ggKFN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIEZST05URU5EX1BSRVBBUkVEOgor
ICAgICAgICAgICAgY2FzZSBGUk9OVEVORF9DT05ORUNURUQ6CisgICAgICAgICAgICBjYXNlIEZS
T05URU5EX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgc3RhdHVzID0gRnJvbnRlbmRQcmVwYXJl
KEZyb250ZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoTlRfU1VDQ0VTUyhzdGF0dXMpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdGF0ZSA9IEZST05URU5EX1BSRVBBUkVEOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEZhaWxlZCA9IFRS
VUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBjYXNlIEZST05URU5EX1VOS05PV046CisgICAgICAgICAgICAgICAgRnJvbnRlbmQtPlN0
YXRlID0gRlJPTlRFTkRfVU5LTk9XTjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBGUk9OVEVORF9QUkVQQVJFRDoKKyAgICAgICAgICAgIHN3aXRjaCAoU3RhdGUpIHsK
KyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfQ09OTkVDVEVEOgorICAgICAgICAgICAgY2FzZSBG
Uk9OVEVORF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIHN0YXR1cyA9IEZyb250ZW5kQ29ubmVj
dChGcm9udGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgewor
ICAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9DT05ORUNURUQ7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRD
bG9zZShGcm9udGVuZCk7CisgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdGF0ZSA9IEZS
T05URU5EX0NMT1NFRDsKKworICAgICAgICAgICAgICAgICAgICBGYWlsZWQgPSBUUlVFOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSBGUk9OVEVORF9DTE9TRUQ6CisgICAgICAgICAgICBjYXNlIEZST05URU5EX1VOS05PV046Cisg
ICAgICAgICAgICAgICAgRnJvbnRlbmRDbG9zZShGcm9udGVuZCk7CisgICAgICAgICAgICAgICAg
RnJvbnRlbmQtPlN0YXRlID0gRlJPTlRFTkRfQ0xPU0VEOworICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEZST05URU5EX0NPTk5FQ1RFRDoKKyAgICAgICAgICAgIHN3aXRj
aCAoU3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfRU5BQkxFRDoKKyAgICAgICAg
ICAgICAgICBzdGF0dXMgPSBGcm9udGVuZEVuYWJsZShGcm9udGVuZCk7CisgICAgICAgICAgICAg
ICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICBGcm9udGVu
ZC0+U3RhdGUgPSBGUk9OVEVORF9FTkFCTEVEOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIEZyb250ZW5kQ2xvc2UoRnJvbnRlbmQpOworICAgICAgICAgICAg
ICAgICAgICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9DTE9TRUQ7CisKKyAgICAgICAgICAg
ICAgICAgICAgRnJvbnRlbmREaXNjb25uZWN0KEZyb250ZW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgRmFpbGVkID0gVFJVRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfUFJFUEFSRUQ6CisgICAgICAgICAgICBj
YXNlIEZST05URU5EX0NMT1NFRDoKKyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfVU5LTk9XTjoK
KyAgICAgICAgICAgICAgICBGcm9udGVuZENsb3NlKEZyb250ZW5kKTsKKyAgICAgICAgICAgICAg
ICBGcm9udGVuZC0+U3RhdGUgPSBGUk9OVEVORF9DTE9TRUQ7CisKKyAgICAgICAgICAgICAgICBG
cm9udGVuZERpc2Nvbm5lY3QoRnJvbnRlbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEZST05URU5EX0VOQUJMRUQ6CisgICAgICAgICAgICBzd2l0Y2ggKFN0YXRl
KSB7CisgICAgICAgICAgICBjYXNlIEZST05URU5EX0NPTk5FQ1RFRDoKKyAgICAgICAgICAgIGNh
c2UgRlJPTlRFTkRfUFJFUEFSRUQ6CisgICAgICAgICAgICBjYXNlIEZST05URU5EX0NMT1NFRDoK
KyAgICAgICAgICAgIGNhc2UgRlJPTlRFTkRfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICBGcm9u
dGVuZERpc2FibGUoRnJvbnRlbmQpOworICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdGF0ZSA9
IEZST05URU5EX0NPTk5FQ1RFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVChGQUxTRSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIEluZm8oIiVzIGluIHN0YXRlICclcydcbiIsCisgICAgICAg
ICAgICAgICAgX19Gcm9udGVuZEdldFBhdGgoRnJvbnRlbmQpLAorICAgICAgICAgICAgICAgIEZy
b250ZW5kU3RhdGVOYW1lKEZyb250ZW5kLT5TdGF0ZSkpOworICAgIH0KKworICAgIEtlUmVsZWFz
ZVNwaW5Mb2NrKCZGcm9udGVuZC0+TG9jaywgSXJxbCk7CisKKyAgICBJbmZvKCIlczogPD09PT09
XG4iLCBfX0Zyb250ZW5kR2V0UGF0aChGcm9udGVuZCkpOworCisgICAgcmV0dXJuICghRmFpbGVk
KSA/IFNUQVRVU19TVUNDRVNTIDogU1RBVFVTX1VOU1VDQ0VTU0ZVTDsKK30KKworc3RhdGljIEZP
UkNFSU5MSU5FIFZPSUQKK19fRnJvbnRlbmRSZXN1bWUoCisgICAgSU4gIFBYRU5DT05TX0ZST05U
RU5EICAgIEZyb250ZW5kCisgICAgKQoreworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwo
KSwgPT0gLCBESVNQQVRDSF9MRVZFTCk7CisKKyAgICBBU1NFUlQzVShGcm9udGVuZC0+U3RhdGUs
ID09ICwgRlJPTlRFTkRfVU5LTk9XTik7CisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9u
dGVuZCk7CisgICAgLy8oVk9JRClGcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBGUk9OVEVORF9D
TE9TRUQpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Gcm9udGVuZFN1c3BlbmQo
CisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAgQVNT
RVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIERJU1BBVENIX0xFVkVMKTsKKworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOworICAgIC8vKFZPSUQpRnJvbnRlbmRTZXRT
dGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfVU5LTk9XTik7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19O
T0lOTElORSBWT0lECitGcm9udGVuZFN1c3BlbmRDYWxsYmFjaygKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgIEFyZ3VtZW50CisgICAgKQoreworICAgIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRl
bmQgPSBBcmd1bWVudDsKKworICAgIF9fRnJvbnRlbmRTdXNwZW5kKEZyb250ZW5kKTsKKyAgICBf
X0Zyb250ZW5kUmVzdW1lKEZyb250ZW5kKTsKK30KKworc3RhdGljIE5UU1RBVFVTCitGcm9udGVu
ZFJlc3VtZSgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZAorICAgICkKK3sK
KyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworICAgIE5UU1RBVFVTICAgICAgICAg
ICAgICAgIHN0YXR1czsKKworICAgIFRyYWNlKCI9PT09PlxuIik7CisKKyAgICBLZVJhaXNlSXJx
bChESVNQQVRDSF9MRVZFTCwgJklycWwpOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQo
QWNxdWlyZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKKyAgICBpZiAoIU5UX1NVQ0NF
U1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIF9fRnJvbnRlbmRSZXN1bWUo
RnJvbnRlbmQpOworCisgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoUmVnaXN0ZXIsCisgICAg
ICAgICAgICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICBTVVNQRU5E
X0NBTExCQUNLX0xBVEUsCisgICAgICAgICAgICBGcm9udGVuZFN1c3BlbmRDYWxsYmFjaywKKyAg
ICAgICAgICAgIEZyb250ZW5kLAorICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kQ2FsbGJh
Y2spOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwyOwor
CisgICAgS2VMb3dlcklycWwoSXJxbCk7CisKKyAgICBLZUNsZWFyRXZlbnQoJkZyb250ZW5kLT5F
amVjdEV2ZW50KTsKKyAgICBUaHJlYWRXYWtlKEZyb250ZW5kLT5FamVjdFRocmVhZCk7CisKKyAg
ICBUcmFjZSgid2FpdGluZyBmb3IgZWplY3QgdGhyZWFkXG4iKTsKKworICAgIChWT0lEKUtlV2Fp
dEZvclNpbmdsZU9iamVjdCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsCisgICAgICAgICAgICAgICAg
RXhlY3V0aXZlLAorICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAg
RkFMU0UsCisgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOwor
CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJc
biIpOworCisgICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRlbmQpOworCisgICAgWEVOQlVTX1NV
U1BFTkQoUmVsZWFzZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKKworZmFpbDE6Cisg
ICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIEtlTG93ZXJJcnFsKEly
cWwpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIFZPSUQKK0Zyb250ZW5kU3Vz
cGVuZCgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZAorICAgICkKK3sKKyAg
ICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworCisgICAgVHJhY2UoIj09PT0+XG4iKTsK
KworICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7CisKKyAgICBYRU5CVVNf
U1VTUEVORChEZXJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVu
ZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNr
KTsKKyAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxiYWNrID0gTlVMTDsKKworICAgIF9fRnJvbnRl
bmRTdXNwZW5kKEZyb250ZW5kKTsKKworICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2UsICZGcm9u
dGVuZC0+U3VzcGVuZEludGVyZmFjZSk7CisKKyAgICBLZUxvd2VySXJxbChJcnFsKTsKKworICAg
IEtlQ2xlYXJFdmVudCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQpOworICAgIFRocmVhZFdha2UoRnJv
bnRlbmQtPkVqZWN0VGhyZWFkKTsKKworICAgIFRyYWNlKCJ3YWl0aW5nIGZvciBlamVjdCB0aHJl
YWRcbiIpOworCisgICAgKFZPSUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZGcm9udGVuZC0+RWpl
Y3RFdmVudCwKKyAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAgICAgICAgS2Vy
bmVsTW9kZSwKKyAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICBOVUxMKTsK
KworICAgIFRyYWNlKCI8PT09PVxuIik7Cit9CisKK3N0YXRpYyBWT0lECitGcm9udGVuZERlc3Ry
b3koCisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQKKyAgICApCit7CisgICAg
VHJhY2UoIj09PT09PlxuIik7CisKKyAgICBBU1NFUlQoRnJvbnRlbmQtPlJlZkNvdW50ID09IDAp
OworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsK
KworICAgIEFTU0VSVChGcm9udGVuZC0+U3RhdGUgPT0gRlJPTlRFTkRfVU5LTk9XTik7CisKKyAg
ICBUaHJlYWRBbGVydChGcm9udGVuZC0+RWplY3RUaHJlYWQpOworICAgIFRocmVhZEpvaW4oRnJv
bnRlbmQtPkVqZWN0VGhyZWFkKTsKKyAgICBGcm9udGVuZC0+RWplY3RUaHJlYWQgPSBOVUxMOwor
CisgICAgUnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsIHNpemVvZihLRVZFTlQp
KTsKKworICAgIC8vIFRPRE86IFRlYXJkb3duIFJpbmcKKworICAgIFJ0bFplcm9NZW1vcnkoJkZy
b250ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNf
U1RPUkVfSU5URVJGQUNFKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3VzcGVu
ZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1VTUEVORF9JTlRF
UkZBQ0UpKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7CisKKyAg
ICBGcm9udGVuZC0+T25saW5lID0gRkFMU0U7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVu
ZC0+TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsKKworICAgIEZyb250ZW5kLT5CYWNrZW5kRG9t
YWluID0gMDsKKworICAgIF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kLT5QYXRoKTsKKyAgICBGcm9u
dGVuZC0+UGF0aCA9IE5VTEw7CisKKyAgICBGcm9udGVuZC0+UGRvID0gTlVMTDsKKworICAgIEFT
U0VSVChJc1plcm9NZW1vcnkoRnJvbnRlbmQsIHNpemVvZihYRU5DT05TX0ZST05URU5EKSkpOwor
ICAgIF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kKTsKKworICAgIFRyYWNlKCI8PT09PT1cbiIpOwor
fQorCitzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5kQWJpQWNxdWlyZSgKKyAgICBJTiAgUFhFTkNP
TlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkNPTlNfRlJP
TlRFTkQgICAgICAgICAgICAgICBGcm9udGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0
OworICAgIEtJUlFMICAgICAgICAgICAgICAgICAgICAgICAgICAgSXJxbDsKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKKworICAgIEludGVybG9ja2VkSW5jcmVt
ZW50KCZGcm9udGVuZC0+UmVmQ291bnQpOworCisgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVW
RUwsICZJcnFsKTsKKworICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKEFjcXVpcmUsICZGcm9u
dGVuZC0+U3VzcGVuZEludGVyZmFjZSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisg
ICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBfX0Zyb250ZW5kUmVzdW1lKEZyb250ZW5kKTsKKwor
ICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKFJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTVVNQRU5EX0NBTExCQUNLX0xBVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnJvbnRlbmRTdXNwZW5kQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRnJvbnRlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNw
ZW5kQ2FsbGJhY2spOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3Rv
IGZhaWwyOworCisgICAgS2VMb3dlcklycWwoSXJxbCk7CisKKyAgICBLZUNsZWFyRXZlbnQoJkZy
b250ZW5kLT5FamVjdEV2ZW50KTsKKyAgICBUaHJlYWRXYWtlKEZyb250ZW5kLT5FamVjdFRocmVh
ZCk7CisKKyAgICBUcmFjZSgid2FpdGluZyBmb3IgZWplY3QgdGhyZWFkXG4iKTsKKworICAgIChW
T0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisg
ICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRlbmQpOworCisgICAgWEVOQlVTX1NVU1BFTkQoUmVs
ZWFzZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKKworZmFpbDE6CisgICAgRXJyb3Io
ImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIEtlTG93ZXJJcnFsKElycWwpOworCisg
ICAgSW50ZXJsb2NrZWREZWNyZW1lbnQoJkZyb250ZW5kLT5SZWZDb3VudCk7CisKKyAgICByZXR1
cm4gc3RhdHVzOworfQorCitzdGF0aWMgVk9JRAorRnJvbnRlbmRBYmlSZWxlYXNlKAorICAgIElO
ICBQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVO
Q09OU19GUk9OVEVORCAgICAgICAgICAgICAgIEZyb250ZW5kID0gKFBYRU5DT05TX0ZST05URU5E
KUNvbnRleHQ7CisgICAgTE9ORyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudDsKKyAg
ICBLSVJRTCAgICAgICAgICAgICAgICAgICAgICAgICAgIElycWw7CisKKyAgICBDb3VudCA9IElu
dGVybG9ja2VkRGVjcmVtZW50KCZGcm9udGVuZC0+UmVmQ291bnQpOworCisgICAgS2VSYWlzZUly
cWwoRElTUEFUQ0hfTEVWRUwsICZJcnFsKTsKKworICAgIFhFTkJVU19TVVNQRU5EKERlcmVnaXN0
ZXIsCisgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlLAorICAg
ICAgICAgICAgICAgICAgIEZyb250ZW5kLT5TdXNwZW5kQ2FsbGJhY2spOworICAgIEZyb250ZW5k
LT5TdXNwZW5kQ2FsbGJhY2sgPSBOVUxMOworCisgICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRl
bmQpOworCisgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50
ZXJmYWNlKTsKKworICAgIEtlTG93ZXJJcnFsKElycWwpOworCisgICAgS2VDbGVhckV2ZW50KCZG
cm9udGVuZC0+RWplY3RFdmVudCk7CisgICAgVGhyZWFkV2FrZShGcm9udGVuZC0+RWplY3RUaHJl
YWQpOworCisgICAgVHJhY2UoIndhaXRpbmcgZm9yIGVqZWN0IHRocmVhZFxuIik7CisKKyAgICAo
Vk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZyb250ZW5kLT5FamVjdEV2ZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGlm
IChDb3VudCA9PSAwKQorICAgICAgICBGcm9udGVuZERlc3Ryb3koRnJvbnRlbmQpOworfQorCitz
dGF0aWMgQk9PTEVBTgorRnJvbnRlbmRBYmlJc0RlZmF1bHQoCisgICAgSU4gIFBYRU5DT05TX0NP
TlNPTEVfQ09OVEVYVCAgICBDb250ZXh0CisgICAgKQoreworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoQ29udGV4dCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgTlRTVEFUVVMK
K0Zyb250ZW5kQWJpRDNUb0QwKAorICAgIElOICBQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQgICAg
Q29udGV4dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19GUk9OVEVORCAgICAgICAgICAgICAgIEZy
b250ZW5kID0gKFBYRU5DT05TX0ZST05URU5EKUNvbnRleHQ7CisKKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKEZyb250ZW5kKTsKKyAgICAvL3JldHVybiBGcm9udGVuZFNldFN0YXRlKEZyb250
ZW5kLCBGUk9OVEVORF9FTkFCTEVEKTsKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisK
K3N0YXRpYyBWT0lECitGcm9udGVuZEFiaUQwVG9EMygKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09M
RV9DT05URVhUICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAg
ICAgICAgICAgICBGcm9udGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0OworCisgICAg
VU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9udGVuZCk7CisgICAgLy8oVk9JRCkgRnJvbnRlbmRT
ZXRTdGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfQ0xPU0VEKTsKK30KKworc3RhdGljIE5UU1RBVFVT
CitGcm9udGVuZEFiaU9wZW4oCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBD
b250ZXh0LAorICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAgICAgICAgICAgRmlsZU9iamVjdAor
ICAgICkKK3sKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnRleHQpOworICAgIFVOUkVG
RVJFTkNFRF9QQVJBTUVURVIoRmlsZU9iamVjdCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNT
OworfQorCitzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5kQWJpQ2xvc2UoCisgICAgSU4gIFBYRU5D
T05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LAorICAgIElOICBQRklMRV9PQkpFQ1QgICAg
ICAgICAgICAgICAgRmlsZU9iamVjdAorICAgICkKK3sKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1F
VEVSKENvbnRleHQpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRmlsZU9iamVjdCk7Cisg
ICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5k
QWJpUHV0UXVldWUoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0
LAorICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAg
IFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7CisgICAgVU5SRUZFUkVOQ0VEX1BBUkFN
RVRFUihJcnApOworICAgIHJldHVybiBTVEFUVVNfREVWSUNFX05PVF9SRUFEWTsKK30KKworc3Rh
dGljIFhFTkNPTlNfQ09OU09MRV9BQkkgRnJvbnRlbmRBYmlWMSA9IHsKKyAgICBOVUxMLAorICAg
IEZyb250ZW5kQWJpQWNxdWlyZSwKKyAgICBGcm9udGVuZEFiaVJlbGVhc2UsCisgICAgRnJvbnRl
bmRBYmlJc0RlZmF1bHQsCisgICAgRnJvbnRlbmRBYmlEM1RvRDAsCisgICAgRnJvbnRlbmRBYmlE
MFRvRDMsCisgICAgRnJvbnRlbmRBYmlPcGVuLAorICAgIEZyb250ZW5kQWJpQ2xvc2UsCisgICAg
RnJvbnRlbmRBYmlQdXRRdWV1ZQorfTsKKworTlRTVEFUVVMKK0Zyb250ZW5kQ3JlYXRlKAorICAg
IElOICBQWEVOQ09OU19QRE8gICAgICAgICAgICBQZG8sCisgICAgSU4gIFBYRU5DT05TX0NPTlNP
TEVfQUJJICAgIENvbnNvbGVBYmkKKyAgICApCit7CisgICAgUENIQVIgICAgICAgICAgICAgICAg
ICAgICAgIE5hbWU7IAorICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGg7Cisg
ICAgUENIQVIgICAgICAgICAgICAgICAgICAgICAgIFBhdGg7CisgICAgUFhFTkNPTlNfRlJPTlRF
TkQgICAgICAgICAgIEZyb250ZW5kOworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICBz
dGF0dXM7CisKKyAgICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgTmFtZSA9IFBkb0dldE5hbWUo
UGRvKTsKKworICAgIExlbmd0aCA9IHNpemVvZigiZGV2aWNlcy9jb25zb2xlLyIpICsgKFVMT05H
KXN0cmxlbihOYW1lKTsKKyAgICAKKyAgICBQYXRoID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0
aCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChQYXRoID09IE5V
TEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBzdGF0dXMgPSBSdGxTdHJpbmdDYlByaW50
ZkEoUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlL2NvbnNvbGUvJXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIEZyb250ZW5kID0gX19Gcm9udGVuZEFsbG9j
YXRlKHNpemVvZihYRU5DT05TX0ZST05URU5EKSk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9f
TUVNT1JZOworICAgIGlmIChGcm9udGVuZCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWwzOwor
CisgICAgRnJvbnRlbmQtPlJlZkNvdW50ID0gMTsKKyAgICBGcm9udGVuZC0+UGRvID0gUGRvOwor
ICAgIEZyb250ZW5kLT5QYXRoID0gUGF0aDsKKyAgICBGcm9udGVuZC0+QmFja2VuZERvbWFpbiA9
IERPTUlEX0lOVkFMSUQ7CisKKyAgICBLZUluaXRpYWxpemVTcGluTG9jaygmRnJvbnRlbmQtPkxv
Y2spOworCisgICAgRmRvR2V0RGVidWdJbnRlcmZhY2UoUGRvR2V0RmRvKFBkbyksICZGcm9udGVu
ZC0+RGVidWdJbnRlcmZhY2UpOworICAgIEZkb0dldFN1c3BlbmRJbnRlcmZhY2UoUGRvR2V0RmRv
KFBkbyksICZGcm9udGVuZC0+U3VzcGVuZEludGVyZmFjZSk7CisgICAgRmRvR2V0U3RvcmVJbnRl
cmZhY2UoUGRvR2V0RmRvKFBkbyksICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UpOworCisgICAg
Ly8gVE9ETzogSW5pdGlhbGl6ZSBSaW5nCisKKyAgICBLZUluaXRpYWxpemVFdmVudCgmRnJvbnRl
bmQtPkVqZWN0RXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7CisKKyAgICBzdGF0dXMg
PSBUaHJlYWRDcmVhdGUoRnJvbnRlbmRFamVjdCwgRnJvbnRlbmQsICZGcm9udGVuZC0+RWplY3RU
aHJlYWQpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw1
OworCisgICAgKkNvbnNvbGVBYmkgPSBGcm9udGVuZEFiaVYxOworICAgIENvbnNvbGVBYmktPkNv
bnRleHQgPSAoUFhFTkNPTlNfQ09OU09MRV9DT05URVhUKUZyb250ZW5kOworCisgICAgVHJhY2Uo
Ijw9PT09XG4iKTsKKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDU6CisgICAg
RXJyb3IoImZhaWw1XG4iKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5FamVjdEV2
ZW50LCBzaXplb2YoS0VWRU5UKSk7CisKKyAgICAvLyBUT0RPOiBUZWFyZG93biBSaW5nCisKKy8v
ZmFpbDQ6CisgICAgRXJyb3IoImZhaWw0XG4iKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250
ZW5kLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1RP
UkVfSU5URVJGQUNFKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+U3VzcGVuZElu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1VTUEVORF9JTlRFUkZB
Q0UpKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAg
ICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfREVCVUdfSU5URVJGQUNFKSk7CisKKyAgICBG
cm9udGVuZC0+T25saW5lID0gRkFMU0U7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+
TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsKKworICAgIEZyb250ZW5kLT5CYWNrZW5kRG9tYWlu
ID0gMDsKKyAgICBGcm9udGVuZC0+UGF0aCA9IE5VTEw7CisgICAgRnJvbnRlbmQtPlBkbyA9IE5V
TEw7CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEZyb250ZW5kLCBzaXplb2YoWEVOQ09OU19G
Uk9OVEVORCkpKTsKKworICAgIF9fRnJvbnRlbmRGcmVlKEZyb250ZW5kKTsKKworZmFpbDM6Cisg
ICAgRXJyb3IoImZhaWwzXG4iKTsKKworZmFpbDI6CisgICAgRXJyb3IoImZhaWwyXG4iKTsKKwor
ICAgIF9fRnJvbnRlbmRGcmVlKFBhdGgpOworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4
KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKZGlmZiAtLWdpdCBhL3Ny
Yy94ZW5jb25zL2Zyb250ZW5kLmggYi9zcmMveGVuY29ucy9mcm9udGVuZC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4OWYzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv
eGVuY29ucy9mcm9udGVuZC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0
cml4IFN5c3RlbXMgSW5jLgorKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAorKiB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkCisqIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisqCisqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUKKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlcgorKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5ECisqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsCisqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GCisqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorKiBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyogV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKiBTVUNI
IERBTUFHRS4KKyovCisKKyNpZm5kZWYgX1hFTkNPTlNfRlJPTlRFTkRfSAorI2RlZmluZSBfWEVO
Q09OU19GUk9OVEVORF9ICisKKyNpbmNsdWRlIDxudGRkay5oPgorCisjaW5jbHVkZSAiZHJpdmVy
LmgiCisjaW5jbHVkZSAiY29uc29sZV9hYmkuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNf
RlJPTlRFTkQgWEVOQ09OU19GUk9OVEVORCwgKlBYRU5DT05TX0ZST05URU5EOworCitleHRlcm4g
TlRTVEFUVVMKK0Zyb250ZW5kQ3JlYXRlKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgICAgICAg
ICBQZG8sCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQUJJICAgIENvbnNvbGVBYmkKKyAgICAp
OworCitleHRlcm4gUFhFTkNPTlNfUERPCitGcm9udGVuZEdldFBkbygKKyAgICBJTiAgUFhFTkNP
TlNfRlJPTlRFTkQgICBGcm9udGVuZAorICAgICk7CisKK2V4dGVybiBQQ0hBUgorRnJvbnRlbmRH
ZXRQYXRoKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAgKTsKKwor
ZXh0ZXJuIFBDSEFSCitGcm9udGVuZEdldEJhY2tlbmRQYXRoKAorICAgIElOICBQWEVOQ09OU19G
Uk9OVEVORCAgIEZyb250ZW5kCisgICAgKTsKKworZXh0ZXJuIFVTSE9SVAorRnJvbnRlbmRHZXRC
YWNrZW5kRG9tYWluKAorICAgIElOICBQWEVOQ09OU19GUk9OVEVORCAgIEZyb250ZW5kCisgICAg
KTsKKworI2VuZGlmICAvLyBfWEVOQ09OU19GUk9OVEVORF9ICmRpZmYgLS1naXQgYS9zcmMveGVu
Y29ucy9wZG8uYyBiL3NyYy94ZW5jb25zL3Bkby5jCmluZGV4IDc0YmU3NTkuLjkzNWI2Y2EgMTAw
NzU1Ci0tLSBhL3NyYy94ZW5jb25zL3Bkby5jCisrKyBiL3NyYy94ZW5jb25zL3Bkby5jCkBAIC00
Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAicGRvLmgiCiAjaW5jbHVkZSAiY29uc29sZV9hYmkuaCIK
ICNpbmNsdWRlICJjb25zb2xlLmgiCisjaW5jbHVkZSAiZnJvbnRlbmQuaCIKICNpbmNsdWRlICJ0
aHJlYWQuaCIKICNpbmNsdWRlICJkYmdfcHJpbnQuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIKQEAg
LTE5NDUsNyArMTk0Niw3IEBAIFBkb0NyZWF0ZSgKICAgICBpZiAoRGV2aWNlID09IE5VTEwpCiAg
ICAgICAgIHN0YXR1cyA9IENvbnNvbGVDcmVhdGUoRmRvLCAmUGRvLT5Db25zb2xlQWJpKTsKICAg
ICBlbHNlCi0gICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOy8vIFRPRE86IGNyZWF0ZSBm
cm9udGVuZAorICAgICAgICBzdGF0dXMgPSBGcm9udGVuZENyZWF0ZShQZG8sICZQZG8tPkNvbnNv
bGVBYmkpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3RvIGZhaWw1
OwogCmRpZmYgLS1naXQgYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2ogYi92czIwMTUv
eGVuY29ucy94ZW5jb25zLnZjeHByb2oKaW5kZXggMmU5ZDIwOC4uODg0NmI4ZSAxMDA2NDQKLS0t
IGEvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCisrKyBiL3ZzMjAxNS94ZW5jb25zL3hl
bmNvbnMudmN4cHJvagpAQCAtNzAsNiArNzAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li4vLi4vc3JjL3hlbmNvbnMvcmVnaXN0cnkuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uLy4uL3NyYy94ZW5jb25zL2NvbnNvbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uLy4uL3NyYy94ZW5jb25zL3N0cmVhbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li4vLi4vc3JjL3hlbmNvbnMvZnJvbnRlbmQuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uLy4uL3NyYy94ZW5jb25zL3RocmVhZC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1H
cm91cD4KZGlmZiAtLWdpdCBhL3ZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJvaiBiL3ZzMjAx
Ny94ZW5jb25zL3hlbmNvbnMudmN4cHJvagppbmRleCA2YzY3ZmU4Li45ODExZGEwIDEwMDY0NAot
LS0gYS92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oKKysrIGIvdnMyMDE3L3hlbmNvbnMv
eGVuY29ucy52Y3hwcm9qCkBAIC03OCw2ICs3OCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLi8uLi9zcmMveGVuY29ucy9yZWdpc3RyeS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi4vLi4vc3JjL3hlbmNvbnMvY29uc29sZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi4vLi4vc3JjL3hlbmNvbnMvc3RyZWFtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLi8uLi9zcmMveGVuY29ucy9mcm9udGVuZC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi4vLi4vc3JjL3hlbmNvbnMvdGhyZWFkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:22:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:22:06 +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 1epEEd-0004u7-Hl; Fri, 23 Feb 2018 14:22:03 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEEc-0004tv-1U
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:22:02 +0000
X-Inumbo-ID: caf0e9d7-18a4-11e8-ba59-bc764e045a96
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id caf0e9d7-18a4-11e8-ba59-bc764e045a96;
 Fri, 23 Feb 2018 15:21:10 +0100 (CET)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185821"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:31 +0000
Message-ID: <20180223142142.12548-4-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 03/14 v2] Add boilerplate 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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKRW51bWVyYXRlcyBhIHNp
bmdsZSBzdGF0aWMgUmF3UGRvLgoKU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0
aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW5jb25zL2RyaXZlci5jICAgICAgICAgICB8ICAgIDgg
Kwogc3JjL3hlbmNvbnMvZHJpdmVyLmggICAgICAgICAgIHwgICAxMiArLQogc3JjL3hlbmNvbnMv
ZmRvLmMgICAgICAgICAgICAgIHwgIDQyNiArKysrKysrKy0KIHNyYy94ZW5jb25zL2Zkby5oICAg
ICAgICAgICAgICB8ICAgNDMgKwogc3JjL3hlbmNvbnMvbXV0ZXguaCAgICAgICAgICAgIHwgICA4
MiArKwogc3JjL3hlbmNvbnMvcGRvLmMgICAgICAgICAgICAgIHwgMTg2NSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMveGVuY29ucy9wZG8uaCAgICAgICAgICAg
ICAgfCAgMTEzICsrKwogdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qIHwgICAgMSArCiB2
czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2ogfCAgICAxICsKIDkgZmlsZXMgY2hhbmdlZCwg
MjU0MSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSBz
cmMveGVuY29ucy9tdXRleC5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvcGRvLmMK
IGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9wZG8uaAoKZGlmZiAtLWdpdCBhL3NyYy94
ZW5jb25zL2RyaXZlci5jIGIvc3JjL3hlbmNvbnMvZHJpdmVyLmMKaW5kZXggMzEyMWI5OS4uNWE0
ZDFkMyAxMDA2NDQKLS0tIGEvc3JjL3hlbmNvbnMvZHJpdmVyLmMKKysrIGIvc3JjL3hlbmNvbnMv
ZHJpdmVyLmMKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgInJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiZmRvLmgiCisjaW5jbHVkZSAicGRvLmgiCiAjaW5jbHVkZSAiZHJpdmVyLmgiCiAjaW5j
bHVkZSAiZGJnX3ByaW50LmgiCiAjaW5jbHVkZSAiYXNzZXJ0LmgiCkBAIC0yMDgsNiArMjA5LDEz
IEBAIERpc3BhdGNoKAogICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaChGZG8sIElycCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1Q6Cisg
ICAgeworICAgICAgICBQWEVOQ09OU19QRE8gUGRvID0gRHgtPlBkbzsKKworICAgICAgICBzdGF0
dXMgPSBQZG9EaXNwYXRjaChQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlQoRkFMU0UpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL3NyYy94ZW5jb25zL2RyaXZlci5oIGIvc3JjL3hlbmNvbnMvZHJpdmVyLmgKaW5kZXggNGEy
ZWI2MS4uZmI1ZWNlMCAxMDA2NDQKLS0tIGEvc3JjL3hlbmNvbnMvZHJpdmVyLmgKKysrIGIvc3Jj
L3hlbmNvbnMvZHJpdmVyLmgKQEAgLTUwLDEyICs1MCwxNyBAQCBEcml2ZXJHZXRQYXJhbWV0ZXJz
S2V5KAogICAgICk7CiAKIHR5cGVkZWYgc3RydWN0IF9YRU5DT05TX0ZETyBYRU5DT05TX0ZETywg
KlBYRU5DT05TX0ZETzsKK3R5cGVkZWYgc3RydWN0IF9YRU5DT05TX1BETyBYRU5DT05TX1BETywg
KlBYRU5DT05TX1BETzsKIAogI2luY2x1ZGUgImZkby5oIgorI2luY2x1ZGUgInBkby5oIgogCiAj
ZGVmaW5lIE1BWF9ERVZJQ0VfSURfTEVOICAgMjAwCiAjZGVmaW5lIE1BWF9HVUlEX1NUUklOR19M
RU4gMzkKIAorI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0
MjAxKSAvLyBub25zdGFuZGFyZCBleHRlbnNpb24gdXNlZCA6IG5hbWVsZXNzIHN0cnVjdC91bmlv
bgorCiB0eXBlZGVmIHN0cnVjdCBfWEVOQ09OU19EWCB7CiAgICAgUERFVklDRV9PQkpFQ1QgICAg
ICBEZXZpY2VPYmplY3Q7CiAgICAgREVWSUNFX09CSkVDVF9UWVBFICBUeXBlOwpAQCAtNzIsNyAr
NzcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfRFggewogCiAgICAgTElTVF9FTlRSWSAg
ICAgICAgICBMaXN0RW50cnk7CiAKLSAgICBQWEVOQ09OU19GRE8gICAgICAgIEZkbzsKKyAgICB1
bmlvbiB7CisgICAgICAgIFBYRU5DT05TX0ZETyAgICBGZG87CisgICAgICAgIFBYRU5DT05TX1BE
TyAgICBQZG87CisgICAgfTsKIH0gWEVOQ09OU19EWCwgKlBYRU5DT05TX0RYOwogCisjcHJhZ21h
IHdhcm5pbmcocG9wKQorCiAjZW5kaWYgIC8vIF9YRU5DT05TX0RSSVZFUl9ICmRpZmYgLS1naXQg
YS9zcmMveGVuY29ucy9mZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jCmluZGV4IDAxNzBlZjYuLjFj
NTMyM2MgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5jb25zL2Zkby5jCisrKyBiL3NyYy94ZW5jb25zL2Zk
by5jCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiZHJpdmVyLmgiCiAjaW5jbHVkZSAicmVn
aXN0cnkuaCIKICNpbmNsdWRlICJmZG8uaCIKKyNpbmNsdWRlICJwZG8uaCIKKyNpbmNsdWRlICJt
dXRleC5oIgogI2luY2x1ZGUgImNvbnNvbGUuaCIKICNpbmNsdWRlICJ0aHJlYWQuaCIKICNpbmNs
dWRlICJuYW1lcy5oIgpAQCAtODUsNiArODcsOSBAQCBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsKIAog
ICAgIENIQVIgICAgICAgICAgICAgICAgICAgICAgICBWZW5kb3JOYW1lW01BWE5BTUVMRU5dOwog
CisgICAgTVVURVggICAgICAgICAgICAgICAgICAgICAgIE11dGV4OworICAgIFVMT05HICAgICAg
ICAgICAgICAgICAgICAgICBSZWZlcmVuY2VzOworCiAgICAgRkRPX1JFU09VUkNFICAgICAgICAg
ICAgICAgIFJlc291cmNlW1JFU09VUkNFX0NPVU5UXTsKIAogICAgIFBYRU5DT05TX0NPTlNPTEUg
ICAgICAgICAgICBDb25zb2xlOwpAQCAtMjEwLDYgKzIxNSwxNCBAQCBfX0Zkb0dldFBoeXNpY2Fs
RGV2aWNlT2JqZWN0KAogICAgIHJldHVybiBGZG8tPlBoeXNpY2FsRGV2aWNlT2JqZWN0OwogfQog
CitQREVWSUNFX09CSkVDVAorRmRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoCisgICAgSU4gIFBY
RU5DT05TX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgcmV0dXJuIF9fRmRvR2V0UGh5c2ljYWxE
ZXZpY2VPYmplY3QoRmRvKTsKK30KKwogX19kcnZfcmVxdWlyZXNJUlFMKFBBU1NJVkVfTEVWRUwp
CiBzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKIF9fRmRvQWNxdWlyZUxvd2VyQnVzSW50ZXJm
YWNlKApAQCAtMzU4LDYgKzM3MSwxNCBAQCBfX0Zkb0dldFZlbmRvck5hbWUoCiAgICAgcmV0dXJu
IEZkby0+VmVuZG9yTmFtZTsKIH0KIAorUENIQVIKK0Zkb0dldFZlbmRvck5hbWUoCisgICAgSU4g
IFBYRU5DT05TX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgcmV0dXJuIF9fRmRvR2V0VmVuZG9y
TmFtZShGZG8pOworfQorCiBzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAogX19GZG9TZXROYW1lKAog
ICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvCkBAIC0zODMsNiArNDA0LDk5IEBAIF9fRmRvR2V0
TmFtZSgKICAgICByZXR1cm4gRHgtPk5hbWU7CiB9CiAKK1BDSEFSCitGZG9HZXROYW1lKAorICAg
IElOICBQWEVOQ09OU19GRE8gICAgRmRvCisgICAgKQoreworICAgIHJldHVybiBfX0Zkb0dldE5h
bWUoRmRvKTsKK30KKworX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01QTEVUSU9OX1JPVVRJTkUp
CitfX2Rydl9zYW1lSVJRTAorc3RhdGljIE5UU1RBVFVTCitfX0Zkb0RlbGVnYXRlSXJwKAorICAg
IElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2JqZWN0LAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwLAorICAgIElOICBQVk9JRCAgICAgICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQ
S0VWRU5UICAgICAgICAgICAgIEV2ZW50ID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9Q
QVJBTUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7
CisKKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKKworICAg
IHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVEOworfQorCitOVFNUQVRVUwor
RmRvRGVsZWdhdGVJcnAoCisgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUERFVklDRV9PQkpFQ1QgICAgICBEZXZp
Y2VPYmplY3Q7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworICAgIFBJ
UlAgICAgICAgICAgICAgICAgU3ViSXJwOworICAgIEtFVkVOVCAgICAgICAgICAgICAgRXZlbnQ7
CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdWJTdGFja0xvY2F0aW9uOworICAgIE5UU1RBVFVT
ICAgICAgICAgICAgc3RhdHVzOworCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9
PSAsIFBBU1NJVkVfTEVWRUwpOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudEly
cFN0YWNrTG9jYXRpb24oSXJwKTsKKworICAgIC8vIEZpbmQgdGhlIHRvcCBvZiB0aGUgRkRPIHN0
YWNrIGFuZCBob2xkIGEgcmVmZXJlbmNlCisgICAgRGV2aWNlT2JqZWN0ID0gSW9HZXRBdHRhY2hl
ZERldmljZVJlZmVyZW5jZShGZG8tPkR4LT5EZXZpY2VPYmplY3QpOworCisgICAgLy8gR2V0IGEg
bmV3IElSUCBmb3IgdGhlIEZETyBzdGFjaworICAgIFN1YklycCA9IElvQWxsb2NhdGVJcnAoRGV2
aWNlT2JqZWN0LT5TdGFja1NpemUsIEZBTFNFKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19N
RU1PUlk7CisgICAgaWYgKFN1YklycCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAg
ICAvLyBDb3B5IGluIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBvcmlnaW5hbCBJUlAKKyAgICBT
dWJTdGFja0xvY2F0aW9uID0gSW9HZXROZXh0SXJwU3RhY2tMb2NhdGlvbihTdWJJcnApOworCisg
ICAgS2VJbml0aWFsaXplRXZlbnQoJkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOwor
CisgICAgUnRsQ29weU1lbW9yeShTdWJTdGFja0xvY2F0aW9uLCBTdGFja0xvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgRklFTERfT0ZGU0VUKElPX1NUQUNLX0xPQ0FUSU9OLCBDb21wbGV0aW9u
Um91dGluZSkpOworICAgIFN1YlN0YWNrTG9jYXRpb24tPkNvbnRyb2wgPSAwOworCisgICAgSW9T
ZXRDb21wbGV0aW9uUm91dGluZShTdWJJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0Zkb0RlbGVnYXRlSXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV2ZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKworICAgIC8vIERlZmF1
bHQgY29tcGxldGlvbiBzdGF0dXMKKyAgICBTdWJJcnAtPklvU3RhdHVzLlN0YXR1cyA9IElycC0+
SW9TdGF0dXMuU3RhdHVzOworCisgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKERldmljZU9iamVj
dCwgU3ViSXJwKTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19QRU5ESU5HKSB7CisgICAgICAg
IChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmRXZlbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAg
ICAgc3RhdHVzID0gU3ViSXJwLT5Jb1N0YXR1cy5TdGF0dXM7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUM1Uoc3RhdHVzLCA9PSAsIFN1YklycC0+SW9TdGF0dXMuU3RhdHVzKTsKKyAgICB9
CisKKyAgICBJb0ZyZWVJcnAoU3ViSXJwKTsKKworZG9uZToKKyAgICBPYkRlcmVmZXJlbmNlT2Jq
ZWN0KERldmljZU9iamVjdCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCiBfX2Rydl9mdW5j
dGlvbkNsYXNzKElPX0NPTVBMRVRJT05fUk9VVElORSkKIF9fZHJ2X3NhbWVJUlFMCiBzdGF0aWMg
TlRTVEFUVVMKQEAgLTQ4Nyw2ICs2MDEsOTkgQEAgRmRvUGFyc2VSZXNvdXJjZXMoCiAgICAgfQog
fQogCitOVFNUQVRVUworRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoCisgICAgSU4gIFBYRU5D
T05TX0ZETyAgICBGZG8sCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApCit7Cisg
ICAgUERFVklDRV9PQkpFQ1QgICAgICBEZXZpY2VPYmplY3Q7CisgICAgUFhFTkNPTlNfRFggICAg
ICAgICBEeDsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIERldmljZU9i
amVjdCA9IFBkb0dldERldmljZU9iamVjdChQZG8pOworICAgIER4ID0gKFBYRU5DT05TX0RYKURl
dmljZU9iamVjdC0+RGV2aWNlRXh0ZW5zaW9uOworICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAs
IFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgaWYgKF9fRmRvR2V0RGV2aWNlUG93ZXJT
dGF0ZShGZG8pID09IFBvd2VyRGV2aWNlRDMpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIHN0
YXR1cyA9IFBkb1Jlc3VtZShQZG8pOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAg
ICAgICBnb3RvIGZhaWwxOworCitkb25lOgorICAgIEluc2VydFRhaWxMaXN0KCZGZG8tPkR4LT5M
aXN0RW50cnksICZEeC0+TGlzdEVudHJ5KTsKKyAgICBBU1NFUlQzVShGZG8tPlJlZmVyZW5jZXMs
ICE9ICwgMCk7CisgICAgRmRvLT5SZWZlcmVuY2VzKys7CisKKyAgICByZXR1cm4gU1RBVFVTX1NV
Q0NFU1M7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisK
KyAgICByZXR1cm4gc3RhdHVzOworfQorCitWT0lECitGZG9SZW1vdmVQaHlzaWNhbERldmljZU9i
amVjdCgKKyAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbywKKyAgICBJTiAgUFhFTkNPTlNfUERP
ICAgIFBkbworICAgICkKK3sKKyAgICBQREVWSUNFX09CSkVDVCAgICAgIERldmljZU9iamVjdDsK
KyAgICBQWEVOQ09OU19EWCAgICAgICAgIER4OworCisgICAgRGV2aWNlT2JqZWN0ID0gUGRvR2V0
RGV2aWNlT2JqZWN0KFBkbyk7CisgICAgRHggPSAoUFhFTkNPTlNfRFgpRGV2aWNlT2JqZWN0LT5E
ZXZpY2VFeHRlbnNpb247CisgICAgQVNTRVJUM1UoRHgtPlR5cGUsID09ICwgUEhZU0lDQUxfREVW
SUNFX09CSkVDVCk7CisKKyAgICBpZiAoX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykgPT0g
UG93ZXJEZXZpY2VEMykKKyAgICAgICAgZ290byBkb25lOworCisgICAgUGRvU3VzcGVuZChQZG8p
OworCitkb25lOgorICAgIFJlbW92ZUVudHJ5TGlzdCgmRHgtPkxpc3RFbnRyeSk7CisgICAgQVNT
RVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSAsIDApOworICAgIC0tRmRvLT5SZWZlcmVuY2VzOwor
fQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19GZG9BY3F1aXJlTXV0ZXgoCisgICAgSU4g
IFBYRU5DT05TX0ZETyAgICBGZG8KKyAgICApCit7CisgICAgQWNxdWlyZU11dGV4KCZGZG8tPk11
dGV4KTsKK30KKworVk9JRAorRmRvQWNxdWlyZU11dGV4KAorICAgIElOICBQWEVOQ09OU19GRE8g
ICAgRmRvCisgICAgKQoreworICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7Cit9CisKK3N0YXRp
YyBGT1JDRUlOTElORSBWT0lECitfX0Zkb1JlbGVhc2VNdXRleCgKKyAgICBJTiAgUFhFTkNPTlNf
RkRPICAgIEZkbworICAgICkKK3sKKyAgICBSZWxlYXNlTXV0ZXgoJkZkby0+TXV0ZXgpOworfQor
CitWT0lECitGZG9SZWxlYXNlTXV0ZXgoCisgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8KKyAg
ICApCit7CisgICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKworICAgIGlmIChGZG8tPlJlZmVy
ZW5jZXMgPT0gMCkKKyAgICAgICAgRmRvRGVzdHJveShGZG8pOworfQorCiBzdGF0aWMgRk9SQ0VJ
TkxJTkUgUEFOU0lfU1RSSU5HCiBfX0Zkb011bHRpU3pUb1VwY2FzZUFuc2koCiAgICAgSU4gIFBD
SEFSICAgICAgIEJ1ZmZlcgpAQCAtODMxLDkgKzEwMzgsOSBAQCBGZG9EM1RvRDAoCiAgICAgSU4g
IFBYRU5DT05TX0ZETyAgICBGZG8KICAgICApCiB7Ci0gICAgUFhFTkNPTlNfRFggICAgICAgICBE
eCA9IEZkby0+RHg7CiAgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRlOwogICAgIEtJ
UlFMICAgICAgICAgICAgICAgSXJxbDsKKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRy
eTsKICAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKIAogICAgIEFTU0VSVDNVKEtlR2V0
Q3VycmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVWRUwpOwpAQCAtODczLDExICsxMDgwLDI3IEBA
IEZkb0QzVG9EMCgKICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93ZXJTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgUG93ZXJTdGF0ZSk7CiAKKyAgICBfX0Zkb0FjcXVpcmVNdXRleChGZG8p
OworCisgICAgZm9yIChMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7CisgICAg
ICAgICBMaXN0RW50cnkgIT0gJkZkby0+RHgtPkxpc3RFbnRyeTsKKyAgICAgICAgIExpc3RFbnRy
eSA9IExpc3RFbnRyeS0+RmxpbmspIHsKKyAgICAgICAgUFhFTkNPTlNfRFggIER4ID0gQ09OVEFJ
TklOR19SRUNPUkQoTGlzdEVudHJ5LCBYRU5DT05TX0RYLCBMaXN0RW50cnkpOworICAgICAgICBQ
WEVOQ09OU19QRE8gUGRvID0gRHgtPlBkbzsKKworICAgICAgICBBU1NFUlQzVShEeC0+VHlwZSwg
PT0gLCBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUKTsKKworICAgICAgICBzdGF0dXMgPSBQZG9SZXN1
bWUoUGRvKTsKKyAgICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgfQorCisg
ICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKwogICAgIHN0YXR1cyA9IENvbnNvbGVEM1RvRDAo
RmRvLT5Db25zb2xlKTsKICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKIAogI3ByYWdt
YSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQotICAgIChWT0lEKSBJb1NldERldmljZUludGVyZmFj
ZVN0YXRlKCZEeC0+TGluaywgVFJVRSk7CisgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNl
U3RhdGUoJkZkby0+RHgtPkxpbmssIFRSVUUpOwogCiAgICAgVHJhY2UoIjw9PT09XG4iKTsKIApA
QCAtOTEyLDggKzExMzUsOCBAQCBGZG9EMFRvRDMoCiAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBG
ZG8KICAgICApCiB7Ci0gICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IEZkby0+RHg7CiAgICAg
UE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRlOworICAgIFBMSVNUX0VOVFJZICAgICAgICAg
TGlzdEVudHJ5OwogICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKIAogICAgIEFTU0VSVDNV
KEtlR2V0Q3VycmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVWRUwpOwpAQCAtOTIyLDEwICsxMTQ1
LDI5IEBAIEZkb0QwVG9EMygKICAgICBUcmFjZSgiPT09PT5cbiIpOwogCiAjcHJhZ21hIHByZWZh
c3Qoc3VwcHJlc3M6MjgxMjMpCi0gICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUo
JkR4LT5MaW5rLCBGQUxTRSk7CisgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUo
JkZkby0+RHgtPkxpbmssIEZBTFNFKTsKIAogICAgIENvbnNvbGVEMFRvRDMoRmRvLT5Db25zb2xl
KTsKIAorICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7CisKKyAgICBmb3IgKExpc3RFbnRyeSA9
IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAhPSAmRmRvLT5E
eC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgewor
ICAgICAgICBQWEVOQ09OU19EWCAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhF
TkNPTlNfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5DT05TX1BETyBQZG8gPSBEeC0+UGRv
OworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpF
Q1QpOworCisgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09IERlbGV0ZWQg
fHwKKyAgICAgICAgICAgIFBkb0lzTWlzc2luZyhQZG8pKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgUGRvU3VzcGVuZChQZG8pOworICAgIH0KKworICAgIF9fRmRvUmVsZWFzZU11
dGV4KEZkbyk7CisKICAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VEMzsK
ICAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LAogICAgICAgICAgICAg
ICAgICAgICBEZXZpY2VQb3dlclN0YXRlLApAQCAtMTExNywxMCArMTM1OSwyNyBAQCBGZG9TdXJw
cmlzZVJlbW92YWwoCiAgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKICAgICApCiB7CisgICAg
UExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7CiAgICAgTlRTVEFUVVMgICAgICAgICAgICBz
dGF0dXM7CiAKICAgICBfX0Zkb1NldERldmljZVBucFN0YXRlKEZkbywgU3VycHJpc2VSZW1vdmVQ
ZW5kaW5nKTsKIAorICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7CisKKyAgICBmb3IgKExpc3RF
bnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICAgICAgIExpc3RFbnRyeSAhPSAm
RmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGlu
aykgeworICAgICAgICBQWEVOQ09OU19EWCAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50
cnksIFhFTkNPTlNfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5DT05TX1BETyBQZG8gPSBE
eC0+UGRvOworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklD
RV9PQkpFQ1QpOworCisgICAgICAgIGlmICghUGRvSXNNaXNzaW5nKFBkbykpCisgICAgICAgICAg
ICBQZG9TZXRNaXNzaW5nKFBkbywgIkZETyBzdXJwcmlzZSByZW1vdmVkIik7CisgICAgfQorCisg
ICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKwogICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
U1RBVFVTX1NVQ0NFU1M7CiAKICAgICBJb1NraXBDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnAp
OwpAQCAtMTEzNSw2ICsxMzk0LDcgQEAgRmRvUmVtb3ZlRGV2aWNlKAogICAgIElOICBQSVJQICAg
ICAgICAgICAgSXJwCiAgICAgKQogeworICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlzdEVudHJ5
OwogICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwogCiAgICAgQVNTRVJUM1UoS2VHZXRD
dXJyZW50SXJxbCgpLCA9PSwgUEFTU0lWRV9MRVZFTCk7CkBAIC0xMTQyLDYgKzE0MDIsMzAgQEAg
RmRvUmVtb3ZlRGV2aWNlKAogICAgIGlmIChfX0Zkb0dldFByZXZpb3VzRGV2aWNlUG5wU3RhdGUo
RmRvKSAhPSBTdGFydGVkKQogICAgICAgICBnb3RvIGRvbmU7CiAKKyAgICBfX0Zkb0FjcXVpcmVN
dXRleChGZG8pOworCisgICAgTGlzdEVudHJ5ID0gRmRvLT5EeC0+TGlzdEVudHJ5LkZsaW5rOwor
ICAgIHdoaWxlIChMaXN0RW50cnkgIT0gJkZkby0+RHgtPkxpc3RFbnRyeSkgeworICAgICAgICBQ
TElTVF9FTlRSWSBGbGluayA9IExpc3RFbnRyeS0+Rmxpbms7CisgICAgICAgIFBYRU5DT05TX0RY
ICBEeCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOQ09OU19EWCwgTGlzdEVudHJ5
KTsKKyAgICAgICAgUFhFTkNPTlNfUERPIFBkbyA9IER4LT5QZG87CisKKyAgICAgICAgQVNTRVJU
M1UoRHgtPlR5cGUsID09ICwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7CisKKyAgICAgICAgaWYg
KCFQZG9Jc01pc3NpbmcoUGRvKSkKKyAgICAgICAgICAgIFBkb1NldE1pc3NpbmcoUGRvLCAiRkRP
IHJlbW92ZWQiKTsKKworICAgICAgICBpZiAoUGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKSAhPSBT
dXJwcmlzZVJlbW92ZVBlbmRpbmcpCisgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQ
ZG8sIERlbGV0ZWQpOworCisgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09
IERlbGV0ZWQpCisgICAgICAgICAgICBQZG9EZXN0cm95KFBkbyk7CisKKyAgICAgICAgTGlzdEVu
dHJ5ID0gRmxpbms7CisgICAgfQorCisgICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKwogICAg
IGlmIChfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSA9PSBQb3dlckRldmljZUQwKQogICAg
ICAgICBGZG9EMFRvRDMoRmRvKTsKIApAQCAtMTE1Nyw3ICsxNDQxLDEzIEBAIGRvbmU6CiAgICAg
SW9Ta2lwQ3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKICAgICBzdGF0dXMgPSBJb0NhbGxE
cml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsKIAotICAgIEZkb0Rlc3Ryb3koRmRv
KTsKKyAgICBfX0Zkb0FjcXVpcmVNdXRleChGZG8pOworICAgIEFTU0VSVDNVKEZkby0+UmVmZXJl
bmNlcywgIT0gLCAwKTsKKyAgICAtLUZkby0+UmVmZXJlbmNlczsKKyAgICBfX0Zkb1JlbGVhc2VN
dXRleChGZG8pOworCisgICAgaWYgKEZkby0+UmVmZXJlbmNlcyA9PSAwKQorICAgICAgICBGZG9E
ZXN0cm95KEZkbyk7CiAKICAgICByZXR1cm4gc3RhdHVzOwogfQpAQCAtMTE2OSwxNiArMTQ1OSwx
MTAgQEAgRmRvUXVlcnlEZXZpY2VSZWxhdGlvbnMoCiAgICAgKQogewogICAgIFBJT19TVEFDS19M
T0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBVTE9ORyAgICAgICAgICAgICAgIFNpemU7Cisg
ICAgUERFVklDRV9SRUxBVElPTlMgICBSZWxhdGlvbnM7CisgICAgVUxPTkcgICAgICAgICAgICAg
ICBDb3VudDsKKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKICAgICBOVFNUQVRV
UyAgICAgICAgICAgIHN0YXR1czsKIAotICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwg
PT0sIFBBU1NJVkVfTEVWRUwpOworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0g
LCBQQVNTSVZFX0xFVkVMKTsKIAogICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uKElycCk7CiAKICAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsK
IAotICAgIElvU2tpcEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7Ci0gICAgc3RhdHVzID0g
SW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7CisgICAgaWYgKFN0YWNr
TG9jYXRpb24tPlBhcmFtZXRlcnMuUXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPSBCdXNSZWxh
dGlvbnMpIHsKKyAgICAgICAgSW9Ta2lwQ3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAg
ICAgICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7
CisKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIF9fRmRvQWNxdWlyZU11dGV4KEZk
byk7CisKKyAgICBDb3VudCA9IDA7CisgICAgZm9yIChMaXN0RW50cnkgPSBGZG8tPkR4LT5MaXN0
RW50cnkuRmxpbms7CisgICAgICAgICBMaXN0RW50cnkgIT0gJkZkby0+RHgtPkxpc3RFbnRyeTsK
KyAgICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+RmxpbmspCisgICAgICAgIENvdW50Kys7
CisKKyAgICBTaXplID0gRklFTERfT0ZGU0VUKERFVklDRV9SRUxBVElPTlMsIE9iamVjdHMpICsg
KHNpemVvZihQREVWSUNFX09CSkVDVCkgKiBfX21heChDb3VudCwgMSkpOworCisgICAgUmVsYXRp
b25zID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKFBhZ2VkUG9vbCwgU2l6ZSwgRkRPX1BPT0wpOwor
CisgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBpZiAoUmVsYXRpb25zID09IE5V
TEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBSdGxaZXJvTWVtb3J5KFJlbGF0aW9ucywg
U2l6ZSk7CisKKyAgICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsK
KyAgICAgICAgIExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5OworICAgICAgICAgTGlz
dEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgeworICAgICAgICBQWEVOQ09OU19EWCAgRHggPSBD
T05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTkNPTlNfRFgsIExpc3RFbnRyeSk7CisgICAg
ICAgIFBYRU5DT05TX1BETyBQZG8gPSBEeC0+UGRvOworCisgICAgICAgIEFTU0VSVDNVKER4LT5U
eXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgICAgIGlmIChQZG9Jc01p
c3NpbmcoUGRvKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChQZG9HZXRE
ZXZpY2VQbnBTdGF0ZShQZG8pID09IFByZXNlbnQpCisgICAgICAgICAgICBQZG9TZXREZXZpY2VQ
bnBTdGF0ZShQZG8sIEVudW1lcmF0ZWQpOworCisgICAgICAgIE9iUmVmZXJlbmNlT2JqZWN0KER4
LT5EZXZpY2VPYmplY3QpOworICAgICAgICBSZWxhdGlvbnMtPk9iamVjdHNbUmVsYXRpb25zLT5D
b3VudCsrXSA9IER4LT5EZXZpY2VPYmplY3Q7CisgICAgfQorCisgICAgQVNTRVJUM1UoUmVsYXRp
b25zLT5Db3VudCwgPD0gLCBDb3VudCk7CisKKyAgICBUcmFjZSgiJWQgUERPKHMpXG4iLCBSZWxh
dGlvbnMtPkNvdW50KTsKKworICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7CisKKyAgICBJcnAt
PklvU3RhdHVzLkluZm9ybWF0aW9uID0gKFVMT05HX1BUUilSZWxhdGlvbnM7CisgICAgSXJwLT5J
b1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIHN0YXR1cyA9IEZkb0Zvcndh
cmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJwKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsKKworICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7CisKKyAgICBMaXN0
RW50cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7CisgICAgd2hpbGUgKExpc3RFbnRyeSAh
PSAmRmRvLT5EeC0+TGlzdEVudHJ5KSB7CisgICAgICAgIFBYRU5DT05TX0RYICBEeCA9IENPTlRB
SU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOQ09OU19EWCwgTGlzdEVudHJ5KTsKKyAgICAgICAg
UFhFTkNPTlNfUERPIFBkbyA9IER4LT5QZG87CisgICAgICAgIFBMSVNUX0VOVFJZIE5leHQgPSBM
aXN0RW50cnktPkZsaW5rOworCisgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJ
Q0FMX0RFVklDRV9PQkpFQ1QpOworCisgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQ
ZG8pID09IERlbGV0ZWQgJiYKKyAgICAgICAgICAgIFBkb0lzTWlzc2luZyhQZG8pKQorICAgICAg
ICAgICAgUGRvRGVzdHJveShQZG8pOworCisgICAgICAgIExpc3RFbnRyeSA9IE5leHQ7CisgICAg
fQorCisgICAgX19GZG9SZWxlYXNlTXV0ZXgoRmRvKTsKKworZG9uZToKKyAgICByZXR1cm4gc3Rh
dHVzOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgX19GZG9BY3F1aXJl
TXV0ZXgoRmRvKTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVz
KTsKKworICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0
YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7CiAKICAgICByZXR1cm4gc3RhdHVzOwogfQpAQCAtMjQ2OSwxMyArMjg1MywzMyBAQCBGZG9D
cmVhdGUoCiAKICAgICBEeC0+RmRvID0gRmRvOwogCisgICAgSW5pdGlhbGl6ZU11dGV4KCZGZG8t
Pk11dGV4KTsKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkR4LT5MaXN0RW50cnkpOworICAgIEZk
by0+UmVmZXJlbmNlcyA9IDE7CisKICAgICBJbmZvKCIlcCAoJXMpXG4iLAogICAgICAgICAgRnVu
Y3Rpb25EZXZpY2VPYmplY3QsCiAgICAgICAgICBfX0Zkb0dldE5hbWUoRmRvKSk7CiAKKyAgICBz
dGF0dXMgPSBQZG9DcmVhdGUoRmRvLCBOVUxMKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMTM7CisKICAgICBGdW5jdGlvbkRldmljZU9iamVjdC0+Rmxh
Z3MgJj0gfkRPX0RFVklDRV9JTklUSUFMSVpJTkc7CiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNT
OwogCitmYWlsMTM6CisgICAgRXJyb3IoImZhaWwxM1xuIik7CisKKyAgICBEeC0+RmRvID0gRmRv
OworCisgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5NdXRleCwgc2l6ZW9mKE1VVEVYKSk7CisgICAg
UnRsWmVyb01lbW9yeSgmRHgtPkxpc3RFbnRyeSwgc2l6ZW9mKExJU1RfRU5UUlkpKTsKKyAgICBG
ZG8tPlJlZmVyZW5jZXMgPSAwOworCisgICAgQ29uc29sZURlc3Ryb3koRmRvLT5Db25zb2xlKTsK
KyAgICBGZG8tPkNvbnNvbGUgPSBOVUxMOworCiBmYWlsMTI6CiAgICAgRXJyb3IoImZhaWwxMlxu
Iik7CiAKQEAgLTI1NjEsNyArMjk2NSw5IEBAIEZkb0Rlc3Ryb3koCiAgICAgUFhFTkNPTlNfRFgg
ICAgICAgICBEeCA9IEZkby0+RHg7CiAgICAgUERFVklDRV9PQkpFQ1QgICAgICBGdW5jdGlvbkRl
dmljZU9iamVjdCA9IER4LT5EZXZpY2VPYmplY3Q7CiAKLSAgICBBU1NFUlQzVShfX0Zkb0dldERl
dmljZVBucFN0YXRlKEZkbyksID09LCBEZWxldGVkKTsKKyAgICBBU1NFUlQoSXNMaXN0RW1wdHko
JkR4LT5MaXN0RW50cnkpKTsKKyAgICBBU1NFUlQzVShGZG8tPlJlZmVyZW5jZXMsID09ICwgMCk7
CisgICAgQVNTRVJUM1UoX19GZG9HZXREZXZpY2VQbnBTdGF0ZShGZG8pLCA9PSAsIERlbGV0ZWQp
OwogCiAgICAgRmRvLT5Ob3REaXNhYmxlYWJsZSA9IEZBTFNFOwogCkBAIC0yNTY5LDYgKzI5NzUs
OCBAQCBGZG9EZXN0cm95KAogICAgICAgICAgRnVuY3Rpb25EZXZpY2VPYmplY3QsCiAgICAgICAg
ICBfX0Zkb0dldE5hbWUoRmRvKSk7CiAKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPk11dGV4LCBz
aXplb2YoTVVURVgpKTsKKwogICAgIER4LT5GZG8gPSBOVUxMOwogCiAgICAgQ29uc29sZURlc3Ry
b3koRmRvLT5Db25zb2xlKTsKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zkby5oIGIvc3JjL3hl
bmNvbnMvZmRvLmgKaW5kZXggMTllYWE0Mi4uZjhlYmFmMyAxMDA2NDQKLS0tIGEvc3JjL3hlbmNv
bnMvZmRvLmgKKysrIGIvc3JjL3hlbmNvbnMvZmRvLmgKQEAgLTQwLDYgKzQwLDQ5IEBACiAKICNp
bmNsdWRlICJkcml2ZXIuaCIKIAorZXh0ZXJuIFBDSEFSCitGZG9HZXRWZW5kb3JOYW1lKAorICAg
IElOICBQWEVOQ09OU19GRE8gICAgRmRvCisgICAgKTsKKworZXh0ZXJuIFBDSEFSCitGZG9HZXRO
YW1lKAorICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvCisgICAgKTsKKworZXh0ZXJuIE5UU1RB
VFVTCitGZG9BZGRQaHlzaWNhbERldmljZU9iamVjdCgKKyAgICBJTiAgUFhFTkNPTlNfRkRPICAg
IEZkbywKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICk7CisKK2V4dGVybiBWT0lE
CitGZG9SZW1vdmVQaHlzaWNhbERldmljZU9iamVjdCgKKyAgICBJTiAgUFhFTkNPTlNfRkRPICAg
ICBGZG8sCisgICAgSU4gIFBYRU5DT05TX1BETyAgICAgUGRvCisgICAgKTsKKworZXh0ZXJuIFZP
SUQKK0Zkb0FjcXVpcmVNdXRleCgKKyAgICBJTiAgUFhFTkNPTlNfRkRPICAgICBGZG8KKyAgICAp
OworCitleHRlcm4gVk9JRAorRmRvUmVsZWFzZU11dGV4KAorICAgIElOICBQWEVOQ09OU19GRE8g
ICAgIEZkbworICAgICk7CisKK2V4dGVybiBQREVWSUNFX09CSkVDVAorRmRvR2V0UGh5c2ljYWxE
ZXZpY2VPYmplY3QoCisgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8KKyAgICApOworCitleHRl
cm4gTlRTVEFUVVMKK0Zkb0RlbGVnYXRlSXJwKAorICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKTsKKwogZXh0ZXJuIE5UU1RBVFVT
CiBGZG9EaXNwYXRjaCgKICAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbywKZGlmZiAtLWdpdCBh
L3NyYy94ZW5jb25zL211dGV4LmggYi9zcmMveGVuY29ucy9tdXRleC5oCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAuLjkwNGIyMWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVu
Y29ucy9tdXRleC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5
c3RlbXMgSW5jLgorKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAorKiB3aXRoIG9yIHdpdGhvdXQgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkCisqIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisqCisqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUKKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlcgorKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5ECisqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsCisqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GCisqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyogV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKiBTVUNIIERBTUFH
RS4KKyovCisKKyNpZm5kZWYgX1hFTkNPTlNfTVVURVhfSAorI2RlZmluZSBfWEVOQ09OU19NVVRF
WF9ICisKKyNpbmNsdWRlIDxudGRkay5oPgorCisjaW5jbHVkZSAiYXNzZXJ0LmgiCisKK3R5cGVk
ZWYgc3RydWN0IF9NVVRFWCB7CisgICAgUEtUSFJFQUQgICAgT3duZXI7CisgICAgS0VWRU5UICAg
ICAgRXZlbnQ7Cit9IE1VVEVYLCAqUE1VVEVYOworCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAor
SW5pdGlhbGl6ZU11dGV4KAorICAgIElOICBQTVVURVggIE11dGV4CispCit7CisgICAgUnRsWmVy
b01lbW9yeShNdXRleCwgc2l6ZW9mKE1VVEVYKSk7CisKKyAgICBLZUluaXRpYWxpemVFdmVudCgm
TXV0ZXgtPkV2ZW50LCBTeW5jaHJvbml6YXRpb25FdmVudCwgVFJVRSk7Cit9CisKK3N0YXRpYyBG
T1JDRUlOTElORSBWT0lECitfX2Rydl9tYXhJUlFMKFBBU1NJVkVfTEVWRUwpCitBY3F1aXJlTXV0
ZXgoCisgICAgSU4gIFBNVVRFWCAgTXV0ZXgKKykKK3sKKyAgICAoVk9JRClLZVdhaXRGb3JTaW5n
bGVPYmplY3QoJk11dGV4LT5FdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWxNb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBBU1NFUlQzUChNdXRleC0+T3duZXIsID09ICwg
TlVMTCk7CisgICAgTXV0ZXgtPk93bmVyID0gS2VHZXRDdXJyZW50VGhyZWFkKCk7Cit9CisKK3N0
YXRpYyBGT1JDRUlOTElORSBWT0lECitfX2Rydl9tYXhJUlFMKFBBU1NJVkVfTEVWRUwpCitSZWxl
YXNlTXV0ZXgoCisgICAgSU4gIFBNVVRFWCAgTXV0ZXgKKykKK3sKKyAgICBBU1NFUlQzUChNdXRl
eC0+T3duZXIsID09ICwgS2VHZXRDdXJyZW50VGhyZWFkKCkpOworICAgIE11dGV4LT5Pd25lciA9
IE5VTEw7CisKKyAgICBLZVNldEV2ZW50KCZNdXRleC0+RXZlbnQsIElPX05PX0lOQ1JFTUVOVCwg
RkFMU0UpOworfQorCisjZW5kaWYgIC8vIF9YRU5DT05TX01VVEVYX0gKZGlmZiAtLWdpdCBhL3Ny
Yy94ZW5jb25zL3Bkby5jIGIvc3JjL3hlbmNvbnMvcGRvLmMKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMC4uNWU5MDg0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy94ZW5jb25zL3Bk
by5jCkBAIC0wLDAgKzEsMTg2NSBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJ
bmMuCisqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCisqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQKKyogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyoKKyogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUKKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAqICAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiAg
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQorKiAg
ICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
CisqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQKKyog
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywKKyogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YKKyogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsCisqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisqIFNVQ0ggREFNQUdFLgorKi8K
KworI2RlZmluZSBJTklUR1VJRCAxCisKKyNpbmNsdWRlIDxudGRkay5oPgorI2luY2x1ZGUgPHdk
bWd1aWQuaD4KKyNpbmNsdWRlIDxudHN0cnNhZmUuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKwor
I2luY2x1ZGUgPHN1c3BlbmRfaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8dmVyc2lvbi5oPgorCisj
aW5jbHVkZSAiZHJpdmVyLmgiCisjaW5jbHVkZSAibmFtZXMuaCIKKyNpbmNsdWRlICJmZG8uaCIK
KyNpbmNsdWRlICJwZG8uaCIKKyNpbmNsdWRlICJ0aHJlYWQuaCIKKyNpbmNsdWRlICJkYmdfcHJp
bnQuaCIKKyNpbmNsdWRlICJhc3NlcnQuaCIKKyNpbmNsdWRlICJ1dGlsLmgiCisKKyNkZWZpbmUg
UERPX1BPT0wgJ09EUCcKKworI2RlZmluZSBNQVhOQU1FTEVOICAxMjgKKyNkZWZpbmUgTUFYVEVY
VExFTiAgMTAyNAorCitzdHJ1Y3QgX1hFTkNPTlNfUERPIHsKKyAgICBQWEVOQ09OU19EWCAgICAg
ICAgICAgICAgICAgRHg7CisKKyAgICBQWEVOQ09OU19USFJFQUQgICAgICAgICAgICAgU3lzdGVt
UG93ZXJUaHJlYWQ7CisgICAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVBvd2Vy
SXJwOworICAgIFBYRU5DT05TX1RIUkVBRCAgICAgICAgICAgICBEZXZpY2VQb3dlclRocmVhZDsK
KyAgICBQSVJQICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93ZXJJcnA7CisKKyAgICBQ
WEVOQ09OU19GRE8gICAgICAgICAgICAgICAgRmRvOworICAgIEJPT0xFQU4gICAgICAgICAgICAg
ICAgICAgICBNaXNzaW5nOworICAgIGNvbnN0IENIQVIgICAgICAgICAgICAgICAgICAqUmVhc29u
OworICAgIExPTkcgICAgICAgICAgICAgICAgICAgICAgICBFamVjdDsKKworICAgIFhFTkJVU19T
VVNQRU5EX0lOVEVSRkFDRSAgICBTdXNwZW5kSW50ZXJmYWNlOworICAgIFBYRU5CVVNfU1VTUEVO
RF9DQUxMQkFDSyAgICBTdXNwZW5kQ2FsbGJhY2tMYXRlOworfTsKKworc3RhdGljIEZPUkNFSU5M
SU5FIFBWT0lECitfX1Bkb0FsbG9jYXRlKAorICAgIElOICBVTE9ORyAgIExlbmd0aAorICAgICkK
K3sKKyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgTGVuZ3Ro
LCBQRE9fUE9PTCk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1Bkb0ZyZWUoCisg
ICAgSU4gIFBWT0lEICAgQnVmZmVyCisgICAgKQoreworICAgIF9fRnJlZVBvb2xXaXRoVGFnKEJ1
ZmZlciwgUERPX1BPT0wpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9TZXRE
ZXZpY2VQbnBTdGF0ZSgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sCisgICAgSU4g
IERFVklDRV9QTlBfU1RBVEUgICAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkNPTlNfRFggICAg
ICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgLy8gV2UgY2FuIG5ldmVyIHRyYW5zaXRpb24g
b3V0IG9mIHRoZSBkZWxldGVkIHN0YXRlCisgICAgQVNTRVJUKER4LT5EZXZpY2VQbnBTdGF0ZSAh
PSBEZWxldGVkIHx8IFN0YXRlID09IERlbGV0ZWQpOworCisgICAgRHgtPlByZXZpb3VzRGV2aWNl
UG5wU3RhdGUgPSBEeC0+RGV2aWNlUG5wU3RhdGU7CisgICAgRHgtPkRldmljZVBucFN0YXRlID0g
U3RhdGU7Cit9CisKK1ZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVOQ09O
U19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAg
ICkKK3sKKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgU3RhdGUpOworfQorCitzdGF0
aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9SZXN0b3JlRGV2aWNlUG5wU3RhdGUoCisgICAgSU4g
IFBYRU5DT05TX1BETyAgICAgICAgUGRvLAorICAgIElOICBERVZJQ0VfUE5QX1NUQVRFICAgIFN0
YXRlCisgICAgKQoreworICAgIFBYRU5DT05TX0RYICAgICAgICAgICAgIER4ID0gUGRvLT5EeDsK
KworICAgIGlmIChEeC0+RGV2aWNlUG5wU3RhdGUgPT0gU3RhdGUpCisgICAgICAgIER4LT5EZXZp
Y2VQbnBTdGF0ZSA9IER4LT5QcmV2aW91c0RldmljZVBucFN0YXRlOworfQorCitzdGF0aWMgRk9S
Q0VJTkxJTkUgREVWSUNFX1BOUF9TVEFURQorX19QZG9HZXREZXZpY2VQbnBTdGF0ZSgKKyAgICBJ
TiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICBQWEVOQ09OU19EWCAgICAgICAg
IER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+RGV2aWNlUG5wU3RhdGU7Cit9CisKK0RF
VklDRV9QTlBfU1RBVEUKK1Bkb0dldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVOQ09OU19Q
RE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBfX1Bkb0dldERldmljZVBucFN0YXRlKFBk
byk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBWT0lECitfX1Bkb1NldFN5c3RlbVBvd2VyU3Rh
dGUoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICAgICAgUGRvLAorICAgIElOICBTWVNURU1fUE9X
RVJfU1RBVEUgIFN0YXRlCisgICAgKQoreworICAgIFBYRU5DT05TX0RYICAgICAgICAgICAgIER4
ID0gUGRvLT5EeDsKKworICAgIER4LT5TeXN0ZW1Qb3dlclN0YXRlID0gU3RhdGU7Cit9CisKK3N0
YXRpYyBGT1JDRUlOTElORSBTWVNURU1fUE9XRVJfU1RBVEUKK19fUGRvR2V0U3lzdGVtUG93ZXJT
dGF0ZSgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICBQWEVOQ09O
U19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsKKworICAgIHJldHVybiBEeC0+U3lzdGVtUG93ZXJT
dGF0ZTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUGRvU2V0RGV2aWNlUG93ZXJT
dGF0ZSgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sCisgICAgSU4gIERFVklDRV9Q
T1dFUl9TVEFURSAgU3RhdGUKKyAgICApCit7CisgICAgUFhFTkNPTlNfRFggICAgICAgICAgICAg
RHggPSBQZG8tPkR4OworCisgICAgRHgtPkRldmljZVBvd2VyU3RhdGUgPSBTdGF0ZTsKK30KKwor
c3RhdGljIEZPUkNFSU5MSU5FIERFVklDRV9QT1dFUl9TVEFURQorX19QZG9HZXREZXZpY2VQb3dl
clN0YXRlKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIFBYRU5D
T05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgcmV0dXJuIER4LT5EZXZpY2VQb3dl
clN0YXRlOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19QZG9TZXRNaXNzaW5nKAor
ICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBjb25zdCBDSEFSICAgICAgKlJl
YXNvbgorICAgICkKK3sKKyAgICBQZG8tPlJlYXNvbiA9IFJlYXNvbjsKKyAgICBQZG8tPk1pc3Np
bmcgPSBUUlVFOworfQorCitWT0lECitQZG9TZXRNaXNzaW5nKAorICAgIElOICBQWEVOQ09OU19Q
RE8gICAgUGRvLAorICAgIElOICBjb25zdCBDSEFSICAgICAgKlJlYXNvbgorICAgICkKK3sKKyAg
ICBfX1Bkb1NldE1pc3NpbmcoUGRvLCBSZWFzb24pOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUg
Qk9PTEVBTgorX19QZG9Jc01pc3NpbmcoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAg
ICApCit7CisgICAgcmV0dXJuIFBkby0+TWlzc2luZzsKK30KKworQk9PTEVBTgorUGRvSXNNaXNz
aW5nKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBf
X1Bkb0lzTWlzc2luZyhQZG8pOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgUERFVklDRV9PQkpF
Q1QKK19fUGRvR2V0RGV2aWNlT2JqZWN0KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisg
ICAgKQoreworICAgIFBYRU5DT05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4OworCisgICAgcmV0
dXJuIChEeC0+RGV2aWNlT2JqZWN0KTsKK30KKworUERFVklDRV9PQkpFQ1QKK1Bkb0dldERldmlj
ZU9iamVjdCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1
cm4gX19QZG9HZXREZXZpY2VPYmplY3QoUGRvKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFBY
RU5DT05TX0ZETworX19QZG9HZXRGZG8oCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAg
ICApCit7CisgICAgcmV0dXJuIFBkby0+RmRvOworfQorCitQWEVOQ09OU19GRE8KK1Bkb0dldEZk
bygKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gX19Q
ZG9HZXRGZG8oUGRvKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUGRvU2V0TmFt
ZSgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUEFOU0lfU1RSSU5HICAg
IERldmljZQorICAgICkKK3sKKyAgICBQWEVOQ09OU19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsK
KyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIGlmIChEZXZpY2UgPT0gTlVM
TCkKKyAgICAgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZBKER4LT5OYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0RFVklDRV9JRF9MRU4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIpOworICAgIGVsc2UKKyAgICAgICAgc3Rh
dHVzID0gUnRsU3RyaW5nQ2JQcmludGZBKER4LT5OYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTUFYX0RFVklDRV9JRF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJVoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGV2aWNlKTsKKyAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKK30KKworc3RhdGljIEZP
UkNFSU5MSU5FIFBDSEFSCitfX1Bkb0dldE5hbWUoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8KKyAgICApCit7CisgICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IFBkby0+RHg7CisKKyAg
ICByZXR1cm4gRHgtPk5hbWU7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBQQ0hBUgorX19QZG9H
ZXRWZW5kb3JOYW1lKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAg
IHJldHVybiBGZG9HZXRWZW5kb3JOYW1lKF9fUGRvR2V0RmRvKFBkbykpOworfQorCitzdGF0aWMg
Rk9SQ0VJTkxJTkUgQk9PTEVBTgorX19QZG9TZXRFamVjdFJlcXVlc3RlZCgKKyAgICBJTiAgUFhF
TkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gKEludGVybG9ja2VkQml0VGVz
dEFuZFNldCgmUGRvLT5FamVjdCwgMCkgPT0gMCkgPyBUUlVFIDogRkFMU0U7Cit9CisKK1ZPSUQK
K1Bkb1JlcXVlc3RFamVjdCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICkKK3sK
KyAgICBQWEVOQ09OU19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsKKyAgICBQREVWSUNFX09CSkVD
VCAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0ID0gRHgtPkRldmljZU9iamVjdDsKKyAgICBQWEVO
Q09OU19GRE8gICAgICAgIEZkbyA9IF9fUGRvR2V0RmRvKFBkbyk7CisKKyAgICBpZiAoIV9fUGRv
U2V0RWplY3RSZXF1ZXN0ZWQoUGRvKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW5mbygiJXAg
KCVzKVxuIiwKKyAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0LAorICAgICAgICAgX19QZG9H
ZXROYW1lKFBkbykpOworCisgICAgSW9JbnZhbGlkYXRlRGV2aWNlUmVsYXRpb25zKEZkb0dldFBo
eXNpY2FsRGV2aWNlT2JqZWN0KEZkbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJ1c1JlbGF0aW9ucyk7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitfX1Bkb0Ns
ZWFyRWplY3RSZXF1ZXN0ZWQoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApCit7
CisgICAgcmV0dXJuIChJbnRlcmxvY2tlZEJpdFRlc3RBbmRSZXNldCgmUGRvLT5FamVjdCwgMCkg
IT0gMCkgPyBUUlVFIDogRkFMU0U7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFOCitf
X1Bkb0lzRWplY3RSZXF1ZXN0ZWQoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICAp
Cit7CisgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisgICAgcmV0dXJuIChQZG8tPkVqZWN0ICYgMSkg
PyBUUlVFIDogRkFMU0U7Cit9CisKK0JPT0xFQU4KK1Bkb0lzRWplY3RSZXF1ZXN0ZWQoCisgICAg
SU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApCit7CisgICAgcmV0dXJuIF9fUGRvSXNFamVj
dFJlcXVlc3RlZChQZG8pOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRv
RDNUb0QwKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIFBPV0VS
X1NUQVRFICAgICAgICAgUG93ZXJTdGF0ZTsKKworICAgIFRyYWNlKCIoJXMpID09PT0+XG4iLCBf
X1Bkb0dldE5hbWUoUGRvKSk7CisKKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
ICwgRElTUEFUQ0hfTEVWRUwpOworICAgIEFTU0VSVDNVKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0
ZShQZG8pLCA9PSAsIFBvd2VyRGV2aWNlRDMpOworCisgICAgX19QZG9TZXREZXZpY2VQb3dlclN0
YXRlKFBkbywgUG93ZXJEZXZpY2VEMCk7CisKKyAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0g
UG93ZXJEZXZpY2VEMDsKKyAgICBQb1NldFBvd2VyU3RhdGUoX19QZG9HZXREZXZpY2VPYmplY3Qo
UGRvKSwKKyAgICAgICAgICAgICAgICAgICAgRGV2aWNlUG93ZXJTdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgUG93ZXJTdGF0ZSk7CisKKyAgICBUcmFjZSgiKCVzKSA8PT09PVxuIiwgX19QZG9H
ZXROYW1lKFBkbykpOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMg
Rk9SQ0VJTkxJTkUgVk9JRAorX19QZG9EMFRvRDMoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8KKyAgICApCit7CisgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0YXRlOworCisgICAg
VHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKKworICAgIEFTU0VSVDNV
KEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBESVNQQVRDSF9MRVZFTCk7CisgICAgQVNTRVJUM1Uo
X19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbyksID09ICwgUG93ZXJEZXZpY2VEMCk7CisKKyAg
ICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VEMzsKKyAgICBQb1NldFBvd2Vy
U3RhdGUoX19QZG9HZXREZXZpY2VPYmplY3QoUGRvKSwKKyAgICAgICAgICAgICAgICAgICAgRGV2
aWNlUG93ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgUG93ZXJTdGF0ZSk7CisKKyAgICBf
X1Bkb1NldERldmljZVBvd2VyU3RhdGUoUGRvLCBQb3dlckRldmljZUQzKTsKKworICAgIFRyYWNl
KCIoJXMpIDw9PT09XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7Cit9CisKK3N0YXRpYyBERUNMU1BF
Q19OT0lOTElORSBWT0lECitQZG9TdXNwZW5kQ2FsbGJhY2tMYXRlKAorICAgIElOICBQVk9JRCAg
ICAgICAgICAgICAgIEFyZ3VtZW50CisgICAgKQoreworICAgIFBYRU5DT05TX1BETyAgICAgICAg
ICAgIFBkbyA9IEFyZ3VtZW50OworICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsK
KworICAgIF9fUGRvRDBUb0QzKFBkbyk7CisKKyAgICBzdGF0dXMgPSBfX1Bkb0QzVG9EMChQZG8p
OworICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOworfQorCisvLyBUaGlzIGZ1bmN0aW9u
IG11c3Qgbm90IHRvdWNoIHBhZ2VhYmxlIGNvZGUgb3IgZGF0YQorc3RhdGljIERFQ0xTUEVDX05P
SU5MSU5FIE5UU1RBVFVTCitQZG9EM1RvRDAoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8K
KyAgICApCit7CisgICAgS0lSUUwgICAgICAgICAgICAgICBJcnFsOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgVHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFt
ZShQZG8pKTsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZF
X0xFVkVMKTsKKworICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAmSXJxbCk7CisKKyAg
ICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChBY3F1aXJlLCAmUGRvLT5TdXNwZW5kSW50ZXJmYWNl
KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTsKKwor
ICAgIHN0YXR1cyA9IF9fUGRvRDNUb0QwKFBkbyk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAgICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChS
ZWdpc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUGRvLT5TdXNwZW5kSW50ZXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVU1BFTkRfQ0FMTEJBQ0tfTEFURSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZG9TdXNwZW5kQ2FsbGJhY2tMYXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmUGRvLT5TdXNwZW5kQ2FsbGJhY2tMYXRlKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMzsKKworICAgIEtlTG93ZXJJcnFsKElycWwpOworCisgICAg
VHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKKworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKworICAgIF9f
UGRvRDBUb0QzKFBkbyk7CisKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBY
RU5CVVNfU1VTUEVORChSZWxlYXNlLCAmUGRvLT5TdXNwZW5kSW50ZXJmYWNlKTsKKworZmFpbDE6
CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIEtlTG93ZXJJcnFs
KElycWwpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBtdXN0
IG5vdCB0b3VjaCBwYWdlYWJsZSBjb2RlIG9yIGRhdGEKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElO
RSBWT0lECitQZG9EMFRvRDMoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApCit7
CisgICAgS0lSUUwgICAgICAgICAgICAgICBJcnFsOworCisgICAgVHJhY2UoIiglcykgPT09PT5c
biIsIF9fUGRvR2V0TmFtZShQZG8pKTsKKworICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwo
KSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsKKworICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVM
LCAmSXJxbCk7CisKKyAgICBYRU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLAorICAgICAgICAgICAg
ICAgICAgICZQZG8tPlN1c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgUGRvLT5T
dXNwZW5kQ2FsbGJhY2tMYXRlKTsKKyAgICBQZG8tPlN1c3BlbmRDYWxsYmFja0xhdGUgPSBOVUxM
OworCisgICAgX19QZG9EMFRvRDMoUGRvKTsKKworICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2Us
ICZQZG8tPlN1c3BlbmRJbnRlcmZhY2UpOworCisgICAgS2VMb3dlcklycWwoSXJxbCk7CisKKyAg
ICBUcmFjZSgiKCVzKSA8PT09PVxuIiwgX19QZG9HZXROYW1lKFBkbykpOworfQorCisvLyBUaGlz
IGZ1bmN0aW9uIG11c3Qgbm90IHRvdWNoIHBhZ2VhYmxlIGNvZGUgb3IgZGF0YQorc3RhdGljIERF
Q0xTUEVDX05PSU5MSU5FIFZPSUQKK1Bkb1M0VG9TMygKKyAgICBJTiAgUFhFTkNPTlNfUERPICAg
IFBkbworICAgICkKK3sKKyAgICBUcmFjZSgiKCVzKSA9PT09PlxuIiwgX19QZG9HZXROYW1lKFBk
bykpOworCisgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIFBBU1NJVkVfTEVW
RUwpOworICAgIEFTU0VSVDNVKF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pLCA9PSAsIFBv
d2VyU3lzdGVtSGliZXJuYXRlKTsKKworICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8s
IFBvd2VyU3lzdGVtU2xlZXBpbmczKTsKKworICAgIFRyYWNlKCIoJXMpIDw9PT09XG4iLCBfX1Bk
b0dldE5hbWUoUGRvKSk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgdG91Y2ggcGFn
ZWFibGUgY29kZSBvciBkYXRhCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgVk9JRAorUGRvUzNU
b1M0KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIFRyYWNlKCIo
JXMpID09PT0+XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7CisKKyAgICBBU1NFUlQzVShLZUdldEN1
cnJlbnRJcnFsKCksID09ICwgUEFTU0lWRV9MRVZFTCk7CisgICAgQVNTRVJUM1UoX19QZG9HZXRT
eXN0ZW1Qb3dlclN0YXRlKFBkbyksID09ICwgUG93ZXJTeXN0ZW1TbGVlcGluZzMpOworCisgICAg
X19QZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbywgUG93ZXJTeXN0ZW1IaWJlcm5hdGUpOworCisg
ICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKK30KKworc3RhdGlj
IERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9TdGFydERldmljZSgKKyAgICBJTiAgUFhF
TkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sK
KyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIHN0YXR1cyA9IFBkb0QzVG9E
MChQZG8pOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwx
OworCisgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIFN0YXJ0ZWQpOworCisgICAgSXJw
LT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisK
K2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBJcnAt
PklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5U3RvcERldmljZSgKKyAgICBJTiAgUFhFTkNP
TlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIF9fUGRvU2V0RGV2aWNlUG5wU3Rh
dGUoUGRvLCBTdG9wUGVuZGluZyk7CisgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisKKyAg
ICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJ
cnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMg
REVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0NhbmNlbFN0b3BEZXZpY2UoCisgICAgSU4g
IFBYRU5DT05TX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICAp
Cit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBfX1Bkb1Jlc3RvcmVE
ZXZpY2VQbnBTdGF0ZShQZG8sIFN0b3BQZW5kaW5nKTsKKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VD
Q0VTUzsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxl
dGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9
CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvU3RvcERldmljZSgKKyAg
ICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAor
ICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIGlmIChfX1Bk
b0dldERldmljZVBvd2VyU3RhdGUoUGRvKSAhPSBQb3dlckRldmljZUQwKQorICAgICAgICBnb3Rv
IGRvbmU7CisKKyAgICBQZG9EMFRvRDMoUGRvKTsKKworZG9uZToKKyAgICBfX1Bkb1NldERldmlj
ZVBucFN0YXRlKFBkbywgU3RvcHBlZCk7CisgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5UmVtb3ZlRGV2aWNlKAorICAg
IElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisg
ICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgX19QZG9TZXRE
ZXZpY2VQbnBTdGF0ZShQZG8sIFJlbW92ZVBlbmRpbmcpOworICAgIHN0YXR1cyA9IFNUQVRVU19T
VUNDRVNTOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9DYW5jZWxSZW1vdmVE
ZXZpY2UoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAg
ICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAg
ICBpZiAoX19QZG9DbGVhckVqZWN0UmVxdWVzdGVkKFBkbykpCisgICAgICAgIFRyYWNlKCIoJXMp
IEVqZWN0IEZhaWxlZFxuIiwgX19QZG9HZXROYW1lKFBkbykpOworCisgICAgX19QZG9SZXN0b3Jl
RGV2aWNlUG5wU3RhdGUoUGRvLCBSZW1vdmVQZW5kaW5nKTsKKyAgICBzdGF0dXMgPSBTVEFUVVNf
U1VDQ0VTUzsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7
Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvU3VycHJpc2VSZW1v
dmFsKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAg
V2FybmluZygiJXNcbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKKworICAgIF9fUGRvU2V0RGV2aWNl
UG5wU3RhdGUoUGRvLCBTdXJwcmlzZVJlbW92ZVBlbmRpbmcpOworICAgIHN0YXR1cyA9IFNUQVRV
U19TVUNDRVNTOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9D
b21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1
czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9SZW1vdmVEZXZp
Y2UoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAKKyAgICApCit7CisgICAgUFhFTkNPTlNfRkRPICAgICAgICBGZG8gPSBfX1Bkb0dldEZk
byhQZG8pOworICAgIEJPT0xFQU4gICAgICAgICAgICAgTmVlZEludmFsaWRhdGU7CisgICAgTlRT
VEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0
YXRlKFBkbykgIT0gUG93ZXJEZXZpY2VEMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgUGRv
RDBUb0QzKFBkbyk7CisKK2RvbmU6CisgICAgTmVlZEludmFsaWRhdGUgPSBGQUxTRTsKKworICAg
IEZkb0FjcXVpcmVNdXRleChGZG8pOworCisgICAgaWYgKF9fUGRvSXNNaXNzaW5nKFBkbykpIHsK
KyAgICAgICAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZSA9IF9fUGRvR2V0RGV2aWNlUG5wU3Rh
dGUoUGRvKTsKKworICAgICAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgRGVsZXRlZCk7
CisKKyAgICAgICAgaWYgKFN0YXRlID09IFN1cnByaXNlUmVtb3ZlUGVuZGluZykKKyAgICAgICAg
ICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTmVlZEludmFs
aWRhdGUgPSBUUlVFOworICAgIH0gZWxzZSB7CisgICAgICAgIF9fUGRvU2V0RGV2aWNlUG5wU3Rh
dGUoUGRvLCBFbnVtZXJhdGVkKTsKKyAgICB9CisKKyAgICBGZG9SZWxlYXNlTXV0ZXgoRmRvKTsK
KworICAgIGlmIChOZWVkSW52YWxpZGF0ZSkKKyAgICAgICAgSW9JbnZhbGlkYXRlRGV2aWNlUmVs
YXRpb25zKEZkb0dldFBoeXNpY2FsRGV2aWNlT2JqZWN0KEZkbyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdXNSZWxhdGlvbnMpOworCisgICAgc3RhdHVzID0gU1RBVFVT
X1NVQ0NFU1M7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0Nv
bXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVz
OworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5RGV2aWNl
UmVsYXRpb25zKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAg
ICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2Nh
dGlvbjsKKyAgICBQREVWSUNFX1JFTEFUSU9OUyAgIFJlbGF0aW9uczsKKyAgICBOVFNUQVRVUyAg
ICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBT
dGFja0xvY2F0aW9uKElycCk7CisKKyAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsK
KworICAgIGlmIChTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlF1ZXJ5RGV2aWNlUmVsYXRpb25z
LlR5cGUgIT0gVGFyZ2V0RGV2aWNlUmVsYXRpb24pCisgICAgICAgIGdvdG8gZG9uZTsKKworICAg
IFJlbGF0aW9ucyA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhQYWdlZFBvb2wsIHNpemVvZihERVZJ
Q0VfUkVMQVRJT05TKSwgUERPX1BPT0wpOworCisgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9S
WTsKKyAgICBpZiAoUmVsYXRpb25zID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAg
IFJ0bFplcm9NZW1vcnkoUmVsYXRpb25zLCBzaXplb2YoREVWSUNFX1JFTEFUSU9OUykpOworCisg
ICAgUmVsYXRpb25zLT5Db3VudCA9IDE7CisgICAgT2JSZWZlcmVuY2VPYmplY3QoX19QZG9HZXRE
ZXZpY2VPYmplY3QoUGRvKSk7CisgICAgUmVsYXRpb25zLT5PYmplY3RzWzBdID0gX19QZG9HZXRE
ZXZpY2VPYmplY3QoUGRvKTsKKworICAgIElycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAoVUxP
TkdfUFRSKVJlbGF0aW9uczsKKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworZG9uZToK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5Q2FwYWJpbGl0aWVzKAorICAg
IElOICBQWEVOQ09OU19QRE8gICAgICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgICAg
ICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICAgICAgU3RhY2tMb2NhdGlv
bjsKKyAgICBQREVWSUNFX0NBUEFCSUxJVElFUyAgICBDYXBhYmlsaXRpZXM7CisgICAgU1lTVEVN
X1BPV0VSX1NUQVRFICAgICAgU3lzdGVtUG93ZXJTdGF0ZTsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFBkbyk7CisKKyAg
ICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAg
IENhcGFiaWxpdGllcyA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuRGV2aWNlQ2FwYWJpbGl0
aWVzLkNhcGFiaWxpdGllczsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX1BBUkFNRVRF
UjsKKyAgICBpZiAoQ2FwYWJpbGl0aWVzLT5WZXJzaW9uICE9IDEpCisgICAgICAgIGdvdG8gZG9u
ZTsKKworICAgIENhcGFiaWxpdGllcy0+RGV2aWNlRDEgPSAwOworICAgIENhcGFiaWxpdGllcy0+
RGV2aWNlRDIgPSAwOworICAgIENhcGFiaWxpdGllcy0+TG9ja1N1cHBvcnRlZCA9IDA7CisgICAg
Q2FwYWJpbGl0aWVzLT5FamVjdFN1cHBvcnRlZCA9IDE7CisgICAgQ2FwYWJpbGl0aWVzLT5SZW1v
dmFibGUgPSAxOworICAgIENhcGFiaWxpdGllcy0+RG9ja0RldmljZSA9IDA7CisgICAgQ2FwYWJp
bGl0aWVzLT5VbmlxdWVJRCA9IDE7CisgICAgQ2FwYWJpbGl0aWVzLT5TaWxlbnRJbnN0YWxsID0g
MTsKKyAgICBDYXBhYmlsaXRpZXMtPlJhd0RldmljZU9LID0gMTsKKyAgICBDYXBhYmlsaXRpZXMt
PlN1cnByaXNlUmVtb3ZhbE9LID0gMTsKKyAgICBDYXBhYmlsaXRpZXMtPkhhcmR3YXJlRGlzYWJs
ZWQgPSAwOworICAgIENhcGFiaWxpdGllcy0+Tm9EaXNwbGF5SW5VSSA9IDA7CisKKyAgICBDYXBh
YmlsaXRpZXMtPkFkZHJlc3MgPSAweGZmZmZmZmZmOworICAgIENhcGFiaWxpdGllcy0+VUlOdW1i
ZXIgPSAweGZmZmZmZmZmOworCisgICAgZm9yIChTeXN0ZW1Qb3dlclN0YXRlID0gMDsgU3lzdGVt
UG93ZXJTdGF0ZSA8IFBvd2VyU3lzdGVtTWF4aW11bTsgU3lzdGVtUG93ZXJTdGF0ZSsrKSB7Cisg
ICAgICAgIHN3aXRjaCAoU3lzdGVtUG93ZXJTdGF0ZSkgeworICAgICAgICBjYXNlIFBvd2VyU3lz
dGVtVW5zcGVjaWZpZWQ6CisgICAgICAgIGNhc2UgUG93ZXJTeXN0ZW1TbGVlcGluZzE6CisgICAg
ICAgIGNhc2UgUG93ZXJTeXN0ZW1TbGVlcGluZzI6CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFBvd2VyU3lzdGVtV29ya2luZzoKKyAgICAgICAgICAgIENhcGFiaWxpdGllcy0+
RGV2aWNlU3RhdGVbU3lzdGVtUG93ZXJTdGF0ZV0gPSBQb3dlckRldmljZUQwOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENhcGFiaWxpdGllcy0+
RGV2aWNlU3RhdGVbU3lzdGVtUG93ZXJTdGF0ZV0gPSBQb3dlckRldmljZUQzOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDYXBhYmlsaXRpZXMtPlN5c3RlbVdh
a2UgPSBQb3dlclN5c3RlbVVuc3BlY2lmaWVkOworICAgIENhcGFiaWxpdGllcy0+RGV2aWNlV2Fr
ZSA9IFBvd2VyRGV2aWNlVW5zcGVjaWZpZWQ7CisgICAgQ2FwYWJpbGl0aWVzLT5EMUxhdGVuY3kg
PSAwOworICAgIENhcGFiaWxpdGllcy0+RDJMYXRlbmN5ID0gMDsKKyAgICBDYXBhYmlsaXRpZXMt
PkQzTGF0ZW5jeSA9IDA7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworZG9uZToK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb1F1ZXJ5RGV2aWNlVGV4dCgKKyAgICBJ
TiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAg
ICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgUFdDSEFS
ICAgICAgICAgICAgICBCdWZmZXI7CisgICAgVU5JQ09ERV9TVFJJTkcgICAgICBUZXh0OworICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKworICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlv
bi0+UGFyYW1ldGVycy5RdWVyeURldmljZVRleHQuRGV2aWNlVGV4dFR5cGUpIHsKKyAgICBjYXNl
IERldmljZVRleHREZXNjcmlwdGlvbjoKKyAgICAgICAgVHJhY2UoIkRldmljZVRleHREZXNjcmlw
dGlvblxuIik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEZXZpY2VUZXh0TG9jYXRpb25J
bmZvcm1hdGlvbjoKKyAgICAgICAgVHJhY2UoIkRldmljZVRleHRMb2NhdGlvbkluZm9ybWF0aW9u
XG4iKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBJcnAtPklvU3Rh
dHVzLkluZm9ybWF0aW9uID0gMDsKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JU
RUQ7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBCdWZmZXIgPSBFeEFsbG9jYXRl
UG9vbFdpdGhUYWcoUGFnZWRQb29sLCBNQVhURVhUTEVOLCBQRE9fUE9PTCk7CisKKyAgICBzdGF0
dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChCdWZmZXIgPT0gTlVMTCkKKyAgICAgICAg
Z290byBkb25lOworCisgICAgUnRsWmVyb01lbW9yeShCdWZmZXIsIE1BWFRFWFRMRU4pOworCisg
ICAgVGV4dC5CdWZmZXIgPSBCdWZmZXI7CisgICAgVGV4dC5NYXhpbXVtTGVuZ3RoID0gTUFYVEVY
VExFTjsKKyAgICBUZXh0Lkxlbmd0aCA9IDA7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24t
PlBhcmFtZXRlcnMuUXVlcnlEZXZpY2VUZXh0LkRldmljZVRleHRUeXBlKSB7CisgICAgY2FzZSBE
ZXZpY2VUZXh0RGVzY3JpcHRpb246CisgICAgICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRm
VyhCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhURVhUTEVO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlaHMgUFYgQ29uc29sZSAj
JWhzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST0RVQ1RfTkFNRV9T
VFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb0dldE5hbWUoUGRv
KSk7CisgICAgICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOworCisgICAgICAgIEJ1ZmZl
ciArPSB3Y3NsZW4oQnVmZmVyKTsKKworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRGV2aWNl
VGV4dExvY2F0aW9uSW5mb3JtYXRpb246CisgICAgICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJp
bnRmVyhCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhURVhU
TEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlaHMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9HZXROYW1lKFBkbykpOworICAgICAg
ICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgICAgICBCdWZmZXIgKz0gd2NzbGVu
KEJ1ZmZlcik7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlQoRkFMU0UpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBUZXh0Lkxlbmd0aCA9IChV
U0hPUlQpKChVTE9OR19QVFIpQnVmZmVyIC0gKFVMT05HX1BUUilUZXh0LkJ1ZmZlcik7CisKKyAg
ICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09ICwgUEFTU0lWRV9MRVZFTCk7CisKKyAg
ICBUcmFjZSgiJXM6ICV3WlxuIiwgX19QZG9HZXROYW1lKFBkbyksICZUZXh0KTsKKworICAgIEly
cC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAoVUxPTkdfUFRSKVRleHQuQnVmZmVyOworICAgIHN0
YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCitkb25lOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVz
ID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsK
KworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNU
QVRVUworUGRvUmVhZENvbmZpZygKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJ
TiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1F
VEVSKFBkbyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19OT1RfU1VQUE9S
VEVEOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAg
IHJldHVybiBTVEFUVVNfTk9UX1NVUFBPUlRFRDsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5M
SU5FIE5UU1RBVFVTCitQZG9Xcml0ZUNvbmZpZygKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBk
bywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBVTlJFRkVSRU5D
RURfUEFSQU1FVEVSKFBkbyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19O
T1RfU1VQUE9SVEVEOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5U
KTsKKworICAgIHJldHVybiBTVEFUVVNfTk9UX1NVUFBPUlRFRDsKK30KKworI2RlZmluZSBSRUdT
VFJfVkFMX01BWF9IQ0lEX0xFTiAxMDI0CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNU
QVRVUworUGRvUXVlcnlJZCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgUFdDSEFSICAgICAgICAgICAgICBCdWZmZXI7CisgICAgVU5JQ09E
RV9TVFJJTkcgICAgICBJZDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgIFR5cGU7CisgICAgTlRT
VEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJy
ZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworCisgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5Q
YXJhbWV0ZXJzLlF1ZXJ5SWQuSWRUeXBlKSB7CisgICAgY2FzZSBCdXNRdWVyeUluc3RhbmNlSUQ6
CisgICAgICAgIFRyYWNlKCJCdXNRdWVyeUluc3RhbmNlSURcbiIpOworICAgICAgICBJZC5NYXhp
bXVtTGVuZ3RoID0gKFVTSE9SVCkoc3RybGVuKF9fUGRvR2V0TmFtZShQZG8pKSArIDEpICogc2l6
ZW9mKFdDSEFSKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEJ1c1F1ZXJ5RGV2aWNlSUQ6
CisgICAgICAgIFRyYWNlKCJCdXNRdWVyeURldmljZUlEXG4iKTsKKyAgICAgICAgSWQuTWF4aW11
bUxlbmd0aCA9IChNQVhfREVWSUNFX0lEX0xFTiAtIDIpICogc2l6ZW9mKFdDSEFSKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEJ1c1F1ZXJ5SGFyZHdhcmVJRHM6CisgICAgICAgIFRyYWNl
KCJCdXNRdWVyeUhhcmR3YXJlSURzXG4iKTsKKyAgICAgICAgSWQuTWF4aW11bUxlbmd0aCA9IChV
U0hPUlQpKE1BWF9ERVZJQ0VfSURfTEVOICogc2l6ZW9mKFdDSEFSKSk7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBCdXNRdWVyeUNvbXBhdGlibGVJRHM6CisgICAgICAgIFRyYWNlKCJCdXNR
dWVyeUNvbXBhdGlibGVJRHNcbiIpOworICAgICAgICBJZC5NYXhpbXVtTGVuZ3RoID0gKFVTSE9S
VCkoTUFYX0RFVklDRV9JRF9MRU4gKiBzaXplb2YoV0NIQVIpKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uID0gMDsKKyAg
ICAgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7CisgICAgICAgIGdvdG8gZG9uZTsK
KyAgICB9CisKKyAgICBCdWZmZXIgPSBFeEFsbG9jYXRlUG9vbFdpdGhUYWcoUGFnZWRQb29sLCBJ
ZC5NYXhpbXVtTGVuZ3RoLCBQRE9fUE9PTCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVN
T1JZOworICAgIGlmIChCdWZmZXIgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAg
UnRsWmVyb01lbW9yeShCdWZmZXIsIElkLk1heGltdW1MZW5ndGgpOworCisgICAgSWQuQnVmZmVy
ID0gQnVmZmVyOworICAgIElkLkxlbmd0aCA9IDA7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRp
b24tPlBhcmFtZXRlcnMuUXVlcnlJZC5JZFR5cGUpIHsKKyAgICBjYXNlIEJ1c1F1ZXJ5SW5zdGFu
Y2VJRDoKKyAgICAgICAgVHlwZSA9IFJFR19TWjsKKworICAgICAgICBzdGF0dXMgPSBSdGxTdHJp
bmdDYlByaW50ZlcoQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SWQuTWF4aW11bUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwi
JWhzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUGRvR2V0TmFtZShQ
ZG8pKTsKKyAgICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAgQnVm
ZmVyICs9IHdjc2xlbihCdWZmZXIpOworCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBCdXNR
dWVyeURldmljZUlEOgorICAgICAgICBUeXBlID0gUkVHX1NaOworCisgICAgICAgIHN0YXR1cyA9
IFJ0bFN0cmluZ0NiUHJpbnRmVyhCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJZC5NYXhpbXVtTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTCJYRU5DT05TXFxWRU5fJWhzJkRFVl9DT05TT0xFIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fUGRvR2V0VmVuZG9yTmFtZShQZG8pKTsKKyAgICAgICAgQVNT
RVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAgQnVmZmVyICs9IHdjc2xlbihCdWZm
ZXIpOworCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBCdXNRdWVyeUhhcmR3YXJlSURzOgor
ICAgIGNhc2UgQnVzUXVlcnlDb21wYXRpYmxlSURzOgorICAgIHsKKyAgICAgICAgVUxPTkcgICBM
ZW5ndGg7CisKKyAgICAgICAgVHlwZSA9IFJFR19NVUxUSV9TWjsKKworICAgICAgICBMZW5ndGgg
PSBJZC5NYXhpbXVtTGVuZ3RoOworCisgICAgICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRm
VyhCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIlhFTkNPTlNcXFZFTl8laHMmREVW
X0NPTlNPTEUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9HZXRW
ZW5kb3JOYW1lKFBkbykpOworICAgICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKKwor
ICAgICAgICBCdWZmZXIgKz0gd2NzbGVuKEJ1ZmZlcik7CisgICAgICAgIExlbmd0aCAtPSAoVUxP
TkcpKHdjc2xlbihCdWZmZXIpICogc2l6ZW9mKFdDSEFSKSk7CisKKyAgICAgICAgQnVmZmVyKys7
CisgICAgICAgIExlbmd0aCAtPSBzaXplb2YoV0NIQVIpOworCisgICAgICAgIHN0YXR1cyA9IFJ0
bFN0cmluZ0NiUHJpbnRmVyhCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIlhFTkRF
VklDRSIpOworICAgICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgICAgICBC
dWZmZXIgKz0gd2NzbGVuKEJ1ZmZlcik7CisgICAgICAgIEJ1ZmZlcisrOworCisgICAgICAgIEFT
U0VSVDNVKChVTE9OR19QVFIpQnVmZmVyIC0gKFVMT05HX1BUUilJZC5CdWZmZXIsIDwsCisgICAg
ICAgICAgICAgICAgIFJFR1NUUl9WQUxfTUFYX0hDSURfTEVOKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFR5cGUgPSBSRUdfTk9ORTsKKworICAgICAgICBB
U1NFUlQoRkFMU0UpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQzVShLZUdl
dEN1cnJlbnRJcnFsKCksID09ICwgUEFTU0lWRV9MRVZFTCk7CisKKyAgICBJZC5MZW5ndGggPSAo
VVNIT1JUKSgoVUxPTkdfUFRSKUJ1ZmZlciAtIChVTE9OR19QVFIpSWQuQnVmZmVyKTsKKyAgICBC
dWZmZXIgPSBJZC5CdWZmZXI7CisKKyAgICBzd2l0Y2ggKFR5cGUpIHsKKyAgICBjYXNlIFJFR19T
WjoKKyAgICAgICAgVHJhY2UoIi0gJXdzXG4iLCBCdWZmZXIpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgUkVHX01VTFRJX1NaOgorICAgICAgICBkbyB7CisgICAgICAgICAgICBUcmFjZSgi
LSAld3NcbiIsIEJ1ZmZlcik7CisgICAgICAgICAgICBCdWZmZXIgKz0gd2NzbGVuKEJ1ZmZlcik7
CisgICAgICAgICAgICBCdWZmZXIrKzsKKyAgICAgICAgfSB3aGlsZSAoKkJ1ZmZlciAhPSBMJ1ww
Jyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKEZBTFNF
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlv
biA9IChVTE9OR19QVFIpSWQuQnVmZmVyOworICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwor
Citkb25lOgorICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOworICAgIElvQ29tcGxl
dGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9
CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvUXVlcnlCdXNJbmZvcm1h
dGlvbigKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBQTlBfQlVTX0lORk9STUFUSU9OICAgIElu
Zm87CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgVU5SRUZFUkVO
Q0VEX1BBUkFNRVRFUihQZG8pOworCisgICAgSW5mbyA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhQ
YWdlZFBvb2wsIHNpemVvZihQTlBfQlVTX0lORk9STUFUSU9OKSwgUERPX1BPT0wpOworCisgICAg
c3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBpZiAoSW5mbyA9PSBOVUxMKQorICAgICAg
ICBnb3RvIGRvbmU7CisKKyAgICBSdGxaZXJvTWVtb3J5KEluZm8sIHNpemVvZihQTlBfQlVTX0lO
Rk9STUFUSU9OKSk7CisKKyAgICBJbmZvLT5CdXNUeXBlR3VpZCA9IEdVSURfQlVTX1RZUEVfSU5U
RVJOQUw7CisgICAgSW5mby0+TGVnYWN5QnVzVHlwZSA9IFBOUEJ1czsKKyAgICBJbmZvLT5CdXNO
dW1iZXIgPSAwOworCisgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IChVTE9OR19QVFIp
SW5mbzsKKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworZG9uZToKKyAgICBJcnAtPklv
U3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05P
X0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgTlRTVEFUVVMK
K1Bkb0RlbGVnYXRlSXJwKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIHJldHVybiBGZG9EZWxlZ2F0ZUlycChf
X1Bkb0dldEZkbyhQZG8pLCBJcnApOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRT
VEFUVVMKK1Bkb0RldmljZVVzYWdlTm90aWZpY2F0aW9uKAorICAgIElOICBQWEVOQ09OU19QRE8g
ICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RB
VFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgc3RhdHVzID0gUGRvRGVsZWdhdGVJcnAoUGRv
LCBJcnApOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CisgICAgSW9Db21w
bGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsK
K30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9FamVjdCgKKyAgICBJ
TiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAg
ICkKK3sKKyAgICBQWEVOQ09OU19GRE8gICAgICAgIEZkbyA9IF9fUGRvR2V0RmRvKFBkbyk7Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBUcmFjZSgiJXNcbiIsIF9fUGRv
R2V0TmFtZShQZG8pKTsKKworICAgIEZkb0FjcXVpcmVNdXRleChGZG8pOworCisgICAgX19QZG9T
ZXREZXZpY2VQbnBTdGF0ZShQZG8sIERlbGV0ZWQpOworICAgIF9fUGRvU2V0TWlzc2luZyhQZG8s
ICJkZXZpY2UgZWplY3RlZCIpOworCisgICAgRmRvUmVsZWFzZU11dGV4KEZkbyk7CisKKyAgICBJ
b0ludmFsaWRhdGVEZXZpY2VSZWxhdGlvbnMoRmRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoRmRv
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzUmVsYXRpb25zKTsKKworICAg
IHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBz
dGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVT
CitQZG9EaXNwYXRjaFBucCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAg
UElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0
YWNrTG9jYXRpb247CisgICAgVUNIQVIgICAgICAgICAgICAgICBNaW5vckZ1bmN0aW9uOworICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBNaW5vckZ1bmN0aW9uID0gU3RhY2tM
b2NhdGlvbi0+TWlub3JGdW5jdGlvbjsKKworICAgIFRyYWNlKCI9PT09PiAoJXMpICglMDJ4OiVz
KVxuIiwKKyAgICAgICAgICBfX1Bkb0dldE5hbWUoUGRvKSwKKyAgICAgICAgICBNaW5vckZ1bmN0
aW9uLAorICAgICAgICAgIFBucE1pbm9yRnVuY3Rpb25OYW1lKE1pbm9yRnVuY3Rpb24pKTsKKwor
ICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWlub3JGdW5jdGlvbikgeworICAgIGNhc2UgSVJQ
X01OX1NUQVJUX0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gUGRvU3RhcnREZXZpY2UoUGRvLCBJ
cnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZX1NUT1BfREVWSUNF
OgorICAgICAgICBzdGF0dXMgPSBQZG9RdWVyeVN0b3BEZXZpY2UoUGRvLCBJcnApOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX0NBTkNFTF9TVE9QX0RFVklDRToKKyAgICAgICAg
c3RhdHVzID0gUGRvQ2FuY2VsU3RvcERldmljZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBJUlBfTU5fU1RPUF9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1N0b3BE
ZXZpY2UoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZ
X1JFTU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5UmVtb3ZlRGV2aWNlKFBk
bywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9DQU5DRUxfUkVNT1ZF
X0RFVklDRToKKyAgICAgICAgc3RhdHVzID0gUGRvQ2FuY2VsUmVtb3ZlRGV2aWNlKFBkbywgSXJw
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9TVVJQUklTRV9SRU1PVkFMOgor
ICAgICAgICBzdGF0dXMgPSBQZG9TdXJwcmlzZVJlbW92YWwoUGRvLCBJcnApOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgSVJQX01OX1JFTU9WRV9ERVZJQ0U6CisgICAgICAgIHN0YXR1cyA9
IFBkb1JlbW92ZURldmljZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJ
UlBfTU5fUVVFUllfREVWSUNFX1JFTEFUSU9OUzoKKyAgICAgICAgc3RhdHVzID0gUGRvUXVlcnlE
ZXZpY2VSZWxhdGlvbnMoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQ
X01OX1FVRVJZX0NBUEFCSUxJVElFUzoKKyAgICAgICAgc3RhdHVzID0gUGRvUXVlcnlDYXBhYmls
aXRpZXMoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1FVRVJZ
X0RFVklDRV9URVhUOgorICAgICAgICBzdGF0dXMgPSBQZG9RdWVyeURldmljZVRleHQoUGRvLCBJ
cnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01OX1JFQURfQ09ORklHOgorICAg
ICAgICBzdGF0dXMgPSBQZG9SZWFkQ29uZmlnKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIElSUF9NTl9XUklURV9DT05GSUc6CisgICAgICAgIHN0YXR1cyA9IFBkb1dyaXRl
Q29uZmlnKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NTl9RVUVS
WV9JRDoKKyAgICAgICAgc3RhdHVzID0gUGRvUXVlcnlJZChQZG8sIElycCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBJUlBfTU5fUVVFUllfQlVTX0lORk9STUFUSU9OOgorICAgICAgICBz
dGF0dXMgPSBQZG9RdWVyeUJ1c0luZm9ybWF0aW9uKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIElSUF9NTl9ERVZJQ0VfVVNBR0VfTk9USUZJQ0FUSU9OOgorICAgICAgICBz
dGF0dXMgPSBQZG9EZXZpY2VVc2FnZU5vdGlmaWNhdGlvbihQZG8sIElycCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBJUlBfTU5fRUpFQ1Q6CisgICAgICAgIHN0YXR1cyA9IFBkb0VqZWN0
KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzdGF0
dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsKKyAgICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBUcmFjZSgi
PD09PT0gKCUwMng6JXMpKCUwOHgpXG4iLAorICAgICAgICAgIE1pbm9yRnVuY3Rpb24sCisgICAg
ICAgICAgUG5wTWlub3JGdW5jdGlvbk5hbWUoTWlub3JGdW5jdGlvbiksCisgICAgICAgICAgc3Rh
dHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBGT1JDRUlOTElORSBOVFNU
QVRVUworX19QZG9TZXREZXZpY2VQb3dlcigKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywK
KyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgREVWSUNFX1BPV0VSX1NUQVRFICBEZXZpY2VTdGF0
ZTsKKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOworICAgIE5UU1RBVFVTICAg
ICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0
YWNrTG9jYXRpb24oSXJwKTsKKyAgICBEZXZpY2VTdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFt
ZXRlcnMuUG93ZXIuU3RhdGUuRGV2aWNlU3RhdGU7CisgICAgUG93ZXJBY3Rpb24gPSBTdGFja0xv
Y2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsKKworICAgIFRyYWNlKCI9PT09
PiAoJXMpICglczolcylcbiIsCisgICAgICAgICAgX19QZG9HZXROYW1lKFBkbyksCisgICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpLAorICAgICAgICAgIFBvd2VyQWN0
aW9uTmFtZShQb3dlckFjdGlvbikpOworCisgICAgQVNTRVJUM1UoUG93ZXJBY3Rpb24sIDwsIFBv
d2VyQWN0aW9uU2h1dGRvd24pOworCisgICAgaWYgKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQ
ZG8pID4gRGV2aWNlU3RhdGUpIHsKKyAgICAgICAgVHJhY2UoIiVzOiBQT1dFUklORyBVUDogJXMg
LT4gJXNcbiIsCisgICAgICAgICAgICAgIF9fUGRvR2V0TmFtZShQZG8pLAorICAgICAgICAgICAg
ICBQb3dlckRldmljZVN0YXRlTmFtZShfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSksCisg
ICAgICAgICAgICAgIFBvd2VyRGV2aWNlU3RhdGVOYW1lKERldmljZVN0YXRlKSk7CisKKyAgICAg
ICAgQVNTRVJUM1UoRGV2aWNlU3RhdGUsID09ICwgUG93ZXJEZXZpY2VEMCk7CisgICAgICAgIHN0
YXR1cyA9IFBkb0QzVG9EMChQZG8pOworICAgICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMp
KTsKKyAgICB9IGVsc2UgaWYgKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pIDwgRGV2aWNl
U3RhdGUpIHsKKyAgICAgICAgVHJhY2UoIiVzOiBQT1dFUklORyBET1dOOiAlcyAtPiAlc1xuIiwK
KyAgICAgICAgICAgICAgX19QZG9HZXROYW1lKFBkbyksCisgICAgICAgICAgICAgIFBvd2VyRGV2
aWNlU3RhdGVOYW1lKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKSwKKyAgICAgICAgICAg
ICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsKKworICAgICAgICBBU1NFUlQz
VShEZXZpY2VTdGF0ZSwgPT0gLCBQb3dlckRldmljZUQzKTsKKyAgICAgICAgUGRvRDBUb0QzKFBk
byk7CisgICAgfQorCisgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsK
KyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICBUcmFj
ZSgiPD09PT0gKCVzOiVzKVxuIiwKKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShEZXZp
Y2VTdGF0ZSksCisgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7CisKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBOVFNUQVRVUworUGRvRGV2aWNl
UG93ZXIoCisgICAgSU4gIFBYRU5DT05TX1RIUkVBRCBTZWxmLAorICAgIElOICBQVk9JRCAgICAg
ICAgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19QRE8gICAgICAgIFBkbyA9IENv
bnRleHQ7CisgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVudDsKKworICAgIEV2ZW50ID0gVGhy
ZWFkR2V0RXZlbnQoU2VsZik7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIFBJUlAgICAgSXJw
OworCisgICAgICAgIGlmIChQZG8tPkRldmljZVBvd2VySXJwID09IE5VTEwpIHsKKyAgICAgICAg
ICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdChFdmVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsKKyAgICAgICAgICAgIEtlQ2xlYXJFdmVudChFdmVudCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNlbGYpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgSXJwID0gUGRvLT5EZXZpY2VQb3dlcklycDsKKworICAgICAgICBpZiAoSXJw
ID09IE5VTEwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBQZG8tPkRldmljZVBv
d2VySXJwID0gTlVMTDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICAgICAgKFZP
SUQpX19QZG9TZXREZXZpY2VQb3dlcihQZG8sIElycCk7CisgICAgfQorCisgICAgcmV0dXJuIFNU
QVRVU19TVUNDRVNTOworfQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKFJFUVVFU1RfUE9XRVJfQ09N
UExFVEUpCitfX2Rydl9zYW1lSVJRTAorVk9JRAorX19QZG9SZXF1ZXN0U2V0RGV2aWNlUG93ZXIo
CisgICAgSU4gIFBERVZJQ0VfT0JKRUNUICAgICAgRGV2aWNlT2JqZWN0LAorICAgIElOICBVQ0hB
UiAgICAgICAgICAgICAgIE1pbm9yRnVuY3Rpb24sCisgICAgSU4gIFBPV0VSX1NUQVRFICAgICAg
ICAgUG93ZXJTdGF0ZSwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgICAgICBDb250ZXh0LAorICAg
IElOICBQSU9fU1RBVFVTX0JMT0NLICAgIElvU3RhdHVzCisgICAgKQoreworICAgIFBLRVZFTlQg
ICAgICAgICAgICAgICAgIEV2ZW50ID0gQ29udGV4dDsKKworICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRGV2aWNlT2JqZWN0KTsKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKE1pbm9yRnVu
Y3Rpb24pOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoUG93ZXJTdGF0ZSk7CisKKyAgICBB
U1NFUlQoTlRfU1VDQ0VTUyhJb1N0YXR1cy0+U3RhdHVzKSk7CisKKyAgICBLZVNldEV2ZW50KEV2
ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsKK30KKworc3RhdGljIFZPSUQKK1Bkb1JlcXVl
c3RTZXREZXZpY2VQb3dlcigKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sCisgICAg
SU4gIERFVklDRV9QT1dFUl9TVEFURSAgRGV2aWNlU3RhdGUKKyAgICApCit7CisgICAgUE9XRVJf
U1RBVEUgICAgICAgICAgICAgUG93ZXJTdGF0ZTsKKyAgICBLRVZFTlQgICAgICAgICAgICAgICAg
ICBFdmVudDsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBUcmFj
ZSgiJXNcbiIsIFBvd2VyRGV2aWNlU3RhdGVOYW1lKERldmljZVN0YXRlKSk7CisKKyAgICBBU1NF
UlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09ICwgUEFTU0lWRV9MRVZFTCk7CisKKyAgICBQb3dl
clN0YXRlLkRldmljZVN0YXRlID0gRGV2aWNlU3RhdGU7CisgICAgS2VJbml0aWFsaXplRXZlbnQo
JkV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOworCisgICAgc3RhdHVzID0gUG9SZXF1
ZXN0UG93ZXJJcnAoX19QZG9HZXREZXZpY2VPYmplY3QoUGRvKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJUlBfTU5fU0VUX1BPV0VSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBvd2VyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9S
ZXF1ZXN0U2V0RGV2aWNlUG93ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV2
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIEFTU0VSVChO
VF9TVUNDRVNTKHN0YXR1cykpOworCisgICAgKFZPSUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZF
dmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCk7Cit9CisKKy8vIERlZmluZSBhIHN0YXRpYyBTeXN0ZW1Qb3dlciB0byBEZXZpY2VQb3dlciBt
YXAKKy8vIFRoaXMgd291bGQgbm9ybWFsbHkgYmUgcXVlcmllZCBmcm9tIHRoZSBwb3dlciBwb2xp
Y3kgb3duZXIsCisvLyBidXQgc2luY2UgdGhpcyBQZG8gaXMgInJhdyIsIHRoZSBQZG8gaXMgdGhl
IHBvd2VyIHBvbGljeSBvd25lcgorc3RhdGljIGNvbnN0IERFVklDRV9QT1dFUl9TVEFURQorRGV2
aWNlUG93ZXJTdGF0ZU1hcFtQb3dlclN5c3RlbU1heGltdW1dID0KK3sKKyAgICBQb3dlckRldmlj
ZVVuc3BlY2lmaWVkLCAvLyBQb3dlclN5c3RlbVVuc3BlY2lmaWVkCisgICAgUG93ZXJEZXZpY2VE
MCwgICAgICAgICAgLy8gUG93ZXJTeXN0ZW1Xb3JraW5nCisgICAgUG93ZXJEZXZpY2VEMywgICAg
ICAgICAgLy8gUG93ZXJTeXN0ZW1TbGVlcGluZzEKKyAgICBQb3dlckRldmljZUQzLCAgICAgICAg
ICAvLyBQb3dlclN5c3RlbVNsZWVwaW5nMgorICAgIFBvd2VyRGV2aWNlRDMsICAgICAgICAgIC8v
IFBvd2VyU3lzdGVtU2xlZXBpbmczCisgICAgUG93ZXJEZXZpY2VEMywgICAgICAgICAgLy8gUG93
ZXJTeXN0ZW1IaWJlcm5hdGUKKyAgICBQb3dlckRldmljZUQzICAgICAgICAgICAvLyBQb3dlclN5
c3RlbVNodXRkb3duCit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fUGRvU2V0
U3lzdGVtUG93ZXIoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICAgICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04g
ICAgICBTdGFja0xvY2F0aW9uOworICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgICAgIFN5c3RlbVN0
YXRlOworICAgIFBPV0VSX0FDVElPTiAgICAgICAgICAgIFBvd2VyQWN0aW9uOworCisgICAgU3Rh
Y2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKyAgICBTeXN0
ZW1TdGF0ZSA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU3RhdGUuU3lzdGVtU3Rh
dGU7CisgICAgUG93ZXJBY3Rpb24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNo
dXRkb3duVHlwZTsKKworICAgIFRyYWNlKCI9PT09PiAoJXMpICglczolcylcbiIsCisgICAgICAg
ICAgX19QZG9HZXROYW1lKFBkbyksCisgICAgICAgICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lz
dGVtU3RhdGUpLAorICAgICAgICAgIFBvd2VyQWN0aW9uTmFtZShQb3dlckFjdGlvbikpOworCisg
ICAgQVNTRVJUM1UoUG93ZXJBY3Rpb24sIDwsIFBvd2VyQWN0aW9uU2h1dGRvd24pOworCisgICAg
aWYgKF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pID4gU3lzdGVtU3RhdGUpIHsKKyAgICAg
ICAgaWYgKFN5c3RlbVN0YXRlIDwgUG93ZXJTeXN0ZW1IaWJlcm5hdGUgJiYKKyAgICAgICAgICAg
IF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pID49IFBvd2VyU3lzdGVtSGliZXJuYXRlKSB7
CisgICAgICAgICAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBQb3dlclN5c3RlbUhp
YmVybmF0ZSk7CisgICAgICAgICAgICBQZG9TNFRvUzMoUGRvKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFRyYWNlKCIlczogUE9XRVJJTkcgVVA6ICVzIC0+ICVzXG4iLAorICAgICAgICAgICAgICBf
X1Bkb0dldE5hbWUoUGRvKSwKKyAgICAgICAgICAgICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoX19Q
ZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykpLAorICAgICAgICAgICAgICBQb3dlclN5c3RlbVN0
YXRlTmFtZShTeXN0ZW1TdGF0ZSkpOworCisgICAgICAgIFBkb1JlcXVlc3RTZXREZXZpY2VQb3dl
cihQZG8sIERldmljZVBvd2VyU3RhdGVNYXBbU3lzdGVtU3RhdGVdKTsKKyAgICB9IGVsc2UgaWYg
KF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pIDwgU3lzdGVtU3RhdGUpIHsKKyAgICAgICAg
UGRvUmVxdWVzdFNldERldmljZVBvd2VyKFBkbywgRGV2aWNlUG93ZXJTdGF0ZU1hcFtTeXN0ZW1T
dGF0ZV0pOworCisgICAgICAgIFRyYWNlKCIlczogUE9XRVJJTkcgRE9XTjogJXMgLT4gJXNcbiIs
CisgICAgICAgICAgICAgIF9fUGRvR2V0TmFtZShQZG8pLAorICAgICAgICAgICAgICBQb3dlclN5
c3RlbVN0YXRlTmFtZShfX1Bkb0dldFN5c3RlbVBvd2VyU3RhdGUoUGRvKSksCisgICAgICAgICAg
ICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3RlbVN0YXRlKSk7CisKKyAgICAgICAgaWYgKFN5
c3RlbVN0YXRlID49IFBvd2VyU3lzdGVtSGliZXJuYXRlICYmCisgICAgICAgICAgICBfX1Bkb0dl
dFN5c3RlbVBvd2VyU3RhdGUoUGRvKSA8IFBvd2VyU3lzdGVtSGliZXJuYXRlKSB7CisgICAgICAg
ICAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRvLCBQb3dlclN5c3RlbVNsZWVwaW5nMyk7
CisgICAgICAgICAgICBQZG9TM1RvUzQoUGRvKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9f
UGRvU2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8sIFN5c3RlbVN0YXRlKTsKKworICAgIElycC0+SW9T
dGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOworCisgICAgVHJhY2UoIjw9PT09ICglczolcylcbiIsCisgICAg
ICAgICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUpLAorICAgICAgICAgIFBvd2Vy
QWN0aW9uTmFtZShQb3dlckFjdGlvbikpOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwor
fQorCitzdGF0aWMgTlRTVEFUVVMKK1Bkb1N5c3RlbVBvd2VyKAorICAgIElOICBQWEVOQ09OU19U
SFJFQUQgU2VsZiwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIENvbnRleHQKKyAgICApCit7Cisg
ICAgUFhFTkNPTlNfUERPICAgICAgICBQZG8gPSBDb250ZXh0OworICAgIFBLRVZFTlQgICAgICAg
ICAgICAgRXZlbnQ7CisKKyAgICBFdmVudCA9IFRocmVhZEdldEV2ZW50KFNlbGYpOworCisgICAg
Zm9yICg7OykgeworICAgICAgICBQSVJQICAgIElycDsKKworICAgICAgICBpZiAoUGRvLT5TeXN0
ZW1Qb3dlcklycCA9PSBOVUxMKSB7CisgICAgICAgICAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVP
YmplY3QoRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhl
Y3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICBL
ZUNsZWFyRXZlbnQoRXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFRocmVhZElzQWxl
cnRlZChTZWxmKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIElycCA9IFBkby0+U3lz
dGVtUG93ZXJJcnA7CisKKyAgICAgICAgaWYgKElycCA9PSBOVUxMKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgUGRvLT5TeXN0ZW1Qb3dlcklycCA9IE5VTEw7CisgICAgICAgIEtl
TWVtb3J5QmFycmllcigpOworCisgICAgICAgIChWT0lEKV9fUGRvU2V0U3lzdGVtUG93ZXIoUGRv
LCBJcnApOworICAgIH0KKworICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKK30KKworc3RhdGlj
IERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCitQZG9TZXRQb3dlcigKKyAgICBJTiAgUFhFTkNP
TlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgUE9XRVJfU1RBVEVfVFlQ
RSAgICBQb3dlclR5cGU7CisgICAgUE9XRVJfQUNUSU9OICAgICAgICBQb3dlckFjdGlvbjsKKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgUG93ZXJUeXBlID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5UeXBlOworICAgIFBvd2VyQWN0aW9uID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TaHV0ZG93blR5cGU7CisKKyAgICBpZiAoUG93ZXJBY3Rp
b24gPj0gUG93ZXJBY3Rpb25TaHV0ZG93bikgeworICAgICAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3Rh
dHVzOworICAgICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisK
KyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHN3aXRjaCAoUG93ZXJUeXBlKSB7Cisg
ICAgY2FzZSBEZXZpY2VQb3dlclN0YXRlOgorICAgICAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7
CisKKyAgICAgICAgQVNTRVJUM1AoUGRvLT5EZXZpY2VQb3dlcklycCwgPT0gLCBOVUxMKTsKKyAg
ICAgICAgUGRvLT5EZXZpY2VQb3dlcklycCA9IElycDsKKyAgICAgICAgS2VNZW1vcnlCYXJyaWVy
KCk7CisKKyAgICAgICAgVGhyZWFkV2FrZShQZG8tPkRldmljZVBvd2VyVGhyZWFkKTsKKworICAg
ICAgICBzdGF0dXMgPSBTVEFUVVNfUEVORElORzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IFN5c3RlbVBvd2VyU3RhdGU6CisgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsKKworICAg
ICAgICBBU1NFUlQzUChQZG8tPlN5c3RlbVBvd2VySXJwLCA9PSAsIE5VTEwpOworICAgICAgICBQ
ZG8tPlN5c3RlbVBvd2VySXJwID0gSXJwOworICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKwor
ICAgICAgICBUaHJlYWRXYWtlKFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOworCisgICAgICAgIHN0
YXR1cyA9IFNUQVRVU19QRU5ESU5HOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOworICAgICAgICBJb0NvbXBsZXRl
UmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ZG9uZToKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUg
TlRTVEFUVVMKK1Bkb1F1ZXJ5UG93ZXIoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sCisg
ICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFBkbyk7CisKKyAgICBJ
cnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOworCisgICAgc3RhdHVzID0gSXJw
LT5Jb1N0YXR1cy5TdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNS
RU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIERFQ0xTUEVDX05PSU5M
SU5FIE5UU1RBVFVTCitQZG9EaXNwYXRjaFBvd2VyKAorICAgIElOICBQWEVOQ09OU19QRE8gICAg
UGRvLAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFD
S19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsKKyAgICBVQ0hBUiAgICAgICAgICAgICAgIE1pbm9y
RnVuY3Rpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xv
Y2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgIE1pbm9yRnVu
Y3Rpb24gPSBTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uOworCisgICAgc3dpdGNoIChTdGFj
a0xvY2F0aW9uLT5NaW5vckZ1bmN0aW9uKSB7CisgICAgY2FzZSBJUlBfTU5fU0VUX1BPV0VSOgor
ICAgICAgICBzdGF0dXMgPSBQZG9TZXRQb3dlcihQZG8sIElycCk7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBJUlBfTU5fUVVFUllfUE9XRVI6CisgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5
UG93ZXIoUGRvLCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAg
IHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOworICAgICAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRv
RGlzcGF0Y2hEZWZhdWx0KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3Rh
dHVzOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihQZG8pOworCisgICAgc3RhdHVzID0g
SXJwLT5Jb1N0YXR1cy5TdGF0dXM7CisgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19J
TkNSRU1FTlQpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bkb0Rpc3Bh
dGNoKAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBQSVJQICAgICAgICAg
ICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsK
KyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJ
b0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9j
YXRpb24tPk1ham9yRnVuY3Rpb24pIHsKKyAgICBjYXNlIElSUF9NSl9QTlA6CisgICAgICAgIHN0
YXR1cyA9IFBkb0Rpc3BhdGNoUG5wKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIElSUF9NSl9QT1dFUjoKKyAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0Y2hQb3dlcihQZG8s
IElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc3RhdHVzID0g
UGRvRGlzcGF0Y2hEZWZhdWx0KFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK1Bkb1Jlc3VtZSgKKyAgICBJTiAgUFhF
TkNPTlNfUERPICAgIFBkbworICAgICkKK3sKKyAgICBUcmFjZSgiKCVzKSA9PT09PlxuIiwgX19Q
ZG9HZXROYW1lKFBkbykpOworICAgIFRyYWNlKCIoJXMpIDw9PT09XG4iLCBfX1Bkb0dldE5hbWUo
UGRvKSk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitWT0lECitQZG9TdXNwZW5k
KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIFRyYWNlKCIoJXMp
ID09PT0+XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7CisgICAgVHJhY2UoIiglcykgPD09PT1cbiIs
IF9fUGRvR2V0TmFtZShQZG8pKTsKK30KKworTlRTVEFUVVMKK1Bkb0NyZWF0ZSgKKyAgICBJTiAg
UFhFTkNPTlNfRkRPICAgIEZkbywKKyAgICBJTiAgUEFOU0lfU1RSSU5HICAgIERldmljZQorICAg
ICkKK3sKKyAgICBQREVWSUNFX09CSkVDVCAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0OworICAg
IFBYRU5DT05TX0RYICAgICAgICAgRHg7CisgICAgUFhFTkNPTlNfUERPICAgICAgICBQZG87Cisg
ICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyNwcmFnbWEgcHJlZmFzdChzdXBwcmVz
czoyODE5NykgLy8gUG9zc2libHkgbGVha2luZyBtZW1vcnkgJ1BoeXNpY2FsRGV2aWNlT2JqZWN0
JworICAgIHN0YXR1cyA9IElvQ3JlYXRlRGV2aWNlKERyaXZlckdldERyaXZlck9iamVjdCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5DT05TX0RYKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ
TEVfREVWSUNFX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9ERVZJ
Q0VfU0VDVVJFX09QRU4gfCBGSUxFX0FVVE9HRU5FUkFURURfREVWSUNFX05BTUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlBoeXNpY2FsRGV2aWNlT2JqZWN0KTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgZ290byBmYWlsMTsKKworICAgIER4ID0gKFBYRU5DT05TX0RYKVBoeXNpY2FsRGV2aWNl
T2JqZWN0LT5EZXZpY2VFeHRlbnNpb247CisgICAgUnRsWmVyb01lbW9yeShEeCwgc2l6ZW9mKFhF
TkNPTlNfRFgpKTsKKworICAgIER4LT5UeXBlID0gUEhZU0lDQUxfREVWSUNFX09CSkVDVDsKKyAg
ICBEeC0+RGV2aWNlT2JqZWN0ID0gUGh5c2ljYWxEZXZpY2VPYmplY3Q7CisgICAgRHgtPkRldmlj
ZVBucFN0YXRlID0gUHJlc2VudDsKKyAgICBEeC0+U3lzdGVtUG93ZXJTdGF0ZSA9IFBvd2VyU3lz
dGVtV29ya2luZzsKKyAgICBEeC0+RGV2aWNlUG93ZXJTdGF0ZSA9IFBvd2VyRGV2aWNlRDM7CisK
KyAgICBQZG8gPSBfX1Bkb0FsbG9jYXRlKHNpemVvZihYRU5DT05TX1BETykpOworCisgICAgc3Rh
dHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBpZiAoUGRvID09IE5VTEwpCisgICAgICAgIGdv
dG8gZmFpbDI7CisKKyAgICBQZG8tPkR4ID0gRHg7CisgICAgUGRvLT5GZG8gPSBGZG87CisKKyAg
ICBzdGF0dXMgPSBUaHJlYWRDcmVhdGUoUGRvU3lzdGVtUG93ZXIsIFBkbywgJlBkby0+U3lzdGVt
UG93ZXJUaHJlYWQpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3Rv
IGZhaWwzOworCisgICAgc3RhdHVzID0gVGhyZWFkQ3JlYXRlKFBkb0RldmljZVBvd2VyLCBQZG8s
ICZQZG8tPkRldmljZVBvd2VyVGhyZWFkKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkK
KyAgICAgICAgZ290byBmYWlsNDsKKworICAgIF9fUGRvU2V0TmFtZShQZG8sIERldmljZSk7CisK
KyAgICBGZG9HZXRTdXNwZW5kSW50ZXJmYWNlKEZkbywgJlBkby0+U3VzcGVuZEludGVyZmFjZSk7
CisKKyAgICBEeC0+UGRvID0gUGRvOworCisgICAgc3RhdHVzID0gRmRvQWRkUGh5c2ljYWxEZXZp
Y2VPYmplY3QoRmRvLCBQZG8pOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICBnb3RvIGZhaWw1OworCisgICAgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsKKyAgICBp
ZiAoX19QZG9Jc0VqZWN0UmVxdWVzdGVkKFBkbykpCisgICAgICAgIGdvdG8gZmFpbDY7CisKKyAg
ICBJbmZvKCIlcCAoJXMpXG4iLAorICAgICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QsCisgICAg
ICAgICBfX1Bkb0dldE5hbWUoUGRvKSk7CisKKyAgICBQaHlzaWNhbERldmljZU9iamVjdC0+Rmxh
Z3MgJj0gfkRPX0RFVklDRV9JTklUSUFMSVpJTkc7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNT
OworCitmYWlsNjoKKyAgICBFcnJvcigiZmFpbDZcbiIpOworCisgICAgRmRvUmVtb3ZlUGh5c2lj
YWxEZXZpY2VPYmplY3QoRmRvLCBQZG8pOworCitmYWlsNToKKyAgICBFcnJvcigiZmFpbDVcbiIp
OworCisgICAgKFZPSUQpX19QZG9DbGVhckVqZWN0UmVxdWVzdGVkKFBkbyk7CisKKyAgICBEeC0+
UGRvID0gTlVMTDsKKworICAgIFJ0bFplcm9NZW1vcnkoJlBkby0+U3VzcGVuZEludGVyZmFjZSwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1VTUEVORF9JTlRFUkZBQ0UpKTsKKwor
ICAgIFRocmVhZEFsZXJ0KFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOworICAgIFRocmVhZEpvaW4o
UGRvLT5EZXZpY2VQb3dlclRocmVhZCk7CisgICAgUGRvLT5EZXZpY2VQb3dlclRocmVhZCA9IE5V
TEw7CisKK2ZhaWw0OgorICAgIEVycm9yKCJmYWlsNFxuIik7CisKKyAgICBUaHJlYWRBbGVydChQ
ZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBUaHJlYWRKb2luKFBkby0+U3lzdGVtUG93ZXJU
aHJlYWQpOworICAgIFBkby0+U3lzdGVtUG93ZXJUaHJlYWQgPSBOVUxMOworCitmYWlsMzoKKyAg
ICBFcnJvcigiZmFpbDNcbiIpOworCisgICAgUGRvLT5GZG8gPSBOVUxMOworICAgIFBkby0+RHgg
PSBOVUxMOworCisgICAgQVNTRVJUKElzWmVyb01lbW9yeShQZG8sIHNpemVvZihYRU5DT05TX1BE
TykpKTsKKyAgICBfX1Bkb0ZyZWUoUGRvKTsKKworZmFpbDI6CisgICAgRXJyb3IoImZhaWwyXG4i
KTsKKworICAgIElvRGVsZXRlRGV2aWNlKFBoeXNpY2FsRGV2aWNlT2JqZWN0KTsKKworZmFpbDE6
CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0
dXM7Cit9CisKK1ZPSUQKK1Bkb0Rlc3Ryb3koCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8K
KyAgICApCit7CisgICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IFBkby0+RHg7CisgICAgUERF
VklDRV9PQkpFQ1QgICAgICBQaHlzaWNhbERldmljZU9iamVjdCA9IER4LT5EZXZpY2VPYmplY3Q7
CisgICAgUFhFTkNPTlNfRkRPICAgICAgICBGZG8gPSBfX1Bkb0dldEZkbyhQZG8pOworCisgICAg
QVNTRVJUM1UoX19QZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pLCA9PSAsIERlbGV0ZWQpOworCisg
ICAgQVNTRVJUKF9fUGRvSXNNaXNzaW5nKFBkbykpOworICAgIFBkby0+TWlzc2luZyA9IEZBTFNF
OworCisgICAgSW5mbygiJXAgKCVzKSAoJXMpXG4iLAorICAgICAgICAgUGh5c2ljYWxEZXZpY2VP
YmplY3QsCisgICAgICAgICBfX1Bkb0dldE5hbWUoUGRvKSwKKyAgICAgICAgIFBkby0+UmVhc29u
KTsKKworICAgIFBkby0+UmVhc29uID0gTlVMTDsKKworICAgIEZkb1JlbW92ZVBoeXNpY2FsRGV2
aWNlT2JqZWN0KEZkbywgUGRvKTsKKworICAgIChWT0lEKV9fUGRvQ2xlYXJFamVjdFJlcXVlc3Rl
ZChQZG8pOworCisgICAgRHgtPlBkbyA9IE5VTEw7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZQZG8t
PlN1c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YoWEVOQlVTX1NVU1BF
TkRfSU5URVJGQUNFKSk7CisKKyAgICBUaHJlYWRBbGVydChQZG8tPkRldmljZVBvd2VyVGhyZWFk
KTsKKyAgICBUaHJlYWRKb2luKFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOworICAgIFBkby0+RGV2
aWNlUG93ZXJUaHJlYWQgPSBOVUxMOworCisgICAgVGhyZWFkQWxlcnQoUGRvLT5TeXN0ZW1Qb3dl
clRocmVhZCk7CisgICAgVGhyZWFkSm9pbihQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsKKyAgICBQ
ZG8tPlN5c3RlbVBvd2VyVGhyZWFkID0gTlVMTDsKKworICAgIFBkby0+RmRvID0gTlVMTDsKKyAg
ICBQZG8tPkR4ID0gTlVMTDsKKworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2Yo
WEVOQ09OU19QRE8pKSk7CisgICAgX19QZG9GcmVlKFBkbyk7CisKKyAgICBJb0RlbGV0ZURldmlj
ZShQaHlzaWNhbERldmljZU9iamVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL3Bk
by5oIGIvc3JjL3hlbmNvbnMvcGRvLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uMDYwNTQ4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy94ZW5jb25zL3Bkby5oCkBAIC0wLDAg
KzEsMTEzIEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3JtcywKKyAqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKKyAqICAg
ICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIK
KyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORAor
ICogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgKiBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX1hFTkNPTlNfUERPX0gKKyNkZWZpbmUgX1hFTkNP
TlNfUERPX0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisKKyNpbmNsdWRlICJkcml2ZXIuaCIKKwor
ZXh0ZXJuIFZPSUQKK1Bkb1NldERldmljZVBucFN0YXRlKAorICAgIElOICBQWEVOQ09OU19QRE8g
ICAgICAgIFBkbywKKyAgICBJTiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQorICAgICk7CisK
K2V4dGVybiBERVZJQ0VfUE5QX1NUQVRFCitQZG9HZXREZXZpY2VQbnBTdGF0ZSgKKyAgICBJTiAg
UFhFTkNPTlNfUERPICAgIFBkbworICAgICk7CisKK2V4dGVybiBWT0lECitQZG9TZXRNaXNzaW5n
KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLAorICAgIElOICBjb25zdCBDSEFSICAgICAg
KlJlYXNvbgorICAgICk7CisKK2V4dGVybiBCT09MRUFOCitQZG9Jc01pc3NpbmcoCisgICAgSU4g
IFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApOworCitleHRlcm4gVk9JRAorUGRvUmVxdWVzdEVq
ZWN0KAorICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKTsKKworZXh0ZXJuIEJPT0xF
QU4KK1Bkb0lzRWplY3RSZXF1ZXN0ZWQoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAg
ICApOworCitleHRlcm4gUENIQVIKK1Bkb0dldE5hbWUoCisgICAgSU4gIFBYRU5DT05TX1BETyAg
ICBQZG8KKyAgICApOworCitleHRlcm4gUFhFTkNPTlNfRkRPCitQZG9HZXRGZG8oCisgICAgSU4g
IFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApOworCitleHRlcm4gUERFVklDRV9PQkpFQ1QKK1Bk
b0dldERldmljZU9iamVjdCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAgICk7CisK
K2V4dGVybiBOVFNUQVRVUworUGRvQ3JlYXRlKAorICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
LAorICAgIElOICBQQU5TSV9TVFJJTkcgICAgRGV2aWNlCisgICAgKTsKKworZXh0ZXJuIE5UU1RB
VFVTCitQZG9SZXN1bWUoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8KKyAgICApOworCitl
eHRlcm4gVk9JRAorUGRvU3VzcGVuZCgKKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbworICAg
ICk7CisKK2V4dGVybiBWT0lECitQZG9EZXN0cm95KAorICAgIElOICBQWEVOQ09OU19QRE8gICAg
UGRvCisgICAgKTsKKworZXh0ZXJuIE5UU1RBVFVTCitQZG9EaXNwYXRjaCgKKyAgICBJTiAgUFhF
TkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAgICk7CisK
KyNlbmRpZiAgLy8gX1hFTkNPTlNfUERPX0gKZGlmZiAtLWdpdCBhL3ZzMjAxNS94ZW5jb25zL3hl
bmNvbnMudmN4cHJvaiBiL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvagppbmRleCAxMmY1
YjcwLi4yZTlkMjA4IDEwMDY0NAotLS0gYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oK
KysrIGIvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCkBAIC02Niw2ICs2Niw3IEBACiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9k
cml2ZXIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Zk
by5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcGRvLmMi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9yZWdpc3RyeS5j
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvY29uc29sZS5j
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvc3RyZWFtLmMi
IC8+CmRpZmYgLS1naXQgYS92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2ogYi92czIwMTcv
eGVuY29ucy94ZW5jb25zLnZjeHByb2oKaW5kZXggNTEwYWNiNi4uNmM2N2ZlOCAxMDA2NDQKLS0t
IGEvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCisrKyBiL3ZzMjAxNy94ZW5jb25zL3hl
bmNvbnMudmN4cHJvagpAQCAtNzQsNiArNzQsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvZHJpdmVyLmMiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9mZG8uYyIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3Bkby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcmVnaXN0cnkuYyIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2NvbnNvbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3N0cmVhbS5jIiAvPgotLSAKMi44LjMKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFp
bGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:22:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:22:06 +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 1epEEg-0004vP-Oe; Fri, 23 Feb 2018 14:22:06 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEEe-0004ts-Tz
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:22:04 +0000
X-Inumbo-ID: 24b39c15-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 24b39c15-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:40 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185811"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:29 +0000
Message-ID: <20180223142142.12548-2-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 01/14 v2] chmod 777 msbuild.bat
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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKY3lnd2luIGRvZXMgbm90
IGxpa2Ugbm9uLWV4ZWN1dGFibGUgc2NyaXB0cwoKU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8
b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIG1zYnVpbGQuYmF0IHwgMAogMSBmaWxlIGNoYW5n
ZWQsIDAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIG1vZGUgY2hhbmdlIDEwMDY0NCA9
PiAxMDA3NTUgbXNidWlsZC5iYXQKCmRpZmYgLS1naXQgYS9tc2J1aWxkLmJhdCBiL21zYnVpbGQu
YmF0Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKLS0gCjIuOC4zCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxp
bmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:22:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:22:06 +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 1epEEg-0004vl-Qg; Fri, 23 Feb 2018 14:22:06 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEEe-0004tt-Tz
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:22:04 +0000
X-Inumbo-ID: 255bf074-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 255bf074-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:41 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185812"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:28 +0000
Message-ID: <20180223142142.12548-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQ29udmVydHMgdGhlIHhl
bmNvbnMgRmRvIGludG8gYSBidXMgZHJpdmVyIHRoYXQgZW51bWVyYXRlcyAxIG9yIG1vcmUKUGRv
cy4gVGhlIGZpcnN0IFBkbyBtYW5hZ2VzIHRoZSBzdGF0aWMgImRlZmF1bHQiIGNvbnNvbGUgZXhw
b3NlZCBieQp0aGUgWEVOQlVTX0NPTlNPTEUgaW50ZXJmYWNlLiBTdWJzaXF1ZW50IFBkb3MgbWFu
YWdlIHRoZSBkeW5hbWljCm5vbi1kZWZhdWx0IGNvbnNvbGVzIHRoYXQgY2FuIGJlIGFkZGVkIHRv
IGEgVk0uIEFsbCBjb25zb2xlcyBleHBvc2UKc2V2ZXJhbCBwcm9wZXJ0aWVzIHRvIGRpZmZlcmVu
dGlhdGUgdGhlaXIgdXNlYWdlICgibmFtZSIsICJpbnN0YW5jZSIsCmFuZCAicHJvdG9jb2wiKS4g
VGhlIG1vbml0b3Igc2VydmljZSBpcyBtb2RpZmllZCB0byBtYW5hZ2UgbXVsdGlwbGUKY29uc29s
ZXMgYW5kIGNyZWF0ZSBhIG5hbWVkIHBpcGUgZm9yIGVhY2gsIHdpdGggdGhlIHBpcGUncyBuYW1l
IGJlaW5nCmJhc2VkIG9uIHRoZSAibmFtZSIgcHJvcGVydHkgb2YgdGhlIGNvbnNvbGUgKGkuZS4g
XFwuXHBpcGVceGVuY29uc1w8bmFtZT4pClVzZXJzIG9mIGEgcGFydGljdWxhciBjb25zb2xlIGNh
biBkaXJlY3RseSBjb25uZWN0IHRvIHRoZSB3ZWxsLWtub3duCm5hbWUgb2YgdGhlIGNvcnJlY3Qg
bmFtZWQgcGlwZS4KCkN1cnJlbnRseSwgdGhlIGRlZmF1bHQgY29uc29sZSAoXFwuXHBpcGVceGVu
Y29uc1xkZWZhdWx0KSBpcyB1c2VkIGJ5CnhlbmNvbnNfdHR5IHRvIGV4cG9zZSBhIGNvbW1hbmQg
bGluZSBpbnRlcmZhY2UgdG8gdGhlIGJhY2tlbmQuCkFkZGl0aW9uYWwgdXNlcyBzaG91bGQgYmUg
ZGVmaW5lZCBpbiBhY2NvcmRhbmNlIHdpdGgKaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91
bnN0YWJsZS9tYW4veGVuLXB2LWNoYW5uZWwuNy5odG1sCgpPd2VuIFNtaXRoICgxNCk6CiAgY2ht
b2QgNzc3IG1zYnVpbGQuYmF0CiAgTW92ZSBjb25zb2xlIGhhbmRsZXJzIHRvIGNvbnNvbGUuYwog
IEFkZCBib2lsZXJwbGF0ZSBQZG8KICBNb3ZlIGNvbnNvbGUgaGFuZGxlciB0byBzdGF0aWMgUGRv
CiAgQWRkIElPQ1RMcyB0byBxdWVyeSBpbnN0YW5jZSwgbmFtZSBhbmQgcHJvdG9jb2wKICBNYWtl
IG1vbml0b3Igc2VydmljZSBtdWx0aS1jb25zb2xlIGF3YXJlCiAgRW51bWVyYXRlIG5vbi1kZWZh
dWx0IGNvbnNvbGVzCiAgSGlkZSBjb25zb2xlIGFjY2VzcyBiZWhpbmQgYW4gaW50ZXJmYWNlCiAg
QWRkIGJvaWxlcnBsYXRlIGZyb250ZW5kCiAgUmVzcG9uZCB0byBub24tZGVmYXVsdCBjb25zb2xl
IElPQ1RMcwogIEFkZCBFVlRDSE4gYW5kIEdOVFRBQiBpbnRlcmZhY2VzCiAgSW1wbGVtZW50IHJp
bmcgcHJvdG9jb2wKICBFbnN1cmUgRDAgPC0+IEQzIHRyYW5zaXRpb25zIG9jY3VyIGZyb20gdGhl
IGNvcnJlY3Qgc3RhdGUgb25seS4KICBGYWlsIEZyb250ZW5kUHJlcGFyZSBpZiBiYWNrZW5kIGRv
ZXNuJ3QgcmVpbml0aWFsaXplCgogaW5jbHVkZS9jYWNoZV9pbnRlcmZhY2UuaCAgICAgICAgICAg
ICAgICB8ICAyMzMgKysrKwogaW5jbHVkZS9ldnRjaG5faW50ZXJmYWNlLmggICAgICAgICAgICAg
ICB8ICAzNTcgKysrKysKIGluY2x1ZGUvZ250dGFiX2ludGVyZmFjZS5oICAgICAgICAgICAgICAg
fCAgMjg3ICsrKysrCiBpbmNsdWRlL3hlbi10eXBlcy5oICAgICAgICAgICAgICAgICAgICAgIHwg
ICA1NSArCiBpbmNsdWRlL3hlbi12ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgIHwgICAzNyAr
CiBpbmNsdWRlL3hlbi13YXJuaW5ncy5oICAgICAgICAgICAgICAgICAgIHwgICA0MiArCiBpbmNs
dWRlL3hlbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSArCiBpbmNsdWRlL3hl
bi9wdWJsaWMvYXJjaC14ODYveGVuLXg4Nl8zMi5oIHwgIDE2OSArKysKIGluY2x1ZGUveGVuL3B1
YmxpYy9hcmNoLXg4Ni94ZW4teDg2XzY0LmggfCAgMjAyICsrKwogaW5jbHVkZS94ZW4vcHVibGlj
L2FyY2gteDg2L3hlbi5oICAgICAgICB8ICAzMzggKysrKysKIGluY2x1ZGUveGVuL3B1YmxpYy9l
cnJuby5oICAgICAgICAgICAgICAgfCAgMTI0ICsrCiBpbmNsdWRlL3hlbi9wdWJsaWMvZ3JhbnRf
dGFibGUuaCAgICAgICAgIHwgIDY4NCArKysrKysrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMvaW8v
Y29uc29sZS5oICAgICAgICAgIHwgICA1MSArCiBpbmNsdWRlL3hlbi9wdWJsaWMvaW8vcmluZy5o
ICAgICAgICAgICAgIHwgIDMyNiArKysrKwogaW5jbHVkZS94ZW4vcHVibGljL2lvL3hlbmJ1cy5o
ICAgICAgICAgICB8ICAgODAgKysKIGluY2x1ZGUveGVuL3B1YmxpYy90cmFjZS5oICAgICAgICAg
ICAgICAgfCAgMzM3ICsrKysrCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLWNvbXBhdC5oICAgICAg
ICAgIHwgICA0NCArCiBpbmNsdWRlL3hlbi9wdWJsaWMveGVuLmggICAgICAgICAgICAgICAgIHwg
IDk5NSArKysrKysrKysrKysrKwogaW5jbHVkZS94ZW4veGVuL2Vycm5vLmggICAgICAgICAgICAg
ICAgICB8ICAgMTggKwogaW5jbHVkZS94ZW5jb25zX2RldmljZS5oICAgICAgICAgICAgICAgICB8
ICAgMTcgKwogbXNidWlsZC5iYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDAK
IHNyYy9tb25pdG9yL21vbml0b3IuYyAgICAgICAgICAgICAgICAgICAgfCAxNDQ1ICsrKysrKysr
KysrLS0tLS0tLS0tLQogc3JjL3R0eS90dHkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjAgKy0KIHNyYy94ZW5jb25zLmluZiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy
ICstCiBzcmMveGVuY29ucy9jb25zb2xlLmMgICAgICAgICAgICAgICAgICAgIHwgIDU1NyArKysr
KysrKwogc3JjL3hlbmNvbnMvY29uc29sZS5oICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwog
c3JjL3hlbmNvbnMvY29uc29sZV9hYmkuaCAgICAgICAgICAgICAgICB8ICAgOTkgKysKIHNyYy94
ZW5jb25zL2RyaXZlci5jICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsKIHNyYy94ZW5jb25z
L2RyaXZlci5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICstCiBzcmMveGVuY29ucy9mZG8u
YyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEyNiArKysrKysrKysrKy0tLS0tCiBzcmMveGVu
Y29ucy9mZG8uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NyArCiBzcmMveGVuY29ucy9m
cm9udGVuZC5jICAgICAgICAgICAgICAgICAgIHwgMTY1NCArKysrKysrKysrKysrKysrKysrKysr
KysKIHNyYy94ZW5jb25zL2Zyb250ZW5kLmggICAgICAgICAgICAgICAgICAgfCAgIDY4ICsKIHNy
Yy94ZW5jb25zL211dGV4LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDgyICsrCiBzcmMveGVu
Y29ucy9wZG8uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMjA3OSArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKIHNyYy94ZW5jb25zL3Bkby5oICAgICAgICAgICAgICAgICAgICAgICAg
fCAgMTE4ICsrCiBzcmMveGVuY29ucy9yaW5nLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMTA2
NCArKysrKysrKysrKysrKysKIHNyYy94ZW5jb25zL3JpbmcuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDk2ICsrCiB2czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2ogICAgICAgICAgIHwg
ICAgNCArCiB2czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2ogICAgICAgICAgIHwgICAgNCAr
CiA0MCBmaWxlcyBjaGFuZ2VkLCAxMTk1NiBpbnNlcnRpb25zKCspLCAxMDE2IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUvY2FjaGVfaW50ZXJmYWNlLmgKIGNyZWF0ZSBt
b2RlIDEwMDc1NSBpbmNsdWRlL2V2dGNobl9pbnRlcmZhY2UuaAogY3JlYXRlIG1vZGUgMTAwNzU1
IGluY2x1ZGUvZ250dGFiX2ludGVyZmFjZS5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94
ZW4tdHlwZXMuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuLXZlcnNpb24uaAogY3Jl
YXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuLXdhcm5pbmdzLmgKIGNyZWF0ZSBtb2RlIDEwMDc1
NSBpbmNsdWRlL3hlbi5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL2Fy
Y2gteDg2L3hlbi14ODZfMzIuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1Ymxp
Yy9hcmNoLXg4Ni94ZW4teDg2XzY0LmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9w
dWJsaWMvYXJjaC14ODYveGVuLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJs
aWMvZXJybm8uaAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy9ncmFudF90
YWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS94ZW4vcHVibGljL2lvL2NvbnNvbGUu
aAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUveGVuL3B1YmxpYy9pby9yaW5nLmgKIGNyZWF0
ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvaW8veGVuYnVzLmgKIGNyZWF0ZSBtb2Rl
IDEwMDc1NSBpbmNsdWRlL3hlbi9wdWJsaWMvdHJhY2UuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGlu
Y2x1ZGUveGVuL3B1YmxpYy94ZW4tY29tcGF0LmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRl
L3hlbi9wdWJsaWMveGVuLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi94ZW4vZXJy
bm8uaAogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBtc2J1aWxkLmJhdAogY3JlYXRlIG1v
ZGUgMTAwNzU1IHNyYy94ZW5jb25zL2NvbnNvbGUuYwogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94
ZW5jb25zL2NvbnNvbGUuaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25zL2NvbnNvbGVf
YWJpLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9mcm9udGVuZC5jCiBjcmVhdGUg
bW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvZnJvbnRlbmQuaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNy
Yy94ZW5jb25zL211dGV4LmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9wZG8uYwog
Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25zL3Bkby5oCiBjcmVhdGUgbW9kZSAxMDA3NTUg
c3JjL3hlbmNvbnMvcmluZy5jCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvcmluZy5o
CgotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2lu
LXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:22:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:22:06 +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 1epEEg-0004w1-Rn; Fri, 23 Feb 2018 14:22:06 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEEf-0004tu-CU
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:22:05 +0000
X-Inumbo-ID: 25e539e3-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 25e539e3-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:42 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185816"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:33 +0000
Message-ID: <20180223142142.12548-6-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIGluY2x1ZGUveGVuY29uc19k
ZXZpY2UuaCB8ICAxNyArKysrKysrCiBzcmMveGVuY29ucy9jb25zb2xlLmMgICAgfCAxMTIgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy94ZW5jb25z
L3Bkby5jICAgICAgICB8ICAgOCArKystCiAzIGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25z
KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuY29uc19kZXZpY2Uu
aCBiL2luY2x1ZGUveGVuY29uc19kZXZpY2UuaAppbmRleCBlYWY1N2Q4Li5jOWFlMmVmIDEwMDY0
NAotLS0gYS9pbmNsdWRlL3hlbmNvbnNfZGV2aWNlLmgKKysrIGIvaW5jbHVkZS94ZW5jb25zX2Rl
dmljZS5oCkBAIC0zNiw0ICszNiwyMSBAQAogREVGSU5FX0dVSUQoR1VJRF9YRU5DT05TX0RFVklD
RSwKICAgICAgICAgICAgIDB4ZDNlZGQyMSwgMHg4ZWY5LCAweDRkZmYsIDB4ODUsIDB4NmMsIDB4
OGMsIDB4NjgsIDB4YmYsIDB4NGYsIDB4ZGMsIDB4YTMpOwogCisjZGVmaW5lIF9fSU9DVExfWEVO
Q09OU19CRUdJTiAgIDB4ODAwCisKKyNkZWZpbmUgSU9DVExfWEVOQ09OU19HRVRfSU5TVEFOQ0Ug
IENUTF9DT0RFKEZJTEVfREVWSUNFX1VOS05PV04sICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9DVExfWEVOQ09OU19CRUdJTiArIDAsIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhPRF9CVUZG
RVJFRCwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZJTEVfQU5ZX0FDQ0VTUykKKworI2RlZmluZSBJT0NUTF9YRU5DT05TX0dFVF9OQU1F
ICAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfVU5LTk9XTiwgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT0NUTF9YRU5DT05TX0JFR0lOICsg
MSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSE9E
X0JVRkZFUkVELCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRV9BTllfQUNDRVNTKQorCisjZGVmaW5lIElPQ1RMX1hFTkNPTlNfR0VU
X1BST1RPQ09MICBDVExfQ09ERShGSUxFX0RFVklDRV9VTktOT1dOLCAgICAgICBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPQ1RMX1hFTkNPTlNfQkVH
SU4gKyAyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
RVRIT0RfQlVGRkVSRUQsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFX0FOWV9BQ0NFU1MpCisKICNlbmRpZiAgLy8gX1hFTkNPTlNf
REVWSUNFX0gKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL2NvbnNvbGUuYyBiL3NyYy94ZW5jb25z
L2NvbnNvbGUuYwppbmRleCA4M2FlOTE2Li5iOWFiZTgzIDEwMDc1NQotLS0gYS9zcmMveGVuY29u
cy9jb25zb2xlLmMKKysrIGIvc3JjL3hlbmNvbnMvY29uc29sZS5jCkBAIC0zNiw2ICszNiw4IEBA
CiAjaW5jbHVkZSA8bnRzdHJzYWZlLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKKyNpbmNsdWRl
IDx4ZW5jb25zX2RldmljZS5oPgorCiAjaW5jbHVkZSAiZHJpdmVyLmgiCiAjaW5jbHVkZSAiY29u
c29sZS5oIgogI2luY2x1ZGUgInN0cmVhbS5oIgpAQCAtMjA2LDggKzIwOCw4IEBAIGZhaWwxOgog
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLU5UU1RBVFVTCi1Db25zb2xlUHV0UXVldWUoCitzdGF0
aWMgRk9SQ0VJTkxJTkUgTlRTVEFUVVMKK19fQ29uc29sZVB1dFF1ZXVlKAogICAgIElOICBQWEVO
Q09OU19DT05TT0xFICAgIENvbnNvbGUsCiAgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgSXJw
CiAgICAgKQpAQCAtMjM5LDYgKzI0MSwxMTIgQEAgZmFpbDE6CiAgICAgcmV0dXJuIHN0YXR1czsK
IH0KIAorc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCitfX0NvbnNvbGVEZXZpY2VDb250cm9s
KAorICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCisgICAgSU4gIFBJUlAgICAg
ICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgIFN0
YWNrTG9jYXRpb247CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgSW9Db250cm9sQ29kZTsK
KyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBJbnB1dEJ1ZmZlckxlbmd0aDsKKyAgICBVTE9O
RyAgICAgICAgICAgICAgICAgICBPdXRwdXRCdWZmZXJMZW5ndGg7CisgICAgUFZPSUQgICAgICAg
ICAgICAgICAgICAgQnVmZmVyOworICAgIFBDSEFSICAgICAgICAgICAgICAgICAgIFZhbHVlOwor
ICAgIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0aDsKKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnNvbGUpOwor
CisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
KyAgICBJb0NvbnRyb2xDb2RlID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5EZXZpY2VJb0Nv
bnRyb2wuSW9Db250cm9sQ29kZTsKKyAgICBJbnB1dEJ1ZmZlckxlbmd0aCA9IFN0YWNrTG9jYXRp
b24tPlBhcmFtZXRlcnMuRGV2aWNlSW9Db250cm9sLklucHV0QnVmZmVyTGVuZ3RoOworICAgIE91
dHB1dEJ1ZmZlckxlbmd0aCA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuRGV2aWNlSW9Db250
cm9sLk91dHB1dEJ1ZmZlckxlbmd0aDsKKyAgICBCdWZmZXIgPSBJcnAtPkFzc29jaWF0ZWRJcnAu
U3lzdGVtQnVmZmVyOworCisgICAgc3dpdGNoIChJb0NvbnRyb2xDb2RlKSB7CisgICAgY2FzZSBJ
T0NUTF9YRU5DT05TX0dFVF9JTlNUQU5DRToKKyAgICAgICAgVmFsdWUgPSAiMCI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSU9DVExfWEVOQ09OU19HRVRfTkFNRToKKyAgICAgICAgVmFsdWUg
PSAiZGVmYXVsdCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU9DVExfWEVOQ09OU19HRVRf
UFJPVE9DT0w6CisgICAgICAgIFZhbHVlID0gInZ0MTAwIjsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgVmFsdWUgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBzdGF0dXMgPSBTVEFUVVNfTk9UX1NVUFBPUlRFRDsKKyAgICBpZiAoVmFsdWUgPT0gTlVM
TCkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19JTlZBTElEX1BB
UkFNRVRFUjsKKyAgICBpZiAoSW5wdXRCdWZmZXJMZW5ndGggIT0gMCkKKyAgICAgICAgZ290byBm
YWlsMjsKKworICAgIExlbmd0aCA9IChVTE9ORylzdHJsZW4oVmFsdWUpICsgMTsKKyAgICBJcnAt
PklvU3RhdHVzLkluZm9ybWF0aW9uID0gTGVuZ3RoOworCisgICAgc3RhdHVzID0gU1RBVFVTX0lO
VkFMSURfQlVGRkVSX1NJWkU7CisgICAgaWYgKE91dHB1dEJ1ZmZlckxlbmd0aCA9PSAwKQorICAg
ICAgICBnb3RvIGZhaWwzOworCisgICAgUnRsWmVyb01lbW9yeShCdWZmZXIsIE91dHB1dEJ1ZmZl
ckxlbmd0aCk7CisgICAgaWYgKE91dHB1dEJ1ZmZlckxlbmd0aCA8IExlbmd0aCkKKyAgICAgICAg
Z290byBmYWlsNDsKKworICAgIFJ0bENvcHlNZW1vcnkoQnVmZmVyLCBWYWx1ZSwgTGVuZ3RoKTsK
KyAgICAKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWw0OgorICAgIEVycm9yKCJm
YWlsNFxuIik7CisKK2ZhaWwzOgorICAgIEVycm9yKCJmYWlsM1xuIik7CisKK2ZhaWwyOgorICAg
IEVycm9yKCJmYWlsMlxuIik7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRVUworQ29uc29sZVB1
dFF1ZXVlKAorICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAg
ICAgIFN0YWNrTG9jYXRpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOwor
CisgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
KworICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbikgeworICAgIGNhc2Ug
SVJQX01KX1JFQUQ6CisgICAgY2FzZSBJUlBfTUpfV1JJVEU6CisgICAgICAgIHN0YXR1cyA9IF9f
Q29uc29sZVB1dFF1ZXVlKENvbnNvbGUsIElycCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBJUlBfTUpfREVWSUNFX0NPTlRST0w6CisgICAgICAgIHN0YXR1cyA9IF9fQ29uc29sZURldmlj
ZUNvbnRyb2woQ29uc29sZSwgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICBzdGF0dXMgPSBTVEFUVVNfTk9UX1NVUFBP
UlRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKwog
TlRTVEFUVVMKIENvbnNvbGVEM1RvRDAoCiAgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29u
c29sZQpkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvcGRvLmMgYi9zcmMveGVuY29ucy9wZG8uYwpp
bmRleCAwNzdjN2UyLi42MmYzNjZjIDEwMDc1NQotLS0gYS9zcmMveGVuY29ucy9wZG8uYworKysg
Yi9zcmMveGVuY29ucy9wZG8uYwpAQCAtMTczNSw3ICsxNzM1LDcgQEAgUGRvRGlzcGF0Y2hDbG9z
ZSgKIH0KIAogc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTCi1QZG9EaXNwYXRjaFJl
YWRXcml0ZSgKK1Bkb0Rpc3BhdGNoUmVhZFdyaXRlQ29udHJvbCgKICAgICBJTiAgUFhFTkNPTlNf
UERPICAgIFBkbywKICAgICBJTiAgUElSUCAgICAgICAgICAgIElycAogICAgICkKQEAgLTE3NDMs
NiArMTc0Myw4IEBAIFBkb0Rpc3BhdGNoUmVhZFdyaXRlKAogICAgIE5UU1RBVFVTICAgICAgICAg
ICAgc3RhdHVzOwogCiAgICAgc3RhdHVzID0gQ29uc29sZVB1dFF1ZXVlKFBkby0+Q29uc29sZSwg
SXJwKTsKKyAgICBpZiAoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKQorICAgICAgICBnb3RvIGRv
bmU7CiAgICAgaWYgKHN0YXR1cyAhPSBTVEFUVVNfUEVORElORykKICAgICAgICAgZ290byBmYWls
MTsKIApAQCAtMTc1MSw2ICsxNzUzLDcgQEAgUGRvRGlzcGF0Y2hSZWFkV3JpdGUoCiBmYWlsMToK
ICAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOwogCitkb25lOgogICAgIElycC0+
SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOwogICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsKIApAQCAtMTgwNyw3ICsxODEwLDggQEAgUGRvRGlzcGF0Y2goCiAKICAg
ICBjYXNlIElSUF9NSl9SRUFEOgogICAgIGNhc2UgSVJQX01KX1dSSVRFOgotICAgICAgICBzdGF0
dXMgPSBQZG9EaXNwYXRjaFJlYWRXcml0ZShQZG8sIElycCk7CisgICAgY2FzZSBJUlBfTUpfREVW
SUNFX0NPTlRST0w6CisgICAgICAgIHN0YXR1cyA9IFBkb0Rpc3BhdGNoUmVhZFdyaXRlQ29udHJv
bChQZG8sIElycCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLS0gCjIuOC4zCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:24:19 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:24: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 1epEGp-00057e-94; Fri, 23 Feb 2018 14:24:19 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEGo-00057M-9r
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:24:18 +0000
X-Inumbo-ID: 26c271cc-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 26c271cc-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:43 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185828"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:34 +0000
Message-ID: <20180223142142.12548-7-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKKiBNb3ZlIGNvbnNvbGUg
c3BlY2lmaWMgZGF0YSB0byBhIHNlcGVyYXRlIHN0cnVjdHVyZQoqIE1ha2UgYWxsIHRocmVhZHMn
IHVzZSB0aGUgY29uc29sZSBkYXRhCiogUmVtb3ZlcyB0aGUgQWRkIGFuZCBSZW1vdmUgZXZlbnQg
aW4gZmF2b3Igb2YgaW5saW5lIGFkZC9yZW1vdmUKKiBDb252ZXJ0IFdpbjMyIGNhbGxzIHRvIGV4
cGxpY2l0IG5hcnJvdy93aWRlIGNoYXJhY3RlciBzZXQgYXMgYXBwcm9wcmlhdGUKKiBSZW1vdmVz
IHRjaGFyLmggaW5jbHVkZSB0byBmb3JjZSBuYXJyb3cvd2lkZSBjaGFyYWN0ZXIgdXNhZ2UKKiBS
ZW5hbWVzIHN0cnVjdHVyZXMgYW5kIHRocmVhZCBmdW5jdGlvbnMKKiBQaXBlIG5hbWVzIGFyZSBi
YXNlZCBvbiBjb25zb2xlIG5hbWUKKiBJTkYgZmlsZSBzdG9yZXMgIkV4ZWN1dGFibGUiIHVuZGVy
IGNvbnNvbGUncyBuYW1lIHN1YmtleQoqIENoYW5nZSBwaXBlIG5hbWUgdHR5LmV4ZSB1c2VzCiog
QWRkIFdhaXROYW1lZFBpcGUoKSBiZWZvcmUgY29ubmVjdGluZyB0byBwaXBlcyBpbiB0dHkuZXhl
CgpTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+Ci0tLQog
c3JjL21vbml0b3IvbW9uaXRvci5jIHwgMTQ0NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvdHR5L3R0eS5jICAgICAgICAgfCAgIDIwICstCiBz
cmMveGVuY29ucy5pbmYgICAgICAgfCAgICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDc5MiBpbnNl
cnRpb25zKCspLCA2NzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL21vbml0b3IvbW9u
aXRvci5jIGIvc3JjL21vbml0b3IvbW9uaXRvci5jCmluZGV4IDA4YWUwZjIuLjUxMGJhNmYgMTAw
NjQ0Ci0tLSBhL3NyYy9tb25pdG9yL21vbml0b3IuYworKysgYi9zcmMvbW9uaXRvci9tb25pdG9y
LmMKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgSU5JVEdVSUQgMQogCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgotI2luY2x1ZGUgPHRjaGFyLmg+CisjaW5jbHVkZSA8d2luaW9jdGwuaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJzYWZlLmg+CiAjaW5jbHVkZSA8d3RzYXBpMzIu
aD4KQEAgLTUwLDQwICs1MCw0NSBAQAogI2RlZmluZSBNT05JVE9SX05BTUUgICAgICAgIF9fTU9E
VUxFX18KICNkZWZpbmUgTU9OSVRPUl9ESVNQTEFZTkFNRSBNT05JVE9SX05BTUUKIAotdHlwZWRl
ZiBzdHJ1Y3QgX01PTklUT1JfUElQRSB7Ci0gICAgSEFORExFICAgICAgICAgICAgICAgICAgUGlw
ZTsKLSAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBFdmVudDsKLSAgICBIQU5ETEUgICAgICAg
ICAgICAgICAgICBUaHJlYWQ7Ci0gICAgTElTVF9FTlRSWSAgICAgICAgICAgICAgTGlzdEVudHJ5
OwotfSBNT05JVE9SX1BJUEUsICpQTU9OSVRPUl9QSVBFOwotCiB0eXBlZGVmIHN0cnVjdCBfTU9O
SVRPUl9DT05URVhUIHsKICAgICBTRVJWSUNFX1NUQVRVUyAgICAgICAgICBTdGF0dXM7CiAgICAg
U0VSVklDRV9TVEFUVVNfSEFORExFICAgU2VydmljZTsKLSAgICBIS0VZICAgICAgICAgICAgICAg
ICAgICBQYXJhbWV0ZXJzS2V5OwogICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIEV2ZW50TG9n
OwogICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIFN0b3BFdmVudDsKLSAgICBIQU5ETEUgICAg
ICAgICAgICAgICAgICBBZGRFdmVudDsKLSAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBSZW1v
dmVFdmVudDsKLSAgICBQVENIQVIgICAgICAgICAgICAgICAgICBFeGVjdXRhYmxlOworICAgIEhL
RVkgICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnNLZXk7CiAgICAgSERFVk5PVElGWSAgICAg
ICAgICAgICAgSW50ZXJmYWNlTm90aWZpY2F0aW9uOwotICAgIFBUQ0hBUiAgICAgICAgICAgICAg
ICAgIERldmljZVBhdGg7CisgICAgQ1JJVElDQUxfU0VDVElPTiAgICAgICAgQ3JpdGljYWxTZWN0
aW9uOworICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RIZWFkOworICAgIERXT1JEICAg
ICAgICAgICAgICAgICAgIExpc3RDb3VudDsKK30gTU9OSVRPUl9DT05URVhULCAqUE1PTklUT1Jf
Q09OVEVYVDsKKwordHlwZWRlZiBzdHJ1Y3QgX01PTklUT1JfQ09OU09MRSB7CisgICAgTElTVF9F
TlRSWSAgICAgICAgICAgICAgTGlzdEVudHJ5OworICAgIFBXQ0hBUiAgICAgICAgICAgICAgICAg
IERldmljZVBhdGg7CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgRGV2aWNlSGFuZGxlOwog
ICAgIEhERVZOT1RJRlkgICAgICAgICAgICAgIERldmljZU5vdGlmaWNhdGlvbjsKLSAgICBIQU5E
TEUgICAgICAgICAgICAgICAgICBEZXZpY2U7Ci0gICAgSEFORExFICAgICAgICAgICAgICAgICAg
TW9uaXRvckV2ZW50OwotICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgIE1vbml0b3JUaHJlYWQ7
Ci0gICAgSEFORExFICAgICAgICAgICAgICAgICAgRGV2aWNlRXZlbnQ7CisgICAgUENIQVIgICAg
ICAgICAgICAgICAgICAgRGV2aWNlTmFtZTsgLy8gcHJvdG9jb2wgYW5kIGluc3RhbmNlPworICAg
IEhBTkRMRSAgICAgICAgICAgICAgICAgIEV4ZWN1dGFibGVUaHJlYWQ7CisgICAgSEFORExFICAg
ICAgICAgICAgICAgICAgRXhlY3V0YWJsZUV2ZW50OwogICAgIEhBTkRMRSAgICAgICAgICAgICAg
ICAgIERldmljZVRocmVhZDsKLSAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBTZXJ2ZXJFdmVu
dDsKKyAgICBIQU5ETEUgICAgICAgICAgICAgICAgICBEZXZpY2VFdmVudDsKICAgICBIQU5ETEUg
ICAgICAgICAgICAgICAgICBTZXJ2ZXJUaHJlYWQ7CisgICAgSEFORExFICAgICAgICAgICAgICAg
ICAgU2VydmVyRXZlbnQ7CiAgICAgQ1JJVElDQUxfU0VDVElPTiAgICAgICAgQ3JpdGljYWxTZWN0
aW9uOwogICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3RIZWFkOwogICAgIERXT1JEICAg
ICAgICAgICAgICAgICAgIExpc3RDb3VudDsKLX0gTU9OSVRPUl9DT05URVhULCAqUE1PTklUT1Jf
Q09OVEVYVDsKK30gTU9OSVRPUl9DT05TT0xFLCAqUE1PTklUT1JfQ09OU09MRTsKKwordHlwZWRl
ZiBzdHJ1Y3QgX01PTklUT1JfQ09OTkVDVElPTiB7CisgICAgUE1PTklUT1JfQ09OU09MRSAgICAg
ICAgQ29uc29sZTsKKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0RW50cnk7CisgICAg
SEFORExFICAgICAgICAgICAgICAgICAgUGlwZTsKKyAgICBIQU5ETEUgICAgICAgICAgICAgICAg
ICBUaHJlYWQ7Cit9IE1PTklUT1JfQ09OTkVDVElPTiwgKlBNT05JVE9SX0NPTk5FQ1RJT047CiAK
LU1PTklUT1JfQ09OVEVYVCBNb25pdG9yQ29udGV4dDsKK3N0YXRpYyBNT05JVE9SX0NPTlRFWFQg
TW9uaXRvckNvbnRleHQ7CiAKLSNkZWZpbmUgUElQRV9OQU1FIFRFWFQoIlxcXFwuXFxwaXBlXFx4
ZW5jb25zIikKKyNkZWZpbmUgUElQRV9CQVNFX05BTUUgIlxcXFwuXFxwaXBlXFx4ZW5jb25zXFwi
CiAKICNkZWZpbmUgTUFYSU1VTV9CVUZGRVJfU0laRSAxMDI0CiAKQEAgLTEwNCwxNSArMTA5LDE1
IEBAIF9fTG9nKAogewogI2lmIERCRwogICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9
ICZNb25pdG9yQ29udGV4dDsKLSAgICBjb25zdCBUQ0hBUiAgICAgICAgICpTdHJpbmdzWzFdOwor
ICAgIGNvbnN0IENIQVIgICAgICAgICAgKlN0cmluZ3NbMV07CiAjZW5kaWYKLSAgICBUQ0hBUiAg
ICAgICAgICAgICAgIEJ1ZmZlcltNQVhJTVVNX0JVRkZFUl9TSVpFXTsKKyAgICBDSEFSICAgICAg
ICAgICAgICAgIEJ1ZmZlcltNQVhJTVVNX0JVRkZFUl9TSVpFXTsKICAgICB2YV9saXN0ICAgICAg
ICAgICAgIEFyZ3VtZW50czsKICAgICBzaXplX3QgICAgICAgICAgICAgIExlbmd0aDsKICAgICBI
UkVTVUxUICAgICAgICAgICAgIFJlc3VsdDsKIAogICAgIHZhX3N0YXJ0KEFyZ3VtZW50cywgRm9y
bWF0KTsKLSAgICBSZXN1bHQgPSBTdHJpbmdDY2hWUHJpbnRmKEJ1ZmZlciwKKyAgICBSZXN1bHQg
PSBTdHJpbmdDY2hWUHJpbnRmQShCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNQVhJTVVNX0JVRkZFUl9TSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRzKTsKQEAgLTEyMSw3
ICsxMjYsNyBAQCBfX0xvZygKICAgICBpZiAoUmVzdWx0ICE9IFNfT0sgJiYgUmVzdWx0ICE9IFNU
UlNBRkVfRV9JTlNVRkZJQ0lFTlRfQlVGRkVSKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXN1
bHQgPSBTdHJpbmdDY2hMZW5ndGgoQnVmZmVyLCBNQVhJTVVNX0JVRkZFUl9TSVpFLCAmTGVuZ3Ro
KTsKKyAgICBSZXN1bHQgPSBTdHJpbmdDY2hMZW5ndGhBKEJ1ZmZlciwgTUFYSU1VTV9CVUZGRVJf
U0laRSwgJkxlbmd0aCk7CiAgICAgaWYgKFJlc3VsdCAhPSBTX09LKQogICAgICAgICByZXR1cm47
CiAKQEAgLTEzOSw3ICsxNDQsNyBAQCBfX0xvZygKICAgICBTdHJpbmdzWzBdID0gQnVmZmVyOwog
CiAgICAgaWYgKENvbnRleHQtPkV2ZW50TG9nICE9IE5VTEwpCi0gICAgICAgIFJlcG9ydEV2ZW50
KENvbnRleHQtPkV2ZW50TG9nLAorICAgICAgICBSZXBvcnRFdmVudEEoQ29udGV4dC0+RXZlbnRM
b2csCiAgICAgICAgICAgICAgICAgICAgIEVWRU5UTE9HX0lORk9STUFUSU9OX1RZUEUsCiAgICAg
ICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgIE1PTklUT1JfTE9HLApAQCAt
MTUyLDIzICsxNTcsMjMgQEAgX19Mb2coCiB9CiAKICNkZWZpbmUgTG9nKF9Gb3JtYXQsIC4uLikg
XAotICAgIF9fTG9nKFRFWFQoX19NT0RVTEVfXyAifCIgX19GVU5DVElPTl9fICI6ICIgX0Zvcm1h
dCksIF9fVkFfQVJHU19fKQorICAgIF9fTG9nKF9fTU9EVUxFX18gInwiIF9fRlVOQ1RJT05fXyAi
OiAiIF9Gb3JtYXQsIF9fVkFfQVJHU19fKQogCi1zdGF0aWMgUFRDSEFSCitzdGF0aWMgUENIQVIK
IEdldEVycm9yTWVzc2FnZSgKICAgICBJTiAgSFJFU1VMVCBFcnJvcgogICAgICkKIHsKLSAgICBQ
VENIQVIgICAgICBNZXNzYWdlOworICAgIFBDSEFSICAgICAgIE1lc3NhZ2U7CiAgICAgVUxPTkcg
ICAgICAgSW5kZXg7CiAKLSAgICBpZiAoIUZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfQUxM
T0NBVEVfQlVGRkVSIHwKKyAgICBpZiAoIUZvcm1hdE1lc3NhZ2VBKEZPUk1BVF9NRVNTQUdFX0FM
TE9DQVRFX0JVRkZFUiB8CiAgICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0ZS
T01fU1lTVEVNIHwKICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JF
X0lOU0VSVFMsCiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICBNQUtFTEFOR0lEKExBTkdfTkVV
VFJBTCwgU1VCTEFOR19ERUZBVUxUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKExQVFNUUikm
TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKExQU1RSKSZNZXNzYWdlLAogICAgICAg
ICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkKICAgICAg
ICAgcmV0dXJuIE5VTEw7CkBAIC0yMTAsNyArMjE1LDggQEAgc3RhdGljIFZPSUQKIFJlcG9ydFN0
YXR1cygKICAgICBJTiAgRFdPUkQgICAgICAgICAgIEN1cnJlbnRTdGF0ZSwKICAgICBJTiAgRFdP
UkQgICAgICAgICAgIFdpbjMyRXhpdENvZGUsCi0gICAgSU4gIERXT1JEICAgICAgICAgICBXYWl0
SGludCkKKyAgICBJTiAgRFdPUkQgICAgICAgICAgIFdhaXRIaW50CisgICAgKQogewogICAgIFBN
T05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsKICAgICBzdGF0aWMg
RFdPUkQgICAgICAgIENoZWNrUG9pbnQgPSAxOwpAQCAtMjQ5LDExNiArMjU1LDExIEBAIGZhaWwx
OgogICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICB7Ci0gICAgICAgIFBUQ0hBUiAg
TWVzc2FnZTsKLSAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7Ci0gICAg
ICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOwotICAgICAgICBMb2NhbEZyZWUoTWVzc2Fn
ZSk7Ci0gICAgfQotfQotCi1zdGF0aWMgQk9PTAotTW9uaXRvckdldFBhdGgoCi0gICAgSU4gIGNv
bnN0IEdVSUQgICpHdWlkLAotICAgIE9VVCBQVENIQVIgICAgICAqUGF0aAotICAgICkKLXsKLSAg
ICBIREVWSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VJbmZvU2V0OwotICAg
IFNQX0RFVklDRV9JTlRFUkZBQ0VfREFUQSAgICAgICAgICAgIERldmljZUludGVyZmFjZURhdGE7
Ci0gICAgUFNQX0RFVklDRV9JTlRFUkZBQ0VfREVUQUlMX0RBVEEgICAgRGV2aWNlSW50ZXJmYWNl
RGV0YWlsOwotICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7Ci0g
ICAgSFJFU1VMVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3I7Ci0gICAgQk9PTCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzczsKLQotICAgIExvZygiPT09PT4i
KTsKLQotICAgIERldmljZUluZm9TZXQgPSBTZXR1cERpR2V0Q2xhc3NEZXZzKEd1aWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERJR0NGX1BSRVNFTlQgfAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERJR0NGX0RFVklDRUlOVEVSRkFDRSk7Ci0gICAgaWYgKERldmljZUlu
Zm9TZXQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIGdvdG8gZmFpbDE7Ci0KLSAg
ICBEZXZpY2VJbnRlcmZhY2VEYXRhLmNiU2l6ZSA9IHNpemVvZiAoU1BfREVWSUNFX0lOVEVSRkFD
RV9EQVRBKTsKLQotICAgIFN1Y2Nlc3MgPSBTZXR1cERpRW51bURldmljZUludGVyZmFjZXMoRGV2
aWNlSW5mb1NldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEZXZpY2VJbnRlcmZhY2VEYXRhKTsKLSAgICBp
ZiAoIVN1Y2Nlc3MpCi0gICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICBTdWNjZXNzID0gU2V0dXBE
aUdldERldmljZUludGVyZmFjZURldGFpbChEZXZpY2VJbmZvU2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEZXZpY2VJbnRlcmZhY2VEYXRhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICBpZiAoIVN1Y2Nlc3MgJiYg
R2V0TGFzdEVycm9yKCkgIT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikKLSAgICAgICAgZ290
byBmYWlsMzsKLQotICAgIERldmljZUludGVyZmFjZURldGFpbCA9IGNhbGxvYygxLCBTaXplKTsK
LSAgICBpZiAoRGV2aWNlSW50ZXJmYWNlRGV0YWlsID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFp
bDQ7Ci0KLSAgICBEZXZpY2VJbnRlcmZhY2VEZXRhaWwtPmNiU2l6ZSA9Ci0gICAgICAgIHNpemVv
ZiAoU1BfREVWSUNFX0lOVEVSRkFDRV9ERVRBSUxfREFUQSk7Ci0KLSAgICBTdWNjZXNzID0gU2V0
dXBEaUdldERldmljZUludGVyZmFjZURldGFpbChEZXZpY2VJbmZvU2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEZXZpY2VJbnRlcmZhY2VEYXRhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZUludGVy
ZmFjZURldGFpbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
Ci0gICAgaWYgKCFTdWNjZXNzKQotICAgICAgICBnb3RvIGZhaWw1OwotCi0gICAgKlBhdGggPSBf
dGNzZHVwKERldmljZUludGVyZmFjZURldGFpbC0+RGV2aWNlUGF0aCk7Ci0KLSAgICBpZiAoKlBh
dGggPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsNjsKLQotICAgIExvZygiJXMiLCAqUGF0aCk7
Ci0KLSAgICBmcmVlKERldmljZUludGVyZmFjZURldGFpbCk7Ci0KLSAgICBTZXR1cERpRGVzdHJv
eURldmljZUluZm9MaXN0KERldmljZUluZm9TZXQpOwotCi0gICAgTG9nKCI8PT09PSIpOwotCi0g
ICAgcmV0dXJuIFRSVUU7Ci0KLWZhaWw2OgotICAgIExvZygiZmFpbDYiKTsKLQotZmFpbDU6Ci0g
ICAgTG9nKCJmYWlsNSIpOwotCi0gICAgZnJlZShEZXZpY2VJbnRlcmZhY2VEZXRhaWwpOwotCi1m
YWlsNDoKLSAgICBMb2coImZhaWw0Iik7Ci0KLWZhaWwzOgotICAgIExvZygiZmFpbDMiKTsKLQot
ZmFpbDI6Ci0gICAgTG9nKCJmYWlsMiIpOwotCi0gICAgU2V0dXBEaURlc3Ryb3lEZXZpY2VJbmZv
TGlzdChEZXZpY2VJbmZvU2V0KTsKLQotZmFpbDE6Ci0gICAgRXJyb3IgPSBHZXRMYXN0RXJyb3Io
KTsKLQotICAgIHsKLSAgICAgICAgUFRDSEFSICBNZXNzYWdlOworICAgICAgICBQQ0hBUiAgTWVz
c2FnZTsKICAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7CiAgICAgICAg
IExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOwogICAgICAgICBMb2NhbEZyZWUoTWVzc2FnZSk7
CiAgICAgfQotCi0gICAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgRk9SQ0VJTkxJTkUgVk9J
RApAQCAtNDI1LDIyICszMjYsMjUgQEAgUHV0U3RyaW5nKAogICAgIH0KIH0KIAorI2RlZmluZSBF
Q0hPKF9IYW5kbGUsIF9CdWZmZXIpIFwKKyAgICBQdXRTdHJpbmcoKF9IYW5kbGUpLCAoUFVDSEFS
KV9CdWZmZXIsIChEV09SRClzdHJsZW4oKF9CdWZmZXIpKSAqIHNpemVvZihDSEFSKSkKKwogRFdP
UkQgV0lOQVBJCi1QaXBlVGhyZWFkKAorQ29ubmVjdGlvblRocmVhZCgKICAgICBJTiAgTFBWT0lE
ICAgICAgICAgIEFyZ3VtZW50CiAgICAgKQogewotICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29u
dGV4dCA9ICZNb25pdG9yQ29udGV4dDsKLSAgICBQTU9OSVRPUl9QSVBFICAgICAgIFBpcGUgPSAo
UE1PTklUT1JfUElQRSlBcmd1bWVudDsKKyAgICBQTU9OSVRPUl9DT05ORUNUSU9OIENvbm5lY3Rp
b24gPSAoUE1PTklUT1JfQ09OTkVDVElPTilBcmd1bWVudDsKKyAgICBQTU9OSVRPUl9DT05TT0xF
ICAgIENvbnNvbGUgPSBDb25uZWN0aW9uLT5Db25zb2xlOwogICAgIFVDSEFSICAgICAgICAgICAg
ICAgQnVmZmVyW01BWElNVU1fQlVGRkVSX1NJWkVdOwogICAgIE9WRVJMQVBQRUQgICAgICAgICAg
T3ZlcmxhcHBlZDsKICAgICBIQU5ETEUgICAgICAgICAgICAgIEhhbmRsZVsyXTsKICAgICBEV09S
RCAgICAgICAgICAgICAgIExlbmd0aDsKICAgICBEV09SRCAgICAgICAgICAgICAgIE9iamVjdDsK
ICAgICBIUkVTVUxUICAgICAgICAgICAgIEVycm9yOwotCi0gICAgTG9nKCI9PT09PiIpOwotCisg
ICAgCisgICAgTG9nKCI9PT09PiAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOworICAgIAogICAg
IFplcm9NZW1vcnkoJk92ZXJsYXBwZWQsIHNpemVvZihPVkVSTEFQUEVEKSk7CiAgICAgT3Zlcmxh
cHBlZC5oRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKQEAgLTQ0OCw2OSArMzUyLDY5IEBAIFBpcGVUaHJlYWQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICBpZiAoT3ZlcmxhcHBl
ZC5oRXZlbnQgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsMTsKLQotICAgIEhhbmRsZVswXSA9
IFBpcGUtPkV2ZW50OworICAgIAorICAgIEhhbmRsZVswXSA9IENvbnNvbGUtPlNlcnZlckV2ZW50
OwogICAgIEhhbmRsZVsxXSA9IE92ZXJsYXBwZWQuaEV2ZW50OwotCi0gICAgRW50ZXJDcml0aWNh
bFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7Ci0gICAgX19JbnNlcnRUYWlsTGlz
dCgmQ29udGV4dC0+TGlzdEhlYWQsICZQaXBlLT5MaXN0RW50cnkpOwotICAgICsrQ29udGV4dC0+
TGlzdENvdW50OwotICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNl
Y3Rpb24pOwotCisgICAgCisgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRp
Y2FsU2VjdGlvbik7CisgICAgX19JbnNlcnRUYWlsTGlzdCgmQ29uc29sZS0+TGlzdEhlYWQsICZD
b25uZWN0aW9uLT5MaXN0RW50cnkpOworICAgICsrQ29uc29sZS0+TGlzdENvdW50OworICAgIExl
YXZlQ3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5Dcml0aWNhbFNlY3Rpb24pOworICAgIAogICAg
IGZvciAoOzspIHsKLSAgICAgICAgKFZPSUQpIFJlYWRGaWxlKFBpcGUtPlBpcGUsCisgICAgICAg
IChWT0lEKSBSZWFkRmlsZShDb25uZWN0aW9uLT5QaXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEJ1ZmZlciksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgJk92ZXJs
YXBwZWQpOwotCisgICAgCiAgICAgICAgIE9iamVjdCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMo
QVJSQVlTSVpFKEhhbmRsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElORklOSVRFKTsKICAg
ICAgICAgaWYgKE9iamVjdCA9PSBXQUlUX09CSkVDVF8wKQogICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgaWYgKCFHZXRPdmVybGFwcGVkUmVzdWx0KFBpcGUtPlBpcGUsCisgICAgCisgICAg
ICAgIGlmICghR2V0T3ZlcmxhcHBlZFJlc3VsdChDb25uZWN0aW9uLT5QaXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJk92ZXJsYXBwZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UpKQogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAKICAgICAgICAgUmVzZXRFdmVudChP
dmVybGFwcGVkLmhFdmVudCk7Ci0KLSAgICAgICAgUHV0U3RyaW5nKENvbnRleHQtPkRldmljZSwK
KyAgICAKKyAgICAgICAgUHV0U3RyaW5nKENvbnNvbGUtPkRldmljZUhhbmRsZSwKICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgIExlbmd0aCk7CiAgICAgfQotCi0g
ICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7Ci0gICAg
X19SZW1vdmVFbnRyeUxpc3QoJlBpcGUtPkxpc3RFbnRyeSk7Ci0gICAgLS1Db250ZXh0LT5MaXN0
Q291bnQ7Ci0gICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlv
bik7Ci0KKyAgICAKKyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxT
ZWN0aW9uKTsKKyAgICBfX1JlbW92ZUVudHJ5TGlzdCgmQ29ubmVjdGlvbi0+TGlzdEVudHJ5KTsK
KyAgICAtLUNvbnNvbGUtPkxpc3RDb3VudDsKKyAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmQ29u
c29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKKyAgICAKICAgICBDbG9zZUhhbmRsZShPdmVybGFwcGVk
LmhFdmVudCk7Ci0KLSAgICBGbHVzaEZpbGVCdWZmZXJzKFBpcGUtPlBpcGUpOwotICAgIERpc2Nv
bm5lY3ROYW1lZFBpcGUoUGlwZS0+UGlwZSk7Ci0gICAgQ2xvc2VIYW5kbGUoUGlwZS0+UGlwZSk7
Ci0gICAgQ2xvc2VIYW5kbGUoUGlwZS0+VGhyZWFkKTsKLSAgICBmcmVlKFBpcGUpOwotCi0gICAg
TG9nKCI8PT09PSIpOwotCisgICAgCisgICAgRmx1c2hGaWxlQnVmZmVycyhDb25uZWN0aW9uLT5Q
aXBlKTsKKyAgICBEaXNjb25uZWN0TmFtZWRQaXBlKENvbm5lY3Rpb24tPlBpcGUpOworICAgIENs
b3NlSGFuZGxlKENvbm5lY3Rpb24tPlBpcGUpOworICAgIENsb3NlSGFuZGxlKENvbm5lY3Rpb24t
PlRocmVhZCk7CisgICAgZnJlZShDb25uZWN0aW9uKTsKKyAgICAKKyAgICBMb2coIjw9PT09ICVz
IiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7CisgICAgCiAgICAgcmV0dXJuIDA7Ci0KKyAgICAKIGZh
aWwxOgogICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0KKyAgICAKICAgICB7CiAgICAgICAg
IFBUQ0hBUiAgTWVzc2FnZTsKICAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJv
cik7CiAgICAgICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOwogICAgICAgICBMb2NhbEZy
ZWUoTWVzc2FnZSk7CiAgICAgfQotCisgICAgCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTUxOSwx
OCArNDIzLDE3IEBAIFNlcnZlclRocmVhZCgKICAgICBJTiAgTFBWT0lEICAgICAgICAgIEFyZ3Vt
ZW50CiAgICAgKQogewotICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9y
Q29udGV4dDsKKyAgICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGUgPSAoUE1PTklUT1JfQ09O
U09MRSlBcmd1bWVudDsKKyAgICBDSEFSICAgICAgICAgICAgICAgIFBpcGVOYW1lW01BWElNVU1f
QlVGRkVSX1NJWkVdOwogICAgIE9WRVJMQVBQRUQgICAgICAgICAgT3ZlcmxhcHBlZDsKICAgICBI
QU5ETEUgICAgICAgICAgICAgIEhhbmRsZVsyXTsKICAgICBIQU5ETEUgICAgICAgICAgICAgIFBp
cGU7CiAgICAgRFdPUkQgICAgICAgICAgICAgICBPYmplY3Q7Ci0gICAgUE1PTklUT1JfUElQRSAg
ICAgICBJbnN0YW5jZTsKKyAgICBQTU9OSVRPUl9DT05ORUNUSU9OIENvbm5lY3Rpb247CiAgICAg
SFJFU1VMVCAgICAgICAgICAgICBFcnJvcjsKLQotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
QXJndW1lbnQpOwotCi0gICAgTG9nKCI9PT09PiIpOwotCisgICAgCisgICAgTG9nKCI9PT09PiAl
cyIsIENvbnNvbGUtPkRldmljZU5hbWUpOworICAgIAogICAgIFplcm9NZW1vcnkoJk92ZXJsYXBw
ZWQsIHNpemVvZihPVkVSTEFQUEVEKSk7CiAgICAgT3ZlcmxhcHBlZC5oRXZlbnQgPSBDcmVhdGVF
dmVudChOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKQEAg
LTUzOCwxMiArNDQxLDIyIEBAIFNlcnZlclRocmVhZCgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwogICAgIGlmIChPdmVybGFwcGVkLmhFdmVudCA9PSBOVUxMKQog
ICAgICAgICBnb3RvIGZhaWwxOwotCi0gICAgSGFuZGxlWzBdID0gQ29udGV4dC0+U2VydmVyRXZl
bnQ7CisgICAgCisgICAgSGFuZGxlWzBdID0gQ29uc29sZS0+U2VydmVyRXZlbnQ7CiAgICAgSGFu
ZGxlWzFdID0gT3ZlcmxhcHBlZC5oRXZlbnQ7CisgICAgCisgICAgRXJyb3IgPSBTdHJpbmdDY2hQ
cmludGZBKFBpcGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhJTVVNX0JV
RkZFUl9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMlcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBJUEVfQkFTRV9OQU1FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb25zb2xlLT5EZXZpY2VOYW1lKTsKKyAgICBpZiAoRXJyb3IgIT0gU19PSyAm
JiBFcnJvciAhPSBTVFJTQUZFX0VfSU5TVUZGSUNJRU5UX0JVRkZFUikKKyAgICAgICAgZ290byBm
YWlsMjsKKworICAgIExvZygiJXMiLCBQaXBlTmFtZSk7CiAKICAgICBmb3IgKDs7KSB7Ci0gICAg
ICAgIFBpcGUgPSBDcmVhdGVOYW1lZFBpcGUoUElQRV9OQU1FLAorICAgICAgICBQaXBlID0gQ3Jl
YXRlTmFtZWRQaXBlKFBpcGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJ
UEVfQUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19PVkVSTEFQUEVELAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBJUEVfVFlQRV9NRVNTQUdFIHwgUElQRV9SRUFETU9ERV9NRVNTQUdF
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNF
UywKQEAgLTU1MiwxMSArNDY1LDExIEBAIFNlcnZlclRocmVhZCgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwog
ICAgICAgICBpZiAoUGlwZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIGdv
dG8gZmFpbDI7Ci0KKyAgICAgICAgICAgIGdvdG8gZmFpbDM7CisgICAgCiAgICAgICAgIChWT0lE
KSBDb25uZWN0TmFtZWRQaXBlKFBpcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZPdmVybGFwcGVkKTsKLQorICAgIAogICAgICAgICBPYmplY3QgPSBXYWl0Rm9yTXVsdGlwbGVP
YmplY3RzKEFSUkFZU0laRShIYW5kbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKQEAgLTU2NSwxNDYgKzQ3OCw2MCBAQCBTZXJ2ZXJUaHJlYWQoCiAgICAgICAgICAg
ICBDbG9zZUhhbmRsZShQaXBlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KKyAg
ICAKICAgICAgICAgUmVzZXRFdmVudChPdmVybGFwcGVkLmhFdmVudCk7Ci0KLSAgICAgICAgSW5z
dGFuY2UgPSAoUE1PTklUT1JfUElQRSltYWxsb2Moc2l6ZW9mKE1PTklUT1JfUElQRSkpOwotICAg
ICAgICBpZiAoSW5zdGFuY2UgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDM7Ci0KLSAg
ICAgICAgX19Jbml0aWFsaXplTGlzdEhlYWQoJkluc3RhbmNlLT5MaXN0RW50cnkpOwotICAgICAg
ICBJbnN0YW5jZS0+UGlwZSA9IFBpcGU7Ci0gICAgICAgIEluc3RhbmNlLT5FdmVudCA9IENvbnRl
eHQtPlNlcnZlckV2ZW50OwotICAgICAgICBJbnN0YW5jZS0+VGhyZWFkID0gQ3JlYXRlVGhyZWFk
KE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXBlVGhyZWFkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgIGlmIChJbnN0YW5jZS0+VGhyZWFkID09IElOVkFM
SURfSEFORExFX1ZBTFVFKQorICAgIAorICAgICAgICBDb25uZWN0aW9uID0gKFBNT05JVE9SX0NP
Tk5FQ1RJT04pbWFsbG9jKHNpemVvZihNT05JVE9SX0NPTk5FQ1RJT04pKTsKKyAgICAgICAgaWYg
KENvbm5lY3Rpb24gPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDQ7CisgICAgCisgICAg
ICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb25uZWN0aW9uLT5MaXN0RW50cnkpOworICAgICAg
ICBDb25uZWN0aW9uLT5Db25zb2xlID0gQ29uc29sZTsKKyAgICAgICAgQ29ubmVjdGlvbi0+UGlw
ZSA9IFBpcGU7CisgICAgICAgIENvbm5lY3Rpb24tPlRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxM
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb25UaHJlYWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAoQ29ubmVjdGlvbi0+
VGhyZWFkID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw1OwogICAgIH0KLQorICAgIAog
ICAgIENsb3NlSGFuZGxlKE92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICAKKyAgICBMb2coIjw9PT09
ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7CisgICAgCisgICAgcmV0dXJuIDA7CiAKLSAgICBM
b2coIjw9PT09Iik7CitmYWlsNToKKyAgICBMb2coImZhaWw1Iik7CiAKLSAgICByZXR1cm4gMDsK
KyAgICBmcmVlKENvbm5lY3Rpb24pOwogCiBmYWlsNDoKICAgICBMb2coImZhaWw0Iik7CiAKLSAg
ICBmcmVlKEluc3RhbmNlKTsKKyAgICBDbG9zZUhhbmRsZShQaXBlKTsKIAogZmFpbDM6CiAgICAg
TG9nKCJmYWlsMyIpOwogCi0gICAgQ2xvc2VIYW5kbGUoUGlwZSk7Ci0KIGZhaWwyOgogICAgIExv
ZygiZmFpbDIiKTsKKyAgICAKKyAgICBDbG9zZUhhbmRsZShPdmVybGFwcGVkLmhFdmVudCk7CiAK
IGZhaWwxOgogICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0KLSAgICB7Ci0gICAgICAgIFBU
Q0hBUiAgTWVzc2FnZTsKLSAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7
Ci0gICAgICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOwotICAgICAgICBMb2NhbEZyZWUo
TWVzc2FnZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLURXT1JEIFdJTkFQSQotTW9u
aXRvclRocmVhZCgKLSAgICBJTiAgTFBWT0lEICAgICAgICAgIEFyZ3VtZW50Ci0gICAgKQotewot
ICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsKLSAgICBQ
Uk9DRVNTX0lORk9STUFUSU9OIFByb2Nlc3NJbmZvOwotICAgIFNUQVJUVVBJTkZPICAgICAgICAg
U3RhcnR1cEluZm87Ci0gICAgQk9PTCAgICAgICAgICAgICAgICBTdWNjZXNzOwotICAgIEhBTkRM
RSAgICAgICAgICAgICAgSGFuZGxlWzJdOwotICAgIERXT1JEICAgICAgICAgICAgICAgT2JqZWN0
OwotICAgIEhSRVNVTFQgICAgICAgICAgICAgRXJyb3I7Ci0KLSAgICBVTlJFRkVSRU5DRURfUEFS
QU1FVEVSKEFyZ3VtZW50KTsKLQotICAgIExvZygiPT09PT4iKTsKLQotICAgIC8vIElmIHRoZXJl
IGlzIG5vIGV4ZWN1dGFibGUsIHRoaXMgdGhyZWFkIGNhbiBmaW5pc2ggbm93LgotICAgIGlmIChD
b250ZXh0LT5FeGVjdXRhYmxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotYWdhaW46
Ci0gICAgWmVyb01lbW9yeSgmUHJvY2Vzc0luZm8sIHNpemVvZiAoUHJvY2Vzc0luZm8pKTsKLSAg
ICBaZXJvTWVtb3J5KCZTdGFydHVwSW5mbywgc2l6ZW9mIChTdGFydHVwSW5mbykpOwotICAgIFN0
YXJ0dXBJbmZvLmNiID0gc2l6ZW9mIChTdGFydHVwSW5mbyk7Ci0KLSAgICBMb2coIkV4ZWN1dGlu
ZzogJXMiLCBDb250ZXh0LT5FeGVjdXRhYmxlKTsKLQotI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNz
OjYwNTMpIC8vIENvbW1hbmRMaW5lIG1pZ2h0IG5vdCBiZSBOVUwtdGVybWluYXRlZAotICAgIFN1
Y2Nlc3MgPSBDcmVhdGVQcm9jZXNzKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29udGV4dC0+RXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX05PX1dJTkRP
VyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhcnR1cEluZm8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJlByb2Nlc3NJbmZvKTsKLSAgICBpZiAoIVN1
Y2Nlc3MpCi0gICAgICAgIGdvdG8gZmFpbDE7Ci0KLSAgICBIYW5kbGVbMF0gPSBDb250ZXh0LT5N
b25pdG9yRXZlbnQ7Ci0gICAgSGFuZGxlWzFdID0gUHJvY2Vzc0luZm8uaFByb2Nlc3M7Ci0KLSAg
ICBPYmplY3QgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEFSUkFZU0laRShIYW5kbGUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJTkZJTklURSk7Ci0KLSNkZWZpbmUgV0FJVF9PQkpFQ1RfMSAoV0FJVF9PQkpFQ1RfMCAr
IDEpCi0KLSAgICBzd2l0Y2ggKE9iamVjdCkgewotICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoKLSAg
ICAgICAgUmVzZXRFdmVudChDb250ZXh0LT5Nb25pdG9yRXZlbnQpOwotCi0gICAgICAgIFRlcm1p
bmF0ZVByb2Nlc3MoUHJvY2Vzc0luZm8uaFByb2Nlc3MsIDEpOwotICAgICAgICBDbG9zZUhhbmRs
ZShQcm9jZXNzSW5mby5oUHJvY2Vzcyk7Ci0gICAgICAgIENsb3NlSGFuZGxlKFByb2Nlc3NJbmZv
LmhUaHJlYWQpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV0FJVF9PQkpFQ1RfMToKLSAg
ICAgICAgQ2xvc2VIYW5kbGUoUHJvY2Vzc0luZm8uaFByb2Nlc3MpOwotICAgICAgICBDbG9zZUhh
bmRsZShQcm9jZXNzSW5mby5oVGhyZWFkKTsKLSAgICAgICAgZ290byBhZ2FpbjsKLQotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotLy8jdW5kZWYgV0FJVF9PQkpFQ1RfMQot
Ci1kb25lOgotICAgIExvZygiPD09PT0iKTsKLQotICAgIHJldHVybiAwOwotCi1mYWlsMToKLSAg
ICBFcnJvciA9IEdldExhc3RFcnJvcigpOwotCisgICAgCiAgICAgewogICAgICAgICBQVENIQVIg
IE1lc3NhZ2U7CiAgICAgICAgIE1lc3NhZ2UgPSBHZXRFcnJvck1lc3NhZ2UoRXJyb3IpOwogICAg
ICAgICBMb2coImZhaWwxICglcykiLCBNZXNzYWdlKTsKICAgICAgICAgTG9jYWxGcmVlKE1lc3Nh
Z2UpOwogICAgIH0KLQorICAgIAogICAgIHJldHVybiAxOwogfQogCkBAIC03MTMsNyArNTQwLDcg
QEAgRGV2aWNlVGhyZWFkKAogICAgIElOICBMUFZPSUQgICAgICAgICAgQXJndW1lbnQKICAgICAp
CiB7Ci0gICAgUE1PTklUT1JfQ09OVEVYVCAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0Owor
ICAgIFBNT05JVE9SX0NPTlNPTEUgICAgQ29uc29sZSA9IChQTU9OSVRPUl9DT05TT0xFKUFyZ3Vt
ZW50OwogICAgIE9WRVJMQVBQRUQgICAgICAgICAgT3ZlcmxhcHBlZDsKICAgICBIQU5ETEUgICAg
ICAgICAgICAgIERldmljZTsKICAgICBVQ0hBUiAgICAgICAgICAgICAgIEJ1ZmZlcltNQVhJTVVN
X0JVRkZFUl9TSVpFXTsKQEAgLTcyMSwxMSArNTQ4LDkgQEAgRGV2aWNlVGhyZWFkKAogICAgIERX
T1JEICAgICAgICAgICAgICAgV2FpdDsKICAgICBIQU5ETEUgICAgICAgICAgICAgIEhhbmRsZXNb
Ml07CiAgICAgRFdPUkQgICAgICAgICAgICAgICBFcnJvcjsKLQotICAgIFVOUkVGRVJFTkNFRF9Q
QVJBTUVURVIoQXJndW1lbnQpOwotCi0gICAgTG9nKCI9PT09PiIpOwotCisgICAgCisgICAgTG9n
KCI9PT09PiAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOworICAgIAogICAgIFplcm9NZW1vcnko
Jk92ZXJsYXBwZWQsIHNpemVvZihPVkVSTEFQUEVEKSk7CiAgICAgT3ZlcmxhcHBlZC5oRXZlbnQg
PSBDcmVhdGVFdmVudChOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJVRSwKQEAgLTczMyw3MiArNTU4LDE3MiBAQCBEZXZpY2VUaHJlYWQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICBpZiAoT3ZlcmxhcHBlZC5oRXZlbnQg
PT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsMTsKLQotICAgIEhhbmRsZXNbMF0gPSBDb250ZXh0
LT5EZXZpY2VFdmVudDsKKyAgICAKKyAgICBIYW5kbGVzWzBdID0gQ29uc29sZS0+RGV2aWNlRXZl
bnQ7CiAgICAgSGFuZGxlc1sxXSA9IE92ZXJsYXBwZWQuaEV2ZW50OwotCi0gICAgRGV2aWNlID0g
Q3JlYXRlRmlsZShDb250ZXh0LT5EZXZpY2VQYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
R0VORVJJQ19SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwg
RklMRV9TSEFSRV9XUklURSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAg
RklMRV9GTEFHX09WRVJMQVBQRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAg
ICAKKyAgICBEZXZpY2UgPSBDcmVhdGVGaWxlVyhDb25zb2xlLT5EZXZpY2VQYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BFTl9FWElTVElORywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKICAgICBpZiAoRGV2aWNlID09IElOVkFMSURfSEFORExFX1ZB
TFVFKQogICAgICAgICBnb3RvIGZhaWwyOwotCisgICAgCiAgICAgZm9yICg7OykgewogICAgICAg
ICBQTElTVF9FTlRSWSAgICAgTGlzdEVudHJ5OwotCisgICAgCiAgICAgICAgIChWT0lEKSBSZWFk
RmlsZShEZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YoQnVmZmVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAmT3ZlcmxhcHBlZCk7Ci0KKyAgICAKICAgICAg
ICAgV2FpdCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoQVJSQVlTSVpFKEhhbmRsZXMpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU5GSU5JVEUpOwogICAgICAgICBpZiAoV2FpdCA9PSBXQUlUX09CSkVD
VF8wKQogICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAKICAgICAgICAgaWYgKCFHZXRPdmVybGFw
cGVkUmVzdWx0KERldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPdmVy
bGFwcGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKSkKICAgICAgICAgICAgIGJyZWFrOwot
CisgICAgCiAgICAgICAgIFJlc2V0RXZlbnQoT3ZlcmxhcHBlZC5oRXZlbnQpOworICAgIAorICAg
ICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKKyAg
ICAKKyAgICAgICAgZm9yIChMaXN0RW50cnkgPSBDb25zb2xlLT5MaXN0SGVhZC5GbGluazsKKyAg
ICAgICAgICAgICAgICBMaXN0RW50cnkgIT0gJkNvbnNvbGUtPkxpc3RIZWFkOworICAgICAgICAg
ICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+RmxpbmspIHsKKyAgICAgICAgICAgIFBNT05J
VE9SX0NPTk5FQ1RJT04gQ29ubmVjdGlvbjsKKyAgICAKKyAgICAgICAgICAgIENvbm5lY3Rpb24g
PSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTU9OSVRPUl9DT05ORUNUSU9OLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RFbnRyeSk7CisgICAgCisgICAgICAgICAgICBQ
dXRTdHJpbmcoQ29ubmVjdGlvbi0+UGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKTsKKyAgICAgICAgfQogCi0gICAgICAgIEVu
dGVyQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworICAgICAgICBM
ZWF2ZUNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKKyAgICB9Cisg
ICAgCisgICAgQ2xvc2VIYW5kbGUoRGV2aWNlKTsKKyAgICAKKyAgICBDbG9zZUhhbmRsZShPdmVy
bGFwcGVkLmhFdmVudCk7CisgICAgCisgICAgTG9nKCI8PT09PSAlcyIsIENvbnNvbGUtPkRldmlj
ZU5hbWUpOworICAgIAorICAgIHJldHVybiAwOworICAgIAorZmFpbDI6CisgICAgTG9nKCJmYWls
MlxuIik7CisgICAgCisgICAgQ2xvc2VIYW5kbGUoT3ZlcmxhcHBlZC5oRXZlbnQpOworICAgIAor
ZmFpbDE6CisgICAgRXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAKKyAgICB7CisgICAgICAg
IFBUQ0hBUiAgTWVzc2FnZTsKKyAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2FnZShFcnJv
cik7CisgICAgICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOworICAgICAgICBMb2NhbEZy
ZWUoTWVzc2FnZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiAxOworfQogCi0gICAgICAgIGZv
ciAoTGlzdEVudHJ5ID0gQ29udGV4dC0+TGlzdEhlYWQuRmxpbms7Ci0gICAgICAgICAgICAgTGlz
dEVudHJ5ICE9ICZDb250ZXh0LT5MaXN0SGVhZDsKLSAgICAgICAgICAgICBMaXN0RW50cnkgPSBM
aXN0RW50cnktPkZsaW5rKSB7Ci0gICAgICAgICAgICBQTU9OSVRPUl9QSVBFICAgSW5zdGFuY2U7
CitzdGF0aWMgQk9PTAorR2V0RXhlY3V0YWJsZSgKKyAgICBJTiAgUENIQVIgICAgICAgICAgIERl
dmljZU5hbWUsCisgICAgT1VUIFBDSEFSICAgICAgICAgICAqRXhlY3V0YWJsZQorICAgICkKK3sK
KyAgICBQTU9OSVRPUl9DT05URVhUICAgIENvbnRleHQgPSAmTW9uaXRvckNvbnRleHQ7CisgICAg
SEtFWSAgICAgICAgICAgICAgICBLZXk7CisgICAgRFdPUkQgICAgICAgICAgICAgICBNYXhWYWx1
ZUxlbmd0aDsKKyAgICBEV09SRCAgICAgICAgICAgICAgIEV4ZWN1dGFibGVMZW5ndGg7CisgICAg
RFdPUkQgICAgICAgICAgICAgICBUeXBlOworICAgIEhSRVNVTFQgICAgICAgICAgICAgRXJyb3I7
CiAKLSAgICAgICAgICAgIEluc3RhbmNlID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LCBN
T05JVE9SX1BJUEUsIExpc3RFbnRyeSk7CisgICAgRXJyb3IgPSBSZWdPcGVuS2V5RXhBKENvbnRl
eHQtPlBhcmFtZXRlcnNLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZU5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEtFWV9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAmS2V5KTsKKyAgICBpZiAoRXJy
b3IgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBTZXRMYXN0RXJyb3IoRXJyb3IpOworICAg
ICAgICBnb3RvIGZhaWwxOworICAgIH0KIAotICAgICAgICAgICAgUHV0U3RyaW5nKEluc3RhbmNl
LT5QaXBlLAotICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICBMZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZD
b250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworICAgIEVycm9yID0gUmVnUXVlcnlJbmZvS2V5KEtl
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1heFZhbHVlTGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
CisgICAgaWYgKEVycm9yICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgU2V0TGFzdEVycm9y
KEVycm9yKTsKKyAgICAgICAgZ290byBmYWlsMjsKICAgICB9CiAKLSAgICBDbG9zZUhhbmRsZShE
ZXZpY2UpOworICAgIEV4ZWN1dGFibGVMZW5ndGggPSBNYXhWYWx1ZUxlbmd0aDsKIAotICAgIENs
b3NlSGFuZGxlKE92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICAqRXhlY3V0YWJsZSA9IGNhbGxvYygx
LCBFeGVjdXRhYmxlTGVuZ3RoKTsKKyAgICBpZiAoRXhlY3V0YWJsZSA9PSBOVUxMKQorICAgICAg
ICBnb3RvIGZhaWwzOwogCi0gICAgTG9nKCI8PT09PSIpOworICAgIEVycm9yID0gUmVnUXVlcnlW
YWx1ZUV4QShLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRhYmxlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJlR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpKCpF
eGVjdXRhYmxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkV4ZWN1dGFibGVMZW5n
dGgpOworICAgIGlmIChFcnJvciAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFNldExhc3RF
cnJvcihFcnJvcik7CisgICAgICAgIGdvdG8gZmFpbDQ7CisgICAgfQogCi0gICAgcmV0dXJuIDA7
CisgICAgaWYgKFR5cGUgIT0gUkVHX1NaKSB7CisgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9C
QURfRk9STUFUKTsKKyAgICAgICAgZ290byBmYWlsNTsKKyAgICB9CisKKyAgICBMb2coIiVzID0g
JXMiLCBEZXZpY2VOYW1lLCAqRXhlY3V0YWJsZSk7CisKKyAgICBSZWdDbG9zZUtleShLZXkpOwor
CisgICAgcmV0dXJuIFRSVUU7CisKK2ZhaWw1OgorICAgIExvZygiZmFpbDUiKTsKKworZmFpbDQ6
CisgICAgTG9nKCJmYWlsNCIpOworCisgICAgZnJlZSgqRXhlY3V0YWJsZSk7CisKK2ZhaWwzOgor
ICAgIExvZygiZmFpbDMiKTsKIAogZmFpbDI6Ci0gICAgTG9nKCJmYWlsMlxuIik7CisgICAgTG9n
KCJmYWlsMiIpOwogCi0gICAgQ2xvc2VIYW5kbGUoT3ZlcmxhcHBlZC5oRXZlbnQpOworICAgIFJl
Z0Nsb3NlS2V5KEtleSk7CiAKIGZhaWwxOgogICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7CkBA
IC04MTAsMjc4ICs3MzUsNjE0IEBAIGZhaWwxOgogICAgICAgICBMb2NhbEZyZWUoTWVzc2FnZSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIEZBTFNFOwogfQogCi0jZGVmaW5l
IEVDSE8oX0hhbmRsZSwgX0J1ZmZlcikgXAotICAgIFB1dFN0cmluZygoX0hhbmRsZSksIChQVUNI
QVIpVEVYVChfQnVmZmVyKSwgKERXT1JEKV90Y3NsZW4oKF9CdWZmZXIpKSAqIHNpemVvZihUQ0hB
UikpCitEV09SRCBXSU5BUEkKK0V4ZWN1dGFibGVUaHJlYWQoCisgICAgSU4gIExQVk9JRCAgICAg
ICAgICBBcmd1bWVudAorICAgICkKK3sKKyAgICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGUg
PSAoUE1PTklUT1JfQ09OU09MRSlBcmd1bWVudDsKKyAgICBQQ0hBUiAgICAgICAgICAgICAgIEV4
ZWN1dGFibGU7CisgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBQcm9jZXNzSW5mbzsKKyAgICBTVEFS
VFVQSU5GTyAgICAgICAgIFN0YXJ0dXBJbmZvOworICAgIEJPT0wgICAgICAgICAgICAgICAgU3Vj
Y2VzczsKKyAgICBIQU5ETEUgICAgICAgICAgICAgIEhhbmRsZVsyXTsKKyAgICBEV09SRCAgICAg
ICAgICAgICAgIE9iamVjdDsKKyAgICBIUkVTVUxUICAgICAgICAgICAgIEVycm9yOworICAgIAor
ICAgIExvZygiPT09PT4gJXMiLCBDb25zb2xlLT5EZXZpY2VOYW1lKTsKKyAgICAKKyAgICAvLyBJ
ZiB0aGVyZSBpcyBubyBleGVjdXRhYmxlLCB0aGlzIHRocmVhZCBjYW4gZmluaXNoIG5vdy4KKyAg
ICBpZiAoIUdldEV4ZWN1dGFibGUoQ29uc29sZS0+RGV2aWNlTmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJkV4ZWN1dGFibGUpKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKEV4ZWN1
dGFibGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIAorYWdhaW46CisgICAgWmVy
b01lbW9yeSgmUHJvY2Vzc0luZm8sIHNpemVvZiAoUHJvY2Vzc0luZm8pKTsKKyAgICBaZXJvTWVt
b3J5KCZTdGFydHVwSW5mbywgc2l6ZW9mIChTdGFydHVwSW5mbykpOworICAgIFN0YXJ0dXBJbmZv
LmNiID0gc2l6ZW9mIChTdGFydHVwSW5mbyk7CisgICAgCisgICAgTG9nKCJFeGVjdXRpbmc6ICVz
IiwgRXhlY3V0YWJsZSk7CisgICAgCisjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6NjA1MykgLy8g
Q29tbWFuZExpbmUgbWlnaHQgbm90IGJlIE5VTC10ZXJtaW5hdGVkCisgICAgU3VjY2VzcyA9IENy
ZWF0ZVByb2Nlc3MoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRhYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDUkVBVEVfTk9fV0lORE9XIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZTdGFydHVwSW5mbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmUHJvY2Vzc0luZm8pOworICAgIGlmICghU3VjY2VzcykKKyAgICAgICAgZ290
byBmYWlsMTsKKyAgICAKKyAgICBIYW5kbGVbMF0gPSBDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQ7
CisgICAgSGFuZGxlWzFdID0gUHJvY2Vzc0luZm8uaFByb2Nlc3M7CisgICAgCisgICAgT2JqZWN0
ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cyhBUlJBWVNJWkUoSGFuZGxlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SU5GSU5JVEUpOworICAgIAorI2RlZmluZSBXQUlUX09CSkVDVF8xIChXQUlUX09CSkVDVF8wICsg
MSkKKyAgICAKKyAgICBzd2l0Y2ggKE9iamVjdCkgeworICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoK
KyAgICAgICAgUmVzZXRFdmVudChDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQpOworICAgIAorICAg
ICAgICBUZXJtaW5hdGVQcm9jZXNzKFByb2Nlc3NJbmZvLmhQcm9jZXNzLCAxKTsKKyAgICAgICAg
Q2xvc2VIYW5kbGUoUHJvY2Vzc0luZm8uaFByb2Nlc3MpOworICAgICAgICBDbG9zZUhhbmRsZShQ
cm9jZXNzSW5mby5oVGhyZWFkKTsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSBXQUlU
X09CSkVDVF8xOgorICAgICAgICBDbG9zZUhhbmRsZShQcm9jZXNzSW5mby5oUHJvY2Vzcyk7Cisg
ICAgICAgIENsb3NlSGFuZGxlKFByb2Nlc3NJbmZvLmhUaHJlYWQpOworICAgICAgICBnb3RvIGFn
YWluOworICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKy8v
I3VuZGVmIFdBSVRfT0JKRUNUXzEKKyAgICAKKyAgICBmcmVlKEV4ZWN1dGFibGUpOwogCi1zdGF0
aWMgVk9JRAotTW9uaXRvckFkZCgKLSAgICBWT0lECitkb25lOgorICAgIExvZygiPD09PT0gJXMi
LCBDb25zb2xlLT5EZXZpY2VOYW1lKTsKKyAgICAKKyAgICByZXR1cm4gMDsKKyAgICAKK2ZhaWwx
OgorICAgIEVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgCisgICAgZnJlZShFeGVjdXRhYmxl
KTsKKworICAgIHsKKyAgICAgICAgUFRDSEFSICBNZXNzYWdlOworICAgICAgICBNZXNzYWdlID0g
R2V0RXJyb3JNZXNzYWdlKEVycm9yKTsKKyAgICAgICAgTG9nKCJmYWlsMSAoJXMpIiwgTWVzc2Fn
ZSk7CisgICAgICAgIExvY2FsRnJlZShNZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IDE7Cit9CisKK3N0YXRpYyBQTU9OSVRPUl9DT05TT0xFCitDb25zb2xlQ3JlYXRlKAorICAgIElO
ICBQV0NIQVIgICAgICAgICAgICAgIERldmljZVBhdGgKICAgICApCiB7CiAgICAgUE1PTklUT1Jf
Q09OVEVYVCAgICAgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsKLSAgICBQVENIQVIgICAg
ICAgICAgICAgICAgICBQYXRoOworICAgIFBNT05JVE9SX0NPTlNPTEUgICAgICAgIENvbnNvbGU7
CiAgICAgREVWX0JST0FEQ0FTVF9IQU5ETEUgICAgSGFuZGxlOwotICAgIEhSRVNVTFQgICAgICAg
ICAgICAgICAgIEVycm9yOworICAgIENIQVIgICAgICAgICAgICAgICAgICAgIERldmljZU5hbWVb
TUFYX1BBVEhdOworICAgIERXT1JEICAgICAgICAgICAgICAgICAgIEJ5dGVzOwogICAgIEJPT0wg
ICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3M7CisgICAgSFJFU1VMVCAgICAgICAgICAgICAgICAg
RXJyb3I7CiAKLSAgICBpZiAoQ29udGV4dC0+RGV2aWNlICE9IElOVkFMSURfSEFORExFX1ZBTFVF
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2coIj09PT0+Iik7Ci0KLSAgICBTdWNjZXNzID0g
TW9uaXRvckdldFBhdGgoJkdVSURfWEVOQ09OU19ERVZJQ0UsICZQYXRoKTsKKyAgICBMb2coIj09
PT0+ICV3cyIsIERldmljZVBhdGgpOwogCi0gICAgaWYgKCFTdWNjZXNzKQorICAgIENvbnNvbGUg
PSBtYWxsb2Moc2l6ZW9mKE1PTklUT1JfQ09OU09MRSkpOworICAgIGlmIChDb25zb2xlID09IE5V
TEwpCiAgICAgICAgIGdvdG8gZmFpbDE7CiAKLSAgICBDb250ZXh0LT5EZXZpY2UgPSBDcmVhdGVG
aWxlKFBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU5FUklDX1dSSVRF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklM
RV9TSEFSRV9XUklURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VYSVNUSU5HLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgbWVtc2V0KENvbnNvbGUsIDAsIHNp
emVvZihNT05JVE9SX0NPTlNPTEUpKTsKKyAgICBfX0luaXRpYWxpemVMaXN0SGVhZCgmQ29uc29s
ZS0+TGlzdEhlYWQpOworICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb25zb2xlLT5MaXN0RW50
cnkpOworICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2FsU2Vj
dGlvbik7CiAKLSAgICBpZiAoQ29udGV4dC0+RGV2aWNlID09IElOVkFMSURfSEFORExFX1ZBTFVF
KQorICAgIENvbnNvbGUtPkRldmljZVBhdGggPSBfd2NzZHVwKERldmljZVBhdGgpOworICAgIGlm
IChDb25zb2xlLT5EZXZpY2VQYXRoID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDI7CiAKLSAg
ICBFQ0hPKENvbnRleHQtPkRldmljZSwgIlxyXG5bQVRUQUNIRURdXHJcbiIpOwotCi0gICAgWmVy
b01lbW9yeSgmSGFuZGxlLCBzaXplb2YgKEhhbmRsZSkpOwotICAgIEhhbmRsZS5kYmNoX3NpemUg
PSBzaXplb2YgKEhhbmRsZSk7Ci0gICAgSGFuZGxlLmRiY2hfZGV2aWNldHlwZSA9IERCVF9ERVZU
WVBfSEFORExFOwotICAgIEhhbmRsZS5kYmNoX2hhbmRsZSA9IENvbnRleHQtPkRldmljZTsKLQot
ICAgIENvbnRleHQtPkRldmljZU5vdGlmaWNhdGlvbiA9Ci0gICAgICAgIFJlZ2lzdGVyRGV2aWNl
Tm90aWZpY2F0aW9uKENvbnRleHQtPlNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZIYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERF
VklDRV9OT1RJRllfU0VSVklDRV9IQU5ETEUpOwotICAgIGlmIChDb250ZXh0LT5EZXZpY2VOb3Rp
ZmljYXRpb24gPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMzsKLQotICAgIENvbnRleHQtPkRl
dmljZVBhdGggPSBQYXRoOwotICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb250ZXh0LT5MaXN0
SGVhZCk7Ci0gICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxT
ZWN0aW9uKTsKLQotICAgIENvbnRleHQtPk1vbml0b3JFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICBDb25zb2xlLT5EZXZp
Y2VIYW5kbGUgPSBDcmVhdGVGaWxlVyhEZXZpY2VQYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9T
SEFSRV9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QRU5fRVhJU1RJTkcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVf
Tk9STUFMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor
ICAgIGlmIChDb25zb2xlLT5EZXZpY2VIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisg
ICAgICAgIGdvdG8gZmFpbDM7CiAKLSAgICBpZiAoQ29udGV4dC0+TW9uaXRvckV2ZW50ID09IE5V
TEwpCisgICAgU3VjY2VzcyA9IERldmljZUlvQ29udHJvbChDb25zb2xlLT5EZXZpY2VIYW5kbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0NUTF9YRU5DT05TX0dFVF9OQU1FLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKERldmljZU5hbWUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7CisgICAgaWYgKCFTdWNjZXNzKQogICAgICAgICBnb3RvIGZhaWw0OwogCi0g
ICAgQ29udGV4dC0+TW9uaXRvclRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1vbml0b3JUaHJlYWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOworICAgIERldmljZU5hbWVbTUFYX1BBVEggLSAxXSA9ICdcMCc7CiAKLSAgICBp
ZiAoQ29udGV4dC0+TW9uaXRvclRocmVhZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICBD
b25zb2xlLT5EZXZpY2VOYW1lID0gX3N0cmR1cChEZXZpY2VOYW1lKTsKKyAgICBpZiAoQ29uc29s
ZS0+RGV2aWNlTmFtZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw1OwogCi0gICAgQ29udGV4
dC0+RGV2aWNlRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLAorICAgIEVDSE8oQ29uc29sZS0+RGV2
aWNlSGFuZGxlLCAiXHJcbltBVFRBQ0hFRF1cclxuIik7CisKKyAgICBaZXJvTWVtb3J5KCZIYW5k
bGUsIHNpemVvZiAoSGFuZGxlKSk7CisgICAgSGFuZGxlLmRiY2hfc2l6ZSA9IHNpemVvZiAoSGFu
ZGxlKTsKKyAgICBIYW5kbGUuZGJjaF9kZXZpY2V0eXBlID0gREJUX0RFVlRZUF9IQU5ETEU7Cisg
ICAgSGFuZGxlLmRiY2hfaGFuZGxlID0gQ29uc29sZS0+RGV2aWNlSGFuZGxlOworICAgIAorICAg
IENvbnNvbGUtPkRldmljZU5vdGlmaWNhdGlvbiA9CisgICAgICAgIFJlZ2lzdGVyRGV2aWNlTm90
aWZpY2F0aW9uKENvbnRleHQtPlNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVW
SUNFX05PVElGWV9TRVJWSUNFX0hBTkRMRSk7CisgICAgaWYgKENvbnNvbGUtPkRldmljZU5vdGlm
aWNhdGlvbiA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw2OworCisgICAgQ29uc29sZS0+RGV2
aWNlRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
ICAgaWYgKENvbnNvbGUtPkRldmljZUV2ZW50ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDc7
CiAKLSAgICBpZiAoQ29udGV4dC0+RGV2aWNlRXZlbnQgPT0gTlVMTCkKLSAgICAgICAgZ290byBm
YWlsNjsKLQotICAgIENvbnRleHQtPkRldmljZVRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLAor
ICAgIENvbnNvbGUtPkRldmljZVRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZXZpY2VUaHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbnNvbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor
ICAgIGlmIChDb25zb2xlLT5EZXZpY2VUaHJlYWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWls
ODsKIAotICAgIGlmIChDb250ZXh0LT5EZXZpY2VUaHJlYWQgPT0gSU5WQUxJRF9IQU5ETEVfVkFM
VUUpCi0gICAgICAgIGdvdG8gZmFpbDc7Ci0KLSAgICBDb250ZXh0LT5TZXJ2ZXJFdmVudCA9IENy
ZWF0ZUV2ZW50KE5VTEwsCisgICAgQ29uc29sZS0+U2VydmVyRXZlbnQgPSBDcmVhdGVFdmVudChO
VUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgaWYgKENvbnRleHQtPlNlcnZlckV2
ZW50ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDg7CisgICAgaWYgKENvbnNvbGUtPlNlcnZl
ckV2ZW50ID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDk7CiAKLSAgICBDb250ZXh0LT5TZXJ2
ZXJUaHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwKKyAgICBDb25zb2xlLT5TZXJ2ZXJUaHJlYWQg
PSBDcmVhdGVUaHJlYWQoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVy
VGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zb2xlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICBpZiAoQ29udGV4dC0+U2VydmVyVGhy
ZWFkID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICBnb3RvIGZhaWw5OworICAgIGlm
IChDb25zb2xlLT5TZXJ2ZXJUaHJlYWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTA7CiAK
LSAgICBMb2coIjw9PT09Iik7CisgICAgQ29uc29sZS0+RXhlY3V0YWJsZUV2ZW50ID0gQ3JlYXRl
RXZlbnQoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlm
IChDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTE7
CiAKLSAgICByZXR1cm47CisgICAgQ29uc29sZS0+RXhlY3V0YWJsZVRocmVhZCA9IENyZWF0ZVRo
cmVhZChOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGFi
bGVUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b25zb2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAg
IGlmIChDb25zb2xlLT5FeGVjdXRhYmxlVGhyZWFkID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFp
bDEyOworCisgICAgTG9nKCI8PT09PSAlcyIsIENvbnNvbGUtPkRldmljZU5hbWUpOworCisgICAg
cmV0dXJuIENvbnNvbGU7CisKK2ZhaWwxMjoKKyAgICBMb2coImZhaWwxMiIpOworCisgICAgQ2xv
c2VIYW5kbGUoQ29uc29sZS0+RXhlY3V0YWJsZUV2ZW50KTsKKyAgICBDb25zb2xlLT5FeGVjdXRh
YmxlRXZlbnQgPSBOVUxMOworCitmYWlsMTE6CisgICAgTG9nKCJmYWlsMTEiKTsKKworICAgIFNl
dEV2ZW50KENvbnNvbGUtPlNlcnZlckV2ZW50KTsKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KENv
bnNvbGUtPlNlcnZlclRocmVhZCwgSU5GSU5JVEUpOworCitmYWlsMTA6CisgICAgTG9nKCJmYWls
MTAiKTsKKworICAgIENsb3NlSGFuZGxlKENvbnNvbGUtPlNlcnZlckV2ZW50KTsKKyAgICBDb25z
b2xlLT5TZXJ2ZXJFdmVudCA9IE5VTEw7CiAKIGZhaWw5OgogICAgIExvZygiZmFpbDkiKTsKIAot
ICAgIENsb3NlSGFuZGxlKENvbnRleHQtPlNlcnZlckV2ZW50KTsKLSAgICBDb250ZXh0LT5TZXJ2
ZXJFdmVudCA9IE5VTEw7CisgICAgU2V0RXZlbnQoQ29uc29sZS0+RGV2aWNlRXZlbnQpOworICAg
IFdhaXRGb3JTaW5nbGVPYmplY3QoQ29uc29sZS0+RGV2aWNlVGhyZWFkLCBJTkZJTklURSk7CiAK
IGZhaWw4OgogICAgIExvZygiZmFpbDgiKTsKIAotICAgIFNldEV2ZW50KENvbnRleHQtPkRldmlj
ZUV2ZW50KTsKLSAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KENvbnRleHQtPkRldmljZVRocmVhZCwg
SU5GSU5JVEUpOworICAgIENsb3NlSGFuZGxlKENvbnNvbGUtPkRldmljZUV2ZW50KTsKKyAgICBD
b25zb2xlLT5EZXZpY2VFdmVudCA9IE5VTEw7CiAKIGZhaWw3OgotICAgIExvZygiZmFpbDdcbiIp
OworICAgIExvZygiZmFpbDciKTsKIAotICAgIENsb3NlSGFuZGxlKENvbnRleHQtPkRldmljZUV2
ZW50KTsKLSAgICBDb250ZXh0LT5EZXZpY2VFdmVudCA9IE5VTEw7CisgICAgVW5yZWdpc3RlckRl
dmljZU5vdGlmaWNhdGlvbihDb25zb2xlLT5EZXZpY2VOb3RpZmljYXRpb24pOworICAgIENvbnNv
bGUtPkRldmljZU5vdGlmaWNhdGlvbiA9IE5VTEw7CiAKIGZhaWw2OgotICAgIExvZygiZmFpbDZc
biIpOworICAgIExvZygiZmFpbDYiKTsKIAotICAgIFNldEV2ZW50KENvbnRleHQtPk1vbml0b3JU
aHJlYWQpOwotICAgIFdhaXRGb3JTaW5nbGVPYmplY3QoQ29udGV4dC0+TW9uaXRvclRocmVhZCwg
SU5GSU5JVEUpOworICAgIEVDSE8oQ29uc29sZS0+RGV2aWNlSGFuZGxlLCAiXHJcbltERVRBQ0hF
RF1cclxuIik7CisKKyAgICBmcmVlKENvbnNvbGUtPkRldmljZVBhdGgpOworICAgIENvbnNvbGUt
PkRldmljZVBhdGggPSBOVUxMOwogCiBmYWlsNToKICAgICBMb2coImZhaWw1Iik7CiAKLSAgICBD
bG9zZUhhbmRsZShDb250ZXh0LT5Nb25pdG9yRXZlbnQpOwotICAgIENvbnRleHQtPk1vbml0b3JF
dmVudCA9IE5VTEw7Ci0KIGZhaWw0OgogICAgIExvZygiZmFpbDQiKTsKIAotICAgIERlbGV0ZUNy
aXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsKLSAgICBaZXJvTWVtb3J5
KCZDb250ZXh0LT5MaXN0SGVhZCwgc2l6ZW9mKExJU1RfRU5UUlkpKTsKLQotICAgIGZyZWUoQ29u
dGV4dC0+RGV2aWNlUGF0aCk7Ci0gICAgQ29udGV4dC0+RGV2aWNlUGF0aCA9IE5VTEw7Ci0KLSAg
ICBVbnJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnRleHQtPkRldmljZU5vdGlmaWNhdGlv
bik7Ci0gICAgQ29udGV4dC0+RGV2aWNlTm90aWZpY2F0aW9uID0gTlVMTDsKKyAgICBDbG9zZUhh
bmRsZShDb25zb2xlLT5EZXZpY2VIYW5kbGUpOworICAgIENvbnNvbGUtPkRldmljZUhhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOwogCiBmYWlsMzoKICAgICBMb2coImZhaWwzIik7CiAKLSAg
ICBDbG9zZUhhbmRsZShDb250ZXh0LT5EZXZpY2UpOwotICAgIENvbnRleHQtPkRldmljZSA9IElO
VkFMSURfSEFORExFX1ZBTFVFOworICAgIGZyZWUoQ29uc29sZS0+RGV2aWNlUGF0aCk7CisgICAg
Q29uc29sZS0+RGV2aWNlUGF0aCA9IE5VTEw7CiAKIGZhaWwyOgogICAgIExvZygiZmFpbDIiKTsK
IAotICAgIGZyZWUoUGF0aCk7CisgICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKCZDb25zb2xlLT5D
cml0aWNhbFNlY3Rpb24pOworICAgIFplcm9NZW1vcnkoJkNvbnNvbGUtPkxpc3RIZWFkLCBzaXpl
b2YoTElTVF9FTlRSWSkpOworICAgIFplcm9NZW1vcnkoJkNvbnNvbGUtPkxpc3RFbnRyeSwgc2l6
ZW9mKExJU1RfRU5UUlkpKTsKKworICAgIGZyZWUoQ29uc29sZSk7CiAKIGZhaWwxOgogICAgIEVy
cm9yID0gR2V0TGFzdEVycm9yKCk7CiAKICAgICB7Ci0gICAgICAgIFBUQ0hBUiAgTWVzc2FnZTsK
KyAgICAgICAgUENIQVIgIE1lc3NhZ2U7CiAgICAgICAgIE1lc3NhZ2UgPSBHZXRFcnJvck1lc3Nh
Z2UoRXJyb3IpOwogICAgICAgICBMb2coImZhaWwxICglcykiLCBNZXNzYWdlKTsKICAgICAgICAg
TG9jYWxGcmVlKE1lc3NhZ2UpOwogICAgIH0KKworICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0
aWMgVk9JRAotTW9uaXRvcldhaXRGb3JQaXBlVGhyZWFkcygKLSAgICBWT0lECitzdGF0aWMgRk9S
Q0VJTkxJTkUgVk9JRAorQ29uc29sZVdhaXRGb3JQaXBlcygKKyAgICBJTiAgUE1PTklUT1JfQ09O
U09MRSAgICBDb25zb2xlCiAgICAgKQogewotICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4
dCA9ICZNb25pdG9yQ29udGV4dDsKLSAgICBIQU5ETEUgICAgICAgICAgICAgICpIYW5kbGVzOwot
ICAgIERXT1JEICAgICAgICAgICAgICAgSW5kZXg7Ci0gICAgUExJU1RfRU5UUlkgICAgICAgICBM
aXN0RW50cnk7CisgICAgUExJU1RfRU5UUlkgICAgICAgICAgICAgTGlzdEVudHJ5OworICAgIEhB
TkRMRSAgICAgICAgICAgICAgICAgICpFdmVudHM7CisgICAgRFdPUkQgICAgICAgICAgICAgICAg
ICAgQ291bnQ7CisgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgSW5kZXg7CiAKLSAgICBFbnRl
ckNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsKKyAgICBFbnRlckNy
aXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKIAotICAgIGlmIChDb250
ZXh0LT5MaXN0Q291bnQgPT0gMCkKKyAgICBDb3VudCA9IENvbnNvbGUtPkxpc3RDb3VudCArIDE7
CisgICAgRXZlbnRzID0gbWFsbG9jKENvdW50ICogc2l6ZW9mKEhBTkRMRSkpOworICAgIGlmIChF
dmVudHMgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsMTsKIAotICAgIEhhbmRsZXMgPSAoSEFO
RExFKiltYWxsb2Moc2l6ZW9mKEhBTkRMRSkgKiBDb250ZXh0LT5MaXN0Q291bnQpOwotICAgIGlm
IChIYW5kbGVzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDI7Ci0KICAgICBJbmRleCA9IDA7
Ci0gICAgZm9yIChMaXN0RW50cnkgPSBDb250ZXh0LT5MaXN0SGVhZC5GbGluazsKLSAgICAgICAg
IExpc3RFbnRyeSAhPSAmQ29udGV4dC0+TGlzdEhlYWQgJiYgSW5kZXggPCBDb250ZXh0LT5MaXN0
Q291bnQ7CisgICAgZm9yIChMaXN0RW50cnkgPSBDb25zb2xlLT5MaXN0SGVhZC5GbGluazsKKyAg
ICAgICAgIExpc3RFbnRyeSAhPSAmQ29uc29sZS0+TGlzdEhlYWQ7CiAgICAgICAgICBMaXN0RW50
cnkgPSBMaXN0RW50cnktPkZsaW5rKSB7Ci0gICAgICAgIFBNT05JVE9SX1BJUEUgUGlwZSA9IENP
TlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgTU9OSVRPUl9QSVBFLCBMaXN0RW50cnkpOwotICAg
ICAgICBIYW5kbGVzW0luZGV4KytdID0gUGlwZS0+VGhyZWFkOworICAgICAgICBQTU9OSVRPUl9D
T05ORUNUSU9OIENvbm5lY3Rpb247CisKKyAgICAgICAgQ29ubmVjdGlvbiA9IENPTlRBSU5JTkdf
UkVDT1JEKExpc3RFbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1PTklUT1JfQ09OTkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExpc3RFbnRyeSk7CisKKyNwcmFnbWEgd2FybmluZyhzdXBwcmVzczogNjM4NikgLy8gQnVm
ZmVyIG92ZXJmbG93CisgICAgICAgIEV2ZW50c1tJbmRleF0gPSBDb25uZWN0aW9uLT5UaHJlYWQ7
CisgICAgICAgICsrSW5kZXg7CiAgICAgfQorICAgIEV2ZW50c1tDb3VudCAtIDFdID0gQ29uc29s
ZS0+U2VydmVyVGhyZWFkOwogCi0gICAgQ29udGV4dC0+TGlzdENvdW50ID0gMDsKKyAgICBMZWF2
ZUNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKIAotICAgIExlYXZl
Q3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworICAgIFNldEV2ZW50
KENvbnNvbGUtPlNlcnZlckV2ZW50KTsKKyAgICBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKENvdW50
LCBFdmVudHMsIFRSVUUsIElORklOSVRFKTsKIAotI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjYz
ODUpIC8vIFJlYWRpbmcgaW52YWxpZCBkYXRhIGZyb20gJ0hhbmRsZXMnLi4uCi0gICAgV2FpdEZv
ck11bHRpcGxlT2JqZWN0cyhJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRs
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSU5GSU5JVEUpOwotICAgIGZyZWUoSGFuZGxlcyk7CiAgICAgcmV0dXJuOwogCi1m
YWlsMjoKLSAgICBMb2coImZhaWwyIik7Ci0KIGZhaWwxOgotICAgIExvZygiZmFpbDEiKTsKKyAg
ICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmQ29uc29sZS0+Q3JpdGljYWxTZWN0aW9uKTsKKworICAg
IC8vIHNldCB0aGUgZXZlbnQgYW5kIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIGFueXdheQor
ICAgIFNldEV2ZW50KENvbnNvbGUtPlNlcnZlckV2ZW50KTsKKyAgICBXYWl0Rm9yU2luZ2xlT2Jq
ZWN0KENvbnNvbGUtPlNlcnZlclRocmVhZCwgSU5GSU5JVEUpOworfQorCitzdGF0aWMgVk9JRAor
Q29uc29sZURlc3Ryb3koCisgICAgSU4gIFBNT05JVE9SX0NPTlNPTEUgICAgQ29uc29sZQorICAg
ICkKK3sKKyAgICBMb2coIj09PT0+ICVzIiwgQ29uc29sZS0+RGV2aWNlTmFtZSk7CisKKyAgICBT
ZXRFdmVudChDb25zb2xlLT5FeGVjdXRhYmxlRXZlbnQpOworICAgIFdhaXRGb3JTaW5nbGVPYmpl
Y3QoQ29uc29sZS0+RXhlY3V0YWJsZVRocmVhZCwgSU5GSU5JVEUpOworCisgICAgQ2xvc2VIYW5k
bGUoQ29uc29sZS0+RXhlY3V0YWJsZUV2ZW50KTsKKyAgICBDb25zb2xlLT5FeGVjdXRhYmxlRXZl
bnQgPSBOVUxMOworCisgICAgQ29uc29sZVdhaXRGb3JQaXBlcyhDb25zb2xlKTsKKworICAgIENs
b3NlSGFuZGxlKENvbnNvbGUtPlNlcnZlckV2ZW50KTsKKyAgICBDb25zb2xlLT5TZXJ2ZXJFdmVu
dCA9IE5VTEw7CisKKyAgICBTZXRFdmVudChDb25zb2xlLT5EZXZpY2VFdmVudCk7CisgICAgV2Fp
dEZvclNpbmdsZU9iamVjdChDb25zb2xlLT5EZXZpY2VUaHJlYWQsIElORklOSVRFKTsKKworICAg
IENsb3NlSGFuZGxlKENvbnNvbGUtPkRldmljZUV2ZW50KTsKKyAgICBDb25zb2xlLT5EZXZpY2VF
dmVudCA9IE5VTEw7CisKKyAgICBVbnJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENvbnNvbGUt
PkRldmljZU5vdGlmaWNhdGlvbik7CisgICAgQ29uc29sZS0+RGV2aWNlTm90aWZpY2F0aW9uID0g
TlVMTDsKKworICAgIEVDSE8oQ29uc29sZS0+RGV2aWNlSGFuZGxlLCAiXHJcbltERVRBQ0hFRF1c
clxuIik7CisKKyAgICBmcmVlKENvbnNvbGUtPkRldmljZVBhdGgpOworICAgIENvbnNvbGUtPkRl
dmljZVBhdGggPSBOVUxMOworCisgICAgQ2xvc2VIYW5kbGUoQ29uc29sZS0+RGV2aWNlSGFuZGxl
KTsKKyAgICBDb25zb2xlLT5EZXZpY2VIYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKwor
ICAgIGZyZWUoQ29uc29sZS0+RGV2aWNlUGF0aCk7CisgICAgQ29uc29sZS0+RGV2aWNlUGF0aCA9
IE5VTEw7CisKKyAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJkNvbnNvbGUtPkNyaXRpY2FsU2Vj
dGlvbik7CisgICAgWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdEhlYWQsIHNpemVvZihMSVNUX0VO
VFJZKSk7CisgICAgWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdEVudHJ5LCBzaXplb2YoTElTVF9F
TlRSWSkpOworCisgICAgZnJlZShDb25zb2xlKTsKIAorICAgIExvZygiPD09PT0iKTsKK30KKwor
c3RhdGljIEJPT0wKK01vbml0b3JBZGQoCisgICAgSU4gIFBXQ0hBUiAgICAgICAgICBEZXZpY2VQ
YXRoCisgICAgKQoreworICAgIFBNT05JVE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9y
Q29udGV4dDsKKyAgICBQTU9OSVRPUl9DT05TT0xFICAgIENvbnNvbGU7CisKKyAgICBMb2coIj09
PT09PiAld3MiLCBEZXZpY2VQYXRoKTsKKworICAgIENvbnNvbGUgPSBDb25zb2xlQ3JlYXRlKERl
dmljZVBhdGgpOworICAgIGlmIChDb25zb2xlID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7
CisKKyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsK
KyAgICBfX0luc2VydFRhaWxMaXN0KCZDb250ZXh0LT5MaXN0SGVhZCwgJkNvbnNvbGUtPkxpc3RF
bnRyeSk7CisgICAgKytDb250ZXh0LT5MaXN0Q291bnQ7CiAgICAgTGVhdmVDcml0aWNhbFNlY3Rp
b24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7CiAKLSAgICByZXR1cm47CisgICAgTG9nKCI8
PT09PT0gJXMiLCBDb25zb2xlLT5EZXZpY2VOYW1lKTsKKworICAgIHJldHVybiBUUlVFOworCitm
YWlsMToKKyAgICBMb2coImZhaWwxIik7CisKKyAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRp
YyBWT0lECitzdGF0aWMgQk9PTAogTW9uaXRvclJlbW92ZSgKLSAgICBWT0lECisgICAgSU4gIEhB
TkRMRSAgICAgICAgICBEZXZpY2VIYW5kbGUKICAgICApCiB7CiAgICAgUE1PTklUT1JfQ09OVEVY
VCAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0OworICAgIFBNT05JVE9SX0NPTlNPTEUgICAg
Q29uc29sZTsKKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKIAotICAgIGlmIChD
b250ZXh0LT5EZXZpY2UgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybjsK
KyAgICBMb2coIj09PT09PiAweCVwIiwgRGV2aWNlSGFuZGxlKTsKKworICAgIEVudGVyQ3JpdGlj
YWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworICAgIGZvciAoTGlzdEVudHJ5
ID0gQ29udGV4dC0+TGlzdEhlYWQuRmxpbms7CisgICAgICAgICBMaXN0RW50cnkgIT0gJkNvbnRl
eHQtPkxpc3RIZWFkOworICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgewor
ICAgICAgICBDb25zb2xlID0gQ09OVEFJTklOR19SRUNPUkQoTGlzdEVudHJ5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9OSVRPUl9DT05TT0xFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdEVudHJ5KTsKKworICAgICAgICBpZiAoQ29uc29s
ZS0+RGV2aWNlSGFuZGxlID09IERldmljZUhhbmRsZSkKKyAgICAgICAgICAgIGdvdG8gZm91bmQ7
ICAgICAgICAKKyAgICB9CisgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRp
Y2FsU2VjdGlvbik7CiAKKyAgICBMb2coIkRldmljZUhhbmRsZSAweCVwIG5vdCBmb3VuZCIsIERl
dmljZUhhbmRsZSk7CisKKyAgICByZXR1cm4gRkFMU0U7CisgICAgCitmb3VuZDoKKyAgICBfX1Jl
bW92ZUVudHJ5TGlzdCgmQ29uc29sZS0+TGlzdEVudHJ5KTsKKyAgICAtLUNvbnRleHQtPkxpc3RD
b3VudDsKKyAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9u
KTsKKworICAgIENvbnNvbGVEZXN0cm95KENvbnNvbGUpOworCisgICAgTG9nKCI8PT09PT0iKTsK
KworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgQk9PTAorTW9uaXRvckVudW1lcmF0ZSgK
KyAgICBWT0lECisgICAgKQoreworICAgIFBNT05JVE9SX0NPTlRFWFQgICAgICAgICAgICAgICAg
ICAgIENvbnRleHQgPSAmTW9uaXRvckNvbnRleHQ7CisgICAgSERFVklORk8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGV2aWNlSW5mb1NldDsKKyAgICBTUF9ERVZJQ0VfSU5URVJGQUNFX0RB
VEEgICAgICAgICAgICBEZXZpY2VJbnRlcmZhY2VEYXRhOworICAgIFBTUF9ERVZJQ0VfSU5URVJG
QUNFX0RFVEFJTF9EQVRBX1cgIERldmljZUludGVyZmFjZURldGFpbDsKKyAgICBQTU9OSVRPUl9D
T05TT0xFICAgICAgICAgICAgICAgICAgICBDb25zb2xlOworICAgIERXT1JEICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNpemU7CisgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5kZXg7CisgICAgSFJFU1VMVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXJyb3I7CisgICAgQk9PTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzczsK
KyAgICAKICAgICBMb2coIj09PT0+Iik7CisgICAgCisgICAgRGV2aWNlSW5mb1NldCA9IFNldHVw
RGlHZXRDbGFzc0RldnMoJkdVSURfWEVOQ09OU19ERVZJQ0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERJR0NGX1BSRVNFTlQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERJR0NGX0RFVklDRUlOVEVSRkFDRSk7CisgICAgaWYgKERldmljZUluZm9TZXQgPT0gSU5WQUxJ
RF9IQU5ETEVfVkFMVUUpCisgICAgICAgIGdvdG8gZmFpbDE7CisgICAgCisgICAgRGV2aWNlSW50
ZXJmYWNlRGF0YS5jYlNpemUgPSBzaXplb2YgKFNQX0RFVklDRV9JTlRFUkZBQ0VfREFUQSk7CiAK
LSAgICBTZXRFdmVudChDb250ZXh0LT5TZXJ2ZXJFdmVudCk7Ci0gICAgTW9uaXRvcldhaXRGb3JQ
aXBlVGhyZWFkcygpOwotICAgIFdhaXRGb3JTaW5nbGVPYmplY3QoQ29udGV4dC0+U2VydmVyVGhy
ZWFkLCBJTkZJTklURSk7CisgICAgZm9yIChJbmRleCA9IDA7IFRSVUU7ICsrSW5kZXgpIHsKKyAg
ICAgICAgU3VjY2VzcyA9IFNldHVwRGlFbnVtRGV2aWNlSW50ZXJmYWNlcyhEZXZpY2VJbmZvU2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURfWEVOQ09O
U19ERVZJQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkRl
dmljZUludGVyZmFjZURhdGEpOworICAgICAgICBpZiAoIVN1Y2Nlc3MpCisgICAgICAgICAgICBi
cmVhazsKIAotICAgIENsb3NlSGFuZGxlKENvbnRleHQtPlNlcnZlckV2ZW50KTsKLSAgICBDb250
ZXh0LT5TZXJ2ZXJFdmVudCA9IE5VTEw7CisgICAgICAgIFN1Y2Nlc3MgPSBTZXR1cERpR2V0RGV2
aWNlSW50ZXJmYWNlRGV0YWlsVyhEZXZpY2VJbmZvU2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRGV2aWNlSW50ZXJmYWNlRGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAg
ICBpZiAoIVN1Y2Nlc3MgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfSU5TVUZGSUNJRU5UX0JV
RkZFUikKKyAgICAgICAgICAgIGdvdG8gZmFpbDI7CisgICAgICAgIAorICAgICAgICBEZXZpY2VJ
bnRlcmZhY2VEZXRhaWwgPSBjYWxsb2MoMSwgU2l6ZSk7CisgICAgICAgIGlmIChEZXZpY2VJbnRl
cmZhY2VEZXRhaWwgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDM7CisgICAgICAgIAor
ICAgICAgICBEZXZpY2VJbnRlcmZhY2VEZXRhaWwtPmNiU2l6ZSA9CisgICAgICAgICAgICBzaXpl
b2YgKFNQX0RFVklDRV9JTlRFUkZBQ0VfREVUQUlMX0RBVEFfVyk7CisgICAgICAgIAorICAgICAg
ICBTdWNjZXNzID0gU2V0dXBEaUdldERldmljZUludGVyZmFjZURldGFpbFcoRGV2aWNlSW5mb1Nl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZE
ZXZpY2VJbnRlcmZhY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGV2aWNlSW50ZXJmYWNlRGV0YWlsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKCFT
dWNjZXNzKQorICAgICAgICAgICAgZ290byBmYWlsNDsKIAotICAgIFNldEV2ZW50KENvbnRleHQt
PkRldmljZUV2ZW50KTsKLSAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KENvbnRleHQtPkRldmljZVRo
cmVhZCwgSU5GSU5JVEUpOworICAgICAgICBDb25zb2xlID0gQ29uc29sZUNyZWF0ZShEZXZpY2VJ
bnRlcmZhY2VEZXRhaWwtPkRldmljZVBhdGgpOworICAgICAgICBpZiAoQ29uc29sZSA9PSBOVUxM
KQorICAgICAgICAgICAgZ290byBmYWlsNTsKIAotICAgIENsb3NlSGFuZGxlKENvbnRleHQtPkRl
dmljZUV2ZW50KTsKLSAgICBDb250ZXh0LT5EZXZpY2VFdmVudCA9IE5VTEw7CisgICAgICAgIEVu
dGVyQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworICAgICAgICBf
X0luc2VydFRhaWxMaXN0KCZDb250ZXh0LT5MaXN0SGVhZCwgJkNvbnNvbGUtPkxpc3RFbnRyeSk7
CisgICAgICAgICsrQ29udGV4dC0+TGlzdENvdW50OworICAgICAgICBMZWF2ZUNyaXRpY2FsU2Vj
dGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsKIAotICAgIFNldEV2ZW50KENvbnRleHQt
Pk1vbml0b3JFdmVudCk7Ci0gICAgV2FpdEZvclNpbmdsZU9iamVjdChDb250ZXh0LT5Nb25pdG9y
VGhyZWFkLCBJTkZJTklURSk7CisgICAgICAgIGZyZWUoRGV2aWNlSW50ZXJmYWNlRGV0YWlsKTsK
IAotICAgIENsb3NlSGFuZGxlKENvbnRleHQtPk1vbml0b3JFdmVudCk7Ci0gICAgQ29udGV4dC0+
TW9uaXRvckV2ZW50ID0gTlVMTDsKKyAgICAgICAgY29udGludWU7CiAKLSAgICBEZWxldGVDcml0
aWNhbFNlY3Rpb24oJkNvbnRleHQtPkNyaXRpY2FsU2VjdGlvbik7Ci0gICAgWmVyb01lbW9yeSgm
Q29udGV4dC0+TGlzdEhlYWQsIHNpemVvZihMSVNUX0VOVFJZKSk7CisgICAgZmFpbDU6CisgICAg
ICAgIExvZygiZmFpbDUiKTsKKyAgICBmYWlsNDoKKyAgICAgICAgTG9nKCJmYWlsNCIpOwogCi0g
ICAgZnJlZShDb250ZXh0LT5EZXZpY2VQYXRoKTsKLSAgICBDb250ZXh0LT5EZXZpY2VQYXRoID0g
TlVMTDsKKyAgICAgICAgZnJlZShEZXZpY2VJbnRlcmZhY2VEZXRhaWwpOwogCi0gICAgVW5yZWdp
c3RlckRldmljZU5vdGlmaWNhdGlvbihDb250ZXh0LT5EZXZpY2VOb3RpZmljYXRpb24pOwotICAg
IENvbnRleHQtPkRldmljZU5vdGlmaWNhdGlvbiA9IE5VTEw7CisgICAgZmFpbDM6CisgICAgICAg
IExvZygiZmFpbDMiKTsKKyAgICBmYWlsMjoKKyAgICAgICAgRXJyb3IgPSBHZXRMYXN0RXJyb3Io
KTsKIAotICAgIEVDSE8oQ29udGV4dC0+RGV2aWNlLCAiXHJcbltERVRBQ0hFRF1cclxuIik7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIFBDSEFSICBNZXNzYWdlOworICAgICAgICAgICAgTWVzc2Fn
ZSA9IEdldEVycm9yTWVzc2FnZShFcnJvcik7CisgICAgICAgICAgICBMb2coImZhaWwyICglcyki
LCBNZXNzYWdlKTsKKyAgICAgICAgICAgIExvY2FsRnJlZShNZXNzYWdlKTsKKyAgICAgICAgfQor
ICAgIH0KIAotICAgIENsb3NlSGFuZGxlKENvbnRleHQtPkRldmljZSk7Ci0gICAgQ29udGV4dC0+
RGV2aWNlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgU2V0dXBEaURlc3Ryb3lEZXZpY2VJ
bmZvTGlzdChEZXZpY2VJbmZvU2V0KTsKIAogICAgIExvZygiPD09PT0iKTsKKworICAgIHJldHVy
biBUUlVFOworCitmYWlsMToKKyAgICBFcnJvciA9IEdldExhc3RFcnJvcigpOworCisgICAgewor
ICAgICAgICBQQ0hBUiAgTWVzc2FnZTsKKyAgICAgICAgTWVzc2FnZSA9IEdldEVycm9yTWVzc2Fn
ZShFcnJvcik7CisgICAgICAgIExvZygiZmFpbDEgKCVzKSIsIE1lc3NhZ2UpOworICAgICAgICBM
b2NhbEZyZWUoTWVzc2FnZSk7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0
aWMgVk9JRAorTW9uaXRvclJlbW92ZUFsbCgKKyAgICBWT0lECisgICAgKQoreworICAgIFBNT05J
VE9SX0NPTlRFWFQgICAgQ29udGV4dCA9ICZNb25pdG9yQ29udGV4dDsKKyAgICBQTU9OSVRPUl9D
T05TT0xFICAgIENvbnNvbGU7CisKKyAgICBMb2coIj09PT09PiIpOworCisgICAgZm9yICg7Oykg
eworICAgICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9u
KTsKKyAgICAgICAgaWYgKENvbnRleHQtPkxpc3RIZWFkLkZsaW5rID09ICZDb250ZXh0LT5MaXN0
SGVhZCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIENvbnNvbGUgPSBDT05UQUlOSU5H
X1JFQ09SRChDb250ZXh0LT5MaXN0SGVhZC5GbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1PTklUT1JfQ09OU09MRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExpc3RFbnRyeSk7CisKKyAgICAgICAgX19SZW1vdmVFbnRyeUxpc3QoJkNvbnNv
bGUtPkxpc3RFbnRyeSk7CisgICAgICAgIC0tQ29udGV4dC0+TGlzdENvdW50OworCisgICAgICAg
IExlYXZlQ3JpdGljYWxTZWN0aW9uKCZDb250ZXh0LT5Dcml0aWNhbFNlY3Rpb24pOworCisgICAg
ICAgIENvbnNvbGVEZXN0cm95KENvbnNvbGUpOworICAgIH0KKyAgICBMZWF2ZUNyaXRpY2FsU2Vj
dGlvbigmQ29udGV4dC0+Q3JpdGljYWxTZWN0aW9uKTsKKworICAgIExvZygiPD09PT09Iik7CiB9
CiAKIERXT1JEIFdJTkFQSQpAQCAtMTExMywxMSArMTM3NCwxMSBAQCBNb25pdG9yQ3RybEhhbmRs
ZXJFeCgKICAgICAgICAgc3dpdGNoIChFdmVudFR5cGUpIHsKICAgICAgICAgY2FzZSBEQlRfREVW
SUNFQVJSSVZBTDoKICAgICAgICAgICAgIGlmIChIZWFkZXItPmRiY2hfZGV2aWNldHlwZSA9PSBE
QlRfREVWVFlQX0RFVklDRUlOVEVSRkFDRSkgewotICAgICAgICAgICAgICAgIFBERVZfQlJPQURD
QVNUX0RFVklDRUlOVEVSRkFDRSAgSW50ZXJmYWNlID0gRXZlbnREYXRhOworICAgICAgICAgICAg
ICAgIFBERVZfQlJPQURDQVNUX0RFVklDRUlOVEVSRkFDRV9XIEludGVyZmFjZSA9IEV2ZW50RGF0
YTsKIAogICAgICAgICAgICAgICAgIGlmIChJc0VxdWFsR1VJRCgmSW50ZXJmYWNlLT5kYmNjX2Ns
YXNzZ3VpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR1VJRF9YRU5DT05TX0RF
VklDRSkpCi0gICAgICAgICAgICAgICAgICAgIFNldEV2ZW50KENvbnRleHQtPkFkZEV2ZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURfWEVOQ09OU19ERVZJQ0UpKQor
ICAgICAgICAgICAgICAgICAgICBNb25pdG9yQWRkKEludGVyZmFjZS0+ZGJjY19uYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMTI3LDggKzEzODgsNyBAQCBN
b25pdG9yQ3RybEhhbmRsZXJFeCgKICAgICAgICAgICAgIGlmIChIZWFkZXItPmRiY2hfZGV2aWNl
dHlwZSA9PSBEQlRfREVWVFlQX0hBTkRMRSkgewogICAgICAgICAgICAgICAgIFBERVZfQlJPQURD
QVNUX0hBTkRMRSBEZXZpY2UgPSBFdmVudERhdGE7CiAKLSAgICAgICAgICAgICAgICBpZiAoRGV2
aWNlLT5kYmNoX2hhbmRsZSA9PSBDb250ZXh0LT5EZXZpY2UpCi0gICAgICAgICAgICAgICAgICAg
IFNldEV2ZW50KENvbnRleHQtPlJlbW92ZUV2ZW50KTsKKyAgICAgICAgICAgICAgICBNb25pdG9y
UmVtb3ZlKERldmljZS0+ZGJjaF9oYW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTExNDMsODQgKzE0MDMsNiBAQCBNb25pdG9yQ3RybEhhbmRs
ZXJFeCgKICAgICByZXR1cm4gRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQ7CiB9CiAKLXN0YXRp
YyBCT09MCi1HZXRFeGVjdXRhYmxlKAotICAgIE9VVCBQVENIQVIgICAgICAgICAgKkV4ZWN1dGFi
bGUKLSAgICApCi17Ci0gICAgUE1PTklUT1JfQ09OVEVYVCAgICBDb250ZXh0ID0gJk1vbml0b3JD
b250ZXh0OwotICAgIERXT1JEICAgICAgICAgICAgICAgTWF4VmFsdWVMZW5ndGg7Ci0gICAgRFdP
UkQgICAgICAgICAgICAgICBFeGVjdXRhYmxlTGVuZ3RoOwotICAgIERXT1JEICAgICAgICAgICAg
ICAgVHlwZTsKLSAgICBIUkVTVUxUICAgICAgICAgICAgIEVycm9yOwotCi0gICAgRXJyb3IgPSBS
ZWdRdWVyeUluZm9LZXkoQ29udGV4dC0+UGFyYW1ldGVyc0tleSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJk1heFZhbHVlTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgaWYgKEVycm9yICE9IEVS
Uk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgU2V0TGFzdEVycm9yKEVycm9yKTsKLSAgICAgICAgZ290
byBmYWlsMTsKLSAgICB9Ci0KLSAgICBFeGVjdXRhYmxlTGVuZ3RoID0gTWF4VmFsdWVMZW5ndGgg
KyBzaXplb2YgKFRDSEFSKTsKLQotICAgICpFeGVjdXRhYmxlID0gY2FsbG9jKDEsIEV4ZWN1dGFi
bGVMZW5ndGgpOwotICAgIGlmIChFeGVjdXRhYmxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFp
bDI7Ci0KLSAgICBFcnJvciA9IFJlZ1F1ZXJ5VmFsdWVFeChDb250ZXh0LT5QYXJhbWV0ZXJzS2V5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRhYmxlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpKCpFeGVjdXRhYmxlKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmRXhlY3V0YWJsZUxlbmd0aCk7Ci0gICAgaWYgKEVy
cm9yICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgU2V0TGFzdEVycm9yKEVycm9yKTsKLSAg
ICAgICAgZ290byBmYWlsMzsKLSAgICB9Ci0KLSAgICBpZiAoVHlwZSAhPSBSRUdfU1opIHsKLSAg
ICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX0JBRF9GT1JNQVQpOwotICAgICAgICBnb3RvIGZhaWw0
OwotICAgIH0KLQotICAgIExvZygiJXMiLCAqRXhlY3V0YWJsZSk7Ci0KLSAgICByZXR1cm4gVFJV
RTsKLQotZmFpbDQ6Ci0gICAgTG9nKCJmYWlsNCIpOwotCi1mYWlsMzoKLSAgICBMb2coImZhaWwz
Iik7Ci0KLSAgICBmcmVlKCpFeGVjdXRhYmxlKTsKLQotZmFpbDI6Ci0gICAgTG9nKCJmYWlsMiIp
OwotCi1mYWlsMToKLSAgICBFcnJvciA9IEdldExhc3RFcnJvcigpOwotCi0gICAgewotICAgICAg
ICBQVENIQVIgIE1lc3NhZ2U7Ci0gICAgICAgIE1lc3NhZ2UgPSBHZXRFcnJvck1lc3NhZ2UoRXJy
b3IpOwotICAgICAgICBMb2coImZhaWwxICglcykiLCBNZXNzYWdlKTsKLSAgICAgICAgTG9jYWxG
cmVlKE1lc3NhZ2UpOwotICAgIH0KLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQogVk9JRCBXSU5B
UEkKIE1vbml0b3JNYWluKAogICAgIF9Jbl8gICAgRFdPUkQgICAgICAgICAgICAgICAgICAgYXJn
YywKQEAgLTEyMzAsMTQgKzE0MTIsMTMgQEAgTW9uaXRvck1haW4oCiAgICAgUE1PTklUT1JfQ09O
VEVYVCAgICAgICAgICAgICAgICBDb250ZXh0ID0gJk1vbml0b3JDb250ZXh0OwogICAgIERFVl9C
Uk9BRENBU1RfREVWSUNFSU5URVJGQUNFICAgSW50ZXJmYWNlOwogICAgIEhSRVNVTFQgICAgICAg
ICAgICAgICAgICAgICAgICAgRXJyb3I7Ci0gICAgQk9PTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdWNjZXNzOwogCiAgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihhcmdjKTsKICAgICBV
TlJFRkVSRU5DRURfUEFSQU1FVEVSKGFyZ3YpOwogCiAgICAgTG9nKCI9PT09PiIpOwogCi0gICAg
RXJyb3IgPSBSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLAorICAgIEVycm9yID0gUmVn
T3BlbktleUV4QShIS0VZX0xPQ0FMX01BQ0hJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
UEFSQU1FVEVSU19LRVkoX19NT0RVTEVfXyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBLRVlfUkVBRCwKQEAgLTEyNDUsMTMgKzE0MjYsMTMg
QEAgTW9uaXRvck1haW4oCiAgICAgaWYgKEVycm9yICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAg
IGdvdG8gZmFpbDE7CiAKLSAgICBDb250ZXh0LT5TZXJ2aWNlID0gUmVnaXN0ZXJTZXJ2aWNlQ3Ry
bEhhbmRsZXJFeChNT05JVE9SX05BTUUsCisgICAgQ29udGV4dC0+U2VydmljZSA9IFJlZ2lzdGVy
U2VydmljZUN0cmxIYW5kbGVyRXhBKE1PTklUT1JfTkFNRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb25pdG9yQ3RybEhhbmRsZXJFeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
ICAgICBpZiAoQ29udGV4dC0+U2VydmljZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWwyOwog
Ci0gICAgQ29udGV4dC0+RXZlbnRMb2cgPSBSZWdpc3RlckV2ZW50U291cmNlKE5VTEwsCisgICAg
Q29udGV4dC0+RXZlbnRMb2cgPSBSZWdpc3RlckV2ZW50U291cmNlQShOVUxMLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNT05JVE9SX05BTUUpOwogICAgIGlm
IChDb250ZXh0LT5FdmVudExvZyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWwzOwpAQCAtMTI2
OSwyOCArMTQ1MCw2IEBAIE1vbml0b3JNYWluKAogICAgIGlmIChDb250ZXh0LT5TdG9wRXZlbnQg
PT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsNDsKIAotICAgIENvbnRleHQtPkFkZEV2ZW50ID0g
Q3JlYXRlRXZlbnQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRS
VUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgaWYgKENvbnRleHQtPkFk
ZEV2ZW50ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDU7Ci0KLSAgICBDb250ZXh0LT5SZW1v
dmVFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUUlVFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQot
ICAgIGlmIChDb250ZXh0LT5SZW1vdmVFdmVudCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw2
OwotCi0gICAgU3VjY2VzcyA9IEdldEV4ZWN1dGFibGUoJkNvbnRleHQtPkV4ZWN1dGFibGUpOwot
ICAgIGlmICghU3VjY2VzcykKLSAgICAgICAgQ29udGV4dC0+RXhlY3V0YWJsZSA9IE5VTEw7Ci0K
LSAgICBDb250ZXh0LT5EZXZpY2UgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQogICAgIFplcm9N
ZW1vcnkoJkludGVyZmFjZSwgc2l6ZW9mIChJbnRlcmZhY2UpKTsKICAgICBJbnRlcmZhY2UuZGJj
Y19zaXplID0gc2l6ZW9mIChJbnRlcmZhY2UpOwogICAgIEludGVyZmFjZS5kYmNjX2RldmljZXR5
cGUgPSBEQlRfREVWVFlQX0RFVklDRUlOVEVSRkFDRTsKQEAgLTEzMDEsNjQgKzE0NjAsMjYgQEAg
TW9uaXRvck1haW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlcmZh
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9OT1RJRllfU0VS
VklDRV9IQU5ETEUpOwogICAgIGlmIChDb250ZXh0LT5JbnRlcmZhY2VOb3RpZmljYXRpb24gPT0g
TlVMTCkKLSAgICAgICAgZ290byBmYWlsNzsKLQotICAgIC8vIFRoZSBkZXZpY2UgbWF5IGFscmVh
ZHkgYnkgcHJlc2VudAotICAgIFNldEV2ZW50KENvbnRleHQtPkFkZEV2ZW50KTsKKyAgICAgICAg
Z290byBmYWlsNTsKIAogICAgIFJlcG9ydFN0YXR1cyhTRVJWSUNFX1JVTk5JTkcsIE5PX0VSUk9S
LCAwKTsKIAotICAgIGZvciAoOzspIHsKLSAgICAgICAgSEFORExFICBFdmVudHNbM107Ci0gICAg
ICAgIERXT1JEICAgT2JqZWN0OwotCi0gICAgICAgIEV2ZW50c1swXSA9IENvbnRleHQtPlN0b3BF
dmVudDsKLSAgICAgICAgRXZlbnRzWzFdID0gQ29udGV4dC0+QWRkRXZlbnQ7Ci0gICAgICAgIEV2
ZW50c1syXSA9IENvbnRleHQtPlJlbW92ZUV2ZW50OwotCi0gICAgICAgIExvZygid2FpdGluZyAo
JXUpLi4uIiwgQVJSQVlTSVpFKEV2ZW50cykpOwotICAgICAgICBPYmplY3QgPSBXYWl0Rm9yTXVs
dGlwbGVPYmplY3RzKEFSUkFZU0laRShFdmVudHMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV2ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
TkZJTklURSk7Ci0gICAgICAgIExvZygiYXdha2UiKTsKLQotI2RlZmluZSBXQUlUX09CSkVDVF8x
IChXQUlUX09CSkVDVF8wICsgMSkKLSNkZWZpbmUgV0FJVF9PQkpFQ1RfMiAoV0FJVF9PQkpFQ1Rf
MCArIDIpCi0KLSAgICAgICAgc3dpdGNoIChPYmplY3QpIHsKLSAgICAgICAgY2FzZSBXQUlUX09C
SkVDVF8wOgotICAgICAgICAgICAgUmVzZXRFdmVudChDb250ZXh0LT5TdG9wRXZlbnQpOwotICAg
ICAgICAgICAgZ290byBkb25lOworICAgIF9fSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb250ZXh0LT5M
aXN0SGVhZCk7CisgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigmQ29udGV4dC0+Q3JpdGlj
YWxTZWN0aW9uKTsKIAotICAgICAgICBjYXNlIFdBSVRfT0JKRUNUXzE6Ci0gICAgICAgICAgICBS
ZXNldEV2ZW50KENvbnRleHQtPkFkZEV2ZW50KTsKLSAgICAgICAgICAgIE1vbml0b3JBZGQoKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIE1vbml0b3JFbnVtZXJhdGUoKTsKIAotICAgICAgICBj
YXNlIFdBSVRfT0JKRUNUXzI6Ci0gICAgICAgICAgICBSZXNldEV2ZW50KENvbnRleHQtPlJlbW92
ZUV2ZW50KTsKLSAgICAgICAgICAgIE1vbml0b3JSZW1vdmUoKTsKKyAgICBMb2coIldhaXRpbmcu
Li4iKTsKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KENvbnRleHQtPlN0b3BFdmVudCwgSU5GSU5J
VEUpOworICAgIExvZygiV2FpdCBDb21wbGV0ZSIpOwogCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0jdW5kZWYgV0FJVF9PQkpFQ1RfMQotI3VuZGVm
IFdBSVRfT0JKRUNUXzIKLSAgICB9CisgICAgTW9uaXRvclJlbW92ZUFsbCgpOwogCi1kb25lOgot
ICAgIE1vbml0b3JSZW1vdmUoKTsKKyAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJkNvbnRleHQt
PkNyaXRpY2FsU2VjdGlvbik7CisgICAgWmVyb01lbW9yeSgmQ29udGV4dC0+TGlzdEhlYWQsIHNp
emVvZihMSVNUX0VOVFJZKSk7CiAKICAgICBVbnJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uKENv
bnRleHQtPkludGVyZmFjZU5vdGlmaWNhdGlvbik7CiAKLSAgICBmcmVlKENvbnRleHQtPkV4ZWN1
dGFibGUpOwotCi0gICAgQ2xvc2VIYW5kbGUoQ29udGV4dC0+UmVtb3ZlRXZlbnQpOwotCi0gICAg
Q2xvc2VIYW5kbGUoQ29udGV4dC0+QWRkRXZlbnQpOwotCiAgICAgQ2xvc2VIYW5kbGUoQ29udGV4
dC0+U3RvcEV2ZW50KTsKIAogICAgIFJlcG9ydFN0YXR1cyhTRVJWSUNFX1NUT1BQRUQsIE5PX0VS
Uk9SLCAwKTsKQEAgLTEzNzEsMTYgKzE0OTIsNiBAQCBkb25lOgogCiAgICAgcmV0dXJuOwogCi1m
YWlsNzoKLSAgICBMb2coImZhaWw3Iik7Ci0KLSAgICBDbG9zZUhhbmRsZShDb250ZXh0LT5SZW1v
dmVFdmVudCk7Ci0KLWZhaWw2OgotICAgIExvZygiZmFpbDYiKTsKLQotICAgIENsb3NlSGFuZGxl
KENvbnRleHQtPkFkZEV2ZW50KTsKLQogZmFpbDU6CiAgICAgTG9nKCJmYWlsNSIpOwogCkBAIC0x
NDE5LDEyICsxNTMwLDEyIEBAIE1vbml0b3JDcmVhdGUoCiB7CiAgICAgU0NfSEFORExFICAgU0NN
YW5hZ2VyOwogICAgIFNDX0hBTkRMRSAgIFNlcnZpY2U7Ci0gICAgVENIQVIgICAgICAgUGF0aFtN
QVhfUEFUSF07CisgICAgQ0hBUiAgICAgICAgUGF0aFtNQVhfUEFUSF07CiAgICAgSFJFU1VMVCAg
ICAgRXJyb3I7CiAKICAgICBMb2coIj09PT0+Iik7CiAKLSAgICBpZighR2V0TW9kdWxlRmlsZU5h
bWUoTlVMTCwgUGF0aCwgTUFYX1BBVEgpKQorICAgIGlmKCFHZXRNb2R1bGVGaWxlTmFtZUEoTlVM
TCwgUGF0aCwgTUFYX1BBVEgpKQogICAgICAgICBnb3RvIGZhaWwxOwogCiAgICAgU0NNYW5hZ2Vy
ID0gT3BlblNDTWFuYWdlcihOVUxMLApAQCAtMTU4OSw3ICsxNzAwLDcgQEAgZmFpbDE6CiB9CiAK
IGludCBDQUxMQkFDSwotX3RXaW5NYWluKAorV2luTWFpbigKICAgICBfSW5fICAgICAgICBISU5T
VEFOQ0UgICBDdXJyZW50LAogICAgIF9Jbl9vcHRfICAgIEhJTlNUQU5DRSAgIFByZXZpb3VzLAog
ICAgIF9Jbl8gICAgICAgIExQU1RSICAgICAgIENtZExpbmUsCkBAIC0xNjAyLDEwICsxNzEzLDEw
IEBAIF90V2luTWFpbigKICAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFByZXZpb3VzKTsKICAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENtZFNob3cpOwogCi0gICAgaWYgKF90Y3NsZW4oQ21k
TGluZSkgIT0gMCkgewotICAgICAgICAgaWYgKF90Y3NpY21wKENtZExpbmUsIFRFWFQoImNyZWF0
ZSIpKSA9PSAwKQorICAgIGlmIChzdHJsZW4oQ21kTGluZSkgIT0gMCkgeworICAgICAgICAgaWYg
KF9zdHJpY21wKENtZExpbmUsICJjcmVhdGUiKSA9PSAwKQogICAgICAgICAgICAgIFN1Y2Nlc3Mg
PSBNb25pdG9yQ3JlYXRlKCk7Ci0gICAgICAgICBlbHNlIGlmIChfdGNzaWNtcChDbWRMaW5lLCBU
RVhUKCJkZWxldGUiKSkgPT0gMCkKKyAgICAgICAgIGVsc2UgaWYgKF9zdHJpY21wKENtZExpbmUs
ICJkZWxldGUiKSA9PSAwKQogICAgICAgICAgICAgIFN1Y2Nlc3MgPSBNb25pdG9yRGVsZXRlKCk7
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgU3VjY2VzcyA9IEZBTFNFOwpkaWZmIC0tZ2l0
IGEvc3JjL3R0eS90dHkuYyBiL3NyYy90dHkvdHR5LmMKaW5kZXggOTRkNGY2NS4uZDYyM2MyMSAx
MDA2NDQKLS0tIGEvc3JjL3R0eS90dHkuYworKysgYi9zcmMvdHR5L3R0eS5jCkBAIC0zOSw3ICsz
OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9UVFlfU1RSRUFNIHsKICAgICBIQU5ETEUgIFdyaXRlOwog
fSBUVFlfU1RSRUFNLCAqUFRUWV9TVFJFQU07CiAKLSNkZWZpbmUgUElQRV9OQU1FIFRFWFQoIlxc
XFwuXFxwaXBlXFx4ZW5jb25zIikKKyNkZWZpbmUgUElQRV9OQU1FIFRFWFQoIlxcXFwuXFxwaXBl
XFx4ZW5jb25zXFxkZWZhdWx0IikKICNkZWZpbmUgTUFYSU1VTV9CVUZGRVJfU0laRSAxMDI0CiAK
IHR5cGVkZWYgc3RydWN0IF9UVFlfQ09OVEVYVCB7CkBAIC00MDIsMTcgKzQwMiwyMyBAQCBfdG1h
aW4oCiAgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihhcmdjKTsKICAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKGFyZ3YpOwogCisgICAgaWYgKCFXYWl0TmFtZWRQaXBlKFBJUEVfTkFNRSwgTk1Q
V0FJVF9VU0VfREVGQVVMVF9XQUlUKSkKKyAgICAgICAgRXhpdFByb2Nlc3MoMSk7CisKICAgICBD
b250ZXh0LT5EZXZpY2UuUmVhZCA9IENyZWF0ZUZpbGUoUElQRV9OQU1FLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHRU5FUklDX1JFQUQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfV1JJVEUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZJTEVfQVRUUklCVVRFX05PUk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0VORVJJQ19SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZJTEVfU0hBUkVfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUEVOX0VY
SVNUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfQVRU
UklCVVRFX05PUk1BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKIAogICAgIGlmIChDb250ZXh0LT5EZXZpY2UuUmVhZCA9PSBJTlZBTElEX0hBTkRMRV9W
QUxVRSkKICAgICAgICAgRXhpdFByb2Nlc3MoMSk7CiAKKyAgICBpZiAoIVdhaXROYW1lZFBpcGUo
UElQRV9OQU1FLCBOTVBXQUlUX1VTRV9ERUZBVUxUX1dBSVQpKQorICAgICAgICBFeGl0UHJvY2Vz
cygxKTsKKwogICAgIENvbnRleHQtPkRldmljZS5Xcml0ZSA9IENyZWF0ZUZpbGUoUElQRV9OQU1F
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VORVJJQ19XUklURSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8
IEZJTEVfU0hBUkVfV1JJVEUsCmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy5pbmYgYi9zcmMveGVu
Y29ucy5pbmYKaW5kZXggM2NiZGQ5Ni4uMzdiYzYyOCAxMDA2NDQKLS0tIGEvc3JjL3hlbmNvbnMu
aW5mCisrKyBiL3NyYy94ZW5jb25zLmluZgpAQCAtMTEzLDcgKzExMyw3IEBAIEFkZFJlZyA9IE1v
bml0b3JfUGFyYW1ldGVycwogCiBbTW9uaXRvcl9QYXJhbWV0ZXJzXQogSEtSLCJQYXJhbWV0ZXJz
IiwsMHgwMDAwMDAxMAotSEtSLCJQYXJhbWV0ZXJzIiwiRXhlY3V0YWJsZSIsMHgwMDAwMDAwMCwi
eGVuY29uc190dHlfQE1BSk9SX1ZFUlNJT05AX0BNSU5PUl9WRVJTSU9OQF9ATUlDUk9fVkVSU0lP
TkBfQEJVSUxEX05VTUJFUkAuZXhlIgorSEtSLCJQYXJhbWV0ZXJzXGRlZmF1bHQiLCJFeGVjdXRh
YmxlIiwweDAwMDAwMDAwLCJ4ZW5jb25zX3R0eV9ATUFKT1JfVkVSU0lPTkBfQE1JTk9SX1ZFUlNJ
T05AX0BNSUNST19WRVJTSU9OQF9AQlVJTERfTlVNQkVSQC5leGUiCiAKIFtNb25pdG9yX0V2ZW50
TG9nXQogQWRkUmVnPU1vbml0b3JfRXZlbnRMb2dfQWRkUmVnCi0tIAoyLjguMwoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWls
aW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:25:06 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:25:06 +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 1epEHa-0005BJ-ES; Fri, 23 Feb 2018 14:25:06 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEHa-0005BD-2Y
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:25:06 +0000
X-Inumbo-ID: 26545e4c-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 26545e4c-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:42 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185824"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:36 +0000
Message-ID: <20180223142142.12548-9-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKKiBBbGxvd3MgYSBkaWZm
ZXJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbnNvbGUgcHJvdG9jb2wgZm9yCiAgbm9uLWRl
ZmF1bHQgY29uc29sZXMKClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0
cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9jb25zb2xlLmMgICAgIHwgMTc0ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy94ZW5jb25zL2NvbnNvbGUu
aCAgICAgfCAgNDAgKy0tLS0tLS0tLS0KIHNyYy94ZW5jb25zL2NvbnNvbGVfYWJpLmggfCAgOTkg
KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy94ZW5jb25zL3Bkby5jICAgICAgICAgfCAg
NzIgKysrKysrKysrLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAyNzkgaW5zZXJ0aW9ucygr
KSwgMTA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25zL2NvbnNv
bGVfYWJpLmgKCmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9jb25zb2xlLmMgYi9zcmMveGVuY29u
cy9jb25zb2xlLmMKaW5kZXggYjlhYmU4My4uNTBmZTE0NSAxMDA3NTUKLS0tIGEvc3JjL3hlbmNv
bnMvY29uc29sZS5jCisrKyBiL3NyYy94ZW5jb25zL2NvbnNvbGUuYwpAQCAtNTMsMTEgKzUzLDEy
IEBAIHR5cGVkZWYgc3RydWN0IF9DT05TT0xFX0hBTkRMRSB7CiAgICAgUFhFTkNPTlNfU1RSRUFN
IFN0cmVhbTsKIH0gQ09OU09MRV9IQU5ETEUsICpQQ09OU09MRV9IQU5ETEU7CiAKLXN0cnVjdCBf
WEVOQ09OU19DT05TT0xFIHsKK3R5cGVkZWYgc3RydWN0IF9YRU5DT05TX0NPTlNPTEUgeworICAg
IExPTkcgICAgICAgICAgICBSZWZDb3VudDsKICAgICBQWEVOQ09OU19GRE8gICAgRmRvOwogICAg
IExJU1RfRU5UUlkgICAgICBMaXN0OwogICAgIEtTUElOX0xPQ0sgICAgICBMb2NrOwotfTsKK30g
WEVOQ09OU19DT05TT0xFLCAqUFhFTkNPTlNfQ09OU09MRTsKIAogc3RhdGljIEZPUkNFSU5MSU5F
IFBWT0lECiBfX0NvbnNvbGVBbGxvY2F0ZSgKQEAgLTEzNiw3ICsxMzcsNyBAQCBmYWlsMToKICAg
ICByZXR1cm4gTlVMTDsKIH0KIAotTlRTVEFUVVMKK3N0YXRpYyBOVFNUQVRVUwogQ29uc29sZU9w
ZW4oCiAgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZSwKICAgICBJTiAgUEZJTEVf
T0JKRUNUICAgICAgICBGaWxlT2JqZWN0CkBAIC0xNzgsNyArMTc5LDcgQEAgZmFpbDE6CiAgICAg
cmV0dXJuIHN0YXR1czsKIH0KIAotTlRTVEFUVVMKK3N0YXRpYyBOVFNUQVRVUwogQ29uc29sZUNs
b3NlKAogICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCiAgICAgSU4gIFBGSUxF
X09CSkVDVCAgICAgICAgRmlsZU9iamVjdApAQCAtMzE3LDcgKzMxOCw3IEBAIGZhaWwxOgogICAg
IHJldHVybiBzdGF0dXM7CiB9CiAKLU5UU1RBVFVTCitzdGF0aWMgTlRTVEFUVVMKIENvbnNvbGVQ
dXRRdWV1ZSgKICAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLAogICAgIElOICBQ
SVJQICAgICAgICAgICAgICAgIElycApAQCAtMzQ3LDcgKzM0OCw3IEBAIENvbnNvbGVQdXRRdWV1
ZSgKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1OVFNUQVRVUworc3RhdGljIE5UU1RBVFVTCiBD
b25zb2xlRDNUb0QwKAogICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUKICAgICAp
CkBAIC0zNjEsNyArMzYyLDcgQEAgQ29uc29sZUQzVG9EMCgKICAgICByZXR1cm4gU1RBVFVTX1NV
Q0NFU1M7CiB9CiAKLVZPSUQKK3N0YXRpYyBWT0lECiBDb25zb2xlRDBUb0QzKAogICAgIElOICBQ
WEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUKICAgICApCkBAIC00MDAsNTIgKzQwMSwxNTcgQEAg
Q29uc29sZUQwVG9EMygKICAgICBUcmFjZSgiPD09PT1cbiIpOwogfQogCi1OVFNUQVRVUwotQ29u
c29sZUNyZWF0ZSgKLSAgICBJTiAgUFhFTkNPTlNfRkRPICAgICAgICBGZG8sCi0gICAgT1VUIFBY
RU5DT05TX0NPTlNPTEUgICAgKkNvbnNvbGUKK3N0YXRpYyBWT0lECitDb25zb2xlRGVzdHJveSgK
KyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlCiAgICAgKQotewotICAgIE5UU1RB
VFVTICAgICAgICAgICAgICAgIHN0YXR1czsKLQorewogICAgIFRyYWNlKCI9PT09PlxuIik7CiAK
LSAgICAqQ29uc29sZSA9IF9fQ29uc29sZUFsbG9jYXRlKHNpemVvZihYRU5DT05TX0NPTlNPTEUp
KTsKKyAgICBBU1NFUlQoSXNMaXN0RW1wdHkoJkNvbnNvbGUtPkxpc3QpKTsKKyAgICBSdGxaZXJv
TWVtb3J5KCZDb25zb2xlLT5MaXN0LCBzaXplb2YoTElTVF9FTlRSWSkpOwogCi0gICAgc3RhdHVz
ID0gU1RBVFVTX05PX01FTU9SWTsKLSAgICBpZiAoKkNvbnNvbGUgPT0gTlVMTCkKLSAgICAgICAg
Z290byBmYWlsMTsKKyAgICBSdGxaZXJvTWVtb3J5KCZDb25zb2xlLT5Mb2NrLCBzaXplb2YoS1NQ
SU5fTE9DSykpOworCisgICAgQ29uc29sZS0+RmRvID0gTlVMTDsKIAotICAgICgqQ29uc29sZSkt
PkZkbyA9IEZkbzsKLSAgICBJbml0aWFsaXplTGlzdEhlYWQoJigqQ29uc29sZSktPkxpc3QpOwot
ICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCYoKkNvbnNvbGUpLT5Mb2NrKTsKKyAgICBBU1NFUlQo
SXNaZXJvTWVtb3J5KENvbnNvbGUsIHNpemVvZihYRU5DT05TX0NPTlNPTEUpKSk7CisgICAgX19D
b25zb2xlRnJlZShDb25zb2xlKTsKIAogICAgIFRyYWNlKCI8PT09PVxuIik7Cit9CisKK3N0YXRp
YyBOVFNUQVRVUworQ29uc29sZUFiaUFjcXVpcmUoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVf
Q09OVEVYVCAgICBDb250ZXh0CisgICAgKQoreworICAgIFBYRU5DT05TX0NPTlNPTEUgICAgICAg
ICAgICAgICAgQ29uc29sZSA9IChQWEVOQ09OU19DT05TT0xFKUNvbnRleHQ7CisKKyAgICBJbnRl
cmxvY2tlZEluY3JlbWVudCgmQ29uc29sZS0+UmVmQ291bnQpOwogCiAgICAgcmV0dXJuIFNUQVRV
U19TVUNDRVNTOworfQogCi1mYWlsMToKLSAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0
dXMpOworc3RhdGljIFZPSUQKK0NvbnNvbGVBYmlSZWxlYXNlKAorICAgIElOICBQWEVOQ09OU19D
T05TT0xFX0NPTlRFWFQgICAgQ29udGV4dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19DT05TT0xF
ICAgICAgICAgICAgICAgIENvbnNvbGUgPSAoUFhFTkNPTlNfQ09OU09MRSlDb250ZXh0OworICAg
IExPTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnQ7CiAKLSAgICByZXR1cm4gc3Rh
dHVzOworICAgIENvdW50ID0gSW50ZXJsb2NrZWREZWNyZW1lbnQoJkNvbnNvbGUtPlJlZkNvdW50
KTsKKworICAgIGlmIChDb3VudCA9PSAwKQorICAgICAgICBDb25zb2xlRGVzdHJveShDb25zb2xl
KTsKIH0KIAotVk9JRAotQ29uc29sZURlc3Ryb3koCi0gICAgSU4gIFBYRU5DT05TX0NPTlNPTEUg
ICAgQ29uc29sZQorc3RhdGljIEJPT0xFQU4KK0NvbnNvbGVBYmlJc0RlZmF1bHQoCisgICAgSU4g
IFBYRU5DT05TX0NPTlNPTEVfQ09OVEVYVCAgICBDb250ZXh0CiAgICAgKQoteworeworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoQ29udGV4dCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBOVFNUQVRVUworQ29uc29sZUFiaUQzVG9EMCgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09M
RV9DT05URVhUICAgIENvbnRleHQKKyAgICApCit7CisgICAgUFhFTkNPTlNfQ09OU09MRSAgICAg
ICAgICAgICAgICBDb25zb2xlID0gKFBYRU5DT05TX0NPTlNPTEUpQ29udGV4dDsKKworICAgIHJl
dHVybiBDb25zb2xlRDNUb0QwKENvbnNvbGUpOworfQorCitzdGF0aWMgVk9JRAorQ29uc29sZUFi
aUQwVG9EMygKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQKKyAg
ICApCit7CisgICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAgICAgICBDb25zb2xlID0gKFBY
RU5DT05TX0NPTlNPTEUpQ29udGV4dDsKKworICAgIENvbnNvbGVEMFRvRDMoQ29uc29sZSk7Cit9
CisKK3N0YXRpYyBOVFNUQVRVUworQ29uc29sZUFiaU9wZW4oCisgICAgSU4gIFBYRU5DT05TX0NP
TlNPTEVfQ09OVEVYVCAgICBDb250ZXh0LAorICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAgICAg
ICAgICAgRmlsZU9iamVjdAorICAgICkKK3sKKyAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAg
ICAgICAgIENvbnNvbGUgPSAoUFhFTkNPTlNfQ09OU09MRSlDb250ZXh0OworCisgICAgcmV0dXJu
IENvbnNvbGVPcGVuKENvbnNvbGUsIEZpbGVPYmplY3QpOworfQorCitzdGF0aWMgTlRTVEFUVVMK
K0NvbnNvbGVBYmlDbG9zZSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENv
bnRleHQsCisgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0Cisg
ICAgKQoreworICAgIFBYRU5DT05TX0NPTlNPTEUgICAgICAgICAgICAgICAgQ29uc29sZSA9IChQ
WEVOQ09OU19DT05TT0xFKUNvbnRleHQ7CisKKyAgICByZXR1cm4gQ29uc29sZUNsb3NlKENvbnNv
bGUsIEZpbGVPYmplY3QpOworfQorCitzdGF0aWMgTlRTVEFUVVMKK0NvbnNvbGVBYmlQdXRRdWV1
ZSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQsCisgICAgSU4g
IFBJUlAgICAgICAgICAgICAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUFhFTkNPTlNf
Q09OU09MRSAgICAgICAgICAgICAgICBDb25zb2xlID0gKFBYRU5DT05TX0NPTlNPTEUpQ29udGV4
dDsKKworICAgIHJldHVybiBDb25zb2xlUHV0UXVldWUoQ29uc29sZSwgSXJwKTsKK30KKworc3Rh
dGljIFhFTkNPTlNfQ09OU09MRV9BQkkgQ29uc29sZUFiaVYxID0geworICAgIE5VTEwsCisgICAg
Q29uc29sZUFiaUFjcXVpcmUsCisgICAgQ29uc29sZUFiaVJlbGVhc2UsCisgICAgQ29uc29sZUFi
aUlzRGVmYXVsdCwKKyAgICBDb25zb2xlQWJpRDNUb0QwLAorICAgIENvbnNvbGVBYmlEMFRvRDMs
CisgICAgQ29uc29sZUFiaU9wZW4sCisgICAgQ29uc29sZUFiaUNsb3NlLAorICAgIENvbnNvbGVB
YmlQdXRRdWV1ZQorfTsKKworTlRTVEFUVVMKK0NvbnNvbGVDcmVhdGUoCisgICAgSU4gIFBYRU5D
T05TX0ZETyAgICAgICAgICAgIEZkbywKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9BQkkgICAg
Q29uc29sZUFiaQorICAgICkKK3sKKyAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAgICAgQ29u
c29sZTsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworCiAgICAgVHJh
Y2UoIj09PT0+XG4iKTsKIAotICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmQ29uc29sZS0+TGlzdCkp
OwotICAgIFJ0bFplcm9NZW1vcnkoJkNvbnNvbGUtPkxpc3QsIHNpemVvZihMSVNUX0VOVFJZKSk7
CisgICAgQ29uc29sZSA9IF9fQ29uc29sZUFsbG9jYXRlKHNpemVvZihYRU5DT05TX0NPTlNPTEUp
KTsKIAotICAgIFJ0bFplcm9NZW1vcnkoJkNvbnNvbGUtPkxvY2ssIHNpemVvZihLU1BJTl9MT0NL
KSk7CisgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBpZiAoQ29uc29sZSA9PSBO
VUxMKQorICAgICAgICBnb3RvIGZhaWwxOwogCi0gICAgQ29uc29sZS0+RmRvID0gTlVMTDsKKyAg
ICBDb25zb2xlLT5SZWZDb3VudCA9IDE7CisgICAgQ29uc29sZS0+RmRvID0gRmRvOworICAgIElu
aXRpYWxpemVMaXN0SGVhZCgmQ29uc29sZS0+TGlzdCk7CisgICAgS2VJbml0aWFsaXplU3Bpbkxv
Y2soJkNvbnNvbGUtPkxvY2spOwogCi0gICAgQVNTRVJUKElzWmVyb01lbW9yeShDb25zb2xlLCBz
aXplb2YoWEVOQ09OU19DT05TT0xFKSkpOwotICAgIF9fQ29uc29sZUZyZWUoQ29uc29sZSk7Cisg
ICAgKkNvbnNvbGVBYmkgPSBDb25zb2xlQWJpVjE7CisgICAgQ29uc29sZUFiaS0+Q29udGV4dCA9
IChQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQpQ29uc29sZTsKIAogICAgIFRyYWNlKCI8PT09PVxu
Iik7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWwxOgorICAgIEVycm9yKCJm
YWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOwogfQpkaWZmIC0t
Z2l0IGEvc3JjL3hlbmNvbnMvY29uc29sZS5oIGIvc3JjL3hlbmNvbnMvY29uc29sZS5oCmluZGV4
IDEwOTRmODIuLjgxYTdjMTMgMTAwNzU1Ci0tLSBhL3NyYy94ZW5jb25zL2NvbnNvbGUuaAorKysg
Yi9zcmMveGVuY29ucy9jb25zb2xlLmgKQEAgLTM1LDQ2ICszNSwxMiBAQAogI2luY2x1ZGUgPG50
ZGRrLmg+CiAKICNpbmNsdWRlICJkcml2ZXIuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNf
Q09OU09MRSBYRU5DT05TX0NPTlNPTEUsICpQWEVOQ09OU19DT05TT0xFOworI2luY2x1ZGUgImNv
bnNvbGVfYWJpLmgiCiAKIGV4dGVybiBOVFNUQVRVUwogQ29uc29sZUNyZWF0ZSgKLSAgICBJTiAg
UFhFTkNPTlNfRkRPICAgICAgICBGZG8sCi0gICAgT1VUIFBYRU5DT05TX0NPTlNPTEUgICAgKkNv
bnNvbGUKLSAgICApOwotCi1leHRlcm4gVk9JRAotQ29uc29sZURlc3Ryb3koCi0gICAgSU4gIFBY
RU5DT05TX0NPTlNPTEUgICAgQ29uc29sZQotICAgICk7Ci0KLWV4dGVybiBOVFNUQVRVUwotQ29u
c29sZUQzVG9EMCgKLSAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlCi0gICAgKTsg
Ci0KLWV4dGVybiBWT0lECi1Db25zb2xlRDBUb0QzKAotICAgIElOICBQWEVOQ09OU19DT05TT0xF
ICAgIENvbnNvbGUKLSAgICApOwotCi1leHRlcm4gTlRTVEFUVVMKLUNvbnNvbGVPcGVuKAotICAg
IElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCi0gICAgSU4gIFBGSUxFX09CSkVDVCAg
ICAgICAgRmlsZU9iamVjdAotICAgICk7Ci0KLWV4dGVybiBOVFNUQVRVUwotQ29uc29sZUNsb3Nl
KAotICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCi0gICAgSU4gIFBGSUxFX09C
SkVDVCAgICAgICAgRmlsZU9iamVjdAotICAgICk7Ci0KLWV4dGVybiBOVFNUQVRVUwotQ29uc29s
ZVB1dFF1ZXVlKAotICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsCi0gICAgSU4g
IFBJUlAgICAgICAgICAgICAgICAgSXJwCisgICAgSU4gIFBYRU5DT05TX0ZETyAgICAgICAgICAg
IEZkbywKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9BQkkgICAgQ29uc29sZUFiaQogICAgICk7
CiAKICNlbmRpZiAgLy8gX1hFTkNPTlNfQ09OU09MRV9ICmRpZmYgLS1naXQgYS9zcmMveGVuY29u
cy9jb25zb2xlX2FiaS5oIGIvc3JjL3hlbmNvbnMvY29uc29sZV9hYmkuaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjhkODAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hl
bmNvbnMvY29uc29sZV9hYmkuaApAQCAtMCwwICsxLDk5IEBACisvKiBDb3B5cmlnaHQgKGMpIENp
dHJpeCBTeXN0ZW1zIEluYy4KKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyogd2l0aCBvciB3aXRo
b3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorKiB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorKgorKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorKiAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQorKiAgICAgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlCisqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIKKyogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORAorKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLAorKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRgorKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyogQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisqIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyogU1VD
SCBEQU1BR0UuCisqLworCisjaWZuZGVmIF9YRU5DT05TX0NPTlNPTEVfQUJJX0gKKyNkZWZpbmUg
X1hFTkNPTlNfQ09OU09MRV9BQklfSAorCisjaW5jbHVkZSA8bnRkZGsuaD4KKworI2luY2x1ZGUg
ImRyaXZlci5oIgorCit0eXBlZGVmIFBWT0lEICpQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQ7CisK
K3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQ09OU19DT05TT0xFX0FCSV9BQ1FVSVJFKSgKKyAgICBJ
TiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQKKyAgICApOworCit0eXBlZGVm
IFZPSUQKKygqWEVOQ09OU19DT05TT0xFX0FCSV9SRUxFQVNFKSgKKyAgICBJTiAgUFhFTkNPTlNf
Q09OU09MRV9DT05URVhUICAgIENvbnRleHQKKyAgICApOworCit0eXBlZGVmIEJPT0xFQU4KKygq
WEVOQ09OU19DT05TT0xFX0FCSV9JU19ERUZBVUxUKSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09M
RV9DT05URVhUICAgIENvbnRleHQKKyAgICApOworCit0eXBlZGVmIE5UU1RBVFVTCisoKlhFTkNP
TlNfQ09OU09MRV9BQklfRDNUT0QwKSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhU
ICAgIENvbnRleHQKKyAgICApOworCit0eXBlZGVmIFZPSUQKKygqWEVOQ09OU19DT05TT0xFX0FC
SV9EMFRPRDMpKAorICAgIElOICBQWEVOQ09OU19DT05TT0xFX0NPTlRFWFQgICAgQ29udGV4dAor
ICAgICk7CisKK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQ09OU19DT05TT0xFX0FCSV9PUEVOKSgK
KyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRleHQsCisgICAgSU4gIFBG
SUxFX09CSkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0CisgICAgKTsKKwordHlwZWRlZiBO
VFNUQVRVUworKCpYRU5DT05TX0NPTlNPTEVfQUJJX0NMT1NFKSgKKyAgICBJTiAgUFhFTkNPTlNf
Q09OU09MRV9DT05URVhUICAgIENvbnRleHQsCisgICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAg
ICAgICAgICBGaWxlT2JqZWN0CisgICAgKTsKKwordHlwZWRlZiBOVFNUQVRVUworKCpYRU5DT05T
X0NPTlNPTEVfQUJJX1BVVF9RVUVVRSkoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEVfQ09OVEVY
VCAgICBDb250ZXh0LAorICAgIElOICBQSVJQICAgICAgICAgICAgICAgICAgICAgICAgSXJwCisg
ICAgKTsKKwordHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfQ09OU09MRV9BQkkgeworICAgIFBYRU5D
T05TX0NPTlNPTEVfQ09OVEVYVCAgICAgICAgICAgICAgICBDb250ZXh0OworICAgIFhFTkNPTlNf
Q09OU09MRV9BQklfQUNRVUlSRSAgICAgICAgICAgICBDb25zb2xlQWJpQWNxdWlyZTsKKyAgICBY
RU5DT05TX0NPTlNPTEVfQUJJX1JFTEVBU0UgICAgICAgICAgICAgQ29uc29sZUFiaVJlbGVhc2U7
CisgICAgWEVOQ09OU19DT05TT0xFX0FCSV9JU19ERUZBVUxUICAgICAgICAgIENvbnNvbGVBYmlJ
c0RlZmF1bHQ7CisgICAgWEVOQ09OU19DT05TT0xFX0FCSV9EM1RPRDAgICAgICAgICAgICAgIENv
bnNvbGVBYmlEM1RvRDA7CisgICAgWEVOQ09OU19DT05TT0xFX0FCSV9EMFRPRDMgICAgICAgICAg
ICAgIENvbnNvbGVBYmlEMFRvRDM7CisgICAgWEVOQ09OU19DT05TT0xFX0FCSV9PUEVOICAgICAg
ICAgICAgICAgIENvbnNvbGVBYmlPcGVuOworICAgIFhFTkNPTlNfQ09OU09MRV9BQklfQ0xPU0Ug
ICAgICAgICAgICAgICBDb25zb2xlQWJpQ2xvc2U7CisgICAgWEVOQ09OU19DT05TT0xFX0FCSV9Q
VVRfUVVFVUUgICAgICAgICAgIENvbnNvbGVBYmlQdXRRdWV1ZTsKK30gWEVOQ09OU19DT05TT0xF
X0FCSSwgKlBYRU5DT05TX0NPTlNPTEVfQUJJOworCisjZGVmaW5lIFhFTkNPTlNfQ09OU09MRV9B
QkkoX01ldGhvZCwgX0FiaSwgLi4uKSAgIFwKKyAgICAoX0FiaSktPkNvbnNvbGVBYmkgIyMgX01l
dGhvZCgoX0FiaSktPkNvbnRleHQsIF9fVkFfQVJHU19fKQorCisjZW5kaWYgIC8vIF9YRU5DT05T
X0NPTlNPTEVfQUJJX0gKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL3Bkby5jIGIvc3JjL3hlbmNv
bnMvcGRvLmMKaW5kZXggMmFjZDg2YS4uNzRiZTc1OSAxMDA3NTUKLS0tIGEvc3JjL3hlbmNvbnMv
cGRvLmMKKysrIGIvc3JjL3hlbmNvbnMvcGRvLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJuYW1lcy5oIgogI2luY2x1ZGUgImZkby5oIgogI2luY2x1ZGUgInBkby5oIgorI2luY2x1ZGUg
ImNvbnNvbGVfYWJpLmgiCiAjaW5jbHVkZSAiY29uc29sZS5oIgogI2luY2x1ZGUgInRocmVhZC5o
IgogI2luY2x1ZGUgImRiZ19wcmludC5oIgpAQCAtNzEsOCArNzIsNyBAQCBzdHJ1Y3QgX1hFTkNP
TlNfUERPIHsKICAgICBYRU5CVVNfU1VTUEVORF9JTlRFUkZBQ0UgICAgU3VzcGVuZEludGVyZmFj
ZTsKICAgICBQWEVOQlVTX1NVU1BFTkRfQ0FMTEJBQ0sgICAgU3VzcGVuZENhbGxiYWNrTGF0ZTsK
IAotICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBJc0RlZmF1bHQ7Ci0gICAgUFhFTkNP
TlNfQ09OU09MRSAgICAgICAgICAgIENvbnNvbGU7CisgICAgWEVOQ09OU19DT05TT0xFX0FCSSAg
ICAgICAgIENvbnNvbGVBYmk7CiB9OwogCiBzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKQEAgLTMw
OCw3ICszMDgsNyBAQCBfX1Bkb0lzRGVmYXVsdCgKICAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBk
bwogICAgICkKIHsKLSAgICByZXR1cm4gUGRvLT5Jc0RlZmF1bHQ7CisgICAgcmV0dXJuIFhFTkNP
TlNfQ09OU09MRV9BQkkoSXNEZWZhdWx0LCAmUGRvLT5Db25zb2xlQWJpKTsKIH0KIAogQk9PTEVB
TgpAQCAtNDY2LDEwICs0NjYsNyBAQCBQZG9EM1RvRDAoCiAKICAgICBLZUxvd2VySXJxbChJcnFs
KTsKIAotICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQotICAgICAgICBzdGF0dXMgPSBDb25z
b2xlRDNUb0QwKFBkby0+Q29uc29sZSk7Ci0gICAgZWxzZQotICAgICAgICBzdGF0dXMgPSBTVEFU
VVNfU1VDQ0VTUzsKKyAgICBzdGF0dXMgPSBYRU5DT05TX0NPTlNPTEVfQUJJKEQzVG9EMCwgJlBk
by0+Q29uc29sZUFiaSk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCiAgICAgICAgIGdv
dG8gZmFpbDQ7CiAKQEAgLTUyMyw4ICs1MjAsNyBAQCBQZG9EMFRvRDMoCiAjcHJhZ21hIHByZWZh
c3Qoc3VwcHJlc3M6MjgxMjMpCiAgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUo
JlBkby0+RHgtPkxpbmssIEZBTFNFKTsKIAotICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQot
ICAgICAgICBDb25zb2xlRDBUb0QzKFBkby0+Q29uc29sZSk7CisgICAgWEVOQ09OU19DT05TT0xF
X0FCSShEMFRvRDMsICZQZG8tPkNvbnNvbGVBYmkpOwogCiAgICAgS2VSYWlzZUlycWwoRElTUEFU
Q0hfTEVWRUwsICZJcnFsKTsKIApAQCAtMTcxOCwxMCArMTcxNCw5IEBAIFBkb0Rpc3BhdGNoQ3Jl
YXRlKAogCiAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24o
SXJwKTsKIAotICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQotICAgICAgICBzdGF0dXMgPSBD
b25zb2xlT3BlbihQZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOwotICAg
IGVsc2UKLSAgICAgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CisgICAgc3RhdHVzID0gWEVO
Q09OU19DT05TT0xFX0FCSShPcGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlBkby0+Q29uc29sZUFiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNr
TG9jYXRpb24tPkZpbGVPYmplY3QpOwogCiAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0
dXM7CiAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwpAQCAtMTc0
MCwxMCArMTczNSw5IEBAIFBkb0Rpc3BhdGNoQ2xlYW51cCgKIAogICAgIFN0YWNrTG9jYXRpb24g
PSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CiAKLSAgICBpZiAoX19QZG9Jc0Rl
ZmF1bHQoUGRvKSkKLSAgICAgICAgc3RhdHVzID0gQ29uc29sZUNsb3NlKFBkby0+Q29uc29sZSwg
U3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7Ci0gICAgZWxzZQotICAgICAgICBzdGF0dXMgPSBT
VEFUVVNfU1VDQ0VTUzsKKyAgICBzdGF0dXMgPSBYRU5DT05TX0NPTlNPTEVfQUJJKENsb3NlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlBkby0+Q29uc29sZUFiaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOwog
CiAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CiAgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwpAQCAtMTc3NywxMiArMTc3MSwxMiBAQCBQZG9EaXNw
YXRjaFJlYWRXcml0ZUNvbnRyb2woCiB7CiAgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7
CiAKLSAgICBpZiAoX19QZG9Jc0RlZmF1bHQoUGRvKSkKLSAgICAgICAgc3RhdHVzID0gQ29uc29s
ZVB1dFF1ZXVlKFBkby0+Q29uc29sZSwgSXJwKTsKLSAgICBlbHNlCi0gICAgICAgIHN0YXR1cyA9
IFNUQVRVU19ERVZJQ0VfTk9UX1JFQURZOworICAgIHN0YXR1cyA9IFhFTkNPTlNfQ09OU09MRV9B
QkkoUHV0UXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUGRvLT5Db25z
b2xlQWJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXJwKTsKICAgICBpZiAo
c3RhdHVzID09IFNUQVRVU19TVUNDRVNTKQogICAgICAgICBnb3RvIGRvbmU7CisKICAgICBpZiAo
c3RhdHVzICE9IFNUQVRVU19QRU5ESU5HKQogICAgICAgICBnb3RvIGZhaWwxOwogCkBAIC0xODY1
LDkgKzE4NTksMjEgQEAgUGRvUmVzdW1lKAogICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvCiAg
ICAgKQogeworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCiAgICAgVHJhY2UoIigl
cykgPT09PT5cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKKworICAgIHN0YXR1cyA9IFhFTkNPTlNf
Q09OU09MRV9BQkkoQWNxdWlyZSwgJlBkby0+Q29uc29sZUFiaSk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CisKICAgICBUcmFjZSgiKCVzKSA8PT09
PVxuIiwgX19QZG9HZXROYW1lKFBkbykpOwogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKwor
ZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVy
biBzdGF0dXM7CiB9CiAKIFZPSUQKQEAgLTE4NzYsNiArMTg4Miw5IEBAIFBkb1N1c3BlbmQoCiAg
ICAgKQogewogICAgIFRyYWNlKCIoJXMpID09PT0+XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7CisK
KyAgICBYRU5DT05TX0NPTlNPTEVfQUJJKFJlbGVhc2UsICZQZG8tPkNvbnNvbGVBYmkpOworCiAg
ICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsKIH0KIApAQCAtMTkz
MywxMSArMTk0MiwxMCBAQCBQZG9DcmVhdGUoCiAKICAgICBEeC0+UGRvID0gUGRvOwogCi0gICAg
UGRvLT5Jc0RlZmF1bHQgPSAoRGV2aWNlID09IE5VTEwpOwotICAgIGlmIChQZG8tPklzRGVmYXVs
dCkKLSAgICAgICAgc3RhdHVzID0gQ29uc29sZUNyZWF0ZShGZG8sICZQZG8tPkNvbnNvbGUpOwor
ICAgIGlmIChEZXZpY2UgPT0gTlVMTCkKKyAgICAgICAgc3RhdHVzID0gQ29uc29sZUNyZWF0ZShG
ZG8sICZQZG8tPkNvbnNvbGVBYmkpOwogICAgIGVsc2UKLSAgICAgICAgc3RhdHVzID0gU1RBVFVT
X1NVQ0NFU1M7CisgICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOy8vIFRPRE86IGNyZWF0
ZSBmcm9udGVuZAogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3RvIGZh
aWw1OwogCkBAIC0xOTY3LDExICsxOTc1LDggQEAgZmFpbDY6CiAKICAgICAoVk9JRClfX1Bkb0Ns
ZWFyRWplY3RSZXF1ZXN0ZWQoUGRvKTsKIAotICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQot
ICAgICAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUpOwotICAgIFBkby0+Q29uc29sZSA9
IE5VTEw7Ci0KLSAgICBQZG8tPklzRGVmYXVsdCA9IEZBTFNFOworICAgIFhFTkNPTlNfQ09OU09M
RV9BQkkoUmVsZWFzZSwgJlBkby0+Q29uc29sZUFiaSk7CisgICAgUnRsWmVyb01lbW9yeSgmUGRv
LT5Db25zb2xlQWJpLCBzaXplb2YoWEVOQ09OU19DT05TT0xFX0FCSSkpOwogCiBmYWlsNToKICAg
ICBFcnJvcigiZmFpbDVcbiIpOwpAQCAtMjAzOSwxMSArMjA0NCw4IEBAIFBkb0Rlc3Ryb3koCiAK
ICAgICBEeC0+UGRvID0gTlVMTDsKIAotICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQotICAg
ICAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUpOwotICAgIFBkby0+Q29uc29sZSA9IE5V
TEw7Ci0KLSAgICBQZG8tPklzRGVmYXVsdCA9IEZBTFNFOworICAgIFhFTkNPTlNfQ09OU09MRV9B
QkkoUmVsZWFzZSwgJlBkby0+Q29uc29sZUFiaSk7CisgICAgUnRsWmVyb01lbW9yeSgmUGRvLT5D
b25zb2xlQWJpLCBzaXplb2YoWEVOQ09OU19DT05TT0xFX0FCSSkpOwogCiAgICAgUnRsRnJlZVVu
aWNvZGVTdHJpbmcoJlBkby0+RHgtPkxpbmspOwogCi0tIAoyLjguMwoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndpbi1wdi1kZXZlbCBtYWlsaW5nIGxp
c3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:26:45 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:26:45 +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 1epEJB-0005Gl-Jz; Fri, 23 Feb 2018 14:26:45 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEJB-0005Gb-1F
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:26:45 +0000
X-Inumbo-ID: 26bf1efe-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 26bf1efe-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:43 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185823"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:35 +0000
Message-ID: <20180223142142.12548-8-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKKiBBZGQgZW51bWVyYXRp
b24gdGhyZWFkIGFuZCB3YXRjaAoqIE5vbi1kZWZhdWx0IGNvbnNvbGVzIHdpbGwgZmFpbCBhbnkg
cmVhZC93cml0ZS9pb2NvbnRyb2wgSVJQcwoKU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dl
bi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW5jb25zL2Zkby5jIHwgMzE2ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3hlbmNv
bnMvcGRvLmMgfCAgNjQgKysrKysrKysrLS0KIHNyYy94ZW5jb25zL3Bkby5oIHwgICA1ICsKIDMg
ZmlsZXMgY2hhbmdlZCwgMzc2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvc3JjL3hlbmNvbnMvZmRvLmMgYi9zcmMveGVuY29ucy9mZG8uYwppbmRleCA0NWExZmRk
Li40MDQ2YWNmIDEwMDY0NAotLS0gYS9zcmMveGVuY29ucy9mZG8uYworKysgYi9zcmMveGVuY29u
cy9mZG8uYwpAQCAtODUsNiArODUsOSBAQCBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsKIAogICAgIENI
QVIgICAgICAgICAgICAgICAgICAgICAgICBWZW5kb3JOYW1lW01BWE5BTUVMRU5dOwogCisgICAg
UFhFTkNPTlNfVEhSRUFEICAgICAgICAgICAgIFNjYW5UaHJlYWQ7CisgICAgS0VWRU5UICAgICAg
ICAgICAgICAgICAgICAgIFNjYW5FdmVudDsKKyAgICBQWEVOQlVTX1NUT1JFX1dBVENIICAgICAg
ICAgU2NhbldhdGNoOwogICAgIE1VVEVYICAgICAgICAgICAgICAgICAgICAgICBNdXRleDsKICAg
ICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlczsKIApAQCAtNjUzLDYgKzY1
Niw5IEBAIGRvbmU6CiAgICAgUmVtb3ZlRW50cnlMaXN0KCZEeC0+TGlzdEVudHJ5KTsKICAgICBB
U1NFUlQzVShGZG8tPlJlZmVyZW5jZXMsICE9ICwgMCk7CiAgICAgLS1GZG8tPlJlZmVyZW5jZXM7
CisKKyAgICBpZiAoRmRvLT5TY2FuVGhyZWFkKQorICAgICAgICBUaHJlYWRXYWtlKEZkby0+U2Nh
blRocmVhZCk7CiB9CiAKIHN0YXRpYyBGT1JDRUlOTElORSBWT0lECkBAIC02OTAsNiArNjk2LDEx
MiBAQCBGZG9SZWxlYXNlTXV0ZXgoCiAgICAgICAgIEZkb0Rlc3Ryb3koRmRvKTsKIH0KIAorc3Rh
dGljIEZPUkNFSU5MSU5FIEJPT0xFQU4KK19fRmRvRW51bWVyYXRlKAorICAgIElOICBQWEVOQ09O
U19GRE8gICAgRmRvLAorICAgIElOICBQQU5TSV9TVFJJTkcgICAgRGV2aWNlcworICAgICkKK3sK
KyAgICBCT09MRUFOICAgICAgICAgICAgIE5lZWRJbnZhbGlkYXRlOworICAgIEhBTkRMRSAgICAg
ICAgICAgICAgUGFyYW1ldGVyc0tleTsKKyAgICBVTE9ORyAgICAgICAgICAgICAgIEVudW1lcmF0
ZTsKKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsKKyAgICBVTE9ORyAgICAgICAg
ICAgICAgIEluZGV4OworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgVHJh
Y2UoIj09PT0+XG4iKTsKKworICAgIE5lZWRJbnZhbGlkYXRlID0gRkFMU0U7CisKKyAgICBQYXJh
bWV0ZXJzS2V5ID0gRHJpdmVyR2V0UGFyYW1ldGVyc0tleSgpOworCisgICAgc3RhdHVzID0gUmVn
aXN0cnlRdWVyeUR3b3JkVmFsdWUoUGFyYW1ldGVyc0tleSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRW51bWVyYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmRW51bWVyYXRlKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAg
ICAgICAgRW51bWVyYXRlID0gMTsKKworICAgIGlmIChFbnVtZXJhdGUgPT0gMCkKKyAgICAgICAg
Z290byBkb25lOworCisgICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsKKworICAgIExpc3RFbnRy
eSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsKKyAgICB3aGlsZSAoTGlzdEVudHJ5ICE9ICZG
ZG8tPkR4LT5MaXN0RW50cnkpIHsKKyAgICAgICAgUExJU1RfRU5UUlkgICAgIE5leHQgPSBMaXN0
RW50cnktPkZsaW5rOworICAgICAgICBQWEVOQ09OU19EWCAgICAgRHggPSBDT05UQUlOSU5HX1JF
Q09SRChMaXN0RW50cnksIFhFTkNPTlNfRFgsIExpc3RFbnRyeSk7CisgICAgICAgIFBYRU5DT05T
X1BETyAgICBQZG8gPSBEeC0+UGRvOworCisgICAgICAgIC8vIElmIHRoZSBQRE8gaXMgdGhlIGRl
ZmF1bHQgY29uc29sZSwgaXQgd29udCBleGlzdCBpbiB0aGUKKyAgICAgICAgLy8gdGhlIGRldmlj
ZSBsaXN0LCBhcyBpdHMgc3RhdGljYWxseSBjcmVhdGVkCisgICAgICAgIGlmIChQZG9Jc0RlZmF1
bHQoUGRvKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChQZG9HZXREZXZp
Y2VQbnBTdGF0ZShQZG8pICE9IERlbGV0ZWQpIHsKKyAgICAgICAgICAgIFBDSEFSICAgICAgICAg
ICBOYW1lOworICAgICAgICAgICAgQk9PTEVBTiAgICAgICAgIE1pc3Npbmc7CisKKyAgICAgICAg
ICAgIE5hbWUgPSBQZG9HZXROYW1lKFBkbyk7CisgICAgICAgICAgICBNaXNzaW5nID0gVFJVRTsK
KworICAgICAgICAgICAgLy8gSWYgdGhlIFBETyBhbHJlYWR5IGV4aXN0cyBhbmQgaXRzIG5hbWUg
aXMgaW4gdGhlIGRldmljZSBsaXN0CisgICAgICAgICAgICAvLyB0aGVuIHdlIGRvbid0IHdhbnQg
dG8gcmVtb3ZlIGl0LgorICAgICAgICAgICAgZm9yIChJbmRleCA9IDA7IERldmljZXNbSW5kZXhd
LkJ1ZmZlciAhPSBOVUxMOyBJbmRleCsrKSB7CisgICAgICAgICAgICAgICAgUEFOU0lfU1RSSU5H
IERldmljZSA9ICZEZXZpY2VzW0luZGV4XTsKKworICAgICAgICAgICAgICAgIGlmIChEZXZpY2Ut
Pkxlbmd0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIGlmIChzdHJjbXAoTmFtZSwgRGV2aWNlLT5CdWZmZXIpID09IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgTWlzc2luZyA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICBEZXZpY2Ut
Pkxlbmd0aCA9IDA7ICAvLyBhdm9pZCBkdXBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghUGRvSXNNaXNzaW5nKFBkbykpIHsKKyAgICAgICAgICAgICAgICBpZiAoUGRvSXNFamVjdFJl
cXVlc3RlZChQZG8pKSB7CisgICAgICAgICAgICAgICAgICAgIElvUmVxdWVzdERldmljZUVqZWN0
KFBkb0dldERldmljZU9iamVjdChQZG8pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE1p
c3NpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgUGRvU2V0TWlzc2luZyhQZG8sICJkZXZpY2Ug
ZGlzYXBwZWFyZWQiKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgUERPIGhhcyBu
b3QgeWV0IGJlZW4gZW51bWVyYXRlZCB0aGVuIHdlIGNhbgorICAgICAgICAgICAgICAgICAgICAv
LyBnbyBhaGVhZCBhbmQgbWFyayBpdCBhcyBkZWxldGVkLCBvdGhlcndpc2Ugd2UgbmVlZAorICAg
ICAgICAgICAgICAgICAgICAvLyB0byBub3RpZnkgUG5QIG1hbmFnZXIgYW5kIHdhaXQgZm9yIHRo
ZSBSRU1PVkVfREVWSUNFCisgICAgICAgICAgICAgICAgICAgIC8vIElSUC4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKFBkb0dldERldmljZVBucFN0YXRlKFBkbykgPT0gUHJlc2VudCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBEZWxldGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFBkb0Rlc3Ryb3koUGRvKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5lZWRJbnZhbGlkYXRlID0g
VFJVRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIExpc3RFbnRyeSA9IE5leHQ7CisgICAgfQorCisg
ICAgLy8gV2FsayB0aGUgY2xhc3MgbGlzdCBhbmQgY3JlYXRlIFBET3MgZm9yIGFueSBuZXcgZGV2
aWNlCisgICAgZm9yIChJbmRleCA9IDA7IERldmljZXNbSW5kZXhdLkJ1ZmZlciAhPSBOVUxMOyBJ
bmRleCsrKSB7CisgICAgICAgIFBBTlNJX1NUUklORyBEZXZpY2UgPSAmRGV2aWNlc1tJbmRleF07
CisKKyAgICAgICAgaWYgKERldmljZS0+TGVuZ3RoID09IDApCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBzdGF0dXMgPSBQZG9DcmVhdGUoRmRvLCBEZXZpY2UpOworICAgICAgICBp
ZiAoTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAgICAgTmVlZEludmFsaWRhdGUgPSBUUlVF
OworICAgIH0KKworICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7CisKK2RvbmU6CisgICAgVHJh
Y2UoIjw9PT09XG4iKTsKKworICAgIHJldHVybiBOZWVkSW52YWxpZGF0ZTsKK30KKwogc3RhdGlj
IEZPUkNFSU5MSU5FIFBBTlNJX1NUUklORwogX19GZG9NdWx0aVN6VG9VcGNhc2VBbnNpKAogICAg
IElOICBQQ0hBUiAgICAgICBCdWZmZXIKQEAgLTc2OCw2ICs4ODAsMTI1IEBAIF9fRmRvRnJlZUFu
c2koCiAgICAgX19GZG9GcmVlKEFuc2kpOwogfQogCitzdGF0aWMgTlRTVEFUVVMKK0Zkb1NjYW4o
CisgICAgUFhFTkNPTlNfVEhSRUFEICAgICBTZWxmLAorICAgIFBWT0lEICAgICAgICAgICAgICAg
Q29udGV4dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19GRE8gICAgICAgIEZkbyA9IENvbnRleHQ7
CisgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVudDsKKyAgICBIQU5ETEUgICAgICAgICAgICAg
IFBhcmFtZXRlcnNLZXk7CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBU
cmFjZSgiPT09PT5cbiIpOworCisgICAgRXZlbnQgPSBUaHJlYWRHZXRFdmVudChTZWxmKTsKKwor
ICAgIFBhcmFtZXRlcnNLZXkgPSBEcml2ZXJHZXRQYXJhbWV0ZXJzS2V5KCk7CisKKyAgICBmb3Ig
KDs7KSB7CisgICAgICAgIFBDSEFSICAgICAgICAgICBCdWZmZXI7CisgICAgICAgIFBBTlNJX1NU
UklORyAgICBEZXZpY2VzOworICAgICAgICBQQU5TSV9TVFJJTkcgICAgVW5zdXBwb3J0ZWREZXZp
Y2VzOworICAgICAgICBVTE9ORyAgICAgICAgICAgSW5kZXg7CisgICAgICAgIEJPT0xFQU4gICAg
ICAgICBOZWVkSW52YWxpZGF0ZTsKKworICAgICAgICBUcmFjZSgid2FpdGluZy4uLlxuIik7CisK
KyAgICAgICAgKFZPSUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
CisgICAgICAgIEtlQ2xlYXJFdmVudChFdmVudCk7CisKKyAgICAgICAgaWYgKFRocmVhZElzQWxl
cnRlZChTZWxmKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIEl0IGlzIG5vdCBz
YWZlIHRvIHVzZSBpbnRlcmZhY2VzIGJlZm9yZSB0aGlzIHBvaW50CisgICAgICAgIGlmIChfX0Zk
b0dldERldmljZVBucFN0YXRlKEZkbykgIT0gU3RhcnRlZCkgeworICAgICAgICAgICAgS2VTZXRF
dmVudCgmRmRvLT5TY2FuRXZlbnQsIElPX05PX0lOQ1JFTUVOVCwgRkFMU0UpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUo
RGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZkby0+U3RvcmVJbnRl
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRldmljZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY29uc29sZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQnVmZmVyKTsKKyAg
ICAgICAgaWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgeworICAgICAgICAgICAgRGV2aWNlcyA9IF9f
RmRvTXVsdGlTelRvVXBjYXNlQW5zaShCdWZmZXIpOworCisgICAgICAgICAgICBYRU5CVVNfU1RP
UkUoRnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmRmRvLT5TdG9yZUludGVyZmFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgRGV2aWNlcyA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRGV2aWNl
cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBsb29wOworCisgICAgICAgIGlmIChQYXJhbWV0
ZXJzS2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IFJlZ2lzdHJ5UXVlcnlTelZh
bHVlKFBhcmFtZXRlcnNLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVW5zdXBwb3J0ZWREZXZpY2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmVW5zdXBwb3J0ZWREZXZpY2VzKTsKKyAgICAgICAgICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKQorICAgICAgICAgICAgICAgIFVuc3VwcG9ydGVkRGV2aWNlcyA9IE5VTEw7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBVbnN1cHBvcnRlZERldmljZXMgPSBOVUxMOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gTlVMTCBvdXQgYW55dGhpbmcgaW4gdGhlIERldmljZXMgbGlz
dCB0aGF0IGlzIGluIHRoZQorICAgICAgICAvLyBVbnN1cHBvcnRlZERldmljZXMgbGlzdAorICAg
ICAgICBmb3IgKEluZGV4ID0gMDsgRGV2aWNlc1tJbmRleF0uQnVmZmVyICE9IE5VTEw7IEluZGV4
KyspIHsKKyAgICAgICAgICAgIFBBTlNJX1NUUklORyAgICBEZXZpY2UgPSAmRGV2aWNlc1tJbmRl
eF07CisgICAgICAgICAgICBVTE9ORyAgICAgICAgICAgRW50cnk7CisgICAgICAgICAgICBCT09M
RUFOICAgICAgICAgU3VwcG9ydGVkOworCisgICAgICAgICAgICBTdXBwb3J0ZWQgPSBUUlVFOwor
CisgICAgICAgICAgICBmb3IgKEVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICAgVW5zdXBwb3J0
ZWREZXZpY2VzICE9IE5VTEwgJiYgVW5zdXBwb3J0ZWREZXZpY2VzW0VudHJ5XS5CdWZmZXIgIT0g
TlVMTDsKKyAgICAgICAgICAgICAgICAgRW50cnkrKykgeworICAgICAgICAgICAgICAgIGlmIChz
dHJuY21wKERldmljZS0+QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuc3Vw
cG9ydGVkRGV2aWNlc1tFbnRyeV0uQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERldmljZS0+TGVuZ3RoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnRlZCA9
IEZBTFNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghU3VwcG9ydGVkKQorICAgICAgICAgICAg
ICAgIERldmljZS0+TGVuZ3RoID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChVbnN1cHBv
cnRlZERldmljZXMgIT0gTlVMTCkKKyAgICAgICAgICAgIFJlZ2lzdHJ5RnJlZVN6VmFsdWUoVW5z
dXBwb3J0ZWREZXZpY2VzKTsKKworICAgICAgICBOZWVkSW52YWxpZGF0ZSA9IF9fRmRvRW51bWVy
YXRlKEZkbywgRGV2aWNlcyk7CisKKyAgICAgICAgX19GZG9GcmVlQW5zaShEZXZpY2VzKTsKKwor
ICAgICAgICBpZiAoTmVlZEludmFsaWRhdGUpIHsKKyAgICAgICAgICAgIE5lZWRJbnZhbGlkYXRl
ID0gRkFMU0U7CisgICAgICAgICAgICBJb0ludmFsaWRhdGVEZXZpY2VSZWxhdGlvbnMoX19GZG9H
ZXRQaHlzaWNhbERldmljZU9iamVjdChGZG8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1c1JlbGF0aW9ucyk7CisgICAgICAgIH0KKworICAgIGxvb3A6CisgICAg
ICAgIEtlU2V0RXZlbnQoJkZkby0+U2NhbkV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsK
KyAgICB9CisKKyAgICBLZVNldEV2ZW50KCZGZG8tPlNjYW5FdmVudCwgSU9fTk9fSU5DUkVNRU5U
LCBGQUxTRSk7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworICAgIHJldHVybiBTVEFUVVNfU1VD
Q0VTUzsKK30KKwogc3RhdGljIEZPUkNFSU5MSU5FIEJPT0xFQU4KIF9fRmRvTWF0Y2hEaXN0cmli
dXRpb24oCiAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCkBAIC05ODksMTUgKzEyMjAsMzkg
QEAgX19GZG9EM1RvRDAoCiAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8KICAgICApCiB7Cisg
ICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKKwogICAgIFRyYWNlKCI9PT09PlxuIik7CiAKICAg
ICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBESVNQQVRDSF9MRVZFTCk7CiAKICAg
ICAoVk9JRCkgRmRvU2V0RGlzdHJpYnV0aW9uKEZkbyk7CiAKKyAgICBzdGF0dXMgPSBYRU5CVVNf
U1RPUkUoV2F0Y2hBZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZGZG8tPlN0b3JlSW50
ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgImNvbnNvbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJl
YWRHZXRFdmVudChGZG8tPlNjYW5UaHJlYWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAm
RmRvLT5TY2FuV2F0Y2gpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgKFZPSUQpWEVOQlVTX1NUT1JFKFByaW50ZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgJkZkby0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlL2hvdHBsdWciLAorICAgICAg
ICAgICAgICAgICAgICAgICAiY29uc29sZSIsCisgICAgICAgICAgICAgICAgICAgICAgICIldSIs
CisgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCiAgICAgVHJhY2UoIjw9PT09XG4iKTsK
IAogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwx
ICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIHN0YXRpYyBG
T1JDRUlOTElORSBWT0lECkBAIC0xMDA5LDYgKzEyNjQsMTcgQEAgX19GZG9EMFRvRDMoCiAKICAg
ICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBESVNQQVRDSF9MRVZFTCk7CiAKKyAg
ICAoVk9JRClYRU5CVVNfU1RPUkUoUmVtb3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAmRmRv
LT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgImZlYXR1cmUvaG90cGx1ZyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICJjb25zb2xlIik7CisKKyAgICAoVk9JRClYRU5CVVNfU1RPUkUoV2F0Y2hSZW1vdmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICZGZG8tPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICBGZG8tPlNjYW5XYXRjaCk7CisgICAgRmRvLT5TY2FuV2F0Y2ggPSBOVUxMOworCiAg
ICAgRmRvQ2xlYXJEaXN0cmlidXRpb24oRmRvKTsKIAogICAgIFRyYWNlKCI8PT09PVxuIik7CkBA
IC0xMjIxLDE3ICsxNDg3LDMxIEBAIEZkb1N0YXJ0RGV2aWNlKAogICAgICAgICAgICAgICAgICAg
ICAgIFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuU3RhcnREZXZpY2UuQWxsb2NhdGVkUmVzb3Vy
Y2VzLAogICAgICAgICAgICAgICAgICAgICAgIFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuU3Rh
cnREZXZpY2UuQWxsb2NhdGVkUmVzb3VyY2VzVHJhbnNsYXRlZCk7CiAKLSAgICBzdGF0dXMgPSBG
ZG9EM1RvRDAoRmRvKTsKKyAgICBLZUluaXRpYWxpemVFdmVudCgmRmRvLT5TY2FuRXZlbnQsIE5v
dGlmaWNhdGlvbkV2ZW50LCBGQUxTRSk7CisKKyAgICBzdGF0dXMgPSBUaHJlYWRDcmVhdGUoRmRv
U2NhbiwgRmRvLCAmRmRvLT5TY2FuVGhyZWFkKTsKICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKICAgICAgICAgZ290byBmYWlsMjsKIAorICAgIHN0YXR1cyA9IEZkb0QzVG9EMChGZG8pOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwzOworCiAgICAg
X19GZG9TZXREZXZpY2VQbnBTdGF0ZShGZG8sIFN0YXJ0ZWQpOworICAgIFRocmVhZFdha2UoRmRv
LT5TY2FuVGhyZWFkKTsKIAogICAgIHN0YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOwogICAg
IElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKIAogICAgIHJldHVybiBz
dGF0dXM7CiAKK2ZhaWwzOgorICAgIEVycm9yKCJmYWlsM1xuIik7CisKKyAgICBUaHJlYWRBbGVy
dChGZG8tPlNjYW5UaHJlYWQpOworICAgIFRocmVhZEpvaW4oRmRvLT5TY2FuVGhyZWFkKTsKKyAg
ICBGZG8tPlNjYW5UaHJlYWQgPSBOVUxMOworCiBmYWlsMjoKICAgICBFcnJvcigiZmFpbDJcbiIp
OwogCkBAIC0xMjkyLDYgKzE1NzIsMTIgQEAgRmRvU3RvcERldmljZSgKICAgICBpZiAoX19GZG9H
ZXREZXZpY2VQb3dlclN0YXRlKEZkbykgPT0gUG93ZXJEZXZpY2VEMCkKICAgICAgICAgRmRvRDBU
b0QzKEZkbyk7CiAKKyAgICBUaHJlYWRBbGVydChGZG8tPlNjYW5UaHJlYWQpOworICAgIFRocmVh
ZEpvaW4oRmRvLT5TY2FuVGhyZWFkKTsKKyAgICBGZG8tPlNjYW5UaHJlYWQgPSBOVUxMOworCisg
ICAgUnRsWmVyb01lbW9yeSgmRmRvLT5TY2FuRXZlbnQsIHNpemVvZihLRVZFTlQpKTsKKwogICAg
IFJ0bFplcm9NZW1vcnkoJkZkby0+UmVzb3VyY2UsIHNpemVvZiAoRkRPX1JFU09VUkNFKSAqIFJF
U09VUkNFX0NPVU5UKTsKIAogICAgIF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBTdG9wcGVk
KTsKQEAgLTEzODcsNiArMTY3MywxNyBAQCBGZG9SZW1vdmVEZXZpY2UoCiAgICAgaWYgKF9fRmRv
R2V0UHJldmlvdXNEZXZpY2VQbnBTdGF0ZShGZG8pICE9IFN0YXJ0ZWQpCiAgICAgICAgIGdvdG8g
ZG9uZTsKIAorICAgIEtlQ2xlYXJFdmVudCgmRmRvLT5TY2FuRXZlbnQpOworICAgIFRocmVhZFdh
a2UoRmRvLT5TY2FuVGhyZWFkKTsKKworICAgIFRyYWNlKCJ3YWl0aW5nIGZvciBzY2FuIHRocmVh
ZFxuIik7CisKKyAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZkby0+U2NhbkV2ZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KwogICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7CiAKICAgICBMaXN0RW50cnkgPSBGZG8tPkR4
LT5MaXN0RW50cnkuRmxpbms7CkBAIC0xNDE0LDYgKzE3MTEsMTIgQEAgRmRvUmVtb3ZlRGV2aWNl
KAogICAgIGlmIChfX0Zkb0dldERldmljZVBvd2VyU3RhdGUoRmRvKSA9PSBQb3dlckRldmljZUQw
KQogICAgICAgICBGZG9EMFRvRDMoRmRvKTsKIAorICAgIFRocmVhZEFsZXJ0KEZkby0+U2NhblRo
cmVhZCk7CisgICAgVGhyZWFkSm9pbihGZG8tPlNjYW5UaHJlYWQpOworICAgIEZkby0+U2NhblRo
cmVhZCA9IE5VTEw7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlNjYW5FdmVudCwgc2l6ZW9m
KEtFVkVOVCkpOworCiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5SZXNvdXJjZSwgc2l6ZW9mIChG
RE9fUkVTT1VSQ0UpICogUkVTT1VSQ0VfQ09VTlQpOwogCiBkb25lOgpAQCAtMTQ2Myw2ICsxNzY2
LDE3IEBAIEZkb1F1ZXJ5RGV2aWNlUmVsYXRpb25zKAogICAgICAgICBnb3RvIGRvbmU7CiAgICAg
fQogCisgICAgS2VDbGVhckV2ZW50KCZGZG8tPlNjYW5FdmVudCk7CisgICAgVGhyZWFkV2FrZShG
ZG8tPlNjYW5UaHJlYWQpOworCisgICAgVHJhY2UoIndhaXRpbmcgZm9yIHNjYW4gdGhyZWFkXG4i
KTsKKworICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmRmRvLT5TY2FuRXZlbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgS2VybmVsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCiAg
ICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsKIAogICAgIENvdW50ID0gMDsKZGlmZiAtLWdpdCBh
L3NyYy94ZW5jb25zL3Bkby5jIGIvc3JjL3hlbmNvbnMvcGRvLmMKaW5kZXggNjJmMzY2Yy4uMmFj
ZDg2YSAxMDA3NTUKLS0tIGEvc3JjL3hlbmNvbnMvcGRvLmMKKysrIGIvc3JjL3hlbmNvbnMvcGRv
LmMKQEAgLTcxLDYgKzcxLDcgQEAgc3RydWN0IF9YRU5DT05TX1BETyB7CiAgICAgWEVOQlVTX1NV
U1BFTkRfSU5URVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7CiAgICAgUFhFTkJVU19TVVNQRU5E
X0NBTExCQUNLICAgIFN1c3BlbmRDYWxsYmFja0xhdGU7CiAKKyAgICBCT09MRUFOICAgICAgICAg
ICAgICAgICAgICAgSXNEZWZhdWx0OwogICAgIFBYRU5DT05TX0NPTlNPTEUgICAgICAgICAgICBD
b25zb2xlOwogfTsKIApAQCAtMjg2LDYgKzI4NywxNCBAQCBfX1Bkb0dldE5hbWUoCiAgICAgcmV0
dXJuIER4LT5OYW1lOwogfQogCitQQ0hBUgorUGRvR2V0TmFtZSgKKyAgICBJTiAgUFhFTkNPTlNf
UERPICAgIFBkbworICAgICkKK3sKKyAgICByZXR1cm4gX19QZG9HZXROYW1lKFBkbyk7Cit9CisK
IHN0YXRpYyBGT1JDRUlOTElORSBQQ0hBUgogX19QZG9HZXRWZW5kb3JOYW1lKAogICAgIElOICBQ
WEVOQ09OU19QRE8gICAgUGRvCkBAIC0yOTUsNiArMzA0LDIyIEBAIF9fUGRvR2V0VmVuZG9yTmFt
ZSgKIH0KIAogc3RhdGljIEZPUkNFSU5MSU5FIEJPT0xFQU4KK19fUGRvSXNEZWZhdWx0KAorICAg
IElOICBQWEVOQ09OU19QRE8gICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBQZG8tPklzRGVm
YXVsdDsKK30KKworQk9PTEVBTgorUGRvSXNEZWZhdWx0KAorICAgIElOICBQWEVOQ09OU19QRE8g
ICAgUGRvCisgICAgKQoreworICAgIHJldHVybiBfX1Bkb0lzRGVmYXVsdChQZG8pOworfQorCitz
dGF0aWMgRk9SQ0VJTkxJTkUgQk9PTEVBTgogX19QZG9TZXRFamVjdFJlcXVlc3RlZCgKICAgICBJ
TiAgUFhFTkNPTlNfUERPICAgIFBkbwogICAgICkKQEAgLTQ0MSw3ICs0NjYsMTAgQEAgUGRvRDNU
b0QwKAogCiAgICAgS2VMb3dlcklycWwoSXJxbCk7CiAKLSAgICBzdGF0dXMgPSBDb25zb2xlRDNU
b0QwKFBkby0+Q29uc29sZSk7CisgICAgaWYgKF9fUGRvSXNEZWZhdWx0KFBkbykpCisgICAgICAg
IHN0YXR1cyA9IENvbnNvbGVEM1RvRDAoUGRvLT5Db25zb2xlKTsKKyAgICBlbHNlCisgICAgICAg
IHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQog
ICAgICAgICBnb3RvIGZhaWw0OwogCkBAIC00OTUsNyArNTIzLDggQEAgUGRvRDBUb0QzKAogI3By
YWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQogICAgIChWT0lEKSBJb1NldERldmljZUludGVy
ZmFjZVN0YXRlKCZQZG8tPkR4LT5MaW5rLCBGQUxTRSk7CiAKLSAgICBDb25zb2xlRDBUb0QzKFBk
by0+Q29uc29sZSk7CisgICAgaWYgKF9fUGRvSXNEZWZhdWx0KFBkbykpCisgICAgICAgIENvbnNv
bGVEMFRvRDMoUGRvLT5Db25zb2xlKTsKIAogICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVM
LCAmSXJxbCk7CiAKQEAgLTE2ODksNyArMTcxOCwxMCBAQCBQZG9EaXNwYXRjaENyZWF0ZSgKIAog
ICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CiAK
LSAgICBzdGF0dXMgPSBDb25zb2xlT3BlbihQZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZp
bGVPYmplY3QpOworICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQorICAgICAgICBzdGF0dXMg
PSBDb25zb2xlT3BlbihQZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOwor
ICAgIGVsc2UKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7CiAKICAgICBJcnAtPklv
U3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKICAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05P
X0lOQ1JFTUVOVCk7CkBAIC0xNzA4LDcgKzE3NDAsMTAgQEAgUGRvRGlzcGF0Y2hDbGVhbnVwKAog
CiAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsK
IAotICAgIHN0YXR1cyA9IENvbnNvbGVDbG9zZShQZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24t
PkZpbGVPYmplY3QpOworICAgIGlmIChfX1Bkb0lzRGVmYXVsdChQZG8pKQorICAgICAgICBzdGF0
dXMgPSBDb25zb2xlQ2xvc2UoUGRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0
KTsKKyAgICBlbHNlCisgICAgICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogCiAgICAgSXJw
LT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CiAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJ
T19OT19JTkNSRU1FTlQpOwpAQCAtMTc0Miw3ICsxNzc3LDEwIEBAIFBkb0Rpc3BhdGNoUmVhZFdy
aXRlQ29udHJvbCgKIHsKICAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKIAotICAgIHN0
YXR1cyA9IENvbnNvbGVQdXRRdWV1ZShQZG8tPkNvbnNvbGUsIElycCk7CisgICAgaWYgKF9fUGRv
SXNEZWZhdWx0KFBkbykpCisgICAgICAgIHN0YXR1cyA9IENvbnNvbGVQdXRRdWV1ZShQZG8tPkNv
bnNvbGUsIElycCk7CisgICAgZWxzZQorICAgICAgICBzdGF0dXMgPSBTVEFUVVNfREVWSUNFX05P
VF9SRUFEWTsKICAgICBpZiAoc3RhdHVzID09IFNUQVRVU19TVUNDRVNTKQogICAgICAgICBnb3Rv
IGRvbmU7CiAgICAgaWYgKHN0YXR1cyAhPSBTVEFUVVNfUEVORElORykKQEAgLTE4OTUsNyArMTkz
MywxMSBAQCBQZG9DcmVhdGUoCiAKICAgICBEeC0+UGRvID0gUGRvOwogCi0gICAgc3RhdHVzID0g
Q29uc29sZUNyZWF0ZShGZG8sICZQZG8tPkNvbnNvbGUpOworICAgIFBkby0+SXNEZWZhdWx0ID0g
KERldmljZSA9PSBOVUxMKTsKKyAgICBpZiAoUGRvLT5Jc0RlZmF1bHQpCisgICAgICAgIHN0YXR1
cyA9IENvbnNvbGVDcmVhdGUoRmRvLCAmUGRvLT5Db25zb2xlKTsKKyAgICBlbHNlCisgICAgICAg
IHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQog
ICAgICAgICBnb3RvIGZhaWw1OwogCkBAIC0xOTI1LDkgKzE5NjcsMTIgQEAgZmFpbDY6CiAKICAg
ICAoVk9JRClfX1Bkb0NsZWFyRWplY3RSZXF1ZXN0ZWQoUGRvKTsKIAotICAgIENvbnNvbGVEZXN0
cm95KFBkby0+Q29uc29sZSk7CisgICAgaWYgKF9fUGRvSXNEZWZhdWx0KFBkbykpCisgICAgICAg
IENvbnNvbGVEZXN0cm95KFBkby0+Q29uc29sZSk7CiAgICAgUGRvLT5Db25zb2xlID0gTlVMTDsK
IAorICAgIFBkby0+SXNEZWZhdWx0ID0gRkFMU0U7CisKIGZhaWw1OgogICAgIEVycm9yKCJmYWls
NVxuIik7CiAKQEAgLTE5OTQsOSArMjAzOSwxMiBAQCBQZG9EZXN0cm95KAogCiAgICAgRHgtPlBk
byA9IE5VTEw7CiAKLSAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUpOworICAgIGlmIChf
X1Bkb0lzRGVmYXVsdChQZG8pKQorICAgICAgICBDb25zb2xlRGVzdHJveShQZG8tPkNvbnNvbGUp
OwogICAgIFBkby0+Q29uc29sZSA9IE5VTEw7CiAKKyAgICBQZG8tPklzRGVmYXVsdCA9IEZBTFNF
OworCiAgICAgUnRsRnJlZVVuaWNvZGVTdHJpbmcoJlBkby0+RHgtPkxpbmspOwogCiAgICAgUnRs
WmVyb01lbW9yeSgmUGRvLT5TdXNwZW5kSW50ZXJmYWNlLApkaWZmIC0tZ2l0IGEvc3JjL3hlbmNv
bnMvcGRvLmggYi9zcmMveGVuY29ucy9wZG8uaAppbmRleCAwNjA1NDgzLi44NWY3M2EzIDEwMDc1
NQotLS0gYS9zcmMveGVuY29ucy9wZG8uaAorKysgYi9zcmMveGVuY29ucy9wZG8uaApAQCAtODMs
NiArODMsMTEgQEAgUGRvR2V0RGV2aWNlT2JqZWN0KAogICAgIElOICBQWEVOQ09OU19QRE8gICAg
UGRvCiAgICAgKTsKIAorZXh0ZXJuIEJPT0xFQU4KK1Bkb0lzRGVmYXVsdCgKKyAgICBJTiAgUFhF
TkNPTlNfUERPICAgIFBkbworICAgICk7CisKIGV4dGVybiBOVFNUQVRVUwogUGRvQ3JlYXRlKAog
ICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLAotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0
Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:26:51 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:26:51 +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 1epEJH-0005Hn-M8; Fri, 23 Feb 2018 14:26:51 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEJH-0005H5-75
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:26:51 +0000
X-Inumbo-ID: 25a4bd36-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 25a4bd36-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:41 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185814"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:30 +0000
Message-ID: <20180223142142.12548-3-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 02/14 v2] Move console handlers to console.c
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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKSXNvbGF0ZSBjb25zb2xl
IGhhbmRsZXIgY29kZSBmcm9tIGZkbyBjb2RlLgpUaGlzIHdpbGwgbWFrZSB0aGUgY29uc29sZSBj
b2RlIGVhc2llciB0byBtYWludGFpbi4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9jb25zb2xlLmMgICAgICAgICAgfCAz
NDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy94ZW5jb25z
L2NvbnNvbGUuaCAgICAgICAgICB8ICA4MCArKysrKysrKysrCiBzcmMveGVuY29ucy9mZG8uYyAg
ICAgICAgICAgICAgfCAyNTEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2czIwMTUv
eGVuY29ucy94ZW5jb25zLnZjeHByb2ogfCAgIDEgKwogdnMyMDE3L3hlbmNvbnMveGVuY29ucy52
Y3hwcm9qIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDYzIGluc2VydGlvbnMoKyksIDIxMyBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9jb25zb2xlLmMKIGNy
ZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9jb25zb2xlLmgKCmRpZmYgLS1naXQgYS9zcmMv
eGVuY29ucy9jb25zb2xlLmMgYi9zcmMveGVuY29ucy9jb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMC4uODNhZTkxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy94ZW5j
b25zL2NvbnNvbGUuYwpAQCAtMCwwICsxLDM0MyBAQAorLyogQ29weXJpZ2h0IChjKSBDaXRyaXgg
U3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCisgKiB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkCisgKiB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQorICogICAgIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyCisgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQKKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCisgKiBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjZGVmaW5lIElOSVRHVUlE
IDEKKworI2luY2x1ZGUgPG50ZGRrLmg+CisjaW5jbHVkZSA8d2RtZ3VpZC5oPgorI2luY2x1ZGUg
PG50c3Ryc2FmZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZHJpdmVyLmgi
CisjaW5jbHVkZSAiY29uc29sZS5oIgorI2luY2x1ZGUgInN0cmVhbS5oIgorI2luY2x1ZGUgImRi
Z19wcmludC5oIgorI2luY2x1ZGUgImFzc2VydC5oIgorI2luY2x1ZGUgInV0aWwuaCIKKworI2Rl
ZmluZSBDT05TT0xFX1BPT0wgJ1NOT0MnCisKK3R5cGVkZWYgc3RydWN0IF9DT05TT0xFX0hBTkRM
RSB7CisgICAgTElTVF9FTlRSWSAgICAgIExpc3RFbnRyeTsKKyAgICBQRklMRV9PQkpFQ1QgICAg
RmlsZU9iamVjdDsKKyAgICBQWEVOQ09OU19TVFJFQU0gU3RyZWFtOworfSBDT05TT0xFX0hBTkRM
RSwgKlBDT05TT0xFX0hBTkRMRTsKKworc3RydWN0IF9YRU5DT05TX0NPTlNPTEUgeworICAgIFBY
RU5DT05TX0ZETyAgICBGZG87CisgICAgTElTVF9FTlRSWSAgICAgIExpc3Q7CisgICAgS1NQSU5f
TE9DSyAgICAgIExvY2s7Cit9OworCitzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQKK19fQ29uc29s
ZUFsbG9jYXRlKAorICAgIElOICBVTE9ORyAgIExlbmd0aAorICAgICkKK3sKKyAgICByZXR1cm4g
X19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgTGVuZ3RoLCBDT05TT0xFX1BPT0wp
OworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Db25zb2xlRnJlZSgKKyAgICBJTiAg
UFZPSUQgICBCdWZmZXIKKyAgICApCit7CisgICAgX19GcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBD
T05TT0xFX1BPT0wpOworfQorCitzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRAorX19Db25zb2xlRGVz
dHJveSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLAorICAgIElOICBQQ09O
U09MRV9IQU5ETEUgICAgIEhhbmRsZQorICAgICkKK3sKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1F
VEVSKENvbnNvbGUpOworCisgICAgVHJhY2UoIiVwXG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOwor
CisgICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnksIHNpemVvZihMSVNUX0VOVFJZ
KSk7CisKKyAgICBTdHJlYW1EZXN0cm95KEhhbmRsZS0+U3RyZWFtKTsKKyAgICBIYW5kbGUtPlN0
cmVhbSA9IE5VTEw7CisKKyAgICBIYW5kbGUtPkZpbGVPYmplY3QgPSBOVUxMOworCisgICAgQVNT
RVJUKElzWmVyb01lbW9yeShIYW5kbGUsIHNpemVvZihDT05TT0xFX0hBTkRMRSkpKTsKKyAgICBf
X0NvbnNvbGVGcmVlKEhhbmRsZSk7Cit9CisKK3N0YXRpYyBQQ09OU09MRV9IQU5ETEUKK19fQ29u
c29sZUZpbmRIYW5kbGUoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZSwKKyAg
ICBJTiAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0CisgICAgKQoreworICAgIEtJUlFM
ICAgICAgICAgICAgICAgICAgIElycWw7CisgICAgUExJU1RfRU5UUlkgICAgICAgICAgICAgTGlz
dEVudHJ5OworICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAgIEhhbmRsZTsKKyAgICBOVFNUQVRV
UyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBLZUFjcXVpcmVTcGluTG9jaygmQ29uc29s
ZS0+TG9jaywgJklycWwpOworCisgICAgZm9yIChMaXN0RW50cnkgPSBDb25zb2xlLT5MaXN0LkZs
aW5rOworICAgICAgICAgTGlzdEVudHJ5ICE9ICZDb25zb2xlLT5MaXN0OworICAgICAgICAgTGlz
dEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgeworICAgICAgICBIYW5kbGUgPSBDT05UQUlOSU5H
X1JFQ09SRChMaXN0RW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENP
TlNPTEVfSEFORExFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0RW50
cnkpOworCisgICAgICAgIGlmIChIYW5kbGUtPkZpbGVPYmplY3QgPT0gRmlsZU9iamVjdCkKKyAg
ICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgfQorCisgICAgc3RhdHVzID0gU1RBVFVTX1VOU1VD
Q0VTU0ZVTDsKKyAgICBnb3RvIGZhaWwxOworCitmb3VuZDoKKyAgICBLZVJlbGVhc2VTcGluTG9j
aygmQ29uc29sZS0+TG9jaywgSXJxbCk7CisKKyAgICByZXR1cm4gSGFuZGxlOworCitmYWlsMToK
KyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgS2VSZWxlYXNlU3Bp
bkxvY2soJkNvbnNvbGUtPkxvY2ssIElycWwpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK05U
U1RBVFVTCitDb25zb2xlT3BlbigKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xl
LAorICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAgIEZpbGVPYmplY3QKKyAgICApCit7CisgICAg
UENPTlNPTEVfSEFORExFICAgICAgICAgSGFuZGxlOworICAgIEtJUlFMICAgICAgICAgICAgICAg
ICAgIElycWw7CisgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAgc3RhdHVzOworCisgICAgSGFu
ZGxlID0gX19Db25zb2xlQWxsb2NhdGUoc2l6ZW9mKENPTlNPTEVfSEFORExFKSk7CisKKyAgICBz
dGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmIChIYW5kbGUgPT0gTlVMTCkKKyAgICAg
ICAgZ290byBmYWlsMTsKKworICAgIHN0YXR1cyA9IFN0cmVhbUNyZWF0ZShDb25zb2xlLT5GZG8s
ICZIYW5kbGUtPlN0cmVhbSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAg
IGdvdG8gZmFpbDI7CisKKyAgICBIYW5kbGUtPkZpbGVPYmplY3QgPSBGaWxlT2JqZWN0OworCisg
ICAgS2VBY3F1aXJlU3BpbkxvY2soJkNvbnNvbGUtPkxvY2ssICZJcnFsKTsKKyAgICBJbnNlcnRU
YWlsTGlzdCgmQ29uc29sZS0+TGlzdCwgJkhhbmRsZS0+TGlzdEVudHJ5KTsKKyAgICBLZVJlbGVh
c2VTcGluTG9jaygmQ29uc29sZS0+TG9jaywgSXJxbCk7CisKKyAgICBUcmFjZSgiJXBcbiIsIEhh
bmRsZS0+RmlsZU9iamVjdCk7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWwy
OgorICAgIEVycm9yKCJmYWlsMlxuIik7CisKKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEhhbmRs
ZSwgc2l6ZW9mKENPTlNPTEVfSEFORExFKSkpOworICAgIF9fQ29uc29sZUZyZWUoSGFuZGxlKTsK
KworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJl
dHVybiBzdGF0dXM7Cit9CisKK05UU1RBVFVTCitDb25zb2xlQ2xvc2UoCisgICAgSU4gIFBYRU5D
T05TX0NPTlNPTEUgICAgQ29uc29sZSwKKyAgICBJTiAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxl
T2JqZWN0CisgICAgKQoreworICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAgIEhhbmRsZTsKKyAg
ICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworICAgIE5UU1RBVFVTICAgICAgICAgICAg
ICAgIHN0YXR1czsKKworICAgIEhhbmRsZSA9IF9fQ29uc29sZUZpbmRIYW5kbGUoQ29uc29sZSwg
RmlsZU9iamVjdCk7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOworICAgIGlm
IChIYW5kbGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsMTsKKworICAgIEtlQWNxdWlyZVNw
aW5Mb2NrKCZDb25zb2xlLT5Mb2NrLCAmSXJxbCk7CisgICAgUmVtb3ZlRW50cnlMaXN0KCZIYW5k
bGUtPkxpc3RFbnRyeSk7CisgICAgS2VSZWxlYXNlU3BpbkxvY2soJkNvbnNvbGUtPkxvY2ssIEly
cWwpOworCisgICAgX19Db25zb2xlRGVzdHJveShDb25zb2xlLCBIYW5kbGUpOworCisgICAgcmV0
dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMToKKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4i
LCBzdGF0dXMpOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworTlRTVEFUVVMKK0NvbnNvbGVQ
dXRRdWV1ZSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLAorICAgIElOICBQ
SVJQICAgICAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04g
ICAgICBTdGFja0xvY2F0aW9uOworICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAgIEhhbmRsZTsK
KyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9u
ID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworCisgICAgSGFuZGxlID0gX19D
b25zb2xlRmluZEhhbmRsZShDb25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsKKwor
ICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7CisgICAgaWYgKEhhbmRsZSA9PSBOVUxM
KQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgc3RhdHVzID0gU3RyZWFtUHV0UXVldWUoSGFu
ZGxlLT5TdHJlYW0sIElycCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAg
IGdvdG8gZmFpbDI7CisKKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7CisKK2ZhaWwyOgorICAg
IEVycm9yKCJmYWlsMlxuIik7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIs
IHN0YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitOVFNUQVRVUworQ29uc29sZUQz
VG9EMCgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlCisgICAgKQoreyAKKyAg
ICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihDb25zb2xl
KTsKKworICAgIFRyYWNlKCI8PT09PVxuIik7CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7
Cit9CisKK1ZPSUQKK0NvbnNvbGVEMFRvRDMoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAg
Q29uc29sZQorICAgICkKK3sKKyAgICBLSVJRTCAgICAgICAgICAgICAgICAgICBJcnFsOworICAg
IExJU1RfRU5UUlkgICAgICAgICAgICAgIExpc3Q7CisgICAgUExJU1RfRU5UUlkgICAgICAgICAg
ICAgTGlzdEVudHJ5OworICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAgIEhhbmRsZTsKKworICAg
IFRyYWNlKCI9PT09PlxuIik7CisKKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkxpc3QpOworCisg
ICAgS2VBY3F1aXJlU3BpbkxvY2soJkNvbnNvbGUtPkxvY2ssICZJcnFsKTsKKworICAgIExpc3RF
bnRyeSA9IENvbnNvbGUtPkxpc3QuRmxpbms7CisgICAgaWYgKCFJc0xpc3RFbXB0eSgmQ29uc29s
ZS0+TGlzdCkpIHsKKyAgICAgICAgUmVtb3ZlRW50cnlMaXN0KCZDb25zb2xlLT5MaXN0KTsKKyAg
ICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZDb25zb2xlLT5MaXN0KTsKKyAgICAgICAgQXBwZW5k
VGFpbExpc3QoJkxpc3QsIExpc3RFbnRyeSk7CisgICAgfQorCisgICAgS2VSZWxlYXNlU3Bpbkxv
Y2soJkNvbnNvbGUtPkxvY2ssIElycWwpOworCisgICAgd2hpbGUgKCFJc0xpc3RFbXB0eSgmTGlz
dCkpIHsKKyAgICAgICAgTGlzdEVudHJ5ID0gUmVtb3ZlSGVhZExpc3QoJkxpc3QpOworICAgICAg
ICBBU1NFUlQzUChMaXN0RW50cnksICE9ICwgJkxpc3QpOworCisgICAgICAgIEhhbmRsZSA9IENP
TlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ09OU09MRV9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExpc3RFbnRyeSk7CisKKyAgICAgICAgX19Db25zb2xlRGVzdHJveShDb25zb2xlLCBIYW5kbGUp
OworICAgIH0KKworICAgIFRyYWNlKCI8PT09PVxuIik7Cit9CisKK05UU1RBVFVTCitDb25zb2xl
Q3JlYXRlKAorICAgIElOICBQWEVOQ09OU19GRE8gICAgICAgIEZkbywKKyAgICBPVVQgUFhFTkNP
TlNfQ09OU09MRSAgICAqQ29uc29sZQorICAgICkKK3sKKyAgICBOVFNUQVRVUyAgICAgICAgICAg
ICAgICBzdGF0dXM7CisKKyAgICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgKkNvbnNvbGUgPSBf
X0NvbnNvbGVBbGxvY2F0ZShzaXplb2YoWEVOQ09OU19DT05TT0xFKSk7CisKKyAgICBzdGF0dXMg
PSBTVEFUVVNfTk9fTUVNT1JZOworICAgIGlmICgqQ29uc29sZSA9PSBOVUxMKQorICAgICAgICBn
b3RvIGZhaWwxOworCisgICAgKCpDb25zb2xlKS0+RmRvID0gRmRvOworICAgIEluaXRpYWxpemVM
aXN0SGVhZCgmKCpDb25zb2xlKS0+TGlzdCk7CisgICAgS2VJbml0aWFsaXplU3BpbkxvY2soJigq
Q29uc29sZSktPkxvY2spOworCisgICAgVHJhY2UoIjw9PT09XG4iKTsKKworICAgIHJldHVybiBT
VEFUVVNfU1VDQ0VTUzsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK1ZPSUQKK0NvbnNvbGVEZXN0cm95KAor
ICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUKKyAgICApCit7CisgICAgVHJhY2Uo
Ij09PT0+XG4iKTsKKworICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmQ29uc29sZS0+TGlzdCkpOwor
ICAgIFJ0bFplcm9NZW1vcnkoJkNvbnNvbGUtPkxpc3QsIHNpemVvZihMSVNUX0VOVFJZKSk7CisK
KyAgICBSdGxaZXJvTWVtb3J5KCZDb25zb2xlLT5Mb2NrLCBzaXplb2YoS1NQSU5fTE9DSykpOwor
CisgICAgQ29uc29sZS0+RmRvID0gTlVMTDsKKworICAgIEFTU0VSVChJc1plcm9NZW1vcnkoQ29u
c29sZSwgc2l6ZW9mKFhFTkNPTlNfQ09OU09MRSkpKTsKKyAgICBfX0NvbnNvbGVGcmVlKENvbnNv
bGUpOworCisgICAgVHJhY2UoIjw9PT09XG4iKTsKK30KZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25z
L2NvbnNvbGUuaCBiL3NyYy94ZW5jb25zL2NvbnNvbGUuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi4xMDk0ZjgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hlbmNvbnMvY29u
c29sZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMg
SW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLAorICogd2l0aCBvciB3aXRob3V0IG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZQorICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlcgorICogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5ECisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAorICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyAqIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfWEVOQ09OU19DT05TT0xF
X0gKKyNkZWZpbmUgX1hFTkNPTlNfQ09OU09MRV9ICisKKyNpbmNsdWRlIDxudGRkay5oPgorCisj
aW5jbHVkZSAiZHJpdmVyLmgiCisKK3R5cGVkZWYgc3RydWN0IF9YRU5DT05TX0NPTlNPTEUgWEVO
Q09OU19DT05TT0xFLCAqUFhFTkNPTlNfQ09OU09MRTsKKworZXh0ZXJuIE5UU1RBVFVTCitDb25z
b2xlQ3JlYXRlKAorICAgIElOICBQWEVOQ09OU19GRE8gICAgICAgIEZkbywKKyAgICBPVVQgUFhF
TkNPTlNfQ09OU09MRSAgICAqQ29uc29sZQorICAgICk7CisKK2V4dGVybiBWT0lECitDb25zb2xl
RGVzdHJveSgKKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlCisgICAgKTsKKwor
ZXh0ZXJuIE5UU1RBVFVTCitDb25zb2xlRDNUb0QwKAorICAgIElOICBQWEVOQ09OU19DT05TT0xF
ICAgIENvbnNvbGUKKyAgICApOyAKKworZXh0ZXJuIFZPSUQKK0NvbnNvbGVEMFRvRDMoCisgICAg
SU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZQorICAgICk7CisKK2V4dGVybiBOVFNUQVRV
UworQ29uc29sZU9wZW4oCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZSwKKyAg
ICBJTiAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0CisgICAgKTsKKworZXh0ZXJuIE5U
U1RBVFVTCitDb25zb2xlQ2xvc2UoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29s
ZSwKKyAgICBJTiAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0CisgICAgKTsKKworZXh0
ZXJuIE5UU1RBVFVTCitDb25zb2xlUHV0UXVldWUoCisgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUg
ICAgQ29uc29sZSwKKyAgICBJTiAgUElSUCAgICAgICAgICAgICAgICBJcnAKKyAgICApOworCisj
ZW5kaWYgIC8vIF9YRU5DT05TX0NPTlNPTEVfSApkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZmRv
LmMgYi9zcmMveGVuY29ucy9mZG8uYwppbmRleCA5NDQ2NWE1Li4wMTcwZWY2IDEwMDY0NAotLS0g
YS9zcmMveGVuY29ucy9mZG8uYworKysgYi9zcmMveGVuY29ucy9mZG8uYwpAQCAtNDcsNyArNDcs
NyBAQAogI2luY2x1ZGUgImRyaXZlci5oIgogI2luY2x1ZGUgInJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiZmRvLmgiCi0jaW5jbHVkZSAic3RyZWFtLmgiCisjaW5jbHVkZSAiY29uc29sZS5oIgogI2lu
Y2x1ZGUgInRocmVhZC5oIgogI2luY2x1ZGUgIm5hbWVzLmgiCiAjaW5jbHVkZSAiZGJnX3ByaW50
LmgiCkBAIC02OSwxMiArNjksNiBAQCB0eXBlZGVmIHN0cnVjdCBfRkRPX1JFU09VUkNFIHsKICAg
ICBDTV9QQVJUSUFMX1JFU09VUkNFX0RFU0NSSVBUT1IgVHJhbnNsYXRlZDsKIH0gRkRPX1JFU09V
UkNFLCAqUEZET19SRVNPVVJDRTsKIAotdHlwZWRlZiBzdHJ1Y3QgX0ZET19IQU5ETEUgewotICAg
IExJU1RfRU5UUlkgICAgICBMaXN0RW50cnk7Ci0gICAgUEZJTEVfT0JKRUNUICAgIEZpbGVPYmpl
Y3Q7Ci0gICAgUFhFTkNPTlNfU1RSRUFNIFN0cmVhbTsKLX0gRkRPX0hBTkRMRSwgKlBGRE9fSEFO
RExFOwotCiBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsKICAgICBQWEVOQ09OU19EWCAgICAgICAgICAg
ICAgICAgRHg7CiAgICAgUERFVklDRV9PQkpFQ1QgICAgICAgICAgICAgIExvd2VyRGV2aWNlT2Jq
ZWN0OwpAQCAtOTMsOCArODcsNyBAQCBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsKIAogICAgIEZET19S
RVNPVVJDRSAgICAgICAgICAgICAgICBSZXNvdXJjZVtSRVNPVVJDRV9DT1VOVF07CiAKLSAgICBM
SVNUX0VOVFJZICAgICAgICAgICAgICAgICAgSGFuZGxlTGlzdDsKLSAgICBLU1BJTl9MT0NLICAg
ICAgICAgICAgICAgICAgSGFuZGxlTG9jazsKKyAgICBQWEVOQ09OU19DT05TT0xFICAgICAgICAg
ICAgQ29uc29sZTsKIAogICAgIFhFTkJVU19ERUJVR19JTlRFUkZBQ0UgICAgICBEZWJ1Z0ludGVy
ZmFjZTsKICAgICBYRU5CVVNfU1VTUEVORF9JTlRFUkZBQ0UgICAgU3VzcGVuZEludGVyZmFjZTsK
QEAgLTc4OCw3ICs3ODEsNyBAQCBmYWlsMToKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0
aWMgRk9SQ0VJTkxJTkUgVk9JRAorc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTCiBfX0Zkb0Qz
VG9EMCgKICAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbwogICAgICkKQEAgLTgwMCw2ICs3OTMs
OCBAQCBfX0Zkb0QzVG9EMCgKICAgICAoVk9JRCkgRmRvU2V0RGlzdHJpYnV0aW9uKEZkbyk7CiAK
ICAgICBUcmFjZSgiPD09PT1cbiIpOworCisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogfQog
CiBzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRApAQCAtODIyLDkgKzgxNywxMiBAQCBGZG9TdXNwZW5k
Q2FsbGJhY2tMYXRlKAogICAgICkKIHsKICAgICBQWEVOQ09OU19GRE8gICAgRmRvID0gQXJndW1l
bnQ7CisgICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsKIAogICAgIF9fRmRvRDBUb0QzKEZkbyk7
Ci0gICAgX19GZG9EM1RvRDAoRmRvKTsKKyAgICAKKyAgICBzdGF0dXMgPSBfX0Zkb0QzVG9EMChG
ZG8pOworICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOwogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIG11c3Qgbm90IHRvdWNoIHBhZ2VhYmxlIGNvZGUgb3IgZGF0YQpAQCAtODUzLDcgKzg1MSw5
IEBAIEZkb0QzVG9EMCgKICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKICAgICAgICAgZ290
byBmYWlsMjsKIAotICAgIF9fRmRvRDNUb0QwKEZkbyk7CisgICAgc3RhdHVzID0gX19GZG9EM1Rv
RDAoRmRvKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWls
MzsKIAogICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKFJlZ2lzdGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZGZG8tPlN1c3BlbmRJbnRlcmZhY2UsCkBAIC04NjIsNyArODYyLDcg
QEAgRmRvRDNUb0QwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZkbywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmRmRvLT5TdXNwZW5kQ2FsbGJhY2tMYXRlKTsKICAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsMzsKKyAgICAgICAgZ290byBm
YWlsNDsKIAogICAgIEtlTG93ZXJJcnFsKElycWwpOwogCkBAIC04NzMsNiArODczLDkgQEAgRmRv
RDNUb0QwKAogICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICBQb3dlclN0YXRlKTsKIAorICAgIHN0YXR1cyA9IENvbnNvbGVEM1RvRDAoRmRv
LT5Db25zb2xlKTsKKyAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsKKwogI3ByYWdtYSBw
cmVmYXN0KHN1cHByZXNzOjI4MTIzKQogICAgIChWT0lEKSBJb1NldERldmljZUludGVyZmFjZVN0
YXRlKCZEeC0+TGluaywgVFJVRSk7CiAKQEAgLTg4MCwxMSArODgzLDE0IEBAIEZkb0QzVG9EMCgK
IAogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKIAotZmFpbDM6CitmYWlsNDoKICAgICBFcnJv
cigiZmFpbDRcbiIpOwogCiAgICAgX19GZG9EMFRvRDMoRmRvKTsKIAorZmFpbDM6CisgICAgRXJy
b3IoImZhaWwzXG4iKTsKKwogICAgIFhFTkJVU19TVE9SRShSZWxlYXNlLCAmRmRvLT5TdG9yZUlu
dGVyZmFjZSk7CiAKIGZhaWwyOgpAQCAtODkyLDggKzg5OCw2IEBAIGZhaWwyOgogCiAgICAgWEVO
QlVTX1NVU1BFTkQoUmVsZWFzZSwgJkZkby0+U3VzcGVuZEludGVyZmFjZSk7CiAKLSAgICBfX0Zk
b0QwVG9EMyhGZG8pOwotCiBmYWlsMToKICAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0
dXMpOwogCkBAIC05MDIsNzcgKzkwNiw2IEBAIGZhaWwxOgogICAgIHJldHVybiBzdGF0dXM7CiB9
CiAKLXN0YXRpYyBGT1JDRUlOTElORSBWT0lECi1fX0Zkb0Rlc3Ryb3lIYW5kbGUoCi0gICAgSU4g
IFBYRU5DT05TX0ZETyAgICBGZG8sCi0gICAgSU4gIFBGRE9fSEFORExFICAgICBIYW5kbGUKLSAg
ICApCi17Ci0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGZG8pOwotCi0gICAgVHJhY2UoIiVw
XG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOwotCi0gICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5M
aXN0RW50cnksIHNpemVvZiAoTElTVF9FTlRSWSkpOwotCi0gICAgU3RyZWFtRGVzdHJveShIYW5k
bGUtPlN0cmVhbSk7Ci0gICAgSGFuZGxlLT5TdHJlYW0gPSBOVUxMOwotCi0gICAgSGFuZGxlLT5G
aWxlT2JqZWN0ID0gTlVMTDsKLQotICAgIEFTU0VSVChJc1plcm9NZW1vcnkoSGFuZGxlLCBzaXpl
b2YgKEZET19IQU5ETEUpKSk7Ci0gICAgX19GZG9GcmVlKEhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBW
T0lECi1GZG9EZXN0cm95SGFuZGxlKAotICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLAotICAg
IElOICBQRkRPX0hBTkRMRSAgICAgSGFuZGxlCi0gICAgKQotewotICAgIEtJUlFMICAgICAgICAg
ICAgICAgSXJxbDsKLQotICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJ
cnFsKTsKLSAgICBSZW1vdmVFbnRyeUxpc3QoJkhhbmRsZS0+TGlzdEVudHJ5KTsKLSAgICBLZVJl
bGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsKLQotICAgIF9fRmRvRGVzdHJv
eUhhbmRsZShGZG8sIEhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBWT0lECi1GZG9EZXN0cm95QWxsSGFu
ZGxlcygKLSAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbwotICAgICkKLXsKLSAgICBLSVJRTCAg
ICAgICAgICAgICAgIElycWw7Ci0gICAgTElTVF9FTlRSWSAgICAgICAgICBMaXN0OwotICAgIFBM
SVNUX0VOVFJZICAgICAgICAgTGlzdEVudHJ5OwotICAgIFBGRE9fSEFORExFICAgICAgICAgSGFu
ZGxlOwotCi0gICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsKLQotICAgIEtlQWNxdWlyZVNw
aW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJcnFsKTsKLQotICAgIExpc3RFbnRyeSA9IEZkby0+
SGFuZGxlTGlzdC5GbGluazsKLSAgICBpZiAoIUlzTGlzdEVtcHR5KCZGZG8tPkhhbmRsZUxpc3Qp
KSB7Ci0gICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRmRvLT5IYW5kbGVMaXN0KTsKLSAgICAgICAg
SW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkhhbmRsZUxpc3QpOwotICAgICAgICBBcHBlbmRUYWls
TGlzdCgmTGlzdCwgTGlzdEVudHJ5KTsKLSAgICB9Ci0KLSAgICBLZVJlbGVhc2VTcGluTG9jaygm
RmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsKLQotICAgIHdoaWxlICghSXNMaXN0RW1wdHkoJkxpc3Qp
KSB7Ci0gICAgICAgIExpc3RFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZMaXN0KTsKLSAgICAgICAg
QVNTRVJUM1AoTGlzdEVudHJ5LCAhPSwgJkxpc3QpOwotCi0gICAgICAgIEhhbmRsZSA9IENPTlRB
SU5JTkdfUkVDT1JEKExpc3RFbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRkRPX0hBTkRMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdEVu
dHJ5KTsKLQotICAgICAgICBfX0Zkb0Rlc3Ryb3lIYW5kbGUoRmRvLCBIYW5kbGUpOwotICAgIH0K
LX0KLQogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCB0b3VjaCBwYWdlYWJsZSBjb2RlIG9yIGRh
dGEKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lECiBGZG9EMFRvRDMoCkBAIC05OTEsNyAr
OTI0LDcgQEAgRmRvRDBUb0QzKAogI3ByYWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQogICAg
IChWT0lEKSBJb1NldERldmljZUludGVyZmFjZVN0YXRlKCZEeC0+TGluaywgRkFMU0UpOwogCi0g
ICAgRmRvRGVzdHJveUFsbEhhbmRsZXMoRmRvKTsKKyAgICBDb25zb2xlRDBUb0QzKEZkby0+Q29u
c29sZSk7CiAKICAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0gUG93ZXJEZXZpY2VEMzsKICAg
ICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2JqZWN0LApAQCAtMjE2Niw4OCArMjA5
OSw2IEBAIGRvbmU6CiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotc3RhdGljIE5UU1RBVFVTCi1G
ZG9DcmVhdGVIYW5kbGUoCi0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCi0gICAgSU4gIFBG
SUxFX09CSkVDVCAgICBGaWxlT2JqZWN0Ci0gICAgKQotewotICAgIFBGRE9fSEFORExFICAgICAg
ICAgSGFuZGxlOwotICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsKLSAgICBOVFNUQVRVUyAg
ICAgICAgICAgIHN0YXR1czsKLQotICAgIEhhbmRsZSA9IF9fRmRvQWxsb2NhdGUoc2l6ZW9mIChG
RE9fSEFORExFKSk7Ci0KLSAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOwotICAgIGlmIChI
YW5kbGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMTsKLQotICAgIHN0YXR1cyA9IFN0cmVh
bUNyZWF0ZShGZG8sICZIYW5kbGUtPlN0cmVhbSk7Ci0gICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1
cykpCi0gICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICBIYW5kbGUtPkZpbGVPYmplY3QgPSBGaWxl
T2JqZWN0OwotCi0gICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+SGFuZGxlTG9jaywgJklycWwp
OwotICAgIEluc2VydFRhaWxMaXN0KCZGZG8tPkhhbmRsZUxpc3QsICZIYW5kbGUtPkxpc3RFbnRy
eSk7Ci0gICAgS2VSZWxlYXNlU3BpbkxvY2soJkZkby0+SGFuZGxlTG9jaywgSXJxbCk7Ci0KLSAg
ICBUcmFjZSgiJXBcbiIsIEhhbmRsZS0+RmlsZU9iamVjdCk7Ci0KLSAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7Ci0KLWZhaWwyOgotICAgIEVycm9yKCJmYWlsMlxuIik7Ci0KLSAgICBBU1NFUlQo
SXNaZXJvTWVtb3J5KEhhbmRsZSwgc2l6ZW9mIChGRE9fSEFORExFKSkpOwotICAgIF9fRmRvRnJl
ZShIYW5kbGUpOwotCi1mYWlsMToKLSAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMp
OwotCi0gICAgcmV0dXJuIHN0YXR1czsKLX0KLQotc3RhdGljIFBGRE9fSEFORExFCi1GZG9GaW5k
SGFuZGxlKAotICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLAotICAgIElOICBQRklMRV9PQkpF
Q1QgICAgRmlsZU9iamVjdAotICAgICkKLXsKLSAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7
Ci0gICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7Ci0gICAgUEZET19IQU5ETEUgICAg
ICAgICBIYW5kbGU7Ci0gICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7Ci0KLSAgICBLZUFj
cXVpcmVTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCAmSXJxbCk7Ci0KLSAgICBmb3IgKExpc3RF
bnRyeSA9IEZkby0+SGFuZGxlTGlzdC5GbGluazsKLSAgICAgICAgIExpc3RFbnRyeSAhPSAmRmRv
LT5IYW5kbGVMaXN0OwotICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgewot
ICAgICAgICBIYW5kbGUgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZET19IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExpc3RFbnRyeSk7Ci0KLSAgICAgICAgaWYgKEhhbmRsZS0+RmlsZU9i
amVjdCA9PSBGaWxlT2JqZWN0KQotICAgICAgICAgICAgZ290byBmb3VuZDsKLSAgICB9Ci0KLSAg
ICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOwotICAgIGdvdG8gZmFpbDE7Ci0KLWZvdW5k
OgotICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOwotCi0gICAg
cmV0dXJuIEhhbmRsZTsKLQotZmFpbDE6Ci0gICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3Rh
dHVzKTsKLQotICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOwot
Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRV
UwogRmRvRGlzcGF0Y2hDcmVhdGUoCiAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCkBAIC0y
MjU5LDcgKzIxMTAsNyBAQCBGZG9EaXNwYXRjaENyZWF0ZSgKIAogICAgIFN0YWNrTG9jYXRpb24g
PSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CiAKLSAgICBzdGF0dXMgPSBGZG9D
cmVhdGVIYW5kbGUoRmRvLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsKKyAgICBzdGF0dXMg
PSBDb25zb2xlT3BlbihGZG8tPkNvbnNvbGUsIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOwog
CiAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7CiAgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwpAQCAtMjI3NCwyNyArMjEyNSwxMSBAQCBGZG9EaXNw
YXRjaENsZWFudXAoCiAgICAgKQogewogICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2Nh
dGlvbjsKLSAgICBQRkRPX0hBTkRMRSAgICAgICAgIEhhbmRsZTsKICAgICBOVFNUQVRVUyAgICAg
ICAgICAgIHN0YXR1czsKIAogICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uKElycCk7CiAKLSAgICBIYW5kbGUgPSBGZG9GaW5kSGFuZGxlKEZkbywgU3RhY2tM
b2NhdGlvbi0+RmlsZU9iamVjdCk7Ci0KLSAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVM
OwotICAgIGlmIChIYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMTsKLQotICAgIEZk
b0Rlc3Ryb3lIYW5kbGUoRmRvLCBIYW5kbGUpOwotICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNT
OwotCi0gICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7Ci0gICAgSW9Db21wbGV0ZVJl
cXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOwotCi0gICAgcmV0dXJuIHN0YXR1czsKLQotZmFp
bDE6Ci0gICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBD
b25zb2xlQ2xvc2UoRmRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsKIAog
ICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOwogICAgIElvQ29tcGxldGVSZXF1ZXN0
KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKQEAgLTIzMjYsMjkgKzIxNjEsMTQgQEAgRmRvRGlzcGF0
Y2hSZWFkV3JpdGUoCiAgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKICAgICApCiB7Ci0gICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOwotICAgIFBGRE9fSEFORExFICAgICAg
ICAgSGFuZGxlOwogICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwogCi0gICAgU3RhY2tM
b2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKLQotICAgIEhhbmRs
ZSA9IEZkb0ZpbmRIYW5kbGUoRmRvLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsKLQotICAg
IHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7Ci0gICAgaWYgKEhhbmRsZSA9PSBOVUxMKQor
ICAgIHN0YXR1cyA9IENvbnNvbGVQdXRRdWV1ZShGZG8tPkNvbnNvbGUsIElycCk7CisgICAgaWYg
KHN0YXR1cyAhPSBTVEFUVVNfUEVORElORykKICAgICAgICAgZ290byBmYWlsMTsKIAotICAgIElv
TWFya0lycFBlbmRpbmcoSXJwKTsKLQotICAgIHN0YXR1cyA9IFN0cmVhbVB1dFF1ZXVlKEhhbmRs
ZS0+U3RyZWFtLCBJcnApOwotICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBn
b3RvIGZhaWwyOwotCiAgICAgcmV0dXJuIFNUQVRVU19QRU5ESU5HOwogCi1mYWlsMjoKLSAgICBF
cnJvcigiZmFpbDJcbiIpOwotCiBmYWlsMToKICAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBz
dGF0dXMpOwogCkBAIC0yNjQxLDggKzI0NjEsOSBAQCBGZG9DcmVhdGUoCiAgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCiAgICAgICAgIGdvdG8gZmFpbDExOwogCi0gICAgSW5pdGlhbGl6ZUxp
c3RIZWFkKCZGZG8tPkhhbmRsZUxpc3QpOwotICAgIEtlSW5pdGlhbGl6ZVNwaW5Mb2NrKCZGZG8t
PkhhbmRsZUxvY2spOworICAgIHN0YXR1cyA9IENvbnNvbGVDcmVhdGUoRmRvLCAmRmRvLT5Db25z
b2xlKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMTI7
CiAKICAgICBGdW5jdGlvbkRldmljZU9iamVjdC0+RmxhZ3MgfD0gRE9fQlVGRkVSRURfSU87CiAK
QEAgLTI2NTUsMTEgKzI0NzYsMTcgQEAgRmRvQ3JlYXRlKAogICAgIEZ1bmN0aW9uRGV2aWNlT2Jq
ZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJQUxJWklORzsKICAgICByZXR1cm4gU1RBVFVT
X1NVQ0NFU1M7CiAKK2ZhaWwxMjoKKyAgICBFcnJvcigiZmFpbDEyXG4iKTsKKworICAgIFJ0bFpl
cm9NZW1vcnkoJkZkby0+Q29uc29sZUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVv
ZihYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UpKTsKKwogZmFpbDExOgogICAgIEVycm9yKCJmYWls
MTFcbiIpOwogCi0gICAgUnRsWmVyb01lbW9yeSgmRmRvLT5Db25zb2xlSW50ZXJmYWNlLAotICAg
ICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UpKTsKKyAgICBS
dGxaZXJvTWVtb3J5KCZGZG8tPlN0b3JlSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6
ZW9mIChYRU5CVVNfU1RPUkVfSU5URVJGQUNFKSk7CiAKIGZhaWwxMDoKICAgICBFcnJvcigiZmFp
bDEwXG4iKTsKQEAgLTI3NDQsMTAgKzI1NzEsOCBAQCBGZG9EZXN0cm95KAogCiAgICAgRHgtPkZk
byA9IE5VTEw7CiAKLSAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkhhbmRsZUxvY2ssIHNpemVvZiAo
S1NQSU5fTE9DSykpOwotCi0gICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPkhhbmRsZUxpc3Qp
KTsKLSAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkhhbmRsZUxpc3QsIHNpemVvZiAoTElTVF9FTlRS
WSkpOworICAgIENvbnNvbGVEZXN0cm95KEZkby0+Q29uc29sZSk7CisgICAgRmRvLT5Db25zb2xl
ID0gTlVMTDsKIAogICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+Q29uc29sZUludGVyZmFjZSwKICAg
ICAgICAgICAgICAgICAgIHNpemVvZiAoWEVOQlVTX0NPTlNPTEVfSU5URVJGQUNFKSk7CmRpZmYg
LS1naXQgYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2ogYi92czIwMTUveGVuY29ucy94
ZW5jb25zLnZjeHByb2oKaW5kZXggZmY2NWQ5Zi4uMTJmNWI3MCAxMDA2NDQKLS0tIGEvdnMyMDE1
L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCisrKyBiL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4
cHJvagpAQCAtNjcsNiArNjcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3Jj
L3hlbmNvbnMvZHJpdmVyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMv
eGVuY29ucy9mZG8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5j
b25zL3JlZ2lzdHJ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVu
Y29ucy9jb25zb2xlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVu
Y29ucy9zdHJlYW0uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5j
b25zL3RocmVhZC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3ZzMjAxNy94ZW5j
b25zL3hlbmNvbnMudmN4cHJvaiBiL3ZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJvagppbmRl
eCBhYzc3YjgzLi41MTBhY2I2IDEwMDY0NAotLS0gYS92czIwMTcveGVuY29ucy94ZW5jb25zLnZj
eHByb2oKKysrIGIvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCkBAIC03NSw2ICs3NSw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9kcml2ZXIuYyIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Zkby5jIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcmVnaXN0cnkuYyIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2NvbnNvbGUuYyIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3N0cmVhbS5jIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvdGhyZWFkLmMiIC8+CiAg
IDwvSXRlbUdyb3VwPgotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:26:58 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:26:58 +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 1epEJO-0005Ir-Ni; Fri, 23 Feb 2018 14:26:58 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEJN-0005IE-Cl
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:26:57 +0000
X-Inumbo-ID: 264be318-18a5-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 264be318-18a5-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:23:42 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464185817"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:32 +0000
Message-ID: <20180223142142.12548-5-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQ2hhbmdlcyB0aGUgRmRv
IGludG8gYSBzaW1wbGUgYnVzIGRyaXZlciB0aGF0IG9ubHkgZW51bWVyYXRlcwp0aGUgc2luZ2xl
IHN0YXRpYyBQZG8uTW92ZXMgdGhlIGludGVyZmFjZSBhbmQgYWxsIGNvbnNvbGUgb3BlcmF0aW9u
cwp0byB0aGUgc3RhdGljIFBkby4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21p
dGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9mZG8uYyB8IDE1MSArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMveGVuY29ucy9wZG8uYyB8
IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
LS0KIDIgZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyksIDE1NCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9mZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jCmluZGV4
IDFjNTMyM2MuLjQ1YTFmZGQgMTAwNjQ0Ci0tLSBhL3NyYy94ZW5jb25zL2Zkby5jCisrKyBiL3Ny
Yy94ZW5jb25zL2Zkby5jCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8c3VzcGVuZF9pbnRl
cmZhY2UuaD4KICNpbmNsdWRlIDxzdG9yZV9pbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxjb25zb2xl
X2ludGVyZmFjZS5oPgotI2luY2x1ZGUgPHhlbmNvbnNfZGV2aWNlLmg+CiAjaW5jbHVkZSA8dmVy
c2lvbi5oPgogCiAjaW5jbHVkZSAiZHJpdmVyLmgiCkBAIC00OSw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiZmRvLmgiCiAjaW5jbHVkZSAicGRvLmgiCiAjaW5jbHVkZSAibXV0ZXguaCIKLSNpbmNsdWRl
ICJjb25zb2xlLmgiCiAjaW5jbHVkZSAidGhyZWFkLmgiCiAjaW5jbHVkZSAibmFtZXMuaCIKICNp
bmNsdWRlICJkYmdfcHJpbnQuaCIKQEAgLTkyLDggKzkwLDYgQEAgc3RydWN0IF9YRU5DT05TX0ZE
TyB7CiAKICAgICBGRE9fUkVTT1VSQ0UgICAgICAgICAgICAgICAgUmVzb3VyY2VbUkVTT1VSQ0Vf
Q09VTlRdOwogCi0gICAgUFhFTkNPTlNfQ09OU09MRSAgICAgICAgICAgIENvbnNvbGU7Ci0KICAg
ICBYRU5CVVNfREVCVUdfSU5URVJGQUNFICAgICAgRGVidWdJbnRlcmZhY2U7CiAgICAgWEVOQlVT
X1NVU1BFTkRfSU5URVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7CiAgICAgWEVOQlVTX1NUT1JF
X0lOVEVSRkFDRSAgICAgIFN0b3JlSW50ZXJmYWNlOwpAQCAtMTA5NiwxMiArMTA5Miw2IEBAIEZk
b0QzVG9EMCgKIAogICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7CiAKLSAgICBzdGF0dXMgPSBD
b25zb2xlRDNUb0QwKEZkby0+Q29uc29sZSk7Ci0gICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVz
KSk7Ci0KLSNwcmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODEyMykKLSAgICAoVk9JRCkgSW9TZXRE
ZXZpY2VJbnRlcmZhY2VTdGF0ZSgmRmRvLT5EeC0+TGluaywgVFJVRSk7Ci0KICAgICBUcmFjZSgi
PD09PT1cbiIpOwogCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwpAQCAtMTE0NCwxMSArMTEz
NCw2IEBAIEZkb0QwVG9EMygKIAogICAgIFRyYWNlKCI9PT09PlxuIik7CiAKLSNwcmFnbWEgcHJl
ZmFzdChzdXBwcmVzczoyODEyMykKLSAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0
ZSgmRmRvLT5EeC0+TGluaywgRkFMU0UpOwotCi0gICAgQ29uc29sZUQwVG9EMyhGZG8tPkNvbnNv
bGUpOwotCiAgICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsKIAogICAgIGZvciAoTGlzdEVudHJ5
ID0gRmRvLT5EeC0+TGlzdEVudHJ5LkZsaW5rOwpAQCAtMjQ4NCw4NSArMjQ2OSw2IEBAIGRvbmU6
CiB9CiAKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUwotRmRvRGlzcGF0Y2hDcmVh
dGUoCi0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCi0gICAgSU4gIFBJUlAgICAgICAgICAg
ICBJcnAKLSAgICApCi17Ci0gICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOwot
ICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOwotCi0gICAgU3RhY2tMb2NhdGlvbiA9IElv
R2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKLQotICAgIHN0YXR1cyA9IENvbnNvbGVP
cGVuKEZkby0+Q29uc29sZSwgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7Ci0KLSAgICBJcnAt
PklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKLSAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElP
X05PX0lOQ1JFTUVOVCk7Ci0KLSAgICByZXR1cm4gc3RhdHVzOwotfQotCi1zdGF0aWMgREVDTFNQ
RUNfTk9JTkxJTkUgTlRTVEFUVVMKLUZkb0Rpc3BhdGNoQ2xlYW51cCgKLSAgICBJTiAgUFhFTkNP
TlNfRkRPICAgIEZkbywKLSAgICBJTiAgUElSUCAgICAgICAgICAgIElycAotICAgICkKLXsKLSAg
ICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247Ci0gICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7Ci0KLSAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tM
b2NhdGlvbihJcnApOwotCi0gICAgc3RhdHVzID0gQ29uc29sZUNsb3NlKEZkby0+Q29uc29sZSwg
U3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7Ci0KLSAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IHN0YXR1czsKLSAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7Ci0K
LSAgICByZXR1cm4gc3RhdHVzOwotfQotCi1zdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFU
VVMKLUZkb0Rpc3BhdGNoQ2xvc2UoCi0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCi0gICAg
SU4gIFBJUlAgICAgICAgICAgICBJcnAKLSAgICApCi17Ci0gICAgTlRTVEFUVVMgICAgICAgICAg
ICBzdGF0dXM7Ci0KLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEZkbyk7Ci0KLSAgICBzdGF0
dXMgPSBTVEFUVVNfU1VDQ0VTUzsKLQotICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVz
OwotICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKLQotICAgIHJl
dHVybiBzdGF0dXM7Ci19Ci0KLXN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUwotRmRv
RGlzcGF0Y2hSZWFkV3JpdGUoCi0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sCi0gICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnAKLSAgICApCi17Ci0gICAgTlRTVEFUVVMgICAgICAgICAgICBz
dGF0dXM7Ci0KLSAgICBzdGF0dXMgPSBDb25zb2xlUHV0UXVldWUoRmRvLT5Db25zb2xlLCBJcnAp
OwotICAgIGlmIChzdGF0dXMgIT0gU1RBVFVTX1BFTkRJTkcpCi0gICAgICAgIGdvdG8gZmFpbDE7
Ci0KLSAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7Ci0KLWZhaWwxOgotICAgIEVycm9yKCJmYWls
MSAoJTA4eClcbiIsIHN0YXR1cyk7Ci0KLSAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1
czsKLSAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7Ci0KLSAgICBy
ZXR1cm4gc3RhdHVzOwotfQotCi1zdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKIEZk
b0Rpc3BhdGNoRGVmYXVsdCgKICAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbywKICAgICBJTiAg
UElSUCAgICAgICAgICAgIElycApAQCAtMjYwMiwyMyArMjUwOCw2IEBAIEZkb0Rpc3BhdGNoKAog
ICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaFBvd2VyKEZkbywgSXJwKTsKICAgICAgICAgYnJl
YWs7CiAKLSAgICBjYXNlIElSUF9NSl9DUkVBVEU6Ci0gICAgICAgIHN0YXR1cyA9IEZkb0Rpc3Bh
dGNoQ3JlYXRlKEZkbywgSXJwKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIElSUF9NSl9D
TEVBTlVQOgotICAgICAgICBzdGF0dXMgPSBGZG9EaXNwYXRjaENsZWFudXAoRmRvLCBJcnApOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSVJQX01KX0NMT1NFOgotICAgICAgICBzdGF0dXMg
PSBGZG9EaXNwYXRjaENsb3NlKEZkbywgSXJwKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IElSUF9NSl9SRUFEOgotICAgIGNhc2UgSVJQX01KX1dSSVRFOgotICAgICAgICBzdGF0dXMgPSBG
ZG9EaXNwYXRjaFJlYWRXcml0ZShGZG8sIElycCk7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgZGVm
YXVsdDoKICAgICAgICAgc3RhdHVzID0gRmRvRGlzcGF0Y2hEZWZhdWx0KEZkbywgSXJwKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0yNzM0LDkgKzI2MjMsNiBAQCBERUZJTkVfRkRPX0dFVF9JTlRFUkZB
Q0UoU3VzcGVuZCwgUFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkKIERFRklORV9GRE9fR0VUX0lO
VEVSRkFDRShTdG9yZSwgUFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UpCiBERUZJTkVfRkRPX0dFVF9J
TlRFUkZBQ0UoQ29uc29sZSwgUFhFTkJVU19DT05TT0xFX0lOVEVSRkFDRSkKIAotI3ByYWdtYSB3
YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MDE0KSAvLyBMZWFraW5nIG1l
bW9yeSAnJkR4LT5MaW5rJwotCiBOVFNUQVRVUwogRmRvQ3JlYXRlKAogICAgIElOICBQREVWSUNF
X09CSkVDVCAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0CkBAIC0yNzYyLDEzICsyNjQ4LDYgQEAg
RmRvQ3JlYXRlKAogICAgIER4ID0gKFBYRU5DT05TX0RYKUZ1bmN0aW9uRGV2aWNlT2JqZWN0LT5E
ZXZpY2VFeHRlbnNpb247CiAgICAgUnRsWmVyb01lbW9yeShEeCwgc2l6ZW9mIChYRU5DT05TX0RY
KSk7CiAKLSAgICBzdGF0dXMgPSBJb1JlZ2lzdGVyRGV2aWNlSW50ZXJmYWNlKFBoeXNpY2FsRGV2
aWNlT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURf
WEVOQ09OU19ERVZJQ0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkR4LT5MaW5rKTsK
LSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAgZ290byBmYWlsMjsKLQogICAg
IER4LT5UeXBlID0gRlVOQ1RJT05fREVWSUNFX09CSkVDVDsKICAgICBEeC0+RGV2aWNlT2JqZWN0
ID0gRnVuY3Rpb25EZXZpY2VPYmplY3Q7CiAgICAgRHgtPkRldmljZVBucFN0YXRlID0gQWRkZWQ7
CkBAIC0yODQ1LDEyICsyNzI0LDYgQEAgRmRvQ3JlYXRlKAogICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKQogICAgICAgICBnb3RvIGZhaWwxMTsKIAotICAgIHN0YXR1cyA9IENvbnNvbGVDcmVh
dGUoRmRvLCAmRmRvLT5Db25zb2xlKTsKLSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKLSAg
ICAgICAgZ290byBmYWlsMTI7Ci0KLSAgICBGdW5jdGlvbkRldmljZU9iamVjdC0+RmxhZ3MgfD0g
RE9fQlVGRkVSRURfSU87Ci0KICAgICBEeC0+RmRvID0gRmRvOwogCiAgICAgSW5pdGlhbGl6ZU11
dGV4KCZGZG8tPk11dGV4KTsKQEAgLTI4NjMsMTMgKzI3MzYsMTMgQEAgRmRvQ3JlYXRlKAogCiAg
ICAgc3RhdHVzID0gUGRvQ3JlYXRlKEZkbywgTlVMTCk7CiAgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpCi0gICAgICAgIGdvdG8gZmFpbDEzOworICAgICAgICBnb3RvIGZhaWwxMjsKIAogICAg
IEZ1bmN0aW9uRGV2aWNlT2JqZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJQUxJWklORzsK
ICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CiAKLWZhaWwxMzoKLSAgICBFcnJvcigiZmFpbDEz
XG4iKTsKK2ZhaWwxMjoKKyAgICBFcnJvcigiZmFpbDEyXG4iKTsKIAogICAgIER4LT5GZG8gPSBG
ZG87CiAKQEAgLTI4NzcsMTIgKzI3NTAsNiBAQCBmYWlsMTM6CiAgICAgUnRsWmVyb01lbW9yeSgm
RHgtPkxpc3RFbnRyeSwgc2l6ZW9mKExJU1RfRU5UUlkpKTsKICAgICBGZG8tPlJlZmVyZW5jZXMg
PSAwOwogCi0gICAgQ29uc29sZURlc3Ryb3koRmRvLT5Db25zb2xlKTsKLSAgICBGZG8tPkNvbnNv
bGUgPSBOVUxMOwotCi1mYWlsMTI6Ci0gICAgRXJyb3IoImZhaWwxMlxuIik7Ci0KICAgICBSdGxa
ZXJvTWVtb3J5KCZGZG8tPkNvbnNvbGVJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICBzaXpl
b2YoWEVOQlVTX0NPTlNPTEVfSU5URVJGQUNFKSk7CiAKQEAgLTI5NDQsMTEgKzI4MTEsNiBAQCBm
YWlsNDoKIGZhaWwzOgogICAgIEVycm9yKCJmYWlsM1xuIik7CiAKLSAgICBSdGxGcmVlVW5pY29k
ZVN0cmluZygmRHgtPkxpbmspOwotCi1mYWlsMjoKLSAgICBFcnJvcigiZmFpbDJcbiIpOwotCiAg
ICAgSW9EZWxldGVEZXZpY2UoRnVuY3Rpb25EZXZpY2VPYmplY3QpOwogCiBmYWlsMToKQEAgLTI5
NzksOSArMjg0MSw2IEBAIEZkb0Rlc3Ryb3koCiAKICAgICBEeC0+RmRvID0gTlVMTDsKIAotICAg
IENvbnNvbGVEZXN0cm95KEZkby0+Q29uc29sZSk7Ci0gICAgRmRvLT5Db25zb2xlID0gTlVMTDsK
LQogICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+Q29uc29sZUludGVyZmFjZSwKICAgICAgICAgICAg
ICAgICAgIHNpemVvZiAoWEVOQlVTX0NPTlNPTEVfSU5URVJGQUNFKSk7CiAKQEAgLTMwMTYsOSAr
Mjg3NSw1IEBAIEZkb0Rlc3Ryb3koCiAgICAgQVNTRVJUKElzWmVyb01lbW9yeShGZG8sIHNpemVv
ZiAoWEVOQ09OU19GRE8pKSk7CiAgICAgX19GZG9GcmVlKEZkbyk7CiAKLSAgICBSdGxGcmVlVW5p
Y29kZVN0cmluZygmRHgtPkxpbmspOwotCiAgICAgSW9EZWxldGVEZXZpY2UoRnVuY3Rpb25EZXZp
Y2VPYmplY3QpOwogfQotCi0jcHJhZ21hIHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0IGEvc3JjL3hl
bmNvbnMvcGRvLmMgYi9zcmMveGVuY29ucy9wZG8uYwppbmRleCA1ZTkwODQ0Li4wNzdjN2UyIDEw
MDc1NQotLS0gYS9zcmMveGVuY29ucy9wZG8uYworKysgYi9zcmMveGVuY29ucy9wZG8uYwpAQCAt
MzcsMTIgKzM3LDE0IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKICNpbmNsdWRlIDxzdXNwZW5k
X2ludGVyZmFjZS5oPgorI2luY2x1ZGUgPHhlbmNvbnNfZGV2aWNlLmg+CiAjaW5jbHVkZSA8dmVy
c2lvbi5oPgogCiAjaW5jbHVkZSAiZHJpdmVyLmgiCiAjaW5jbHVkZSAibmFtZXMuaCIKICNpbmNs
dWRlICJmZG8uaCIKICNpbmNsdWRlICJwZG8uaCIKKyNpbmNsdWRlICJjb25zb2xlLmgiCiAjaW5j
bHVkZSAidGhyZWFkLmgiCiAjaW5jbHVkZSAiZGJnX3ByaW50LmgiCiAjaW5jbHVkZSAiYXNzZXJ0
LmgiCkBAIC02OCw2ICs3MCw4IEBAIHN0cnVjdCBfWEVOQ09OU19QRE8gewogCiAgICAgWEVOQlVT
X1NVU1BFTkRfSU5URVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7CiAgICAgUFhFTkJVU19TVVNQ
RU5EX0NBTExCQUNLICAgIFN1c3BlbmRDYWxsYmFja0xhdGU7CisKKyAgICBQWEVOQ09OU19DT05T
T0xFICAgICAgICAgICAgQ29uc29sZTsKIH07CiAKIHN0YXRpYyBGT1JDRUlOTElORSBQVk9JRApA
QCAtNDM3LDEwICs0NDEsMjcgQEAgUGRvRDNUb0QwKAogCiAgICAgS2VMb3dlcklycWwoSXJxbCk7
CiAKKyAgICBzdGF0dXMgPSBDb25zb2xlRDNUb0QwKFBkby0+Q29uc29sZSk7CisgICAgaWYgKCFO
VF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDQ7CisKKyNwcmFnbWEgcHJlZmFz
dChzdXBwcmVzczoyODEyMykKKyAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0ZSgm
UGRvLT5EeC0+TGluaywgVFJVRSk7CisKICAgICBUcmFjZSgiKCVzKSA8PT09PVxuIiwgX19QZG9H
ZXROYW1lKFBkbykpOwogCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogCitmYWlsNDoKKyAg
ICBFcnJvcigiZmFpbDRcbiIpOworCisgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUwsICZJ
cnFsKTsKKworICAgIFhFTkJVU19TVVNQRU5EKERlcmVnaXN0ZXIsCisgICAgICAgICAgICAgICAg
ICAgJlBkby0+U3VzcGVuZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICBQZG8tPlN1c3Bl
bmRDYWxsYmFja0xhdGUpOworICAgIFBkby0+U3VzcGVuZENhbGxiYWNrTGF0ZSA9IE5VTEw7CisK
IGZhaWwzOgogICAgIEVycm9yKCJmYWlsM1xuIik7CiAKQEAgLTQ3MSw2ICs0OTIsMTEgQEAgUGRv
RDBUb0QzKAogCiAgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIFBBU1NJVkVf
TEVWRUwpOwogCisjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxMjMpCisgICAgKFZPSUQpIElv
U2V0RGV2aWNlSW50ZXJmYWNlU3RhdGUoJlBkby0+RHgtPkxpbmssIEZBTFNFKTsKKworICAgIENv
bnNvbGVEMFRvRDMoUGRvLT5Db25zb2xlKTsKKwogICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xF
VkVMLCAmSXJxbCk7CiAKICAgICBYRU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLApAQCAtNTI3LDEw
ICs1NTMsMjEgQEAgUGRvU3RhcnREZXZpY2UoCiB7CiAgICAgTlRTVEFUVVMgICAgICAgICAgICBz
dGF0dXM7CiAKLSAgICBzdGF0dXMgPSBQZG9EM1RvRDAoUGRvKTsKKyAgICBpZiAoUGRvLT5EeC0+
TGluay5MZW5ndGggIT0gMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgc3RhdHVzID0gSW9S
ZWdpc3RlckRldmljZUludGVyZmFjZShfX1Bkb0dldERldmljZU9iamVjdChQZG8pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdVSURfWEVOQ09OU19ERVZJQ0UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJlBkby0+RHgtPkxpbmspOwogICAgIGlmICghTlRf
U1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3RvIGZhaWwxOwogCitkb25lOgorICAgIHN0YXR1
cyA9IFBkb0QzVG9EMChQZG8pOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAg
ICBnb3RvIGZhaWwyOworCiAgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIFN0YXJ0ZWQp
OwogCiAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKQEAgLTUzOCw2
ICs1NzUsOSBAQCBQZG9TdGFydERldmljZSgKIAogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
IAorZmFpbDI6CisgICAgRXJyb3IoImZhaWwyXG4iKTsKKwogZmFpbDE6CiAgICAgRXJyb3IoImZh
aWwxICglMDh4KVxuIiwgc3RhdHVzKTsKIApAQCAtMTYzOSw2ICsxNjc5LDg1IEBAIFBkb0Rpc3Bh
dGNoUG93ZXIoCiB9CiAKIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUworUGRvRGlz
cGF0Y2hDcmVhdGUoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xv
Y2F0aW9uOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAgU3RhY2tMb2Nh
dGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsKKworICAgIHN0YXR1cyA9
IENvbnNvbGVPcGVuKFBkby0+Q29uc29sZSwgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7CisK
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0
aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoQ2xlYW51cCgKKyAgICBJ
TiAgUFhFTkNPTlNfUERPICAgIFBkbywKKyAgICBJTiAgUElSUCAgICAgICAgICAgIElycAorICAg
ICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNrTG9jYXRpb247CisgICAgTlRTVEFU
VVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50
SXJwU3RhY2tMb2NhdGlvbihJcnApOworCisgICAgc3RhdHVzID0gQ29uc29sZUNsb3NlKFBkby0+
Q29uc29sZSwgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7CisKKyAgICBJcnAtPklvU3RhdHVz
LlN0YXR1cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JF
TUVOVCk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJ
TkUgTlRTVEFUVVMKK1Bkb0Rpc3BhdGNoQ2xvc2UoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8sCisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFBkbyk7CisK
KyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKworICAgIElycC0+SW9TdGF0dXMuU3RhdHVz
ID0gc3RhdHVzOworICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsK
KworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNU
QVRVUworUGRvRGlzcGF0Y2hSZWFkV3JpdGUoCisgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8s
CisgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgTlRTVEFUVVMgICAg
ICAgICAgICBzdGF0dXM7CisKKyAgICBzdGF0dXMgPSBDb25zb2xlUHV0UXVldWUoUGRvLT5Db25z
b2xlLCBJcnApOworICAgIGlmIChzdGF0dXMgIT0gU1RBVFVTX1BFTkRJTkcpCisgICAgICAgIGdv
dG8gZmFpbDE7CisKKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7CisKK2ZhaWwxOgorICAgIEVy
cm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsKKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRT
VEFUVVMKIFBkb0Rpc3BhdGNoRGVmYXVsdCgKICAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywK
ICAgICBJTiAgUElSUCAgICAgICAgICAgIElycApAQCAtMTY3NCw2ICsxNzkzLDIzIEBAIFBkb0Rp
c3BhdGNoKAogICAgICAgICBzdGF0dXMgPSBQZG9EaXNwYXRjaFBvd2VyKFBkbywgSXJwKTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIElSUF9NSl9DUkVBVEU6CisgICAgICAgIHN0YXR1cyA9
IFBkb0Rpc3BhdGNoQ3JlYXRlKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IElSUF9NSl9DTEVBTlVQOgorICAgICAgICBzdGF0dXMgPSBQZG9EaXNwYXRjaENsZWFudXAoUGRv
LCBJcnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSVJQX01KX0NMT1NFOgorICAgICAg
ICBzdGF0dXMgPSBQZG9EaXNwYXRjaENsb3NlKFBkbywgSXJwKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIElSUF9NSl9SRUFEOgorICAgIGNhc2UgSVJQX01KX1dSSVRFOgorICAgICAgICBz
dGF0dXMgPSBQZG9EaXNwYXRjaFJlYWRXcml0ZShQZG8sIElycCk7CisgICAgICAgIGJyZWFrOwor
CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3RhdHVzID0gUGRvRGlzcGF0Y2hEZWZhdWx0KFBkbywg
SXJwKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzU1LDMxICsxODkxLDQyIEBAIFBkb0NyZWF0ZSgK
IAogICAgIER4LT5QZG8gPSBQZG87CiAKLSAgICBzdGF0dXMgPSBGZG9BZGRQaHlzaWNhbERldmlj
ZU9iamVjdChGZG8sIFBkbyk7CisgICAgc3RhdHVzID0gQ29uc29sZUNyZWF0ZShGZG8sICZQZG8t
PkNvbnNvbGUpOwogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3RvIGZh
aWw1OwogCisgICAgc3RhdHVzID0gRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvLCBQZG8p
OworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw2OworCiAg
ICAgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsKICAgICBpZiAoX19QZG9Jc0VqZWN0UmVx
dWVzdGVkKFBkbykpCi0gICAgICAgIGdvdG8gZmFpbDY7CisgICAgICAgIGdvdG8gZmFpbDc7CiAK
ICAgICBJbmZvKCIlcCAoJXMpXG4iLAogICAgICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QsCiAg
ICAgICAgICBfX1Bkb0dldE5hbWUoUGRvKSk7CiAKKyAgICBQaHlzaWNhbERldmljZU9iamVjdC0+
RmxhZ3MgfD0gRE9fQlVGRkVSRURfSU87CiAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QtPkZsYWdz
ICY9IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOwogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsK
IAorZmFpbDc6CisgICAgRXJyb3IoImZhaWw3XG4iKTsKKworICAgIEZkb1JlbW92ZVBoeXNpY2Fs
RGV2aWNlT2JqZWN0KEZkbywgUGRvKTsKKwogZmFpbDY6CiAgICAgRXJyb3IoImZhaWw2XG4iKTsK
IAotICAgIEZkb1JlbW92ZVBoeXNpY2FsRGV2aWNlT2JqZWN0KEZkbywgUGRvKTsKKyAgICAoVk9J
RClfX1Bkb0NsZWFyRWplY3RSZXF1ZXN0ZWQoUGRvKTsKKworICAgIENvbnNvbGVEZXN0cm95KFBk
by0+Q29uc29sZSk7CisgICAgUGRvLT5Db25zb2xlID0gTlVMTDsKIAogZmFpbDU6CiAgICAgRXJy
b3IoImZhaWw1XG4iKTsKIAotICAgIChWT0lEKV9fUGRvQ2xlYXJFamVjdFJlcXVlc3RlZChQZG8p
OwotCiAgICAgRHgtPlBkbyA9IE5VTEw7CiAKICAgICBSdGxaZXJvTWVtb3J5KCZQZG8tPlN1c3Bl
bmRJbnRlcmZhY2UsCkBAIC0xODQzLDYgKzE5OTAsMTEgQEAgUGRvRGVzdHJveSgKIAogICAgIER4
LT5QZG8gPSBOVUxMOwogCisgICAgQ29uc29sZURlc3Ryb3koUGRvLT5Db25zb2xlKTsKKyAgICBQ
ZG8tPkNvbnNvbGUgPSBOVUxMOworCisgICAgUnRsRnJlZVVuaWNvZGVTdHJpbmcoJlBkby0+RHgt
PkxpbmspOworCiAgICAgUnRsWmVyb01lbW9yeSgmUGRvLT5TdXNwZW5kSW50ZXJmYWNlLAogICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkpOwogCi0tIAoy
LjguMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCndp
bi1wdi1kZXZlbCBtYWlsaW5nIGxpc3QKd2luLXB2LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby93aW4tcHYtZGV2
ZWw=

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:28:34 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:28:34 +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 1epEKw-0005St-4m; Fri, 23 Feb 2018 14:28:34 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEKv-0005Ry-4R
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:28:33 +0000
X-Inumbo-ID: 0cf1bfcf-18a6-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 0cf1bfcf-18a6-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:30:09 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464187121"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:38 +0000
Message-ID: <20180223142142.12548-11-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIHNyYy94ZW5jb25zL2Zyb250
ZW5kLmMgfCA5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KystLQogMSBmaWxlIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYyBiL3NyYy94ZW5jb25zL2Zyb250ZW5k
LmMKaW5kZXggYmRkMjk0NS4uYTZlNTdkMSAxMDA3NTUKLS0tIGEvc3JjL3hlbmNvbnMvZnJvbnRl
bmQuYworKysgYi9zcmMveGVuY29ucy9mcm9udGVuZC5jCkBAIC0xMjE1LDYgKzEyMTUsODAgQEAg
RnJvbnRlbmREZXN0cm95KAogfQogCiBzdGF0aWMgTlRTVEFUVVMKK0Zyb250ZW5kR2V0UHJvcGVy
dHkoCisgICAgSU4gIFBYRU5DT05TX0ZST05URU5EICAgRnJvbnRlbmQsCisgICAgSU4gIFBJUlAg
ICAgICAgICAgICAgICAgSXJwCisgICAgKQoreworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAg
IFN0YWNrTG9jYXRpb247CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgSW9Db250cm9sQ29k
ZTsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICBJbnB1dEJ1ZmZlckxlbmd0aDsKKyAgICBV
TE9ORyAgICAgICAgICAgICAgICAgICBPdXRwdXRCdWZmZXJMZW5ndGg7CisgICAgUFZPSUQgICAg
ICAgICAgICAgICAgICAgQnVmZmVyOworICAgIFBDSEFSICAgICAgICAgICAgICAgICAgIFZhbHVl
OworICAgIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0aDsKKyAgICBOVFNUQVRVUyAgICAg
ICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJw
U3RhY2tMb2NhdGlvbihJcnApOworICAgIElvQ29udHJvbENvZGUgPSBTdGFja0xvY2F0aW9uLT5Q
YXJhbWV0ZXJzLkRldmljZUlvQ29udHJvbC5Jb0NvbnRyb2xDb2RlOworICAgIElucHV0QnVmZmVy
TGVuZ3RoID0gU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5EZXZpY2VJb0NvbnRyb2wuSW5wdXRC
dWZmZXJMZW5ndGg7CisgICAgT3V0cHV0QnVmZmVyTGVuZ3RoID0gU3RhY2tMb2NhdGlvbi0+UGFy
YW1ldGVycy5EZXZpY2VJb0NvbnRyb2wuT3V0cHV0QnVmZmVyTGVuZ3RoOworICAgIEJ1ZmZlciA9
IElycC0+QXNzb2NpYXRlZElycC5TeXN0ZW1CdWZmZXI7CisKKyAgICBzd2l0Y2ggKElvQ29udHJv
bENvZGUpIHsKKyAgICBjYXNlIElPQ1RMX1hFTkNPTlNfR0VUX0lOU1RBTkNFOgorICAgICAgICBW
YWx1ZSA9IFBkb0dldE5hbWUoRnJvbnRlbmQtPlBkbyk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSU9DVExfWEVOQ09OU19HRVRfTkFNRToKKyAgICAgICAgVmFsdWUgPSBGcm9udGVuZC0+TmFt
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJT0NUTF9YRU5DT05TX0dFVF9QUk9UT0NPTDoK
KyAgICAgICAgVmFsdWUgPSBGcm9udGVuZC0+UHJvdG9jb2w7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIFZhbHVlID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7CisgICAgaWYgKFZhbHVlID09IE5V
TEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICBzdGF0dXMgPSBTVEFUVVNfSU5WQUxJRF9Q
QVJBTUVURVI7CisgICAgaWYgKElucHV0QnVmZmVyTGVuZ3RoICE9IDApCisgICAgICAgIGdvdG8g
ZmFpbDI7CisKKyAgICBMZW5ndGggPSAoVUxPTkcpc3RybGVuKFZhbHVlKSArIDE7CisgICAgSXJw
LT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IExlbmd0aDsKKworICAgIHN0YXR1cyA9IFNUQVRVU19J
TlZBTElEX0JVRkZFUl9TSVpFOworICAgIGlmIChPdXRwdXRCdWZmZXJMZW5ndGggPT0gMCkKKyAg
ICAgICAgZ290byBmYWlsMzsKKworICAgIFJ0bFplcm9NZW1vcnkoQnVmZmVyLCBPdXRwdXRCdWZm
ZXJMZW5ndGgpOworICAgIGlmIChPdXRwdXRCdWZmZXJMZW5ndGggPCBMZW5ndGgpCisgICAgICAg
IGdvdG8gZmFpbDQ7CisKKyAgICBSdGxDb3B5TWVtb3J5KEJ1ZmZlciwgVmFsdWUsIExlbmd0aCk7
CisKKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWw0OgorICAgIEVycm9yKCJmYWls
NFxuIik7CisKK2ZhaWwzOgorICAgIEVycm9yKCJmYWlsM1xuIik7CisKK2ZhaWwyOgorICAgIEVy
cm9yKCJmYWlsMlxuIik7CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0
YXR1cyk7CisKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgTlRTVEFUVVMKIEZyb250
ZW5kQWJpQWNxdWlyZSgKICAgICBJTiAgUFhFTkNPTlNfQ09OU09MRV9DT05URVhUICAgIENvbnRl
eHQKICAgICApCkBAIC0xMzczLDkgKzE0NDcsMjMgQEAgRnJvbnRlbmRBYmlQdXRRdWV1ZSgKICAg
ICBJTiAgUElSUCAgICAgICAgICAgICAgICAgICAgICAgIElycAogICAgICkKIHsKLSAgICBVTlJF
RkVSRU5DRURfUEFSQU1FVEVSKENvbnRleHQpOwotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
SXJwKTsKLSAgICByZXR1cm4gU1RBVFVTX0RFVklDRV9OT1RfUkVBRFk7CisgICAgUFhFTkNPTlNf
RlJPTlRFTkQgICAgICAgICAgICAgICBGcm9udGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250
ZXh0OworICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgICAgICAgICAgU3RhY2tMb2NhdGlvbjsK
KworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7
CisKKyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1ham9yRnVuY3Rpb24pIHsKKyAgICBjYXNl
IElSUF9NSl9SRUFEOgorICAgIGNhc2UgSVJQX01KX1dSSVRFOgorICAgICAgICByZXR1cm4gU1RB
VFVTX0RFVklDRV9OT1RfUkVBRFk7CisKKyAgICBjYXNlIElSUF9NSl9ERVZJQ0VfQ09OVFJPTDoK
KyAgICAgICAgcmV0dXJuIEZyb250ZW5kR2V0UHJvcGVydHkoRnJvbnRlbmQsIElycCk7CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoRkFMU0UpOworICAgICAgICByZXR1cm4gU1RBVFVT
X05PVF9TVVBQT1JURUQ7CisgICAgfQogfQogCiBzdGF0aWMgWEVOQ09OU19DT05TT0xFX0FCSSBG
cm9udGVuZEFiaVYxID0gewotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:28:35 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:28:35 +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 1epEKx-0005TN-5x; Fri, 23 Feb 2018 14:28:35 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEKw-0005S2-4h
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:28:34 +0000
X-Inumbo-ID: 0d9d785a-18a6-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 0d9d785a-18a6-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:30:10 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464187125"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:42 +0000
Message-ID: <20180223142142.12548-15-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQ3VycmVudCBiYWNrZW5k
IHdpbGwgY3Jhc2ggKHRha2luZyBvdXQgdGhlIFZNKSBpZiBhbnkgYXR0ZW1wdCBpcwptYWRlIHRv
IHJlY29ubmVjdCB0byBhIGJhY2tlbmQgdGhhdCBoYXMgdHJhbnNpdGlvbmVkIHRvIHRoZQpDbG9z
ZWQgc3RhdGUuIEZvcmNlcyB0aGUgZnJvbnRlbmQgb2ZmbGluZSwgd2hpY2ggd2lsbCBmYWlsIHRo
ZQpmcm9udGVuZCBzdGF0ZSB0cmFuc2l0aW9ucywgYW5kIGl0cyBpbml0aWF0aW5nIElSUC4KClNp
Z25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMv
eGVuY29ucy9mcm9udGVuZC5jIHwgNiArKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlv
bnMoKykKCmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9mcm9udGVuZC5jIGIvc3JjL3hlbmNvbnMv
ZnJvbnRlbmQuYwppbmRleCBmN2QzYjIzLi45ZjZlMTNkIDEwMDc1NQotLS0gYS9zcmMveGVuY29u
cy9mcm9udGVuZC5jCisrKyBiL3NyYy94ZW5jb25zL2Zyb250ZW5kLmMKQEAgLTY1Miw2ICs2NTIs
MTIgQEAgRnJvbnRlbmRQcmVwYXJlKAogICAgICAgICBjYXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOgog
ICAgICAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQpOworICAgICAgICAgICAg
Ly8gVGhlcmUgaXMgY3VycmVudGx5IGEgYnVnIGluIHRoZSBiYWNrZW5kLgorICAgICAgICAgICAg
Ly8gT25jZSB0aGUgYmFja2VuZCByZWFjaGVzIENsb3NlZCwgaXQgd2lsbCBjcmFzaCB0aGUKKyAg
ICAgICAgICAgIC8vIGZyb250ZW5kIGF0dGVtcHRzIHRvIG1ha2UgYW55IHN0YXRlIHRyYW5zaXRp
b24uCisgICAgICAgICAgICAvLyBBdm9pZCB0aGUgYnVnIGJ5IGZvcmNpbmcgdGhlIGZyb250ZW5k
IG9mZmxpbmUgYW5kCisgICAgICAgICAgICAvLyBmYWlsaW5nIEZyb250ZW5kUHJlcGFyZQorICAg
ICAgICAgICAgRnJvbnRlbmRTZXRPZmZsaW5lKEZyb250ZW5kKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgRnJvbnRlbmRTZXRYZW5idXNTdGF0ZShG
cm9udGVuZCwKLS0gCjIuOC4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:28:36 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:28:36 +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 1epEKy-0005Tx-73; Fri, 23 Feb 2018 14:28: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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEKx-0005S6-4q
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:28:35 +0000
X-Inumbo-ID: 0e6e2933-18a6-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 0e6e2933-18a6-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:30:12 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464187127"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:41 +0000
Message-ID: <20180223142142.12548-14-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQXR0ZW1wdGluZyB0byBz
ZXQgRDAgd2hlbiBhbHJlYWR5IGF0IEQwIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQKYW5kIG92ZXJ3
cml0ZSBzZXZlcmFsIHZhcmlhYmxlcy4KClNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4u
c21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9wZG8uYyB8IDcgKysrKysrKwogMSBm
aWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy94ZW5jb25zL3Bk
by5jIGIvc3JjL3hlbmNvbnMvcGRvLmMKaW5kZXggOTM1YjZjYS4uNmE0MTkzNCAxMDA3NTUKLS0t
IGEvc3JjL3hlbmNvbnMvcGRvLmMKKysrIGIvc3JjL3hlbmNvbnMvcGRvLmMKQEAgLTQ0NSw2ICs0
NDUsOCBAQCBQZG9EM1RvRDAoCiAgICAgVHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFt
ZShQZG8pKTsKIAogICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZF
X0xFVkVMKTsKKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgPT0gUG93ZXJE
ZXZpY2VEMCkKKyAgICAgICAgZ290byBkb25lOwogCiAgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hf
TEVWRUwsICZJcnFsKTsKIApAQCAtNDcxLDYgKzQ3Myw3IEBAIFBkb0QzVG9EMCgKICAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKICAgICAgICAgZ290byBmYWlsNDsKIAorZG9uZToKICNwcmFn
bWEgcHJlZmFzdChzdXBwcmVzczoyODEyMykKICAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZh
Y2VTdGF0ZSgmUGRvLT5EeC0+TGluaywgVFJVRSk7CiAKQEAgLTUyMSw2ICs1MjQsOSBAQCBQZG9E
MFRvRDMoCiAjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6MjgxMjMpCiAgICAgKFZPSUQpIElvU2V0
RGV2aWNlSW50ZXJmYWNlU3RhdGUoJlBkby0+RHgtPkxpbmssIEZBTFNFKTsKIAorICAgIGlmIChf
X1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSA9PSBQb3dlckRldmljZUQzKQorICAgICAgICBn
b3RvIGRvbmU7CisKICAgICBYRU5DT05TX0NPTlNPTEVfQUJJKEQwVG9EMywgJlBkby0+Q29uc29s
ZUFiaSk7CiAKICAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOwpAQCAtNTM2
LDYgKzU0Miw3IEBAIFBkb0QwVG9EMygKIAogICAgIEtlTG93ZXJJcnFsKElycWwpOwogCitkb25l
OgogICAgIFRyYWNlKCIoJXMpIDw9PT09XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7CiB9CiAKLS0g
CjIuOC4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
d2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1k
ZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:28:40 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:28: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 1epEL2-0005VD-8R; Fri, 23 Feb 2018 14:28:40 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEL1-0005T7-9M
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:28:39 +0000
X-Inumbo-ID: 10299748-18a6-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 10299748-18a6-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:30:15 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464187137"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:40 +0000
Message-ID: <20180223142142.12548-13-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQWRkcyByaW5nLmgvLmMg
d2hpY2ggaW1wbGVtZW50cyB0aGUgY29uc29sZSByaW5nIHByb3RvY29sIGFuZApoYW5kbGVzIHRo
ZSBjYW5jZWwgc2FmZSBxdWV1ZXMgZm9yIHRoZSBvdXRzdGFuZGluZyByZWFkL3dyaXRlIElSUHMu
CkNvbm5lY3QgdGhlIHJpbmcgd2l0aCB0aGUgc3RhdGUgcHJvdG9jb2wgaW4gdGhlIGZyb250ZW5k
LgpBbHNvIGZpeGVzIGZyb250ZW5kIHN0YXRlIHRyYW5zaXRpb25zIHRvIGdldCBhbGxvdyB0aGUg
cmluZyB0bwpjb25uZWN0IGFuZCBvcGVyYXRlIGNvcnJlY3RseS4KClNpZ25lZC1vZmYtYnk6IE93
ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4KLS0tCiBzcmMveGVuY29ucy9mcm9udGVu
ZC5jICAgICAgICAgfCAgMjI3ICsrKysrLS0tLQogc3JjL3hlbmNvbnMvcmluZy5jICAgICAgICAg
ICAgIHwgMTA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv
eGVuY29ucy9yaW5nLmggICAgICAgICAgICAgfCAgIDk2ICsrKysKIHZzMjAxNS94ZW5jb25zL3hl
bmNvbnMudmN4cHJvaiB8ICAgIDEgKwogdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qIHwg
ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDEzMDYgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3hlbmNvbnMvcmluZy5jCiBjcmVhdGUgbW9kZSAx
MDA3NTUgc3JjL3hlbmNvbnMvcmluZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZnJvbnRl
bmQuYyBiL3NyYy94ZW5jb25zL2Zyb250ZW5kLmMKaW5kZXggYTZlNTdkMS4uZjdkM2IyMyAxMDA3
NTUKLS0tIGEvc3JjL3hlbmNvbnMvZnJvbnRlbmQuYworKysgYi9zcmMveGVuY29ucy9mcm9udGVu
ZC5jCkBAIC00NCw2ICs0NCw3IEBACiAKICNpbmNsdWRlICJkcml2ZXIuaCIKICNpbmNsdWRlICJm
cm9udGVuZC5oIgorI2luY2x1ZGUgInJpbmcuaCIKICNpbmNsdWRlICJ0aHJlYWQuaCIKICNpbmNs
dWRlICJkYmdfcHJpbnQuaCIKICNpbmNsdWRlICJhc3NlcnQuaCIKQEAgLTgyLDYgKzgzLDggQEAg
c3RydWN0IF9YRU5DT05TX0ZST05URU5EIHsKICAgICBQWEVOQlVTX1NVU1BFTkRfQ0FMTEJBQ0sg
ICAgU3VzcGVuZENhbGxiYWNrOwogICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJBQ0sgICAgICBEZWJ1
Z0NhbGxiYWNrOwogICAgIFBYRU5CVVNfU1RPUkVfV0FUQ0ggICAgICAgICBXYXRjaDsKKworICAg
IFBYRU5DT05TX1JJTkcgICAgICAgICAgICAgICBSaW5nOwogfTsKIAogc3RhdGljIGNvbnN0IFBD
SEFSCkBAIC01OTIsMTEgKzU5NSwyMSBAQCBGcm9udGVuZENsb3NlKAogICAgICAgICBpZiAoIUZy
b250ZW5kSXNPbmxpbmUoRnJvbnRlbmQpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
RnJvbnRlbmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZCk7Ci0KICAgICAgICAgRnJvbnRlbmRXYWl0Rm9yQmFj
a2VuZFhlbmJ1c1N0YXRlQ2hhbmdlKEZyb250ZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJlN0YXRlKTsKKworICAgICAgICBzd2l0Y2ggKFN0YXRl
KSB7CisgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDbG9zaW5nOgorICAgICAgICAgICAgRnJvbnRl
bmRTZXRYZW5idXNTdGF0ZShGcm9udGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBGcm9udGVuZFJlbGVhc2VCYWNr
ZW5kKEZyb250ZW5kKTsKQEAgLTYzMSwxMSArNjQ0LDIwIEBAIEZyb250ZW5kUHJlcGFyZSgKICAg
ICAgICAgaWYgKCFGcm9udGVuZElzT25saW5lKEZyb250ZW5kKSkKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIEZyb250ZW5kU2V0WGVuYnVzU3RhdGUoRnJvbnRlbmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcpOwotCiAgICAgICAg
IEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZShGcm9udGVuZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGF0ZSk7CisgICAg
ICAgIHN3aXRjaCAoU3RhdGUpIHsKKyAgICAgICAgY2FzZSBYZW5idXNTdGF0ZUluaXRXYWl0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDbG9zZWQ6CisgICAg
ICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEZyb250ZW5kU2V0WGVuYnVzU3RhdGUo
RnJvbnRlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0
ZUluaXRpYWxpc2luZyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7CkBAIC03MjUsNyArNzQ3LDkgQEAgRnJv
bnRlbmRDb25uZWN0KAogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBnb3Rv
IGZhaWwyOwogCi0gICAgLy8gVE9ETzogQ29ubmVjdCBSaW5nCisgICAgc3RhdHVzID0gUmluZ0Nv
bm5lY3QoRnJvbnRlbmQtPlJpbmcpOworICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAg
ICAgICBnb3RvIGZhaWwzOwogCiAgICAgQXR0ZW1wdCA9IDA7CiAgICAgZG8gewpAQCAtNzM3LDcg
Kzc2MSwxMCBAQCBGcm9udGVuZENvbm5lY3QoCiAgICAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0
dXMpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgLy8gVE9ETzogU3RvcmVXcml0ZSBS
aW5nCisgICAgICAgIHN0YXR1cyA9IFJpbmdTdG9yZVdyaXRlKEZyb250ZW5kLT5SaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbik7CisgICAgICAgIGlmICgh
TlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICAgICAgZ290byBhYm9ydDsKIAogICAgICAgICBz
dGF0dXMgPSBYRU5CVVNfU1RPUkUoVHJhbnNhY3Rpb25FbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLApAQCAtNzQ4LDEyICs3NzUsMTIg
QEAgRnJvbnRlbmRDb25uZWN0KAogCiAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgLy9hYm9ydDoK
LSAgICAvLyAgICAoVk9JRClYRU5CVVNfU1RPUkUoVHJhbnNhY3Rpb25FbmQsCi0gICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCi0gICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9uLAotICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICBGQUxTRSk7Ci0gICAgLy8gICAgYnJlYWs7CisgICAgYWJvcnQ6CisgICAgICAgIChWT0lE
KVhFTkJVU19TVE9SRShUcmFuc2FjdGlvbkVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZGcm9udGVuZC0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBU
cmFuc2FjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgfSB3aGlsZSAoc3RhdHVzID09IFNUQVRVU19SRVRSWSk7CiAKICAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKQEAgLTc2NCwxMSArNzkxLDI0IEBAIEZyb250ZW5kQ29ubmVj
dCgKICAgICAgICAgaWYgKCFGcm9udGVuZElzT25saW5lKEZyb250ZW5kKSkKICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgIEZyb250ZW5kU2V0WGVuYnVzU3RhdGUoRnJvbnRlbmQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOwotCiAgICAg
ICAgIEZyb250ZW5kV2FpdEZvckJhY2tlbmRYZW5idXNTdGF0ZUNoYW5nZShGcm9udGVuZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGF0ZSk7CisK
KyAgICAgICAgc3dpdGNoIChTdGF0ZSkgeworICAgICAgICBjYXNlIFhlbmJ1c1N0YXRlSW5pdFdh
aXQ6CisgICAgICAgICAgICBGcm9udGVuZFNldFhlbmJ1c1N0YXRlKEZyb250ZW5kLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBYZW5idXNTdGF0ZUNvbm5lY3RlZDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFhlbmJ1c1N0YXRlVW5rbm93bjoKKyAgICAgICAg
Y2FzZSBYZW5idXNTdGF0ZUNsb3Npbmc6CisgICAgICAgIGNhc2UgWGVuYnVzU3RhdGVDbG9zZWQ6
CisgICAgICAgICAgICBGcm9udGVuZFNldE9mZmxpbmUoRnJvbnRlbmQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7CkBAIC03ODQsNyArODI0
LDcgQEAgRnJvbnRlbmRDb25uZWN0KAogICAgIGlmIChOVF9TVUNDRVNTKHN0YXR1cykpIHsKICAg
ICAgICAgTGVuZ3RoID0gKFVMT05HKXN0cmxlbihCdWZmZXIpOwogCi0gICAgICAgIEZyb250ZW5k
LT5OYW1lID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0aCk7CisgICAgICAgIEZyb250ZW5kLT5O
YW1lID0gX19Gcm9udGVuZEFsbG9jYXRlKExlbmd0aCArIDEpOwogICAgICAgICBpZiAoRnJvbnRl
bmQtPk5hbWUpCiAgICAgICAgICAgICBSdGxDb3B5TWVtb3J5KEZyb250ZW5kLT5OYW1lLCBCdWZm
ZXIsIExlbmd0aCk7CiAKQEAgLTgwMiw3ICs4NDIsNyBAQCBGcm9udGVuZENvbm5lY3QoCiAgICAg
aWYgKE5UX1NVQ0NFU1Moc3RhdHVzKSkgewogICAgICAgICBMZW5ndGggPSAoVUxPTkcpc3RybGVu
KEJ1ZmZlcik7CiAKLSAgICAgICAgRnJvbnRlbmQtPlByb3RvY29sID0gX19Gcm9udGVuZEFsbG9j
YXRlKExlbmd0aCk7CisgICAgICAgIEZyb250ZW5kLT5Qcm90b2NvbCA9IF9fRnJvbnRlbmRBbGxv
Y2F0ZShMZW5ndGggKyAxKTsKICAgICAgICAgaWYgKEZyb250ZW5kLT5Qcm90b2NvbCkKICAgICAg
ICAgICAgIFJ0bENvcHlNZW1vcnkoRnJvbnRlbmQtPlByb3RvY29sLCBCdWZmZXIsIExlbmd0aCk7
CiAKQEAgLTgyMCwxMiArODYwLDIxIEBAIGZhaWw1OgogZmFpbDQ6CiAgICAgRXJyb3IoImZhaWw0
XG4iKTsKIAotLy9mYWlsMzoKKyAgICBSaW5nRGlzY29ubmVjdChGcm9udGVuZC0+UmluZyk7CisK
K2ZhaWwzOgogICAgIEVycm9yKCJmYWlsM1xuIik7CiAKKyAgICBYRU5CVVNfREVCVUcoRGVyZWdp
c3RlciwKKyAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAg
ICAgICAgICAgICAgRnJvbnRlbmQtPkRlYnVnQ2FsbGJhY2spOworICAgIEZyb250ZW5kLT5EZWJ1
Z0NhbGxiYWNrID0gTlVMTDsKKwogZmFpbDI6CiAgICAgRXJyb3IoImZhaWwyXG4iKTsKIAorICAg
IFhFTkJVU19ERUJVRyhSZWxlYXNlLCAmRnJvbnRlbmQtPkRlYnVnSW50ZXJmYWNlKTsKKwogZmFp
bDE6CiAgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKIApAQCAtODQ1LDcgKzg5
NCw3IEBAIEZyb250ZW5kRGlzY29ubmVjdCgKICAgICBfX0Zyb250ZW5kRnJlZShGcm9udGVuZC0+
TmFtZSk7CiAgICAgRnJvbnRlbmQtPk5hbWUgPSBOVUxMOwogCi0gICAgLy8gVE9ETzogRGlzY29u
bmVjdCBSaW5nCisgICAgUmluZ0Rpc2Nvbm5lY3QoRnJvbnRlbmQtPlJpbmcpOwogCiAgICAgWEVO
QlVTX0RFQlVHKERlcmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+RGVidWdJ
bnRlcmZhY2UsCkBAIC04NjIsMTQgKzkxMSwyMiBAQCBGcm9udGVuZEVuYWJsZSgKICAgICBJTiAg
UFhFTkNPTlNfRlJPTlRFTkQgICAgRnJvbnRlbmQKICAgICApCiB7CisgICAgTlRTVEFUVVMgICAg
ICAgICAgICAgICAgc3RhdHVzOworCiAgICAgVHJhY2UoIj09PT0+XG4iKTsKIAotICAgIFVOUkVG
RVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOwotICAgIC8vIFRPRE86IEVuYWJsZSBSaW5nCisg
ICAgc3RhdHVzID0gUmluZ0VuYWJsZShGcm9udGVuZC0+UmluZyk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDE7CiAKICAgICBUcmFjZSgiPD09PT1cbiIp
OwogCiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMToKKyAgICBFcnJvcigiZmFp
bDEgKCUwOHgpXG4iLCBzdGF0dXMpOworCisgICAgcmV0dXJuIHN0YXR1czsKIH0KIAogc3RhdGlj
IFZPSUQKQEAgLTg3OSw4ICs5MzYsNyBAQCBGcm9udGVuZERpc2FibGUoCiB7CiAgICAgVHJhY2Uo
Ij09PT0+XG4iKTsKIAotICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOwotICAg
IC8vIFRPRE86IERpc2FibGUgUmluZworICAgIFJpbmdEaXNhYmxlKEZyb250ZW5kLT5SaW5nKTsK
IAogICAgIFRyYWNlKCI8PT09PVxuIik7CiB9CkBAIC0xMDQ4LDYgKzExMDQsNyBAQCBfX0Zyb250
ZW5kUmVzdW1lKAogCiAgICAgQVNTRVJUM1UoRnJvbnRlbmQtPlN0YXRlLCA9PSAsIEZST05URU5E
X1VOS05PV04pOwogICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRnJvbnRlbmQpOworICAgIC8v
IEN1cnJlbnQgYmFja2VuZHMgZG9udCBsaWtlIHJlLW9wZW5pbmcgYWZ0ZXIgYmVpbmcgY2xvc2Vk
CiAgICAgLy8oVk9JRClGcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBGUk9OVEVORF9DTE9TRUQp
OwogfQogCkBAIC0xMDU5LDcgKzExMTYsNyBAQCBfX0Zyb250ZW5kU3VzcGVuZCgKICAgICBBU1NF
UlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09ICwgRElTUEFUQ0hfTEVWRUwpOwogCiAgICAgVU5S
RUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9udGVuZCk7Ci0gICAgLy8oVk9JRClGcm9udGVuZFNldFN0
YXRlKEZyb250ZW5kLCBGUk9OVEVORF9VTktOT1dOKTsKKyAgICAoVk9JRClGcm9udGVuZFNldFN0
YXRlKEZyb250ZW5kLCBGUk9OVEVORF9VTktOT1dOKTsKIH0KIAogc3RhdGljIERFQ0xTUEVDX05P
SU5MSU5FIFZPSUQKQEAgLTExODYsNyArMTI0Myw4IEBAIEZyb250ZW5kRGVzdHJveSgKIAogICAg
IFJ0bFplcm9NZW1vcnkoJkZyb250ZW5kLT5FamVjdEV2ZW50LCBzaXplb2YoS0VWRU5UKSk7CiAK
LSAgICAvLyBUT0RPOiBUZWFyZG93biBSaW5nCisgICAgUmluZ0Rlc3Ryb3koRnJvbnRlbmQtPlJp
bmcpOworICAgIEZyb250ZW5kLT5SaW5nID0gTlVMTDsKIAogICAgIFJ0bFplcm9NZW1vcnkoJkZy
b250ZW5kLT5TdG9yZUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNf
U1RPUkVfSU5URVJGQUNFKSk7CkBAIC0xMjk0LDQwICsxMzUyLDQyIEBAIEZyb250ZW5kQWJpQWNx
dWlyZSgKICAgICApCiB7CiAgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAgICAgICAgICAgICBGcm9u
dGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0OworICAgIExPTkcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ291bnQ7CiAgICAgS0lSUUwgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJcnFsOwogICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOwogCi0g
ICAgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJkZyb250ZW5kLT5SZWZDb3VudCk7CisgICAgQ291bnQg
PSBJbnRlcmxvY2tlZEluY3JlbWVudCgmRnJvbnRlbmQtPlJlZkNvdW50KTsKKyAgICBpZiAoQ291
bnQgPT0gMikgeworICAgICAgICBLZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOwog
Ci0gICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUwsICZJcnFsKTsKKyAgICAgICAgc3RhdHVz
ID0gWEVOQlVTX1NVU1BFTkQoQWNxdWlyZSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsK
KyAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgICAgICBnb3RvIGZhaWwx
OwogCi0gICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoQWNxdWlyZSwgJkZyb250ZW5kLT5TdXNw
ZW5kSW50ZXJmYWNlKTsKLSAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAgZ290
byBmYWlsMTsKKyAgICAgICAgX19Gcm9udGVuZFJlc3VtZShGcm9udGVuZCk7CiAKLSAgICBfX0Zy
b250ZW5kUmVzdW1lKEZyb250ZW5kKTsKKyAgICAgICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQo
UmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3Vz
cGVuZEludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VTUEVORF9D
QUxMQkFDS19MQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZFN1
c3BlbmRDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZGcm9udGVuZC0+U3VzcGVuZENhbGxi
YWNrKTsKKyAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgICAgICBnb3Rv
IGZhaWwyOwogCi0gICAgc3RhdHVzID0gWEVOQlVTX1NVU1BFTkQoUmVnaXN0ZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNVU1BFTkRfQ0FMTEJBQ0tfTEFURSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGcm9udGVuZFN1c3BlbmRDYWxsYmFjaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGcm9udGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRnJv
bnRlbmQtPlN1c3BlbmRDYWxsYmFjayk7Ci0gICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCi0g
ICAgICAgIGdvdG8gZmFpbDI7CisgICAgICAgIEtlTG93ZXJJcnFsKElycWwpOwogCi0gICAgS2VM
b3dlcklycWwoSXJxbCk7CisgICAgICAgIEtlQ2xlYXJFdmVudCgmRnJvbnRlbmQtPkVqZWN0RXZl
bnQpOworICAgICAgICBUaHJlYWRXYWtlKEZyb250ZW5kLT5FamVjdFRocmVhZCk7CiAKLSAgICBL
ZUNsZWFyRXZlbnQoJkZyb250ZW5kLT5FamVjdEV2ZW50KTsKLSAgICBUaHJlYWRXYWtlKEZyb250
ZW5kLT5FamVjdFRocmVhZCk7Ci0KLSAgICBUcmFjZSgid2FpdGluZyBmb3IgZWplY3QgdGhyZWFk
XG4iKTsKKyAgICAgICAgVHJhY2UoIndhaXRpbmcgZm9yIGVqZWN0IHRocmVhZFxuIik7CiAKLSAg
ICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkZyb250ZW5kLT5FamVjdEV2ZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZBTFNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAg
ICAgKFZPSUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZGcm9udGVuZC0+RWplY3RFdmVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOworICAgIH0KIAogICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsKIApAQCAtMTM1
OCwzMSArMTQxOCwzMSBAQCBGcm9udGVuZEFiaVJlbGVhc2UoCiAgICAgS0lSUUwgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJcnFsOwogCiAgICAgQ291bnQgPSBJbnRlcmxvY2tlZERlY3JlbWVu
dCgmRnJvbnRlbmQtPlJlZkNvdW50KTsKKyAgICBpZiAoQ291bnQgPT0gMSkgeworICAgICAgICBL
ZVJhaXNlSXJxbChESVNQQVRDSF9MRVZFTCwgJklycWwpOwogCi0gICAgS2VSYWlzZUlycWwoRElT
UEFUQ0hfTEVWRUwsICZJcnFsKTsKLQotICAgIFhFTkJVU19TVVNQRU5EKERlcmVnaXN0ZXIsCi0g
ICAgICAgICAgICAgICAgICAgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlLAotICAgICAgICAg
ICAgICAgICAgIEZyb250ZW5kLT5TdXNwZW5kQ2FsbGJhY2spOwotICAgIEZyb250ZW5kLT5TdXNw
ZW5kQ2FsbGJhY2sgPSBOVUxMOwotCi0gICAgX19Gcm9udGVuZFN1c3BlbmQoRnJvbnRlbmQpOwor
ICAgICAgICBYRU5CVVNfU1VTUEVORChEZXJlZ2lzdGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAmRnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEZy
b250ZW5kLT5TdXNwZW5kQ2FsbGJhY2spOworICAgICAgICBGcm9udGVuZC0+U3VzcGVuZENhbGxi
YWNrID0gTlVMTDsKIAotICAgIFhFTkJVU19TVVNQRU5EKFJlbGVhc2UsICZGcm9udGVuZC0+U3Vz
cGVuZEludGVyZmFjZSk7CisgICAgICAgIF9fRnJvbnRlbmRTdXNwZW5kKEZyb250ZW5kKTsKIAot
ICAgIEtlTG93ZXJJcnFsKElycWwpOworICAgICAgICBYRU5CVVNfU1VTUEVORChSZWxlYXNlLCAm
RnJvbnRlbmQtPlN1c3BlbmRJbnRlcmZhY2UpOwogCi0gICAgS2VDbGVhckV2ZW50KCZGcm9udGVu
ZC0+RWplY3RFdmVudCk7Ci0gICAgVGhyZWFkV2FrZShGcm9udGVuZC0+RWplY3RUaHJlYWQpOwor
ICAgICAgICBLZUxvd2VySXJxbChJcnFsKTsKIAotICAgIFRyYWNlKCJ3YWl0aW5nIGZvciBlamVj
dCB0aHJlYWRcbiIpOworICAgICAgICBLZUNsZWFyRXZlbnQoJkZyb250ZW5kLT5FamVjdEV2ZW50
KTsKKyAgICAgICAgVGhyZWFkV2FrZShGcm9udGVuZC0+RWplY3RUaHJlYWQpOwogCi0gICAgKFZP
SUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KCZGcm9udGVuZC0+RWplY3RFdmVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aXZlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBLZXJuZWxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIFRy
YWNlKCJ3YWl0aW5nIGZvciBlamVjdCB0aHJlYWRcbiIpOwogCisgICAgICAgIChWT0lEKUtlV2Fp
dEZvclNpbmdsZU9iamVjdCgmRnJvbnRlbmQtPkVqZWN0RXZlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBLZXJuZWxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAg
ICB9CiAgICAgaWYgKENvdW50ID09IDApCiAgICAgICAgIEZyb250ZW5kRGVzdHJveShGcm9udGVu
ZCk7CiB9CkBAIC0xNDAzLDkgKzE0NjMsNyBAQCBGcm9udGVuZEFiaUQzVG9EMCgKIHsKICAgICBQ
WEVOQ09OU19GUk9OVEVORCAgICAgICAgICAgICAgIEZyb250ZW5kID0gKFBYRU5DT05TX0ZST05U
RU5EKUNvbnRleHQ7CiAKLSAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKEZyb250ZW5kKTsKLSAg
ICAvL3JldHVybiBGcm9udGVuZFNldFN0YXRlKEZyb250ZW5kLCBGUk9OVEVORF9FTkFCTEVEKTsK
LSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisgICAgcmV0dXJuIEZyb250ZW5kU2V0U3RhdGUo
RnJvbnRlbmQsIEZST05URU5EX0VOQUJMRUQpOwogfQogCiBzdGF0aWMgVk9JRApAQCAtMTQxNiw3
ICsxNDc0LDcgQEAgRnJvbnRlbmRBYmlEMFRvRDMoCiAgICAgUFhFTkNPTlNfRlJPTlRFTkQgICAg
ICAgICAgICAgICBGcm9udGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0OwogCiAgICAg
VU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGcm9udGVuZCk7Ci0gICAgLy8oVk9JRCkgRnJvbnRlbmRT
ZXRTdGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfQ0xPU0VEKTsKKyAgICAoVk9JRCkgRnJvbnRlbmRT
ZXRTdGF0ZShGcm9udGVuZCwgRlJPTlRFTkRfQ0xPU0VEKTsKIH0KIAogc3RhdGljIE5UU1RBVFVT
CkBAIC0xNDI1LDkgKzE0ODMsOSBAQCBGcm9udGVuZEFiaU9wZW4oCiAgICAgSU4gIFBGSUxFX09C
SkVDVCAgICAgICAgICAgICAgICBGaWxlT2JqZWN0CiAgICAgKQogewotICAgIFVOUkVGRVJFTkNF
RF9QQVJBTUVURVIoQ29udGV4dCk7Ci0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGaWxlT2Jq
ZWN0KTsKLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisgICAgUFhFTkNPTlNfRlJPTlRFTkQg
ICAgICAgICAgICAgICBGcm9udGVuZCA9IChQWEVOQ09OU19GUk9OVEVORClDb250ZXh0OworCisg
ICAgcmV0dXJuIFJpbmdPcGVuKEZyb250ZW5kLT5SaW5nLCBGaWxlT2JqZWN0KTsKIH0KIAogc3Rh
dGljIE5UU1RBVFVTCkBAIC0xNDM2LDkgKzE0OTQsOSBAQCBGcm9udGVuZEFiaUNsb3NlKAogICAg
IElOICBQRklMRV9PQkpFQ1QgICAgICAgICAgICAgICAgRmlsZU9iamVjdAogICAgICkKIHsKLSAg
ICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnRleHQpOwotICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoRmlsZU9iamVjdCk7Ci0gICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworICAgIFBYRU5D
T05TX0ZST05URU5EICAgICAgICAgICAgICAgRnJvbnRlbmQgPSAoUFhFTkNPTlNfRlJPTlRFTkQp
Q29udGV4dDsKKworICAgIHJldHVybiBSaW5nQ2xvc2UoRnJvbnRlbmQtPlJpbmcsIEZpbGVPYmpl
Y3QpOwogfQogCiBzdGF0aWMgTlRTVEFUVVMKQEAgLTE0NTUsNyArMTUxMyw3IEBAIEZyb250ZW5k
QWJpUHV0UXVldWUoCiAgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NYWpvckZ1bmN0aW9uKSB7
CiAgICAgY2FzZSBJUlBfTUpfUkVBRDoKICAgICBjYXNlIElSUF9NSl9XUklURToKLSAgICAgICAg
cmV0dXJuIFNUQVRVU19ERVZJQ0VfTk9UX1JFQURZOworICAgICAgICByZXR1cm4gUmluZ1B1dFF1
ZXVlKEZyb250ZW5kLT5SaW5nLCBJcnApOwogCiAgICAgY2FzZSBJUlBfTUpfREVWSUNFX0NPTlRS
T0w6CiAgICAgICAgIHJldHVybiBGcm9udGVuZEdldFByb3BlcnR5KEZyb250ZW5kLCBJcnApOwpA
QCAtMTUyNiw3ICsxNTg0LDkgQEAgRnJvbnRlbmRDcmVhdGUoCiAgICAgRmRvR2V0U3VzcGVuZElu
dGVyZmFjZShQZG9HZXRGZG8oUGRvKSwgJkZyb250ZW5kLT5TdXNwZW5kSW50ZXJmYWNlKTsKICAg
ICBGZG9HZXRTdG9yZUludGVyZmFjZShQZG9HZXRGZG8oUGRvKSwgJkZyb250ZW5kLT5TdG9yZUlu
dGVyZmFjZSk7CiAKLSAgICAvLyBUT0RPOiBJbml0aWFsaXplIFJpbmcKKyAgICBzdGF0dXMgPSBS
aW5nQ3JlYXRlKEZyb250ZW5kLCAmRnJvbnRlbmQtPlJpbmcpOworICAgIGlmICghTlRfU1VDQ0VT
UyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWw0OwogCiAgICAgS2VJbml0aWFsaXplRXZlbnQo
JkZyb250ZW5kLT5FamVjdEV2ZW50LCBOb3RpZmljYXRpb25FdmVudCwgRkFMU0UpOwogCkBAIC0x
NTQ2LDkgKzE2MDYsMTAgQEAgZmFpbDU6CiAKICAgICBSdGxaZXJvTWVtb3J5KCZGcm9udGVuZC0+
RWplY3RFdmVudCwgc2l6ZW9mKEtFVkVOVCkpOwogCi0gICAgLy8gVE9ETzogVGVhcmRvd24gUmlu
ZworICAgIFJpbmdEZXN0cm95KEZyb250ZW5kLT5SaW5nKTsKKyAgICBGcm9udGVuZC0+UmluZyA9
IE5VTEw7CiAKLS8vZmFpbDQ6CitmYWlsNDoKICAgICBFcnJvcigiZmFpbDRcbiIpOwogCiAgICAg
UnRsWmVyb01lbW9yeSgmRnJvbnRlbmQtPlN0b3JlSW50ZXJmYWNlLApkaWZmIC0tZ2l0IGEvc3Jj
L3hlbmNvbnMvcmluZy5jIGIvc3JjL3hlbmNvbnMvcmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLjIwYzQ1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMveGVuY29ucy9y
aW5nLmMKQEAgLTAsMCArMSwxMDY0IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1z
IEluYy4KKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorKgorKiAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZQorKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICogICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisq
ICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCisq
ICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIKKyogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORAor
KiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLAorKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRgorKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywKKyogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyogU1VDSCBEQU1BR0UuCisq
LworCisjaW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDxudHN0cnNhZmUuaD4KKyNpbmNsdWRl
IDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPHhlbi5oPgorI2luY2x1ZGUgPGRlYnVnX2ludGVyZmFj
ZS5oPgorI2luY2x1ZGUgPHN0b3JlX2ludGVyZmFjZS5oPgorI2luY2x1ZGUgPGdudHRhYl9pbnRl
cmZhY2UuaD4KKyNpbmNsdWRlIDxldnRjaG5faW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlICJmcm9u
dGVuZC5oIgorI2luY2x1ZGUgInJpbmcuaCIKKyNpbmNsdWRlICJuYW1lcy5oIgorI2luY2x1ZGUg
ImRiZ19wcmludC5oIgorI2luY2x1ZGUgImFzc2VydC5oIgorI2luY2x1ZGUgInV0aWwuaCIKKwor
dHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfUVVFVUUgeworICAgIElPX0NTUSAgICAgICAgICAgICAg
ICAgIENzcTsKKyAgICBMSVNUX0VOVFJZICAgICAgICAgICAgICBMaXN0OworICAgIEtTUElOX0xP
Q0sgICAgICAgICAgIAlMb2NrOworfSBYRU5DT05TX1FVRVVFLCAqUFhFTkNPTlNfUVVFVUU7CisK
K3N0cnVjdCBfWEVOQ09OU19SSU5HIHsKKyAgICBQWEVOQ09OU19GUk9OVEVORCAgICAgICAgICAg
RnJvbnRlbmQ7CisgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZDsKKyAg
ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDsKKyAgICBLU1BJTl9MT0NLICAg
ICAgICAgICAgICAgICAgTG9jazsKKyAgICBQWEVOQlVTX0dOVFRBQl9DQUNIRSAgICAgICAgR250
dGFiQ2FjaGU7CisgICAgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICAgICpTaGFyZWQ7CisgICAg
UE1ETCAgICAgICAgICAgICAgICAgICAgICAgIE1kbDsKKyAgICBQWEVOQlVTX0dOVFRBQl9FTlRS
WSAgICAgICAgRW50cnk7CisgICAgS0RQQyAgICAgICAgICAgICAgICAgICAgICAgIERwYzsKKyAg
ICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgRHBjczsKKyAgICBVTE9ORyAgICAgICAgICAg
ICAgICAgICAgICAgRXZlbnRzOworICAgIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwgICAgICBDaGFu
bmVsOworICAgIFhFTkJVU19HTlRUQUJfSU5URVJGQUNFICAgICBHbnR0YWJJbnRlcmZhY2U7Cisg
ICAgWEVOQlVTX1NUT1JFX0lOVEVSRkFDRSAgICAgIFN0b3JlSW50ZXJmYWNlOworICAgIFhFTkJV
U19FVlRDSE5fSU5URVJGQUNFICAgICBFdnRjaG5JbnRlcmZhY2U7CisgICAgWEVOQlVTX0RFQlVH
X0lOVEVSRkFDRSAgICAgIERlYnVnSW50ZXJmYWNlOworICAgIFBYRU5CVVNfREVCVUdfQ0FMTEJB
Q0sgICAgICBEZWJ1Z0NhbGxiYWNrOworICAgIFhFTkNPTlNfUVVFVUUgICAgICAgICAgICAgICBS
ZWFkOworICAgIFhFTkNPTlNfUVVFVUUgICAgICAgICAgICAgICBXcml0ZTsKKyAgICBVTE9ORyAg
ICAgICAgICAgICAgICAgICAgICAgQnl0ZXNSZWFkOworICAgIFVMT05HICAgICAgICAgICAgICAg
ICAgICAgICBCeXRlc1dyaXR0ZW47Cit9OworCisjZGVmaW5lIE1BWE5BTUVMRU4gICAgICAgICAg
MTI4CisjZGVmaW5lIFhFTkNPTlNfUklOR19UQUcgICdHTklSJworCitzdGF0aWMgRk9SQ0VJTkxJ
TkUgUFZPSUQKK19fUmluZ0FsbG9jYXRlKAorICAgIElOICBVTE9ORyAgIExlbmd0aAorICAgICkK
K3sKKyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgTGVuZ3Ro
LCBYRU5DT05TX1JJTkdfVEFHKTsKK30KKworc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQKK19fUmlu
Z0ZyZWUoCisgICAgSU4gIFBWT0lEICAgQnVmZmVyCisgICAgKQoreworICAgIF9fRnJlZVBvb2xX
aXRoVGFnKEJ1ZmZlciwgWEVOQ09OU19SSU5HX1RBRyk7Cit9CisKK0lPX0NTUV9JTlNFUlRfSVJQ
X0VYIFJpbmdDc3FJbnNlcnRJcnBFeDsKKworTlRTVEFUVVMKK1JpbmdDc3FJbnNlcnRJcnBFeCgK
KyAgICBJTiAgUElPX0NTUSAgICAgICAgIENzcSwKKyAgICBJTiAgUElSUCAgICAgICAgICAgIEly
cCwKKyAgICBJTiAgUFZPSUQgICAgICAgICAgIEluc2VydENvbnRleHQgT1BUSU9OQUwKKyAgICAp
Cit7CisgICAgQk9PTEVBTiAgICAgICAgICAgICBSZUluc2VydCA9IChCT09MRUFOKShVTE9OR19Q
VFIpSW5zZXJ0Q29udGV4dDsKKyAgICBQWEVOQ09OU19RVUVVRSAgICAgIFF1ZXVlOworCisgICAg
UXVldWUgPSBDT05UQUlOSU5HX1JFQ09SRChDc3EsIFhFTkNPTlNfUVVFVUUsIENzcSk7CisKKyAg
ICBpZiAoUmVJbnNlcnQpIHsKKyAgICAgICAgLy8gVGhpcyBvbmx5IG9jY3VycyBpZiB0aGUgRFBD
IGRlLXF1ZXVlZCB0aGUgSVJQIGJ1dAorICAgICAgICAvLyB0aGVuIGZvdW5kIHRoZSBjb25zb2xl
IHRvIGJlIGJsb2NrZWQuCisgICAgICAgIEluc2VydEhlYWRMaXN0KCZRdWV1ZS0+TGlzdCwgJkly
cC0+VGFpbC5PdmVybGF5Lkxpc3RFbnRyeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSW5zZXJ0
VGFpbExpc3QoJlF1ZXVlLT5MaXN0LCAmSXJwLT5UYWlsLk92ZXJsYXkuTGlzdEVudHJ5KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7Cit9CisKK0lPX0NTUV9SRU1PVkVfSVJQ
IFJpbmdDc3FSZW1vdmVJcnA7CisKK1ZPSUQKK1JpbmdDc3FSZW1vdmVJcnAoCisgICAgSU4gIFBJ
T19DU1EgICAgIENzcSwKKyAgICBJTiAgUElSUCAgICAgICAgSXJwCisgICAgKQoreworICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoQ3NxKTsKKworICAgIFJlbW92ZUVudHJ5TGlzdCgmSXJwLT5U
YWlsLk92ZXJsYXkuTGlzdEVudHJ5KTsKK30KKworSU9fQ1NRX1BFRUtfTkVYVF9JUlAgUmluZ0Nz
cVBlZWtOZXh0SXJwOworCitQSVJQCitSaW5nQ3NxUGVla05leHRJcnAoCisgICAgSU4gIFBJT19D
U1EgICAgIENzcSwKKyAgICBJTiAgUElSUCAgICAgICAgSXJwLAorICAgIElOICBQVk9JRCAgICAg
ICBQZWVrQ29udGV4dCBPUFRJT05BTAorICAgICkKK3sKKyAgICBQWEVOQ09OU19RVUVVRSAgUXVl
dWU7CisgICAgUExJU1RfRU5UUlkgICAgIExpc3RFbnRyeTsKKyAgICBQSVJQICAgICAgICAgICAg
TmV4dElycDsKKworICAgIFF1ZXVlID0gQ09OVEFJTklOR19SRUNPUkQoQ3NxLCBYRU5DT05TX1FV
RVVFLCBDc3EpOworCisgICAgTGlzdEVudHJ5ID0gKElycCA9PSBOVUxMKSA/CisgICAgICAgIFF1
ZXVlLT5MaXN0LkZsaW5rIDoKKyAgICAgICAgSXJwLT5UYWlsLk92ZXJsYXkuTGlzdEVudHJ5LkZs
aW5rOworCisgICAgd2hpbGUgKExpc3RFbnRyeSAhPSAmUXVldWUtPkxpc3QpIHsKKyAgICAgICAg
UElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOworCisgICAgICAgIE5leHRJcnAgPSBD
T05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIElSUCwgVGFpbC5PdmVybGF5Lkxpc3RFbnRyeSk7
CisgICAgICAgIGlmIChQZWVrQ29udGV4dCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5l
eHRJcnA7CisKKyAgICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9j
YXRpb24oTmV4dElycCk7CisgICAgICAgIGlmIChTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0ID09
IChQRklMRV9PQkpFQ1QpUGVla0NvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gTmV4dElycDsK
KworICAgICAgICBMaXN0RW50cnkgPSBMaXN0RW50cnktPkZsaW5rOworICAgIH0KKworICAgIHJl
dHVybiBOVUxMOworfQorCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjI4MTY3KSAvLyBmdW5jdGlvbiBjaGFuZ2VzIElSUUwKKworSU9fQ1NRX0FDUVVJUkVf
TE9DSyBSaW5nQ3NxQWNxdWlyZUxvY2s7CisKK1ZPSUQKK1JpbmdDc3FBY3F1aXJlTG9jaygKKyAg
ICBJTiAgUElPX0NTUSAgICAgQ3NxLAorICAgIE9VVCBQS0lSUUwgICAgICBJcnFsCisgICAgKQor
eworICAgIFBYRU5DT05TX1FVRVVFICBRdWV1ZTsKKworICAgIFF1ZXVlID0gQ09OVEFJTklOR19S
RUNPUkQoQ3NxLCBYRU5DT05TX1FVRVVFLCBDc3EpOworCisgICAgS2VBY3F1aXJlU3BpbkxvY2so
JlF1ZXVlLT5Mb2NrLCBJcnFsKTsKK30KKworSU9fQ1NRX1JFTEVBU0VfTE9DSyBSaW5nQ3NxUmVs
ZWFzZUxvY2s7CisKK1ZPSUQKK1JpbmdDc3FSZWxlYXNlTG9jaygKKyAgICBJTiAgUElPX0NTUSAg
ICAgQ3NxLAorICAgIElOICBLSVJRTCAgICAgICBJcnFsCisgICAgKQoreworICAgIFBYRU5DT05T
X1FVRVVFICBRdWV1ZTsKKworICAgIFF1ZXVlID0gQ09OVEFJTklOR19SRUNPUkQoQ3NxLCBYRU5D
T05TX1FVRVVFLCBDc3EpOworCisgICAgS2VSZWxlYXNlU3BpbkxvY2soJlF1ZXVlLT5Mb2NrLCBJ
cnFsKTsKK30KKworI3ByYWdtYSB3YXJuaW5nKHBvcCkKKworSU9fQ1NRX0NPTVBMRVRFX0NBTkNF
TEVEX0lSUCBSaW5nQ3NxQ29tcGxldGVDYW5jZWxlZElycDsKKworVk9JRAorUmluZ0NzcUNvbXBs
ZXRlQ2FuY2VsZWRJcnAoCisgICAgSU4gIFBJT19DU1EgICAgICAgICBDc3EsCisgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnAKKyAgICApCit7CisgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFj
a0xvY2F0aW9uOworICAgIFVDSEFSICAgICAgICAgICAgICAgTWFqb3JGdW5jdGlvbjsKKworICAg
IFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3NxKTsKKworICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgTWFqb3JGdW5jdGlvbiA9IFN0YWNr
TG9jYXRpb24tPk1ham9yRnVuY3Rpb247CisKKyAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9u
ID0gMDsKKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19DQU5DRUxMRUQ7CisKKyAg
ICBUcmFjZSgiQ0FOQ0VMTEVEICglMDJ4OiVzKVxuIiwKKyAgICAgICAgICBNYWpvckZ1bmN0aW9u
LAorICAgICAgICAgIE1ham9yRnVuY3Rpb25OYW1lKE1ham9yRnVuY3Rpb24pKTsKKworICAgIElv
Q29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsKK30KKworc3RhdGljIEZPUkNF
SU5MSU5FIFZPSUQKK19fUmluZ0NhbmNlbFJlcXVlc3RzKAorICAgIElOICBQWEVOQ09OU19SSU5H
ICAgUmluZywKKyAgICBJTiAgUEZJTEVfT0JKRUNUICAgIEZpbGVPYmplY3QKKyAgICApCit7Cisg
ICAgZm9yICg7OykgeworICAgICAgICBQSVJQICAgIElycDsKKworICAgICAgICBJcnAgPSBJb0Nz
cVJlbW92ZU5leHRJcnAoJlJpbmctPlJlYWQuQ3NxLCBGaWxlT2JqZWN0KTsKKyAgICAgICAgaWYg
KElycCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUmluZ0NzcUNvbXBs
ZXRlQ2FuY2VsZWRJcnAoJlJpbmctPlJlYWQuQ3NxLCBJcnApOworICAgIH0KKyAgICBmb3IgKDs7
KSB7CisgICAgICAgIFBJUlAgICAgSXJwOworCisgICAgICAgIElycCA9IElvQ3NxUmVtb3ZlTmV4
dElycCgmUmluZy0+V3JpdGUuQ3NxLCBGaWxlT2JqZWN0KTsKKyAgICAgICAgaWYgKElycCA9PSBO
VUxMKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUmluZ0NzcUNvbXBsZXRlQ2FuY2Vs
ZWRJcnAoJlJpbmctPldyaXRlLkNzcSwgSXJwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBWT0lECitS
aW5nQWNxdWlyZUxvY2soCisgICAgSU4gIFBWT0lEICAgICAgIEFyZ3VtZW50CisgICAgKQorewor
ICAgIFBYRU5DT05TX1JJTkcgICBSaW5nID0gQXJndW1lbnQ7CisKKyAgICBLZUFjcXVpcmVTcGlu
TG9ja0F0RHBjTGV2ZWwoJlJpbmctPkxvY2spOworfQorCitzdGF0aWMgVk9JRAorUmluZ1JlbGVh
c2VMb2NrKAorICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudAorICAgICkKK3sKKyAgICBQWEVO
Q09OU19SSU5HICAgUmluZyA9IEFyZ3VtZW50OworCisjcHJhZ21hIHByZWZhc3Qoc3VwcHJlc3M6
MjYxMTApCisgICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBjTGV2ZWwoJlJpbmctPkxvY2spOwor
fQorCitOVFNUQVRVUworUmluZ09wZW4oCisgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nLAor
ICAgIElOICBQRklMRV9PQkpFQ1QgICAgRmlsZU9iamVjdAorICAgICkKK3sKKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKFJpbmcpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoRmlsZU9i
amVjdCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitOVFNUQVRVUworUmluZ0Ns
b3NlKAorICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZywKKyAgICBJTiAgUEZJTEVfT0JKRUNU
ICAgIEZpbGVPYmplY3QKKyAgICApCit7CisgICAgX19SaW5nQ2FuY2VsUmVxdWVzdHMoUmluZywg
RmlsZU9iamVjdCk7CisgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOworfQorCitOVFNUQVRVUwor
UmluZ1B1dFF1ZXVlKAorICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZywKKyAgICBJTiAgUElS
UCAgICAgICAgICAgIElycAorICAgICkKK3sKKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gIFN0YWNr
TG9jYXRpb247CisgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7CisKKyAgICBTdGFja0xv
Y2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworCisgICAgc3dpdGNo
IChTdGFja0xvY2F0aW9uLT5NYWpvckZ1bmN0aW9uKSB7CisgICAgY2FzZSBJUlBfTUpfUkVBRDoK
KyAgICAgICAgc3RhdHVzID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmluZy0+UmVhZC5Dc3EsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXJwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBW
T0lEKUZBTFNFKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElSUF9NSl9XUklURToKKyAg
ICAgICAgc3RhdHVzID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmluZy0+V3JpdGUuQ3NxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElycCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQVk9J
RClGQUxTRSk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
KEZBTFNFKTsKKyAgICAgICAgc3RhdHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7IC8vIEtlZXAg
U0RWIGhhcHB5CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoc3RhdHVzICE9IFNUQVRV
U19QRU5ESU5HKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAgS2VJbnNlcnRRdWV1ZURwYygm
UmluZy0+RHBjLCBOVUxMLCBOVUxMKTsKKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7CisKK2Zh
aWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICByZXR1cm4g
c3RhdHVzOworfQorCitzdGF0aWMgVUxPTkcKK1JpbmdDb3B5RnJvbVJlYWQoCisgICAgSU4gIFBY
RU5DT05TX1JJTkcgICAgICAgICAgIFJpbmcsCisgICAgSU4gIFBDSEFSICAgICAgICAgICAgICAg
ICAgIERhdGEsCisgICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAgIExlbmd0aAorICAgICkK
K3sKKyAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgICAgKlNoYXJlZDsKKyAgICBYRU5DT05T
X1JJTkdfSURYICAgICAgICAgICAgY29uczsKKyAgICBYRU5DT05TX1JJTkdfSURYICAgICAgICAg
ICAgcHJvZDsKKyAgICBVTE9ORyAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0OworCisgICAg
U2hhcmVkID0gUmluZy0+U2hhcmVkOworCisgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICBj
b25zID0gU2hhcmVkLT5pbl9jb25zOworICAgIHByb2QgPSBTaGFyZWQtPmluX3Byb2Q7CisKKyAg
ICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgIE9mZnNldCA9IDA7CisgICAgd2hpbGUgKExlbmd0
aCAhPSAwKSB7CisgICAgICAgIFVMT05HICAgQXZhaWxhYmxlOworICAgICAgICBVTE9ORyAgIElu
ZGV4OworICAgICAgICBVTE9ORyAgIENvcHlMZW5ndGg7CisKKyAgICAgICAgQXZhaWxhYmxlID0g
cHJvZCAtIGNvbnM7CisKKyAgICAgICAgaWYgKEF2YWlsYWJsZSA9PSAwKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgSW5kZXggPSBNQVNLX1hFTkNPTlNfSURYKGNvbnMsIFNoYXJlZC0+
aW4pOworCisgICAgICAgIENvcHlMZW5ndGggPSBfX21pbihMZW5ndGgsIEF2YWlsYWJsZSk7Cisg
ICAgICAgIENvcHlMZW5ndGggPSBfX21pbihDb3B5TGVuZ3RoLCBzaXplb2YoU2hhcmVkLT5pbikg
LSBJbmRleCk7CisKKyAgICAgICAgUnRsQ29weU1lbW9yeShEYXRhICsgT2Zmc2V0LCAmU2hhcmVk
LT5pbltJbmRleF0sIENvcHlMZW5ndGgpOworCisgICAgICAgIE9mZnNldCArPSBDb3B5TGVuZ3Ro
OworICAgICAgICBMZW5ndGggLT0gQ29weUxlbmd0aDsKKworICAgICAgICBjb25zICs9IENvcHlM
ZW5ndGg7CisgICAgfQorCisgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICBTaGFyZWQtPmlu
X2NvbnMgPSBjb25zOworCisgICAgS2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICByZXR1cm4gT2Zm
c2V0OworfQorCitzdGF0aWMgVUxPTkcKK1JpbmdDb3B5VG9Xcml0ZSgKKyAgICBJTiAgUFhFTkNP
TlNfUklORyAgICAgICAgICAgUmluZywKKyAgICBJTiAgUENIQVIgICAgICAgICAgICAgICAgICAg
RGF0YSwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgTGVuZ3RoCisgICAgKQorewor
ICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAgICAqU2hhcmVkOworICAgIFhFTkNPTlNfUklO
R19JRFggICAgICAgICAgICBjb25zOworICAgIFhFTkNPTlNfUklOR19JRFggICAgICAgICAgICBw
cm9kOworICAgIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQ7CisKKyAgICBTaGFy
ZWQgPSBSaW5nLT5TaGFyZWQ7CisKKyAgICBLZU1lbW9yeUJhcnJpZXIoKTsKKworICAgIHByb2Qg
PSBTaGFyZWQtPm91dF9wcm9kOworICAgIGNvbnMgPSBTaGFyZWQtPm91dF9jb25zOworCisgICAg
S2VNZW1vcnlCYXJyaWVyKCk7CisKKyAgICBPZmZzZXQgPSAwOworICAgIHdoaWxlIChMZW5ndGgg
IT0gMCkgeworICAgICAgICBVTE9ORyAgIEF2YWlsYWJsZTsKKyAgICAgICAgVUxPTkcgICBJbmRl
eDsKKyAgICAgICAgVUxPTkcgICBDb3B5TGVuZ3RoOworCisgICAgICAgIEF2YWlsYWJsZSA9IGNv
bnMgKyBzaXplb2YoU2hhcmVkLT5vdXQpIC0gcHJvZDsKKworICAgICAgICBpZiAoQXZhaWxhYmxl
ID09IDApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBJbmRleCA9IE1BU0tfWEVOQ09O
U19JRFgocHJvZCwgU2hhcmVkLT5vdXQpOworCisgICAgICAgIENvcHlMZW5ndGggPSBfX21pbihM
ZW5ndGgsIEF2YWlsYWJsZSk7CisgICAgICAgIENvcHlMZW5ndGggPSBfX21pbihDb3B5TGVuZ3Ro
LCBzaXplb2YoU2hhcmVkLT5vdXQpIC0gSW5kZXgpOworCisgICAgICAgIFJ0bENvcHlNZW1vcnko
JlNoYXJlZC0+b3V0W0luZGV4XSwgRGF0YSArIE9mZnNldCwgQ29weUxlbmd0aCk7CisKKyAgICAg
ICAgT2Zmc2V0ICs9IENvcHlMZW5ndGg7CisgICAgICAgIExlbmd0aCAtPSBDb3B5TGVuZ3RoOwor
CisgICAgICAgIHByb2QgKz0gQ29weUxlbmd0aDsKKyAgICB9CisKKyAgICBLZU1lbW9yeUJhcnJp
ZXIoKTsKKworICAgIFNoYXJlZC0+b3V0X3Byb2QgPSBwcm9kOworCisgICAgS2VNZW1vcnlCYXJy
aWVyKCk7CisKKyAgICByZXR1cm4gT2Zmc2V0OworfQorCitzdGF0aWMgQk9PTEVBTgorUmluZ1Bv
bGwoCisgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nCisgICAgKQoreworICAgIFBJUlAgICAg
ICAgICAgICAgICAgSXJwOworICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsK
KyAgICBVTE9ORyAgICAgICAgICAgICAgIExlbmd0aDsKKyAgICBQQ0hBUiAgICAgICAgICAgICAg
IEJ1ZmZlcjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsKKworICAgIGZvciAoOzsp
IHsKKyAgICAgICAgVUxPTkcgICAgICAgICAgIFJlYWQ7CisKKyAgICAgICAgSXJwID0gSW9Dc3FS
ZW1vdmVOZXh0SXJwKCZSaW5nLT5SZWFkLkNzcSwgTlVMTCk7CisgICAgICAgIGlmIChJcnAgPT0g
TlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFN0YWNrTG9jYXRpb24gPSBJb0dl
dEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7CisgICAgICAgIEFTU0VSVChTdGFja0xvY2F0
aW9uLT5NYWpvckZ1bmN0aW9uID09IElSUF9NSl9SRUFEKTsKKworICAgICAgICBMZW5ndGggPSBT
dGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlJlYWQuTGVuZ3RoOworICAgICAgICBCdWZmZXIgPSBJ
cnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOworCisgICAgICAgIFJlYWQgPSBSaW5nQ29w
eUZyb21SZWFkKFJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKTsKKyAgICAgICAgaWYgKFJl
YWQgPT0gMCkgeworICAgICAgICAgICAgc3RhdHVzID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmluZy0+
UmVhZC5Dc3EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElycCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFBWT0lEKVRSVUUpOworICAgICAgICAgICAgQVNTRVJU
KHN0YXR1cyA9PSBTVEFUVVNfUEVORElORyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIFJpbmctPkJ5dGVzUmVhZCArPSBSZWFkOworCisgICAgICAgIElycC0+SW9T
dGF0dXMuSW5mb3JtYXRpb24gPSBSZWFkOworICAgICAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9
IFNUQVRVU19TVUNDRVNTOworCisgICAgICAgIFRyYWNlKCJDT01QTEVURSAoUkVBRCkgKCV1IGJ5
dGVzKVxuIiwKKyAgICAgICAgICAgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbik7CisKKyAg
ICAgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOworICAgIH0KKwor
ICAgIGZvciAoOzspIHsKKyAgICAgICAgVUxPTkcgICAgICAgICAgIFdyaXR0ZW47CisKKyAgICAg
ICAgSXJwID0gSW9Dc3FSZW1vdmVOZXh0SXJwKCZSaW5nLT5Xcml0ZS5Dc3EsIE5VTEwpOworICAg
ICAgICBpZiAoSXJwID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBTdGFj
a0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOworICAgICAgICBB
U1NFUlQoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlvbiA9PSBJUlBfTUpfV1JJVEUpOworCisg
ICAgICAgIExlbmd0aCA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuV3JpdGUuTGVuZ3RoOwor
ICAgICAgICBCdWZmZXIgPSBJcnAtPkFzc29jaWF0ZWRJcnAuU3lzdGVtQnVmZmVyOworCisgICAg
ICAgIFdyaXR0ZW4gPSBSaW5nQ29weVRvV3JpdGUoUmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoKTsKKyAgICAgICAgaWYgKFdyaXR0ZW4gPT0gMCkgeworICAgICAgICAgICAgc3RhdHVz
ID0gSW9Dc3FJbnNlcnRJcnBFeCgmUmluZy0+V3JpdGUuQ3NxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQVk9J
RClUUlVFKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0dXMgPT0gU1RBVFVTX1BFTkRJTkcpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBSaW5nLT5CeXRlc1dyaXR0
ZW4gKz0gV3JpdHRlbjsKKworICAgICAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uID0gV3Jp
dHRlbjsKKyAgICAgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsKKwor
ICAgICAgICBUcmFjZSgiQ09NUExFVEUgKFdSSVRFKSAoJXUgYnl0ZXMpXG4iLAorICAgICAgICAg
ICAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uKTsKKworICAgICAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOwor
fQorCitfX2Rydl9mdW5jdGlvbkNsYXNzKEtERUZFUlJFRF9ST1VUSU5FKQorX19kcnZfbWF4SVJR
TChESVNQQVRDSF9MRVZFTCkKK19fZHJ2X21pbklSUUwoUEFTU0lWRV9MRVZFTCkKK19fZHJ2X3Nh
bWVJUlFMCitzdGF0aWMgVk9JRAorUmluZ0RwYygKKyAgICBJTiAgUEtEUEMgICAgICAgICAgICAg
ICBEcGMsCisgICAgSU4gIFBWT0lEICAgICAgICAgICAgICAgQ29udGV4dCwKKyAgICBJTiAgUFZP
SUQgICAgICAgICAgICAgICBBcmd1bWVudDEsCisgICAgSU4gIFBWT0lEICAgICAgICAgICAgICAg
QXJndW1lbnQyCisgICAgKQoreworICAgIFBYRU5DT05TX1JJTkcgICAgICAgUmluZyA9IENvbnRl
eHQ7CisKKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKERwYyk7CisgICAgVU5SRUZFUkVOQ0VE
X1BBUkFNRVRFUihBcmd1bWVudDEpOworICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQXJndW1l
bnQyKTsKKworICAgIEFTU0VSVChSaW5nICE9IE5VTEwpOworCisgICAgZm9yICg7OykgeworICAg
ICAgICBCT09MRUFOIEVuYWJsZWQ7CisgICAgICAgIEJPT0xFQU4gUmV0cnk7CisgICAgICAgIEtJ
UlFMICAgSXJxbDsKKworICAgICAgICBLZUFjcXVpcmVTcGluTG9jaygmUmluZy0+TG9jaywgJkly
cWwpOworICAgICAgICBFbmFibGVkID0gUmluZy0+RW5hYmxlZDsKKyAgICAgICAgS2VSZWxlYXNl
U3BpbkxvY2soJlJpbmctPkxvY2ssIElycWwpOworCisgICAgICAgIGlmICghRW5hYmxlZCkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEtlUmFpc2VJcnFsKERJU1BBVENIX0xFVkVMLCAm
SXJxbCk7CisgICAgICAgIFJldHJ5ID0gUmluZ1BvbGwoUmluZyk7CisgICAgICAgIEtlTG93ZXJJ
cnFsKElycWwpOworCisgICAgICAgIGlmICghUmV0cnkpCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICAoVk9JRCkgWEVOQlVTX0VWVENITihVbm1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBSaW5nLT5DaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKK30KKworS1NFUlZJQ0VfUk9VVElORSAgICBSaW5n
RXZ0Y2huQ2FsbGJhY2s7CisKK0JPT0xFQU4KK1JpbmdFdnRjaG5DYWxsYmFjaygKKyAgICBJTiAg
UEtJTlRFUlJVUFQgSW50ZXJydXB0T2JqZWN0LAorICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVu
dAorICAgICkKK3sKKyAgICBQWEVOQ09OU19SSU5HICAgUmluZyA9IEFyZ3VtZW50OworCisgICAg
VU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihJbnRlcnJ1cHRPYmplY3QpOworCisgICAgQVNTRVJUKFJp
bmcgIT0gTlVMTCk7CisKKyAgICBSaW5nLT5FdmVudHMrKzsKKworICAgIGlmIChLZUluc2VydFF1
ZXVlRHBjKCZSaW5nLT5EcGMsIE5VTEwsIE5VTEwpKQorICAgICAgICBSaW5nLT5EcGNzKys7CisK
KyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIFZPSUQKK1JpbmdEZWJ1Z0NhbGxiYWNrKAor
ICAgIElOICBQVk9JRCAgICAgICBBcmd1bWVudCwKKyAgICBJTiAgQk9PTEVBTiAgICAgQ3Jhc2hp
bmcKKyAgICApCit7CisgICAgUFhFTkNPTlNfUklORyAgIFJpbmcgPSBBcmd1bWVudDsKKworICAg
IFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoQ3Jhc2hpbmcpOworCisgICAgWEVOQlVTX0RFQlVHKFBy
aW50ZiwKKyAgICAgICAgICAgICAgICAgJlJpbmctPkRlYnVnSW50ZXJmYWNlLAorICAgICAgICAg
ICAgICAgICAiMHglcCBbJXNdXG4iLAorICAgICAgICAgICAgICAgICBSaW5nLAorICAgICAgICAg
ICAgICAgICAoUmluZy0+RW5hYmxlZCkgPyAiRU5BQkxFRCIgOiAiRElTQUJMRUQiKTsKKworICAg
IC8vIER1bXAgc2hhcmVkIHJpbmcKKyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAg
ICAgICAgICAmUmluZy0+RGVidWdJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJTSEFSRUQ6
IGluX2NvbnMgPSAldSBpbl9wcm9kID0gJXUgb3V0X2NvbnMgPSAldSBvdXRfcHJvZCA9ICV1XG4i
LAorICAgICAgICAgICAgICAgICBSaW5nLT5TaGFyZWQtPmluX2NvbnMsCisgICAgICAgICAgICAg
ICAgIFJpbmctPlNoYXJlZC0+aW5fcHJvZCwKKyAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVk
LT5vdXRfY29ucywKKyAgICAgICAgICAgICAgICAgUmluZy0+U2hhcmVkLT5vdXRfcHJvZCk7CisK
KyAgICBYRU5CVVNfREVCVUcoUHJpbnRmLAorICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICJCWVRFUzogcmVhZCA9ICV1IHdyaXR0ZW4gPSAl
dVxuIiwKKyAgICAgICAgICAgICAgICAgUmluZy0+Qnl0ZXNSZWFkLAorICAgICAgICAgICAgICAg
ICBSaW5nLT5CeXRlc1dyaXR0ZW4pOworfQorCitOVFNUQVRVUworUmluZ0VuYWJsZSgKKyAgICBJ
TiAgUFhFTkNPTlNfUklORyAgIFJpbmcKKyAgICApCit7CisgICAgVHJhY2UoIj09PT0+XG4iKTsK
KworICAgIEtlQWNxdWlyZVNwaW5Mb2NrQXREcGNMZXZlbCgmUmluZy0+TG9jayk7CisgICAgUmlu
Zy0+RW5hYmxlZCA9IFRSVUU7CisgICAgS2VSZWxlYXNlU3BpbkxvY2tGcm9tRHBjTGV2ZWwoJlJp
bmctPkxvY2spOworCisgICAgKFZPSUQpS2VJbnNlcnRRdWV1ZURwYygmUmluZy0+RHBjLCBOVUxM
LCBOVUxMKTsKKworICAgIFRyYWNlKCI8PT09PVxuIik7CisKKyAgICByZXR1cm4gU1RBVFVTX1NV
Q0NFU1M7Cit9CisKK1ZPSUQKK1JpbmdEaXNhYmxlKAorICAgIElOICBQWEVOQ09OU19SSU5HICAg
UmluZworICAgICkKK3sKKyAgICBUcmFjZSgiPT09PT5cbiIpOworCisgICAgQVNTRVJUM1UoS2VH
ZXRDdXJyZW50SXJxbCgpLCA9PSAsIERJU1BBVENIX0xFVkVMKTsKKworICAgIEtlQWNxdWlyZVNw
aW5Mb2NrQXREcGNMZXZlbCgmUmluZy0+TG9jayk7CisgICAgUmluZy0+RW5hYmxlZCA9IEZBTFNF
OworICAgIEtlUmVsZWFzZVNwaW5Mb2NrRnJvbURwY0xldmVsKCZSaW5nLT5Mb2NrKTsKKworICAg
IFRyYWNlKCI8PT09PVxuIik7Cit9CisKK05UU1RBVFVTCitSaW5nQ29ubmVjdCgKKyAgICBJTiAg
UFhFTkNPTlNfUklORyAgIFJpbmcKKyAgICApCit7CisgICAgQ0hBUiAgICAgICAgICAgICAgICBO
YW1lW01BWE5BTUVMRU5dOworICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOworCisgICAg
VHJhY2UoIj09PT0+XG4iKTsKKworICAgIEFTU0VSVCghUmluZy0+Q29ubmVjdGVkKTsKKworICAg
IHN0YXR1cyA9IFhFTkJVU19ERUJVRyhBY3F1aXJlLCAmUmluZy0+RGVidWdJbnRlcmZhY2UpOwor
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBnb3RvIGZhaWwxOworCisgICAg
c3RhdHVzID0gWEVOQlVTX0VWVENITihBY3F1aXJlLCAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlKTsK
KyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAg
IHN0YXR1cyA9IFhFTkJVU19HTlRUQUIoQWNxdWlyZSwgJlJpbmctPkdudHRhYkludGVyZmFjZSk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDM7CisKKyAg
ICBzdGF0dXMgPSBYRU5CVVNfU1RPUkUoQWNxdWlyZSwgJlJpbmctPlN0b3JlSW50ZXJmYWNlKTsK
KyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsNDsKKworICAg
IHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRmQShOYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2YoTmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJjb25zb2xlXyVzX2dudHRhYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBk
b0dldE5hbWUoRnJvbnRlbmRHZXRQZG8oUmluZy0+RnJvbnRlbmQpKSk7CisgICAgaWYgKCFOVF9T
VUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDU7CisKKyAgICBzdGF0dXMgPSBYRU5C
VVNfR05UVEFCKENyZWF0ZUNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmct
PkdudHRhYkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlu
Z0FjcXVpcmVMb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ1JlbGVhc2VMb2Nr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZSaW5nLT5HbnR0YWJDYWNoZSk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykp
CisgICAgICAgIGdvdG8gZmFpbDY7CisKKyAgICBSaW5nLT5NZGwgPSBfX0FsbG9jYXRlUGFnZSgp
OworCisgICAgc3RhdHVzID0gU1RBVFVTX05PX01FTU9SWTsKKyAgICBpZiAoUmluZy0+TWRsID09
IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDc7CisKKyAgICBBU1NFUlQoUmluZy0+TWRsLT5NZGxG
bGFncyAmIE1ETF9NQVBQRURfVE9fU1lTVEVNX1ZBKTsKKyAgICBSaW5nLT5TaGFyZWQgPSBSaW5n
LT5NZGwtPk1hcHBlZFN5c3RlbVZhOworICAgIEFTU0VSVChSaW5nLT5TaGFyZWQgIT0gTlVMTCk7
CisKKyAgICBzdGF0dXMgPSBYRU5CVVNfR05UVEFCKFBlcm1pdEZvcmVpZ25BY2Nlc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+R250dGFiSW50ZXJmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmluZy0+R250dGFiQ2FjaGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmRHZXRCYWNr
ZW5kRG9tYWluKFJpbmctPkZyb250ZW5kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1t
R2V0TWRsUGZuQXJyYXkoUmluZy0+TWRsKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJlJpbmctPkVudHJ5KTsKKyAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsODsKKworICAgIFJpbmct
PkNoYW5uZWwgPSBYRU5CVVNfRVZUQ0hOKE9wZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBYRU5CVVNfRVZUQ0hOX1RZUEVfVU5CT1VORCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSaW5nRXZ0Y2huQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cm9udGVuZEdldEJhY2tlbmREb21haW4oUmluZy0+RnJvbnRlbmQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VT
U0ZVTDsKKyAgICBpZiAoUmluZy0+Q2hhbm5lbCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw5
OworCisgICAgKFZPSUQpWEVOQlVTX0VWVENITihVbm1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgUmlu
Zy0+Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgVFJVRSk7CisKKyAgICBzdGF0dXMgPSBYRU5CVVNfREVCVUcoUmVnaXN0ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1Z0ludGVyZmFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19NT0RVTEVfXyAifFBPTExFUiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJpbmdEZWJ1Z0NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBSaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+RGVidWdDYWxsYmFjayk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDEwOworCisg
ICAgUmluZy0+Q29ubmVjdGVkID0gVFJVRTsKKworICAgIFRyYWNlKCI8PT09PVxuIik7CisgICAg
cmV0dXJuIFNUQVRVU19TVUNDRVNTOworCitmYWlsMTA6CisgICAgRXJyb3IoImZhaWwxMFxuIik7
CisKKyAgICBSaW5nLT5FdmVudHMgPSAwOworCisgICAgWEVOQlVTX0VWVENITihDbG9zZSwKKyAg
ICAgICAgICAgICAgICAgICZSaW5nLT5FdnRjaG5JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAg
ICBSaW5nLT5DaGFubmVsKTsKKyAgICBSaW5nLT5DaGFubmVsID0gTlVMTDsKKworZmFpbDk6Cisg
ICAgRXJyb3IoImZhaWw5XG4iKTsKKworICAgIChWT0lEKVhFTkJVU19HTlRUQUIoUmV2b2tlRm9y
ZWlnbkFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5HbnR0YWJJbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5HbnR0YWJDYWNoZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5FbnRy
eSk7CisgICAgUmluZy0+RW50cnkgPSBOVUxMOworCitmYWlsODoKKyAgICBFcnJvcigiZmFpbDhc
biIpOworCisgICAgUnRsWmVyb01lbW9yeShSaW5nLT5TaGFyZWQsIFBBR0VfU0laRSk7CisKKyAg
ICBSaW5nLT5TaGFyZWQgPSBOVUxMOworICAgIF9fRnJlZVBhZ2UoUmluZy0+TWRsKTsKKyAgICBS
aW5nLT5NZGwgPSBOVUxMOworCitmYWlsNzoKKyAgICBFcnJvcigiZmFpbDdcbiIpOworCisgICAg
WEVOQlVTX0dOVFRBQihEZXN0cm95Q2FjaGUsCisgICAgICAgICAgICAgICAgICAmUmluZy0+R250
dGFiSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgUmluZy0+R250dGFiQ2FjaGUpOworICAg
IFJpbmctPkdudHRhYkNhY2hlID0gTlVMTDsKKworZmFpbDY6CisgICAgRXJyb3IoImZhaWw2XG4i
KTsKKworZmFpbDU6CisgICAgRXJyb3IoImZhaWw1XG4iKTsKKworICAgIFhFTkJVU19TVE9SRShS
ZWxlYXNlLCAmUmluZy0+U3RvcmVJbnRlcmZhY2UpOworCitmYWlsNDoKKyAgICBFcnJvcigiZmFp
bDRcbiIpOworCisgICAgWEVOQlVTX0dOVFRBQihSZWxlYXNlLCAmUmluZy0+R250dGFiSW50ZXJm
YWNlKTsKKworZmFpbDM6CisgICAgRXJyb3IoImZhaWwzXG4iKTsKKworICAgIFhFTkJVU19FVlRD
SE4oUmVsZWFzZSwgJlJpbmctPkV2dGNobkludGVyZmFjZSk7CisKK2ZhaWwyOgorICAgIEVycm9y
KCJmYWlsMlxuIik7CisKKyAgICBYRU5CVVNfREVCVUcoUmVsZWFzZSwgJlJpbmctPkRlYnVnSW50
ZXJmYWNlKTsKKworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsK
KworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK05UU1RBVFVTCitSaW5nU3RvcmVXcml0ZSgKKyAg
ICBJTiAgUFhFTkNPTlNfUklORyAgIFJpbmcsCisgICAgSU4gIFBWT0lEICAgICAgICAgICBUcmFu
c2FjdGlvbgorICAgICkKK3sKKyAgICBVTE9ORyAgICAgICAgICAgICAgIFBvcnQ7CisgICAgVUxP
TkcgICAgICAgICAgICAgICBHcmFudFJlZjsKKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1
czsKKworICAgIFBvcnQgPSBYRU5CVVNfRVZUQ0hOKEdldFBvcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJlJpbmctPkV2dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBSaW5nLT5DaGFubmVsKTsKKworICAgIHN0YXR1cyA9IFhFTkJVU19TVE9SRShQcmludGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICZSaW5nLT5TdG9yZUludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHJhbnNhY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEZyb250ZW5kR2V0UGF0aChSaW5nLT5Gcm9udGVuZCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgUG9ydCk7CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAg
ICAgIGdvdG8gZmFpbDE7CisKKyAgICBHcmFudFJlZiA9IFhFTkJVU19HTlRUQUIoR2V0UmVmZXJl
bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+R250dGFiSW50ZXJmYWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nLT5FbnRyeSk7CisKKyAgICBzdGF0
dXMgPSBYRU5CVVNfU1RPUkUoUHJpbnRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUmlu
Zy0+U3RvcmVJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZEdldFBhdGgoUmluZy0+RnJvbnRl
bmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicmluZy1yZWYiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJXUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFudFJlZik7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDI7CisKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWwyOgorICAgIEVycm9yKCJmYWlsMlxuIik7
CisKK2ZhaWwxOgorICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7CisKKyAgICBy
ZXR1cm4gc3RhdHVzOworfQorCitWT0lECitSaW5nRGlzY29ubmVjdCgKKyAgICBJTiAgUFhFTkNP
TlNfUklORyAgIFJpbmcKKyAgICApCit7CisgICAgVHJhY2UoIj09PT0+XG4iKTsKKworICAgIEFT
U0VSVChSaW5nLT5Db25uZWN0ZWQpOworICAgIFJpbmctPkNvbm5lY3RlZCA9IEZBTFNFOworCisg
ICAgWEVOQlVTX0RFQlVHKERlcmVnaXN0ZXIsCisgICAgICAgICAgICAgICAgICZSaW5nLT5EZWJ1
Z0ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgUmluZy0+RGVidWdDYWxsYmFjayk7CisgICAg
UmluZy0+RGVidWdDYWxsYmFjayA9IE5VTEw7CisKKyAgICBSaW5nLT5EcGNzID0gMDsKKyAgICBS
aW5nLT5FdmVudHMgPSAwOworICAgIFJpbmctPkJ5dGVzUmVhZCA9IDA7CisgICAgUmluZy0+Qnl0
ZXNXcml0dGVuID0gMDsKKworICAgIFhFTkJVU19FVlRDSE4oQ2xvc2UsCisgICAgICAgICAgICAg
ICAgICAmUmluZy0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgUmluZy0+Q2hh
bm5lbCk7CisgICAgUmluZy0+Q2hhbm5lbCA9IE5VTEw7CisKKyAgICAoVk9JRClYRU5CVVNfR05U
VEFCKFJldm9rZUZvcmVpZ25BY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAmUmluZy0+
R250dGFiSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgUmluZy0+R250dGFiQ2Fj
aGUsCisgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgUmluZy0+RW50cnkpOworICAgIFJpbmctPkVudHJ5ID0gTlVMTDsKKworICAgIFJ0bFplcm9N
ZW1vcnkoUmluZy0+U2hhcmVkLCBQQUdFX1NJWkUpOworCisgICAgUmluZy0+U2hhcmVkID0gTlVM
TDsKKyAgICBfX0ZyZWVQYWdlKFJpbmctPk1kbCk7CisgICAgUmluZy0+TWRsID0gTlVMTDsKKwor
ICAgIFhFTkJVU19HTlRUQUIoRGVzdHJveUNhY2hlLAorICAgICAgICAgICAgICAgICAgJlJpbmct
PkdudHRhYkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIFJpbmctPkdudHRhYkNhY2hlKTsK
KyAgICBSaW5nLT5HbnR0YWJDYWNoZSA9IE5VTEw7CisKKyAgICBYRU5CVVNfU1RPUkUoUmVsZWFz
ZSwgJlJpbmctPlN0b3JlSW50ZXJmYWNlKTsKKworICAgIFhFTkJVU19HTlRUQUIoUmVsZWFzZSwg
JlJpbmctPkdudHRhYkludGVyZmFjZSk7CisKKyAgICBYRU5CVVNfRVZUQ0hOKFJlbGVhc2UsICZS
aW5nLT5FdnRjaG5JbnRlcmZhY2UpOworCisgICAgWEVOQlVTX0RFQlVHKFJlbGVhc2UsICZSaW5n
LT5EZWJ1Z0ludGVyZmFjZSk7CisKKyAgICBUcmFjZSgiPD09PT1cbiIpOworfQorCitOVFNUQVRV
UworUmluZ0NyZWF0ZSgKKyAgICBJTiAgUFhFTkNPTlNfRlJPTlRFTkQgICBGcm9udGVuZCwKKyAg
ICBPVVQgUFhFTkNPTlNfUklORyAgICAgICAqUmluZworICAgICkKK3sKKyAgICBOVFNUQVRVUyAg
ICAgICAgICAgICAgICBzdGF0dXM7CisKKyAgICAqUmluZyA9IF9fUmluZ0FsbG9jYXRlKHNpemVv
ZihYRU5DT05TX1JJTkcpKTsKKworICAgIHN0YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7CisgICAg
aWYgKCpSaW5nID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDE7CisKKyAgICAoKlJpbmcpLT5G
cm9udGVuZCA9IEZyb250ZW5kOworCisgICAgRmRvR2V0RGVidWdJbnRlcmZhY2UoUGRvR2V0RmRv
KEZyb250ZW5kR2V0UGRvKEZyb250ZW5kKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJigq
UmluZyktPkRlYnVnSW50ZXJmYWNlKTsKKworICAgIEZkb0dldEV2dGNobkludGVyZmFjZShQZG9H
ZXRGZG8oRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJigqUmluZyktPkV2dGNobkludGVyZmFjZSk7CisKKyAgICBGZG9HZXRHbnR0YWJJbnRlcmZh
Y2UoUGRvR2V0RmRvKEZyb250ZW5kR2V0UGRvKEZyb250ZW5kKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJigqUmluZyktPkdudHRhYkludGVyZmFjZSk7CisKKyAgICBGZG9HZXRTdG9yZUlu
dGVyZmFjZShQZG9HZXRGZG8oRnJvbnRlbmRHZXRQZG8oRnJvbnRlbmQpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAmKCpSaW5nKS0+U3RvcmVJbnRlcmZhY2UpOworCisgICAgS2VJbml0aWFs
aXplU3BpbkxvY2soJigqUmluZyktPkxvY2spOworCisgICAgS2VJbml0aWFsaXplVGhyZWFkZWRE
cGMoJigqUmluZyktPkRwYywgUmluZ0RwYywgKlJpbmcpOworCisgICAgS2VJbml0aWFsaXplU3Bp
bkxvY2soJigqUmluZyktPlJlYWQuTG9jayk7CisgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCYoKlJp
bmcpLT5SZWFkLkxpc3QpOworCisgICAgc3RhdHVzID0gSW9Dc3FJbml0aWFsaXplRXgoJigqUmlu
ZyktPlJlYWQuQ3NxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdDc3FJbnNl
cnRJcnBFeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxUmVtb3ZlSXJw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdDc3FQZWVrTmV4dElycCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxQWNxdWlyZUxvY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0NzcVJlbGVhc2VMb2NrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJpbmdDc3FDb21wbGV0ZUNhbmNlbGVkSXJwKTsKKyAgICBpZiAo
IU5UX1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgZ290byBmYWlsMjsKKworICAgIEtlSW5pdGlh
bGl6ZVNwaW5Mb2NrKCYoKlJpbmcpLT5Xcml0ZS5Mb2NrKTsKKyAgICBJbml0aWFsaXplTGlzdEhl
YWQoJigqUmluZyktPldyaXRlLkxpc3QpOworCisgICAgc3RhdHVzID0gSW9Dc3FJbml0aWFsaXpl
RXgoJigqUmluZyktPldyaXRlLkNzcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
aW5nQ3NxSW5zZXJ0SXJwRXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0Nz
cVJlbW92ZUlycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxUGVla05l
eHRJcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmluZ0NzcUFjcXVpcmVMb2Nr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpbmdDc3FSZWxlYXNlTG9jaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSaW5nQ3NxQ29tcGxldGVDYW5jZWxlZElycCk7
CisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDM7CisKKyAg
ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7CisKK2ZhaWwzOgorICAgIEVycm9yKCJmYWlsM1xuIik7
CisKKyAgICBSdGxaZXJvTWVtb3J5KCYoKlJpbmcpLT5Xcml0ZS5MaXN0LCBzaXplb2YoTElTVF9F
TlRSWSkpOworICAgIFJ0bFplcm9NZW1vcnkoJigqUmluZyktPldyaXRlLkxvY2ssIHNpemVvZihL
U1BJTl9MT0NLKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCYoKlJpbmcpLT5SZWFkLkNzcSwgc2l6
ZW9mKElPX0NTUSkpOworCitmYWlsMjoKKyAgICBFcnJvcigiZmFpbDJcbiIpOworCisgICAgUnRs
WmVyb01lbW9yeSgmKCpSaW5nKS0+UmVhZC5MaXN0LCBzaXplb2YoTElTVF9FTlRSWSkpOworICAg
IFJ0bFplcm9NZW1vcnkoJigqUmluZyktPlJlYWQuTG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsK
KworZmFpbDE6CisgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsKKworICAgIHJl
dHVybiBzdGF0dXM7Cit9CisKK1ZPSUQKK1JpbmdEZXN0cm95KAorICAgIElOICBQWEVOQ09OU19S
SU5HICAgUmluZworICAgICkKK3sKKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09
ICwgUEFTU0lWRV9MRVZFTCk7CisgICAgCisgICAgLy8gQ2FuY2VsIGFsbCBvdXRzdGFuZGluZyBJ
UlBzCisgICAgX19SaW5nQ2FuY2VsUmVxdWVzdHMoUmluZywgTlVMTCk7CisKKyAgICBBU1NFUlQo
SXNMaXN0RW1wdHkoJlJpbmctPlJlYWQuTGlzdCkpOworICAgIEFTU0VSVChJc0xpc3RFbXB0eSgm
UmluZy0+V3JpdGUuTGlzdCkpOworCisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+V3JpdGUuQ3Nx
LCBzaXplb2YoSU9fQ1NRKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5Xcml0ZS5MaXN0
LCBzaXplb2YoTElTVF9FTlRSWSkpOworICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPldyaXRlLkxv
Y2ssIHNpemVvZihLU1BJTl9MT0NLKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5SZWFk
LkNzcSwgc2l6ZW9mKElPX0NTUSkpOworCisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+UmVhZC5M
aXN0LCBzaXplb2YoTElTVF9FTlRSWSkpOworICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPlJlYWQu
TG9jaywgc2l6ZW9mKEtTUElOX0xPQ0spKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkRw
Yywgc2l6ZW9mKEtEUEMpKTsKKworICAgIFJ0bFplcm9NZW1vcnkoJlJpbmctPkxvY2ssIHNpemVv
ZihLU1BJTl9MT0NLKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5TdG9yZUludGVyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfU1RPUkVfSU5URVJGQUNFKSk7CisK
KyAgICBSdGxaZXJvTWVtb3J5KCZSaW5nLT5HbnR0YWJJbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICBzaXplb2YoWEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0UpKTsKKworICAgIFJ0bFplcm9NZW1v
cnkoJlJpbmctPkV2dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5C
VVNfRVZUQ0hOX0lOVEVSRkFDRSkpOworCisgICAgUnRsWmVyb01lbW9yeSgmUmluZy0+RGVidWdJ
bnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICBzaXplb2YoWEVOQlVTX0RFQlVHX0lOVEVSRkFD
RSkpOworCisgICAgUmluZy0+RnJvbnRlbmQgPSBOVUxMOworCisgICAgQVNTRVJUKElzWmVyb01l
bW9yeShSaW5nLCBzaXplb2YoWEVOQ09OU19SSU5HKSkpOworICAgIF9fUmluZ0ZyZWUoUmluZyk7
Cit9CmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9yaW5nLmggYi9zcmMveGVuY29ucy9yaW5nLmgK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWNhMzJhMgotLS0gL2Rldi9udWxs
CisrKyBiL3NyYy94ZW5jb25zL3JpbmcuaApAQCAtMCwwICsxLDk2IEBACisvKiBDb3B5cmlnaHQg
KGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKKyogd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZAorKiB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorKgorKiAqICAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorKiAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQorKiAgICAgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlCisqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIKKyogICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORAorKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLAorKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywKKyogQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisqIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworKiBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
KyogU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIF9YRU5DT05TX1JJTkdfSAorI2RlZmluZSBf
WEVOQ09OU19SSU5HX0gKKworI2luY2x1ZGUgPG50ZGRrLmg+CisKKyNpbmNsdWRlICJmcm9udGVu
ZC5oIgorCit0eXBlZGVmIHN0cnVjdCBfWEVOQ09OU19SSU5HIFhFTkNPTlNfUklORywgKlBYRU5D
T05TX1JJTkc7CisKK2V4dGVybiBOVFNUQVRVUworUmluZ0NyZWF0ZSgKKyAgICBJTiAgUFhFTkNP
TlNfRlJPTlRFTkQgICBGcm9udGVuZCwKKyAgICBPVVQgUFhFTkNPTlNfUklORyAgICAgICAqUmlu
ZworICAgICk7CisKK2V4dGVybiBWT0lECitSaW5nRGVzdHJveSgKKyAgICBJTiAgUFhFTkNPTlNf
UklORyAgIFJpbmcKKyAgICApOworCitleHRlcm4gTlRTVEFUVVMKK1JpbmdDb25uZWN0KAorICAg
IElOICBQWEVOQ09OU19SSU5HICAgUmluZworICAgICk7CisKK2V4dGVybiBOVFNUQVRVUworUmlu
Z1N0b3JlV3JpdGUoCisgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nLAorICAgIElOICBQVk9J
RCAgICAgICAgICAgVHJhbnNhY3Rpb24KKyAgICApOworCitleHRlcm4gVk9JRAorUmluZ0Rpc2Nv
bm5lY3QoCisgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5nCisgICAgKTsKKworZXh0ZXJuIE5U
U1RBVFVTCitSaW5nRW5hYmxlKAorICAgIElOICBQWEVOQ09OU19SSU5HICAgUmluZworICAgICk7
CisKK2V4dGVybiBWT0lECitSaW5nRGlzYWJsZSgKKyAgICBJTiAgUFhFTkNPTlNfUklORyAgIFJp
bmcKKyAgICApOworCitleHRlcm4gTlRTVEFUVVMKK1JpbmdPcGVuKAorICAgIElOICBQWEVOQ09O
U19SSU5HICAgUmluZywKKyAgICBJTiAgUEZJTEVfT0JKRUNUICAgIEZpbGVPYmplY3QKKyAgICAp
OworCitleHRlcm4gTlRTVEFUVVMKK1JpbmdDbG9zZSgKKyAgICBJTiAgUFhFTkNPTlNfUklORyAg
IFJpbmcsCisgICAgSU4gIFBGSUxFX09CSkVDVCAgICBGaWxlT2JqZWN0CisgICAgKTsKKworZXh0
ZXJuIE5UU1RBVFVTCitSaW5nUHV0UXVldWUoCisgICAgSU4gIFBYRU5DT05TX1JJTkcgICBSaW5n
LAorICAgIElOICBQSVJQICAgICAgICAgICAgSXJwCisgICAgKTsKKworI2VuZGlmICAvLyBfWEVO
Q09OU19SSU5HX0gKZGlmZiAtLWdpdCBhL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvaiBi
L3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvagppbmRleCA4ODQ2YjhlLi40MzVlZjIxIDEw
MDY0NAotLS0gYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oKKysrIGIvdnMyMDE1L3hl
bmNvbnMveGVuY29ucy52Y3hwcm9qCkBAIC03MSw2ICs3MSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9jb25zb2xlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9zdHJlYW0uYyIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Zyb250ZW5kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9yaW5nLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLi8uLi9zcmMveGVuY29ucy90aHJlYWQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CmRpZmYgLS1naXQgYS92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2ogYi92
czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oKaW5kZXggOTgxMWRhMC4uZGVmYjExZSAxMDA2
NDQKLS0tIGEvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qCisrKyBiL3ZzMjAxNy94ZW5j
b25zL3hlbmNvbnMudmN4cHJvagpAQCAtNzksNiArNzksNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvY29uc29sZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvc3RyZWFtLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLi8uLi9zcmMveGVuY29ucy9mcm9udGVuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcmluZy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi4vLi4vc3JjL3hlbmNvbnMvdGhyZWFkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vd2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Fri Feb 23 14:28:41 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 23 Feb 2018 14:28:41 +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 1epEL3-0005W7-Bw; Fri, 23 Feb 2018 14:28:41 +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=xb2a=fr=citrix.com=prvs=585d7b210=owen.smith@srs-us1.protection.inumbo.net>)
 id 1epEL2-0005Ti-9e
 for win-pv-devel@lists.xenproject.org; Fri, 23 Feb 2018 14:28:40 +0000
X-Inumbo-ID: 108491f5-18a6-11e8-b9b1-635ca7ef6cff
Received: from SMTP.CITRIX.COM (unknown [66.165.176.89])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 108491f5-18a6-11e8-b9b1-635ca7ef6cff;
 Fri, 23 Feb 2018 14:30:16 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,383,1515456000"; d="scan'208";a="464187145"
From: <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
Date: Fri, 23 Feb 2018 14:21:39 +0000
Message-ID: <20180223142142.12548-12-owen.smith@citrix.com>
X-Mailer: git-send-email 2.8.3
In-Reply-To: <20180223142142.12548-1-owen.smith@citrix.com>
References: <20180223142142.12548-1-owen.smith@citrix.com>
MIME-Version: 1.0
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [win-pv-devel] [PATCH 11/14 v2] Add EVTCHN and GNTTAB interfaces
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>

RnJvbTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgoKQWRkcyBxdWVyeSBmb3Ig
RVZUQ0hOIGFuZCBHTlRUQUIgaW50ZXJmYWNlcywgYW5kIGFkZHMKRmRvR2V0W0V2dGNobnxHbnR0
YWJdSW50ZXJmYWNlIGZ1bmN0aW9ucwoKU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5z
bWl0aEBjaXRyaXguY29tPgotLS0KIGluY2x1ZGUvY2FjaGVfaW50ZXJmYWNlLmggIHwgMjMzICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2V2dGNobl9pbnRlcmZhY2UuaCB8
IDM1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1
ZGUvZ250dGFiX2ludGVyZmFjZS5oIHwgMjg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogc3JjL3hlbmNvbnMvZmRvLmMgICAgICAgICAgfCAgNDggKysrKystCiBzcmMveGVu
Y29ucy9mZG8uaCAgICAgICAgICB8ICAgNCArCiA1IGZpbGVzIGNoYW5nZWQsIDkyNiBpbnNlcnRp
b25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUvY2FjaGVf
aW50ZXJmYWNlLmgKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL2V2dGNobl9pbnRlcmZhY2Uu
aAogY3JlYXRlIG1vZGUgMTAwNzU1IGluY2x1ZGUvZ250dGFiX2ludGVyZmFjZS5oCgpkaWZmIC0t
Z2l0IGEvaW5jbHVkZS9jYWNoZV9pbnRlcmZhY2UuaCBiL2luY2x1ZGUvY2FjaGVfaW50ZXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFlM2FjNgotLS0gL2Rldi9u
dWxsCisrKyBiL2luY2x1ZGUvY2FjaGVfaW50ZXJmYWNlLmgKQEAgLTAsMCArMSwyMzMgQEAKKy8q
IENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3JtcywgCisgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIAorICogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAor
ICogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgCisgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSAKKyAqICAgICBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICog
ICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAq
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIAorICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgCisgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSAKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisvKiEgXGZpbGUgY2FjaGVfaW50ZXJmYWNlLmgK
KyAgICBcYnJpZWYgWEVOQlVTIENBQ0hFIEludGVyZmFjZQorCisgICAgVGhpcyBpbnRlcmZhY2Ug
cHJvdmlkZXMgYWNjZXNzIHRvIFhFTkJVUydzIG9iamVjdCBjYWNoZQorICAgIGltcGxlbWVudGF0
aW9uLgorKi8KKworI2lmbmRlZiBfWEVOQlVTX0NBQ0hFX0lOVEVSRkFDRV9ICisjZGVmaW5lIF9Y
RU5CVVNfQ0FDSEVfSU5URVJGQUNFX0gKKworI2lmbmRlZiBfV0lORExMCisKKy8qISBcdHlwZWRl
ZiBYRU5CVVNfQ0FDSEUKKyAgICBcYnJpZWYgQ2FjaGUgaGFuZGxlCisqLwordHlwZWRlZiBzdHJ1
Y3QgX1hFTkJVU19DQUNIRSAgICBYRU5CVVNfQ0FDSEUsICpQWEVOQlVTX0NBQ0hFOworCisvKiEg
XHR5cGVkZWYgWEVOQlVTX0NBQ0hFX0FDUVVJUkUKKyAgICBcYnJpZWYgQWNxdWlyZSBhIHJlZmVy
ZW5jZSB0byB0aGUgQ0FDSEUgaW50ZXJmYWNlCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBp
bnRlcmZhY2UgaGVhZGVyCisqLyAgCit0eXBlZGVmIE5UU1RBVFVTCisoKlhFTkJVU19DQUNIRV9B
Q1FVSVJFKSgKKyAgICBJTiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0
eXBlZGVmIFhFTkJVU19DQUNIRV9SRUxFQVNFCisgICAgXGJyaWVmIFJlbGVhc2UgYSByZWZlcmVu
Y2UgdG8gdGhlIENBQ0hFIGludGVyZmFjZQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50
ZXJmYWNlIGhlYWRlcgorKi8gIAordHlwZWRlZiBWT0lECisoKlhFTkJVU19DQUNIRV9SRUxFQVNF
KSgKKyAgICBJTiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0eXBlZGVm
IFhFTkJVU19DQUNIRV9DVE9SCisgICAgXGJyaWVmIE9iamVjdCBjcmVhdG9yIGNhbGxiYWNrCisK
KyAgICBccGFyYW0gQXJndW1lbnQgQ29udGV4dCBcYSBBcmd1bWVudCBzdXBwbGllZCB0byBcYSBY
RU5CVVNfQ0FDSEVfQ1JFQVRFCisgICAgXHBhcmFtIE9iamVjdCBOZXdseSBhbGxvY2F0ZWQgb2Jq
ZWN0CisKKyAgICBUaGlzIGNhbGxiYWNrIGlzIGludm9rZWQganVzdCBhZnRlciBhIG5ldyBvYmpl
Y3QgaXMgYWxsb2NhdGVkIGFuZCBtYXkKKyAgICBiZSB1c2VkIHRvIGluaXRpYWxpemUgYW55IG9i
amVjdCBkYXRhIHByaW9yIHRvIGl0cyBpbnNlcnRpb24gaW50byB0aGUKKyAgICBjYWNoZS4KKyov
Cit0eXBlZGVmIE5UU1RBVFVTCisoKlhFTkJVU19DQUNIRV9DVE9SKSgKKyAgICBJTiAgUFZPSUQg
ICBBcmd1bWVudCwKKyAgICBJTiAgUFZPSUQgICBPYmplY3QKKyAgICApOworCisvKiEgXHR5cGVk
ZWYgWEVOQlVTX0NBQ0hFX0RUT1IKKyAgICBcYnJpZWYgT2JqZWN0IGRlc3RydWN0b3IgY2FsbGJh
Y2sKKworICAgIFxwYXJhbSBBcmd1bWVudCBDb250ZXh0IFxhIEFyZ3VtZW50IHN1cHBsaWVkIHRv
IFxhIFhFTkJVU19DQUNIRV9DUkVBVEUKKyAgICBccGFyYW0gT2JqZWN0IE9iamVjdCBhYm91dCB0
byBiZSBmcmVlZAorCisgICAgVGhpcyBjYWxsYmFjayBpcyBpbnZva2VkIGp1c3QgYWZ0ZXIgYW4g
b2JqZWN0IGlzIHJlbW92ZWQgZnJvbSB0aGUKKyAgICBjYWNoZSBhbmQgYmVmb3JlIGl0IGlzIGZy
ZWVkIGFuZCBtYXkgYmUgdXNlZCB0byB0ZWFyIGRvd24gYW55IG9iamVjdCBkYXRhLgorKi8KK3R5
cGVkZWYgVk9JRAorKCpYRU5CVVNfQ0FDSEVfRFRPUikoCisgICAgSU4gIFBWT0lEICAgQXJndW1l
bnQsCisgICAgSU4gIFBWT0lEICAgT2JqZWN0CisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJV
U19DQUNIRV9BQ1FVSVJFX0xPQ0sKKyAgICBcYnJpZWYgQ2FjaGUgbG9jayBjYWxsYmFjaworCisg
ICAgXHBhcmFtIEFyZ3VtZW50IENvbnRleHQgXGEgQXJndW1lbnQgc3VwcGxpZWQgdG8gXGEgWEVO
QlVTX0NBQ0hFX0NSRUFURQorCisgICAgVGhpcyBjYWxsYmFjayBpcyBpbnZva2VkIGlmIHRoZSBj
YWNoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBtdXR1YWwKKyAgICBleGNsdXNpb24uCisqLwor
dHlwZWRlZiBWT0lECisoKlhFTkJVU19DQUNIRV9BQ1FVSVJFX0xPQ0spKAorICAgIElOICBQVk9J
RCAgIEFyZ3VtZW50CisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJVU19DQUNIRV9SRUxFQVNF
X0xPQ0sKKyAgICBcYnJpZWYgQ2FjaGUgdW5sb2NrIGNhbGxiYWNrCisKKyAgICBccGFyYW0gQXJn
dW1lbnQgQ29udGV4dCBcYSBBcmd1bWVudCBzdXBwbGllZCB0byBcYSBYRU5CVVNfQ0FDSEVfQ1JF
QVRFCisKKyAgICBUaGlzIGNhbGxiYWNrIGlzIGludm9rZWQgdG8gcmVsZWFzZSB0aGUgbXV0dWFs
IGV4Y2x1c2lvbiBsb2NrIGFjcXVpcmVkCisgICAgYnkgYSBwcmV2aW91cyBpbnZvY2F0aW9uIG9m
IFxhIFhFTkJVU19DQUNIRV9BQ1FVSVJFX0xPQ0suCisqLwordHlwZWRlZiBWT0lECisoKlhFTkJV
U19DQUNIRV9SRUxFQVNFX0xPQ0spKAorICAgIElOICBQVk9JRCAgIEFyZ3VtZW50CisgICAgKTsK
KworLyohIFx0eXBlZGVmIFhFTkJVU19DQUNIRV9DUkVBVEUKKyAgICBcYnJpZWYgQ3JlYXRlIGEg
Y2FjaGUgb2Ygb2JqZWN0cyBvZiB0aGUgZ2l2ZW4gXGEgU2l6ZQorCisgICAgXHBhcmFtIEludGVy
ZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJhbSBOYW1lIEEgbmFtZSBmb3IgdGhl
IGNhY2hlIHdoaWNoIHdpbGwgYmUgdXNlZCBpbiBkZWJ1ZyBvdXRwdXQKKyAgICBccGFyYW0gU2l6
ZSBUaGUgc2l6ZSBvZiBlYWNoIG9iamVjdCBpbiBieXRlcworICAgIFxwYXJhbSBSZXNlcnZhdGlv
biBUaGUgdGFyZ2V0IG1pbmltdW0gcG9wdWxhdGlvbiBvZiB0aGUgY2FjaGUKKyAgICBccGFyYW0g
Q3RvciBBIGNhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgd2hlbiBhIG5ldyBvYmplY3QgY3JlYXRl
ZAorICAgIFxwYXJhbSBEdG9yIEEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuIGFuIG9i
amVjdCBpcyBkZXN0cm95ZWQKKyAgICBccGFyYW0gQWNxdWlyZUxvY2sgQSBjYWxsYmFjayBpbnZv
a2VkIHRvIGFjcXVpcmUgYSBzcGlubG9jaworICAgIFxwYXJhbSBSZWxlYXNlTG9jayBBIGNhbGxi
YWNrIGludm9rZWQgdG8gcmVsZWFzZSB0aGUgc3BpbmxvY2sKKyAgICBccGFyYW0gQXJndW1lbnQg
QW4gb3B0aW9uYWwgY29udGV4dCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrcworICAg
IFxwYXJhbSBDYWNoZSBBIHBvaW50ZXIgdG8gYSBjYWNoZSBoYW5kbGUgdG8gYmUgaW5pdGlhbGl6
ZWQKKworICAgIElmIGEgbm9uLXplcm8gXGEgUmVzZXJ2YXRpb24gaXMgc3BlY2lmaWVkIHRoZW4g
dGhpcyBtZXRob2Qgd2lsbCBmYWlsCisgICAgdW5sZXNzIHRoYXQgbnVtYmVyIG9mIG9iamVjdHMg
Y2FuIGJlIGltbWVkaWF0ZWx5IGNyZWF0ZWQuCisqLyAgCit0eXBlZGVmIE5UU1RBVFVTCisoKlhF
TkJVU19DQUNIRV9DUkVBVEUpKAorICAgIElOICBQSU5URVJGQUNFICAgICAgICAgICAgICAgICAg
SW50ZXJmYWNlLAorICAgIElOICBjb25zdCBDSEFSICAgICAgICAgICAgICAgICAgKk5hbWUsCisg
ICAgSU4gIFVMT05HICAgICAgICAgICAgICAgICAgICAgICBTaXplLAorICAgIElOICBVTE9ORyAg
ICAgICAgICAgICAgICAgICAgICAgUmVzZXJ2YXRpb24sCisgICAgSU4gIFhFTkJVU19DQUNIRV9D
VE9SICAgICAgICAgICBDdG9yLAorICAgIElOICBYRU5CVVNfQ0FDSEVfRFRPUiAgICAgICAgICAg
RHRvciwKKyAgICBJTiAgWEVOQlVTX0NBQ0hFX0FDUVVJUkVfTE9DSyAgIEFjcXVpcmVMb2NrLAor
ICAgIElOICBYRU5CVVNfQ0FDSEVfUkVMRUFTRV9MT0NLICAgUmVsZWFzZUxvY2ssCisgICAgSU4g
IFBWT0lEICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudCBPUFRJT05BTCwKKyAgICBPVVQg
UFhFTkJVU19DQUNIRSAgICAgICAgICAgICAgICpDYWNoZQorICAgICk7CisKKy8qISBcdHlwZWRl
ZiBYRU5CVVNfQ0FDSEVfR0VUCisgICAgXGJyaWVmIEdldCBhbiBvYmplY3QgZnJvbSBhIFxhIENh
Y2hlCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBpbnRlcmZhY2UgaGVhZGVyCisgICAgXHBh
cmFtIENhY2hlIFRoZSBjYWNoZSBoYW5kbGUKKyAgICBccGFyYW0gTG9ja2VkIElmIG11dHVhbGx5
IGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGNhY2hlIGlzIGFscmVhZHkKKyAgICBndWFyYW50ZWVk
IHRoZW4gc2V0IHRoaXMgdG8gVFJVRQorKi8KK3R5cGVkZWYgUFZPSUQKKygqWEVOQlVTX0NBQ0hF
X0dFVCkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIFBYRU5C
VVNfQ0FDSEUgICBDYWNoZSwKKyAgICBJTiAgQk9PTEVBTiAgICAgICAgIExvY2tlZAorICAgICk7
CisKKy8qISBcdHlwZWRlZiBYRU5CVVNfQ0FDSEVfUFVUCisgICAgXGJyaWVmIFJldHVybiBhbiBv
YmplY3QgdG8gYSBcYSBDYWNoZQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNl
IGhlYWRlcgorICAgIFxwYXJhbSBDYWNoZSBUaGUgY2FjaGUgaGFuZGxlCisgICAgXHBhcmFtIExv
Y2tlZCBJZiBtdXR1YWxseSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBjYWNoZSBpcyBhbHJlYWR5
CisgICAgZ3VhcmFudGVlZCB0aGVuIHNldCB0aGlzIHRvIFRSVUUKKyovCit0eXBlZGVmIFZPSUQK
KygqWEVOQlVTX0NBQ0hFX1BVVCkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICBJbnRlcmZhY2Us
CisgICAgSU4gIFBYRU5CVVNfQ0FDSEUgICBDYWNoZSwKKyAgICBJTiAgUFZPSUQgICAgICAgICAg
IE9iamVjdCwKKyAgICBJTiAgQk9PTEVBTiAgICAgICAgIExvY2tlZAorICAgICk7CisKKy8qISBc
dHlwZWRlZiBYRU5CVVNfQ0FDSEVfREVTVFJPWQorICAgIFxicmllZiBEZXN0cm95IGEgXGEgQ2Fj
aGUKKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVyZmFjZSBoZWFkZXIKKyAgICBccGFy
YW0gQ2FjaGUgVGhlIGNhY2hlIGhhbmRsZQorCisgICAgQWxsIG9iamVjdHMgbXVzdCBoYXZlIGJl
ZW4gcmV0dXJuZWQgdG8gdGhlIGNhY2hlIHByaW9yIHRvIGRlc3RydWN0aW9uCisqLwordHlwZWRl
ZiBWT0lECisoKlhFTkJVU19DQUNIRV9ERVNUUk9ZKSgKKyAgICBJTiAgUElOVEVSRkFDRSAgICAg
IEludGVyZmFjZSwKKyAgICBJTiAgUFhFTkJVU19DQUNIRSAgIENhY2hlCisgICAgKTsKKworLy8g
e0E5OERGRDc4LTQxNkEtNDk0OS05MkE1LUUwODRGMkY0QjQ0RX0KK0RFRklORV9HVUlEKEdVSURf
WEVOQlVTX0NBQ0hFX0lOVEVSRkFDRSwgCisweGE5OGRmZDc4LCAweDQxNmEsIDB4NDk0OSwgMHg5
MiwgMHhhNSwgMHhlMCwgMHg4NCwgMHhmMiwgMHhmNCwgMHhiNCwgMHg0ZSk7CisKKy8qISBcc3Ry
dWN0IF9YRU5CVVNfQ0FDSEVfSU5URVJGQUNFX1YxCisgICAgXGJyaWVmIENBQ0hFIGludGVyZmFj
ZSB2ZXJzaW9uIDEKKyAgICBcaW5ncm91cCBpbnRlcmZhY2VzCisqLworc3RydWN0IF9YRU5CVVNf
Q0FDSEVfSU5URVJGQUNFX1YxIHsKKyAgICBJTlRFUkZBQ0UgICAgICAgICAgICAgICBJbnRlcmZh
Y2U7CisgICAgWEVOQlVTX0NBQ0hFX0FDUVVJUkUgICAgQ2FjaGVBY3F1aXJlOworICAgIFhFTkJV
U19DQUNIRV9SRUxFQVNFICAgIENhY2hlUmVsZWFzZTsKKyAgICBYRU5CVVNfQ0FDSEVfQ1JFQVRF
ICAgICBDYWNoZUNyZWF0ZTsKKyAgICBYRU5CVVNfQ0FDSEVfR0VUICAgICAgICBDYWNoZUdldDsK
KyAgICBYRU5CVVNfQ0FDSEVfUFVUICAgICAgICBDYWNoZVB1dDsKKyAgICBYRU5CVVNfQ0FDSEVf
REVTVFJPWSAgICBDYWNoZURlc3Ryb3k7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfWEVOQlVTX0NB
Q0hFX0lOVEVSRkFDRV9WMSBYRU5CVVNfQ0FDSEVfSU5URVJGQUNFLCAqUFhFTkJVU19DQUNIRV9J
TlRFUkZBQ0U7CisKKy8qISBcZGVmIFhFTkJVU19DQUNIRQorICAgIFxicmllZiBNYWNybyBhdCBh
c3Npc3QgaW4gbWV0aG9kIGludm9jYXRpb24KKyovCisjZGVmaW5lIFhFTkJVU19DQUNIRShfTWV0
aG9kLCBfSW50ZXJmYWNlLCAuLi4pICAgIFwKKyAgICAoX0ludGVyZmFjZSktPkNhY2hlICMjIF9N
ZXRob2QoKFBJTlRFUkZBQ0UpKF9JbnRlcmZhY2UpLCBfX1ZBX0FSR1NfXykKKworI2VuZGlmICAv
LyBfV0lORExMCisKKyNkZWZpbmUgWEVOQlVTX0NBQ0hFX0lOVEVSRkFDRV9WRVJTSU9OX01JTiAg
MQorI2RlZmluZSBYRU5CVVNfQ0FDSEVfSU5URVJGQUNFX1ZFUlNJT05fTUFYICAxCisKKyNlbmRp
ZiAgLy8gX1hFTkJVU19DQUNIRV9JTlRFUkZBQ0VfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ldnRj
aG5faW50ZXJmYWNlLmggYi9pbmNsdWRlL2V2dGNobl9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNjhhNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVk
ZS9ldnRjaG5faW50ZXJmYWNlLmgKQEAgLTAsMCArMSwzNTcgQEAKKy8qIENvcHlyaWdodCAoYykg
Q2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywgCisgKiB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIAorICogdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAorICogKiAgIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgCisgKiAgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSAKKyAqICAgICBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIAorICogICAgIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IAorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgCisgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIAorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIAorICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgCisgKiBTVUNIIERB
TUFHRS4KKyAqLworCisvKiEgXGZpbGUgZXZ0Y2huX2ludGVyZmFjZS5oCisgICAgXGJyaWVmIFhF
TkJVUyBFVlRDSE4gSW50ZXJmYWNlCisKKyAgICBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBhY2Nl
c3MgdG8gaHlwZXJ2aXNvciBldmVudCBjaGFubmVscworKi8KKworI2lmbmRlZiBfWEVOQlVTX0VW
VENITl9JTlRFUkZBQ0VfSAorI2RlZmluZSBfWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfSAorCisj
aWZuZGVmIF9XSU5ETEwKKworLyohIFxlbnVtIF9YRU5CVVNfRVZUQ0hOX1RZUEUKKyAgICBcYnJp
ZWYgRXZlbnQgY2hhbm5lbCB0eXBlIHRvIGJlIG9wZW5lZAorKi8KK3R5cGVkZWYgZW51bSBfWEVO
QlVTX0VWVENITl9UWVBFIHsKKyAgICBYRU5CVVNfRVZUQ0hOX1RZUEVfSU5WQUxJRCA9IDAsCisg
ICAgWEVOQlVTX0VWVENITl9UWVBFX0ZJWEVELCAgICAgICAgICAgLyohPCBGaXhlZCAqLworICAg
IFhFTkJVU19FVlRDSE5fVFlQRV9VTkJPVU5ELCAgICAgICAgIC8qITwgVW5ib3VuZCAqLworICAg
IFhFTkJVU19FVlRDSE5fVFlQRV9JTlRFUl9ET01BSU4sICAgIC8qITwgSW50ZXJkb21haW4gKi8K
KyAgICBYRU5CVVNfRVZUQ0hOX1RZUEVfVklSUSAgICAgICAgICAgICAvKiE8IFZJUlEgKi8KK30g
WEVOQlVTX0VWVENITl9UWVBFLCAqUFhFTkJVU19FVlRDSE5fVFlQRTsKKworLyohIFx0eXBlZGVm
IFhFTkJVU19FVlRDSE5fQ0hBTk5FTAorICAgIFxicmllZiBFdmVudCBjaGFubmVsIGhhbmRsZQor
Ki8gIAordHlwZWRlZiBzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fQ0hBTk5FTCBYRU5CVVNfRVZUQ0hO
X0NIQU5ORUwsICpQWEVOQlVTX0VWVENITl9DSEFOTkVMOworCisvKiEgXHR5cGVkZWYgWEVOQlVT
X0VWVENITl9BQ1FVSVJFCisgICAgXGJyaWVmIEFjcXVpcmUgYSByZWZlcmVuY2UgdG8gdGhlIEVW
VENITiBpbnRlcmZhY2UKKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVyZmFjZSBoZWFk
ZXIKKyovICAKK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVTX0VWVENITl9BQ1FVSVJFKSgKKyAg
ICBJTiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJV
U19FVlRDSE5fUkVMRUFTRQorICAgIFxicmllZiBSZWxlYXNlIGEgcmVmZXJlbmNlIHRvIHRoZSBF
VlRDSE4gaW50ZXJmYWNlCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBpbnRlcmZhY2UgaGVh
ZGVyCisqLyAgCit0eXBlZGVmIFZPSUQKKygqWEVOQlVTX0VWVENITl9SRUxFQVNFKSgKKyAgICBJ
TiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJVU19F
VlRDSE5fT1BFTgorICAgIFxicmllZiBPcGVuIGFuIGV2ZW50IGNoYW5uZWwKKworICAgIFxwYXJh
bSBJbnRlcmZhY2UgVGhlIGludGVyZmFjZSBoZWFkZXIKKyAgICBccGFyYW0gVHlwZSBUaGUgdHlw
ZSBvZiBldmVudCBjaGFubmVsIHRvIG9wZW4KKyAgICBccGFyYW0gRnVuY3Rpb24gVGhlIGNhbGxi
YWNrIGZ1bmN0aW9uCisgICAgXHBhcmFtIEFyZ3VtZW50IEFuIG9wdGlvbmFsIGNvbnRleHQgYXJn
dW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjaworICAgIFxwYXJhbSAuLi4gQWRkaXRpb25hbCBw
YXJhbWV0ZXJzIHJlcXVpcmVkIGJ5IFxhIFR5cGUKKworICAgIFxiIEZpeGVkOgorICAgIFxwYXJh
bSBMb2NhbFBvcnQgVGhlIGxvY2FsIHBvcnQgbnVtYmVyIG9mIHRoZSAoYWxyZWFkeSBib3VuZCkg
Y2hhbm5lbAorICAgIFxwYXJhbSBNYXNrIFNldCB0byBUUlVFIGlmIHRoZSBjaGFubmVsIHNob3Vs
ZCBiZSBhdXRvbWF0aWNhbGx5IG1hc2tlZCBiZWZvcmUgaW52b2tpbmcgdGhlIGNhbGxiYWNrCisK
KyAgICBcYiBVbmJvdW5kOgorICAgIFxwYXJhbSBSZW1vdGVEb21haW4gVGhlIGRvbWlkIG9mIHRo
ZSByZW1vdGUgZG9tYWluIHdoaWNoIHdpbGwgYmluZCB0aGUgY2hhbm5lbAorICAgIFxwYXJhbSBN
YXNrIFNldCB0byBUUlVFIGlmIHRoZSBjaGFubmVsIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IG1h
c2tlZCBiZWZvcmUgaW52b2tpbmcgdGhlIGNhbGxiYWNrCisKKyAgICBcYiBJbnRlcmRvbWFpbjoK
KyAgICBccGFyYW0gUmVtb3RlRG9tYWluIFRoZSBkb21pZCBvZiB0aGUgcmVtb3RlIGRvbWFpbiB3
aGljaCBoYXMgYWxyZWFkeSBib3VuZCB0aGUgY2hhbm5lbAorICAgIFxwYXJhbSBSZW1vdGVQb3J0
IFRoZSBwb3J0IG51bWJlciBib3VuZCB0byB0aGUgY2hhbm5lbCBpbiB0aGUgcmVtb3RlIGRvbWFp
bgorICAgIFxwYXJhbSBNYXNrIFNldCB0byBUUlVFIGlmIHRoZSBjaGFubmVsIHNob3VsZCBiZSBh
dXRvbWF0aWNhbGx5IG1hc2tlZCBiZWZvcmUgaW52b2tpbmcgdGhlIGNhbGxiYWNrCisKKyAgICBc
YiBWSVJROgorICAgIFxwYXJhbSBJbmRleCBUaGUgaW5kZXggbnVtYmVyIG9mIHRoZSBWSVJRCisK
KyAgICBccmV0dXJuIEV2ZW50IGNoYW5uZWwgaGFuZGxlCisqLyAgCit0eXBlZGVmIFBYRU5CVVNf
RVZUQ0hOX0NIQU5ORUwKKygqWEVOQlVTX0VWVENITl9PUEVOKSgKKyAgICBJTiAgUElOVEVSRkFD
RSAgICAgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIFhFTkJVU19FVlRDSE5fVFlQRSAgVHlwZSwK
KyAgICBJTiAgUEtTRVJWSUNFX1JPVVRJTkUgICBGdW5jdGlvbiwKKyAgICBJTiAgUFZPSUQgICAg
ICAgICAgICAgICBBcmd1bWVudCBPUFRJT05BTCwKKyAgICAuLi4KKyAgICApOworCisvKiEgXHR5
cGVkZWYgWEVOQlVTX0VWVENITl9CSU5ECisgICAgXGJyaWVmIEJpbmQgYW4gZXZlbnQgY2hhbm5l
bCB0byBhIHNwZWNpZmljIENQVQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNl
IGhlYWRlcgorICAgIFxwYXJhbSBDaGFubmVsIFRoZSBjaGFubmVsIGhhbmRsZQorICAgIFxwYXJh
bSBHcm91cCBUaGUgZ3JvdXAgbnVtYmVyIG9mIHRoZSBDUFUgdGhhdCBzaG91bGQgaGFuZGxlIGV2
ZW50cworICAgIFxwYXJhbSBOdW1iZXIgVGhlIHJlbGF0aXZlIG51bWJlciBvZiB0aGUgQ1BVIHRo
YXQgc2hvdWxkIGhhbmRsZSBldmVudHMKKyovCit0eXBlZGVmIE5UU1RBVFVTCisoKlhFTkJVU19F
VlRDSE5fQklORCkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAgICAgICAgIEludGVyZmFjZSwK
KyAgICBJTiAgUFhFTkJVU19FVlRDSE5fQ0hBTk5FTCAgQ2hhbm5lbCwKKyAgICBJTiAgVVNIT1JU
ICAgICAgICAgICAgICAgICAgR3JvdXAsCisgICAgSU4gIFVDSEFSICAgICAgICAgICAgICAgICAg
IE51bWJlcgorICAgICk7CisKK3R5cGVkZWYgVk9JRAorKCpYRU5CVVNfRVZUQ0hOX1VOTUFTS19W
NCkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAgICAgICAgIEludGVyZmFjZSwKKyAgICBJTiAg
UFhFTkJVU19FVlRDSE5fQ0hBTk5FTCAgQ2hhbm5lbCwKKyAgICBJTiAgQk9PTEVBTiAgICAgICAg
ICAgICAgICAgSW5DYWxsYmFjaworICAgICk7CisKKy8qISBcdHlwZWRlZiBYRU5CVVNfRVZUQ0hO
X1VOTUFTSworICAgIFxicmllZiBVbm1hc2sgYW4gZXZlbnQgY2hhbm5lbAorCisgICAgXHBhcmFt
IEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJhbSBDaGFubmVsIFRoZSBj
aGFubmVsIGhhbmRsZQorICAgIFxwYXJhbSBJbkNhbGxiYWNrIFNldCB0byBUUlVFIGlmIHRoaXMg
bWV0aG9kIGlzIGludm9rZWQgaW4gY29udGV4dCBvZiB0aGUgY2hhbm5lbCBjYWxsYmFjaworICAg
IFxwYXJhbSBGb3JjZSBTZXQgdG8gVFJVRSBpZiB0aGUgdW5tYXNrIG11c3Qgc3VjY2VlZCwgb3Ro
ZXJ3aXNlIHNldCB0byBGQUxTRSBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIEZBTFNFIGlm
IHRoZSB1bm1hc2sgZGlkIG5vdCBjb21wbGV0ZS4KKyovCit0eXBlZGVmIEJPT0xFQU4KKygqWEVO
QlVTX0VWVENITl9VTk1BU0spKAorICAgIElOICBQSU5URVJGQUNFICAgICAgICAgICAgICBJbnRl
cmZhY2UsCisgICAgSU4gIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwgIENoYW5uZWwsCisgICAgSU4g
IEJPT0xFQU4gICAgICAgICAgICAgICAgIEluQ2FsbGJhY2ssCisgICAgSU4gIEJPT0xFQU4gICAg
ICAgICAgICAgICAgIEZvcmNlCisgICAgKTsKKwordHlwZWRlZiBWT0lECisoKlhFTkJVU19FVlRD
SE5fU0VORF9WMSkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAgICAgICAgIEludGVyZmFjZSwK
KyAgICBJTiAgUFhFTkJVU19FVlRDSE5fQ0hBTk5FTCAgQ2hhbm5lbAorICAgICk7CisKKy8qISBc
dHlwZWRlZiBYRU5CVVNfRVZUQ0hOX1NFTkQKKyAgICBcYnJpZWYgU2VuZCBhbiBldmVudCB0byB0
aGUgcmVtb3RlIGVuZCBvZiB0aGUgY2hhbm5lbAorCisgICAgSXQgaXMgYXNzdW1lZCB0aGF0IHRo
ZSBkb21haW4gY2Fubm90IHN1c3BlbmQgZHVyaW5nIHRoaXMgY2FsbCBzbworICAgIElSUUwgbXVz
dCBiZSA+PSBESVNQQVRDSF9MRVZFTC4KKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVy
ZmFjZSBoZWFkZXIKKyAgICBccGFyYW0gQ2hhbm5lbCBUaGUgY2hhbm5lbCBoYW5kbGUKKyovICAK
K3R5cGVkZWYgVk9JRAorKCpYRU5CVVNfRVZUQ0hOX1NFTkQpKAorICAgIElOICBQSU5URVJGQUNF
ICAgICAgICAgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwg
IENoYW5uZWwKKyAgICApOworCisvKiEgXHR5cGVkZWYgWEVOQlVTX0VWVENITl9UUklHR0VSCisg
ICAgXGJyaWVmIFNlbmQgYW4gZXZlbnQgdG8gdGhlIGxvY2FsIGVuZCBvZiB0aGUgY2hhbm5lbAor
CisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJhbSBD
aGFubmVsIFRoZSBjaGFubmVsIGhhbmRsZQorKi8gIAordHlwZWRlZiBWT0lECisoKlhFTkJVU19F
VlRDSE5fVFJJR0dFUikoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAgICAgICAgIEludGVyZmFj
ZSwKKyAgICBJTiAgUFhFTkJVU19FVlRDSE5fQ0hBTk5FTCAgQ2hhbm5lbAorICAgICk7CisKKy8q
ISBcdHlwZWRlZiBYRU5CVVNfRVZUQ0hOX0dFVF9DT1VOVAorICAgIFxicmllZiBHZXQgdGhlIG51
bWJlciBvZiBldmVudHMgcmVjZWl2ZWQgYnkgdGhlIGNoYW5uZWwgc2luY2UgaXQgd2FzIG9wZW5l
ZAorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJh
bSBDaGFubmVsIFRoZSBjaGFubmVsIGhhbmRsZQorICAgIFxyZXR1cm4gVGhlIG51bWJlciBvZiBl
dmVudHMKKyovCit0eXBlZGVmIFVMT05HCisoKlhFTkJVU19FVlRDSE5fR0VUX0NPVU5UKSgKKyAg
ICBJTiAgUElOVEVSRkFDRSAgICAgICAgICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQWEVOQlVT
X0VWVENITl9DSEFOTkVMICBDaGFubmVsCisgICAgKTsKKwordHlwZWRlZiBOVFNUQVRVUworKCpY
RU5CVVNfRVZUQ0hOX1dBSVRfVjUpKAorICAgIElOICBQSU5URVJGQUNFICAgICAgICAgICAgICBJ
bnRlcmZhY2UsCisgICAgSU4gIFBYRU5CVVNfRVZUQ0hOX0NIQU5ORUwgIENoYW5uZWwsCisgICAg
SU4gIFBMQVJHRV9JTlRFR0VSICAgICAgICAgIFRpbWVvdXQgT1BUSU9OQUwKKyAgICApOworCisv
KiEgXHR5cGVkZWYgWEVOQlVTX0VWVENITl9XQUlUCisgICAgXGJyaWVmIFdhaXQgZm9yIGV2ZW50
cyB0byB0aGUgbG9jYWwgZW5kIG9mIHRoZSBjaGFubmVsCisKKyAgICBccGFyYW0gSW50ZXJmYWNl
IFRoZSBpbnRlcmZhY2UgaGVhZGVyCisgICAgXHBhcmFtIENoYW5uZWwgVGhlIGNoYW5uZWwgaGFu
ZGxlCisgICAgXHBhcmFtIENvdW50IFRoZSBldmVudCBjb3VudCB0byB3YWl0IGZvcgorICAgIFxw
YXJhbSBUaW1lb3V0IEFuIG9wdGlvbmFsIHRpbWVvdXQgdmFsdWUgKHNpbWlsYXIgdG8gS2VXYWl0
Rm9yU2luZ2xlT2JqZWN0KCksIGJ1dCBub24temVybyB2YWx1ZXMgYXJlIGFsbG93ZWQgYXQgRElT
UEFUQ0hfTEVWRUwpLgorKi8KK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVTX0VWVENITl9XQUlU
KSgKKyAgICBJTiAgUElOVEVSRkFDRSAgICAgICAgICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQ
WEVOQlVTX0VWVENITl9DSEFOTkVMICBDaGFubmVsLAorICAgIElOICBVTE9ORyAgICAgICAgICAg
ICAgICAgICBDb3VudCwKKyAgICBJTiAgUExBUkdFX0lOVEVHRVIgICAgICAgICAgVGltZW91dCBP
UFRJT05BTAorICAgICk7CisKKy8qISBcdHlwZWRlZiBYRU5CVVNfRVZUQ0hOX0dFVF9QT1JUCisg
ICAgXGJyaWVmIEdldCB0aGUgbG9jYWwgcG9ydCBudW1iZXIgYm91bmQgdG8gdGhlIGNoYW5uZWwK
KworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVyZmFjZSBoZWFkZXIKKyAgICBccGFyYW0g
Q2hhbm5lbCBUaGUgY2hhbm5lbCBoYW5kbGUKKyAgICBccmV0dXJuIFRoZSBwb3J0IG51bWJlcgor
Ki8gIAordHlwZWRlZiBVTE9ORworKCpYRU5CVVNfRVZUQ0hOX0dFVF9QT1JUKSgKKyAgICBJTiAg
UElOVEVSRkFDRSAgICAgICAgICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQWEVOQlVTX0VWVENI
Tl9DSEFOTkVMICBDaGFubmVsCisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJVU19FVlRDSE5f
Q0xPU0UKKyAgICBcYnJpZWYgQ2xvc2UgYW4gZXZlbnQgY2hhbm5lbAorCisgICAgXHBhcmFtIElu
dGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJhbSBDaGFubmVsIFRoZSBjaGFu
bmVsIGhhbmRsZQorKi8gIAordHlwZWRlZiBWT0lECisoKlhFTkJVU19FVlRDSE5fQ0xPU0UpKAor
ICAgIElOICBQSU5URVJGQUNFICAgICAgICAgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIFBYRU5C
VVNfRVZUQ0hOX0NIQU5ORUwgIENoYW5uZWwKKyAgICApOworCisvLyB7QkUyNDQwQUMtMTA5OC00
MTUwLUFGNEQtNDUyRkFEQ0VGOTIzfQorREVGSU5FX0dVSUQoR1VJRF9YRU5CVVNfRVZUQ0hOX0lO
VEVSRkFDRSwgCisweGJlMjQ0MGFjLCAweDEwOTgsIDB4NDE1MCwgMHhhZiwgMHg0ZCwgMHg0NSwg
MHgyZiwgMHhhZCwgMHhjZSwgMHhmOSwgMHgyMyk7CisKKy8qISBcc3RydWN0IF9YRU5CVVNfRVZU
Q0hOX0lOVEVSRkFDRV9WNAorICAgIFxicmllZiBFVlRDSE4gaW50ZXJmYWNlIHZlcnNpb24gNAor
ICAgIFxpbmdyb3VwIGludGVyZmFjZXMKKyovCitzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJG
QUNFX1Y0IHsKKyAgICBJTlRFUkZBQ0UgICAgICAgICAgICAgICBJbnRlcmZhY2U7CisgICAgWEVO
QlVTX0VWVENITl9BQ1FVSVJFICAgRXZ0Y2huQWNxdWlyZTsKKyAgICBYRU5CVVNfRVZUQ0hOX1JF
TEVBU0UgICBFdnRjaG5SZWxlYXNlOworICAgIFhFTkJVU19FVlRDSE5fT1BFTiAgICAgIEV2dGNo
bk9wZW47CisgICAgWEVOQlVTX0VWVENITl9CSU5EICAgICAgRXZ0Y2huQmluZDsKKyAgICBYRU5C
VVNfRVZUQ0hOX1VOTUFTS19WNCBFdnRjaG5Vbm1hc2tWZXJzaW9uNDsKKyAgICBYRU5CVVNfRVZU
Q0hOX1NFTkRfVjEgICBFdnRjaG5TZW5kVmVyc2lvbjE7CisgICAgWEVOQlVTX0VWVENITl9UUklH
R0VSICAgRXZ0Y2huVHJpZ2dlcjsKKyAgICBYRU5CVVNfRVZUQ0hOX0dFVF9QT1JUICBFdnRjaG5H
ZXRQb3J0OworICAgIFhFTkJVU19FVlRDSE5fQ0xPU0UgICAgIEV2dGNobkNsb3NlOworfTsKKwor
LyohIFxzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJGQUNFX1Y1CisgICAgXGJyaWVmIEVWVENI
TiBpbnRlcmZhY2UgdmVyc2lvbiA1CisgICAgXGluZ3JvdXAgaW50ZXJmYWNlcworKi8KK3N0cnVj
dCBfWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfVjUgeworICAgIElOVEVSRkFDRSAgICAgICAgICAg
ICAgIEludGVyZmFjZTsKKyAgICBYRU5CVVNfRVZUQ0hOX0FDUVVJUkUgICBFdnRjaG5BY3F1aXJl
OworICAgIFhFTkJVU19FVlRDSE5fUkVMRUFTRSAgIEV2dGNoblJlbGVhc2U7CisgICAgWEVOQlVT
X0VWVENITl9PUEVOICAgICAgRXZ0Y2huT3BlbjsKKyAgICBYRU5CVVNfRVZUQ0hOX0JJTkQgICAg
ICBFdnRjaG5CaW5kOworICAgIFhFTkJVU19FVlRDSE5fVU5NQVNLX1Y0IEV2dGNoblVubWFza1Zl
cnNpb240OworICAgIFhFTkJVU19FVlRDSE5fU0VORF9WMSAgIEV2dGNoblNlbmRWZXJzaW9uMTsK
KyAgICBYRU5CVVNfRVZUQ0hOX1RSSUdHRVIgICBFdnRjaG5UcmlnZ2VyOworICAgIFhFTkJVU19F
VlRDSE5fV0FJVF9WNSAgIEV2dGNobldhaXRWZXJzaW9uNTsKKyAgICBYRU5CVVNfRVZUQ0hOX0dF
VF9QT1JUICBFdnRjaG5HZXRQb3J0OworICAgIFhFTkJVU19FVlRDSE5fQ0xPU0UgICAgIEV2dGNo
bkNsb3NlOworfTsKKworLyohIFxzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJGQUNFX1Y2Cisg
ICAgXGJyaWVmIEVWVENITiBpbnRlcmZhY2UgdmVyc2lvbiA2CisgICAgXGluZ3JvdXAgaW50ZXJm
YWNlcworKi8KK3N0cnVjdCBfWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfVjYgeworICAgIElOVEVS
RkFDRSAgICAgICAgICAgICAgIEludGVyZmFjZTsKKyAgICBYRU5CVVNfRVZUQ0hOX0FDUVVJUkUg
ICBFdnRjaG5BY3F1aXJlOworICAgIFhFTkJVU19FVlRDSE5fUkVMRUFTRSAgIEV2dGNoblJlbGVh
c2U7CisgICAgWEVOQlVTX0VWVENITl9PUEVOICAgICAgRXZ0Y2huT3BlbjsKKyAgICBYRU5CVVNf
RVZUQ0hOX0JJTkQgICAgICBFdnRjaG5CaW5kOworICAgIFhFTkJVU19FVlRDSE5fVU5NQVNLX1Y0
IEV2dGNoblVubWFza1ZlcnNpb240OworICAgIFhFTkJVU19FVlRDSE5fU0VORCAgICAgIEV2dGNo
blNlbmQ7CisgICAgWEVOQlVTX0VWVENITl9UUklHR0VSICAgRXZ0Y2huVHJpZ2dlcjsKKyAgICBY
RU5CVVNfRVZUQ0hOX1dBSVRfVjUgICBFdnRjaG5XYWl0VmVyc2lvbjU7CisgICAgWEVOQlVTX0VW
VENITl9HRVRfUE9SVCAgRXZ0Y2huR2V0UG9ydDsKKyAgICBYRU5CVVNfRVZUQ0hOX0NMT1NFICAg
ICBFdnRjaG5DbG9zZTsKK307CisKKy8qISBcc3RydWN0IF9YRU5CVVNfRVZUQ0hOX0lOVEVSRkFD
RV9WNworICAgIFxicmllZiBFVlRDSE4gaW50ZXJmYWNlIHZlcnNpb24gNworICAgIFxpbmdyb3Vw
IGludGVyZmFjZXMKKyovCitzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJGQUNFX1Y3IHsKKyAg
ICBJTlRFUkZBQ0UgICAgICAgICAgICAgICBJbnRlcmZhY2U7CisgICAgWEVOQlVTX0VWVENITl9B
Q1FVSVJFICAgRXZ0Y2huQWNxdWlyZTsKKyAgICBYRU5CVVNfRVZUQ0hOX1JFTEVBU0UgICBFdnRj
aG5SZWxlYXNlOworICAgIFhFTkJVU19FVlRDSE5fT1BFTiAgICAgIEV2dGNobk9wZW47CisgICAg
WEVOQlVTX0VWVENITl9CSU5EICAgICAgRXZ0Y2huQmluZDsKKyAgICBYRU5CVVNfRVZUQ0hOX1VO
TUFTS19WNCBFdnRjaG5Vbm1hc2tWZXJzaW9uNDsKKyAgICBYRU5CVVNfRVZUQ0hOX1NFTkQgICAg
ICBFdnRjaG5TZW5kOworICAgIFhFTkJVU19FVlRDSE5fVFJJR0dFUiAgIEV2dGNoblRyaWdnZXI7
CisgICAgWEVOQlVTX0VWVENITl9HRVRfQ09VTlQgRXZ0Y2huR2V0Q291bnQ7CisgICAgWEVOQlVT
X0VWVENITl9XQUlUICAgICAgRXZ0Y2huV2FpdDsKKyAgICBYRU5CVVNfRVZUQ0hOX0dFVF9QT1JU
ICBFdnRjaG5HZXRQb3J0OworICAgIFhFTkJVU19FVlRDSE5fQ0xPU0UgICAgIEV2dGNobkNsb3Nl
OworfTsKKworLyohIFxzdHJ1Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJGQUNFX1Y4CisgICAgXGJy
aWVmIEVWVENITiBpbnRlcmZhY2UgdmVyc2lvbiA4CisgICAgXGluZ3JvdXAgaW50ZXJmYWNlcwor
Ki8KK3N0cnVjdCBfWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfVjggeworICAgIElOVEVSRkFDRSAg
ICAgICAgICAgICAgIEludGVyZmFjZTsKKyAgICBYRU5CVVNfRVZUQ0hOX0FDUVVJUkUgICBFdnRj
aG5BY3F1aXJlOworICAgIFhFTkJVU19FVlRDSE5fUkVMRUFTRSAgIEV2dGNoblJlbGVhc2U7Cisg
ICAgWEVOQlVTX0VWVENITl9PUEVOICAgICAgRXZ0Y2huT3BlbjsKKyAgICBYRU5CVVNfRVZUQ0hO
X0JJTkQgICAgICBFdnRjaG5CaW5kOworICAgIFhFTkJVU19FVlRDSE5fVU5NQVNLICAgIEV2dGNo
blVubWFzazsKKyAgICBYRU5CVVNfRVZUQ0hOX1NFTkQgICAgICBFdnRjaG5TZW5kOworICAgIFhF
TkJVU19FVlRDSE5fVFJJR0dFUiAgIEV2dGNoblRyaWdnZXI7CisgICAgWEVOQlVTX0VWVENITl9H
RVRfQ09VTlQgRXZ0Y2huR2V0Q291bnQ7CisgICAgWEVOQlVTX0VWVENITl9XQUlUICAgICAgRXZ0
Y2huV2FpdDsKKyAgICBYRU5CVVNfRVZUQ0hOX0dFVF9QT1JUICBFdnRjaG5HZXRQb3J0OworICAg
IFhFTkJVU19FVlRDSE5fQ0xPU0UgICAgIEV2dGNobkNsb3NlOworfTsKKwordHlwZWRlZiBzdHJ1
Y3QgX1hFTkJVU19FVlRDSE5fSU5URVJGQUNFX1Y4IFhFTkJVU19FVlRDSE5fSU5URVJGQUNFLCAq
UFhFTkJVU19FVlRDSE5fSU5URVJGQUNFOworCisvKiEgXGRlZiBYRU5CVVNfRVZUQ0hOCisgICAg
XGJyaWVmIE1hY3JvIGF0IGFzc2lzdCBpbiBtZXRob2QgaW52b2NhdGlvbgorKi8KKyNkZWZpbmUg
WEVOQlVTX0VWVENITihfTWV0aG9kLCBfSW50ZXJmYWNlLCAuLi4pICAgIFwKKyAgICAoX0ludGVy
ZmFjZSktPkV2dGNobiAjIyBfTWV0aG9kKChQSU5URVJGQUNFKShfSW50ZXJmYWNlKSwgX19WQV9B
UkdTX18pCisKKyNlbmRpZiAgLy8gX1dJTkRMTAorCisjZGVmaW5lIFhFTkJVU19FVlRDSE5fSU5U
RVJGQUNFX1ZFUlNJT05fTUlOIDQKKyNkZWZpbmUgWEVOQlVTX0VWVENITl9JTlRFUkZBQ0VfVkVS
U0lPTl9NQVggOAorCisjZW5kaWYgIC8vIF9YRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRV9ICisKZGlm
ZiAtLWdpdCBhL2luY2x1ZGUvZ250dGFiX2ludGVyZmFjZS5oIGIvaW5jbHVkZS9nbnR0YWJfaW50
ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjEyNzJhYgotLS0g
L2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZ250dGFiX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsMjg3
IEBACisvKiBDb3B5cmlnaHQgKGMpIENpdHJpeCBTeXN0ZW1zIEluYy4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIAorICogd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCAKKyAqIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKiAKKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIAorICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgCisgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqICAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIAorICog
ICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciAKKyAqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgCisgKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCAKKyAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIAorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIAorICogQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIAorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCAKKyAqIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyAK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIAorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyohIFxmaWxlIGdudHRhYl9pbnRl
cmZhY2UuaAorICAgIFxicmllZiBYRU5CVVMgR05UVEFCIEludGVyZmFjZQorCisgICAgVGhpcyBp
bnRlcmZhY2UgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoeXBlcnZpc29yIGdyYW50IHRhYmxlCisq
LworCisjaWZuZGVmIF9YRU5CVVNfR05UVEFCX0lOVEVSRkFDRV9ICisjZGVmaW5lIF9YRU5CVVNf
R05UVEFCX0lOVEVSRkFDRV9ICisKKyNpbmNsdWRlIDxjYWNoZV9pbnRlcmZhY2UuaD4KKworI2lm
bmRlZiBfV0lORExMCisKKy8qISBcdHlwZWRlZiBYRU5CVVNfR05UVEFCX0VOVFJZCisgICAgXGJy
aWVmIEdyYW50IHRhYmxlIGVudHJ5IGhhbmRsZQorKi8KK3R5cGVkZWYgc3RydWN0IF9YRU5CVVNf
R05UVEFCX0VOVFJZIFhFTkJVU19HTlRUQUJfRU5UUlksICpQWEVOQlVTX0dOVFRBQl9FTlRSWTsK
KworLyohIFx0eXBlZGVmIFhFTkJVU19HTlRUQUJfQ0FDSEUKKyAgICBcYnJpZWYgR3JhbnQgdGFi
bGUgY2FjaGUgaGFuZGxlCisqLwordHlwZWRlZiBzdHJ1Y3QgX1hFTkJVU19HTlRUQUJfQ0FDSEUg
WEVOQlVTX0dOVFRBQl9DQUNIRSwgKlBYRU5CVVNfR05UVEFCX0NBQ0hFOworCisvKiEgXHR5cGVk
ZWYgWEVOQlVTX0dOVFRBQl9BQ1FVSVJFCisgICAgXGJyaWVmIEFjcXVpcmUgYSByZWZlcmVuY2Ug
dG8gdGhlIEdOVFRBQiBpbnRlcmZhY2UKKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVy
ZmFjZSBoZWFkZXIKKyovICAKK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVTX0dOVFRBQl9BQ1FV
SVJFKSgKKyAgICBJTiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0eXBl
ZGVmIFhFTkJVU19HTlRUQUJfUkVMRUFTRQorICAgIFxicmllZiBSZWxlYXNlIGEgcmVmZXJlbmNl
IHRvIHRoZSBHTlRUQUIgaW50ZXJmYWNlCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBpbnRl
cmZhY2UgaGVhZGVyCisqLyAgCit0eXBlZGVmIFZPSUQKKygqWEVOQlVTX0dOVFRBQl9SRUxFQVNF
KSgKKyAgICBJTiAgUElOVEVSRkFDRSAgSW50ZXJmYWNlCisgICAgKTsKKworLyohIFx0eXBlZGVm
IFhFTkJVU19HTlRUQUJfQ1JFQVRFX0NBQ0hFCisgICAgXGJyaWVmIENyZWF0ZSBhIGNhY2hlIG9m
IGdyYW50IHRhYmxlIGVudHJpZXMKKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhlIGludGVyZmFj
ZSBoZWFkZXIKKyAgICBccGFyYW0gTmFtZSBBIG5hbWUgZm9yIHRoZSBjYWNoZSB3aGljaCB3aWxs
IGJlIHVzZWQgaW4gZGVidWcgb3V0cHV0CisgICAgXHBhcmFtIFJlc2VydmF0aW9uIFRoZSB0YXJn
ZXQgbWluaW11bSBwb3B1bGF0aW9uIG9mIHRoZSBjYWNoZQorICAgIFxwYXJhbSBBY3F1aXJlTG9j
ayBBIGNhbGxiYWNrIGludm9rZWQgdG8gYWNxdWlyZSBhIHNwaW5sb2NrCisgICAgXHBhcmFtIFJl
bGVhc2VMb2NrIEEgY2FsbGJhY2sgaW52b2tlZCB0byByZWxlYXNlIHRoZSBzcGlubG9jaworICAg
IFxwYXJhbSBBcmd1bWVudCBBbiBvcHRpb25hbCBjb250ZXh0IGFyZ3VtZW50IHBhc3NlZCB0byB0
aGUgY2FsbGJhY2tzCisgICAgXHBhcmFtIENhY2hlIEEgcG9pbnRlciB0byBhIGdyYW50IHRhYmxl
IGNhY2hlIGhhbmRsZSB0byBiZSBpbml0aWFsaXplZAorKi8gIAordHlwZWRlZiBOVFNUQVRVUwor
KCpYRU5CVVNfR05UVEFCX0NSRUFURV9DQUNIRSkoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAg
ICAgICAgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIGNvbnN0IENIQVIgICAgICAgICAgICAgICAg
ICAqTmFtZSwKKyAgICBJTiAgVUxPTkcgICAgICAgICAgICAgICAgICAgICAgIFJlc2VydmF0aW9u
LAorICAgIElOICBYRU5CVVNfQ0FDSEVfQUNRVUlSRV9MT0NLICAgQWNxdWlyZUxvY2ssCisgICAg
SU4gIFhFTkJVU19DQUNIRV9SRUxFQVNFX0xPQ0sgICBSZWxlYXNlTG9jaywKKyAgICBJTiAgUFZP
SUQgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50IE9QVElPTkFMLAorICAgIE9VVCBQWEVO
QlVTX0dOVFRBQl9DQUNIRSAgICAgICAgKkNhY2hlCisgICAgKTsKKworLyohIFx0eXBlZGVmIFhF
TkJVU19HTlRUQUJfUEVSTUlUX0ZPUkVJR05fQUNDRVNTCisgICAgXGJyaWVmIEdldCBhIHRhYmxl
IGVudHJ5IGZyb20gdGhlIFxhIENhY2hlIHBlcm1pdHRpbmcgYWNjZXNzIHRvIGEgZ2l2ZW4gXGEg
UGZuCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBpbnRlcmZhY2UgaGVhZGVyCisgICAgXHBh
cmFtIENhY2hlIFRoZSBncmFudCB0YWJsZSBjYWNoZSBoYW5kbGUKKyAgICBccGFyYW0gTG9ja2Vk
IElmIG11dHVhbGx5IGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGNhY2hlIGlzIGFscmVhZHkKKyAg
ICBndWFyYW50ZWVkIHRoZW4gc2V0IHRoaXMgdG8gVFJVRQorICAgIFxwYXJhbSBEb21haW4gVGhl
IGRvbWlkIG9mIHRoZSBkb21haW4gYmVpbmcgZ3JhbnRlZCBhY2Nlc3MKKyAgICBccGFyYW0gUGZu
IFRoZSBmcmFtZSBudW1iZXIgb2YgdGhlIHBhZ2UgdGhhdCB3ZSBhcmUgZ3JhbnRpbmcgYWNjZXNz
IHRvCisgICAgXHBhcmFtIFJlYWRPbmx5IFNldCB0byBUUlVFIGlmIHRoZSBmb3JlaWduIGRvbWFp
biBpcyBvbmx5IGJlaW5nIGdyYW50ZWQKKyAgICByZWFkIGFjY2VzcworICAgIFxwYXJhbSBFbnRy
eSBBIHBvaW50ZXIgdG8gYSBncmFudCB0YWJsZSBlbnRyeSBoYW5kbGUgdG8gYmUgaW5pdGlhbGl6
ZWQKKyovCit0eXBlZGVmIE5UU1RBVFVTCisoKlhFTkJVU19HTlRUQUJfUEVSTUlUX0ZPUkVJR05f
QUNDRVNTKSgKKyAgICBJTiAgUElOVEVSRkFDRSAgICAgICAgICAgICAgICAgIEludGVyZmFjZSwK
KyAgICBJTiAgUFhFTkJVU19HTlRUQUJfQ0FDSEUgICAgICAgIENhY2hlLAorICAgIElOICBCT09M
RUFOICAgICAgICAgICAgICAgICAgICAgTG9ja2VkLAorICAgIElOICBVU0hPUlQgICAgICAgICAg
ICAgICAgICAgICAgRG9tYWluLAorICAgIElOICBQRk5fTlVNQkVSICAgICAgICAgICAgICAgICAg
UGZuLAorICAgIElOICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgUmVhZE9ubHksCisgICAg
T1VUIFBYRU5CVVNfR05UVEFCX0VOVFJZICAgICAgICAqRW50cnkKKyAgICApOworCisvKiEgXHR5
cGVkZWYgWEVOQlVTX0dOVFRBQl9SRVZPS0VfRk9SRUlHTl9BQ0NFU1MKKyAgICBcYnJpZWYgUmV2
b2tlIGZvcmVpZ24gYWNjZXNzIGFuZCByZXR1cm4gdGhlIFxhIEVudHJ5IHRvIHRoZSBcYSBDYWNo
ZQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJh
bSBDYWNoZSBUaGUgZ3JhbnQgdGFibGUgY2FjaGUgaGFuZGxlCisgICAgXHBhcmFtIExvY2tlZCBJ
ZiBtdXR1YWxseSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBjYWNoZSBpcyBhbHJlYWR5CisgICAg
Z3VhcmFudGVlZCB0aGVuIHNldCB0aGlzIHRvIFRSVUUKKyAgICBccGFyYW0gRW50cnkgVGhlIGdy
YW50IHRhYmxlIGVudHJ5IGhhbmRsZQorKi8KK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVTX0dO
VFRBQl9SRVZPS0VfRk9SRUlHTl9BQ0NFU1MpKAorICAgIElOICBQSU5URVJGQUNFICAgICAgICAg
ICAgICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQWEVOQlVTX0dOVFRBQl9DQUNIRSAgICAgICAg
Q2FjaGUsCisgICAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBMb2NrZWQsCisgICAg
SU4gIFBYRU5CVVNfR05UVEFCX0VOVFJZICAgICAgICBFbnRyeQorICAgICk7CisKKy8qISBcdHlw
ZWRlZiBYRU5CVVNfR05UVEFCX0dFVF9SRUZFUkVOQ0UKKyAgICBcYnJpZWYgR2V0IHRoZSByZWZl
cmVuY2UgbnVtYmVyIG9mIHRoZSBlbnRyeQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50
ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJhbSBFbnRyeSBUaGUgZ3JhbnQgdGFibGUgZW50cnkgaGFu
ZGxlCisgICAgXHJldHVybiBUaGUgcmVmZXJlbmNlIG51bWJlcgorKi8gIAordHlwZWRlZiBVTE9O
RworKCpYRU5CVVNfR05UVEFCX0dFVF9SRUZFUkVOQ0UpKAorICAgIElOICBQSU5URVJGQUNFICAg
ICAgICAgICAgICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQWEVOQlVTX0dOVFRBQl9FTlRSWSAg
ICAgICAgRW50cnkKKyAgICApOworCisvKiEgXHR5cGVkZWYgWEVOQlVTX0dOVFRBQl9RVUVSWV9S
RUZFUkVOQ0UKKyAgICBcYnJpZWYgR2V0IHRoZSByZWZlcmVuY2UgbnVtYmVyIG9mIHRoZSBlbnRy
eQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRlcgorICAgIFxwYXJh
bSBSZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSBudW1iZXIKKyAgICBccGFyYW0gUGZuIEFuIG9wdGlv
bmFsIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZSBmcmFtZSBu
dW1iZXIKKyAgICBccGFyYW0gUmVhZE9ubHkgQW4gb3B0aW9uYWwgcG9pbnRlciB0byByZWNlaXZl
IHRoZSBib29sZWFuIHZhbHVlIG9mIHRoZSByZWFkLW9ubHkgZmxhZworKi8KK3R5cGVkZWYgTlRT
VEFUVVMKKygqWEVOQlVTX0dOVFRBQl9RVUVSWV9SRUZFUkVOQ0UpKAorICAgIElOICBQSU5URVJG
QUNFICBJbnRlcmZhY2UsCisgICAgSU4gIFVMT05HICAgICAgIFJlZmVyZW5jZSwKKyAgICBPVVQg
UFBGTl9OVU1CRVIgUGZuIE9QVElPTkFMLAorICAgIE9VVCBQQk9PTEVBTiAgICBSZWFkT25seSBP
UFRJT05BTAorICAgICk7CisKKyNkZWZpbmUgWEVOQlVTX0dOVFRBQl9DT05TT0xFX1JFRkVSRU5D
RSAwCisjZGVmaW5lIFhFTkJVU19HTlRUQUJfU1RPUkVfUkVGRVJFTkNFICAgMQorCisKKy8qISBc
dHlwZWRlZiBYRU5CVVNfR05UVEFCX0RFU1RST1lfQ0FDSEUKKyAgICBcYnJpZWYgRGVzdHJveSBh
IGNhY2hlIG9mIGdyYW50IHRhYmxlIGVudHJpZXMKKworICAgIFxwYXJhbSBJbnRlcmZhY2UgVGhl
IGludGVyZmFjZSBoZWFkZXIKKyAgICBccGFyYW0gQ2FjaGUgVGhlIGdyYW50IHRhYmxlIGNhY2hl
IGhhbmRsZQorCisgICAgQWxsIGdyYW50IHRhYmxlIGVudHJpZXMgbXVzdCBoYXZlIGJlZW4gcmV2
b2tlZCBwcmlvciB0byBkZXN0cnVjdGlvbgorICAgIG9mIHRoZSBjYWNoZSAKKyovICAKK3R5cGVk
ZWYgVk9JRAorKCpYRU5CVVNfR05UVEFCX0RFU1RST1lfQ0FDSEUpKAorICAgIElOICBQSU5URVJG
QUNFICAgICAgICAgICAgICBJbnRlcmZhY2UsCisgICAgSU4gIFBYRU5CVVNfR05UVEFCX0NBQ0hF
ICAgIENhY2hlCisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJVU19HTlRUQUJfTUFQX0ZPUkVJ
R05fUEFHRVMKKyAgICBcYnJpZWYgTWFwIGZvcmVpZ24gbWVtb3J5IHBhZ2VzIGludG8gdGhlIHN5
c3RlbSBhZGRyZXNzIHNwYWNlCisKKyAgICBccGFyYW0gSW50ZXJmYWNlIFRoZSBpbnRlcmZhY2Ug
aGVhZGVyCisgICAgXHBhcmFtIERvbWFpbiBUaGUgZG9taWQgb2YgdGhlIGZvcmVpZ24gZG9tYWlu
IHRoYXQgZ3JhbnRlZCB0aGUgcGFnZXMKKyAgICBccGFyYW0gTnVtYmVyUGFnZXMgTnVtYmVyIG9m
IHBhZ2VzIHRvIG1hcAorICAgIFxwYXJhbSBSZWZlcmVuY2VzIEFycmF5IG9mIGdyYW50IHJlZmVy
ZW5jZSBudW1iZXJzIHNoYXJlZCBieSB0aGUgZm9yZWlnbiBkb21haW4KKyAgICBccGFyYW0gUmVh
ZE9ubHkgSWYgVFJVRSwgcGFnZXMgYXJlIG1hcHBlZCB3aXRoIHJlYWQtb25seSBhY2Nlc3MKKyAg
ICBccGFyYW0gQWRkcmVzcyBUaGUgcGh5c2ljYWwgYWRkcmVzcyB0aGF0IHRoZSBmb3JlaWduIHBh
Z2VzIGFyZSBtYXBwZWQgdW5kZXIKKyovCisKK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVTX0dO
VFRBQl9NQVBfRk9SRUlHTl9QQUdFUykoCisgICAgSU4gIFBJTlRFUkZBQ0UgICAgICAgICAgICAg
IEludGVyZmFjZSwKKyAgICBJTiAgVVNIT1JUICAgICAgICAgICAgICAgICAgRG9tYWluLAorICAg
IElOICBVTE9ORyAgICAgICAgICAgICAgICAgICBOdW1iZXJQYWdlcywKKyAgICBJTiAgUFVMT05H
ICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlcywKKyAgICBJTiAgQk9PTEVBTiAgICAgICAgICAg
ICAgICAgUmVhZE9ubHksCisgICAgT1VUIFBIWVNJQ0FMX0FERFJFU1MgICAgICAgICpBZGRyZXNz
CisgICAgKTsKKworLyohIFx0eXBlZGVmIFhFTkJVU19HTlRUQUJfVU5NQVBfRk9SRUlHTl9QQUdF
UworICAgIFxicmllZiBVbm1hcCBmb3JlaWduIG1lbW9yeSBwYWdlcyBmcm9tIHRoZSBzeXN0ZW0g
YWRkcmVzcyBzcGFjZQorCisgICAgXHBhcmFtIEludGVyZmFjZSBUaGUgaW50ZXJmYWNlIGhlYWRl
cgorICAgIFxwYXJhbSBBZGRyZXNzIFRoZSBwaHlzaWNhbCBhZGRyZXNzIHRoYXQgdGhlIGZvcmVp
Z24gcGFnZXMgYXJlIG1hcHBlZCB1bmRlcgorKi8KK3R5cGVkZWYgTlRTVEFUVVMKKygqWEVOQlVT
X0dOVFRBQl9VTk1BUF9GT1JFSUdOX1BBR0VTKSgKKyAgICBJTiAgUElOVEVSRkFDRSAgICAgICAg
ICAgICAgSW50ZXJmYWNlLAorICAgIElOICBQSFlTSUNBTF9BRERSRVNTICAgICAgICBBZGRyZXNz
CisgICAgKTsKKworLy8gezc2MzY3OUM1LUU1QzItNEE2RC04Qjg4LTZCQjAyRUM0MkQ4RX0KK0RF
RklORV9HVUlEKEdVSURfWEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0UsIAorMHg3NjM2NzljNSwgMHhl
NWMyLCAweDRhNmQsIDB4OGIsIDB4ODgsIDB4NmIsIDB4YjAsIDB4MmUsIDB4YzQsIDB4MmQsIDB4
OGUpOworCisvKiEgXHN0cnVjdCBfWEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0VfVjEKKyAgICBcYnJp
ZWYgR05UVEFCIGludGVyZmFjZSB2ZXJzaW9uIDEKKyAgICBcaW5ncm91cCBpbnRlcmZhY2VzCisq
Lworc3RydWN0IF9YRU5CVVNfR05UVEFCX0lOVEVSRkFDRV9WMSB7CisgICAgSU5URVJGQUNFICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlOworICAgIFhFTkJVU19HTlRUQUJfQUNR
VUlSRSAgICAgICAgICAgICAgIEdudHRhYkFjcXVpcmU7CisgICAgWEVOQlVTX0dOVFRBQl9SRUxF
QVNFICAgICAgICAgICAgICAgR250dGFiUmVsZWFzZTsKKyAgICBYRU5CVVNfR05UVEFCX0NSRUFU
RV9DQUNIRSAgICAgICAgICBHbnR0YWJDcmVhdGVDYWNoZTsKKyAgICBYRU5CVVNfR05UVEFCX1BF
Uk1JVF9GT1JFSUdOX0FDQ0VTUyBHbnR0YWJQZXJtaXRGb3JlaWduQWNjZXNzOworICAgIFhFTkJV
U19HTlRUQUJfUkVWT0tFX0ZPUkVJR05fQUNDRVNTIEdudHRhYlJldm9rZUZvcmVpZ25BY2Nlc3M7
CisgICAgWEVOQlVTX0dOVFRBQl9HRVRfUkVGRVJFTkNFICAgICAgICAgR250dGFiR2V0UmVmZXJl
bmNlOworICAgIFhFTkJVU19HTlRUQUJfREVTVFJPWV9DQUNIRSAgICAgICAgIEdudHRhYkRlc3Ry
b3lDYWNoZTsKK307CisKKy8qISBcc3RydWN0IF9YRU5CVVNfR05UVEFCX0lOVEVSRkFDRV9WMgor
ICAgIFxicmllZiBHTlRUQUIgaW50ZXJmYWNlIHZlcnNpb24gMgorICAgIFxpbmdyb3VwIGludGVy
ZmFjZXMKKyovCitzdHJ1Y3QgX1hFTkJVU19HTlRUQUJfSU5URVJGQUNFX1YyIHsKKyAgICBJTlRF
UkZBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2U7CisgICAgWEVOQlVTX0dO
VFRBQl9BQ1FVSVJFICAgICAgICAgICAgICAgR250dGFiQWNxdWlyZTsKKyAgICBYRU5CVVNfR05U
VEFCX1JFTEVBU0UgICAgICAgICAgICAgICBHbnR0YWJSZWxlYXNlOworICAgIFhFTkJVU19HTlRU
QUJfQ1JFQVRFX0NBQ0hFICAgICAgICAgIEdudHRhYkNyZWF0ZUNhY2hlOworICAgIFhFTkJVU19H
TlRUQUJfUEVSTUlUX0ZPUkVJR05fQUNDRVNTIEdudHRhYlBlcm1pdEZvcmVpZ25BY2Nlc3M7Cisg
ICAgWEVOQlVTX0dOVFRBQl9SRVZPS0VfRk9SRUlHTl9BQ0NFU1MgR250dGFiUmV2b2tlRm9yZWln
bkFjY2VzczsKKyAgICBYRU5CVVNfR05UVEFCX0dFVF9SRUZFUkVOQ0UgICAgICAgICBHbnR0YWJH
ZXRSZWZlcmVuY2U7CisgICAgWEVOQlVTX0dOVFRBQl9ERVNUUk9ZX0NBQ0hFICAgICAgICAgR250
dGFiRGVzdHJveUNhY2hlOworICAgIFhFTkJVU19HTlRUQUJfTUFQX0ZPUkVJR05fUEFHRVMgICAg
IEdudHRhYk1hcEZvcmVpZ25QYWdlczsKKyAgICBYRU5CVVNfR05UVEFCX1VOTUFQX0ZPUkVJR05f
UEFHRVMgICBHbnR0YWJVbm1hcEZvcmVpZ25QYWdlczsKK307CisKKy8qISBcc3RydWN0IF9YRU5C
VVNfR05UVEFCX0lOVEVSRkFDRV9WMworICAgIFxicmllZiBHTlRUQUIgaW50ZXJmYWNlIHZlcnNp
b24gMworICAgIFxpbmdyb3VwIGludGVyZmFjZXMKKyovCitzdHJ1Y3QgX1hFTkJVU19HTlRUQUJf
SU5URVJGQUNFX1YzIHsKKyAgICBJTlRFUkZBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnRlcmZhY2U7CisgICAgWEVOQlVTX0dOVFRBQl9BQ1FVSVJFICAgICAgICAgICAgICAgR250dGFi
QWNxdWlyZTsKKyAgICBYRU5CVVNfR05UVEFCX1JFTEVBU0UgICAgICAgICAgICAgICBHbnR0YWJS
ZWxlYXNlOworICAgIFhFTkJVU19HTlRUQUJfQ1JFQVRFX0NBQ0hFICAgICAgICAgIEdudHRhYkNy
ZWF0ZUNhY2hlOworICAgIFhFTkJVU19HTlRUQUJfUEVSTUlUX0ZPUkVJR05fQUNDRVNTIEdudHRh
YlBlcm1pdEZvcmVpZ25BY2Nlc3M7CisgICAgWEVOQlVTX0dOVFRBQl9SRVZPS0VfRk9SRUlHTl9B
Q0NFU1MgR250dGFiUmV2b2tlRm9yZWlnbkFjY2VzczsKKyAgICBYRU5CVVNfR05UVEFCX0dFVF9S
RUZFUkVOQ0UgICAgICAgICBHbnR0YWJHZXRSZWZlcmVuY2U7CisgICAgWEVOQlVTX0dOVFRBQl9R
VUVSWV9SRUZFUkVOQ0UgICAgICAgR250dGFiUXVlcnlSZWZlcmVuY2U7CisgICAgWEVOQlVTX0dO
VFRBQl9ERVNUUk9ZX0NBQ0hFICAgICAgICAgR250dGFiRGVzdHJveUNhY2hlOworICAgIFhFTkJV
U19HTlRUQUJfTUFQX0ZPUkVJR05fUEFHRVMgICAgIEdudHRhYk1hcEZvcmVpZ25QYWdlczsKKyAg
ICBYRU5CVVNfR05UVEFCX1VOTUFQX0ZPUkVJR05fUEFHRVMgICBHbnR0YWJVbm1hcEZvcmVpZ25Q
YWdlczsKK307CisKK3R5cGVkZWYgc3RydWN0IF9YRU5CVVNfR05UVEFCX0lOVEVSRkFDRV9WMyBY
RU5CVVNfR05UVEFCX0lOVEVSRkFDRSwgKlBYRU5CVVNfR05UVEFCX0lOVEVSRkFDRTsKKworLyoh
IFxkZWYgWEVOQlVTX0dOVFRBQgorICAgIFxicmllZiBNYWNybyBhdCBhc3Npc3QgaW4gbWV0aG9k
IGludm9jYXRpb24KKyovCisjZGVmaW5lIFhFTkJVU19HTlRUQUIoX01ldGhvZCwgX0ludGVyZmFj
ZSwgLi4uKSAgICBcCisgICAgKF9JbnRlcmZhY2UpLT5HbnR0YWIgIyMgX01ldGhvZCgoUElOVEVS
RkFDRSkoX0ludGVyZmFjZSksIF9fVkFfQVJHU19fKQorCisjZW5kaWYgIC8vIF9XSU5ETEwKKwor
I2RlZmluZSBYRU5CVVNfR05UVEFCX0lOVEVSRkFDRV9WRVJTSU9OX01JTiAxCisjZGVmaW5lIFhF
TkJVU19HTlRUQUJfSU5URVJGQUNFX1ZFUlNJT05fTUFYIDMKKworI2VuZGlmICAvLyBfWEVOQlVT
X0dOVFRBQl9JTlRFUkZBQ0VfSAorCmRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9mZG8uYyBiL3Ny
Yy94ZW5jb25zL2Zkby5jCmluZGV4IGUyODM1NWMuLjRiNjU1OGEgMTAwNjQ0Ci0tLSBhL3NyYy94
ZW5jb25zL2Zkby5jCisrKyBiL3NyYy94ZW5jb25zL2Zkby5jCkBAIC00MSw2ICs0MSw4IEBACiAj
aW5jbHVkZSA8c3VzcGVuZF9pbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxzdG9yZV9pbnRlcmZhY2Uu
aD4KICNpbmNsdWRlIDxjb25zb2xlX2ludGVyZmFjZS5oPgorI2luY2x1ZGUgPGV2dGNobl9pbnRl
cmZhY2UuaD4KKyNpbmNsdWRlIDxnbnR0YWJfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8dmVyc2lv
bi5oPgogCiAjaW5jbHVkZSAiZHJpdmVyLmgiCkBAIC05Nyw2ICs5OSw4IEBAIHN0cnVjdCBfWEVO
Q09OU19GRE8gewogICAgIFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSAgICBTdXNwZW5kSW50ZXJm
YWNlOwogICAgIFhFTkJVU19TVE9SRV9JTlRFUkZBQ0UgICAgICBTdG9yZUludGVyZmFjZTsKICAg
ICBYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UgICAgQ29uc29sZUludGVyZmFjZTsKKyAgICBYRU5C
VVNfRVZUQ0hOX0lOVEVSRkFDRSAgICAgRXZ0Y2huSW50ZXJmYWNlOworICAgIFhFTkJVU19HTlRU
QUJfSU5URVJGQUNFICAgICBHbnR0YWJJbnRlcmZhY2U7CiAKICAgICBQWEVOQlVTX1NVU1BFTkRf
Q0FMTEJBQ0sgICAgU3VzcGVuZENhbGxiYWNrTGF0ZTsKIH07CkBAIC0yOTM4LDYgKzI5NDIsOCBA
QCBERUZJTkVfRkRPX0dFVF9JTlRFUkZBQ0UoRGVidWcsIFBYRU5CVVNfREVCVUdfSU5URVJGQUNF
KQogREVGSU5FX0ZET19HRVRfSU5URVJGQUNFKFN1c3BlbmQsIFBYRU5CVVNfU1VTUEVORF9JTlRF
UkZBQ0UpCiBERUZJTkVfRkRPX0dFVF9JTlRFUkZBQ0UoU3RvcmUsIFBYRU5CVVNfU1RPUkVfSU5U
RVJGQUNFKQogREVGSU5FX0ZET19HRVRfSU5URVJGQUNFKENvbnNvbGUsIFBYRU5CVVNfQ09OU09M
RV9JTlRFUkZBQ0UpCitERUZJTkVfRkRPX0dFVF9JTlRFUkZBQ0UoRXZ0Y2huLCBQWEVOQlVTX0VW
VENITl9JTlRFUkZBQ0UpCitERUZJTkVfRkRPX0dFVF9JTlRFUkZBQ0UoR250dGFiLCBQWEVOQlVT
X0dOVFRBQl9JTlRFUkZBQ0UpCiAKIE5UU1RBVFVTCiBGZG9DcmVhdGUoCkBAIC0zMDQwLDYgKzMw
NDYsMjQgQEAgRmRvQ3JlYXRlKAogICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAg
ICBnb3RvIGZhaWwxMTsKIAorICAgIHN0YXR1cyA9IEZET19RVUVSWV9JTlRFUkZBQ0UoRmRvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOQlVTLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVZUQ0hOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKFBJTlRFUkZBQ0UpJkZkby0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKEZkby0+RXZ0Y2huSW50ZXJmYWNlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVz
KSkKKyAgICAgICAgZ290byBmYWlsMTI7CisKKyAgICBzdGF0dXMgPSBGRE9fUVVFUllfSU5URVJG
QUNFKEZkbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTkJVUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdOVFRBQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChQSU5URVJGQUNFKSZGZG8tPkdudHRhYkludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihGZG8tPkdudHRhYkludGVyZmFjZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7CisgICAgaWYgKCFOVF9TVUND
RVNTKHN0YXR1cykpCisgICAgICAgIGdvdG8gZmFpbDEzOworCiAgICAgRHgtPkZkbyA9IEZkbzsK
IAogICAgIEluaXRpYWxpemVNdXRleCgmRmRvLT5NdXRleCk7CkBAIC0zMDUyLDEzICszMDc2LDEz
IEBAIEZkb0NyZWF0ZSgKIAogICAgIHN0YXR1cyA9IFBkb0NyZWF0ZShGZG8sIE5VTEwpOwogICAg
IGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICBnb3RvIGZhaWwxMjsKKyAgICAgICAg
Z290byBmYWlsMTQ7CiAKICAgICBGdW5jdGlvbkRldmljZU9iamVjdC0+RmxhZ3MgJj0gfkRPX0RF
VklDRV9JTklUSUFMSVpJTkc7CiAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOwogCi1mYWlsMTI6
Ci0gICAgRXJyb3IoImZhaWwxMlxuIik7CitmYWlsMTQ6CisgICAgRXJyb3IoImZhaWwxNFxuIik7
CiAKICAgICBEeC0+RmRvID0gRmRvOwogCkBAIC0zMDY2LDYgKzMwOTAsMTggQEAgZmFpbDEyOgog
ICAgIFJ0bFplcm9NZW1vcnkoJkR4LT5MaXN0RW50cnksIHNpemVvZihMSVNUX0VOVFJZKSk7CiAg
ICAgRmRvLT5SZWZlcmVuY2VzID0gMDsKIAorICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+R250dGFi
SW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkJVU19HTlRUQUJfSU5URVJG
QUNFKSk7CisKK2ZhaWwxMzoKKyAgICBFcnJvcigiZmFpbDEzXG4iKTsKKworICAgIFJ0bFplcm9N
ZW1vcnkoJkZkby0+RXZ0Y2huSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhF
TkJVU19FVlRDSE5fSU5URVJGQUNFKSk7CisKK2ZhaWwxMjoKKyAgICBFcnJvcigiZmFpbDEyXG4i
KTsKKwogICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+Q29uc29sZUludGVyZmFjZSwKICAgICAgICAg
ICAgICAgICAgIHNpemVvZihYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UpKTsKIApAQCAtMzE1Nyw2
ICszMTkzLDEyIEBAIEZkb0Rlc3Ryb3koCiAKICAgICBEeC0+RmRvID0gTlVMTDsKIAorICAgIFJ0
bFplcm9NZW1vcnkoJkZkby0+R250dGFiSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgc2l6
ZW9mKFhFTkJVU19HTlRUQUJfSU5URVJGQUNFKSk7CisKKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8t
PkV2dGNobkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihYRU5CVVNfRVZUQ0hO
X0lOVEVSRkFDRSkpOworCiAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5Db25zb2xlSW50ZXJmYWNl
LAogICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfQ09OU09MRV9JTlRFUkZBQ0UpKTsK
IApkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZmRvLmggYi9zcmMveGVuY29ucy9mZG8uaAppbmRl
eCBmOGViYWYzLi43ZmUwN2RlIDEwMDY0NAotLS0gYS9zcmMveGVuY29ucy9mZG8uaAorKysgYi9z
cmMveGVuY29ucy9mZG8uaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgPHN1c3BlbmRfaW50
ZXJmYWNlLmg+CiAjaW5jbHVkZSA8c3RvcmVfaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8Y29uc29s
ZV9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxldnRjaG5faW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8
Z250dGFiX2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAiZHJpdmVyLmgiCiAKQEAgLTEwMCw2ICsx
MDIsOCBAQCBERUNMQVJFX0ZET19HRVRfSU5URVJGQUNFKERlYnVnLCBQWEVOQlVTX0RFQlVHX0lO
VEVSRkFDRSkKIERFQ0xBUkVfRkRPX0dFVF9JTlRFUkZBQ0UoU3VzcGVuZCwgUFhFTkJVU19TVVNQ
RU5EX0lOVEVSRkFDRSkKIERFQ0xBUkVfRkRPX0dFVF9JTlRFUkZBQ0UoU3RvcmUsIFBYRU5CVVNf
U1RPUkVfSU5URVJGQUNFKQogREVDTEFSRV9GRE9fR0VUX0lOVEVSRkFDRShDb25zb2xlLCBQWEVO
QlVTX0NPTlNPTEVfSU5URVJGQUNFKQorREVDTEFSRV9GRE9fR0VUX0lOVEVSRkFDRShFdnRjaG4s
IFBYRU5CVVNfRVZUQ0hOX0lOVEVSRkFDRSkKK0RFQ0xBUkVfRkRPX0dFVF9JTlRFUkZBQ0UoR250
dGFiLCBQWEVOQlVTX0dOVFRBQl9JTlRFUkZBQ0UpCiAKIGV4dGVybiBOVFNUQVRVUwogRmRvQ3Jl
YXRlKAotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwp3aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
d2luLXB2LWRldmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 28 17:15:54 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 28 Feb 2018 17:15:54 +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 1er5KZ-0004Hy-Da; Wed, 28 Feb 2018 17:15:51 +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=puks=fw=citrix.com=prvs=590658560=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1er5KY-0004Hb-1t
 for win-pv-devel@lists.xenproject.org; Wed, 28 Feb 2018 17:15:50 +0000
X-Inumbo-ID: 48df2e85-1cab-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id 48df2e85-1cab-11e8-b9b1-635ca7ef6cff;
 Wed, 28 Feb 2018 17:17:43 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,406,1515456000"; d="scan'208";a="68810297"
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 01/14 v2] chmod 777 msbuild.bat
Thread-Index: AQHTrLG0ocgxRxhtrUuSqB1lDaa9aqO6CoGQ
Date: Wed, 28 Feb 2018 16:34:31 +0000
Message-ID: <ab87773cd3a64e8cbeb9879fad793e5d@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-2-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-2-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 01/14 v2] chmod 777 msbuild.bat
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
VENIIDAxLzE0IHYyXSBjaG1vZCA3NzcgbXNidWlsZC5iYXQNCj4gDQo+IEZyb206IE93ZW4gU21p
dGggPG93ZW4uc21pdGhAY2l0cml4LmNvbT4NCj4gDQo+IGN5Z3dpbiBkb2VzIG5vdCBsaWtlIG5v
bi1leGVjdXRhYmxlIHNjcmlwdHMNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93
ZW4uc21pdGhAY2l0cml4LmNvbT4NCg0KQWNrZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJy
YW50QGNpdHJpeC5jb20+DQoNCj4gLS0tDQo+ICBtc2J1aWxkLmJhdCB8IDANCj4gIDEgZmlsZSBj
aGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pDQo+ICBtb2RlIGNoYW5nZSAx
MDA2NDQgPT4gMTAwNzU1IG1zYnVpbGQuYmF0DQo+IA0KPiBkaWZmIC0tZ2l0IGEvbXNidWlsZC5i
YXQgYi9tc2J1aWxkLmJhdA0KPiBvbGQgbW9kZSAxMDA2NDQNCj4gbmV3IG1vZGUgMTAwNzU1DQo+
IC0tDQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 28 17:34:01 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 28 Feb 2018 17:34:01 +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 1er5c8-00067g-PE; Wed, 28 Feb 2018 17:34:00 +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=puks=fw=citrix.com=prvs=590658560=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1er5c7-00067Z-RT
 for win-pv-devel@lists.xenproject.org; Wed, 28 Feb 2018 17:33:59 +0000
X-Inumbo-ID: d1c2a20d-1cad-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id d1c2a20d-1cad-11e8-b9b1-635ca7ef6cff;
 Wed, 28 Feb 2018 17:35:51 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,406,1515456000"; d="scan'208";a="68813824"
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 02/14 v2] Move console handlers to
 console.c
Thread-Index: AQHTrLJge+weCD1GOUW1KAhYvo7YE6O6Dizg
Date: Wed, 28 Feb 2018 16:56:10 +0000
Message-ID: <edc6db5ce3af4c8a9e2ebd16b71d7084@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-3-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-3-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 02/14 v2] Move console handlers to
 console.c
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
VENIIDAyLzE0IHYyXSBNb3ZlIGNvbnNvbGUgaGFuZGxlcnMgdG8NCj4gY29uc29sZS5jDQo+IA0K
PiBGcm9tOiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBJc29sYXRl
IGNvbnNvbGUgaGFuZGxlciBjb2RlIGZyb20gZmRvIGNvZGUuDQo+IFRoaXMgd2lsbCBtYWtlIHRo
ZSBjb25zb2xlIGNvZGUgZWFzaWVyIHRvIG1haW50YWluLg0KPiANCj4gU2lnbmVkLW9mZi1ieTog
T3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPg0KDQpJJ20gbm90IHdvbmRlcmZ1bGx5
IGhhcHB5IHdpdGggdGhlcmUgYmVpbmcgX19Db25zb2xlRGVzdHJveSgpIGFuZCBDb25zb2xlRGVz
dHJveSgpIHdoaWNoIHNlcnZlIHR3byBkaWZmZXJlbnQgcHVycG9zZXMgc28gSSBtYXkgYWRqdXN0
IHRoZSBuYW1pbmcgbGF0ZXIuIFRoZSBnZW5lcmFsIGNvZGUgbW92ZW1lbnQgbG9va3MgZmluZSB0
aG91Z2ggc28uLi4NCg0KUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNp
dHJpeC5jb20+DQoNCj4gLS0tDQo+ICBzcmMveGVuY29ucy9jb25zb2xlLmMgICAgICAgICAgfCAz
NDMNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHNyYy94
ZW5jb25zL2NvbnNvbGUuaCAgICAgICAgICB8ICA4MCArKysrKysrKysrDQo+ICBzcmMveGVuY29u
cy9mZG8uYyAgICAgICAgICAgICAgfCAyNTEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQo+ICB2czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2ogfCAgIDEgKw0KPiAgdnMyMDE3L3hl
bmNvbnMveGVuY29ucy52Y3hwcm9qIHwgICAxICsNCj4gIDUgZmlsZXMgY2hhbmdlZCwgNDYzIGlu
c2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMv
eGVuY29ucy9jb25zb2xlLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9jb25z
b2xlLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9zcmMveGVuY29ucy9jb25zb2xlLmMgYi9zcmMveGVu
Y29ucy9jb25zb2xlLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4gaW5kZXggMDAwMDAwMC4u
ODNhZTkxNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5jb25zL2NvbnNvbGUuYw0K
PiBAQCAtMCwwICsxLDM0MyBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJ
bmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdp
dGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAqICogICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlDQo+ICsgKiAgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0KPiArICog
ICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsgKiAgICAgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsgKiAg
ICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQN
Cj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ICsgKiBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCj4gKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4g
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAq
Lw0KPiArDQo+ICsjZGVmaW5lIElOSVRHVUlEIDENCj4gKw0KPiArI2luY2x1ZGUgPG50ZGRrLmg+
DQo+ICsjaW5jbHVkZSA8d2RtZ3VpZC5oPg0KPiArI2luY2x1ZGUgPG50c3Ryc2FmZS5oPg0KPiAr
I2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiArDQo+ICsjaW5jbHVkZSAiZHJpdmVyLmgiDQo+ICsjaW5j
bHVkZSAiY29uc29sZS5oIg0KPiArI2luY2x1ZGUgInN0cmVhbS5oIg0KPiArI2luY2x1ZGUgImRi
Z19wcmludC5oIg0KPiArI2luY2x1ZGUgImFzc2VydC5oIg0KPiArI2luY2x1ZGUgInV0aWwuaCIN
Cj4gKw0KPiArI2RlZmluZSBDT05TT0xFX1BPT0wgJ1NOT0MnDQo+ICsNCj4gK3R5cGVkZWYgc3Ry
dWN0IF9DT05TT0xFX0hBTkRMRSB7DQo+ICsgICAgTElTVF9FTlRSWSAgICAgIExpc3RFbnRyeTsN
Cj4gKyAgICBQRklMRV9PQkpFQ1QgICAgRmlsZU9iamVjdDsNCj4gKyAgICBQWEVOQ09OU19TVFJF
QU0gU3RyZWFtOw0KPiArfSBDT05TT0xFX0hBTkRMRSwgKlBDT05TT0xFX0hBTkRMRTsNCj4gKw0K
PiArc3RydWN0IF9YRU5DT05TX0NPTlNPTEUgew0KPiArICAgIFBYRU5DT05TX0ZETyAgICBGZG87
DQo+ICsgICAgTElTVF9FTlRSWSAgICAgIExpc3Q7DQo+ICsgICAgS1NQSU5fTE9DSyAgICAgIExv
Y2s7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgUFZPSUQNCj4gK19fQ29uc29s
ZUFsbG9jYXRlKA0KPiArICAgIElOICBVTE9ORyAgIExlbmd0aA0KPiArICAgICkNCj4gK3sNCj4g
KyAgICByZXR1cm4gX19BbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgTGVuZ3RoLCBD
T05TT0xFX1BPT0wpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiAr
X19Db25zb2xlRnJlZSgNCj4gKyAgICBJTiAgUFZPSUQgICBCdWZmZXINCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgX19GcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBDT05TT0xFX1BPT0wpOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiArX19Db25zb2xlRGVzdHJveSgNCj4g
KyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLA0KPiArICAgIElOICBQQ09OU09M
RV9IQU5ETEUgICAgIEhhbmRsZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBVTlJFRkVSRU5DRURf
UEFSQU1FVEVSKENvbnNvbGUpOw0KPiArDQo+ICsgICAgVHJhY2UoIiVwXG4iLCBIYW5kbGUtPkZp
bGVPYmplY3QpOw0KPiArDQo+ICsgICAgUnRsWmVyb01lbW9yeSgmSGFuZGxlLT5MaXN0RW50cnks
IHNpemVvZihMSVNUX0VOVFJZKSk7DQo+ICsNCj4gKyAgICBTdHJlYW1EZXN0cm95KEhhbmRsZS0+
U3RyZWFtKTsNCj4gKyAgICBIYW5kbGUtPlN0cmVhbSA9IE5VTEw7DQo+ICsNCj4gKyAgICBIYW5k
bGUtPkZpbGVPYmplY3QgPSBOVUxMOw0KPiArDQo+ICsgICAgQVNTRVJUKElzWmVyb01lbW9yeShI
YW5kbGUsIHNpemVvZihDT05TT0xFX0hBTkRMRSkpKTsNCj4gKyAgICBfX0NvbnNvbGVGcmVlKEhh
bmRsZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBQQ09OU09MRV9IQU5ETEUNCj4gK19fQ29uc29s
ZUZpbmRIYW5kbGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZSwNCj4g
KyAgICBJTiAgUEZJTEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0KPiArew0K
PiArICAgIEtJUlFMICAgICAgICAgICAgICAgICAgIElycWw7DQo+ICsgICAgUExJU1RfRU5UUlkg
ICAgICAgICAgICAgTGlzdEVudHJ5Ow0KPiArICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAgIEhh
bmRsZTsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAg
ICBLZUFjcXVpcmVTcGluTG9jaygmQ29uc29sZS0+TG9jaywgJklycWwpOw0KPiArDQo+ICsgICAg
Zm9yIChMaXN0RW50cnkgPSBDb25zb2xlLT5MaXN0LkZsaW5rOw0KPiArICAgICAgICAgTGlzdEVu
dHJ5ICE9ICZDb25zb2xlLT5MaXN0Ow0KPiArICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5
LT5GbGluaykgew0KPiArICAgICAgICBIYW5kbGUgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50
cnksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNPTEVfSEFORExF
LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0RW50cnkpOw0KPiAr
DQo+ICsgICAgICAgIGlmIChIYW5kbGUtPkZpbGVPYmplY3QgPT0gRmlsZU9iamVjdCkNCj4gKyAg
ICAgICAgICAgIGdvdG8gZm91bmQ7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3RhdHVzID0gU1RB
VFVTX1VOU1VDQ0VTU0ZVTDsNCj4gKyAgICBnb3RvIGZhaWwxOw0KPiArDQo+ICtmb3VuZDoNCj4g
KyAgICBLZVJlbGVhc2VTcGluTG9jaygmQ29uc29sZS0+TG9jaywgSXJxbCk7DQo+ICsNCj4gKyAg
ICByZXR1cm4gSGFuZGxlOw0KPiArDQo+ICtmYWlsMToNCj4gKyAgICBFcnJvcigiZmFpbDEgKCUw
OHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsgICAgS2VSZWxlYXNlU3BpbkxvY2soJkNvbnNvbGUt
PkxvY2ssIElycWwpOw0KPiArDQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICt9DQo+ICsNCj4gK05U
U1RBVFVTDQo+ICtDb25zb2xlT3BlbigNCj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBD
b25zb2xlLA0KPiArICAgIElOICBQRklMRV9PQkpFQ1QgICAgICAgIEZpbGVPYmplY3QNCj4gKyAg
ICApDQo+ICt7DQo+ICsgICAgUENPTlNPTEVfSEFORExFICAgICAgICAgSGFuZGxlOw0KPiArICAg
IEtJUlFMICAgICAgICAgICAgICAgICAgIElycWw7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAg
ICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgSGFuZGxlID0gX19Db25zb2xlQWxsb2NhdGUoc2l6
ZW9mKENPTlNPTEVfSEFORExFKSk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVN
T1JZOw0KPiArICAgIGlmIChIYW5kbGUgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMTsN
Cj4gKw0KPiArICAgIHN0YXR1cyA9IFN0cmVhbUNyZWF0ZShDb25zb2xlLT5GZG8sICZIYW5kbGUt
PlN0cmVhbSk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdv
dG8gZmFpbDI7DQo+ICsNCj4gKyAgICBIYW5kbGUtPkZpbGVPYmplY3QgPSBGaWxlT2JqZWN0Ow0K
PiArDQo+ICsgICAgS2VBY3F1aXJlU3BpbkxvY2soJkNvbnNvbGUtPkxvY2ssICZJcnFsKTsNCj4g
KyAgICBJbnNlcnRUYWlsTGlzdCgmQ29uc29sZS0+TGlzdCwgJkhhbmRsZS0+TGlzdEVudHJ5KTsN
Cj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmQ29uc29sZS0+TG9jaywgSXJxbCk7DQo+ICsNCj4g
KyAgICBUcmFjZSgiJXBcbiIsIEhhbmRsZS0+RmlsZU9iamVjdCk7DQo+ICsNCj4gKyAgICByZXR1
cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwyOg0KPiArICAgIEVycm9yKCJmYWlsMlxu
Iik7DQo+ICsNCj4gKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KEhhbmRsZSwgc2l6ZW9mKENPTlNP
TEVfSEFORExFKSkpOw0KPiArICAgIF9fQ29uc29sZUZyZWUoSGFuZGxlKTsNCj4gKw0KPiArZmFp
bDE6DQo+ICsgICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAg
IHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK05UU1RBVFVTDQo+ICtDb25zb2xlQ2xvc2Uo
DQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZSwNCj4gKyAgICBJTiAgUEZJ
TEVfT0JKRUNUICAgICAgICBGaWxlT2JqZWN0DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBDT05T
T0xFX0hBTkRMRSAgICAgICAgIEhhbmRsZTsNCj4gKyAgICBLSVJRTCAgICAgICAgICAgICAgICAg
ICBJcnFsOw0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiAr
ICAgIEhhbmRsZSA9IF9fQ29uc29sZUZpbmRIYW5kbGUoQ29uc29sZSwgRmlsZU9iamVjdCk7DQo+
ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfVU5TVUNDRVNTRlVMOw0KPiArICAgIGlmIChIYW5k
bGUgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMTsNCj4gKw0KPiArICAgIEtlQWNxdWly
ZVNwaW5Mb2NrKCZDb25zb2xlLT5Mb2NrLCAmSXJxbCk7DQo+ICsgICAgUmVtb3ZlRW50cnlMaXN0
KCZIYW5kbGUtPkxpc3RFbnRyeSk7DQo+ICsgICAgS2VSZWxlYXNlU3BpbkxvY2soJkNvbnNvbGUt
PkxvY2ssIElycWwpOw0KPiArDQo+ICsgICAgX19Db25zb2xlRGVzdHJveShDb25zb2xlLCBIYW5k
bGUpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMToN
Cj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsgICAgcmV0
dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArTlRTVEFUVVMNCj4gK0NvbnNvbGVQdXRRdWV1ZSgN
Cj4gKyAgICBJTiAgUFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlLA0KPiArICAgIElOICBQSVJQ
ICAgICAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9fU1RBQ0tfTE9D
QVRJT04gICAgICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFBDT05TT0xFX0hBTkRMRSAgICAgICAg
IEhhbmRsZTsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4g
KyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0K
PiArDQo+ICsgICAgSGFuZGxlID0gX19Db25zb2xlRmluZEhhbmRsZShDb25zb2xlLCBTdGFja0xv
Y2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NF
U1NGVUw7DQo+ICsgICAgaWYgKEhhbmRsZSA9PSBOVUxMKQ0KPiArICAgICAgICBnb3RvIGZhaWwx
Ow0KPiArDQo+ICsgICAgc3RhdHVzID0gU3RyZWFtUHV0UXVldWUoSGFuZGxlLT5TdHJlYW0sIEly
cCk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFp
bDI7DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1BFTkRJTkc7DQo+ICsNCj4gK2ZhaWwyOg0K
PiArICAgIEVycm9yKCJmYWlsMlxuIik7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJm
YWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiAr
fQ0KPiArDQo+ICtOVFNUQVRVUw0KPiArQ29uc29sZUQzVG9EMCgNCj4gKyAgICBJTiAgUFhFTkNP
TlNfQ09OU09MRSAgICBDb25zb2xlDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFRyYWNlKCI9PT09
PlxuIik7DQo+ICsNCj4gKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKENvbnNvbGUpOw0KPiAr
DQo+ICsgICAgVHJhY2UoIjw9PT09XG4iKTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VD
Q0VTUzsNCj4gK30NCj4gKw0KPiArVk9JRA0KPiArQ29uc29sZUQwVG9EMygNCj4gKyAgICBJTiAg
UFhFTkNPTlNfQ09OU09MRSAgICBDb25zb2xlDQo+ICsgICAgKQ0KPiArew0KPiArICAgIEtJUlFM
ICAgICAgICAgICAgICAgICAgIElycWw7DQo+ICsgICAgTElTVF9FTlRSWSAgICAgICAgICAgICAg
TGlzdDsNCj4gKyAgICBQTElTVF9FTlRSWSAgICAgICAgICAgICBMaXN0RW50cnk7DQo+ICsgICAg
UENPTlNPTEVfSEFORExFICAgICAgICAgSGFuZGxlOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+
XG4iKTsNCj4gKw0KPiArICAgIEluaXRpYWxpemVMaXN0SGVhZCgmTGlzdCk7DQo+ICsNCj4gKyAg
ICBLZUFjcXVpcmVTcGluTG9jaygmQ29uc29sZS0+TG9jaywgJklycWwpOw0KPiArDQo+ICsgICAg
TGlzdEVudHJ5ID0gQ29uc29sZS0+TGlzdC5GbGluazsNCj4gKyAgICBpZiAoIUlzTGlzdEVtcHR5
KCZDb25zb2xlLT5MaXN0KSkgew0KPiArICAgICAgICBSZW1vdmVFbnRyeUxpc3QoJkNvbnNvbGUt
Pkxpc3QpOw0KPiArICAgICAgICBJbml0aWFsaXplTGlzdEhlYWQoJkNvbnNvbGUtPkxpc3QpOw0K
PiArICAgICAgICBBcHBlbmRUYWlsTGlzdCgmTGlzdCwgTGlzdEVudHJ5KTsNCj4gKyAgICB9DQo+
ICsNCj4gKyAgICBLZVJlbGVhc2VTcGluTG9jaygmQ29uc29sZS0+TG9jaywgSXJxbCk7DQo+ICsN
Cj4gKyAgICB3aGlsZSAoIUlzTGlzdEVtcHR5KCZMaXN0KSkgew0KPiArICAgICAgICBMaXN0RW50
cnkgPSBSZW1vdmVIZWFkTGlzdCgmTGlzdCk7DQo+ICsgICAgICAgIEFTU0VSVDNQKExpc3RFbnRy
eSwgIT0gLCAmTGlzdCk7DQo+ICsNCj4gKyAgICAgICAgSGFuZGxlID0gQ09OVEFJTklOR19SRUNP
UkQoTGlzdEVudHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05T
T0xFX0hBTkRMRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdEVu
dHJ5KTsNCj4gKw0KPiArICAgICAgICBfX0NvbnNvbGVEZXN0cm95KENvbnNvbGUsIEhhbmRsZSk7
DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgVHJhY2UoIjw9PT09XG4iKTsNCj4gK30NCj4gKw0KPiAr
TlRTVEFUVVMNCj4gK0NvbnNvbGVDcmVhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICAg
ICAgRmRvLA0KPiArICAgIE9VVCBQWEVOQ09OU19DT05TT0xFICAgICpDb25zb2xlDQo+ICsgICAg
KQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiAr
ICAgIFRyYWNlKCI9PT09PlxuIik7DQo+ICsNCj4gKyAgICAqQ29uc29sZSA9IF9fQ29uc29sZUFs
bG9jYXRlKHNpemVvZihYRU5DT05TX0NPTlNPTEUpKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNU
QVRVU19OT19NRU1PUlk7DQo+ICsgICAgaWYgKCpDb25zb2xlID09IE5VTEwpDQo+ICsgICAgICAg
IGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICAoKkNvbnNvbGUpLT5GZG8gPSBGZG87DQo+ICsgICAg
SW5pdGlhbGl6ZUxpc3RIZWFkKCYoKkNvbnNvbGUpLT5MaXN0KTsNCj4gKyAgICBLZUluaXRpYWxp
emVTcGluTG9jaygmKCpDb25zb2xlKS0+TG9jayk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT1c
biIpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMToN
Cj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsgICAgcmV0
dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArVk9JRA0KPiArQ29uc29sZURlc3Ryb3koDQo+ICsg
ICAgSU4gIFBYRU5DT05TX0NPTlNPTEUgICAgQ29uc29sZQ0KPiArICAgICkNCj4gK3sNCj4gKyAg
ICBUcmFjZSgiPT09PT5cbiIpOw0KPiArDQo+ICsgICAgQVNTRVJUKElzTGlzdEVtcHR5KCZDb25z
b2xlLT5MaXN0KSk7DQo+ICsgICAgUnRsWmVyb01lbW9yeSgmQ29uc29sZS0+TGlzdCwgc2l6ZW9m
KExJU1RfRU5UUlkpKTsNCj4gKw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkNvbnNvbGUtPkxvY2ss
IHNpemVvZihLU1BJTl9MT0NLKSk7DQo+ICsNCj4gKyAgICBDb25zb2xlLT5GZG8gPSBOVUxMOw0K
PiArDQo+ICsgICAgQVNTRVJUKElzWmVyb01lbW9yeShDb25zb2xlLCBzaXplb2YoWEVOQ09OU19D
T05TT0xFKSkpOw0KPiArICAgIF9fQ29uc29sZUZyZWUoQ29uc29sZSk7DQo+ICsNCj4gKyAgICBU
cmFjZSgiPD09PT1cbiIpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvY29uc29s
ZS5oIGIvc3JjL3hlbmNvbnMvY29uc29sZS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNzU1DQo+IGlu
ZGV4IDAwMDAwMDAuLjEwOTRmODINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zcmMveGVuY29u
cy9jb25zb2xlLmgNCj4gQEAgLTAsMCArMSw4MCBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRy
aXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsg
KiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkDQo+
ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiArICoNCj4gKyAq
ICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
DQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICogKiAgIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCj4gKyAqICAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsg
KiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N
Cj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
DQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+ICsgKiBTVUNIIERB
TUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9YRU5DT05TX0NPTlNPTEVfSA0KPiArI2Rl
ZmluZSBfWEVOQ09OU19DT05TT0xFX0gNCj4gKw0KPiArI2luY2x1ZGUgPG50ZGRrLmg+DQo+ICsN
Cj4gKyNpbmNsdWRlICJkcml2ZXIuaCINCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNf
Q09OU09MRSBYRU5DT05TX0NPTlNPTEUsDQo+ICpQWEVOQ09OU19DT05TT0xFOw0KPiArDQo+ICtl
eHRlcm4gTlRTVEFUVVMNCj4gK0NvbnNvbGVDcmVhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZE
TyAgICAgICAgRmRvLA0KPiArICAgIE9VVCBQWEVOQ09OU19DT05TT0xFICAgICpDb25zb2xlDQo+
ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQNCj4gK0NvbnNvbGVEZXN0cm95KA0KPiArICAg
IElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUNCj4gKyAgICApOw0KPiArDQo+ICtleHRl
cm4gTlRTVEFUVVMNCj4gK0NvbnNvbGVEM1RvRDAoDQo+ICsgICAgSU4gIFBYRU5DT05TX0NPTlNP
TEUgICAgQ29uc29sZQ0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBWT0lEDQo+ICtDb25zb2xl
RDBUb0QzKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUNCj4gKyAgICAp
Ow0KPiArDQo+ICtleHRlcm4gTlRTVEFUVVMNCj4gK0NvbnNvbGVPcGVuKA0KPiArICAgIElOICBQ
WEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsDQo+ICsgICAgSU4gIFBGSUxFX09CSkVDVCAgICAg
ICAgRmlsZU9iamVjdA0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArQ29u
c29sZUNsb3NlKA0KPiArICAgIElOICBQWEVOQ09OU19DT05TT0xFICAgIENvbnNvbGUsDQo+ICsg
ICAgSU4gIFBGSUxFX09CSkVDVCAgICAgICAgRmlsZU9iamVjdA0KPiArICAgICk7DQo+ICsNCj4g
K2V4dGVybiBOVFNUQVRVUw0KPiArQ29uc29sZVB1dFF1ZXVlKA0KPiArICAgIElOICBQWEVOQ09O
U19DT05TT0xFICAgIENvbnNvbGUsDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgSXJw
DQo+ICsgICAgKTsNCj4gKw0KPiArI2VuZGlmICAvLyBfWEVOQ09OU19DT05TT0xFX0gNCj4gZGlm
ZiAtLWdpdCBhL3NyYy94ZW5jb25zL2Zkby5jIGIvc3JjL3hlbmNvbnMvZmRvLmMNCj4gaW5kZXgg
OTQ0NjVhNS4uMDE3MGVmNiAxMDA2NDQNCj4gLS0tIGEvc3JjL3hlbmNvbnMvZmRvLmMNCj4gKysr
IGIvc3JjL3hlbmNvbnMvZmRvLmMNCj4gQEAgLTQ3LDcgKzQ3LDcgQEANCj4gICNpbmNsdWRlICJk
cml2ZXIuaCINCj4gICNpbmNsdWRlICJyZWdpc3RyeS5oIg0KPiAgI2luY2x1ZGUgImZkby5oIg0K
PiAtI2luY2x1ZGUgInN0cmVhbS5oIg0KPiArI2luY2x1ZGUgImNvbnNvbGUuaCINCj4gICNpbmNs
dWRlICJ0aHJlYWQuaCINCj4gICNpbmNsdWRlICJuYW1lcy5oIg0KPiAgI2luY2x1ZGUgImRiZ19w
cmludC5oIg0KPiBAQCAtNjksMTIgKzY5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0ZET19SRVNPVVJD
RSB7DQo+ICAgICAgQ01fUEFSVElBTF9SRVNPVVJDRV9ERVNDUklQVE9SIFRyYW5zbGF0ZWQ7DQo+
ICB9IEZET19SRVNPVVJDRSwgKlBGRE9fUkVTT1VSQ0U7DQo+IA0KPiAtdHlwZWRlZiBzdHJ1Y3Qg
X0ZET19IQU5ETEUgew0KPiAtICAgIExJU1RfRU5UUlkgICAgICBMaXN0RW50cnk7DQo+IC0gICAg
UEZJTEVfT0JKRUNUICAgIEZpbGVPYmplY3Q7DQo+IC0gICAgUFhFTkNPTlNfU1RSRUFNIFN0cmVh
bTsNCj4gLX0gRkRPX0hBTkRMRSwgKlBGRE9fSEFORExFOw0KPiAtDQo+ICBzdHJ1Y3QgX1hFTkNP
TlNfRkRPIHsNCj4gICAgICBQWEVOQ09OU19EWCAgICAgICAgICAgICAgICAgRHg7DQo+ICAgICAg
UERFVklDRV9PQkpFQ1QgICAgICAgICAgICAgIExvd2VyRGV2aWNlT2JqZWN0Ow0KPiBAQCAtOTMs
OCArODcsNyBAQCBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsNCj4gDQo+ICAgICAgRkRPX1JFU09VUkNF
ICAgICAgICAgICAgICAgIFJlc291cmNlW1JFU09VUkNFX0NPVU5UXTsNCj4gDQo+IC0gICAgTElT
VF9FTlRSWSAgICAgICAgICAgICAgICAgIEhhbmRsZUxpc3Q7DQo+IC0gICAgS1NQSU5fTE9DSyAg
ICAgICAgICAgICAgICAgIEhhbmRsZUxvY2s7DQo+ICsgICAgUFhFTkNPTlNfQ09OU09MRSAgICAg
ICAgICAgIENvbnNvbGU7DQo+IA0KPiAgICAgIFhFTkJVU19ERUJVR19JTlRFUkZBQ0UgICAgICBE
ZWJ1Z0ludGVyZmFjZTsNCj4gICAgICBYRU5CVVNfU1VTUEVORF9JTlRFUkZBQ0UgICAgU3VzcGVu
ZEludGVyZmFjZTsNCj4gQEAgLTc4OCw3ICs3ODEsNyBAQCBmYWlsMToNCj4gICAgICByZXR1cm4g
c3RhdHVzOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtzdGF0aWMg
Rk9SQ0VJTkxJTkUgTlRTVEFUVVMNCj4gIF9fRmRvRDNUb0QwKA0KPiAgICAgIElOICBQWEVOQ09O
U19GRE8gICAgRmRvDQo+ICAgICAgKQ0KPiBAQCAtODAwLDYgKzc5Myw4IEBAIF9fRmRvRDNUb0Qw
KA0KPiAgICAgIChWT0lEKSBGZG9TZXREaXN0cmlidXRpb24oRmRvKTsNCj4gDQo+ICAgICAgVHJh
Y2UoIjw9PT09XG4iKTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gIH0N
Cj4gDQo+ICBzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiBAQCAtODIyLDkgKzgxNywxMiBAQCBG
ZG9TdXNwZW5kQ2FsbGJhY2tMYXRlKA0KPiAgICAgICkNCj4gIHsNCj4gICAgICBQWEVOQ09OU19G
RE8gICAgRmRvID0gQXJndW1lbnQ7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgIHN0YXR1czsNCj4g
DQo+ICAgICAgX19GZG9EMFRvRDMoRmRvKTsNCj4gLSAgICBfX0Zkb0QzVG9EMChGZG8pOw0KPiAr
DQo+ICsgICAgc3RhdHVzID0gX19GZG9EM1RvRDAoRmRvKTsNCj4gKyAgICBBU1NFUlQoTlRfU1VD
Q0VTUyhzdGF0dXMpKTsNCj4gIH0NCj4gDQo+ICAvLyBUaGlzIGZ1bmN0aW9uIG11c3Qgbm90IHRv
dWNoIHBhZ2VhYmxlIGNvZGUgb3IgZGF0YQ0KPiBAQCAtODUzLDcgKzg1MSw5IEBAIEZkb0QzVG9E
MCgNCj4gICAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gICAgICAgICAgZ290byBmYWls
MjsNCj4gDQo+IC0gICAgX19GZG9EM1RvRDAoRmRvKTsNCj4gKyAgICBzdGF0dXMgPSBfX0Zkb0Qz
VG9EMChGZG8pOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBn
b3RvIGZhaWwzOw0KPiANCj4gICAgICBzdGF0dXMgPSBYRU5CVVNfU1VTUEVORChSZWdpc3RlciwN
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRmRvLT5TdXNwZW5kSW50ZXJmYWNlLA0K
PiBAQCAtODYyLDcgKzg2Miw3IEBAIEZkb0QzVG9EMCgNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGZG8sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZkby0+U3VzcGVu
ZENhbGxiYWNrTGF0ZSk7DQo+ICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+IC0gICAg
ICAgIGdvdG8gZmFpbDM7DQo+ICsgICAgICAgIGdvdG8gZmFpbDQ7DQo+IA0KPiAgICAgIEtlTG93
ZXJJcnFsKElycWwpOw0KPiANCj4gQEAgLTg3Myw2ICs4NzMsOSBAQCBGZG9EM1RvRDAoDQo+ICAg
ICAgICAgICAgICAgICAgICAgIERldmljZVBvd2VyU3RhdGUsDQo+ICAgICAgICAgICAgICAgICAg
ICAgIFBvd2VyU3RhdGUpOw0KPiANCj4gKyAgICBzdGF0dXMgPSBDb25zb2xlRDNUb0QwKEZkby0+
Q29uc29sZSk7DQo+ICsgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+ICsNCj4gICNw
cmFnbWEgcHJlZmFzdChzdXBwcmVzczoyODEyMykNCj4gICAgICAoVk9JRCkgSW9TZXREZXZpY2VJ
bnRlcmZhY2VTdGF0ZSgmRHgtPkxpbmssIFRSVUUpOw0KPiANCj4gQEAgLTg4MCwxMSArODgzLDE0
IEBAIEZkb0QzVG9EMCgNCj4gDQo+ICAgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiANCj4g
LWZhaWwzOg0KPiArZmFpbDQ6DQo+ICAgICAgRXJyb3IoImZhaWw0XG4iKTsNCj4gDQo+ICAgICAg
X19GZG9EMFRvRDMoRmRvKTsNCj4gDQo+ICtmYWlsMzoNCj4gKyAgICBFcnJvcigiZmFpbDNcbiIp
Ow0KPiArDQo+ICAgICAgWEVOQlVTX1NUT1JFKFJlbGVhc2UsICZGZG8tPlN0b3JlSW50ZXJmYWNl
KTsNCj4gDQo+ICBmYWlsMjoNCj4gQEAgLTg5Miw4ICs4OTgsNiBAQCBmYWlsMjoNCj4gDQo+ICAg
ICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwgJkZkby0+U3VzcGVuZEludGVyZmFjZSk7DQo+IA0K
PiAtICAgIF9fRmRvRDBUb0QzKEZkbyk7DQo+IC0NCj4gIGZhaWwxOg0KPiAgICAgIEVycm9yKCJm
YWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+IA0KPiBAQCAtOTAyLDc3ICs5MDYsNiBAQCBmYWls
MToNCj4gICAgICByZXR1cm4gc3RhdHVzOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBGT1JDRUlOTElO
RSBWT0lEDQo+IC1fX0Zkb0Rlc3Ryb3lIYW5kbGUoDQo+IC0gICAgSU4gIFBYRU5DT05TX0ZETyAg
ICBGZG8sDQo+IC0gICAgSU4gIFBGRE9fSEFORExFICAgICBIYW5kbGUNCj4gLSAgICApDQo+IC17
DQo+IC0gICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihGZG8pOw0KPiAtDQo+IC0gICAgVHJhY2Uo
IiVwXG4iLCBIYW5kbGUtPkZpbGVPYmplY3QpOw0KPiAtDQo+IC0gICAgUnRsWmVyb01lbW9yeSgm
SGFuZGxlLT5MaXN0RW50cnksIHNpemVvZiAoTElTVF9FTlRSWSkpOw0KPiAtDQo+IC0gICAgU3Ry
ZWFtRGVzdHJveShIYW5kbGUtPlN0cmVhbSk7DQo+IC0gICAgSGFuZGxlLT5TdHJlYW0gPSBOVUxM
Ow0KPiAtDQo+IC0gICAgSGFuZGxlLT5GaWxlT2JqZWN0ID0gTlVMTDsNCj4gLQ0KPiAtICAgIEFT
U0VSVChJc1plcm9NZW1vcnkoSGFuZGxlLCBzaXplb2YgKEZET19IQU5ETEUpKSk7DQo+IC0gICAg
X19GZG9GcmVlKEhhbmRsZSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBWT0lEDQo+IC1GZG9EZXN0
cm95SGFuZGxlKA0KPiAtICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiAtICAgIElOICBQ
RkRPX0hBTkRMRSAgICAgSGFuZGxlDQo+IC0gICAgKQ0KPiAtew0KPiAtICAgIEtJUlFMICAgICAg
ICAgICAgICAgSXJxbDsNCj4gLQ0KPiAtICAgIEtlQWNxdWlyZVNwaW5Mb2NrKCZGZG8tPkhhbmRs
ZUxvY2ssICZJcnFsKTsNCj4gLSAgICBSZW1vdmVFbnRyeUxpc3QoJkhhbmRsZS0+TGlzdEVudHJ5
KTsNCj4gLSAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFsKTsNCj4g
LQ0KPiAtICAgIF9fRmRvRGVzdHJveUhhbmRsZShGZG8sIEhhbmRsZSk7DQo+IC19DQo+IC0NCj4g
LXN0YXRpYyBWT0lEDQo+IC1GZG9EZXN0cm95QWxsSGFuZGxlcygNCj4gLSAgICBJTiAgUFhFTkNP
TlNfRkRPICAgIEZkbw0KPiAtICAgICkNCj4gLXsNCj4gLSAgICBLSVJRTCAgICAgICAgICAgICAg
IElycWw7DQo+IC0gICAgTElTVF9FTlRSWSAgICAgICAgICBMaXN0Ow0KPiAtICAgIFBMSVNUX0VO
VFJZICAgICAgICAgTGlzdEVudHJ5Ow0KPiAtICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxl
Ow0KPiAtDQo+IC0gICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZMaXN0KTsNCj4gLQ0KPiAtICAgIEtl
QWNxdWlyZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssICZJcnFsKTsNCj4gLQ0KPiAtICAgIExp
c3RFbnRyeSA9IEZkby0+SGFuZGxlTGlzdC5GbGluazsNCj4gLSAgICBpZiAoIUlzTGlzdEVtcHR5
KCZGZG8tPkhhbmRsZUxpc3QpKSB7DQo+IC0gICAgICAgIFJlbW92ZUVudHJ5TGlzdCgmRmRvLT5I
YW5kbGVMaXN0KTsNCj4gLSAgICAgICAgSW5pdGlhbGl6ZUxpc3RIZWFkKCZGZG8tPkhhbmRsZUxp
c3QpOw0KPiAtICAgICAgICBBcHBlbmRUYWlsTGlzdCgmTGlzdCwgTGlzdEVudHJ5KTsNCj4gLSAg
ICB9DQo+IC0NCj4gLSAgICBLZVJlbGVhc2VTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCBJcnFs
KTsNCj4gLQ0KPiAtICAgIHdoaWxlICghSXNMaXN0RW1wdHkoJkxpc3QpKSB7DQo+IC0gICAgICAg
IExpc3RFbnRyeSA9IFJlbW92ZUhlYWRMaXN0KCZMaXN0KTsNCj4gLSAgICAgICAgQVNTRVJUM1Ao
TGlzdEVudHJ5LCAhPSwgJkxpc3QpOw0KPiAtDQo+IC0gICAgICAgIEhhbmRsZSA9IENPTlRBSU5J
TkdfUkVDT1JEKExpc3RFbnRyeSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRkRPX0hBTkRMRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz
dEVudHJ5KTsNCj4gLQ0KPiAtICAgICAgICBfX0Zkb0Rlc3Ryb3lIYW5kbGUoRmRvLCBIYW5kbGUp
Ow0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCB0b3Vj
aCBwYWdlYWJsZSBjb2RlIG9yIGRhdGENCj4gIHN0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lE
DQo+ICBGZG9EMFRvRDMoDQo+IEBAIC05OTEsNyArOTI0LDcgQEAgRmRvRDBUb0QzKA0KPiAgI3By
YWdtYSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQ0KPiAgICAgIChWT0lEKSBJb1NldERldmljZUlu
dGVyZmFjZVN0YXRlKCZEeC0+TGluaywgRkFMU0UpOw0KPiANCj4gLSAgICBGZG9EZXN0cm95QWxs
SGFuZGxlcyhGZG8pOw0KPiArICAgIENvbnNvbGVEMFRvRDMoRmRvLT5Db25zb2xlKTsNCj4gDQo+
ICAgICAgUG93ZXJTdGF0ZS5EZXZpY2VTdGF0ZSA9IFBvd2VyRGV2aWNlRDM7DQo+ICAgICAgUG9T
ZXRQb3dlclN0YXRlKEZkby0+RHgtPkRldmljZU9iamVjdCwNCj4gQEAgLTIxNjYsODggKzIwOTks
NiBAQCBkb25lOg0KPiAgICAgIHJldHVybiBzdGF0dXM7DQo+ICB9DQo+IA0KPiAtc3RhdGljIE5U
U1RBVFVTDQo+IC1GZG9DcmVhdGVIYW5kbGUoDQo+IC0gICAgSU4gIFBYRU5DT05TX0ZETyAgICBG
ZG8sDQo+IC0gICAgSU4gIFBGSUxFX09CSkVDVCAgICBGaWxlT2JqZWN0DQo+IC0gICAgKQ0KPiAt
ew0KPiAtICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxlOw0KPiAtICAgIEtJUlFMICAgICAg
ICAgICAgICAgSXJxbDsNCj4gLSAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gLQ0K
PiAtICAgIEhhbmRsZSA9IF9fRmRvQWxsb2NhdGUoc2l6ZW9mIChGRE9fSEFORExFKSk7DQo+IC0N
Cj4gLSAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOw0KPiAtICAgIGlmIChIYW5kbGUgPT0g
TlVMTCkNCj4gLSAgICAgICAgZ290byBmYWlsMTsNCj4gLQ0KPiAtICAgIHN0YXR1cyA9IFN0cmVh
bUNyZWF0ZShGZG8sICZIYW5kbGUtPlN0cmVhbSk7DQo+IC0gICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpDQo+IC0gICAgICAgIGdvdG8gZmFpbDI7DQo+IC0NCj4gLSAgICBIYW5kbGUtPkZpbGVP
YmplY3QgPSBGaWxlT2JqZWN0Ow0KPiAtDQo+IC0gICAgS2VBY3F1aXJlU3BpbkxvY2soJkZkby0+
SGFuZGxlTG9jaywgJklycWwpOw0KPiAtICAgIEluc2VydFRhaWxMaXN0KCZGZG8tPkhhbmRsZUxp
c3QsICZIYW5kbGUtPkxpc3RFbnRyeSk7DQo+IC0gICAgS2VSZWxlYXNlU3BpbkxvY2soJkZkby0+
SGFuZGxlTG9jaywgSXJxbCk7DQo+IC0NCj4gLSAgICBUcmFjZSgiJXBcbiIsIEhhbmRsZS0+Rmls
ZU9iamVjdCk7DQo+IC0NCj4gLSAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IC0NCj4gLWZh
aWwyOg0KPiAtICAgIEVycm9yKCJmYWlsMlxuIik7DQo+IC0NCj4gLSAgICBBU1NFUlQoSXNaZXJv
TWVtb3J5KEhhbmRsZSwgc2l6ZW9mIChGRE9fSEFORExFKSkpOw0KPiAtICAgIF9fRmRvRnJlZShI
YW5kbGUpOw0KPiAtDQo+IC1mYWlsMToNCj4gLSAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBz
dGF0dXMpOw0KPiAtDQo+IC0gICAgcmV0dXJuIHN0YXR1czsNCj4gLX0NCj4gLQ0KPiAtc3RhdGlj
IFBGRE9fSEFORExFDQo+IC1GZG9GaW5kSGFuZGxlKA0KPiAtICAgIElOICBQWEVOQ09OU19GRE8g
ICAgRmRvLA0KPiAtICAgIElOICBQRklMRV9PQkpFQ1QgICAgRmlsZU9iamVjdA0KPiAtICAgICkN
Cj4gLXsNCj4gLSAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7DQo+IC0gICAgUExJU1RfRU5U
UlkgICAgICAgICBMaXN0RW50cnk7DQo+IC0gICAgUEZET19IQU5ETEUgICAgICAgICBIYW5kbGU7
DQo+IC0gICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+IC0NCj4gLSAgICBLZUFjcXVp
cmVTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrLCAmSXJxbCk7DQo+IC0NCj4gLSAgICBmb3IgKExp
c3RFbnRyeSA9IEZkby0+SGFuZGxlTGlzdC5GbGluazsNCj4gLSAgICAgICAgIExpc3RFbnRyeSAh
PSAmRmRvLT5IYW5kbGVMaXN0Ow0KPiAtICAgICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5G
bGluaykgew0KPiAtICAgICAgICBIYW5kbGUgPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnks
DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZET19IQU5ETEUsDQo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RFbnRyeSk7DQo+IC0NCj4gLSAg
ICAgICAgaWYgKEhhbmRsZS0+RmlsZU9iamVjdCA9PSBGaWxlT2JqZWN0KQ0KPiAtICAgICAgICAg
ICAgZ290byBmb3VuZDsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICBzdGF0dXMgPSBTVEFUVVNfVU5T
VUNDRVNTRlVMOw0KPiAtICAgIGdvdG8gZmFpbDE7DQo+IC0NCj4gLWZvdW5kOg0KPiAtICAgIEtl
UmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxvY2ssIElycWwpOw0KPiAtDQo+IC0gICAgcmV0
dXJuIEhhbmRsZTsNCj4gLQ0KPiAtZmFpbDE6DQo+IC0gICAgRXJyb3IoImZhaWwxICglMDh4KVxu
Iiwgc3RhdHVzKTsNCj4gLQ0KPiAtICAgIEtlUmVsZWFzZVNwaW5Mb2NrKCZGZG8tPkhhbmRsZUxv
Y2ssIElycWwpOw0KPiAtDQo+IC0gICAgcmV0dXJuIE5VTEw7DQo+IC19DQo+IC0NCj4gIHN0YXRp
YyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiAgRmRvRGlzcGF0Y2hDcmVhdGUoDQo+ICAg
ICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+IEBAIC0yMjU5LDcgKzIxMTAsNyBAQCBGZG9E
aXNwYXRjaENyZWF0ZSgNCj4gDQo+ICAgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudEly
cFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gDQo+IC0gICAgc3RhdHVzID0gRmRvQ3JlYXRlSGFuZGxl
KEZkbywgU3RhY2tMb2NhdGlvbi0+RmlsZU9iamVjdCk7DQo+ICsgICAgc3RhdHVzID0gQ29uc29s
ZU9wZW4oRmRvLT5Db25zb2xlLCBTdGFja0xvY2F0aW9uLT5GaWxlT2JqZWN0KTsNCj4gDQo+ICAg
ICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICAgICAgSW9Db21wbGV0ZVJlcXVl
c3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiBAQCAtMjI3NCwyNyArMjEyNSwxMSBAQCBGZG9E
aXNwYXRjaENsZWFudXAoDQo+ICAgICAgKQ0KPiAgew0KPiAgICAgIFBJT19TVEFDS19MT0NBVElP
TiAgU3RhY2tMb2NhdGlvbjsNCj4gLSAgICBQRkRPX0hBTkRMRSAgICAgICAgIEhhbmRsZTsNCj4g
ICAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gDQo+ICAgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gDQo+IC0gICAgSGFuZGxl
ID0gRmRvRmluZEhhbmRsZShGZG8sIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOw0KPiAtDQo+
IC0gICAgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsNCj4gLSAgICBpZiAoSGFuZGxlID09
IE5VTEwpDQo+IC0gICAgICAgIGdvdG8gZmFpbDE7DQo+IC0NCj4gLSAgICBGZG9EZXN0cm95SGFu
ZGxlKEZkbywgSGFuZGxlKTsNCj4gLSAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gLQ0K
PiAtICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiAtICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gLQ0KPiAtICAgIHJldHVybiBzdGF0dXM7
DQo+IC0NCj4gLWZhaWwxOg0KPiAtICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7
DQo+ICsgICAgc3RhdHVzID0gQ29uc29sZUNsb3NlKEZkby0+Q29uc29sZSwgU3RhY2tMb2NhdGlv
bi0+RmlsZU9iamVjdCk7DQo+IA0KPiAgICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVz
Ow0KPiAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gQEAg
LTIzMjYsMjkgKzIxNjEsMTQgQEAgRmRvRGlzcGF0Y2hSZWFkV3JpdGUoDQo+ICAgICAgSU4gIFBJ
UlAgICAgICAgICAgICBJcnANCj4gICAgICApDQo+ICB7DQo+IC0gICAgUElPX1NUQUNLX0xPQ0FU
SU9OICBTdGFja0xvY2F0aW9uOw0KPiAtICAgIFBGRE9fSEFORExFICAgICAgICAgSGFuZGxlOw0K
PiAgICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiANCj4gLSAgICBTdGFja0xvY2F0
aW9uID0gSW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiAtDQo+IC0gICAgSGFu
ZGxlID0gRmRvRmluZEhhbmRsZShGZG8sIFN0YWNrTG9jYXRpb24tPkZpbGVPYmplY3QpOw0KPiAt
DQo+IC0gICAgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsNCj4gLSAgICBpZiAoSGFuZGxl
ID09IE5VTEwpDQo+ICsgICAgc3RhdHVzID0gQ29uc29sZVB1dFF1ZXVlKEZkby0+Q29uc29sZSwg
SXJwKTsNCj4gKyAgICBpZiAoc3RhdHVzICE9IFNUQVRVU19QRU5ESU5HKQ0KPiAgICAgICAgICBn
b3RvIGZhaWwxOw0KPiANCj4gLSAgICBJb01hcmtJcnBQZW5kaW5nKElycCk7DQo+IC0NCj4gLSAg
ICBzdGF0dXMgPSBTdHJlYW1QdXRRdWV1ZShIYW5kbGUtPlN0cmVhbSwgSXJwKTsNCj4gLSAgICBp
ZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gLSAgICAgICAgZ290byBmYWlsMjsNCj4gLQ0KPiAg
ICAgIHJldHVybiBTVEFUVVNfUEVORElORzsNCj4gDQo+IC1mYWlsMjoNCj4gLSAgICBFcnJvcigi
ZmFpbDJcbiIpOw0KPiAtDQo+ICBmYWlsMToNCj4gICAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4i
LCBzdGF0dXMpOw0KPiANCj4gQEAgLTI2NDEsOCArMjQ2MSw5IEBAIEZkb0NyZWF0ZSgNCj4gICAg
ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gICAgICAgICAgZ290byBmYWlsMTE7DQo+IA0K
PiAtICAgIEluaXRpYWxpemVMaXN0SGVhZCgmRmRvLT5IYW5kbGVMaXN0KTsNCj4gLSAgICBLZUlu
aXRpYWxpemVTcGluTG9jaygmRmRvLT5IYW5kbGVMb2NrKTsNCj4gKyAgICBzdGF0dXMgPSBDb25z
b2xlQ3JlYXRlKEZkbywgJkZkby0+Q29uc29sZSk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0
YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDEyOw0KPiANCj4gICAgICBGdW5jdGlvbkRldmlj
ZU9iamVjdC0+RmxhZ3MgfD0gRE9fQlVGRkVSRURfSU87DQo+IA0KPiBAQCAtMjY1NSwxMSArMjQ3
NiwxNyBAQCBGZG9DcmVhdGUoDQo+ICAgICAgRnVuY3Rpb25EZXZpY2VPYmplY3QtPkZsYWdzICY9
IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOw0KPiAgICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsN
Cj4gDQo+ICtmYWlsMTI6DQo+ICsgICAgRXJyb3IoImZhaWwxMlxuIik7DQo+ICsNCj4gKyAgICBS
dGxaZXJvTWVtb3J5KCZGZG8tPkNvbnNvbGVJbnRlcmZhY2UsDQo+ICsgICAgICAgICAgICAgICAg
ICBzaXplb2YoWEVOQlVTX0NPTlNPTEVfSU5URVJGQUNFKSk7DQo+ICsNCj4gIGZhaWwxMToNCj4g
ICAgICBFcnJvcigiZmFpbDExXG4iKTsNCj4gDQo+IC0gICAgUnRsWmVyb01lbW9yeSgmRmRvLT5D
b25zb2xlSW50ZXJmYWNlLA0KPiAtICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfQ09O
U09MRV9JTlRFUkZBQ0UpKTsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPlN0b3JlSW50ZXJm
YWNlLA0KPiArICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfU1RPUkVfSU5URVJGQUNF
KSk7DQo+IA0KPiAgZmFpbDEwOg0KPiAgICAgIEVycm9yKCJmYWlsMTBcbiIpOw0KPiBAQCAtMjc0
NCwxMCArMjU3MSw4IEBAIEZkb0Rlc3Ryb3koDQo+IA0KPiAgICAgIER4LT5GZG8gPSBOVUxMOw0K
PiANCj4gLSAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkhhbmRsZUxvY2ssIHNpemVvZiAoS1NQSU5f
TE9DSykpOw0KPiAtDQo+IC0gICAgQVNTRVJUKElzTGlzdEVtcHR5KCZGZG8tPkhhbmRsZUxpc3Qp
KTsNCj4gLSAgICBSdGxaZXJvTWVtb3J5KCZGZG8tPkhhbmRsZUxpc3QsIHNpemVvZiAoTElTVF9F
TlRSWSkpOw0KPiArICAgIENvbnNvbGVEZXN0cm95KEZkby0+Q29uc29sZSk7DQo+ICsgICAgRmRv
LT5Db25zb2xlID0gTlVMTDsNCj4gDQo+ICAgICAgUnRsWmVyb01lbW9yeSgmRmRvLT5Db25zb2xl
SW50ZXJmYWNlLA0KPiAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYRU5CVVNfQ09OU09MRV9J
TlRFUkZBQ0UpKTsNCj4gZGlmZiAtLWdpdCBhL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJv
ag0KPiBiL3ZzMjAxNS94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0KPiBpbmRleCBmZjY1ZDlmLi4x
MmY1YjcwIDEwMDY0NA0KPiAtLS0gYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4g
KysrIGIvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IEBAIC02Nyw2ICs2Nyw3IEBA
DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9kcml2ZXIuYyIg
Lz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2Zkby5jIiAv
Pg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcmVnaXN0cnku
YyIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL2NvbnNv
bGUuYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3N0
cmVhbS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMv
dGhyZWFkLmMiIC8+DQo+ICAgIDwvSXRlbUdyb3VwPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDE3L3hl
bmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IGIvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9q
DQo+IGluZGV4IGFjNzdiODMuLjUxMGFjYjYgMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxNy94ZW5jb25z
L3hlbmNvbnMudmN4cHJvag0KPiArKysgYi92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oN
Cj4gQEAgLTc1LDYgKzc1LDcgQEANCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3Ny
Yy94ZW5jb25zL2RyaXZlci5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4v
c3JjL3hlbmNvbnMvZmRvLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9z
cmMveGVuY29ucy9yZWdpc3RyeS5jIiAvPg0KPiArICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4v
Li4vc3JjL3hlbmNvbnMvY29uc29sZS5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li4vLi4vc3JjL3hlbmNvbnMvc3RyZWFtLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLi8uLi9zcmMveGVuY29ucy90aHJlYWQuYyIgLz4NCj4gICAgPC9JdGVtR3JvdXA+DQo+IC0t
DQo+IDIuOC4zDQo+IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18NCj4gd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdA0KPiB3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18Kd2luLXB2LWRldmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 28 17:39:49 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 28 Feb 2018 17:39: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 1er5hl-0006IC-7m; Wed, 28 Feb 2018 17:39:49 +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=puks=fw=citrix.com=prvs=590658560=paul.durrant@srs-us1.protection.inumbo.net>)
 id 1er5hk-0006I3-8o
 for win-pv-devel@lists.xenproject.org; Wed, 28 Feb 2018 17:39:48 +0000
X-Inumbo-ID: a0a30084-1cae-11e8-b9b1-635ca7ef6cff
Received: from SMTP.EU.CITRIX.COM (unknown [185.25.65.24])
 by us1-amaz-eas1.inumbo.com (Halon) with ESMTPS
 id a0a30084-1cae-11e8-b9b1-635ca7ef6cff;
 Wed, 28 Feb 2018 17:41:38 +0000 (UTC)
X-IronPort-AV: E=Sophos;i="5.47,406,1515456000"; d="scan'208";a="68814881"
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 03/14 v2] Add boilerplate Pdo
Thread-Index: AQHTrLHDn7FkmgyO+kqVlplwH19XQKO6EixA
Date: Wed, 28 Feb 2018 17:01:52 +0000
Message-ID: <ad1f9943b8724a0597f43856886c96b4@AMSPEX02CL03.citrite.net>
References: <20180223142142.12548-1-owen.smith@citrix.com>
 <20180223142142.12548-4-owen.smith@citrix.com>
In-Reply-To: <20180223142142.12548-4-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 03/14 v2] Add boilerplate 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
VENIIDAzLzE0IHYyXSBBZGQgYm9pbGVycGxhdGUgUGRvDQo+IA0KPiBGcm9tOiBPd2VuIFNtaXRo
IDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+IA0KPiBFbnVtZXJhdGVzIGEgc2luZ2xlIHN0YXRp
YyBSYXdQZG8uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNp
dHJpeC5jb20+DQoNCkFja2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXgu
Y29tPg0KDQo+IC0tLQ0KPiAgc3JjL3hlbmNvbnMvZHJpdmVyLmMgICAgICAgICAgIHwgICAgOCAr
DQo+ICBzcmMveGVuY29ucy9kcml2ZXIuaCAgICAgICAgICAgfCAgIDEyICstDQo+ICBzcmMveGVu
Y29ucy9mZG8uYyAgICAgICAgICAgICAgfCAgNDI2ICsrKysrKysrLQ0KPiAgc3JjL3hlbmNvbnMv
ZmRvLmggICAgICAgICAgICAgIHwgICA0MyArDQo+ICBzcmMveGVuY29ucy9tdXRleC5oICAgICAg
ICAgICAgfCAgIDgyICsrDQo+ICBzcmMveGVuY29ucy9wZG8uYyAgICAgICAgICAgICAgfCAxODY1
DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHNyYy94ZW5j
b25zL3Bkby5oICAgICAgICAgICAgICB8ICAxMTMgKysrDQo+ICB2czIwMTUveGVuY29ucy94ZW5j
b25zLnZjeHByb2ogfCAgICAxICsNCj4gIHZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJvaiB8
ICAgIDEgKw0KPiAgOSBmaWxlcyBjaGFuZ2VkLCAyNTQxIGluc2VydGlvbnMoKyksIDEwIGRlbGV0
aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy94ZW5jb25zL211dGV4LmgNCj4gIGNy
ZWF0ZSBtb2RlIDEwMDc1NSBzcmMveGVuY29ucy9wZG8uYw0KPiAgY3JlYXRlIG1vZGUgMTAwNzU1
IHNyYy94ZW5jb25zL3Bkby5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvZHJpdmVy
LmMgYi9zcmMveGVuY29ucy9kcml2ZXIuYw0KPiBpbmRleCAzMTIxYjk5Li41YTRkMWQzIDEwMDY0
NA0KPiAtLS0gYS9zcmMveGVuY29ucy9kcml2ZXIuYw0KPiArKysgYi9zcmMveGVuY29ucy9kcml2
ZXIuYw0KPiBAQCAtMzYsNiArMzYsNyBAQA0KPiANCj4gICNpbmNsdWRlICJyZWdpc3RyeS5oIg0K
PiAgI2luY2x1ZGUgImZkby5oIg0KPiArI2luY2x1ZGUgInBkby5oIg0KPiAgI2luY2x1ZGUgImRy
aXZlci5oIg0KPiAgI2luY2x1ZGUgImRiZ19wcmludC5oIg0KPiAgI2luY2x1ZGUgImFzc2VydC5o
Ig0KPiBAQCAtMjA4LDYgKzIwOSwxMyBAQCBEaXNwYXRjaCgNCj4gICAgICAgICAgc3RhdHVzID0g
RmRvRGlzcGF0Y2goRmRvLCBJcnApOw0KPiAgICAgICAgICBicmVhazsNCj4gICAgICB9DQo+ICsg
ICAgY2FzZSBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUOg0KPiArICAgIHsNCj4gKyAgICAgICAgUFhF
TkNPTlNfUERPIFBkbyA9IER4LT5QZG87DQo+ICsNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvRGlz
cGF0Y2goUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICAgICAgZGVm
YXVsdDoNCj4gICAgICAgICAgQVNTRVJUKEZBTFNFKTsNCj4gICAgICAgICAgYnJlYWs7DQo+IGRp
ZmYgLS1naXQgYS9zcmMveGVuY29ucy9kcml2ZXIuaCBiL3NyYy94ZW5jb25zL2RyaXZlci5oDQo+
IGluZGV4IDRhMmViNjEuLmZiNWVjZTAgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5jb25zL2RyaXZl
ci5oDQo+ICsrKyBiL3NyYy94ZW5jb25zL2RyaXZlci5oDQo+IEBAIC01MCwxMiArNTAsMTcgQEAg
RHJpdmVyR2V0UGFyYW1ldGVyc0tleSgNCj4gICAgICApOw0KPiANCj4gIHR5cGVkZWYgc3RydWN0
IF9YRU5DT05TX0ZETyBYRU5DT05TX0ZETywgKlBYRU5DT05TX0ZETzsNCj4gK3R5cGVkZWYgc3Ry
dWN0IF9YRU5DT05TX1BETyBYRU5DT05TX1BETywgKlBYRU5DT05TX1BETzsNCj4gDQo+ICAjaW5j
bHVkZSAiZmRvLmgiDQo+ICsjaW5jbHVkZSAicGRvLmgiDQo+IA0KPiAgI2RlZmluZSBNQVhfREVW
SUNFX0lEX0xFTiAgIDIwMA0KPiAgI2RlZmluZSBNQVhfR1VJRF9TVFJJTkdfTEVOIDM5DQo+IA0K
PiArI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQo+ICsjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjAx
KSAvLyBub25zdGFuZGFyZCBleHRlbnNpb24gdXNlZCA6IG5hbWVsZXNzDQo+IHN0cnVjdC91bmlv
bg0KPiArDQo+ICB0eXBlZGVmIHN0cnVjdCBfWEVOQ09OU19EWCB7DQo+ICAgICAgUERFVklDRV9P
QkpFQ1QgICAgICBEZXZpY2VPYmplY3Q7DQo+ICAgICAgREVWSUNFX09CSkVDVF9UWVBFICBUeXBl
Ow0KPiBAQCAtNzIsNyArNzcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX1hFTkNPTlNfRFggew0KPiAN
Cj4gICAgICBMSVNUX0VOVFJZICAgICAgICAgIExpc3RFbnRyeTsNCj4gDQo+IC0gICAgUFhFTkNP
TlNfRkRPICAgICAgICBGZG87DQo+ICsgICAgdW5pb24gew0KPiArICAgICAgICBQWEVOQ09OU19G
RE8gICAgRmRvOw0KPiArICAgICAgICBQWEVOQ09OU19QRE8gICAgUGRvOw0KPiArICAgIH07DQo+
ICB9IFhFTkNPTlNfRFgsICpQWEVOQ09OU19EWDsNCj4gDQo+ICsjcHJhZ21hIHdhcm5pbmcocG9w
KQ0KPiArDQo+ICAjZW5kaWYgIC8vIF9YRU5DT05TX0RSSVZFUl9IDQo+IGRpZmYgLS1naXQgYS9z
cmMveGVuY29ucy9mZG8uYyBiL3NyYy94ZW5jb25zL2Zkby5jDQo+IGluZGV4IDAxNzBlZjYuLjFj
NTMyM2MgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5jb25zL2Zkby5jDQo+ICsrKyBiL3NyYy94ZW5j
b25zL2Zkby5jDQo+IEBAIC00Nyw2ICs0Nyw4IEBADQo+ICAjaW5jbHVkZSAiZHJpdmVyLmgiDQo+
ICAjaW5jbHVkZSAicmVnaXN0cnkuaCINCj4gICNpbmNsdWRlICJmZG8uaCINCj4gKyNpbmNsdWRl
ICJwZG8uaCINCj4gKyNpbmNsdWRlICJtdXRleC5oIg0KPiAgI2luY2x1ZGUgImNvbnNvbGUuaCIN
Cj4gICNpbmNsdWRlICJ0aHJlYWQuaCINCj4gICNpbmNsdWRlICJuYW1lcy5oIg0KPiBAQCAtODUs
NiArODcsOSBAQCBzdHJ1Y3QgX1hFTkNPTlNfRkRPIHsNCj4gDQo+ICAgICAgQ0hBUiAgICAgICAg
ICAgICAgICAgICAgICAgIFZlbmRvck5hbWVbTUFYTkFNRUxFTl07DQo+IA0KPiArICAgIE1VVEVY
ICAgICAgICAgICAgICAgICAgICAgICBNdXRleDsNCj4gKyAgICBVTE9ORyAgICAgICAgICAgICAg
ICAgICAgICAgUmVmZXJlbmNlczsNCj4gKw0KPiAgICAgIEZET19SRVNPVVJDRSAgICAgICAgICAg
ICAgICBSZXNvdXJjZVtSRVNPVVJDRV9DT1VOVF07DQo+IA0KPiAgICAgIFBYRU5DT05TX0NPTlNP
TEUgICAgICAgICAgICBDb25zb2xlOw0KPiBAQCAtMjEwLDYgKzIxNSwxNCBAQCBfX0Zkb0dldFBo
eXNpY2FsRGV2aWNlT2JqZWN0KA0KPiAgICAgIHJldHVybiBGZG8tPlBoeXNpY2FsRGV2aWNlT2Jq
ZWN0Ow0KPiAgfQ0KPiANCj4gK1BERVZJQ0VfT0JKRUNUDQo+ICtGZG9HZXRQaHlzaWNhbERldmlj
ZU9iamVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbw0KPiArICAgICkNCj4gK3sN
Cj4gKyAgICByZXR1cm4gX19GZG9HZXRQaHlzaWNhbERldmljZU9iamVjdChGZG8pOw0KPiArfQ0K
PiArDQo+ICBfX2Rydl9yZXF1aXJlc0lSUUwoUEFTU0lWRV9MRVZFTCkNCj4gIHN0YXRpYyBGT1JD
RUlOTElORSBOVFNUQVRVUw0KPiAgX19GZG9BY3F1aXJlTG93ZXJCdXNJbnRlcmZhY2UoDQo+IEBA
IC0zNTgsNiArMzcxLDE0IEBAIF9fRmRvR2V0VmVuZG9yTmFtZSgNCj4gICAgICByZXR1cm4gRmRv
LT5WZW5kb3JOYW1lOw0KPiAgfQ0KPiANCj4gK1BDSEFSDQo+ICtGZG9HZXRWZW5kb3JOYW1lKA0K
PiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJl
dHVybiBfX0Zkb0dldFZlbmRvck5hbWUoRmRvKTsNCj4gK30NCj4gKw0KPiAgc3RhdGljIEZPUkNF
SU5MSU5FIFZPSUQNCj4gIF9fRmRvU2V0TmFtZSgNCj4gICAgICBJTiAgUFhFTkNPTlNfRkRPICAg
IEZkbw0KPiBAQCAtMzgzLDYgKzQwNCw5OSBAQCBfX0Zkb0dldE5hbWUoDQo+ICAgICAgcmV0dXJu
IER4LT5OYW1lOw0KPiAgfQ0KPiANCj4gK1BDSEFSDQo+ICtGZG9HZXROYW1lKA0KPiArICAgIElO
ICBQWEVOQ09OU19GRE8gICAgRmRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBfX0Zk
b0dldE5hbWUoRmRvKTsNCj4gK30NCj4gKw0KPiArX19kcnZfZnVuY3Rpb25DbGFzcyhJT19DT01Q
TEVUSU9OX1JPVVRJTkUpDQo+ICtfX2Rydl9zYW1lSVJRTA0KPiArc3RhdGljIE5UU1RBVFVTDQo+
ICtfX0Zkb0RlbGVnYXRlSXJwKA0KPiArICAgIElOICBQREVWSUNFX09CSkVDVCAgRGV2aWNlT2Jq
ZWN0LA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwLA0KPiArICAgIElOICBQVk9JRCAg
ICAgICAgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQS0VWRU5UICAgICAgICAg
ICAgIEV2ZW50ID0gQ29udGV4dDsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIo
RGV2aWNlT2JqZWN0KTsNCj4gKyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKElycCk7DQo+ICsN
Cj4gKyAgICBLZVNldEV2ZW50KEV2ZW50LCBJT19OT19JTkNSRU1FTlQsIEZBTFNFKTsNCj4gKw0K
PiArICAgIHJldHVybiBTVEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVEOw0KPiArfQ0KPiAr
DQo+ICtOVFNUQVRVUw0KPiArRmRvRGVsZWdhdGVJcnAoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZE
TyAgICBGZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgUERFVklDRV9PQkpFQ1QgICAgICBEZXZpY2VPYmplY3Q7DQo+ICsgICAgUElPX1NU
QUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFBJUlAgICAgICAgICAgICAgICAg
U3ViSXJwOw0KPiArICAgIEtFVkVOVCAgICAgICAgICAgICAgRXZlbnQ7DQo+ICsgICAgUElPX1NU
QUNLX0xPQ0FUSU9OICBTdWJTdGFja0xvY2F0aW9uOw0KPiArICAgIE5UU1RBVFVTICAgICAgICAg
ICAgc3RhdHVzOw0KPiArDQo+ICsgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAs
IFBBU1NJVkVfTEVWRUwpOw0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVu
dElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKw0KPiArICAgIC8vIEZpbmQgdGhlIHRvcCBvZiB0
aGUgRkRPIHN0YWNrIGFuZCBob2xkIGEgcmVmZXJlbmNlDQo+ICsgICAgRGV2aWNlT2JqZWN0ID0g
SW9HZXRBdHRhY2hlZERldmljZVJlZmVyZW5jZShGZG8tPkR4LQ0KPiA+RGV2aWNlT2JqZWN0KTsN
Cj4gKw0KPiArICAgIC8vIEdldCBhIG5ldyBJUlAgZm9yIHRoZSBGRE8gc3RhY2sNCj4gKyAgICBT
dWJJcnAgPSBJb0FsbG9jYXRlSXJwKERldmljZU9iamVjdC0+U3RhY2tTaXplLCBGQUxTRSk7DQo+
ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOw0KPiArICAgIGlmIChTdWJJcnAg
PT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICsgICAgLy8gQ29weSBpbiB0
aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgb3JpZ2luYWwgSVJQDQo+ICsgICAgU3ViU3RhY2tMb2Nh
dGlvbiA9IElvR2V0TmV4dElycFN0YWNrTG9jYXRpb24oU3ViSXJwKTsNCj4gKw0KPiArICAgIEtl
SW5pdGlhbGl6ZUV2ZW50KCZFdmVudCwgTm90aWZpY2F0aW9uRXZlbnQsIEZBTFNFKTsNCj4gKw0K
PiArICAgIFJ0bENvcHlNZW1vcnkoU3ViU3RhY2tMb2NhdGlvbiwgU3RhY2tMb2NhdGlvbiwNCj4g
KyAgICAgICAgICAgICAgICAgIEZJRUxEX09GRlNFVChJT19TVEFDS19MT0NBVElPTiwgQ29tcGxl
dGlvblJvdXRpbmUpKTsNCj4gKyAgICBTdWJTdGFja0xvY2F0aW9uLT5Db250cm9sID0gMDsNCj4g
Kw0KPiArICAgIElvU2V0Q29tcGxldGlvblJvdXRpbmUoU3ViSXJwLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19GZG9EZWxlZ2F0ZUlycCwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZFdmVudCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSk7DQo+ICsNCj4gKyAgICAvLyBEZWZhdWx0IGNvbXBsZXRpb24gc3RhdHVzDQo+
ICsgICAgU3ViSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsNCj4g
Kw0KPiArICAgIHN0YXR1cyA9IElvQ2FsbERyaXZlcihEZXZpY2VPYmplY3QsIFN1YklycCk7DQo+
ICsgICAgaWYgKHN0YXR1cyA9PSBTVEFUVVNfUEVORElORykgew0KPiArICAgICAgICAoVk9JRClL
ZVdhaXRGb3JTaW5nbGVPYmplY3QoJkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXhlY3V0aXZlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+
ICsgICAgICAgIHN0YXR1cyA9IFN1YklycC0+SW9TdGF0dXMuU3RhdHVzOw0KPiArICAgIH0gZWxz
ZSB7DQo+ICsgICAgICAgIEFTU0VSVDNVKHN0YXR1cywgPT0gLCBTdWJJcnAtPklvU3RhdHVzLlN0
YXR1cyk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgSW9GcmVlSXJwKFN1YklycCk7DQo+ICsNCj4g
K2RvbmU6DQo+ICsgICAgT2JEZXJlZmVyZW5jZU9iamVjdChEZXZpY2VPYmplY3QpOw0KPiArDQo+
ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiAgX19kcnZfZnVuY3Rpb25DbGFzcyhJ
T19DT01QTEVUSU9OX1JPVVRJTkUpDQo+ICBfX2Rydl9zYW1lSVJRTA0KPiAgc3RhdGljIE5UU1RB
VFVTDQo+IEBAIC00ODcsNiArNjAxLDk5IEBAIEZkb1BhcnNlUmVzb3VyY2VzKA0KPiAgICAgIH0N
Cj4gIH0NCj4gDQo+ICtOVFNUQVRVUw0KPiArRmRvQWRkUGh5c2ljYWxEZXZpY2VPYmplY3QoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAg
ICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUERFVklDRV9PQkpFQ1QgICAgICBEZXZpY2VP
YmplY3Q7DQo+ICsgICAgUFhFTkNPTlNfRFggICAgICAgICBEeDsNCj4gKyAgICBOVFNUQVRVUyAg
ICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIERldmljZU9iamVjdCA9IFBkb0dldERldmlj
ZU9iamVjdChQZG8pOw0KPiArICAgIER4ID0gKFBYRU5DT05TX0RYKURldmljZU9iamVjdC0+RGV2
aWNlRXh0ZW5zaW9uOw0KPiArICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RF
VklDRV9PQkpFQ1QpOw0KPiArDQo+ICsgICAgaWYgKF9fRmRvR2V0RGV2aWNlUG93ZXJTdGF0ZShG
ZG8pID09IFBvd2VyRGV2aWNlRDMpDQo+ICsgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiArICAg
IHN0YXR1cyA9IFBkb1Jlc3VtZShQZG8pOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMp
KQ0KPiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArDQo+ICtkb25lOg0KPiArICAgIEluc2VydFRh
aWxMaXN0KCZGZG8tPkR4LT5MaXN0RW50cnksICZEeC0+TGlzdEVudHJ5KTsNCj4gKyAgICBBU1NF
UlQzVShGZG8tPlJlZmVyZW5jZXMsICE9ICwgMCk7DQo+ICsgICAgRmRvLT5SZWZlcmVuY2VzKys7
DQo+ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2ZhaWwxOg0KPiAr
ICAgIEVycm9yKCJmYWlsMSAoJTA4eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4g
c3RhdHVzOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtGZG9SZW1vdmVQaHlzaWNhbERldmljZU9i
amVjdCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfRkRPICAgIEZkbywNCj4gKyAgICBJTiAgUFhFTkNP
TlNfUERPICAgIFBkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQREVWSUNFX09CSkVDVCAgICAg
IERldmljZU9iamVjdDsNCj4gKyAgICBQWEVOQ09OU19EWCAgICAgICAgIER4Ow0KPiArDQo+ICsg
ICAgRGV2aWNlT2JqZWN0ID0gUGRvR2V0RGV2aWNlT2JqZWN0KFBkbyk7DQo+ICsgICAgRHggPSAo
UFhFTkNPTlNfRFgpRGV2aWNlT2JqZWN0LT5EZXZpY2VFeHRlbnNpb247DQo+ICsgICAgQVNTRVJU
M1UoRHgtPlR5cGUsID09ICwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7DQo+ICsNCj4gKyAgICBp
ZiAoX19GZG9HZXREZXZpY2VQb3dlclN0YXRlKEZkbykgPT0gUG93ZXJEZXZpY2VEMykNCj4gKyAg
ICAgICAgZ290byBkb25lOw0KPiArDQo+ICsgICAgUGRvU3VzcGVuZChQZG8pOw0KPiArDQo+ICtk
b25lOg0KPiArICAgIFJlbW92ZUVudHJ5TGlzdCgmRHgtPkxpc3RFbnRyeSk7DQo+ICsgICAgQVNT
RVJUM1UoRmRvLT5SZWZlcmVuY2VzLCAhPSAsIDApOw0KPiArICAgIC0tRmRvLT5SZWZlcmVuY2Vz
Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiArX19GZG9BY3F1aXJl
TXV0ZXgoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8NCj4gKyAgICApDQo+ICt7DQo+
ICsgICAgQWNxdWlyZU11dGV4KCZGZG8tPk11dGV4KTsNCj4gK30NCj4gKw0KPiArVk9JRA0KPiAr
RmRvQWNxdWlyZU11dGV4KA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvDQo+ICsgICAg
KQ0KPiArew0KPiArICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7DQo+ICt9DQo+ICsNCj4gK3N0
YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtfX0Zkb1JlbGVhc2VNdXRleCgNCj4gKyAgICBJTiAg
UFhFTkNPTlNfRkRPICAgIEZkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBSZWxlYXNlTXV0ZXgo
JkZkby0+TXV0ZXgpOw0KPiArfQ0KPiArDQo+ICtWT0lEDQo+ICtGZG9SZWxlYXNlTXV0ZXgoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgX19G
ZG9SZWxlYXNlTXV0ZXgoRmRvKTsNCj4gKw0KPiArICAgIGlmIChGZG8tPlJlZmVyZW5jZXMgPT0g
MCkNCj4gKyAgICAgICAgRmRvRGVzdHJveShGZG8pOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgRk9S
Q0VJTkxJTkUgUEFOU0lfU1RSSU5HDQo+ICBfX0Zkb011bHRpU3pUb1VwY2FzZUFuc2koDQo+ICAg
ICAgSU4gIFBDSEFSICAgICAgIEJ1ZmZlcg0KPiBAQCAtODMxLDkgKzEwMzgsOSBAQCBGZG9EM1Rv
RDAoDQo+ICAgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8NCj4gICAgICApDQo+ICB7DQo+IC0g
ICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IEZkby0+RHg7DQo+ICAgICAgUE9XRVJfU1RBVEUg
ICAgICAgICBQb3dlclN0YXRlOw0KPiAgICAgIEtJUlFMICAgICAgICAgICAgICAgSXJxbDsNCj4g
KyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gICAgICBOVFNUQVRVUyAgICAg
ICAgICAgIHN0YXR1czsNCj4gDQo+ICAgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9
PSwgUEFTU0lWRV9MRVZFTCk7DQo+IEBAIC04NzMsMTEgKzEwODAsMjcgQEAgRmRvRDNUb0QwKA0K
PiAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLA0KPiAgICAgICAgICAgICAg
ICAgICAgICBQb3dlclN0YXRlKTsNCj4gDQo+ICsgICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsN
Cj4gKw0KPiArICAgIGZvciAoTGlzdEVudHJ5ID0gRmRvLT5EeC0+TGlzdEVudHJ5LkZsaW5rOw0K
PiArICAgICAgICAgTGlzdEVudHJ5ICE9ICZGZG8tPkR4LT5MaXN0RW50cnk7DQo+ICsgICAgICAg
ICBMaXN0RW50cnkgPSBMaXN0RW50cnktPkZsaW5rKSB7DQo+ICsgICAgICAgIFBYRU5DT05TX0RY
ICBEeCA9IENPTlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOQ09OU19EWCwNCj4gTGlzdEVu
dHJ5KTsNCj4gKyAgICAgICAgUFhFTkNPTlNfUERPIFBkbyA9IER4LT5QZG87DQo+ICsNCj4gKyAg
ICAgICAgQVNTRVJUM1UoRHgtPlR5cGUsID09ICwgUEhZU0lDQUxfREVWSUNFX09CSkVDVCk7DQo+
ICsNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvUmVzdW1lKFBkbyk7DQo+ICsgICAgICAgIEFTU0VS
VChOVF9TVUNDRVNTKHN0YXR1cykpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIF9fRmRvUmVsZWFz
ZU11dGV4KEZkbyk7DQo+ICsNCj4gICAgICBzdGF0dXMgPSBDb25zb2xlRDNUb0QwKEZkby0+Q29u
c29sZSk7DQo+ICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+IA0KPiAgI3ByYWdt
YSBwcmVmYXN0KHN1cHByZXNzOjI4MTIzKQ0KPiAtICAgIChWT0lEKSBJb1NldERldmljZUludGVy
ZmFjZVN0YXRlKCZEeC0+TGluaywgVFJVRSk7DQo+ICsgICAgKFZPSUQpIElvU2V0RGV2aWNlSW50
ZXJmYWNlU3RhdGUoJkZkby0+RHgtPkxpbmssIFRSVUUpOw0KPiANCj4gICAgICBUcmFjZSgiPD09
PT1cbiIpOw0KPiANCj4gQEAgLTkxMiw4ICsxMTM1LDggQEAgRmRvRDBUb0QzKA0KPiAgICAgIElO
ICBQWEVOQ09OU19GRE8gICAgRmRvDQo+ICAgICAgKQ0KPiAgew0KPiAtICAgIFBYRU5DT05TX0RY
ICAgICAgICAgRHggPSBGZG8tPkR4Ow0KPiAgICAgIFBPV0VSX1NUQVRFICAgICAgICAgUG93ZXJT
dGF0ZTsNCj4gKyAgICBQTElTVF9FTlRSWSAgICAgICAgIExpc3RFbnRyeTsNCj4gICAgICBLSVJR
TCAgICAgICAgICAgICAgIElycWw7DQo+IA0KPiAgICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudEly
cWwoKSwgPT0sIFBBU1NJVkVfTEVWRUwpOw0KPiBAQCAtOTIyLDEwICsxMTQ1LDI5IEBAIEZkb0Qw
VG9EMygNCj4gICAgICBUcmFjZSgiPT09PT5cbiIpOw0KPiANCj4gICNwcmFnbWEgcHJlZmFzdChz
dXBwcmVzczoyODEyMykNCj4gLSAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0ZSgm
RHgtPkxpbmssIEZBTFNFKTsNCj4gKyAgICAoVk9JRCkgSW9TZXREZXZpY2VJbnRlcmZhY2VTdGF0
ZSgmRmRvLT5EeC0+TGluaywgRkFMU0UpOw0KPiANCj4gICAgICBDb25zb2xlRDBUb0QzKEZkby0+
Q29uc29sZSk7DQo+IA0KPiArICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7DQo+ICsNCj4gKyAg
ICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsNCj4gKyAgICAgICAg
IExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5Ow0KPiArICAgICAgICAgTGlzdEVudHJ5
ID0gTGlzdEVudHJ5LT5GbGluaykgew0KPiArICAgICAgICBQWEVOQ09OU19EWCAgRHggPSBDT05U
QUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTkNPTlNfRFgsDQo+IExpc3RFbnRyeSk7DQo+ICsg
ICAgICAgIFBYRU5DT05TX1BETyBQZG8gPSBEeC0+UGRvOw0KPiArDQo+ICsgICAgICAgIEFTU0VS
VDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOw0KPiArDQo+ICsgICAg
ICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09IERlbGV0ZWQgfHwNCj4gKyAgICAg
ICAgICAgIFBkb0lzTWlzc2luZyhQZG8pKQ0KPiArICAgICAgICAgICAgY29udGludWU7DQo+ICsN
Cj4gKyAgICAgICAgUGRvU3VzcGVuZChQZG8pOw0KPiArICAgIH0NCj4gKw0KPiArICAgIF9fRmRv
UmVsZWFzZU11dGV4KEZkbyk7DQo+ICsNCj4gICAgICBQb3dlclN0YXRlLkRldmljZVN0YXRlID0g
UG93ZXJEZXZpY2VEMzsNCj4gICAgICBQb1NldFBvd2VyU3RhdGUoRmRvLT5EeC0+RGV2aWNlT2Jq
ZWN0LA0KPiAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLA0KPiBAQCAtMTEx
NywxMCArMTM1OSwyNyBAQCBGZG9TdXJwcmlzZVJlbW92YWwoDQo+ICAgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnANCj4gICAgICApDQo+ICB7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgICAgICBM
aXN0RW50cnk7DQo+ICAgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+IA0KPiAgICAg
IF9fRmRvU2V0RGV2aWNlUG5wU3RhdGUoRmRvLCBTdXJwcmlzZVJlbW92ZVBlbmRpbmcpOw0KPiAN
Cj4gKyAgICBfX0Zkb0FjcXVpcmVNdXRleChGZG8pOw0KPiArDQo+ICsgICAgZm9yIChMaXN0RW50
cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7DQo+ICsgICAgICAgICBMaXN0RW50cnkgIT0g
JkZkby0+RHgtPkxpc3RFbnRyeTsNCj4gKyAgICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+
RmxpbmspIHsNCj4gKyAgICAgICAgUFhFTkNPTlNfRFggIER4ID0gQ09OVEFJTklOR19SRUNPUkQo
TGlzdEVudHJ5LCBYRU5DT05TX0RYLA0KPiBMaXN0RW50cnkpOw0KPiArICAgICAgICBQWEVOQ09O
U19QRE8gUGRvID0gRHgtPlBkbzsNCj4gKw0KPiArICAgICAgICBBU1NFUlQzVShEeC0+VHlwZSwg
PT0gLCBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUKTsNCj4gKw0KPiArICAgICAgICBpZiAoIVBkb0lz
TWlzc2luZyhQZG8pKQ0KPiArICAgICAgICAgICAgUGRvU2V0TWlzc2luZyhQZG8sICJGRE8gc3Vy
cHJpc2UgcmVtb3ZlZCIpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIF9fRmRvUmVsZWFzZU11dGV4
KEZkbyk7DQo+ICsNCj4gICAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNT
Ow0KPiANCj4gICAgICBJb1NraXBDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiBAQCAt
MTEzNSw2ICsxMzk0LDcgQEAgRmRvUmVtb3ZlRGV2aWNlKA0KPiAgICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwDQo+ICAgICAgKQ0KPiAgew0KPiArICAgIFBMSVNUX0VOVFJZICAgICAgICAgTGlz
dEVudHJ5Ow0KPiAgICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiANCj4gICAgICBB
U1NFUlQzVShLZUdldEN1cnJlbnRJcnFsKCksID09LCBQQVNTSVZFX0xFVkVMKTsNCj4gQEAgLTEx
NDIsNiArMTQwMiwzMCBAQCBGZG9SZW1vdmVEZXZpY2UoDQo+ICAgICAgaWYgKF9fRmRvR2V0UHJl
dmlvdXNEZXZpY2VQbnBTdGF0ZShGZG8pICE9IFN0YXJ0ZWQpDQo+ICAgICAgICAgIGdvdG8gZG9u
ZTsNCj4gDQo+ICsgICAgX19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsNCj4gKw0KPiArICAgIExpc3RF
bnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGluazsNCj4gKyAgICB3aGlsZSAoTGlzdEVudHJ5
ICE9ICZGZG8tPkR4LT5MaXN0RW50cnkpIHsNCj4gKyAgICAgICAgUExJU1RfRU5UUlkgRmxpbmsg
PSBMaXN0RW50cnktPkZsaW5rOw0KPiArICAgICAgICBQWEVOQ09OU19EWCAgRHggPSBDT05UQUlO
SU5HX1JFQ09SRChMaXN0RW50cnksIFhFTkNPTlNfRFgsDQo+IExpc3RFbnRyeSk7DQo+ICsgICAg
ICAgIFBYRU5DT05TX1BETyBQZG8gPSBEeC0+UGRvOw0KPiArDQo+ICsgICAgICAgIEFTU0VSVDNV
KER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOw0KPiArDQo+ICsgICAgICAg
IGlmICghUGRvSXNNaXNzaW5nKFBkbykpDQo+ICsgICAgICAgICAgICBQZG9TZXRNaXNzaW5nKFBk
bywgIkZETyByZW1vdmVkIik7DQo+ICsNCj4gKyAgICAgICAgaWYgKFBkb0dldERldmljZVBucFN0
YXRlKFBkbykgIT0gU3VycHJpc2VSZW1vdmVQZW5kaW5nKQ0KPiArICAgICAgICAgICAgUGRvU2V0
RGV2aWNlUG5wU3RhdGUoUGRvLCBEZWxldGVkKTsNCj4gKw0KPiArICAgICAgICBpZiAoUGRvR2V0
RGV2aWNlUG5wU3RhdGUoUGRvKSA9PSBEZWxldGVkKQ0KPiArICAgICAgICAgICAgUGRvRGVzdHJv
eShQZG8pOw0KPiArDQo+ICsgICAgICAgIExpc3RFbnRyeSA9IEZsaW5rOw0KPiArICAgIH0NCj4g
Kw0KPiArICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7DQo+ICsNCj4gICAgICBpZiAoX19GZG9H
ZXREZXZpY2VQb3dlclN0YXRlKEZkbykgPT0gUG93ZXJEZXZpY2VEMCkNCj4gICAgICAgICAgRmRv
RDBUb0QzKEZkbyk7DQo+IA0KPiBAQCAtMTE1Nyw3ICsxNDQxLDEzIEBAIGRvbmU6DQo+ICAgICAg
SW9Ta2lwQ3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gICAgICBzdGF0dXMgPSBJb0Nh
bGxEcml2ZXIoRmRvLT5Mb3dlckRldmljZU9iamVjdCwgSXJwKTsNCj4gDQo+IC0gICAgRmRvRGVz
dHJveShGZG8pOw0KPiArICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7DQo+ICsgICAgQVNTRVJU
M1UoRmRvLT5SZWZlcmVuY2VzLCAhPSAsIDApOw0KPiArICAgIC0tRmRvLT5SZWZlcmVuY2VzOw0K
PiArICAgIF9fRmRvUmVsZWFzZU11dGV4KEZkbyk7DQo+ICsNCj4gKyAgICBpZiAoRmRvLT5SZWZl
cmVuY2VzID09IDApDQo+ICsgICAgICAgIEZkb0Rlc3Ryb3koRmRvKTsNCj4gDQo+ICAgICAgcmV0
dXJuIHN0YXR1czsNCj4gIH0NCj4gQEAgLTExNjksMTYgKzE0NTksMTEwIEBAIEZkb1F1ZXJ5RGV2
aWNlUmVsYXRpb25zKA0KPiAgICAgICkNCj4gIHsNCj4gICAgICBQSU9fU1RBQ0tfTE9DQVRJT04g
IFN0YWNrTG9jYXRpb247DQo+ICsgICAgVUxPTkcgICAgICAgICAgICAgICBTaXplOw0KPiArICAg
IFBERVZJQ0VfUkVMQVRJT05TICAgUmVsYXRpb25zOw0KPiArICAgIFVMT05HICAgICAgICAgICAg
ICAgQ291bnQ7DQo+ICsgICAgUExJU1RfRU5UUlkgICAgICAgICBMaXN0RW50cnk7DQo+ICAgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+IA0KPiAtICAgIEFTU0VSVDNVKEtlR2V0Q3Vy
cmVudElycWwoKSwgPT0sIFBBU1NJVkVfTEVWRUwpOw0KPiArICAgIEFTU0VSVDNVKEtlR2V0Q3Vy
cmVudElycWwoKSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsNCj4gDQo+ICAgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gDQo+ICAgICAgc3RhdHVz
ID0gSXJwLT5Jb1N0YXR1cy5TdGF0dXM7DQo+IA0KPiAtICAgIElvU2tpcEN1cnJlbnRJcnBTdGFj
a0xvY2F0aW9uKElycCk7DQo+IC0gICAgc3RhdHVzID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJE
ZXZpY2VPYmplY3QsIElycCk7DQo+ICsgICAgaWYgKFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMu
UXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPQ0KPiBCdXNSZWxhdGlvbnMpIHsNCj4gKyAgICAg
ICAgSW9Ta2lwQ3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKyAgICAgICAgc3RhdHVz
ID0gSW9DYWxsRHJpdmVyKEZkby0+TG93ZXJEZXZpY2VPYmplY3QsIElycCk7DQo+ICsNCj4gKyAg
ICAgICAgZ290byBkb25lOw0KPiArICAgIH0NCj4gKw0KPiArICAgIF9fRmRvQWNxdWlyZU11dGV4
KEZkbyk7DQo+ICsNCj4gKyAgICBDb3VudCA9IDA7DQo+ICsgICAgZm9yIChMaXN0RW50cnkgPSBG
ZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7DQo+ICsgICAgICAgICBMaXN0RW50cnkgIT0gJkZkby0+
RHgtPkxpc3RFbnRyeTsNCj4gKyAgICAgICAgIExpc3RFbnRyeSA9IExpc3RFbnRyeS0+Rmxpbmsp
DQo+ICsgICAgICAgIENvdW50Kys7DQo+ICsNCj4gKyAgICBTaXplID0gRklFTERfT0ZGU0VUKERF
VklDRV9SRUxBVElPTlMsIE9iamVjdHMpICsNCj4gKHNpemVvZihQREVWSUNFX09CSkVDVCkgKiBf
X21heChDb3VudCwgMSkpOw0KPiArDQo+ICsgICAgUmVsYXRpb25zID0gRXhBbGxvY2F0ZVBvb2xX
aXRoVGFnKFBhZ2VkUG9vbCwgU2l6ZSwgRkRPX1BPT0wpOw0KPiArDQo+ICsgICAgc3RhdHVzID0g
U1RBVFVTX05PX01FTU9SWTsNCj4gKyAgICBpZiAoUmVsYXRpb25zID09IE5VTEwpDQo+ICsgICAg
ICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KFJlbGF0aW9ucywgU2l6
ZSk7DQo+ICsNCj4gKyAgICBmb3IgKExpc3RFbnRyeSA9IEZkby0+RHgtPkxpc3RFbnRyeS5GbGlu
azsNCj4gKyAgICAgICAgIExpc3RFbnRyeSAhPSAmRmRvLT5EeC0+TGlzdEVudHJ5Ow0KPiArICAg
ICAgICAgTGlzdEVudHJ5ID0gTGlzdEVudHJ5LT5GbGluaykgew0KPiArICAgICAgICBQWEVOQ09O
U19EWCAgRHggPSBDT05UQUlOSU5HX1JFQ09SRChMaXN0RW50cnksIFhFTkNPTlNfRFgsDQo+IExp
c3RFbnRyeSk7DQo+ICsgICAgICAgIFBYRU5DT05TX1BETyBQZG8gPSBEeC0+UGRvOw0KPiArDQo+
ICsgICAgICAgIEFTU0VSVDNVKER4LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1Qp
Ow0KPiArDQo+ICsgICAgICAgIGlmIChQZG9Jc01pc3NpbmcoUGRvKSkNCj4gKyAgICAgICAgICAg
IGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgIGlmIChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8p
ID09IFByZXNlbnQpDQo+ICsgICAgICAgICAgICBQZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIEVu
dW1lcmF0ZWQpOw0KPiArDQo+ICsgICAgICAgIE9iUmVmZXJlbmNlT2JqZWN0KER4LT5EZXZpY2VP
YmplY3QpOw0KPiArICAgICAgICBSZWxhdGlvbnMtPk9iamVjdHNbUmVsYXRpb25zLT5Db3VudCsr
XSA9IER4LT5EZXZpY2VPYmplY3Q7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQVNTRVJUM1UoUmVs
YXRpb25zLT5Db3VudCwgPD0gLCBDb3VudCk7DQo+ICsNCj4gKyAgICBUcmFjZSgiJWQgUERPKHMp
XG4iLCBSZWxhdGlvbnMtPkNvdW50KTsNCj4gKw0KPiArICAgIF9fRmRvUmVsZWFzZU11dGV4KEZk
byk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uID0gKFVMT05HX1BUUilS
ZWxhdGlvbnM7DQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsN
Cj4gKw0KPiArICAgIHN0YXR1cyA9IEZkb0ZvcndhcmRJcnBTeW5jaHJvbm91c2x5KEZkbywgSXJw
KTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWls
MjsNCj4gKw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsN
Cj4gKw0KPiArICAgIF9fRmRvQWNxdWlyZU11dGV4KEZkbyk7DQo+ICsNCj4gKyAgICBMaXN0RW50
cnkgPSBGZG8tPkR4LT5MaXN0RW50cnkuRmxpbms7DQo+ICsgICAgd2hpbGUgKExpc3RFbnRyeSAh
PSAmRmRvLT5EeC0+TGlzdEVudHJ5KSB7DQo+ICsgICAgICAgIFBYRU5DT05TX0RYICBEeCA9IENP
TlRBSU5JTkdfUkVDT1JEKExpc3RFbnRyeSwgWEVOQ09OU19EWCwNCj4gTGlzdEVudHJ5KTsNCj4g
KyAgICAgICAgUFhFTkNPTlNfUERPIFBkbyA9IER4LT5QZG87DQo+ICsgICAgICAgIFBMSVNUX0VO
VFJZIE5leHQgPSBMaXN0RW50cnktPkZsaW5rOw0KPiArDQo+ICsgICAgICAgIEFTU0VSVDNVKER4
LT5UeXBlLCA9PSAsIFBIWVNJQ0FMX0RFVklDRV9PQkpFQ1QpOw0KPiArDQo+ICsgICAgICAgIGlm
IChQZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pID09IERlbGV0ZWQgJiYNCj4gKyAgICAgICAgICAg
IFBkb0lzTWlzc2luZyhQZG8pKQ0KPiArICAgICAgICAgICAgUGRvRGVzdHJveShQZG8pOw0KPiAr
DQo+ICsgICAgICAgIExpc3RFbnRyeSA9IE5leHQ7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgX19G
ZG9SZWxlYXNlTXV0ZXgoRmRvKTsNCj4gKw0KPiArZG9uZToNCj4gKyAgICByZXR1cm4gc3RhdHVz
Ow0KPiArDQo+ICtmYWlsMjoNCj4gKyAgICBFcnJvcigiZmFpbDJcbiIpOw0KPiArDQo+ICsgICAg
X19GZG9BY3F1aXJlTXV0ZXgoRmRvKTsNCj4gKw0KPiArZmFpbDE6DQo+ICsgICAgRXJyb3IoImZh
aWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIF9fRmRvUmVsZWFzZU11dGV4KEZk
byk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJ
b0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+IA0KPiAgICAgIHJldHVy
biBzdGF0dXM7DQo+ICB9DQo+IEBAIC0yNDY5LDEzICsyODUzLDMzIEBAIEZkb0NyZWF0ZSgNCj4g
DQo+ICAgICAgRHgtPkZkbyA9IEZkbzsNCj4gDQo+ICsgICAgSW5pdGlhbGl6ZU11dGV4KCZGZG8t
Pk11dGV4KTsNCj4gKyAgICBJbml0aWFsaXplTGlzdEhlYWQoJkR4LT5MaXN0RW50cnkpOw0KPiAr
ICAgIEZkby0+UmVmZXJlbmNlcyA9IDE7DQo+ICsNCj4gICAgICBJbmZvKCIlcCAoJXMpXG4iLA0K
PiAgICAgICAgICAgRnVuY3Rpb25EZXZpY2VPYmplY3QsDQo+ICAgICAgICAgICBfX0Zkb0dldE5h
bWUoRmRvKSk7DQo+IA0KPiArICAgIHN0YXR1cyA9IFBkb0NyZWF0ZShGZG8sIE5VTEwpOw0KPiAr
ICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwxMzsNCj4g
Kw0KPiAgICAgIEZ1bmN0aW9uRGV2aWNlT2JqZWN0LT5GbGFncyAmPSB+RE9fREVWSUNFX0lOSVRJ
QUxJWklORzsNCj4gICAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+IA0KPiArZmFpbDEzOg0K
PiArICAgIEVycm9yKCJmYWlsMTNcbiIpOw0KPiArDQo+ICsgICAgRHgtPkZkbyA9IEZkbzsNCj4g
Kw0KPiArICAgIFJ0bFplcm9NZW1vcnkoJkZkby0+TXV0ZXgsIHNpemVvZihNVVRFWCkpOw0KPiAr
ICAgIFJ0bFplcm9NZW1vcnkoJkR4LT5MaXN0RW50cnksIHNpemVvZihMSVNUX0VOVFJZKSk7DQo+
ICsgICAgRmRvLT5SZWZlcmVuY2VzID0gMDsNCj4gKw0KPiArICAgIENvbnNvbGVEZXN0cm95KEZk
by0+Q29uc29sZSk7DQo+ICsgICAgRmRvLT5Db25zb2xlID0gTlVMTDsNCj4gKw0KPiAgZmFpbDEy
Og0KPiAgICAgIEVycm9yKCJmYWlsMTJcbiIpOw0KPiANCj4gQEAgLTI1NjEsNyArMjk2NSw5IEBA
IEZkb0Rlc3Ryb3koDQo+ICAgICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IEZkby0+RHg7DQo+
ICAgICAgUERFVklDRV9PQkpFQ1QgICAgICBGdW5jdGlvbkRldmljZU9iamVjdCA9IER4LT5EZXZp
Y2VPYmplY3Q7DQo+IA0KPiAtICAgIEFTU0VSVDNVKF9fRmRvR2V0RGV2aWNlUG5wU3RhdGUoRmRv
KSwgPT0sIERlbGV0ZWQpOw0KPiArICAgIEFTU0VSVChJc0xpc3RFbXB0eSgmRHgtPkxpc3RFbnRy
eSkpOw0KPiArICAgIEFTU0VSVDNVKEZkby0+UmVmZXJlbmNlcywgPT0gLCAwKTsNCj4gKyAgICBB
U1NFUlQzVShfX0Zkb0dldERldmljZVBucFN0YXRlKEZkbyksID09ICwgRGVsZXRlZCk7DQo+IA0K
PiAgICAgIEZkby0+Tm90RGlzYWJsZWFibGUgPSBGQUxTRTsNCj4gDQo+IEBAIC0yNTY5LDYgKzI5
NzUsOCBAQCBGZG9EZXN0cm95KA0KPiAgICAgICAgICAgRnVuY3Rpb25EZXZpY2VPYmplY3QsDQo+
ICAgICAgICAgICBfX0Zkb0dldE5hbWUoRmRvKSk7DQo+IA0KPiArICAgIFJ0bFplcm9NZW1vcnko
JkZkby0+TXV0ZXgsIHNpemVvZihNVVRFWCkpOw0KPiArDQo+ICAgICAgRHgtPkZkbyA9IE5VTEw7
DQo+IA0KPiAgICAgIENvbnNvbGVEZXN0cm95KEZkby0+Q29uc29sZSk7DQo+IGRpZmYgLS1naXQg
YS9zcmMveGVuY29ucy9mZG8uaCBiL3NyYy94ZW5jb25zL2Zkby5oDQo+IGluZGV4IDE5ZWFhNDIu
LmY4ZWJhZjMgMTAwNjQ0DQo+IC0tLSBhL3NyYy94ZW5jb25zL2Zkby5oDQo+ICsrKyBiL3NyYy94
ZW5jb25zL2Zkby5oDQo+IEBAIC00MCw2ICs0MCw0OSBAQA0KPiANCj4gICNpbmNsdWRlICJkcml2
ZXIuaCINCj4gDQo+ICtleHRlcm4gUENIQVINCj4gK0Zkb0dldFZlbmRvck5hbWUoDQo+ICsgICAg
SU4gIFBYRU5DT05TX0ZETyAgICBGZG8NCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4gUENIQVIN
Cj4gK0Zkb0dldE5hbWUoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8NCj4gKyAgICAp
Ow0KPiArDQo+ICtleHRlcm4gTlRTVEFUVVMNCj4gK0Zkb0FkZFBoeXNpY2FsRGV2aWNlT2JqZWN0
KA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRvLA0KPiArICAgIElOICBQWEVOQ09OU19Q
RE8gICAgUGRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQNCj4gK0Zkb1JlbW92ZVBo
eXNpY2FsRGV2aWNlT2JqZWN0KA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgIEZkbywNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUERPICAgICBQZG8NCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4g
Vk9JRA0KPiArRmRvQWNxdWlyZU11dGV4KA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgIEZk
bw0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBWT0lEDQo+ICtGZG9SZWxlYXNlTXV0ZXgoDQo+
ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICAgRmRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJu
IFBERVZJQ0VfT0JKRUNUDQo+ICtGZG9HZXRQaHlzaWNhbERldmljZU9iamVjdCgNCj4gKyAgICBJ
TiAgUFhFTkNPTlNfRkRPICAgIEZkbw0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRV
Uw0KPiArRmRvRGVsZWdhdGVJcnAoDQo+ICsgICAgSU4gIFBYRU5DT05TX0ZETyAgICBGZG8sDQo+
ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApOw0KPiArDQo+ICBleHRlcm4g
TlRTVEFUVVMNCj4gIEZkb0Rpc3BhdGNoKA0KPiAgICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
LA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hlbmNvbnMvbXV0ZXguaCBiL3NyYy94ZW5jb25zL211dGV4
LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUNCj4gaW5kZXggMDAwMDAwMC4uOTA0YjIxZA0KPiAt
LS0gL2Rldi9udWxsDQo+ICsrKyBiL3NyYy94ZW5jb25zL211dGV4LmgNCj4gQEAgLTAsMCArMSw4
MiBAQA0KPiArLyogQ29weXJpZ2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQo+ICsqDQo+ICsqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+ICsqIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQNCj4gKyogdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoNCj4gKyoNCj4gKyogKiAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUNCj4gKyogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUNCj4gKyogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lg0KPiArKiAqICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQ0KPiArKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZQ0KPiArKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyDQo+ICsqICAgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLg0KPiArKg0KPiArKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyogQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywNCj4gKyogSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCj4gKyogTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gKyog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsDQo+ICsqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsDQo+ICsqIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUg0KPiArKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTDQo+ICsqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcNCj4gKyogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+ICsqIFNVQ0gg
REFNQUdFLg0KPiArKi8NCj4gKw0KPiArI2lmbmRlZiBfWEVOQ09OU19NVVRFWF9IDQo+ICsjZGVm
aW5lIF9YRU5DT05TX01VVEVYX0gNCj4gKw0KPiArI2luY2x1ZGUgPG50ZGRrLmg+DQo+ICsNCj4g
KyNpbmNsdWRlICJhc3NlcnQuaCINCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgX01VVEVYIHsNCj4g
KyAgICBQS1RIUkVBRCAgICBPd25lcjsNCj4gKyAgICBLRVZFTlQgICAgICBFdmVudDsNCj4gK30g
TVVURVgsICpQTVVURVg7DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtJbml0
aWFsaXplTXV0ZXgoDQo+ICsgICAgSU4gIFBNVVRFWCAgTXV0ZXgNCj4gKykNCj4gK3sNCj4gKyAg
ICBSdGxaZXJvTWVtb3J5KE11dGV4LCBzaXplb2YoTVVURVgpKTsNCj4gKw0KPiArICAgIEtlSW5p
dGlhbGl6ZUV2ZW50KCZNdXRleC0+RXZlbnQsIFN5bmNocm9uaXphdGlvbkV2ZW50LCBUUlVFKTsN
Cj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fZHJ2X21heElSUUwo
UEFTU0lWRV9MRVZFTCkNCj4gK0FjcXVpcmVNdXRleCgNCj4gKyAgICBJTiAgUE1VVEVYICBNdXRl
eA0KPiArKQ0KPiArew0KPiArICAgIChWT0lEKUtlV2FpdEZvclNpbmdsZU9iamVjdCgmTXV0ZXgt
PkV2ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKTsNCj4gKw0KPiArICAgIEFTU0VSVDNQKE11dGV4LT5Pd25lciwgPT0g
LCBOVUxMKTsNCj4gKyAgICBNdXRleC0+T3duZXIgPSBLZUdldEN1cnJlbnRUaHJlYWQoKTsNCj4g
K30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fZHJ2X21heElSUUwoUEFT
U0lWRV9MRVZFTCkNCj4gK1JlbGVhc2VNdXRleCgNCj4gKyAgICBJTiAgUE1VVEVYICBNdXRleA0K
PiArKQ0KPiArew0KPiArICAgIEFTU0VSVDNQKE11dGV4LT5Pd25lciwgPT0gLCBLZUdldEN1cnJl
bnRUaHJlYWQoKSk7DQo+ICsgICAgTXV0ZXgtPk93bmVyID0gTlVMTDsNCj4gKw0KPiArICAgIEtl
U2V0RXZlbnQoJk11dGV4LT5FdmVudCwgSU9fTk9fSU5DUkVNRU5ULCBGQUxTRSk7DQo+ICt9DQo+
ICsNCj4gKyNlbmRpZiAgLy8gX1hFTkNPTlNfTVVURVhfSA0KPiBkaWZmIC0tZ2l0IGEvc3JjL3hl
bmNvbnMvcGRvLmMgYi9zcmMveGVuY29ucy9wZG8uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDc1NQ0K
PiBpbmRleCAwMDAwMDAwLi41ZTkwODQ0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc3JjL3hl
bmNvbnMvcGRvLmMNCj4gQEAgLTAsMCArMSwxODY1IEBADQo+ICsvKiBDb3B5cmlnaHQgKGMpIENp
dHJpeCBTeXN0ZW1zIEluYy4NCj4gKyogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyoNCj4gKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gKyog
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZA0KPiAr
KiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiArKg0KPiArKiAqICAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQ0KPiAr
KiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQ0K
PiArKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsqICogICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlDQo+ICsqICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlDQo+ICsqICAgICBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXINCj4gKyog
ICAgIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICsqDQo+ICsq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0K
PiArKiBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLA0KPiArKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRg0KPiArKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQ0KPiArKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUg0KPiArKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCj4gKyogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gKyogQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SDQo+ICsqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+
ICsqIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORw0KPiArKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFDQo+ICsqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YNCj4gKyogU1VDSCBEQU1BR0UuDQo+ICsqLw0KPiArDQo+ICsjZGVm
aW5lIElOSVRHVUlEIDENCj4gKw0KPiArI2luY2x1ZGUgPG50ZGRrLmg+DQo+ICsjaW5jbHVkZSA8
d2RtZ3VpZC5oPg0KPiArI2luY2x1ZGUgPG50c3Ryc2FmZS5oPg0KPiArI2luY2x1ZGUgPHN0ZGxp
Yi5oPg0KPiArDQo+ICsjaW5jbHVkZSA8c3VzcGVuZF9pbnRlcmZhY2UuaD4NCj4gKyNpbmNsdWRl
IDx2ZXJzaW9uLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJkcml2ZXIuaCINCj4gKyNpbmNsdWRlICJu
YW1lcy5oIg0KPiArI2luY2x1ZGUgImZkby5oIg0KPiArI2luY2x1ZGUgInBkby5oIg0KPiArI2lu
Y2x1ZGUgInRocmVhZC5oIg0KPiArI2luY2x1ZGUgImRiZ19wcmludC5oIg0KPiArI2luY2x1ZGUg
ImFzc2VydC5oIg0KPiArI2luY2x1ZGUgInV0aWwuaCINCj4gKw0KPiArI2RlZmluZSBQRE9fUE9P
TCAnT0RQJw0KPiArDQo+ICsjZGVmaW5lIE1BWE5BTUVMRU4gIDEyOA0KPiArI2RlZmluZSBNQVhU
RVhUTEVOICAxMDI0DQo+ICsNCj4gK3N0cnVjdCBfWEVOQ09OU19QRE8gew0KPiArICAgIFBYRU5D
T05TX0RYICAgICAgICAgICAgICAgICBEeDsNCj4gKw0KPiArICAgIFBYRU5DT05TX1RIUkVBRCAg
ICAgICAgICAgICBTeXN0ZW1Qb3dlclRocmVhZDsNCj4gKyAgICBQSVJQICAgICAgICAgICAgICAg
ICAgICAgICAgU3lzdGVtUG93ZXJJcnA7DQo+ICsgICAgUFhFTkNPTlNfVEhSRUFEICAgICAgICAg
ICAgIERldmljZVBvd2VyVGhyZWFkOw0KPiArICAgIFBJUlAgICAgICAgICAgICAgICAgICAgICAg
ICBEZXZpY2VQb3dlcklycDsNCj4gKw0KPiArICAgIFBYRU5DT05TX0ZETyAgICAgICAgICAgICAg
ICBGZG87DQo+ICsgICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIE1pc3Npbmc7DQo+ICsg
ICAgY29uc3QgQ0hBUiAgICAgICAgICAgICAgICAgICpSZWFzb247DQo+ICsgICAgTE9ORyAgICAg
ICAgICAgICAgICAgICAgICAgIEVqZWN0Ow0KPiArDQo+ICsgICAgWEVOQlVTX1NVU1BFTkRfSU5U
RVJGQUNFICAgIFN1c3BlbmRJbnRlcmZhY2U7DQo+ICsgICAgUFhFTkJVU19TVVNQRU5EX0NBTExC
QUNLICAgIFN1c3BlbmRDYWxsYmFja0xhdGU7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJ
TkxJTkUgUFZPSUQNCj4gK19fUGRvQWxsb2NhdGUoDQo+ICsgICAgSU4gIFVMT05HICAgTGVuZ3Ro
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBfX0FsbG9jYXRlUG9vbFdpdGhUYWcoTm9u
UGFnZWRQb29sLCBMZW5ndGgsIFBET19QT09MKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNF
SU5MSU5FIFZPSUQNCj4gK19fUGRvRnJlZSgNCj4gKyAgICBJTiAgUFZPSUQgICBCdWZmZXINCj4g
KyAgICApDQo+ICt7DQo+ICsgICAgX19GcmVlUG9vbFdpdGhUYWcoQnVmZmVyLCBQRE9fUE9PTCk7
DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtfX1Bkb1NldERldmlj
ZVBucFN0YXRlKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgICAgIFBkbywNCj4gKyAgICBJ
TiAgREVWSUNFX1BOUF9TVEFURSAgICBTdGF0ZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVO
Q09OU19EWCAgICAgICAgICAgICBEeCA9IFBkby0+RHg7DQo+ICsNCj4gKyAgICAvLyBXZSBjYW4g
bmV2ZXIgdHJhbnNpdGlvbiBvdXQgb2YgdGhlIGRlbGV0ZWQgc3RhdGUNCj4gKyAgICBBU1NFUlQo
RHgtPkRldmljZVBucFN0YXRlICE9IERlbGV0ZWQgfHwgU3RhdGUgPT0gRGVsZXRlZCk7DQo+ICsN
Cj4gKyAgICBEeC0+UHJldmlvdXNEZXZpY2VQbnBTdGF0ZSA9IER4LT5EZXZpY2VQbnBTdGF0ZTsN
Cj4gKyAgICBEeC0+RGV2aWNlUG5wU3RhdGUgPSBTdGF0ZTsNCj4gK30NCj4gKw0KPiArVk9JRA0K
PiArUGRvU2V0RGV2aWNlUG5wU3RhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICAgICAg
UGRvLA0KPiArICAgIElOICBERVZJQ0VfUE5QX1NUQVRFICAgIFN0YXRlDQo+ICsgICAgKQ0KPiAr
ew0KPiArICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRvLCBTdGF0ZSk7DQo+ICt9DQo+ICsN
Cj4gK3N0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtfX1Bkb1Jlc3RvcmVEZXZpY2VQbnBTdGF0
ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sDQo+ICsgICAgSU4gIERFVklD
RV9QTlBfU1RBVEUgICAgU3RhdGUNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRFgg
ICAgICAgICAgICAgRHggPSBQZG8tPkR4Ow0KPiArDQo+ICsgICAgaWYgKER4LT5EZXZpY2VQbnBT
dGF0ZSA9PSBTdGF0ZSkNCj4gKyAgICAgICAgRHgtPkRldmljZVBucFN0YXRlID0gRHgtPlByZXZp
b3VzRGV2aWNlUG5wU3RhdGU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBERVZJ
Q0VfUE5QX1NUQVRFDQo+ICtfX1Bkb0dldERldmljZVBucFN0YXRlKA0KPiArICAgIElOICBQWEVO
Q09OU19QRE8gICAgUGRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0RYICAgICAg
ICAgRHggPSBQZG8tPkR4Ow0KPiArDQo+ICsgICAgcmV0dXJuIER4LT5EZXZpY2VQbnBTdGF0ZTsN
Cj4gK30NCj4gKw0KPiArREVWSUNFX1BOUF9TVEFURQ0KPiArUGRvR2V0RGV2aWNlUG5wU3RhdGUo
DQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAg
cmV0dXJuIF9fUGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKTsNCj4gK30NCj4gKw0KPiArc3RhdGlj
IEZPUkNFSU5MSU5FIFZPSUQNCj4gK19fUGRvU2V0U3lzdGVtUG93ZXJTdGF0ZSgNCj4gKyAgICBJ
TiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sDQo+ICsgICAgSU4gIFNZU1RFTV9QT1dFUl9TVEFU
RSAgU3RhdGUNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRFggICAgICAgICAgICAg
RHggPSBQZG8tPkR4Ow0KPiArDQo+ICsgICAgRHgtPlN5c3RlbVBvd2VyU3RhdGUgPSBTdGF0ZTsN
Cj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIFNZU1RFTV9QT1dFUl9TVEFURQ0KPiAr
X19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRv
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4
Ow0KPiArDQo+ICsgICAgcmV0dXJuIER4LT5TeXN0ZW1Qb3dlclN0YXRlOw0KPiArfQ0KPiArDQo+
ICtzdGF0aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiArX19QZG9TZXREZXZpY2VQb3dlclN0YXRlKA0K
PiArICAgIElOICBQWEVOQ09OU19QRE8gICAgICAgIFBkbywNCj4gKyAgICBJTiAgREVWSUNFX1BP
V0VSX1NUQVRFICBTdGF0ZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19EWCAgICAg
ICAgICAgICBEeCA9IFBkby0+RHg7DQo+ICsNCj4gKyAgICBEeC0+RGV2aWNlUG93ZXJTdGF0ZSA9
IFN0YXRlOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgREVWSUNFX1BPV0VSX1NU
QVRFDQo+ICtfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BE
TyAgICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9
IFBkby0+RHg7DQo+ICsNCj4gKyAgICByZXR1cm4gRHgtPkRldmljZVBvd2VyU3RhdGU7DQo+ICt9
DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+ICtfX1Bkb1NldE1pc3NpbmcoDQo+
ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIGNvbnN0IENIQVIgICAg
ICAqUmVhc29uDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBkby0+UmVhc29uID0gUmVhc29uOw0K
PiArICAgIFBkby0+TWlzc2luZyA9IFRSVUU7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK1Bkb1Nl
dE1pc3NpbmcoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIGNv
bnN0IENIQVIgICAgICAqUmVhc29uDQo+ICsgICAgKQ0KPiArew0KPiArICAgIF9fUGRvU2V0TWlz
c2luZyhQZG8sIFJlYXNvbik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBCT09M
RUFODQo+ICtfX1Bkb0lzTWlzc2luZygNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0K
PiArICAgICkNCj4gK3sNCj4gKyAgICByZXR1cm4gUGRvLT5NaXNzaW5nOw0KPiArfQ0KPiArDQo+
ICtCT09MRUFODQo+ICtQZG9Jc01pc3NpbmcoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIF9fUGRvSXNNaXNzaW5nKFBkbyk7DQo+
ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBQREVWSUNFX09CSkVDVA0KPiArX19QZG9H
ZXREZXZpY2VPYmplY3QoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICAp
DQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfRFggICAgICAgICBEeCA9IFBkby0+RHg7DQo+ICsNCj4g
KyAgICByZXR1cm4gKER4LT5EZXZpY2VPYmplY3QpOw0KPiArfQ0KPiArDQo+ICtQREVWSUNFX09C
SkVDVA0KPiArUGRvR2V0RGV2aWNlT2JqZWN0KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAg
UGRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiBfX1Bkb0dldERldmljZU9iamVjdChQ
ZG8pOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgUFhFTkNPTlNfRkRPDQo+ICtf
X1Bkb0dldEZkbygNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkNCj4g
K3sNCj4gKyAgICByZXR1cm4gUGRvLT5GZG87DQo+ICt9DQo+ICsNCj4gK1BYRU5DT05TX0ZETw0K
PiArUGRvR2V0RmRvKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+ICsgICAgKQ0K
PiArew0KPiArICAgIHJldHVybiBfX1Bkb0dldEZkbyhQZG8pOw0KPiArfQ0KPiArDQo+ICtzdGF0
aWMgRk9SQ0VJTkxJTkUgVk9JRA0KPiArX19QZG9TZXROYW1lKA0KPiArICAgIElOICBQWEVOQ09O
U19QRE8gICAgUGRvLA0KPiArICAgIElOICBQQU5TSV9TVFJJTkcgICAgRGV2aWNlDQo+ICsgICAg
KQ0KPiArew0KPiArICAgIFBYRU5DT05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4Ow0KPiArICAg
IE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgaWYgKERldmljZSA9PSBO
VUxMKQ0KPiArICAgICAgICBzdGF0dXMgPSBSdGxTdHJpbmdDYlByaW50ZkEoRHgtPk5hbWUsDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfREVWSUNFX0lEX0xFTiwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIik7DQo+ICsgICAgZWxz
ZQ0KPiArICAgICAgICBzdGF0dXMgPSBSdGxTdHJpbmdDYlByaW50ZkEoRHgtPk5hbWUsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfREVWSUNFX0lEX0xFTiwNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlWiIsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UpOw0KPiArICAgIEFTU0VSVChOVF9TVUND
RVNTKHN0YXR1cykpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgRk9SQ0VJTkxJTkUgUENIQVINCj4g
K19fUGRvR2V0TmFtZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkN
Cj4gK3sNCj4gKyAgICBQWEVOQ09OU19EWCAgICAgICAgIER4ID0gUGRvLT5EeDsNCj4gKw0KPiAr
ICAgIHJldHVybiBEeC0+TmFtZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIFBD
SEFSDQo+ICtfX1Bkb0dldFZlbmRvck5hbWUoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQ
ZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIEZkb0dldFZlbmRvck5hbWUoX19QZG9H
ZXRGZG8oUGRvKSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBCT09MRUFODQo+
ICtfX1Bkb1NldEVqZWN0UmVxdWVzdGVkKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRv
DQo+ICsgICAgKQ0KPiArew0KPiArICAgIHJldHVybiAoSW50ZXJsb2NrZWRCaXRUZXN0QW5kU2V0
KCZQZG8tPkVqZWN0LCAwKSA9PSAwKSA/IFRSVUUgOiBGQUxTRTsNCj4gK30NCj4gKw0KPiArVk9J
RA0KPiArUGRvUmVxdWVzdEVqZWN0KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+
ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4Ow0K
PiArICAgIFBERVZJQ0VfT0JKRUNUICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QgPSBEeC0+RGV2
aWNlT2JqZWN0Ow0KPiArICAgIFBYRU5DT05TX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRGZG8o
UGRvKTsNCj4gKw0KPiArICAgIGlmICghX19QZG9TZXRFamVjdFJlcXVlc3RlZChQZG8pKQ0KPiAr
ICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICBJbmZvKCIlcCAoJXMpXG4iLA0KPiArICAgICAg
ICAgUGh5c2ljYWxEZXZpY2VPYmplY3QsDQo+ICsgICAgICAgICBfX1Bkb0dldE5hbWUoUGRvKSk7
DQo+ICsNCj4gKyAgICBJb0ludmFsaWRhdGVEZXZpY2VSZWxhdGlvbnMoRmRvR2V0UGh5c2ljYWxE
ZXZpY2VPYmplY3QoRmRvKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVz
UmVsYXRpb25zKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIEJPT0xFQU4NCj4g
K19fUGRvQ2xlYXJFamVjdFJlcXVlc3RlZCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBk
bw0KPiArICAgICkNCj4gK3sNCj4gKyAgICByZXR1cm4gKEludGVybG9ja2VkQml0VGVzdEFuZFJl
c2V0KCZQZG8tPkVqZWN0LCAwKSAhPSAwKSA/IFRSVUUgOiBGQUxTRTsNCj4gK30NCj4gKw0KPiAr
c3RhdGljIEZPUkNFSU5MSU5FIEJPT0xFQU4NCj4gK19fUGRvSXNFamVjdFJlcXVlc3RlZCgNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBLZU1l
bW9yeUJhcnJpZXIoKTsNCj4gKyAgICByZXR1cm4gKFBkby0+RWplY3QgJiAxKSA/IFRSVUUgOiBG
QUxTRTsNCj4gK30NCj4gKw0KPiArQk9PTEVBTg0KPiArUGRvSXNFamVjdFJlcXVlc3RlZCgNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICByZXR1
cm4gX19QZG9Jc0VqZWN0UmVxdWVzdGVkKFBkbyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JD
RUlOTElORSBOVFNUQVRVUw0KPiArX19QZG9EM1RvRDAoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BE
TyAgICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dl
clN0YXRlOw0KPiArDQo+ICsgICAgVHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFtZShQ
ZG8pKTsNCj4gKw0KPiArICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBESVNQ
QVRDSF9MRVZFTCk7DQo+ICsgICAgQVNTRVJUM1UoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBk
byksID09ICwgUG93ZXJEZXZpY2VEMyk7DQo+ICsNCj4gKyAgICBfX1Bkb1NldERldmljZVBvd2Vy
U3RhdGUoUGRvLCBQb3dlckRldmljZUQwKTsNCj4gKw0KPiArICAgIFBvd2VyU3RhdGUuRGV2aWNl
U3RhdGUgPSBQb3dlckRldmljZUQwOw0KPiArICAgIFBvU2V0UG93ZXJTdGF0ZShfX1Bkb0dldERl
dmljZU9iamVjdChQZG8pLA0KPiArICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRl
LA0KPiArICAgICAgICAgICAgICAgICAgICBQb3dlclN0YXRlKTsNCj4gKw0KPiArICAgIFRyYWNl
KCIoJXMpIDw9PT09XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7DQo+ICsNCj4gKyAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBWT0lEDQo+
ICtfX1Bkb0QwVG9EMygNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkN
Cj4gK3sNCj4gKyAgICBQT1dFUl9TVEFURSAgICAgICAgIFBvd2VyU3RhdGU7DQo+ICsNCj4gKyAg
ICBUcmFjZSgiKCVzKSA9PT09PlxuIiwgX19QZG9HZXROYW1lKFBkbykpOw0KPiArDQo+ICsgICAg
QVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAsIERJU1BBVENIX0xFVkVMKTsNCj4gKyAg
ICBBU1NFUlQzVShfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSwgPT0gLCBQb3dlckRldmlj
ZUQwKTsNCj4gKw0KPiArICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBQb3dlckRldmljZUQz
Ow0KPiArICAgIFBvU2V0UG93ZXJTdGF0ZShfX1Bkb0dldERldmljZU9iamVjdChQZG8pLA0KPiAr
ICAgICAgICAgICAgICAgICAgICBEZXZpY2VQb3dlclN0YXRlLA0KPiArICAgICAgICAgICAgICAg
ICAgICBQb3dlclN0YXRlKTsNCj4gKw0KPiArICAgIF9fUGRvU2V0RGV2aWNlUG93ZXJTdGF0ZShQ
ZG8sIFBvd2VyRGV2aWNlRDMpOw0KPiArDQo+ICsgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9f
UGRvR2V0TmFtZShQZG8pKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IFZPSUQNCj4gK1Bkb1N1c3BlbmRDYWxsYmFja0xhdGUoDQo+ICsgICAgSU4gIFBWT0lEICAgICAg
ICAgICAgICAgQXJndW1lbnQNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFhFTkNPTlNfUERPICAg
ICAgICAgICAgUGRvID0gQXJndW1lbnQ7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICAgICAg
c3RhdHVzOw0KPiArDQo+ICsgICAgX19QZG9EMFRvRDMoUGRvKTsNCj4gKw0KPiArICAgIHN0YXR1
cyA9IF9fUGRvRDNUb0QwKFBkbyk7DQo+ICsgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7
DQo+ICt9DQo+ICsNCj4gKy8vIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgdG91Y2ggcGFnZWFibGUg
Y29kZSBvciBkYXRhDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bk
b0QzVG9EMCgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkNCj4gK3sN
Cj4gKyAgICBLSVJRTCAgICAgICAgICAgICAgIElycWw7DQo+ICsgICAgTlRTVEFUVVMgICAgICAg
ICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBUcmFjZSgiKCVzKSA9PT09PlxuIiwgX19QZG9HZXRO
YW1lKFBkbykpOw0KPiArDQo+ICsgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJxbCgpLCA9PSAs
IFBBU1NJVkVfTEVWRUwpOw0KPiArDQo+ICsgICAgS2VSYWlzZUlycWwoRElTUEFUQ0hfTEVWRUws
ICZJcnFsKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKEFjcXVpcmUsICZQ
ZG8tPlN1c3BlbmRJbnRlcmZhY2UpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0K
PiArICAgICAgICBnb3RvIGZhaWwxOw0KPiArDQo+ICsgICAgc3RhdHVzID0gX19QZG9EM1RvRDAo
UGRvKTsNCj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBm
YWlsMjsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFhFTkJVU19TVVNQRU5EKFJlZ2lzdGVyLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQZG8tPlN1c3BlbmRJbnRlcmZhY2UsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VTUEVORF9DQUxMQkFDS19MQVRFLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBkb1N1c3BlbmRDYWxsYmFja0xhdGUsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGRvLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZQZG8tPlN1c3BlbmRDYWxsYmFja0xhdGUpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhz
dGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwzOw0KPiArDQo+ICsgICAgS2VMb3dlcklycWwo
SXJxbCk7DQo+ICsNCj4gKyAgICBUcmFjZSgiKCVzKSA8PT09PVxuIiwgX19QZG9HZXROYW1lKFBk
bykpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtmYWlsMzoN
Cj4gKyAgICBFcnJvcigiZmFpbDNcbiIpOw0KPiArDQo+ICsgICAgX19QZG9EMFRvRDMoUGRvKTsN
Cj4gKw0KPiArZmFpbDI6DQo+ICsgICAgRXJyb3IoImZhaWwyXG4iKTsNCj4gKw0KPiArICAgIFhF
TkJVU19TVVNQRU5EKFJlbGVhc2UsICZQZG8tPlN1c3BlbmRJbnRlcmZhY2UpOw0KPiArDQo+ICtm
YWlsMToNCj4gKyAgICBFcnJvcigiZmFpbDEgKCUwOHgpXG4iLCBzdGF0dXMpOw0KPiArDQo+ICsg
ICAgS2VMb3dlcklycWwoSXJxbCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0K
PiArDQo+ICsvLyBUaGlzIGZ1bmN0aW9uIG11c3Qgbm90IHRvdWNoIHBhZ2VhYmxlIGNvZGUgb3Ig
ZGF0YQ0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIFZPSUQNCj4gK1Bkb0QwVG9EMygNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICkNCj4gK3sNCj4gKyAgICBLSVJR
TCAgICAgICAgICAgICAgIElycWw7DQo+ICsNCj4gKyAgICBUcmFjZSgiKCVzKSA9PT09PlxuIiwg
X19QZG9HZXROYW1lKFBkbykpOw0KPiArDQo+ICsgICAgQVNTRVJUM1UoS2VHZXRDdXJyZW50SXJx
bCgpLCA9PSAsIFBBU1NJVkVfTEVWRUwpOw0KPiArDQo+ICsgICAgS2VSYWlzZUlycWwoRElTUEFU
Q0hfTEVWRUwsICZJcnFsKTsNCj4gKw0KPiArICAgIFhFTkJVU19TVVNQRU5EKERlcmVnaXN0ZXIs
DQo+ICsgICAgICAgICAgICAgICAgICAgJlBkby0+U3VzcGVuZEludGVyZmFjZSwNCj4gKyAgICAg
ICAgICAgICAgICAgICBQZG8tPlN1c3BlbmRDYWxsYmFja0xhdGUpOw0KPiArICAgIFBkby0+U3Vz
cGVuZENhbGxiYWNrTGF0ZSA9IE5VTEw7DQo+ICsNCj4gKyAgICBfX1Bkb0QwVG9EMyhQZG8pOw0K
PiArDQo+ICsgICAgWEVOQlVTX1NVU1BFTkQoUmVsZWFzZSwgJlBkby0+U3VzcGVuZEludGVyZmFj
ZSk7DQo+ICsNCj4gKyAgICBLZUxvd2VySXJxbChJcnFsKTsNCj4gKw0KPiArICAgIFRyYWNlKCIo
JXMpIDw9PT09XG4iLCBfX1Bkb0dldE5hbWUoUGRvKSk7DQo+ICt9DQo+ICsNCj4gKy8vIFRoaXMg
ZnVuY3Rpb24gbXVzdCBub3QgdG91Y2ggcGFnZWFibGUgY29kZSBvciBkYXRhDQo+ICtzdGF0aWMg
REVDTFNQRUNfTk9JTkxJTkUgVk9JRA0KPiArUGRvUzRUb1MzKA0KPiArICAgIElOICBQWEVOQ09O
U19QRE8gICAgUGRvDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFRyYWNlKCIoJXMpID09PT0+XG4i
LCBfX1Bkb0dldE5hbWUoUGRvKSk7DQo+ICsNCj4gKyAgICBBU1NFUlQzVShLZUdldEN1cnJlbnRJ
cnFsKCksID09ICwgUEFTU0lWRV9MRVZFTCk7DQo+ICsgICAgQVNTRVJUM1UoX19QZG9HZXRTeXN0
ZW1Qb3dlclN0YXRlKFBkbyksID09ICwNCj4gUG93ZXJTeXN0ZW1IaWJlcm5hdGUpOw0KPiArDQo+
ICsgICAgX19QZG9TZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbywgUG93ZXJTeXN0ZW1TbGVlcGluZzMp
Ow0KPiArDQo+ICsgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsN
Cj4gK30NCj4gKw0KPiArLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCB0b3VjaCBwYWdlYWJsZSBj
b2RlIG9yIGRhdGENCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBWT0lEDQo+ICtQZG9TM1Rv
UzQoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApDQo+ICt7DQo+ICsg
ICAgVHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsNCj4gKw0KPiArICAg
IEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsNCj4gKyAg
ICBBU1NFUlQzVShfX1Bkb0dldFN5c3RlbVBvd2VyU3RhdGUoUGRvKSwgPT0gLA0KPiBQb3dlclN5
c3RlbVNsZWVwaW5nMyk7DQo+ICsNCj4gKyAgICBfX1Bkb1NldFN5c3RlbVBvd2VyU3RhdGUoUGRv
LCBQb3dlclN5c3RlbUhpYmVybmF0ZSk7DQo+ICsNCj4gKyAgICBUcmFjZSgiKCVzKSA8PT09PVxu
IiwgX19QZG9HZXROYW1lKFBkbykpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9J
TkxJTkUgTlRTVEFUVVMNCj4gK1Bkb1N0YXJ0RGV2aWNlKA0KPiArICAgIElOICBQWEVOQ09OU19Q
RE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiAr
ew0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgc3RhdHVz
ID0gUGRvRDNUb0QwKFBkbyk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQo+ICsg
ICAgICAgIGdvdG8gZmFpbDE7DQo+ICsNCj4gKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBk
bywgU3RhcnRlZCk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19T
VUNDRVNTOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsN
Cj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFpbDE6DQo+ICsg
ICAgRXJyb3IoImZhaWwxICglMDh4KVxuIiwgc3RhdHVzKTsNCj4gKw0KPiArICAgIElycC0+SW9T
dGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4g
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvUXVlcnlTdG9wRGV2aWNl
KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgc3Rh
dHVzOw0KPiArDQo+ICsgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIFN0b3BQZW5kaW5n
KTsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgIElycC0+SW9T
dGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9f
Tk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4g
K3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvQ2FuY2VsU3RvcERldmlj
ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAgICBJTiAgUElSUCAgICAg
ICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0
YXR1czsNCj4gKw0KPiArICAgIF9fUGRvUmVzdG9yZURldmljZVBucFN0YXRlKFBkbywgU3RvcFBl
bmRpbmcpOw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICsgICAgSXJw
LT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICsgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4g
Kw0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+ICtQZG9TdG9wRGV2aWNl
KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAg
ICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgc3Rh
dHVzOw0KPiArDQo+ICsgICAgaWYgKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pICE9IFBv
d2VyRGV2aWNlRDApDQo+ICsgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiArICAgIFBkb0QwVG9E
MyhQZG8pOw0KPiArDQo+ICtkb25lOg0KPiArICAgIF9fUGRvU2V0RGV2aWNlUG5wU3RhdGUoUGRv
LCBTdG9wcGVkKTsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAg
IElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0
KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9
DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvUXVlcnlS
ZW1vdmVEZXZpY2UoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAg
ICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywg
UmVtb3ZlUGVuZGluZyk7DQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4g
KyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0K
PiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0Nh
bmNlbFJlbW92ZURldmljZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAg
ICBJTiAgUElSUCAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRV
UyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIGlmIChfX1Bkb0NsZWFyRWplY3RSZXF1
ZXN0ZWQoUGRvKSkNCj4gKyAgICAgICAgVHJhY2UoIiglcykgRWplY3QgRmFpbGVkXG4iLCBfX1Bk
b0dldE5hbWUoUGRvKSk7DQo+ICsNCj4gKyAgICBfX1Bkb1Jlc3RvcmVEZXZpY2VQbnBTdGF0ZShQ
ZG8sIFJlbW92ZVBlbmRpbmcpOw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiAr
DQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICsgICAgSW9Db21wbGV0
ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1
czsNCj4gK30NCj4gKw0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+ICtQ
ZG9TdXJwcmlzZVJlbW92YWwoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsg
ICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgTlRTVEFU
VVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBXYXJuaW5nKCIlc1xuIiwgX19QZG9H
ZXROYW1lKFBkbykpOw0KPiArDQo+ICsgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIFN1
cnByaXNlUmVtb3ZlUGVuZGluZyk7DQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+
ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBs
ZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3Rh
dHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4g
K1Bkb1JlbW92ZURldmljZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAg
ICBJTiAgUElSUCAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09O
U19GRE8gICAgICAgIEZkbyA9IF9fUGRvR2V0RmRvKFBkbyk7DQo+ICsgICAgQk9PTEVBTiAgICAg
ICAgICAgICBOZWVkSW52YWxpZGF0ZTsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1
czsNCj4gKw0KPiArICAgIGlmIChfX1Bkb0dldERldmljZVBvd2VyU3RhdGUoUGRvKSAhPSBQb3dl
ckRldmljZUQwKQ0KPiArICAgICAgICBnb3RvIGRvbmU7DQo+ICsNCj4gKyAgICBQZG9EMFRvRDMo
UGRvKTsNCj4gKw0KPiArZG9uZToNCj4gKyAgICBOZWVkSW52YWxpZGF0ZSA9IEZBTFNFOw0KPiAr
DQo+ICsgICAgRmRvQWNxdWlyZU11dGV4KEZkbyk7DQo+ICsNCj4gKyAgICBpZiAoX19QZG9Jc01p
c3NpbmcoUGRvKSkgew0KPiArICAgICAgICBERVZJQ0VfUE5QX1NUQVRFICAgIFN0YXRlID0gX19Q
ZG9HZXREZXZpY2VQbnBTdGF0ZShQZG8pOw0KPiArDQo+ICsgICAgICAgIF9fUGRvU2V0RGV2aWNl
UG5wU3RhdGUoUGRvLCBEZWxldGVkKTsNCj4gKw0KPiArICAgICAgICBpZiAoU3RhdGUgPT0gU3Vy
cHJpc2VSZW1vdmVQZW5kaW5nKQ0KPiArICAgICAgICAgICAgUGRvRGVzdHJveShQZG8pOw0KPiAr
ICAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICBOZWVkSW52YWxpZGF0ZSA9IFRSVUU7DQo+ICsg
ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgX19QZG9TZXREZXZpY2VQbnBTdGF0ZShQZG8sIEVudW1l
cmF0ZWQpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIEZkb1JlbGVhc2VNdXRleChGZG8pOw0KPiAr
DQo+ICsgICAgaWYgKE5lZWRJbnZhbGlkYXRlKQ0KPiArICAgICAgICBJb0ludmFsaWRhdGVEZXZp
Y2VSZWxhdGlvbnMoRmRvR2V0UGh5c2ljYWxEZXZpY2VPYmplY3QoRmRvKSwNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1JlbGF0aW9ucyk7DQo+ICsNCj4gKyAgICBz
dGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVz
ID0gc3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5U
KTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNM
U1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvUXVlcnlEZXZpY2VSZWxhdGlvbnMoDQo+ICsg
ICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUElPX1NUQUNLX0xPQ0FUSU9OICBTdGFja0xvY2F0
aW9uOw0KPiArICAgIFBERVZJQ0VfUkVMQVRJT05TICAgUmVsYXRpb25zOw0KPiArICAgIE5UU1RB
VFVTICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0
Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IElycC0+
SW9TdGF0dXMuU3RhdHVzOw0KPiArDQo+ICsgICAgaWYgKFN0YWNrTG9jYXRpb24tPlBhcmFtZXRl
cnMuUXVlcnlEZXZpY2VSZWxhdGlvbnMuVHlwZSAhPQ0KPiBUYXJnZXREZXZpY2VSZWxhdGlvbikN
Cj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICsgICAgUmVsYXRpb25zID0gRXhBbGxvY2F0
ZVBvb2xXaXRoVGFnKFBhZ2VkUG9vbCwNCj4gc2l6ZW9mKERFVklDRV9SRUxBVElPTlMpLCBQRE9f
UE9PTCk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOw0KPiArICAgIGlm
IChSZWxhdGlvbnMgPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICsgICAg
UnRsWmVyb01lbW9yeShSZWxhdGlvbnMsIHNpemVvZihERVZJQ0VfUkVMQVRJT05TKSk7DQo+ICsN
Cj4gKyAgICBSZWxhdGlvbnMtPkNvdW50ID0gMTsNCj4gKyAgICBPYlJlZmVyZW5jZU9iamVjdChf
X1Bkb0dldERldmljZU9iamVjdChQZG8pKTsNCj4gKyAgICBSZWxhdGlvbnMtPk9iamVjdHNbMF0g
PSBfX1Bkb0dldERldmljZU9iamVjdChQZG8pOw0KPiArDQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5J
bmZvcm1hdGlvbiA9IChVTE9OR19QVFIpUmVsYXRpb25zOw0KPiArICAgIHN0YXR1cyA9IFNUQVRV
U19TVUNDRVNTOw0KPiArDQo+ICtkb25lOg0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
c3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsN
Cj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BF
Q19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvUXVlcnlDYXBhYmlsaXRpZXMoDQo+ICsgICAgSU4g
IFBYRU5DT05TX1BETyAgICAgICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgICAg
IElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQSU9fU1RBQ0tfTE9DQVRJT04gICAgICBTdGFj
a0xvY2F0aW9uOw0KPiArICAgIFBERVZJQ0VfQ0FQQUJJTElUSUVTICAgIENhcGFiaWxpdGllczsN
Cj4gKyAgICBTWVNURU1fUE9XRVJfU1RBVEUgICAgICBTeXN0ZW1Qb3dlclN0YXRlOw0KPiArICAg
IE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNF
RF9QQVJBTUVURVIoUGRvKTsNCj4gKw0KPiArICAgIFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJl
bnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+ICsgICAgQ2FwYWJpbGl0aWVzID0gU3RhY2tMb2Nh
dGlvbi0+UGFyYW1ldGVycy5EZXZpY2VDYXBhYmlsaXRpZXMuQ2FwYWJpbGl0aWVzOw0KPiArDQo+
ICsgICAgc3RhdHVzID0gU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIGlmIChDYXBh
YmlsaXRpZXMtPlZlcnNpb24gIT0gMSkNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArDQo+ICsg
ICAgQ2FwYWJpbGl0aWVzLT5EZXZpY2VEMSA9IDA7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5EZXZp
Y2VEMiA9IDA7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5Mb2NrU3VwcG9ydGVkID0gMDsNCj4gKyAg
ICBDYXBhYmlsaXRpZXMtPkVqZWN0U3VwcG9ydGVkID0gMTsNCj4gKyAgICBDYXBhYmlsaXRpZXMt
PlJlbW92YWJsZSA9IDE7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5Eb2NrRGV2aWNlID0gMDsNCj4g
KyAgICBDYXBhYmlsaXRpZXMtPlVuaXF1ZUlEID0gMTsNCj4gKyAgICBDYXBhYmlsaXRpZXMtPlNp
bGVudEluc3RhbGwgPSAxOw0KPiArICAgIENhcGFiaWxpdGllcy0+UmF3RGV2aWNlT0sgPSAxOw0K
PiArICAgIENhcGFiaWxpdGllcy0+U3VycHJpc2VSZW1vdmFsT0sgPSAxOw0KPiArICAgIENhcGFi
aWxpdGllcy0+SGFyZHdhcmVEaXNhYmxlZCA9IDA7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5Ob0Rp
c3BsYXlJblVJID0gMDsNCj4gKw0KPiArICAgIENhcGFiaWxpdGllcy0+QWRkcmVzcyA9IDB4ZmZm
ZmZmZmY7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5VSU51bWJlciA9IDB4ZmZmZmZmZmY7DQo+ICsN
Cj4gKyAgICBmb3IgKFN5c3RlbVBvd2VyU3RhdGUgPSAwOyBTeXN0ZW1Qb3dlclN0YXRlIDwNCj4g
UG93ZXJTeXN0ZW1NYXhpbXVtOyBTeXN0ZW1Qb3dlclN0YXRlKyspIHsNCj4gKyAgICAgICAgc3dp
dGNoIChTeXN0ZW1Qb3dlclN0YXRlKSB7DQo+ICsgICAgICAgIGNhc2UgUG93ZXJTeXN0ZW1VbnNw
ZWNpZmllZDoNCj4gKyAgICAgICAgY2FzZSBQb3dlclN5c3RlbVNsZWVwaW5nMToNCj4gKyAgICAg
ICAgY2FzZSBQb3dlclN5c3RlbVNsZWVwaW5nMjoNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiAr
DQo+ICsgICAgICAgIGNhc2UgUG93ZXJTeXN0ZW1Xb3JraW5nOg0KPiArICAgICAgICAgICAgQ2Fw
YWJpbGl0aWVzLT5EZXZpY2VTdGF0ZVtTeXN0ZW1Qb3dlclN0YXRlXSA9IFBvd2VyRGV2aWNlRDA7
DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICBkZWZhdWx0Og0KPiArICAg
ICAgICAgICAgQ2FwYWJpbGl0aWVzLT5EZXZpY2VTdGF0ZVtTeXN0ZW1Qb3dlclN0YXRlXSA9IFBv
d2VyRGV2aWNlRDM7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgfQ0KPiArICAg
IH0NCj4gKw0KPiArICAgIENhcGFiaWxpdGllcy0+U3lzdGVtV2FrZSA9IFBvd2VyU3lzdGVtVW5z
cGVjaWZpZWQ7DQo+ICsgICAgQ2FwYWJpbGl0aWVzLT5EZXZpY2VXYWtlID0gUG93ZXJEZXZpY2VV
bnNwZWNpZmllZDsNCj4gKyAgICBDYXBhYmlsaXRpZXMtPkQxTGF0ZW5jeSA9IDA7DQo+ICsgICAg
Q2FwYWJpbGl0aWVzLT5EMkxhdGVuY3kgPSAwOw0KPiArICAgIENhcGFiaWxpdGllcy0+RDNMYXRl
bmN5ID0gMDsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtk
b25lOg0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiArICAgIElvQ29t
cGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIHJldHVybiBz
dGF0dXM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0K
PiArUGRvUXVlcnlEZXZpY2VUZXh0KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0K
PiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJ
T19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAgICBQV0NIQVIgICAgICAgICAg
ICAgIEJ1ZmZlcjsNCj4gKyAgICBVTklDT0RFX1NUUklORyAgICAgIFRleHQ7DQo+ICsgICAgTlRT
VEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9H
ZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArDQo+ICsgICAgc3dpdGNoIChTdGFj
a0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlF1ZXJ5RGV2aWNlVGV4dC5EZXZpY2VUZXh0VHlwZSkgew0K
PiArICAgIGNhc2UgRGV2aWNlVGV4dERlc2NyaXB0aW9uOg0KPiArICAgICAgICBUcmFjZSgiRGV2
aWNlVGV4dERlc2NyaXB0aW9uXG4iKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBj
YXNlIERldmljZVRleHRMb2NhdGlvbkluZm9ybWF0aW9uOg0KPiArICAgICAgICBUcmFjZSgiRGV2
aWNlVGV4dExvY2F0aW9uSW5mb3JtYXRpb25cbiIpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0K
PiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIElycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAw
Ow0KPiArICAgICAgICBzdGF0dXMgPSBTVEFUVVNfTk9UX1NVUFBPUlRFRDsNCj4gKyAgICAgICAg
Z290byBkb25lOw0KPiArICAgIH0NCj4gKw0KPiArICAgIEJ1ZmZlciA9IEV4QWxsb2NhdGVQb29s
V2l0aFRhZyhQYWdlZFBvb2wsIE1BWFRFWFRMRU4sIFBET19QT09MKTsNCj4gKw0KPiArICAgIHN0
YXR1cyA9IFNUQVRVU19OT19NRU1PUlk7DQo+ICsgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKQ0KPiAr
ICAgICAgICBnb3RvIGRvbmU7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KEJ1ZmZlciwgTUFY
VEVYVExFTik7DQo+ICsNCj4gKyAgICBUZXh0LkJ1ZmZlciA9IEJ1ZmZlcjsNCj4gKyAgICBUZXh0
Lk1heGltdW1MZW5ndGggPSBNQVhURVhUTEVOOw0KPiArICAgIFRleHQuTGVuZ3RoID0gMDsNCj4g
Kw0KPiArICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5RdWVyeURldmljZVRl
eHQuRGV2aWNlVGV4dFR5cGUpIHsNCj4gKyAgICBjYXNlIERldmljZVRleHREZXNjcmlwdGlvbjoN
Cj4gKyAgICAgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZXKEJ1ZmZlciwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWFRFWFRMRU4sDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVocyBQViBDb25zb2xlICMlaHMiLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPRFVDVF9OQU1FX1NUUiwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUGRvR2V0TmFtZShQZG8pKTsNCj4g
KyAgICAgICAgQVNTRVJUKE5UX1NVQ0NFU1Moc3RhdHVzKSk7DQo+ICsNCj4gKyAgICAgICAgQnVm
ZmVyICs9IHdjc2xlbihCdWZmZXIpOw0KPiArDQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsg
ICAgY2FzZSBEZXZpY2VUZXh0TG9jYXRpb25JbmZvcm1hdGlvbjoNCj4gKyAgICAgICAgc3RhdHVz
ID0gUnRsU3RyaW5nQ2JQcmludGZXKEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1BWFRFWFRMRU4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMIiVocyIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X1Bkb0dldE5hbWUoUGRvKSk7DQo+ICsgICAgICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykp
Ow0KPiArDQo+ICsgICAgICAgIEJ1ZmZlciArPSB3Y3NsZW4oQnVmZmVyKTsNCj4gKw0KPiArICAg
ICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIEFTU0VSVChGQUxT
RSk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFRleHQuTGVuZ3Ro
ID0gKFVTSE9SVCkoKFVMT05HX1BUUilCdWZmZXIgLQ0KPiAoVUxPTkdfUFRSKVRleHQuQnVmZmVy
KTsNCj4gKw0KPiArICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZF
X0xFVkVMKTsNCj4gKw0KPiArICAgIFRyYWNlKCIlczogJXdaXG4iLCBfX1Bkb0dldE5hbWUoUGRv
KSwgJlRleHQpOw0KPiArDQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5JbmZvcm1hdGlvbiA9IChVTE9O
R19QVFIpVGV4dC5CdWZmZXI7DQo+ICsgICAgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsN
Cj4gK2RvbmU6DQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5TdGF0dXMgPSBzdGF0dXM7DQo+ICsgICAg
SW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1FTlQpOw0KPiArDQo+ICsgICAgcmV0
dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RB
VFVTDQo+ICtQZG9SZWFkQ29uZmlnKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0K
PiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFVO
UkVGRVJFTkNFRF9QQVJBTUVURVIoUGRvKTsNCj4gKw0KPiArICAgIElycC0+SW9TdGF0dXMuU3Rh
dHVzID0gU1RBVFVTX05PVF9TVVBQT1JURUQ7DQo+ICsgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJw
LCBJT19OT19JTkNSRU1FTlQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19OT1RfU1VQUE9S
VEVEOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4g
K1Bkb1dyaXRlQ29uZmlnKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAg
IElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFVOUkVGRVJF
TkNFRF9QQVJBTUVURVIoUGRvKTsNCj4gKw0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0g
U1RBVFVTX05PVF9TVVBQT1JURUQ7DQo+ICsgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19O
T19JTkNSRU1FTlQpOw0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRVU19OT1RfU1VQUE9SVEVEOw0K
PiArfQ0KPiArDQo+ICsjZGVmaW5lIFJFR1NUUl9WQUxfTUFYX0hDSURfTEVOIDEwMjQNCj4gKw0K
PiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+ICtQZG9RdWVyeUlkKA0KPiAr
ICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAg
SXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2Nh
dGlvbjsNCj4gKyAgICBQV0NIQVIgICAgICAgICAgICAgIEJ1ZmZlcjsNCj4gKyAgICBVTklDT0RF
X1NUUklORyAgICAgIElkOw0KPiArICAgIFVMT05HICAgICAgICAgICAgICAgVHlwZTsNCj4gKyAg
ICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFN0YWNrTG9jYXRpb24g
PSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+ICsNCj4gKyAgICBzd2l0Y2gg
KFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUXVlcnlJZC5JZFR5cGUpIHsNCj4gKyAgICBjYXNl
IEJ1c1F1ZXJ5SW5zdGFuY2VJRDoNCj4gKyAgICAgICAgVHJhY2UoIkJ1c1F1ZXJ5SW5zdGFuY2VJ
RFxuIik7DQo+ICsgICAgICAgIElkLk1heGltdW1MZW5ndGggPSAoVVNIT1JUKShzdHJsZW4oX19Q
ZG9HZXROYW1lKFBkbykpICsgMSkgKg0KPiBzaXplb2YoV0NIQVIpOw0KPiArICAgICAgICBicmVh
azsNCj4gKw0KPiArICAgIGNhc2UgQnVzUXVlcnlEZXZpY2VJRDoNCj4gKyAgICAgICAgVHJhY2Uo
IkJ1c1F1ZXJ5RGV2aWNlSURcbiIpOw0KPiArICAgICAgICBJZC5NYXhpbXVtTGVuZ3RoID0gKE1B
WF9ERVZJQ0VfSURfTEVOIC0gMikgKiBzaXplb2YoV0NIQVIpOw0KPiArICAgICAgICBicmVhazsN
Cj4gKw0KPiArICAgIGNhc2UgQnVzUXVlcnlIYXJkd2FyZUlEczoNCj4gKyAgICAgICAgVHJhY2Uo
IkJ1c1F1ZXJ5SGFyZHdhcmVJRHNcbiIpOw0KPiArICAgICAgICBJZC5NYXhpbXVtTGVuZ3RoID0g
KFVTSE9SVCkoTUFYX0RFVklDRV9JRF9MRU4gKg0KPiBzaXplb2YoV0NIQVIpKTsNCj4gKyAgICAg
ICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEJ1c1F1ZXJ5Q29tcGF0aWJsZUlEczoNCj4gKyAg
ICAgICAgVHJhY2UoIkJ1c1F1ZXJ5Q29tcGF0aWJsZUlEc1xuIik7DQo+ICsgICAgICAgIElkLk1h
eGltdW1MZW5ndGggPSAoVVNIT1JUKShNQVhfREVWSUNFX0lEX0xFTiAqDQo+IHNpemVvZihXQ0hB
UikpOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAg
IElycC0+SW9TdGF0dXMuSW5mb3JtYXRpb24gPSAwOw0KPiArICAgICAgICBzdGF0dXMgPSBTVEFU
VVNfTk9UX1NVUFBPUlRFRDsNCj4gKyAgICAgICAgZ290byBkb25lOw0KPiArICAgIH0NCj4gKw0K
PiArICAgIEJ1ZmZlciA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhQYWdlZFBvb2wsIElkLk1heGlt
dW1MZW5ndGgsDQo+IFBET19QT09MKTsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19OT19N
RU1PUlk7DQo+ICsgICAgaWYgKEJ1ZmZlciA9PSBOVUxMKQ0KPiArICAgICAgICBnb3RvIGRvbmU7
DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KEJ1ZmZlciwgSWQuTWF4aW11bUxlbmd0aCk7DQo+
ICsNCj4gKyAgICBJZC5CdWZmZXIgPSBCdWZmZXI7DQo+ICsgICAgSWQuTGVuZ3RoID0gMDsNCj4g
Kw0KPiArICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5RdWVyeUlkLklkVHlw
ZSkgew0KPiArICAgIGNhc2UgQnVzUXVlcnlJbnN0YW5jZUlEOg0KPiArICAgICAgICBUeXBlID0g
UkVHX1NaOw0KPiArDQo+ICsgICAgICAgIHN0YXR1cyA9IFJ0bFN0cmluZ0NiUHJpbnRmVyhCdWZm
ZXIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZC5NYXhpbXVtTGVu
Z3RoLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlaHMiLA0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9HZXROYW1lKFBkbykpOw0K
PiArICAgICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMpKTsNCj4gKw0KPiArICAgICAgICBC
dWZmZXIgKz0gd2NzbGVuKEJ1ZmZlcik7DQo+ICsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4g
KyAgICBjYXNlIEJ1c1F1ZXJ5RGV2aWNlSUQ6DQo+ICsgICAgICAgIFR5cGUgPSBSRUdfU1o7DQo+
ICsNCj4gKyAgICAgICAgc3RhdHVzID0gUnRsU3RyaW5nQ2JQcmludGZXKEJ1ZmZlciwNCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkLk1heGltdW1MZW5ndGgsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIlhFTkNPTlNcXFZFTl8laHMmREVW
X0NPTlNPTEUiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QZG9H
ZXRWZW5kb3JOYW1lKFBkbykpOw0KPiArICAgICAgICBBU1NFUlQoTlRfU1VDQ0VTUyhzdGF0dXMp
KTsNCj4gKw0KPiArICAgICAgICBCdWZmZXIgKz0gd2NzbGVuKEJ1ZmZlcik7DQo+ICsNCj4gKyAg
ICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIEJ1c1F1ZXJ5SGFyZHdhcmVJRHM6DQo+ICsg
ICAgY2FzZSBCdXNRdWVyeUNvbXBhdGlibGVJRHM6DQo+ICsgICAgew0KPiArICAgICAgICBVTE9O
RyAgIExlbmd0aDsNCj4gKw0KPiArICAgICAgICBUeXBlID0gUkVHX01VTFRJX1NaOw0KPiArDQo+
ICsgICAgICAgIExlbmd0aCA9IElkLk1heGltdW1MZW5ndGg7DQo+ICsNCj4gKyAgICAgICAgc3Rh
dHVzID0gUnRsU3RyaW5nQ2JQcmludGZXKEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEwiWEVOQ09OU1xcVkVOXyVocyZERVZfQ09OU09MRSIsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb0dldFZlbmRvck5hbWUoUGRvKSk7DQo+ICsgICAg
ICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOw0KPiArDQo+ICsgICAgICAgIEJ1ZmZlciAr
PSB3Y3NsZW4oQnVmZmVyKTsNCj4gKyAgICAgICAgTGVuZ3RoIC09IChVTE9ORykod2NzbGVuKEJ1
ZmZlcikgKiBzaXplb2YoV0NIQVIpKTsNCj4gKw0KPiArICAgICAgICBCdWZmZXIrKzsNCj4gKyAg
ICAgICAgTGVuZ3RoIC09IHNpemVvZihXQ0hBUik7DQo+ICsNCj4gKyAgICAgICAgc3RhdHVzID0g
UnRsU3RyaW5nQ2JQcmludGZXKEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEwiWEVOREVWSUNFIik7DQo+ICsgICAgICAgIEFTU0VSVChOVF9TVUNDRVNTKHN0YXR1cykpOw0K
PiArDQo+ICsgICAgICAgIEJ1ZmZlciArPSB3Y3NsZW4oQnVmZmVyKTsNCj4gKyAgICAgICAgQnVm
ZmVyKys7DQo+ICsNCj4gKyAgICAgICAgQVNTRVJUM1UoKFVMT05HX1BUUilCdWZmZXIgLSAoVUxP
TkdfUFRSKUlkLkJ1ZmZlciwgPCwNCj4gKyAgICAgICAgICAgICAgICAgUkVHU1RSX1ZBTF9NQVhf
SENJRF9MRU4pOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgICAgZGVmYXVsdDoN
Cj4gKyAgICAgICAgVHlwZSA9IFJFR19OT05FOw0KPiArDQo+ICsgICAgICAgIEFTU0VSVChGQUxT
RSk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIEFTU0VSVDNVKEtl
R2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZFX0xFVkVMKTsNCj4gKw0KPiArICAgIElkLkxl
bmd0aCA9IChVU0hPUlQpKChVTE9OR19QVFIpQnVmZmVyIC0gKFVMT05HX1BUUilJZC5CdWZmZXIp
Ow0KPiArICAgIEJ1ZmZlciA9IElkLkJ1ZmZlcjsNCj4gKw0KPiArICAgIHN3aXRjaCAoVHlwZSkg
ew0KPiArICAgIGNhc2UgUkVHX1NaOg0KPiArICAgICAgICBUcmFjZSgiLSAld3NcbiIsIEJ1ZmZl
cik7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2FzZSBSRUdfTVVMVElfU1o6DQo+
ICsgICAgICAgIGRvIHsNCj4gKyAgICAgICAgICAgIFRyYWNlKCItICV3c1xuIiwgQnVmZmVyKTsN
Cj4gKyAgICAgICAgICAgIEJ1ZmZlciArPSB3Y3NsZW4oQnVmZmVyKTsNCj4gKyAgICAgICAgICAg
IEJ1ZmZlcisrOw0KPiArICAgICAgICB9IHdoaWxlICgqQnVmZmVyICE9IEwnXDAnKTsNCj4gKyAg
ICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgICBBU1NFUlQoRkFM
U0UpOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBJcnAtPklvU3Rh
dHVzLkluZm9ybWF0aW9uID0gKFVMT05HX1BUUilJZC5CdWZmZXI7DQo+ICsgICAgc3RhdHVzID0g
U1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gK2RvbmU6DQo+ICsgICAgSXJwLT5Jb1N0YXR1cy5TdGF0
dXMgPSBzdGF0dXM7DQo+ICsgICAgSW9Db21wbGV0ZVJlcXVlc3QoSXJwLCBJT19OT19JTkNSRU1F
TlQpOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIERF
Q0xTUEVDX05PSU5MSU5FIE5UU1RBVFVTDQo+ICtQZG9RdWVyeUJ1c0luZm9ybWF0aW9uKA0KPiAr
ICAgIElOICBQWEVOQ09OU19QRE8gICAgICAgIFBkbywNCj4gKyAgICBJTiAgUElSUCAgICAgICAg
ICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUFBOUF9CVVNfSU5GT1JNQVRJT04g
ICAgSW5mbzsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4g
KyAgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKFBkbyk7DQo+ICsNCj4gKyAgICBJbmZvID0gRXhB
bGxvY2F0ZVBvb2xXaXRoVGFnKFBhZ2VkUG9vbCwNCj4gc2l6ZW9mKFBOUF9CVVNfSU5GT1JNQVRJ
T04pLCBQRE9fUE9PTCk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOw0K
PiArICAgIGlmIChJbmZvID09IE5VTEwpDQo+ICsgICAgICAgIGdvdG8gZG9uZTsNCj4gKw0KPiAr
ICAgIFJ0bFplcm9NZW1vcnkoSW5mbywgc2l6ZW9mKFBOUF9CVVNfSU5GT1JNQVRJT04pKTsNCj4g
Kw0KPiArICAgIEluZm8tPkJ1c1R5cGVHdWlkID0gR1VJRF9CVVNfVFlQRV9JTlRFUk5BTDsNCj4g
KyAgICBJbmZvLT5MZWdhY3lCdXNUeXBlID0gUE5QQnVzOw0KPiArICAgIEluZm8tPkJ1c051bWJl
ciA9IDA7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLkluZm9ybWF0aW9uID0gKFVMT05HX1BU
UilJbmZvOw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArDQo+ICtkb25lOg0K
PiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gc3RhdHVzOw0KPiArICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIHJldHVybiBzdGF0dXM7
DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiArUGRvRGVsZWdhdGVJcnAoDQo+ICsg
ICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJ
cnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgcmV0dXJuIEZkb0RlbGVnYXRlSXJwKF9fUGRvR2V0
RmRvKFBkbyksIElycCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBO
VFNUQVRVUw0KPiArUGRvRGV2aWNlVXNhZ2VOb3RpZmljYXRpb24oDQo+ICsgICAgSU4gIFBYRU5D
T05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICAp
DQo+ICt7DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBz
dGF0dXMgPSBQZG9EZWxlZ2F0ZUlycChQZG8sIElycCk7DQo+ICsNCj4gKyAgICBJcnAtPklvU3Rh
dHVzLlN0YXR1cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05P
X0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0VqZWN0KA0KPiArICAgIElO
ICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+
ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRG
ZG8oUGRvKTsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAg
IFRyYWNlKCIlc1xuIiwgX19QZG9HZXROYW1lKFBkbykpOw0KPiArDQo+ICsgICAgRmRvQWNxdWly
ZU11dGV4KEZkbyk7DQo+ICsNCj4gKyAgICBfX1Bkb1NldERldmljZVBucFN0YXRlKFBkbywgRGVs
ZXRlZCk7DQo+ICsgICAgX19QZG9TZXRNaXNzaW5nKFBkbywgImRldmljZSBlamVjdGVkIik7DQo+
ICsNCj4gKyAgICBGZG9SZWxlYXNlTXV0ZXgoRmRvKTsNCj4gKw0KPiArICAgIElvSW52YWxpZGF0
ZURldmljZVJlbGF0aW9ucyhGZG9HZXRQaHlzaWNhbERldmljZU9iamVjdChGZG8pLA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNSZWxhdGlvbnMpOw0KPiArDQo+ICsgICAg
c3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1
cyA9IHN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVO
VCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVD
TFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0Rpc3BhdGNoUG5wKA0KPiArICAgIElOICBQ
WEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsg
ICAgKQ0KPiArew0KPiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4g
KyAgICBVQ0hBUiAgICAgICAgICAgICAgIE1pbm9yRnVuY3Rpb247DQo+ICsgICAgTlRTVEFUVVMg
ICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRDdXJy
ZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAgIE1pbm9yRnVuY3Rpb24gPSBTdGFja0xv
Y2F0aW9uLT5NaW5vckZ1bmN0aW9uOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+ICglcykgKCUw
Mng6JXMpXG4iLA0KPiArICAgICAgICAgIF9fUGRvR2V0TmFtZShQZG8pLA0KPiArICAgICAgICAg
IE1pbm9yRnVuY3Rpb24sDQo+ICsgICAgICAgICAgUG5wTWlub3JGdW5jdGlvbk5hbWUoTWlub3JG
dW5jdGlvbikpOw0KPiArDQo+ICsgICAgc3dpdGNoIChTdGFja0xvY2F0aW9uLT5NaW5vckZ1bmN0
aW9uKSB7DQo+ICsgICAgY2FzZSBJUlBfTU5fU1RBUlRfREVWSUNFOg0KPiArICAgICAgICBzdGF0
dXMgPSBQZG9TdGFydERldmljZShQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+
ICsgICAgY2FzZSBJUlBfTU5fUVVFUllfU1RPUF9ERVZJQ0U6DQo+ICsgICAgICAgIHN0YXR1cyA9
IFBkb1F1ZXJ5U3RvcERldmljZShQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+
ICsgICAgY2FzZSBJUlBfTU5fQ0FOQ0VMX1NUT1BfREVWSUNFOg0KPiArICAgICAgICBzdGF0dXMg
PSBQZG9DYW5jZWxTdG9wRGV2aWNlKFBkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsN
Cj4gKyAgICBjYXNlIElSUF9NTl9TVE9QX0RFVklDRToNCj4gKyAgICAgICAgc3RhdHVzID0gUGRv
U3RvcERldmljZShQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgY2Fz
ZSBJUlBfTU5fUVVFUllfUkVNT1ZFX0RFVklDRToNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvUXVl
cnlSZW1vdmVEZXZpY2UoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
IGNhc2UgSVJQX01OX0NBTkNFTF9SRU1PVkVfREVWSUNFOg0KPiArICAgICAgICBzdGF0dXMgPSBQ
ZG9DYW5jZWxSZW1vdmVEZXZpY2UoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0K
PiArICAgIGNhc2UgSVJQX01OX1NVUlBSSVNFX1JFTU9WQUw6DQo+ICsgICAgICAgIHN0YXR1cyA9
IFBkb1N1cnByaXNlUmVtb3ZhbChQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+
ICsgICAgY2FzZSBJUlBfTU5fUkVNT1ZFX0RFVklDRToNCj4gKyAgICAgICAgc3RhdHVzID0gUGRv
UmVtb3ZlRGV2aWNlKFBkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBj
YXNlIElSUF9NTl9RVUVSWV9ERVZJQ0VfUkVMQVRJT05TOg0KPiArICAgICAgICBzdGF0dXMgPSBQ
ZG9RdWVyeURldmljZVJlbGF0aW9ucyhQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiAr
DQo+ICsgICAgY2FzZSBJUlBfTU5fUVVFUllfQ0FQQUJJTElUSUVTOg0KPiArICAgICAgICBzdGF0
dXMgPSBQZG9RdWVyeUNhcGFiaWxpdGllcyhQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0K
PiArDQo+ICsgICAgY2FzZSBJUlBfTU5fUVVFUllfREVWSUNFX1RFWFQ6DQo+ICsgICAgICAgIHN0
YXR1cyA9IFBkb1F1ZXJ5RGV2aWNlVGV4dChQZG8sIElycCk7DQo+ICsgICAgICAgIGJyZWFrOw0K
PiArDQo+ICsgICAgY2FzZSBJUlBfTU5fUkVBRF9DT05GSUc6DQo+ICsgICAgICAgIHN0YXR1cyA9
IFBkb1JlYWRDb25maWcoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
IGNhc2UgSVJQX01OX1dSSVRFX0NPTkZJRzoNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvV3JpdGVD
b25maWcoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgSVJQ
X01OX1FVRVJZX0lEOg0KPiArICAgICAgICBzdGF0dXMgPSBQZG9RdWVyeUlkKFBkbywgSXJwKTsN
Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIElSUF9NTl9RVUVSWV9CVVNfSU5G
T1JNQVRJT046DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb1F1ZXJ5QnVzSW5mb3JtYXRpb24oUGRv
LCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgSVJQX01OX0RFVklD
RV9VU0FHRV9OT1RJRklDQVRJT046DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb0RldmljZVVzYWdl
Tm90aWZpY2F0aW9uKFBkbywgSXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBj
YXNlIElSUF9NTl9FSkVDVDoNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvRWplY3QoUGRvLCBJcnAp
Ow0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIHN0
YXR1cyA9IElycC0+SW9TdGF0dXMuU3RhdHVzOw0KPiArICAgICAgICBJb0NvbXBsZXRlUmVxdWVz
dChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4g
Kw0KPiArICAgIFRyYWNlKCI8PT09PSAoJTAyeDolcykoJTA4eClcbiIsDQo+ICsgICAgICAgICAg
TWlub3JGdW5jdGlvbiwNCj4gKyAgICAgICAgICBQbnBNaW5vckZ1bmN0aW9uTmFtZShNaW5vckZ1
bmN0aW9uKSwNCj4gKyAgICAgICAgICBzdGF0dXMpOw0KPiArDQo+ICsgICAgcmV0dXJuIHN0YXR1
czsNCj4gK30NCj4gKw0KPiArc3RhdGljIEZPUkNFSU5MSU5FIE5UU1RBVFVTDQo+ICtfX1Bkb1Nl
dERldmljZVBvd2VyKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiArICAgIElO
ICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJT19TVEFDS19M
T0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIERldmlj
ZVN0YXRlOw0KPiArICAgIFBPV0VSX0FDVElPTiAgICAgICAgUG93ZXJBY3Rpb247DQo+ICsgICAg
TlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0g
SW9HZXRDdXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAgIERldmljZVN0YXRlID0g
U3RhY2tMb2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5EZXZpY2VTdGF0ZTsNCj4gKyAg
ICBQb3dlckFjdGlvbiA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU2h1dGRvd25U
eXBlOw0KPiArDQo+ICsgICAgVHJhY2UoIj09PT0+ICglcykgKCVzOiVzKVxuIiwNCj4gKyAgICAg
ICAgICBfX1Bkb0dldE5hbWUoUGRvKSwNCj4gKyAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFt
ZShEZXZpY2VTdGF0ZSksDQo+ICsgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9u
KSk7DQo+ICsNCj4gKyAgICBBU1NFUlQzVShQb3dlckFjdGlvbiwgPCwgUG93ZXJBY3Rpb25TaHV0
ZG93bik7DQo+ICsNCj4gKyAgICBpZiAoX19QZG9HZXREZXZpY2VQb3dlclN0YXRlKFBkbykgPiBE
ZXZpY2VTdGF0ZSkgew0KPiArICAgICAgICBUcmFjZSgiJXM6IFBPV0VSSU5HIFVQOiAlcyAtPiAl
c1xuIiwNCj4gKyAgICAgICAgICAgICAgX19QZG9HZXROYW1lKFBkbyksDQo+ICsgICAgICAgICAg
ICAgIFBvd2VyRGV2aWNlU3RhdGVOYW1lKF9fUGRvR2V0RGV2aWNlUG93ZXJTdGF0ZShQZG8pKSwN
Cj4gKyAgICAgICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsNCj4g
Kw0KPiArICAgICAgICBBU1NFUlQzVShEZXZpY2VTdGF0ZSwgPT0gLCBQb3dlckRldmljZUQwKTsN
Cj4gKyAgICAgICAgc3RhdHVzID0gUGRvRDNUb0QwKFBkbyk7DQo+ICsgICAgICAgIEFTU0VSVChO
VF9TVUNDRVNTKHN0YXR1cykpOw0KPiArICAgIH0gZWxzZSBpZiAoX19QZG9HZXREZXZpY2VQb3dl
clN0YXRlKFBkbykgPCBEZXZpY2VTdGF0ZSkgew0KPiArICAgICAgICBUcmFjZSgiJXM6IFBPV0VS
SU5HIERPV046ICVzIC0+ICVzXG4iLA0KPiArICAgICAgICAgICAgICBfX1Bkb0dldE5hbWUoUGRv
KSwNCj4gKyAgICAgICAgICAgICAgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoX19QZG9HZXREZXZpY2VQ
b3dlclN0YXRlKFBkbykpLA0KPiArICAgICAgICAgICAgICBQb3dlckRldmljZVN0YXRlTmFtZShE
ZXZpY2VTdGF0ZSkpOw0KPiArDQo+ICsgICAgICAgIEFTU0VSVDNVKERldmljZVN0YXRlLCA9PSAs
IFBvd2VyRGV2aWNlRDMpOw0KPiArICAgICAgICBQZG9EMFRvRDMoUGRvKTsNCj4gKyAgICB9DQo+
ICsNCj4gKyAgICBJcnAtPklvU3RhdHVzLlN0YXR1cyA9IFNUQVRVU19TVUNDRVNTOw0KPiArICAg
IElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgIFRy
YWNlKCI8PT09PSAoJXM6JXMpXG4iLA0KPiArICAgICAgICAgIFBvd2VyRGV2aWNlU3RhdGVOYW1l
KERldmljZVN0YXRlKSwNCj4gKyAgICAgICAgICBQb3dlckFjdGlvbk5hbWUoUG93ZXJBY3Rpb24p
KTsNCj4gKw0KPiArICAgIHJldHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArc3Rh
dGljIE5UU1RBVFVTDQo+ICtQZG9EZXZpY2VQb3dlcigNCj4gKyAgICBJTiAgUFhFTkNPTlNfVEhS
RUFEIFNlbGYsDQo+ICsgICAgSU4gIFBWT0lEICAgICAgICAgICBDb250ZXh0DQo+ICsgICAgKQ0K
PiArew0KPiArICAgIFBYRU5DT05TX1BETyAgICAgICAgUGRvID0gQ29udGV4dDsNCj4gKyAgICBQ
S0VWRU5UICAgICAgICAgICAgIEV2ZW50Ow0KPiArDQo+ICsgICAgRXZlbnQgPSBUaHJlYWRHZXRF
dmVudChTZWxmKTsNCj4gKw0KPiArICAgIGZvciAoOzspIHsNCj4gKyAgICAgICAgUElSUCAgICBJ
cnA7DQo+ICsNCj4gKyAgICAgICAgaWYgKFBkby0+RGV2aWNlUG93ZXJJcnAgPT0gTlVMTCkgew0K
PiArICAgICAgICAgICAgKFZPSUQpS2VXYWl0Rm9yU2luZ2xlT2JqZWN0KEV2ZW50LA0KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGl2ZSwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWxNb2RlLA0KPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPiArICAgICAgICAgICAgS2VDbGVh
ckV2ZW50KEV2ZW50KTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIGlmIChUaHJlYWRJ
c0FsZXJ0ZWQoU2VsZikpDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICBJ
cnAgPSBQZG8tPkRldmljZVBvd2VySXJwOw0KPiArDQo+ICsgICAgICAgIGlmIChJcnAgPT0gTlVM
TCkNCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgIFBkby0+RGV2aWNl
UG93ZXJJcnAgPSBOVUxMOw0KPiArICAgICAgICBLZU1lbW9yeUJhcnJpZXIoKTsNCj4gKw0KPiAr
ICAgICAgICAoVk9JRClfX1Bkb1NldERldmljZVBvd2VyKFBkbywgSXJwKTsNCj4gKyAgICB9DQo+
ICsNCj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK19fZHJ2X2Z1
bmN0aW9uQ2xhc3MoUkVRVUVTVF9QT1dFUl9DT01QTEVURSkNCj4gK19fZHJ2X3NhbWVJUlFMDQo+
ICtWT0lEDQo+ICtfX1Bkb1JlcXVlc3RTZXREZXZpY2VQb3dlcigNCj4gKyAgICBJTiAgUERFVklD
RV9PQkpFQ1QgICAgICBEZXZpY2VPYmplY3QsDQo+ICsgICAgSU4gIFVDSEFSICAgICAgICAgICAg
ICAgTWlub3JGdW5jdGlvbiwNCj4gKyAgICBJTiAgUE9XRVJfU1RBVEUgICAgICAgICBQb3dlclN0
YXRlLA0KPiArICAgIElOICBQVk9JRCAgICAgICAgICAgICAgIENvbnRleHQsDQo+ICsgICAgSU4g
IFBJT19TVEFUVVNfQkxPQ0sgICAgSW9TdGF0dXMNCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUEtF
VkVOVCAgICAgICAgICAgICAgICAgRXZlbnQgPSBDb250ZXh0Ow0KPiArDQo+ICsgICAgVU5SRUZF
UkVOQ0VEX1BBUkFNRVRFUihEZXZpY2VPYmplY3QpOw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJB
TUVURVIoTWlub3JGdW5jdGlvbik7DQo+ICsgICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihQb3dl
clN0YXRlKTsNCj4gKw0KPiArICAgIEFTU0VSVChOVF9TVUNDRVNTKElvU3RhdHVzLT5TdGF0dXMp
KTsNCj4gKw0KPiArICAgIEtlU2V0RXZlbnQoRXZlbnQsIElPX05PX0lOQ1JFTUVOVCwgRkFMU0Up
Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgVk9JRA0KPiArUGRvUmVxdWVzdFNldERldmljZVBvd2Vy
KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgICAgIFBkbywNCj4gKyAgICBJTiAgREVWSUNF
X1BPV0VSX1NUQVRFICBEZXZpY2VTdGF0ZQ0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQT1dFUl9T
VEFURSAgICAgICAgICAgICBQb3dlclN0YXRlOw0KPiArICAgIEtFVkVOVCAgICAgICAgICAgICAg
ICAgIEV2ZW50Ow0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgICAgIHN0YXR1czsNCj4gKw0K
PiArICAgIFRyYWNlKCIlc1xuIiwgUG93ZXJEZXZpY2VTdGF0ZU5hbWUoRGV2aWNlU3RhdGUpKTsN
Cj4gKw0KPiArICAgIEFTU0VSVDNVKEtlR2V0Q3VycmVudElycWwoKSwgPT0gLCBQQVNTSVZFX0xF
VkVMKTsNCj4gKw0KPiArICAgIFBvd2VyU3RhdGUuRGV2aWNlU3RhdGUgPSBEZXZpY2VTdGF0ZTsN
Cj4gKyAgICBLZUluaXRpYWxpemVFdmVudCgmRXZlbnQsIE5vdGlmaWNhdGlvbkV2ZW50LCBGQUxT
RSk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBQb1JlcXVlc3RQb3dlcklycChfX1Bkb0dldERldmlj
ZU9iamVjdChQZG8pLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUF9NTl9T
RVRfUE9XRVIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG93ZXJTdGF0ZSwN
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1Bkb1JlcXVlc3RTZXREZXZpY2VQ
b3dlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmRXZlbnQsDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICsgICAgQVNTRVJUKE5UX1NVQ0NF
U1Moc3RhdHVzKSk7DQo+ICsNCj4gKyAgICAoVk9JRClLZVdhaXRGb3JTaW5nbGVPYmplY3QoJkV2
ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpdmUsDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbE1vZGUsDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMKTsNCj4gK30NCj4gKw0KPiArLy8gRGVmaW5lIGEgc3RhdGljIFN5c3RlbVBv
d2VyIHRvIERldmljZVBvd2VyIG1hcA0KPiArLy8gVGhpcyB3b3VsZCBub3JtYWxseSBiZSBxdWVy
aWVkIGZyb20gdGhlIHBvd2VyIHBvbGljeSBvd25lciwNCj4gKy8vIGJ1dCBzaW5jZSB0aGlzIFBk
byBpcyAicmF3IiwgdGhlIFBkbyBpcyB0aGUgcG93ZXIgcG9saWN5IG93bmVyDQo+ICtzdGF0aWMg
Y29uc3QgREVWSUNFX1BPV0VSX1NUQVRFDQo+ICtEZXZpY2VQb3dlclN0YXRlTWFwW1Bvd2VyU3lz
dGVtTWF4aW11bV0gPQ0KPiArew0KPiArICAgIFBvd2VyRGV2aWNlVW5zcGVjaWZpZWQsIC8vIFBv
d2VyU3lzdGVtVW5zcGVjaWZpZWQNCj4gKyAgICBQb3dlckRldmljZUQwLCAgICAgICAgICAvLyBQ
b3dlclN5c3RlbVdvcmtpbmcNCj4gKyAgICBQb3dlckRldmljZUQzLCAgICAgICAgICAvLyBQb3dl
clN5c3RlbVNsZWVwaW5nMQ0KPiArICAgIFBvd2VyRGV2aWNlRDMsICAgICAgICAgIC8vIFBvd2Vy
U3lzdGVtU2xlZXBpbmcyDQo+ICsgICAgUG93ZXJEZXZpY2VEMywgICAgICAgICAgLy8gUG93ZXJT
eXN0ZW1TbGVlcGluZzMNCj4gKyAgICBQb3dlckRldmljZUQzLCAgICAgICAgICAvLyBQb3dlclN5
c3RlbUhpYmVybmF0ZQ0KPiArICAgIFBvd2VyRGV2aWNlRDMgICAgICAgICAgIC8vIFBvd2VyU3lz
dGVtU2h1dGRvd24NCj4gK307DQo+ICsNCj4gK3N0YXRpYyBGT1JDRUlOTElORSBOVFNUQVRVUw0K
PiArX19QZG9TZXRTeXN0ZW1Qb3dlcigNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQ
ZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0K
PiArICAgIFBJT19TVEFDS19MT0NBVElPTiAgICAgIFN0YWNrTG9jYXRpb247DQo+ICsgICAgU1lT
VEVNX1BPV0VSX1NUQVRFICAgICAgU3lzdGVtU3RhdGU7DQo+ICsgICAgUE9XRVJfQUNUSU9OICAg
ICAgICAgICAgUG93ZXJBY3Rpb247DQo+ICsNCj4gKyAgICBTdGFja0xvY2F0aW9uID0gSW9HZXRD
dXJyZW50SXJwU3RhY2tMb2NhdGlvbihJcnApOw0KPiArICAgIFN5c3RlbVN0YXRlID0gU3RhY2tM
b2NhdGlvbi0+UGFyYW1ldGVycy5Qb3dlci5TdGF0ZS5TeXN0ZW1TdGF0ZTsNCj4gKyAgICBQb3dl
ckFjdGlvbiA9IFN0YWNrTG9jYXRpb24tPlBhcmFtZXRlcnMuUG93ZXIuU2h1dGRvd25UeXBlOw0K
PiArDQo+ICsgICAgVHJhY2UoIj09PT0+ICglcykgKCVzOiVzKVxuIiwNCj4gKyAgICAgICAgICBf
X1Bkb0dldE5hbWUoUGRvKSwNCj4gKyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0
ZW1TdGF0ZSksDQo+ICsgICAgICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7DQo+
ICsNCj4gKyAgICBBU1NFUlQzVShQb3dlckFjdGlvbiwgPCwgUG93ZXJBY3Rpb25TaHV0ZG93bik7
DQo+ICsNCj4gKyAgICBpZiAoX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykgPiBTeXN0ZW1T
dGF0ZSkgew0KPiArICAgICAgICBpZiAoU3lzdGVtU3RhdGUgPCBQb3dlclN5c3RlbUhpYmVybmF0
ZSAmJg0KPiArICAgICAgICAgICAgX19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykgPj0gUG93
ZXJTeXN0ZW1IaWJlcm5hdGUpIHsNCj4gKyAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJT
dGF0ZShQZG8sIFBvd2VyU3lzdGVtSGliZXJuYXRlKTsNCj4gKyAgICAgICAgICAgIFBkb1M0VG9T
MyhQZG8pOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgVHJhY2UoIiVzOiBQT1dFUklO
RyBVUDogJXMgLT4gJXNcbiIsDQo+ICsgICAgICAgICAgICAgIF9fUGRvR2V0TmFtZShQZG8pLA0K
PiArICAgICAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShfX1Bkb0dldFN5c3RlbVBvd2Vy
U3RhdGUoUGRvKSksDQo+ICsgICAgICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKFN5c3Rl
bVN0YXRlKSk7DQo+ICsNCj4gKyAgICAgICAgUGRvUmVxdWVzdFNldERldmljZVBvd2VyKFBkbywN
Cj4gRGV2aWNlUG93ZXJTdGF0ZU1hcFtTeXN0ZW1TdGF0ZV0pOw0KPiArICAgIH0gZWxzZSBpZiAo
X19QZG9HZXRTeXN0ZW1Qb3dlclN0YXRlKFBkbykgPCBTeXN0ZW1TdGF0ZSkgew0KPiArICAgICAg
ICBQZG9SZXF1ZXN0U2V0RGV2aWNlUG93ZXIoUGRvLA0KPiBEZXZpY2VQb3dlclN0YXRlTWFwW1N5
c3RlbVN0YXRlXSk7DQo+ICsNCj4gKyAgICAgICAgVHJhY2UoIiVzOiBQT1dFUklORyBET1dOOiAl
cyAtPiAlc1xuIiwNCj4gKyAgICAgICAgICAgICAgX19QZG9HZXROYW1lKFBkbyksDQo+ICsgICAg
ICAgICAgICAgIFBvd2VyU3lzdGVtU3RhdGVOYW1lKF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQ
ZG8pKSwNCj4gKyAgICAgICAgICAgICAgUG93ZXJTeXN0ZW1TdGF0ZU5hbWUoU3lzdGVtU3RhdGUp
KTsNCj4gKw0KPiArICAgICAgICBpZiAoU3lzdGVtU3RhdGUgPj0gUG93ZXJTeXN0ZW1IaWJlcm5h
dGUgJiYNCj4gKyAgICAgICAgICAgIF9fUGRvR2V0U3lzdGVtUG93ZXJTdGF0ZShQZG8pIDwgUG93
ZXJTeXN0ZW1IaWJlcm5hdGUpIHsNCj4gKyAgICAgICAgICAgIF9fUGRvU2V0U3lzdGVtUG93ZXJT
dGF0ZShQZG8sIFBvd2VyU3lzdGVtU2xlZXBpbmczKTsNCj4gKyAgICAgICAgICAgIFBkb1MzVG9T
NChQZG8pOw0KPiArICAgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgX19QZG9TZXRTeXN0
ZW1Qb3dlclN0YXRlKFBkbywgU3lzdGVtU3RhdGUpOw0KPiArDQo+ICsgICAgSXJwLT5Jb1N0YXR1
cy5TdGF0dXMgPSBTVEFUVVNfU1VDQ0VTUzsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAs
IElPX05PX0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICBUcmFjZSgiPD09PT0gKCVzOiVzKVxuIiwN
Cj4gKyAgICAgICAgICBQb3dlclN5c3RlbVN0YXRlTmFtZShTeXN0ZW1TdGF0ZSksDQo+ICsgICAg
ICAgICAgUG93ZXJBY3Rpb25OYW1lKFBvd2VyQWN0aW9uKSk7DQo+ICsNCj4gKyAgICByZXR1cm4g
U1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBOVFNUQVRVUw0KPiArUGRvU3lz
dGVtUG93ZXIoDQo+ICsgICAgSU4gIFBYRU5DT05TX1RIUkVBRCBTZWxmLA0KPiArICAgIElOICBQ
Vk9JRCAgICAgICAgICAgQ29udGV4dA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBQWEVOQ09OU19Q
RE8gICAgICAgIFBkbyA9IENvbnRleHQ7DQo+ICsgICAgUEtFVkVOVCAgICAgICAgICAgICBFdmVu
dDsNCj4gKw0KPiArICAgIEV2ZW50ID0gVGhyZWFkR2V0RXZlbnQoU2VsZik7DQo+ICsNCj4gKyAg
ICBmb3IgKDs7KSB7DQo+ICsgICAgICAgIFBJUlAgICAgSXJwOw0KPiArDQo+ICsgICAgICAgIGlm
IChQZG8tPlN5c3RlbVBvd2VySXJwID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgIChWT0lEKUtl
V2FpdEZvclNpbmdsZU9iamVjdChFdmVudCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFeGVjdXRpdmUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS2VybmVsTW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMKTsNCj4gKyAgICAgICAgICAgIEtlQ2xlYXJFdmVudChFdmVudCk7DQo+ICsgICAg
ICAgIH0NCj4gKw0KPiArICAgICAgICBpZiAoVGhyZWFkSXNBbGVydGVkKFNlbGYpKQ0KPiArICAg
ICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAgSXJwID0gUGRvLT5TeXN0ZW1Qb3dlckly
cDsNCj4gKw0KPiArICAgICAgICBpZiAoSXJwID09IE5VTEwpDQo+ICsgICAgICAgICAgICBjb250
aW51ZTsNCj4gKw0KPiArICAgICAgICBQZG8tPlN5c3RlbVBvd2VySXJwID0gTlVMTDsNCj4gKyAg
ICAgICAgS2VNZW1vcnlCYXJyaWVyKCk7DQo+ICsNCj4gKyAgICAgICAgKFZPSUQpX19QZG9TZXRT
eXN0ZW1Qb3dlcihQZG8sIElycCk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIFNUQVRV
U19TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFU
VVMNCj4gK1Bkb1NldFBvd2VyKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvLA0KPiAr
ICAgIElOICBQSVJQICAgICAgICAgICAgSXJwDQo+ICsgICAgKQ0KPiArew0KPiArICAgIFBJT19T
VEFDS19MT0NBVElPTiAgU3RhY2tMb2NhdGlvbjsNCj4gKyAgICBQT1dFUl9TVEFURV9UWVBFICAg
IFBvd2VyVHlwZTsNCj4gKyAgICBQT1dFUl9BQ1RJT04gICAgICAgIFBvd2VyQWN0aW9uOw0KPiAr
ICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVzOw0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlv
biA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRpb24oSXJwKTsNCj4gKyAgICBQb3dlclR5cGUg
PSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlR5cGU7DQo+ICsgICAgUG93ZXJBY3Rp
b24gPSBTdGFja0xvY2F0aW9uLT5QYXJhbWV0ZXJzLlBvd2VyLlNodXRkb3duVHlwZTsNCj4gKw0K
PiArICAgIGlmIChQb3dlckFjdGlvbiA+PSBQb3dlckFjdGlvblNodXRkb3duKSB7DQo+ICsgICAg
ICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4gKyAgICAg
ICAgc3RhdHVzID0gSXJwLT5Jb1N0YXR1cy5TdGF0dXM7DQo+ICsgICAgICAgIElvQ29tcGxldGVS
ZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKw0KPiArICAgICAgICBnb3RvIGRvbmU7
DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3dpdGNoIChQb3dlclR5cGUpIHsNCj4gKyAgICBjYXNl
IERldmljZVBvd2VyU3RhdGU6DQo+ICsgICAgICAgIElvTWFya0lycFBlbmRpbmcoSXJwKTsNCj4g
Kw0KPiArICAgICAgICBBU1NFUlQzUChQZG8tPkRldmljZVBvd2VySXJwLCA9PSAsIE5VTEwpOw0K
PiArICAgICAgICBQZG8tPkRldmljZVBvd2VySXJwID0gSXJwOw0KPiArICAgICAgICBLZU1lbW9y
eUJhcnJpZXIoKTsNCj4gKw0KPiArICAgICAgICBUaHJlYWRXYWtlKFBkby0+RGV2aWNlUG93ZXJU
aHJlYWQpOw0KPiArDQo+ICsgICAgICAgIHN0YXR1cyA9IFNUQVRVU19QRU5ESU5HOw0KPiArICAg
ICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2UgU3lzdGVtUG93ZXJTdGF0ZToNCj4gKyAgICAg
ICAgSW9NYXJrSXJwUGVuZGluZyhJcnApOw0KPiArDQo+ICsgICAgICAgIEFTU0VSVDNQKFBkby0+
U3lzdGVtUG93ZXJJcnAsID09ICwgTlVMTCk7DQo+ICsgICAgICAgIFBkby0+U3lzdGVtUG93ZXJJ
cnAgPSBJcnA7DQo+ICsgICAgICAgIEtlTWVtb3J5QmFycmllcigpOw0KPiArDQo+ICsgICAgICAg
IFRocmVhZFdha2UoUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7DQo+ICsNCj4gKyAgICAgICAgc3Rh
dHVzID0gU1RBVFVTX1BFTkRJTkc7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgZGVm
YXVsdDoNCj4gKyAgICAgICAgc3RhdHVzID0gSXJwLT5Jb1N0YXR1cy5TdGF0dXM7DQo+ICsgICAg
ICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwgSU9fTk9fSU5DUkVNRU5UKTsNCj4gKyAgICAgICAg
YnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICtkb25lOg0KPiArICAgIHJldHVybiBzdGF0dXM7DQo+
ICt9DQo+ICsNCj4gK3N0YXRpYyBERUNMU1BFQ19OT0lOTElORSBOVFNUQVRVUw0KPiArUGRvUXVl
cnlQb3dlcigNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAgICBJTiAgUElS
UCAgICAgICAgICAgIElycA0KPiArICAgICkNCj4gK3sNCj4gKyAgICBOVFNUQVRVUyAgICAgICAg
ICAgIHN0YXR1czsNCj4gKw0KPiArICAgIFVOUkVGRVJFTkNFRF9QQVJBTUVURVIoUGRvKTsNCj4g
Kw0KPiArICAgIElycC0+SW9TdGF0dXMuU3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQo+ICsNCj4g
KyAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVzLlN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVx
dWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0K
PiArfQ0KPiArDQo+ICtzdGF0aWMgREVDTFNQRUNfTk9JTkxJTkUgTlRTVEFUVVMNCj4gK1Bkb0Rp
c3BhdGNoUG93ZXIoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUElPX1NUQUNLX0xP
Q0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiArICAgIFVDSEFSICAgICAgICAgICAgICAgTWlub3JG
dW5jdGlvbjsNCj4gKyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArICAg
IFN0YWNrTG9jYXRpb24gPSBJb0dldEN1cnJlbnRJcnBTdGFja0xvY2F0aW9uKElycCk7DQo+ICsg
ICAgTWlub3JGdW5jdGlvbiA9IFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb247DQo+ICsNCj4g
KyAgICBzd2l0Y2ggKFN0YWNrTG9jYXRpb24tPk1pbm9yRnVuY3Rpb24pIHsNCj4gKyAgICBjYXNl
IElSUF9NTl9TRVRfUE9XRVI6DQo+ICsgICAgICAgIHN0YXR1cyA9IFBkb1NldFBvd2VyKFBkbywg
SXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBjYXNlIElSUF9NTl9RVUVSWV9Q
T1dFUjoNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvUXVlcnlQb3dlcihQZG8sIElycCk7DQo+ICsg
ICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgc3RhdHVzID0g
SXJwLT5Jb1N0YXR1cy5TdGF0dXM7DQo+ICsgICAgICAgIElvQ29tcGxldGVSZXF1ZXN0KElycCwg
SU9fTk9fSU5DUkVNRU5UKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsg
ICAgcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArc3RhdGljIERFQ0xTUEVDX05PSU5MSU5F
IE5UU1RBVFVTDQo+ICtQZG9EaXNwYXRjaERlZmF1bHQoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BE
TyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgTlRTVEFUVVMgICAgICAgICAgICBzdGF0dXM7DQo+ICsNCj4gKyAgICBVTlJFRkVS
RU5DRURfUEFSQU1FVEVSKFBkbyk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBJcnAtPklvU3RhdHVz
LlN0YXR1czsNCj4gKyAgICBJb0NvbXBsZXRlUmVxdWVzdChJcnAsIElPX05PX0lOQ1JFTUVOVCk7
DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtOVFNUQVRVUw0KPiAr
UGRvRGlzcGF0Y2goDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4g
IFBJUlAgICAgICAgICAgICBJcnANCj4gKyAgICApDQo+ICt7DQo+ICsgICAgUElPX1NUQUNLX0xP
Q0FUSU9OICBTdGFja0xvY2F0aW9uOw0KPiArICAgIE5UU1RBVFVTICAgICAgICAgICAgc3RhdHVz
Ow0KPiArDQo+ICsgICAgU3RhY2tMb2NhdGlvbiA9IElvR2V0Q3VycmVudElycFN0YWNrTG9jYXRp
b24oSXJwKTsNCj4gKw0KPiArICAgIHN3aXRjaCAoU3RhY2tMb2NhdGlvbi0+TWFqb3JGdW5jdGlv
bikgew0KPiArICAgIGNhc2UgSVJQX01KX1BOUDoNCj4gKyAgICAgICAgc3RhdHVzID0gUGRvRGlz
cGF0Y2hQbnAoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgIGNhc2Ug
SVJQX01KX1BPV0VSOg0KPiArICAgICAgICBzdGF0dXMgPSBQZG9EaXNwYXRjaFBvd2VyKFBkbywg
SXJwKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAg
ICBzdGF0dXMgPSBQZG9EaXNwYXRjaERlZmF1bHQoUGRvLCBJcnApOw0KPiArICAgICAgICBicmVh
azsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+ICtO
VFNUQVRVUw0KPiArUGRvUmVzdW1lKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+
ICsgICAgKQ0KPiArew0KPiArICAgIFRyYWNlKCIoJXMpID09PT0+XG4iLCBfX1Bkb0dldE5hbWUo
UGRvKSk7DQo+ICsgICAgVHJhY2UoIiglcykgPD09PT1cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsN
Cj4gKyAgICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gK1ZPSUQNCj4gK1Bk
b1N1c3BlbmQoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApDQo+ICt7
DQo+ICsgICAgVHJhY2UoIiglcykgPT09PT5cbiIsIF9fUGRvR2V0TmFtZShQZG8pKTsNCj4gKyAg
ICBUcmFjZSgiKCVzKSA8PT09PVxuIiwgX19QZG9HZXROYW1lKFBkbykpOw0KPiArfQ0KPiArDQo+
ICtOVFNUQVRVUw0KPiArUGRvQ3JlYXRlKA0KPiArICAgIElOICBQWEVOQ09OU19GRE8gICAgRmRv
LA0KPiArICAgIElOICBQQU5TSV9TVFJJTkcgICAgRGV2aWNlDQo+ICsgICAgKQ0KPiArew0KPiAr
ICAgIFBERVZJQ0VfT0JKRUNUICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3Q7DQo+ICsgICAgUFhF
TkNPTlNfRFggICAgICAgICBEeDsNCj4gKyAgICBQWEVOQ09OU19QRE8gICAgICAgIFBkbzsNCj4g
KyAgICBOVFNUQVRVUyAgICAgICAgICAgIHN0YXR1czsNCj4gKw0KPiArI3ByYWdtYSBwcmVmYXN0
KHN1cHByZXNzOjI4MTk3KSAvLyBQb3NzaWJseSBsZWFraW5nIG1lbW9yeQ0KPiAnUGh5c2ljYWxE
ZXZpY2VPYmplY3QnDQo+ICsgICAgc3RhdHVzID0gSW9DcmVhdGVEZXZpY2UoRHJpdmVyR2V0RHJp
dmVyT2JqZWN0KCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhFTkNP
TlNfRFgpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRklMRV9ERVZJQ0VfVU5LTk9XTiwNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFX0RFVklDRV9TRUNVUkVfT1BFTiB8DQo+IEZJTEVfQVVUT0dF
TkVSQVRFRF9ERVZJQ0VfTkFNRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxT
RSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUGh5c2ljYWxEZXZpY2VPYmplY3Qp
Ow0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZhaWwx
Ow0KPiArDQo+ICsgICAgRHggPSAoUFhFTkNPTlNfRFgpUGh5c2ljYWxEZXZpY2VPYmplY3QtPkRl
dmljZUV4dGVuc2lvbjsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KER4LCBzaXplb2YoWEVOQ09OU19E
WCkpOw0KPiArDQo+ICsgICAgRHgtPlR5cGUgPSBQSFlTSUNBTF9ERVZJQ0VfT0JKRUNUOw0KPiAr
ICAgIER4LT5EZXZpY2VPYmplY3QgPSBQaHlzaWNhbERldmljZU9iamVjdDsNCj4gKyAgICBEeC0+
RGV2aWNlUG5wU3RhdGUgPSBQcmVzZW50Ow0KPiArICAgIER4LT5TeXN0ZW1Qb3dlclN0YXRlID0g
UG93ZXJTeXN0ZW1Xb3JraW5nOw0KPiArICAgIER4LT5EZXZpY2VQb3dlclN0YXRlID0gUG93ZXJE
ZXZpY2VEMzsNCj4gKw0KPiArICAgIFBkbyA9IF9fUGRvQWxsb2NhdGUoc2l6ZW9mKFhFTkNPTlNf
UERPKSk7DQo+ICsNCj4gKyAgICBzdGF0dXMgPSBTVEFUVVNfTk9fTUVNT1JZOw0KPiArICAgIGlm
IChQZG8gPT0gTlVMTCkNCj4gKyAgICAgICAgZ290byBmYWlsMjsNCj4gKw0KPiArICAgIFBkby0+
RHggPSBEeDsNCj4gKyAgICBQZG8tPkZkbyA9IEZkbzsNCj4gKw0KPiArICAgIHN0YXR1cyA9IFRo
cmVhZENyZWF0ZShQZG9TeXN0ZW1Qb3dlciwgUGRvLCAmUGRvLQ0KPiA+U3lzdGVtUG93ZXJUaHJl
YWQpOw0KPiArICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KPiArICAgICAgICBnb3RvIGZh
aWwzOw0KPiArDQo+ICsgICAgc3RhdHVzID0gVGhyZWFkQ3JlYXRlKFBkb0RldmljZVBvd2VyLCBQ
ZG8sICZQZG8tDQo+ID5EZXZpY2VQb3dlclRocmVhZCk7DQo+ICsgICAgaWYgKCFOVF9TVUNDRVNT
KHN0YXR1cykpDQo+ICsgICAgICAgIGdvdG8gZmFpbDQ7DQo+ICsNCj4gKyAgICBfX1Bkb1NldE5h
bWUoUGRvLCBEZXZpY2UpOw0KPiArDQo+ICsgICAgRmRvR2V0U3VzcGVuZEludGVyZmFjZShGZG8s
ICZQZG8tPlN1c3BlbmRJbnRlcmZhY2UpOw0KPiArDQo+ICsgICAgRHgtPlBkbyA9IFBkbzsNCj4g
Kw0KPiArICAgIHN0YXR1cyA9IEZkb0FkZFBoeXNpY2FsRGV2aWNlT2JqZWN0KEZkbywgUGRvKTsN
Cj4gKyAgICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCj4gKyAgICAgICAgZ290byBmYWlsNTsN
Cj4gKw0KPiArICAgIHN0YXR1cyA9IFNUQVRVU19VTlNVQ0NFU1NGVUw7DQo+ICsgICAgaWYgKF9f
UGRvSXNFamVjdFJlcXVlc3RlZChQZG8pKQ0KPiArICAgICAgICBnb3RvIGZhaWw2Ow0KPiArDQo+
ICsgICAgSW5mbygiJXAgKCVzKVxuIiwNCj4gKyAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0
LA0KPiArICAgICAgICAgX19QZG9HZXROYW1lKFBkbykpOw0KPiArDQo+ICsgICAgUGh5c2ljYWxE
ZXZpY2VPYmplY3QtPkZsYWdzICY9IH5ET19ERVZJQ0VfSU5JVElBTElaSU5HOw0KPiArICAgIHJl
dHVybiBTVEFUVVNfU1VDQ0VTUzsNCj4gKw0KPiArZmFpbDY6DQo+ICsgICAgRXJyb3IoImZhaWw2
XG4iKTsNCj4gKw0KPiArICAgIEZkb1JlbW92ZVBoeXNpY2FsRGV2aWNlT2JqZWN0KEZkbywgUGRv
KTsNCj4gKw0KPiArZmFpbDU6DQo+ICsgICAgRXJyb3IoImZhaWw1XG4iKTsNCj4gKw0KPiArICAg
IChWT0lEKV9fUGRvQ2xlYXJFamVjdFJlcXVlc3RlZChQZG8pOw0KPiArDQo+ICsgICAgRHgtPlBk
byA9IE5VTEw7DQo+ICsNCj4gKyAgICBSdGxaZXJvTWVtb3J5KCZQZG8tPlN1c3BlbmRJbnRlcmZh
Y2UsDQo+ICsgICAgICAgICAgICAgICAgICBzaXplb2YoWEVOQlVTX1NVU1BFTkRfSU5URVJGQUNF
KSk7DQo+ICsNCj4gKyAgICBUaHJlYWRBbGVydChQZG8tPkRldmljZVBvd2VyVGhyZWFkKTsNCj4g
KyAgICBUaHJlYWRKb2luKFBkby0+RGV2aWNlUG93ZXJUaHJlYWQpOw0KPiArICAgIFBkby0+RGV2
aWNlUG93ZXJUaHJlYWQgPSBOVUxMOw0KPiArDQo+ICtmYWlsNDoNCj4gKyAgICBFcnJvcigiZmFp
bDRcbiIpOw0KPiArDQo+ICsgICAgVGhyZWFkQWxlcnQoUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7
DQo+ICsgICAgVGhyZWFkSm9pbihQZG8tPlN5c3RlbVBvd2VyVGhyZWFkKTsNCj4gKyAgICBQZG8t
PlN5c3RlbVBvd2VyVGhyZWFkID0gTlVMTDsNCj4gKw0KPiArZmFpbDM6DQo+ICsgICAgRXJyb3Io
ImZhaWwzXG4iKTsNCj4gKw0KPiArICAgIFBkby0+RmRvID0gTlVMTDsNCj4gKyAgICBQZG8tPkR4
ID0gTlVMTDsNCj4gKw0KPiArICAgIEFTU0VSVChJc1plcm9NZW1vcnkoUGRvLCBzaXplb2YoWEVO
Q09OU19QRE8pKSk7DQo+ICsgICAgX19QZG9GcmVlKFBkbyk7DQo+ICsNCj4gK2ZhaWwyOg0KPiAr
ICAgIEVycm9yKCJmYWlsMlxuIik7DQo+ICsNCj4gKyAgICBJb0RlbGV0ZURldmljZShQaHlzaWNh
bERldmljZU9iamVjdCk7DQo+ICsNCj4gK2ZhaWwxOg0KPiArICAgIEVycm9yKCJmYWlsMSAoJTA4
eClcbiIsIHN0YXR1cyk7DQo+ICsNCj4gKyAgICByZXR1cm4gc3RhdHVzOw0KPiArfQ0KPiArDQo+
ICtWT0lEDQo+ICtQZG9EZXN0cm95KA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+
ICsgICAgKQ0KPiArew0KPiArICAgIFBYRU5DT05TX0RYICAgICAgICAgRHggPSBQZG8tPkR4Ow0K
PiArICAgIFBERVZJQ0VfT0JKRUNUICAgICAgUGh5c2ljYWxEZXZpY2VPYmplY3QgPSBEeC0+RGV2
aWNlT2JqZWN0Ow0KPiArICAgIFBYRU5DT05TX0ZETyAgICAgICAgRmRvID0gX19QZG9HZXRGZG8o
UGRvKTsNCj4gKw0KPiArICAgIEFTU0VSVDNVKF9fUGRvR2V0RGV2aWNlUG5wU3RhdGUoUGRvKSwg
PT0gLCBEZWxldGVkKTsNCj4gKw0KPiArICAgIEFTU0VSVChfX1Bkb0lzTWlzc2luZyhQZG8pKTsN
Cj4gKyAgICBQZG8tPk1pc3NpbmcgPSBGQUxTRTsNCj4gKw0KPiArICAgIEluZm8oIiVwICglcykg
KCVzKVxuIiwNCj4gKyAgICAgICAgIFBoeXNpY2FsRGV2aWNlT2JqZWN0LA0KPiArICAgICAgICAg
X19QZG9HZXROYW1lKFBkbyksDQo+ICsgICAgICAgICBQZG8tPlJlYXNvbik7DQo+ICsNCj4gKyAg
ICBQZG8tPlJlYXNvbiA9IE5VTEw7DQo+ICsNCj4gKyAgICBGZG9SZW1vdmVQaHlzaWNhbERldmlj
ZU9iamVjdChGZG8sIFBkbyk7DQo+ICsNCj4gKyAgICAoVk9JRClfX1Bkb0NsZWFyRWplY3RSZXF1
ZXN0ZWQoUGRvKTsNCj4gKw0KPiArICAgIER4LT5QZG8gPSBOVUxMOw0KPiArDQo+ICsgICAgUnRs
WmVyb01lbW9yeSgmUGRvLT5TdXNwZW5kSW50ZXJmYWNlLA0KPiArICAgICAgICAgICAgICAgICAg
c2l6ZW9mKFhFTkJVU19TVVNQRU5EX0lOVEVSRkFDRSkpOw0KPiArDQo+ICsgICAgVGhyZWFkQWxl
cnQoUGRvLT5EZXZpY2VQb3dlclRocmVhZCk7DQo+ICsgICAgVGhyZWFkSm9pbihQZG8tPkRldmlj
ZVBvd2VyVGhyZWFkKTsNCj4gKyAgICBQZG8tPkRldmljZVBvd2VyVGhyZWFkID0gTlVMTDsNCj4g
Kw0KPiArICAgIFRocmVhZEFsZXJ0KFBkby0+U3lzdGVtUG93ZXJUaHJlYWQpOw0KPiArICAgIFRo
cmVhZEpvaW4oUGRvLT5TeXN0ZW1Qb3dlclRocmVhZCk7DQo+ICsgICAgUGRvLT5TeXN0ZW1Qb3dl
clRocmVhZCA9IE5VTEw7DQo+ICsNCj4gKyAgICBQZG8tPkZkbyA9IE5VTEw7DQo+ICsgICAgUGRv
LT5EeCA9IE5VTEw7DQo+ICsNCj4gKyAgICBBU1NFUlQoSXNaZXJvTWVtb3J5KFBkbywgc2l6ZW9m
KFhFTkNPTlNfUERPKSkpOw0KPiArICAgIF9fUGRvRnJlZShQZG8pOw0KPiArDQo+ICsgICAgSW9E
ZWxldGVEZXZpY2UoUGh5c2ljYWxEZXZpY2VPYmplY3QpOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1n
aXQgYS9zcmMveGVuY29ucy9wZG8uaCBiL3NyYy94ZW5jb25zL3Bkby5oDQo+IG5ldyBmaWxlIG1v
ZGUgMTAwNzU1DQo+IGluZGV4IDAwMDAwMDAuLjA2MDU0ODMNCj4gLS0tIC9kZXYvbnVsbA0KPiAr
KysgYi9zcmMveGVuY29ucy9wZG8uaA0KPiBAQCAtMCwwICsxLDExMyBAQA0KPiArLyogQ29weXJp
Z2h0IChjKSBDaXRyaXggU3lzdGVtcyBJbmMuDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
PiArICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsDQo+ICsgKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkDQo+ICsgKiB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0K
PiArICoNCj4gKyAqICogICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlDQo+ICsgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZQ0KPiArICogICAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICog
KiAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUNCj4gKyAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlDQo+ICsgKiAgICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyDQo+ICsgKiAgICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4NCj4gKyAqDQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gKyAqIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsDQo+ICsgKiBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KPiArICogTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCj4gKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ICsg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwNCj4gKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsDQo+ICsgKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1INCj4gKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0KPiArICogV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HDQo+ICsgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQo+ICsgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQo+
ICsgKiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9YRU5DT05TX1BET19I
DQo+ICsjZGVmaW5lIF9YRU5DT05TX1BET19IDQo+ICsNCj4gKyNpbmNsdWRlIDxudGRkay5oPg0K
PiArDQo+ICsjaW5jbHVkZSAiZHJpdmVyLmgiDQo+ICsNCj4gK2V4dGVybiBWT0lEDQo+ICtQZG9T
ZXREZXZpY2VQbnBTdGF0ZSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgICAgICBQZG8sDQo+
ICsgICAgSU4gIERFVklDRV9QTlBfU1RBVEUgICAgU3RhdGUNCj4gKyAgICApOw0KPiArDQo+ICtl
eHRlcm4gREVWSUNFX1BOUF9TVEFURQ0KPiArUGRvR2V0RGV2aWNlUG5wU3RhdGUoDQo+ICsgICAg
SU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4gVk9JRA0K
PiArUGRvU2V0TWlzc2luZygNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbywNCj4gKyAg
ICBJTiAgY29uc3QgQ0hBUiAgICAgICpSZWFzb24NCj4gKyAgICApOw0KPiArDQo+ICtleHRlcm4g
Qk9PTEVBTg0KPiArUGRvSXNNaXNzaW5nKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRv
DQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQNCj4gK1Bkb1JlcXVlc3RFamVjdCgNCj4g
KyAgICBJTiAgUFhFTkNPTlNfUERPICAgIFBkbw0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBC
T09MRUFODQo+ICtQZG9Jc0VqZWN0UmVxdWVzdGVkKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8g
ICAgUGRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFBDSEFSDQo+ICtQZG9HZXROYW1lKA0K
PiArICAgIElOICBQWEVOQ09OU19QRE8gICAgUGRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJu
IFBYRU5DT05TX0ZETw0KPiArUGRvR2V0RmRvKA0KPiArICAgIElOICBQWEVOQ09OU19QRE8gICAg
UGRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFBERVZJQ0VfT0JKRUNUDQo+ICtQZG9HZXRE
ZXZpY2VPYmplY3QoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApOw0K
PiArDQo+ICtleHRlcm4gTlRTVEFUVVMNCj4gK1Bkb0NyZWF0ZSgNCj4gKyAgICBJTiAgUFhFTkNP
TlNfRkRPICAgIEZkbywNCj4gKyAgICBJTiAgUEFOU0lfU1RSSU5HICAgIERldmljZQ0KPiArICAg
ICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArUGRvUmVzdW1lKA0KPiArICAgIElOICBQ
WEVOQ09OU19QRE8gICAgUGRvDQo+ICsgICAgKTsNCj4gKw0KPiArZXh0ZXJuIFZPSUQNCj4gK1Bk
b1N1c3BlbmQoDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8NCj4gKyAgICApOw0KPiAr
DQo+ICtleHRlcm4gVk9JRA0KPiArUGRvRGVzdHJveSgNCj4gKyAgICBJTiAgUFhFTkNPTlNfUERP
ICAgIFBkbw0KPiArICAgICk7DQo+ICsNCj4gK2V4dGVybiBOVFNUQVRVUw0KPiArUGRvRGlzcGF0
Y2goDQo+ICsgICAgSU4gIFBYRU5DT05TX1BETyAgICBQZG8sDQo+ICsgICAgSU4gIFBJUlAgICAg
ICAgICAgICBJcnANCj4gKyAgICApOw0KPiArDQo+ICsjZW5kaWYgIC8vIF9YRU5DT05TX1BET19I
DQo+IGRpZmYgLS1naXQgYS92czIwMTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gYi92czIw
MTUveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gaW5kZXggMTJmNWI3MC4uMmU5ZDIwOCAxMDA2
NDQNCj4gLS0tIGEvdnMyMDE1L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+ICsrKyBiL3ZzMjAx
NS94ZW5jb25zL3hlbmNvbnMudmN4cHJvag0KPiBAQCAtNjYsNiArNjYsNyBAQA0KPiAgICA8SXRl
bUdyb3VwPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvZHJp
dmVyLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8uLi9zcmMveGVuY29ucy9m
ZG8uYyIgLz4NCj4gKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25zL3Bk
by5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4vLi4vc3JjL3hlbmNvbnMvcmVn
aXN0cnkuYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5jb25z
L2NvbnNvbGUuYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4uL3NyYy94ZW5j
b25zL3N0cmVhbS5jIiAvPg0KPiBkaWZmIC0tZ2l0IGEvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52
Y3hwcm9qDQo+IGIvdnMyMDE3L3hlbmNvbnMveGVuY29ucy52Y3hwcm9qDQo+IGluZGV4IDUxMGFj
YjYuLjZjNjdmZTggMTAwNjQ0DQo+IC0tLSBhL3ZzMjAxNy94ZW5jb25zL3hlbmNvbnMudmN4cHJv
ag0KPiArKysgYi92czIwMTcveGVuY29ucy94ZW5jb25zLnZjeHByb2oNCj4gQEAgLTc0LDYgKzc0
LDcgQEANCj4gICAgPEl0ZW1Hcm91cD4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4u
L3NyYy94ZW5jb25zL2RyaXZlci5jIiAvPg0KPiAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi4v
Li4vc3JjL3hlbmNvbnMvZmRvLmMiIC8+DQo+ICsgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLi8u
Li9zcmMveGVuY29ucy9wZG8uYyIgLz4NCj4gICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uLy4u
L3NyYy94ZW5jb25zL3JlZ2lzdHJ5LmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Li8uLi9zcmMveGVuY29ucy9jb25zb2xlLmMiIC8+DQo+ICAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLi8uLi9zcmMveGVuY29ucy9zdHJlYW0uYyIgLz4NCj4gLS0NCj4gMi44LjMNCj4gDQo+IA0K
PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiB3aW4t
cHYtZGV2ZWwgbWFpbGluZyBsaXN0DQo+IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
Zw0KPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2
LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp3
aW4tcHYtZGV2ZWwgbWFpbGluZyBsaXN0Cndpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vd2luLXB2LWRl
dmVs

From win-pv-devel-bounces@lists.xenproject.org Wed Feb 28 17:47:57 2018
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 28 Feb 2018 17:47:57 +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 1er5pc-0006vL-TS; Wed, 28 Feb 2018 17:47: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 1er5pb-0006vE-AJ
 for win-pv-devel@lists.xenproject.org; Wed, 28 Feb 2018 17:47:55 +0000
Date: Wed, 28 Feb 2018 17:47:55 +0000 (UTC)
From: paul.durrant@xenproject.org
To: win-pv-devel@lists.xenproject.org
Message-ID: <13571033.5.1519840080574.JavaMail.WINPVDRVBUILD$@winpvdrvbuild>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_4_16867857.1519840075074"
X-Jenkins-Job: XENCONS-master
X-Jenkins-Result: SUCCESS
Subject: [win-pv-devel] XENCONS-master - Build #11 - 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_4_16867857.1519840075074
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The build system has completed build #11.

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kd2luLXB2LWRl
dmVsIG1haWxpbmcgbGlzdAp3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dpbi1wdi1kZXZlbA==

------=_Part_4_16867857.1519840075074--


