Subject: The IOISCSI-board
To: None <port-i386@netbsd.org>
From: =?iso-8859-1?Q?=D8yvin?= Halfdan Thuv <thuv@nextra.com>
List: port-i386
Date: 05/27/2001 14:16:16
This is a multi-part message in MIME format.

--spruceIXCXKZOZOFSXCLQJWNYD
Content-Type: text/plain
Content-Transfer-Type: 8bit


Hei, again, and sorry for spamming down this list with my monolouge, but I
now think that the IOISCSI-board can easily be supported by net BSD. The
board has got and INIC-940 chip on it, and the board itself is called 4203U
(ultra-scsi). I have the FreeBSD source-code for it, and I have tried to
compile a custom-kernel with the source in it. I had do do some changes to
the kernel config, and to the source code as well, but it still needs some
includes that I soppose is contained with the FreeBSD kernel-sources.

If anyone with the proper knowledge of the kernel, and SCSI would have a
look at the code, I personally would apreciate that a lot :) , and I think
it would be interesting for other NetBSD-i386 users as well.

Please send me a mail if anyone would be interested in this.

The source for FreeBSD is attached.

--
Øyvin
--spruceIXCXKZOZOFSXCLQJWNYD
Content-Type: application/octet-stream; name="i91u.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="i91u.c"

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCioqCioqICAkSWQ6IGk5MXUuYyx2IDEuODIuMi45IDE5OTgvMDEv
MDggMTI6MDQ6MDAgc2UgRXhwICQKKioKKiogIERldmljZSBkcml2ZXIgZm9yIHRoZSAgIElOSS05
WFhYVS9VVyBvciBJTklDLTk0MC85NTAgIFBDSSBTQ1NJIENvbnRyb2xsZXIuCioqCioqICBGcmVl
QlNEICAKKioKKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCioqCioqICBXcml0dGVuIGZvciAzODZic2QgYW5k
IEZyZWVCU0QgYnkKKioJV2luc3RvbiBIdW5nCQk8d2luc3RvbmhAaW5pdGlvLmNvbT4KKioKKioK
KiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCioqCioqIENvcHlyaWdodCAoYykgMTk5Ny05OSBJbml0aW8gQ29y
cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCioqCioqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAoqKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKiog
YXJlIG1ldDoKKiogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKiogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoqKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAoqKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCioqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCioqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5
IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwoqKiAgICBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKioKKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMg
SVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKKiogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwoqKiBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELgoqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsCioqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAoqKiBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCioq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQoqKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCioqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgoqKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgoqKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKi8KCgoKI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgoKI2lu
Y2x1ZGUgPHN5cy9zeXN0bS5oPgojaW5jbHVkZSA8c3lzL21hbGxvYy5oPgojaW5jbHVkZSA8c3lz
L3F1ZXVlLmg+CiNpbmNsdWRlIDxzeXMvYnVmLmg+CiNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiNp
bmNsdWRlIDxzeXMvc3lzY3RsLmg+CiNpbmNsdWRlIDx2bS92bS5oPgojaW5jbHVkZSA8dm0vcG1h
cC5oPgoKI2luY2x1ZGUgPHBjaS9wY2l2YXIuaD4KI2luY2x1ZGUgPHBjaS9wY2lyZWcuaD4KCiNp
bmNsdWRlIDxjYW0vY2FtLmg+CiNpbmNsdWRlIDxjYW0vY2FtX2NjYi5oPgojaW5jbHVkZSA8Y2Ft
L2NhbV9zaW0uaD4KI2luY2x1ZGUgPGNhbS9jYW1feHB0Lmg+CiNpbmNsdWRlIDxjYW0vY2FtX3hw
dF9zaW0uaD4KI2luY2x1ZGUgPGNhbS9jYW1feHB0X3BlcmlwaC5oPgojaW5jbHVkZSA8Y2FtL2Nh
bV9kZWJ1Zy5oPgoKI2luY2x1ZGUgPGNhbS9zY3NpL3Njc2lfYWxsLmg+CiNpbmNsdWRlIDxjYW0v
c2NzaS9zY3NpX21lc3NhZ2UuaD4KCiNpbmNsdWRlIDxtYWNoaW5lL2J1c19waW8uaD4KI2luY2x1
ZGUgPG1hY2hpbmUvYnVzLmg+CiNpbmNsdWRlIDxtYWNoaW5lL2Nsb2NrLmg+CgoKLyogICNpbmNs
dWRlIDxwY2kvaW5pOTEwMHUuaD4gICovCgojZGVmaW5lIElOVDMyCSAgaW50MzIKI2RlZmluZSBV
X0lOVDMyICAgdV9pbnQzMgoKI2lmZGVmIF9fYWxwaGFfXwovKiBYWFggKi8KI3VuZGVmIHZ0b3Bo
eXMKI2RlZmluZQl2dG9waHlzKHZhKQkocG1hcF9rZXh0cmFjdCgoKHZtX29mZnNldF90KSAodmEp
KSkgXAoJCQkgKyAxKjEwMjQqMTAyNCoxMDI0KQojZW5kaWYKCiNkZWZpbmUgT3V0Qih2YWwsIHBv
cnQpIAkJb3V0Yihwb3J0LCB2YWwpCiNkZWZpbmUgT3V0Vyh2YWwsIHBvcnQpIAkJb3V0dyhwb3J0
LCB2YWwpCiNkZWZpbmUgT3V0TCh2YWwsIHBvcnQpIAkJb3V0bChwb3J0LCB2YWwpCgojZGVmaW5l
IFBDSV9ERVZJQ0VfSURfSU5JQzk0MCAJMHg5NDAwMTEwMXVsCiNkZWZpbmUgUENJX0RFVklDRV9J
RF9JTklDOTQxIAkweDk0MDExMTAxdWwKI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOSUM5NTAgCTB4
OTUwMDExMDF1bAojZGVmaW5lIFBDSV9CQVNFQUREUjAJCQkweDEwCgoKCi8qIHN0YXRpYyB2b2lk
IGk5MXVfSW50ZXJydXB0IChJOTFVX0hDUyAqcEhjcyk7ICAqLwoKCnN0YXRpYwljaGFyKglpOTF1
X3Byb2JlKCBwY2ljaV90IHRhZywgcGNpZGlfdCB0eXBlKTsKc3RhdGljCXZvaWQJaTkxdV9hdHRh
Y2goIHBjaWNpX3QgdGFnLCBpbnQgdW5pdCk7CgpzdGF0aWMgdm9pZCBpOTF1X3RpbWVvdXQoIHZv
aWQgKmFyZzEpOwoKCgpzdGF0aWMgIHZvaWQgaTkxdV9hY3Rpb24oc3RydWN0IGNhbV9zaW0gKnNp
bSwgdW5pb24gY2NiICpjY2IpOwpzdGF0aWMgIHZvaWQgaTkxdV9wb2xsKHN0cnVjdCBjYW1fc2lt
ICpzaW0pOwoKCgoKCgoKc3RhdGljIHVfbG9uZwlpOTF1X2NvdW50OwoKc3RydWN0CXBjaV9kZXZp
Y2UgICBpOTF1X2RldmljZSA9IHsKCSJpaGEiLAoJaTkxdV9wcm9iZSwKCWk5MXVfYXR0YWNoLAoJ
Jmk5MXVfY291bnQsCglOVUxMCn07CgovKkRBVEFfU0VUIChwY2lkZXZpY2Vfc2V0LCBpOTF1X2Rl
dmljZSk7CiovCgpDT01QQVRfUENJX0RSSVZFUiAoaWhhLGk5MXVfZGV2aWNlKTsKCgoKCiNpbmNs
dWRlIDxwY2kvaTkxdXNjc2kuYz4KCgoKCgovKgogKiBXZSBoYXZlIGEgc2NiIHdoaWNoIGhhcyBi
ZWVuIHByb2Nlc3NlZCBieSB0aGUKICogYWRhcHRvciwgbm93IHdlIGxvb2sgdG8gc2VlIGhvdyB0
aGUgb3BlcmF0aW9uCiAqIHdlbnQuCiAqLwpzdGF0aWMgdm9pZAppOTF1X2RvbmUoSTkxVV9IQ1Mg
KnBIY3MsIEk5MVVfU0NCICpwU2NiKQp7Cgl1bmlvbiBjY2IgKmNjYiA9ICh1bmlvbiBjY2IgKilw
U2NiLT5TQ0JfY2NiOwoJc3RydWN0IGNjYl9zY3NpaW8gKmNzaW87CgoJcFNjYi0+U0NCX2NjYiA9
IE5VTEw7CiNpZiAwCglwcmludGYoImRvbmU6KCVkICVkKWNkYiglZCk9JXggaD0leCB0PSV4ICIs
cFNjYi0+U0NCX1RhcmdldCxwU2NiLT5TQ0JfTHVuLHBTY2ItPlNDQl9DREJMZW4scFNjYi0+U0NC
X0NEQlswXSxwU2NiLT5TQ0JfSGFTdGF0ICxwU2NiLT5TQ0JfVGFTdGF0KTsKcHJpbnRmKCJkb25l
OmhzPSV4IHRzPSV4XG4iLHBTY2ItPlNDQl9IYVN0YXQgLHBTY2ItPlNDQl9UYVN0YXQgKTsKdHVs
X2RvX3BhdXNlKDEwMDApOwojZW5kaWYKCglpZigoVUxPTkcpY2NiID09IDApIHsKCQlwcmludGYo
ImZyZWUgc2NiIHdoaWxlIGNjYj0wIGluIGk5MXVfZG9uZSBcbiIpOwoJCXR1bF9yZWxlYXNlX3Nj
YihwSGNzLCBwU2NiKTsKCQlyZXR1cm47Cgl9CgoJdW50aW1lb3V0KGk5MXVfdGltZW91dCwgKGNh
ZGRyX3QpIHBTY2IsY2NiLT5jY2JfaC50aW1lb3V0X2NoKTsKI2lmIDAKCWlmICgoY2NiLT5jY2Jf
aC5mbGFncyAmIENBTV9ESVJfTUFTSykgIT0gQ0FNX0RJUl9OT05FKSB7CgkJYnVzX2RtYXN5bmNf
b3BfdCBvcDsKCgkJaWYgKChjY2ItPmNjYl9oLmZsYWdzICYgQ0FNX0RJUl9NQVNLKSA9PSBDQU1f
RElSX0lOKQoJCQlvcCA9IEJVU19ETUFTWU5DX1BPU1RSRUFEOwoJCWVsc2UKCQkJb3AgPSBCVVNf
RE1BU1lOQ19QT1NUV1JJVEU7CgkJYnVzX2RtYW1hcF9zeW5jKHBIY3MtPmRtYXQsIHBTY2ItPlND
Ql9kbWFtYXAsIG9wKTsKCQlidXNfZG1hbWFwX3VubG9hZChwSGNzLT5idWZmZXJfZG1hdCwgcFNj
Yi0+U0NCX2RtYW1hcCk7Cgl9CiNlbmRpZgoKCWNzaW8gPSAmY2NiLT5jc2lvOwoJLyoKCSoqCUNo
ZWNrIHRoZSBzdGF0dXMuCgkqLwoJaWYgKCAgIChwU2NiLT5TQ0JfSGFTdGF0ID09IEhPU1RfT0sp
CgkJJiYgKHBTY2ItPlNDQl9UYVN0YXQgPT0gVEFSR0VUX0dPT0QpKSB7CgoJCWNjYi0+Y2NiX2gu
c3RhdHVzID0gQ0FNX1JFUV9DTVA7CgkJY3Npby0+c2NzaV9zdGF0dXMgPSBTQ1NJX1NUQVRVU19P
SzsKLyoqCgl9IGVsc2UgaWYgKCAgIChwU2NiLT5TQ0JfSGFTdGF0ID09IEhPU1RfT0spCgkJJiYg
KHBTY2ItPlNDQl9UYVN0YXQ9PSBUQVJHRVRfQ0hLQ09ORCAgKSkgewoqKi8KCX0gZWxzZSBpZiAo
cFNjYi0+U0NCX1RhU3RhdD09IFRBUkdFVF9DSEtDT05EKSB7CgoJCS8qCgkJKiogICBDaGVjayBj
b25kaXRpb24gY29kZQoJCSovCgkJY2NiLT5jY2JfaC5zdGF0dXMgIHw9IENBTV9BVVRPU05TX1ZB
TElEOwoJCWNzaW8tPnNjc2lfc3RhdHVzID0gU0NTSV9TVEFUVVNfQ0hFQ0tfQ09ORDsKCgl9IGVs
c2UgaWYgKChwU2NiLT5TQ0JfSGFTdGF0PT0gSE9TVF9PSykKCQkmJiAocFNjYi0+U0NCX1RhU3Rh
dD09IFRBUkdFVF9CVVNZKSkgewoJCS8qCgkJKiogICBUYXJnZXQgaXMgYnVzeS4KCQkqLwoJCWNj
Yi0+Y2NiX2guc3RhdHVzID0gQ0FNX1NDU0lfU1RBVFVTX0VSUk9SOwoJCWNzaW8tPnNjc2lfc3Rh
dHVzID0gU0NTSV9TVEFUVVNfQlVTWTsKCgl9IGVsc2UgaWYgKChwU2NiLT5TQ0JfSGFTdGF0PT0g
SE9TVF9PSykKCQkmJiAocFNjYi0+U0NCX1RhU3RhdD09IFRBUkdFVF9RRlVMTCkpIHsKCgkJLyoK
CQkqKiAgIFRhcmdldCBpcyBxdWV1ZSBmdWxsLgoJCSovCgkJY2NiLT5jY2JfaC5zdGF0dXMgPSBD
QU1fU0NTSV9TVEFUVVNfRVJST1I7CgkJY3Npby0+c2NzaV9zdGF0dXMgPSBTQ1NJX1NUQVRVU19R
VUVVRV9GVUxMOwoKCgl9IGVsc2UgaWYgKHBTY2ItPlNDQl9IYVN0YXQ9PSBIT1NUX1NFTF9UT1VU
ICAgKSB7CgoJCS8qCgkJKiogICBEZXZpY2UgZmFpbGVkIHNlbGVjdGlvbgoJCSovCgkJY2NiLT5j
Y2JfaC5zdGF0dXMgPSBDQU1fU0VMX1RJTUVPVVQ7CgoJfSBlbHNlIHsgLyogIE90aGVyIHByb3Rv
Y29sIG1lc3NlcyAqLwoJCWNjYi0+Y2NiX2guc3RhdHVzID0gQ0FNX0NNRF9USU1FT1VUOwoJfQoK
Cgl0dWxfcmVsZWFzZV9zY2IocEhjcywgcFNjYik7Cgl4cHRfZG9uZShjY2IpOwp9CgpzdGF0aWMg
dm9pZAppOTF1X3RpbWVvdXQodm9pZCAqYXJnMSkKewoKCUk5MVVfU0NCICpwU2NiID0gKEk5MVVf
U0NCKikgYXJnMTsKCUk5MVVfSENTICpwSGNzOwoJdW5pb24gY2NiICpjY2I7CglpbnQgICAgIHVu
aXQ7CglJOTFVX0hDUyAqYWljOwoJaW50IHM7CgoKCWNjYiA9ICh1bmlvbiBjY2IgKilwU2NiLT5T
Q0JfY2NiOwoJaWYgKGNjYiA9PSBOVUxMKSAKCQlyZXR1cm47CgoJcEhjcyA9IChJOTFVX0hDUyAq
KXhwdF9wYXRoX3NpbShjY2ItPmNjYl9oLnBhdGgpLT5zb2Z0YzsKCgoJcyA9IHNwbGNhbSgpOwoJ
aWYgKHR1bF9hYm9ydF9jY2IocEhjcywgKFVMT05HKSBjY2IpKSB7CgkJcHJpbnRmKCJpaGE6IHRp
bWVkIG91dFxuIik7CgoJCWNjYi0+Y2NiX2guc3RhdHVzIHw9IENBTV9SRVFfQUJPUlRFRDsKCQl4
cHRfZG9uZShjY2IpOwoJfQoJc3BseChzKTsKfQoKc3RhdGljIHZvaWQgaTkxdV9leGVjX3NjYih2
b2lkICphcmcsIGJ1c19kbWFfc2VnbWVudF90ICpkbV9zZWdzLCBpbnQgbnNlZywgaW50IGVycm9y
KQp7CglVTE9ORwliU2NiSWR4OwoJSTkxVV9TQ0IgKiBwU2NiOwoJdW5pb24gY2NiICpjY2I7CglJ
OTFVX0hDUyAqcEhjczsKCUk5MVVfU0cgKnNnOwoJc3RydWN0IGNjYl9zY3NpaW8gKmNzaW87Cglp
bnQgczsKCWludCBpOwoKCXBTY2IgPSAoSTkxVV9TQ0IgKilhcmc7CgljY2IgPSAodW5pb24gY2Ni
ICopcFNjYi0+U0NCX2NjYjsKCWNzaW8gPSAmY2NiLT5jc2lvOwoJcEhjcyA9IChJOTFVX0hDUyAq
KXhwdF9wYXRoX3NpbShjY2ItPmNjYl9oLnBhdGgpLT5zb2Z0YzsKCglpZihwU2NiLT5TQ0JfQ0RC
WzBdID09IDB4MykgewoKCQkvKiBkaXNhYmxlIFNDU0kgRElTQ09OTkVDVCBpZiBpdCBpcyAiUkVR
VUVTVCBTRU5TRSIgY29tbWFuZCAqLwoJCXByaW50ZigiLS1SRVFVRVNUIFNFTlNFLS0iKTsKICAg
ICAJCXBTY2ItPlNDQl9JZGVudCAmPSAweEJGOwoKCX0KCgoJaWYgKGVycm9yICE9IDApIHsKCQlp
ZiAoZXJyb3IgIT0gRUZCSUcpCgkJCXByaW50ZigiaWhhOiBVbmV4ZXBlY3RlZCBlcnJvciAweCV4
IHJldHVybmVkIGZyb20gYnVzX2RtYW1hcF9sb2FkXG4iLCBlcnJvcik7CgkJaWYgKGNjYi0+Y2Ni
X2guc3RhdHVzID09IENBTV9SRVFfSU5QUk9HKSB7CgkJCXhwdF9mcmVlemVfZGV2cShjY2ItPmNj
Yl9oLnBhdGgsIC8qY291bnQqLzEpOwoJCQljY2ItPmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfVE9P
X0JJR3xDQU1fREVWX1FGUlpOOwoJCX0KCQl0dWxfcmVsZWFzZV9zY2IocEhjcywgcFNjYik7CgkJ
eHB0X2RvbmUoY2NiKTsKCQlyZXR1cm47Cgl9CgoKLyoqKgoJcHJpbnRmKCJleGVjOiglZCAlZClj
ZGIoJWQpPSV4ICIscFNjYi0+U0NCX1RhcmdldCxwU2NiLT5TQ0JfTHVuLHBTY2ItPlNDQl9DREJM
ZW4scFNjYi0+U0NCX0NEQlswXSk7CgoJZm9yKGk9MDtpPHBTY2ItPlNDQl9DREJMZW47aSsrKXsK
CQlwcmludGYoIiV4ICIscFNjYi0+U0NCX0NEQltpXSk7Cgl9CgoJcHJpbnRmKCItLWV4ZWMoc2Vn
PSVkLHhmZXJsPSVkLGNkbD0lZCx0YWc9JTAyeCktLSIsbnNlZyxjc2lvLT5keGZlcl9sZW4scFNj
Yi0+U0NCX0NEQkxlbixwU2NiLT5TQ0JfVGFnTXNnKTsqKiovCQoKCXBTY2ItPlNDQl9CdWZMZW4g
PSBjc2lvLT5keGZlcl9sZW47CgoJaWYgKG5zZWcgPT0gMSkgewoJCXBTY2ItPlNDQl9CdWZQdHIg
PSAoVUxPTkcpZG1fc2Vncy0+ZHNfYWRkcjsKCX0KCWVsc2UgaWYgKG5zZWcgIT0gMCkgewoJCWJ1
c19kbWFfc2VnbWVudF90ICplbmRfc2VnOwoJCWJ1c19kbWFzeW5jX29wX3Qgb3A7CgoJCXNnID0g
cFNjYi0+U0NCX1NHTGlzdDsKCQllbmRfc2VnID0gZG1fc2VncyArIG5zZWc7CgoJCXdoaWxlIChk
bV9zZWdzIDwgZW5kX3NlZykgewoJCQlzZy0+U0dfTGVuID0gZG1fc2Vncy0+ZHNfbGVuOwoJCQlz
Zy0+U0dfUHRyID0gZG1fc2Vncy0+ZHNfYWRkcjsKCQkJc2crKzsKCQkJZG1fc2VncysrOwoJCX0K
CgkJcFNjYi0+U0NCX0ZsYWdzCXw9IFNDRl9TRzsKCQlwU2NiLT5TQ0JfQnVmUHRyID0gKFVMT05H
KXBTY2ItPlNDQl9TR1BBZGRyOwoJCXBTY2ItPlNDQl9TR0xlbiA9IG5zZWc7CgkJCiNpZiAwCgkJ
aWYgKChjY2ItPmNjYl9oLmZsYWdzICYgQ0FNX0RJUl9NQVNLKSA9PSBDQU1fRElSX0lOKQoJCQlv
cCA9IEJVU19ETUFTWU5DX1BSRVJFQUQ7CgkJZWxzZQoJCQlvcCA9IEJVU19ETUFTWU5DX1BSRVdS
SVRFOwoKCQlidXNfZG1hbWFwX3N5bmMocEhjcy0+YnVmZmVyX2RtYXQsIHBTY2ItPlNDQl9kbWFt
YXAsIG9wKTsKI2VuZGlmCgoJfQoKCXMgPSBzcGxjYW0oKTsKCWNjYi0+Y2NiX2gudGltZW91dF9j
aCA9IHRpbWVvdXQoaTkxdV90aW1lb3V0LCAoY2FkZHJfdClwU2NiLCAoY2NiLT5jY2JfaC50aW1l
b3V0ICogaHopLzEwMDApOwoKCXR1bF9leGVjX3NjYihwSGNzLCBwU2NiKTsKCXNwbHgocyk7Cn0K
Ci8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQoqKgoqKgoqKglTdGFydCBleGVjdXRpb24gb2YgYSBTQ1NJIGNvbW1hbmQuCioqCVRoaXMg
aXMgY2FsbGVkIGZyb20gdGhlIGdlbmVyaWMgU0NTSSBkcml2ZXIuCioqCioqCioqPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoqLwp2b2lk
IGk5MXVfYWN0aW9uKHN0cnVjdCBjYW1fc2ltICpzaW0sIHVuaW9uIGNjYiAqY2NiKQp7CiAgICBJ
OTFVX1NDQiAgKnBTY2I7CiAgICBJOTFVX0hDUyAgKnBIY3M7CiAgICBpbnQJICBmbGFnczsKLyog
ICAgc3RydWN0IHNjc2lfaW5xdWlyeV9kYXRhICppbnFfYnVmOwkqLwoKICAgIHBIY3MgPSAoSTkx
VV9IQ1MgICopIGNhbV9zaW1fc29mdGMoc2ltKTsKCiAgICBzd2l0Y2ggKGNjYi0+Y2NiX2guZnVu
Y19jb2RlKSB7CgkvKiBDb21tb24gY2FzZXMgZmlyc3QgKi8KCWNhc2UgWFBUX1NDU0lfSU86CS8q
IEV4ZWN1dGUgdGhlIHJlcXVlc3RlZCBJL08gb3BlcmF0aW9uICovCgljYXNlIFhQVF9SRVNFVF9E
RVY6CS8qIEJ1cyBEZXZpY2UgUmVzZXQgdGhlIHNwZWNpZmllZCBTQ1NJIGRldmljZSAqLwoJewoJ
ICAgIHN0cnVjdCBjY2Jfc2NzaWlvICpjc2lvID0gJmNjYi0+Y3NpbzsKCgkgICAgZmxhZ3MgPSBj
Y2ItPmNjYl9oLmZsYWdzOwoKCSAgICAvKgoJICAgICAqIExhc3QgdGltZSB3ZSBuZWVkIHRvIGNo
ZWNrIGlmIHRoaXMgQ0NCIG5lZWRzIHRvCgkgICAgICogYmUgYWJvcnRlZC4KCSAgICAgKi8KCSAg
ICBpZiAoKGNjYi0+Y2NiX2guc3RhdHVzICYgQ0FNX1NUQVRVU19NQVNLKSAhPSBDQU1fUkVRX0lO
UFJPRykgewoJCQl4cHRfZG9uZShjY2IpOwoJCQlyZXR1cm47CgkgICAgfQoJICAgIGNjYi0+Y2Ni
X2guc3RhdHVzIHw9IENBTV9TSU1fUVVFVUVEOwoKCSAgICAvKgoJICAgICAqIGdldCBhbiBzY2Ig
dG8gdXNlLiBJZiB0aGUgdHJhbnNmZXIKCSAgICAgKiBpcyBmcm9tIGEgYnVmIChwb3NzaWJseSBm
cm9tIGludGVycnVwdCB0aW1lKQoJICAgICAqIHRoZW4gd2UgY2FuJ3QgYWxsb3cgaXQgdG8gc2xl
ZXAKCSAgICAgKi8KCSAgICBpZiAoKHBTY2IgPSB0dWxfYWxsb2Nfc2NiKHBIY3MpKSA9PSBOVUxM
KSB7Ci8qKioJCQlwcmludGYoIi0tIXBTY2ItLSIpOyoqKi8KCQkJY2NiLT5jY2JfaC5zdGF0dXMg
PSBDQU1fUkVTUkNfVU5BVkFJTDsKCQkJeHB0X2RvbmUoY2NiKTsKCQkJcmV0dXJuOwoJICAgIH0K
CgkgICAgcFNjYi0+U0NCX2NjYiA9KFVMT05HKWNjYjsKCgkgICAgcFNjYi0+U0NCX1RhcmdldCA9
IGNjYi0+Y2NiX2gudGFyZ2V0X2lkOwoJICAgIHBTY2ItPlNDQl9MdW4gICAgPSBjY2ItPmNjYl9o
LnRhcmdldF9sdW47CiAgICAgICAgICAgIHBTY2ItPlNDQl9GbGFncyA9IFNDRl9QT1NUOwoJCQkv
KiBBZnRlciBTQ1NJIGRvbmUsIGNhbGwgcG9zdCByb3V0aW5lKi8KCSAgICBwU2NiLT5TQ0JfUG9z
dCA9ICh2b2lkICopaTkxdV9kb25lOwoKCSAgICAqKChVV09SRCAqKSZwU2NiLT5TQ0JfSGFTdGF0
KSA9IDA7CgoJICAgIGlmIChjY2ItPmNjYl9oLmZ1bmNfY29kZSA9PSBYUFRfUkVTRVRfREVWKSB7
CgkJICAgIHBTY2ItPlNDQl9PcGNvZGUgID0gQnVzRGV2UnN0OwoJCSAgICB0dWxfZXhlY19zY2Io
cEhjcywgcFNjYik7CgkgICAgfSAKCSAgICBlbHNlIHsKCSAgICAJcFNjYi0+U0NCX09wY29kZSAg
PSBFeGVjU0NTSTsKCgkJaWYoKGZsYWdzICYgQ0FNX0RJUl9NQVNLKSA9PSBDQU1fRElSX05PTkUp
CgkJCXBTY2ItPlNDQl9GbGFncyB8PSBTQ0ZfTk9fWEY7CgkJZWxzZSBpZihmbGFncyAmIENBTV9E
SVJfSU4pCgkJCXBTY2ItPlNDQl9GbGFncyB8PSBTQ0ZfRElOOwoJCWVsc2UgaWYoZmxhZ3MgJiBD
QU1fRElSX09VVCkKCQkJcFNjYi0+U0NCX0ZsYWdzIHw9IFNDRl9ET1VUOwoKCQlwU2NiLT5TQ0Jf
SWRlbnQgICAgID0gcFNjYi0+U0NCX0x1biB8IERJU0NfQUxMT1c7CgkJcFNjYi0+U0NCX0NEQkxl
biA9IGNzaW8tPmNkYl9sZW47CgkJaWYgKHBTY2ItPlNDQl9DREJMZW4gPiAxMikgewoJCQljY2It
PmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfSU5WQUxJRDsKCQkJdHVsX3JlbGVhc2Vfc2NiKHBIY3Ms
IHBTY2IpOwoJCQl4cHRfZG9uZShjY2IpOwoJCX0KCgkJaWYgKChmbGFncyAmIENBTV9DREJfUE9J
TlRFUikgIT0gMCkgewoJCQlpZiAoKGZsYWdzICYgQ0FNX0NEQl9QSFlTKSA9PSAwKSB7CgkJCQli
Y29weShjc2lvLT5jZGJfaW8uY2RiX3B0ciwgcFNjYi0+U0NCX0NEQiwgcFNjYi0+U0NCX0NEQkxl
bik7CgkJCX0gZWxzZSB7CgkJCQljY2ItPmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfSU5WQUxJRDsK
CQkJCXR1bF9yZWxlYXNlX3NjYihwSGNzLCBwU2NiKTsKCQkJCXhwdF9kb25lKGNjYik7CgkJCQly
ZXR1cm47CgkJCX0KCQl9IGVsc2UgewoJCQliY29weShjc2lvLT5jZGJfaW8uY2RiX2J5dGVzLCBw
U2NiLT5TQ0JfQ0RCLCBwU2NiLT5TQ0JfQ0RCTGVuKTsKCQl9CgoJICAgICAgICBpZiAoIShjY2It
PmNjYl9oLmZsYWdzICYgQ0FNX0RJU19BVVRPU0VOU0UpKSB7CgkJICAgIHBTY2ItPlNDQl9GbGFn
cyB8PSBTQ0ZfU0VOU0U7CgkJICAgIHBTY2ItPlNDQl9TZW5zZUxlbiA9IGNzaW8tPnNlbnNlX2xl
bjsKCQkgICAgcFNjYi0+U0NCX1NlbnNlUHRyID0gdnRvcGh5cygmY3Npby0+c2Vuc2VfZGF0YSk7
CgkJfQoKCQlpZigoZmxhZ3MgJiBDQU1fVEFHX0FDVElPTl9WQUxJRCkgIT0gMCAmJiAoY3Npby0+
dGFnX2FjdGlvbiAhPSBDQU1fVEFHX0FDVElPTl9OT05FKSl7CgkJICAgIAlwU2NiLT5TQ0JfVGFn
TXNnID0gY3Npby0+dGFnX2FjdGlvbjsKCQl9CgkJZWxzZXsKCQkgICAgCXBTY2ItPlNDQl9UYWdN
c2cgPSAwOwoJCX0KCgoKCSAgICAgICAgLyogT25seSB1c2UgUy9HIGlmIHRoZXJlIGlzIGEgdHJh
bnNmZXIgKi8KCQlpZiAoKGZsYWdzICYgQ0FNX0RJUl9NQVNLKSAhPSBDQU1fRElSX05PTkUpIHsK
CQoJCSAgICBpZiAoKGZsYWdzICYgQ0FNX1NDQVRURVJfVkFMSUQpID09IDApIHsKCQkJLyoKCQkJ
ICogV2UndmUgYmVlbiBnaXZlbiBhIHBvaW50ZXIKCQkJICogdG8gYSBzaW5nbGUgYnVmZmVyLgoJ
CQkgKi8KCQkJaWYgKChmbGFncyAmIENBTV9EQVRBX1BIWVMpPT0wKSB7CgkJCQlpbnQgczsKCQkJ
CWludCBlcnJvcjsKCi8qKioJCQkJcHJpbnRmKCItLUNBTV9EQVRBX1BIWVM9MC0tIik7KioqLwoJ
CQkJcyA9IHNwbHNvZnR2bSgpOwoJCQkJZXJyb3IgPSBidXNfZG1hbWFwX2xvYWQoCgkJCQkgICAg
cEhjcy0+ZG1hdCwKI2lmIDAKCQkJCSAgICBwU2NiLT5TQ0JfZG1hbWFwLAojZWxzZQoJCQkJICAg
IHBIY3MtPmRtYW1hcCwKI2VuZGlmCgkJCQkgICAgY3Npby0+ZGF0YV9wdHIsCgkJCQkgICAgY3Np
by0+ZHhmZXJfbGVuLAoJCQkJICAgIGk5MXVfZXhlY19zY2IsCgkJCQkgICAgcFNjYiwKCQkJCSAg
ICAvKmZsYWdzKi8wKTsKCQkJCWlmIChlcnJvciA9PSBFSU5QUk9HUkVTUykgewoJCQkJCS8qCgkJ
CQkJICogU28gYXMgdG8gbWFpbnRhaW4KCQkJCQkgKiBvcmRlcmluZywgZnJlZXplIHRoZQoJCQkJ
CSAqIGNvbnRyb2xsZXIgcXVldWUKCQkJCQkgKiB1bnRpbCBvdXIgbWFwcGluZyBpcwoJCQkJCSAq
IHJldHVybmVkLgoJCQkJCSAqLwoJCQkJCXhwdF9mcmVlemVfc2ltcShwSGNzLT5zaW0sCgkJCQkJ
CTEpOwoJCQkJCWNzaW8tPmNjYl9oLnN0YXR1cyB8PQoJCQkJCSAgICBDQU1fUkVMRUFTRV9TSU1R
OwoJCQkJfQoJCQkJc3BseChzKTsKCQkJfSBlbHNlIHsKCQkJCXN0cnVjdCBidXNfZG1hX3NlZ21l
bnQgc2VnOyAKCgkJCQkvKiBQb2ludGVyIHRvIHBoeXNpY2FsIGJ1ZmZlciAqLwoJCQkJc2VnLmRz
X2FkZHIgPQoJCQkJICAgIChidXNfYWRkcl90KWNzaW8tPmRhdGFfcHRyOwoJCQkJc2VnLmRzX2xl
biA9IGNzaW8tPmR4ZmVyX2xlbjsKCQkJCWk5MXVfZXhlY19zY2IocFNjYiwmc2VnLDEsMCk7CgkJ
CX0KCQkgICAgfSBlbHNlIHsKCQkJCXN0cnVjdCBidXNfZG1hX3NlZ21lbnQgKnNlZ3M7CgoJCQkJ
aWYgKChmbGFncyAmIENBTV9EQVRBX1BIWVMpICE9IDApCgkJCQkJcGFuaWMoImk5MXVfYWN0aW9u
IC0gUGh5c2ljYWwgIgoJCQkJCSAgICAgICJzZWdtZW50IHBvaW50ZXJzICIKCQkJCQkgICAgICAi
dW5zdXBwb3J0ZWQiKTsKCgkJCQlpZiAoKGZsYWdzJkNBTV9TR19MSVNUX1BIWVMpPT0wKQoJCQkJ
CXBhbmljKCJpOTF1X2FjdGlvbiAtIFZpcnR1YWwgIgoJCQkJCSAgICAgICJzZWdtZW50IGFkZHJl
c3NlcyAiCgkJCQkJICAgICAgInVuc3VwcG9ydGVkIik7CgoJCQkJc2VncyA9IChzdHJ1Y3QgYnVz
X2RtYV9zZWdtZW50ICopCgkJCQkJICAgIGNzaW8tPmRhdGFfcHRyOwoJCQkJaTkxdV9leGVjX3Nj
YihwU2NiLHNlZ3MsY3Npby0+c2dsaXN0X2NudCwwKTsKCgkJCX0KCQl9IGVsc2UgewoJCQlpbnQg
czsKCgkJCXMgPSBzcGxjYW0oKTsKCQkJY2NiLT5jY2JfaC50aW1lb3V0X2NoID0gdGltZW91dChp
OTF1X3RpbWVvdXQsIChjYWRkcl90KXBTY2IsIChjY2ItPmNjYl9oLnRpbWVvdXQgKiBoeikvMTAw
MCk7CgoJCQl0dWxfZXhlY19zY2IocEhjcywgcFNjYik7CgkJCXNwbHgocyk7CgkJfQkKCSAgICB9
CgkgICAgYnJlYWs7Cgl9CgoJY2FzZSBYUFRfRU5fTFVOOgkJLyogRW5hYmxlIExVTiBhcyBhIHRh
cmdldCAqLwoJY2FzZSBYUFRfVEFSR0VUX0lPOgkJLyogRXhlY3V0ZSB0YXJnZXQgSS9PIHJlcXVl
c3QgKi8KCWNhc2UgWFBUX0FDQ0VQVF9UQVJHRVRfSU86CS8qIEFjY2VwdCBIb3N0IFRhcmdldCBN
b2RlIENEQiAqLwoJY2FzZSBYUFRfQ09OVF9UQVJHRVRfSU86CS8qIENvbnRpbnVlIEhvc3QgVGFy
Z2V0IEkvTyBDb25uZWN0aW9uKi8KCWNhc2UgWFBUX0FCT1JUOgkJCS8qIEFib3J0IHRoZSBzcGVj
aWZpZWQgQ0NCICovCgkJLyogWFhYIEltcGxlbWVudCAqLwoJCWNjYi0+Y2NiX2guc3RhdHVzID0g
Q0FNX1JFUV9JTlZBTElEOwoJCXhwdF9kb25lKGNjYik7CgkJYnJlYWs7CgoJY2FzZSBYUFRfU0VU
X1RSQU5fU0VUVElOR1M6Cgl7CgkJLyogWFhYIEltcGxlbWVudCAqLwoJCWNjYi0+Y2NiX2guc3Rh
dHVzID0gQ0FNX1JFUV9DTVA7CgkJeHB0X2RvbmUoY2NiKTsKCQlicmVhazsKCX0KCgljYXNlIFhQ
VF9HRVRfVFJBTl9TRVRUSU5HUzoKCS8qIEdldCBkZWZhdWx0L3VzZXIgc2V0IHRyYW5zZmVyIHNl
dHRpbmdzIGZvciB0aGUgdGFyZ2V0ICovCgl7CgoJCXN0cnVjdAljY2JfdHJhbnNfc2V0dGluZ3Mg
KmN0czsKCgkJY3RzID0gJmNjYi0+Y3RzOwoKCQljdHMtPmZsYWdzID0gMDsKCQljdHMtPmZsYWdz
IHw9IENDQl9UUkFOU19ESVNDX0VOQjsKCgkJY3RzLT5mbGFncyB8PSBDQ0JfVFJBTlNfVEFHX0VO
QjsKCgkJY3RzLT5idXNfd2lkdGggPSAocEhjcy0+SENTX01heFRhciA9PSAxNikgPwoJCQlNU0df
RVhUX1dEVFJfQlVTXzE2X0JJVCA6IE1TR19FWFRfV0RUUl9CVVNfOF9CSVQ7CgoJCWN0cy0+c3lu
Y19wZXJpb2QgPSAxMjsKCQljdHMtPnN5bmNfb2Zmc2V0ID0gMTU7CgoJCWN0cy0+dmFsaWQgPSBD
Q0JfVFJBTlNfU1lOQ19SQVRFX1ZBTElECgkJCSAgIHwgQ0NCX1RSQU5TX1NZTkNfT0ZGU0VUX1ZB
TElECgkJCSAgIHwgQ0NCX1RSQU5TX0JVU19XSURUSF9WQUxJRAoJCQkgICB8IENDQl9UUkFOU19E
SVNDX1ZBTElECgkJCSAgIHwgQ0NCX1RSQU5TX1RRX1ZBTElEOwoKCQljY2ItPmNjYl9oLnN0YXR1
cyA9IENBTV9SRVFfQ01QOwoJCXhwdF9kb25lKGNjYik7CgkJYnJlYWs7Cgl9CgoJY2FzZSBYUFRf
Q0FMQ19HRU9NRVRSWToKCXsKCQlzdHJ1Y3QJICBjY2JfY2FsY19nZW9tZXRyeSAqY2NnOwoJCXVf
aW50MzJfdCBzaXplX21iOwoJCXVfaW50MzJfdCBzZWNzX3Blcl9jeWxpbmRlcjsKCgkJY2NnID0g
JmNjYi0+Y2NnOwoJCXNpemVfbWIgPSBjY2ctPnZvbHVtZV9zaXplCgkJCS8gKCgxMDI0TCAqIDEw
MjRMKSAvIGNjZy0+YmxvY2tfc2l6ZSk7CgkJCgkJaWYgKHNpemVfbWIgPj0gMTAyNCApIHsKCQkJ
Y2NnLT5oZWFkcyA9IDI1NTsKCQkJY2NnLT5zZWNzX3Blcl90cmFjayA9IDYzOwoJCX0gZWxzZSB7
CgkJCWNjZy0+aGVhZHMgPSA2NDsKCQkJY2NnLT5zZWNzX3Blcl90cmFjayA9IDMyOwoJCX0KCQlz
ZWNzX3Blcl9jeWxpbmRlciA9IGNjZy0+aGVhZHMgKiBjY2ctPnNlY3NfcGVyX3RyYWNrOwoJCWNj
Zy0+Y3lsaW5kZXJzID0gY2NnLT52b2x1bWVfc2l6ZSAvIHNlY3NfcGVyX2N5bGluZGVyOwoJCWNj
Yi0+Y2NiX2guc3RhdHVzID0gQ0FNX1JFUV9DTVA7CgkJeHB0X2RvbmUoY2NiKTsKCQlicmVhazsK
CX0KCgljYXNlIFhQVF9SRVNFVF9CVVM6CQkvKiBSZXNldCB0aGUgc3BlY2lmaWVkIFNDU0kgYnVz
ICovCgl7CgkJdHVsX3Jlc2V0X3Njc2kocEhjcyk7CS8qIERvIEhhcmR3YXJlIFJlc2V0ICYJKi8K
CQljY2ItPmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfQ01QOwoJCXhwdF9kb25lKGNjYik7CgkJYnJl
YWs7Cgl9CgljYXNlIFhQVF9URVJNX0lPOgkJLyogVGVybWluYXRlIHRoZSBJL08gcHJvY2VzcyAq
LwoJCS8qIFhYWCBJbXBsZW1lbnQgKi8KCQljY2ItPmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfSU5W
QUxJRDsKCQl4cHRfZG9uZShjY2IpOwoJCWJyZWFrOwoJY2FzZSBYUFRfUEFUSF9JTlE6CQkvKiBQ
YXRoIHJvdXRpbmcgaW5xdWlyeSAqLwoJewoJCXN0cnVjdCBjY2JfcGF0aGlucSAqY3BpID0gJmNj
Yi0+Y3BpOwoJCQoJCWNwaS0+dmVyc2lvbl9udW0gPSAxOyAvKiBYWFg/Pz8gKi8KCQljcGktPmhi
YV9pbnF1aXJ5ID0gUElfU0RUUl9BQkxFOwoJCWlmIChjY2ItPmNzaW8udGFnX2FjdGlvbiAhPSAw
KQoJCQljcGktPmhiYV9pbnF1aXJ5IHw9IFBJX1RBR19BQkxFOwoJCWlmKHBIY3MtPkhDU19NYXhU
YXIgPT0gMTYpCgkJCWNwaS0+aGJhX2lucXVpcnkgfD0gUElfV0lERV8xNjsKCQkJCgkJY3BpLT50
YXJnZXRfc3BydCA9IDA7CgkJY3BpLT5oYmFfbWlzYyA9IDA7CgkJY3BpLT5oYmFfZW5nX2NudCA9
IDA7CgkJY3BpLT5tYXhfdGFyZ2V0ID0gcEhjcy0+SENTX01heFRhci0xOwoJCWNwaS0+bWF4X2x1
biA9IDc7CgkJY3BpLT5pbml0aWF0b3JfaWQgPSBwSGNzLT5IQ1NfU0NTSV9JRDsKCQljcGktPmJ1
c19pZCA9IGNhbV9zaW1fYnVzKHNpbSk7CgkJc3RybmNweShjcGktPnNpbV92aWQsICJGcmVlQlNE
IiwgU0lNX0lETEVOKTsKCQlzdHJuY3B5KGNwaS0+aGJhX3ZpZCwgIkluaXRpbyIsIEhCQV9JRExF
Tik7CgkJc3RybmNweShjcGktPmRldl9uYW1lLCBjYW1fc2ltX25hbWUoc2ltKSwgREVWX0lETEVO
KTsKCQljcGktPnVuaXRfbnVtYmVyID0gY2FtX3NpbV91bml0KHNpbSk7CgkJY3BpLT5jY2JfaC5z
dGF0dXMgPSBDQU1fUkVRX0NNUDsKCQl4cHRfZG9uZShjY2IpOwoJCWJyZWFrOwoJfQoJZGVmYXVs
dDoKCQljY2ItPmNjYl9oLnN0YXR1cyA9IENBTV9SRVFfSU5WQUxJRDsKCQl4cHRfZG9uZShjY2Ip
OwoJCWJyZWFrOwoKCX0KfQoKdm9pZCBpOTF1X3BvbGwoc3RydWN0IGNhbV9zaW0gKnNpbSkKewoJ
STkxVV9IQ1MgICpwSGNzOwoKCXBIY3MgPSAoSTkxVV9IQ1MgICopIGNhbV9zaW1fc29mdGMoc2lt
KTsKCgl0dWxfaXNyKHBIY3MpOwp9CgoKdm9pZAppOTF1X2F0dGFjaCAocGNpY2lfdCBjb25maWdf
aWQsIGludCB1bml0KQp7CgogICAgdV9pbnQxNl90IGlvX3BvcnQ7CiAgICB1X2ludDMyX3QgaWQ7
CgogICAgVUNIQVIgICBpcnE7CiAgICBVTE9ORyAgIHdsdmFsOwogICAgSTkxVV9IQ1MgICAgKnBI
Y3MgPSAwOwogICAgSTkxVV9TQ0IgICAgKnBTY2I7CiAgICBpbnQgICAgIGVycm9yOwogICAgaW50
ICAgICBzOwogICAgaW50ICAgICBvcGVuaW5nczsKICAgIHN0cnVjdCBjYW1fZGV2cSAqZGV2cTsK
ICAgIHVuaW9uIGNjYgkqd29ya19jY2I7CgogICAgaWYoIHVuaXQgPj0gTUFYX1NVUFBPUlRFRF9B
REFQVEVSUykKCXJldHVybjsKCiNpZiAwCiAgICBpZiggcEhDU1t1bml0XSApCglyZXR1cm47CiNl
bmRpZgoKICAgIGlvX3BvcnQgPSAwOwogICAgaWYgKHBjaV9tYXBfcG9ydChjb25maWdfaWQsIFBD
SV9CQVNFQUREUjAsICZpb19wb3J0KSA9PSAwKQoJcmV0dXJuOwoKCiAgICBwSGNzID0gKEk5MVVf
SENTICopIG1hbGxvYyAoc2l6ZW9mIChJOTFVX0hDUyksIE1fREVWQlVGLCBNX05PV0FJVCk7CiAg
ICBpZiggIXBIY3MgKSB7CgkgICAgcHJpbnRmKCJpaGElZDogY2Fubm90IGFsbG9jYXRlIEhDUyAh
XG4iLCB1bml0KTsKCSAgICByZXR1cm47CiAgICB9CgogICAgYnplcm8gKHBIY3MsIHNpemVvZiAo
STkxVV9IQ1MpKTsKICAgIHBIY3MtPkhDU19CYXNlID0gaW9fcG9ydDsKICAgIHBIY3MtPkhDU19V
bml0ID0gdW5pdDsKLyoKICAgIGlmICghKHBjaV9tYXBfaW50KGNvbmZpZ19pZCwgKHZvaWQgKil0
dWxfaXNyLCAodm9pZCAqKXBIY3MsICZiaW9faW1hc2spKSkgewoJCWZyZWUocEhjcywgTV9ERVZC
VUYpOwoJCXJldHVybjsKICAgIH0KKi8KCgogICAgc3dpdGNoICgoaWQgPSBwY2lfY29uZl9yZWFk
KGNvbmZpZ19pZCwgUENJX0lEX1JFRykpKSB7CgoJICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTklD
OTQwOgoJICAgIGNhc2UgUENJX0RFVklDRV9JRF9JTklDOTQxOgoJICAgIGNhc2UgUENJX0RFVklD
RV9JRF9JTklDOTUwOgoJCWJyZWFrOwoKCSAgICBkZWZhdWx0OgoJCWZyZWUocEhjcywgTV9ERVZC
VUYpOwoJCXJldHVybjsKICAgIH0KCiAgICAvKiBBbGxvY2F0ZSBhIGRtYXRhZyBmb3Igb3VyIHRy
YW5zZmVyIERNQSBtYXBzICovCiAgICAvKiBETUEgdGFnIGZvciBtYXBwaW5nIGJ1ZmZlcnMgaW50
byBkZXZpY2UgdmlzaWJsZSBzcGFjZS4gKi8KICAgIC8qIFhYWCBTaG91bGQgYmUgYSBjaGlsZCBv
ZiB0aGUgUENJIGJ1cyBkbWEgdGFnICovCiNpZiAxIAogICAgZXJyb3IgPSBidXNfZG1hX3RhZ19j
cmVhdGUoLypwYXJlbnQqLyBOVUxMLAoJCQkJLyphbGlnbm1lbnQqLyAwLAoJCQkJLypib3VuZGFy
eSovIDAsCgkJCQkvKmxvd2FkZHIqLyAoMHhGRkZGRkZGRkwpLAoJCQkJLypoaWdoYWRkciovIEJV
U19TUEFDRV9NQVhBRERSLAoJCQkJLypmaWx0ZXIqLyBOVUxMLAoJCQkJLypmaWx0ZXJhcmcqLyBO
VUxMLAoJCQkJLyptYXhzaXplKi8gTUFYQlNJWkUsCgkJCQkvKm5zZWdtZW50cyovIEk5MVVfU0df
RU5UUlksCgkJCQkvKm1heHNlZ3N6Ki8gQlVTX1NQQUNFX01BWFNJWkVfMjRCSVQsCgkJCQkvKmZs
YWdzKi8gQlVTX0RNQV9BTExPQ05PVywKCQkJCSAgICZwSGNzLT5kbWF0KTsKI2VuZGlmCiNpZiAw
CiAgICBlcnJvciA9IGJ1c19kbWFfdGFnX2NyZWF0ZSgvKnBhcmVudCovIE5VTEwsCgkJCQkvKmFs
aWdubWVudCovIDAsCgkJCQkvKmJvdW5kYXJ5Ki8gMCwKCQkJCS8qbG93YWRkciovICgweEZGRkZG
RkZGTCksCgkJCQkvKmhpZ2hhZGRyKi8gQlVTX1NQQUNFX01BWEFERFIsCgkJCQkvKmZpbHRlciov
IE5VTEwsCgkJCQkvKmZpbHRlcmFyZyovIE5VTEwsCgkJCQkvKm1heHNpemUqLyBCVVNfU1BBQ0Vf
TUFYU0laRV8zMkJJVCwKCQkJCS8qbnNlZ21lbnRzKi8gQlVTX1NQQUNFX1VOUkVTVFJJQ1RFRCwK
CQkJCS8qbWF4c2Vnc3oqLyAoMHhGRkZGRkZMKSwKCQkJCS8qZmxhZ3MqLyAwLAoJCQkJICAgJnBI
Y3MtPmRtYXQpOwojZW5kaWYKIAogICAgaWYgKGVycm9yICE9IDApIHsKCXByaW50ZigiaWhhOiBD
b3VsZCBub3QgYWxsb2NhdGUgRE1BIHRhZyAtIGVycm9yICVkXG4iLAoJICAgICAgIGVycm9yKTsK
CWZyZWUocEhjcywgTV9ERVZCVUYpOwoJcmV0dXJuOwogICAgfQoKICAgIHBTY2IgPSAoSTkxVV9T
Q0IgKikgbWFsbG9jIChzaXplb2YgKEk5MVVfU0NCKSpNQVhfU0NCLCBNX0RFVkJVRiwgTV9OT1dB
SVQpOwogICAgaWYoICFwU2NiICkgewoJICAgIHByaW50ZigiaWhhJWQ6IGNhbm5vdCBhbGxvY2F0
ZSBTQ0IgIVxuIiwgdW5pdCk7CgkgICAgYnVzX2RtYV90YWdfZGVzdHJveShwSGNzLT5kbWF0KTsK
CSAgICBmcmVlKHBIY3MsIE1fREVWQlVGKTsKCSAgICByZXR1cm47CiAgICB9CiAgICBiemVybyAo
cFNjYiwgc2l6ZW9mIChJOTFVX0hDUykqTUFYX1NDQik7CgogICAgaW5pdF90dWxpcChwSGNzLCBw
U2NiLCBNQVhfU0NCKTsKCiAgICBpZiAoIShwY2lfbWFwX2ludChjb25maWdfaWQsICh2b2lkICop
dHVsX2lzciwgKHZvaWQgKilwSGNzLCAmY2FtX2ltYXNrKSkpIHsKCXByaW50ZigiaWhhJWQ6IENh
bid0IHBjaV9tYXBfaW50IFxuIiwgdW5pdCk7CglidXNfZG1hX3RhZ19kZXN0cm95KHBIY3MtPmRt
YXQpOwoJZnJlZShwU2NiLCBNX0RFVkJVRik7CglmcmVlKHBIY3MsIE1fREVWQlVGKTsKCXJldHVy
bjsKICAgIH0KCgogICAgLyoKICAgICoqIENyZWF0ZSB0aGUgZGV2aWNlIHF1ZXVlLiAgV2Ugb25s
eSBhbGxvdyBNQVhfU1RBUlQtMSBjb25jdXJyZW50CiAgICAqKiB0cmFuc2FjdGlvbnMgc28gd2Ug
Y2FuIGJlIHN1cmUgdG8gaGF2ZSBvbmUgZWxlbWVudCBmcmVlIGluIG91cgogICAgKiogc3RhcnQg
cXVldWUgdG8gcmVzZXQgdG8gdGhlIGlkbGUgbG9vcC4KICAgICovCiAgICBzID0gc3BsY2FtKCk7
CiAgICBvcGVuaW5ncyA9IE1BWF9TQ0ItMTsKICAgIGRldnEgPSBjYW1fc2ltcV9hbGxvYyhvcGVu
aW5ncyk7CiAgICBpZiAoZGV2cSA9PSBOVUxMKXsKCXNwbHgocyk7CglyZXR1cm47CiAgICB9Cgog
ICAgLyoKICAgICoqCU5vdyB0ZWxsIHRoZSBnZW5lcmljIFNDU0kgbGF5ZXIKICAgICoqCWFib3V0
IG91ciBidXMuCiAgICAqLwogICAgcEhjcy0+c2ltID0gY2FtX3NpbV9hbGxvYyhpOTF1X2FjdGlv
biwgaTkxdV9wb2xsLCAiaWhhIiwgcEhjcywKCQkJCXBIY3MtPkhDU19Vbml0ICwKCQkJCTEsIG9w
ZW5pbmdzLCBkZXZxKTsKICAgIGlmIChwSGNzLT5zaW0gPT0gTlVMTCkgewoJY2FtX3NpbXFfZnJl
ZShkZXZxKTsKCXNwbHgocyk7CglyZXR1cm47CiAgICB9CgogICAgaWYgKHhwdF9idXNfcmVnaXN0
ZXIocEhjcy0+c2ltLCAwKSAhPSBDQU1fU1VDQ0VTUykgewoJY2FtX3NpbV9mcmVlKHBIY3MtPnNp
bSwgVFJVRSk7CglzcGx4KHMpOwoJcmV0dXJuOwogICAgfQoKI2lmZGVmIF9fYWxwaGFfXwogICAg
YWxwaGFfcmVnaXN0ZXJfcGNpX3Njc2koY29uZmlnX2lkLT5idXMsIGNvbmZpZ19pZC0+c2xvdCwg
cEhjcy0+c2ltKTsKI2VuZGlmCQoKICAgIHdvcmtfY2NiID0geHB0X2FsbG9jX2NjYigpOwogICAg
aWYgKHhwdF9jcmVhdGVfcGF0aCgmcEhjcy0+cGF0aCwgTlVMTCwKCQkgICAgY2FtX3NpbV9wYXRo
KHBIY3MtPnNpbSksIENBTV9UQVJHRVRfV0lMRENBUkQsCgkJICAgIENBTV9MVU5fV0lMRENBUkQp
ICE9IENBTV9SRVFfQ01QKSB7Cgl4cHRfYnVzX2RlcmVnaXN0ZXIoY2FtX3NpbV9wYXRoKHBIY3Mt
PnNpbSkpOwoJY2FtX3NpbV9mcmVlKHBIY3MtPnNpbSwgVFJVRSk7Cgl4cHRfZnJlZV9jY2Iod29y
a19jY2IpOwoJc3BseChzKTsKCXJldHVybjsKICAgIH0KCiAgICBzcGx4KHMpOwogICAgcmV0dXJu
OwoKfQoKCgoKCnN0YXRpYwljaGFyKgppOTF1X3Byb2JlIChwY2ljaV90IHRhZywgcGNpZGlfdCB0
eXBlKQp7Cglzd2l0Y2ggKHR5cGUpIHsKCWNhc2UgUENJX0RFVklDRV9JRF9JTklDOTQwOgoJCXJl
dHVybiAoIklPSSBJT0ktNDIwM1UvQSBQQ0kgU0NTSSBhZGFwdGVyIik7CgljYXNlIFBDSV9ERVZJ
Q0VfSURfSU5JQzk0MToKCQlyZXR1cm4gKCJJT0kgSU5JQy05NDEgUENJIFNDU0kgYWRhcHRlciIp
OwoJY2FzZSBQQ0lfREVWSUNFX0lEX0lOSUM5NTA6CgkJcmV0dXJuICgiSU9JIElPSS05WDAwVVcg
UENJIFNDU0kgYWRhcHRlciIpOwoJfQoJcmV0dXJuIChOVUxMKTsKfQoKCgoK
--spruceIXCXKZOZOFSXCLQJWNYD
Content-Type: application/octet-stream; name="i91uscsi.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="i91uscsi.c"

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgoJCUNvcHlyaWdodCAoYykgMTk5NC0xOTk5IEluaXRpbyBDb3JwLgog
ICAgSW5pdGlvIEJTRCBkZXZpY2UgZHJpdmVyIGFyZSBjb3B5cmlnaHRlZCBieSBJbml0aW8gQ29y
cG9yYXRpb24uCiAgICBZb3VyIHJpZ2h0cyBvZiBvd25lcnNoaXAgYXJlIHN1YmplY3QgdG8gdGhl
IGxpbWl0YXRpb25zIGFuZCByZXN0cmljdGlvbnMKICAgIGltcG9zZWQgYnkgdGhlIGNvcHlyaWdo
dCBsYXdzLiBJbml0aW8gbWFrZXMgbm8gd2FycmFudHkgIG9mIGFueSBraW5kIGluCiAgICByZWdh
cmQgdG8gdGhpcyBtYXRlcmlhbCwgaW5jbHVkaW5nLCAgYnV0IG5vdCAgbGltaXRlZCB0bywgIHRo
ZSAgaW1wbGllZAogICAgd2FycmFudGllcyBvZiBtZXJjaGFudGFiaWxpdHkgYW5kIGZpdG5lc3Mg
IGZvciAgYSAgcGFydGljdWxhciAgcHVycG9zZS4KICAgIEluaXRpbyBpcyBub3QgbGlhYmxlIGZv
ciBhbnkgZXJyb3JzIGNvbnRhaW5lZCAgaGVyZWluICBvciBpbmNpZGVudGFsIG9yCiAgICBjb25z
ZXF1ZW50aWFsIGRhbWFnZXMgaW4gY29ubmVjdGlvbiB3aXRoIGZ1cm5pc2hpbmcsIHBlcmZvcm1h
bmNlIG9yIHVzZQogICAgb2YgdGhpcyBtYXRlcmlhbC4KICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgTW9k
dWxlOiBpOTF1c2NzaS5jCiAgICBEZXNjcmlwdGlvbjogUENJIEkvRiBmb3IgSU5JQy05NTAsIElO
SUMtOTQwaSwgJiBJTklDLTk0MSBTQ1NJIEJ1cyBNYXN0ZXIgQ29udHJvbGxlcgogICAgUmV2aXNp
b24gSGlzdG9yeToKCTExLzE4Lzk2IEhDLCBQb3J0IGZvciB0dWxpcAoJMDEvMDQvOTggV0gsIENo
YW5nZSB0byBmaXQgRnJlZUJTRAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2RlZmluZSBERUJVR19JTlRFUlJV
UFQgMAojZGVmaW5lIERFQlVHX1FVRVVFICAgICAwCiNkZWZpbmUgREVCVUdfU1RBVEUgICAgIDAK
CgoKCgojaW5jbHVkZSA8cGNpL2k5MXVzY3NpLmg+CgovKi0tLSBleHRlcm5hbCBmdW5jdGlvbnMg
LS0qLwpzdGF0aWMgdm9pZCAgICAgdHVsX3NlMl93YWl0KHZvaWQpOwoKI2lmIDEKc3RhdGljIHZv
aWQgICB0dWxfZG9fcGF1c2UoVUxPTkcgYW1vdW50ICk7CiNlbmRpZgoKCi8qLS0tIGZvcndhcmQg
cmVmcmVuY2UgLS0tKi8KCnN0YXRpYyBsb25nICAgICAgdHVsaXBfbWFpbihJOTFVX0hDUyAqcEhj
cyk7CgpzdGF0aWMgSTkxVV9TQ0IgKnR1bF9hbGxvY19zY2IoSTkxVV9IQ1MgKnBIY3MpOwpzdGF0
aWMgdm9pZCB0dWxfcmVsZWFzZV9zY2IoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpwU2NiKTsK
c3RhdGljIHZvaWQgdHVsX2FwcGVuZF9wZW5kX3NjYihJOTFVX0hDUyAqcEhjcywgSTkxVV9TQ0Ig
KnNjYnApOwpzdGF0aWMgdm9pZCB0dWxfcHVzaF9wZW5kX3NjYihJOTFVX0hDUyAqcEhjcywgSTkx
VV9TQ0IgKnNjYnApOwpzdGF0aWMgSTkxVV9TQ0IgKnR1bF9maW5kX3BlbmRfc2NiKEk5MVVfSENT
ICpwSGNzKTsKc3RhdGljIEk5MVVfU0NCICp0dWxfcG9wX3BlbmRfc2NiKEk5MVVfSENTICpwSGNz
LCBJOTFVX1NDQiAqcEFjdFNjYik7CnN0YXRpYyB2b2lkIHR1bF9hcHBlbmRfYnVzeV9zY2IoSTkx
VV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpzY2JwKTsKc3RhdGljIHZvaWQgdHVsX3VubGlua19idXN5
X3NjYihJOTFVX0hDUyAqcEhjcywgSTkxVV9TQ0IgKnBTY2IpOwpzdGF0aWMgdm9pZCB0dWxfYXBw
ZW5kX2RvbmVfc2NiKEk5MVVfSENTICpwSGNzLCBJOTFVX1NDQiAqc2NicCk7CnN0YXRpYyBJOTFV
X1NDQiAqdHVsX2ZpbmRfZG9uZV9zY2IoSTkxVV9IQ1MgKnBIY3MpOwpzdGF0aWMgSTkxVV9TQ0Ig
KnR1bF9hYm9ydF9jY2IoSTkxVV9IQ1MgKnBIY3MsIFVMT05HIGNjYik7CgpzdGF0aWMgbG9uZyAg
ICAgIHR1bF9uZXh0X3N0YXRlKEk5MVVfSENTICpwSGNzKTsKc3RhdGljIGxvbmcgICAgICB0dWxf
c3RhdGVfNShJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYyBsb25nICAgICAgdHVsX3hmZXJfZGF0YV9p
bihJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYyBsb25nICAgICAgdHVsX3hmZXJfZGF0YV9vdXQoSTkx
VV9IQ1MgKnBIY3MpOwpzdGF0aWMgbG9uZyAgICAgIHR1bF94cGFkX2luKEk5MVVfSENTICpwSGNz
KTsKc3RhdGljIGxvbmcgICAgICB0dWxfeHBhZF9vdXQoSTkxVV9IQ1MgKnBIY3MpOwpzdGF0aWMg
bG9uZyAgICAgIHR1bF9zdGF0dXNfbXNnKEk5MVVfSENTICpwSGNzKTsKLypzdGF0aWMgbG9uZyAg
ICAgIHR1bF9iYWRfc2VxKEk5MVVfSENTICpwSGNzKTsJMTAvMTMvOTcJKi8KCnN0YXRpYyBsb25n
ICAgICAgdHVsX21zZ2luKEk5MVVfSENTICpwSGNzKTsKc3RhdGljIGxvbmcgICAgICB0dWxfbXNn
aW5fc3luYyhJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYyBsb25nICAgICAgdHVsX21zZ2luX2Rpc2Nv
bihJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYyBsb25nICAgICAgdHVsX21zZ2luX2FjY2VwdChJOTFV
X0hDUyAqcEhjcyk7CnN0YXRpYyBsb25nICAgICAgdHVsX21zZ291dF9yZWplY3QoSTkxVV9IQ1Mg
KnBIY3MpOwpzdGF0aWMgbG9uZyAgICAgIHR1bF9tc2dpbl9leHRlbmQoSTkxVV9IQ1MgKnBIY3Mp
OwpzdGF0aWMgbG9uZyAgICAgIHR1bF9tc2dpbl9pZ25vcmVfd2lkX3Jlc2lkKEk5MVVfSENTICpw
SGNzKTsKCnN0YXRpYwlsb25nICAgICAgdHVsX21zZ291dF9zeW5jKEk5MVVfSENTICpwSGNzKTsK
c3RhdGljCWxvbmcgICAgICB0dWxfbXNnb3V0X25vcChJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYwls
b25nICAgICAgdHVsX21zZ291dF9pZGUoSTkxVV9IQ1MgKnBIY3MpOwpzdGF0aWMJbG9uZyAgICAg
IHR1bF9tc2dvdXRfYWJvcnRfdGFyZyhJOTFVX0hDUyAqcEhjcyk7CnN0YXRpYwlsb25nICAgICAg
dHVsX21zZ291dF9hYm9ydF90YWcoSTkxVV9IQ1MgKnBIY3MpOwoKc3RhdGljCXZvaWQgICAgIHR1
bF9zZWxlY3RfYXRuKEk5MVVfSENTICpwSGNzLCBJOTFVX1NDQiAqcFNjYik7CnN0YXRpYwl2b2lk
ICAgICB0dWxfc2VsZWN0X2F0bjMoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpwU2NiKTsKc3Rh
dGljCXZvaWQgICAgIHR1bF9zZWxlY3RfYXRuX3N0b3AoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NC
ICpwU2NiKTsKc3RhdGljCWxvbmcgICAgICB0dWxfcmVzZXRfc2NzaShJOTFVX0hDUyAqcEhjcyk7
CnN0YXRpYwlsb25nICAgICAgaW50X3R1bF9idXNmcmVlKEk5MVVfSENTICpwSGNzKTsKc3RhdGlj
CWxvbmcgICAgICBpbnRfdHVsX3Njc2lfcnN0KEk5MVVfSENTICpwSGNzKTsKc3RhdGljCWxvbmcg
ICAgICBpbnRfdHVsX3Jlc2VsKEk5MVVfSENTICpwSGNzKTsKc3RhdGljCXZvaWQgICAgIHR1bF9z
eW5jX2RvbmUoSTkxVV9IQ1MgKnBIY3MpOwpzdGF0aWMJdm9pZCAgICAgdHVsX3dkdHJfZG9uZShJ
OTFVX0hDUyAqcEhjcyk7CnN0YXRpYwlsb25nICAgICAgd2FpdF90dWxpcChJOTFVX0hDUyAqcEhj
cyk7Ci8qc3RhdGljIGxvbmcgICAgdHVsX21zZ2luX3Bhcl9lcnIoSTkxVV9IQ1MgKnBIY3MpOyov
CnN0YXRpYwl2b2lkICAgICB0dWxpcF9zY3NpKEk5MVVfSENTICpwSGNzKTsKc3RhdGljCWxvbmcg
ICAgICB0dWxfcG9zdF9zY3NpX3JzdChJOTFVX0hDUyAqcEhjcyk7CgpzdGF0aWMJdm9pZCAgICAg
dHVsX3NlMl9ld19lbihEV09SRCBwb3J0KTsKc3RhdGljCXZvaWQgICAgIHR1bF9zZTJfZXdfZHMo
RFdPUkQgcG9ydCk7CnN0YXRpYwlsb25nICAgICAgdHVsX3NlMl9yZF9hbGwoRFdPUkQgcG9ydCk7
CnN0YXRpYwl2b2lkICAgICB0dWxfc2UyX3VwZGF0ZV9hbGwoRFdPUkQgcG9ydCk7ICAgICAgIC8q
IHNldHVwIGRlZmF1bHQgcGF0dGVybiAqLwpzdGF0aWMJdm9pZCAgICAgdHVsX3JlYWRfZWVwcm9t
KERXT1JEIEN1ckJhc2UpOwoKCgkvKiAtLS0tIElOVEVSTkFMIFZBUklBQkxFUyAtLS0tICovCgov
Kk5WUkFNIG52cmFtLCAqbnZyYW1wID0gJm52cmFtOyovCnN0YXRpYyBOVlJBTSBpOTF1bnZyYW07
CnN0YXRpYyBOVlJBTSAqaTkxdW52cmFtcDsKCgoKc3RhdGljIFVDSEFSIGk5MXVkZnROdlJhbVs2
NF0gPSB7ICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLSBoZWFkZXIgLS0tLS0tLS0tLS0qLwoJ
MHgyNSwgMHhjOSwgICAgICAgICAgICAgLyogU2lnbmF0dXJlICAgICovCgkweDQwLCAgICAgICAg
ICAgICAgICAgICAvKiBTaXplICAgICAgICAgKi8KCTB4MDEsICAgICAgICAgICAgICAgICAgIC8q
IFJldmlzaW9uICAgICAqLwoJLyogLS0gSG9zdCBBZGFwdGVyIFN0cnVjdHVyZSAtLSAqLwoJMHg5
NSwgICAgICAgICAgICAgICAgICAgLyogTW9kZWxCeXRlMCAgICovCgkweDAwLCAgICAgICAgICAg
ICAgICAgICAvKiBNb2RlbEJ5dGUxICAgKi8KCTB4MDAsICAgICAgICAgICAgICAgICAgIC8qIE1v
ZGVsSW5mbyAgICAqLwoJMHgwMSwgICAgICAgICAgICAgICAgICAgLyogTnVtT2ZDaCAgICAgICov
CglOQkMxX0RFRkFVTFQsICAgICAgICAgICAvKiBCSU9TQ29uZmlnMSAgKi8KCTAsICAgICAgICAg
ICAgICAgICAgICAgIC8qIEJJT1NDb25maWcyICAqLwoJMCwgICAgICAgICAgICAgICAgICAgICAg
LyogSEFDb25maWcxICAgICovCgkwLCAgICAgICAgICAgICAgICAgICAgICAvKiBIQUNvbmZpZzIg
ICAgKi8KCS8qIFNDU0kgY2hhbm5lbCAwIGFuZCB0YXJnZXQgU3RydWN0dXJlICAqLwoJNywgICAg
ICAgICAgICAgICAgICAgICAgLyogU0NTSWlkICAgICAgICovCglOQ0MxX0RFRkFVTFQsICAgICAg
ICAgICAvKiBTQ1NJY29uZmlnMSAgKi8KCTAsICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU0lj
b25maWcyICAqLwoJOCwgICAgICAgICAgICAgICAgICAgICAgLyogTnVtU0NTSXRhcmdldCovCgoJ
TlRDX0RFRkFVTFQsIE5UQ19ERUZBVUxULCBOVENfREVGQVVMVCwgTlRDX0RFRkFVTFQsCglOVENf
REVGQVVMVCwgTlRDX0RFRkFVTFQsIE5UQ19ERUZBVUxULCBOVENfREVGQVVMVCwKCU5UQ19ERUZB
VUxULCBOVENfREVGQVVMVCwgTlRDX0RFRkFVTFQsIE5UQ19ERUZBVUxULAoJTlRDX0RFRkFVTFQs
IE5UQ19ERUZBVUxULCBOVENfREVGQVVMVCwgTlRDX0RFRkFVTFQsCgoJLyogU0NTSSBjaGFubmVs
IDEgYW5kIHRhcmdldCBTdHJ1Y3R1cmUgICovCgk3LCAgICAgICAgICAgICAgICAgICAgICAvKiBT
Q1NJaWQgICAgICAgKi8KCU5DQzFfREVGQVVMVCwgICAgICAgICAgIC8qIFNDU0ljb25maWcxICAq
LwoJMCwgICAgICAgICAgICAgICAgICAgICAgLyogU0NTSWNvbmZpZzIgICovCgk4LCAgICAgICAg
ICAgICAgICAgICAgICAvKiBOdW1TQ1NJdGFyZ2V0Ki8KCglOVENfREVGQVVMVCwgTlRDX0RFRkFV
TFQsIE5UQ19ERUZBVUxULCBOVENfREVGQVVMVCwKCU5UQ19ERUZBVUxULCBOVENfREVGQVVMVCwg
TlRDX0RFRkFVTFQsIE5UQ19ERUZBVUxULAoJTlRDX0RFRkFVTFQsIE5UQ19ERUZBVUxULCBOVENf
REVGQVVMVCwgTlRDX0RFRkFVTFQsCglOVENfREVGQVVMVCwgTlRDX0RFRkFVTFQsIE5UQ19ERUZB
VUxULCBOVENfREVGQVVMVCwKCTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCgkwLCAwIH07
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgLSBDaGVja1N1bSAtICAgICAgICAgICAg
Ki8KCgpzdGF0aWMgVUNIQVIgICAgdHVsX3JhdGVfdGJsWzhdID0gICAgICAgLyogZmFzdCAyMCAg
ICAgICovCgkJewoJCQkJLyogbmFub3NlY29uZCBkZXZpZGUgYnkgNCAqLwoJCQkxMiwgICAgIC8q
IDUwbnMsICAyME0gICAqLwoJCQkxOCwgICAgIC8qIDc1bnMsICAxMy4zTSAqLwoJCQkyNSwgICAg
IC8qIDEwMG5zLCAxME0gICAqLwoJCQkzMSwgICAgIC8qIDEyNW5zLCA4TSAgICAqLwoJCQkzNywg
ICAgIC8qIDE1MG5zLCA2LjZNICAqLwoJCQk0MywgICAgIC8qIDE3NW5zLCA1LjdNICAqLwoJCQk1
MCwgICAgIC8qIDIwMG5zLCA1TSAgICAqLwoJCQk2MiAgICAgIC8qIDI1MG5zLCA0TSAgICAqLwoJ
CX07CgoKCiNpZiAxCnN0YXRpYyB2b2lkIHR1bF9kb19wYXVzZSggVUxPTkcgYW1vdW50ICkgLyog
UGF1c2UgZm9yIGFtb3VudCoxIG1pbGxpc2Vjb25kcyAqLwp7CiAgICBVTE9ORyBpOwoKICAgIGZv
ciAoaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykgICAgICAgICAvKiB3YWl0ICAgICAgKi8KCURFTEFZ
ICgxMDAwKTsgIC8qIGRlbGF5IDEgbXNlYyAqLwp9CiNlbmRpZgoKLyotLSBmb3J3YXJkIHJlZmVy
ZW5jZSAtLSovCiNpZiAwCnN0YXRpYyB2b2lkIHR1bF9zbmFwZHVtcChVTE9ORyAqcHRyLCBpbnQg
bGVuZ3RoKQp7CiAgICBpbnQgY29sLCByb3c7CiAgICBpbnQgaSwgaWR4OwoKICAgIHJvdyA9IGxl
bmd0aCAvIDE2ICsgKChsZW5ndGggJSAxNikgPyAxIDogMCk7CiAgICBpZHggPSAwOwogICAgcHJp
bnRrKCJcblxyIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgcm93OyBpKyspCgl7CglwcmludGYoIk9m
ZnNldCAlMDR4IGF0ICUwOGx4IDogICIsIGlkeCwgKFVMT05HKSBwdHIpOwoJZm9yIChjb2wgPSAw
OyAoY29sIDwgMikgJiAoaWR4IDwgbGVuZ3RoKTsgY29sKyssIGlkeCs9NCkKCSAgICB7CgkgICAg
cHJpbnRmKCIgJTA4bHgiLCAqcHRyKyspOwoJICAgIH0KCXByaW50aygiIC0iKTsKCWZvciAoY29s
ID0gMDsgKGNvbCA8IDIpICYgKGlkeCA8IGxlbmd0aCk7IGNvbCsrLCBpZHgrPTQpCgkgICAgewoJ
ICAgIHByaW50aygiICUwOGx4IiwgKnB0cisrKTsKCSAgICB9CglwcmludGsoIlxuXHIiKTsKCX0K
fQojZW5kaWYKLyotLS0gZm9yd2FyZCByZWZlcmVuY2UgLS0tKi8KCi8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCglVc2Ug
bWVtZW9yeSByZWZyZXNoIHRpbWUgICAgICAgIH4gMTV1cyAqIDIKKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0YXRp
YyB2b2lkIHR1bF9zZTJfd2FpdCgpCnsKI2lmIDEKCURFTEFZICg1KTsgIC8qIGRlbGF5IDUgdXNl
YyAqLwojZWxzZQogICAgVUNIQVIgcmVhZEJ5dGU7CgogICAgcmVhZEJ5dGUgPSBUVUxfUkQoIDB4
NjEgKTsKICAgIGlmICggKHJlYWRCeXRlICYgMHgxMCkgPT0gMHgxMCkgewoJZm9yICg7IDspIHsK
CSAgICByZWFkQnl0ZSA9IFRVTF9SRCggMHg2MSApOwoJICAgIGlmICggKHJlYWRCeXRlICYgMHgx
MCkgPT0gMHgxMCkKCQlicmVhazsKCX0KCWZvciAoOzspIHsKCSAgICByZWFkQnl0ZSA9IFRVTF9S
RCggMHg2MSApOwoJICAgIGlmICggKHJlYWRCeXRlICYgMHgxMCkgIT0gMHgxMCkKCQlicmVhazsK
CX0KICAgIH0gZWxzZSB7Cglmb3IgKDsgOyApIHsKCSAgICByZWFkQnl0ZSA9IFRVTF9SRCggMHg2
MSApOwoJICAgIGlmICggKHJlYWRCeXRlICYgMHgxMCkgPT0gMHgxMCkKCQlicmVhazsKCX0KCWZv
ciAoOyA7ICkgewoJICAgIHJlYWRCeXRlID0gVFVMX1JEKCAweDYxICk7CgkgICAgaWYgKCAocmVh
ZEJ5dGUgJiAweDEwKSAhPSAweDEwKQoJCWJyZWFrOwoJfQogICAgfQojZW5kaWYKfQoKCi8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKIElucHV0OiBpbnN0cnVjdGlvbiBmb3IgIFNlcmlhbCBFMlBST00KCioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
c3RhdGljIHZvaWQgdHVsX3NlMl9pbnN0cihEV09SRCBwb3J0LCBVQ0hBUiBpbnN0cikKewogICAg
aW50IGk7CiAgICBVQ0hBUiBiOwoKICAgIFRVTF9XUihwb3J0LCBTRTJDUyB8IFNFMkRPKTsgICAg
IC8qIGNzK3N0YXJ0IGJpdCAqLwogICAgdHVsX3NlMl93YWl0KCk7CiAgICBUVUxfV1IocG9ydCwg
U0UyQ1MgfCBTRTJDTEsgfCBTRTJETyk7IC8qICtDTEsgKi8KICAgIHR1bF9zZTJfd2FpdCgpOwoK
ICAgIGZvciAoIGkgPSAwOyBpIDwgODsgaSsrKSB7CglpZiAoaW5zdHIgJiAweDgwKQoJICAgIGIg
PSAgU0UyQ1MgfCBTRTJETzsgICAgICAgICAvKiAtQ0xLK2RhdGFCaXQgKi8KCWVsc2UKCSAgICBi
ID0gIFNFMkNTIDsgICAgICAgICAgICAgICAgLyogLUNMSyAqLwoJVFVMX1dSKHBvcnQsIGIpOwoJ
dHVsX3NlMl93YWl0KCk7CglUVUxfV1IocG9ydCwgYiB8IFNFMkNMSyk7ICAgICAgICAvKiArQ0xL
ICovCgl0dWxfc2UyX3dhaXQoKTsKCWluc3RyIDw8PSAxOwogICAgfQogICAgVFVMX1dSKHBvcnQs
IFNFMkNTICk7ICAgICAgICAgICAgICAgIC8qIC1DTEsgKi8KICAgIHR1bF9zZTJfd2FpdCgpOwog
ICAgcmV0dXJuOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogRnVuY3Rpb24gbmFtZSAgOiB0dWxfc2UyX2V3X2Vu
CiBEZXNjcmlwdGlvbiAgICA6IEVuYWJsZSBlcmFzZS93cml0ZSBzdGF0ZSBvZiBzZXJpYWwgRUVQ
Uk9NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8Kc3RhdGljIHZvaWQgdHVsX3NlMl9ld19lbihEV09SRCBwb3J0KQp7CiAg
ICB0dWxfc2UyX2luc3RyKHBvcnQsIDB4MzApOyAgICAgICAgICAgICAgICAgICAgICAgLyogRVdF
TiAqLwogICAgVFVMX1dSKHBvcnQsIDApOyAgICAgLyogLUNTICAqLwogICAgdHVsX3NlMl93YWl0
KCk7Cn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiBEaXNhYmxlIGVyYXNlL3dyaXRlIHN0YXRlIG9mIHNl
cmlhbCBFRVBST00KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RhdGljIHZvaWQgdHVsX3NlMl9ld19kcyhE
V09SRCBwb3J0KQp7CiAgICB0dWxfc2UyX2luc3RyKHBvcnQsICAwKTsgICAgICAgICAvKiBFV0RT
ICovCiAgICBUVUxfV1IocG9ydCwgMCk7ICAgICAvKiAtQ1MgICovCiAgICB0dWxfc2UyX3dhaXQo
KTsKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKCUlucHV0ICA6YWRkcmVzcyBvZiBTZXJpYWwgRTJQUk9NCglPdXRw
dXQgOnZhbHVlIHN0b3JlZCBpbiAgU2VyaWFsIEUyUFJPTQoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpzdGF0aWMgVVNI
T1JUIHR1bF9zZTJfcmQoRFdPUkQgcG9ydCwgVUxPTkcgYWRyKQp7CiAgICBVQ0hBUiBpbnN0ciwg
cmVhZEJ5dGU7DQogICAgVVNIT1JUIHJlYWRXb3JkOw0KICAgIGludCBpOw0KDQogICAgaW5zdHIg
PSAoVUNIQVIpKCAgYWRyICB8IDB4ODAgKTsNCiAgICB0dWxfc2UyX2luc3RyKHBvcnQsIGluc3Ry
KTsgICAgICAgICAgICAgICAgICAgICAgIC8qIFJFQUQgSU5TVFIgKi8NCiAgICByZWFkV29yZCA9
IDA7DQoNCiAgICBmb3IgKCBpID0gMTU7IGkgPj0gMDsgaS0tKSB7DQoJVFVMX1dSKHBvcnQsIFNF
MkNTIHwgU0UyQ0xLICk7ICAgIC8qICtDTEsgKi8NCgl0dWxfc2UyX3dhaXQoKTsNCglUVUxfV1Io
cG9ydCwgU0UyQ1MgKTsgICAgICAgICAgICAgLyogLUNMSyAqLw0KDQoJCS8qIHNhbXBsZSBkYXRh
IGFmdGVyIHRoZSBmb2xsb3dpbmcgZWRnZSBvZiBjbG9jayAgKi8NCglyZWFkQnl0ZSA9IFRVTF9S
RChwb3J0KTsNCglyZWFkQnl0ZSAmPSBTRTJESTsNCglyZWFkV29yZCArPSAocmVhZEJ5dGUgPDwg
aSk7DQoJdHVsX3NlMl93YWl0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDYvMjAvOTUgKi8NCiAgICB9DQoNCiAgICBUVUxfV1IocG9ydCwgMCApOyAgICAvKiBu
byBjaGlwIHNlbGVjdCAqLw0KICAgIHR1bF9zZTJfd2FpdCgpOw0KICAgIHJldHVybiByZWFkV29y
ZDsNCn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqDQogSW5wdXQ6IG5ldyB2YWx1ZSBpbiAgU2VyaWFsIEUyUFJPTSwg
YWRkcmVzcyBvZiBTZXJpYWwgRTJQUk9NDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3RhdGljIHZvaWQgdHVsX3Nl
Ml93cihEV09SRCBwb3J0LCBVQ0hBUiBhZHIsIFVTSE9SVCB3cml0ZVdvcmQpDQp7DQogICAgVUNI
QVIgcmVhZEJ5dGU7DQogICAgVUNIQVIgaW5zdHI7DQogICAgaW50IGk7DQoNCiAgICBpbnN0ciA9
IChVQ0hBUikoICBhZHIgIHwgMHg0MCApOw0KICAgIHR1bF9zZTJfaW5zdHIocG9ydCwgaW5zdHIp
OyAgICAgICAgICAgICAgICAgICAgICAvKiBXUklURSBJTlNUUiAqLw0KICAgIGZvciAoIGkgPSAx
NTsgaSA+PSAwOyBpLS0pIHsNCglpZiAod3JpdGVXb3JkICYgMHg4MDAwKQ0KCSAgICBUVUxfV1Io
cG9ydCAsIFNFMkNTIHwgU0UyRE8pOyAvKiAtQ0xLK2RhdGFCaXQgMSAqLw0KCWVsc2UNCgkgICAg
VFVMX1dSKHBvcnQgLCBTRTJDUyApOyAgICAgICAgICAgICAgICAgIC8qIC1DTEsrZGF0YUJpdCAw
ICovDQoJdHVsX3NlMl93YWl0KCk7DQoJVFVMX1dSKHBvcnQgLCBTRTJDUyB8IFNFMkNMSyApOyAg
IC8qICtDTEsgKi8NCgl0dWxfc2UyX3dhaXQoKTsNCgl3cml0ZVdvcmQgPDw9IDE7DQogICAgfQ0K
ICAgIFRVTF9XUihwb3J0ICwgU0UyQ1MpOyAvKiAtQ0xLICovDQogICAgdHVsX3NlMl93YWl0KCk7
DQogICAgVFVMX1dSKHBvcnQgLCAwKTsgICAgIC8qIC1DUyAgKi8NCiAgICB0dWxfc2UyX3dhaXQo
KTsNCg0KICAgIFRVTF9XUihwb3J0ICwgU0UyQ1MpOyAvKiArQ1MgICovDQogICAgdHVsX3NlMl93
YWl0KCk7DQoNCiAgICBmb3IgKDsgOyApIHsNCglUVUxfV1IocG9ydCwgU0UyQ1MgfCBTRTJDTEsp
OyAgICAgICAvKiArQ0xLICovDQoJdHVsX3NlMl93YWl0KCk7DQoJVFVMX1dSKHBvcnQsIFNFMkNT
ICk7ICAgICAgICAgICAgICAgLyogLUNMSyAqLw0KCXR1bF9zZTJfd2FpdCgpOw0KCWlmICgocmVh
ZEJ5dGUgPSBUVUxfUkQocG9ydCkpICYgU0UyREkgKQ0KCSAgICBicmVhazsgICAgICAgICAgICAg
ICAgICAgICAgLyogd3JpdGUgY29tcGxldGUgKi8NCiAgICB9DQogICAgVFVMX1dSKHBvcnQsIDAp
OyAgICAgLyogLUNTICovDQogICAgcmV0dXJuOw0KfQ0KDQoNCi8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIFJl
YWQgU0NTSSBIL0EgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gc2VyaWFsIEVFUFJPTQ0K
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLw0Kc3RhdGljIGxvbmcgdHVsX3NlMl9yZF9hbGwoRFdPUkQgcG9ydCkN
CnsKICAgIGludCBpOw0KICAgIFVMT05HIGNoa3N1bSA9IDA7DQogICAgVVNIT1JUICpucDsNCgog
ICAgaTkxdW52cmFtcCA9ICZpOTF1bnZyYW07DQogICAgbnAgPSAoVVNIT1JUICogKWk5MXVudnJh
bXA7DQogICAgZm9yICggaSA9IDA7IGkgPCAzMjsgaSsrKSB7CgkqbnArKyA9IHR1bF9zZTJfcmQo
cG9ydCwgaSk7DQogICAgfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS1JcyBzaWduYXR1cmUgImlu
aSIgb2sgPyAtLS0tLS0tLS0tLS0tLS0tKi8NCiAgICBpZiAoIGk5MXVudnJhbXAtPk5WTV9TaWdu
YXR1cmUgIT0gSU5JX1NJR05BVFVSRSApDQoJcmV0dXJuIC0gMTsNCiNpZiAwDQoJLyotLS0tLS0t
LS0tLS0tLS0tLS0tLUlzIE1vZGVsIyBieXRlIDEgIjkxIiBvayA/IC0tLS0tLS0tLS0tLS0tLS0q
Lw0KLy8gICAgaWYgKCBpOTF1bnZyYW1wLT5Nb2RlbEJ5dGUwICE9IDB4OTEpICAgICAgLyogNDog
ICBNb2RlbCBudW1iZXIgKGJ5dGUgMCkgICovDQovLyAgICAgIHJldHVybiAtIDE7DQojZW5kaWYN
CgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSXMgY2tlY2tzdW0gb2sgPyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8NCiAgICBucCA9IChVU0hPUlQgKiApaTkxdW52cmFtcDsNCiAgICBmb3IgKCBp
ID0gMDsgaSA8IDMxOyBpKyspDQoJY2hrc3VtICs9ICpucCsrOw0KICAgIGlmICggaTkxdW52cmFt
cC0+TlZNX0NoZWNrU3VtICE9IChVU0hPUlQpY2hrc3VtICkNCglyZXR1cm4gLSAxOw0KICAgIHJl
dHVybiAxOw0KfQ0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIFVwZGF0ZSBTQ1NJIEgvQSBjb25maWd1
cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSBzZXJpYWwgRUVQUk9NDQoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpz
dGF0aWMgdm9pZCB0dWxfc2UyX3VwZGF0ZV9hbGwoRFdPUkQgcG9ydCkgICAvKiBzZXR1cCBkZWZh
dWx0IHBhdHRlcm4gKi8NCnsNCiAgICBpbnQgaTsNCiAgICBVTE9ORyBjaGtzdW0gPSAwOw0KICAg
IFVTSE9SVCAqIG5wLCAqbnAxOw0KDQogICAgaTkxdW52cmFtcCA9ICZpOTF1bnZyYW07DQoJLyog
Q2FsY3VsYXRlIGNoZWNrc3VtIGZpcnN0ICovDQogICAgbnAgPSAoVVNIT1JUICogKWk5MXVkZnRO
dlJhbTsNCiAgICBmb3IgKCBpID0gMDsgaSA8IDMxOyBpKyspDQoJY2hrc3VtICs9ICpucCsrOw0K
ICAgICpucCA9IChVU0hPUlQpY2hrc3VtOw0KICAgIHR1bF9zZTJfZXdfZW4ocG9ydCk7ICAgICAg
ICAgICAgICAgICAgICAgLyogRW5hYmxlIHdyaXRlICAqLw0KDQogICAgbnAgPSAoVVNIT1JUICog
KWk5MXVkZnROdlJhbTsNCiAgICBucDEgPSAoVVNIT1JUICogKWk5MXVudnJhbXA7DQogICAgZm9y
ICggaSA9IDA7IGkgPCAzMjsgaSsrLCBucCsrLCBucDErKykgew0KCWlmICgqbnAgIT0gKm5wMSkg
ew0KCSAgICB0dWxfc2UyX3dyKHBvcnQsIGksICpucCk7DQoJfQ0KICAgIH0NCg0KICAgIHR1bF9z
ZTJfZXdfZHMocG9ydCk7ICAgICAgICAgICAgICAgICAgICAgLyogRGlzYWJsZSB3cml0ZSAgICov
DQogICAgcmV0dXJuOw0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KIEZ1bmN0aW9uIG5hbWUgIDog
cmVhZF9lZXByb20NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3RhdGljIHZvaWQgdHVsX3JlYWRfZWVw
cm9tKERXT1JEIEN1ckJhc2UpDQp7CiAgICBVQ0hBUiBnY3RybDsNCgogICAgaTkxdW52cmFtcCA9
ICZpOTF1bnZyYW07DQoJLyotLS0tLS1FbmFibGUgRUVQcm9tIHByb2dyYW1taW5nIC0tLSovDQog
ICAgZ2N0cmwgPSBUVUxfUkQoQ3VyQmFzZSArIFRVTF9HQ1RSTCk7DQogICAgVFVMX1dSKEN1ckJh
c2UgKyBUVUxfR0NUUkwsIGdjdHJsIHwgVFVMX0dDVFJMX0VFUFJPTV9CSVQgKTsNCgogICAgaWYg
KCB0dWxfc2UyX3JkX2FsbChDdXJCYXNlKyBUVUxfTlZSQU0pICE9IDEgKSAgew0KCXR1bF9zZTJf
dXBkYXRlX2FsbChDdXJCYXNlKyBUVUxfTlZSQU0pOyAgICAvKiBzZXR1cCBkZWZhdWx0IHBhdHRl
cm4gKi8KCXR1bF9zZTJfcmRfYWxsKEN1ckJhc2UrIFRVTF9OVlJBTSk7ICAgICAgICAgICAgICAg
ICAvKiBsb2FkIGFnYWluICAqLwogICAgfQoKCS8qLS0tLS0tIERpc2FibGUgRUVQcm9tIHByb2dy
YW1taW5nIC0tLSovDQogICAgZ2N0cmwgPSBUVUxfUkQoQ3VyQmFzZSArIFRVTF9HQ1RSTCk7DQog
ICAgVFVMX1dSKEN1ckJhc2UgKyBUVUxfR0NUUkwsIGdjdHJsICYgflRVTF9HQ1RSTF9FRVBST01f
QklUICk7DQp9IC8qIHJlYWRfZWVwcm9tICovDQoKc3RhdGljIHZvaWQgdHVsX3N0b3BfYm0oSTkx
VV9IQ1MgKnBIY3MpDQp7CgogICAgaWYgKFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9YU3Rh
dHVzKSAmIFhQRU5EKQ0KCXsgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIERNQSB4ZmVyIGlz
IHBlbmRpbmcsIGFib3J0IERNQSB4ZmVyICovDQoJVFVMX1dSKHBIY3MtPkhDU19CYXNlKyBUVUxf
WENtZCwgVEFYX1hfQUJUICk7DQoJCQkJLyogd2FpdCBBYm9ydCBETUEgeGZlciBkb25lICovDQoJ
d2hpbGUgKChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfSW50KSAmIFhBQlQpID09IDApOw0K
CX0NCiAgICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfRkxVU0hfRklG
Tyk7DQp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nIGluaXRfdHVsaXAoSTkx
VV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpzY2JwLCBpbnQgbnVtX3NjYikKewogICAgaW50ICAgICAg
ICAgaTsKICAgIFdPUkQgICAgICAgICpwd0ZsYWdzOwogICAgSTkxVV9TQ0IgICAgKnBUbXBTY2I7
CiAgICBJOTFVX1NDQiAgICAqcFByZXZTY2IgPSBOVUxMOwogICAgVENTICpwVGNiOwoKICAgIHBI
Y3MtPkhDU19TRmlmbyA9IHBIY3MtPkhDU19CYXNlICsgVFVMX1NGaWZvOwogICAgcEhjcy0+SENT
X1NDbWQgID0gcEhjcy0+SENTX0Jhc2UgKyBUVUxfU0NtZDsKCiAgICBwSGNzLT5IQ1NfTnVtU2Ni
cyA9IG51bV9zY2I7CiAgICBwSGNzLT5IQ1NfU2VtYXBoID0gMTsKICAgIHBIY3MtPkhDU19KU1N0
YXR1czAgPSAwOwogICAgcEhjcy0+SENTX1NjYiA9IHNjYnA7CiAgICBmb3IgKGkgPSAwLCBwVG1w
U2NiID0gc2NicDsgaSA8IG51bV9zY2I7IGkrKywgcFRtcFNjYisrKSB7CglwVG1wU2NiLT5TQ0Jf
VGFnSWQgPSBpOwoJcFRtcFNjYi0+U0NCX1NHUEFkZHIgPSAoVUxPTkcpIHZ0b3BoeXMocFRtcFNj
Yi0+U0NCX1NHTGlzdCk7CglpZiAoaSAhPSAwKQoJICAgIHBQcmV2U2NiLT5TQ0JfTnh0U2NiID0g
cFRtcFNjYjsKCXBQcmV2U2NiID0gcFRtcFNjYjsKICAgIH0KICAgIHBQcmV2U2NiLT5TQ0JfTnh0
U2NiID0gTlVMTDsKCgogICAgcEhjcy0+SENTX0ZpcnN0QXZhaWwgPSBzY2JwOw0KICAgIHBIY3Mt
PkhDU19MYXN0QXZhaWwgPSBwUHJldlNjYjsNCgogICAgcEhjcy0+SENTX0ZpcnN0UGVuZCA9IE5V
TEw7CiAgICBwSGNzLT5IQ1NfTGFzdFBlbmQgPSBOVUxMOwogICAgcEhjcy0+SENTX0ZpcnN0RG9u
ZSA9IE5VTEw7CiAgICBwSGNzLT5IQ1NfTGFzdERvbmUgPSBOVUxMOwogICAgcEhjcy0+SENTX0Fj
dFNjYiA9IE5VTEw7CiAgICBwSGNzLT5IQ1NfQWN0VGNzID0gTlVMTDsKCiAgICBwSGNzLT5IQ1Nf
SW50ciA9IFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9QSU5UTCk7CgogICAgdHVsX3JlYWRf
ZWVwcm9tKCBwSGNzLT5IQ1NfQmFzZSApOwoJCQkvKi0tLS0tLS0tLS0gZ2V0IEgvQSBjb25maWd1
cmF0aW9uIC0tLS0tLS0tLS0tLS0qLw0KICAgIGlmIChpOTF1bnZyYW1wLT5OVk1fU0NTSUluZm9b
MF0uTlZNX051bU9mVGFyZyA9PSAxNikKCXBIY3MtPkhDU19NYXhUYXIgPSAxNjsKICAgIGVsc2UK
CXBIY3MtPkhDU19NYXhUYXIgPSA4OwoKICAgIHBIY3MtPkhDU19Db25maWcgPSBpOTF1bnZyYW1w
LT5OVk1fU0NTSUluZm9bMF0uTlZNX0NoQ29uZmlnMTsKCiAgICBwSGNzLT5IQ1NfU0NTSV9JRCA9
IGk5MXVudnJhbXAtPk5WTV9TQ1NJSW5mb1swXS5OVk1fQ2hTQ1NJSUQ7CgojaWYgQ0hLX1BBUklU
WQoJCQkJCS8qIEVuYWJsZSBwYXJpdHkgZXJyb3IgcmVzcG9uc2UgKi8KICAgIFRVTF9XUihwSGNz
LT5IQ1NfQmFzZSArIFRVTF9QQ01ELCBUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfUENNRCkg
fCAweDQwKTsKI2VuZGlmCgoJCQkJCS8qIE1hc2sgYWxsIHRoZSBpbnRlcnJ1cHQgICAgICAgKi8K
ICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9NYXNrLCAweDFGKTsKCiAgICB0dWxfc3Rv
cF9ibShwSGNzKTsKCQkJCQkvKiAtLS0gSW5pdGlhbGl6ZSB0aGUgdHVsaXAgLS0tICovCiAgICBU
VUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfUlNUX0NISVApOwoKCQkJCQkv
KiBwcm9ncmFtIEhCQSdzIFNDU0kgSUQgICAgICAgICovCiAgICBUVUxfV1IocEhjcy0+SENTX0Jh
c2UgKyBUVUxfU1Njc2lJZCwgcEhjcy0+SENTX1NDU0lfSUQgPDwgNCk7DQoKCS8qIEVuYWJsZSBJ
bml0aWF0b3IgTW9kZSAscGhhc2UgbGF0Y2gsYWx0ZXJuYXRlIHN5bmMgcGVyaW9kIG1vZGUsCglk
aXNhYmxlIFNDU0kgcmVzZXQgKi8KICAgIGlmIChwSGNzLT5IQ1NfQ29uZmlnICYgSENDX0VOX1BB
UikKCXBIY3MtPkhDU19TQ29uZjEgPSAoVFNDX0lOSVRERUZBVUxUIHwgVFNDX0VOX1NDU0lfUEFS
KTsKICAgIGVsc2UKCXBIY3MtPkhDU19TQ29uZjEgPSAoVFNDX0lOSVRERUZBVUxUKTsKICAgIFRV
TF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ29uZmlnLCBwSGNzLT5IQ1NfU0NvbmYxKTsNCgoK
CS8qIHNlbGVjdGlvbiB0aW1lIG91dCA9IDI1MCBtcyAqLwogICAgVFVMX1dSKHBIY3MtPkhDU19C
YXNlICsgVFVMX1NUaW1lT3V0LCAxNTMpOwoKCS8qLS0tLS0tLS0tIEVuYWJsZSBTQ1NJIHRlcm1p
bmF0b3IgLS0tLS0qLw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9YQ3RybCwgKHBI
Y3MtPkhDU19Db25maWcgJiAoSENDX0FDVF9URVJNMSB8IEhDQ19BQ1RfVEVSTTIpKSk7CiAgICBU
VUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfR0NUUkwxLAoJICAoKHBIY3MtPkhDU19Db25maWcg
JiBIQ0NfQVVUT19URVJNKSA+PiA0KSB8IChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfR0NU
UkwxKSAmIDB4RkUpKTsKCiAgICBwVGNiID0gJnBIY3MtPkhDU19UY3NbMF07CiAgICBmb3IgKGkg
PSAwLAoJIHB3RmxhZ3MgPSAoV09SRCAqKSAmKGk5MXVudnJhbXAtPk5WTV9TQ1NJSW5mb1swXS5O
Vk1fVGFyZzBDb25maWcpOwoJIGkgPCBwSGNzLT5IQ1NfTWF4VGFyOwoJIGkrKywgcHdGbGFncysr
LCBwVGNiKysgKQoJewoJcFRjYi0+VENTX0ZsYWdzID0gKnB3RmxhZ3MgJiB+KFRDRl9TWU5DX0RP
TkUgfCBUQ0ZfV0RUUl9ET05FKTsKCXBUY2ItPlRDU19KU19QZXJpb2QgPSAwOwoJcFRjYi0+VENT
X1NDb25maWcwID0gcEhjcy0+SENTX1NDb25mMTsKCXBUY2ItPlRDU19EcnZGbGFncyA9IDA7Cglw
VGNiLT5UQ1NfVGFnQ250ID0gMDsKCXBUY2ItPlRDU19Ob25UYWdTY2IgPSBOVUxMOwoKCX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwojaWYgMAogICAgcHJpbnRmKCJpaGElZDogUENJIEJhc2U9MHgleCwgSVJRPSVkLCBTQ1NJ
IElEPSVkXG4iLAoJCXBIY3MtPkhDU19Vbml0LCBwSGNzLT5IQ1NfQmFzZSArIHBIY3MtPkhDU19J
bnRyLAoJCXBIY3MtPkhDU19TQ1NJX0lEKTsKI2VuZGlmDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0t
IHJlc2V0IFNDU0kgQnVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojaWYgMSAKICAg
IHByaW50ZigiaWhhJWQ6IFJlc2V0IFNDU0kgQnVzIC4uLiBcbiIsIHBIY3MtPkhDU19Vbml0KTsN
CiAgICB0dWxfcmVzZXRfc2NzaShwSGNzKTsKI2VuZGlmCgogICAgVFVMX1dSKHBIY3MtPkhDU19C
YXNlICsgVFVMX1NJbnRFbmFibGUsIDB4RkYpOwogICAgcmV0dXJuKDApOwp9CgovKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLw0Kc3RhdGljIEk5MVVfU0NCICp0dWxfYWxsb2Nfc2NiKEk5MVVfSENTICpwSGNz
KQp7CiAgICBJOTFVX1NDQiAgICAgICAgICpwVG1wU2NiOwogICAgVUxPTkcgICAgICAgZmxhZ3M7
CgogICAgZmxhZ3MgPSBzcGxjYW0oKTsKICAgIGlmICgocFRtcFNjYiA9IHBIY3MtPkhDU19GaXJz
dEF2YWlsKSAhPSBOVUxMKQ0KCXsKI2lmIERFQlVHX1FVRVVFDQoJcHJpbnRmKCJmaW5kIHNjYiBh
dCAlMDhseFxuIiwgKFVMT05HKSBwVG1wU2NiKTsKI2VuZGlmDQoJaWYgKChwSGNzLT5IQ1NfRmly
c3RBdmFpbCA9IHBUbXBTY2ItPlNDQl9OeHRTY2IpID09IE5VTEwpDQoJICAgIHBIY3MtPkhDU19M
YXN0QXZhaWwgPSBOVUxMOwoJcFRtcFNjYi0+U0NCX054dFNjYiA9IE5VTEw7CglwVG1wU2NiLT5T
Q0JfU3RhdHVzID0gU0NCX1JFTlQ7Cgl9CiAgICBzcGx4KGZsYWdzKTsKICAgIHJldHVybiAocFRt
cFNjYik7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMgdm9pZCB0dWxfcmVsZWFzZV9z
Y2IoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpwU2NiKQp7CiAgICBVTE9ORyAgICAgICBmbGFn
czsKCiNpZiBERUJVR19RVUVVRQ0KcHJpbnRmKCJSZWxlYXNlIFNDQiAlbHg7ICIsIChVTE9ORykg
cFNjYik7DQojZW5kaWYNCiAgICBwU2NiLT5TQ0JfU3RhdHVzID0gMDsKICAgIHBTY2ItPlNDQl9O
eHRTY2IgPSBOVUxMOwoKICAgIGZsYWdzID0gc3BsY2FtKCk7CiAgICBpZiAocEhjcy0+SENTX0xh
c3RBdmFpbCAhPSBOVUxMKSB7CglwSGNzLT5IQ1NfTGFzdEF2YWlsLT5TQ0JfTnh0U2NiID0gcFNj
YjsKCXBIY3MtPkhDU19MYXN0QXZhaWwgPXBTY2I7CiAgICB9CiAgICBlbHNlIHsKCXBIY3MtPkhD
U19GaXJzdEF2YWlsID0gcFNjYjsKCXBIY3MtPkhDU19MYXN0QXZhaWwgPSBwU2NiOwogICAgfQog
ICAgc3BseChmbGFncyk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMgdm9pZCB0dWxf
YXBwZW5kX3BlbmRfc2NiKEk5MVVfSENTICpwSGNzLCBJOTFVX1NDQiAqc2NicCkKewogICAgVUxP
TkcgICAgICAgZmxhZ3M7CgojaWYgREVCVUdfUVVFVUUNCnByaW50ZigiQXBwZW5kIHBlbmQgU0NC
ICVseDsgIiwgKFVMT05HKSBzY2JwKTsNCiNlbmRpZg0KCiAgICBzY2JwLT5TQ0JfU3RhdHVzID0g
U0NCX1BFTkQ7DQogICAgc2NicC0+U0NCX054dFNjYiA9IE5VTEw7DQoKICAgIGZsYWdzID0gc3Bs
Y2FtKCk7CiAgICBpZiAocEhjcy0+SENTX0xhc3RQZW5kICE9IE5VTEwpIHsKCXBIY3MtPkhDU19M
YXN0UGVuZC0+U0NCX054dFNjYiA9IHNjYnA7DQoJcEhjcy0+SENTX0xhc3RQZW5kID0gc2NicDsN
CiAgICB9CiAgICBlbHNlIHsKCXBIY3MtPkhDU19GaXJzdFBlbmQgPSBzY2JwOw0KCXBIY3MtPkhD
U19MYXN0UGVuZCA9IHNjYnA7DQogICAgfQogICAgc3BseChmbGFncyk7Cn0KCi8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovDQpzdGF0aWMgdm9pZCB0dWxfcHVzaF9wZW5kX3NjYihJOTFVX0hDUyAqcEhjcywg
STkxVV9TQ0IgKnNjYnApDQp7CiAgICBVTE9ORyAgICAgICBmbGFnczsKCiNpZiBERUJVR19RVUVV
RQ0KcHJpbnRmKCJQdXNoIHBlbmQgU0NCICVseDsgIiwgKFVMT05HKSBzY2JwKTsNCiNlbmRpZgoK
ICAgIHNjYnAtPlNDQl9TdGF0dXMgPSBTQ0JfUEVORDsKCiAgICBmbGFncyA9IHNwbGNhbSgpOwoK
ICAgIGlmICgoc2NicC0+U0NCX054dFNjYiA9IHBIY3MtPkhDU19GaXJzdFBlbmQpICE9IE5VTEwp
IHsKCXBIY3MtPkhDU19GaXJzdFBlbmQgPSBzY2JwOwogICAgfQogICAgZWxzZSB7CglwSGNzLT5I
Q1NfRmlyc3RQZW5kID0gc2NicDsKCXBIY3MtPkhDU19MYXN0UGVuZCA9IHNjYnA7CiAgICB9CiAg
ICBzcGx4KGZsYWdzKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBJOTFVX1NDQiAq
dHVsX2ZpbmRfcGVuZF9zY2IoSTkxVV9IQ1MgKnBIY3MpCnsKICAgIEk5MVVfU0NCICAgICAgICAg
KnBTY2I7CiAgICBUQ1MgICAgICAgICAqcFRjYjsKICAgIFVMT05HICAgICAgIGZsYWdzOwoKCiAg
ICBmbGFncyA9IHNwbGNhbSgpOwoKICAgIHBTY2IgPSBwSGNzLT5IQ1NfRmlyc3RQZW5kOwogICAg
Zm9yICggO3BTY2IgIT0gTlVMTDsgcFNjYiA9IHBTY2ItPlNDQl9OeHRTY2IpCiAgICB7CiAgICAg
ICBwVGNiID0gJnBIY3MtPkhDU19UY3NbcFNjYi0+U0NCX1RhcmdldF07CgkKICAgICAgICBpZiAo
cFNjYi0+U0NCX09wY29kZSA9PSBCdXNEZXZSc3QpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwoJ
fQogICAgICAgIGlmIChwU2NiLT5TQ0JfVGFnTXNnKSB7CgkgICAgaWYgKHBUY2ItPlRDU19Ob25U
YWdTY2IgPT0gTlVMTCkgewoJCWJyZWFrOwoJICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBp
ZiAocFNjYi0+U0NCX01vZGUgPT0gU0NNX1JTRU5TKSB7CiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocFNjYi0+U0NCX0NEQlswXSA9PSAweDMpIHsKICAg
ICAgICAgICAgICAgIGJyZWFrOwoJfQoJZWxzZSAgaWYgKHBUY2ItPlRDU19UYWdDbnQgPT0gMCkg
ewoJICAgIGlmIChwVGNiLT5UQ1NfTm9uVGFnU2NiID09IE5VTEwpIHsKCSAgICAgICAgYnJlYWs7
CgkgICAgfQoJfQogICAgfSAvKiBmb3IgKi8KCiAgICBzcGx4KGZsYWdzKTsKCiAgICByZXR1cm4g
KHBTY2IpOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBJOTFVX1NDQiAqdHVsX3Bv
cF9wZW5kX3NjYihJOTFVX0hDUyAqcEhjcywgSTkxVV9TQ0IgKnBBY3RTY2IpCnsKICAgIEk5MVVf
U0NCICAgICAgICAgKnBTY2I7CiAgICBJOTFVX1NDQiAgICAgICAgICpwTnh0U2NiOwogICAgVUxP
TkcgICAgICAgZmxhZ3M7DQoKCiAgICBmbGFncyA9IHNwbGNhbSgpOwoKICAgIHBOeHRTY2IgPSBw
QWN0U2NiLT5TQ0JfTnh0U2NiOwogICAgcEFjdFNjYi0+U0NCX054dFNjYiA9IE5VTEw7CgogICAg
cFNjYiA9IHBIY3MtPkhDU19GaXJzdFBlbmQ7IAogICAgaWYgKHBTY2IgPT0gcEFjdFNjYikgewoJ
aWYgKHBOeHRTY2IgPT0gTlVMTCkKCSAgICBwSGNzLT5IQ1NfTGFzdFBlbmQgPSBOVUxMOwoJcEhj
cy0+SENTX0ZpcnN0UGVuZCA9IHBOeHRTY2I7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aGls
ZSAocFNjYikgewoJICAgIGlmIChwU2NiLT5TQ0JfTnh0U2NiID09IHBBY3RTY2IpIHsKCQlwU2Ni
LT5TQ0JfTnh0U2NiID0gcE54dFNjYjsKCQlpZiAocEFjdFNjYiA9PSBwSGNzLT5IQ1NfTGFzdFBl
bmQpCgkJICAgIHBIY3MtPkhDU19MYXN0UGVuZCA9IHBTY2I7CgkJcFNjYiA9IHBBY3RTY2I7CgkJ
YnJlYWs7CiAgICAgICAgICAgICAgICB9CgkgICAgcFNjYiA9IHBTY2ItPlNDQl9OeHRTY2I7CiAg
ICAgICAgfQogICAgfQogICAgc3BseChmbGFncyk7CiNpZiBERUJVR19RVUVVRQpwcmludGYoIlBv
cCBwZW5kIFNDQiAlbHg7ICIsIChVTE9ORykgcFNjYik7CiNlbmRpZgogICAgcmV0dXJuIChwU2Ni
KTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyB2b2lkIHR1bF9hcHBlbmRfYnVzeV9z
Y2IoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpzY2JwKQp7CiAgICBUQ1MgKnBUY2IgPSBwSGNz
LT5IQ1NfQWN0VGNzOwoKI2lmIERFQlVHX1FVRVVFDQpwcmludGYoImFwcGVuZCBidXN5IFNDQiAl
bHg7ICIsIChVTE9ORykgc2NicCk7DQojZW5kaWYNCiAgICBzY2JwLT5TQ0JfU3RhdHVzID0gU0NC
X0JVU1k7CiAgICBzY2JwLT5TQ0JfTnh0U2NiID0gTlVMTDsKCiAgICBpZiAoc2NicC0+U0NCX1Rh
Z01zZykgewoJcFRjYi0+VENTX1RhZ0NudCsrOwogICAgfQogICAgZWxzZSB7CglwVGNiLT5UQ1Nf
Tm9uVGFnU2NiID0gc2NicDsKICAgIH0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyB2
b2lkIHR1bF91bmxpbmtfYnVzeV9zY2IoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpwU2NiKQp7
CiAgICBUQ1MgKnBUY2IgPSAmcEhjcy0+SENTX1Rjc1twU2NiLT5TQ0JfVGFyZ2V0XTsKCiNpZiBE
RUJVR19RVUVVRQpwcmludGYoInVubGluayBidXN5IFNDQnM9JXggIiwgKFVMT05HKSBwU2NiKTsK
I2VuZGlmCgogICAgaWYgKHBTY2ItPlNDQl9UYWdNc2cpIHsKCWlmIChwVGNiLT5UQ1NfVGFnQ250
KQoJCXBUY2ItPlRDU19UYWdDbnQtLTsKICAgIH0KICAgIGVsc2UgaWYgKHBUY2ItPlRDU19Ob25U
YWdTY2IgPT0gcFNjYikgewogICAgICAgIHBUY2ItPlRDU19Ob25UYWdTY2IgPSAwOwogICAgfQoK
fQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyB2b2lkIHR1bF9hcHBlbmRfZG9uZV9zY2Io
STkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpzY2JwKQp7CiNpZiAwCiAgICBVTE9ORyAgICAgICBm
bGFnczsKI2VuZGlmCgojaWYgREVCVUdfUVVFVUUKcHJpbnRmKCJhcHBlbmQgZG9uZSBTQ0IgJWx4
OyAiLCAoVUxPTkcpIHNjYnApOwojZW5kaWYKCiAgICBzY2JwLT5TQ0JfU3RhdHVzID0gU0NCX0RP
TkU7CgojaWYgMAogICAgZmxhZ3MgPSBzcGxjYW0oKTsKI2VuZGlmCiAgICBzY2JwLT5TQ0JfTnh0
U2NiID0gTlVMTDsKICAgIGlmIChwSGNzLT5IQ1NfTGFzdERvbmUgIT0gTlVMTCkKCXsKCXBIY3Mt
PkhDU19MYXN0RG9uZS0+U0NCX054dFNjYiA9IHNjYnA7CglwSGNzLT5IQ1NfTGFzdERvbmUgPSBz
Y2JwOwoJfQogICAgZWxzZQoJewoJcEhjcy0+SENTX0ZpcnN0RG9uZSA9IHNjYnA7CglwSGNzLT5I
Q1NfTGFzdERvbmUgPSBzY2JwOwoJfQovKiAgICBzcGx4KGZsYWdzKTsgKi8KfQoKLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8NCnN0YXRpYyBJOTFVX1NDQiAqdHVsX2ZpbmRfZG9uZV9zY2IoSTkxVV9IQ1Mg
KnBIY3MpDQp7CiAgICBJOTFVX1NDQiAgICAgICAgICpwVG1wU2NiOw0KI2lmIDAKCiAgICBVTE9O
RyAgICAgICBmbGFnczsNCgogICAgZmxhZ3MgPSBzcGxjYW0oKTsKI2VuZGlmCgogICAgaWYgKChw
VG1wU2NiID0gcEhjcy0+SENTX0ZpcnN0RG9uZSkgIT0gTlVMTCkNCgl7CglpZiAoKHBIY3MtPkhD
U19GaXJzdERvbmUgPSBwVG1wU2NiLT5TQ0JfTnh0U2NiKSA9PSBOVUxMKQ0KCSAgICBwSGNzLT5I
Q1NfTGFzdERvbmUgPSBOVUxMOwoJcFRtcFNjYi0+U0NCX054dFNjYiA9IE5VTEw7Cgl9CgojaWYg
MAogICAgc3BseChmbGFncyk7CiNlbmRpZgoKI2lmIERFQlVHX1FVRVVFCnByaW50ZigiZmluZCBk
b25lIFNDQiAlbHg7ICIsIChVTE9ORykgcFRtcFNjYik7CiNlbmRpZgogICAgcmV0dXJuIChwVG1w
U2NiKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RhdGljIEk5MVVfU0NCICp0dWxfYWJvcnRf
Y2NiKEk5MVVfSENTICpwSGNzLCBVTE9ORyBjY2IpDQp7CiAgICBJOTFVX1NDQiAgICAqcFNjYiwg
KnBQcmV2U2NiOwogICAgVUxPTkcgICAgICAgaTsKICAgIGludCAgICAgICAgIGZsYWdzOwoKICAg
IGZsYWdzID0gc3BsY2FtKCk7CgogICAgcFByZXZTY2IgPSBOVUxMOwogICAgcFNjYiA9IHBIY3Mt
PkhDU19GaXJzdFBlbmQ7ICAgLyogQ2hlY2sgUGVuZCBxdWV1ZSAqLwogICAgd2hpbGUgKHBTY2Ig
IT0gTlVMTCkgewoJaWYgKHBTY2ItPlNDQl9jY2IgPT0gY2NiKSB7CgkgICAgaWYgKHBQcmV2U2Ni
ID09IE5VTEwpIHsKCQlpZiAoKHBIY3MtPkhDU19GaXJzdFBlbmQgPSBwU2NiLT5TQ0JfTnh0U2Ni
KSA9PSBOVUxMKQ0KCQkgICAgcEhjcy0+SENTX0xhc3RQZW5kID0gTlVMTDsNCgkgICAgfQoJICAg
IGVsc2UgewoJCXBQcmV2U2NiLT5TQ0JfTnh0U2NiID0gcFNjYi0+U0NCX054dFNjYjsKCQlpZiAo
cFNjYiA9PSBwSGNzLT5IQ1NfTGFzdFBlbmQpCgkJICAgIHBIY3MtPkhDU19MYXN0UGVuZCA9IHBQ
cmV2U2NiOwoJICAgIH0KCgkgICAgcFNjYi0+U0NCX054dFNjYiA9IE5VTEw7CgkgICAgdHVsX3Jl
bGVhc2Vfc2NiKHBIY3MsIHBTY2IpOwoKICAgICAgICAgICAgc3BseChmbGFncyk7CgkgICAgcmV0
dXJuIChwU2NiKTsKCX0KCglwUHJldlNjYiA9IHBTY2I7CglwU2NiID0gcFNjYi0+U0NCX054dFNj
YjsNCiAgICB9CgogICAgcFNjYiA9IHBIY3MtPkhDU19TY2IgOwogICAgZm9yIChpID0gMDsgaSA8
IHBIY3MtPkhDU19OdW1TY2JzOyBpKyssIHBTY2IrKykgewoJaWYgKHBTY2ItPlNDQl9TdGF0dXMg
JiBTQ0JfQlVTWSkgCgkgICAgaWYgKHBTY2ItPlNDQl9jY2IgPT0gY2NiKSB7CgkgICAgICAgIHR1
bF91bmxpbmtfYnVzeV9zY2IocEhjcywgcFNjYik7CgogICAgICAgICAgICAgICAgdHVsX3JlbGVh
c2Vfc2NiKHBIY3MsIHBTY2IpOwogICAgICAgICAgICAgICAgc3BseChmbGFncyk7CiAgICAgICAg
ICAgICAgICByZXR1cm4gKHBTY2IpOwoJICAgIH0gCiAgICB9CiAgICBzcGx4KGZsYWdzKTsKICAg
IHJldHVybiAoTlVMTCk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMgbG9uZyAgICAg
dHVsX2JhZF9zZXEoSTkxVV9IQ1MgKnBIY3MpDQp7CiAgICBJOTFVX1NDQiAqcFNjYjsKCiAgICBp
ZiAoKHBTY2IgPSBwSGNzLT5IQ1NfQWN0U2NiKSAhPSBOVUxMKQ0KCXsNCgoJdHVsX3VubGlua19i
dXN5X3NjYihwSGNzLCBwU2NiKTsNCgoJcFNjYi0+U0NCX0hhU3RhdCA9IEhPU1RfQkFEX1BIQVM7
DQoJcFNjYi0+U0NCX1RhU3RhdCA9IDA7DQoKCXR1bF9hcHBlbmRfZG9uZV9zY2IocEhjcywgcFNj
Yik7DQoJfQoKICAgIHR1bF9zdG9wX2JtKHBIY3MpOwoKICAgIHR1bF9yZXNldF9zY3NpKHBIY3Mp
OwoKICAgIHJldHVybiAodHVsX3Bvc3Rfc2NzaV9yc3QocEhjcykpOwp9CgovKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwpzdGF0aWMgdm9pZCB0dWxfZXhlY19zY2IoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpw
U2NiKQp7CiAgICBVTE9ORyAgICAgICBmbGFnczsNCgojaWYgMApwcmludGYoIkVudGVyIHR1bF9l
eGVjX3NjYiAleCAleCAiLCBwU2NiLT5TQ0JfVGFyZ2V0LCBwU2NiLT5TQ0JfQ0RCWzBdKTsKdHVs
X2RvX3BhdXNlKDEwMDApOwojZW5kaWYKCiAgICBwU2NiLT5TQ0JfTW9kZSA9IDA7CgogICAgcFNj
Yi0+U0NCX1NHSWR4ID0gMDsKICAgIHBTY2ItPlNDQl9TR01heCA9IHBTY2ItPlNDQl9TR0xlbjsK
CiAgICBpZiAocFNjYi0+U0NCX09wY29kZSAgPT0gQnVzRGV2UnN0KSB7CS8qIGJ1c19kZXZfcmVz
ZXQgKi8KCgl0dWxfcHVzaF9wZW5kX3NjYihwSGNzLCBwU2NiKTsgICAgLyogSW5zZXJ0IHRoaXMg
U0NCIHRvIFBlbmRpbmcgcXVldWUgKi8KICAgIH0KICAgIGVsc2UgaWYgKHBTY2ItPlNDQl9DREJb
MF0gPT0gMHgzKSB7CS8qIHJlcXVlc3Qgc2Vuc2UgY29tbWFuZCAqLwoKCXBTY2ItPlNDQl9JZGVu
dCAmPSAweEJGOwkJLyogbm8gZGlzY29ubmVjdCAqLwoKCXR1bF9wdXNoX3BlbmRfc2NiKHBIY3Ms
IHBTY2IpOyAgICAvKiBJbnNlcnQgdGhpcyBTQ0IgdG8gUGVuZGluZyBxdWV1ZSAqLwogICAgfQog
ICAgZWxzZSB7CgoJdHVsX2FwcGVuZF9wZW5kX3NjYihwSGNzLCBwU2NiKTsgICAgICAvKiBBcHBl
bmQgdGhpcyBTQ0IgdG8gUGVuZGluZyBxdWV1ZSAqLwogICAgfQoKCiAgICBmbGFncyA9IHNwbGNh
bSgpOwogICAgaWYgKHBIY3MtPkhDU19TZW1hcGggPT0gMSkgewoJICAgIFRVTF9XUihwSGNzLT5I
Q1NfQmFzZSArIFRVTF9NYXNrLCAweDFGKTsKICAgICAgICAgICAgICAgICAvKiBkaXNhYmxlIFND
U0kgSW50ICAgICAgICAqLwoJICAgIHBIY3MtPkhDU19TZW1hcGggPSAwOw0KICAgICAgICAgICAg
c3BseChmbGFncyk7CgoJICAgIHR1bGlwX21haW4ocEhjcyk7CgoJICAgIGZsYWdzID0gc3BsY2Ft
KCk7CgkgICAgcEhjcy0+SENTX1NlbWFwaCA9IDE7CiAgICAgICAgICAgIFRVTF9XUihwSGNzLT5I
Q1NfQmFzZSArIFRVTF9NYXNrLCAweDBGKTsKCSAgICAgICAgICAgLyogRW5hYmxlIFNDU0kgSW50
ICAgICAgICovCgl9CiAgICBzcGx4KGZsYWdzKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0
YXRpYyBsb25nIHR1bF9pc3IoSTkxVV9IQ1MgKnBIY3MpDQp7CiAgICBCWVRFICAgICAgICBzdGF0
Ow0KCgogICAgc3RhdCA9IFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9TU3RhdHVzMCk7CiNp
ZiBERUJVR19JTlRFUlJVUFQKICAgIHByaW50ZigiU0NTSSBzdGF0dXMgPSAleCIsIHN0YXQpOw0K
I2VuZGlmCiAgICBpZiAoc3RhdCAmIFRTU19JTlRfUEVORElORykgewoJaWYgKHBIY3MtPkhDU19T
ZW1hcGggPT0gMSkgewogICAgICAgICAgICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfTWFz
aywgMHgxRik7IC8qIERpc2FibGUgU0NTSSBJbnQgKi8KCSAgICBwSGNzLT5IQ1NfU2VtYXBoID0g
MDsKCgkgICAgdHVsaXBfbWFpbihwSGNzKTsKCgkgICAgcEhjcy0+SENTX1NlbWFwaCA9IDE7CiAg
ICAgICAgICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9NYXNrLCAweDBGKTsKCSAgICAg
ICAgICAgLyogRW5hYmxlIFNDU0kgSW50ICAgICAgICovCgoJICAgIHJldHVybiAxOwoJfQoJcmV0
dXJuIDA7IC8qIDA4LzExLzk1ICovCiAgICB9CiAgICByZXR1cm4gMDsgLyogMDgvMTEvOTUgKi8K
fQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nIHR1bGlwX21haW4oSTkxVV9IQ1Mg
KnBIY3MpCnsKICAgIEk5MVVfU0NCICpwU2NiOwogICAgVENTICpwVGNiOwoKLypwcmludGYoIkVu
dGVyIHR1bGlwX21haW5cbiIpOyovCiAgICBmb3IgKDs7KSB7Cgl0dWxpcF9zY3NpKHBIY3MpOyAg
ICAgICAgICAgIC8qIENhbGwgdHVsaXBfc2NzaSAgICAgICAgICAgICAgKi8KCXdoaWxlICgocFNj
YiA9IHR1bF9maW5kX2RvbmVfc2NiKHBIY3MpKSAhPSBOVUxMKQoJICAgIHsvKiBmaW5kIGRvbmUg
ZW50cnkgKi8KCSAgICBpZiAoIShwU2NiLT5TQ0JfTW9kZSAmIFNDTV9SU0VOUykpCgkJeyAgICAg
ICAgICAgICAgICAgICAgICAgLyogbm90IGluIGF1dG8gcmVxLiBzZW5zZSBtb2RlKi8NCgkJaWYg
KHBTY2ItPlNDQl9UYVN0YXQgPT0gMikKCQkgICAgewoJICAgICAgICAgICAgcFRjYiA9ICZwSGNz
LT5IQ1NfVGNzW3BTY2ItPlNDQl9UYXJnZXRdOwoJCSAgICBwVGNiLT5UQ1NfRmxhZ3MgJj0gfihU
Q0ZfU1lOQ19ET05FIHwgVENGX1dEVFJfRE9ORSk7ICAvKiBjbHIgc3luYy4gbmVnbyBmbGFnICov
CgkJICAgIGlmIChwU2NiLT5TQ0JfRmxhZ3MgJiBTQ0ZfU0VOU0UpCgkJCXsKCQkJcFNjYi0+U0NC
X0J1ZkxlbiA9IHBTY2ItPlNDQl9TZW5zZUxlbjsKCQkJcFNjYi0+U0NCX0J1ZlB0ciA9IHBTY2It
PlNDQl9TZW5zZVB0cjsKCQkJcFNjYi0+U0NCX0ZsYWdzICY9IH4oU0NGX1NHfFNDRl9ESVIpOyAv
KiBmb3IgeGZlcl9kYXRhX2luICovCgkJLyogc28sIHdlIHdvbid0IHJlcG9ydCB3b3JuZyBkaXJl
Y3Rpb24gaW4geGZlcl9kYXRhX2luLAoJCQkJYW5kIHdvbid0IHJlcG9ydCBIT1NUX0RPX0RVIGlu
IHN0YXRlXzYgKi8KCSAgICAgICAgICAgICAgICBwU2NiLT5TQ0JfSWRlbnQgJj0gMHhCRjsJLyog
ZGlzY29ubmVjdCBkaXNhYmxlICovCiAgICAgICAgICAgICAgICAgICAgICAgIHBTY2ItPlNDQl9U
YWdNc2cgPSAwOyAgICAgICAgLyogbm9uLXRhZyAqLwoJCQlwU2NiLT5TQ0JfTW9kZSA9IFNDTV9S
U0VOUzsKCQkJcFNjYi0+U0NCX1RhU3RhdCA9IDA7CgkJCXBTY2ItPlNDQl9DREJMZW4gPSA2OwoJ
CQlwU2NiLT5TQ0JfQ0RCWzBdID0gU0NTSUNNRF9SZXF1ZXN0U2Vuc2U7CgkJCXBTY2ItPlNDQl9D
REJbMV0gPSAwOwoJCQlwU2NiLT5TQ0JfQ0RCWzJdID0gMDsKCQkJcFNjYi0+U0NCX0NEQlszXSA9
IDA7CgkJCXBTY2ItPlNDQl9DREJbNF0gPSBwU2NiLT5TQ0JfU2Vuc2VMZW47CgkJCXBTY2ItPlND
Ql9DREJbNV0gPSAwOwoJCQl0dWxfcHVzaF9wZW5kX3NjYihwSGNzLCBwU2NiKTsKCQkJYnJlYWs7
CgkJCX0KCQkgICAgfQoJCX0KCSAgICBlbHNlCgkJeyAgICAgICAgICAgICAgICAgICAgICAgLyog
aW4gcmVxdWVzdCBzZW5zZSBtb2RlICovDQoJCWlmIChwU2NiLT5TQ0JfVGFTdGF0ID09IDIpCgkJ
ICAgIHsgICAgICAgICAgICAgIC8qIGNoZWNrIGNvbnRpdGlvbiBzdGF0dXMgYWdhaW4gYWZ0ZXIg
c2VuZGluZwoJCQkJCXJlcXVzZXQgc2Vuc2UgY21kIDB4MyovDQoJCSAgICBwU2NiLT5TQ0JfSGFT
dGF0ID0gSE9TVF9CQURfUEhBUzsNCgkJICAgIH0KCQlwU2NiLT5TQ0JfVGFTdGF0ID0gMjsKCQl9
CgkgICAgcFNjYi0+U0NCX0ZsYWdzIHw9IFNDRl9ET05FOwoJICAgIGlmIChwU2NiLT5TQ0JfRmxh
Z3MgJiBTQ0ZfUE9TVCkKCQkoKnBTY2ItPlNDQl9Qb3N0KSgoQllURSAqKSBwSGNzLCAoQllURSAq
KSBwU2NiKTsKCSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgKi8KCQkJ
CQkvKiBmaW5kX2FjdGl2ZTogKi8KCWlmIChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1N0
YXR1czApICYgVFNTX0lOVF9QRU5ESU5HKQoJICAgIGNvbnRpbnVlOwoKCWlmIChwSGNzLT5IQ1Nf
QWN0U2NiKSAgICAgICAgLyogcmV0dXJuIHRvIE9TIGFuZCB3YWl0IGZvciB4ZmVyX2RvbmVfSVNS
L1NlbGVjdGVkX0lTUiAqLwoJICAgIHJldHVybiAxOyAvKiByZXR1cm4gdG8gT1MsIGVuYWJsZSBp
bnRlcnJ1cHQgKi8KCQkJCQkvKiBDaGVjayBwZW5kaW5nIEk5MVVfU0NCICAgICAgICAgICAgKi8K
CWlmICh0dWxfZmluZF9wZW5kX3NjYihwSGNzKSA9PSBOVUxMKSB7CgkgICAgcmV0dXJuIDE7ICAg
ICAgICAgICAgICAgICAgIC8qIHJldHVybiB0byBPUywgZW5hYmxlIGludGVycnVwdCAqLwoJfQog
ICAgfSAgICAgICAvKiBFbmQgb2YgZm9yIGxvb3AgKi8KCS8qIHN0YXRlbWVudCB3b24ndCByZWFj
aCBoZXJlICovDQp9CgoKCgoKLyorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKi8NCi8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovDQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyB2b2lkIHR1bGlwX3Nj
c2koSTkxVV9IQ1MgKnBIY3MpCnsKICAgIEk5MVVfU0NCICAgICAgICAgKnBTY2I7DQogICAgVENT
ICAgICAgICAgKnBUY2I7CiAgICBCWVRFICAgICAgICBzdGF0OwoKLyogICAgcHJpbnRmKCJFbnRl
ciB0dWxpcF9zY3NpKClcbiIpOyovCgkvKiBtYWtlIHN1cmUgdG8gc2VydmljZSBpbnRlcnJ1cHQg
YXNhcCAqLwogICAgaWYgKChzdGF0ID0gVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTdGF0
dXMwKSkgJiBUU1NfSU5UX1BFTkRJTkcpIHsKCXBIY3MtPkhDU19KU1N0YXR1czAgPSBzdGF0OwoJ
cEhjcy0+SENTX1BoYXNlID0gc3RhdCAmIFRTU19QSF9NQVNLOwoJcEhjcy0+SENTX0pTU3RhdHVz
MSA9IFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9TU3RhdHVzMSk7CglwSGNzLT5IQ1NfSlNJ
bnQgPSBUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0ludCk7Ci8qICAgIHByaW50ZigiU0NT
SSBzdGF0dXMgPSAleFxuIiwgc3RhdCk7CiAgICBwcmludGYoIlNDU0kgc3RhdHVzIDEgPSAleFxu
IiwgcEhjcy0+SENTX0pTU3RhdHVzMSk7CiAgICBwcmludGYoIlNDU0kgaW50ZXJydXB0ID0gJXhc
biIsIHBIY3MtPkhDU19KU0ludCk7Ki8KCWlmIChwSGNzLT5IQ1NfSlNJbnQgJiBUU1NfU0NTSVJT
VF9JTlQpDQoJICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ1NJIGJ1cyByZXNl
dCBkZXRlY3RlZCAgICAgICovDQoJICAgIGludF90dWxfc2NzaV9yc3QocEhjcyk7DQoJICAgIHJl
dHVybjsNCgkgICAgfQ0KCWlmIChwSGNzLT5IQ1NfSlNJbnQgJiBUU1NfUkVTRUxfSU5UKSB7ICAg
ICAgLyogcmVzZWxlY3RlZCBpbnRlcnJ1cHQgKi8KCSAgICBpbnRfdHVsX3Jlc2VsKHBIY3MpOwoJ
ICAgIHJldHVybjsKCX0KCglpZiAocEhjcy0+SENTX0pTSW50ICYgVFNTX1NFTF9USU1FT1VUKSB7
CgkgICAgaW50X3R1bF9idXNmcmVlKHBIY3MpOwoJICAgIHJldHVybjsKCX0KCglpZiAocEhjcy0+
SENTX0pTSW50ICYgVFNTX0RJU0NfSU5UKSB7ICAgICAgICAvKiBCVVMgZGlzY29ubmVjdGlvbiAg
ICovCgkgICAgaW50X3R1bF9idXNmcmVlKHBIY3MpOyAvKiB1bmV4cGVjdGVkIGJ1cyBmcmVlIG9y
IHNlbCB0aW1lb3V0ICovCgkgICAgcmV0dXJuOwoJfQoKCWlmIChwSGNzLT5IQ1NfSlNJbnQgJiAo
VFNTX0ZVTkNfQ09NUCB8IFRTU19CVVNfU0VSVikpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBmdW5jIGNvbXBsZXRlIG9yIEJ1cyBzZXJ2aWNlICovDQoJICAgIGlmICgocFNjYiA9IHBI
Y3MtPkhDU19BY3RTY2IpICE9IE5VTEwpCgkJdHVsX25leHRfc3RhdGUocEhjcyk7CgkgICAgcmV0
dXJuOwoJfQoKCWlmIChwSGNzLT5IQ1NfSlNJbnQgJiBUU1NfU0VMX0lOVCkgeyAgICAgLyogICov
CgkJVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwsIDApOwoJfQogICAgfQoKICAg
IGlmIChwSGNzLT5IQ1NfQWN0U2NiICE9IE5VTEwpCglyZXR1cm47CgogICAgaWYgKChwU2NiID0g
dHVsX2ZpbmRfcGVuZF9zY2IocEhjcykpID09IE5VTEwpCglyZXR1cm47CgogICAgcFRjYiA9ICZw
SGNzLT5IQ1NfVGNzW3BTY2ItPlNDQl9UYXJnZXRdOwoJCQkvKiBwcm9ncmFtIEhCQSdzIFNDU0kg
SUQgJiB0YXJnZXQgU0NTSSBJRCAqLyAgICAKICAgIHBIY3MtPkhDU19BY3RUY3MgPSBwVGNiIDsK
ICAgIFRVTF9XUiggcEhjcy0+SENTX0Jhc2UgKyBUVUxfU1Njc2lJZCwKCQkJKHBIY3MtPkhDU19T
Q1NJX0lEIDw8IDQpIHwgKHBTY2ItPlNDQl9UYXJnZXQgJiAweDBGKSApOwogICAgaWYgKHBTY2It
PlNDQl9PcGNvZGUgPT0gRXhlY1NDU0kpIHsKCglUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxf
U1BlcmlvZCwgcFRjYi0+VENTX0pTX1BlcmlvZCk7Ci8qcHJpbnRmKCJUQ1NfRmxhZ3MgPSAleFxu
IiwgcFRjYi0+VENTX0ZsYWdzKTsNCmRvX3BhdXNlKDE1MDAwKTsqLw0KCWlmICgocFRjYi0+VENT
X0ZsYWdzICYgKFRDRl9XRFRSX0RPTkUgfCBUQ0ZfTk9fV0RUUikpID09IDApIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBkbyB3ZHRyIG5lZ290aWF0aW9uICAgICAgICAgICovDQoJICAg
IHR1bF9zZWxlY3RfYXRuX3N0b3AocEhjcywgcFNjYik7DQoJfQoJZWxzZSBpZiAoKHBUY2ItPlRD
U19GbGFncyAmIChUQ0ZfU1lOQ19ET05FIHwgVENGX05PX1NZTkNfTkVHTykpID09IDApIHsgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGRvIHN5bmMgbmVnb3RpYXRpb24gICAgICAgICAgKi8NCgkg
ICAgdHVsX3NlbGVjdF9hdG5fc3RvcChwSGNzLCBwU2NiKTsNCgl9CgllbHNlIGlmIChwU2NiLT5T
Q0JfVGFnTXNnKQoJICAgIHR1bF9zZWxlY3RfYXRuMyhwSGNzLCBwU2NiKTsKCWVsc2UKCSAgICB0
dWxfc2VsZWN0X2F0bihwSGNzLCBwU2NiKTsKCglpZiAocFNjYi0+U0NCX0ZsYWdzICYgU0NGX1BP
TEwpIHsKCSAgICB3aGlsZSAod2FpdF90dWxpcChwSGNzKSAhPSAtMSkgewoJCWlmICh0dWxfbmV4
dF9zdGF0ZShwSGNzKSA9PSAtMSkKCQkgICAgYnJlYWs7CgkgICAgfQoJfQ0KICAgIH0KICAgIGVs
c2UgaWYgKHBTY2ItPlNDQl9PcGNvZGUgPT0gQnVzRGV2UnN0KSB7Cgl0dWxfc2VsZWN0X2F0bl9z
dG9wKHBIY3MsIHBTY2IpOwoJcFNjYi0+U0NCX054dFN0YXQgPSA4OwoJaWYgKHBTY2ItPlNDQl9G
bGFncyAmIFNDRl9QT0xMKSB7CgkJd2hpbGUgKHdhaXRfdHVsaXAocEhjcykgIT0gLTEpIHsKCQkg
ICAgaWYgKHR1bF9uZXh0X3N0YXRlKHBIY3MpID09IC0xKQoJCQlicmVhazsNCgkJICAgIH0KCQl9
CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB0dWxfcG9wX3BlbmRfc2NiKHBIY3MsIHBTY2IpOwoK
CXBTY2ItPlNDQl9IYVN0YXQgPSBIT1NUX0lOVl9DTUQgICAgOyAgICAvKiBiYWQgY29tbWFuZCAq
Lw0KCXR1bF9hcHBlbmRfZG9uZV9zY2IocEhjcywgcFNjYik7DQogICAgfQp9CgoKLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8NCnN0YXRpYyBsb25nICAgICB0dWxfbmV4dF9zdGF0ZShJOTFVX0hDUyAqcEhj
cykKewogICAgSTkxVV9TQ0IgICAgKnBTY2IgPSBwSGNzLT5IQ1NfQWN0U2NiOwogICAgVENTICAg
ICAgICAgKnBUY2IgPSBwSGNzLT5IQ1NfQWN0VGNzOwogICAgaW50ICAgICAgICAgbmV4dCA9IHBT
Y2ItPlNDQl9OeHRTdGF0OwojaWYgMAogICAgaW50IGk7CiNlbmRpZgoKICAgIHN3aXRjaCAobmV4
dCkgewoKCWNhc2UgMTogewoJICAgIGlmIChwU2NiICE9IHR1bF9wb3BfcGVuZF9zY2IocEhjcywg
cFNjYikpIHsKCQlwcmludGYoImloYTpEaWZmZXJuZXQgU0NCIHN0YXRlIDFcbiIpOw0KCQl9Cgkg
ICAgdHVsX2FwcGVuZF9idXN5X3NjYihwSGNzLCBwU2NiKTsKCgkgICAgVFVMX1dSKHBIY3MtPkhD
U19CYXNlICsgVFVMX1NDb25maWcsIHBUY2ItPlRDU19TQ29uZmlnMCk7CgkJCQkJLyogQVROIG9u
ICovCgkgICAgaWYgKHBIY3MtPkhDU19QaGFzZSA9PSBNU0dfT1VUKSB7CgkJVFVMX1dSKHBIY3Mt
PkhDU19CYXNlK1RVTF9TQ3RybDEsIChUU0NfRU5fQlVTX0lOfFRTQ19IV19SRVNFTEVDVCkpOwoK
CQlUVUxfV1IocEhjcy0+SENTX1NGaWZvLCBwU2NiLT5TQ0JfSWRlbnQpOwoKCQlpZiAocFNjYi0+
U0NCX1RhZ01zZykgewoJCSAgICBUVUxfV1IocEhjcy0+SENTX1NGaWZvLCBwU2NiLT5TQ0JfVGFn
TXNnKTsKCQkgICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX1RhZ0lkKTsKCQl9
CgoJCWlmICgocFRjYi0+VENTX0ZsYWdzICYgKFRDRl9XRFRSX0RPTkUgfCBUQ0ZfTk9fV0RUUikp
ID09IDApIHsKCQkgICAgcFRjYi0+VENTX0ZsYWdzIHw9IFRDRl9XRFRSX0RPTkU7CgkJICAgIFRV
TF9XUihwSGNzLT5IQ1NfU0ZpZm8sIE1TR19FWFRFTkQpOwoJCSAgICBUVUxfV1IocEhjcy0+SENT
X1NGaWZvLCAyKTsgICAgIC8qIEV4dGVuZGVkIG1lc3NhZ2UgbGVuZ3RoKi8KCQkgICAgVFVMX1dS
KHBIY3MtPkhDU19TRmlmbywgMyk7ICAgICAvKiBTeW5jIHJlcXVlc3QqLwoJCSAgICBUVUxfV1Io
cEhjcy0+SENTX1NGaWZvLCAxKTsgICAgIC8qIFN0YXJ0IGZyb20gMTYgYml0cyB4ZmVyKi8KCQkg
ICAgVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBUU0NfWEZfRklGT19PVVQpOwoJCSAgICBpZiAod2Fp
dF90dWxpcChwSGNzKSA9PSAtMSkKCQkJcmV0dXJuKC0xKTsKCQkgICAgZWxzZSB7CgkJCVRVTF9X
UihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsKCQkJVFVMX1dS
KHBIY3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwsIChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBU
VUxfU1NpZ25hbCkgJiAoVFNDX1NFVF9BQ0sgfCA3KSkpOwoJCSAgICAgICAgZ290byBzdGF0ZV8z
OwoJCSAgICB9CgkJfQoJCWVsc2UgewoJCSAgICBpZiAoKHBUY2ItPlRDU19GbGFncyAmIChUQ0Zf
U1lOQ19ET05FIHwgVENGX05PX1NZTkNfTkVHTykpID09IDApIHsKCQkJaWYgKHR1bF9tc2dvdXRf
c3luYyhwSGNzKSA9PSAtMSkKCQkJICAgIHJldHVybigtMSk7CgkJICAgIH0KCQkgICAgZ290byBz
dGF0ZV8zOwoJCX0KICAgIAkgICAgfQoJICAgIGVsc2UgewoJCVRVTF9XUihwSGNzLT5IQ1NfQmFz
ZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsKCQlUVUxfV1IocEhjcy0+SENTX0Jhc2Ug
KyBUVUxfU1NpZ25hbCwgKFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9TU2lnbmFsKSAmIChU
U0NfU0VUX0FDSyB8IDcpKSk7CgkJZ290byBzdGF0ZV8zOwoJICAgIH0KCX0KCgljYXNlIDI6IHsK
I2lmIERFQlVHX1NUQVRFCnByaW50ZigiLXMyLSIpOwojZW5kaWYKCSAgICBpZiAocFNjYiAhPSB0
dWxfcG9wX3BlbmRfc2NiKHBIY3MsIHBTY2IpKSB7CgkJcHJpbnRmKCJpaGE6IERpZmZlcm5ldCBT
Q0Igc3RhdGUgMlxuIik7CgkgICAgfQovKgkgICAgcFNjYi0+U0NCX1N0YXR1cyA9IFNDQl9CVVNZ
OwkJKi8KCSAgICB0dWxfYXBwZW5kX2J1c3lfc2NiKHBIY3MsIHBTY2IpOwoKCSAgICBUVUxfV1Io
cEhjcy0+SENTX0Jhc2UgKyBUVUxfU0NvbmZpZywgcFRjYi0+VENTX1NDb25maWcwKTsKCgkgICAg
aWYgKCBwSGNzLT5IQ1NfSlNTdGF0dXMxICYgVFNTX0NNRF9QSF9DTVApIHsKCQlnb3RvIHN0YXRl
XzQ7CgkgICAgfQoJICAgIC8qIGNsZWFyIEFUTiAqLwoJICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFz
ZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsNCgkgICAgVFVMX1dSKHBIY3MtPkhDU19C
YXNlICsgVFVMX1NTaWduYWwsIChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCkg
JiAoVFNDX1NFVF9BQ0sgfCA3KSkpOwovKgkgICAgZ290byBzdGF0ZV8zOwkJKi8KCX0KCgljYXNl
IDM6IHsKc3RhdGVfMzoKCiNpZiBERUJVR19TVEFURQpwcmludCgiLXMzLSIpOwojZW5kaWYKCSAg
ICBmb3IgKDs7KSB7CgkJc3dpdGNoIChwSGNzLT5IQ1NfUGhhc2UpIHsKCgkJICAgIGNhc2UgQ01E
X09VVDogICAgICAgICAgICAvKiBDb21tYW5kIG91dCBwaGFzZSAgICAgICAgICAgICovCiNpZiAw
CgkJCWZvciAoIGkgPSAwOyBpIDwgKGludCkgcFNjYi0+U0NCX0NEQkxlbjsgaSsrKQoJCQkgICAg
VFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX0NEQltpXSk7CiNlbHNlCgkJCW91dHNi
KHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX0NEQiwgcFNjYi0+U0NCX0NEQkxlbik7CiNlbmRp
ZgoJCQlUVUxfV1IocEhjcy0+SENTX1NDbWQsIFRTQ19YRl9GSUZPX09VVCk7CgkJCWlmICh3YWl0
X3R1bGlwKHBIY3MpID09IC0xKQoJCQkgICAgcmV0dXJuICgtMSk7DQoJCQlpZiAocEhjcy0+SENT
X1BoYXNlID09IENNRF9PVVQpIHsNCgkJCSAgICByZXR1cm4gKHR1bF9iYWRfc2VxKHBIY3MpKTsN
CgkJCX0NCgkJCWdvdG8gc3RhdGVfNDsKCgkJICAgIGNhc2UgTVNHX0lOOiAgICAgICAgICAgIC8q
IE1lc3NhZ2UgaW4gcGhhc2UgICAgICAgICAgICAgKi8KCQkJcFNjYi0+U0NCX054dFN0YXQgPSAz
OwoJCQlpZiAodHVsX21zZ2luKHBIY3MpID09IC0xKQoJCQkgICAgcmV0dXJuICgtMSk7CgkJCWJy
ZWFrOwoKCQkgICAgY2FzZSBTVEFUVVNfSU46ICAgICAgICAgLyogU3RhdHVzIHBoYXNlICAgICAg
ICAgICAgICAgICAqLwoJCQlpZiAodHVsX3N0YXR1c19tc2cocEhjcykgPT0gLTEpCgkJCSAgICBy
ZXR1cm4gKC0xKTsKCQkJYnJlYWs7CgoJCSAgICBjYXNlIE1TR19PVVQ6ICAgICAgICAgICAvKiBN
ZXNzYWdlIG91dCBwaGFzZSAgICAgICAgICAgICovCgkJCWlmIChwVGNiLT5UQ1NfRmxhZ3MgJiAo
VENGX1NZTkNfRE9ORXxUQ0ZfTk9fU1lOQ19ORUdPKSkgewoJCQkgICAgaWYgKHR1bF9tc2dvdXRf
bm9wKHBIY3MpID09IC0xKQoJCQkJcmV0dXJuICgtMSk7CgkJCX0gZWxzZSB7CgkJCSAgICBpZiAo
dHVsX21zZ291dF9zeW5jKHBIY3MpID09IC0xKQoJCQkJcmV0dXJuKC0xKTsKCQkJfQoJCQlicmVh
azsKCgkJICAgIGRlZmF1bHQ6CgkJCXJldHVybiAodHVsX2JhZF9zZXEocEhjcykpOwoJCX0KCSAg
ICB9Cgl9CgoJY2FzZSA0OgpzdGF0ZV80OgojaWYgREVCVUdfU1RBVEUKcHJpbnQoIi1zNC0iKTsK
I2VuZGlmCgkgICAgaWYgKChwU2NiLT5TQ0JfRmxhZ3MgJiBTQ0ZfRElSKSA9PSBTQ0ZfTk9fWEYp
IHsKCQlnb3RvIHN0YXRlXzY7ICAgICAgICAgLyogR28gdG8gc3RhdGUgNiAgICAgICAgICAgICAg
ICAqLwoJICAgIH0KCgkgICAgZm9yICg7OykgewoJCWlmIChwU2NiLT5TQ0JfQnVmTGVuID09IDAp
CgkJCWdvdG8gc3RhdGVfNjsgICAgICAgICAvKiBHbyB0byBzdGF0ZSA2ICAgICAgICAgICAgICAg
ICovCgkJc3dpdGNoIChwSGNzLT5IQ1NfUGhhc2UpIHsKCQkgICAgY2FzZSBTVEFUVVNfSU46ICAg
ICAgICAgICAvKiBTdGF0dXMgcGhhc2UgICAgICAgICAgICAgICAgICovCgkJCWlmICgocFNjYi0+
U0NCX0ZsYWdzICYgU0NGX0RJUikgIT0gMCkgewoJCQkgLyogaWYgZGlyZWN0aW9uIGJpdCBzZXQg
dGhlbiByZXBvcnQgZGF0YSB1bmRlcnJ1biAqLwoJCQkgICAgcFNjYi0+U0NCX0hhU3RhdCA9IEhP
U1RfRE9fRFU7DQoJCQl9CgkJCWlmICgodHVsX3N0YXR1c19tc2cocEhjcykpID09IC0xKQ0KCQkJ
ICAgIHJldHVybiAoLTEpOw0KCQkJYnJlYWs7CgkJICAgIGNhc2UgTVNHX0lOOiAgICAgICAgICAg
ICAvKiBNZXNzYWdlIGluIHBoYXNlICAgICAgICAgICAgICovCgkJCXBTY2ItPlNDQl9OeHRTdGF0
ID0gNDsNCgkJCWlmICh0dWxfbXNnaW4ocEhjcykgPT0gLTEpCgkJCSAgICByZXR1cm4gKC0xKTsK
CQkJYnJlYWs7DQoJCSAgICBjYXNlIE1TR19PVVQ6ICAgICAgICAgICAgIC8qIE1lc3NhZ2Ugb3V0
IHBoYXNlICAgICAgICAgICAgKi8KCQkJaWYgKHBIY3MtPkhDU19KU1N0YXR1czAgJiBUU1NfUEFS
X0VSUk9SKSB7CgkJCSAgICBwU2NiLT5TQ0JfQnVmTGVuID0gMDsKCQkJICAgIHBTY2ItPlNDQl9I
YVN0YXQgPSBIT1NUX0RPX0RVOwoJCQkgICAgaWYgKHR1bF9tc2dvdXRfaWRlKHBIY3MpID09IC0x
KQoJCQkJcmV0dXJuICgtMSk7CgkJCSAgICBnb3RvIHN0YXRlXzY7ICAgICAgICAgLyogR28gdG8g
c3RhdGUgNiAgICAgICAgICAgKi8KCQkJfSBlbHNlIHsKCQkJICAgIGlmICh0dWxfbXNnb3V0X25v
cChwSGNzKSA9PSAtMSkKCQkJCXJldHVybiAoLTEpOwoJCQl9CgkJCWJyZWFrOwoKCQkgICAgY2Fz
ZSBEQVRBX0lOOiAgICAgICAgICAgICAgIC8qIERhdGEgaW4gcGhhc2UgICAgICAgICAgICAgKi8K
CQkJcmV0dXJuICh0dWxfeGZlcl9kYXRhX2luKHBIY3MpKTsKCgkJICAgIGNhc2UgREFUQV9PVVQ6
ICAgICAgICAgICAgICAvKiBEYXRhIG91dCBwaGFzZSAgICAgICAgICAgICovCgkJCXJldHVybiAo
dHVsX3hmZXJfZGF0YV9vdXQocEhjcykpOwoJCSAgICBjYXNlIENNRF9PVVQ6ICAgICAgICAgICAg
ICAgLyogQ29tbWFuZCBvdXQgcGhhc2UgICAgICAgICAqLwoJCSAgICBkZWZhdWx0OgoJCQlyZXR1
cm4gKHR1bF9iYWRfc2VxKHBIY3MpKTsKCQl9CgkgICAgfQoKCWNhc2UgNToKCQlpZiAoKG5leHQg
PSB0dWxfc3RhdGVfNShwSGNzKSkgPT0gLTEpCgkJICAgIHJldHVybiAtMTsKCQlpZiAobmV4dCA9
PSA0KQoJCSAgICBnb3RvIHN0YXRlXzQ7CgoJY2FzZSA2OgpzdGF0ZV82OgojaWYgREVCVUdfU1RB
VEUNCnByaW50KCItczYtIik7DQojZW5kaWYNCgkgICAgZm9yICg7OykgewoJCXN3aXRjaCAocEhj
cy0+SENTX1BoYXNlKSB7CgkJICAgIGNhc2UgU1RBVFVTX0lOOiAgICAgICAgICAgLyogU3RhdHVz
IHBoYXNlICAgICAgICAgICAgICAgICAqLwoJCQlpZiAodHVsX3N0YXR1c19tc2cocEhjcykgPT0g
LTEpCgkJCSAgICByZXR1cm4gKC0xKTsKCQkJYnJlYWs7DQoJCSAgICBjYXNlIE1TR19JTjogICAg
ICAgICAgICAgIC8qIE1lc3NhZ2UgaW4gcGhhc2UgICAgICAgICAgICAgKi8KCQkJcFNjYi0+U0NC
X054dFN0YXQgPSA2OwoJCQlpZiAoKHR1bF9tc2dpbihwSGNzKSkgPT0gLTEpCgkJCSAgICByZXR1
cm4gKC0xKTsKCQkJYnJlYWs7CgkJICAgIGNhc2UgTVNHX09VVDogICAgICAgICAgICAgLyogTWVz
c2FnZSBvdXQgcGhhc2UgICAgICAgICAgICAqLwoJCQlpZiAoKHR1bF9tc2dvdXRfbm9wKHBIY3Mp
KSA9PSAtMSkNCgkJCSAgICByZXR1cm4gKC0xKTsKCQkJYnJlYWs7DQoJCSAgICBjYXNlIERBVEFf
SU46ICAgICAgICAgICAgIC8qIERhdGEgaW4gcGhhc2UgICAgICAgICAgICAgICAgKi8KCQkJaWYg
KHR1bF94cGFkX2luKHBIY3MpID09IC0xKQoJCQkgICAgcmV0dXJuICgtMSk7CgkJCWJyZWFrOw0K
CQkgICAgY2FzZSBEQVRBX09VVDogICAgICAgICAgICAvKiBEYXRhIG91dCBwaGFzZSAgICAgICAg
ICAgICAgICovCgkJCWlmICh0dWxfeHBhZF9vdXQocEhjcykgPT0gLTEpCgkJCSAgICByZXR1cm4g
KC0xKTsKCQkJYnJlYWs7DQoJCSAgICBkZWZhdWx0OgoJCQlyZXR1cm4gKHR1bF9iYWRfc2VxKHBI
Y3MpKTsKCQl9CgkgICAgfQoKCWNhc2UgODogewoJICAgIFVMT05HICAgICAgIGk7CgkgICAgQllU
RSAgICAgICAgdGFyOwoKCSAgICBpZiAocFNjYiAhPSB0dWxfcG9wX3BlbmRfc2NiKHBIY3MsIHBT
Y2IpKSB7CgkJcHJpbnRmKCJEaWZmZXJuZXQgU0NCIHN0YXRlIDFcbiIpOw0KCSAgICB9CgoJICAg
IGlmIChwSGNzLT5IQ1NfUGhhc2UgIT0gTVNHX09VVCkgewoJCXJldHVybiAodHVsX2JhZF9zZXEo
cEhjcykpOyAgICAgIC8qIFVuZXhwZWN0ZWQgcGhhc2UgICAgICAgICAqLwoJICAgIH0KCgkgICAg
VFVMX1dSKHBIY3MtPkhDU19TRmlmbywgTVNHX0RFVlJTVCk7DQoJICAgIFRVTF9XUihwSGNzLT5I
Q1NfU0NtZCwgVFNDX1hGX0ZJRk9fT1VUKTsNCgoJICAgIHBTY2ItPlNDQl9IYVN0YXQgPSAwOwoJ
ICAgIHR1bF9hcHBlbmRfZG9uZV9zY2IocEhjcywgcFNjYik7CgoJICAgIHBUY2ItPlRDU19GbGFn
cyAmPSB+KFRDRl9TWU5DX0RPTkUgfCBUQ0ZfV0RUUl9ET05FKTsKCSAgICBwVGNiLT5UQ1NfSlNf
UGVyaW9kID0gMDsKCSAgICBwVGNiLT5UQ1NfU0NvbmZpZzAgPSBwSGNzLT5IQ1NfU0NvbmYxOwoJ
ICAgIHBUY2ItPlRDU19UYWdDbnQgPSAwOwoJICAgIHBUY2ItPlRDU19Ob25UYWdTY2IgPSBOVUxM
OwoKCQkvKiBhYm9ydCBhbGwgU0NCIHdpdGggc2FtZSB0YXJnZXQgKi8NCgkgICAgdGFyID0gcFNj
Yi0+U0NCX1RhcmdldDsgICAgICAgICAgLyogdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgICAq
LwoKCSAgICBwU2NiID0gcEhjcy0+SENTX1NjYiA7CgkgICAgZm9yIChpID0gMDsgaSA8IHBIY3Mt
PkhDU19OdW1TY2JzOyBpKyssIHBTY2IrKykgewoJCWlmICgocFNjYi0+U0NCX1N0YXR1cyAmIFND
Ql9CVVNZKSAmJgoJCSAgICAocFNjYi0+U0NCX1RhcmdldCA9PSB0YXIpICkgewoJCSAgICB0dWxf
dW5saW5rX2J1c3lfc2NiKHBIY3MsIHBTY2IpOwoKCQkgICAgcFNjYi0+U0NCX0hhU3RhdCA9IEhP
U1RfREVWX1JTVDsKCQkgICAgdHVsX2FwcGVuZF9kb25lX3NjYihwSGNzLCBwU2NiKTsKCSAgICAg
ICAgfSAKCSAgICB9CgoJICAgIHBIY3MtPkhDU19GbGFncyB8PSAgSENGX0VYUEVDVF9ESVNDOwoJ
ICAgIGlmICh3YWl0X3R1bGlwKHBIY3MpID09IC0xKSB7CgkJICAgIHJldHVybiAoLTEpOwoJICAg
IH0KCSAgICAvKiBVbmV4cGVjdGVkIHBoYXNlICAgICAgICAgKi8KCX0KCglkZWZhdWx0OgoJCXJl
dHVybiAodHVsX2JhZF9zZXEocEhjcykpOwogICAgfQp9CgoKCi8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Ci8qIHN0YXRlIGFmdGVyIGRtYSB4ZmVyIGRvbmUgb3IgcGhhc2UgY2hhbmdlIGJlZm9yZSB4ZmVy
IGRvbmUgKi8Kc3RhdGljIGxvbmcgICAgIHR1bF9zdGF0ZV81KEk5MVVfSENTICpwSGNzKQp7Cgog
ICAgSTkxVV9TQ0IgICAgKnBTY2IgPSBwSGNzLT5IQ1NfQWN0U2NiOwogICAgVENTICAgICAgICAg
KnBUY2IgPSBwSGNzLT5IQ1NfQWN0VGNzOwogICAgbG9uZyAgICAgICAgY250LCB4Y250OyAgLyog
Y2Fubm90IHVzZSB1bnNpZ25lZCAhISBjb2RlOiBpZiAoeGNudCA8IDApICovDQoNCiNpZiBERUJV
R19TVEFURQ0KcHJpbnQoIi1zNS0iKTsNCiNlbmRpZg0KCiAgICAvKi0tLS0tLSBnZXQgcmVtYWlu
aW5nIGNvdW50IC0tLS0tLS0qLw0KICAgIGNudCA9IFRVTF9SRExPTkcocEhjcy0+SENTX0Jhc2Ug
KyBUVUxfU0NudDApICYgMHgwRkZGRkZGOwoKLypwcmludCgiUmVtYWluaW5nIFNDU0kgQ291bnQg
PSAlbHhcbiIsIGNudCk7Ki8KICAgIGlmIChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfWENt
ZCkgJiAweDIwKQ0KCXsNCgkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEQVRBX0lOIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCgkJLyogY2hlY2sgc2NzaSBwYXJpdHkgZXJyb3Ig
Ki8NCglpZiAocEhjcy0+SENTX0pTU3RhdHVzMCAmIFRTU19QQVJfRVJST1IpIHsNCgkgICAgcFNj
Yi0+U0NCX0hhU3RhdCA9IEhPU1RfRE9fRFU7CgkgICAgfQoKCWlmIChUVUxfUkQocEhjcy0+SENT
X0Jhc2UgKyBUVUxfWFN0YXR1cykgJiBYUEVORCkNCgkgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIERNQSB4ZmVyIHBlbmRpbmcsIFNlbmQgU1RPUCAgKi8NCgkJCS8qIHRlbGwgSGFy
ZHdhcmUgIHNjc2kgeGZlciBoYXMgYmVlbiB0ZXJtaW5hdGVkICovDQoJICAgIFRVTF9XUihwSGNz
LT5IQ1NfQmFzZSArIFRVTF9YQ3RybCwgVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1hDdHJs
KSB8IDB4ODApOw0KCQkJLyogd2FpdCB1bnRpbCBETUEgeGZlciBub3QgcGVuZGluZyAqLw0KCSAg
ICB3aGlsZSAoVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1hTdGF0dXMpICYgWFBFTkQgKTsN
CgkgICAgfQ0KCX0NCiAgICBlbHNlDQoJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
Ki0tLS0tLS0tIERBVEEgT1VUIC0tLS0tLS0tLS0tKi8NCglpZiAoKFRVTF9SRChwSGNzLT5IQ1Nf
QmFzZSArIFRVTF9TU3RhdHVzMSkgJiBUU1NfWEZFUl9DTVApID09IDApDQoJICAgIHsNCgkgICAg
aWYgKHBUY2ItPlRDU19KU19QZXJpb2QgJiBUU0NfV0lERV9TQ1NJKQ0KCQljbnQgKz0gKFRVTF9S
RChwSGNzLT5IQ1NfQmFzZSArIFRVTF9TRmlmb0NudCkgJiAweDFGKSA8PCAxOw0KCSAgICBlbHNl
DQoJCWNudCArPSAoVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NGaWZvQ250KSAmIDB4MUYp
Ow0KCSAgICB9DQoJaWYgKFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9YU3RhdHVzKSAmIFhQ
RU5EKQ0KCSAgICB7ICAgICAgICAgICAgICAgICAgIC8qIGlmIERNQSB4ZmVyIGlzIHBlbmRpbmcs
IGFib3J0IERNQSB4ZmVyICovDQoJICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9YQ21k
LCBUQVhfWF9BQlQgKTsNCgkJCQkvKiB3YWl0IEFib3J0IERNQSB4ZmVyIGRvbmUgKi8NCgkgICAg
d2hpbGUgKChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfSW50KSAmIFhBQlQpID09IDApOw0K
CSAgICB9DQoJaWYgKChjbnQgPT0gMSkgJiYgKHBIY3MtPkhDU19QaGFzZSA9PSBEQVRBX09VVCkp
IHsKCSAgICBUVUxfV1IocEhjcy0+SENTX1NDbWQsIFRTQ19YRl9GSUZPX09VVCk7DQoJICAgIGlm
ICh3YWl0X3R1bGlwKHBIY3MpID09IC0xKSB7CgkJcmV0dXJuICgtMSk7CgkJfQ0KCSAgICBjbnQg
PSAwOwoJICAgIH0NCgllbHNlDQoJICAgIHsNCgkgICAgaWYgKChUVUxfUkQocEhjcy0+SENTX0Jh
c2UgKyBUVUxfU1N0YXR1czEpICYgVFNTX1hGRVJfQ01QKSA9PSAwKQ0KCQlUVUxfV1IocEhjcy0+
SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfRkxVU0hfRklGTyk7DQoJICAgIH0NCgl9DQoNCiAg
ICBpZiAoY250ID09IDApIHsKCXBTY2ItPlNDQl9CdWZMZW4gPSAwOwoJcmV0dXJuICg2KTsgICAg
ICAgICAgICAgICAgICAgICAvKiBHbyB0byBzdGF0ZSA2ICAgICAgICAgICAgICAgICovDQoJfQoJ
CQkJCS8qIFVwZGF0ZSBhY3RpdmUgZGF0YSBwb2ludGVyICovDQogICAgeGNudCA9IHBTY2ItPlND
Ql9CdWZMZW4gLSBjbnQ7ICAgLyogeGNudD09IGJ5dGVzIGFscmVhZHkgeGZlcnJlZCAqLw0KICAg
IHBTY2ItPlNDQl9CdWZMZW4gPSBjbnQ7ICAgICAgICAgIC8qIGNudCA9PSBieXRlcyBsZWZ0IHRv
IGJlIHhmZXJyZWQgKi8NCiNpZiAwIAogICAgaWYocEhjcy0+SENTX1BoYXNlPT0zKXsKCSAgICBw
U2NiLT5TQ0JfQnVmTGVuID0gMDsgCiAgICB9CiNlbmRpZgoKCgogICAgaWYgKHBTY2ItPlNDQl9G
bGFncyAmIFNDRl9TRykKCXsKCXJlZ2lzdGVyIEk5MVVfU0cgKnNncDsNCglVTE9ORyAgICAgICBp
Ow0KCglzZ3AgPSAmcFNjYi0+U0NCX1NHTGlzdFtwU2NiLT5TQ0JfU0dJZHhdOw0KCWZvciAoaSA9
IHBTY2ItPlNDQl9TR0lkeDsgaSA8IHBTY2ItPlNDQl9TR01heDsgc2dwKyssIGkrKykNCgkgICAg
ew0KCSAgICB4Y250IC09IHNncC0+U0dfTGVuOw0KCSAgICBpZiAoeGNudCA8IDApDQoJCXsgICAg
ICAgICAgICAgICAvKiB0aGlzIHNncCB4ZmVyIGhhbGYgZG9uZSAqLw0KCQl4Y250ICs9IHNncC0+
U0dfTGVuOyAgIC8qIHhjbnQgPT0gYnl0ZXMgeGZlcnJlZCBpbiB0aGlzIHNncCAqLw0KCQlzZ3At
PlNHX1B0ciArPSAoVUxPTkcpeGNudDsgICAvKiBuZXcgcHRyIHRvIGJlIHhmZXIgKi8NCgkJc2dw
LT5TR19MZW4gLT0gKFVMT05HKXhjbnQ7ICAgLyogbmV3IGxlbiB0byBiZSB4ZmVyICovDQoJCXBT
Y2ItPlNDQl9CdWZQdHIgKz0gKChVTE9ORykoaSAtIHBTY2ItPlNDQl9TR0lkeCkgPDwgMyk7DQoJ
CQkJCS8qIG5ldyBTRyB0YWJsZSBwdHIgKi8NCgkJcFNjYi0+U0NCX1NHTGVuID0gKEJZVEUpKHBT
Y2ItPlNDQl9TR01heCAtIGkpOw0KCQkJCQkvKiBuZXcgU0cgdGFibGUgbGVuICovDQoJCXBTY2It
PlNDQl9TR0lkeCA9IChXT1JEKWk7DQoJCQkJCS8qIGZvciBuZXh0IGRpc2MgYW5kIGNvbWUgaW4g
dGhpcyBsb29wKi8NCgkJcmV0dXJuICg0KTsgICAgICAgICAgICAgLyogR28gdG8gc3RhdGUgNCAg
ICAgICAgICAgICAgICAqLw0KCQl9DQoJCQkvKiBlbHNlICh4Y250ID49IDAgLCBpLmUuIHRoaXMg
c2dwIGFscmVhZHkgeGZlcnJlZCAqLw0KCSAgICB9IC8qIGZvciAqLw0KCXJldHVybiAoNik7ICAg
ICAgICAgICAgICAgICAgICAgLyogR28gdG8gc3RhdGUgNiAgICAgICAgICAgICAgICAqLw0KCX0K
ICAgICBlbHNlIHsKCXBTY2ItPlNDQl9CdWZQdHIgKz0geGNudDsNCgl9CiAgICByZXR1cm4gKDQp
OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHbyB0byBzdGF0ZSA0ICAgICAgICAgICAgICAg
ICovDQp9DQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nICAgICB0dWxfeGZlcl9k
YXRhX2luKEk5MVVfSENTICpwSGNzKQ0Kew0KICAgIEk5MVVfU0NCICpwU2NiID0gcEhjcy0+SENT
X0FjdFNjYjsNCgovKnByaW50KCJcbkVudGVyIHhmZXIgZGF0YSBpbjsgcHRyID0gJWx4OyBjbnQg
PSAlbHhcbiIsIHBTY2ItPlNDQl9CdWZQdHIsDQoJCQkJCQkJcFNjYi0+U0NCX0J1Zkxlbik7Ki8N
CiAgICBpZiAoKHBTY2ItPlNDQl9GbGFncyAmIFNDRl9ESVIpID09ICBTQ0ZfRE9VVCkgIHsNCgly
ZXR1cm4gKDYpOyAgICAgICAvKiB3cm9uZyBkaXJlY3Rpb24gKi8NCiAgICB9CiAgICBUVUxfV1JM
T05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDbnQwLCBwU2NiLT5TQ0JfQnVmTGVuKTsKCiAgICBU
VUxfV1IocEhjcy0+SENTX1NDbWQsIFRTQ19YRl9ETUFfSU4pOyAgICAgICAgICAvKiA3LzI1Lzk1
ICovDQoKICAgIGlmIChwU2NiLT5TQ0JfRmxhZ3MgJiBTQ0ZfU0cpIHsgICAgICAgICAgIC8qIFMv
RyB4ZmVyICovCglUVUxfV1JMT05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1hDbnRILCAoKFVMT05H
KXBTY2ItPlNDQl9TR0xlbikgPDwgMyk7DQoJVFVMX1dSTE9ORyhwSGNzLT5IQ1NfQmFzZSArIFRV
TF9YQWRkSCwgcFNjYi0+U0NCX0J1ZlB0cik7DQoJVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVM
X1hDbWQsIFRBWF9TR19JTik7DQogICAgfSBlbHNlIHsNCglUVUxfV1JMT05HKHBIY3MtPkhDU19C
YXNlICsgVFVMX1hDbnRILCBwU2NiLT5TQ0JfQnVmTGVuKTsNCglUVUxfV1JMT05HKHBIY3MtPkhD
U19CYXNlICsgVFVMX1hBZGRILCBwU2NiLT5TQ0JfQnVmUHRyKTsNCglUVUxfV1IocEhjcy0+SENT
X0Jhc2UgKyBUVUxfWENtZCwgVEFYX1hfSU4pOw0KICAgIH0KCiAgICBwU2NiLT5TQ0JfTnh0U3Rh
dCA9IDU7CiAgICByZXR1cm4gKDApOyAgLyogcmV0dXJuIHRvIE9TLCB3YWl0IHhmZXIgZG9uZSAs
IGxldCBqYXNfaXNyIGNvbWUgaW4gKi8NCn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3RhdGlj
IGxvbmcgICAgIHR1bF94ZmVyX2RhdGFfb3V0KEk5MVVfSENTICpwSGNzKQ0Kew0KICAgIEk5MVVf
U0NCICpwU2NiID0gcEhjcy0+SENTX0FjdFNjYjsNCgovKnByaW50KCJFbnRlciB4ZmVyIGRhdGEg
b3V0XG4iKTsqLw0KICAgIGlmICgocFNjYi0+U0NCX0ZsYWdzICYgU0NGX0RJUikgPT0gIFNDRl9E
SU4pIHsNCglyZXR1cm4gKDYpOyAgICAgICAvKiB3cm9uZyBkaXJlY3Rpb24gKi8NCiAgICB9DQoN
CiAgICBUVUxfV1JMT05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDbnQwLCBwU2NiLT5TQ0JfQnVm
TGVuKTsKDQogICAgaWYgKHBTY2ItPlNDQl9GbGFncyAmIFNDRl9TRykgeyAgICAgICAgICAgLyog
Uy9HIHhmZXIgKi8NCglUVUxfV1JMT05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1hDbnRILCAoKFVM
T05HKXBTY2ItPlNDQl9TR0xlbikgPDwgMyk7DQoJVFVMX1dSTE9ORyhwSGNzLT5IQ1NfQmFzZSAr
IFRVTF9YQWRkSCwgcFNjYi0+U0NCX0J1ZlB0cik7DQoJVFVMX1dSKHBIY3MtPkhDU19CYXNlICsg
VFVMX1hDbWQsIFRBWF9TR19PVVQpOw0KICAgIH0gZWxzZSB7DQoJVFVMX1dSTE9ORyhwSGNzLT5I
Q1NfQmFzZSArIFRVTF9YQ250SCwgcFNjYi0+U0NCX0J1Zkxlbik7DQoJVFVMX1dSTE9ORyhwSGNz
LT5IQ1NfQmFzZSArIFRVTF9YQWRkSCwgcFNjYi0+U0NCX0J1ZlB0cik7DQoJVFVMX1dSKHBIY3Mt
PkhDU19CYXNlICsgVFVMX1hDbWQsIFRBWF9YX09VVCk7DQogICAgfQoKICAgIFRVTF9XUihwSGNz
LT5IQ1NfU0NtZCwgVFNDX1hGX0RNQV9PVVQpOwoKICAgIHBTY2ItPlNDQl9OeHRTdGF0ID0gNTsK
ICAgIHJldHVybiAoMCk7ICAvKiByZXR1cm4gdG8gT1MsIHdhaXQgeGZlciBkb25lICwgbGV0IGph
c19pc3IgY29tZSBpbiAqLwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nICAg
ICB0dWxfeHBhZF9pbihJOTFVX0hDUyAqcEhjcykKewogICAgSTkxVV9TQ0IgKnBTY2IgPSBwSGNz
LT5IQ1NfQWN0U2NiOwogICAgVENTICpwVGNiID0gcEhjcy0+SENTX0FjdFRjczsKICAgIGludCBw
aGFzZTsNCgogICAgaWYgKChwU2NiLT5TQ0JfRmxhZ3MgJiBTQ0ZfRElSKSAhPSBTQ0ZfTk9fRENI
SykgIHsNCglwU2NiLT5TQ0JfSGFTdGF0ID0gSE9TVF9ET19EVTsgICAgICAgLyogb3ZlciBydW4g
ICAgICAgICAgICAgKi8NCiAgICB9DQogICAgZm9yICg7Oykgew0KCWlmIChwVGNiLT5UQ1NfSlNf
UGVyaW9kICYgVFNDX1dJREVfU0NTSSkNCgkgICAgVFVMX1dSTE9ORyhwSGNzLT5IQ1NfQmFzZSAr
IFRVTF9TQ250MCwgMik7DQoJZWxzZQ0KCSAgICBUVUxfV1JMT05HKHBIY3MtPkhDU19CYXNlICsg
VFVMX1NDbnQwLCAxKTsNCg0KCVRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1hGX0ZJRk9fSU4p
Ow0KCWlmICgocGhhc2UgPSB3YWl0X3R1bGlwKHBIY3MpKSA9PSAtMSkKCSAgICByZXR1cm4gKC0x
KTsKCglpZiAocGhhc2UgIT0gREFUQV9JTikgewoJICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSAr
IFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsKCSAgICByZXR1cm4gKDYpOwoJICAgIH0KCVRV
TF9SRChwSGNzLT5IQ1NfU0ZpZm8pOw0KICAgIH0NCn0KCnN0YXRpYyBsb25nICAgICB0dWxfeHBh
ZF9vdXQoSTkxVV9IQ1MgKnBIY3MpCnsKICAgIEk5MVVfU0NCICpwU2NiID0gcEhjcy0+SENTX0Fj
dFNjYjsKICAgIFRDUyAqcFRjYiA9IHBIY3MtPkhDU19BY3RUY3M7CiAgICBpbnQgcGhhc2U7Cgog
ICAgaWYgKChwU2NiLT5TQ0JfRmxhZ3MgJiBTQ0ZfRElSKSAhPSBTQ0ZfTk9fRENISykgIHsKCXBT
Y2ItPlNDQl9IYVN0YXQgPSBIT1NUX0RPX0RVOyAgICAgICAvKiBvdmVyIHJ1biAgICAgICAgICAg
ICAqLwogICAgfQogICAgZm9yICg7OykgewoJaWYgKHBUY2ItPlRDU19KU19QZXJpb2QgJiBUU0Nf
V0lERV9TQ1NJKQoJICAgIFRVTF9XUkxPTkcocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0NudDAsIDIp
OwoJZWxzZQoJICAgIFRVTF9XUkxPTkcocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0NudDAsIDEpOwoK
CVRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIDApOwoJVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBUU0Nf
WEZfRklGT19PVVQpOwoJaWYgKChwaGFzZSA9IHdhaXRfdHVsaXAocEhjcykpID09IC0xKSAKCSAg
ICByZXR1cm4gKC0xKTsKCglpZiAocGhhc2UgIT0gREFUQV9PVVQpCgkgICAgeyAgICAgICAgICAg
ICAgICAgICAvKiBEaXNhYmxlIHdpZGUgQ1BVIHRvIGFsbG93IHJlYWQgMTYgYml0cyAqLw0KCSAg
ICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0N0cmwxLCBUU0NfSFdfUkVTRUxFQ1QpOwoJ
ICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsK
CSAgICByZXR1cm4gKDYpOwoJICAgIH0KICAgIH0KfQoKCi8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpz
dGF0aWMgbG9uZyAgICAgdHVsX3N0YXR1c19tc2coSTkxVV9IQ1MgKnBIY3MpICAgIC8qIHN0YXR1
cyAmIE1TR19JTiAqLwp7CiAgICBJOTFVX1NDQiAgICAqcFNjYiA9IHBIY3MtPkhDU19BY3RTY2I7
CiAgICBjaGFyICAgICAgICBwaGFzZTsKICAgIEJZVEUgICAgICAgIG1zZzsKCiAgICBUVUxfV1Io
cEhjcy0+SENTX1NDbWQsIFRTQ19DTURfQ09NUCk7CiAgICBpZiAoKHBoYXNlID0gd2FpdF90dWxp
cChwSGNzKSkgPT0gLTEpIHsKCXJldHVybiAoLTEpOwogICAgfQ0KCS8qIGdldCBzdGF0dXMgKi8K
ICAgIHBTY2ItPlNDQl9UYVN0YXQgPSBUVUxfUkQocEhjcy0+SENTX1NGaWZvKTsKI2lmIDAKICAg
IHBoYXNlID0gcEhjcy0+SENTX1BoYXNlID0gVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NT
aWduYWwpICYgMHgwNzsNCiNlbmRpZgoKICAgIGlmIChwaGFzZSA9PSBNU0dfT1VUKSB7CglpZiAo
cEhjcy0+SENTX0pTU3RhdHVzMCAmIFRTU19QQVJfRVJST1IpIHsKCSAgICBUVUxfV1IocEhjcy0+
SENTX1NGaWZvLCBNU0dfUEFSSVRZKTsKCX0KCWVsc2UgewoJICAgIFRVTF9XUihwSGNzLT5IQ1Nf
U0ZpZm8sIE1TR19OT1ApOw0KCX0NCglUVUxfV1IocEhjcy0+SENTX1NDbWQsIFRTQ19YRl9GSUZP
X09VVCk7DQoJcmV0dXJuICh3YWl0X3R1bGlwKHBIY3MpKTsNCiAgICB9CgogICAgaWYgKHBoYXNl
ID09IE1TR19JTikgewoJbXNnID0gVFVMX1JEKHBIY3MtPkhDU19TRmlmbyk7DQoJaWYgKHBIY3Mt
PkhDU19KU1N0YXR1czAgJiBUU1NfUEFSX0VSUk9SKSB7ICAgICAgICAgIC8qIFBhcml0eSBlcnJv
ciAgICovCgkgICAgaWYgKChwaGFzZSA9IHR1bF9tc2dpbl9hY2NlcHQocEhjcykpID09IC0xKQoJ
CXJldHVybiAoLTEpOwoJICAgIGlmIChwaGFzZSAhPSBNU0dfT1VUKQoJCXJldHVybiAodHVsX2Jh
ZF9zZXEocEhjcykpOwoJICAgIFRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIE1TR19QQVJJVFkpOwoJ
ICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1hGX0ZJRk9fT1VUKTsKCSAgICByZXR1cm4g
KHdhaXRfdHVsaXAocEhjcykpOwoJfQoKCWlmIChtc2cgPT0gMCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogQ29tbWFuZCBjb21wbGV0ZSAgICAgICovCgkgICAgaWYgKChwU2NiLT5T
Q0JfVGFTdGF0ICYgMHgxOCkgPT0gMHgxMCkgeyAgIC8qIE5vIGxpbmsgc3VwcG9ydCAgICAqLwoJ
CXJldHVybiAodHVsX2JhZF9zZXEocEhjcykpOwoJICAgIH0KCSAgICBwSGNzLT5IQ1NfRmxhZ3Mg
fD0gSENGX0VYUEVDVF9ET05FX0RJU0M7DQoJICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRV
TF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsNCgkgICAgVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBU
U0NfTVNHX0FDQ0VQVCk7DQoJICAgIHJldHVybih3YWl0X3R1bGlwKHBIY3MpKTsNCgl9DQoJaWYg
KChtc2cgPT0gIE1TR19MSU5LX0NPTVApIHx8IChtc2cgPT0gTVNHX0xJTktfRkxBRykpDQoJICAg
IHsNCgkgICAgaWYgKChwU2NiLT5TQ0JfVGFTdGF0ICYgMHgxOCkgPT0gMHgxMCkNCgkJcmV0dXJu
ICh0dWxfbXNnaW5fYWNjZXB0KHBIY3MpKTsNCgkgICAgfQ0KCX0NCiAgICByZXR1cm4gKHR1bF9i
YWRfc2VxKHBIY3MpKTsNCn0NCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyogc2NzaSBidXMg
ZnJlZSAqLwpzdGF0aWMgbG9uZyAgICAgaW50X3R1bF9idXNmcmVlKEk5MVVfSENTICpwSGNzKQp7
CiAgICBJOTFVX1NDQiAqcFNjYiA9IHBIY3MtPkhDU19BY3RTY2I7CgogICAgaWYgKHBTY2IgIT0g
TlVMTCkKCXsKCWlmIChwU2NiLT5TQ0JfU3RhdHVzICYgU0NCX1NFTEVDVCkgeyAvKiBzZWxlY3Rp
b24gdGltZW91dCAqLwoJICAgIGlmIChwU2NiICE9IHR1bF9wb3BfcGVuZF9zY2IocEhjcywgcFNj
YikpIHsKCQlwcmludGYoImloYTogRGlmZmVybmV0IFNDQlxuIik7CgkJfQoJICAgIHBTY2ItPlND
Ql9IYVN0YXQgPSBIT1NUX1NFTF9UT1VUOwoJICAgIHR1bF9hcHBlbmRfZG9uZV9zY2IocEhjcywg
cFNjYik7CgkgICAgfQoJZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVW5leHBl
Y3RlZCBidXMgZnJlZSAgICAgICAgICAqLwoJICAgIHR1bF91bmxpbmtfYnVzeV9zY2IocEhjcywg
cFNjYik7CgoJICAgIHBTY2ItPlNDQl9IYVN0YXQgPSBIT1NUX0JVU19GUkVFOwoJICAgIHR1bF9h
cHBlbmRfZG9uZV9zY2IocEhjcywgcFNjYik7CgkgICAgfQ0KCXBIY3MtPkhDU19BY3RTY2IgPSBO
VUxMOwovKglwSGNzLT5IQ1NfQWN0VGNzID0gTlVMTDsJCSovCgl9CiAgICBUVUxfV1IocEhjcy0+
SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfRkxVU0hfRklGTyk7IC8qIEZsdXNoIFNDU0kgRklG
TyAgKi8KICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ29uZmlnLCBUU0NfSU5JVERF
RkFVTFQpOwogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDdHJsMSwgVFNDX0hXX1JF
U0VMRUNUKTsvKiBFbmFibGUgSFcgcmVzZWxlY3QgICAgICAgKi8KICAgIHJldHVybiAoLTEpOwp9
CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8NCi8qIHNjc2kgYnVzIHJlc2V0ICovCnN0YXRpYyBsb25n
ICAgICBpbnRfdHVsX3Njc2lfcnN0KEk5MVVfSENTICpwSGNzKQp7CiAgICBJOTFVX1NDQiAqcFNj
YjsNCiAgICBpbnQgaTsKICAgIFRDUyAqcFRjYjsKCgkvKiBpZiBETUEgeGZlciBpcyBwZW5kaW5n
LCBhYm9ydCBETUEgeGZlciAqLw0KICAgIGlmIChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxf
WFN0YXR1cykgJiAweDAxKQ0KCXsNCglUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfWENtZCwg
VEFYX1hfQUJUICk7DQoJCS8qIHdhaXQgQWJvcnQgRE1BIHhmZXIgZG9uZSAqLw0KCXdoaWxlICgo
VFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX0ludCkgJiAweDA0KSA9PSAwKQ0KCQkJOw0KCVRV
TF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsNCgl9DQoK
CS8qIEFib3J0IGFsbCBhY3RpdmUgJiBkaXNjb25uZWN0ZWQgc2NiICovCiAgICBwU2NiID0gcEhj
cy0+SENTX1NjYiA7CiAgICBmb3IgKGkgPSAwOyBpIDwgcEhjcy0+SENTX051bVNjYnM7IGkrKywg
cFNjYisrKQoJewoJaWYgKHBTY2ItPlNDQl9TdGF0dXMgJiBTQ0JfQlVTWSApCgkgICAgewoJICAg
IHR1bF91bmxpbmtfYnVzeV9zY2IocEhjcywgcFNjYik7CgoJICAgIHBTY2ItPlNDQl9IYVN0YXQg
PSBIT1NUX1NDU0lfUlNUOwoJICAgIHR1bF9hcHBlbmRfZG9uZV9zY2IocEhjcywgcFNjYik7Cgkg
ICAgfSAKCX0KCiAgICBwSGNzLT5IQ1NfQWN0U2NiID0gTlVMTDsNCgoJLyogY2xyIHN5bmMgbmVn
by4gZG9uZSBmbGFnICovDQogICAgcFRjYiA9ICZwSGNzLT5IQ1NfVGNzWzBdOw0KICAgIGZvciAo
aSA9IDA7IGkgPCBwSGNzLT5IQ1NfTWF4VGFyOyBpKysscFRjYisrICApCgl7CglwVGNiLT5UQ1Nf
RmxhZ3MgJj0gfihUQ0ZfU1lOQ19ET05FIHwgVENGX1dEVFJfRE9ORSk7CglwVGNiLT5UQ1NfSlNf
UGVyaW9kID0gMDsKCXBUY2ItPlRDU19TQ29uZmlnMCA9IHBIY3MtPkhDU19TQ29uZjE7CglwVGNi
LT5UQ1NfVGFnQ250ID0gMDsKCXBUY2ItPlRDU19Ob25UYWdTY2IgPSBOVUxMOwoJfQogICAgcmV0
dXJuKC0xKTsKfQoKI2lmIDAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nICAgICB0
dWxfbXNnaW5fcGFyX2VycihJOTFVX0hDUyAqcEhjcykNCnsNCiAgICBpbnQgcGhhc2UgPSAwOw0K
DQogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDdHJsMCwgVFNDX0ZMVVNIX0ZJRk8p
Ow0KICAgIGlmICgocGhhc2UgPSB0dWxfbXNnaW5fYWNjZXB0KHBIY3MpKSA9PSAtMSkNCglyZXR1
cm4gKC0xKTsNCiAgICBpZiAocGhhc2UgPT0gTVNHX09VVCkNCgl7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEFzc2VydCBhdHRlbnRpb24gICAgICAgICAgICAgKi8NCglUVUxfV1Io
cEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCwgKChUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBU
VUxfU1NpZ25hbCkgJiAoVFNDX1NFVF9BQ0sgfCA3KSkgfCBUU0NfU0VUX0FUTikpOw0KCVRVTF9X
UihwSGNzLT5IQ1NfU0ZpZm8sIE1TR19QQVJJVFkpOw0KCVRVTF9XUihwSGNzLT5IQ1NfU0NtZCwg
VFNDX1hGX0ZJRk9fT1VUKTsNCglpZiAoKHBoYXNlID0gd2FpdF90dWxpcChwSGNzKSkgPT0gLTEp
DQoJICAgIHJldHVybiAoLTEpOw0KCWlmIChwaGFzZSA9PSBNU0dfSU4pDQoJICAgIHsNCgkgICAg
VFVMX1dSTE9ORyhwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ250MCwgMSk7DQoJICAgIFRVTF9XUihw
SGNzLT5IQ1NfU0NtZCwgVFNDX1hGX0ZJRk9fSU4pOw0KCSAgICBpZiAoKHBoYXNlID0gd2FpdF90
dWxpcChwSGNzKSkgPT0gLTEpDQoJCXJldHVybiAoLTEpOw0KCSAgICBpZiAoKHBIY3MtPkhDU19K
U1N0YXR1czAgJiBUU1NfUEFSX0VSUk9SKSA9PSAwKQ0KCQlyZXR1cm4gKHBoYXNlKTsNCgkgICAg
fQ0KCX0NCiAgICByZXR1cm4gKHR1bF9iYWRfc2VxKHBIY3MpKTsNCn0NCiNlbmRpZg0KCi8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovDQovKiBzY3NpIHJlc2VsZWN0aW9uICovDQpzdGF0aWMgbG9uZyAgICAg
aW50X3R1bF9yZXNlbChJOTFVX0hDUyAqcEhjcykNCnsKICAgIEk5MVVfU0NCICAgICpwU2NiOwog
ICAgVENTICAgICAgICAgKnBUY2I7CiAgICBpbnQgICAgICAgICBwaGFzZTsNCiAgICBCWVRFICAg
ICAgICB0YWc7DQogICAgQllURSAgICAgICAgbXNnID0gMDsNCiAgICBXT1JEICAgICAgICB0YXIs
IGx1bjsKCiAgICBpZiAoKHBTY2IgPSBwSGNzLT5IQ1NfQWN0U2NiKSAhPSBOVUxMKQoJewoJaWYg
KHBTY2ItPlNDQl9TdGF0dXMgJiBTQ0JfU0VMRUNUKQoJICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBpZiB3YWl0aW5nIGZvciBzZWxlY3Rpb24gY29tcGxldGUqLwoJICAgIHBTY2It
PlNDQl9TdGF0dXMgJj0gflNDQl9TRUxFQ1Q7CgkgICAgfQoJcEhjcy0+SENTX0FjdFNjYiA9IE5V
TEw7Cgl9CgogICAgLyogLS0tLS0tLS0tIGdldCB0YXJnZXQgaWQtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCiAgICB0YXIgPSAgVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NCdXNJZCk7CiAg
ICAvKiAtLS0tLS0gZ2V0IExVTiBmcm9tIElkZW50aWZ5IG1lc3NhZ2UtLS0tLS0tLS0tLSAqLwog
ICAgbHVuID0gVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NJZGVudCkgJiAweDFGOwkvKiAx
MC8yMS85NyBmcm9tIDB4MDcgLT4gMHgxZiAqLwoKICAgIHBUY2IgPSAmcEhjcy0+SENTX1Rjc1t0
YXJdOwogICAgcEhjcy0+SENTX0FjdFRjcyA9IHBUY2I7CiAgICBUVUxfV1IocEhjcy0+SENTX0Jh
c2UgKyBUVUxfU0NvbmZpZywgcFRjYi0+VENTX1NDb25maWcwKTsKICAgIFRVTF9XUihwSGNzLT5I
Q1NfQmFzZSArIFRVTF9TUGVyaW9kLCBwVGNiLT5UQ1NfSlNfUGVyaW9kKTsKCgogICAgLyogLS0t
LS0tLS0tLS0tLSB0YWcgcXVldWVpbmcgPyAtLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgICBpZiAo
cFRjYi0+VENTX05vblRhZ1NjYiA9PSBOVUxMKSB7Ci8qcHJpbnRmKCJUYWcgZW5hYmxlZFxuIik7
Ki8KCWlmICgocGhhc2UgPSB0dWxfbXNnaW5fYWNjZXB0KHBIY3MpKSA9PSAtMSkKCSAgICByZXR1
cm4gKC0xKTsKCWlmIChwaGFzZSAhPSBNU0dfSU4pCgkgICAgZ290byBub190YWc7DQoJVFVMX1dS
TE9ORyhwSGNzLT5IQ1NfQmFzZSArIFRVTF9TQ250MCwgMSk7DQoJVFVMX1dSKHBIY3MtPkhDU19T
Q21kLCBUU0NfWEZfRklGT19JTik7CglpZiAoKHBoYXNlID0gd2FpdF90dWxpcChwSGNzKSkgPT0g
LTEpCgkgICAgcmV0dXJuICgtMSk7Cgltc2cgPSBUVUxfUkQocEhjcy0+SENTX1NGaWZvKTsgICAg
ICAgLyogUmVhZCBUYWcgTWVzc2FnZSAgICAgKi8KCglpZiAoKG1zZyA8IE1TR19TVEFHKSB8fCAo
bXNnID4gTVNHX09UQUcpKSAvKiBJcyBzaW1wbGUgVGFnICAgICAgKi8KCSAgICBnb3RvIG5vX3Rh
ZzsKCglpZiAoKHBoYXNlID0gdHVsX21zZ2luX2FjY2VwdChwSGNzKSkgPT0gLTEpCgkgICAgcmV0
dXJuICgtMSk7CgoJaWYgKHBoYXNlICE9IE1TR19JTikKCSAgICBnb3RvIG5vX3RhZzsKCglUVUxf
V1JMT05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDbnQwLCAxKTsKCVRVTF9XUihwSGNzLT5IQ1Nf
U0NtZCwgVFNDX1hGX0ZJRk9fSU4pOwoJaWYgKChwaGFzZSA9IHdhaXRfdHVsaXAocEhjcykpID09
IC0xKQoJICAgIHJldHVybiAoLTEpOwoJdGFnID0gVFVMX1JEKHBIY3MtPkhDU19TRmlmbyk7ICAg
ICAgIC8qIFJlYWQgVGFnIElEICAgICAgICAgICovCglwU2NiID0gcEhjcy0+SENTX1NjYiArIHRh
ZzsKCWlmICgocFNjYi0+U0NCX1RhcmdldCAhPSB0YXIpICB8fCAocFNjYi0+U0NCX0x1biAhPSBs
dW4pKQoJICAgIHsKCSAgICByZXR1cm4gdHVsX21zZ291dF9hYm9ydF90YWcocEhjcyk7CgkgICAg
fQoJaWYgKHBTY2ItPlNDQl9TdGF0dXMgIT0gU0NCX0JVU1kpCgkgICAgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogMDMvMjQvOTUgICAgICAgICAgICAgKi8NCgkgICAgcmV0
dXJuIHR1bF9tc2dvdXRfYWJvcnRfdGFnKHBIY3MpOwoJICAgIH0KCXBIY3MtPkhDU19BY3RTY2Ig
PSBwU2NiOwoJaWYgKChwaGFzZSA9IHR1bF9tc2dpbl9hY2NlcHQocEhjcykpID09IC0xKQoJICAg
IHJldHVybiAoLTEpOwoJfQogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBObyB0YWcgICAgICAgICAgICAgICAqLwoJewovKnByaW50ZigidGFybHVuPSAl
eFxuIiwgdGFybHVuKTsqLwogICAgICAgIHBTY2IgPSBwVGNiLT5UQ1NfTm9uVGFnU2NiOyAKCWlm
ICgocFNjYi0+U0NCX1N0YXR1cyAhPSBTQ0JfQlVTWSl8fCAocFNjYi0+U0NCX0x1biAhPSBsdW4p
KQoJICAgIHsKLypwcmludGYoIlNDQiB3cm9uZyBsdW5cbiIpOyovCm5vX3RhZzoKCSAgICByZXR1
cm4gdHVsX21zZ291dF9hYm9ydF90YXJnKHBIY3MpOwoJICAgIH0KCXBIY3MtPkhDU19BY3RTY2Ig
PSBwU2NiOwoJaWYgKChwaGFzZSA9IHR1bF9tc2dpbl9hY2NlcHQocEhjcykpID09IC0xKQoJCXJl
dHVybiAoLTEpOwoJfQogICAgcmV0dXJuKHR1bF9uZXh0X3N0YXRlKHBIY3MpKTsKfQoKCgovKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwpzdGF0aWMgbG9uZyAgICAgdHVsX21zZ291dF9hYm9ydF90YXJnKEk5
MVVfSENTICpwSGNzKQp7CiAgICBpbnQgcGhhc2U7CgogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNl
ICsgVFVMX1NTaWduYWwsICgoVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwpICYg
KFRTQ19TRVRfQUNLIHwgNykpIHwgVFNDX1NFVF9BVE4pKTsKICAgIHBoYXNlID0gdHVsX21zZ2lu
X2FjY2VwdChwSGNzKTsKICAgIGlmIChwaGFzZSA9PSAtMSkKCXJldHVybigtMSk7CiAgICBpZiAo
cGhhc2UgIT0gTVNHX09VVCkKCXJldHVybih0dWxfYmFkX3NlcShwSGNzKSk7CgogICAgVFVMX1dS
KHBIY3MtPkhDU19TRmlmbywgTVNHX0FCT1JUKTsKICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwg
VFNDX1hGX0ZJRk9fT1VUKTsKCiAgICBwSGNzLT5IQ1NfRmxhZ3MgfD0gSENGX0VYUEVDVF9ESVND
OwogICAgaWYgKHdhaXRfdHVsaXAocEhjcykgIT0gLTEpIHsKCXJldHVybiAodHVsX2JhZF9zZXEo
cEhjcykpOwogICAgfQogICAgcmV0dXJuIC0xOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3Rh
dGljIGxvbmcgICAgIHR1bF9tc2dvdXRfYWJvcnRfdGFnKEk5MVVfSENTICpwSGNzKQ0KewogICAg
aW50IHBoYXNlOw0KDQogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwsICgo
VFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykp
IHwgVFNDX1NFVF9BVE4pKTsNCiAgICBwaGFzZSA9IHR1bF9tc2dpbl9hY2NlcHQocEhjcyk7DQog
ICAgaWYgKHBoYXNlID09IC0xKQ0KCXJldHVybigtMSk7DQogICAgaWYgKHBoYXNlICE9IE1TR19P
VVQpDQoJcmV0dXJuKHR1bF9iYWRfc2VxKHBIY3MpKTsNCg0KICAgIFRVTF9XUihwSGNzLT5IQ1Nf
U0ZpZm8sIE1TR19BQk9SVF9UQUcpOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1hG
X0ZJRk9fT1VUKTsNCg0KICAgIHBIY3MtPkhDU19GbGFncyB8PSBIQ0ZfRVhQRUNUX0RJU0M7DQog
ICAgaWYgKHdhaXRfdHVsaXAocEhjcykgIT0gLTEpDQoJew0KCXJldHVybiAodHVsX2JhZF9zZXEo
cEhjcykpOw0KCX0NCg0KICAgIHJldHVybiAoLTEpOw0KfQ0KDQovKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Lw0Kc3RhdGljIGxvbmcgICAgIHR1bF9tc2dpbihJOTFVX0hDUyAqcEhjcykNCnsNCiAgICBUQ1Mg
ICAgICAgICAqcFRjYiA9IHBIY3MtPkhDU19BY3RUY3M7CiAgICBsb25nICAgICAgICBjbnQ7CiAg
ICBpbnQgICAgICAgICBwaGFzZTsKICAgIEJZVEUgICAgICAgIGltc2c7CgogICAgZm9yICg7OykN
Cgl7DQoJaWYgKChjbnQgPSBUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0ZpZm9DbnQpICYg
MHgxRikgIT0gMCkNCgkgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoIFND
U0kgRklGTyAgICAgICAgICAgICAgKi8NCgkgICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVM
X1NDdHJsMCwgVFNDX0ZMVVNIX0ZJRk8pOw0KCSAgICB9DQoJVFVMX1dSTE9ORyhwSGNzLT5IQ1Nf
QmFzZSArIFRVTF9TQ250MCwgMSk7DQoJVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBUU0NfWEZfRklG
T19JTik7DQoJaWYgKChwaGFzZSA9IHdhaXRfdHVsaXAocEhjcykpID09IC0xKQ0KCSAgICByZXR1
cm4gKC0xKTsNCglpbXNnID0gVFVMX1JEKHBIY3MtPkhDU19TRmlmbyk7DQoJc3dpdGNoIChpbXNn
KSB7DQoJICAgIGNhc2UgTVNHX0RJU0M6ICAgICAgICAgICAgICAgLyogRGlzY29ubmVjdCBtc2cg
Ki8NCgkJcGhhc2UgPSB0dWxfbXNnaW5fZGlzY29uKHBIY3MpOw0KCQlicmVhazsNCgkgICAgY2Fz
ZSBNU0dfU0RQOg0KCSAgICBjYXNlIE1TR19SRVNUT1JFOg0KCSAgICBjYXNlIE1TR19OT1A6DQoJ
CXBoYXNlID0gdHVsX21zZ2luX2FjY2VwdChwSGNzKTsNCgkJYnJlYWs7DQoJICAgIGNhc2UgTVNH
X1JFSjogICAgICAgICAgICAgICAvKiBDbGVhciBBVE4gZmlyc3QgICAgICAgICAgICAgICovDQoJ
CVRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRVTF9TU2lnbmFsLCAoVFVMX1JEKHBIY3MtPkhDU19C
YXNlICsgVFVMX1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykpKTsNCgkJaWYgKChwVGNiLT5U
Q1NfRmxhZ3MgJiAoVENGX1NZTkNfRE9ORSB8IFRDRl9OT19TWU5DX05FR08pKSA9PSAwKQoJCSAg
ICB7ICAgICAgICAgICAgICAgICAgIC8qIGRvIHN5bmMgbmVnbyAqLw0KCQkgICAgVFVMX1dSKHBI
Y3MtPkhDU19CYXNlICsgVFVMX1NTaWduYWwsICgoVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVM
X1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykpIHwgVFNDX1NFVF9BVE4pKTsNCgkJICAgIH0N
CgkJcGhhc2UgPSB0dWxfbXNnaW5fYWNjZXB0KHBIY3MpOw0KCQlicmVhazsNCgkgICAgY2FzZSBN
U0dfRVhURU5EOiAgICAgICAgICAgICAgIC8qIGV4dGVuZGVkIG1zZyAqLw0KCQlwaGFzZSA9IHR1
bF9tc2dpbl9leHRlbmQocEhjcyk7DQoJCWJyZWFrOw0KCSAgICBjYXNlIE1TR19JR05PUkVXSURF
Og0KCQlwaGFzZSA9IHR1bF9tc2dpbl9pZ25vcmVfd2lkX3Jlc2lkKHBIY3MpOw0KCQlicmVhazsN
CgkgICAgY2FzZSBNU0dfQ09NUDoNCgkJcEhjcy0+SENTX0ZsYWdzIHw9IEhDRl9FWFBFQ1RfRE9O
RV9ESVNDOw0KCQlUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfRkxVU0hf
RklGTyk7DQoJCWlmICgocGhhc2UgPSB0dWxfbXNnaW5fYWNjZXB0KHBIY3MpKSAhPSAtMSkgew0K
CQkgICAgcmV0dXJuICh0dWxfYmFkX3NlcShwSGNzKSk7DQoJCX0NCgkJYnJlYWs7DQoJICAgIGRl
ZmF1bHQ6DQoJCXBoYXNlID0gdHVsX21zZ291dF9yZWplY3QocEhjcyk7DQoJCWJyZWFrOw0KCX0N
CglpZiAocGhhc2UgIT0gTVNHX0lOKQ0KCSAgICByZXR1cm4gKHBoYXNlKTsNCiAgICB9DQoJLyog
c3RhdGVtZW50IHdvbid0IHJlYWNoIGhlcmUgKi8NCn0NCg0KDQovKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Lw0Kc3RhdGljIGxvbmcgICAgIHR1bF9tc2dpbl9kaXNjb24oSTkxVV9IQ1MgKnBIY3MpCnsKICAg
IHBIY3MtPkhDU19GbGFncyB8PSBIQ0ZfRVhQRUNUX0RJU0M7CiAgICBpZiAodHVsX21zZ2luX2Fj
Y2VwdChwSGNzKSA9PSAtMSkKCXJldHVybiAoLTEpOwogICAgcmV0dXJuICh0dWxfYmFkX3NlcShw
SGNzKSk7Cn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3RhdGljIGxvbmcgICAgIHR1bF9tc2dv
dXRfcmVqZWN0KEk5MVVfSENTICpwSGNzKQ0Kew0KICAgIGludCAgICAgICAgIHBoYXNlOw0KCiAg
ICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCwgKChUVUxfUkQocEhjcy0+SENT
X0Jhc2UgKyBUVUxfU1NpZ25hbCkgJiAoVFNDX1NFVF9BQ0sgfCA3KSkgfCBUU0NfU0VUX0FUTikp
Ow0KDQogICAgaWYgKChwaGFzZSA9IHR1bF9tc2dpbl9hY2NlcHQocEhjcykpID09IC0xKQ0KCXJl
dHVybigtMSk7DQoNCiAgICBpZiAocGhhc2UgPT0gTVNHX09VVCkNCgl7DQoJVFVMX1dSKHBIY3Mt
PkhDU19TRmlmbywgTVNHX1JFSik7IC8qIE1zZyByZWplY3QgICAgICAgICAgICovDQoJVFVMX1dS
KHBIY3MtPkhDU19TQ21kLCBUU0NfWEZfRklGT19PVVQpOw0KCXJldHVybiAod2FpdF90dWxpcChw
SGNzKSk7DQoJfQ0KICAgIHJldHVybiAocGhhc2UpOw0KfQ0KDQovKioqKioqKioqKioqKiogdHVs
X21zZ291dF9zeW5jIHJ0biAqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25n
ICB0dWxfbXNnb3V0X3N5bmMoSTkxVV9IQ1MgKnBIY3MpDQp7IA0KY2hhciAgICBwaGFzZTsNCgkJ
CQkJIA0KICAgIFRDUyAgICAgICAgICpwVGNiID0gcEhjcy0+SENTX0FjdFRjczsNCg0KICAgIHBU
Y2ItPlRDU19GbGFncyB8PSBUQ0ZfU1lOQ19ET05FOw0KDQogICAgVFVMX1dSKHBIY3MtPkhDU19T
RmlmbywgTVNHX0VYVEVORCk7DQogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgMyk7IC8qIGV4
dGVuZGVkIG1zZyBsZW5ndGggKi8NCiAgICBUVUxfV1IocEhjcy0+SENTX1NGaWZvLCAxKTsgLyog
c3luYyByZXF1ZXN0ICovDQogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgdHVsX3JhdGVfdGJs
W3BUY2ItPlRDU19GbGFncyAmIFRDRl9TQ1NJX1JBVEVdKTsNCiAgICBUVUxfV1IocEhjcy0+SENT
X1NGaWZvLCBNQVhfT0ZGU0VUKTsgLyogUkVRL0FDSyBvZmZzZXQgKi8NCiAgICBUVUxfV1IocEhj
cy0+SENTX1NDbWQsIFRTQ19YRl9GSUZPX09VVCk7DQogICAgcGhhc2UgPSB3YWl0X3R1bGlwKHBI
Y3MpOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZStUVUxfU0N0cmwwLCAgVFNDX0ZMVVNIX0ZJ
Rk8pOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZStUVUxfU1NpZ25hbCwgVFVMX1JEKHBIY3Mt
PkhDU19CYXNlICsgVFVMX1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykpOw0KDQogICAgcmV0
dXJuIChwaGFzZSk7DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMgbG9uZyAgICAg
dHVsX21zZ291dF9ub3AoSTkxVV9IQ1MgKnBIY3MpDQp7DQogICAgVFVMX1dSKHBIY3MtPkhDU19T
RmlmbywgTVNHX05PUCk7IC8qIG1zZyBub3AgKi8NCiAgICBUVUxfV1IocEhjcy0+SENTX1NDbWQs
IFRTQ19YRl9GSUZPX09VVCk7DQogICAgcmV0dXJuICh3YWl0X3R1bGlwKHBIY3MpKTsNCn0NCg0K
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8NCnN0YXRpYyBsb25nICAgICB0dWxfbXNnb3V0X2lkZShJOTFV
X0hDUyAqcEhjcykNCnsNCiAgICBUVUxfV1IocEhjcy0+SENTX1NGaWZvLCBNU0dfSURFKTsgLyog
SW5pdGlhdG9yIERldGVjdGVkIEVycm9yICovDQogICAgVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBU
U0NfWEZfRklGT19PVVQpOw0KICAgIHJldHVybiAod2FpdF90dWxpcChwSGNzKSk7DQp9DQoNCi8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovDQpzdGF0aWMgbG9uZyB0dWxfbXNnaW5faWdub3JlX3dpZF9yZXNp
ZChJOTFVX0hDUyAqcEhjcykNCnsNCiAgICBpbnQgICAgcGhhc2U7DQoNCiAgICBpZiAoKHBoYXNl
ID0gdHVsX21zZ2luX2FjY2VwdChwSGNzKSkgIT0gTVNHX0lOKQ0KCXJldHVybiAocGhhc2UpOw0K
DQoJLyogZ2V0ICovDQogICAgVFVMX1dSKHBIY3MtPkhDU19TQ21kLCBUU0NfWEZfRklGT19JTik7
DQogICAgaWYgKHdhaXRfdHVsaXAocEhjcykgPT0gLTEpDQoJcmV0dXJuIC0xOw0KDQogICAgVFVM
X1dSKHBIY3MtPkhDU19TRmlmbywgMCk7ICAgICAgICAgICAvKiBwdXQgcGFkICAqLw0KICAgIFRV
TF9SRChwSGNzLT5IQ1NfU0ZpZm8pOyAgICAgICAvKiBnZXQgSUdOT1JFIGZpZWxkICovDQogICAg
VFVMX1JEKHBIY3MtPkhDU19TRmlmbyk7ICAgICAgIC8qIGdldCBwYWQgKi8NCg0KICAgIHJldHVy
biAodHVsX21zZ2luX2FjY2VwdChwSGNzKSk7DQoNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N
CnN0YXRpYyBsb25nICAgICB0dWxfbXNnaW5fZXh0ZW5kKEk5MVVfSENTICpwSGNzKQ0Kew0KICAg
IGludCAgICAgICAgIHBoYXNlOw0KICAgIEJZVEUgICAgICAgIGxlbiwgaWR4Ow0KLyogICAgQllU
RSAgICAgIG1zZ1sxMF07Ki8NCg0KICAgIGlmICgocGhhc2UgPSB0dWxfbXNnaW5fYWNjZXB0KHBI
Y3MpKSAhPSBNU0dfSU4pDQoJcmV0dXJuIChwaGFzZSk7DQoNCgkJCQkJLyogR2V0IGV4dGVuZGVk
IG1zZyBsZW5ndGggICAgICAqLw0KICAgIFRVTF9XUkxPTkcocEhjcy0+SENTX0Jhc2UgKyBUVUxf
U0NudDAsIDEpOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1hGX0ZJRk9fSU4pOw0K
ICAgIGlmICh3YWl0X3R1bGlwKHBIY3MpID09IC0xKQ0KCXJldHVybiAoLTEpOw0KICAgIGxlbiA9
IFRVTF9SRChwSGNzLT5IQ1NfU0ZpZm8pOw0KICAgIHBIY3MtPkhDU19Nc2dbMF0gPSBsZW47DQog
ICAgZm9yIChpZHggPSAxIDsgbGVuICE9IDA7IGxlbi0tKQ0KCXsNCglpZiAoKHBoYXNlID0gdHVs
X21zZ2luX2FjY2VwdChwSGNzKSkgIT0gTVNHX0lOKQ0KCSAgICByZXR1cm4gKHBoYXNlKTsNCglU
VUxfV1JMT05HKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDbnQwLCAxKTsNCglUVUxfV1IocEhjcy0+
SENTX1NDbWQsIFRTQ19YRl9GSUZPX0lOKTsNCglpZiAod2FpdF90dWxpcChwSGNzKSA9PSAtMSkN
CgkgICAgcmV0dXJuICgtMSk7DQoJcEhjcy0+SENTX01zZ1tpZHgrK10gID0gVFVMX1JEKHBIY3Mt
PkhDU19TRmlmbyk7DQoJfQ0KICAgIGlmIChwSGNzLT5IQ1NfTXNnWzFdID09IDEpDQoJeyAgICAg
ICAgICAgICAgICAgICAgICAgLyogaWYgaXQncyBzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVyIHJl
cXVlc3QgKi8NCglpZiAocEhjcy0+SENTX01zZ1swXSAhPSAzKSAgICAgICAgLyogaWYgbGVuZ3Ro
IGlzIG5vdCByaWdodCAqLw0KCSAgICByZXR1cm4gKHR1bF9tc2dvdXRfcmVqZWN0KHBIY3MpKTsN
CglpZiAocEhjcy0+SENTX0FjdFRjcy0+VENTX0ZsYWdzICYgVENGX05PX1NZTkNfTkVHTykNCgkg
ICAgeyAgICAgICAgICAgICAgICAgICAvKiBTZXQgT0ZGU0VUPTAgdG8gZG8gYXN5bmMsIG5lZ28g
YmFjayAqLw0KCSAgICBwSGNzLT5IQ1NfTXNnWzNdID0gMDsNCgkgICAgfQ0KCWVsc2UNCgkgICAg
ew0KCSAgICBpZiAoKHR1bF9tc2dpbl9zeW5jKHBIY3MpID09IDApICYmIA0KCQkocEhjcy0+SENT
X0FjdFRjcy0+VENTX0ZsYWdzICYgVENGX1NZTkNfRE9ORSkpDQoJCXsNCgkJdHVsX3N5bmNfZG9u
ZShwSGNzKTsNCgkJcmV0dXJuICh0dWxfbXNnaW5fYWNjZXB0KHBIY3MpKTsNCgkJfQ0KCSAgICB9
DQoNCglUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCwgKChUVUxfUkQocEhjcy0+
SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCkgJiAoVFNDX1NFVF9BQ0sgfCA3KSkgfCBUU0NfU0VUX0FU
TikpOw0KCWlmICgocGhhc2UgID0gdHVsX21zZ2luX2FjY2VwdChwSGNzKSkgIT0gTVNHX09VVCkN
CgkgICAgcmV0dXJuIChwaGFzZSk7DQoJCQkJCS8qIHN5bmMgbXNnIG91dCAqLw0KCVRVTF9XUihw
SGNzLT5IQ1NfQmFzZSArIFRVTF9TQ3RybDAsIFRTQ19GTFVTSF9GSUZPKTsNCi8qICAgICAgVFVM
X1dSKHBIY3MtPkhDU19TRmlmbywgVFNDX0ZMVVNIX0ZJRk8pOyAgICAgICAgICAgICovDQoNCgl0
dWxfc3luY19kb25lKHBIY3MpOw0KDQoJVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgTVNHX0VYVEVO
RCk7DQoJVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgMyk7DQoJVFVMX1dSKHBIY3MtPkhDU19TRmlm
bywgMSk7DQoJVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcEhjcy0+SENTX01zZ1syXSk7DQoJVFVM
X1dSKHBIY3MtPkhDU19TRmlmbywgcEhjcy0+SENTX01zZ1szXSk7DQoNCglUVUxfV1IocEhjcy0+
SENTX1NDbWQsIFRTQ19YRl9GSUZPX09VVCk7DQoJcmV0dXJuICh3YWl0X3R1bGlwKHBIY3MpKTsN
Cgl9DQoNCiAgICBpZiAoKHBIY3MtPkhDU19Nc2dbMF0gIT0gMikgfHwgKHBIY3MtPkhDU19Nc2db
MV0gIT0gMykpDQoJcmV0dXJuICAodHVsX21zZ291dF9yZWplY3QocEhjcykpOw0KCQkJCQkvKiBp
ZiBpdCdzIFdJREUgREFUQSBYRkVSIFJFUSAgICovDQogICAgaWYgKHBIY3MtPkhDU19BY3RUY3Mt
PlRDU19GbGFncyAmIFRDRl9OT19XRFRSKQ0KCXsNCglwSGNzLT5IQ1NfTXNnWzJdID0gMDsNCgl9
DQogICAgZWxzZQ0KCXsNCglpZiAocEhjcy0+SENTX01zZ1syXSA+IDIpICAgIC8qID4gMzIgYml0
cyAgICAgICAgICAgICovDQoJICAgIHJldHVybiAgKHR1bF9tc2dvdXRfcmVqZWN0KHBIY3MpKTsN
CglpZiAocEhjcy0+SENTX01zZ1syXSA9PSAyKSAgIC8qID09IDMyICAgICAgICAgICAgICAgICov
DQoJICAgIHsNCgkgICAgcEhjcy0+SENTX01zZ1syXSA9IDE7DQoJICAgIH0NCgllbHNlDQoJICAg
IHsNCgkgICAgaWYgKChwSGNzLT5IQ1NfQWN0VGNzLT5UQ1NfRmxhZ3MgJiBUQ0ZfTk9fV0RUUikg
PT0gMCkNCgkJew0KCQl0dWxfd2R0cl9kb25lKHBIY3MpOw0KCQlpZiAoKHBIY3MtPkhDU19BY3RU
Y3MtPlRDU19GbGFncyAmIChUQ0ZfU1lOQ19ET05FIHwgVENGX05PX1NZTkNfTkVHTykpID09IDAp
DQoJCSAgICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCwgKChUVUxfUkQocEhj
cy0+SENTX0Jhc2UgKyAgVFVMX1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykpIHwgVFNDX1NF
VF9BVE4pKTsNCgkJcmV0dXJuICAodHVsX21zZ2luX2FjY2VwdChwSGNzKSk7DQoJCX0NCgkgICAg
fQ0KCX0NCiAgICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1NpZ25hbCwgKChUVUxfUkQo
cEhjcy0+SENTX0Jhc2UgKyAgVFVMX1NTaWduYWwpICYgKFRTQ19TRVRfQUNLIHwgNykpIHwgVFND
X1NFVF9BVE4pKTsNCg0KICAgIGlmICgocGhhc2UgPSAgdHVsX21zZ2luX2FjY2VwdChwSGNzKSkg
IT0gTVNHX09VVCkNCglyZXR1cm4gKHBoYXNlKTsNCgkJCQkJLyogV0RUUiBtc2cgb3V0ICAgICAg
ICAgICAgICAgICAqLw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIE1TR19FWFRFTkQpOw0K
ICAgIFRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIDIpOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfU0Zp
Zm8sIDMpOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIHBIY3MtPkhDU19Nc2dbMl0pOw0K
ICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1hGX0ZJRk9fT1VUKTsNCiAgICByZXR1cm4g
KHdhaXRfdHVsaXAocEhjcykpOw0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kc3RhdGljIGxv
bmcgICAgIHR1bF9tc2dpbl9zeW5jKEk5MVVfSENTICpwSGNzKQ0Kew0KICAgIGNoYXIgZGVmYXVs
dF9wZXJpb2Q7DQoNCiAgICBkZWZhdWx0X3BlcmlvZCA9IHR1bF9yYXRlX3RibFtwSGNzLT5IQ1Nf
QWN0VGNzLT5UQ1NfRmxhZ3MgJiBUQ0ZfU0NTSV9SQVRFXTsNCiAgICBpZiAocEhjcy0+SENTX01z
Z1szXSA+IE1BWF9PRkZTRVQpDQoJew0KCXBIY3MtPkhDU19Nc2dbM10gPSBNQVhfT0ZGU0VUOw0K
CWlmIChwSGNzLT5IQ1NfTXNnWzJdIDwgZGVmYXVsdF9wZXJpb2QpDQoJICAgIHsNCgkgICAgcEhj
cy0+SENTX01zZ1syXSA9IGRlZmF1bHRfcGVyaW9kOw0KCSAgICByZXR1cm4gMTsNCgkgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIA0KCWlmIChwSGNzLT5IQ1NfTXNnWzJdID49IDU5KQ0K
CSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hhbmdlIHRvIGFzeW5jICAgICAg
ICAgICAgICAqLw0KCSAgICBwSGNzLT5IQ1NfTXNnWzNdID0gMDsNCgkgICAgfQ0KCXJldHVybiAx
Ow0KCX0NCg0KCQkvKiBvZmZzZXQgcmVxdWVzdHMgYXN5bmNocm9ub3VzIHRyYW5zZmVycyA/ICov
DQogICAgaWYgKHBIY3MtPkhDU19Nc2dbM10gPT0gMCkNCgl7DQoJcmV0dXJuIDA7DQoJfQ0KICAg
IGlmIChwSGNzLT5IQ1NfTXNnWzJdIDwgZGVmYXVsdF9wZXJpb2QpDQoJew0KCXBIY3MtPkhDU19N
c2dbMl0gPSBkZWZhdWx0X3BlcmlvZDsNCglyZXR1cm4gMTsNCgl9DQoNCiAgICBpZiAocEhjcy0+
SENTX01zZ1syXSA+PSA1OSkNCgl7DQoJcEhjcy0+SENTX01zZ1szXSA9IDA7DQoJcmV0dXJuIDE7
DQoJfQ0KICAgIHJldHVybiAwOw0KfQ0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMg
dm9pZCAgdHVsX3dkdHJfZG9uZShJOTFVX0hDUyAqcEhjcykgICAgICAgICAgICANCnsNCiAgICBw
SGNzLT5IQ1NfQWN0VGNzLT5UQ1NfRmxhZ3MgJj0gflRDRl9TWU5DX0RPTkU7DQogICAgcEhjcy0+
SENTX0FjdFRjcy0+VENTX0ZsYWdzIHw9IFRDRl9XRFRSX0RPTkU7DQoNCiAgICBwSGNzLT5IQ1Nf
QWN0VGNzLT5UQ1NfSlNfUGVyaW9kID0gMDsNCiAgICBpZiAocEhjcy0+SENTX01zZ1syXSkNCgl7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIDE2IGJpdCAqLw0KCXBIY3MtPkhD
U19BY3RUY3MtPlRDU19KU19QZXJpb2QgfD0gVFNDX1dJREVfU0NTSTsNCgl9DQogICAgcEhjcy0+
SENTX0FjdFRjcy0+VENTX1NDb25maWcwICY9IH5UU0NfQUxUX1BFUklPRDsNCiAgICBUVUxfV1Io
cEhjcy0+SENTX0Jhc2UrVFVMX1NDb25maWcsIHBIY3MtPkhDU19BY3RUY3MtPlRDU19TQ29uZmln
MCk7DQogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlK1RVTF9TUGVyaW9kLCBwSGNzLT5IQ1NfQWN0
VGNzLT5UQ1NfSlNfUGVyaW9kKTsNCg0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0Kdm9pZCAg
ICAgdHVsX3N5bmNfZG9uZShJOTFVX0hDUyAqcEhjcykNCnsNCiAgICBpbnQgaTsNCg0KICAgIHBI
Y3MtPkhDU19BY3RUY3MtPlRDU19GbGFncyB8PSBUQ0ZfU1lOQ19ET05FOw0KDQogICAgaWYgKHBI
Y3MtPkhDU19Nc2dbM10pDQoJew0KCXBIY3MtPkhDU19BY3RUY3MtPlRDU19KU19QZXJpb2QgfD0g
cEhjcy0+SENTX01zZ1szXTsNCglmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQ0KCSAgICB7DQoJICAg
IGlmICh0dWxfcmF0ZV90YmxbaV0gPj0gcEhjcy0+SENTX01zZ1syXSkgIC8qIHBpY2sgdGhlIGJp
ZyBvbmUgKi8NCgkJYnJlYWs7DQoJICAgIH0NCglwSGNzLT5IQ1NfQWN0VGNzLT5UQ1NfSlNfUGVy
aW9kIHw9IChpIDw8IDQpOw0KCXBIY3MtPkhDU19BY3RUY3MtPlRDU19TQ29uZmlnMCB8PSBUU0Nf
QUxUX1BFUklPRDsNCgl9DQogICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlK1RVTF9TQ29uZmlnLCBw
SGNzLT5IQ1NfQWN0VGNzLT5UQ1NfU0NvbmZpZzApOw0KICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFz
ZStUVUxfU1BlcmlvZCwgcEhjcy0+SENTX0FjdFRjcy0+VENTX0pTX1BlcmlvZCk7DQoKfQoKCi8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovDQpzdGF0aWMgbG9uZyAgICAgdHVsX3Jlc2V0X3Njc2koSTkxVV9I
Q1MgKnBIY3MpDQp7CiAgICBVTE9ORyAgICAgICBpOwoKICAgIFRVTF9XUiggcEhjcy0+SENTX0Jh
c2UgKyBUVUxfU0N0cmwwLCBUU0NfUlNUX0JVUyk7DQoKICAgIHdoaWxlKCEoKHBIY3MtPkhDU19K
U0ludCA9IFRVTF9SRChwSGNzLT5IQ1NfQmFzZSArIFRVTF9TSW50KSkgJiBUU1NfU0NTSVJTVF9J
TlQpKTsNCgkvKiByZXNldCB0dWxpcCBjaGlwICovDQoKICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFz
ZSArIFRVTF9TU2lnbmFsLCAwKTsNCgoJLyogU3RhbGwgZm9yIGEgd2hpbGUsIHdhaXQgZm9yIHRh
cmdldCdzIGZpcm13YXJlIHJlYWR5LG1ha2UgaXQgMiBzZWMgISAqLwoJLyogU09OWSA1MjAwIHRh
cGUgZHJpdmUgd29uJ3Qgd29yayBpZiBvbmx5IHN0YWxsIGZvciAxIHNlYyAqLw0KICAgIGZvciAo
aSA9IDA7IGkgPCAxMDAwOyBpKyspICAgICAgICAgLyogd2FpdCAxIHNlYyAgICAgICAgICAgICAg
ICAgICAqLw0KCURFTEFZICgxMDAwKTsgIC8qIGRlbGF5IDEgbXNlYyAqLwoKICAgIFRVTF9SRChw
SGNzLT5IQ1NfQmFzZSArIFRVTF9TSW50KTsNCgogICAgZm9yIChpID0gMDsgaSA8IDE2MDAwOyBp
KyspICAgICAgICAgCglERUxBWSAoMTAwMCk7ICAgCgogICAgcmV0dXJuICgxKTsKfQoKc3RhdGlj
IGxvbmcgICAgIHR1bF9wb3N0X3Njc2lfcnN0KEk5MVVfSENTICpwSGNzKQp7CiAgICBJOTFVX1ND
QiAqcFNjYjsKICAgIFRDUyAqcFRjYjsKICAgIGludCBpOwoKICAgIHBIY3MtPkhDU19BY3RTY2Ig
PSAwOwoKICAgIHBTY2IgPSBwSGNzLT5IQ1NfU2NiIDsKICAgIGZvciAoaSA9IDA7IGkgPCBwSGNz
LT5IQ1NfTnVtU2NiczsgaSsrLCBwU2NiKyspCgl7CglpZiAocFNjYi0+U0NCX1N0YXR1cyAmIFND
Ql9CVVNZKSAKCSAgICB7CgkgICAgdHVsX3VubGlua19idXN5X3NjYihwSGNzLCBwU2NiKTsKCgkg
ICAgcFNjYi0+U0NCX0hhU3RhdCA9IEhPU1RfU0NTSV9SU1Q7CgkgICAgdHVsX2FwcGVuZF9kb25l
X3NjYihwSGNzLCBwU2NiKTsKCSAgICB9IAoJfQoKCQkJCQkvKiBjbGVhciBzeW5jIGRvbmUgZmxh
ZyAgICAgICAgICovDQogICAgcFRjYiA9ICZwSGNzLT5IQ1NfVGNzWzBdOwogICAgZm9yIChpID0g
MDsgaSA8IHBIY3MtPkhDU19NYXhUYXI7IHBUY2IrKywgIGkrKykNCgl7CglwVGNiLT5UQ1NfRmxh
Z3MgJj0gfihUQ0ZfU1lOQ19ET05FIHwgVENGX1dEVFJfRE9ORSk7DQoJCS8qIEluaXRpYWxpemUg
dGhlIHN5bmMuIHhmZXIgcmVnaXN0ZXIgdmFsdWVzIHRvIGFuIGFzeW4geGZlciAqLwoJcFRjYi0+
VENTX0pTX1BlcmlvZCA9IDA7CglwVGNiLT5UQ1NfU0NvbmZpZzAgPSBwSGNzLT5IQ1NfU0NvbmYx
OwoJcFRjYi0+VENTX1RhZ0NudCA9IDA7CglwVGNiLT5UQ1NfTm9uVGFnU2NiID0gTlVMTDsKCX0g
LyogZm9yICovCiAgICByZXR1cm4gKC0xKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCnN0YXRp
YyB2b2lkICAgIHR1bF9zZWxlY3RfYXRuX3N0b3AoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpw
U2NiKQ0KewoKICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1NFTEFUTlNUT1ApOwogICAg
cFNjYi0+U0NCX1N0YXR1cyB8PSBTQ0JfU0VMRUNUOwogICAgcFNjYi0+U0NCX054dFN0YXQgPSAx
OwogICAgcEhjcy0+SENTX0FjdFNjYiA9IHBTY2I7Cn0KCgovKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0K
c3RhdGljIHZvaWQgICAgdHVsX3NlbGVjdF9hdG4oSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpw
U2NiKQp7CiNpZiAwCiAgICBpbnQgaTsKCgogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNj
Yi0+U0NCX0lkZW50KTsNCiAgICBmb3IgKGkgPSAwOyBpIDwgKGludClwU2NiLT5TQ0JfQ0RCTGVu
OyBpKyspDQoJVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX0NEQltpXSk7DQojZWxz
ZQogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX0lkZW50KTsNCiAgICBvdXRz
YihwSGNzLT5IQ1NfU0ZpZm8sIHBTY2ItPlNDQl9DREIsIHBTY2ItPlNDQl9DREJMZW4pOwojZW5k
aWYKICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1NFTF9BVE4pOw0KCiAgICBwU2NiLT5T
Q0JfU3RhdHVzIHw9IFNDQl9TRUxFQ1Q7CiAgICBwU2NiLT5TQ0JfTnh0U3RhdCA9IDI7CiAgICBw
SGNzLT5IQ1NfQWN0U2NiID0gcFNjYjsNCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQpzdGF0aWMg
dm9pZCAgICB0dWxfc2VsZWN0X2F0bjMoSTkxVV9IQ1MgKnBIY3MsIEk5MVVfU0NCICpwU2NiKQ0K
ewojaWYgMAogICAgaW50ICAgICAgICAgaTsNCgogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywg
cFNjYi0+U0NCX0lkZW50KTsKICAgIFRVTF9XUihwSGNzLT5IQ1NfU0ZpZm8sIHBTY2ItPlNDQl9U
YWdNc2cpOwogICAgVFVMX1dSKHBIY3MtPkhDU19TRmlmbywgcFNjYi0+U0NCX1RhZ0lkKTsKICAg
IGZvciAoaSA9IDA7IGkgPCAoaW50KSBwU2NiLT5TQ0JfQ0RCTGVuOyBpKyspCglUVUxfV1IocEhj
cy0+SENTX1NGaWZvLCBwU2NiLT5TQ0JfQ0RCW2ldKTsKI2Vsc2UKICAgIG91dHNiKHBIY3MtPkhD
U19TRmlmbywgJihwU2NiLT5TQ0JfSWRlbnQpLCBwU2NiLT5TQ0JfQ0RCTGVuKzMpOwojZW5kaWYK
ICAgIFRVTF9XUihwSGNzLT5IQ1NfU0NtZCwgVFNDX1NFTF9BVE4zKTsKCiAgICBwU2NiLT5TQ0Jf
U3RhdHVzIHw9IFNDQl9TRUxFQ1Q7CiAgICBwU2NiLT5TQ0JfTnh0U3RhdCA9IDI7CiAgICBwSGNz
LT5IQ1NfQWN0U2NiID0gcFNjYjsNCgp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kc3RhdGljIGxv
bmcgICAgIHR1bF9tc2dpbl9hY2NlcHQoSTkxVV9IQ1MgKnBIY3MpCnsKICAgIFRVTF9XUihwSGNz
LT5IQ1NfU0NtZCwgVFNDX01TR19BQ0NFUFQpOw0KICAgIHJldHVybiAod2FpdF90dWxpcChwSGNz
KSk7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCnN0YXRpYyBsb25nICAgICB3YWl0X3R1bGlwKEk5
MVVfSENTICpwSGNzKQp7CiAgICBJOTFVX1NDQiAgICAgICAgICpwU2NiID0gcEhjcy0+SENTX0Fj
dFNjYjsKLyogICAgcmVnaXN0ZXIgQllURSBzOwogICAgaW50IHBoYXNlOyovCgogICAgd2hpbGUg
KCEoKHBIY3MtPkhDU19KU1N0YXR1czAgPSBUVUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU1N0
YXR1czApKQoJCQkgJiBUU1NfSU5UX1BFTkRJTkcpKTsKCiAgICBwSGNzLT5IQ1NfUGhhc2UgPSBw
SGNzLT5IQ1NfSlNTdGF0dXMwICYgVFNTX1BIX01BU0s7CiAgICBwSGNzLT5IQ1NfSlNJbnQgPSBU
VUxfUkQocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0ludCk7CiAgICBwSGNzLT5IQ1NfSlNTdGF0dXMx
ID0gVFVMX1JEKHBIY3MtPkhDU19CYXNlICsgVFVMX1NTdGF0dXMxKTsKCi8qIHByaW50ZigiaW50
PSV4IHBzPSV4ICIsIHBIY3MtPkhDU19KU0ludCwgcEhjcy0+SENTX1BoYXNlKTsJKi8KCiAgICBp
ZiAocEhjcy0+SENTX0pTSW50ICYgVFNTX1NDU0lSU1RfSU5UKQoJeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBpZiBTQ1NJIGJ1cyByZXNldCBkZXRlY3RlZCAgICovCglyZXR1cm4g
KGludF90dWxfc2NzaV9yc3QocEhjcykpOwoJfQoKICAgIGlmIChwSGNzLT5IQ1NfSlNJbnQgJiBU
U1NfUkVTRUxfSU5UKQoJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiBTQ1NJ
IGJ1cyByZXNldCBkZXRlY3RlZCAgICovCglyZXR1cm4gKGludF90dWxfcmVzZWwocEhjcykpOwoJ
fQoKICAgIGlmIChwSGNzLT5IQ1NfSlNJbnQgJiBUU1NfU0VMX1RJTUVPVVQpCgl7ICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGlmIHNlbGVjdGVkL3Jlc2VsZWN0ZWQgdGltZW91dCBpbnRlcnJ1
cHQgKi8KCXJldHVybiAoaW50X3R1bF9idXNmcmVlKHBIY3MpKTsKCX0KCiAgICBpZiAocEhjcy0+
SENTX0pTSW50ICYgVFNTX0RJU0NfSU5UKSB7ICAgICAvKiBCVVMgZGlzY29ubmVjdGlvbiAgICAg
ICAgICAgICovCglpZiAocEhjcy0+SENTX0ZsYWdzICYgSENGX0VYUEVDVF9ET05FX0RJU0MpIHsK
CSAgICBUVUxfV1IocEhjcy0+SENTX0Jhc2UgKyBUVUxfU0N0cmwwLCBUU0NfRkxVU0hfRklGTyk7
IC8qIEZsdXNoIFNDU0kgRklGTyAgKi8KCgkgICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVM
X1NDb25maWcsIFRTQ19JTklUREVGQVVMVCk7CgkgICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsg
VFVMX1NDdHJsMSwgVFNDX0hXX1JFU0VMRUNUKTsvKiBFbmFibGUgSFcgcmVzZWxlY3QgICAgICAg
Ki8KCgkgICAgdHVsX3VubGlua19idXN5X3NjYihwSGNzLCBwU2NiKTsKCSAgICB0dWxfYXBwZW5k
X2RvbmVfc2NiKHBIY3MsIHBTY2IpOwoJICAgIHBIY3MtPkhDU19BY3RTY2IgPSBOVUxMOwoJICAg
IHBIY3MtPkhDU19GbGFncyAmPSB+SENGX0VYUEVDVF9ET05FX0RJU0M7CgoJICAgIHJldHVybiAo
LTEpOwoJICAgIH0KCglpZiAocEhjcy0+SENTX0ZsYWdzICYgSENGX0VYUEVDVF9ESVNDKSB7Cgkg
ICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1NDdHJsMCwgVFNDX0ZMVVNIX0ZJRk8pOyAv
KiBGbHVzaCBTQ1NJIEZJRk8gICovCgkgICAgVFVMX1dSKHBIY3MtPkhDU19CYXNlICsgVFVMX1ND
b25maWcsIFRTQ19JTklUREVGQVVMVCk7DQoJICAgIFRVTF9XUihwSGNzLT5IQ1NfQmFzZSArIFRV
TF9TQ3RybDEsIFRTQ19IV19SRVNFTEVDVCk7LyogRW5hYmxlIEhXIHJlc2VsZWN0ICAgICAgICov
DQoJICAgIHBIY3MtPkhDU19BY3RTY2IgPSBOVUxMOwoJICAgIHBIY3MtPkhDU19GbGFncyAmPSB+
SENGX0VYUEVDVF9ESVNDOw0KCSAgICByZXR1cm4gKC0xKTsNCgkgICAgfQ0KCXJldHVybiAoaW50
X3R1bF9idXNmcmVlKHBIY3MpKTsNCgl9CgoJcmV0dXJuIChwSGNzLT5IQ1NfUGhhc2UpOwoKfQoK
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogRU9GICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8NCg==
--spruceIXCXKZOZOFSXCLQJWNYD
Content-Type: application/octet-stream; name="i91uscsi.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="i91uscsi.h"

