public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: d.mueller@elsoft.ch
To: gcc-gnats@gcc.gnu.org
Subject: other/7114: ICE building strcoll.op from glibc-2.2.5
Date: Tue, 25 Jun 2002 02:16:00 -0000	[thread overview]
Message-ID: <20020625081846.10430.qmail@sources.redhat.com> (raw)


>Number:         7114
>Category:       other
>Synopsis:       ICE building strcoll.op from glibc-2.2.5
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Tue Jun 25 01:26:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     d.mueller@elsoft.ch
>Release:        gcc-3.1
>Organization:
>Environment:
PowerPC PPC405GP based hardware, native gcc-3.1, native binutils-2.12.1, glibc-2.2.5
>Description:
If the "-mmultiple" options is specified, GCC throws an ICE while compiling the profiled version of strcoll.c from the "string" subdirectory of glibc-2.2.5. If the "-mmultiple" option is removed, everything is fine.
>How-To-Repeat:
> gcc strcoll.i -c -O2 -Wall -Wbad-function-cast -Wcast-qual -Wcomment -Wcomments -Wfloat-equal -Winline -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes -Wmultichar -Wsign-compare -Wstrict-prototypes -Wtrigraphs -Wwrite-strings -mmultiple -msoft-float -mnew-mnemonics -Wa,-mppc -mpowerpc -pg -nostdinc -o ~/strcoll.op
strcoll.c: In function `findidx':
strcoll.c:549: Attempt to delete prologue/epilogue insn:
(insn 693 692 695 (parallel[ 
            (set (reg:SI 30 r30)
                (mem:SI (plus:SI (reg/f:SI 1 r1)
                        (const_int 24 [0x18])) [1 S4 A8]))
            (set (reg/f:SI 31 r31)
                (mem:SI (plus:SI (reg/f:SI 1 r1)
                        (const_int 28 [0x1c])) [1 S4 A8]))
        ] ) -1 (nil)
    (nil))
strcoll.c:549: Internal compiler error in propagate_one_insn, at flow.c:1615
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

> gcc strcoll.i -c -O2 -Wall -Wbad-function-cast -Wcast-qual -Wcomment -Wcomments -Wfloat-equal -Winline -Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes -Wmultichar -Wsign-compare -Wstrict-prototypes -Wtrigraphs -Wwrite-strings -msoft-float -mnew-mnemonics -Wa,-mppc -mpowerpc -pg -nostdinc -o ~/strcoll.op

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="strcoll.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="strcoll.i"

IyAxICJzdHJjb2xsLmMiDQojIDEgIjxidWlsdC1pbj4iDQojIDEgIjxjb21tYW5kIGxpbmU+Ig0K
IyAxICIuLi9pbmNsdWRlL2xpYmMtc3ltYm9scy5oIiAxDQojIDU0ICIuLi9pbmNsdWRlL2xpYmMt
c3ltYm9scy5oIg0KIyAxICIvaG9tZS9jb21waWxlci9idWlsZC1nbGliYy0yLjIuNS1nY2N0ZXN0
L2NvbmZpZy5oIiAxDQojIDU1ICIuLi9pbmNsdWRlL2xpYmMtc3ltYm9scy5oIiAyDQojIDIgIjxj
b21tYW5kIGxpbmU+IiAyDQojIDEgInN0cmNvbGwuYyINCiMgMjAgInN0cmNvbGwuYyINCiMgMSAi
Li4vaW5jbHVkZS9hc3NlcnQuaCIgMQ0KIyAxICIuLi9hc3NlcnQvYXNzZXJ0LmgiIDENCiMgMzYg
Ii4uL2Fzc2VydC9hc3NlcnQuaCINCiMgMSAiLi4vaW5jbHVkZS9mZWF0dXJlcy5oIiAxDQojIDI4
MyAiLi4vaW5jbHVkZS9mZWF0dXJlcy5oIg0KIyAxICIuLi9pbmNsdWRlL3N5cy9jZGVmcy5oIiAx
DQojIDEgIi4uL21pc2Mvc3lzL2NkZWZzLmgiIDENCiMgMiAiLi4vaW5jbHVkZS9zeXMvY2RlZnMu
aCIgMg0KIyAyODQgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMg0KIyAzNyAiLi4vYXNzZXJ0L2Fz
c2VydC5oIiAyDQojIDY1ICIuLi9hc3NlcnQvYXNzZXJ0LmgiDQoNCg0KDQpleHRlcm4gdm9pZCBf
X2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsIF9f
Y29uc3QgY2hhciAqX19mdW5jdGlvbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOw0KDQoNCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3BlcnJvcl9mYWlsIChpbnQgX19lcnJudW0s
IF9fY29uc3QgY2hhciAqX19maWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX2xpbmUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7DQoNCg0KDQoNCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25zdCBjaGFyICpfX2Fzc2Vy
dGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQ0KICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7DQoNCg0KDQojIDIgIi4uL2luY2x1ZGUvYXNzZXJ0LmgiIDINCiMg
MjEgInN0cmNvbGwuYyIgMg0KIyAxICIuLi9pbmNsdWRlL2xhbmdpbmZvLmgiIDENCiMgMSAiLi4v
bG9jYWxlL2xhbmdpbmZvLmgiIDENCiMgMjQgIi4uL2xvY2FsZS9sYW5naW5mby5oIg0KIyAxICIu
Li9pbmNsdWRlL25sX3R5cGVzLmgiIDENCiMgMSAiLi4vY2F0Z2V0cy9ubF90eXBlcy5oIiAxDQoj
IDMxICIuLi9jYXRnZXRzL25sX3R5cGVzLmgiDQoNCg0KDQp0eXBlZGVmIHZvaWQgKm5sX2NhdGQ7
DQoNCg0KdHlwZWRlZiBpbnQgbmxfaXRlbTsNCg0KDQpleHRlcm4gbmxfY2F0ZCBjYXRvcGVuIChf
X2NvbnN0IGNoYXIgKl9fY2F0X25hbWUsIGludCBfX2ZsYWcpIDsNCg0KDQoNCmV4dGVybiBjaGFy
ICpjYXRnZXRzIChubF9jYXRkIF9fY2F0YWxvZywgaW50IF9fc2V0LCBpbnQgX19udW1iZXIsDQog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3N0cmluZykgOw0KDQoNCmV4dGVy
biBpbnQgY2F0Y2xvc2UgKG5sX2NhdGQgX19jYXRhbG9nKSA7DQoNCg0KIyAyICIuLi9pbmNsdWRl
L25sX3R5cGVzLmgiIDINCiMgMjUgIi4uL2xvY2FsZS9sYW5naW5mby5oIiAyDQoNCiMgMSAiLi4v
aW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAxDQojIDEgIi4uL2xvY2FsZS9iaXRzL2xvY2FsZS5oIiAx
DQojIDI3ICIuLi9sb2NhbGUvYml0cy9sb2NhbGUuaCINCmVudW0NCnsNCiAgX19MQ19DVFlQRSA9
IDAsDQogIF9fTENfTlVNRVJJQyA9IDEsDQogIF9fTENfVElNRSA9IDIsDQogIF9fTENfQ09MTEFU
RSA9IDMsDQogIF9fTENfTU9ORVRBUlkgPSA0LA0KICBfX0xDX01FU1NBR0VTID0gNSwNCiAgX19M
Q19BTEwgPSA2LA0KICBfX0xDX1BBUEVSID0gNywNCiAgX19MQ19OQU1FID0gOCwNCiAgX19MQ19B
RERSRVNTID0gOSwNCiAgX19MQ19URUxFUEhPTkUgPSAxMCwNCiAgX19MQ19NRUFTVVJFTUVOVCA9
IDExLA0KICBfX0xDX0lERU5USUZJQ0FUSU9OID0gMTINCn07DQojIDIgIi4uL2luY2x1ZGUvYml0
cy9sb2NhbGUuaCIgMg0KIyAyNyAiLi4vbG9jYWxlL2xhbmdpbmZvLmgiIDINCg0KDQoNCiMgNDMg
Ii4uL2xvY2FsZS9sYW5naW5mby5oIg0KZW51bQ0Kew0KDQoNCg0KICBBQkRBWV8xID0gKCgoX19M
Q19USU1FKSA8PCAxNikgfCAoMCkpLA0KDQogIEFCREFZXzIsDQoNCiAgQUJEQVlfMywNCg0KICBB
QkRBWV80LA0KDQogIEFCREFZXzUsDQoNCiAgQUJEQVlfNiwNCg0KICBBQkRBWV83LA0KDQoNCg0K
ICBEQVlfMSwNCg0KICBEQVlfMiwNCg0KICBEQVlfMywNCg0KICBEQVlfNCwNCg0KICBEQVlfNSwN
Cg0KICBEQVlfNiwNCg0KICBEQVlfNywNCg0KDQoNCiAgQUJNT05fMSwNCg0KICBBQk1PTl8yLA0K
DQogIEFCTU9OXzMsDQoNCiAgQUJNT05fNCwNCg0KICBBQk1PTl81LA0KDQogIEFCTU9OXzYsDQoN
CiAgQUJNT05fNywNCg0KICBBQk1PTl84LA0KDQogIEFCTU9OXzksDQoNCiAgQUJNT05fMTAsDQoN
CiAgQUJNT05fMTEsDQoNCiAgQUJNT05fMTIsDQoNCg0KDQogIE1PTl8xLA0KDQogIE1PTl8yLA0K
DQogIE1PTl8zLA0KDQogIE1PTl80LA0KDQogIE1PTl81LA0KDQogIE1PTl82LA0KDQogIE1PTl83
LA0KDQogIE1PTl84LA0KDQogIE1PTl85LA0KDQogIE1PTl8xMCwNCg0KICBNT05fMTEsDQoNCiAg
TU9OXzEyLA0KDQoNCiAgQU1fU1RSLA0KDQogIFBNX1NUUiwNCg0KDQogIERfVF9GTVQsDQoNCiAg
RF9GTVQsDQoNCiAgVF9GTVQsDQoNCiAgVF9GTVRfQU1QTSwNCg0KDQogIEVSQSwNCg0KICBfX0VS
QV9ZRUFSLA0KDQoNCg0KICBFUkFfRF9GTVQsDQoNCiAgQUxUX0RJR0lUUywNCg0KICBFUkFfRF9U
X0ZNVCwNCg0KICBFUkFfVF9GTVQsDQoNCg0KICBfTkxfVElNRV9FUkFfTlVNX0VOVFJJRVMsDQog
IF9OTF9USU1FX0VSQV9FTlRSSUVTLA0KDQogIF9OTF9XQUJEQVlfMSwNCiAgX05MX1dBQkRBWV8y
LA0KICBfTkxfV0FCREFZXzMsDQogIF9OTF9XQUJEQVlfNCwNCiAgX05MX1dBQkRBWV81LA0KICBf
TkxfV0FCREFZXzYsDQogIF9OTF9XQUJEQVlfNywNCg0KDQogIF9OTF9XREFZXzEsDQogIF9OTF9X
REFZXzIsDQogIF9OTF9XREFZXzMsDQogIF9OTF9XREFZXzQsDQogIF9OTF9XREFZXzUsDQogIF9O
TF9XREFZXzYsDQogIF9OTF9XREFZXzcsDQoNCg0KICBfTkxfV0FCTU9OXzEsDQogIF9OTF9XQUJN
T05fMiwNCiAgX05MX1dBQk1PTl8zLA0KICBfTkxfV0FCTU9OXzQsDQogIF9OTF9XQUJNT05fNSwN
CiAgX05MX1dBQk1PTl82LA0KICBfTkxfV0FCTU9OXzcsDQogIF9OTF9XQUJNT05fOCwNCiAgX05M
X1dBQk1PTl85LA0KICBfTkxfV0FCTU9OXzEwLA0KICBfTkxfV0FCTU9OXzExLA0KICBfTkxfV0FC
TU9OXzEyLA0KDQoNCiAgX05MX1dNT05fMSwNCiAgX05MX1dNT05fMiwNCiAgX05MX1dNT05fMywN
CiAgX05MX1dNT05fNCwNCiAgX05MX1dNT05fNSwNCiAgX05MX1dNT05fNiwNCiAgX05MX1dNT05f
NywNCiAgX05MX1dNT05fOCwNCiAgX05MX1dNT05fOSwNCiAgX05MX1dNT05fMTAsDQogIF9OTF9X
TU9OXzExLA0KICBfTkxfV01PTl8xMiwNCg0KICBfTkxfV0FNX1NUUiwNCiAgX05MX1dQTV9TVFIs
DQoNCiAgX05MX1dEX1RfRk1ULA0KICBfTkxfV0RfRk1ULA0KICBfTkxfV1RfRk1ULA0KICBfTkxf
V1RfRk1UX0FNUE0sDQoNCiAgX05MX1dFUkFfWUVBUiwNCiAgX05MX1dFUkFfRF9GTVQsDQogIF9O
TF9XQUxUX0RJR0lUUywNCiAgX05MX1dFUkFfRF9UX0ZNVCwNCiAgX05MX1dFUkFfVF9GTVQsDQoN
CiAgX05MX1RJTUVfV0VFS19OREFZUywNCiAgX05MX1RJTUVfV0VFS18xU1REQVksDQogIF9OTF9U
SU1FX1dFRUtfMVNUV0VFSywNCiAgX05MX1RJTUVfRklSU1RfV0VFS0RBWSwNCiAgX05MX1RJTUVf
RklSU1RfV09SS0RBWSwNCiAgX05MX1RJTUVfQ0FMX0RJUkVDVElPTiwNCiAgX05MX1RJTUVfVElN
RVpPTkUsDQoNCiAgX0RBVEVfRk1ULA0KDQogIF9OTF9XX0RBVEVfRk1ULA0KDQogIF9OTF9USU1F
X0NPREVTRVQsDQoNCiAgX05MX05VTV9MQ19USU1FLA0KDQoNCg0KDQogIF9OTF9DT0xMQVRFX05S
VUxFUyA9ICgoKF9fTENfQ09MTEFURSkgPDwgMTYpIHwgKDApKSwNCiAgX05MX0NPTExBVEVfUlVM
RVNFVFMsDQogIF9OTF9DT0xMQVRFX1RBQkxFTUIsDQogIF9OTF9DT0xMQVRFX1dFSUdIVE1CLA0K
ICBfTkxfQ09MTEFURV9FWFRSQU1CLA0KICBfTkxfQ09MTEFURV9JTkRJUkVDVE1CLA0KICBfTkxf
Q09MTEFURV9HQVAxLA0KICBfTkxfQ09MTEFURV9HQVAyLA0KICBfTkxfQ09MTEFURV9HQVAzLA0K
ICBfTkxfQ09MTEFURV9UQUJMRVdDLA0KICBfTkxfQ09MTEFURV9XRUlHSFRXQywNCiAgX05MX0NP
TExBVEVfRVhUUkFXQywNCiAgX05MX0NPTExBVEVfSU5ESVJFQ1RXQywNCiAgX05MX0NPTExBVEVf
U1lNQl9IQVNIX1NJWkVNQiwNCiAgX05MX0NPTExBVEVfU1lNQl9UQUJMRU1CLA0KICBfTkxfQ09M
TEFURV9TWU1CX0VYVFJBTUIsDQogIF9OTF9DT0xMQVRFX0NPTExTRVFNQiwNCiAgX05MX0NPTExB
VEVfQ09MTFNFUVdDLA0KICBfTkxfQ09MTEFURV9DT0RFU0VULA0KICBfTkxfTlVNX0xDX0NPTExB
VEUsDQoNCg0KDQoNCiAgX05MX0NUWVBFX0NMQVNTID0gKCgoX19MQ19DVFlQRSkgPDwgMTYpIHwg
KDApKSwNCiAgX05MX0NUWVBFX1RPVVBQRVIsDQogIF9OTF9DVFlQRV9HQVAxLA0KICBfTkxfQ1RZ
UEVfVE9MT1dFUiwNCiAgX05MX0NUWVBFX0dBUDIsDQogIF9OTF9DVFlQRV9DTEFTUzMyLA0KICBf
TkxfQ1RZUEVfR0FQMywNCiAgX05MX0NUWVBFX0dBUDQsDQogIF9OTF9DVFlQRV9HQVA1LA0KICBf
TkxfQ1RZUEVfR0FQNiwNCiAgX05MX0NUWVBFX0NMQVNTX05BTUVTLA0KICBfTkxfQ1RZUEVfTUFQ
X05BTUVTLA0KICBfTkxfQ1RZUEVfV0lEVEgsDQogIF9OTF9DVFlQRV9NQl9DVVJfTUFYLA0KICBf
TkxfQ1RZUEVfQ09ERVNFVF9OQU1FLA0KICBDT0RFU0VUID0gX05MX0NUWVBFX0NPREVTRVRfTkFN
RSwNCg0KICBfTkxfQ1RZUEVfVE9VUFBFUjMyLA0KICBfTkxfQ1RZUEVfVE9MT1dFUjMyLA0KICBf
TkxfQ1RZUEVfQ0xBU1NfT0ZGU0VULA0KICBfTkxfQ1RZUEVfTUFQX09GRlNFVCwNCiAgX05MX0NU
WVBFX0lORElHSVRTX01CX0xFTiwNCiAgX05MX0NUWVBFX0lORElHSVRTMF9NQiwNCiAgX05MX0NU
WVBFX0lORElHSVRTMV9NQiwNCiAgX05MX0NUWVBFX0lORElHSVRTMl9NQiwNCiAgX05MX0NUWVBF
X0lORElHSVRTM19NQiwNCiAgX05MX0NUWVBFX0lORElHSVRTNF9NQiwNCiAgX05MX0NUWVBFX0lO
RElHSVRTNV9NQiwNCiAgX05MX0NUWVBFX0lORElHSVRTNl9NQiwNCiAgX05MX0NUWVBFX0lORElH
SVRTN19NQiwNCiAgX05MX0NUWVBFX0lORElHSVRTOF9NQiwNCiAgX05MX0NUWVBFX0lORElHSVRT
OV9NQiwNCiAgX05MX0NUWVBFX0lORElHSVRTX1dDX0xFTiwNCiAgX05MX0NUWVBFX0lORElHSVRT
MF9XQywNCiAgX05MX0NUWVBFX0lORElHSVRTMV9XQywNCiAgX05MX0NUWVBFX0lORElHSVRTMl9X
QywNCiAgX05MX0NUWVBFX0lORElHSVRTM19XQywNCiAgX05MX0NUWVBFX0lORElHSVRTNF9XQywN
CiAgX05MX0NUWVBFX0lORElHSVRTNV9XQywNCiAgX05MX0NUWVBFX0lORElHSVRTNl9XQywNCiAg
X05MX0NUWVBFX0lORElHSVRTN19XQywNCiAgX05MX0NUWVBFX0lORElHSVRTOF9XQywNCiAgX05M
X0NUWVBFX0lORElHSVRTOV9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUMF9NQiwNCiAgX05MX0NU
WVBFX09VVERJR0lUMV9NQiwNCiAgX05MX0NUWVBFX09VVERJR0lUMl9NQiwNCiAgX05MX0NUWVBF
X09VVERJR0lUM19NQiwNCiAgX05MX0NUWVBFX09VVERJR0lUNF9NQiwNCiAgX05MX0NUWVBFX09V
VERJR0lUNV9NQiwNCiAgX05MX0NUWVBFX09VVERJR0lUNl9NQiwNCiAgX05MX0NUWVBFX09VVERJ
R0lUN19NQiwNCiAgX05MX0NUWVBFX09VVERJR0lUOF9NQiwNCiAgX05MX0NUWVBFX09VVERJR0lU
OV9NQiwNCiAgX05MX0NUWVBFX09VVERJR0lUMF9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUMV9X
QywNCiAgX05MX0NUWVBFX09VVERJR0lUMl9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUM19XQywN
CiAgX05MX0NUWVBFX09VVERJR0lUNF9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUNV9XQywNCiAg
X05MX0NUWVBFX09VVERJR0lUNl9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUN19XQywNCiAgX05M
X0NUWVBFX09VVERJR0lUOF9XQywNCiAgX05MX0NUWVBFX09VVERJR0lUOV9XQywNCiAgX05MX0NU
WVBFX1RSQU5TTElUX1RBQl9TSVpFLA0KICBfTkxfQ1RZUEVfVFJBTlNMSVRfRlJPTV9JRFgsDQog
IF9OTF9DVFlQRV9UUkFOU0xJVF9GUk9NX1RCTCwNCiAgX05MX0NUWVBFX1RSQU5TTElUX1RPX0lE
WCwNCiAgX05MX0NUWVBFX1RSQU5TTElUX1RPX1RCTCwNCiAgX05MX0NUWVBFX1RSQU5TTElUX0RF
RkFVTFRfTUlTU0lOR19MRU4sDQogIF9OTF9DVFlQRV9UUkFOU0xJVF9ERUZBVUxUX01JU1NJTkcs
DQogIF9OTF9DVFlQRV9UUkFOU0xJVF9JR05PUkVfTEVOLA0KICBfTkxfQ1RZUEVfVFJBTlNMSVRf
SUdOT1JFLA0KICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEsDQogIF9OTF9DVFlQRV9FWFRSQV9NQVBf
MiwNCiAgX05MX0NUWVBFX0VYVFJBX01BUF8zLA0KICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzQsDQog
IF9OTF9DVFlQRV9FWFRSQV9NQVBfNSwNCiAgX05MX0NUWVBFX0VYVFJBX01BUF82LA0KICBfTkxf
Q1RZUEVfRVhUUkFfTUFQXzcsDQogIF9OTF9DVFlQRV9FWFRSQV9NQVBfOCwNCiAgX05MX0NUWVBF
X0VYVFJBX01BUF85LA0KICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEwLA0KICBfTkxfQ1RZUEVfRVhU
UkFfTUFQXzExLA0KICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzEyLA0KICBfTkxfQ1RZUEVfRVhUUkFf
TUFQXzEzLA0KICBfTkxfQ1RZUEVfRVhUUkFfTUFQXzE0LA0KICBfTkxfTlVNX0xDX0NUWVBFLA0K
DQoNCg0KDQogIF9fSU5UX0NVUlJfU1lNQk9MID0gKCgoX19MQ19NT05FVEFSWSkgPDwgMTYpIHwg
KDApKSwNCg0KDQoNCiAgX19DVVJSRU5DWV9TWU1CT0wsDQoNCg0KDQogIF9fTU9OX0RFQ0lNQUxf
UE9JTlQsDQoNCg0KDQogIF9fTU9OX1RIT1VTQU5EU19TRVAsDQoNCg0KDQogIF9fTU9OX0dST1VQ
SU5HLA0KDQoNCg0KICBfX1BPU0lUSVZFX1NJR04sDQoNCg0KDQogIF9fTkVHQVRJVkVfU0lHTiwN
Cg0KDQoNCiAgX19JTlRfRlJBQ19ESUdJVFMsDQoNCg0KDQogIF9fRlJBQ19ESUdJVFMsDQoNCg0K
DQogIF9fUF9DU19QUkVDRURFUywNCg0KDQoNCiAgX19QX1NFUF9CWV9TUEFDRSwNCg0KDQoNCiAg
X19OX0NTX1BSRUNFREVTLA0KDQoNCg0KICBfX05fU0VQX0JZX1NQQUNFLA0KDQoNCg0KICBfX1Bf
U0lHTl9QT1NOLA0KDQoNCg0KICBfX05fU0lHTl9QT1NOLA0KDQoNCg0KICBfTkxfTU9ORVRBUllf
Q1JOQ1lTVFIsDQoNCiAgX19JTlRfUF9DU19QUkVDRURFUywNCg0KDQoNCiAgX19JTlRfUF9TRVBf
QllfU1BBQ0UsDQoNCg0KDQogIF9fSU5UX05fQ1NfUFJFQ0VERVMsDQoNCg0KDQogIF9fSU5UX05f
U0VQX0JZX1NQQUNFLA0KDQoNCg0KICBfX0lOVF9QX1NJR05fUE9TTiwNCg0KDQoNCiAgX19JTlRf
Tl9TSUdOX1BPU04sDQoNCg0KDQogIF9OTF9NT05FVEFSWV9EVU9fSU5UX0NVUlJfU1lNQk9MLA0K
ICBfTkxfTU9ORVRBUllfRFVPX0NVUlJFTkNZX1NZTUJPTCwNCiAgX05MX01PTkVUQVJZX0RVT19J
TlRfRlJBQ19ESUdJVFMsDQogIF9OTF9NT05FVEFSWV9EVU9fRlJBQ19ESUdJVFMsDQogIF9OTF9N
T05FVEFSWV9EVU9fUF9DU19QUkVDRURFUywNCiAgX05MX01PTkVUQVJZX0RVT19QX1NFUF9CWV9T
UEFDRSwNCiAgX05MX01PTkVUQVJZX0RVT19OX0NTX1BSRUNFREVTLA0KICBfTkxfTU9ORVRBUllf
RFVPX05fU0VQX0JZX1NQQUNFLA0KICBfTkxfTU9ORVRBUllfRFVPX0lOVF9QX0NTX1BSRUNFREVT
LA0KICBfTkxfTU9ORVRBUllfRFVPX0lOVF9QX1NFUF9CWV9TUEFDRSwNCiAgX05MX01PTkVUQVJZ
X0RVT19JTlRfTl9DU19QUkVDRURFUywNCiAgX05MX01PTkVUQVJZX0RVT19JTlRfTl9TRVBfQllf
U1BBQ0UsDQogIF9OTF9NT05FVEFSWV9EVU9fUF9TSUdOX1BPU04sDQogIF9OTF9NT05FVEFSWV9E
VU9fTl9TSUdOX1BPU04sDQogIF9OTF9NT05FVEFSWV9EVU9fSU5UX1BfU0lHTl9QT1NOLA0KICBf
TkxfTU9ORVRBUllfRFVPX0lOVF9OX1NJR05fUE9TTiwNCiAgX05MX01PTkVUQVJZX1VOT19WQUxJ
RF9GUk9NLA0KICBfTkxfTU9ORVRBUllfVU5PX1ZBTElEX1RPLA0KICBfTkxfTU9ORVRBUllfRFVP
X1ZBTElEX0ZST00sDQogIF9OTF9NT05FVEFSWV9EVU9fVkFMSURfVE8sDQogIF9OTF9NT05FVEFS
WV9DT05WRVJTSU9OX1JBVEUsDQogIF9OTF9NT05FVEFSWV9ERUNJTUFMX1BPSU5UX1dDLA0KICBf
TkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywNCiAgX05MX01PTkVUQVJZX0NPREVTRVQsDQog
IF9OTF9OVU1fTENfTU9ORVRBUlksDQoNCg0KDQogIF9fREVDSU1BTF9QT0lOVCA9ICgoKF9fTENf
TlVNRVJJQykgPDwgMTYpIHwgKDApKSwNCg0KDQoNCiAgUkFESVhDSEFSID0gX19ERUNJTUFMX1BP
SU5ULA0KDQogIF9fVEhPVVNBTkRTX1NFUCwNCg0KDQoNCiAgVEhPVVNFUCA9IF9fVEhPVVNBTkRT
X1NFUCwNCg0KICBfX0dST1VQSU5HLA0KDQoNCg0KICBfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5U
X1dDLA0KICBfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLA0KICBfTkxfTlVNRVJJQ19DT0RF
U0VULA0KICBfTkxfTlVNX0xDX05VTUVSSUMsDQoNCiAgX19ZRVNFWFBSID0gKCgoX19MQ19NRVNT
QUdFUykgPDwgMTYpIHwgKDApKSwNCg0KICBfX05PRVhQUiwNCg0KICBfX1lFU1NUUiwNCg0KDQoN
CiAgX19OT1NUUiwNCg0KDQoNCiAgX05MX01FU1NBR0VTX0NPREVTRVQsDQogIF9OTF9OVU1fTENf
TUVTU0FHRVMsDQoNCiAgX05MX1BBUEVSX0hFSUdIVCA9ICgoKF9fTENfUEFQRVIpIDw8IDE2KSB8
ICgwKSksDQogIF9OTF9QQVBFUl9XSURUSCwNCiAgX05MX1BBUEVSX0NPREVTRVQsDQogIF9OTF9O
VU1fTENfUEFQRVIsDQoNCiAgX05MX05BTUVfTkFNRV9GTVQgPSAoKChfX0xDX05BTUUpIDw8IDE2
KSB8ICgwKSksDQogIF9OTF9OQU1FX05BTUVfR0VOLA0KICBfTkxfTkFNRV9OQU1FX01SLA0KICBf
TkxfTkFNRV9OQU1FX01SUywNCiAgX05MX05BTUVfTkFNRV9NSVNTLA0KICBfTkxfTkFNRV9OQU1F
X01TLA0KICBfTkxfTkFNRV9DT0RFU0VULA0KICBfTkxfTlVNX0xDX05BTUUsDQoNCiAgX05MX0FE
RFJFU1NfUE9TVEFMX0ZNVCA9ICgoKF9fTENfQUREUkVTUykgPDwgMTYpIHwgKDApKSwNCiAgX05M
X0FERFJFU1NfQ09VTlRSWV9OQU1FLA0KICBfTkxfQUREUkVTU19DT1VOVFJZX1BPU1QsDQogIF9O
TF9BRERSRVNTX0NPVU5UUllfQUIyLA0KICBfTkxfQUREUkVTU19DT1VOVFJZX0FCMywNCiAgX05M
X0FERFJFU1NfQ09VTlRSWV9DQVIsDQogIF9OTF9BRERSRVNTX0NPVU5UUllfTlVNLA0KICBfTkxf
QUREUkVTU19DT1VOVFJZX0lTQk4sDQogIF9OTF9BRERSRVNTX0xBTkdfTkFNRSwNCiAgX05MX0FE
RFJFU1NfTEFOR19BQiwNCiAgX05MX0FERFJFU1NfTEFOR19URVJNLA0KICBfTkxfQUREUkVTU19M
QU5HX0xJQiwNCiAgX05MX0FERFJFU1NfQ09ERVNFVCwNCiAgX05MX05VTV9MQ19BRERSRVNTLA0K
DQogIF9OTF9URUxFUEhPTkVfVEVMX0lOVF9GTVQgPSAoKChfX0xDX1RFTEVQSE9ORSkgPDwgMTYp
IHwgKDApKSwNCiAgX05MX1RFTEVQSE9ORV9URUxfRE9NX0ZNVCwNCiAgX05MX1RFTEVQSE9ORV9J
TlRfU0VMRUNULA0KICBfTkxfVEVMRVBIT05FX0lOVF9QUkVGSVgsDQogIF9OTF9URUxFUEhPTkVf
Q09ERVNFVCwNCiAgX05MX05VTV9MQ19URUxFUEhPTkUsDQoNCiAgX05MX01FQVNVUkVNRU5UX01F
QVNVUkVNRU5UID0gKCgoX19MQ19NRUFTVVJFTUVOVCkgPDwgMTYpIHwgKDApKSwNCiAgX05MX01F
QVNVUkVNRU5UX0NPREVTRVQsDQogIF9OTF9OVU1fTENfTUVBU1VSRU1FTlQsDQoNCiAgX05MX0lE
RU5USUZJQ0FUSU9OX1RJVExFID0gKCgoX19MQ19JREVOVElGSUNBVElPTikgPDwgMTYpIHwgKDAp
KSwNCiAgX05MX0lERU5USUZJQ0FUSU9OX1NPVVJDRSwNCiAgX05MX0lERU5USUZJQ0FUSU9OX0FE
RFJFU1MsDQogIF9OTF9JREVOVElGSUNBVElPTl9DT05UQUNULA0KICBfTkxfSURFTlRJRklDQVRJ
T05fRU1BSUwsDQogIF9OTF9JREVOVElGSUNBVElPTl9URUwsDQogIF9OTF9JREVOVElGSUNBVElP
Tl9GQVgsDQogIF9OTF9JREVOVElGSUNBVElPTl9MQU5HVUFHRSwNCiAgX05MX0lERU5USUZJQ0FU
SU9OX1RFUlJJVE9SWSwNCiAgX05MX0lERU5USUZJQ0FUSU9OX0FVRElFTkNFLA0KICBfTkxfSURF
TlRJRklDQVRJT05fQVBQTElDQVRJT04sDQogIF9OTF9JREVOVElGSUNBVElPTl9BQkJSRVZJQVRJ
T04sDQogIF9OTF9JREVOVElGSUNBVElPTl9SRVZJU0lPTiwNCiAgX05MX0lERU5USUZJQ0FUSU9O
X0RBVEUsDQogIF9OTF9JREVOVElGSUNBVElPTl9DQVRFR09SWSwNCiAgX05MX0lERU5USUZJQ0FU
SU9OX0NPREVTRVQsDQogIF9OTF9OVU1fTENfSURFTlRJRklDQVRJT04sDQoNCg0KICBfTkxfTlVN
DQp9Ow0KIyA1NzUgIi4uL2xvY2FsZS9sYW5naW5mby5oIg0KZXh0ZXJuIGNoYXIgKm5sX2xhbmdp
bmZvIChubF9pdGVtIF9faXRlbSkgOw0KDQoNCg0KDQoNCg0KDQojIDEgIi4uL2luY2x1ZGUveGxv
Y2FsZS5oIiAxDQojIDEgIi4uL2xvY2FsZS94bG9jYWxlLmgiIDENCiMgMjggIi4uL2xvY2FsZS94
bG9jYWxlLmgiDQp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QNCnsNCg0KICBzdHJ1Y3Qg
bG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107DQoNCg0KICBjb25zdCB1bnNpZ25lZCBzaG9ydCBp
bnQgKl9fY3R5cGVfYjsNCiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7DQogIGNvbnN0IGlu
dCAqX19jdHlwZV90b3VwcGVyOw0KfSAqX19sb2NhbGVfdDsNCiMgMiAiLi4vaW5jbHVkZS94bG9j
YWxlLmgiIDINCiMgNTg0ICIuLi9sb2NhbGUvbGFuZ2luZm8uaCIgMg0KDQoNCmV4dGVybiBjaGFy
ICpfX25sX2xhbmdpbmZvX2wgKG5sX2l0ZW0gX19pdGVtLCBfX2xvY2FsZV90IGwpOw0KDQoNCg0K
IyAyICIuLi9pbmNsdWRlL2xhbmdpbmZvLmgiIDINCiMgMjIgInN0cmNvbGwuYyIgMg0KIyAxICIu
Li9pbmNsdWRlL2xvY2FsZS5oIiAxDQoNCiMgMSAiLi4vbG9jYWxlL2xvY2FsZS5oIiAxDQojIDI5
ICIuLi9sb2NhbGUvbG9jYWxlLmgiDQojIDEgIi91c3IvbGliL2djYy1saWIvcG93ZXJwYy11bmtu
b3duLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDMwICIuLi9sb2NhbGUv
bG9jYWxlLmgiIDINCiMgMSAiLi4vaW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAxDQojIDEgIi4uL2xv
Y2FsZS9iaXRzL2xvY2FsZS5oIiAxDQojIDIgIi4uL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMg0K
IyAzMSAiLi4vbG9jYWxlL2xvY2FsZS5oIiAyDQoNCg0KIyA1MiAiLi4vbG9jYWxlL2xvY2FsZS5o
Ig0Kc3RydWN0IGxjb252DQp7DQoNCg0KICBjaGFyICpkZWNpbWFsX3BvaW50Ow0KICBjaGFyICp0
aG91c2FuZHNfc2VwOw0KDQoNCg0KDQoNCiAgY2hhciAqZ3JvdXBpbmc7DQoNCg0KDQoNCg0KICBj
aGFyICppbnRfY3Vycl9zeW1ib2w7DQogIGNoYXIgKmN1cnJlbmN5X3N5bWJvbDsNCiAgY2hhciAq
bW9uX2RlY2ltYWxfcG9pbnQ7DQogIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOw0KICBjaGFyICpt
b25fZ3JvdXBpbmc7DQogIGNoYXIgKnBvc2l0aXZlX3NpZ247DQogIGNoYXIgKm5lZ2F0aXZlX3Np
Z247DQogIGNoYXIgaW50X2ZyYWNfZGlnaXRzOw0KICBjaGFyIGZyYWNfZGlnaXRzOw0KDQogIGNo
YXIgcF9jc19wcmVjZWRlczsNCg0KICBjaGFyIHBfc2VwX2J5X3NwYWNlOw0KDQogIGNoYXIgbl9j
c19wcmVjZWRlczsNCg0KICBjaGFyIG5fc2VwX2J5X3NwYWNlOw0KDQoNCg0KDQoNCg0KICBjaGFy
IHBfc2lnbl9wb3NuOw0KICBjaGFyIG5fc2lnbl9wb3NuOw0KDQoNCiAgY2hhciBpbnRfcF9jc19w
cmVjZWRlczsNCg0KICBjaGFyIGludF9wX3NlcF9ieV9zcGFjZTsNCg0KICBjaGFyIGludF9uX2Nz
X3ByZWNlZGVzOw0KDQogIGNoYXIgaW50X25fc2VwX2J5X3NwYWNlOw0KDQoNCg0KDQoNCg0KICBj
aGFyIGludF9wX3NpZ25fcG9zbjsNCiAgY2hhciBpbnRfbl9zaWduX3Bvc247DQojIDExOSAiLi4v
bG9jYWxlL2xvY2FsZS5oIg0KfTsNCg0KDQoNCmV4dGVybiBjaGFyICpzZXRsb2NhbGUgKGludCBf
X2NhdGVnb3J5LCBfX2NvbnN0IGNoYXIgKl9fbG9jYWxlKSA7DQoNCg0KZXh0ZXJuIHN0cnVjdCBs
Y29udiAqbG9jYWxlY29udiAodm9pZCkgOw0KIyAxNDEgIi4uL2xvY2FsZS9sb2NhbGUuaCINCiMg
MSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDENCiMgMTQyICIuLi9sb2NhbGUvbG9jYWxlLmgiIDIN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbG9jYWxlX3QgX19uZXdsb2NhbGUgKGludCBfX2NhdGVn
b3J5X21hc2ssIF9fY29uc3QgY2hhciAqX19sb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sb2NhbGVfdCBfX2Jhc2UpIDsNCg0KDQoNCmV4dGVybiBfX2xvY2FsZV90IF9f
ZHVwbG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgOw0KDQoNCg0KZXh0ZXJuIHZvaWQgX19m
cmVlbG9jYWxlIChfX2xvY2FsZV90IF9fZGF0YXNldCkgOw0KDQoNCg0KIyAzICIuLi9pbmNsdWRl
L2xvY2FsZS5oIiAyDQoNCg0KZXh0ZXJuIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QgX25sX0NfbG9j
b2JqOw0KDQoNCmV4dGVybiBzdHJ1Y3QgbGNvbnYgKl9fbG9jYWxlY29udiAodm9pZCk7DQojIDIz
ICJzdHJjb2xsLmMiIDINCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9wb3dlcnBjLXVua25vd24tbGlu
dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMNCiMgMTQ3ICIvdXNyL2xpYi9nY2MtbGli
L3Bvd2VycGMtdW5rbm93bi1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVk
ZWYgaW50IHB0cmRpZmZfdDsNCiMgMjAxICIvdXNyL2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93
bi1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVkZWYgdW5zaWduZWQgaW50
IHNpemVfdDsNCiMgMjk0ICIvdXNyL2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93bi1saW51eC1n
bnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMNCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsNCiMg
MjQgInN0cmNvbGwuYyIgMg0KIyAxICIuLi9zeXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiIDENCiMg
MjcgIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCINCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmlj
L2JpdHMvd2NoYXIuaCIgMQ0KIyAyOCAiLi4vc3lzZGVwcy9nZW5lcmljL3N0ZGludC5oIiAyDQoj
IDEgIi4uL3N5c2RlcHMvd29yZHNpemUtMzIvYml0cy93b3Jkc2l6ZS5oIiAxDQojIDI5ICIuLi9z
eXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiIDINCiMgMzcgIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRp
bnQuaCINCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50OF90Ow0KdHlwZWRlZiBzaG9ydCBpbnQgaW50
MTZfdDsNCnR5cGVkZWYgaW50IGludDMyX3Q7DQoNCg0KDQpfX2V4dGVuc2lvbl9fDQp0eXBlZGVm
IGxvbmcgbG9uZyBpbnQgaW50NjRfdDsNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVp
bnQ4X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsNCg0KdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDMyX3Q7DQoNCg0KDQoNCg0KX19leHRlbnNpb25fXw0KdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90Ow0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzaWdu
ZWQgY2hhciBpbnRfbGVhc3Q4X3Q7DQp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Ow0K
dHlwZWRlZiBpbnQgaW50X2xlYXN0MzJfdDsNCg0KDQoNCl9fZXh0ZW5zaW9uX18NCnR5cGVkZWYg
bG9uZyBsb25nIGludCBpbnRfbGVhc3Q2NF90Ow0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVpbnRfbGVhc3Q4X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZf
dDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfbGVhc3QzMl90Ow0KDQoNCg0KX19leHRlbnNp
b25fXw0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90Ow0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFzdDhfdDsNCg0KDQoNCg0KDQp0eXBl
ZGVmIGludCBpbnRfZmFzdDE2X3Q7DQp0eXBlZGVmIGludCBpbnRfZmFzdDMyX3Q7DQpfX2V4dGVu
c2lvbl9fDQp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50X2Zhc3Q2NF90Ow0KDQoNCg0KdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFzdDhfdDsNCg0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVk
IGludCB1aW50X2Zhc3QxNl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsN
Cl9fZXh0ZW5zaW9uX18NCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50X2Zhc3Q2
NF90Ow0KIyAxMjYgIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCINCnR5cGVkZWYgaW50IGlu
dHB0cl90Ow0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsNCiMgMTM4ICIuLi9z
eXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiDQpfX2V4dGVuc2lvbl9fDQp0eXBlZGVmIGxvbmcgbG9u
ZyBpbnQgaW50bWF4X3Q7DQpfX2V4dGVuc2lvbl9fDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgdWludG1heF90Ow0KIyAyNSAic3RyY29sbC5jIiAyDQojIDEgIi4uL2luY2x1ZGUvc3Rk
bGliLmgiIDENCg0KDQoNCg0KDQoNCiMgMSAiLi4vc3RkbGliL3N0ZGxpYi5oIiAxDQojIDMzICIu
Li9zdGRsaWIvc3RkbGliLmgiDQojIDEgIi91c3IvbGliL2djYy1saWIvcG93ZXJwYy11bmtub3du
LWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDM0ICIuLi9zdGRsaWIvc3Rk
bGliLmgiIDINCg0KDQoNCg0KDQoNCg0KDQojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2JpdHMvd2FpdGZsYWdzLmgiIDENCiMgNDMgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMg0KIyAxICIu
Li9zeXNkZXBzL2dlbmVyaWMvYml0cy93YWl0c3RhdHVzLmgiIDENCiMgNjMgIi4uL3N5c2RlcHMv
Z2VuZXJpYy9iaXRzL3dhaXRzdGF0dXMuaCINCiMgMSAiLi4vaW5jbHVkZS9lbmRpYW4uaCIgMQ0K
IyAxICIuLi9zdHJpbmcvZW5kaWFuLmgiIDENCiMgMzcgIi4uL3N0cmluZy9lbmRpYW4uaCINCiMg
MSAiLi4vc3lzZGVwcy9wb3dlcnBjL2JpdHMvZW5kaWFuLmgiIDENCiMgMzggIi4uL3N0cmluZy9l
bmRpYW4uaCIgMg0KIyAyICIuLi9pbmNsdWRlL2VuZGlhbi5oIiAyDQojIDY0ICIuLi9zeXNkZXBz
L2dlbmVyaWMvYml0cy93YWl0c3RhdHVzLmgiIDINCg0KdW5pb24gd2FpdA0KICB7DQogICAgaW50
IHdfc3RhdHVzOw0KICAgIHN0cnVjdA0KICAgICAgew0KDQoNCg0KDQoNCg0KDQogICAgICAgIHVu
c2lnbmVkIGludDoxNjsNCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19yZXRjb2RlOjg7DQogICAg
ICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsNCiAgICAgICAgdW5zaWduZWQgaW50IF9f
d190ZXJtc2lnOjc7DQoNCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7DQogICAgc3RydWN0DQog
ICAgICB7DQoNCg0KDQoNCg0KDQogICAgICAgIHVuc2lnbmVkIGludDoxNjsNCiAgICAgICAgdW5z
aWduZWQgaW50IF9fd19zdG9wc2lnOjg7DQogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHZh
bDo4Ow0KDQogICAgICB9IF9fd2FpdF9zdG9wcGVkOw0KICB9Ow0KIyA0NCAiLi4vc3RkbGliL3N0
ZGxpYi5oIiAyDQojIDY4ICIuLi9zdGRsaWIvc3RkbGliLmgiDQp0eXBlZGVmIHVuaW9uDQogIHsN
CiAgICB1bmlvbiB3YWl0ICpfX3VwdHI7DQogICAgaW50ICpfX2lwdHI7DQogIH0gX19XQUlUX1NU
QVRVUyBfX2F0dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7DQojIDk0ICIuLi9z
dGRsaWIvc3RkbGliLmgiDQp0eXBlZGVmIHN0cnVjdA0KICB7DQogICAgaW50IHF1b3Q7DQogICAg
aW50IHJlbTsNCiAgfSBkaXZfdDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQogIHsNCiAgICBsb25n
IGludCBxdW90Ow0KICAgIGxvbmcgaW50IHJlbTsNCiAgfSBsZGl2X3Q7DQoNCg0KDQoNCg0KX19l
eHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdA0KICB7DQogICAgbG9uZyBsb25nIGludCBxdW90Ow0K
ICAgIGxvbmcgbG9uZyBpbnQgcmVtOw0KICB9IGxsZGl2X3Q7DQojIDEzMyAiLi4vc3RkbGliL3N0
ZGxpYi5oIg0KZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7DQoN
Cg0KDQpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsNCg0KZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0
cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCmV4dGVybiBsb25nIGludCBhdG9sIChf
X2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQpf
X2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQpleHRlcm4gZG91
YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOw0KDQoNCg0KZXh0ZXJuIGZs
b2F0IHN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7DQoNCmV4dGVybiBsb25nIGRv
dWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7DQoNCg0KDQpl
eHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpIDsNCg0KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpDQogICAgIDsNCg0KDQoNCl9f
ZXh0ZW5zaW9uX18NCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsNCg0KX19leHRlbnNpb25fXw0KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQ0KICAgICA7DQoNCg0KDQoNCg0KDQpfX2V4
dGVuc2lvbl9fDQpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsNCg0KX19leHRlbnNpb25fXw0KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpDQogICAgIDsNCiMgMjExICIuLi9zdGRs
aWIvc3RkbGliLmgiDQojIDEgIi4uL2luY2x1ZGUveGxvY2FsZS5oIiAxDQojIDIxMiAiLi4vc3Rk
bGliL3N0ZGxpYi5oIiAyDQoNCg0KDQpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7DQoNCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu
dCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9j
YWxlX3QgX19sb2MpIDsNCg0KX19leHRlbnNpb25fXw0KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19z
dHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykg
Ow0KDQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRv
dWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBf
X2xvY2FsZV90IF9fbG9jKQ0KICAgICA7DQoNCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpDQogICAgIDsNCg0K
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9f
bG9jYWxlX3QgX19sb2MpIDsNCg0KZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGRvdWJsZSBf
X3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBp
bnQgX19ncm91cCkNCiAgICAgOw0KZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApDQogICAgIDsNCmV4
dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX2dyb3VwKSA7DQoNCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5h
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7DQoNCg0KDQpl
eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOw0KDQoN
Cg0KDQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91
cCkgOw0KDQoNCg0KX19leHRlbnNpb25fXw0KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICoNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkNCiAgICAgOw0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gX19pbmxpbmUgZG91YmxlDQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQ0Kew0KICByZXR1cm4gX19zdHJ0
b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOw0KfQ0KZXh0ZXJuIF9faW5saW5lIGxv
bmcgaW50DQpzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLA0KICAgICAgICBpbnQgX19iYXNlKQ0Kew0KICByZXR1cm4gX19z
dHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7DQp9DQpleHRlcm4g
X19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQNCnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLA0KICAgICAgICAgaW50IF9f
YmFzZSkNCnsNCiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsNCn0NCg0KDQpleHRlcm4gX19pbmxpbmUgZmxvYXQNCnN0cnRvZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpDQp7
DQogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7DQp9DQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUNCnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQ0Kew0KICByZXR1cm4gX19z
dHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsNCn0NCg0KDQoNCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQNCnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsDQogICAgICAg
IGludCBfX2Jhc2UpDQp7DQogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7DQp9DQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNp
Z25lZCBsb25nIGxvbmcgaW50DQpzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgICAgIGludCBfX2Jhc2UpDQp7
DQogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOw0KfQ0KDQoNCg0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGlu
dA0Kc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsDQogICAgICAgICBpbnQgX19iYXNlKQ0Kew0KICByZXR1cm4gX19zdHJ0
b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOw0KfQ0KX19leHRlbnNp
b25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludA0Kc3RydG91bGwgKF9f
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwNCiAgICAgICAgICBpbnQgX19iYXNlKQ0Kew0KICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsNCn0NCg0KDQpleHRlcm4gX19pbmxpbmUg
ZG91YmxlDQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikNCnsNCiAgcmV0dXJuIHN0cnRvZCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkpOw0KfQ0KZXh0ZXJuIF9faW5saW5lIGludA0K
YXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpDQp7DQogIHJldHVybiAoaW50KSBzdHJ0b2wgKF9f
bnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7DQp9DQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBpbnQNCmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQ0Kew0KICByZXR1cm4gc3RydG9sIChf
X25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOw0KfQ0KDQoNCl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQNCmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0
cikNCnsNCiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAx
MCk7DQp9DQojIDM4NCAiLi4vc3RkbGliL3N0ZGxpYi5oIg0KZXh0ZXJuIGNoYXIgKmw2NGEgKGxv
bmcgaW50IF9fbikgOw0KDQoNCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9f
cykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KIyAxICIuLi9pbmNsdWRlL3N5cy90
eXBlcy5oIiAxDQojIDEgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAxDQojIDI4ICIuLi9wb3NpeC9z
eXMvdHlwZXMuaCINCg0KDQojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvdHlw
ZXMuaCIgMQ0KIyAyOSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy90eXBlcy5oIg0K
IyAxICIvdXNyL2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93bi1saW51eC1nbnUvMy4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMw0KIyAzMCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy90
eXBlcy5oIiAyDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOw0KdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Ow0K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOw0KDQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90Ow0KX19leHRlbnNpb25fXyB0eXBlZGVm
IGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7DQojIDQ5ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51
eC9iaXRzL3R5cGVzLmgiDQp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Ow0KdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIF9fdWludDhfdDsNCnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Ow0KdHlwZWRlZiBzaWdu
ZWQgaW50IF9faW50MzJfdDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7DQoNCl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7DQpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90Ow0KDQp0
eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7DQoNCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90
Ow0KdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7DQp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsNCnR5
cGVkZWYgX191X2xvbmcgX19pbm9fdDsNCnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsNCnR5cGVk
ZWYgX191X2ludCBfX25saW5rX3Q7DQp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7DQp0eXBlZGVm
IF9fcXVhZF90IF9fbG9mZl90Ow0KdHlwZWRlZiBpbnQgX19waWRfdDsNCnR5cGVkZWYgaW50IF9f
c3NpemVfdDsNCnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7DQp0eXBlZGVmIF9fdV9xdWFkX3Qg
X19ybGltNjRfdDsNCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7DQoNCnR5cGVkZWYgc3RydWN0DQog
IHsNCiAgICBpbnQgX192YWxbMl07DQogIH0gX19mc2lkX3Q7DQoNCg0KdHlwZWRlZiBpbnQgX19k
YWRkcl90Ow0KdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7DQp0eXBlZGVmIGxvbmcgaW50IF9fdGlt
ZV90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Ow0KdHlwZWRlZiBsb25nIGlu
dCBfX3N1c2Vjb25kc190Ow0KdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7DQoNCnR5cGVkZWYg
bG9uZyBpbnQgX19jbG9ja190Ow0KDQoNCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90Ow0KDQoNCnR5
cGVkZWYgaW50IF9fdGltZXJfdDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgaW50IF9fa2V5X3Q7DQoN
Cg0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7DQoNCg0KDQp0eXBlZGVm
IGxvbmcgaW50IF9fYmxrc2l6ZV90Ow0KDQoNCg0KDQp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250
X3Q7DQp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsNCg0KDQp0eXBlZGVmIF9fdV9sb25n
IF9fZnNibGtjbnRfdDsNCnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsNCg0KDQp0
eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsNCnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmls
Y250NjRfdDsNCg0KDQp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90Ow0KDQoNCnR5cGVkZWYg
X19sb2ZmX3QgX19vZmY2NF90Ow0KDQoNCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Ow0K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90Ow0KDQoNCnR5cGVkZWYgaW50
IF9faW50cHRyX3Q7DQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7DQoNCg0K
DQoNCiMgMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL3B0aHJlYWR0eXBl
cy5oIiAxDQojIDIzICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvcHRocmVh
ZHR5cGVzLmgiDQojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2NoZWQuaCIg
MQ0KIyA2OCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zY2hlZC5oIg0Kc3RydWN0
IF9fc2NoZWRfcGFyYW0NCiAgew0KICAgIGludCBfX3NjaGVkX3ByaW9yaXR5Ow0KICB9Ow0KIyAy
NCAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL3B0aHJlYWR0eXBlcy5oIiAy
DQoNCg0Kc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrDQp7DQogIGxvbmcgaW50IF9fc3RhdHVzOw0K
ICBpbnQgX19zcGlubG9jazsNCg0KfTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rl
c2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX19w
dGhyZWFkX2F0dHJfcw0Kew0KICBpbnQgX19kZXRhY2hzdGF0ZTsNCiAgaW50IF9fc2NoZWRwb2xp
Y3k7DQogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsNCiAgaW50IF9faW5oZXJp
dHNjaGVkOw0KICBpbnQgX19zY29wZTsNCiAgc2l6ZV90IF9fZ3VhcmRzaXplOw0KICBpbnQgX19z
dGFja2FkZHJfc2V0Ow0KICB2b2lkICpfX3N0YWNrYWRkcjsNCiAgc2l6ZV90IF9fc3RhY2tzaXpl
Ow0KfSBwdGhyZWFkX2F0dHJfdDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIHN0cnVjdCBf
cHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsNCiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7
DQp9IHB0aHJlYWRfY29uZF90Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgaW50IF9fZHVt
bXk7DQp9IHB0aHJlYWRfY29uZGF0dHJfdDsNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhy
ZWFkX2tleV90Ow0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBfX21fcmVzZXJ2
ZWQ7DQogIGludCBfX21fY291bnQ7DQogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsNCiAgaW50
IF9fbV9raW5kOw0KICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7DQp9IHB0aHJl
YWRfbXV0ZXhfdDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIGludCBfX211dGV4a2luZDsN
Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsNCg0KDQoNCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90
Ow0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdA0Kew0KICBzdHJ1Y3Qg
X3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOw0KICBpbnQgX19yd19yZWFkZXJzOw0KICBfcHRo
cmVhZF9kZXNjciBfX3J3X3dyaXRlcjsNCiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRp
bmc7DQogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsNCiAgaW50IF9fcndfa2lu
ZDsNCiAgaW50IF9fcndfcHNoYXJlZDsNCn0gcHRocmVhZF9yd2xvY2tfdDsNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0DQp7DQogIGludCBfX2xvY2traW5kOw0KICBpbnQgX19wc2hhcmVkOw0KfSBwdGhy
ZWFkX3J3bG9ja2F0dHJfdDsNCg0KDQoNCg0KdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9z
cGlubG9ja190Ow0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rs
b2NrIF9fYmFfbG9jazsNCiAgaW50IF9fYmFfcmVxdWlyZWQ7DQogIGludCBfX2JhX3ByZXNlbnQ7
DQogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsNCn0gcHRocmVhZF9iYXJyaWVyX3Q7DQoN
Cg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICBpbnQgX19wc2hhcmVkOw0KfSBwdGhyZWFkX2JhcnJpZXJh
dHRyX3Q7DQoNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7DQoj
IDE0NCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy90eXBlcy5oIiAyDQojIDMxICIu
Li9wb3NpeC9zeXMvdHlwZXMuaCIgMg0KDQoNCg0KdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7DQp0
eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Ow0KdHlwZWRlZiBfX3VfaW50IHVfaW50Ow0KdHlwZWRl
ZiBfX3VfbG9uZyB1X2xvbmc7DQp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsNCnR5cGVkZWYgX191
X3F1YWRfdCB1X3F1YWRfdDsNCnR5cGVkZWYgX19mc2lkX3QgZnNpZF90Ow0KDQoNCg0KDQp0eXBl
ZGVmIF9fbG9mZl90IGxvZmZfdDsNCg0KDQoNCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7DQoNCg0KDQoNCnR5cGVkZWYgX19kZXZf
dCBkZXZfdDsNCg0KDQoNCg0KdHlwZWRlZiBfX2dpZF90IGdpZF90Ow0KDQoNCg0KDQp0eXBlZGVm
IF9fbW9kZV90IG1vZGVfdDsNCg0KDQoNCg0KdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsNCg0K
DQoNCg0KdHlwZWRlZiBfX3VpZF90IHVpZF90Ow0KDQoNCg0KDQoNCnR5cGVkZWYgX19vZmZfdCBv
ZmZfdDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7DQoNCg0KDQoNCnR5
cGVkZWYgX19waWRfdCBwaWRfdDsNCg0KDQoNCg0KdHlwZWRlZiBfX2lkX3QgaWRfdDsNCg0KDQoN
Cg0KdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsNCg0KDQoNCg0KDQp0eXBlZGVmIF9fZGFkZHJf
dCBkYWRkcl90Ow0KdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsNCg0KDQoNCg0KDQp0eXBlZGVm
IF9fa2V5X3Qga2V5X3Q7DQojIDEzMiAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiDQojIDEgIi4uL2lu
Y2x1ZGUvdGltZS5oIiAxDQoNCg0KIyAxICIuLi90aW1lL3RpbWUuaCIgMQ0KIyA1OSAiLi4vdGlt
ZS90aW1lLmgiDQp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190Ow0KIyA3MCAiLi4vdGltZS90aW1l
LmgiDQp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsNCiMgODIgIi4uL3RpbWUvdGltZS5oIg0KdHlw
ZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7DQojIDk0ICIuLi90aW1lL3RpbWUuaCINCnR5cGVk
ZWYgX190aW1lcl90IHRpbWVyX3Q7DQojIDQgIi4uL2luY2x1ZGUvdGltZS5oIiAyDQojIDEzMyAi
Li4vcG9zaXgvc3lzL3R5cGVzLmgiIDINCg0KDQoNCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNv
bmRzX3Q7DQoNCg0KDQp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7DQoNCg0KDQoN
Cg0KIyAxICIvdXNyL2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93bi1saW51eC1nbnUvMy4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAxNDcgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyDQoNCg0K
DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOw0KdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgdXNob3J0Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsNCiMgMTk2ICIuLi9wb3Np
eC9zeXMvdHlwZXMuaCINCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19RSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOw0KdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9f
KSkpOw0KDQp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X193b3JkX18pKSk7DQojIDIxMiAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiDQojIDEgIi4uL2luY2x1
ZGUvZW5kaWFuLmgiIDENCiMgMjEzICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIgMg0KDQoNCiMgMSAi
Li4vaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDENCg0KIyAxICIuLi9taXNjL3N5cy9zZWxlY3QuaCIg
MQ0KIyAzMSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiDQojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9i
aXRzL3NlbGVjdC5oIiAxDQojIDMyICIuLi9taXNjL3N5cy9zZWxlY3QuaCIgMg0KDQoNCiMgMSAi
Li4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdzZXQuaCIgMQ0KIyAyMyAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdzZXQuaCINCnR5cGVkZWYgaW50IF9fc2lnX2F0
b21pY190Ow0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdA0KICB7DQogICAgdW5zaWduZWQgbG9uZyBp
bnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOw0KICB9
IF9fc2lnc2V0X3Q7DQojIDM1ICIuLi9taXNjL3N5cy9zZWxlY3QuaCIgMg0KDQoNCg0KdHlwZWRl
ZiBfX3NpZ3NldF90IHNpZ3NldF90Ow0KDQoNCg0KDQoNCiMgMSAiLi4vaW5jbHVkZS90aW1lLmgi
IDENCg0KDQojIDEgIi4uL3RpbWUvdGltZS5oIiAxDQojIDEwNiAiLi4vdGltZS90aW1lLmgiDQpz
dHJ1Y3QgdGltZXNwZWMNCiAgew0KICAgIF9fdGltZV90IHR2X3NlYzsNCiAgICBsb25nIGludCB0
dl9uc2VjOw0KICB9Ow0KIyA0ICIuLi9pbmNsdWRlL3RpbWUuaCIgMg0KIyA0NSAiLi4vbWlzYy9z
eXMvc2VsZWN0LmgiIDINCg0KIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3Rp
bWUuaCIgMQ0KIyA2MyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy90aW1lLmgiDQpz
dHJ1Y3QgdGltZXZhbA0KICB7DQogICAgX190aW1lX3QgdHZfc2VjOw0KICAgIF9fc3VzZWNvbmRz
X3QgdHZfdXNlYzsNCiAgfTsNCiMgNDcgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIiAyDQojIDU1ICIu
Li9taXNjL3N5cy9zZWxlY3QuaCINCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOw0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdA0KICB7DQoNCg0KDQogICAgX19mZF9tYXNrIGZkc19iaXRz
WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOw0KDQoNCg0KDQoNCiAgfSBmZF9zZXQ7
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOw0KIyA5NSAiLi4vbWlzYy9z
eXMvc2VsZWN0LmgiDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRz
LCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLA0KICAgICAgICAgICAgICAgICAgIGZkX3Nl
dCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLA0KICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19y
ZXN0cmljdCBfX2V4Y2VwdGZkcywNCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAq
X19yZXN0cmljdCBfX3RpbWVvdXQpIDsNCg0KDQoNCg0KDQpleHRlcm4gaW50IHBzZWxlY3QgKGlu
dCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsDQogICAgICAgICAgICAgICAg
ICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLA0KICAgICAgICAgICAgICAgICAgICBm
ZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQsDQogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7DQoNCg0KDQojIDMg
Ii4uL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyDQoNCg0KZXh0ZXJuIGludCBfX3BzZWxlY3QgKGlu
dCBfX25mZHMsIGZkX3NldCAqX19yZWFkZmRzLA0KICAgICAgICAgICAgICAgICAgICAgIGZkX3Nl
dCAqX193cml0ZWZkcywgZmRfc2V0ICpfX2V4Y2VwdGZkcywNCiAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwNCiAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBfX3NpZ3NldF90ICpfX3NpZ21hc2spOw0KDQpleHRlcm4gaW50IF9fc2VsZWN0IChp
bnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLA0KICAgICAgICAgICAgICAg
ICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsDQogICAgICAgICAgICAgICAgICAg
ICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsDQogICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpOw0KIyAyMTYgIi4uL3Bvc2l4L3N5
cy90eXBlcy5oIiAyDQoNCg0KIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvc3lz
bWFjcm9zLmgiIDENCiMgMjE5ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIgMg0KDQoNCg0KDQp0eXBl
ZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVfdDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgX19ibGtjbnRf
dCBibGtjbnRfdDsNCg0KDQoNCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7DQoNCg0K
DQp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90Ow0KIyAyNTcgIi4uL3Bvc2l4L3N5cy90
eXBlcy5oIg0KdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsNCnR5cGVkZWYgX19mc2Js
a2NudDY0X3QgZnNibGtjbnQ2NF90Ow0KdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0
X3Q7DQoNCg0KDQojIDIgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDINCiMgMzkxICIuLi9zdGRs
aWIvc3RkbGliLmgiIDINCg0KDQoNCg0KDQoNCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQp
IDsNCg0KDQpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7DQoNCg0K
DQoNCg0KZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAq
X19zdGF0ZWJ1ZiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7
DQoNCg0KDQpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsNCg0KDQoN
Cg0KDQoNCg0Kc3RydWN0IHJhbmRvbV9kYXRhDQogIHsNCiAgICBpbnQzMl90ICpmcHRyOw0KICAg
IGludDMyX3QgKnJwdHI7DQogICAgaW50MzJfdCAqc3RhdGU7DQogICAgaW50IHJhbmRfdHlwZTsN
CiAgICBpbnQgcmFuZF9kZWc7DQogICAgaW50IHJhbmRfc2VwOw0KICAgIGludDMyX3QgKmVuZF9w
dHI7DQogIH07DQoNCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZiwNCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsNCg0KZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQs
IHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsNCg0KZXh0ZXJuIGludCBpbml0c3RhdGVfciAo
dW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sDQogICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsNCg0KZXh0ZXJuIGlu
dCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsDQogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOw0KDQoNCg0K
DQoNCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgOw0KDQpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWdu
ZWQgaW50IF9fc2VlZCkgOw0KDQoNCg0KZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAq
X19zZWVkKSA7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOw0K
ZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOw0K
DQoNCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSA7DQpleHRlcm4gbG9uZyBpbnQgbnJh
bmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsNCg0KDQpleHRlcm4gbG9uZyBp
bnQgbXJhbmQ0OCAodm9pZCkgOw0KZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdKSA7DQoNCg0KZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQg
X19zZWVkdmFsKSA7DQpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVk
IHNob3J0IGludCBfX3NlZWQxNnZbM10pIDsNCmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVk
IHNob3J0IGludCBfX3BhcmFtWzddKSA7DQoNCg0KDQoNCg0Kc3RydWN0IGRyYW5kNDhfZGF0YQ0K
ICB7DQogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsNCiAgICB1bnNpZ25lZCBzaG9ydCBp
bnQgX19vbGRfeFszXTsNCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOw0KICAgIHVuc2lnbmVk
IHNob3J0IGludCBfX2luaXQ7DQogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2E7DQogIH07
DQoNCg0KZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp
Y3QgX19idWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSA7DQpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10sDQogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsNCg0KDQpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgOw0KZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdLA0KICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsNCg0KDQpleHRlcm4gaW50IG1yYW5kNDhfciAoc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOw0KZXh0ZXJuIGludCBqcmFuZDQ4
X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLA0KICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsDQogICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsNCg0KDQpleHRlcm4gaW50
IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1
ZmZlcikNCiAgICAgOw0KDQpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19zZWVkMTZ2WzNdLA0KICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19idWZmZXIpIDsNCg0KZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3BhcmFtWzddLA0KICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSA7DQojIDUyNyAiLi4vc3RkbGliL3N0ZGxpYi5oIg0KZXh0ZXJuIHZvaWQgKm1hbGxv
YyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsNCg0KZXh0ZXJu
IHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpDQogICAgIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKnJlYWxsb2Mg
KHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
Ow0KDQpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgOw0KDQoNCg0KZXh0ZXJuIHZvaWQg
Y2ZyZWUgKHZvaWQgKl9fcHRyKSA7DQoNCg0KDQojIDEgIi4uL2luY2x1ZGUvYWxsb2NhLmgiIDEN
Cg0KDQojIDEgIi4uL3N0ZGxpYi9hbGxvY2EuaCIgMQ0KIyAyNSAiLi4vc3RkbGliL2FsbG9jYS5o
Ig0KIyAxICIvdXNyL2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93bi1saW51eC1nbnUvMy4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAyNiAiLi4vc3RkbGliL2FsbG9jYS5oIiAyDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiB2b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIDsNCg0KDQoNCg0KDQoN
CiMgNCAiLi4vaW5jbHVkZS9hbGxvY2EuaCIgMg0KDQoNCg0KDQpleHRlcm4gdm9pZCAqX19hbGxv
Y2EgKHNpemVfdCBfX3NpemUpOw0KIyA1NDcgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMg0KDQoNCg0K
DQpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19t
ZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkNCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsNCg0KDQoNCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7DQoNCg0KDQpleHRlcm4gaW50IGF0ZXhpdCAodm9p
ZCAoKl9fZnVuYykgKHZvaWQpKSA7DQoNCg0KDQoNCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAo
Kl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykNCiAgICAg
Ow0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOw0KDQoNCg0KDQpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3Rh
dHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7DQoNCg0KDQoNCmV4dGVybiBjaGFy
ICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7DQoNCg0KDQpleHRlcm4gY2hhciAqX19z
ZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOw0KDQoNCg0KDQoNCmV4dGVybiBp
bnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOw0KDQoNCg0KDQoNCmV4dGVybiBpbnQgc2V0ZW52
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19yZXBs
YWNlKQ0KICAgICA7DQoNCg0KZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25h
bWUpIDsNCg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsNCiMgNjIzICIu
Li9zdGRsaWIvc3RkbGliLmgiDQpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRl
KSA7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg
Ow0KIyA2NDAgIi4uL3N0ZGxpYi9zdGRsaWIuaCINCmV4dGVybiBpbnQgbWtzdGVtcDY0IChjaGFy
ICpfX3RlbXBsYXRlKSA7DQojIDY1MCAiLi4vc3RkbGliL3N0ZGxpYi5oIg0KZXh0ZXJuIGNoYXIg
Km1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsNCg0KDQoNCg0KZXh0ZXJuIGludCBzeXN0ZW0g
KF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7DQoNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqY2Fu
b25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsNCiMgNjcyICIuLi9z
dGRsaWIvc3RkbGliLmgiDQpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsDQogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19yZXNvbHZlZCkgOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAo
X19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsNCg0KDQp0eXBlZGVmIF9fY29tcGFyX2Zu
X3QgY29tcGFyaXNvbl9mbl90Ow0KDQoNCg0KDQoNCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2Nv
bnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwNCiAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBh
cik7DQoNCg0KDQpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVt
Yiwgc2l6ZV90IF9fc2l6ZSwNCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29t
cGFyKTsNCg0KDQoNCmV4dGVybiBpbnQgYWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7DQpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7DQoNCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVu
b20pDQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsNCmV4dGVybiBsZGl2X3QgbGRp
diAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkNCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOw0KDQpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChs
b25nIGxvbmcgaW50IF9fbnVtZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGxvbmcgaW50IF9fZGVub20pDQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsNCiMgNzI4ICIuLi9zdGRsaWIvc3RkbGliLmgiDQpleHRlcm4gY2hhciAqZWN2dCAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsDQogICAgICAg
ICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOw0KDQoNCg0KDQpleHRlcm4gY2hh
ciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsDQogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOw0KDQoN
Cg0KDQpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hh
ciAqX19idWYpIDsNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsDQogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7DQpleHRlcm4gY2hhciAqcWZjdnQgKGxv
bmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwNCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsNCmV4dGVybiBj
aGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1
ZikgOw0KDQoNCg0KDQpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsDQogICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwNCiAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19sZW4pIDsNCmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwNCiAgICAgICAgICAgICAgICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLA0KICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOw0KDQpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwNCiAgICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sDQogICAgICAgICAgICAg
ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOw0KZXh0ZXJuIGlu
dCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsDQogICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LA0KICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19s
ZW4pIDsNCg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBz
aXplX3QgX19uKSA7DQoNCg0KZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19wd2MsDQogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbikgOw0KDQoNCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3Qg
X193Y2hhcikgOw0KDQoNCg0KZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsDQogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19uKSA7DQoNCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLA0KICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikNCiAgICAgOw0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgOw0KIyA4MDggIi4u
L3N0ZGxpYi9zdGRsaWIuaCINCmV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmlj
dCBfX29wdGlvbnAsDQogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0
cmljdCBfX3Rva2VucywNCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3ZhbHVlcCkgOw0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpf
X2tleSkgOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHBvc2l4X29wZW5wdCAoaW50IF9fb2Zs
YWcpIDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOw0KDQoN
Cg0KZXh0ZXJuIGludCB1bmxvY2twdCAoaW50IF9fZmQpIDsNCg0KDQoNCg0KZXh0ZXJuIGNoYXIg
KnB0c25hbWUgKGludCBfX2ZkKSA7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHB0c25hbWVfciAo
aW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsNCg0KDQpleHRlcm4gaW50
IGdldHB0ICh2b2lkKSA7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJs
ZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsNCg0KDQoNCg0KDQoNCiMgOCAiLi4vaW5jbHVk
ZS9zdGRsaWIuaCIgMg0KDQoNCg0KZXh0ZXJuIGxvbmcgaW50IF9fcmFuZG9tICh2b2lkKTsNCmV4
dGVybiB2b2lkIF9fc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCk7DQpleHRlcm4gY2hhciAq
X19pbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKTsNCmV4dGVybiBjaGFyICpf
X3NldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKTsNCmV4dGVybiBpbnQgX19yYW5kb21fciAoc3Ry
dWN0IHJhbmRvbV9kYXRhICpfX2J1ZiwgaW50MzJfdCAqX19yZXN1bHQpOw0KZXh0ZXJuIGludCBf
X3NyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1
Zik7DQpleHRlcm4gaW50IF9faW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIg
Kl9fc3RhdGVidWYsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVu
LCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsNCmV4dGVybiBpbnQgX19zZXRzdGF0ZV9yIChj
aGFyICpfX3N0YXRlYnVmLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsNCmV4dGVybiBpbnQg
X19yYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKTsNCmV4dGVybiBpbnQgX19lcmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLA0KICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIsIGRvdWJsZSAqX19yZXN1bHQpOw0KZXh0ZXJu
IGludCBfX25yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sDQogICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3VsdCk7DQpleHRlcm4gaW50IF9fanJhbmQ0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgbG9uZyBpbnQgKl9fcmVzdWx0KTsNCmV4dGVybiBpbnQgX19zcmFuZDQ4X3IgKGxvbmcgaW50
IF9fc2VlZHZhbCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEg
Kl9fYnVmZmVyKTsNCmV4dGVybiBpbnQgX19zZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9f
c2VlZDE2dlszXSwNCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19idWZmZXIpOw0KZXh0ZXJuIGludCBfX2xjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9f
cGFyYW1bN10sDQogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X2J1ZmZlcik7DQoNCg0KZXh0ZXJuIGludCBfX2RyYW5kNDhfaXRlcmF0ZSAodW5zaWduZWQgc2hv
cnQgaW50IF9feHN1YmlbM10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcik7DQoNCmV4dGVybiBpbnQgX19zZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsDQogICAgICAgICAgICAgICAgICAg
ICBpbnQgX19yZXBsYWNlKTsNCmV4dGVybiBpbnQgX191bnNldGVudiAoX19jb25zdCBjaGFyICpf
X25hbWUpOw0KZXh0ZXJuIGludCBfX2NsZWFyZW52ICh2b2lkKTsNCmV4dGVybiBjaGFyICpfX2Nh
bm9uaWNhbGl6ZV9maWxlX25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKTsNCmV4dGVybiBjaGFy
ICpfX3JlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hhciAqX19yZXNvbHZlZCk7DQpl
eHRlcm4gaW50IF9fcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1
Zmxlbik7DQpleHRlcm4gaW50IF9fZ2V0cHQgKHZvaWQpOw0KZXh0ZXJuIGludCBfX3Bvc2l4X29w
ZW5wdCAoaW50IF9fb2ZsYWcpOw0KDQpleHRlcm4gaW50IF9fYWRkX3RvX2Vudmlyb24gKGNvbnN0
IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpjb21iaW5lcywgaW50IHJlcGxhY2UpOw0KDQpleHRlcm4gdm9pZCBf
cXVpY2tzb3J0ICh2b2lkICpjb25zdCBwYmFzZSwgc2l6ZV90IHRvdGFsX2VsZW1zLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIF9fY29tcGFyX2ZuX3QgY21wKTsNCg0KZXh0
ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9f
YXJnKSwgdm9pZCAqX19hcmcpOw0KDQpleHRlcm4gaW50IF9fY3hhX2F0ZXhpdCAodm9pZCAoKmZ1
bmMpICh2b2lkICopLCB2b2lkICphcmcsIHZvaWQgKmQpOw0KDQpleHRlcm4gdm9pZCBfX2N4YV9m
aW5hbGl6ZSAodm9pZCAqZCk7DQoNCmV4dGVybiBpbnQgX19wb3NpeF9tZW1hbGlnbiAodm9pZCAq
Km1lbXB0ciwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpDQogICAgIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7DQoNCmV4dGVybiBpbnQgX19saWJjX3N5c3RlbSAoY29uc3QgY2hh
ciAqbGluZSk7DQojIDI2ICJzdHJjb2xsLmMiIDINCiMgMSAiLi4vaW5jbHVkZS9zdHJpbmcuaCIg
MQ0KDQoNCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMQ0KIyA0ICIuLi9pbmNsdWRlL3N0
cmluZy5oIiAyDQoNCmV4dGVybiB2b2lkICpfX21lbWNjcHkgKHZvaWQgKl9fZGVzdCwgX19jb25z
dCB2b2lkICpfX3NyYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90
IF9fbik7DQoNCmV4dGVybiBzaXplX3QgX19zdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19tYXhsZW4pDQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQpl
eHRlcm4gY2hhciAqX19zdHJzZXAgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19k
ZWxpbSk7DQoNCmV4dGVybiBpbnQgX19zdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCmV4
dGVybiBpbnQgX19zdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pDQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQpleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpDQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOw0KDQpleHRlcm4gY2hhciAqX19zdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9f
aGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpDQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOw0KDQpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJp
bmcpDQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7DQpleHRlcm4gY2hhciAqX19z
dHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJp
YnV0ZV9fICgoX19tYWxsb2NfXykpOw0KDQpleHRlcm4gdm9pZCAqX19yYXdtZW1jaHIgKF9fY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsN
Cg0KZXh0ZXJuIGNoYXIgKl9fc3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykN
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCmV4dGVybiB2b2lkICpfX21lbXJj
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsNCg0KZXh0ZXJuIHZvaWQgKl9fbWVtY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7DQoNCmV4dGVybiBpbnQgX19mZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25z
dCkpOw0KDQpleHRlcm4gY2hhciAqX19zdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9f
YnVmLCBzaXplX3QgX19idWZsZW4pOw0KDQoNCg0KIyAxICIuLi9zdHJpbmcvc3RyaW5nLmgiIDEN
CiMgMjggIi4uL3N0cmluZy9zdHJpbmcuaCINCg0KDQoNCg0KDQojIDEgIi91c3IvbGliL2djYy1s
aWIvcG93ZXJwYy11bmtub3duLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQoj
IDM0ICIuLi9zdHJpbmcvc3RyaW5nLmgiIDINCg0KDQoNCmV4dGVybiB2b2lkICptZW1jcHkgKHZv
aWQgKl9fcmVzdHJpY3QgX19kZXN0LA0KICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7DQoNCg0KZXh0ZXJuIHZvaWQgKm1lbW1v
dmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikNCiAgICAg
Ow0KDQoNCg0KDQoNCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLA0KICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2MsIHNpemVfdCBfX24pDQogICAgIDsNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKm1lbXNl
dCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7DQoNCg0KZXh0ZXJuIGludCBtZW1j
bXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQ0K
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0KDQpleHRlcm4gdm9pZCAqbWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikNCiAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOw0KDQoNCg0KDQpleHRlcm4gdm9pZCAqcmF3bWVtY2hyIChfX2Nv
bnN0IHZvaWQgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0K
ZXh0ZXJuIHZvaWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3Qg
X19uKQ0KICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQoNCmV4dGVybiBj
aGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMpDQogICAgIDsNCg0KZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LA0KICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOw0KDQoNCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpDQogICAg
IDsNCg0KZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsDQogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbikgOw0KDQoNCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCmV4dGVy
biBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNp
emVfdCBfX24pDQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQoNCmV4dGVybiBp
bnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpDQogICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LA0KICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsNCg0KDQoNCg0KDQojIDEgIi4uL2lu
Y2x1ZGUveGxvY2FsZS5oIiAxDQojIDEwOSAiLi4vc3RyaW5nL3N0cmluZy5oIiAyDQoNCg0KZXh0
ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIF9fbG9jYWxlX3QgX19sKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0K
ZXh0ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
c3JjLCBzaXplX3QgX19uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBf
X2wpIDsNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqc3Ry
bmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsNCiMgMTU1ICIuLi9zdHJpbmcvc3RyaW5nLmgiDQpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7DQoNCmV4dGVybiBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQoNCmV4dGVybiBjaGFy
ICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsNCg0KDQoNCg0KZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIg
Kl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7DQoNCg0KZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fYWNjZXB0KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0K
ZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f
YWNjZXB0KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0KZXh0ZXJuIGNoYXIg
KnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxl
KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0KDQoNCmV4dGVybiBjaGFyICpz
dHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVk
bGUpDQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQoNCg0KZXh0ZXJuIGNoYXIg
KnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKQ0KICAgICA7DQoNCg0KDQpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19y
ZXN0cmljdCBfX3MsDQogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0sDQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19zYXZlX3B0cikgOw0KDQpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOw0KDQoNCg0KDQoNCg0KZXh0
ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlz
dGFja2xlbiwNCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVkbGUsIHNp
emVfdCBfX25lZWRsZWxlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0K
DQpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOw0KZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LA0K
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikgOw0KDQoNCg0KDQpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpf
X3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQoNCg0KDQpleHRlcm4gc2l6ZV90IHN0
cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikNCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQoNCmV4dGVybiBjaGFyICpzdHJlcnJvciAo
aW50IF9fZXJybnVtKSA7DQoNCg0KDQpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJy
bnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7DQoNCg0KDQoNCmV4dGVybiB2b2lk
IF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOw0KDQoNCg0KZXh0ZXJuIHZvaWQgYmNv
cHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgOw0KDQoN
CmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsNCg0KDQpleHRlcm4g
aW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3Qg
X19uKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0KDQpleHRlcm4gY2hhciAq
aW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsNCg0KDQpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7DQoNCg0KDQpleHRlcm4gaW50IGZmcyAoaW50
IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IGZm
c2wgKGxvbmcgaW50IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOw0KDQpfX2V4dGVu
c2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkNCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQ0KICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsNCg0KDQpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBfX3N0cmNhc2VjbXBfbCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsNCg0K
ZXh0ZXJuIGludCBfX3N0cm5jYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIF9fbG9j
YWxlX3QgX19sb2MpDQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQoNCg0KDQoN
CmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwNCiAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7DQoNCg0K
DQoNCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpDQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOw0KDQoNCmV4dGVybiBj
aGFyICpzdHJzaWduYWwgKGludCBfX3NpZykgOw0KDQoNCmV4dGVybiBjaGFyICpfX3N0cGNweSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykN
CiAgICAgOw0KZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykNCiAgICAgOw0KDQoNCg0KZXh0ZXJuIGNoYXIg
Kl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsDQogICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsNCmV4dGVy
biBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwNCiAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsNCg0K
DQpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOw0KDQoNCmV4dGVybiB2b2lk
ICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsNCg0KDQoNCg0KDQoNCmV4dGVybiBj
aGFyICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7DQojIDM1NyAiLi4vc3Ry
aW5nL3N0cmluZy5oIg0KIyAxICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy9zdHJpbmcuaCIgMQ0K
IyAzNTggIi4uL3N0cmluZy9zdHJpbmcuaCIgMg0KDQoNCiMgMSAiLi4vaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMQ0KIyAxICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiIDENCiMgODAgIi4uL3N0
cmluZy9iaXRzL3N0cmluZzIuaCINCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2Fy
clsyXTsgfSBfX1NUUklORzJfQ09QWV9BUlIyIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsNCnR5
cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclszXTsgfSBfX1NUUklORzJfQ09QWV9B
UlIzIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsNCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQg
Y2hhciBfX2Fycls0XTsgfSBfX1NUUklORzJfQ09QWV9BUlI0IF9fYXR0cmlidXRlX18gKChwYWNr
ZWQpKTsNCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2Fycls1XTsgfSBfX1NUUklO
RzJfQ09QWV9BUlI1IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsNCnR5cGVkZWYgc3RydWN0IHsg
dW5zaWduZWQgY2hhciBfX2Fycls2XTsgfSBfX1NUUklORzJfQ09QWV9BUlI2IF9fYXR0cmlidXRl
X18gKChwYWNrZWQpKTsNCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2Fycls3XTsg
fSBfX1NUUklORzJfQ09QWV9BUlI3IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsNCnR5cGVkZWYg
c3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2Fycls4XTsgfSBfX1NUUklORzJfQ09QWV9BUlI4IF9f
YXR0cmlidXRlX18gKChwYWNrZWQpKTsNCiMgMzE3ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgi
DQpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2b2lkICosIGNoYXIsIF9f
U1RSSU5HMl9DT1BZX0FSUjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX1NUUklORzJfQ09QWV9BUlIzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19TVFJJTkcyX0NPUFlfQVJSNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjUsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI2LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19TVFJJTkcyX0NPUFlfQVJSNywNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjgsIHNpemVfdCk7DQpleHRl
cm4gX19pbmxpbmUgdm9pZCAqDQpfX21lbXBjcHlfc21hbGwgKHZvaWQgKl9fZGVzdCwgY2hhciBf
X3NyYzEsDQogICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjIgX19zcmMyLCBfX1NU
UklORzJfQ09QWV9BUlIzIF9fc3JjMywNCiAgICAgICAgICAgICAgICAgX19TVFJJTkcyX0NPUFlf
QVJSNCBfX3NyYzQsIF9fU1RSSU5HMl9DT1BZX0FSUjUgX19zcmM1LA0KICAgICAgICAgICAgICAg
ICBfX1NUUklORzJfQ09QWV9BUlI2IF9fc3JjNiwgX19TVFJJTkcyX0NPUFlfQVJSNyBfX3NyYzcs
DQogICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjggX19zcmM4LCBzaXplX3QgX19z
cmNsZW4pDQp7DQogIHVuaW9uIHsNCiAgICBjaGFyIF9fYzsNCiAgICBfX1NUUklORzJfQ09QWV9B
UlIyIF9fc2NhMjsNCiAgICBfX1NUUklORzJfQ09QWV9BUlIzIF9fc2NhMzsNCiAgICBfX1NUUklO
RzJfQ09QWV9BUlI0IF9fc2NhNDsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI1IF9fc2NhNTsNCiAg
ICBfX1NUUklORzJfQ09QWV9BUlI2IF9fc2NhNjsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI3IF9f
c2NhNzsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI4IF9fc2NhODsNCiAgfSAqX191ID0gX19kZXN0
Ow0KICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQ0KICAgIHsNCiAgICBjYXNlIDE6
DQogICAgICBfX3UtPl9fYyA9IF9fc3JjMTsNCiAgICAgIGJyZWFrOw0KICAgIGNhc2UgMjoNCiAg
ICAgIF9fZXh0ZW5zaW9uX18gX191LT5fX3NjYTIgPSBfX3NyYzI7DQogICAgICBicmVhazsNCiAg
ICBjYXNlIDM6DQogICAgICBfX2V4dGVuc2lvbl9fIF9fdS0+X19zY2EzID0gX19zcmMzOw0KICAg
ICAgYnJlYWs7DQogICAgY2FzZSA0Og0KICAgICAgX19leHRlbnNpb25fXyBfX3UtPl9fc2NhNCA9
IF9fc3JjNDsNCiAgICAgIGJyZWFrOw0KICAgIGNhc2UgNToNCiAgICAgIF9fZXh0ZW5zaW9uX18g
X191LT5fX3NjYTUgPSBfX3NyYzU7DQogICAgICBicmVhazsNCiAgICBjYXNlIDY6DQogICAgICBf
X2V4dGVuc2lvbl9fIF9fdS0+X19zY2E2ID0gX19zcmM2Ow0KICAgICAgYnJlYWs7DQogICAgY2Fz
ZSA3Og0KICAgICAgX19leHRlbnNpb25fXyBfX3UtPl9fc2NhNyA9IF9fc3JjNzsNCiAgICAgIGJy
ZWFrOw0KICAgIGNhc2UgODoNCiAgICAgIF9fZXh0ZW5zaW9uX18gX191LT5fX3NjYTggPSBfX3Ny
Yzg7DQogICAgICBicmVhazsNCiAgICB9DQogIHJldHVybiBfX2V4dGVuc2lvbl9fICh2b2lkICop
KChjaGFyICopIF9fdSArIF9fc3JjbGVuKTsNCn0NCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQg
Kl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOw0KIyA0ODkgIi4uL3N0cmlu
Zy9iaXRzL3N0cmluZzIuaCINCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cmNweV9zbWFsbCAo
Y2hhciAqLCBfX1NUUklORzJfQ09QWV9BUlIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlIzLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI1LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI2LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI3LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI4LCBzaXplX3QpOw0K
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKg0KX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwNCiAg
ICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlIyIF9fc3JjMiwgX19TVFJJTkcyX0NPUFlf
QVJSMyBfX3NyYzMsDQogICAgICAgICAgICAgICAgX19TVFJJTkcyX0NPUFlfQVJSNCBfX3NyYzQs
IF9fU1RSSU5HMl9DT1BZX0FSUjUgX19zcmM1LA0KICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9D
T1BZX0FSUjYgX19zcmM2LCBfX1NUUklORzJfQ09QWV9BUlI3IF9fc3JjNywNCiAgICAgICAgICAg
ICAgICBfX1NUUklORzJfQ09QWV9BUlI4IF9fc3JjOCwgc2l6ZV90IF9fc3JjbGVuKQ0Kew0KICB1
bmlvbiB7DQogICAgY2hhciBfX2M7DQogICAgX19TVFJJTkcyX0NPUFlfQVJSMiBfX3NjYTI7DQog
ICAgX19TVFJJTkcyX0NPUFlfQVJSMyBfX3NjYTM7DQogICAgX19TVFJJTkcyX0NPUFlfQVJSNCBf
X3NjYTQ7DQogICAgX19TVFJJTkcyX0NPUFlfQVJSNSBfX3NjYTU7DQogICAgX19TVFJJTkcyX0NP
UFlfQVJSNiBfX3NjYTY7DQogICAgX19TVFJJTkcyX0NPUFlfQVJSNyBfX3NjYTc7DQogICAgX19T
VFJJTkcyX0NPUFlfQVJSOCBfX3NjYTg7DQogIH0gKl9fdSA9ICh2b2lkICopIF9fZGVzdDsNCiAg
c3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikNCiAgICB7DQogICAgY2FzZSAxOg0KICAg
ICAgX191LT5fX2MgPSAnXDAnOw0KICAgICAgYnJlYWs7DQogICAgY2FzZSAyOg0KICAgICAgX19l
eHRlbnNpb25fXyBfX3UtPl9fc2NhMiA9IF9fc3JjMjsNCiAgICAgIGJyZWFrOw0KICAgIGNhc2Ug
MzoNCiAgICAgIF9fZXh0ZW5zaW9uX18gX191LT5fX3NjYTMgPSBfX3NyYzM7DQogICAgICBicmVh
azsNCiAgICBjYXNlIDQ6DQogICAgICBfX2V4dGVuc2lvbl9fIF9fdS0+X19zY2E0ID0gX19zcmM0
Ow0KICAgICAgYnJlYWs7DQogICAgY2FzZSA1Og0KICAgICAgX19leHRlbnNpb25fXyBfX3UtPl9f
c2NhNSA9IF9fc3JjNTsNCiAgICAgIGJyZWFrOw0KICAgIGNhc2UgNjoNCiAgICAgIF9fZXh0ZW5z
aW9uX18gX191LT5fX3NjYTYgPSBfX3NyYzY7DQogICAgICBicmVhazsNCiAgICBjYXNlIDc6DQog
ICAgICBfX2V4dGVuc2lvbl9fIF9fdS0+X19zY2E3ID0gX19zcmM3Ow0KICAgICAgYnJlYWs7DQog
ICAgY2FzZSA4Og0KICAgICAgX19leHRlbnNpb25fXyBfX3UtPl9fc2NhOCA9IF9fc3JjODsNCiAg
ICAgIGJyZWFrOw0KICB9DQogIHJldHVybiBfX2Rlc3Q7DQp9DQojIDY1OSAiLi4vc3RyaW5nL2Jp
dHMvc3RyaW5nMi5oIg0KZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RwY3B5X3NtYWxsIChjaGFy
ICosIF9fU1RSSU5HMl9DT1BZX0FSUjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjYsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjcsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjgsIHNpemVfdCk7DQpleHRl
cm4gX19pbmxpbmUgY2hhciAqDQpfX3N0cGNweV9zbWFsbCAoY2hhciAqX19kZXN0LA0KICAgICAg
ICAgICAgICAgIF9fU1RSSU5HMl9DT1BZX0FSUjIgX19zcmMyLCBfX1NUUklORzJfQ09QWV9BUlIz
IF9fc3JjMywNCiAgICAgICAgICAgICAgICBfX1NUUklORzJfQ09QWV9BUlI0IF9fc3JjNCwgX19T
VFJJTkcyX0NPUFlfQVJSNSBfX3NyYzUsDQogICAgICAgICAgICAgICAgX19TVFJJTkcyX0NPUFlf
QVJSNiBfX3NyYzYsIF9fU1RSSU5HMl9DT1BZX0FSUjcgX19zcmM3LA0KICAgICAgICAgICAgICAg
IF9fU1RSSU5HMl9DT1BZX0FSUjggX19zcmM4LCBzaXplX3QgX19zcmNsZW4pDQp7DQogIHVuaW9u
IHsNCiAgICBjaGFyIF9fYzsNCiAgICBfX1NUUklORzJfQ09QWV9BUlIyIF9fc2NhMjsNCiAgICBf
X1NUUklORzJfQ09QWV9BUlIzIF9fc2NhMzsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI0IF9fc2Nh
NDsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI1IF9fc2NhNTsNCiAgICBfX1NUUklORzJfQ09QWV9B
UlI2IF9fc2NhNjsNCiAgICBfX1NUUklORzJfQ09QWV9BUlI3IF9fc2NhNzsNCiAgICBfX1NUUklO
RzJfQ09QWV9BUlI4IF9fc2NhODsNCiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0Ow0KICBzd2l0
Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQ0KICAgIHsNCiAgICBjYXNlIDE6DQogICAgICBf
X3UtPl9fYyA9ICdcMCc7DQogICAgICBicmVhazsNCiAgICBjYXNlIDI6DQogICAgICBfX2V4dGVu
c2lvbl9fIF9fdS0+X19zY2EyID0gX19zcmMyOw0KICAgICAgYnJlYWs7DQogICAgY2FzZSAzOg0K
ICAgICAgX19leHRlbnNpb25fXyBfX3UtPl9fc2NhMyA9IF9fc3JjMzsNCiAgICAgIGJyZWFrOw0K
ICAgIGNhc2UgNDoNCiAgICAgIF9fZXh0ZW5zaW9uX18gX191LT5fX3NjYTQgPSBfX3NyYzQ7DQog
ICAgICBicmVhazsNCiAgICBjYXNlIDU6DQogICAgICBfX2V4dGVuc2lvbl9fIF9fdS0+X19zY2E1
ID0gX19zcmM1Ow0KICAgICAgYnJlYWs7DQogICAgY2FzZSA2Og0KICAgICAgX19leHRlbnNpb25f
XyBfX3UtPl9fc2NhNiA9IF9fc3JjNjsNCiAgICAgIGJyZWFrOw0KICAgIGNhc2UgNzoNCiAgICAg
IF9fZXh0ZW5zaW9uX18gX191LT5fX3NjYTcgPSBfX3NyYzc7DQogICAgICBicmVhazsNCiAgICBj
YXNlIDg6DQogICAgICBfX2V4dGVuc2lvbl9fIF9fdS0+X19zY2E4ID0gX19zcmM4Ow0KICAgICAg
YnJlYWs7DQogIH0NCiAgcmV0dXJuIF9fZGVzdCArIF9fc3JjbGVuIC0gMTsNCn0NCiMgODkzICIu
Li9zdHJpbmcvYml0cy9zdHJpbmcyLmgiDQpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nw
bl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCk7DQpleHRlcm4gX19pbmxpbmUg
c2l6ZV90DQpfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpDQp7
DQogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7DQogIHdoaWxlIChfX3NbX19yZXN1bHRd
ICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkNCiAgICArK19fcmVzdWx0Ow0K
ICByZXR1cm4gX19yZXN1bHQ7DQp9DQoNCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3Bu
X2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyKTsNCmV4dGVybiBfX2lubGluZSBzaXpl
X3QNCl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBf
X3JlamVjdDIpDQp7DQogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7DQogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDENCiAgICAg
ICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQ0KICAgICsrX19yZXN1bHQ7DQogIHJl
dHVybiBfX3Jlc3VsdDsNCn0NCg0KZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIsIGludCBfX3JlamVjdDMpOw0KZXh0ZXJuIF9f
aW5saW5lIHNpemVfdA0KX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVq
ZWN0MSwgaW50IF9fcmVqZWN0MiwNCiAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MykNCnsNCiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsNCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0g
J1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQ0KICAgICAgICAgJiYgX19zW19fcmVz
dWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpDQogICAgKytf
X3Jlc3VsdDsNCiAgcmV0dXJuIF9fcmVzdWx0Ow0KfQ0KIyA5NTAgIi4uL3N0cmluZy9iaXRzL3N0
cmluZzIuaCINCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19hY2NlcHQpOw0KZXh0ZXJuIF9faW5saW5lIHNpemVfdA0KX19zdHJzcG5f
YzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpDQp7DQogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7DQoNCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpDQog
ICAgKytfX3Jlc3VsdDsNCiAgcmV0dXJuIF9fcmVzdWx0Ow0KfQ0KDQpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOw0KZXh0ZXJu
IF9faW5saW5lIHNpemVfdA0KX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19h
Y2NlcHQxLCBpbnQgX19hY2NlcHQyKQ0Kew0KICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
Ow0KDQogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0MikNCiAgICArK19fcmVzdWx0Ow0KICByZXR1cm4gX19yZXN1bHQ7DQp9DQoN
CmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19hY2NlcHQxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7DQpleHRlcm4gX19pbmxpbmUgc2l6ZV90DQpfX3N0cnNw
bl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsIGlu
dCBfX2FjY2VwdDMpDQp7DQogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7DQoNCiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2Nl
cHQyDQogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykNCiAgICArK19fcmVz
dWx0Ow0KICByZXR1cm4gX19yZXN1bHQ7DQp9DQojIDEwMDcgIi4uL3N0cmluZy9iaXRzL3N0cmlu
ZzIuaCINCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19hY2NlcHQxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2FjY2VwdDIpOw0KZXh0ZXJuIF9faW5saW5lIGNoYXIgKg0KX19zdHJwYnJrX2MyIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikNCnsNCg0KICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2Nl
cHQyKQ0KICAgICsrX19zOw0KICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAo
Y2hhciAqKSAoc2l6ZV90KSBfX3M7DQp9DQoNCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBi
cmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOw0KZXh0
ZXJuIF9faW5saW5lIGNoYXIgKg0KX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwNCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykN
CnsNCg0KICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg
IT0gX19hY2NlcHQyDQogICAgICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykNCiAgICArK19fczsN
CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkg
X19zOw0KfQ0KIyAxMDU5ICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiDQpleHRlcm4gX19pbmxp
bmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19u
ZXh0cCk7DQpleHRlcm4gX19pbmxpbmUgY2hhciAqDQpfX3N0cnRva19yXzFjIChjaGFyICpfX3Ms
IGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQ0Kew0KICBjaGFyICpfX3Jlc3VsdDsNCiAgaWYg
KF9fcyA9PSAoKHZvaWQgKikwKSkNCiAgICBfX3MgPSAqX19uZXh0cDsNCiAgd2hpbGUgKCpfX3Mg
PT0gX19zZXApDQogICAgKytfX3M7DQogIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7DQogIGlmICgq
X19zICE9ICdcMCcpDQogICAgew0KICAgICAgX19yZXN1bHQgPSBfX3MrKzsNCiAgICAgIHdoaWxl
ICgqX19zICE9ICdcMCcpDQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApDQogICAgICAgICAg
ew0KICAgICAgICAgICAgX19zWy0xXSA9ICdcMCc7DQogICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgICB9DQogICAgICAqX19uZXh0cCA9IF9fczsNCiAgICB9DQogIHJldHVybiBfX3Jlc3VsdDsN
Cn0NCiMgMTA5MSAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5oIg0KZXh0ZXJuIGNoYXIgKl9fc3Ry
c2VwX2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7DQojIDExMDkg
Ii4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCINCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNl
cF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7DQpleHRlcm4gX19pbmxpbmUgY2hhciAq
DQpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkNCnsNCiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXR2YWwgPSAqX19zOw0KICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkgJiYg
KCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAm
JiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9f
cmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkN
CiAgICAqKCpfX3MpKysgPSAnXDAnOw0KICByZXR1cm4gX19yZXR2YWw7DQp9DQoNCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNo
YXIgX19yZWplY3QyKTsNCmV4dGVybiBfX2lubGluZSBjaGFyICoNCl9fc3Ryc2VwXzJjIChjaGFy
ICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpDQp7DQogIHJlZ2lzdGVyIGNo
YXIgKl9fcmV0dmFsID0gKl9fczsNCiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApKQ0KICAg
IHsNCiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsNCiAgICAgIHdoaWxlICgx
KQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsNCiAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09
IF9fcmVqZWN0MikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7
DQogICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICsrX19jcDsN
CiAgICAgICAgfQ0KICAgICAgKl9fcyA9IF9fY3A7DQogICAgfQ0KICByZXR1cm4gX19yZXR2YWw7
DQp9DQoNCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hh
ciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIF9fcmVqZWN0Myk7DQpleHRlcm4gX19pbmxpbmUgY2hhciAqDQpfX3N0cnNl
cF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9f
cmVqZWN0MykNCnsNCiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOw0KICBpZiAoX19y
ZXR2YWwgIT0gKCh2b2lkICopMCkpDQogICAgew0KICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9
IF9fcmV0dmFsOw0KICAgICAgd2hpbGUgKDEpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAoKl9f
Y3AgPT0gJ1wwJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgX19jcCA9ICgodm9pZCAq
KTApOw0KICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmICgqX19j
cCA9PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3QyIHx8ICpfX2NwID09IF9fcmVqZWN0
MykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7DQogICAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICsrX19jcDsNCiAgICAgICAg
fQ0KICAgICAgKl9fcyA9IF9fY3A7DQogICAgfQ0KICByZXR1cm4gX19yZXR2YWw7DQp9DQojIDEx
OTAgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCINCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsNCiMgMTIw
OSAiLi4vc3RyaW5nL2JpdHMvc3RyaW5nMi5oIg0KZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bWFsbG9jX18pKTsNCiMgMiAiLi4vaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMg0KIyAzNjEgIi4u
L3N0cmluZy9zdHJpbmcuaCIgMg0KDQoNCg0KDQojIDUwICIuLi9pbmNsdWRlL3N0cmluZy5oIiAy
DQojIDI3ICJzdHJjb2xsLmMiIDINCiMgNDYgInN0cmNvbGwuYyINCiMgMSAiLi4vbG9jYWxlL2xv
Y2FsZWluZm8uaCIgMQ0KIyAyMyAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCINCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9wb3dlcnBjLXVua25vd24tbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMNCiMgMjQgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiIDINCiMgMSAiLi4vaW5jbHVkZS9s
YW5naW5mby5oIiAxDQojIDI1ICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIiAyDQojIDEgIi4uL2lu
Y2x1ZGUvbGltaXRzLmgiIDENCiMgMTI0ICIuLi9pbmNsdWRlL2xpbWl0cy5oIg0KIyAxICIvdXNy
L2xpYi9nY2MtbGliL3Bvd2VycGMtdW5rbm93bi1saW51eC1nbnUvMy4xL2luY2x1ZGUvbGltaXRz
LmgiIDEgMw0KIyAxMjUgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDINCiMgMTQ0ICIuLi9pbmNsdWRl
L2xpbWl0cy5oIg0KIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxDQojIDEgIi4u
L3Bvc2l4L2JpdHMvcG9zaXgxX2xpbS5oIiAxDQojIDEyNiAiLi4vcG9zaXgvYml0cy9wb3NpeDFf
bGltLmgiDQojIDEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRz
L2xvY2FsX2xpbS5oIiAxDQojIDM2ICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3Yv
bGludXgvYml0cy9sb2NhbF9saW0uaCINCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9saW1pdHMuaCIgMSAzDQojIDM3ICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3Yv
bGludXgvYml0cy9sb2NhbF9saW0uaCIgMg0KIyAxMjcgIi4uL3Bvc2l4L2JpdHMvcG9zaXgxX2xp
bS5oIiAyDQojIDIgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDINCiMgMTQ1ICIuLi9p
bmNsdWRlL2xpbWl0cy5oIiAyDQoNCg0KDQojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDJfbGlt
LmgiIDENCiMgMSAiLi4vcG9zaXgvYml0cy9wb3NpeDJfbGltLmgiIDENCiMgMiAiLi4vaW5jbHVk
ZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMg0KIyAxNDkgIi4uL2luY2x1ZGUvbGltaXRzLmgiIDINCg0K
DQoNCiMgMSAiLi4vaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAxDQojIDM0ICIuLi9pbmNsdWRl
L2JpdHMveG9wZW5fbGltLmgiDQojIDEgIi9ob21lL2NvbXBpbGVyL2J1aWxkLWdsaWJjLTIuMi41
LWdjY3Rlc3QvYml0cy9zdGRpb19saW0uaCIgMQ0KIyAzNSAiLi4vaW5jbHVkZS9iaXRzL3hvcGVu
X2xpbS5oIiAyDQojIDE1MyAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMg0KIyAyNiAiLi4vbG9jYWxl
L2xvY2FsZWluZm8uaCIgMg0KIyAxICIuLi9pbmNsdWRlL3RpbWUuaCIgMQ0KDQoNCg0KDQojIDEg
Ii4uL3RpbWUvdGltZS5oIiAxDQojIDMwICIuLi90aW1lL3RpbWUuaCINCg0KDQoNCg0KDQoNCg0K
DQojIDEgIi91c3IvbGliL2djYy1saWIvcG93ZXJwYy11bmtub3duLWxpbnV4LWdudS8zLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzDQojIDM5ICIuLi90aW1lL3RpbWUuaCIgMg0KDQoNCg0KIyAxICIu
Li9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3RpbWUuaCIgMQ0KIyA0MyAiLi4vdGltZS90
aW1lLmgiIDINCiMgMTE4ICIuLi90aW1lL3RpbWUuaCINCnN0cnVjdCB0bQ0Kew0KICBpbnQgdG1f
c2VjOw0KICBpbnQgdG1fbWluOw0KICBpbnQgdG1faG91cjsNCiAgaW50IHRtX21kYXk7DQogIGlu
dCB0bV9tb247DQogIGludCB0bV95ZWFyOw0KICBpbnQgdG1fd2RheTsNCiAgaW50IHRtX3lkYXk7
DQogIGludCB0bV9pc2RzdDsNCg0KDQogIGxvbmcgaW50IHRtX2dtdG9mZjsNCiAgX19jb25zdCBj
aGFyICp0bV96b25lOw0KDQoNCg0KDQp9Ow0KDQoNCg0KDQpzdHJ1Y3QgaXRpbWVyc3BlYw0KICB7
DQogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOw0KICAgIHN0cnVjdCB0aW1lc3BlYyBp
dF92YWx1ZTsNCiAgfTsNCg0KDQpzdHJ1Y3Qgc2lnZXZlbnQ7DQojIDE2MyAiLi4vdGltZS90aW1l
LmgiDQpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9pZCkgOw0KDQoNCmV4dGVybiB0aW1lX3QgdGlt
ZSAodGltZV90ICpfX3RpbWVyKSA7DQoNCg0KZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGltZV90
IF9fdGltZTEsIHRpbWVfdCBfX3RpbWUwKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7DQoNCg0KZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgOw0KDQoNCg0K
DQoNCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhzaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCkgOw0KDQoNCg0KDQpleHRlcm4gY2hhciAqc3RycHRpbWUgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsDQogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0IHRtICpfX3RwKQ0KICAgICA7DQoNCg0KDQoN
Cg0KZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOw0K
DQoNCg0KZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1l
cikgOw0KDQoNCg0KDQpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAoX19jb25zdCB0aW1lX3Qg
Kl9fcmVzdHJpY3QgX190aW1lciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX190cCkgOw0KDQoNCg0KZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1l
X3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsNCg0KDQoNCg0KZXh0
ZXJuIGNoYXIgKmFzY3RpbWUgKF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSA7DQoNCg0KZXh0ZXJu
IGNoYXIgKmN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOw0KDQoNCg0KDQoNCg0KZXh0
ZXJuIGNoYXIgKmFzY3RpbWVfciAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwN
CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsNCg0KDQpl
eHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwN
CiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7DQoNCg0KDQoN
CmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsNCmV4dGVybiBpbnQgX19kYXlsaWdodDsNCmV4dGVy
biBsb25nIGludCBfX3RpbWV6b25lOw0KDQoNCg0KDQpleHRlcm4gY2hhciAqdHpuYW1lWzJdOw0K
DQoNCg0KZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIDsNCg0KDQoNCmV4dGVybiBpbnQgZGF5bGln
aHQ7DQpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBzdGlt
ZSAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgOw0KIyAyNzEgIi4uL3RpbWUvdGltZS5oIg0KZXh0
ZXJuIHRpbWVfdCB0aW1lZ20gKHN0cnVjdCB0bSAqX190cCkgOw0KDQoNCmV4dGVybiB0aW1lX3Qg
dGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIDsNCg0KDQpleHRlcm4gaW50IGR5c2l6ZSAoaW50
IF9feWVhcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOw0KDQoNCg0KDQoNCmV4dGVybiBp
bnQgbmFub3NsZWVwIChfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwN
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7DQoN
Cg0KDQpleHRlcm4gaW50IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVj
dCB0aW1lc3BlYyAqX19yZXMpIDsNCg0KDQpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2Nr
aWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHApIDsNCg0KDQpleHRlcm4gaW50
IGNsb2NrX3NldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBfX2NvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqX190cCkNCiAgICAgOw0KDQoNCg0KZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNs
b2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQgX19mbGFncywNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbSkgOw0KDQoNCmV4dGVybiBpbnQgY2xvY2tf
Z2V0Y3B1Y2xvY2tpZCAocGlkX3QgX19waWQsIGNsb2NraWRfdCAqX19jbG9ja19pZCkgOw0KDQoN
Cg0KDQpleHRlcm4gaW50IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7
DQoNCg0KZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSA7DQoNCg0K
ZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3Ms
DQogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9f
cmVzdHJpY3QgX192YWx1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1l
cnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIDsNCg0KDQpleHRlcm4gaW50IHRpbWVyX2dldHRp
bWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX192YWx1ZSkNCiAgICAg
Ow0KDQoNCmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1biAodGltZXJfdCBfX3RpbWVyaWQpIDsN
CiMgMzQyICIuLi90aW1lL3RpbWUuaCINCmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7DQoNCg0KDQoN
Cg0KZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZSAoX19jb25zdCBjaGFyICpfX3N0cmluZykgOw0K
IyAzNTcgIi4uL3RpbWUvdGltZS5oIg0KZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX19yZXNidWZwKSA7DQoNCg0KDQoNCiMgNiAiLi4vaW5jbHVkZS90aW1lLmgi
IDINCg0KDQpzdHJ1Y3QgdG07DQoNCg0KZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCBf
X21vbl95ZGF5WzJdWzEzXTsNCg0KDQpleHRlcm4gc3RydWN0IHRtIF90bWJ1ZjsNCg0KDQpleHRl
cm4gY2hhciAqX190enN0cmluZyAoY29uc3QgY2hhciAqc3RyaW5nKTsNCg0KDQpleHRlcm4gc2l6
ZV90IF9fdHpuYW1lX2N1cl9tYXg7DQoNCg0KZXh0ZXJuIGludCBfX3VzZV90emZpbGU7DQoNCmV4
dGVybiB2b2lkIF9fdHpmaWxlX3JlYWQgKGNvbnN0IGNoYXIgKmZpbGUsIHNpemVfdCBleHRyYSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipleHRyYXApOw0KZXh0ZXJuIGludCBf
X3R6ZmlsZV9jb21wdXRlICh0aW1lX3QgdGltZXIsIGludCB1c2VfbG9jYWx0aW1lLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqbGVhcF9jb3JyZWN0LCBpbnQgKmxlYXBf
aGl0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKnRwKTsNCmV4dGVy
biB2b2lkIF9fdHpmaWxlX2RlZmF1bHQgKGNvbnN0IGNoYXIgKnN0ZCwgY29uc3QgY2hhciAqZHN0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgc3Rkb2ZmLCBsb25nIGlu
dCBkc3RvZmYpOw0KDQoNCg0KDQpleHRlcm4gdGltZV90IF9fbWt0aW1lX2ludGVybmFsIChzdHJ1
Y3QgdG0gKl9fdHAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0g
KigqX19mdW5jKSAoY29uc3QgdGltZV90ICosDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICopLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZV90ICpfX29mZnNldCk7DQpleHRlcm4gc3RydWN0IHRtICpf
X2xvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX190aW1lciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX190cCk7DQoNCmV4dGVybiBzdHJ1Y3QgdG0gKl9f
Z210aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCk7DQoNCg0KDQoN
Cg0KZXh0ZXJuIGludCBfX29mZnRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyLA0KICAgICAg
ICAgICAgICAgICAgICAgIGxvbmcgaW50IF9fb2Zmc2V0LA0KICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCB0bSAqX190cCk7DQoNCmV4dGVybiBjaGFyICpfX2FzY3RpbWVfciAoX19jb25zdCBz
dHJ1Y3QgdG0gKl9fdHAsIGNoYXIgKl9fYnVmKTsNCmV4dGVybiB2b2lkIF9fdHpzZXQgKHZvaWQp
Ow0KDQoNCmV4dGVybiBzdHJ1Y3QgdG0gKl9fdHpfY29udmVydCAoY29uc3QgdGltZV90ICp0aW1l
ciwgaW50IHVzZV9sb2NhbHRpbWUsIHN0cnVjdCB0bSAqdHApOw0KDQoNCg0KZXh0ZXJuIGxvbmcg
aW50IF9fdHpuYW1lX21heCAodm9pZCk7DQoNCmV4dGVybiBpbnQgX19uYW5vc2xlZXAgKF9fY29u
c3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZyk7DQpleHRlcm4gaW50IF9fZ2V0ZGF0
ZV9yIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzdHJ1Y3QgdG0gKl9fcmVzYnVmcCk7DQoNCg0K
DQpleHRlcm4gaW50IF9fZ2V0Y2xrdGNrICh2b2lkKTsNCiMgMjcgIi4uL2xvY2FsZS9sb2NhbGVp
bmZvLmgiIDINCg0KIyAxICIuLi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxDQojIDI5ICIuLi9sb2Nh
bGUvbG9jYWxlaW5mby5oIiAyDQoNCg0KDQoNCiMgMSAiLi4vaW50bC9sb2FkaW5mby5oIiAxDQoj
IDU1ICIuLi9pbnRsL2xvYWRpbmZvLmgiDQpzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlDQp7DQogIGNv
bnN0IGNoYXIgKmZpbGVuYW1lOw0KICBpbnQgZGVjaWRlZDsNCg0KICBjb25zdCB2b2lkICpkYXRh
Ow0KDQogIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKm5leHQ7DQogIHN0cnVjdCBsb2FkZWRfbDEw
bmZpbGUgKnN1Y2Nlc3NvclsxXTsNCn07DQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hhciAq
X25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb25zdCBjaGFyICpjb2Rlc2V0LCBzaXplX3QgbmFtZV9s
ZW4pOw0KDQoNCmV4dGVybiBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoNCl9ubF9tYWtlX2wxMG5m
bGlzdCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3QsIGNvbnN0IGNoYXIg
KmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssIGNvbnN0IGNoYXIgKmxhbmd1
YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksIGNvbnN0IGNoYXIgKmNvZGVzZXQsIGNvbnN0IGNo
YXIgKm5vcm1hbGl6ZWRfY29kZXNldCwgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIg
KnNwZWNpYWwsIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLCBjb25z
dCBjaGFyICpmaWxlbmFtZSwgaW50IGRvX2FsbG9jYXRlKTsNCiMgODUgIi4uL2ludGwvbG9hZGlu
Zm8uaCINCmV4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICpu
YW1lKTsNCg0KDQoNCmV4dGVybiBpbnQgX25sX2V4cGxvZGVfbmFtZSAoY2hhciAqbmFtZSwgY29u
c3QgY2hhciAqKmxhbmd1YWdlLCBjb25zdCBjaGFyICoqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKip0
ZXJyaXRvcnksIGNvbnN0IGNoYXIgKipjb2Rlc2V0LCBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9j
b2Rlc2V0LCBjb25zdCBjaGFyICoqc3BlY2lhbCwgY29uc3QgY2hhciAqKnNwb25zb3IsIGNvbnN0
IGNoYXIgKipyZXZpc2lvbik7DQojIDk4ICIuLi9pbnRsL2xvYWRpbmZvLmgiDQpleHRlcm4gY2hh
ciAqX25sX2ZpbmRfbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUpOw0KIyAzNCAiLi4vbG9jYWxl
L2xvY2FsZWluZm8uaCIgMg0KIyA0NyAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCINCnN0cnVjdCBs
b2NhbGVfZGF0YQ0Kew0KICBjb25zdCBjaGFyICpuYW1lOw0KICBjb25zdCBjaGFyICpmaWxlZGF0
YTsNCiAgb2ZmX3QgZmlsZXNpemU7DQogIGludCBtbWFwZWQ7DQoNCiAgdW5zaWduZWQgaW50IHVz
YWdlX2NvdW50Ow0KDQogIGludCB1c2VfdHJhbnNsaXQ7DQoNCiAgY29uc3QgY2hhciAqb3B0aW9u
czsNCg0KDQogIHVuc2lnbmVkIGludCBuc3RyaW5nczsNCiAgdW5pb24gbG9jYWxlX2RhdGFfdmFs
dWUNCiAgew0KICAgIGNvbnN0IHVpbnQzMl90ICp3c3RyOw0KICAgIGNvbnN0IGNoYXIgKnN0cmlu
ZzsNCiAgICB1bnNpZ25lZCBpbnQgd29yZDsNCiAgfQ0KICB2YWx1ZXMgW107DQp9Ow0KDQoNCmVu
dW0gY29sbF9zb3J0X3J1bGUNCnsNCiAgaWxsZWdhbF8wX18sDQogIHNvcnRfZm9yd2FyZCwNCiAg
c29ydF9iYWNrd2FyZCwNCiAgaWxsZWdhbF8zX18sDQogIHNvcnRfcG9zaXRpb24sDQogIHNvcnRf
Zm9yd2FyZF9wb3NpdGlvbiwNCiAgc29ydF9iYWNrd2FyZF9wb3NpdGlvbiwNCiAgc29ydF9tYXNr
DQp9Ow0KDQoNCmVudW0gdmFsdWVfdHlwZQ0Kew0KICBub25lLA0KICBzdHJpbmcsDQogIHN0cmlu
Z2FycmF5LA0KICBieXRlLA0KICBieXRlYXJyYXksDQogIHdvcmQsDQogIHN0cmluZ2xpc3QsDQog
IHdvcmRhcnJheSwNCiAgd3N0cmluZywNCiAgd3N0cmluZ2FycmF5LA0KICB3c3RyaW5nbGlzdA0K
fTsNCiMgMTEwICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIg0Kc3RydWN0IGVyYV9lbnRyeQ0Kew0K
ICB1aW50MzJfdCBkaXJlY3Rpb247DQogIGludDMyX3Qgb2Zmc2V0Ow0KICBpbnQzMl90IHN0YXJ0
X2RhdGVbM107DQogIGludDMyX3Qgc3RvcF9kYXRlWzNdOw0KICBjb25zdCBjaGFyICplcmFfbmFt
ZTsNCiAgY29uc3QgY2hhciAqZXJhX2Zvcm1hdDsNCiAgY29uc3Qgd2NoYXJfdCAqZXJhX3duYW1l
Ow0KICBjb25zdCB3Y2hhcl90ICplcmFfd2Zvcm1hdDsNCiAgaW50IGFic29sdXRlX2RpcmVjdGlv
bjsNCg0KDQoNCn07DQoNCg0KDQoNCmVudW0NCnsNCiAgX19UT1dfdG91cHBlciA9IDAsDQogIF9f
VE9XX3RvbG93ZXIgPSAxDQp9Ow0KIyAxNDcgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiDQojIDEg
Ii4uL2xvY2FsZS9jYXRlZ29yaWVzLmRlZiIgMQ0KIyA0MiAiLi4vbG9jYWxlL2NhdGVnb3JpZXMu
ZGVmIg0KZXh0ZXJuIHN0cnVjdCBsb2NhbGVfZGF0YSAqX25sX2N1cnJlbnRfTENfQ09MTEFURTsN
CiMgNjggIi4uL2xvY2FsZS9jYXRlZ29yaWVzLmRlZiINCmV4dGVybiBzdHJ1Y3QgbG9jYWxlX2Rh
dGEgKl9ubF9jdXJyZW50X0xDX0NUWVBFOw0KIyAxMzkgIi4uL2xvY2FsZS9jYXRlZ29yaWVzLmRl
ZiINCmV4dGVybiBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9ubF9jdXJyZW50X0xDX01PTkVUQVJZOw0K
IyAxOTEgIi4uL2xvY2FsZS9jYXRlZ29yaWVzLmRlZiINCmV4dGVybiBzdHJ1Y3QgbG9jYWxlX2Rh
dGEgKl9ubF9jdXJyZW50X0xDX05VTUVSSUM7DQojIDIwNSAiLi4vbG9jYWxlL2NhdGVnb3JpZXMu
ZGVmIg0KZXh0ZXJuIHN0cnVjdCBsb2NhbGVfZGF0YSAqX25sX2N1cnJlbnRfTENfVElNRTsNCiMg
MjUzICIuLi9sb2NhbGUvY2F0ZWdvcmllcy5kZWYiDQpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRh
ICpfbmxfY3VycmVudF9MQ19NRVNTQUdFUzsNCiMgMjY0ICIuLi9sb2NhbGUvY2F0ZWdvcmllcy5k
ZWYiDQpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRhICpfbmxfY3VycmVudF9MQ19QQVBFUjsNCiMg
MjczICIuLi9sb2NhbGUvY2F0ZWdvcmllcy5kZWYiDQpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRh
ICpfbmxfY3VycmVudF9MQ19OQU1FOw0KIyAyODYgIi4uL2xvY2FsZS9jYXRlZ29yaWVzLmRlZiIN
CmV4dGVybiBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9ubF9jdXJyZW50X0xDX0FERFJFU1M7DQojIDMw
NSAiLi4vbG9jYWxlL2NhdGVnb3JpZXMuZGVmIg0KZXh0ZXJuIHN0cnVjdCBsb2NhbGVfZGF0YSAq
X25sX2N1cnJlbnRfTENfVEVMRVBIT05FOw0KIyAzMTYgIi4uL2xvY2FsZS9jYXRlZ29yaWVzLmRl
ZiINCmV4dGVybiBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9ubF9jdXJyZW50X0xDX01FQVNVUkVNRU5U
Ow0KDQoNCg0KDQoNCg0KDQpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRhICpfbmxfY3VycmVudF9M
Q19JREVOVElGSUNBVElPTjsNCiMgMTQ4ICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIiAyDQoNCg0K
ZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IF9ubF9jYXRlZ29yeV9uYW1lc1sxM107DQpleHRlcm4g
Y29uc3Qgc2l6ZV90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzWzEzXTsNCmV4dGVybiBzdHJ1Y3Qg
bG9jYWxlX2RhdGEgKiAqY29uc3QgX25sX2N1cnJlbnRbMTNdOw0KDQoNCmV4dGVybiBjb25zdCBj
aGFyIF9ubF9DX25hbWVbXTsNCmV4dGVybiBjb25zdCBjaGFyIF9ubF9QT1NJWF9uYW1lW107DQoN
Cg0KZXh0ZXJuIGNvbnN0IGNoYXIgX25sX0NfY29kZXNldFtdOw0KIyAxODIgIi4uL2xvY2FsZS9s
b2NhbGVpbmZvLmgiDQpleHRlcm4gc3RydWN0IGxvY2FsZV9kYXRhICpfbmxfZmluZF9sb2NhbGUg
KGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbG9jYWxlX3BhdGhfbGVuLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKipuYW1l
KTsNCg0KDQpleHRlcm4gdm9pZCBfbmxfbG9hZF9sb2NhbGUgKHN0cnVjdCBsb2FkZWRfbDEwbmZp
bGUgKmZpbGUsIGludCBjYXRlZ29yeSk7DQoNCg0KZXh0ZXJuIHZvaWQgX25sX3VubG9hZF9sb2Nh
bGUgKHN0cnVjdCBsb2NhbGVfZGF0YSAqbG9jYWxlKTsNCg0KDQpleHRlcm4gdm9pZCBfbmxfcmVt
b3ZlX2xvY2FsZSAoaW50IGxvY2FsZSwgc3RydWN0IGxvY2FsZV9kYXRhICpkYXRhKTsNCg0KDQoN
CmV4dGVybiBzdHJ1Y3QgZXJhX2VudHJ5ICpfbmxfZ2V0X2VyYV9lbnRyeSAoY29uc3Qgc3RydWN0
IHRtICp0cCk7DQoNCg0KZXh0ZXJuIHN0cnVjdCBlcmFfZW50cnkgKl9ubF9zZWxlY3RfZXJhX2Vu
dHJ5IChpbnQgY250KTsNCg0KDQpleHRlcm4gY29uc3QgY2hhciAqX25sX2dldF9hbHRfZGlnaXQg
KHVuc2lnbmVkIGludCBudW1iZXIpOw0KDQoNCmV4dGVybiBjb25zdCB3Y2hhcl90ICpfbmxfZ2V0
X3dhbHRfZGlnaXQgKHVuc2lnbmVkIGludCBudW1iZXIpOw0KDQoNCmV4dGVybiBpbnQgX25sX3Bh
cnNlX2FsdF9kaWdpdCAoY29uc3QgY2hhciAqKnN0cnApOw0KDQoNCmV4dGVybiB2b2lkIF9ubF9w
b3N0bG9hZF9jdHlwZSAodm9pZCk7DQpleHRlcm4gdm9pZCBfbmxfcG9zdGxvYWRfdGltZSAodm9p
ZCk7DQojIDQ3ICJzdHJjb2xsLmMiIDINCg0KDQppbnQNCnN0cmNvbGwgKHMxLCBzMikNCiAgICAg
Y29uc3QgY2hhciAqczE7DQogICAgIGNvbnN0IGNoYXIgKnMyOw0KDQoNCg0KDQoNCg0KDQp7DQoN
Cg0KDQoNCiAgdWludF9mYXN0MzJfdCBucnVsZXMgPSAoX25sX2N1cnJlbnRfTENfQ09MTEFURS0+
dmFsdWVzWygoaW50KSAoX05MX0NPTExBVEVfTlJVTEVTKSAmIDB4ZmZmZildLndvcmQpOw0KDQoN
Cg0KICBjb25zdCB1bnNpZ25lZCBjaGFyICpydWxlc2V0czsNCiAgY29uc3QgaW50MzJfdCAqdGFi
bGU7DQogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKndlaWdodHM7DQogIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKmV4dHJhOw0KICBjb25zdCBpbnQzMl90ICppbmRpcmVjdDsNCiAgdWludF9mYXN0MzJfdCBw
YXNzOw0KICBpbnQgcmVzdWx0ID0gMDsNCiAgY29uc3QgdW5zaWduZWQgY2hhciAqdXMxOw0KICBj
b25zdCB1bnNpZ25lZCBjaGFyICp1czI7DQogIHNpemVfdCBzMWxlbjsNCiAgc2l6ZV90IHMybGVu
Ow0KICBpbnQzMl90ICppZHgxYXJyOw0KICBpbnQzMl90ICppZHgyYXJyOw0KICB1bnNpZ25lZCBj
aGFyICpydWxlMWFycjsNCiAgdW5zaWduZWQgY2hhciAqcnVsZTJhcnI7DQogIHNpemVfdCBpZHgx
bWF4Ow0KICBzaXplX3QgaWR4Mm1heDsNCiAgc2l6ZV90IGlkeDFjbnQ7DQogIHNpemVfdCBpZHgy
Y250Ow0KICBzaXplX3QgaWR4MW5vdzsNCiAgc2l6ZV90IGlkeDJub3c7DQogIHNpemVfdCBiYWNr
dzFfc3RvcDsNCiAgc2l6ZV90IGJhY2t3Ml9zdG9wOw0KICBzaXplX3QgYmFja3cxOw0KICBzaXpl
X3QgYmFja3cyOw0KICBpbnQgdmFsMTsNCiAgaW50IHZhbDI7DQogIGludCBwb3NpdGlvbjsNCiAg
aW50IHNlcTFsZW47DQogIGludCBzZXEybGVuOw0KICBpbnQgdXNlX21hbGxvYzsNCg0KIyAxICIu
Li9sb2NhbGUvd2VpZ2h0LmgiIDENCiMgMjEgIi4uL2xvY2FsZS93ZWlnaHQuaCINCnN0YXRpYyBp
bmxpbmUgaW50MzJfdA0KZmluZGlkeCAoY29uc3QgdW5zaWduZWQgY2hhciAqKmNwcCkNCnsNCiAg
aW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOw0KICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpjcDsNCiAgY29uc3QgdW5zaWduZWQgY2hhciAqdXNyYzsNCg0KICBpZiAoaSA+PSAwKQ0KDQog
ICAgcmV0dXJuIGk7DQoNCg0KDQogIGNwID0gJmV4dHJhWy1pXTsNCiAgdXNyYyA9ICpjcHA7DQog
IHdoaWxlICgxKQ0KICAgIHsNCiAgICAgIHNpemVfdCBuaGVyZTsNCg0KDQogICAgICBpID0gKigo
Y29uc3QgaW50MzJfdCAqKSBjcCk7DQogICAgICBjcCArPSBzaXplb2YgKGludDMyX3QpOw0KDQoN
Cg0KDQogICAgICBuaGVyZSA9ICpjcCsrOw0KDQogICAgICBpZiAoaSA+PSAwKQ0KICAgICAgICB7
DQoNCg0KDQoNCg0KICAgICAgICAgIHNpemVfdCBjbnQ7DQoNCiAgICAgICAgICBmb3IgKGNudCA9
IDA7IGNudCA8IG5oZXJlOyArK2NudCkNCiAgICAgICAgICAgIGlmIChjcFtjbnRdICE9IHVzcmNb
Y250XSkNCiAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICBpZiAoY250ID09IG5oZXJl
KQ0KICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgICpjcHAgKz0gbmhlcmU7DQogICAgICAg
ICAgICAgIHJldHVybiBpOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICBjcCArPSBuaGVy
ZTsNCiAgICAgICAgICBpZiAoKDEgKyBuaGVyZSkgJSBfX2FsaWdub2ZfXyAoaW50MzJfdCkgIT0g
MCkNCiAgICAgICAgICAgIGNwICs9IF9fYWxpZ25vZl9fIChpbnQzMl90KSAtICgxICsgbmhlcmUp
ICUgX19hbGlnbm9mX18gKGludDMyX3QpOw0KICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAg
IHsNCg0KDQogICAgICAgICAgc2l6ZV90IGNudDsNCiAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
MDsNCg0KICAgICAgICAgIGZvciAoY250ID0gMDsgY250IDwgbmhlcmU7ICsrY250KQ0KICAgICAg
ICAgICAgaWYgKGNwW2NudF0gIT0gdXNyY1tjbnRdKQ0KICAgICAgICAgICAgICBicmVhazsNCg0K
ICAgICAgICAgIGlmIChjbnQgIT0gbmhlcmUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
IGlmIChjcFtjbnRdID4gdXNyY1tjbnRdKQ0KICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAg
ICAgICAgICAgY3AgKz0gMiAqIG5oZXJlOw0KICAgICAgICAgICAgICAgICAgaWYgKCgxICsgMiAq
IG5oZXJlKSAlIF9fYWxpZ25vZl9fIChpbnQzMl90KSAhPSAwKQ0KICAgICAgICAgICAgICAgICAg
ICBjcCArPSAoX19hbGlnbm9mX18gKGludDMyX3QpDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAtICgxICsgMiAqIG5oZXJlKSAlIF9fYWxpZ25vZl9fIChpbnQzMl90KSk7DQogICAgICAgICAg
ICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICBm
b3IgKGNudCA9IDA7IGNudCA8IG5oZXJlOyArK2NudCkNCiAgICAgICAgICAgICAgICBpZiAoY3Bb
bmhlcmUgKyBjbnRdICE9IHVzcmNbY250XSkNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQog
ICAgICAgICAgICAgIGlmIChjbnQgIT0gbmhlcmUgJiYgY3BbbmhlcmUgKyBjbnRdIDwgdXNyY1tj
bnRdKQ0KICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgY3AgKz0gMiAqIG5o
ZXJlOw0KICAgICAgICAgICAgICAgICAgaWYgKCgxICsgMiAqIG5oZXJlKSAlIF9fYWxpZ25vZl9f
IChpbnQzMl90KSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICBjcCArPSAoX19hbGlnbm9mX18g
KGludDMyX3QpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAtICgxICsgMiAqIG5oZXJlKSAl
IF9fYWxpZ25vZl9fIChpbnQzMl90KSk7DQogICAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAg
ICAgICAgICAgICAgICB9DQoNCg0KDQogICAgICAgICAgICAgIGZvciAoY250ID0gMDsgY3BbY250
XSA9PSB1c3JjW2NudF07ICsrY250KTsNCg0KICAgICAgICAgICAgICBkbw0KICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgIG9mZnNldCA8PD0gODsNCiAgICAgICAgICAgICAgICAg
IG9mZnNldCArPSB1c3JjW2NudF0gLSBjcFtjbnRdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgd2hpbGUgKCsrY250IDwgbmhlcmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgKmNwcCArPSBuaGVyZTsNCiAgICAgICAgICByZXR1cm4gaW5kaXJlY3RbLWkgKyBvZmZzZXRd
Ow0KICAgICAgICB9DQogICAgfQ0KDQoNCiAgcmV0dXJuIDB4NDMyMTk4NzY7DQp9DQojIDEwMiAi
c3RyY29sbC5jIiAyDQoNCiAgaWYgKG5ydWxlcyA9PSAwKQ0KICAgIHJldHVybiBfX2V4dGVuc2lv
bl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
czEpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChzMikgJiYgKF9fczFfbGVuID0gc3RybGVuIChz
MSksIF9fczJfbGVuID0gc3RybGVuIChzMiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHMx
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzMSkgPT0gMSkgfHwgX19zMV9sZW4gPj0g
NCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoczIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKHMyKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0
IGNoYXIgKikgKHMxKSwgKF9fY29uc3QgY2hhciAqKSAoczIpLCAoX19zMV9sZW4gPCBfX3MyX2xl
biA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHMx
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoczEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKHMxKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHMxKSwgX19zMV9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoczIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KChzMikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoczIpID09IDEpID8gKF9fZXh0ZW5z
aW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKHMyKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoczEpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHMyKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzNdKTsgfSB9IF9fcmVz
dWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIg
PSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHMxKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHMxKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHMxKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChzMSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoczIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzMikgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoczIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoczIp
LCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzMSkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHMxKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzMSkgPT0g
MSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVswXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoczIpKVswXSk7IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChzMSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChzMSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoczIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoczEpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAoczEsIHMyKSkpKTsgfSk7DQojIDExOCAic3RyY29sbC5jIg0KICBydWxlc2V0cyA9
IChjb25zdCB1bnNpZ25lZCBjaGFyICopDQogICAgKF9ubF9jdXJyZW50X0xDX0NPTExBVEUtPnZh
bHVlc1soKGludCkgKF9OTF9DT0xMQVRFX1JVTEVTRVRTKSAmIDB4ZmZmZildLnN0cmluZyk7DQog
IHRhYmxlID0gKGNvbnN0IGludDMyX3QgKikNCiAgICAoX25sX2N1cnJlbnRfTENfQ09MTEFURS0+
dmFsdWVzWygoaW50KSAoX05MX0NPTExBVEVfVEFCTEVNQikgJiAweGZmZmYpXS5zdHJpbmcpOw0K
ICB3ZWlnaHRzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikNCiAgICAoX25sX2N1cnJlbnRfTENf
Q09MTEFURS0+dmFsdWVzWygoaW50KSAoX05MX0NPTExBVEVfV0VJR0hUTUIpICYgMHhmZmZmKV0u
c3RyaW5nKTsNCiAgZXh0cmEgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKQ0KICAgIChfbmxfY3Vy
cmVudF9MQ19DT0xMQVRFLT52YWx1ZXNbKChpbnQpIChfTkxfQ09MTEFURV9FWFRSQU1CKSAmIDB4
ZmZmZildLnN0cmluZyk7DQogIGluZGlyZWN0ID0gKGNvbnN0IGludDMyX3QgKikNCiAgICAoX25s
X2N1cnJlbnRfTENfQ09MTEFURS0+dmFsdWVzWygoaW50KSAoX05MX0NPTExBVEVfSU5ESVJFQ1RN
QikgJiAweGZmZmYpXS5zdHJpbmcpOw0KDQogIHVzZV9tYWxsb2MgPSAwOw0KDQogICgodm9pZCkg
KCgoKHVpbnRwdHJfdCkgdGFibGUpICUgX19hbGlnbm9mX18gKHRhYmxlWzBdKSA9PSAwKSA/IDAg
OiAoX19hc3NlcnRfZmFpbCAoIigodWludHB0cl90KSB0YWJsZSkgJSBfX2FsaWdub2ZfXyAodGFi
bGVbMF0pID09IDAiLCAic3RyY29sbC5jIiwgMTMxLCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkp
KTsNCiAgKCh2b2lkKSAoKCgodWludHB0cl90KSB3ZWlnaHRzKSAlIF9fYWxpZ25vZl9fICh3ZWln
aHRzWzBdKSA9PSAwKSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoIigodWludHB0cl90KSB3ZWlnaHRz
KSAlIF9fYWxpZ25vZl9fICh3ZWlnaHRzWzBdKSA9PSAwIiwgInN0cmNvbGwuYyIsIDEzMiwgX19Q
UkVUVFlfRlVOQ1RJT05fXyksIDApKSk7DQogICgodm9pZCkgKCgoKHVpbnRwdHJfdCkgZXh0cmEp
ICUgX19hbGlnbm9mX18gKGV4dHJhWzBdKSA9PSAwKSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoIigo
dWludHB0cl90KSBleHRyYSkgJSBfX2FsaWdub2ZfXyAoZXh0cmFbMF0pID09IDAiLCAic3RyY29s
bC5jIiwgMTMzLCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpKTsNCiAgKCh2b2lkKSAoKCgodWlu
dHB0cl90KSBpbmRpcmVjdCkgJSBfX2FsaWdub2ZfXyAoaW5kaXJlY3RbMF0pID09IDApID8gMCA6
IChfX2Fzc2VydF9mYWlsICgiKCh1aW50cHRyX3QpIGluZGlyZWN0KSAlIF9fYWxpZ25vZl9fIChp
bmRpcmVjdFswXSkgPT0gMCIsICJzdHJjb2xsLmMiLCAxMzQsIF9fUFJFVFRZX0ZVTkNUSU9OX18p
LCAwKSkpOw0KDQoNCiAgczFsZW4gPSBzdHJsZW4gKHMxKTsNCiAgczJsZW4gPSBzdHJsZW4gKHMy
KTsNCg0KDQoNCiAgdXMxID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgczE7DQogIHVzMiA9IChj
b25zdCB1bnNpZ25lZCBjaGFyICopIHMyOw0KIyAxNTQgInN0cmNvbGwuYyINCiAgaWYgKHMxbGVu
ICsgczJsZW4gPj0gMTYzODQpDQogICAgew0KICAgICAgaWR4MWFyciA9IChpbnQzMl90ICopIG1h
bGxvYyAoKHMxbGVuICsgczJsZW4pICogKHNpemVvZiAoaW50MzJfdCkgKyAxKSk7DQogICAgICBp
ZHgyYXJyID0gJmlkeDFhcnJbczFsZW5dOw0KICAgICAgcnVsZTFhcnIgPSAodW5zaWduZWQgY2hh
ciAqKSAmaWR4MmFycltzMmxlbl07DQogICAgICBydWxlMmFyciA9ICZydWxlMWFycltzMWxlbl07
DQoNCiAgICAgIGlmIChpZHgxYXJyID09ICgodm9pZCAqKTApKQ0KDQoNCg0KDQoNCg0KICAgICAg
ICBnb3RvIHRyeV9zdGFjazsNCiAgICAgIHVzZV9tYWxsb2MgPSAxOw0KICAgIH0NCiAgZWxzZQ0K
ICAgIHsNCiAgICB0cnlfc3RhY2s6DQogICAgICBpZHgxYXJyID0gKGludDMyX3QgKikgX19idWls
dGluX2FsbG9jYSAoczFsZW4gKiBzaXplb2YgKGludDMyX3QpKTsNCiAgICAgIGlkeDJhcnIgPSAo
aW50MzJfdCAqKSBfX2J1aWx0aW5fYWxsb2NhIChzMmxlbiAqIHNpemVvZiAoaW50MzJfdCkpOw0K
ICAgICAgcnVsZTFhcnIgPSAodW5zaWduZWQgY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhIChzMWxl
bik7DQogICAgICBydWxlMmFyciA9ICh1bnNpZ25lZCBjaGFyICopIF9fYnVpbHRpbl9hbGxvY2Eg
KHMybGVuKTsNCiAgICB9DQoNCiAgaWR4MWNudCA9IDA7DQogIGlkeDJjbnQgPSAwOw0KICBpZHgx
bWF4ID0gMDsNCiAgaWR4Mm1heCA9IDA7DQogIGlkeDFub3cgPSAwOw0KICBpZHgybm93ID0gMDsN
CiAgYmFja3cxX3N0b3AgPSB+MHVsOw0KICBiYWNrdzJfc3RvcCA9IH4wdWw7DQogIGJhY2t3MSA9
IH4wdWw7DQogIGJhY2t3MiA9IH4wdWw7DQogIHNlcTFsZW4gPSAwOw0KICBzZXEybGVuID0gMDsN
CiAgcG9zaXRpb24gPSBydWxlc2V0c1swXSAmIHNvcnRfcG9zaXRpb247DQogIHdoaWxlICgxKQ0K
ICAgIHsNCiAgICAgIHZhbDEgPSAwOw0KICAgICAgdmFsMiA9IDA7DQoNCg0KICAgICAgaWYgKHNl
cTFsZW4gPT0gMCkNCiAgICAgICAgZG8NCiAgICAgICAgICB7DQogICAgICAgICAgICArK3ZhbDE7
DQoNCiAgICAgICAgICAgIGlmIChiYWNrdzFfc3RvcCAhPSB+MHVsKQ0KICAgICAgICAgICAgICB7
DQoNCiAgICAgICAgICAgICAgICBpZiAoYmFja3cxID09IGJhY2t3MV9zdG9wKQ0KICAgICAgICAg
ICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeDFjbnQgPCBpZHgxbWF4
KQ0KICAgICAgICAgICAgICAgICAgICAgIGlkeDFub3cgPSBpZHgxY250Ow0KICAgICAgICAgICAg
ICAgICAgICBlbHNlDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgaWR4
MW5vdyA9IC0tYmFja3cxOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBiYWNrdzFfc3RvcCA9IGlkeDFtYXg7DQoNCiAg
ICAgICAgICAgICAgICB3aGlsZSAoKnVzMSAhPSAnXDAnKQ0KICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHRtcCA9IGZpbmRpZHggKCZ1czEpOw0KICAgICAg
ICAgICAgICAgICAgICBydWxlMWFycltpZHgxbWF4XSA9IHRtcCA+PiAyNDsNCiAgICAgICAgICAg
ICAgICAgICAgaWR4MWFycltpZHgxbWF4XSA9IHRtcCAmIDB4ZmZmZmZmOw0KICAgICAgICAgICAg
ICAgICAgICBpZHgxY250ID0gaWR4MW1heCsrOw0KDQogICAgICAgICAgICAgICAgICAgIGlmICgo
cnVsZXNldHNbcnVsZTFhcnJbaWR4MWNudF0gKiBucnVsZXNdDQogICAgICAgICAgICAgICAgICAg
ICAgICAgJiBzb3J0X2JhY2t3YXJkKSA9PSAwKQ0KDQogICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgICAgICAgICAgICAgICsraWR4MWNudDsNCiAgICAgICAgICAgICAgICAgIH0N
Cg0KICAgICAgICAgICAgICAgIGlmIChiYWNrdzFfc3RvcCA+PSBpZHgxY250KQ0KICAgICAgICAg
ICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICAgIGlmIChpZHgxY250ID09IGlkeDFtYXgg
fHwgYmFja3cxX3N0b3AgPiBpZHgxY250KQ0KDQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQoNCiAgICAgICAgICAgICAgICAgICAgYmFja3cxX3N0b3AgPSB+MHVsOw0KICAgICAgICAgICAg
ICAgICAgICBpZHgxbm93ID0gaWR4MWNudDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICBlbHNlDQoNCiAgICAgICAgICAgICAgICAgIGlkeDFub3cgPSBiYWNrdzEgPSBpZHgx
Y250IC0gMTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgd2hpbGUgKChz
ZXExbGVuID0gd2VpZ2h0c1tpZHgxYXJyW2lkeDFub3ddKytdKSA9PSAwKTsNCg0KDQogICAgICBp
ZiAoc2VxMmxlbiA9PSAwKQ0KICAgICAgICBkbw0KICAgICAgICAgIHsNCiAgICAgICAgICAgICsr
dmFsMjsNCg0KICAgICAgICAgICAgaWYgKGJhY2t3Ml9zdG9wICE9IH4wdWwpDQogICAgICAgICAg
ICAgIHsNCg0KICAgICAgICAgICAgICAgIGlmIChiYWNrdzIgPT0gYmFja3cyX3N0b3ApDQogICAg
ICAgICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoaWR4MmNudCA8IGlk
eDJtYXgpDQogICAgICAgICAgICAgICAgICAgICAgaWR4Mm5vdyA9IGlkeDJjbnQ7DQogICAgICAg
ICAgICAgICAgICAgIGVsc2UNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
ICBpZHgybm93ID0gLS1iYWNrdzI7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGJhY2t3Ml9zdG9wID0gaWR4Mm1heDsN
Cg0KICAgICAgICAgICAgICAgIHdoaWxlICgqdXMyICE9ICdcMCcpDQogICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgIGludDMyX3QgdG1wID0gZmluZGlkeCAoJnVzMik7DQog
ICAgICAgICAgICAgICAgICAgIHJ1bGUyYXJyW2lkeDJtYXhdID0gdG1wID4+IDI0Ow0KICAgICAg
ICAgICAgICAgICAgICBpZHgyYXJyW2lkeDJtYXhdID0gdG1wICYgMHhmZmZmZmY7DQogICAgICAg
ICAgICAgICAgICAgIGlkeDJjbnQgPSBpZHgybWF4Kys7DQoNCiAgICAgICAgICAgICAgICAgICAg
aWYgKChydWxlc2V0c1tydWxlMmFycltpZHgyY250XSAqIG5ydWxlc10NCiAgICAgICAgICAgICAg
ICAgICAgICAgICAmIHNvcnRfYmFja3dhcmQpID09IDApDQoNCiAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgKytpZHgyY250Ow0KICAgICAgICAgICAgICAg
ICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGJhY2t3Ml9zdG9wID49IGlkeDJjbnQpDQogICAg
ICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeDJjbnQgPT0gaWR4
Mm1heCB8fCBiYWNrdzJfc3RvcCA+IGlkeDJjbnQpDQoNCiAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBiYWNrdzJfc3RvcCA9IH4wdWw7DQogICAgICAg
ICAgICAgICAgICAgIGlkeDJub3cgPSBpZHgyY250Ow0KICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIGVsc2UNCg0KICAgICAgICAgICAgICAgICAgaWR4Mm5vdyA9IGJhY2t3MiA9
IGlkeDJjbnQgLSAxOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB3aGls
ZSAoKHNlcTJsZW4gPSB3ZWlnaHRzW2lkeDJhcnJbaWR4Mm5vd10rK10pID09IDApOw0KDQoNCiAg
ICAgIGlmIChzZXExbGVuID09IDAgfHwgc2VxMmxlbiA9PSAwKQ0KICAgICAgICB7DQogICAgICAg
ICAgaWYgKHNlcTFsZW4gPT0gc2VxMmxlbikNCg0KDQogICAgICAgICAgICBicmVhazsNCg0KDQoN
CiAgICAgICAgICByZXN1bHQgPSBzZXExbGVuID09IDAgPyAtMSA6IDE7DQogICAgICAgICAgZ290
byBmcmVlX2FuZF9yZXR1cm47DQogICAgICAgIH0NCg0KDQogICAgICBpZiAocG9zaXRpb24gJiYg
dmFsMSAhPSB2YWwyKQ0KICAgICAgICB7DQogICAgICAgICAgcmVzdWx0ID0gdmFsMSAtIHZhbDI7
DQogICAgICAgICAgZ290byBmcmVlX2FuZF9yZXR1cm47DQogICAgICAgIH0NCg0KDQogICAgICBk
bw0KICAgICAgICB7DQogICAgICAgICAgaWYgKHdlaWdodHNbaWR4MWFycltpZHgxbm93XV0gIT0g
d2VpZ2h0c1tpZHgyYXJyW2lkeDJub3ddXSkNCiAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAg
ICByZXN1bHQgPSB3ZWlnaHRzW2lkeDFhcnJbaWR4MW5vd11dIC0gd2VpZ2h0c1tpZHgyYXJyW2lk
eDJub3ddXTsNCiAgICAgICAgICAgICAgZ290byBmcmVlX2FuZF9yZXR1cm47DQogICAgICAgICAg
ICB9DQoNCg0KICAgICAgICAgICsraWR4MWFycltpZHgxbm93XTsNCiAgICAgICAgICArK2lkeDJh
cnJbaWR4Mm5vd107DQoNCiAgICAgICAgICAtLXNlcTFsZW47DQogICAgICAgICAgLS1zZXEybGVu
Ow0KICAgICAgICB9DQogICAgICB3aGlsZSAoc2VxMWxlbiA+IDAgJiYgc2VxMmxlbiA+IDApOw0K
DQogICAgICBpZiAocG9zaXRpb24gJiYgc2VxMWxlbiAhPSBzZXEybGVuKQ0KICAgICAgICB7DQog
ICAgICAgICAgcmVzdWx0ID0gc2VxMWxlbiAtIHNlcTJsZW47DQogICAgICAgICAgZ290byBmcmVl
X2FuZF9yZXR1cm47DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQogIGZvciAocGFzcyA9IDE7IHBh
c3MgPCBucnVsZXM7ICsrcGFzcykNCiAgICB7DQoNCg0KICAgICAgaWR4MWNudCA9IDA7DQogICAg
ICBpZHgyY250ID0gMDsNCiAgICAgIGJhY2t3MV9zdG9wID0gfjB1bDsNCiAgICAgIGJhY2t3Ml9z
dG9wID0gfjB1bDsNCiAgICAgIGJhY2t3MSA9IH4wdWw7DQogICAgICBiYWNrdzIgPSB+MHVsOw0K
ICAgICAgcG9zaXRpb24gPSBydWxlc2V0c1tydWxlMWFyclswXSAqIG5ydWxlcyArIHBhc3NdICYg
c29ydF9wb3NpdGlvbjsNCg0KICAgICAgd2hpbGUgKDEpDQogICAgICAgIHsNCiAgICAgICAgICB2
YWwxID0gMDsNCiAgICAgICAgICB2YWwyID0gMDsNCg0KDQogICAgICAgICAgaWYgKHNlcTFsZW4g
PT0gMCkNCiAgICAgICAgICAgIGRvDQogICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAr
K3ZhbDE7DQoNCiAgICAgICAgICAgICAgICBpZiAoYmFja3cxX3N0b3AgIT0gfjB1bCkNCiAgICAg
ICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3cxID09IGJhY2t3
MV9zdG9wKQ0KICAgICAgICAgICAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaWR4MWNudCA8IGlkeDFtYXgpDQogICAgICAgICAgICAgICAgICAgICAgICAgIGlk
eDFub3cgPSBpZHgxY250Ow0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeDFu
b3cgPSB+MHVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgaWR4MW5vdyA9IC0tYmFja3cxOw0K
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYmFja3cxX3N0b3AgPSBpZHgxY250Ow0KDQogICAg
ICAgICAgICAgICAgICAgIHdoaWxlIChpZHgxY250IDwgaWR4MW1heCkNCiAgICAgICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJ1bGVzZXRzW3J1bGUxYXJy
W2lkeDFjbnRdICogbnJ1bGVzICsgcGFzc10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiBzb3J0X2JhY2t3YXJkKSA9PSAwKQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgKytpZHgxY250Ow0KICAgICAgICAgICAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoYmFja3cxX3N0b3AgPT0gaWR4MWNudCkN
CiAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
ZHgxY250ID09IGlkeDFtYXgpDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoN
CiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t3MV9zdG9wID0gfjB1bDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlkeDFub3cgPSBpZHgxY250Kys7DQogICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQoNCiAgICAgICAgICAgICAgICAgICAgICBpZHgx
bm93ID0gYmFja3cxID0gaWR4MWNudCAtIDE7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIHdoaWxlICgoc2VxMWxlbiA9IHdlaWdodHNbaWR4MWFycltp
ZHgxbm93XSsrXSkgPT0gMCk7DQoNCg0KICAgICAgICAgIGlmIChzZXEybGVuID09IDApDQogICAg
ICAgICAgICBkbw0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgKyt2YWwyOw0KDQog
ICAgICAgICAgICAgICAgaWYgKGJhY2t3Ml9zdG9wICE9IH4wdWwpDQogICAgICAgICAgICAgICAg
ICB7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t3MiA9PSBiYWNrdzJfc3RvcCkNCiAg
ICAgICAgICAgICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlk
eDJjbnQgPCBpZHgybWF4KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgybm93ID0gaWR4
MmNudDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgybm93ID0gfjB1bDsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxz
ZQ0KICAgICAgICAgICAgICAgICAgICAgIGlkeDJub3cgPSAtLWJhY2t3MjsNCiAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgICAgIGJhY2t3Ml9zdG9wID0gaWR4MmNudDsNCg0KICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAoaWR4MmNudCA8IGlkeDJtYXgpDQogICAgICAgICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChydWxlc2V0c1tydWxlMmFycltpZHgyY250XSAq
IG5ydWxlcyArIHBhc3NdDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgc29ydF9iYWNr
d2FyZCkgPT0gMCkNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICsraWR4MmNudDsNCiAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKGJhY2t3Ml9zdG9wID09IGlkeDJjbnQpDQogICAgICAgICAg
ICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4MmNudCA9PSBp
ZHgybWF4KQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAg
ICAgICAgICAgICAgICBiYWNrdzJfc3RvcCA9IH4wdWw7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZHgybm93ID0gaWR4MmNudCsrOw0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgZWxzZQ0KDQogICAgICAgICAgICAgICAgICAgICAgaWR4Mm5vdyA9IGJhY2t3
MiA9IGlkeDJjbnQgLSAxOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB3aGlsZSAoKHNlcTJsZW4gPSB3ZWlnaHRzW2lkeDJhcnJbaWR4Mm5vd10rK10p
ID09IDApOw0KDQoNCiAgICAgICAgICBpZiAoc2VxMWxlbiA9PSAwIHx8IHNlcTJsZW4gPT0gMCkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWYgKHNlcTFsZW4gPT0gc2VxMmxlbikNCg0K
DQogICAgICAgICAgICAgICAgYnJlYWs7DQoNCg0KDQogICAgICAgICAgICAgIHJlc3VsdCA9IHNl
cTFsZW4gPT0gMCA/IC0xIDogMTsNCiAgICAgICAgICAgICAgZ290byBmcmVlX2FuZF9yZXR1cm47
DQogICAgICAgICAgICB9DQoNCg0KICAgICAgICAgIGlmIChwb3NpdGlvbiAmJiB2YWwxICE9IHZh
bDIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIHJlc3VsdCA9IHZhbDEgLSB2YWwyOw0K
ICAgICAgICAgICAgICBnb3RvIGZyZWVfYW5kX3JldHVybjsNCiAgICAgICAgICAgIH0NCg0KDQog
ICAgICAgICAgZG8NCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWYgKHdlaWdodHNbaWR4
MWFycltpZHgxbm93XV0gIT0gd2VpZ2h0c1tpZHgyYXJyW2lkeDJub3ddXSkNCiAgICAgICAgICAg
ICAgICB7DQoNCiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh3ZWlnaHRzW2lkeDFhcnJbaWR4
MW5vd11dDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB3ZWlnaHRzW2lkeDJhcnJbaWR4
Mm5vd11dKTsNCiAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZV9hbmRfcmV0dXJuOw0KICAgICAg
ICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICsraWR4MWFycltpZHgxbm93XTsNCiAgICAg
ICAgICAgICAgKytpZHgyYXJyW2lkeDJub3ddOw0KDQogICAgICAgICAgICAgIC0tc2VxMWxlbjsN
CiAgICAgICAgICAgICAgLS1zZXEybGVuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIHdoaWxl
IChzZXExbGVuID4gMCAmJiBzZXEybGVuID4gMCk7DQoNCiAgICAgICAgICBpZiAocG9zaXRpb24g
JiYgc2VxMWxlbiAhPSBzZXEybGVuKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICByZXN1
bHQgPSBzZXExbGVuIC0gc2VxMmxlbjsNCiAgICAgICAgICAgICAgZ290byBmcmVlX2FuZF9yZXR1
cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCg0KIGZyZWVfYW5kX3JldHVy
bjoNCiAgaWYgKHVzZV9tYWxsb2MpDQogICAgZnJlZSAoaWR4MWFycik7DQoNCiAgcmV0dXJuIHJl
c3VsdDsNCn0NCg==


             reply	other threads:[~2002-06-25  8:26 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-25  2:16 d.mueller [this message]
2002-07-15  2:36 Alan Modra
2002-07-15 12:46 Geoff Keating
2002-07-15 16:56 Alan Modra
2002-07-15 18:46 Alan Modra
2002-07-15 21:36 Richard Henderson
2002-07-15 22:16 Alan Modra
2002-07-16 10:46 Geoff Keating
2002-07-16 10:56 Geoff Keating
2002-07-16 18:56 Alan Modra
2002-07-16 21:16 Alan Modra
2002-07-17  0:16 Geoff Keating
2002-07-17  2:06 Alan Modra
2002-07-17  8:46 David Edelsohn
2002-07-17 10:46 David Edelsohn
2002-07-17 12:06 Geoff Keating
2002-07-17 12:16 Geoff Keating
2002-07-17 13:36 David Edelsohn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020625081846.10430.qmail@sources.redhat.com \
    --to=d.mueller@elsoft.ch \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).