public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/7675: Internal compiler error in fixup_var_refs_1
@ 2002-08-21  3:46 sowhat
  0 siblings, 0 replies; only message in thread
From: sowhat @ 2002-08-21  3:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7675
>Category:       c
>Synopsis:       Internal compiler error in fixup_var_refs_1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Aug 21 03:06:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     sowhat@amnis.co.jp
>Release:        3.2.1 20020819 (prerelease)
>Organization:
>Environment:
Configured with: ./configure --enable-languages=c,c++,objc --disable-shared --enable-threads --without-cvs --prefix=/usr/local/snap/gcc-20020819 i686-pc-linux-gnu
Thread model: posix
gcc version 3.2.1 20020819 (prerelease)
>Description:
Reading specs from /usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/specs
Configured with: ./configure --enable-languages=c,c++,objc --disable-shared --enable-threads --without-cvs --prefix=/usr/local/snap/gcc-20020819 i686-pc-linux-gnu
Thread model: posix
gcc version 3.2.1 20020819 (prerelease)
 /usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cpp0 -lang-c -v -I. -I. -I../../src/sdbm.v0 -iprefix /usr/local/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.2.1/ -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -dD -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i586 -D__i586__ -D__pentium -D__pentium__ -D__tune_i586__ -D__tune_pentium__ -DAXIS_LIBOBJ -DcCompo=cCompoSdbmV0 ../../src/sdbm.v0/sdbmfldu.c -Wall -Wcast-align -Wno-format -Werror sdbmfldu.i
GNU CPP version 3.2.1 20020819 (prerelease) (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/../../../../i686-pc-linux-gnu/include"
ignoring nonexistent directory "/usr/local/snap/gcc-20020819/i686-pc-linux-gnu/include"
ignoring duplicate directory "."
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../src/sdbm.v0
 /usr/local/include
 /usr/local/snap/gcc-20020819/include
 /usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include
 /usr/include
End of search list.
 /usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cc1 -fpreprocessed sdbmfldu.i -quiet -dumpbase sdbmfldu.c -mcpu=pentium -march=pentium -malign-double -g3 -O2 -Wall -Wcast-align -Wno-format -Werror -version -fexceptions -o sdbmfldu.s
GNU CPP version 3.2.1 20020819 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.2.1 20020819 (prerelease) (i686-pc-linux-gnu)
        compiled by GNU C version 2.95.4 20011002 (Debian prerelease).
../../src/sdbm.v0/sdbmfldu.c: In function `SdbmListData':
../../src/sdbm.v0/sdbmfldu.c:1590: Internal compiler error in fixup_var_refs_1, at function.c:1964
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:

It reappears only in this specific source file. 
It does not reappear in GCC-2.95. 
It reappears in any GCC-3.x(3.0.0/3.1/3.1.1/3.2)
>Fix:

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

IyAxICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIgojIDEgIjxidWlsdC1pbj4iCiNkZWZp
bmUgX19WRVJTSU9OX18gIjMuMi4xIDIwMDIwODE5IChwcmVyZWxlYXNlKSIKI2RlZmluZSBfX1VT
RVJfTEFCRUxfUFJFRklYX18gCiNkZWZpbmUgX19SRUdJU1RFUl9QUkVGSVhfXyAKI2RlZmluZSBf
X0hBVkVfQlVJTFRJTl9TRVRKTVBfXyAxCiNkZWZpbmUgX19TSVpFX1RZUEVfXyB1bnNpZ25lZCBp
bnQKI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGludAojZGVmaW5lIF9fV0NIQVJfVFlQRV9fIGxv
bmcgaW50CiNkZWZpbmUgX19XSU5UX1RZUEVfXyB1bnNpZ25lZCBpbnQKI2RlZmluZSBfX1NURENf
XyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19HTlVDX18gMwojIDEgIjxjb21tYW5k
IGxpbmU+IgojZGVmaW5lIF9fR05VQ19NSU5PUl9fIDIKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2Rl
ZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fIDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBf
X0dYWF9BQklfVkVSU0lPTiAxMDIKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX0VMRl9f
IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSB1bml4IDEKIyAxICI8Y29tbWFuZCBsaW5l
PiIKI2RlZmluZSBfX2dudV9saW51eF9fIDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBs
aW51eCAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19FTEZfXyAxCiMgMSAiPGNvbW1h
bmQgbGluZT4iCiNkZWZpbmUgX191bml4X18gMQojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5l
IF9fZ251X2xpbnV4X18gMQojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5lIF9fbGludXhfXyAx
CiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX191bml4IDEKIyAxICI8Y29tbWFuZCBsaW5l
PiIKI2RlZmluZSBfX2xpbnV4IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX09QVElN
SVpFX18gMQojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5lIF9fU1REQ19IT1NURURfXyAxCiMg
MSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgaTM4NiAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNk
ZWZpbmUgX19pMzg2IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX2kzODZfXyAxCiMg
MSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19pNTg2IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIK
I2RlZmluZSBfX2k1ODZfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19wZW50aXVt
IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX3BlbnRpdW1fXyAxCiMgMSAiPGNvbW1h
bmQgbGluZT4iCiNkZWZpbmUgX190dW5lX2k1ODZfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNk
ZWZpbmUgX190dW5lX3BlbnRpdW1fXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgQVhJ
U19MSUJPQkogMQojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5lIGNDb21wbyBjQ29tcG9TZGJt
VjAKIyAxICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIgojIDEzICIuLi8uLi9zcmMvc2Ri
bS52MC9zZGJtZmxkdS5jIgojZGVmaW5lIF9BWElTX1NEQk1GTERVX0NfIApzdGF0aWMgY2hhciBj
b25zdCByY3NpZFtdID0gIiRJZDogc2RibWZsZHUuYyx2IDAuODQgMjAwMS0wOC0yNyAyMTozMDox
MSswOSBzb3doYXQgRXhwICQiCiIkQ29weXJpZ2h0OiAoQykgMTk5OCwxOTk5LDIwMDAsMjAwMSBB
bW5pcyBDb3JwLiAkIjsKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyNCAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiNkZWZpbmUgX1NZU19UWVBFU19IIDEKCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMwojZGVmaW5lIF9GRUFUVVJFU19IIDEKIyAxMDkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAzCiNkZWZpbmUgX19LRVJORUxfU1RSSUNUX05BTUVTIAoKCgojZGVmaW5lIF9fVVNFX0FOU0kg
MQojIDE1MCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKI2RlZmluZSBfQlNEX1NPVVJDRSAx
CiNkZWZpbmUgX1NWSURfU09VUkNFIDEKIyAxNjcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxCgoKCiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDE5OTUw
NkwKCgoKCiNkZWZpbmUgX19VU0VfUE9TSVggMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMiAxCgoK
CiNkZWZpbmUgX19VU0VfUE9TSVgxOTkzMDkgMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5NTA2
IDEKIyAyMjMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiNkZWZpbmUgX19VU0VfTUlTQyAx
CgoKCiNkZWZpbmUgX19VU0VfQlNEIDEKCgoKI2RlZmluZSBfX1VTRV9TVklEIDEKIyAyNDMgIi91
c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiNkZWZpbmUgX19TVERDX0lFQ181NTlfXyAxCiNkZWZp
bmUgX19TVERDX0lFQ181NTlfQ09NUExFWF9fIDEKCgojZGVmaW5lIF9fU1REQ19JU09fMTA2NDZf
XyAyMDAwMDlMCiMgMjU2ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojZGVmaW5lIF9fR05V
X0xJQlJBUllfXyA2CgoKCiNkZWZpbmUgX19HTElCQ19fIDIKI2RlZmluZSBfX0dMSUJDX01JTk9S
X18gMgojIDI3MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKI2RlZmluZSBfX0dOVUNfUFJF
UkVRKG1haixtaW4pICgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWop
IDw8IDE2KSArIChtaW4pKQoKCgoKCiNkZWZpbmUgX19HTElCQ19QUkVSRVEobWFqLG1pbikgKChf
X0dMSUJDX18gPDwgMTYpICsgX19HTElCQ19NSU5PUl9fID49ICgobWFqKSA8PCAxNikgKyAobWlu
KSkKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjAgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9TWVNfQ0RFRlNfSCAxCiMgNDYgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fVEhST1cgCgojZGVmaW5lIF9fUChhcmdzKSBh
cmdzIF9fVEhST1cKCgojZGVmaW5lIF9fUE1UKGFyZ3MpIGFyZ3MKIyA3MCAiL3Vzci9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19DT05DQVQoeCx5KSB4ICMjIHkKI2RlZmluZSBfX1NU
UklORyh4KSAjeAoKCiNkZWZpbmUgX19wdHJfdCB2b2lkICoKI2RlZmluZSBfX2xvbmdfZG91Ymxl
X3QgbG9uZyBkb3VibGUKCgoKCgoKCiNkZWZpbmUgX19CRUdJTl9ERUNMUyAKI2RlZmluZSBfX0VO
RF9ERUNMUyAKCgoKCgojZGVmaW5lIF9fYm91bmRlZCAKI2RlZmluZSBfX3VuYm91bmRlZCAKI2Rl
ZmluZSBfX3B0cnZhbHVlIAoKCgoKCgojZGVmaW5lIF9fZmxleGFyciBbXQojIDEyNiAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19SRURJUkVDVChuYW1lLHByb3RvLGFsaWFz
KSBuYW1lIHByb3RvIF9fYXNtX18gKF9fQVNNTkFNRSAoI2FsaWFzKSkKI2RlZmluZSBfX0FTTU5B
TUUoY25hbWUpIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCiNkZWZp
bmUgX19BU01OQU1FMihwcmVmaXgsY25hbWUpIF9fU1RSSU5HIChwcmVmaXgpIGNuYW1lCiMgMTQ5
ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX2F0dHJpYnV0ZV9tYWxsb2Nf
XyBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiMgMTU4ICIvdXNyL2luY2x1ZGUvc3lzL2Nk
ZWZzLmgiIDMKI2RlZmluZSBfX2F0dHJpYnV0ZV9wdXJlX18gX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSkKIyAxNjcgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fYXR0cmli
dXRlX3VzZWRfXyBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18pKQojIDE3OSAiL3Vzci9pbmNsdWRl
L3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQojIDE4OSAiL3Vzci9pbmNsdWRlL3N5cy9j
ZGVmcy5oIiAzCiNkZWZpbmUgX19hdHRyaWJ1dGVfZm9ybWF0X3N0cmZtb25fXyhhLGIpIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3N0cmZtb25fXywgYSwgYikpKQojIDIxMiAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19yZXN0cmljdF9hcnIgX19yZXN0cmljdAoj
IDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI5OCAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDMKI2RlZmluZSBfX1VTRV9FWFRFUk5fSU5MSU5FUyAxCiMgMzEyICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCgoK
CgojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF9jb3NsIAojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF9z
aW5sIAojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF90YW5sIAojZGVmaW5lIF9fc3R1Yl9jaGZsYWdz
IAojZGVmaW5lIF9fc3R1Yl9mYXR0YWNoIAojZGVmaW5lIF9fc3R1Yl9mY2hmbGFncyAKI2RlZmlu
ZSBfX3N0dWJfZmRldGFjaCAKI2RlZmluZSBfX3N0dWJfZmV4ZWN2ZSAKI2RlZmluZSBfX3N0dWJf
Z3R0eSAKI2RlZmluZSBfX3N0dWJfcG9zaXhfZmFkdmlzZSAKI2RlZmluZSBfX3N0dWJfcG9zaXhf
ZmFkdmlzZTY0IAojZGVmaW5lIF9fc3R1Yl9yZXZva2UgCiNkZWZpbmUgX19zdHViX3NldGxvZ2lu
IAojZGVmaW5lIF9fc3R1Yl9zaWdyZXR1cm4gCiNkZWZpbmUgX19zdHViX3NzdGsgCiNkZWZpbmUg
X19zdHViX3N0dHkgCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKI2RlZmluZSBfQklU
U19UWVBFU19IIDEKCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojIDEgIi91c3IvbG9jYWwvc25h
cC9nY2MtMjAwMjA4MTkvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMTgyICIvdXNyL2xvY2FsL3NuYXAvZ2NjLTIwMDIwODE5L2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI2RlZmlu
ZSBfX3NpemVfdF9fIAojZGVmaW5lIF9fU0laRV9UX18gCiNkZWZpbmUgX1NJWkVfVCAKI2RlZmlu
ZSBfU1lTX1NJWkVfVF9IIAojZGVmaW5lIF9UX1NJWkVfIAojZGVmaW5lIF9UX1NJWkUgCiNkZWZp
bmUgX19TSVpFX1QgCiNkZWZpbmUgX1NJWkVfVF8gCiNkZWZpbmUgX0JTRF9TSVpFX1RfIAojZGVm
aW5lIF9TSVpFX1RfREVGSU5FRF8gCiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVEIAojZGVmaW5lIF9f
X2ludF9zaXplX3RfaCAKI2RlZmluZSBfR0NDX1NJWkVfVCAKI2RlZmluZSBfU0laRVRfIAojZGVm
aW5lIF9fc2l6ZV90IAoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDIyMSAiL3Vz
ci9sb2NhbC9zbmFwL2djYy0yMDAyMDgxOS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBfX25lZWRfc2l6ZV90CiMgMzAgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hh
cjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy90
eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu
dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAq
X19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2ludCBf
X3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190
Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRl
ZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9sb25nIF9f
cmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBfX3VfaW50IF9f
aWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7
CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRl
ZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0
eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190
OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7
CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgojZGVmaW5lIF9fRkRfU0VUU0laRSAxMDI0CgoK
dHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19w
aWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBp
bnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBf
X3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsK
Cgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNm
aWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xv
ZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90
OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJl
YWR0eXBlcy5oIiAzCiNkZWZpbmUgX0JJVFNfUFRIUkVBRFRZUEVTX0ggMQoKI2RlZmluZSBfX25l
ZWRfc2NoZWRwYXJhbSAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2NiAi
L3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwojZGVmaW5lIF9fZGVmaW5lZF9zY2hlZHBhcmFt
IDEKCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAg
fTsKI3VuZGVmIF9fbmVlZF9zY2hlZHBhcmFtCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJl
YWR0eXBlcy5oIiAyIDMKCnR5cGVkZWYgaW50IF9fYXRvbWljX2xvY2tfdDsKCgpzdHJ1Y3QgX3B0
aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIF9fYXRvbWljX2xvY2tfdCBf
X3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpf
cHRocmVhZF9kZXNjcjsKI2RlZmluZSBfUFRIUkVBRF9ERVNDUl9ERUZJTkVEIAoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9f
c2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBf
X2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50
IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3Np
emU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJl
YWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRo
cmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFk
X2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9w
dGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QK
ewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGlu
dCBwdGhyZWFkX29uY2VfdDsKIyAxNDIgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5o
IiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAz
CgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0
eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9f
cXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNp
ZF90IGZzaWRfdDsKI2RlZmluZSBfX3VfY2hhcl9kZWZpbmVkIAoKCgp0eXBlZGVmIF9fbG9mZl90
IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoKCgojZGVmaW5lIF9faW5vX3RfZGVm
aW5lZCAKCgoKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKI2RlZmluZSBfX2Rldl90X2RlZmlu
ZWQgCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKI2RlZmluZSBfX2dpZF90X2RlZmluZWQgCgoK
CnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwojZGVmaW5lIF9fbW9kZV90X2RlZmluZWQgCgoKCnR5
cGVkZWYgX19ubGlua190IG5saW5rX3Q7CiNkZWZpbmUgX19ubGlua190X2RlZmluZWQgCgoKCnR5
cGVkZWYgX191aWRfdCB1aWRfdDsKI2RlZmluZSBfX3VpZF90X2RlZmluZWQgCgoKCgp0eXBlZGVm
IF9fb2ZmX3Qgb2ZmX3Q7CgoKCiNkZWZpbmUgX19vZmZfdF9kZWZpbmVkIAoKCgoKCgoKdHlwZWRl
ZiBfX3BpZF90IHBpZF90OwojZGVmaW5lIF9fcGlkX3RfZGVmaW5lZCAKCgoKdHlwZWRlZiBfX2lk
X3QgaWRfdDsKI2RlZmluZSBfX2lkX3RfZGVmaW5lZCAKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3Np
emVfdDsKI2RlZmluZSBfX3NzaXplX3RfZGVmaW5lZCAKCgoKCnR5cGVkZWYgX19kYWRkcl90IGRh
ZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CiNkZWZpbmUgX19kYWRkcl90X2RlZmlu
ZWQgCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiNkZWZpbmUgX19rZXlfdF9kZWZpbmVkIAoK
CgoKCiNkZWZpbmUgX19uZWVkX3RpbWVfdCAKI2RlZmluZSBfX25lZWRfdGltZXJfdCAKI2RlZmlu
ZSBfX25lZWRfY2xvY2tpZF90IAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDY1ICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCiNkZWZpbmUgX190aW1lX3RfZGVmaW5lZCAxCgoKCgp0eXBl
ZGVmIF9fdGltZV90IHRpbWVfdDsKCgojdW5kZWYgX19uZWVkX3RpbWVfdAoKCgojZGVmaW5lIF9f
Y2xvY2tpZF90X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CgoK
CgoKCiNkZWZpbmUgX190aW1lcl90X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBfX3RpbWVyX3QgdGlt
ZXJfdDsKCgojdW5kZWYgX19uZWVkX3RpbWVyX3QKIyAxMzMgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCiMgMTQ1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKI2RlZmluZSBfX25l
ZWRfc2l6ZV90IAojIDEgIi91c3IvbG9jYWwvc25hcC9nY2MtMjAwMjA4MTkvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIvdXNy
L2xvY2FsL3NuYXAvZ2NjLTIwMDIwODE5L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
Mi4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAxNDcgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxv
bmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdWludDsKIyAxODMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojZGVmaW5lIF9faW50
Tl90KE4sTU9ERSkgdHlwZWRlZiBpbnQgaW50ICMjTiAjI190IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoTU9ERSkpKQoKI2RlZmluZSBfX3VfaW50Tl90KE4sTU9ERSkgdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQgIyNOICMjX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChNT0RFKSkpCgoK
CiNkZWZpbmUgX19pbnQ4X3RfZGVmaW5lZCAKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fd29yZF9fKSkpOwoKCgoKCiNkZWZpbmUgX19CSVRfVFlQRVNfREVGSU5FRF9fIDEK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMCAiL3Vzci9pbmNsdWRlL2Vu
ZGlhbi5oIiAzCiNkZWZpbmUgX0VORElBTl9IIDEKIyAzMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAzCiNkZWZpbmUgX19MSVRUTEVfRU5ESUFOIDEyMzQKI2RlZmluZSBfX0JJR19FTkRJQU4gNDMy
MQojZGVmaW5lIF9fUERQX0VORElBTiAzNDEyCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRp
YW4uaCIgMSAzCgoKCgoKCiNkZWZpbmUgX19CWVRFX09SREVSIF9fTElUVExFX0VORElBTgojIDM4
ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwoKCgoKI2RlZmluZSBfX0ZMT0FUX1dPUkRfT1JE
RVIgX19CWVRFX09SREVSCgoKCiNkZWZpbmUgTElUVExFX0VORElBTiBfX0xJVFRMRV9FTkRJQU4K
I2RlZmluZSBCSUdfRU5ESUFOIF9fQklHX0VORElBTgojZGVmaW5lIFBEUF9FTkRJQU4gX19QRFBf
RU5ESUFOCiNkZWZpbmUgQllURV9PUkRFUiBfX0JZVEVfT1JERVIKCgoKI2RlZmluZSBfX0xPTkdf
TE9OR19QQUlSKEhJLExPKSBMTywgSEkKIyAyMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNs
dWRlL3N5cy9zZWxlY3QuaCIgMwojZGVmaW5lIF9TWVNfU0VMRUNUX0ggMQoKCgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3Nl
bGVjdC5oIiAzCiNkZWZpbmUgX19GRF9aRVJPKGZkc3ApIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9f
YXNtX18gX192b2xhdGlsZV9fICgiY2xkOyByZXA7IHN0b3NsIiA6ICI9YyIgKF9fZDApLCAiPUQi
IChfX2QxKSA6ICJhIiAoMCksICIwIiAoc2l6ZW9mIChmZF9zZXQpIC8gc2l6ZW9mIChfX2ZkX21h
c2spKSwgIjEiICgmX19GRFNfQklUUyAoZmRzcClbMF0pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgw
KQojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMwojZGVmaW5lIF9fRkRfU0VUKGZk
LGZkc3ApIF9fYXNtX18gX192b2xhdGlsZV9fICgiYnRzbCAlMSwlMCIgOiAiPW0iIChfX0ZEU19C
SVRTIChmZHNwKVtfX0ZERUxUIChmZCldKSA6ICJyIiAoKChpbnQpIChmZCkpICUgX19ORkRCSVRT
KSA6ICJjYyIsIm1lbW9yeSIpCgoKCgojZGVmaW5lIF9fRkRfQ0xSKGZkLGZkc3ApIF9fYXNtX18g
X192b2xhdGlsZV9fICgiYnRybCAlMSwlMCIgOiAiPW0iIChfX0ZEU19CSVRTIChmZHNwKVtfX0ZE
RUxUIChmZCldKSA6ICJyIiAoKChpbnQpIChmZCkpICUgX19ORkRCSVRTKSA6ICJjYyIsIm1lbW9y
eSIpCgoKCgojZGVmaW5lIF9fRkRfSVNTRVQoZmQsZmRzcCkgKF9fZXh0ZW5zaW9uX18gKHtyZWdp
c3RlciBjaGFyIF9fcmVzdWx0OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImJ0bCAlMSwlMiA7IHNl
dGNiICViMCIgOiAiPXEiIChfX3Jlc3VsdCkgOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklU
UyksICJtIiAoX19GRFNfQklUUyAoZmRzcClbX19GREVMVCAoZmQpXSkgOiAiY2MiKTsgX19yZXN1
bHQ7IH0pKQojIDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0
LmgiIDMKI2RlZmluZSBfU0lHU0VUX0hfdHlwZXMgMQoKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWlj
X3Q7CgoKCiNkZWZpbmUgX1NJR1NFVF9OV09SRFMgKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWdu
ZWQgbG9uZyBpbnQpKSkKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBf
X3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAgfSBfX3Np
Z3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojZGVmaW5lIF9f
c2lnc2V0X3RfZGVmaW5lZCAKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgojZGVmaW5l
IF9fbmVlZF90aW1lX3QgCiNkZWZpbmUgX19uZWVkX3RpbWVzcGVjIAojIDEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDEgMwojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiN1bmRlZiBfX25lZWRf
dGltZV90CiMgMTAyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiNkZWZpbmUgX190aW1lc3BlY19k
ZWZpbmVkIDEKCgoKc3RydWN0IHRpbWVzcGVjCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAg
bG9uZyBpbnQgdHZfbnNlYzsKICB9OwoKCiN1bmRlZiBfX25lZWRfdGltZXNwZWMKIyA0NSAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCiNkZWZpbmUgX19uZWVkX3RpbWV2YWwgCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA2MCAiL3Vzci9pbmNsdWRlL2JpdHMvdGlt
ZS5oIiAzCiN1bmRlZiBfX25lZWRfdGltZXZhbAoKI2RlZmluZSBfU1RSVUNUX1RJTUVWQUwgMQoK
CgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25k
c190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK
dHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwojZGVmaW5lIF9fc3VzZWNvbmRzX3Rf
ZGVmaW5lZCAKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCiNkZWZpbmUgX19ORkRC
SVRTICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKQojZGVmaW5lIF9fRkRFTFQoZCkgKChkKSAvIF9f
TkZEQklUUykKI2RlZmluZSBfX0ZETUFTSyhkKSAoKF9fZmRfbWFzaykgMSA8PCAoKGQpICUgX19O
RkRCSVRTKSkKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19i
aXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwojZGVmaW5lIF9fRkRTX0JJVFMo
c2V0KSAoKHNldCktPl9fZmRzX2JpdHMpCgogIH0gZmRfc2V0OwoKCiNkZWZpbmUgRkRfU0VUU0la
RSBfX0ZEX1NFVFNJWkUKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKCgojZGVmaW5lIE5G
REJJVFMgX19ORkRCSVRTCgoKCgojZGVmaW5lIEZEX1NFVChmZCxmZHNldHApIF9fRkRfU0VUIChm
ZCwgZmRzZXRwKQojZGVmaW5lIEZEX0NMUihmZCxmZHNldHApIF9fRkRfQ0xSIChmZCwgZmRzZXRw
KQojZGVmaW5lIEZEX0lTU0VUKGZkLGZkc2V0cCkgX19GRF9JU1NFVCAoZmQsIGZkc2V0cCkKI2Rl
ZmluZSBGRF9aRVJPKGZkc2V0cCkgX19GRF9aRVJPIChmZHNldHApCgoKCgoKCgoKCmV4dGVybiBp
bnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAg
ICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAg
ICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIDsKIyAxMTggIi91c3IvaW5j
bHVkZS9zeXMvc2VsZWN0LmgiIDMKCiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjEgIi91c3IvaW5j
bHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMKI2RlZmluZSBfU1lTX1NZU01BQ1JPU19IIDEKCgoKCgoK
I2RlZmluZSBtYWpvcihkZXYpICgoaW50KSgoKGRldikgPj4gOCkgJiAweGZmKSkKI2RlZmluZSBt
aW5vcihkZXYpICgoaW50KSgoZGV2KSAmIDB4ZmYpKQojZGVmaW5lIG1ha2VkZXYobWFqb3IsbWlu
b3IpICgoKCh1bnNpZ25lZCBpbnQpIChtYWpvcikpIDw8IDgpIHwgKCh1bnNpZ25lZCBpbnQpICht
aW5vcikpKQojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAyMzAgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CiNkZWZp
bmUgX19ibGtjbnRfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7
CiNkZWZpbmUgX19mc2Jsa2NudF90X2RlZmluZWQgCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNm
aWxjbnRfdDsKI2RlZmluZSBfX2ZzZmlsY250X3RfZGVmaW5lZCAKIyAyNjIgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMwoKIyAxOCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZsZHUuYyIgMgoj
IDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzCiMgMjQgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwojZGVmaW5lIF9VTklTVERfSCAxCgoKCgoKCgoKCgojZGVmaW5lIF9QT1NJWF9WRVJTSU9O
IDE5OTUwNkwKCgoKCgojZGVmaW5lIF9QT1NJWDJfQ19WRVJTSU9OIDE5OTIwOUwKCgojZGVmaW5l
IF9QT1NJWDJfVkVSU0lPTiAxOTkyMDlMCgoKCiNkZWZpbmUgX1BPU0lYMl9DX0JJTkQgMQoKCgoj
ZGVmaW5lIF9QT1NJWDJfQ19ERVYgMQoKCgojZGVmaW5lIF9QT1NJWDJfU1dfREVWIDEKCgoKI2Rl
ZmluZSBfUE9TSVgyX0xPQ0FMRURFRiAxCgoKCgoKI2RlZmluZSBfWE9QRU5fVkVSU0lPTiA0CgoK
CiNkZWZpbmUgX1hPUEVOX1hDVV9WRVJTSU9OIDQKCgojZGVmaW5lIF9YT1BFTl9YUEcyIDEKI2Rl
ZmluZSBfWE9QRU5fWFBHMyAxCiNkZWZpbmUgX1hPUEVOX1hQRzQgMQoKCiNkZWZpbmUgX1hPUEVO
X1VOSVggMQoKCiNkZWZpbmUgX1hPUEVOX0NSWVBUIDEKCgoKI2RlZmluZSBfWE9QRU5fRU5IX0kx
OE4gMQoKCiNkZWZpbmUgX1hPUEVOX0xFR0FDWSAxCiMgMTc1ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMgMjEgIi91c3Iv
aW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAzCiNkZWZpbmUgX1BPU0lYX09QVF9IIDEKCgojZGVm
aW5lIF9QT1NJWF9KT0JfQ09OVFJPTCAxCgoKI2RlZmluZSBfUE9TSVhfU0FWRURfSURTIDEKCgoj
ZGVmaW5lIF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HIDEKCgojZGVmaW5lIF9QT1NJWF9TWU5D
SFJPTklaRURfSU8gMQoKCiNkZWZpbmUgX1BPU0lYX0ZTWU5DIDEKCgojZGVmaW5lIF9QT1NJWF9N
QVBQRURfRklMRVMgMQoKCiNkZWZpbmUgX1BPU0lYX01FTUxPQ0sgMQoKCiNkZWZpbmUgX1BPU0lY
X01FTUxPQ0tfUkFOR0UgMQoKCiNkZWZpbmUgX1BPU0lYX01FTU9SWV9QUk9URUNUSU9OIDEKCgoj
ZGVmaW5lIF9QT1NJWF9QT0xMIDEKCgojZGVmaW5lIF9QT1NJWF9TRUxFQ1QgMQoKCiNkZWZpbmUg
X1BPU0lYX0NIT1dOX1JFU1RSSUNURUQgMQoKCgojZGVmaW5lIF9QT1NJWF9WRElTQUJMRSAnXDAn
CgoKI2RlZmluZSBfUE9TSVhfTk9fVFJVTkMgMQoKCiNkZWZpbmUgX1hPUEVOX1JFQUxUSU1FIDEK
CgojZGVmaW5lIF9YT1BFTl9SRUFMVElNRV9USFJFQURTIDEKCgojZGVmaW5lIF9YT1BFTl9TSE0g
MQoKCiNkZWZpbmUgX1BPU0lYX1RIUkVBRFMgMQoKCiNkZWZpbmUgX1BPU0lYX1JFRU5UUkFOVF9G
VU5DVElPTlMgMQojZGVmaW5lIF9QT1NJWF9USFJFQURfU0FGRV9GVU5DVElPTlMgMQoKCiNkZWZp
bmUgX1BPU0lYX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HIDEKCgojZGVmaW5lIF9QT1NJWF9U
SFJFQURfQVRUUl9TVEFDS1NJWkUgMQoKCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNL
QUREUiAxCgoKI2RlZmluZSBfUE9TSVhfU0VNQVBIT1JFUyAxCgoKI2RlZmluZSBfUE9TSVhfUkVB
TFRJTUVfU0lHTkFMUyAxCgoKI2RlZmluZSBfUE9TSVhfQVNZTkNIUk9OT1VTX0lPIDEKI2RlZmlu
ZSBfUE9TSVhfQVNZTkNfSU8gMQoKI2RlZmluZSBfTEZTX0FTWU5DSFJPTk9VU19JTyAxCgoKI2Rl
ZmluZSBfTEZTNjRfQVNZTkNIUk9OT1VTX0lPIDEKCgojZGVmaW5lIF9MRlNfTEFSR0VGSUxFIDEK
I2RlZmluZSBfTEZTNjRfTEFSR0VGSUxFIDEKI2RlZmluZSBfTEZTNjRfU1RESU8gMQoKCiNkZWZp
bmUgX1BPU0lYX1NIQVJFRF9NRU1PUllfT0JKRUNUUyAxCgoKI2RlZmluZSBfUE9TSVhfQ1BVVElN
RSAyMDA5MTJMCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0NQVVRJTUUgMjAwOTEyTAoKCiNkZWZp
bmUgX1BPU0lYX1JFR0VYUCAxCgoKI2RlZmluZSBfUE9TSVhfUkVBREVSX1dSSVRFUl9MT0NLUyAy
MDA5MTJMCgoKI2RlZmluZSBfUE9TSVhfU0hFTEwgMQoKCiNkZWZpbmUgX1BPU0lYX1RJTUVPVVRT
IDIwMDkxMkwKCgojZGVmaW5lIF9QT1NJWF9TUElOX0xPQ0tTIDIwMDkxMkwKCgojZGVmaW5lIF9Q
T1NJWF9TUEFXTiAyMDA5MTJMCgoKI2RlZmluZSBfUE9TSVhfVElNRVJTIDEKCgojZGVmaW5lIF9Q
T1NJWF9CQVJSSUVSUyAyMDA5MTJMCiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK
CgoKCgoKI2RlZmluZSBTVERJTl9GSUxFTk8gMAojZGVmaW5lIFNURE9VVF9GSUxFTk8gMQojZGVm
aW5lIFNUREVSUl9GSUxFTk8gMgojIDE5NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiNkZWZp
bmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIvdXNyL2xvY2FsL3Nu
YXAvZ2NjLTIwMDIwODE5L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDIyMSAiL3Vzci9sb2NhbC9zbmFwL2djYy0yMDAyMDgxOS9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRl
ZiBfX25lZWRfc2l6ZV90CiMgMzY5ICIvdXNyL2xvY2FsL3NuYXAvZ2NjLTIwMDIwODE5L2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI2RlZmlu
ZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMjAwICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDIgMwojIDI0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCnR5cGVk
ZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKI2RlZmluZSBfX2ludHB0cl90X2RlZmluZWQgCgoKCgoK
dHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiNkZWZpbmUgX19zb2NrbGVuX3RfZGVmaW5l
ZCAKCgoKCgojZGVmaW5lIFJfT0sgNAojZGVmaW5lIFdfT0sgMgojZGVmaW5lIFhfT0sgMQojZGVm
aW5lIEZfT0sgMAoKCmV4dGVybiBpbnQgYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50
IF9fdHlwZSkgOwojIDI3MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiNkZWZpbmUgU0VFS19T
RVQgMAojZGVmaW5lIFNFRUtfQ1VSIDEKI2RlZmluZSBTRUVLX0VORCAyCgoKCgojZGVmaW5lIExf
U0VUIFNFRUtfU0VUCiNkZWZpbmUgTF9JTkNSIFNFRUtfQ1VSCiNkZWZpbmUgTF9YVE5EIFNFRUtf
RU5ECiMgMjkwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsg
KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKIyAzMDYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCkgOwoKCgpleHRl
cm4gc3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcykg
OwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwg
c2l6ZV90IF9fbikgOwojIDM1MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQg
cGlwZSAoaW50IF9fcGlwZWRlc1syXSkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKIyAz
NzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1
bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJt
IChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgOwoK
CgpleHRlcm4gaW50IHVzbGVlcCAoX191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRl
cm4gaW50IHBhdXNlICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCmV4dGVy
biBpbnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXAp
IDsKCgoKCmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBf
X293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgOwoKCgoKZXh0ZXJuIGludCBjaGRpciAoX19j
b25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSA7CiMg
NDIzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAq
X19idWYsIHNpemVfdCBfX3NpemUpIDsKIyA0MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50
IF9fZmQpIDsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRl
cm4gY2hhciAqKl9fZW52aXJvbjsKCgoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgIGNo
YXIgKl9fY29uc3QgX19lbnZwW10pIDsKIyA0NjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2Fy
Z3ZbXSkgOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29u
c3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY3Zw
IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgOwoKCgoKZXh0
ZXJuIGludCBleGVjbHAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJn
LCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSA7CgoKCgpleHRlcm4gdm9p
ZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMKIyAyNSAiL3Vzci9pbmNs
dWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAgewogICAgX1BDX0xJTktfTUFYLAojZGVmaW5l
IF9QQ19MSU5LX01BWCBfUENfTElOS19NQVgKICAgIF9QQ19NQVhfQ0FOT04sCiNkZWZpbmUgX1BD
X01BWF9DQU5PTiBfUENfTUFYX0NBTk9OCiAgICBfUENfTUFYX0lOUFVULAojZGVmaW5lIF9QQ19N
QVhfSU5QVVQgX1BDX01BWF9JTlBVVAogICAgX1BDX05BTUVfTUFYLAojZGVmaW5lIF9QQ19OQU1F
X01BWCBfUENfTkFNRV9NQVgKICAgIF9QQ19QQVRIX01BWCwKI2RlZmluZSBfUENfUEFUSF9NQVgg
X1BDX1BBVEhfTUFYCiAgICBfUENfUElQRV9CVUYsCiNkZWZpbmUgX1BDX1BJUEVfQlVGIF9QQ19Q
SVBFX0JVRgogICAgX1BDX0NIT1dOX1JFU1RSSUNURUQsCiNkZWZpbmUgX1BDX0NIT1dOX1JFU1RS
SUNURUQgX1BDX0NIT1dOX1JFU1RSSUNURUQKICAgIF9QQ19OT19UUlVOQywKI2RlZmluZSBfUENf
Tk9fVFJVTkMgX1BDX05PX1RSVU5DCiAgICBfUENfVkRJU0FCTEUsCiNkZWZpbmUgX1BDX1ZESVNB
QkxFIF9QQ19WRElTQUJMRQogICAgX1BDX1NZTkNfSU8sCiNkZWZpbmUgX1BDX1NZTkNfSU8gX1BD
X1NZTkNfSU8KICAgIF9QQ19BU1lOQ19JTywKI2RlZmluZSBfUENfQVNZTkNfSU8gX1BDX0FTWU5D
X0lPCiAgICBfUENfUFJJT19JTywKI2RlZmluZSBfUENfUFJJT19JTyBfUENfUFJJT19JTwogICAg
X1BDX1NPQ0tfTUFYQlVGLAojZGVmaW5lIF9QQ19TT0NLX01BWEJVRiBfUENfU09DS19NQVhCVUYK
ICAgIF9QQ19GSUxFU0laRUJJVFMsCiNkZWZpbmUgX1BDX0ZJTEVTSVpFQklUUyBfUENfRklMRVNJ
WkVCSVRTCiAgICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAojZGVmaW5lIF9QQ19SRUNfSU5DUl9Y
RkVSX1NJWkUgX1BDX1JFQ19JTkNSX1hGRVJfU0laRQogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpF
LAojZGVmaW5lIF9QQ19SRUNfTUFYX1hGRVJfU0laRSBfUENfUkVDX01BWF9YRkVSX1NJWkUKICAg
IF9QQ19SRUNfTUlOX1hGRVJfU0laRSwKI2RlZmluZSBfUENfUkVDX01JTl9YRkVSX1NJWkUgX1BD
X1JFQ19NSU5fWEZFUl9TSVpFCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCiNkZWZpbmUgX1BDX1JF
Q19YRkVSX0FMSUdOIF9QQ19SRUNfWEZFUl9BTElHTgogICAgX1BDX0FMTE9DX1NJWkVfTUlOLAoj
ZGVmaW5lIF9QQ19BTExPQ19TSVpFX01JTiBfUENfQUxMT0NfU0laRV9NSU4KICAgIF9QQ19TWU1M
SU5LX01BWAojZGVmaW5lIF9QQ19TWU1MSU5LX01BWCBfUENfU1lNTElOS19NQVgKICB9OwoKCmVu
dW0KICB7CiAgICBfU0NfQVJHX01BWCwKI2RlZmluZSBfU0NfQVJHX01BWCBfU0NfQVJHX01BWAog
ICAgX1NDX0NISUxEX01BWCwKI2RlZmluZSBfU0NfQ0hJTERfTUFYIF9TQ19DSElMRF9NQVgKICAg
IF9TQ19DTEtfVENLLAojZGVmaW5lIF9TQ19DTEtfVENLIF9TQ19DTEtfVENLCiAgICBfU0NfTkdS
T1VQU19NQVgsCiNkZWZpbmUgX1NDX05HUk9VUFNfTUFYIF9TQ19OR1JPVVBTX01BWAogICAgX1ND
X09QRU5fTUFYLAojZGVmaW5lIF9TQ19PUEVOX01BWCBfU0NfT1BFTl9NQVgKICAgIF9TQ19TVFJF
QU1fTUFYLAojZGVmaW5lIF9TQ19TVFJFQU1fTUFYIF9TQ19TVFJFQU1fTUFYCiAgICBfU0NfVFpO
QU1FX01BWCwKI2RlZmluZSBfU0NfVFpOQU1FX01BWCBfU0NfVFpOQU1FX01BWAogICAgX1NDX0pP
Ql9DT05UUk9MLAojZGVmaW5lIF9TQ19KT0JfQ09OVFJPTCBfU0NfSk9CX0NPTlRST0wKICAgIF9T
Q19TQVZFRF9JRFMsCiNkZWZpbmUgX1NDX1NBVkVEX0lEUyBfU0NfU0FWRURfSURTCiAgICBfU0Nf
UkVBTFRJTUVfU0lHTkFMUywKI2RlZmluZSBfU0NfUkVBTFRJTUVfU0lHTkFMUyBfU0NfUkVBTFRJ
TUVfU0lHTkFMUwogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCiNkZWZpbmUgX1NDX1BSSU9S
SVRZX1NDSEVEVUxJTkcgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcKICAgIF9TQ19USU1FUlMsCiNk
ZWZpbmUgX1NDX1RJTUVSUyBfU0NfVElNRVJTCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAojZGVm
aW5lIF9TQ19BU1lOQ0hST05PVVNfSU8gX1NDX0FTWU5DSFJPTk9VU19JTwogICAgX1NDX1BSSU9S
SVRJWkVEX0lPLAojZGVmaW5lIF9TQ19QUklPUklUSVpFRF9JTyBfU0NfUFJJT1JJVElaRURfSU8K
ICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCiNkZWZpbmUgX1NDX1NZTkNIUk9OSVpFRF9JTyBfU0Nf
U1lOQ0hST05JWkVEX0lPCiAgICBfU0NfRlNZTkMsCiNkZWZpbmUgX1NDX0ZTWU5DIF9TQ19GU1lO
QwogICAgX1NDX01BUFBFRF9GSUxFUywKI2RlZmluZSBfU0NfTUFQUEVEX0ZJTEVTIF9TQ19NQVBQ
RURfRklMRVMKICAgIF9TQ19NRU1MT0NLLAojZGVmaW5lIF9TQ19NRU1MT0NLIF9TQ19NRU1MT0NL
CiAgICBfU0NfTUVNTE9DS19SQU5HRSwKI2RlZmluZSBfU0NfTUVNTE9DS19SQU5HRSBfU0NfTUVN
TE9DS19SQU5HRQogICAgX1NDX01FTU9SWV9QUk9URUNUSU9OLAojZGVmaW5lIF9TQ19NRU1PUllf
UFJPVEVDVElPTiBfU0NfTUVNT1JZX1BST1RFQ1RJT04KICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcs
CiNkZWZpbmUgX1NDX01FU1NBR0VfUEFTU0lORyBfU0NfTUVTU0FHRV9QQVNTSU5HCiAgICBfU0Nf
U0VNQVBIT1JFUywKI2RlZmluZSBfU0NfU0VNQVBIT1JFUyBfU0NfU0VNQVBIT1JFUwogICAgX1ND
X1NIQVJFRF9NRU1PUllfT0JKRUNUUywKI2RlZmluZSBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RT
IF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMKICAgIF9TQ19BSU9fTElTVElPX01BWCwKI2RlZmlu
ZSBfU0NfQUlPX0xJU1RJT19NQVggX1NDX0FJT19MSVNUSU9fTUFYCiAgICBfU0NfQUlPX01BWCwK
I2RlZmluZSBfU0NfQUlPX01BWCBfU0NfQUlPX01BWAogICAgX1NDX0FJT19QUklPX0RFTFRBX01B
WCwKI2RlZmluZSBfU0NfQUlPX1BSSU9fREVMVEFfTUFYIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgK
ICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKI2RlZmluZSBfU0NfREVMQVlUSU1FUl9NQVggX1NDX0RF
TEFZVElNRVJfTUFYCiAgICBfU0NfTVFfT1BFTl9NQVgsCiNkZWZpbmUgX1NDX01RX09QRU5fTUFY
IF9TQ19NUV9PUEVOX01BWAogICAgX1NDX01RX1BSSU9fTUFYLAojZGVmaW5lIF9TQ19NUV9QUklP
X01BWCBfU0NfTVFfUFJJT19NQVgKICAgIF9TQ19WRVJTSU9OLAojZGVmaW5lIF9TQ19WRVJTSU9O
IF9TQ19WRVJTSU9OCiAgICBfU0NfUEFHRVNJWkUsCiNkZWZpbmUgX1NDX1BBR0VTSVpFIF9TQ19Q
QUdFU0laRQojZGVmaW5lIF9TQ19QQUdFX1NJWkUgX1NDX1BBR0VTSVpFCiAgICBfU0NfUlRTSUdf
TUFYLAojZGVmaW5lIF9TQ19SVFNJR19NQVggX1NDX1JUU0lHX01BWAogICAgX1NDX1NFTV9OU0VN
U19NQVgsCiNkZWZpbmUgX1NDX1NFTV9OU0VNU19NQVggX1NDX1NFTV9OU0VNU19NQVgKICAgIF9T
Q19TRU1fVkFMVUVfTUFYLAojZGVmaW5lIF9TQ19TRU1fVkFMVUVfTUFYIF9TQ19TRU1fVkFMVUVf
TUFYCiAgICBfU0NfU0lHUVVFVUVfTUFYLAojZGVmaW5lIF9TQ19TSUdRVUVVRV9NQVggX1NDX1NJ
R1FVRVVFX01BWAogICAgX1NDX1RJTUVSX01BWCwKI2RlZmluZSBfU0NfVElNRVJfTUFYIF9TQ19U
SU1FUl9NQVgKCgoKICAgIF9TQ19CQ19CQVNFX01BWCwKI2RlZmluZSBfU0NfQkNfQkFTRV9NQVgg
X1NDX0JDX0JBU0VfTUFYCiAgICBfU0NfQkNfRElNX01BWCwKI2RlZmluZSBfU0NfQkNfRElNX01B
WCBfU0NfQkNfRElNX01BWAogICAgX1NDX0JDX1NDQUxFX01BWCwKI2RlZmluZSBfU0NfQkNfU0NB
TEVfTUFYIF9TQ19CQ19TQ0FMRV9NQVgKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAojZGVmaW5lIF9T
Q19CQ19TVFJJTkdfTUFYIF9TQ19CQ19TVFJJTkdfTUFYCiAgICBfU0NfQ09MTF9XRUlHSFRTX01B
WCwKI2RlZmluZSBfU0NfQ09MTF9XRUlHSFRTX01BWCBfU0NfQ09MTF9XRUlHSFRTX01BWAogICAg
X1NDX0VRVUlWX0NMQVNTX01BWCwKI2RlZmluZSBfU0NfRVFVSVZfQ0xBU1NfTUFYIF9TQ19FUVVJ
Vl9DTEFTU19NQVgKICAgIF9TQ19FWFBSX05FU1RfTUFYLAojZGVmaW5lIF9TQ19FWFBSX05FU1Rf
TUFYIF9TQ19FWFBSX05FU1RfTUFYCiAgICBfU0NfTElORV9NQVgsCiNkZWZpbmUgX1NDX0xJTkVf
TUFYIF9TQ19MSU5FX01BWAogICAgX1NDX1JFX0RVUF9NQVgsCiNkZWZpbmUgX1NDX1JFX0RVUF9N
QVggX1NDX1JFX0RVUF9NQVgKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCiNkZWZpbmUgX1ND
X0NIQVJDTEFTU19OQU1FX01BWCBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYCgogICAgX1NDXzJfVkVS
U0lPTiwKI2RlZmluZSBfU0NfMl9WRVJTSU9OIF9TQ18yX1ZFUlNJT04KICAgIF9TQ18yX0NfQklO
RCwKI2RlZmluZSBfU0NfMl9DX0JJTkQgX1NDXzJfQ19CSU5ECiAgICBfU0NfMl9DX0RFViwKI2Rl
ZmluZSBfU0NfMl9DX0RFViBfU0NfMl9DX0RFVgogICAgX1NDXzJfRk9SVF9ERVYsCiNkZWZpbmUg
X1NDXzJfRk9SVF9ERVYgX1NDXzJfRk9SVF9ERVYKICAgIF9TQ18yX0ZPUlRfUlVOLAojZGVmaW5l
IF9TQ18yX0ZPUlRfUlVOIF9TQ18yX0ZPUlRfUlVOCiAgICBfU0NfMl9TV19ERVYsCiNkZWZpbmUg
X1NDXzJfU1dfREVWIF9TQ18yX1NXX0RFVgogICAgX1NDXzJfTE9DQUxFREVGLAojZGVmaW5lIF9T
Q18yX0xPQ0FMRURFRiBfU0NfMl9MT0NBTEVERUYKCiAgICBfU0NfUElJLAojZGVmaW5lIF9TQ19Q
SUkgX1NDX1BJSQogICAgX1NDX1BJSV9YVEksCiNkZWZpbmUgX1NDX1BJSV9YVEkgX1NDX1BJSV9Y
VEkKICAgIF9TQ19QSUlfU09DS0VULAojZGVmaW5lIF9TQ19QSUlfU09DS0VUIF9TQ19QSUlfU09D
S0VUCiAgICBfU0NfUElJX0lOVEVSTkVULAojZGVmaW5lIF9TQ19QSUlfSU5URVJORVQgX1NDX1BJ
SV9JTlRFUk5FVAogICAgX1NDX1BJSV9PU0ksCiNkZWZpbmUgX1NDX1BJSV9PU0kgX1NDX1BJSV9P
U0kKICAgIF9TQ19QT0xMLAojZGVmaW5lIF9TQ19QT0xMIF9TQ19QT0xMCiAgICBfU0NfU0VMRUNU
LAojZGVmaW5lIF9TQ19TRUxFQ1QgX1NDX1NFTEVDVAogICAgX1NDX1VJT19NQVhJT1YsCiNkZWZp
bmUgX1NDX1VJT19NQVhJT1YgX1NDX1VJT19NQVhJT1YKICAgIF9TQ19JT1ZfTUFYID0gX1NDX1VJ
T19NQVhJT1YsCiNkZWZpbmUgX1NDX0lPVl9NQVggX1NDX0lPVl9NQVgKICAgIF9TQ19QSUlfSU5U
RVJORVRfU1RSRUFNLAojZGVmaW5lIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNIF9TQ19QSUlfSU5U
RVJORVRfU1RSRUFNCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAojZGVmaW5lIF9TQ19QSUlf
SU5URVJORVRfREdSQU0gX1NDX1BJSV9JTlRFUk5FVF9ER1JBTQogICAgX1NDX1BJSV9PU0lfQ09U
UywKI2RlZmluZSBfU0NfUElJX09TSV9DT1RTIF9TQ19QSUlfT1NJX0NPVFMKICAgIF9TQ19QSUlf
T1NJX0NMVFMsCiNkZWZpbmUgX1NDX1BJSV9PU0lfQ0xUUyBfU0NfUElJX09TSV9DTFRTCiAgICBf
U0NfUElJX09TSV9NLAojZGVmaW5lIF9TQ19QSUlfT1NJX00gX1NDX1BJSV9PU0lfTQogICAgX1ND
X1RfSU9WX01BWCwKI2RlZmluZSBfU0NfVF9JT1ZfTUFYIF9TQ19UX0lPVl9NQVgKCgogICAgX1ND
X1RIUkVBRFMsCiNkZWZpbmUgX1NDX1RIUkVBRFMgX1NDX1RIUkVBRFMKICAgIF9TQ19USFJFQURf
U0FGRV9GVU5DVElPTlMsCiNkZWZpbmUgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyBfU0NfVEhS
RUFEX1NBRkVfRlVOQ1RJT05TCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKI2RlZmluZSBfU0Nf
R0VUR1JfUl9TSVpFX01BWCBfU0NfR0VUR1JfUl9TSVpFX01BWAogICAgX1NDX0dFVFBXX1JfU0la
RV9NQVgsCiNkZWZpbmUgX1NDX0dFVFBXX1JfU0laRV9NQVggX1NDX0dFVFBXX1JfU0laRV9NQVgK
ICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKI2RlZmluZSBfU0NfTE9HSU5fTkFNRV9NQVggX1NDX0xP
R0lOX05BTUVfTUFYCiAgICBfU0NfVFRZX05BTUVfTUFYLAojZGVmaW5lIF9TQ19UVFlfTkFNRV9N
QVggX1NDX1RUWV9OQU1FX01BWAogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMs
CiNkZWZpbmUgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgX1NDX1RIUkVBRF9ERVNU
UlVDVE9SX0lURVJBVElPTlMKICAgIF9TQ19USFJFQURfS0VZU19NQVgsCiNkZWZpbmUgX1NDX1RI
UkVBRF9LRVlTX01BWCBfU0NfVEhSRUFEX0tFWVNfTUFYCiAgICBfU0NfVEhSRUFEX1NUQUNLX01J
TiwKI2RlZmluZSBfU0NfVEhSRUFEX1NUQUNLX01JTiBfU0NfVEhSRUFEX1NUQUNLX01JTgogICAg
X1NDX1RIUkVBRF9USFJFQURTX01BWCwKI2RlZmluZSBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYIF9T
Q19USFJFQURfVEhSRUFEU19NQVgKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCiNkZWZp
bmUgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSCiAg
ICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAojZGVmaW5lIF9TQ19USFJFQURfQVRUUl9TVEFD
S1NJWkUgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRQogICAgX1NDX1RIUkVBRF9QUklPUklUWV9T
Q0hFRFVMSU5HLAojZGVmaW5lIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyBfU0NfVEhS
RUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAojZGVm
aW5lIF9TQ19USFJFQURfUFJJT19JTkhFUklUIF9TQ19USFJFQURfUFJJT19JTkhFUklUCiAgICBf
U0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwKI2RlZmluZSBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCBf
U0NfVEhSRUFEX1BSSU9fUFJPVEVDVAogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKI2Rl
ZmluZSBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQK
CiAgICBfU0NfTlBST0NFU1NPUlNfQ09ORiwKI2RlZmluZSBfU0NfTlBST0NFU1NPUlNfQ09ORiBf
U0NfTlBST0NFU1NPUlNfQ09ORgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCiNkZWZpbmUgX1ND
X05QUk9DRVNTT1JTX09OTE4gX1NDX05QUk9DRVNTT1JTX09OTE4KICAgIF9TQ19QSFlTX1BBR0VT
LAojZGVmaW5lIF9TQ19QSFlTX1BBR0VTIF9TQ19QSFlTX1BBR0VTCiAgICBfU0NfQVZQSFlTX1BB
R0VTLAojZGVmaW5lIF9TQ19BVlBIWVNfUEFHRVMgX1NDX0FWUEhZU19QQUdFUwogICAgX1NDX0FU
RVhJVF9NQVgsCiNkZWZpbmUgX1NDX0FURVhJVF9NQVggX1NDX0FURVhJVF9NQVgKICAgIF9TQ19Q
QVNTX01BWCwKI2RlZmluZSBfU0NfUEFTU19NQVggX1NDX1BBU1NfTUFYCgogICAgX1NDX1hPUEVO
X1ZFUlNJT04sCiNkZWZpbmUgX1NDX1hPUEVOX1ZFUlNJT04gX1NDX1hPUEVOX1ZFUlNJT04KICAg
IF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKI2RlZmluZSBfU0NfWE9QRU5fWENVX1ZFUlNJT04gX1ND
X1hPUEVOX1hDVV9WRVJTSU9OCiAgICBfU0NfWE9QRU5fVU5JWCwKI2RlZmluZSBfU0NfWE9QRU5f
VU5JWCBfU0NfWE9QRU5fVU5JWAogICAgX1NDX1hPUEVOX0NSWVBULAojZGVmaW5lIF9TQ19YT1BF
Tl9DUllQVCBfU0NfWE9QRU5fQ1JZUFQKICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKI2RlZmluZSBf
U0NfWE9QRU5fRU5IX0kxOE4gX1NDX1hPUEVOX0VOSF9JMThOCiAgICBfU0NfWE9QRU5fU0hNLAoj
ZGVmaW5lIF9TQ19YT1BFTl9TSE0gX1NDX1hPUEVOX1NITQoKICAgIF9TQ18yX0NIQVJfVEVSTSwK
I2RlZmluZSBfU0NfMl9DSEFSX1RFUk0gX1NDXzJfQ0hBUl9URVJNCiAgICBfU0NfMl9DX1ZFUlNJ
T04sCiNkZWZpbmUgX1NDXzJfQ19WRVJTSU9OIF9TQ18yX0NfVkVSU0lPTgogICAgX1NDXzJfVVBF
LAojZGVmaW5lIF9TQ18yX1VQRSBfU0NfMl9VUEUKCiAgICBfU0NfWE9QRU5fWFBHMiwKI2RlZmlu
ZSBfU0NfWE9QRU5fWFBHMiBfU0NfWE9QRU5fWFBHMgogICAgX1NDX1hPUEVOX1hQRzMsCiNkZWZp
bmUgX1NDX1hPUEVOX1hQRzMgX1NDX1hPUEVOX1hQRzMKICAgIF9TQ19YT1BFTl9YUEc0LAojZGVm
aW5lIF9TQ19YT1BFTl9YUEc0IF9TQ19YT1BFTl9YUEc0CgogICAgX1NDX0NIQVJfQklULAojZGVm
aW5lIF9TQ19DSEFSX0JJVCBfU0NfQ0hBUl9CSVQKICAgIF9TQ19DSEFSX01BWCwKI2RlZmluZSBf
U0NfQ0hBUl9NQVggX1NDX0NIQVJfTUFYCiAgICBfU0NfQ0hBUl9NSU4sCiNkZWZpbmUgX1NDX0NI
QVJfTUlOIF9TQ19DSEFSX01JTgogICAgX1NDX0lOVF9NQVgsCiNkZWZpbmUgX1NDX0lOVF9NQVgg
X1NDX0lOVF9NQVgKICAgIF9TQ19JTlRfTUlOLAojZGVmaW5lIF9TQ19JTlRfTUlOIF9TQ19JTlRf
TUlOCiAgICBfU0NfTE9OR19CSVQsCiNkZWZpbmUgX1NDX0xPTkdfQklUIF9TQ19MT05HX0JJVAog
ICAgX1NDX1dPUkRfQklULAojZGVmaW5lIF9TQ19XT1JEX0JJVCBfU0NfV09SRF9CSVQKICAgIF9T
Q19NQl9MRU5fTUFYLAojZGVmaW5lIF9TQ19NQl9MRU5fTUFYIF9TQ19NQl9MRU5fTUFYCiAgICBf
U0NfTlpFUk8sCiNkZWZpbmUgX1NDX05aRVJPIF9TQ19OWkVSTwogICAgX1NDX1NTSVpFX01BWCwK
I2RlZmluZSBfU0NfU1NJWkVfTUFYIF9TQ19TU0laRV9NQVgKICAgIF9TQ19TQ0hBUl9NQVgsCiNk
ZWZpbmUgX1NDX1NDSEFSX01BWCBfU0NfU0NIQVJfTUFYCiAgICBfU0NfU0NIQVJfTUlOLAojZGVm
aW5lIF9TQ19TQ0hBUl9NSU4gX1NDX1NDSEFSX01JTgogICAgX1NDX1NIUlRfTUFYLAojZGVmaW5l
IF9TQ19TSFJUX01BWCBfU0NfU0hSVF9NQVgKICAgIF9TQ19TSFJUX01JTiwKI2RlZmluZSBfU0Nf
U0hSVF9NSU4gX1NDX1NIUlRfTUlOCiAgICBfU0NfVUNIQVJfTUFYLAojZGVmaW5lIF9TQ19VQ0hB
Ul9NQVggX1NDX1VDSEFSX01BWAogICAgX1NDX1VJTlRfTUFYLAojZGVmaW5lIF9TQ19VSU5UX01B
WCBfU0NfVUlOVF9NQVgKICAgIF9TQ19VTE9OR19NQVgsCiNkZWZpbmUgX1NDX1VMT05HX01BWCBf
U0NfVUxPTkdfTUFYCiAgICBfU0NfVVNIUlRfTUFYLAojZGVmaW5lIF9TQ19VU0hSVF9NQVggX1ND
X1VTSFJUX01BWAoKICAgIF9TQ19OTF9BUkdNQVgsCiNkZWZpbmUgX1NDX05MX0FSR01BWCBfU0Nf
TkxfQVJHTUFYCiAgICBfU0NfTkxfTEFOR01BWCwKI2RlZmluZSBfU0NfTkxfTEFOR01BWCBfU0Nf
TkxfTEFOR01BWAogICAgX1NDX05MX01TR01BWCwKI2RlZmluZSBfU0NfTkxfTVNHTUFYIF9TQ19O
TF9NU0dNQVgKICAgIF9TQ19OTF9OTUFYLAojZGVmaW5lIF9TQ19OTF9OTUFYIF9TQ19OTF9OTUFY
CiAgICBfU0NfTkxfU0VUTUFYLAojZGVmaW5lIF9TQ19OTF9TRVRNQVggX1NDX05MX1NFVE1BWAog
ICAgX1NDX05MX1RFWFRNQVgsCiNkZWZpbmUgX1NDX05MX1RFWFRNQVggX1NDX05MX1RFWFRNQVgK
CiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKI2RlZmluZSBfU0NfWEJTNV9JTFAzMl9PRkYzMiBf
U0NfWEJTNV9JTFAzMl9PRkYzMgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAojZGVmaW5lIF9T
Q19YQlM1X0lMUDMyX09GRkJJRyBfU0NfWEJTNV9JTFAzMl9PRkZCSUcKICAgIF9TQ19YQlM1X0xQ
NjRfT0ZGNjQsCiNkZWZpbmUgX1NDX1hCUzVfTFA2NF9PRkY2NCBfU0NfWEJTNV9MUDY0X09GRjY0
CiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCiNkZWZpbmUgX1NDX1hCUzVfTFBCSUdfT0ZGQklH
IF9TQ19YQlM1X0xQQklHX09GRkJJRwoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCiNkZWZpbmUgX1ND
X1hPUEVOX0xFR0FDWSBfU0NfWE9QRU5fTEVHQUNZCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCiNk
ZWZpbmUgX1NDX1hPUEVOX1JFQUxUSU1FIF9TQ19YT1BFTl9SRUFMVElNRQogICAgX1NDX1hPUEVO
X1JFQUxUSU1FX1RIUkVBRFMsCiNkZWZpbmUgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgX1ND
X1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMKCiAgICBfU0NfQURWSVNPUllfSU5GTywKI2RlZmluZSBf
U0NfQURWSVNPUllfSU5GTyBfU0NfQURWSVNPUllfSU5GTwogICAgX1NDX0JBUlJJRVJTLAojZGVm
aW5lIF9TQ19CQVJSSUVSUyBfU0NfQkFSUklFUlMKICAgIF9TQ19CQVNFLAojZGVmaW5lIF9TQ19C
QVNFIF9TQ19CQVNFCiAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCiNkZWZpbmUgX1NDX0NfTEFOR19T
VVBQT1JUIF9TQ19DX0xBTkdfU1VQUE9SVAogICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsCiNkZWZp
bmUgX1NDX0NfTEFOR19TVVBQT1JUX1IgX1NDX0NfTEFOR19TVVBQT1JUX1IKICAgIF9TQ19DTE9D
S19TRUxFQ1RJT04sCiNkZWZpbmUgX1NDX0NMT0NLX1NFTEVDVElPTiBfU0NfQ0xPQ0tfU0VMRUNU
SU9OCiAgICBfU0NfQ1BVVElNRSwKI2RlZmluZSBfU0NfQ1BVVElNRSBfU0NfQ1BVVElNRQogICAg
X1NDX1RIUkVBRF9DUFVUSU1FLAojZGVmaW5lIF9TQ19USFJFQURfQ1BVVElNRSBfU0NfVEhSRUFE
X0NQVVRJTUUKICAgIF9TQ19ERVZJQ0VfSU8sCiNkZWZpbmUgX1NDX0RFVklDRV9JTyBfU0NfREVW
SUNFX0lPCiAgICBfU0NfREVWSUNFX1NQRUNJRklDLAojZGVmaW5lIF9TQ19ERVZJQ0VfU1BFQ0lG
SUMgX1NDX0RFVklDRV9TUEVDSUZJQwogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAojZGVmaW5l
IF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiBfU0NfREVWSUNFX1NQRUNJRklDX1IKICAgIF9TQ19GRF9N
R01ULAojZGVmaW5lIF9TQ19GRF9NR01UIF9TQ19GRF9NR01UCiAgICBfU0NfRklGTywKI2RlZmlu
ZSBfU0NfRklGTyBfU0NfRklGTwogICAgX1NDX1BJUEUsCiNkZWZpbmUgX1NDX1BJUEUgX1NDX1BJ
UEUKICAgIF9TQ19GSUxFX0FUVFJJQlVURVMsCiNkZWZpbmUgX1NDX0ZJTEVfQVRUUklCVVRFUyBf
U0NfRklMRV9BVFRSSUJVVEVTCiAgICBfU0NfRklMRV9MT0NLSU5HLAojZGVmaW5lIF9TQ19GSUxF
X0xPQ0tJTkcgX1NDX0ZJTEVfTE9DS0lORwogICAgX1NDX0ZJTEVfU1lTVEVNLAojZGVmaW5lIF9T
Q19GSUxFX1NZU1RFTSBfU0NfRklMRV9TWVNURU0KICAgIF9TQ19NT05PVE9OSUNfQ0xPQ0ssCiNk
ZWZpbmUgX1NDX01PTk9UT05JQ19DTE9DSyBfU0NfTU9OT1RPTklDX0NMT0NLCiAgICBfU0NfTVVM
VElfUFJPQ0VTUywKI2RlZmluZSBfU0NfTVVMVElfUFJPQ0VTUyBfU0NfTVVMVElfUFJPQ0VTUwog
ICAgX1NDX1NJTkdMRV9QUk9DRVNTLAojZGVmaW5lIF9TQ19TSU5HTEVfUFJPQ0VTUyBfU0NfU0lO
R0xFX1BST0NFU1MKICAgIF9TQ19ORVRXT1JLSU5HLAojZGVmaW5lIF9TQ19ORVRXT1JLSU5HIF9T
Q19ORVRXT1JLSU5HCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywKI2RlZmluZSBfU0NfUkVB
REVSX1dSSVRFUl9MT0NLUyBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUwogICAgX1NDX1NQSU5fTE9D
S1MsCiNkZWZpbmUgX1NDX1NQSU5fTE9DS1MgX1NDX1NQSU5fTE9DS1MKICAgIF9TQ19SRUdFWFAs
CiNkZWZpbmUgX1NDX1JFR0VYUCBfU0NfUkVHRVhQCiAgICBfU0NfUkVHRVhfVkVSU0lPTiwKI2Rl
ZmluZSBfU0NfUkVHRVhfVkVSU0lPTiBfU0NfUkVHRVhfVkVSU0lPTgogICAgX1NDX1NIRUxMLAoj
ZGVmaW5lIF9TQ19TSEVMTCBfU0NfU0hFTEwKICAgIF9TQ19TSUdOQUxTLAojZGVmaW5lIF9TQ19T
SUdOQUxTIF9TQ19TSUdOQUxTCiAgICBfU0NfU1BBV04sCiNkZWZpbmUgX1NDX1NQQVdOIF9TQ19T
UEFXTgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKI2RlZmluZSBfU0NfU1BPUkFESUNfU0VSVkVS
IF9TQ19TUE9SQURJQ19TRVJWRVIKICAgIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSLAojZGVm
aW5lIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVS
CiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAojZGVmaW5lIF9TQ19TWVNURU1fREFUQUJBU0UgX1ND
X1NZU1RFTV9EQVRBQkFTRQogICAgX1NDX1NZU1RFTV9EQVRBQkFTRV9SLAojZGVmaW5lIF9TQ19T
WVNURU1fREFUQUJBU0VfUiBfU0NfU1lTVEVNX0RBVEFCQVNFX1IKICAgIF9TQ19USU1FT1VUUywK
I2RlZmluZSBfU0NfVElNRU9VVFMgX1NDX1RJTUVPVVRTCiAgICBfU0NfVFlQRURfTUVNT1JZX09C
SkVDVFMsCiNkZWZpbmUgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTIF9TQ19UWVBFRF9NRU1PUllf
T0JKRUNUUwogICAgX1NDX1VTRVJfR1JPVVBTLAojZGVmaW5lIF9TQ19VU0VSX0dST1VQUyBfU0Nf
VVNFUl9HUk9VUFMKICAgIF9TQ19VU0VSX0dST1VQU19SLAojZGVmaW5lIF9TQ19VU0VSX0dST1VQ
U19SIF9TQ19VU0VSX0dST1VQU19SCiAgICBfU0NfMl9QQlMsCiNkZWZpbmUgX1NDXzJfUEJTIF9T
Q18yX1BCUwogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCiNkZWZpbmUgX1NDXzJfUEJTX0FDQ09V
TlRJTkcgX1NDXzJfUEJTX0FDQ09VTlRJTkcKICAgIF9TQ18yX1BCU19MT0NBVEUsCiNkZWZpbmUg
X1NDXzJfUEJTX0xPQ0FURSBfU0NfMl9QQlNfTE9DQVRFCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwK
I2RlZmluZSBfU0NfMl9QQlNfTUVTU0FHRSBfU0NfMl9QQlNfTUVTU0FHRQogICAgX1NDXzJfUEJT
X1RSQUNLLAojZGVmaW5lIF9TQ18yX1BCU19UUkFDSyBfU0NfMl9QQlNfVFJBQ0sKICAgIF9TQ19T
WU1MT09QX01BWCwKI2RlZmluZSBfU0NfU1lNTE9PUF9NQVggX1NDX1NZTUxPT1BfTUFYCiAgICBf
U0NfU1RSRUFNUywKI2RlZmluZSBfU0NfU1RSRUFNUyBfU0NfU1RSRUFNUwogICAgX1NDXzJfUEJT
X0NIRUNLUE9JTlQsCiNkZWZpbmUgX1NDXzJfUEJTX0NIRUNLUE9JTlQgX1NDXzJfUEJTX0NIRUNL
UE9JTlQKCiAgICBfU0NfVjZfSUxQMzJfT0ZGMzIsCiNkZWZpbmUgX1NDX1Y2X0lMUDMyX09GRjMy
IF9TQ19WNl9JTFAzMl9PRkYzMgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKI2RlZmluZSBfU0Nf
VjZfSUxQMzJfT0ZGQklHIF9TQ19WNl9JTFAzMl9PRkZCSUcKICAgIF9TQ19WNl9MUDY0X09GRjY0
LAojZGVmaW5lIF9TQ19WNl9MUDY0X09GRjY0IF9TQ19WNl9MUDY0X09GRjY0CiAgICBfU0NfVjZf
TFBCSUdfT0ZGQklHLAojZGVmaW5lIF9TQ19WNl9MUEJJR19PRkZCSUcgX1NDX1Y2X0xQQklHX09G
RkJJRwoKICAgIF9TQ19IT1NUX05BTUVfTUFYLAojZGVmaW5lIF9TQ19IT1NUX05BTUVfTUFYIF9T
Q19IT1NUX05BTUVfTUFYCiAgICBfU0NfVFJBQ0UsCiNkZWZpbmUgX1NDX1RSQUNFIF9TQ19UUkFD
RQogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKI2RlZmluZSBfU0NfVFJBQ0VfRVZFTlRfRklM
VEVSIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIKICAgIF9TQ19UUkFDRV9JTkhFUklULAojZGVmaW5l
IF9TQ19UUkFDRV9JTkhFUklUIF9TQ19UUkFDRV9JTkhFUklUCiAgICBfU0NfVFJBQ0VfTE9HCiNk
ZWZpbmUgX1NDX1RSQUNFX0xPRyBfU0NfVFJBQ0VfTE9HCiAgfTsKCgoKCgplbnVtCiAgewogICAg
X0NTX1BBVEgsCiNkZWZpbmUgX0NTX1BBVEggX0NTX1BBVEgKIyA1NjMgIi91c3IvaW5jbHVkZS9i
aXRzL2NvbmZuYW1lLmgiIDMKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKI2RlZmlu
ZSBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VO
VlMKICB9OwojIDUwMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgpleHRlcm4gbG9uZyBp
bnQgcGF0aGNvbmYgKF9fY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJu
IGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9u
ZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19sZW4pIDsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBpZCAodm9pZCkgOwoKCmV4dGVybiBfX3Bp
ZF90IGdldHBwaWQgKHZvaWQpIDsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIDsK
IyA1MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBfX2dldHBnaWQg
KF9fcGlkX3QgX19waWQpIDsKIyA1NDUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTYyICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSA7CgoK
CgoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRfdCBnZXRl
dWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0ZXJuIF9f
Z2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGludCBfX3Np
emUsIF9fZ2lkX3QgX19saXN0W10pIDsKIyA2MTMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVp
ZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSA7CgoKCgpleHRlcm4gaW50IHNldGV1
aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19n
aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9f
ZWdpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4
dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZv
aWQpIDsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGlu
dCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoK
CmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAo
dm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25z
dCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zy
b20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9fY29uc3QgY2hhciAqX19w
YXRoKSA7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIDsKCgpleHRlcm4g
aW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7CgoKCmV4dGVybiBj
aGFyICpnZXRsb2dpbiAodm9pZCkgOwojIDcxNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKCgojZGVmaW5l
IF9fbmVlZF9nZXRvcHQgCiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vz
ci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvaW5j
bHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJy
OwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyAxNDUgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpl
eHRlcm4gaW50IGdldG9wdCAoaW50IF9fX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25z
dCBjaGFyICpfX3Nob3J0b3B0cyk7CiMgMTc5ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKI3Vu
ZGVmIF9fbmVlZF9nZXRvcHQKIyA3MjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCgoK
CgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoK
CgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90
IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lkKSA7CgoKCgoK
ZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwpl
eHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19s
ZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIDsKCgpleHRlcm4gaW50IHJldm9r
ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNp
Z25lZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpIDsKCgoKCgpl
eHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpn
ZXR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSA7CmV4
dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChp
bnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hyb290IChf
X2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25zdCBj
aGFyICpfX3Byb21wdCkgOwoKCgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSA7CgoKCgoK
CmV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBzeW5jICh2
b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg0MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg1NyAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9pZCkg
OwojIDg2NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2b2lkICpf
X2FkZHIpIDsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3QgX19kZWx0YSkgOwojIDg4
NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25n
IGludCBfX3N5c25vLCAuLi4pIDsKIyA5MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojZGVm
aW5lIEZfVUxPQ0sgMAojZGVmaW5lIEZfTE9DSyAxCiNkZWZpbmUgRl9UTE9DSyAyCiNkZWZpbmUg
Rl9URVNUIDMKCgpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZl90
IF9fbGVuKSA7CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0
YXN5bmMgKGludCBfX2ZpbGRlcykgOwojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCpfX2NoaWxkKSAodm9pZCkpIDsKCgoKIyAxOSAiLi4vLi4v
c3JjL3NkYm0udjAvc2RibWZsZHUuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAx
IDMKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMKI2RlZmluZSBfU1lTX01NQU5fSCAx
CgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKIyAxICIvdXNyL2xvY2FsL3NuYXAvZ2NjLTIwMDIw
ODE5L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDIyMSAiL3Vzci9sb2NhbC9zbmFwL2djYy0yMDAyMDgxOS9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBfX25lZWRfc2l6
ZV90CiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAyIDMKIyA0MiAiL3Vzci9pbmNsdWRl
L3N5cy9tbWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tbWFuLmgiIDEgMwojIDMzICIv
dXNyL2luY2x1ZGUvYml0cy9tbWFuLmgiIDMKI2RlZmluZSBQUk9UX1JFQUQgMHgxCiNkZWZpbmUg
UFJPVF9XUklURSAweDIKI2RlZmluZSBQUk9UX0VYRUMgMHg0CiNkZWZpbmUgUFJPVF9OT05FIDB4
MAoKCiNkZWZpbmUgTUFQX1NIQVJFRCAweDAxCiNkZWZpbmUgTUFQX1BSSVZBVEUgMHgwMgoKI2Rl
ZmluZSBNQVBfVFlQRSAweDBmCgoKCiNkZWZpbmUgTUFQX0ZJWEVEIDB4MTAKCiNkZWZpbmUgTUFQ
X0ZJTEUgMAojZGVmaW5lIE1BUF9BTk9OWU1PVVMgMHgyMAojZGVmaW5lIE1BUF9BTk9OIE1BUF9B
Tk9OWU1PVVMKCgoKCiNkZWZpbmUgTUFQX0dST1dTRE9XTiAweDAxMDAKI2RlZmluZSBNQVBfREVO
WVdSSVRFIDB4MDgwMAojZGVmaW5lIE1BUF9FWEVDVVRBQkxFIDB4MTAwMAojZGVmaW5lIE1BUF9M
T0NLRUQgMHgyMDAwCiNkZWZpbmUgTUFQX05PUkVTRVJWRSAweDQwMDAKCgoKI2RlZmluZSBNU19B
U1lOQyAxCiNkZWZpbmUgTVNfU1lOQyA0CiNkZWZpbmUgTVNfSU5WQUxJREFURSAyCgoKI2RlZmlu
ZSBNQ0xfQ1VSUkVOVCAxCiNkZWZpbmUgTUNMX0ZVVFVSRSAyCiMgNzkgIi91c3IvaW5jbHVkZS9i
aXRzL21tYW4uaCIgMwojZGVmaW5lIE1BRFZfTk9STUFMIDAKI2RlZmluZSBNQURWX1JBTkRPTSAx
CiNkZWZpbmUgTUFEVl9TRVFVRU5USUFMIDIKI2RlZmluZSBNQURWX1dJTExORUVEIDMKI2RlZmlu
ZSBNQURWX0RPTlRORUVEIDQKIyA0MyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMwoKCiNk
ZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQgKikgLTEpCgoKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy9t
bWFuLmgiIDMKZXh0ZXJuIHZvaWQgKm1tYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBp
bnQgX19wcm90LAogICAgICAgICAgICAgICAgICAgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29m
Zl90IF9fb2Zmc2V0KSA7CiMgNzcgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCmV4dGVybiBp
bnQgbXVubWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIGludCBt
cHJvdGVjdCAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX3Byb3QpIDsKCgoKCmV4
dGVybiBpbnQgbXN5bmMgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19mbGFncykg
OwoKCgoKZXh0ZXJuIGludCBtYWR2aXNlICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50
IF9fYWR2aWNlKSA7CiMgMTAxICIvdXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMwpleHRlcm4gaW50
IG1sb2NrIChfX2NvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSA7CgoKZXh0ZXJuIGlu
dCBtdW5sb2NrIChfX2NvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSA7CgoKCgpleHRl
cm4gaW50IG1sb2NrYWxsIChpbnQgX19mbGFncykgOwoKCgpleHRlcm4gaW50IG11bmxvY2thbGwg
KHZvaWQpIDsKCgoKCgpleHRlcm4gdm9pZCAqbXJlbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBf
X29sZF9sZW4sIHNpemVfdCBfX25ld19sZW4sCiAgICAgICAgICAgICAgICAgICAgIGludCBfX21h
eV9tb3ZlKSA7CgoKCgoKCmV4dGVybiBpbnQgbWluY29yZSAodm9pZCAqX19zdGFydCwgc2l6ZV90
IF9fbGVuLCB1bnNpZ25lZCBjaGFyICpfX3ZlYyk7CgoKCgpleHRlcm4gaW50IHNobV9vcGVuIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fb2ZsYWcsIG1vZGVfdCBfX21vZGUpOwoKCmV4dGVy
biBpbnQgc2htX3VubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCiMgMjAgIi4uLy4uL3Ny
Yy9zZGJtLnYwL3NkYm1mbGR1LmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwoj
IDI0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKI2RlZmluZSBfU1RSSU5HX0ggMQoKCgoKCgoj
ZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAiL3Vzci9sb2Nh
bC9zbmFwL2djYy0yMDAyMDgxOS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMjEgIi91c3IvbG9jYWwvc25hcC9nY2MtMjAwMjA4MTkv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgX19uZWVkX3NpemVfdAojIDM2NCAiL3Vzci9sb2NhbC9zbmFwL2djYy0yMDAyMDgxOS9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1
bmRlZiBOVUxMCgoKCgojZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKCgoKCgojdW5kZWYgX19uZWVk
X05VTEwKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1l
bWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICpt
ZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAg
ICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYywgc2l6ZV90IF9fbikKICAgICA7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2
b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwojIDc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAg
ICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBz
aXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CiMgMTIw
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBj
aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
IyAxNjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFy
ICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFy
ICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRs
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAxODcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19z
dHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKIyAy
MTggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25z
dCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDIyOSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7CgoK
CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAq
X19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6
ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0
IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50
IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDI3MiAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMg
Mjk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgOwojIDM1NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcuaCIgMwojZGVmaW5lIF9TVFJJTkdfQVJDSF91bmFsaWduZWQgMQojIDM1OCAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMSAzCiMgNDYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIF9fU1RS
SU5HX0lOTElORSBleHRlcm4gX19pbmxpbmUKIyA1NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCiNkZWZpbmUgX19TVFJJTkcyX1NNQUxMX0dFVDE2KHNyYyxpZHgpICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMpKVtpZHggKyAxXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4XSkK
CgojZGVmaW5lIF9fU1RSSU5HMl9TTUFMTF9HRVQzMihzcmMsaWR4KSAoKCgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMpKVtpZHggKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4ICsgMl0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMp
KVtpZHggKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHNyYykpW2lkeF0pCiMgOTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoj
ZGVmaW5lIF9fc3RyaW5nMl8xYnB0cl9wKF9feCkgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKF9f
eCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoX194KSA9PSAxKQoKCgoKCiNkZWZpbmUg
bWVtc2V0KHMsYyxuKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYm
IChuKSA8PSAxNiA/ICgobikgPT0gMSA/IF9fbWVtc2V0XzEgKHMsIGMpIDogX19tZW1zZXRfZ2Mg
KHMsIGMsIG4pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYykgJiYgKGMpID09ICdcMCcgPyAo
eyB2b2lkICpfX3MgPSAocyk7IF9fYnplcm8gKF9fcywgbik7IF9fczsgfSkgOiBtZW1zZXQgKHMs
IGMsIG4pKSkpCiMgMTA4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBf
X21lbXNldF8xKHMsYykgKHsgdm9pZCAqX19zID0gKHMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9
IChfX3VpbnQ4X3QpIGM7IF9fczsgfSkKCgojZGVmaW5lIF9fbWVtc2V0X2djKHMsYyxuKSAoeyB2
b2lkICpfX3MgPSAocyk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0
IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBf
X2MgPSAoX191aW50OF90KSAoYyk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKG4pKSB7IGNhc2Ug
MTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNh
c2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVk
IHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChj
aGFyICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsg
Y2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5z
aWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICop
IF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVh
azsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KQojIDE5MCAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19iemVybyhzLG4pIF9fYnVpbHRpbl9tZW1z
ZXQgKHMsICdcMCcsIG4pCiMgMzg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0
ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojZGVmaW5l
IHN0cmNocihzLGMpIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYykgJiYg
KGMpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAocywgYykgOiBzdHJjaHIgKHMsIGMp
KSkKIyA3NTQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cm5jcHko
ZGVzdCxzcmMsbikgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzcmMpICYm
IF9fYnVpbHRpbl9jb25zdGFudF9wIChuKSA/IChzdHJsZW4gKHNyYykgKyAxID49ICgoc2l6ZV90
KSAobikpID8gKGNoYXIgKikgbWVtY3B5IChkZXN0LCBzcmMsIG4pIDogc3RybmNweSAoZGVzdCwg
c3JjLCBuKSkgOiBzdHJuY3B5IChkZXN0LCBzcmMsIG4pKSkKIyA3NzYgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cm5jYXQoZGVzdCxzcmMsbikgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzcmMpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChu
KSA/IChzdHJsZW4gKHNyYykgPCAoKHNpemVfdCkgKG4pKSA/IHN0cmNhdCAoZGVzdCwgc3JjKSA6
IHN0cm5jYXQgKGRlc3QsIHNyYywgbikpIDogc3RybmNhdCAoZGVzdCwgc3JjLCBuKSkpCiMgNzg4
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBzdHJjbXAoczEsczIpIF9f
ZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25z
dGFudF9wIChzMSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiAoX19zMV9sZW4gPSBz
dHJsZW4gKHMxKSwgX19zMl9sZW4gPSBzdHJsZW4gKHMyKSwgKCFfX3N0cmluZzJfMWJwdHJfcCAo
czEpIHx8IF9fczFfbGVuID49IDQpICYmICghX19zdHJpbmcyXzFicHRyX3AgKHMyKSB8fCBfX3My
X2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKHMxKSwgKF9fY29uc3QgY2hh
ciAqKSAoczIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsg
MSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHMxKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczEp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoczEpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChzMikgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMyKSA/IF9fc3RyY21wX2NjIChz
MSwgczIsIF9fczFfbGVuKSA6IF9fc3RyY21wX2NnIChzMSwgczIsIF9fczFfbGVuKSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczIpICYmIChfX3My
X2xlbiA9IHN0cmxlbiAoczIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChzMSkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMxKSA/IF9fc3RyY21wX2NjIChzMSwgczIsIF9f
czJfbGVuKSA6IF9fc3RyY21wX2djIChzMSwgczIsIF9fczJfbGVuKSkgOiBzdHJjbXAgKHMxLCBz
MikpKSk7IH0pCiMgODA5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBf
X3N0cmNtcF9jYyhzMSxzMixsKSAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoczIpKVswXSk7
IGlmIChsID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzFdKTsgaWYgKGwgPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoczEpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHMyKSlbMl0pOyBpZiAobCA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKQojIDgzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNk
ZWZpbmUgX19zdHJjbXBfY2coczEsczIsbDEpIChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoczIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVswXSAtIF9fczJbMF0pOyBpZiAobDEgPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoczEpKVsxXSAtIF9fczJbMV0pOyBpZiAobDEgPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoczEpKVsyXSAtIF9fczJbMl0pOyBpZiAobDEgPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHMxKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkKIyA4NTggIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIF9fc3RyY21wX2djKHMxLHMyLGwyKSAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHMyKSlbMF07IGlmIChsMiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3Mx
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsx
XSk7IGlmIChsMiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsyXSk7IGlm
IChsMiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKQojIDg4NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgc3Ry
bmNtcChzMSxzMixuKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYm
ICgoX19idWlsdGluX2NvbnN0YW50X3AgKHMxKSAmJiBzdHJsZW4gKHMxKSA8ICgoc2l6ZV90KSAo
bikpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiBzdHJsZW4gKHMyKSA8ICgoc2l6
ZV90KSAobikpKSkgPyBzdHJjbXAgKHMxLCBzMikgOiBzdHJuY21wIChzMSwgczIsIG4pKSkKIyA5
MDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cmNzcG4ocyxyZWpl
Y3QpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKHJlamVjdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVjdCkgPyAoKF9fcjAg
PSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sIF9fcjAgPT0gJ1wwJykgPyBzdHJsZW4g
KHMpIDogKChfX3IxID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFdLCBfX3IxID09ICdc
MCcpID8gX19zdHJjc3BuX2MxIChzLCBfX3IwKSA6ICgoX19yMiA9ICgoX19jb25zdCBjaGFyICop
IChyZWplY3QpKVsyXSwgX19yMiA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMiAocywgX19yMCwgX19y
MSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0cmNzcG5f
YzMgKHMsIF9fcjAsIF9fcjEsIF9fcjIpIDogc3RyY3NwbiAocywgcmVqZWN0KSkpKSkgOiBzdHJj
c3BuIChzLCByZWplY3QpKTsgfSkKIyA5MTcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MxIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0
ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0g
X19yZWplY3QpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWpl
Y3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0Mik7
CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3Vs
dCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyLCBpbnQgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19yZWplY3QxLCBpbnQgX19yZWplY3QyLAogICAgICAgICAgICAgIGludCBfX3JlamVjdDMp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRd
ICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKI2RlZmluZSBzdHJzcG4ocyxh
Y2NlcHQpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKGFjY2VwdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKGFjY2VwdCkgPyAoKF9f
YTAgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMF0sIF9fYTAgPT0gJ1wwJykgPyAoKHZv
aWQpIChzKSwgMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMV0sIF9f
YTEgPT0gJ1wwJykgPyBfX3N0cnNwbl9jMSAocywgX19hMCkgOiAoKF9fYTIgPSAoKF9fY29uc3Qg
Y2hhciAqKSAoYWNjZXB0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBfX3N0cnNwbl9jMiAocywgX19h
MCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKGFjY2VwdCkpWzNdID09ICdcMCcgPyBfX3N0
cnNwbl9jMyAocywgX19hMCwgX19hMSwgX19hMikgOiBzdHJzcG4gKHMsIGFjY2VwdCkpKSkpIDog
c3Ryc3BuIChzLCBhY2NlcHQpKTsgfSkKIyA5NzQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3Vs
dCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3Vs
dDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5f
YzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApf
X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19f
cmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0
cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCgoKCiNkZWZp
bmUgc3RycGJyayhzLGFjY2VwdCkgX19leHRlbnNpb25fXyAoeyBjaGFyIF9fYTAsIF9fYTEsIF9f
YTI7IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYWNjZXB0KSAmJiBfX3N0cmluZzJfMWJwdHJfcCAo
YWNjZXB0KSA/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChhY2NlcHQpKVswXSwgX19hMCA9
PSAnXDAnKSA/ICgodm9pZCkgKHMpLCBOVUxMKSA6ICgoX19hMSA9ICgoX19jb25zdCBjaGFyICop
IChhY2NlcHQpKVsxXSwgX19hMSA9PSAnXDAnKSA/IHN0cmNociAocywgX19hMCkgOiAoKF9fYTIg
PSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBfX3N0cnBi
cmtfYzIgKHMsIF9fYTAsIF9fYTEpIDogKCgoX19jb25zdCBjaGFyICopIChhY2NlcHQpKVszXSA9
PSAnXDAnID8gX19zdHJwYnJrX2MzIChzLCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKHMs
IGFjY2VwdCkpKSkpIDogc3RycGJyayAocywgYWNjZXB0KSk7IH0pCiMgMTAzMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0
MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg
IT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAq
KTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0
dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9
CiMgMTA3NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19zdHJ0b2tf
cihzLHNlcCxuZXh0cCkgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzZXAp
ICYmIF9fc3RyaW5nMl8xYnB0cl9wIChzZXApID8gKCgoX19jb25zdCBjaGFyICopIChzZXApKVsw
XSAhPSAnXDAnICYmICgoX19jb25zdCBjaGFyICopIChzZXApKVsxXSA9PSAnXDAnID8gX19zdHJ0
b2tfcl8xYyAocywgKChfX2NvbnN0IGNoYXIgKikgKHNlcCkpWzBdLCBuZXh0cCkgOiBfX3N0cnRv
a19yIChzLCBzZXAsIG5leHRwKSkgOiBfX3N0cnRva19yIChzLCBzZXAsIG5leHRwKSkpCiMgMTA4
MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAs
IGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQg
KikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytf
X3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAnXDAnKQogICAgewog
ICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnKQogICAgICAg
IGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAgICAgIF9fc1stMV0gPSAn
XDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgKl9fbmV4dHAgPSBfX3M7
CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgojZGVmaW5lIHN0cnRva19yKHMsc2VwLG5leHRw
KSBfX3N0cnRva19yIChzLCBzZXAsIG5leHRwKQoKCgoKCgoKZXh0ZXJuIGNoYXIgKl9fc3Ryc2Vw
X2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7CiNkZWZpbmUgX19z
dHJzZXAocyxyZWplY3QpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAo
X19idWlsdGluX2NvbnN0YW50X3AgKHJlamVjdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVj
dCkgJiYgKF9fcjAgPSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sICgoX19jb25zdCBj
aGFyICopIChyZWplY3QpKVswXSAhPSAnXDAnKSA/ICgoX19yMSA9ICgoX19jb25zdCBjaGFyICop
IChyZWplY3QpKVsxXSwgKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFdID09ICdcMCcpID8g
X19zdHJzZXBfMWMgKHMsIF9fcjApIDogKChfX3IyID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVj
dCkpWzJdLCBfX3IyID09ICdcMCcpID8gX19zdHJzZXBfMmMgKHMsIF9fcjAsIF9fcjEpIDogKCgo
X19jb25zdCBjaGFyICopIChyZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJzZXBfM2MgKHMsIF9f
cjAsIF9fcjEsIF9fcjIpIDogX19zdHJzZXBfZyAocywgcmVqZWN0KSkpKSA6IF9fc3Ryc2VwX2cg
KHMsIHJlamVjdCkpOyB9KQojIDExMzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWpl
Y3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3Jl
dHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9f
cmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWpl
Y3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7
CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZv
aWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAg
ICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2Nw
ID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAn
OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAg
ICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVj
dDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAq
Kl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewog
IHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lk
ICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAg
d2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9
PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJl
dHVybiBfX3JldHZhbDsKfQoKI2RlZmluZSBzdHJzZXAocyxyZWplY3QpIF9fc3Ryc2VwIChzLCBy
ZWplY3QpCiMgMTIwOCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19u
ZWVkX21hbGxvY19hbmRfY2FsbG9jIAojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMg
MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojZGVmaW5lIF9fbmVlZF9zaXplX3QgCgoKCgoj
IDEgIi91c3IvbG9jYWwvc25hcC9nY2MtMjAwMjA4MTkvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4yLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIvdXNyL2xvY2FsL3NuYXAv
Z2NjLTIwMDIwODE5L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUv
c3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMKCgojIDUyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiNkZWZpbmUgX19tYWxs
b2NfYW5kX2NhbGxvY19kZWZpbmVkIAoKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNp
emVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CiMgODYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKI3VuZGVmIF9fbmVlZF9tYWxs
b2NfYW5kX2NhbGxvYwoKCiMgMTIxMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMK
CgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKI2RlZmluZSBfX3N0cmR1cChzKSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKHMpICYmIF9fc3RyaW5nMl8xYnB0cl9wIChzKSA/ICgo
KF9fY29uc3QgY2hhciAqKSAocykpWzBdID09ICdcMCcgPyAoY2hhciAqKSBjYWxsb2MgKDEsIDEp
IDogKHsgc2l6ZV90IF9fbGVuID0gc3RybGVuIChzKSArIDE7IGNoYXIgKl9fcmV0dmFsID0gKGNo
YXIgKikgbWFsbG9jIChfX2xlbik7IGlmIChfX3JldHZhbCAhPSBOVUxMKSBfX3JldHZhbCA9IChj
aGFyICopIG1lbWNweSAoX19yZXR2YWwsIHMsIF9fbGVuKTsgX19yZXR2YWw7IH0pKSA6IF9fc3Ry
ZHVwIChzKSkpCiMgMTIyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUg
c3RyZHVwKHMpIF9fc3RyZHVwIChzKQoKCgoKCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29u
c3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKI2RlZmluZSBfX3N0cm5kdXAocyxuKSAoX19leHRlbnNpb25fXyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKHMpICYmIF9fc3RyaW5nMl8xYnB0cl9wIChzKSA/ICgoKF9fY29uc3QgY2hh
ciAqKSAocykpWzBdID09ICdcMCcgPyAoY2hhciAqKSBjYWxsb2MgKDEsIDEpIDogKHsgc2l6ZV90
IF9fbGVuID0gc3RybGVuIChzKSArIDE7IHNpemVfdCBfX24gPSAobik7IGNoYXIgKl9fcmV0dmFs
OyBpZiAoX19uIDwgX19sZW4pIF9fbGVuID0gX19uICsgMTsgX19yZXR2YWwgPSAoY2hhciAqKSBt
YWxsb2MgKF9fbGVuKTsgaWYgKF9fcmV0dmFsICE9IE5VTEwpIHsgX19yZXR2YWxbX19sZW4gLSAx
XSA9ICdcMCc7IF9fcmV0dmFsID0gKGNoYXIgKikgbWVtY3B5IChfX3JldHZhbCwgcywgX19sZW4g
LSAxKTsgfSBfX3JldHZhbDsgfSkpIDogX19zdHJuZHVwIChzLCBuKSkpCiMgMTI2MiAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiN1bmRlZiBfX1NUUklOR19JTkxJTkUKIyAzNjEgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgojIDIxICIuLi8uLi9zcmMvc2RibS52MC9zZGJt
ZmxkdS5jIiAyCgojIDEgImF4aXMvYXhpc3R5cGVzLmgiIDEKIyAyNyAiYXhpcy9heGlzdHlwZXMu
aCIKI2RlZmluZSBfQVhJU19BWElTVFlQRVNfSF8gCiMgMSAiYXhpcy9jb25maWcuaCIgMQoKCgoK
CiNkZWZpbmUgX19BWElTX0NPTkZJR19IXyAKIyAyOCAiYXhpcy9jb25maWcuaCIKI2RlZmluZSBf
X1ZFUlMoeCx5LHopICgoKHgpKjEwMDAwMDApKygoeSkqMTAwMCkrKHopKQoKI2RlZmluZSBfX01B
Sk9SX1ZFUlModikgKCh2KS8xMDAwMDAwKQojZGVmaW5lIF9fTUlOT1JfVkVSUyh2KSAoKCh2KS8x
MDAwKSUxMDAwKQojZGVmaW5lIF9fTUlDUk9fVkVSUyh2KSAoKHYpJTEwMDApCgoKCgoKCiNkZWZp
bmUgX19BWElTX09TX0xJTlVYIDEKI2RlZmluZSBfX0FYSVNfT1NfU09MQVJJUyAyCiNkZWZpbmUg
X19BWElTX09TX0hQVVggMwojIDU3ICJheGlzL2NvbmZpZy5oIgojZGVmaW5lIF9fQVhJU19BUkNI
X3g4NiAxCiNkZWZpbmUgX19BWElTX0FSQ0hfU1BBUkMgMgojZGVmaW5lIF9fQVhJU19BUkNIX1BB
UklTQyAzCgojZGVmaW5lIF9fQVJDSF9UWVBFKHYpICgodikvMTAwMDAwMCkKI2RlZmluZSBfX0FS
Q0hfTUFKT1IodikgKCgodikvMTAwMCklMTAwMCkKI2RlZmluZSBfX0FSQ0hfTUlOT1IodikgKCh2
KSUxMDAwKQoKI2RlZmluZSBfX0FYSVNfQVJDSF9JMzg2IF9fVkVSUyhfX0FYSVNfQVJDSF94ODYs
MywwKQojZGVmaW5lIF9fQVhJU19BUkNIX0k1ODYgX19WRVJTKF9fQVhJU19BUkNIX3g4Niw1LDAp
CiNkZWZpbmUgX19BWElTX0FSQ0hfSTY4NiBfX1ZFUlMoX19BWElTX0FSQ0hfeDg2LDYsMCkKI2Rl
ZmluZSBfX0FYSVNfQVJDSF9JNzg2IF9fVkVSUyhfX0FYSVNfQVJDSF94ODYsNiwwKQojZGVmaW5l
IF9fQVhJU19BUkNIX1BFTlRJVU0gX19WRVJTKF9fQVhJU19BUkNIX3g4Niw1LDApCiNkZWZpbmUg
X19BWElTX0FSQ0hfUEVOVElVTVBSTyBfX1ZFUlMoX19BWElTX0FSQ0hfeDg2LDYsMCkKI2RlZmlu
ZSBfX0FYSVNfQVJDSF9BVEhMT04gX19WRVJTKF9fQVhJU19BUkNIX3g4Niw3LDApCgojZGVmaW5l
IF9fQVhJU19BUkNIX1NQQVJDX1Y4IF9fVkVSUyhfX0FYSVNfQVJDSF9TUEFSQyw4LDApCiNkZWZp
bmUgX19BWElTX0FSQ0hfU1BBUkNfVjkgX19WRVJTKF9fQVhJU19BUkNIX1NQQVJDLDksMCkKCiNk
ZWZpbmUgX19BWElTX0FSQ0hfSFBQQV8xXzEgX19WRVJTKF9fQVhJU19BUkNIX1BBUklTQywxLDEp
CiNkZWZpbmUgX19BWElTX0FSQ0hfSFBQQV8yIF9fVkVSUyhfX0FYSVNfQVJDSF9QQVJJU0MsMiww
KQojIDk0ICJheGlzL2NvbmZpZy5oIgojZGVmaW5lIF9fQVhJU19DT05GSUdfR0NDX1ZFUlMgX19W
RVJTKDMsMCwwKQojZGVmaW5lIF9fQVhJU19DT05GSUdfR0NDX1ZFUlNfTUFKT1IgMwojZGVmaW5l
IF9fQVhJU19DT05GSUdfR0NDX1ZFUlNfTUlOT1IgMAojZGVmaW5lIF9fQVhJU19DT05GSUdfR0ND
X1ZFUlNfTUlDUk8gMAoKI2RlZmluZSBfX0FYSVNfQ09ORklHX09TX1ZFUlMgX19WRVJTKDIsMiww
KQojZGVmaW5lIF9fQVhJU19DT05GSUdfT1NfVkVSU19NQUpPUiAyCiNkZWZpbmUgX19BWElTX0NP
TkZJR19PU19WRVJTX01JTk9SIDIKI2RlZmluZSBfX0FYSVNfQ09ORklHX09TX1ZFUlNfTUlDUk8g
MAoKI2RlZmluZSBfX1dJVEhfQVhJU19Db21tb24gMQojZGVmaW5lIF9fV0lUSF9BWElTX1V0aWwg
MQojZGVmaW5lIF9fV0lUSF9BWElTX0F0aW1lIDEKI2RlZmluZSBfX1dJVEhfQVhJU19SYzUgMQoj
ZGVmaW5lIF9fV0lUSF9BWElTX0NwcGNvbSAxCiNkZWZpbmUgX19XSVRIX0FYSVNfQWRhbVYwIDEK
I2RlZmluZSBfX1dJVEhfQVhJU19TZGJtVjAgMQojZGVmaW5lIF9fV0lUSF9BWElTX0h0aWYgMQoj
ZGVmaW5lIF9fV0lUSF9BWElTX05ldCAxCiNkZWZpbmUgX19XSVRIX0FYSVNfUFNNX3Nvd2hhdCAx
CiNkZWZpbmUgX19XSVRIX0FYSVNfRXhwU293aGF0XzEgMQojZGVmaW5lIF9fV0lUSF9BWElTX1Ro
ck5ldFRlc3QgMQojZGVmaW5lIF9fV0lUSF9BWElTX1ZsYSAxCiNkZWZpbmUgX19XSVRIX0FYSVNf
U3lzVXRsIDEKI2RlZmluZSBfX1dJVEhfQVhJU19NZDUgMQojZGVmaW5lIF9fV0lUSF9BWElTX010
YWIgMQojZGVmaW5lIF9fV0lUSF9BWElTX0FuYWxOdGZzIDEKI2RlZmluZSBfX1dJVEhfQVhJU19C
bG93ZmlzaCAxCiNkZWZpbmUgX19XSVRIX0FYSVNfUGVyZlRlc3QwMSAxCiMgMTM3ICJheGlzL2Nv
bmZpZy5oIgojZGVmaW5lIF9MSU5VWCBfX0FYSVNfQ09ORklHX09TX1ZFUlMKI2RlZmluZSBfX0FY
SVNfQ09ORklHX09TIF9fQVhJU19PU19MSU5VWAoKCgojZGVmaW5lIF9SRUVOVFJBTlQgMQoKCgoK
I2RlZmluZSBfR05VX1NPVVJDRSAxCiMgMTYyICJheGlzL2NvbmZpZy5oIgojZGVmaW5lIF9fQVhJ
U19DT05GSUdfQVJDSCBfX0FYSVNfQVJDSF9QRU5USVVNCgoKI3VuZGVmIF9faTM4NgoKCgoKI2Rl
ZmluZSBfX2kzODYgX19BWElTX0NPTkZJR19BUkNICiNkZWZpbmUgSTM4NiBfX0FYSVNfQ09ORklH
X0FSQ0gKCgoKCgojZGVmaW5lIGNBeGlzV29yZExlbiAzMgojZGVmaW5lIGNBeGlzUmVnaXN0ZXJM
ZW4gMzIKI2RlZmluZSBjQXhpc1B0ckxlbiAzMgojZGVmaW5lIGNBeGlzTFNCaXRObyAwCiNkZWZp
bmUgY0F4aXNNU0JpdE5vIDMxCiNkZWZpbmUgY0F4aXNMU0JpdFZhbHVlICgweDAwMDAwMDAxVUwp
CiNkZWZpbmUgY0F4aXNNU0JpdFZhbHVlICgweDgwMDAwMDAwVUwpCiNkZWZpbmUgY0F4aXNGaXJz
dEJpdE5vIGNBeGlzTFNCaXRObwojZGVmaW5lIGNBeGlzTGFzdEJpdE5vIGNBeGlzTVNCaXRObwoj
ZGVmaW5lIGNBeGlzU2hvcnRCb3VuZGFyeSAweDEKI2RlZmluZSBjQXhpc0ludEJvdW5kYXJ5IDB4
MwojZGVmaW5lIGNBeGlzTG9uZ0JvdW5kYXJ5IDB4MwojZGVmaW5lIGNBeGlzTG9uZ0xvbmdCb3Vu
ZGFyeSAweDMKI2RlZmluZSBBeGlzRGVjbGFyZVN0YWNrUHRyIGFzbSgiJWVzcCIpCiNkZWZpbmUg
QXhpc0RlY2xhcmVGcmFtZVB0ciBhc20oIiVlYnAiKQoKCgoKI2RlZmluZSBBWElTX1NUQUNLX0RJ
UkVDVElPTiAoLTEpCiNkZWZpbmUgQVhJU19WQVJBUkdfRElSRUNUSU9OICgrMSkKCgoKCgojIDEg
ImF4aXMvY29uZmlnX2xvY2FsLmgiIDEKIyA5ICJheGlzL2NvbmZpZ19sb2NhbC5oIgojZGVmaW5l
IF9MQVJHRUZJTEVfU09VUkNFIDEKI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEKCgoKCiNk
ZWZpbmUgQVhJU19SVU5USU1FX0RFQlVHIDEKIyAyMDQgImF4aXMvY29uZmlnLmgiIDIKIyAyOSAi
YXhpcy9heGlzdHlwZXMuaCIgMgoKCiNkZWZpbmUgSW5saW5lIGV4dGVybiBpbmxpbmUKIyA3NiAi
YXhpcy9heGlzdHlwZXMuaCIKI2RlZmluZSBfX0JFR0lOX0RFQ0xTIAojZGVmaW5lIF9fRU5EX0RF
Q0xTIAojIDEyOSAiYXhpcy9heGlzdHlwZXMuaCIKI2RlZmluZSBfX0JFR0lOX0NQUERFQ0xTIAoj
ZGVmaW5lIF9fRU5EX0NQUERFQ0xTIAoKI2RlZmluZSBfX0JFR0lOX05TX0FYSVMgCiNkZWZpbmUg
X19FTkRfTlNfQVhJUyAKCgoKCgojZGVmaW5lIGNBeGlzTFNCOGJJbjE2YiAwCiNkZWZpbmUgY0F4
aXMxc3Q4YkluMTZiIDAKI2RlZmluZSBjQXhpczJuZDhiSW4xNmIgMQojZGVmaW5lIGNBeGlzTVNC
OGJJbjE2YiAxCgojZGVmaW5lIGNBeGlzTFNCMTZiSW4zMmIgMAojZGVmaW5lIGNBeGlzMXN0MTZi
SW4zMmIgMAojZGVmaW5lIGNBeGlzMm5kMTZiSW4zMmIgMQojZGVmaW5lIGNBeGlzTVNCMTZiSW4z
MmIgMQoKI2RlZmluZSBjQXhpc0xTQjhiSW4zMmIgMAojZGVmaW5lIGNBeGlzMXN0OGJJbjMyYiAw
CiNkZWZpbmUgY0F4aXMybmQ4YkluMzJiIDEKI2RlZmluZSBjQXhpczNyZDhiSW4zMmIgMgojZGVm
aW5lIGNBeGlzNHRoOGJJbjMyYiAzCiNkZWZpbmUgY0F4aXNNU0I4YkluMzJiIDMKCiNkZWZpbmUg
Y0F4aXNMU0IzMmJJbjY0YiAwCiNkZWZpbmUgY0F4aXMxc3QzMmJJbjY0YiAwCiNkZWZpbmUgY0F4
aXMybmQzMmJJbjY0YiAxCiNkZWZpbmUgY0F4aXNNU0IzMmJJbjY0YiAxCgojZGVmaW5lIGNBeGlz
TFNCMTZiSW42NGIgMAojZGVmaW5lIGNBeGlzMXN0MTZiSW42NGIgMAojZGVmaW5lIGNBeGlzMm5k
MTZiSW42NGIgMQojZGVmaW5lIGNBeGlzM3JkMTZiSW42NGIgMgojZGVmaW5lIGNBeGlzNHRoMTZi
SW42NGIgMwojZGVmaW5lIGNBeGlzTVNCMTZiSW42NGIgMwoKI2RlZmluZSBjQXhpc0xTQjhiSW42
NGIgMAojZGVmaW5lIGNBeGlzMXN0OGJJbjY0YiAwCiNkZWZpbmUgY0F4aXMybmQ4YkluNjRiIDEK
I2RlZmluZSBjQXhpczNyZDhiSW42NGIgMgojZGVmaW5lIGNBeGlzNHRoOGJJbjY0YiAzCiNkZWZp
bmUgY0F4aXM1dGg4YkluNjRiIDQKI2RlZmluZSBjQXhpczZ0aDhiSW42NGIgNQojZGVmaW5lIGNB
eGlzN3RoOGJJbjY0YiA2CiNkZWZpbmUgY0F4aXM4dGg4YkluNjRiIDcKI2RlZmluZSBjQXhpc01T
QjhiSW42NGIgNwojIDIyMCAiYXhpcy9heGlzdHlwZXMuaCIKI2RlZmluZSBjTmV0T3JkZXJMU0I4
YkluMTZiIDEKI2RlZmluZSBjTmV0T3JkZXIxc3Q4YkluMTZiIDEKI2RlZmluZSBjTmV0T3JkZXIy
bmQ4YkluMTZiIDAKI2RlZmluZSBjTmV0T3JkZXJNU0I4YkluMTZiIDAKCiNkZWZpbmUgY05ldE9y
ZGVyTFNCMTZiSW4zMmIgMQojZGVmaW5lIGNOZXRPcmRlcjFzdDE2YkluMzJiIDEKI2RlZmluZSBj
TmV0T3JkZXIybmQxNmJJbjMyYiAwCiNkZWZpbmUgY05ldE9yZGVyTVNCMTZiSW4zMmIgMAoKI2Rl
ZmluZSBjTmV0T3JkZXJMU0I4YkluMzJiIDMKI2RlZmluZSBjTmV0T3JkZXIxc3Q4YkluMzJiIDMK
I2RlZmluZSBjTmV0T3JkZXIybmQ4YkluMzJiIDIKI2RlZmluZSBjTmV0T3JkZXIzcmQ4YkluMzJi
IDEKI2RlZmluZSBjTmV0T3JkZXI0dGg4YkluMzJiIDAKI2RlZmluZSBjTmV0T3JkZXJNU0I4Yklu
MzJiIDAKCiNkZWZpbmUgY05ldE9yZGVyTFNCMzJiSW42NGIgMQojZGVmaW5lIGNOZXRPcmRlcjFz
dDMyYkluNjRiIDEKI2RlZmluZSBjTmV0T3JkZXIybmQzMmJJbjY0YiAwCiNkZWZpbmUgY05ldE9y
ZGVyTVNCMzJiSW42NGIgMAoKI2RlZmluZSBjTmV0T3JkZXJMU0IxNmJJbjY0YiAzCiNkZWZpbmUg
Y05ldE9yZGVyMXN0MTZiSW42NGIgMwojZGVmaW5lIGNOZXRPcmRlcjJuZDE2YkluNjRiIDIKI2Rl
ZmluZSBjTmV0T3JkZXIzcmQxNmJJbjY0YiAxCiNkZWZpbmUgY05ldE9yZGVyNHRoMTZiSW42NGIg
MAojZGVmaW5lIGNOZXRPcmRlck1TQjE2YkluNjRiIDAKCiNkZWZpbmUgY05ldE9yZGVyTFNCOGJJ
bjY0YiA3CiNkZWZpbmUgY05ldE9yZGVyMXN0OGJJbjY0YiA3CiNkZWZpbmUgY05ldE9yZGVyMm5k
OGJJbjY0YiA2CiNkZWZpbmUgY05ldE9yZGVyM3JkOGJJbjY0YiA1CiNkZWZpbmUgY05ldE9yZGVy
NHRoOGJJbjY0YiA0CiNkZWZpbmUgY05ldE9yZGVyNXRoOGJJbjY0YiAzCiNkZWZpbmUgY05ldE9y
ZGVyNnRoOGJJbjY0YiAyCiNkZWZpbmUgY05ldE9yZGVyN3RoOGJJbjY0YiAxCiNkZWZpbmUgY05l
dE9yZGVyOHRoOGJJbjY0YiAwCiNkZWZpbmUgY05ldE9yZGVyTVNCOGJJbjY0YiAwCgp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgdTg7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OwoKCgp0eXBlZGVm
IHVuc2lnbmVkIGludCB1MzI7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0OwoK
CnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKCgoKdHlw
ZWRlZiBzaWduZWQgaW50IHMzMjsKCgoKCgp0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgczY0OwoK
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBDaHI7CnR5cGVkZWYgc2lnbmVkIGxvbmcgTnVtOwp0eXBl
ZGVmIHNpZ25lZCBsb25nIExlbjsKdHlwZWRlZiBzaWduZWQgbG9uZyBTejsKCnVuaW9uIEFyZWFQ
dHI7Cgp0eXBlZGVmIHVuaW9uIEFyZWEzMiB7CiAgICB1MzIgdTMyVmFsOwogICAgdTE2IHUxNlZh
bDsKICAgIHU4IHU4VmFsOwogICAgdTE2IHUxNlZhbHNbc2l6ZW9mKHUzMikvMl07CiAgICB1OCB1
OFZhbHNbc2l6ZW9mKHUzMildOwogICAgdTMyIHVXaG9sZTsKICAgIHMzMiBzMzJWYWw7CiAgICBz
MTYgczE2VmFsOwogICAgczggczhWYWw7CiAgICBzMTYgczE2VmFsc1tzaXplb2YoczMyKS8yXTsK
ICAgIHM4IHM4VmFsc1tzaXplb2YoczMyKV07CiAgICBzMzIgc1dob2xlOwogICAgQ2hyIGNocjsK
ICAgIENociBjaHJzW3NpemVvZihzMzIpXTsKCiAgICB1MzIgdmFsOwogICAgczMyIHN2YWw7CiAg
ICB1MzIgcHRyVmFsOwogICAgdm9pZCogcHRyOwogICAgY29uc3Qgdm9pZCogcHRyQ25zdDsKICAg
IHVuaW9uIEFyZWFQdHIqIGFQdHI7CgoKCn0gQXJlYTMyIF9fYXR0cmlidXRlX18gKCh0cmFuc3Bh
cmVudF91bmlvbikpOwoKdHlwZWRlZiB1bmlvbiBBcmVhNjQgewogICAgdTY0IHU2NFZhbDsKICAg
IHUzMiB1MzJWYWw7CiAgICB1MTYgdTE2VmFsOwogICAgdTggdThWYWw7CiAgICB1MzIgdTMyVmFs
c1tzaXplb2YodTY0KS80XTsKICAgIHUxNiB1MTZWYWxzW3NpemVvZih1NjQpLzJdOwogICAgdTgg
dThWYWxzW3NpemVvZih1NjQpXTsKICAgIHU2NCB1V2hvbGU7CiAgICBzNjQgczY0VmFsOwogICAg
czMyIHMzMlZhbDsKICAgIHMxNiBzMTZWYWw7CiAgICBzOCBzOFZhbDsKICAgIHMzMiBzMzJWYWxz
W3NpemVvZihzNjQpLzRdOwogICAgczE2IHMxNlZhbHNbc2l6ZW9mKHM2NCkvMl07CiAgICBzOCBz
OFZhbHNbc2l6ZW9mKHM2NCldOwogICAgczY0IHNXaG9sZTsKICAgIENociBjaHI7CiAgICBDaHIg
Y2hyc1tzaXplb2YoczY0KV07CiAgICBkb3VibGUgZGJsOwoKICAgIHUzMiB2YWw7CiAgICB1MzIg
cHRyVmFsOwogICAgczMyIHN2YWw7CiAgICB1bmlvbiBBcmVhUHRyKiBhUHRyOwogICAgdW5pb24g
QXJlYVB0ciogYVB0cnNbMl07CgoKCgoKCgogICAgdm9pZCogcHRyOwogICAgY29uc3Qgdm9pZCog
cHRyQ25zdDsKfSBBcmVhNjQgX19hdHRyaWJ1dGVfXyAoKHRyYW5zcGFyZW50X3VuaW9uKSk7CgoK
dHlwZWRlZiB1MzIgV29yZDsKCgoKCnR5cGVkZWYgQXJlYTMyIEFyZWE7CgoKCgp0eXBlZGVmIHVu
aW9uIEFyZWExMjggewogICAgdTY0IHU2NFZhbHNbMl07CiAgICB1MzIgdTMyVmFsc1s0XTsKICAg
IHUxNiB1MTZWYWxzWzhdOwogICAgdTggdThWYWxzWzE2XTsKICAgIHM2NCBzNjRWYWxzWzJdOwog
ICAgczMyIHMzMlZhbHNbNF07CiAgICBzMTYgczE2VmFsc1s4XTsKICAgIHM4IHM4VmFsc1sxNl07
CiAgICBDaHIgY2hyc1sxNl07CgogICAgdm9pZCogcHRyc1s0XTsKICAgIHVuaW9uIEFyZWFQdHIq
IGFQdHJzWzRdOwoKCgoKfSBBcmVhMTI4IF9fYXR0cmlidXRlX18gKCh0cmFuc3BhcmVudF91bmlv
bikpOwoKdHlwZWRlZiB1bmlvbiBBcmVhMjU2IHsKICAgIHU2NCB1NjRWYWxzWzRdOwogICAgdTMy
IHUzMlZhbHNbOF07CiAgICB1MTYgdTE2VmFsc1sxNl07CiAgICB1OCB1OFZhbHNbMzJdOwogICAg
czY0IHM2NFZhbHNbNF07CiAgICBzMzIgczMyVmFsc1s4XTsKICAgIHMxNiBzMTZWYWxzWzE2XTsK
ICAgIHM4IHM4VmFsc1szMl07CiAgICBDaHIgY2hyc1szMl07CgogICAgdm9pZCogcHRyc1s4XTsK
ICAgIHVuaW9uIEFyZWFQdHIqIGFQdHJzWzhdOwoKCgoKfSBBcmVhMjU2IF9fYXR0cmlidXRlX18g
KCh0cmFuc3BhcmVudF91bmlvbikpOwoKdHlwZWRlZiB1bmlvbiBBcmVhUHRyewogICAgdTgqIHU4
cDsKICAgIHUxNiogdTE2cDsKICAgIHUzMiogdTMycDsKICAgIHU2NCogdTY0cDsKICAgIHM4KiBz
OHA7CiAgICBzMTYqIHMxNnA7CiAgICBzMzIqIHMzMnA7CiAgICBzNjQqIHM2NHA7CiAgICBDaHIq
IGNocnA7CiAgICB2b2lkKiBwdHI7CiAgICBjb25zdCB2b2lkKiBwdHJDbnN0OwogICAgdm9pZCoq
IHB0clZlYzsKICAgIGNvbnN0IHZvaWQqKnB0ckNuc3RWZWM7CiAgICBBcmVhKiBhcDsKICAgIEFy
ZWEzMiogYTMycDsKICAgIEFyZWE2NCogYTY0cDsKICAgIEFyZWExMjgqIGExMjhwOwogICAgQXJl
YTI1NiogYTI1NnA7CiAgICBjaGFyKiBjaGFycDsKCiAgICBzMzIgc3ZhbDsKICAgIHUzMiB1dmFs
OwogICAgczMyKiBzdmFscDsKICAgIHUzMiogdXZhbHA7CiMgNDQ2ICJheGlzL2F4aXN0eXBlcy5o
Igp9IEFyZWFQdHI7CgoKI2RlZmluZSBvZmZzZXRvZih0eXBlLGZsZCkgKChXb3JkKSgmKCgodHlw
ZSAqKTApLT5mbGQpKSkKCgoKI2RlZmluZSBlbGVtZW50b2YoYXJyYXkpIChzaXplb2YoYXJyYXkp
L3NpemVvZigoYXJyYXkpWzBdKSkKCgoKI2RlZmluZSBtZW1zaXplb2YodHlwZSxtZW1iZXIpIChz
aXplb2YoKCh0eXBlKikwKS0+bWVtYmVyKSkKCgoKCgoKdHlwZWRlZiBzMzIgQm9vbDsKCiNkZWZp
bmUgVHJ1ZSAxCgoKI2RlZmluZSBGYWxzZSAwCiMgNDgwICJheGlzL2F4aXN0eXBlcy5oIgojZGVm
aW5lIERvIGRvCiNkZWZpbmUgRG9uZSB3aGlsZSgwKQoKI2RlZmluZSBSb3VuZFVwMTZCaXQoeCkg
KCgoKFdvcmQpKHgpKSArIDEpICYgfjEpCiNkZWZpbmUgUm91bmREb3duMTZCaXQoeCkgKCgoV29y
ZCkoeCkpICYgfjEpCiNkZWZpbmUgUm91bmRVcDMyQml0KHgpICgoKChXb3JkKSh4KSkgKyAzKSAm
IH4zKQojZGVmaW5lIFJvdW5kRG93bjMyQml0KHgpICgoKFdvcmQpKHgpKSAmIH4zKQojZGVmaW5l
IFJvdW5kVXA2NEJpdCh4KSAoKCgoV29yZCkoeCkpICsgNykgJiB+NykKI2RlZmluZSBSb3VuZERv
d242NEJpdCh4KSAoKChXb3JkKSh4KSkgJiB+NykKI2RlZmluZSBSb3VuZFVwMTI4Qml0KHgpICgo
KChXb3JkKSh4KSkgKyAxNSkgJiB+MTUpCiNkZWZpbmUgUm91bmREb3duMTI4Qml0KHgpICgoKFdv
cmQpKHgpKSAmIH4xNSkKI2RlZmluZSBSb3VuZFVwMjU2Qml0KHgpICgoKChXb3JkKSh4KSkgKyAz
MSkgJiB+MzEpCiNkZWZpbmUgUm91bmREb3duMjU2Qml0KHgpICgoKFdvcmQpKHgpKSAmIH4zMSkK
CgojZGVmaW5lIFJvdW5kVXBXb3JkU3ooeCkgUm91bmRVcDMyQml0KHgpCiNkZWZpbmUgUm91bmRE
b3duV29yZFN6KHgpIFJvdW5kRG93bjMyQml0KHgpCgoKCgojZGVmaW5lIFJvdW5kVXBMb25nRG91
YmxlU3ooeCkgUm91bmRVcDEyOEJpdCh4KQojZGVmaW5lIFJvdW5kRG93bkxvbmdEb3VibGVTeih4
KSBSb3VuZERvd24xMjhCaXQoeCkKCmV4dGVybiBpbmxpbmUgQm9vbApJc1Nob3J0Qm91bmRhcnko
dm9pZCogeCkKewogICAgQXJlYVB0ciB5OwogICAgeS5wdHIgPSB4OwogICAgcmV0dXJuICh5LnV2
YWwgJiAweDEpID09IDA7Cn0KCmV4dGVybiBpbmxpbmUgQm9vbApJc0ludEJvdW5kYXJ5KHZvaWQq
IHgpCnsKICAgIEFyZWFQdHIgeTsKICAgIHkucHRyID0geDsKICAgIHJldHVybiAoeS51dmFsICYg
MHgzKSA9PSAwOwp9CgpleHRlcm4gaW5saW5lIEJvb2wKSXNMb25nQm91bmRhcnkodm9pZCogeCkK
ewogICAgQXJlYVB0ciB5OwogICAgeS5wdHIgPSB4OwogICAgcmV0dXJuICh5LnV2YWwgJiAweDMp
ID09IDA7Cn0KCmV4dGVybiBpbmxpbmUgQm9vbApJc0xvbmdMb25nQm91bmRhcnkodm9pZCogeCkK
ewogICAgQXJlYVB0ciB5OwogICAgeS5wdHIgPSB4OwogICAgcmV0dXJuICh5LnV2YWwgJiAweDMp
ID09IDA7Cn0KCmV4dGVybiBpbmxpbmUgczY0ClNpZ25SZXZlcnNlNjQoczY0IHgpCnsKICAgIHU2
NCB2ID0gKHU2NCl4OwoKICAgIHJldHVybiB+diArIDE7Cn0KCgoKI2RlZmluZSBBeGlzTGliUmVm
KE5hbWUpIGFzbSgiX18iICNOYW1lKQojZGVmaW5lIEF4aXNMaWJEZWYoTmFtZSkgYXNtKCIud2Vh
ayAiICNOYW1lICJcblx0IiAjTmFtZSAiID0gX18iICNOYW1lKQojIDU2MiAiYXhpcy9heGlzdHlw
ZXMuaCIKZXh0ZXJuIGlubGluZSB1NjQKTG9hZFVBNjQoY29uc3QgdTgqIHApCnsKICAgIHU2NCB4
ID0gcFs3XTsKICAgIHggPDw9IDg7CiAgICB4IHw9IHBbNl07CiAgICB4IDw8PSA4OwogICAgeCB8
PSBwWzVdOwogICAgeCA8PD0gODsKICAgIHggfD0gcFs0XTsKICAgIHggPDw9IDg7CiAgICB4IHw9
IHBbM107CiAgICB4IDw8PSA4OwogICAgeCB8PSBwWzJdOwogICAgeCA8PD0gODsKICAgIHggfD0g
cFsxXTsKICAgIHggPDw9IDg7CiAgICB4IHw9IHBbMF07CiAgICByZXR1cm4geDsKfQoKZXh0ZXJu
IGlubGluZSB1MzIKTG9hZFVBMzIoY29uc3QgdTgqIHApCnsKICAgIHUzMiB4ID0gcFszXTsKICAg
IHggPDw9IDg7CiAgICB4IHw9IHBbMl07CiAgICB4IDw8PSA4OwogICAgeCB8PSBwWzFdOwogICAg
eCA8PD0gODsKICAgIHggfD0gcFswXTsKICAgIHJldHVybiB4Owp9CgpleHRlcm4gaW5saW5lIHUx
NgpMb2FkVUExNihjb25zdCB1OCogcCkKewogICAgdTE2IHggPSBwWzFdOwogICAgeCA8PD0gODsK
ICAgIHggfD0gcFswXTsKICAgIHJldHVybiB4Owp9CgpleHRlcm4gaW5saW5lIHZvaWQKU3RvcmVV
QTY0KHU4KiBwLCB1NjQgeCkKewogICAgcFswXSA9IHg7CiAgICB4ID4+PSA4OwogICAgcFsxXSA9
IHg7CiAgICB4ID4+PSA4OwogICAgcFsyXSA9IHg7CiAgICB4ID4+PSA4OwogICAgcFszXSA9IHg7
CiAgICB4ID4+PSA4OwogICAgcFs0XSA9IHg7CiAgICB4ID4+PSA4OwogICAgcFs1XSA9IHg7CiAg
ICB4ID4+PSA4OwogICAgcFs2XSA9IHg7CiAgICB4ID4+PSA4OwogICAgcFs3XSA9IHg7CiAgICBy
ZXR1cm47Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTdG9yZVVBMzIodTgqIHAsIHUzMiB4KQp7CiAg
ICBwWzBdID0geDsKICAgIHggPj49IDg7CiAgICBwWzFdID0geDsKICAgIHggPj49IDg7CiAgICBw
WzJdID0geDsKICAgIHggPj49IDg7CiAgICBwWzNdID0geDsKICAgIHJldHVybjsKfQoKZXh0ZXJu
IGlubGluZSB2b2lkClN0b3JlVUExNih1OCogcCwgdTE2IHgpCnsKICAgIHBbMF0gPSB4OwogICAg
eCA+Pj0gODsKICAgIHBbMV0gPSB4OwogICAgcmV0dXJuOwp9CgoKIyA2NjUgImF4aXMvYXhpc3R5
cGVzLmgiCiNkZWZpbmUgTXV0ZXhMb2NrKGwpIHB0aHJlYWRfbXV0ZXhfbG9jayhsKQojZGVmaW5l
IE11dGV4VW5sb2NrKGwpIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKGwpCiNkZWZpbmUgTXV0ZXhEZXN0
cm95KGwpIHB0aHJlYWRfbXV0ZXhfZGVzdHJveShsKQojZGVmaW5lIENvbmRXYWl0KGMsbCkgcHRo
cmVhZF9jb25kX3dhaXQoYywgbCkKI2RlZmluZSBDb25kVGltZWRXYWl0KGMsbCx0KSBwdGhyZWFk
X2NvbmRfdGltZWR3YWl0KGMsIGwsIHQpCiNkZWZpbmUgQ29uZFNpZ25hbChjKSBwdGhyZWFkX2Nv
bmRfc2lnbmFsKGMpCiNkZWZpbmUgQ29uZEJyb2FkY2FzdChjKSBwdGhyZWFkX2NvbmRfYnJvYWRj
YXN0KGMpCiNkZWZpbmUgQ29uZERlc3Ryb3koYykgcHRocmVhZF9jb25kX2Rlc3Ryb3koYykKI2Rl
ZmluZSBUaHJlYWRJZFR5cGUgcHRocmVhZF90CiMgNjg4ICJheGlzL2F4aXN0eXBlcy5oIgojZGVm
aW5lIEF4aXNWYXJBcmdQcmVGd2QoYSx4KSAKI2RlZmluZSBBeGlzVmFyQXJnUG9zdEZ3ZChhLHgp
ICgoYSkgKz0gKHgpKQojIDIzICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIiAyCiMgMSAi
YXhpcy9heGlzLmgiIDEKIyAyNyAiYXhpcy9heGlzLmgiCiNkZWZpbmUgX0FYSVNfQVhJU19IXyAK
CgoKCgoKCiMgMSAiYXhpcy9heGlzZGJnLmgiIDEKIyAyNyAiYXhpcy9heGlzZGJnLmgiCiNkZWZp
bmUgX0FYSVNfQVhJU0RCR19IXyAKIyA2MCAiYXhpcy9heGlzZGJnLmgiCiNkZWZpbmUgQVhJU19E
RUJVR19WQUxJRCAxCiMgMTA4ICJheGlzL2F4aXNkYmcuaCIKI2RlZmluZSBOREJHKC4uLikgCiNk
ZWZpbmUgTkRCKC4uLikgCiNkZWZpbmUgTkRiZyguLi4pIAojZGVmaW5lIE5iZyguLi4pIAojZGVm
aW5lIE5YRGJnKC4uLikgCgoKI2RlZmluZSBORGJnVjEobGV2ZSxmb3JtMSx2YXIxKSAKI2RlZmlu
ZSBORGJnVjIobGV2ZSxmb3JtMSx2YXIxLGZvcm0yLHZhcjIpIAojZGVmaW5lIE5EYmdWMyhsZXZl
LGZvcm0xLHZhcjEsZm9ybTIsdmFyMixmb3JtMyx2YXIzKSAKI2RlZmluZSBORGJnVjQobGV2ZSxm
b3JtMSx2YXIxLGZvcm0yLHZhcjIsZm9ybTMsdmFyMyxmb3JtNCx2YXI0KSAKCiNkZWZpbmUgTkRi
Z1ZhcjEoZm9ybTEsdmFyMSkgCiNkZWZpbmUgTkRiZ1ZhcjIoZm9ybTEsdmFyMSxmb3JtMix2YXIy
KSAKI2RlZmluZSBORGJnVmFyMyhmb3JtMSx2YXIxLGZvcm0yLHZhcjIsZm9ybTMsdmFyMykgCiNk
ZWZpbmUgTkRiZ1ZhcjQoZm9ybTEsdmFyMSxmb3JtMix2YXIyLGZvcm0zLHZhcjMsZm9ybTQsdmFy
NCkgCgojZGVmaW5lIE5YRGJnVmFyMShmb3JtMSx2YXIxKSAKI2RlZmluZSBOWERiZ1ZhcjIoZm9y
bTEsdmFyMSxmb3JtMix2YXIyKSAKI2RlZmluZSBOWERiZ1ZhcjMoZm9ybTEsdmFyMSxmb3JtMix2
YXIyLGZvcm0zLHZhcjMpIAojZGVmaW5lIE5YRGJnVmFyNChmb3JtMSx2YXIxLGZvcm0yLHZhcjIs
Zm9ybTMsdmFyMyxmb3JtNCx2YXI0KSAKCgoKCiNkZWZpbmUgTkRiZ0xvZyguLi4pIAoKCiNkZWZp
bmUgTkRiZ0xvZ1ZhcjEoZm9ybTEsdmFyMSkgCiNkZWZpbmUgTkRiZ0xvZ1ZhcjIoZm9ybTEsdmFy
MSxmb3JtMix2YXIyKSAKI2RlZmluZSBORGJnTG9nVmFyMyhmb3JtMSx2YXIxLGZvcm0yLHZhcjIs
Zm9ybTMsdmFyMykgCiNkZWZpbmUgTkRiZ0xvZ1ZhcjQoZm9ybTEsdmFyMSxmb3JtMix2YXIyLGZv
cm0zLHZhcjMsZm9ybTQsdmFyNCkgCgoKCgoKCiNkZWZpbmUgQXhpc0RlYnVnTGV2ZWxWYWxpZChl
LGwpICgoKigoZSktPm1hc2tQdHIpKSAmICgxVSA8PCAobCkpKQojIDE1NyAiYXhpcy9heGlzZGJn
LmgiCiNkZWZpbmUgRGJnKGxldmVsLC4uLikgZG97aWYoQXhpc0RlYnVnTGV2ZWxWYWxpZCgmKERl
YnVnT2JqKSwgbGV2ZWwpKSBBeGlzRGVidWdPdXRwdXQoKERlYnVnT2JqKS5kZWJ1Z0lkLCBsZXZl
bCwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sIF9fVkFfQVJHU19fKTsgfXdoaWxl
KDApCgoKCiNkZWZpbmUgRGJnWChkYmdwLGxldmVsLC4uLikgZG97aWYoQXhpc0RlYnVnTGV2ZWxW
YWxpZChkYmdwLCBsZXZlbCkpIEF4aXNEZWJ1Z091dHB1dCgoRGVidWdPYmopLmRlYnVnSWQsIGxl
dmVsLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgX19WQV9BUkdTX18pOyB9d2hp
bGUoMCkKIyAxODIgImF4aXMvYXhpc2RiZy5oIgojZGVmaW5lIERiZ1YxKGxldmVsLGZvcm0xLHZh
cjEpIERiZyhsZXZlbCwgI3ZhcjEgIj0iIGZvcm0xICJcbiIsIHZhcjEpCgojZGVmaW5lIERiZ1Yy
KGxldmVsLGZvcm0xLHZhcjEsZm9ybTIsdmFyMikgRGJnKGxldmVsLCAjdmFyMSAiPSIgZm9ybTEg
IiwgIiAjdmFyMiAiPSIgZm9ybTIgIlxuIiwgdmFyMSwgdmFyMikKCiNkZWZpbmUgRGJnVjMobGV2
ZWwsZm9ybTEsdmFyMSxmb3JtMix2YXIyLGZvcm0zLHZhcjMpIERiZyhsZXZlbCwgI3ZhcjEgIj0i
IGZvcm0xICIsICIgI3ZhcjIgIj0iIGZvcm0yICIsICIgI3ZhcjMgIj0iIGZvcm0zICJcbiIsIHZh
cjEsIHZhcjIsIHZhcjMpCgoKI2RlZmluZSBEYmdWNChsZXZlbCxmb3JtMSx2YXIxLGZvcm0yLHZh
cjIsZm9ybTMsdmFyMyxmb3JtNCx2YXI0KSBEYmcobGV2ZWwsICN2YXIxICI9IiBmb3JtMSAiLCAi
ICN2YXIyICI9IiBmb3JtMiAiLCAiICN2YXIzICI9IiBmb3JtMyAiLCAiICN2YXI0ICI9IiBmb3Jt
NCAiXG4iLCB2YXIxLCB2YXIyLCB2YXIzLCB2YXI0KQojIDIwMSAiYXhpcy9heGlzZGJnLmgiCiNk
ZWZpbmUgRGJnVHIoLi4uKSBEYmcoVHJhY2VfLCBfX1ZBX0FSR1NfXykKI2RlZmluZSBEYmdWYXIo
Li4uKSBEYmcoVHJhY2VWXywgX19WQV9BUkdTX18pCgoKI2RlZmluZSBEYmdWYXIxKGZvcm0xLHZh
cjEpIERiZ1ZhcigjdmFyMSAiPSIgZm9ybTEgIlxuIiwgdmFyMSkKCiNkZWZpbmUgRGJnVmFyMihm
b3JtMSx2YXIxLGZvcm0yLHZhcjIpIERiZ1ZhcigjdmFyMSAiPSIgZm9ybTEgIiwgIiAjdmFyMiAi
PSIgZm9ybTIgIlxuIiwgdmFyMSwgdmFyMikKCiNkZWZpbmUgRGJnVmFyMyhmb3JtMSx2YXIxLGZv
cm0yLHZhcjIsZm9ybTMsdmFyMykgRGJnVmFyKCN2YXIxICI9IiBmb3JtMSAiLCAiICN2YXIyICI9
IiBmb3JtMiAiLCAiICN2YXIzICI9IiBmb3JtMyAiXG4iLCB2YXIxLCB2YXIyLCB2YXIzKQoKCiNk
ZWZpbmUgRGJnVmFyNChmb3JtMSx2YXIxLGZvcm0yLHZhcjIsZm9ybTMsdmFyMyxmb3JtNCx2YXI0
KSBEYmdWYXIoI3ZhcjEgIj0iIGZvcm0xICIsICIgI3ZhcjIgIj0iIGZvcm0yICIsICIgI3ZhcjMg
Ij0iIGZvcm0zICIsICIgI3ZhcjQgIj0iIGZvcm00ICJcbiIsIHZhcjEsIHZhcjIsIHZhcjMsIHZh
cjQpCiMgMjQ3ICJheGlzL2F4aXNkYmcuaCIKI2RlZmluZSBYRGJnKC4uLikgCgojZGVmaW5lIFhE
YmdWYXIxKGYxLHYxKSAKI2RlZmluZSBYRGJnVmFyMihmMSx2MSxmMix2MikgCiNkZWZpbmUgWERi
Z1ZhcjMoZjEsdjEsZjIsdjIsZjMsdjMpIAojZGVmaW5lIFhEYmdWYXI0KGYxLHYxLGYyLHYyLGYz
LHYzLGY0LHY0KSAKCgoKCgoKI2RlZmluZSBEYmdQcmZ4ICIlczolZDolczwlczoldT46ICUkIiwg
Z0NtZE5hbWUsIGdNeVBpZCwgX19GVU5DVElPTl9fLCBBeGlzRGVidWdGaWxlTmFtZShfX0ZJTEVf
XyksIF9fTElORV9fCgoKCgojZGVmaW5lIERiZ0xvZyhmbXQsLi4uKSBMb2dQdXQoY0xvZ0RiZywg
RGJnUHJmeCwgZm10LCBfX1ZBX0FSR1NfXykKCgoKI2RlZmluZSBEYmdMb2dWYXIxKGZvcm0xLHZh
cjEpIERiZ0xvZygjdmFyMSAiPSIgZm9ybTEgIlxuIiwgdmFyMSkKCiNkZWZpbmUgRGJnTG9nVmFy
Mihmb3JtMSx2YXIxLGZvcm0yLHZhcjIpIERiZ0xvZygjdmFyMSAiPSIgZm9ybTEgIiwgIiAjdmFy
MiAiPSIgZm9ybTIgIlxuIiwgdmFyMSwgdmFyMikKCiNkZWZpbmUgRGJnTG9nVmFyMyhmb3JtMSx2
YXIxLGZvcm0yLHZhcjIsZm9ybTMsdmFyMykgRGJnTG9nKCN2YXIxICI9IiBmb3JtMSAiLCAiICN2
YXIyICI9IiBmb3JtMiAiLCAiICN2YXIzICI9IiBmb3JtMyAiXG4iLCB2YXIxLCB2YXIyLCB2YXIz
KQoKCiNkZWZpbmUgRGJnTG9nVmFyNChmb3JtMSx2YXIxLGZvcm0yLHZhcjIsZm9ybTMsdmFyMyxm
b3JtNCx2YXI0KSBEYmdMb2coI3ZhcjEgIj0iIGZvcm0xICIsICIgI3ZhcjIgIj0iIGZvcm0yICIs
ICIgI3ZhcjMgIj0iIGZvcm0zICJcbiIgI3ZhcjQgIj0iIGZvcm00ICJcbiIsIHZhcjEsIHZhcjIs
IHZhcjMsIHZhcjQpCiMgMzQ5ICJheGlzL2F4aXNkYmcuaCIKI2RlZmluZSBEYmdNYXNrKGxldmVs
KSAoMVUgPDwgKGxldmVsKSkKCgoKCiNkZWZpbmUgRmF0YWxfIDAKI2RlZmluZSBXYXJuXyAxCiNk
ZWZpbmUgQWxhcm1fIDIKI2RlZmluZSBJbmZvXyAzCiNkZWZpbmUgVHJhY2VfIDQKI2RlZmluZSBU
cmFjZVNfIDUKI2RlZmluZSBUcmFjZURfIDYKI2RlZmluZSBUcmFjZVhfIDcKI2RlZmluZSBUcmFj
ZUFfIDgKI2RlZmluZSBUcmFjZUJfIDkKI2RlZmluZSBUcmFjZUNfIDEwCiNkZWZpbmUgVHJhY2VW
XyAxMQojZGVmaW5lIFRyYWNlQXhpc18gMTIKI2RlZmluZSBUcmFjZUF4aXNTXyAxMwojZGVmaW5l
IFRyYWNlQXhpc0RfIDE0CiNkZWZpbmUgVHJhY2VBeGlzWF8gMTUKCgoKCgojZGVmaW5lIERiZ0x2
bEFwbDAgMTYKI2RlZmluZSBEYmdMdmxBcGwxIDE3CiNkZWZpbmUgRGJnTHZsQXBsMiAxOAojZGVm
aW5lIERiZ0x2bEFwbDMgMTkKI2RlZmluZSBEYmdMdmxBcGw0IDIwCiNkZWZpbmUgRGJnTHZsQXBs
NSAyMQojZGVmaW5lIERiZ0x2bEFwbDYgMjIKI2RlZmluZSBEYmdMdmxBcGw3IDIzCiNkZWZpbmUg
RGJnTHZsQXBsOCAyNAojZGVmaW5lIERiZ0x2bEFwbDkgMjUKI2RlZmluZSBEYmdMdmxBcGwxMCAy
NgojZGVmaW5lIERiZ0x2bEFwbDExIDI3CiNkZWZpbmUgRGJnTHZsQXBsMTIgMjgKI2RlZmluZSBE
YmdMdmxBcGwxMyAyOQojZGVmaW5lIERiZ0x2bEFwbDE0IDMwCiNkZWZpbmUgRGJnTHZsQXBsMTUg
MzEKCgoKCgoKI2RlZmluZSBjQ29tcG9BcGwwICJBUFBMLTAiCiNkZWZpbmUgY0NvbXBvQXBsMSAi
QVBQTC0xIgojZGVmaW5lIGNDb21wb0FwbDIgIkFQUEwtMiIKI2RlZmluZSBjQ29tcG9BcGwzICJB
UFBMLTMiCiNkZWZpbmUgY0NvbXBvQXBsNCAiQVBQTC00IgojZGVmaW5lIGNDb21wb0FwbDUgIkFQ
UEwtNSIKI2RlZmluZSBjQ29tcG9BcGw2ICJBUFBMLTYiCiNkZWZpbmUgY0NvbXBvQXBsNyAiQVBQ
TC03IgojZGVmaW5lIGNDb21wb0FwbDggIkFQUEwtOCIKI2RlZmluZSBjQ29tcG9BcGw5ICJBUFBM
LTkiCiNkZWZpbmUgY0NvbXBvQXBsMTAgIkFQUEwtMTAiCiNkZWZpbmUgY0NvbXBvQXBsMTEgIkFQ
UEwtMTEiCiNkZWZpbmUgY0NvbXBvQXBsMTIgIkFQUEwtMTIiCiNkZWZpbmUgY0NvbXBvQXBsMTMg
IkFQUEwtMTMiCiNkZWZpbmUgY0NvbXBvQXBsMTQgIkFQUEwtMTQiCiNkZWZpbmUgY0NvbXBvQXBs
MTUgIkFQUEwtMTUiCgojZGVmaW5lIGNDb21wb0h0aWYgImF4aXMuaHRpZiIKI2RlZmluZSBjQ29t
cG9TZGJtICJheGlzLnNkYm0iCiNkZWZpbmUgY0NvbXBvQWRhbSAiYXhpcy5hZGFtIgojZGVmaW5l
IGNDb21wb1NkYm1WMCAiYXhpcy5zZGJtIgojZGVmaW5lIGNDb21wb1NkYm1WMSAiYXhpcy5zZGJt
IgojZGVmaW5lIGNDb21wb1NkYm1WMiAiYXhpcy5zZGJtIgojZGVmaW5lIGNDb21wb1NkYm1WMyAi
YXhpcy5zZGJtIgojZGVmaW5lIGNDb21wb1NkYm1WNCAiYXhpcy5zZGJtIgojZGVmaW5lIGNDb21w
b1NkYm1WNSAiYXhpcy5zZGJtIgojZGVmaW5lIGNDb21wb0FkYW1WMCAiYXhpcy5hZGFtIgojZGVm
aW5lIGNDb21wb0FkYW1WMSAiYXhpcy5hZGFtIgojZGVmaW5lIGNDb21wb0FkYW1WMiAiYXhpcy5h
ZGFtIgojZGVmaW5lIGNDb21wb0FkYW1WMyAiYXhpcy5hZGFtIgojZGVmaW5lIGNDb21wb0FkYW1W
NCAiYXhpcy5hZGFtIgojZGVmaW5lIGNDb21wb0FkYW1WNSAiYXhpcy5hZGFtIgojZGVmaW5lIGND
b21wb0F0aW1lICJheGlzLmF0aW1lIgojZGVmaW5lIGNDb21wb0NvbW1vbiAiYXhpcy5jb21tb24i
CiNkZWZpbmUgY0NvbXBvVXRpbCAiYXhpcy51dGlsIgojZGVmaW5lIGNDb21wb1Nlc3MgImF4aXMu
c2VzcyIKI2RlZmluZSBjQ29tcG9BbGwgImFsbCIKIyA0NDUgImF4aXMvYXhpc2RiZy5oIgojZGVm
aW5lIGNBeGlzRGVidWdNb2RlSW5pdGlhbEFyZWFDaGVja01hc2sgMHgwMDAwMDAwMQojZGVmaW5l
IGNBeGlzRGVidWdNb2RlRXhwbGljaXRJbml0aWFsQXJlYSAweDAwMDAwMDAxCiNkZWZpbmUgY0F4
aXNEZWJ1Z01vZGVJbXBsaWNpdEluaXRpYWxBcmVhIDB4MDAwMDAwMDAKCiNkZWZpbmUgY0F4aXNE
ZWJ1Z091dHB1dENoZWNrTWFzayAweDAwMDAwMDAyCiNkZWZpbmUgY0F4aXNEZWJ1Z091dHB1dEV4
cGxpY2l0IDB4MDAwMDAwMDIKI2RlZmluZSBjQXhpc0RlYnVnT3V0cHV0SW1wbGljaXQgMHgwMDAw
MDAwMAoKI2RlZmluZSBjQXhpc0RlYnVnU3RhcnRDaGVja01hc2sgMHgwMDAwMDAwNAojZGVmaW5l
IGNBeGlzRGVidWdTdGFydEV4cGxpY2l0IDB4MDAwMDAwMDQKI2RlZmluZSBjQXhpc0RlYnVnU3Rh
cnRJbXBsaWNpdCAweDAwMDAwMDAwCgoKI2RlZmluZSBjQXhpc0RlYnVnU3RhcnRGYWlsQ2hlY2tN
YXNrIDB4MDA4MDAwMDAKI2RlZmluZSBjQXhpc0RlYnVnU3RhcnRGYWlsQWJvcnQgMHgwMDgwMDAw
MAojZGVmaW5lIGNBeGlzRGVidWdTdGFydEZhaWxJZ25vcmUgMHgwMDAwMDAwMAoKCiNkZWZpbmUg
Y0F4aXNEZWJ1Z0Zvck10YWJBcHBsIDB4NDAwMDAwMDAKCgojZGVmaW5lIGNBeGlzRGVidWdEZWZh
dWx0TW9kZVNldCAoY0F4aXNEZWJ1Z01vZGVJbXBsaWNpdEluaXRpYWxBcmVhfCBjQXhpc0RlYnVn
T3V0cHV0SW1wbGljaXR8IGNBeGlzRGVidWdTdGFydEZhaWxJZ25vcmV8IGNBeGlzRGVidWdTdGFy
dEltcGxpY2l0KQoKCgoKZXh0ZXJuIHVuc2lnbmVkIGdBeGlzRGVidWdEZWZhdWx0TWFzazsKZXh0
ZXJuIHVuc2lnbmVkIGdBeGlzRGVidWdEZWZhdWx0TW9kZTsKZXh0ZXJuIHVuc2lnbmVkIGdBeGlz
RGVidWdNdGFiRGVmYXVsdE1vZGU7CiMgNDg3ICJheGlzL2F4aXNkYmcuaCIKIyAxICJheGlzL2Nx
dWV1ZXAuaCIgMQojIDI3ICJheGlzL2NxdWV1ZXAuaCIKI2RlZmluZSBfQVhJU19DUVVFVUVQX0hf
IAoKCgp0eXBlZGVmIHN0cnVjdCBDcXVldWVQdHJMaW5rIHsKICAgIHZvaWQqIGJrd2Q7CiAgICB2
b2lkKiBmcndkOwp9IENxdWV1ZVB0ckxpbms7CiMgOTUgImF4aXMvY3F1ZXVlcC5oIgpleHRlcm4g
aW5saW5lIHZvaWQqCkNxdWV1ZVB0clRvcEFkZHIoQ3F1ZXVlUHRyTGluayogdGd0TGlua1AsIHUz
MiBsaW5rT2Zmc2V0KQp7CiAgICBBcmVhIHg7CgogICAgeC5wdHIgPSB0Z3RMaW5rUDsKICAgIHgu
dmFsIC09IGxpbmtPZmZzZXQ7CiAgICByZXR1cm4geC5wdHI7Cn0KCmV4dGVybiBpbmxpbmUgQ3F1
ZXVlUHRyTGluayoKQ3F1ZXVlUHRyTGlua0FkZHIodm9pZCogdGd0LCB1MzIgbGlua09mZnNldCkK
ewogICAgQXJlYSB4OwoKICAgIHgucHRyID0gdGd0OwogICAgeC52YWwgKz0gbGlua09mZnNldDsK
ICAgIHJldHVybiAoQ3F1ZXVlUHRyTGluayopKHgucHRyKTsKfQoKZXh0ZXJuIGlubGluZSB2b2lk
CkNxdWV1ZVB0ckluaXQodm9pZCogdGFyZ2V0LCB1MzIgbGlua09mZnNldCkKewogICAgQ3F1ZXVl
UHRyTGluayogdGFyZ2V0TDsKCiAgICB0YXJnZXRMID0gQ3F1ZXVlUHRyTGlua0FkZHIodGFyZ2V0
LCBsaW5rT2Zmc2V0KTsKCiAgICB0YXJnZXRMLT5mcndkID0gdGFyZ2V0OwogICAgdGFyZ2V0TC0+
Ymt3ZCA9IHRhcmdldDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkCkNxdWV1ZVB0ckluc2VydFF1ZXVl
KHZvaWQqIHF1ZXVlLCB2b2lkKiB0YXJnZXQsIHUzMiBsaW5rT2Zmc2V0KQp7CiAgICBDcXVldWVQ
dHJMaW5rKiBxdWV1ZUw7CiAgICBDcXVldWVQdHJMaW5rKiB0YXJnZXRMOwogICAgQ3F1ZXVlUHRy
TGluayogZnJ3ZEw7CgogICAgcXVldWVMID0gQ3F1ZXVlUHRyTGlua0FkZHIocXVldWUsIGxpbmtP
ZmZzZXQpOwogICAgdGFyZ2V0TCA9IENxdWV1ZVB0ckxpbmtBZGRyKHRhcmdldCwgbGlua09mZnNl
dCk7CiAgICBmcndkTCA9IENxdWV1ZVB0ckxpbmtBZGRyKHF1ZXVlTC0+ZnJ3ZCwgbGlua09mZnNl
dCk7CgogICAgdGFyZ2V0TC0+ZnJ3ZCA9IHF1ZXVlTC0+ZnJ3ZDsKICAgIGZyd2RMLT5ia3dkID0g
dGFyZ2V0OwogICAgdGFyZ2V0TC0+Ymt3ZCA9IHF1ZXVlOwogICAgcXVldWVMLT5mcndkID0gdGFy
Z2V0Owp9CgpleHRlcm4gaW5saW5lIHZvaWQKQ3F1ZXVlUHRyQXBwZW5kUXVldWUodm9pZCogcXVl
dWUsIHZvaWQqIHRhcmdldCwgdTMyIGxpbmtPZmZzZXQpCnsKICAgIENxdWV1ZVB0ckxpbmsqIHF1
ZXVlTDsKICAgIENxdWV1ZVB0ckxpbmsqIHRhcmdldEw7CiAgICBDcXVldWVQdHJMaW5rKiBia3dk
TDsKCiAgICBxdWV1ZUwgPSBDcXVldWVQdHJMaW5rQWRkcihxdWV1ZSwgbGlua09mZnNldCk7CiAg
ICB0YXJnZXRMID0gQ3F1ZXVlUHRyTGlua0FkZHIodGFyZ2V0LCBsaW5rT2Zmc2V0KTsKICAgIGJr
d2RMID0gQ3F1ZXVlUHRyTGlua0FkZHIocXVldWVMLT5ia3dkLCBsaW5rT2Zmc2V0KTsKCiAgICA7
CiAgICB0YXJnZXRMLT5ia3dkID0gcXVldWVMLT5ia3dkOwogICAgYmt3ZEwtPmZyd2QgPSB0YXJn
ZXQ7CiAgICB0YXJnZXRMLT5mcndkID0gcXVldWU7CiAgICBxdWV1ZUwtPmJrd2QgPSB0YXJnZXQ7
Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCoKQ3F1ZXVlUHRyRGVsZXRlUXVldWUodm9pZCogdGFyZ2V0
LCB1MzIgbGlua09mZnNldCkKewogICAgQ3F1ZXVlUHRyTGluayogdGFyZ2V0TDsKICAgIENxdWV1
ZVB0ckxpbmsqIGZyd2RMOwogICAgQ3F1ZXVlUHRyTGluayogYmt3ZEw7CiAgICB2b2lkKiBvbGRG
cndkOwoKICAgIHRhcmdldEwgPSBDcXVldWVQdHJMaW5rQWRkcih0YXJnZXQsIGxpbmtPZmZzZXQp
OwogICAgZnJ3ZEwgPSBDcXVldWVQdHJMaW5rQWRkcih0YXJnZXRMLT5mcndkLCBsaW5rT2Zmc2V0
KTsKICAgIGJrd2RMID0gQ3F1ZXVlUHRyTGlua0FkZHIodGFyZ2V0TC0+Ymt3ZCwgbGlua09mZnNl
dCk7CgogICAgYmt3ZEwtPmZyd2QgPSB0YXJnZXRMLT5mcndkOwogICAgZnJ3ZEwtPmJrd2QgPSB0
YXJnZXRMLT5ia3dkOwoKICAgIG9sZEZyd2QgPSB0YXJnZXRMLT5mcndkOwogICAgdGFyZ2V0TC0+
ZnJ3ZCA9IHRhcmdldDsKICAgIHRhcmdldEwtPmJrd2QgPSB0YXJnZXQ7CgogICAgcmV0dXJuIChv
bGRGcndkICE9IHRhcmdldCkgPyBvbGRGcndkIDogKCh2b2lkICopMCk7Cn0KCiNkZWZpbmUgQ3F1
ZXVlUHRyRGVmSW5pdChwcmVmaXgsdHlwZU5hbWUsbGlua0ZpZWxkKSBleHRlcm4gaW5saW5lIHZv
aWQgcHJlZml4ICMjIEluaXQodHlwZU5hbWUqIHRndCkgeyBDcXVldWVQdHJJbml0KHRndCwgb2Zm
c2V0b2YodHlwZU5hbWUsIGxpbmtGaWVsZCkpO30KCgoKI2RlZmluZSBDcXVldWVQdHJEZWZJbnNl
cnQocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVsZCkgZXh0ZXJuIGlubGluZSB2b2lkIHByZWZpeCAj
IyBJbnNlcnQodHlwZU5hbWUqIHRvcCwgdHlwZU5hbWUqIHRndCkgeyBDcXVldWVQdHJJbnNlcnRR
dWV1ZSh0b3AsIHRndCwgb2Zmc2V0b2YodHlwZU5hbWUsIGxpbmtGaWVsZCkpO30KCgoKI2RlZmlu
ZSBDcXVldWVQdHJEZWZBcHBlbmQocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVsZCkgZXh0ZXJuIGlu
bGluZSB2b2lkIHByZWZpeCAjIyBBcHBlbmQodHlwZU5hbWUqIHRvcCwgdHlwZU5hbWUqIHRndCkg
eyBDcXVldWVQdHJBcHBlbmRRdWV1ZSh0b3AsIHRndCwgb2Zmc2V0b2YodHlwZU5hbWUsIGxpbmtG
aWVsZCkpO30KCgoKI2RlZmluZSBDcXVldWVQdHJEZWZEZWxldGUocHJlZml4LHR5cGVOYW1lLGxp
bmtGaWVsZCkgZXh0ZXJuIGlubGluZSB0eXBlTmFtZSogcHJlZml4ICMjIERlbGV0ZSh0eXBlTmFt
ZSogdGd0KSB7IHJldHVybiBDcXVldWVQdHJEZWxldGVRdWV1ZSh0Z3QsIG9mZnNldG9mKHR5cGVO
YW1lLCBsaW5rRmllbGQpKTt9CgoKCiNkZWZpbmUgQ3F1ZXVlUHRyRGVmTmV4dChwcmVmaXgsdHlw
ZU5hbWUsbGlua0ZpZWxkKSBleHRlcm4gaW5saW5lIHR5cGVOYW1lKiBwcmVmaXggIyMgTmV4dCh0
eXBlTmFtZSogdG9wLCB0eXBlTmFtZSogdGd0KSB7IGlmKHRndCAhPSBOVUxMKSB7IHR5cGVOYW1l
KiBuZXh0ID0gdGd0LT5saW5rRmllbGQuZnJ3ZDsgcmV0dXJuIChuZXh0ICE9IHRvcCkgPyBuZXh0
IDogTlVMTDsgfSBlbHNlIHJldHVybiB0b3A7fQoKCgoKCgoKI2RlZmluZSBDcXVldWVQdHJEZWZQ
cmV2KHByZWZpeCx0eXBlTmFtZSxsaW5rRmllbGQpIGV4dGVybiBpbmxpbmUgdHlwZU5hbWUqIHBy
ZWZpeCAjIyBQcmV2KHR5cGVOYW1lKiB0b3AsIHR5cGVOYW1lKiB0Z3QpIHsgaWYodGd0ICE9IE5V
TEwpIHsgdHlwZU5hbWUqIHByZXYgPSB0Z3QtPmxpbmtGaWVsZC5ia3dkOyByZXR1cm4gKHByZXYg
IT0gdG9wKSA/IHByZXYgOiBOVUxMOyB9IGVsc2UgcmV0dXJuIHRvcDt9CiMgMjE2ICJheGlzL2Nx
dWV1ZXAuaCIKI2RlZmluZSBDcXVldWVQdHJEZWZGdW5jdGlvblNldChwcmVmaXgsdHlwZU5hbWUs
bGlua0ZpZWxkKSBDcXVldWVQdHJEZWZJbml0KHByZWZpeCwgdHlwZU5hbWUsIGxpbmtGaWVsZCkg
Q3F1ZXVlUHRyRGVmSW5zZXJ0KHByZWZpeCwgdHlwZU5hbWUsIGxpbmtGaWVsZCkgQ3F1ZXVlUHRy
RGVmQXBwZW5kKHByZWZpeCwgdHlwZU5hbWUsIGxpbmtGaWVsZCkgQ3F1ZXVlUHRyRGVmRGVsZXRl
KHByZWZpeCwgdHlwZU5hbWUsIGxpbmtGaWVsZCkgQ3F1ZXVlUHRyRGVmTmV4dChwcmVmaXgsIHR5
cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZVB0ckRlZlByZXYocHJlZml4LCB0eXBlTmFtZSwgbGlu
a0ZpZWxkKQoKCgoKCgoKCiMgNDg4ICJheGlzL2F4aXNkYmcuaCIgMgojIDEgImF4aXMvbG9nZ2lu
Zy5oIiAxCiMgMjcgImF4aXMvbG9nZ2luZy5oIgojZGVmaW5lIF9BWElTX0xPR0dJTkdfSF8gCgoK
CgoKCiNkZWZpbmUgY0xvZ0luZm8gMQojZGVmaW5lIGNMb2dTdGF0aXMgMgoKI2RlZmluZSBjTG9n
V2FybiAzCiNkZWZpbmUgY0xvZ0VyciA0CiNkZWZpbmUgY0xvZ0ZhdGFsIDUKI2RlZmluZSBjTG9n
UmVjb3ZlciA2CgojZGVmaW5lIGNMb2dEYmcgNwoKCgoKI2RlZmluZSBjTG9nQ250bEJlZ2luIDB4
MDAwMTAwMDAKI2RlZmluZSBjTG9nQ250bE91dHB1dCAweDAwMDIwMDAwCiNkZWZpbmUgY0xvZ0Nu
dGxTdXBwcmVzcyAweDAwMDMwMDAwCgp0eXBlZGVmIHZvaWQgKCpMb2dXcml0ZUZ1bmMpKGNvbnN0
IHZvaWQqIG1zZywgaW50IG1zZ0xlbik7CnR5cGVkZWYgdm9pZCAoKkxvZ1B1dEZ1bmMpKGludCBs
b2dUeXBlLCBjb25zdCB2b2lkKiBtc2csIHZvaWQqIGFyZ3MpOwoKCgoKZXh0ZXJuIGludCBMb2dS
ZWdpc3RXcml0ZUZ1bmMoTG9nV3JpdGVGdW5jIHdydEZ1bmMpIGFzbSgiX18iICJMb2dSZWdpc3RX
cml0ZUZ1bmMiKTsKZXh0ZXJuIGludCBMb2dSZWdpc3RQdXRGdW5jKExvZ1B1dEZ1bmMgcHV0RnVu
YykgYXNtKCJfXyIgIkxvZ1JlZ2lzdFB1dEZ1bmMiKTsKZXh0ZXJuIGludCBMb2dJbml0KHZvaWQp
IGFzbSgiX18iICJMb2dJbml0Iik7CmV4dGVybiBpbnQgTG9nUHV0KGludCBsb2dUeXBlLCBjb25z
dCB2b2lkKiBmb3JtLCAuLi4pIGFzbSgiX18iICJMb2dQdXQiKTsKCgojIDQ4OSAiYXhpcy9heGlz
ZGJnLmgiIDIKCnR5cGVkZWYgc3RydWN0IEF4aXNEZWJ1Z0VudHJ5IHsKICAgIENxdWV1ZVB0ckxp
bmsgbGluazsKCiAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgY29uc3QgdW5zaWduZWQqIG1hc2tQ
dHI7CgogICAgdTMyIGRlYnVnSWQ7CiMgNTEwICJheGlzL2F4aXNkYmcuaCIKfSBBeGlzRGVidWdF
bnRyeTsKCgoKCgoKCgojZGVmaW5lIGNBeGlzRGVidWdNaW5MZXZlbCAwVQojZGVmaW5lIGNBeGlz
RGVidWdNYXhMZXZlbCAzMVUKI2RlZmluZSBjQXhpc0RlYnVnTmFtZU1heCAyNTQKI2RlZmluZSBj
QXhpc0RlYnVnTGV2ZWxOYW1lIDNVCgpleHRlcm4gdm9pZCBBeGlzRGVidWdFbnRyeVJlZ2lzdChB
eGlzRGVidWdFbnRyeSogZW50cnkpIGFzbSgiX18iICJBeGlzRGVidWdFbnRyeVJlZ2lzdCIpOwpl
eHRlcm4gdm9pZCBBeGlzRGVidWdPdXRwdXQodW5zaWduZWQgZGVidWdJZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZ1bmNuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZm10LCAuLi4pIGFzbSgiX18i
ICJBeGlzRGVidWdPdXRwdXQiKTsKZXh0ZXJuIHZvaWQgQXhpc0RlYnVnU3RhcnQodm9pZCkKICAg
IGFzbSgiX18iICJBeGlzRGVidWdTdGFydCIpOwpleHRlcm4gdm9pZCBBeGlzRGVidWdTZXREZWZh
dWx0TWFzayh1MzIgbWFzaykKICAgIGFzbSgiX18iICJBeGlzRGVidWdTZXREZWZhdWx0TWFzayIp
OwpleHRlcm4gaW50IEF4aXNEZWJ1Z1NldE91dHB1dE1hcHBlZEZpbGUoY29uc3QgY2hhciogbmFt
ZSwgdW5zaWduZWQgc2l6ZSkKICAgIGFzbSgiX18iICJBeGlzRGVidWdTZXRPdXRwdXRNYXBwZWRG
aWxlIik7CmV4dGVybiBpbnQgQXhpc0RlYnVnU2V0T3V0cHV0U2l6ZSh1bnNpZ25lZCBzaXplKQog
ICAgYXNtKCJfXyIgIkF4aXNEZWJ1Z1NldE91dHB1dFNpemUiKTsKZXh0ZXJuIGludCBBeGlzRGVi
dWdTZXRPdXRwdXRBcmVhKHZvaWQqIG91dHB1dEFyZWEsIHVuc2lnbmVkIHNpemUpCiAgICBhc20o
Il9fIiAiQXhpc0RlYnVnU2V0T3V0cHV0QXJlYSIpOwpleHRlcm4gaW50IEF4aXNEZWJ1Z1NldE91
dHB1dEFwcGVuZEZpbGVCeU5hbWUoY29uc3QgY2hhciogZmlsZW5hbWUpCiAgICBhc20oIl9fIiAi
QXhpc0RlYnVnU2V0T3V0cHV0QXBwZW5kRmlsZUJ5TmFtZSIpOwpleHRlcm4gaW50IEF4aXNEZWJ1
Z1NldE91dHB1dEFwcGVuZEZpbGUoaW50IGZkKQogICAgYXNtKCJfXyIgIkF4aXNEZWJ1Z1NldE91
dHB1dEFwcGVuZEZpbGUiKTsKZXh0ZXJuIEF4aXNEZWJ1Z0VudHJ5KiBBeGlzRGVidWdFbnRyeUZp
bmQoY29uc3QgY2hhciogdGFyZ2V0TmFtZSkKICAgIGFzbSgiX18iICJBeGlzRGVidWdFbnRyeUZp
bmQiKTsKZXh0ZXJuIEF4aXNEZWJ1Z0VudHJ5KiBBeGlzRGVidWdHZXRFbnRyeU5leHQoQXhpc0Rl
YnVnRW50cnkqIG5leHQpCiAgICBhc20oIl9fIiAiQXhpc0RlYnVnR2V0RW50cnlOZXh0Iik7CmV4
dGVybiB2b2lkIEF4aXNEZWJ1Z1NldE1hc2soY29uc3QgY2hhciogdGFyZ2V0TmFtZSwgY29uc3Qg
Y2hhciogdmFsdWVTdHIpCiAgICBhc20oIl9fIiAiQXhpc0RlYnVnU2V0TWFzayIpOwpleHRlcm4g
dm9pZCBBeGlzRGVidWdDbGVhck1hc2soY29uc3QgY2hhciogdGFyZ2V0TmFtZSwgY29uc3QgY2hh
ciogdmFsdWVTdHIpCiAgICBhc20oIl9fIiAiQXhpc0RlYnVnQ2xlYXJNYXNrIik7CmV4dGVybiB2
b2lkIEF4aXNEZWJ1Z0dldExldmVsTmFtZShjb25zdCBBeGlzRGVidWdFbnRyeSogZW50cnksIGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGRlc3ROYW1l
QXJlYSwgY2hhciogZGVzdFByZWZpeEFyZWEpCiAgICBhc20oIl9fIiAiQXhpc0RlYnVnR2V0TGV2
ZWxOYW1lIik7CmV4dGVybiBjb25zdCBjaGFyKiBBeGlzRGVidWdGaWxlTmFtZShjb25zdCBjaGFy
KiBmaWxlTmFtZSkgYXNtKCJfXyIgIkF4aXNEZWJ1Z0ZpbGVOYW1lIik7CgpleHRlcm4gaW50IEF4
aXNDb21tb25Db3JyZWN0TmFtZUxldHRlcihpbnQgY2gpIGFzbSgiX18iICJBeGlzQ29tbW9uQ29y
cmVjdE5hbWVMZXR0ZXIiKTsKZXh0ZXJuIGludCBBeGlzQ29tbW9uQ29ycmVjdE5hbWVTdHIoY29u
c3Qgdm9pZCogeCkgYXNtKCJfXyIgIkF4aXNDb21tb25Db3JyZWN0TmFtZVN0ciIpOwojIDU4NiAi
YXhpcy9heGlzZGJnLmgiCnN0YXRpYyBBeGlzRGVidWdFbnRyeSBzTG9jYWxEZWJ1Z09iaiA9IHsg
ezAsIDB9LCAiYXhpcy5hbnkiLCAmZ0F4aXNEZWJ1Z0RlZmF1bHRNYXNrIH07CgoKCiNkZWZpbmUg
RGVidWdPYmogc0xvY2FsRGVidWdPYmoKIyA2MTUgImF4aXMvYXhpc2RiZy5oIgpfX2F0dHJpYnV0
ZV9fKChjb25zdHJ1Y3RvcikpIHN0YXRpYyB2b2lkCnNBeGlzRGVidWdPYmplY3RSZWdpc3Qodm9p
ZCkKewogICAgQXhpc0RlYnVnRW50cnlSZWdpc3QoJiBzTG9jYWxEZWJ1Z09iaik7Cn0KIyA2Mjkg
ImF4aXMvYXhpc2RiZy5oIgoKZXh0ZXJuIGludCBnQXhpc0RlYnVnQWJvcnRPdXRwdXRGZDsKZXh0
ZXJuIHZvaWQgQXhpc0RlYnVnQWJvcnRFcnJvcihjb25zdCBjaGFyKiBtc2csIHVuc2lnbmVkIG1z
Z0wpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CgoKCgoKCiMgNzE5ICJheGlzL2F4aXNkYmcu
aCIKI2RlZmluZSBjQXhpc0RlYnVnTGV2ZWxOYW1lTWF4IDE1Cgp0eXBlZGVmIHN0cnVjdCBBeGlz
RGVidWdMZXZlbE5hbWUgewogICAgQ3F1ZXVlUHRyTGluayBsaW5rOwogICAgdW5zaWduZWQgbGV2
ZWw7CiAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgY29uc3QgY2hhciogcHJlZml4OwogICAgQXhp
c0RlYnVnRW50cnkqIGVudHJ5OwoKCgoKCn0gQXhpc0RlYnVnTGV2ZWxOYW1lOwoKZXh0ZXJuIHZv
aWQgQXhpc0RlYnVnTGV2ZWxOYW1lUmVnaXN0KEF4aXNEZWJ1Z0xldmVsTmFtZSogZGxuKSBhc20o
Il9fIiAiQXhpc0RlYnVnTGV2ZWxOYW1lUmVnaXN0Iik7CgoKI2RlZmluZSBBeGlzRGVidWdMZXZl
bE5hbWVEZWZpbmUobGV2ZWxWYWx1ZSxsZXZlbE5hbWUscHJlZml4KSBzdGF0aWMgQXhpc0RlYnVn
TGV2ZWxOYW1lIHNMb2NhbERlYnVnTGV2ZWxOYW1lXyAjIyBsZXZlbFZhbHVlID0geyBsZXZlbFZh
bHVlLCBsZXZlbE5hbWUsIHByZWZpeCwgJkRlYnVnT2JqIH07X19hdHRyaWJ1dGVfXygoY29uc3Ry
dWN0b3IpKSBzdGF0aWMgdm9pZCBzTG9jYWxEZWJ1Z0xldmVsTmFtZVJlZ2lzdF8gIyMgbGV2ZWxW
YWx1ZSB7IEF4aXNEZWJ1Z0xldmVsTmFtZVJlZ2lzdChBeGlzRGVidWdMZXZlbE5hbWUqIGRsbik7
fQojIDM2ICJheGlzL2F4aXMuaCIgMgoKCgoKCgoKCiMgODEgImF4aXMvYXhpcy5oIgojZGVmaW5l
IEVudGVyKCkgCiNkZWZpbmUgUmV0dXJuKHgpIHJldHVybiAoeCkKI2RlZmluZSBSZXR1cm5Wb2lk
KCkgcmV0dXJuCiNkZWZpbmUgQXNzZXJ0KGV4LGZvcm0uLi4pIAoKCgojZGVmaW5lIEFzc2VydFgo
ZXgsZm9ybWF0Li4uKSBkbyB7aWYoIShleCkpIEF4aXNBYm9ydCgiJXM6JSRcbiIsICNleCwgZm9y
bWF0KTt9IHdoaWxlKDApCiNkZWZpbmUgTkFzc2VydFgoZXgsZm9ybWF0Li4uKSAKCgojZGVmaW5l
IGNTdGRpbiAwCiNkZWZpbmUgY1N0ZG91dCAxCiNkZWZpbmUgY1N0ZGVyciAyCgpleHRlcm4gQ2hy
KiBnQ21kTmFtZSBhc20oIl9fIiAiZ0NtZE5hbWUiKTsKZXh0ZXJuIHMzMiBnTXlQaWQgYXNtKCJf
XyIgImdNeVBpZCIpOwpleHRlcm4gV29yZCBnUGFnZVN6IGFzbSgiX18iICJnUGFnZVN6Iik7CmV4
dGVybiBXb3JkIGdQYWdlTWFzayBhc20oIl9fIiAiZ1BhZ2VNYXNrIik7CmV4dGVybiBXb3JkIGdQ
YWdlT2Zmc2V0IGFzbSgiX18iICJnUGFnZU9mZnNldCIpOwoKZXh0ZXJuIHZvaWQgQXhpc0luaXRT
eXNpbmZvKHZvaWQpIGFzbSgiX18iICJBeGlzSW5pdFN5c2luZm8iKTsKZXh0ZXJuIHZvaWQgQXhp
c0luaXRQcm9jaW5mbyh2b2lkKSBhc20oIl9fIiAiQXhpc0luaXRQcm9jaW5mbyIpOwpleHRlcm4g
aW50IEF4aXNJbml0KGludCBhcmdjLCBjaGFyKiBhcmd2W10pIGFzbSgiX18iICJBeGlzSW5pdCIp
OwpleHRlcm4gdm9pZCBBeGlzRXhpdChpbnQgZXhpdENvZGUpIGFzbSgiX18iICJBeGlzRXhpdCIp
IF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwpleHRlcm4gdm9pZCBBeGlzVGhyRXhpdCh2b2lk
ICpfX3JldHZhbCkgYXNtKCJfXyIgIkF4aXNUaHJFeGl0IikgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwpleHRlcm4gaW50IEF4aXNBYm9ydChjb25zdCB2b2lkKiBmb3JtLCAuLi4pIGFz
bSgiX18iICJBeGlzQWJvcnQiKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKZXh0ZXJuIGlu
dCBBeGlzUHJmKHZvaWQqIHAsIGNvbnN0IHZvaWQqIGZvcm0sIGludCBsLCB1bnNpZ25lZCBsb25n
KiBhcmdzLCB1bnNpZ25lZCBsb25nKiBhcmducCkgYXNtKCJfXyIgIkF4aXNQcmYiKTsKZXh0ZXJu
IExlbiBBeGlzU3ByaW50Zih2b2lkKiBidWYsIFN6IHN6LCBjb25zdCB2b2lkKiBmb3JtLCAuLi4p
IGFzbSgiX18iICJBeGlzU3ByaW50ZiIpOwpleHRlcm4gTGVuIEF4aXNWc3ByaW50Zih2b2lkKiBi
dWYsIFN6IHN6LCBjb25zdCB2b2lkKiBmb3JtLCB2b2lkKiBhcmdzKQogICAgYXNtKCJfXyIgIkF4
aXNWc3ByaW50ZiIpOwoKCnR5cGVkZWYgTGVuICgqIEF4aXNQcmZPdXRwdXRGdW5jKShjb25zdCB2
b2lkKiBzdHIpOwoKdHlwZWRlZiBMZW4gKCogQXhpc1ByZkNhbGxCYWNrRnVuYykoQXhpc1ByZk91
dHB1dEZ1bmMgb3V0cHV0LCBjb25zdCB2b2lkKiBvcHRzdHIsIHZvaWQqIGFyZyk7CiMgMjE2ICJh
eGlzL2F4aXMuaCIKIyAxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAxIDMKIyAxNiAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMwojZGVmaW5lIF9QVEhSRUFEX0ggMQoKCgojIDEgIi91c3IvaW5j
bHVkZS9zY2hlZC5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDMKI2RlZmluZSBf
U0NIRURfSCAxCgoKCgoKCiNkZWZpbmUgX19uZWVkX3RpbWVzcGVjIAojIDEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDEgMwojIDExMyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojdW5kZWYgX19uZWVk
X3RpbWVzcGVjCiMgMzAgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz
CiNkZWZpbmUgU0NIRURfT1RIRVIgMAojZGVmaW5lIFNDSEVEX0ZJRk8gMQojZGVmaW5lIFNDSEVE
X1JSIDIKCgoKI2RlZmluZSBDU0lHTkFMIDB4MDAwMDAwZmYKI2RlZmluZSBDTE9ORV9WTSAweDAw
MDAwMTAwCiNkZWZpbmUgQ0xPTkVfRlMgMHgwMDAwMDIwMAojZGVmaW5lIENMT05FX0ZJTEVTIDB4
MDAwMDA0MDAKI2RlZmluZSBDTE9ORV9TSUdIQU5EIDB4MDAwMDA4MDAKI2RlZmluZSBDTE9ORV9Q
SUQgMHgwMDAwMTAwMAojZGVmaW5lIENMT05FX1BUUkFDRSAweDAwMDAyMDAwCiNkZWZpbmUgQ0xP
TkVfVkZPUksgMHgwMDAwNDAwMAoKCgoKc3RydWN0IHNjaGVkX3BhcmFtCiAgewogICAgaW50IF9f
c2NoZWRfcHJpb3JpdHk7CiAgfTsKCgoKCgpleHRlcm4gaW50IGNsb25lIChpbnQgKCpfX2ZuKSAo
dm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrLAogICAgICAgICAgICAgICAgICBpbnQg
X19mbGFncywgdm9pZCAqX19hcmcpIDsKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDIg
MwoKI2RlZmluZSBzY2hlZF9wcmlvcml0eSBfX3NjaGVkX3ByaW9yaXR5CgoKCgoKZXh0ZXJuIGlu
dCBzY2hlZF9zZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFy
YW0gKl9fcGFyYW0pCiAgICAgOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0cGFyYW0gKF9fcGlkX3Qg
X19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgOwoKCmV4dGVybiBpbnQgc2NoZWRf
c2V0c2NoZWR1bGVyIChfX3BpZF90IF9fcGlkLCBpbnQgX19wb2xpY3ksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgOwoK
CmV4dGVybiBpbnQgc2NoZWRfZ2V0c2NoZWR1bGVyIChfX3BpZF90IF9fcGlkKSA7CgoKZXh0ZXJu
IGludCBzY2hlZF95aWVsZCAodm9pZCkgOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5
X21heCAoaW50IF9fYWxnb3JpdGhtKSA7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlf
bWluIChpbnQgX19hbGdvcml0aG0pIDsKCgpleHRlcm4gaW50IHNjaGVkX3JyX2dldF9pbnRlcnZh
bCAoX19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVjICpfX3QpIDsKCgojIDIxICIvdXNyL2lu
Y2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojZGVmaW5lIF9USU1FX0ggMQoKCgoKCgoKCiNkZWZpbmUg
X19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIvdXNyL2xvY2FsL3NuYXAv
Z2NjLTIwMDIwODE5L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDIyMSAiL3Vzci9sb2NhbC9zbmFwL2djYy0yMDAyMDgxOS9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBf
X25lZWRfc2l6ZV90CiMgMzY0ICIvdXNyL2xvY2FsL3NuYXAvZ2NjLTIwMDIwODE5L2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMi4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIE5V
TEwKCgoKCiNkZWZpbmUgTlVMTCAoKHZvaWQgKikwKQoKCgoKCiN1bmRlZiBfX25lZWRfTlVMTAoj
IDM5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90
aW1lLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKI2RlZmluZSBfQklU
U19USU1FX0ggMQoKCgoKCgoKI2RlZmluZSBDTE9DS1NfUEVSX1NFQyAxMDAwMDAwbAoKCgoKCmV4
dGVybiBsb25nIGludCBfX3N5c2NvbmYgKGludCk7CiNkZWZpbmUgQ0xLX1RDSyAoKF9fY2xvY2tf
dCkgX19zeXNjb25mICgyKSkKCgoKCiNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUUgMAoKI2RlZmluZSBD
TE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgMgoKI2RlZmluZSBDTE9DS19USFJFQURfQ1BVVElNRV9J
RCAzCgoKI2RlZmluZSBUSU1FUl9BQlNUSU1FIDEKIyA0MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MiAzCiMgNTQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI2RlZmluZSBfX2Nsb2NrX3RfZGVmaW5l
ZCAxCgoKCgp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwojIDExOCAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1f
aG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0
bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dt
dG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoKCgoKc3RydWN0IGl0aW1lcnNw
ZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNw
ZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZlbnQ7CiMgMTYzICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNsb2NrICh2b2lkKSA7CgoKZXh0ZXJuIHRpbWVfdCB0
aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpleHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3Qg
X190aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4g
c2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBf
X3RwKSA7CiMgMTk0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdt
dGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9j
YWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAq
Z210aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4g
c3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1l
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBf
X3RwKSA7CgoKCgpleHRlcm4gY2hhciAqYXNjdGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHAp
IDsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoK
CmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9f
dHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpl
eHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVy
biBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBp
bnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lk
IHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0
aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7
CgoKCgoKI2RlZmluZSBfX2lzbGVhcCh5ZWFyKSAoKHllYXIpICUgNCA9PSAwICYmICgoeWVhcikg
JSAxMDAgIT0gMCB8fCAoeWVhcikgJSA0MDAgPT0gMCkpCiMgMjcxICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4g
dGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUg
KGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50
IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4
dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVz
cGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv
Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGlt
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQog
ICAgIDsKIyAzMDkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGludCB0aW1lcl9jcmVh
dGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRpbWVyX2RlbGV0ZSAo
dGltZXJfdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUgKHRpbWVyX3Qg
X190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIDsKCgpleHRl
cm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3Bl
YyAqX192YWx1ZSkKICAgICA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuICh0aW1lcl90
IF9fdGltZXJpZCkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKIyAyMiAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMiAzCgojZGVmaW5lIF9fbmVlZF9zaWdzZXRfdCAKIyAxICIvdXNy
L2luY2x1ZGUvc2lnbmFsLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3Np
Z25hbC5oIiAyIDMKIyA1MCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCiN1bmRlZiBfX25lZWRf
c2lnc2V0X3QKIyAzNzEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwoKIyAyNSAiL3Vzci9pbmNs
dWRlL3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9pbml0c3Bpbi5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvaW5pdHNwaW4uaCIg
MwojZGVmaW5lIF9fQVRPTUlDX0xPQ0tfSU5JVCAwCgoKI2RlZmluZSBfX0xPQ0tfSU5JVElBTEla
RVIgeyAwLCAwIH0KI2RlZmluZSBfX0FUT01JQ19JTklUSUFMSVpFUiB7IDAsIDAgfQojIDI3ICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKCgoKI2RlZmluZSBQVEhSRUFEX01VVEVYX0lO
SVRJQUxJWkVSIHswLCAwLCAwLCBQVEhSRUFEX01VVEVYX1RJTUVEX05QLCBfX0xPQ0tfSU5JVElB
TElaRVJ9CiMgNDQgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKI2RlZmluZSBQVEhSRUFEX0NP
TkRfSU5JVElBTElaRVIge19fTE9DS19JTklUSUFMSVpFUiwgMH0KIyA1OSAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMwplbnVtCnsKICBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSwKI2RlZmluZSBQ
VEhSRUFEX0NSRUFURV9KT0lOQUJMRSBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRQogIFBUSFJFQURf
Q1JFQVRFX0RFVEFDSEVECiNkZWZpbmUgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQgUFRIUkVBRF9D
UkVBVEVfREVUQUNIRUQKfTsKCmVudW0KewogIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCwKI2RlZmlu
ZSBQVEhSRUFEX0lOSEVSSVRfU0NIRUQgUFRIUkVBRF9JTkhFUklUX1NDSEVECiAgUFRIUkVBRF9F
WFBMSUNJVF9TQ0hFRAojZGVmaW5lIFBUSFJFQURfRVhQTElDSVRfU0NIRUQgUFRIUkVBRF9FWFBM
SUNJVF9TQ0hFRAp9OwoKZW51bQp7CiAgUFRIUkVBRF9TQ09QRV9TWVNURU0sCiNkZWZpbmUgUFRI
UkVBRF9TQ09QRV9TWVNURU0gUFRIUkVBRF9TQ09QRV9TWVNURU0KICBQVEhSRUFEX1NDT1BFX1BS
T0NFU1MKI2RlZmluZSBQVEhSRUFEX1NDT1BFX1BST0NFU1MgUFRIUkVBRF9TQ09QRV9QUk9DRVNT
Cn07CgplbnVtCnsKICBQVEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVD
VVJTSVZFX05QLAogIFBUSFJFQURfTVVURVhfRVJST1JDSEVDS19OUCwKICBQVEhSRUFEX01VVEVY
X0FEQVBUSVZFX05QCiMgMTAwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCn07CgplbnVtCnsK
ICBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSwKI2RlZmluZSBQVEhSRUFEX1BST0NFU1NfUFJJVkFU
RSBQVEhSRUFEX1BST0NFU1NfUFJJVkFURQogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKI2RlZmlu
ZSBQVEhSRUFEX1BST0NFU1NfU0hBUkVEIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKfTsKIyAxMjAg
Ii91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKI2RlZmluZSBQVEhSRUFEX09OQ0VfSU5JVCAwCiMg
MTMxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCnN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1
ZmZlcgp7CiAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKik7CiAgdm9pZCAqX19hcmc7CiAgaW50
IF9fY2FuY2VsdHlwZTsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fcHJldjsK
fTsKCgoKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAojZGVmaW5lIFBUSFJFQURfQ0FO
Q0VMX0VOQUJMRSBQVEhSRUFEX0NBTkNFTF9FTkFCTEUKICBQVEhSRUFEX0NBTkNFTF9ESVNBQkxF
CiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfRElTQUJMRSBQVEhSRUFEX0NBTkNFTF9ESVNBQkxFCn07
CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAojZGVmaW5lIFBUSFJFQURfQ0FOQ0VM
X0RFRkVSUkVEIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVECiAgUFRIUkVBRF9DQU5DRUxfQVNZTkNI
Uk9OT1VTCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfQVNZTkNIUk9OT1VTIFBUSFJFQURfQ0FOQ0VM
X0FTWU5DSFJPTk9VUwp9OwojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMRUQgKCh2b2lkICopIC0xKQoK
CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NyZWF0ZSAocHRocmVhZF90ICpfX3Jlc3RyaWN0IF9f
dGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHB0aHJlYWRfYXR0cl90
ICpfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCpf
X3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfX3Jlc3RyaWN0IF9fYXJnKSA7CgoKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3NlbGYgKHZv
aWQpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgKHB0aHJlYWRfdCBfX3RocmVhZDEsIHB0
aHJlYWRfdCBfX3RocmVhZDIpIDsKCgpleHRlcm4gdm9pZCBwdGhyZWFkX2V4aXQgKHZvaWQgKl9f
cmV0dmFsKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBp
bnQgcHRocmVhZF9qb2luIChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybikg
OwoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9kZXRhY2ggKHB0aHJlYWRfdCBfX3RoKSA7CgoKCgoK
CgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9pbml0IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSA7
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAocHRocmVhZF9hdHRyX3QgKl9fYXR0
cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlIChwdGhyZWFkX2F0
dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fZGV0YWNoc3RhdGUpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0
ZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICpfX2RldGFjaHN0YXRlKSA7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0c2NoZWRwYXJhbSAocHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QgX19hdHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBz
Y2hlZF9wYXJhbSAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3BhcmFtKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbSAo
X19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3BhcmFtKQogICAgIDsKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSAocHRocmVhZF9hdHRyX3QgKl9f
YXR0ciwgaW50IF9fcG9saWN5KQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRz
Y2hlZHBvbGljeSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJpY3QgX19w
b2xpY3kpCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZCAo
cHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19pbmhlcml0KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5o
ZXJpdHNjaGVkIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJpY3QgX19p
bmhlcml0KQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY29wZSAocHRocmVh
ZF9hdHRyX3QgKl9fYXR0ciwgaW50IF9fc2NvcGUpCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHNjb3BlIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0IF9fYXR0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Nj
b3BlKSA7CiMgMjYwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX3NldHN0YWNrYWRkciAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3N0YWNrYWRkcikgOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRkciAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19y
ZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0ciwgdm9p
ZCAqKl9fcmVzdHJpY3QgX19zdGFja2FkZHIpCiAgICAgOwojIDI4NCAiL3Vzci9pbmNsdWRlL3B0
aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUgKHB0aHJlYWRf
YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fc3RhY2tzaXplKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXpl
IChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19hdHRyLCBzaXplX3QgKl9fcmVzdHJpY3QgX19zdGFja3NpemUp
CiAgICAgOwojIDMwMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJl
YWRfc2V0c2NoZWRwYXJhbSAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwgaW50IF9fcG9saWN5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRf
cGFyYW0gKl9fcGFyYW0pCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9nZXRzY2hlZHBhcmFt
IChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3Jlc3RyaWN0IF9fcGFyYW0pCiAgICAgOwoj
IDMzMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhf
aW5pdCAocHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fcmVzdHJpY3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbXV0ZXhfYXR0cikgOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9tdXRleF9kZXN0cm95IChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIDsKCgpl
eHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4
KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2xvY2sgKHB0aHJlYWRfbXV0ZXhfdCAqX19t
dXRleCkgOwojIDM1MiAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIDsKCgoKCgoKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4YXR0cl9pbml0IChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIp
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhh
dHRyX3QgKl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cHNoYXJl
ZCAoX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wc2hhcmVkKSA7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwc2hhcmVkIChwdGhyZWFkX211dGV4YXR0cl90ICpf
X2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcHNo
YXJlZCkgOwojIDM5MCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJl
YWRfY29uZF9pbml0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICpfX3Jlc3Ry
aWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uZF9hdHRyKSA7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX2NvbmRfZGVzdHJveSAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9jb25kX3NpZ25hbCAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgOwoK
CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAocHRocmVhZF9jb25kX3QgKl9fY29u
ZCkgOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0IChwdGhyZWFkX2NvbmRfdCAqX19y
ZXN0cmljdCBfX2NvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0
ZXhfdCAqX19yZXN0cmljdCBfX211dGV4KSA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRf
dGltZWR3YWl0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fcmVzdHJpY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Fi
c3RpbWUpIDsKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9pbml0IChwdGhyZWFkX2Nv
bmRhdHRyX3QgKl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95
IChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25k
YXR0cl9nZXRwc2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQp
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9jb25k
YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19wc2hhcmVkKSA7CiMgNTU2ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiBp
bnQgcHRocmVhZF9rZXlfY3JlYXRlIChwdGhyZWFkX2tleV90ICpfX2tleSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgOwoK
CmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVsZXRlIChwdGhyZWFkX2tleV90IF9fa2V5KSA7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3NldHNwZWNpZmljIChwdGhyZWFkX2tleV90IF9fa2V5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKSA7CgoK
ZXh0ZXJuIHZvaWQgKnB0aHJlYWRfZ2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXkpIDsK
IyA1NzYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX29uY2Ug
KHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwKICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSA7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVh
ZF9zZXRjYW5jZWxzdGF0ZSAoaW50IF9fc3RhdGUsIGludCAqX19vbGRzdGF0ZSkgOwoKCgpleHRl
cm4gaW50IHB0aHJlYWRfc2V0Y2FuY2VsdHlwZSAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUp
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfY2FuY2VsIChwdGhyZWFkX3QgX190aHJlYWQpIDsKCgoK
CmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAodm9pZCkgOwojIDYwNiAiL3Vzci9pbmNs
dWRlL3B0aHJlYWQuaCIgMwojZGVmaW5lIHB0aHJlYWRfY2xlYW51cF9wdXNoKHJvdXRpbmUsYXJn
KSB7IHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciBfYnVmZmVyOyBfcHRocmVhZF9jbGVh
bnVwX3B1c2ggKCZfYnVmZmVyLCAocm91dGluZSksIChhcmcpKTsKCgoKZXh0ZXJuIHZvaWQgX3B0
aHJlYWRfY2xlYW51cF9wdXNoIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3JvdXRpbmUp
ICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYXJn
KSA7CgoKCgojZGVmaW5lIHB0aHJlYWRfY2xlYW51cF9wb3AoZXhlY3V0ZSkgX3B0aHJlYWRfY2xl
YW51cF9wb3AgKCZfYnVmZmVyLCAoZXhlY3V0ZSkpOyB9CgoKZXh0ZXJuIHZvaWQgX3B0aHJlYWRf
Y2xlYW51cF9wb3AgKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19leGVjdXRlKSA7CiMgNjU1ICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFk
LmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMwojZGVmaW5lIF9C
SVRTX1NJR1RIUkVBRF9IIDEKIyAzMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDMK
ZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgKGludCBfX2hvdywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmljdCBfX25ld21hc2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fb2xkbWFzayk7
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwgKHB0aHJlYWRfdCBfX3RocmVhZCwgaW50IF9fc2ln
bm8pIDsKIyA2NTYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwojIDY3MSAiL3Vzci9pbmNs
dWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVw
YXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3BhcmVudCkg
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQp
KSA7CgoKCgpleHRlcm4gdm9pZCBwdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCAodm9pZCkg
OwoKCiMgMjE3ICJheGlzL2F4aXMuaCIgMgp0eXBlZGVmIHB0aHJlYWRfdCBBeGlzVGhyZWFkOwoj
IDMxMCAiYXhpcy9heGlzLmgiCiNkZWZpbmUgdGhyX2V4aXQocCkgQXhpc1RockV4aXQocCkKI2Rl
ZmluZSBwdGhyZWFkX2V4aXQocCkgQXhpc1RockV4aXQocCkKIyAzMzMgImF4aXMvYXhpcy5oIgoK
IyAyNCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZsZHUuYyIgMgojIDEgImF4aXMvYXRpbWUuaCIg
MQojIDI3ICJheGlzL2F0aW1lLmgiCiNkZWZpbmUgX0FYSVNfQVRJTUVfSF8gCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDIwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MwojZGVmaW5lIF9TWVNfVElNRV9IIDEKCgoKCiNkZWZpbmUgX19uZWVkX3RpbWVfdCAKCiNkZWZp
bmUgX19uZWVkX3RpbWV2YWwgCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA2
MCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiN1bmRlZiBfX25lZWRfdGltZXZhbAojIDI5
ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCiMgMzggIi91c3IvaW5jbHVkZS9zeXMvdGlt
ZS5oIiAzCgojIDU2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXpvbmUK
ICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9OwoKdHlw
ZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJfdDsKIyA3MiAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKZXh0ZXJuIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVj
dCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3Rp
bWV6b25lX3B0cl90IF9fdHopIDsKCgoKCmV4dGVybiBpbnQgc2V0dGltZW9mZGF5IChfX2NvbnN0
IHN0cnVjdCB0aW1ldmFsICpfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBz
dHJ1Y3QgdGltZXpvbmUgKl9fdHopIDsKCgoKCgpleHRlcm4gaW50IGFkanRpbWUgKF9fY29uc3Qg
c3RydWN0IHRpbWV2YWwgKl9fZGVsdGEsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2
YWwgKl9fb2xkZGVsdGEpIDsKCgoKCmVudW0gX19pdGltZXJfd2hpY2gKICB7CgogICAgSVRJTUVS
X1JFQUwgPSAwLAojZGVmaW5lIElUSU1FUl9SRUFMIElUSU1FUl9SRUFMCgogICAgSVRJTUVSX1ZJ
UlRVQUwgPSAxLAojZGVmaW5lIElUSU1FUl9WSVJUVUFMIElUSU1FUl9WSVJUVUFMCgoKICAgIElU
SU1FUl9QUk9GID0gMgojZGVmaW5lIElUSU1FUl9QUk9GIElUSU1FUl9QUk9GCiAgfTsKCgoKc3Ry
dWN0IGl0aW1lcnZhbAogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBz
dHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKICB9OwoKCgoKCgp0eXBlZGVmIGludCBfX2l0aW1lcl93
aGljaF90OwoKCgoKZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGlj
aCwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpIDsKCgoK
CmV4dGVybiBpbnQgc2V0aXRpbWVyIChfX2l0aW1lcl93aGljaF90IF9fd2hpY2gsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9fcmVzdHJpY3QgX19uZXcs
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fb2xk
KSA7CgoKCmV4dGVybiBpbnQgdXRpbWVzIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBz
dHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkKICAgICA7CgoKCgoKI2RlZmluZSB0aW1lcmlzc2V0KHR2
cCkgKCh0dnApLT50dl9zZWMgfHwgKHR2cCktPnR2X3VzZWMpCiNkZWZpbmUgdGltZXJjbGVhcih0
dnApICgodHZwKS0+dHZfc2VjID0gKHR2cCktPnR2X3VzZWMgPSAwKQojZGVmaW5lIHRpbWVyY21w
KGEsYixDTVApICgoKGEpLT50dl9zZWMgPT0gKGIpLT50dl9zZWMpID8gKChhKS0+dHZfdXNlYyBD
TVAgKGIpLT50dl91c2VjKSA6ICgoYSktPnR2X3NlYyBDTVAgKGIpLT50dl9zZWMpKQoKCgojZGVm
aW5lIHRpbWVyYWRkKGEsYixyZXN1bHQpIGRvIHsgKHJlc3VsdCktPnR2X3NlYyA9IChhKS0+dHZf
c2VjICsgKGIpLT50dl9zZWM7IChyZXN1bHQpLT50dl91c2VjID0gKGEpLT50dl91c2VjICsgKGIp
LT50dl91c2VjOyBpZiAoKHJlc3VsdCktPnR2X3VzZWMgPj0gMTAwMDAwMCkgeyArKyhyZXN1bHQp
LT50dl9zZWM7IChyZXN1bHQpLT50dl91c2VjIC09IDEwMDAwMDA7IH0gfSB3aGlsZSAoMCkKIyAx
NjAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiNkZWZpbmUgdGltZXJzdWIoYSxiLHJlc3Vs
dCkgZG8geyAocmVzdWx0KS0+dHZfc2VjID0gKGEpLT50dl9zZWMgLSAoYiktPnR2X3NlYzsgKHJl
c3VsdCktPnR2X3VzZWMgPSAoYSktPnR2X3VzZWMgLSAoYiktPnR2X3VzZWM7IGlmICgocmVzdWx0
KS0+dHZfdXNlYyA8IDApIHsgLS0ocmVzdWx0KS0+dHZfc2VjOyAocmVzdWx0KS0+dHZfdXNlYyAr
PSAxMDAwMDAwOyB9IH0gd2hpbGUgKDApCiMgMTcxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MwoKIyAzMiAiYXhpcy9hdGltZS5oIiAyCgoKI2RlZmluZSBBdGltZUNhdGhvcmljQ2FsZW5kYXIg
MQojZGVmaW5lIEF0aW1lTm9uZVByZXB0aWNDYWxlbmRhciAxCiNkZWZpbmUgQXRpbWVQcm90ZXN0
YW50Q2FsZW5kYXIgMAojZGVmaW5lIEF0aW1lUHJlcHRpY0NhbGVuZGFyIDAKIyA1NCAiYXhpcy9h
dGltZS5oIgp0eXBlZGVmIHM2NCBBdGltZTsKCiNkZWZpbmUgY0F0aW1lTWF4IDQ2NDI2OTEwMzk5
OTk5OTk5OUxMCiNkZWZpbmUgY0F0aW1lSW5maW5pdHkgMHg3RkZGRkZGRkZGRkZGRkZGTEwKI2Rl
ZmluZSBjQXRpbWVPcmlnaW5lVVRDIDIxMDg2NjgwMzIwMDAwMDAwMExMCgojZGVmaW5lIGNBdGlt
ZTFTZWMgKDEwMDAwMDBMTCkKI2RlZmluZSBBdGltZVRvU2VjKGF0aW1lKSAoKGF0aW1lKS9jQXRp
bWUxU2VjKQojZGVmaW5lIEF0aW1lRnJvbVNlYyhzZWMpICgoQXRpbWUpKChzZWMpKmNBdGltZTFT
ZWMpKQojZGVmaW5lIGNBdGltZTFNaW5CeVNlYyAoNjBMTCkKI2RlZmluZSBjQXRpbWUxTWluIChj
QXRpbWUxU2VjICogY0F0aW1lMU1pbkJ5U2VjKQojZGVmaW5lIEF0aW1lVG9NaW4oYXRpbWUpICgo
YXRpbWUpL2NBdGltZTFNaW4pCiNkZWZpbmUgQXRpbWVGcm9tTWluKG1pbikgKChBdGltZSkoKG1p
bikqY0F0aW1lMU1pbikpCiNkZWZpbmUgY0F0aW1lMUhvdXJCeVNlYyAoMzYwMExMKQojZGVmaW5l
IGNBdGltZTFIb3VyQnlNaW4gKDYwTEwpCiNkZWZpbmUgY0F0aW1lMUhvdXIgKGNBdGltZTFTZWMg
KiBjQXRpbWUxSG91ckJ5U2VjKQojZGVmaW5lIEF0aW1lVG9Ib3VyKGF0aW1lKSAoKGF0aW1lKS9j
QXRpbWUxSG91cikKI2RlZmluZSBBdGltZUZyb21Ib3VyKGhvdXIpICgoQXRpbWUpKChob3VyKSpj
QXRpbWUxSG91cikpCiNkZWZpbmUgY0F0aW1lMURheUJ5SG91ciAoMjRMTCkKI2RlZmluZSBjQXRp
bWUxRGF5QnlNaW4gKDE0NDBMTCkKI2RlZmluZSBjQXRpbWUxRGF5QnlTZWMgKDg2NDAwTEwpCiNk
ZWZpbmUgY0F0aW1lMURheSAoY0F0aW1lMURheUJ5U2VjKmNBdGltZTFTZWMpCiNkZWZpbmUgQXRp
bWVUb0RheShhdGltZSkgKChBdGltZSkoKGF0aW1lKS9jQXRpbWUxRGF5KSkKI2RlZmluZSBBdGlt
ZUZyb21EYXkoZGF5KSAoKEF0aW1lKSgoZGF5KSpjQXRpbWUxRGF5KSkKCiNkZWZpbmUgY0F0aW1l
MU1pbGxTZWMgKDEwMDBMTCkKI2RlZmluZSBBdGltZVRvTWlsbFNlYyhhdGltZSkgKChhdGltZSkv
Y0F0aW1lMU1pbGxTZWMpCiNkZWZpbmUgQXRpbWVGcm9tTWlsbFNlYyhtc2VjKSAoKEF0aW1lKSgo
bXNlYykqY0F0aW1lMU1pbGxTZWMpKQoKI2RlZmluZSBBdGltZVB1bGxPdXRNaWNyb1NlYyhhdGlt
ZSkgKChhdGltZSklY0F0aW1lMVNlYykKCiNkZWZpbmUgQXRpbWVQdWxsT3V0U2VjSW5EYXkoYXRp
bWUpIChBdGltZVRvU2VjKGF0aW1lKSVjQXRpbWUxRGF5QnlTZWMpCiNkZWZpbmUgQXRpbWVQdWxs
T3V0U2VjSW5Ib3VyKGF0aW1lKSAoQXRpbWVUb1NlYyhhdGltZSklY0F0aW1lMUhvdXJCeVNlYykK
I2RlZmluZSBBdGltZVB1bGxPdXRTZWNJbk1pbihhdGltZSkgKEF0aW1lVG9TZWMoYXRpbWUpJWNB
dGltZTFNaW5CeVNlYykKCiNkZWZpbmUgQXRpbWVQdWxsT3V0TWluSW5EYXkoYXRpbWUpIChBdGlt
ZVRvTWluKGF0aW1lKSVjQXRpbWUxRGF5QnlNaW4pCiNkZWZpbmUgQXRpbWVQdWxsT3V0TWluSW5I
b3VyKGF0aW1lKSAoQXRpbWVUb01pbihhdGltZSklY0F0aW1lMUhvdXJCeU1pbikKCiNkZWZpbmUg
QXRpbWVQdWxsT3V0SG91ckluRGF5KGF0aW1lKSAoQXRpbWVUb0hvdXIoYXRpbWUpJWNBdGltZTFE
YXlCeUhvdXIpCgojZGVmaW5lIGNBdGltZU5vVGltZSAoMExMKQoKI2RlZmluZSBjQXRpbWVTdW5k
YXkgMAojZGVmaW5lIGNBdGltZU1vbmRheSAxCiNkZWZpbmUgY0F0aW1lVHVlc2RheSAyCiNkZWZp
bmUgY0F0aW1lV2VkbmVzZGF5IDMKI2RlZmluZSBjQXRpbWVUaHVyc2RheSA0CiNkZWZpbmUgY0F0
aW1lRnJpZGF5IDUKI2RlZmluZSBjQXRpbWVTYXR1cmRheSA2CgpleHRlcm4gaW5saW5lIEF0aW1l
CkF0aW1lQWRqdXN0VXBTZWMoQXRpbWUgdHgpCnsKICAgIHJldHVybiAoKEF0aW1lKSgoKCh0eCAr
ICgxMDAwMDAwTEwpIC0gMSkvKDEwMDAwMDBMTCkpKSooMTAwMDAwMExMKSkpOwp9CgpleHRlcm4g
aW5saW5lIEF0aW1lCkF0aW1lQWRqdXN0VXBNaW4oQXRpbWUgdHgpCnsKICAgIHJldHVybiAoKEF0
aW1lKSgoKCh0eCArICgoMTAwMDAwMExMKSAqICg2MExMKSkgLSAxKS8oKDEwMDAwMDBMTCkgKiAo
NjBMTCkpKSkqKCgxMDAwMDAwTEwpICogKDYwTEwpKSkpOwp9CgpleHRlcm4gaW5saW5lIEF0aW1l
CkF0aW1lQWRqdXN0VXBIb3VyKEF0aW1lIHR4KQp7CiAgICByZXR1cm4gKChBdGltZSkoKCgodHgg
KyAoKDEwMDAwMDBMTCkgKiAoMzYwMExMKSkgLSAxKS8oKDEwMDAwMDBMTCkgKiAoMzYwMExMKSkp
KSooKDEwMDAwMDBMTCkgKiAoMzYwMExMKSkpKTsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGlt
ZUFkanVzdFVwRGF5KEF0aW1lIHR4KQp7CiAgICByZXR1cm4gKChBdGltZSkoKCgoQXRpbWUpKCh0
eCArICgoODY0MDBMTCkqKDEwMDAwMDBMTCkpIC0gMSkvKCg4NjQwMExMKSooMTAwMDAwMExMKSkp
KSkqKCg4NjQwMExMKSooMTAwMDAwMExMKSkpKTsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGlt
ZUFkanVzdERvd25TZWMoQXRpbWUgdHgpCnsKICAgIHJldHVybiAoKEF0aW1lKSgoKCh0eCkvKDEw
MDAwMDBMTCkpKSooMTAwMDAwMExMKSkpOwp9CgpleHRlcm4gaW5saW5lIEF0aW1lCkF0aW1lQWRq
dXN0RG93bk1pbihBdGltZSB0eCkKewogICAgcmV0dXJuICgoQXRpbWUpKCgoKHR4KS8oKDEwMDAw
MDBMTCkgKiAoNjBMTCkpKSkqKCgxMDAwMDAwTEwpICogKDYwTEwpKSkpOwp9CgpleHRlcm4gaW5s
aW5lIEF0aW1lCkF0aW1lQWRqdXN0RG93bkhvdXIoQXRpbWUgdHgpCnsKICAgIHJldHVybiAoKEF0
aW1lKSgoKCh0eCkvKCgxMDAwMDAwTEwpICogKDM2MDBMTCkpKSkqKCgxMDAwMDAwTEwpICogKDM2
MDBMTCkpKSk7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVBZGp1c3REb3duRGF5KEF0aW1l
IHR4KQp7CiAgICByZXR1cm4gKChBdGltZSkoKCgoQXRpbWUpKCh0eCkvKCg4NjQwMExMKSooMTAw
MDAwMExMKSkpKSkqKCg4NjQwMExMKSooMTAwMDAwMExMKSkpKTsKfQoKdHlwZWRlZiBzdHJ1Y3Qg
QXRpbWVZbWQgewogICAgczMyIHllYXI7CiAgICBzMTYgbW9udGg7CiAgICBzMTYgZGF5Owp9IEF0
aW1lWW1kOwoKdHlwZWRlZiBzdHJ1Y3QgQXRpbWVQcm9wZXJ0eSB7CiAgICB1MzIgYmVmb3JlUmVm
b3JtRGF5OwogICAgQXRpbWVZbWQgYmVmb3JlUmVmb3JtRGF0ZTsKICAgIHUzMiBiZWZvcmVSZWZv
cm1ZZGF5OwogICAgdTMyIGFmdGVyUmVmb3JtRGF5OwogICAgQXRpbWVZbWQgYWZ0ZXJSZWZvcm1E
YXRlOwogICAgdTMyIGFmdGVyUmVmb3JtWWRheTsKICAgIHUzMiBjb3JyZWN0WWRheTsKICAgIHUz
MiBlcmFEYXk7CiAgICBzMzIgYmlhczA7CiAgICB1MzIgd2RheTozLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzUHJvbGVwdGljOjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXNMZWFwWWVhcjoxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoyNzsK
fSBBdGltZVByb3BlcnR5OwoKZXh0ZXJuIGNvbnN0IEF0aW1lUHJvcGVydHkqIGdBdGltZVByb3Bl
cnR5IGFzbSgiX18iICJnQXRpbWVQcm9wZXJ0eSIpOwoKdHlwZWRlZiBzdHJ1Y3QgQXRpbWVEYXRl
VGJsRW50cnkgewogICAgczggbW9udGg7CiAgICBzOCBkYXlJbk1vbnRoOwp9IEF0aW1lRGF0ZVRi
bEVudHJ5OwoKCgoKI2RlZmluZSBjQXRpbWVOb3JtYWxZZWFyIDM2NQojZGVmaW5lIGNBdGltZUxl
YXBZZWFyIDM2NgoKI2RlZmluZSBjQXRpbWU0WWVhcnNCbG9jayAxNDYxCiNkZWZpbmUgY0F0aW1l
MXN0WWVhckluQmxvY2sgMzY2CiNkZWZpbmUgY0F0aW1lMm5kWWVhckluQmxvY2sgNzMxCiNkZWZp
bmUgY0F0aW1lM3JkWWVhckluQmxvY2sgMTA5NgoKCgoKZXh0ZXJuIGNvbnN0IHMxNiBnQXRpbWVE
YXlzT2ZOb3JtYWxZZWFyQnlNb250aFsxM10gYXNtKCJfXyIgImdBdGltZURheXNPZk5vcm1hbFll
YXJCeU1vbnRoIik7CmV4dGVybiBjb25zdCBzMTYgZ0F0aW1lRGF5c09mTGVhcFllYXJCeU1vbnRo
WzEzXSBhc20oIl9fIiAiZ0F0aW1lRGF5c09mTGVhcFllYXJCeU1vbnRoIik7CmV4dGVybiBjb25z
dCBBdGltZURhdGVUYmxFbnRyeSBnQXRpbWU0WWVhcnNCbGtUb0RhdGVbMTQ2MV0gYXNtKCJfXyIg
ImdBdGltZTRZZWFyc0Jsa1RvRGF0ZSIpOwpleHRlcm4gY29uc3QgczE2IGdBdGltZTRZZWFyc0Js
a1RvRGF5SW5ZZWFyWzQ4XVszMV0gYXNtKCJfXyIgImdBdGltZTRZZWFyc0Jsa1RvRGF5SW5ZZWFy
Iik7CmV4dGVybiBjb25zdCBBdGltZURhdGVUYmxFbnRyeSBnQXRpbWVOb3JtYWxZZWFyVG9EYXRl
WzM2NV0gYXNtKCJfXyIgImdBdGltZU5vcm1hbFllYXJUb0RhdGUiKTsKZXh0ZXJuIGNvbnN0IHMx
NiBnQXRpbWVOb3JtYWxZZWFyQmxrVG9EYXlJblllYXJbMTJdWzMxXSBhc20oIl9fIiAiZ0F0aW1l
Tm9ybWFsWWVhckJsa1RvRGF5SW5ZZWFyIik7CmV4dGVybiBjb25zdCBBdGltZURhdGVUYmxFbnRy
eSBnQXRpbWVMZWFwWWVhclRvRGF0ZVszNjZdIGFzbSgiX18iICJnQXRpbWVMZWFwWWVhclRvRGF0
ZSIpOwpleHRlcm4gY29uc3QgczE2IGdBdGltZUxlYXBZZWFyQmxrVG9EYXlJblllYXJbMTJdWzMx
XSBhc20oIl9fIiAiZ0F0aW1lTGVhcFllYXJCbGtUb0RheUluWWVhciIpOwoKI2RlZmluZSBjQXRp
bWVXZWVrTmFtZU51bSA3CmV4dGVybiBjb25zdCBDaHIgZ0F0aW1lRW5nbGlzaFdlZWtkYXlOYW1l
WzddWzRdIGFzbSgiX18iICJnQXRpbWVFbmdsaXNoV2Vla2RheU5hbWUiKTsKZXh0ZXJuIGNvbnN0
IExlbiBnQXRpbWVFbmdsaXNoV2Vla2RheU5hbWVMZW5bN10gYXNtKCJfXyIgImdBdGltZUVuZ2xp
c2hXZWVrZGF5TmFtZUxlbiIpOwpleHRlcm4gY29uc3QgQ2hyIGdBdGltZUVuZ2xpc2hXZWVrZGF5
RnVsbE5hbWVbN11bMTBdIGFzbSgiX18iICJnQXRpbWVFbmdsaXNoV2Vla2RheUZ1bGxOYW1lIik7
CmV4dGVybiBjb25zdCBMZW4gZ0F0aW1lRW5nbGlzaFdlZWtkYXlGdWxsTmFtZUxlbls3XSBhc20o
Il9fIiAiZ0F0aW1lRW5nbGlzaFdlZWtkYXlGdWxsTmFtZUxlbiIpOwpleHRlcm4gY29uc3QgQ2hy
IGdBdGltZUphcGFuZXNlV2Vla2RheU5hbWVbN11bM10gYXNtKCJfXyIgImdBdGltZUphcGFuZXNl
V2Vla2RheU5hbWUiKTsKZXh0ZXJuIGNvbnN0IExlbiBnQXRpbWVKYXBhbmVzZVdlZWtkYXlOYW1l
TGVuWzddIGFzbSgiX18iICJnQXRpbWVKYXBhbmVzZVdlZWtkYXlOYW1lTGVuIik7CmV4dGVybiBj
b25zdCBDaHIgZ0F0aW1lSmFwYW5lc2VXZWVrZGF5RnVsbE5hbWVbN11bN10gYXNtKCJfXyIgImdB
dGltZUphcGFuZXNlV2Vla2RheUZ1bGxOYW1lIik7CmV4dGVybiBjb25zdCBMZW4gZ0F0aW1lSmFw
YW5lc2VXZWVrZGF5RnVsbE5hbWVMZW5bN10gYXNtKCJfXyIgImdBdGltZUphcGFuZXNlV2Vla2Rh
eUZ1bGxOYW1lTGVuIik7CgojZGVmaW5lIGNBdGltZU1vbnRoTmFtZU51bSAxMgpleHRlcm4gY29u
c3QgQ2hyIGdBdGltZUVuZ2xpc2hNb250aE5hbWVbMTJdWzRdIGFzbSgiX18iICJnQXRpbWVFbmds
aXNoTW9udGhOYW1lIik7CmV4dGVybiBjb25zdCBMZW4gZ0F0aW1lRW5nbGlzaE1vbnRoTmFtZUxl
blsxMl0gYXNtKCJfXyIgImdBdGltZUVuZ2xpc2hNb250aE5hbWVMZW4iKTsKZXh0ZXJuIGNvbnN0
IENociBnQXRpbWVFbmdsaXNoTW9udGhGdWxsTmFtZVsxMl1bMTBdIGFzbSgiX18iICJnQXRpbWVF
bmdsaXNoTW9udGhGdWxsTmFtZSIpOwpleHRlcm4gY29uc3QgTGVuIGdBdGltZUVuZ2xpc2hNb250
aEZ1bGxOYW1lTGVuWzEyXSBhc20oIl9fIiAiZ0F0aW1lRW5nbGlzaE1vbnRoRnVsbE5hbWVMZW4i
KTsKZXh0ZXJuIGNvbnN0IENociBnQXRpbWVKYXBhbmVzZU1vbnRoTmFtZVsxMl1bN10gYXNtKCJf
XyIgImdBdGltZUphcGFuZXNlTW9udGhOYW1lIik7CmV4dGVybiBjb25zdCBMZW4gZ0F0aW1lSmFw
YW5lc2VNb250aE5hbWVMZW5bMTJdIGFzbSgiX18iICJnQXRpbWVKYXBhbmVzZU1vbnRoTmFtZUxl
biIpOwpleHRlcm4gY29uc3QgQ2hyIGdBdGltZUphcGFuZXNlTW9udGhGdWxsTmFtZVsxMl1bN10g
YXNtKCJfXyIgImdBdGltZUphcGFuZXNlTW9udGhGdWxsTmFtZSIpOwpleHRlcm4gY29uc3QgTGVu
IGdBdGltZUphcGFuZXNlTW9udGhGdWxsTmFtZUxlblsxMl0gYXNtKCJfXyIgImdBdGltZUphcGFu
ZXNlTW9udGhGdWxsTmFtZUxlbiIpOwoKCgoKCnR5cGVkZWYgc3RydWN0IEF0aW1lSmFwYW5lc2VF
cmEgewogICAgQXRpbWUgYmVnaW47CiAgICBBdGltZSBlbmQ7CiAgICBBdGltZSBlbmRPZjFzdFll
YXI7CiAgICBBdGltZSB0b3BPZkxhc3RZZWFyOwogICAgczMyIHllYXJOb09mMXN0WWVhcjsKICAg
IHMzMiBsYXN0WWVhcjsKICAgIENociBuYW1lWzEyXTsKICAgIENociBlbmdsaXNoTmFtZVsxNl07
CiAgICBzOCBuYW1lTGVuOwogICAgczggZW5nbGlzaE5hbWVMZW47CiAgICBBcmVhIHJzdnNbNF07
Cn0gQXRpbWVKYXBhbmVzZUVyYTsKCiNkZWZpbmUgY0F0aW1lSmFwYW5lc2VFcmFUYWJsZU51bSA4
CmV4dGVybiBjb25zdCBBdGltZUphcGFuZXNlRXJhIGdBdGltZUphcGFuZXNlRXJhVGFibGVbOF0g
YXNtKCJfXyIgImdBdGltZUphcGFuZXNlRXJhVGFibGUiKTsKCmV4dGVybiBpbmxpbmUgY29uc3Qg
QXRpbWVKYXBhbmVzZUVyYSoKQXRpbWVHZXRKYXBhbmVzZUVyYUluZGV4KEF0aW1lIHR4KQp7CiAg
ICBpbnQgaTsKICAgIGZvcihpID0gMDsgKGkgPCA4KSAmJiAoZ0F0aW1lSmFwYW5lc2VFcmFUYWJs
ZVtpXS5iZWdpbiA+IDApIDsgaSsrKSB7CiAgICAgICAgaWYoZ0F0aW1lSmFwYW5lc2VFcmFUYWJs
ZVtpXS5iZWdpbiA8PSB0eCkgewogICAgICAgICAgICBpZigoZ0F0aW1lSmFwYW5lc2VFcmFUYWJs
ZVtpXS5lbmQgPT0gMCkgfHwgKHR4IDw9IGdBdGltZUphcGFuZXNlRXJhVGFibGVbaV0uZW5kKSkg
ewogICAgICAgICAgICAgICAgcmV0dXJuIGdBdGltZUphcGFuZXNlRXJhVGFibGUgKyBpOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChjb25zdCBBdGltZUphcGFuZXNl
RXJhKikoKHZvaWQgKikwKTsKfQojIDI3NCAiYXhpcy9hdGltZS5oIgojZGVmaW5lIGNBdGltZVRt
WWVhckZhY3RvciAxOTAwCiNkZWZpbmUgY0F0aW1lSW52YWxpZFRtWWVhciAoLTE5MDApCgojZGVm
aW5lIGNBdGltZVllYXJOb01pbiAoLTQ3MTIpCgoKCgpleHRlcm4gY29uc3Qgc3RydWN0IHRtIGdB
dGltZU5vbmVJbml0aWFsaXplZFRtIGFzbSgiX18iICJnQXRpbWVOb25lSW5pdGlhbGl6ZWRUbSIp
OwoKZXh0ZXJuIGlubGluZSBpbnQKQXRpbWVUbVllYXJUb1llYXJObyhpbnQgdG1ZZWFyKQp7CiAg
ICBpbnQgeWVhck5vOwogICAgeWVhck5vID0gdG1ZZWFyICsgMTkwMDsKICAgIGlmKHllYXJObyA8
PSAwKQogICAgICAgIHllYXJObyArKzsKICAgIHJldHVybiB5ZWFyTm87Cn0KCmV4dGVybiBpbmxp
bmUgaW50CkF0aW1lWWVhck5vVG9UbVllYXIoaW50IHllYXJObykKewogICAgaW50IHRtWWVhcjsK
CiAgICBpZih5ZWFyTm8gPD0gMCkgewogICAgICAgIHRtWWVhciA9IHllYXJObyAtICgxOTAwICsg
MSk7CiAgICB9IGVsc2UgewogICAgICAgIHRtWWVhciA9IHllYXJObyAtIDE5MDA7CiAgICB9CiAg
ICByZXR1cm4gdG1ZZWFyOwp9CiMgMzIwICJheGlzL2F0aW1lLmgiCiNkZWZpbmUgY0F0aW1lVG1E
c3RJbnZhbGlkRGF5bGlnaHRTYXZpbmdPbkdNVCAoLTIpCiNkZWZpbmUgY0F0aW1lVG1Ec3RJbnZh
bGlkRGF5bGlnaHRTYXZpbmdPbkxvY2FsICgtMSkKI2RlZmluZSBjQXRpbWVUbURzdE5vRGF5bGln
aHRTYXZpbmdPbkxvY2FsIDAKI2RlZmluZSBjQXRpbWVUbURzdERheWxpZ2h0U2F2aW5nT25Mb2Nh
bCAxCiNkZWZpbmUgY0F0aW1lVG1Ec3REYXlsaWdodFNhdmluZ09uR01UIDIKCgoKCgoKZXh0ZXJu
IGlubGluZSBCb29sCkF0aW1lSXNMZWFwWWVhcihpbnQgeWVhck5vKQp7CiAgICBpZih5ZWFyTm8g
PD0gZ0F0aW1lUHJvcGVydHktPmJlZm9yZVJlZm9ybURhdGUueWVhcikgewogICAgICAgIGlmKCh5
ZWFyTm8gJSA0KSA9PSAwKQogICAgICAgICAgICByZXR1cm4gMTsKICAgIH0gZWxzZSBpZigoKHll
YXJObyAlIDQpID09IDApICYmCiAgICAgICAgICAgICAgKCgoeWVhck5vICUgMTAwKSAhPSAwKSB8
fAogICAgICAgICAgICAgICAoKHllYXJObyAlIDQwMCkgPT0gMCkpKSB7CiAgICAgICAgcmV0dXJu
IDE7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKI2RlZmluZSBjQXRpbWVBdG1BcnJheU51bSAyNAp0
eXBlZGVmIHVuaW9uIEF0bSB7CiAgICBzdHJ1Y3QgewogICAgICAgIHUzMiBpc0luaXQgOjEsCiAg
ICAgICAgICAgICAgICBpc0xvY2FsOjEsCiAgICAgICAgICAgICAgICBpc1BNOjEsCiAgICAgICAg
ICAgICAgICA6NSwKICAgICAgICAgICAgICAgIHNldFllYXI6MSwKICAgICAgICAgICAgICAgIHNl
dE1vbnRoOjEsCiAgICAgICAgICAgICAgICBzZXRNRGF5OjEsCiAgICAgICAgICAgICAgICBzZXRI
b3VyOjEsCiAgICAgICAgICAgICAgICBzZXRNaW46MSwKICAgICAgICAgICAgICAgIHNldFNlYzox
LAogICAgICAgICAgICAgICAgc2V0TWljcm86MSwKICAgICAgICAgICAgICAgIHNldERpZmZ3ZXN0
OjEsCiAgICAgICAgICAgICAgICBzZXRZRGF5OjEsCiAgICAgICAgICAgICAgICBzZXRXRGF5OjEs
CiAgICAgICAgICAgICAgICBzZXRKRXJhTmFtZToxLAogICAgICAgICAgICAgICAgc2V0SkVyYVll
YXI6MSwKICAgICAgICAgICAgICAgIHNldE1XZWVrOjEsCiAgICAgICAgICAgICAgICBzZXRZV2Vl
azoxLAogICAgICAgICAgICAgICAgc2V0WVdPcmQ6MSwKICAgICAgICAgICAgICAgIHNldE1XT3Jk
OjEsCiAgICAgICAgICAgICAgICA6ODsKCgoKICAgICAgICBzMzIgeWVhcjsKICAgICAgICBzMzIg
bW9udGg7CiAgICAgICAgczMyIG1kYXk7CiAgICAgICAgczMyIGhvdXI7CiAgICAgICAgczMyIG1p
bjsKICAgICAgICBzMzIgc2VjOwogICAgICAgIHMzMiBtaWNybzsKICAgICAgICBzMzIgZGlmZndl
c3Q7CiAgICAgICAgczMyIHlkYXk7CiAgICAgICAgczMyIHdkYXk7CiAgICAgICAgczMyIGpFcmFO
YW1lOwogICAgICAgIHMzMiBqRXJhWWVhcjsKICAgICAgICBzMzIgbXdlZWs7CiAgICAgICAgczMy
IHl3ZWVrOwogICAgICAgIHMzMiB5d29yZDsKICAgICAgICBzMzIgbXdvcmQ7CiAgICB9IHM7CiAg
ICBzMzIgYVsyNF07Cn0gQXRtOwoKI2RlZmluZSBjQXRpbWVBdG1TZXRZZWFyIDB4MDAwMDAwMDQK
I2RlZmluZSBjQXRpbWVBdG1TZXRNb250aCAweDAwMDAwMDA4CiNkZWZpbmUgY0F0aW1lQXRtU2V0
TURheSAweDAwMDAwMDEwCiNkZWZpbmUgY0F0aW1lQXRtU2V0SG91ciAweDAwMDAwMDIwCiNkZWZp
bmUgY0F0aW1lQXRtU2V0TWluIDB4MDAwMDAwNDAKI2RlZmluZSBjQXRpbWVBdG1TZXRTZWMgMHgw
MDAwMDA4MAojZGVmaW5lIGNBdGltZUF0bVNldE1pY3JvIDB4MDAwMDAxMDAKI2RlZmluZSBjQXRp
bWVBdG1TZXREaWZmd2VzdCAweDAwMDAwMjAwCiNkZWZpbmUgY0F0aW1lQXRtU2V0WURheSAweDAw
MDAwNDAwCiNkZWZpbmUgY0F0aW1lQXRtU2V0V0RheSAweDAwMDAwODAwCiNkZWZpbmUgY0F0aW1l
QXRtU2V0SkVyYU5hbWUgMHgwMDAwMTAwMAojZGVmaW5lIGNBdGltZUF0bVNldEpFcmFZZWFyIDB4
MDAwMDIwMDAKI2RlZmluZSBjQXRpbWVBdG1TZXRNV2VlayAweDAwMDA0MDAwCiNkZWZpbmUgY0F0
aW1lQXRtU2V0WVdlZWsgMHgwMDAwODAwMAoKI2RlZmluZSBjQXRpbWVHbG9iYWxOdW0gMTYKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgbG9uZyBsb25nIGFyZWFzWzE2XTsKfSBBdGltZUdsb2JhbEFyZWE7
CgoKCgpleHRlcm4gdm9pZCBBdGltZUluaXQodm9pZCkgYXNtKCJfXyIgIkF0aW1lSW5pdCIpOwpl
eHRlcm4gQXRpbWUgQXRpbWVHZXQodm9pZCkgYXNtKCJfXyIgIkF0aW1lR2V0Iik7CmV4dGVybiBB
dGltZSBBdGltZUdldFRpbWVab25lKHZvaWQpIGFzbSgiX18iICJBdGltZUdldFRpbWVab25lIik7
CmV4dGVybiB2b2lkIEF0aW1lU2V0R2xvYmFsKEF0aW1lR2xvYmFsQXJlYSogZ2xvYmFsQXJlYSkg
YXNtKCJfXyIgIkF0aW1lU2V0R2xvYmFsIik7CmV4dGVybiBBdGltZSBBdGltZUFkanVzdCgpIGFz
bSgiX18iICJBdGltZUFkanVzdCIpOwoKdHlwZWRlZiBzNjQgQXRpbWVDbG9jazsKZXh0ZXJuIEF0
aW1lQ2xvY2sgQXRpbWVHZXRDcHVDbG9ja0NvdW50ZXIodm9pZCkgYXNtKCJfXyIgIkF0aW1lR2V0
Q3B1Q2xvY2tDb3VudGVyIik7CmV4dGVybiBBdGltZUNsb2NrIEF0aW1lU2FtcGxpbmdDbG9jayhB
dGltZUNsb2NrKiBiaWFzKSBhc20oIl9fIiAiQXRpbWVTYW1wbGluZ0Nsb2NrIik7CmV4dGVybiBB
dGltZSBBdGltZUZyb21DcHVDbG9ja0NvdW50ZXIoQXRpbWVDbG9jayBjbGspIGFzbSgiX18iICJB
dGltZUZyb21DcHVDbG9ja0NvdW50ZXIiKTsKCmV4dGVybiBpbnQgQXRpbWVUb0F0bShBdGltZSBh
dCwgQXRpbWUgdGltZVpvbmUsIEF0bSogYXRtUCkgYXNtKCJfXyIgIkF0aW1lVG9BdG0iKTsKZXh0
ZXJuIEF0aW1lIEF0aW1lRnJvbUF0bShBdG0qIGF0bVApIGFzbSgiX18iICJBdGltZUZyb21BdG0i
KTsKZXh0ZXJuIGludCBBdGltZU5vcm1hbGl6ZUF0bShBdG0qIGF0bVApIGFzbSgiX18iICJBdGlt
ZU5vcm1hbGl6ZUF0bSIpOwoKZXh0ZXJuIGludCBBdGltZUF0bVRvU3RyKENociogc3RyLCBMZW4g
c3RyTGVuLCBjb25zdCBDaHIqIGZvcm1hdCwgQXRtKiBhdG1QKSBhc20oIl9fIiAiQXRpbWVBdG1U
b1N0ciIpOwpleHRlcm4gaW50IEF0aW1lQXRtRnJvbVN0cihjb25zdCBDaHIqIHN0ciwgY29uc3Qg
Q2hyKiBmb3JtYXQsIEF0bSogYXRtUCkgYXNtKCJfXyIgIkF0aW1lQXRtRnJvbVN0ciIpOwoKZXh0
ZXJuIGludCBBdGltZUF0bVRvVG0oQXRtKiBhdG1QLCBzdHJ1Y3QgdG0qIHRtUCwgczMyKiBtaWNy
b1NlY1ApIGFzbSgiX18iICJBdGltZUF0bVRvVG0iKTsKZXh0ZXJuIGludCBBdGltZUF0bUZyb21U
bShBdG0qIGF0bVAsIGNvbnN0IHN0cnVjdCB0bSogdG1QLCBzMzIgbWljcm9TZWMpIGFzbSgiX18i
ICJBdGltZUF0bUZyb21UbSIpOwoKZXh0ZXJuIEF0aW1lIEF0aW1lRnJvbVN0cihjb25zdCBDaHIq
IHN0ciwgY29uc3QgQ2hyKiBmb3JtYXQsIEF0aW1lIHRpbWVab25lKSBhc20oIl9fIiAiQXRpbWVG
cm9tU3RyIik7CmV4dGVybiBpbnQgQXRpbWVUb1N0cihDaHIqIHN0ciwgTGVuIHN0ckxlbiwgY29u
c3QgQ2hyKiBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdGltZSBhdCwg
QXRpbWUgdGltZVpvbmUpIGFzbSgiX18iICJBdGltZVRvU3RyIik7CgpleHRlcm4gQXRpbWUgQXRp
bWVHZXRMb2NhbCh2b2lkKSBhc20oIl9fIiAiQXRpbWVHZXRMb2NhbCIpOwpleHRlcm4gdm9pZCBB
dGltZU5vcm1hbGl6ZVRtKHN0cnVjdCB0bSogdG0pIGFzbSgiX18iICJBdGltZU5vcm1hbGl6ZVRt
Iik7CgpleHRlcm4gdm9pZCBBdGltZVRvVG0oQXRpbWUgYXRpbWUsIHN0cnVjdCB0bSogdG1QLCB1
MzIqIG1pY3JvU2VjUCkgYXNtKCJfXyIgIkF0aW1lVG9UbSIpOwpleHRlcm4gdm9pZCBBdGltZVRv
TG9jYWxUbShBdGltZSBhdGltZSwgc3RydWN0IHRtKiB0bVAsIHUzMiogbWljcm9TZWNQKSBhc20o
Il9fIiAiQXRpbWVUb0xvY2FsVG0iKTsKZXh0ZXJuIEF0aW1lIEF0aW1lRnJvbVRtKHN0cnVjdCB0
bSogdG0sIHUzMiBtaWNyb1NlYykgYXNtKCJfXyIgIkF0aW1lRnJvbVRtIik7CmV4dGVybiBBdGlt
ZSBBdGltZUZyb21Mb2NhbFRtKHN0cnVjdCB0bSogdG0sIHUzMiBtaWNyb1NlYykgYXNtKCJfXyIg
IkF0aW1lRnJvbUxvY2FsVG0iKTsKZXh0ZXJuIGludCBBdGltZVN0clRvVG0oY29uc3QgQ2hyKiBz
dHIsIGNvbnN0IENociogZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgdG0qIHRtUCwgdTMyKiBtaWNyb1NlY1ApIGFzbSgiX18iICJBdGltZVN0clRvVG0iKTsK
ZXh0ZXJuIGludCBBdGltZVRtVG9TdHIoQ2hyKiBzdHIsIExlbiBzdHJMZW4sIGNvbnN0IENociog
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdG0q
IHRtLCB1MzIgbWljcm9TZWMpIGFzbSgiX18iICJBdGltZVRtVG9TdHIiKTsKCgoKZXh0ZXJuIGNv
bnN0IEF0aW1lIGdBdGltZVRpbWVab25lIGFzbSgiX18iICJnQXRpbWVUaW1lWm9uZSIpOwoKCgoK
CmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVUb0xvY2FsVmFsdWUoQXRpbWUgb3JpZykKewogICAg
cmV0dXJuIG9yaWcgLSBnQXRpbWVUaW1lWm9uZTsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGlt
ZUZyb21Mb2NhbFZhbHVlKEF0aW1lIGxvY2FsVmFsKQp7CiAgICByZXR1cm4gbG9jYWxWYWwgKyBn
QXRpbWVUaW1lWm9uZTsKfQojIDQ4OCAiYXhpcy9hdGltZS5oIgpleHRlcm4gaW5saW5lIHZvaWQK
QXRpbWVCdWlsZFRtKHN0cnVjdCB0bSogdG1QLCBzMzIgeWVhck5vLCBzMzIgbW9udGgsIHMzMiBt
b250aEluRGF5LAogICAgICAgICAgICAgczMyIGhvdXIsIHMzMiBtaW4sIHMzMiBzZWMsIGludCBp
c0xvY2FsKQp7CiAgICBtZW1jcHkodG1QLCAmZ0F0aW1lTm9uZUluaXRpYWxpemVkVG0sIHNpemVv
ZihzdHJ1Y3QgdG0pKTsKICAgIHRtUC0+dG1feWVhciA9IEF0aW1lWWVhck5vVG9UbVllYXIoeWVh
ck5vKTsKICAgIHRtUC0+dG1fbW9uID0gbW9udGggLSAxOwogICAgdG1QLT50bV9tZGF5ID0gbW9u
dGhJbkRheTsKICAgIHRtUC0+dG1faG91ciA9IGhvdXI7CiAgICB0bVAtPnRtX21pbiA9IG1pbjsK
ICAgIHRtUC0+dG1fc2VjID0gc2VjOwogICAgaWYoaXNMb2NhbCkKICAgICAgICB0bVAtPnRtX2lz
ZHN0ID0gKC0xKTsKICAgIGVsc2UKICAgICAgICB0bVAtPnRtX2lzZHN0ID0gKC0yKTsKICAgIEF0
aW1lTm9ybWFsaXplVG0odG1QKTsKfQoKI2RlZmluZSBjQXRpbWVBdG1JbGxWYWwgKC0yMTQ3NDgz
NjQ3KQoKCgoKCmV4dGVybiBpbmxpbmUgdm9pZApBdGltZUF0bUluaXQoQXRtKiBhdG1QLCBCb29s
IGlzTG9jYWxUaW1lKQp7CiAgICBhdG1QLT5hWzBdID0gMDsKICAgIGF0bVAtPmFbMV0gPSAwOwog
ICAgYXRtUC0+cy5pc0luaXQgPSAxOwogICAgYXRtUC0+cy5pc0xvY2FsID0gaXNMb2NhbFRpbWUg
PyAxIDogMDsKICAgIGF0bVAtPnMuZGlmZndlc3QgPSAoKGdBdGltZVRpbWVab25lKS8oMTAwMDAw
MExMKSk7CiAgICBhdG1QLT5zLnNldERpZmZ3ZXN0ID0gMTsKfQoKZXh0ZXJuIGlubGluZSB2b2lk
CkF0aW1lQXRtU2V0WWVhcihBdG0qIGF0bVAsIHMzMiB5ZWFyKQp7CiAgICBhdG1QLT5zLnllYXIg
PSB5ZWFyOwogICAgYXRtUC0+cy5zZXRZZWFyID0gMTsKfQoKZXh0ZXJuIGlubGluZSBzMzIKQXRp
bWVBdG1HZXRZZWFyKEF0bSogYXRtUCkKewogICAgaWYoYXRtUC0+cy5zZXRZZWFyKQogICAgICAg
IHJldHVybiBhdG1QLT5zLnllYXI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0
Nyk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApBdGltZUF0bVNldE1vbnRoKEF0bSogYXRtUCwgczMy
IG1vbnRoKQp7CiAgICBhdG1QLT5zLm1vbnRoID0gbW9udGg7CiAgICBhdG1QLT5zLnNldFlEYXkg
PSAwOwogICAgYXRtUC0+cy5zZXRZV2VlayA9IDA7CiAgICBhdG1QLT5zLnNldE1vbnRoID0gMTsK
fQoKZXh0ZXJuIGlubGluZSBzMzIKQXRpbWVBdG1HZXRNb250aChBdG0qIGF0bVApCnsKICAgIGlm
KGF0bVAtPnMuc2V0TW9udGgpCiAgICAgICAgcmV0dXJuIGF0bVAtPnMubW9udGg7CiAgICBlbHNl
CiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0Nyk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApBdGlt
ZUF0bVNldE1EYXkoQXRtKiBhdG1QLCBzMzIgbWRheSkKewogICAgYXRtUC0+cy5tZGF5ID0gbWRh
eTsKICAgIGF0bVAtPnMuc2V0TURheSA9IDE7CiAgICBhdG1QLT5zLnNldFlEYXkgPSAwOwogICAg
YXRtUC0+cy5zZXRNV2VlayA9IDA7CiAgICBhdG1QLT5zLnNldFlXZWVrID0gMDsKICAgIGF0bVAt
PnMuc2V0WVdPcmQgPSAwOwogICAgYXRtUC0+cy5zZXRNV09yZCA9IDA7Cn0KCmV4dGVybiBpbmxp
bmUgczMyCkF0aW1lQXRtR2V0TURheShBdG0qIGF0bVApCnsKICAgIGlmKGF0bVAtPnMuc2V0TURh
eSkKICAgICAgICByZXR1cm4gYXRtUC0+cy5tZGF5OwogICAgZWxzZQogICAgICAgIHJldHVybiAo
LTIxNDc0ODM2NDcpOwp9CgpleHRlcm4gaW5saW5lIHZvaWQKQXRpbWVBdG1TZXRIb3VyKEF0bSog
YXRtUCwgczMyIGhvdXIpCnsKICAgIGF0bVAtPnMuaG91ciA9IGhvdXI7CiAgICBhdG1QLT5zLnNl
dEhvdXIgPSAxOwp9CgpleHRlcm4gaW5saW5lIHMzMgpBdGltZUF0bUdldEhvdXIoQXRtKiBhdG1Q
KQp7CiAgICBpZihhdG1QLT5zLnNldEhvdXIpCiAgICAgICAgcmV0dXJuIGF0bVAtPnMuaG91cjsK
ICAgIGVsc2UKICAgICAgICByZXR1cm4gKC0yMTQ3NDgzNjQ3KTsKfQoKZXh0ZXJuIGlubGluZSB2
b2lkCkF0aW1lQXRtU2V0TWluKEF0bSogYXRtUCwgczMyIG1pbikKewogICAgYXRtUC0+cy5taW4g
PSBtaW47CiAgICBhdG1QLT5zLnNldE1pbiA9IDE7Cn0KCmV4dGVybiBpbmxpbmUgczMyCkF0aW1l
QXRtR2V0TWluKEF0bSogYXRtUCkKewogICAgaWYoYXRtUC0+cy5zZXRNaW4pCiAgICAgICAgcmV0
dXJuIGF0bVAtPnMubWluOwogICAgZWxzZQogICAgICAgIHJldHVybiAoLTIxNDc0ODM2NDcpOwp9
CgpleHRlcm4gaW5saW5lIHZvaWQKQXRpbWVBdG1TZXRTZWMoQXRtKiBhdG1QLCBzMzIgc2VjKQp7
CiAgICBhdG1QLT5zLnNlYyA9IHNlYzsKICAgIGF0bVAtPnMuc2V0U2VjID0gMTsKfQoKZXh0ZXJu
IGlubGluZSBzMzIKQXRpbWVBdG1HZXRTZWMoQXRtKiBhdG1QKQp7CiAgICBpZihhdG1QLT5zLnNl
dFNlYykKICAgICAgICByZXR1cm4gYXRtUC0+cy5zZWM7CiAgICBlbHNlCiAgICAgICAgcmV0dXJu
ICgtMjE0NzQ4MzY0Nyk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApBdGltZUF0bVNldE1pY3JvKEF0
bSogYXRtUCwgczMyIG1pY3JvKQp7CiAgICBhdG1QLT5zLm1pY3JvID0gbWljcm87CiAgICBhdG1Q
LT5zLnNldE1pY3JvID0gMTsKfQoKZXh0ZXJuIGlubGluZSBzMzIKQXRpbWVBdG1HZXRNaWNybyhB
dG0qIGF0bVApCnsKICAgIGlmKGF0bVAtPnMuc2V0TWljcm8pCiAgICAgICAgcmV0dXJuIGF0bVAt
PnMubWljcm87CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0Nyk7Cn0KCmV4dGVy
biBpbmxpbmUgdm9pZApBdGltZUF0bVNldERpZmZ3ZXN0KEF0bSogYXRtUCwgczMyIGRpZmZ3ZXN0
KQp7CiAgICBhdG1QLT5zLmRpZmZ3ZXN0ID0gZGlmZndlc3Q7CiAgICBhdG1QLT5zLnNldERpZmZ3
ZXN0ID0gMTsKfQoKZXh0ZXJuIGlubGluZSBzMzIKQXRpbWVBdG1HZXREaWZmd2VzdChBdG0qIGF0
bVApCnsKICAgIGlmKGF0bVAtPnMuc2V0RGlmZndlc3QpCiAgICAgICAgcmV0dXJuIGF0bVAtPnMu
ZGlmZndlc3Q7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0Nyk7Cn0KCmV4dGVy
biBpbmxpbmUgdm9pZApBdGltZUF0bVNldFlEYXkoQXRtKiBhdG1QLCBzMzIgeWRheSkKewogICAg
YXRtUC0+cy55ZGF5ID0geWRheTsKICAgIGF0bVAtPnMuc2V0WURheSA9IDE7CiAgICBhdG1QLT5z
LnNldE1vbnRoID0gMDsKICAgIGF0bVAtPnMuc2V0TURheSA9IDA7CiAgICBhdG1QLT5zLnNldFdE
YXkgPSAwOwogICAgYXRtUC0+cy5zZXRNV2VlayA9IDA7CiAgICBhdG1QLT5zLnNldFlXZWVrID0g
MDsKICAgIGF0bVAtPnMuc2V0WVdPcmQgPSAwOwogICAgYXRtUC0+cy5zZXRNV09yZCA9IDA7Cn0K
CmV4dGVybiBpbmxpbmUgczMyCkF0aW1lQXRtR2V0WURheShBdG0qIGF0bVApCnsKICAgIGlmKGF0
bVAtPnMuc2V0WURheSkKICAgICAgICByZXR1cm4gYXRtUC0+cy55ZGF5OwogICAgZWxzZQogICAg
ICAgIHJldHVybiAoLTIxNDc0ODM2NDcpOwp9CgpleHRlcm4gaW5saW5lIHZvaWQKQXRpbWVBdG1T
ZXRXRGF5KEF0bSogYXRtUCwgczMyIHdkYXkpCnsKICAgIGF0bVAtPnMud2RheSA9IHdkYXk7CiAg
ICBhdG1QLT5zLnNldFdEYXkgPSAxOwogICAgYXRtUC0+cy5zZXRZRGF5ID0gMDsKICAgIGF0bVAt
PnMuc2V0TURheSA9IDA7Cn0KCmV4dGVybiBpbmxpbmUgczMyCkF0aW1lQXRtR2V0V0RheShBdG0q
IGF0bVApCnsKICAgIGlmKGF0bVAtPnMuc2V0V0RheSkKICAgICAgICByZXR1cm4gYXRtUC0+cy53
ZGF5OwogICAgZWxzZQogICAgICAgIHJldHVybiAoLTIxNDc0ODM2NDcpOwp9CgpleHRlcm4gaW5s
aW5lIHZvaWQKQXRpbWVBdG1TZXRKRXJhTmFtZShBdG0qIGF0bVAsIHMzMiBqRXJhTmFtZSkKewog
ICAgYXRtUC0+cy5qRXJhTmFtZSA9IGpFcmFOYW1lOwogICAgYXRtUC0+cy5zZXRKRXJhTmFtZSA9
IDE7Cn0KCmV4dGVybiBpbmxpbmUgczMyCkF0aW1lQXRtR2V0SkVyYU5hbWUoQXRtKiBhdG1QKQp7
CiAgICBpZihhdG1QLT5zLnNldEpFcmFOYW1lKQogICAgICAgIHJldHVybiBhdG1QLT5zLmpFcmFO
YW1lOwogICAgZWxzZQogICAgICAgIHJldHVybiAoLTIxNDc0ODM2NDcpOwp9CgpleHRlcm4gaW5s
aW5lIHZvaWQKQXRpbWVBdG1TZXRKRXJhWWVhcihBdG0qIGF0bVAsIHMzMiBqRXJhWWVhcikKewog
ICAgYXRtUC0+cy5qRXJhWWVhciA9IGpFcmFZZWFyOwogICAgYXRtUC0+cy5zZXRKRXJhWWVhciA9
IDE7Cn0KCmV4dGVybiBpbmxpbmUgczMyCkF0aW1lQXRtR2V0SkVyYVllYXIoQXRtKiBhdG1QKQp7
CiAgICBpZihhdG1QLT5zLnNldEpFcmFZZWFyKQogICAgICAgIHJldHVybiBhdG1QLT5zLmpFcmFZ
ZWFyOwogICAgZWxzZQogICAgICAgIHJldHVybiAoLTIxNDc0ODM2NDcpOwp9CgpleHRlcm4gaW5s
aW5lIHZvaWQKQXRpbWVBdG1TZXRNV2VlayhBdG0qIGF0bVAsIHMzMiBtd2VlaykKewogICAgYXRt
UC0+cy5td2VlayA9IG13ZWVrOwogICAgYXRtUC0+cy5zZXRNV2VlayA9IDE7CiAgICBhdG1QLT5z
LnNldE1XT3JkID0gMDsKfQoKZXh0ZXJuIGlubGluZSBzMzIKQXRpbWVBdG1HZXRNV2VlayhBdG0q
IGF0bVApCnsKICAgIGlmKGF0bVAtPnMuc2V0TVdlZWspCiAgICAgICAgcmV0dXJuIGF0bVAtPnMu
bXdlZWs7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0Nyk7Cn0KCmV4dGVybiBp
bmxpbmUgdm9pZApBdGltZUF0bVNldFlXZWVrKEF0bSogYXRtUCwgczMyIHl3ZWVrKQp7CiAgICBh
dG1QLT5zLnl3ZWVrID0geXdlZWs7CiAgICBhdG1QLT5zLnNldFlXZWVrID0gMTsKICAgIGF0bVAt
PnMuc2V0WVdPcmQgPSAwOwp9CgpleHRlcm4gaW5saW5lIHMzMgpBdGltZUF0bUdldFlXZWVrKEF0
bSogYXRtUCkKewogICAgaWYoYXRtUC0+cy5zZXRZV2VlaykKICAgICAgICByZXR1cm4gYXRtUC0+
cy55d2VlazsKICAgIGVsc2UKICAgICAgICByZXR1cm4gKC0yMTQ3NDgzNjQ3KTsKfQoKZXh0ZXJu
IGlubGluZSB2b2lkCkF0aW1lQXRtU2V0WVdPcmQoQXRtKiBhdG1QLCBzMzIgeXdvcmQpCnsKICAg
IGF0bVAtPnMueXdvcmQgPSB5d29yZDsKICAgIGF0bVAtPnMuc2V0WVdPcmQgPSAxOwogICAgYXRt
UC0+cy5zZXRZV2VlayA9IDA7Cn0KCmV4dGVybiBpbmxpbmUgczMyCkF0aW1lQXRtR2V0WVdPcmQo
QXRtKiBhdG1QKQp7CgogICAgaWYoYXRtUC0+cy5zZXRZV09yZCkKICAgICAgICByZXR1cm4gYXRt
UC0+cy55d29yZDsKICAgIGVsc2UKICAgICAgICByZXR1cm4gKC0yMTQ3NDgzNjQ3KTsKCn0KCmV4
dGVybiBpbmxpbmUgdm9pZApBdGltZUF0bVNldE1XT3JkKEF0bSogYXRtUCwgczMyIG13b3JkKQp7
CiAgICBhdG1QLT5zLm13b3JkID0gbXdvcmQ7CiAgICBhdG1QLT5zLnNldE1XT3JkID0gMTsKICAg
IGF0bVAtPnMuc2V0TVdlZWsgPSAwOwp9CgpleHRlcm4gaW5saW5lIHMzMgpBdGltZUF0bUdldE1X
T3JkKEF0bSogYXRtUCkKewoKICAgIGlmKGF0bVAtPnMuc2V0TVdPcmQpCiAgICAgICAgcmV0dXJu
IGF0bVAtPnMubXdvcmQ7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0Nyk7Cgp9
CgpleHRlcm4gaW5saW5lIHZvaWQKQXRpbWVBdG1TZXRZbWQoQXRtKiBhdG1QLCBzMzIgeWVhciwg
czMyIG1vbnRoLCBzMzIgbWRheSkKewogICAgYXRtUC0+cy5zZXRZZWFyID0gMTsKICAgIGF0bVAt
PnMuc2V0TW9udGggPSAxOwogICAgYXRtUC0+cy5zZXRNRGF5ID0gMTsKICAgIGF0bVAtPnMueWVh
ciA9IHllYXI7CiAgICBhdG1QLT5zLm1vbnRoID0gbW9udGg7CiAgICBhdG1QLT5zLm1kYXkgPSBt
ZGF5OwogICAgYXRtUC0+cy5zZXRZRGF5ID0gMDsKICAgIGF0bVAtPnMuc2V0WVdlZWsgPSAwOwog
ICAgYXRtUC0+cy5zZXRNV2VlayA9IDA7CiAgICBhdG1QLT5zLnNldFlXT3JkID0gMDsKICAgIGF0
bVAtPnMuc2V0TVdPcmQgPSAwOwp9CgpleHRlcm4gaW5saW5lIHZvaWQKQXRpbWVBdG1TZXRZV0Qo
QXRtKiBhdG1QLCBzMzIgeWVhciwgczMyIHl3ZWVrLCBzMzIgd2RheSkKewogICAgYXRtUC0+cy5z
ZXRZZWFyID0gMTsKICAgIGF0bVAtPnMuc2V0WVdlZWsgPSAxOwogICAgYXRtUC0+cy5zZXRXRGF5
ID0gMTsKICAgIGF0bVAtPnMueWVhciA9IHllYXI7CiAgICBhdG1QLT5zLnl3ZWVrID0geXdlZWs7
CiAgICBhdG1QLT5zLndkYXkgPSB3ZGF5OwogICAgYXRtUC0+cy5zZXRZRGF5ID0gMDsKICAgIGF0
bVAtPnMuc2V0TVdlZWsgPSAwOwogICAgYXRtUC0+cy5zZXRNb250aCA9IDA7CiAgICBhdG1QLT5z
LnNldFlXT3JkID0gMDsKICAgIGF0bVAtPnMuc2V0TVdPcmQgPSAwOwp9CgpleHRlcm4gaW5saW5l
IHZvaWQKQXRpbWVBdG1TZXRZTVdEKEF0bSogYXRtUCwgczMyIHllYXIsIHMzMiBtb250aCwgczMy
IG13ZWVrLCBzMzIgd2RheSkKewogICAgYXRtUC0+cy5zZXRZZWFyID0gMTsKICAgIGF0bVAtPnMu
c2V0TW9udGggPSAxOwogICAgYXRtUC0+cy5zZXRNV2VlayA9IDE7CiAgICBhdG1QLT5zLnNldFdE
YXkgPSAxOwogICAgYXRtUC0+cy55ZWFyID0geWVhcjsKICAgIGF0bVAtPnMubW9udGggPSBtb250
aDsKICAgIGF0bVAtPnMubXdlZWsgPSBtd2VlazsKICAgIGF0bVAtPnMud2RheSA9IHdkYXk7CiAg
ICBhdG1QLT5zLnNldFlEYXkgPSAwOwogICAgYXRtUC0+cy5zZXRZV2VlayA9IDA7CiAgICBhdG1Q
LT5zLnNldFlXT3JkID0gMDsKICAgIGF0bVAtPnMuc2V0TVdPcmQgPSAwOwp9CgpleHRlcm4gaW5s
aW5lIHZvaWQKQXRpbWVBdG1TZXRZTVdPKEF0bSogYXRtUCwgczMyIHllYXIsIHMzMiBtb250aCwg
czMyIG13b3JkLCBzMzIgd2RheSkKewogICAgYXRtUC0+cy5zZXRZZWFyID0gMTsKICAgIGF0bVAt
PnMuc2V0TW9udGggPSAxOwogICAgYXRtUC0+cy5zZXRNV09yZCA9IDE7CiAgICBhdG1QLT5zLnNl
dFdEYXkgPSAxOwogICAgYXRtUC0+cy55ZWFyID0geWVhcjsKICAgIGF0bVAtPnMubW9udGggPSBt
b250aDsKICAgIGF0bVAtPnMubXdvcmQgPSBtd29yZDsKICAgIGF0bVAtPnMud2RheSA9IHdkYXk7
CiAgICBhdG1QLT5zLnNldFlEYXkgPSAwOwogICAgYXRtUC0+cy5zZXRZV2VlayA9IDA7CiAgICBh
dG1QLT5zLnNldE1XZWVrID0gMDsKICAgIGF0bVAtPnMuc2V0WVdPcmQgPSAwOwp9CgpleHRlcm4g
aW5saW5lIHZvaWQKQXRpbWVBdG1TZXRIbXMoQXRtKiBhdG1QLCBzMzIgaG91ciwgczMyIG1pbiwg
czMyIHNlYykKewogICAgYXRtUC0+cy5zZXRIb3VyID0gMTsKICAgIGF0bVAtPnMuc2V0TWluID0g
MTsKICAgIGF0bVAtPnMuc2V0U2VjID0gMTsKICAgIGF0bVAtPnMuaG91ciA9IGhvdXI7CiAgICBh
dG1QLT5zLm1pbiA9IG1pbjsKICAgIGF0bVAtPnMuc2VjID0gc2VjOwp9CgpleHRlcm4gaW5saW5l
IGludApBdGltZUF0bVllYXJUb1llYXJObyhBdG0qIGF0bVApCnsKICAgIHMzMiB5ZWFyID0gYXRt
UC0+cy55ZWFyOwogICAgaWYoeWVhciA8IDApIHsKICAgICAgICB5ZWFyICsrOwogICAgfQogICAg
cmV0dXJuIHllYXI7Cn0KCmV4dGVybiBpbmxpbmUgaW50CkF0aW1lQXRtWWVhckZyb21ZZWFyTm8o
czMyIHllYXJObykKewogICAgaWYoeWVhck5vIDw9IDApIHsKICAgICAgICB5ZWFyTm8gLS07CiAg
ICB9CiAgICByZXR1cm4geWVhck5vOwp9CgpleHRlcm4gaW5saW5lIEF0aW1lCkF0aW1lQWRkWWVh
cihBdGltZSBhdCwgczMyIGRlbHRhKQp7CiAgICBBdG0gYXRteDsKCiAgICBBdGltZVRvQXRtKGF0
LCBnQXRpbWVUaW1lWm9uZSwgJmF0bXgpOwogICAgYXRteC5zLnllYXIgKz0gZGVsdGE7CiAgICBh
dG14LnMuc2V0SkVyYVllYXIgPSAwOwogICAgYXRteC5zLnNldEpFcmFOYW1lID0gMDsKICAgIGF0
bXgucy5zZXRZRGF5ID0gMDsKICAgIGF0bXgucy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0
WVdlZWsgPSAwOwogICAgYXRteC5zLnNldE1XT3JkID0gMDsKICAgIGF0bXgucy5zZXRZV09yZCA9
IDA7CiAgICBhdG14LnMuc2V0V0RheSA9IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7
CiAgICByZXR1cm4gYXQ7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVBZGRNb250aChBdGlt
ZSBhdCwgczMyIGRlbHRhKQp7CiAgICBBdG0gYXRteDsKCiAgICBBdGltZVRvQXRtKGF0LCBnQXRp
bWVUaW1lWm9uZSwgJmF0bXgpOwogICAgYXRteC5zLm1vbnRoICs9IGRlbHRhOwogICAgYXRteC5z
LnNldFlEYXkgPSAwOwogICAgYXRteC5zLnNldE1XZWVrID0gMDsKICAgIGF0bXgucy5zZXRZV2Vl
ayA9IDA7CiAgICBhdG14LnMuc2V0TVdPcmQgPSAwOwogICAgYXRteC5zLnNldFlXT3JkID0gMDsK
ICAgIGF0bXgucy5zZXRXRGF5ID0gMDsKICAgIGF0ID0gQXRpbWVGcm9tQXRtKCZhdG14KTsKICAg
IHJldHVybiBhdDsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGltZUFkZERheShBdGltZSBhdCwg
czMyIGRlbHRhKQp7CiAgICBhdCArPSAoKEF0aW1lKSgoZGVsdGEpKigoODY0MDBMTCkqKDEwMDAw
MDBMTCkpKSk7CiAgICByZXR1cm4gYXQ7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVBZGRN
ZGF5KEF0aW1lIGF0LCBzMzIgZGVsdGEpCnsKICAgIEF0bSBhdG14OwoKICAgIEF0aW1lVG9BdG0o
YXQsIGdBdGltZVRpbWVab25lLCAmYXRteCk7CiAgICBhdG14LnMubWRheSArPSBkZWx0YTsKICAg
IGlmKChkZWx0YSA8IDApICYmIChhdG14LnMubWRheSA9PSAwKSkgewogICAgICAgIGF0bXgucy5t
ZGF5IC09IDE7CiAgICB9IGVsc2UgaWYoKGRlbHRhID4gMCkgJiYgKGF0bXgucy5tZGF5ID09IDAp
KSB7CiAgICAgICAgYXRteC5zLm1kYXkgKz0gMTsKICAgIH0KICAgIGF0bXgucy5zZXRZRGF5ID0g
MDsKICAgIGF0bXgucy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0WVdlZWsgPSAwOwogICAg
YXRteC5zLnNldE1XT3JkID0gMDsKICAgIGF0bXgucy5zZXRZV09yZCA9IDA7CiAgICBhdG14LnMu
c2V0V0RheSA9IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7CiAgICByZXR1cm4gYXQ7
Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVBZGRXZWVrKEF0aW1lIGF0LCBzMzIgZGVsdGEp
CnsKICAgIEF0bSBhdG14OwoKICAgIEF0aW1lVG9BdG0oYXQsIGdBdGltZVRpbWVab25lLCAmYXRt
eCk7CiAgICBhdG14LnMueXdlZWsgKz0gZGVsdGE7CiAgICBhdG14LnMuc2V0WURheSA9IDA7CiAg
ICBhdG14LnMuc2V0TW9udGggPSAwOwogICAgYXRteC5zLnNldE1EYXkgPSAwOwogICAgYXRteC5z
LnNldE1XZWVrID0gMDsKICAgIGF0bXgucy5zZXRNV09yZCA9IDA7CiAgICBhdG14LnMuc2V0WVdP
cmQgPSAwOwogICAgYXQgPSBBdGltZUZyb21BdG0oJmF0bXgpOwogICAgcmV0dXJuIGF0Owp9Cgpl
eHRlcm4gaW5saW5lIEF0aW1lCkF0aW1lQWRkTVdlZWsoQXRpbWUgYXQsIHMzMiBkZWx0YSkKewog
ICAgQXRtIGF0bXg7CgogICAgQXRpbWVUb0F0bShhdCwgZ0F0aW1lVGltZVpvbmUsICZhdG14KTsK
ICAgIGF0bXgucy5td2VlayArPSBkZWx0YTsKICAgIGF0bXgucy5zZXRZRGF5ID0gMDsKICAgIGF0
bXgucy5zZXRNRGF5ID0gMDsKICAgIGF0bXgucy5zZXRZV2VlayA9IDA7CiAgICBhdG14LnMuc2V0
TVdPcmQgPSAwOwogICAgYXRteC5zLnNldFlXT3JkID0gMDsKICAgIGF0ID0gQXRpbWVGcm9tQXRt
KCZhdG14KTsKICAgIHJldHVybiBhdDsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGltZUFkZFdP
cmQoQXRpbWUgYXQsIHMzMiBkZWx0YSkKewogICAgQXRtIGF0bXg7CgogICAgQXRpbWVUb0F0bShh
dCwgZ0F0aW1lVGltZVpvbmUsICZhdG14KTsKICAgIGF0bXgucy55d29yZCArPSBkZWx0YTsKICAg
IGF0bXgucy5zZXRZRGF5ID0gMDsKICAgIGF0bXgucy5zZXRNb250aCA9IDA7CiAgICBhdG14LnMu
c2V0TURheSA9IDA7CiAgICBhdG14LnMuc2V0WVdlZWsgPSAwOwogICAgYXRteC5zLnNldE1XZWVr
ID0gMDsKICAgIGF0bXgucy5zZXRNV09yZCA9IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRt
eCk7CiAgICByZXR1cm4gYXQ7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVBZGRNV09yZChB
dGltZSBhdCwgczMyIGRlbHRhKQp7CiAgICBBdG0gYXRteDsKCiAgICBBdGltZVRvQXRtKGF0LCBn
QXRpbWVUaW1lWm9uZSwgJmF0bXgpOwogICAgYXRteC5zLm13b3JkICs9IGRlbHRhOwogICAgYXRt
eC5zLnNldFlEYXkgPSAwOwogICAgYXRteC5zLnNldE1EYXkgPSAwOwogICAgYXRteC5zLnNldFlX
ZWVrID0gMDsKICAgIGF0bXgucy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0WVdPcmQgPSAw
OwogICAgYXQgPSBBdGltZUZyb21BdG0oJmF0bXgpOwogICAgcmV0dXJuIGF0Owp9CgpleHRlcm4g
aW5saW5lIEF0aW1lCkF0aW1lU2V0WWVhcihBdGltZSBhdCwgczMyIHZhbCkKewogICAgQXRtIGF0
bXg7CgogICAgQXRpbWVUb0F0bShhdCwgZ0F0aW1lVGltZVpvbmUsICZhdG14KTsKICAgIGF0bXgu
cy55ZWFyID0gdmFsOwogICAgYXRteC5zLnNldEpFcmFZZWFyID0gMDsKICAgIGF0bXgucy5zZXRK
RXJhTmFtZSA9IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7CiAgICByZXR1cm4gYXQ7
Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVTZXRNb250aChBdGltZSBhdCwgczMyIHZhbCkK
ewogICAgQXRtIGF0bXg7CgogICAgQXRpbWVUb0F0bShhdCwgZ0F0aW1lVGltZVpvbmUsICZhdG14
KTsKICAgIGF0bXgucy5tb250aCA9IHZhbDsKICAgIGF0bXgucy5zZXRZRGF5ID0gMDsKICAgIGF0
bXgucy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0WVdlZWsgPSAwOwogICAgYXRteC5zLnNl
dE1XT3JkID0gMDsKICAgIGF0bXgucy5zZXRZV09yZCA9IDA7CiAgICBhdG14LnMuc2V0V0RheSA9
IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7CiAgICByZXR1cm4gYXQ7Cn0KCmV4dGVy
biBpbmxpbmUgQXRpbWUKQXRpbWVTZXRZRGF5KEF0aW1lIGF0LCBzMzIgdmFsKQp7CiAgICBBdG0g
YXRteDsKCiAgICBBdGltZVRvQXRtKGF0LCBnQXRpbWVUaW1lWm9uZSwgJmF0bXgpOwogICAgYXRt
eC5zLnlkYXkgPSB2YWw7CiAgICBhdG14LnMuc2V0TW9udGggPSAwOwogICAgYXRteC5zLnNldE1E
YXkgPSAwOwogICAgYXRteC5zLnNldE1XZWVrID0gMDsKICAgIGF0bXgucy5zZXRZV2VlayA9IDA7
CiAgICBhdG14LnMuc2V0TVdPcmQgPSAwOwogICAgYXRteC5zLnNldFlXT3JkID0gMDsKICAgIGF0
bXgucy5zZXRXRGF5ID0gMDsKICAgIGF0ID0gQXRpbWVGcm9tQXRtKCZhdG14KTsKICAgIHJldHVy
biBhdDsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGltZVNldE1EYXkoQXRpbWUgYXQsIHMzMiB2
YWwpCnsKICAgIEF0bSBhdG14OwoKICAgIEF0aW1lVG9BdG0oYXQsIGdBdGltZVRpbWVab25lLCAm
YXRteCk7CiAgICBhdG14LnMubWRheSA9IHZhbDsKICAgIGF0bXgucy5zZXRZRGF5ID0gMDsKICAg
IGF0bXgucy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0WVdlZWsgPSAwOwogICAgYXRteC5z
LnNldE1XT3JkID0gMDsKICAgIGF0bXgucy5zZXRZV09yZCA9IDA7CiAgICBhdG14LnMuc2V0V0Rh
eSA9IDA7CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7CiAgICByZXR1cm4gYXQ7Cn0KCmV4
dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVTZXRZTUQoQXRpbWUgYXQsIHMzMiB5ZWFyLCBzMzIgbW9u
dGgsIHMzMiBtZGF5KQp7CiAgICBBdG0gYXRteDsKCiAgICBBdGltZVRvQXRtKGF0LCBnQXRpbWVU
aW1lWm9uZSwgJmF0bXgpOwogICAgaWYoeWVhciAhPSAwKQogICAgICAgIGF0bXgucy55ZWFyID0g
eWVhcjsKICAgIGlmKG1vbnRoICE9IDApCiAgICAgICAgYXRteC5zLm1vbnRoID0gbW9udGg7CiAg
ICBpZihtZGF5ICE9IDApCiAgICAgICAgYXRteC5zLm1kYXkgPSBtZGF5OwogICAgYXRteC5zLnNl
dE1XZWVrID0gMDsKICAgIGF0bXgucy5zZXRZV2VlayA9IDA7CiAgICBhdG14LnMuc2V0WURheSA9
IDA7CiAgICBhdG14LnMuc2V0TVdPcmQgPSAwOwogICAgYXRteC5zLnNldFlXT3JkID0gMDsKICAg
IGF0bXgucy5zZXRXRGF5ID0gMDsKICAgIGF0ID0gQXRpbWVGcm9tQXRtKCZhdG14KTsKICAgIHJl
dHVybiBhdDsKfQoKZXh0ZXJuIGlubGluZSBBdGltZQpBdGltZVNldEhNUyhBdGltZSBhdCwgczMy
IGhvdXIsIHMzMiBtaW4sIHMzMiBzZWMsIHMzMiBtaWNybykKewogICAgQXRtIGF0bXg7CgogICAg
QXRpbWVUb0F0bShhdCwgZ0F0aW1lVGltZVpvbmUsICZhdG14KTsKICAgIGF0bXgucy5ob3VyID0g
aG91cjsKICAgIGF0bXgucy5taW4gPSBtaW47CiAgICBhdG14LnMuc2VjID0gc2VjOwogICAgYXRt
eC5zLm1pY3JvID0gbWljcm87CiAgICBhdCA9IEF0aW1lRnJvbUF0bSgmYXRteCk7CiAgICByZXR1
cm4gYXQ7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVTZXRXZWVrKEF0aW1lIGF0LCBzMzIg
dmFsKQp7CiAgICBBdG0gYXRteDsKCiAgICBBdGltZVRvQXRtKGF0LCBnQXRpbWVUaW1lWm9uZSwg
JmF0bXgpOwogICAgYXRteC5zLnl3ZWVrID0gdmFsOwogICAgYXRteC5zLnNldFlEYXkgPSAwOwog
ICAgYXRteC5zLnNldE1vbnRoID0gMDsKICAgIGF0bXgucy5zZXRNRGF5ID0gMDsKICAgIGF0bXgu
cy5zZXRNV2VlayA9IDA7CiAgICBhdG14LnMuc2V0TVdPcmQgPSAwOwogICAgYXRteC5zLnNldFlX
T3JkID0gMDsKICAgIGF0ID0gQXRpbWVGcm9tQXRtKCZhdG14KTsKICAgIHJldHVybiBhdDsKfQoK
CgpleHRlcm4gdm9pZCBBdGltZUdldEFjY291bnRQZXJpb2QoQXRpbWUgYmFzZSwgczMyIGNsb3Nl
RGF5LCBBdGltZSogc3RhcnRQZXJpb2QsIEF0aW1lKiBlbmRQZXJpb2QpIGFzbSgiX18iICJBdGlt
ZUdldEFjY291bnRQZXJpb2QiKTsKZXh0ZXJuIEJvb2wgQXRpbWVDaGVja1lNRChzMzIgeWVhciwg
czMyIG1vbnRoLCBzMzIgbWRheSkgYXNtKCJfXyIgIkF0aW1lQ2hlY2tZTUQiKTsKZXh0ZXJuIEJv
b2wgQXRpbWVDaGVja0VZTUQoaW50IGVyYVR5cGUsIGNvbnN0IGNoYXIqIGVyYU5hbWUsIHMzMiB5
ZWFyLCBzMzIgbW9udGgsIHMzMiBtZGF5KSBhc20oIl9fIiAiQXRpbWVDaGVja0VZTUQiKTsKCmV4
dGVybiBpbmxpbmUgc3RydWN0IHRpbWVzcGVjKgpBdGltZVRvVGltZVNwZWMoQXRpbWUgYXQsIHN0
cnVjdCB0aW1lc3BlYyogdHMpCnsKICAgIGF0IC09IDIxMDg2NjgwMzIwMDAwMDAwMExMOwogICAg
dHMtPnR2X3NlYyA9ICgoYXQpLygxMDAwMDAwTEwpKTsKICAgIHRzLT50dl9uc2VjID0gKChhdCkl
KDEwMDAwMDBMTCkpICogMTAwMDsKICAgIHJldHVybiB0czsKfQoKZXh0ZXJuIGlubGluZSBzdHJ1
Y3QgdGltZXZhbCoKQXRpbWVUb1RpbWVWYWwoQXRpbWUgYXQsIHN0cnVjdCB0aW1ldmFsKiB0dikK
ewogICAgYXQgLT0gMjEwODY2ODAzMjAwMDAwMDAwTEw7CiAgICB0di0+dHZfc2VjID0gKChhdCkv
KDEwMDAwMDBMTCkpOwogICAgdHYtPnR2X3VzZWMgPSAoKGF0KSUoMTAwMDAwMExMKSk7CiAgICBy
ZXR1cm4gdHY7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVGcm9tVGltZVNwZWMoc3RydWN0
IHRpbWVzcGVjKiB0cykKewogICAgQXRpbWUgYXQgPSAoKEF0aW1lKSgodHMtPnR2X3NlYykqKDEw
MDAwMDBMTCkpKSArICh0cy0+dHZfbnNlYyAvIDEwMDApOwogICAgYXQgKz0gMjEwODY2ODAzMjAw
MDAwMDAwTEw7CiAgICByZXR1cm4gYXQ7Cn0KCmV4dGVybiBpbmxpbmUgQXRpbWUKQXRpbWVGcm9t
VGltZVZhbChzdHJ1Y3QgdGltZXZhbCogdHYpCnsKICAgIEF0aW1lIGF0ID0gKChBdGltZSkoKHR2
LT50dl9zZWMpKigxMDAwMDAwTEwpKSkgKyB0di0+dHZfdXNlYzsKICAgIGF0ICs9IDIxMDg2Njgw
MzIwMDAwMDAwMExMOwogICAgcmV0dXJuIGF0Owp9CgpleHRlcm4gaW5saW5lIEF0aW1lCkF0aW1l
MEFtKEF0aW1lIHgpCnsKICAgIHggPSBBdGltZVRvTG9jYWxWYWx1ZSh4KTsKICAgIHggPSBBdGlt
ZUFkanVzdERvd25EYXkoeCk7CiAgICByZXR1cm4gQXRpbWVGcm9tTG9jYWxWYWx1ZSh4KTsKfQoK
ZXh0ZXJuIGlubGluZSBBdGltZQpBdGltZUZyb21UaW1lVCh0aW1lX3QgdCkKewogICAgQXRpbWUg
dHggPSAoKEF0aW1lKSgodCkqKDEwMDAwMDBMTCkpKTsKICAgIHJldHVybiB0eCArIDIxMDg2Njgw
MzIwMDAwMDAwMExMOwp9CgpleHRlcm4gaW5saW5lIHRpbWVfdApBdGltZVRvVGltZVQoQXRpbWUg
dHgpCnsKICAgIGlmKCgyMTA4NjY4MDMyMDAwMDAwMDBMTCA8PSB0eCkgJiYgKHR4IDw9IDQ2NDI2
OTEwMzk5OTk5OTk5OUxMKSkgewogICAgICAgIHJldHVybiAodGltZV90KSgodHggLSAyMTA4NjY4
MDMyMDAwMDAwMDBMTCkvKDEwMDAwMDBMTCkpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4g
KHRpbWVfdCkoLTEpOwogICAgfQp9CgoKIyAyNSAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZsZHUu
YyIgMgojIDEgImF4aXMvY3F1ZXVlLmgiIDEKIyAyNyAiYXhpcy9jcXVldWUuaCIKI2RlZmluZSBf
QVhJU19DUVVFVUVfSF8gCgoKCnR5cGVkZWYgc3RydWN0IENxdWV1ZUxpbmsgewogICAgczMyIGJr
d2Q7CiAgICBzMzIgZnJ3ZDsKfSBDcXVldWVMaW5rOwojIDExMCAiYXhpcy9jcXVldWUuaCIKZXh0
ZXJuIGlubGluZSB2b2lkKgpDcXVldWVUb3BBZGRyKENxdWV1ZUxpbmsqIHF1ZXVlUCwgczMyIHF1
ZXVlSWR4LCBzMzIgaWR4LCB1MzIgZWxlbWVudFNpemUsIHUzMiBsaW5rT2Zmc2V0KQp7CiAgICBB
cmVhIHg7CgogICAgeC5wdHIgPSBxdWV1ZVA7CiAgICB4LnZhbCAtPSBsaW5rT2Zmc2V0OwogICAg
eC5zdmFsICs9IChpZHggLSBxdWV1ZUlkeCkgKiBlbGVtZW50U2l6ZTsKICAgIHJldHVybiB4LnB0
cjsKfQoKZXh0ZXJuIGlubGluZSBDcXVldWVMaW5rKgpDcXVldWVMaW5rQWRkcihDcXVldWVMaW5r
KiBxdWV1ZVAsIHMzMiBxdWV1ZUlkeCwgczMyIGlkeCwgdTMyIGVsZW1lbnRTaXplLCB1MzIgbGlu
a09mZnNldCkKewogICAgQXJlYSB4OwoKICAgIHgucHRyID0gcXVldWVQOwogICAgeC52YWwgLT0g
bGlua09mZnNldDsKICAgIHguc3ZhbCArPSAoaWR4IC0gcXVldWVJZHgpICogZWxlbWVudFNpemU7
CiAgICB4LnN2YWwgKz0gbGlua09mZnNldDsKICAgIHJldHVybiB4LnB0cjsKfQoKZXh0ZXJuIGlu
bGluZSB2b2lkCkNxdWV1ZUluaXQoQ3F1ZXVlTGluayogcXVldWVQLCBzMzIgcXVldWVJZHgsIHMz
MiB0YXJnZXRJZHgsCiAgICAgICAgICAgdTMyIGVsZW1lbnRTaXplLCB1MzIgbGlua09mZnNldCkK
ewogICAgQ3F1ZXVlTGluayogdGFyZ2V0UDsKCiAgICB0YXJnZXRQID0gQ3F1ZXVlTGlua0FkZHIo
cXVldWVQLCBxdWV1ZUlkeCwgdGFyZ2V0SWR4LCBlbGVtZW50U2l6ZSwgbGlua09mZnNldCk7Cgog
ICAgdGFyZ2V0UC0+ZnJ3ZCA9IHRhcmdldElkeDsKICAgIHRhcmdldFAtPmJrd2QgPSB0YXJnZXRJ
ZHg7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApDcXVldWVJbnNlcnRRdWV1ZShDcXVldWVMaW5rKiBx
dWV1ZVAsIHMzMiBxdWV1ZUlkeCwgczMyIHRhcmdldElkeCwKICAgICAgICAgICAgIHUzMiBlbGVt
ZW50U2l6ZSwgdTMyIGxpbmtPZmZzZXQpCnsKICAgIENxdWV1ZUxpbmsqIHRhcmdldFA7CiAgICBD
cXVldWVMaW5rKiBmcndkUDsKCiAgICB0YXJnZXRQID0gQ3F1ZXVlTGlua0FkZHIocXVldWVQLCBx
dWV1ZUlkeCwgdGFyZ2V0SWR4LCBlbGVtZW50U2l6ZSwgbGlua09mZnNldCk7CiAgICBmcndkUCA9
IENxdWV1ZUxpbmtBZGRyKHF1ZXVlUCwgcXVldWVJZHgsIHF1ZXVlUC0+ZnJ3ZCwgZWxlbWVudFNp
emUsIGxpbmtPZmZzZXQpOwoKICAgIHRhcmdldFAtPmZyd2QgPSBxdWV1ZVAtPmZyd2Q7CiAgICBm
cndkUC0+Ymt3ZCA9IHRhcmdldElkeDsKICAgIHRhcmdldFAtPmJrd2QgPSBxdWV1ZUlkeDsKICAg
IHF1ZXVlUC0+ZnJ3ZCA9IHRhcmdldElkeDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkCkNxdWV1ZUFw
cGVuZFF1ZXVlKENxdWV1ZUxpbmsqIHF1ZXVlUCwgczMyIHF1ZXVlSWR4LCBzMzIgdGFyZ2V0SWR4
LAogICAgICAgICAgICAgICAgICB1MzIgZWxlbWVudFNpemUsIHUzMiBsaW5rT2Zmc2V0KQp7CiAg
ICBDcXVldWVMaW5rKiB0YXJnZXRQOwogICAgQ3F1ZXVlTGluayogYmt3ZFA7CgogICAgdGFyZ2V0
UCA9IENxdWV1ZUxpbmtBZGRyKHF1ZXVlUCwgcXVldWVJZHgsIHRhcmdldElkeCwgZWxlbWVudFNp
emUsIGxpbmtPZmZzZXQpOwogICAgYmt3ZFAgPSBDcXVldWVMaW5rQWRkcihxdWV1ZVAsIHF1ZXVl
SWR4LCBxdWV1ZVAtPmJrd2QsIGVsZW1lbnRTaXplLCBsaW5rT2Zmc2V0KTsKCiAgICB0YXJnZXRQ
LT5ia3dkID0gcXVldWVQLT5ia3dkOwogICAgYmt3ZFAtPmZyd2QgPSB0YXJnZXRJZHg7CiAgICB0
YXJnZXRQLT5mcndkID0gcXVldWVJZHg7CiAgICBxdWV1ZVAtPmJrd2QgPSB0YXJnZXRJZHg7Cn0K
CmV4dGVybiBpbmxpbmUgczMyCkNxdWV1ZURlbGV0ZVF1ZXVlKENxdWV1ZUxpbmsqIHF1ZXVlUCwg
czMyIHF1ZXVlSWR4LCBzMzIgdGFyZ2V0SWR4LCB1MzIgZWxlbWVudFNpemUsIHUzMiBsaW5rT2Zm
c2V0KQp7CiAgICBDcXVldWVMaW5rKiB0YXJnZXRQOwogICAgQ3F1ZXVlTGluayogZnJ3ZFA7CiAg
ICBDcXVldWVMaW5rKiBia3dkUDsKCiAgICB0YXJnZXRQID0gQ3F1ZXVlTGlua0FkZHIocXVldWVQ
LCBxdWV1ZUlkeCwgdGFyZ2V0SWR4LCBlbGVtZW50U2l6ZSwgbGlua09mZnNldCk7CiAgICBmcndk
UCA9IENxdWV1ZUxpbmtBZGRyKHF1ZXVlUCwgcXVldWVJZHgsIHRhcmdldFAtPmZyd2QsIGVsZW1l
bnRTaXplLCBsaW5rT2Zmc2V0KTsKICAgIGJrd2RQID0gQ3F1ZXVlTGlua0FkZHIocXVldWVQLCBx
dWV1ZUlkeCwgdGFyZ2V0UC0+Ymt3ZCwgZWxlbWVudFNpemUsIGxpbmtPZmZzZXQpOwoKICAgIGJr
d2RQLT5mcndkID0gdGFyZ2V0UC0+ZnJ3ZDsKICAgIGZyd2RQLT5ia3dkID0gdGFyZ2V0UC0+Ymt3
ZDsKCiAgICByZXR1cm4gKHRhcmdldFAtPmZyd2QgIT0gdGFyZ2V0SWR4KSA/IHRhcmdldFAtPmZy
d2QgOiB0YXJnZXRJZHg7Cn0KCiNkZWZpbmUgQ3F1ZXVlRGVmVG9wQWRkcihwcmVmaXgsdHlwZU5h
bWUsbGlua0ZpZWxkKSBleHRlcm4gaW5saW5lIHR5cGVOYW1lKiBwcmVmaXggIyMgVG9wQWRkcih0
eXBlTmFtZSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IHJldHVybiAmKHRvcFt0Z3RJ
ZHggLSB0b3BJZHhdKTsgfQoKCgojZGVmaW5lIENxdWV1ZURlZkluZGV4KHByZWZpeCx0eXBlTmFt
ZSxsaW5rRmllbGQpIGV4dGVybiBpbmxpbmUgczMyIHByZWZpeCAjIyBJbmRleCh0eXBlTmFtZSog
dG9wLCBzMzIgdG9wSWR4LCB0eXBlTmFtZSogdGd0KSB7IHJldHVybiAodGd0IC0gdG9wKSArIHRv
cElkeDsgfQoKCgojZGVmaW5lIENxdWV1ZURlZkluaXQocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVs
ZCkgZXh0ZXJuIGlubGluZSB2b2lkIHByZWZpeCAjIyBJbml0KHR5cGVOYW1lKiB0b3AsIHMzMiB0
b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlSW5pdCgmKHRvcC0+bGlua0ZpZWxkKSwgdG9wSWR4
LCB0Z3RJZHgsIHNpemVvZih0eXBlTmFtZSksIG9mZnNldG9mKHR5cGVOYW1lLCBsaW5rRmllbGQp
KTt9CgoKCgojZGVmaW5lIENxdWV1ZURlZkluc2VydChwcmVmaXgsdHlwZU5hbWUsbGlua0ZpZWxk
KSBleHRlcm4gaW5saW5lIHZvaWQgcHJlZml4ICMjIEluc2VydCh0eXBlTmFtZSogdG9wLCBzMzIg
dG9wSWR4LCBzMzIgdGd0SWR4KSB7IENxdWV1ZUluc2VydFF1ZXVlKCYodG9wLT5saW5rRmllbGQp
LCB0b3BJZHgsIHRndElkeCwgc2l6ZW9mKHR5cGVOYW1lKSwgb2Zmc2V0b2YodHlwZU5hbWUsIGxp
bmtGaWVsZCkpO30KCgoKCiNkZWZpbmUgQ3F1ZXVlRGVmQXBwZW5kKHByZWZpeCx0eXBlTmFtZSxs
aW5rRmllbGQpIGV4dGVybiBpbmxpbmUgdm9pZCBwcmVmaXggIyMgQXBwZW5kKHR5cGVOYW1lKiB0
b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlQXBwZW5kUXVldWUoJih0b3AtPmxp
bmtGaWVsZCksIHRvcElkeCwgdGd0SWR4LCBzaXplb2YodHlwZU5hbWUpLCBvZmZzZXRvZih0eXBl
TmFtZSwgbGlua0ZpZWxkKSk7fQoKCgoKI2RlZmluZSBDcXVldWVEZWZEZWxldGUocHJlZml4LHR5
cGVOYW1lLGxpbmtGaWVsZCkgZXh0ZXJuIGlubGluZSBzMzIgcHJlZml4ICMjIERlbGV0ZSh0eXBl
TmFtZSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IHMzMiByZXRhaW47IHJldGFpbiA9
IENxdWV1ZURlbGV0ZVF1ZXVlKCYodG9wLT5saW5rRmllbGQpLCB0b3BJZHgsIHRndElkeCwgc2l6
ZW9mKHR5cGVOYW1lKSwgb2Zmc2V0b2YodHlwZU5hbWUsIGxpbmtGaWVsZCkpOyByZXR1cm4gcmV0
YWluO30KCgoKCgoKI2RlZmluZSBDcXVldWVEZWZOZXh0KHByZWZpeCx0eXBlTmFtZSxsaW5rRmll
bGQpIGV4dGVybiBpbmxpbmUgczMyIHByZWZpeCAjIyBOZXh0KHR5cGVOYW1lKiB0b3AsIHMzMiB0
b3BJZHgsIHMzMiBjdXIpIHsgczMyIG5leHQgPSB0b3BbY3VyIC0gdG9wSWR4XS5saW5rRmllbGQu
ZnJ3ZDsgcmV0dXJuIG5leHQ7fQoKCgoKI2RlZmluZSBDcXVldWVEZWZQcmV2KHByZWZpeCx0eXBl
TmFtZSxsaW5rRmllbGQpIGV4dGVybiBpbmxpbmUgczMyIHByZWZpeCAjIyBQcmV2KHR5cGVOYW1l
KiB0b3AsIHMzMiB0b3BJZHgsIHMzMiBjdXIpIHsgczMyIHByZXYgPSB0b3BbY3VyIC0gdG9wSWR4
XS5saW5rRmllbGQuYmt3ZDsgcmV0dXJuIHByZXY7fQoKCgoKCiNkZWZpbmUgQ3F1ZXVlRGVmRnVu
Y3Rpb25TZXQocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVsZCkgQ3F1ZXVlRGVmVG9wQWRkcihwcmVm
aXgsIHR5cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZURlZkluZGV4KHByZWZpeCwgdHlwZU5hbWUs
IGxpbmtGaWVsZCkgQ3F1ZXVlRGVmSW5pdChwcmVmaXgsIHR5cGVOYW1lLCBsaW5rRmllbGQpIENx
dWV1ZURlZkluc2VydChwcmVmaXgsIHR5cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZURlZkFwcGVu
ZChwcmVmaXgsIHR5cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZURlZkRlbGV0ZShwcmVmaXgsIHR5
cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZURlZk5leHQocHJlZml4LCB0eXBlTmFtZSwgbGlua0Zp
ZWxkKSBDcXVldWVEZWZQcmV2KHByZWZpeCwgdHlwZU5hbWUsIGxpbmtGaWVsZCkKIyAyNDYgImF4
aXMvY3F1ZXVlLmgiCiNkZWZpbmUgQ3F1ZXVlRGVmVG9wQWRkckJ5RHluU3oocHJlZml4LHR5cGVO
YW1lLGxpbmtGaWVsZCkgZXh0ZXJuIGlubGluZSB0eXBlTmFtZSogcHJlZml4ICMjIFRvcEFkZHIo
dHlwZU5hbWUqIHRvcCwgczMyIHRvcElkeCwgczMyIHRndElkeCwgdTMyIHN6KSB7IHJldHVybiBD
cXVldWVUb3BBZGRyKCYodG9wLT5saW5rRmllbGQpLCB0b3BJZHgsIHRndElkeCwgc3osIG9mZnNl
dG9mKHR5cGVOYW1lLCBsaW5rRmllbGQpKTsgfQoKCgojZGVmaW5lIENxdWV1ZURlZkluZGV4QnlE
eW5TeihwcmVmaXgsdHlwZU5hbWUsbGlua0ZpZWxkKSBleHRlcm4gaW5saW5lIHMzMiBwcmVmaXgg
IyMgSW5kZXgodHlwZU5hbWUqIHRvcCwgczMyIHRvcElkeCwgdHlwZU5hbWUqIHRndCwgdTMyIHN6
KSB7IHN0cnVjdCB7IGNoYXIgeFtzel07IH0gKnAxLCAqcDI7IHAxID0gKHZvaWQqKXRvcDsgcDIg
PSAodm9pZCopdGd0OyByZXR1cm4gcDIgLSBwMSArIHRvcElkeDsgfQoKCgoKCgojZGVmaW5lIENx
dWV1ZURlZkluaXRCeUR5blN6KHByZWZpeCx0eXBlTmFtZSxsaW5rRmllbGQpIGV4dGVybiBpbmxp
bmUgdm9pZCBwcmVmaXggIyMgSW5pdCh0eXBlTmFtZSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0
SWR4LCB1MzIgc3opIHsgQ3F1ZXVlSW5pdCgmKHRvcC0+bGlua0ZpZWxkKSwgdG9wSWR4LCB0Z3RJ
ZHgsIHN6LCBvZmZzZXRvZih0eXBlTmFtZSwgbGlua0ZpZWxkKSk7fQoKCgoKI2RlZmluZSBDcXVl
dWVEZWZJbnNlcnRCeUR5blN6KHByZWZpeCx0eXBlTmFtZSxsaW5rRmllbGQpIGV4dGVybiBpbmxp
bmUgdm9pZCBwcmVmaXggIyMgSW5zZXJ0KHR5cGVOYW1lKiB0b3AsIHMzMiB0b3BJZHgsIHMzMiB0
Z3RJZHgsIHUzMiBzeikgeyBDcXVldWVJbnNlcnRRdWV1ZSgmKHRvcC0+bGlua0ZpZWxkKSwgdG9w
SWR4LCB0Z3RJZHgsIHN6LCBvZmZzZXRvZih0eXBlTmFtZSwgbGlua0ZpZWxkKSk7fQoKCgoKI2Rl
ZmluZSBDcXVldWVEZWZBcHBlbmRCeUR5blN6KHByZWZpeCx0eXBlTmFtZSxsaW5rRmllbGQpIGV4
dGVybiBpbmxpbmUgdm9pZCBwcmVmaXggIyMgQXBwZW5kKHR5cGVOYW1lKiB0b3AsIHMzMiB0b3BJ
ZHgsIHMzMiB0Z3RJZHgsIHUzMiBzeikgeyBDcXVldWVBcHBlbmRRdWV1ZSgmKHRvcC0+bGlua0Zp
ZWxkKSwgdG9wSWR4LCB0Z3RJZHgsIHN6LCBvZmZzZXRvZih0eXBlTmFtZSwgbGlua0ZpZWxkKSk7
fQoKCgoKI2RlZmluZSBDcXVldWVEZWZEZWxldGVCeUR5blN6KHByZWZpeCx0eXBlTmFtZSxsaW5r
RmllbGQpIGV4dGVybiBpbmxpbmUgczMyIHByZWZpeCAjIyBEZWxldGUodHlwZU5hbWUqIHRvcCwg
czMyIHRvcElkeCwgczMyIHRndElkeCwgdTMyIHN6KSB7IHMzMiByZXRhaW47IHJldGFpbiA9IENx
dWV1ZURlbGV0ZVF1ZXVlKCYodG9wLT5saW5rRmllbGQpLCB0b3BJZHgsIHRndElkeCwgc3osIG9m
ZnNldG9mKHR5cGVOYW1lLCBsaW5rRmllbGQpKTsgcmV0dXJuIHJldGFpbjt9CgoKCgoKCiNkZWZp
bmUgQ3F1ZXVlRGVmTmV4dEJ5RHluU3oocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVsZCkgZXh0ZXJu
IGlubGluZSBzMzIgcHJlZml4ICMjIE5leHQodHlwZU5hbWUqIHRvcCwgczMyIHRvcElkeCwgczMy
IGN1ciwgdTMyIHN6KSB7IHMzMiBuZXh0ID0gcHJlZml4ICMjIFRvcEFkZHIodG9wLCB0b3BJZHgs
IGN1ciwgc3opLT5saW5rRmllbGQuZnJ3ZDsgcmV0dXJuIG5leHQ7fQoKCgoKI2RlZmluZSBDcXVl
dWVEZWZQcmV2QnlEeW5TeihwcmVmaXgsdHlwZU5hbWUsbGlua0ZpZWxkKSBleHRlcm4gaW5saW5l
IHMzMiBwcmVmaXggIyMgUHJldih0eXBlTmFtZSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgY3VyLCB1
MzIgc3opIHsgczMyIHByZXYgPSBwcmVmaXggIyMgVG9wQWRkcih0b3AsIHRvcElkeCwgY3VyLCBz
eiktPmxpbmtGaWVsZC5ia3dkOyByZXR1cm4gcHJldjt9CgoKCgoKI2RlZmluZSBDcXVldWVEZWZG
dW5jdGlvblNldEJ5RHluU3oocHJlZml4LHR5cGVOYW1lLGxpbmtGaWVsZCkgQ3F1ZXVlRGVmVG9w
QWRkckJ5RHluU3oocHJlZml4LCB0eXBlTmFtZSwgbGlua0ZpZWxkKSBDcXVldWVEZWZJbmRleEJ5
RHluU3oocHJlZml4LCB0eXBlTmFtZSwgbGlua0ZpZWxkKSBDcXVldWVEZWZJbml0QnlEeW5Teihw
cmVmaXgsIHR5cGVOYW1lLCBsaW5rRmllbGQpIENxdWV1ZURlZkluc2VydEJ5RHluU3oocHJlZml4
LCB0eXBlTmFtZSwgbGlua0ZpZWxkKSBDcXVldWVEZWZBcHBlbmRCeUR5blN6KHByZWZpeCwgdHlw
ZU5hbWUsIGxpbmtGaWVsZCkgQ3F1ZXVlRGVmRGVsZXRlQnlEeW5TeihwcmVmaXgsIHR5cGVOYW1l
LCBsaW5rRmllbGQpIENxdWV1ZURlZk5leHRCeUR5blN6KHByZWZpeCwgdHlwZU5hbWUsIGxpbmtG
aWVsZCkgQ3F1ZXVlRGVmUHJldkJ5RHluU3oocHJlZml4LCB0eXBlTmFtZSwgbGlua0ZpZWxkKQoj
IDMwMCAiYXhpcy9jcXVldWUuaCIKCiMgMjYgIi4uLy4uL3NyYy9zZGJtLnYwL3NkYm1mbGR1LmMi
IDIKIyAxICJheGlzL2Rlc2MuaCIgMQojIDI4ICJheGlzL2Rlc2MuaCIKI2RlZmluZSBfQVhJU19E
RVNDX0hfIAoKCgojZGVmaW5lIGNEZXNjVmFsaWRNaW4gMgojZGVmaW5lIGNEZXNjVmFsaWRNYXgg
MTMxMDcyCgojZGVmaW5lIGNEZXNjTWluIDEKI2RlZmluZSBjRGVzY01heCAyMTQ3NDgzNjQ3TAoj
ZGVmaW5lIGNEZXNjSW52YWxpZCAwCgp0eXBlZGVmIHN0cnVjdCBEZXNjSW5mbyB7CiAgICBXb3Jk
IHJzdnNbMTBdOwp9IERlc2NJbmZvOwoKCnR5cGVkZWYgczMyIERlc2NJZDsKI2RlZmluZSBjRGVz
Y0Zvckh0aWYwIDEKI2RlZmluZSBjRGVzY0Zvckh0aWYxIDIKI2RlZmluZSBjRGVzY0ZvclNkYm0w
IDMKI2RlZmluZSBjRGVzY0ZvckFkYW0wIDQKI2RlZmluZSBjRGVzY0ZvckhlYXAwIDUKCiNkZWZp
bmUgY0Rlc2NSZXF1aXJlZE1heCA1CgojZGVmaW5lIE5vdEVyckRlc2MocmV0VmFsKSAoKChyZXRW
YWwpID09IEVyclJldChlVXRpbERlc2NJbml0RHVwKSkgfHwgTm90RXJyKHJldFZhbCkpCiNkZWZp
bmUgSXNFcnJEZXNjKHJldFZhbCkgKCgocmV0VmFsKSAhPSBFcnJSZXQoZVV0aWxEZXNjSW5pdER1
cCkpICYmIE5vdEVycihyZXRWYWwpKQoKZXh0ZXJuIGludCBEZXNjSW5pdChEZXNjSWQgaWQsIE51
bSBudW1WYWxpZERlc2NzKSBhc20oIl9fIiAiRGVzY0luaXQiKTsKZXh0ZXJuIHMzMiBEZXNjQWxs
b2MoRGVzY0lkIGlkLCB2b2lkKiBlbnRpdHkpIGFzbSgiX18iICJEZXNjQWxsb2MiKTsKZXh0ZXJu
IGludCBEZXNjQ2hnRW50aXR5KERlc2NJZCBpZCwgczMyIGRlc2MsIHZvaWQqIGVudGl0eSkgYXNt
KCJfXyIgIkRlc2NDaGdFbnRpdHkiKTsKZXh0ZXJuIGludCBEZXNjR2V0RW50aXR5KERlc2NJZCBp
ZCwgczMyIGRlc2MsIHZvaWQqKiBlbnRpdHlQKSBhc20oIl9fIiAiRGVzY0dldEVudGl0eSIpOwpl
eHRlcm4gaW50IERlc2NGcmVlKERlc2NJZCBpZCwgczMyIGRlc2MpIGFzbSgiX18iICJEZXNjRnJl
ZSIpOwpleHRlcm4gaW50IERlc2NHZXRJbmZvKERlc2NJZCBpZCwgRGVzY0luZm8qIGluZm8pIGFz
bSgiX18iICJEZXNjR2V0SW5mbyIpOwoKCiMgMjcgIi4uLy4uL3NyYy9zZGJtLnYwL3NkYm1mbGR1
LmMiIDIKIyAxICJheGlzL2hlYXAuaCIgMQojIDI4ICJheGlzL2hlYXAuaCIKI2RlZmluZSBfQVhJ
U19IRUFQX0hfIAoKCgoKdHlwZWRlZiBzMzIgSGVhcERlc2M7CgojZGVmaW5lIGNIZWFwTm9uZUZy
ZWUgMQoKdHlwZWRlZiBzdHJ1Y3QgSGVhcEluZm8gewogICAgV29yZCByc3ZzWzE2XTsKCiAgICBX
b3JkIGhlYXBTekN1cjsKICAgIFdvcmQgaGVhcFN6TWF4OwogICAgV29yZCBoZWFwTnVtQ3VyOwog
ICAgV29yZCBoZWFwTnVtTWF4OwogICAgV29yZCBhbm9uU3pDdXI7CiAgICBXb3JkIGFub25Tek1h
eDsKICAgIFdvcmQgYW5vbk51bUN1cjsKICAgIFdvcmQgYW5vbk51bU1heDsKICAgIFdvcmQgcnN2
czJbOF07Cn0gSGVhcEluZm87CgpleHRlcm4gSGVhcERlc2MgSGVhcEluaXQoU3ogaGVhcFN6LCB1
MzIgdHlwZSkgYXNtKCJfXyIgIkhlYXBJbml0Iik7CmV4dGVybiB2b2lkKiBIZWFwQWxsb2MoSGVh
cERlc2MgZGVzYywgU3ogYWxsb2NTeikgYXNtKCJfXyIgIkhlYXBBbGxvYyIpOwpleHRlcm4gdm9p
ZCBIZWFwRnJlZShIZWFwRGVzYyBkZXNjLCB2b2lkKiBwKSBhc20oIl9fIiAiSGVhcEZyZWUiKTsK
ZXh0ZXJuIHZvaWQgSGVhcFJlbGUoSGVhcERlc2MgZGVzYykgYXNtKCJfXyIgIkhlYXBSZWxlIik7
CmV4dGVybiBpbnQgSGVhcEdldEluZm8oSGVhcERlc2MgZGVzYywgSGVhcEluZm8qIGluZm8pIGFz
bSgiX18iICJIZWFwR2V0SW5mbyIpOwoKZXh0ZXJuIGludCBIZWFwR2V0TWVtb3J5QnlNbWFwKFN6
IHN6LCB2b2lkKiogcHRyKSBhc20oIl9fIiAiSGVhcEdldE1lbW9yeUJ5TW1hcCIpOwpleHRlcm4g
aW50IEhlYXBGcmVlTWVtb3J5QnlVbm1hcCh2b2lkKiB0b3AsIFN6IHN6KSBhc20oIl9fIiAiSGVh
cEZyZWVNZW1vcnlCeVVubWFwIik7CgoKIyAyOCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZsZHUu
YyIgMgojIDEgImF4aXMvYXRyZWUuaCIgMQojIDI3ICJheGlzL2F0cmVlLmgiCiNkZWZpbmUgX0FY
SVNfQVRSRUVfSF8gCgoKCiNkZWZpbmUgY0F0cmVlTm9uZU5vZGUgMAoKdHlwZWRlZiB1MzIgQXRy
ZWVJZHg7CgojZGVmaW5lIGNBdHJlZURlZXBlc3ROdW0gMzQKCiNkZWZpbmUgY0F0cmVlTm9uZVRy
ZWVJZHggMAoKc3RydWN0IEF0cmVlUmVxOwojIDU3ICJheGlzL2F0cmVlLmgiCnR5cGVkZWYgaW50
ICgqQXRyZWVDb21wYXJlRnVuYykoQXJlYSBjb21wYXJlQXJnLCBBcmVhIGF1eEFyZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIGRhdGExSXNJbnRlcm5hbCwgQXJlYTY0IGRh
dGExLCBBcmVhNjQgZGF0YTIpOwoKI2RlZmluZSBjQXRyZWVNYXRjaCAwCiNkZWZpbmUgY0F0cmVl
Rm91bmQgMAojZGVmaW5lIGNBdHJlZUxvd2VyICgtMSkKI2RlZmluZSBjQXRyZWVIaWdoZXIgMQoj
ZGVmaW5lIEF0cmVlSXNMb3dlcihyZXN1bHQpICgocmVzdWx0KSA8IDApCiNkZWZpbmUgQXRyZWVJ
c0hpZ2hlcihyZXN1bHQpICgocmVzdWx0KSA+IDApCgojZGVmaW5lIEF0cmVlQXJlYVN6SGludChu
dW1UcmVlLG51bU5vZGVzKSAoKG51bVRyZWUqNjQpKzY0KygzMioobnVtTm9kZXMpKSs2NCkKIyA4
NCAiYXhpcy9hdHJlZS5oIgp0eXBlZGVmIGludCAoKkF0cmVlQnVpbGRGdW5jKShBcmVhIGFyZzFz
dCwgU3ogYnl0ZVNpemUsIHZvaWQqKiBwcCk7CiMgOTkgImF4aXMvYXRyZWUuaCIKdHlwZWRlZiBp
bnQgKCpBdHJlZU9wZW5GdW5jKShBcmVhIGFyZzFzdCwgQXJlYSBhcmcybmQsIHZvaWQqKiBwcCk7
CiMgMTEzICJheGlzL2F0cmVlLmgiCnR5cGVkZWYgaW50ICgqQXRyZWVDbG9zZUZ1bmMpKEFyZWEg
YXJnMXN0LCBBcmVhIGFyZzJuZCk7CiMgMTMxICJheGlzL2F0cmVlLmgiCnR5cGVkZWYgaW50ICgq
QXRyZWVHcm93Tm9kZVNldCkoQXJlYSBhcmcxc3QsIEFyZWEgYXJnMm5kLCBTeiBieXRlU2l6ZSwg
dm9pZCoqIHBwKTsKIyAxNDkgImF4aXMvYXRyZWUuaCIKdHlwZWRlZiBpbnQgKCpBdHJlZVJlZHVj
ZU5vZGVTZXQpKEFyZWEgYXJnMXN0LCBBcmVhIGFyZzJuZCwgU3ogYnl0ZVNpemUsIHZvaWQqKiBw
cCk7Cgp0eXBlZGVmIHN0cnVjdCBBdHJlZUNhbGxiYWNrcyB7CiAgICBBdHJlZUNvbXBhcmVGdW5j
IGNvbXBhcmVGdW5jOwogICAgQXRyZWVPcGVuRnVuYyBvcGVuRnVuYzsKICAgIEF0cmVlQ2xvc2VG
dW5jIGNsb3NlRnVuYzsKICAgIEF0cmVlR3Jvd05vZGVTZXQgZ3Jvd0Z1bmM7CiAgICBBdHJlZVJl
ZHVjZU5vZGVTZXQgcmVkdWNlRnVuYzsKfSBBdHJlZUNhbGxiYWNrczsKCnR5cGVkZWYgc3RydWN0
IEF0cmVlUmVxIHsKICAgIGNvbnN0IEF0cmVlQ2FsbGJhY2tzKiBvcHJzOwogICAgQXJlYSBjb21w
YXJlQXJnOwogICAgQXJlYSBvcGVuQXJnOwogICAgQXJlYSBjbG9zZUFyZzsKICAgIEFyZWEgZ3Jv
d0FyZzsKICAgIEFyZWEgcmVkdWNlQXJnOwogICAgQXJlYSBhdXhBcmc7CiAgICBBcmVhIHJzdnNb
M107CiAgICB2b2lkKiBhdHJlZUludGVybmFsVXNlOwogICAgdm9pZCogYXRyZWVIYW5kbGU7CiAg
ICBBcmVhIGF0cmVlSW5mb3NbOF07Cn0gQXRyZWVSZXE7CgpleHRlcm4gaW50IEF0cmVlQnVpbGRO
b2RlU2V0KEF0cmVlQnVpbGRGdW5jIGJ1aWxkRnVuYywgQXJlYSBhcmcsIHUzMiBudW1UcmVlLCB1
MzIgdHJlZUlkc1tdKSBhc20oIl9fIiAiQXRyZWVCdWlsZE5vZGVTZXQiKTsKZXh0ZXJuIGludCBB
dHJlZUJ1aWxkTm9kZVNldFdpdGhOb2RlTnVtKEF0cmVlQnVpbGRGdW5jIGJ1aWxkRnVuYywgQXJl
YSBhcmcsIHUzMiBpbml0Tm9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHUzMiBudW1UcmVlLCB1MzIgdHJlZUlkc1tdKSBhc20oIl9fIiAiQXRyZWVCdWls
ZE5vZGVTZXRXaXRoTm9kZU51bSIpOwpleHRlcm4gaW50IEF0cmVlT3BlblRyZWUoQXRyZWVSZXEq
IHJlcSwgdTMyIHRyZWVJZHgsIHUzMiB0cmVlSWQpIGFzbSgiX18iICJBdHJlZU9wZW5UcmVlIik7
CmV4dGVybiBpbnQgQXRyZWVSZWdpc3RBc3NvY1RyZWUoQXRyZWVSZXEqIHJlcTEsIEF0cmVlUmVx
KiByZXEyKSBhc20oIl9fIiAiQXRyZWVSZWdpc3RBc3NvY1RyZWUiKTsKZXh0ZXJuIGludCBBdHJl
ZUNsb3NlVHJlZShBdHJlZVJlcSogcmVxKSBhc20oIl9fIiAiQXRyZWVDbG9zZVRyZWUiKTsKZXh0
ZXJuIGludCBBdHJlZU5ld05vZGUoQXRyZWVSZXEqIHJlcSwgQXJlYTY0IGRhdGEsIEJvb2wgYWxs
b3dEdXBsaWNhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHJlZUlkeCogbmV3
Tm9kZUlkeFApIGFzbSgiX18iICJBdHJlZU5ld05vZGUiKTsKZXh0ZXJuIGludCBBdHJlZURlbE5v
ZGVCeUlkeChBdHJlZVJlcSogcmVxLCBBdHJlZUlkeCBub2RlKSBhc20oIl9fIiAiQXRyZWVEZWxO
b2RlQnlJZHgiKTsKZXh0ZXJuIGludCBBdHJlZURlbE5vZGVCeURhdGEoQXRyZWVSZXEqIHJlcSwg
QXJlYTY0IGRhdGEpIGFzbSgiX18iICJBdHJlZURlbE5vZGVCeURhdGEiKTsKZXh0ZXJuIEF0cmVl
SWR4IEF0cmVlRmluZE5vZGUoQXRyZWVSZXEqIHJlcSwgQXJlYTY0IGRhdGEpIGFzbSgiX18iICJB
dHJlZUZpbmROb2RlIik7CmV4dGVybiBpbnQgQXRyZWVTZWFyY2hOb2RlKEF0cmVlUmVxKiByZXEs
IEF0cmVlSWR4KiBzZWFyY2hQbnRQLCBBcmVhNjQgZGF0YSkgYXNtKCJfXyIgIkF0cmVlU2VhcmNo
Tm9kZSIpOwpleHRlcm4gQXRyZWVJZHggQXRyZWVOZXh0Tm9kZShBdHJlZVJlcSogcmVxLCBBdHJl
ZUlkeCBjdXIpIGFzbSgiX18iICJBdHJlZU5leHROb2RlIik7CmV4dGVybiBBdHJlZUlkeCBBdHJl
ZVByZXZOb2RlKEF0cmVlUmVxKiByZXEsIEF0cmVlSWR4IGN1cikgYXNtKCJfXyIgIkF0cmVlUHJl
dk5vZGUiKTsKZXh0ZXJuIEF0cmVlSWR4IEF0cmVlUm9vdE5vZGUoQXRyZWVSZXEqIHJlcSkgYXNt
KCJfXyIgIkF0cmVlUm9vdE5vZGUiKTsKZXh0ZXJuIEF0cmVlSWR4IEF0cmVlTGVmdE5vZGUoQXRy
ZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyKSBhc20oIl9fIiAiQXRyZWVMZWZ0Tm9kZSIpOwpleHRl
cm4gQXRyZWVJZHggQXRyZWVSaWdodE5vZGUoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyKSBh
c20oIl9fIiAiQXRyZWVSaWdodE5vZGUiKTsKZXh0ZXJuIGludCBBdHJlZUxlZnRIZWlnaHQoQXRy
ZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyKSBhc20oIl9fIiAiQXRyZWVMZWZ0SGVpZ2h0Iik7CmV4
dGVybiBpbnQgQXRyZWVSaWdodEhlaWdodChBdHJlZVJlcSogcmVxLCBBdHJlZUlkeCBjdXIpIGFz
bSgiX18iICJBdHJlZVJpZ2h0SGVpZ2h0Iik7CmV4dGVybiBpbnQgQXRyZWVOb2RlSGVpZ2h0KEF0
cmVlUmVxKiByZXEsIEF0cmVlSWR4IGN1cikgYXNtKCJfXyIgIkF0cmVlTm9kZUhlaWdodCIpOwpl
eHRlcm4gQXRyZWVJZHggQXRyZWVBYm92ZU5vZGUoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3Vy
KSBhc20oIl9fIiAiQXRyZWVBYm92ZU5vZGUiKTsKZXh0ZXJuIGludCBBdHJlZUdldERhdGEoQXRy
ZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyLCBBcmVhNjQqIGRhdGFQKSBhc20oIl9fIiAiQXRyZWVH
ZXREYXRhIik7CmV4dGVybiBpbnQgQXRyZWVTZXREYXRhKEF0cmVlUmVxKiByZXEsIEF0cmVlSWR4
IGN1ciwgQXJlYTY0IGRhdGEpIGFzbSgiX18iICJBdHJlZVNldERhdGEiKTsKZXh0ZXJuIEF0cmVl
SWR4IEF0cmVlTmV4dERhdGEoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyLCBBcmVhNjQqIGRh
dGFQKSBhc20oIl9fIiAiQXRyZWVOZXh0RGF0YSIpOwpleHRlcm4gQXRyZWVJZHggQXRyZWVQcmV2
RGF0YShBdHJlZVJlcSogcmVxLCBBdHJlZUlkeCBjdXIsIEFyZWE2NCogZGF0YVApIGFzbSgiX18i
ICJBdHJlZVByZXZEYXRhIik7CmV4dGVybiBpbnQgQXRyZWVMb2FkTm9kZVNldEluZm8oQXRyZWVS
ZXEqIHJlcSwgQXJlYTI1NiogaW5mbykgYXNtKCJfXyIgIkF0cmVlTG9hZE5vZGVTZXRJbmZvIik7
CmV4dGVybiBpbnQgQXRyZWVTdG9yZU5vZGVTZXRJbmZvKEF0cmVlUmVxKiByZXEsIEFyZWEyNTYq
IGluZm8pIGFzbSgiX18iICJBdHJlZVN0b3JlTm9kZVNldEluZm8iKTsKZXh0ZXJuIGludCBBdHJl
ZUxvYWRUcmVlSW5mbyhBdHJlZVJlcSogcmVxLCBBcmVhMjU2KiBpbmZvKSBhc20oIl9fIiAiQXRy
ZWVMb2FkVHJlZUluZm8iKTsKZXh0ZXJuIGludCBBdHJlZVN0b3JlVHJlZUluZm8oQXRyZWVSZXEq
IHJlcSwgQXJlYTI1NiogaW5mbykgYXNtKCJfXyIgIkF0cmVlU3RvcmVUcmVlSW5mbyIpOwpleHRl
cm4gaW50IEF0cmVlQ2hlY2tUcmVlQ29uc2lzdGVuY3koQXRyZWVSZXEqIHJlcSkgYXNtKCJfXyIg
IkF0cmVlQ2hlY2tUcmVlQ29uc2lzdGVuY3kiKTsKCmV4dGVybiBBdHJlZUlkeCBBdHJlZU5leHRV
bmlxTm9kZShBdHJlZVJlcSogcmVxLCBBdHJlZUlkeCBjdXIpIGFzbSgiX18iICJBdHJlZU5leHRV
bmlxTm9kZSIpOwpleHRlcm4gQXRyZWVJZHggQXRyZWVQcmV2VW5pcU5vZGUoQXRyZWVSZXEqIHJl
cSwgQXRyZWVJZHggY3VyKSBhc20oIl9fIiAiQXRyZWVQcmV2VW5pcU5vZGUiKTsKZXh0ZXJuIEF0
cmVlSWR4IEF0cmVlTmV4dFVuaXFEYXRhKEF0cmVlUmVxKiByZXEsIEF0cmVlSWR4IGN1ciwgQXJl
YTY0KiBkYXRhUCkgYXNtKCJfXyIgIkF0cmVlTmV4dFVuaXFEYXRhIik7CmV4dGVybiBBdHJlZUlk
eCBBdHJlZVByZXZVbmlxRGF0YShBdHJlZVJlcSogcmVxLCBBdHJlZUlkeCBjdXIsIEFyZWE2NCog
ZGF0YVApIGFzbSgiX18iICJBdHJlZVByZXZVbmlxRGF0YSIpOwoKZXh0ZXJuIEF0cmVlSWR4IEF0
cmVlU2FtZVRvcE5vZGUoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyKSBhc20oIl9fIiAiQXRy
ZWVTYW1lVG9wTm9kZSIpOwpleHRlcm4gQXRyZWVJZHggQXRyZWVTYW1lTGFzdE5vZGUoQXRyZWVS
ZXEqIHJlcSwgQXRyZWVJZHggY3VyKSBhc20oIl9fIiAiQXRyZWVTYW1lTGFzdE5vZGUiKTsKZXh0
ZXJuIEF0cmVlSWR4IEF0cmVlU2FtZVRvcERhdGEoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3Vy
LCBBcmVhNjQqIGRhdGFQKSBhc20oIl9fIiAiQXRyZWVTYW1lVG9wRGF0YSIpOwpleHRlcm4gQXRy
ZWVJZHggQXRyZWVTYW1lTGFzdERhdGEoQXRyZWVSZXEqIHJlcSwgQXRyZWVJZHggY3VyLCBBcmVh
NjQqIGRhdGFQKSBhc20oIl9fIiAiQXRyZWVTYW1lTGFzdERhdGEiKTsKCmV4dGVybiBCb29sIEF0
cmVlSXNVbmlxdWVOb2RlKEF0cmVlUmVxKiByZXEsIEF0cmVlSWR4IGN1cikgYXNtKCJfXyIgIkF0
cmVlSXNVbmlxdWVOb2RlIik7CgpleHRlcm4gaW50IEF0cmVlR2V0Tm9kZU51bShBdHJlZVJlcSog
cmVxKSBhc20oIl9fIiAiQXRyZWVHZXROb2RlTnVtIik7CmV4dGVybiBpbnQgQXRyZWVHZXRVbmlx
Tm9kZU51bShBdHJlZVJlcSogcmVxKSBhc20oIl9fIiAiQXRyZWVHZXRVbmlxTm9kZU51bSIpOwpl
eHRlcm4gaW50IEF0cmVlRmx1c2hOb2RlcyhBdHJlZVJlcSogcmVxKSBhc20oIl9fIiAiQXRyZWVG
bHVzaE5vZGVzIik7Cgp0eXBlZGVmIHN0cnVjdCBBdHJlZVRyZWVIZWFkSW5mbyB7CiAgICBBdHJl
ZUlkeCB0cmVlUm9vdDsKICAgIEF0cmVlSWR4IGxvd2VzdE5vZGU7CiAgICBBdHJlZUlkeCBoaWdo
ZXN0Tm9kZTsKICAgIGludCBpbmRleDsKICAgIHUzMiB0cmVlSWQ7CiAgICBBcmVhMjU2IHVzZXJJ
bmZvOwp9IEF0cmVlVHJlZUhlYWRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgQXRyZWVOb2RlU2V0SW5m
byB7CiAgICB1MzIgbnVtVHJlZTsKICAgIHUzMiB0b3RhbE5vZGVzOwogICAgdTMyIHRvdGFsRnJl
ZTsKICAgIHUzMiB0b3BOb2RlSWR4OwogICAgdTMyIGxhc3RDaHVua1RvcDsKICAgIHUzMiBmcmVl
Tm9kZTsKICAgIHUzMiByc3ZzWzJdOwp9IEF0cmVlTm9kZVNldEluZm87CgpleHRlcm4gaW50IEF0
cmVlR2V0VHJlZUluZm8oQXRyZWVSZXEqIG9uZU9mT3BlbmVkVHJlZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG51bUluZm8sIEF0cmVlVHJlZUhlYWRJbmZvIGluZm9zW10p
IGFzbSgiX18iICJBdHJlZUdldFRyZWVJbmZvIik7CmV4dGVybiBpbnQgQXRyZWVHZXROb2RlU2V0
SW5mbyhBdHJlZVJlcSogcmVxLCBBdHJlZU5vZGVTZXRJbmZvKiBpbmZvKSBhc20oIl9fIiAiQXRy
ZWVHZXROb2RlU2V0SW5mbyIpOwoKCiNkZWZpbmUgQXRyZWVCdWlsZFJlcShyZXEsb3Byc0EsYXV4
QXJnQSxjb21wYXJlQXJnQSxvcGVuQXJnQSxjbG9zZUFyZ0EsZ3Jvd0FyZ0EscmVkdWNlQXJnQSkg
eyAocmVxKS0+b3BycyA9IChjb25zdCBBdHJlZUNhbGxiYWNrcyopKG9wcnNBKTsgKHJlcSktPmF1
eEFyZy52YWwgPSAoYXV4QXJnQSk7IChyZXEpLT5jb21wYXJlQXJnLnZhbCA9IChjb21wYXJlQXJn
QSk7IChyZXEpLT5vcGVuQXJnLnZhbCA9IChvcGVuQXJnQSk7IChyZXEpLT5jbG9zZUFyZy52YWwg
PSAoY2xvc2VBcmdBKTsgKHJlcSktPmdyb3dBcmcudmFsID0gKGdyb3dBcmdBKTsgKHJlcSktPnJl
ZHVjZUFyZy52YWwgPSAocmVkdWNlQXJnQSk7IH0KIyAyNzEgImF4aXMvYXRyZWUuaCIKZXh0ZXJu
IF9faW5saW5lX18gQXRyZWVSZXEqCkF0cmVlU2V0QXV4QXJnKEF0cmVlUmVxKiByZXEsIEFyZWEg
YXJnKQp7CiAgICByZXEtPmF1eEFyZyA9IGFyZzsKICAgIHJldHVybiByZXE7Cn0KCmV4dGVybiBf
X2lubGluZV9fIEF0cmVlUmVxKgpBdHJlZVNldE9wZW5BcmcoQXRyZWVSZXEqIHJlcSwgQXJlYSBh
cmcpCnsKICAgIHJlcS0+b3BlbkFyZyA9IGFyZzsKICAgIHJldHVybiByZXE7Cn0KCmV4dGVybiBf
X2lubGluZV9fIEF0cmVlUmVxKgpBdHJlZVNldENsb3NlQXJnKEF0cmVlUmVxKiByZXEsIEFyZWEg
YXJnKQp7CiAgICByZXEtPmNsb3NlQXJnID0gYXJnOwogICAgcmV0dXJuIHJlcTsKfQoKZXh0ZXJu
IF9faW5saW5lX18gQXRyZWVSZXEqCkF0cmVlU2V0R3Jvd0FyZyhBdHJlZVJlcSogcmVxLCBBcmVh
IGFyZykKewogICAgcmVxLT5ncm93QXJnID0gYXJnOwogICAgcmV0dXJuIHJlcTsKfQoKZXh0ZXJu
IF9faW5saW5lX18gQXRyZWVSZXEqCkF0cmVlU2V0UmVkdWNlQXJnKEF0cmVlUmVxKiByZXEsIEFy
ZWEgYXJnKQp7CiAgICByZXEtPnJlZHVjZUFyZyA9IGFyZzsKICAgIHJldHVybiByZXE7Cn0KIyAz
MTkgImF4aXMvYXRyZWUuaCIKZXh0ZXJuIGludCBBdHJlZUNyZWF0ZVdvcmsoQXRyZWVSZXEqKiBu
ZXdSZXFzLCBOdW0gblRyZWUsIE51bSB0b3RhbE5vZGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXRyZWVDb21wYXJlRnVuYyBjb21wYXJlRnVuYywgdm9pZCogYXJnKSBhc20oIl9fIiAi
QXRyZWVDcmVhdGVXb3JrIik7CmV4dGVybiBpbnQgQXRyZWVSZWxlYXNlV29yayhBdHJlZVJlcSog
d29ya1JlcSwgTnVtIG5UcmVlLCBOdW0gdG90YWxOb2RlcykgYXNtKCJfXyIgIkF0cmVlUmVsZWFz
ZVdvcmsiKTsKCgojIDI5ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIiAyCiMgMSAiYXhp
cy9hZGFtLmgiIDEKIyAxNCAiYXhpcy9hZGFtLmgiCiNkZWZpbmUgX0FYSVNfQURBTV9IXyAKCgoK
CiNkZWZpbmUgY0FkYW1GaWxlU3pNYXggMjE0NzQ4MzY0N0wKI2RlZmluZSBjQWRhbVN1YmZpbGVT
ek1heCAxMDczNzQxODI0TAojZGVmaW5lIGNBZGFtRGVzY01heCAyMTQ3NDgzNjQ3TAoKCiNkZWZp
bmUgY0FkYW1TdWJmaWxlSWRNYXggMTI3CgoKCgojZGVmaW5lIGNBZGFtTmlsIDAKCnR5cGVkZWYg
czMyIEFkYW1EZXNjOwp0eXBlZGVmIHMzMiBBZGFtUG9zOwoKdHlwZWRlZiBBcmVhMTI4IEFkYW1N
YWdpYzsKdHlwZWRlZiBBcmVhMjU2IEFkYW1Vc2VyTWFnaWM7CnR5cGVkZWYgQXJlYTEyOCBBZGFt
VXNlckF0dHI7CnR5cGVkZWYgdTY0IEFkYW1TdWJmaWxlSWQ7CnR5cGVkZWYgQXRpbWUgQWRhbU1v
ZFRpbWU7CgoKCgp0eXBlZGVmIHN0cnVjdCBBZGFtRmlsZVBhcmFtIHsKICAgIEFkYW1Vc2VyTWFn
aWMgbWFnaWM7CgogICAgQXJlYSByc3ZzWzhdOwp9IEFkYW1GaWxlUGFyYW07CgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgQWRhbVN1YmZpbGVQYXJhbSB7CiAgICBBZGFtVXNlckF0dHIgYXR0cjsKICAgIHUz
MiB0eXBlOwogICAgdW5pb24gewogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIFN6IHN1YmZp
bGVTejsKICAgICAgICB9IHBsYWluOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIE51bSBu
dW1WYWxpZEJsazsKICAgICAgICAgICAgTnVtIG51bVRvdGFsQmxrOwogICAgICAgIH0gcmJhOwog
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgIE51bSBudW1Ub3RhbEJsazsKICAgICAgICB9IHNi
YTsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBOdW0gbnVtVG90YWxFbG1zOwogICAgICAg
IH0gdmVsOwogICAgfSBlYWNoOwogICAgQXJlYSByc3ZzWzhdOwp9IEFkYW1TdWJmaWxlUGFyYW07
CgoKCgojZGVmaW5lIGNBZGFtUmRvbmx5IDAKI2RlZmluZSBjQWRhbVdydGFibGUgMQoKCgoKI2Rl
ZmluZSBjQWRhbVN1YmZpbGVOb25lIDAKI2RlZmluZSBjQWRhbVN1YmZpbGVQbGFpbiAxCiNkZWZp
bmUgY0FkYW1TdWJmaWxlUmFuZG9tQmxrQXJyYXkgMgojZGVmaW5lIGNBZGFtU3ViZmlsZVNvcnRl
ZEJsa0FycmF5IDMKI2RlZmluZSBjQWRhbVN1YmZpbGVWYXJFbG1MaXN0IDQKCgoKCmV4dGVybiBB
ZGFtRGVzYyBBZGFtQ3JlYXRlRmlsZShjb25zdCBDaHIqIHBhdGgsIHMzMiBtb2RlLCBBZGFtRmls
ZVBhcmFtKiBwYXJhbSkKICAgIGFzbSgiX18iICJBZGFtQ3JlYXRlRmlsZSIpOwpleHRlcm4gQWRh
bURlc2MgQWRhbU9wZW5GaWxlKGNvbnN0IENociogcGF0aCwgaW50IG9wZW5UeXBlLCBBZGFtVXNl
ck1hZ2ljKiBtYWdpYykKICAgIGFzbSgiX18iICJBZGFtT3BlbkZpbGUiKTsKZXh0ZXJuIGludCBB
ZGFtQ2xvc2VGaWxlKEFkYW1EZXNjIGRlc2MpCiAgICBhc20oIl9fIiAiQWRhbUNsb3NlRmlsZSIp
OwpleHRlcm4gaW50IEFkYW1Mb2NrRmlsZShBZGFtRGVzYyBkZXNjKQogICAgYXNtKCJfXyIgIkFk
YW1Mb2NrRmlsZSIpOwpleHRlcm4gaW50IEFkYW1VbmxvY2tGaWxlKEFkYW1EZXNjIGRlc2MpCiAg
ICBhc20oIl9fIiAiQWRhbVVubG9ja0ZpbGUiKTsKCgoKCmV4dGVybiBBZGFtRGVzYyBBZGFtQ3Jl
YXRlU3ViZmlsZShBZGFtRGVzYyBmaWxlRGVzYywgQWRhbVN1YmZpbGVJZCBpZCwgY29uc3QgQ2hy
KiBsYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwg
QWRhbVN1YmZpbGVQYXJhbSogcGFyYW0pCiAgICBhc20oIl9fIiAiQWRhbUNyZWF0ZVN1YmZpbGUi
KTsKZXh0ZXJuIEFkYW1EZXNjIEFkYW1PcGVuU3ViZmlsZShBZGFtRGVzYyBmaWxlRGVzYywgQWRh
bVN1YmZpbGVJZCBpZCkKICAgIGFzbSgiX18iICJBZGFtT3BlblN1YmZpbGUiKTsKZXh0ZXJuIEFk
YW1EZXNjIEFkYW1PcGVuU3ViZmlsZUJ5TGFiZWwoQWRhbURlc2MgZmlsZURlc2MsIGNvbnN0IENo
ciogbGFiZWwpCiAgICBhc20oIl9fIiAiQWRhbU9wZW5TdWJmaWxlQnlMYWJlbCIpOwpleHRlcm4g
aW50IEFkYW1DbG9zZVN1YmZpbGUoQWRhbURlc2MgZGVzYykKICAgIGFzbSgiX18iICJBZGFtQ2xv
c2VTdWJmaWxlIik7CmV4dGVybiBpbnQgQWRhbUdldFN1YmZpbGVQYXJhbShBZGFtRGVzYyBkZXNj
LCBBZGFtU3ViZmlsZVBhcmFtKiBwYXJhbSkKICAgIGFzbSgiX18iICJBZGFtR2V0U3ViZmlsZVBh
cmFtIik7CmV4dGVybiBpbnQgQWRhbUNoYW5nZVN1YmZpbGVQYXJhbShBZGFtRGVzYyBkZXNjLCBB
ZGFtU3ViZmlsZVBhcmFtKiBwYXJhbSkKICAgIGFzbSgiX18iICJBZGFtQ2hhbmdlU3ViZmlsZVBh
cmFtIik7CmV4dGVybiBpbnQgQWRhbU1hcFN1YmZpbGUoQWRhbURlc2MgZGVzYywgaW50IG1hcFR5
cGUpCiAgICBhc20oIl9fIiAiQWRhbU1hcFN1YmZpbGUiKTsKZXh0ZXJuIGludCBBZGFtR2V0QWRk
cihBZGFtRGVzYyBkZXNjLCB2b2lkKiogYWRkcikKICAgIGFzbSgiX18iICJBZGFtR2V0QWRkciIp
OwpleHRlcm4gaW50IEFkYW1Vbm1hcFN1YmZpbGUoQWRhbURlc2MgZGVzYykKICAgIGFzbSgiX18i
ICJBZGFtVW5tYXBTdWJmaWxlIik7CmV4dGVybiBpbnQgQWRhbVJlc2l6ZVN1YmZpbGUoQWRhbURl
c2MgZGVzYywgU3ogbmV3U3opCiAgICBhc20oIl9fIiAiQWRhbVJlc2l6ZVN1YmZpbGUiKTsKZXh0
ZXJuIEFkYW1Qb3MgQWRhbUFsbG9jSXQoQWRhbURlc2MgZGVzYywgU3ogYWxsb2NTeikKICAgIGFz
bSgiX18iICJBZGFtQWxsb2NJdCIpOwpleHRlcm4gaW50IEFkYW1GcmVlSXQoQWRhbURlc2MgZGVz
YywgQWRhbVBvcyB0YXJnZXQpCiAgICBhc20oIl9fIiAiQWRhbUZyZWVJdCIpOwpleHRlcm4gQWRh
bVBvcyBBZGFtR2V0TmV4dEl0KEFkYW1EZXNjIGRlc2MsIEFkYW1Qb3MgY3VyUG9zKQogICAgYXNt
KCJfXyIgIkFkYW1HZXROZXh0SXQiKTsKZXh0ZXJuIGludCBBZGFtR2V0SXRzQWRkcihBZGFtRGVz
YyBkZXNjLCBBZGFtUG9zIGN1clBvcywgdm9pZCoqIGFkZHIpCiAgICBhc20oIl9fIiAiQWRhbUdl
dEl0c0FkZHIiKTsKZXh0ZXJuIE51bSBBZGFtR2V0VGhlbShBZGFtRGVzYyBkZXNjLCBBZGFtUG9z
IHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bSBudW0sIEFkYW1Q
b3MgcG9zc1tdLCB2b2lkKiBhZGRyc1tdKQogICAgYXNtKCJfXyIgIkFkYW1HZXRUaGVtIik7CmV4
dGVybiBpbnQgQWRhbUxpc3RWYXJFbG0oQWRhbURlc2MgZGVzYywgaW50IG91dHB1dCwgY29uc3Qg
Y2hhciogcHJlZml4KQogICAgYXNtKCJfXyIgIkFkYW1MaXN0VmFyRWxtIik7CgoKIyAzMCAiLi4v
Li4vc3JjL3NkYm0udjAvc2RibWZsZHUuYyIgMgojIDEgImF4aXMvc2RibS5oIiAxCiMgMTQgImF4
aXMvc2RibS5oIgojZGVmaW5lIF9BWElTX1NEQk1fSF8gCgoKCgoKCgp0eXBlZGVmIHMzMiBTZGJt
RGVzYzsKCgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBTZGJtUmVjSWQ7CiNkZWZpbmUgY1NkYm1SZWNv
cmRNYXhOdW0gNTM2ODcwOTEyCgoKCgoKdHlwZWRlZiBzMzIgU2RibUZsZE5vOwojZGVmaW5lIGNT
ZGJtRmxkTm9NaW4gMQojZGVmaW5lIGNTZGJtRmxkTm9NYXggMjA0NwoKCgoKCgp0eXBlZGVmIHMz
MiBTZGJtVmVjRmxkSWR4OwojZGVmaW5lIGNTZGJtVmVjSWR4QW55IDAKI2RlZmluZSBjU2RibVZl
Y0lkeE1pbiAxCiNkZWZpbmUgY1NkYm1WZWNJZHhNYXggMTY3NzcyMTYKI2RlZmluZSBTZGJtVmVj
SWR4VG9SZWZJZHgodmVjSWR4KSAoKHZlY0lkeCktMSkKI2RlZmluZSBTZGJtUmVmSWR4VG9WZWNJ
ZHgocmVmSWR4KSAoKHJlZklkeCkrMSkKCgoKCgp0eXBlZGVmIHMzMiBTZGJtVGFibGVObzsKI2Rl
ZmluZSBjU2RibVRhYmxlTm9NaW4gMQojZGVmaW5lIGNTZGJtVGFibGVOb01heCAxMDIzCgoKCgp0
eXBlZGVmIHMzMiBTZGJtRW51bVNldElkOwojZGVmaW5lIGNTZGJtRW51bVNldElkTWluIDEKI2Rl
ZmluZSBjU2RibUVudW1TZXRJZE1heCAxMDIzCgoKCgp0eXBlZGVmIHMzMiBTZGJtRW51bVVuaXRJ
ZDsKI2RlZmluZSBjU2RibUVudW1Vbml0SWRNaW4gMQoKCgoKI2RlZmluZSBjU2RibVZhckRhdGFM
ZW5NYXggMTY3NzcyMTUKCgoKCnR5cGVkZWYgc3RydWN0IFNkYm1QYXJhbSB7CiAgICBOdW0gbnVt
RmxkczsKICAgIEFyZWEgcnN2c1s3XTsKfSBTZGJtUGFyYW07CgoKCgp0eXBlZGVmIHN0cnVjdCBT
ZGJtU3RhdGlzIHsKICAgIEF0aW1lIGxhc3RVcGRhdGU7CiAgICBBcmVhIHJzdnNbNl07Cn0gU2Ri
bVN0YXRpczsKCgoKCnR5cGVkZWYgc3RydWN0IFNkYm1GbGREZWYgewogICAgQ2hyKiBmbGROYW1l
OwogICAgU2RibUZsZE5vIGZsZE5vOwogICAgdTMyIGZsZFR5cGU7CiAgICB1MzIgZmxkQXV4VHlw
ZTsKICAgIHUzMiBmbGRBdHRyczsKICAgIEFyZWExMjggdXNlckluZm87CiAgICB1MzIgdXNlcklu
Zm9QYXR0ZXJuOwogICAgQXJlYSByc3ZzWzJdOwp9IFNkYm1GbGREZWY7CiNkZWZpbmUgY1NkYm1G
bGRJc0tleSAweDAwMDAwMDAxCgp0eXBlZGVmIHVuaW9uIFNkYm1GbGREZWZMaW5rSW5mbyB7CiAg
ICB1MzIgd2hvbGU7CiAgICBzdHJ1Y3QgewogICAgICAgIHUzMiBpc0NvcHlPbldyaXRlIDoxLAog
ICAgICAgICAgICAgICAgOjMsCiAgICAgICAgICAgICAgICBsaW5rVG9UYWJsZToxMiwKICAgICAg
ICAgICAgICAgIGxpbmtUb0ZsZE5vOjE2OwogICAgfSBkZXRhaWw7Cn0gU2RibUZsZERlZkxpbmtJ
bmZvOwoKZXh0ZXJuIGlubGluZSB1MzIKU2RibU1ha2VGbGRBdXhUeXBlRm9yTGlua1NoYXJlZChT
ZGJtVGFibGVObyB0YWJsZU5vLCBTZGJtRmxkTm8gZmxkTm8pCnsKICAgIFNkYm1GbGREZWZMaW5r
SW5mbyBhdXhUeXBlOwogICAgYXV4VHlwZS53aG9sZSA9IDA7CiAgICBhdXhUeXBlLmRldGFpbC5s
aW5rVG9UYWJsZSA9IHRhYmxlTm87CiAgICBhdXhUeXBlLmRldGFpbC5saW5rVG9GbGRObyA9IHRh
YmxlTm87CiAgICByZXR1cm4gYXV4VHlwZS53aG9sZTsKfQoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2Ri
bUZsZFJlZiB7CiAgICB1MzIgZmxkVHlwZSA6OCwKICAgICAgICAgICAgICAgIHZlY0lkeCA6MjQ7
CiAgICB1MzIgZmxkU2l6ZTsKICAgIHVuaW9uIHsKICAgICAgICBBcmVhNjQgdmFsdWU7CiAgICAg
ICAgdm9pZCogcmVhZFB0cjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBTZGJtRW51bVNl
dElkIGVudW1TZXRJZDsKICAgICAgICAgICAgU2RibUVudW1Vbml0SWQgZW51bVVuaXRJZDsKICAg
ICAgICB9IGVudW1WYWx1ZTsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBDaHIqIHN0cjsK
ICAgICAgICB9IHN0cjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjb25zdCB2b2lkKiBk
YXRhOwogICAgICAgICAgICBMZW4gZGF0YUxlbjsKICAgICAgICB9IG9wYXE7CiAgICAgICAgU2Ri
bVJlY0lkIHJlY0lkOwogICAgfSB2Owp9IFNkYm1GbGRSZWY7Cgp0eXBlZGVmIHN0cnVjdCBTZGJt
RmxkRWxtUHRyIHsKICAgIFNkYm1SZWNJZCByZWNvcmQ7CiAgICBTZGJtVmVjRmxkSWR4IHZlY0lk
eDsKfSBTZGJtRmxkRWxtUHRyOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2RibVF1ZXJ5Q29uZCB7CiAg
ICBTZGJtRmxkTm8gZmxkTm87CiAgICB1MzIgY29uZFR5cGU7CiAgICBTZGJtRmxkUmVmIGNvbmRW
YWx1ZTsKfSBTZGJtUXVlcnlDb25kOwoKCgoKI2RlZmluZSBjU2RibUZsZE5vbmVUeXBlIDB4MDAK
I2RlZmluZSBjU2RibUZsZE51bWVyaWMgMHgwMQojZGVmaW5lIGNTZGJtRmxkU3RyIDB4MDIKI2Rl
ZmluZSBjU2RibUZsZEJpdG1hcCAweDAzCiNkZWZpbmUgY1NkYm1GbGRGbG9hdCAweDA0CiNkZWZp
bmUgY1NkYm1GbGRFbnVtIDB4MTAKI2RlZmluZSBjU2RibUZsZEVudW1WYWwgMHgxMQojZGVmaW5l
IGNTZGJtRmxkRW51bU5hbWUgMHgxMgojZGVmaW5lIGNTZGJtRmxkTGluayAweDgwCiNkZWZpbmUg
Y1NkYm1GbGRVbmljb2RlIDB4MjEKI2RlZmluZSBjU2RibUZsZE9wYXF1ZSAweDMwCgojZGVmaW5l
IGNTZGJtRmxkVHlwZU1heCAyNTUKCgoKCiNkZWZpbmUgY1NkYm1OdW1lcmljTWluICgtOTIyMzM3
MjAzNjg1NDc3NTgwOExMKQojZGVmaW5lIGNTZGJtTnVtZXJpY01heCA5MjIzMzcyMDM2ODU0Nzc1
ODA3TEwKCiNkZWZpbmUgY1NkYm1CaXRtYXBOdW1CaXRzIDY0CgoKCgoKI2RlZmluZSBjU2RibVF1
ZXJ5TnVtZXJpY01hc2sgMHhGMDAwMDAwNwojZGVmaW5lIGNTZGJtUXVlcnlFcSAweDAwMDAwMDAx
CiNkZWZpbmUgY1NkYm1RdWVyeUxvIDB4MDAwMDAwMDIKI2RlZmluZSBjU2RibVF1ZXJ5SGkgMHgw
MDAwMDAwNAojZGVmaW5lIGNTZGJtUXVlcnlOb3RFcSAweDAwMDAwMDA2CgojZGVmaW5lIGNTZGJt
UXVlcnlNYXRjaE1hc2sgMHhGMDAwMDBGOAojZGVmaW5lIGNTZGJtUXVlcnlNYXRjaCAweDAwMDAw
MDA4CiNkZWZpbmUgY1NkYm1RdWVyeUZyd2RNYXRjaCAweDAwMDAwMDEwCiNkZWZpbmUgY1NkYm1R
dWVyeUJrd2RNYXRjaCAweDAwMDAwMDIwCiNkZWZpbmUgY1NkYm1RdWVyeVVubWF0Y2ggMHgwMDAw
MDAzMAojZGVmaW5lIGNTZGJtUXVlcnlIZWFkTWF0Y2ggMHgwMDAwMDA0MAoKI2RlZmluZSBjU2Ri
bVF1ZXJ5Qml0bWFwTWFzayAweEYwMDAwRjAwCiNkZWZpbmUgY1NkYm1RdWVyeUFuZE1hdGNoIDB4
MDAwMDAxMDAKI2RlZmluZSBjU2RibVF1ZXJ5QW5kWmVybyAweDAwMDAwMjAwCiNkZWZpbmUgY1Nk
Ym1RdWVyeUFuZFVubWF0Y2ggMHgwMDAwMDMwMAojZGVmaW5lIGNTZGJtUXVlcnlPck1hdGNoIDB4
MDAwMDA0MDAKI2RlZmluZSBjU2RibVF1ZXJ5T3JaZXJvIDB4MDAwMDA1MDAKI2RlZmluZSBjU2Ri
bVF1ZXJ5T3JVbm1hdGNoIDB4MDAwMDA2MDAKI2RlZmluZSBjU2RibVF1ZXJ5WG9yTWF0Y2ggMHgw
MDAwMDcwMAojZGVmaW5lIGNTZGJtUXVlcnlYb3JaZXJvIDB4MDAwMDA4MDAKI2RlZmluZSBjU2Ri
bVF1ZXJ5WG9yVW5tYXRjaCAweDAwMDAwOTAwCgojZGVmaW5lIGNTZGJtUXVlcnlFbnVtTWFzayAw
eEYwMDA3MDAwCiNkZWZpbmUgY1NkYm1RdWVyeUVudW1WYWxFcSAweDAwMDAxMDAwCiNkZWZpbmUg
Y1NkYm1RdWVyeUVudW1WYWxOb3RFcSAweDAwMDA1MDAwCiNkZWZpbmUgY1NkYm1RdWVyeUVudW1O
YW1lRXEgMHgwMDAwMjAwMAojZGVmaW5lIGNTZGJtUXVlcnlFbnVtTmFtZU5vdEVxIDB4MDAwMDYw
MDAKCgojZGVmaW5lIGNTZGJtUXVlcnlBbGwgMHgxMDAwMDAwMAoKZXh0ZXJuIGludCBTZGJtRXh0
cmFjdFJlY29yZE5vKFNkYm1SZWNJZCByZWNJZCkKICAgIGFzbSgiX18iICJTZGJtRXh0cmFjdFJl
Y29yZE5vIik7CmV4dGVybiBpbnQgU2RibVJlY0lkRXEoU2RibVJlY0lkIHJlY0lkMSwgU2RibVJl
Y0lkIHJlY0lkMikKICAgIGFzbSgiX18iICJTZGJtUmVjSWRFcSIpOwoKCgoKZXh0ZXJuIFNkYm1E
ZXNjIFNkYm1CdWlsZERiKGNvbnN0IENociogZGJQYXRoTmFtZSwgY29uc3QgQ2hyKiBkYk5hbWUp
CiAgICBhc20oIl9fIiAiU2RibUJ1aWxkRGIiKTsKZXh0ZXJuIFNkYm1EZXNjIFNkYm1PcGVuRGIo
Y29uc3QgQ2hyKiBkYlBhdGhOYW1lLCBjb25zdCBDaHIqIGRiTmFtZSwgQm9vbCB3cml0YWJsZSkK
ICAgIGFzbSgiX18iICJTZGJtT3BlbkRiIik7CmV4dGVybiBpbnQgU2RibUNsb3NlRGIoU2RibURl
c2MgZGJEZXNjKQogICAgYXNtKCJfXyIgIlNkYm1DbG9zZURiIik7CmV4dGVybiBpbnQgU2RibUxv
Y2tEYihTZGJtRGVzYyBkYkRlc2MpCiAgICBhc20oIl9fIiAiU2RibUxvY2tEYiIpOwpleHRlcm4g
aW50IFNkYm1VbmxvY2tEYihTZGJtRGVzYyBkYkRlc2MpCiAgICBhc20oIl9fIiAiU2RibVVubG9j
a0RiIik7CmV4dGVybiBpbnQgU2RibUR1bXBEYihjb25zdCBDaHIqIGRiUGF0aE5hbWUsIGNvbnN0
IENociogZGJOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbGVEZXNj
LCBpbnQgZHVtcE1vZGUpCiAgICBhc20oIl9fIiAiU2RibUR1bXBEYiIpOwpleHRlcm4gaW50IFNk
Ym1SZXN0b3JlRGIoY29uc3QgQ2hyKiBkYlBhdGhOYW1lLCBpbnQgZmlsZURlc2MsIGludCByc3Ry
TW9kZSkKICAgIGFzbSgiX18iICJTZGJtUmVzdG9yZURiIik7CmV4dGVybiBpbnQgU2RibVVwZGF0
ZURiKGNvbnN0IENociogZGJQYXRoTmFtZSwgaW50IGZpbGVEZXNjLCBpbnQgcnN0ck1vZGUpCiAg
ICBhc20oIl9fIiAiU2RibVVwZGF0ZURiIik7CmV4dGVybiBpbnQgU2RibUxpc3RUYWJsZXMoU2Ri
bURlc2MgZGJEZXNjLCBOdW0gbnVtQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDaHIqIHRhYmxlTmFtZXNbXSwgaW50IHRhYmxlTm9zW10pCiAgICBhc20oIl9fIiAiU2Ri
bUxpc3RUYWJsZXMiKTsKZXh0ZXJuIGludCBTZGJtUHJpbnRGaWVsZChTZGJtRGVzYyB0YWJsZURl
c2MsIFNkYm1SZWNJZCByZWNJZCwgU2RibUZsZE5vIGZsZE5vLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBvdXRwdXREZXNjKQogICAgYXNtKCJfXyIgIlNkYm1QcmludEZp
ZWxkIik7CgoKCgpleHRlcm4gaW50IFNkYm1DcmVhdGVFbnVtU2V0KFNkYm1EZXNjIGRiRGVzYywg
U2RibUVudW1TZXRJZCBpZCwgY29uc3QgQ2hyKiBlbnVtU2V0TmFtZSkKICAgIGFzbSgiX18iICJT
ZGJtQ3JlYXRlRW51bVNldCIpOwpleHRlcm4gaW50IFNkYm1EZWxldGVFbnVtU2V0KFNkYm1EZXNj
IGRiRGVzYywgU2RibUVudW1TZXRJZCBpZCwgY29uc3QgQ2hyKiBlbnVtU2V0TmFtZSkKICAgIGFz
bSgiX18iICJTZGJtRGVsZXRlRW51bVNldCIpOwpleHRlcm4gaW50IFNkYm1BZGRFbnVtVW5pdChT
ZGJtRGVzYyBkYkRlc2MsIFNkYm1FbnVtU2V0SWQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENociogZW51bVVuaXROYW1lLCBBcmVhNjQgZW51bVVuaXRWYWwp
CiAgICBhc20oIl9fIiAiU2RibUFkZEVudW1Vbml0Iik7CmV4dGVybiBpbnQgU2RibURlbGV0ZUVu
dW1Vbml0KFNkYm1EZXNjIGRiRGVzYywgU2RibUVudW1TZXRJZCBpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hyKiBlbnVtVW5pdE5hbWUsIEFyZWE2NCBl
bnVtVW5pdFZhbCkKICAgIGFzbSgiX18iICJTZGJtRGVsZXRlRW51bVVuaXQiKTsKZXh0ZXJuIGlu
dCBTZGJtR2V0RW51bVNldEJ5TmFtZShTZGJtRGVzYyBkYkRlc2MsIGNvbnN0IENociogZW51bVNl
dE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUVudW1T
ZXRJZCogaWRQKQogICAgYXNtKCJfXyIgIlNkYm1HZXRFbnVtU2V0QnlOYW1lIik7CmV4dGVybiBp
bnQgU2RibUdldEVudW1TZXRCeUlkKFNkYm1EZXNjIGRiRGVzYywgQ2hyKiogZW51bVNldE5hbWVQ
LCBTZGJtRW51bVNldElkIGlkKQogICAgYXNtKCJfXyIgIlNkYm1HZXRFbnVtU2V0QnlJZCIpOwpl
eHRlcm4gTnVtIFNkYm1HZXRFbnVtVW5pdE51bUJ5TmFtZShTZGJtRGVzYyBkYkRlc2MsIGNvbnN0
IENociogZW51bVNldE5hbWUpCiAgICBhc20oIl9fIiAiU2RibUdldEVudW1Vbml0TnVtQnlOYW1l
Iik7CmV4dGVybiBOdW0gU2RibUdldEVudW1Vbml0TnVtKFNkYm1EZXNjIGRiRGVzYywgU2RibUVu
dW1TZXRJZCBpZCkKICAgIGFzbSgiX18iICJTZGJtR2V0RW51bVVuaXROdW0iKTsKZXh0ZXJuIE51
bSBTZGJtTGlzdEVudW1Vbml0KFNkYm1EZXNjIGRiRGVzYywgU2RibUVudW1TZXRJZCBpZCwgTnVt
IGVudW1Vbml0TnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hyKiBl
bnVtVW5pdE5hbWVzW10sIEFyZWE2NCBlbnVtVW5pdFZhbHNbXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNkYm1FbnVtVW5pdElkIGVudW1Vbml0SWRzW10pCiAgICBhc20o
Il9fIiAiU2RibUxpc3RFbnVtVW5pdCIpOwpleHRlcm4gaW50IFNkYm1HZXRFbnVtVW5pdEJ5TmFt
ZShTZGJtRGVzYyBkYkRlc2MsIFNkYm1FbnVtU2V0SWQgaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENociogZW51bVVuaXROYW1lLCBzNjQqIGVudW1V
bml0VmFsUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUVu
dW1Vbml0SWQqIGVudW1Vbml0SWRQKQogICAgYXNtKCJfXyIgIlNkYm1HZXRFbnVtVW5pdEJ5TmFt
ZSIpOwpleHRlcm4gaW50IFNkYm1HZXRFbnVtVW5pdEJ5VmFsKFNkYm1EZXNjIGRiRGVzYywgU2Ri
bUVudW1TZXRJZCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
aHIqKiBlbnVtVW5pdE5hbWVQLCBzNjQgZW51bVVuaXRWYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RibUVudW1Vbml0SWQqIGVudW1Vbml0SWRQKQogICAgYXNt
KCJfXyIgIlNkYm1HZXRFbnVtVW5pdEJ5VmFsIik7CmV4dGVybiBpbnQgU2RibUdldEVudW1Vbml0
QnlJZChTZGJtRGVzYyBkYkRlc2MsIFNkYm1FbnVtU2V0SWQgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaHIqKiBlbnVtVW5pdE5hbWVQLCBzNjQqIGVudW1Vbml0
VmFsUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1FbnVtVW5p
dElkIGVudW1Vbml0SWQpCiAgICBhc20oIl9fIiAiU2RibUdldEVudW1Vbml0QnlJZCIpOwoKCgoK
CmV4dGVybiBTZGJtRGVzYyBTZGJtQnVpbGRUYWJsZShTZGJtRGVzYyBkYkRlc2MsIFNkYm1UYWJs
ZU5vIHRibE5vLCBjb25zdCBDaHIqIHRibE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTnVtIG51bUZsZHMsIFNkYm1GbGREZWYqIGZsZHMpCiAgICBhc20oIl9fIiAiU2Ri
bUJ1aWxkVGFibGUiKTsKZXh0ZXJuIFNkYm1EZXNjIFNkYm1PcGVuVGFibGUoU2RibURlc2MgZGJE
ZXNjLCBTZGJtVGFibGVObyB0YWJsZU5vKQogICAgYXNtKCJfXyIgIlNkYm1PcGVuVGFibGUiKTsK
ZXh0ZXJuIFNkYm1EZXNjIFNkYm1PcGVuVGFibGVCeU5hbWUoU2RibURlc2MgZGJEZXNjLCBjb25z
dCBDaHIqIHRibE5hbWUpCiAgICBhc20oIl9fIiAiU2RibU9wZW5UYWJsZUJ5TmFtZSIpOwpleHRl
cm4gaW50IFNkYm1DbG9zZVRhYmxlKFNkYm1EZXNjIHRhYmxlRGVzYykKICAgIGFzbSgiX18iICJT
ZGJtQ2xvc2VUYWJsZSIpOwoKCgoKZXh0ZXJuIE51bSBTZGJtR2V0UmVjTnVtKFNkYm1EZXNjIHRh
YmxlRGVzYykKICAgIGFzbSgiX18iICJTZGJtR2V0UmVjTnVtIik7CmV4dGVybiBOdW0gU2RibUdl
dEZsZE1heChTZGJtRGVzYyB0YWJsZURlc2MpCiAgICBhc20oIl9fIiAiU2RibUdldEZsZE1heCIp
OwpleHRlcm4gTnVtIFNkYm1MaXN0RmxkRGVmKFNkYm1EZXNjIHRhYmxlRGVzYywgTnVtIG51bUZs
ZHMsIFNkYm1GbGREZWYgZmxkc1tdKQogICAgYXNtKCJfXyIgIlNkYm1MaXN0RmxkRGVmIik7CmV4
dGVybiBOdW0gU2RibUxpc3RMaW5rRmxkRGVmKFNkYm1EZXNjIHRhYmxlRGVzYywgTnVtIG51bUZs
ZHMsIFNkYm1GbGREZWYgZmxkc1tdKQogICAgYXNtKCJfXyIgIlNkYm1MaXN0TGlua0ZsZERlZiIp
OwpleHRlcm4gaW50IFNkYm1HZXRUYWJsZUluZm8oU2RibURlc2MgdGFibGVEZXNjLCBDaHIqKiB0
YWJsZU5hbWUsIFNkYm1UYWJsZU5vKiB0YWJsZU5vKQogICAgYXNtKCJfXyIgIlNkYm1HZXRUYWJs
ZUluZm8iKTsKCgoKCmV4dGVybiBTZGJtUmVjSWQgU2RibUFkZFJlYyhTZGJtRGVzYyB0YWJsZURl
c2MpCiAgICBhc20oIl9fIiAiU2RibUFkZFJlYyIpOwpleHRlcm4gaW50IFNkYm1EZWxldGVSZWMo
U2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjKQogICAgYXNtKCJfXyIgIlNkYm1EZWxl
dGVSZWMiKTsKZXh0ZXJuIE51bSBTZGJtUXVlcnlSZWMoU2RibURlc2MgdGFibGVEZXNjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW0gbnVtUXVlcmllcywgU2RibVF1ZXJ5Q29u
ZCBxdWVyaWVzW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bSBudW1Tb3J0
RmxkcywgU2RibUZsZE5vIHNvcnRGbGRzW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE51bSBudW1SZWNzLCBTZGJtUmVjSWQgcmVjc1tdKQogICAgYXNtKCJfXyIgIlNkYm1RdWVy
eVJlYyIpOwpleHRlcm4gTnVtIFNkYm1MaXN0UmVjKFNkYm1EZXNjIHRhYmxlRGVzYywgTnVtIG51
bVJlY3MsIFNkYm1SZWNJZCByZWNzW10pCiAgICBhc20oIl9fIiAiU2RibUxpc3RSZWMiKTsKZXh0
ZXJuIE51bSBTZGJtTGlzdFJlY1NvcnQoU2RibURlc2MgdGFibGVEZXNjLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOdW0gbnVtU29ydEZsZHMsIFNkYm1GbGRObyBzb3J0Rmxk
c1tdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW0gbnVtUmVjcywgU2Ri
bVJlY0lkIHJlY3NbXSkKICAgIGFzbSgiX18iICJTZGJtTGlzdFJlY1NvcnQiKTsKZXh0ZXJuIE51
bSBTZGJtTGlzdFJlY1NvcnRCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW0gbnVtU29ydEZsZHMsIENociogc29ydEZs
ZE5hbWVzW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bSBu
dW1SZWNzLCBTZGJtUmVjSWQgcmVjc1tdKQogICAgYXNtKCJfXyIgIlNkYm1MaXN0UmVjU29ydEJ5
TmFtZSIpOwpleHRlcm4gTnVtIFNkYm1MaXN0UmVjV2l0aFZhbGlkRmxkKFNkYm1EZXNjIHRhYmxl
RGVzYywgU2RibUZsZE5vIGZsZE5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE51bSBudW1SZWNzLCBTZGJtUmVjSWQgcmVjc1tdKQogICAgYXNtKCJfXyIgIlNk
Ym1MaXN0UmVjV2l0aFZhbGlkRmxkIik7CmV4dGVybiBOdW0gU2RibUxpc3RSZWNXaXRoVmFsaWRG
bGRCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBjb25zdCBDaHIqIG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtIG51bVJlY3MsIFNkYm1S
ZWNJZCByZWNzW10pCiAgICBhc20oIl9fIiAiU2RibUxpc3RSZWNXaXRoVmFsaWRGbGRCeU5hbWUi
KTsKCgoKCmV4dGVybiBOdW0gU2RibUdldEZsZChTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJ
ZCByZWMsIFNkYm1GbGRObyBub0ZsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51
bSBudW1GbGRSZWYsIFNkYm1GbGRSZWYgZmxkUmVmW10pCiAgICBhc20oIl9fIiAiU2RibUdldEZs
ZCIpOwpleHRlcm4gTnVtIFNkYm1DaGFuZ2VGbGQoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVj
SWQgcmVjLCBTZGJtRmxkTm8gbm9GbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOdW0gbnVtRmxkUmVmLCBTZGJtRmxkUmVmIGZsZFJlZltdKQogICAgYXNtKCJfXyIgIlNkYm1D
aGFuZ2VGbGQiKTsKZXh0ZXJuIE51bSBTZGJtR2V0TGlua0ZsZChTZGJtRGVzYyB0YWJsZURlc2Ms
IFNkYm1SZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOdW0gbnVtRmxkUmVmLCBTZGJtRmxkUmVmIGZsZFJlZltdKQogICAgYXNtKCJf
XyIgIlNkYm1HZXRMaW5rRmxkIik7CmV4dGVybiBOdW0gU2RibUNoYW5nZUxpbmtGbGQoU2RibURl
c2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBTZGJtRmxkTm8gbm9GbGQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtIG51bUZsZFJlZiwgU2RibUZsZFJlZiBmbGRS
ZWZbXSkKICAgIGFzbSgiX18iICJTZGJtQ2hhbmdlTGlua0ZsZCIpOwpleHRlcm4gTnVtIFNkYm1F
cmFzZUZsZChTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWMsIFNkYm1GbGRObyBub0Zs
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtIG51bUluZGV4LCBTZGJtVmVj
RmxkSWR4IGluZGV4aWVzW10pCiAgICBhc20oIl9fIiAiU2RibUVyYXNlRmxkIik7CmV4dGVybiBO
dW0gU2RibUVyYXNlTGlua0ZsZChTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWMsIFNk
Ym1GbGRObyBub0ZsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bSBu
dW1JbmRleCwgU2RibVZlY0ZsZElkeCBpbmRleGllc1tdKQogICAgYXNtKCJfXyIgIlNkYm1FcmFz
ZUxpbmtGbGQiKTsKZXh0ZXJuIE51bSBTZGJtQ2xlYXJGbGQoU2RibURlc2MgdGFibGVEZXNjLCBT
ZGJtUmVjSWQgcmVjLCBTZGJtRmxkTm8gbm9GbGQpCiAgICBhc20oIl9fIiAiU2RibUNsZWFyRmxk
Iik7CmV4dGVybiBOdW0gU2RibUNsZWFyTGlua0ZsZChTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1S
ZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCkKICAgIGFzbSgiX18iICJTZGJtQ2xlYXJMaW5rRmxk
Iik7CmV4dGVybiBOdW0gU2RibUdldEZsZEVsbU51bShTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1S
ZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCkKICAgIGFzbSgiX18iICJTZGJtR2V0RmxkRWxtTnVt
Iik7CmV4dGVybiBOdW0gU2RibUdldEZsZEVsbU1heChTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1S
ZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCkKICAgIGFzbSgiX18iICJTZGJtR2V0RmxkRWxtTWF4
Iik7CmV4dGVybiBOdW0gU2RibUdldEZsZEVsbShTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJ
ZCByZWMsIFNkYm1GbGRObyBub0ZsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNkYm1WZWNGbGRJZHggdmVjSWR4LCBTZGJtRmxkUmVmKiBmbGRSZWYpCiAgICBhc20oIl9fIiAi
U2RibUdldEZsZEVsbSIpOwpleHRlcm4gTnVtIFNkYm1HZXRMaW5rRmxkRWxtKFNkYm1EZXNjIHRh
YmxlRGVzYywgU2RibVJlY0lkIHJlY0lkLCBTZGJtRmxkTm8gZmxkTm8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIFNkYm1GbGRSZWYq
IGZsZFJlZikKICAgIGFzbSgiX18iICJTZGJtR2V0TGlua0ZsZEVsbSIpOwpleHRlcm4gTnVtIFNk
Ym1HZXRGbGRCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBjb25zdCBD
aHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW0gbnVt
RmxkUmVmLCBTZGJtRmxkUmVmIGZsZFJlZltdKQogICAgYXNtKCJfXyIgIlNkYm1HZXRGbGRCeU5h
bWUiKTsKZXh0ZXJuIE51bSBTZGJtQ2hhbmdlRmxkQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywg
U2RibVJlY0lkIHJlYywgY29uc3QgQ2hyKiBmbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTnVtIG51bUZsZFJlZiwgU2RibUZsZFJlZiBmbGRSZWZbXSkKICAgIGFzbSgi
X18iICJTZGJtQ2hhbmdlRmxkQnlOYW1lIik7CmV4dGVybiBOdW0gU2RibUdldExpbmtGbGRCeU5h
bWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtIG51bUZsZFJlZiwgU2RibUZs
ZFJlZiBmbGRSZWZbXSkKICAgIGFzbSgiX18iICJTZGJtR2V0TGlua0ZsZEJ5TmFtZSIpOwpleHRl
cm4gTnVtIFNkYm1DaGFuZ2VMaW5rRmxkQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJl
Y0lkIHJlYywgY29uc3QgQ2hyKiBmbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE51bSBudW1GbGRSZWYsIFNkYm1GbGRSZWYgZmxkUmVmW10pCiAgICBhc20oIl9f
IiAiU2RibUNoYW5nZUxpbmtGbGRCeU5hbWUiKTsKZXh0ZXJuIE51bSBTZGJtRXJhc2VGbGRCeU5h
bWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bSBudW1JbmRleCwgU2RibVZlY0Zs
ZElkeCBpbmRleGllc1tdKQogICAgYXNtKCJfXyIgIlNkYm1FcmFzZUZsZEJ5TmFtZSIpOwpleHRl
cm4gTnVtIFNkYm1FcmFzZUxpbmtGbGRCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVj
SWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOdW0gbnVtSW5kZXgsIFNkYm1WZWNGbGRJZHggaW5kZXhpZXNbXSkKICAgIGFzbSgi
X18iICJTZGJtRXJhc2VMaW5rRmxkQnlOYW1lIik7CmV4dGVybiBOdW0gU2RibUNsZWFyRmxkQnlO
YW1lKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lkIHJlYywgY29uc3QgQ2hyKiBmbGROYW1l
KQogICAgYXNtKCJfXyIgIlNkYm1DbGVhckZsZEJ5TmFtZSIpOwpleHRlcm4gTnVtIFNkYm1DbGVh
ckxpbmtGbGRCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBjb25zdCBD
aHIqIGZsZE5hbWUpCiAgICBhc20oIl9fIiAiU2RibUNsZWFyTGlua0ZsZEJ5TmFtZSIpOwpleHRl
cm4gTnVtIFNkYm1HZXRGbGRFbG1OdW1CeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVj
SWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUpCiAgICBhc20oIl9fIiAiU2RibUdldEZsZEVsbU51
bUJ5TmFtZSIpOwpleHRlcm4gTnVtIFNkYm1HZXRGbGRFbG1NYXhCeU5hbWUoU2RibURlc2MgdGFi
bGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUpCiAgICBhc20oIl9fIiAi
U2RibUdldEZsZEVsbU1heEJ5TmFtZSIpOwoKZXh0ZXJuIE51bSBTZGJtR2V0RmxkRWxtQnlOYW1l
KFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lkIHJlYywgY29uc3QgQ2hyKiBmbGROYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJ
ZHgsIFNkYm1GbGRSZWYqIGZsZFJlZikKICAgIGFzbSgiX18iICJTZGJtR2V0RmxkRWxtQnlOYW1l
Iik7CmV4dGVybiBOdW0gU2RibUdldExpbmtGbGRFbG1CeU5hbWUoU2RibURlc2MgdGFibGVEZXNj
LCBTZGJtUmVjSWQgcmVjLCBjb25zdCBDaHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIFNkYm1GbGRSZWYq
IGZsZFJlZikKICAgIGFzbSgiX18iICJTZGJtR2V0TGlua0ZsZEVsbUJ5TmFtZSIpOwpleHRlcm4g
TnVtIFNkYm1HZXRMaW5rRmxkRWxtcyhTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWNz
W10sIE51bSBudW1SZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZGJtRmxkTm8gbm9GbGQsIFNkYm1WZWNGbGRJZHggdmVjSWR4LCBTZGJtRmxkUmVmIGZsZFJlZltd
KQogICAgYXNtKCJfXyIgIlNkYm1HZXRMaW5rRmxkRWxtcyIpOwpleHRlcm4gTnVtIFNkYm1HZXRM
aW5rRmxkRWxtc0J5TmFtZShTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWNzW10sIE51
bSBudW1SZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBmbGROYW1lLCBTZGJtVmVjRmxkSWR4IHZlY0lkeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZFJlZiBmbGRSZWZbXSkKICAgIGFz
bSgiX18iICJTZGJtR2V0TGlua0ZsZEVsbXNCeU5hbWUiKTsKZXh0ZXJuIE51bSBTZGJtR2V0Rmxk
RWxtcyhTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWNzW10sIE51bSBudW1SZWNzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRObyBub0ZsZCwgU2RibVZl
Y0ZsZElkeCB2ZWNJZHgsIFNkYm1GbGRSZWYgZmxkUmVmW10pCiAgICBhc20oIl9fIiAiU2RibUdl
dEZsZEVsbXMiKTsKZXh0ZXJuIE51bSBTZGJtR2V0RmxkRWxtc0J5TmFtZShTZGJtRGVzYyB0YWJs
ZURlc2MsIFNkYm1SZWNJZCByZWNzW10sIE51bSBudW1SZWNzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZsZE5hbWUsIFNkYm1WZWNGbGRJZHgg
dmVjSWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRS
ZWYgZmxkUmVmW10pCiAgICBhc20oIl9fIiAiU2RibUdldEZsZEVsbXNCeU5hbWUiKTsKCgpleHRl
cm4gaW50IFNkYm1HZXRGbGREZWZCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBjb25zdCBDaHIq
IG5hbWUsIFNkYm1GbGREZWYqIGZsZERlZikKICAgIGFzbSgiX18iICJTZGJtR2V0RmxkRGVmQnlO
YW1lIik7CmV4dGVybiBpbnQgU2RibUdldEZsZERlZihTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1G
bGRObyBmbGRObywgU2RibUZsZERlZiogZmxkRGVmKQogICAgYXNtKCJfXyIgIlNkYm1HZXRGbGRE
ZWYiKTsKCmV4dGVybiBpbnQgU2RibUdldExpbmtGbGREZWZCeU5hbWUoU2RibURlc2MgdGFibGVE
ZXNjLCBjb25zdCBDaHIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2RibUZsZERlZiogZmxkRGVmKQogICAgYXNtKCJfXyIgIlNkYm1HZXRMaW5rRmxk
RGVmQnlOYW1lIik7CmV4dGVybiBpbnQgU2RibUdldExpbmtGbGREZWYoU2RibURlc2MgdGFibGVE
ZXNjLCBTZGJtRmxkTm8gZmxkTm8sIFNkYm1GbGREZWYqIGZsZERlZikKICAgIGFzbSgiX18iICJT
ZGJtR2V0TGlua0ZsZERlZiIpOwoKZXh0ZXJuIExlbiBTZGJtUmVhZEZsZEVsbShTZGJtRGVzYyB0
YWJsZURlc2MsIFNkYm1SZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZGJtVmVjRmxkSWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsIHZv
aWQqIGJ1ZmYsIExlbiBidWZmTGVuKQogICAgYXNtKCJfXyIgIlNkYm1SZWFkRmxkRWxtIik7CmV4
dGVybiBMZW4gU2RibVJlYWRMaW5rRmxkRWxtKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lk
IHJlY0lkLCBTZGJtRmxkTm8gZmxkTm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNkYm1WZWNGbGRJZHggdmVjSWR4LCBpbnQgZmxkVHlwZSwgdm9pZCogYnVmZiwgTGVu
IGJ1ZmZMZW4pCiAgICBhc20oIl9fIiAiU2RibVJlYWRMaW5rRmxkRWxtIik7CmV4dGVybiBMZW4g
U2RibVJlYWRGbGRFbG1CeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLCBj
b25zdCBDaHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIGludCBmbGRUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmYsIExlbiBidWZmTGVuKQogICAgYXNtKCJf
XyIgIlNkYm1SZWFkRmxkRWxtQnlOYW1lIik7CmV4dGVybiBMZW4gU2RibVJlYWRMaW5rRmxkRWxt
QnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lkIHJlYywgY29uc3QgQ2hyKiBmbGRO
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtVmVj
RmxkSWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmYsIExlbiBidWZmTGVuKQogICAgYXNtKCJfXyIgIlNk
Ym1SZWFkTGlua0ZsZEVsbUJ5TmFtZSIpOwpleHRlcm4gTGVuIFNkYm1Xcml0ZUZsZEVsbShTZGJt
RGVzYyB0YWJsZURlc2MsIFNkYm1SZWNJZCByZWMsIFNkYm1GbGRObyBub0ZsZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIGludCBmbGRU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBidWZm
LCBMZW4gYnVmZkxlbikKICAgIGFzbSgiX18iICJTZGJtV3JpdGVGbGRFbG0iKTsKZXh0ZXJuIExl
biBTZGJtV3JpdGVMaW5rRmxkRWxtKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lkIHJlY0lk
LCBTZGJtRmxkTm8gZmxkTm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZGJtVmVjRmxkSWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkKiBidWZmLCBMZW4gYnVmZkxlbikKICAgIGFz
bSgiX18iICJTZGJtV3JpdGVMaW5rRmxkRWxtIik7CmV4dGVybiBMZW4gU2RibVdyaXRlRmxkRWxt
QnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywgU2RibVJlY0lkIHJlYywgY29uc3QgQ2hyKiBmbGRO
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtVmVjRmxk
SWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQqIGJ1ZmYsIExlbiBidWZmTGVuKQogICAgYXNtKCJfXyIgIlNk
Ym1Xcml0ZUZsZEVsbUJ5TmFtZSIpOwpleHRlcm4gTGVuIFNkYm1Xcml0ZUxpbmtGbGRFbG1CeU5h
bWUoU2RibURlc2MgdGFibGVEZXNjLCBTZGJtUmVjSWQgcmVjLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hyKiBmbGROYW1lLCBTZGJtVmVjRmxk
SWR4IHZlY0lkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBmbGRUeXBlLCBjb25zdCB2b2lkKiBidWZmLCBMZW4gYnVmZkxlbikKICAgIGFzbSgiX18i
ICJTZGJtV3JpdGVMaW5rRmxkRWxtQnlOYW1lIik7CmV4dGVybiBpbnQgU2RibUZpbmRNaW5GbGRF
bG0oU2RibURlc2MgdGFibGVEZXNjLCBTZGJtRmxkTm8gZmxkTm8sIFNkYm1GbGRFbG1QdHIqIGVs
bVApCiAgICBhc20oIl9fIiAiU2RibUZpbmRNaW5GbGRFbG0iKTsKZXh0ZXJuIGludCBTZGJtRmlu
ZE1heEZsZEVsbShTZGJtRGVzYyB0YWJsZURlc2MsIFNkYm1GbGRObyBmbGRObywgU2RibUZsZEVs
bVB0ciogZWxtUCkKICAgIGFzbSgiX18iICJTZGJtRmluZE1heEZsZEVsbSIpOwpleHRlcm4gaW50
IFNkYm1GaW5kTWluRmxkRWxtQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywgY29uc3QgQ2hyKiBm
bGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1G
bGRFbG1QdHIqIGVsbVApCiAgICBhc20oIl9fIiAiU2RibUZpbmRNaW5GbGRFbG1CeU5hbWUiKTsK
ZXh0ZXJuIGludCBTZGJtRmluZE1heEZsZEVsbUJ5TmFtZShTZGJtRGVzYyB0YWJsZURlc2MsIGNv
bnN0IENociogZmxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZGJtRmxkRWxtUHRyKiBlbG1QKQogICAgYXNtKCJfXyIgIlNkYm1GaW5kTWF4RmxkRWxt
QnlOYW1lIik7CmV4dGVybiBpbnQgU2RibUxpc3RVbmlxdWVGbGRFbG0oU2RibURlc2MgdGFibGVE
ZXNjLCBTZGJtRmxkTm8gZmxkTm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2RibUZsZEVsbVB0ciBlbG1zW10sIE51bSBudW1FbG1zKQogICAgYXNtKCJfXyIgIlNk
Ym1MaXN0VW5pcXVlRmxkRWxtIik7CmV4dGVybiBpbnQgU2RibUxpc3RVbmlxdWVGbGRFbG1CeU5h
bWUoU2RibURlc2MgdGFibGVEZXNjLCBjb25zdCBDaHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZEVsbVB0ciBlbG1zW10sIE51
bSBudW1FbG1zKQogICAgYXNtKCJfXyIgIlNkYm1MaXN0VW5pcXVlRmxkRWxtQnlOYW1lIik7CgoK
ZXh0ZXJuIGludCBTZGJtUmVhZEZsZEVsbXNBc0FycmF5MShTZGJtRGVzYyB0YWJsZURlc2MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0lkIHJlY3Nb
XSwgTnVtIG51bVJlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2RibUZsZE5vIG5vRmxkLCBTZGJtVmVjRmxkSWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYnVmZiwgTGVu
IGFycmF5RWxlbUxlbikKICAgIGFzbSgiX18iICJTZGJtUmVhZEZsZEVsbXNBc0FycmF5MSIpOwpl
eHRlcm4gaW50IFNkYm1SZWFkRmxkRWxtc0FzQXJyYXkxQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVz
YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJt
UmVjSWQgcmVjc1tdLCBOdW0gbnVtUmVjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDaHIqIGZsZE5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIGlu
dCBmbGRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQqIGJ1ZmYsIExlbiBhcnJheUVsZW1MZW4pCiAgICBhc20oIl9fIiAiU2RibVJlYWRG
bGRFbG1zQXNBcnJheTFCeU5hbWUiKTsKZXh0ZXJuIGludCBTZGJtUmVhZExpbmtGbGRFbG1zQXNB
cnJheTEoU2RibURlc2MgdGFibGVEZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZGJtUmVjSWQgcmVjc1tdLCBOdW0gbnVtUmVjcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZE5vIG5vRmxkLCBT
ZGJtVmVjRmxkSWR4IHZlY0lkeCwgaW50IGZsZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGJ1ZmYsIExlbiBhcnJheUVsZW1MZW4pCiAg
ICBhc20oIl9fIiAiU2RibVJlYWRMaW5rRmxkRWxtc0FzQXJyYXkxIik7CmV4dGVybiBpbnQgU2Ri
bVJlYWRMaW5rRmxkRWxtc0FzQXJyYXkxQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0lk
IHJlY3NbXSwgTnVtIG51bVJlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENociogZmxkTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgs
IGludCBmbGRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkKiBidWZmLCBMZW4gYXJyYXlFbGVtTGVuKQogICAgYXNtKCJfXyIgIlNk
Ym1SZWFkTGlua0ZsZEVsbXNBc0FycmF5MUJ5TmFtZSIpOwpleHRlcm4gaW50IFNkYm1SZWFkRmxk
RWxtc0FzQXJyYXkyKFNkYm1EZXNjIHRhYmxlRGVzYywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZGJtUmVjSWQgcmVjc1tdLCBOdW0gbnVtUmVjcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkTm8gbm9GbGQsIFNk
Ym1WZWNGbGRJZHggdmVjSWR4LCBpbnQgZmxkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKiBidWZmLCBMZW4gdG90YWxBcmVhTGVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGRhdGFWZWNbXSwgTGVu
IGxlblZlY1tdKQogICAgYXNtKCJfXyIgIlNkYm1SZWFkRmxkRWxtc0FzQXJyYXkyIik7CmV4dGVy
biBpbnQgU2RibVJlYWRGbGRFbG1zQXNBcnJheTJCeU5hbWUoU2RibURlc2MgdGFibGVEZXNjLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1SZWNJ
ZCByZWNzW10sIE51bSBudW1SZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENociogZmxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtVmVjRmxkSWR4IHZlY0lkeCwgaW50IGZs
ZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCogYnVmZiwgTGVuIHRvdGFsQXJlYUxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBkYXRhVmVjW10sIExlbiBsZW5WZWNbXSkKICAg
IGFzbSgiX18iICJTZGJtUmVhZEZsZEVsbXNBc0FycmF5MkJ5TmFtZSIpOwpleHRlcm4gaW50IFNk
Ym1SZWFkTGlua0ZsZEVsbXNBc0FycmF5MihTZGJtRGVzYyB0YWJsZURlc2MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1SZWNJZCByZWNzW10sIE51
bSBudW1SZWNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZGJtRmxkTm8gbm9GbGQsIFNkYm1WZWNGbGRJZHggdmVjSWR4LCBpbnQgZmxkVHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYnVmZiwg
TGVuIHRvdGFsQXJlYUxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCogZGF0YVZlY1tdLCBMZW4gbGVuVmVjW10pCiAgICBhc20oIl9fIiAiU2Ri
bVJlYWRMaW5rRmxkRWxtc0FzQXJyYXkyIik7CmV4dGVybiBpbnQgU2RibVJlYWRMaW5rRmxkRWxt
c0FzQXJyYXkyQnlOYW1lKFNkYm1EZXNjIHRhYmxlRGVzYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0lkIHJlY3NbXSwgTnVtIG51
bVJlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENociogZmxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIGludCBmbGRUeXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
KiBidWZmLCBMZW4gdG90YWxBcmVhTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBkYXRhVmVjW10sIExlbiBsZW5WZWNbXSkKICAg
IGFzbSgiX18iICJTZGJtUmVhZExpbmtGbGRFbG1zQXNBcnJheTJCeU5hbWUiKTsKCgojIDMxICIu
Li8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIiAyCgojIDEgIi4uLy4uL3NyYy9zZGJtLnYwL3Nk
Ym1mbXQuaCIgMQojIDE0ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZm10LmgiCiNkZWZpbmUgX0FY
SVNfU0RCTUZNVF9IXyAKCgojIDEgImF4aXMvYml0b3BzLmgiIDEKIyAyNyAiYXhpcy9iaXRvcHMu
aCIKI2RlZmluZSBfQVhJU19CSVRPUFNfSF8gCgoKCiNkZWZpbmUgQml0TnVtT2ZJdChlbnRpdHkp
IChzaXplb2YoZW50aXR5KSA8PCAzKQojZGVmaW5lIEJpdE51bU9mVGhhdChieXRlc2l6ZSkgKChi
eXRlc2l6ZSkgKiA4KQoKI2RlZmluZSBjQml0T2Zmc2V0SW5Xb3JkIDB4MUYKI2RlZmluZSBjQml0
Q291bnRJbldvcmQgNQojZGVmaW5lIEJpdE51bVRvQ2VpbFdvcmROdW0oYml0TnVtKSAoKChiaXRO
dW0pICsgMzEpID4+IDUpCiNkZWZpbmUgQml0TnVtVG9GbG9vcldvcmROdW0oYml0TnVtKSAoKChi
aXROdW0pKSA+PiA1KQojZGVmaW5lIEJpdE51bVRvV29yZE51bShiaXROdW0pIEJpdE51bVRvQ2Vp
bFdvcmROdW0oYml0TnVtKQojZGVmaW5lIEJpdE51bUZyb21Xb3JkTnVtKHdvcmROdW0pICgod29y
ZE51bSkgPDwgNSkKIyAxMzQgImF4aXMvYml0b3BzLmgiCiMgMSAiYXhpcy9iaXRvcHNfaTM4Ni5o
IiAxCiMgMjcgImF4aXMvYml0b3BzX2kzODYuaCIKI2RlZmluZSBfQVhJU19CSVRPUFNfSTM4Nl9I
XyAKI2RlZmluZSBfQVhJU19CSVRPUFNfQVJDSF9IXyAKIyA0MiAiYXhpcy9iaXRvcHNfaTM4Ni5o
IgpzdHJ1Y3QgX19kdW1teSB7IHVuc2lnbmVkIGxvbmcgYVsxMDBdOyB9OwojZGVmaW5lIEFERFIg
KCooc3RydWN0IF9fZHVtbXkgKikgYWRkcikKI2RlZmluZSBDT05TVF9BRERSICgqKGNvbnN0IHN0
cnVjdCBfX2R1bW15ICopIGFkZHIpCgpleHRlcm4gX19pbmxpbmVfXyBXb3JkCkF4aXNHZXRXb3Jk
Rmlyc3ROMChXb3JkIGJpdHMwKQp7CiAgICBXb3JkIHg7CgogICAgeCA9IChXb3JkKSgtMSk7CiAg
ICB4IDw8PSBiaXRzMDsKCiAgICByZXR1cm4geDsKfQoKZXh0ZXJuIF9faW5saW5lX18gV29yZApB
eGlzU2V0Qml0KFdvcmQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICBXb3JkIG9sZGJp
dDsKCiAgICBhZGRyID0gJigoKihzdHJ1Y3QgX19kdW1teSAqKSBhZGRyKS5hWyhucikgPj4gNV0p
OwogICAgbnIgJj0gMHgxRjsKICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIgogICAg
ICAgICAgICAgICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAg
ICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHN0cnVjdCBfX2R1bW15ICop
IGFkZHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgOiJpciIgKG5yKSk7CiAgICByZXR1cm4g
b2xkYml0Owp9CgpleHRlcm4gX19pbmxpbmVfXyBXb3JkCkF4aXNDbGVhckJpdChXb3JkIG5yLCB2
b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgV29yZCBvbGRiaXQ7CgogICAgYWRkciA9ICYoKCoo
c3RydWN0IF9fZHVtbXkgKikgYWRkcikuYVsobnIpID4+IDVdKTsKICAgIG5yICY9IDB4MUY7CiAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibG9jayA7ICIKICAgICAgICAgICAgICAgICAgICAgICAg
ICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1y
IiAob2xkYml0KSwiPW0iICgoKihzdHJ1Y3QgX19kdW1teSAqKSBhZGRyKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIDoiaXIiIChucikpOwogICAgcmV0dXJuIG9sZGJpdDsKfQoKZXh0ZXJuIF9f
aW5saW5lX18gV29yZApBeGlzQ2hhbmdlQml0KFdvcmQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICBXb3JkIG9sZGJpdDsKCiAgICBhZGRyID0gJigoKihzdHJ1Y3QgX19kdW1teSAqKSBh
ZGRyKS5hWyhucikgPj4gNV0pOwogICAgbnIgJj0gMHgxRjsKICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCJsb2NrIDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2Ji
bCAlMCwlMCIKICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq
KHN0cnVjdCBfX2R1bW15ICopIGFkZHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgOiJpciIg
KG5yKSk7CiAgICByZXR1cm4gb2xkYml0Owp9CgoKCgpleHRlcm4gX19pbmxpbmVfXyBCb29sCkF4
aXNUZXN0Qml0KFdvcmQgbnIsIGNvbnN0IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICByZXR1
cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IFdvcmQgKikgYWRkcilbbnIgPj4gNV0p
KSAhPSAwOwp9CgoKCgpleHRlcm4gX19pbmxpbmVfXyBXb3JkCkF4aXNGaW5kRmlyc3QwKHZvaWQg
KiBhZGRyLCBXb3JkIHNpemUpCnsKICAgIFdvcmQgcmVzID0gMHhGRkZGRkZGRlVMIDsKCiAgICBp
ZiAoIXNpemUpCiAgICAgICAgcmV0dXJuIDA7CgogICAgc2l6ZSA9ICgoc2l6ZSArIDMxKSA+PiA1
KTsKICAgIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAgICAgKCJjbGRcblx0IgogICAgICAgICAi
cmVwZTsgc2Nhc2xcblx0IgogICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAic3VibCAkNCwl
JWVkaVxuXHQiCiAgICAgICAgICJ4b3JsICglJWVkaSksJSVlYXhcblx0IgogICAgICAgICAiYnNm
bCAlJWVheCwlJWVheFxuIgogICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAg
ICAgICAic2hsbCAkMywlJWVkaVxuXHQiCiAgICAgICAgICJhZGRsICUlZWRpLCUlZWF4IgogICAg
ICAgICA6IitEIiAoYWRkciksICIrYSIgKHJlcyksICIrYyIgKHNpemUpCiAgICAgICAgIDogImIi
IChhZGRyKSk7CiAgICByZXR1cm4gcmVzOwp9CgpleHRlcm4gX19pbmxpbmVfXyBXb3JkCkF4aXNG
aW5kTGFzdDAodm9pZCAqIGFkZHIsIFdvcmQgc2l6ZSkKewogICAgV29yZCByZXMgPSAwOwogICAg
V29yZCB4ID0gMHhGRkZGRkZGRlVMOwogICAgdm9pZCogcDsKCiAgICBpZiAoIXNpemUpCiAgICAg
ICAgcmV0dXJuIDA7CgogICAgc2l6ZSA9IChzaXplICsgMzEpID4+IDU7CiAgICBwID0gKChDaHIq
KWFkZHIpICsgKChzaXplIC0gMSkgPDwgMik7CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAg
ICAgICgic3RkXG5cdCIKICAgICAgICAgInJlcGU7IHNjYXNsXG5cdCIKICAgICAgICAgImplIDFm
XG5cdCIKICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgImFkZGwgJDQsJSVl
ZGlcblx0IgogICAgICAgICAieG9ybCAoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAgICAgImJzcmwg
JSVlYXgsJSVlZHhcbiIKICAgICAgICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRpXG5cdCIKICAgICAg
ICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAiYWRkbCAlJWVkaSwlJWVkeCIKICAgICAg
ICAgOiIrRCIgKHApLCAiK2QiIChyZXMpLCAiK2MiIChzaXplKSwgIithIiAoeCkKICAgICAgICAg
OiAiYiIgKGFkZHIpKTsKICAgIHJldHVybiByZXM7Cn0KCmV4dGVybiBfX2lubGluZV9fIFdvcmQK
QXhpc0ZpbmRGcndkMCh2b2lkICogYWRkciwgV29yZCBzaXplLCBXb3JkIG9mZnNldCkKewogICAg
V29yZCAqIHAgPSAoKFdvcmQgKikgYWRkcikgKyAob2Zmc2V0ID4+IDUpOwogICAgV29yZCBzZXQg
PSAwLCBiaXQgPSBvZmZzZXQgJiAzMSwgcmVzOwoKICAgIGlmIChiaXQpIHsKCgoKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXwogICAgICAgICAgICAoImJzZmwgJTEsJTBcblx0IgogICAgICAg
ICAgICAgImpuZSAxZlxuXHQiCiAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAg
ICAgICAiMToiCiAgICAgICAgICAgICA6ICI9ciIgKHNldCkKICAgICAgICAgICAgIDogInIiICh+
KCpwID4+IGJpdCkpKTsKICAgICAgICBpZiAoc2V0IDwgKDMyIC0gYml0KSkKICAgICAgICAgICAg
cmV0dXJuIHNldCArIG9mZnNldDsKICAgICAgICBzZXQgPSAzMiAtIGJpdDsKICAgICAgICBwKys7
CiAgICB9CgoKCiAgICByZXMgPSBBeGlzRmluZEZpcnN0MChwLCBzaXplIC0gMzIgKiAocCAtIChX
b3JkICopIGFkZHIpKTsKICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKZXh0ZXJu
IF9faW5saW5lX18gV29yZApBeGlzRmluZEJrd2QwKHZvaWQgKiBhZGRyLCBXb3JkIHNpemUsIFdv
cmQgb2Zmc2V0KQp7CiAgICBXb3JkICogcCA9ICgoV29yZCAqKSBhZGRyKSArIChvZmZzZXQgPj4g
NSk7CiAgICBXb3JkIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7CgogICAgaWYgKGJpdCkgewogICAg
ICAgIFdvcmQgeCwgeTsKICAgICAgICB5ID0gKDB4RkZGRkZGRkZVTCA+PiAoMzEgLSBiaXQpKTsK
ICAgICAgICB4ID0gKnA7CiAgICAgICAgeCA9IHkgJiB+eDsKCgoKCiAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18KICAgICAgICAgICAgKCJic3JsICUxLCUwXG5cdCIKICAgICAgICAgICAgICJq
bmUgMWZcblx0IgogICAgICAgICAgICAgIm1vdmwgJDMyLCAlMFxuIgogICAgICAgICAgICAgIjE6
IgogICAgICAgICAgICAgOiAiPXIiIChyZXMpCiAgICAgICAgICAgICA6ICJyIiAoeCkpOwoKICAg
ICAgICBpZiAocmVzIDwgMzIpCiAgICAgICAgICAgIHJldHVybiAob2Zmc2V0ICYgfjMxKSArIHJl
czsKICAgICAgICBwLS07CiAgICB9CgoKCiAgICByZXMgPSBBeGlzRmluZExhc3QwKGFkZHIsIG9m
ZnNldCAmIH4zMSk7CiAgICByZXR1cm4gcmVzOwp9CgpleHRlcm4gX19pbmxpbmVfXyBXb3JkCkF4
aXNGaW5kRmlyc3QxKHZvaWQgKiBhZGRyLCBXb3JkIHNpemUpCnsKICAgIFdvcmQgcmVzID0gMCA7
CgogICAgaWYgKCFzaXplKQogICAgICAgIHJldHVybiAwOwogICAgc2l6ZSA9ICgoc2l6ZSArIDMx
KSA+PiA1KTsKICAgIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAgICAgKCJjbGRcblx0IgogICAg
ICAgICAicmVwZTsgc2Nhc2xcblx0IgogICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAic3Vi
bCAkNCwlJWVkaVxuXHQiCiAgICAgICAgICJtb3ZsICglJWVkaSksJSVlYXhcblx0IgogICAgICAg
ICAiYnNmbCAlJWVheCwlJWVheFxuIgogICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0
IgogICAgICAgICAic2hsbCAkMywlJWVkaVxuXHQiCiAgICAgICAgICJhZGRsICUlZWRpLCUlZWF4
IgogICAgICAgICA6IitEIiAoYWRkciksICIrYSIgKHJlcyksICIrYyIgKHNpemUpCiAgICAgICAg
IDogImIiIChhZGRyKSk7CiAgICByZXR1cm4gcmVzOwp9CgpleHRlcm4gX19pbmxpbmVfXyBXb3Jk
CkF4aXNGaW5kTGFzdDEodm9pZCAqIGFkZHIsIFdvcmQgc2l6ZSkKewogICAgV29yZCByZXMgPSAw
OwogICAgdm9pZCogcDsKCiAgICBpZiAoIXNpemUpCiAgICAgICAgcmV0dXJuIDA7CgogICAgc2l6
ZSA9IChzaXplICsgMzEpID4+IDU7CiAgICBwID0gKChDaHIqKWFkZHIpICsgKChzaXplIC0gMSkg
PDwgMik7CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgICAgICgic3RkXG5cdCIKICAgICAg
ICAgInJlcGU7IHNjYXNsXG5cdCIKICAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAgImFkZGwg
JDQsJSVlZGlcblx0IgogICAgICAgICAibW92bCAoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAgICAg
ImJzcmwgJSVlYXgsJSVlYXhcbiIKICAgICAgICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRpXG5cdCIK
ICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAiYWRkbCAlJWVkaSwlJWVheCIK
ICAgICAgICAgOiIrRCIgKHApLCAiK2EiIChyZXMpLCAiK2MiIChzaXplKQogICAgICAgICA6ICJi
IiAoYWRkcikpOwogICAgcmV0dXJuIHJlczsKfQoKZXh0ZXJuIF9faW5saW5lX18gV29yZApBeGlz
RmluZEZyd2QxKHZvaWQgKiBhZGRyLCBXb3JkIHNpemUsIFdvcmQgb2Zmc2V0KQp7CiAgICBXb3Jk
ICogcCA9ICgoV29yZCAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CiAgICBXb3JkIHNldCA9IDAs
IGJpdCA9IG9mZnNldCAmIDMxLCByZXM7CgogICAgaWYgKGJpdCkgewoKCgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fCiAgICAgICAgICAgICgiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg
ICAiam5lIDFmXG5cdCIKICAgICAgICAgICAgICJtb3ZsICQzMiwgJTBcbiIKICAgICAgICAgICAg
ICIxOiIKICAgICAgICAgICAgIDogIj1yIiAoc2V0KQogICAgICAgICAgICAgOiAiciIgKCgqcCA+
PiBiaXQpKSk7CiAgICAgICAgaWYgKHNldCA8ICgzMiAtIGJpdCkpCiAgICAgICAgICAgIHJldHVy
biBzZXQgKyBvZmZzZXQ7CiAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAgcCsrOwogICAg
fQoKCgogICAgcmVzID0gQXhpc0ZpbmRGaXJzdDEocCwgc2l6ZSAtIDMyICogKHAgLSAoV29yZCAq
KSBhZGRyKSk7CiAgICByZXR1cm4gKG9mZnNldCArIHNldCArIHJlcyk7Cn0KCmV4dGVybiBfX2lu
bGluZV9fIFdvcmQKQXhpc0ZpbmRCa3dkMSh2b2lkICogYWRkciwgV29yZCBzaXplLCBXb3JkIG9m
ZnNldCkKewogICAgV29yZCAqIHAgPSAoKFdvcmQgKikgYWRkcikgKyAob2Zmc2V0ID4+IDUpOwog
ICAgV29yZCBiaXQgPSBvZmZzZXQgJiAzMSwgcmVzOwoKICAgIGlmIChiaXQpIHsKICAgICAgICBX
b3JkIHgsIHk7CiAgICAgICAgeSA9ICgweEZGRkZGRkZGVUwgPj4gKDMxIC0gYml0KSk7CiAgICAg
ICAgeCA9ICpwOwogICAgICAgIHggPSB5ICYgeDsKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18KICAgICAgICAgICAgKCJic3JsICUxLCUwXG5cdCIKICAgICAgICAgICAgICJqbmUgMWZc
blx0IgogICAgICAgICAgICAgIm1vdmwgJDMyLCAlMFxuIgogICAgICAgICAgICAgIjE6IgogICAg
ICAgICAgICAgOiAiPXIiIChyZXMpCiAgICAgICAgICAgICA6ICJyIiAoeCkpOwoKICAgICAgICBp
ZiAocmVzIDwgMzIpCiAgICAgICAgICAgIHJldHVybiAob2Zmc2V0ICYgfjMxKSArIHJlczsKICAg
ICAgICBwLS07CiAgICB9CgoKCiAgICByZXMgPSBBeGlzRmluZExhc3QxKGFkZHIsIG9mZnNldCAm
IH4zMSk7CiAgICByZXR1cm4gcmVzOwp9CgojdW5kZWYgQUREUgojdW5kZWYgQ09OU1RfQUREUgoj
IDEzNSAiYXhpcy9iaXRvcHMuaCIgMgoKCgoKCgojIDE4ICIuLi8uLi9zcmMvc2RibS52MC9zZGJt
Zm10LmgiIDIKCgoKCgoKI2RlZmluZSBjU2RibUN1ck1haW5WZXIgMAojZGVmaW5lIGNTZGJtQ3Vy
TWlub3JWZXIgMQoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2RibURiTWFpbiB7CiAgICBBcmVhMjU2IGRi
TWFnaWM7CiAgICB1OCBtYWluVmVyczsKICAgIHU4IG1pbm9yVmVyczsKICAgIHUxNiBkYk5hbWVM
ZW47CiAgICB1MzIgbnVtVGFibGU7CiAgICBBdGltZSBjcmVhdGVkVGltZTsKICAgIFdvcmQgdGFi
bGVJZE1hcFsoKCgxMDIzKSArIDMxKSA+PiA1KV0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgp
KSk7CiAgICB1MzIgcnN2c1sxNl07CiAgICBDaHIgZGJMb2dpY2FsTmFtZVswXTsKfSBTZGJtRGJN
YWluOwoKCgoKCnR5cGVkZWYgc3RydWN0IFNkYm1FbnVtU2V0QXR0ciB7CiAgICB1MzIgbnVtRW51
bVNldDsKICAgIHUzMiByc3ZzWzNdOwp9IFNkYm1FbnVtU2V0QXR0cjsKCgoKCgp0eXBlZGVmIHN0
cnVjdCBTZGJtRW51bVNldEVudCB7CiAgICBTZGJtRW51bVNldElkIGVudW1TZXRJZDsKICAgIEFk
YW1Qb3MgZW51bVNldE5hbWU7CiAgICB1MzIgbmFtZVRyZWU7CiAgICB1MzIgdmFsVHJlZTsKICAg
IHMzMiBlbnVtVW5pdHM7CiAgICB1MzIgcnN2c1szXTsKfSBTZGJtRW51bVNldEVudDsKCgoKCgp0
eXBlZGVmIHN0cnVjdCBTZGJtRW51bVVuaXRBdHRyIHsKICAgIHUzMiBudW1FbnVtVW5pdDsKICAg
IHMzMiBlbnVtRnJlZUxpc3Q7CiAgICB1MzIgcnN2c1syXTsKfSBTZGJtRW51bVVuaXRBdHRyOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgU2RibUVudW1Vbml0IHsKICAgIENxdWV1ZUxpbmsgbGlzdDsKICAg
IFNkYm1FbnVtVW5pdElkIHVuaXRJZDsKICAgIFNkYm1FbnVtU2V0SWQgZW51bVNldDsKICAgIHUz
MiBudW1Vc2VkOwogICAgQWRhbVBvcyB1bml0TmFtZVB0cjsKICAgIEF0cmVlSWR4IHVuaXROYW1l
SWR4OwogICAgQXRyZWVJZHggdW5pdFZhbElkeDsKICAgIEFyZWEzMiByc3ZbMl07CiAgICBBcmVh
NjQgdW5pdFZhbDsKfSBTZGJtRW51bVVuaXQ7CgoKCgp0eXBlZGVmIHVuaW9uIFNkYm1GbGROYW1l
SWR4RGF0YSB7CiAgICBBcmVhNjQgdmFsdWU7CiAgICBzdHJ1Y3QgewogICAgICAgIEFkYW1Qb3Mg
bmFtZVB0cjsKICAgICAgICBTZGJtRmxkTm8gZmxkTm87CiAgICB9IHg7Cn0gU2RibUZsZE5hbWVJ
ZHhEYXRhOwoKCgoKCnR5cGVkZWYgc3RydWN0IFNkYm1GbGRTcGVjIHsKICAgIFNkYm1GbGRObyBm
bGRObzsKICAgIHUzMiBmbGRUeXBlOwogICAgdTMyIGZsZEF1eFR5cGU7CiAgICBBZGFtUG9zIGZs
ZE5hbWVQdHI7CiAgICBBdHJlZUlkeCBmbGROYW1lSWR4OwogICAgdTMyIGZsZEF0dHJzOwogICAg
dTMyIGZsZEluZGV4VHJlZTsKICAgIEFyZWExMjggZmxkVXNlckluZm87CiAgICB1MzIgZmxkVXNl
ckluZm9QYXR0ZXJuOwp9IFNkYm1GbGRTcGVjOwoKCgoKCnR5cGVkZWYgc3RydWN0IFNkYm1UYWJs
ZU1haW4gewogICAgdTMyIHRhYmxlTm87CiAgICBBZGFtUG9zIHRhYmxlTmFtZTsKICAgIHUzMiBu
dW1GbGRzOwogICAgQXRyZWVJZHggdGFibGVOYW1lTm9kZTsKICAgIFNkYm1GbGRTcGVjIGZsZFNw
ZWNzWzBdOwp9IFNkYm1UYWJsZU1haW47CgoKCgoKCnR5cGVkZWYgczMyIFNkYm1GbGREYXRhSWR4
OwojZGVmaW5lIFNkYm1GbGREYXRhSWR4VG9SSWR4KGRhdGFJZHgpICgoZGF0YUlkeCktMSkKI2Rl
ZmluZSBjU2RibUZsZERhdGFJZHhNaW4gMQoKCgoKdHlwZWRlZiBzMzIgU2RibVJlY0lkeDsKI2Rl
ZmluZSBTZGJtUmVjSWR4VG9SSWR4KHJlY0lkeCkgKChyZWNJZHgpLTEpCiNkZWZpbmUgY1NkYm1S
ZWNJZHhNaW4gMQoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2RibVJlY0F0dHIgewogICAgTnVtIG51bVJl
Y3M7CiAgICBTZGJtUmVjSWR4IGFjdGl2ZXM7CiAgICBTZGJtUmVjSWR4IGZyZWVzOwogICAgTnVt
IG51bUFjdGl2ZXM7Cn0gU2RibVJlY0F0dHI7Cgp0eXBlZGVmIHVuaW9uIFNkYm1EYXRhSWQgewog
ICAgU2RibVJlY0lkIGV4dGVybmFsOwogICAgc3RydWN0IHsKICAgICAgICB1NjQgaW52YWxpZDox
LAogICAgICAgICAgICAgICAgdGFibGVObzoxMCwKICAgICAgICAgICAgICAgIGZsZE5vOjExLAog
ICAgICAgICAgICAgICAgcmV2aXNpb246MTAsCiAgICAgICAgICAgICAgICByZWNJZHg6MzA7CiAg
ICB9IGk7Cn0gU2RibURhdGFJZDsKCnR5cGVkZWYgc3RydWN0IFNkYm1GbGRQdHIgewogICAgU2Ri
bUZsZERhdGFJZHggdmVjSWR4TGlzdDsKICAgIFNkYm1GbGREYXRhSWR4IHNvcnRlZExpc3Q7CiAg
ICBTZGJtRmxkRGF0YUlkeCBsaW5rZWRJZHg7CiAgICBOdW0gbnVtRWxtczsKfSBTZGJtRmxkUHRy
OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2RibVJlY0VudHkgewogICAgU2RibURhdGFJZCByZWNJZDsK
ICAgIENxdWV1ZUxpbmsgbGlzdDsKICAgIHVuaW9uIHsKICAgICAgICB1NjQgd2hvbGU7CiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgdTMyIGRlbGV0ZWQ6IDE7CiAgICAgICAgICAgIHUzMiA6
MzE7CiAgICAgICAgICAgIHUzMiB0aWNrZWRObzsKICAgICAgICB9IHY7CiAgICB9IGF0dHJzOwog
ICAgU2RibUZsZFB0ciBmbGRQdHJzWzBdOwp9IFNkYm1SZWNFbnR5OwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgU2RibVRhYmxlRmxkQXR0ciB7CiAgICB1MzIgbnVtRmxkczsKICAgIFNkYm1GbGREYXRhSWR4
IGZyZWVMaXN0OwogICAgdTMyIHJzdnNbMl07Cn0gU2RibVRhYmxlRmxkQXR0cjsKCgoKCnR5cGVk
ZWYgdW5pb24gU2RibUZsZEVudHkgewogICAgQXJlYTY0IHZhbHVlOwogICAgc3RydWN0IHsKICAg
ICAgICBBZGFtUG9zIHB0cjsKICAgICAgICBTeiBzejsKICAgIH0gdmFyOwogICAgc3RydWN0IHsK
ICAgICAgICBTZGJtRW51bVNldElkIGVudW1TZXRJZDsKICAgICAgICBTZGJtRW51bVVuaXRJZCBl
bnVtVW5pdElkOwogICAgfSBlbnVtVmFsOwogICAgc3RydWN0IHsKICAgICAgICBTZGJtRmxkRGF0
YUlkeCBkYXRhSWR4OwogICAgICAgIHMzMiBsaW5rZWRJZHg7CiAgICB9IGxpbms7Cn0gU2RibUZs
ZEVudHk7CgoKCgp0eXBlZGVmIHVuaW9uIFNkYm1GbGRJZHhEYXRhIHsKICAgIEFyZWE2NCB2YWx1
ZTsKICAgIHN0cnVjdCB7CiAgICAgICAgU2RibUZsZERhdGFJZHggZmxkOwogICAgICAgIHUzMiBy
c3Y7CiAgICB9IHZhbDsKICAgIHN0cnVjdCB7CiAgICAgICAgU2RibUZsZERhdGFJZHggZmxkOwog
ICAgICAgIEFkYW1Qb3MgcHRyOwogICAgfSBzdHI7CiAgICBzdHJ1Y3QgewogICAgICAgIFNkYm1G
bGREYXRhSWR4IGZsZDsKICAgICAgICBTZGJtRW51bVVuaXRJZCBpZDsKICAgIH0gZW51bVVuaXQ7
Cn0gU2RibUZsZElkeERhdGE7CgoKCgp0eXBlZGVmIHN0cnVjdCBTZGJtRmxkQm9keSB7CiAgICBT
ZGJtUmVjSWR4IHJlY0lkeDsKICAgIFNkYm1GbGRObyBmbGRObzsKICAgIHUzMiBmcmVlemVkIDox
LAogICAgICAgICAgICAgICAgICAgIDo3LAogICAgICAgICAgICAgICAgICAgIHZlY3RvcklkeDoy
NDsKICAgIEF0cmVlSWR4IGluZGV4Tm9kZTsKICAgIHMzMiBsaW5rZWRJbmZvOwogICAgdTMyIHJz
dnNbM107CiAgICBDcXVldWVMaW5rIHZlY0lkeExpc3Q7CiAgICBDcXVldWVMaW5rIHNvcnRMaXN0
OwogICAgQXRpbWUgbW9kaWZ5VGltZTsKICAgIFNkYm1GbGRFbnR5IGNvbnRlbnQ7Cn0gU2RibUZs
ZEJvZHk7CgoKCgp0eXBlZGVmIHN0cnVjdCBTZGJtTGlua2VkRmxkSW5mb0F0dHIgewogICAgdTMy
IG51bUxpbmtlZDsKICAgIFNkYm1GbGREYXRhSWR4IGZyZWVMaXN0OwogICAgdTMyIHJzdnNbMl07
Cn0gU2RibUxpbmtlZEZsZEluZm9BdHRyOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgU2RibUxpbmtlZEZs
ZEluZm8gewogICAgU2RibURhdGFJZCBsaW5rRnJvbTsKICAgIFNkYm1EYXRhSWQgbGlua1RvOwog
ICAgQ3F1ZXVlTGluayBsaXN0OwogICAgdTMyIHJzdnNbM107Cn0gU2RibUxpbmtlZEZsZEluZm87
CgoKI2RlZmluZSBjU2RibVN1YmZpbGVEYk1haW4gMQojZGVmaW5lIGNTZGJtU3ViZmlsZUVudW1T
ZXQgMgojZGVmaW5lIGNTZGJtU3ViZmlsZUVudW1Vbml0IDMKI2RlZmluZSBjU2RibVN1YmZpbGVE
Yk1haW5JbmRleCA0CiNkZWZpbmUgY1NkYm1TdWJmaWxlRGJWYXJEYXRhQ29udG5yIDUKCiNkZWZp
bmUgY1NkYm1UYWJsZU5hbWVUcmVlIDEKI2RlZmluZSBFbnVtU2V0SWRUb1ZhbFRyZWUoZXNJZCkg
KChlc0lkKTw8MSkKI2RlZmluZSBFbnVtU2V0SWRUb05hbWVUcmVlKGVzSWQpICgoKGVzSWQpPDwx
KSsxKQoKI2RlZmluZSBjU2RibU51bVN1YmZpbGVQZXJEQiA4CgojZGVmaW5lIGNTZGJtU3ViZmls
ZVRhYmxlTWFpbklkeCAxCiNkZWZpbmUgY1NkYm1TdWJmaWxlUmVjc0NvbnRucklkeCAyCiNkZWZp
bmUgY1NkYm1TdWJmaWxlRmxkc0NvbnRucklkeCAzCiNkZWZpbmUgY1NkYm1TdWJmaWxlVmFyRGF0
YUNvbnRucklkeCA0CiNkZWZpbmUgY1NkYm1TdWJmaWxlSW5kZXhDb250bnJJZHggNQojZGVmaW5l
IGNTZGJtU3ViZmlsZUxpbmtlZEZsZHNDb250bnJJZHggNgoKI2RlZmluZSBTZGJtU3ViZmlsZVRh
YmxlQmFzZSh0YmxObykgKCh0YmxObyk8PDMpCiNkZWZpbmUgU2RibVN1YmZpbGVUYWJsZU1haW4o
dGJsTm8pICgoKHRibE5vKTw8MykrY1NkYm1TdWJmaWxlVGFibGVNYWluSWR4KQojZGVmaW5lIFNk
Ym1TdWJmaWxlUmVjc0NvbnRucih0YmxObykgKCgodGJsTm8pPDwzKStjU2RibVN1YmZpbGVSZWNz
Q29udG5ySWR4KQojZGVmaW5lIFNkYm1TdWJmaWxlRmxkc0NvbnRucih0YmxObykgKCgodGJsTm8p
PDwzKStjU2RibVN1YmZpbGVGbGRzQ29udG5ySWR4KQojZGVmaW5lIFNkYm1TdWJmaWxlVmFyRGF0
YUNvbnRucih0YmxObykgKCgodGJsTm8pPDwzKStjU2RibVN1YmZpbGVWYXJEYXRhQ29udG5ySWR4
KQojZGVmaW5lIFNkYm1TdWJmaWxlSW5kZXhDb250bnIodGJsTm8pICgoKHRibE5vKTw8MykrY1Nk
Ym1TdWJmaWxlSW5kZXhDb250bnJJZHgpCiNkZWZpbmUgU2RibVN1YmZpbGVMaW5rZWRGbGRzQ29u
dG5yKHRibE5vKSAoKCh0YmxObyk8PDMpK2NTZGJtU3ViZmlsZUxpbmtlZEZsZHNDb250bnJJZHgp
CgojZGVmaW5lIFNkYm1TdWJmaWxlSWRUb1RibE5vKHN1YmZpbGVJZCkgKCgoc3ViZmlsZUlkKT4+
MykmMHg3KQoKI2RlZmluZSBjU2RibU51bVN1YmZpbGVQZXJUYWJsZSA4CgojZGVmaW5lIGNTZGJt
RmxkTmFtZVRyZWVJZHggMQojZGVmaW5lIGNTZGJtRmxkSWR4VHJlZUlkeE1pbiAyCiNkZWZpbmUg
U2RibUZsZElkeFRyZWVJZHgoZmxkTm8pICgoZmxkTm8pLTErY1NkYm1GbGRJZHhUcmVlSWR4TWlu
KQoKZXh0ZXJuIGlubGluZSBTZGJtRmxkQm9keSogU2RibUZsZHNPcHJUb3BBZGRyKFNkYm1GbGRC
b2R5KiB0b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgcmV0dXJuICYodG9wW3RndElkeCAt
IHRvcElkeF0pOyB9IGV4dGVybiBpbmxpbmUgczMyIFNkYm1GbGRzT3BySW5kZXgoU2RibUZsZEJv
ZHkqIHRvcCwgczMyIHRvcElkeCwgU2RibUZsZEJvZHkqIHRndCkgeyByZXR1cm4gKHRndCAtIHRv
cCkgKyB0b3BJZHg7IH0gZXh0ZXJuIGlubGluZSB2b2lkIFNkYm1GbGRzT3BySW5pdChTZGJtRmxk
Qm9keSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IENxdWV1ZUluaXQoJih0b3AtPnZl
Y0lkeExpc3QpLCB0b3BJZHgsIHRndElkeCwgc2l6ZW9mKFNkYm1GbGRCb2R5KSwgKChXb3JkKSgm
KCgoU2RibUZsZEJvZHkgKikwKS0+dmVjSWR4TGlzdCkpKSk7fSBleHRlcm4gaW5saW5lIHZvaWQg
U2RibUZsZHNPcHJJbnNlcnQoU2RibUZsZEJvZHkqIHRvcCwgczMyIHRvcElkeCwgczMyIHRndElk
eCkgeyBDcXVldWVJbnNlcnRRdWV1ZSgmKHRvcC0+dmVjSWR4TGlzdCksIHRvcElkeCwgdGd0SWR4
LCBzaXplb2YoU2RibUZsZEJvZHkpLCAoKFdvcmQpKCYoKChTZGJtRmxkQm9keSAqKTApLT52ZWNJ
ZHhMaXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtRmxkc09wckFwcGVuZChTZGJtRmxk
Qm9keSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IENxdWV1ZUFwcGVuZFF1ZXVlKCYo
dG9wLT52ZWNJZHhMaXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHNpemVvZihTZGJtRmxkQm9keSksICgo
V29yZCkoJigoKFNkYm1GbGRCb2R5ICopMCktPnZlY0lkeExpc3QpKSkpO30gZXh0ZXJuIGlubGlu
ZSBzMzIgU2RibUZsZHNPcHJEZWxldGUoU2RibUZsZEJvZHkqIHRvcCwgczMyIHRvcElkeCwgczMy
IHRndElkeCkgeyBzMzIgcmV0YWluOyByZXRhaW4gPSBDcXVldWVEZWxldGVRdWV1ZSgmKHRvcC0+
dmVjSWR4TGlzdCksIHRvcElkeCwgdGd0SWR4LCBzaXplb2YoU2RibUZsZEJvZHkpLCAoKFdvcmQp
KCYoKChTZGJtRmxkQm9keSAqKTApLT52ZWNJZHhMaXN0KSkpKTsgcmV0dXJuIHJldGFpbjt9IGV4
dGVybiBpbmxpbmUgczMyIFNkYm1GbGRzT3ByTmV4dChTZGJtRmxkQm9keSogdG9wLCBzMzIgdG9w
SWR4LCBzMzIgY3VyKSB7IHMzMiBuZXh0ID0gdG9wW2N1ciAtIHRvcElkeF0udmVjSWR4TGlzdC5m
cndkOyByZXR1cm4gbmV4dDt9IGV4dGVybiBpbmxpbmUgczMyIFNkYm1GbGRzT3ByUHJldihTZGJt
RmxkQm9keSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgY3VyKSB7IHMzMiBwcmV2ID0gdG9wW2N1ciAt
IHRvcElkeF0udmVjSWR4TGlzdC5ia3dkOyByZXR1cm4gcHJldjt9OwpleHRlcm4gaW5saW5lIFNk
Ym1GbGRCb2R5KiBTZGJtRmxkc1NvcnRPcHJUb3BBZGRyKFNkYm1GbGRCb2R5KiB0b3AsIHMzMiB0
b3BJZHgsIHMzMiB0Z3RJZHgpIHsgcmV0dXJuICYodG9wW3RndElkeCAtIHRvcElkeF0pOyB9IGV4
dGVybiBpbmxpbmUgczMyIFNkYm1GbGRzU29ydE9wckluZGV4KFNkYm1GbGRCb2R5KiB0b3AsIHMz
MiB0b3BJZHgsIFNkYm1GbGRCb2R5KiB0Z3QpIHsgcmV0dXJuICh0Z3QgLSB0b3ApICsgdG9wSWR4
OyB9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtRmxkc1NvcnRPcHJJbml0KFNkYm1GbGRCb2R5KiB0
b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlSW5pdCgmKHRvcC0+c29ydExpc3Qp
LCB0b3BJZHgsIHRndElkeCwgc2l6ZW9mKFNkYm1GbGRCb2R5KSwgKChXb3JkKSgmKCgoU2RibUZs
ZEJvZHkgKikwKS0+c29ydExpc3QpKSkpO30gZXh0ZXJuIGlubGluZSB2b2lkIFNkYm1GbGRzU29y
dE9wckluc2VydChTZGJtRmxkQm9keSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IENx
dWV1ZUluc2VydFF1ZXVlKCYodG9wLT5zb3J0TGlzdCksIHRvcElkeCwgdGd0SWR4LCBzaXplb2Yo
U2RibUZsZEJvZHkpLCAoKFdvcmQpKCYoKChTZGJtRmxkQm9keSAqKTApLT5zb3J0TGlzdCkpKSk7
fSBleHRlcm4gaW5saW5lIHZvaWQgU2RibUZsZHNTb3J0T3ByQXBwZW5kKFNkYm1GbGRCb2R5KiB0
b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlQXBwZW5kUXVldWUoJih0b3AtPnNv
cnRMaXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHNpemVvZihTZGJtRmxkQm9keSksICgoV29yZCkoJigo
KFNkYm1GbGRCb2R5ICopMCktPnNvcnRMaXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgczMyIFNkYm1G
bGRzU29ydE9wckRlbGV0ZShTZGJtRmxkQm9keSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4
KSB7IHMzMiByZXRhaW47IHJldGFpbiA9IENxdWV1ZURlbGV0ZVF1ZXVlKCYodG9wLT5zb3J0TGlz
dCksIHRvcElkeCwgdGd0SWR4LCBzaXplb2YoU2RibUZsZEJvZHkpLCAoKFdvcmQpKCYoKChTZGJt
RmxkQm9keSAqKTApLT5zb3J0TGlzdCkpKSk7IHJldHVybiByZXRhaW47fSBleHRlcm4gaW5saW5l
IHMzMiBTZGJtRmxkc1NvcnRPcHJOZXh0KFNkYm1GbGRCb2R5KiB0b3AsIHMzMiB0b3BJZHgsIHMz
MiBjdXIpIHsgczMyIG5leHQgPSB0b3BbY3VyIC0gdG9wSWR4XS5zb3J0TGlzdC5mcndkOyByZXR1
cm4gbmV4dDt9IGV4dGVybiBpbmxpbmUgczMyIFNkYm1GbGRzU29ydE9wclByZXYoU2RibUZsZEJv
ZHkqIHRvcCwgczMyIHRvcElkeCwgczMyIGN1cikgeyBzMzIgcHJldiA9IHRvcFtjdXIgLSB0b3BJ
ZHhdLnNvcnRMaXN0LmJrd2Q7IHJldHVybiBwcmV2O307CmV4dGVybiBpbmxpbmUgU2RibUxpbmtl
ZEZsZEluZm8qIFNkYm1MaW5rZWRGbGRzT3ByVG9wQWRkcihTZGJtTGlua2VkRmxkSW5mbyogdG9w
LCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IHJldHVybiAmKHRvcFt0Z3RJZHggLSB0b3BJZHhd
KTsgfSBleHRlcm4gaW5saW5lIHMzMiBTZGJtTGlua2VkRmxkc09wckluZGV4KFNkYm1MaW5rZWRG
bGRJbmZvKiB0b3AsIHMzMiB0b3BJZHgsIFNkYm1MaW5rZWRGbGRJbmZvKiB0Z3QpIHsgcmV0dXJu
ICh0Z3QgLSB0b3ApICsgdG9wSWR4OyB9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtTGlua2VkRmxk
c09wckluaXQoU2RibUxpbmtlZEZsZEluZm8qIHRvcCwgczMyIHRvcElkeCwgczMyIHRndElkeCkg
eyBDcXVldWVJbml0KCYodG9wLT5saXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHNpemVvZihTZGJtTGlu
a2VkRmxkSW5mbyksICgoV29yZCkoJigoKFNkYm1MaW5rZWRGbGRJbmZvICopMCktPmxpc3QpKSkp
O30gZXh0ZXJuIGlubGluZSB2b2lkIFNkYm1MaW5rZWRGbGRzT3BySW5zZXJ0KFNkYm1MaW5rZWRG
bGRJbmZvKiB0b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlSW5zZXJ0UXVldWUo
Jih0b3AtPmxpc3QpLCB0b3BJZHgsIHRndElkeCwgc2l6ZW9mKFNkYm1MaW5rZWRGbGRJbmZvKSwg
KChXb3JkKSgmKCgoU2RibUxpbmtlZEZsZEluZm8gKikwKS0+bGlzdCkpKSk7fSBleHRlcm4gaW5s
aW5lIHZvaWQgU2RibUxpbmtlZEZsZHNPcHJBcHBlbmQoU2RibUxpbmtlZEZsZEluZm8qIHRvcCwg
czMyIHRvcElkeCwgczMyIHRndElkeCkgeyBDcXVldWVBcHBlbmRRdWV1ZSgmKHRvcC0+bGlzdCks
IHRvcElkeCwgdGd0SWR4LCBzaXplb2YoU2RibUxpbmtlZEZsZEluZm8pLCAoKFdvcmQpKCYoKChT
ZGJtTGlua2VkRmxkSW5mbyAqKTApLT5saXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgczMyIFNkYm1M
aW5rZWRGbGRzT3ByRGVsZXRlKFNkYm1MaW5rZWRGbGRJbmZvKiB0b3AsIHMzMiB0b3BJZHgsIHMz
MiB0Z3RJZHgpIHsgczMyIHJldGFpbjsgcmV0YWluID0gQ3F1ZXVlRGVsZXRlUXVldWUoJih0b3At
Pmxpc3QpLCB0b3BJZHgsIHRndElkeCwgc2l6ZW9mKFNkYm1MaW5rZWRGbGRJbmZvKSwgKChXb3Jk
KSgmKCgoU2RibUxpbmtlZEZsZEluZm8gKikwKS0+bGlzdCkpKSk7IHJldHVybiByZXRhaW47fSBl
eHRlcm4gaW5saW5lIHMzMiBTZGJtTGlua2VkRmxkc09wck5leHQoU2RibUxpbmtlZEZsZEluZm8q
IHRvcCwgczMyIHRvcElkeCwgczMyIGN1cikgeyBzMzIgbmV4dCA9IHRvcFtjdXIgLSB0b3BJZHhd
Lmxpc3QuZnJ3ZDsgcmV0dXJuIG5leHQ7fSBleHRlcm4gaW5saW5lIHMzMiBTZGJtTGlua2VkRmxk
c09wclByZXYoU2RibUxpbmtlZEZsZEluZm8qIHRvcCwgczMyIHRvcElkeCwgczMyIGN1cikgeyBz
MzIgcHJldiA9IHRvcFtjdXIgLSB0b3BJZHhdLmxpc3QuYmt3ZDsgcmV0dXJuIHByZXY7fTsKZXh0
ZXJuIGlubGluZSBTZGJtRW51bVVuaXQqIFNkYm1FbnVtVW5pdHNPcHJUb3BBZGRyKFNkYm1FbnVt
VW5pdCogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IHJldHVybiAmKHRvcFt0Z3RJZHgg
LSB0b3BJZHhdKTsgfSBleHRlcm4gaW5saW5lIHMzMiBTZGJtRW51bVVuaXRzT3BySW5kZXgoU2Ri
bUVudW1Vbml0KiB0b3AsIHMzMiB0b3BJZHgsIFNkYm1FbnVtVW5pdCogdGd0KSB7IHJldHVybiAo
dGd0IC0gdG9wKSArIHRvcElkeDsgfSBleHRlcm4gaW5saW5lIHZvaWQgU2RibUVudW1Vbml0c09w
ckluaXQoU2RibUVudW1Vbml0KiB0b3AsIHMzMiB0b3BJZHgsIHMzMiB0Z3RJZHgpIHsgQ3F1ZXVl
SW5pdCgmKHRvcC0+bGlzdCksIHRvcElkeCwgdGd0SWR4LCBzaXplb2YoU2RibUVudW1Vbml0KSwg
KChXb3JkKSgmKCgoU2RibUVudW1Vbml0ICopMCktPmxpc3QpKSkpO30gZXh0ZXJuIGlubGluZSB2
b2lkIFNkYm1FbnVtVW5pdHNPcHJJbnNlcnQoU2RibUVudW1Vbml0KiB0b3AsIHMzMiB0b3BJZHgs
IHMzMiB0Z3RJZHgpIHsgQ3F1ZXVlSW5zZXJ0UXVldWUoJih0b3AtPmxpc3QpLCB0b3BJZHgsIHRn
dElkeCwgc2l6ZW9mKFNkYm1FbnVtVW5pdCksICgoV29yZCkoJigoKFNkYm1FbnVtVW5pdCAqKTAp
LT5saXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtRW51bVVuaXRzT3ByQXBwZW5kKFNk
Ym1FbnVtVW5pdCogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4KSB7IENxdWV1ZUFwcGVuZFF1
ZXVlKCYodG9wLT5saXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHNpemVvZihTZGJtRW51bVVuaXQpLCAo
KFdvcmQpKCYoKChTZGJtRW51bVVuaXQgKikwKS0+bGlzdCkpKSk7fSBleHRlcm4gaW5saW5lIHMz
MiBTZGJtRW51bVVuaXRzT3ByRGVsZXRlKFNkYm1FbnVtVW5pdCogdG9wLCBzMzIgdG9wSWR4LCBz
MzIgdGd0SWR4KSB7IHMzMiByZXRhaW47IHJldGFpbiA9IENxdWV1ZURlbGV0ZVF1ZXVlKCYodG9w
LT5saXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHNpemVvZihTZGJtRW51bVVuaXQpLCAoKFdvcmQpKCYo
KChTZGJtRW51bVVuaXQgKikwKS0+bGlzdCkpKSk7IHJldHVybiByZXRhaW47fSBleHRlcm4gaW5s
aW5lIHMzMiBTZGJtRW51bVVuaXRzT3ByTmV4dChTZGJtRW51bVVuaXQqIHRvcCwgczMyIHRvcElk
eCwgczMyIGN1cikgeyBzMzIgbmV4dCA9IHRvcFtjdXIgLSB0b3BJZHhdLmxpc3QuZnJ3ZDsgcmV0
dXJuIG5leHQ7fSBleHRlcm4gaW5saW5lIHMzMiBTZGJtRW51bVVuaXRzT3ByUHJldihTZGJtRW51
bVVuaXQqIHRvcCwgczMyIHRvcElkeCwgczMyIGN1cikgeyBzMzIgcHJldiA9IHRvcFtjdXIgLSB0
b3BJZHhdLmxpc3QuYmt3ZDsgcmV0dXJuIHByZXY7fTsKCgojIDMzICIuLi8uLi9zcmMvc2RibS52
MC9zZGJtZmxkdS5jIiAyCiMgMSAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWRlZnMuaCIgMQojIDE0
ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZGVmcy5oIgojZGVmaW5lIF9BWElTX1NEQk1ERUZTX0hf
IAoKIyAxICJheGlzL2F4aXN0aHIuaCIgMQojIDI3ICJheGlzL2F4aXN0aHIuaCIKI2RlZmluZSBf
QVhJU19BWElTVEhSX0hfIAojIDM3ICJheGlzL2F4aXN0aHIuaCIKCgoKCmV4dGVybiBpbnQgQXhp
c1RockNyZWF0ZShwdGhyZWFkX3QgKl9fdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICooKl9fc3RhcnRfcm91dGluZSkgKHZvaWQgKiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqX19hcmcpIGFzbSgiX18iICJBeGlzVGhyQ3JlYXRlIik7CiMgNjcgImF4aXMv
YXhpc3Roci5oIgojZGVmaW5lIEF4aXNUaHJTZWxmKCkgcHRocmVhZF9zZWxmKCkKI2RlZmluZSBB
eGlzVGhyRXF1YWwodGhyMSx0aHIyKSBwdGhyZWFkX2VxdWFsKHRocjEsIHRocjIpCiNkZWZpbmUg
QXhpc1RockpvaW4odGhyLHRocl9yZXQpIHB0aHJlYWRfam9pbih0aHIsIHRocl9yZXQpCiNkZWZp
bmUgQXhpc1RockRldGFjaCh0aHIpIHB0aHJlYWRfZGV0YWNoKHRocikKI2RlZmluZSBBeGlzVGhy
QXR0ckluaXQoYXR0cikgcHRocmVhZF9hdHRyX2luaXQoYXR0cikKI2RlZmluZSBBeGlzVGhyQXR0
ckRlc3Ryb3koYXR0cikgcHRocmVhZF9hdHRyX2Rlc3Ryb3koYXR0cikKI2RlZmluZSBBeGlzVGhy
QXR0clNldGRldGFjaHN0YXRlKGF0dHIsc3RhdGUpIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0
ZShhdHRyLCBzdGF0ZSkKI2RlZmluZSBBeGlzVGhyQXR0ckdldGRldGFjaHN0YXRlKGF0dHIsc3Rh
dGVQKSBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUoYXR0ciwgc3RhdGVQKQojZGVmaW5lIEF4
aXNUaHJBdHRyU2V0c2NoZWRwYXJhbShhdHRyLHBhcmFtKSBwdGhyZWFkX2F0dHJfc2V0c2NoZWRw
YXJhbShhdHRyLCBwYXJhbSkKI2RlZmluZSBBeGlzVGhyQXR0ckdldHNjaGVkcGFyYW0oYXR0cixw
YXJhbVApIHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtKGF0dHIsIHBhcmFtUCkKI2RlZmluZSBB
eGlzVGhyQXR0clNldHNjaGVkcG9saWN5KGF0dHIscG9saWN5KSBwdGhyZWFkX2F0dHJfc2V0c2No
ZWRwb2xpY3koYXR0ciwgcG9saWN5KQojZGVmaW5lIEF4aXNUaHJBdHRyR2V0c2NoZWRwb2xpY3ko
YXR0cixwb2xpY3lQKSBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3koYXR0ciwgcG9saWN5UCkK
I2RlZmluZSBBeGlzVGhyQXR0clNldGluaGVyaXRzY2hlZChhdHRyLGluaGVyaXQpIHB0aHJlYWRf
YXR0cl9zZXRzY2hlZGluaGVyaXQoYXR0ciwgaW5oZXJpdCkKI2RlZmluZSBBeGlzVGhyQXR0ckdl
dGluaGVyaXRzY2hlZChhdHRyLGluaGVyaXRQKSBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRpbmhlcml0
KGF0dHIsIGluaGVyaXRQKQojZGVmaW5lIEF4aXNUaHJBdHRyU2V0c2NvcGUoYXR0cixzY29wZSkg
cHRocmVhZF9hdHRyX3NldHNjb3BlKGF0dHIsIHNjb3BlKQojZGVmaW5lIEF4aXNUaHJBdHRyR2V0
c2NvcGUoYXR0cixzY29wZVApIHB0aHJlYWRfYXR0cl9nZXRzY29wZShhdHRyLCBzY29wZVApCiNk
ZWZpbmUgQXhpc1RoclNldHNjaGVkcGFyYW0odGhyLHBvbGljeSxwYXJhbSkgcHRocmVhZF9zZXRz
Y2hlZHBhcmFtKHRociwgcG9saWN5LCBwYXJhbSkKI2RlZmluZSBBeGlzVGhyR2V0c2NoZWRwYXJh
bSh0aHIscG9saWN5UCxwYXJhbVApIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSh0aHIsIHBvbGljeVAs
IHBhcmFtUCkKI2RlZmluZSBBeGlzVGhyTXV0ZXhJbml0KG11dGV4LG11dGV4QXR0cikgcHRocmVh
ZF9tdXRleF9pbml0KG11dGV4LCBtdXRleEF0dHIpCiNkZWZpbmUgQXhpc1Rock11dGV4RGVzdHJv
eShtdXRleCkgcHRocmVhZF9tdXRleF9kZXN0cm95KG11dGV4KQojZGVmaW5lIEF4aXNUaHJNdXRl
eFRyeWxvY2sobXV0ZXgpIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayhtdXRleCkKI2RlZmluZSBBeGlz
VGhyTXV0ZXhMb2NrKG11dGV4KSBwdGhyZWFkX211dGV4X2xvY2sobXV0ZXgpCiNkZWZpbmUgQXhp
c1Rock11dGV4VW5sb2NrKG11dGV4KSBwdGhyZWFkX211dGV4X3VubG9jayhtdXRleCkKI2RlZmlu
ZSBBeGlzVGhyTXV0ZXhhdHRySW5pdChtdXRleEF0dHIpIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQo
bXV0ZXhBdHRyKQojZGVmaW5lIEF4aXNUaHJNdXRleGF0dHJEZXN0cm95KG11dGV4QXR0cikgcHRo
cmVhZF9tdXRleGF0dHJfZGVzdHJveShtdXRleEF0dHIpCiNkZWZpbmUgQXhpc1Rock11dGV4YXR0
clNldGtpbmROcChtdXRleEF0dHIsa2luZCkgcHRocmVhZF9tdXRleGF0dHJfc2V0a2luZF9ucCht
dXRleEF0dHIsIGtpbmQpCiNkZWZpbmUgQXhpc1Rock11dGV4YXR0ckdldGtpbmROcChtdXRleEF0
dHIsa2luZFApIHB0aHJlYWRfbXV0ZXhhdHRyX3NldGtpbmRfbnAobXV0ZXhBdHRyLCBraW5kUCkK
I2RlZmluZSBBeGlzVGhyQ29uZEluaXQoY29uZCxjb25kQXR0cikgcHRocmVhZF9jb25kX2luaXQo
Y29uZCwgY29uZEF0dHIpCiNkZWZpbmUgQXhpc1RockNvbmREZXN0cm95KGNvbmQpIHB0aHJlYWRf
Y29uZF9kZXN0cm95KGNvbmQpCiNkZWZpbmUgQXhpc1RockNvbmRTaWduYWwoY29uZCkgcHRocmVh
ZF9jb25kX3NpZ25hbChjb25kKQojZGVmaW5lIEF4aXNUaHJDb25kV2FpdChjb25kLG11dGV4KSBw
dGhyZWFkX2NvbmRfd2FpdChjb25kLCBtdXRleCkKI2RlZmluZSBBeGlzVGhyQ29uZFRpbWVkd2Fp
dChjb25kLG11dGV4LHdhaXRUKSBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KGNvbmQsIG11dGV4LCB3
YWl0VCkKI2RlZmluZSBBeGlzVGhyQ29uZGF0dHJJbml0KGNvbmRBdHRyKSBwdGhyZWFkX2NvbmRh
dHRyX2luaXQoY29uZEF0dHIpCiNkZWZpbmUgQXhpc1RockNvbmRhdHRyRGVzdHJveShjb25kQXR0
cikgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95KGNvbmRBdHRyKQojZGVmaW5lIEF4aXNUaHJLZXlD
cmVhdGUoa2V5LGRlc3RyRnVuYykgcHRocmVhZF9rZXlfY3JlYXRlKGtleSwgZGVzdHJGdW5jKQoj
ZGVmaW5lIEF4aXNUaHJLZXlEZWxldGUoa2V5KSBwdGhyZWFkX2tleV9kZWxldGUoa2V5KQojZGVm
aW5lIEF4aXNUaHJTZXRTcGVjaWZpYyhrZXkscHRyKSBwdGhyZWFkX3NldHNwZWNpZmljKGtleSwg
cHRyKQojZGVmaW5lIEF4aXNUaHJHZXRTcGVjaWZpYyhrZXkscHRyKSBwdGhyZWFkX2dldHNwZWNp
ZmljKGtleSwgcHRyKQojZGVmaW5lIEF4aXNUaHJPbmNlKG9uY2UsaW5pdFJ0bikgcHRocmVhZF9v
bmNlKG9uY2UsIGluaXRSdG4pCiNkZWZpbmUgQXhpc1RoclNldGNhbmNlbHN0YXRlKHN0YXRlLG9s
ZFN0YXRlKSBwdGhyZWFkX3NldGNhbmNlbHN0YXRlKHN0YXRlLCBvbGRTdGF0ZSkKI2RlZmluZSBB
eGlzVGhyU2V0Y2FuY2VsdHlwZSh0eXBlLG9sZFR5cGUpIHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUo
dHlwZSwgb2xkVHlwZSkKI2RlZmluZSBBeGlzVGhyQ2FuY2VsKHRocikgcHRocmVhZF9jYW5jZWwo
dGhyKQojZGVmaW5lIEF4aXNUaHJUZXN0Y2FuY2VsKCkgcHRocmVhZF90ZXN0Y2FuY2VsKCkKI2Rl
ZmluZSBBeGlzVGhyQ2xlYW51cFB1c2gocnRuLGFyZykgcHRocmVhZF9jbGVhbnVwX3B1c2gocnRu
LGFyZykKI2RlZmluZSBBeGlzVGhyQ2xlYW51cFBvcChleGVjdXRlKSBwdGhyZWFkX2NsZWFudXBf
cG9wKGV4ZWN1dGUpCiNkZWZpbmUgQXhpc1RockNsZWFudXBQdXNoRGVmZXJOcChydG4sYXJnKSBw
dGhyZWFkX2NsZWFudXBfcHVzaF9kZWZlcl9ucChydG4sYXJnKQojZGVmaW5lIEF4aXNUaHJDbGVh
bnVwUG9wUmVzdG9yZU5wKGV4ZWN1dGUpIHB0aHJlYWRfY2xlYW51cF9wb3BfcmVzdG9yZV9ucChl
eGVjdXRlKQojZGVmaW5lIEF4aXNUaHJTaWdtYXNrKGhvdyxuZXdtYXNrLG9sZG1hc2spIHB0aHJl
YWRfc2lnbWFzayhob3csIG5ld21hc2ssIG9sZG1hc2spCiNkZWZpbmUgQXhpc1RocktpbGwodGhy
LHNpZ25vKSBwdGhyZWFkX2tpbGwodGhyLCBzaWdubykKI2RlZmluZSBBeGlzVGhyQXRmb3JrKHBy
ZXBhcmUscGFyZW50LGNoaWxkKSBwdGhyZWFkX2F0Zm9yayhwcmVwYXJlLCBwYXJlbnQsIGNoaWxk
KQojZGVmaW5lIEF4aXNUaHJLaWxsT3RoZXJUaHJlYWRzTnAoKSBwdGhyZWFkX2tpbGxfb3RoZXJf
dGhyZWFkc19ucCgpCiNkZWZpbmUgQXhpc1RockluaXRpYWxpemUoKSBwdGhyZWFkX2luaXRpYWxp
emUoKQoKCnR5cGVkZWYgc3RydWN0IEF4aXNUaHJMb2NrIHsKICAgIHUzMiBzaGFyZWRDb3VudDsK
ICAgIHUzMiBleGNsdXNpdmVDb3VudDsKCgoKCgogICAgcHRocmVhZF90IGV4Y2x1c2l2ZU93bmVy
OwogICAgcHRocmVhZF9tdXRleF90IG11dGV4OwogICAgcHRocmVhZF9jb25kX3QgbG9ja0ZyZWU7
Cgp9IEF4aXNUaHJMb2NrOwp0eXBlZGVmIHZvaWQqIEF4aXNUaHJMb2NrQXR0cjsKIyAyMzYgImF4
aXMvYXhpc3Roci5oIgoKIyAxNyAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWRlZnMuaCIgMgojIDI2
ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZGVmcy5oIgoKCiNkZWZpbmUgY1NkYm1Mb2dQcmZ4ICIl
czolJCIsIF9fRlVOQ1RJT05fXwoKdHlwZWRlZiBzdHJ1Y3QgU2RibVdvcmtQb29sIHsKICAgIENx
dWV1ZVB0ckxpbmsgbGlzdDsKICAgIEhlYXBEZXNjIGRlc2M7Cn0gU2RibVdvcmtQb29sOwpleHRl
cm4gaW5saW5lIHZvaWQgU2RibVdvcmtQb29sc0luaXQoU2RibVdvcmtQb29sKiB0Z3QpIHsgQ3F1
ZXVlUHRySW5pdCh0Z3QsICgoV29yZCkoJigoKFNkYm1Xb3JrUG9vbCAqKTApLT5saXN0KSkpKTt9
IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtV29ya1Bvb2xzSW5zZXJ0KFNkYm1Xb3JrUG9vbCogdG9w
LCBTZGJtV29ya1Bvb2wqIHRndCkgeyBDcXVldWVQdHJJbnNlcnRRdWV1ZSh0b3AsIHRndCwgKChX
b3JkKSgmKCgoU2RibVdvcmtQb29sICopMCktPmxpc3QpKSkpO30gZXh0ZXJuIGlubGluZSB2b2lk
IFNkYm1Xb3JrUG9vbHNBcHBlbmQoU2RibVdvcmtQb29sKiB0b3AsIFNkYm1Xb3JrUG9vbCogdGd0
KSB7IENxdWV1ZVB0ckFwcGVuZFF1ZXVlKHRvcCwgdGd0LCAoKFdvcmQpKCYoKChTZGJtV29ya1Bv
b2wgKikwKS0+bGlzdCkpKSk7fSBleHRlcm4gaW5saW5lIFNkYm1Xb3JrUG9vbCogU2RibVdvcmtQ
b29sc0RlbGV0ZShTZGJtV29ya1Bvb2wqIHRndCkgeyByZXR1cm4gQ3F1ZXVlUHRyRGVsZXRlUXVl
dWUodGd0LCAoKFdvcmQpKCYoKChTZGJtV29ya1Bvb2wgKikwKS0+bGlzdCkpKSk7fSBleHRlcm4g
aW5saW5lIFNkYm1Xb3JrUG9vbCogU2RibVdvcmtQb29sc05leHQoU2RibVdvcmtQb29sKiB0b3As
IFNkYm1Xb3JrUG9vbCogdGd0KSB7IGlmKHRndCAhPSAoKHZvaWQgKikwKSkgeyBTZGJtV29ya1Bv
b2wqIG5leHQgPSB0Z3QtPmxpc3QuZnJ3ZDsgcmV0dXJuIChuZXh0ICE9IHRvcCkgPyBuZXh0IDog
KCh2b2lkICopMCk7IH0gZWxzZSByZXR1cm4gdG9wO30gZXh0ZXJuIGlubGluZSBTZGJtV29ya1Bv
b2wqIFNkYm1Xb3JrUG9vbHNQcmV2KFNkYm1Xb3JrUG9vbCogdG9wLCBTZGJtV29ya1Bvb2wqIHRn
dCkgeyBpZih0Z3QgIT0gKCh2b2lkICopMCkpIHsgU2RibVdvcmtQb29sKiBwcmV2ID0gdGd0LT5s
aXN0LmJrd2Q7IHJldHVybiAocHJldiAhPSB0b3ApID8gcHJldiA6ICgodm9pZCAqKTApOyB9IGVs
c2UgcmV0dXJuIHRvcDt9OwojZGVmaW5lIGNTZGJtV29ya1Bvb2xTaXplIDQxOTQzMDQKI2RlZmlu
ZSBjU2RibVdvcmtEYXRhTGltaXQgMjA5NzE1MgojZGVmaW5lIGNTZGJtU3RyTGltaXQgMTA0ODU3
NQoKdHlwZWRlZiBzdHJ1Y3QgU2RibUhhbmRsZUNvbW1vbiB7CiAgICBTZGJtRGVzYyBkZXNjOwog
ICAgQ3F1ZXVlUHRyTGluayBsaXN0OwogICAgdTMyIHZhckRhdGFNYXBwZWQ6MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzVGFibGVIYW5kbGU6MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdyaXRhYmxlOjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Mjk7CiAgICBz
MzIgcmVmOwogICAgQWRhbURlc2MgdmFyRGF0YURlc2M7Cn0gU2RibUhhbmRsZUNvbW1vbjsKCnN0
cnVjdCBTZGJtVGFibGVIYW5kbGU7CnR5cGVkZWYgc3RydWN0IFNkYm1EYkhhbmRsZSB7CiAgICBT
ZGJtSGFuZGxlQ29tbW9uIGNvbW1vbjsKICAgIEF4aXNUaHJMb2NrIGxvY2s7CiAgICB1MzIgcnN2
IDoxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOjMxOwoKICAgIFNkYm1UYWJsZU5vIHRi
bE5vOwogICAgc3RydWN0IFNkYm1UYWJsZUhhbmRsZSogdGFibGVzOwogICAgQWRhbURlc2MgZGJG
aWxlOwogICAgQWRhbURlc2Mgc3ViZmlsZXNbOF07CiAgICBBZGFtU3ViZmlsZVBhcmFtIHBhcmFt
c1s4XTsKICAgIEFkYW1GaWxlUGFyYW0gZGJQYXJhbTsKCiAgICBTZGJtRGJNYWluKiBkYk1haW47
CiAgICBTZGJtRW51bVNldEF0dHIqIGVudW1TZXRBdHRyOwogICAgU2RibUVudW1TZXRFbnQqIGVu
dW1TZXRzOwogICAgU2RibUVudW1Vbml0QXR0ciogZW51bVVuaXRBdHRyOwogICAgU2RibUVudW1V
bml0KiBlbnVtVW5pdHM7CiAgICB2b2lkKiBkYk1haW5JZHg7CgogICAgY29uc3QgQXRyZWVDYWxs
YmFja3MqIGVudW1OYW1lU2VhcmNoT3ByczsKICAgIGNvbnN0IEF0cmVlQ2FsbGJhY2tzKiBlbnVt
VmFsU2VhcmNoT3ByczsKCiAgICBTZGJtV29ya1Bvb2wgd29ya1Bvb2xzOwogICAgU2RibVdvcmtQ
b29sKiBjdXJQb29sOwoKICAgIGludCB1cGRhdGVMb2c7CgogICAgdTMyIGRiTmFtZUxlbjsKICAg
IENociBkYk5hbWVbMF07Cn0gU2RibURiSGFuZGxlOwoKdHlwZWRlZiBzdHJ1Y3QgU2RibVRhYmxl
SGFuZGxlIHsKICAgIFNkYm1IYW5kbGVDb21tb24gY29tbW9uOwogICAgdTMyIG9wZW5lZCA6MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDozMTsKICAgIFNkYm1UYWJsZU5vIHRibE5vOwog
ICAgU2RibURiSGFuZGxlKiBkYkg7CiAgICBBZGFtRmlsZVBhcmFtIGRiUGFyYW07CgogICAgQWRh
bURlc2Mgc3ViZmlsZXNbOF07CiAgICBBZGFtU3ViZmlsZVBhcmFtIHBhcmFtc1s4XTsKCiAgICBT
ZGJtVGFibGVNYWluKiB0YWJsZU1haW47CiAgICBTZGJtUmVjQXR0ciogcmVjc0NvbnRuckF0dHI7
CiAgICBTZGJtUmVjRW50eSogcmVjczsKICAgIFNkYm1UYWJsZUZsZEF0dHIqIGZsZHNDb250bnJB
dHRyOwogICAgU2RibUZsZEJvZHkqIGZsZHM7CiAgICBTZGJtTGlua2VkRmxkSW5mb0F0dHIqIGxp
bmtlZEZsZHNBdHRyOwogICAgU2RibUxpbmtlZEZsZEluZm8qIGxpbmtlZEZsZHM7CiAgICB2b2lk
KiBpbmRleEFyZWE7CgogICAgU3ogcmVjU3o7CiAgICBzdHJ1Y3QgU2RibVRhYmxlSGFuZGxlKiog
bGlua1RvVGFibGVzOwp9IFNkYm1UYWJsZUhhbmRsZTsKCnR5cGVkZWYgdW5pb24gU2RibUhhbmRs
ZSB7CiAgICBTZGJtSGFuZGxlQ29tbW9uIGNvbW1vbjsKICAgIFNkYm1EYkhhbmRsZSBkYjsKICAg
IFNkYm1UYWJsZUhhbmRsZSB0YWJsZTsKfSBTZGJtSGFuZGxlOwoKZXh0ZXJuIGlubGluZSB2b2lk
IFNkYm1EYkhhbmRsZXNJbml0KFNkYm1EYkhhbmRsZSogdGd0KSB7IENxdWV1ZVB0ckluaXQodGd0
LCAoKFdvcmQpKCYoKChTZGJtRGJIYW5kbGUgKikwKS0+Y29tbW9uLmxpc3QpKSkpO30gZXh0ZXJu
IGlubGluZSB2b2lkIFNkYm1EYkhhbmRsZXNJbnNlcnQoU2RibURiSGFuZGxlKiB0b3AsIFNkYm1E
YkhhbmRsZSogdGd0KSB7IENxdWV1ZVB0ckluc2VydFF1ZXVlKHRvcCwgdGd0LCAoKFdvcmQpKCYo
KChTZGJtRGJIYW5kbGUgKikwKS0+Y29tbW9uLmxpc3QpKSkpO30gZXh0ZXJuIGlubGluZSB2b2lk
IFNkYm1EYkhhbmRsZXNBcHBlbmQoU2RibURiSGFuZGxlKiB0b3AsIFNkYm1EYkhhbmRsZSogdGd0
KSB7IENxdWV1ZVB0ckFwcGVuZFF1ZXVlKHRvcCwgdGd0LCAoKFdvcmQpKCYoKChTZGJtRGJIYW5k
bGUgKikwKS0+Y29tbW9uLmxpc3QpKSkpO30gZXh0ZXJuIGlubGluZSBTZGJtRGJIYW5kbGUqIFNk
Ym1EYkhhbmRsZXNEZWxldGUoU2RibURiSGFuZGxlKiB0Z3QpIHsgcmV0dXJuIENxdWV1ZVB0ckRl
bGV0ZVF1ZXVlKHRndCwgKChXb3JkKSgmKCgoU2RibURiSGFuZGxlICopMCktPmNvbW1vbi5saXN0
KSkpKTt9IGV4dGVybiBpbmxpbmUgU2RibURiSGFuZGxlKiBTZGJtRGJIYW5kbGVzTmV4dChTZGJt
RGJIYW5kbGUqIHRvcCwgU2RibURiSGFuZGxlKiB0Z3QpIHsgaWYodGd0ICE9ICgodm9pZCAqKTAp
KSB7IFNkYm1EYkhhbmRsZSogbmV4dCA9IHRndC0+Y29tbW9uLmxpc3QuZnJ3ZDsgcmV0dXJuIChu
ZXh0ICE9IHRvcCkgPyBuZXh0IDogKCh2b2lkICopMCk7IH0gZWxzZSByZXR1cm4gdG9wO30gZXh0
ZXJuIGlubGluZSBTZGJtRGJIYW5kbGUqIFNkYm1EYkhhbmRsZXNQcmV2KFNkYm1EYkhhbmRsZSog
dG9wLCBTZGJtRGJIYW5kbGUqIHRndCkgeyBpZih0Z3QgIT0gKCh2b2lkICopMCkpIHsgU2RibURi
SGFuZGxlKiBwcmV2ID0gdGd0LT5jb21tb24ubGlzdC5ia3dkOyByZXR1cm4gKHByZXYgIT0gdG9w
KSA/IHByZXYgOiAoKHZvaWQgKikwKTsgfSBlbHNlIHJldHVybiB0b3A7fTsKCmV4dGVybiBpbmxp
bmUgdm9pZCBTZGJtVGFibGVIYW5kbGVzSW5pdChTZGJtVGFibGVIYW5kbGUqIHRndCkgeyBDcXVl
dWVQdHJJbml0KHRndCwgKChXb3JkKSgmKCgoU2RibVRhYmxlSGFuZGxlICopMCktPmNvbW1vbi5s
aXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtVGFibGVIYW5kbGVzSW5zZXJ0KFNkYm1U
YWJsZUhhbmRsZSogdG9wLCBTZGJtVGFibGVIYW5kbGUqIHRndCkgeyBDcXVldWVQdHJJbnNlcnRR
dWV1ZSh0b3AsIHRndCwgKChXb3JkKSgmKCgoU2RibVRhYmxlSGFuZGxlICopMCktPmNvbW1vbi5s
aXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgdm9pZCBTZGJtVGFibGVIYW5kbGVzQXBwZW5kKFNkYm1U
YWJsZUhhbmRsZSogdG9wLCBTZGJtVGFibGVIYW5kbGUqIHRndCkgeyBDcXVldWVQdHJBcHBlbmRR
dWV1ZSh0b3AsIHRndCwgKChXb3JkKSgmKCgoU2RibVRhYmxlSGFuZGxlICopMCktPmNvbW1vbi5s
aXN0KSkpKTt9IGV4dGVybiBpbmxpbmUgU2RibVRhYmxlSGFuZGxlKiBTZGJtVGFibGVIYW5kbGVz
RGVsZXRlKFNkYm1UYWJsZUhhbmRsZSogdGd0KSB7IHJldHVybiBDcXVldWVQdHJEZWxldGVRdWV1
ZSh0Z3QsICgoV29yZCkoJigoKFNkYm1UYWJsZUhhbmRsZSAqKTApLT5jb21tb24ubGlzdCkpKSk7
fSBleHRlcm4gaW5saW5lIFNkYm1UYWJsZUhhbmRsZSogU2RibVRhYmxlSGFuZGxlc05leHQoU2Ri
bVRhYmxlSGFuZGxlKiB0b3AsIFNkYm1UYWJsZUhhbmRsZSogdGd0KSB7IGlmKHRndCAhPSAoKHZv
aWQgKikwKSkgeyBTZGJtVGFibGVIYW5kbGUqIG5leHQgPSB0Z3QtPmNvbW1vbi5saXN0LmZyd2Q7
IHJldHVybiAobmV4dCAhPSB0b3ApID8gbmV4dCA6ICgodm9pZCAqKTApOyB9IGVsc2UgcmV0dXJu
IHRvcDt9IGV4dGVybiBpbmxpbmUgU2RibVRhYmxlSGFuZGxlKiBTZGJtVGFibGVIYW5kbGVzUHJl
dihTZGJtVGFibGVIYW5kbGUqIHRvcCwgU2RibVRhYmxlSGFuZGxlKiB0Z3QpIHsgaWYodGd0ICE9
ICgodm9pZCAqKTApKSB7IFNkYm1UYWJsZUhhbmRsZSogcHJldiA9IHRndC0+Y29tbW9uLmxpc3Qu
Ymt3ZDsgcmV0dXJuIChwcmV2ICE9IHRvcCkgPyBwcmV2IDogKCh2b2lkICopMCk7IH0gZWxzZSBy
ZXR1cm4gdG9wO307CgpleHRlcm4gaW50IFNkYm1VcGRhdGVMb2dTZXQoU2RibVRhYmxlSGFuZGxl
KiB0YmxILCBTZGJtUmVjRW50eSogcmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNk
Ym1GbGRTcGVjKiBmU3BlYywgU2RibUZsZEJvZHkqIGZsZCk7CmV4dGVybiBpbnQgU2RibVVwZGF0
ZUxvZ0VyYXNlKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0VudHkqIHJlYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRTcGVjKiBmU3BlYywgU2RibVZlY0ZsZElk
eCB2ZWNJZHgpOwpleHRlcm4gaW50IFNkYm1VcGRhdGVMb2dDbGVhcihTZGJtVGFibGVIYW5kbGUq
IHRibEgsIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRTcGVjKiBmU3BlYyk7CmV4dGVybiBpbnQg
U2RibVVwZGF0ZUxvZ0RlbChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1EYXRhSWQgZGF0YUlk
KTsKZXh0ZXJuIGludCBTZGJtVXBkYXRlTG9nTmV3UmVjKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwg
U2RibURhdGFJZCBkYXRhSWQpOwpleHRlcm4gaW50IFNkYm1EdW1wRmxkQ29udGVudChTZGJtVGFi
bGVIYW5kbGUqIHRibEgsIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRObyBmbGRObywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdXRwdXQsIGludCBtb2RlKTsKCmV4dGVybiBp
bmxpbmUgaW50ClNkYm1TdHJjbXAoY29uc3Qgdm9pZCogc3RyMSwgY29uc3Qgdm9pZCogc3RyMikK
ewogICAgTGVuIGxlbjEgPSBzdHJsZW4oc3RyMSk7CiAgICBMZW4gbGVuMiA9IHN0cmxlbihzdHIy
KTsKICAgIExlbiBsZW47CiAgICBpbnQgY2M7CgogICAgbGVuID0gKGxlbjEgPCBsZW4yKSA/IGxl
bjEgOiBsZW4yOwogICAgY2MgPSBtZW1jbXAoc3RyMSwgc3RyMiwgbGVuKTsKICAgIGlmKGNjID09
IDApIHsKICAgICAgICBpZihsZW4xIDwgbGVuMikgewogICAgICAgICAgICBjYyA9IC0xOwogICAg
ICAgIH0gZWxzZSBpZihsZW4xID4gbGVuMikgewogICAgICAgICAgICBjYyA9IDE7CiAgICAgICAg
fQogICAgfQogICAgcmV0dXJuIGNjOwp9CgoKIyAzNCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZs
ZHUuYyIgMgojIDEgIi4uLy4uL3NyYy9zZGJtLnYwL3NkYm12ZHUuaCIgMQojIDE0ICIuLi8uLi9z
cmMvc2RibS52MC9zZGJtdmR1LmgiCiNkZWZpbmUgX0FYSVNfU0RCTVZEVV9IXyAKCgojIDEgImF4
aXMvYXhpc2Vyci5oIiAxCiMgMjggImF4aXMvYXhpc2Vyci5oIgojZGVmaW5lIF9BWElTX0FYSVNF
UlJfSF8gCgoKIyA4NyAiYXhpcy9heGlzZXJyLmgiCiNkZWZpbmUgZU9LIDAKI2RlZmluZSBOb3RF
cnIoZXJyKSAoKGVycikgPj0gZU9LKQojZGVmaW5lIElzRXJyKGVycikgKChlcnIpIDwgZU9LKQoj
ZGVmaW5lIEVyclJldChlcnIpICgtKGVycikpCgojZGVmaW5lIGVTeXNNaW4gMQojZGVmaW5lIGVT
eXNNYXggMTAyMwoKI2RlZmluZSBlQ21uTWluIDEwMjQKI2RlZmluZSBlQ21uSWxsZWdhbEV4Y2Vw
dGlvbiAxMDI1CiNkZWZpbmUgZUNtblN0YW5kYXJkRXhjZXB0aW9uIDEwMjYKI2RlZmluZSBlQ21u
Q2hyUHRyRmF1bHQgMTAyNwojZGVmaW5lIGVDbW5FbmRPZkRhdGEgMTAyOAojZGVmaW5lIGVDbW5U
aHJQcml2VGhyZWFkSWRVbm1hdGNoIDEwMjkKI2RlZmluZSBlQ21uVGhyUHJpdkltcG9zc2libGVT
ZXQgMTAzMAojZGVmaW5lIGVDbW5UaHJQcml2QWxyZWFkeVJlc2VydmVkIDEwMzEKI2RlZmluZSBl
Q21uVGhyUHJpdklsbGVnYWxQcmVzZXQgMTAzMgojZGVmaW5lIGVDbW5NYXggMjA0NwoKI2RlZmlu
ZSBlVXRpbE1pbiAyMDQ4CiNkZWZpbmUgZVV0aWxEZXNjSWRFcnIgMjA0OQojZGVmaW5lIGVVdGls
RGVzY0luaXREdXAgMjA1MAojZGVmaW5lIGVVdGlsRGVzY0lsbFZhbGlkTnVtIDIwNTEKI2RlZmlu
ZSBlVXRpbERlc2NOb3RZZXRJbml0IDIwNTIKI2RlZmluZSBlVXRpbERlc2NPdmVyTGltaXQgMjA1
MwojZGVmaW5lIGVVdGlsRGVzY0lsbERlc2MgMjA1NAojZGVmaW5lIGVVdGlsSGVhcE5vTW5nIDIw
NjAKI2RlZmluZSBlVXRpbEhlYXBJbGxEZXNjIDIwNjEKI2RlZmluZSBlVXRpbEhlYXBJbGxUeXBl
IDIwNjIKI2RlZmluZSBlVXRpbEluZXROb0FkZHIgMjA2MwojZGVmaW5lIGVBdGltZVN0ckludmFs
aWQgMjA5NgojZGVmaW5lIGVBdGltZUZvcm1hdE5vdE1hdGNoIDIwOTcKI2RlZmluZSBlQXRpbWVV
bnN1cHBvcnRlZEZvcm1hdCAyMDk4CiNkZWZpbmUgZVV0aWxBdHJlZUR1cGxpY2F0aW9uIDIxMTIK
I2RlZmluZSBlVXRpbEF0cmVlSW52YWxpZFJlcSAyMTEzCiNkZWZpbmUgZVV0aWxBdHJlZU5vdEZv
dW5kIDIxMTQKI2RlZmluZSBlVXRpbEF0cmVlTm9UcmVlIDIxMTUKI2RlZmluZSBlVXRpbEF0cmVl
Q29uZnVzaW9uIDIxMTYKI2RlZmluZSBlQXhpc1RocklsbEV4Y2x1c2l2ZUxvY2sgMjE3NgojZGVm
aW5lIGVUc2FtTm9IYW5kbGUgMjE3NwojZGVmaW5lIGVUc2FtTm9GcmVlTmVpZ2hub3VyIDIxNzgK
I2RlZmluZSBlVkxBQXJlYVNpemVVbm1hdGNoIDIyMDAKI2RlZmluZSBlVkxBSW50ZXJuYWxCdWcg
MjIwMQojZGVmaW5lIGVWTEFCcm9rZW4gMjIwMgojZGVmaW5lIGVWTEFOb3RTdXBwb3J0IDIyMDMK
I2RlZmluZSBlVkxBTm90U2V0T3B0aW9uIDIyMDQKI2RlZmluZSBlWGZTb2NrVGltZWRPdXQgMjMw
MAojZGVmaW5lIGVYZlNvY2tFcnIgMjMwMQojZGVmaW5lIGVYZkhlYWRlclRvb0xhcmdlIDIzMDIK
I2RlZmluZSBlWGZCYWRIZWFkZXIgMjMwMwojZGVmaW5lIGVYZkJhZFJlcXVlc3QgMjMwNAojZGVm
aW5lIGVYZk5vQ2h1bmtIZWFkZXIgMjMwNQojZGVmaW5lIGVVdGlsQkFTRTY0TWFsZm9ybWVkIDIz
MTAKI2RlZmluZSBlTWFpbFF1b3RlZE5vbkFzY2lpIDIzMjAKI2RlZmluZSBlTWFpbExpbmVUb29M
b25nIDIzMjEKI2RlZmluZSBlTWFpbE5vdFN1cHBvcnRlZCAyMzIzCiNkZWZpbmUgZUNvZGVDb252
U3JjRGF0YUVuZCAyMzQwCiNkZWZpbmUgZUNvZGVDb252RHN0RGF0YUVuZCAyMzQxCiNkZWZpbmUg
ZUNvZGVDb252U3JjRGF0YUVyciAyMzQyCiNkZWZpbmUgZUNvZGVDb252RHN0RGF0YUVyciAyMzQz
CiNkZWZpbmUgZUNvZGVDb252SW52YWxpZCAyMzQ0CgojZGVmaW5lIGVBZGFtTWluIDMwNzIKI2Rl
ZmluZSBlQWRhbUlzTm90RmlsZSAzMDczCiNkZWZpbmUgZUFkYW1JbGxTdWJmaWxlSWQgMzA3NAoj
ZGVmaW5lIGVBZGFtSWxsU3ViZmlsZVR5cGUgMzA3NQojZGVmaW5lIGVBZGFtRm9ya0V4aXN0IDMw
NzYKI2RlZmluZSBlQWRhbVN1YmZpbGVFeGlzdCAzMDc3CiNkZWZpbmUgZUFkYW1JbGxGb3JrSWQg
MzA3OAojZGVmaW5lIGVBZGFtTm90U3VwcG9ydGVkIDMwNzkKI2RlZmluZSBlQWRhbUlsbFBvc0Zv
clZhckVsbUxpc3QgMzA4MAojZGVmaW5lIGVBZGFtVG9vTGFyZ2VEYXRhIDMwODEKCiNkZWZpbmUg
ZVNkYm1NaW4gNDA5NgojZGVmaW5lIGVTZGJtQnVpbGRJbGxFbnVtSWQgNDEwMAojZGVmaW5lIGVT
ZGJtQnVpbGREdXBsaWNhdGVFbnVtIDQxMDEKI2RlZmluZSBlU2RibUJ1aWxkSWxsRmxkTm8gNDEw
MgojZGVmaW5lIGVTZGJtQnVpbGREdXBsaWNhdGVGbGQgNDEwMwojZGVmaW5lIGVTZGJtTm9FbnVt
IDQxNDAKI2RlZmluZSBlU2RibU5vRmxkIDQxNDEKI2RlZmluZSBlU2RibVVubWF0Y2hEYkRlc2Mg
NDE0MgojZGVmaW5lIGVTZGJtRHVwRW51bVNldElkIDQxNDMKI2RlZmluZSBlU2RibU5vdEVudW1V
bml0TmFtZSA0MTQ0CiNkZWZpbmUgZVNkYm1Ob3RFbnVtVW5pdFZhbCA0MTQ1CiNkZWZpbmUgZVNk
Ym1Ub29MYXJnZURhdGEgNDE0NgojZGVmaW5lIGVTZGJtVG9vTG9uZ0RiTmFtZSA0MTQ3CiNkZWZp
bmUgZVNkYm1Ub29Mb25nVGFibGVOYW1lIDQxNDgKI2RlZmluZSBlU2RibVRvb0xvbmdFbnVtU2V0
TmFtZSA0MTQ5CiNkZWZpbmUgZVNkYm1Ub29Mb25nRW51bVVuaXROYW1lIDQxNTAKI2RlZmluZSBl
U2RibVRvb0xvbmdGaWVsZE5hbWUgNDE1MQojZGVmaW5lIGVTZGJtSWxsRmxkRGF0YUlkeCA0MTUy
CiNkZWZpbmUgZVNkYm1JbGxSZWNJZHggNDE1MwojZGVmaW5lIGVTZGJtSWxsUmVjUmV2aXNpb24g
NDE1NAojZGVmaW5lIGVTZGJtSWxsUmVjSWQgNDE1NQojZGVmaW5lIGVTZGJtSWxsUmVjSWRJblRh
YmxlTm8gNDE1NgojZGVmaW5lIGVTZGJtSWxsRmxkTm8gNDE1NwojZGVmaW5lIGVTZGJtTm9uZUZs
ZE5hbWUgNDE1OAojZGVmaW5lIGVTZGJtRHVwRmxkTmFtZSA0MTU5CiNkZWZpbmUgZVNkYm1JbGxT
ZWFyY2hUYXJnZXQgNDE2MAojZGVmaW5lIGVTZGJtTm9TdWNoRGF0YSA0MTYxCiNkZWZpbmUgZVNk
Ym1Ob1dvcmtBcmVhIDQxNzEKI2RlZmluZSBlU2RibUlsbFZhckRhdGEgNDE3MgojZGVmaW5lIGVT
ZGJtSWxsUXVlcnlDb25kIDQxNzMKI2RlZmluZSBlU2RibUJ1aWxkSWxsRmxkVHlwZSA0MTc0CiNk
ZWZpbmUgZVNkYm1CdWlsZE5vdFN1cHB0RmxkVHlwZSA0MTc1CiNkZWZpbmUgZVNkYm1JbGxUYWJs
ZURlc2MgNDE3NgojZGVmaW5lIGVTZGJtSWxsVGJsTm9Gb3JMaW5rRmxkIDQxNzcKI2RlZmluZSBl
U2RibUlsbEZsZE5vRm9yTGlua0ZsZCA0MTc4CiNkZWZpbmUgZVNkYm1NdWx0aXBsZUxpbmtGbGQg
NDE3OQojZGVmaW5lIGVTZGJtSWxsUmVjTnVtRm9yRXhwYW5kIDQxODAKI2RlZmluZSBlU2RibUZv
dW5kSW5jb25zaXN0ZW5jeUZvclJlY0VudHkgNDE4MQojZGVmaW5lIGVTZGJtVW5tYXRjaEZsZFR5
cGUgNDE4MgojZGVmaW5lIGVTZGJtSWxsRW51bVNldE5hbWUgNDE4MwojZGVmaW5lIGVTZGJtSWxs
RW51bVNldElkIDQxODQKI2RlZmluZSBlU2RibUlsbFRibE5vIDQxODUKI2RlZmluZSBlU2RibUls
bERhdGFMZW4gNDE4NgojZGVmaW5lIGVTZGJtRHVwbGljYXRlRGF0YSA0MTg3CiNkZWZpbmUgZVNk
Ym1Vbm1hdGNoTGlua2VkRGF0YSA0MTg4CiNkZWZpbmUgZVNkYm1PdmVyTGltaXRRdWVyeUNvbmRp
dGlvbnMgNDE4OQoKI2RlZmluZSBlSHRpZk1pbiA1MTIwCiNkZWZpbmUgZUh0aWZSZWVudGVyIDUx
MjEKI2RlZmluZSBlSHRpZk5vRW52VmFyIDUxMjIKI2RlZmluZSBlSHRpZlRodG1sRW9mIDUxMjMK
I2RlZmluZSBlSHRpZlRodG1sRW9iIDUxMjQKI2RlZmluZSBlSHRpZlRtcEJ1Zk92ciA1MTI1CiNk
ZWZpbmUgZUh0aWZQYXJhbVJhbmdlT3ZyIDUxMjYKI2RlZmluZSBlSHRpZlVua25vd25DYWxsYmFj
ayA1MTI3CiNkZWZpbmUgZUh0aWZVbmtub3duVGFibGUgNTEyOAojZGVmaW5lIGVIdGlmSWxsRmxk
VHlwZSA1MTI5CiNkZWZpbmUgZUh0aWZOb1JlY1NlbGVjdGVkIDUxMzAKI2RlZmluZSBlSHRpZkls
bERhdGUgNTEzMQojZGVmaW5lIGVIdGlmU2hvcnREYXRhIDUxMzIKCgojZGVmaW5lIGVTZXNzTWlu
IDYxNDQKI2RlZmluZSBlU2Vzc0lsbFBsYWluQ1JDaW5Db29raWUgNjE0NQojZGVmaW5lIGVTZXNz
SWxsQ2lwaGVyQ1JDaW5Db29raWUgNjE0NgojZGVmaW5lIGVTZXNzSWxsVGV4dENvb2tpZSA2MTQ3
CiNkZWZpbmUgZVNlc3NJbGxDYWNoZUZpbGUgNjE0OAojZGVmaW5lIGVTZXNzSWxsQ29va2llIDYx
NDkKI2RlZmluZSBlU2Vzc0lsbENhcGFiaWxpdHkgNjE1MAojZGVmaW5lIGVTZXNzVG9vTWFueVNl
c3Npb24gNjE1MQojZGVmaW5lIGVTZXNzSWxsUGFzc0NvZGVTdHIgNjE1MgojZGVmaW5lIGVTZXNz
UGFzc0NvZGVVbm1hdGNoIDYxNTMKI2RlZmluZSBlU2Vzc0lsbFNlc3NJRCA2MTU0CiNkZWZpbmUg
ZVNlc3NOb0Nvb2tpZSA2MTU1CiNkZWZpbmUgZVNlc3NEdXAgNjE1NgoKI2RlZmluZSBlU2xtTWlu
IDY2NTYKI2RlZmluZSBlU2xtTWF4IDcxNjcKCiNkZWZpbmUgZUNwcE1pbiA3MTY4CiNkZWZpbmUg
ZUNwcERiZ0lsbGVnYWxOYW1lIDcxNjgKI2RlZmluZSBlQ3BwRGJnTm9NZW0gNzE2OQojZGVmaW5l
IGVDcHBEYmdPdXRUb29TbWFsbCA3MTcwCiNkZWZpbmUgZUNwcE1heCA4MTkxCgojZGVmaW5lIGVD
cHBTeXNVdGxNaW4gODE5MgojZGVmaW5lIGVDcHBTeXNUZWxuZXRNaW4gODE5MgojZGVmaW5lIGVD
cHBTeXNUZWxuZXRVbnN1cHBvcnRlZE9wdGlvbiA4MTkyCiNkZWZpbmUgZUNwcFN5c1RlbG5ldENv
bm5DbG9zZWQgODE5MwojZGVmaW5lIGVDcHBTeXNUZWxuZXRVbnN1cHBvcnRlZENtZCA4MTk0CiNk
ZWZpbmUgZUNwcFN5c1RlbG5ldElsbFN1Yk9wdGlvblNlcXVlbmNlIDgxOTUKI2RlZmluZSBlQ3Bw
U3lzVGVsbmV0TmVnb3RpYXRpb25GYWlsIDgxOTYKI2RlZmluZSBlQ3BwU3lzVGVsbmV0TWF4IDgy
NTUKI2RlZmluZSBlQ3BwU3lzU3RyQnVmZk1pbiA4MjU2CiNkZWZpbmUgZUNwcFN5c1N0ckJ1ZmZJ
bnZhbGlkIDgyNTYKI2RlZmluZSBlQ3BwU3lzU3RyQnVmZk1heCA4Mjg4CiNkZWZpbmUgZWNwcFN5
c1V0bE1heCA5MjE1CgojZGVmaW5lIGVNdGFiTWluIDkyMTYKI2RlZmluZSBlTXRhYlBhcmFtTWlu
IDkyMTYKI2RlZmluZSBlTXRhYlBhcmFtVHlwZU1pc3NNYXRjaCA5MjE2CiNkZWZpbmUgZU10YWJQ
YXJhbUNob2ljZVJhbmdlT3ZlciA5MjE3CiNkZWZpbmUgZU10YWJQYXJhbVN5bnRheEVycm9yIDky
MTgKI2RlZmluZSBlTXRhYlBhcmFtUmFuZ2VPdmVyIDkyMTkKI2RlZmluZSBlTXRhYlBhcmFtQXBw
bENoZWNrRmFpbCA5MjIwCiNkZWZpbmUgZU10YWJQYXJhbVN0cmluZ1Rvb0xvbmcgOTIyMQojZGVm
aW5lIGVNdGFiUGFyYW1DaG9pY2VVbm1hdGNoIDkyMjIKI2RlZmluZSBlTXRhYlBhcmFtSXBWNEFk
ZHJJbGxlZ2FsIDkyMjMKI2RlZmluZSBlTXRhYlBhcmFtRWxlbUluZGV4UmFuZ2VPdmVyIDkyMjQK
I2RlZmluZSBlTXRhYlBhcmFtVHJlZUZhdGFsIDkyMjUKI2RlZmluZSBlTXRhYlBhcmFtVHlwZVVu
a25vd24gOTIyNgojZGVmaW5lIGVNdGFiUGFyYW1Qcm9mSW5kZXhSYW5nZU92ZXIgOTIyNwojZGVm
aW5lIGVNdGFiUGFyYW1Ob01lbSA5MjI4CiNkZWZpbmUgZU10YWJQYXJhbVRvb01hbnlSZWdpc3Qg
OTIyOQojZGVmaW5lIGVNdGFiUGFyYW1Xcm90ZVNoYWRvdyA5MjMwCiNkZWZpbmUgZU10YWJQYXJh
bVdyb3RlUGVyc2lzdGVudCA5MjMxCiNkZWZpbmUgZU10YWJQYXJhbUFzc29jRmV3RGF0YSA5MjMy
CiNkZWZpbmUgZU10YWJQYXJhbUlsbGVnYWxOYW1lUmVnaXN0IDkyMzMKI2RlZmluZSBlTXRhYlBh
cmFtTm9QZXJtaXNzaW9uIDkyMzQKI2RlZmluZSBlTXRhYlBhcmFtTWF4IDkyNzkKI2RlZmluZSBl
TXRhYkNtZE1pbiA5MjgwCiNkZWZpbmUgZU10YWJDbWRUcmVlRmF0YWwgOTI4MAojZGVmaW5lIGVN
dGFiQ21kSW5kZXhSYW5nZU92ZXIgOTI4MQojZGVmaW5lIGVNdGFiQ21kVHJlZVJlZ2lzdEZhaWwg
OTI4MgojZGVmaW5lIGVNdGFiQ21kTm9NZW0gOTI4MwojZGVmaW5lIGVNdGFiQ21kVG9vTWFueVJl
Z2lzdCA5Mjg0CiNkZWZpbmUgZU10YWJDbWRJbGxlZ2FsTmFtZVJlZ2lzdCA5Mjg1CiNkZWZpbmUg
ZU10YWJDbWRSdW5SZXN1bHRORyA5Mjg2CiNkZWZpbmUgZU10YWJDbWRNYXggOTM0MwojZGVmaW5l
IGVNdGFiTW9kTWluIDkzNDQKI2RlZmluZSBlTXRhYk1vZE5vTWVtIDkzNDQKI2RlZmluZSBlTXRh
Yk1vZFByb2ZWZWNJZHhSYW5nZU92ZXIgOTM0NQojZGVmaW5lIGVNdGFiTW9kUHJvZk5vRXhpdCA5
MzQ2CiNkZWZpbmUgZU10YWJNb2RQcm9mSWxsZWdhbFJlZ2lzdCA5MzQ3CiNkZWZpbmUgZU10YWJN
b2RQcm9mRHVwbGljYXRlUmVnaXN0IDkzNDgKI2RlZmluZSBlTXRhYk1vZEludGVyZmFjZU5hbWVE
dXBsaWNhdGUgOTM0OQojZGVmaW5lIGVNdGFiTW9kSW50ZXJmYWNlRnVsbCA5MzUwCiNkZWZpbmUg
ZU10YWJNb2RJbnRlcmZhY2VSZWdpc3RJbGxlZ2FsIDkzNTEKI2RlZmluZSBlTXRhYk1vZE1heCA5
NDA3CiNkZWZpbmUgZU10YWJNYWluTWluIDk0MDgKI2RlZmluZSBlTXRhYk1haW5NYXggOTQ3MQoj
ZGVmaW5lIGVNdGFiVXNlck1pbiA5NDcyCiNkZWZpbmUgZU10YWJVc2VySWxsZWdhbFBhc3NwaGFy
ZURpZ2VzdFN0ciA5NDcyCiNkZWZpbmUgZU10YWJVc2VyTWF4IDk0ODcKI2RlZmluZSBlTXRhYlN0
YXRNaW4gOTQ4OAojZGVmaW5lIGVNdGFiU3RhdElsbGVnYWxTdGF0SXRlbU5hbWUgOTQ4OAojZGVm
aW5lIGVNdGFiU3RhdER1cGxpY2F0ZVN0YXRJdGVtTmFtZSA5NDg5CiNkZWZpbmUgZU10YWJTdGF0
SWxsZWdhbFN0YXRSZWNTaXplIDk0OTAKI2RlZmluZSBlTXRhYlN0YXRJbGxlZ2FsU3RhdEl0ZW1U
eXBlIDk0OTEKI2RlZmluZSBlTXRhYlN0YXRNYXggOTUxOQojZGVmaW5lIGVNdGFiTWF4IDEwMjM5
CgoKIyAxOCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibXZkdS5oIiAyCiMgMjYgIi4uLy4uL3NyYy9z
ZGJtLnYwL3NkYm12ZHUuaCIKCgpleHRlcm4gaW5saW5lIGludApTZGJtTWFwVmFyRGF0YShTZGJt
SGFuZGxlQ29tbW9uKiBjb21IKQp7CiAgICBpbnQgZXJyID0gMDsKCiAgICA7CiAgICBpZighIGNv
bUgtPnZhckRhdGFNYXBwZWQpIHsKICAgICAgICBlcnIgPSBBZGFtTWFwU3ViZmlsZShjb21ILT52
YXJEYXRhRGVzYywgY29tSC0+d3JpdGFibGUgPyAxIDogMCk7CiAgICAgICAgaWYoKChlcnIpID49
IDApKSB7CiAgICAgICAgICAgIGNvbUgtPnZhckRhdGFNYXBwZWQgPSAxOwogICAgICAgIH0KICAg
IH0KICAgIHJldHVybiAoZXJyKTsKfQoKZXh0ZXJuIGlubGluZSBpbnQKU2RibVVubWFwVmFyRGF0
YShTZGJtSGFuZGxlQ29tbW9uKiBjb21IKQp7CiAgICBpbnQgZXJyID0gMDsKCiAgICA7CiAgICBp
Zihjb21ILT52YXJEYXRhTWFwcGVkKSB7CiAgICAgICAgQWRhbVVubWFwU3ViZmlsZShjb21ILT52
YXJEYXRhRGVzYyk7CiAgICAgICAgY29tSC0+dmFyRGF0YU1hcHBlZCA9IDA7CiAgICB9CiAgICBy
ZXR1cm4gKGVycik7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCoKU2RibUdldEFkZHJPZlZhckRhdGEo
U2RibUhhbmRsZUNvbW1vbiogY29tSCwgQWRhbVBvcyBwb3MpCnsKICAgIHZvaWQqIHB0ciA9ICgo
dm9pZCAqKTApOwogICAgaW50IGVycjsKICAgIGVyciA9IEFkYW1HZXRJdHNBZGRyKGNvbUgtPnZh
ckRhdGFEZXNjLCBwb3MsICZwdHIpOwogICAgaWYoKChlcnIpID49IDApKSB7CiAgICAgICAgcmV0
dXJuIHB0cjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQp9
CgpleHRlcm4gaW5saW5lIEFkYW1Qb3MKU2RibU5ld1ZhckRhdGEoU2RibUhhbmRsZUNvbW1vbiog
Y29tSCwgU3ogZGF0YVNpemUpCnsKICAgIEFkYW1Qb3MgcG9zOwogICAgOwoKICAgIGlmKGRhdGFT
aXplID4gMTY3NzcyMTUpIHsKICAgICAgICByZXR1cm4gKCgtKDQxNDYpKSk7CiAgICB9CgogICAg
U2RibVVubWFwVmFyRGF0YShjb21IKTsKICAgIHBvcyA9IEFkYW1BbGxvY0l0KGNvbUgtPnZhckRh
dGFEZXNjLCBkYXRhU2l6ZSk7CiAgICByZXR1cm4gKHBvcyk7Cn0KCmV4dGVybiBpbmxpbmUgaW50
ClNkYm1GcmVlVmFyRGF0YShTZGJtSGFuZGxlQ29tbW9uKiBjb21ILCBBZGFtUG9zIHBvcykKewog
ICAgaW50IHJldFZhbCA9IDA7CiAgICA7CgogICAgU2RibVVubWFwVmFyRGF0YShjb21IKTsKICAg
IHJldFZhbCA9IEFkYW1GcmVlSXQoY29tSC0+dmFyRGF0YURlc2MsIHBvcyk7CiAgICByZXR1cm4g
KHJldFZhbCk7Cn0KCmV4dGVybiBpbmxpbmUgQWRhbVBvcwpTZGJtUHV0TmV3VmFyRGF0YShTZGJt
SGFuZGxlQ29tbW9uKiBjb21ILCBTeiBkYXRhU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKewogICAg
dm9pZCogcHRyID0gKCh2b2lkICopMCk7CiAgICBBZGFtUG9zIHBvczsKICAgIDsKCiAgICBpZihk
YXRhU2l6ZSA+IDApIHsKICAgICAgICBwb3MgPSBTZGJtTmV3VmFyRGF0YShjb21ILCBkYXRhU2l6
ZSk7CiAgICAgICAgaWYoKChwb3MpID49IDApKSB7CiAgICAgICAgICAgIGludCBlcnIgPSBTZGJt
TWFwVmFyRGF0YShjb21IKTsKICAgICAgICAgICAgaWYoKChlcnIpID49IDApKSB7CiAgICAgICAg
ICAgICAgICBlcnIgPSBBZGFtR2V0SXRzQWRkcihjb21ILT52YXJEYXRhRGVzYywgcG9zLCAmcHRy
KTsKICAgICAgICAgICAgICAgIGlmKCgoZXJyKSA+PSAwKSkgewogICAgICAgICAgICAgICAgICAg
IG1lbWNweShwdHIsIGRhdGEsIGRhdGFTaXplKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgICBpZigoKGVycikgPCAwKSkgewogICAgICAgICAgICAgICAgQWRhbUZy
ZWVJdChjb21ILT52YXJEYXRhRGVzYywgcG9zKTsKICAgICAgICAgICAgICAgIHBvcyA9IGVycjsK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgcG9zID0gMDsKICAg
IH0KICAgIHJldHVybiAocG9zKTsKfQoKZXh0ZXJuIGlubGluZSBBZGFtUG9zClNkYm1QdXROZXdT
dHJpbmcoU2RibUhhbmRsZUNvbW1vbiogY29tSCwgY29uc3QgQ2hyKiBzdHIpCnsKICAgIHZvaWQq
IHB0ciA9ICgodm9pZCAqKTApOwogICAgU3ogbDsKICAgIEFkYW1Qb3MgcG9zOwogICAgOwoKICAg
IGlmKHN0cikgewogICAgICAgIGwgPSBzdHJsZW4oc3RyKSArIDE7CiAgICAgICAgcG9zID0gU2Ri
bU5ld1ZhckRhdGEoY29tSCwgbCk7CiAgICAgICAgaWYoKChwb3MpID49IDApKSB7CiAgICAgICAg
ICAgIGludCBlcnIgPSBTZGJtTWFwVmFyRGF0YShjb21IKTsKICAgICAgICAgICAgaWYoKChlcnIp
ID49IDApKSB7CiAgICAgICAgICAgICAgICBlcnIgPSBBZGFtR2V0SXRzQWRkcihjb21ILT52YXJE
YXRhRGVzYywgcG9zLCAmcHRyKTsKICAgICAgICAgICAgICAgIGlmKCgoZXJyKSA+PSAwKSkgewog
ICAgICAgICAgICAgICAgICAgIG1lbWNweShwdHIsIHN0ciwgbCk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoKChlcnIpIDwgMCkpIHsKICAgICAgICAgICAg
ICAgIEFkYW1GcmVlSXQoY29tSC0+dmFyRGF0YURlc2MsIHBvcyk7CiAgICAgICAgICAgICAgICBw
b3MgPSBlcnI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHBv
cyA9IDA7CiAgICB9CiAgICByZXR1cm4gKHBvcyk7Cn0KCgojIDM1ICIuLi8uLi9zcmMvc2RibS52
MC9zZGJtZmxkdS5jIiAyCiMgMSAiLi4vLi4vc3JjL3NkYm0udjAvc2RibXBsbi5oIiAxCiMgMTQg
Ii4uLy4uL3NyYy9zZGJtLnYwL3NkYm1wbG4uaCIKI2RlZmluZSBfQVhJU19TREJNUExOX0hfIAoj
IDI2ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtcGxuLmgiCgoKZXh0ZXJuIGlubGluZSBpbnQKU2Ri
bU1hcERiUGxhaW4oU2RibURiSGFuZGxlKiBkYkgsIEFkYW1TdWJmaWxlSWQgc3ViZmlsZUlkKQp7
CiAgICBpbnQgZXJyID0gMDsKCiAgICBzd2l0Y2goc3ViZmlsZUlkKSB7CiAgICBjYXNlIDE6IGlm
KGRiSC0+ZGJNYWluKSByZXR1cm4gMDsgYnJlYWs7CiAgICBjYXNlIDI6IGlmKGRiSC0+ZW51bVNl
dHMpIHJldHVybiAwOyBicmVhazsKICAgIGNhc2UgMzogaWYoZGJILT5lbnVtVW5pdHMpIHJldHVy
biAwOyBicmVhazsKICAgIGNhc2UgNDogaWYoZGJILT5kYk1haW5JZHgpIHJldHVybiAwOyBicmVh
azsKICAgIH0KCiAgICBlcnIgPSBBZGFtTWFwU3ViZmlsZShkYkgtPnN1YmZpbGVzW3N1YmZpbGVJ
ZF0sCiAgICAgICAgICAgICAgICAgICAgICAgICBkYkgtPmNvbW1vbi53cml0YWJsZSA/IDEgOiAw
KTsKICAgIGlmKCgoZXJyKSA+PSAwKSkgewogICAgICAgIHZvaWQqIHB0ciA9ICgodm9pZCAqKTAp
OwogICAgICAgIGVyciA9IEFkYW1HZXRBZGRyKGRiSC0+c3ViZmlsZXNbc3ViZmlsZUlkXSwgJnB0
cik7CiAgICAgICAgc3dpdGNoKHN1YmZpbGVJZCkgewogICAgICAgIGNhc2UgMTogZGJILT5kYk1h
aW4gPSBwdHI7IGJyZWFrOwogICAgICAgIGNhc2UgMjogZGJILT5lbnVtU2V0cyA9IHB0cjsgYnJl
YWs7CiAgICAgICAgY2FzZSAzOiBkYkgtPmVudW1Vbml0cyA9IHB0cjsgYnJlYWs7CiAgICAgICAg
Y2FzZSA0OiBkYkgtPmRiTWFpbklkeCA9IHB0cjsgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAg
IHJldHVybiBlcnI7Cn0KCmV4dGVybiBpbmxpbmUgaW50ClNkYm1Vbm1hcERiUGxhaW4oU2RibURi
SGFuZGxlKiBkYkgsIEFkYW1TdWJmaWxlSWQgc3ViZmlsZUlkKQp7CiAgICBpbnQgZXJyID0gMDsK
CiAgICBzd2l0Y2goc3ViZmlsZUlkKSB7CiAgICBjYXNlIDE6IGlmKCEgZGJILT5kYk1haW4pIHJl
dHVybiAwOyBicmVhazsKICAgIGNhc2UgMjogaWYoISBkYkgtPmVudW1TZXRzKSByZXR1cm4gMDsg
YnJlYWs7CiAgICBjYXNlIDM6IGlmKCEgZGJILT5lbnVtVW5pdHMpIHJldHVybiAwOyBicmVhazsK
ICAgIGNhc2UgNDogaWYoISBkYkgtPmRiTWFpbklkeCkgcmV0dXJuIDA7IGJyZWFrOwogICAgfQoK
ICAgIGVyciA9IEFkYW1Vbm1hcFN1YmZpbGUoZGJILT5zdWJmaWxlc1tzdWJmaWxlSWRdKTsKICAg
IGlmKCgoZXJyKSA+PSAwKSkgewogICAgICAgIHN3aXRjaChzdWJmaWxlSWQpIHsKICAgICAgICBj
YXNlIDE6IGRiSC0+ZGJNYWluID0gKCh2b2lkICopMCk7IGJyZWFrOwogICAgICAgIGNhc2UgMjog
ZGJILT5lbnVtU2V0cyA9ICgodm9pZCAqKTApOyBicmVhazsKICAgICAgICBjYXNlIDM6IGRiSC0+
ZW51bVVuaXRzID0gKCh2b2lkICopMCk7IGJyZWFrOwogICAgICAgIGNhc2UgNDogZGJILT5kYk1h
aW5JZHggPSAoKHZvaWQgKikwKTsgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBl
cnI7Cn0KCmV4dGVybiBpbmxpbmUgaW50ClNkYm1SZXNpemVEYlBsYWluKFNkYm1EYkhhbmRsZSog
ZGJILCBBZGFtU3ViZmlsZUlkIHN1YmZpbGVJZCwgU3ogbmV3U3opCnsKICAgIGludCBlcnIgPSAw
OwoKICAgIGVyciA9IFNkYm1Vbm1hcERiUGxhaW4oZGJILCBzdWJmaWxlSWQpOwogICAgaWYoKChl
cnIpID49IDApKSB7CiAgICAgICAgZXJyID0gQWRhbVJlc2l6ZVN1YmZpbGUoZGJILT5zdWJmaWxl
c1tzdWJmaWxlSWRdLCBuZXdTeik7CiAgICB9CiAgICByZXR1cm4gZXJyOwp9CgpleHRlcm4gaW5s
aW5lIGludApTZGJtU2hpZnREYlBsYWluU2l6ZShTZGJtRGJIYW5kbGUqIGRiSCwgQWRhbVN1YmZp
bGVJZCBzdWJmaWxlSWQsIFN6IGRpZmYpCnsKICAgIGludCByZXRWYWwgPSAwOwogICAgQWRhbVN1
YmZpbGVQYXJhbSogcGFyYW07CiAgICBTeiBuZXdTejsKCiAgICBwYXJhbSA9IGRiSC0+cGFyYW1z
ICsgc3ViZmlsZUlkOwogICAgcmV0VmFsID0gQWRhbUdldFN1YmZpbGVQYXJhbShkYkgtPnN1YmZp
bGVzW3N1YmZpbGVJZF0sIHBhcmFtKTsKICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAg
IG5ld1N6ID0gcGFyYW0tPmVhY2gucGxhaW4uc3ViZmlsZVN6OwogICAgICAgIG5ld1N6ICs9IGRp
ZmY7CiAgICAgICAgcmV0VmFsID0gU2RibVVubWFwRGJQbGFpbihkYkgsIHN1YmZpbGVJZCk7CiAg
ICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgIHJldFZhbCA9IEFkYW1SZXNp
emVTdWJmaWxlKGRiSC0+c3ViZmlsZXNbc3ViZmlsZUlkXSwgbmV3U3opOwogICAgICAgIH0KICAg
IH0KICAgIHJldHVybiAocmV0VmFsKTsKfQoKZXh0ZXJuIGlubGluZSBpbnQKU2RibU1hcFRibFBs
YWluKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgczMyIHN1YmZpbGVJZHgpCnsKICAgIGludCBlcnIg
PSAwOwoKICAgIHN3aXRjaChzdWJmaWxlSWR4KSB7CiAgICBjYXNlIDE6IGlmKHRibEgtPnRhYmxl
TWFpbikgcmV0dXJuIDA7IGJyZWFrOwogICAgY2FzZSAyOiBpZih0YmxILT5yZWNzKSByZXR1cm4g
MDsgYnJlYWs7CiAgICBjYXNlIDM6IGlmKHRibEgtPmZsZHMpIHJldHVybiAwOyBicmVhazsKICAg
IGNhc2UgNTogaWYodGJsSC0+aW5kZXhBcmVhKSByZXR1cm4gMDsgYnJlYWs7CiAgICBjYXNlIDY6
IGlmKHRibEgtPmxpbmtlZEZsZHMpIHJldHVybiAwOyBicmVhazsKICAgIH0KCiAgICBlcnIgPSBB
ZGFtTWFwU3ViZmlsZSh0YmxILT5zdWJmaWxlc1tzdWJmaWxlSWR4XSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRibEgtPmNvbW1vbi53cml0YWJsZSA/IDEgOiAwKTsKICAgIGlmKCgoZXJyKSA+
PSAwKSkgewogICAgICAgIHZvaWQqIHB0ciA9ICgodm9pZCAqKTApOwogICAgICAgIGVyciA9IEFk
YW1HZXRBZGRyKHRibEgtPnN1YmZpbGVzW3N1YmZpbGVJZHhdLCAmcHRyKTsKICAgICAgICBzd2l0
Y2goc3ViZmlsZUlkeCkgewogICAgICAgIGNhc2UgMTogdGJsSC0+dGFibGVNYWluID0gcHRyOyBi
cmVhazsKICAgICAgICBjYXNlIDI6IHRibEgtPnJlY3MgPSBwdHI7IGJyZWFrOwogICAgICAgIGNh
c2UgMzogdGJsSC0+ZmxkcyA9IHB0cjsgYnJlYWs7CiAgICAgICAgY2FzZSA1OiB0YmxILT5pbmRl
eEFyZWEgPSBwdHI7IGJyZWFrOwogICAgICAgIGNhc2UgNjogdGJsSC0+bGlua2VkRmxkcyA9IHB0
cjsgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBlcnI7Cn0KCmV4dGVybiBpbmxp
bmUgaW50ClNkYm1Vbm1hcFRibFBsYWluKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgQWRhbVN1YmZp
bGVJZCBzdWJmaWxlSWR4KQp7CiAgICBpbnQgZXJyID0gMDsKCiAgICBzd2l0Y2goc3ViZmlsZUlk
eCkgewogICAgY2FzZSAxOiBpZighIHRibEgtPnRhYmxlTWFpbikgcmV0dXJuIDA7IGJyZWFrOwog
ICAgY2FzZSAyOiBpZighIHRibEgtPnJlY3MpIHJldHVybiAwOyBicmVhazsKICAgIGNhc2UgMzog
aWYoISB0YmxILT5mbGRzKSByZXR1cm4gMDsgYnJlYWs7CiAgICBjYXNlIDU6IGlmKCEgdGJsSC0+
aW5kZXhBcmVhKSByZXR1cm4gMDsgYnJlYWs7CiAgICBjYXNlIDY6IGlmKCEgdGJsSC0+bGlua2Vk
RmxkcykgcmV0dXJuIDA7IGJyZWFrOwogICAgfQoKICAgIGVyciA9IEFkYW1Vbm1hcFN1YmZpbGUo
dGJsSC0+c3ViZmlsZXNbc3ViZmlsZUlkeF0pOwogICAgaWYoKChlcnIpID49IDApKSB7CiAgICAg
ICAgc3dpdGNoKHN1YmZpbGVJZHgpIHsKICAgICAgICBjYXNlIDE6IHRibEgtPnRhYmxlTWFpbiA9
ICgodm9pZCAqKTApOyBicmVhazsKICAgICAgICBjYXNlIDI6IHRibEgtPnJlY3MgPSAoKHZvaWQg
KikwKTsgYnJlYWs7CiAgICAgICAgY2FzZSAzOiB0YmxILT5mbGRzID0gKCh2b2lkICopMCk7IGJy
ZWFrOwogICAgICAgIGNhc2UgNTogdGJsSC0+aW5kZXhBcmVhID0gKCh2b2lkICopMCk7IGJyZWFr
OwogICAgICAgIGNhc2UgNjogdGJsSC0+bGlua2VkRmxkcyA9ICgodm9pZCAqKTApOyBicmVhazsK
ICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGVycjsKfQoKZXh0ZXJuIGlubGluZSBpbnQKU2Ri
bVJlc2l6ZVRibFBsYWluKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgczMyIHN1YmZpbGVJZHgsIFN6
IG5ld1N6KQp7CiAgICBpbnQgZXJyID0gMDsKCiAgICBlcnIgPSBTZGJtVW5tYXBUYmxQbGFpbih0
YmxILCBzdWJmaWxlSWR4KTsKICAgIGlmKCgoZXJyKSA+PSAwKSkgewogICAgICAgIGVyciA9IEFk
YW1SZXNpemVTdWJmaWxlKHRibEgtPnN1YmZpbGVzW3N1YmZpbGVJZHhdLCBuZXdTeik7CiAgICB9
CiAgICByZXR1cm4gZXJyOwp9CgpleHRlcm4gaW5saW5lIGludApTZGJtU2hpZnRUYmxQbGFpblNp
emUoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBzMzIgc3ViZmlsZUlkeCwgU3ogZGlmZikKewogICAg
aW50IHJldFZhbCA9IDA7CiAgICBBZGFtU3ViZmlsZVBhcmFtKiBwYXJhbTsKICAgIFN6IG5ld1N6
OwoKICAgIHBhcmFtID0gdGJsSC0+cGFyYW1zICsgc3ViZmlsZUlkeDsKICAgIHJldFZhbCA9IEFk
YW1HZXRTdWJmaWxlUGFyYW0odGJsSC0+c3ViZmlsZXNbc3ViZmlsZUlkeF0sIHBhcmFtKTsKICAg
IGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgIG5ld1N6ID0gcGFyYW0tPmVhY2gucGxhaW4u
c3ViZmlsZVN6OwogICAgICAgIG5ld1N6ICs9IGRpZmY7CiAgICAgICAgcmV0VmFsID0gU2RibVVu
bWFwVGJsUGxhaW4odGJsSCwgc3ViZmlsZUlkeCk7CiAgICAgICAgaWYoKChyZXRWYWwpID49IDAp
KSB7CiAgICAgICAgICAgIHJldFZhbCA9IEFkYW1SZXNpemVTdWJmaWxlKHRibEgtPnN1YmZpbGVz
W3N1YmZpbGVJZHhdLCBuZXdTeik7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwp
Owp9CgoKIyAzNiAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWZsZHUuYyIgMgojIDEgIi4uLy4uL3Ny
Yy9zZGJtLnYwL3NkYm1oZGx1LmgiIDEKIyAxNCAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWhkbHUu
aCIKI2RlZmluZSBfQVhJU19TREJNSERMVV9IXyAKIyAyOCAiLi4vLi4vc3JjL3NkYm0udjAvc2Ri
bWhkbHUuaCIKCgpleHRlcm4gaW50IFNkYm1BbGxvY0hhbmRsZShTZGJtSGFuZGxlKiogaFAsIEJv
b2wgbmVlZERlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRGJIYW5kbGUqIGRi
SCwgU2RibVRhYmxlSGFuZGxlKiBsaW5rVGJsSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENociogZGJOYW1lLCBTZGJtVGFibGVObyB0YmxObyk7CmV4dGVybiBpbnQgU2RibVJl
bGVhc2VIYW5kbGUoU2RibUhhbmRsZSogaCwgQm9vbCB1bmxvY2spOwpleHRlcm4gaW5saW5lIGlu
dApTZGJtUmVsZWFzZURiSGFuZGxlKFNkYm1EYkhhbmRsZSogZGJILCBCb29sIHVubG9jaykKewog
ICAgcmV0dXJuIFNkYm1SZWxlYXNlSGFuZGxlKChTZGJtSGFuZGxlKilkYkgsIHVubG9jayk7Cn0K
ZXh0ZXJuIGlubGluZSBpbnQKU2RibVJlbGVhc2VUYWJsZUhhbmRsZShTZGJtVGFibGVIYW5kbGUq
IHRibEgsIEJvb2wgdW5sb2NrKQp7CiAgICByZXR1cm4gU2RibVJlbGVhc2VIYW5kbGUoKFNkYm1I
YW5kbGUqKXRibEgsIHVubG9jayk7Cn0KCmV4dGVybiBpbmxpbmUgaW50ClNkYm1HZXRUYWJsZU5h
bWUoU2RibVRhYmxlSGFuZGxlKiB0YmxILCB2b2lkKiogbmFtZVB0cikKewogICAgaW50IHJldFZh
bDsKICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0YmxILCAxKTsKICAgIGlmKCgocmV0VmFs
KSA+PSAwKSkgewogICAgICAgIHJldFZhbCA9IFNkYm1NYXBWYXJEYXRhKCYodGJsSC0+ZGJILT5j
b21tb24pKTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgdm9pZCog
cCA9IFNkYm1HZXRBZGRyT2ZWYXJEYXRhKCYodGJsSC0+ZGJILT5jb21tb24pLCB0YmxILT50YWJs
ZU1haW4tPnRhYmxlTmFtZSk7CiAgICAgICAgICAgIGlmKG5hbWVQdHIpCiAgICAgICAgICAgICAg
ICAqbmFtZVB0ciA9IHA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJldFZhbDsKfQoKZXh0
ZXJuIGludCBTZGJtR2V0SGFuZGxlKFNkYm1EZXNjIGRlc2MsIFNkYm1IYW5kbGUqKiBoUCwgQm9v
bCBmb3JDbG9zZSk7CgpleHRlcm4gaW50IFNkYm1HZXRXb3JrKFNkYm1EYkhhbmRsZSogZGJILCBT
eiBhbGxvY1N6LCB2b2lkKiogcHApOwoKZXh0ZXJuIGludCBTZGJtT3BlbkRiRmlsZShTZGJtRGJI
YW5kbGUqIGRiSCwgY29uc3QgQ2hyKiBkYlBhdGhOYW1lKTsKZXh0ZXJuIGludCBTZGJtQ3JlYXRl
RGJGaWxlKFNkYm1EYkhhbmRsZSogZGJILCBjb25zdCBDaHIqIGRiUGF0aE5hbWUpOwoKZXh0ZXJu
IGludCBTZGJtT3BlblRhYmxlSW50ZXJuYWwoU2RibVRhYmxlSGFuZGxlKiB0YmxIKTsKZXh0ZXJu
IGludCBTZGJtQ3JlYXRlVGFibGUoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtVGFibGVObyB0
YmxObywgY29uc3QgQ2hyKiB0YmxOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVt
IG51bUZsZHMsIFNkYm1GbGREZWYqIGZsZHMpOwpleHRlcm4gU2RibVRhYmxlTm8gU2RibVNlYXJj
aFRhYmxlQnlOYW1lKFNkYm1EYkhhbmRsZSogZGJILCBjb25zdCBDaHIqIG5hbWUpOwpleHRlcm4g
aW50IFNkYm1EdW1wVGFibGVOYW1lTm9kZShTZGJtRGJIYW5kbGUqIGRiSCwgQXRyZWVJZHggbmFt
ZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHJlZUlkeCBwbnRyc1s1
XSwgQXJlYTY0KiBkYXRhUCk7CmV4dGVybiBpbnQgU2RibU9wZW5UcmVlRm9yVGFibGVOYW1lKFNk
Ym1EYkhhbmRsZSogZGJILCBBdHJlZVJlcSogcmVxKTsKCmV4dGVybiBpbnQgU2RibU9wZW5UYWJs
ZUJ5QW5vdGhlclRhYmxlKFNkYm1UYWJsZUhhbmRsZSogb3BlbmVkVGJsSCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1UYWJsZU5vIHRibE5vLCBTZGJtVGFibGVI
YW5kbGUqKiBuZXdUYmxIUCk7CmV4dGVybiBpbnQgU2RibUxvY2tEYkgoU2RibURiSGFuZGxlKiBk
YkgpOwpleHRlcm4gaW50IFNkYm1VbmxvY2tEYkgoU2RibURiSGFuZGxlKiBkYkgpOwoKZXh0ZXJu
IGlubGluZSBpbnQKU2RibUxvY2tEYkJ5VGFibGUoU2RibVRhYmxlSGFuZGxlKiB0YmxIKQp7CiAg
ICByZXR1cm4gU2RibUxvY2tEYkgodGJsSC0+ZGJIKTsKfQoKZXh0ZXJuIGlubGluZSBpbnQKU2Ri
bVVubG9ja0RiQnlUYWJsZShTZGJtVGFibGVIYW5kbGUqIHRibEgpCnsKICAgIHJldHVybiBTZGJt
VW5sb2NrRGJIKHRibEgtPmRiSCk7Cn0KCgojZGVmaW5lIGNTZGJtRHVtcEludGVybmFsVmVyYm9z
ZU1vZGUgMHgxMDAwMDAwMAojZGVmaW5lIGNTZGJtRHVtcEludGVybmFsVGVzdE1vZGUgMHgwODAw
MDAwMAojZGVmaW5lIGNTZGJtRHVtcE5vUmVjSURNb2RlIDB4MDAwMDAwMDEKCgojIDM3ICIuLi8u
Li9zcmMvc2RibS52MC9zZGJtZmxkdS5jIiAyCiMgMSAiLi4vLi4vc3JjL3NkYm0udjAvc2RibWVu
dW0uaCIgMQojIDE0ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZW51bS5oIgojZGVmaW5lIF9BWElT
X1NEQk1FTlVNX0hfIAojIDI4ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZW51bS5oIgoKCgpleHRl
cm4gaW5saW5lIHMzMgpTZGJtRW51bUlkVG9FbnVtSWR4KFNkYm1EYkhhbmRsZSogZGJILCBzMzIg
ZW51bUlkKQp7CiAgICBpZigoMCA8IGVudW1JZCkgJiYgKGVudW1JZCA8PSBkYkgtPmVudW1TZXRB
dHRyLT5udW1FbnVtU2V0KSkgewogICAgICAgIHJldHVybiBlbnVtSWQgLSAxOwogICAgfSBlbHNl
IHsKICAgICAgICBMb2dQdXQoNCwgIiVzOiUkIiwgX19GVU5DVElPTl9fLCAiSWxsZWdhbCBFbnVt
U2V0IElEWyVkOjB4JXhdIiwgZW51bUlkLCBlbnVtSWQpOwogICAgICAgIHJldHVybiAoLSg0MTAw
KSk7CiAgICB9Cn0KCmV4dGVybiBpbmxpbmUgU2RibUVudW1TZXRFbnQqClNkYm1FbnVtSWRUb0Vu
dW1TZXRFbnQoU2RibURiSGFuZGxlKiBkYkgsIHMzMiBlbnVtSWQpCnsKICAgIHMzMiBpID0gU2Ri
bUVudW1JZFRvRW51bUlkeChkYkgsIGVudW1JZCk7CgogICAgaWYoKChpKSA+PSAwKSkgewogICAg
ICAgIHJldHVybiBkYkgtPmVudW1TZXRzICsgaTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwogICAgfQp9CgpleHRlcm4gaW5saW5lIFNkYm1FbnVtU2V0RW50KgpTZGJt
U2VhcmNoRW51bUJ5TmFtZShTZGJtRGJIYW5kbGUqIGRiSCwgY29uc3QgQ2hyKiBuYW1lVGd0KQp7
CiAgICBpbnQgaSwgZXJyPTA7CiAgICBpbnQgbnVtRW51bSA9IGRiSC0+ZW51bVNldEF0dHItPm51
bUVudW1TZXQ7CgogICAgaWYoKChlcnIgPSBTZGJtTWFwVmFyRGF0YSgmKGRiSC0+Y29tbW9uKSkp
ID49IDApKSB7CiAgICAgICAgZm9yKGkgPSAwOyBpIDwgbnVtRW51bSA7IGkrKykgewogICAgICAg
ICAgICBBZGFtUG9zIHggPSBkYkgtPmVudW1TZXRzW2ldLmVudW1TZXROYW1lOwogICAgICAgICAg
ICBpZih4ICE9IDApIHsKICAgICAgICAgICAgICAgIGNvbnN0IENociogbmFtZSA9IFNkYm1HZXRB
ZGRyT2ZWYXJEYXRhKCYoZGJILT5jb21tb24pLCB4KTsKICAgICAgICAgICAgICAgIGlmKG5hbWUp
IHsKICAgICAgICAgICAgICAgICAgICBpZihTZGJtU3RyY21wKG5hbWUsIG5hbWVUZ3QpID09IDAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICYoZGJILT5lbnVtU2V0c1tpXSk7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQogICAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpleHRlcm4gaW50IFNkYm1DcmVh
dGVFbnVtU2V0SW50ZXJuYWwoU2RibURiSGFuZGxlKiBkYkgsIFNkYm1FbnVtU2V0SWQgaWQsIGNv
bnN0IENociogZW51bVNldE5hbWUpOwoKZXh0ZXJuIGlubGluZSBTZGJtRW51bVVuaXQqClNkYm1F
bnVtVW5pdElkVG9FbnVtVW5pdChTZGJtRGJIYW5kbGUqIGRiSCwgU2RibUVudW1Vbml0SWQgdW5p
dElkKQp7CiAgICBTZGJtRW51bVVuaXQqIGV1ID0gKCh2b2lkICopMCk7CiAgICBpbnQgcmV0VmFs
OwoKICAgIGlmKHVuaXRJZCA+IDApIHsKICAgICAgICByZXRWYWwgPSBTZGJtTWFwRGJQbGFpbihk
YkgsIDMpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBldSA9IGRi
SC0+ZW51bVVuaXRzICsgKHVuaXRJZCAtIDEpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBl
dTsKfQoKZXh0ZXJuIGludCBTZGJtR2V0RW51bVVuaXROYW1lKFNkYm1EYkhhbmRsZSogZGJILCBT
ZGJtRW51bVNldElkIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1FbnVt
VW5pdElkIGVudW1Vbml0SWQsIENocioqIGVudW1Vbml0TmFtZVApOwpleHRlcm4gaW50IFNkYm1H
ZXRFbnVtVW5pdFZhbChTZGJtRGJIYW5kbGUqIGRiSCwgU2RibUVudW1TZXRJZCBpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1FbnVtVW5pdElkIGVudW1Vbml0SWQsIEFyZWE2
NCogdmFsUCk7CgojZGVmaW5lIFNkYm1FbnVtVW5pdHNUb3BBZGRyKGRiSCx0Z3QpIFNkYm1FbnVt
VW5pdHNPcHJUb3BBZGRyKChkYkgpLT5lbnVtVW5pdHMsIDEsIHRndCkKI2RlZmluZSBTZGJtRW51
bVVuaXRzSW5kZXgoZGJILHRndFApIFNkYm1FbnVtVW5pdHNPcHJJbmRleCgoZGJIKS0+ZW51bVVu
aXRzLCAxLCB0Z3RQKQojZGVmaW5lIFNkYm1FbnVtVW5pdHNJbml0KGRiSCx0Z3QpIFNkYm1FbnVt
VW5pdHNPcHJJbml0KChkYkgpLT5lbnVtVW5pdHMsIDEsIHRndCkKCmV4dGVybiBpbmxpbmUgczMy
ClNkYm1FbnVtVW5pdHNOZXh0RnJvbUZyZWVMaXN0KFNkYm1EYkhhbmRsZSogZGJILCBzMzIgdGd0
SWR4KQp7CiAgICBzMzIgcG50SWR4OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50SWR4ID0g
U2RibUVudW1Vbml0c09wck5leHQoZGJILT5lbnVtVW5pdHMsIDEsIHRndElkeCk7CiAgICB9IGVs
c2UgewogICAgICAgIHBudElkeCA9IGRiSC0+ZW51bVVuaXRBdHRyLT5lbnVtRnJlZUxpc3Q7CiAg
ICB9CiAgICByZXR1cm4gcG50SWR4Owp9CgpleHRlcm4gaW5saW5lIHMzMgpTZGJtRW51bVVuaXRz
UHJldkZyb21GcmVlTGlzdChTZGJtRGJIYW5kbGUqIGRiSCwgczMyIHRndElkeCkKewogICAgczMy
IHBudElkeDsKICAgIGlmKHRndElkeCkgewogICAgICAgIHBudElkeCA9IFNkYm1FbnVtVW5pdHNP
cHJQcmV2KGRiSC0+ZW51bVVuaXRzLCAxLCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAgICBw
bnRJZHggPSBkYkgtPmVudW1Vbml0QXR0ci0+ZW51bUZyZWVMaXN0OwogICAgfQogICAgcmV0dXJu
IHBudElkeDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1FbnVtVW5pdHNJbnNlcnRUb0ZyZWVM
aXN0KFNkYm1EYkhhbmRsZSogZGJILCBzMzIgdGd0SWR4KQp7CiAgICBzMzIgcG50SWR4ID0gZGJI
LT5lbnVtVW5pdEF0dHItPmVudW1GcmVlTGlzdDsKICAgIGlmKHBudElkeCkgewogICAgICAgIFNk
Ym1FbnVtVW5pdCogZXUgPSBTZGJtRW51bVVuaXRJZFRvRW51bVVuaXQoZGJILCBwbnRJZHgpOwog
ICAgICAgIFNkYm1FbnVtVW5pdHNPcHJJbnNlcnQoZXUsIHBudElkeCwgdGd0SWR4KTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgZGJILT5lbnVtVW5pdEF0dHItPmVudW1GcmVlTGlzdCA9IHRndElkeDsK
ICAgIH0KfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1FbnVtVW5pdHNBcHBlbmRUb0ZyZWVMaXN0
KFNkYm1EYkhhbmRsZSogZGJILCBzMzIgdGd0SWR4KQp7CiAgICBzMzIgcG50SWR4ID0gZGJILT5l
bnVtVW5pdEF0dHItPmVudW1GcmVlTGlzdDsKICAgIGlmKHBudElkeCkgewogICAgICAgIFNkYm1F
bnVtVW5pdCogZXUgPSBTZGJtRW51bVVuaXRJZFRvRW51bVVuaXQoZGJILCBwbnRJZHgpOwogICAg
ICAgIFNkYm1FbnVtVW5pdHNPcHJBcHBlbmQoZXUsIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxz
ZSB7CiAgICAgICAgZGJILT5lbnVtVW5pdEF0dHItPmVudW1GcmVlTGlzdCA9IHRndElkeDsKICAg
IH0KfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1FbnVtVW5pdHNEZWxldGVGcm9tRnJlZUxpc3Qo
U2RibURiSGFuZGxlKiBkYkgsIHMzMiB0Z3RJZHgpCnsKICAgIHMzMiBwbnRJZHggPSBkYkgtPmVu
dW1Vbml0QXR0ci0+ZW51bUZyZWVMaXN0OwogICAgaWYocG50SWR4KSB7CiAgICAgICAgU2RibUVu
dW1Vbml0KiBldSA9IFNkYm1FbnVtVW5pdElkVG9FbnVtVW5pdChkYkgsIHBudElkeCk7CiAgICAg
ICAgczMyIGRlbE5leHQ7CiAgICAgICAgZGVsTmV4dCA9IFNkYm1FbnVtVW5pdHNPcHJEZWxldGUo
ZXUsIHBudElkeCwgdGd0SWR4KTsKICAgICAgICBpZih0Z3RJZHggPT0gZGVsTmV4dCkKICAgICAg
ICAgICAgZGVsTmV4dCA9IDA7CiAgICAgICAgaWYodGd0SWR4ID09IHBudElkeCkKICAgICAgICAg
ICAgZGJILT5lbnVtVW5pdEF0dHItPmVudW1GcmVlTGlzdCA9IGRlbE5leHQ7CiAgICB9Cn0KCmV4
dGVybiBpbmxpbmUgczMyClNkYm1FbnVtVW5pdHNOZXh0RnJvbUVudW1TZXQoU2RibURiSGFuZGxl
KiBkYkgsIFNkYm1FbnVtU2V0SWQgZW51bVNldCwgczMyIHRndElkeCkKewogICAgczMyIHBudElk
eDsKICAgIGlmKHRndElkeCkgewogICAgICAgIHBudElkeCA9IFNkYm1FbnVtVW5pdHNPcHJOZXh0
KGRiSC0+ZW51bVVuaXRzLCAxLCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAgICBTZGJtRW51
bVNldEVudCogZXNlID0gU2RibUVudW1JZFRvRW51bVNldEVudChkYkgsIGVudW1TZXQpOwogICAg
ICAgIHBudElkeCA9IGVzZS0+ZW51bVVuaXRzOwogICAgfQogICAgcmV0dXJuIHBudElkeDsKfQoK
ZXh0ZXJuIGlubGluZSBzMzIKU2RibUVudW1Vbml0c1ByZXZGcm9tRW51bVNldChTZGJtRGJIYW5k
bGUqIGRiSCwgU2RibUVudW1TZXRJZCBlbnVtU2V0LCBzMzIgdGd0SWR4KQp7CiAgICBzMzIgcG50
SWR4OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50SWR4ID0gU2RibUVudW1Vbml0c09wclBy
ZXYoZGJILT5lbnVtVW5pdHMsIDEsIHRndElkeCk7CiAgICB9IGVsc2UgewogICAgICAgIFNkYm1F
bnVtU2V0RW50KiBlc2UgPSBTZGJtRW51bUlkVG9FbnVtU2V0RW50KGRiSCwgZW51bVNldCk7CiAg
ICAgICAgcG50SWR4ID0gZXNlLT5lbnVtVW5pdHM7CiAgICB9CiAgICByZXR1cm4gcG50SWR4Owp9
CgpleHRlcm4gaW5saW5lIHZvaWQKU2RibUVudW1Vbml0c0luc2VydFRvRW51bVNldChTZGJtRGJI
YW5kbGUqIGRiSCwgU2RibUVudW1TZXRJZCBlbnVtU2V0LCBzMzIgdGd0SWR4KQp7CiAgICBTZGJt
RW51bVNldEVudCogZXNlID0gU2RibUVudW1JZFRvRW51bVNldEVudChkYkgsIGVudW1TZXQpOwog
ICAgaWYoZXNlKSB7CiAgICAgICAgczMyIHBudElkeCA9IGVzZS0+ZW51bVVuaXRzOwogICAgICAg
IGlmKHBudElkeCkgewogICAgICAgICAgICBTZGJtRW51bVVuaXQqIGV1ID0gU2RibUVudW1Vbml0
SWRUb0VudW1Vbml0KGRiSCwgcG50SWR4KTsKICAgICAgICAgICAgU2RibUVudW1Vbml0c09wcklu
c2VydChldSwgcG50SWR4LCB0Z3RJZHgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVz
ZS0+ZW51bVVuaXRzID0gdGd0SWR4OwogICAgICAgIH0KICAgIH0KfQoKZXh0ZXJuIGlubGluZSB2
b2lkClNkYm1FbnVtVW5pdHNBcHBlbmRUb0VudW1TZXQoU2RibURiSGFuZGxlKiBkYkgsIFNkYm1F
bnVtU2V0SWQgZW51bVNldCwgczMyIHRndElkeCkKewogICAgU2RibUVudW1TZXRFbnQqIGVzZSA9
IFNkYm1FbnVtSWRUb0VudW1TZXRFbnQoZGJILCBlbnVtU2V0KTsKICAgIGlmKGVzZSkgewogICAg
ICAgIHMzMiBwbnRJZHggPSBlc2UtPmVudW1Vbml0czsKICAgICAgICBpZihwbnRJZHgpIHsKICAg
ICAgICAgICAgU2RibUVudW1Vbml0KiBldSA9IFNkYm1FbnVtVW5pdElkVG9FbnVtVW5pdChkYkgs
IHBudElkeCk7CiAgICAgICAgICAgIFNkYm1FbnVtVW5pdHNPcHJBcHBlbmQoZXUsIHBudElkeCwg
dGd0SWR4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlc2UtPmVudW1Vbml0cyA9IHRn
dElkeDsKICAgICAgICB9CiAgICB9Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTZGJtRW51bVVuaXRz
RGVsZXRlRnJvbUVudW1TZXQoU2RibURiSGFuZGxlKiBkYkgsIFNkYm1FbnVtU2V0SWQgZW51bVNl
dCwgczMyIHRndElkeCkKewogICAgU2RibUVudW1TZXRFbnQqIGVzZSA9IFNkYm1FbnVtSWRUb0Vu
dW1TZXRFbnQoZGJILCBlbnVtU2V0KTsKICAgIGlmKGVzZSkgewogICAgICAgIHMzMiBwbnRJZHgg
PSBlc2UtPmVudW1Vbml0czsKICAgICAgICBpZihwbnRJZHgpIHsKICAgICAgICAgICAgU2RibUVu
dW1Vbml0KiBldSA9IFNkYm1FbnVtVW5pdElkVG9FbnVtVW5pdChkYkgsIHBudElkeCk7CiAgICAg
ICAgICAgIHMzMiBkZWxOZXh0OwogICAgICAgICAgICBwbnRJZHggPSBTZGJtRW51bVVuaXRzT3By
RGVsZXRlKGV1LCBwbnRJZHgsIHRndElkeCk7CiAgICAgICAgICAgIGlmKHRndElkeCA9PSBkZWxO
ZXh0KQogICAgICAgICAgICAgICAgZGVsTmV4dCA9IDA7CiAgICAgICAgICAgIGlmKHRndElkeCA9
PSBwbnRJZHgpCiAgICAgICAgICAgICAgICBlc2UtPmVudW1Vbml0cyA9IGRlbE5leHQ7CiAgICAg
ICAgfQogICAgfQp9CgpleHRlcm4gU2RibUVudW1Vbml0SWQgU2RibVNlYXJjaEVudW1Vbml0QnlO
YW1lKFNkYm1EYkhhbmRsZSogZGJILCBTZGJtRW51bVNldElkIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hyKiBuYW1lKTsKZXh0ZXJu
IFNkYm1FbnVtVW5pdElkIFNkYm1TZWFyY2hFbnVtVW5pdEJ5VmFsKFNkYm1EYkhhbmRsZSogZGJI
LCBTZGJtRW51bVNldElkIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBcmVhNjQgdmFsKTsKCmV4dGVybiBpbnQgU2RibUFkZEVudW1Vbml0SW50ZXJu
YWwoU2RibURiSGFuZGxlKiBkYkgsIFNkYm1FbnVtU2V0SWQgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ2hyKiBlbnVtVW5pdE5hbWUsIEFyZWE2NCBlbnVtVW5p
dFZhbCk7CmV4dGVybiBpbnQgU2RibU9wZW5UcmVlRm9yRW51bVVuaXRWYWwoU2RibURiSGFuZGxl
KiBkYkgsIFNkYm1FbnVtU2V0RW50KiBlc2UsIEF0cmVlUmVxKiByZXEpOwpleHRlcm4gaW50IFNk
Ym1PcGVuVHJlZUZvckVudW1Vbml0TmFtZShTZGJtRGJIYW5kbGUqIGRiSCwgU2RibUVudW1TZXRF
bnQqIGVzZSwgQXRyZWVSZXEqIHJlcSk7CgoKZXh0ZXJuIGludCBTZGJtRW51bVVuaXREdW1wQXRy
ZWVOb2RlKFNkYm1EYkhhbmRsZSogZGJILCBTZGJtRW51bVNldEVudCogZXNlLCBTZGJtRW51bVVu
aXQqIGV1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0cmVlSWR4IHBu
dHJzVmFsWzVdLCBBcmVhNjQqIGRhdGFWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQXRyZWVJZHggcG50cnNOYW1lWzVdLCBBcmVhNjQqIGRhdGFOYW1lKTsKCgojIDM4
ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5jIiAyCiMgMSAiLi4vLi4vc3JjL3NkYm0udjAv
c2RibWZsZHUuaCIgMQojIDE0ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5oIgojZGVmaW5l
IF9BWElTX1NEQk1GTERVX0hfIAojIDI4ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtZmxkdS5oIgoK
CmV4dGVybiBpbmxpbmUgczMyClNkYm1GbGROb1RvRmxkSWR4KFNkYm1UYWJsZUhhbmRsZSogdGJs
SCwgU2RibUZsZE5vIGZsZE5vKQp7CiAgICBpZigoMCA8IGZsZE5vKSAmJiAoZmxkTm8gPD0gdGJs
SC0+dGFibGVNYWluLT5udW1GbGRzKSkgewogICAgICAgIHJldHVybiBmbGRObyAtIDE7CiAgICB9
IGVsc2UgewogICAgICAgIExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNUSU9OX18sICJJbGxlZ2Fs
IEZpZWxkIE5vIFslZDoweCV4XSB0YWJsZVslZF0iLAogICAgICAgICAgICAgICBmbGRObywgZmxk
Tm8sIHRibEgtPnRibE5vKTsKICAgICAgICByZXR1cm4gKC0oNDEwMikpOwogICAgfQp9CgpleHRl
cm4gaW5saW5lIGludApTZGJtR2V0RmxkU3BlYyhTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1G
bGRObyBmbGRObywgU2RibUZsZFNwZWMqKiBmbGRTcGVjUCkKewogICAgaW50IHJldFZhbDsKICAg
IHMzMiBpZHggPSBTZGJtRmxkTm9Ub0ZsZElkeCh0YmxILCBmbGRObyk7CiAgICBTZGJtRmxkU3Bl
YyogZmxkU3BlYzsKICAgIGlmKGlkeCA+PSAwKSB7CiAgICAgICAgZmxkU3BlYyA9IHRibEgtPnRh
YmxlTWFpbi0+ZmxkU3BlY3MgKyBpZHg7CiAgICAgICAgcmV0VmFsID0gMDsKICAgIH0gZWxzZSB7
CiAgICAgICAgZmxkU3BlYyA9ICgodm9pZCAqKTApOwogICAgICAgIExvZ1B1dCg0LCAiJXM6JSQi
LCBfX0ZVTkNUSU9OX18sICJJbGxlZ2FsIEZpZWxkIE5vIFslZDoweCV4XSIsIGlkeCwgaWR4KTsK
ICAgICAgICByZXRWYWwgPSAoLSg0MTU3KSk7CiAgICB9CiAgICAqZmxkU3BlY1AgPSBmbGRTcGVj
OwogICAgcmV0dXJuIHJldFZhbDsKfQoKZXh0ZXJuIGludCBTZGJtR2V0RmxkU3BlY0J5TmFtZShT
ZGJtVGFibGVIYW5kbGUqIHRibEgsIGNvbnN0IENociogbmFtZSwgU2RibUZsZFNwZWMqKiBmbGRT
cGVjUCk7CmV4dGVybiBpbnQgU2RibVNldEZsZERlZihTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNk
Ym1GbGREZWYqIGZsZERlZik7CmV4dGVybiBpbnQgU2RibUR1bXBGbGROYW1lTm9kZShTZGJtVGFi
bGVIYW5kbGUqIHRibEgsIEF0cmVlSWR4IG5hbWVOb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEF0cmVlSWR4IHBudHJzWzVdLCBBcmVhNjQqIGRhdGFQKTsKCmV4dGVybiBpbmxp
bmUgaW50ClNkYm1HZXRGbGROYW1lKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZE5vIGZs
ZE5vLCB2b2lkKiogZmxkTmFtZVApCnsKICAgIGludCByZXRWYWw7CiAgICBTZGJtRmxkU3BlYyog
ZmxkU3BlYzsKCiAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyh0YmxILCBmbGRObywgJmZsZFNw
ZWMpOwogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgcmV0VmFsID0gU2RibU1hcFZh
ckRhdGEoJih0YmxILT5jb21tb24pKTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAg
ICAgICAgICAgdm9pZCogcCA9IFNkYm1HZXRBZGRyT2ZWYXJEYXRhKCYodGJsSC0+Y29tbW9uKSwg
ZmxkU3BlYy0+ZmxkTmFtZVB0cik7CiAgICAgICAgICAgIGlmKGZsZE5hbWVQKQogICAgICAgICAg
ICAgICAgKmZsZE5hbWVQID0gcDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmV0VmFsOwp9
CgpleHRlcm4gaW5saW5lIGludApTZGJtR2V0RmxkQm9keShTZGJtVGFibGVIYW5kbGUqIHRibEgs
IFNkYm1GbGREYXRhSWR4IGRhdGFJZHgsIFNkYm1GbGRCb2R5KiogZmxkUCkKewogICAgaW50IHJl
dFZhbCA9IDA7CgogICAgaWYoKDEgPD0gZGF0YUlkeCkgJiYgKGRhdGFJZHggPD0gdGJsSC0+Zmxk
c0NvbnRuckF0dHItPm51bUZsZHMpKSB7CiAgICAgICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWlu
KHRibEgsIDMpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBTZGJt
RmxkQm9keSogZmxkID0gdGJsSC0+ZmxkcyArICgoZGF0YUlkeCktMSk7CiAgICAgICAgICAgICpm
bGRQID0gZmxkOwogICAgICAgIH0KICAgIH0gZWxzZSB7CgoKCgogICAgICAgIHJldFZhbCA9ICgt
KDQxNTIpKTsKICAgIH0KICAgIHJldHVybiByZXRWYWw7Cn0KCmV4dGVybiBpbmxpbmUgaW50ClNk
Ym1HZXRGbGRDb250ZW50KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZERhdGFJZHggZGF0
YUlkeCwgU2RibUZsZEVudHkqIGNvbnRlbnRQKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIFNk
Ym1GbGRCb2R5KiBmbGQgPSAoKHZvaWQgKikwKTsKCiAgICByZXRWYWwgPSBTZGJtR2V0RmxkQm9k
eSh0YmxILCBkYXRhSWR4LCAmZmxkKTsKICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAg
ICpjb250ZW50UCA9IGZsZC0+Y29udGVudDsKICAgIH0KICAgIHJldHVybiByZXRWYWw7Cn0KCmV4
dGVybiBpbmxpbmUgaW50ClNkYm1HZXRMaW5rZWRGbGRJbmZvKFNkYm1UYWJsZUhhbmRsZSogdGJs
SCwgU2RibUZsZERhdGFJZHggZGF0YUlkeCwgU2RibUxpbmtlZEZsZEluZm8qKiBsZmlQKQp7CiAg
ICBpbnQgcmV0VmFsID0gMDsKCiAgICBpZigoMSA8PSBkYXRhSWR4KSAmJiAoZGF0YUlkeCA8PSB0
YmxILT5saW5rZWRGbGRzQXR0ci0+bnVtTGlua2VkKSkgewogICAgICAgIHJldFZhbCA9IFNkYm1N
YXBUYmxQbGFpbih0YmxILCA2KTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAg
ICAgICAgU2RibUxpbmtlZEZsZEluZm8qIGxmaSA9IHRibEgtPmxpbmtlZEZsZHMgKyAoKGRhdGFJ
ZHgpLTEpOwogICAgICAgICAgICAqbGZpUCA9IGxmaTsKICAgICAgICB9CiAgICB9IGVsc2Ugewog
ICAgICAgIExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNUSU9OX18sICJJbGxlZ2FsIGRhdGEgaW5k
ZXhbJWQ6MHgleF0iLCBkYXRhSWR4LCBkYXRhSWR4KTsKICAgICAgICByZXRWYWwgPSAoLSg0MTUy
KSk7CiAgICB9CiAgICByZXR1cm4gcmV0VmFsOwp9CgpleHRlcm4gaW50IFNkYm1GbGRJZHhJbml0
KFNkYm1UYWJsZUhhbmRsZSogdGJsSCk7CmV4dGVybiBpbnQgU2RibUZsZElkeEluaXQyKFNkYm1U
YWJsZUhhbmRsZSogdGJsSCk7CgojZGVmaW5lIFNkYm1GbGRzVG9wQWRkcih0YmxILHRndCkgU2Ri
bUZsZHNPcHJUb3BBZGRyKCh0YmxIKS0+ZmxkcywgY1NkYm1GbGREYXRhSWR4TWluLCB0Z3QpCiNk
ZWZpbmUgU2RibUZsZHNJbmRleCh0YmxILHRndFApIFNkYm1GbGRzT3BySW5kZXgoKHRibEgpLT5m
bGRzLCBjU2RibUZsZERhdGFJZHhNaW4sIHRndFApCiNkZWZpbmUgU2RibUZsZHNJbml0KHRibEgs
dGd0KSBTZGJtRmxkc09wckluaXQoKHRibEgpLT5mbGRzLCBjU2RibUZsZERhdGFJZHhNaW4sIHRn
dCkKCmV4dGVybiBpbmxpbmUgU2RibUZsZERhdGFJZHgKU2RibUZsZHNOZXh0RnJvbUZyZWVMaXN0
KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAgICBTZGJt
RmxkRGF0YUlkeCBwbnRJZHg7CiAgICBpZih0Z3RJZHgpIHsKICAgICAgICBwbnRJZHggPSBTZGJt
Rmxkc09wck5leHQoKHRibEgpLT5mbGRzLCAxLCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAg
ICBwbnRJZHggPSB0YmxILT5mbGRzQ29udG5yQXR0ci0+ZnJlZUxpc3Q7CiAgICB9CiAgICByZXR1
cm4gcG50SWR4Owp9CgpleHRlcm4gaW5saW5lIFNkYm1GbGREYXRhSWR4ClNkYm1GbGRzUHJldkZy
b21GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGREYXRhSWR4IHRndElkeCkK
ewogICAgU2RibUZsZERhdGFJZHggcG50SWR4OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50
SWR4ID0gU2RibUZsZHNPcHJQcmV2KCh0YmxIKS0+ZmxkcywgMSwgdGd0SWR4KTsKICAgIH0gZWxz
ZSB7CiAgICAgICAgcG50SWR4ID0gdGJsSC0+Zmxkc0NvbnRuckF0dHItPmZyZWVMaXN0OwogICAg
fQogICAgcmV0dXJuIHBudElkeDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1GbGRzSW5zZXJ0
VG9GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGREYXRhSWR4IHRndElkeCkK
ewogICAgU2RibUZsZERhdGFJZHggcG50SWR4ID0gdGJsSC0+Zmxkc0NvbnRuckF0dHItPmZyZWVM
aXN0OwogICAgaWYocG50SWR4KSB7CiAgICAgICAgU2RibUZsZEJvZHkqIGZsZCA9ICgodm9pZCAq
KTApOwogICAgICAgIFNkYm1HZXRGbGRCb2R5KHRibEgsIHBudElkeCwgJmZsZCk7CiAgICAgICAg
U2RibUZsZHNPcHJJbnNlcnQoZmxkLCBwbnRJZHgsIHRndElkeCk7CiAgICB9IGVsc2UgewogICAg
ICAgIHRibEgtPmZsZHNDb250bnJBdHRyLT5mcmVlTGlzdCA9IHBudElkeDsKICAgIH0KfQoKZXh0
ZXJuIGlubGluZSB2b2lkClNkYm1GbGRzQXBwZW5kVG9GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUq
IHRibEgsIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewogICAgU2RibUZsZERhdGFJZHggcG50SWR4
ID0gdGJsSC0+Zmxkc0NvbnRuckF0dHItPmZyZWVMaXN0OwogICAgaWYocG50SWR4KSB7CiAgICAg
ICAgU2RibUZsZEJvZHkqIGZsZCA9ICgodm9pZCAqKTApOwogICAgICAgIFNkYm1HZXRGbGRCb2R5
KHRibEgsIHBudElkeCwgJmZsZCk7CiAgICAgICAgU2RibUZsZHNPcHJBcHBlbmQoZmxkLCBwbnRJ
ZHgsIHRndElkeCk7CiAgICB9IGVsc2UgewogICAgICAgIHRibEgtPmZsZHNDb250bnJBdHRyLT5m
cmVlTGlzdCA9IHBudElkeDsKICAgIH0KfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1GbGRzRGVs
ZXRlRnJvbUZyZWVMaXN0KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZERhdGFJZHggdGd0
SWR4KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBwbnRJZHggPSB0YmxILT5mbGRzQ29udG5yQXR0ci0+
ZnJlZUxpc3Q7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJtRmxkQm9keSogZmxkID0gKCh2
b2lkICopMCk7CiAgICAgICAgU2RibUZsZERhdGFJZHggZGVsTmV4dDsKICAgICAgICBTZGJtR2V0
RmxkQm9keSh0YmxILCBwbnRJZHgsICZmbGQpOwogICAgICAgIGRlbE5leHQgPSBTZGJtRmxkc09w
ckRlbGV0ZShmbGQsIHBudElkeCwgdGd0SWR4KTsKICAgICAgICBpZih0Z3RJZHggPT0gZGVsTmV4
dCkKICAgICAgICAgICAgZGVsTmV4dCA9IDA7CiAgICAgICAgaWYodGd0SWR4ID09IHBudElkeCkK
ICAgICAgICAgICAgdGJsSC0+Zmxkc0NvbnRuckF0dHItPmZyZWVMaXN0ID0gZGVsTmV4dDsKICAg
IH0KfQoKZXh0ZXJuIGlubGluZSBTZGJtRmxkRGF0YUlkeApTZGJtRmxkc05leHRGcm9tUmVjKFNk
Ym1UYWJsZUhhbmRsZSogdGJsSCwKICAgICAgICAgICAgICAgICAgICBTZGJtUmVjRW50eSogcmVj
LCBTZGJtRmxkTm8gZmxkTm8sIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewogICAgU2RibUZsZERh
dGFJZHggcG50SWR4OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50SWR4ID0gU2RibUZsZHNP
cHJOZXh0KCh0YmxIKS0+ZmxkcywgMSwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcG50
SWR4ID0gcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLnZlY0lkeExpc3Q7CiAgICB9CiAgICByZXR1cm4g
cG50SWR4Owp9CgpleHRlcm4gaW5saW5lIFNkYm1GbGREYXRhSWR4ClNkYm1GbGRzUHJldkZyb21S
ZWMoU2RibVRhYmxlSGFuZGxlKiB0YmxILAogICAgICAgICAgICAgICAgICAgIFNkYm1SZWNFbnR5
KiByZWMsIFNkYm1GbGRObyBmbGRObywgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAgICBTZGJt
RmxkRGF0YUlkeCBwbnRJZHg7CiAgICBpZih0Z3RJZHgpIHsKICAgICAgICBwbnRJZHggPSBTZGJt
Rmxkc09wclByZXYoKHRibEgpLT5mbGRzLCAxLCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAg
ICBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0udmVjSWR4TGlzdDsKICAgIH0KICAgIHJl
dHVybiBwbnRJZHg7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTZGJtRmxkc0luc2VydFRvUmVjKFNk
Ym1UYWJsZUhhbmRsZSogdGJsSCwKICAgICAgICAgICAgICAgICAgICBTZGJtUmVjRW50eSogcmVj
LCBTZGJtRmxkTm8gZmxkTm8sIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewogICAgU2RibUZsZERh
dGFJZHggcG50SWR4ID0gcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLnZlY0lkeExpc3Q7CiAgICBpZihw
bnRJZHgpIHsKICAgICAgICBTZGJtRmxkQm9keSogZmxkID0gKCh2b2lkICopMCk7CiAgICAgICAg
U2RibUdldEZsZEJvZHkodGJsSCwgcG50SWR4LCAmZmxkKTsKICAgICAgICBTZGJtRmxkc09wcklu
c2VydChmbGQsIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmVjLT5mbGRQ
dHJzW2ZsZE5vLTFdLnZlY0lkeExpc3QgPSBwbnRJZHg7CiAgICB9CiAgICByZWMtPmZsZFB0cnNb
ZmxkTm8tMV0ubnVtRWxtcyArKzsKfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1GbGRzQXBwZW5k
VG9SZWMoU2RibVRhYmxlSGFuZGxlKiB0YmxILAogICAgICAgICAgICAgICAgICAgIFNkYm1SZWNF
bnR5KiByZWMsIFNkYm1GbGRObyBmbGRObywgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAgICBT
ZGJtRmxkRGF0YUlkeCBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0udmVjSWR4TGlzdDsK
ICAgIGlmKHBudElkeCkgewogICAgICAgIFNkYm1GbGRCb2R5KiBmbGQgPSAoKHZvaWQgKikwKTsK
ICAgICAgICBTZGJtR2V0RmxkQm9keSh0YmxILCBwbnRJZHgsICZmbGQpOwogICAgICAgIFNkYm1G
bGRzT3ByQXBwZW5kKGZsZCwgcG50SWR4LCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAgICBy
ZWMtPmZsZFB0cnNbZmxkTm8tMV0udmVjSWR4TGlzdCA9IHBudElkeDsKICAgIH0KICAgIHJlYy0+
ZmxkUHRyc1tmbGROby0xXS5udW1FbG1zICsrOwp9CgpleHRlcm4gaW5saW5lIHZvaWQKU2RibUZs
ZHNEZWxldGVGcm9tUmVjKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwKICAgICAgICAgICAgICAgICAg
ICAgIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRObyBmbGRObywgU2RibUZsZERhdGFJZHggdGd0
SWR4KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0u
dmVjSWR4TGlzdDsKICAgIGlmKHBudElkeCkgewogICAgICAgIFNkYm1GbGRCb2R5KiBmbGQgPSAo
KHZvaWQgKikwKTsKICAgICAgICBTZGJtRmxkRGF0YUlkeCBkZWxOZXh0OwogICAgICAgIFNkYm1H
ZXRGbGRCb2R5KHRibEgsIHBudElkeCwgJmZsZCk7CiAgICAgICAgZGVsTmV4dCA9IFNkYm1GbGRz
T3ByRGVsZXRlKGZsZCwgcG50SWR4LCB0Z3RJZHgpOwogICAgICAgIHJlYy0+ZmxkUHRyc1tmbGRO
by0xXS5udW1FbG1zIC0tOwogICAgICAgIGlmKHJlYy0+ZmxkUHRyc1tmbGROby0xXS5udW1FbG1z
IDwgMCkKICAgICAgICAgICAgcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLm51bUVsbXMgPSAwOwogICAg
ICAgIGlmKHRndElkeCA9PSBkZWxOZXh0KQogICAgICAgICAgICBkZWxOZXh0ID0gMDsKICAgICAg
ICBpZih0Z3RJZHggPT0gcG50SWR4KQogICAgICAgICAgICByZWMtPmZsZFB0cnNbZmxkTm8tMV0u
dmVjSWR4TGlzdCA9IGRlbE5leHQ7CiAgICB9Cn0KCmV4dGVybiBpbmxpbmUgU2RibUZsZERhdGFJ
ZHgKU2RibUdldEZsZFdpdGhWZWNJZHgoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtUmVjRW50
eSogcmVjLAogICAgICAgICAgICAgICAgICAgICBTZGJtRmxkTm8gZmxkTm8sIFNkYm1WZWNGbGRJ
ZHggdmVjSWR4LCBTZGJtRmxkRGF0YUlkeCogaW5zUG50UCkKewogICAgU2RibUZsZERhdGFJZHgg
dG9wSWR4ID0gU2RibUZsZHNOZXh0RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLCAwKTsKICAgIFNk
Ym1GbGREYXRhSWR4IGRhdGFJZHggPSB0b3BJZHg7CiAgICBTZGJtRmxkRGF0YUlkeCByZXRJZHgg
PSAwOwogICAgU2RibUZsZERhdGFJZHggaW5zUG50ID0gMDsKICAgIGRvIHsKICAgICAgICBTZGJt
RmxkQm9keSogZmxkOwogICAgICAgIGludCByZXRDb2RlOwogICAgICAgIHJldENvZGUgPSBTZGJt
R2V0RmxkQm9keSh0YmxILCBkYXRhSWR4LCAmZmxkKTsKICAgICAgICBpZigoKHJldENvZGUpID49
IDApKSB7CiAgICAgICAgICAgIDsKICAgICAgICAgICAgaWYoZmxkLT52ZWN0b3JJZHggPT0gdmVj
SWR4KSB7CiAgICAgICAgICAgICAgICByZXRJZHggPSBkYXRhSWR4OwogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoZmxkLT52ZWN0b3JJZHggPiB2ZWNJ
ZHgpIHsKCgoKICAgICAgICAgICAgICAgIGluc1BudCA9IGRhdGFJZHg7CgogICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5zUG50ID0gZGF0YUlkeDsKICAg
ICAgICAgICAgZGF0YUlkeCA9IFNkYm1GbGRzTmV4dEZyb21SZWModGJsSCwgcmVjLCBmbGRObywg
ZGF0YUlkeCk7CiAgICAgICAgICAgIDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBicmVh
azsKICAgICAgICB9CiAgICB9IHdoaWxlKHRvcElkeCAhPSBkYXRhSWR4KTsKICAgICppbnNQbnRQ
ID0gaW5zUG50OwogICAgcmV0dXJuIHJldElkeDsKfQoKZXh0ZXJuIGlubGluZSBTZGJtRmxkRGF0
YUlkeApTZGJtR2V0TWF4VmVjSWR4KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0VudHkq
IHJlYywgU2RibUZsZE5vIGZsZE5vLAogICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4KiBp
bnNQbnRQKQp7CiAgICBTZGJtRmxkRGF0YUlkeCBkYXRhSWR4ID0gU2RibUZsZHNQcmV2RnJvbVJl
Yyh0YmxILCByZWMsIGZsZE5vLCAwKTsKICAgIFNkYm1WZWNGbGRJZHggdmVjSWR4ID0gMDsKCiAg
ICAqaW5zUG50UCA9IDA7CiAgICBpZihkYXRhSWR4KSB7CiAgICAgICAgU2RibUZsZEJvZHkqIGZs
ZDsKICAgICAgICBpbnQgcmV0Q29kZTsKICAgICAgICBkYXRhSWR4ID0gU2RibUZsZHNQcmV2RnJv
bVJlYyh0YmxILCByZWMsIGZsZE5vLCBkYXRhSWR4KTsKICAgICAgICByZXRDb2RlID0gU2RibUdl
dEZsZEJvZHkodGJsSCwgZGF0YUlkeCwgJmZsZCk7CiAgICAgICAgaWYoKChyZXRDb2RlKSA+PSAw
KSkgewogICAgICAgICAgICB2ZWNJZHggPSBmbGQtPnZlY3RvcklkeDsKICAgICAgICAgICAgKmlu
c1BudFAgPSBkYXRhSWR4OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZlY0lkeCA9IHJl
dENvZGU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHZlY0lkeDsKfQoKZXh0ZXJuIGlubGlu
ZSBTZGJtRmxkRGF0YUlkeApTZGJtR2V0TmV3VmVjSWR4KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwg
U2RibVJlY0VudHkqIHJlYywgU2RibUZsZE5vIGZsZE5vLAogICAgICAgICAgICAgICAgIFNkYm1G
bGREYXRhSWR4KiBpbnNQbnRQKQp7CiAgICBTZGJtRmxkRGF0YUlkeCB0b3AgPSBTZGJtRmxkc05l
eHRGcm9tUmVjKHRibEgsIHJlYywgZmxkTm8sIDApOwogICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgg
PSAwOwoKICAgICppbnNQbnRQID0gMDsKICAgIGlmKHRvcCkgewogICAgICAgIHZlY0lkeCA9IFNk
Ym1HZXRNYXhWZWNJZHgodGJsSCwgcmVjLCBmbGRObywgaW5zUG50UCk7CiAgICAgICAgaWYodmVj
SWR4ID49IDE2Nzc3MjE2KSB7CiAgICAgICAgICAgIFNkYm1WZWNGbGRJZHggcHJldklkeCA9IDA7
CiAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4IGRhdGFJZHggPSB0b3A7CiAgICAgICAgICAgIFNk
Ym1GbGREYXRhSWR4IHByZXZEYXRhID0gMDsKICAgICAgICAgICAgU2RibUZsZEJvZHkqIGZsZDsK
ICAgICAgICAgICAgaW50IHJldENvZGU7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAg
IHJldENvZGUgPSBTZGJtR2V0RmxkQm9keSh0YmxILCBkYXRhSWR4LCAmZmxkKTsKICAgICAgICAg
ICAgICAgIGlmKCgocmV0Q29kZSkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICA7CgogICAg
ICAgICAgICAgICAgICAgIGlmKChwcmV2SWR4KzEpIDwgZmxkLT52ZWN0b3JJZHgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdmVjSWR4ID0gcHJldklkeCArIDE7CiAgICAgICAgICAgICAgICAg
ICAgICAgICppbnNQbnRQID0gZGF0YUlkeDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHByZXZJZHggPSBmbGQt
PnZlY3RvcklkeDsKICAgICAgICAgICAgICAgICAgICBwcmV2RGF0YSA9IGRhdGFJZHg7CiAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRhdGFJZHggPSAwOwogICAg
ICAgICAgICAgICAgICAgIHZlY0lkeCA9IHJldENvZGU7CiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhSWR4ID0gU2RibUZsZHNO
ZXh0RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLCBkYXRhSWR4KTsKICAgICAgICAgICAgfSB3aGls
ZSh0b3AgIT0gZGF0YUlkeCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmVjSWR4ICsr
OwogICAgICAgIH0KICAgIH0KICAgIGlmKHZlY0lkeCA9PSAwKSB7CiAgICAgICAgdmVjSWR4ID0g
MTsKICAgIH0KICAgIHJldHVybiB2ZWNJZHg7Cn0KCiNkZWZpbmUgU2RibUZsZHNTb3J0VG9wQWRk
cih0YmxILHRndCkgU2RibUZsZHNTb3J0T3ByVG9wQWRkcigodGJsSCktPmZsZHMsIGNTZGJtRmxk
RGF0YUlkeE1pbiwgdGd0KQoKI2RlZmluZSBTZGJtRmxkc1NvcnRJbmRleCh0YmxILHRndFApIFNk
Ym1GbGRzU29ydE9wckluZGV4KCh0YmxIKS0+ZmxkcywgY1NkYm1GbGREYXRhSWR4TWluLCB0Z3RQ
KQoKI2RlZmluZSBTZGJtRmxkc1NvcnRJbml0KHRibEgsdGd0KSBTZGJtRmxkc1NvcnRPcHJJbml0
KCh0YmxIKS0+ZmxkcywgY1NkYm1GbGREYXRhSWR4TWluLCB0Z3QpCgoKZXh0ZXJuIGlubGluZSBT
ZGJtRmxkRGF0YUlkeApTZGJtRmxkc1NvcnROZXh0RnJvbVJlYyhTZGJtVGFibGVIYW5kbGUqIHRi
bEgsCiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRObyBm
bGRObywgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBwbnRJZHg7
CiAgICBpZih0Z3RJZHgpIHsKICAgICAgICBwbnRJZHggPSBTZGJtRmxkc1NvcnRPcHJOZXh0KCh0
YmxIKS0+ZmxkcywgMSwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcG50SWR4ID0gcmVj
LT5mbGRQdHJzW2ZsZE5vLTFdLnNvcnRlZExpc3Q7CiAgICB9CiAgICByZXR1cm4gcG50SWR4Owp9
CgpleHRlcm4gaW5saW5lIFNkYm1GbGREYXRhSWR4ClNkYm1GbGRzU29ydFByZXZGcm9tUmVjKFNk
Ym1UYWJsZUhhbmRsZSogdGJsSCwKICAgICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0VudHkq
IHJlYywgU2RibUZsZE5vIGZsZE5vLCBTZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIFNkYm1G
bGREYXRhSWR4IHBudElkeDsKICAgIGlmKHRndElkeCkgewogICAgICAgIHBudElkeCA9IFNkYm1G
bGRzU29ydE9wclByZXYoKHRibEgpLT5mbGRzLCAxLCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAg
ICAgICBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0uc29ydGVkTGlzdDsKICAgIH0KICAg
IHJldHVybiBwbnRJZHg7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTZGJtRmxkc1NvcnRJbnNlcnRU
b1JlYyhTZGJtVGFibGVIYW5kbGUqIHRibEgsCiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1S
ZWNFbnR5KiByZWMsIFNkYm1GbGRObyBmbGRObywgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAg
ICBTZGJtRmxkRGF0YUlkeCBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0uc29ydGVkTGlz
dDsKICAgIGlmKHBudElkeCkgewogICAgICAgIFNkYm1GbGRCb2R5KiBmbGQgPSAoKHZvaWQgKikw
KTsKICAgICAgICBTZGJtR2V0RmxkQm9keSh0YmxILCBwbnRJZHgsICZmbGQpOwogICAgICAgIFNk
Ym1GbGRzU29ydE9wckluc2VydChmbGQsIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAg
ICAgICAgcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLnNvcnRlZExpc3QgPSB0Z3RJZHg7CiAgICB9Cn0K
CmV4dGVybiBpbmxpbmUgdm9pZApTZGJtRmxkc1NvcnRBcHBlbmRUb1JlYyhTZGJtVGFibGVIYW5k
bGUqIHRibEgsCiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1G
bGRObyBmbGRObywgU2RibUZsZERhdGFJZHggdGd0SWR4KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBw
bnRJZHggPSByZWMtPmZsZFB0cnNbZmxkTm8tMV0uc29ydGVkTGlzdDsKICAgIGlmKHBudElkeCkg
ewogICAgICAgIFNkYm1GbGRCb2R5KiBmbGQgPSAoKHZvaWQgKikwKTsKICAgICAgICBTZGJtR2V0
RmxkQm9keSh0YmxILCBwbnRJZHgsICZmbGQpOwogICAgICAgIFNkYm1GbGRzU29ydE9wckFwcGVu
ZChmbGQsIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmVjLT5mbGRQdHJz
W2ZsZE5vLTFdLnNvcnRlZExpc3QgPSB0Z3RJZHg7CiAgICB9Cn0KCmV4dGVybiBpbmxpbmUgdm9p
ZApTZGJtRmxkc1NvcnREZWxldGVGcm9tUmVjKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwKICAgICAg
ICAgICAgICAgICAgICAgIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRObyBmbGRObywgU2RibUZs
ZERhdGFJZHggdGd0SWR4KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBwbnRJZHggPSByZWMtPmZsZFB0
cnNbZmxkTm8tMV0uc29ydGVkTGlzdDsKICAgIGlmKHBudElkeCkgewogICAgICAgIFNkYm1GbGRC
b2R5KiBmbGQgPSAoKHZvaWQgKikwKTsKICAgICAgICBTZGJtRmxkRGF0YUlkeCBkZWxOZXh0Owog
ICAgICAgIFNkYm1HZXRGbGRCb2R5KHRibEgsIHBudElkeCwgJmZsZCk7CiAgICAgICAgZGVsTmV4
dCA9IFNkYm1GbGRzU29ydE9wckRlbGV0ZShmbGQsIHBudElkeCwgdGd0SWR4KTsKICAgICAgICBp
Zih0Z3RJZHggPT0gZGVsTmV4dCkKICAgICAgICAgICAgZGVsTmV4dCA9IDA7CiAgICAgICAgaWYo
dGd0SWR4ID09IHBudElkeCkKICAgICAgICAgICAgcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLnNvcnRl
ZExpc3QgPSBkZWxOZXh0OwogICAgfQp9CgojZGVmaW5lIFNkYm1MaW5rZWRGbGRzVG9wQWRkcih0
YmxILHRndCkgU2RibUxpbmtlZEZsZHNPcHJUb3BBZGRyKCh0YmxIKS0+bGlua2VkRmxkcywgY1Nk
Ym1GbGREYXRhSWR4TWluLCB0Z3QpCgojZGVmaW5lIFNkYm1MaW5rZWRGbGRzSW5kZXgodGJsSCx0
Z3RQKSBTZGJtTGlua2VkRmxkc09wckluZGV4KCh0YmxIKS0+bGlua2VkRmxkcywgY1NkYm1GbGRE
YXRhSWR4TWluLCB0Z3RQKQoKI2RlZmluZSBTZGJtTGlua2VkRmxkc0luaXQodGJsSCx0Z3QpIFNk
Ym1MaW5rZWRGbGRzT3BySW5pdCgodGJsSCktPmxpbmtlZEZsZHMsIGNTZGJtRmxkRGF0YUlkeE1p
biwgdGd0KQoKCmV4dGVybiBpbmxpbmUgU2RibUZsZERhdGFJZHgKU2RibUxpbmtlZEZsZHNOZXh0
RnJvbUZyZWVMaXN0KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZERhdGFJZHggdGd0SWR4
KQp7CiAgICBTZGJtRmxkRGF0YUlkeCBwbnRJZHg7CiAgICBpZih0Z3RJZHgpIHsKICAgICAgICBw
bnRJZHggPSBTZGJtTGlua2VkRmxkc09wck5leHQoKHRibEgpLT5saW5rZWRGbGRzLCAxLCB0Z3RJ
ZHgpOwogICAgfSBlbHNlIHsKICAgICAgICBwbnRJZHggPSB0YmxILT5saW5rZWRGbGRzQXR0ci0+
ZnJlZUxpc3Q7CiAgICB9CiAgICByZXR1cm4gcG50SWR4Owp9CgpleHRlcm4gaW5saW5lIFNkYm1G
bGREYXRhSWR4ClNkYm1MaW5rZWRGbGRzUHJldkZyb21GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUq
IHRibEgsIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewogICAgU2RibUZsZERhdGFJZHggcG50SWR4
OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50SWR4ID0gU2RibUxpbmtlZEZsZHNPcHJQcmV2
KCh0YmxIKS0+bGlua2VkRmxkcywgMSwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcG50
SWR4ID0gdGJsSC0+bGlua2VkRmxkc0F0dHItPmZyZWVMaXN0OwogICAgfQogICAgcmV0dXJuIHBu
dElkeDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1MaW5rZWRGbGRzSW5zZXJ0VG9GcmVlTGlz
dChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewogICAgczMy
IHBudElkeCA9IHRibEgtPmxpbmtlZEZsZHNBdHRyLT5mcmVlTGlzdDsKICAgIGlmKHBudElkeCkg
ewogICAgICAgIFNkYm1MaW5rZWRGbGRJbmZvKiBsZmkgPSAoKHZvaWQgKikwKTsKICAgICAgICBT
ZGJtR2V0TGlua2VkRmxkSW5mbyh0YmxILCBwbnRJZHgsICZsZmkpOwogICAgICAgIFNkYm1MaW5r
ZWRGbGRzT3BySW5zZXJ0KGxmaSwgcG50SWR4LCB0Z3RJZHgpOwogICAgfSBlbHNlIHsKICAgICAg
ICB0YmxILT5saW5rZWRGbGRzQXR0ci0+ZnJlZUxpc3QgPSB0Z3RJZHg7CiAgICB9Cn0KCmV4dGVy
biBpbmxpbmUgdm9pZApTZGJtTGlua2VkRmxkc0FwcGVuZFRvRnJlZUxpc3QoU2RibVRhYmxlSGFu
ZGxlKiB0YmxILCBTZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIHMzMiBwbnRJZHggPSB0YmxI
LT5saW5rZWRGbGRzQXR0ci0+ZnJlZUxpc3Q7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJt
TGlua2VkRmxkSW5mbyogbGZpID0gKCh2b2lkICopMCk7CiAgICAgICAgU2RibUdldExpbmtlZEZs
ZEluZm8odGJsSCwgcG50SWR4LCAmbGZpKTsKICAgICAgICBTZGJtTGlua2VkRmxkc09wckFwcGVu
ZChsZmksIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgdGJsSC0+bGlua2Vk
Rmxkc0F0dHItPmZyZWVMaXN0ID0gdGd0SWR4OwogICAgfQp9CgpleHRlcm4gaW5saW5lIHZvaWQK
U2RibUxpbmtlZEZsZHNEZWxldGVGcm9tRnJlZUxpc3QoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBT
ZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIHMzMiBwbnRJZHggPSB0YmxILT5saW5rZWRGbGRz
QXR0ci0+ZnJlZUxpc3Q7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJtTGlua2VkRmxkSW5m
byogbGZpID0gKCh2b2lkICopMCk7CiAgICAgICAgU2RibUZsZERhdGFJZHggZGVsTmV4dDsKICAg
ICAgICBTZGJtR2V0TGlua2VkRmxkSW5mbyh0YmxILCBwbnRJZHgsICZsZmkpOwogICAgICAgIGRl
bE5leHQgPSBTZGJtTGlua2VkRmxkc09wckRlbGV0ZShsZmksIHBudElkeCwgdGd0SWR4KTsKICAg
ICAgICBpZih0Z3RJZHggPT0gZGVsTmV4dCkKICAgICAgICAgICAgZGVsTmV4dCA9IDA7CiAgICAg
ICAgaWYodGd0SWR4ID09IHBudElkeCkKICAgICAgICAgICAgdGJsSC0+bGlua2VkRmxkc0F0dHIt
PmZyZWVMaXN0ID0gZGVsTmV4dDsKICAgIH0KfQpleHRlcm4gaW5saW5lIFNkYm1GbGREYXRhSWR4
ClNkYm1MaW5rZWRGbGRzTmV4dEZyb21SZWMoU2RibVRhYmxlSGFuZGxlKiB0YmxILAogICAgICAg
ICAgICAgICAgICAgICAgU2RibVJlY0VudHkqIHJlYywgU2RibUZsZE5vIGZsZE5vLCBTZGJtRmxk
RGF0YUlkeCB0Z3RJZHgpCnsKICAgIFNkYm1GbGREYXRhSWR4IHBudElkeDsKICAgIGlmKHRndElk
eCkgewogICAgICAgIHBudElkeCA9IFNkYm1MaW5rZWRGbGRzT3ByTmV4dCgodGJsSCktPmxpbmtl
ZEZsZHMsIDEsIHRndElkeCk7CiAgICB9IGVsc2UgewogICAgICAgIHBudElkeCA9IHJlYy0+Zmxk
UHRyc1tmbGROby0xXS5saW5rZWRJZHg7CiAgICB9CiAgICByZXR1cm4gcG50SWR4Owp9CgpleHRl
cm4gaW5saW5lIFNkYm1GbGREYXRhSWR4ClNkYm1MaW5rZWRGbGRzUHJldkZyb21SZWMoU2RibVRh
YmxlSGFuZGxlKiB0YmxILAogICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0VudHkqIHJlYywg
U2RibUZsZE5vIGZsZE5vLCBTZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIFNkYm1GbGREYXRh
SWR4IHBudElkeDsKICAgIGlmKHRndElkeCkgewogICAgICAgIHBudElkeCA9IFNkYm1MaW5rZWRG
bGRzT3ByUHJldigodGJsSCktPmxpbmtlZEZsZHMsIDEsIHRndElkeCk7CiAgICB9IGVsc2Ugewog
ICAgICAgIHBudElkeCA9IHJlYy0+ZmxkUHRyc1tmbGROby0xXS5saW5rZWRJZHg7CiAgICB9CiAg
ICByZXR1cm4gcG50SWR4Owp9CgpleHRlcm4gaW5saW5lIHZvaWQKU2RibUxpbmtlZEZsZHNJbnNl
cnRUb1JlYyhTZGJtVGFibGVIYW5kbGUqIHRibEgsCiAgICAgICAgICAgICAgICAgICAgICBTZGJt
UmVjRW50eSogcmVjLCBTZGJtRmxkTm8gZmxkTm8sIFNkYm1GbGREYXRhSWR4IHRndElkeCkKewog
ICAgczMyIHBudElkeCA9IHJlYy0+ZmxkUHRyc1tmbGROby0xXS5saW5rZWRJZHg7CiAgICBpZihw
bnRJZHgpIHsKICAgICAgICBTZGJtTGlua2VkRmxkSW5mbyogbGZpID0gKCh2b2lkICopMCk7CiAg
ICAgICAgU2RibUdldExpbmtlZEZsZEluZm8odGJsSCwgcG50SWR4LCAmbGZpKTsKICAgICAgICBT
ZGJtTGlua2VkRmxkc09wckluc2VydChsZmksIHBudElkeCwgdGd0SWR4KTsKICAgIH0gZWxzZSB7
CiAgICAgICAgcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLmxpbmtlZElkeCA9IHRndElkeDsKICAgIH0K
fQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1MaW5rZWRGbGRzQXBwZW5kVG9SZWMoU2RibVRhYmxl
SGFuZGxlKiB0YmxILAogICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0VudHkqIHJlYywgU2Ri
bUZsZE5vIGZsZE5vLCBTZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIHMzMiBwbnRJZHggPSBy
ZWMtPmZsZFB0cnNbZmxkTm8tMV0ubGlua2VkSWR4OwogICAgaWYocG50SWR4KSB7CiAgICAgICAg
U2RibUxpbmtlZEZsZEluZm8qIGxmaSA9ICgodm9pZCAqKTApOwogICAgICAgIFNkYm1HZXRMaW5r
ZWRGbGRJbmZvKHRibEgsIHBudElkeCwgJmxmaSk7CiAgICAgICAgU2RibUxpbmtlZEZsZHNPcHJB
cHBlbmQobGZpLCBwbnRJZHgsIHRndElkeCk7CiAgICB9IGVsc2UgewogICAgICAgIHJlYy0+Zmxk
UHRyc1tmbGROby0xXS5saW5rZWRJZHggPSB0Z3RJZHg7CiAgICB9Cn0KCmV4dGVybiBpbmxpbmUg
dm9pZApTZGJtTGlua2VkRmxkc0RlbGV0ZUZyb21SZWMoU2RibVRhYmxlSGFuZGxlKiB0YmxILAog
ICAgICAgICAgICAgICAgICAgICAgU2RibVJlY0VudHkqIHJlYywgU2RibUZsZE5vIGZsZE5vLCBT
ZGJtRmxkRGF0YUlkeCB0Z3RJZHgpCnsKICAgIHMzMiBwbnRJZHggPSByZWMtPmZsZFB0cnNbZmxk
Tm8tMV0ubGlua2VkSWR4OwogICAgaWYocG50SWR4KSB7CiAgICAgICAgU2RibUxpbmtlZEZsZElu
Zm8qIGxmaSA9ICgodm9pZCAqKTApOwogICAgICAgIFNkYm1GbGREYXRhSWR4IGRlbE5leHQ7CiAg
ICAgICAgU2RibUdldExpbmtlZEZsZEluZm8odGJsSCwgcG50SWR4LCAmbGZpKTsKICAgICAgICBk
ZWxOZXh0ID0gU2RibUxpbmtlZEZsZHNPcHJEZWxldGUobGZpLCBwbnRJZHgsIHRndElkeCk7CiAg
ICAgICAgaWYodGd0SWR4ID09IGRlbE5leHQpCiAgICAgICAgICAgIGRlbE5leHQgPSAwOwogICAg
ICAgIGlmKHRndElkeCA9PSBwbnRJZHgpCiAgICAgICAgICAgIHJlYy0+ZmxkUHRyc1tmbGROby0x
XS5saW5rZWRJZHggPSBkZWxOZXh0OwogICAgfQp9CgpzdHJ1Y3QgU2RibUZsZFR5cGVJbmZvOwp0
eXBlZGVmIGludCAoKlNkYm1TZWFyY2hEYXRhRnVuYykoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBj
b25zdCBTZGJtRmxkU3BlYyogZlNwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3QgU2RibUZsZFR5cGVJbmZvKiB0aSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNkYm1RdWVyeUNvbmQqIHF1ZXJ5LCBTZGJtRmxkRGF0YUlkeCog
ZGF0YUlkeFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlk
eCogc3ViRGF0YUlkeFApOwp0eXBlZGVmIGludCAoKlNkYm1Db21wYXJlRGF0YUludGVybmFsRnVu
YykoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtRmxkRGF0YUlkeCBkYXRhSWR4MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4IGRhdGFJ
ZHgyKTsKdHlwZWRlZiBpbnQgKCpTZGJtQ29tcGFyZURhdGFFeHRlcm5hbEZ1bmMpKFNkYm1UYWJs
ZUhhbmRsZSogdGJsSCwgY29uc3QgU2RibUZsZFNwZWMqIGZTcGVjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZFJlZiogdGd0RGF0YSwgU2RibUZsZERh
dGFJZHggZGF0YUlkeCk7CnR5cGVkZWYgaW50ICgqU2RibU1ha2VEYXRhRnVuYykoU2RibVRhYmxl
SGFuZGxlKiB0YmxILCBTZGJtRmxkUmVmKiB0Z3REYXRhLCBTZGJtRmxkU3BlYyogZlNwZWMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibURhdGFJZCBkYXRhSWQsIFNkYm1GbGRE
YXRhSWR4IGRhdGFJZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZEVu
dHkqIGNvbnRlbnRQLCBTZGJtRmxkSWR4RGF0YSogaWR4RGF0YVApOwp0eXBlZGVmIGludCAoKlNk
Ym1LaWxsRGF0YUZ1bmMpKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZFNwZWMqIGZTcGVj
LCBTZGJtRmxkRW50eSogY29udGVudFApOwp0eXBlZGVmIGludCAoKlNkYm1TdG9yZURhdGFGdW5j
KShTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGRTcGVjKiBmU3BlYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RibUZsZEVudHkqIGNvbnRlbnRQLCBTZGJtRmxkUmVmKiBm
UmVmLCBCb29sIGluc2lkZUFsbG9jYXRpb24pOwp0eXBlZGVmIGludCAoKlNkYm1JbnF1aXJ5RGF0
YUZ1bmMpKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgY29uc3Qgc3RydWN0IFNkYm1GbGRUeXBlSW5m
byogdGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2RibUZsZFNw
ZWMqIGZTcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNkYm1R
dWVyeUNvbmQqIHF1ZXJ5LCBTZGJtRmxkRGF0YUlkeCBkYXRhSWR4KTsKdHlwZWRlZiBpbnQgKCpT
ZGJtTmV4dERhdGFGdW5jKShTZGJtVGFibGVIYW5kbGUqIHRibEgsIGNvbnN0IHN0cnVjdCBTZGJt
RmxkVHlwZUluZm8qIHRpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNk
Ym1RdWVyeUNvbmQqIHF1ZXJ5LCBjb25zdCBTZGJtRmxkU3BlYyogZlNwZWMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggZnJvbURhdGFJZHgsIFNkYm1GbGRE
YXRhSWR4KiBuZXh0RGF0YUlkeFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ri
bUZsZERhdGFJZHggc3ViRGF0YUlkeCwgU2RibUZsZERhdGFJZHgqIG5leHRTdWJEYXRhSWR4UCk7
Cgp0eXBlZGVmIHN0cnVjdCBTZGJtRmxkVHlwZUluZm8gewogICAgdTMyIGZsZFR5cGU6OCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRUeXBlOjgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXNTdXBwb3J0ZWQ6MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNBdHJlZUlkeDoxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBh
cmVCeVZhbHVlOjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZVNvcnRlZDox
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlRGF0YToxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDoxMTsKICAgIHUzMiBjb25kTWFzazsKICAgIGNvbnN0
IEF0cmVlQ2FsbGJhY2tzKiBhdHJlZU9wcnM7CiAgICBTZGJtU2VhcmNoRGF0YUZ1bmMgc2VhcmNo
RGF0YTsKICAgIFNkYm1Db21wYXJlRGF0YUludGVybmFsRnVuYyBjb21wYXJlRGF0YUludGVybmFs
OwogICAgU2RibUNvbXBhcmVEYXRhRXh0ZXJuYWxGdW5jIGNvbXBhcmVEYXRhRXh0ZXJuYWw7CiAg
ICBTZGJtTWFrZURhdGFGdW5jIG1ha2VEYXRhOwogICAgU2RibUtpbGxEYXRhRnVuYyBraWxsRGF0
YTsKICAgIFNkYm1TdG9yZURhdGFGdW5jIHN0b3JlRGF0YTsKICAgIFNkYm1JbnF1aXJ5RGF0YUZ1
bmMgaW5xdWlyeURhdGE7CiAgICBTZGJtTmV4dERhdGFGdW5jIG5leHREYXRhOwogICAgQXJlYSBy
c3J2WzddOwp9IFNkYm1GbGRUeXBlSW5mbzsKCmV4dGVybiBjb25zdCBTZGJtRmxkVHlwZUluZm8q
IGdTZGJtRmxkVHlwZXNbMjU1ICsxXTsKCiNkZWZpbmUgU2RibUdldFR5cGVJbmZvKGZsZFR5cGUp
IChnU2RibUZsZFR5cGVzW2ZsZFR5cGVdKQojZGVmaW5lIFNkYm1GbGRUeXBlQ29ycmVjdChmbGRU
eXBlKSAoKGZsZFR5cGUpICYgMHhGRikKCiNkZWZpbmUgY1NkYm1EYXRhTG93IDEKI2RlZmluZSBj
U2RibURhdGFFcXVhbCAyCiNkZWZpbmUgY1NkYm1EYXRhSGlnaCAzCgojZGVmaW5lIGNTZGJtSW5x
dWlyeUhpdCAxCiNkZWZpbmUgY1NkYm1JbnF1aXJ5Tm9IaXQgMAoKI2RlZmluZSBjU2RibUNvcnJl
Y3ROZXh0RGF0YSAxCiNkZWZpbmUgY1NkYm1Ob21vcmVOZXh0RGF0YSAwCgpleHRlcm4gaW50IFNk
Ym1TZWFyY2hEYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgY29uc3QgU2RibVF1ZXJ5Q29uZCog
cXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4KiBkYXRhSWR4
UCwgU2RibURhdGFJZCogZGF0YVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRE
YXRhSWR4KiBzdWJEYXRhSWR4UCk7CmV4dGVybiBpbnQgU2RibUlucXVpcnlEYXRhcyhTZGJtVGFi
bGVIYW5kbGUqIHRibEgsIGNvbnN0IFNkYm1RdWVyeUNvbmQqIHF1ZXJ5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNkYm1EYXRhSWQgZGF0YUlkKTsKZXh0ZXJuIGludCBTZGJtTmV4dFF1
ZXJ5RGF0YShTZGJtVGFibGVIYW5kbGUqIHRibEgsIE51bSBudW1RdWVyaWVzLCBjb25zdCBTZGJt
UXVlcnlDb25kKiBxdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibURhdGFJ
ZCBmcm9tSWQsIFNkYm1GbGREYXRhSWR4IGZyb21EYXRhSWR4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBzdWJEYXRhSWR4LCBTZGJtRGF0YUlkKiBuZXh0SWRQ
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCogbmV4dERhdGFJ
ZHhQLCBTZGJtRmxkRGF0YUlkeCogbmV4dFN1YkRhdGFJZHhQKTsKZXh0ZXJuIGludCBTZGJtQ29t
cGFyZURhdGFJbnRlcm5hbChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGRObyBmbGRObywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggZGF0YTEs
IFNkYm1GbGREYXRhSWR4IGRhdGEyKTsKZXh0ZXJuIGludCBTZGJtS2lsbERhdGEoU2RibVRhYmxl
SGFuZGxlKiB0YmxILCBTZGJtRGF0YUlkIGRhdGFJZCwgU2RibVZlY0ZsZElkeCB2ZWNJZHgpOwpl
eHRlcm4gaW50IFNkYm1TZXREYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURhdGFJZCBk
YXRhSWQsIFNkYm1GbGRSZWYqIHRndERhdGEpOwpleHRlcm4gaW50IFNkYm1HZXREYXRhcyhTZGJt
VGFibGVIYW5kbGUqIHRibEgsIFNkYm1EYXRhSWQgZGF0YUlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgTnVtIG51bURhdGFBcmVhcywgU2RibUZsZFJlZiBmbGREYXRhc1tdLCBCb29sIGluc2lk
ZUFsbG9jYXRpb24pOwpleHRlcm4gaW50IFNkYm1HZXRBRGF0YShTZGJtVGFibGVIYW5kbGUqIHRi
bEgsIFNkYm1EYXRhSWQgZGF0YUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgU2RibVZlY0Zs
ZElkeCB2ZWNJZHgsIFNkYm1GbGRSZWYqIGZsZERhdGEsIEJvb2wgaW5zaWRlQWxsb2NhdGlvbik7
CmV4dGVybiBpbnQgU2RibUtpbGxBbGxEYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURh
dGFJZCBkYXRhSWQpOwpleHRlcm4gaW50IFNkYm1LaWxsRGF0YShTZGJtVGFibGVIYW5kbGUqIHRi
bEgsIFNkYm1EYXRhSWQgZGF0YUlkLCBTZGJtVmVjRmxkSWR4IHZlY0lkeCk7CmV4dGVybiBpbnQg
U2RibUdldEZsZEJvZHlCeUZsZE5vKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURhdGFJZCBk
YXRhSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtVmVjRmxkSWR4IHZl
Y0lkeCwgU2RibUZsZEJvZHkqKiBmbGRCb2R5UCk7CmV4dGVybiBpbnQgU2RibUdldE1pbkFuZE1h
eEZsZEVsbShTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1SZWNFbnR5KiByZWMsIFNkYm1GbGRO
byBmbGRObywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlk
eCogbWluUCwgU2RibUZsZERhdGFJZHgqIG1heFAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2RibVRhYmxlSGFuZGxlKiogZm9yTGlua1RibFAsIFNkYm1GbGRObyogZmxkTm9Q
KTsKZXh0ZXJuIGludCBTZGJtRmluZEVkZ2VEYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2Ri
bUZsZFNwZWMqIGZTcGVjLCBCb29sIGxvd2VyRWRnZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZGJtRmxkRWxtUHRyKiBlbG1QKTsKZXh0ZXJuIGludCBTZGJtTGlzdERhdGEoU2RibVRh
YmxlSGFuZGxlKiB0YmxILCBTZGJtRmxkU3BlYyogZlNwZWMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBTZGJtUmVjSWQgcmVjc1tdLCBOdW0gbnVtUmVjcywgTnVtKiByZWFsUmVjcywKICAgICAg
ICAgICAgICAgICAgICAgICAgIFNkYm1GbGRFbG1QdHIgYWxsTGlzdFtdLCBOdW0gbnVtQWxsLCBO
dW0qIHJlYWxBbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRWxtUHRyIHVuaXFM
aXN0W10sIE51bSBudW1VbmlxLCBOdW0qIHJlYWxVbmlxKTsKCgoKCgpleHRlcm4gU2RibUZsZERh
dGFJZHggU2RibUFsbG9jTmV3RmxkKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZEJvZHkq
KiBmYlApOwpleHRlcm4gaW50IFNkYm1GbGRJZHhBdHJlZU9wZW4oQXJlYSBvcGVuQXJnLCBBcmVh
IGF1eEFyZywgdm9pZCoqIHBwKTsKZXh0ZXJuIGludCBTZGJtRmxkSWR4QXRyZWVDbG9zZShBcmVh
IG9wZW5BcmcsIEFyZWEgYXV4QXJnKTsKZXh0ZXJuIGludCBTZGJtRmxkSWR4QXRyZWVHcm93KEFy
ZWEgb3BlbkFyZywgQXJlYSBhdXhBcmcsIFN6IGJ5dGVTaXplLCB2b2lkKiogcHApOwpleHRlcm4g
aW50IFNkYm1GbGRJZHhBdHJlZVJlZHVjZShBcmVhIG9wZW5BcmcsIEFyZWEgYXV4QXJnLCBTeiBi
eXRlU2l6ZSwgdm9pZCoqIHBwKTsKZXh0ZXJuIGludCBTZGJtRmxkTmFtZUF0cmVlQ29tcGFyZUJ5
TmFtZShBcmVhIGNvbXBhcmVBcmcsIEFyZWEgYXV4QXJnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIGRhdGExSXNJbnRlcm5hbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJlYTY0
IGRhdGExLCBBcmVhNjQgZGF0YTIpOwoKZXh0ZXJuIGludCBTZGJtT3BlblRyZWVGb3JGbGROYW1l
KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgQXRyZWVSZXEqIHJlcSk7CmV4dGVybiBpbnQgU2RibU9w
ZW5UcmVlRm9yRmxkKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZE5vIGZsZE5vLCBBdHJl
ZVJlcSogcmVxKTsKCmV4dGVybiBTZGJtRmxkRGF0YUlkeCBTZGJtTmV3TGlua0luZm8oU2RibVRh
YmxlSGFuZGxlKiBmcm9tVGJsSCwgU2RibUZsZERhdGFJZHggZnJvbURhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRGF0YUlkIGxpbmtGcm9tLCBTZGJtRGF0
YUlkIGxpbmtUbyk7CmV4dGVybiBpbnQgU2RibURlbExpbmtlZEluZm8oU2RibVRhYmxlSGFuZGxl
KiBsaW5rVG9UYmxILCBTZGJtRmxkRGF0YUlkeCBpZHgpOwoKCgojIDM5ICIuLi8uLi9zcmMvc2Ri
bS52MC9zZGJtZmxkdS5jIiAyCiMgMSAiLi4vLi4vc3JjL3NkYm0udjAvc2RibXJlY2MuaCIgMQoj
IDE0ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtcmVjYy5oIgojZGVmaW5lIF9BWElTX1NEQk1SRUND
X0hfIAojIDI5ICIuLi8uLi9zcmMvc2RibS52MC9zZGJtcmVjYy5oIgoKCmV4dGVybiBpbmxpbmUg
aW50ClNkYm1HZXRSZWNFbnR5UHRyKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0lkeCBy
ZWNJZHgsIFNkYm1SZWNFbnR5KiogcmVjUCkKewogICAgaW50IHJldFZhbCA9IDA7CgogICAgaWYo
KDEgPD0gcmVjSWR4KSAmJiAocmVjSWR4IDw9IHRibEgtPnJlY3NDb250bnJBdHRyLT5udW1SZWNz
KSkgewogICAgICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0YmxILCAyKTsKICAgICAgICBp
ZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgQXJlYSB4cDsKICAgICAgICAgICAgU2Ri
bVJlY0VudHkqIHJlYzsKICAgICAgICAgICAgeHAucHRyID0gdGJsSC0+cmVjczsKICAgICAgICAg
ICAgeHAudmFsICs9ICgocmVjSWR4KS0xKSAqIHRibEgtPnJlY1N6OwogICAgICAgICAgICByZWMg
PSB4cC5wdHI7CiAgICAgICAgICAgIDsKICAgICAgICAgICAgKnJlY1AgPSByZWM7CiAgICAgICAg
fQogICAgfSBlbHNlIHsKICAgICAgICA7CiAgICAgICAgTG9nUHV0KDQsICIlczolJCIsIF9fRlVO
Q1RJT05fXywgIklsbGVnYWwgUmVjb3JkIEluZGV4IFslZDoweCV4XSIsIHJlY0lkeCwgcmVjSWR4
KTsKICAgICAgICByZXRWYWwgPSAoLSg0MTUzKSk7CiAgICB9CiAgICByZXR1cm4gcmV0VmFsOwp9
CgpleHRlcm4gaW5saW5lIGludApTZGJtR2V0UmVjRW50eVB0cldpdGhDaGVjayhTZGJtVGFibGVI
YW5kbGUqIHRibEgsIFNkYm1SZWNJZHggcmVjSWR4LCBTZGJtUmVjRW50eSoqIHJlY1ApCnsKICAg
IGludCByZXRWYWwgPSAwOwogICAgU2RibVJlY0VudHkqIHJlYyA9ICgodm9pZCAqKTApOwoKICAg
IHJldFZhbCA9IFNkYm1HZXRSZWNFbnR5UHRyKHRibEgsIHJlY0lkeCwgJnJlYyk7CiAgICBpZigo
KHJldFZhbCkgPj0gMCkpIHsKICAgICAgICBpZighIHJlYy0+cmVjSWQuaS5pbnZhbGlkKSB7CiAg
ICAgICAgICAgIGlmKChyZWMtPnJlY0lkLmkudGFibGVObyA9PSAwKSB8fCAodGJsSC0+dGJsTm8g
PT0gcmVjLT5yZWNJZC5pLnRhYmxlTm8pKSB7CiAgICAgICAgICAgICAgICBpZihyZWNQKQogICAg
ICAgICAgICAgICAgICAgICpyZWNQID0gcmVjOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgTG9nUHV0KDQsICIlczolJCIsIF9fRlVOQ1RJT05fXywgIklsbGVnYWwgUmVjb3Jk
IElEIFtSZWMoMHgleCwweCV4KVRibCglZCldIiwKICAgICAgICAgICAgICAgICAgICAgICByZWMt
PnJlY0lkLmkucmVjSWR4LCByZWMtPnJlY0lkLmkucmV2aXNpb24sIHJlYy0+cmVjSWQuaS50YWJs
ZU5vKTsKICAgICAgICAgICAgICAgIHJldFZhbCA9ICgtKDQxNTYpKTsKICAgICAgICAgICAgfQog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNUSU9O
X18sICJJbGxlZ2FsIFJlY29yZCBJRCAiCiAgICAgICAgICAgICAgICAgICAiW1JlYygweCV4LDB4
JXgpVGJsKCVkKV0iLAogICAgICAgICAgICAgICAgICAgcmVjLT5yZWNJZC5pLnJlY0lkeCwgcmVj
LT5yZWNJZC5pLnJldmlzaW9uLCByZWMtPnJlY0lkLmkudGFibGVObyk7CiAgICAgICAgICAgIHJl
dFZhbCA9ICgtKDQxNTUpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmV0VmFsOwp9Cgpl
eHRlcm4gaW5saW5lIFNkYm1SZWNFbnR5KiBTZGJtUmVjc09wclRvcEFkZHIoU2RibVJlY0VudHkq
IHRvcCwgczMyIHRvcElkeCwgczMyIHRndElkeCwgdTMyIHN6KSB7IHJldHVybiBDcXVldWVUb3BB
ZGRyKCYodG9wLT5saXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHN6LCAoKFdvcmQpKCYoKChTZGJtUmVj
RW50eSAqKTApLT5saXN0KSkpKTsgfSBleHRlcm4gaW5saW5lIHMzMiBTZGJtUmVjc09wckluZGV4
KFNkYm1SZWNFbnR5KiB0b3AsIHMzMiB0b3BJZHgsIFNkYm1SZWNFbnR5KiB0Z3QsIHUzMiBzeikg
eyBzdHJ1Y3QgeyBjaGFyIHhbc3pdOyB9ICpwMSwgKnAyOyBwMSA9ICh2b2lkKil0b3A7IHAyID0g
KHZvaWQqKXRndDsgcmV0dXJuIHAyIC0gcDEgKyB0b3BJZHg7IH0gZXh0ZXJuIGlubGluZSB2b2lk
IFNkYm1SZWNzT3BySW5pdChTZGJtUmVjRW50eSogdG9wLCBzMzIgdG9wSWR4LCBzMzIgdGd0SWR4
LCB1MzIgc3opIHsgQ3F1ZXVlSW5pdCgmKHRvcC0+bGlzdCksIHRvcElkeCwgdGd0SWR4LCBzeiwg
KChXb3JkKSgmKCgoU2RibVJlY0VudHkgKikwKS0+bGlzdCkpKSk7fSBleHRlcm4gaW5saW5lIHZv
aWQgU2RibVJlY3NPcHJJbnNlcnQoU2RibVJlY0VudHkqIHRvcCwgczMyIHRvcElkeCwgczMyIHRn
dElkeCwgdTMyIHN6KSB7IENxdWV1ZUluc2VydFF1ZXVlKCYodG9wLT5saXN0KSwgdG9wSWR4LCB0
Z3RJZHgsIHN6LCAoKFdvcmQpKCYoKChTZGJtUmVjRW50eSAqKTApLT5saXN0KSkpKTt9IGV4dGVy
biBpbmxpbmUgdm9pZCBTZGJtUmVjc09wckFwcGVuZChTZGJtUmVjRW50eSogdG9wLCBzMzIgdG9w
SWR4LCBzMzIgdGd0SWR4LCB1MzIgc3opIHsgQ3F1ZXVlQXBwZW5kUXVldWUoJih0b3AtPmxpc3Qp
LCB0b3BJZHgsIHRndElkeCwgc3osICgoV29yZCkoJigoKFNkYm1SZWNFbnR5ICopMCktPmxpc3Qp
KSkpO30gZXh0ZXJuIGlubGluZSBzMzIgU2RibVJlY3NPcHJEZWxldGUoU2RibVJlY0VudHkqIHRv
cCwgczMyIHRvcElkeCwgczMyIHRndElkeCwgdTMyIHN6KSB7IHMzMiByZXRhaW47IHJldGFpbiA9
IENxdWV1ZURlbGV0ZVF1ZXVlKCYodG9wLT5saXN0KSwgdG9wSWR4LCB0Z3RJZHgsIHN6LCAoKFdv
cmQpKCYoKChTZGJtUmVjRW50eSAqKTApLT5saXN0KSkpKTsgcmV0dXJuIHJldGFpbjt9IGV4dGVy
biBpbmxpbmUgczMyIFNkYm1SZWNzT3ByTmV4dChTZGJtUmVjRW50eSogdG9wLCBzMzIgdG9wSWR4
LCBzMzIgY3VyLCB1MzIgc3opIHsgczMyIG5leHQgPSBTZGJtUmVjc09wclRvcEFkZHIodG9wLCB0
b3BJZHgsIGN1ciwgc3opLT5saXN0LmZyd2Q7IHJldHVybiBuZXh0O30gZXh0ZXJuIGlubGluZSBz
MzIgU2RibVJlY3NPcHJQcmV2KFNkYm1SZWNFbnR5KiB0b3AsIHMzMiB0b3BJZHgsIHMzMiBjdXIs
IHUzMiBzeikgeyBzMzIgcHJldiA9IFNkYm1SZWNzT3ByVG9wQWRkcih0b3AsIHRvcElkeCwgY3Vy
LCBzeiktPmxpc3QuYmt3ZDsgcmV0dXJuIHByZXY7fTsKCiNkZWZpbmUgU2RibVJlY3NUb3BBZGRy
KHRibEgsdGd0KSBTZGJtUmVjc09wclRvcEFkZHIoKHRibEgpLT5yZWNzLCBjU2RibVJlY0lkeE1p
biwgdGd0LCB0YmxILT5yZWNTeikKCiNkZWZpbmUgU2RibVJlY3NJbmRleCh0YmxILHRndFApIFNk
Ym1SZWNzT3BySW5kZXgoKHRibEgpLT5yZWNzLCBjU2RibVJlY0lkeE1pbiwgdGd0UCwgdGJsSC0+
cmVjU3opCgojZGVmaW5lIFNkYm1SZWNzSW5pdCh0YmxILHRndCkgU2RibVJlY3NPcHJJbml0KCh0
YmxIKS0+cmVjcywgY1NkYm1SZWNJZHhNaW4sIHRndCwgdGJsSC0+cmVjU3opCgoKZXh0ZXJuIGlu
bGluZSBTZGJtUmVjSWR4ClNkYm1SZWNzTmV4dEZyb21GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUq
IHRibEgsIFNkYm1SZWNJZHggdGd0SWR4KQp7CiAgICBTZGJtUmVjSWR4IHBudElkeDsKICAgIGlm
KHRndElkeCkgewogICAgICAgIHBudElkeCA9IFNkYm1SZWNzT3ByTmV4dCgodGJsSCktPnJlY3Ms
IDEsIHRndElkeCwgdGJsSC0+cmVjU3opOwogICAgfSBlbHNlIHsKICAgICAgICBwbnRJZHggPSB0
YmxILT5yZWNzQ29udG5yQXR0ci0+ZnJlZXM7CiAgICB9CiAgICByZXR1cm4gcG50SWR4Owp9Cgpl
eHRlcm4gaW5saW5lIFNkYm1SZWNJZHgKU2RibVJlY3NQcmV2RnJvbUZyZWVMaXN0KFNkYm1UYWJs
ZUhhbmRsZSogdGJsSCwgU2RibVJlY0lkeCB0Z3RJZHgpCnsKICAgIFNkYm1SZWNJZHggcG50SWR4
OwogICAgaWYodGd0SWR4KSB7CiAgICAgICAgcG50SWR4ID0gU2RibVJlY3NPcHJQcmV2KCh0YmxI
KS0+cmVjcywgMSwgdGd0SWR4LCB0YmxILT5yZWNTeik7CiAgICB9IGVsc2UgewogICAgICAgIHBu
dElkeCA9IHRibEgtPnJlY3NDb250bnJBdHRyLT5mcmVlczsKICAgIH0KICAgIHJldHVybiBwbnRJ
ZHg7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTZGJtUmVjc0luc2VydFRvRnJlZUxpc3QoU2RibVRh
YmxlSGFuZGxlKiB0YmxILCBTZGJtUmVjSWR4IHRndElkeCkKewogICAgU2RibVJlY0lkeCBwbnRJ
ZHggPSB0YmxILT5yZWNzQ29udG5yQXR0ci0+ZnJlZXM7CiAgICBpZihwbnRJZHgpIHsKICAgICAg
ICBTZGJtUmVjRW50eSogcmVjID0gKCh2b2lkICopMCk7CiAgICAgICAgU2RibUdldFJlY0VudHlQ
dHIodGJsSCwgcG50SWR4LCAmcmVjKTsKICAgICAgICBTZGJtUmVjc09wckluc2VydChyZWMsIHBu
dElkeCwgdGd0SWR4LCB0YmxILT5yZWNTeik7CiAgICB9IGVsc2UgewogICAgICAgIHRibEgtPnJl
Y3NDb250bnJBdHRyLT5mcmVlcyA9IHRndElkeDsKICAgIH0KfQoKZXh0ZXJuIGlubGluZSB2b2lk
ClNkYm1SZWNzQXBwZW5kVG9GcmVlTGlzdChTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1SZWNJ
ZHggdGd0SWR4KQp7CiAgICBTZGJtUmVjSWR4IHBudElkeCA9IHRibEgtPnJlY3NDb250bnJBdHRy
LT5mcmVlczsKCiAgICA7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJtUmVjRW50eSogcmVj
ID0gKCh2b2lkICopMCk7CiAgICAgICAgU2RibUdldFJlY0VudHlQdHIodGJsSCwgcG50SWR4LCAm
cmVjKTsKICAgICAgICBTZGJtUmVjc09wckFwcGVuZChyZWMsIHBudElkeCwgdGd0SWR4LCB0YmxI
LT5yZWNTeik7CiAgICB9IGVsc2UgewogICAgICAgIHRibEgtPnJlY3NDb250bnJBdHRyLT5mcmVl
cyA9IHRndElkeDsKICAgIH0KfQoKZXh0ZXJuIGlubGluZSB2b2lkClNkYm1SZWNzRGVsZXRlRnJv
bUZyZWVMaXN0KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0lkeCB0Z3RJZHgpCnsKICAg
IFNkYm1SZWNJZHggcG50SWR4ID0gdGJsSC0+cmVjc0NvbnRuckF0dHItPmZyZWVzOwogICAgaWYo
cG50SWR4KSB7CiAgICAgICAgU2RibVJlY0VudHkqIHJlYyA9ICgodm9pZCAqKTApOwogICAgICAg
IFNkYm1SZWNJZHggZGVsTmV4dDsKICAgICAgICBTZGJtR2V0UmVjRW50eVB0cih0YmxILCBwbnRJ
ZHgsICZyZWMpOwogICAgICAgIGRlbE5leHQgPSBTZGJtUmVjc09wckRlbGV0ZShyZWMsIHBudElk
eCwgdGd0SWR4LCB0YmxILT5yZWNTeik7CiAgICAgICAgOwogICAgICAgIGlmKHRndElkeCA9PSBk
ZWxOZXh0KQogICAgICAgICAgICBkZWxOZXh0ID0gMDsKICAgICAgICBpZih0Z3RJZHggPT0gcG50
SWR4KQogICAgICAgICAgICB0YmxILT5yZWNzQ29udG5yQXR0ci0+ZnJlZXMgPSBkZWxOZXh0Owog
ICAgICAgIDsKICAgIH0KfQoKZXh0ZXJuIGlubGluZSBTZGJtUmVjSWR4ClNkYm1SZWNzTmV4dEZy
b21BY3RpdmUoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtUmVjSWR4IHRndElkeCkKewogICAg
U2RibVJlY0lkeCBwbnRJZHg7CiAgICBpZih0Z3RJZHgpIHsKICAgICAgICBwbnRJZHggPSBTZGJt
UmVjc09wck5leHQoKHRibEgpLT5yZWNzLCAxLCB0Z3RJZHgsIHRibEgtPnJlY1N6KTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgcG50SWR4ID0gdGJsSC0+cmVjc0NvbnRuckF0dHItPmFjdGl2ZXM7CiAg
ICB9CiAgICA7CiAgICByZXR1cm4gcG50SWR4Owp9CgpleHRlcm4gaW5saW5lIFNkYm1SZWNJZHgK
U2RibVJlY3NQcmV2RnJvbUFjdGl2ZShTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1SZWNJZHgg
dGd0SWR4KQp7CiAgICBTZGJtUmVjSWR4IHBudElkeDsKICAgIGlmKHRndElkeCkgewogICAgICAg
IHBudElkeCA9IFNkYm1SZWNzT3ByUHJldigodGJsSCktPnJlY3MsIDEsIHRndElkeCwgdGJsSC0+
cmVjU3opOwogICAgfSBlbHNlIHsKICAgICAgICBwbnRJZHggPSB0YmxILT5yZWNzQ29udG5yQXR0
ci0+YWN0aXZlczsKICAgIH0KICAgIHJldHVybiBwbnRJZHg7Cn0KCmV4dGVybiBpbmxpbmUgdm9p
ZApTZGJtUmVjc0luc2VydFRvQWN0aXZlKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0lk
eCB0Z3RJZHgpCnsKICAgIFNkYm1SZWNJZHggcG50SWR4ID0gdGJsSC0+cmVjc0NvbnRuckF0dHIt
PmFjdGl2ZXM7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJtUmVjRW50eSogcmVjID0gKCh2
b2lkICopMCk7CiAgICAgICAgU2RibUdldFJlY0VudHlQdHIodGJsSCwgcG50SWR4LCAmcmVjKTsK
ICAgICAgICBTZGJtUmVjc09wckluc2VydChyZWMsIHBudElkeCwgdGd0SWR4LCB0YmxILT5yZWNT
eik7CiAgICB9IGVsc2UgewogICAgICAgIHRibEgtPnJlY3NDb250bnJBdHRyLT5hY3RpdmVzID0g
dGd0SWR4OwogICAgfQogICAgdGJsSC0+cmVjc0NvbnRuckF0dHItPm51bUFjdGl2ZXMgKys7Cn0K
CmV4dGVybiBpbmxpbmUgdm9pZApTZGJtUmVjc0FwcGVuZFRvQWN0aXZlKFNkYm1UYWJsZUhhbmRs
ZSogdGJsSCwgU2RibVJlY0lkeCB0Z3RJZHgpCnsKICAgIFNkYm1SZWNJZHggcG50SWR4ID0gdGJs
SC0+cmVjc0NvbnRuckF0dHItPmFjdGl2ZXM7CiAgICBpZihwbnRJZHgpIHsKICAgICAgICBTZGJt
UmVjRW50eSogcmVjID0gKCh2b2lkICopMCk7CiAgICAgICAgU2RibUdldFJlY0VudHlQdHIodGJs
SCwgcG50SWR4LCAmcmVjKTsKICAgICAgICBTZGJtUmVjc09wckFwcGVuZChyZWMsIHBudElkeCwg
dGd0SWR4LCB0YmxILT5yZWNTeik7CiAgICB9IGVsc2UgewogICAgICAgIHRibEgtPnJlY3NDb250
bnJBdHRyLT5hY3RpdmVzID0gdGd0SWR4OwogICAgfQogICAgdGJsSC0+cmVjc0NvbnRuckF0dHIt
Pm51bUFjdGl2ZXMgKys7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZApTZGJtUmVjc0RlbGV0ZUZyb21B
Y3RpdmUoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtUmVjSWR4IHRndElkeCkKewogICAgU2Ri
bVJlY0lkeCBwbnRJZHggPSB0YmxILT5yZWNzQ29udG5yQXR0ci0+YWN0aXZlczsKICAgIGlmKHBu
dElkeCkgewogICAgICAgIFNkYm1SZWNFbnR5KiByZWMgPSAoKHZvaWQgKikwKTsKICAgICAgICBT
ZGJtUmVjSWR4IGRlbE5leHQ7CiAgICAgICAgU2RibUdldFJlY0VudHlQdHIodGJsSCwgcG50SWR4
LCAmcmVjKTsKICAgICAgICBkZWxOZXh0ID0gU2RibVJlY3NPcHJEZWxldGUocmVjLCBwbnRJZHgs
IHRndElkeCwgdGJsSC0+cmVjU3opOwogICAgICAgIGlmKHRndElkeCA9PSBkZWxOZXh0KQogICAg
ICAgICAgICBkZWxOZXh0ID0gMDsKICAgICAgICBpZih0Z3RJZHggPT0gcG50SWR4KQogICAgICAg
ICAgICB0YmxILT5yZWNzQ29udG5yQXR0ci0+YWN0aXZlcyA9IGRlbE5leHQ7CiAgICAgICAgdGJs
SC0+cmVjc0NvbnRuckF0dHItPm51bUFjdGl2ZXMgLS07CiAgICB9Cn0KCmV4dGVybiBpbnQgU2Ri
bUV4cGFuZFJlY0FyZWEoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBOdW0gbmV3TnVtUmVjKTsKZXh0
ZXJuIGludCBTZGJtQWN0aXZlUmVjKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibVJlY0lkeCBp
ZHgsIFNkYm1SZWNFbnR5KiogcmVjUCk7CmV4dGVybiBpbnQgU2RibU5ld1JlYyhTZGJtVGFibGVI
YW5kbGUqIHRibEgsIFNkYm1SZWNFbnR5KiogcmVjUCk7CmV4dGVybiBpbnQgU2RibURlbFJlYyhT
ZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1SZWNFbnR5KiByZWMpOwpleHRlcm4gaW50IFNkYm1H
ZXRSZWNFbnR5KFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURhdGFJZCByZWNJZCwgU2RibVJl
Y0VudHkqKiByZWNQKTsKZXh0ZXJuIE51bSBTZGJtTGlzdFJlY0ludGVybmFsKFNkYm1UYWJsZUhh
bmRsZSogdGJsSCwgTnVtIG51bVJlY3MsIFNkYm1SZWNJZCByZWNzW10pOwoKCiMgNDAgIi4uLy4u
L3NyYy9zZGJtLnYwL3NkYm1mbGR1LmMiIDIKCnN0YXRpYyBpbnQKU2RibUZsZElkeEF0cmVlQnVp
bGQoQXJlYSBhcmcxc3QsIFN6IGJ5dGVTaXplLCB2b2lkKiogcHApCnsKICAgIGludCByZXRWYWw7
CiAgICBTZGJtVGFibGVIYW5kbGUqIHRibEg7CgogICAgOwogICAgdGJsSCA9IGFyZzFzdC5wdHI7
CgogICAgcmV0VmFsID0gU2RibVVubWFwVGJsUGxhaW4odGJsSCwgNSk7CiAgICBpZigoKHJldFZh
bCkgPj0gMCkpIHsKICAgICAgICByZXRWYWwgPSBTZGJtUmVzaXplVGJsUGxhaW4odGJsSCwgNSwg
Ynl0ZVNpemUpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRW
YWwgPSBTZGJtTWFwVGJsUGxhaW4odGJsSCwgNSk7CiAgICAgICAgICAgIGlmKHBwKSB7CiAgICAg
ICAgICAgICAgICAqcHAgPSB0YmxILT5pbmRleEFyZWE7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICB9CiAgICByZXR1cm4gKHJldFZhbCk7Cn0KCmludApTZGJtRmxkSWR4SW5pdChTZGJtVGFi
bGVIYW5kbGUqIHRibEgpCnsKICAgIGludCByZXRWYWwgPSAwOwogICAgQXJlYSBhcmc7CgogICAg
OwogICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDEpOwogICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgdTMyIG51bUZsZHMgPSB0YmxILT50YWJsZU1haW4tPm51bUZsZHM7
CiAgICAgICAgaW50IGkgPSAwLCBqOwogICAgICAgIE51bSBudW1UcmVlID0gbnVtRmxkcyArIDE7
CiAgICAgICAgdTMyIHRyZWVJZHNbbnVtVHJlZV07CgogICAgICAgIHRyZWVJZHNbaSsrXSA9IDE7
CiAgICAgICAgZm9yKGogPSAxOyBqIDw9IG51bUZsZHM7IGorKykgewogICAgICAgICAgICB0cmVl
SWRzW2krK10gPSAoKGopLTErMik7CiAgICAgICAgfQogICAgICAgIGFyZy5wdHIgPSB0YmxIOwog
ICAgICAgIHJldFZhbCA9IEF0cmVlQnVpbGROb2RlU2V0KFNkYm1GbGRJZHhBdHJlZUJ1aWxkLCBh
cmcsIG51bVRyZWUsIHRyZWVJZHMpOwogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQK
U2RibUZsZElkeEluaXQyKFNkYm1UYWJsZUhhbmRsZSogdGJsSCkKewogICAgaW50IHJldFZhbCA9
IDA7CgogICAgOwogICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDEpOwogICAgaWYo
KChyZXRWYWwpID49IDApKSB7CiAgICAgICAgdTMyIG51bUZsZHMgPSB0YmxILT50YWJsZU1haW4t
Pm51bUZsZHM7CiAgICAgICAgaW50IGk7CiAgICAgICAgZm9yKGkgPSAxOyBpIDw9IG51bUZsZHM7
IGkrKykgewogICAgICAgICAgICBTZGJtRmxkU3BlYyogZlNwZWMgPSAoKHZvaWQgKikwKTsKICAg
ICAgICAgICAgY29uc3QgU2RibUZsZFR5cGVJbmZvKiB0aTsKICAgICAgICAgICAgcmV0VmFsID0g
U2RibUdldEZsZFNwZWModGJsSCwgaSwgJmZTcGVjKTsKICAgICAgICAgICAgaWYoKChyZXRWYWwp
IDwgMCkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMtPmZsZFR5cGVdKTsKICAgICAgICAgICAgaWYodGkt
Pmhhc0F0cmVlSWR4KSB7CiAgICAgICAgICAgICAgICBmU3BlYy0+ZmxkSW5kZXhUcmVlID0gKChp
KS0xKzIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwp
Owp9CgpTZGJtRmxkRGF0YUlkeApTZGJtQWxsb2NOZXdGbGQoU2RibVRhYmxlSGFuZGxlKiB0YmxI
LCBTZGJtRmxkQm9keSoqIGZiUCkKewogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtVGFibGVG
bGRBdHRyKiBmYSA9IHRibEgtPmZsZHNDb250bnJBdHRyOwogICAgU2RibUZsZERhdGFJZHggaWR4
ID0gMDsKICAgIFNkYm1GbGRCb2R5KiBmYjsKCiAgICA7CiAgICBpZigoaWR4ID0gU2RibUZsZHNO
ZXh0RnJvbUZyZWVMaXN0KHRibEgsIDApKSA9PSAwKSB7CiAgICAgICAgTnVtIG51bUZsZHMgPSBm
YS0+bnVtRmxkcyArIDE7CgogICAgICAgIHJldFZhbCA9IFNkYm1SZXNpemVUYmxQbGFpbih0YmxI
LCAzLCBudW1GbGRzICogc2l6ZW9mKCpmYikpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkg
ewogICAgICAgICAgICBmYS0+bnVtRmxkcyA9IG51bUZsZHM7CiAgICAgICAgICAgIGlkeCA9IG51
bUZsZHM7CiAgICAgICAgICAgIHJldFZhbCA9IEFkYW1DaGFuZ2VTdWJmaWxlUGFyYW0odGJsSC0+
c3ViZmlsZXNbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGJsSC0+cGFyYW1zICsgMyk7CiAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAg
ICAgICAgICAgICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDMpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXRWYWwgPSBTZGJtTWFwVGJsUGxh
aW4odGJsSCwgMyk7CiAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgIFNk
Ym1GbGRzRGVsZXRlRnJvbUZyZWVMaXN0KHRibEgsIGlkeCk7CiAgICAgICAgICAgIHJldFZhbCA9
IEFkYW1DaGFuZ2VTdWJmaWxlUGFyYW0odGJsSC0+c3ViZmlsZXNbM10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsSC0+cGFyYW1zICsgMyk7CgogICAgICAg
IH0KICAgIH0KICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgIFNkYm1GbGRzT3BySW5p
dCgodGJsSCktPmZsZHMsIDEsIGlkeCk7CiAgICAgICAgcmV0VmFsID0gU2RibUdldEZsZEJvZHko
dGJsSCwgaWR4LCAmZmIpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAg
ICByZXRWYWwgPSBpZHg7CiAgICAgICAgICAgICpmYlAgPSBmYjsKICAgICAgICB9CiAgICB9CiAg
ICByZXR1cm4gKHJldFZhbCk7Cn0KIyAxNzUgIi4uLy4uL3NyYy9zZGJtLnYwL3NkYm1mbGR1LmMi
CmludApTZGJtRmxkSWR4QXRyZWVPcGVuKEFyZWEgb3BlbkFyZywgQXJlYSBhdXhBcmcsIHZvaWQq
KiBwcCkKewogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtVGFibGVIYW5kbGUqIHRibEg7CiAg
ICA7CiAgICB0YmxIID0gYXV4QXJnLnB0cjsKICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0
YmxILCA1KTsKICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgIHJldFZhbCA9IFNkYm1N
YXBUYmxQbGFpbih0YmxILCAzKTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAg
ICAgICAgaWYob3BlbkFyZy52YWwpIHsKICAgICAgICAgICAgICAgIHJldFZhbCA9IFNkYm1NYXBW
YXJEYXRhKCYodGJsSC0+Y29tbW9uKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoKChy
ZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICBpZihwcCkgewogICAgICAgICAgICAgICAg
ICAgIDsKCgogICAgICAgICAgICAgICAgICAgICpwcCA9IHRibEgtPmluZGV4QXJlYTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAocmV0
VmFsKTsKfQoKaW50ClNkYm1GbGRJZHhBdHJlZUNsb3NlKEFyZWEgb3BlbkFyZywgQXJlYSBhdXhB
cmcpCnsKICAgIGludCByZXRWYWwgPSAwOwoKICAgIDsKCgogICAgcmV0dXJuIChyZXRWYWwpOwp9
CgppbnQKU2RibUZsZElkeEF0cmVlR3JvdyhBcmVhIG9wZW5BcmcsIEFyZWEgYXV4QXJnLCBTeiBi
eXRlU2l6ZSwgdm9pZCoqIHBwKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIFNkYm1UYWJsZUhh
bmRsZSogdGJsSDsKCiAgICA7CiAgICB0YmxIID0gYXV4QXJnLnB0cjsKCiAgICByZXRWYWwgPSBT
ZGJtU2hpZnRUYmxQbGFpblNpemUodGJsSCwgNSwgYnl0ZVNpemUpOwogICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDUpOwogICAg
ICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBpZihwcCkgewogICAgICAgICAg
ICAgICAgKnBwID0gdGJsSC0+aW5kZXhBcmVhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
fQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2RibUZsZElkeEF0cmVlUmVkdWNlKEFyZWEg
b3BlbkFyZywgQXJlYSBhdXhBcmcsIFN6IGJ5dGVTaXplLCB2b2lkKiogcHApCnsKICAgIGludCBy
ZXRWYWwgPSAwOwogICAgU2RibVRhYmxlSGFuZGxlKiB0YmxIOwoKICAgIDsKICAgIHRibEggPSBh
dXhBcmcucHRyOwoKICAgIHJldFZhbCA9IFNkYm1TaGlmdFRibFBsYWluU2l6ZSh0YmxILCA1LCAt
Ynl0ZVNpemUpOwogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgcmV0VmFsID0gU2Ri
bU1hcFRibFBsYWluKHRibEgsIDUpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAg
ICAgICAgICBpZihwcCkgewogICAgICAgICAgICAgICAgKnBwID0gdGJsSC0+aW5kZXhBcmVhOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQK
U2RibUZsZE5hbWVBdHJlZUNvbXBhcmVCeU5hbWUoQXJlYSBjb21wYXJlQXJnLCBBcmVhIGF1eEFy
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgZGF0YTFJc0ludGVybmFsLCBB
cmVhNjQgZGF0YTEsIEFyZWE2NCBkYXRhMikKewogICAgU2RibVRhYmxlSGFuZGxlKiB0YmxIOwog
ICAgU2RibUZsZE5hbWVJZHhEYXRhIG5hbWUxOwogICAgU2RibUZsZE5hbWVJZHhEYXRhIG5hbWUy
OwogICAgY29uc3QgQ2hyKiBzdHIxOwogICAgY29uc3QgQ2hyKiBzdHIyOwogICAgaW50IHg7Cgog
ICAgOwogICAgdGJsSCA9IGF1eEFyZy5wdHI7CiAgICBpZihkYXRhMUlzSW50ZXJuYWwpIHsKICAg
ICAgICBuYW1lMS52YWx1ZSA9IGRhdGExOwogICAgICAgIHN0cjEgPSBTZGJtR2V0QWRkck9mVmFy
RGF0YSgmKHRibEgtPmNvbW1vbiksIG5hbWUxLngubmFtZVB0cik7CiAgICB9IGVsc2UgewogICAg
ICAgIHN0cjEgPSBkYXRhMS5wdHI7CiAgICB9CiAgICBuYW1lMi52YWx1ZSA9IGRhdGEyOwogICAg
c3RyMiA9IFNkYm1HZXRBZGRyT2ZWYXJEYXRhKCYodGJsSC0+Y29tbW9uKSwgbmFtZTIueC5uYW1l
UHRyKTsKICAgIHggPSBTZGJtU3RyY21wKHN0cjEsIHN0cjIpOwogICAgOwogICAgaWYoeCA+IDAp
IHsKICAgICAgICByZXR1cm4gKDEpOwogICAgfSBlbHNlIGlmKHggPCAwKSB7CiAgICAgICAgcmV0
dXJuICgoLTEpKTsKICAgIH0KICAgIHJldHVybiAoMCk7Cn0KCmNvbnN0IEF0cmVlQ2FsbGJhY2tz
IHNTZGJtRmxkTm9CeU5hbWVPcHJzID0gewogICAgLmNvbXBhcmVGdW5jID0gU2RibUZsZE5hbWVB
dHJlZUNvbXBhcmVCeU5hbWUsCiAgICAub3BlbkZ1bmMgPSBTZGJtRmxkSWR4QXRyZWVPcGVuLAog
ICAgLmNsb3NlRnVuYyA9IFNkYm1GbGRJZHhBdHJlZUNsb3NlLAogICAgLmdyb3dGdW5jID0gU2Ri
bUZsZElkeEF0cmVlR3JvdywKICAgIC5yZWR1Y2VGdW5jID0gU2RibUZsZElkeEF0cmVlUmVkdWNl
LAp9OwoKCmludApTZGJtRHVtcEZsZE5hbWVOb2RlKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgQXRy
ZWVJZHggbm9kZSwKICAgICAgICAgICAgICAgICAgICAgIEF0cmVlSWR4IHBudHJzWzVdLCBBcmVh
NjQqIGRhdGFQKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIEF0cmVlUmVxIHJlcTsKCiAgICA7
CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemVvZihyZXEpKSAm
JiAoc2l6ZW9mKHJlcSkpIDw9IDE2ID8gKChzaXplb2YocmVxKSkgPT0gMSA/ICh7IHZvaWQgKl9f
cyA9ICgmcmVxKTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAwOyBfX3M7IH0p
IDogKHsgdm9pZCAqX19zID0gKCZyZXEpOyB1bmlvbiB7IHVuc2lnbmVkIGludCBfX3VpOyB1bnNp
Z25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191YzsgfSAqX191ID0gX19zOyBf
X3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIChz
aXplb2YocmVxKSkpIHsgY2FzZSAxNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgo
Y2hhciAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDM6IF9f
dS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgMik7IF9fdS0+X191YyA9ICh1bnNpZ25l
ZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDEw
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAx
MDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2Ug
MjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7
IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNp
Z25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNl
IDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2
b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNh
c2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgY2FzZSAwOiBicmVhazsgfSBfX3M7
IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMCkgJiYgKDApID09ICdcMCcgPyAoeyB2b2lk
ICpfX3MgPSAoJnJlcSk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6ZW9mKHJlcSkp
OyBfX3M7IH0pIDogbWVtc2V0ICgmcmVxLCAwLCBzaXplb2YocmVxKSkpKSk7CiAgICByZXEub3By
cyA9ICZzU2RibUZsZE5vQnlOYW1lT3ByczsKICAgIHJlcS5vcGVuQXJnLnZhbCA9IDE7CiAgICBy
ZXEuYXV4QXJnLnB0ciA9IHRibEg7CiAgICByZXRWYWwgPSBBdHJlZU9wZW5UcmVlKCZyZXEsIDEs
IDApOwogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgcG50cnNbMF0gPSBBdHJlZUFi
b3ZlTm9kZSgmcmVxLCBub2RlKTsKICAgICAgICBwbnRyc1sxXSA9IEF0cmVlTGVmdE5vZGUoJnJl
cSwgbm9kZSk7CiAgICAgICAgcG50cnNbMl0gPSBBdHJlZVJpZ2h0Tm9kZSgmcmVxLCBub2RlKTsK
ICAgICAgICBwbnRyc1szXSA9IEF0cmVlUHJldk5vZGUoJnJlcSwgbm9kZSk7CiAgICAgICAgcG50
cnNbNF0gPSBBdHJlZU5leHROb2RlKCZyZXEsIG5vZGUpOwogICAgICAgIEF0cmVlR2V0RGF0YSgm
cmVxLCBub2RlLCBkYXRhUCk7CiAgICAgICAgQXRyZWVDbG9zZVRyZWUoJnJlcSk7CiAgICB9CiAg
ICByZXR1cm4gKHJldFZhbCk7Cn0KCmludApTZGJtR2V0RmxkU3BlY0J5TmFtZShTZGJtVGFibGVI
YW5kbGUqIHRibEgsIGNvbnN0IENociogbmFtZSwgU2RibUZsZFNwZWMqKiBmbGRTcGVjUCkKewog
ICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkTmFtZUlkeERhdGEgbmFtZURhdGE7CgogICAg
OwogICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDEpOwogICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgcmV0VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDUpOwogICAg
ICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRWYWwgPSBTZGJtTWFwVmFy
RGF0YSgmKHRibEgtPmNvbW1vbikpOwogICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsK
ICAgICAgICAgICAgICAgIEF0cmVlUmVxIHJlcTsKICAgICAgICAgICAgICAgIChfX2V4dGVuc2lv
bl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mKHJlcSkpICYmIChzaXplb2YocmVxKSkg
PD0gMTYgPyAoKHNpemVvZihyZXEpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZyZXEpOyAqKChf
X3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3Mg
PSAoJnJlcSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBf
X3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAo
X191aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZihyZXEpKSkgeyBj
YXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9f
ICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNp
Z25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAq
KSgoY2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJl
YWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0g
KHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3Ug
PSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsg
YnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikg
X191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19l
eHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsg
X19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YocmVxKSk7IF9fczsgfSkgOiBtZW1z
ZXQgKCZyZXEsIDAsIHNpemVvZihyZXEpKSkpKTsKICAgICAgICAgICAgICAgIHJlcS5vcHJzID0g
JnNTZGJtRmxkTm9CeU5hbWVPcHJzOwogICAgICAgICAgICAgICAgcmVxLm9wZW5BcmcudmFsID0g
MTsKICAgICAgICAgICAgICAgIHJlcS5hdXhBcmcucHRyID0gdGJsSDsKICAgICAgICAgICAgICAg
IHJldFZhbCA9IEF0cmVlT3BlblRyZWUoJnJlcSwgMSwgMCk7CiAgICAgICAgICAgICAgICBpZigo
KHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICBBcmVhNjQgZGF0YTsKICAgICAg
ICAgICAgICAgICAgICBBdHJlZUlkeCBoaXQ7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdHJD
bnN0ID0gbmFtZTsKICAgICAgICAgICAgICAgICAgICBoaXQgPSBBdHJlZUZpbmROb2RlKCZyZXEs
IGRhdGEpOwogICAgICAgICAgICAgICAgICAgIGlmKGhpdCAhPSAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIEF0cmVlR2V0RGF0YSgmcmVxLCBoaXQsICYobmFtZURhdGEudmFsdWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gU2RibUdldEZsZFNwZWModGJsSCwgbmFtZURh
dGEueC5mbGRObywgZmxkU3BlY1ApOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNUSU9OX18sICJObyBz
dWNoIEZpZWxkIE5hbWUgWyVzXSIsIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXRW
YWwgPSAoLSg0MTU4KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IEF0cmVlQ2xvc2VUcmVlKCZyZXEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2RibVNldEZsZERlZihT
ZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGREZWYqIGZsZERlZikKewogICAgaW50IHJldFZh
bCA9IDA7CiAgICBBZGFtUG9zIHg7CiAgICBTZGJtRmxkU3BlYyogZlNwZWM7CiAgICBTZGJtRmxk
U3BlYyogY2hlY2s7CiAgICA7CgogICAgaWYoZmxkRGVmLT5mbGRUeXBlID09IDB4ODApIHsKICAg
ICAgICBTZGJtRmxkRGVmTGlua0luZm8gbGk7CiAgICAgICAgU2RibVRhYmxlSGFuZGxlKiBsaW5r
VG87CiAgICAgICAgbGkud2hvbGUgPSBmbGREZWYtPmZsZEF1eFR5cGU7CiAgICAgICAgaWYobGku
ZGV0YWlsLmxpbmtUb1RhYmxlID49IHRibEgtPnRibE5vKSB7CiAgICAgICAgICAgIExvZ1B1dCg0
LCAiJXM6JSQiLCBfX0ZVTkNUSU9OX18sICJJbGxlZ2FsIHRhYmxlIE5vIEZvciBMaW5rIEZpZWxk
IFslZF0iLAogICAgICAgICAgICAgICAgICAgbGkuZGV0YWlsLmxpbmtUb1RhYmxlKTsKICAgICAg
ICAgICAgcmV0dXJuICgoLSg0MTc3KSkpOwogICAgICAgIH0KICAgICAgICBpZihsaS5kZXRhaWwu
bGlua1RvRmxkTm8gPD0gMCkgewogICAgICAgICAgICBMb2dQdXQoNCwgIiVzOiUkIiwgX19GVU5D
VElPTl9fLCAiSWxsZWdhbCBmaWVsZCBObyBGb3IgTGluayBGaWVsZCBbJWRdIiwKICAgICAgICAg
ICAgICAgICAgIGxpLmRldGFpbC5saW5rVG9GbGRObyk7CiAgICAgICAgICAgIHJldHVybiAoKC0o
NDE3OCkpKTsKICAgICAgICB9CiAgICAgICAgcmV0VmFsID0gU2RibU9wZW5UYWJsZUJ5QW5vdGhl
clRhYmxlKHRibEgsIGxpLmRldGFpbC5saW5rVG9UYWJsZSwgJmxpbmtUbyk7CiAgICAgICAgaWYo
KChyZXRWYWwpIDwgMCkpIHsKICAgICAgICAgICAgcmV0dXJuIChyZXRWYWwpOwogICAgICAgIH0K
ICAgICAgICByZXRWYWwgPSBTZGJtTWFwVGJsUGxhaW4obGlua1RvLCAxKTsKICAgICAgICBpZigo
KHJldFZhbCkgPCAwKSkgewogICAgICAgICAgICByZXR1cm4gKHJldFZhbCk7CiAgICAgICAgfQog
ICAgICAgIGlmKGxpLmRldGFpbC5saW5rVG9GbGRObyA8PSBsaW5rVG8tPnRhYmxlTWFpbi0+bnVt
RmxkcykgewogICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyhsaW5rVG8sIGxpLmRl
dGFpbC5saW5rVG9GbGRObywgJmNoZWNrKTsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDAp
KSB7CiAgICAgICAgICAgICAgICBpZihjaGVjay0+ZmxkVHlwZSA9PSAweDgwKSB7CiAgICAgICAg
ICAgICAgICAgICAgTG9nUHV0KDQsICIlczolJCIsIF9fRlVOQ1RJT05fXywgIk11bHRpcGxlIExp
bmsgRmllbGQgRmxkTm9bJWRdIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGkuZGV0YWls
LmxpbmtUb0ZsZE5vKTsKICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSAoLSg0MTc5KSk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBMb2dQdXQoNCwgIiVzOiUkIiwgX19GVU5DVElPTl9fLCAiSWxsZWdhbCBGbGQgTm8gRm9yIExp
bmsgRmllbGQgRmxkTm9bJWRdIiwKICAgICAgICAgICAgICAgICAgIGxpLmRldGFpbC5saW5rVG9G
bGRObyk7CiAgICAgICAgICAgIHJldFZhbCA9ICgtKDQxNzgpKTsKICAgICAgICB9CiAgICAgICAg
U2RibVVubWFwVGJsUGxhaW4obGlua1RvLCAxKTsKICAgICAgICBpZigoKHJldFZhbCkgPCAwKSkg
ewogICAgICAgICAgICByZXR1cm4gKHJldFZhbCk7CiAgICAgICAgfQogICAgfQogICAgcmV0VmFs
ID0gU2RibUdldEZsZFNwZWModGJsSCwgZmxkRGVmLT5mbGRObywgJmZTcGVjKTsKICAgIGlmKCgo
cmV0VmFsKSA+PSAwKSkgewogICAgICAgIGZTcGVjLT5mbGRObyA9IGZsZERlZi0+ZmxkTm87CiAg
ICAgICAgY2hlY2sgPSAoKHZvaWQgKikwKTsKICAgICAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3Bl
Y0J5TmFtZSh0YmxILCBmbGREZWYtPmZsZE5hbWUsICZjaGVjayk7CiAgICAgICAgaWYocmV0VmFs
ID09ICgtKDQxNTgpKSkgewogICAgICAgICAgICB4ID0gU2RibVB1dE5ld1N0cmluZygmKHRibEgt
PmNvbW1vbiksIGZsZERlZi0+ZmxkTmFtZSk7CiAgICAgICAgICAgIGlmKCgoeCkgPj0gMCkpIHsK
ICAgICAgICAgICAgICAgIEF0cmVlUmVxIHJlcTsKICAgICAgICAgICAgICAgIChfX2V4dGVuc2lv
bl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mKHJlcSkpICYmIChzaXplb2YocmVxKSkg
PD0gMTYgPyAoKHNpemVvZihyZXEpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZyZXEpOyAqKChf
X3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3Mg
PSAoJnJlcSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBf
X3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAo
X191aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZihyZXEpKSkgeyBj
YXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9f
ICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNp
Z25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAq
KSgoY2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJl
YWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0g
KHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3Ug
PSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsg
YnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikg
X191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19l
eHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsg
X19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YocmVxKSk7IF9fczsgfSkgOiBtZW1z
ZXQgKCZyZXEsIDAsIHNpemVvZihyZXEpKSkpKTsKICAgICAgICAgICAgICAgIHJlcS5vcHJzID0g
JnNTZGJtRmxkTm9CeU5hbWVPcHJzOwogICAgICAgICAgICAgICAgcmVxLm9wZW5BcmcudmFsID0g
MTsKICAgICAgICAgICAgICAgIHJlcS5hdXhBcmcucHRyID0gdGJsSDsKICAgICAgICAgICAgICAg
IHJldFZhbCA9IEF0cmVlT3BlblRyZWUoJnJlcSwgMSwgMSk7CiAgICAgICAgICAgICAgICBpZigo
KHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICBTZGJtRmxkTmFtZUlkeERhdGEg
bmFtZURhdGE7CiAgICAgICAgICAgICAgICAgICAgQXRyZWVJZHggYXRJZHg7CiAgICAgICAgICAg
ICAgICAgICAgbmFtZURhdGEueC5uYW1lUHRyID0geDsKICAgICAgICAgICAgICAgICAgICBuYW1l
RGF0YS54LmZsZE5vID0gZmxkRGVmLT5mbGRObzsKICAgICAgICAgICAgICAgICAgICByZXRWYWwg
PSBBdHJlZU5ld05vZGUoJnJlcSwgbmFtZURhdGEudmFsdWUsIDAsICZhdElkeCk7CiAgICAgICAg
ICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGZTcGVjLT5mbGROYW1lUHRyID0geDsKICAgICAgICAgICAgICAgICAgICAgICAgZlNwZWMtPmZs
ZFR5cGUgPSBmbGREZWYtPmZsZFR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGZTcGVjLT5m
bGRBdXhUeXBlID0gZmxkRGVmLT5mbGRBdXhUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICBm
U3BlYy0+ZmxkQXR0cnMgPSBmbGREZWYtPmZsZEF0dHJzOwogICAgICAgICAgICAgICAgICAgICAg
ICBmU3BlYy0+ZmxkTmFtZUlkeCA9IGF0SWR4OwogICAgICAgICAgICAgICAgICAgICAgICBmU3Bl
Yy0+ZmxkVXNlckluZm8gPSBmbGREZWYtPnVzZXJJbmZvOwogICAgICAgICAgICAgICAgICAgICAg
ICBmU3BlYy0+ZmxkVXNlckluZm9QYXR0ZXJuID0gZmxkRGVmLT51c2VySW5mb1BhdHRlcm47CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEF0cmVlQ2xvc2VUcmVlKCZy
ZXEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmKCgo
cmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBMb2dQdXQoNCwgIiVzOiUkIiwgX19GVU5DVElP
Tl9fLCAiRHVwbGljYXRpb24gRmllbGQgTmFtZSBbJXNdIiwgZmxkRGVmLT5mbGROYW1lKTsKICAg
ICAgICAgICAgcmV0VmFsID0gKC0oNDE1OSkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAo
cmV0VmFsKTsKfQoKZXh0ZXJuIGlubGluZSBpbnQKU2RibUdldFJlY0Zyb21EYXRhSWR4KFNkYm1U
YWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZFNwZWMqIGZTcGVjLAogICAgICAgICAgICAgICAgICAg
ICAgU2RibUZsZERhdGFJZHggZGF0YUlkeCwgU2RibUZsZERhdGFJZHggc3ViRGF0YUlkeCwKICAg
ICAgICAgICAgICAgICAgICAgIFNkYm1EYXRhSWQqIGRhdGFJZFApCnsKICAgIGludCByZXRWYWwg
PSAwOwoKICAgIDsKCiAgICBpZihmU3BlYy0+ZmxkVHlwZSAhPSAweDgwKSB7CiAgICAgICAgU2Ri
bUZsZEJvZHkqIGZsZDsKICAgICAgICByZXRWYWwgPSBTZGJtR2V0RmxkQm9keSh0YmxILCBkYXRh
SWR4LCAmZmxkKTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgU2Ri
bVJlY0VudHkqIHJlYzsKICAgICAgICAgICAgcmV0VmFsID0gU2RibUdldFJlY0VudHlQdHJXaXRo
Q2hlY2sodGJsSCwgZmxkLT5yZWNJZHgsICZyZWMpOwogICAgICAgICAgICBpZigoKHJldFZhbCkg
Pj0gMCkpIHsKICAgICAgICAgICAgICAgIGlmKGRhdGFJZFApIHsKICAgICAgICAgICAgICAgICAg
ICBTZGJtRGF0YUlkIGRhdGFJZCA9IHJlYy0+cmVjSWQ7CiAgICAgICAgICAgICAgICAgICAgZGF0
YUlkLmkudGFibGVObyA9IHRibEgtPnRibE5vOwogICAgICAgICAgICAgICAgICAgIGRhdGFJZC5p
LmZsZE5vID0gZlNwZWMtPmZsZE5vOwogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAg
ICAgICAgICAqZGF0YUlkUCA9IGRhdGFJZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgU2RibVRhYmxlSGFuZGxlKiB0b1RibCA9
ICgodm9pZCAqKTApOwogICAgICAgIFNkYm1GbGREZWZMaW5rSW5mbyBsaURlZjsKCiAgICAgICAg
bGlEZWYud2hvbGUgPSBmU3BlYy0+ZmxkQXV4VHlwZTsKICAgICAgICByZXRWYWwgPSBTZGJtT3Bl
blRhYmxlQnlBbm90aGVyVGFibGUodGJsSCwgbGlEZWYuZGV0YWlsLmxpbmtUb1RhYmxlLCAmdG9U
YmwpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBTZGJtTGlua2Vk
RmxkSW5mbyogbGZpID0gKCh2b2lkICopMCk7CgogICAgICAgICAgICByZXRWYWwgPSBTZGJtTWFw
VGJsUGxhaW4odG9UYmwsIDYpOwogICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAg
ICAgICAgICAgICAgIFNkYm1HZXRMaW5rZWRGbGRJbmZvKHRvVGJsLCBzdWJEYXRhSWR4LCAmbGZp
KTsKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGlmKGxmaSkgewogICAgICAgICAg
ICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAqZGF0YUlkUCA9IGxmaS0+bGlua0Zyb207
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU2RibVJlbGVhc2VU
YWJsZUhhbmRsZSh0b1RibCwgMCk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwp
Owp9CgppbnQKU2RibVNlYXJjaERhdGEoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBjb25zdCBTZGJt
UXVlcnlDb25kKiBxdWVyeSwKICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHgqIGRhdGFJZHhQ
LCBTZGJtRGF0YUlkKiBkYXRhUCwgU2RibUZsZERhdGFJZHgqIHN1YkRhdGFJZHhQKQp7CiAgICBp
bnQgcmV0VmFsID0gMDsKICAgIFNkYm1GbGRTcGVjKiBmU3BlYyA9ICgodm9pZCAqKTApOwogICAg
U2RibUZsZE5vIGZsZE5vID0gcXVlcnktPmZsZE5vOwogICAgOwogICAgcmV0VmFsID0gU2RibUdl
dEZsZFNwZWModGJsSCwgZmxkTm8sICZmU3BlYyk7CiAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsK
ICAgICAgICBjb25zdCBTZGJtRmxkVHlwZUluZm8qIHRpOwogICAgICAgIGlmKGZTcGVjLT5mbGRU
eXBlICE9IDB4ODApIHsKICAgICAgICAgICAgaWYocXVlcnktPmNvbmRWYWx1ZS5mbGRUeXBlID09
IDApIHsKICAgICAgICAgICAgICAgIHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMtPmZsZFR5cGVd
KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRpID0gKGdTZGJtRmxkVHlw
ZXNbcXVlcnktPmNvbmRWYWx1ZS5mbGRUeXBlXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICB0aSA9IChnU2RibUZsZFR5cGVzW2ZTcGVjLT5mbGRUeXBlXSk7CiAg
ICAgICAgfQogICAgICAgIDsKICAgICAgICBpZigodGkpICYmCiAgICAgICAgICAgKChmU3BlYy0+
ZmxkVHlwZSA9PSAweDgwKSB8fAogICAgICAgICAgICAoKHRpLT5mbXRUeXBlID09IGZTcGVjLT5m
bGRUeXBlKSAmJiAodGktPnNlYXJjaERhdGEpICYmICghIHRpLT5ub25lU29ydGVkKSkpKSB7CiAg
ICAgICAgICAgIGlmKChxdWVyeS0+Y29uZFR5cGUgJiB0aS0+Y29uZE1hc2spICE9IDApIHsKICAg
ICAgICAgICAgICAgIGlmKHRpLT5zZWFyY2hEYXRhICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAg
ICAgICAgICAgICAgU2RibUZsZERhdGFJZHggZGF0YUlkeDsKICAgICAgICAgICAgICAgICAgICBT
ZGJtRmxkRGF0YUlkeCBzdWJEYXRhSWR4OwogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg
ICAgICAgICAgICByZXRWYWwgPSAoKih0aS0+c2VhcmNoRGF0YSkpKHRibEgsIGZTcGVjLCB0aSwg
cXVlcnksICZkYXRhSWR4LCAmc3ViRGF0YUlkeCk7CiAgICAgICAgICAgICAgICAgICAgaWYoKChy
ZXRWYWwpID49IDApICYmIChyZXRWYWwgPT0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0VmFsID0gU2RibUdldFJlY0Zyb21EYXRhSWR4KHRibEgsIGZTcGVjLCBkYXRhSWR4LCBzdWJE
YXRhSWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVApOwogICAgICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGFJZHhQKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpkYXRhSWR4UCA9IGRhdGFJZHg7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZihzdWJEYXRhSWR4UCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3ViRGF0YUlkeFAgPSBzdWJEYXRhSWR4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0VmFsID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgTG9nUHV0KDQs
ICIlczolJCIsIF9fRlVOQ1RJT05fXywgIklsbGVnYWwgU2VhcmNoIFRhcmdldCIpOwogICAgICAg
ICAgICAgICAgICAgIHJldFZhbCA9ICgtKDQxNjApKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNU
SU9OX18sICJJbGxlZ2FsIFF1ZXJyeSBDb25kaXRpb24iKTsKICAgICAgICAgICAgICAgIHJldFZh
bCA9ICgtKDQxNzMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IExvZ1B1dCg0LCAiJXM6JSQiLCBfX0ZVTkNUSU9OX18sICJJbGxlZ2FsIFNlYXJjaCBUYXJnZXQi
KTsKICAgICAgICAgICAgcmV0VmFsID0gKC0oNDE2MCkpOwogICAgICAgIH0KICAgIH0KICAgIHJl
dHVybiAocmV0VmFsKTsKfQoKaW50ClNkYm1LaWxsQWxsRGF0YShTZGJtVGFibGVIYW5kbGUqIHRi
bEgsIFNkYm1EYXRhSWQgZGF0YUlkKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIFNkYm1GbGRT
cGVjKiBmU3BlYyA9ICgodm9pZCAqKTApOwogICAgU2RibUZsZE5vIGZsZE5vID0gZGF0YUlkLmku
ZmxkTm87CiAgICA7CgogICAgZGF0YUlkLmkuZmxkTm8gPSAwOwogICAgcmV0VmFsID0gU2RibUdl
dEZsZFNwZWModGJsSCwgZmxkTm8sICZmU3BlYyk7CiAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsK
ICAgICAgICBjb25zdCBTZGJtRmxkVHlwZUluZm8qIHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMt
PmZsZFR5cGVdKTsKICAgICAgICBTZGJtUmVjRW50eSogcmVjID0gKCh2b2lkICopMCk7CiAgICAg
ICAgU2RibUZsZEJvZHkqIGZsZDsKCiAgICAgICAgcmV0VmFsID0gU2RibUdldFJlY0VudHkodGJs
SCwgZGF0YUlkLCAmcmVjKTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAg
ICAgQXRyZWVSZXEgcmVxOwogICAgICAgICAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKHNpemVvZihyZXEpKSAmJiAoc2l6ZW9mKHJlcSkpIDw9IDE2ID8gKChzaXplb2Yo
cmVxKSkgPT0gMSA/ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsgKigoX191aW50OF90ICopIF9fcykg
PSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKCZyZXEpOyB1bmlvbiB7
IHVuc2lnbmVkIGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNo
YXIgX191YzsgfSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBz
d2l0Y2ggKCh1bnNpZ25lZCBpbnQpIChzaXplb2YocmVxKSkpIHsgY2FzZSAxNTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFy
ICopIF9fdSArIDQpOyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBf
X2MgKiAweDAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsg
Mik7IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChj
aGFyICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBf
X3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDY6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKiko
KGNoYXIgKikgX191ICsgNCk7IGNhc2UgMjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBp
bnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNh
c2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBj
YXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICop
KChjaGFyICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDg6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQg
KikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsgY2FzZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMCkg
JiYgKDApID09ICdcMCcgPyAoeyB2b2lkICpfX3MgPSAoJnJlcSk7IF9fYnVpbHRpbl9tZW1zZXQg
KF9fcywgJ1wwJywgc2l6ZW9mKHJlcSkpOyBfX3M7IH0pIDogbWVtc2V0ICgmcmVxLCAwLCBzaXpl
b2YocmVxKSkpKSk7CiAgICAgICAgICAgIGlmKGZTcGVjLT5mbGRJbmRleFRyZWUpIHsKICAgICAg
ICAgICAgICAgIHJlcS5hdXhBcmcucHRyID0gdGJsSDsKICAgICAgICAgICAgICAgIHJlcS5vcHJz
ID0gdGktPmF0cmVlT3ByczsKICAgICAgICAgICAgICAgIHJldFZhbCA9IEF0cmVlT3BlblRyZWUo
JnJlcSwgZlNwZWMtPmZsZEluZGV4VHJlZSwgZlNwZWMtPmZsZEluZGV4VHJlZSk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICBT
ZGJtRmxkRGF0YUlkeCB4aTsKICAgICAgICAgICAgICAgIHdoaWxlKCh4aSA9IFNkYm1GbGRzTmV4
dEZyb21SZWModGJsSCwgcmVjLCBmbGRObywgMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0
VmFsID0gU2RibUdldEZsZEJvZHkodGJsSCwgeGksICZmbGQpOwogICAgICAgICAgICAgICAgICAg
IGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihmU3BlYy0+
ZmxkSW5kZXhUcmVlKSB7CgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0g
QXRyZWVEZWxOb2RlQnlJZHgoJnJlcSwgZmxkLT5pbmRleE5vZGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gKCoodGktPmtpbGxEYXRhKSkodGJs
SCwgZlNwZWMsICYoZmxkLT5jb250ZW50KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJt
Rmxkc0RlbGV0ZUZyb21SZWModGJsSCwgcmVjLCBmbGRObywgeGkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNkYm1GbGRzT3BySW5pdCgodGJsSCktPmZsZHMsIDEsIHhpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkc0FwcGVuZFRvRnJlZUxpc3QodGJs
SCwgeGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRzU29ydERlbGV0
ZUZyb21SZWModGJsSCwgcmVjLCBmbGRObywgeGkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNkYm1GbGRzU29ydE9wckluaXQoKHRibEgpLT5mbGRzLCAxLCB4aSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpIDwgMCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoZlNwZWMtPmZsZEluZGV4VHJlZSkgewogICAg
ICAgICAgICAgICAgICAgIEF0cmVlQ2xvc2VUcmVlKCZyZXEpOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgU2RibVVwZGF0ZUxvZ0NsZWFyKHRibEgsIHJlYywgZlNwZWMpOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2Ri
bUtpbGxEYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURhdGFJZCBkYXRhSWQsIFNkYm1W
ZWNGbGRJZHggdmVjSWR4KQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIFNkYm1GbGRTcGVjKiBm
U3BlYyA9ICgodm9pZCAqKTApOwogICAgU2RibUZsZE5vIGZsZE5vID0gZGF0YUlkLmkuZmxkTm87
CiAgICA7CgogICAgZGF0YUlkLmkuZmxkTm8gPSAwOwogICAgcmV0VmFsID0gU2RibUdldEZsZFNw
ZWModGJsSCwgZmxkTm8sICZmU3BlYyk7CiAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAg
ICBjb25zdCBTZGJtRmxkVHlwZUluZm8qIHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMtPmZsZFR5
cGVdKTsKICAgICAgICBTZGJtUmVjRW50eSogcmVjOwogICAgICAgIFNkYm1GbGRCb2R5KiBmbGQ7
CgogICAgICAgIHJldFZhbCA9IFNkYm1HZXRSZWNFbnR5KHRibEgsIGRhdGFJZCwgJnJlYyk7CiAg
ICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4IHhp
OwogICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBkaSA9IFNkYm1HZXRGbGRXaXRoVmVjSWR4KHRi
bEgsIHJlYywgZmxkTm8sIHZlY0lkeCwgJnhpKTsKICAgICAgICAgICAgaWYoKChkaSkgPj0gMCkp
IHsKICAgICAgICAgICAgICAgIGlmKGRpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICByZXRW
YWwgPSBTZGJtR2V0RmxkQm9keSh0YmxILCBkaSwgJmZsZCk7CiAgICAgICAgICAgICAgICAgICAg
aWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0cmVlUmVxIHJl
cTsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25z
dGFudF9wIChzaXplb2YocmVxKSkgJiYgKHNpemVvZihyZXEpKSA8PSAxNiA/ICgoc2l6ZW9mKHJl
cSkpID09IDEgPyAoeyB2b2lkICpfX3MgPSAoJnJlcSk7ICooKF9fdWludDhfdCAqKSBfX3MpID0g
KF9fdWludDhfdCkgMDsgX19zOyB9KSA6ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsgdW5pb24geyB1
bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFy
IF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dp
dGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mKHJlcSkpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikg
X191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNzogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19j
ICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDIp
OyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChj
aGFyICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50
KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNl
IDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2Fz
ZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgo
Y2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA4OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICop
KChjaGFyICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKDApICYm
ICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKCZyZXEpOyBfX2J1aWx0aW5fbWVtc2V0IChf
X3MsICdcMCcsIHNpemVvZihyZXEpKTsgX19zOyB9KSA6IG1lbXNldCAoJnJlcSwgMCwgc2l6ZW9m
KHJlcSkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihmU3BlYy0+ZmxkSW5kZXhUcmVl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEuYXV4QXJnLnB0ciA9IHRibEg7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub3BycyA9IHRpLT5hdHJlZU9wcnM7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBBdHJlZU9wZW5UcmVlKCZyZXEsIGZTcGVj
LT5mbGRJbmRleFRyZWUsIGZTcGVjLT5mbGRJbmRleFRyZWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYoZlNwZWMtPmZsZEluZGV4VHJlZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IEF0cmVlRGVsTm9kZUJ5SWR4KCZyZXEs
IGZsZC0+aW5kZXhOb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHJlZUNs
b3NlVHJlZSgmcmVxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldFZhbCA9ICgqKHRpLT5raWxsRGF0YSkpKHRibEgsIGZTcGVjLCAm
KGZsZC0+Y29udGVudCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZHNEZWxldGVG
cm9tUmVjKHRibEgsIHJlYywgZmxkTm8sIGRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZGJtRmxkc09wckluaXQoKHRibEgpLT5mbGRzLCAxLCBkaSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2RibUZsZHNBcHBlbmRUb0ZyZWVMaXN0KHRibEgsIGRpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkc1NvcnREZWxldGVGcm9tUmVjKHRi
bEgsIHJlYywgZmxkTm8sIGRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJt
Rmxkc1NvcnRPcHJJbml0KCh0YmxIKS0+ZmxkcywgMSwgZGkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibVVwZGF0ZUxvZ0VyYXNl
KHRibEgsIHJlYywgZlNwZWMsIHZlY0lkeCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICByZXRWYWwgPSBkaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
IH0KICAgIHJldHVybiAocmV0VmFsKTsKfQoKaW50ClNkYm1TZXREYXRhKFNkYm1UYWJsZUhhbmRs
ZSogdGJsSCwgU2RibURhdGFJZCBkYXRhSWQsIFNkYm1GbGRSZWYqIHRndERhdGFQKQp7CiAgICBp
bnQgcmV0VmFsID0gMDsKICAgIFNkYm1GbGRTcGVjKiBmU3BlYyA9ICgodm9pZCAqKTApOwogICAg
U2RibUZsZE5vIGZsZE5vID0gZGF0YUlkLmkuZmxkTm87CiAgICBTZGJtRmxkUmVmIHRndERhdGEg
PSAqdGd0RGF0YVA7CiAgICBzMzIgZlR5cGUgPSB0Z3REYXRhLmZsZFR5cGU7CgogICAgOwogICAg
ZGF0YUlkLmkuZmxkTm8gPSAwOwogICAgcmV0VmFsID0gU2RibUdldEZsZFNwZWModGJsSCwgZmxk
Tm8sICZmU3BlYyk7CiAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICBjb25zdCBTZGJt
RmxkVHlwZUluZm8qIHRpOwogICAgICAgIFNkYm1SZWNFbnR5KiByZWM7CiAgICAgICAgQXRyZWVS
ZXEgcmVxOwogICAgICAgIGlmKGZUeXBlID09IDApIHsKICAgICAgICAgICAgZlR5cGUgPSBmU3Bl
Yy0+ZmxkVHlwZTsKICAgICAgICB9CiAgICAgICAgdGkgPSAoZ1NkYm1GbGRUeXBlc1tmVHlwZV0p
OwogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mKHJl
cSkpICYmIChzaXplb2YocmVxKSkgPD0gMTYgPyAoKHNpemVvZihyZXEpKSA9PSAxID8gKHsgdm9p
ZCAqX19zID0gKCZyZXEpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9f
czsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJnJlcSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7
IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBf
X3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGlu
dCkgKHNpemVvZihyZXEpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDEx
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAx
MDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2Ug
MzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVu
c2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNh
c2UgMTA6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsg
Y2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBi
cmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBf
X2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9f
dSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0g
KHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7
IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9
IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7
IHZvaWQgKl9fcyA9ICgmcmVxKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXplb2Yo
cmVxKSk7IF9fczsgfSkgOiBtZW1zZXQgKCZyZXEsIDAsIHNpemVvZihyZXEpKSkpKTsKICAgICAg
ICBpZihmU3BlYy0+ZmxkSW5kZXhUcmVlKSB7CiAgICAgICAgICAgIHJlcS5hdXhBcmcucHRyID0g
dGJsSDsKICAgICAgICAgICAgcmVxLm9wcnMgPSB0aS0+YXRyZWVPcHJzOwogICAgICAgICAgICBy
ZXRWYWwgPSBBdHJlZU9wZW5UcmVlKCZyZXEsIGZTcGVjLT5mbGRJbmRleFRyZWUsIDApOwogICAg
ICAgIH0KICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgcmV0VmFsID0g
U2RibUdldFJlY0VudHkodGJsSCwgZGF0YUlkLCAmcmVjKTsKICAgICAgICAgICAgaWYoKChyZXRW
YWwpID49IDApKSB7CiAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBkaSA9IDAsIG5ldyA9
IDAsIGluc0lkeCA9IDA7CiAgICAgICAgICAgICAgICBTZGJtVmVjRmxkSWR4IHZpID0gdGd0RGF0
YS52ZWNJZHg7CiAgICAgICAgICAgICAgICBTZGJtRmxkQm9keSogZmxkOwogICAgICAgICAgICAg
ICAgaWYodmkpIHsKICAgICAgICAgICAgICAgICAgICBkaSA9IFNkYm1HZXRGbGRXaXRoVmVjSWR4
KHRibEgsIHJlYywgZmxkTm8sIHZpLCAmaW5zSWR4KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgdmkgPSBTZGJtR2V0TmV3VmVjSWR4KHRibEgsIHJlYywgZmxk
Tm8sICZpbnNJZHgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgaWYoISBkaSkgewogICAgICAgICAgICAgICAgICAgIGRpID0gbmV3ID0gU2RibUFs
bG9jTmV3RmxkKHRibEgsICZmbGQpOwogICAgICAgICAgICAgICAgICAgIGlmKCgoZGkpID49IDAp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRzT3BySW5pdCgodGJsSCktPmZsZHMs
IDEsIGRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZmxkLT5yZWNJZHggPSBkYXRhSWQuaS5y
ZWNJZHg7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsZC0+ZmxkTm8gPSBmbGRObzsKICAgICAg
ICAgICAgICAgICAgICAgICAgZmxkLT52ZWN0b3JJZHggPSB2aTsKICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldFZhbCA9IGRpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gU2RibUdldEZsZEJvZHkodGJsSCwg
ZGksICZmbGQpOwogICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSAoKih0aS0+Y29tcGFyZURhdGFFeHRlcm5hbCkp
KHRibEgsIGZTcGVjLCAmdGd0RGF0YSwgZGkpOwogICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYocmV0VmFsID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZihmU3BlYy0+ZmxkSW5kZXhUcmVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEF0cmVlQ2xvc2VUcmVlKCZyZXEpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXcpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZHNBcHBlbmRUb0ZyZWVMaXN0
KHRibEgsIG5ldyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocmV0VmFsKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJldFZhbCAhPSAyKSB7
CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmU3BlYy0+ZmxkSW5kZXhUcmVl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IEF0cmVlRGVs
Tm9kZUJ5SWR4KCZyZXEsIGZsZC0+aW5kZXhOb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpID49
IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9ICgqKHRp
LT5raWxsRGF0YSkpKHRibEgsIGZTcGVjLCAmKGZsZC0+Y29udGVudCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJt
Rmxkc1NvcnREZWxldGVGcm9tUmVjKHRibEgsIHJlYywgZmxkTm8sIGRpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+
PSAwKSkgewogICAgICAgICAgICAgICAgICAgIFNkYm1GbGRJZHhEYXRhIGlkeERhdGE7CiAgICAg
ICAgICAgICAgICAgICAgaWYoZlNwZWMtPmZsZEluZGV4VHJlZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICBBdHJlZUNsb3NlVHJlZSgmcmVxKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgcmV0VmFsID0gKCoodGktPm1ha2VEYXRhKSkodGJsSCwgJnRndERhdGEs
IGZTcGVjLCBkYXRhSWQsIGRpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYoZmxkLT5jb250ZW50KSwgJmlkeERhdGEpOwogICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYoZlNwZWMtPmZsZEluZGV4VHJlZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YocmVx
KSkgJiYgKHNpemVvZihyZXEpKSA8PSAxNiA/ICgoc2l6ZW9mKHJlcSkpID09IDEgPyAoeyB2b2lk
ICpfX3MgPSAoJnJlcSk7ICooKF9fdWludDhfdCAqKSBfX3MpID0gKF9fdWludDhfdCkgMDsgX19z
OyB9KSA6ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsg
dW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9f
czsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50
KSAoc2l6ZW9mKHJlcSkpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTE6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQg
KikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAz
OiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5z
aWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2Fz
ZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBj
YXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJy
ZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAo
dW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsg
Y2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0g
X19zOyB9KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsg
dm9pZCAqX19zID0gKCZyZXEpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3MsICdcMCcsIHNpemVvZihy
ZXEpKTsgX19zOyB9KSA6IG1lbXNldCAoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxLmF1eEFyZy5wdHIgPSB0YmxIOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxLm9wcnMgPSB0aS0+YXRyZWVPcHJzOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0VmFsID0gQXRyZWVPcGVuVHJlZSgmcmVxLCBmU3BlYy0+ZmxkSW5kZXhU
cmVlLCBmU3BlYy0+ZmxkSW5kZXhUcmVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
KCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZh
bCA9IEF0cmVlTmV3Tm9kZSgmcmVxLCBpZHhEYXRhLnZhbHVlLCAxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGZsZC0+aW5kZXhOb2RlKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpID49
IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluc0lkeCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2RibUZsZEJvZHkqIGZsZHggPSAoKHZvaWQgKikwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IFNkYm1HZXRGbGRCb2R5KHRibEgsIGluc0lkeCwg
JmZsZHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggc29ydFRvcDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtVXBkYXRlTG9nU2V0KHRibEgsIHJl
YywgZlNwZWMsIGZsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZsZHgtPnZlY3RvcklkeCA8
IHZpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkc09w
ckluc2VydChmbGR4LCBpbnNJZHgsIGRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNk
Ym1GbGRzT3ByQXBwZW5kKGZsZHgsIGluc0lkeCwgZGkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjLT5mbGRQdHJzW2ZsZE5vLTFdLm51bUVsbXMgKys7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZihyZWMtPmZsZFB0cnNbZmxkTm8tMV0udmVjSWR4TGlzdCA9
PSBpbnNJZHgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmxkeC0+dmVjdG9ySWR4ID4gdmkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYy0+ZmxkUHRyc1tmbGRO
by0xXS52ZWNJZHhMaXN0ID0gZGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2RibUZsZHNTb3J0T3BySW5pdCgodGJsSCktPmZsZHMsIDEsIGRpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0VG9wID0gU2RibUZsZHNTb3J0TmV4dEZy
b21SZWModGJsSCwgcmVjLCBmbGRObywgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNvcnRUb3ApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zSWR4ID0gc29ydFRvcDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNjID0gKCoodGktPmNvbXBhcmVEYXRhSW50ZXJuYWwpKSh0YmxI
LCBkaSwgaW5zSWR4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNjID09IDMpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNJZHggPSBTZGJtRmxk
c1NvcnROZXh0RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
c0lkeCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IHdoaWxlIChzb3J0VG9wICE9IGluc0lkeCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNkYm1HZXRGbGRCb2R5KHRibEgsIGluc0lkeCwgJmZsZHgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkc1NvcnRPcHJBcHBl
bmQoZmxkeCwgaW5zSWR4LCBkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkc1NvcnRJbnNlcnRUb1JlYyh0YmxILCByZWMs
IGZsZE5vLCBkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjLT5mbGRQdHJzW2ZsZE5vLTFdLnZlY0lkeExpc3Qg
PSBkaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYy0+ZmxkUHRyc1tmbGROby0xXS5z
b3J0ZWRMaXN0ID0gZGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWMtPmZsZFB0cnNb
ZmxkTm8tMV0ubnVtRWxtcyArKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1VcGRh
dGVMb2dTZXQodGJsSCwgcmVjLCBmU3BlYywgZmxkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNkYm1GbGRzU29ydE9wckluaXQoKHRibEgpLT5mbGRzLCAxLCBkaSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZmxkLT5tb2RpZnlUaW1lID0g
QXRpbWVHZXQoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICBpZihuZXcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRzQXBw
ZW5kVG9GcmVlTGlzdCh0YmxILCBuZXcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGlmKGZTcGVjLT5mbGRJbmRleFRyZWUpIHsKICAgICAgICAgICAgICAgIEF0cmVlQ2xvc2VU
cmVlKCZyZXEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoKChyZXRWYWwp
IDwgMCkpIHsKICAgICAgICBMb2dQdXQoNCwgIlNkYm1TZXREYXRhOiBmYWlsZWQoJWQpIGluIFRh
YmxlKCV1KSBSZWNvcmQoMHgleCwweCV4KSBGaWVsZCgldSlcbiIsCiAgICAgICAgICAgICAgIHJl
dFZhbCwgdGJsSC0+dGJsTm8sIGRhdGFJZC5pLnJlY0lkeCwgZGF0YUlkLmkucmV2aXNpb24sIGZs
ZE5vKTsKICAgIH0KICAgIHJldHVybiAocmV0VmFsKTsKfQoKaW50ClNkYm1HZXREYXRhcyhTZGJt
VGFibGVIYW5kbGUqIHRibEgsIFNkYm1EYXRhSWQgZGF0YUlkLAogICAgICAgICAgICAgTnVtIG51
bURhdGFBcmVhcywgU2RibUZsZFJlZiBmbGREYXRhc1tdLCBCb29sIGluc2lkZUFsbG9jYXRpb24p
CnsKICAgIE51bSByZXRWYWwgPSAwOwogICAgczMyIG1heElkeCA9IDA7CiAgICBTZGJtRmxkU3Bl
YyogZlNwZWMgPSAoKHZvaWQgKikwKTsKICAgIFNkYm1GbGRObyBmbGRObyA9IGRhdGFJZC5pLmZs
ZE5vOwoKICAgIDsKICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6
ZW9mKFNkYm1GbGRSZWYpICogbnVtRGF0YUFyZWFzKSAmJiAoc2l6ZW9mKFNkYm1GbGRSZWYpICog
bnVtRGF0YUFyZWFzKSA8PSAxNiA/ICgoc2l6ZW9mKFNkYm1GbGRSZWYpICogbnVtRGF0YUFyZWFz
KSA9PSAxID8gKHsgdm9pZCAqX19zID0gKGZsZERhdGFzKTsgKigoX191aW50OF90ICopIF9fcykg
PSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKGZsZERhdGFzKTsgdW5p
b24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25l
ZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgw
KTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mKFNkYm1GbGRSZWYpICogbnVtRGF0YUFy
ZWFzKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICop
IF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3Vz
aSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIp
IF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3Ut
Pl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAx
MzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9p
ZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNl
IDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNo
YXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTI6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKiko
KGNoYXIgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA0OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9
IChmbGREYXRhcyk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6ZW9mKFNkYm1GbGRS
ZWYpICogbnVtRGF0YUFyZWFzKTsgX19zOyB9KSA6IG1lbXNldCAoZmxkRGF0YXMsIDAsIHNpemVv
ZihTZGJtRmxkUmVmKSAqIG51bURhdGFBcmVhcykpKSk7CiAgICBkYXRhSWQuaS5mbGRObyA9IDA7
CiAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyh0YmxILCBmbGRObywgJmZTcGVjKTsKICAgIGlm
KCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgIGNvbnN0IFNkYm1GbGRUeXBlSW5mbyogdGkgPSAo
Z1NkYm1GbGRUeXBlc1tmU3BlYy0+ZmxkVHlwZV0pOwogICAgICAgIFNkYm1SZWNFbnR5KiByZWM7
CgogICAgICAgIGlmKGluc2lkZUFsbG9jYXRpb24pIHsKICAgICAgICAgICAgdGkgPSAoZ1NkYm1G
bGRUeXBlc1tmU3BlYy0+ZmxkVHlwZV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlu
dCBmdCA9IGZsZERhdGFzWzBdLmZsZFR5cGU7CiAgICAgICAgICAgIHRpID0gKGdTZGJtRmxkVHlw
ZXNbKChmdCkgJiAweEZGKV0pOwogICAgICAgICAgICBpZighIHRpKSB7CiAgICAgICAgICAgICAg
ICB0aSA9IChnU2RibUZsZFR5cGVzW2ZTcGVjLT5mbGRUeXBlXSk7CiAgICAgICAgICAgIH0gZWxz
ZSBpZih0aS0+Zm10VHlwZSAhPSBmU3BlYy0+ZmxkVHlwZSkgewogICAgICAgICAgICAgICAgcmV0
VmFsID0gKC0oNDE2MCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCgocmV0
VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0UmVjRW50eSh0YmxILCBk
YXRhSWQsICZyZWMpOwogICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAg
ICAgICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0YmxILCAzKTsKICAgICAgICAgICAgICAg
IGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4
IGRhdGFJZHggPSBTZGJtRmxkc05leHRGcm9tUmVjKHRibEgsIHJlYywgZmxkTm8sIDApOwogICAg
ICAgICAgICAgICAgICAgIGlmKGluc2lkZUFsbG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YoKmZsZERh
dGFzKSpudW1EYXRhQXJlYXMpICYmIChzaXplb2YoKmZsZERhdGFzKSpudW1EYXRhQXJlYXMpIDw9
IDE2ID8gKChzaXplb2YoKmZsZERhdGFzKSpudW1EYXRhQXJlYXMpID09IDEgPyAoeyB2b2lkICpf
X3MgPSAoZmxkRGF0YXMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9f
czsgfSkgOiAoeyB2b2lkICpfX3MgPSAoZmxkRGF0YXMpOyB1bmlvbiB7IHVuc2lnbmVkIGludCBf
X3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191YzsgfSAqX191
ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1bnNpZ25l
ZCBpbnQpIChzaXplb2YoKmZsZERhdGFzKSpudW1EYXRhQXJlYXMpKSB7IGNhc2UgMTU6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNzogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgo
Y2hhciAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGlu
dCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9f
dSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDog
X191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAq
KSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA2
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hv
cnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAx
NjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9p
ZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2Fz
ZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2
b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKGZsZERhdGFzKTsgX19idWlsdGlu
X21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YoKmZsZERhdGFzKSpudW1EYXRhQXJlYXMpOyBfX3M7
IH0pIDogbWVtc2V0IChmbGREYXRhcywgMCwgc2l6ZW9mKCpmbGREYXRhcykqbnVtRGF0YUFyZWFz
KSkpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YUlk
eCkgewogICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCB0b3BJZHggPSBkYXRh
SWR4OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZGJtRmxkQm9keSogZmxkID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXRWYWwgPSBTZGJtR2V0RmxkQm9keSh0YmxILCBkYXRhSWR4LCAmZmxkKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmKGZsZC0+dmVjdG9ySWR4IDw9IG51bURhdGFBcmVhcykg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkUmVmKiBmUmVmOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUmVmID0gZmxkRGF0YXMgKyAoKGZs
ZC0+dmVjdG9ySWR4KS0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJl
Zi0+dmVjSWR4ID0gZmxkLT52ZWN0b3JJZHg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZSZWYtPmZsZFR5cGUgPSBmU3BlYy0+ZmxkVHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0VmFsID0gKCoodGktPnN0b3JlRGF0YSkpKHRibEgsIGZTcGVj
LCAmKGZsZC0+Y29udGVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmUmVmLCBpbnNpZGVBbGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtYXhJZHggPCBmbGQtPnZlY3Rv
cklkeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heElk
eCA9IGZsZC0+dmVjdG9ySWR4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpIDwgMCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFJZHggPSBTZGJtRmxkc05leHRGcm9tUmVjKHRi
bEgsIHJlYywgZmxkTm8sIGRhdGFJZHgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxl
KHRvcElkeCAhPSBkYXRhSWR4KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBtYXhJZHg7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAo
cmV0VmFsKTsKfQoKaW50ClNkYm1HZXRBRGF0YShTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1E
YXRhSWQgZGF0YUlkLAogICAgICAgICAgICAgU2RibVZlY0ZsZElkeCB2ZWNJZHgsIFNkYm1GbGRS
ZWYqIGZsZERhdGEsIEJvb2wgaW5zaWRlQWxsb2NhdGlvbikKewogICAgTnVtIHJldFZhbCA9IDA7
CiAgICBTZGJtRmxkU3BlYyogZlNwZWMgPSAoKHZvaWQgKikwKTsKICAgIFNkYm1GbGRObyBmbGRO
byA9IGRhdGFJZC5pLmZsZE5vOwoKICAgIDsKICAgIGRhdGFJZC5pLmZsZE5vID0gMDsKICAgIHJl
dFZhbCA9IFNkYm1HZXRGbGRTcGVjKHRibEgsIGZsZE5vLCAmZlNwZWMpOwogICAgaWYoKChyZXRW
YWwpID49IDApKSB7CiAgICAgICAgY29uc3QgU2RibUZsZFR5cGVJbmZvKiB0aTsKICAgICAgICBT
ZGJtUmVjRW50eSogcmVjOwoKICAgICAgICBpZihpbnNpZGVBbGxvY2F0aW9uKSB7CiAgICAgICAg
ICAgIHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMtPmZsZFR5cGVdKTsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBpbnQgZnQgPSBmbGREYXRhLT5mbGRUeXBlOwogICAgICAgICAgICB0aSA9
IChnU2RibUZsZFR5cGVzWygoZnQpICYgMHhGRildKTsKICAgICAgICAgICAgaWYoISB0aSkgewog
ICAgICAgICAgICAgICAgdGkgPSAoZ1NkYm1GbGRUeXBlc1tmU3BlYy0+ZmxkVHlwZV0pOwogICAg
ICAgICAgICB9IGVsc2UgaWYodGktPmZtdFR5cGUgIT0gZlNwZWMtPmZsZFR5cGUpIHsKICAgICAg
ICAgICAgICAgIHJldFZhbCA9ICgtKDQxNjApKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgcmV0VmFsID0gU2RibUdldFJl
Y0VudHkodGJsSCwgZGF0YUlkLCAmcmVjKTsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDAp
KSB7CiAgICAgICAgICAgICAgICByZXRWYWwgPSBTZGJtTWFwVGJsUGxhaW4odGJsSCwgMyk7CiAg
ICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICBT
ZGJtRmxkRGF0YUlkeCBkYXRhSWR4ID0gU2RibUZsZHNOZXh0RnJvbVJlYyh0YmxILCByZWMsIGZs
ZE5vLCAwKTsKICAgICAgICAgICAgICAgICAgICBpZihpbnNpZGVBbGxvY2F0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
c2l6ZW9mKCpmbGREYXRhKSkgJiYgKHNpemVvZigqZmxkRGF0YSkpIDw9IDE2ID8gKChzaXplb2Yo
KmZsZERhdGEpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKGZsZERhdGEpOyAqKChfX3VpbnQ4X3Qg
KikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoZmxkRGF0
YSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsg
dW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50
OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZigqZmxkRGF0YSkpKSB7IGNh
c2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7
IGNhc2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2ln
bmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICop
KChjaGFyICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVh
azsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAo
dW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFy
ICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBi
cmVhazsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0g
X19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBf
X3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKGZsZERhdGEp
OyBfX2J1aWx0aW5fbWVtc2V0IChfX3MsICdcMCcsIHNpemVvZigqZmxkRGF0YSkpOyBfX3M7IH0p
IDogbWVtc2V0IChmbGREYXRhLCAwLCBzaXplb2YoKmZsZERhdGEpKSkpKTsKICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmbGREYXRhLT52ZWNJZHgg
PSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZihkYXRhSWR4
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGRCb2R5KiBmbGQgPSAoKHZvaWQgKikw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodmVjSWR4ID4gMCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggdG9wSWR4ID0gZGF0YUlkeDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXRWYWwgPSBTZGJtR2V0RmxkQm9keSh0YmxILCBkYXRhSWR4LCAmZmxkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYoZmxkLT52ZWN0b3JJZHggPT0gdmVjSWR4KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGREYXRhLT52ZWNJZHggPSBmbGQt
PnZlY3RvcklkeDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZERh
dGEtPmZsZFR5cGUgPSBmU3BlYy0+ZmxkVHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldFZhbCA9ICgqKHRpLT5zdG9yZURhdGEpKSh0YmxILCBmU3BlYywgJihm
bGQtPmNvbnRlbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsZERhdGEsIGluc2lkZUFsbG9jYXRpb24pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gMTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA8IDApKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSWR4ID0gU2RibUZsZHNO
ZXh0RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLCBkYXRhSWR4KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gd2hpbGUodG9wSWR4ICE9IGRhdGFJZHgpOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IFNkYm1H
ZXRGbGRCb2R5KHRibEgsIGRhdGFJZHgsICZmbGQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxkRGF0YS0+dmVjSWR4ID0gZmxkLT52ZWN0b3JJZHg7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxkRGF0YS0+ZmxkVHlwZSA9IGZTcGVjLT5mbGRUeXBlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldFZhbCA9ICgqKHRpLT5zdG9yZURhdGEpKSh0YmxILCBmU3Bl
YywgJihmbGQtPmNvbnRlbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGREYXRhLCBpbnNpZGVBbGxvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICByZXRWYWwgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAocmV0VmFsKTsK
fQoKaW50ClNkYm1JbnF1aXJ5RGF0YXMoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBjb25zdCBTZGJt
UXVlcnlDb25kKiBxdWVyeSwKICAgICAgICAgICAgICAgICBTZGJtRGF0YUlkIGRhdGFJZCkKewog
ICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3BlYyogZlNwZWMgPSAoKHZvaWQgKikwKTsK
ICAgIFNkYm1GbGRObyBmbGRObzsKICAgIDsKCiAgICBmbGRObyA9IHF1ZXJ5LT5mbGRObzsKICAg
IHJldFZhbCA9IFNkYm1HZXRGbGRTcGVjKHRibEgsIGZsZE5vLCAmZlNwZWMpOwogICAgaWYoKChy
ZXRWYWwpID49IDApKSB7CiAgICAgICAgY29uc3QgU2RibUZsZFR5cGVJbmZvKiB0aTsKICAgICAg
ICBpZihmU3BlYy0+ZmxkVHlwZSAhPSAweDgwKSB7CiAgICAgICAgICAgIGlmKHF1ZXJ5LT5jb25k
VmFsdWUuZmxkVHlwZSA9PSAwKSB7CiAgICAgICAgICAgICAgICB0aSA9IChnU2RibUZsZFR5cGVz
W2ZTcGVjLT5mbGRUeXBlXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0
aSA9IChnU2RibUZsZFR5cGVzW3F1ZXJ5LT5jb25kVmFsdWUuZmxkVHlwZV0pOwogICAgICAgICAg
ICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGkgPSAoZ1NkYm1GbGRUeXBlc1tmU3Bl
Yy0+ZmxkVHlwZV0pOwogICAgICAgIH0KICAgICAgICBpZigocXVlcnktPmNvbmRUeXBlICYgdGkt
PmNvbmRNYXNrKSAmJiAodGktPmlucXVpcnlEYXRhKSAmJiAoISB0aS0+bm9uZVNvcnRlZCkpIHsK
ICAgICAgICAgICAgU2RibVJlY0VudHkqIHJlYyA9ICgodm9pZCAqKTApOwogICAgICAgICAgICA7
CiAgICAgICAgICAgIHJldFZhbCA9IFNkYm1HZXRSZWNFbnR5KHRibEgsIGRhdGFJZCwgJnJlYyk7
CiAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgcmV0VmFs
ID0gU2RibU1hcFRibFBsYWluKHRibEgsIDMpOwogICAgICAgICAgICAgICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggZGF0YUlkeCA9IFNk
Ym1GbGRzTmV4dEZyb21SZWModGJsSCwgcmVjLCBmbGRObywgMCk7CiAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgIGlmKGRhdGFJZHgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgU2RibUZsZERhdGFJZHggdG9wSWR4ID0gZGF0YUlkeDsKICAgICAgICAgICAgICAgICAg
ICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0VmFsID0gKCoodGktPmlucXVpcnlEYXRhKSkodGJsSCwgdGksIGZTcGVj
LCBxdWVyeSwgZGF0YUlkeCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZh
bCkgPCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHJldFZhbCA9PSAxKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSWR4ID0gU2RibUZsZHNOZXh0RnJvbVJl
Yyh0YmxILCByZWMsIGZsZE5vLCBkYXRhSWR4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3
aGlsZSh0b3BJZHggIT0gZGF0YUlkeCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICByZXRWYWwgPSAoLSg0MTczKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwp
Owp9CgppbnQKU2RibU5leHRRdWVyeURhdGEoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBOdW0gbnVt
UXVlcmllcywgY29uc3QgU2RibVF1ZXJ5Q29uZCogcXVlcnksCiAgICAgICAgICAgICAgICAgIFNk
Ym1EYXRhSWQgZnJvbUlkLCBTZGJtRmxkRGF0YUlkeCBmcm9tRGF0YUlkeCwgU2RibUZsZERhdGFJ
ZHggc3ViRGF0YUlkeCwKICAgICAgICAgICAgICAgICAgU2RibURhdGFJZCogbmV4dElkUCwgU2Ri
bUZsZERhdGFJZHgqIG5leHREYXRhSWR4UCwKICAgICAgICAgICAgICAgICAgU2RibUZsZERhdGFJ
ZHgqIG5leHRTdWJEYXRhSWR4UCkKewogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3Bl
YyogZlNwZWMgPSAoKHZvaWQgKikwKTsKICAgIFNkYm1GbGRObyBmbGRObzsKICAgIFNkYm1GbGRE
YXRhSWR4IG5leHRJZHg7CiAgICBTZGJtRmxkRGF0YUlkeCBuZXh0U3ViSWR4OwogICAgOwoKICAg
IGZsZE5vID0gZnJvbUlkLmkuZmxkTm87CiAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyh0YmxI
LCBmbGRObywgJmZTcGVjKTsKICAgIDsKICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAg
IGNvbnN0IFNkYm1GbGRUeXBlSW5mbyogdGk7CiAgICAgICAgaWYoZlNwZWMtPmZsZFR5cGUgIT0g
MHg4MCkgewogICAgICAgICAgICBpZihxdWVyeS0+Y29uZFZhbHVlLmZsZFR5cGUgPT0gMCkgewog
ICAgICAgICAgICAgICAgdGkgPSAoZ1NkYm1GbGRUeXBlc1tmU3BlYy0+ZmxkVHlwZV0pOwogICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGkgPSAoZ1NkYm1GbGRUeXBlc1txdWVy
eS0+Y29uZFZhbHVlLmZsZFR5cGVdKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIHRpID0gKGdTZGJtRmxkVHlwZXNbZlNwZWMtPmZsZFR5cGVdKTsKICAgICAgICB9
CiAgICAgICAgaWYoKHF1ZXJ5LT5jb25kVHlwZSAmIHRpLT5jb25kTWFzaykgJiYgKHRpLT5uZXh0
RGF0YSkgJiYgKCEgdGktPm5vbmVTb3J0ZWQpKSB7CiAgICAgICAgICAgIFNkYm1SZWNFbnR5KiBy
ZWM7CiAgICAgICAgICAgIHJldFZhbCA9IFNkYm1HZXRSZWNFbnR5KHRibEgsIGZyb21JZCwgJnJl
Yyk7CiAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgcmV0
VmFsID0gU2RibU1hcFRibFBsYWluKHRibEgsIDMpOwogICAgICAgICAgICAgICAgaWYoKChyZXRW
YWwpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yKDs7KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldFZhbCA9ICgqKHRpLT5uZXh0RGF0YSkpKHRibEgsIHRpLCBxdWVyeSwgZlNw
ZWMsIGZyb21EYXRhSWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbmV4dElkeCwgc3ViRGF0YUlkeCwgJm5leHRTdWJJZHgpOwogICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJldFZhbCA9PSAxKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0UmVjRnJvbURhdGFJ
ZHgodGJsSCwgZlNwZWMsIG5leHRJZHgsIG5leHRTdWJJZHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dElkUCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZihuZXh0RGF0YUlkeFApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKm5leHREYXRhSWR4UCA9IG5leHRJZHg7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5leHRT
dWJEYXRhSWR4UCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmV4dFN1
YkRhdGFJZHhQID0gbmV4dFN1YklkeDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXRWYWwgPSAoLSg0
MTczKSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2RibUNv
bXBhcmVEYXRhSW50ZXJuYWwoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtRmxkTm8gZmxkTm8s
CiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4IGRhdGExLCBTZGJtRmxkRGF0
YUlkeCBkYXRhMikKewogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3BlYyogZlNwZWMg
PSAoKHZvaWQgKikwKTsKICAgIDsKCiAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyh0YmxILCBm
bGRObywgJmZTcGVjKTsKICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgIGNvbnN0IFNk
Ym1GbGRUeXBlSW5mbyogdGkgPSAoZ1NkYm1GbGRUeXBlc1tmU3BlYy0+ZmxkVHlwZV0pOwogICAg
ICAgIHJldFZhbCA9ICgqKHRpLT5jb21wYXJlRGF0YUludGVybmFsKSkodGJsSCwgZGF0YTEsIGRh
dGEyKTsKICAgIH0KICAgIHJldHVybiAocmV0VmFsKTsKfQoKZXh0ZXJuIGNvbnN0IFNkYm1GbGRU
eXBlSW5mbyBnU2RibUZsZFR5cGVOdW1lcmljOwpleHRlcm4gY29uc3QgU2RibUZsZFR5cGVJbmZv
IGdTZGJtRmxkVHlwZVN0cjsKZXh0ZXJuIGNvbnN0IFNkYm1GbGRUeXBlSW5mbyBnU2RibUZsZFR5
cGVFbnVtOwpleHRlcm4gY29uc3QgU2RibUZsZFR5cGVJbmZvIGdTZGJtRmxkVHlwZUVudW1WYWw7
CmV4dGVybiBjb25zdCBTZGJtRmxkVHlwZUluZm8gZ1NkYm1GbGRUeXBlRW51bU5hbWU7CmV4dGVy
biBjb25zdCBTZGJtRmxkVHlwZUluZm8gZ1NkYm1GbGRUeXBlTGluazsKZXh0ZXJuIGNvbnN0IFNk
Ym1GbGRUeXBlSW5mbyBnU2RibUZsZFR5cGVPcGFxdWU7Cgpjb25zdCBTZGJtRmxkVHlwZUluZm8q
IGdTZGJtRmxkVHlwZXNbMjU1ICsxXSA9IHsKICAgIFsweDAxXSA9ICZnU2RibUZsZFR5cGVOdW1l
cmljLAogICAgWzB4MDJdID0gJmdTZGJtRmxkVHlwZVN0ciwKICAgIFsweDEwXSA9ICZnU2RibUZs
ZFR5cGVFbnVtLAogICAgWzB4MTFdID0gJmdTZGJtRmxkVHlwZUVudW1WYWwsCiAgICBbMHgxMl0g
PSAmZ1NkYm1GbGRUeXBlRW51bU5hbWUsCiAgICBbMHg4MF0gPSAmZ1NkYm1GbGRUeXBlTGluaywK
ICAgIFsweDMwXSA9ICZnU2RibUZsZFR5cGVPcGFxdWUsCn07CgppbnQKU2RibUdldEZsZEJvZHlC
eUZsZE5vKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibURhdGFJZCBkYXRhSWQsCiAgICAgICAg
ICAgICAgICAgICAgICBTZGJtVmVjRmxkSWR4IHZlY0lkeCwgU2RibUZsZEJvZHkqKiBmbGRCb2R5
UCkKewogICAgTnVtIHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3BlYyogZlNwZWMgPSAoKHZvaWQg
KikwKTsKICAgIFNkYm1GbGRObyBmbGRObyA9IGRhdGFJZC5pLmZsZE5vOwoKICAgIDsKICAgIGRh
dGFJZC5pLmZsZE5vID0gMDsKICAgIHJldFZhbCA9IFNkYm1HZXRGbGRTcGVjKHRibEgsIGZsZE5v
LCAmZlNwZWMpOwogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgU2RibVJlY0VudHkq
IHJlYzsKICAgICAgICByZXRWYWwgPSBTZGJtR2V0UmVjRW50eSh0YmxILCBkYXRhSWQsICZyZWMp
OwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRWYWwgPSBTZGJt
TWFwVGJsUGxhaW4odGJsSCwgMyk7CiAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewog
ICAgICAgICAgICAgICAgU2RibUZsZERhdGFJZHggZGF0YUlkeCA9IFNkYm1GbGRzTmV4dEZyb21S
ZWModGJsSCwgcmVjLCBmbGRObywgMCk7CiAgICAgICAgICAgICAgICBpZihkYXRhSWR4KSB7CiAg
ICAgICAgICAgICAgICAgICAgU2RibUZsZEJvZHkqIGZsZCA9ICgodm9pZCAqKTApOwogICAgICAg
ICAgICAgICAgICAgIGlmKHZlY0lkeCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2Ri
bUZsZERhdGFJZHggdG9wSWR4ID0gZGF0YUlkeDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8g
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gU2RibUdldEZsZEJvZHkodGJs
SCwgZGF0YUlkeCwgJmZsZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZh
bCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmbGQtPnZlY3Rv
cklkeCA9PSB2ZWNJZHgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZs
ZEJvZHlQID0gZmxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxkID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUlkeCA9
IFNkYm1GbGRzTmV4dEZyb21SZWModGJsSCwgcmVjLCBmbGRObywgZGF0YUlkeCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0gd2hpbGUodG9wSWR4ICE9IGRhdGFJZHgpOwogICAgICAgICAgICAg
ICAgICAgICAgICBpZighIGZsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nUHV0
KDQsICIlczolJCIsIF9fRlVOQ1RJT05fXywgIk5vIHN1Y2ggZGF0YSIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0VmFsID0gKC0oNDE2MSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0VmFsID0gU2RibUdldEZsZEJvZHkodGJsSCwgZGF0YUlkeCwgJmZsZCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKmZsZEJvZHlQID0gZmxkOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICBMb2dQdXQoNCwgIiVzOiUkIiwgX19GVU5DVElPTl9fLCAiTm8gc3VjaCBkYXRhIik7CiAgICAg
ICAgICAgICAgICAgICAgcmV0VmFsID0gKC0oNDE2MSkpOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2Ri
bU9wZW5UcmVlRm9yRmxkTmFtZShTZGJtVGFibGVIYW5kbGUqIHRibEgsIEF0cmVlUmVxKiByZXEp
CnsKICAgIGludCByZXRWYWwgPSAwOwoKICAgIDsKICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoc2l6ZW9mKHJlcSkpICYmIChzaXplb2YocmVxKSkgPD0gMTYgPyAoKHNp
emVvZihyZXEpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKHJlcSk7ICooKF9fdWludDhfdCAqKSBf
X3MpID0gKF9fdWludDhfdCkgMDsgX19zOyB9KSA6ICh7IHZvaWQgKl9fcyA9IChyZXEpOyB1bmlv
biB7IHVuc2lnbmVkIGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVk
IGNoYXIgX191YzsgfSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDAp
OyBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIChzaXplb2YocmVxKSkpIHsgY2FzZSAxNTogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191
ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChj
aGFyICopIF9fdSArIDQpOyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50
KSBfX2MgKiAweDAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgMik7IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE0OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICop
KChjaGFyICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDY6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQg
KikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMjogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9y
dCBpbnQpIF9fYyAqIDB4MDEwMTsgYnJlYWs7IGNhc2UgMTM6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7
IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQp
OyBjYXNlIDE6IF9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7IGJyZWFrOyBjYXNlIDE2
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNl
IDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNDogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgY2FzZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
MCkgJiYgKDApID09ICdcMCcgPyAoeyB2b2lkICpfX3MgPSAocmVxKTsgX19idWlsdGluX21lbXNl
dCAoX19zLCAnXDAnLCBzaXplb2YocmVxKSk7IF9fczsgfSkgOiBtZW1zZXQgKHJlcSwgMCwgc2l6
ZW9mKHJlcSkpKSkpOwogICAgcmVxLT5vcHJzID0gJnNTZGJtRmxkTm9CeU5hbWVPcHJzOwogICAg
cmVxLT5hdXhBcmcucHRyID0gdGJsSDsKICAgIHJldFZhbCA9IEF0cmVlT3BlblRyZWUocmVxLCAx
LCAwKTsKICAgIHJldHVybiAocmV0VmFsKTsKfQoKaW50ClNkYm1PcGVuVHJlZUZvckZsZChTZGJt
VGFibGVIYW5kbGUqIHRibEgsIFNkYm1GbGRObyBmbGRObywgQXRyZWVSZXEqIHJlcSkKewogICAg
aW50IHJldFZhbCA9IDA7CgogICAgOwogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25z
dGFudF9wIChzaXplb2YocmVxKSkgJiYgKHNpemVvZihyZXEpKSA8PSAxNiA/ICgoc2l6ZW9mKHJl
cSkpID09IDEgPyAoeyB2b2lkICpfX3MgPSAocmVxKTsgKigoX191aW50OF90ICopIF9fcykgPSAo
X191aW50OF90KSAwOyBfX3M7IH0pIDogKHsgdm9pZCAqX19zID0gKHJlcSk7IHVuaW9uIHsgdW5z
aWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBf
X3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoMCk7IHN3aXRj
aCAoKHVuc2lnbmVkIGludCkgKHNpemVvZihyZXEpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBf
X2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9f
dSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikg
X191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAq
IDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsg
X191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIg
KikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkg
X19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA5
OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAx
MDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2Ug
MTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNo
YXIgKikgX191ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgODogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgo
Y2hhciAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBj
YXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAo
MCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9IChyZXEpOyBfX2J1aWx0aW5fbWVtc2V0IChfX3Ms
ICdcMCcsIHNpemVvZihyZXEpKTsgX19zOyB9KSA6IG1lbXNldCAocmVxLCAwLCBzaXplb2YocmVx
KSkpKSk7CiAgICByZXEtPm9wcnMgPSAmc1NkYm1GbGROb0J5TmFtZU9wcnM7CiAgICByZXEtPmF1
eEFyZy5wdHIgPSB0YmxIOwogICAgcmV0VmFsID0gQXRyZWVPcGVuVHJlZShyZXEsICgoZmxkTm8p
LTErMiksIDApOwogICAgcmV0dXJuIChyZXRWYWwpOwp9CgpTZGJtRmxkRGF0YUlkeApTZGJtQWxs
b2NOZXdMaW5rZWRJbmZvKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUxpbmtlZEZsZEluZm8q
KiBsZmlQKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAgIFNkYm1MaW5rZWRGbGRJbmZvQXR0ciog
bGZhID0gdGJsSC0+bGlua2VkRmxkc0F0dHI7CiAgICBTZGJtRmxkRGF0YUlkeCBpZHggPSAwOwog
ICAgU2RibUxpbmtlZEZsZEluZm8qIGxmaSA9ICgodm9pZCAqKTApOwoKICAgIDsKICAgIGlmKChp
ZHggPSBTZGJtTGlua2VkRmxkc05leHRGcm9tRnJlZUxpc3QodGJsSCwgMCkpID09IDApIHsKICAg
ICAgICBOdW0gbnVtTGlua2VkID0gbGZhLT5udW1MaW5rZWQgKyAxOwoKICAgICAgICByZXRWYWwg
PSBTZGJtUmVzaXplVGJsUGxhaW4odGJsSCwgNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtTGlua2VkICogc2l6ZW9mKCpsZmkpKTsKICAgICAgICBpZigoKHJldFZhbCkg
Pj0gMCkpIHsKICAgICAgICAgICAgbGZhLT5udW1MaW5rZWQgPSBudW1MaW5rZWQ7CiAgICAgICAg
ICAgIGlkeCA9IG51bUxpbmtlZDsKICAgICAgICAgICAgcmV0VmFsID0gQWRhbUNoYW5nZVN1YmZp
bGVQYXJhbSh0YmxILT5zdWJmaWxlc1s2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YmxILT5wYXJhbXMgKyA2KTsKICAgICAgICAgICAgaWYoKChyZXRWYWwp
ID49IDApKSB7CiAgICAgICAgICAgICAgICByZXRWYWwgPSBTZGJtTWFwVGJsUGxhaW4odGJsSCwg
Nik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHJldFZhbCA9
IFNkYm1NYXBUYmxQbGFpbih0YmxILCA2KTsKICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsK
ICAgICAgICAgICAgU2RibUxpbmtlZEZsZHNEZWxldGVGcm9tRnJlZUxpc3QodGJsSCwgaWR4KTsK
ICAgICAgICAgICAgZG8ge2lmKCEodGJsSC0+bGlua2VkRmxkc0F0dHItPmZyZWVMaXN0ICE9IGlk
eCkpIEF4aXNBYm9ydCgiJXM6JSRcbiIsICJ0YmxILT5saW5rZWRGbGRzQXR0ci0+ZnJlZUxpc3Qg
IT0gaWR4IiwgImZyZWVMaXN0PTB4JXggaWR4PTB4JXhcbiIsIHRibEgtPmZsZHNDb250bnJBdHRy
LT5mcmVlTGlzdCwgaWR4KTt9IHdoaWxlKDApOwoKICAgICAgICAgICAgcmV0VmFsID0gQWRhbUNo
YW5nZVN1YmZpbGVQYXJhbSh0YmxILT5zdWJmaWxlc1s2XSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YmxILT5wYXJhbXMgKyA2KTsKICAgICAgICB9CiAgICB9
CiAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICBTZGJtTGlua2VkRmxkc09wckluaXQo
KHRibEgpLT5saW5rZWRGbGRzLCAxLCBpZHgpOwogICAgICAgIHJldFZhbCA9IFNkYm1HZXRMaW5r
ZWRGbGRJbmZvKHRibEgsIGlkeCwgJmxmaSk7CiAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7
CiAgICAgICAgICAgIGRvIHtpZighKChsZmktPmxpc3QuYmt3ZCA9PSBpZHgpICYmIChsZmktPmxp
c3QuZnJ3ZCA9PSBpZHgpKSkgQXhpc0Fib3J0KCIlczolJFxuIiwgIihsZmktPmxpc3QuYmt3ZCA9
PSBpZHgpICYmIChsZmktPmxpc3QuZnJ3ZCA9PSBpZHgpIiwgImlkeD0weCV4ICgweCV4LCAweCV4
KVxuIiwgaWR4LCBsZmktPmxpc3QuYmt3ZCwgbGZpLT5saXN0LmZyd2QpO30gd2hpbGUoMCk7Cgog
ICAgICAgICAgICByZXRWYWwgPSBpZHg7CiAgICAgICAgfQogICAgfQogICAgaWYobGZpUCkgewog
ICAgICAgICpsZmlQID0gbGZpOwogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgpTZGJtRmxk
RGF0YUlkeApTZGJtTmV3TGlua0luZm8oU2RibVRhYmxlSGFuZGxlKiBmcm9tVGJsSCwgU2RibUZs
ZERhdGFJZHggZnJvbURhdGEsCiAgICAgICAgICAgICAgICBTZGJtRGF0YUlkIGxpbmtGcm9tLCBT
ZGJtRGF0YUlkIGxpbmtUbykKewogICAgaW50IHJldFZhbDsKICAgIFNkYm1UYWJsZUhhbmRsZSog
dG9UYmxIID0gKCh2b2lkICopMCk7CiAgICBTZGJtTGlua2VkRmxkSW5mbyogbGZpID0gKCh2b2lk
ICopMCk7CgogICAgOwogICAgcmV0VmFsID0gU2RibU9wZW5UYWJsZUJ5QW5vdGhlclRhYmxlKGZy
b21UYmxILCBsaW5rVG8uaS50YWJsZU5vLCAmdG9UYmxIKTsKICAgIGlmKCgocmV0VmFsKSA+PSAw
KSkgewogICAgICAgIFNkYm1SZWNFbnR5KiB0b1JlYyA9ICgodm9pZCAqKTApOwogICAgICAgIHJl
dFZhbCA9IFNkYm1HZXRSZWNFbnR5UHRyV2l0aENoZWNrKHRvVGJsSCwgbGlua1RvLmkucmVjSWR4
LCAmdG9SZWMpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICBTZGJt
UmVjRW50eSogciA9ICgodm9pZCAqKTApOwogICAgICAgICAgICBpbnQgY2hlY2s7CiAgICAgICAg
ICAgIGNoZWNrID0gU2RibUdldFJlY0VudHkoZnJvbVRibEgsIGxpbmtGcm9tLCAmcik7CiAgICAg
ICAgICAgIGlmKCgoY2hlY2spID49IDApKSB7CiAgICAgICAgICAgICAgICBjaGVjayA9IFNkYm1H
ZXRSZWNFbnR5KHRvVGJsSCwgbGlua1RvLCAmcik7CiAgICAgICAgICAgICAgICBpZigoKGNoZWNr
KSA8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgTG9nUHV0KDEsICJJbGxlZ2FsIGxpbmtUbyBy
ZWNvcmQ9MHglbGx4XG4iLCBsaW5rVG8pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgTG9nUHV0KDEsICJJbGxlZ2FsIGxpbmtGcm9tIHJlY29y
ZD0weCVsbHhcbiIsIGxpbmtGcm9tKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXRWYWwg
PSBjaGVjazsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgIHJl
dFZhbCA9IFNkYm1BbGxvY05ld0xpbmtlZEluZm8odG9UYmxILCAmbGZpKTsKICAgICAgICAgICAg
aWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBsaSA9
IHJldFZhbDsKCiAgICAgICAgICAgICAgICBTZGJtTGlua2VkRmxkc0FwcGVuZFRvUmVjKHRvVGJs
SCwgdG9SZWMsIGxpbmtUby5pLmZsZE5vLCBsaSk7CgoKCgogICAgICAgICAgICAgICAgbGZpLT5s
aW5rRnJvbS5leHRlcm5hbCA9IDBMTDsKICAgICAgICAgICAgICAgIGxmaS0+bGlua0Zyb20uaS50
YWJsZU5vID0gZnJvbVRibEgtPnRibE5vOwogICAgICAgICAgICAgICAgbGZpLT5saW5rRnJvbS5p
LnJlY0lkeCA9IGxpbmtGcm9tLmkucmVjSWR4OwogICAgICAgICAgICAgICAgbGZpLT5saW5rRnJv
bS5pLnJldmlzaW9uID0gbGlua0Zyb20uaS5yZXZpc2lvbjsKICAgICAgICAgICAgICAgIGxmaS0+
bGlua0Zyb20uaS5mbGRObyA9IGxpbmtGcm9tLmkuZmxkTm87CgogICAgICAgICAgICAgICAgbGZp
LT5saW5rVG8uZXh0ZXJuYWwgPSAwTEw7CiAgICAgICAgICAgICAgICBsZmktPmxpbmtUby5pLnRh
YmxlTm8gPSB0b1RibEgtPnRibE5vOwogICAgICAgICAgICAgICAgbGZpLT5saW5rVG8uaS5yZWNJ
ZHggPSBsaW5rVG8uaS5yZWNJZHg7CiAgICAgICAgICAgICAgICBsZmktPmxpbmtUby5pLnJldmlz
aW9uID0gbGlua1RvLmkucmV2aXNpb247CiAgICAgICAgICAgICAgICBsZmktPmxpbmtUby5pLmZs
ZE5vID0gbGlua1RvLmkuZmxkTm87CgogICAgICAgICAgICAgICAgICAgIGRvIHtpZighKHRvVGJs
SC0+bGlua2VkRmxkc0F0dHItPmZyZWVMaXN0ICE9IGxpKSkgQXhpc0Fib3J0KCIlczolJFxuIiwg
InRvVGJsSC0+bGlua2VkRmxkc0F0dHItPmZyZWVMaXN0ICE9IGxpIiwgImZyZWVMaXN0PTB4JXgg
aWR4PTB4JXhcbiIsIHRvVGJsSC0+Zmxkc0NvbnRuckF0dHItPmZyZWVMaXN0LCBsaSk7fSB3aGls
ZSgwKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
U2RibVJlbGVhc2VUYWJsZUhhbmRsZSh0b1RibEgsIDEpOwogICAgfQogICAgcmV0dXJuIChyZXRW
YWwpOwp9CgppbnQKU2RibURlbExpbmtlZEluZm8oU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJt
RmxkRGF0YUlkeCBpZHgpCnsKICAgIGludCByZXRWYWwgPSAwOwogICAgU2RibUxpbmtlZEZsZElu
Zm8qIGxmaTsKICAgIFNkYm1SZWNFbnR5KiByZWMgPSAoKHZvaWQgKikwKTsKICAgIDsKCiAgICBy
ZXRWYWwgPSBTZGJtTWFwVGJsUGxhaW4odGJsSCwgNik7CiAgICBpZigoKHJldFZhbCkgPj0gMCkp
IHsKICAgICAgICByZXRWYWwgPSBTZGJtR2V0TGlua2VkRmxkSW5mbyh0YmxILCBpZHgsICZsZmkp
OwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRWYWwgPSBTZGJt
R2V0UmVjRW50eSh0YmxILCBsZmktPmxpbmtUbywgJnJlYyk7CiAgICAgICAgICAgIGlmKCgocmV0
VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgOwoKCgoKCgogICAgICAgICAgICAgICAgU2Ri
bUxpbmtlZEZsZHNEZWxldGVGcm9tUmVjKHRibEgsIHJlYywgbGZpLT5saW5rVG8uaS5mbGRObywg
aWR4KTsKICAgICAgICAgICAgICAgIDsKCgogICAgICAgICAgICAgICAgU2RibUxpbmtlZEZsZHNP
cHJJbml0KCh0YmxIKS0+bGlua2VkRmxkcywgMSwgaWR4KTsKICAgICAgICAgICAgICAgIDsKCgog
ICAgICAgICAgICAgICAgU2RibUxpbmtlZEZsZHNBcHBlbmRUb0ZyZWVMaXN0KHRibEgsIGlkeCk7
CiAgICAgICAgICAgICAgICA7CgoKCgoKCiAgICAgICAgICAgICAgICByZXRWYWwgPSBBZGFtQ2hh
bmdlU3ViZmlsZVBhcmFtKHRibEgtPnN1YmZpbGVzWzZdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxILT5wYXJhbXMgKyA2KTsKICAgICAgICAgICAg
ICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgaWYocmVjLT5hdHRycy52
LmRlbGV0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBTZGJtRGVsUmVjKHRibEgs
IHJlYyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQKU2RibUdldE1p
bkFuZE1heEZsZEVsbShTZGJtVGFibGVIYW5kbGUqIHRibEgsIFNkYm1SZWNFbnR5KiByZWMsIFNk
Ym1GbGRObyBmbGRObywKICAgICAgICAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCogbWlu
UCwgU2RibUZsZERhdGFJZHgqIG1heFAsCiAgICAgICAgICAgICAgICAgICAgICAgU2RibVRhYmxl
SGFuZGxlKiogZm9yTGlua1RibFAsIFNkYm1GbGRObyogZmxkTm9QKQp7CiAgICBTZGJtRmxkRGF0
YUlkeCBtaW4gPSAwLCBtYXggPSAwOwogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3Bl
YyogZlNwZWM7CgogICAgOwoKICAgIDsKICAgIHJldFZhbCA9IFNkYm1HZXRGbGRTcGVjKHRibEgs
IGZsZE5vLCAmZlNwZWMpOwogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgaWYoZlNw
ZWMtPmZsZFR5cGUgPT0gMHg4MCkgewogICAgICAgICAgICBTZGJtRmxkUmVmIGZSZWY7CiAgICAg
ICAgICAgIFNkYm1EYXRhSWQgcmVjSWQ7CiAgICAgICAgICAgIHJlY0lkID0gcmVjLT5yZWNJZDsK
ICAgICAgICAgICAgcmVjSWQuaS5mbGRObyA9IGZsZE5vOwogICAgICAgICAgICA7CiAgICAgICAg
ICAgIHJldFZhbCA9IFNkYm1HZXRBRGF0YSh0YmxILCByZWNJZCwgMSwgJmZSZWYsIDEpOwogICAg
ICAgICAgICBpZigoKHJldFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgIFNkYm1UYWJsZUhh
bmRsZSogdG9UYmxIID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICBTZGJtRmxkRGVmTGlu
a0luZm8gbGlEZWY7CgogICAgICAgICAgICAgICAgbGlEZWYud2hvbGUgPSBmU3BlYy0+ZmxkQXV4
VHlwZTsKICAgICAgICAgICAgICAgIHJlY0lkLmV4dGVybmFsID0gZlJlZi52LnJlY0lkOwogICAg
ICAgICAgICAgICAgcmV0VmFsID0gU2RibU9wZW5UYWJsZUJ5QW5vdGhlclRhYmxlKHRibEgsIGxp
RGVmLmRldGFpbC5saW5rVG9UYWJsZSwgJnRvVGJsSCk7CiAgICAgICAgICAgICAgICBpZigoKHJl
dFZhbCkgPj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0UmVjRW50
eSh0b1RibEgsIHJlY0lkLCAmcmVjKTsKICAgICAgICAgICAgICAgICAgICBpZigoKHJldFZhbCkg
Pj0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGJsSCA9IHRvVGJsSDsKICAgICAgICAg
ICAgICAgICAgICAgICAgZmxkTm8gPSByZWNJZC5pLmZsZE5vOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYo
KChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0
YmxILCAzKTsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAg
ICBtaW4gPSBTZGJtRmxkc1NvcnROZXh0RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLCAwKTsKICAg
ICAgICAgICAgICAgIGlmKG1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICBtYXggPSBTZGJt
Rmxkc1NvcnRQcmV2RnJvbVJlYyh0YmxILCByZWMsIGZsZE5vLCBtaW4pOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYobWluUCkKICAgICAgICAq
bWluUCA9IG1pbjsKICAgIGlmKG1heFApCiAgICAgICAgKm1heFAgPSBtYXg7CiAgICBpZihmb3JM
aW5rVGJsUCkKICAgICAgICAqZm9yTGlua1RibFAgPSB0YmxIOwogICAgaWYoZmxkTm9QKQogICAg
ICAgICpmbGROb1AgPSBmbGRObzsKICAgIHJldHVybiAocmV0VmFsKTsKfQoKaW50ClNkYm1GaW5k
RWRnZURhdGEoU2RibVRhYmxlSGFuZGxlKiB0YmxILCBTZGJtRmxkU3BlYyogZlNwZWMsIEJvb2wg
bG93ZXJFZGdlLCBTZGJtRmxkRWxtUHRyKiBlbG1QKQp7CiAgICBpbnQgcmV0VmFsID0gMDsKICAg
IFNkYm1UYWJsZUhhbmRsZSogb3JpZ1RibEggPSB0YmxIOwogICAgU2RibUZsZFNwZWMqIG9yaWdT
cGVjID0gZlNwZWM7CiAgICBTZGJtRmxkRGF0YUlkeCB0YXJnZXREYXRhID0gMDsKICAgIFNkYm1S
ZWNJZCByZXRSZWMgPSAwTEw7CiAgICBTZGJtVmVjRmxkSWR4IHJldFZlY0lkeCA9IDA7CiAgICBT
ZGJtRmxkQm9keSogdGFyZ2V0ID0gKCh2b2lkICopMCk7CiAgICBTZGJtVGFibGVIYW5kbGUqIHRv
VGJsSCA9ICgodm9pZCAqKTApOwoKICAgIDsKCiAgICBpZihmU3BlYy0+ZmxkVHlwZSA9PSAweDgw
KSB7CiAgICAgICAgU2RibUZsZERlZkxpbmtJbmZvIGxpRGVmOwoKICAgICAgICBsaURlZi53aG9s
ZSA9IGZTcGVjLT5mbGRBdXhUeXBlOwogICAgICAgIHJldFZhbCA9IFNkYm1PcGVuVGFibGVCeUFu
b3RoZXJUYWJsZSh0YmxILCBsaURlZi5kZXRhaWwubGlua1RvVGFibGUsICZ0b1RibEgpOwogICAg
ICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0Rmxk
U3BlYyh0b1RibEgsIGxpRGVmLmRldGFpbC5saW5rVG9GbGRObywgJmZTcGVjKTsKICAgICAgICAg
ICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICB0YmxIID0gdG9UYmxIOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAg
ICAgICAgY29uc3QgU2RibUZsZFR5cGVJbmZvKiB0aTsKICAgICAgICB0aSA9IChnU2RibUZsZFR5
cGVzW2ZTcGVjLT5mbGRUeXBlXSk7CiAgICAgICAgaWYoKHRpKSAmJiAodGktPmZtdFR5cGUgPT0g
ZlNwZWMtPmZsZFR5cGUpICYmICh0aS0+c2VhcmNoRGF0YSkgJiYgKCEgdGktPm5vbmVTb3J0ZWQp
KSB7CiAgICAgICAgICAgIEF0cmVlUmVxIHJlcTsKCiAgICAgICAgICAgIChfX2V4dGVuc2lvbl9f
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9mKHJlcSkpICYmIChzaXplb2YocmVxKSkgPD0g
MTYgPyAoKHNpemVvZihyZXEpKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKCZyZXEpOyAqKChfX3Vp
bnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAo
JnJlcSk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3Vz
aTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191
aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKHNpemVvZihyZXEpKSkgeyBjYXNl
IDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2
b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBj
YXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25l
ZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgo
Y2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7
IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsg
NCk7IGNhc2UgNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVu
c2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIg
KikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJl
YWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRl
bnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBf
X2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsgX19i
dWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YocmVxKSk7IF9fczsgfSkgOiBtZW1zZXQg
KCZyZXEsIDAsIHNpemVvZihyZXEpKSkpKTsKICAgICAgICAgICAgcmVxLmF1eEFyZy5wdHIgPSB0
YmxIOwogICAgICAgICAgICByZXEub3BycyA9IHRpLT5hdHJlZU9wcnM7CiAgICAgICAgICAgIHJl
dFZhbCA9IEF0cmVlT3BlblRyZWUoJnJlcSwgZlNwZWMtPmZsZEluZGV4VHJlZSwgMCk7CiAgICAg
ICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkgewogICAgICAgICAgICAgICAgQXRyZWVJZHggbm9k
ZTsKICAgICAgICAgICAgICAgIFNkYm1GbGRJZHhEYXRhIG5vZGVEYXRhOwogICAgICAgICAgICAg
ICAgaWYobG93ZXJFZGdlKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IEF0cmVlTmV4dE5v
ZGUoJnJlcSwgMCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
IG5vZGUgPSBBdHJlZVByZXZOb2RlKCZyZXEsIDApOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgaWYobm9kZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgQXRyZWVHZXREYXRh
KCZyZXEsIG5vZGUsICYobm9kZURhdGEudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICB0YXJn
ZXREYXRhID0gbm9kZURhdGEudmFsLmZsZDsKICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBT
ZGJtR2V0RmxkQm9keSh0YmxILCB0YXJnZXREYXRhLCAmdGFyZ2V0KTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIEF0cmVlQ2xvc2VUcmVlKCZyZXEpOwogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgfQogICAgaWYoKChyZXRWYWwpID49IDApICYmICh0YXJnZXQgIT0gKCh2b2lk
ICopMCkpKSB7CiAgICAgICAgU2RibURhdGFJZCBkYXRhSWQ7CiAgICAgICAgU2RibUZsZERhdGFJ
ZHggc3ViRGF0YUlkeCA9IDA7CiAgICAgICAgZGF0YUlkLmV4dGVybmFsID0gMExMOwogICAgICAg
IHJldFZlY0lkeCA9IHRhcmdldC0+dmVjdG9ySWR4OwoKICAgICAgICBpZihvcmlnU3BlYy0+Zmxk
VHlwZSA9PSAweDgwKSB7CiAgICAgICAgICAgIHJldFZhbCA9IFNkYm1NYXBUYmxQbGFpbih0YmxI
LCA2KTsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICBT
ZGJtUmVjRW50eSogdG9SZWMgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgIHJldFZhbCA9
IFNkYm1HZXRSZWNFbnR5UHRyKHRibEgsIHRhcmdldC0+cmVjSWR4LCAmdG9SZWMpOwogICAgICAg
ICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgICAgICAgICAgICAgU2RibUZs
ZERhdGFJZHggbGkgPSAwOwogICAgICAgICAgICAgICAgICAgIFNkYm1GbGREYXRhSWR4IGxpVG9w
ID0gMDsKICAgICAgICAgICAgICAgICAgICBTZGJtVGFibGVObyBvcmlnVGJsTm8gPSBvcmlnVGJs
SC0+dGJsTm87CiAgICAgICAgICAgICAgICAgICAgU2RibUZsZE5vIG9yaWdGbGRObyA9IG9yaWdT
cGVjLT5mbGRObzsKICAgICAgICAgICAgICAgICAgICBTZGJtRmxkTm8gdG9GbGRObyA9IGZTcGVj
LT5mbGRObzsKCiAgICAgICAgICAgICAgICAgICAgbGlUb3AgPSBsaSA9IFNkYm1MaW5rZWRGbGRz
TmV4dEZyb21SZWModGJsSCwgdG9SZWMsIHRvRmxkTm8sIDApOwogICAgICAgICAgICAgICAgICAg
IGlmKGxpVG9wKSBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNkYm1MaW5rZWRGbGRJbmZv
KiBsZmkgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgICAgICAgICAgU2RibUdldExpbmtl
ZEZsZEluZm8odGJsSCwgbGksICZsZmkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigobGZp
LT5saW5rRnJvbS5pLnRhYmxlTm8gPT0gb3JpZ1RibE5vKSAmJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAobGZpLT5saW5rRnJvbS5pLmZsZE5vID09IG9yaWdGbGRObykpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1YkRhdGFJZHggPSBsaTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsaSA9IFNkYm1MaW5rZWRGbGRzTmV4dEZyb21S
ZWModGJsSCwgdG9SZWMsIHRvRmxkTm8sIGxpKTsKICAgICAgICAgICAgICAgICAgICB9IHdoaWxl
IChsaSAhPSBsaVRvcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgcmV0VmFsID0gU2RibUdldFJlY0Zyb21EYXRhSWR4KG9yaWdUYmxILCBvcmlnU3Bl
YywgdGFyZ2V0RGF0YSwgc3ViRGF0YUlkeCwgJmRhdGFJZCk7CiAgICAgICAgcmV0UmVjID0gZGF0
YUlkLmV4dGVybmFsOwogICAgfQogICAgaWYodG9UYmxIKSB7CiAgICAgICAgU2RibVJlbGVhc2VU
YWJsZUhhbmRsZSh0b1RibEgsIDEpOwogICAgfQogICAgZWxtUC0+cmVjb3JkID0gcmV0UmVjOwog
ICAgZWxtUC0+dmVjSWR4ID0gcmV0VmVjSWR4OwogICAgcmV0dXJuIChyZXRWYWwpOwp9CgppbnQK
U2RibUxpc3REYXRhKFNkYm1UYWJsZUhhbmRsZSogdGJsSCwgU2RibUZsZFNwZWMqIGZTcGVjLAog
ICAgICAgICAgICAgU2RibVJlY0lkIHJlY3NbXSwgTnVtIG51bVJlY3MsIE51bSogcmVhbFJlY3Ms
CiAgICAgICAgICAgICBTZGJtRmxkRWxtUHRyIGFsbExpc3RbXSwgTnVtIG51bUFsbCwgTnVtKiBy
ZWFsQWxsLAogICAgICAgICAgICAgU2RibUZsZEVsbVB0ciB1bmlxTGlzdFtdLCBOdW0gbnVtVW5p
cSwgTnVtKiByZWFsVW5pcSkKewogICAgaW50IHJldFZhbCA9IDA7CiAgICBTZGJtRmxkU3BlYyog
b3JpZ1NwZWMgPSBmU3BlYzsKICAgIFNkYm1UYWJsZUhhbmRsZSogb3JpZ1RibEggPSB0YmxIOwog
ICAgU2RibVRhYmxlSGFuZGxlKiB0b1RibEggPSAoKHZvaWQgKikwKTsKICAgIE51bSBpZHhSZWM9
MCwgaWR4QWxsPTAsIGlkeFVuaXE9MDsKCiAgICBzdGF0aWMgaW50IEdldERhdGFJZChTZGJtRmxk
Qm9keSogdGFyZ2V0LCBTZGJtRmxkRGF0YUlkeCB0YXJnZXREYXRhLCBTZGJtRGF0YUlkKiBkYXRh
SWRQKSB7CiAgICAgICAgaW50IHJldENvZGUgPSAwOwogICAgICAgIFNkYm1EYXRhSWQgZGF0YUlk
OwogICAgICAgIFNkYm1GbGREYXRhSWR4IHN1YkRhdGFJZHggPSAwOwoKICAgICAgICA7CiAgICAg
ICAgZGF0YUlkLmV4dGVybmFsID0gMExMOwogICAgICAgIHJldENvZGUgPSBTZGJtTWFwVGJsUGxh
aW4odGJsSCwgNik7CiAgICAgICAgaWYoKChyZXRDb2RlKSA+PSAwKSkgewogICAgICAgICAgICBT
ZGJtUmVjRW50eSogdG9SZWMgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgcmV0Q29kZSA9IFNk
Ym1HZXRSZWNFbnR5UHRyKHRibEgsIHRhcmdldC0+cmVjSWR4LCAmdG9SZWMpOwogICAgICAgICAg
ICBpZigoKHJldENvZGUpID49IDApKSB7CiAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBs
aSA9IDA7CiAgICAgICAgICAgICAgICBTZGJtRmxkRGF0YUlkeCBsaVRvcCA9IDA7CiAgICAgICAg
ICAgICAgICBTZGJtVGFibGVObyBvcmlnVGJsTm8gPSBvcmlnVGJsSC0+dGJsTm87CiAgICAgICAg
ICAgICAgICBTZGJtRmxkTm8gb3JpZ0ZsZE5vID0gb3JpZ1NwZWMtPmZsZE5vOwogICAgICAgICAg
ICAgICAgU2RibUZsZE5vIHRvRmxkTm8gPSBmU3BlYy0+ZmxkTm87CgogICAgICAgICAgICAgICAg
bGlUb3AgPSBsaSA9IFNkYm1MaW5rZWRGbGRzTmV4dEZyb21SZWModGJsSCwgdG9SZWMsIHRvRmxk
Tm8sIDApOwogICAgICAgICAgICAgICAgaWYobGlUb3ApIGRvIHsKICAgICAgICAgICAgICAgICAg
ICBTZGJtTGlua2VkRmxkSW5mbyogbGZpID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICAg
ICAgU2RibUdldExpbmtlZEZsZEluZm8odGJsSCwgbGksICZsZmkpOwogICAgICAgICAgICAgICAg
ICAgIGlmKChsZmktPmxpbmtGcm9tLmkudGFibGVObyA9PSBvcmlnVGJsTm8pICYmCiAgICAgICAg
ICAgICAgICAgICAgICAgKGxmaS0+bGlua0Zyb20uaS5mbGRObyA9PSBvcmlnRmxkTm8pKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YkRhdGFJZHggPSBsaTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgbGkgPSBTZGJtTGlua2VkRmxkc05leHRGcm9tUmVjKHRi
bEgsIHRvUmVjLCB0b0ZsZE5vLCBsaSk7CiAgICAgICAgICAgICAgICB9IHdoaWxlIChsaSAhPSBs
aVRvcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0VmFsID0gU2RibUdldFJl
Y0Zyb21EYXRhSWR4KG9yaWdUYmxILCBvcmlnU3BlYywgdGFyZ2V0RGF0YSwgc3ViRGF0YUlkeCwg
JmRhdGFJZCk7CiAgICAgICAgKmRhdGFJZFAgPSBkYXRhSWQ7CiAgICAgICAgcmV0dXJuIChyZXRD
b2RlKTsKICAgIH0KCiAgICBzdGF0aWMgaW50IFN0b3JlRGF0YShBdHJlZVJlcSogcmVxUCwgQXRy
ZWVJZHggbm9kZSkgewogICAgICAgIFNkYm1GbGRCb2R5KiB0YXJnZXQgPSAoKHZvaWQgKikwKTsK
ICAgICAgICBpbnQgcmV0Q29kZSA9IDA7CiAgICAgICAgU2RibUZsZElkeERhdGEgbm9kZURhdGE7
CiAgICAgICAgU2RibUZsZERhdGFJZHggdGFyZ2V0RGF0YSA9IDA7CiAgICAgICAgU2RibURhdGFJ
ZCBkYXRhSWQ7CgogICAgICAgIDsKICAgICAgICBBdHJlZUdldERhdGEocmVxUCwgbm9kZSwgJihu
b2RlRGF0YS52YWx1ZSkpOwogICAgICAgIHRhcmdldERhdGEgPSBub2RlRGF0YS52YWwuZmxkOwog
ICAgICAgIHJldENvZGUgPSBTZGJtR2V0RmxkQm9keSh0YmxILCB0YXJnZXREYXRhLCAmdGFyZ2V0
KTsKICAgICAgICBpZigoKHJldENvZGUpID49IDApKSB7CiAgICAgICAgICAgIHJldENvZGUgPSBH
ZXREYXRhSWQodGFyZ2V0LCB0YXJnZXREYXRhLCAmZGF0YUlkKTsKICAgICAgICAgICAgaWYoKChy
ZXRDb2RlKSA+PSAwKSkgewogICAgICAgICAgICAgICAgaWYoaWR4QWxsIDwgbnVtQWxsKSB7CiAg
ICAgICAgICAgICAgICAgICAgYWxsTGlzdFtpZHhBbGxdLnJlY29yZCA9IGRhdGFJZC5leHRlcm5h
bDsKICAgICAgICAgICAgICAgICAgICBhbGxMaXN0W2lkeEFsbF0udmVjSWR4ID0gdGFyZ2V0LT52
ZWN0b3JJZHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZHhBbGwgKys7CiAg
ICAgICAgICAgICAgICBpZihBdHJlZUlzVW5pcXVlTm9kZShyZXFQLCBub2RlKSkgewogICAgICAg
ICAgICAgICAgICAgIGlmKGlkeFVuaXEgPCBudW1VbmlxKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaXFMaXN0W2lkeFVuaXFdLnJlY29yZCA9IGRhdGFJZC5leHRlcm5hbDsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pcUxpc3RbaWR4VW5pcV0udmVjSWR4ID0gdGFyZ2V0LT52ZWN0b3JJ
ZHg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlkeFVuaXEgKys7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZih0YXJnZXQtPnNvcnRMaXN0LmJr
d2QgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmKGlkeFJlYyA8IG51bVJlY3MpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjc1tpZHhSZWNdID0gZGF0YUlkLmV4dGVybmFsOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZHhSZWMgKys7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIChyZXRDb2Rl
KTsKICAgIH0KCiAgICBzdGF0aWMgaW50IExpc3REYXRhcyhjb25zdCBTZGJtRmxkVHlwZUluZm8q
IHRpKSB7CiAgICAgICAgaW50IHJldENvZGUgPSAwOwogICAgICAgIEF0cmVlUmVxIHJlcTsKCiAg
ICAgICAgOwogICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6
ZW9mKHJlcSkpICYmIChzaXplb2YocmVxKSkgPD0gMTYgPyAoKHNpemVvZihyZXEpKSA9PSAxID8g
KHsgdm9pZCAqX19zID0gKCZyZXEpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3Qp
IDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJnJlcSk7IHVuaW9uIHsgdW5zaWduZWQgaW50
IF9fdWk7IHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpf
X3UgPSBfX3M7IF9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoMCk7IHN3aXRjaCAoKHVuc2ln
bmVkIGludCkgKHNpemVvZihyZXEpKSkgeyBjYXNlIDE1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBj
YXNlIDExOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9f
ICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7
IGNhc2UgMzogX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsg
X191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsgX191LT5fX3Vj
ID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsg
NCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNjogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgw
MTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFy
ICopIF9fdSArIDQpOyBjYXNlIDU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9
IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5f
X3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191
ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgODogX191LT5fX3VpID0g
X19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBf
X3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJy
ZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1ww
JyA/ICh7IHZvaWQgKl9fcyA9ICgmcmVxKTsgX19idWlsdGluX21lbXNldCAoX19zLCAnXDAnLCBz
aXplb2YocmVxKSk7IF9fczsgfSkgOiBtZW1zZXQgKCZyZXEsIDAsIHNpemVvZihyZXEpKSkpKTsK
ICAgICAgICByZXEuYXV4QXJnLnB0ciA9IHRibEg7CiAgICAgICAgcmVxLm9wcnMgPSB0aS0+YXRy
ZWVPcHJzOwogICAgICAgIHJldENvZGUgPSBBdHJlZU9wZW5UcmVlKCZyZXEsIGZTcGVjLT5mbGRJ
bmRleFRyZWUsIDApOwogICAgICAgIGlmKCgocmV0Q29kZSkgPj0gMCkpIHsKICAgICAgICAgICAg
QXRyZWVJZHggbm9kZSA9IDA7CgogICAgICAgICAgICB3aGlsZSgobm9kZSA9IEF0cmVlTmV4dE5v
ZGUoJnJlcSwgbm9kZSkpKSB7CiAgICAgICAgICAgICAgICBTdG9yZURhdGEoJnJlcSwgbm9kZSk7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQXRyZWVDbG9zZVRyZWUoJnJlcSk7CiAgICAgICAg
fQogICAgICAgIHJldHVybiAocmV0Q29kZSk7CiAgICB9CgogICAgOwogICAgaWYocmVjcyA9PSAo
KHZvaWQgKikwKSkgewogICAgICAgIG51bVJlY3MgPSAwOwogICAgfSBlbHNlIGlmKG51bVJlY3Mg
PD0gMCkgewogICAgICAgIG51bVJlY3MgPSAwOwogICAgICAgIHJlY3MgPSAoKHZvaWQgKikwKTsK
ICAgIH0KICAgIGlmKGFsbExpc3QgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICBudW1BbGwgPSAw
OwogICAgfSBlbHNlIGlmKG51bUFsbCA8PSAwKSB7CiAgICAgICAgbnVtQWxsID0gMDsKICAgICAg
ICBhbGxMaXN0ID0gKCh2b2lkICopMCk7CiAgICB9CiAgICBpZih1bmlxTGlzdCA9PSAoKHZvaWQg
KikwKSkgewogICAgICAgIG51bVVuaXEgPSAwOwogICAgfSBlbHNlIGlmKG51bVVuaXEgPD0gMCkg
ewogICAgICAgIG51bVVuaXEgPSAwOwogICAgICAgIHVuaXFMaXN0ID0gKCh2b2lkICopMCk7CiAg
ICB9CiAgICBpZihmU3BlYy0+ZmxkVHlwZSA9PSAweDgwKSB7CiAgICAgICAgU2RibUZsZERlZkxp
bmtJbmZvIGxpRGVmOwoKICAgICAgICBsaURlZi53aG9sZSA9IGZTcGVjLT5mbGRBdXhUeXBlOwog
ICAgICAgIHJldFZhbCA9IFNkYm1PcGVuVGFibGVCeUFub3RoZXJUYWJsZSh0YmxILCBsaURlZi5k
ZXRhaWwubGlua1RvVGFibGUsICZ0b1RibEgpOwogICAgICAgIGlmKCgocmV0VmFsKSA+PSAwKSkg
ewogICAgICAgICAgICByZXRWYWwgPSBTZGJtR2V0RmxkU3BlYyh0b1RibEgsIGxpRGVmLmRldGFp
bC5saW5rVG9GbGRObywgJmZTcGVjKTsKICAgICAgICAgICAgaWYoKChyZXRWYWwpID49IDApKSB7
CiAgICAgICAgICAgICAgICB0YmxIID0gdG9UYmxIOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfQogICAgaWYoKChyZXRWYWwpID49IDApKSB7CiAgICAgICAgY29uc3QgU2RibUZsZFR5cGVJ
bmZvKiB0aTsKICAgICAgICB0aSA9IChnU2RibUZsZFR5cGVzW2ZTcGVjLT5mbGRUeXBlXSk7CiAg
ICAgICAgaWYoKHRpKSAmJiAodGktPmZtdFR5cGUgPT0gZlNwZWMtPmZsZFR5cGUpICYmICh0aS0+
c2VhcmNoRGF0YSkgJiYgKCEgdGktPm5vbmVTb3J0ZWQpKSB7CiAgICAgICAgICAgIHJldFZhbCA9
IExpc3REYXRhcyh0aSk7CiAgICAgICAgfQogICAgfQogICAgaWYodG9UYmxIKSB7CiAgICAgICAg
U2RibVJlbGVhc2VUYWJsZUhhbmRsZSh0b1RibEgsIDEpOwogICAgfQogICAgaWYocmVhbFJlY3Mp
CiAgICAgICAgKnJlYWxSZWNzID0gaWR4UmVjOwogICAgaWYocmVhbEFsbCkKICAgICAgICAqcmVh
bEFsbCA9IGlkeEFsbDsKICAgIGlmKHJlYWxVbmlxKQogICAgICAgICpyZWFsVW5pcSA9IGlkeFVu
aXE7CgogICAgcmV0dXJuIChyZXRWYWwpOwp9Cg==


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-08-21 10:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-21  3:46 c/7675: Internal compiler error in fixup_var_refs_1 sowhat

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).