public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: debug/4461: Invalid dawrf2 debug code
@ 2002-02-21  4:57 jakub
  0 siblings, 0 replies; 2+ messages in thread
From: jakub @ 2002-02-21  4:57 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, schwab

Synopsis: Invalid dawrf2 debug code

State-Changed-From-To: open->closed
State-Changed-By: jakub
State-Changed-When: Thu Feb 21 04:57:08 2002
State-Changed-Why:
    Fixed.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4461


^ permalink raw reply	[flat|nested] 2+ messages in thread

* debug/4461: Invalid dawrf2 debug code
@ 2001-10-03 11:56 schwab
  0 siblings, 0 replies; 2+ messages in thread
From: schwab @ 2001-10-03 11:56 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4461
>Category:       debug
>Synopsis:       Invalid dawrf2 debug code
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 03 11:56:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     schwab@suse.de
>Release:        3.0.2 20011002 (prerelease)
>Organization:
>Environment:
System: Linux sykes 2.4.7-SMP #1 SMP Fri Sep 7 12:53:37 GMT 2001 ia64 unknown
Architecture: ia64

host: ia64-unknown-linux-gnu
build: ia64-unknown-linux-gnu
target: ia64-unknown-linux-gnu
configured with: /cvs/branch/gcc/configure --prefix=/usr/local/ia64-linux --enable-shared --enable-threads ia64-linux
>Description:
The debug code references a label that is never defined.
>How-To-Repeat:
$ gcc -O2 -S -g test-ldouble.i
$ grep LC42 test-ldouble.s
	data8.ua	.LC42
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="test-ldouble.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test-ldouble.i"

