This is the mail archive of the gcc-prs@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]

c/1504: Segmentation fault



>Number:         1504
>Category:       c
>Synopsis:       Segmentation fault
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Dec 23 19:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     zome@iname.com
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:
RedHat 7.0. Out of the box
>Description:
gcc -fPIC  -I../../Pax -I/usr/include/python1.5 -I/usr/local/include -g -O2 -I/usr/include/python1.5 -I/usr/include/python1.5 -DHAVE_CONFIG_H -c ./curveobject.c

./curveobject.c: In function `add_bezier_rect':
./curveobject.c:781: Internal error: Segmentation fault.
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make: *** [curveobject.o] Error 1
>How-To-Repeat:
Try to compile Sketch, the vector drawing program.
http://sketch.sourceforge.net/
>Fix:

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

IyAxICIuL2N1cnZlb2JqZWN0LmMiCiMgMjIgIi4vY3VydmVvYmplY3QuYyIKIyAyOCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgoKCgoKCgoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyA1NCAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwpleHRlcm4gZG91YmxlIGFjb3MgKCBkb3Vi
bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi
bGUgYXNpbiAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoIGRvdWJsZSBfX3gp
OwoKZXh0ZXJuIGRvdWJsZSBhdGFuICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFu
ICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4yICggZG91YmxlIF9feSwgZG91Ymxl
IF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpOwoK
CmV4dGVybiBkb3VibGUgY29zICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3MgKCBk
b3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgc2luICggZG91YmxlIF9feCk7IGV4dGVybiBkb3Vi
bGUgX19zaW4gKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgdGFuICggZG91YmxlIF9feCk7
IGV4dGVybiBkb3VibGUgX190YW4gKCBkb3VibGUgX194KTsKCiMgNzggIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoIGRvdWJsZSBfX3gpOyBleHRl
cm4gZG91YmxlIF9fY29zaCAoIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW5oICggZG91
YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91
YmxlIHRhbmggKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKCBkb3VibGUgX194
KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
YWNvc2ggKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKCBkb3VibGUgX194KTsg
ZXh0ZXJuIGRvdWJsZSBfX2FzaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW5o
ICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoIGRvdWJsZSBfX3gpOwoKCgoK
CmV4dGVybiBkb3VibGUgZXhwICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19leHAgKCBk
b3VibGUgX194KTsKCiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl
cm4gZG91YmxlIGZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGRv
dWJsZSBfX2ZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91
YmxlIGxkZXhwICggZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9f
bGRleHAgKCBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cg
KCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoIGRvdWJsZSBfX3gpOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwICggZG91
YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmICggZG91YmxlIF9feCwgZG91YmxlICpfX2lw
dHIpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoIGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKTsK
CgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fZXhw
bTEgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwICggZG91YmxlIF9feCk7IGV4
dGVybiBkb3VibGUgX19sb2cxcCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbG9nYiAo
IGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoIGRvdWJsZSBfX3gpOwojIDE0MyAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBwb3cgKCBkb3Vi
bGUgX194LCBkb3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91
YmxlIF9fc3FydCAoIGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90ICggZG91Ymxl
IF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0ICggZG91YmxlIF9feCk7IGV4dGVybiBk
b3VibGUgX19jYnJ0ICggZG91YmxlIF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoIGRv
dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBk
b3VibGUgZmFicyAoIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX2ZhYnMgKCBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
Zmxvb3IgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKCBkb3VibGUgX194LCBk
b3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKCBkb3VibGUgX194LCBkb3VibGUgX195
KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVy
biBkb3VibGUgaW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gZG91YmxlIF9faW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
OyBleHRlcm4gZG91YmxlIF9fZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gZG91YmxlIHNpZ25pZmljYW5kICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaWdu
aWZpY2FuZCAoIGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoIGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX2NvcHlzaWduICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0
ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKCBkb3VibGUpOyBleHRlcm4gZG91Ymxl
IF9fajAgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGoxICggZG91YmxlKTsgZXh0ZXJuIGRvdWJs
ZSBfX2oxICggZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOyBleHRlcm4g
ZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoIGRvdWJsZSk7IGV4
dGVybiBkb3VibGUgX195MCAoIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTEgKCBkb3VibGUpOyBl
eHRlcm4gZG91YmxlIF9feTEgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJs
ZSk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpOwoKCgoKCmV4dGVybiBkb3VibGUg
ZXJmICggZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoIGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZXJmYyAoIGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmZjICggZG91YmxlKTsKZXh0ZXJu
IGRvdWJsZSBsZ2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hICggZG91Ymxl
KTsKIyAyNDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUg
Z2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKCBkb3VibGUpOwoKCgoKCgpl
eHRlcm4gZG91YmxlIGxnYW1tYV9yICggZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4g
ZG91YmxlIF9fbGdhbW1hX3IgKCBkb3VibGUsIGludCAqX19zaWduZ2FtcCk7CgoKCgoKCmV4dGVy
biBkb3VibGUgcmludCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcmludCAoIGRvdWJs
ZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyICggZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVy
ICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVyICggZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4
dGVybiBkb3VibGUgX19yZW1haW5kZXIgKCBkb3VibGUgX194LCBkb3VibGUgX195KTsKCgoKZXh0
ZXJuIGRvdWJsZSBzY2FsYiAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pOyBleHRlcm4gZG91Ymxl
IF9fc2NhbGIgKCBkb3VibGUgX194LCBkb3VibGUgX19uKTsKCgoKCmV4dGVybiBkb3VibGUgc2Nh
bGJuICggZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKCBkb3Vi
bGUgX194LCBpbnQgX19uKTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCk7IGV4dGVy
biBpbnQgX19pbG9nYiAoZG91YmxlIF9feCk7CiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIg
MwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAxIDMKZXh0ZXJuIGZsb2F0IGFjb3NmICggZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYWNvc2YgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGFzaW5mICggZmxvYXQgX194
KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IGF0YW4yZiAoIGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRh
bjJmICggZmxvYXQgX195LCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBjb3NmICggZmxvYXQg
X194KTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2lu
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IHRhbmYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mICggZmxvYXQgX194
KTsKCiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBj
b3NoZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmICggZmxvYXQgX194KTsKCmV4
dGVybiBmbG9hdCBzaW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmICggZmxv
YXQgX194KTsKCmV4dGVybiBmbG9hdCB0YW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf
X3RhbmhmICggZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoIGZsb2F0IF9feCk7
IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmhm
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmICggZmxvYXQgX194KTsKCmV4dGVy
biBmbG9hdCBhdGFuaGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKCBmbG9h
dCBfX3gpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0
IF9fZXhwZiAoIGZsb2F0IF9feCk7CgojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoIGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsg
ZXh0ZXJuIGZsb2F0IF9fZnJleHBmICggZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpOwoKCmV4
dGVybiBmbG9hdCBsZGV4cGYgKCBmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KTsgZXh0ZXJuIGZs
b2F0IF9fbGRleHBmICggZmxvYXQgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0
IGxvZ2YgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2dmICggZmxvYXQgX194KTsKCgpl
eHRlcm4gZmxvYXQgbG9nMTBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmICgg
ZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKCBmbG9hdCBfX3gsIGZsb2F0ICpfX2lw
dHIpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoIGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cik7CgoK
CmV4dGVybiBmbG9hdCBleHBtMWYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHBtMWYg
KCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKCBmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19sb2cxcGYgKCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoIGZsb2F0
IF9feCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmICggZmxvYXQgX194KTsKIyAxNDMgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmICggZmxvYXQgX194LCBm
bG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19wb3dmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoK
CmV4dGVybiBmbG9hdCBzcXJ0ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NxcnRmICgg
ZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0
ZXJuIGZsb2F0IGNicnRmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKCBmbG9h
dCBfX3gpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxv
YXQgX19jZWlsZiAoIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmICggZmxvYXQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmICggZmxv
YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoIGZsb2F0IF9feCk7CgoKZXh0
ZXJuIGZsb2F0IGZtb2RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19m
bW9kZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZs
b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
ZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQg
X19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVt
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKCBmbG9hdCBf
X3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gp
OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZs
b2F0IGNvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoIGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fajBmICggZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmICggZmxvYXQp
OyBleHRlcm4gZmxvYXQgX19qMWYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxv
YXQpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgeTBmICgg
ZmxvYXQpOyBleHRlcm4gZmxvYXQgX195MGYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCB5MWYgKCBm
bG9hdCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50
LCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZs
b2F0IGVyZmYgKCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmYgKCBmbG9hdCk7CmV4dGVybiBm
bG9hdCBlcmZjZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKCBmbG9hdCk7CmV4dGVy
biBmbG9hdCBsZ2FtbWFmICggZmxvYXQpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmICggZmxvYXQp
OwojIDI0NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGdh
bW1hZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmICggZmxvYXQpOwoKCgoKCgpleHRl
cm4gZmxvYXQgbGdhbW1hZl9yICggZmxvYXQsIGludCAqX19zaWduZ2FtcCk7IGV4dGVybiBmbG9h
dCBfX2xnYW1tYWZfciAoIGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApOwoKCgoKCgpleHRlcm4gZmxv
YXQgcmludGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoIGZsb2F0IF9feCk7
CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKCBmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmICggZmxvYXQg
X194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4g
ZmxvYXQgcmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9f
cmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxi
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmICggZmxvYXQg
X194LCBmbG9hdCBfX24pOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKCBmbG9hdCBfX3gsIGlu
dCBfX24pOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mICggZmxvYXQgX194LCBpbnQgX19uKTsKCgoK
ZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0
IF9feCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDEwMCAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCmV4dGVy
biBsb25nIGRvdWJsZSBhY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Fjb3NsICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sICggbG9uZyBkb3Vi
bGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25n
IGRvdWJsZSBhdGFuMmwgKCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2F0YW4ybCAoIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Nvc2wgKCBsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sICggbG9u
ZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sICggbG9uZyBkb3VibGUgX194
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAoIGxvbmcgZG91YmxlIF9feCk7CgojIDc4ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwg
KCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAoIGxvbmcgZG91
YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgdGFuaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX190
YW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKCBs
b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgYXRhbmhsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
YXRhbmhsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBs
b25nIGRvdWJsZSBmcmV4cGwgKCBsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAoIGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u
ZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsICggbG9uZyBkb3VibGUgX194LCBpbnQg
X19leHBvbmVudCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAoIGxvbmcgZG91YmxlIF9f
eCwgaW50IF9fZXhwb25lbnQpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsICggbG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAoIGxvbmcgZG91YmxlIF9feCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IG1vZGZsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbW9kZmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nMXBsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9n
MXBsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKCBsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAoIGxvbmcgZG91YmxlIF9f
eCk7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBk
b3VibGUgcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19zcXJ0bCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBo
eXBvdGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2h5cG90bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2NicnRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGNlaWxsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKCBs
b25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAoIGxvbmcgZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m
YWJzbCAoIGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19mbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBm
bW9kbCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZm1vZGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRl
cm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBm
aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50IF9f
ZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZHJlbWwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2RyZW1sICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSBjb3B5c2lnbmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2ln
bmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAoIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxv
bmcgZG91YmxlIGoxbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsICgg
bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHkwbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsICggbG9u
ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsICggbG9uZyBkb3VibGUpOyBleHRlcm4g
bG9uZyBkb3VibGUgX195MWwgKCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwg
KGludCwgbG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBk
b3VibGUpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsICggbG9uZyBkb3VibGUpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19lcmZsICggbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
ZXJmY2wgKCBsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsICggbG9uZyBk
b3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsKIyAyNDYgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAoIGxvbmcgZG91YmxlKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAoIGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdh
bXApOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKCBsb25nIGRvdWJsZSwgaW50ICpf
X3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsICggbG9uZyBkb3VibGUg
X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
bmV4dGFmdGVybCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKCBs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Jl
bWFpbmRlcmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSBzY2FsYmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbik7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X19uKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sICggbG9uZyBkb3VibGUgX194LCBp
bnQgX19uKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAoIGxvbmcgZG91YmxlIF9feCwg
aW50IF9fbik7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4g
aW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsK
IyAyMzYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAt
MSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lP
Tl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlw
ZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAg
ZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0
aW9uICpfX2V4Yyk7CiMgMjkwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNzkgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2Zsb2F0LmgiIDEgMwp1bmlv
biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs
ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwojIDI5MCAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg
MjgxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIF9fc2duIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3Vi
bGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0x
LjApOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDog
KF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X3NnbmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/
IDEuMCA6IC0xLjApOyB9CgoKCiMgNDY2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0
YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ks
IGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6
ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
YXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg
fQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5c
dCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQoj
IDQ4MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk
b3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJl
dHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChf
X3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpl
eHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWls
dGluX2ZhYnNsIChfX3gpOyB9CiMgNTA3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0
ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10
IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoK
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVu
c2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9
IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAw
MCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyBy
ZXR1cm4gX19uLl9feGxkOyB9CiMgNTE4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKIyA1MzMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg
X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyA1NDQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1NTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCgoK
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2Fs
ZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkp
OyByZXR1cm4gX192YWx1ZTsKfQoKCgojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICog
MS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNl
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEz
NTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQx
NDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19h
c20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQojIDU5
NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19m
YWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBf
X3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChf
X3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsg
fQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAo
X194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShf
X3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0g
X19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAg
KyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0
YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChk
b3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kg
KiBfX3kpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2diZiAoZmxvYXQg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r
KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgoKCgoKCiMgNjkzICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp
bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz
dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf
X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7
IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0
IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9f
eCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi
anAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDcwNiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJs
ZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBk
b3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAg
IHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyA0MDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAyMiAiLi9jdXJ2ZW9iamVj
dC5jIiAyCgoKIyAzOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMQoKIyA1OCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwoKCgoKCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAz
NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgNDMgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2J1
aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9u
ZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFk
X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGlu
dCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVk
ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7
CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoK
dHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7
CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191
X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0
eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsK
dHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFs
WzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIg
Kl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRl
ZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IF9fZmRfbWFzazsKCgojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRz
WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBl
ZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90
OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBf
X2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9s
b25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5
cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNu
dDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90
IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5o
IiAxIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAg
fTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBf
cHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7
Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rl
c2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19z
Y2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9f
aW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQg
X19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6
ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhy
ZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRf
Y29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0
aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50
IHB0aHJlYWRfb25jZV90OwoKCiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCiMgMTY2ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCiMgNTggIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAxIDMKIyAyODcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90
OwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyA0
NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
Mwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3Qg
X193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMg
MjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19v
ZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBz
dHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zw
b3M2NF90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAyOSAiL3Vzci9pbmNs
dWRlL2djb252LmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjkgIi91
c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAog
IF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dD
T05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FM
X0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RF
U0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05W
X0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoK
CnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9f
Z2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVm
IGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVm
IHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICos
IHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRl
eHRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlf
ZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgq
X19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2Rh
dGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2Nv
bnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9f
dHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0
YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9s
b2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsK
CiAgaW50IF9fY291bnRlcjsKCiAgX19jb25zdCBjaGFyICpfX2Zyb21fbmFtZTsKICBfX2NvbnN0
IGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2Zj
dCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWlu
X25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVk
X3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAq
X19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIg
Kl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdz
OwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7
CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9f
Z2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9f
c3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhWzBd
Owp9ICpfX2djb252X3Q7CgojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MiAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKIyAxNTcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBf
SU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CgoKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9j
a190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7
CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRf
b2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9u
b2NvbnYKfTsKCiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUg
ewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVh
ZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBj
aGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1
Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNo
YXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9f
bWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmls
ZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNiAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2
b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAo
aW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklM
RSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsK
IyAzNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVh
ZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoK
CgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29u
c3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v
ZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9p
ZCAqX19jb29raWUpOwoKCiMgMzk3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50
IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAq
KTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpOwpleHRlcm4gd2ludF90
IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19G
SUxFICopOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpOwoK
IyA0MjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19G
SUxFICpfX2ZwKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp
OwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl
cnJvciAoX0lPX0ZJTEUgKl9fZnApOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9f
RklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKik7
CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX0lP
X2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKik7CgojIDQ1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qs
IGludCAqX19yZXN0cmljdCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwg
aW50LCBfX3NzaXplX3QpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9p
ZCAqLCBzaXplX3QpOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwg
X19vZmY2NF90LCBpbnQsIGludCk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
IChfSU9fRklMRSAqKTsKCiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRl
ZiBfR19mcG9zX3QgZnBvc190OwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0
ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJy
OwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKTsKCmV4
dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3
KTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gY2hh
ciAqdG1wbmFtX3IgKGNoYXIgKl9fcyk7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9z
ZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsK
CgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKIyAxODIgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxF
ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpOwojIDIzNSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAg
ICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKTsKCgoKCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKTsKCgpleHRlcm4gdm9pZCBz
ZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKOwoKZXh0
ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikKIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz
LCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMDkg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLik7CgojIDMzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFt
KTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9f
Yyk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgpleHRlcm4g
aW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJ
TEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBf
X3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCjsKCiMgNDAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKTsKCgojIDQyNSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKOwoKCgoKCgoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgoKCmV4dGVybiBz
aXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3do
ZW5jZSk7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiB2
b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CiMgNDk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKOwoKZXh0
ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsK
IyA1MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF
ICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiBp
bnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoK
ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gaW50IHN5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTYy
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJl
YW0pOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoK
CgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBj
aGFyICpfX21vZGVzKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoK
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpOwojIDYwOSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVy
biBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIHZvaWQgZnVubG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKIyA2MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMg
MzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwpleHRlcm4gX19pbmxpbmUgaW50CnZw
cmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4p
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsK
ICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8g
X191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIr
Kyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICBy
ZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBf
X3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRy
KyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1
cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9f
aW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJl
dHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1
bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1
cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkg
PyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg
Y2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMCAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgx
MCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsK
fQojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgNTggIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCgoK
CgoKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19zcmMsIHNpemVfdCBfX24pCjsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCjsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBtZW1jbXAg
KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2
b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo7
CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
OwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCjsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3Qg
Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pOwoKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxNjcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVqZWN0KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj
aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
IyAxODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCjsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKTsKCmV4dGVybiBj
aGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
c2F2ZV9wdHIpOwojIDIyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg
c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgoj
IDIzMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50
IF9fZXJybnVtKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBj
aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu
dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbik7CgoKCgpleHRlcm4gdm9p
ZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pOwoKCgpleHRlcm4gdm9pZCBiY29weSAo
X19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKTsKCgpleHRlcm4g
dm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKTsKCgpleHRlcm4gaW50IGJjbXAgKF9f
Y29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIg
KnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
CgojIDI3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJjYXNlY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
IHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAzMDAgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBf
X3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgojIDUzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEg
MwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDM3MSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9p
ZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwg
X191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQz
Ml90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5
X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8y
LCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBf
NCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikK
ewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAg
ICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRj
aCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+
X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19z
cmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAg
ICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5f
X3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7
Cn0KIyA4NzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQog
ICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq
ZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0
XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNp
emVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFy
IF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNj
ZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0g
X19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KIyA5ODIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBf
X2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9f
cyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4g
Kl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19h
Y2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAog
ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYg
Kl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAh
PSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICop
MCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDQzICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9f
cywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBj
aGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4
dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAn
KQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0
ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAg
ICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7
CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpf
X25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMg
MTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGlu
ZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq
ZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09
ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsr
ID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3Jl
dHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsK
ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p
ZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09
IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1ww
JzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAg
ICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9
IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAg
ICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsK
ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAg
cmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNo
YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0
MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg
aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikw
KTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3Qy
CiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog
IGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3
aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19y
ZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2Nw
OwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19j
cDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAg
ICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19y
ZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9f
Y29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwog
IGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
X19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/
ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcp
ID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsx
XSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
X19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws
IF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBj
aGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3Jl
dHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0g
J1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJy
ayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3Qp
KTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KIyAxMTg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKCiMgNTI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplKQogX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA4NDYgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgpl
eHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CiMgMTIxMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBf
X24pCiBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDM2NiAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyAzMiAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwoKCgoKCiMgMjYgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKIyAy
NiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRz
L2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0
aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDM3ICIvdXNyL2luY2x1
ZGUvZXJybm8uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCiMgNjAgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDEgMwoKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAg
ewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0
CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyAx
MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i
X2N1cl9tYXggKHZvaWQpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19u
cHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcg
aW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJs
ZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cik7CgojIDE2MyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCjsKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3Ry
dG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkb3VibGUgX19z
dHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19ncm91cCkKOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQo7CmV4dGVybiBsb25nIGRvdWJsZSBf
X3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCk7
CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgaW50IF9fZ3JvdXApOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu
dCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCjsKIyAyOTQgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsK
ICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVy
biBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICBy
ZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQoKIyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
aW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7
Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJl
dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAg
cmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9p
ZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbDY0YSAobG9uZyBpbnQgX19uKTsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBj
aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgojIDI4ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVm
IF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xv
bmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVf
cXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZf
dDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoK
CnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90
Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMg
MTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyA3MSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMSAzCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKIyA4MiAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCiMgOTMgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCiMgMTI3ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3Jk
X18pKSk7CgoKCgojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMzIgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoKCgojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMSAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp
Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwoKIyAzNSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCgoKCgojIDEwNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCnN0cnVj
dCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7
CiAgfTsKCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0
IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVkZWYgX19mZF9zZXQg
ZmRfc2V0OwoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBz
ZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg
ICAgICAgICAgICAgIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAg
ICAgICAgICBfX2ZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CgojIDkyICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRf
dCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludDMy
X3QgcmFuZG9tICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19z
ZWVkKTsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj
aGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl
bik7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CgoKCgoKCgpz
dHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0
cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2Rl
ZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBp
bnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgpleHRlcm4gaW50
IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1
Zik7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0
YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz
dHJpY3QgX19idWYpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9f
c3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpOwoKZXh0ZXJuIHZvaWQg
c3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWdu
ZWQgaW50ICpfX3NlZWQpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZXh0
ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSk7CgoKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2
b2lkKTsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKTsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpOwpleHRlcm4g
dW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZb
M10pOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSk7
CgoKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IGFbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsKICAg
IHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsKICAgIGludCBpbml0OwogIH07CgoKCmV4dGVy
biBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKZXh0
ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgoKZXh0
ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCjsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fYnVmZmVyKTsKIyA1MzUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9p
ZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cik7CgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cik7CgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi
IDEgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKIyA1
NDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChz
aXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAo
dm9pZCkpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19z
dGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCjsKZXh0ZXJuIGludCBvbl9leGl0ICh2
b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo7
CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgojIDU4OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy
ICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJl
X2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChj
aGFyICpfX3N0cmluZyk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCjsKCgpleHRlcm4gdm9p
ZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFy
ZW52ICh2b2lkKTsKIyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19j
b25zdCBjaGFyICpfX2NvbW1hbmQpOwoKCiMgNjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCk7CgoKCgoK
CnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZv
aWQgKik7CgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks
IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9p
ZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFi
cyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQg
bGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzAwICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGlu
dCBfX2Rlbm9tKQogX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CiMgNzE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg
KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKTsK
CgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFy
ICpfX2J1Zik7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24pOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1Zik7CgoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbik7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p
OwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
CiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0
cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
IGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25z
dCBjaGFyICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2No
YXJfdCBfX3djaGFyKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCjsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo
X19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKTsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0p
OwoKCgoKCiMgNjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgoKCgoKCgoK
IyAxMTQgIi91c3IvaW5jbHVkZS9weXRob24xLjUvb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qg
X29iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90
eXBlOwp9IFB5T2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7
IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9iX3NpemU7Cn0gUHlWYXJPYmplY3Q7
CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgp0eXBlZGVmIFB5T2JqZWN0
ICogKCp1bmFyeWZ1bmMpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqICgqYmluYXJ5
ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICogKCp0ZXJu
YXJ5ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIGlu
dCAoKmlucXVpcnkpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpjb2VyY2lvbikgKFB5T2Jq
ZWN0ICoqLCBQeU9iamVjdCAqKik7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50YXJnZnVuYykgKFB5
T2JqZWN0ICosIGludCk7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50aW50YXJnZnVuYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50KTsKdHlwZWRlZiBpbnQoKmludG9iamFyZ3Byb2MpIChQeU9iamVjdCAq
LCBpbnQsIFB5T2JqZWN0ICopOwp0eXBlZGVmIGludCgqaW50aW50b2JqYXJncHJvYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQoKm9iam9iamFyZ3Byb2Mp
IChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpnZXRy
ZWFkYnVmZmVycHJvYykgKFB5T2JqZWN0ICosIGludCwgdm9pZCAqKik7CnR5cGVkZWYgaW50ICgq
Z2V0d3JpdGVidWZmZXJwcm9jKSAoUHlPYmplY3QgKiwgaW50LCB2b2lkICoqKTsKdHlwZWRlZiBp
bnQgKCpnZXRzZWdjb3VudHByb2MpIChQeU9iamVjdCAqLCBpbnQgKik7CnR5cGVkZWYgaW50ICgq
Z2V0Y2hhcmJ1ZmZlcnByb2MpIChQeU9iamVjdCAqLCBpbnQsIGNvbnN0IGNoYXIgKiopOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGJpbmFyeWZ1bmMgbmJfYWRkOwogICAgICAgIGJpbmFyeWZ1
bmMgbmJfc3VidHJhY3Q7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9tdWx0aXBseTsKICAgICAgICBi
aW5hcnlmdW5jIG5iX2RpdmlkZTsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JlbWFpbmRlcjsKICAg
ICAgICBiaW5hcnlmdW5jIG5iX2Rpdm1vZDsKICAgICAgICB0ZXJuYXJ5ZnVuYyBuYl9wb3dlcjsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfbmVnYXRpdmU7CiAgICAgICAgdW5hcnlmdW5jIG5iX3Bvc2l0
aXZlOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9hYnNvbHV0ZTsKICAgICAgICBpbnF1aXJ5IG5iX25v
bnplcm87CiAgICAgICAgdW5hcnlmdW5jIG5iX2ludmVydDsKICAgICAgICBiaW5hcnlmdW5jIG5i
X2xzaGlmdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JzaGlmdDsKICAgICAgICBiaW5hcnlmdW5j
IG5iX2FuZDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3hvcjsKICAgICAgICBiaW5hcnlmdW5jIG5i
X29yOwogICAgICAgIGNvZXJjaW9uIG5iX2NvZXJjZTsKICAgICAgICB1bmFyeWZ1bmMgbmJfaW50
OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9sb25nOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9mbG9hdDsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfb2N0OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9oZXg7Cn0gUHlO
dW1iZXJNZXRob2RzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlucXVpcnkgc3FfbGVuZ3Ro
OwogICAgICAgIGJpbmFyeWZ1bmMgc3FfY29uY2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfcmVw
ZWF0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfaXRlbTsKICAgICAgICBpbnRpbnRhcmdmdW5jIHNx
X3NsaWNlOwogICAgICAgIGludG9iamFyZ3Byb2Mgc3FfYXNzX2l0ZW07CiAgICAgICAgaW50aW50
b2JqYXJncHJvYyBzcV9hc3Nfc2xpY2U7Cn0gUHlTZXF1ZW5jZU1ldGhvZHM7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW5xdWlyeSBtcF9sZW5ndGg7CiAgICAgICAgYmluYXJ5ZnVuYyBtcF9z
dWJzY3JpcHQ7CiAgICAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0Owp9IFB5TWFw
cGluZ01ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZ2V0cmVhZGJ1ZmZlcnByb2Mg
YmZfZ2V0cmVhZGJ1ZmZlcjsKICAgICAgICBnZXR3cml0ZWJ1ZmZlcnByb2MgYmZfZ2V0d3JpdGVi
dWZmZXI7CiAgICAgICAgZ2V0c2VnY291bnRwcm9jIGJmX2dldHNlZ2NvdW50OwogICAgICAgIGdl
dGNoYXJidWZmZXJwcm9jIGJmX2dldGNoYXJidWZmZXI7Cn0gUHlCdWZmZXJQcm9jczsKCgp0eXBl
ZGVmIHZvaWQgKCpkZXN0cnVjdG9yKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqcHJpbnRm
dW5jKSAoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwp0eXBlZGVmIFB5T2JqZWN0ICooKmdldGF0
dHJmdW5jKSAoUHlPYmplY3QgKiwgY2hhciAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpnZXRhdHRy
b2Z1bmMpIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpzZXRhdHRyZnVu
YykgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqc2V0YXR0
cm9mdW5jKSAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50
ICgqY21wZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICoo
KnJlcHJmdW5jKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgbG9uZyAoKmhhc2hmdW5jKSAoUHlPYmpl
Y3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBfdHlwZW9iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNu
dDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOyBpbnQgb2Jfc2l6ZTsKICAgICAgICBjaGFy
ICp0cF9uYW1lOwogICAgICAgIGludCB0cF9iYXNpY3NpemUsIHRwX2l0ZW1zaXplOwoKCgogICAg
ICAgIGRlc3RydWN0b3IgdHBfZGVhbGxvYzsKICAgICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAg
ICAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICAgICBzZXRhdHRyZnVuYyB0cF9zZXRh
dHRyOwogICAgICAgIGNtcGZ1bmMgdHBfY29tcGFyZTsKICAgICAgICByZXByZnVuYyB0cF9yZXBy
OwoKCgogICAgICAgIFB5TnVtYmVyTWV0aG9kcyAqdHBfYXNfbnVtYmVyOwogICAgICAgIFB5U2Vx
dWVuY2VNZXRob2RzICp0cF9hc19zZXF1ZW5jZTsKICAgICAgICBQeU1hcHBpbmdNZXRob2RzICp0
cF9hc19tYXBwaW5nOwoKCgogICAgICAgIGhhc2hmdW5jIHRwX2hhc2g7CiAgICAgICAgdGVybmFy
eWZ1bmMgdHBfY2FsbDsKICAgICAgICByZXByZnVuYyB0cF9zdHI7CiAgICAgICAgZ2V0YXR0cm9m
dW5jIHRwX2dldGF0dHJvOwogICAgICAgIHNldGF0dHJvZnVuYyB0cF9zZXRhdHRybzsKCgogICAg
ICAgIFB5QnVmZmVyUHJvY3MgKnRwX2FzX2J1ZmZlcjsKCgogICAgICAgIGxvbmcgdHBfZmxhZ3M7
CgogICAgICAgIGNoYXIgKnRwX2RvYzsKCgogICAgICAgIGxvbmcgdHBfeHh4NTsKICAgICAgICBs
b25nIHRwX3h4eDY7CiAgICAgICAgbG9uZyB0cF94eHg3OwogICAgICAgIGxvbmcgdHBfeHh4ODsK
CgoKCgoKCgp9IFB5VHlwZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUeXBlX1R5cGU7
CgoKCgpleHRlcm4gaW50IFB5T2JqZWN0X1ByaW50IChQeU9iamVjdCAqLCBGSUxFICosIGludCk7
CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X1JlcHIgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlP
YmplY3QgKiBQeU9iamVjdF9TdHIgKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0Nv
bXBhcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9iamVj
dF9HZXRBdHRyU3RyaW5nIChQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gaW50IFB5T2JqZWN0
X1NldEF0dHJTdHJpbmcgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CmV4dGVybiBp
bnQgUHlPYmplY3RfSGFzQXR0clN0cmluZyAoUHlPYmplY3QgKiwgY2hhciAqKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlPYmplY3RfR2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVy
biBpbnQgUHlPYmplY3RfU2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3Qg
Kik7CmV4dGVybiBpbnQgUHlPYmplY3RfSGFzQXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7
CmV4dGVybiBsb25nIFB5T2JqZWN0X0hhc2ggKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2Jq
ZWN0X0lzVHJ1ZSAoUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3RfTm90IChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNhbGxhYmxlX0NoZWNrIChQeU9iamVjdCAqKTsKZXh0ZXJuIGlu
dCBQeU51bWJlcl9Db2VyY2UgKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CmV4dGVybiBpbnQg
UHlOdW1iZXJfQ29lcmNlRXggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CgoKZXh0ZXJuIGlu
dCBQeV9SZXByRW50ZXIgKFB5T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeV9SZXByTGVhdmUgKFB5
T2JqZWN0ICopOwoKCiMgNDM0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgpleHRl
cm4gUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3Q7CgojIDcxICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L1B5dGhvbi5oIiAyCgojIDU4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamltcGwuaCIgMQpl
eHRlcm4gUHlPYmplY3QgKiBfUHlPYmplY3RfTmV3IChQeVR5cGVPYmplY3QgKik7CmV4dGVybiBQ
eVZhck9iamVjdCAqIF9QeU9iamVjdF9OZXdWYXIgKFB5VHlwZU9iamVjdCAqLCBpbnQpOwoKIyA3
MiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgMzggIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcHlkZWJ1Zy5oIiAxCmV4dGVybiBpbnQgUHlfRGVidWdGbGFnOwpleHRlcm4g
aW50IFB5X1ZlcmJvc2VGbGFnOwpleHRlcm4gaW50IFB5X0ludGVyYWN0aXZlRmxhZzsKZXh0ZXJu
IGludCBQeV9PcHRpbWl6ZUZsYWc7CmV4dGVybiBpbnQgUHlfTm9TaXRlRmxhZzsKZXh0ZXJuIGlu
dCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwpleHRlcm4gaW50IFB5X0Zyb3plbkZsYWc7CmV4
dGVybiBpbnQgUHlfVGFiY2hlY2tGbGFnOwoKdm9pZCBQeV9GYXRhbEVycm9yIChjaGFyICopOwoK
IyA3NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNTUgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvaW50b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBsb25nIG9i
X2l2YWw7Cn0gUHlJbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW50X1R5cGU7CgoK
CmV4dGVybiBQeU9iamVjdCAqIFB5SW50X0Zyb21Mb25nIChsb25nKTsKZXh0ZXJuIGxvbmcgUHlJ
bnRfQXNMb25nIChQeU9iamVjdCAqKTsKZXh0ZXJuIGxvbmcgUHlJbnRfR2V0TWF4ICh2b2lkKTsK
IyA4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9pbnRvYmplY3QuaCIKZXh0ZXJuIFB5SW50T2Jq
ZWN0IF9QeV9aZXJvU3RydWN0LCBfUHlfVHJ1ZVN0cnVjdDsKCiMgOTQgIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvaW50b2JqZWN0LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIFB5T1Nfc3RydG91bCAo
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gbG9uZyBQeU9TX3N0cnRvbCAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1
Y3QgX2xvbmdvYmplY3QgUHlMb25nT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUxvbmdf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Mb25nIChsb25nKTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlMb25nX0Zyb21VbnNpZ25lZExvbmcgKHVuc2lnbmVkIGxvbmcpOwpleHRl
cm4gUHlPYmplY3QgKiBQeUxvbmdfRnJvbURvdWJsZSAoZG91YmxlKTsKZXh0ZXJuIGxvbmcgUHlM
b25nX0FzTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFB5TG9uZ19Bc1Vu
c2lnbmVkTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiBkb3VibGUgUHlMb25nX0FzRG91YmxlIChQ
eU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Wb2lkUHRyICh2b2lkICop
OwpleHRlcm4gdm9pZCAqIFB5TG9uZ19Bc1ZvaWRQdHIgKFB5T2JqZWN0ICopOwoKCgoKCiMgMTIg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5o
IiAxIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk
ZS9zeXNsaW1pdHMuaCIgMSAzCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9saW1pdHMu
aCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwojIDM3ICIv
dXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0
cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoK
IyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xp
bWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYv
aW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9sb25nb2JqZWN0LmgiIDIKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25n
b2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcgKGxvbmcgbG9u
Zyk7CmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyAodW5zaWdu
ZWQgbG9uZyBsb25nKTsKZXh0ZXJuIGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZyAoUHlPYmpl
Y3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9u
ZyAoUHlPYmplY3QgKik7CgoKUHlPYmplY3QgKiBQeUxvbmdfRnJvbVN0cmluZyAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9mbG9hdG9iamVjdC5oIiAxCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7
CiAgICAgICAgZG91YmxlIG9iX2Z2YWw7Cn0gUHlGbG9hdE9iamVjdDsKCmV4dGVybiBQeVR5cGVP
YmplY3QgUHlGbG9hdF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZsb2F0X0Zyb21Eb3Vi
bGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgUHlGbG9hdF9Bc0RvdWJsZSAoUHlPYmplY3QgKik7
CgoKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgOSAiL3Vzci9p
bmNsdWRlL3B5dGhvbjEuNS9jb21wbGV4b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICBk
b3VibGUgcmVhbDsKICAgZG91YmxlIGltYWc7Cn0gUHlfY29tcGxleDsKCgoKCgoKCgoKCmV4dGVy
biBQeV9jb21wbGV4IF9QeV9jX3N1bSAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQ
eV9jb21wbGV4IF9QeV9jX2RpZmYgKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpleHRlcm4gUHlf
Y29tcGxleCBfUHlfY19uZWcgKFB5X2NvbXBsZXgpOwpleHRlcm4gUHlfY29tcGxleCBfUHlfY19w
cm9kIChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfcXVv
dCAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQeV9jb21wbGV4IF9QeV9jX3BvdyAo
UHlfY29tcGxleCwgUHlfY29tcGxleCk7CiMgMzggIi91c3IvaW5jbHVkZS9weXRob24xLjUvY29t
cGxleG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3Ry
dWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5X2NvbXBsZXggY3ZhbDsKfSBQeUNv
bXBsZXhPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5Q29tcGxleF9UeXBlOwoKCgpleHRl
cm4gUHlPYmplY3QgKiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4IChQeV9jb21wbGV4KTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlDb21wbGV4X0Zyb21Eb3VibGVzIChkb3VibGUgcmVhbCwgZG91YmxlIGlt
YWcpOwoKZXh0ZXJuIGRvdWJsZSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlIChQeU9iamVjdCAqb3Ap
OwpleHRlcm4gZG91YmxlIFB5Q29tcGxleF9JbWFnQXNEb3VibGUgKFB5T2JqZWN0ICpvcCk7CmV4
dGVybiBQeV9jb21wbGV4IFB5Q29tcGxleF9Bc0NDb21wbGV4IChQeU9iamVjdCAqb3ApOwoKIyA4
MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDIgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcmFuZ2VvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5UmFuZ2Vf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlSYW5nZV9OZXcgKGxvbmcsIGxvbmcsIGxvbmcs
IGludCk7CiMgODIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNjkgIi91
c3IvaW5jbHVkZS9weXRob24xLjUvc3RyaW5nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CgogICAgICAgIGxvbmcgb2Jfc2hhc2g7CgoKICAgICAgICBQeU9iamVjdCAqb2Jfc2lu
dGVybmVkOwoKICAgICAgICBjaGFyIG9iX3N2YWxbMV07Cn0gUHlTdHJpbmdPYmplY3Q7CgpleHRl
cm4gUHlUeXBlT2JqZWN0IFB5U3RyaW5nX1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5U3Ry
aW5nX0Zyb21TdHJpbmdBbmRTaXplIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBQeU9iamVj
dCAqIFB5U3RyaW5nX0Zyb21TdHJpbmcgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgUHlTdHJp
bmdfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlTdHJpbmdfQXNTdHJpbmcgKFB5
T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXQgKFB5T2JqZWN0ICoqLCBQeU9i
amVjdCAqKTsKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfQ29uY2F0QW5kRGVsIChQeU9iamVjdCAqKiwg
UHlPYmplY3QgKik7CmV4dGVybiBpbnQgX1B5U3RyaW5nX1Jlc2l6ZSAoUHlPYmplY3QgKiosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5U3RyaW5nX0Zvcm1hdCAoUHlPYmplY3QgKiwgUHlPYmpl
Y3QgKik7CgoKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSAoUHlPYmplY3QgKiop
OwpleHRlcm4gUHlPYmplY3QgKiBQeVN0cmluZ19JbnRlcm5Gcm9tU3RyaW5nIChjb25zdCBjaGFy
ICopOwojIDgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQzICIvdXNy
L2luY2x1ZGUvcHl0aG9uMS41L2J1ZmZlcm9iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlCdWZmZXJfVHlwZTsKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tT2JqZWN0
IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNldCwgaW50IHNpemUpOwpleHRlcm4gUHlPYmplY3Qg
KiBQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlT2JqZWN0IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNl
dCwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfRnJvbU1lbW9yeSAodm9p
ZCAqcHRyLCBpbnQgc2l6ZSk7CmV4dGVybiBQeU9iamVjdCAqIFB5QnVmZmVyX0Zyb21SZWFkV3Jp
dGVNZW1vcnkgKHZvaWQgKnB0ciwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZm
ZXJfTmV3IChpbnQgc2l6ZSk7CgojIDg0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5o
IiAyCgojIDU0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3R1cGxlb2JqZWN0LmgiIDEKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2Jf
dHlwZTsgaW50IG9iX3NpemU7CiAgICAgICAgUHlPYmplY3QgKm9iX2l0ZW1bMV07Cn0gUHlUdXBs
ZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUdXBsZV9UeXBlOwoKCgpleHRlcm4gUHlP
YmplY3QgKiBQeVR1cGxlX05ldyAoaW50IHNpemUpOwpleHRlcm4gaW50IFB5VHVwbGVfU2l6ZSAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0SXRlbSAoUHlPYmplY3Qg
KiwgaW50KTsKZXh0ZXJuIGludCBQeVR1cGxlX1NldEl0ZW0gKFB5T2JqZWN0ICosIGludCwgUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0U2xpY2UgKFB5T2JqZWN0ICos
IGludCwgaW50KTsKZXh0ZXJuIGludCBfUHlUdXBsZV9SZXNpemUgKFB5T2JqZWN0ICoqLCBpbnQs
IGludCk7CgoKIyA4NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA1NCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9saXN0b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CiAgICAgICAgUHlPYmplY3QgKipvYl9pdGVtOwp9IFB5TGlzdE9iamVjdDsKCmV4dGVy
biBQeVR5cGVPYmplY3QgUHlMaXN0X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9O
ZXcgKGludCBzaXplKTsKZXh0ZXJuIGludCBQeUxpc3RfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVy
biBQeU9iamVjdCAqIFB5TGlzdF9HZXRJdGVtIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4gaW50
IFB5TGlzdF9TZXRJdGVtIChQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9JbnNlcnQgKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQg
UHlMaXN0X0FwcGVuZCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TGlzdF9HZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IFB5TGlz
dF9TZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9Tb3J0IChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUxpc3RfUmV2ZXJzZSAoUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9Bc1R1cGxlIChQeU9iamVjdCAqKTsK
CgojIDg2ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2lu
Y2x1ZGUvcHl0aG9uMS41L2RpY3RvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5RGlj
dF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeURpY3RfTmV3ICh2b2lkKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlEaWN0X0dldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CmV4
dGVybiBpbnQgUHlEaWN0X1NldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlP
YmplY3QgKml0ZW0pOwpleHRlcm4gaW50IFB5RGljdF9EZWxJdGVtIChQeU9iamVjdCAqbXAsIFB5
T2JqZWN0ICprZXkpOwpleHRlcm4gdm9pZCBQeURpY3RfQ2xlYXIgKFB5T2JqZWN0ICptcCk7CmV4
dGVybiBpbnQgUHlEaWN0X05leHQKICAgICAgICAoUHlPYmplY3QgKm1wLCBpbnQgKnBvcywgUHlP
YmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwpleHRlcm4gUHlPYmplY3QgKiBQeURpY3Rf
S2V5cyAoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X1ZhbHVlcyAoUHlP
YmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0l0ZW1zIChQeU9iamVjdCAqbXAp
OwpleHRlcm4gaW50IFB5RGljdF9TaXplIChQeU9iamVjdCAqbXApOwoKZXh0ZXJuIFB5T2JqZWN0
ICogUHlEaWN0X0dldEl0ZW1TdHJpbmcgKFB5T2JqZWN0ICpkcCwgY2hhciAqa2V5KTsKZXh0ZXJu
IGludCBQeURpY3RfU2V0SXRlbVN0cmluZyAoUHlPYmplY3QgKmRwLCBjaGFyICprZXksIFB5T2Jq
ZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVsSXRlbVN0cmluZyAoUHlPYmplY3QgKmRw
LCBjaGFyICprZXkpOwoKIyA4NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tZXRob2RvYmplY3QuaCIgMQpleHRlcm4gUHlU
eXBlT2JqZWN0IFB5Q0Z1bmN0aW9uX1R5cGU7CgoKCnR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVu
Y3Rpb24pIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNG
dW5jdGlvbldpdGhLZXl3b3JkcykKICAgICAgICAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlP
YmplY3QgKik7CgpleHRlcm4gUHlDRnVuY3Rpb24gUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24gKFB5
T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUNGdW5jdGlvbl9HZXRTZWxmIChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNGdW5jdGlvbl9HZXRGbGFncyAoUHlPYmplY3QgKik7CgoKCgoK
CgoKCgpzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgICAgIGNoYXIgKm1sX25hbWU7CiAgICAgICAg
UHlDRnVuY3Rpb24gbWxfbWV0aDsKICAgICAgICBpbnQgbWxfZmxhZ3M7CiAgICAgICAgY2hhciAq
bWxfZG9jOwp9Owp0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKCmV4dGVy
biBQeU9iamVjdCAqIFB5X0ZpbmRNZXRob2QKICAgICAgICAoUHlNZXRob2REZWZbXSwgUHlPYmpl
Y3QgKiwgY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqIFB5Q0Z1bmN0aW9uX05ldwogICAgICAg
IChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBQeU1ldGhv
ZENoYWluIHsKICAgICAgICBQeU1ldGhvZERlZiAqbWV0aG9kczsKICAgICAgICBzdHJ1Y3QgUHlN
ZXRob2RDaGFpbiAqbGluazsKfSBQeU1ldGhvZENoYWluOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlf
RmluZE1ldGhvZEluQ2hhaW4KICAgICAgICAoUHlNZXRob2RDaGFpbiAqLCBQeU9iamVjdCAqLCBj
aGFyICopOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBf
dHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU1ldGhvZERlZiAqbV9tbDsKICAgICAgICBQ
eU9iamVjdCAqbV9zZWxmOwp9IFB5Q0Z1bmN0aW9uT2JqZWN0OwoKIyA4OCAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tb2R1
bGVvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGU7CgoKCmV4dGVy
biBQeU9iamVjdCAqIFB5TW9kdWxlX05ldyAoY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlN
b2R1bGVfR2V0RGljdCAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0TmFt
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0RmlsZW5hbWUgKFB5T2Jq
ZWN0ICopOwpleHRlcm4gdm9pZCBfUHlNb2R1bGVfQ2xlYXIgKFB5T2JqZWN0ICopOwoKIyA4OSAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9mdW5jb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9y
ZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqZnVu
Y19jb2RlOwogICAgICAgIFB5T2JqZWN0ICpmdW5jX2dsb2JhbHM7CiAgICAgICAgUHlPYmplY3Qg
KmZ1bmNfZGVmYXVsdHM7CiAgICAgICAgUHlPYmplY3QgKmZ1bmNfZG9jOwogICAgICAgIFB5T2Jq
ZWN0ICpmdW5jX25hbWU7Cn0gUHlGdW5jdGlvbk9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlGdW5jdGlvbl9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZ1bmN0aW9uX05ldyAoUHlP
YmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0Q29k
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0R2xvYmFscyAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0RGVmYXVsdHMgKFB5
T2JqZWN0ICopOwpleHRlcm4gaW50IFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICopOwoKCgojIDkwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAy
CgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiIDEKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlw
ZTsKICAgICAgICBQeU9iamVjdCAqY2xfYmFzZXM7CiAgICAgICAgUHlPYmplY3QgKmNsX2RpY3Q7
CiAgICAgICAgUHlPYmplY3QgKmNsX25hbWU7CgogICAgICAgIFB5T2JqZWN0ICpjbF9nZXRhdHRy
OwogICAgICAgIFB5T2JqZWN0ICpjbF9zZXRhdHRyOwogICAgICAgIFB5T2JqZWN0ICpjbF9kZWxh
dHRyOwp9IFB5Q2xhc3NPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3Jl
ZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5Q2xhc3NPYmplY3Qg
KmluX2NsYXNzOwogICAgICAgIFB5T2JqZWN0ICppbl9kaWN0Owp9IFB5SW5zdGFuY2VPYmplY3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq
ZWN0ICpvYl90eXBlOwogICAgICAgIFB5T2JqZWN0ICppbV9mdW5jOwogICAgICAgIFB5T2JqZWN0
ICppbV9zZWxmOwogICAgICAgIFB5T2JqZWN0ICppbV9jbGFzczsKfSBQeU1ldGhvZE9iamVjdDsK
CmV4dGVybiBQeVR5cGVPYmplY3QgUHlDbGFzc19UeXBlLCBQeUluc3RhbmNlX1R5cGUsIFB5TWV0
aG9kX1R5cGU7CgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlDbGFzc19OZXcgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUluc3RhbmNlX05l
dyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TWV0aG9kX05ldyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRl
cm4gUHlPYmplY3QgKiBQeU1ldGhvZF9GdW5jdGlvbiAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9i
amVjdCAqIFB5TWV0aG9kX1NlbGYgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU1l
dGhvZF9DbGFzcyAoUHlPYmplY3QgKik7CgoKCgoKCgoKCgpleHRlcm4gaW50IFB5Q2xhc3NfSXNT
dWJjbGFzcyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRlcm4gUHlPYmplY3QgKiBQeUlu
c3RhbmNlX0RvQmluT3AKCgogICAgICAgIChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAojIDk0ICIv
dXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiCiAgICAgICAgICAgICAgICAgIGNo
YXIgKiwgY2hhciAqLAojIDk0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0Lmgi
CiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICogKCopIChQeU9iamVjdCAqLCBQeU9iamVjdCAq
KSApOwoKIyA5MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9maWxlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5VHlwZU9iamVjdCBQ
eUZpbGVfVHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX0Zyb21TdHJpbmcgKGNoYXIg
KiwgY2hhciAqKTsKZXh0ZXJuIHZvaWQgUHlGaWxlX1NldEJ1ZlNpemUgKFB5T2JqZWN0ICosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9Gcm9tRmlsZQogICAgICAgIChGSUxFICosIGNo
YXIgKiwgY2hhciAqLCBpbnQgKCopKEZJTEUgKikpOwpleHRlcm4gRklMRSAqIFB5RmlsZV9Bc0Zp
bGUgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUZpbGVfTmFtZSAoUHlPYmplY3Qg
Kik7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9HZXRMaW5lIChQeU9iamVjdCAqLCBpbnQpOwpl
eHRlcm4gaW50IFB5RmlsZV9Xcml0ZU9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgaW50
KTsKZXh0ZXJuIGludCBQeUZpbGVfU29mdFNwYWNlIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4g
aW50IFB5RmlsZV9Xcml0ZVN0cmluZyAoY2hhciAqLCBQeU9iamVjdCAqKTsKCiMgOTIgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDcgIi91c3IvaW5jbHVkZS9weXRob24x
LjUvY29iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDT2JqZWN0X1R5cGU7CgojIDU3
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NvYmplY3QuaCIKZXh0ZXJuIFB5T2JqZWN0ICoKUHlD
T2JqZWN0X0Zyb21Wb2lkUHRyICh2b2lkICpjb2JqLCB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqKSk7
CgoKCgoKCgpleHRlcm4gUHlPYmplY3QgKgpQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjICh2
b2lkICpjb2JqLCB2b2lkICpkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqLHZvaWQqKSk7CgoKZXh0ZXJuIHZvaWQgKgpQeUNP
YmplY3RfQXNWb2lkUHRyIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9H
ZXREZXNjIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9JbXBvcnQgKGNo
YXIgKm1vZHVsZV9uYW1lLCBjaGFyICpjb2JqZWN0X25hbWUpOwoKIyA5MyAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS90cmFj
ZWJhY2suaCIgMQpzdHJ1Y3QgX2ZyYW1lOwoKaW50IFB5VHJhY2VCYWNrX0hlcmUgKHN0cnVjdCBf
ZnJhbWUgKik7ClB5T2JqZWN0ICogUHlUcmFjZUJhY2tfRmV0Y2ggKHZvaWQpOwppbnQgUHlUcmFj
ZUJhY2tfU3RvcmUgKFB5T2JqZWN0ICopOwppbnQgUHlUcmFjZUJhY2tfUHJpbnQgKFB5T2JqZWN0
ICosIFB5T2JqZWN0ICopOwoKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUcmFjZUJhY2tfVHlwZTsK
IyA5NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA5ICIvdXNyL2luY2x1
ZGUvcHl0aG9uMS41L3NsaWNlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5T2JqZWN0IF9QeV9FbGxpcHNp
c09iamVjdDsKCiMgMjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvc2xpY2VvYmplY3QuaCIKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq
b2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqc3RhcnQsICpzdG9wLCAqc3RlcDsKfSBQeVNsaWNl
T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVNsaWNlX1R5cGU7CgoKClB5T2JqZWN0ICog
UHlTbGljZV9OZXcgKAogICAgICAgIFB5T2JqZWN0KiBzdGFydCwgUHlPYmplY3QqIHN0b3AsIFB5
T2JqZWN0KiBzdGVwKTsKaW50IFB5U2xpY2VfR2V0SW5kaWNlcyAoCiAgICAgICAgUHlTbGljZU9i
amVjdCAqciwgaW50IGxlbmd0aCwgaW50ICpzdGFydCwgaW50ICpzdG9wLCBpbnQgKnN0ZXApOwoK
IyA5NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDAgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvcHllcnJvcnMuaCIgMQp2b2lkIFB5RXJyX1NldE5vbmUgKFB5T2JqZWN0
ICopOwp2b2lkIFB5RXJyX1NldE9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnZvaWQg
UHlFcnJfU2V0U3RyaW5nIChQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwpQeU9iamVjdCAqIFB5
RXJyX09jY3VycmVkICh2b2lkKTsKdm9pZCBQeUVycl9DbGVhciAodm9pZCk7CnZvaWQgUHlFcnJf
RmV0Y2ggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOwp2b2lkIFB5RXJy
X1Jlc3RvcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKCmludCBQeUVy
cl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwppbnQgUHlF
cnJfRXhjZXB0aW9uTWF0Y2hlcyAoUHlPYmplY3QgKik7CnZvaWQgUHlFcnJfTm9ybWFsaXplRXhj
ZXB0aW9uIChQeU9iamVjdCoqLCBQeU9iamVjdCoqLCBQeU9iamVjdCoqKTsKCgoKCmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0V4Y2VwdGlvbjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3RhbmRh
cmRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpleHRlcm4g
UHlPYmplY3QgKiBQeUV4Y19Mb29rdXBFcnJvcjsKCmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Fz
c2VydGlvbkVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKZXh0
ZXJuIFB5T2JqZWN0ICogUHlFeGNfRU9GRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Zs
b2F0aW5nUG9pbnRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfRW52aXJvbm1lbnRFcnJv
cjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSU9FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
eGNfT1NFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSW1wb3J0RXJyb3I7CmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0luZGV4RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0tleUVy
cm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19LZXlib2FyZEludGVycnVwdDsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlFeGNfTWVtb3J5RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX05hbWVF
cnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfT3ZlcmZsb3dFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfUnVudGltZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19Ob3RJbXBs
ZW1lbnRlZEVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeW50YXhFcnJvcjsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlFeGNfU3lzdGVtRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1N5
c3RlbUV4aXQ7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1R5cGVFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfVmFsdWVFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfWmVyb0Rpdmlz
aW9uRXJyb3I7CgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19NZW1vcnlFcnJvckluc3Q7CgoKCgpl
eHRlcm4gaW50IFB5RXJyX0JhZEFyZ3VtZW50ICh2b2lkKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
cnJfTm9NZW1vcnkgKHZvaWQpOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm8g
KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmls
ZW5hbWUgKFB5T2JqZWN0ICosIGNoYXIgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX0Zvcm1h
dCAoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIHZvaWQgUHlFcnJfQmFk
SW50ZXJuYWxDYWxsICh2b2lkKTsKCgpQeU9iamVjdCAqIFB5RXJyX05ld0V4Y2VwdGlvbiAoY2hh
ciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFB5T2JqZWN0ICpkaWN0KTsKCgpleHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyAo
dm9pZCk7CmV4dGVybiB2b2lkIFB5RXJyX1NldEludGVycnVwdCAodm9pZCk7CgoKIyA5NyAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyAxMDkgIi91c3IvaW5jbHVkZS9weXRo
b24xLjUvbXltYWxsb2MuaCIgMQpleHRlcm4gdm9pZCAqIFB5X01hbGxvYyAoc2l6ZV90KTsKZXh0
ZXJuIHZvaWQgKiBQeV9SZWFsbG9jICh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIFB5X0Zy
ZWUgKHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgKiBQeU1lbV9NYWxsb2MgKHNpemVfdCk7CmV4dGVy
biB2b2lkICogUHlNZW1fUmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBQeU1l
bV9GcmVlICh2b2lkICopOwoKIyA5OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIg
MgoKCiMgNDMgIi91c3IvaW5jbHVkZS9weXRob24xLjUvcHlzdGF0ZS5oIiAxCnN0cnVjdCBfdHM7
CnN0cnVjdCBfaXM7Cgp0eXBlZGVmIHN0cnVjdCBfaXMgewoKICAgICAgICBzdHJ1Y3QgX2lzICpu
ZXh0OwogICAgICAgIHN0cnVjdCBfdHMgKnRzdGF0ZV9oZWFkOwoKICAgICAgICBQeU9iamVjdCAq
bW9kdWxlczsKICAgICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICAgICBQeU9iamVjdCAqYnVp
bHRpbnM7CgogICAgICAgIGludCBjaGVja2ludGVydmFsOwoKfSBQeUludGVycHJldGVyU3RhdGU7
CgoKCgpzdHJ1Y3QgX2ZyYW1lOwoKdHlwZWRlZiBzdHJ1Y3QgX3RzIHsKCiAgICAgICAgc3RydWN0
IF90cyAqbmV4dDsKICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKCiAgICAgICAg
c3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICAg
ICBpbnQgdGlja2VyOwogICAgICAgIGludCB0cmFjaW5nOwoKICAgICAgICBQeU9iamVjdCAqc3lz
X3Byb2ZpbGVmdW5jOwogICAgICAgIFB5T2JqZWN0ICpzeXNfdHJhY2VmdW5jOwoKICAgICAgICBQ
eU9iamVjdCAqY3VyZXhjX3R5cGU7CiAgICAgICAgUHlPYmplY3QgKmN1cmV4Y192YWx1ZTsKICAg
ICAgICBQeU9iamVjdCAqY3VyZXhjX3RyYWNlYmFjazsKCiAgICAgICAgUHlPYmplY3QgKmV4Y190
eXBlOwogICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgICAgUHlPYmplY3QgKmV4Y190
cmFjZWJhY2s7CgogICAgICAgIFB5T2JqZWN0ICpkaWN0OwoKCgp9IFB5VGhyZWFkU3RhdGU7CgoK
UHlJbnRlcnByZXRlclN0YXRlICogUHlJbnRlcnByZXRlclN0YXRlX05ldyAodm9pZCk7CnZvaWQg
UHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlJ
bnRlcnByZXRlclN0YXRlX0RlbGV0ZSAoUHlJbnRlcnByZXRlclN0YXRlICopOwoKUHlUaHJlYWRT
dGF0ZSAqIFB5VGhyZWFkU