This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/8682: gcc crashes compiling this file


>Number:         8682
>Category:       c++
>Synopsis:       gcc crashes compiling this file
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Nov 22 12:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     sb@biallas.net
>Release:        unknown-1.0
>Organization:
>Environment:
Gentoo Linux with gcc 3.2

sh-2.05a$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: /var/tmp/portage/gcc-3.2-r1/work/gcc-3.2/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,ada,f77,objc,java --enable-threads=posix --enable-long-long --disable-checking --enable-cstdio=stdio --enable-clocale=generic --enable-__cxa_atexit --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/include/g++-v32 --with-local-prefix=/usr/local --enable-shared --enable-nls --without-included-gettext
Thread model: posix
gcc version 3.2
>Description:
gcc crashes when I try to compile this (attached) file.
It's from BillardGL and preprocessed.
>How-To-Repeat:
gcc -c -o Benutzerschnittstelle.o Benutzerschnittstelle.ii
>Fix:

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

IyAxICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNv
bW1hbmQgbGluZT4iCiMgMSAiQmVudXR6ZXJzY2huaXR0c3RlbGxlLmNwcCIKCgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvR0wvZ2x1dC5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRlL0dML2dsdXQuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9HTC9nbC5oIiAxIDMKIyA3OSAiL3Vzci9pbmNsdWRlL0dML2ds
LmgiIDMKZXh0ZXJuICJDIiB7CiMgOTcgIi91c3IvaW5jbHVkZS9HTC9nbC5oIiAzCnR5cGVkZWYg
dW5zaWduZWQgaW50IEdMZW51bTsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMYm9vbGVhbjsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgR0xiaXRmaWVsZDsKdHlwZWRlZiB2b2lkIEdMdm9pZDsKdHlwZWRl
ZiBzaWduZWQgY2hhciBHTGJ5dGU7CnR5cGVkZWYgc2hvcnQgR0xzaG9ydDsKdHlwZWRlZiBpbnQg
R0xpbnQ7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBHTHVieXRlOwp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IEdMdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBHTHVpbnQ7CnR5cGVkZWYgaW50IEdM
c2l6ZWk7CnR5cGVkZWYgZmxvYXQgR0xmbG9hdDsKdHlwZWRlZiBmbG9hdCBHTGNsYW1wZjsKdHlw
ZWRlZiBkb3VibGUgR0xkb3VibGU7CnR5cGVkZWYgZG91YmxlIEdMY2xhbXBkOwojIDg2OCAiL3Vz
ci9pbmNsdWRlL0dML2dsLmgiIDMKZXh0ZXJuIHZvaWQgZ2xDbGVhckluZGV4KCBHTGZsb2F0IGMg
KTsKCmV4dGVybiB2b2lkIGdsQ2xlYXJDb2xvciggR0xjbGFtcGYgcmVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2xhbXBmIGJsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYWxwaGEgKTsK
CmV4dGVybiB2b2lkIGdsQ2xlYXIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xJ
bmRleE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbENvbG9yTWFzayggR0xib29s
ZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xBbHBoYUZ1bmMoIEdM
ZW51bSBmdW5jLCBHTGNsYW1wZiByZWYgKTsKCmV4dGVybiB2b2lkIGdsQmxlbmRGdW5jKCBHTGVu
dW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGdsTG9naWNPcCggR0xl
bnVtIG9wY29kZSApOwoKZXh0ZXJuIHZvaWQgZ2xDdWxsRmFjZSggR0xlbnVtIG1vZGUgKTsKCmV4
dGVybiB2b2lkIGdsRnJvbnRGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xQb2lu
dFNpemUoIEdMZmxvYXQgc2l6ZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lV2lkdGgoIEdMZmxvYXQg
d2lkdGggKTsKCmV4dGVybiB2b2lkIGdsTGluZVN0aXBwbGUoIEdMaW50IGZhY3RvciwgR0x1c2hv
cnQgcGF0dGVybiApOwoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29uTW9kZSggR0xlbnVtIGZhY2UsIEdM
ZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25PZmZzZXQoIEdMZmxvYXQgZmFjdG9y
LCBHTGZsb2F0IHVuaXRzICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25TdGlwcGxlKCBjb25zdCBH
THVieXRlICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEdldFBvbHlnb25TdGlwcGxlKCBHTHVieXRl
ICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEVkZ2VGbGFnKCBHTGJvb2xlYW4gZmxhZyApOwoKZXh0
ZXJuIHZvaWQgZ2xFZGdlRmxhZ3YoIGNvbnN0IEdMYm9vbGVhbiAqZmxhZyApOwoKZXh0ZXJuIHZv
aWQgZ2xTY2lzc29yKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKCmV4dGVybiB2b2lkIGds
Q2xpcFBsYW5lKCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVhdGlvbiApOwoKZXh0
ZXJuIHZvaWQgZ2xHZXRDbGlwUGxhbmUoIEdMZW51bSBwbGFuZSwgR0xkb3VibGUgKmVxdWF0aW9u
ICk7CgpleHRlcm4gdm9pZCBnbERyYXdCdWZmZXIoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9p
ZCBnbFJlYWRCdWZmZXIoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbEVuYWJsZSggR0xl
bnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlKCBHTGVudW0gY2FwICk7CgpleHRlcm4g
R0xib29sZWFuIGdsSXNFbmFibGVkKCBHTGVudW0gY2FwICk7CgoKZXh0ZXJuIHZvaWQgZ2xFbmFi
bGVDbGllbnRTdGF0ZSggR0xlbnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlQ2xpZW50
U3RhdGUoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gdm9pZCBnbEdldEJvb2xlYW52KCBHTGVudW0g
cG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldERvdWJsZXYoIEdM
ZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRGbG9hdHYo
IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldEludGVn
ZXJ2KCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRlcm4gdm9pZCBnbFB1c2hB
dHRyaWIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BBdHRyaWIoIHZvaWQg
KTsKCgpleHRlcm4gdm9pZCBnbFB1c2hDbGllbnRBdHRyaWIoIEdMYml0ZmllbGQgbWFzayApOwoK
ZXh0ZXJuIHZvaWQgZ2xQb3BDbGllbnRBdHRyaWIoIHZvaWQgKTsKCgpleHRlcm4gR0xpbnQgZ2xS
ZW5kZXJNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIEdMZW51bSBnbEdldEVycm9yKCB2b2lk
ICk7CgpleHRlcm4gY29uc3QgR0x1Ynl0ZSogZ2xHZXRTdHJpbmcoIEdMZW51bSBuYW1lICk7Cgpl
eHRlcm4gdm9pZCBnbEZpbmlzaCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xGbHVzaCggdm9pZCAp
OwoKZXh0ZXJuIHZvaWQgZ2xIaW50KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSApOwoKCgoK
CgoKZXh0ZXJuIHZvaWQgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCApOwoKZXh0ZXJuIHZv
aWQgZ2xEZXB0aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gdm9pZCBnbERlcHRoTWFzaygg
R0xib29sZWFuIGZsYWcgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhSYW5nZSggR0xjbGFtcGQgbmVh
cl92YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xDbGVhckFjY3Vt
KCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsKCmV4dGVybiB2b2lkIGds
QWNjdW0oIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xN
YXRyaXhNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xPcnRobyggR0xkb3VibGUg
bGVmdCwgR0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xkb3VibGUgZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQg
Z2xGcnVzdHVtKCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xkb3VibGUg
ZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQgZ2xWaWV3cG9ydCggR0xpbnQgeCwgR0xpbnQgeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuIHZvaWQg
Z2xQb3BNYXRyaXgoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsTG9hZElkZW50aXR5KCB2b2lkICk7
CgpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwpleHRlcm4g
dm9pZCBnbExvYWRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRlcm4gdm9pZCBnbE11
bHRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwpleHRlcm4gdm9pZCBnbE11bHRNYXRyaXhm
KCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRlcm4gdm9pZCBnbFJvdGF0ZWQoIEdMZG91YmxlIGFu
Z2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgsIEdMZG91
YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xSb3RhdGVmKCBHTGZsb2F0IGFuZ2xl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkIGdsU2NhbGVkKCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lkIGdsU2NhbGVmKCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6ICk7CgpleHRlcm4gdm9pZCBnbFRyYW5zbGF0ZWQoIEdMZG91YmxlIHgs
IEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xUcmFuc2xhdGVmKCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgoKCgoKCgpleHRlcm4gR0xib29sZWFuIGds
SXNMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuIHZvaWQgZ2xEZWxldGVMaXN0cyggR0x1aW50
IGxpc3QsIEdMc2l6ZWkgcmFuZ2UgKTsKCmV4dGVybiBHTHVpbnQgZ2xHZW5MaXN0cyggR0xzaXpl
aSByYW5nZSApOwoKZXh0ZXJuIHZvaWQgZ2xOZXdMaXN0KCBHTHVpbnQgbGlzdCwgR0xlbnVtIG1v
ZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5kTGlzdCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xDYWxs
TGlzdCggR0x1aW50IGxpc3QgKTsKCmV4dGVybiB2b2lkIGdsQ2FsbExpc3RzKCBHTHNpemVpIG4s
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICpsaXN0cyApOwoKZXh0ZXJuIHZvaWQgZ2xMaXN0QmFzZSggR0x1aW50IGJhc2UgKTsK
CgoKCgoKCmV4dGVybiB2b2lkIGdsQmVnaW4oIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBn
bEVuZCggdm9pZCApOwoKCmV4dGVybiB2b2lkIGdsVmVydGV4MmQoIEdMZG91YmxlIHgsIEdMZG91
YmxlIHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZiggR0xmbG9hdCB4LCBHTGZsb2F0IHkgKTsK
ZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyaSggR0xpbnQgeCwgR0xpbnQgeSApOwpleHRlcm4gdm9pZCBn
bFZlcnRleDJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgz
ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gdm9pZCBnbFZl
cnRleDNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CmV4dGVybiB2b2lkIGds
VmVydGV4M2koIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHogKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXgzcyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiApOwoKZXh0ZXJuIHZvaWQgZ2xW
ZXJ0ZXg0ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyAp
OwpleHRlcm4gdm9pZCBnbFZlcnRleDRmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6
LCBHTGZsb2F0IHcgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0aSggR0xpbnQgeCwgR0xpbnQgeSwg
R0xpbnQgeiwgR0xpbnQgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzKCBHTHNob3J0IHgsIEdM
c2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcgKTsKCmV4dGVybiB2b2lkIGdsVmVydGV4MmR2
KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJmdiggY29uc3QgR0xm
bG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0
ZXJuIHZvaWQgZ2xWZXJ0ZXgyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGds
VmVydGV4M2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNmdigg
Y29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNpdiggY29uc3QgR0xpbnQg
KnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVy
biB2b2lkIGdsVmVydGV4NGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFZl
cnRleDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRpdiggY29u
c3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0c3YoIGNvbnN0IEdMc2hvcnQgKnYg
KTsKCgpleHRlcm4gdm9pZCBnbE5vcm1hbDNiKCBHTGJ5dGUgbngsIEdMYnl0ZSBueSwgR0xieXRl
IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2QoIEdMZG91YmxlIG54LCBHTGRvdWJsZSBueSwg
R0xkb3VibGUgbnogKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZiggR0xmbG9hdCBueCwgR0xmbG9h
dCBueSwgR0xmbG9hdCBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNpKCBHTGludCBueCwgR0xp
bnQgbnksIEdMaW50IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM3MoIEdMc2hvcnQgbngsIEdM
c2hvcnQgbnksIEdMc2hvcnQgbnogKTsKCmV4dGVybiB2b2lkIGdsTm9ybWFsM2J2KCBjb25zdCBH
TGJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7
CmV4dGVybiB2b2lkIGdsTm9ybWFsM2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lk
IGdsTm9ybWFsM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNzdigg
Y29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsSW5kZXhkKCBHTGRvdWJsZSBjICk7
CmV4dGVybiB2b2lkIGdsSW5kZXhmKCBHTGZsb2F0IGMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleGko
IEdMaW50IGMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHMoIEdMc2hvcnQgYyApOwpleHRlcm4gdm9p
ZCBnbEluZGV4dWIoIEdMdWJ5dGUgYyApOwoKZXh0ZXJuIHZvaWQgZ2xJbmRleGR2KCBjb25zdCBH
TGRvdWJsZSAqYyApOwpleHRlcm4gdm9pZCBnbEluZGV4ZnYoIGNvbnN0IEdMZmxvYXQgKmMgKTsK
ZXh0ZXJuIHZvaWQgZ2xJbmRleGl2KCBjb25zdCBHTGludCAqYyApOwpleHRlcm4gdm9pZCBnbElu
ZGV4c3YoIGNvbnN0IEdMc2hvcnQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHVidiggY29uc3Qg
R0x1Ynl0ZSAqYyApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNiKCBHTGJ5dGUgcmVkLCBHTGJ5dGUg
Z3JlZW4sIEdMYnl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZCggR0xkb3VibGUgcmVk
LCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM2Yo
IEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUgKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjNpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlICk7CmV4dGVybiB2
b2lkIGdsQ29sb3IzcyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSAp
OwpleHRlcm4gdm9pZCBnbENvbG9yM3ViKCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1
Ynl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdWkoIEdMdWludCByZWQsIEdMdWludCBn
cmVlbiwgR0x1aW50IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1cyggR0x1c2hvcnQgcmVk
LCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRi
KCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9yNGQo
IEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgYmx1ZSwgR0xkb3VibGUgYWxwaGEgKTsKZXh0ZXJuIHZvaWQgZ2xD
b2xvcjRmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjRpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGJsdWUsIEdMaW50IGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29s
b3I0cyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaG9ydCBibHVlLCBHTHNob3J0IGFscGhhICk7CmV4dGVybiB2b2lkIGds
Q29sb3I0dWIoIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVieXRlIGJsdWUsIEdMdWJ5dGUgYWxwaGEgKTsKZXh0ZXJuIHZv
aWQgZ2xDb2xvcjR1aSggR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhhICk7CmV4dGVybiB2
b2lkIGdsQ29sb3I0dXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdXNob3J0IGJsdWUsIEdMdXNob3J0IGFscGhhICk7
CgoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNidiggY29uc3QgR0xieXRlICp2ICk7CmV4dGVybiB2b2lk
IGdsQ29sb3IzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZnYo
IGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNpdiggY29uc3QgR0xpbnQg
KnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNzdiggY29uc3QgR0xzaG9ydCAqdiApOwpleHRlcm4g
dm9pZCBnbENvbG9yM3VidiggY29uc3QgR0x1Ynl0ZSAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9y
M3VpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdXN2KCBjb25zdCBH
THVzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRidiggY29uc3QgR0xieXRlICp2ICk7
CmV4dGVybiB2b2lkIGdsQ29sb3I0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lk
IGdsQ29sb3I0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRpdigg
Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRzdiggY29uc3QgR0xzaG9ydCAq
diApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVidiggY29uc3QgR0x1Ynl0ZSAqdiApOwpleHRlcm4g
dm9pZCBnbENvbG9yNHVpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0
dXN2KCBjb25zdCBHTHVzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZCggR0xk
b3VibGUgcyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWYoIEdMZmxvYXQgcyApOwpleHRlcm4g
dm9pZCBnbFRleENvb3JkMWkoIEdMaW50IHMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFzKCBH
THNob3J0IHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZCggR0xkb3VibGUgcywgR0xkb3Vi
bGUgdCApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmYoIEdMZmxvYXQgcywgR0xmbG9hdCB0ICk7
CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyaSggR0xpbnQgcywgR0xpbnQgdCApOwpleHRlcm4gdm9p
ZCBnbFRleENvb3JkMnMoIEdMc2hvcnQgcywgR0xzaG9ydCB0ICk7CgpleHRlcm4gdm9pZCBnbFRl
eENvb3JkM2QoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIgKTsKZXh0ZXJuIHZv
aWQgZ2xUZXhDb29yZDNmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByICk7CmV4dGVy
biB2b2lkIGdsVGV4Q29vcmQzaSggR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciApOwpleHRlcm4g
dm9pZCBnbFRleENvb3JkM3MoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIgKTsKCmV4
dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZCggR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUg
ciwgR0xkb3VibGUgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGYoIEdMZmxvYXQgcywgR0xm
bG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGko
IEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhD
b29yZDRzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEgKTsKCmV4
dGVybiB2b2lkIGdsVGV4Q29vcmQxZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lk
IGdsVGV4Q29vcmQxZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y
ZDFpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFzdiggY29uc3Qg
R0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkdiggY29uc3QgR0xkb3VibGUg
KnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRl
cm4gdm9pZCBnbFRleENvb3JkMml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRl
eENvb3JkMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkM2R2
KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM2Z2KCBjb25zdCBH
TGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzaXYoIGNvbnN0IEdMaW50ICp2ICk7
CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2
b2lkIGdsVGV4Q29vcmQ0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4
Q29vcmQ0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRpdigg
Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRzdiggY29uc3QgR0xzaG9y
dCAqdiApOwoKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmQoIEdMZG91YmxlIHgsIEdMZG91Ymxl
IHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZiggR0xmbG9hdCB4LCBHTGZsb2F0IHkgKTsK
ZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyaSggR0xpbnQgeCwgR0xpbnQgeSApOwpleHRlcm4gdm9p
ZCBnbFJhc3RlclBvczJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0ZXJuIHZvaWQgZ2xS
YXN0ZXJQb3MzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4g
dm9pZCBnbFJhc3RlclBvczNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CmV4
dGVybiB2b2lkIGdsUmFzdGVyUG9zM2koIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHogKTsKZXh0
ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzcyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiAp
OwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeiwgR0xkb3VibGUgdyApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRmKCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0
ZXJQb3M0aSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyApOwpleHRlcm4gdm9p
ZCBnbFJhc3RlclBvczRzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0
IHcgKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpl
eHRlcm4gdm9pZCBnbFJhc3RlclBvczJmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9p
ZCBnbFJhc3RlclBvczJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQ
b3Myc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2R2KCBj
b25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNmdiggY29uc3QgR0xm
bG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNpdiggY29uc3QgR0xpbnQgKnYgKTsK
ZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3Mzc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2
b2lkIGdsUmFzdGVyUG9zNGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJh
c3RlclBvczRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRp
diggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0c3YoIGNvbnN0IEdM
c2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkKCBHTGRvdWJsZSB4MSwgR0xkb3VibGUg
eTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MiApOwpleHRlcm4gdm9pZCBnbFJlY3RmKCBHTGZs
b2F0IHgxLCBHTGZsb2F0IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyICk7CmV4dGVybiB2b2lk
IGdsUmVjdGkoIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyICk7CmV4dGVy
biB2b2lkIGdsUmVjdHMoIEdMc2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hvcnQgeDIsIEdMc2hv
cnQgeTIgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkdiggY29uc3QgR0xkb3VibGUgKnYxLCBjb25z
dCBHTGRvdWJsZSAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0ZnYoIGNvbnN0IEdMZmxvYXQgKnYx
LCBjb25zdCBHTGZsb2F0ICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3RpdiggY29uc3QgR0xpbnQg
KnYxLCBjb25zdCBHTGludCAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0c3YoIGNvbnN0IEdMc2hv
cnQgKnYxLCBjb25zdCBHTHNob3J0ICp2MiApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXhQ
b2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcHRyICk7CgpleHRl
cm4gdm9pZCBnbE5vcm1hbFBvaW50ZXIoIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsK
CmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3Qg
R0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsSW5kZXhQb2ludGVyKCBHTGVudW0gdHlwZSwg
R0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmRQb2ludGVyKCBHTGludCBz
aXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsRWRn
ZUZsYWdQb2ludGVyKCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVy
biB2b2lkIGdsR2V0UG9pbnRlcnYoIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyApOwoKZXh0
ZXJuIHZvaWQgZ2xBcnJheUVsZW1lbnQoIEdMaW50IGkgKTsKCmV4dGVybiB2b2lkIGdsRHJhd0Fy
cmF5cyggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50ICk7CgpleHRlcm4g
dm9pZCBnbERyYXdFbGVtZW50cyggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQgZ2xJbnRlcmxlYXZlZEFycmF5cyggR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIgKTsKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xTaGFkZU1v
ZGVsKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaWdodGYoIEdMZW51bSBsaWdodCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTGlnaHRpKCBHTGVu
dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdo
dGZ2KCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsTGlnaHRpdigg
R0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TGlnaHRmdiggR0xl
bnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdldExpZ2h0aXYoIEdMZW51bSBs
aWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmKCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodE1vZGVsaSggR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmdiggR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodE1vZGVsaXYoIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlh
bGYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZv
aWQgZ2xNYXRlcmlhbGkoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7
CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxmdiggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxpdiggR0xlbnVtIGZh
Y2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xH
ZXRNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMg
KTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXRlcmlhbGl2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbG9yTWF0ZXJpYWwoIEdMZW51bSBm
YWNlLCBHTGVudW0gbW9kZSApOwojIDEzMjUgIi91c3IvaW5jbHVkZS9HTC9nbC5oIiAzCmV4dGVy
biB2b2lkIGdsUGl4ZWxab29tKCBHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3RvciApOwoK
ZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7
CmV4dGVybiB2b2lkIGdsUGl4ZWxTdG9yZWkoIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsK
CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmYoIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSApOwpleHRlcm4gdm9pZCBnbFBpeGVsVHJhbnNmZXJpKCBHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtICk7CgpleHRlcm4gdm9pZCBnbFBpeGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlcyApOwpleHRlcm4gdm9pZCBnbFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTGludCBtYXBz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2
YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcHVzdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFw
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdXNob3J0
ICp2YWx1ZXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0UGl4ZWxNYXBmdiggR0xlbnVtIG1hcCwgR0xm
bG9hdCAqdmFsdWVzICk7CmV4dGVybiB2b2lkIGdsR2V0UGl4ZWxNYXB1aXYoIEdMZW51bSBtYXAs
IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiB2b2lkIGdsR2V0UGl4ZWxNYXB1c3YoIEdMZW51bSBt
YXAsIEdMdXNob3J0ICp2YWx1ZXMgKTsKCmV4dGVybiB2b2lkIGdsQml0bWFwKCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHhvcmlnLCBHTGZsb2F0IHlvcmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgeG1vdmUsIEdMZmxvYXQgeW1vdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1Ynl0ZSAqYml0bWFwICk7CgpleHRlcm4gdm9pZCBnbFJlYWRQaXhlbHMo
IEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsRHJhd1BpeGVs
cyggR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQg
Z2xDb3B5UGl4ZWxzKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUgKTsKCgoKCgoKCmV4dGVybiB2b2lkIGds
U3RlbmNpbEZ1bmMoIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrICk7CgpleHRl
cm4gdm9pZCBnbFN0ZW5jaWxNYXNrKCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xTdGVu
Y2lsT3AoIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyApOwoKZXh0ZXJu
IHZvaWQgZ2xDbGVhclN0ZW5jaWwoIEdMaW50IHMgKTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsVGV4
R2VuZCggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlIHBhcmFtICk7CmV4dGVy
biB2b2lkIGdsVGV4R2VuZiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0gKTsKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5pKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4R2VuZHYoIEdMZW51bSBjb29yZCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsVGV4R2Vu
ZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsK
ZXh0ZXJuIHZvaWQgZ2xUZXhHZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0VGV4R2VuZHYoIEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4
R2VuZnYoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0
ZXJuIHZvaWQgZ2xHZXRUZXhHZW5pdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMgKTsKCgpleHRlcm4gdm9pZCBnbFRleEVudmYoIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEVudmkoIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4RW52
ZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7
CmV4dGVybiB2b2lkIGdsVGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhFbnZmdiggR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRU
ZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoK
ZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJpKCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFRleFBhcmFt
ZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9p
ZCBnbFRleFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsK
CmV4dGVybiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KnBhcmFtcyk7CmV4dGVybiB2b2lkIGdsR2V0VGV4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdigg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVy
biB2b2lkIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UxRCggR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQg
Z2xUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhJbWFnZSggR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xHZW5UZXh0dXJlcygg
R0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzICk7CgpleHRlcm4gdm9pZCBnbERlbGV0ZVRleHR1
cmVzKCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOwoKZXh0ZXJuIHZvaWQgZ2xC
aW5kVGV4dHVyZSggR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUgKTsKCmV4dGVybiB2b2lk
IGdsUHJpb3JpdGl6ZVRleHR1cmVzKCBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNsYW1wZiAqcHJpb3JpdGll
cyApOwoKZXh0ZXJuIEdMYm9vbGVhbiBnbEFyZVRleHR1cmVzUmVzaWRlbnQoIEdMc2l6ZWkgbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnRleHR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiAqcmVzaWRlbmNlcyApOwoKZXh0ZXJuIEdMYm9vbGVhbiBnbElz
VGV4dHVyZSggR0x1aW50IHRleHR1cmUgKTsKCgpleHRlcm4gdm9pZCBnbFRleFN1YkltYWdlMUQo
IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsK
CgpleHRlcm4gdm9pZCBnbFRleFN1YkltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgoKZXh0ZXJuIHZvaWQg
Z2xDb3B5VGV4SW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQg
Ym9yZGVyICk7CgoKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4SW1hZ2UyRCggR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIgKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhT
dWJJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHgsIEdMaW50IHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
ICk7CgoKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4U3ViSW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CiMgMTUwNCAi
L3Vzci9pbmNsdWRlL0dML2dsLmgiIDMKZXh0ZXJuIHZvaWQgZ2xNYXAxZCggR0xlbnVtIHRhcmdl
dCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3Jk
ZXIsIGNvbnN0IEdMZG91YmxlICpwb2ludHMgKTsKZXh0ZXJuIHZvaWQgZ2xNYXAxZiggR0xlbnVt
IHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IG9yZGVyLCBjb25zdCBHTGZsb2F0ICpwb2ludHMgKTsKCmV4dGVybiB2b2lkIGdsTWFwMmQoIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1
MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLAogICAgICAgICAgICAgICAgICAgICBHTGRv
dWJsZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1h
cDJmKCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHUxLCBHTGZs
b2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsCiAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcG9pbnRzICk7CgpleHRlcm4gdm9pZCBn
bEdldE1hcGR2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMZG91YmxlICp2ICk7CmV4
dGVybiB2b2lkIGdsR2V0TWFwZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9h
dCAqdiApOwpleHRlcm4gdm9pZCBnbEdldE1hcGl2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVl
cnksIEdMaW50ICp2ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDFkKCBHTGRvdWJsZSB1ICk7
CmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMWYoIEdMZmxvYXQgdSApOwoKZXh0ZXJuIHZvaWQgZ2xF
dmFsQ29vcmQxZHYoIGNvbnN0IEdMZG91YmxlICp1ICk7CmV4dGVybiB2b2lkIGdsRXZhbENvb3Jk
MWZ2KCBjb25zdCBHTGZsb2F0ICp1ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDJkKCBHTGRv
dWJsZSB1LCBHTGRvdWJsZSB2ICk7CmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMmYoIEdMZmxvYXQg
dSwgR0xmbG9hdCB2ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDJkdiggY29uc3QgR0xkb3Vi
bGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZnYoIGNvbnN0IEdMZmxvYXQgKnUgKTsK
CmV4dGVybiB2b2lkIGdsTWFwR3JpZDFkKCBHTGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91Ymxl
IHUyICk7CmV4dGVybiB2b2lkIGdsTWFwR3JpZDFmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xm
bG9hdCB1MiApOwoKZXh0ZXJuIHZvaWQgZ2xNYXBHcmlkMmQoIEdMaW50IHVuLCBHTGRvdWJsZSB1
MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
dm4sIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiApOwpleHRlcm4gdm9pZCBnbE1hcEdyaWQyZigg
R0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdm4sIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIgKTsKCmV4dGVybiB2
b2lkIGdsRXZhbFBvaW50MSggR0xpbnQgaSApOwoKZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQyKCBH
TGludCBpLCBHTGludCBqICk7CgpleHRlcm4gdm9pZCBnbEV2YWxNZXNoMSggR0xlbnVtIG1vZGUs
IEdMaW50IGkxLCBHTGludCBpMiApOwoKZXh0ZXJuIHZvaWQgZ2xFdmFsTWVzaDIoIEdMZW51bSBt
b2RlLCBHTGludCBpMSwgR0xpbnQgaTIsIEdMaW50IGoxLCBHTGludCBqMiApOwoKCgoKCgoKZXh0
ZXJuIHZvaWQgZ2xGb2dmKCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKCmV4dGVybiB2
b2lkIGdsRm9naSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xG
b2dmdiggR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk
IGdsRm9naXYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKCgoKCgoKZXh0
ZXJuIHZvaWQgZ2xGZWVkYmFja0J1ZmZlciggR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xm
bG9hdCAqYnVmZmVyICk7CgpleHRlcm4gdm9pZCBnbFBhc3NUaHJvdWdoKCBHTGZsb2F0IHRva2Vu
ICk7CgpleHRlcm4gdm9pZCBnbFNlbGVjdEJ1ZmZlciggR0xzaXplaSBzaXplLCBHTHVpbnQgKmJ1
ZmZlciApOwoKZXh0ZXJuIHZvaWQgZ2xJbml0TmFtZXMoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGds
TG9hZE5hbWUoIEdMdWludCBuYW1lICk7CgpleHRlcm4gdm9pZCBnbFB1c2hOYW1lKCBHTHVpbnQg
bmFtZSApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BOYW1lKCB2b2lkICk7CgoKCgpleHRlcm4gdm9pZCBn
bERyYXdSYW5nZUVsZW1lbnRzKCBHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LAogICAgICAgIEdM
dWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlj
ZXMgKTsKCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UzRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9pZCBn
bFRleFN1YkltYWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwg
R0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CgpleHRlcm4g
dm9pZCBnbENvcHlUZXhTdWJJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQgKTsKCgoKCmV4dGVybiB2
b2lkIGdsQ29sb3JUYWJsZSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0g
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwg
Y29uc3QgR0x2b2lkICp0YWJsZSApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvclN1YlRhYmxlKCBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHN0YXJ0LCBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhICk7CgpleHRlcm4gdm9pZCBnbENvbG9y
VGFibGVQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsK
CmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcyk7CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclN1YlRhYmxlKCBH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJu
IHZvaWQgZ2xDb3B5Q29sb3JUYWJsZSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlKCBHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRD
b2xvclRhYmxlUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJh
bXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2KCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZEVxdWF0aW9u
KCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZENvbG9yKCBHTGNsYW1wZiByZWQs
IEdMY2xhbXBmIGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNs
YW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xIaXN0b2dyYW0oIEdM
ZW51bSB0YXJnZXQsIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayApOwoKZXh0ZXJuIHZv
aWQgZ2xSZXNldEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRI
aXN0b2dyYW0oIEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnZhbHVlcyApOwoKZXh0ZXJu
IHZvaWQgZ2xHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcml2KCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbE1pbm1h
eCggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBzaW5rICk7CgpleHRlcm4gdm9pZCBnbFJlc2V0TWlu
bWF4KCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1heCggR0xlbnVtIHRh
cmdldCwgR0xib29sZWFuIHJlc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHZvaWQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRNaW5tYXhQYXJhbWV0
ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBn
bEdldE1pbm1heFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7
CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uRmlsdGVyMUQoIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwKICAgICAgICBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRlcm4gdm9pZCBn
bENvbnZvbHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwK
ICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbWFnZSApOwoKZXh0ZXJuIHZvaWQg
Z2xDb252b2x1dGlvblBhcmFtZXRlcmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAg
ICAgICBHTGZsb2F0IHBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvblBhcmFtZXRl
cmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgY29uc3QgR0xmbG9hdCAq
cGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaSggR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgIEdMaW50IHBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg
Z2xDb252b2x1dGlvblBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xDb3B5Q29udm9sdXRp
b25GaWx0ZXIxRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGggKTsKCmV4dGVybiB2b2lkIGdsQ29weUNv
bnZvbHV0aW9uRmlsdGVyMkQoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgIEdMc2l6ZWkg
aGVpZ2h0KTsKCmV4dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25GaWx0ZXIoIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UgKTsK
CmV4dGVybiB2b2lkIGdsR2V0Q29udm9sdXRpb25QYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLAogICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xH
ZXRDb252b2x1dGlvblBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAg
ICAgICAgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xTZXBhcmFibGVGaWx0ZXIyRCgg
R0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4gKTsKCmV4dGVybiB2b2lkIGds
R2V0U2VwYXJhYmxlRmlsdGVyKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LAogICAgICAg
IEdMZW51bSB0eXBlLCBHTHZvaWQgKnJvdywgR0x2b2lkICpjb2x1bW4sIEdMdm9pZCAqc3BhbiAp
OwojIDE3NjcgIi91c3IvaW5jbHVkZS9HTC9nbC5oIiAzCmV4dGVybiB2b2lkIGdsQWN0aXZlVGV4
dHVyZUFSQihHTGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsQ2xpZW50QWN0aXZlVGV4dHVy
ZUFSQihHTGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdM
ZW51bSB0YXJnZXQsIEdMZG91YmxlIHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZHZB
UkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRp
VGV4Q29vcmQxZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4gdm9pZCBnbE11
bHRpVGV4Q29vcmQxZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVy
biB2b2lkIGdsTXVsdGlUZXhDb29yZDFpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRl
cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxaXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQg
KnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBHTHNo
b3J0IHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRhcmdldCwg
Y29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJkQVJCKEdMZW51
bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4
Q29vcmQyZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9p
ZCBnbE11bHRpVGV4Q29vcmQyZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQg
dCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25z
dCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmlBUkIoR0xlbnVtIHRh
cmdldCwgR0xpbnQgcywgR0xpbnQgdCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJpdkFS
QihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhD
b29yZDJzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuIHZv
aWQgZ2xNdWx0aVRleENvb3JkMnN2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYp
OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJs
ZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3Jk
M2R2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xN
dWx0aVRleENvb3JkM2ZBUkIoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdM
ZmxvYXQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0
LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xl
bnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7CmV4dGVybiB2b2lkIGdsTXVs
dGlUZXhDb29yZDNpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2
b2lkIGdsTXVsdGlUZXhDb29yZDNzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9y
dCB0LCBHTHNob3J0IHIpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVt
IHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRk
QVJCKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdM
ZG91YmxlIHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZkFSQihH
TGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEp
OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xmbG9hdCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpQVJCKEdMZW51bSB0YXJn
ZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwpleHRlcm4gdm9pZCBnbE11
bHRpVGV4Q29vcmQ0aXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4g
dm9pZCBnbE11bHRpVGV4Q29vcmQ0c0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hv
cnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0
c3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CiMgMjI0NSAiL3Vzci9pbmNs
dWRlL0dML2dsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMSAzCgoKCgpleHRl
cm4gIkMiIHsKIyAxNjc3ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMTE9BRFRSQU5TUE9TRU1BVFJJWEZBUkJQUk9DKSAoY29uc3QgR0xmbG9hdCAqbSk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FEVFJBTlNQT1NFTUFUUklYREFSQlBST0MpIChjb25z
dCBHTGRvdWJsZSAqbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUVFJBTlNQT1NFTUFUUklY
RkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRU
UkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0IEdMZG91YmxlICptKTsKIyAxNjg5ICIvdXNy
L2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0FNUExFQ09WRVJB
R0VBUkJQUk9DKSAoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMU0FNUExFUEFTU0FSQlBST0MpIChHTGVudW0gcGFzcyk7CiMgMTcxMiAiL3Vz
ci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURU
RVhJTUFHRTNEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFMkRBUkJQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0
IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVTU0VEVEVYSU1BR0Ux
REFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklN
QUdFM0RBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29u
c3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhTVUJJ
TUFHRTJEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UxREFSQlBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRDT01QUkVTU0VEVEVYSU1BR0VBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIHZvaWQgKmltZyk7CiMgMTczMCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMK
dHlwZWRlZiB2b2lkICggKiBQRk5HTEJMRU5EQ09MT1JFWFRQUk9DKSAoR0xjbGFtcGYgcmVkLCBH
TGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwoKCgoKCgoKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFBPTFlHT05PRkZTRVRFWFRQUk9DKSAoR0xmbG9hdCBmYWN0b3Is
IEdMZmxvYXQgYmlhcyk7CiMgMTc1MSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFRFWElNQUdFM0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklN
QUdFM0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
b2lkICpwaXhlbHMpOwojIDE3NjEgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYg
dm9pZCAoICogUEZOR0xHRVRURVhGSUxURVJGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gZmlsdGVyLCBHTGZsb2F0ICp3ZWlnaHRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRF
WEZJTFRFUkZVTkNTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmaWx0ZXIsIEdMc2l6
ZWkgbiwgY29uc3QgR0xmbG9hdCAqd2VpZ2h0cyk7CiMgMTc3MSAiL3Vzci9pbmNsdWRlL0dML2ds
ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFMURFWFRQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xURVhTVUJJTUFHRTJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4
ZWxzKTsKIyAxNzg0ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMQ09QWVRFWElNQUdFMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xpbnQgYm9yZGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhJTUFHRTJERVhUUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3Jk
ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdFMURFWFRQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdFMkRF
WFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGlu
dCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CiMgMTgwNSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEdFVEhJU1RPR1JBTUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xHRVRISVNUT0dSQU1QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH
RVRISVNUT0dSQU1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUTUlOTUFYRVhUUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIEdMdm9pZCAqdmFsdWVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1JTk1BWFBB
UkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVE1JTk1BWFBBUkFNRVRFUklWRVhUUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSB3
aWR0aCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGJvb2xlYW4gc2luayk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNFVEhJU1RP
R1JBTUVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFU0VU
TUlOTUFYRVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwojIDE4MzQgIi91c3IvaW5jbHVkZS9HTC9n
bGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTkZJTFRFUjFERVhUUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05GSUxURVIyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbWFnZSk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUkZFWFRQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD
T05WT0xVVElPTlBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVU
SU9OUEFSQU1FVEVSSUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUklWRVhU
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZQ09OVk9MVVRJT05GSUxURVIxREVYVFBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWUNPTlZPTFVUSU9ORklMVEVS
MkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRDT05WT0xVVElPTkZJTFRFUkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xHRVRDT05WT0xVVElPTlBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENP
TlZPTFVUSU9OUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFNFUEFSQUJMRUZJTFRF
UkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2
b2lkICpyb3csIEdMdm9pZCAqY29sdW1uLCBHTHZvaWQgKnNwYW4pOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMU0VQQVJBQkxFRklMVEVSMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25zdCBHTHZvaWQgKmNvbHVtbik7
CiMgMTg2NCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5H
TENPTE9SVEFCTEVTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xDT1BZQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU
Q09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhH
RU5TR0lYUFJPQykgKEdMZW51bSBtb2RlKTsKIyAxODkxICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQu
aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJJU0dJU1BST0Mp
IChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVM
VEVYR0VOUEFSQU1FVEVSSVZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh
cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQSVhFTFRFWEdFTlBBUkFNRVRFUkZTR0lTUFJP
QykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQ
SVhFTFRFWEdFTlBBUkFNRVRFUkZWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRQSVhFTFRFWEdFTlBBUkFNRVRF
UklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMR0VUUElYRUxURVhHRU5QQVJBTUVURVJGVlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICpwYXJhbXMpOwojIDE5MDUgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5
cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTREU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGlu
dCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwg
R0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KnBpeGVscyk7CiMgMTkyNyAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiBHTGJv
b2xlYW4gKCAqIFBGTkdMQVJFVEVYVFVSRVNSRVNJREVOVEVYVFBST0MpIChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqdGV4dHVyZXMsIEdMYm9vbGVhbiAqcmVzaWRlbmNlcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xCSU5EVEVYVFVSRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4
dHVyZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUxFVEVURVhUVVJFU0VYVFBST0MpIChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VO
VEVYVFVSRVNFWFRQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKTsKdHlwZWRlZiBH
TGJvb2xlYW4gKCAqIFBGTkdMSVNURVhUVVJFRVhUUFJPQykgKEdMdWludCB0ZXh0dXJlKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFBSSU9SSVRJWkVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqdGV4dHVyZXMsIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVzKTsKIyAx
OTQxICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMREVU
QUlMVEVYRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBjb25zdCBHTGZs
b2F0ICpwb2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUREVUQUlMVEVYRlVOQ1NHSVNQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCAqcG9pbnRzKTsKIyAxOTUxICIvdXNyL2luY2x1
ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0hBUlBFTlRFWEZVTkNTR0lT
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFNIQVJQRU5URVhGVU5DU0dJU1BST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMpOwojIDE5NjkgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5o
IiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVNQVNLU0dJU1BST0MpIChHTGNsYW1wZiB2
YWx1ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQQVRU
RVJOU0dJU1BST0MpIChHTGVudW0gcGF0dGVybik7CiMgMTk5MCAiL3Vzci9pbmNsdWRlL0dML2ds
ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFSUkFZRUxFTUVOVEVYVFBST0MpIChHTGlu
dCBpKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SUE9JTlRFUkVYVFBST0MpIChHTGludCBz
aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dm9pZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xEUkFXQVJSQVlTRVhUUFJPQykg
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xFREdFRkxBR1BPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMYm9vbGVhbiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH
RVRQT0lOVEVSVkVYVFBST0MpIChHTGVudW0gcG5hbWUsIEdMdm9pZCogKnBhcmFtcyk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xJTkRFWFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xzaXpl
aSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xURVhDT09SRFBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50
ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYUE9JTlRFUkVYVFBST0MpIChHTGludCBz
aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dm9pZCAqcG9pbnRlcik7CiMgMjAzMCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEJMRU5ERVFVQVRJT05FWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwojIDIw
NjEgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTUFJJ
VEVQQVJBTUVURVJGU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNQUklURVBB
UkFNRVRFUklTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcyk7CiMgMjA3OSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE9JTlRQQVJBTUVURVJGVkVY
VFBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUkZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUkZWU0dJU1BST0Mp
IChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CiMgMjA5NSAiL3Vzci9pbmNs
dWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiBHTGludCAoICogUEZOR0xHRVRJTlNUUlVNRU5UU1NH
SVhQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTlNUUlVNRU5UU0JVRkZFUlNH
SVhQUk9DKSAoR0xzaXplaSBzaXplLCBHTGludCAqYnVmZmVyKTsKdHlwZWRlZiBHTGludCAoICog
UEZOR0xQT0xMSU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50ICptYXJrZXJfcCk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xSRUFESU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50IG1hcmtlcik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xTVEFSVElOU1RSVU1FTlRTU0dJWFBST0MpICh2b2lkKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFNUT1BJTlNUUlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgbWFya2Vy
KTsKIyAyMTEyICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMRlJBTUVaT09NU0dJWFBST0MpIChHTGludCBmYWN0b3IpOwoKCgoKCgoKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRBR1NBTVBMRUJVRkZFUlNHSVhQUk9DKSAodm9pZCk7CiMgMjEzMSAiL3Vzci9p
bmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFRk9STUFUSU9OTUFQ
M0RTR0lYUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xp
bnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGRvdWJsZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50
IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgR0xkb3VibGUgdzEsIEdMZG91YmxlIHcyLCBHTGludCB3
c3RyaWRlLCBHTGludCB3b3JkZXIsIGNvbnN0IEdMZG91YmxlICpwb2ludHMpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMREVGT1JNQVRJT05NQVAzRlNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xm
bG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGZsb2F0
IHYxLCBHTGZsb2F0IHYyLCBHTGludCB2c3RyaWRlLCBHTGludCB2b3JkZXIsIEdMZmxvYXQgdzEs
IEdMZmxvYXQgdzIsIEdMaW50IHdzdHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xmbG9hdCAq
cG9pbnRzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFRk9STVNHSVhQUk9DKSAoR0xiaXRmaWVs
ZCBtYXNrKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExPQURJREVOVElUWURFRk9STUFUSU9OTUFQ
U0dJWFBST0MpIChHTGJpdGZpZWxkIG1hc2spOwoKCgoKCgoKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFJFRkVSRU5DRVBMQU5FU0dJWFBST0MpIChjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24pOwoKCgoK
CgoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZMVVNIUkFTVEVSU0dJWFBST0MpICh2b2lkKTsKIyAy
MTYzICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9H
RlVOQ1NHSVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICpwb2ludHMpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMR0VURk9HRlVOQ1NHSVNQUk9DKSAoY29uc3QgR0xmbG9hdCAqcG9pbnRz
KTsKIyAyMTgxICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJJSFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9S
TVBBUkFNRVRFUkZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJJVkhQ
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9STVBBUkFNRVRFUkZWSFBQUk9DKSAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMR0VUSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJJVkhQUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUkZWSFBQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwojIDIyMDMgIi91c3IvaW5jbHVkZS9H
TC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlNVQlRBQkxFRVhUUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMQ09QWUNPTE9SU1VCVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFy
dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CiMgMjIxNiAiL3Vzci9pbmNsdWRl
L0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEhJTlRQR0lQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbW9kZSk7CiMgMjIyNyAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMK
dHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgY29uc3QgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRD
T0xPUlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVBB
UkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSRlZFWFRQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwojIDIy
NDcgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRM
SVNUUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRMSVNUUEFSQU1FVEVSSVZTR0lY
UFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUkZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFN
RVRFUkZWU0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUklTR0lYUFJPQykg
KEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTExJU1RQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CiMgMjI4MCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0Lmgi
IDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOREVYTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZh
Y2UsIEdMZW51bSBtb2RlKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTkRFWEZVTkNF
WFRQUk9DKSAoR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJlZik7CiMgMjMwMSAiL3Vzci9pbmNsdWRl
L0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTExPQ0tBUlJBWVNFWFRQUk9DKSAo
R0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVU5MT0NL
QVJSQVlTRVhUUFJPQykgKHZvaWQpOwojIDIzMTEgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAz
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDVUxMUEFSQU1FVEVSRFZFWFRQUk9DKSAoR0xlbnVtIHBu
YW1lLCBHTGRvdWJsZSAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENVTExQQVJBTUVU
RVJGVkVYVFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiMgMjM0MSAiL3Vz
ci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UQ09M
T1JNQVRFUklBTFNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRGU0dJWFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJ
R0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVElTR0lYUFJPQykg
KEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xGUkFHTUVOVExJR0hUSVZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5U
TElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxGVlNHSVhQUk9DKSAoR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01F
TlRMSUdIVE1PREVMSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUTU9ERUxJVlNHSVhQUk9DKSAoR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5U
TUFURVJJQUxGU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxGVlNHSVhQUk9DKSAo
R0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxJU0dJWFBST0MpIChHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVO
VE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRMSUdIVEZWU0dJ
WFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEdFVEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
R0VURlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRNQVRF
UklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExJR0hURU5WSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSk7CiMgMjM3NCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTERSQVdSQU5HRUVMRU1FTlRTRVhUUFJPQykgKEdMZW51bSBtb2RlLCBH
THVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHZvaWQgKmluZGljZXMpOwojIDIzOTIgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5
cGVkZWYgdm9pZCAoICogUEZOR0xBUFBMWVRFWFRVUkVFWFRQUk9DKSAoR0xlbnVtIG1vZGUpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRUxJR0hURVhUUFJPQykgKEdMZW51bSBwbmFtZSk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTUFURVJJQUxFWFRQUk9DKSAoR0xlbnVtIGZh
Y2UsIEdMZW51bSBtb2RlKTsKIyAyNDE1ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMQVNZTkNNQVJLRVJTR0lYUFJPQykgKEdMdWludCBtYXJrZXIpOwp0
eXBlZGVmIEdMaW50ICggKiBQRk5HTEZJTklTSEFTWU5DU0dJWFBST0MpIChHTHVpbnQgKm1hcmtl
cnApOwp0eXBlZGVmIEdMaW50ICggKiBQRk5HTFBPTExBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICpt
YXJrZXJwKTsKdHlwZWRlZiBHTHVpbnQgKCAqIFBGTkdMR0VOQVNZTkNNQVJLRVJTU0dJWFBST0Mp
IChHTHNpemVpIHJhbmdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFTEVURUFTWU5DTUFSS0VS
U1NHSVhQUk9DKSAoR0x1aW50IG1hcmtlciwgR0xzaXplaSByYW5nZSk7CnR5cGVkZWYgR0xib29s
ZWFuICggKiBQRk5HTElTQVNZTkNNQVJLRVJTR0lYUFJPQykgKEdMdWludCBtYXJrZXIpOwojIDI0
MzkgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJU
RVhQT0lOVEVSVklOVEVMUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQqICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTFBPSU5URVJWSU5URUxQ
Uk9DKSAoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMQ09MT1JQT0lOVEVSVklOVEVMUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JE
UE9JTlRFUlZJTlRFTFBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
KiAqcG9pbnRlcik7CiMgMjQ1NyAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSSUVYVFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJ
WEVMVFJBTlNGT1JNUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1Q
QVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVU
RVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcyk7CiMgMjQ5NiAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JFWFRQUk9DKSAoR0xieXRlIHJlZCwgR0xieXRlIGdy
ZWVuLCBHTGJ5dGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNC
VkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05E
QVJZQ09MT1IzREVYVFBST0MpIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJs
ZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RWRVhUUFJPQykg
KGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9S
M0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNGVkVYVFBST0MpIChjb25zdCBHTGZs
b2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lFWFRQUk9DKSAo
R0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTRVhUUFJPQykgKEdMc2hvcnQgcmVkLCBHTHNob3J0
IGdyZWVuLCBHTHNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09M
T1IzU1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xT
RUNPTkRBUllDT0xPUjNVQkVYVFBST0MpIChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1
Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VCVkVYVFBS
T0MpIChjb25zdCBHTHVieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNP
TE9SM1VJRVhUUFJPQykgKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykgKGNvbnN0IEdM
dWludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNVU0VYVFBST0Mp
IChHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTVkVYVFBST0MpIChjb25zdCBHTHVzaG9ydCAq
dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJFWFRQUk9DKSAo
R0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHZvaWQgKnBvaW50ZXIp
OwoKCgoKCgoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFRVUkVOT1JNQUxFWFRQUk9DKSAoR0xl
bnVtIG1vZGUpOwojIDI1MjkgIi91c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xNVUxUSURSQVdBUlJBWVNFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50ICpm
aXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTRVhUUFJPQykgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNp
emVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkg
cHJpbWNvdW50KTsKIyAyNTQyICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMRk9HQ09PUkRGRVhUUFJPQykgKEdMZmxvYXQgY29vcmQpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMRk9HQ09PUkRGVkVYVFBST0MpIChjb25zdCBHTGZsb2F0ICpjb29yZCk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29vcmQpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkREVkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAq
Y29vcmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdM
ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyNTc5
ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VO
VDNCRVhUUFJPQykgKEdMYnl0ZSB0eCwgR0xieXRlIHR5LCBHTGJ5dGUgdHopOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMVEFOR0VOVDNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNERVhUUFJPQykgKEdMZG91YmxlIHR4LCBHTGRvdWJsZSB0
eSwgR0xkb3VibGUgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNEVkVYVFBST0Mp
IChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0ZFWFRQ
Uk9DKSAoR0xmbG9hdCB0eCwgR0xmbG9hdCB0eSwgR0xmbG9hdCB0eik7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xUQU5HRU5UM0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMVEFOR0VOVDNJRVhUUFJPQykgKEdMaW50IHR4LCBHTGludCB0eSwgR0xpbnQg
dHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNJVkVYVFBST0MpIChjb25zdCBHTGlu
dCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM1NFWFRQUk9DKSAoR0xzaG9ydCB0
eCwgR0xzaG9ydCB0eSwgR0xzaG9ydCB0eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5U
M1NWRVhUUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklO
T1JNQUwzQkVYVFBST0MpIChHTGJ5dGUgYngsIEdMYnl0ZSBieSwgR0xieXRlIGJ6KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0JWRVhUUFJPQykgKGNvbnN0IEdMYnl0ZSAqdik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNERVhUUFJPQykgKEdMZG91YmxlIGJ4LCBHTGRv
dWJsZSBieSwgR0xkb3VibGUgYnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRFZF
WFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JN
QUwzRkVYVFBST0MpIChHTGZsb2F0IGJ4LCBHTGZsb2F0IGJ5LCBHTGZsb2F0IGJ6KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzSUVYVFBST0MpIChHTGludCBieCwgR0xpbnQg
YnksIEdMaW50IGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0lWRVhUUFJPQykg
KGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM1NFWFRQUk9D
KSAoR0xzaG9ydCBieCwgR0xzaG9ydCBieSwgR0xzaG9ydCBieik7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xCSU5PUk1BTDNTVkVYVFBST0MpIChjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRBTkdFTlRQT0lOVEVSRVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0
cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9S
TUFMUE9JTlRFUkVYVFBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdM
dm9pZCAqcG9pbnRlcik7CiMgMjYyNCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEZJTklTSFRFWFRVUkVTVU5YUFJPQykgKHZvaWQpOwojIDI2MzkgIi91
c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBI
QUZBQ1RPUkJTVU5QUk9DKSAoR0xieXRlIGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH
TE9CQUxBTFBIQUZBQ1RPUlNTVU5QUk9DKSAoR0xzaG9ydCBmYWN0b3IpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JJU1VOUFJPQykgKEdMaW50IGZhY3Rvcik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkZTVU5QUk9DKSAoR0xmbG9hdCBmYWN0
b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JEU1VOUFJPQykgKEdM
ZG91YmxlIGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVC
U1VOUFJPQykgKEdMdWJ5dGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFM
UEhBRkFDVE9SVVNTVU5QUk9DKSAoR0x1c2hvcnQgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEdMT0JBTEFMUEhBRkFDVE9SVUlTVU5QUk9DKSAoR0x1aW50IGZhY3Rvcik7CiMgMjY2MCAi
L3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VN
RU5UQ09ERVVJU1VOUFJPQykgKEdMdWludCBjb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJF
UExBQ0VNRU5UQ09ERVVTU1VOUFJPQykgKEdMdXNob3J0IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMUkVQTEFDRU1FTlRDT0RFVUJTVU5QUk9DKSAoR0x1Ynl0ZSBjb2RlKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVlNVTlBST0MpIChjb25zdCBHTHVpbnQgKmNv
ZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVVNWU1VOUFJPQykgKGNv
bnN0IEdMdXNob3J0ICpjb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09E
RVVCVlNVTlBST0MpIChjb25zdCBHTHVieXRlICpjb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFJFUExBQ0VNRU5UQ09ERVBPSU5URVJTVU5QUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKIyAyNzEzICIvdXNyL2luY2x1ZGUvR0wvZ2xl
eHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJURVgyRlNVTlBST0MpIChH
THVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SNFVCVkVSVEVYMkZWU1VOUFJPQykg
KGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMQ09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0
ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAq
YywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVY
M0ZTVU5QUk9DKSAoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVY
M0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IG54LCBHTGZs
b2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxv
YXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0Rk5P
Uk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwg
R0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SNEZOT1JN
QUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpu
LCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZWRVJU
RVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGVkVSVEVYM0ZWU1VO
UFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRFWENPT1JENEZWRVJURVg0RlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQg
dCwgR0xmbG9hdCBwLCBHTGZsb2F0IHEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos
IEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGVkVSVEVYNEZWU1VO
UFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRVQlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywg
R0xmbG9hdCB0LCBHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVY
Q09PUkQyRkNPTE9SNFVCVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25z
dCBHTHVieXRlICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRF
WENPT1JEMkZDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdM
ZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZs
b2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlZT
VU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxv
YXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZT
VU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdM
ZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxv
YXQgKnRjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZs
b2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9h
dCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRG
Tk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxv
YXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZOT1JNQUwzRlZFUlRFWDRGU1VOUFJPQykgKEdMZmxv
YXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCByLCBHTGZsb2F0
IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0
IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZOT1JNQUwzRlZFUlRFWDRGVlNVTlBST0Mp
IChjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwg
Y29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVV
SVZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVZFUlRFWDNGVlNV
TlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTGVu
dW0gcmMsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9h
dCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNF
TUVOVENPREVVSUNPTE9SNFVCVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNv
bnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZs
b2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9h
dCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1IzRlZFUlRF
WDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBH
TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJTk9STUFM
M0ZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdM
ZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25z
dCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZT
VU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZs
b2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RF
VUlDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29u
c3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZWRVJURVgzRlNVTlBS
T0MpIChHTGVudW0gcmMsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVY
Q09PUkQyRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0
ICp0YywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVO
VENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xm
bG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQ
TEFDRU1FTlRDT0RFVUlURVhDT09SRDJGTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3Qg
R0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09S
RDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMs
IEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBH
TGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09P
UkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBj
b25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29u
c3QgR0xmbG9hdCAqdik7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQkxFTkRGVU5DU0VQ
QVJBVEVFWFRQUk9DKSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVu
dW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKIyAyODA2ICIvdXNyL2luY2x1
ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYV0VJR0hURkVYVFBS
T0MpIChHTGZsb2F0IHdlaWdodCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhXRUlHSFRG
VkVYVFBST0MpIChjb25zdCBHTGZsb2F0ICp3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
VkVSVEVYV0VJR0hUUE9JTlRFUkVYVFBST0MpIChHTHNpemVpIHNpemUsIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyODIxICIvdXNyL2luY2x1
ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRkxVU0hWRVJURVhBUlJBWVJB
TkdFTlZQUk9DKSAodm9pZCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhBUlJBWVJBTkdF
TlZQUk9DKSAoR0xzaXplaSBzaXplLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwojIDI4NDIgIi91
c3IvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUlBB
UkFNRVRFUkZWTlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJGTlZQUk9DKSAoR0xlbnVtIHBu
YW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSUEFSQU1F
VEVSSVZOVlBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJJTlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUklOUFVUTlZQUk9DKSAo
R0xlbnVtIHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gaW5w
dXQsIEdMZW51bSBtYXBwaW5nLCBHTGVudW0gY29tcG9uZW50VXNhZ2UpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMQ09NQklORVJPVVRQVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0
aW9uLCBHTGVudW0gYWJPdXRwdXQsIEdMZW51bSBjZE91dHB1dCwgR0xlbnVtIHN1bU91dHB1dCwg
R0xlbnVtIHNjYWxlLCBHTGVudW0gYmlhcywgR0xib29sZWFuIGFiRG90UHJvZHVjdCwgR0xib29s
ZWFuIGNkRG90UHJvZHVjdCwgR0xib29sZWFuIG11eFN1bSk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xGSU5BTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1
dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRDT01CSU5FUklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gc3RhZ2Us
IEdMZW51bSBwb3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
cGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJTkVSSU5QVVRQQVJBTUVURVJJ
Vk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENP
TUJJTkVST1VUUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0
aW9uLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xHRVRDT01CSU5FUk9VVFBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVu
dW0gcG9ydGlvbiwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTEdFVEZJTkFMQ09NQklORVJJTlBVVFBBUkFNRVRFUkZWTlZQUk9DKSAoR0xlbnVtIHZh
cmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xHRVRGSU5BTENPTUJJTkVSSU5QVVRQQVJBTUVURVJJVk5WUFJPQykgKEdMZW51bSB2YXJp
YWJsZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIyAyODc4ICIvdXNyL2luY2x1ZGUv
R0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVTSVpFQlVGRkVSU01FU0FQUk9D
KSAodm9pZCk7CiMgMjkwOSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFdJTkRPV1BPUzJETUVTQVBST0MpIChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJEVk1FU0FQUk9DKSAoY29uc3QgR0xkb3Vi
bGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkZNRVNBUFJPQykgKEdMZmxv
YXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJGVk1FU0FQ
Uk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1My
SU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5E
T1dQT1MySVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFdJTkRPV1BPUzJTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xXSU5ET1dQT1MyU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0RNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91
YmxlIHksIEdMZG91YmxlIHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0RWTUVT
QVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQ
T1MzRk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRlZNRVNBUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0lNRVNBUFJPQykgKEdMaW50IHgsIEdMaW50
IHksIEdMaW50IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0lWTUVTQVBST0Mp
IChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzU01FU0FQ
Uk9DKSAoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xXSU5ET1dQT1MzU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMV0lORE9XUE9TNERNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHks
IEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9T
NERWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xX
SU5ET1dQT1M0Rk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xm
bG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRGVk1FU0FQUk9DKSAoY29u
c3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0SU1FU0FQUk9D
KSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xXSU5ET1dQT1M0SVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFdJTkRPV1BPUzRTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xz
aG9ydCB6LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNFNWTUVT
QVBST0MpIChjb25zdCBHTHNob3J0ICp2KTsKIyAyOTQ1ICIvdXNyL2luY2x1ZGUvR0wvZ2xleHQu
aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElNT0RFRFJBV0FSUkFZU0lCTVBST0MpIChH
TGVudW0gbW9kZSwgY29uc3QgR0xpbnQgKmZpcnN0LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xz
aXplaSBwcmltY291bnQsIEdMaW50IG1vZGVzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
TVVMVElNT0RFRFJBV0VMRU1FTlRTSUJNUFJPQykgKGNvbnN0IEdMZW51bSAqbW9kZSwgY29uc3Qg
R0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNp
emVpIHByaW1jb3VudCwgR0xpbnQgbW9kZXN0cmlkZSk7CiMgMjk2MSAiL3Vzci9pbmNsdWRlL0dM
L2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SUE9JTlRFUkxJU1RJQk1QUk9D
KSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAq
cG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFS
WUNPTE9SUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50
IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTEVER0VGTEFHUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc3RyaWRl
LCBjb25zdCBHTGJvb2xlYW4qICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMRk9HQ09PUkRQT0lOVEVSTElTVElCTVBST0MpIChHTGVudW0gdHlwZSwgR0xp
bnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMSU5ERVhQT0lOVEVSTElTVElCTVBST0MpIChHTGVudW0gdHlwZSwg
R0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5
cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRl
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xp
bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRl
ciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJM
SVNUSUJNUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0
IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CiMgMzAwMCAiL3Vzci9pbmNsdWRl
L0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRCVUZGRVJNQVNLM0RGWFBST0Mp
IChHTHVpbnQgbWFzayk7CiMgMzAwOSAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFNBTVBMRU1BU0tFWFRQUk9DKSAoR0xjbGFtcGYgdmFsdWUsIEdMYm9v
bGVhbiBpbnZlcnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0FNUExFUEFUVEVSTkVYVFBST0Mp
IChHTGVudW0gcGF0dGVybik7CiMgMzAzNCAiL3Vzci9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFRFWFRVUkVDT0xPUk1BU0tTR0lTUFJPQykgKEdMYm9vbGVhbiBy
ZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7CgoK
CgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSUdMT09JTlRFUkZBQ0VTR0lYUFJPQykgKEdMZW51
bSBwbmFtZSwgY29uc3QgR0x2b2lkICpwYXJhbXMpOwojIDMwNTEgIi91c3IvaW5jbHVkZS9HTC9n
bGV4dC5oIiAzCn0KIyAyMjQ2ICIvdXNyL2luY2x1ZGUvR0wvZ2wuaCIgMiAzCiMgMjI2NyAiL3Vz
ci9pbmNsdWRlL0dML2dsLmgiIDMKfQojIDExICIvdXNyL2luY2x1ZGUvR0wvZ2x1dC5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvR0wvZ2x1LmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvR0wvZ2x1
LmgiIDMKZXh0ZXJuICJDIiB7CiMgMjQyICIvdXNyL2luY2x1ZGUvR0wvZ2x1LmgiIDMKY2xhc3Mg
R0xVbnVyYnM7CmNsYXNzIEdMVXF1YWRyaWM7CmNsYXNzIEdMVXRlc3NlbGF0b3I7CgoKCgoKCnR5
cGVkZWYgc3RydWN0IEdMVW51cmJzIEdMVW51cmJzT2JqOwp0eXBlZGVmIHN0cnVjdCBHTFVxdWFk
cmljIEdMVXF1YWRyaWNPYmo7CnR5cGVkZWYgc3RydWN0IEdMVXRlc3NlbGF0b3IgR0xVdGVzc2Vs
YXRvck9iajsKdHlwZWRlZiBzdHJ1Y3QgR0xVdGVzc2VsYXRvciBHTFV0cmlhbmd1bGF0b3JPYmo7
CgoKCgp0eXBlZGVmIEdMdm9pZCAoKl9HTFVmdW5jcHRyKShHTHZvaWQpOwoKZXh0ZXJuIHZvaWQg
Z2x1QmVnaW5DdXJ2ZSAoR0xVbnVyYnMqIG51cmIpOwpleHRlcm4gdm9pZCBnbHVCZWdpblBvbHln
b24gKEdMVXRlc3NlbGF0b3IqIHRlc3MpOwpleHRlcm4gdm9pZCBnbHVCZWdpblN1cmZhY2UgKEdM
VW51cmJzKiBudXJiKTsKZXh0ZXJuIHZvaWQgZ2x1QmVnaW5UcmltIChHTFVudXJicyogbnVyYik7
CmV4dGVybiBHTGludCBnbHVCdWlsZDFETWlwbWFwTGV2ZWxzIChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMaW50IGxldmVsLCBHTGludCBiYXNlLCBHTGludCBtYXgsIGNvbnN0IHZvaWQgKmRhdGEp
OwpleHRlcm4gR0xpbnQgZ2x1QnVpbGQxRE1pcG1hcHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGlu
dGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCAqZGF0YSk7CmV4dGVybiBHTGludCBnbHVCdWlsZDJETWlwbWFwTGV2ZWxzIChH
TGVudW0gdGFyZ2V0LCBHTGludCBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCBsZXZlbCwgR0xpbnQg
YmFzZSwgR0xpbnQgbWF4LCBjb25zdCB2b2lkICpkYXRhKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxk
MkRNaXBtYXBzIChHTGVudW0gdGFyZ2V0LCBHTGludCBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICpkYXRhKTsKZXh0ZXJuIEdMaW50IGdsdUJ1aWxkM0RNaXBtYXBMZXZlbHMgKEdMZW51bSB0
YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IGxldmVs
LCBHTGludCBiYXNlLCBHTGludCBtYXgsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xpbnQg
Z2x1QnVpbGQzRE1pcG1hcHMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGludGVybmFsRm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmRhdGEpOwpleHRlcm4gR0xib29sZWFuIGdsdUNo
ZWNrRXh0ZW5zaW9uIChjb25zdCBHTHVieXRlICpleHROYW1lLCBjb25zdCBHTHVieXRlICpleHRT
dHJpbmcpOwpleHRlcm4gdm9pZCBnbHVDeWxpbmRlciAoR0xVcXVhZHJpYyogcXVhZCwgR0xkb3Vi
bGUgYmFzZSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSBoZWlnaHQsIEdMaW50IHNsaWNlcywgR0xp
bnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgZ2x1RGVsZXRlTnVyYnNSZW5kZXJlciAoR0xVbnVyYnMq
IG51cmIpOwpleHRlcm4gdm9pZCBnbHVEZWxldGVRdWFkcmljIChHTFVxdWFkcmljKiBxdWFkKTsK
ZXh0ZXJuIHZvaWQgZ2x1RGVsZXRlVGVzcyAoR0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVybiB2
b2lkIGdsdURpc2sgKEdMVXF1YWRyaWMqIHF1YWQsIEdMZG91YmxlIGlubmVyLCBHTGRvdWJsZSBv
dXRlciwgR0xpbnQgc2xpY2VzLCBHTGludCBsb29wcyk7CmV4dGVybiB2b2lkIGdsdUVuZEN1cnZl
IChHTFVudXJicyogbnVyYik7CmV4dGVybiB2b2lkIGdsdUVuZFBvbHlnb24gKEdMVXRlc3NlbGF0
b3IqIHRlc3MpOwpleHRlcm4gdm9pZCBnbHVFbmRTdXJmYWNlIChHTFVudXJicyogbnVyYik7CmV4
dGVybiB2b2lkIGdsdUVuZFRyaW0gKEdMVW51cmJzKiBudXJiKTsKZXh0ZXJuIGNvbnN0IEdMdWJ5
dGUgKiBnbHVFcnJvclN0cmluZyAoR0xlbnVtIGVycm9yKTsKZXh0ZXJuIHZvaWQgZ2x1R2V0TnVy
YnNQcm9wZXJ0eSAoR0xVbnVyYnMqIG51cmIsIEdMZW51bSBwcm9wZXJ0eSwgR0xmbG9hdCogZGF0
YSk7CmV4dGVybiBjb25zdCBHTHVieXRlICogZ2x1R2V0U3RyaW5nIChHTGVudW0gbmFtZSk7CmV4
dGVybiB2b2lkIGdsdUdldFRlc3NQcm9wZXJ0eSAoR0xVdGVzc2VsYXRvciogdGVzcywgR0xlbnVt
IHdoaWNoLCBHTGRvdWJsZSogZGF0YSk7CmV4dGVybiB2b2lkIGdsdUxvYWRTYW1wbGluZ01hdHJp
Y2VzIChHTFVudXJicyogbnVyYiwgY29uc3QgR0xmbG9hdCAqbW9kZWwsIGNvbnN0IEdMZmxvYXQg
KnBlcnNwZWN0aXZlLCBjb25zdCBHTGludCAqdmlldyk7CmV4dGVybiB2b2lkIGdsdUxvb2tBdCAo
R0xkb3VibGUgZXllWCwgR0xkb3VibGUgZXllWSwgR0xkb3VibGUgZXllWiwgR0xkb3VibGUgY2Vu
dGVyWCwgR0xkb3VibGUgY2VudGVyWSwgR0xkb3VibGUgY2VudGVyWiwgR0xkb3VibGUgdXBYLCBH
TGRvdWJsZSB1cFksIEdMZG91YmxlIHVwWik7CmV4dGVybiBHTFVudXJicyogZ2x1TmV3TnVyYnNS
ZW5kZXJlciAodm9pZCk7CmV4dGVybiBHTFVxdWFkcmljKiBnbHVOZXdRdWFkcmljICh2b2lkKTsK
ZXh0ZXJuIEdMVXRlc3NlbGF0b3IqIGdsdU5ld1Rlc3MgKHZvaWQpOwpleHRlcm4gdm9pZCBnbHVO
ZXh0Q29udG91ciAoR0xVdGVzc2VsYXRvciogdGVzcywgR0xlbnVtIHR5cGUpOwpleHRlcm4gdm9p
ZCBnbHVOdXJic0NhbGxiYWNrIChHTFVudXJicyogbnVyYiwgR0xlbnVtIHdoaWNoLCBfR0xVZnVu
Y3B0ciBDYWxsQmFja0Z1bmMpOwpleHRlcm4gdm9pZCBnbHVOdXJic0NhbGxiYWNrRGF0YSAoR0xV
bnVyYnMqIG51cmIsIEdMdm9pZCogdXNlckRhdGEpOwpleHRlcm4gdm9pZCBnbHVOdXJic0NhbGxi
YWNrRGF0YUVYVCAoR0xVbnVyYnMqIG51cmIsIEdMdm9pZCogdXNlckRhdGEpOwpleHRlcm4gdm9p
ZCBnbHVOdXJic0N1cnZlIChHTFVudXJicyogbnVyYiwgR0xpbnQga25vdENvdW50LCBHTGZsb2F0
ICprbm90cywgR0xpbnQgc3RyaWRlLCBHTGZsb2F0ICpjb250cm9sLCBHTGludCBvcmRlciwgR0xl
bnVtIHR5cGUpOwpleHRlcm4gdm9pZCBnbHVOdXJic1Byb3BlcnR5IChHTFVudXJicyogbnVyYiwg
R0xlbnVtIHByb3BlcnR5LCBHTGZsb2F0IHZhbHVlKTsKZXh0ZXJuIHZvaWQgZ2x1TnVyYnNTdXJm
YWNlIChHTFVudXJicyogbnVyYiwgR0xpbnQgc0tub3RDb3VudCwgR0xmbG9hdCogc0tub3RzLCBH
TGludCB0S25vdENvdW50LCBHTGZsb2F0KiB0S25vdHMsIEdMaW50IHNTdHJpZGUsIEdMaW50IHRT
dHJpZGUsIEdMZmxvYXQqIGNvbnRyb2wsIEdMaW50IHNPcmRlciwgR0xpbnQgdE9yZGVyLCBHTGVu
dW0gdHlwZSk7CmV4dGVybiB2b2lkIGdsdU9ydGhvMkQgKEdMZG91YmxlIGxlZnQsIEdMZG91Ymxl
IHJpZ2h0LCBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCk7CmV4dGVybiB2b2lkIGdsdVBh
cnRpYWxEaXNrIChHTFVxdWFkcmljKiBxdWFkLCBHTGRvdWJsZSBpbm5lciwgR0xkb3VibGUgb3V0
ZXIsIEdMaW50IHNsaWNlcywgR0xpbnQgbG9vcHMsIEdMZG91YmxlIHN0YXJ0LCBHTGRvdWJsZSBz
d2VlcCk7CmV4dGVybiB2b2lkIGdsdVBlcnNwZWN0aXZlIChHTGRvdWJsZSBmb3Z5LCBHTGRvdWJs
ZSBhc3BlY3QsIEdMZG91YmxlIHpOZWFyLCBHTGRvdWJsZSB6RmFyKTsKZXh0ZXJuIHZvaWQgZ2x1
UGlja01hdHJpeCAoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgZGVsWCwgR0xkb3Vi
bGUgZGVsWSwgR0xpbnQgKnZpZXdwb3J0KTsKZXh0ZXJuIEdMaW50IGdsdVByb2plY3QgKEdMZG91
YmxlIG9ialgsIEdMZG91YmxlIG9ialksIEdMZG91YmxlIG9ialosIGNvbnN0IEdMZG91YmxlICpt
b2RlbCwgY29uc3QgR0xkb3VibGUgKnByb2osIGNvbnN0IEdMaW50ICp2aWV3LCBHTGRvdWJsZSog
d2luWCwgR0xkb3VibGUqIHdpblksIEdMZG91YmxlKiB3aW5aKTsKZXh0ZXJuIHZvaWQgZ2x1UHds
Q3VydmUgKEdMVW51cmJzKiBudXJiLCBHTGludCBjb3VudCwgR0xmbG9hdCogZGF0YSwgR0xpbnQg
c3RyaWRlLCBHTGVudW0gdHlwZSk7CmV4dGVybiB2b2lkIGdsdVF1YWRyaWNDYWxsYmFjayAoR0xV
cXVhZHJpYyogcXVhZCwgR0xlbnVtIHdoaWNoLCBfR0xVZnVuY3B0ciBDYWxsQmFja0Z1bmMpOwpl
eHRlcm4gdm9pZCBnbHVRdWFkcmljRHJhd1N0eWxlIChHTFVxdWFkcmljKiBxdWFkLCBHTGVudW0g
ZHJhdyk7CmV4dGVybiB2b2lkIGdsdVF1YWRyaWNOb3JtYWxzIChHTFVxdWFkcmljKiBxdWFkLCBH
TGVudW0gbm9ybWFsKTsKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY09yaWVudGF0aW9uIChHTFVxdWFk
cmljKiBxdWFkLCBHTGVudW0gb3JpZW50YXRpb24pOwpleHRlcm4gdm9pZCBnbHVRdWFkcmljVGV4
dHVyZSAoR0xVcXVhZHJpYyogcXVhZCwgR0xib29sZWFuIHRleHR1cmUpOwpleHRlcm4gR0xpbnQg
Z2x1U2NhbGVJbWFnZSAoR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3SW4sIEdMc2l6ZWkgaEluLCBH
TGVudW0gdHlwZUluLCBjb25zdCB2b2lkICpkYXRhSW4sIEdMc2l6ZWkgd091dCwgR0xzaXplaSBo
T3V0LCBHTGVudW0gdHlwZU91dCwgR0x2b2lkKiBkYXRhT3V0KTsKZXh0ZXJuIHZvaWQgZ2x1U3Bo
ZXJlIChHTFVxdWFkcmljKiBxdWFkLCBHTGRvdWJsZSByYWRpdXMsIEdMaW50IHNsaWNlcywgR0xp
bnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgZ2x1VGVzc0JlZ2luQ29udG91ciAoR0xVdGVzc2VsYXRv
ciogdGVzcyk7CmV4dGVybiB2b2lkIGdsdVRlc3NCZWdpblBvbHlnb24gKEdMVXRlc3NlbGF0b3Iq
IHRlc3MsIEdMdm9pZCogZGF0YSk7CmV4dGVybiB2b2lkIGdsdVRlc3NDYWxsYmFjayAoR0xVdGVz
c2VsYXRvciogdGVzcywgR0xlbnVtIHdoaWNoLCBfR0xVZnVuY3B0ciBDYWxsQmFja0Z1bmMpOwpl
eHRlcm4gdm9pZCBnbHVUZXNzRW5kQ29udG91ciAoR0xVdGVzc2VsYXRvciogdGVzcyk7CmV4dGVy
biB2b2lkIGdsdVRlc3NFbmRQb2x5Z29uIChHTFV0ZXNzZWxhdG9yKiB0ZXNzKTsKZXh0ZXJuIHZv
aWQgZ2x1VGVzc05vcm1hbCAoR0xVdGVzc2VsYXRvciogdGVzcywgR0xkb3VibGUgdmFsdWVYLCBH
TGRvdWJsZSB2YWx1ZVksIEdMZG91YmxlIHZhbHVlWik7CmV4dGVybiB2b2lkIGdsdVRlc3NQcm9w
ZXJ0eSAoR0xVdGVzc2VsYXRvciogdGVzcywgR0xlbnVtIHdoaWNoLCBHTGRvdWJsZSBkYXRhKTsK
ZXh0ZXJuIHZvaWQgZ2x1VGVzc1ZlcnRleCAoR0xVdGVzc2VsYXRvciogdGVzcywgR0xkb3VibGUg
KmxvY2F0aW9uLCBHTHZvaWQqIGRhdGEpOwpleHRlcm4gR0xpbnQgZ2x1VW5Qcm9qZWN0IChHTGRv
dWJsZSB3aW5YLCBHTGRvdWJsZSB3aW5ZLCBHTGRvdWJsZSB3aW5aLCBjb25zdCBHTGRvdWJsZSAq
bW9kZWwsIGNvbnN0IEdMZG91YmxlICpwcm9qLCBjb25zdCBHTGludCAqdmlldywgR0xkb3VibGUq
IG9ialgsIEdMZG91YmxlKiBvYmpZLCBHTGRvdWJsZSogb2JqWik7CmV4dGVybiBHTGludCBnbHVV
blByb2plY3Q0IChHTGRvdWJsZSB3aW5YLCBHTGRvdWJsZSB3aW5ZLCBHTGRvdWJsZSB3aW5aLCBH
TGRvdWJsZSBjbGlwVywgY29uc3QgR0xkb3VibGUgKm1vZGVsLCBjb25zdCBHTGRvdWJsZSAqcHJv
aiwgY29uc3QgR0xpbnQgKnZpZXcsIEdMZG91YmxlIG5lYXIsIEdMZG91YmxlIGZhciwgR0xkb3Vi
bGUqIG9ialgsIEdMZG91YmxlKiBvYmpZLCBHTGRvdWJsZSogb2JqWiwgR0xkb3VibGUqIG9ialcp
OwoKCn0KIyAxMiAiL3Vzci9pbmNsdWRlL0dML2dsdXQuaCIgMiAzCgoKZXh0ZXJuICJDIiB7CiMg
MzY4ICIvdXNyL2luY2x1ZGUvR0wvZ2x1dC5oIiAzCmV4dGVybiB2b2lkICpnbHV0U3Ryb2tlUm9t
YW47CmV4dGVybiB2b2lkICpnbHV0U3Ryb2tlTW9ub1JvbWFuOwoKCgoKCgpleHRlcm4gdm9pZCAq
Z2x1dEJpdG1hcDlCeTE1OwpleHRlcm4gdm9pZCAqZ2x1dEJpdG1hcDhCeTEzOwpleHRlcm4gdm9p
ZCAqZ2x1dEJpdG1hcFRpbWVzUm9tYW4xMDsKZXh0ZXJuIHZvaWQgKmdsdXRCaXRtYXBUaW1lc1Jv
bWFuMjQ7CmV4dGVybiB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTA7CmV4dGVybiB2b2lkICpn
bHV0Qml0bWFwSGVsdmV0aWNhMTI7CmV4dGVybiB2b2lkICpnbHV0Qml0bWFwSGVsdmV0aWNhMTg7
CiMgNTMxICIvdXNyL2luY2x1ZGUvR0wvZ2x1dC5oIiAzCmV4dGVybiB2b2lkIGdsdXRJbml0KGlu
dCAqYXJnY3AsIGNoYXIgKiphcmd2KTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsdXRJbml0RGlzcGxh
eU1vZGUodW5zaWduZWQgaW50IG1vZGUpOwoKZXh0ZXJuIHZvaWQgZ2x1dEluaXREaXNwbGF5U3Ry
aW5nKGNvbnN0IGNoYXIgKnN0cmluZyk7CgpleHRlcm4gdm9pZCBnbHV0SW5pdFdpbmRvd1Bvc2l0
aW9uKGludCB4LCBpbnQgeSk7CmV4dGVybiB2b2lkIGdsdXRJbml0V2luZG93U2l6ZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwpleHRlcm4gdm9pZCBnbHV0TWFpbkxvb3Aodm9pZCk7CgoKZXh0ZXJu
IGludCBnbHV0Q3JlYXRlV2luZG93KGNvbnN0IGNoYXIgKnRpdGxlKTsKCgoKCgoKCmV4dGVybiBp
bnQgZ2x1dENyZWF0ZVN1YldpbmRvdyhpbnQgd2luLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCk7CmV4dGVybiB2b2lkIGdsdXREZXN0cm95V2luZG93KGludCB3aW4pOwpleHRl
cm4gdm9pZCBnbHV0UG9zdFJlZGlzcGxheSh2b2lkKTsKCmV4dGVybiB2b2lkIGdsdXRQb3N0V2lu
ZG93UmVkaXNwbGF5KGludCB3aW4pOwoKZXh0ZXJuIHZvaWQgZ2x1dFN3YXBCdWZmZXJzKHZvaWQp
OwpleHRlcm4gaW50IGdsdXRHZXRXaW5kb3codm9pZCk7CmV4dGVybiB2b2lkIGdsdXRTZXRXaW5k
b3coaW50IHdpbik7CmV4dGVybiB2b2lkIGdsdXRTZXRXaW5kb3dUaXRsZShjb25zdCBjaGFyICp0
aXRsZSk7CmV4dGVybiB2b2lkIGdsdXRTZXRJY29uVGl0bGUoY29uc3QgY2hhciAqdGl0bGUpOwpl
eHRlcm4gdm9pZCBnbHV0UG9zaXRpb25XaW5kb3coaW50IHgsIGludCB5KTsKZXh0ZXJuIHZvaWQg
Z2x1dFJlc2hhcGVXaW5kb3coaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKZXh0ZXJuIHZvaWQgZ2x1
dFBvcFdpbmRvdyh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dFB1c2hXaW5kb3codm9pZCk7CmV4dGVy
biB2b2lkIGdsdXRJY29uaWZ5V2luZG93KHZvaWQpOwpleHRlcm4gdm9pZCBnbHV0U2hvd1dpbmRv
dyh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dEhpZGVXaW5kb3codm9pZCk7CgpleHRlcm4gdm9pZCBn
bHV0RnVsbFNjcmVlbih2b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dFNldEN1cnNvcihpbnQgY3Vyc29y
KTsKCmV4dGVybiB2b2lkIGdsdXRXYXJwUG9pbnRlcihpbnQgeCwgaW50IHkpOwoKCgpleHRlcm4g
dm9pZCBnbHV0RXN0YWJsaXNoT3ZlcmxheSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dFJlbW92ZU92
ZXJsYXkodm9pZCk7CmV4dGVybiB2b2lkIGdsdXRVc2VMYXllcihHTGVudW0gbGF5ZXIpOwpleHRl
cm4gdm9pZCBnbHV0UG9zdE92ZXJsYXlSZWRpc3BsYXkodm9pZCk7CgpleHRlcm4gdm9pZCBnbHV0
UG9zdFdpbmRvd092ZXJsYXlSZWRpc3BsYXkoaW50IHdpbik7CgpleHRlcm4gdm9pZCBnbHV0U2hv
d092ZXJsYXkodm9pZCk7CmV4dGVybiB2b2lkIGdsdXRIaWRlT3ZlcmxheSh2b2lkKTsKCgoKZXh0
ZXJuIGludCBnbHV0Q3JlYXRlTWVudSh2b2lkICggKmZ1bmMpKGludCkpOwoKCgoKCgoKZXh0ZXJu
IHZvaWQgZ2x1dERlc3Ryb3lNZW51KGludCBtZW51KTsKZXh0ZXJuIGludCBnbHV0R2V0TWVudSh2
b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dFNldE1lbnUoaW50IG1lbnUpOwpleHRlcm4gdm9pZCBnbHV0
QWRkTWVudUVudHJ5KGNvbnN0IGNoYXIgKmxhYmVsLCBpbnQgdmFsdWUpOwpleHRlcm4gdm9pZCBn
bHV0QWRkU3ViTWVudShjb25zdCBjaGFyICpsYWJlbCwgaW50IHN1Ym1lbnUpOwpleHRlcm4gdm9p
ZCBnbHV0Q2hhbmdlVG9NZW51RW50cnkoaW50IGl0ZW0sIGNvbnN0IGNoYXIgKmxhYmVsLCBpbnQg
dmFsdWUpOwpleHRlcm4gdm9pZCBnbHV0Q2hhbmdlVG9TdWJNZW51KGludCBpdGVtLCBjb25zdCBj
aGFyICpsYWJlbCwgaW50IHN1Ym1lbnUpOwpleHRlcm4gdm9pZCBnbHV0UmVtb3ZlTWVudUl0ZW0o
aW50IGl0ZW0pOwpleHRlcm4gdm9pZCBnbHV0QXR0YWNoTWVudShpbnQgYnV0dG9uKTsKZXh0ZXJu
IHZvaWQgZ2x1dERldGFjaE1lbnUoaW50IGJ1dHRvbik7CgoKZXh0ZXJuIHZvaWQgZ2x1dERpc3Bs
YXlGdW5jKHZvaWQgKCAqZnVuYykodm9pZCkpOwpleHRlcm4gdm9pZCBnbHV0UmVzaGFwZUZ1bmMo
dm9pZCAoICpmdW5jKShpbnQgd2lkdGgsIGludCBoZWlnaHQpKTsKZXh0ZXJuIHZvaWQgZ2x1dEtl
eWJvYXJkRnVuYyh2b2lkICggKmZ1bmMpKHVuc2lnbmVkIGNoYXIga2V5LCBpbnQgeCwgaW50IHkp
KTsKZXh0ZXJuIHZvaWQgZ2x1dE1vdXNlRnVuYyh2b2lkICggKmZ1bmMpKGludCBidXR0b24sIGlu
dCBzdGF0ZSwgaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkIGdsdXRNb3Rpb25GdW5jKHZvaWQg
KCAqZnVuYykoaW50IHgsIGludCB5KSk7CmV4dGVybiB2b2lkIGdsdXRQYXNzaXZlTW90aW9uRnVu
Yyh2b2lkICggKmZ1bmMpKGludCB4LCBpbnQgeSkpOwpleHRlcm4gdm9pZCBnbHV0RW50cnlGdW5j
KHZvaWQgKCAqZnVuYykoaW50IHN0YXRlKSk7CmV4dGVybiB2b2lkIGdsdXRWaXNpYmlsaXR5RnVu
Yyh2b2lkICggKmZ1bmMpKGludCBzdGF0ZSkpOwpleHRlcm4gdm9pZCBnbHV0SWRsZUZ1bmModm9p
ZCAoICpmdW5jKSh2b2lkKSk7CmV4dGVybiB2b2lkIGdsdXRUaW1lckZ1bmModW5zaWduZWQgaW50
IG1pbGxpcywgdm9pZCAoICpmdW5jKShpbnQgdmFsdWUpLCBpbnQgdmFsdWUpOwpleHRlcm4gdm9p
ZCBnbHV0TWVudVN0YXRlRnVuYyh2b2lkICggKmZ1bmMpKGludCBzdGF0ZSkpOwoKZXh0ZXJuIHZv
aWQgZ2x1dFNwZWNpYWxGdW5jKHZvaWQgKCAqZnVuYykoaW50IGtleSwgaW50IHgsIGludCB5KSk7
CmV4dGVybiB2b2lkIGdsdXRTcGFjZWJhbGxNb3Rpb25GdW5jKHZvaWQgKCAqZnVuYykoaW50IHgs
IGludCB5LCBpbnQgeikpOwpleHRlcm4gdm9pZCBnbHV0U3BhY2ViYWxsUm90YXRlRnVuYyh2b2lk
ICggKmZ1bmMpKGludCB4LCBpbnQgeSwgaW50IHopKTsKZXh0ZXJuIHZvaWQgZ2x1dFNwYWNlYmFs
bEJ1dHRvbkZ1bmModm9pZCAoICpmdW5jKShpbnQgYnV0dG9uLCBpbnQgc3RhdGUpKTsKZXh0ZXJu
IHZvaWQgZ2x1dEJ1dHRvbkJveEZ1bmModm9pZCAoICpmdW5jKShpbnQgYnV0dG9uLCBpbnQgc3Rh
dGUpKTsKZXh0ZXJuIHZvaWQgZ2x1dERpYWxzRnVuYyh2b2lkICggKmZ1bmMpKGludCBkaWFsLCBp
bnQgdmFsdWUpKTsKZXh0ZXJuIHZvaWQgZ2x1dFRhYmxldE1vdGlvbkZ1bmModm9pZCAoICpmdW5j
KShpbnQgeCwgaW50IHkpKTsKZXh0ZXJuIHZvaWQgZ2x1dFRhYmxldEJ1dHRvbkZ1bmModm9pZCAo
ICpmdW5jKShpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBpbnQgeSkpOwoKZXh0ZXJuIHZv
aWQgZ2x1dE1lbnVTdGF0dXNGdW5jKHZvaWQgKCAqZnVuYykoaW50IHN0YXR1cywgaW50IHgsIGlu
dCB5KSk7CmV4dGVybiB2b2lkIGdsdXRPdmVybGF5RGlzcGxheUZ1bmModm9pZCAoICpmdW5jKSh2
b2lkKSk7CgpleHRlcm4gdm9pZCBnbHV0V2luZG93U3RhdHVzRnVuYyh2b2lkICggKmZ1bmMpKGlu
dCBzdGF0ZSkpOwoKCmV4dGVybiB2b2lkIGdsdXRLZXlib2FyZFVwRnVuYyh2b2lkICggKmZ1bmMp
KHVuc2lnbmVkIGNoYXIga2V5LCBpbnQgeCwgaW50IHkpKTsKZXh0ZXJuIHZvaWQgZ2x1dFNwZWNp
YWxVcEZ1bmModm9pZCAoICpmdW5jKShpbnQga2V5LCBpbnQgeCwgaW50IHkpKTsKZXh0ZXJuIHZv
aWQgZ2x1dEpveXN0aWNrRnVuYyh2b2lkICggKmZ1bmMpKHVuc2lnbmVkIGludCBidXR0b25NYXNr
LCBpbnQgeCwgaW50IHksIGludCB6KSwgaW50IHBvbGxJbnRlcnZhbCk7CgoKCgoKZXh0ZXJuIHZv
aWQgZ2x1dFNldENvbG9yKGludCwgR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg
Ymx1ZSk7CmV4dGVybiBHTGZsb2F0IGdsdXRHZXRDb2xvcihpbnQgbmR4LCBpbnQgY29tcG9uZW50
KTsKZXh0ZXJuIHZvaWQgZ2x1dENvcHlDb2xvcm1hcChpbnQgd2luKTsKCgpleHRlcm4gaW50IGds
dXRHZXQoR0xlbnVtIHR5cGUpOwpleHRlcm4gaW50IGdsdXREZXZpY2VHZXQoR0xlbnVtIHR5cGUp
OwoKCmV4dGVybiBpbnQgZ2x1dEV4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyICpuYW1lKTsK
CgpleHRlcm4gaW50IGdsdXRHZXRNb2RpZmllcnModm9pZCk7CmV4dGVybiBpbnQgZ2x1dExheWVy
R2V0KEdMZW51bSB0eXBlKTsKCgoKZXh0ZXJuIHZvaWQgZ2x1dEJpdG1hcENoYXJhY3Rlcih2b2lk
ICpmb250LCBpbnQgY2hhcmFjdGVyKTsKZXh0ZXJuIGludCBnbHV0Qml0bWFwV2lkdGgodm9pZCAq
Zm9udCwgaW50IGNoYXJhY3Rlcik7CmV4dGVybiB2b2lkIGdsdXRTdHJva2VDaGFyYWN0ZXIodm9p
ZCAqZm9udCwgaW50IGNoYXJhY3Rlcik7CmV4dGVybiBpbnQgZ2x1dFN0cm9rZVdpZHRoKHZvaWQg
KmZvbnQsIGludCBjaGFyYWN0ZXIpOwoKZXh0ZXJuIGludCBnbHV0Qml0bWFwTGVuZ3RoKHZvaWQg
KmZvbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0cmluZyk7CmV4dGVybiBpbnQgZ2x1dFN0cm9r
ZUxlbmd0aCh2b2lkICpmb250LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHJpbmcpOwoKCgpleHRl
cm4gdm9pZCBnbHV0V2lyZVNwaGVyZShHTGRvdWJsZSByYWRpdXMsIEdMaW50IHNsaWNlcywgR0xp
bnQgc3RhY2tzKTsKZXh0ZXJuIHZvaWQgZ2x1dFNvbGlkU3BoZXJlKEdMZG91YmxlIHJhZGl1cywg
R0xpbnQgc2xpY2VzLCBHTGludCBzdGFja3MpOwpleHRlcm4gdm9pZCBnbHV0V2lyZUNvbmUoR0xk
b3VibGUgYmFzZSwgR0xkb3VibGUgaGVpZ2h0LCBHTGludCBzbGljZXMsIEdMaW50IHN0YWNrcyk7
CmV4dGVybiB2b2lkIGdsdXRTb2xpZENvbmUoR0xkb3VibGUgYmFzZSwgR0xkb3VibGUgaGVpZ2h0
LCBHTGludCBzbGljZXMsIEdMaW50IHN0YWNrcyk7CmV4dGVybiB2b2lkIGdsdXRXaXJlQ3ViZShH
TGRvdWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQgZ2x1dFNvbGlkQ3ViZShHTGRvdWJsZSBzaXplKTsK
ZXh0ZXJuIHZvaWQgZ2x1dFdpcmVUb3J1cyhHTGRvdWJsZSBpbm5lclJhZGl1cywgR0xkb3VibGUg
b3V0ZXJSYWRpdXMsIEdMaW50IHNpZGVzLCBHTGludCByaW5ncyk7CmV4dGVybiB2b2lkIGdsdXRT
b2xpZFRvcnVzKEdMZG91YmxlIGlubmVyUmFkaXVzLCBHTGRvdWJsZSBvdXRlclJhZGl1cywgR0xp
bnQgc2lkZXMsIEdMaW50IHJpbmdzKTsKZXh0ZXJuIHZvaWQgZ2x1dFdpcmVEb2RlY2FoZWRyb24o
dm9pZCk7CmV4dGVybiB2b2lkIGdsdXRTb2xpZERvZGVjYWhlZHJvbih2b2lkKTsKZXh0ZXJuIHZv
aWQgZ2x1dFdpcmVUZWFwb3QoR0xkb3VibGUgc2l6ZSk7CmV4dGVybiB2b2lkIGdsdXRTb2xpZFRl
YXBvdChHTGRvdWJsZSBzaXplKTsKZXh0ZXJuIHZvaWQgZ2x1dFdpcmVPY3RhaGVkcm9uKHZvaWQp
OwpleHRlcm4gdm9pZCBnbHV0U29saWRPY3RhaGVkcm9uKHZvaWQpOwpleHRlcm4gdm9pZCBnbHV0
V2lyZVRldHJhaGVkcm9uKHZvaWQpOwpleHRlcm4gdm9pZCBnbHV0U29saWRUZXRyYWhlZHJvbih2
b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1dFdpcmVJY29zYWhlZHJvbih2b2lkKTsKZXh0ZXJuIHZvaWQg
Z2x1dFNvbGlkSWNvc2FoZWRyb24odm9pZCk7CgoKCmV4dGVybiBpbnQgZ2x1dFZpZGVvUmVzaXpl
R2V0KEdMZW51bSBwYXJhbSk7CmV4dGVybiB2b2lkIGdsdXRTZXR1cFZpZGVvUmVzaXppbmcodm9p
ZCk7CmV4dGVybiB2b2lkIGdsdXRTdG9wVmlkZW9SZXNpemluZyh2b2lkKTsKZXh0ZXJuIHZvaWQg
Z2x1dFZpZGVvUmVzaXplKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKZXh0
ZXJuIHZvaWQgZ2x1dFZpZGVvUGFuKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKCgpleHRlcm4gdm9pZCBnbHV0UmVwb3J0RXJyb3JzKHZvaWQpOwojIDcyMCAiL3Vzci9pbmNs
dWRlL0dML2dsdXQuaCIgMwpleHRlcm4gdm9pZCBnbHV0SWdub3JlS2V5UmVwZWF0KGludCBpZ25v
cmUpOwpleHRlcm4gdm9pZCBnbHV0U2V0S2V5UmVwZWF0KGludCByZXBlYXRNb2RlKTsKZXh0ZXJu
IHZvaWQgZ2x1dEZvcmNlSm95c3RpY2tGdW5jKHZvaWQpOwojIDczNCAiL3Vzci9pbmNsdWRlL0dM
L2dsdXQuaCIgMwpleHRlcm4gdm9pZCBnbHV0R2FtZU1vZGVTdHJpbmcoY29uc3QgY2hhciAqc3Ry
aW5nKTsKZXh0ZXJuIGludCBnbHV0RW50ZXJHYW1lTW9kZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2x1
dExlYXZlR2FtZU1vZGUodm9pZCk7CmV4dGVybiBpbnQgZ2x1dEdhbWVNb2RlR2V0KEdMZW51bSBt
b2RlKTsKCgoKfQojIDggIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAyIDMKIyAzMTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAyIDMKIyAyOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwojIDM4ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIg
MSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVmIGxvbmcgZG91
YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQxICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBh
c2luIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJs
ZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19hdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJs
ZSBjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUg
X194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91Ymxl
IHRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAq
X19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChk
b3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgYWNvc2gg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91Ymxl
IGF0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl
cm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4
cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgcG93MTAgKGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKCgpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVu
dCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhw
b25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBf
X2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9n
MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9f
eCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91Ymxl
IF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUgX194KSB0
aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91Ymxl
IGxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGRvdWJsZSBsb2cyIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIg
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19jZWlsIChkb3VibGUgX194KSB0
aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZs
b29yIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUg
X194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2RyZW0gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHNpZ25pZmlj
YW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIG5hbiAoX19jb25z
dCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX25hbiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbiAoZG91YmxlIF9fdmFs
dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBp
c25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
ajAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqbiAo
aW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKSB0
aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX3kwIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUg
eW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJs
ZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJmYyAo
ZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgdGhyb3cgKCk7
CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
bGdhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91Ymxl
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19n
YW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFfciAoZG91
YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3Ig
KGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBy
aW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3Vi
bGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUgbmV4dHRvd2FyZCAoZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBy
ZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGRvdWJsZSBzY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9fbikgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19zY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9fbikgdGhyb3cgKCk7CgoKCgpleHRl
cm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IGlsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJsbiAoZG91YmxlIF9feCwg
bG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRvdWJsZSBf
X3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX25lYXJieWludCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fcm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g
ZG91YmxlIHRydW5jIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVt
cXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgaW50IGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
aW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBs
bHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmlu
dCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGludCBscm91bmQgKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmQgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2ZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoK
CmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpl
eHRlcm4gZG91YmxlIGZtaW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXQgKGRvdWJsZSBf
X3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUg
X196KSB0aHJvdyAoKTsKIyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAz
CiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29z
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkg
dGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2Nvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190
YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBf
X3NpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgc2luaGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3No
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0
YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBf
X3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxv
YXQgZXhwMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgcG93MTBmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19wb3cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cikg
dGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg
bG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBm
bG9hdCBleHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzJmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9h
dCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
ZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChm
bG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChm
bG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
ZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbG9vcmYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0
ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1m
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChm
bG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2Fu
ZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NpZ25pZmljYW5kZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBm
bG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBmbG9hdCBuYW5mIChfX2NvbnN0IGNoYXIg
Kl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxv
YXQgX19uYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAo
ZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBmbG9hdCBqMGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9h
dCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fajFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQp
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgeTBmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQp
IHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX3kxZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZmIChm
bG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAo
ZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X3RnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBmbG9hdCBsZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBuZXh0
YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5l
eHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93
ICgpOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9faWxv
Z2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9h
dCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxibG5mIChm
bG9hdCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBuZWFyYnlp
bnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19uZWFyYnlpbnRmIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgcm91bmRmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9f
eCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmVtcXVv
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQg
X19scmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmlu
dGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpl
eHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4g
ZmxvYXQgZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg
Zm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1p
bmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xh
c3NpZnlmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgZm1hZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2ZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIHRocm93ICgpOwojIDgzICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91Ymxl
IF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29z
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2
b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25n
IGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDEwbCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBwb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3BvdzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9f
ZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91
YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0
aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2RmbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2xvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xv
Z2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4
cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHAy
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzJsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcG93bCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19wb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2JydGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWls
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZhYnNsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Zm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3VibGUg
X192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5s
IChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19q
MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBs
b25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBsb25n
IGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs
ZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX195
bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBl
cmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJs
ZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkgdGhy
b3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWdu
Z2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgdGhyb3cgKCk7CgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBp
bnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5l
YXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIHRydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8p
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25n
IGludCBscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBf
X2xyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
X19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQg
bHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJv
dW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxy
b3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9f
bGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwoj
IDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCiAgewogICAgRlBfTkFOLAoKICAgIEZQ
X0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBfU1VCTk9STUFMLAoKICAgIEZQX05PUk1B
TAoKICB9OwojIDI0MCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9J
RUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJ
Ql9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9O
OwojIDI2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1Y3QgX19leGNlcHRpb24KCgoKICB7
CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJs
ZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCmV4dGVybiBpbnQgbWF0aGVyciAoc3Ry
dWN0IF9fZXhjZXB0aW9uICpfX2V4YykgdGhyb3cgKCk7CiMgMzUwICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAxIDMKIyAxMjcgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBpbnQKX19zaWduYml0ZiAo
ZmxvYXQgX194KSB0aHJvdyAoKQp7CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGZsb2F0IF9fZjsg
aW50IF9faTsgfSBfX3UgPSB7IF9fZjogX194IH07CiAgcmV0dXJuIF9fdS5fX2kgPCAwOwp9Cl9f
aW5saW5lIGludApfX3NpZ25iaXQgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBfX2V4dGVuc2lv
bl9fIHVuaW9uIHsgZG91YmxlIF9fZDsgaW50IF9faVsyXTsgfSBfX3UgPSB7IF9fZDogX194IH07
CiAgcmV0dXJuIF9fdS5fX2lbMV0gPCAwOwp9Cl9faW5saW5lIGludApfX3NpZ25iaXRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3Vi
bGUgX19sOyBpbnQgX19pWzNdOyB9IF9fdSA9IHsgX19sOiBfX3ggfTsKICByZXR1cm4gKF9fdS5f
X2lbMl0gJiAweDgwMDApICE9IDA7Cn0KIyAyOTEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5saW5l
IGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/
IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBfX2lubGluZSBmbG9hdCBfX3NnbmYg
KGZsb2F0KSB0aHJvdyAoKTsgX19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCBfX3gpIHRocm93
ICgpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7
IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IF9f
aW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
dHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9CiMgNDI1
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIGF0YW4y
IChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5s
aW5lIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQpfX2lubGluZSBsb25nIGRv
dWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBh
dGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fdmFsdWU7IH0KCgpfX2lubGluZSBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIg
ImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAi
Y2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0
IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIs
ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBmbW9kbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3
CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNDQwICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19y
ZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdp
c3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAo
X19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGxvbmcg
ZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lubGluZSBsb25nIGRvdWJs
ZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0
KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKCl9faW5saW5lIGRvdWJsZSBmYWJz
IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpf
X2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX2J1aWx0
aW5fZmFic2YgKF9feCk7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9Cl9faW5saW5l
IGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4g
X19idWlsdGluX2ZhYnNsIChfX3gpOyB9CiMgNDY2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5s
aW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVn
aXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4i
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3Vs
dDsgfSBfX2lubGluZSBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVy
IGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10
IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBf
X2lubGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBm
cGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBf
X3Jlc3VsdDsgfQoKX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpIHsgX19leHRlbnNpb25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9feGxkOyB1bnNpZ25l
ZCBpbnQgX194aVszXTsgfSBfX24gPSB7IF9feGxkOiBfX3ggfTsgX19uLl9feGlbMl0gPSAoX19u
Ll9feGlbMl0gJiAweDgwMDApIHwgMHgzZmZmOyBfX24uX194aVsxXSA9IDB4ODAwMDAwMDA7IF9f
bi5fX3hpWzBdID0gMDsgcmV0dXJuIF9fbi5fX3hsZDsgfQojIDQ5MiAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgdGhy
b3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBf
X2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChf
X2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDog
Im0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChf
X2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194
KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0
bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1w
ID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAi
bSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZmxvb3Js
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25l
ZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0i
IChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgi
ZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUwMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBjZWlsIChkb3Vi
bGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgY2VpbGYg
KGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cp
KTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAo
ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91
YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAl
MCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQoj
IDUyMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZQps
ZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192YWx1ZTsK
fQojIDUzOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJs
ZSBsb2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0
ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9f
ICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBsb2cx
cGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBp
ZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkg
X192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxk
bG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cx
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0
ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9f
ICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQojIDU1MyAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1
cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjAp
ICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQg
X194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSAr
IDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXNp
bmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195
ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChf
X3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfQoKCgoKX19p
bmxpbmUgZG91YmxlIGFjb3NoIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBsb2dsIChf
X3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gX19pbmxp
bmUgZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmV0dXJuIGxvZ2wgKF9feCAr
IF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBfX2lubGluZSBs
b25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9n
bCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9CgoK
X19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9f
eSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGZsb2F0
IGF0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9
IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4w
ICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5obCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9f
ZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsg
X195KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCAr
IF9feSAqIF9feSk7IH0gX19pbmxpbmUgZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgdGhyb3cgKCkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBf
X2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9
CgpfX2lubGluZSBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgbG9nYmYgKGZs
b2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6
ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFs
dWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayks
ICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1ODMgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBmbG9hdApsZGV4cGYgKGZs
b2F0IF9feCwgaW50IF9feSkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192YWx1ZTsKfQoKX19pbmxp
bmUgbG9uZyBkb3VibGUKbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgp
CnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
c2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBf
X3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KIyA2MDcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpfX2lubGluZSBsb25nIGludApscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewog
IGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsICUwIiA6
ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xyaW50cmVz
Owp9Cl9faW5saW5lIGxvbmcgaW50CmxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgbG9u
ZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAiIDogIj1t
IiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRyZXM7Cn0K
X19pbmxpbmUgbG9uZyBpbnQKbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBs
b25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbCAlMCIgOiAi
PW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19scmludHJlczsK
fQojIDYzMCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGxvbmcg
bG9uZyBpbnQKbGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBsb25nIGludCBf
X2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9f
bGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19p
bmxpbmUgbG9uZyBsb25nIGludApsbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25n
IGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAi
IDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmlu
dHJlczsKfQpfX2lubGluZSBsb25nIGxvbmcgaW50CmxscmludGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkKewogIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGls
ZV9fICgiZmlzdHBsbCAlMCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3Qi
KTsgcmV0dXJuIF9fbGxyaW50cmVzOwp9CgoKCgoKCgpfX2lubGluZSBkb3VibGUgZHJlbSAoZG91
YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFc
blx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUp
LCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0
dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195
KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9i
YmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJl
ZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lu
bGluZSBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2Ji
ZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0
IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVk
KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNjY1
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50Cl9fZmluaXRl
IChkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgcmV0dXJuIChfX2V4dGVuc2lvbl9fCiAgICAgICAg
ICAoKCgoKHVuaW9uIHsgZG91YmxlIF9fZDsgaW50IF9faVsyXTsgfSkge19fZDogX194fSkuX19p
WzFdCiAgICAgICAgICAgICB8IDB4ODAwZmZmZmZ1KSArIDEpID4+IDMxKSk7Cn0KIyAzNTEgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDQxMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp9CiMg
OSAiQmVudXR6ZXJzY2huaXR0c3RlbGxlLmNwcCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzCgpleHRlcm4gIkMiIHsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0ZmxhZ3Mu
aCIgMSAzCiMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1
cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRl
L2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIv
dXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh
dHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAog
ICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2ln
bmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6
ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5h
dGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFs
Ojg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQg
aW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBs
ZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9u
ZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAxMzMgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9t
YXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAq
X19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQg
YXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4g
bG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3Ry
dG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
IHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpl
eHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9f
CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7CiMg
MjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xv
Y2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVf
dG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAy
MTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRv
bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2Nh
bGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRvZl9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7
CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs
ZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91
cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpleHRlcm4gdW5z
aWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91
bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gX19p
bmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2RfaW50
ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApz
dHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0
b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKSB0
aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAo
KQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1
cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoKCgpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
aW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0
ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
dW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkg
dGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRy
LCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9u
ZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1
cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91
bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0
b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBf
X2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICBy
ZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVybiBfX2lubGlu
ZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gKGlu
dCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1
cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19u
cHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVs
bCwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2
NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29u
c3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwpleHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAz
CiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFy
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50
MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpf
X3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9f
dWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7
CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlw
ZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVm
IGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19y
bGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19p
ZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsK
Cgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVm
IGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7
Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsK
Cgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQg
X19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19x
dWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBl
ZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmls
Y250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9x
dWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYg
bG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2Nh
bGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz
CnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsK
IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9
OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2Ny
OwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0
YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRw
YXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3Vh
cmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6
ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193
YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVt
bXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRf
a2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9f
bV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsK
CgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVh
ZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQg
X19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rl
c2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGlu
ZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tf
dDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7
Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFk
X3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9j
ayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBf
cHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRl
ZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoK
CnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBl
ZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVh
ZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90
IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg
aW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2
X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90
IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlk
X3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2Zm
NjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lk
X3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2Rh
ZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9f
a2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVm
IF9fY2xvY2tfdCBjbG9ja190OwojIDcwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYg
X190aW1lX3QgdGltZV90OwojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19j
bG9ja2lkX3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYg
X190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK
Cgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3VzZWNvbmRz
X3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTAg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9f
KSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChf
X21vZGVfXyAoX193b3JkX18pKSk7CiMgMjE1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAi
L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYg
aW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBs
b25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07
CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoK
dHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMSAzCiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsK
ICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsKIyA0NSAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUu
aCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXZhbAog
IHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9Owoj
IDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYg
c3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAo
X19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9zZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZk
X21hc2s7CiMgOTUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuICJDIiB7CgoK
CgoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19y
ZWFkZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMs
CiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3Ry
aWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193
cml0ZWZkcywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRm
ZHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0
IF9fdGltZW91dCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3Ry
aWN0IF9fc2lnbWFzaykgdGhyb3cgKCk7CgoKfQojIDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxr
c2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19m
c2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7
CiMgMjU3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3Qg
YmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYg
X19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCn0KIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoK
CmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3Rh
dGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsK
CgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQz
Ml90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50
IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoK
ZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
LAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVu
c2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgp
OwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFu
ZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1
bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5k
NDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0
IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9p
ZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRo
cm93ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZh
bCkgdGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQg
c2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0
OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2ln
bmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9
OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25n
IGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cg
KCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwK
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwg
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4g
aW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CiMgNTI3
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9f
c2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lk
ICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZv
aWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgpleHRl
cm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVk
ZS9hbGxvY2EuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJu
IHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQojIDU0NyAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBf
X3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4g
aW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwg
c2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
OwoKCgpleHRlcm4gdm9pZCBhYm9ydCAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQp
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBf
X3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpnZXRl
bnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2Vj
dXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBp
bnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzZXRl
bnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3Jl
cGxhY2UpCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSB0aHJv
dyAoKTsKIyA2MjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1w
IChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAo
Y2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjQwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwojIDY1
MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpf
X3RlbXBsYXRlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIg
Kl9fY29tbWFuZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmls
ZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CiMgNjcyICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19y
ZXNvbHZlZCkgdGhyb3cgKCk7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9f
Y29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNv
bXBhcmlzb25fZm5fdDsKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpf
X2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVy
biB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl
LAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBp
bnQgYWJzIChpbnQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4
dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMg
KGxvbmcgbG9uZyBpbnQgX194KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3Qg
bGxkaXYgKGxvbmcgbG9uZyBpbnQgX19udW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKIyA3MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
Y2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFy
ICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAg
ICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0
aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19sZW4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBx
ZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAg
ICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0
aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0
IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2No
YXJfdCBfX3djaGFyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJf
dCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCB3
Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCk7CgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkg
dGhyb3cgKCk7CiMgODA4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRz
dWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQg
c2V0a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQg
cG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGdy
YW50cHQgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmxvY2twdCAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBf
X25lbGVtKSB0aHJvdyAoKTsKCgoKCgp9CiMgMTAgIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAi
IDIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0
ZGlvLmgiIDEgMwojIDM5ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuICJDIiB7CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDQgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTQg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkaW8uaCIg
Mwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDY0ICIvdXNyL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lP
X0ZJTEUgX19GSUxFOwojIDc0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
Mi9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiMgMzIg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAx
IDMKIyAxNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIxICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5
cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFy
LmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsK
ICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21i
c3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVkZWYgc3Ry
dWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190
Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3Rh
dGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9p
bmNsdWRlL2djb252LmgiIDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9nY29udi5o
IiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBf
X0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBf
X0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lO
Q09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZf
SU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAog
IF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVw
OwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7
CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3Qp
IChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRf
ZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRf
ZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3Ry
YW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNp
Z25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICop
OwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19j
b25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlw
ZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2Nv
bnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKios
IGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZv
aWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3Qg
X190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRf
ZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19k
YXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9f
Z2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5k
bGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIg
Kl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAg
X19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7
CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBp
bnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0
ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewog
IHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoK
CgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQg
X19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBf
X3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5
cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBf
X2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBz
dHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29u
dl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRl
ZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlw
ZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz
CiMgNTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBf
X2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDIgMwojIDE2MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7
IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
dm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21h
cmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAx
OTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsK
ICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAog
IF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVj
dCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNo
YXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0
ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBj
aGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZl
X2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAg
c3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsK
CiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoK
CiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZz
ZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA1ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAq
X19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1
ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBf
SU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5f
OwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3Ry
dWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwg
Y2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBf
X2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGlu
dCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193
KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBl
ZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3Jp
dGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tp
ZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVu
Y3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9f
d3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpj
bG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9f
ZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmls
ZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUg
Kl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKZXh0
ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7
CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19v
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRl
cmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9f
RklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwg
d2ludF90KSB0aHJvdyAoKTsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBp
bnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0
YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9m
IChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJ
TEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklM
RSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cg
KCk7CiMgNDU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5m
IChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qp
IHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9f
c3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2
b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChf
SU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRf
dCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0
ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwojIDUx
NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDc1ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNf
dmFfbGlzdCBfX25vdF92YV9saXN0X187CiMgODkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7
CgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEzOCAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDEzOSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGlu
OwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4g
aW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSB0aHJvdyAoKTsKIyAxNjcgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqdG1w
bmFtIChjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFy
ICpfX3MpIHRocm93ICgpOwojIDE4NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjIvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNo
YXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gRklM
RSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAoKTsKCmV4
dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAog
ICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7
CiMgMjMxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50
IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUg
KmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykg
dGhyb3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xl
biwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpvcGVu
X21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAg
ICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgpleHRl
cm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnBy
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAo
Y2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNo
YXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19m
ZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4g
aW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVy
biBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5m
X18sIDIsIDApKSk7CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgZ2V0Y2hhciAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2Vk
ICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSB0aHJvdyAoKTsKCgoK
CgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRz
X3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIHRocm93ICgpOwojIDQzNSAiL3Vzci9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBfX3Nz
aXplX3QgX19nZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1p
dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fc3NpemVfdCBn
ZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZw
dXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0
IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVz
dHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCBm
d3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3Qg
ZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUg
Kl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQg
cmV3aW5kIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNDk4ICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vl
a28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgp
OwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jl
c3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpf
X3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSB0aHJvdyAoKTsKIyA1MzIgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
aW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVu
Y2UpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CmV4dGVybiBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBm
c2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgdGhyb3cg
KCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7Cgpl
eHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVy
cm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0
IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19j
b25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7
CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJu
IGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmls
ZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxF
ICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2Rlcykg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNr
OwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0
IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50
ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmdzKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiB2
b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNjM5ICIvdXNyL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL2JpdHMvc3Rk
aW8uaCIgMwppbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpCnsKICByZXR1cm4gdmZwcmludGYgKHN0
ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmlubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkgdGhyb3cg
KCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgppbmxpbmUgaW50CmdldGNfdW5s
b2NrZWQgKEZJTEUgKl9fZnApIHRocm93ICgpCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRf
cHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVk
IGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgppbmxpbmUgaW50CmdldGNoYXJf
dW5sb2NrZWQgKHZvaWQpIHRocm93ICgpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0
ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVk
IGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgppbmxpbmUgaW50CnB1dGNo
YXIgKGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsK
fQoKCgoKaW5saW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
IHRocm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0
cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBj
aGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRy
KysgPSAoX19jKSkpOwp9CgoKCgoKaW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0
ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVh
bSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgppbmxpbmUgaW50CnB1dGNoYXJfdW5sb2Nr
ZWQgKGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0
ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNp
Z25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRl
X3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmlubGluZSBfX3NzaXplX3QKZ2V0bGluZSAoY2hhciAq
Kl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0
dXJuIF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19uLCAnXG4nLCBfX3N0cmVhbSk7Cn0KCgoKCgpp
bmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0
dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7Cn0KCgppbmxpbmUgaW50CmZl
cnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgoX19z
dHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDY0MCAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgp9CiMgMTEgIkJlbnV0
emVyc2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICJCaWxsYXJkR0wuaCIgMQoKCgoKCgp2b2lkIHVw
ZGF0ZUdMKCk7CnZvaWQgU3Rvc3MoR0xmbG9hdCxHTGZsb2F0KTsKdm9pZCB0aW1lckV2ZW50KCk7
CnZvaWQgU2ljaHRiYXIoaW50KTsKaW50IG1haW4oaW50LGNoYXIqKik7CiMgMTIgIkJlbnV0emVy
c2Nobml0dHN0ZWxsZS5jcHAiIDIKCiMgMSAiS3VnZWwuaCIgMQojIDkgIkt1Z2VsLmgiCmNsYXNz
IEt1Z2VsIHsKIHB1YmxpYzoKICBLdWdlbCgpOwogIHZvaWQgbWFsZShHTGludCk7CiAgdm9pZCBt
YWxlU2NoYXR0ZW4oKTsKICB2b2lkIG5ldWVQb3NpdGlvbihHTGZsb2F0W10pOwogIHZvaWQgbmV1
ZVBvc2l0aW9uKEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBuZXVlUG9zaXRpb24oR0xmbG9hdCxH
TGZsb2F0LEdMZmxvYXQpOwogIHZvaWQgbmV1ZVBvc2l0aW9uQ00oR0xmbG9hdFtdKTsKICB2b2lk
IG5ldWVQb3NpdGlvbkNNKEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBuZXVlUG9zaXRpb25DTShH
TGZsb2F0LEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBuZXVlUG9zaXRpb25EKEdMZmxvYXRbXSk7
CiAgdm9pZCBuZXVlUG9zaXRpb25EKEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBuZXVlUG9zaXRp
b25EKEdMZmxvYXQsR0xmbG9hdCxHTGZsb2F0KTsKICB2b2lkIG5ldWVQb3NpdGlvbklOQ0goR0xm
bG9hdFtdKTsKICB2b2lkIG5ldWVQb3NpdGlvbklOQ0goR0xmbG9hdCxHTGZsb2F0KTsKICB2b2lk
IG5ldWVQb3NpdGlvbklOQ0goR0xmbG9hdCxHTGZsb2F0LEdMZmxvYXQpOwogIHZvaWQgYXVzYmxl
bmRlbigpOwogIHZvaWQgSW5pdGlhbGlzaWVyZShHTGludCxHTGludCxHTGludCxHTGludCk7CiAg
R0xmbG9hdCBQb3NfeCgpOwogIEdMZmxvYXQgUG9zX3koKTsKICBHTGZsb2F0IFBvc194RCgpOwog
IEdMZmxvYXQgUG9zX3lEKCk7CiAgR0xmbG9hdCBQb3NfeENNKCk7CiAgR0xmbG9hdCBQb3NfeUNN
KCk7CiBwcml2YXRlOgogIEdMZmxvYXQgUG9zaXRpb25bM107CiAgR0xpbnQgTnVtbWVyOwogIEdM
aW50IHNwaGVyZUluZGV4WzMwXTsKICBHTGludCBzcGhlcmVJbmRleFN0YXRpc2NoWzMwXTsKICBH
TGludCBzY2hhdHRlbkluZGV4OwogIEdMaW50IHNjaGF0dGVuSW5kZXhTdGF0aXNjaDsKICBHTGlu
dCBzY2hhdHRlbjJJbmRleDsKICBHTGludCBTY2hhdHRlbjsKICBHTGludCBJbkFuaW1hdGlvbjsK
ICBHTGludCBTdGF0aXNjaEV4aXN0aWVydFszMF07CiAgR0xpbnQgU3RhdGlzY2hFeGlzdGllcnRT
Y2hhdHRlbjsKICBHTGZsb2F0IERyZWhNYXRyaXhbMTZdOwogIEdMZmxvYXQgU2NoYXR0ZW4xX3gs
U2NoYXR0ZW4xX3ksU2NoYXR0ZW4xX3NjYWxlLFNjaGF0dGVuMV93aW5rZWw7CiAgR0xmbG9hdCBT
Y2hhdHRlbjJfeCxTY2hhdHRlbjJfeSxTY2hhdHRlbjJfc2NhbGUsU2NoYXR0ZW4yX3dpbmtlbDsK
ICBHTGZsb2F0IFNjaGF0dGVuM194LFNjaGF0dGVuM195LFNjaGF0dGVuM19zY2FsZSxTY2hhdHRl
bjNfd2lua2VsOwogIEdMZmxvYXQgQWx0ZVRleHR1cmdyb2Vzc2U7CgogIEdMdWludCBUZXh0dXJl
bls5XTsKfTsKCmV4dGVybiBHTGZsb2F0ICpiYWxsX3ZlcnRpY2VzWzMwXTsKZXh0ZXJuIEdMZmxv
YXQgKmJhbGxfdGV4Y29vcmRbMzBdOwpleHRlcm4gR0xpbnQgKmJhbGxfaW5kaWNlc1szMF07CiMg
MTQgIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICJLYW1lcmEuaCIgMQojIDkgIkth
bWVyYS5oIgpjbGFzcyBLYW1lcmEgewogcHVibGljOgogIEthbWVyYSgpOwogIHZvaWQgbWFsZSgp
OwogIHZvaWQgbmV1ZVBvc2l0aW9uKEdMZmxvYXRbNV0pOwogIEdMZmxvYXQqIFBvc2l0aW9uKCk7
CiAgdm9pZCBzcGVpY2hlcmVQb3NpdGlvbihHTGludCk7CiAgdm9pZCBsYWRlUG9zaXRpb24oR0xp
bnQpOwogIHZvaWQgQmV3ZWdfVm9yKEdMZmxvYXQpOwogIHZvaWQgQmV3ZWdfWnVydWVjayhHTGZs
b2F0KTsKICB2b2lkIEJld2VnX1JlaW4oR0xmbG9hdCk7CiAgdm9pZCBCZXdlZ19SYXVzKEdMZmxv
YXQpOwogIHZvaWQgQmV3ZWdfUmVjaHRzKEdMZmxvYXQpOwogIHZvaWQgQmV3ZWdfTGlua3MoR0xm
bG9hdCk7CiAgdm9pZCBCZXdlZ19Ib2NoKEdMZmxvYXQpOwogIHZvaWQgQmV3ZWdfUnVudGVyKEdM
ZmxvYXQpOwogIHZvaWQgWm9vbV9SZWluKEdMZmxvYXQpOwogIHZvaWQgWm9vbV9SYXVzKEdMZmxv
YXQpOwogIHZvaWQgVmVydGlnb19SZWluKEdMZmxvYXQpOwogIHZvaWQgVmVydGlnb19SYXVzKEdM
ZmxvYXQpOwogIHZvaWQgRHJlaF9SZWNodHMoR0xmbG9hdCk7CiAgdm9pZCBEcmVoX0xpbmtzKEdM
ZmxvYXQpOwogIHZvaWQgRHJlaF9Ib2NoKEdMZmxvYXQpOwogIHZvaWQgRHJlaF9SdW50ZXIoR0xm
bG9hdCk7CiAgdm9pZCBTY2h3ZW5rX1JlY2h0cyhHTGZsb2F0LEdMZmxvYXQsR0xmbG9hdCk7CiAg
dm9pZCBTY2h3ZW5rX0xpbmtzKEdMZmxvYXQsR0xmbG9hdCxHTGZsb2F0KTsKICB2b2lkIFNjaHdl
bmtfSG9jaChHTGZsb2F0LEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBTY2h3ZW5rX1J1bnRlcihH
TGZsb2F0LEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBWZXJmb2xnZShHTGludCApOwogIHZvaWQg
QmxpY2tlQXVmKEdMZmxvYXRbMl0pOwogIHZvaWQgQmxpY2tlQXVmKEdMZmxvYXQsR0xmbG9hdCk7
CiAgdm9pZCBCbGlja2VBdWYyKEdMZmxvYXRbMl0pOwogIHZvaWQgQmxpY2tlQXVmMihHTGZsb2F0
LEdMZmxvYXQpOwogIHZvaWQgQmxpY2tlQXVmMyhHTGZsb2F0WzJdKTsKICB2b2lkIEJsaWNrZUF1
ZjMoR0xmbG9hdCxHTGZsb2F0KTsKICB2b2lkIEZhaHJ0KEdMZmxvYXQpOwogIHZvaWQgUnVuZGZs
dWcoR0xpbnQpOwogIHZvaWQgc2V0emVTb2xsUG9zaXRpb24oR0xmbG9hdFs2XSk7CiAgdm9pZCBz
ZXR6ZVNvbGxQb3NpdGlvbihHTGZsb2F0LEdMZmxvYXQsR0xmbG9hdCxHTGZsb2F0LEdMZmxvYXQs
R0xmbG9hdCk7CiAgdm9pZCBCbGlja1RpZWZlTmV1QmVzdGltbWVuKCk7CiAgR0xmbG9hdCBQb3Nf
eENNKCk7CiAgR0xmbG9hdCBQb3NfeUNNKCk7CiAgR0xmbG9hdCBQb3NfekNNKCk7CiAgR0xmbG9h
dCBBc3Bla3Q7CiAgR0xpbnQgVmVyZm9sZ3VuZzsKICBHTGZsb2F0IFBvc194LFBvc195LFBvc196
LEFscGhhLEJldGEsRk9WOwogcHJpdmF0ZToKICBHTGZsb2F0IFNvbGxfUG9zX3gsU29sbF9Qb3Nf
eSxTb2xsX1Bvc196LFNvbGxfQWxwaGEsU29sbF9CZXRhLFNvbGxfRk9WOwogIEdMZmxvYXQgZF9Q
b3NfeCxkX1Bvc195LGRfUG9zX3osZF9BbHBoYSxkX0JldGEsZF9GT1Y7CiAgR0xmbG9hdCBOYWgs
RmVybjsKICBHTGludCBLYW1lcmFOdW1tZXI7Cn07CgpleHRlcm4gY2xhc3MgS3VnZWwgS3VnZWxb
MTZdOwojIDE1ICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIiAyCiMgMSAiQW56ZWlnZS5oIiAx
CgoKCgoKCmNsYXNzIEFuemVpZ2UgewogcHVibGljOgogIEFuemVpZ2UoKTsKICB2b2lkIEluaXRp
YWxpc2llcmUoKTsKICB2b2lkIG1hbGUoKTsKICB2b2lkIHNldHplU3Rvc3NTdGFlcmtlKEdMZmxv
YXQpOwogcHJpdmF0ZToKCiAgR0xmbG9hdCBTdG9zc1N0YWVya2U7Cn07CiMgMTYgIkJlbnV0emVy
c2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICJTY2hpbGQuaCIgMQoKY2xhc3MgU2NoaWxkIHsKIHB1
YmxpYzoKICBTY2hpbGQoKTsKICB2b2lkIEluaXRpYWxpc2llcmUoKTsKICB2b2lkIEluaXRpYWxp
c2llcmVMb2dvKCk7CiAgdm9pZCBJbml0aWFsaXNpZXJlKEdMaW50LGNoYXJbXSk7CiAgdm9pZCBJ
bml0aWFsaXNpZXJlQnVjaHN0YWJlKEdMaW50LGNoYXJbXSk7CiAgdm9pZCBJbml0aWFsaXNpZXJl
KEdMaW50LGNoYXJbXSxjaGFyKTsKICB2b2lkIEluaXRpYWxpc2llcmUoR0xpbnQsY2hhcltdLGNo
YXJbXSk7CiAgdm9pZCBtYWxlKCk7CiAgdm9pZCBQb3NpdGlvbmllcmUoR0xmbG9hdCxHTGZsb2F0
LEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBQb3NpdGlvbmllcmVGaXgoR0xmbG9hdCxHTGZsb2F0
LEdMZmxvYXQsR0xmbG9hdCk7CiAgdm9pZCBEZXNha3RpdmllcmUoKTsKICB2b2lkIEFuZ2V3YWVo
bHQoKTsKICB2b2lkIEVpbmdlYmxlbmRldCgpOwogIHZvaWQgVm9sbFNpY2h0YmFyKCk7CiAgdm9p
ZCBTdGFydGVBbmltYXRpb24oKTsKICBHTGludCBBbmltaWVyZShHTGludCk7CiAgR0xpbnQgTWF1
c3Rhc3RlKGludCxpbnQsaW50LGludCk7CiAgdm9pZCBTZXR6ZVppZWxadXN0YW5kKEdMaW50KTsK
ICB2b2lkIFNldHplU2lnbmFsKEdMaW50KTsKICB2b2lkIEtvcGllVm9uKFNjaGlsZCk7CiAgR0xp
bnQgU2NoaWxkSW5kZXg7CiAgR0xpbnQgU2NoaWxkVHlwOwogIEdMZmxvYXQgQXNwZWt0OwogcHJp
dmF0ZToKICBHTGZsb2F0IGF4LGF5LGJ4LGJ5OwogIEdMZmxvYXQgQWxwaGE7CiAgR0xmbG9hdCBz
b2xsX2F4LHNvbGxfYXksc29sbF9ieCxzb2xsX2J5OwogIEdMZmxvYXQgc29sbF9BbHBoYTsKICBH
TGZsb2F0IGFsdF9heCxhbHRfYXksYWx0X2J4LGFsdF9ieTsKICBHTGZsb2F0IGFsdF9BbHBoYTsK
ICBHTGludCBJbkFuaW1hdGlvbjsKICBHTGludCBTaWduYWw7CiAgR0xpbnQgWmVpdDsKICBHTHVp
bnQgVGV4dHVyOwp9OwojIDQ4ICJTY2hpbGQuaCIKZXh0ZXJuIEdMdWludCBsb2dvdGV4dHVyOwoj
IDE3ICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIiAyCiMgMSAiVGV4dGZlbGQuaCIgMQpjbGFz
cyBUZXh0ZmVsZCB7CiBwdWJsaWM6CiAgVGV4dGZlbGQoKTsKICBHTGludCBkdW1teUluaXRpYWxp
c2llcmUoR0xpbnQpOwogIHZvaWQgSW5pdGlhbGlzaWVyZShHTGludCk7CiAgdm9pZCBJbml0aWFs
aXNpZXJlKEdMaW50LGNoYXJbXSk7CiAgdm9pZCBJbml0aWFsaXNpZXJlS0RMKEdMaW50LGNoYXJb
XSk7CiAgdm9pZCBtYWxlKCk7CiAgdm9pZCBQb3NpdGlvbmllcmUoR0xmbG9hdCxHTGZsb2F0LEdM
ZmxvYXQsR0xpbnQpOwogIHZvaWQgUG9zaXRpb25pZXJlRml4KEdMZmxvYXQsR0xmbG9hdCxHTGZs
b2F0LEdMaW50KTsKICB2b2lkIFNldHplVGV4dChjaGFyW10pOwogIHZvaWQgU2V0emVUZXh0S0RM
KGNoYXJbXSk7CiAgR0xpbnQgWmVpY2hlbihjaGFyKTsKICBjaGFyKiBUZXh0KCk7CgogIHZvaWQg
RGVzYWt0aXZpZXJlKCk7CiAgdm9pZCBBbmdld2FlaGx0KCk7CiAgdm9pZCBFaW5nZWJsZW5kZXQo
KTsKICB2b2lkIFZvbGxTaWNodGJhcigpOwogIEdMaW50IEFuaW1pZXJlKEdMaW50KTsKICB2b2lk
IFNldHplU2lnbmFsKEdMaW50KTsKICBHTGludCBNYXVzdGFzdGUoaW50LGludCxpbnQsaW50KTsK
CiAgdm9pZCBTZXR6ZU1heEJyZWl0ZShHTGZsb2F0KTsKCiAgdm9pZCBXZWdob2VyZW4oKTsKICB2
b2lkIEhlcmhvZXJlbigpOwoKICBHTGZsb2F0IFRleHRmZWxkSG9laGUoKTsKCiAgdm9pZCBHZW5l
cmllcmVEaXNwbGF5TGlzdCgpOwoKICBHTGludCBkdW1teURpc3BsYXlMaXN0QW5mYW5nKCk7Cgog
cHJpdmF0ZToKICB2b2lkIFN0YXJ0ZUFuaW1hdGlvbigpOwogIGNoYXIgWmVpY2hlbmtldHRlWzIw
MDBdOwogIEdMZmxvYXQgeCx5LEhvZWhlLEFzcGVrdCxBbHBoYTsKICBHTGZsb2F0IGFsdF94LGFs
dF95LGFsdF9Ib2VoZSxhbHRfQWxwaGE7CiAgR0xmbG9hdCBzb2xsX3gsc29sbF95LHNvbGxfSG9l
aGUsc29sbF9BbHBoYTsKICBHTGludCBBdXNyaWNodHVuZzsKICBHTGludCBJbkFuaW1hdGlvbjsK
ICBHTGludCBTaWduYWw7CiAgR0xpbnQgWmVpdDsKICBHTGludCBEaXNwbGF5TGlzdEFuZmFuZzsK
ICBHTHVpbnQgVGV4dHVyZW5BbmZhbmdbNTEyXTsKICBHTGludCBUZXh0ZmVsZEluZGV4OwogIEdM
aW50IEhvcmNoZW47CiAgR0xpbnQgWmVpbGVuOwoKICBHTGZsb2F0IE1heEJyZWl0ZTsKCn07CiMg
MTggIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICJNZW51LmgiIDEKCgoKCgoKIyAx
ICJzcHJhY2hlLmgiIDEKIyA4ICJNZW51LmgiIDIKIyAxNjkgIk1lbnUuaCIKY2xhc3MgTWVudSB7
CiBwdWJsaWM6CiAgTWVudSgpOwogIHZvaWQgSW5pdGlhbGlzaWVyZShHTGludCk7CiAgdm9pZCBt
YWxlKCk7CiAgdm9pZCBVcGRhdGUoR0xpbnQpOwoKICBHTGludCBNYXVzdGFzdGUoaW50LGludCxp
bnQsaW50KTsKICBHTGludCBLZXlib2FyZFRhc3RlICh1bnNpZ25lZCBjaGFyLGludCxpbnQpOwog
IHZvaWQgTmV1ZXJNZW51WnVzdGFuZCgpOwogIHZvaWQgU2lnbmFsQXVzZnVlaHJ1bmcoR0xpbnQp
OwogIHZvaWQgU2V0emVNZW51WnVzdGFuZChHTGludCk7CiAgdm9pZCBTZXR6ZUZQUyhHTGludCk7
CiAgdm9pZCBsYWRlU3ByYWNoZShHTGludCk7CiBwcml2YXRlOgogIHZvaWQgU3RhcnRlQW5pbWF0
aW9uKCk7CiAgR0xpbnQgQW5pbWF0aW9uc3plaXQ7CiAgR0xpbnQgSW5BbmltYXRpb247CgogIEdM
aW50IE1lbnVadXN0YW5kOwogIEdMaW50IEF1c1NwaWVsOwoKICBTY2hpbGQgbWVudWhpbnRlcmdy
dW5kOwoKICBTY2hpbGQgbG9nbzsKICBTY2hpbGQgbmFtZW47CgogIFNjaGlsZCBoYWxiZTsKICBT
Y2hpbGQgdm9sbGU7CgogIFNjaGlsZCBiYWxsWzE2XTsKCiAgU2NoaWxkIEdhbWVTdGFyOwoKICBT
Y2hpbGQqIFNjaGlsZEFycmF5WzMwMF07CiAgVGV4dGZlbGQqIFRleHRmZWxkQXJyYXlbMTAwMF07
CgogIFRleHRmZWxkIGR1bW15VGV4dGZlbGQ7CgogIEdMaW50IFRETDsKCgogIEdMaW50IFNjaGls
ZEFuemFobDsKICBHTGludCBUZXh0ZmVsZEFuemFobDsKCiAgR0xpbnQgRV9UZXh0dXJncm9lc3Nl
OwogIEdMaW50IEVfQW56ZWlnZVRleHR1cmdyb2Vzc2U7CiAgR0xpbnQgRV9UaXNjaFRleHR1cmdy
b2Vzc2U7CiAgR0xpbnQgRV9LdWdlbEF1ZmxvZXN1bmc7CiAgR0xmbG9hdCBFX01vdXNlU3BlZWQ7
CiAgR0xpbnQgRV9JbnZlcnRYOwogIEdMaW50IEVfSW52ZXJ0WTsKICBHTGludCBNZW51R2VzcGVy
cnQ7CiAgR0xpbnQgRV9SZWZsZWt0aW9uZW47CiAgR0xpbnQgRV9GYXJidGllZmU7CiAgR0xpbnQg
RV9CaWxkc2NoaXJtQXVmbG9lc3VuZzsKICBHTGludCBRdWFsaXRhZXQ7CiAgR0xpbnQgRV9TY2hh
dHRlbjsKCiAgR0xpbnQgRV9BbWJpZW50ZXNMaWNodDsKICBHTGludCBFX1Rpc2NoTGFtcGVuOwog
IEdMaW50IEVfR3J1ZW5lTGFtcGU7CiAgR0xpbnQgRV9aZWlnZUZQUzsKCiAgR0xpbnQgRV9UZXhN
TU07Cgp9OwoKCmV4dGVybiBHTGludCBTdGF0ZU1hc2NoaW47CmV4dGVybiBHTGludCBTcGllbDsK
ZXh0ZXJuIGNsYXNzIEthbWVyYSBLYW1lcmE7CgpleHRlcm4gR0xpbnQgVGV4dHVyZ3JvZXNzZSwK
ICBBbnplaWdlVGV4dHVyZ3JvZXNzZSwKICBUaXNjaFRleHR1cmdyb2Vzc2UsCiAgS3VnZWxBdWZs
b2VzdW5nLAogIEludmVydFgsCiAgSW52ZXJ0WSwKICBTY2hhdHRlbiwKICBTcGllbE1vZHVzLAog
IFNwaWVsZXJBbVN0b3NzOwoKZXh0ZXJuIEdMZmxvYXQgTW91c2VTcGVlZDsKZXh0ZXJuIEdMaW50
IEt1Z2VsblZlcnNlbmt0WzE2XTsKZXh0ZXJuIEdMaW50IEt1Z2VsbkltU3BpZWxbMTZdOwoKZXh0
ZXJuIGNsYXNzIEt1Z2VsIEt1Z2VsWzE2XTsKZXh0ZXJuIGNsYXNzIFRpc2NoIFRpc2NoOwpleHRl
cm4gY2xhc3MgQW56ZWlnZSBBbnplaWdlOwpleHRlcm4gY2xhc3MgU2NoaWVkc3JpY2h0ZXIgU2No
aWVkc3JpY2h0ZXI7CmV4dGVybiBjbGFzcyBCZWxldWNodHVuZyBCZWxldWNodHVuZzsKCmV4dGVy
biBHTGludCBTY2hpZWRzcmljaHRlckVudHNjaGVpZHVuZzsKZXh0ZXJuIEdMaW50IFNwaWVsZXJB
bVN0b3NzOwpleHRlcm4gR0xpbnQgQXVmbmFobWVXZWNoc2VsOwpleHRlcm4gR0xpbnQgRm91bDsK
ZXh0ZXJuIEdMaW50IExhZ2VWZXJiZXNzZXJ1bmdLb3BmZmVsZDsKZXh0ZXJuIEdMaW50IExhZ2VW
ZXJiZXNzZXJ1bmc7CmV4dGVybiBHTGludCBOZXVBdWZiYXVlbk9kZXJXZWl0ZXJzcGllbGVuOwpl
eHRlcm4gR0xpbnQgTmV1QXVmYmF1ZW5PZGVyQWNodEVpbnNldHplbjsKZXh0ZXJuIEdMaW50IFNw
aWVsZXIxR2V3b25uZW47CmV4dGVybiBHTGludCBTcGllbGVyMkdld29ubmVuOwpleHRlcm4gR0xp
bnQgQWxsZXJlcnN0ZXJTdG9zczsKCmV4dGVybiBHTGludCBaZWlnZUZQUyxUaXNjaExhbXBlbixH
cnVlbmVMYW1wZTsKZXh0ZXJuIEdMZmxvYXQgRWZmZWt0TGF1dHN0YWVya2UsTXVzaWtMYXV0c3Rh
ZXJrZTsKCmV4dGVybiBHTGludCBUZXhNTU07CgpleHRlcm4gR0xpbnQgRGVsYXlBdXNnbGVpY2g7
CgpleHRlcm4gR0xpbnQgeG5vcjsKCmV4dGVybiBjaGFyIFNwaWVsZXIxWzEwXSxTcGllbGVyMlsx
MF0sTmV0endlcmtTcGllbGVyWzEwXSxOZXR6d2Vya0dlZ25lclsxMF07CiMgMTkgIkJlbnV0emVy
c2Nobml0dHN0ZWxsZS5jcHAiIDIKIyAxICJTY2hpZWRzcmljaHRlci5oIiAxCgpjbGFzcyBTY2hp
ZWRzcmljaHRlciB7CiBwdWJsaWM6CiAgU2NoaWVkc3JpY2h0ZXIoKTsKICB2b2lkIEt1Z2VsS3Vn
ZWwoR0xpbnQsR0xmbG9hdCxHTGludCxHTGZsb2F0KTsKICB2b2lkIEt1Z2VsQmFuZGUoR0xpbnQs
R0xmbG9hdCxHTGludCk7CiAgdm9pZCBLdWdlbExvY2goR0xpbnQsR0xpbnQpOwogIHZvaWQgTmV1
ZXNTcGllbChHTGludCk7CiAgdm9pZCBOZXVlclN0b3NzKCk7CiAgdm9pZCBTZXR6ZVNwaWVsZXJB
bVN0b3NzKEdMaW50KTsKICB2b2lkIFNldHplRm91bHMoR0xpbnQsR0xpbnQpOwogIEdMaW50IEVu
dHNjaGVpZHVuZygpOwoKICBHTGludCBLb3JyZWt0ZUt1Z2VsQW5nZXNwaWVsdChHTGludCk7CiAg
R0xpbnQgS29ycmVrdGVLdWdlbFZlcnNlbmt0KEdMaW50KTsKICBHTGludCBLb3JyZWt0ZUt1Z2Vs
VmVyc2Vua3REYWJlaShHTGludFsxNl0pOwogIEdMaW50IEZhcmJpZ2VLdWdlbChHTGludCk7CiAg
R0xpbnQgRmFyYmlnZUt1Z2VsRGFiZWkoR0xpbnRbMTZdKTsKICBHTGludCBGYXJiaWdlS3VnZWxT
dW1tZShHTGludFsxNl0pOwogIEdMaW50IFN1bW1lKEdMaW50WzE2XSk7CgogIEdMaW50IEZyYWdl
TmFjaFNwaWVsZXJBbVN0b3NzKCk7CiAgR0xpbnQgRnJhZ2VOYWNoR3J1cHBlblZlcnRlaWx1bmco
KTsKICBHTGludCBGcmFnZU5hY2hCZWdydWVuZHVuZygpOwogIEdMaW50IEZyYWdlTmFjaEZvdWxz
KEdMaW50KTsKCiBwcml2YXRlOgogIEdMaW50IEJhbmRlQXVzc2VyaGFsYktvcGZmZWxkdm9yS3Vn
ZWxCZXJ1ZWhydDsKICBHTGludCBFcnN0ZUJlcnVlaHJ0ZUt1Z2VsOwogIEdMaW50IEVyc3RlQmVy
dWVocnRlQmFuZGU7CiAgR0xpbnQgRXJzdGVWZXJzZW5rdGVLdWdlbDsKICBHTGludCBFcnN0ZUJl
cnVlaHJ1bmc7CiAgR0xpbnQgRXJzdGVCZXJ1ZWhydGVLdWdlbEltS29wZmZlbGQ7CiAgR0xpbnQg
RXJzdGVCZXJ1ZWhydW5nSW1Lb3BmZmVsZDsKICBHTGludCBLdWdlbG5JbVNwaWVsWzE2XTsKICBH
TGludCBLdWdlbG5WZXJzZW5rdFsxNl07CiAgR0xpbnQgS3VnZWxuQW5CYW5kZVsxNl07CgogIEdM
aW50IEZvdWxzSGludGVyZWluYW5kZXJTcGllbGVyMTsKICBHTGludCBGb3Vsc0hpbnRlcmVpbmFu
ZGVyU3BpZWxlcjI7CgogIEdMaW50IFNjaGllZHNyaWNodGVyRW50c2NoZWlkdW5nOwoKICBHTGlu
dCBTcGllbGVyQW1TdG9zczsKCiAgR0xpbnQgQmVncnVlbmR1bmc7CgogIEdMaW50IEF1Zm5haG1l
V2VjaHNlbDsKICBHTGludCBGb3VsOwogIEdMaW50IExhZ2VWZXJiZXNzZXJ1bmdLb3BmZmVsZDsK
ICBHTGludCBMYWdlVmVyYmVzc2VydW5nOwogIEdMaW50IE5ldUF1ZmJhdWVuT2RlcldlaXRlcnNw
aWVsZW47CiAgR0xpbnQgTmV1QXVmYmF1ZW5PZGVyQWNodEVpbnNldHplbjsKICBHTGludCBWZXJs
b3JlbjsKICBHTGludCBHZXdvbm5lbjsKICBHTGludCBTcGllbGVyMUdld29ubmVuOwogIEdMaW50
IFNwaWVsZXIyR2V3b25uZW47CgoKICBHTGludCBBdXNLb3BmZmVsZDsKICBHTGludCBFcm9lZmZu
dW5nc3N0b3NzOwogIEdMaW50IFNwaWVsOwogIEdMaW50IEdydXBwZW5WZXJ0ZWlsdW5nOwogIEdM
aW50IE5pZWRyaWdzdGVLdWdlbDsKCn07CiMgMjAgIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAi
IDIKCiMgMSAiTmFtZW4uaCIgMQojIDIyICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIiAyCiMg
MSAiWmVpdC5oIiAxCkdMaW50IFplaXQoKTsKIyAyMyAiQmVudXR6ZXJzY2huaXR0c3RlbGxlLmNw
cCIgMgojIDEgIlNwaWVsZmVsZEF1ZmJhdS5oIiAxCkdMZmxvYXQgcmFuZG9tKEdMZmxvYXQpOwp2
b2lkIFNwaWVsZmVsZEF1ZmJhdSgpOwoKZXh0ZXJuIEdMZmxvYXQgRXBzaWxvbjsKZXh0ZXJuIEdM
aW50IFN0YXRlTWFzY2hpbjsKZXh0ZXJuIEdMaW50IEFuZmFuZ3NzdG9zczsKZXh0ZXJuIEdMaW50
IFdlaXNzZVZlcnNldHpiYXI7CmV4dGVybiBHTGludCBTcGllbCxLdWdlbG5WZXJzZW5rdFsxNl0s
S3VnZWxuSW1TcGllbFsxNl07CmV4dGVybiBHTGludCBMYWdlVmVyYmVzc2VydW5nS29wZmZlbGQs
TGFnZVZlcmJlc3NlcnVuZzsKZXh0ZXJuIGNsYXNzIEt1Z2VsIEt1Z2VsWzE2XTsKZXh0ZXJuIGNs
YXNzIE1lbnUgTWVudTsKIyAyNCAiQmVudXR6ZXJzY2huaXR0c3RlbGxlLmNwcCIgMgojIDEgIkhh
bmRsaW5nLmgiIDEKdm9pZCBTdGFydEhhbmRsaW5nKCk7CnZvaWQgQmV0cmFjaHRlbkhhbmRsaW5n
KCk7CnZvaWQgWmllbGVuSGFuZGxpbmcoKTsKdm9pZCBBdXNob2xlbkhhbmRsaW5nKCk7CnZvaWQg
U3Rvc3NIYW5kbGluZygpOwp2b2lkIFdlaXNzbmV1SGFuZGxpbmcoKTsKdm9pZCBNZW51SGFuZGxp
bmcoKTsKdm9pZCBTY2hpZWRzcmljaHRlckhhbmRsaW5nKCk7CgpleHRlcm4gR0xpbnQgVGFzdGVf
UGZlaWxfT2JlbixUYXN0ZV9QZmVpbF9VbnRlbiwKICBUYXN0ZV9QZmVpbF9SZWNodHMsVGFzdGVf
UGZlaWxfTGlua3MsVGFzdGVfU2hpZnQsCiAgVGFzdGVfU3RyZyxUYXN0ZV9CaWxkX0F1ZixUYXN0
ZV9CaWxkX0FiLFRhc3RlX1BvczEsCiAgVGFzdGVfRW5kZSxGYWt0b3IsQXVzaG9sU3RhcnR6ZWl0
LFN0YXJ0emVpdCwKICBTdG9zc2RhdWVyLFN0YXRlTWFzY2hpbixGcmFtZVplaXRwdW5rdCxBbmZh
bmdzc3Rvc3MsCiAgV2Vpc3NlVmVyc2V0emJhcjsKZXh0ZXJuIEdMZmxvYXQgTWF4QXVzaG9sU3Rh
ZXJrZSxBdXNob2xTdGFlcmtlOwpleHRlcm4gR0xpbnQgS3VnZWxuVmVyc2Vua3RbMTZdOwpleHRl
cm4gR0xpbnQgS3VnZWxuSW1TcGllbFsxNl07CmV4dGVybiBHTGZsb2F0IEJld2VndW5nc3RhYmVs
bGVbMjAwMF1bMTZdWzNdOwoKZXh0ZXJuIGNsYXNzIEthbWVyYSBLYW1lcmE7CmV4dGVybiBjbGFz
cyBLdWdlbCBLdWdlbFsxNl07CmV4dGVybiBjbGFzcyBBbnplaWdlIEFuemVpZ2U7CmV4dGVybiBj
bGFzcyBNZW51IE1lbnU7CmV4dGVybiBjbGFzcyBTY2hpZWRzcmljaHRlciBTY2hpZWRzcmljaHRl
cjsKCmV4dGVybiBHTGludCBTY2hpZWRzcmljaHRlckVudHNjaGVpZHVuZzsKZXh0ZXJuIEdMaW50
IFNwaWVsZXJBbVN0b3NzOwpleHRlcm4gR0xpbnQgQXVmbmFobWVXZWNoc2VsOwpleHRlcm4gR0xp
bnQgRm91bDsKZXh0ZXJuIEdMaW50IExhZ2VWZXJiZXNzZXJ1bmdLb3BmZmVsZDsKZXh0ZXJuIEdM
aW50IExhZ2VWZXJiZXNzZXJ1bmc7CmV4dGVybiBHTGludCBOZXVBdWZiYXVlbk9kZXJXZWl0ZXJz
cGllbGVuOwpleHRlcm4gR0xpbnQgTmV1QXVmYmF1ZW5PZGVyQWNodEVpbnNldHplbjsKZXh0ZXJu
IEdMaW50IFNwaWVsZXIxR2V3b25uZW47CmV4dGVybiBHTGludCBTcGllbGVyMkdld29ubmVuOwpl
eHRlcm4gR0xpbnQgQWxsZXJlcnN0ZXJTdG9zczsKIyAyNSAiQmVudXR6ZXJzY2huaXR0c3RlbGxl
LmNwcCIgMgojIDEgIkVpbnNldHplbi5oIiAxCnZvaWQgV2Vpc3NlRWluc2V0emVuKCk7CnZvaWQg
QWNodEVpbnNldHplbigpOwp2b2lkIE5ldW5FaW5zZXR6ZW4oKTsKCmV4dGVybiBHTGludCBMYWdl
VmVyYmVzc2VydW5nS29wZmZlbGQ7CmV4dGVybiBjbGFzcyBLdWdlbCBLdWdlbFsxNl07CmV4dGVy
biBHTGludCBLdWdlbG5WZXJzZW5rdFsxNl07CmV4dGVybiBjbGFzcyBLYW1lcmEgS2FtZXJhOwoj
IDI2ICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIiAyCgojIDEgIkJlbnV0emVyc2Nobml0dHN0
ZWxsZS5oIiAxCgoKCgoKCnZvaWQgTWF1cyhpbnQsaW50LGludCxpbnQpOwp2b2lkIEJld2VndW5n
KGludCxpbnQpOwp2b2lkIFRhc3RlKHVuc2lnbmVkIGNoYXIsaW50LGludCk7CnZvaWQgVGFzdGVM
b3ModW5zaWduZWQgY2hhcixpbnQsaW50KTsKdm9pZCBTb25kZXJ0YXN0ZShpbnQsaW50LGludCk7
CnZvaWQgU29uZGVydGFzdGVMb3MoaW50LGludCxpbnQpOwoKZXh0ZXJuIGNsYXNzIEt1Z2VsIEt1
Z2VsWzE2XTsKZXh0ZXJuIGNsYXNzIEthbWVyYSBLYW1lcmE7CmV4dGVybiBjbGFzcyBBbnplaWdl
IEFuemVpZ2U7CmV4dGVybiBjbGFzcyBNZW51IE1lbnU7CmV4dGVybiBjbGFzcyBTY2hpZWRzcmlj
aHRlciBTY2hpZWRzcmljaHRlcjsKCmV4dGVybiBHTGludCBEZWxheUF1c2dsZWljaDsKZXh0ZXJu
IEdMaW50IEludmVydFg7CmV4dGVybiBHTGludCBJbnZlcnRZOwpleHRlcm4gR0xmbG9hdCBNb3Vz
ZVNwZWVkLEF1c2hvbFN0YWVya2U7CmV4dGVybiBHTGludCBIaW50ZXJncnVuZGZhcmJlOwpleHRl
cm4gR0xpbnQgUG9seWdvbk1vZGVfbW9kZTsKZXh0ZXJuIEdMaW50IFBvbHlnb25Nb2RlX3ZpZXc7
CmV4dGVybiBHTGludCBTdGFydHplaXQsQXVzaG9sU3RhcnR6ZWl0LFN0b3NzZGF1ZXIsQXVzaG9s
c3RhZXJrZTsKZXh0ZXJuIEdMaW50IHhub3I7CmV4dGVybiBpbnQgT3JpZ2luYWxGZW5zdGVyLEFr
dHVlbGxlc0ZlbnN0ZXI7CmV4dGVybiBHTGludCBTcGllbCxTdGF0ZU1hc2NoaW4sIEZ1bGxTY3Jl
ZW47CmV4dGVybiBHTGludCBUYXN0ZV9QZmVpbF9PYmVuLFRhc3RlX1BmZWlsX1VudGVuOwpleHRl
cm4gR0xpbnQgVGFzdGVfUGZlaWxfUmVjaHRzLFRhc3RlX1BmZWlsX0xpbmtzOwpleHRlcm4gR0xp
bnQgVGFzdGVfU2hpZnQsIFRhc3RlX1N0cmc7CmV4dGVybiBHTGludCBUYXN0ZV9CaWxkX0F1ZixU
YXN0ZV9CaWxkX0FiOwpleHRlcm4gR0xpbnQgVGFzdGVfUG9zMSxUYXN0ZV9FbmRlOwoKZXh0ZXJu
IEdMaW50IE1vdXNlTG9va0xhc3RfeCxNb3VzZUxvb2tMYXN0X3k7CmV4dGVybiBHTGZsb2F0IEJl
d2VndW5nc3RhYmVsbGVbMjAwMF1bMTZdWzNdOwpleHRlcm4gR0xpbnQgTWF1c1Rhc3RlQWJnZWZh
bmdlbjsKCmV4dGVybiBHTGludCBMYWdlVmVyYmVzc2VydW5nS29wZmZlbGQ7CmV4dGVybiBHTGlu
dCBMYWdlVmVyYmVzc2VydW5nOwpleHRlcm4gR0xpbnQgQWxsZXJlcnN0ZXJTdG9zczsKIyAyOCAi
QmVudXR6ZXJzY2huaXR0c3RlbGxlLmNwcCIgMgoKR0xpbnQgTWF1c3Rhc3RlPTA7CgoKdm9pZCBN
YXVzKGludCBidXR0b24sIGludCBzdGF0ZSwgaW50IHgsIGludCB5KQp7CgogIGlmIChNZW51Lk1h
dXN0YXN0ZShidXR0b24sc3RhdGUseCx5KSE9MCkgewogICAgTWF1c1Rhc3RlQWJnZWZhbmdlbj0x
OwoKICB9IGVsc2UgewogICAgTWF1c1Rhc3RlQWJnZWZhbmdlbj0wOwoKICAgIE1vdXNlTG9va0xh
c3RfeD14OwogICAgTW91c2VMb29rTGFzdF95PXk7CiMgODUgIkJlbnV0emVyc2Nobml0dHN0ZWxs
ZS5jcHAiCiAgICBpZiAoYnV0dG9uID09IDAgJiYgc3RhdGUgPT0gMCkgTWF1c3Rhc3RlPTA7CiAg
ICBpZiAoYnV0dG9uID09IDIgJiYgc3RhdGUgPT0gMCkgTWF1c3Rhc3RlPTI7CgogICAgaWYgKGJ1
dHRvbiA9PSAxICYmIHN0YXRlID09IDApIHsKICAgICAgTWF1c3Rhc3RlPTA7CiAgICAgIHN3aXRj
aCAoU3RhdGVNYXNjaGluKSB7CiAgICAgIGNhc2UgMTogewogICAgICAgIFN0YXRlTWFzY2hpbj0y
OwogICAgICAgIE1lbnUuTmV1ZXJNZW51WnVzdGFuZCgpOwogICAgICAgIEthbWVyYS5CbGlja2VB
dWYoS3VnZWxbMF0uUG9zX3hDTSgpLEt1Z2VsWzBdLlBvc195Q00oKSk7CiAgICAgIH0gYnJlYWs7
CiAgICAgIGNhc2UgMjogewogICAgICAgIEF1c2hvbFN0YXJ0emVpdD1aZWl0KCk7CiAgICAgICAg
U3RhdGVNYXNjaGluPTM7CiAgICAgICAgTWVudS5OZXVlck1lbnVadXN0YW5kKCk7CiAgICAgIH0g
YnJlYWs7CiAgICAgIGNhc2UgNDogewogICAgICAgIGlmICh4bm9yKSB7CiAgICAgICAgICBmb3Ig
KGludCBLdWdlbG5yPTA7S3VnZWxucjwxNjtLdWdlbG5yKyspIHsKICAgICAgICAgICAgS3VnZWxb
S3VnZWxucl0ubmV1ZVBvc2l0aW9uRChCZXdlZ3VuZ3N0YWJlbGxlW1N0b3NzZGF1ZXJdW0t1Z2Vs
bnJdKTsKICAgICAgICAgICAgaWYgKEt1Z2VsbkltU3BpZWxbS3VnZWxucl0gJiYgIUt1Z2VsblZl
cnNlbmt0W0t1Z2VsbnJdICYmIChLdWdlbFtLdWdlbG5yXS5Qb3NfeCgpPT0zMDAwKSkgewogICAg
ICAgICAgICAgIEt1Z2VsblZlcnNlbmt0W0t1Z2VsbnJdPTE7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgTWVudS5OZXVlck1lbnVadXN0YW5kKCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAo
S3VnZWxbMF0uUG9zX3goKT09MzAwMCkgewogICAgICAgICAgICBTdGF0ZU1hc2NoaW49NTsKICAg
ICAgICAgICAgV2Vpc3NlRWluc2V0emVuKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBTdGF0ZU1hc2NoaW49MTsKICAgICAgICAgICAgTWVudS5OZXVlck1lbnVadXN0YW5kKCk7CiAg
ICAgICAgICB9CiAgICAgICAgICBBbnplaWdlLnNldHplU3Rvc3NTdGFlcmtlKDApOwogICAgICAg
IH0KICAgICAgfSBicmVhazsKICAgICAgY2FzZSA1OiB7CiAgICAgICAgU3RhdGVNYXNjaGluPTE7
CiAgICAgICAgTWVudS5OZXVlck1lbnVadXN0YW5kKCk7CiAgICAgIH0gYnJlYWs7CiAgICAgIGNh
c2UgNjogewogICAgICAgIGlmIChMYWdlVmVyYmVzc2VydW5nS29wZmZlbGR8TGFnZVZlcmJlc3Nl
cnVuZykgewogICAgICAgICAgV2Vpc3NlRWluc2V0emVuKCk7CiAgICAgICAgICBTdGF0ZU1hc2No
aW49NTsKICAgICAgICAgIE1lbnUuTmV1ZXJNZW51WnVzdGFuZCgpOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICBTdGF0ZU1hc2NoaW49MTsKICAgICAgICAgIE1lbnUuTmV1ZXJNZW51WnVzdGFu
ZCgpOwogICAgICAgIH0KICAgICAgfSBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmIChidXR0
b24gPT0gMSAmJiBzdGF0ZSA9PSAxICYmIFN0YXRlTWFzY2hpbj09MykgewogICAgICBHTGZsb2F0
IGR4PUt1Z2VsWzBdLlBvc194Q00oKS1LYW1lcmEuUG9zX3hDTSgpOwogICAgICBHTGZsb2F0IGR5
PUt1Z2VsWzBdLlBvc195Q00oKS1LYW1lcmEuUG9zX3lDTSgpOwogICAgICBHTGZsb2F0IEFic3Rh
bmQ9c3FydChkeCpkeCtkeSpkeSk7CiAgICAgIFN0b3NzKGR4KkF1c2hvbFN0YWVya2UvQWJzdGFu
ZCxkeSpBdXNob2xTdGFlcmtlL0Fic3RhbmQpOwogICAgICBTdGF0ZU1hc2NoaW49NDsKICAgICAg
TWVudS5OZXVlck1lbnVadXN0YW5kKCk7CgogICAgICBLYW1lcmEuQmxpY2tlQXVmMihLdWdlbFsw
XS5Qb3NfeENNKCksS3VnZWxbMF0uUG9zX3lDTSgpKTsKCiAgICAgIERlbGF5QXVzZ2xlaWNoPTE7
CiAgICB9CgogIH0KfQoKdm9pZCBCZXdlZ3VuZyhpbnQgeCwgaW50IHkpIHsKICBpZiAoTWF1c1Rh
c3RlQWJnZWZhbmdlbikgcmV0dXJuOwogIGlmIChTdGF0ZU1hc2NoaW49PTApIHJldHVybjsKICBp
ZiAoTWF1c3Rhc3RlPT0wKSB7CiAgICBpZiAoKFN0YXRlTWFzY2hpbj09Mil8fChTdGF0ZU1hc2No
aW49PTMpKSB7CiAgICAgIGlmIChJbnZlcnRYKSB7CiAgICAgICAgS2FtZXJhLlNjaHdlbmtfUmVj
aHRzKE1vdXNlU3BlZWQqKHgtTW91c2VMb29rTGFzdF94KSxLdWdlbFswXS5Qb3NfeENNKCksS3Vn
ZWxbMF0uUG9zX3lDTSgpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBLYW1lcmEuU2Nod2Vua19M
aW5rcyhNb3VzZVNwZWVkKih4LU1vdXNlTG9va0xhc3RfeCksS3VnZWxbMF0uUG9zX3hDTSgpLEt1
Z2VsWzBdLlBvc195Q00oKSk7CiAgICAgIH0KICAgICAgaWYgKEludmVydFkpIHsKICAgICAgICBL
YW1lcmEuU2Nod2Vua19Ib2NoKE1vdXNlU3BlZWQqKHktTW91c2VMb29rTGFzdF95KSxLdWdlbFsw
XS5Qb3NfeENNKCksS3VnZWxbMF0uUG9zX3lDTSgpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBL
YW1lcmEuU2Nod2Vua19SdW50ZXIoTW91c2VTcGVlZCooeS1Nb3VzZUxvb2tMYXN0X3kpLEt1Z2Vs
WzBdLlBvc194Q00oKSxLdWdlbFswXS5Qb3NfeUNNKCkpOwogICAgICB9CiAgICB9IGVsc2Ugewog
ICAgICBpZiAoSW52ZXJ0WCkgewogICAgICAgIEthbWVyYS5EcmVoX0xpbmtzKE1vdXNlU3BlZWQq
KHgtTW91c2VMb29rTGFzdF94KSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgS2FtZXJhLkRyZWhf
UmVjaHRzKE1vdXNlU3BlZWQqKHgtTW91c2VMb29rTGFzdF94KSk7CiAgICAgIH0KICAgICAgaWYg
KEludmVydFkpIHsKICAgICAgICBLYW1lcmEuRHJlaF9Ib2NoKE1vdXNlU3BlZWQqKHktTW91c2VM
b29rTGFzdF95KSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgS2FtZXJhLkRyZWhfUnVudGVyKE1v
dXNlU3BlZWQqKHktTW91c2VMb29rTGFzdF95KSk7CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYg
KE1hdXN0YXN0ZT09MikgewogICAgaWYgKChTdGF0ZU1hc2NoaW49PTIpfHwoU3RhdGVNYXNjaGlu
PT0zKSkgewogICAgICBpZiAoSW52ZXJ0WCkgewogICAgICAgIEthbWVyYS5TY2h3ZW5rX1JlY2h0
cyhNb3VzZVNwZWVkKih4LU1vdXNlTG9va0xhc3RfeCksS3VnZWxbMF0uUG9zX3hDTSgpLEt1Z2Vs
WzBdLlBvc195Q00oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgS2FtZXJhLlNjaHdlbmtfTGlu
a3MoTW91c2VTcGVlZCooeC1Nb3VzZUxvb2tMYXN0X3gpLEt1Z2VsWzBdLlBvc194Q00oKSxLdWdl
bFswXS5Qb3NfeUNNKCkpOwogICAgICB9CiAgICAgIGlmIChJbnZlcnRZKSB7CiAgICAgICAgS2Ft
ZXJhLkJld2VnX1JlaW4oTW91c2VTcGVlZCooeS1Nb3VzZUxvb2tMYXN0X3kpKTsKICAgICAgfSBl
bHNlIHsKICAgICAgICBLYW1lcmEuQmV3ZWdfUmF1cyhNb3VzZVNwZWVkKih5LU1vdXNlTG9va0xh
c3RfeSkpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBpZiAoSW52ZXJ0WCkgewogICAgICAg
IEthbWVyYS5CZXdlZ19MaW5rcyhNb3VzZVNwZWVkKih4LU1vdXNlTG9va0xhc3RfeCkpOwogICAg
ICB9IGVsc2UgewogICAgICAgIEthbWVyYS5CZXdlZ19SZWNodHMoTW91c2VTcGVlZCooeC1Nb3Vz
ZUxvb2tMYXN0X3gpKTsKICAgICAgfQogICAgICBpZiAoSW52ZXJ0WSkgewogICAgICAgIEthbWVy
YS5CZXdlZ19SZWluKE1vdXNlU3BlZWQqKHktTW91c2VMb29rTGFzdF95KSk7CiAgICAgIH0gZWxz
ZSB7CiAgICAgICAgS2FtZXJhLkJld2VnX1JhdXMoTW91c2VTcGVlZCooeS1Nb3VzZUxvb2tMYXN0
X3kpKTsKICAgICAgfQogICAgfQogIH0KCiAgTW91c2VMb29rTGFzdF94PXg7CiAgTW91c2VMb29r
TGFzdF95PXk7Cn0KCgp2b2lkIFRhc3RlKCB1bnNpZ25lZCBjaGFyIGtleVByZXNzZWQsIGludCB4
LCBpbnQgeSApCnsKCgogIGlmICghTWVudS5LZXlib2FyZFRhc3RlKGtleVByZXNzZWQseCx5KSkg
ewogICAgc3dpdGNoKCBrZXlQcmVzc2VkICkgewogICAgY2FzZSAnaCc6IHsKICAgICAgaWYgKHhu
b3I9PTQpIHsKICAgICAgICBIaW50ZXJncnVuZGZhcmJlPTEtSGludGVyZ3J1bmRmYXJiZTsKICAg
ICAgICBnbENsZWFyQ29sb3IoSGludGVyZ3J1bmRmYXJiZSxIaW50ZXJncnVuZGZhcmJlLEhpbnRl
cmdydW5kZmFyYmUsMCk7CiAgICAgIH0KICAgIH0gYnJlYWs7CiAgICBjYXNlICd2JzogewogICAg
ICBpZiAoeG5vcj09NCkgewogICAgICAgIHN3aXRjaCAoUG9seWdvbk1vZGVfdmlldykgewogICAg
ICAgIGNhc2UgMHgwNDA0OgogICAgICAgICAgUG9seWdvbk1vZGVfdmlldz0weDA0MDU7CiAgICAg
ICAgICBicmVhazsKICAgICAgICBjYXNlIDB4MDQwNToKICAgICAgICAgIFBvbHlnb25Nb2RlX3Zp
ZXc9MHgwNDA4OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAweDA0MDg6CiAgICAgICAg
ICBQb2x5Z29uTW9kZV92aWV3PTB4MDQwNDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAg
ICAgICBnbFBvbHlnb25Nb2RlKFBvbHlnb25Nb2RlX3ZpZXcsUG9seWdvbk1vZGVfbW9kZSk7CiAg
ICAgIH0KICAgIH0gYnJlYWs7CiAgICBjYXNlICd3JzogewogICAgICBpZiAoeG5vcj09NCkgewog
ICAgICAgIHN3aXRjaCAoUG9seWdvbk1vZGVfbW9kZSkgewogICAgICAgIGNhc2UgMHgxQjAyOiBQ
b2x5Z29uTW9kZV9tb2RlPTB4MUIwMDticmVhazsKICAgICAgICBjYXNlIDB4MUIwMDogUG9seWdv
bk1vZGVfbW9kZT0weDFCMDE7YnJlYWs7CiAgICAgICAgY2FzZSAweDFCMDE6IFBvbHlnb25Nb2Rl
X21vZGU9MHgxQjAyO2JyZWFrOwogICAgICAgIH0KICAgICAgICBnbFBvbHlnb25Nb2RlKFBvbHln
b25Nb2RlX3ZpZXcsUG9seWdvbk1vZGVfbW9kZSk7CiAgICAgIH0KICAgIH0gYnJlYWs7CgogICAg
Y2FzZSAnMSc6IEthbWVyYS5zcGVpY2hlcmVQb3NpdGlvbigwKTticmVhazsKICAgIGNhc2UgJzIn
OiBLYW1lcmEuc3BlaWNoZXJlUG9zaXRpb24oMSk7YnJlYWs7CiAgICBjYXNlICczJzogS2FtZXJh
LnNwZWljaGVyZVBvc2l0aW9uKDIpO2JyZWFrOwogICAgY2FzZSAnNCc6IEthbWVyYS5zcGVpY2hl
cmVQb3NpdGlvbigzKTticmVhazsKICAgIGNhc2UgJzUnOiBLYW1lcmEuc3BlaWNoZXJlUG9zaXRp
b24oNCk7YnJlYWs7CiAgICBjYXNlICc2JzogS2FtZXJhLnNwZWljaGVyZVBvc2l0aW9uKDUpO2Jy
ZWFrOwogICAgY2FzZSAnNyc6IEthbWVyYS5zcGVpY2hlcmVQb3NpdGlvbig2KTticmVhazsKICAg
IGNhc2UgJzgnOiBLYW1lcmEuc3BlaWNoZXJlUG9zaXRpb24oNyk7YnJlYWs7CgogICAgY2FzZSAn
XGInOiB7CiAgICAgIHN3aXRjaCAoU3RhdGVNYXNjaGluKSB7CiAgICAgIGNhc2UgMDoKICAgICAg
ICBTdGF0ZU1hc2NoaW49MTsKICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAg
ICBicmVhazsKICAgICAgY2FzZSAxOiB7CiAgICAgICAgaWYgKExhZ2VWZXJiZXNzZXJ1bmdLb3Bm
ZmVsZHxMYWdlVmVyYmVzc2VydW5nKSB7CiAgICAgICAgICBTdGF0ZU1hc2NoaW49NTsKICAgICAg
ICAgIE1lbnUuTmV1ZXJNZW51WnVzdGFuZCgpOwogICAgICAgIH0KICAgICAgfSBicmVhazsKICAg
ICAgY2FzZSAyOgogICAgICAgIFN0YXRlTWFzY2hpbj0xOwogICAgICAgIE1lbnUuTmV1ZXJNZW51
WnVzdGFuZCgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgU3RhdGVNYXNj
aGluPTI7CiAgICAgICAgTWVudS5OZXVlck1lbnVadXN0YW5kKCk7CiAgICAgICAgQW56ZWlnZS5z
ZXR6ZVN0b3NzU3RhZXJrZSgwKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSA0OiB7CiAgICAg
ICAgaWYgKHhub3IpIHsKICAgICAgICAgIFN0YXRlTWFzY2hpbj0xOwogICAgICAgICAgTWVudS5O
ZXVlck1lbnVadXN0YW5kKCk7CiAgICAgICAgICBmb3IgKGludCBpPTE7aTwxNjtpKyspIHsKICAg
ICAgICAgICAgaWYgKEt1Z2VsbkltU3BpZWxbaV0gJiYgIUt1Z2VsblZlcnNlbmt0W2ldICYmIChL
dWdlbFtpXS5Qb3NfeCgpPT0zMDAwKSkgewogICAgICAgICAgICAgIEt1Z2VsblZlcnNlbmt0W2ld
PTE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIE1lbnUuTmV1ZXJNZW51WnVz
dGFuZCgpOwogICAgICAgICAgQW56ZWlnZS5zZXR6ZVN0b3NzU3RhZXJrZSgwKTsKICAgICAgICB9
CiAgICAgIH0gYnJlYWs7CiAgICAgIH0KICAgIH0gYnJlYWs7CgogICAgY2FzZSAncic6IHsKICAg
ICAgaWYgKHhub3I9PTMpIHsKICAgICAgICB4bm9yPTQ7CiAgICAgIH0gZWxzZSBpZiAoIUFsbGVy
ZXJzdGVyU3Rvc3MpIHsKICAgICAgICBTdGFydHplaXQ9WmVpdCgpOwoKICAgICAgICBTdGF0ZU1h
c2NoaW49NDsKICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICBmb3IgKGlu
dCBLdWdlbG5yPTA7S3VnZWxucjwxNjtLdWdlbG5yKyspIHsKICAgICAgICAgIEt1Z2VsW0t1Z2Vs
bnJdLm5ldWVQb3NpdGlvbkQoQmV3ZWd1bmdzdGFiZWxsZVswXVtLdWdlbG5yXSk7CiAgICAgICAg
fQogICAgICAgIGdsQ2xlYXIoMHgwMDAwNDAwMHwweDAwMDAwMTAwKTsKICAgICAgfQogICAgfSBi
cmVhazsKCgogICAgY2FzZSAnYyc6IHsKICAgICAgaWYgKHhub3I9PTQpIHsKICAgICAgICBnbENs
ZWFyKDB4MDAwMDQwMDB8MHgwMDAwMDEwMCk7CiAgICAgICAgfQogICAgfSBicmVhazsKCiAgICBj
YXNlIDI3IDogewogICAgICBNZW51LlNldHplTWVudVp1c3RhbmQoOSk7CiAgICB9IGJyZWFrOwoK
ICAgIGNhc2UgJ3EnOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAgU3RhdGVNYXNjaGlu
PTA7CiAgICAgICAgTWVudS5TZXR6ZU1lbnVadXN0YW5kKDEpOwogICAgICB9CiAgICB9IGJyZWFr
OwoKICAgIGNhc2UgJ2YnOiB7CiMgMzM4ICJCZW51dHplcnNjaG5pdHRzdGVsbGUuY3BwIgogICAg
fSBicmVhazsKIyAzNjggIkJlbnV0emVyc2Nobml0dHN0ZWxsZS5jcHAiCiAgICBjYXNlIDEyNzog
ewogICAgICBUYXN0ZV9TdHJnPTE7CiAgICB9IGJyZWFrOwogICAgY2FzZSAneCc6IHsKICAgICAg
aWYgKHhub3I9PTApIHsKICAgICAgICB4bm9yPTE7CiAgICAgIH0KICAgIH0gYnJlYWs7CiAgICBj
YXNlICdvJzogewogICAgICBpZiAoeG5vcj09MikgewogICAgICAgIHhub3I9MzsKICAgICAgfQog
ICAgfSBicmVhazsKICAgIGNhc2UgJ3onOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAg
U3BpZWw9NzsKICAgICAgICBTcGllbGZlbGRBdWZiYXUoKTsKICAgICAgfQogICAgfSBicmVhazsK
ICAgIGNhc2UgJ2EnOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAgU3BpZWw9ODsKICAg
ICAgICBTcGllbGZlbGRBdWZiYXUoKTsKICAgICAgICBTY2hpZWRzcmljaHRlci5OZXVlc1NwaWVs
KFNwaWVsKTsKICAgICAgfQogICAgfSBicmVhazsKICAgIGNhc2UgJ24nOiB7CiAgICAgIGlmICh4
bm9yPT0xKSB7CiAgICAgICAgeG5vcj0yOwogICAgICB9CiAgICAgIGlmICh4bm9yPT00KSB7CiAg
ICAgICAgU3BpZWw9OTsKICAgICAgICBTcGllbGZlbGRBdWZiYXUoKTsKICAgICAgICBTY2hpZWRz
cmljaHRlci5OZXVlc1NwaWVsKFNwaWVsKTsKICAgICAgfQogICAgfSBicmVhazsKICAgIGNhc2Ug
JzknOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAgU3BpZWw9OTsKICAgICAgICBTcGll
bGZlbGRBdWZiYXUoKTsKICAgICAgICBTY2hpZWRzcmljaHRlci5OZXVlc1NwaWVsKFNwaWVsKTsK
ICAgICAgfQogICAgfSBicmVhazsKICAgIGNhc2UgJ3MnOiB7CiAgICAgIGlmICh4bm9yPT00KSB7
CiAgICAgICAgU3BpZWw9MjsKICAgICAgICBTcGllbGZlbGRBdWZiYXUoKTsKICAgICAgfQogICAg
fSBicmVhazsKICAgIGNhc2UgJ2wnOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAgU3Bp
ZWw9MDsKICAgICAgICBTcGllbGZlbGRBdWZiYXUoKTsKICAgICAgfQogICAgfSBicmVhazsKICAg
IGNhc2UgJ2QnOiB7CiAgICAgIGlmICh4bm9yPT00KSB7CiAgICAgICAgR0xmbG9hdCBkeD1LdWdl
bFswXS5Qb3NfeENNKCktS2FtZXJhLlBvc194Q00oKTsKICAgICAgICBHTGZsb2F0IGR5PUt1Z2Vs
WzBdLlBvc195Q00oKS1LYW1lcmEuUG9zX3lDTSgpOwogICAgICAgIEdMZmxvYXQgQWJzdGFuZD1z
cXJ0KGR4KmR4K2R5KmR5KTsKICAgICAgICBTdG9zcyhkeCo4MC4wL0Fic3RhbmQsZHkqODAuMC9B
YnN0YW5kKTsKICAgICAgfQogICAgfSBicmVhazsKICAgIGNhc2UgJ2UnOiB7CiAgICAgIGlmICh4
bm9yPT00KSB7CiAgICAgICAgR0xmbG9hdCBkeD1LdWdlbFswXS5Qb3NfeENNKCktS2FtZXJhLlBv
c194Q00oKTsKICAgICAgICBHTGZsb2F0IGR5PUt1Z2VsWzBdLlBvc195Q00oKS1LYW1lcmEuUG9z
X3lDTSgpOwogICAgICAgIEdMZmxvYXQgQWJzdGFuZD1zcXJ0KGR4KmR4K2R5KmR5KTsKICAgICAg
ICBTdG9zcyhkeCo4MC4wL0Fic3RhbmQsZHkqODAuMC9BYnN0YW5kKTsKICAgICAgICBTdGF0ZU1h
c2NoaW49NDsKICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICBLYW1lcmEu
QmxpY2tlQXVmMihLdWdlbFswXS5Qb3NfeENNKCksS3VnZWxbMF0uUG9zX3lDTSgpKTsKCiAgICAg
ICAgRGVsYXlBdXNnbGVpY2g9MTsKICAgICAgfQogICAgfSBicmVhazsKICAgIGNhc2UgJyAnOiB7
CiAgICAgIHN3aXRjaCAoU3RhdGVNYXNjaGluKSB7CiAgICAgIGNhc2UgMToKICAgICAgICBTdGF0
ZU1hc2NoaW49MjsKICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICBLYW1l
cmEuQmxpY2tlQXVmKEt1Z2VsWzBdLlBvc194Q00oKSxLdWdlbFswXS5Qb3NfeUNNKCkpOwogICAg
ICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgQXVzaG9sU3RhcnR6ZWl0PVplaXQoKTsK
ICAgICAgICBTdGF0ZU1hc2NoaW49MzsKICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsK
ICAgICAgICBicmVhazsKICAgICAgY2FzZSA0OiB7CiAgICAgICAgaWYgKHhub3IpIHsKICAgICAg
ICAgIGZvciAoaW50IEt1Z2VsbnI9MDtLdWdlbG5yPDE2O0t1Z2VsbnIrKykgewogICAgICAgICAg
ICBLdWdlbFtLdWdlbG5yXS5uZXVlUG9zaXRpb25EKEJld2VndW5nc3RhYmVsbGVbU3Rvc3NkYXVl
cl1bS3VnZWxucl0pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKEt1Z2VsWzBdLlBvc194KCk9
PTMwMDApIHsKICAgICAgICAgICAgU3RhdGVNYXNjaGluPTU7CiAgICAgICAgICAgIFdlaXNzZUVp
bnNldHplbigpOwogICAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgIFN0YXRlTWFzY2hpbj0xOwogICAgICAgICAgICBNZW51Lk5l
dWVyTWVudVp1c3RhbmQoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gYnJlYWs7CiAg
ICAgIGNhc2UgNTogewogICAgICAgIFN0YXRlTWFzY2hpbj0xOwogICAgICAgIE1lbnUuTmV1ZXJN
ZW51WnVzdGFuZCgpOwogICAgICB9IGJyZWFrOwogICAgICBjYXNlIDY6IHsKICAgICAgICBpZiAo
TGFnZVZlcmJlc3NlcnVuZ0tvcGZmZWxkfExhZ2VWZXJiZXNzZXJ1bmcpIHsKICAgICAgICAgIFdl
aXNzZUVpbnNldHplbigpOwogICAgICAgICAgU3RhdGVNYXNjaGluPTU7CiAgICAgICAgICBNZW51
Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgU3RhdGVNYXNj
aGluPTE7CiAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAg
IH0gYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIH0KICB9Cn0KCgp2b2lkIFRhc3RlTG9zKCB1bnNp
Z25lZCBjaGFyIGtleVByZXNzZWQsIGludCxpbnQpIHsKCiAgaWYgKChrZXlQcmVzc2VkPT0nICcp
JiYKICAgICAgKFN0YXRlTWFzY2hpbj09MykpIHsKICAgIEdMZmxvYXQgZHg9S3VnZWxbMF0uUG9z
X3hDTSgpLUthbWVyYS5Qb3NfeENNKCk7CiAgICBHTGZsb2F0IGR5PUt1Z2VsWzBdLlBvc195Q00o
KS1LYW1lcmEuUG9zX3lDTSgpOwogICAgR0xmbG9hdCBBYnN0YW5kPXNxcnQoZHgqZHgrZHkqZHkp
OwogICAgU3Rvc3MoZHgqQXVzaG9sU3RhZXJrZS9BYnN0YW5kLGR5KkF1c2hvbFN0YWVya2UvQWJz
dGFuZCk7CiAgICBTdGF0ZU1hc2NoaW49NDsKICAgIE1lbnUuTmV1ZXJNZW51WnVzdGFuZCgpOwog
ICAgS2FtZXJhLkJsaWNrZUF1ZjIoS3VnZWxbMF0uUG9zX3hDTSgpLEt1Z2VsWzBdLlBvc195Q00o
KSk7CgogICAgRGVsYXlBdXNnbGVpY2g9MTsKICB9CiAgaWYgKGtleVByZXNzZWQ9PTEyNykgewog
ICAgVGFzdGVfU3RyZz0wOwogIH0KCn0KCgp2b2lkIFNvbmRlcnRhc3RlKGludCBUYXN0ZSxpbnQg
eCwgaW50IHkpIHsKCiAgeD15OwoKCgoKCiAgaWYgKFN0YXRlTWFzY2hpbiE9MCkgewoKICAgIHN3
aXRjaCAoVGFzdGUpIHsKICAgIGNhc2UgMToKICAgICAgaWYgKFN0YXRlTWFzY2hpbiE9Mykgewog
ICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQgJiYgU3RhdGVNYXNjaGluIT01ICYmIFN0YXRlTWFz
Y2hpbiE9NikgewogICAgICAgICAgU3RhdGVNYXNjaGluPTE7CiAgICAgICAgICBNZW51Lk5ldWVy
TWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAgICAgS2FtZXJhLmxhZGVQb3NpdGlvbigwKTsK
ICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgaWYgKFN0YXRlTWFzY2hpbiE9
MykgewogICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQgJiYgU3RhdGVNYXNjaGluIT01ICYmIFN0
YXRlTWFzY2hpbiE9NikgewogICAgICAgICAgU3RhdGVNYXNjaGluPTE7CiAgICAgICAgICBNZW51
Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAgICAgS2FtZXJhLmxhZGVQb3NpdGlv
bigxKTsKICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgaWYgKFN0YXRlTWFz
Y2hpbiE9MykgewogICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQgJiYgU3RhdGVNYXNjaGluIT01
ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAgICAgICAgU3RhdGVNYXNjaGluPTE7CiAgICAgICAg
ICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAgICAgS2FtZXJhLmxhZGVQ
b3NpdGlvbigyKTsKICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgaWYgKFN0
YXRlTWFzY2hpbiE9MykgewogICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQgJiYgU3RhdGVNYXNj
aGluIT01ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAgICAgICAgU3RhdGVNYXNjaGluPTE7CiAg
ICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAgICAgS2FtZXJh
LmxhZGVQb3NpdGlvbigzKTsKICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgNToKICAgICAg
aWYgKFN0YXRlTWFzY2hpbiE9MykgewogICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQgJiYgU3Rh
dGVNYXNjaGluIT01ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAgICAgICAgU3RhdGVNYXNjaGlu
PTE7CiAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAgICAgICAg
S2FtZXJhLmxhZGVQb3NpdGlvbig0KTsKICAgICAgfQogICAgICBicmVhazsKICAgIGNhc2UgNjoK
ICAgICAgaWYgKFN0YXRlTWFzY2hpbiE9MykgewogICAgICAgIGlmIChTdGF0ZU1hc2NoaW4hPTQg
JiYgU3RhdGVNYXNjaGluIT01ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAgICAgICAgU3RhdGVN
YXNjaGluPTE7CiAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAgICB9CiAg
ICAgICAgS2FtZXJhLmxhZGVQb3NpdGlvbig1KTsKICAgICAgfQogICAgICBicmVhazsKICAgIGNh
c2UgNzoKICAgICAgaWYgKFN0YXRlTWFzY2hpbiE9MykgewogICAgICAgIGlmIChTdGF0ZU1hc2No
aW4hPTQgJiYgU3RhdGVNYXNjaGluIT01ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAgICAgICAg
U3RhdGVNYXNjaGluPTE7CiAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsKICAgICAg
ICB9CiAgICAgICAgS2FtZXJhLmxhZGVQb3NpdGlvbig2KTsKICAgICAgfQogICAgICBicmVhazsK
ICAgIGNhc2UgODoKICAgICAgaWYgKFN0YXRlTWFzY2hpbiE9MykgewogICAgICAgIGlmIChTdGF0
ZU1hc2NoaW4hPTQgJiYgU3RhdGVNYXNjaGluIT01ICYmIFN0YXRlTWFzY2hpbiE9NikgewogICAg
ICAgICAgU3RhdGVNYXNjaGluPTE7CiAgICAgICAgICBNZW51Lk5ldWVyTWVudVp1c3RhbmQoKTsK
ICAgICAgICB9CiAgICAgICAgS2FtZXJhLmxhZGVQb3NpdGlvbig3KTsKICAgICAgfQogICAgICBi
cmVhazsKCiAgICBjYXNlIDEwODogewogICAgICBUYXN0ZV9TaGlmdD0xOwogICAgfSBicmVhazsK
ICAgIGNhc2UgMTAxOgogICAgICBUYXN0ZV9QZmVpbF9PYmVuPTE7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAxMDM6CiAgICAgIFRhc3RlX1BmZWlsX1VudGVuPTE7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSAxMDI6CiAgICAgIFRhc3RlX1BmZWlsX1JlY2h0cz0xOwogICAgICBicmVhazsKICAgIGNhc2Ug
MTAwOgogICAgICBUYXN0ZV9QZmVpbF9MaW5rcz0xOwogICAgICBicmVhazsKICAgIGNhc2UgMTA0
OgogICAgICBUYXN0ZV9CaWxkX0F1Zj0xOwogICAgICBicmVhazsKICAgIGNhc2UgMTA1OgogICAg
ICBUYXN0ZV9CaWxkX0FiPTE7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxMDY6CiAgICAgIGlmICh4
bm9yKSBUYXN0ZV9Qb3MxPTE7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxMDc6CiAgICAgIGlmICh4
bm9yKSBUYXN0ZV9FbmRlPTE7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfQoKCnZvaWQgU29uZGVy
dGFzdGVMb3MoaW50IFRhc3RlLGludCB4LCBpbnQgeSkgewoKICB4PXk7CgogIGlmIChTdGF0ZU1h
c2NoaW4hPTApIHsKCiAgICBzd2l0Y2ggKFRhc3RlKSB7CiAgICBjYXNlIDEwODogewogICAgICBU
YXN0ZV9TaGlmdD0wOwogICAgfSBicmVhazsKICAgIGNhc2UgMTAxOgogICAgICBUYXN0ZV9QZmVp
bF9PYmVuPTA7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxMDM6CiAgICAgIFRhc3RlX1BmZWlsX1Vu
dGVuPTA7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxMDI6CiAgICAgIFRhc3RlX1BmZWlsX1JlY2h0
cz0wOwogICAgICBicmVhazsKICAgIGNhc2UgMTAwOgogICAgICBUYXN0ZV9QZmVpbF9MaW5rcz0w
OwogICAgICBicmVhazsKICAgIGNhc2UgMTA0OgogICAgICBUYXN0ZV9CaWxkX0F1Zj0wOwogICAg
ICBicmVhazsKICAgIGNhc2UgMTA1OgogICAgICBUYXN0ZV9CaWxkX0FiPTA7CiAgICAgIGJyZWFr
OwogICAgY2FzZSAxMDY6CiAgICAgIFRhc3RlX1BvczE9MDsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDEwNzoKICAgICAgVGFzdGVfRW5kZT0wOwogICAgICBicmVhazsKICAgIH0KICB9Cn0K


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]