CiNkZWZpbmUgVUxPTkcgICB1bnNpZ25lZCBsb25nDQojZGVmaW5lIFVTSE9SVCAgdW5zaWduZWQg
c2hvcnQNCiNkZWZpbmUgVUNIQVIgICB1bnNpZ25lZCBjaGFyDQojZGVmaW5lIEJZVEUgICAgdW5z
aWduZWQgY2hhcg0KI2RlZmluZSBXT1JEICAgIHVuc2lnbmVkIHNob3J0DQojZGVmaW5lIERXT1JE
ICAgdW5zaWduZWQgbG9uZw0KI2RlZmluZSBVQllURSAgIHVuc2lnbmVkIGNoYXINCiNkZWZpbmUg
VVdPUkQgICB1bnNpZ25lZCBzaG9ydA0KI2RlZmluZSBVRFdPUkQgIHVuc2lnbmVkIGxvbmcNCg0K
I2lmbmRlZiBOVUxMDQojZGVmaW5lIE5VTEwgICAgIDAgICAgICAgICAgICAvKiB6ZXJvICAgICAg
ICAgICovDQojZW5kaWYNCiNpZm5kZWYgVFJVRQ0KI2RlZmluZSBUUlVFICAgICAoMSkgICAgICAg
ICAgLyogYm9vbGVhbiB0cnVlICAqLw0KI2VuZGlmDQojaWZuZGVmIEZBTFNFDQojZGVmaW5lIEZB
TFNFICAgICgwKSAgICAgICAgICAvKiBib29sZWFuIGZhbHNlICovDQojZW5kaWYNCiNpZm5kZWYg
RkFJTFVSRQ0KI2RlZmluZSBGQUlMVVJFICAoLTEpDQojZW5kaWYNCi8qI2VuZGlmKi8NCg0KI2Rl
ZmluZSBJOTFVX1NHX0VOVFJZCQkzMwojZGVmaW5lIE1BWF9TVVBQT1JURURfQURBUFRFUlMgIDgK
I2RlZmluZSBNQVhfT0ZGU0VUCQkxNQojZGVmaW5lIE1BWF9UQVJHRVRTCQkxNgojZGVmaW5lIE1B
WF9TQ0IJCQkzMgoKI2RlZmluZSBQQUdFTEVOCQkJNDA5NgoKI2RlZmluZSBJTklfVkVORE9SX0lE
ICAgMHgxMTAxICAgICAgICAgIC8qIEluaXRpbydzIFBDSSB2ZW5kb3IgSUQgICAgICAgKi8NCiNk
ZWZpbmUgSTk1MF9ERVZJQ0VfSUQJMHg5NTAwICAgICAgICAgIC8qIEluaXRpbydzIGluaWMtOTUw
IHByb2R1Y3QgSUQJKi8NCiNkZWZpbmUgSTk0MF9ERVZJQ0VfSUQJMHg5NDAwICAgICAgICAgIC8q
IEluaXRpbydzIGluaWMtOTQwIHByb2R1Y3QgSUQJKi8NCiNkZWZpbmUgSTkzNV9ERVZJQ0VfSUQJ
MHg5NDAxICAgICAgICAgIC8qIEluaXRpbydzIGluaWMtOTM1IHByb2R1Y3QgSUQJKi8NCgoKI2Rl
ZmluZQlfSTkxVVNDU0lfSAoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovDQovKiAgVHVsaXAgQ29uZmlndXJhdGlvbiBSZWdpc3RlciBTZXQgKi8NCi8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQojZGVmaW5lIFRVTF9QVklEICAgICAgICAw
eDAwICAgICAgICAgICAgLyogVmVuZG9yIElEICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUERJRCAgICAgICAgMHgwMiAgICAgICAgICAgIC8qIERldmljZSBJRCAgICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BDTUQgICAgICAgIDB4MDQgICAgICAgICAgICAvKiBD
b21tYW5kICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QU1RVUyAgICAgICAw
eDA2ICAgICAgICAgICAgLyogU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUFJJRCAgICAgICAgMHgwOCAgICAgICAgICAgIC8qIFJldmlzaW9uIG51bWJlciAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BQSSAgICAgICAgIDB4MDkgICAgICAgICAgICAvKiBQ
cm9ncmFtbWluZyBpbnRlcmZhY2UgICAgICAgICovDQojZGVmaW5lIFRVTF9QU0MgICAgICAgICAw
eDBBICAgICAgICAgICAgLyogU3ViIENsYXNzICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUEJDICAgICAgICAgMHgwQiAgICAgICAgICAgIC8qIEJhc2UgQ2xhc3MgICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BDTFMgICAgICAgIDB4MEMgICAgICAgICAgICAvKiBD
YWNoZSBsaW5lIHNpemUgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QTFRSICAgICAgICAw
eDBEICAgICAgICAgICAgLyogTGF0ZW5jeSB0aW1lciAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUEhEVCAgICAgICAgMHgwRSAgICAgICAgICAgIC8qIEhlYWRlciB0eXBlICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BCSVNUICAgICAgIDB4MEYgICAgICAgICAgICAvKiBC
SVNUICAgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QQkFEICAgICAgICAw
eDEwICAgICAgICAgICAgLyogQmFzZSBhZGRyZXNzICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUEJBRDEgICAgICAgMHgxNCAgICAgICAgICAgIC8qIEJhc2UgYWRkcmVzcyAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BCQUQyICAgICAgIDB4MTggICAgICAgICAgICAvKiBC
YXNlIGFkZHJlc3MgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QQkFEMyAgICAgICAw
eDFDICAgICAgICAgICAgLyogQmFzZSBhZGRyZXNzICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUEJBRDQgICAgICAgMHgyMCAgICAgICAgICAgIC8qIEJhc2UgYWRkcmVzcyAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BCQUQ1ICAgICAgIDB4MjQgICAgICAgICAgICAvKiBC
YXNlIGFkZHJlc3MgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QUlNWRCAgICAgICAw
eDI4ICAgICAgICAgICAgLyogUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUFJTVkQxICAgICAgMHgyQyAgICAgICAgICAgIC8qIFJlc2VydmVkICAgICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BSQUQgICAgICAgIDB4MzAgICAgICAgICAgICAvKiBF
eHBhbnNpb24gUk9NIGJhc2UgYWRkcmVzcyAgICovDQojZGVmaW5lIFRVTF9QUlNWRDIgICAgICAw
eDM0ICAgICAgICAgICAgLyogUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUFJTVkQzICAgICAgMHgzOCAgICAgICAgICAgIC8qIFJlc2VydmVkICAgICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BJTlRMICAgICAgIDB4M0MgICAgICAgICAgICAvKiBJ
bnRlcnJ1cHQgbGluZSAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9QSU5UUCAgICAgICAw
eDNEICAgICAgICAgICAgLyogSW50ZXJydXB0IHBpbiAgICAgICAgICAgICAgICAqLw0KI2RlZmlu
ZSBUVUxfUElHTlQgICAgICAgMHgzRSAgICAgICAgICAgIC8qIE1JTl9HTlQgICAgICAgICAgICAg
ICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1BNR05UICAgICAgIDB4M0YgICAgICAgICAgICAvKiBN
QVhfR05UICAgICAgICAgICAgICAgICAgICAgICovDQoKLyoqKioqKioqKioqKioqKioqKioqKioq
Ki8NCi8qICBUdWxpcCBSZWdpc3RlciBTZXQgKi8NCi8qKioqKioqKioqKioqKioqKioqKioqKiov
DQojZGVmaW5lIFRVTF9IQUNGRzAgICAgICAweDQwICAgIC8qIEgvQSBDb25maWd1cmF0aW9uIFJl
Z2lzdGVyIDAgICAgICAgICAqLw0KI2RlZmluZSBUVUxfSEFDRkcxICAgICAgMHg0MSAgICAvKiBI
L0EgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX0hBQ0ZH
MiAgICAgIDB4NDIgICAgLyogSC9BIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMiAgICAgICAgICov
DQoKI2RlZmluZSBUVUxfU0RDRkcwICAgICAgMHg0NCAgICAvKiBTQ1NJIERldmljZSBDb25maWd1
cmF0aW9uIDAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NEQ0ZHMSAgICAgIDB4NDUgICAgLyog
U0NTSSBEZXZpY2UgQ29uZmlndXJhdGlvbiAxICAgICAgICAgICovDQojZGVmaW5lIFRVTF9TRENG
RzIgICAgICAweDQ2ICAgIC8qIFNDU0kgRGV2aWNlIENvbmZpZ3VyYXRpb24gMiAgICAgICAgICAq
Lw0KI2RlZmluZSBUVUxfU0RDRkczICAgICAgMHg0NyAgICAvKiBTQ1NJIERldmljZSBDb25maWd1
cmF0aW9uIDMgICAgICAgICAgKi8NCgojZGVmaW5lIFRVTF9HSU5UUyAgICAgICAweDUwICAgIC8q
IEdsb2JhbCBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICAgICAqLw0KI2RlZmluZSBUVUxfR0lN
U0sgICAgICAgMHg1MiAgICAvKiBHbG9iYWwgSW50ZXJydXB0IE1BU0sgUmVnaXN0ZXIgICAgICAg
Ki8NCiNkZWZpbmUgVFVMX0dDVFJMICAgICAgIDB4NTQgICAgLyogR2xvYmFsIENvbnRyb2wgUmVn
aXN0ZXIgICAgICAgICAgICAgICovDQoJI2RlZmluZSBUVUxfR0NUUkxfRUVQUk9NX0JJVCAgICAw
eDA0DQojZGVmaW5lIFRVTF9HQ1RSTDEgICAgICAweDU1ICAgIC8qIEdsb2JhbCBDb250cm9sIFJl
Z2lzdGVyICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUVUxfRE1BQ0ZHICAgICAgMHg1QiAgICAv
KiBETUEgY29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX05W
UkFNICAgICAgIDB4NUQgICAgLyogTm9uLXZvbGF0aWxlIFJBTSBwb3J0ICAgICAgICAgICAgICAg
ICovDQoKI2RlZmluZSBUVUxfU0NudDAgICAgICAgMHg4MCAgICAvKiAwMCBSL1cgVHJhbnNmZXIg
Q291bnRlciBMb3cgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NDbnQxICAgICAgIDB4ODEgICAg
LyogMDEgUi9XIFRyYW5zZmVyIENvdW50ZXIgTWlkICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
Q250MiAgICAgICAweDgyICAgIC8qIDAyIFIvVyBUcmFuc2ZlciBDb3VudCBIaWdoICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU0ZpZm9DbnQgICAgMHg4MyAgICAvKiAwMyBSICAgRklGTyBjb3Vu
dGVyICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NJbnRFbmFibGUgIDB4ODQgICAg
LyogMDMgVyAgIEludGVycnVwdCBlbmJsZSAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
SW50ICAgICAgICAweDg0ICAgIC8qIDA0IFIgICBJbnRlcnJ1cHQgUmVnaXN0ZXIgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU0N0cmwwICAgICAgMHg4NSAgICAvKiAwNSBXICAgQ29udHJvbCAw
ICAgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NTdGF0dXMwICAgIDB4ODUgICAg
LyogMDUgUiAgIFN0YXR1cyAwICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
Q3RybDEgICAgICAweDg2ICAgIC8qIDA2IFcgICBDb250cm9sIDEgICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU1N0YXR1czEgICAgMHg4NiAgICAvKiAwNiBSICAgU3RhdHVzIDEg
ICAgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NDb25maWcgICAgIDB4ODcgICAg
LyogMDcgVyAgIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
U3RhdHVzMiAgICAweDg3ICAgIC8qIDA3IFIgICBTdGF0dXMgMiAgICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU1BlcmlvZCAgICAgMHg4OCAgICAvKiAwOCBXICAgU3luYy4gVHJh
bnNmZXIgUGVyaW9kICYgT2Zmc2V0Ki8NCiNkZWZpbmUgVFVMX1NPZmZzZXQgICAgIDB4ODggICAg
LyogMDggUiAgIE9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
U2NzaUlkICAgICAweDg5ICAgIC8qIDA5IFcgICBTQ1NJIElEICAgICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU0J1c0lkICAgICAgMHg4OSAgICAvKiAwOSBSICAgU0NTSSBCVVMg
SUQgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NUaW1lT3V0ICAgIDB4OEEgICAg
LyogMEEgVyAgIFNlbC9SZXNlbCBUaW1lIE91dCBSZWdpc3RlciAgICovDQojZGVmaW5lIFRVTF9T
SWRlbnQgICAgICAweDhBICAgIC8qIDBBIFIgICBJZGVudGlmeSBNZXNzYWdlIFJlZ2lzdGVyICAg
ICAqLw0KI2RlZmluZSBUVUxfU0F2YWlsICAgICAgMHg4QSAgICAvKiAwQSBSICAgQXZhaWxpYWJs
ZSBDb3VudGVyIFJlZ2lzdGVyICAgKi8NCiNkZWZpbmUgVFVMX1NEYXRhICAgICAgIDB4OEIgICAg
LyogMEIgUi9XIFNDU0kgZGF0YSBpbi9vdXQgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
RmlmbyAgICAgICAweDhDICAgIC8qIDBDIFIvVyBGSUZPICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU1NpZ25hbCAgICAgMHg5MCAgICAvKiAxMCBSL1cgU0NTSSBzaWdu
YWwgaW4vb3V0ICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX1NDbWQgICAgICAgIDB4OTEgICAg
LyogMTEgUi9XIENvbW1hbmQgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRVTF9T
VGVzdDAgICAgICAweDkyICAgIC8qIDEyIFIvVyBUZXN0MCAgICAgICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBUVUxfU1Rlc3QxICAgICAgMHg5MyAgICAvKiAxMyBSL1cgVGVzdDEgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8NCg0KI2RlZmluZSBUVUxfWEFkZEggICAgICAgMHhDMCAg
ICAvKkRNQSBUcmFuc2ZlciBQaHlzaWNhbCBBZGRyZXNzICAgICAgICAgKi8NCiNkZWZpbmUgVFVM
X1hBZGRXICAgICAgIDB4QzggICAgLypETUEgQ3VycmVudCBUcmFuc2ZlciBQaHlzaWNhbCBBZGRy
ZXNzICovDQojZGVmaW5lIFRVTF9YQ250SCAgICAgICAweEQwICAgIC8qRE1BIFRyYW5zZmVyIENv
dW50ZXIgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUVUxfWENudFcgICAgICAgMHhENCAg
ICAvKkRNQSBDdXJyZW50IFRyYW5zZmVyIENvdW50ZXIgICAgICAgICAgKi8NCiNkZWZpbmUgVFVM
X1hDbWQgICAgICAgIDB4RDggICAgLypETUEgQ29tbWFuZCBSZWdpc3RlciAgICAgICAgICAgICAg
ICAgICovDQojZGVmaW5lIFRVTF9JbnQgICAgICAgICAweERDICAgIC8qSW50ZXJydXB0IFJlZ2lz
dGVyICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUVUxfWFN0YXR1cyAgICAgMHhERCAg
ICAvKkRNQSBzdGF0dXMgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVM
X01hc2sgICAgICAgIDB4RTAgICAgLypJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAgICAgICAgICAg
ICAgICovDQojZGVmaW5lIFRVTF9YQ3RybCAgICAgICAweEU0ICAgIC8qRE1BIENvbnRyb2wgUmVn
aXN0ZXIgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUVUxfWEN0cmwxICAgICAgMHhFNSAg
ICAvKkRNQSBDb250cm9sIFJlZ2lzdGVyIDEgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFVM
X1hGaWZvICAgICAgIDB4RTggICAgLypETUEgRklGTyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICovDQoKI2RlZmluZSBUVUxfV0N0cmwgICAgICAgMHhGNyAgICAvKkJ1cyBtYXN0ZXIgd2Fp
dCBzdGF0ZSBjb250cm9sICAgICAgICAgKi8NCiNkZWZpbmUgVFVMX0RDdHJsICAgICAgIDB4RkIg
ICAgLypETUEgZGVsYXkgY29udHJvbCAgICAgICAgICAgICAgICAgICAgICovDQoKLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8NCi8qICAgYml0IGRlZmluaXRpb24gZm9yIENvbW1hbmQgcmVnaXN0ZXIgb2YgQ29u
ZmlndXJhdGlvbiBTcGFjZSBIZWFkZXIgICovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBC
VVNNUyAgICAgICAgICAgMHgwNCAgICAvKiBCVVMgTUFTVEVSIEVuYWJsZSAgICAgICAgICAgICAg
ICAgICAgKi8NCiNkZWZpbmUgSU9TUEEgICAgICAgICAgIDB4MDEgICAgLyogSU8gU3BhY2UgRW5h
YmxlICAgICAgICAgICAgICAgICAgICAgICovDQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIENvbW1h
bmQgQ29kZXMgb2YgVHVsaXAgU0NTSSBDb21tYW5kIHJlZ2lzdGVyICAgICAgICAgICAgICAgICAg
ICAgICAgICovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBUU0NfRU5fUkVTRUwgICAgMHg4
MCAgICAvKiBFbmFibGUgUmVzZWxlY3Rpb24gICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUg
VFNDX0NNRF9DT01QICAgIDB4ODQgICAgLyogQ29tbWFuZCBDb21wbGV0ZSBTZXF1ZW5jZSAgICAg
ICAgICAgICovDQojZGVmaW5lIFRTQ19TRUwgICAgICAgICAweDAxICAgIC8qIFNlbGVjdCBXaXRo
b3V0IEFUTiBTZXF1ZW5jZSAgICAgICAgICAqLw0KI2RlZmluZSBUU0NfU0VMX0FUTiAgICAgMHgx
MSAgICAvKiBTZWxlY3QgV2l0aCBBVE4gU2VxdWVuY2UgICAgICAgICAgICAgKi8NCiNkZWZpbmUg
VFNDX1NFTF9BVE4zICAgIDB4MzEgICAgLyogU2VsZWN0IFdpdGggQVROMyBTZXF1ZW5jZSAgICAg
ICAgICAgICovDQojZGVmaW5lIFRTQ19TRUxfQVROU1RPUCAweDEyICAgIC8qIFNlbGVjdCBXaXRo
IEFUTiBhbmQgU3RvcCBTZXF1ZW5jZSAgICAqLw0KI2RlZmluZSBUU0NfU0VMQVROU1RPUCAgMHgx
RSAgICAvKiBTZWxlY3QgV2l0aCBBVE4gYW5kIFN0b3AgU2VxdWVuY2UgICAgKi8NCg0KI2RlZmlu
ZSBUU0NfU0VMX0FUTl9ESVJFQ1RfSU4gICAweDk1ICAgIC8qIFNlbGVjdCBXaXRoIEFUTiBTZXF1
ZW5jZSAgICAgKi8NCiNkZWZpbmUgVFNDX1NFTF9BVE5fRElSRUNUX09VVCAgMHgxNSAgICAvKiBT
ZWxlY3QgV2l0aCBBVE4gU2VxdWVuY2UgICAgICovDQojZGVmaW5lIFRTQ19TRUxfQVROM19ESVJF
Q1RfSU4gIDB4QjUgICAgLyogU2VsZWN0IFdpdGggQVROMyBTZXF1ZW5jZSAgICAqLw0KI2RlZmlu
ZSBUU0NfU0VMX0FUTjNfRElSRUNUX09VVCAweDM1ICAgIC8qIFNlbGVjdCBXaXRoIEFUTjMgU2Vx
dWVuY2UgICAgKi8NCiNkZWZpbmUgVFNDX1hGX0RNQV9PVVRfRElSRUNUICAgMHgwNiAgICAvKiBE
TUEgWGZlciBJbmZvbWF0aW9uIG91dCAgICAgICovDQojZGVmaW5lIFRTQ19YRl9ETUFfSU5fRElS
RUNUICAgIDB4ODYgICAgLyogRE1BIFhmZXIgSW5mb21hdGlvbiBpbiAgICAgICAqLw0KCiNkZWZp
bmUgVFNDX1hGX0RNQV9PVVQgIDB4NDMgICAgLyogRE1BIFhmZXIgSW5mb21hdGlvbiBvdXQgICAg
ICAgICAgICAgICovDQojZGVmaW5lIFRTQ19YRl9ETUFfSU4gICAweEMzICAgIC8qIERNQSBYZmVy
IEluZm9tYXRpb24gaW4gICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU0NfWEZfRklGT19PVVQg
MHgwMyAgICAvKiBGSUZPIFhmZXIgSW5mb21hdGlvbiBvdXQgICAgICAgICAgICAgKi8NCiNkZWZp
bmUgVFNDX1hGX0ZJRk9fSU4gIDB4ODMgICAgLyogRklGTyBYZmVyIEluZm9tYXRpb24gaW4gICAg
ICAgICAgICAgICovDQoKI2RlZmluZSBUU0NfTVNHX0FDQ0VQVCAgMHgwRiAgICAvKiBNZXNzYWdl
IEFjY2VwdCAgICAgICAgICAgICAgICAgICAgICAgKi8NCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyog
Yml0IGRlZmluaXRpb24gZm9yIFR1bGlwIFNDU0kgQ29udHJvbCAwIFJlZ2lzdGVyICAgICAgICAg
ICAgICAgICAgICAgKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lIFRTQ19SU1RfU0VRICAg
ICAweDIwICAgICAgICAgICAgLyogUmVzZXQgc2VxdWVuY2UgY291bnRlciAgICAgICAgICAgICAg
ICovDQojZGVmaW5lIFRTQ19GTFVTSF9GSUZPICAweDEwICAgIC8qIEZsdXNoIEZJRk8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU0NfQUJUX0NNRCAgICAgMHgwNCAgICAv
KiBBYm9ydCBjb21tYW5kIChzZXF1ZW5jZSkgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX1JT
VF9DSElQICAgIDB4MDIgICAgLyogUmVzZXQgU0NTSSBDaGlwICAgICAgICAgICAgICAgICAgICAg
ICovDQojZGVmaW5lIFRTQ19SU1RfQlVTICAgICAweDAxICAgIC8qIFJlc2V0IFNDU0kgQnVzICAg
ICAgICAgICAgICAgICAgICAgICAqLw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogYml0IGRlZmlu
aXRpb24gZm9yIFR1bGlwIFNDU0kgQ29udHJvbCAxIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAg
ICAgKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lIFRTQ19FTl9TQ0FNICAgICAweDgwICAg
IC8qIEVuYWJsZSBTQ0FNICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU0Nf
VElNRVIgICAgICAgMHg0MCAgICAvKiBTZWxlY3QgdGltZW91dCB1bml0ICAgICAgICAgICAgICAg
ICAgKi8NCiNkZWZpbmUgVFNDX0VOX1NDU0kyICAgIDB4MjAgICAgLyogU0NTSS0yIG1vZGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRTQ19QV0ROICAgICAgICAweDEwICAg
IC8qIFBvd2VyIGRvd24gbW9kZSAgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU0Nf
V0lERV9DUFUgICAgMHgwOCAgICAvKiBXaWRlIENQVSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8NCiNkZWZpbmUgVFNDX0hXX1JFU0VMRUNUIDB4MDQgICAgLyogRW5hYmxlIEhXIHJlc2Vs
ZWN0ICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRTQ19FTl9CVVNfT1VUICAweDAyICAg
IC8qIEVuYWJsZSBTQ1NJIGRhdGEgYnVzIG91dCBsYXRjaCAgICAgICAqLw0KI2RlZmluZSBUU0Nf
RU5fQlVTX0lOICAgMHgwMSAgICAvKiBFbmFibGUgU0NTSSBkYXRhIGJ1cyBpbiBsYXRjaCAgICAg
ICAgKi8NCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIGJpdCBkZWZpbml0aW9uIGZvciBUdWxpcCBT
Q1NJIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgICAgICAgICAgICAgICAgICovDQovKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLw0KI2RlZmluZSBUU0NfRU5fTEFUQ0ggICAgMHg4MCAgICAvKiBFbmFibGUgcGhhc2Ug
bGF0Y2ggICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX0lOSVRJQVRPUiAgIDB4NDAg
ICAgLyogSW5pdGlhdG9yIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRT
Q19FTl9TQ1NJX1BBUiAweDIwICAgIC8qIEVuYWJsZSBTQ1NJIHBhcml0eSAgICAgICAgICAgICAg
ICAgICAqLw0KI2RlZmluZSBUU0NfRE1BXzhCSVQgICAgMHgxMCAgICAvKiBBbHRlcm5hdGUgZG1h
IDgtYml0cyBtb2RlICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX0RNQV8xNkJJVCAgIDB4MDgg
ICAgLyogQWx0ZXJuYXRlIGRtYSAxNi1iaXRzIG1vZGUgICAgICAgICAgICovDQojZGVmaW5lIFRT
Q19FTl9XREFDSyAgICAweDA0ICAgIC8qIEVuYWJsZSBEQUNLIHdoaWxlIHdpZGUgU0NTSSB4ZmVy
ICAgICAqLw0KI2RlZmluZSBUU0NfQUxUX1BFUklPRCAgMHgwMiAgICAvKiBBbHRlcm5hdGUgc3lu
YyBwZXJpb2QgbW9kZSAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX0RJU19TQ1NJUlNUIDB4MDEg
ICAgLyogRGlzYWJsZSBTQ1NJIGJ1cyByZXNldCB1cyAgICAgICAgICAgICovDQoNCiNkZWZpbmUg
VFNDX0lOSVRERUZBVUxUIChUU0NfSU5JVElBVE9SIHwgVFNDX0VOX0xBVENIIHwgVFNDX0FMVF9Q
RVJJT0QgfCBUU0NfRElTX1NDU0lSU1QpDQoNCiNkZWZpbmUgVFNDX1dJREVfU0NTSSAgIDB4ODAg
ICAgLyogRW5hYmxlIFdpZGUgU0NTSSAgICAgICAgICAgICAgICAgICAgICovDQoNCi8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovDQovKiBiaXQgZGVmaW5pdGlvbiBmb3IgVHVsaXAgU0NTSSBzaWduYWwgUmVnaXN0
ZXIgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUg
VFNDX1JTVF9BQ0sgICAgIDB4MDAgICAgLyogUmVsZWFzZSBBQ0sgc2lnbmFsICAgICAgICAgICAg
ICAgICAgICovDQojZGVmaW5lIFRTQ19SU1RfQVROICAgICAweDAwICAgIC8qIFJlbGVhc2UgQVRO
IHNpZ25hbCAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU0NfUlNUX0JTWSAgICAgMHgw
MCAgICAvKiBSZWxlYXNlIEJTWSBzaWduYWwgICAgICAgICAgICAgICAgICAgKi8NCiANCiNkZWZp
bmUgVFNDX1NFVF9BQ0sgICAgIDB4NDAgICAgLyogQUNLIHNpZ25hbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovDQojZGVmaW5lIFRTQ19TRVRfQVROICAgICAweDA4ICAgIC8qIEFUTiBzaWdu
YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KDQojZGVmaW5lIFRTQ19SRVFJICAgICAg
ICAweDgwICAgIC8qIFJFUSBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2Rl
ZmluZSBUU0NfQUNLSSAgICAgICAgMHg0MCAgICAvKiBBQ0sgc2lnbmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX0JTWUkgICAgICAgIDB4MjAgICAgLyogQlNZIHNp
Z25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRTQ19TRUxJICAgICAg
ICAweDEwICAgIC8qIFNFTCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2Rl
ZmluZSBUU0NfQVROSSAgICAgICAgMHgwOCAgICAvKiBBVE4gc2lnbmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNDX01TR0kgICAgICAgIDB4MDQgICAgLyogTVNHIHNp
Z25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIFRTQ19DREkgICAgICAg
ICAweDAyICAgIC8qIEMvRCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2Rl
ZmluZSBUU0NfSU9JICAgICAgICAgMHgwMSAgICAvKiBJL08gc2lnbmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8NCgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIGJpdCBkZWZpbml0aW9uIGZv
ciBUdWxpcCBTQ1NJIFN0YXR1cyAwIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICovDQov
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBUU1NfSU5UX1BFTkRJTkcgMHg4MCAgICAgICAgICAg
IC8qIEludGVycnVwdCBwZW5kaW5nICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNTX1NFUV9BQ1RJ
VkUgIDB4NDAgICAgICAgICAgICAvKiBTZXF1ZW5jZXIgYWN0aXZlICAgICAgICAgICAgICovDQoj
ZGVmaW5lIFRTU19YRkVSX0NOVCAgICAweDIwICAgICAgICAgICAgLyogVHJhbnNmZXIgY291bnRl
ciB6ZXJvICAgICAgICAqLw0KI2RlZmluZSBUU1NfRklGT19FTVBUWSAgMHgxMCAgICAgICAgICAg
IC8qIEZJRk8gZW1wdHkgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNTX1BBUl9FUlJP
UiAgIDB4MDggICAgICAgICAgICAvKiBTQ1NJIHBhcml0eSBlcnJvciAgICAgICAgICAgICovDQoj
ZGVmaW5lIFRTU19QSF9NQVNLICAgICAweDA3ICAgICAgICAgICAgLyogU0NTSSBwaGFzZSBtYXNr
ICAgICAgICAgICAgICAqLw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogYml0IGRlZmluaXRpb24g
Zm9yIFR1bGlwIFNDU0kgU3RhdHVzIDEgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgKi8N
Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lIFRTU19TVEFUVVNfUkNWICAweDA4ICAgICAgICAg
ICAgLyogU3RhdHVzIHJlY2VpdmVkICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU1NfTVNHX1NF
TkQgICAgMHg0MCAgICAgICAgICAgIC8qIE1lc3NhZ2Ugc2VudCAgICAgICAgICAgICAgICAgKi8N
CiNkZWZpbmUgVFNTX0NNRF9QSF9DTVAgIDB4MjAgICAgICAgICAgICAvKiBEYXRhIHBoYXNlIGRv
bmUgICAgICAgICAgICAgICovDQojZGVmaW5lIFRTU19EQVRBX1BIX0NNUCAweDEwICAgICAgICAg
ICAgLyogRGF0YSBwaGFzZSBkb25lICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU1NfU1RBVFVT
X1NFTkQgMHgwOCAgICAgICAgICAgIC8qIFN0YXR1cyBzZW50ICAgICAgICAgICAgICAgICAgKi8N
CiNkZWZpbmUgVFNTX1hGRVJfQ01QICAgIDB4MDQgICAgICAgICAgICAvKiBUcmFuc2ZlciBjb21w
bGV0ZWQgICAgICAgICAgICovDQojZGVmaW5lIFRTU19TRUxfQ01QICAgICAweDAyICAgICAgICAg
ICAgLyogU2VsZWN0aW9uIGNvbXBsZXRlZCAgICAgICAgICAqLw0KI2RlZmluZSBUU1NfQVJCX0NN
UCAgICAgMHgwMSAgICAgICAgICAgIC8qIEFyYml0cmF0aW9uIGNvbXBsZXRlZCAgICAgICAgKi8N
CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogYml0IGRlZmluaXRpb24gZm9yIFR1bGlwIFNDU0kgU3Rh
dHVzIDIgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgKi8NCi8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
DQojZGVmaW5lIFRTU19DTURfQUJURUQgICAweDgwICAgICAgICAgICAgLyogQ29tbWFuZCBhYm9y
dGVkICAgICAgICAgICAgICAqLw0KI2RlZmluZSBUU1NfT0ZGU0VUXzAgICAgMHg0MCAgICAgICAg
ICAgIC8qIE9mZnNldCBjb3VudGVyIHplcm8gICAgICAgICAgKi8NCiNkZWZpbmUgVFNTX0ZJRk9f
RlVMTCAgIDB4MjAgICAgICAgICAgICAvKiBGSUZPIGZ1bGwgICAgICAgICAgICAgICAgICAgICov
DQojZGVmaW5lIFRTU19USU1FT1VUXzAgICAweDEwICAgICAgICAgICAgLyogVGltZW91dCBjb3Vu
dGVyIHplcm8gICAgICAgICAqLw0KI2RlZmluZSBUU1NfQlVTWV9STFMgICAgMHgwOCAgICAgICAg
ICAgIC8qIEJ1c3kgcmVsZWFzZSAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgVFNTX1BIX01J
U01BVENIIDB4MDQgICAgICAgICAgICAvKiBQaGFzZSBtaXNtYXRjaCAgICAgICAgICAgICAgICov
DQojZGVmaW5lIFRTU19TQ1NJX0JVU19FTiAweDAyICAgICAgICAgICAgLyogU0NTSSBkYXRhIGJ1
cyBlbmFibGUgICAgICAgICAqLw0KI2RlZmluZSBUU1NfU0NTSVJTVCAgICAgMHgwMSAgICAgICAg
ICAgIC8qIFNDU0kgYnVzIHJlc2V0IGluIHByb2dyZXNzICAgKi8NCgovKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
Lw0KLyogYml0IGRlZmluaXRpb24gZm9yIFR1bGlwIFNDU0kgSW50ZXJydXB0IFJlZ2lzdGVyICAg
ICAgICAgICAgICAgICAgICAgKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lIFRTU19SRVNF
TF9JTlQgICAweDgwICAgICAgICAgICAgLyogUmVzZWxlY3RlZCBpbnRlcnJ1cHQgICAgICAgICAq
Lw0KI2RlZmluZSBUU1NfU0VMX1RJTUVPVVQgMHg0MCAgICAgICAgICAgIC8qIFNlbGVjdGVkL3Jl
c2VsZWN0ZWQgdGltZW91dCAgKi8NCiNkZWZpbmUgVFNTX0JVU19TRVJWICAgIDB4MjANCiNkZWZp
bmUgVFNTX1NDU0lSU1RfSU5UIDB4MTAgICAgICAgICAgICAvKiBTQ1NJIGJ1cyByZXNldCBkZXRl
Y3RlZCAgICAgICovDQojZGVmaW5lIFRTU19ESVNDX0lOVCAgICAweDA4ICAgICAgICAgICAgLyog
RGlzY29ubmVjdGVkIGludGVycnVwdCAgICAgICAqLw0KI2RlZmluZSBUU1NfU0VMX0lOVCAgICAg
MHgwNCAgICAgICAgICAgIC8qIFNlbGVjdCBpbnRlcnJ1cHQgICAgICAgICAgICAgKi8NCiNkZWZp
bmUgVFNTX1NDQU1fU0VMICAgIDB4MDIgICAgICAgICAgICAvKiBTQ0FNIHNlbGVjdGVkICAgICAg
ICAgICAgICAgICovDQojZGVmaW5lIFRTU19GVU5DX0NPTVAgICAweDAxDQoKLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8NCi8qIFNDU0kgUGhhc2UgQ29kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBEQVRB
X09VVCAgICAgICAgMAojZGVmaW5lIERBVEFfSU4gICAgICAgICAxICAgICAgICAgICAgICAgLyog
NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBDTURfT1VUICAgICAgICAg
MgojZGVmaW5lIFNUQVRVU19JTiAgICAgICAzICAgICAgICAgICAgICAgLyogNiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLw0KI2RlZmluZSBNU0dfT1VUICAgICAgICAgNiAgICAgICAgICAg
ICAgIC8qIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgTVNHX0lOICAg
ICAgICAgIDcKCgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIENvbW1hbmQgQ29kZXMgb2YgVHVsaXAg
eGZlciBDb21tYW5kIHJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICovDQovKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLw0KI2RlZmluZSBUQVhfWF9BQlQgICAgICAgMHgwNA0KCiNkZWZpbmUgVEFYX1hf
SU4gICAgICAgIDB4MjENCiNkZWZpbmUgVEFYX1hfT1VUICAgICAgIDB4MDENCiNkZWZpbmUgVEFY
X1NHX0lOICAgICAgIDB4QTENCiNkZWZpbmUgVEFYX1NHX09VVCAgICAgIDB4ODENCgovKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLw0KLyogVHVsaXAgSW50ZXJydXB0IFJlZ2lzdGVyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5l
IFhDTVAgICAgICAgICAgICAweDAxDQojZGVmaW5lIFhBQlQgICAgICAgICAgICAweDA0DQojZGVm
aW5lIFhFUlIgICAgICAgICAgICAweDA4DQojZGVmaW5lIFNDTVAgICAgICAgICAgICAweDEwDQoj
ZGVmaW5lIElQRU5EICAgICAgICAgICAweDgwDQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIFR1bGlw
IERNQSBTdGF0dXMgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBYUEVORCAgICAgICAgICAgMHgw
MSAgICAgICAgICAgIC8qIFRyYW5zZmVyIHBlbmRpbmcgICAgICAgICAgICAgKi8NCiNkZWZpbmUg
RkVNUFRZICAgICAgICAgIDB4MDIgICAgICAgICAgICAvKiBGSUZPIGVtcHR5ICAgICAgICAgICAg
ICAgICAgICovDQoKCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogYml0IGRlZmluaXRpb24gZm9yIFRV
TF9HQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovDQojZGVmaW5lIEVFUFJHICAgICAgICAgICAweDA0DQojZGVmaW5lIE1STVVM
ICAgICAgICAgICAweDAyDQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIGJpdCBkZWZpbml0aW9uIGZv
ciBUVUxfTlZSQU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQov
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZSBTRTJDUyAgICAgICAgICAgMHgwOA0KI2RlZmluZSBT
RTJDTEsgICAgICAgICAgMHgwNA0KI2RlZmluZSBTRTJETyAgICAgICAgICAgMHgwMg0KI2RlZmlu
ZSBTRTJESSAgICAgICAgICAgMHgwMQ0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgICAgICAgICAg
ICAgU2NhdHRlci1HYXRoZXIgRWxlbWVudCBTdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLwp0eXBlZGVmIHN0cnVjdCBTR19TdHJ1YyAgICAgICAgIHsK
CVVMT05HICAgU0dfUHRyOyAgICAgICAgIC8qIERhdGEgUG9pbnRlciAqLwoJVUxPTkcgICBTR19M
ZW47ICAgICAgICAgLyogRGF0YSBMZW5ndGggKi8KfSBJOTFVX1NHOwoKLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CgkJU0NTSSBDb250cm9sIEJsb2NrCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KdHlwZWRlZiBzdHJ1Y3QgSTkx
VV9TY3NpX0N0cmxfQmxrICAgICAgICAgICAgewoJc3RydWN0CUk5MVVfU2NzaV9DdHJsX0JsayAq
U0NCX054dFNjYjsKCVVCWVRFICAgU0NCX1N0YXR1czsgICAgIC8qNCAqLwoJVUJZVEUgICBTQ0Jf
Tnh0U3RhdDsgICAgLyo1ICovCglVQllURSAgIFNDQl9Nb2RlOyAgICAgICAvKjYgKi8KCVVCWVRF
ICAgU0NCX01zZ2luOyAgICAgIC8qNyBTQ0JfUmVzMCAqLwoJVVdPUkQgICBTQ0JfU0dJZHg7ICAg
ICAgLyo4ICovCglVV09SRCAgIFNDQl9TR01heDsgICAgICAvKkEgKi8KI2lmIDAKCWJ1c19kbWFt
YXBfdAlTQ0JfZG1hbWFwOyAvKkMgKi8KI2VuZGlmCgoJVUJZVEUgICBTQ0JfT3Bjb2RlOyAgICAg
LyoxMCBTQ0IgY29tbWFuZCBjb2RlICovCglVQllURSAgIFNDQl9GbGFnczsgICAgICAvKjExIFND
QiBGbGFncyAqLwoJVUJZVEUgICBTQ0JfVGFyZ2V0OyAgICAgLyoxMiBUYXJnZXQgSWQgKi8KCVVC
WVRFICAgU0NCX0x1bjsgICAgICAgIC8qMTMgTHVuICovCglVTE9ORyAgIFNDQl9CdWZQdHI7ICAg
ICAvKjE0IERhdGEgQnVmZmVyIFBvaW50ZXIgKi8KCVVMT05HICAgU0NCX0J1ZkxlbjsgICAgIC8q
MTggRGF0YSBBbGxvY2F0aW9uIExlbmd0aCAqLwoJVUJZVEUgICBTQ0JfSGFTdGF0OyAgICAgLyox
YyAqLwoJVUJZVEUgICBTQ0JfVGFTdGF0OyAgICAgLyoxZCAqLwoJVUJZVEUgICBTQ0JfU0dMZW47
ICAgICAgLyoxZSBTRyBsaXN0ICMgKi8KCVVCWVRFICAgU0NCX1NlbnNlTGVuOyAgIC8qMWYgU2Vu
c2UgQWxsb2NhdGlvbiBMZW5ndGggKi8KCVVCWVRFICAgU0NCX0NEQkxlbjsgICAgIC8qMjAgQ0RC
IExlbmd0aCAqLwoJVUJZVEUgICBTQ0JfSWRlbnQ7ICAgICAgLyoyMSBJZGVudGlmeSAqLwoJVUJZ
VEUgICBTQ0JfVGFnTXNnOyAgICAgLyoyMiBUYWcgTWVzc2FnZSAqLwoJVUJZVEUgICBTQ0JfVGFn
SWQ7ICAgICAgLyoyMyBRdWV1ZSBUYWcgKi8KCVVCWVRFICAgU0NCX0NEQlsxMl07ICAgIC8qMjQg
Ki8KCVVMT05HICAgU0NCX1NHUEFkZHI7ICAgIC8qMzAgU0cgTGlzdC9TZW5zZSBCdWYgcGh5LiBB
ZGRyLiAqLwoJVUxPTkcgICBTQ0JfU2Vuc2VQdHI7ICAgLyozNCBTZW5zZSBkYXRhIHBvaW50ZXIg
Ki8KCXZvaWQgICAgKCogU0NCX1Bvc3QpKEJZVEUgKiwgQllURSAqKTsgIC8qMzggUE9TVCByb3V0
aW5lICovCglVTE9ORwlTQ0JfY2NiOyAgICAgICAgLyozYyBjY2IgUG9pbnRlciAqLwoJSTkxVV9T
RyAgICAgIFNDQl9TR0xpc3RbSTkxVV9TR19FTlRSWV07ICAgICAvKjQwIFN0YXJ0IG9mIFNHIGxp
c3QgKi8NCn0gSTkxVV9TQ0I7DQoNCi8qIEJpdCBEZWZpbml0aW9uIGZvciBTQ0JfU3RhdHVzICov
DQojZGVmaW5lIFNDQl9SRU5UICAgICAgICAweDAxDQojZGVmaW5lIFNDQl9QRU5EICAgICAgICAw
eDAyDQojZGVmaW5lIFNDQl9DT05USUcgICAgICAweDA0ICAgICAgICAgICAgLyogQ29udGlnZW50
IEFsbGVnaWFuY2UgKi8NCiNkZWZpbmUgU0NCX1NFTEVDVCAgICAgIDB4MDgNCiNkZWZpbmUgU0NC
X0JVU1kgICAgICAgIDB4MTANCiNkZWZpbmUgU0NCX0RPTkUgICAgICAgIDB4MjANCgoKLyogT3Bj
b2RlcyBvZiBTQ0JfT3Bjb2RlICovDQojZGVmaW5lIEV4ZWNTQ1NJICAgICAgICAweDENCiNkZWZp
bmUgQnVzRGV2UnN0ICAgICAgIDB4Mg0KI2RlZmluZSBBYm9ydENtZCAgICAgICAgMHgzDQoKCi8q
IEJpdCBEZWZpbml0aW9uIGZvciBTQ0JfTW9kZSAqLw0KI2RlZmluZSBTQ01fUlNFTlMgICAgICAg
MHgwMSAgICAgICAgICAgIC8qIHJlcXVlc3Qgc2Vuc2UgbW9kZSAqLw0KCgovKiBCaXQgRGVmaW5p
dGlvbiBmb3IgU0NCX0ZsYWdzICovDQojZGVmaW5lIFNDRl9ET05FICAgICAgICAweDAxDQojZGVm
aW5lIFNDRl9QT1NUICAgICAgICAweDAyDQojZGVmaW5lIFNDRl9TRU5TRSAgICAgICAweDA0DQoj
ZGVmaW5lIFNDRl9ESVIgICAgICAgICAweDE4DQojZGVmaW5lIFNDRl9OT19EQ0hLICAgICAweDAw
DQojZGVmaW5lIFNDRl9ESU4gICAgICAgICAweDA4DQojZGVmaW5lIFNDRl9ET1VUICAgICAgICAw
eDEwDQojZGVmaW5lIFNDRl9OT19YRiAgICAgICAweDE4DQojZGVmaW5lIFNDRl9XUl9WRiAgICAg
ICAweDIwICAgICAgICAgICAgLyogV3JpdGUgdmVyaWZ5IHR1cm4gb24gICAgICAgICAqLw0KI2Rl
ZmluZSBTQ0ZfUE9MTCAgICAgICAgMHg0MAojZGVmaW5lIFNDRl9TRyAgICAgICAgICAweDgwCgov
KiBFcnJvciBDb2RlcyBmb3IgU0NCX0hhU3RhdCAqLw0KI2RlZmluZSBIT1NUX09LCQkweDAwCiNk
ZWZpbmUgSE9TVF9TRUxfVE9VVCAgIDB4MTEKI2RlZmluZSBIT1NUX0RPX0RVICAgICAgMHgxMgoj
ZGVmaW5lIEhPU1RfQlVTX0ZSRUUgICAweDEzCiNkZWZpbmUgSE9TVF9CQURfUEhBUyAgIDB4MTQK
I2RlZmluZSBIT1NUX0lOVl9DTUQgICAgMHgxNgojZGVmaW5lIEhPU1RfU0NTSV9SU1QgICAweDFC
CiNkZWZpbmUgSE9TVF9ERVZfUlNUICAgIDB4MUMKCi8qIEVycm9yIENvZGVzIGZvciBTQ0JfVGFT
dGF0ICovDQojZGVmaW5lIFRBUkdFVF9HT09ECTB4MDAKI2RlZmluZSBUQVJHRVRfQ0hLQ09ORCAg
MHgwMgojZGVmaW5lIFRBUkdFVF9CVVNZICAgICAweDA4CiNkZWZpbmUgVEFSR0VUX1FGVUxMICAg
IDB4MjgKCi8qIFNDU0kgTUVTU0FHRSAqLwojZGVmaW5lIE1TR19DT01QICAgICAgICAweDAwDQoj
ZGVmaW5lIE1TR19FWFRFTkQgICAgICAweDAxDQojZGVmaW5lIE1TR19TRFAgICAgICAgICAweDAy
DQojZGVmaW5lIE1TR19SRVNUT1JFICAgICAweDAzDQojZGVmaW5lIE1TR19ESVNDICAgICAgICAw
eDA0DQojZGVmaW5lIE1TR19JREUgICAgICAgICAweDA1DQojZGVmaW5lIE1TR19BQk9SVCAgICAg
ICAweDA2DQojZGVmaW5lIE1TR19SRUogICAgICAgICAweDA3DQojZGVmaW5lIE1TR19OT1AgICAg
ICAgICAweDA4DQojZGVmaW5lIE1TR19QQVJJVFkgICAgICAweDA5DQojZGVmaW5lIE1TR19MSU5L
X0NPTVAgICAweDBBDQojZGVmaW5lIE1TR19MSU5LX0ZMQUcgICAweDBCDQojZGVmaW5lIE1TR19E
RVZSU1QgICAgICAweDBDDQojZGVmaW5lIE1TR19BQk9SVF9UQUcgICAweDBEDQoKLyogUXVldWUg
dGFnIG1zZzogU2ltcGxlX3F1cXVlX3RhZywgSGVhZF9vZl9xdWV1ZV90YWcsIE9yZGVyZWRfcXVl
dWVfdGFnICovDQojZGVmaW5lIE1TR19TVEFHICAgICAgICAweDIwDQojZGVmaW5lIE1TR19IVEFH
ICAgICAgICAweDIxDQojZGVmaW5lIE1TR19PVEFHICAgICAgICAweDIyDQoKI2RlZmluZSBNU0df
SUdOT1JFV0lERSAgMHgyMw0KCiNkZWZpbmUgTVNHX0lERU5UICAgMHg4MA0KCi8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgoJCVRhcmdldCBEZXZpY2UgQ29udHJvbCBTdHJ1Y3R1cmUKKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnR5
cGVkZWYgc3RydWN0IFRhcl9DdHJsX1N0cnVjIHsKCVVXT1JEICAgVENTX0ZsYWdzOyAgICAgICAg
ICAgICAgLyogMCAqLwoJVUJZVEUgICBUQ1NfSlNfUGVyaW9kOyAgICAgICAgICAvKiAyICovCglV
QllURSAgIFRDU19TQ29uZmlnMDsgICAgICAgICAgIC8qIDMgKi8KCglVV09SRCAgIFRDU19EcnZG
bGFnczsgICAgICAgICAgIC8qIDQgKi8KCVVCWVRFICAgVENTX0RydkhlYWQ7ICAgICAgICAgICAg
LyogNiAqLwoJVUJZVEUgICBUQ1NfVGFnQ250OyAgICAgICAgICAgICAvKiA3ICovCglJOTFVX1ND
QiAgKlRDU19Ob25UYWdTY2I7ICAgICAgIC8qIDggKi8KfSBUQ1M7CgovKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
CgkJVGFyZ2V0IERldmljZSBDb250cm9sIFN0cnVjdHVyZQoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KCi8qIEJp
dCBEZWZpbml0aW9uIGZvciBUQ1NfRmxhZ3MgKi8NCiNkZWZpbmUgVENGX1NDU0lfUkFURSAgICAg
ICAgICAgMHgwMDA3CiNkZWZpbmUgVENGX0VOX0RJU0MgICAgICAgICAgICAgMHgwMDA4CiNkZWZp
bmUgVENGX05PX1NZTkNfTkVHTyAgICAgICAgMHgwMDEwCiNkZWZpbmUgVENGX05PX1dEVFIgICAg
ICAgICAgICAgMHgwMDIwCiNkZWZpbmUgVENGX1dEVFJfRE9ORSAgICAgICAgICAgMHgwMTAwCiNk
ZWZpbmUgVENGX1NZTkNfRE9ORSAgICAgICAgICAgMHgwMjAwCiNkZWZpbmUgVENGX0JVU1kgICAg
ICAgICAgICAgICAgMHgwNDAwCgoKLyogQml0IERlZmluaXRpb24gZm9yIFRDU19EcnZGbGFncyAq
Lw0KI2RlZmluZSBUQ0ZfRFJWX0JVU1kgICAgICAgICAgICAweDAxICAgIC8qIEluZGljYXRlIHRh
cmdldCBidXN5KGRyaXZlcikgKi8NCiNkZWZpbmUgVENGX0RSVl9FTl9UQUcgICAgICAgICAgMHgw
ODAwDQoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCgkgICAgICBIb3N0IEFkYXB0ZXIgQ29udHJvbCBTdHJ1
Y3R1cmUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLw0KdHlwZWRlZiBzdHJ1Y3QgSTkxVV9IYV9DdHJsX1N0cnVj
IHsKCVVMT05HICAgSENTX0Jhc2U7ICAgICAgIC8qIDAwICovCglVTE9ORyAgIEhDU19TRmlmbzsg
ICAgICAvKiAwNCAqLwoJVUxPTkcgICBIQ1NfU0NtZDsgICAgICAgLyogMDggKi8KCVVCWVRFICAg
SENTX0ludHI7ICAgICAgIC8qIDE0ICovCglVQllURSAgIEhDU19TQ1NJX0lEOyAgICAvKiAwNSAq
LwoJVUJZVEUgICBIQ1NfTWF4VGFyOyAgICAgLyogMDYgKi8KCVVCWVRFICAgSENTX051bVNjYnM7
ICAgIC8qIDA3ICovCgoJVUJZVEUgICBIQ1NfVW5pdDsgICAgICAgLyogMDggKi8KCVVCWVRFICAg
SENTX0hhSWQ7ICAgICAgIC8qIDA5ICovCglVQllURSAgIEhDU19Db25maWc7ICAgICAvKiAwQSAq
LwoJVUJZVEUgICBIQ1NfRmxhZ3M7ICAgICAgLyogMEIgKi8KCVVCWVRFICAgSENTX1NlbWFwaDsg
ICAgIC8qIDBDICovCglVQllURSAgIEhDU19QaGFzZTsgICAgICAvKiAwRCAqLwoJVUJZVEUgICBI
Q1NfSlNTdGF0dXMwOyAgLyogMEUgKi8KCVVCWVRFICAgSENTX0pTSW50OyAgICAgIC8qIDBGICov
CglVQllURSAgIEhDU19KU1N0YXR1czE7ICAvKiAxMCAqLwoJVUJZVEUgICBIQ1NfU0NvbmYxOyAg
ICAgLyogMTEgKi8KCglVQllURSAgIEhDU19Nc2dbNl07ICAgICAvKiAxMiAqLwoJSTkxVV9TQ0Ig
ICAgICpIQ1NfU2NiOyAgICAgICAvKiAxOCAqLwoJSTkxVV9TQ0IgICAgICpIQ1NfQWN0U2NiOyAg
ICAvKiAxQyAqLwoJVENTICAgICAqSENTX0FjdFRjczsgICAgLyogMjAgKi8KCglJOTFVX1NDQiAg
ICAgKkhDU19GaXJzdEF2YWlsOy8qIDI0ICovCglJOTFVX1NDQiAgICAgKkhDU19MYXN0QXZhaWw7
CS8qIDI4ICovCglJOTFVX1NDQiAgICAgKkhDU19GaXJzdFBlbmQ7CS8qIDJDICovCglJOTFVX1ND
QiAgICAgKkhDU19MYXN0UGVuZDsJLyogMzAgKi8KCUk5MVVfU0NCICAgICAqSENTX0ZpcnN0RG9u
ZTsJLyogMzQgKi8KCUk5MVVfU0NCICAgICAqSENTX0xhc3REb25lOwkvKiAzOCAqLwoKCWJ1c19k
bWFfdGFnX3QJZG1hdDsKCWJ1c19kbWFtYXBfdAlkbWFtYXA7CglzdHJ1Y3QJCWNhbV9zaW0gICpz
aW07CglzdHJ1Y3QJCWNhbV9wYXRoICpwYXRoOwoKCVRDUyAgICAgSENTX1Rjc1tNQVhfVEFSR0VU
U107IC8qIDQwICovCn0gSTkxVV9IQ1M7CgovKiBCaXQgRGVmaW5pdGlvbiBmb3IgSENCX0NvbmZp
ZyAqLw0KI2RlZmluZSBIQ0NfU0NTSV9SRVNFVCAgICAgICAgICAweDAxDQojZGVmaW5lIEhDQ19F
Tl9QQVIgICAgICAgICAgICAgIDB4MDINCiNkZWZpbmUgSENDX0FDVF9URVJNMSAgICAgICAgICAg
MHgwNA0KI2RlZmluZSBIQ0NfQUNUX1RFUk0yICAgICAgICAgICAweDA4DQojZGVmaW5lIEhDQ19B
VVRPX1RFUk0gICAgICAgICAgIDB4MTANCiNkZWZpbmUgSENDX0VOX1BXUiAgICAgICAgICAgICAg
MHg4MA0KDQovKiBCaXQgRGVmaW5pdGlvbiBmb3IgSENCX0ZsYWdzICovDQojZGVmaW5lIEhDRl9F
WFBFQ1RfRElTQyAgICAgICAgIDB4MDENCiNkZWZpbmUgSENGX0VYUEVDVF9TRUxFQ1QgICAgICAg
MHgwMg0KI2RlZmluZSBIQ0ZfRVhQRUNUX1JFU0VUICAgICAgICAweDEwDQojZGVmaW5lIEhDRl9F
WFBFQ1RfRE9ORV9ESVNDICAgIDB4MjANCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KCVNlcmlhbCBFRVByb20NCioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovDQoNCnR5cGVkZWYgc3RydWN0IF9OVlJBTV9TQ1NJIHsgICAgICAgICAgICAvKiBT
Q1NJIGNoYW5uZWwgY29uZmlndXJhdGlvbiAgICovDQoJVUNIQVIgICBOVk1fQ2hTQ1NJSUQ7ICAg
ICAgICAgICAvKiAwQ2ggLT4gQ2hhbm5lbCBTQ1NJIElEICAgICAgICovDQoJVUNIQVIgICBOVk1f
Q2hDb25maWcxOyAgICAgICAgICAvKiAwRGggLT4gQ2hhbm5lbCBjb25maWcgMSAgICAgICovDQoJ
VUNIQVIgICBOVk1fQ2hDb25maWcyOyAgICAgICAgICAvKiAwRWggLT4gQ2hhbm5lbCBjb25maWcg
MiAgICAgICovDQoJVUNIQVIgICBOVk1fTnVtT2ZUYXJnOyAgICAgICAgICAvKiAwRmggLT4gTnVt
YmVyIG9mIFNDU0kgdGFyZ2V0ICovDQoJCQkJCS8qIFNDU0kgdGFyZ2V0IGNvbmZpZ3VyYXRpb24g
ICAgKi8NCglVQ0hBUiAgIE5WTV9UYXJnMENvbmZpZzsgICAgICAgIC8qIDEwaCAtPiBUYXJnZXQg
MCBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnMUNvbmZpZzsgICAgICAgIC8qIDEx
aCAtPiBUYXJnZXQgMSBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnMkNvbmZpZzsg
ICAgICAgIC8qIDEyaCAtPiBUYXJnZXQgMiBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9U
YXJnM0NvbmZpZzsgICAgICAgIC8qIDEzaCAtPiBUYXJnZXQgMyBjb25maWd1cmF0aW9uKi8NCglV
Q0hBUiAgIE5WTV9UYXJnNENvbmZpZzsgICAgICAgIC8qIDE0aCAtPiBUYXJnZXQgNCBjb25maWd1
cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnNUNvbmZpZzsgICAgICAgIC8qIDE1aCAtPiBUYXJn
ZXQgNSBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnNkNvbmZpZzsgICAgICAgIC8q
IDE2aCAtPiBUYXJnZXQgNiBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnN0NvbmZp
ZzsgICAgICAgIC8qIDE3aCAtPiBUYXJnZXQgNyBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5W
TV9UYXJnOENvbmZpZzsgICAgICAgIC8qIDE4aCAtPiBUYXJnZXQgOCBjb25maWd1cmF0aW9uKi8N
CglVQ0hBUiAgIE5WTV9UYXJnOUNvbmZpZzsgICAgICAgIC8qIDE5aCAtPiBUYXJnZXQgOSBjb25m
aWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnQUNvbmZpZzsgICAgICAgIC8qIDFBaCAtPiBU
YXJnZXQgQSBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnQkNvbmZpZzsgICAgICAg
IC8qIDFCaCAtPiBUYXJnZXQgQiBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnQ0Nv
bmZpZzsgICAgICAgIC8qIDFDaCAtPiBUYXJnZXQgQyBjb25maWd1cmF0aW9uKi8NCglVQ0hBUiAg
IE5WTV9UYXJnRENvbmZpZzsgICAgICAgIC8qIDFEaCAtPiBUYXJnZXQgRCBjb25maWd1cmF0aW9u
Ki8NCglVQ0hBUiAgIE5WTV9UYXJnRUNvbmZpZzsgICAgICAgIC8qIDFFaCAtPiBUYXJnZXQgRSBj
b25maWd1cmF0aW9uKi8NCglVQ0hBUiAgIE5WTV9UYXJnRkNvbmZpZzsgICAgICAgIC8qIDFGaCAt
PiBUYXJnZXQgRiBjb25maWd1cmF0aW9uKi8NCn0gTlZSQU1fU0NTSTsKCnR5cGVkZWYgc3RydWN0
IF9OVlJBTSB7CgkvKi0tLS0tLS0tLS1oZWFkZXIgLS0tLS0tLS0tLS0tLS0tKi8KCVVTSE9SVCAg
TlZNX1NpZ25hdHVyZTsgICAgICAgICAgICAgICAvKiAwLDE6IFNpZ25hdHVyZSAqLwoJVUNIQVIg
ICBOVk1fU2l6ZTsgICAgICAgICAgICAgICAgICAgIC8qIDI6ICAgU2l6ZSBvZiBkYXRhIHN0cnVj
dHVyZSAqLwoJVUNIQVIgICBOVk1fUmV2aXNpb247ICAgICAgICAgICAgICAgIC8qIDM6ICAgUmV2
aXNpb24gb2YgZGF0YSBzdHJ1Y3R1cmUgKi8KCS8qIC0tLS1Ib3N0IEFkYXB0ZXIgU3RydWN0dXJl
IC0tLS0qLwoJVUNIQVIgICBOVk1fTW9kZWxCeXRlMDsgICAgICAgICAgICAgIC8qIDQ6ICAgTW9k
ZWwgbnVtYmVyIChieXRlIDApICovCglVQ0hBUiAgIE5WTV9Nb2RlbEJ5dGUxOyAgICAgICAgICAg
ICAgLyogNTogICBNb2RlbCBudW1iZXIgKGJ5dGUgMSkgKi8KCVVDSEFSICAgTlZNX01vZGVsSW5m
bzsgICAgICAgICAgICAgICAvKiA2OiAgIE1vZGVsIGluZm9ybWF0aW9uICAgICAgICAgKi8KCVVD
SEFSICAgTlZNX051bU9mQ2g7ICAgICAgICAgICAgICAgICAvKiA3OiAgIE51bWJlciBvZiBTQ1NJ
IGNoYW5uZWwqLwoJVUNIQVIgICBOVk1fQklPU0NvbmZpZzE7ICAgICAgICAgICAgIC8qIDg6ICAg
QklPUyBjb25maWd1cmF0aW9uIDEgICovCglVQ0hBUiAgIE5WTV9CSU9TQ29uZmlnMjsgICAgICAg
ICAgICAgLyogOTogICBCSU9TIGNvbmZpZ3VyYXRpb24gMiAgKi8KCVVDSEFSICAgTlZNX0hBQ29u
ZmlnMTsgICAgICAgICAgICAgICAvKiBBOiAgIEhvYXQgYWRhcHRlciBjb25maWd1cmF0aW9uIDEg
Ki8KCVVDSEFSICAgTlZNX0hBQ29uZmlnMjsgICAgICAgICAgICAgICAvKiBCOiAgIEhvYXQgYWRh
cHRlciBjb25maWd1cmF0aW9uIDIgKi8KCU5WUkFNX1NDU0kgTlZNX1NDU0lJbmZvWzJdOwoJVUNI
QVIgICBOVk1fcmVzZXJ2ZWRbMTBdOwoJLyogLS0tLS0tLS0tLSBDaGVja1N1bSAtLS0tLS0tLS0t
ICAgICAgICovCglVU0hPUlQgIE5WTV9DaGVja1N1bTsgICAgICAgICAgICAgICAgLyogMHgzRSwg
MHgzRjogQ2hlY2tzdW0gb2YgTlZSYW0gKi8KCX0gTlZSQU0sICpQTlZSQU07CgovKiBCaW9zIENv
bmZpZ3VyYXRpb24gZm9yIG52cmFtLT5CSU9TQ29uZmlnMSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwojZGVmaW5lIE5CQzFfRU5BQkxFICAgICAgICAgICAgIDB4MDEgICAgLyogQklPUyBl
bmFibGUgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIE5CQzFfOERSSVZFICAgICAgICAgICAg
IDB4MDIgICAgLyogU3VwcG9ydCBtb3JlIHRoYW4gMiBkcml2ZXMgICAqLwojZGVmaW5lIE5CQzFf
UkVNT1ZBQkxFICAgICAgICAgIDB4MDQgICAgLyogU3VwcG9ydCByZW1vdmFibGUgZHJpdmUgICAg
ICAqLwojZGVmaW5lIE5CQzFfSU5UMTkgICAgICAgICAgICAgIDB4MDggICAgLyogSW50ZXJjZXB0
IGludCAxOWggICAgICAgICAgICAqLwojZGVmaW5lIE5CQzFfQklPU1NDQU4gICAgICAgICAgIDB4
MTAgICAgLyogRHluYW1pYyBCSU9TIHNjYW4gICAgICAgICAgICAqLwojZGVmaW5lIE5CQzFfTFVO
U1VQUE9SVCAgICAgICAgIDB4NDAgICAgLyogU3VwcG9ydCBMVU4gICAgICAgICAgICAgICAgICAq
LwoKLyogSEEgQ29uZmlndXJhdGlvbiBCeXRlIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgTkhDMV9CT09USURNQVNLIDB4MEYgICAgICAg
ICAgICAvKiBCb290IElEIG51bWJlciAgICAgICAgICAgICAgICovDQojZGVmaW5lIE5IQzFfTFVO
TUFTSyAgICAweDcwICAgICAgICAgICAgLyogQm9vdCBMVU4gbnVtYmVyICAgICAgICAgICAgICAq
Lw0KI2RlZmluZSBOSEMxX0NIQU5NQVNLICAgMHg4MCAgICAgICAgICAgIC8qIEJvb3QgQ2hhbm5l
bCBudW1iZXIgICAgICAgICAgKi8NCg0KLyogQml0IGRlZmluaXRpb24gZm9yIG52cmFtLT5TQ1NJ
Y29uZmlnMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCiNkZWZpbmUgTkNDMV9C
VVNSRVNFVCAgICAgICAgICAgMHgwMSAgICAvKiBSZXNldCBTQ1NJIGJ1cyBhdCBwb3dlciB1cCAg
ICovDQojZGVmaW5lIE5DQzFfUEFSSVRZQ0hLICAgICAgICAgIDB4MDIgICAgLyogU0NTSSBwYXJp
dHkgZW5hYmxlICAgICAgICAgICAqLw0KI2RlZmluZSBOQ0MxX0FDVFRFUk0xICAgICAgICAgICAw
eDA0ICAgIC8qIEVuYWJsZSBhY3RpdmUgdGVybWluYXRvciAxICAgKi8NCiNkZWZpbmUgTkNDMV9B
Q1RURVJNMiAgICAgICAgICAgMHgwOCAgICAvKiBFbmFibGUgYWN0aXZlIHRlcm1pbmF0b3IgMiAg
ICovDQojZGVmaW5lIE5DQzFfQVVUT1RFUk0gICAgICAgICAgIDB4MTAgICAgLyogRW5hYmxlIGF1
dG8gdGVybWluYXRvciAgICAgICAqLw0KI2RlZmluZSBOQ0MxX1BXUk1HUiAgICAgICAgICAgICAw
eDgwICAgIC8qIEVuYWJsZSBwb3dlciBtYW5hZ2VtZW50ICAgICAgKi8NCgovKiBCaXQgZGVmaW5p
dGlvbiBmb3IgU0NTSSBUYXJnZXQgY29uZmlndXJhdGlvbiBieXRlICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBOVENfRElTQ09OTkVDVCAgICAgICAgICAweDA4ICAgIC8qIEVuYWJsZSBT
Q1NJIGRpc2Nvbm5lY3QgICAgICAgKi8NCiNkZWZpbmUgTlRDX1NZTkMgICAgICAgICAgICAgICAg
MHgxMCAgICAvKiBTWU5DX05FR08gICAgICAgICAgICAgICAgICAgICovDQojZGVmaW5lIE5UQ19O
T19XRFRSICAgICAgICAgICAgIDB4MjAgICAgLyogU1lOQ19ORUdPICAgICAgICAgICAgICAgICAg
ICAqLw0KI2RlZmluZSBOVENfMUdJR0EgICAgICAgICAgICAgICAweDQwICAgIC8qIDI1NSBoZWFk
IC8gNjMgc2VjdG9ycyAoNjQvMzIpKi8NCiNkZWZpbmUgTlRDX1NQSU5VUCAgICAgICAgICAgICAg
MHg4MCAgICAvKiBTdGFydCBkaXNrIGRyaXZlICAgICAgICAgICAgICovDQoKLyogICAgICBEZWZh
dWx0IE5WUmFtIHZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8NCiNkZWZpbmUgSU5JX1NJR05BVFVSRSAgICAgICAgICAgMHhDOTI1CiNkZWZpbmUgTkJD
MV9ERUZBVUxUICAgICAgICAgICAgKE5CQzFfRU5BQkxFKQojZGVmaW5lIE5DQzFfREVGQVVMVCAg
ICAgICAgICAgIChOQ0MxX0JVU1JFU0VUIHwgTkNDMV9BVVRPVEVSTSB8IE5DQzFfUEFSSVRZQ0hL
KQojZGVmaW5lIE5UQ19ERUZBVUxUICAgICAgICAgICAgIChOVENfTk9fV0RUUiB8IE5UQ18xR0lH
QSB8IE5UQ19ESVNDT05ORUNUKQoKLyogU0NTSSByZWxhdGVkIGRlZmluaXRpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KI2RlZmluZSBESVNDX05PVF9B
TExPVyAgICAgICAgICAweDgwICAgIC8qIERpc2Nvbm5lY3QgaXMgbm90IGFsbG93ZWQgICAgKi8K
I2RlZmluZSBESVNDX0FMTE9XICAgICAgICAgICAgICAweEMwICAgIC8qIERpc2Nvbm5lY3QgaXMg
YWxsb3dlZCAgICAgICAgKi8KI2RlZmluZSBTQ1NJQ01EX1JlcXVlc3RTZW5zZSAgICAweDAzCgoK
CgojZGVmaW5lIFRVTF9SRChhZHIpICAgICAgICAgICAgICggKFVDSEFSKSBpbmIoIChVTE9ORyko
YWRyKSApICkKI2RlZmluZSBUVUxfUkRMT05HKGFkcikgICAgICAgICAoIChVTE9ORykgaW5sKCAo
VUxPTkcpKGFkcikgKSApCiNkZWZpbmUgVFVMX1dSKCAgICAgYWRyLGRhdGEpICAgb3V0YiggKFVM
T05HKShhZHIpLCAoVUNIQVIpKGRhdGEpKSAKI2RlZmluZSBUVUxfV1JTSE9SVChhZHIsZGF0YSkg
ICBvdXR3KCAoVUxPTkcpKGFkciksIChVV09SRCkoZGF0YSkpIAojZGVmaW5lIFRVTF9XUkxPTkco
IGFkcixkYXRhKSAgIG91dGwoIChVTE9ORykoYWRyKSwgKFVMT05HKShkYXRhKSkgCgo=
--spruceIXCXKZOZOFSXCLQJWNYD
Content-Type: application/octet-stream; name="readme.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="readme.txt"

