public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: meixner@rbg.informatik.tu-darmstadt.de
To: gcc-gnats@gcc.gnu.org
Subject: other/3810: gcov (part of gcc 3.0) crashes
Date: Wed, 25 Jul 2001 04:46:00 -0000	[thread overview]
Message-ID: <20010725114507.10461.qmail@sourceware.cygnus.com> (raw)

>Number:         3810
>Category:       other
>Synopsis:       gcov (part of gcc 3.0) crashes
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 25 04:46:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Matthias Meixner
>Release:        gcov as part of gcc version 3.0
>Organization:
>Environment:
Suse Linux 6.4
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../configure --prefix=/usr/local --enable-languages=c,c++ --disable-shared
Thread model: single
gcc version 3.0
>Description:
gcov aborts:
Aborted (core dumped)

>How-To-Repeat:
g++  -fprofile-arcs -ftest-coverage test.ii
a.out
gcov test.ii
>Fix:

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

IyAyICJidWZwaXBlMi5jeHgiCiMgMSAiYnVmcGlwZTIuaCIgMQoKCgojIDEgInBpcGUuaCIgMQoK
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjUwICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMg
MjUxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjc4ICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMjc5ICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMK
CmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE5OSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVu
c2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCiMg
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9z
dGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2du
dWNfdmFfbGlzdDsKIyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0
OwojIDM5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy
IDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBf
X3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25l
ZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVm
IHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcg
aW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191
X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50
IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9k
ZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7
CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYg
aW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVh
ZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJf
dDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7CiMgMTAwICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19i
aXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBfX2ZkX3NldDsK
Cgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBj
X3BpZF90OwoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYg
X191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBp
bnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7
CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUv
Yml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IHNjaGVkX3By
aW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMK
CgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBf
X3NwaW5sb2NrOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9w
dGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsK
ICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07
CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6
ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBf
X3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGlu
ZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9
IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90
OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291
bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3Qg
X3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVm
IHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5
cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcnds
b2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndf
cmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBf
X3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAg
aW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoK
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0
aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFk
X3Q7CiMgMTUxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA1
NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAz
CiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMK
CgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdp
bnRfdDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAzNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAzCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMSAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoj
IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUv
c3RkYXJnLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTU0ICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwoj
IDE2NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoK
CgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1
Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE4NyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciog
X0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciog
X0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7
CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIg
Kl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3Qg
X0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2Zm
X3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVk
IGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tf
dCAqX2xvY2s7CiMgMjMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zm
c2V0OwoKICBpbnQgX3VudXNlZDJbMTZdOwoKfTsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0
IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs
dXMgX0lPXzJfMV9zdGRlcnJfOwojIDI2MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRl
ZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICogX19jb29raWUsIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19uYnl0ZXMpOwojIDI3MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBf
X3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqIF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9f
YnVmLCBzaXplX3QgX19uKTsKIyAyODAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
aW50IF9faW9fc2Vla19mbiAodm9pZCAqIF9fY29va2llLCBfX29mZl90IF9fcG9zLCBpbnQgX193
KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICogX19jb29raWUpOwoKCgoKdHlw
ZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dy
aXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29r
aWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1
bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lv
X3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAq
Y2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lv
X2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCgpzdHJ1Y3QgX0lPX2Nvb2tpZV9m
aWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgX19maWxlOwogIGNvbnN0IHZvaWQgKl9fdnRhYmxlOwog
IHZvaWQgKl9fY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jdGlv
bnM7Cn07CgoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklM
RSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwojIDMzNyAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9f
ZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgpleHRl
cm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHZv
aWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9f
ZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwg
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3Qp
IHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBfX2dudWNfdmFfbGlzdCkgdGhyb3cgKCk7CgpleHRl
cm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgdGhyb3cg
KCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkg
dGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29m
ZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAo
X0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgX0lPX2Zy
ZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwoKCn0KIyA1OCAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgp0eXBlZGVmIF9fb2ZmX3QgZnBvc190OwoKCgoKdHlwZWRlZiBf
X29mZjY0X3QgZnBvczY0X3Q7CiMgMTEwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIyAxMTEgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRl
cm4gRklMRSAqc3RkZXJyOwoKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAq
X19maWxlbmFtZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpf
X29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqdG1w
ZmlsZSAodm9pZCkgdGhyb3cgKCk7CiMgMTQwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqdG1wbmFt
IChjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpf
X3MpIHRocm93ICgpOwojIDE2MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
ZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMpIHRocm93ICgpOwoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMs
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDIwMyAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7
CgpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwg
X19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5j
b29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fYnVmbG9jLCBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBpbnQgX19tb2Rlcywg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0
IF9fYXJnKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQoKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQoKCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3By
aW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgLi4uKSB0aHJvdyAoKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3Qg
X19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKSB0aHJvdyAoKQoKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRl
cm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKSB0aHJvdyAoKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJu
IGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjYW5mIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChG
SUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpl
eHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgp
CgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoK
CgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50
IGdldGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZv
aWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50
IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1
dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpm
Z2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMgNDEzICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIg
KipfX3Jlc3RyaWN0IF9fbGluZXB0ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVs
aW1pdGVyLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gX19z
c2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsIHNpemVfdCAqX19y
ZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fbGluZXB0ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB1dHMgKF9f
Y29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2Ms
IEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAq
X19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tl
ZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZV91
bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLCBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVu
Y2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA0
NzcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoK
CnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoKCgoKCgpleHRlcm4gaW50IGZzZWVrbyAoRklM
RSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRl
cm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3Qg
X19wb3MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9f
Y29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTI3ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2Zm
LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpIHRocm93ICgpOwoKZXh0
ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3Bv
cykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNs
ZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVv
Zl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9y
IChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBf
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoK
CgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAq
X19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVj
dCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpf
X3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNr
ICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIHRocm93ICgpOwojIDYxNCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA2Mzgg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCn0KIyA4ICJwaXBlLmgiIDIKIyAxICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoK
ZXh0ZXJuICJDIiB7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGlu
dCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90
OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRl
ZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJl
bTsKICB9IGxsZGl2X3Q7CiMgODAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6
ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91
YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgYXRv
aSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wg
KF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4g
bG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpOwoKCgpl
eHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHN0cnRv
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cg
KCk7CgoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJv
dyAoKTsKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UpIHRocm93ICgpOwoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwojIDEzMiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
c3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAo
KTsKIyAxNTcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9j
YWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0
IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNbNl07CgoK
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5
cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsK
IyAxNTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0
cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIF9fbG9j
YWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg
aW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cg
KCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0
b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7
CgoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAo
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9j
KSB0aHJvdyAoKTsKIyAxOTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZG91Ymxl
IF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCmV4dGVybiBm
bG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBf
X3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgoKX19leHRl
bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CiMgMzMzICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cg
KCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
Cgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlw
ZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1
YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRf
dCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBp
bm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZf
dCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3Qg
bW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRf
dCB1aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRf
dCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNz
aXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBj
YWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlw
ZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgNjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1l
X3QgdGltZV90OwojIDEyMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDEyNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE2OSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlf
XykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElf
XykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElf
XykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVk
ZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsK
IyAxOTEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRp
YW4uaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNSAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgi
IDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDE5MiAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoj
IDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50
IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25n
IGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAg
fSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA4MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpz
dHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9u
c2VjOwogIH07CiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKZXh0ZXJuICJD
IiB7CgoKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5
cGVkZWYgX19mZF9zZXQgZmRfc2V0OwojIDc0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz
CmV4dGVybiBpbnQgX19zZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsIF9f
ZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsIHN0cnVjdCB0aW1ldmFs
ICpfX3RpbWVvdXQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBf
X2ZkX3NldCAqX19yZWFkZmRzLCBfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhj
ZXB0ZmRzLCBzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KSB0aHJvdyAoKTsKIyA4NyAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIF9f
ZmRfc2V0ICpfX3JlYWRmZHMsIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNl
cHRmZHMsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190aW1lb3V0LCBjb25zdCBfX3NpZ3NldF90
ICpfX3NpZ21hc2spIHRocm93ICgpOwoKCgoKCn0KIyAxOTUgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAxOTgg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJs
a2NudF90Owp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90Owp0eXBlZGVmIF9fZnNmaWxj
bnRfdCBmc2ZpbGNudF90OwoKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0
X3QgZnNmaWxjbnQ2NF90OwoKCn0KIyAzNDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoK
CgoKCmV4dGVybiBpbnQzMl90IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQg
c3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQg
KiBpbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiBfX3N0YXRlYnVmLCBzaXpl
X3QgX19zdGF0ZWxlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCAqIHNldHN0YXRlICh2b2lk
ICogX19zdGF0ZWJ1ZikgdGhyb3cgKCk7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAg
ICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwog
ICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAg
IGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5k
b21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0
cnVjdCByYW5kb21fZGF0YSAqX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBpbml0c3RhdGVf
ciAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqIF9fcmVzdHJpY3QgX19zdGF0ZWJ1Ziwgc2l6
ZV90IF9fc3RhdGVsZW4sIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhy
b3cgKCk7CgoKCgpleHRlcm4gaW50IHNldHN0YXRlX3IgKHZvaWQgKiBfX3Jlc3RyaWN0IF9fc3Rh
dGVidWYsIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAo
dW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93
ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1Ymlb
M10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
dGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRh
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
YVszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjOwogICAgdW5zaWduZWQgc2hvcnQgaW50IG9s
ZF94WzNdOwogICAgaW50IGluaXQ7CiAgfTsKCgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
IGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxy
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBucmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLCBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmlj
dCBfX2J1ZmZlciwgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0
ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLCBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBsb25nIGludCAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19z
ZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLCBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikgdGhyb3cgKCk7CiMgNDc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQg
KiBtYWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgKiBjYWxsb2Mg
KHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9p
ZCAqIHJlYWxsb2MgKHZvaWQgKiBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgpleHRl
cm4gdm9pZCBmcmVlICh2b2lkICogX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJl
ZSAodm9pZCAqIF9fcHRyKSB0aHJvdyAoKTsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi
IDEgMwojIDIyICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKIyAxICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgoK
CmV4dGVybiB2b2lkICogYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMg
NDkzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKiB2YWxsb2Mg
KHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4
aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9fb25f
ZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqIF9fYXJnKSwgdm9pZCAq
IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGlu
dCBfX3N0YXR1cywgdm9pZCAqIF9fYXJnKSwgdm9pZCAqIF9fYXJnKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3Nl
Y3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19y
ZXBsYWNlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgdGhyb3cg
KCk7CiMgNTY2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAo
Y2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBj
aGFyICpfX2NvbW1hbmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXpl
X2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwojIDU5NSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbmFtZSwgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAoKTsK
CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2Nv
bnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKCgoK
CgpleHRlcm4gdm9pZCAqIGJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqIF9fa2V5LCBfX2NvbnN0IHZv
aWQgKiBfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90
IF9fY29tcGFyKTsKCgoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqIF9fYmFzZSwgc2l6ZV90
IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgoKZXh0
ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBs
bGFicyAobG9uZyBsb25nIGludCBfX3gpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVu
b20pIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKSB0aHJvdyAoKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3Qg
bGxkaXYgKGxvbmcgbG9uZyBpbnQgX19udW1lciwgbG9uZyBsb25nIGludCBfX2Rlbm9tKSB0aHJv
dyAoKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNjUxICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBk
b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGZjdnRfciAoZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikg
dGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgpleHRl
cm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CiMgNjk1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdj
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVy
biBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKIyA3MTggIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNw
b25zZSkgdGhyb3cgKCk7CiMgNzI5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGlu
dCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwgX19jb25zdCBjaGFyICpf
X2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLCBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkg
dGhyb3cgKCk7CiMgNzM4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgc2V0
a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3Jh
bnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19m
ZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgp
OwoKCgoKCn0KIyA5ICJwaXBlLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgpleHRlcm4gIkMiIHsKIyAx
NzUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4
X29wdC5oIiAxIDMKIyAxNzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0
cy9lbnZpcm9ubWVudHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg
MwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMiAzCiMgMTgwICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDE5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTkxICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDIgMwojIDE5OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjAwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDIzNSAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKIyAyNDggIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGlu
dCBfX3R5cGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBldWlkYWNjZXNzIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgdGhyb3cgKCk7CiMgMjc3ICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgX19sc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz
ZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9f
ZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CiMgMjkxICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwg
X19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IF9fY2xvc2UgKGludCBfX2ZkKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQp
IHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCBfX3JlYWQgKGludCBfX2ZkLCB2b2lkICogX19i
dWYsIHNpemVfdCBfX25ieXRlcykgdGhyb3cgKCk7CmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBf
X2ZkLCB2b2lkICogX19idWYsIHNpemVfdCBfX25ieXRlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIHNz
aXplX3QgX193cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqIF9fYnVmLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQg
KiBfX2J1Ziwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgX19wcmVh
ZDY0IChpbnQgX19mZCwgdm9pZCAqIF9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmNjRfdCBf
X29mZnNldCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IF9fcHdyaXRlNjQgKGludCBfX2Zk
LCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwgX19vZmY2NF90IF9fb2Zmc2V0KSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICogX19idWYs
IHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CgpleHRlcm4gc3Np
emVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwg
X19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CiMgMzM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKiBfX2J1Ziwgc2l6ZV90
IF9fbmJ5dGVzLCBfX29mZjY0X3QgX19vZmZzZXQpIHRocm93ICgpOwoKZXh0ZXJuIHNzaXplX3Qg
cHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiBfX2J1Ziwgc2l6ZV90IF9fbiwgX19v
ZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKIyAzNDkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIHRocm93ICgpOwojIDM1OCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVk
IGludCBfX3NlY29uZHMpIHRocm93ICgpOwojIDM2NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gdW5zaWduZWQgaW50IHVhbGFybSAodW5zaWduZWQgaW50IF9fdmFs
dWUsIHVuc2lnbmVkIGludCBfX2ludGVydmFsKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHVz
bGVlcCAodW5zaWduZWQgaW50IF9fdXNlY29uZHMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQg
cGF1c2UgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n
cm91cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgZmNoZGlyIChpbnQgX19mZCkgdGhyb3cgKCk7CiMgNDE5ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSAodm9pZCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGR1cDIg
KGludCBfX2ZkLCBpbnQgX19mZDIpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9u
OwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25zdCBfX2Vu
dnBbXSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAq
X19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25zdCBfX2VudnBbXSkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19w
YXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4
ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBleGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpf
X2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIF9leGl0
IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0
cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9D
QU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFU
SF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAg
IF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAg
X1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAg
ICBfUENfRklMRVNJWkVCSVRTCgogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFYLAoKICAg
IF9TQ19DSElMRF9NQVgsCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNfTUFYLAoK
ICAgIF9TQ19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpOQU1FX01B
WCwKCiAgICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBfU0NfUkVB
TFRJTUVfU0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVElN
RVJTLAoKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVEX0lPLAoK
ICAgIF9TQ19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19NQVBQRURf
RklMRVMsCgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgogICAgX1ND
X01FTU9SWV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAgX1NDX1NF
TUFQSE9SRVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfQUlPX0xJ
U1RJT19NQVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRBX01BWCwK
CiAgICBfU0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAgIF9TQ19N
UV9QUklPX01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCiAgICBfU0NfUEFHRVNJWkUsCgoKICAgIF9T
Q19SVFNJR19NQVgsCgogICAgX1NDX1NFTV9OU0VNU19NQVgsCgogICAgX1NDX1NFTV9WQUxVRV9N
QVgsCgogICAgX1NDX1NJR1FVRVVFX01BWCwKCiAgICBfU0NfVElNRVJfTUFYLAoKCgoKICAgIF9T
Q19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFY
LAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAg
IF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJ
TkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgs
CgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVW
LAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NX
X0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9Y
VEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0Nf
UElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFY
SU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRf
REdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAg
IF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoK
ICAgIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgs
CgogICAgX1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAg
IF9TQ19UVFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMs
CgogICAgX1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAg
ICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIs
CgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZ
X1NDSEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVB
RF9QUklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1ND
X05QUk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BI
WVNfUEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAg
ICBfU0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9Y
Q1VfVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgog
ICAgX1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NI
QVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0Nf
WE9QRU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgog
ICAgX1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgog
ICAgX1NDX0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAg
IF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAg
X1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgog
ICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoK
ICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgs
CgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01T
R01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9U
RVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9P
RkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZC
SUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAg
IF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19Q
QVRICgoKCgogICAgLAogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLAoKICAgIF9DU19MRlNfTERG
TEFHUywKCiAgICBfQ1NfTEZTX0xJQlMsCgogICAgX0NTX0xGU19MSU5URkxBR1MsCgogICAgX0NT
X0xGUzY0X0NGTEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBfQ1NfTEZTNjRfTElC
UywKCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTCgoKCgogICAgLAogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoK
ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf
TElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hC
UzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0
X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NT
X1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdT
LAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdf
T0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NT
X1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUwoKCiAgfTsKIyA0OTggIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgaW50IF9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAo
aW50IF9fZmQsIGludCBfX25hbWUpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25m
IChpbnQgX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19u
YW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX3Bp
ZF90IF9fZ2V0cGlkICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lk
KSB0aHJvdyAoKTsKCgpleHRlcm4gX19waWRfdCBnZXRwcGlkICh2b2lkKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIHRocm93ICgpOwojIDUzNCAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkg
dGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGludCBfX3NldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19w
Z2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3BpZF90IF9fcGlkLCBfX3BpZF90
IF9fcGdpZCkgdGhyb3cgKCk7CiMgNTYxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu
IGludCBzZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKIyA1NzkgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gX19w
aWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCgpleHRlcm4gX191aWRfdCBn
ZXR1aWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIHRo
cm93ICgpOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGdldGdyb3Vw
cyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
Z3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBz
ZXR1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVpZCAo
X191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
c2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lk
IChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lk
X3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldGVn
aWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRfdCBfX2Zvcmsg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFy
ICp0dHluYW1lIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChp
bnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHR0eXNsb3Qg
KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJv
bSwgX19jb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChf
X2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQp
IHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIHRocm93ICgpOwojIDcx
NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA3MjQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9nZXRvcHQu
aCIgMwpleHRlcm4gIkMiIHsKIyAzNiAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBj
aGFyICpvcHRhcmc7CiMgNTAgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9w
dGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyAxMzQg
Ii91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywg
Y2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDE2MyAiL3Vz
ci9pbmNsdWRlL2dldG9wdC5oIiAzCn0KIyA3MjUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAz
CiMgNzMzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAo
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldGhv
c3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIHRocm93ICgpOwoKCgoKCmV4dGVy
biBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgp
OwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3Qg
X19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJl
dm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw
cm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXpl
LCBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgY2hyb290IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBj
aGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hl
bGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIsIGludCBfX25vY2xv
c2UpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
X19nZXRwYWdlc2l6ZSAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODI5ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2
NF90IF9fbGVuZ3RoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX2Z0cnVuY2F0ZSAoaW50IF9f
ZmQsIF9fb2ZmX3QgX19sZW5ndGgpIHRocm93ICgpOwoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGlu
dCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSB0aHJvdyAoKTsKIyA4NDUgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9f
bGVuZ3RoKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIHRo
cm93ICgpOwojIDg2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2
b2lkICogX19hZGRyKSB0aHJvdyAoKTsKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgODY0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK
CgoKCmV4dGVybiB2b2lkICogX19zYnJrIChwdHJkaWZmX3QgX19kZWx0YSkgdGhyb3cgKCk7CmV4
dGVybiB2b2lkICogc2JyayAocHRyZGlmZl90IF9fZGVsdGEpIHRocm93ICgpOwojIDg4NSAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBf
X3N5c25vLCAuLi4pIHRocm93ICgpOwojIDkwNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIHRocm93
ICgpOwojIDkxNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Y2NCAo
aW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSB0aHJvdyAoKTsKIyA5MzggIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IF9fbGliY19lbmFibGVfc2VjdXJlOwoK
CgoKCgpleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBjaGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpf
X3NhbHQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tl
eSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBf
X2VkZmxhZykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAq
IF9fZnJvbSwgdm9pZCAqIF9fdG8sIHNzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy
biBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqY3Vz
ZXJpZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBj
aGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CiMgOTk5ICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJl
cGFyZSkgKHZvaWQpLCB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwgdm9pZCAoKl9fY2hpbGQpICh2
b2lkKSkgdGhyb3cgKCk7CgoKCgp9CiMgMTAgInBpcGUuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9l
cnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgpleHRl
cm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5j
bHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIg
MiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsK
CgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyA1NSAi
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9u
YW1lLCAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWU7CgoKCn0KIyA2OSAiL3Vzci9pbmNs
dWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJyb3JfdDsKIyAxMSAicGlwZS5oIiAyCgoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lz
L2lvY3RsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3Iv
aW5jbHVkZS9zeXMvaW9jdGwuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL2lvY3Rscy5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvaW9jdGxzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
YXNtL2lvY3RsLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIgMwojIDI1
ICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bHMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMv
aW9jdGwuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMK
IyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9hc20vaW9jdGxzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5o
IiAyIDMKCgpzdHJ1Y3Qgd2luc2l6ZQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgd3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdz
X3hwaXhlbDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3Qg
dGVybWlvCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfaWZsYWc7CiAgICB1bnNpZ25lZCBz
aG9ydCBpbnQgY19vZmxhZzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IGNfbGZsYWc7CiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgIHVu
c2lnbmVkIGNoYXIgY19jY1s4XTsKfTsKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAy
IDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R0eWRlZmF1bHRzLmgiIDEgMwojIDM4ICIv
dXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCgoKZXh0ZXJuIGludCBpb2N0bCAoaW50IF9f
ZmQsIHVuc2lnbmVkIGxvbmcgaW50IF9fcmVxdWVzdCwgLi4uKSB0aHJvdyAoKTsKCn0KIyAxNyAi
cGlwZS5oIiAyCgoKCmNsYXNzIEhEUGlwZQp7CiAgIGludCBkaW9bMl07CiAgIGVudW0gRGlyZWN0
aW9uIHtOb25lLFJlYWQsV3JpdGV9IGRpcmVjdGlvbjsKICAgY2hhciBmZXJyb3JfLGZlb2ZfOwoK
ICAgdm9pZCBpbml0KERpcmVjdGlvbiBkaXIpIHsKICAgICAgaWYoZGlyPT1kaXJlY3Rpb24pIHJl
dHVybjsKICAgICAgaWYoZGlyZWN0aW9uIT1Ob25lKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCJIYWxmIGR1cGxleCBwaXBlIHVzZWQgaW4gYm90aCBkaXJlY3Rpb25zXG4iKTsKICAgICAgICAg
YWJvcnQoKTsKICAgICAgfQoKICAgICAgZGlyZWN0aW9uPWRpcjsKICAgICAgc3dpdGNoKGRpcmVj
dGlvbikgewogICAgICAgICBjYXNlIFJlYWQ6IGNsb3NlKGRpb1sxXSk7CiAgICAgICAgICAgICAg
ICAgICAgZGlvWzFdPS0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdyaXRlOiBjbG9zZShkaW9bMF0pOwogICAgICAgICAgICAgICAgICAgICBkaW9bMF09LTE7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgIH0KCnB1YmxpYzoKCiAgIEhEUGlw
ZSgpIHtwaXBlKGRpbyk7ZGlyZWN0aW9uPU5vbmU7ZmVycm9yXz1mZW9mXz0wO30KICAgfkhEUGlw
ZSgpIHtpbnQgaTsgZm9yKGk9MDtpPDI7aSsrKSBpZihkaW9baV0+PTApIGNsb3NlKGRpb1tpXSk7
IH0KCiAgIGludCByZWFkRkQoKSB7IGluaXQoUmVhZCk7IHJldHVybiBkaW9bMF07IH0KICAgaW50
IHdyaXRlRkQoKSB7IGluaXQoV3JpdGUpOyByZXR1cm4gZGlvWzFdOyB9CgogICBpbnQgZW9mKCkg
eyByZXR1cm4gZmVvZl87IH0KICAgaW50IGVycm9yKCkgeyByZXR1cm4gZmVycm9yXzsgfQogICB2
b2lkIGNsZWFyKCkgeyBmZW9mXz1mZXJyb3JfPTA7IH0KCiAgIHNzaXplX3Qgd3JpdGUoY29uc3Qg
dm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQpIHsKCgoKICAgICAgaW5pdChXcml0ZSk7CiAgICAg
IGNvbnN0IGNoYXIgKmJ1Zj0oY29uc3QgY2hhciAqKWJ1ZmZlcjsKICAgICAgc3NpemVfdCByYz0w
LHI7CiAgICAgIHdoaWxlKChyPTo6d3JpdGUod3JpdGVGRCgpLGJ1Zixjb3VudCkpPGNvdW50ICYm
IHIhPS0xKSB7CiAgICAgICAgIGlmKHI+MCkge3JjKz1yO2J1Zis9cjtjb3VudC09cjt9CiAgICAg
IH0KICAgICAgaWYocj4wKSByYys9cjsKCiAgICAgIGlmKHI9PS0xKSBmZXJyb3JfPTE7CiAgICAg
IHJldHVybiByYzsKICAgfQoKICAgc3NpemVfdCByZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNv
dW50KSB7CgoKCiAgICAgIGluaXQoUmVhZCk7CiAgICAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZl
cjsKICAgICAgc3NpemVfdCByYz0wLHI7CiAgICAgIHdoaWxlKChyPTo6cmVhZChyZWFkRkQoKSxi
dWYsY291bnQpKTxjb3VudCAmJiAociE9LTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09MTEg
fHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09NCkpIHsKICAgICAgICAgaWYocj4wKSB7cmMrPXI7
YnVmKz1yO2NvdW50LT1yO30KICAgICAgICAgZWxzZSBpZihyPT0wKSB7IGZwcmludGYoc3RkZXJy
LCJFT0ZcbiIpO2JyZWFrO30KICAgICAgfQogICAgICBpZihyPjApIHJjKz1yOwoKICAgICAgaWYo
cjw9MCkgZmVvZl89MTsKICAgICAgcmV0dXJuIHJjOwogICB9CgogICB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbnQgd3JpdGUoY29uc3QgVCAmYykgeyByZXR1cm4gd3JpdGUoJmMsc2l6ZW9mKFQpKTsgfQog
ICB0ZW1wbGF0ZTxjbGFzcyBUPiBpbnQgcmVhZChUICZjKSB7IHJldHVybiByZWFkKCZjLHNpemVv
ZihUKSk7IH0KCgogICBpbnQgZmx1c2goKSB7cmV0dXJuIDA7fQoKCn07CgoKY2xhc3MgRkRQaXBl
CgoKCgoKCgp7CiAgIGludCBkaW9bNl07CiAgIGNoYXIgZmVycm9yXyxmZW9mXzsKCiAgIHZvaWQg
aW5pdCgpIHsKICAgICAgaWYoZGlvWzRdPj0wKSB7CiAgICAgICAgIGludCBpOwogICAgICAgICBp
PTE7aW9jdGwoZGlvWzRdLDB4NTQyMSwmaSk7CiAgICAgICAgIGNoYXIgZHVtbXk7CiAgICAgICAg
IHNzaXplX3QgcjsKICAgICAgICAgd2hpbGUoKHI9OjpyZWFkKGRpb1s0XSwmZHVtbXksMSkpPT0t
MSAmJiAoKl9fZXJybm9fbG9jYXRpb24gKCkpPT00KTsKICAgICAgICAgaWYocj09MSkgewogICAg
ICAgICAgICBjbG9zZShkaW9bMV0pOwogICAgICAgICAgICBjbG9zZShkaW9bMl0pOwogICAgICAg
ICAgICBkaW9bMV09ZGlvWzNdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjbG9zZShk
aW9bMF0pOwogICAgICAgICAgICBjbG9zZShkaW9bM10pOwogICAgICAgICAgICBkaW9bMF09ZGlv
WzJdOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlKGRpb1s0XSk7CiAgICAgICAgIGNsb3NlKGRp
b1s1XSk7CiAgICAgICAgIGZvcihpPTI7aTw2O2krKykgZGlvW2ldPS0xOwogICAgICB9CiAgIH0K
CnB1YmxpYzoKCiAgIEZEUGlwZSgpIHsKICAgICAgcGlwZShkaW8pOwogICAgICBwaXBlKCZkaW9b
Ml0pOwogICAgICBwaXBlKCZkaW9bNF0pOwogICAgICA6OndyaXRlKGRpb1s1XSwiWCIsMSk7CiAg
ICAgIGZlcnJvcl89ZmVvZl89MDsKICAgfQoKICAgfkZEUGlwZSgpIHsKICAgICAgaW50IGk7CiAg
ICAgIGZvcihpPTA7aTw2O2krKykgaWYoZGlvW2ldPj0wKSBjbG9zZShkaW9baV0pOwogICB9Cgog
ICBpbnQgcmVhZEZEKCkgeyBpbml0KCk7IHJldHVybiBkaW9bMF07IH0KICAgaW50IHdyaXRlRkQo
KSB7IGluaXQoKTsgcmV0dXJuIGRpb1sxXTsgfQogICBpbnQgZW9mKCkgeyByZXR1cm4gZmVvZl87
IH0KICAgaW50IGVycm9yKCkgeyByZXR1cm4gZmVycm9yXzsgfQogICB2b2lkIGNsZWFyKCkgeyBm
ZW9mXz1mZXJyb3JfPTA7IH0KCiAgIHNzaXplX3Qgd3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBz
aXplX3QgY291bnQpIHsKCgoKICAgICAgaW5pdCgpOwogICAgICBjb25zdCBjaGFyICpidWY9KGNv
bnN0IGNoYXIgKilidWZmZXI7CiAgICAgIHNzaXplX3QgcmM9MCxyOwogICAgICB3aGlsZSgocj06
OndyaXRlKHdyaXRlRkQoKSxidWYsY291bnQpKTxjb3VudCAmJiByIT0tMSkgewogICAgICAgICBp
ZihyPjApIHtyYys9cjtidWYrPXI7Y291bnQtPXI7fQogICAgICB9CiAgICAgIGlmKHI+MCkgcmMr
PXI7CgogICAgICBpZihyPT0tMSkgZmVycm9yXz0xOwogICAgICByZXR1cm4gcmM7CiAgIH0KCiAg
IHNzaXplX3QgcmVhZCh2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCkgewoKCgogICAgICBpbml0
KCk7CiAgICAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZlcjsKICAgICAgc3NpemVfdCByYz0wLHI7
CiAgICAgIHdoaWxlKChyPTo6cmVhZChyZWFkRkQoKSxidWYsY291bnQpKTxjb3VudCAmJiAociE9
LTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgpKT09MTEgfHwgKCpfX2Vycm5vX2xvY2F0aW9uICgp
KT09NCkpIHsKICAgICAgICAgaWYocj4wKSB7cmMrPXI7YnVmKz1yO2NvdW50LT1yO30KICAgICAg
ICAgZWxzZSBpZihyPT0wKSB7ZnByaW50ZihzdGRlcnIsIkVPRlxuIik7YnJlYWs7fQogICAgICB9
CiAgICAgIGlmKHI+MCkgcmMrPXI7CgogICAgICBpZihyPD0wKSBmZW9mXz0xOwogICAgICByZXR1
cm4gcmM7CiAgIH0KCiAgIHRlbXBsYXRlPGNsYXNzIFQ+IGludCB3cml0ZShjb25zdCBUICZjKSB7
IHJldHVybiB3cml0ZSgmYyxzaXplb2YoVCkpOyB9CiAgIHRlbXBsYXRlPGNsYXNzIFQ+IGludCBy
ZWFkKFQgJmMpIHsgcmV0dXJuIHJlYWQoJmMsc2l6ZW9mKFQpKTsgfQoKCiAgIGludCBmbHVzaCgp
IHtyZXR1cm4gMDt9CgogICBpbnQgcmVhZGJ1ZnNpemUoKSB7IHJldHVybiAwOyB9Cgp9OwojIDUg
ImJ1ZnBpcGUyLmgiIDIKCmNsYXNzIEJ1ZlBpcGUgewoKICAgRkRQaXBlIHBpcGU7CiAgIGVudW0g
e0J1ZmZlclRocmVzaG9sZD02NCxCdWZmZXJTaXplPTQwOTZ9OwoKICAgc3RydWN0IEJ1ZmZlciB7
CiAgICAgIHNpemVfdCBzaXplOwogICAgICBjaGFyIGJ1ZmZlcltCdWZmZXJTaXplK3NpemVvZihz
aXplX3QpXTsKICAgfTsKCiAgIEJ1ZmZlciAqcmJ1Ziwqd2J1ZjsKICAgc2l6ZV90IHJwb3MscmNv
dW50OwoKICAgQnVmUGlwZShjb25zdCBCdWZQaXBlICYpIHt9OwogICB2b2lkIG9wZXJhdG9yPShj
b25zdCBCdWZQaXBlICYpIHt9OwogICBpbnQgZmx1c2goaW50IGFkZHNpemUpOwoKcHVibGljOgoK
ICAgQnVmUGlwZSgpIHtyYnVmPW5ldyBCdWZmZXI7d2J1Zj1uZXcgQnVmZmVyOyByYnVmLT5zaXpl
PXdidWYtPnNpemU9MDtycG9zPTA7cmNvdW50PTA7fQogICB+QnVmUGlwZSgpIHtkZWxldGUgcmJ1
ZjsgZGVsZXRlIHdidWY7IH0KCiAgIGludCByZWFkRkQoKSB7IHJldHVybiBwaXBlLnJlYWRGRCgp
OyB9CiAgIGludCB3cml0ZUZEKCkgeyByZXR1cm4gcGlwZS53cml0ZUZEKCk7IH0KCiAgIHNzaXpl
X3Qgd3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3QgY291bnQpOwogICBpbnQgZmx1c2go
KSB7CiAgICAgIGlmKHdidWYtPnNpemU9PTApIHJldHVybiAwOwogICAgICByZXR1cm4gZmx1c2go
MCk7CiAgIH0KICAgc3NpemVfdCByZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KTsKCiAg
IGludCByZWFkYnVmc2l6ZSgpIHsgcmV0dXJuIHJidWYtPnNpemUtcnBvczsgfQoKICAgdGVtcGxh
dGU8Y2xhc3MgVD4gaW50IHdyaXRlKGNvbnN0IFQgJmMpIHsgcmV0dXJuIHdyaXRlKCZjLHNpemVv
ZihUKSk7IH0KICAgdGVtcGxhdGU8Y2xhc3MgVD4gaW50IHJlYWQoVCAmYykgeyByZXR1cm4gcmVh
ZCgmYyxzaXplb2YoVCkpOyB9Cn07CiMgMyAiYnVmcGlwZTIuY3h4IiAyCiMgMSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIg
MwoKZXh0ZXJuICJDIiB7CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqIG1lbWNweSAodm9pZCAqIF9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IHZvaWQgKiBfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIHZvaWQgKiBtZW1tb3ZlICh2b2lkICogX19kZXN0LCBfX2NvbnN0IHZvaWQg
KiBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICogbWVtY2Nw
eSAodm9pZCAqIF9fZGVzdCwgX19jb25zdCB2b2lkICogX19zcmMsIGludCBfX2MsIHNpemVfdCBf
X24pIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICogbWVtc2V0ICh2b2lkICogX19zLCBpbnQg
X19jLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2
b2lkICogX19zMSwgX19jb25zdCB2b2lkICogX19zMiwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoK
CmV4dGVybiB2b2lkICogbWVtY2hyIChfX2NvbnN0IHZvaWQgKiBfX3MsIGludCBfX2MsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgKiByYXdtZW1jaHIgKF9fY29uc3Qgdm9p
ZCAqIF9fcywgaW50IF9fYykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJv
dyAoKTsKCgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCmV4
dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIpIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJv
dyAoKTsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAxMDAgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKZXh0ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsK
CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19zcmMsIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
Y2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIg
KnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAq
c3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CiMg
MTQ2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJj
aHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBz
aXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3Qp
IHRocm93ICgpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX2FjY2VwdCkgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpIHRocm93ICgpOwoKZXh0ZXJu
IGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyY2FzZXN0ciAoX19jb25zdCBj
aGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSB0aHJvdyAoKTsKCmV4dGVy
biBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hh
ciAqX19uZWVkbGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIp
IHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwgY2hhciAqKl9fcmVzdHJpY3QgX19z
YXZlX3B0cikgdGhyb3cgKCk7CiMgMTk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJu
IHZvaWQgKiBtZW1tZW0gKF9fY29uc3Qgdm9pZCAqIF9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0
YWNrbGVuLCBfX2NvbnN0IHZvaWQgKiBfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiB2b2lkICogX19tZW1wY3B5ICh2b2lkICogX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgp
OwoKZXh0ZXJuIHZvaWQgKiBtZW1wY3B5ICh2b2lkICogX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4
dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRl
cm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxl
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHJlcnJvcl9y
IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoK
CgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqIF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKiBfX3NyYywgdm9pZCAqIF9fZGVz
dCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKiBfX3Ms
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICog
X19zMSwgX19jb25zdCB2b2lkICogX19zMiwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCk7CgoKZXh0
ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpOwoK
CgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwoKCgoKZXh0ZXJuIGludCBmZnNsIChsb25nIGludCBfX2wpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25n
IGxvbmcgaW50IF9fbGwpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoK
CgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpIHRocm93ICgpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN0cm5jYXNl
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHN0cnZl
cnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSB0aHJvdyAoKTsK
CgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93ICgpOwoKCmV4dGVybiBj
aGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYykgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJu
IGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc3Ry
ZnJ5IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKiBtZW1mcm9iICh2
b2lkICogX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2Vu
YW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwojIDM1MCAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCn0KIyA0ICJidWZwaXBlMi5jeHgiIDIKIyAxICIvdXNyL2luY2x1ZGUv
YXNzZXJ0LmgiIDEgMwojIDM1ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzCiMg
NTggIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwpleHRlcm4gIkMiIHsKCgpleHRlcm4gdm9pZCBf
X2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSB0aHJv
dyAoKQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9p
ZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAoaW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSB0aHJvdyAo
KQoKCgogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCn0KIyA1ICJidWZwaXBl
Mi5jeHgiIDIKCnNzaXplX3QgQnVmUGlwZTo6d3JpdGUoY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXpl
X3QgY291bnQpCnsKICAgY29uc3QgY2hhciAqYnVmPShjb25zdCBjaGFyICopYnVmZmVyOwoKICAg
aWYoY291bnQ+QnVmZmVyVGhyZXNob2xkKSB7CiAgICAgIGlmKHdidWYtPnNpemUpIHsKCgogICAg
ICAgICBtZW1jcHkod2J1Zi0+YnVmZmVyK3didWYtPnNpemUsJmNvdW50LHNpemVvZihjb3VudCkp
OwogICAgICAgICBmbHVzaChzaXplb2YoY291bnQpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAg
cGlwZS53cml0ZShjb3VudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBpcGUud3JpdGUoYnVmZmVy
LGNvdW50KTsKICAgfQogICBlbHNlIGlmKGNvdW50K3didWYtPnNpemU+QnVmZmVyU2l6ZSkgewog
ICAgICBpZihmbHVzaCgpPT0tMSkgcmV0dXJuIC0xOwogICB9CiAgIGVsc2UgewogICAgICBtZW1j
cHkod2J1Zi0+YnVmZmVyK3didWYtPnNpemUsYnVmLGNvdW50KTsKICAgICAgd2J1Zi0+c2l6ZSs9
Y291bnQ7CiAgIH0KICAgcmV0dXJuIGNvdW50Owp9CgppbnQgQnVmUGlwZTo6Zmx1c2goaW50IGFk
ZHNpemUpCgp7CiAgIHNzaXplX3QgcjsKICAgcj0ocGlwZS53cml0ZSh3YnVmLHNpemVvZih3YnVm
LT5zaXplKSt3YnVmLT5zaXplK2FkZHNpemUpPT1zaXplb2Yod2J1Zi0+c2l6ZSkrd2J1Zi0+c2l6
ZSktMTsKICAgd2J1Zi0+c2l6ZT0wOwogICByZXR1cm4gcjsKfQoKc3NpemVfdCBCdWZQaXBlOjpy
ZWFkKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50KQp7CiAgIHNpemVfdCBjb3VudF89Y291bnQ7
CiAgIGNoYXIgKmJ1Zj0oY2hhciAqKWJ1ZmZlcjsKCiAgIGlmKHdidWYtPnNpemUpIGZsdXNoKDAp
OwoKICAgd2hpbGUoY291bnQ+MCkgewogICAgICBpZihycG9zPT1yYnVmLT5zaXplICYmIHJjb3Vu
dD09MCkgewogICAgICAgICBwaXBlLnJlYWQocmNvdW50KTsKICAgICAgICAgcHJpbnRmKCJyY291
bnQgJWRcbiIscmNvdW50KTsKICAgICAgfQoKCiAgICAgIGlmKHJwb3M8cmJ1Zi0+c2l6ZSkgewog
ICAgICAgICBzaXplX3Qgbj1yYnVmLT5zaXplLXJwb3M7CiAgICAgICAgIGlmKG4+PWNvdW50KSB7
CiAgICAgICAgICAgIHByaW50ZigicjFcbiIpOwogICAgICAgICAgICBtZW1jcHkoYnVmLHJidWYt
PmJ1ZmZlcitycG9zLGNvdW50KTsKICAgICAgICAgICAgcnBvcys9Y291bnQ7CiAgICAgICAgICAg
IHJldHVybiBjb3VudF87CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHByaW50ZigicjJc
biIpOwogICAgICAgICAgICBtZW1jcHkoYnVmLHJidWYtPmJ1ZmZlcitycG9zLG4pOwogICAgICAg
ICAgICBidWYrPW47CiAgICAgICAgICAgIGNvdW50LT1uOwogICAgICAgICAgICBycG9zKz1uOwog
ICAgICAgICB9CiAgICAgIH0KCiAgICAgICgodm9pZCkgKChycG9zPT1yYnVmLT5zaXplKSA/IDAg
OiAoX19hc3NlcnRfZmFpbCAoInJwb3M9PXJidWYtPnNpemUiLCAiYnVmcGlwZTIuY3h4IiwgNzAs
IF9fUFJFVFRZX0ZVTkNUSU9OX18pLCAwKSkpOwoKCiAgICAgIGlmKGNvdW50PEJ1ZmZlclRocmVz
aG9sZCkgewogICAgICAgICBwcmludGYoInIzXG4iKTsKICAgICAgICAgc2l6ZV90IG49cmNvdW50
OwogICAgICAgICBpZihuPkJ1ZmZlclNpemUpIG49QnVmZmVyU2l6ZTsKICAgICAgICAgcGlwZS5y
ZWFkKHJidWYtPmJ1ZmZlcixuKTsKICAgICAgICAgcmNvdW50LT1uOwogICAgICAgICByYnVmLT5z
aXplPW47CiAgICAgICAgIHJwb3M9MDsKICAgICAgfSBlbHNlIHsKICAgICAgICAgcHJpbnRmKCJy
NFxuIik7CiAgICAgICAgIHNpemVfdCBuPXJjb3VudDsKICAgICAgICAgaWYobj5jb3VudCkgbj1j
b3VudDsKICAgICAgICAgcGlwZS5yZWFkKGJ1ZixuKTsKICAgICAgICAgYnVmKz1uOwogICAgICAg
ICBjb3VudC09bjsKICAgICAgICAgcmNvdW50LT1uOwogICAgICB9CiAgIH0KICAgcmV0dXJuIGNv
dW50XzsKfQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgOTggImJ1ZnBpcGUy
LmN4eCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgOTkgImJ1ZnBpcGUy
LmN4eCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL3N5cy93YWl0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcg
Ii91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIg
MwojIDM5ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3dhaXRmbGFncy5oIiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDgx
ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRz
dGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRz
dGF0dXMuaCIgMiAzCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0
CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5z
aWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29k
ZTo4OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1p
bmF0ZWQ7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2
YWw6ODsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25l
ZCBpbnQ6MTY7CgoKCgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA4MiAiL3Vzci9p
bmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwp0
eXBlZGVmIGVudW0KewogIFBfQUxMLAogIFBfUElELAogIFBfUEdJRAp9IGlkdHlwZV90OwoKCgoK
CmV4dGVybiBfX3BpZF90IF9fd2FpdCAodm9pZCAqIF9fc3RhdF9sb2MpIHRocm93ICgpOwpleHRl
cm4gX19waWRfdCB3YWl0ICh2b2lkICogX19zdGF0X2xvYykgdGhyb3cgKCk7CiMgMTMxICIvdXNy
L2luY2x1ZGUvc3lzL3dhaXQuaCIgMwpleHRlcm4gX19waWRfdCB3YWl0cGlkIChfX3BpZF90IF9f
cGlkLCBpbnQgKl9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMpIHRocm93ICgpOwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9z
aWdpbmZvLmgiIDMKdHlwZWRlZiB1bmlvbiBzaWd2YWwKICB7CiAgICBpbnQgc2l2YWxfaW50Owog
ICAgdm9pZCAqc2l2YWxfcHRyOwogIH0gc2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdp
bmZvCiAgewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAgIGludCBzaV9j
b2RlOwoKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBpbnQgX3BhZFsoKDEyOCAvIHNpemVvZiAo
aW50KSkgLSAzKV07CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19w
aWRfdCBzaV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgfSBfa2ls
bDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X3RpbWVyMTsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICB9IF90
aW1lcjsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNp
X3BpZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICAgIHNpZ3ZhbF90IHNp
X3NpZ3ZhbDsKICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAg
ICAgICAgICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAg
ICAgICAgICAgaW50IHNpX3N0YXR1czsKICAgICAgICAgICAgX19jbG9ja190IHNpX3V0aW1lOwog
ICAgICAgICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAg
ICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKnNpX2FkZHI7CiAgICAg
ICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAg
ICBpbnQgc2lfYmFuZDsKICAgICAgICAgICAgaW50IHNpX2ZkOwogICAgICAgICAgfSBfc2lncG9s
bDsKICAgICAgfSBfc2lmaWVsZHM7CiAgfSBzaWdpbmZvX3Q7CiMgMTEzICIvdXNyL2luY2x1ZGUv
Yml0cy9zaWdpbmZvLmgiIDMKZW51bQp7CiAgU0lfU0lHSU8gPSAtNSwKCiAgU0lfQVNZTkNJTywK
CiAgU0lfTUVTR1EsCgogIFNJX1RJTUVSLAoKICBTSV9RVUVVRSwKCiAgU0lfVVNFUgoKfTsKCgoK
ZW51bQp7CiAgSUxMX0lMTE9QQyA9IDEsCgogIElMTF9JTExPUE4sCgogIElMTF9JTExBRFIsCgog
IElMTF9JTExUUlAsCgogIElMTF9QUlZPUEMsCgogIElMTF9QUlZSRUcsCgogIElMTF9DT1BST0Ms
CgogIElMTF9CQURTVEsKCn07CgoKZW51bQp7CiAgRlBFX0lOVERJViA9IDEsCgogIEZQRV9JTlRP
VkYsCgogIEZQRV9GTFRESVYsCgogIEZQRV9GTFRPVkYsCgogIEZQRV9GTFRVTkQsCgogIEZQRV9G
TFRSRVMsCgogIEZQRV9GTFRJTlYsCgogIEZQRV9GTFRTVUIKCn07CgoKZW51bQp7CiAgU0VHVl9N
QVBFUlIgPSAxLAoKICBTRUdWX0FDQ0VSUgoKfTsKCgplbnVtCnsKICBCVVNfQURSQUxOID0gMSwK
CiAgQlVTX0FEUkVSUiwKCiAgQlVTX09CSkVSUgoKfTsKCgplbnVtCnsKICBUUkFQX0JSS1BUID0g
MSwKCiAgVFJBUF9UUkFDRQoKfTsKCgplbnVtCnsKICBDTERfRVhJVEVEID0gMSwKCiAgQ0xEX0tJ
TExFRCwKCiAgQ0xEX0RVTVBFRCwKCiAgQ0xEX1RSQVBQRUQsCgogIENMRF9TVE9QUEVELAoKICBD
TERfQ09OVElOVUVECgp9OwoKCmVudW0KewogIFBPTExfSU4gPSAxLAoKICBQT0xMX09VVCwKCiAg
UE9MTF9NU0csCgogIFBPTExfRVJSLAoKICBQT0xMX1BSSSwKCiAgUE9MTF9IVVAKCn07CiMgMTM3
ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzCiMgMTQ1ICIvdXNyL2luY2x1ZGUvc3lzL3dh
aXQuaCIgMwpleHRlcm4gaW50IHdhaXRpZCAoaWR0eXBlX3QgX19pZHR5cGUsIF9faWRfdCBfX2lk
LCBzaWdpbmZvX3QgKl9faW5mb3AsIGludCBfX29wdGlvbnMpIHRocm93ICgpOwoKCgoKCgpzdHJ1
Y3QgcnVzYWdlOwoKCgoKCgpleHRlcm4gX19waWRfdCB3YWl0MyAodm9pZCAqIF9fc3RhdF9sb2Ms
IGludCBfX29wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBfX3VzYWdlKSB0aHJvdyAoKTsKCgoKCgoK
c3RydWN0IHJ1c2FnZTsKCgpleHRlcm4gX19waWRfdCB3YWl0NCAoX19waWRfdCBfX3BpZCwgdm9p
ZCAqIF9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIHRo
cm93ICgpOwoKCgoKfQojIDEwMCAiYnVmcGlwZTIuY3h4IiAyCgptYWluKCkKewogICBCdWZQaXBl
IHBpcGU7CgogICBpbnQgYnVmZmVyW109ezAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMs
MTQsMTUsMTYsMTcsMTgsMTksMjB9OwogICBidWZmZXJbMF09c2l6ZW9mKGJ1ZmZlcikvc2l6ZW9m
KGludCktMTsKCiAgIGludCBwaWQ7CiAgIGlmKChwaWQ9Zm9yaygpKT09MCkgewoKICAgICAgaW50
IGNudCxzPTA7CiAgICAgIHBpcGUucmVhZChjbnQpOwogICAgICB3aGlsZShjbnQtLSkgewogICAg
ICAgICBpbnQgaTsKICAgICAgICAgcGlwZS5yZWFkKGkpOwogICAgICAgICBzKz1pOwogICAgICB9
CiAgICAgIHBpcGUud3JpdGUocyk7CiAgICAgIHBpcGUud3JpdGUoYnVmZmVyLHNpemVvZihidWZm
ZXIpKTsKICAgICAgcGlwZS53cml0ZShidWZmZXIsc2l6ZW9mKGJ1ZmZlcikpOwogICAgICBwaXBl
LndyaXRlKHMpOwogICAgICBwaXBlLmZsdXNoKCk7CiAgICAgIHJldHVybiAwOwogICB9CgoKICAg
aW50IHM7CiAgIHBpcGUud3JpdGUoYnVmZmVyLHNpemVvZihidWZmZXIpKTsKICAgcGlwZS5yZWFk
KGJ1ZmZlcixzaXplb2YoYnVmZmVyKSk7CiAgIHBpcGUucmVhZChzKTsKICAgcGlwZS5yZWFkKHMp
OwogICBwaXBlLnJlYWQoYnVmZmVyLHNpemVvZihidWZmZXIpKTsKCiAgIHdhaXRwaWQocGlkLF9f
bnVsbCwwKTsKICAgcHJpbnRmKCIlZFxuIixidWZmZXJbc2l6ZW9mKGJ1ZmZlcikvc2l6ZW9mKGlu
dCktMV0pOwoKfQo=


             reply	other threads:[~2001-07-25  4:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-25  4:46 meixner [this message]
2002-12-10 16:32 bangerth
2002-12-11  0:46 Matthias Meixner
2002-12-11  1:54 nathan

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20010725114507.10461.qmail@sourceware.cygnus.com \
    --to=meixner@rbg.informatik.tu-darmstadt.de \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

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

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