IyAxICJ0ZXN0LWxkb3VibGUuYyIKIyAxICIuLi9pbmNsdWRlL2xpYmMtc3ltYm9scy5oIiAxCiMg
NTQgIi4uL2luY2x1ZGUvbGliYy1zeW1ib2xzLmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJ
TEQvZ2xpYmMtMi4yLjQvY2MvY29uZmlnLmgiIDEKIyA1NSAiLi4vaW5jbHVkZS9saWJjLXN5bWJv
bHMuaCIgMgojIDIgInRlc3QtbGRvdWJsZS5jIiAyCiMgMzQgInRlc3QtbGRvdWJsZS5jIgojIDEg
Ii91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgvbGlibS10ZXN0LmMi
IDEKIyAxMTggIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgvbGli
bS10ZXN0LmMiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvZ2xpYmMtMi4yLjQvY2MvbWF0
aC9saWJtLXRlc3QtdWxwcy5oIiAxCiMgMTE5ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9nbGli
Yy0yLjIuNC9jYy9tYXRoL2xpYm0tdGVzdC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9jb21wbGV4Lmgi
IDEKIyAxICIuLi9tYXRoL2NvbXBsZXguaCIgMQojIDI2ICIuLi9tYXRoL2NvbXBsZXguaCIKIyAx
ICIuLi9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEKIyAyODMgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIK
IyAxICIuLi9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxCiMgMSAiLi4vbWlzYy9zeXMvY2RlZnMuaCIg
MQojIDIgIi4uL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIKIyAyODQgIi4uL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMgojIDI3ICIuLi9tYXRoL2NvbXBsZXguaCIgMgoKCiMgMSAiLi4vc3lzZGVwcy9pYTY0
L2ZwdS9iaXRzL21hdGhkZWYuaCIgMQojIDMwICIuLi9tYXRoL2NvbXBsZXguaCIgMgojIDY3ICIu
Li9tYXRoL2NvbXBsZXguaCIKIyAxICIuLi9pbmNsdWRlL2JpdHMvY21hdGhjYWxscy5oIiAxCiMg
MSAiLi4vbWF0aC9iaXRzL2NtYXRoY2FsbHMuaCIgMQojIDU0ICIuLi9tYXRoL2JpdHMvY21hdGhj
YWxscy5oIgpleHRlcm4gZG91YmxlIF9Db21wbGV4IGNhY29zIChkb3VibGUgX0NvbXBsZXggX196
KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jYWNvcyAoZG91YmxlIF9Db21wbGV4IF9feikg
OwoKZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBjYXNpbiAoZG91YmxlIF9Db21wbGV4IF9feikgOyBl
eHRlcm4gZG91YmxlIF9Db21wbGV4IF9fY2FzaW4gKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCmV4
dGVybiBkb3VibGUgX0NvbXBsZXggY2F0YW4gKGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJu
IGRvdWJsZSBfQ29tcGxleCBfX2NhdGFuIChkb3VibGUgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJu
IGRvdWJsZSBfQ29tcGxleCBjY29zIChkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3Vi
bGUgX0NvbXBsZXggX19jY29zIChkb3VibGUgX0NvbXBsZXggX196KSA7CgpleHRlcm4gZG91Ymxl
IF9Db21wbGV4IGNzaW4gKGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfQ29t
cGxleCBfX2NzaW4gKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCmV4dGVybiBkb3VibGUgX0NvbXBs
ZXggY3RhbiAoZG91YmxlIF9Db21wbGV4IF9feikgOyBleHRlcm4gZG91YmxlIF9Db21wbGV4IF9f
Y3RhbiAoZG91YmxlIF9Db21wbGV4IF9feikgOwoKCgoKCmV4dGVybiBkb3VibGUgX0NvbXBsZXgg
Y2Fjb3NoIChkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19j
YWNvc2ggKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCmV4dGVybiBkb3VibGUgX0NvbXBsZXggY2Fz
aW5oIChkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jYXNp
bmggKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCmV4dGVybiBkb3VibGUgX0NvbXBsZXggY2F0YW5o
IChkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jYXRhbmgg
KGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgpleHRlcm4gZG91YmxlIF9Db21wbGV4IGNjb3NoIChk
b3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jY29zaCAoZG91
YmxlIF9Db21wbGV4IF9feikgOwoKZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBjc2luaCAoZG91Ymxl
IF9Db21wbGV4IF9feikgOyBleHRlcm4gZG91YmxlIF9Db21wbGV4IF9fY3NpbmggKGRvdWJsZSBf
Q29tcGxleCBfX3opIDsKCmV4dGVybiBkb3VibGUgX0NvbXBsZXggY3RhbmggKGRvdWJsZSBfQ29t
cGxleCBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBfX2N0YW5oIChkb3VibGUgX0NvbXBs
ZXggX196KSA7CgoKCgoKZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBjZXhwIChkb3VibGUgX0NvbXBs
ZXggX196KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jZXhwIChkb3VibGUgX0NvbXBsZXgg
X196KSA7CgoKZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBjbG9nIChkb3VibGUgX0NvbXBsZXggX196
KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jbG9nIChkb3VibGUgX0NvbXBsZXggX196KSA7
CgoKCgpleHRlcm4gZG91YmxlIF9Db21wbGV4IGNsb2cxMCAoZG91YmxlIF9Db21wbGV4IF9feikg
OyBleHRlcm4gZG91YmxlIF9Db21wbGV4IF9fY2xvZzEwIChkb3VibGUgX0NvbXBsZXggX196KSA7
CgoKCgoKZXh0ZXJuIGRvdWJsZSBfQ29tcGxleCBjcG93IChkb3VibGUgX0NvbXBsZXggX194LCBk
b3VibGUgX0NvbXBsZXggX195KSA7IGV4dGVybiBkb3VibGUgX0NvbXBsZXggX19jcG93IChkb3Vi
bGUgX0NvbXBsZXggX194LCBkb3VibGUgX0NvbXBsZXggX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBf
Q29tcGxleCBjc3FydCAoZG91YmxlIF9Db21wbGV4IF9feikgOyBleHRlcm4gZG91YmxlIF9Db21w
bGV4IF9fY3NxcnQgKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgoKCgpleHRlcm4gZG91YmxlIGNh
YnMgKGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfX2NhYnMgKGRvdWJsZSBf
Q29tcGxleCBfX3opIDsKCgpleHRlcm4gZG91YmxlIGNhcmcgKGRvdWJsZSBfQ29tcGxleCBfX3op
IDsgZXh0ZXJuIGRvdWJsZSBfX2NhcmcgKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgpleHRlcm4g
ZG91YmxlIF9Db21wbGV4IGNvbmogKGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGRvdWJs
ZSBfQ29tcGxleCBfX2NvbmogKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgpleHRlcm4gZG91Ymxl
IF9Db21wbGV4IGNwcm9qIChkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBkb3VibGUgX0Nv
bXBsZXggX19jcHJvaiAoZG91YmxlIF9Db21wbGV4IF9feikgOwoKCgoKCmV4dGVybiBkb3VibGUg
Y2ltYWcgKGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfX2NpbWFnIChkb3Vi
bGUgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJuIGRvdWJsZSBjcmVhbCAoZG91YmxlIF9Db21wbGV4
IF9feikgOyBleHRlcm4gZG91YmxlIF9fY3JlYWwgKGRvdWJsZSBfQ29tcGxleCBfX3opIDsKIyAy
ICIuLi9pbmNsdWRlL2JpdHMvY21hdGhjYWxscy5oIiAyCiMgNjggIi4uL21hdGgvY29tcGxleC5o
IiAyCiMgODEgIi4uL21hdGgvY29tcGxleC5oIgojIDEgIi4uL2luY2x1ZGUvYml0cy9jbWF0aGNh
bGxzLmgiIDEKIyAxICIuLi9tYXRoL2JpdHMvY21hdGhjYWxscy5oIiAxCiMgNTQgIi4uL21hdGgv
Yml0cy9jbWF0aGNhbGxzLmgiCmV4dGVybiBmbG9hdCBfQ29tcGxleCBjYWNvc2YgKGZsb2F0IF9D
b21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19jYWNvc2YgKGZsb2F0IF9Db21w
bGV4IF9feikgOwoKZXh0ZXJuIGZsb2F0IF9Db21wbGV4IGNhc2luZiAoZmxvYXQgX0NvbXBsZXgg
X196KSA7IGV4dGVybiBmbG9hdCBfQ29tcGxleCBfX2Nhc2luZiAoZmxvYXQgX0NvbXBsZXggX196
KSA7CgpleHRlcm4gZmxvYXQgX0NvbXBsZXggY2F0YW5mIChmbG9hdCBfQ29tcGxleCBfX3opIDsg
ZXh0ZXJuIGZsb2F0IF9Db21wbGV4IF9fY2F0YW5mIChmbG9hdCBfQ29tcGxleCBfX3opIDsKCgpl
eHRlcm4gZmxvYXQgX0NvbXBsZXggY2Nvc2YgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4g
ZmxvYXQgX0NvbXBsZXggX19jY29zZiAoZmxvYXQgX0NvbXBsZXggX196KSA7CgpleHRlcm4gZmxv
YXQgX0NvbXBsZXggY3NpbmYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0Nv
bXBsZXggX19jc2luZiAoZmxvYXQgX0NvbXBsZXggX196KSA7CgpleHRlcm4gZmxvYXQgX0NvbXBs
ZXggY3RhbmYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19j
dGFuZiAoZmxvYXQgX0NvbXBsZXggX196KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IF9Db21wbGV4IGNh
Y29zaGYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19jYWNv
c2hmIChmbG9hdCBfQ29tcGxleCBfX3opIDsKCmV4dGVybiBmbG9hdCBfQ29tcGxleCBjYXNpbmhm
IChmbG9hdCBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGZsb2F0IF9Db21wbGV4IF9fY2FzaW5oZiAo
ZmxvYXQgX0NvbXBsZXggX196KSA7CgpleHRlcm4gZmxvYXQgX0NvbXBsZXggY2F0YW5oZiAoZmxv
YXQgX0NvbXBsZXggX196KSA7IGV4dGVybiBmbG9hdCBfQ29tcGxleCBfX2NhdGFuaGYgKGZsb2F0
IF9Db21wbGV4IF9feikgOwoKCmV4dGVybiBmbG9hdCBfQ29tcGxleCBjY29zaGYgKGZsb2F0IF9D
b21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19jY29zaGYgKGZsb2F0IF9Db21w
bGV4IF9feikgOwoKZXh0ZXJuIGZsb2F0IF9Db21wbGV4IGNzaW5oZiAoZmxvYXQgX0NvbXBsZXgg
X196KSA7IGV4dGVybiBmbG9hdCBfQ29tcGxleCBfX2NzaW5oZiAoZmxvYXQgX0NvbXBsZXggX196
KSA7CgpleHRlcm4gZmxvYXQgX0NvbXBsZXggY3RhbmhmIChmbG9hdCBfQ29tcGxleCBfX3opIDsg
ZXh0ZXJuIGZsb2F0IF9Db21wbGV4IF9fY3RhbmhmIChmbG9hdCBfQ29tcGxleCBfX3opIDsKCgoK
CgpleHRlcm4gZmxvYXQgX0NvbXBsZXggY2V4cGYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRl
cm4gZmxvYXQgX0NvbXBsZXggX19jZXhwZiAoZmxvYXQgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJu
IGZsb2F0IF9Db21wbGV4IGNsb2dmIChmbG9hdCBfQ29tcGxleCBfX3opIDsgZXh0ZXJuIGZsb2F0
IF9Db21wbGV4IF9fY2xvZ2YgKGZsb2F0IF9Db21wbGV4IF9feikgOwoKCgoKZXh0ZXJuIGZsb2F0
IF9Db21wbGV4IGNsb2cxMGYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0Nv
bXBsZXggX19jbG9nMTBmIChmbG9hdCBfQ29tcGxleCBfX3opIDsKCgoKCgpleHRlcm4gZmxvYXQg
X0NvbXBsZXggY3Bvd2YgKGZsb2F0IF9Db21wbGV4IF9feCwgZmxvYXQgX0NvbXBsZXggX195KSA7
IGV4dGVybiBmbG9hdCBfQ29tcGxleCBfX2Nwb3dmIChmbG9hdCBfQ29tcGxleCBfX3gsIGZsb2F0
IF9Db21wbGV4IF9feSkgOwoKCmV4dGVybiBmbG9hdCBfQ29tcGxleCBjc3FydGYgKGZsb2F0IF9D
b21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19jc3FydGYgKGZsb2F0IF9Db21w
bGV4IF9feikgOwoKCgoKCmV4dGVybiBmbG9hdCBjYWJzZiAoZmxvYXQgX0NvbXBsZXggX196KSA7
IGV4dGVybiBmbG9hdCBfX2NhYnNmIChmbG9hdCBfQ29tcGxleCBfX3opIDsKCgpleHRlcm4gZmxv
YXQgY2FyZ2YgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX19jYXJnZiAoZmxv
YXQgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJuIGZsb2F0IF9Db21wbGV4IGNvbmpmIChmbG9hdCBf
Q29tcGxleCBfX3opIDsgZXh0ZXJuIGZsb2F0IF9Db21wbGV4IF9fY29uamYgKGZsb2F0IF9Db21w
bGV4IF9feikgOwoKCmV4dGVybiBmbG9hdCBfQ29tcGxleCBjcHJvamYgKGZsb2F0IF9Db21wbGV4
IF9feikgOyBleHRlcm4gZmxvYXQgX0NvbXBsZXggX19jcHJvamYgKGZsb2F0IF9Db21wbGV4IF9f
eikgOwoKCgoKCmV4dGVybiBmbG9hdCBjaW1hZ2YgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRl
cm4gZmxvYXQgX19jaW1hZ2YgKGZsb2F0IF9Db21wbGV4IF9feikgOwoKCmV4dGVybiBmbG9hdCBj
cmVhbGYgKGZsb2F0IF9Db21wbGV4IF9feikgOyBleHRlcm4gZmxvYXQgX19jcmVhbGYgKGZsb2F0
IF9Db21wbGV4IF9feikgOwojIDIgIi4uL2luY2x1ZGUvYml0cy9jbWF0aGNhbGxzLmgiIDIKIyA4
MiAiLi4vbWF0aC9jb21wbGV4LmgiIDIKIyA5NyAiLi4vbWF0aC9jb21wbGV4LmgiCiMgMSAiLi4v
aW5jbHVkZS9iaXRzL2NtYXRoY2FsbHMuaCIgMQojIDEgIi4uL21hdGgvYml0cy9jbWF0aGNhbGxz
LmgiIDEKIyA1NCAiLi4vbWF0aC9iaXRzL2NtYXRoY2FsbHMuaCIKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9Db21wbGV4IGNhY29zbCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfQ29tcGxleCBfX2NhY29zbCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggY2FzaW5sIChsb25nIGRvdWJsZSBfQ29tcGxleCBf
X3opIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9Db21wbGV4IF9fY2FzaW5sIChsb25nIGRvdWJsZSBf
Q29tcGxleCBfX3opIDsKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjYXRhbmwgKGxvbmcg
ZG91YmxlIF9Db21wbGV4IF9feikgOyBleHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggX19jYXRh
bmwgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29t
cGxleCBjY29zbCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfQ29tcGxleCBfX2Njb3NsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCmV4dGVybiBs
b25nIGRvdWJsZSBfQ29tcGxleCBjc2lubCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBfX2NzaW5sIChsb25nIGRvdWJsZSBfQ29tcGxleCBf
X3opIDsKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjdGFubCAobG9uZyBkb3VibGUgX0Nv
bXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBfX2N0YW5sIChsb25nIGRv
dWJsZSBfQ29tcGxleCBfX3opIDsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggY2Fj
b3NobCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29t
cGxleCBfX2NhY29zaGwgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikgOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIF9Db21wbGV4IGNhc2luaGwgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikgOyBleHRl
cm4gbG9uZyBkb3VibGUgX0NvbXBsZXggX19jYXNpbmhsIChsb25nIGRvdWJsZSBfQ29tcGxleCBf
X3opIDsKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjYXRhbmhsIChsb25nIGRvdWJsZSBf
Q29tcGxleCBfX3opIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9Db21wbGV4IF9fY2F0YW5obCAobG9u
ZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIF9Db21wbGV4IGNj
b3NobCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29t
cGxleCBfX2Njb3NobCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgpleHRlcm4gbG9uZyBk
b3VibGUgX0NvbXBsZXggY3NpbmhsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9Db21wbGV4IF9fY3NpbmhsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3op
IDsKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjdGFuaGwgKGxvbmcgZG91YmxlIF9Db21w
bGV4IF9feikgOyBleHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggX19jdGFuaGwgKGxvbmcgZG91
YmxlIF9Db21wbGV4IF9feikgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjZXhw
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxl
eCBfX2NleHBsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgX0NvbXBsZXggY2xvZ2wgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX0NvbXBsZXggX19jbG9nbCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggY2xvZzEwbCAobG9uZyBkb3VibGUgX0NvbXBs
ZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBfX2Nsb2cxMGwgKGxvbmcgZG91
YmxlIF9Db21wbGV4IF9feikgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBjcG93
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX194LCBsb25nIGRvdWJsZSBfQ29tcGxleCBfX3kpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9Db21wbGV4IF9fY3Bvd2wgKGxvbmcgZG91YmxlIF9Db21wbGV4
IF9feCwgbG9uZyBkb3VibGUgX0NvbXBsZXggX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIF9D
b21wbGV4IGNzcXJ0bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfQ29tcGxleCBfX2NzcXJ0bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGNhYnNsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3opIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fY2Fic2wgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikgOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBjYXJnbCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2NhcmdsIChsb25nIGRvdWJsZSBfQ29tcGxleCBfX3opIDsKCgpleHRl
cm4gbG9uZyBkb3VibGUgX0NvbXBsZXggY29uamwgKGxvbmcgZG91YmxlIF9Db21wbGV4IF9feikg
OyBleHRlcm4gbG9uZyBkb3VibGUgX0NvbXBsZXggX19jb25qbCAobG9uZyBkb3VibGUgX0NvbXBs
ZXggX196KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIF9Db21wbGV4IGNwcm9qbCAobG9uZyBkb3Vi
bGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfQ29tcGxleCBfX2Nwcm9qbCAo
bG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNpbWFn
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NpbWFn
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNyZWFs
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NyZWFs
bCAobG9uZyBkb3VibGUgX0NvbXBsZXggX196KSA7CiMgMiAiLi4vaW5jbHVkZS9iaXRzL2NtYXRo
Y2FsbHMuaCIgMgojIDk4ICIuLi9tYXRoL2NvbXBsZXguaCIgMgojIDIgIi4uL2luY2x1ZGUvY29t
cGxleC5oIiAyCiMgMTIwICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9nbGliYy0yLjIuNC9jYy9t
YXRoL2xpYm0tdGVzdC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9tYXRoLmgiIDEKCgojIDEgIi4uL21h
dGgvbWF0aC5oIiAxCiMgMjcgIi4uL21hdGgvbWF0aC5oIgojIDEgIi4uL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMQojIDI4ICIuLi9tYXRoL21hdGguaCIgMgoKCgoKCiMgMSAiLi4vc3lzZGVwcy9pYTY0
L2JpdHMvaHVnZV92YWwuaCIgMQojIDI1ICIuLi9zeXNkZXBzL2lhNjQvYml0cy9odWdlX3ZhbC5o
IgojIDEgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMQojIDI2ICIuLi9zeXNkZXBzL2lhNjQvYml0
cy9odWdlX3ZhbC5oIiAyCiMgMzQgIi4uL21hdGgvbWF0aC5oIiAyCgoKCiMgMSAiLi4vc3lzZGVw
cy9pZWVlNzU0L2JpdHMvbmFuLmgiIDEKIyAzOCAiLi4vbWF0aC9tYXRoLmgiIDIKCgojIDEgIi4u
L3N5c2RlcHMvaWE2NC9mcHUvYml0cy9tYXRoZGVmLmgiIDEKIyAyOCAiLi4vc3lzZGVwcy9pYTY0
L2ZwdS9iaXRzL21hdGhkZWYuaCIKdHlwZWRlZiBmbG9hdCBmbG9hdF90OwoKdHlwZWRlZiBkb3Vi
bGUgZG91YmxlX3Q7CiMgNDEgIi4uL21hdGgvbWF0aC5oIiAyCiMgNjMgIi4uL21hdGgvbWF0aC5o
IgojIDEgIi4uL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMQojIDEgIi4uL21hdGgvYml0cy9t
YXRoY2FsbHMuaCIgMQojIDU0ICIuLi9tYXRoL2JpdHMvbWF0aGNhbGxzLmgiCmV4dGVybiBkb3Vi
bGUgYWNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9feCkg
OwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hc2lu
IChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJs
ZSBfX3ksIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195LCBk
b3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRv
dWJsZSBfX2NvcyAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSB0YW4g
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgOwoKCgpleHRl
cm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29z
eCkgOyBleHRlcm4gdm9pZCBfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRv
dWJsZSAqX19jb3N4KSA7CgoKCgoKCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4g
ZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91Ymxl
IF9fYWNvc2ggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0
YW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoK
CgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAg
KGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBleHAxMCAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fZXhwMTAgKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgcG93MTAgKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdzEwIChkb3VibGUgX194KSA7CgoKCmV4dGVy
biBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91
YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3Vi
bGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19s
ZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAo
ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJu
IGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy
KSA7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoK
CgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBt
MSAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSA7CgoKCgpleHRl
cm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2xvZzIgKGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91Ymxl
IF9fc3FydCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194
LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19jYnJ0IChkb3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3Vi
bGUgZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g
ZG91YmxlIF9fZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29y
IChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUg
X195KSA7IGV4dGVybiBkb3VibGUgX19mbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoK
CgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJs
ZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBk
cmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19kcmVtIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSA7CgoKCgpl
eHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19jb3B5c2lnbiAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBuYW4gKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBkb3VibGUgX19uYW4gKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW4gKGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBqMCAo
ZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgajEg
KGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajEgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGpu
IChpbnQsIGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKSA7CmV4dGVy
biBkb3VibGUgeTAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgOwpleHRl
cm4gZG91YmxlIHkxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3kxIChkb3VibGUpIDsKZXh0
ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRv
dWJsZSkgOwoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBf
X2VyZiAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSA7IGV4dGVybiBkb3Vi
bGUgX19lcmZjIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgOyBleHRl
cm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIDsKCgoKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRv
dWJsZSkgOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChkb3VibGUpIDsKCgoKCmV4dGVybiBkb3Vi
bGUgZ2FtbWEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgOwoKCgoK
CgpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRl
cm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4
dGVybiBkb3VibGUgcmludCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91
YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUg
X195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0
ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CmV4dGVybiBkb3VibGUgbmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0
ZXJuIGRvdWJsZSBfX3JlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRl
cm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSA7IGV4dGVybiBkb3VibGUg
X19zY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2Fs
Ym4gKGRvdWJsZSBfX3gsIGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91Ymxl
IF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVy
biBpbnQgX19pbG9nYiAoZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuIChk
b3VibGUgX194LCBsb25nIGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRvdWJs
ZSBfX3gsIGxvbmcgaW50IF9fbikgOwoKCgpleHRlcm4gZG91YmxlIG5lYXJieWludCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fbmVhcmJ5aW50IChkb3VibGUgX194KSA7CgoKCmV4dGVy
biBkb3VibGUgcm91bmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JvdW5kIChkb3Vi
bGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3RydW5jIChkb3VibGUgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIHJlbXF1byAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgOyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChk
b3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSA7CgoKCgoKCmV4dGVybiBsb25nIGlu
dCBscmludCAoZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scmludCAoZG91YmxlIF9f
eCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgX19sbHJpbnQgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
b3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmQgKGRvdWJsZSBfX3gp
IDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gbG9u
ZyBsb25nIGludCBfX2xscm91bmQgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBmZGlt
IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mZGltIChkb3VibGUg
X194LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBkb3Vi
bGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSA7
CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBk
b3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBpbnQgX19m
cGNsYXNzaWZ5IChkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKQogICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3ksIGRvdWJsZSBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfX2ZtYSAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSwgZG91YmxlIF9feikgOwojIDIgIi4uL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu
aCIgMgojIDY0ICIuLi9tYXRoL21hdGguaCIgMgojIDgyICIuLi9tYXRoL21hdGguaCIKIyAxICIu
Li9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEKIyAxICIuLi9tYXRoL2JpdHMvbWF0aGNhbGxz
LmgiIDEKIyA1NCAiLi4vbWF0aC9iaXRzL21hdGhjYWxscy5oIgpleHRlcm4gZmxvYXQgYWNvc2Yg
KGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hY29zZiAoZmxvYXQgX194KSA7CgpleHRlcm4g
ZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hc2luZiAoZmxvYXQgX194
KSA7CgpleHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFu
ZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9f
eCkgOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSA7CgoKZXh0
ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBf
X3gpIDsKCmV4dGVybiBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2lu
ZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgdGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIDsgZXh0ZXJuIHZvaWQgX19zaW5jb3Nm
IChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIDsKCgoKCgoKZXh0ZXJu
IGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zaGYgKGZsb2F0IF9f
eCkgOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2lu
aGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fdGFuaGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgYWNvc2hmIChmbG9h
dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9h
dCBhc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9feCkg
OwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW5o
ZiAoZmxvYXQgX194KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cDEwZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2V4cDEwZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxv
YXQgcG93MTBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fcG93MTBmIChmbG9hdCBfX3gp
IDsKCgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIDsg
ZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4
dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGZs
b2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGZsb2F0
IGxvZ2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBfX3gpIDsKCgpl
eHRlcm4gZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmIChm
bG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0
cikgOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSA7CgoK
CmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHBtMWYg
KGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgOyBleHRlcm4g
ZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoZmxvYXQg
X194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIDsKCgoKCmV4dGVybiBmbG9h
dCBleHAyZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2V4cDJmIChmbG9hdCBfX3gpIDsK
CgpleHRlcm4gZmxvYXQgbG9nMmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2cyZiAo
ZmxvYXQgX194KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBwb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSkgOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCmV4dGVy
biBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NxcnRmIChmbG9hdCBf
X3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0
ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCgoKZXh0ZXJuIGZs
b2F0IGNicnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkg
OwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19j
ZWlsZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCBfX3gpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0
IF9feCkgOyBleHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9h
dCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3Zh
bHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYg
KGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBp
bnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRl
cm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGZsb2F0
IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpZ25pZmljYW5kZiAo
ZmxvYXQgX194KSA7CgoKCgpleHRlcm4gZmxvYXQgY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jb3B5c2ln
bmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgpleHRlcm4gZmxvYXQgbmFuZiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmFuZiAoX19jb25zdCBjaGFyICpfX3RhZ2Ip
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmYgKGZs
b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBp
c25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gZmxvYXQgajBmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19qMGYgKGZsb2F0KSA7CmV4dGVy
biBmbG9hdCBqMWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2oxZiAoZmxvYXQpIDsKZXh0ZXJu
IGZsb2F0IGpuZiAoaW50LCBmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQp
IDsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feTBmIChmbG9hdCkg
OwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX195MWYgKGZsb2F0KSA7
CmV4dGVybiBmbG9hdCB5bmYgKGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQs
IGZsb2F0KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBf
X2VyZmYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0
IF9fZXJmY2YgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBsZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4g
ZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgOwoKCgpleHRlcm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQp
IDsgZXh0ZXJuIGZsb2F0IF9fdGdhbW1hZiAoZmxvYXQpIDsKCgoKCmV4dGVybiBmbG9hdCBnYW1t
YWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIDsKCgoKCgoKZXh0ZXJu
IGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZmxvYXQg
X19sZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJuIGZsb2F0
IHJpbnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgOwoK
CmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5l
eHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IHJl
bWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3JlbWFpbmRl
cmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0
IF9feCwgZmxvYXQgX19uKSA7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194LCBmbG9h
dCBfX24pIDsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsg
ZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7CgoKCmV4dGVybiBp
bnQgaWxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQgX194KSA7
CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSA7IGV4
dGVybiBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgOwoKCgpleHRl
cm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX25lYXJieWlu
dGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgcm91bmRmIChmbG9hdCBfX3gpIDsgZXh0
ZXJuIGZsb2F0IF9fcm91bmRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IHRydW5jZiAo
ZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3Ry
dW5jZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4g
ZmxvYXQgcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIDsgZXh0ZXJu
IGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIDsKCgoK
CgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBsb25nIGludCBf
X2xyaW50ZiAoZmxvYXQgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludGYgKGZsb2F0IF9feCkgOwoKCgpl
eHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xy
b3VuZGYgKGZsb2F0IF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kZiAoZmxvYXQg
X194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgOwoKCgpl
eHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBf
X2ZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IGZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBl
eHRlcm4gZmxvYXQgX19mbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGlu
dCBfX2ZwY2xhc3NpZnlmIChmbG9hdCBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194
LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgOyBleHRlcm4gZmxvYXQgX19mbWFmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSwgZmxvYXQgX196KSA7CiMgMiAiLi4vaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAyCiMgODMgIi4uL21hdGgvbWF0aC5oIiAyCiMgOTkgIi4uL21hdGgvbWF0aC5oIgojIDEgIi4u
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMQojIDEgIi4uL21hdGgvYml0cy9tYXRoY2FsbHMu
aCIgMQojIDU0ICIuLi9tYXRoL2JpdHMvbWF0aGNhbGxzLmgiCmV4dGVybiBsb25nIGRvdWJsZSBh
Y29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25n
IGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwg
KGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nv
c2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsK
CmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fdGFubCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29z
eCkgOyBleHRlcm4gdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
Kl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y29zaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9u
ZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAobG9uZyBkb3VibGUgX194KSA7CgpleHRl
cm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX190YW5obCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29z
aGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9uZyBkb3VibGUgX194KSA7CgpleHRl
cm4gbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZXhwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMTBsIChsb25nIGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBsb25nIGRvdWJsZSBwb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19wb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhw
b25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19s
b2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X21vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFw
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBk
b3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cy
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzJsIChsb25nIGRv
dWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9uZyBkb3VibGUg
X194KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4g
bG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZsb29ybCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUg
X194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91Ymxl
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmlu
aXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2RyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVybiBsb25nIGRv
dWJsZSBjb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBuYW5sIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uYW5sIChfX2Nv
bnN0IGNoYXIgKl9fdGFnYikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91
YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxv
bmcgZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsIChs
b25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9u
ZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxv
bmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHlu
bCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9u
ZyBkb3VibGUpIDsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91
YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9u
ZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCmV4dGVybiBsb25n
IGRvdWJsZSB0Z2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2Ft
bWFsIChsb25nIGRvdWJsZSkgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgOwoKCgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25n
YW1wKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAq
X19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBk
b3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibmwg
KGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5s
IChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcg
ZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBsb25nIGludCBf
X24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBpbnQgX19uKSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBuZWFyYnlpbnRsIChsb25nIGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmVhcmJ5aW50bCAobG9uZyBkb3VibGUgX194
KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19yb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByZW1xdW9sIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50
ICpfX3F1bykgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGxvbmcg
aW50IF9fbGxyaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGludCBscm91
bmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBk
b3VibGUgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRsIChsb25nIGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmRpbWwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYXhsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1pbmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gaW50
IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192YWx1
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195LCBsb25nIGRvdWJsZSBfX3opIDsKIyAyICIuLi9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDIKIyAxMDAgIi4uL21hdGgvbWF0aC5oIiAyCiMgMTEzICIuLi9tYXRoL21hdGguaCIKZXh0
ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiLi4vbWF0aC9tYXRoLmgiCmVudW0KICB7CiAgICBGUF9O
QU4sCgogICAgRlBfSU5GSU5JVEUsCgogICAgRlBfWkVSTywKCiAgICBGUF9TVUJOT1JNQUwsCgog
ICAgRlBfTk9STUFMCgogIH07CiMgMjQwICIuLi9tYXRoL21hdGguaCIKdHlwZWRlZiBlbnVtCnsK
ICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9
IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVS
U0lPTjsKIyAyNjUgIi4uL21hdGgvbWF0aC5oIgpzdHJ1Y3QgZXhjZXB0aW9uCgogIHsKICAgIGlu
dCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7
CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBl
eGNlcHRpb24gKl9fZXhjKTsKIyA0ICIuLi9pbmNsdWRlL21hdGguaCIgMgoKCmV4dGVybiBpbnQg
X19tYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICpfX2V4Yyk7CiMgMTIxICIvdXNyL3NyYy9wYWNr
YWdlcy9CVUlMRC9nbGliYy0yLjIuNC9jYy9tYXRoL2xpYm0tdGVzdC5jIiAyCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVkZS9mbG9hdC5oIiAxIDMKIyAx
MjIgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgvbGlibS10ZXN0
LmMiIDIKIyAxICIuLi9pbmNsdWRlL2ZlbnYuaCIgMQoKIyAxICIuLi9tYXRoL2ZlbnYuaCIgMQoj
IDI2ICIuLi9tYXRoL2ZlbnYuaCIKIyAxICIuLi9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEKIyAyNyAi
Li4vbWF0aC9mZW52LmgiIDIKIyA1OCAiLi4vbWF0aC9mZW52LmgiCiMgMSAiLi4vc3lzZGVwcy9p
YTY0L2JpdHMvZmVudi5oIiAxCiMgMjcgIi4uL3N5c2RlcHMvaWE2NC9iaXRzL2ZlbnYuaCIKZW51
bQogIHsKICAgIEZFX0lORVhBQ1QgPSAxVUwgPDwgNSwKCgogICAgRkVfVU5ERVJGTE9XID0gMVVM
IDw8IDQsCgoKICAgIEZFX09WRVJGTE9XID0gMVVMIDw8IDMsCgoKICAgIEZFX0RJVkJZWkVSTyA9
IDFVTCA8PCAyLAoKCiAgICBGRV9VTk5PUk1BTCA9IDFVTCA8PCAxLAoKCiAgICBGRV9JTlZBTElE
ID0gMVVMIDw8IDAsCgoKICAgIEZFX0FMTF9FWENFUFQgPQogICAgICAgIChGRV9JTkVYQUNUIHwg
RkVfVU5ERVJGTE9XIHwgRkVfT1ZFUkZMT1cgfCBGRV9ESVZCWVpFUk8gfCBGRV9VTk5PUk1BTCB8
IEZFX0lOVkFMSUQpCgogIH07CgoKZW51bQogIHsKICAgIEZFX1RPV0FSRFpFUk8gPSAzLAoKCiAg
ICBGRV9VUFdBUkQgPSAyLAoKCiAgICBGRV9ET1dOV0FSRCA9IDEsCgoKICAgIEZFX1RPTkVBUkVT
VCA9IDAsCgogIH07CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgZmV4Y2VwdF90OwoKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgZmVudl90OwojIDU5ICIuLi9tYXRoL2ZlbnYuaCIgMgoK
CgoKCgpleHRlcm4gaW50IGZlY2xlYXJleGNlcHQgKGludCBfX2V4Y2VwdHMpIDsKCgoKZXh0ZXJu
IGludCBmZWdldGV4Y2VwdGZsYWcgKGZleGNlcHRfdCAqX19mbGFncCwgaW50IF9fZXhjZXB0cykg
OwoKCmV4dGVybiBpbnQgZmVyYWlzZWV4Y2VwdCAoaW50IF9fZXhjZXB0cykgOwoKCgpleHRlcm4g
aW50IGZlc2V0ZXhjZXB0ZmxhZyAoX19jb25zdCBmZXhjZXB0X3QgKl9fZmxhZ3AsIGludCBfX2V4
Y2VwdHMpIDsKCgoKZXh0ZXJuIGludCBmZXRlc3RleGNlcHQgKGludCBfX2V4Y2VwdHMpIDsKCgoK
CgpleHRlcm4gaW50IGZlZ2V0cm91bmQgKHZvaWQpIDsKCgpleHRlcm4gaW50IGZlc2V0cm91bmQg
KGludCBfX3JvdW5kaW5nX2RpcmVjdGlvbikgOwoKCgoKCgpleHRlcm4gaW50IGZlZ2V0ZW52IChm
ZW52X3QgKl9fZW52cCkgOwoKCgoKZXh0ZXJuIGludCBmZWhvbGRleGNlcHQgKGZlbnZfdCAqX19l
bnZwKSA7CgoKCmV4dGVybiBpbnQgZmVzZXRlbnYgKF9fY29uc3QgZmVudl90ICpfX2VudnApIDsK
CgoKCmV4dGVybiBpbnQgZmV1cGRhdGVlbnYgKF9fY29uc3QgZmVudl90ICpfX2VudnApIDsKCgoK
CiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvZmVudmlubGluZS5oIiAxCiMgMTE2ICIuLi9t
YXRoL2ZlbnYuaCIgMgoKCgoKCgoKZXh0ZXJuIGludCBmZWVuYWJsZWV4Y2VwdCAoaW50IF9fZXhj
ZXB0cykgOwoKCgoKZXh0ZXJuIGludCBmZWRpc2FibGVleGNlcHQgKGludCBfX2V4Y2VwdHMpIDsK
CgpleHRlcm4gaW50IGZlZ2V0ZXhjZXB0ICh2b2lkKSA7CiMgMyAiLi4vaW5jbHVkZS9mZW52Lmgi
IDIKCgoKZXh0ZXJuIGludCBfX2ZlY2xlYXJleGNlcHQgKGludCBfX2V4Y2VwdHMpOwpleHRlcm4g
aW50IF9fZmVnZXRleGNlcHRmbGFnIChmZXhjZXB0X3QgKl9fZmxhZ3AsIGludCBfX2V4Y2VwdHMp
OwpleHRlcm4gaW50IF9fZmVyYWlzZWV4Y2VwdCAoaW50IF9fZXhjZXB0cyk7CmV4dGVybiBpbnQg
X19mZXNldGV4Y2VwdGZsYWcgKF9fY29uc3QgZmV4Y2VwdF90ICpfX2ZsYWdwLCBpbnQgX19leGNl
cHRzKTsKZXh0ZXJuIGludCBfX2ZlZ2V0ZW52IChmZW52X3QgKl9fZW52cCk7CmV4dGVybiBpbnQg
X19mZXNldGVudiAoX19jb25zdCBmZW52X3QgKl9fZW52cCk7CmV4dGVybiBpbnQgX19mZXVwZGF0
ZWVudiAoX19jb25zdCBmZW52X3QgKl9fZW52cCk7CiMgMTIzICIvdXNyL3NyYy9wYWNrYWdlcy9C
VUlMRC9nbGliYy0yLjIuNC9jYy9tYXRoL2xpYm0tdGVzdC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9s
aW1pdHMuaCIgMQojIDI2ICIuLi9pbmNsdWRlL2xpbWl0cy5oIgojIDEgIi4uL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMQojIDI3ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMTI0ICIuLi9pbmNsdWRl
L2xpbWl0cy5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaWE2NC1zdXNlLWxpbnV4LzMuMC4yL2lu
Y2x1ZGUvbGltaXRzLmgiIDEgMwojIDEyNSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgojIDE0NCAi
Li4vaW5jbHVkZS9saW1pdHMuaCIKIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAx
CiMgMSAiLi4vcG9zaXgvYml0cy9wb3NpeDFfbGltLmgiIDEKIyAxMjYgIi4uL3Bvc2l4L2JpdHMv
cG9zaXgxX2xpbS5oIgojIDEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51
eC9iaXRzL2xvY2FsX2xpbS5oIiAxCiMgMzYgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgv
c3lzdi9saW51eC9iaXRzL2xvY2FsX2xpbS5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L2tlcm5lbC1oZWFkZXJzL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiLi4vbGludXh0aHJlYWRz
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvbG9jYWxfbGltLmgiIDIKIyAxMjcgIi4uL3Bv
c2l4L2JpdHMvcG9zaXgxX2xpbS5oIiAyCiMgMiAiLi4vaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0u
aCIgMgojIDE0NSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgoKCgojIDEgIi4uL2luY2x1ZGUvYml0
cy9wb3NpeDJfbGltLmgiIDEKIyAxICIuLi9wb3NpeC9iaXRzL3Bvc2l4Ml9saW0uaCIgMQojIDIg
Ii4uL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDIKIyAxNDkgIi4uL2luY2x1ZGUvbGltaXRz
LmgiIDIKCgoKIyAxICIuLi9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEKIyAzNCAiLi4vaW5j
bHVkZS9iaXRzL3hvcGVuX2xpbS5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJj
LTIuMi40L2NjL2JpdHMvc3RkaW9fbGltLmgiIDEKIyAzNSAiLi4vaW5jbHVkZS9iaXRzL3hvcGVu
X2xpbS5oIiAyCiMgMTUzICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCiMgMTI0ICIvdXNyL3NyYy9w
YWNrYWdlcy9CVUlMRC9nbGliYy0yLjIuNC9jYy9tYXRoL2xpYm0tdGVzdC5jIiAyCgojIDEgIi4u
L2luY2x1ZGUvZXJybm8uaCIgMQojIDI5ICIuLi9pbmNsdWRlL2Vycm5vLmgiCiMgMSAiLi4vaW5j
bHVkZS9mZWF0dXJlcy5oIiAxCiMgMzAgIi4uL2luY2x1ZGUvZXJybm8uaCIgMgoKCgoKCgojIDEg
Ii4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvZXJybm8uaCIgMQojIDI1ICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2Vycm5vLmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMv
QlVJTEQva2VybmVsLWhlYWRlcnMvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQva2VybmVsLWhlYWRlcnMvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL2tlcm5lbC1oZWFkZXJzL2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2
ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2Vycm5vLmgiIDIKIyAzNiAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9lcnJuby5oIgpleHRlcm4gaW50IGVycm5vOwoKCmV4
dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKIyAzNyAiLi4vaW5jbHVkZS9lcnJuby5oIiAyCiMgNTUgIi4uL2luY2x1ZGUvZXJybm8u
aCIKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lLCAqcHJvZ3JhbV9pbnZvY2F0
aW9uX3Nob3J0X25hbWU7CiMgNjkgIi4uL2luY2x1ZGUvZXJybm8uaCIKdHlwZWRlZiBpbnQgZXJy
b3JfdDsKIyAxMjYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgv
bGlibS10ZXN0LmMiIDIKIyAxICIuLi9pbmNsdWRlL3N0ZGxpYi5oIiAxCgoKCgoKCiMgMSAiLi4v
c3RkbGliL3N0ZGxpYi5oIiAxCiMgMjUgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKIyAxICIuLi9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEKIyAyNiAiLi4vc3RkbGliL3N0ZGxpYi5oIiAyCgoKCgoKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaWE2NC1zdXNlLWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDE5OSAiL3Vzci9saWIvZ2NjLWxpYi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsKIyAyODcgIi91
c3IvbGliL2djYy1saWIvaWE2NC1zdXNlLWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
dHlwZWRlZiBpbnQgd2NoYXJfdDsKIyAzNCAiLi4vc3RkbGliL3N0ZGxpYi5oIiAyCiMgNDIgIi4u
L3N0ZGxpYi9zdGRsaWIuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3dh
aXRmbGFncy5oIiAxCiMgNDMgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgojIDEgIi4uL3N5c2RlcHMv
Z2VuZXJpYy9iaXRzL3dhaXRzdGF0dXMuaCIgMQojIDYzICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0
cy93YWl0c3RhdHVzLmgiCiMgMSAiLi4vaW5jbHVkZS9lbmRpYW4uaCIgMQojIDEgIi4uL3N0cmlu
Zy9lbmRpYW4uaCIgMQojIDIyICIuLi9zdHJpbmcvZW5kaWFuLmgiCiMgMSAiLi4vaW5jbHVkZS9m
ZWF0dXJlcy5oIiAxCiMgMjMgIi4uL3N0cmluZy9lbmRpYW4uaCIgMgojIDM3ICIuLi9zdHJpbmcv
ZW5kaWFuLmgiCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvaWE2NC9iaXRzL2VuZGlh
bi5oIiAxCiMgMzggIi4uL3N0cmluZy9lbmRpYW4uaCIgMgojIDIgIi4uL2luY2x1ZGUvZW5kaWFu
LmgiIDIKIyA2NCAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvd2FpdHN0YXR1cy5oIiAyCgp1bmlv
biB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAg
dW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19jb3Jl
ZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogICAgICAgIHVuc2ln
bmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7CiAgICBzdHJ1Y3QK
ICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKICAgICAgICB1bnNp
Z25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCiAg
ICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiLi4vc3RkbGliL3N0ZGxpYi5oIiAyCiMg
NjggIi4uL3N0ZGxpYi9zdGRsaWIuaCIKdHlwZWRlZiB1bmlvbgogIHsKICAgIHVuaW9uIHdhaXQg
Kl9fdXB0cjsKICAgIGludCAqX19pcHRyOwogIH0gX19XQUlUX1NUQVRVUyBfX2F0dHJpYnV0ZV9f
ICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7CiMgOTQgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwog
IH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25n
IGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMz
ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21h
eCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0
b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
X19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpf
X25wdHIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gZmxv
YXQgc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKCgpleHRlcm4gbG9u
ZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwoKCgpfX2V4dGVuc2lvbl9f
CmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBs
b25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBp
bnQgX19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpCiAgICAgICAgICAgIDsKIyAyMTEgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKIyAxICIu
Li9pbmNsdWRlL3hsb2NhbGUuaCIgMQojIDEgIi4uL2xvY2FsZS94bG9jYWxlLmgiIDEKIyAyOCAi
Li4vbG9jYWxlL3hsb2NhbGUuaCIKdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAg
c3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hv
cnQgaW50ICpfX2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3Qg
aW50ICpfX2N0eXBlX3RvdXBwZXI7Cn0gKl9fbG9jYWxlX3Q7CiMgMiAiLi4vaW5jbHVkZS94bG9j
YWxlLmgiIDIKIyAyMTIgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgoKCgpleHRlcm4gbG9uZyBpbnQg
X19zdHJ0b2xfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19z
dHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2Us
IF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgIDsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2Rf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICAg
ICAgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9s
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBfX3N0
cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2dyb3VwKQogICAgICAgICAgICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAg
IDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKIyAzODQgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0
ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChf
X2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAxICIuLi9p
bmNsdWRlL3N5cy90eXBlcy5oIiAxCiMgMSAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiIDEKIyAyNiAi
Li4vcG9zaXgvc3lzL3R5cGVzLmgiCiMgMSAiLi4vaW5jbHVkZS9mZWF0dXJlcy5oIiAxCiMgMjcg
Ii4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvaWE2NC9iaXRzL3R5cGVzLmgiIDEKIyAyNiAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
aWE2NC9iaXRzL3R5cGVzLmgiCiMgMSAiLi4vaW5jbHVkZS9mZWF0dXJlcy5oIiAxCiMgMjcgIi4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2lhNjQvYml0cy90eXBlcy5oIiAyCgoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2lhNjQtc3VzZS1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzMCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvaWE2NC9iaXRzL3R5cGVzLmgiIDIKCgp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCBfX3VfbG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfcXVhZF90
Owp0eXBlZGVmIGxvbmcgaW50IF9fcXVhZF90Owp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90
Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBp
bnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBl
ZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90
Owp0eXBlZGVmIHNpZ25lZCBsb25nIGludCBfX2ludDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgX191aW50NjRfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBf
X3VpbnQ2NF90IF9fZGV2X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3VpZF90Owp0eXBlZGVmIF9f
dWludDMyX3QgX19naWRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9faW5vX3Q7CnR5cGVkZWYgX191
aW50NjRfdCBfX2lubzY0X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKdHlwZWRlZiBf
X3VpbnQ2NF90IF9fbmxpbmtfdDsKdHlwZWRlZiBfX2ludDY0X3QgX19vZmZfdDsKdHlwZWRlZiBf
X2ludDY0X3QgX19vZmY2NF90Owp0eXBlZGVmIF9faW50NjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBf
X2ludDMyX3QgX19waWRfdDsKdHlwZWRlZiBfX2ludDY0X3QgX19zc2l6ZV90Owp0eXBlZGVmIF9f
dWludDY0X3QgX19ybGltX3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3JsaW02NF90Owp0eXBlZGVm
IF9faW50NjRfdCBfX2Jsa2NudF90Owp0eXBlZGVmIF9faW50NjRfdCBfX2Jsa2NudDY0X3Q7CnR5
cGVkZWYgX191aW50NjRfdCBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX2ZzYmxr
Y250NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VpbnQ2
NF90IF9fZnNmaWxjbnQ2NF90Owp0eXBlZGVmIF9fdWludDMyX3QgX19pZF90OwoKdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBf
X2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGlt
ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQg
X19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CnR5cGVkZWYgbG9uZyBp
bnQgX19jbG9ja190Owp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tp
ZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgp0eXBlZGVmIGludCBfX2lwY19waWRfdDsK
Cgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIGludCBfX3Rfc2Nh
bGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBsb25n
IGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoj
IDEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvYml0cy9wdGhyZWFkdHlwZXMuaCIg
MQojIDIzICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvcHRocmVhZHR5cGVz
LmgiCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zY2hlZC5oIiAxCiMgNjgg
Ii4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2NoZWQuaCIKc3RydWN0IF9fc2NoZWRf
cGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIuLi9saW51eHRo
cmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIKCgpzdHJ1Y3QgX3B0
aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoK
fTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNj
cjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hz
dGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVk
cGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1
YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNp
emVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewog
IHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nf
d2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1
bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFk
X2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBf
X21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBz
dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7
CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJl
YWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50
IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9k
ZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRp
bmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2Nr
X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVk
Owp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVh
ZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxv
Y2sgX19iYV9sb2NrOwogIGludCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2JhX3ByZXNlbnQ7CiAg
X3B0aHJlYWRfZGVzY3IgX19iYV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmllcl90OwoKCnR5cGVk
ZWYgc3RydWN0IHsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfYmFycmllcmF0dHJfdDsKCgoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxMTQgIi4uL3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L2lhNjQvYml0cy90eXBlcy5oIiAyCiMgMzEgIi4uL3Bvc2l4L3N5cy90
eXBlcy5oIiAyCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1
X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0
eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBl
ZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBl
ZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0
eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBl
ZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0
eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0
eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoK
dHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoK
dHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoK
Cgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIKIyAx
ICIuLi9pbmNsdWRlL3RpbWUuaCIgMQoKCiMgMSAiLi4vdGltZS90aW1lLmgiIDEKIyA1NiAiLi4v
dGltZS90aW1lLmgiCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvaWE2NC9iaXRzL3R5
cGVzLmgiIDEKIyA1NyAiLi4vdGltZS90aW1lLmgiIDIKCgp0eXBlZGVmIF9fY2xvY2tfdCBjbG9j
a190OwoKCgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2JpdHMvdHlw
ZXMuaCIgMQojIDY4ICIuLi90aW1lL3RpbWUuaCIgMgoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90
OwojIDc5ICIuLi90aW1lL3RpbWUuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9p
YTY0L2JpdHMvdHlwZXMuaCIgMQojIDgwICIuLi90aW1lL3RpbWUuaCIgMgoKCnR5cGVkZWYgX19j
bG9ja2lkX3QgY2xvY2tpZF90OwojIDkxICIuLi90aW1lL3RpbWUuaCIKIyAxICIuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9pYTY0L2JpdHMvdHlwZXMuaCIgMQojIDkyICIuLi90aW1lL3RpbWUu
aCIgMgoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgNCAiLi4vaW5jbHVkZS90aW1lLmgi
IDIKIyAxMzMgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoKCnR5cGVkZWYgX191c2Vjb25kc190
IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvaWE2NC1zdXNlLWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDE0NyAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MCAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiCnR5cGVk
ZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRl
ZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRl
ZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRl
ZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlf
XykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lz
dGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTIgIi4uL3Bv
c2l4L3N5cy90eXBlcy5oIgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyAxICIuLi9zdHJp
bmcvZW5kaWFuLmgiIDEKIyAyICIuLi9pbmNsdWRlL2VuZGlhbi5oIiAyCiMgMjEzICIuLi9wb3Np
eC9zeXMvdHlwZXMuaCIgMgoKCiMgMSAiLi4vaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEKCiMgMSAi
Li4vbWlzYy9zeXMvc2VsZWN0LmgiIDEKIyAyNSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiCiMgMSAi
Li4vaW5jbHVkZS9mZWF0dXJlcy5oIiAxCiMgMjYgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIiAyCgoK
IyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2JpdHMvdHlwZXMuaCIgMQojIDI5
ICIuLi9taXNjL3N5cy9zZWxlY3QuaCIgMgoKCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMv
c2VsZWN0LmgiIDEKIyAzMiAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiIDIKCgojIDEgIi4uL3N5c2Rl
cHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnc2V0LmgiIDEKIyAyMyAiLi4vc3lzZGVwcy91bml4
L3N5c3YvbGludXgvYml0cy9zaWdzZXQuaCIKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoK
Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8g
KDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUg
Ii4uL21pc2Mvc3lzL3NlbGVjdC5oIiAyCgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsK
CgoKCiMgMSAiLi4vaW5jbHVkZS90aW1lLmgiIDEKCgojIDEgIi4uL3RpbWUvdGltZS5oIiAxCiMg
MTA2ICIuLi90aW1lL3RpbWUuaCIKc3RydWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZf
c2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwojIDQgIi4uL2luY2x1ZGUvdGltZS5oIiAy
CiMgNDQgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIiAyCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L2lhNjQvYml0cy90aW1lLmgiIDEKIyA2MyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvaWE2NC9iaXRzL3RpbWUuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0
L2JpdHMvdHlwZXMuaCIgMQojIDY0ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2Jp
dHMvdGltZS5oIiAyCgoKCnN0cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwog
ICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgNDYgIi4uL21pc2Mvc3lzL3NlbGVjdC5o
IiAyCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21h
c2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsK
IyA5NiAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRz
LCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVz
dHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqX19y
ZXN0cmljdCBfX3RpbWVvdXQpIDsKCgoKCgpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMs
IGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jl
c3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgX19z
aWdzZXRfdCAqX19yZXN0cmljdCBfX3NpZ21hc2spIDsKIyAzICIuLi9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMgoKCmV4dGVybiBpbnQgX19wc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVh
ZGZkcywKICAgICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX193cml0ZWZkcywgZmRfc2V0ICpf
X2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq
X190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19zaWdt
YXNrKTsKCmV4dGVybiBpbnQgX19zZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmlj
dCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy
aXRlZmRzLAogICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRm
ZHMsCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGlt
ZW91dCk7CiMgMjE2ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIgMgoKCiMgMSAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvc3lzL3N5c21hY3Jvcy5oIiAxCiMgMjE5ICIuLi9wb3NpeC9zeXMvdHlw
ZXMuaCIgMgoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYg
X19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsK
CgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTcgIi4uL3Bvc2l4L3N5cy90
eXBlcy5oIgp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtj
bnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7
CiMgMiAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMgojIDM5MSAiLi4vc3RkbGliL3N0ZGxpYi5o
IiAyCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBz
cmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0
ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChj
aGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQz
Ml90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50
IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMy
X3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3Nl
ZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3Ig
KHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJuIGludCBz
ZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKZXh0ZXJu
IGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2Vl
ZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoK
CmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDgg
KHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcg
aW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBp
bnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9p
ZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBk
cmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19h
OwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBp
bnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICAgICAgICAg
OwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwK
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKCmV4
dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMgNTI3ICIu
Li9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3Qg
X19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAo
dm9pZCAqX19wdHIpIDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCiMg
MSAiLi4vaW5jbHVkZS9hbGxvY2EuaCIgMQoKCiMgMSAiLi4vc3RkbGliL2FsbG9jYS5oIiAxCiMg
MjIgIi4uL3N0ZGxpYi9hbGxvY2EuaCIKIyAxICIuLi9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEKIyAy
MyAiLi4vc3RkbGliL2FsbG9jYS5oIiAyCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2lhNjQtc3Vz
ZS1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiLi4vc3RkbGliL2FsbG9j
YS5oIiAyCgoKCgoKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSA7CiMgNCAi
Li4vaW5jbHVkZS9hbGxvY2EuaCIgMgoKCgoKZXh0ZXJuIHZvaWQgKl9fYWxsb2NhIChzaXplX3Qg
X19zaXplKTsKIyA1NDcgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgoKCgoKZXh0ZXJuIHZvaWQgKnZh
bGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4
dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25t
ZW50LCBzaXplX3QgX19zaXplKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0
dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgOwoK
CgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lk
ICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhp
dCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRl
cm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpl
eHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoK
CmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19y
ZXBsYWNlKQogICAgICAgICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFy
ICpfX25hbWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyMyAiLi4v
c3RkbGliL3N0ZGxpYi5oIgpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7
CgoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NDAgIi4u
L3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUp
IDsKIyA2NTAgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIg
Kl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29t
bWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25z
dCBjaGFyICpfX25hbWUpIDsKIyA2NzIgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIg
KnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgOwoKCgoKCgp0eXBlZGVmIGlu
dCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwoKCnR5
cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CgoKCgoKZXh0ZXJuIHZvaWQgKmJz
ZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2Zu
X3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3Qg
X19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxs
YWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9t
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90
IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90
IGxsZGl2IChsb25nIGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKIyA3MjggIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIg
KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwoKCgoKZXh0
ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
OwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNo
YXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWdj
dnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsKCgoK
CmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np
Z24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19s
ZW4pIDsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX2xlbikgOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKCgpleHRlcm4gaW50IG1i
bGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3dj
ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChj
aGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsK
CgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMg
ODA4ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19y
ZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX2NvbnN0ICpf
X3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX192YWx1ZXApIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19r
ZXkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykgOwoKCgoK
CgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHVubG9ja3B0
IChpbnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSA7CgoKCgoK
CmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1
ZmxlbikgOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIGludCBnZXRs
b2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CiMgOCAiLi4vaW5jbHVk
ZS9zdGRsaWIuaCIgMgoKCgpleHRlcm4gbG9uZyBpbnQgX19yYW5kb20gKHZvaWQpOwpleHRlcm4g
dm9pZCBfX3NyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpOwpleHRlcm4gY2hhciAqX19pbml0
c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pOwpleHRlcm4gY2hhciAqX19zZXRzdGF0
ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CmV4dGVybiBpbnQgX19yYW5kb21fciAoc3RydWN0IHJhbmRv
bV9kYXRhICpfX2J1ZiwgaW50MzJfdCAqX19yZXN1bHQpOwpleHRlcm4gaW50IF9fc3JhbmRvbV9y
ICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsKZXh0ZXJu
IGludCBfX2luaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLCBzdHJ1Y3QgcmFu
ZG9tX2RhdGEgKl9fYnVmKTsKZXh0ZXJuIGludCBfX3NldHN0YXRlX3IgKGNoYXIgKl9fc3RhdGVi
dWYsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpOwpleHRlcm4gaW50IF9fcmFuZF9yICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCk7CmV4dGVybiBpbnQgX19lcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0
IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX2J1ZmZlciwgZG91YmxlICpfX3Jlc3VsdCk7CmV4dGVybiBpbnQgX19ucmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBpbnQgKl9fcmVzdWx0KTsKZXh0ZXJuIGludCBfX2pyYW5kNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN1bHQp
OwpleHRlcm4gaW50IF9fc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2YWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKTsKZXh0ZXJuIGludCBf
X3NlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKTsKZXh0ZXJuIGludCBfX2xj
b25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCgpleHRlcm4gaW50IF9fZHJh
bmQ0OF9pdGVyYXRlICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpOwoKZXh0ZXJu
IGludCBfX3NldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVwbGFjZSk7CmV4dGVybiBpbnQgX191bnNl
dGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwpleHRlcm4gaW50IF9fY2xlYXJlbnYgKHZvaWQp
OwpleHRlcm4gY2hhciAqX19jYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSk7CmV4dGVybiBjaGFyICpfX3JlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hh
ciAqX19yZXNvbHZlZCk7CmV4dGVybiBpbnQgX19wdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGludCBfX2dldHB0ICh2b2lkKTsKZXh0ZXJu
IGludCBfX3Bvc2l4X29wZW5wdCAoaW50IF9fb2ZsYWcpOwoKZXh0ZXJuIGludCBfX2FkZF90b19l
bnZpcm9uIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21iaW5lcywgaW50IHJlcGxhY2UpOwoKZXh0
ZXJuIHZvaWQgX3F1aWNrc29ydCAodm9pZCAqY29uc3QgcGJhc2UsIHNpemVfdCB0b3RhbF9lbGVt
cywKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIF9fY29tcGFyX2ZuX3QgY21w
KTsKCmV4dGVybiBpbnQgX19vbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2
b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKTsKCmV4dGVybiBpbnQgX19jeGFfYXRleGl0ICh2b2lk
ICgqZnVuYykgKHZvaWQgKiksIHZvaWQgKmFyZywgdm9pZCAqZCk7CgpleHRlcm4gdm9pZCBfX2N4
YV9maW5hbGl6ZSAodm9pZCAqZCk7CgpleHRlcm4gaW50IF9fcG9zaXhfbWVtYWxpZ24gKHZvaWQg
KiptZW1wdHIsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gaW50IF9fbGliY19zeXN0ZW0gKGNvbnN0IGNoYXIg
KmxpbmUpOwojIDEyNyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvZ2xpYmMtMi4yLjQvY2MvbWF0
aC9saWJtLXRlc3QuYyIgMgojIDEgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMQojIDEwICIuLi9pbmNs
dWRlL3N0ZGlvLmgiCiMgMSAiLi4vbGliaW8vc3RkaW8uaCIgMQojIDI4ICIuLi9saWJpby9zdGRp
by5oIgojIDEgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMQojIDI5ICIuLi9saWJpby9zdGRpby5o
IiAyCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2lhNjQtc3VzZS1saW51eC8zLjAuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAzNSAiLi4vbGliaW8vc3RkaW8uaCIgMgoKIyAxICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2JpdHMvdHlwZXMuaCIgMQojIDM3ICIuLi9saWJpby9z
dGRpby5oIiAyCiMgNDUgIi4uL2xpYmlvL3N0ZGlvLmgiCnR5cGVkZWYgc3RydWN0IF9JT19GSUxF
IEZJTEU7CiMgNTUgIi4uL2xpYmlvL3N0ZGlvLmgiCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9f
RklMRTsKIyA2NSAiLi4vbGliaW8vc3RkaW8uaCIKIyAxICIuLi9saWJpby9saWJpby5oIiAxCiMg
MzIgIi4uL2xpYmlvL2xpYmlvLmgiCiMgMSAiLi4vc3lzZGVwcy9nbnUvX0dfY29uZmlnLmgiIDEK
IyA5ICIuLi9zeXNkZXBzL2dudS9fR19jb25maWcuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9pYTY0L2JpdHMvdHlwZXMuaCIgMQojIDEwICIuLi9zeXNkZXBzL2dudS9fR19jb25m
aWcuaCIgMgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2lhNjQtc3VzZS1saW51eC8zLjAuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91c3IvbGliL2djYy1saWIvaWE2NC1zdXNlLWxp
bnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90
OwojIDE1ICIuLi9zeXNkZXBzL2dudS9fR19jb25maWcuaCIgMgojIDI0ICIuLi9zeXNkZXBzL2du
dS9fR19jb25maWcuaCIKIyAxICIuLi9pbmNsdWRlL3djaGFyLmgiIDEKCiMgMSAiLi4vd2NzbWJz
L3djaGFyLmgiIDEKIyA0OCAiLi4vd2NzbWJzL3djaGFyLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi4uL3dj
c21icy93Y2hhci5oIiAyCgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3djaGFyLmgiIDEK
IyA1MSAiLi4vd2NzbWJzL3djaGFyLmgiIDIKIyA2NyAiLi4vd2NzbWJzL3djaGFyLmgiCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsK
ICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAzICIuLi9p
bmNsdWRlL3djaGFyLmgiIDIKIyAyNSAiLi4vc3lzZGVwcy9nbnUvX0dfY29uZmlnLmgiIDIKCnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g
X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi4uL3N5c2RlcHMvZ251L19HX2NvbmZp
Zy5oIgojIDEgIi4uL2luY2x1ZGUvZ2NvbnYuaCIgMQojIDEgIi4uL2ljb252L2djb252LmgiIDEK
IyAyNiAiLi4vaWNvbnYvZ2NvbnYuaCIKIyAxICIuLi9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEKIyAy
NyAiLi4vaWNvbnYvZ2NvbnYuaCIgMgoKIyAxICIuLi9pbmNsdWRlL3djaGFyLmgiIDEKCiMgMSAi
Li4vd2NzbWJzL3djaGFyLmgiIDEKIyA0OCAiLi4vd2NzbWJzL3djaGFyLmgiCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
NDkgIi4uL3djc21icy93Y2hhci5oIiAyCgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3dj
aGFyLmgiIDEKIyA1MSAiLi4vd2NzbWJzL3djaGFyLmgiIDIKIyAzICIuLi9pbmNsdWRlL3djaGFy
LmgiIDIKIyAyOSAiLi4vaWNvbnYvZ2NvbnYuaCIgMgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2lh
NjQtc3VzZS1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMSAiLi4vaWNvbnYv
Z2NvbnYuaCIgMgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05W
LAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVU
LAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NP
TlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19H
Q09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAw
MDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252
X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29i
amVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZf
aW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252
X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2Nv
bnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAq
LCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsK
Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICos
IF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9p
ZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0
KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5z
X2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29u
dGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lk
ICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1
Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGli
X2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAg
Y2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2Zj
dDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5k
X2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9t
OwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBf
X3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZl
bmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgog
IGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsK
CgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3Ry
dWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252
X3N0ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9fZ2NvbnZfdDsKIyAyICIuLi9pbmNsdWRlL2djb252
LmgiIDIKIyA0NSAiLi4vc3lzZGVwcy9nbnUvX0dfY29uZmlnLmgiIDIKdHlwZWRlZiB1bmlvbgp7
CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2dj
b252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBf
X2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191
aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7
CiMgMzMgIi4uL2xpYmlvL2xpYmlvLmgiIDIKIyA1MyAiLi4vbGliaW8vbGliaW8uaCIKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2lhNjQtc3VzZS1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGFyZy5oIiAx
IDMKIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVkZS9z
dGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDU0
ICIuLi9saWJpby9saWJpby5oIiAyCiMgMTYwICIuLi9saWJpby9saWJpby5oIgpzdHJ1Y3QgX0lP
X2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE3MCAiLi4vbGliaW8vbGliaW8uaCIKdHlwZWRl
ZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9f
bWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwoj
IDE5MyAiLi4vbGliaW8vbGliaW8uaCIKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9f
Y29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19j
b2RlY3Z0X25vY29udgp9OwoKCgoKc3RydWN0IF9JT19jb2RlY3Z0CnsKICB2b2lkICgqX19jb2Rl
Y3Z0X2Rlc3RyKSAoc3RydWN0IF9JT19jb2RlY3Z0ICopOwogIGVudW0gX19jb2RlY3Z0X3Jlc3Vs
dCAoKl9fY29kZWN2dF9kb19vdXQpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0YXRlX3QgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90ICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFy
X3QgKiosIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqLCBjaGFyICoqKTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQgKCpfX2NvZGVjdnRf
ZG9fdW5zaGlmdCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0YXRlX3QgKiwgY2hhciAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBjaGFyICoq
KTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQgKCpfX2NvZGVjdnRfZG9faW4pIChzdHJ1Y3QgX0lP
X2NvZGVjdnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X21ic3RhdGVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiosIHdjaGFyX3QgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICosIHdjaGFyX3QgKiopOwogIGlu
dCAoKl9fY29kZWN2dF9kb19lbmNvZGluZykgKHN0cnVjdCBfSU9fY29kZWN2dCAqKTsKICBpbnQg
KCpfX2NvZGVjdnRfZG9fYWx3YXlzX25vY29udikgKHN0cnVjdCBfSU9fY29kZWN2dCAqKTsKICBp
bnQgKCpfX2NvZGVjdnRfZG9fbGVuZ3RoKSAoc3RydWN0IF9JT19jb2RlY3Z0ICosIF9fbWJzdGF0
ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBzaXplX3QpOwogIGludCAoKl9fY29kZWN2dF9kb19tYXhfbGVuZ3RoKSAoc3RydWN0
IF9JT19jb2RlY3Z0ICopOwoKICBfR19pY29udl90IF9fY2RfaW47CiAgX0dfaWNvbnZfdCBfX2Nk
X291dDsKfTsKCgpzdHJ1Y3QgX0lPX3dpZGVfZGF0YQp7CiAgd2NoYXJfdCAqX0lPX3JlYWRfcHRy
OwogIHdjaGFyX3QgKl9JT19yZWFkX2VuZDsKICB3Y2hhcl90ICpfSU9fcmVhZF9iYXNlOwogIHdj
aGFyX3QgKl9JT193cml0ZV9iYXNlOwogIHdjaGFyX3QgKl9JT193cml0ZV9wdHI7CiAgd2NoYXJf
dCAqX0lPX3dyaXRlX2VuZDsKICB3Y2hhcl90ICpfSU9fYnVmX2Jhc2U7CiAgd2NoYXJfdCAqX0lP
X2J1Zl9lbmQ7CgogIHdjaGFyX3QgKl9JT19zYXZlX2Jhc2U7CiAgd2NoYXJfdCAqX0lPX2JhY2t1
cF9iYXNlOwoKICB3Y2hhcl90ICpfSU9fc2F2ZV9lbmQ7CgogIF9fbWJzdGF0ZV90IF9JT19zdGF0
ZTsKICBfX21ic3RhdGVfdCBfSU9fbGFzdF9zdGF0ZTsKICBzdHJ1Y3QgX0lPX2NvZGVjdnQgX2Nv
ZGVjdnQ7CgogIHdjaGFyX3QgX3Nob3J0YnVmWzFdOwoKICBzdHJ1Y3QgX0lPX2p1bXBfdCAqX3dp
ZGVfdnRhYmxlOwp9OwoKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hh
ciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9i
YXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hh
ciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9l
bmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNo
YXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9f
b2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2ln
bmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xv
Y2tfdCAqX2xvY2s7CiMgMzA1ICIuLi9saWJpby9saWJpby5oIgogIF9fb2ZmNjRfdCBfb2Zmc2V0
OwoKCiAgc3RydWN0IF9JT19jb2RlY3Z0ICpfY29kZWN2dDsKICBzdHJ1Y3QgX0lPX3dpZGVfZGF0
YSAqX3dpZGVfZGF0YTsKCgoKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6
ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9J
T19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBf
SU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMg
X0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRl
cnJfOwoKCgoKCmV4dGVybiBfSU9fRklMRSAqX0lPX3N0ZGluOwpleHRlcm4gX0lPX0ZJTEUgKl9J
T19zdGRvdXQ7CmV4dGVybiBfSU9fRklMRSAqX0lPX3N0ZGVycjsKCgoKCgoKCnR5cGVkZWYgX19z
c2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAq
X19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lk
ICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19p
b19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4gY29v
a2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0ZV9m
dW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90Owp0
eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRlZiBz
dHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsKICBf
X2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tpZV9p
b19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tpZV9p
b19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQgX0lP
X2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19yZWFk
X3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBfSU9f
Y29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRlcmZs
b3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVy
biBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193dW5k
ZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICop
IDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMgNDI2
ICIuLi9saWJpby9saWJpby5oIgpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkg
OwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4g
aW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9J
T19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpf
X2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRy
eWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIuLi9saWJpby9saWJpby5oIgpleHRlcm4g
aW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jl
c3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jl
c3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwg
Y29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19z
c2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNp
emVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2
NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAq
LCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9J
T19GSUxFICopIDsKCgpleHRlcm4gd2ludF90IF9JT19nZXR3YyAoX0lPX0ZJTEUgKl9fZnApIDsK
ZXh0ZXJuIHdpbnRfdCBfSU9fcHV0d2MgKHdjaGFyX3QgX193YywgX0lPX0ZJTEUgKl9fZnApIDsK
ZXh0ZXJuIGludCBfSU9fZndpZGUgKF9JT19GSUxFICpfX2ZwLCBpbnQgX19tb2RlKSA7CiMgNTA1
ICIuLi9saWJpby9saWJpby5oIgpleHRlcm4gaW50IF9JT192ZndzY2FuZiAoX0lPX0ZJTEUgKiBf
X3Jlc3RyaWN0LCBjb25zdCB3Y2hhcl90ICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9f
dmZ3cHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmlj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19z
c2l6ZV90IF9JT193cGFkbiAoX0lPX0ZJTEUgKiwgd2ludF90LCBfX3NzaXplX3QpIDsKZXh0ZXJu
IHZvaWQgX0lPX2ZyZWVfd2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNjYgIi4uL2xpYmlv
L3N0ZGlvLmgiIDIKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyA4MCAiLi4v
bGliaW8vc3RkaW8uaCIKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19m
cG9zNjRfdCBmcG9zNjRfdDsKIyAxMjkgIi4uL2xpYmlvL3N0ZGlvLmgiCiMgMSAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQvZ2xpYmMtMi4yLjQvY2MvYml0cy9zdGRpb19saW0uaCIgMQojIDEzMCAi
Li4vbGliaW8vc3RkaW8uaCIgMgoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpz
dGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CgoKCgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2Nv
bnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIg
Kl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAo
dm9pZCkgOwojIDE1OCAiLi4vbGliaW8vc3RkaW8uaCIKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAo
dm9pZCkgOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNo
YXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxNzggIi4uL2xpYmlvL3N0ZGlvLmgiCmV4dGVy
biBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBp
bnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9f
c3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9w
ZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJl
b3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAg
ICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMjIgIi4uL2xpYmlvL3N0ZGlv
LmgiCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzKSA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAq
X19tb2RlcykgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmlj
dCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9fY29va2ll
X2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZv
aWQgKl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCmV4dGVy
biBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgOwoK
CgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq
X19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAg
aW50IF9fbW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAo
RklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3Ms
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAg
OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkp
OwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJp
Y3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3Qg
X19wdHIsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf
XywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAw
KSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3Ry
ZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IGdl
dGNoYXIgKHZvaWQpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSA7CgoKCgpleHRlcm4g
aW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgOwoKCgoKCgoK
ZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoK
CmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0
ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoKCgoKZXh0ZXJuIGludCBnZXR3
IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19z
dHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGlu
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJu
IGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoK
CgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSA7CiMgNDI2ICIuLi9saWJpby9zdGRpby5o
IgpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24s
IGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9f
cmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAq
X19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRs
aW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAg
ICAgICAgOwoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKZXh0
ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBzaXpl
X3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCmV4
dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3Ry
aWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3QgZndy
aXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwg
bG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChG
SUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwoj
IDQ4OSAiLi4vbGliaW8vc3RkaW8uaCIKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFt
LCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAo
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgICAgICAgIDsKCmV4dGVy
biBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgOwoj
IDUyMyAiLi4vbGliaW8vc3RkaW8uaCIKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19zdHJl
YW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRl
bGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAg
OwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvczY0X3Qg
Kl9fcG9zKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0
ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVy
biBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQg
cGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0
ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoK
CmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxl
bm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAo
X19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVy
biBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlk
IChjaGFyICpfX3MpIDsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSA7CgoK
CgpzdHJ1Y3Qgb2JzdGFjazsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2Jz
dGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CmV4dGVybiBpbnQgb2JzdGFj
a192cHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIDsKCgoKCgoK
CmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm
dHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUg
KEZJTEUgKl9fc3RyZWFtKSA7CiMgMTEgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMgoKCmV4dGVybiBp
bnQgX19mY2xvc2VhbGwgKHZvaWQpOwpleHRlcm4gaW50IF9fc25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CmV4dGVybiBpbnQgX192c25wcmludGYgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7
CmV4dGVybiBpbnQgX192ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX192c2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywg
MSwgMCkpKTsKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIsIHNp
emVfdCAqX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3N0cmVhbSk7
CmV4dGVybiBpbnQgX192c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gRklMRSAqX19uZXdf
dG1wZmlsZSAodm9pZCk7CmV4dGVybiBGSUxFICpfX29sZF90bXBmaWxlICh2b2lkKTsKCgoKCgoK
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pYTY0LXN1c2UtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgNDUgIi4uL2luY2x1ZGUvc3RkaW8uaCIgMgoKZXh0ZXJuIGludCBfX3BhdGhf
c2VhcmNoIChjaGFyICpfX3RtcGwsIHNpemVfdCBfX3RtcGxfbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fdHJ5X3RlbXBkaXIpOwoKZXh0ZXJuIGludCBfX2dl
bl90ZW1wbmFtZSAoY2hhciAqX190bXBsLCBpbnQgX19raW5kKTsKCgoKCgoKCmV4dGVybiB2b2lk
IF9fbGliY19mYXRhbCAoX19jb25zdCBjaGFyICpfX21lc3NhZ2UpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fZmxvY2tmaWxlIChGSUxFICpfX3N0
cmVhbSk7CgoKZXh0ZXJuIHZvaWQgX19mdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pOwoKCgpl
eHRlcm4gaW50IF9fZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IF9f
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCk7CgpleHRlcm4gd2ludF90IF9fZ2V0d2NfdW5sb2Nr
ZWQgKEZJTEUgKl9fZnApOwojIDEyOCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvZ2xpYmMtMi4y
LjQvY2MvbWF0aC9saWJtLXRlc3QuYyIgMgojIDEgIi4uL2luY2x1ZGUvc3RyaW5nLmgiIDEKCgoj
IDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEKIyAxICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIg
MQojIDIgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIKIyA0ICIuLi9pbmNsdWRlL3N0cmluZy5o
IiAyCgpleHRlcm4gdm9pZCAqX19tZW1jY3B5ICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbik7Cgpl
eHRlcm4gc2l6ZV90IF9fc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKl9f
c3Ryc2VwIChjaGFyICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwoKZXh0ZXJu
IGludCBfX3N0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX3N0cm5jYXNl
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIg
Kl9fc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKl9f
c3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKQogICAgIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcs
IHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2
b2lkICpfX3Jhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqX19zdHJjaHJudWwgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIHZvaWQgKl9fbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gdm9pZCAqX19tZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX2ZmcyAoaW50IF9faSkgX19hdHRyaWJ1
dGVfXyAoKGNvbnN0KSk7CgpleHRlcm4gY2hhciAqX19zdHJlcnJvcl9yIChpbnQgX19lcnJudW0s
IGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pOwoKCgojIDEgIi4uL3N0cmluZy9zdHJpbmcu
aCIgMQojIDI2ICIuLi9zdHJpbmcvc3RyaW5nLmgiCiMgMSAiLi4vaW5jbHVkZS9mZWF0dXJlcy5o
IiAxCiMgMjcgIi4uL3N0cmluZy9zdHJpbmcuaCIgMgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaWE2NC1zdXNlLWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIuLi9z
dHJpbmcvc3RyaW5nLmgiIDIKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmlj
dCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3Qs
IF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgpleHRl
cm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgICAgICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50
IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9f
czEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAq
X19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3Ms
IGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1y
Y2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAg
ICAgICAgICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywg
c2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVy
biBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4
dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJu
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3Ry
Y29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKCgoKIyAxICIuLi9pbmNsdWRlL3hs
b2NhbGUuaCIgMQojIDEgIi4uL2xvY2FsZS94bG9jYWxlLmgiIDEKIyAyICIuLi9pbmNsdWRlL3hs
b2NhbGUuaCIgMgojIDEwOSAiLi4vc3RyaW5nL3N0cmluZy5oIiAyCgoKZXh0ZXJuIGludCBfX3N0
cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxl
X3QgX19sKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
c2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNp
emVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sKSA7CgoK
CgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAgKF9fY29uc3QgY2hhciAq
X19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwojIDE1NSAiLi4vc3RyaW5nL3N0cmluZy5oIgpleHRlcm4gY2hhciAqc3RyY2hyIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgpl
eHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJu
IHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVj
dCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXpl
X3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBi
cmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2Nv
bnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIg
KF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RydG9r
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0p
CiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3Nh
dmVfcHRyKSA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0g
KF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAq
X19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2
b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmlu
Zywgc2l6ZV90IF9fbWF4bGVuKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4g
Y2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm
bGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsK
CgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwg
c2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpf
X3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50
IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGlu
dCBmZnNsIChsb25nIGludCBfX2wpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0
ZW5zaW9uX18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX3N0cmNhc2Vj
bXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKZXh0ZXJuIGludCBfX3N0cm5jYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
X19sb2NhbGVfdCBfX2xvYykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwK
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsK
CgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMp
CiAgICAgICAgICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKCgpleHRl
cm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7
CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
OwoKCmV4dGVybiBjaGFyICpzdHJmcnkgKGNoYXIgKl9fc3RyaW5nKSA7CgoKZXh0ZXJuIHZvaWQg
Km1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgoKCgpleHRlcm4gY2hhciAqYmFz
ZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwojIDUwICIuLi9pbmNsdWRlL3N0cmlu
Zy5oIiAyCiMgMTI5ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9nbGliYy0yLjIuNC9jYy9tYXRo
L2xpYm0tdGVzdC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9hcmdwLmgiIDEKIyAxICIuLi9hcmdwL2Fy
Z3AuaCIgMQojIDI0ICIuLi9hcmdwL2FyZ3AuaCIKIyAxICIuLi9pbmNsdWRlL3N0ZGlvLmgiIDEK
IyAyNSAiLi4vYXJncC9hcmdwLmgiIDIKIyAxICIuLi9pbmNsdWRlL2N0eXBlLmgiIDEKIyAxICIu
Li9jdHlwZS9jdHlwZS5oIiAxCiMgMjYgIi4uL2N0eXBlL2N0eXBlLmgiCiMgMSAiLi4vaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxCiMgMjcgIi4uL2N0eXBlL2N0eXBlLmgiIDIKIyAxICIuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9pYTY0L2JpdHMvdHlwZXMuaCIgMQojIDI4ICIuLi9jdHlwZS9jdHlw
ZS5oIiAyCiMgNDAgIi4uL2N0eXBlL2N0eXBlLmgiCiMgMSAiLi4vaW5jbHVkZS9lbmRpYW4uaCIg
MQojIDEgIi4uL3N0cmluZy9lbmRpYW4uaCIgMQojIDIgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDIK
IyA0MSAiLi4vY3R5cGUvY3R5cGUuaCIgMgoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkg
PCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIg
PSAoKDEpIDwgOCA/ICgoMSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9J
U2FscGhhID0gKCgyKSA8IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgp
KSwKICBfSVNkaWdpdCA9ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMp
KSA+PiA4KSksCiAgX0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgo
MSA8PCAoNCkpID4+IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwg
OCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAo
NikpIDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAo
KDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkg
PCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwg
PSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9J
U3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+
IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8
PCAoMTEpKSA+PiA4KSkKfTsKIyA3NSAiLi4vY3R5cGUvY3R5cGUuaCIKZXh0ZXJuIF9fY29uc3Qg
dW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAq
X19jdHlwZV90b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBl
cjsKIyA5MSAiLi4vY3R5cGUvY3R5cGUuaCIKZXh0ZXJuIGludCBpc2FsbnVtIChpbnQpIDsKZXh0
ZXJuIGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIDsKZXh0ZXJu
IGludCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIDsKZXh0ZXJuIGlu
dCBpc2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsKZXh0ZXJuIGludCBp
c3B1bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJuIGludCBpc3Vw
cGVyIChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKZXh0ZXJuIGludCBpc2Js
YW5rIChpbnQpIDsKCgoKCmV4dGVybiBpbnQgdG9sb3dlciAoaW50IF9fYykgOwoKCmV4dGVybiBp
bnQgdG91cHBlciAoaW50IF9fYykgOwoKCgoKCgpleHRlcm4gaW50IGlzYXNjaWkgKGludCBfX2Mp
IDsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgX3RvdXBw
ZXIgKGludCkgOwpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIDsKIyAyMTAgIi4uL2N0eXBlL2N0
eXBlLmgiCiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAxICIuLi9sb2NhbGUveGxvY2Fs
ZS5oIiAxCiMgMiAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDIKIyAyMTEgIi4uL2N0eXBlL2N0eXBl
LmgiIDIKIyAyMjMgIi4uL2N0eXBlL2N0eXBlLmgiCmV4dGVybiBpbnQgX19pc2FsbnVtX2wgKGlu
dCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3Qp
IDsKZXh0ZXJuIGludCBfX2lzY250cmxfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQg
X19pc2RpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChp
bnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBfX2xvY2FsZV90
KSA7CmV4dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50
IF9faXNwdW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAo
aW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVf
dCkgOwpleHRlcm4gaW50IF9faXN4ZGlnaXRfbCAoaW50LCBfX2xvY2FsZV90KSA7CgpleHRlcm4g
aW50IF9faXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIDsKCgoKZXh0ZXJuIGludCBfX3RvbG93
ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKCgpleHRlcm4gaW50IF9fdG91cHBlcl9s
IChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgOwojIDIgIi4uL2luY2x1ZGUvY3R5cGUuaCIgMgoj
IDI2ICIuLi9hcmdwL2FyZ3AuaCIgMgojIDEgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDEKCgojIDEg
Ii4uL3Bvc2l4L2dldG9wdC5oIiAxCiMgNDcgIi4uL3Bvc2l4L2dldG9wdC5oIgpleHRlcm4gY2hh
ciAqb3B0YXJnOwojIDYxICIuLi9wb3NpeC9nZXRvcHQuaCIKZXh0ZXJuIGludCBvcHRpbmQ7CgoK
CgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgOTQgIi4uL3Bvc2l4
L2dldG9wdC5oIgpzdHJ1Y3Qgb3B0aW9uCnsKCiAgY29uc3QgY2hhciAqbmFtZTsKCgoKCgogIGlu
dCBoYXNfYXJnOwogIGludCAqZmxhZzsKICBpbnQgdmFsOwp9OwojIDE0NSAiLi4vcG9zaXgvZ2V0
b3B0LmgiCmV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBjaGFyICpjb25zdCAqX19hcmd2
LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CgoKCgoKZXh0ZXJuIGludCBnZXRvcHRfbG9uZyAo
aW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMs
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKl9fbG9uZ29wdHMs
IGludCAqX19sb25naW5kKTsKZXh0ZXJuIGludCBnZXRvcHRfbG9uZ19vbmx5IChpbnQgX19hcmdj
LCBjaGFyICpjb25zdCAqX19hcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKl9fc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
cnVjdCBvcHRpb24gKl9fbG9uZ29wdHMsIGludCAqX19sb25naW5kKTsKCgpleHRlcm4gaW50IF9n
ZXRvcHRfaW50ZXJuYWwgKGludCBfX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX2FyZ3YsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqX19zaG9ydG9wdHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqX19sb25nb3B0cywgaW50ICpf
X2xvbmdpbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fbG9uZ19vbmx5KTsK
IyA0ICIuLi9pbmNsdWRlL2dldG9wdC5oIiAyCgoKZXh0ZXJuIHZvaWQgX19nZXRvcHRfY2xlYW5f
ZW52aXJvbm1lbnQgKGNoYXIgKipfX2Vudik7CiMgMjcgIi4uL2FyZ3AvYXJncC5oIiAyCgoKIyAx
ICIuLi9pbmNsdWRlL2Vycm5vLmgiIDEKIyAzMCAiLi4vYXJncC9hcmdwLmgiIDIKIyA0OSAiLi4v
YXJncC9hcmdwLmgiCnN0cnVjdCBhcmdwX29wdGlvbgp7CgoKICBjb25zdCBjaGFyICpuYW1lOwoK
CgogIGludCBrZXk7CgoKCiAgY29uc3QgY2hhciAqYXJnOwoKCiAgaW50IGZsYWdzOwoKCgoKCiAg
Y29uc3QgY2hhciAqZG9jOwojIDc5ICIuLi9hcmdwL2FyZ3AuaCIKICBpbnQgZ3JvdXA7Cn07CiMg
MTE0ICIuLi9hcmdwL2FyZ3AuaCIKc3RydWN0IGFyZ3A7CnN0cnVjdCBhcmdwX3N0YXRlOwpzdHJ1
Y3QgYXJncF9jaGlsZDsKCgp0eXBlZGVmIGVycm9yX3QgKCphcmdwX3BhcnNlcl90KSAoaW50IGtl
eSwgY2hhciAqYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFy
Z3Bfc3RhdGUgKnN0YXRlKTsKIyAxODggIi4uL2FyZ3AvYXJncC5oIgpzdHJ1Y3QgYXJncAp7CgoK
ICBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gKm9wdGlvbnM7CiMgMjAxICIuLi9hcmdwL2FyZ3Au
aCIKICBhcmdwX3BhcnNlcl90IHBhcnNlcjsKCgoKCgoKICBjb25zdCBjaGFyICphcmdzX2RvYzsK
CgoKCiAgY29uc3QgY2hhciAqZG9jOwoKCgoKCgoKICBjb25zdCBzdHJ1Y3QgYXJncF9jaGlsZCAq
Y2hpbGRyZW47CiMgMjMzICIuLi9hcmdwL2FyZ3AuaCIKICBjaGFyICooKmhlbHBfZmlsdGVyKSAo
aW50IF9fa2V5LCBjb25zdCBjaGFyICpfX3RleHQsIHZvaWQgKl9faW5wdXQpOwoKCgoKICBjb25z
dCBjaGFyICphcmdwX2RvbWFpbjsKfTsKIyAyNTQgIi4uL2FyZ3AvYXJncC5oIgpzdHJ1Y3QgYXJn
cF9jaGlsZAp7CgogIGNvbnN0IHN0cnVjdCBhcmdwICphcmdwOwoKCiAgaW50IGZsYWdzOwoKCgoK
CiAgY29uc3QgY2hhciAqaGVhZGVyOwoKCgoKCgoKICBpbnQgZ3JvdXA7Cn07CgoKCnN0cnVjdCBh
cmdwX3N0YXRlCnsKCiAgY29uc3Qgc3RydWN0IGFyZ3AgKnJvb3RfYXJncDsKCgogIGludCBhcmdj
OwogIGNoYXIgKiphcmd2OwoKCiAgaW50IG5leHQ7CgoKICB1bnNpZ25lZCBmbGFnczsKCgoKCgog
IHVuc2lnbmVkIGFyZ19udW07CgoKCgogIGludCBxdW90ZWQ7CgoKICB2b2lkICppbnB1dDsKCgog
IHZvaWQgKipjaGlsZF9pbnB1dHM7CgoKICB2b2lkICpob29rOwoKCgogIGNoYXIgKm5hbWU7CgoK
ICBGSUxFICplcnJfc3RyZWFtOwogIEZJTEUgKm91dF9zdHJlYW07CgogIHZvaWQgKnBzdGF0ZTsK
fTsKIyAzNzYgIi4uL2FyZ3AvYXJncC5oIgpleHRlcm4gZXJyb3JfdCBhcmdwX3BhcnNlIChjb25z
dCBzdHJ1Y3QgYXJncCAqX19yZXN0cmljdCBfX2FyZ3AsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2FyZ2MsIGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJndiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgX19mbGFncywgaW50ICpfX3Jlc3RyaWN0IF9fYXJnX2luZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jlc3RyaWN0IF9faW5wdXQpIDsK
ZXh0ZXJuIGVycm9yX3QgX19hcmdwX3BhcnNlIChjb25zdCBzdHJ1Y3QgYXJncCAqX19yZXN0cmlj
dCBfX2FyZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYXJnYywgY2hhciAq
Kl9fcmVzdHJpY3QgX19hcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IF9fZmxhZ3MsIGludCAqX19yZXN0cmljdCBfX2FyZ19pbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpfX3Jlc3RyaWN0IF9faW5wdXQpIDsKCgoKCgoKCmV4dGVybiBjb25z
dCBjaGFyICphcmdwX3Byb2dyYW1fdmVyc2lvbjsKCgoKCgoKZXh0ZXJuIHZvaWQgKCphcmdwX3By
b2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFyZ3Bfc3RhdGUgKl9fcmVz
dHJpY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zdGF0ZSk7
CgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICphcmdwX3Byb2dyYW1fYnVnX2FkZHJlc3M7CgoKCgpl
eHRlcm4gZXJyb3JfdCBhcmdwX2Vycl9leGl0X3N0YXR1czsKIyA0NDUgIi4uL2FyZ3AvYXJncC5o
IgpleHRlcm4gdm9pZCBhcmdwX2hlbHAgKGNvbnN0IHN0cnVjdCBhcmdwICpfX3Jlc3RyaWN0IF9f
YXJncCwKICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAog
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9fZmxhZ3MsIGNoYXIgKl9fcmVzdHJpY3Qg
X19uYW1lKSA7CmV4dGVybiB2b2lkIF9fYXJncF9oZWxwIChjb25zdCBzdHJ1Y3QgYXJncCAqX19y
ZXN0cmljdCBfX2FyZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLCB1bnNpZ25lZCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19uYW1lKSA7CiMgNDYyICIuLi9hcmdwL2FyZ3AuaCIKZXh0ZXJuIHZvaWQgYXJncF9zdGF0
ZV9oZWxwIChjb25zdCBzdHJ1Y3QgYXJncF9zdGF0ZSAqX19yZXN0cmljdCBfX3N0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fZmxhZ3MpIDsKZXh0ZXJuIHZv
aWQgX19hcmdwX3N0YXRlX2hlbHAgKGNvbnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0
IF9fc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f
ZmxhZ3MpIDsKCgpleHRlcm4gdm9pZCBhcmdwX3VzYWdlIChjb25zdCBzdHJ1Y3QgYXJncF9zdGF0
ZSAqX19zdGF0ZSkgOwpleHRlcm4gdm9pZCBfX2FyZ3BfdXNhZ2UgKGNvbnN0IHN0cnVjdCBhcmdw
X3N0YXRlICpfX3N0YXRlKSA7CgoKCgpleHRlcm4gdm9pZCBhcmdwX2Vycm9yIChjb25zdCBzdHJ1
Y3QgYXJncF9zdGF0ZSAqX19yZXN0cmljdCBfX3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiB2b2lkIF9fYXJncF9lcnJv
ciAoY29uc3Qgc3RydWN0IGFyZ3Bfc3RhdGUgKl9fcmVzdHJpY3QgX19zdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CiMgNDkxICIu
Li9hcmdwL2FyZ3AuaCIKZXh0ZXJuIHZvaWQgYXJncF9mYWlsdXJlIChjb25zdCBzdHJ1Y3QgYXJn
cF9zdGF0ZSAqX19yZXN0cmljdCBfX3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX3N0YXR1cywgaW50IF9fZXJybnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgNCwgNSkpKTsKZXh0ZXJuIHZvaWQgX19hcmdwX2ZhaWx1cmUgKGNv
bnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19zdGF0dXMsIGludCBfX2Vycm51bSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgNCwgNSkpKTsKCgpleHRlcm4gaW50
IF9vcHRpb25faXNfc2hvcnQgKGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiAqX19vcHQpIDsKZXh0
ZXJuIGludCBfX29wdGlvbl9pc19zaG9ydCAoY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uICpfX29w
dCkgOwoKCgpleHRlcm4gaW50IF9vcHRpb25faXNfZW5kIChjb25zdCBzdHJ1Y3QgYXJncF9vcHRp
b24gKl9fb3B0KSA7CmV4dGVybiBpbnQgX19vcHRpb25faXNfZW5kIChjb25zdCBzdHJ1Y3QgYXJn
cF9vcHRpb24gKl9fb3B0KSA7CgoKCmV4dGVybiB2b2lkICpfYXJncF9pbnB1dCAoY29uc3Qgc3Ry
dWN0IGFyZ3AgKl9fcmVzdHJpY3QgX19hcmdwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUpCiAgICAgICAgICAgIDsK
ZXh0ZXJuIHZvaWQgKl9fYXJncF9pbnB1dCAoY29uc3Qgc3RydWN0IGFyZ3AgKl9fcmVzdHJpY3Qg
X19hcmdwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXJncF9zdGF0
ZSAqX19yZXN0cmljdCBfX3N0YXRlKQogICAgICAgICAgICA7CiMgMiAiLi4vaW5jbHVkZS9hcmdw
LmgiIDIKIyAxMzAgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgv
bGlibS10ZXN0LmMiIDIKIyAxNTYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40
L2NjL21hdGgvbGlibS10ZXN0LmMiCnN0YXRpYyBGSUxFICp1bHBzX2ZpbGU7CnN0YXRpYyBpbnQg
b3V0cHV0X3VscHM7CgpzdGF0aWMgaW50IG5vRXJyb3JzOwpzdGF0aWMgaW50IG5vVGVzdHM7CnN0
YXRpYyBpbnQgbm9FeGNUZXN0czsKc3RhdGljIGludCBub1hGYWlsczsKc3RhdGljIGludCBub1hQ
YXNzZXM7CgpzdGF0aWMgaW50IHZlcmJvc2U7CnN0YXRpYyBpbnQgb3V0cHV0X21heF9lcnJvcjsK
c3RhdGljIGludCBvdXRwdXRfcG9pbnRzOwpzdGF0aWMgaW50IGlnbm9yZV9tYXhfdWxwOwoKc3Rh
dGljIGxvbmcgZG91YmxlIG1pbnVzX3plcm8sIHBsdXNfemVybzsKc3RhdGljIGxvbmcgZG91Ymxl
IHBsdXNfaW5mdHksIG1pbnVzX2luZnR5LCBuYW5fdmFsdWU7CgpzdGF0aWMgbG9uZyBkb3VibGUg
bWF4X2Vycm9yLCByZWFsX21heF9lcnJvciwgaW1hZ19tYXhfZXJyb3I7CiMgMTkyICIvdXNyL3Ny
Yy9wYWNrYWdlcy9CVUlMRC9nbGliYy0yLjIuNC9jYy9tYXRoL2xpYm0tdGVzdC5jIgpzdGF0aWMg
dm9pZAppbml0X21heF9lcnJvciAodm9pZCkKewogIG1heF9lcnJvciA9IDA7CiAgcmVhbF9tYXhf
ZXJyb3IgPSAwOwogIGltYWdfbWF4X2Vycm9yID0gMDsKICBmZWNsZWFyZXhjZXB0IChGRV9BTExf
RVhDRVBUKTsKfQoKc3RhdGljIHZvaWQKc2V0X21heF9lcnJvciAobG9uZyBkb3VibGUgY3VycmVu
dCwgbG9uZyBkb3VibGUgKmN1cnJfbWF4X2Vycm9yKQp7CiAgaWYgKGN1cnJlbnQgPiAqY3Vycl9t
YXhfZXJyb3IpCiAgICAqY3Vycl9tYXhfZXJyb3IgPSBjdXJyZW50Owp9CgoKCgpzdGF0aWMgaW50
CnByaW50X3NjcmVlbiAoaW50IG9rLCBpbnQgeGZhaWwpCnsKICBpZiAob3V0cHV0X3BvaW50cwog
ICAgICAmJiAodmVyYm9zZSA+IDEKICAgICAgICAgIHx8ICh2ZXJib3NlID09IDEgJiYgb2sgPT0g
eGZhaWwpKSkKICAgIHJldHVybiAxOwogIHJldHVybiAwOwp9CgoKCgpzdGF0aWMgaW50CnByaW50
X3NjcmVlbl9tYXhfZXJyb3IgKGludCBvaywgaW50IHhmYWlsKQp7CiAgaWYgKG91dHB1dF9tYXhf
ZXJyb3IKICAgICAgJiYgKHZlcmJvc2UgPiAxCiAgICAgICAgICB8fCAoKHZlcmJvc2UgPT0gMSkg
JiYgKG9rID09IHhmYWlsKSkpKQogICAgcmV0dXJuIDE7CiAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMg
dm9pZAp1cGRhdGVfc3RhdHMgKGludCBvaywgaW50IHhmYWlsKQp7CiAgKytub1Rlc3RzOwogIGlm
IChvayAmJiB4ZmFpbCkKICAgICsrbm9YUGFzc2VzOwogIGVsc2UgaWYgKCFvayAmJiB4ZmFpbCkK
ICAgICsrbm9YRmFpbHM7CiAgZWxzZSBpZiAoIW9rICYmICF4ZmFpbCkKICAgICsrbm9FcnJvcnM7
Cn0KCnN0YXRpYyB2b2lkCnByaW50X3VscHMgKGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgbG9uZyBk
b3VibGUgdWxwKQp7CiAgaWYgKG91dHB1dF91bHBzKQogICAgewogICAgICBmcHJpbnRmICh1bHBz
X2ZpbGUsICJUZXN0IFwiJXNcIjpcbiIsIHRlc3RfbmFtZSk7CiAgICAgIGZwcmludGYgKHVscHNf
ZmlsZSwgIiVzOiAlIC40IiAiTGYiICJcbiIsCiAgICAgICAgICAgICAgICJsZG91YmxlIiwgdWxw
KTsKCiAgICB9Cn0KCnN0YXRpYyB2b2lkCnByaW50X2Z1bmN0aW9uX3VscHMgKGNvbnN0IGNoYXIg
KmZ1bmN0aW9uX25hbWUsIGxvbmcgZG91YmxlIHVscCkKewogIGlmIChvdXRwdXRfdWxwcykKICAg
IHsKICAgICAgZnByaW50ZiAodWxwc19maWxlLCAiRnVuY3Rpb246IFwiJXNcIjpcbiIsIGZ1bmN0
aW9uX25hbWUpOwogICAgICBmcHJpbnRmICh1bHBzX2ZpbGUsICIlczogJSAuNCIgIkxmIiAiXG4i
LAogICAgICAgICAgICAgICAibGRvdWJsZSIsIHVscCk7CgogICAgfQp9CgoKc3RhdGljIHZvaWQK
cHJpbnRfY29tcGxleF9mdW5jdGlvbl91bHBzIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBs
b25nIGRvdWJsZSByZWFsX3VscCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRv
dWJsZSBpbWFnX3VscCkKewogIGlmIChvdXRwdXRfdWxwcykKICAgIHsKICAgICAgaWYgKHJlYWxf
dWxwICE9IDAuMCkKICAgICAgICB7CiAgICAgICAgICBmcHJpbnRmICh1bHBzX2ZpbGUsICJGdW5j
dGlvbjogUmVhbCBwYXJ0IG9mIFwiJXNcIjpcbiIsIGZ1bmN0aW9uX25hbWUpOwogICAgICAgICAg
ZnByaW50ZiAodWxwc19maWxlLCAiJXM6ICUgLjQiICJMZiIgIlxuIiwKICAgICAgICAgICAgICAg
ICAgICJsZG91YmxlIiwgcmVhbF91bHApOwoKICAgICAgICB9CiAgICAgIGlmIChpbWFnX3VscCAh
PSAwLjApCiAgICAgICAgewogICAgICAgICAgZnByaW50ZiAodWxwc19maWxlLCAiRnVuY3Rpb246
IEltYWdpbmFyeSBwYXJ0IG9mIFwiJXNcIjpcbiIsIGZ1bmN0aW9uX25hbWUpOwogICAgICAgICAg
ZnByaW50ZiAodWxwc19maWxlLCAiJXM6ICUgLjQiICJMZiIgIlxuIiwKICAgICAgICAgICAgICAg
ICAgICJsZG91YmxlIiwgaW1hZ191bHApOwoKICAgICAgICB9CgoKICAgIH0KfQoKCgoKc3RhdGlj
IHZvaWQKZnBzdGFja190ZXN0IChjb25zdCBjaGFyICp0ZXN0X25hbWUpCnsKIyAzMTkgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL2dsaWJjLTIuMi40L2NjL21hdGgvbGlibS10ZXN0LmMiCn0KCgpz
dGF0aWMgdm9pZApwcmludF9tYXhfZXJyb3IgKGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwgbG9uZyBk
b3VibGUgYWxsb3dlZCwgaW50IHhmYWlsKQp7CiAgaW50IG9rID0gMDsKCiAgaWYgKG1heF9lcnJv
ciA9PSAwLjAgfHwgKG1heF9lcnJvciA8PSBhbGxvd2VkICYmICFpZ25vcmVfbWF4X3VscCkpCiAg
ICB7CiAgICAgIG9rID0gMTsKICAgIH0KCiAgaWYgKCFvaykKICAgIHByaW50X2Z1bmN0aW9uX3Vs
cHMgKGZ1bmNfbmFtZSwgbWF4X2Vycm9yKTsKCgogIGlmIChwcmludF9zY3JlZW5fbWF4X2Vycm9y
IChvaywgeGZhaWwpKQogICAgewogICAgICBwcmludGYgKCJNYXhpbWFsIGVycm9yIG9mIGAlcydc
biIsIGZ1bmNfbmFtZSk7CiAgICAgIHByaW50ZiAoIiBpcyAgICAgIDogJSAuNCIgIkxmIiAiIHVs
cFxuIiwgbWF4X2Vycm9yKTsKICAgICAgcHJpbnRmICgiIGFjY2VwdGVkOiAlIC40IiAiTGYiICIg
dWxwXG4iLCBhbGxvd2VkKTsKICAgIH0KCiAgdXBkYXRlX3N0YXRzIChvaywgeGZhaWwpOwp9CgoK
c3RhdGljIHZvaWQKcHJpbnRfY29tcGxleF9tYXhfZXJyb3IgKGNvbnN0IGNoYXIgKmZ1bmNfbmFt
ZSwgX19jb21wbGV4X18gbG9uZyBkb3VibGUgYWxsb3dlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcGxleF9fIGludCB4ZmFpbCkKewogIGludCBvayA9IDA7CgogIGlmICgocmVhbF9t
YXhfZXJyb3IgPD0gX19yZWFsX18gYWxsb3dlZCkKICAgICAgJiYgKGltYWdfbWF4X2Vycm9yIDw9
IF9faW1hZ19fIGFsbG93ZWQpKQogICAgewogICAgICBvayA9IDE7CiAgICB9CgogIGlmICghb2sp
CiAgICBwcmludF9jb21wbGV4X2Z1bmN0aW9uX3VscHMgKGZ1bmNfbmFtZSwgcmVhbF9tYXhfZXJy
b3IsIGltYWdfbWF4X2Vycm9yKTsKCgogIGlmIChwcmludF9zY3JlZW5fbWF4X2Vycm9yIChvaywg
eGZhaWwpKQogICAgewogICAgICBwcmludGYgKCJNYXhpbWFsIGVycm9yIG9mIHJlYWwgcGFydCBv
ZjogJXNcbiIsIGZ1bmNfbmFtZSk7CiAgICAgIHByaW50ZiAoIiBpcyAgICAgIDogJSAuNCIgIkxm
IiAiIHVscFxuIiwgcmVhbF9tYXhfZXJyb3IpOwogICAgICBwcmludGYgKCIgYWNjZXB0ZWQ6ICUg
LjQiICJMZiIgIiB1bHBcbiIsIF9fcmVhbF9fIGFsbG93ZWQpOwogICAgICBwcmludGYgKCJNYXhp
bWFsIGVycm9yIG9mIGltYWdpbmFyeSBwYXJ0IG9mOiAlc1xuIiwgZnVuY19uYW1lKTsKICAgICAg
cHJpbnRmICgiIGlzICAgICAgOiAlIC40IiAiTGYiICIgdWxwXG4iLCBpbWFnX21heF9lcnJvcik7
CiAgICAgIHByaW50ZiAoIiBhY2NlcHRlZDogJSAuNCIgIkxmIiAiIHVscFxuIiwgX19pbWFnX18g
YWxsb3dlZCk7CiAgICB9CgogIHVwZGF0ZV9zdGF0cyAob2ssIHhmYWlsKTsKfQoKCgpzdGF0aWMg
dm9pZAp0ZXN0X3NpbmdsZV9leGNlcHRpb24gKGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgIGlu
dCBleGNfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmVfZmxhZywKICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbGFnX25hbWUpCnsKCiAgaW50IG9rID0gMTsKICBp
ZiAoZXhjZXB0aW9uICYgZXhjX2ZsYWcpCiAgICB7CiAgICAgIGlmIChmZXRlc3RleGNlcHQgKGZl
X2ZsYWcpKQogICAgICAgIHsKICAgICAgICAgIGlmIChwcmludF9zY3JlZW4gKDEsIDApKQogICAg
ICAgICAgICBwcmludGYgKCJQYXNzOiAlczogRXhjZXB0aW9uIFwiJXNcIiBzZXRcbiIsIHRlc3Rf
bmFtZSwgZmxhZ19uYW1lKTsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAg
ICBvayA9IDA7CiAgICAgICAgICBpZiAocHJpbnRfc2NyZWVuICgwLCAwKSkKICAgICAgICAgICAg
cHJpbnRmICgiRmFpbHVyZTogJXM6IEV4Y2VwdGlvbiBcIiVzXCIgbm90IHNldFxuIiwKICAgICAg
ICAgICAgICAgICAgICB0ZXN0X25hbWUsIGZsYWdfbmFtZSk7CiAgICAgICAgfQogICAgfQogIGVs
c2UKICAgIHsKICAgICAgaWYgKGZldGVzdGV4Y2VwdCAoZmVfZmxhZykpCiAgICAgICAgewogICAg
ICAgICAgb2sgPSAwOwogICAgICAgICAgaWYgKHByaW50X3NjcmVlbiAoMCwgMCkpCiAgICAgICAg
ICAgIHByaW50ZiAoIkZhaWx1cmU6ICVzOiBFeGNlcHRpb24gXCIlc1wiIHNldFxuIiwKICAgICAg
ICAgICAgICAgICAgICB0ZXN0X25hbWUsIGZsYWdfbmFtZSk7CiAgICAgICAgfQogICAgICBlbHNl
CiAgICAgICAgewogICAgICAgICAgaWYgKHByaW50X3NjcmVlbiAoMSwgMCkpCiAgICAgICAgICAg
IHByaW50ZiAoIiVzOiBFeGNlcHRpb24gXCIlc1wiIG5vdCBzZXRcbiIsIHRlc3RfbmFtZSwKICAg
ICAgICAgICAgICAgICAgICBmbGFnX25hbWUpOwogICAgICAgIH0KICAgIH0KICBpZiAoIW9rKQog
ICAgKytub0Vycm9yczsKCgp9CgoKCgoKc3RhdGljIHZvaWQKdGVzdF9leGNlcHRpb25zIChjb25z
dCBjaGFyICp0ZXN0X25hbWUsIGludCBleGNlcHRpb24pCnsKICArK25vRXhjVGVzdHM7CgogIGlm
ICgoZXhjZXB0aW9uICYgMHg4KSA9PSAwKQogICAgdGVzdF9zaW5nbGVfZXhjZXB0aW9uICh0ZXN0
X25hbWUsIGV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyLCBGRV9ESVZC
WVpFUk8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaXZpZGUgYnkgemVybyIpOwoKCiAg
aWYgKChleGNlcHRpb24gJiAweDQpID09IDApCiAgICB0ZXN0X3NpbmdsZV9leGNlcHRpb24gKHRl
c3RfbmFtZSwgZXhjZXB0aW9uLCAweDEsIEZFX0lOVkFMSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAiSW52YWxpZCBvcGVyYXRpb24iKTsKCiAgZmVjbGVhcmV4Y2VwdCAoRkVfQUxMX0VYQ0VQ
VCk7Cn0KCgpzdGF0aWMgdm9pZApjaGVja19mbG9hdF9pbnRlcm5hbCAoY29uc3QgY2hhciAqdGVz
dF9uYW1lLCBsb25nIGRvdWJsZSBjb21wdXRlZCwgbG9uZyBkb3VibGUgZXhwZWN0ZWQsCiAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGRvdWJsZSBtYXhfdWxwLCBpbnQgeGZhaWwsIGludCBleGNl
cHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3VibGUgKmN1cnJfbWF4X2Vycm9y
KQp7CiAgaW50IG9rID0gMDsKICBpbnQgcHJpbnRfZGlmZiA9IDA7CiAgbG9uZyBkb3VibGUgZGlm
ZiA9IDA7CiAgbG9uZyBkb3VibGUgdWxwID0gMDsKCiAgdGVzdF9leGNlcHRpb25zICh0ZXN0X25h
bWUsIGV4Y2VwdGlvbnMpOwogIGlmICgoc2l6ZW9mIChjb21wdXRlZCkgPT0gc2l6ZW9mIChmbG9h
dCkgPyBfX2lzbmFuZiAoY29tcHV0ZWQpIDogc2l6ZW9mIChjb21wdXRlZCkgPT0gc2l6ZW9mIChk
b3VibGUpID8gX19pc25hbiAoY29tcHV0ZWQpIDogX19pc25hbmwgKGNvbXB1dGVkKSkgJiYgKHNp
emVvZiAoZXhwZWN0ZWQpID09IHNpemVvZiAoZmxvYXQpID8gX19pc25hbmYgKGV4cGVjdGVkKSA6
IHNpemVvZiAoZXhwZWN0ZWQpID09IHNpemVvZiAoZG91YmxlKSA/IF9faXNuYW4gKGV4cGVjdGVk
KSA6IF9faXNuYW5sIChleHBlY3RlZCkpKQogICAgb2sgPSAxOwogIGVsc2UgaWYgKChzaXplb2Yg
KGNvbXB1dGVkKSA9PSBzaXplb2YgKGZsb2F0KSA/IF9faXNpbmZmIChjb21wdXRlZCkgOiBzaXpl
b2YgKGNvbXB1dGVkKSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2lzaW5mIChjb21wdXRlZCkgOiBf
X2lzaW5mbCAoY29tcHV0ZWQpKSAmJiAoc2l6ZW9mIChleHBlY3RlZCkgPT0gc2l6ZW9mIChmbG9h
dCkgPyBfX2lzaW5mZiAoZXhwZWN0ZWQpIDogc2l6ZW9mIChleHBlY3RlZCkgPT0gc2l6ZW9mIChk
b3VibGUpID8gX19pc2luZiAoZXhwZWN0ZWQpIDogX19pc2luZmwgKGV4cGVjdGVkKSkpCiAgICB7
CgogICAgICBpZiAoKGV4Y2VwdGlvbnMgJiAweDEwKSA9PSAwCiAgICAgICAgICAmJiAoc2l6ZW9m
IChjb21wdXRlZCkgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX3NpZ25iaXRmIChjb21wdXRlZCkgOiBz
aXplb2YgKGNvbXB1dGVkKSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX3NpZ25iaXQgKGNvbXB1dGVk
KSA6IF9fc2lnbmJpdGwgKGNvbXB1dGVkKSkgIT0gKHNpemVvZiAoZXhwZWN0ZWQpID09IHNpemVv
ZiAoZmxvYXQpID8gX19zaWduYml0ZiAoZXhwZWN0ZWQpIDogc2l6ZW9mIChleHBlY3RlZCkgPT0g
c2l6ZW9mIChkb3VibGUpID8gX19zaWduYml0IChleHBlY3RlZCkgOiBfX3NpZ25iaXRsIChleHBl
Y3RlZCkpKQogICAgICAgIHsKICAgICAgICAgIG9rID0gMDsKICAgICAgICAgIHByaW50ZiAoImlu
ZmluaXR5IGhhcyB3cm9uZyBzaWduLlxuIik7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAg
b2sgPSAxOwogICAgfQoKICBlbHNlIGlmICgoc2l6ZW9mIChjb21wdXRlZCkgPT0gc2l6ZW9mIChm
bG9hdCkgPyBfX2lzaW5mZiAoY29tcHV0ZWQpIDogc2l6ZW9mIChjb21wdXRlZCkgPT0gc2l6ZW9m
IChkb3VibGUpID8gX19pc2luZiAoY29tcHV0ZWQpIDogX19pc2luZmwgKGNvbXB1dGVkKSkgfHwg
KHNpemVvZiAoY29tcHV0ZWQpID09IHNpemVvZiAoZmxvYXQpID8gX19pc25hbmYgKGNvbXB1dGVk
KSA6IHNpemVvZiAoY29tcHV0ZWQpID09IHNpemVvZiAoZG91YmxlKSA/IF9faXNuYW4gKGNvbXB1
dGVkKSA6IF9faXNuYW5sIChjb21wdXRlZCkpIHx8IChzaXplb2YgKGV4cGVjdGVkKSA9PSBzaXpl
b2YgKGZsb2F0KSA/IF9faXNpbmZmIChleHBlY3RlZCkgOiBzaXplb2YgKGV4cGVjdGVkKSA9PSBz
aXplb2YgKGRvdWJsZSkgPyBfX2lzaW5mIChleHBlY3RlZCkgOiBfX2lzaW5mbCAoZXhwZWN0ZWQp
KSB8fCAoc2l6ZW9mIChleHBlY3RlZCkgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2lzbmFuZiAoZXhw
ZWN0ZWQpIDogc2l6ZW9mIChleHBlY3RlZCkgPT0gc2l6ZW9mIChkb3VibGUpID8gX19pc25hbiAo
ZXhwZWN0ZWQpIDogX19pc25hbmwgKGV4cGVjdGVkKSkpCiAgICBvayA9IDA7CiAgZWxzZQogICAg
ewogICAgICBkaWZmID0gZmFic2wgKGNvbXB1dGVkIC0gZXhwZWN0ZWQpOwoKICAgICAgaWYgKGV4
cGVjdGVkID09IDAuMCkKICAgICAgICB1bHAgPSBkaWZmIC8gbGRleHBsICgxLjAsIC0gKDY0IC0x
KSk7CiAgICAgIGVsc2UKICAgICAgICB1bHAgPSBkaWZmIC8gbGRleHBsICgxLjAsIGlsb2dibCAo
ZXhwZWN0ZWQpIC0gKDY0IC0xKSk7CiAgICAgIHNldF9tYXhfZXJyb3IgKHVscCwgY3Vycl9tYXhf
ZXJyb3IpOwogICAgICBwcmludF9kaWZmID0gMTsKICAgICAgaWYgKChleGNlcHRpb25zICYgMHgx
MCkgPT0gMAogICAgICAgICAgJiYgY29tcHV0ZWQgPT0gMC4wICYmIGV4cGVjdGVkID09IDAuMAog
ICAgICAgICAgJiYgKHNpemVvZiAoY29tcHV0ZWQpID09IHNpemVvZiAoZmxvYXQpID8gX19zaWdu
Yml0ZiAoY29tcHV0ZWQpIDogc2l6ZW9mIChjb21wdXRlZCkgPT0gc2l6ZW9mIChkb3VibGUpID8g
X19zaWduYml0IChjb21wdXRlZCkgOiBfX3NpZ25iaXRsIChjb21wdXRlZCkpICE9IChzaXplb2Yg
KGV4cGVjdGVkKSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fc2lnbmJpdGYgKGV4cGVjdGVkKSA6IHNp
emVvZiAoZXhwZWN0ZWQpID09IHNpemVvZiAoZG91YmxlKSA/IF9fc2lnbmJpdCAoZXhwZWN0ZWQp
IDogX19zaWduYml0bCAoZXhwZWN0ZWQpKSkKICAgICAgICBvayA9IDA7CiAgICAgIGVsc2UgaWYg
KHVscCA9PSAwLjAgfHwgKHVscCA8PSBtYXhfdWxwICYmICFpZ25vcmVfbWF4X3VscCkpCiAgICAg
ICAgb2sgPSAxOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgb2sgPSAwOwogICAgICAg
ICAgcHJpbnRfdWxwcyAodGVzdF9uYW1lLCB1bHApOwogICAgICAgIH0KCiAgICB9CiAgaWYgKHBy
aW50X3NjcmVlbiAob2ssIHhmYWlsKSkKICAgIHsKICAgICAgaWYgKCFvaykKICAgICAgICBwcmlu
dGYgKCJGYWlsdXJlOiAiKTsKICAgICAgcHJpbnRmICgiVGVzdDogJXNcbiIsIHRlc3RfbmFtZSk7
CiAgICAgIHByaW50ZiAoIlJlc3VsdDpcbiIpOwogICAgICBwcmludGYgKCIgaXM6ICAgICAgICAg
JSAuMjAiICJMZSIgIiAgJSAuMjAiICJMYSIgIlxuIiwKICAgICAgICAgICAgICBjb21wdXRlZCwg
Y29tcHV0ZWQpOwogICAgICBwcmludGYgKCIgc2hvdWxkIGJlOiAgJSAuMjAiICJMZSIgIiAgJSAu
MjAiICJMYSIgIlxuIiwKICAgICAgICAgICAgICBleHBlY3RlZCwgZXhwZWN0ZWQpOwogICAgICBp
ZiAocHJpbnRfZGlmZikKICAgICAgICB7CiAgICAgICAgICBwcmludGYgKCIgZGlmZmVyZW5jZTog
JSAuMjAiICJMZSIgIiAgJSAuMjAiICJMYSIKICAgICAgICAgICAgICAgICAgIlxuIiwgZGlmZiwg
ZGlmZik7CiAgICAgICAgICBwcmludGYgKCIgdWxwICAgICAgIDogJSAuNCIgIkxmIiAiXG4iLCB1
bHApOwogICAgICAgICAgcHJpbnRmICgiIG1heC51bHAgICA6ICUgLjQiICJMZiIgIlxuIiwgbWF4
X3VscCk7CiAgICAgICAgfQogICAgfQogIHVwZGF0ZV9zdGF0cyAob2ssIHhmYWlsKTsKCiAgZnBz
dGFja190ZXN0ICh0ZXN0X25hbWUpOwp9CgoKc3RhdGljIHZvaWQKY2hlY2tfZmxvYXQgKGNvbnN0
IGNoYXIgKnRlc3RfbmFtZSwgbG9uZyBkb3VibGUgY29tcHV0ZWQsIGxvbmcgZG91YmxlIGV4cGVj
dGVkLAogICAgICAgICAgICAgbG9uZyBkb3VibGUgbWF4X3VscCwgaW50IHhmYWlsLCBpbnQgZXhj
ZXB0aW9ucykKewogIGNoZWNrX2Zsb2F0X2ludGVybmFsICh0ZXN0X25hbWUsIGNvbXB1dGVkLCBl
eHBlY3RlZCwgbWF4X3VscCwgeGZhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMsICZtYXhfZXJyb3IpOwp9CgoKc3RhdGljIHZvaWQKY2hlY2tfY29tcGxleCAoY29uc3QgY2hh
ciAqdGVzdF9uYW1lLCBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBjb21wdXRlZCwKICAgICAgICAg
ICAgICAgX19jb21wbGV4X18gbG9uZyBkb3VibGUgZXhwZWN0ZWQsCiAgICAgICAgICAgICAgIF9f
Y29tcGxleF9fIGxvbmcgZG91YmxlIG1heF91bHAsIF9fY29tcGxleF9fIGludCB4ZmFpbCwKICAg
ICAgICAgICAgICAgaW50IGV4Y2VwdGlvbikKewogIGxvbmcgZG91YmxlIHBhcnRfY29tcCwgcGFy
dF9leHAsIHBhcnRfbWF4X3VscDsKICBpbnQgcGFydF94ZmFpbDsKICBjaGFyIHN0clsyMDBdOwoK
ICBzcHJpbnRmIChzdHIsICJSZWFsIHBhcnQgb2Y6ICVzIiwgdGVzdF9uYW1lKTsKICBwYXJ0X2Nv
bXAgPSBfX3JlYWxfXyBjb21wdXRlZDsKICBwYXJ0X2V4cCA9IF9fcmVhbF9fIGV4cGVjdGVkOwog
IHBhcnRfbWF4X3VscCA9IF9fcmVhbF9fIG1heF91bHA7CiAgcGFydF94ZmFpbCA9IF9fcmVhbF9f
IHhmYWlsOwoKICBjaGVja19mbG9hdF9pbnRlcm5hbCAoc3RyLCBwYXJ0X2NvbXAsIHBhcnRfZXhw
LCBwYXJ0X21heF91bHAsIHBhcnRfeGZhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbiwgJnJlYWxfbWF4X2Vycm9yKTsKCiAgc3ByaW50ZiAoc3RyLCAiSW1hZ2luYXJ5IHBhcnQg
b2Y6ICVzIiwgdGVzdF9uYW1lKTsKICBwYXJ0X2NvbXAgPSBfX2ltYWdfXyBjb21wdXRlZDsKICBw
YXJ0X2V4cCA9IF9faW1hZ19fIGV4cGVjdGVkOwogIHBhcnRfbWF4X3VscCA9IF9faW1hZ19fIG1h
eF91bHA7CiAgcGFydF94ZmFpbCA9IF9faW1hZ19fIHhmYWlsOwoKCgogIGNoZWNrX2Zsb2F0X2lu
dGVybmFsIChzdHIsIHBhcnRfY29tcCwgcGFydF9leHAsIHBhcnRfbWF4X3VscCwgcGFydF94ZmFp
bCwKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uICYgMHgxMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgJmltYWdfbWF4X2Vycm9yKTsKfQoKCgpzdGF0aWMgdm9pZApjaGVja19pbnQg
KGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgaW50IGNvbXB1dGVkLCBpbnQgZXhwZWN0ZWQsIGludCBt
YXhfdWxwLAogICAgICAgICAgIGludCB4ZmFpbCwgaW50IGV4Y2VwdGlvbnMpCnsKICBpbnQgZGlm
ZiA9IGNvbXB1dGVkIC0gZXhwZWN0ZWQ7CiAgaW50IG9rID0gMDsKCiAgdGVzdF9leGNlcHRpb25z
ICh0ZXN0X25hbWUsIGV4Y2VwdGlvbnMpOwogIG5vVGVzdHMrKzsKICBpZiAoYWJzIChkaWZmKSA8
PSBtYXhfdWxwKQogICAgb2sgPSAxOwoKICBpZiAoIW9rKQogICAgcHJpbnRfdWxwcyAodGVzdF9u
YW1lLCBkaWZmKTsKCiAgaWYgKHByaW50X3NjcmVlbiAob2ssIHhmYWlsKSkKICAgIHsKICAgICAg
aWYgKCFvaykKICAgICAgICBwcmludGYgKCJGYWlsdXJlOiAiKTsKICAgICAgcHJpbnRmICgiVGVz
dDogJXNcbiIsIHRlc3RfbmFtZSk7CiAgICAgIHByaW50ZiAoIlJlc3VsdDpcbiIpOwogICAgICBw
cmludGYgKCIgaXM6ICAgICAgICAgJWRcbiIsIGNvbXB1dGVkKTsKICAgICAgcHJpbnRmICgiIHNo
b3VsZCBiZTogICVkXG4iLCBleHBlY3RlZCk7CiAgICB9CgogIHVwZGF0ZV9zdGF0cyAob2ssIHhm
YWlsKTsKICBmcHN0YWNrX3Rlc3QgKHRlc3RfbmFtZSk7Cn0KCgoKc3RhdGljIHZvaWQKY2hlY2tf
bG9uZyAoY29uc3QgY2hhciAqdGVzdF9uYW1lLCBsb25nIGludCBjb21wdXRlZCwgbG9uZyBpbnQg
ZXhwZWN0ZWQsCiAgICAgICAgICAgIGxvbmcgaW50IG1heF91bHAsIGludCB4ZmFpbCwgaW50IGV4
Y2VwdGlvbnMpCnsKICBsb25nIGludCBkaWZmID0gY29tcHV0ZWQgLSBleHBlY3RlZDsKICBpbnQg
b2sgPSAwOwoKICB0ZXN0X2V4Y2VwdGlvbnMgKHRlc3RfbmFtZSwgZXhjZXB0aW9ucyk7CiAgbm9U
ZXN0cysrOwogIGlmIChsYWJzIChkaWZmKSA8PSBtYXhfdWxwKQogICAgb2sgPSAxOwoKICBpZiAo
IW9rKQogICAgcHJpbnRfdWxwcyAodGVzdF9uYW1lLCBkaWZmKTsKCiAgaWYgKHByaW50X3NjcmVl
biAob2ssIHhmYWlsKSkKICAgIHsKICAgICAgaWYgKCFvaykKICAgICAgICBwcmludGYgKCJGYWls
dXJlOiAiKTsKICAgICAgcHJpbnRmICgiVGVzdDogJXNcbiIsIHRlc3RfbmFtZSk7CiAgICAgIHBy
aW50ZiAoIlJlc3VsdDpcbiIpOwogICAgICBwcmludGYgKCIgaXM6ICAgICAgICAgJWxkXG4iLCBj
b21wdXRlZCk7CiAgICAgIHByaW50ZiAoIiBzaG91bGQgYmU6ICAlbGRcbiIsIGV4cGVjdGVkKTsK
ICAgIH0KCiAgdXBkYXRlX3N0YXRzIChvaywgeGZhaWwpOwogIGZwc3RhY2tfdGVzdCAodGVzdF9u
YW1lKTsKfQoKCgpzdGF0aWMgdm9pZApjaGVja19ib29sIChjb25zdCBjaGFyICp0ZXN0X25hbWUs
IGludCBjb21wdXRlZCwgaW50IGV4cGVjdGVkLAogICAgICAgICAgICBsb25nIGludCBtYXhfdWxw
LCBpbnQgeGZhaWwsIGludCBleGNlcHRpb25zKQp7CiAgaW50IG9rID0gMDsKCiAgdGVzdF9leGNl
cHRpb25zICh0ZXN0X25hbWUsIGV4Y2VwdGlvbnMpOwogIG5vVGVzdHMrKzsKICBpZiAoKGNvbXB1
dGVkID09IDApID09IChleHBlY3RlZCA9PSAwKSkKICAgIG9rID0gMTsKCiAgaWYgKHByaW50X3Nj
cmVlbiAob2ssIHhmYWlsKSkKICAgIHsKICAgICAgaWYgKCFvaykKICAgICAgICBwcmludGYgKCJG
YWlsdXJlOiAiKTsKICAgICAgcHJpbnRmICgiVGVzdDogJXNcbiIsIHRlc3RfbmFtZSk7CiAgICAg
IHByaW50ZiAoIlJlc3VsdDpcbiIpOwogICAgICBwcmludGYgKCIgaXM6ICAgICAgICAgJWRcbiIs
IGNvbXB1dGVkKTsKICAgICAgcHJpbnRmICgiIHNob3VsZCBiZTogICVkXG4iLCBleHBlY3RlZCk7
CiAgICB9CgogIHVwZGF0ZV9zdGF0cyAob2ssIHhmYWlsKTsKICBmcHN0YWNrX3Rlc3QgKHRlc3Rf
bmFtZSk7Cn0KCgoKc3RhdGljIHZvaWQKY2hlY2tfbG9uZ2xvbmcgKGNvbnN0IGNoYXIgKnRlc3Rf
bmFtZSwgbG9uZyBsb25nIGludCBjb21wdXRlZCwKICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBp
bnQgZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IG1heF91bHAsIGludCB4
ZmFpbCwKICAgICAgICAgICAgICAgIGludCBleGNlcHRpb25zKQp7CiAgbG9uZyBsb25nIGludCBk
aWZmID0gY29tcHV0ZWQgLSBleHBlY3RlZDsKICBpbnQgb2sgPSAwOwoKICB0ZXN0X2V4Y2VwdGlv
bnMgKHRlc3RfbmFtZSwgZXhjZXB0aW9ucyk7CiAgbm9UZXN0cysrOwogIGlmIChsbGFicyAoZGlm
ZikgPD0gbWF4X3VscCkKICAgIG9rID0gMTsKCiAgaWYgKCFvaykKICAgIHByaW50X3VscHMgKHRl
c3RfbmFtZSwgZGlmZik7CgogIGlmIChwcmludF9zY3JlZW4gKG9rLCB4ZmFpbCkpCiAgICB7CiAg
ICAgIGlmICghb2spCiAgICAgICAgcHJpbnRmICgiRmFpbHVyZToiKTsKICAgICAgcHJpbnRmICgi
VGVzdDogJXNcbiIsIHRlc3RfbmFtZSk7CiAgICAgIHByaW50ZiAoIlJlc3VsdDpcbiIpOwogICAg
ICBwcmludGYgKCIgaXM6ICAgICAgICAgJWxsZFxuIiwgY29tcHV0ZWQpOwogICAgICBwcmludGYg
KCIgc2hvdWxkIGJlOiAgJWxsZFxuIiwgZXhwZWN0ZWQpOwogICAgfQoKICB1cGRhdGVfc3RhdHMg
KG9rLCB4ZmFpbCk7CiAgZnBzdGFja190ZXN0ICh0ZXN0X25hbWUpOwp9CgoKCgppbnQKbWF0aGVy
ciAoc3RydWN0IGV4Y2VwdGlvbiAqeCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCnsKICByZXR1
cm4gMTsKfQoKc3RhdGljIHZvaWQKY29ual90ZXN0ICh2b2lkKQp7CiAgaW5pdF9tYXhfZXJyb3Ig
KCk7CiAgY2hlY2tfY29tcGxleCAoImNvbmogKDAuMCArIDAuMCBpKSA9PSAwLjAgLSAwIGkiLCBj
b25qbCAoKHsgX19jb21wbGV4X18gbG9uZyBkb3VibGUgX19yZXR2YWw7IF9fcmVhbF9fIF9fcmV0
dmFsID0gKDAuMCk7IF9faW1hZ19fIF9fcmV0dmFsID0gKDAuMCk7IF9fcmV0dmFsOyB9KSksICh7
IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9fcmV0dmFsOyBfX3JlYWxfXyBfX3JldHZhbCA9ICgw
LjApOyBfX2ltYWdfXyBfX3JldHZhbCA9IChtaW51c196ZXJvKTsgX19yZXR2YWw7IH0pLCAwLCAw
LCAwKTsKICBjaGVja19jb21wbGV4ICgiY29uaiAoMC4wIC0gMCBpKSA9PSAwLjAgKyAwLjAgaSIs
IGNvbmpsICgoeyBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBfX3JldHZhbDsgX19yZWFsX18gX19y
ZXR2YWwgPSAoMC4wKTsgX19pbWFnX18gX19yZXR2YWwgPSAobWludXNfemVybyk7IF9fcmV0dmFs
OyB9KSksICh7IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9fcmV0dmFsOyBfX3JlYWxfXyBfX3Jl
dHZhbCA9ICgwLjApOyBfX2ltYWdfXyBfX3JldHZhbCA9ICgwLjApOyBfX3JldHZhbDsgfSksIDAs
IDAsIDApOwogIGNoZWNrX2NvbXBsZXggKCJjb25qIChOYU4gKyBOYU4gaSkgPT0gTmFOICsgTmFO
IGkiLCBjb25qbCAoKHsgX19jb21wbGV4X18gbG9uZyBkb3VibGUgX19yZXR2YWw7IF9fcmVhbF9f
IF9fcmV0dmFsID0gKG5hbl92YWx1ZSk7IF9faW1hZ19fIF9fcmV0dmFsID0gKG5hbl92YWx1ZSk7
IF9fcmV0dmFsOyB9KSksICh7IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9fcmV0dmFsOyBfX3Jl
YWxfXyBfX3JldHZhbCA9IChuYW5fdmFsdWUpOyBfX2ltYWdfXyBfX3JldHZhbCA9IChuYW5fdmFs
dWUpOyBfX3JldHZhbDsgfSksIDAsIDAsIDApOwogIGNoZWNrX2NvbXBsZXggKCJjb25qIChpbmYg
LSBpbmYgaSkgPT0gaW5mICsgaW5mIGkiLCBjb25qbCAoKHsgX19jb21wbGV4X18gbG9uZyBkb3Vi
bGUgX19yZXR2YWw7IF9fcmVhbF9fIF9fcmV0dmFsID0gKHBsdXNfaW5mdHkpOyBfX2ltYWdfXyBf
X3JldHZhbCA9IChtaW51c19pbmZ0eSk7IF9fcmV0dmFsOyB9KSksICh7IF9fY29tcGxleF9fIGxv
bmcgZG91YmxlIF9fcmV0dmFsOyBfX3JlYWxfXyBfX3JldHZhbCA9IChwbHVzX2luZnR5KTsgX19p
bWFnX18gX19yZXR2YWwgPSAocGx1c19pbmZ0eSk7IF9fcmV0dmFsOyB9KSwgMCwgMCwgMCk7CiAg
Y2hlY2tfY29tcGxleCAoImNvbmogKGluZiArIGluZiBpKSA9PSBpbmYgLSBpbmYgaSIsIGNvbmps
ICgoeyBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBfX3JldHZhbDsgX19yZWFsX18gX19yZXR2YWwg
PSAocGx1c19pbmZ0eSk7IF9faW1hZ19fIF9fcmV0dmFsID0gKHBsdXNfaW5mdHkpOyBfX3JldHZh
bDsgfSkpLCAoeyBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBfX3JldHZhbDsgX19yZWFsX18gX19y
ZXR2YWwgPSAocGx1c19pbmZ0eSk7IF9faW1hZ19fIF9fcmV0dmFsID0gKG1pbnVzX2luZnR5KTsg
X19yZXR2YWw7IH0pLCAwLCAwLCAwKTsKICBjaGVja19jb21wbGV4ICgiY29uaiAoMS4wICsgMi4w
IGkpID09IDEuMCAtIDIuMCBpIiwgY29uamwgKCh7IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9f
cmV0dmFsOyBfX3JlYWxfXyBfX3JldHZhbCA9ICgxLjApOyBfX2ltYWdfXyBfX3JldHZhbCA9ICgy
LjApOyBfX3JldHZhbDsgfSkpLCAoeyBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBfX3JldHZhbDsg
X19yZWFsX18gX19yZXR2YWwgPSAoMS4wKTsgX19pbWFnX18gX19yZXR2YWwgPSAoLTIuMCk7IF9f
cmV0dmFsOyB9KSwgMCwgMCwgMCk7CiAgY2hlY2tfY29tcGxleCAoImNvbmogKDMuMCAtIDQuMCBp
KSA9PSAzLjAgKyA0LjAgaSIsIGNvbmpsICgoeyBfX2NvbXBsZXhfXyBsb25nIGRvdWJsZSBfX3Jl
dHZhbDsgX19yZWFsX18gX19yZXR2YWwgPSAoMy4wKTsgX19pbWFnX18gX19yZXR2YWwgPSAoLTQu
MCk7IF9fcmV0dmFsOyB9KSksICh7IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9fcmV0dmFsOyBf
X3JlYWxfXyBfX3JldHZhbCA9ICgzLjApOyBfX2ltYWdfXyBfX3JldHZhbCA9ICg0LjApOyBfX3Jl
dHZhbDsgfSksIDAsIDAsIDApOwoKICBwcmludF9jb21wbGV4X21heF9lcnJvciAoImNvbmoiLCAw
LCAwKTsKfQo=


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-02-21 12:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-21  4:57 debug/4461: Invalid dawrf2 debug code jakub
  -- strict thread matches above, loose matches on Subject: below --
2001-10-03 11:56 schwab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).