DQpGcmVlQlNEIEluc3RhbGxhdGlvbiB3aXRoIElPSS00MjMwLzlYMDBVVyBDb250cm9sbGVycw0K
DQpXaGlsZSB0aGVzZSBwcm9jZWR1cmVzIGFyZSBlYXN5LCB5b3Ugc2hvdWxkIHRob3JvdWdobHkg
cmVhZCBhbmQgdW5kZXJzdGFuZCANCmFsbCB0aGUgc3RlcHMgYmVmb3JlIHlvdSBiZWdpbi4gDQoN
CllvdSB3aWxsIG5vdyBoYXZlIHNvdXJjZSBjb2RlIGFuZCBwdXQgdGhlbSB1bmRlciAvdXNyL3Ny
Yy9zeXMvcGNpLiANCldlIGdpdmUgc291cmNlIGNvZGUgbmFtZSBhcyBmb2xsb3dpbmc6DQoJOXh4
eCBzb3VyY2UgY29kZSBpOTF1LmMgKGluY2x1ZGUgaTkxdXNjc2kuYyksIGRyaXZlciBuYW1lIGlo
YS4NCg0KTmV4dCx5b3Ugc2hvdWxkIGRvIGZvbGxvd2luZyBzdGVwczoNCg0KMS5BZGQgb25lIGxp
bmUgaW4gL3Vzci9zcmMvc3lzL2NvbmYvZmlsZXMgZm9yIElPSS00MjAzLzlYMDBVVyBTQ1NJIEhv
c3QgQWRhcHRlcg0KICByZXNwZWN0aXZlbHk6DQoJL3BjaS9pOTF1LmMJCW9wdGlvbmFsIGloYSBk
ZXZpY2UtZHJpdmVyDQoNCg0KMi5FbnRlciAvdXNyL3NyYy9zeXMvaTM4Ni9jb25mLGNvcHkgdGhl
IEdFTkVSSUMgY29uZmlndXJhdGlvbiBmaWxlIA0KdG8gdGhlIG5hbWUgeW91IHdhbnQgdG8gZ2l2
ZSB5b3VyIGtlcm5lbCxNWTkxMDAgaW4gdGhpcyBleGFtcGxlLkFkZA0Kb25lIGxpbmVzIGluIE1Z
OTEwMDoNCglkZXZpY2UJCWloYTANCg0KMy5UeXBlIHRoZSBmb2xsb3dpbmcgdG8gY29tcGlsZSBh
bmQgaW5zdGFsbCB5b3VyIGtlcm5lbDogDQoJIyAvdXNyL3NiaW4vY29uZmlnIE1ZOTEwMA0KCSMg
Y2QgLi4vLi4vY29tcGlsZS9NWTkxMDANCgkjIG1ha2UgZGVwZW5kDQoJIyBtYWtlDQoJIyBtYWtl
IGluc3RhbGwNClRoZSBuZXcga2VybmVsIHdpbGwgYmUgY29waWVkIHRvIHRoZSByb290IGRpcmVj
dG9yeSBhcyAva2VybmVsIGFuZCANCnRoZSBvbGQga2VybmVsIHdpbGwgYmUgbW92ZWQgdG8gL2tl
cm5lbC5vbGQuIFRoZSBuZXcga2VybmVsIGNvbnRhaW5zIA0KOXh4eCBkcml2ZXJzLg0KDQo0LlNo
dXRkb3duIHRoZSBzeXN0ZW0gYW5kIHJlYm9vdCB0byB1c2UgeW91ciBrZXJuZWwuIEluIGNhc2Ug
c29tZXRoaW5nIA0KZ29lcyB3cm9uZywgbG9vayBpbmZvcm1hdGlvbiBpbiANCglodHRwOi8vd3d3
LmZyZWVic2Qub3JnL2hhbmRib29rDQoJaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9GQVEvRkFRLmh0
bWwNCgkNCg==
--spruceIXCXKZOZOFSXCLQJWNYD--