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


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

c++/1519: compiler error while building qt program under rh7.0



>Number:         1519
>Category:       c++
>Synopsis:       compiler error while building qt program under rh7.0
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 27 18:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     John Spooner
>Release:        2.96  20000731 Red Hat 7.0
>Organization:
>Environment:
Red Hat 7.  (Digital Hi Note Pentium ii laptop)
>Description:
I cannot build the program when adding a slot and including the .moc fle
internal error 20000116 at class.c line 5102
>How-To-Repeat:
g++ -save-temps -lqt -slots.cpp -o slots
>Fix:
chuck gcc and use java
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="slots.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="slots.ii"

IyAxICJzbG90cy5jcHAiCgojIDIgInNsb3RzLmgiIDEKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzMTEgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMg
MzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDE5OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVk
IGludCBzaXplX3Q7CiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgpleHRlcm4gIkMi
IHsKCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAg
IGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7CiMgMTMzICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJf
bWF4ICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50
IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCiMgMTYzICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRv
dWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg
ICB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3Eg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoK
X19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0
aHJvdyAoKTsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg
ICAgdGhyb3cgKCk7CiMgMjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJs
ZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2dyb3VwKQogICAgIHRocm93ICgpOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAg
IHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50
IF9fc3RydG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dy
b3VwKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRl
cm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGlu
dCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBp
bnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAg
IHRocm93ICgpOwojIDM4NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICps
NjRhIChsb25nIGludCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2Nv
bnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCiMg
MjggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCmV4dGVybiAiQyIgewoKCiMgMzAgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vf
Y2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQg
aW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9u
X18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBf
X2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRf
dCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2lu
dCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lu
b190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlw
ZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9sb25n
IF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBfX3VfaW50
IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lk
X3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlw
ZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190
Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Js
a190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19jbG9ja2lk
X3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IF9fZmRfbWFzazsKCgojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgLyAoOCAqIHNp
emVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90
OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVmIGxv
bmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlwZWRl
ZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0
eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBf
X3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5
cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKc3RydWN0IF9f
c2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9j
awp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBz
dHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwog
IGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0
OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0
dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2Nf
bG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoK
dHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0
eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsK
ICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19t
X293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xv
Y2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhr
aW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90
OwoKCiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCiMgMTY2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAyIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9f
dV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50
IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7
CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoK
dHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA1OCAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5
cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlw
ZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0
eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgOTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0
eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRl
ZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVk
ZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMjcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDcxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
dHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CgojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5
cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwoKIyA5MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
Mwp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwoKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCiMgMTQxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE4NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlf
XykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElf
XykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElf
XykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMy
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVk
ZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsK
CgoKCgoKCgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIwNyAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMSAzCgoKCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKdHlwZWRlZiBp
bnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxv
bmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsK
ICB9IF9fc2lnc2V0X3Q7CgojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoK
CiMgMTA1ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKc3RydWN0IHRpbWVzcGVjCiAgewogICAg
bG9uZyBpbnQgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwoKIyAzOSAiL3Vzci9p
bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgpzdHJ1Y3QgdGltZXZh
bDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKdHlwZWRlZiBfX2ZkX3NldCBmZF9zZXQ7
CgoKIyA3NCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gaW50IHNlbGVjdCAo
aW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAg
ICAgICAgX19mZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAg
IF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSB0aHJvdyAoKTsKCiMgOTIgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKfQoKIyAyMTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKCiMgMjI0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Js
a2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0
eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OwojIDI1NiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCn0KCiMgMzkyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgpleHRl
cm4gaW50MzJfdCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20g
KHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3Rh
dGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNl
dHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21f
ZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJf
dCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJh
bmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAo
c3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3Jh
bmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNo
YXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAq
X19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFu
ZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFu
ZCAodm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2Vl
ZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkg
dGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpl
eHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJv
dyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBs
b25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBp
bnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4
dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1
bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlsz
XSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3Bh
cmFtWzddKSB0aHJvdyAoKTsKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQg
c2hvcnQgaW50IHhbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYVszXTsKICAgIHVuc2lnbmVk
IHNob3J0IGludCBjOwogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOwogICAgaW50IGlu
aXQ7CiAgfTsKCgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpIHRocm93ICgpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hv
cnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpf
X3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBu
cmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19z
ZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsK
CmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAo
KTsKIyA1MjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChz
aXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0
ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVh
bGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7
CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCgojIDI2ICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIHZvaWQg
KmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQoKIyA1NDYgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXpl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19m
dW5jKSAodm9pZCkpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpf
X2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgdGhy
b3cgKCk7CmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg
dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9p
ZCBleGl0IChpbnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJu
X18pKTsKCiMgNTg4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1
cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVu
diAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVw
bGFjZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCB1bnNldGVudiAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSB0aHJv
dyAoKTsKIyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1w
IChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChj
aGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpIHRocm93ICgpOwoKCiMg
NjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
Kl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgdGhyb3cgKCk7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19j
b21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKCgoKCgoKZXh0
ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19i
YXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUs
IF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19i
YXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9f
Y29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9u
ZyBpbnQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzAwICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGlu
dCBfX2Rlbm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA3MTggIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNo
YXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJv
dyAoKTsKCgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKZXh0ZXJuIGNo
YXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVm
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAg
ICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwK
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFl
Y3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAg
ICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAg
ICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRo
cm93ICgpOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2Nv
bnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2Mg
KHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdj
dG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6
ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25z
dCBjaGFyICpfX3Jlc3BvbnNlKSB0aHJvdyAoKTsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVs
ZW0pIHRocm93ICgpOwoKCgoKCn0KCiMgMiAic2xvdHMuaCIgMgoKIyAzMyAiL3Vzci9saWIvcXQt
Mi4yLjAvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIgMSAzCiMgMzMgIi91c3IvbGliL3F0LTIuMi4w
L2luY2x1ZGUvcXdpZGdldC5oIiAxIDMKIyAzNCAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9x
d2luZG93ZGVmcy5oIiAxIDMKIyAzMyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xb2JqZWN0
ZGVmcy5oIiAxIDMKIyAzMTIgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcWdsb2JhbC5oIiAx
IDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVz
aG9ydDsKdHlwZWRlZiB1bnNpZ25lZCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7
CnR5cGVkZWYgY2hhciAqcGNoYXI7CnR5cGVkZWYgdWNoYXIgKnB1Y2hhcjsKdHlwZWRlZiBjb25z
dCBjaGFyICpwY2NoYXI7CgoKCgoKCgpjb25zdCBib29sIEZBTFNFID0gMDsKY29uc3QgYm9vbCBU
UlVFID0gITA7CiMgMzUwICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FnbG9iYWwuaCIgMwpp
bmxpbmUgaW50IHFSb3VuZCggZG91YmxlIGQgKQp7CiAgICByZXR1cm4gZCA+IDAuMCA/IGludChk
KzAuNSkgOiBpbnQoZC0wLjUpOwp9CiMgMzYyICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3Fn
bG9iYWwuaCIgMwoKdHlwZWRlZiBzaWduZWQgY2hhciBJTlQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgVUlOVDg7CnR5cGVkZWYgc2hvcnQgSU5UMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVUlO
VDE2Owp0eXBlZGVmIGludCBJTlQzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOwoKCnR5
cGVkZWYgc2lnbmVkIGNoYXIgUV9JTlQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgUV9VSU5UODsK
dHlwZWRlZiBzaG9ydCBRX0lOVDE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFFfVUlOVDE2Owp0
eXBlZGVmIGludCBRX0lOVDMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBRX1VJTlQzMjsKdHlwZWRl
ZiBsb25nIFFfSU5UNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBRX1VJTlQ2NDsKCgoKCgpjbGFz
cyBRRGF0YVN0cmVhbTsKCgoKCgoKCgoKIyAzNiAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9x
ZmVhdHVyZXMuaCIgMSAzCiMgMzk0ICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FnbG9iYWwu
aCIgMiAzCiMgNDMxICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FnbG9iYWwuaCIgMwogY29u
c3QgY2hhciAqcVZlcnNpb24oKTsKIGJvb2wgcVN5c0luZm8oIGludCAqd29yZFNpemUsIGJvb2wg
KmJpZ0VuZGlhbiApOwoKCgoKCgojIDQ5MyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xZ2xv
YmFsLmgiIDMKIHZvaWQgcURlYnVnKCBjb25zdCBjaGFyICosIC4uLiApCgogICAgX19hdHRyaWJ1
dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7Cgogdm9pZCBxV2FybmluZyggY29uc3Qg
Y2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikp
KQoKOwoKIHZvaWQgcUZhdGFsKCBjb25zdCBjaGFyICosIC4uLiApCgogICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7CgoKCgoKCgogdm9pZCBkZWJ1ZyggY29uc3Qg
Y2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikp
KQoKOwoKIHZvaWQgd2FybmluZyggY29uc3QgY2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRl
X18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZvaWQgZmF0YWwoIGNvbnN0IGNoYXIg
KiwgLi4uICkKCiAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKCjsK
CgojIDU1MiAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xZ2xvYmFsLmgiIDMKIGJvb2wgcXRf
Y2hlY2tfcG9pbnRlciggYm9vbCBjLCBjb25zdCBjaGFyICosIGludCApOwoKCgoKCgoKZW51bSBR
dE1zZ1R5cGUgeyBRdERlYnVnTXNnLCBRdFdhcm5pbmdNc2csIFF0RmF0YWxNc2cgfTsKCnR5cGVk
ZWYgdm9pZCAoKm1zZ19oYW5kbGVyKShRdE1zZ1R5cGUsIGNvbnN0IGNoYXIgKik7CiBtc2dfaGFu
ZGxlciBxSW5zdGFsbE1zZ0hhbmRsZXIoIG1zZ19oYW5kbGVyICk7CgoKIHZvaWQgcVN1cHByZXNz
T2Jzb2xldGVXYXJuaW5ncyggYm9vbCA9IFRSVUUgKTsKCgoKIHZvaWQgcU9ic29sZXRlKCBjb25z
dCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKm9sZGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpuZXdmdW5jICk7CiB2b2lkIHFPYnNvbGV0ZSggY29uc3QgY2hhciAqb2Jq
LCBjb25zdCBjaGFyICpvbGRmdW5jICk7CiB2b2lkIHFPYnNvbGV0ZSggY29uc3QgY2hhciAqbWVz
c2FnZSApOwojIDMzICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FvYmplY3RkZWZzLmgiIDIg
MwojIDEwNiAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xb2JqZWN0ZGVmcy5oIiAzCmNsYXNz
IFFPYmplY3Q7CmNsYXNzIFFNZXRhT2JqZWN0OwpjbGFzcyBRU2lnbmFsOwpjbGFzcyBRQ29ubmVj
dGlvbjsKY2xhc3MgUUV2ZW50OwpzdHJ1Y3QgUU1ldGFEYXRhOwpjbGFzcyBRQ29ubmVjdGlvbkxp
c3Q7CmNsYXNzIFFDb25uZWN0aW9uTGlzdEl0OwpjbGFzcyBRU2lnbmFsRGljdDsKY2xhc3MgUVNp
Z25hbERpY3RJdDsKY2xhc3MgUU9iamVjdExpc3Q7CmNsYXNzIFFPYmplY3RMaXN0SXQ7CmNsYXNz
IFFNZW1iZXJEaWN0OwoKCiMgMzQgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXdpbmRvd2Rl
ZnMuaCIgMiAzCgojIDM0ICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FzdHJpbmcuaCIgMSAz
CiMgMzQgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcWNzdHJpbmcuaCIgMSAzCiMgMzMgIi91
c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcWFycmF5LmgiIDEgMwojIDMzICIvdXNyL2xpYi9xdC0y
LjIuMC9pbmNsdWRlL3FnYXJyYXkuaCIgMSAzCiMgMzYgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1
ZGUvcXNoYXJlZC5oIiAxIDMKc3RydWN0IFFTaGFyZWQKewogICAgUVNoYXJlZCgpIHsgY291bnQg
PSAxOyB9CiAgICB2b2lkIHJlZigpIHsgY291bnQrKzsgfQogICAgYm9vbCBkZXJlZigpIHsgcmV0
dXJuICEtLWNvdW50OyB9CiAgICB1aW50IGNvdW50Owp9OwoKCiMgMzMgIi91c3IvbGliL3F0LTIu
Mi4wL2luY2x1ZGUvcWdhcnJheS5oIiAyIDMKCgoKY2xhc3MgUUdBcnJheQp7CmZyaWVuZCBjbGFz
cyBRQnVmZmVyOwpwdWJsaWM6CgogICAgc3RydWN0IGFycmF5X2RhdGEgOiBwdWJsaWMgUVNoYXJl
ZCB7CiAgICAgICAgYXJyYXlfZGF0YSgpIHsgZGF0YT0wOyBsZW49MDsgfQogICAgICAgIGNoYXIg
KmRhdGE7CiAgICAgICAgdWludCBsZW47CiAgICB9OwogICAgUUdBcnJheSgpOwpwcm90ZWN0ZWQ6
CiAgICBRR0FycmF5KCBpbnQsIGludCApOwogICAgUUdBcnJheSggaW50IHNpemUgKTsKICAgIFFH
QXJyYXkoIGNvbnN0IFFHQXJyYXkgJmEgKTsKICAgIHZpcnR1YWwgflFHQXJyYXkoKTsKCiAgICBR
R0FycmF5ICZvcGVyYXRvcj0oIGNvbnN0IFFHQXJyYXkgJmEgKSB7IHJldHVybiBhc3NpZ24oIGEg
KTsgfQoKICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSB7IGR1cGxpY2F0ZSgqdGhpcyk7IH0KCiAg
ICBjaGFyICpkYXRhKCkgY29uc3QgeyByZXR1cm4gc2hkLT5kYXRhOyB9CiAgICB1aW50IG5yZWZz
KCkgY29uc3QgeyByZXR1cm4gc2hkLT5jb3VudDsgfQogICAgdWludCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2hkLT5sZW47IH0KICAgIGJvb2wgaXNFcXVhbCggY29uc3QgUUdBcnJheSAmYSApIGNv
bnN0OwoKICAgIGJvb2wgcmVzaXplKCB1aW50IG5ld3NpemUgKTsKCiAgICBib29sIGZpbGwoIGNv
bnN0IGNoYXIgKmQsIGludCBsZW4sIHVpbnQgc3ogKTsKCiAgICBRR0FycmF5ICZhc3NpZ24oIGNv
bnN0IFFHQXJyYXkgJmEgKTsKICAgIFFHQXJyYXkgJmFzc2lnbiggY29uc3QgY2hhciAqZCwgdWlu
dCBsZW4gKTsKICAgIFFHQXJyYXkgJmR1cGxpY2F0ZSggY29uc3QgUUdBcnJheSAmYSApOwogICAg
UUdBcnJheSAmZHVwbGljYXRlKCBjb25zdCBjaGFyICpkLCB1aW50IGxlbiApOwogICAgdm9pZCBz
dG9yZSggY29uc3QgY2hhciAqZCwgdWludCBsZW4gKTsKCiAgICBhcnJheV9kYXRhICpzaGFyZWRC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIHNoZDsgfQogICAgdm9pZCBzZXRTaGFyZWRCbG9jayggYXJy
YXlfZGF0YSAqcCApIHsgc2hkPShhcnJheV9kYXRhKilwOyB9CgogICAgUUdBcnJheSAmc2V0UmF3
RGF0YSggY29uc3QgY2hhciAqZCwgdWludCBsZW4gKTsKICAgIHZvaWQgcmVzZXRSYXdEYXRhKCBj
b25zdCBjaGFyICpkLCB1aW50IGxlbiApOwoKICAgIGludCBmaW5kKCBjb25zdCBjaGFyICpkLCB1
aW50IGluZGV4LCB1aW50IHN6ICkgY29uc3Q7CiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNoYXIg
KmQsIHVpbnQgc3ogKSBjb25zdDsKCiAgICB2b2lkIHNvcnQoIHVpbnQgc3ogKTsKICAgIGludCBi
c2VhcmNoKCBjb25zdCBjaGFyICpkLCB1aW50IHN6ICkgY29uc3Q7CgogICAgY2hhciAqYXQoIHVp
bnQgaW5kZXggKSBjb25zdDsKCiAgICBib29sIHNldEV4cGFuZCggdWludCBpbmRleCwgY29uc3Qg
Y2hhciAqZCwgdWludCBzeiApOwoKcHJvdGVjdGVkOgogICAgdmlydHVhbCBhcnJheV9kYXRhICpu
ZXdEYXRhKCk7CiAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YSggYXJyYXlfZGF0YSAqcCApOwoK
cHJpdmF0ZToKICAgIHN0YXRpYyB2b2lkIG1zZ19pbmRleCggdWludCApOwogICAgYXJyYXlfZGF0
YSAqc2hkOwp9OwoKCmlubGluZSBjaGFyICpRR0FycmF5OjphdCggdWludCBpbmRleCApIGNvbnN0
CnsKCiAgICBpZiAoIGluZGV4ID49IHNpemUoKSApIHsKICAgICAgICBtc2dfaW5kZXgoIGluZGV4
ICk7CiAgICAgICAgaW5kZXggPSAwOwogICAgfQoKICAgIHJldHVybiAmc2hkLT5kYXRhW2luZGV4
XTsKfQoKCiMgMzMgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcWFycmF5LmgiIDIgMwoKCgp0
ZW1wbGF0ZTxjbGFzcyB0eXBlPiBjbGFzcyBRQXJyYXkgOiBwdWJsaWMgUUdBcnJheQp7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgdHlwZSogSXRlcmF0b3I7CiAgICB0eXBlZGVmIGNvbnN0IHR5cGUqIENv
bnN0SXRlcmF0b3I7CiAgICB0eXBlZGVmIHR5cGUgVmFsdWVUeXBlOwoKcHJvdGVjdGVkOgogICAg
UUFycmF5KCBpbnQsIGludCApIDogUUdBcnJheSggMCwgMCApIHt9CgpwdWJsaWM6CiAgICBRQXJy
YXkoKSB7fQogICAgUUFycmF5KCBpbnQgc2l6ZSApIDogUUdBcnJheShzaXplKnNpemVvZih0eXBl
KSkge30KICAgIFFBcnJheSggY29uc3QgUUFycmF5PHR5cGU+ICZhICkgOiBRR0FycmF5KGEpIHt9
CiAgIH5RQXJyYXkoKSB7fQogICAgUUFycmF5PHR5cGU+ICZvcGVyYXRvcj0oY29uc3QgUUFycmF5
PHR5cGU+ICZhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIChRQXJy
YXk8dHlwZT4mKVFHQXJyYXk6OmFzc2lnbihhKTsgfQogICAgdHlwZSAqZGF0YSgpIGNvbnN0IHsg
cmV0dXJuICh0eXBlICopUUdBcnJheTo6ZGF0YSgpOyB9CiAgICB1aW50IG5yZWZzKCkgY29uc3Qg
eyByZXR1cm4gUUdBcnJheTo6bnJlZnMoKTsgfQogICAgdWludCBzaXplKCkgY29uc3QgeyByZXR1
cm4gUUdBcnJheTo6c2l6ZSgpL3NpemVvZih0eXBlKTsgfQogICAgdWludCBjb3VudCgpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKTsgfQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gUUdB
cnJheTo6c2l6ZSgpID09IDA7IH0KICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gUUdB
cnJheTo6ZGF0YSgpID09IDA7IH0KICAgIGJvb2wgcmVzaXplKCB1aW50IHNpemUgKSB7IHJldHVy
biBRR0FycmF5OjpyZXNpemUoc2l6ZSpzaXplb2YodHlwZSkpOyB9CiAgICBib29sIHRydW5jYXRl
KCB1aW50IHBvcyApIHsgcmV0dXJuIFFHQXJyYXk6OnJlc2l6ZShwb3Mqc2l6ZW9mKHR5cGUpKTsg
fQogICAgYm9vbCBmaWxsKCBjb25zdCB0eXBlICZkLCBpbnQgc2l6ZSA9IC0xICkKICAgICAgICB7
IHJldHVybiBRR0FycmF5OjpmaWxsKChjaGFyKikmZCxzaXplLHNpemVvZih0eXBlKSApOyB9CiAg
ICB2b2lkIGRldGFjaCgpIHsgUUdBcnJheTo6ZGV0YWNoKCk7IH0KICAgIFFBcnJheTx0eXBlPiBj
b3B5KCkgY29uc3QKICAgICAgICB7IFFBcnJheTx0eXBlPiB0bXA7IHJldHVybiB0bXAuZHVwbGlj
YXRlKCp0aGlzKTsgfQogICAgUUFycmF5PHR5cGU+JiBhc3NpZ24oIGNvbnN0IFFBcnJheTx0eXBl
PiYgYSApCiAgICAgICAgeyByZXR1cm4gKFFBcnJheTx0eXBlPiYpUUdBcnJheTo6YXNzaWduKGEp
OyB9CiAgICBRQXJyYXk8dHlwZT4mIGFzc2lnbiggY29uc3QgdHlwZSAqYSwgdWludCBuICkKICAg
ICAgICB7IHJldHVybiAoUUFycmF5PHR5cGU+JilRR0FycmF5Ojphc3NpZ24oKGNoYXIqKWEsbipz
aXplb2YodHlwZSkpOyB9CiAgICBRQXJyYXk8dHlwZT4mIGR1cGxpY2F0ZSggY29uc3QgUUFycmF5
PHR5cGU+JiBhICkKICAgICAgICB7IHJldHVybiAoUUFycmF5PHR5cGU+JilRR0FycmF5OjpkdXBs
aWNhdGUoYSk7IH0KICAgIFFBcnJheTx0eXBlPiYgZHVwbGljYXRlKCBjb25zdCB0eXBlICphLCB1
aW50IG4gKQogICAgICAgIHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFHQXJyYXk6OmR1cGxpY2F0
ZSgoY2hhciopYSxuKnNpemVvZih0eXBlKSk7IH0KICAgIFFBcnJheTx0eXBlPiYgc2V0UmF3RGF0
YSggY29uc3QgdHlwZSAqYSwgdWludCBuICkKICAgICAgICB7IHJldHVybiAoUUFycmF5PHR5cGU+
JilRR0FycmF5OjpzZXRSYXdEYXRhKChjaGFyKilhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4qc2l6ZW9mKHR5cGUpKTsgfQogICAgdm9pZCBy
ZXNldFJhd0RhdGEoIGNvbnN0IHR5cGUgKmEsIHVpbnQgbiApCiAgICAgICAgeyBRR0FycmF5Ojpy
ZXNldFJhd0RhdGEoKGNoYXIqKWEsbipzaXplb2YodHlwZSkpOyB9CiAgICBpbnQgZmluZCggY29u
c3QgdHlwZSAmZCwgdWludCBpPTAgKSBjb25zdAogICAgICAgIHsgcmV0dXJuIFFHQXJyYXk6OmZp
bmQoKGNoYXIqKSZkLGksc2l6ZW9mKHR5cGUpKTsgfQogICAgaW50IGNvbnRhaW5zKCBjb25zdCB0
eXBlICZkICkgY29uc3QKICAgICAgICB7IHJldHVybiBRR0FycmF5Ojpjb250YWlucygoY2hhciop
JmQsc2l6ZW9mKHR5cGUpKTsgfQogICAgdm9pZCBzb3J0KCkgeyBRR0FycmF5Ojpzb3J0KHNpemVv
Zih0eXBlKSk7IH0KICAgIGludCBic2VhcmNoKCBjb25zdCB0eXBlICZkICkgY29uc3QKICAgICAg
ICB7IHJldHVybiBRR0FycmF5Ojpic2VhcmNoKChjb25zdCBjaGFyKikmZCxzaXplb2YodHlwZSkp
OyB9CiAgICB0eXBlJiBvcGVyYXRvcltdKCBpbnQgaSApIGNvbnN0CiAgICAgICAgeyByZXR1cm4g
KHR5cGUgJikoKih0eXBlICopUUdBcnJheTo6YXQoaSpzaXplb2YodHlwZSkpKTsgfQogICAgdHlw
ZSYgYXQoIHVpbnQgaSApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gKHR5cGUgJikoKih0eXBlICop
UUdBcnJheTo6YXQoaSpzaXplb2YodHlwZSkpKTsgfQogICAgICAgICBvcGVyYXRvciBjb25zdCB0
eXBlKigpIGNvbnN0IHsgcmV0dXJuIChjb25zdCB0eXBlICopUUdBcnJheTo6ZGF0YSgpOyB9CiAg
ICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFBcnJheTx0eXBlPiAmYSApIGNvbnN0IHsgcmV0dXJu
IGlzRXF1YWwoYSk7IH0KICAgIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUUFycmF5PHR5cGU+ICZh
ICkgY29uc3QgeyByZXR1cm4gIWlzRXF1YWwoYSk7IH0KICAgIEl0ZXJhdG9yIGJlZ2luKCkgeyBy
ZXR1cm4gZGF0YSgpOyB9CiAgICBJdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRhKCkgKyBzaXpl
KCk7IH0KICAgIENvbnN0SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBkYXRhKCk7IH0K
ICAgIENvbnN0SXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9
Cn07CgoKIyAzNCAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xY3N0cmluZy5oIiAyIDMKCgoK
IyAyOCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKZXh0ZXJuICJDIiB7CgoKCgoKCgoKZXh0
ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpf
X3NyYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2Nw
eSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny
YywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCk7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf
X24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9f
Y29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgojIDc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNw
eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0
aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25z
dCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAq
c3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ry
Y2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxNjcgIi91c3Iv
aW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAq
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25z
dCBjaGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25z
dCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCiMgMTg5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnRvayAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQog
ICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2
ZV9wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CiMgMjIwICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAq
X19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCiMgMjMxICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIHRo
cm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIg
Kl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RyZXJyb3Jf
ciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3Qs
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3Mx
LCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKCgojIDI3NiAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
Miwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
IyAzMDAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFy
ICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsKIyAzNjkgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwp9CgojIDM3ICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3Fjc3RyaW5nLmgiIDIg
MwojIDY4ICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3Fjc3RyaW5nLmgiIDMKIHZvaWQgKnFt
ZW1tb3ZlKCB2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgdWludCBsZW4gKTsKCgoKCgogY2hh
ciAqcXN0cmR1cCggY29uc3QgY2hhciAqICk7CgogaW5saW5lIHVpbnQgY3N0cmxlbiggY29uc3Qg
Y2hhciAqc3RyICkKeyByZXR1cm4gc3RybGVuKHN0cik7IH0KCiBpbmxpbmUgdWludCBxc3RybGVu
KCBjb25zdCBjaGFyICpzdHIgKQp7IHJldHVybiBzdHIgPyBzdHJsZW4oc3RyKSA6IDA7IH0KCiBp
bmxpbmUgY2hhciAqY3N0cmNweSggY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMgKQp7IHJldHVy
biBzdHJjcHkoZHN0LHNyYyk7IH0KCiBpbmxpbmUgY2hhciAqcXN0cmNweSggY2hhciAqZHN0LCBj
b25zdCBjaGFyICpzcmMgKQp7IHJldHVybiBzcmMgPyBzdHJjcHkoZHN0LCBzcmMpIDogMDsgfQoK
IGNoYXIgKnFzdHJuY3B5KCBjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgdWludCBsZW4gKTsK
CiBpbmxpbmUgaW50IGNzdHJjbXAoIGNvbnN0IGNoYXIgKnN0cjEsIGNvbnN0IGNoYXIgKnN0cjIg
KQp7IHJldHVybiBzdHJjbXAoc3RyMSxzdHIyKTsgfQoKIGlubGluZSBpbnQgcXN0cmNtcCggY29u
c3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiApCnsgcmV0dXJuIChzdHIxICYmIHN0cjIp
ID8gc3RyY21wKHN0cjEsc3RyMikgOiAoaW50KSgobG9uZylzdHIyIC0gKGxvbmcpc3RyMSk7IH0K
CiBpbmxpbmUgaW50IGNzdHJuY21wKCBjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIy
LCB1aW50IGxlbiApCnsgcmV0dXJuIHN0cm5jbXAoc3RyMSxzdHIyLGxlbik7IH0KCiBpbmxpbmUg
aW50IHFzdHJuY21wKCBjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIyLCB1aW50IGxl
biApCnsgcmV0dXJuIChzdHIxICYmIHN0cjIpID8gc3RybmNtcChzdHIxLHN0cjIsbGVuKSA6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKGxvbmcpc3RyMiAtIChsb25nKXN0cjEpOyB9
CgogaW50IHFzdHJpY21wKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwoKIGludCBxc3Ry
bmljbXAoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1aW50IGxlbiApOwoKCgoKCgojIDEz
NyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xY3N0cmluZy5oIiAzCiBRX1VJTlQxNiBxQ2hl
Y2tzdW0oIGNvbnN0IGNoYXIgKnMsIHVpbnQgbGVuICk7CgoKCgoKCgoKdHlwZWRlZiBRQXJyYXk8
Y2hhcj4gUUJ5dGVBcnJheTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0
cmVhbSAmLCBjb25zdCBRQnl0ZUFycmF5ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBR
RGF0YVN0cmVhbSAmLCBRQnl0ZUFycmF5ICYgKTsKIyAxNjMgIi91c3IvbGliL3F0LTIuMi4wL2lu
Y2x1ZGUvcWNzdHJpbmcuaCIgMwpjbGFzcyBRUmVnRXhwOwoKY2xhc3MgUUNTdHJpbmcgOiBwdWJs
aWMgUUJ5dGVBcnJheQp7CnB1YmxpYzoKICAgIFFDU3RyaW5nKCkge30KICAgIFFDU3RyaW5nKCBp
bnQgc2l6ZSApOwogICAgUUNTdHJpbmcoIGNvbnN0IFFDU3RyaW5nICZzICkgOiBRQnl0ZUFycmF5
KCBzICkge30KICAgIFFDU3RyaW5nKCBjb25zdCBjaGFyICpzdHIgKTsKICAgIFFDU3RyaW5nKCBj
b25zdCBjaGFyICpzdHIsIHVpbnQgbWF4bGVuICk7CgogICAgUUNTdHJpbmcgJm9wZXJhdG9yPSgg
Y29uc3QgUUNTdHJpbmcgJnMgKTsKICAgIFFDU3RyaW5nICZvcGVyYXRvcj0oIGNvbnN0IGNoYXIg
KnN0ciApOwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKICAgIHVpbnQgbGVuZ3RoKCkgY29uc3Q7CiAgICBib29sIHJlc2l6ZSggdWludCBuZXdsZW4g
KTsKICAgIGJvb2wgdHJ1bmNhdGUoIHVpbnQgcG9zICk7CiAgICBib29sIGZpbGwoIGNoYXIgYywg
aW50IGxlbiA9IC0xICk7CgogICAgUUNTdHJpbmcgY29weSgpIGNvbnN0OwoKICAgIFFDU3RyaW5n
ICZzcHJpbnRmKCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLiApOwoKICAgIGludCBmaW5kKCBjaGFy
IGMsIGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjb25z
dCBjaGFyICpzdHIsIGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBm
aW5kKCBjb25zdCBRUmVnRXhwICYsIGludCBpbmRleD0wICkgY29uc3Q7CiAgICBpbnQgZmluZFJl
diggY2hhciBjLCBpbnQgaW5kZXg9LTEsIGJvb2wgY3M9VFJVRSkgY29uc3Q7CiAgICBpbnQgZmlu
ZFJldiggY29uc3QgY2hhciAqc3RyLCBpbnQgaW5kZXg9LTEsIGJvb2wgY3M9VFJVRSkgY29uc3Q7
CiAgICBpbnQgZmluZFJldiggY29uc3QgUVJlZ0V4cCAmLCBpbnQgaW5kZXg9LTEgKSBjb25zdDsK
ICAgIGludCBjb250YWlucyggY2hhciBjLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBj
b250YWlucyggY29uc3QgY2hhciAqc3RyLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBj
b250YWlucyggY29uc3QgUVJlZ0V4cCAmICkgY29uc3Q7CgogICAgUUNTdHJpbmcgbGVmdCggdWlu
dCBsZW4gKSBjb25zdDsKICAgIFFDU3RyaW5nIHJpZ2h0KCB1aW50IGxlbiApIGNvbnN0OwogICAg
UUNTdHJpbmcgbWlkKCB1aW50IGluZGV4LCB1aW50IGxlbj0weGZmZmZmZmZmKSBjb25zdDsKCiAg
ICBRQ1N0cmluZyBsZWZ0SnVzdGlmeSggdWludCB3aWR0aCwgY2hhciBmaWxsPScgJywgYm9vbCB0
cnVuYz1GQUxTRSljb25zdDsKICAgIFFDU3RyaW5nIHJpZ2h0SnVzdGlmeSggdWludCB3aWR0aCwg
Y2hhciBmaWxsPScgJyxib29sIHRydW5jPUZBTFNFKWNvbnN0OwoKICAgIFFDU3RyaW5nIGxvd2Vy
KCkgY29uc3Q7CiAgICBRQ1N0cmluZyB1cHBlcigpIGNvbnN0OwoKICAgIFFDU3RyaW5nIHN0cmlw
V2hpdGVTcGFjZSgpIGNvbnN0OwogICAgUUNTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29u
c3Q7CgogICAgUUNTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgY29uc3QgY2hhciAqICk7CiAg
ICBRQ1N0cmluZyAmaW5zZXJ0KCB1aW50IGluZGV4LCBjaGFyICk7CiAgICBRQ1N0cmluZyAmYXBw
ZW5kKCBjb25zdCBjaGFyICogKTsKICAgIFFDU3RyaW5nICZwcmVwZW5kKCBjb25zdCBjaGFyICog
KTsKICAgIFFDU3RyaW5nICZyZW1vdmUoIHVpbnQgaW5kZXgsIHVpbnQgbGVuICk7CiAgICBRQ1N0
cmluZyAmcmVwbGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNvbnN0IGNoYXIgKiApOwogICAg
UUNTdHJpbmcgJnJlcGxhY2UoIGNvbnN0IFFSZWdFeHAgJiwgY29uc3QgY2hhciAqICk7CgogICAg
c2hvcnQgdG9TaG9ydCggYm9vbCAqb2s9MCApIGNvbnN0OwogICAgdXNob3J0IHRvVVNob3J0KCBi
b29sICpvaz0wICkgY29uc3Q7CiAgICBpbnQgdG9JbnQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAg
IHVpbnQgdG9VSW50KCBib29sICpvaz0wICkgY29uc3Q7CiAgICBsb25nIHRvTG9uZyggYm9vbCAq
b2s9MCApIGNvbnN0OwogICAgdWxvbmcgdG9VTG9uZyggYm9vbCAqb2s9MCApIGNvbnN0OwogICAg
ZmxvYXQgdG9GbG9hdCggYm9vbCAqb2s9MCApIGNvbnN0OwogICAgZG91YmxlIHRvRG91YmxlKCBi
b29sICpvaz0wICkgY29uc3Q7CgogICAgUUNTdHJpbmcgJnNldFN0ciggY29uc3QgY2hhciAqcyAp
OwogICAgUUNTdHJpbmcgJnNldE51bSggc2hvcnQgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIHVz
aG9ydCApOwogICAgUUNTdHJpbmcgJnNldE51bSggaW50ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVt
KCB1aW50ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVtKCBsb25nICk7CiAgICBRQ1N0cmluZyAmc2V0
TnVtKCB1bG9uZyApOwogICAgUUNTdHJpbmcgJnNldE51bSggZmxvYXQsIGNoYXIgZj0nZycsIGlu
dCBwcmVjPTYgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIGRvdWJsZSwgY2hhciBmPSdnJywgaW50
IHByZWM9NiApOwoKICAgIGJvb2wgc2V0RXhwYW5kKCB1aW50IGluZGV4LCBjaGFyIGMgKTsKCiAg
ICAgICAgICAgICAgICBvcGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdDsKICAgIFFDU3RyaW5n
ICZvcGVyYXRvcis9KCBjb25zdCBjaGFyICpzdHIgKTsKICAgIFFDU3RyaW5nICZvcGVyYXRvcis9
KCBjaGFyIGMgKTsKfTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVh
bSAmLCBjb25zdCBRQ1N0cmluZyAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFT
dHJlYW0gJiwgUUNTdHJpbmcgJiApOwoKCgoKCgppbmxpbmUgUUNTdHJpbmcgJlFDU3RyaW5nOjpv
cGVyYXRvcj0oIGNvbnN0IFFDU3RyaW5nICZzICkKeyByZXR1cm4gKFFDU3RyaW5nJilhc3NpZ24o
IHMgKTsgfQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6b3BlcmF0b3I9KCBjb25zdCBjaGFy
ICpzdHIgKQp7IHJldHVybiAoUUNTdHJpbmcmKWR1cGxpY2F0ZSggc3RyLCBxc3RybGVuKHN0cikr
MSApOyB9CgppbmxpbmUgYm9vbCBRQ1N0cmluZzo6aXNOdWxsKCkgY29uc3QKeyByZXR1cm4gZGF0
YSgpID09IDA7IH0KCmlubGluZSBib29sIFFDU3RyaW5nOjppc0VtcHR5KCkgY29uc3QKeyByZXR1
cm4gZGF0YSgpID09IDAgfHwgKmRhdGEoKSA9PSAnXDAnOyB9CgppbmxpbmUgdWludCBRQ1N0cmlu
Zzo6bGVuZ3RoKCkgY29uc3QKeyByZXR1cm4gcXN0cmxlbiggZGF0YSgpICk7IH0KCmlubGluZSBi
b29sIFFDU3RyaW5nOjp0cnVuY2F0ZSggdWludCBwb3MgKQp7IHJldHVybiByZXNpemUocG9zKzEp
OyB9CgppbmxpbmUgUUNTdHJpbmcgUUNTdHJpbmc6OmNvcHkoKSBjb25zdAp7IHJldHVybiBRQ1N0
cmluZyggZGF0YSgpICk7IH0KCmlubGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6OnByZXBlbmQoIGNv
bnN0IGNoYXIgKnMgKQp7IHJldHVybiBpbnNlcnQoMCxzKTsgfQoKaW5saW5lIFFDU3RyaW5nICZR
Q1N0cmluZzo6YXBwZW5kKCBjb25zdCBjaGFyICpzICkKeyByZXR1cm4gb3BlcmF0b3IrPShzKTsg
fQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCBzaG9ydCBuICkKeyByZXR1cm4g
c2V0TnVtKChsb25nKW4pOyB9CgppbmxpbmUgUUNTdHJpbmcgJlFDU3RyaW5nOjpzZXROdW0oIHVz
aG9ydCBuICkKeyByZXR1cm4gc2V0TnVtKCh1bG9uZyluKTsgfQoKaW5saW5lIFFDU3RyaW5nICZR
Q1N0cmluZzo6c2V0TnVtKCBpbnQgbiApCnsgcmV0dXJuIHNldE51bSgobG9uZyluKTsgfQoKaW5s
aW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCB1aW50IG4gKQp7IHJldHVybiBzZXROdW0o
KHVsb25nKW4pOyB9CgppbmxpbmUgUUNTdHJpbmcgJlFDU3RyaW5nOjpzZXROdW0oIGZsb2F0IG4s
IGNoYXIgZiwgaW50IHByZWMgKQp7IHJldHVybiBzZXROdW0oKGRvdWJsZSluLGYscHJlYyk7IH0K
CmlubGluZSBRQ1N0cmluZzo6b3BlcmF0b3IgY29uc3QgY2hhciAqKCkgY29uc3QKeyByZXR1cm4g
KGNvbnN0IGNoYXIgKilkYXRhKCk7IH0KCgoKCgoKIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNv
bnN0IFFDU3RyaW5nICZzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChz
MS5kYXRhKCksczIuZGF0YSgpKSA9PSAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29u
c3QgUUNTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEuZGF0
YSgpLHMyKSA9PSAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgY2hhciAqczEs
IGNvbnN0IFFDU3RyaW5nICZzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSA9PSAw
OyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUUNTdHJpbmcgJnMxLCBjb25zdCBR
Q1N0cmluZyAmczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRhdGEoKSxzMi5kYXRhKCkpICE9IDA7
IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IGNo
YXIgKnMyICkKeyByZXR1cm4gcXN0cmNtcChzMS5kYXRhKCksczIpICE9IDA7IH0KCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KCBjb25zdCBjaGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKeyBy
ZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRhKCkpICE9IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cjwoIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgUUNTdHJpbmcmIHMyICkKeyByZXR1cm4gcXN0
cmNtcChzMS5kYXRhKCksczIuZGF0YSgpKSA8IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwo
IGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMx
LmRhdGEoKSxzMikgPCAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBjaGFyICpz
MSwgY29uc3QgUUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRhKCkpIDwg
MDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3Qg
Y2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRhdGEoKSxzMikgPD0gMDsgfQoKIGlubGlu
ZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBRQ1N0cmluZyAmczIgKQp7
IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEoKSkgPD0gMDsgfQoKIGlubGluZSBib29sIG9wZXJh
dG9yPiggY29uc3QgUUNTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApCnsgcmV0dXJuIHFzdHJj
bXAoczEuZGF0YSgpLHMyKSA+IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IGNo
YXIgKnMxLCBjb25zdCBRQ1N0cmluZyAmczIgKQp7IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEo
KSkgPiAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgUUNTdHJpbmcgJnMxLCBj
b25zdCBjaGFyICpzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEuZGF0YSgpLHMyKSA+PSAwOyB9Cgog
aW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgY2hhciAqczEsIGNvbnN0IFFDU3RyaW5nICZz
MiApCnsgcmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSA+PSAwOyB9CgogaW5saW5lIFFDU3Ry
aW5nIG9wZXJhdG9yKyggY29uc3QgUUNTdHJpbmcgJnMxLCBjb25zdCBRQ1N0cmluZyAmczIgKQp7
CiAgICBRQ1N0cmluZyB0bXAoIHMxLmRhdGEoKSApOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJu
IHRtcDsKfQoKIGlubGluZSBRQ1N0cmluZyBvcGVyYXRvcisoIGNvbnN0IFFDU3RyaW5nICZzMSwg
Y29uc3QgY2hhciAqczIgKQp7CiAgICBRQ1N0cmluZyB0bXAoIHMxLmRhdGEoKSApOwogICAgdG1w
ICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRQ1N0cmluZyBvcGVyYXRvcisoIGNv
bnN0IGNoYXIgKnMxLCBjb25zdCBRQ1N0cmluZyAmczIgKQp7CiAgICBRQ1N0cmluZyB0bXAoIHMx
ICk7CiAgICB0bXAgKz0gczI7CiAgICByZXR1cm4gdG1wOwp9CgogaW5saW5lIFFDU3RyaW5nIG9w
ZXJhdG9yKyggY29uc3QgUUNTdHJpbmcgJnMxLCBjaGFyIGMyICkKewogICAgUUNTdHJpbmcgdG1w
KCBzMS5kYXRhKCkgKTsKICAgIHRtcCArPSBjMjsKICAgIHJldHVybiB0bXA7Cn0KCiBpbmxpbmUg
UUNTdHJpbmcgb3BlcmF0b3IrKCBjaGFyIGMxLCBjb25zdCBRQ1N0cmluZyAmczIgKQp7CiAgICBR
Q1N0cmluZyB0bXA7CiAgICB0bXAgKz0gYzE7CiAgICB0bXAgKz0gczI7CiAgICByZXR1cm4gdG1w
Owp9CgojIDM0ICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FzdHJpbmcuaCIgMiAzCgoKCgoK
CgpjbGFzcyBRUmVnRXhwOwpjbGFzcyBRU3RyaW5nOwpjbGFzcyBRQ2hhclJlZjsKCmNsYXNzIFFD
aGFyIHsKcHVibGljOgogICAgUUNoYXIoKTsKICAgIFFDaGFyKCBjaGFyIGMgKTsKICAgIFFDaGFy
KCB1Y2hhciBjICk7CiAgICBRQ2hhciggdWNoYXIgYywgdWNoYXIgciApOwogICAgUUNoYXIoIGNv
bnN0IFFDaGFyJiBjICk7CiAgICBRQ2hhciggdXNob3J0IHJjICk7CiAgICBRQ2hhciggc2hvcnQg
cmMgKTsKICAgIFFDaGFyKCB1aW50IHJjICk7CiAgICBRQ2hhciggaW50IHJjICk7CgogICAgc3Rh
dGljIGNvbnN0IFFDaGFyIG51bGw7CiAgICBzdGF0aWMgY29uc3QgUUNoYXIgcmVwbGFjZW1lbnQ7
CiAgICBzdGF0aWMgY29uc3QgUUNoYXIgYnl0ZU9yZGVyTWFyazsKICAgIHN0YXRpYyBjb25zdCBR
Q2hhciBieXRlT3JkZXJTd2FwcGVkOwogICAgc3RhdGljIGNvbnN0IFFDaGFyIG5ic3A7CgoKCiAg
ICBlbnVtIENhdGVnb3J5CiAgICB7CiAgICAgICAgTm9DYXRlZ29yeSwKCiAgICAgICAgTWFya19O
b25TcGFjaW5nLAogICAgICAgIE1hcmtfU3BhY2luZ0NvbWJpbmluZywKICAgICAgICBNYXJrX0Vu
Y2xvc2luZywKCiAgICAgICAgTnVtYmVyX0RlY2ltYWxEaWdpdCwKICAgICAgICBOdW1iZXJfTGV0
dGVyLAogICAgICAgIE51bWJlcl9PdGhlciwKCiAgICAgICAgU2VwYXJhdG9yX1NwYWNlLAogICAg
ICAgIFNlcGFyYXRvcl9MaW5lLAogICAgICAgIFNlcGFyYXRvcl9QYXJhZ3JhcGgsCgogICAgICAg
IE90aGVyX0NvbnRyb2wsCiAgICAgICAgT3RoZXJfRm9ybWF0LAogICAgICAgIE90aGVyX1N1cnJv
Z2F0ZSwKICAgICAgICBPdGhlcl9Qcml2YXRlVXNlLAogICAgICAgIE90aGVyX05vdEFzc2lnbmVk
LAoKICAgICAgICBMZXR0ZXJfVXBwZXJjYXNlLAogICAgICAgIExldHRlcl9Mb3dlcmNhc2UsCiAg
ICAgICAgTGV0dGVyX1RpdGxlY2FzZSwKICAgICAgICBMZXR0ZXJfTW9kaWZpZXIsCiAgICAgICAg
TGV0dGVyX090aGVyLAoKICAgICAgICBQdW5jdHVhdGlvbl9Db25uZWN0b3IsCiAgICAgICAgUHVu
Y3R1YXRpb25fRGFzaywKICAgICAgICBQdW5jdHVhdGlvbl9PcGVuLAogICAgICAgIFB1bmN0dWF0
aW9uX0Nsb3NlLAogICAgICAgIFB1bmN0dWF0aW9uX0luaXRpYWxRdW90ZSwKICAgICAgICBQdW5j
dHVhdGlvbl9GaW5hbFF1b3RlLAogICAgICAgIFB1bmN0dWF0aW9uX090aGVyLAoKICAgICAgICBT
eW1ib2xfTWF0aCwKICAgICAgICBTeW1ib2xfQ3VycmVuY3ksCiAgICAgICAgU3ltYm9sX01vZGlm
aWVyLAogICAgICAgIFN5bWJvbF9PdGhlcgogICAgfTsKCiAgICBlbnVtIERpcmVjdGlvbgogICAg
ewogICAgICAgIERpckwsIERpclIsIERpckVOLCBEaXJFUywgRGlyRVQsIERpckFOLCBEaXJDUywg
RGlyQiwgRGlyUywgRGlyV1MsIERpck9OLAogICAgICAgIERpckxSRSwgRGlyTFJPLCBEaXJBTCwg
RGlyUkxFLCBEaXJSTE8sIERpclBERiwgRGlyTlNNLCBEaXJCTgogICAgfTsKCiAgICBlbnVtIERl
Y29tcG9zaXRpb24KICAgIHsKICAgICAgICBTaW5nbGUsIENhbm9uaWNhbCwgRm9udCwgTm9CcmVh
aywgSW5pdGlhbCwgTWVkaWFsLAogICAgICAgIEZpbmFsLCBJc29sYXRlZCwgQ2lyY2xlLCBTdXBl
ciwgU3ViLCBWZXJ0aWNhbCwKICAgICAgICBXaWRlLCBOYXJyb3csIFNtYWxsLCBTcXVhcmUsIENv
bXBhdCwgRnJhY3Rpb24KICAgIH07CgogICAgZW51bSBKb2luaW5nCiAgICB7CiAgICAgICAgT3Ro
ZXJKb2luaW5nLCBEdWFsLCBSaWdodCwgQ2VudGVyCiAgICB9OwoKCgogICAgaW50IGRpZ2l0VmFs
dWUoKSBjb25zdDsKICAgIFFDaGFyIGxvd2VyKCkgY29uc3Q7CiAgICBRQ2hhciB1cHBlcigpIGNv
bnN0OwoKICAgIENhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3Q7CiAgICBEaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3Q7CiAgICBKb2luaW5nIGpvaW5pbmcoKSBjb25zdDsKICAgIGJvb2wgbWlycm9y
ZWQoKSBjb25zdDsKICAgIFFDaGFyIG1pcnJvcmVkQ2hhcigpIGNvbnN0OwogICAgUVN0cmluZyBk
ZWNvbXBvc2l0aW9uKCkgY29uc3Q7CiAgICBEZWNvbXBvc2l0aW9uIGRlY29tcG9zaXRpb25UYWco
KSBjb25zdDsKCiAgICBjaGFyIGxhdGluMSgpIGNvbnN0IHsgcmV0dXJuIHJ3ID8gMCA6IGNsOyB9
CiAgICB1c2hvcnQgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIChydyA8PCA4KSB8IGNsOyB9CgoK
ICAgIG9wZXJhdG9yIGNoYXIoKSBjb25zdCB7IHJldHVybiBsYXRpbjEoKTsgfQoKCiAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIHVuaWNvZGUoKT09MDsgfQogICAgYm9vbCBpc1ByaW50
KCkgY29uc3Q7CiAgICBib29sIGlzUHVuY3QoKSBjb25zdDsKICAgIGJvb2wgaXNTcGFjZSgpIGNv
bnN0OwogICAgYm9vbCBpc01hcmsoKSBjb25zdDsKICAgIGJvb2wgaXNMZXR0ZXIoKSBjb25zdDsK
ICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgIGJvb2wgaXNMZXR0ZXJPck51bWJlcigpIGNv
bnN0OwogICAgYm9vbCBpc0RpZ2l0KCkgY29uc3Q7CgogICAgdWNoYXImIGNlbGwoKSB7IHJldHVy
biBjbDsgfQogICAgdWNoYXImIHJvdygpIHsgcmV0dXJuIHJ3OyB9CiAgICB1Y2hhciBjZWxsKCkg
Y29uc3QgeyByZXR1cm4gY2w7IH0KICAgIHVjaGFyIHJvdygpIGNvbnN0IHsgcmV0dXJuIHJ3OyB9
CgogICAgc3RhdGljIGJvb2wgbmV0d29ya09yZGVyZWQoKSB7IHJldHVybiAoaW50KW5ldF9vcmRl
cmVkID09IDE7IH0KCiAgICBmcmllbmQgaW5saW5lIGludCBvcGVyYXRvcj09KCBjaGFyIGNoLCBR
Q2hhciBjICk7CiAgICBmcmllbmQgaW5saW5lIGludCBvcGVyYXRvcj09KCBRQ2hhciBjLCBjaGFy
IGNoICk7CiAgICBmcmllbmQgaW5saW5lIGludCBvcGVyYXRvcj09KCBRQ2hhciBjMSwgUUNoYXIg
YzIgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMxLCBRQ2hhciBj
MiApOwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3IhPSggY2hhciBjaCwgUUNoYXIgYyAp
OwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3IhPSggUUNoYXIgYywgY2hhciBjaCApOwog
ICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I8PSggUUNoYXIgYywgY2hhciBjaCApOwogICAg
ZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I8PSggY2hhciBjaCwgUUNoYXIgYyApOwogICAgZnJp
ZW5kIGlubGluZSBpbnQgb3BlcmF0b3I8PSggUUNoYXIgYzEsIFFDaGFyIGMyICk7Cgpwcml2YXRl
OgoKCgogICAgdWNoYXIgcnc7CiAgICB1Y2hhciBjbDsKCgoKICAgIGVudW0geyBuZXRfb3JkZXJl
ZCA9IDEgfTsKIyAxOTIgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXN0cmluZy5oIiAzCn07
CgppbmxpbmUgUUNoYXI6OlFDaGFyKCkKewogICAgcncgPSAwOyBjbCA9IDA7CgoKCn0KaW5saW5l
IFFDaGFyOjpRQ2hhciggY2hhciBjICkKewogICAgcncgPSAwOyBjbCA9ICh1Y2hhciljOwoKCgp9
CmlubGluZSBRQ2hhcjo6UUNoYXIoIHVjaGFyIGMgKQp7CiAgICBydyA9IDA7IGNsID0gYzsKCgoK
fQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1Y2hhciBjLCB1Y2hhciByICkKewogICAgcncgPSByOyBj
bCA9IGM7CgoKCn0KaW5saW5lIFFDaGFyOjpRQ2hhciggY29uc3QgUUNoYXImIGMgKQp7CiAgICBy
dyA9IGMucnc7IGNsID0gYy5jbDsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1c2hvcnQgcmMg
KQp7CiAgICBydyA9ICh1Y2hhcikoKHJjPj44KSYweGZmKTsgY2wgPSAodWNoYXIpKHJjJjB4ZmYp
OwoKCgp9CmlubGluZSBRQ2hhcjo6UUNoYXIoIHNob3J0IHJjICkKewogICAgcncgPSAodWNoYXIp
KChyYz4+OCkmMHhmZik7IGNsID0gKHVjaGFyKShyYyYweGZmKTsKCgoKfQppbmxpbmUgUUNoYXI6
OlFDaGFyKCB1aW50IHJjICkKewogICAgcncgPSAodWNoYXIpKChyYz4+OCkmMHhmZik7IGNsID0g
KHVjaGFyKShyYyYweGZmKTsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCBpbnQgcmMgKQp7CiAg
ICBydyA9ICh1Y2hhcikoKHJjPj44KSYweGZmKTsgY2wgPSAodWNoYXIpKHJjJjB4ZmYpOwoKCgp9
CgoKaW5saW5lIGludCBvcGVyYXRvcj09KCBjaGFyIGNoLCBRQ2hhciBjICkKewogICAgcmV0dXJu
IGNoID09IGMuY2wgJiYgIWMucnc7Cn0KCmlubGluZSBpbnQgb3BlcmF0b3I9PSggUUNoYXIgYywg
Y2hhciBjaCApCnsKICAgIHJldHVybiBjaCA9PSBjLmNsICYmICFjLnJ3Owp9CgppbmxpbmUgaW50
IG9wZXJhdG9yPT0oIFFDaGFyIGMxLCBRQ2hhciBjMiApCnsKICAgIHJldHVybiBjMS5jbCA9PSBj
Mi5jbAogICAgICAgICYmIGMxLnJ3ID09IGMyLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0o
IFFDaGFyIGMxLCBRQ2hhciBjMiApCnsKICAgIHJldHVybiBjMS5jbCAhPSBjMi5jbAogICAgICAg
IHx8IGMxLnJ3ICE9IGMyLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0oIGNoYXIgY2gsIFFD
aGFyIGMgKQp7CiAgICByZXR1cm4gY2ggIT0gYy5jbCB8fCBjLnJ3Owp9CgppbmxpbmUgaW50IG9w
ZXJhdG9yIT0oIFFDaGFyIGMsIGNoYXIgY2ggKQp7CiAgICByZXR1cm4gY2ggIT0gYy5jbCB8fCBj
LnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yPD0oIFFDaGFyIGMsIGNoYXIgY2ggKQp7CiAgICBy
ZXR1cm4gIShjaCA8IGMuY2wgfHwgYy5ydyk7Cn0KCmlubGluZSBpbnQgb3BlcmF0b3I8PSggY2hh
ciBjaCwgUUNoYXIgYyApCnsKICAgIHJldHVybiBjaCA8PSBjLmNsIHx8IGMucnc7Cn0KCmlubGlu
ZSBpbnQgb3BlcmF0b3I8PSggUUNoYXIgYzEsIFFDaGFyIGMyICkKewogICAgcmV0dXJuIGMxLnJ3
ID4gYzIucncKICAgICAgICA/IEZBTFNFCiAgICAgICAgOiBjMS5ydyA8IGMyLnJ3CiAgICAgICAg
ICAgID8gVFJVRQogICAgICAgICAgICA6IGMxLmNsIDw9IGMyLmNsOwp9CgppbmxpbmUgaW50IG9w
ZXJhdG9yPj0oIFFDaGFyIGMsIGNoYXIgY2ggKSB7IHJldHVybiBjaCA8PSBjOyB9CmlubGluZSBp
bnQgb3BlcmF0b3I+PSggY2hhciBjaCwgUUNoYXIgYyApIHsgcmV0dXJuIGMgPD0gY2g7IH0KaW5s
aW5lIGludCBvcGVyYXRvcj49KCBRQ2hhciBjMSwgUUNoYXIgYzIgKSB7IHJldHVybiBjMiA8PSBj
MTsgfQppbmxpbmUgaW50IG9wZXJhdG9yPCggUUNoYXIgYywgY2hhciBjaCApIHsgcmV0dXJuICEo
Y2g8PWMpOyB9CmlubGluZSBpbnQgb3BlcmF0b3I8KCBjaGFyIGNoLCBRQ2hhciBjICkgeyByZXR1
cm4gIShjPD1jaCk7IH0KaW5saW5lIGludCBvcGVyYXRvcjwoIFFDaGFyIGMxLCBRQ2hhciBjMiAp
IHsgcmV0dXJuICEoYzI8PWMxKTsgfQppbmxpbmUgaW50IG9wZXJhdG9yPiggUUNoYXIgYywgY2hh
ciBjaCApIHsgcmV0dXJuICEoY2g+PWMpOyB9CmlubGluZSBpbnQgb3BlcmF0b3I+KCBjaGFyIGNo
LCBRQ2hhciBjICkgeyByZXR1cm4gIShjPj1jaCk7IH0KaW5saW5lIGludCBvcGVyYXRvcj4oIFFD
aGFyIGMxLCBRQ2hhciBjMiApIHsgcmV0dXJuICEoYzI+PWMxKTsgfQoKCnN0cnVjdCBRU3RyaW5n
RGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKICAgIFFTdHJpbmdEYXRhKCkgOgogICAgICAgIHVuaWNv
ZGUoMCksIGFzY2lpKDApLCBsZW4oMCksIG1heGwoMCksIGRpcnR5YXNjaWkoMCkgeyByZWYoKTsg
fQogICAgUVN0cmluZ0RhdGEoUUNoYXIgKnUsIHVpbnQgbCwgdWludCBtKSA6CiAgICAgICAgdW5p
Y29kZSh1KSwgYXNjaWkoMCksIGxlbihsKSwgbWF4bChtKSwgZGlydHlhc2NpaSgwKSB7IH0KCiAg
ICB+UVN0cmluZ0RhdGEoKSB7IGlmICggdW5pY29kZSApIGRlbGV0ZVtdICgoY2hhciopdW5pY29k
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICggYXNjaWkgKSBkZWxldGVbXSBhc2NpaTsgfQoK
ICAgIHZvaWQgZGVsZXRlU2VsZigpOwogICAgUUNoYXIgKnVuaWNvZGU7CiAgICBjaGFyICphc2Np
aTsKICAgIHVpbnQgbGVuOwogICAgdWludCBtYXhsOjMwOwogICAgdWludCBkaXJ0eWFzY2lpOjE7
Cn07CgoKY2xhc3MgUVN0cmluZwp7CnB1YmxpYzoKICAgIFFTdHJpbmcoKTsKICAgIFFTdHJpbmco
IFFDaGFyICk7CiAgICBRU3RyaW5nKCBjb25zdCBRU3RyaW5nICYgKTsKICAgIFFTdHJpbmcoIGNv
bnN0IFFCeXRlQXJyYXkmICk7CiAgICBRU3RyaW5nKCBjb25zdCBRQ2hhciogdW5pY29kZSwgdWlu
dCBsZW5ndGggKTsKCiAgICBRU3RyaW5nKCBjb25zdCBjaGFyICpzdHIgKTsKCiAgICB+UVN0cmlu
ZygpOwoKICAgIFFTdHJpbmcgJm9wZXJhdG9yPSggY29uc3QgUVN0cmluZyAmICk7CgogICAgUVN0
cmluZyAmb3BlcmF0b3I9KCBjb25zdCBjaGFyICogKTsKCiAgICBRU3RyaW5nICZvcGVyYXRvcj0o
IGNvbnN0IFFDU3RyaW5nJiApOwogICAgUVN0cmluZyAmb3BlcmF0b3I9KCBRQ2hhciBjICk7CiAg
ICBRU3RyaW5nICZvcGVyYXRvcj0oIGNoYXIgYyApOwoKICAgIHN0YXRpYyBjb25zdCBRU3RyaW5n
IG51bGw7CgogICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwogICAgdWludCBsZW5ndGgoKSBjb25zdDsKICAgIHZvaWQgdHJ1bmNhdGUoIHVpbnQgcG9zICk7
CgoKCgogICAgdm9pZCBmaWxsKCBRQ2hhciBjLCBpbnQgbGVuID0gLTEgKTsKCiAgICBRU3RyaW5n
IGNvcHkoKSBjb25zdDsKCiAgICBRU3RyaW5nIGFyZyhsb25nIGEsIGludCBmaWVsZHdpZHRoPTAs
IGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKHVsb25nIGEsIGludCBmaWVsZHdp
ZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKGludCBhLCBpbnQgZmll
bGR3aWR0aD0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7CiAgICBRU3RyaW5nIGFyZyh1aW50IGEsIGlu
dCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKHNob3J0
IGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJn
KHVzaG9ydCBhLCBpbnQgZmllbGR3aWR0aD0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7CiAgICBRU3Ry
aW5nIGFyZyhjaGFyIGEsIGludCBmaWVsZHdpZHRoPTApIGNvbnN0OwogICAgUVN0cmluZyBhcmco
UUNoYXIgYSwgaW50IGZpZWxkd2lkdGg9MCkgY29uc3Q7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBR
U3RyaW5nJiBhLCBpbnQgZmllbGR3aWR0aD0wKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKGRvdWJs
ZSBhLCBpbnQgZmllbGR3aWR0aD0wLCBjaGFyIGZtdD0nZycsIGludCBwcmVjPS0xKSBjb25zdDsK
CiAgICBRU3RyaW5nICZzcHJpbnRmKCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLiApCgogICAgICAg
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKQoKICAgICAgICA7CgogICAg
aW50IGZpbmQoIFFDaGFyIGMsIGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAg
IGludCBmaW5kKCBjaGFyIGMsIGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAg
IGludCBmaW5kKCBjb25zdCBRU3RyaW5nICZzdHIsIGludCBpbmRleD0wLCBib29sIGNzPVRSVUUg
KSBjb25zdDsKICAgIGludCBmaW5kKCBjb25zdCBRUmVnRXhwICYsIGludCBpbmRleD0wICkgY29u
c3Q7CgogICAgaW50IGZpbmQoIGNvbnN0IGNoYXIqIHN0ciwgaW50IGluZGV4PTAgKSBjb25zdDsK
CiAgICBpbnQgZmluZFJldiggUUNoYXIgYywgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNv
bnN0OwogICAgaW50IGZpbmRSZXYoIGNoYXIgYywgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUp
IGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNvbnN0IFFTdHJpbmcgJnN0ciwgaW50IGluZGV4PS0x
LCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNvbnN0IFFSZWdFeHAgJiwg
aW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50IGZpbmRSZXYoIGNvbnN0IGNoYXIqIHN0ciwg
aW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50IGNvbnRhaW5zKCBRQ2hhciBjLCBib29sIGNz
PVRSVUUgKSBjb25zdDsKICAgIGludCBjb250YWlucyggY2hhciBjLCBib29sIGNzPVRSVUUgKSBj
b25zdAogICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGNvbnRhaW5zKFFDaGFyKGMpLCBjcyk7
IH0KCiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjcz1UUlVFICkgY29u
c3Q7CgogICAgaW50IGNvbnRhaW5zKCBjb25zdCBRU3RyaW5nICZzdHIsIGJvb2wgY3M9VFJVRSAp
IGNvbnN0OwogICAgaW50IGNvbnRhaW5zKCBjb25zdCBRUmVnRXhwICYgKSBjb25zdDsKCiAgICBR
U3RyaW5nIGxlZnQoIHVpbnQgbGVuICkgY29uc3Q7CiAgICBRU3RyaW5nIHJpZ2h0KCB1aW50IGxl
biApIGNvbnN0OwogICAgUVN0cmluZyBtaWQoIHVpbnQgaW5kZXgsIHVpbnQgbGVuPTB4ZmZmZmZm
ZmYpIGNvbnN0OwoKICAgIFFTdHJpbmcgbGVmdEp1c3RpZnkoIHVpbnQgd2lkdGgsIFFDaGFyIGZp
bGw9JyAnLCBib29sIHRydW5jPUZBTFNFKWNvbnN0OwogICAgUVN0cmluZyByaWdodEp1c3RpZnko
IHVpbnQgd2lkdGgsIFFDaGFyIGZpbGw9JyAnLGJvb2wgdHJ1bmM9RkFMU0UpY29uc3Q7CgogICAg
UVN0cmluZyBsb3dlcigpIGNvbnN0OwogICAgUVN0cmluZyB1cHBlcigpIGNvbnN0OwoKICAgIFFT
dHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7CiAgICBRU3RyaW5nIHNpbXBsaWZ5V2hpdGVT
cGFjZSgpIGNvbnN0OwoKICAgIFFTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgY29uc3QgUVN0
cmluZyAmICk7CiAgICBRU3RyaW5nICZpbnNlcnQoIHVpbnQgaW5kZXgsIGNvbnN0IFFDaGFyKiwg
dWludCBsZW4gKTsKICAgIFFTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgUUNoYXIgKTsKICAg
IFFTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgY2hhciBjICkgeyByZXR1cm4gaW5zZXJ0KGlu
ZGV4LFFDaGFyKGMpKTsgfQogICAgUVN0cmluZyAmYXBwZW5kKCBjaGFyICk7CiAgICBRU3RyaW5n
ICZhcHBlbmQoIFFDaGFyICk7CiAgICBRU3RyaW5nICZhcHBlbmQoIGNvbnN0IFFTdHJpbmcgJiAp
OwogICAgUVN0cmluZyAmcHJlcGVuZCggY2hhciApOwogICAgUVN0cmluZyAmcHJlcGVuZCggUUNo
YXIgKTsKICAgIFFTdHJpbmcgJnByZXBlbmQoIGNvbnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmlu
ZyAmcmVtb3ZlKCB1aW50IGluZGV4LCB1aW50IGxlbiApOwogICAgUVN0cmluZyAmcmVwbGFjZSgg
dWludCBpbmRleCwgdWludCBsZW4sIGNvbnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmluZyAmcmVw
bGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNvbnN0IFFDaGFyKiwgdWludCBjbGVuICk7CiAg
ICBRU3RyaW5nICZyZXBsYWNlKCBjb25zdCBRUmVnRXhwICYsIGNvbnN0IFFTdHJpbmcgJiApOwoK
ICAgIHNob3J0IHRvU2hvcnQoIGJvb2wgKm9rPTAsIGludCBiYXNlPTEwICkgY29uc3Q7CiAgICB1
c2hvcnQgdG9VU2hvcnQoIGJvb2wgKm9rPTAsIGludCBiYXNlPTEwICkgY29uc3Q7CiAgICBpbnQg
dG9JbnQoIGJvb2wgKm9rPTAsIGludCBiYXNlPTEwICkgY29uc3Q7CiAgICB1aW50IHRvVUludCgg
Ym9vbCAqb2s9MCwgaW50IGJhc2U9MTAgKSBjb25zdDsKICAgIGxvbmcgdG9Mb25nKCBib29sICpv
az0wLCBpbnQgYmFzZT0xMCApIGNvbnN0OwogICAgdWxvbmcgdG9VTG9uZyggYm9vbCAqb2s9MCwg
aW50IGJhc2U9MTAgKSBjb25zdDsKICAgIGZsb2F0IHRvRmxvYXQoIGJvb2wgKm9rPTAgKSBjb25z
dDsKICAgIGRvdWJsZSB0b0RvdWJsZSggYm9vbCAqb2s9MCApIGNvbnN0OwoKICAgIFFTdHJpbmcg
JnNldE51bSggc2hvcnQsIGludCBiYXNlPTEwICk7CiAgICBRU3RyaW5nICZzZXROdW0oIHVzaG9y
dCwgaW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcgJnNldE51bSggaW50LCBpbnQgYmFzZT0xMCAp
OwogICAgUVN0cmluZyAmc2V0TnVtKCB1aW50LCBpbnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAm
c2V0TnVtKCBsb25nLCBpbnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAmc2V0TnVtKCB1bG9uZywg
aW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcgJnNldE51bSggZmxvYXQsIGNoYXIgZj0nZycsIGlu
dCBwcmVjPTYgKTsKICAgIFFTdHJpbmcgJnNldE51bSggZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQg
cHJlYz02ICk7CgogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCBsb25nLCBpbnQgYmFzZT0xMCAp
OwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCB1bG9uZywgaW50IGJhc2U9MTApOwogICAgc3Rh
dGljIFFTdHJpbmcgbnVtYmVyKCBpbnQsIGludCBiYXNlPTEwICk7CiAgICBzdGF0aWMgUVN0cmlu
ZyBudW1iZXIoIHVpbnQsIGludCBiYXNlPTEwKTsKICAgIHN0YXRpYyBRU3RyaW5nIG51bWJlcigg
ZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02ICk7CgogICAgdm9pZCBzZXRFeHBhbmQoIHVp
bnQgaW5kZXgsIFFDaGFyIGMgKTsKCiAgICBRU3RyaW5nICZvcGVyYXRvcis9KCBjb25zdCBRU3Ry
aW5nICZzdHIgKTsKICAgIFFTdHJpbmcgJm9wZXJhdG9yKz0oIFFDaGFyIGMgKTsKICAgIFFTdHJp
bmcgJm9wZXJhdG9yKz0oIGNoYXIgYyApOwoKCiAgICBRQ2hhciBhdCggdWludCBpICkgY29uc3QK
ICAgICAgICB7IHJldHVybiBpPGQtPmxlbiA/IGQtPnVuaWNvZGVbaV0gOiBRQ2hhcjo6bnVsbDsg
fQogICAgUUNoYXIgb3BlcmF0b3JbXSggaW50IGkgKSBjb25zdCB7IHJldHVybiBhdCgodWludClp
KTsgfQogICAgUUNoYXJSZWYgYXQoIHVpbnQgaSApOwogICAgUUNoYXJSZWYgb3BlcmF0b3JbXSgg
aW50IGkgKTsKCiAgICBRQ2hhciBjb25zdHJlZih1aW50IGkpIGNvbnN0CiAgICAgICAgeyByZXR1
cm4gYXQoaSk7IH0KICAgIFFDaGFyJiByZWYodWludCBpKQogICAgICAgIHsKICAgICAgICAgICAg
aWYgKGQtPmNvdW50IT0xIHx8IGk+PWQtPmxlbikKICAgICAgICAgICAgICAgIHN1YmF0KGkpOwog
ICAgICAgICAgICBkLT5kaXJ0eWFzY2lpPTE7CiAgICAgICAgICAgIHJldHVybiBkLT51bmljb2Rl
W2ldOwogICAgICAgIH0KCiAgICBjb25zdCBRQ2hhciogdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJu
IGQtPnVuaWNvZGU7IH0KICAgIGNvbnN0IGNoYXIqIGFzY2lpKCkgY29uc3Q7CiAgICBjb25zdCBj
aGFyKiBsYXRpbjEoKSBjb25zdDsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21MYXRpbjEoY29uc3Qg
Y2hhciosIGludCBsZW49LTEpOwoKICAgIFFDU3RyaW5nIHV0ZjgoKSBjb25zdDsKICAgIHN0YXRp
YyBRU3RyaW5nIGZyb21VdGY4KGNvbnN0IGNoYXIqLCBpbnQgbGVuPS0xKTsKCiAgICBRQ1N0cmlu
ZyBsb2NhbDhCaXQoKSBjb25zdDsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21Mb2NhbDhCaXQoY29u
c3QgY2hhciosIGludCBsZW49LTEpOwogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKCiAgICBv
cGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdCB7IHJldHVybiBsYXRpbjEoKTsgfQoKCiAgICBR
U3RyaW5nICZzZXRVbmljb2RlKCBjb25zdCBRQ2hhciogdW5pY29kZSwgdWludCBsZW4gKTsKICAg
IFFTdHJpbmcgJnNldFVuaWNvZGVDb2RlcyggY29uc3QgdXNob3J0KiB1bmljb2RlX2FzX3VzaG9y
dHMsIHVpbnQgbGVuICk7CiAgICBRU3RyaW5nICZzZXRMYXRpbjEoIGNvbnN0IGNoYXIqLCBpbnQg
bGVuPS0xICk7CgogICAgaW50IGNvbXBhcmUoIGNvbnN0IFFTdHJpbmcmIHMgKSBjb25zdDsKICAg
IHN0YXRpYyBpbnQgY29tcGFyZSggY29uc3QgUVN0cmluZyYgczEsIGNvbnN0IFFTdHJpbmcmIHMy
ICkKICAgICAgICB7IHJldHVybiBzMS5jb21wYXJlKHMyKTsgfQoKCiAgICBmcmllbmQgUURhdGFT
dHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYsIFFTdHJpbmcgJiApOwoKCiAgICB2b2lk
IGNvbXBvc2UoKTsKICAgIFFDaGFyOjpEaXJlY3Rpb24gYmFzaWNEaXJlY3Rpb24oKTsKICAgIFFT
dHJpbmcgdmlzdWFsKGludCBpbmRleCA9IDAsIGludCBsZW4gPSAtMSk7CgoKICAgIGNvbnN0IGNo
YXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBsYXRpbjEoKTsgfQoKCiAgICBib29sIHN0YXJ0c1dp
dGgoIGNvbnN0IFFTdHJpbmcmICkgY29uc3Q7Cgpwcml2YXRlOgogICAgUVN0cmluZyggaW50IHNp
emUsIGJvb2wgZHVtbXkgKTsKCiAgICB2b2lkIGRlcmVmKCk7CiAgICB2b2lkIHJlYWxfZGV0YWNo
KCk7CiAgICB2b2lkIHNldExlbmd0aCggdWludCBwb3MgKTsKICAgIHZvaWQgc3ViYXQoIHVpbnQg
KTsKICAgIGJvb2wgZmluZEFyZyhpbnQmIHBvcywgaW50JiBsZW4pIGNvbnN0OwoKICAgIHN0YXRp
YyBRQ2hhciogYXNjaWlUb1VuaWNvZGUoIGNvbnN0IGNoYXIqLCB1aW50ICogbGVuLCB1aW50IG1h
eGxlbj0odWludCktMSApOwogICAgc3RhdGljIFFDaGFyKiBhc2NpaVRvVW5pY29kZSggY29uc3Qg
UUJ5dGVBcnJheSYsIHVpbnQgKiBsZW4gKTsKICAgIHN0YXRpYyBjaGFyKiB1bmljb2RlVG9Bc2Np
aSggY29uc3QgUUNoYXIqLCB1aW50IGxlbiApOwoKICAgIFFTdHJpbmdEYXRhICpkOwogICAgc3Rh
dGljIFFTdHJpbmdEYXRhKiBzaGFyZWRfbnVsbDsKICAgIHN0YXRpYyBRU3RyaW5nRGF0YSogbWFr
ZVNoYXJlZE51bGwoKTsKCiAgICBmcmllbmQgY2xhc3MgUUNvbnN0U3RyaW5nOwogICAgUVN0cmlu
ZyhRU3RyaW5nRGF0YSogZGQsIGJvb2wgKSA6IGQoZGQpIHsgfQp9OwoKY2xhc3MgUUNoYXJSZWYg
ewogICAgZnJpZW5kIGNsYXNzIFFTdHJpbmc7CiAgICBRU3RyaW5nJiBzOwogICAgdWludCBwOwog
ICAgUUNoYXJSZWYoUVN0cmluZyogc3RyLCB1aW50IHBvcykgOiBzKCpzdHIpLCBwKHBvcykgeyB9
CgpwdWJsaWM6CgoKCgogICAgdXNob3J0IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0
cmVmKHApLnVuaWNvZGUoKTsgfQogICAgY2hhciBsYXRpbjEoKSBjb25zdCB7IHJldHVybiBzLmNv
bnN0cmVmKHApLmxhdGluMSgpOyB9CgoKICAgIFFDaGFyUmVmIG9wZXJhdG9yPShjaGFyIGMgKSB7
IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQogICAgUUNoYXJSZWYgb3BlcmF0b3I9KHVjaGFy
IGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQogICAgUUNoYXJSZWYgb3BlcmF0b3I9
KFFDaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQogICAgUUNoYXJSZWYgb3Bl
cmF0b3I9KGNvbnN0IFFDaGFyUmVmJiBjICkgeyBzLnJlZihwKT1jLnVuaWNvZGUoKTsgcmV0dXJu
ICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVyYXRvcj0odXNob3J0IHJjICkgeyBzLnJlZihwKT1y
YzsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVyYXRvcj0oc2hvcnQgcmMgKSB7IHMu
cmVmKHApPXJjOyByZXR1cm4gKnRoaXM7IH0KICAgIFFDaGFyUmVmIG9wZXJhdG9yPSh1aW50IHJj
ICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVyYXRvcj0o
aW50IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CgogICAgb3BlcmF0b3IgUUNo
YXIgKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKTsgfQoKCiAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIHVuaWNvZGUoKT09MDsgfQogICAgYm9vbCBpc1ByaW50KCkgY29uc3Qg
eyByZXR1cm4gcy5jb25zdHJlZihwKS5pc1ByaW50KCk7IH0KICAgIGJvb2wgaXNQdW5jdCgpIGNv
bnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuaXNQdW5jdCgpOyB9CiAgICBib29sIGlzU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlzU3BhY2UoKTsgfQogICAgYm9vbCBpc01h
cmsoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlzTWFyaygpOyB9CiAgICBib29sIGlz
TGV0dGVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc0xldHRlcigpOyB9CiAgICBi
b29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc051bWJlcigpOyB9
CiAgICBib29sIGlzTGV0dGVyT3JOdW1iZXIoKSB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlzTGV0
dGVyT3JOdW1iZXIoKTsgfQogICAgYm9vbCBpc0RpZ2l0KCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5pc0RpZ2l0KCk7IH0KCiAgICBpbnQgZGlnaXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHMuY29uc3RyZWYocCkuZGlnaXRWYWx1ZSgpOyB9CiAgICBRQ2hhciBsb3dlcigpIHsgcmV0dXJu
IHMuY29uc3RyZWYocCkubG93ZXIoKTsgfQogICAgUUNoYXIgdXBwZXIoKSB7IHJldHVybiBzLmNv
bnN0cmVmKHApLnVwcGVyKCk7IH0KCiAgICBRQ2hhcjo6Q2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25z
dCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNhdGVnb3J5KCk7IH0KICAgIFFDaGFyOjpEaXJlY3Rp
b24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5kaXJlY3Rpb24oKTsg
fQogICAgUUNoYXI6OkpvaW5pbmcgam9pbmluZygpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYo
cCkuam9pbmluZygpOyB9CiAgICBib29sIG1pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5taXJyb3JlZCgpOyB9CiAgICBRQ2hhciBtaXJyb3JlZENoYXIoKSBjb25zdCB7IHJl
dHVybiBzLmNvbnN0cmVmKHApLm1pcnJvcmVkQ2hhcigpOyB9CiAgICBRU3RyaW5nIGRlY29tcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmRlY29tcG9zaXRpb24oKTsgfQog
ICAgUUNoYXI6OkRlY29tcG9zaXRpb24gZGVjb21wb3NpdGlvblRhZygpIGNvbnN0IHsgcmV0dXJu
IHMuY29uc3RyZWYocCkuZGVjb21wb3NpdGlvblRhZygpOyB9CgoKICAgIHVjaGFyIGNlbGwoKSBj
b25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNlbGwoKTsgfQogICAgdWNoYXIgcm93KCkgY29u
c3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5yb3coKTsgfQoKfTsKCmlubGluZSBRQ2hhclJlZiBR
U3RyaW5nOjphdCggdWludCBpICkgeyByZXR1cm4gUUNoYXJSZWYodGhpcyxpKTsgfQppbmxpbmUg
UUNoYXJSZWYgUVN0cmluZzo6b3BlcmF0b3JbXSggaW50IGkgKSB7IHJldHVybiBhdCgodWludClp
KTsgfQoKCmNsYXNzIFFDb25zdFN0cmluZyA6IHByaXZhdGUgUVN0cmluZyB7CnB1YmxpYzoKICAg
IFFDb25zdFN0cmluZyggUUNoYXIqIHVuaWNvZGUsIHVpbnQgbGVuZ3RoICk7CiAgICB+UUNvbnN0
U3RyaW5nKCk7CiAgICBjb25zdCBRU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiAqdGhp
czsgfQp9OwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNv
bnN0IFFTdHJpbmcgJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYs
IFFTdHJpbmcgJiApOwojIDYzMSAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xc3RyaW5nLmgi
IDMKaW5saW5lIFFTdHJpbmc6OlFTdHJpbmcoKSA6CiAgICBkKHNoYXJlZF9udWxsID8gc2hhcmVk
X251bGwgOiBtYWtlU2hhcmVkTnVsbCgpKQp7CiAgICBkLT5yZWYoKTsKfQoKaW5saW5lIFFTdHJp
bmc6On5RU3RyaW5nKCkKewogICAgaWYgKCBkLT5kZXJlZigpICkKICAgICAgICBkLT5kZWxldGVT
ZWxmKCk7Cn0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpvcGVyYXRvcj0oIFFDaGFyIGMgKQp7
IHJldHVybiAqdGhpcyA9IFFTdHJpbmcoYyk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpv
cGVyYXRvcj0oIGNoYXIgYyApCnsgcmV0dXJuICp0aGlzID0gUVN0cmluZyhRQ2hhcihjKSk7IH0K
CmlubGluZSBib29sIFFTdHJpbmc6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIHVuaWNvZGUoKSA9
PSAwOyB9CgppbmxpbmUgYm9vbCBRU3RyaW5nOjpvcGVyYXRvciEoKSBjb25zdAp7IHJldHVybiBp
c051bGwoKTsgfQoKaW5saW5lIHVpbnQgUVN0cmluZzo6bGVuZ3RoKCkgY29uc3QKeyByZXR1cm4g
ZC0+bGVuOyB9CgppbmxpbmUgYm9vbCBRU3RyaW5nOjppc0VtcHR5KCkgY29uc3QKeyByZXR1cm4g
bGVuZ3RoKCkgPT0gMDsgfQoKaW5saW5lIFFTdHJpbmcgUVN0cmluZzo6Y29weSgpIGNvbnN0Cnsg
cmV0dXJuIFFTdHJpbmcoICp0aGlzICk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpwcmVw
ZW5kKCBjb25zdCBRU3RyaW5nICYgcyApCnsgcmV0dXJuIGluc2VydCgwLHMpOyB9CgppbmxpbmUg
UVN0cmluZyAmUVN0cmluZzo6cHJlcGVuZCggUUNoYXIgYyApCnsgcmV0dXJuIGluc2VydCgwLGMp
OyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6cHJlcGVuZCggY2hhciBjICkKeyByZXR1cm4g
aW5zZXJ0KDAsYyk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjphcHBlbmQoIGNvbnN0IFFT
dHJpbmcgJiBzICkKeyByZXR1cm4gb3BlcmF0b3IrPShzKTsgfQoKaW5saW5lIFFTdHJpbmcgJlFT
dHJpbmc6OmFwcGVuZCggUUNoYXIgYyApCnsgcmV0dXJuIG9wZXJhdG9yKz0oYyk7IH0KCmlubGlu
ZSBRU3RyaW5nICZRU3RyaW5nOjphcHBlbmQoIGNoYXIgYyApCnsgcmV0dXJuIG9wZXJhdG9yKz0o
Yyk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjpzZXROdW0oIHNob3J0IG4sIGludCBiYXNl
ICkKeyByZXR1cm4gc2V0TnVtKChsb25nKW4sIGJhc2UpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0
cmluZzo6c2V0TnVtKCB1c2hvcnQgbiwgaW50IGJhc2UgKQp7IHJldHVybiBzZXROdW0oKHVsb25n
KW4sIGJhc2UpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6c2V0TnVtKCBpbnQgbiwgaW50
IGJhc2UgKQp7IHJldHVybiBzZXROdW0oKGxvbmcpbiwgYmFzZSk7IH0KCmlubGluZSBRU3RyaW5n
ICZRU3RyaW5nOjpzZXROdW0oIHVpbnQgbiwgaW50IGJhc2UgKQp7IHJldHVybiBzZXROdW0oKHVs
b25nKW4sIGJhc2UpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6c2V0TnVtKCBmbG9hdCBu
LCBjaGFyIGYsIGludCBwcmVjICkKeyByZXR1cm4gc2V0TnVtKChkb3VibGUpbixmLHByZWMpOyB9
CgppbmxpbmUgUVN0cmluZyBRU3RyaW5nOjphcmcoaW50IGEsIGludCBmaWVsZHdpZHRoLCBpbnQg
YmFzZSkgY29uc3QKeyByZXR1cm4gYXJnKChsb25nKWEsIGZpZWxkd2lkdGgsIGJhc2UpOyB9Cgpp
bmxpbmUgUVN0cmluZyBRU3RyaW5nOjphcmcodWludCBhLCBpbnQgZmllbGR3aWR0aCwgaW50IGJh
c2UpIGNvbnN0CnsgcmV0dXJuIGFyZygodWxvbmcpYSwgZmllbGR3aWR0aCwgYmFzZSk7IH0KCmlu
bGluZSBRU3RyaW5nIFFTdHJpbmc6OmFyZyhzaG9ydCBhLCBpbnQgZmllbGR3aWR0aCwgaW50IGJh
c2UpIGNvbnN0CnsgcmV0dXJuIGFyZygobG9uZylhLCBmaWVsZHdpZHRoLCBiYXNlKTsgfQoKaW5s
aW5lIFFTdHJpbmcgUVN0cmluZzo6YXJnKHVzaG9ydCBhLCBpbnQgZmllbGR3aWR0aCwgaW50IGJh
c2UpIGNvbnN0CnsgcmV0dXJuIGFyZygodWxvbmcpYSwgZmllbGR3aWR0aCwgYmFzZSk7IH0KCmlu
bGluZSBpbnQgUVN0cmluZzo6ZmluZCggY2hhciBjLCBpbnQgaW5kZXgsIGJvb2wgY3MgKSBjb25z
dAp7IHJldHVybiBmaW5kKFFDaGFyKGMpLCBpbmRleCwgY3MpOyB9CgppbmxpbmUgaW50IFFTdHJp
bmc6OmZpbmRSZXYoIGNoYXIgYywgaW50IGluZGV4LCBib29sIGNzKSBjb25zdAp7IHJldHVybiBm
aW5kUmV2KCBRQ2hhcihjKSwgaW5kZXgsIGNzICk7IH0KCgoKaW5saW5lIGludCBRU3RyaW5nOjpm
aW5kKCBjb25zdCBjaGFyKiBzdHIsIGludCBpbmRleCApIGNvbnN0CnsgcmV0dXJuIGZpbmQoUVN0
cmluZzo6ZnJvbUxhdGluMShzdHIpLCBpbmRleCk7IH0KCmlubGluZSBpbnQgUVN0cmluZzo6Zmlu
ZFJldiggY29uc3QgY2hhciogc3RyLCBpbnQgaW5kZXggKSBjb25zdAp7IHJldHVybiBmaW5kUmV2
KFFTdHJpbmc6OmZyb21MYXRpbjEoc3RyKSwgaW5kZXgpOyB9CgoKCgoKCgogYm9vbCBvcGVyYXRv
ciE9KCBjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0
b3I8KCBjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0
b3I8PSggY29uc3QgUVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJh
dG9yPT0oIGNvbnN0IFFTdHJpbmcgJnMxLCBjb25zdCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVy
YXRvcj4oIGNvbnN0IFFTdHJpbmcgJnMxLCBjb25zdCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVy
YXRvcj49KCBjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKCiBib29sIG9w
ZXJhdG9yIT0oIGNvbnN0IFFTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVy
YXRvcjwoIGNvbnN0IFFTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRv
cjw9KCBjb25zdCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3I9
PSggY29uc3QgUVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICk7CiBib29sIG9wZXJhdG9yPigg
Y29uc3QgUVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICk7CiBib29sIG9wZXJhdG9yPj0oIGNv
bnN0IFFTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRvciE9KCBjb25z
dCBjaGFyICpzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBj
aGFyICpzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgY2hh
ciAqczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGNoYXIg
KnMxLCBjb25zdCBRU3RyaW5nICZzMiApOwoKIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgY2hhciAq
czEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CgoKIGlubGluZSBRU3RyaW5nIG9wZXJhdG9yKyggY29u
c3QgUVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICkKewogICAgUVN0cmluZyB0bXAoIHMx
ICk7CiAgICB0bXAgKz0gczI7CiAgICByZXR1cm4gdG1wOwp9CgoKIGlubGluZSBRU3RyaW5nIG9w
ZXJhdG9yKyggY29uc3QgUVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICkKewogICAgUVN0cmlu
ZyB0bXAoIHMxICk7CiAgICB0bXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMShzMik7CiAgICByZXR1
cm4gdG1wOwp9CgogaW5saW5lIFFTdHJpbmcgb3BlcmF0b3IrKCBjb25zdCBjaGFyICpzMSwgY29u
c3QgUVN0cmluZyAmczIgKQp7CiAgICBRU3RyaW5nIHRtcCA9IFFTdHJpbmc6OmZyb21MYXRpbjEo
IHMxICk7CiAgICB0bXAgKz0gczI7CiAgICByZXR1cm4gdG1wOwp9CgoKIGlubGluZSBRU3RyaW5n
IG9wZXJhdG9yKyggY29uc3QgUVN0cmluZyAmczEsIFFDaGFyIGMyICkKewogICAgUVN0cmluZyB0
bXAoIHMxICk7CiAgICB0bXAgKz0gYzI7CiAgICByZXR1cm4gdG1wOwp9CgogaW5saW5lIFFTdHJp
bmcgb3BlcmF0b3IrKCBjb25zdCBRU3RyaW5nICZzMSwgY2hhciBjMiApCnsKICAgIFFTdHJpbmcg
dG1wKCBzMSApOwogICAgdG1wICs9IGMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRU3Ry
aW5nIG9wZXJhdG9yKyggUUNoYXIgYzEsIGNvbnN0IFFTdHJpbmcgJnMyICkKewogICAgUVN0cmlu
ZyB0bXA7CiAgICB0bXAgKz0gYzE7CiAgICB0bXAgKz0gczI7CiAgICByZXR1cm4gdG1wOwp9Cgog
aW5saW5lIFFTdHJpbmcgb3BlcmF0b3IrKCBjaGFyIGMxLCBjb25zdCBRU3RyaW5nICZzMiApCnsK
ICAgIFFTdHJpbmcgdG1wOwogICAgdG1wICs9IGMxOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJu
IHRtcDsKfQoKIyAzNSAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xd2luZG93ZGVmcy5oIiAy
IDMKCiMgMzYgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcW5hbWVzcGFjZS5oIiAxIDMKY2xh
c3MgUUNvbG9yOwpjbGFzcyBRQ3Vyc29yOwoKCmNsYXNzIFF0IHsKcHVibGljOgogICAgc3RhdGlj
IGNvbnN0IFFDb2xvciAmIGNvbG9yMDsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBjb2xvcjE7
CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgYmxhY2s7CiAgICBzdGF0aWMgY29uc3QgUUNvbG9y
ICYgd2hpdGU7CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya0dyYXk7CiAgICBzdGF0aWMg
Y29uc3QgUUNvbG9yICYgZ3JheTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBsaWdodEdyYXk7
CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgcmVkOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAm
IGdyZWVuOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGJsdWU7CiAgICBzdGF0aWMgY29uc3Qg
UUNvbG9yICYgY3lhbjsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBtYWdlbnRhOwogICAgc3Rh
dGljIGNvbnN0IFFDb2xvciAmIHllbGxvdzsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBkYXJr
UmVkOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGRhcmtHcmVlbjsKICAgIHN0YXRpYyBjb25z
dCBRQ29sb3IgJiBkYXJrQmx1ZTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBkYXJrQ3lhbjsK
ICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBkYXJrTWFnZW50YTsKICAgIHN0YXRpYyBjb25zdCBR
Q29sb3IgJiBkYXJrWWVsbG93OwoKCiAgICBlbnVtIEJ1dHRvblN0YXRlIHsKICAgICAgICBOb0J1
dHRvbiA9IDB4MDAwMCwKICAgICAgICBMZWZ0QnV0dG9uID0gMHgwMDAxLAogICAgICAgIFJpZ2h0
QnV0dG9uID0gMHgwMDAyLAogICAgICAgIE1pZEJ1dHRvbiA9IDB4MDAwNCwKICAgICAgICBNb3Vz
ZUJ1dHRvbk1hc2sgPSAweDAwMDcsCiAgICAgICAgU2hpZnRCdXR0b24gPSAweDAwMDgsCiAgICAg
ICAgQ29udHJvbEJ1dHRvbiA9IDB4MDAxMCwKICAgICAgICBBbHRCdXR0b24gPSAweDAwMjAsCiAg
ICAgICAgS2V5QnV0dG9uTWFzayA9IDB4MDAzOCwKICAgICAgICBLZXlwYWQgPSAweDQwMDAKICAg
IH07CgoKICAgIGVudW0gT3JpZW50YXRpb24gewogICAgICAgIEhvcml6b250YWwsCiAgICAgICAg
VmVydGljYWwKICAgIH07CgoKCgogICAgZW51bSBBbGlnbm1lbnRGbGFncyB7CiAgICAgICAgQWxp
Z25MZWZ0ID0gMHgwMDAxLAogICAgICAgIEFsaWduUmlnaHQgPSAweDAwMDIsCiAgICAgICAgQWxp
Z25IQ2VudGVyID0gMHgwMDA0LAogICAgICAgIEFsaWduVG9wID0gMHgwMDA4LAogICAgICAgIEFs
aWduQm90dG9tID0gMHgwMDEwLAogICAgICAgIEFsaWduVkNlbnRlciA9IDB4MDAyMCwKICAgICAg
ICBBbGlnbkNlbnRlciA9IEFsaWduVkNlbnRlciB8IEFsaWduSENlbnRlciwKCiAgICAgICAgU2lu
Z2xlTGluZSA9IDB4MDA0MCwKICAgICAgICBEb250Q2xpcCA9IDB4MDA4MCwKICAgICAgICBFeHBh
bmRUYWJzID0gMHgwMTAwLAogICAgICAgIFNob3dQcmVmaXggPSAweDAyMDAsCiAgICAgICAgV29y
ZEJyZWFrID0gMHgwNDAwLAogICAgICAgIERvbnRQcmludCA9IDB4MTAwMAogICAgfTsKCgogICAg
ZW51bSBXaWRnZXRTdGF0ZSB7CiAgICAgICAgV1N0YXRlX0NyZWF0ZWQgPSAweDAwMDAwMDAxLAog
ICAgICAgIFdTdGF0ZV9EaXNhYmxlZCA9IDB4MDAwMDAwMDIsCiAgICAgICAgV1N0YXRlX1Zpc2li
bGUgPSAweDAwMDAwMDA0LAogICAgICAgIFdTdGF0ZV9Gb3JjZUhpZGUgPSAweDAwMDAwMDA4LAog
ICAgICAgIFdTdGF0ZV9Pd25DdXJzb3IgPSAweDAwMDAwMDEwLAogICAgICAgIFdTdGF0ZV9Nb3Vz
ZVRyYWNraW5nID0gMHgwMDAwMDAyMCwKICAgICAgICBXU3RhdGVfQ29tcHJlc3NLZXlzID0gMHgw
MDAwMDA0MCwKICAgICAgICBXU3RhdGVfQmxvY2tVcGRhdGVzID0gMHgwMDAwMDA4MCwKICAgICAg
ICBXU3RhdGVfSW5QYWludEV2ZW50ID0gMHgwMDAwMDEwMCwKICAgICAgICBXU3RhdGVfUmVwYXJl
bnRlZCA9IDB4MDAwMDAyMDAsCiAgICAgICAgV1N0YXRlX0NvbmZpZ1BlbmRpbmcgPSAweDAwMDAw
NDAwLAogICAgICAgIFdTdGF0ZV9SZXNpemVkID0gMHgwMDAwMDgwMCwKICAgICAgICBXU3RhdGVf
QXV0b01hc2sgPSAweDAwMDAxMDAwLAogICAgICAgIFdTdGF0ZV9Qb2xpc2hlZCA9IDB4MDAwMDIw
MDAsCiAgICAgICAgV1N0YXRlX0RORCA9IDB4MDAwMDQwMDAsCiAgICAgICAgV1N0YXRlX01vZGFs
ID0gMHgwMDAwODAwMCwKICAgICAgICBXU3RhdGVfUmVzZXJ2ZWQxID0gMHgwMDAxMDAwMCwKICAg
ICAgICBXU3RhdGVfUmVzZXJ2ZWQyID0gMHgwMDAyMDAwMCwKICAgICAgICBXU3RhdGVfUmVzZXJ2
ZWQzID0gMHgwMDA0MDAwMCwKICAgICAgICBXU3RhdGVfTWF4aW1pemVkID0gMHgwMDA4MDAwMCwK
ICAgICAgICBXU3RhdGVfVHJhbnNsYXRlQmFja2dyb3VuZCA9IDB4MDAxMDAwMDAsCiAgICAgICAg
V1N0YXRlX0ZvcmNlRGlzYWJsZWQgPSAweDAwMjAwMDAwLAogICAgICAgIFdTdGF0ZV9FeHBvc2Vk
ID0gMHgwMDQwMDAwMAogICAgfTsKCgogICAgdHlwZWRlZiB1aW50IFdGbGFnczsKCgogICAgZW51
bSBXaWRnZXRGbGFncyB7CiAgICAgICAgV1R5cGVfVG9wTGV2ZWwgPSAweDAwMDAwMDAxLAogICAg
ICAgIFdUeXBlX01vZGFsID0gMHgwMDAwMDAwMiwKICAgICAgICBXVHlwZV9Qb3B1cCA9IDB4MDAw
MDAwMDQsCiAgICAgICAgV1R5cGVfRGVza3RvcCA9IDB4MDAwMDAwMDgsCiAgICAgICAgV1R5cGVf
TWFzayA9IDB4MDAwMDAwMGYsCgogICAgICAgIFdTdHlsZV9DdXN0b21pemUgPSAweDAwMDAwMDEw
LAogICAgICAgIFdTdHlsZV9Ob3JtYWxCb3JkZXIgPSAweDAwMDAwMDIwLAogICAgICAgIFdTdHls
ZV9EaWFsb2dCb3JkZXIgPSAweDAwMDAwMDQwLAogICAgICAgIFdTdHlsZV9Ob0JvcmRlciA9IDB4
MDAwMDAwMDAsCiAgICAgICAgV1N0eWxlX1RpdGxlID0gMHgwMDAwMDA4MCwKICAgICAgICBXU3R5
bGVfU3lzTWVudSA9IDB4MDAwMDAxMDAsCiAgICAgICAgV1N0eWxlX01pbmltaXplID0gMHgwMDAw
MDIwMCwKICAgICAgICBXU3R5bGVfTWF4aW1pemUgPSAweDAwMDAwNDAwLAogICAgICAgIFdTdHls
ZV9NaW5NYXggPSBXU3R5bGVfTWluaW1pemUgfCBXU3R5bGVfTWF4aW1pemUsCiAgICAgICAgV1N0
eWxlX1Rvb2wgPSAweDAwMDAwODAwLAogICAgICAgIFdTdHlsZV9TdGF5c09uVG9wID0gMHgwMDAw
MTAwMCwKICAgICAgICBXU3R5bGVfRGlhbG9nID0gMHgwMDAwMjAwMCwKICAgICAgICBXU3R5bGVf
Q29udGV4dEhlbHAgPSAweDAwMDA0MDAwLAogICAgICAgIFdTdHlsZV9Ob0JvcmRlckV4ID0gMHgw
MDAwODAwMCwKICAgICAgICBXU3R5bGVfTWFzayA9IDB4MDAwMGZmZjAsCgogICAgICAgIFdEZXN0
cnVjdGl2ZUNsb3NlID0gMHgwMDAxMDAwMCwKICAgICAgICBXUGFpbnREZXNrdG9wID0gMHgwMDAy
MDAwMCwKICAgICAgICBXUGFpbnRVbmNsaXBwZWQgPSAweDAwMDQwMDAwLAogICAgICAgIFdQYWlu
dENsZXZlciA9IDB4MDAwODAwMDAsCiAgICAgICAgV1Jlc2l6ZU5vRXJhc2UgPSAweDAwMTAwMDAw
LAogICAgICAgIFdNb3VzZU5vTWFzayA9IDB4MDAyMDAwMDAsCiAgICAgICAgV05vcnRoV2VzdEdy
YXZpdHkgPSAweDAwNDAwMDAwLAogICAgICAgIFdSZXBhaW50Tm9FcmFzZSA9IDB4MDA4MDAwMDAs
CiAgICAgICAgV1gxMUJ5cGFzc1dNID0gMHgwMTAwMDAwMAogICAgfTsKCgoKCiAgICBlbnVtIElt
YWdlQ29udmVyc2lvbkZsYWdzIHsKICAgICAgICBDb2xvck1vZGVfTWFzayA9IDB4MDAwMDAwMDMs
CiAgICAgICAgQXV0b0NvbG9yID0gMHgwMDAwMDAwMCwKICAgICAgICBDb2xvck9ubHkgPSAweDAw
MDAwMDAzLAogICAgICAgIE1vbm9Pbmx5ID0gMHgwMDAwMDAwMiwKCgogICAgICAgIEFscGhhRGl0
aGVyX01hc2sgPSAweDAwMDAwMDBjLAogICAgICAgIFRocmVzaG9sZEFscGhhRGl0aGVyID0gMHgw
MDAwMDAwMCwKICAgICAgICBPcmRlcmVkQWxwaGFEaXRoZXIgPSAweDAwMDAwMDA0LAogICAgICAg
IERpZmZ1c2VBbHBoYURpdGhlciA9IDB4MDAwMDAwMDgsCiAgICAgICAgTm9BbHBoYSA9IDB4MDAw
MDAwMGMsCgogICAgICAgIERpdGhlcl9NYXNrID0gMHgwMDAwMDAzMCwKICAgICAgICBEaWZmdXNl
RGl0aGVyID0gMHgwMDAwMDAwMCwKICAgICAgICBPcmRlcmVkRGl0aGVyID0gMHgwMDAwMDAxMCwK
ICAgICAgICBUaHJlc2hvbGREaXRoZXIgPSAweDAwMDAwMDIwLAoKCiAgICAgICAgRGl0aGVyTW9k
ZV9NYXNrID0gMHgwMDAwMDBjMCwKICAgICAgICBBdXRvRGl0aGVyID0gMHgwMDAwMDAwMCwKICAg
ICAgICBQcmVmZXJEaXRoZXIgPSAweDAwMDAwMDQwLAogICAgICAgIEF2b2lkRGl0aGVyID0gMHgw
MDAwMDA4MAogICAgfTsKCiAgICBlbnVtIEJHTW9kZSB7CiAgICAgICAgVHJhbnNwYXJlbnRNb2Rl
LAogICAgICAgIE9wYXF1ZU1vZGUKICAgIH07CgogICAgZW51bSBQYWludFVuaXQgewogICAgICAg
IFBpeGVsVW5pdCwKICAgICAgICBMb01ldHJpY1VuaXQsCiAgICAgICAgSGlNZXRyaWNVbml0LAog
ICAgICAgIExvRW5nbGlzaFVuaXQsCiAgICAgICAgSGlFbmdsaXNoVW5pdCwKICAgICAgICBUd2lw
c1VuaXQKICAgIH07CgogICAgZW51bSBHVUlTdHlsZSB7CiAgICAgICAgTWFjU3R5bGUsCiAgICAg
ICAgV2luZG93c1N0eWxlLAogICAgICAgIFdpbjNTdHlsZSwKICAgICAgICBQTVN0eWxlLAogICAg
ICAgIE1vdGlmU3R5bGUKICAgIH07CgogICAgZW51bSBNb2RpZmllciB7CiAgICAgICAgU0hJRlQg
PSAweDAwMjAwMDAwLAogICAgICAgIENUUkwgPSAweDAwNDAwMDAwLAogICAgICAgIEFMVCA9IDB4
MDA4MDAwMDAsCiAgICAgICAgTU9ESUZJRVJfTUFTSyA9IDB4MDBlMDAwMDAsCiAgICAgICAgVU5J
Q09ERV9BQ0NFTCA9IDB4MTAwMDAwMDAsCgogICAgICAgIEFTQ0lJX0FDQ0VMID0gVU5JQ09ERV9B
Q0NFTAogICAgfTsKCiAgICBlbnVtIEtleSB7CiAgICAgICAgS2V5X0VzY2FwZSA9IDB4MTAwMCwK
ICAgICAgICBLZXlfVGFiID0gMHgxMDAxLAogICAgICAgIEtleV9CYWNrdGFiID0gMHgxMDAyLCBL
ZXlfQmFja1RhYiA9IEtleV9CYWNrdGFiLAogICAgICAgIEtleV9CYWNrc3BhY2UgPSAweDEwMDMs
IEtleV9CYWNrU3BhY2UgPSBLZXlfQmFja3NwYWNlLAogICAgICAgIEtleV9SZXR1cm4gPSAweDEw
MDQsCiAgICAgICAgS2V5X0VudGVyID0gMHgxMDA1LAogICAgICAgIEtleV9JbnNlcnQgPSAweDEw
MDYsCiAgICAgICAgS2V5X0RlbGV0ZSA9IDB4MTAwNywKICAgICAgICBLZXlfUGF1c2UgPSAweDEw
MDgsCiAgICAgICAgS2V5X1ByaW50ID0gMHgxMDA5LAogICAgICAgIEtleV9TeXNSZXEgPSAweDEw
MGEsCiAgICAgICAgS2V5X0hvbWUgPSAweDEwMTAsCiAgICAgICAgS2V5X0VuZCA9IDB4MTAxMSwK
ICAgICAgICBLZXlfTGVmdCA9IDB4MTAxMiwKICAgICAgICBLZXlfVXAgPSAweDEwMTMsCiAgICAg
ICAgS2V5X1JpZ2h0ID0gMHgxMDE0LAogICAgICAgIEtleV9Eb3duID0gMHgxMDE1LAogICAgICAg
IEtleV9QcmlvciA9IDB4MTAxNiwgS2V5X1BhZ2VVcCA9IEtleV9QcmlvciwKICAgICAgICBLZXlf
TmV4dCA9IDB4MTAxNywgS2V5X1BhZ2VEb3duID0gS2V5X05leHQsCiAgICAgICAgS2V5X1NoaWZ0
ID0gMHgxMDIwLAogICAgICAgIEtleV9Db250cm9sID0gMHgxMDIxLAogICAgICAgIEtleV9NZXRh
ID0gMHgxMDIyLAogICAgICAgIEtleV9BbHQgPSAweDEwMjMsCiAgICAgICAgS2V5X0NhcHNMb2Nr
ID0gMHgxMDI0LAogICAgICAgIEtleV9OdW1Mb2NrID0gMHgxMDI1LAogICAgICAgIEtleV9TY3Jv
bGxMb2NrID0gMHgxMDI2LAogICAgICAgIEtleV9GMSA9IDB4MTAzMCwKICAgICAgICBLZXlfRjIg
PSAweDEwMzEsCiAgICAgICAgS2V5X0YzID0gMHgxMDMyLAogICAgICAgIEtleV9GNCA9IDB4MTAz
MywKICAgICAgICBLZXlfRjUgPSAweDEwMzQsCiAgICAgICAgS2V5X0Y2ID0gMHgxMDM1LAogICAg
ICAgIEtleV9GNyA9IDB4MTAzNiwKICAgICAgICBLZXlfRjggPSAweDEwMzcsCiAgICAgICAgS2V5
X0Y5ID0gMHgxMDM4LAogICAgICAgIEtleV9GMTAgPSAweDEwMzksCiAgICAgICAgS2V5X0YxMSA9
IDB4MTAzYSwKICAgICAgICBLZXlfRjEyID0gMHgxMDNiLAogICAgICAgIEtleV9GMTMgPSAweDEw
M2MsCiAgICAgICAgS2V5X0YxNCA9IDB4MTAzZCwKICAgICAgICBLZXlfRjE1ID0gMHgxMDNlLAog
ICAgICAgIEtleV9GMTYgPSAweDEwM2YsCiAgICAgICAgS2V5X0YxNyA9IDB4MTA0MCwKICAgICAg
ICBLZXlfRjE4ID0gMHgxMDQxLAogICAgICAgIEtleV9GMTkgPSAweDEwNDIsCiAgICAgICAgS2V5
X0YyMCA9IDB4MTA0MywKICAgICAgICBLZXlfRjIxID0gMHgxMDQ0LAogICAgICAgIEtleV9GMjIg
PSAweDEwNDUsCiAgICAgICAgS2V5X0YyMyA9IDB4MTA0NiwKICAgICAgICBLZXlfRjI0ID0gMHgx
MDQ3LAogICAgICAgIEtleV9GMjUgPSAweDEwNDgsCiAgICAgICAgS2V5X0YyNiA9IDB4MTA0OSwK
ICAgICAgICBLZXlfRjI3ID0gMHgxMDRhLAogICAgICAgIEtleV9GMjggPSAweDEwNGIsCiAgICAg
ICAgS2V5X0YyOSA9IDB4MTA0YywKICAgICAgICBLZXlfRjMwID0gMHgxMDRkLAogICAgICAgIEtl
eV9GMzEgPSAweDEwNGUsCiAgICAgICAgS2V5X0YzMiA9IDB4MTA0ZiwKICAgICAgICBLZXlfRjMz
ID0gMHgxMDUwLAogICAgICAgIEtleV9GMzQgPSAweDEwNTEsCiAgICAgICAgS2V5X0YzNSA9IDB4
MTA1MiwKICAgICAgICBLZXlfU3VwZXJfTCA9IDB4MTA1MywKICAgICAgICBLZXlfU3VwZXJfUiA9
IDB4MTA1NCwKICAgICAgICBLZXlfTWVudSA9IDB4MTA1NSwKICAgICAgICBLZXlfSHlwZXJfTCA9
IDB4MTA1NiwKICAgICAgICBLZXlfSHlwZXJfUiA9IDB4MTA1NywKICAgICAgICBLZXlfSGVscCA9
IDB4MTA1OCwKICAgICAgICBLZXlfU3BhY2UgPSAweDIwLAogICAgICAgIEtleV9BbnkgPSBLZXlf
U3BhY2UsCiAgICAgICAgS2V5X0V4Y2xhbSA9IDB4MjEsCiAgICAgICAgS2V5X1F1b3RlRGJsID0g
MHgyMiwKICAgICAgICBLZXlfTnVtYmVyU2lnbiA9IDB4MjMsCiAgICAgICAgS2V5X0RvbGxhciA9
IDB4MjQsCiAgICAgICAgS2V5X1BlcmNlbnQgPSAweDI1LAogICAgICAgIEtleV9BbXBlcnNhbmQg
PSAweDI2LAogICAgICAgIEtleV9BcG9zdHJvcGhlID0gMHgyNywKICAgICAgICBLZXlfUGFyZW5M
ZWZ0ID0gMHgyOCwKICAgICAgICBLZXlfUGFyZW5SaWdodCA9IDB4MjksCiAgICAgICAgS2V5X0Fz
dGVyaXNrID0gMHgyYSwKICAgICAgICBLZXlfUGx1cyA9IDB4MmIsCiAgICAgICAgS2V5X0NvbW1h
ID0gMHgyYywKICAgICAgICBLZXlfTWludXMgPSAweDJkLAogICAgICAgIEtleV9QZXJpb2QgPSAw
eDJlLAogICAgICAgIEtleV9TbGFzaCA9IDB4MmYsCiAgICAgICAgS2V5XzAgPSAweDMwLAogICAg
ICAgIEtleV8xID0gMHgzMSwKICAgICAgICBLZXlfMiA9IDB4MzIsCiAgICAgICAgS2V5XzMgPSAw
eDMzLAogICAgICAgIEtleV80ID0gMHgzNCwKICAgICAgICBLZXlfNSA9IDB4MzUsCiAgICAgICAg
S2V5XzYgPSAweDM2LAogICAgICAgIEtleV83ID0gMHgzNywKICAgICAgICBLZXlfOCA9IDB4Mzgs
CiAgICAgICAgS2V5XzkgPSAweDM5LAogICAgICAgIEtleV9Db2xvbiA9IDB4M2EsCiAgICAgICAg
S2V5X1NlbWljb2xvbiA9IDB4M2IsCiAgICAgICAgS2V5X0xlc3MgPSAweDNjLAogICAgICAgIEtl
eV9FcXVhbCA9IDB4M2QsCiAgICAgICAgS2V5X0dyZWF0ZXIgPSAweDNlLAogICAgICAgIEtleV9R
dWVzdGlvbiA9IDB4M2YsCiAgICAgICAgS2V5X0F0ID0gMHg0MCwKICAgICAgICBLZXlfQSA9IDB4
NDEsCiAgICAgICAgS2V5X0IgPSAweDQyLAogICAgICAgIEtleV9DID0gMHg0MywKICAgICAgICBL
ZXlfRCA9IDB4NDQsCiAgICAgICAgS2V5X0UgPSAweDQ1LAogICAgICAgIEtleV9GID0gMHg0NiwK
ICAgICAgICBLZXlfRyA9IDB4NDcsCiAgICAgICAgS2V5X0ggPSAweDQ4LAogICAgICAgIEtleV9J
ID0gMHg0OSwKICAgICAgICBLZXlfSiA9IDB4NGEsCiAgICAgICAgS2V5X0sgPSAweDRiLAogICAg
ICAgIEtleV9MID0gMHg0YywKICAgICAgICBLZXlfTSA9IDB4NGQsCiAgICAgICAgS2V5X04gPSAw
eDRlLAogICAgICAgIEtleV9PID0gMHg0ZiwKICAgICAgICBLZXlfUCA9IDB4NTAsCiAgICAgICAg
S2V5X1EgPSAweDUxLAogICAgICAgIEtleV9SID0gMHg1MiwKICAgICAgICBLZXlfUyA9IDB4NTMs
CiAgICAgICAgS2V5X1QgPSAweDU0LAogICAgICAgIEtleV9VID0gMHg1NSwKICAgICAgICBLZXlf
ViA9IDB4NTYsCiAgICAgICAgS2V5X1cgPSAweDU3LAogICAgICAgIEtleV9YID0gMHg1OCwKICAg
ICAgICBLZXlfWSA9IDB4NTksCiAgICAgICAgS2V5X1ogPSAweDVhLAogICAgICAgIEtleV9CcmFj
a2V0TGVmdCA9IDB4NWIsCiAgICAgICAgS2V5X0JhY2tzbGFzaCA9IDB4NWMsCiAgICAgICAgS2V5
X0JyYWNrZXRSaWdodCA9IDB4NWQsCiAgICAgICAgS2V5X0FzY2lpQ2lyY3VtID0gMHg1ZSwKICAg
ICAgICBLZXlfVW5kZXJzY29yZSA9IDB4NWYsCiAgICAgICAgS2V5X1F1b3RlTGVmdCA9IDB4NjAs
CiAgICAgICAgS2V5X0JyYWNlTGVmdCA9IDB4N2IsCiAgICAgICAgS2V5X0JhciA9IDB4N2MsCiAg
ICAgICAgS2V5X0JyYWNlUmlnaHQgPSAweDdkLAogICAgICAgIEtleV9Bc2NpaVRpbGRlID0gMHg3
ZSwKCgoKICAgICAgICBLZXlfbm9icmVha3NwYWNlID0gMHgwYTAsCiAgICAgICAgS2V5X2V4Y2xh
bWRvd24gPSAweDBhMSwKICAgICAgICBLZXlfY2VudCA9IDB4MGEyLAogICAgICAgIEtleV9zdGVy
bGluZyA9IDB4MGEzLAogICAgICAgIEtleV9jdXJyZW5jeSA9IDB4MGE0LAogICAgICAgIEtleV95
ZW4gPSAweDBhNSwKICAgICAgICBLZXlfYnJva2VuYmFyID0gMHgwYTYsCiAgICAgICAgS2V5X3Nl
Y3Rpb24gPSAweDBhNywKICAgICAgICBLZXlfZGlhZXJlc2lzID0gMHgwYTgsCiAgICAgICAgS2V5
X2NvcHlyaWdodCA9IDB4MGE5LAogICAgICAgIEtleV9vcmRmZW1pbmluZSA9IDB4MGFhLAogICAg
ICAgIEtleV9ndWlsbGVtb3RsZWZ0ID0gMHgwYWIsCiAgICAgICAgS2V5X25vdHNpZ24gPSAweDBh
YywKICAgICAgICBLZXlfaHlwaGVuID0gMHgwYWQsCiAgICAgICAgS2V5X3JlZ2lzdGVyZWQgPSAw
eDBhZSwKICAgICAgICBLZXlfbWFjcm9uID0gMHgwYWYsCiAgICAgICAgS2V5X2RlZ3JlZSA9IDB4
MGIwLAogICAgICAgIEtleV9wbHVzbWludXMgPSAweDBiMSwKICAgICAgICBLZXlfdHdvc3VwZXJp
b3IgPSAweDBiMiwKICAgICAgICBLZXlfdGhyZWVzdXBlcmlvciA9IDB4MGIzLAogICAgICAgIEtl
eV9hY3V0ZSA9IDB4MGI0LAogICAgICAgIEtleV9tdSA9IDB4MGI1LAogICAgICAgIEtleV9wYXJh
Z3JhcGggPSAweDBiNiwKICAgICAgICBLZXlfcGVyaW9kY2VudGVyZWQgPSAweDBiNywKICAgICAg
ICBLZXlfY2VkaWxsYSA9IDB4MGI4LAogICAgICAgIEtleV9vbmVzdXBlcmlvciA9IDB4MGI5LAog
ICAgICAgIEtleV9tYXNjdWxpbmUgPSAweDBiYSwKICAgICAgICBLZXlfZ3VpbGxlbW90cmlnaHQg
PSAweDBiYiwKICAgICAgICBLZXlfb25lcXVhcnRlciA9IDB4MGJjLAogICAgICAgIEtleV9vbmVo
YWxmID0gMHgwYmQsCiAgICAgICAgS2V5X3RocmVlcXVhcnRlcnMgPSAweDBiZSwKICAgICAgICBL
ZXlfcXVlc3Rpb25kb3duID0gMHgwYmYsCiAgICAgICAgS2V5X0FncmF2ZSA9IDB4MGMwLAogICAg
ICAgIEtleV9BYWN1dGUgPSAweDBjMSwKICAgICAgICBLZXlfQWNpcmN1bWZsZXggPSAweDBjMiwK
ICAgICAgICBLZXlfQXRpbGRlID0gMHgwYzMsCiAgICAgICAgS2V5X0FkaWFlcmVzaXMgPSAweDBj
NCwKICAgICAgICBLZXlfQXJpbmcgPSAweDBjNSwKICAgICAgICBLZXlfQUUgPSAweDBjNiwKICAg
ICAgICBLZXlfQ2NlZGlsbGEgPSAweDBjNywKICAgICAgICBLZXlfRWdyYXZlID0gMHgwYzgsCiAg
ICAgICAgS2V5X0VhY3V0ZSA9IDB4MGM5LAogICAgICAgIEtleV9FY2lyY3VtZmxleCA9IDB4MGNh
LAogICAgICAgIEtleV9FZGlhZXJlc2lzID0gMHgwY2IsCiAgICAgICAgS2V5X0lncmF2ZSA9IDB4
MGNjLAogICAgICAgIEtleV9JYWN1dGUgPSAweDBjZCwKICAgICAgICBLZXlfSWNpcmN1bWZsZXgg
PSAweDBjZSwKICAgICAgICBLZXlfSWRpYWVyZXNpcyA9IDB4MGNmLAogICAgICAgIEtleV9FVEgg
PSAweDBkMCwKICAgICAgICBLZXlfTnRpbGRlID0gMHgwZDEsCiAgICAgICAgS2V5X09ncmF2ZSA9
IDB4MGQyLAogICAgICAgIEtleV9PYWN1dGUgPSAweDBkMywKICAgICAgICBLZXlfT2NpcmN1bWZs
ZXggPSAweDBkNCwKICAgICAgICBLZXlfT3RpbGRlID0gMHgwZDUsCiAgICAgICAgS2V5X09kaWFl
cmVzaXMgPSAweDBkNiwKICAgICAgICBLZXlfbXVsdGlwbHkgPSAweDBkNywKICAgICAgICBLZXlf
T29ibGlxdWUgPSAweDBkOCwKICAgICAgICBLZXlfVWdyYXZlID0gMHgwZDksCiAgICAgICAgS2V5
X1VhY3V0ZSA9IDB4MGRhLAogICAgICAgIEtleV9VY2lyY3VtZmxleCA9IDB4MGRiLAogICAgICAg
IEtleV9VZGlhZXJlc2lzID0gMHgwZGMsCiAgICAgICAgS2V5X1lhY3V0ZSA9IDB4MGRkLAogICAg
ICAgIEtleV9USE9STiA9IDB4MGRlLAogICAgICAgIEtleV9zc2hhcnAgPSAweDBkZiwKICAgICAg
ICBLZXlfYWdyYXZlID0gMHgwZTAsCiAgICAgICAgS2V5X2FhY3V0ZSA9IDB4MGUxLAogICAgICAg
IEtleV9hY2lyY3VtZmxleCA9IDB4MGUyLAogICAgICAgIEtleV9hdGlsZGUgPSAweDBlMywKICAg
ICAgICBLZXlfYWRpYWVyZXNpcyA9IDB4MGU0LAogICAgICAgIEtleV9hcmluZyA9IDB4MGU1LAog
ICAgICAgIEtleV9hZSA9IDB4MGU2LAogICAgICAgIEtleV9jY2VkaWxsYSA9IDB4MGU3LAogICAg
ICAgIEtleV9lZ3JhdmUgPSAweDBlOCwKICAgICAgICBLZXlfZWFjdXRlID0gMHgwZTksCiAgICAg
ICAgS2V5X2VjaXJjdW1mbGV4ID0gMHgwZWEsCiAgICAgICAgS2V5X2VkaWFlcmVzaXMgPSAweDBl
YiwKICAgICAgICBLZXlfaWdyYXZlID0gMHgwZWMsCiAgICAgICAgS2V5X2lhY3V0ZSA9IDB4MGVk
LAogICAgICAgIEtleV9pY2lyY3VtZmxleCA9IDB4MGVlLAogICAgICAgIEtleV9pZGlhZXJlc2lz
ID0gMHgwZWYsCiAgICAgICAgS2V5X2V0aCA9IDB4MGYwLAogICAgICAgIEtleV9udGlsZGUgPSAw
eDBmMSwKICAgICAgICBLZXlfb2dyYXZlID0gMHgwZjIsCiAgICAgICAgS2V5X29hY3V0ZSA9IDB4
MGYzLAogICAgICAgIEtleV9vY2lyY3VtZmxleCA9IDB4MGY0LAogICAgICAgIEtleV9vdGlsZGUg
PSAweDBmNSwKICAgICAgICBLZXlfb2RpYWVyZXNpcyA9IDB4MGY2LAogICAgICAgIEtleV9kaXZp
c2lvbiA9IDB4MGY3LAogICAgICAgIEtleV9vc2xhc2ggPSAweDBmOCwKICAgICAgICBLZXlfdWdy
YXZlID0gMHgwZjksCiAgICAgICAgS2V5X3VhY3V0ZSA9IDB4MGZhLAogICAgICAgIEtleV91Y2ly
Y3VtZmxleCA9IDB4MGZiLAogICAgICAgIEtleV91ZGlhZXJlc2lzID0gMHgwZmMsCiAgICAgICAg
S2V5X3lhY3V0ZSA9IDB4MGZkLAogICAgICAgIEtleV90aG9ybiA9IDB4MGZlLAogICAgICAgIEtl
eV95ZGlhZXJlc2lzID0gMHgwZmYsCgogICAgICAgIEtleV91bmtub3duID0gMHhmZmZmCiAgICB9
OwoKICAgIGVudW0gQXJyb3dUeXBlIHsKICAgICAgICBVcEFycm93LAogICAgICAgIERvd25BcnJv
dywKICAgICAgICBMZWZ0QXJyb3csCiAgICAgICAgUmlnaHRBcnJvdwogICAgfTsKCgogICAgZW51
bSBSYXN0ZXJPcCB7CiAgICAgICAgQ29weVJPUCwKICAgICAgICBPclJPUCwKICAgICAgICBYb3JS
T1AsCiAgICAgICAgTm90QW5kUk9QLAogICAgICAgIEVyYXNlUk9QPU5vdEFuZFJPUCwKICAgICAg
ICBOb3RDb3B5Uk9QLAogICAgICAgIE5vdE9yUk9QLAogICAgICAgIE5vdFhvclJPUCwKICAgICAg
ICBBbmRST1AsIE5vdEVyYXNlUk9QPUFuZFJPUCwKICAgICAgICBOb3RST1AsCiAgICAgICAgQ2xl
YXJST1AsCiAgICAgICAgU2V0Uk9QLAogICAgICAgIE5vcFJPUCwKICAgICAgICBBbmROb3RST1As
CiAgICAgICAgT3JOb3RST1AsCiAgICAgICAgTmFuZFJPUCwKICAgICAgICBOb3JST1AsIExhc3RS
T1A9Tm9yUk9QCiAgICB9OwoKCiAgICBlbnVtIFBlblN0eWxlIHsKICAgICAgICBOb1BlbiwKICAg
ICAgICBTb2xpZExpbmUsCiAgICAgICAgRGFzaExpbmUsCiAgICAgICAgRG90TGluZSwKICAgICAg
ICBEYXNoRG90TGluZSwKICAgICAgICBEYXNoRG90RG90TGluZSwKICAgICAgICBNUGVuU3R5bGUg
PSAweDBmCiAgICB9OwoKICAgIGVudW0gUGVuQ2FwU3R5bGUgewogICAgICAgIEZsYXRDYXAgPSAw
eDAwLAogICAgICAgIFNxdWFyZUNhcCA9IDB4MTAsCiAgICAgICAgUm91bmRDYXAgPSAweDIwLAog
ICAgICAgIE1QZW5DYXBTdHlsZSA9IDB4MzAKICAgIH07CgogICAgZW51bSBQZW5Kb2luU3R5bGUg
ewogICAgICAgIE1pdGVySm9pbiA9IDB4MDAsCiAgICAgICAgQmV2ZWxKb2luID0gMHg0MCwKICAg
ICAgICBSb3VuZEpvaW4gPSAweDgwLAogICAgICAgIE1QZW5Kb2luU3R5bGUgPSAweGMwCiAgICB9
OwoKICAgIGVudW0gQnJ1c2hTdHlsZSB7CiAgICAgICAgTm9CcnVzaCwKICAgICAgICBTb2xpZFBh
dHRlcm4sCiAgICAgICAgRGVuc2UxUGF0dGVybiwKICAgICAgICBEZW5zZTJQYXR0ZXJuLAogICAg
ICAgIERlbnNlM1BhdHRlcm4sCiAgICAgICAgRGVuc2U0UGF0dGVybiwKICAgICAgICBEZW5zZTVQ
YXR0ZXJuLAogICAgICAgIERlbnNlNlBhdHRlcm4sCiAgICAgICAgRGVuc2U3UGF0dGVybiwKICAg
ICAgICBIb3JQYXR0ZXJuLAogICAgICAgIFZlclBhdHRlcm4sCiAgICAgICAgQ3Jvc3NQYXR0ZXJu
LAogICAgICAgIEJEaWFnUGF0dGVybiwKICAgICAgICBGRGlhZ1BhdHRlcm4sCiAgICAgICAgRGlh
Z0Nyb3NzUGF0dGVybiwKICAgICAgICBDdXN0b21QYXR0ZXJuPTI0CiAgICB9OwoKICAgIGVudW0g
V2luZG93c1ZlcnNpb24gewogICAgICAgIFdWXzMycyA9IDB4MDAwMSwKICAgICAgICBXVl85NSA9
IDB4MDAwMiwKICAgICAgICBXVl85OCA9IDB4MDAwMywKICAgICAgICBXVl9ET1NfYmFzZWQgPSAw
eDAwMGYsCgogICAgICAgIFdWX05UID0gMHgwMDEwLAogICAgICAgIFdWXzIwMDAgPSAweDAwMjAs
CiAgICAgICAgV1ZfTlRfYmFzZWQgPSAweDAwZjAKICAgIH07CgogICAgZW51bSBVSUVmZmVjdCB7
CiAgICAgICAgVUlfR2VuZXJhbCwKICAgICAgICBVSV9BbmltYXRlTWVudSwKICAgICAgICBVSV9G
YWRlTWVudSwKICAgICAgICBVSV9BbmltYXRlQ29tYm8sCiAgICAgICAgVUlfQW5pbWF0ZVRvb2x0
aXAsCiAgICAgICAgVUlfRmFkZVRvb2x0aXAKICAgIH07CgoKCgogICAgc3RhdGljIGNvbnN0IFFD
dXJzb3IgJiBhcnJvd0N1cnNvcjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgdXBBcnJvd0N1
cnNvcjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgY3Jvc3NDdXJzb3I7CiAgICBzdGF0aWMg
Y29uc3QgUUN1cnNvciAmIHdhaXRDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGli
ZWFtQ3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFDdXJzb3IgJiBzaXplVmVyQ3Vyc29yOwogICAg
c3RhdGljIGNvbnN0IFFDdXJzb3IgJiBzaXplSG9yQ3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFD
dXJzb3IgJiBzaXplQkRpYWdDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHNpemVG
RGlhZ0N1cnNvcjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgc2l6ZUFsbEN1cnNvcjsKICAg
IHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgYmxhbmtDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1
cnNvciAmIHNwbGl0VkN1cnNvcjsKCiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHNwbGl0SEN1
cnNvcjsKCiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHBvaW50aW5nSGFuZEN1cnNvcjsKICAg
IHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgZm9yYmlkZGVuQ3Vyc29yOwoKCiAgICBlbnVtIFRleHRG
b3JtYXQgewogICAgICAgIFBsYWluVGV4dCwKICAgICAgICBSaWNoVGV4dCwKICAgICAgICBBdXRv
VGV4dAogICAgfTsKfTsKCgpjbGFzcyBRSW50ZXJuYWwgewpwdWJsaWM6CiAgICBlbnVtIFBhaW50
RGV2aWNlRmxhZ3MgewogICAgICAgIFVuZGVmaW5lZERldmljZSA9IDB4MDAsCiAgICAgICAgV2lk
Z2V0ID0gMHgwMSwKICAgICAgICBQaXhtYXAgPSAweDAyLAogICAgICAgIFByaW50ZXIgPSAweDAz
LAogICAgICAgIFBpY3R1cmUgPSAweDA0LAogICAgICAgIFN5c3RlbSA9IDB4MDUsCiAgICAgICAg
RGV2aWNlVHlwZU1hc2sgPSAweDBmLAogICAgICAgIEV4dGVybmFsRGV2aWNlID0gMHgxMAogICAg
fTsKfTsKCiMgMzYgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXdpbmRvd2RlZnMuaCIgMiAz
CgoKCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRl
L2xpbWl0cy5oIiAxIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVk
ZS9saW1pdHMuaCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEg
MwojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMTI3ICIvdXNyL2lu
Y2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgi
IDIgMwoKCgoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAzOSAiL3Vzci9s
aWIvcXQtMi4yLjAvaW5jbHVkZS9xd2luZG93ZGVmcy5oIiAyIDMKCgoKY2xhc3MgUVBhaW50RGV2
aWNlOwpjbGFzcyBRUGFpbnREZXZpY2VNZXRyaWNzOwpjbGFzcyBRV2lkZ2V0OwpjbGFzcyBRV2lk
Z2V0TWFwcGVyOwpjbGFzcyBRRGlhbG9nOwpjbGFzcyBRQ29sb3I7CmNsYXNzIFFDb2xvckdyb3Vw
OwpjbGFzcyBRUGFsZXR0ZTsKY2xhc3MgUUN1cnNvcjsKY2xhc3MgUVBvaW50OwpjbGFzcyBRU2l6
ZTsKY2xhc3MgUVJlY3Q7CmNsYXNzIFFQb2ludEFycmF5OwpjbGFzcyBRUGFpbnRlcjsKY2xhc3Mg
UVJlZ2lvbjsKY2xhc3MgUUZvbnQ7CmNsYXNzIFFGb250TWV0cmljczsKY2xhc3MgUUZvbnRJbmZv
OwpjbGFzcyBRUGVuOwpjbGFzcyBRQnJ1c2g7CmNsYXNzIFFXTWF0cml4OwpjbGFzcyBRUGl4bWFw
OwpjbGFzcyBRQml0bWFwOwpjbGFzcyBRTW92aWU7CmNsYXNzIFFJbWFnZTsKY2xhc3MgUUltYWdl
SU87CmNsYXNzIFFQaWN0dXJlOwpjbGFzcyBRUHJpbnRlcjsKY2xhc3MgUUFjY2VsOwpjbGFzcyBR
VGltZXI7CmNsYXNzIFFUaW1lOwpjbGFzcyBRQ2xpcGJvYXJkOwoKCgoKY2xhc3MgUVdpZGdldExp
c3Q7CmNsYXNzIFFXaWRnZXRMaXN0SXQ7CgoKCgojIDEwOCAiL3Vzci9saWIvcXQtMi4yLjAvaW5j
bHVkZS9xd2luZG93ZGVmcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IFdJZDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgSEFORExFOwoKCnR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5Owp0
eXBlZGVmIHVuaW9uIF9YRXZlbnQgWEV2ZW50Owp0eXBlZGVmIHN0cnVjdCBfWEdDICpHQzsKdHlw
ZWRlZiBzdHJ1Y3QgX1hSZWdpb24gKlJlZ2lvbjsKCiBEaXNwbGF5ICpxdF94ZGlzcGxheSgpOwog
aW50IHF0X3hzY3JlZW4oKTsKIFdJZCBxdF94cm9vdHdpbigpOwogR0MgcXRfeGdldF9yZWFkb25s
eV9nYyggYm9vbCBtb25vY2hyb21lPUZBTFNFICk7CiBHQyBxdF94Z2V0X3RlbXBfZ2MoIGJvb2wg
bW9ub2Nocm9tZT1GQUxTRSApOwoKIyAxMzQgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXdp
bmRvd2RlZnMuaCIgMwpjbGFzcyBRQXBwbGljYXRpb247CgoKCgoKCgoKdHlwZWRlZiBRX0lOVDMy
IFFDT09SRDsKY29uc3QgUUNPT1JEIFFDT09SRF9NQVggPSAyMTQ3NDgzNjQ3Owpjb25zdCBRQ09P
UkQgUUNPT1JEX01JTiA9IC1RQ09PUkRfTUFYIC0gMTsKCnR5cGVkZWYgdW5zaWduZWQgaW50IFFS
Z2I7CgogY2hhciAqcUFwcE5hbWUoKTsKCgoKCnR5cGVkZWYgdm9pZCAoKlFfQ2xlYW5VcEZ1bmN0
aW9uKSgpOwogdm9pZCBxQWRkUG9zdFJvdXRpbmUoIFFfQ2xlYW5VcEZ1bmN0aW9uICk7CiB2b2lk
IHFSZW1vdmVQb3N0Um91dGluZSggUV9DbGVhblVwRnVuY3Rpb24gKTsKCgogdm9pZCAqcXRfZmlu
ZF9vYmpfY2hpbGQoIFFPYmplY3QgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsKIyAz
MyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xd2lkZ2V0LmgiIDIgMwoKIyAzNiAiL3Vzci9s
aWIvcXQtMi4yLjAvaW5jbHVkZS9xb2JqZWN0LmgiIDEgMwojIDM0ICIvdXNyL2xpYi9xdC0yLjIu
MC9pbmNsdWRlL3FldmVudC5oIiAxIDMKIyAzNCAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9x
cmVnaW9uLmgiIDEgMwojIDMzICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FyZWN0LmgiIDEg
MwojIDMzICIvdXNyL2xpYi9xdC0yLjIuMC9pbmNsdWRlL3FzaXplLmgiIDEgMwojIDM2ICIvdXNy
L2xpYi9xdC0yLjIuMC9pbmNsdWRlL3Fwb2ludC5oIiAxIDMKY2xhc3MgUVBvaW50CnsKcHVibGlj
OgogICAgUVBvaW50KCk7CiAgICBRUG9pbnQoIGludCB4cG9zLCBpbnQgeXBvcyApOwoKICAgIGJv
b2wgaXNOdWxsKCkgY29uc3Q7CgogICAgaW50IHgoKSBjb25zdDsKICAgIGludCB5KCkgY29uc3Q7
CiAgICB2b2lkIHNldFgoIGludCB4ICk7CiAgICB2b2lkIHNldFkoIGludCB5ICk7CgogICAgaW50
IG1hbmhhdHRhbkxlbmd0aCgpIGNvbnN0OwoKICAgIFFDT09SRCAmcngoKTsKICAgIFFDT09SRCAm
cnkoKTsKCiAgICBRUG9pbnQgJm9wZXJhdG9yKz0oIGNvbnN0IFFQb2ludCAmcCApOwogICAgUVBv
aW50ICZvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIFFQb2ludCAmb3BlcmF0b3Iq
PSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IqPSggZG91YmxlIGMgKTsKICAgIFFQb2lu
dCAmb3BlcmF0b3IvPSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IvPSggZG91YmxlIGMg
KTsKCiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVBvaW50ICYsIGNv
bnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3Qg
UVBvaW50ICYsIGNvbnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVy
YXRvcisoIGNvbnN0IFFQb2ludCAmLCBjb25zdCBRUG9pbnQgJiApOwogICAgZnJpZW5kIGlubGlu
ZSBRUG9pbnQgb3BlcmF0b3ItKCBjb25zdCBRUG9pbnQgJiwgY29uc3QgUVBvaW50ICYgKTsKICAg
IGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggY29uc3QgUVBvaW50ICYsIGludCApOwog
ICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IqKCBpbnQsIGNvbnN0IFFQb2ludCAmICk7
CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvciooIGNvbnN0IFFQb2ludCAmLCBkb3Vi
bGUgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggZG91YmxlLCBjb25zdCBR
UG9pbnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3ItKCBjb25zdCBRUG9p
bnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25zdCBRUG9pbnQg
JiwgaW50ICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvci8oIGNvbnN0IFFQb2lu
dCAmLCBkb3VibGUgKTsKCnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCB3YXJuaW5nRGl2QnlaZXJv
KCk7CgoKCgoKICAgIFFDT09SRCB4cDsKICAgIFFDT09SRCB5cDsKCn07CgoKCgoKCiBRRGF0YVN0
cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUVBvaW50ICYgKTsKIFFEYXRh
U3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRUG9pbnQgJiApOwoKCgoKCgppbmxp
bmUgUVBvaW50OjpRUG9pbnQoKQp7IHhwPTA7IHlwPTA7IH0KCmlubGluZSBRUG9pbnQ6OlFQb2lu
dCggaW50IHhwb3MsIGludCB5cG9zICkKeyB4cD0oUUNPT1JEKXhwb3M7IHlwPShRQ09PUkQpeXBv
czsgfQoKaW5saW5lIGJvb2wgUVBvaW50Ojppc051bGwoKSBjb25zdAp7IHJldHVybiB4cCA9PSAw
ICYmIHlwID09IDA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp4KCkgY29uc3QKeyByZXR1cm4geHA7
IH0KCmlubGluZSBpbnQgUVBvaW50Ojp5KCkgY29uc3QKeyByZXR1cm4geXA7IH0KCmlubGluZSB2
b2lkIFFQb2ludDo6c2V0WCggaW50IHggKQp7IHhwID0gKFFDT09SRCl4OyB9CgppbmxpbmUgdm9p
ZCBRUG9pbnQ6OnNldFkoIGludCB5ICkKeyB5cCA9IChRQ09PUkQpeTsgfQoKaW5saW5lIFFDT09S
RCAmUVBvaW50OjpyeCgpCnsgcmV0dXJuIHhwOyB9CgppbmxpbmUgUUNPT1JEICZRUG9pbnQ6OnJ5
KCkKeyByZXR1cm4geXA7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0b3IrPSggY29u
c3QgUVBvaW50ICZwICkKeyB4cCs9cC54cDsgeXArPXAueXA7IHJldHVybiAqdGhpczsgfQoKaW5s
aW5lIFFQb2ludCAmUVBvaW50OjpvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAgKQp7IHhwLT1w
LnhwOyB5cC09cC55cDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVBvaW50ICZRUG9pbnQ6Om9w
ZXJhdG9yKj0oIGludCBjICkKeyB4cCo9KFFDT09SRCljOyB5cCo9KFFDT09SRCljOyByZXR1cm4g
KnRoaXM7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0b3IqPSggZG91YmxlIGMgKQp7
IHhwPShRQ09PUkQpKHhwKmMpOyB5cD0oUUNPT1JEKSh5cCpjKTsgcmV0dXJuICp0aGlzOyB9Cgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBRUG9pbnQgJnAy
ICkKeyByZXR1cm4gcDEueHAgPT0gcDIueHAgJiYgcDEueXAgPT0gcDIueXA7IH0KCmlubGluZSBi
b29sIG9wZXJhdG9yIT0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7IHJl
dHVybiBwMS54cCAhPSBwMi54cCB8fCBwMS55cCAhPSBwMi55cDsgfQoKaW5saW5lIFFQb2ludCBv
cGVyYXRvcisoIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7IHJldHVybiBR
UG9pbnQocDEueHArcDIueHAsIHAxLnlwK3AyLnlwKTsgfQoKaW5saW5lIFFQb2ludCBvcGVyYXRv
ci0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7IHJldHVybiBRUG9pbnQo
cDEueHAtcDIueHAsIHAxLnlwLXAyLnlwKTsgfQoKaW5saW5lIFFQb2ludCBvcGVyYXRvciooIGNv
bnN0IFFQb2ludCAmcCwgaW50IGMgKQp7IHJldHVybiBRUG9pbnQocC54cCpjLCBwLnlwKmMpOyB9
CgppbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggaW50IGMsIGNvbnN0IFFQb2ludCAmcCApCnsgcmV0
dXJuIFFQb2ludChwLnhwKmMsIHAueXAqYyk7IH0KCmlubGluZSBRUG9pbnQgb3BlcmF0b3IqKCBj
b25zdCBRUG9pbnQgJnAsIGRvdWJsZSBjICkKeyByZXR1cm4gUVBvaW50KChRQ09PUkQpKHAueHAq
YyksIChRQ09PUkQpKHAueXAqYykpOyB9CgppbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggZG91Ymxl
IGMsIGNvbnN0IFFQb2ludCAmcCApCnsgcmV0dXJuIFFQb2ludCgoUUNPT1JEKShwLnhwKmMpLCAo
UUNPT1JEKShwLnlwKmMpKTsgfQoKaW5saW5lIFFQb2ludCBvcGVyYXRvci0oIGNvbnN0IFFQb2lu
dCAmcCApCnsgcmV0dXJuIFFQb2ludCgtcC54cCwgLXAueXApOyB9CgppbmxpbmUgUVBvaW50ICZR
UG9pbnQ6Om9wZXJhdG9yLz0oIGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkKICAgICAgICB3
YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgeHAvPShRQ09PUkQpYzsKICAgIHlwLz0oUUNPT1JEKWM7
CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0b3IvPSgg
ZG91YmxlIGMgKQp7CgogICAgaWYgKCBjID09IDAuMCApCiAgICAgICAgd2FybmluZ0RpdkJ5WmVy
bygpOwoKICAgIHhwPShRQ09PUkQpKHhwL2MpOwogICAgeXA9KFFDT09SRCkoeXAvYyk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25zdCBRUG9pbnQgJnAs
IGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkKICAgICAgICBRUG9pbnQ6Ondhcm5pbmdEaXZC
eVplcm8oKTsKCiAgICByZXR1cm4gUVBvaW50KHAueHAvYywgcC55cC9jKTsKfQoKaW5saW5lIFFQ
b2ludCBvcGVyYXRvci8oIGNvbnN0IFFQb2ludCAmcCwgZG91YmxlIGMgKQp7CgogICAgaWYgKCBj
ID09IDAuMCApCiAgICAgICAgUVBvaW50Ojp3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgcmV0dXJu
IFFQb2ludCgoUUNPT1JEKShwLnhwL2MpLCAoUUNPT1JEKShwLnlwL2MpKTsKfQoKCiMgMzMgIi91
c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXNpemUuaCIgMiAzCgoKCmNsYXNzIFFTaXplCnsKcHVi
bGljOgogICAgUVNpemUoKTsKICAgIFFTaXplKCBpbnQgdywgaW50IGggKTsKCiAgICBib29sIGlz
TnVsbCgpIGNvbnN0OwogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICBib29sIGlzVmFsaWQo
KSBjb25zdDsKCiAgICBpbnQgd2lkdGgoKSBjb25zdDsKICAgIGludCBoZWlnaHQoKSBjb25zdDsK
ICAgIHZvaWQgc2V0V2lkdGgoIGludCB3ICk7CiAgICB2b2lkIHNldEhlaWdodCggaW50IGggKTsK
ICAgIHZvaWQgdHJhbnNwb3NlKCk7CgogICAgUVNpemUgZXhwYW5kZWRUbyggY29uc3QgUVNpemUg
JiApIGNvbnN0OwogICAgUVNpemUgYm91bmRlZFRvKCBjb25zdCBRU2l6ZSAmICkgY29uc3Q7Cgog
ICAgUUNPT1JEICZyd2lkdGgoKTsKICAgIFFDT09SRCAmcmhlaWdodCgpOwoKICAgIFFTaXplICZv
cGVyYXRvcis9KCBjb25zdCBRU2l6ZSAmICk7CiAgICBRU2l6ZSAmb3BlcmF0b3ItPSggY29uc3Qg
UVNpemUgJiApOwogICAgUVNpemUgJm9wZXJhdG9yKj0oIGludCBjICk7CiAgICBRU2l6ZSAmb3Bl
cmF0b3IqPSggZG91YmxlIGMgKTsKICAgIFFTaXplICZvcGVyYXRvci89KCBpbnQgYyApOwogICAg
UVNpemUgJm9wZXJhdG9yLz0oIGRvdWJsZSBjICk7CgogICAgZnJpZW5kIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oIGNvbnN0IFFTaXplICYsIGNvbnN0IFFTaXplICYgKTsKICAgIGZyaWVuZCBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRU2l6ZSAmLCBjb25zdCBRU2l6ZSAmICk7CiAgICBm
cmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKyggY29uc3QgUVNpemUgJiwgY29uc3QgUVNpemUg
JiApOwogICAgZnJpZW5kIGlubGluZSBRU2l6ZSBvcGVyYXRvci0oIGNvbnN0IFFTaXplICYsIGNv
bnN0IFFTaXplICYgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBjb25zdCBR
U2l6ZSAmLCBpbnQgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBpbnQsIGNv
bnN0IFFTaXplICYgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBjb25zdCBR
U2l6ZSAmLCBkb3VibGUgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBkb3Vi
bGUsIGNvbnN0IFFTaXplICYgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IvKCBj
b25zdCBRU2l6ZSAmLCBpbnQgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVNpemUgb3BlcmF0b3IvKCBj
b25zdCBRU2l6ZSAmLCBkb3VibGUgKTsKCnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCB3YXJuaW5n
RGl2QnlaZXJvKCk7CgogICAgUUNPT1JEIHdkOwogICAgUUNPT1JEIGh0Owp9OwoKCgoKCgogUURh
dGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0IFFTaXplICYgKTsKIFFE
YXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRU2l6ZSAmICk7CgoKCgoKCmlu
bGluZSBRU2l6ZTo6UVNpemUoKQp7IHdkID0gaHQgPSAtMTsgfQoKaW5saW5lIFFTaXplOjpRU2l6
ZSggaW50IHcsIGludCBoICkKeyB3ZD0oUUNPT1JEKXc7IGh0PShRQ09PUkQpaDsgfQoKaW5saW5l
IGJvb2wgUVNpemU6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIHdkPT0wICYmIGh0PT0wOyB9Cgpp
bmxpbmUgYm9vbCBRU2l6ZTo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0dXJuIHdkPDEgfHwgaHQ8MTsg
fQoKaW5saW5lIGJvb2wgUVNpemU6OmlzVmFsaWQoKSBjb25zdAp7IHJldHVybiB3ZD49MCAmJiBo
dD49MDsgfQoKaW5saW5lIGludCBRU2l6ZTo6d2lkdGgoKSBjb25zdAp7IHJldHVybiB3ZDsgfQoK
aW5saW5lIGludCBRU2l6ZTo6aGVpZ2h0KCkgY29uc3QKeyByZXR1cm4gaHQ7IH0KCmlubGluZSB2
b2lkIFFTaXplOjpzZXRXaWR0aCggaW50IHcgKQp7IHdkPShRQ09PUkQpdzsgfQoKaW5saW5lIHZv
aWQgUVNpemU6OnNldEhlaWdodCggaW50IGggKQp7IGh0PShRQ09PUkQpaDsgfQoKaW5saW5lIFFD
T09SRCAmUVNpemU6OnJ3aWR0aCgpCnsgcmV0dXJuIHdkOyB9CgppbmxpbmUgUUNPT1JEICZRU2l6
ZTo6cmhlaWdodCgpCnsgcmV0dXJuIGh0OyB9CgppbmxpbmUgUVNpemUgJlFTaXplOjpvcGVyYXRv
cis9KCBjb25zdCBRU2l6ZSAmcyApCnsgd2QrPXMud2Q7IGh0Kz1zLmh0OyByZXR1cm4gKnRoaXM7
IH0KCmlubGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yLT0oIGNvbnN0IFFTaXplICZzICkKeyB3
ZC09cy53ZDsgaHQtPXMuaHQ7IHJldHVybiAqdGhpczsgfQoKaW5saW5lIFFTaXplICZRU2l6ZTo6
b3BlcmF0b3IqPSggaW50IGMgKQp7IHdkKj0oUUNPT1JEKWM7IGh0Kj0oUUNPT1JEKWM7IHJldHVy
biAqdGhpczsgfQoKaW5saW5lIFFTaXplICZRU2l6ZTo6b3BlcmF0b3IqPSggZG91YmxlIGMgKQp7
IHdkPShRQ09PUkQpKHdkKmMpOyBodD0oUUNPT1JEKShodCpjKTsgcmV0dXJuICp0aGlzOyB9Cgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRU2l6ZSAmczEsIGNvbnN0IFFTaXplICZzMiAp
CnsgcmV0dXJuIHMxLndkID09IHMyLndkICYmIHMxLmh0ID09IHMyLmh0OyB9CgppbmxpbmUgYm9v
bCBvcGVyYXRvciE9KCBjb25zdCBRU2l6ZSAmczEsIGNvbnN0IFFTaXplICZzMiApCnsgcmV0dXJu
IHMxLndkICE9IHMyLndkIHx8IHMxLmh0ICE9IHMyLmh0OyB9CgppbmxpbmUgUVNpemUgb3BlcmF0
b3IrKCBjb25zdCBRU2l6ZSAmIHMxLCBjb25zdCBRU2l6ZSAmIHMyICkKeyByZXR1cm4gUVNpemUo
czEud2QrczIud2QsIHMxLmh0K3MyLmh0KTsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yLSggY29u
c3QgUVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIgKQp7IHJldHVybiBRU2l6ZShzMS53ZC1zMi53
ZCwgczEuaHQtczIuaHQpOyB9CgppbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBjb25zdCBRU2l6ZSAm
cywgaW50IGMgKQp7IHJldHVybiBRU2l6ZShzLndkKmMsIHMuaHQqYyk7IH0KCmlubGluZSBRU2l6
ZSBvcGVyYXRvciooIGludCBjLCBjb25zdCBRU2l6ZSAmcyApCnsgcmV0dXJuIFFTaXplKHMud2Qq
Yywgcy5odCpjKTsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJnMsIGRv
dWJsZSBjICkKeyByZXR1cm4gUVNpemUoKFFDT09SRCkocy53ZCpjKSwgKFFDT09SRCkocy5odCpj
KSk7IH0KCmlubGluZSBRU2l6ZSBvcGVyYXRvciooIGRvdWJsZSBjLCBjb25zdCBRU2l6ZSAmcyAp
CnsgcmV0dXJuIFFTaXplKChRQ09PUkQpKHMud2QqYyksIChRQ09PUkQpKHMuaHQqYykpOyB9Cgpp
bmxpbmUgUVNpemUgJlFTaXplOjpvcGVyYXRvci89KCBpbnQgYyApCnsKCiAgICBpZiAoIGMgPT0g
MCApCiAgICAgICAgd2FybmluZ0RpdkJ5WmVybygpOwoKICAgIHdkLz0oUUNPT1JEKWM7IGh0Lz0o
UUNPT1JEKWM7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRU2l6ZSAmUVNpemU6Om9wZXJh
dG9yLz0oIGRvdWJsZSBjICkKewoKICAgIGlmICggYyA9PSAwLjAgKQogICAgICAgIHdhcm5pbmdE
aXZCeVplcm8oKTsKCiAgICB3ZD0oUUNPT1JEKSh3ZC9jKTsgaHQ9KFFDT09SRCkoaHQvYyk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRU2l6ZSBvcGVyYXRvci8oIGNvbnN0IFFTaXplICZz
LCBpbnQgYyApCnsKCiAgICBpZiAoIGMgPT0gMCApCiAgICAgICAgUVNpemU6Ondhcm5pbmdEaXZC
eVplcm8oKTsKCiAgICByZXR1cm4gUVNpemUocy53ZC9jLCBzLmh0L2MpOwp9CgppbmxpbmUgUVNp
emUgb3BlcmF0b3IvKCBjb25zdCBRU2l6ZSAmcywgZG91YmxlIGMgKQp7CgogICAgaWYgKCBjID09
IDAuMCApCiAgICAgICAgUVNpemU6Ondhcm5pbmdEaXZCeVplcm8oKTsKCiAgICByZXR1cm4gUVNp
emUoKFFDT09SRCkocy53ZC9jKSwgKFFDT09SRCkocy5odC9jKSk7Cn0KCmlubGluZSBRU2l6ZSBR
U2l6ZTo6ZXhwYW5kZWRUbyggY29uc3QgUVNpemUgJiBvdGhlclNpemUgKSBjb25zdAp7CiAgICBy
ZXR1cm4gUVNpemUoICgod2QpID4gKG90aGVyU2l6ZS53ZCkgPyAod2QpIDogKG90aGVyU2l6ZS53
ZCkpLCAoKGh0KSA+IChvdGhlclNpemUuaHQpID8gKGh0KSA6IChvdGhlclNpemUuaHQpKSApOwp9
CgppbmxpbmUgUVNpemUgUVNpemU6OmJvdW5kZWRUbyggY29uc3QgUVNpemUgJiBvdGhlclNpemUg
KSBjb25zdAp7CiAgICByZXR1cm4gUVNpemUoICgod2QpIDwgKG90aGVyU2l6ZS53ZCkgPyAod2Qp
IDogKG90aGVyU2l6ZS53ZCkpLCAoKGh0KSA8IChvdGhlclNpemUuaHQpID8gKGh0KSA6IChvdGhl
clNpemUuaHQpKSApOwp9CgoKIyAzMyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xcmVjdC5o
IiAyIDMKCgoKCgoKCmNsYXNzIFFSZWN0CnsKcHVibGljOgogICAgUVJlY3QoKSB7IHgxID0geTEg
PSAwOyB4MiA9IHkyID0gLTE7IH0KICAgIFFSZWN0KCBjb25zdCBRUG9pbnQgJnRvcGxlZnQsIGNv
bnN0IFFQb2ludCAmYm90dG9tcmlnaHQgKTsKICAgIFFSZWN0KCBjb25zdCBRUG9pbnQgJnRvcGxl
ZnQsIGNvbnN0IFFTaXplICZzaXplICk7CiAgICBRUmVjdCggaW50IGxlZnQsIGludCB0b3AsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCApOwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogICAgUVJlY3Qgbm9y
bWFsaXplKCkgY29uc3Q7CgogICAgaW50IGxlZnQoKSBjb25zdDsKICAgIGludCB0b3AoKSBjb25z
dDsKICAgIGludCByaWdodCgpIGNvbnN0OwogICAgaW50IGJvdHRvbSgpIGNvbnN0OwoKICAgIFFD
T09SRCAmckxlZnQoKTsKICAgIFFDT09SRCAmclRvcCgpOwogICAgUUNPT1JEICZyUmlnaHQoKTsK
ICAgIFFDT09SRCAmckJvdHRvbSgpOwoKICAgIGludCB4KCkgY29uc3Q7CiAgICBpbnQgeSgpIGNv
bnN0OwogICAgdm9pZCBzZXRMZWZ0KCBpbnQgcG9zICk7CiAgICB2b2lkIHNldFRvcCggaW50IHBv
cyApOwogICAgdm9pZCBzZXRSaWdodCggaW50IHBvcyApOwogICAgdm9pZCBzZXRCb3R0b20oIGlu
dCBwb3MgKTsKICAgIHZvaWQgc2V0WCggaW50IHggKTsKICAgIHZvaWQgc2V0WSggaW50IHkgKTsK
CiAgICBRUG9pbnQgdG9wTGVmdCgpIGNvbnN0OwogICAgUVBvaW50IGJvdHRvbVJpZ2h0KCkgY29u
c3Q7CiAgICBRUG9pbnQgdG9wUmlnaHQoKSBjb25zdDsKICAgIFFQb2ludCBib3R0b21MZWZ0KCkg
Y29uc3Q7CiAgICBRUG9pbnQgY2VudGVyKCkgY29uc3Q7CgogICAgdm9pZCByZWN0KCBpbnQgKngs
IGludCAqeSwgaW50ICp3LCBpbnQgKmggKSBjb25zdDsKICAgIHZvaWQgY29vcmRzKCBpbnQgKngx
LCBpbnQgKnkxLCBpbnQgKngyLCBpbnQgKnkyICkgY29uc3Q7CgogICAgdm9pZCBtb3ZlVG9wTGVm
dCggY29uc3QgUVBvaW50ICZwICk7CiAgICB2b2lkIG1vdmVCb3R0b21SaWdodCggY29uc3QgUVBv
aW50ICZwICk7CiAgICB2b2lkIG1vdmVUb3BSaWdodCggY29uc3QgUVBvaW50ICZwICk7CiAgICB2
b2lkIG1vdmVCb3R0b21MZWZ0KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUNlbnRl
ciggY29uc3QgUVBvaW50ICZwICk7CiAgICB2b2lkIG1vdmVCeSggaW50IGR4LCBpbnQgZHkgKTsK
CiAgICB2b2lkIHNldFJlY3QoIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoICk7CiAgICB2b2lk
IHNldENvb3JkcyggaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyICk7CgogICAgUVNpemUg
c2l6ZSgpIGNvbnN0OwogICAgaW50IHdpZHRoKCkgY29uc3Q7CiAgICBpbnQgaGVpZ2h0KCkgY29u
c3Q7CiAgICB2b2lkIHNldFdpZHRoKCBpbnQgdyApOwogICAgdm9pZCBzZXRIZWlnaHQoIGludCBo
ICk7CiAgICB2b2lkIHNldFNpemUoIGNvbnN0IFFTaXplICZzICk7CgogICAgUVJlY3Qgb3BlcmF0
b3J8KGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIFFSZWN0IG9wZXJhdG9yJihjb25zdCBRUmVj
dCAmcikgY29uc3Q7CiAgICBRUmVjdCYgb3BlcmF0b3J8PShjb25zdCBRUmVjdCAmcik7CiAgICBR
UmVjdCYgb3BlcmF0b3ImPShjb25zdCBRUmVjdCAmcik7CgogICAgYm9vbCBjb250YWlucyggY29u
c3QgUVBvaW50ICZwLCBib29sIHByb3Blcj1GQUxTRSApIGNvbnN0OwogICAgYm9vbCBjb250YWlu
cyggaW50IHgsIGludCB5LCBib29sIHByb3Blcj1GQUxTRSApIGNvbnN0OwogICAgYm9vbCBjb250
YWlucyggY29uc3QgUVJlY3QgJnIsIGJvb2wgcHJvcGVyPUZBTFNFICkgY29uc3Q7CiAgICBRUmVj
dCB1bml0ZSggY29uc3QgUVJlY3QgJnIgKSBjb25zdDsKICAgIFFSZWN0IGludGVyc2VjdCggY29u
c3QgUVJlY3QgJnIgKSBjb25zdDsKICAgIGJvb2wgaW50ZXJzZWN0cyggY29uc3QgUVJlY3QgJnIg
KSBjb25zdDsKCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRUmVjdCAmLCBjb25z
dCBRUmVjdCAmICk7CiAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRUmVjdCAmLCBj
b25zdCBRUmVjdCAmICk7Cgpwcml2YXRlOgoKCgoKCgogICAgUUNPT1JEIHgxOwogICAgUUNPT1JE
IHkxOwogICAgUUNPT1JEIHgyOwogICAgUUNPT1JEIHkyOwoKfTsKCiBib29sIG9wZXJhdG9yPT0o
IGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYgKTsKIGJvb2wgb3BlcmF0b3IhPSggY29uc3Qg
UVJlY3QgJiwgY29uc3QgUVJlY3QgJiApOwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwo
IFFEYXRhU3RyZWFtICYsIGNvbnN0IFFSZWN0ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+
KCBRRGF0YVN0cmVhbSAmLCBRUmVjdCAmICk7CgoKCgoKCmlubGluZSBRUmVjdDo6UVJlY3QoIGlu
dCBsZWZ0LCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQgKQp7CiAgICB4MSA9IChRQ09P
UkQpbGVmdDsKICAgIHkxID0gKFFDT09SRCl0b3A7CiAgICB4MiA9IChRQ09PUkQpKGxlZnQrd2lk
dGgtMSk7CiAgICB5MiA9IChRQ09PUkQpKHRvcCtoZWlnaHQtMSk7Cn0KCmlubGluZSBib29sIFFS
ZWN0Ojppc051bGwoKSBjb25zdAp7IHJldHVybiB4MiA9PSB4MS0xICYmIHkyID09IHkxLTE7IH0K
CmlubGluZSBib29sIFFSZWN0Ojppc0VtcHR5KCkgY29uc3QKeyByZXR1cm4geDEgPiB4MiB8fCB5
MSA+IHkyOyB9CgppbmxpbmUgYm9vbCBRUmVjdDo6aXNWYWxpZCgpIGNvbnN0CnsgcmV0dXJuIHgx
IDw9IHgyICYmIHkxIDw9IHkyOyB9CgppbmxpbmUgaW50IFFSZWN0OjpsZWZ0KCkgY29uc3QKeyBy
ZXR1cm4geDE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OnRvcCgpIGNvbnN0CnsgcmV0dXJuIHkxOyB9
CgppbmxpbmUgaW50IFFSZWN0OjpyaWdodCgpIGNvbnN0CnsgcmV0dXJuIHgyOyB9CgppbmxpbmUg
aW50IFFSZWN0Ojpib3R0b20oKSBjb25zdAp7IHJldHVybiB5MjsgfQoKaW5saW5lIFFDT09SRCAm
UVJlY3Q6OnJMZWZ0KCkKeyByZXR1cm4geDE7IH0KCmlubGluZSBRQ09PUkQgJiBRUmVjdDo6clRv
cCgpCnsgcmV0dXJuIHkxOyB9CgppbmxpbmUgUUNPT1JEICYgUVJlY3Q6OnJSaWdodCgpCnsgcmV0
dXJuIHgyOyB9CgppbmxpbmUgUUNPT1JEICYgUVJlY3Q6OnJCb3R0b20oKQp7IHJldHVybiB5Mjsg
fQoKaW5saW5lIGludCBRUmVjdDo6eCgpIGNvbnN0CnsgcmV0dXJuIHgxOyB9CgppbmxpbmUgaW50
IFFSZWN0Ojp5KCkgY29uc3QKeyByZXR1cm4geTE7IH0KCmlubGluZSB2b2lkIFFSZWN0OjpzZXRM
ZWZ0KCBpbnQgcG9zICkKeyB4MSA9IChRQ09PUkQpcG9zOyB9CgppbmxpbmUgdm9pZCBRUmVjdDo6
c2V0VG9wKCBpbnQgcG9zICkKeyB5MSA9IChRQ09PUkQpcG9zOyB9CgppbmxpbmUgdm9pZCBRUmVj
dDo6c2V0UmlnaHQoIGludCBwb3MgKQp7IHgyID0gKFFDT09SRClwb3M7IH0KCmlubGluZSB2b2lk
IFFSZWN0OjpzZXRCb3R0b20oIGludCBwb3MgKQp7IHkyID0gKFFDT09SRClwb3M7IH0KCmlubGlu
ZSB2b2lkIFFSZWN0OjpzZXRYKCBpbnQgeCApCnsgeDEgPSAoUUNPT1JEKXg7IH0KCmlubGluZSB2
b2lkIFFSZWN0OjpzZXRZKCBpbnQgeSApCnsgeTEgPSAoUUNPT1JEKXk7IH0KCmlubGluZSBRUG9p
bnQgUVJlY3Q6OnRvcExlZnQoKSBjb25zdAp7IHJldHVybiBRUG9pbnQoeDEsIHkxKTsgfQoKaW5s
aW5lIFFQb2ludCBRUmVjdDo6Ym90dG9tUmlnaHQoKSBjb25zdAp7IHJldHVybiBRUG9pbnQoeDIs
IHkyKTsgfQoKaW5saW5lIFFQb2ludCBRUmVjdDo6dG9wUmlnaHQoKSBjb25zdAp7IHJldHVybiBR
UG9pbnQoeDIsIHkxKTsgfQoKaW5saW5lIFFQb2ludCBRUmVjdDo6Ym90dG9tTGVmdCgpIGNvbnN0
CnsgcmV0dXJuIFFQb2ludCh4MSwgeTIpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0OjpjZW50ZXIo
KSBjb25zdAp7IHJldHVybiBRUG9pbnQoKHgxK3gyKS8yLCAoeTEreTIpLzIpOyB9CgppbmxpbmUg
aW50IFFSZWN0Ojp3aWR0aCgpIGNvbnN0CnsgcmV0dXJuIHgyIC0geDEgKyAxOyB9CgppbmxpbmUg
aW50IFFSZWN0OjpoZWlnaHQoKSBjb25zdAp7IHJldHVybiB5MiAtIHkxICsgMTsgfQoKaW5saW5l
IFFTaXplIFFSZWN0OjpzaXplKCkgY29uc3QKeyByZXR1cm4gUVNpemUoeDIteDErMSwgeTIteTEr
MSk7IH0KCgppbmxpbmUgYm9vbCBRUmVjdDo6Y29udGFpbnMoIGNvbnN0IFFQb2ludCAmcCwgYm9v
bCBwcm9wZXIgKSBjb25zdAp7CiAgICBpZiAoIHByb3BlciApCiAgICAgICAgcmV0dXJuIHAueCgp
ID4geDEgJiYgcC54KCkgPCB4MiAmJgogICAgICAgICAgICAgICBwLnkoKSA+IHkxICYmIHAueSgp
IDwgeTI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIHAueCgpID49IHgxICYmIHAueCgpIDw9IHgy
ICYmCiAgICAgICAgICAgICAgIHAueSgpID49IHkxICYmIHAueSgpIDw9IHkyOwp9CgoKaW5saW5l
IGJvb2wgUVJlY3Q6OmNvbnRhaW5zKCBpbnQgeCwgaW50IHksIGJvb2wgcHJvcGVyICkgY29uc3QK
ewogICAgaWYgKCBwcm9wZXIgKQogICAgICAgIHJldHVybiB4ID4geDEgJiYgeCA8IHgyICYmCiAg
ICAgICAgICAgICAgIHkgPiB5MSAmJiB5IDwgeTI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIHgg
Pj0geDEgJiYgeCA8PSB4MiAmJgogICAgICAgICAgICAgICB5ID49IHkxICYmIHkgPD0geTI7Cn0K
CiMgMzQgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXJlZ2lvbi5oIiAyIDMKCgoKCmNsYXNz
IFFSZWdpb24KewpwdWJsaWM6CiAgICBlbnVtIFJlZ2lvblR5cGUgeyBSZWN0YW5nbGUsIEVsbGlw
c2UgfTsKCiAgICBRUmVnaW9uKCk7CiAgICBRUmVnaW9uKCBpbnQgeCwgaW50IHksIGludCB3LCBp
bnQgaCwgUmVnaW9uVHlwZSA9IFJlY3RhbmdsZSApOwogICAgUVJlZ2lvbiggY29uc3QgUVJlY3Qg
JiwgUmVnaW9uVHlwZSA9IFJlY3RhbmdsZSApOwogICAgUVJlZ2lvbiggY29uc3QgUVBvaW50QXJy
YXkgJiwgYm9vbCB3aW5kaW5nPUZBTFNFICk7CiAgICBRUmVnaW9uKCBjb25zdCBRUmVnaW9uICYg
KTsKICAgIFFSZWdpb24oIGNvbnN0IFFCaXRtYXAgJiApOwogICB+UVJlZ2lvbigpOwogICAgUVJl
Z2lvbiAmb3BlcmF0b3I9KCBjb25zdCBRUmVnaW9uICYgKTsKCiAgICBib29sIGlzTnVsbCgpIGNv
bnN0OwogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CgogICAgYm9vbCBjb250YWlucyggY29uc3Qg
UVBvaW50ICZwICkgY29uc3Q7CiAgICBib29sIGNvbnRhaW5zKCBjb25zdCBRUmVjdCAmciApIGNv
bnN0OwoKICAgIHZvaWQgdHJhbnNsYXRlKCBpbnQgZHgsIGludCBkeSApOwoKICAgIFFSZWdpb24g
dW5pdGUoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBpbnRlcnNlY3QoIGNv
bnN0IFFSZWdpb24gJikgY29uc3Q7CiAgICBRUmVnaW9uIHN1YnRyYWN0KCBjb25zdCBRUmVnaW9u
ICYgKSBjb25zdDsKICAgIFFSZWdpb24gZW9yKCBjb25zdCBRUmVnaW9uICYgKSBjb25zdDsKCiAg
ICBRUmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKICAgIFFBcnJheTxRUmVjdD4gcmVjdHMoKSBj
b25zdDsKICAgIHZvaWQgc2V0UmVjdHMoIGNvbnN0IFFSZWN0ICosIGludCApOwoKICAgIFFSZWdp
b24gb3BlcmF0b3J8KCBjb25zdCBRUmVnaW9uICYgKSBjb25zdDsKICAgIFFSZWdpb24gb3BlcmF0
b3IrKCBjb25zdCBRUmVnaW9uICYgKSBjb25zdDsKICAgIFFSZWdpb24gb3BlcmF0b3ImKCBjb25z
dCBRUmVnaW9uICYgKSBjb25zdDsKICAgIFFSZWdpb24gb3BlcmF0b3ItKCBjb25zdCBRUmVnaW9u
ICYgKSBjb25zdDsKICAgIFFSZWdpb24gb3BlcmF0b3JeKCBjb25zdCBRUmVnaW9uICYgKSBjb25z
dDsKICAgIFFSZWdpb24mIG9wZXJhdG9yfD0oIGNvbnN0IFFSZWdpb24gJiApOwogICAgUVJlZ2lv
biYgb3BlcmF0b3IrPSggY29uc3QgUVJlZ2lvbiAmICk7CiAgICBRUmVnaW9uJiBvcGVyYXRvciY9
KCBjb25zdCBRUmVnaW9uICYgKTsKICAgIFFSZWdpb24mIG9wZXJhdG9yLT0oIGNvbnN0IFFSZWdp
b24gJiApOwogICAgUVJlZ2lvbiYgb3BlcmF0b3JePSggY29uc3QgUVJlZ2lvbiAmICk7CgogICAg
Ym9vbCBvcGVyYXRvcj09KCBjb25zdCBRUmVnaW9uICYgKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0
b3IhPSggY29uc3QgUVJlZ2lvbiAmciApIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgIHsg
cmV0dXJuICEob3BlcmF0b3I9PShyKSk7IH0KCgoKCiAgICBSZWdpb24gaGFuZGxlKCkgY29uc3Qg
eyByZXR1cm4gZGF0YS0+cmduOyB9CiMgOTYgIi91c3IvbGliL3F0LTIuMi4wL2luY2x1ZGUvcXJl
Z2lvbi5oIiAzCiAgICBmcmllbmQgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFt
ICYsIGNvbnN0IFFSZWdpb24gJiApOwogICAgZnJpZW5kIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+
KCBRRGF0YVN0cmVhbSAmLCBRUmVnaW9uICYgKTsKCnByaXZhdGU6CiAgICBRUmVnaW9uKCBib29s
ICk7CiAgICBRUmVnaW9uIGNvcHkoKSBjb25zdDsKICAgIHZvaWQgZGV0YWNoKCk7CgoKCiAgICB2
b2lkIGV4ZWMoIGNvbnN0IFFCeXRlQXJyYXkgJiwgaW50IHZlciA9IDAgKTsKICAgIHN0cnVjdCBR
UmVnaW9uRGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKCgoKICAgICAgICBSZWdpb24gcmduOwoKCgoK
CiAgICAgICAgYm9vbCBpc19udWxsOwogICAgfSAqZGF0YTsKfTsKCgojIDEzOSAiL3Vzci9saWIv
cXQtMi4yLjAvaW5jbHVkZS9xcmVnaW9uLmgiIDMKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBR
RGF0YVN0cmVhbSAmLCBjb25zdCBRUmVnaW9uICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+
KCBRRGF0YVN0cmVhbSAmLCBRUmVnaW9uICYgKTsKIyAzNCAiL3Vzci9saWIvcXQtMi4yLjAvaW5j
bHVkZS9xZXZlbnQuaCIgMiAzCgoKIyAzNyAiL3Vzci9saWIvcXQtMi4yLjAvaW5jbHVkZS9xbWlt
ZS5oIiAxIDMKY2xhc3MgUU1pbWVTb3VyY2UgewpwdWJsaWM6CiAgICB2aXJ0dWFsIH5RTWltZVNv
dXJjZSgpOwogICAgdmlydHVhbCBjb25zdCBjaGFyKiBmb3JtYXQoIGludCBuID0gMCApIGNvbnN0
ID0gMDsKICAgIHZpcnR1YWwgYm9vbCBwcm92aWRlcyggY29uc3QgY2hhciogKSBjb25zdDsKICAg
IHZpcnR1YWwgUUJ5dGVBcnJheSBlbmNvZGVkRGF0YSggY29uc3QgY2hhciogKSBjb25zdCA9IDA7
Cn07CgpjbGFzcyBRTWltZVNvdXJjZUZhY3RvcnlEYXRhOwpjbGFzcyBRU3RyaW5nTGlzdDsKCmNs
YXNzIFFNaW1lU291cmNlRmFjdG9yeSB7CnB1YmxpYzoKICAgIFFNaW1lU291cmNlRmFjdG9yeSgp
OwogICAgdmlydHVhbCB+UU1pbWVTb3VyY2VGYWN0b3J5KCk7CgogICAgc3RhdGljIFFNaW1lU291
cmNlRmFjdG9yeSogZGVmYXVsdEZhY3RvcnkoKTsKICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRG
YWN0b3J5KCBRTWltZVNvdXJjZUZhY3RvcnkqICk7CgogICAgdmlydHVhbCBjb25zdCBRTWltZVNv
dXJjZSogZGF0YShjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSkgY29uc3Q7CiAgICB2aXJ0dWFsIFFT
dHJpbmcgbWFrZUFic29sdXRlKGNvbnN0IFFTdHJpbmcmIGFic19vcl9yZWxfbmFtZSwgY29uc3Qg
UVN0cmluZyYgY29udGV4dCkgY29uc3Q7CiAgICBjb25zdCBRTWltZVNvdXJjZSogZGF0YShjb25z
dCBRU3RyaW5nJiBhYnNfb3JfcmVsX25hbWUsIGNvbnN0IFFTdHJpbmcmIGNvbnRleHQpIGNvbnN0
OwoKICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KCBjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSwgY29u
c3QgUVN0cmluZyYgdGV4dCApOwogICAgdmlydHVhbCB2b2lkIHNldEltYWdlKCBjb25zdCBRU3Ry
aW5nJiBhYnNfbmFtZSwgY29uc3QgUUltYWdlJiBpbSApOwogICAgdmlydHVhbCB2b2lkIHNldFBp
eG1hcCggY29uc3QgUVN0cmluZyYgYWJzX25hbWUsIGNvbnN0IFFQaXhtYXAmIHBtICk7CiAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YSggY29uc3QgUVN0cmluZyYgYWJzX25hbWUsIFFNaW1lU291cmNl
KiBkYXRhICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZVBhdGgoIGNvbnN0IFFTdHJpbmdMaXN0
JiApOwogICAgdmlydHVhbCBRU3RyaW5nTGlzdCBmaWxlUGF0aCgpIGNvbnN0OwogICAgdm9pZCBh
ZGRGaWxlUGF0aCggY29uc3QgUVN0cmluZyYgKTsKICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlbnNp
b25UeXBlKCBjb25zdCBRU3RyaW5nJiBleHQsIGNvbnN0IGNoYXIqIG1pbWV0eXBlICk7Cgpwcml2
YXRlOgogICAgUU1pbWVTb3VyY2VGYWN0b3J5RGF0YSogZDsKfTsKCiMgMzYgIi91c3IvbGliL3F0
LTIuMi4wL2luY2x1ZGUvcWV2ZW50LmgiIDIgMwoKCgpjbGFzcyBRRXZlbnQ6IHB1YmxpYyBRdAp7
CnB1YmxpYzoKICAgIGVudW0gVHlwZSB7CgoKCgoKCiAgICAgICAgTm9uZSA9IDAsCgoKICAgICAg
ICBUaW1lciA9IDEsCiAgICAgICAgTW91c2VCdXR0b25QcmVzcyA9IDIsCiAgICAgICAgTW91c2VC
dXR0b25SZWxlYXNlID0gMywKICAgICAgICBNb3VzZUJ1dHRvbkRibENsaWNrPSA0LAogICAgICAg
IE1vdXNlTW92ZSA9IDUsCiAgICAgICAgS2V5UHJlc3MgPSA2LAogICAgICAgIEtleVJlbGVhc2Ug
PSA3LAogICAgICAgIEZvY3VzSW4gPSA4LAogICAgICAgIEZvY3VzT3V0ID0gOSwKICAgICAgICBF
bnRlciA9IDEwLAogICAgICAgIExlYXZlID0gMTEsCiAgICAgICAgUGFpbnQgPSAxMiwKICAgICAg
ICBNb3ZlID0gMTMsCiAgICAgICAgUmVzaXplID0gMTQsCiAgICAgICAgQ3JlYXRlID0gMTUsCiAg
ICAgICAgRGVzdHJveSA9IDE2LAogICAgICAgIFNob3cgPSAxNywKICAgICAgICBIaWRlID0gMTgs
CiAgICAgICAgQ2xvc2UgPSAxOSwKICAgICAgICBRdWl0ID0gMjAsCiAgICAgICAgUmVwYXJlbnQg
PSAyMSwKICAgICAgICBTaG93TWluaW1pemVkID0gMjIsCiAgICAgICAgU2hvd05vcm1hbCA9IDIz
LAogICAgICAgIFdpbmRvd0FjdGl2YXRlID0gMjQsCiAgICAgICAgV2luZG93RGVhY3RpdmF0ZSA9
IDI1LAogICAgICAgIFNob3dUb1BhcmVudCA9IDI2LAogICAgICAgIEhpZGVUb1BhcmVudCA9IDI3
LAogICAgICAgIFNob3dNYXhpbWl6ZWQgPSAyOCwKICAgICAgICBBY2NlbCA9IDMwLAogICAgICAg
IFdoZWVsID0gMzEsCiAgICAgICAgQWNjZWxBdmFpbGFibGUgPSAzMiwKICAgICAgICBDYXB0aW9u
Q2hhbmdlID0gMzMsCiAgICAgICAgSWNvbkNoYW5nZSA9IDM0LAogICAgICAgIFBhcmVudEZvbnRD
aGFuZ2UgPSAzNSwKICAgICAgICBBcHBsaWNhdGlvbkZvbnRDaGFuZ2UgPSAzNiwKICAgICAgICBQ
YXJlbnRQYWxldHRlQ2hhbmdlID0gMzcsCiAgICAgICAgQXBwbGljYXRpb25QYWxldHRlQ2hhbmdl
ID0gMzgsCiAgICAgICAgQ2xpcGJvYXJkID0gNDAsCiAgICAgICAgU3BlZWNoID0gNDIsCiAgICAg
ICAgU29ja0FjdCA9IDUwLAogICAgICAgIERyYWdFbnRlciA9IDYwLAogICAgICAgIERyYWdNb3Zl
ID0gNjEsCiAgICAgICAgRHJhZ0xlYXZlID0gNjIsCiAgICAgICAgRHJvcCA9IDYzLAogICAgICAg
IERyYWdSZXNwb25zZSA9IDY0LAogICAgICAgIENoaWxkSW5zZXJ0ZWQgPSA3MCwKICAgICAgICBD
aGlsZFJlbW92ZWQgPSA3MSwKICAgICAgICBMYXlvdXRIaW50ID0gNzIsCiAgICAgICAgU2hvd1dp
bmRvd1JlcXVlc3QgPSA3MywKICAgICAgICBBY3RpdmF0ZUNvbnRyb2wgPSA4MCwKICAgICAgICBE
ZWFjdGl2YXRlQ29udHJvbCA9IDgxLAogICAgICAgIFVzZXIgPSAxMDAwCiAgICB9OwoKICAgIFFF
dmVudCggVHlwZSB0eXBlICkgOiB0KHR5cGUpLCBwb3N0ZWQoRkFMU0UpIHt9CiAgICB2aXJ0dWFs
IH5RRXZlbnQoKTsKICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHQ7IH0KcHJvdGVjdGVk
OgogICAgVHlwZSB0Owpwcml2YXRlOgogICAgYm9vbCBwb3N0ZWQ7CgoKCgogICAgZnJpZW5kIGNs
YXNzIFFBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBjbGFzcyBRQmFzZUFwcGxpY2F0aW9uOwp9OwoK
CmNsYXNzIFFUaW1lckV2ZW50IDogcHVibGljIFFFdmVudAp7CnB1YmxpYzoKICAgIFFUaW1lckV2
ZW50KCBpbnQgdGltZXJJZCApCiAgICAgICAgOiBRRXZlbnQoVGltZXIpLCBpZCh0aW1lcklkKSB7
fQogICAgaW50IHRpbWVySWQoKSBjb25zdCB7IHJldHVybiBpZDsgfQpwcm90ZWN0ZWQ6CiAgICBp
bnQgaWQ7Cn07CgoKY2xhc3MgUU1vdXNlRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgog
ICAgUU1vdXNlRXZlbnQoIFR5cGUgdHlwZSwgY29uc3QgUVBvaW50ICZwb3MsIGludCBidXR0b24s
IGludCBzdGF0ZSApOwoKICAgIFFNb3VzZUV2ZW50KCBUeXBlIHR5cGUsIGNvbnN0IFFQb2ludCAm
cG9zLCBjb25zdCBRUG9pbnQmZ2xvYmFsUG9zLAogICAgICAgICAgICAgICAgIGludCBidXR0b24s
IGludCBzdGF0ZSApCiAgICAgICAgOiBRRXZlbnQodHlwZSksIHAocG9zKSwgZyhnbG9iYWxQb3Mp
LCBiKGJ1dHRvbikscygodXNob3J0KXN0YXRlKSB7fTsKCiAgICBjb25zdCBRUG9pbnQgJnBvcygp
IGNvbnN0IHsgcmV0dXJuIHA7IH0KICAgIGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zKCkgY29uc3Qg
eyByZXR1cm4gZzsgfQogICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBwLngoKTsgfQogICAgaW50
IHkoKSBjb25zdCB7IHJldHVybiBwLnkoKTsgfQogICAgaW50IGdsb2JhbFgoKSBjb25zdCB7IHJl
dHVybiBnLngoKTsgfQogICAgaW50IGdsb2JhbFkoKSBjb25zdCB7IHJldHVybiBnLnkoKTsgfQog
ICAgQnV0dG9uU3RhdGUgYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gKEJ1dHRvblN0YXRlKSBiOyB9
CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIChCdXR0b25TdGF0ZSkgczsg
fQogICAgQnV0dG9uU3RhdGUgc3RhdGVBZnRlcigpIGNvbnN0Owpwcm90ZWN0ZWQ6CiAgICBRUG9p
bnQgcDsKICAgIFFQb2ludCBnOwogICAgaW50IGI7CiAgICB1c2hvcnQgczsKfTsKCgoKY2xhc3Mg
UVdoZWVsRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUVdoZWVsRXZlbnQoIGNv
bnN0IFFQb2ludCAmcG9zLCBpbnQgZGVsdGEsIGludCBzdGF0ZSApOwogICAgUVdoZWVsRXZlbnQo
IGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUG9pbnQmIGdsb2JhbFBvcywgaW50IGRlbHRhLCBp
bnQgc3RhdGUgKQogICAgICAgIDogUUV2ZW50KFdoZWVsKSwgcChwb3MpLCBnKGdsb2JhbFBvcyks
IGQoZGVsdGEpLCBzKCh1c2hvcnQpc3RhdGUpLAogICAgICAgICAgYWNjcHQoVFJVRSkge30KICAg
IGludCBkZWx0YSgpIGNvbnN0IHsgcmV0dXJuIGQ7IH0KICAgIGNvbnN0IFFQb2ludCAmcG9zKCkg
Y29uc3QgeyByZXR1cm4gcDsgfQogICAgY29uc3QgUVBvaW50ICZnbG9iYWxQb3MoKSBjb25zdCB7
IHJldHVybiBnOyB9CiAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIHAueCgpOyB9CiAgICBpbnQg
eSgpIGNvbnN0IHsgcmV0dXJuIHAueSgpOyB9CiAgICBpbnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0
dXJuIGcueCgpOyB9CiAgICBpbnQgZ2xvYmFsWSgpIGNvbnN0IHsgcmV0dXJuIGcueSgpOyB9CiAg
ICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAg
ICBib29sIGlzQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdDsgfQogICAgdm9pZCBhY2Nl
cHQoKSB7IGFjY3B0ID0gVFJVRTsgfQogICAgdm9pZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7
IH0KcHJvdGVjdGVkOgogICAgUVBvaW50IHA7CiAgICBRUG9pbnQgZzsKICAgIGludCBkOwogICAg
dXNob3J0IHM7CiAgICBib29sIGFjY3B0Owp9OwoKCmNsYXNzIFFLZXlFdmVudCA6IHB1YmxpYyBR
RXZlbnQKewpwdWJsaWM6CiAgICBRS2V5RXZlbnQoIFR5cGUgdHlwZSwgaW50IGtleSwgaW50IGFz
Y2lpLCBpbnQgc3RhdGUsCiAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nJiB0ZXh0PVFTdHJp
bmc6Om51bGwsIGJvb2wgYXV0b3JlcD1GQUxTRSwgdXNob3J0IGNvdW50PTEgKQogICAgICAgIDog
UUV2ZW50KHR5cGUpLCB0eHQodGV4dCksIGsoKHVzaG9ydClrZXkpLCBzKCh1c2hvcnQpc3RhdGUp
LAogICAgICAgICAgICBhKCh1Y2hhcilhc2NpaSksIGFjY3B0KFRSVUUpLCBhdXRvcihhdXRvcmVw
KSwgYyhjb3VudCkge30KICAgIGludCBrZXkoKSBjb25zdCB7IHJldHVybiBrOyB9CiAgICBpbnQg
YXNjaWkoKSBjb25zdCB7IHJldHVybiBhOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZUFmdGVyKCkg
Y29uc3Q7CiAgICBib29sIGlzQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdDsgfQogICAg
UVN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gdHh0OyB9CiAgICBib29sIGlzQXV0b1JlcGVh
dCgpIGNvbnN0IHsgcmV0dXJuIGF1dG9yOyB9CiAgICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVy
biBpbnQoYyk7IH0KICAgIHZvaWQgYWNjZXB0KCkgeyBhY2NwdCA9IFRSVUU7IH0KICAgIHZvaWQg
aWdub3JlKCkgeyBhY2NwdCA9IEZBTFNFOyB9Cgpwcm90ZWN0ZWQ6CiAgICBRU3RyaW5nIHR4dDsK
ICAgIHVzaG9ydCBrLCBzOwogICAgdWNoYXIgYTsKICAgIHVpbnQgYWNjcHQ6MTsKICAgIHVpbnQg
YXV0b3I6MTsKICAgIHVzaG9ydCBjOwp9OwoKCmNsYXNzIFFGb2N1c0V2ZW50IDogcHVibGljIFFF
dmVudAp7CnB1YmxpYzoKCiAgICBRRm9jdXNFdmVudCggVHlwZSB0eXBlICkKICAgICAgICA6IFFF
dmVudCh0eXBlKSB7fQoKICAgIGJvb2wgZ290Rm9jdXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gRm9jdXNJbjsgfQogICAgYm9vbCBsb3N0Rm9jdXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gRm9jdXNPdXQ7IH0KCiAgICBlbnVtIFJlYXNvbiB7IE1vdXNlLCBUYWIsIEFjdGl2ZVdpbmRv
dywgUG9wdXAsIFNob3J0Y3V0LCBPdGhlciB9OwogICAgc3RhdGljIFJlYXNvbiByZWFzb24oKTsK
ICAgIHN0YXRpYyB2b2lkIHNldFJlYXNvbiggUmVhc29uIHJlYXNvbiApOwogICAgc3RhdGljIHZv
aWQgcmVzZXRSZWFzb24oKTsKCnByaXZhdGU6CiAgICBzdGF0aWMgUmVhc29uIG1fcmVhc29uOwog
ICAgc3RhdGljIFJlYXNvbiBwcmV2X3JlYXNvbjsKfTsKCgpjbGFzcyBRUGFpbnRFdmVudCA6IHB1
YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRUGFpbnRFdmVudCggY29uc3QgUVJlZ2lvbiYgcGFp
bnRSZWdpb24sIGJvb2wgZXJhc2VkID0gVFJVRSkKICAgICAgICA6IFFFdmVudChQYWludC