public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/9900: map coloring failure
@ 2003-03-22 18:47 bangerth
  0 siblings, 0 replies; 2+ messages in thread
From: bangerth @ 2003-03-22 18:47 UTC (permalink / raw)
  To: eezyy, gcc-bugs, gcc-prs, nobody

Synopsis: map coloring failure

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Sat Mar 22 18:47:57 2003
State-Changed-Why:
    I can compile your code on an x86 linux box, but you
    neither said which platform you are on nor which flags
    you used when you encountered the compiler error. Can
    you fill in these gaps for us?
    
    Thanks
     Wolfgang

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


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

* optimization/9900: map coloring failure
@ 2003-03-02  3:46 eezyy
  0 siblings, 0 replies; 2+ messages in thread
From: eezyy @ 2003-03-02  3:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         9900
>Category:       optimization
>Synopsis:       map coloring failure
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Mar 02 03:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     me
>Release:        gcc version 3.4 20030301 cvs
>Organization:
>Environment:

>Description:
tried to compile binutils, got this:
readelf.c: In function `get_dynamic_flags':
readelf.c:4603: internal compiler error: Didn't find a coloring.
preprocessed source attached
>How-To-Repeat:

>Fix:

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

IyAxICJyZWFkZWxmLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAx
ICJyZWFkZWxmLmMiCiMgMjUgInJlYWRlbGYuYyIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzCiMgMzIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
bnUvc3R1YnMuaCIgMSAzCiMgMzIxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzcg
Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzCiMgNjUgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg
MwoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9u
LCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAo
aW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9f
YXNzZXJ0aW9uLCBjb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX2xpbmUpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgojIDI2ICJyZWFkZWxmLmMiIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjEzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNp
emVfdDsKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25n
OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50
IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRl
ZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0
eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsK
dHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVm
IF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3Vf
aW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90
IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5
cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0
eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxb
Ml07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAq
X19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBs
b25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVm
IGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYg
aW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoK
CnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxr
Y250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRl
ZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRf
dDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19v
ZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1
ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2No
ZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAg
aW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1
Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MK
ewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3Nj
aGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2Nv
cGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAq
X19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9w
dGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21f
cmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAg
aW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhy
ZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRo
cmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBl
ZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2Nr
IF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3Jp
dGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2Ny
IF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7
Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5k
OwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZv
bGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50
IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9i
YXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9i
YXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90Owoj
IDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9z
aG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9s
b25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90
Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoK
Cgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7
CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoK
Cgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7
CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoK
CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90
OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7
CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJf
dDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCiMgNzQgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKCgoKIyA5MiAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyAxMDQgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMzMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNv
bmRzX3Q7CgoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDE0NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
CnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsK
dHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsK
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVf
aW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50
IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTIg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIg
MSAzCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2VuZGlhbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAyMTMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICog
c2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90
OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMTE2ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxv
bmcgaW50IHR2X25zZWM7CiAgfTsKIyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAg
IF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxvbmcg
aW50IF9fZmRfbWFzazsKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2Yg
KF9fZmRfbWFzaykpXTsKCgoKCgogIH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBm
ZF9tYXNrOwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoKCgpleHRlcm4g
aW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAg
ICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAg
ICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAg
ICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGlu
dCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAg
ICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAg
ICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAg
ICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoK
CiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtj
bnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlw
ZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTcgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtj
bnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7
CgoKCiMgMjcgInJlYWRlbGYuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMK
IyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDk2ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAxIDMKIyAz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0CiAgewogICAgX19kZXZf
dCBzdF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3Rf
aW5vOwoKCgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAg
IF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoK
ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgoKICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwoK
CgogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7
CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK
ICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwoK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkNTsKCgoKICB9OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsK
ICAgIHVuc2lnbmVkIGludCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9k
ZV90IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsK
ICAgIF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50
IF9fcGFkMjsKICAgIF9fb2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6
ZTsKCiAgICBfX2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAg
ICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAg
dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9Owoj
IDk5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoK
ZXh0ZXJuIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgOwojIDIxOSAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0NjQgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpf
X3Jlc3RyaWN0IF9fYnVmKSA7CmV4dGVybiBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBz
dGF0NjQgKl9fYnVmKSA7CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CiMgMjQxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxz
dGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4gaW50IGNo
bW9kIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CgoKCmV4dGVybiBp
bnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIF9fbW9k
ZV90IHVtYXNrIChfX21vZGVfdCBfX21hc2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBnZXR1bWFz
ayAodm9pZCkgOwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19t
b2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICA7CgoKCgpleHRlcm4gaW50
IG1rZmlmbyAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwojIDMwNiAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVy
LCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CmV4dGVybiBpbnQgX194
c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBfX2x4c3RhdCAoaW50
IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CiMgMzMwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIg
MwpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qg
c3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJuIGludCBfX3hzdGF0NjQgKGludCBfX3Zl
ciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3Zlciwg
X19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
dGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
X19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0IChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpf
X3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJu
IF9fbHhzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBp
bnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9f
ZnhzdGF0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1r
bm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsKICByZXR1cm4gX194bWtub2QgKDEsIF9f
cGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2
NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hzdGF0NjQgKDMsIF9fcGF0aCwg
X19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdDY0IChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQg
Kl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0
NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYp
Owp9CgoKCgoKIyAyOCAicmVhZGVsZi5jIiAyCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDQ0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwojIDUzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNs
dWRlL3N0ZGlvLmgiIDMKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoKCgoKCiMgNzEg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIg
Mwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgODEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzMjUgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM1NCAiL3Vzci9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBl
ZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5o
IiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv
bgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsK
fSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVk
ZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0df
ZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90
IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2djb252
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2MyAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKCiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMK
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAg
X19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NP
TlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwK
ICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBf
X0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoK
CmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJP
UlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3Rl
cCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50
LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n
Y29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBl
ZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2Nv
bnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5z
X2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVj
dCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAq
X19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFy
ICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk
ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK
ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0
YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK
ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf
X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252
X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz
OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq
X19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVu
aW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0
IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsK
ICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2lu
Y2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19n
bnVjX3ZhX2xpc3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjIgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMg
MTcyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoK
CgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVj
dCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTk1ICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9f
Y29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07
CiMgMjYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBf
ZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAg
Y2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9f
d3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwog
IGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19i
YWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpf
bWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwoKCgog
IGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0
IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0
YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMxMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2b2lkICpf
X3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAt
IDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9f
RklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1
cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rk
b3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKIyAzNTAg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAo
dm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hh
ciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pOwoK
CgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90
ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19j
b29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsK
dHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9f
aW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4g
Y29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9m
biAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAg
X19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRl
ZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVj
dCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19yZWFkX3dyaXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190
IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lP
X0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dv
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMgNDMyICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9J
T19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7
CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0
ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVu
bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9f
RklMRSAqKSA7CiMgNDYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192
ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7
CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hh
ciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7
CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7
CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoK
ZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQs
IGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0
X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICop
IDsKIyA4MiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9z
dGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwoj
IDk1ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlv
LmgiIDMKCgp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgoKdHlwZWRlZiBfR19mcG9zNjRf
dCBmcG9zNjRfdDsKIyAxNDcgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40
L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAx
IDMKIyAxNDggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwpleHRlcm4gc3Ry
dWN0IF9JT19GSUxFICpzdGRvdXQ7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGVycjsKCgoK
CgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVy
biBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7
CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTgwICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KnRtcG5hbSAoY2hhciAqX19zKSA7CgoKCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIDsK
CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDIwMiAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBj
aGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQog
ICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKZXh0ZXJuIGludCBmY2xvc2Ug
KEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgMjQ4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42
NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJl
b3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxF
ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4g
RklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1
bmNzKSA7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwg
X19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0g
KGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVsb2MpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVm
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoK
CmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9f
bikgOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4
dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVy
biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKCgpleHRlcm4gaW50
IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVy
biBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgMCkpKTsKCgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAq
Kl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
bXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0
ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CgoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywg
MiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBpbnQgZmdl
dGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsK
CgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50
IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChp
bnQgX19jKSA7CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAo
aW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAg
IDsKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKmZn
ZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgNDcwICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQg
X19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgpl
eHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRj
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3
cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKCgoK
CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2Nr
ZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQg
X19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0
cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwoKIyA1MzcgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3do
ZW5jZSkgOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwojIDU1MyAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAz
CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190
ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19z
dHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDU3MiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZnNl
ZWtvNjQgKEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgOwpl
eHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZn
ZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3Qg
X19wb3MpCiAgICAgOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29u
c3QgZnBvczY0X3QgKl9fcG9zKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQg
ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N5c19lcnJsaXN0LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0
cy9zeXNfZXJybGlzdC5oIiAzCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJu
IF9fY29uc3QgY2hhciAqX19jb25zdCBfc3lzX2Vycmxpc3RbXTsKIyA2MDkgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgpleHRl
cm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29u
c3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50
IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hh
ciAqX19zKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgOwoKCgoKc3Ry
dWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sg
Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYg
KHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZs
b2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CiMgNjgzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRl
L3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICBy
ZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4g
KChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAo
X19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChz
dGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChz
dGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1
dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxvY2tl
ZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9f
d3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19z
dHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGlu
dApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBj
aGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4g
X19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rk
b3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJm
bG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
c3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lubGlu
ZSBfX3NzaXplX3QKZ2V0bGluZSAoY2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuIF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19uLCAnXG4nLCBf
X3N0cmVhbSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
CnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDY4NCAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAy
IDMKCgoKIyAyOSAicmVhZGVsZi5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMg
MzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwoj
IDQzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKCgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91
cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0bV93
ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9m
ZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoKCgoKCgoKCnN0cnVjdCBpdGltZXJz
cGVjCiAgewogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVz
cGVjIGl0X3ZhbHVlOwogIH07CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE3NiAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCgpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9pZCkgOwoKCmV4dGVybiB0aW1l
X3QgdGltZSAodGltZV90ICpfX3RpbWVyKSA7CgoKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGlt
ZV90IF9fdGltZTEsIHRpbWVfdCBfX3RpbWUwKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gdGltZV90IG1rdGltZSAoc3RydWN0IHRtICpfX3RwKSA7CgoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJp
Y3QgX190cCkgOwoKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICA7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
eGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0
cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sx
M107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKCgogIGNvbnN0
IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90OwojIDIxMiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMiAzCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2xvY2FsZV90IF9fbG9jKSA7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChf
X2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9y
IChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKZXh0ZXJuIHN0cnVjdCB0
bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoK
CgoKCmV4dGVybiBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgOwoKCmV4
dGVybiBjaGFyICpjdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKCgoKCmV4dGVy
biBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4g
Y2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFy
ICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190
aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0
ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9u
ZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMzA3
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0g
Kl9fdHApIDsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoK
ZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCgpleHRlcm4gaW50IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVxdWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVtYWluaW5nKSA7CgoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9j
a19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGlt
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVy
biBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3RwKQogICAgIDsKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNs
b2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNw
dWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVy
biBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGlu
dCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9z
ZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9f
b3ZhbHVlKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwg
c3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0
b3ZlcnJ1biAodGltZXJfdCBfX3RpbWVyaWQpIDsKIyAzNzggIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRl
IChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSA7CiMgMzkzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CmV4dGVybiBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7
CgoKCiMgMzAgInJlYWRlbGYuYyIgMgojIDM5ICJyZWFkZWxmLmMiCiMgMSAiLi4vYmZkL2JmZC5o
IiAxCiMgMzggIi4uL2JmZC9iZmQuaCIKIyAxICIuLi9pbmNsdWRlL2Fuc2lkZWNsLmgiIDEKIyAz
OSAiLi4vYmZkL2JmZC5oIiAyCiMgMSAiLi4vaW5jbHVkZS9zeW1jYXQuaCIgMQojIDQwICIuLi9i
ZmQvYmZkLmgiIDIKIyA3OSAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHN0cnVjdCBiZmQgYmZkOwoj
IDkwICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgaW50IGJmZF9ib29sZWFuOwojIDEzMCAiLi4vYmZk
L2JmZC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBiZmRfdm1hOwp0eXBlZGVmIGxvbmcg
bG9uZyBiZmRfc2lnbmVkX3ZtYTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgYmZkX3NpemVf
dHlwZTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgc3ltdmFsdWU7CiMgMTc5ICIuLi9iZmQv
YmZkLmgiCnR5cGVkZWYgYmZkX3NpZ25lZF92bWEgZmlsZV9wdHI7CnR5cGVkZWYgYmZkX3ZtYSB1
ZmlsZV9wdHI7CgpleHRlcm4gdm9pZCBiZmRfc3ByaW50Zl92bWEKICAoYmZkICosIGNoYXIgKiwg
YmZkX3ZtYSk7CmV4dGVybiB2b2lkIGJmZF9mcHJpbnRmX3ZtYQogIChiZmQgKiwgdm9pZCAqLCBi
ZmRfdm1hKTsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IGZsYWd3b3JkOwp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgYmZkX2J5dGU7CgoKCnR5cGVkZWYgZW51bSBiZmRfZm9ybWF0CnsKICBiZmRfdW5r
bm93biA9IDAsCiAgYmZkX29iamVjdCwKICBiZmRfYXJjaGl2ZSwKICBiZmRfY29yZSwKICBiZmRf
dHlwZV9lbmQKfQpiZmRfZm9ybWF0OwojIDI2OCAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgc3ltaW5kZXg7CgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgcmVsb2NfaG93dG9fc3Ry
dWN0IHJlbG9jX2hvd3RvX3R5cGU7CiMgMjkwICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgc3RydWN0
IGNhcnN5bQp7CiAgY2hhciAqbmFtZTsKICBmaWxlX3B0ciBmaWxlX29mZnNldDsKfQpjYXJzeW07
CgoKCnN0cnVjdCBvcmwKewogIGNoYXIgKipuYW1lOwogIHVuaW9uCiAgewogICAgZmlsZV9wdHIg
cG9zOwogICAgYmZkICphYmZkOwogIH0gdTsKICBpbnQgbmFtaWR4Owp9OwoKCnR5cGVkZWYgc3Ry
dWN0IGxpbmVub19jYWNoZV9lbnRyeQp7CiAgdW5zaWduZWQgaW50IGxpbmVfbnVtYmVyOwogIHVu
aW9uCiAgewogICAgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqc3ltOwogICAgYmZkX3ZtYSBv
ZmZzZXQ7CiAgfSB1Owp9CmFsZW50OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBzZWMgKnNlY19wdHI7
CiMgMzQ3ICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgc3RydWN0IHN0YXQgc3RhdF90eXBlOwoKdHlw
ZWRlZiBlbnVtIGJmZF9wcmludF9zeW1ib2wKewogIGJmZF9wcmludF9zeW1ib2xfbmFtZSwKICBi
ZmRfcHJpbnRfc3ltYm9sX21vcmUsCiAgYmZkX3ByaW50X3N5bWJvbF9hbGwKfSBiZmRfcHJpbnRf
c3ltYm9sX3R5cGU7CgoKCnR5cGVkZWYgc3RydWN0IF9zeW1ib2xfaW5mbwp7CiAgc3ltdmFsdWUg
dmFsdWU7CiAgY2hhciB0eXBlOwogIGNvbnN0IGNoYXIgKm5hbWU7CiAgdW5zaWduZWQgY2hhciBz
dGFiX3R5cGU7CiAgY2hhciBzdGFiX290aGVyOwogIHNob3J0IHN0YWJfZGVzYzsKICBjb25zdCBj
aGFyICpzdGFiX25hbWU7Cn0gc3ltYm9sX2luZm87CgoKCmV4dGVybiBjb25zdCBjaGFyICpiZmRf
Z2V0X3N0YWJfbmFtZQogIChpbnQpOwoKCgoKCgpzdHJ1Y3QgYmZkX2hhc2hfZW50cnkKewoKICBz
dHJ1Y3QgYmZkX2hhc2hfZW50cnkgKm5leHQ7CgogIGNvbnN0IGNoYXIgKnN0cmluZzsKCgogIHVu
c2lnbmVkIGxvbmcgaGFzaDsKfTsKCgoKc3RydWN0IGJmZF9oYXNoX3RhYmxlCnsKCiAgc3RydWN0
IGJmZF9oYXNoX2VudHJ5ICoqdGFibGU7CgogIHVuc2lnbmVkIGludCBzaXplOwoKCgoKCgoKICBz
dHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqbmV3ZnVuYykKICAgIChzdHJ1Y3QgYmZkX2hhc2hfZW50
cnkgKiwgc3RydWN0IGJmZF9oYXNoX3RhYmxlICosIGNvbnN0IGNoYXIgKik7CgoKICB2b2lkICog
bWVtb3J5Owp9OwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfaGFzaF90YWJsZV9pbml0CiAgKHN0
cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqKSAoc3RydWN0
IGJmZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICop
KTsKCgoKCgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2hhc2hfdGFibGVfaW5pdF9uCiAgKHN0cnVj
dCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqKSAoc3RydWN0IGJm
ZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopLCB1
bnNpZ25lZCBpbnQgc2l6ZSk7CgoKCgoKCmV4dGVybiB2b2lkIGJmZF9oYXNoX3RhYmxlX2ZyZWUK
ICAoc3RydWN0IGJmZF9oYXNoX3RhYmxlICopOwoKCgoKCmV4dGVybiBzdHJ1Y3QgYmZkX2hhc2hf
ZW50cnkgKmJmZF9oYXNoX2xvb2t1cAogIChzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgY29uc3Qg
Y2hhciAqLCBiZmRfYm9vbGVhbiBjcmVhdGUsIGJmZF9ib29sZWFuIGNvcHkpOwoKCgpleHRlcm4g
dm9pZCBiZmRfaGFzaF9yZXBsYWNlCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3Qg
YmZkX2hhc2hfZW50cnkgKm9sZCwgc3RydWN0IGJmZF9oYXNoX2VudHJ5ICpudyk7CgoKCmV4dGVy
biBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKmJmZF9oYXNoX25ld2Z1bmMKICAoc3RydWN0IGJmZF9o
YXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopOwoKCgpl
eHRlcm4gdm9pZCAqIGJmZF9oYXNoX2FsbG9jYXRlCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAq
LCB1bnNpZ25lZCBpbnQpOwoKCgoKZXh0ZXJuIHZvaWQgYmZkX2hhc2hfdHJhdmVyc2UKICAoc3Ry
dWN0IGJmZF9oYXNoX3RhYmxlICosIGJmZF9ib29sZWFuICgqKSAoc3RydWN0IGJmZF9oYXNoX2Vu
dHJ5ICosIHZvaWQgKiksIHZvaWQgKiBpbmZvKTsKIyA0NjggIi4uL2JmZC9iZmQuaCIKZXh0ZXJu
IGJmZF9zaXplX3R5cGUgYmZkX2JyZWFkCiAgKHZvaWQgKiwgYmZkX3NpemVfdHlwZSwgYmZkICop
OwpleHRlcm4gYmZkX3NpemVfdHlwZSBiZmRfYndyaXRlCiAgKGNvbnN0IHZvaWQgKiwgYmZkX3Np
emVfdHlwZSwgYmZkICopOwpleHRlcm4gaW50IGJmZF9zZWVrCiAgKGJmZCAqLCBmaWxlX3B0ciwg
aW50KTsKZXh0ZXJuIHVmaWxlX3B0ciBiZmRfdGVsbAogIChiZmQgKik7CmV4dGVybiBpbnQgYmZk
X2ZsdXNoCiAgKGJmZCAqKTsKZXh0ZXJuIGludCBiZmRfc3RhdAogIChiZmQgKiwgc3RydWN0IHN0
YXQgKik7CiMgNDk3ICIuLi9iZmQvYmZkLmgiCmV4dGVybiB2b2lkIHdhcm5fZGVwcmVjYXRlZAog
IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopOwojIDUzNiAi
Li4vYmZkL2JmZC5oIgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2NhY2hlX2Nsb3NlCiAgKGJmZCAq
YWJmZCk7CgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9yZWNvcmRfcGhkcgogIChiZmQgKiwgdW5z
aWduZWQgbG9uZywgYmZkX2Jvb2xlYW4sIGZsYWd3b3JkLCBiZmRfYm9vbGVhbiwgYmZkX3ZtYSwg
YmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFuLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBzZWMgKiopOwoK
CgoKYmZkX3ZtYSBiZmRfZ2V0YjY0CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEg
YmZkX2dldGw2NAogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfc2lnbmVkX3ZtYSBiZmRf
Z2V0Yl9zaWduZWRfNjQKICAoY29uc3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEg
YmZkX2dldGxfc2lnbmVkXzY0CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEgYmZk
X2dldGIzMgogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfdm1hIGJmZF9nZXRsMzIKICAo
Y29uc3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEgYmZkX2dldGJfc2lnbmVkXzMy
CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF9zaWduZWRfdm1hIGJmZF9nZXRsX3NpZ25l
ZF8zMgogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfdm1hIGJmZF9nZXRiMTYKICAoY29u
c3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3ZtYSBiZmRfZ2V0bDE2CiAgKGNvbnN0IHVuc2lnbmVk
IGNoYXIgKik7CmJmZF9zaWduZWRfdm1hIGJmZF9nZXRiX3NpZ25lZF8xNgogIChjb25zdCB1bnNp
Z25lZCBjaGFyICopOwpiZmRfc2lnbmVkX3ZtYSBiZmRfZ2V0bF9zaWduZWRfMTYKICAoY29uc3Qg
dW5zaWduZWQgY2hhciAqKTsKdm9pZCBiZmRfcHV0YjY0CiAgKGJmZF92bWEsIHVuc2lnbmVkIGNo
YXIgKik7CnZvaWQgYmZkX3B1dGw2NAogIChiZmRfdm1hLCB1bnNpZ25lZCBjaGFyICopOwp2b2lk
IGJmZF9wdXRiMzIKICAoYmZkX3ZtYSwgdW5zaWduZWQgY2hhciAqKTsKdm9pZCBiZmRfcHV0bDMy
CiAgKGJmZF92bWEsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgYmZkX3B1dGIxNgogIChiZmRfdm1h
LCB1bnNpZ25lZCBjaGFyICopOwp2b2lkIGJmZF9wdXRsMTYKICAoYmZkX3ZtYSwgdW5zaWduZWQg
Y2hhciAqKTsKCgoKYmZkX3ZtYSBiZmRfZ2V0X2JpdHMKICAoYmZkX2J5dGUgKiwgaW50LCBiZmRf
Ym9vbGVhbik7CnZvaWQgYmZkX3B1dF9iaXRzCiAgKGJmZF92bWEsIGJmZF9ieXRlICosIGludCwg
YmZkX2Jvb2xlYW4pOwoKCgoKc3RydWN0IGVjb2ZmX2RlYnVnX2luZm87CnN0cnVjdCBlY29mZl9k
ZWJ1Z19zd2FwOwpzdHJ1Y3QgZWNvZmZfZXh0cjsKc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeTsK
c3RydWN0IGJmZF9saW5rX2luZm87CnN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5OwpzdHJ1Y3Qg
YmZkX2VsZl92ZXJzaW9uX3RyZWU7CgpleHRlcm4gYmZkX3ZtYSBiZmRfZWNvZmZfZ2V0X2dwX3Zh
bHVlCiAgKGJmZCAqIGFiZmQpOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX3NldF9ncF92
YWx1ZQogIChiZmQgKmFiZmQsIGJmZF92bWEgZ3BfdmFsdWUpOwpleHRlcm4gYmZkX2Jvb2xlYW4g
YmZkX2Vjb2ZmX3NldF9yZWdtYXNrcwogIChiZmQgKmFiZmQsIHVuc2lnbmVkIGxvbmcgZ3BybWFz
aywgdW5zaWduZWQgbG9uZyBmcHJtYXNrLCB1bnNpZ25lZCBsb25nICpjcHJtYXNrKTsKCmV4dGVy
biB2b2lkICogYmZkX2Vjb2ZmX2RlYnVnX2luaXQKICAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3Qg
ZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0X2RlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdf
c3dhcCAqb3V0cHV0X3N3YXAsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiB2b2lk
IGJmZF9lY29mZl9kZWJ1Z19mcmVlCiAgKHZvaWQgKiBoYW5kbGUsIGJmZCAqb3V0cHV0X2JmZCwg
c3RydWN0IGVjb2ZmX2RlYnVnX2luZm8gKm91dHB1dF9kZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKm91dHB1dF9zd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpleHRl
cm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX2RlYnVnX2FjY3VtdWxhdGUKICAodm9pZCAqIGhhbmRs
ZSwgYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0X2RlYnVn
LCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqb3V0cHV0X3N3YXAsIGJmZCAqaW5wdXRf
YmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqaW5wdXRfZGVidWcsIGNvbnN0IHN0cnVjdCBl
Y29mZl9kZWJ1Z19zd2FwICppbnB1dF9zd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgoK
CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWNvZmZfZGVidWdfYWNjdW11bGF0ZV9vdGhlcgogICh2
b2lkICogaGFuZGxlLCBiZmQgKm91dHB1dF9iZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpv
dXRwdXRfZGVidWcsIGNvbnN0IHN0cnVjdCBlY29mZl9kZWJ1Z19zd2FwICpvdXRwdXRfc3dhcCwg
YmZkICppbnB1dF9iZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBiZmRfYm9v
bGVhbiBiZmRfZWNvZmZfZGVidWdfZXh0ZXJuYWxzCiAgKGJmZCAqYWJmZCwgc3RydWN0IGVjb2Zm
X2RlYnVnX2luZm8gKmRlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqc3dhcCwg
YmZkX2Jvb2xlYW4gcmVsb2NhdGVhYmxlLCBiZmRfYm9vbGVhbiAoKmdldF9leHRyKSAoc3RydWN0
IHN5bWJvbF9jYWNoZV9lbnRyeSAqLCBzdHJ1Y3QgZWNvZmZfZXh0ciAqKSwgdm9pZCAoKnNldF9p
bmRleCkgKHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgYmZkX3NpemVfdHlwZSkpOwoKCgoK
CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX2RlYnVnX29uZV9leHRlcm5hbAogIChiZmQg
KmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKnN3YXAsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBlY29mZl9leHRyICpl
c3ltKTsKCgpleHRlcm4gYmZkX3NpemVfdHlwZSBiZmRfZWNvZmZfZGVidWdfc2l6ZQogIChiZmQg
KmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKnN3YXApOwoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lY29mZl93cml0ZV9k
ZWJ1ZwogIChiZmQgKmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qg
c3RydWN0IGVjb2ZmX2RlYnVnX3N3YXAgKnN3YXAsIGZpbGVfcHRyIHdoZXJlKTsKCmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfZWNvZmZfd3JpdGVfYWNjdW11bGF0ZWRfZGVidWcKICAodm9pZCAqIGhh
bmRsZSwgYmZkICphYmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqZGVidWcsIGNvbnN0IHN0
cnVjdCBlY29mZl9kZWJ1Z19zd2FwICpzd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywg
ZmlsZV9wdHIgd2hlcmUpOwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfbWlwc19lY29mZl9jcmVh
dGVfZW1iZWRkZWRfcmVsb2NzCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1
Y3Qgc2VjICosIHN0cnVjdCBzZWMgKiwgY2hhciAqKik7CgoKCgpzdHJ1Y3QgYmZkX2xpbmtfbmVl
ZGVkX2xpc3QKewogIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbmV4dDsKICBiZmQgKmJ5
OwogIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjY0X3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwpleHRlcm4gc3RydWN0IGJmZF9saW5rX25lZWRlZF9s
aXN0ICpiZmRfZWxmX2dldF9uZWVkZWRfbGlzdAogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2lu
Zm8gKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QKICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqKik7CmV4dGVybiBiZmRfYm9vbGVh
biBiZmRfZWxmMzJfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29uc3QgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAqKiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90
cmVlICopOwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmNjRfc2l6ZV9keW5hbWljX3NlY3Rp
b25zCiAgKGJmZCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICogY29uc3QgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAq
Kiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICopOwoKCmV4dGVybiB2b2lkIGJmZF9lbGZf
c2V0X2R0X25lZWRlZF9uYW1lCiAgKGJmZCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBi
ZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lCiAgKGJmZCAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gY29uc3QgY2hhciAqYmZkX2VsZl9nZXRfZHRfc29uYW1lCiAgKGJmZCAqKTsKZXh0ZXJuIHN0
cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfcnVucGF0aF9saXN0CiAgKGJm
ZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGYz
Ml9kaXNjYXJkX2luZm8KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4g
YmZkX2Jvb2xlYW4gYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbwogIChiZmQgKiwgc3RydWN0IGJmZF9s
aW5rX2luZm8gKik7CgoKCgpleHRlcm4gbG9uZyBiZmRfZ2V0X2VsZl9waGRyX3VwcGVyX2JvdW5k
CiAgKGJmZCAqYWJmZCk7CiMgNzAzICIuLi9iZmQvYmZkLmgiCmV4dGVybiBpbnQgYmZkX2dldF9l
bGZfcGhkcnMKICAoYmZkICphYmZkLCB2b2lkICpwaGRycyk7CgoKZXh0ZXJuIGludCBiZmRfZ2V0
X2FyY2hfc2l6ZQogIChiZmQgKik7CgoKZXh0ZXJuIGludCBiZmRfZ2V0X3NpZ25fZXh0ZW5kX3Zt
YQogIChiZmQgKik7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX202OGtfZWxmMzJfY3JlYXRlX2Vt
YmVkZGVkX3JlbG9jcwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNl
YyAqLCBzdHJ1Y3Qgc2VjICosIGNoYXIgKiopOwoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9taXBz
X2VsZjMyX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICosIHN0cnVjdCBzZWMgKiwgc3RydWN0IHNlYyAqLCBjaGFyICoqKTsKCgoKCmV4dGVybiBz
dHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKmJmZF9zdW5vc19nZXRfbmVlZGVkX2xpc3QKICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3N1
bm9zX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZv
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfc3Vub3Nfc2l6ZV9keW5h
bWljX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2Vj
ICoqLCBzdHJ1Y3Qgc2VjICoqLCBzdHJ1Y3Qgc2VjICoqKTsKCgoKCmV4dGVybiBiZmRfYm9vbGVh
biBiZmRfaTM4NmxpbnV4X3NpemVfZHluYW1pY19zZWN0aW9ucwogIChiZmQgKiwgc3RydWN0IGJm
ZF9saW5rX2luZm8gKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfbTY4a2xpbnV4X3NpemVfZHlu
YW1pY19zZWN0aW9ucwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfc3BhcmNsaW51eF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKICAoYmZkICos
IHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCgpzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJuYWw7
CnR5cGVkZWYgc3RydWN0IF9iZmRfd2luZG93X2ludGVybmFsIGJmZF93aW5kb3dfaW50ZXJuYWw7
Cgp0eXBlZGVmIHN0cnVjdCBfYmZkX3dpbmRvdwp7CgogIHZvaWQgKiBkYXRhOwogIGJmZF9zaXpl
X3R5cGUgc2l6ZTsKCgoKCgoKICBzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJuYWwgKmk7Cn0KYmZk
X3dpbmRvdzsKCmV4dGVybiB2b2lkIGJmZF9pbml0X3dpbmRvdwogIChiZmRfd2luZG93ICopOwpl
eHRlcm4gdm9pZCBiZmRfZnJlZV93aW5kb3cKICAoYmZkX3dpbmRvdyAqKTsKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF9nZXRfZmlsZV93aW5kb3cKICAoYmZkICosIGZpbGVfcHRyLCBiZmRfc2l6ZV90
eXBlLCBiZmRfd2luZG93ICosIGJmZF9ib29sZWFuKTsKCgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJm
ZF94Y29mZl9saW5rX3JlY29yZF9zZXQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICosIGJmZF9zaXplX3R5cGUpOwoKZXh0ZXJuIGJm
ZF9ib29sZWFuIGJmZF94Y29mZl9pbXBvcnRfc3ltYm9sCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqLCBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hLCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQpOwoKZXh0ZXJu
IGJmZF9ib29sZWFuIGJmZF94Y29mZl9leHBvcnRfc3ltYm9sCiAgKGJmZCAqLCBzdHJ1Y3QgYmZk
X2xpbmtfaW5mbyAqLCBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqKTsKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF94Y29mZl9saW5rX2NvdW50X3JlbG9jCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3hjb2ZmX3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfeGNvZmZfc2l6ZV9keW5hbWljX3Nl
Y3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
YmZkX2Jvb2xlYW4sIGludCwgYmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFuLCBzdHJ1Y3Qgc2VjICoq
LCBiZmRfYm9vbGVhbik7CgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF94Y29mZl9saW5rX2dlbmVy
YXRlX3J0aW5pdAogIChiZmQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGJmZF9ib29s
ZWFuKTsKCgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3hjb2ZmX2FyX2FyY2hpdmVfc2V0X21hZ2lj
CiAgKGJmZCAqLCBjaGFyICopOwoKCgoKc3RydWN0IGludGVybmFsX3N5bWVudDsKdW5pb24gaW50
ZXJuYWxfYXV4ZW50OwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfY29mZl9nZXRfc3ltZW50CiAg
KGJmZCAqLCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICosIHN0cnVjdCBpbnRlcm5hbF9zeW1l
bnQgKik7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2NvZmZfZ2V0X2F1eGVudAogIChiZmQgKiwg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqLCBpbnQsIHVuaW9uIGludGVybmFsX2F1eGVudCAq
KTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfY29mZl9zZXRfc3ltYm9sX2NsYXNzCiAgKGJmZCAq
LCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICosIHVuc2lnbmVkIGludCk7CgpleHRlcm4gYmZk
X2Jvb2xlYW4gYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzCiAgKGJmZCAqLCBz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2VjICosIHN0cnVjdCBzZWMgKiwgY2hhciAq
Kik7CgoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19z
ZWN0aW9ucwogIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBi
ZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlu
a19pbmZvICosIGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2FybV9nZXRfYmZkX2Zvcl9p
bnRlcndvcmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfYXJtX3BlX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucwogIChz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfYXJtX3BlX3By
b2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2FybV9wZV9nZXRfYmZkX2Zvcl9pbnRlcndv
cmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBiZmRfYm9v
bGVhbiBiZmRfZWxmMzJfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucwogIChzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfYXJtX3By
b2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRl
cndvcmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF9lbGYzMl9hcm1fYWRkX2dsdWVfc2VjdGlvbnNfdG9fYmZkCiAgKGJmZCAqLCBz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpleHRlcm4gdm9pZCBiZmRfdGljb2ZmX3NldF9zZWN0
aW9uX2xvYWRfcGFnZQogIChzdHJ1Y3Qgc2VjICosIGludCk7CgpleHRlcm4gaW50IGJmZF90aWNv
ZmZfZ2V0X3NlY3Rpb25fbG9hZF9wYWdlCiAgKHN0cnVjdCBzZWMgKik7CgoKdm9pZApiZmRfaW5p
dCAodm9pZCk7CgoKYmZkICoKYmZkX29wZW5yIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3Qg
Y2hhciAqdGFyZ2V0KTsKCmJmZCAqCmJmZF9mZG9wZW5yIChjb25zdCBjaGFyICpmaWxlbmFtZSwg
Y29uc3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpOwoKYmZkICoKYmZkX29wZW5zdHJlYW1yIChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKCmJmZCAqCmJmZF9vcGVudyAoY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCk7CgpiZmRfYm9vbGVhbgpiZmRfY2xv
c2UgKGJmZCAqYWJmZCk7CgpiZmRfYm9vbGVhbgpiZmRfY2xvc2VfYWxsX2RvbmUgKGJmZCAqKTsK
CmJmZCAqCmJmZF9jcmVhdGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBiZmQgKnRlbXBsKTsKCmJm
ZF9ib29sZWFuCmJmZF9tYWtlX3dyaXRhYmxlIChiZmQgKmFiZmQpOwoKYmZkX2Jvb2xlYW4KYmZk
X21ha2VfcmVhZGFibGUgKGJmZCAqYWJmZCk7CgpjaGFyICoKYmZkX2ZvbGxvd19nbnVfZGVidWds
aW5rIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKmRpcik7CiMgMTAyOSAiLi4vYmZkL2JmZC5oIgps
b25nCmJmZF9nZXRfbXRpbWUgKGJmZCAqYWJmZCk7Cgpsb25nCmJmZF9nZXRfc2l6ZSAoYmZkICph
YmZkKTsKIyAxMDQyICIuLi9iZmQvYmZkLmgiCnN0cnVjdCBiZmRfY29tZGF0X2luZm8KewoKICBj
b25zdCBjaGFyICpuYW1lOwoKCgoKCiAgbG9uZyBzeW1ib2w7Cn07Cgp0eXBlZGVmIHN0cnVjdCBz
ZWMKewoKCiAgY29uc3QgY2hhciAqbmFtZTsKCgogIGludCBpZDsKCgogIGludCBpbmRleDsKCgog
IHN0cnVjdCBzZWMgKm5leHQ7CgoKCgogIGZsYWd3b3JkIGZsYWdzOwojIDEyNTAgIi4uL2JmZC9i
ZmQuaCIKICB1bnNpZ25lZCBpbnQgdXNlcl9zZXRfdm1hIDogMTsKCgogIHVuc2lnbmVkIGludCBy
ZWxvY19kb25lIDogMTsKCgogIHVuc2lnbmVkIGludCBsaW5rZXJfbWFyayA6IDE7CgoKCiAgdW5z
aWduZWQgaW50IGxpbmtlcl9oYXNfaW5wdXQgOiAxOwoKCiAgdW5zaWduZWQgaW50IGdjX21hcmsg
OiAxOwoKCgoKICB1bnNpZ25lZCBpbnQgc2VnbWVudF9tYXJrIDogMTsKCgogIHVuc2lnbmVkIGlu
dCBzZWNfaW5mb190eXBlOjM7CgoKCgoKCgogIHVuc2lnbmVkIGludCB1c2VfcmVsYV9wOjE7CgoK
ICB1bnNpZ25lZCBpbnQgaGFzX3Rsc19yZWxvYzoxOwoKCiAgdW5zaWduZWQgaW50IGZsYWcxMTox
OwogIHVuc2lnbmVkIGludCBmbGFnMTI6MTsKICB1bnNpZ25lZCBpbnQgZmxhZzEzOjE7CiAgdW5z
aWduZWQgaW50IGZsYWcxNDoxOwogIHVuc2lnbmVkIGludCBmbGFnMTU6MTsKICB1bnNpZ25lZCBp
bnQgZmxhZzE2OjQ7CiAgdW5zaWduZWQgaW50IGZsYWcyMDo0OwogIHVuc2lnbmVkIGludCBmbGFn
MjQ6ODsKIyAxMzAyICIuLi9iZmQvYmZkLmgiCiAgYmZkX3ZtYSB2bWE7CgoKCgogIGJmZF92bWEg
bG1hOwoKCgoKICBiZmRfc2l6ZV90eXBlIF9jb29rZWRfc2l6ZTsKCgoKCiAgYmZkX3NpemVfdHlw
ZSBfcmF3X3NpemU7CiMgMTMyNiAiLi4vYmZkL2JmZC5oIgogIGJmZF92bWEgb3V0cHV0X29mZnNl
dDsKCgogIHN0cnVjdCBzZWMgKm91dHB1dF9zZWN0aW9uOwoKCgogIHVuc2lnbmVkIGludCBhbGln
bm1lbnRfcG93ZXI7CgoKCiAgc3RydWN0IHJlbG9jX2NhY2hlX2VudHJ5ICpyZWxvY2F0aW9uOwoK
CgogIHN0cnVjdCByZWxvY19jYWNoZV9lbnRyeSAqKm9yZWxvY2F0aW9uOwoKCiAgdW5zaWduZWQg
cmVsb2NfY291bnQ7CgoKCgoKICBmaWxlX3B0ciBmaWxlcG9zOwoKCiAgZmlsZV9wdHIgcmVsX2Zp
bGVwb3M7CgoKICBmaWxlX3B0ciBsaW5lX2ZpbGVwb3M7CgoKICB2b2lkICogdXNlcmRhdGE7CgoK
CiAgdW5zaWduZWQgY2hhciAqY29udGVudHM7CgoKICBhbGVudCAqbGluZW5vOwoKCiAgdW5zaWdu
ZWQgaW50IGxpbmVub19jb3VudDsKCgogIHVuc2lnbmVkIGludCBlbnRzaXplOwoKCiAgc3RydWN0
IGJmZF9jb21kYXRfaW5mbyAqY29tZGF0OwoKCgogIGZpbGVfcHRyIG1vdmluZ19saW5lX2ZpbGVw
b3M7CgoKICBpbnQgdGFyZ2V0X2luZGV4OwoKICB2b2lkICogdXNlZF9ieV9iZmQ7CgoKCiAgc3Ry
dWN0IHJlbGVudF9jaGFpbiAqY29uc3RydWN0b3JfY2hhaW47CgoKICBiZmQgKm93bmVyOwoKCiAg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqc3ltYm9sOwogIHN0cnVjdCBzeW1ib2xfY2FjaGVf
ZW50cnkgKipzeW1ib2xfcHRyX3B0cjsKCiAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsaW5rX29y
ZGVyX2hlYWQ7CiAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsaW5rX29yZGVyX3RhaWw7Cn0gYXNl
Y3Rpb247CiMgMTQxMiAiLi4vYmZkL2JmZC5oIgpleHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX2Fi
c19zZWN0aW9uOwoKCgpleHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX3VuZF9zZWN0aW9uOwoKCgpl
eHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX2NvbV9zZWN0aW9uOwoKCmV4dGVybiBjb25zdCBhc2Vj
dGlvbiBiZmRfaW5kX3NlY3Rpb247CiMgMTQzMyAiLi4vYmZkL2JmZC5oIgpleHRlcm4gY29uc3Qg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9hYnNfc3ltYm9sOwpleHRlcm4g
Y29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9jb21fc3ltYm9sOwpl
eHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF91bmRfc3lt
Ym9sOwpleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9p
bmRfc3ltYm9sOwojIDE0NjkgIi4uL2JmZC9iZmQuaCIKdm9pZApiZmRfc2VjdGlvbl9saXN0X2Ns
ZWFyIChiZmQgKik7Cgphc2VjdGlvbiAqCmJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChiZmQgKmFi
ZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwoKY2hhciAqCmJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFt
ZSAoYmZkICphYmZkLCBjb25zdCBjaGFyICp0ZW1wbGF0LCBpbnQgKmNvdW50KTsKCgoKYXNlY3Rp
b24gKgpiZmRfbWFrZV9zZWN0aW9uX29sZF93YXkgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFt
ZSk7Cgphc2VjdGlvbiAqCmJmZF9tYWtlX3NlY3Rpb25fYW55d2F5IChiZmQgKmFiZmQsIGNvbnN0
IGNoYXIgKm5hbWUpOwoKYXNlY3Rpb24gKgpiZmRfbWFrZV9zZWN0aW9uIChiZmQgKiwgY29uc3Qg
Y2hhciAqbmFtZSk7CgpiZmRfYm9vbGVhbgpiZmRfc2V0X3NlY3Rpb25fZmxhZ3MgKGJmZCAqYWJm
ZCwgYXNlY3Rpb24gKnNlYywgZmxhZ3dvcmQgZmxhZ3MpOwoKdm9pZApiZmRfbWFwX292ZXJfc2Vj
dGlvbnMgKGJmZCAqYWJmZCwgdm9pZCAoKmZ1bmMpIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0
LCB2b2lkICogb2JqKSwgdm9pZCAqIG9iaik7CgoKCgoKYmZkX2Jvb2xlYW4KYmZkX3NldF9zZWN0
aW9uX3NpemUgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlYywgYmZkX3NpemVfdHlwZSB2YWwpOwoK
YmZkX2Jvb2xlYW4KYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQsIGFzZWN0aW9u
ICpzZWN0aW9uLCB2b2lkICogZGF0YSwgZmlsZV9wdHIgb2Zmc2V0LCBiZmRfc2l6ZV90eXBlIGNv
dW50KTsKCgoKYmZkX2Jvb2xlYW4KYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQs
IGFzZWN0aW9uICpzZWN0aW9uLCB2b2lkICogbG9jYXRpb24sIGZpbGVfcHRyIG9mZnNldCwgYmZk
X3NpemVfdHlwZSBjb3VudCk7CgoKCmJmZF9ib29sZWFuCmJmZF9jb3B5X3ByaXZhdGVfc2VjdGlv
bl9kYXRhIChiZmQgKmliZmQsIGFzZWN0aW9uICppc2VjLCBiZmQgKm9iZmQsIGFzZWN0aW9uICpv
c2VjKTsKCgoKCgp2b2lkCl9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCAoc3RydWN0IGJm
ZF9saW5rX2luZm8gKmluZm8sIGFzZWN0aW9uICpzZWN0aW9uKTsKCmJmZF9ib29sZWFuCmJmZF9n
ZW5lcmljX2Rpc2NhcmRfZ3JvdXAgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKmdyb3VwKTsKCgplbnVt
IGJmZF9hcmNoaXRlY3R1cmUKewogIGJmZF9hcmNoX3Vua25vd24sCiAgYmZkX2FyY2hfb2JzY3Vy
ZSwKICBiZmRfYXJjaF9tNjhrLAojIDE1NDMgIi4uL2JmZC9iZmQuaCIKICBiZmRfYXJjaF92YXgs
CiAgYmZkX2FyY2hfaTk2MCwKIyAxNTYyICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfb3IzMiwK
CiAgYmZkX2FyY2hfYTI5aywKICBiZmRfYXJjaF9zcGFyYywKIyAxNTgxICIuLi9iZmQvYmZkLmgi
CiAgYmZkX2FyY2hfbWlwcywKIyAxNjA2ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfaTM4NiwK
CgoKCgogIGJmZF9hcmNoX3dlMzJrLAogIGJmZF9hcmNoX3RhaG9lLAogIGJmZF9hcmNoX2k4NjAs
CiAgYmZkX2FyY2hfaTM3MCwKICBiZmRfYXJjaF9yb21wLAogIGJmZF9hcmNoX2FsbGlhbnQsCiAg
YmZkX2FyY2hfY29udmV4LAogIGJmZF9hcmNoX204OGssCiAgYmZkX2FyY2hfbTk4aywKICBiZmRf
YXJjaF9weXJhbWlkLAogIGJmZF9hcmNoX2g4MzAwLAoKCgogIGJmZF9hcmNoX3BkcDExLAogIGJm
ZF9hcmNoX3Bvd2VycGMsCiMgMTY0NyAiLi4vYmZkL2JmZC5oIgogIGJmZF9hcmNoX3JzNjAwMCwK
CgoKCiAgYmZkX2FyY2hfaHBwYSwKICBiZmRfYXJjaF9kMTB2LAoKCgogIGJmZF9hcmNoX2QzMHYs
CiAgYmZkX2FyY2hfZGx4LAogIGJmZF9hcmNoX202OGhjMTEsCiAgYmZkX2FyY2hfbTY4aGMxMiwK
CgoKICBiZmRfYXJjaF96OGssCgoKICBiZmRfYXJjaF9oODUwMCwKICBiZmRfYXJjaF9zaCwKIyAx
Njc4ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfYWxwaGEsCgoKCiAgYmZkX2FyY2hfYXJtLAoj
IDE2OTQgIi4uL2JmZC9iZmQuaCIKICBiZmRfYXJjaF9uczMyaywKICBiZmRfYXJjaF93NjUsCiAg
YmZkX2FyY2hfdGljMzAsCiAgYmZkX2FyY2hfdGljNHgsCgoKICBiZmRfYXJjaF90aWM1NHgsCiAg
YmZkX2FyY2hfdGljODAsCiAgYmZkX2FyY2hfdjg1MCwKCgogIGJmZF9hcmNoX2FyYywKCgoKCiAg
YmZkX2FyY2hfbTMyciwKCgogIGJmZF9hcmNoX21uMTAyMDAsCiAgYmZkX2FyY2hfbW4xMDMwMCwK
CgogIGJmZF9hcmNoX2ZyMzAsCgogIGJmZF9hcmNoX2ZydiwKCgoKCgoKICBiZmRfYXJjaF9tY29y
ZSwKICBiZmRfYXJjaF9pYTY0LAoKCiAgYmZkX2FyY2hfaXAyaywKCgogYmZkX2FyY2hfaXEyMDAw
LAoKCiAgYmZkX2FyY2hfcGosCiAgYmZkX2FyY2hfYXZyLAoKCgoKCiAgYmZkX2FyY2hfY3JpcywK
ICBiZmRfYXJjaF9zMzkwLAoKCiAgYmZkX2FyY2hfb3BlbnJpc2MsCiAgYmZkX2FyY2hfbW1peCwK
ICBiZmRfYXJjaF94c3Rvcm15MTYsCgogIGJmZF9hcmNoX21zcDQzMCwKIyAxNzY1ICIuLi9iZmQv
YmZkLmgiCiAgYmZkX2FyY2hfbGFzdAogIH07Cgp0eXBlZGVmIHN0cnVjdCBiZmRfYXJjaF9pbmZv
CnsKICBpbnQgYml0c19wZXJfd29yZDsKICBpbnQgYml0c19wZXJfYWRkcmVzczsKICBpbnQgYml0
c19wZXJfYnl0ZTsKICBlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaDsKICB1bnNpZ25lZCBsb25n
IG1hY2g7CiAgY29uc3QgY2hhciAqYXJjaF9uYW1lOwogIGNvbnN0IGNoYXIgKnByaW50YWJsZV9u
YW1lOwogIHVuc2lnbmVkIGludCBzZWN0aW9uX2FsaWduX3Bvd2VyOwoKCgogIGJmZF9ib29sZWFu
IHRoZV9kZWZhdWx0OwogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICogKCpjb21wYXRpYmxl
KQogICAgICAgKGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICphLCBjb25zdCBzdHJ1Y3QgYmZk
X2FyY2hfaW5mbyAqYik7CgoKICBiZmRfYm9vbGVhbiAoKnNjYW4pIChjb25zdCBzdHJ1Y3QgYmZk
X2FyY2hfaW5mbyAqLCBjb25zdCBjaGFyICopOwoKICBjb25zdCBzdHJ1Y3QgYmZkX2FyY2hfaW5m
byAqbmV4dDsKfQpiZmRfYXJjaF9pbmZvX3R5cGU7Cgpjb25zdCBjaGFyICoKYmZkX3ByaW50YWJs
ZV9uYW1lIChiZmQgKmFiZmQpOwoKY29uc3QgYmZkX2FyY2hfaW5mb190eXBlICoKYmZkX3NjYW5f
YXJjaCAoY29uc3QgY2hhciAqc3RyaW5nKTsKCmNvbnN0IGNoYXIgKioKYmZkX2FyY2hfbGlzdCAo
dm9pZCk7Cgpjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfYXJjaF9nZXRfY29tcGF0aWJs
ZSAoIGNvbnN0IGJmZCAqYWJmZCwgY29uc3QgYmZkICpiYmZkLCBiZmRfYm9vbGVhbiBhY2NlcHRf
dW5rbm93bnMpOwoKCgoKdm9pZApiZmRfc2V0X2FyY2hfaW5mbyAoYmZkICphYmZkLCBjb25zdCBi
ZmRfYXJjaF9pbmZvX3R5cGUgKmFyZyk7CgplbnVtIGJmZF9hcmNoaXRlY3R1cmUKYmZkX2dldF9h
cmNoIChiZmQgKmFiZmQpOwoKdW5zaWduZWQgbG9uZwpiZmRfZ2V0X21hY2ggKGJmZCAqYWJmZCk7
Cgp1bnNpZ25lZCBpbnQKYmZkX2FyY2hfYml0c19wZXJfYnl0ZSAoYmZkICphYmZkKTsKCnVuc2ln
bmVkIGludApiZmRfYXJjaF9iaXRzX3Blcl9hZGRyZXNzIChiZmQgKmFiZmQpOwoKY29uc3QgYmZk
X2FyY2hfaW5mb190eXBlICoKYmZkX2dldF9hcmNoX2luZm8gKGJmZCAqYWJmZCk7Cgpjb25zdCBi
ZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfbG9va3VwX2FyY2ggKGVudW0gYmZkX2FyY2hpdGVjdHVy
ZSBhcmNoLCB1bnNpZ25lZCBsb25nIG1hY2hpbmUpOwoKCgpjb25zdCBjaGFyICoKYmZkX3ByaW50
YWJsZV9hcmNoX21hY2ggKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLCB1bnNpZ25lZCBsb25n
IG1hY2hpbmUpOwoKdW5zaWduZWQgaW50CmJmZF9vY3RldHNfcGVyX2J5dGUgKGJmZCAqYWJmZCk7
Cgp1bnNpZ25lZCBpbnQKYmZkX2FyY2hfbWFjaF9vY3RldHNfcGVyX2J5dGUgKGVudW0gYmZkX2Fy
Y2hpdGVjdHVyZSBhcmNoLCB1bnNpZ25lZCBsb25nIG1hY2hpbmUpOwoKCgp0eXBlZGVmIGVudW0g
YmZkX3JlbG9jX3N0YXR1cwp7CgogIGJmZF9yZWxvY19vaywKCgogIGJmZF9yZWxvY19vdmVyZmxv
dywKCgogIGJmZF9yZWxvY19vdXRvZnJhbmdlLAoKCiAgYmZkX3JlbG9jX2NvbnRpbnVlLAoKCiAg
YmZkX3JlbG9jX25vdHN1cHBvcnRlZCwKCgogIGJmZF9yZWxvY19vdGhlciwKCgogIGJmZF9yZWxv
Y191bmRlZmluZWQsCgoKCgoKICBiZmRfcmVsb2NfZGFuZ2Vyb3VzCiB9CiBiZmRfcmVsb2Nfc3Rh
dHVzX3R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgcmVsb2NfY2FjaGVfZW50cnkKewoKICBzdHJ1Y3Qg
c3ltYm9sX2NhY2hlX2VudHJ5ICoqc3ltX3B0cl9wdHI7CgoKICBiZmRfc2l6ZV90eXBlIGFkZHJl
c3M7CgoKICBiZmRfdm1hIGFkZGVuZDsKCgogIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvOwoKfQph
cmVsZW50OwoKZW51bSBjb21wbGFpbl9vdmVyZmxvdwp7CgogIGNvbXBsYWluX292ZXJmbG93X2Rv
bnQsCgoKCiAgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsCgoKCiAgY29tcGxhaW5fb3ZlcmZs
b3dfc2lnbmVkLAoKCgogIGNvbXBsYWluX292ZXJmbG93X3Vuc2lnbmVkCn07CgpzdHJ1Y3QgcmVs
b2NfaG93dG9fc3RydWN0CnsKCgoKCgoKICB1bnNpZ25lZCBpbnQgdHlwZTsKCgoKICB1bnNpZ25l
ZCBpbnQgcmlnaHRzaGlmdDsKCgoKCiAgaW50IHNpemU7CgoKCiAgdW5zaWduZWQgaW50IGJpdHNp
emU7CgoKCgoKICBiZmRfYm9vbGVhbiBwY19yZWxhdGl2ZTsKCgoKICB1bnNpZ25lZCBpbnQgYml0
cG9zOwoKCgogIGVudW0gY29tcGxhaW5fb3ZlcmZsb3cgY29tcGxhaW5fb25fb3ZlcmZsb3c7CgoK
CgoKICBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgKCpzcGVjaWFsX2Z1bmN0aW9uKQogICAgKGJmZCAq
LCBhcmVsZW50ICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgdm9pZCAqLCBhc2VjdGlv
biAqLCBiZmQgKiwgY2hhciAqKik7CgoKCiAgY2hhciAqbmFtZTsKIyAxOTcxICIuLi9iZmQvYmZk
LmgiCiAgYmZkX2Jvb2xlYW4gcGFydGlhbF9pbnBsYWNlOwojIDE5ODEgIi4uL2JmZC9iZmQuaCIK
ICBiZmRfdm1hIHNyY19tYXNrOwoKCgogIGJmZF92bWEgZHN0X21hc2s7CgoKCgoKCgogIGJmZF9i
b29sZWFuIHBjcmVsX29mZnNldDsKfTsKIyAyMDIxICIuLi9iZmQvYmZkLmgiCnVuc2lnbmVkIGlu
dApiZmRfZ2V0X3JlbG9jX3NpemUgKHJlbG9jX2hvd3RvX3R5cGUgKik7Cgp0eXBlZGVmIHN0cnVj
dCByZWxlbnRfY2hhaW4KewogIGFyZWxlbnQgcmVsZW50OwogIHN0cnVjdCByZWxlbnRfY2hhaW4g
Km5leHQ7Cn0KYXJlbGVudF9jaGFpbjsKCmJmZF9yZWxvY19zdGF0dXNfdHlwZQpiZmRfY2hlY2tf
b3ZlcmZsb3cgKGVudW0gY29tcGxhaW5fb3ZlcmZsb3cgaG93LCB1bnNpZ25lZCBpbnQgYml0c2l6
ZSwgdW5zaWduZWQgaW50IHJpZ2h0c2hpZnQsIHVuc2lnbmVkIGludCBhZGRyc2l6ZSwgYmZkX3Zt
YSByZWxvY2F0aW9uKTsKCgoKCgpiZmRfcmVsb2Nfc3RhdHVzX3R5cGUKYmZkX3BlcmZvcm1fcmVs
b2NhdGlvbiAoYmZkICphYmZkLCBhcmVsZW50ICpyZWxvY19lbnRyeSwgdm9pZCAqIGRhdGEsIGFz
ZWN0aW9uICppbnB1dF9zZWN0aW9uLCBiZmQgKm91dHB1dF9iZmQsIGNoYXIgKiplcnJvcl9tZXNz
YWdlKTsKCgoKCgoKYmZkX3JlbG9jX3N0YXR1c190eXBlCmJmZF9pbnN0YWxsX3JlbG9jYXRpb24g
KGJmZCAqYWJmZCwgYXJlbGVudCAqcmVsb2NfZW50cnksIHZvaWQgKiBkYXRhLCBiZmRfdm1hIGRh
dGFfc3RhcnQsIGFzZWN0aW9uICppbnB1dF9zZWN0aW9uLCBjaGFyICoqZXJyb3JfbWVzc2FnZSk7
CgoKCgoKZW51bSBiZmRfcmVsb2NfY29kZV9yZWFsIHsKICBfZHVtbXlfZmlyc3RfYmZkX3JlbG9j
X2NvZGVfcmVhbCwKCgoKICBCRkRfUkVMT0NfNjQsCiAgQkZEX1JFTE9DXzMyLAogIEJGRF9SRUxP
Q18yNiwKICBCRkRfUkVMT0NfMjQsCiAgQkZEX1JFTE9DXzE2LAogIEJGRF9SRUxPQ18xNCwKICBC
RkRfUkVMT0NfOCwKCgoKCgoKICBCRkRfUkVMT0NfNjRfUENSRUwsCiAgQkZEX1JFTE9DXzMyX1BD
UkVMLAogIEJGRF9SRUxPQ18yNF9QQ1JFTCwKICBCRkRfUkVMT0NfMTZfUENSRUwsCiAgQkZEX1JF
TE9DXzEyX1BDUkVMLAogIEJGRF9SRUxPQ184X1BDUkVMLAoKCiAgQkZEX1JFTE9DXzMyX0dPVF9Q
Q1JFTCwKICBCRkRfUkVMT0NfMTZfR09UX1BDUkVMLAogIEJGRF9SRUxPQ184X0dPVF9QQ1JFTCwK
ICBCRkRfUkVMT0NfMzJfR09UT0ZGLAogIEJGRF9SRUxPQ18xNl9HT1RPRkYsCiAgQkZEX1JFTE9D
X0xPMTZfR09UT0ZGLAogIEJGRF9SRUxPQ19ISTE2X0dPVE9GRiwKICBCRkRfUkVMT0NfSEkxNl9T
X0dPVE9GRiwKICBCRkRfUkVMT0NfOF9HT1RPRkYsCiAgQkZEX1JFTE9DXzY0X1BMVF9QQ1JFTCwK
ICBCRkRfUkVMT0NfMzJfUExUX1BDUkVMLAogIEJGRF9SRUxPQ18yNF9QTFRfUENSRUwsCiAgQkZE
X1JFTE9DXzE2X1BMVF9QQ1JFTCwKICBCRkRfUkVMT0NfOF9QTFRfUENSRUwsCiAgQkZEX1JFTE9D
XzY0X1BMVE9GRiwKICBCRkRfUkVMT0NfMzJfUExUT0ZGLAogIEJGRF9SRUxPQ18xNl9QTFRPRkYs
CiAgQkZEX1JFTE9DX0xPMTZfUExUT0ZGLAogIEJGRF9SRUxPQ19ISTE2X1BMVE9GRiwKICBCRkRf
UkVMT0NfSEkxNl9TX1BMVE9GRiwKICBCRkRfUkVMT0NfOF9QTFRPRkYsCgoKICBCRkRfUkVMT0Nf
NjhLX0dMT0JfREFULAogIEJGRF9SRUxPQ182OEtfSk1QX1NMT1QsCiAgQkZEX1JFTE9DXzY4S19S
RUxBVElWRSwKCgogIEJGRF9SRUxPQ18zMl9CQVNFUkVMLAogIEJGRF9SRUxPQ18xNl9CQVNFUkVM
LAogIEJGRF9SRUxPQ19MTzE2X0JBU0VSRUwsCiAgQkZEX1JFTE9DX0hJMTZfQkFTRVJFTCwKICBC
RkRfUkVMT0NfSEkxNl9TX0JBU0VSRUwsCiAgQkZEX1JFTE9DXzhfQkFTRVJFTCwKICBCRkRfUkVM
T0NfUlZBLAoKCiAgQkZEX1JFTE9DXzhfRkZubiwKCgoKCgoKCiAgQkZEX1JFTE9DXzMyX1BDUkVM
X1MyLAogIEJGRF9SRUxPQ18xNl9QQ1JFTF9TMiwKICBCRkRfUkVMT0NfMjNfUENSRUxfUzIsCgoK
CiAgQkZEX1JFTE9DX0hJMjIsCiAgQkZEX1JFTE9DX0xPMTAsCgoKCgoKICBCRkRfUkVMT0NfR1BS
RUwxNiwKICBCRkRfUkVMT0NfR1BSRUwzMiwKCgogIEJGRF9SRUxPQ19JOTYwX0NBTExKLAoKCgog
IEJGRF9SRUxPQ19OT05FLAogIEJGRF9SRUxPQ19TUEFSQ19XRElTUDIyLAogIEJGRF9SRUxPQ19T
UEFSQzIyLAogIEJGRF9SRUxPQ19TUEFSQzEzLAogIEJGRF9SRUxPQ19TUEFSQ19HT1QxMCwKICBC
RkRfUkVMT0NfU1BBUkNfR09UMTMsCiAgQkZEX1JFTE9DX1NQQVJDX0dPVDIyLAogIEJGRF9SRUxP
Q19TUEFSQ19QQzEwLAogIEJGRF9SRUxPQ19TUEFSQ19QQzIyLAogIEJGRF9SRUxPQ19TUEFSQ19X
UExUMzAsCiAgQkZEX1JFTE9DX1NQQVJDX0NPUFksCiAgQkZEX1JFTE9DX1NQQVJDX0dMT0JfREFU
LAogIEJGRF9SRUxPQ19TUEFSQ19KTVBfU0xPVCwKICBCRkRfUkVMT0NfU1BBUkNfUkVMQVRJVkUs
CiAgQkZEX1JFTE9DX1NQQVJDX1VBMTYsCiAgQkZEX1JFTE9DX1NQQVJDX1VBMzIsCiAgQkZEX1JF
TE9DX1NQQVJDX1VBNjQsCgoKICBCRkRfUkVMT0NfU1BBUkNfQkFTRTEzLAogIEJGRF9SRUxPQ19T
UEFSQ19CQVNFMjIsCgoKCiAgQkZEX1JFTE9DX1NQQVJDXzEwLAogIEJGRF9SRUxPQ19TUEFSQ18x
MSwKICBCRkRfUkVMT0NfU1BBUkNfT0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0hIMjIsCiAgQkZE
X1JFTE9DX1NQQVJDX0hNMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0xNMjIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1BDX0hIMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1BDX0hNMTAsCiAgQkZEX1JFTE9DX1NQQVJD
X1BDX0xNMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1dESVNQMTYsCiAgQkZEX1JFTE9DX1NQQVJDX1dE
SVNQMTksCiAgQkZEX1JFTE9DX1NQQVJDXzcsCiAgQkZEX1JFTE9DX1NQQVJDXzYsCiAgQkZEX1JF
TE9DX1NQQVJDXzUsCgogIEJGRF9SRUxPQ19TUEFSQ19QTFQzMiwKICBCRkRfUkVMT0NfU1BBUkNf
UExUNjQsCiAgQkZEX1JFTE9DX1NQQVJDX0hJWDIyLAogIEJGRF9SRUxPQ19TUEFSQ19MT1gxMCwK
ICBCRkRfUkVMT0NfU1BBUkNfSDQ0LAogIEJGRF9SRUxPQ19TUEFSQ19NNDQsCiAgQkZEX1JFTE9D
X1NQQVJDX0w0NCwKICBCRkRfUkVMT0NfU1BBUkNfUkVHSVNURVIsCgoKICBCRkRfUkVMT0NfU1BB
UkNfUkVWMzIsCgoKICBCRkRfUkVMT0NfU1BBUkNfVExTX0dEX0hJMjIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19HRF9MTzEwLAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfR0RfQURELAogIEJGRF9SRUxP
Q19TUEFSQ19UTFNfR0RfQ0FMTCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX0xETV9ISTIyLAogIEJG
RF9SRUxPQ19TUEFSQ19UTFNfTERNX0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19MRE1fQURE
LAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfTERNX0NBTEwsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19M
RE9fSElYMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19MRE9fTE9YMTAsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19MRE9fQURELAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfSUVfSEkyMiwKICBCRkRfUkVM
T0NfU1BBUkNfVExTX0lFX0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19JRV9MRCwKICBCRkRf
UkVMT0NfU1BBUkNfVExTX0lFX0xEWCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX0lFX0FERCwKICBC
RkRfUkVMT0NfU1BBUkNfVExTX0xFX0hJWDIyLAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfTEVfTE9Y
MTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19EVFBNT0QzMiwKICBCRkRfUkVMT0NfU1BBUkNfVExT
X0RUUE1PRDY0LAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfRFRQT0ZGMzIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19EVFBPRkY2NCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX1RQT0ZGMzIsCiAgQkZEX1JF
TE9DX1NQQVJDX1RMU19UUE9GRjY0LAoKCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQX0hJ
MTYsCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQX0xPMTYsCgoKCgogIEJGRF9SRUxPQ19B
TFBIQV9HUERJU1AsCiMgMjI2NCAiLi4vYmZkL2JmZC5oIgogIEJGRF9SRUxPQ19BTFBIQV9MSVRF
UkFMLAogIEJGRF9SRUxPQ19BTFBIQV9FTEZfTElURVJBTCwKICBCRkRfUkVMT0NfQUxQSEFfTElU
VVNFLAoKCgoKICBCRkRfUkVMT0NfQUxQSEFfSElOVCwKCgoKICBCRkRfUkVMT0NfQUxQSEFfTElO
S0FHRSwKCgoKICBCRkRfUkVMT0NfQUxQSEFfQ09ERUFERFIsCgoKCiAgQkZEX1JFTE9DX0FMUEhB
X0dQUkVMX0hJMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0dQUkVMX0xPMTYsCgoKCgogIEJGRF9SRUxP
Q19BTFBIQV9CUlNHUCwKCgogIEJGRF9SRUxPQ19BTFBIQV9UTFNHRCwKICBCRkRfUkVMT0NfQUxQ
SEFfVExTTERNLAogIEJGRF9SRUxPQ19BTFBIQV9EVFBNT0Q2NCwKICBCRkRfUkVMT0NfQUxQSEFf
R09URFRQUkVMMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0RUUFJFTDY0LAogIEJGRF9SRUxPQ19BTFBI
QV9EVFBSRUxfSEkxNiwKICBCRkRfUkVMT0NfQUxQSEFfRFRQUkVMX0xPMTYsCiAgQkZEX1JFTE9D
X0FMUEhBX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19BTFBIQV9HT1RUUFJFTDE2LAogIEJGRF9SRUxP
Q19BTFBIQV9UUFJFTDY0LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTF9ISTE2LAogIEJGRF9SRUxP
Q19BTFBIQV9UUFJFTF9MTzE2LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTDE2LAoKCgogIEJGRF9S
RUxPQ19NSVBTX0pNUCwKCgogIEJGRF9SRUxPQ19NSVBTMTZfSk1QLAoKCiAgQkZEX1JFTE9DX01J
UFMxNl9HUFJFTCwKCgogIEJGRF9SRUxPQ19ISTE2LAoKCgoKCiAgQkZEX1JFTE9DX0hJMTZfUywK
CgogIEJGRF9SRUxPQ19MTzE2LAoKCiAgQkZEX1JFTE9DX1BDUkVMX0hJMTZfUywKCgogIEJGRF9S
RUxPQ19QQ1JFTF9MTzE2LAoKCiAgQkZEX1JFTE9DX01JUFNfTElURVJBTCwKCgogIEJGRF9SRUxP
Q19NSVBTX0dPVDE2LAogIEJGRF9SRUxPQ19NSVBTX0NBTEwxNiwKICBCRkRfUkVMT0NfTUlQU19H
T1RfSEkxNiwKICBCRkRfUkVMT0NfTUlQU19HT1RfTE8xNiwKICBCRkRfUkVMT0NfTUlQU19DQUxM
X0hJMTYsCiAgQkZEX1JFTE9DX01JUFNfQ0FMTF9MTzE2LAogIEJGRF9SRUxPQ19NSVBTX1NVQiwK
ICBCRkRfUkVMT0NfTUlQU19HT1RfUEFHRSwKICBCRkRfUkVMT0NfTUlQU19HT1RfT0ZTVCwKICBC
RkRfUkVMT0NfTUlQU19HT1RfRElTUCwKICBCRkRfUkVMT0NfTUlQU19TSElGVDUsCiAgQkZEX1JF
TE9DX01JUFNfU0hJRlQ2LAogIEJGRF9SRUxPQ19NSVBTX0lOU0VSVF9BLAogIEJGRF9SRUxPQ19N
SVBTX0lOU0VSVF9CLAogIEJGRF9SRUxPQ19NSVBTX0RFTEVURSwKICBCRkRfUkVMT0NfTUlQU19I
SUdIRVNULAogIEJGRF9SRUxPQ19NSVBTX0hJR0hFUiwKICBCRkRfUkVMT0NfTUlQU19TQ05fRElT
UCwKICBCRkRfUkVMT0NfTUlQU19SRUwxNiwKICBCRkRfUkVMT0NfTUlQU19SRUxHT1QsCiAgQkZE
X1JFTE9DX01JUFNfSkFMUiwKCgogIEJGRF9SRUxPQ19GUlZfTEFCRUwxNiwKICBCRkRfUkVMT0Nf
RlJWX0xBQkVMMjQsCiAgQkZEX1JFTE9DX0ZSVl9MTzE2LAogIEJGRF9SRUxPQ19GUlZfSEkxNiwK
ICBCRkRfUkVMT0NfRlJWX0dQUkVMMTIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTFUxMiwKICBCRkRf
UkVMT0NfRlJWX0dQUkVMMzIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTEhJLAogIEJGRF9SRUxPQ19G
UlZfR1BSRUxMTywKCgoKICBCRkRfUkVMT0NfMzg2X0dPVDMyLAogIEJGRF9SRUxPQ18zODZfUExU
MzIsCiAgQkZEX1JFTE9DXzM4Nl9DT1BZLAogIEJGRF9SRUxPQ18zODZfR0xPQl9EQVQsCiAgQkZE
X1JFTE9DXzM4Nl9KVU1QX1NMT1QsCiAgQkZEX1JFTE9DXzM4Nl9SRUxBVElWRSwKICBCRkRfUkVM
T0NfMzg2X0dPVE9GRiwKICBCRkRfUkVMT0NfMzg2X0dPVFBDLAogIEJGRF9SRUxPQ18zODZfVExT
X1RQT0ZGLAogIEJGRF9SRUxPQ18zODZfVExTX0lFLAogIEJGRF9SRUxPQ18zODZfVExTX0dPVElF
LAogIEJGRF9SRUxPQ18zODZfVExTX0xFLAogIEJGRF9SRUxPQ18zODZfVExTX0dELAogIEJGRF9S
RUxPQ18zODZfVExTX0xETSwKICBCRkRfUkVMT0NfMzg2X1RMU19MRE9fMzIsCiAgQkZEX1JFTE9D
XzM4Nl9UTFNfSUVfMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfTEVfMzIsCiAgQkZEX1JFTE9DXzM4
Nl9UTFNfRFRQTU9EMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfRFRQT0ZGMzIsCiAgQkZEX1JFTE9D
XzM4Nl9UTFNfVFBPRkYzMiwKCgogIEJGRF9SRUxPQ19YODZfNjRfR09UMzIsCiAgQkZEX1JFTE9D
X1g4Nl82NF9QTFQzMiwKICBCRkRfUkVMT0NfWDg2XzY0X0NPUFksCiAgQkZEX1JFTE9DX1g4Nl82
NF9HTE9CX0RBVCwKICBCRkRfUkVMT0NfWDg2XzY0X0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfWDg2
XzY0X1JFTEFUSVZFLAogIEJGRF9SRUxPQ19YODZfNjRfR09UUENSRUwsCiAgQkZEX1JFTE9DX1g4
Nl82NF8zMlMsCiAgQkZEX1JFTE9DX1g4Nl82NF9EVFBNT0Q2NCwKICBCRkRfUkVMT0NfWDg2XzY0
X0RUUE9GRjY0LAogIEJGRF9SRUxPQ19YODZfNjRfVFBPRkY2NCwKICBCRkRfUkVMT0NfWDg2XzY0
X1RMU0dELAogIEJGRF9SRUxPQ19YODZfNjRfVExTTEQsCiAgQkZEX1JFTE9DX1g4Nl82NF9EVFBP
RkYzMiwKICBCRkRfUkVMT0NfWDg2XzY0X0dPVFRQT0ZGLAogIEJGRF9SRUxPQ19YODZfNjRfVFBP
RkYzMiwKCgogIEJGRF9SRUxPQ19OUzMyS19JTU1fOCwKICBCRkRfUkVMT0NfTlMzMktfSU1NXzE2
LAogIEJGRF9SRUxPQ19OUzMyS19JTU1fMzIsCiAgQkZEX1JFTE9DX05TMzJLX0lNTV84X1BDUkVM
LAogIEJGRF9SRUxPQ19OUzMyS19JTU1fMTZfUENSRUwsCiAgQkZEX1JFTE9DX05TMzJLX0lNTV8z
Ml9QQ1JFTCwKICBCRkRfUkVMT0NfTlMzMktfRElTUF84LAogIEJGRF9SRUxPQ19OUzMyS19ESVNQ
XzE2LAogIEJGRF9SRUxPQ19OUzMyS19ESVNQXzMyLAogIEJGRF9SRUxPQ19OUzMyS19ESVNQXzhf
UENSRUwsCiAgQkZEX1JFTE9DX05TMzJLX0RJU1BfMTZfUENSRUwsCiAgQkZEX1JFTE9DX05TMzJL
X0RJU1BfMzJfUENSRUwsCgoKICBCRkRfUkVMT0NfUERQMTFfRElTUF84X1BDUkVMLAogIEJGRF9S
RUxPQ19QRFAxMV9ESVNQXzZfUENSRUwsCgoKICBCRkRfUkVMT0NfUEpfQ09ERV9ISTE2LAogIEJG
RF9SRUxPQ19QSl9DT0RFX0xPMTYsCiAgQkZEX1JFTE9DX1BKX0NPREVfRElSMTYsCiAgQkZEX1JF
TE9DX1BKX0NPREVfRElSMzIsCiAgQkZEX1JFTE9DX1BKX0NPREVfUkVMMTYsCiAgQkZEX1JFTE9D
X1BKX0NPREVfUkVMMzIsCgoKICBCRkRfUkVMT0NfUFBDX0IyNiwKICBCRkRfUkVMT0NfUFBDX0JB
MjYsCiAgQkZEX1JFTE9DX1BQQ19UT0MxNiwKICBCRkRfUkVMT0NfUFBDX0IxNiwKICBCRkRfUkVM
T0NfUFBDX0IxNl9CUlRBS0VOLAogIEJGRF9SRUxPQ19QUENfQjE2X0JSTlRBS0VOLAogIEJGRF9S
RUxPQ19QUENfQkExNiwKICBCRkRfUkVMT0NfUFBDX0JBMTZfQlJUQUtFTiwKICBCRkRfUkVMT0Nf
UFBDX0JBMTZfQlJOVEFLRU4sCiAgQkZEX1JFTE9DX1BQQ19DT1BZLAogIEJGRF9SRUxPQ19QUENf
R0xPQl9EQVQsCiAgQkZEX1JFTE9DX1BQQ19KTVBfU0xPVCwKICBCRkRfUkVMT0NfUFBDX1JFTEFU
SVZFLAogIEJGRF9SRUxPQ19QUENfTE9DQUwyNFBDLAogIEJGRF9SRUxPQ19QUENfRU1CX05BRERS
MzIsCiAgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9OQURE
UjE2X0xPLAogIEJGRF9SRUxPQ19QUENfRU1CX05BRERSMTZfSEksCiAgQkZEX1JFTE9DX1BQQ19F
TUJfTkFERFIxNl9IQSwKICBCRkRfUkVMT0NfUFBDX0VNQl9TREFJMTYsCiAgQkZEX1JFTE9DX1BQ
Q19FTUJfU0RBMkkxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9TREEyUkVMLAogIEJGRF9SRUxPQ19Q
UENfRU1CX1NEQTIxLAogIEJGRF9SRUxPQ19QUENfRU1CX01SS1JFRiwKICBCRkRfUkVMT0NfUFBD
X0VNQl9SRUxTRUMxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9MTywKICBCRkRfUkVMT0Nf
UFBDX0VNQl9SRUxTVF9ISSwKICBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9IQSwKICBCRkRfUkVM
T0NfUFBDX0VNQl9CSVRfRkxELAogIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNEQSwKICBCRkRfUkVM
T0NfUFBDNjRfSElHSEVSLAogIEJGRF9SRUxPQ19QUEM2NF9ISUdIRVJfUywKICBCRkRfUkVMT0Nf
UFBDNjRfSElHSEVTVCwKICBCRkRfUkVMT0NfUFBDNjRfSElHSEVTVF9TLAogIEJGRF9SRUxPQ19Q
UEM2NF9UT0MxNl9MTywKICBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfSEksCiAgQkZEX1JFTE9DX1BQ
QzY0X1RPQzE2X0hBLAogIEJGRF9SRUxPQ19QUEM2NF9UT0MsCiAgQkZEX1JFTE9DX1BQQzY0X1BM
VEdPVDE2LAogIEJGRF9SRUxPQ19QUEM2NF9QTFRHT1QxNl9MTywKICBCRkRfUkVMT0NfUFBDNjRf
UExUR09UMTZfSEksCiAgQkZEX1JFTE9DX1BQQzY0X1BMVEdPVDE2X0hBLAogIEJGRF9SRUxPQ19Q
UEM2NF9BRERSMTZfRFMsCiAgQkZEX1JFTE9DX1BQQzY0X0FERFIxNl9MT19EUywKICBCRkRfUkVM
T0NfUFBDNjRfR09UMTZfRFMsCiAgQkZEX1JFTE9DX1BQQzY0X0dPVDE2X0xPX0RTLAogIEJGRF9S
RUxPQ19QUEM2NF9QTFQxNl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfU0VDVE9GRl9EUywKICBC
RkRfUkVMT0NfUFBDNjRfU0VDVE9GRl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfRFMs
CiAgQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0xPX0RTLAogIEJGRF9SRUxPQ19QUEM2NF9QTFRHT1Qx
Nl9EUywKICBCRkRfUkVMT0NfUFBDNjRfUExUR09UMTZfTE9fRFMsCgoKICBCRkRfUkVMT0NfUFBD
X1RMUywKICBCRkRfUkVMT0NfUFBDX0RUUE1PRCwKICBCRkRfUkVMT0NfUFBDX1RQUkVMMTYsCiAg
QkZEX1JFTE9DX1BQQ19UUFJFTDE2X0xPLAogIEJGRF9SRUxPQ19QUENfVFBSRUwxNl9ISSwKICBC
RkRfUkVMT0NfUFBDX1RQUkVMMTZfSEEsCiAgQkZEX1JFTE9DX1BQQ19UUFJFTCwKICBCRkRfUkVM
T0NfUFBDX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19QUENfRFRQUkVMMTZfTE8sCiAgQkZEX1JFTE9D
X1BQQ19EVFBSRUwxNl9ISSwKICBCRkRfUkVMT0NfUFBDX0RUUFJFTDE2X0hBLAogIEJGRF9SRUxP
Q19QUENfRFRQUkVMLAogIEJGRF9SRUxPQ19QUENfR09UX1RMU0dEMTYsCiAgQkZEX1JFTE9DX1BQ
Q19HT1RfVExTR0QxNl9MTywKICBCRkRfUkVMT0NfUFBDX0dPVF9UTFNHRDE2X0hJLAogIEJGRF9S
RUxPQ19QUENfR09UX1RMU0dEMTZfSEEsCiAgQkZEX1JFTE9DX1BQQ19HT1RfVExTTEQxNiwKICBC
RkRfUkVMT0NfUFBDX0dPVF9UTFNMRDE2X0xPLAogIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZf
SEksCiAgQkZEX1JFTE9DX1BQQ19HT1RfVExTTEQxNl9IQSwKICBCRkRfUkVMT0NfUFBDX0dPVF9U
UFJFTDE2LAogIEJGRF9SRUxPQ19QUENfR09UX1RQUkVMMTZfTE8sCiAgQkZEX1JFTE9DX1BQQ19H
T1RfVFBSRUwxNl9ISSwKICBCRkRfUkVMT0NfUFBDX0dPVF9UUFJFTDE2X0hBLAogIEJGRF9SRUxP
Q19QUENfR09UX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0xPLAogIEJG
RF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0hJLAogIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2
X0hBLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0RTLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJF
TDE2X0xPX0RTLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFUiwKICBCRkRfUkVMT0Nf
UFBDNjRfVFBSRUwxNl9ISUdIRVJBLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFU1Qs
CiAgQkZEX1JFTE9DX1BQQzY0X1RQUkVMMTZfSElHSEVTVEEsCiAgQkZEX1JFTE9DX1BQQzY0X0RU
UFJFTDE2X0RTLAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9MT19EUywKICBCRkRfUkVMT0Nf
UFBDNjRfRFRQUkVMMTZfSElHSEVSLAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVJB
LAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNULAogIEJGRF9SRUxPQ19QUEM2NF9E
VFBSRUwxNl9ISUdIRVNUQSwKCgogIEJGRF9SRUxPQ19JMzcwX0QxMiwKCgoKCiAgQkZEX1JFTE9D
X0NUT1IsCgoKCiAgQkZEX1JFTE9DX0FSTV9QQ1JFTF9CUkFOQ0gsCgoKCgogIEJGRF9SRUxPQ19B
Uk1fUENSRUxfQkxYLAoKCgoKICBCRkRfUkVMT0NfVEhVTUJfUENSRUxfQkxYLAoKCgogIEJGRF9S
RUxPQ19BUk1fSU1NRURJQVRFLAogIEJGRF9SRUxPQ19BUk1fQURSTF9JTU1FRElBVEUsCiAgQkZE
X1JFTE9DX0FSTV9PRkZTRVRfSU1NLAogIEJGRF9SRUxPQ19BUk1fU0hJRlRfSU1NLAogIEJGRF9S
RUxPQ19BUk1fU1dJLAogIEJGRF9SRUxPQ19BUk1fTVVMVEksCiAgQkZEX1JFTE9DX0FSTV9DUF9P
RkZfSU1NLAogIEJGRF9SRUxPQ19BUk1fQURSX0lNTSwKICBCRkRfUkVMT0NfQVJNX0xEUl9JTU0s
CiAgQkZEX1JFTE9DX0FSTV9MSVRFUkFMLAogIEJGRF9SRUxPQ19BUk1fSU5fUE9PTCwKICBCRkRf
UkVMT0NfQVJNX09GRlNFVF9JTU04LAogIEJGRF9SRUxPQ19BUk1fSFdMSVRFUkFMLAogIEJGRF9S
RUxPQ19BUk1fVEhVTUJfQURELAogIEJGRF9SRUxPQ19BUk1fVEhVTUJfSU1NLAogIEJGRF9SRUxP
Q19BUk1fVEhVTUJfU0hJRlQsCiAgQkZEX1JFTE9DX0FSTV9USFVNQl9PRkZTRVQsCiAgQkZEX1JF
TE9DX0FSTV9HT1QxMiwKICBCRkRfUkVMT0NfQVJNX0dPVDMyLAogIEJGRF9SRUxPQ19BUk1fSlVN
UF9TTE9ULAogIEJGRF9SRUxPQ19BUk1fQ09QWSwKICBCRkRfUkVMT0NfQVJNX0dMT0JfREFULAog
IEJGRF9SRUxPQ19BUk1fUExUMzIsCiAgQkZEX1JFTE9DX0FSTV9SRUxBVElWRSwKICBCRkRfUkVM
T0NfQVJNX0dPVE9GRiwKICBCRkRfUkVMT0NfQVJNX0dPVFBDLAoKCiAgQkZEX1JFTE9DX1NIX1BD
RElTUDhCWTIsCiAgQkZEX1JFTE9DX1NIX1BDRElTUDEyQlkyLAogIEJGRF9SRUxPQ19TSF9JTU00
LAogIEJGRF9SRUxPQ19TSF9JTU00QlkyLAogIEJGRF9SRUxPQ19TSF9JTU00Qlk0LAogIEJGRF9S
RUxPQ19TSF9JTU04LAogIEJGRF9SRUxPQ19TSF9JTU04QlkyLAogIEJGRF9SRUxPQ19TSF9JTU04
Qlk0LAogIEJGRF9SRUxPQ19TSF9QQ1JFTElNTThCWTIsCiAgQkZEX1JFTE9DX1NIX1BDUkVMSU1N
OEJZNCwKICBCRkRfUkVMT0NfU0hfU1dJVENIMTYsCiAgQkZEX1JFTE9DX1NIX1NXSVRDSDMyLAog
IEJGRF9SRUxPQ19TSF9VU0VTLAogIEJGRF9SRUxPQ19TSF9DT1VOVCwKICBCRkRfUkVMT0NfU0hf
QUxJR04sCiAgQkZEX1JFTE9DX1NIX0NPREUsCiAgQkZEX1JFTE9DX1NIX0RBVEEsCiAgQkZEX1JF
TE9DX1NIX0xBQkVMLAogIEJGRF9SRUxPQ19TSF9MT09QX1NUQVJULAogIEJGRF9SRUxPQ19TSF9M
T09QX0VORCwKICBCRkRfUkVMT0NfU0hfQ09QWSwKICBCRkRfUkVMT0NfU0hfR0xPQl9EQVQsCiAg
QkZEX1JFTE9DX1NIX0pNUF9TTE9ULAogIEJGRF9SRUxPQ19TSF9SRUxBVElWRSwKICBCRkRfUkVM
T0NfU0hfR09UUEMsCiAgQkZEX1JFTE9DX1NIX0dPVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09U
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hfR09U
X0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVFBMVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UUExU
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RQTFRfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hf
R09UUExUX0hJMTYsCiAgQkZEX1JFTE9DX1NIX1BMVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfUExU
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9QTFRfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hfUExU
X0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVE9GRl9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UT0ZG
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RPRkZfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hf
R09UT0ZGX0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVFBDX0xPVzE2LAogIEJGRF9SRUxPQ19TSF9H
T1RQQ19NRURMT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UUENfTUVESEkxNiwKICBCRkRfUkVMT0Nf
U0hfR09UUENfSEkxNiwKICBCRkRfUkVMT0NfU0hfQ09QWTY0LAogIEJGRF9SRUxPQ19TSF9HTE9C
X0RBVDY0LAogIEJGRF9SRUxPQ19TSF9KTVBfU0xPVDY0LAogIEJGRF9SRUxPQ19TSF9SRUxBVElW
RTY0LAogIEJGRF9SRUxPQ19TSF9HT1QxMEJZNCwKICBCRkRfUkVMT0NfU0hfR09UMTBCWTgsCiAg
QkZEX1JFTE9DX1NIX0dPVFBMVDEwQlk0LAogIEJGRF9SRUxPQ19TSF9HT1RQTFQxMEJZOCwKICBC
RkRfUkVMT0NfU0hfR09UUExUMzIsCiAgQkZEX1JFTE9DX1NIX1NITUVESUFfQ09ERSwKICBCRkRf
UkVMT0NfU0hfSU1NVTUsCiAgQkZEX1JFTE9DX1NIX0lNTVM2LAogIEJGRF9SRUxPQ19TSF9JTU1T
NkJZMzIsCiAgQkZEX1JFTE9DX1NIX0lNTVU2LAogIEJGRF9SRUxPQ19TSF9JTU1TMTAsCiAgQkZE
X1JFTE9DX1NIX0lNTVMxMEJZMiwKICBCRkRfUkVMT0NfU0hfSU1NUzEwQlk0LAogIEJGRF9SRUxP
Q19TSF9JTU1TMTBCWTgsCiAgQkZEX1JFTE9DX1NIX0lNTVMxNiwKICBCRkRfUkVMT0NfU0hfSU1N
VTE2LAogIEJGRF9SRUxPQ19TSF9JTU1fTE9XMTYsCiAgQkZEX1JFTE9DX1NIX0lNTV9MT1cxNl9Q
Q1JFTCwKICBCRkRfUkVMT0NfU0hfSU1NX01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9JTU1fTUVE
TE9XMTZfUENSRUwsCiAgQkZEX1JFTE9DX1NIX0lNTV9NRURISTE2LAogIEJGRF9SRUxPQ19TSF9J
TU1fTUVESEkxNl9QQ1JFTCwKICBCRkRfUkVMT0NfU0hfSU1NX0hJMTYsCiAgQkZEX1JFTE9DX1NI
X0lNTV9ISTE2X1BDUkVMLAogIEJGRF9SRUxPQ19TSF9QVF8xNiwKICBCRkRfUkVMT0NfU0hfVExT
X0dEXzMyLAogIEJGRF9SRUxPQ19TSF9UTFNfTERfMzIsCiAgQkZEX1JFTE9DX1NIX1RMU19MRE9f
MzIsCiAgQkZEX1JFTE9DX1NIX1RMU19JRV8zMiwKICBCRkRfUkVMT0NfU0hfVExTX0xFXzMyLAog
IEJGRF9SRUxPQ19TSF9UTFNfRFRQTU9EMzIsCiAgQkZEX1JFTE9DX1NIX1RMU19EVFBPRkYzMiwK
ICBCRkRfUkVMT0NfU0hfVExTX1RQT0ZGMzIsCgoKCiAgQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JS
QU5DSDksCiAgQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JSQU5DSDEyLAogIEJGRF9SRUxPQ19USFVN
Ql9QQ1JFTF9CUkFOQ0gyMywKCgoKCgogIEJGRF9SRUxPQ19BUkNfQjIyX1BDUkVMLAoKCgoKICBC
RkRfUkVMT0NfQVJDX0IyNiwKCgoKCiAgQkZEX1JFTE9DX0QxMFZfMTBfUENSRUxfUiwKCgoKCgoK
ICBCRkRfUkVMT0NfRDEwVl8xMF9QQ1JFTF9MLAoKCgogIEJGRF9SRUxPQ19EMTBWXzE4LAoKCgog
IEJGRF9SRUxPQ19EMTBWXzE4X1BDUkVMLAoKCgogIEJGRF9SRUxPQ19EMzBWXzYsCgoKCiAgQkZE
X1JFTE9DX0QzMFZfOV9QQ1JFTCwKCgoKCgogIEJGRF9SRUxPQ19EMzBWXzlfUENSRUxfUiwKCgoK
ICBCRkRfUkVMT0NfRDMwVl8xNSwKCgoKICBCRkRfUkVMT0NfRDMwVl8xNV9QQ1JFTCwKCgoKCgog
IEJGRF9SRUxPQ19EMzBWXzE1X1BDUkVMX1IsCgoKCiAgQkZEX1JFTE9DX0QzMFZfMjEsCgoKCiAg
QkZEX1JFTE9DX0QzMFZfMjFfUENSRUwsCgoKCgoKICBCRkRfUkVMT0NfRDMwVl8yMV9QQ1JFTF9S
LAoKCiAgQkZEX1JFTE9DX0QzMFZfMzIsCgoKICBCRkRfUkVMT0NfRDMwVl8zMl9QQ1JFTCwKCgog
IEJGRF9SRUxPQ19ETFhfSEkxNl9TLAoKCiAgQkZEX1JFTE9DX0RMWF9MTzE2LAoKCiAgQkZEX1JF
TE9DX0RMWF9KTVAyNiwKCgoKICBCRkRfUkVMT0NfTTMyUl8yNCwKCgogIEJGRF9SRUxPQ19NMzJS
XzEwX1BDUkVMLAoKCiAgQkZEX1JFTE9DX00zMlJfMThfUENSRUwsCgoKICBCRkRfUkVMT0NfTTMy
Ul8yNl9QQ1JFTCwKCgoKICBCRkRfUkVMT0NfTTMyUl9ISTE2X1VMTywKCgoKICBCRkRfUkVMT0Nf
TTMyUl9ISTE2X1NMTywKCgogIEJGRF9SRUxPQ19NMzJSX0xPMTYsCgoKCiAgQkZEX1JFTE9DX00z
MlJfU0RBMTYsCgoKICBCRkRfUkVMT0NfVjg1MF85X1BDUkVMLAoKCiAgQkZEX1JFTE9DX1Y4NTBf
MjJfUENSRUwsCgoKICBCRkRfUkVMT0NfVjg1MF9TREFfMTZfMTZfT0ZGU0VULAoKCgogIEJGRF9S
RUxPQ19WODUwX1NEQV8xNV8xNl9PRkZTRVQsCgoKICBCRkRfUkVMT0NfVjg1MF9aREFfMTZfMTZf
T0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUwX1pEQV8xNV8xNl9PRkZTRVQsCgoKCiAgQkZEX1JF
TE9DX1Y4NTBfVERBXzZfOF9PRkZTRVQsCgoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzdfOF9PRkZT
RVQsCgoKICBCRkRfUkVMT0NfVjg1MF9UREFfN183X09GRlNFVCwKCgogIEJGRF9SRUxPQ19WODUw
X1REQV8xNl8xNl9PRkZTRVQsCgoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzRfNV9PRkZTRVQsCgoK
ICBCRkRfUkVMT0NfVjg1MF9UREFfNF80X09GRlNFVCwKCgoKICBCRkRfUkVMT0NfVjg1MF9TREFf
MTZfMTZfU1BMSVRfT0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUwX1pEQV8xNl8xNl9TUExJVF9P
RkZTRVQsCgoKICBCRkRfUkVMT0NfVjg1MF9DQUxMVF82XzdfT0ZGU0VULAoKCiAgQkZEX1JFTE9D
X1Y4NTBfQ0FMTFRfMTZfMTZfT0ZGU0VULAoKCiAgQkZEX1JFTE9DX1Y4NTBfTE9OR0NBTEwsCgoK
ICBCRkRfUkVMT0NfVjg1MF9MT05HSlVNUCwKCgogIEJGRF9SRUxPQ19WODUwX0FMSUdOLAoKCgog
IEJGRF9SRUxPQ19NTjEwMzAwXzMyX1BDUkVMLAoKCgogIEJGRF9SRUxPQ19NTjEwMzAwXzE2X1BD
UkVMLAoKCgoKICBCRkRfUkVMT0NfVElDMzBfTERQLAoKCgoKICBCRkRfUkVMT0NfVElDNTRYX1BB
UlRMUzcsCgoKCgogIEJGRF9SRUxPQ19USUM1NFhfUEFSVE1TOSwKCgogIEJGRF9SRUxPQ19USUM1
NFhfMjMsCgoKCgogIEJGRF9SRUxPQ19USUM1NFhfMTZfT0ZfMjMsCgoKCgogIEJGRF9SRUxPQ19U
SUM1NFhfTVM3X09GXzIzLAoKCiAgQkZEX1JFTE9DX0ZSMzBfNDgsCgoKCiAgQkZEX1JFTE9DX0ZS
MzBfMjAsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfNl9JTl80LAoKCgogIEJGRF9SRUxPQ19GUjMwXzhf
SU5fOCwKCgoKICBCRkRfUkVMT0NfRlIzMF85X0lOXzgsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfMTBf
SU5fOCwKCgoKICBCRkRfUkVMT0NfRlIzMF85X1BDUkVMLAoKCgogIEJGRF9SRUxPQ19GUjMwXzEy
X1BDUkVMLAoKCiAgQkZEX1JFTE9DX01DT1JFX1BDUkVMX0lNTThCWTQsCiAgQkZEX1JFTE9DX01D
T1JFX1BDUkVMX0lNTTExQlkyLAogIEJGRF9SRUxPQ19NQ09SRV9QQ1JFTF9JTU00QlkyLAogIEJG
RF9SRUxPQ19NQ09SRV9QQ1JFTF8zMiwKICBCRkRfUkVMT0NfTUNPUkVfUENSRUxfSlNSX0lNTTEx
QlkyLAogIEJGRF9SRUxPQ19NQ09SRV9SVkEsCgoKICBCRkRfUkVMT0NfTU1JWF9HRVRBLAogIEJG
RF9SRUxPQ19NTUlYX0dFVEFfMSwKICBCRkRfUkVMT0NfTU1JWF9HRVRBXzIsCiAgQkZEX1JFTE9D
X01NSVhfR0VUQV8zLAoKCiAgQkZEX1JFTE9DX01NSVhfQ0JSQU5DSCwKICBCRkRfUkVMT0NfTU1J
WF9DQlJBTkNIX0osCiAgQkZEX1JFTE9DX01NSVhfQ0JSQU5DSF8xLAogIEJGRF9SRUxPQ19NTUlY
X0NCUkFOQ0hfMiwKICBCRkRfUkVMT0NfTU1JWF9DQlJBTkNIXzMsCgoKICBCRkRfUkVMT0NfTU1J
WF9QVVNISiwKICBCRkRfUkVMT0NfTU1JWF9QVVNISl8xLAogIEJGRF9SRUxPQ19NTUlYX1BVU0hK
XzIsCiAgQkZEX1JFTE9DX01NSVhfUFVTSEpfMywKCgogIEJGRF9SRUxPQ19NTUlYX0pNUCwKICBC
RkRfUkVMT0NfTU1JWF9KTVBfMSwKICBCRkRfUkVMT0NfTU1JWF9KTVBfMiwKICBCRkRfUkVMT0Nf
TU1JWF9KTVBfMywKCgoKICBCRkRfUkVMT0NfTU1JWF9BRERSMTksCgoKICBCRkRfUkVMT0NfTU1J
WF9BRERSMjcsCgoKCiAgQkZEX1JFTE9DX01NSVhfUkVHX09SX0JZVEUsCgoKCiAgQkZEX1JFTE9D
X01NSVhfUkVHLAoKCgogIEJGRF9SRUxPQ19NTUlYX0JBU0VfUExVU19PRkZTRVQsCgoKCiAgQkZE
X1JFTE9DX01NSVhfTE9DQUwsCgoKCiAgQkZEX1JFTE9DX0FWUl83X1BDUkVMLAoKCgogIEJGRF9S
RUxPQ19BVlJfMTNfUENSRUwsCgoKCiAgQkZEX1JFTE9DX0FWUl8xNl9QTSwKCgoKICBCRkRfUkVM
T0NfQVZSX0xPOF9MREksCgoKCiAgQkZEX1JFTE9DX0FWUl9ISThfTERJLAoKCgogIEJGRF9SRUxP
Q19BVlJfSEg4X0xESSwKCgoKICBCRkRfUkVMT0NfQVZSX0xPOF9MRElfTkVHLAoKCgoKICBCRkRf
UkVMT0NfQVZSX0hJOF9MRElfTkVHLAoKCgoKICBCRkRfUkVMT0NfQVZSX0hIOF9MRElfTkVHLAoK
CgogIEJGRF9SRUxPQ19BVlJfTE84X0xESV9QTSwKCgoKICBCRkRfUkVMT0NfQVZSX0hJOF9MRElf
UE0sCgoKCiAgQkZEX1JFTE9DX0FWUl9ISDhfTERJX1BNLAoKCgogIEJGRF9SRUxPQ19BVlJfTE84
X0xESV9QTV9ORUcsCgoKCgogIEJGRF9SRUxPQ19BVlJfSEk4X0xESV9QTV9ORUcsCgoKCgogIEJG
RF9SRUxPQ19BVlJfSEg4X0xESV9QTV9ORUcsCgoKCiAgQkZEX1JFTE9DX0FWUl9DQUxMLAoKCiAg
QkZEX1JFTE9DXzM5MF8xMiwKCgogIEJGRF9SRUxPQ18zOTBfR09UMTIsCgoKICBCRkRfUkVMT0Nf
MzkwX1BMVDMyLAoKCiAgQkZEX1JFTE9DXzM5MF9DT1BZLAoKCiAgQkZEX1JFTE9DXzM5MF9HTE9C
X0RBVCwKCgogIEJGRF9SRUxPQ18zOTBfSk1QX1NMT1QsCgoKICBCRkRfUkVMT0NfMzkwX1JFTEFU
SVZFLAoKCiAgQkZEX1JFTE9DXzM5MF9HT1RQQywKCgogIEJGRF9SRUxPQ18zOTBfR09UMTYsCgoK
ICBCRkRfUkVMT0NfMzkwX1BDMTZEQkwsCgoKICBCRkRfUkVMT0NfMzkwX1BMVDE2REJMLAoKCiAg
QkZEX1JFTE9DXzM5MF9QQzMyREJMLAoKCiAgQkZEX1JFTE9DXzM5MF9QTFQzMkRCTCwKCgogIEJG
RF9SRUxPQ18zOTBfR09UUENEQkwsCgoKICBCRkRfUkVMT0NfMzkwX0dPVDY0LAoKCiAgQkZEX1JF
TE9DXzM5MF9QTFQ2NCwKCgogIEJGRF9SRUxPQ18zOTBfR09URU5ULAoKCiAgQkZEX1JFTE9DXzM5
MF9HT1RPRkY2NCwKCgogIEJGRF9SRUxPQ18zOTBfR09UUExUMTIsCgoKICBCRkRfUkVMT0NfMzkw
X0dPVFBMVDE2LAoKCiAgQkZEX1JFTE9DXzM5MF9HT1RQTFQzMiwKCgogIEJGRF9SRUxPQ18zOTBf
R09UUExUNjQsCgoKICBCRkRfUkVMT0NfMzkwX0dPVFBMVEVOVCwKCgogIEJGRF9SRUxPQ18zOTBf
UExUT0ZGMTYsCgoKICBCRkRfUkVMT0NfMzkwX1BMVE9GRjMyLAoKCiAgQkZEX1JFTE9DXzM5MF9Q
TFRPRkY2NCwKCgogIEJGRF9SRUxPQ18zOTBfVExTX0xPQUQsCiAgQkZEX1JFTE9DXzM5MF9UTFNf
R0RDQUxMLAogIEJGRF9SRUxPQ18zOTBfVExTX0xEQ0FMTCwKICBCRkRfUkVMT0NfMzkwX1RMU19H
RDMyLAogIEJGRF9SRUxPQ18zOTBfVExTX0dENjQsCiAgQkZEX1JFTE9DXzM5MF9UTFNfR09USUUx
MiwKICBCRkRfUkVMT0NfMzkwX1RMU19HT1RJRTMyLAogIEJGRF9SRUxPQ18zOTBfVExTX0dPVElF
NjQsCiAgQkZEX1JFTE9DXzM5MF9UTFNfTERNMzIsCiAgQkZEX1JFTE9DXzM5MF9UTFNfTERNNjQs
CiAgQkZEX1JFTE9DXzM5MF9UTFNfSUUzMiwKICBCRkRfUkVMT0NfMzkwX1RMU19JRTY0LAogIEJG
RF9SRUxPQ18zOTBfVExTX0lFRU5ULAogIEJGRF9SRUxPQ18zOTBfVExTX0xFMzIsCiAgQkZEX1JF
TE9DXzM5MF9UTFNfTEU2NCwKICBCRkRfUkVMT0NfMzkwX1RMU19MRE8zMiwKICBCRkRfUkVMT0Nf
MzkwX1RMU19MRE82NCwKICBCRkRfUkVMT0NfMzkwX1RMU19EVFBNT0QsCiAgQkZEX1JFTE9DXzM5
MF9UTFNfRFRQT0ZGLAogIEJGRF9SRUxPQ18zOTBfVExTX1RQT0ZGLAoKCiAgQkZEX1JFTE9DX0lQ
MktfRlI5LAoKCiAgQkZEX1JFTE9DX0lQMktfQkFOSywKCgogIEJGRF9SRUxPQ19JUDJLX0FERFIx
NkNKUCwKCgogIEJGRF9SRUxPQ19JUDJLX1BBR0UzLAoKCiAgQkZEX1JFTE9DX0lQMktfTE84REFU
QSwKICBCRkRfUkVMT0NfSVAyS19ISThEQVRBLAogIEJGRF9SRUxPQ19JUDJLX0VYOERBVEEsCgoK
ICBCRkRfUkVMT0NfSVAyS19MTzhJTlNOLAogIEJGRF9SRUxPQ19JUDJLX0hJOElOU04sCgoKICBC
RkRfUkVMT0NfSVAyS19QQ19TS0lQLAoKCiAgQkZEX1JFTE9DX0lQMktfVEVYVCwKCgogIEJGRF9S
RUxPQ19JUDJLX0ZSX09GRlNFVCwKCgogIEJGRF9SRUxPQ19WUEU0S01BVEhfREFUQSwKICBCRkRf
UkVMT0NfVlBFNEtNQVRIX0lOU04sCiMgMzE5OCAiLi4vYmZkL2JmZC5oIgogIEJGRF9SRUxPQ19W
VEFCTEVfSU5IRVJJVCwKICBCRkRfUkVMT0NfVlRBQkxFX0VOVFJZLAoKCiAgQkZEX1JFTE9DX0lB
NjRfSU1NMTQsCiAgQkZEX1JFTE9DX0lBNjRfSU1NMjIsCiAgQkZEX1JFTE9DX0lBNjRfSU1NNjQs
CiAgQkZEX1JFTE9DX0lBNjRfRElSMzJNU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElSMzJMU0IsCiAg
QkZEX1JFTE9DX0lBNjRfRElSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElSNjRMU0IsCiAgQkZE
X1JFTE9DX0lBNjRfR1BSRUwyMiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0SSwKICBCRkRfUkVM
T0NfSUE2NF9HUFJFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0dQUkVMMzJMU0IsCiAgQkZEX1JF
TE9DX0lBNjRfR1BSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0TFNCLAogIEJGRF9S
RUxPQ19JQTY0X0xUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkY2NEksCiAgQkZEX1JFTE9D
X0lBNjRfUExUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfUExUT0ZGNjRJLAogIEJGRF9SRUxPQ19J
QTY0X1BMVE9GRjY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BMVE9GRjY0TFNCLAogIEJGRF9SRUxP
Q19JQTY0X0ZQVFI2NEksCiAgQkZEX1JFTE9DX0lBNjRfRlBUUjMyTVNCLAogIEJGRF9SRUxPQ19J
QTY0X0ZQVFIzMkxTQiwKICBCRkRfUkVMT0NfSUE2NF9GUFRSNjRNU0IsCiAgQkZEX1JFTE9DX0lB
NjRfRlBUUjY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMMjFCLAogIEJGRF9SRUxPQ19JQTY0
X1BDUkVMMjFCSSwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIxTSwKICBCRkRfUkVMT0NfSUE2NF9Q
Q1JFTDIxRiwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIyLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVM
NjBCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRJLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMMzJN
U0IsCiAgQkZEX1JFTE9DX0lBNjRfUENSRUwzMkxTQiwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDY0
TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZf
RlBUUjIyLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFI2NEksCiAgQkZEX1JFTE9DX0lBNjRf
TFRPRkZfRlBUUjMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFIzMkxTQiwKICBCRkRf
UkVMT0NfSUE2NF9MVE9GRl9GUFRSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZfRlBUUjY0
TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JF
TDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1NF
R1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0
X1NFQ1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDY0TVNCLAogIEJGRF9SRUxPQ19J
QTY0X1NFQ1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDMyTVNCLAogIEJGRF9SRUxPQ19J
QTY0X1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0
X1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0xU
VjMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjY0
TFNCLAogIEJGRF9SRUxPQ19JQTY0X0lQTFRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfSVBMVExTQiwK
ICBCRkRfUkVMT0NfSUE2NF9DT1BZLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGMjJYLAogIEJGRF9S
RUxPQ19JQTY0X0xEWE1PViwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDE0LAogIEJGRF9SRUxPQ19J
QTY0X1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfVFBSRUw2NEksCiAgQkZEX1JFTE9DX0lBNjRf
VFBSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0
X0xUT0ZGX1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfRFRQTU9ENjRNU0IsCiAgQkZEX1JFTE9D
X0lBNjRfRFRQTU9ENjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZfRFRQTU9EMjIsCiAgQkZE
X1JFTE9DX0lBNjRfRFRQUkVMMTQsCiAgQkZEX1JFTE9DX0lBNjRfRFRQUkVMMjIsCiAgQkZEX1JF
TE9DX0lBNjRfRFRQUkVMNjRJLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDMyTVNCLAogIEJGRF9S
RUxPQ19JQTY0X0RUUFJFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDY0TVNCLAogIEJG
RF9SRUxPQ19JQTY0X0RUUFJFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0RUUFJFTDIy
LAoKCgogIEJGRF9SRUxPQ19NNjhIQzExX0hJOCwKCgoKICBCRkRfUkVMT0NfTTY4SEMxMV9MTzgs
CgoKCiAgQkZEX1JFTE9DX002OEhDMTFfM0IsCgoKCgoKCiAgQkZEX1JFTE9DX002OEhDMTFfUkxf
SlVNUCwKCgoKCgogIEJGRF9SRUxPQ19NNjhIQzExX1JMX0dST1VQLAoKCgoKCiAgQkZEX1JFTE9D
X002OEhDMTFfTE8xNiwKCgoKCgogIEJGRF9SRUxPQ19NNjhIQzExX1BBR0UsCgoKCgoKICBCRkRf
UkVMT0NfTTY4SEMxMV8yNCwKCgoKICBCRkRfUkVMT0NfQ1JJU19CRElTUDgsCiAgQkZEX1JFTE9D
X0NSSVNfVU5TSUdORURfNSwKICBCRkRfUkVMT0NfQ1JJU19TSUdORURfNiwKICBCRkRfUkVMT0Nf
Q1JJU19VTlNJR05FRF82LAogIEJGRF9SRUxPQ19DUklTX1VOU0lHTkVEXzQsCgoKICBCRkRfUkVM
T0NfQ1JJU19DT1BZLAogIEJGRF9SRUxPQ19DUklTX0dMT0JfREFULAogIEJGRF9SRUxPQ19DUklT
X0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfQ1JJU19SRUxBVElWRSwKCgogIEJGRF9SRUxPQ19DUklT
XzMyX0dPVCwKCgogIEJGRF9SRUxPQ19DUklTXzE2X0dPVCwKCgogIEJGRF9SRUxPQ19DUklTXzMy
X0dPVFBMVCwKCgogIEJGRF9SRUxPQ19DUklTXzE2X0dPVFBMVCwKCgogIEJGRF9SRUxPQ19DUklT
XzMyX0dPVFJFTCwKCgogIEJGRF9SRUxPQ19DUklTXzMyX1BMVF9HT1RSRUwsCgoKICBCRkRfUkVM
T0NfQ1JJU18zMl9QTFRfUENSRUwsCgoKICBCRkRfUkVMT0NfODYwX0NPUFksCiAgQkZEX1JFTE9D
Xzg2MF9HTE9CX0RBVCwKICBCRkRfUkVMT0NfODYwX0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfODYw
X1JFTEFUSVZFLAogIEJGRF9SRUxPQ184NjBfUEMyNiwKICBCRkRfUkVMT0NfODYwX1BMVDI2LAog
IEJGRF9SRUxPQ184NjBfUEMxNiwKICBCRkRfUkVMT0NfODYwX0xPVzAsCiAgQkZEX1JFTE9DXzg2
MF9TUExJVDAsCiAgQkZEX1JFTE9DXzg2MF9MT1cxLAogIEJGRF9SRUxPQ184NjBfU1BMSVQxLAog
IEJGRF9SRUxPQ184NjBfTE9XMiwKICBCRkRfUkVMT0NfODYwX1NQTElUMiwKICBCRkRfUkVMT0Nf
ODYwX0xPVzMsCiAgQkZEX1JFTE9DXzg2MF9MT0dPVDAsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVDAs
CiAgQkZEX1JFTE9DXzg2MF9MT0dPVDEsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVDEsCiAgQkZEX1JF
TE9DXzg2MF9MT0dPVE9GRjAsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVE9GRjAsCiAgQkZEX1JFTE9D
Xzg2MF9MT0dPVE9GRjEsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVE9GRjEsCiAgQkZEX1JFTE9DXzg2
MF9MT0dPVE9GRjIsCiAgQkZEX1JFTE9DXzg2MF9MT0dPVE9GRjMsCiAgQkZEX1JFTE9DXzg2MF9M
T1BDLAogIEJGRF9SRUxPQ184NjBfSElHSEFESiwKICBCRkRfUkVMT0NfODYwX0hBR09ULAogIEJG
RF9SRUxPQ184NjBfSEFHT1RPRkYsCiAgQkZEX1JFTE9DXzg2MF9IQVBDLAogIEJGRF9SRUxPQ184
NjBfSElHSCwKICBCRkRfUkVMT0NfODYwX0hJR09ULAogIEJGRF9SRUxPQ184NjBfSElHT1RPRkYs
CgoKICBCRkRfUkVMT0NfT1BFTlJJU0NfQUJTXzI2LAogIEJGRF9SRUxPQ19PUEVOUklTQ19SRUxf
MjYsCgoKICBCRkRfUkVMT0NfSDhfRElSMTZBOCwKICBCRkRfUkVMT0NfSDhfRElSMTZSOCwKICBC
RkRfUkVMT0NfSDhfRElSMjRBOCwKICBCRkRfUkVMT0NfSDhfRElSMjRSOCwKICBCRkRfUkVMT0Nf
SDhfRElSMzJBMTYsCgoKICBCRkRfUkVMT0NfWFNUT1JNWTE2X1JFTF8xMiwKICBCRkRfUkVMT0Nf
WFNUT1JNWTE2XzEyLAogIEJGRF9SRUxPQ19YU1RPUk1ZMTZfMjQsCiAgQkZEX1JFTE9DX1hTVE9S
TVkxNl9GUFRSMTYsCgoKICBCRkRfUkVMT0NfVkFYX0dMT0JfREFULAogIEJGRF9SRUxPQ19WQVhf
Sk1QX1NMT1QsCiAgQkZEX1JFTE9DX1ZBWF9SRUxBVElWRSwKCgogIEJGRF9SRUxPQ19NU1A0MzBf
MTBfUENSRUwsCiAgQkZEX1JFTE9DX01TUDQzMF8xNl9QQ1JFTCwKICBCRkRfUkVMT0NfTVNQNDMw
XzE2LAogIEJGRF9SRUxPQ19NU1A0MzBfMTZfUENSRUxfQllURSwKICBCRkRfUkVMT0NfTVNQNDMw
XzE2X0JZVEUsCgoKICBCRkRfUkVMT0NfSVEyMDAwX09GRlNFVF8xNiwKICBCRkRfUkVMT0NfSVEy
MDAwX09GRlNFVF8yMSwKICBCRkRfUkVMT0NfSVEyMDAwX1VISTE2LAogIEJGRF9SRUxPQ19VTlVT
RUQgfTsKdHlwZWRlZiBlbnVtIGJmZF9yZWxvY19jb2RlX3JlYWwgYmZkX3JlbG9jX2NvZGVfcmVh
bF90eXBlOwpyZWxvY19ob3d0b190eXBlICoKYmZkX3JlbG9jX3R5cGVfbG9va3VwIChiZmQgKmFi
ZmQsIGJmZF9yZWxvY19jb2RlX3JlYWxfdHlwZSBjb2RlKTsKCmNvbnN0IGNoYXIgKgpiZmRfZ2V0
X3JlbG9jX2NvZGVfbmFtZSAoYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIGNvZGUpOwoKCgp0eXBl
ZGVmIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkKewojIDM0NDggIi4uL2JmZC9iZmQuaCIKICBz
dHJ1Y3QgYmZkICp0aGVfYmZkOwoKCgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgogIHN5bXZhbHVl
IHZhbHVlOwojIDM1NDQgIi4uL2JmZC9iZmQuaCIKICBmbGFnd29yZCBmbGFnczsKCgoKCiAgc3Ry
dWN0IHNlYyAqc2VjdGlvbjsKCgogIHVuaW9uCiAgICB7CiAgICAgIHZvaWQgKiBwOwogICAgICBi
ZmRfdm1hIGk7CiAgICB9CiAgdWRhdGE7Cn0KYXN5bWJvbDsKCgoKCmJmZF9ib29sZWFuCmJmZF9p
c19sb2NhbF9sYWJlbCAoYmZkICphYmZkLCBhc3ltYm9sICpzeW0pOwoKYmZkX2Jvb2xlYW4KYmZk
X2lzX2xvY2FsX2xhYmVsX25hbWUgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFtZSk7CiMgMzU3
NyAiLi4vYmZkL2JmZC5oIgpiZmRfYm9vbGVhbgpiZmRfc2V0X3N5bXRhYiAoYmZkICphYmZkLCBh
c3ltYm9sICoqbG9jYXRpb24sIHVuc2lnbmVkIGludCBjb3VudCk7Cgp2b2lkCmJmZF9wcmludF9z
eW1ib2xfdmFuZGYgKGJmZCAqYWJmZCwgdm9pZCAqIGZpbGUsIGFzeW1ib2wgKnN5bWJvbCk7CgoK
Cgphc3ltYm9sICoKX2JmZF9nZW5lcmljX21ha2VfZW1wdHlfc3ltYm9sIChiZmQgKik7CgoKCgpp
bnQKYmZkX2RlY29kZV9zeW1jbGFzcyAoYXN5bWJvbCAqc3ltYm9sKTsKCmJmZF9ib29sZWFuCmJm
ZF9pc191bmRlZmluZWRfc3ltY2xhc3MgKGludCBzeW1jbGFzcyk7Cgp2b2lkCmJmZF9zeW1ib2xf
aW5mbyAoYXN5bWJvbCAqc3ltYm9sLCBzeW1ib2xfaW5mbyAqcmV0KTsKCmJmZF9ib29sZWFuCmJm
ZF9jb3B5X3ByaXZhdGVfc3ltYm9sX2RhdGEgKGJmZCAqaWJmZCwgYXN5bWJvbCAqaXN5bSwgYmZk
ICpvYmZkLCBhc3ltYm9sICpvc3ltKTsKCgoKCgoKc3RydWN0IGJmZAp7CgogIHVuc2lnbmVkIGlu
dCBpZDsKCgogIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwoKCiAgY29uc3Qgc3RydWN0IGJmZF90YXJn
ZXQgKnh2ZWM7CiMgMzYyNyAiLi4vYmZkL2JmZC5oIgogIHZvaWQgKiBpb3N0cmVhbTsKCgoKICBi
ZmRfYm9vbGVhbiBjYWNoZWFibGU7CgoKCgogIGJmZF9ib29sZWFuIHRhcmdldF9kZWZhdWx0ZWQ7
CgoKCiAgc3RydWN0IGJmZCAqbHJ1X3ByZXYsICpscnVfbmV4dDsKCgoKICB1ZmlsZV9wdHIgd2hl
cmU7CgoKICBiZmRfYm9vbGVhbiBvcGVuZWRfb25jZTsKCgoKICBiZmRfYm9vbGVhbiBtdGltZV9z
ZXQ7CgoKICBsb25nIG10aW1lOwoKCiAgaW50IGlmZDsKCgogIGJmZF9mb3JtYXQgZm9ybWF0OwoK
CiAgZW51bSBiZmRfZGlyZWN0aW9uCiAgICB7CiAgICAgIG5vX2RpcmVjdGlvbiA9IDAsCiAgICAg
IHJlYWRfZGlyZWN0aW9uID0gMSwKICAgICAgd3JpdGVfZGlyZWN0aW9uID0gMiwKICAgICAgYm90
aF9kaXJlY3Rpb24gPSAzCiAgICB9CiAgZGlyZWN0aW9uOwoKCiAgZmxhZ3dvcmQgZmxhZ3M7CgoK
CgogIHVmaWxlX3B0ciBvcmlnaW47CgoKCiAgYmZkX2Jvb2xlYW4gb3V0cHV0X2hhc19iZWd1bjsK
CgogIHN0cnVjdCBiZmRfaGFzaF90YWJsZSBzZWN0aW9uX2h0YWI7CgoKICBzdHJ1Y3Qgc2VjICpz
ZWN0aW9uczsKCgogIHN0cnVjdCBzZWMgKipzZWN0aW9uX3RhaWw7CgoKICB1bnNpZ25lZCBpbnQg
c2VjdGlvbl9jb3VudDsKCgoKICBiZmRfdm1hIHN0YXJ0X2FkZHJlc3M7CgoKICB1bnNpZ25lZCBp
bnQgc3ltY291bnQ7CgoKICBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICoqb3V0c3ltYm9sczsK
CgogIHVuc2lnbmVkIGludCBkeW5zeW1jb3VudDsKCgogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9p
bmZvICphcmNoX2luZm87CgoKICB2b2lkICogYXJlbHRfZGF0YTsKICBzdHJ1Y3QgYmZkICpteV9h
cmNoaXZlOwogIHN0cnVjdCBiZmQgKm5leHQ7CiAgc3RydWN0IGJmZCAqYXJjaGl2ZV9oZWFkOwog
IGJmZF9ib29sZWFuIGhhc19hcm1hcDsKCgogIHN0cnVjdCBiZmQgKmxpbmtfbmV4dDsKCgoKICBp
bnQgYXJjaGl2ZV9wYXNzOwoKCiAgdW5pb24KICAgIHsKICAgICAgc3RydWN0IGFvdXRfZGF0YV9z
dHJ1Y3QgKmFvdXRfZGF0YTsKICAgICAgc3RydWN0IGFydGRhdGEgKmFvdXRfYXJfZGF0YTsKICAg
ICAgc3RydWN0IF9vYXN5c19kYXRhICpvYXN5c19vYmpfZGF0YTsKICAgICAgc3RydWN0IF9vYXN5
c19hcl9kYXRhICpvYXN5c19hcl9kYXRhOwogICAgICBzdHJ1Y3QgY29mZl90ZGF0YSAqY29mZl9v
YmpfZGF0YTsKICAgICAgc3RydWN0IHBlX3RkYXRhICpwZV9vYmpfZGF0YTsKICAgICAgc3RydWN0
IHhjb2ZmX3RkYXRhICp4Y29mZl9vYmpfZGF0YTsKICAgICAgc3RydWN0IGVjb2ZmX3RkYXRhICpl
Y29mZl9vYmpfZGF0YTsKICAgICAgc3RydWN0IGllZWVfZGF0YV9zdHJ1Y3QgKmllZWVfZGF0YTsK
ICAgICAgc3RydWN0IGllZWVfYXJfZGF0YV9zdHJ1Y3QgKmllZWVfYXJfZGF0YTsKICAgICAgc3Ry
dWN0IHNyZWNfZGF0YV9zdHJ1Y3QgKnNyZWNfZGF0YTsKICAgICAgc3RydWN0IGloZXhfZGF0YV9z
dHJ1Y3QgKmloZXhfZGF0YTsKICAgICAgc3RydWN0IHRla2hleF9kYXRhX3N0cnVjdCAqdGVraGV4
X2RhdGE7CiAgICAgIHN0cnVjdCBlbGZfb2JqX3RkYXRhICplbGZfb2JqX2RhdGE7CiAgICAgIHN0
cnVjdCBubG1fb2JqX3RkYXRhICpubG1fb2JqX2RhdGE7CiAgICAgIHN0cnVjdCBib3V0X2RhdGFf
c3RydWN0ICpib3V0X2RhdGE7CiAgICAgIHN0cnVjdCBtbW9fZGF0YV9zdHJ1Y3QgKm1tb19kYXRh
OwogICAgICBzdHJ1Y3Qgc3VuX2NvcmVfc3RydWN0ICpzdW5fY29yZV9kYXRhOwogICAgICBzdHJ1
Y3Qgc2NvNV9jb3JlX3N0cnVjdCAqc2NvNV9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCB0cmFkX2Nv
cmVfc3RydWN0ICp0cmFkX2NvcmVfZGF0YTsKICAgICAgc3RydWN0IHNvbV9kYXRhX3N0cnVjdCAq
c29tX2RhdGE7CiAgICAgIHN0cnVjdCBocHV4X2NvcmVfc3RydWN0ICpocHV4X2NvcmVfZGF0YTsK
ICAgICAgc3RydWN0IGhwcGFic2RfY29yZV9zdHJ1Y3QgKmhwcGFic2RfY29yZV9kYXRhOwogICAg
ICBzdHJ1Y3Qgc2dpX2NvcmVfc3RydWN0ICpzZ2lfY29yZV9kYXRhOwogICAgICBzdHJ1Y3QgbHlu
eF9jb3JlX3N0cnVjdCAqbHlueF9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCBvc2ZfY29yZV9zdHJ1
Y3QgKm9zZl9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCBjaXNjb19jb3JlX3N0cnVjdCAqY2lzY29f
Y29yZV9kYXRhOwogICAgICBzdHJ1Y3QgdmVyc2Fkb3NfZGF0YV9zdHJ1Y3QgKnZlcnNhZG9zX2Rh
dGE7CiAgICAgIHN0cnVjdCBuZXRic2RfY29yZV9zdHJ1Y3QgKm5ldGJzZF9jb3JlX2RhdGE7CiAg
ICAgIHN0cnVjdCBtYWNoX29fZGF0YV9zdHJ1Y3QgKm1hY2hfb19kYXRhOwogICAgICBzdHJ1Y3Qg
bWFjaF9vX2ZhdF9kYXRhX3N0cnVjdCAqbWFjaF9vX2ZhdF9kYXRhOwogICAgICBzdHJ1Y3QgYmZk
X3BlZl9kYXRhX3N0cnVjdCAqcGVmX2RhdGE7CiAgICAgIHN0cnVjdCBiZmRfcGVmX3hsaWJfZGF0
YV9zdHJ1Y3QgKnBlZl94bGliX2RhdGE7CiAgICAgIHN0cnVjdCBiZmRfc3ltX2RhdGFfc3RydWN0
ICpzeW1fZGF0YTsKICAgICAgdm9pZCAqIGFueTsKICAgIH0KICB0ZGF0YTsKCgogIHZvaWQgKiB1
c3JkYXRhOwoKCgoKICB2b2lkICogbWVtb3J5Owp9OwoKdHlwZWRlZiBlbnVtIGJmZF9lcnJvcgp7
CiAgYmZkX2Vycm9yX25vX2Vycm9yID0gMCwKICBiZmRfZXJyb3Jfc3lzdGVtX2NhbGwsCiAgYmZk
X2Vycm9yX2ludmFsaWRfdGFyZ2V0LAogIGJmZF9lcnJvcl93cm9uZ19mb3JtYXQsCiAgYmZkX2Vy
cm9yX3dyb25nX29iamVjdF9mb3JtYXQsCiAgYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uLAog
IGJmZF9lcnJvcl9ub19tZW1vcnksCiAgYmZkX2Vycm9yX25vX3N5bWJvbHMsCiAgYmZkX2Vycm9y
X25vX2FybWFwLAogIGJmZF9lcnJvcl9ub19tb3JlX2FyY2hpdmVkX2ZpbGVzLAogIGJmZF9lcnJv
cl9tYWxmb3JtZWRfYXJjaGl2ZSwKICBiZmRfZXJyb3JfZmlsZV9ub3RfcmVjb2duaXplZCwKICBi
ZmRfZXJyb3JfZmlsZV9hbWJpZ3VvdXNseV9yZWNvZ25pemVkLAogIGJmZF9lcnJvcl9ub19jb250
ZW50cywKICBiZmRfZXJyb3Jfbm9ucmVwcmVzZW50YWJsZV9zZWN0aW9uLAogIGJmZF9lcnJvcl9u
b19kZWJ1Z19zZWN0aW9uLAogIGJmZF9lcnJvcl9iYWRfdmFsdWUsCiAgYmZkX2Vycm9yX2ZpbGVf
dHJ1bmNhdGVkLAogIGJmZF9lcnJvcl9maWxlX3Rvb19iaWcsCiAgYmZkX2Vycm9yX2ludmFsaWRf
ZXJyb3JfY29kZQp9CmJmZF9lcnJvcl90eXBlOwoKYmZkX2Vycm9yX3R5cGUKYmZkX2dldF9lcnJv
ciAodm9pZCk7Cgp2b2lkCmJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl90eXBlIGVycm9yX3RhZyk7
Cgpjb25zdCBjaGFyICoKYmZkX2Vycm1zZyAoYmZkX2Vycm9yX3R5cGUgZXJyb3JfdGFnKTsKCnZv
aWQKYmZkX3BlcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSk7Cgp0eXBlZGVmIHZvaWQgKCpiZmRf
ZXJyb3JfaGFuZGxlcl90eXBlKSAoY29uc3QgY2hhciAqLCAuLi4pOwoKYmZkX2Vycm9yX2hhbmRs
ZXJfdHlwZQpiZmRfc2V0X2Vycm9yX2hhbmRsZXIgKGJmZF9lcnJvcl9oYW5kbGVyX3R5cGUpOwoK
dm9pZApiZmRfc2V0X2Vycm9yX3Byb2dyYW1fbmFtZSAoY29uc3QgY2hhciAqKTsKCmJmZF9lcnJv
cl9oYW5kbGVyX3R5cGUKYmZkX2dldF9lcnJvcl9oYW5kbGVyICh2b2lkKTsKCmNvbnN0IGNoYXIg
KgpiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYmZkICopOwoKbG9uZwpiZmRfZ2V0X3JlbG9jX3VwcGVy
X2JvdW5kIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0KTsKCmxvbmcKYmZkX2Nhbm9uaWNhbGl6
ZV9yZWxvYyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBhcmVsZW50ICoqbG9jLCBhc3ltYm9s
ICoqc3ltcyk7CgoKCgp2b2lkCmJmZF9zZXRfcmVsb2MgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNl
YywgYXJlbGVudCAqKnJlbCwgdW5zaWduZWQgaW50IGNvdW50KTsKCmJmZF9ib29sZWFuCmJmZF9z
ZXRfZmlsZV9mbGFncyAoYmZkICphYmZkLCBmbGFnd29yZCBmbGFncyk7CgppbnQKYmZkX2dldF9h
cmNoX3NpemUgKGJmZCAqYWJmZCk7CgppbnQKYmZkX2dldF9zaWduX2V4dGVuZF92bWEgKGJmZCAq
YWJmZCk7CgpiZmRfYm9vbGVhbgpiZmRfc2V0X3N0YXJ0X2FkZHJlc3MgKGJmZCAqYWJmZCwgYmZk
X3ZtYSB2bWEpOwoKdW5zaWduZWQgaW50CmJmZF9nZXRfZ3Bfc2l6ZSAoYmZkICphYmZkKTsKCnZv
aWQKYmZkX3NldF9ncF9zaXplIChiZmQgKmFiZmQsIHVuc2lnbmVkIGludCBpKTsKCmJmZF92bWEK
YmZkX3NjYW5fdm1hIChjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKiplbmQsIGludCBi
YXNlKTsKCmJmZF9ib29sZWFuCmJmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEgKGJmZCAqaWJmZCwg
YmZkICpvYmZkKTsKCgoKCmJmZF9ib29sZWFuCmJmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhIChi
ZmQgKmliZmQsIGJmZCAqb2JmZCk7CgoKCgpiZmRfYm9vbGVhbgpiZmRfc2V0X3ByaXZhdGVfZmxh
Z3MgKGJmZCAqYWJmZCwgZmxhZ3dvcmQgZmxhZ3MpOwojIDM5NDcgIi4uL2JmZC9iZmQuaCIKZXh0
ZXJuIGJmZF9ieXRlICpiZmRfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzCiAgICAgICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBiZmRfbGlua19vcmRlciAqLCBi
ZmRfYnl0ZSAqLCBiZmRfYm9vbGVhbiwgYXN5bWJvbCAqKik7CgoKCmJmZF9ib29sZWFuCmJmZF9h
bHRfbWFjaF9jb2RlIChiZmQgKmFiZmQsIGludCBhbHRlcm5hdGl2ZSk7CgpzdHJ1Y3QgYmZkX3By
ZXNlcnZlCnsKICB2b2lkICogbWFya2VyOwogIHZvaWQgKiB0ZGF0YTsKICBmbGFnd29yZCBmbGFn
czsKICBjb25zdCBzdHJ1Y3QgYmZkX2FyY2hfaW5mbyAqYXJjaF9pbmZvOwogIHN0cnVjdCBzZWMg
KnNlY3Rpb25zOwogIHN0cnVjdCBzZWMgKipzZWN0aW9uX3RhaWw7CiAgdW5zaWduZWQgaW50IHNl
Y3Rpb25fY291bnQ7CiAgc3RydWN0IGJmZF9oYXNoX3RhYmxlIHNlY3Rpb25faHRhYjsKfTsKCmJm
ZF9ib29sZWFuCmJmZF9wcmVzZXJ2ZV9zYXZlIChiZmQgKiwgc3RydWN0IGJmZF9wcmVzZXJ2ZSAq
KTsKCnZvaWQKYmZkX3ByZXNlcnZlX3Jlc3RvcmUgKGJmZCAqLCBzdHJ1Y3QgYmZkX3ByZXNlcnZl
ICopOwoKdm9pZApiZmRfcHJlc2VydmVfZmluaXNoIChiZmQgKiwgc3RydWN0IGJmZF9wcmVzZXJ2
ZSAqKTsKCgpzeW1pbmRleApiZmRfZ2V0X25leHRfbWFwZW50IChiZmQgKmFiZmQsIHN5bWluZGV4
IHByZXZpb3VzLCBjYXJzeW0gKipzeW0pOwoKYmZkX2Jvb2xlYW4KYmZkX3NldF9hcmNoaXZlX2hl
YWQgKGJmZCAqb3V0cHV0LCBiZmQgKm5ld19oZWFkKTsKCmJmZCAqCmJmZF9vcGVucl9uZXh0X2Fy
Y2hpdmVkX2ZpbGUgKGJmZCAqYXJjaGl2ZSwgYmZkICpwcmV2aW91cyk7CgoKY29uc3QgY2hhciAq
CmJmZF9jb3JlX2ZpbGVfZmFpbGluZ19jb21tYW5kIChiZmQgKmFiZmQpOwoKaW50CmJmZF9jb3Jl
X2ZpbGVfZmFpbGluZ19zaWduYWwgKGJmZCAqYWJmZCk7CgpiZmRfYm9vbGVhbgpjb3JlX2ZpbGVf
bWF0Y2hlc19leGVjdXRhYmxlX3AgKGJmZCAqY29yZV9iZmQsIGJmZCAqZXhlY19iZmQpOwojIDQw
MTggIi4uL2JmZC9iZmQuaCIKZW51bSBiZmRfZmxhdm91cgp7CiAgYmZkX3RhcmdldF91bmtub3du
X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9hb3V0X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9jb2ZmX2Zs
YXZvdXIsCiAgYmZkX3RhcmdldF9lY29mZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfeGNvZmZfZmxh
dm91ciwKICBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfaWVlZV9mbGF2b3Vy
LAogIGJmZF90YXJnZXRfbmxtX2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9vYXN5c19mbGF2b3VyLAog
IGJmZF90YXJnZXRfdGVraGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zcmVjX2ZsYXZvdXIsCiAg
YmZkX3RhcmdldF9paGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zb21fZmxhdm91ciwKICBiZmRf
dGFyZ2V0X29zOWtfZmxhdm91ciwKICBiZmRfdGFyZ2V0X3ZlcnNhZG9zX2ZsYXZvdXIsCiAgYmZk
X3RhcmdldF9tc2Rvc19mbGF2b3VyLAogIGJmZF90YXJnZXRfb3ZheF9mbGF2b3VyLAogIGJmZF90
YXJnZXRfZXZheF9mbGF2b3VyLAogIGJmZF90YXJnZXRfbW1vX2ZsYXZvdXIsCiAgYmZkX3Rhcmdl
dF9tYWNoX29fZmxhdm91ciwKICBiZmRfdGFyZ2V0X3BlZl9mbGF2b3VyLAogIGJmZF90YXJnZXRf
cGVmX3hsaWJfZmxhdm91ciwKICBiZmRfdGFyZ2V0X3N5bV9mbGF2b3VyCn07CgplbnVtIGJmZF9l
bmRpYW4geyBCRkRfRU5ESUFOX0JJRywgQkZEX0VORElBTl9MSVRUTEUsIEJGRF9FTkRJQU5fVU5L
Tk9XTiB9OwoKCnR5cGVkZWYgc3RydWN0IGJmZF9saW5rX2luZm8gX2JmZF9saW5rX2luZm87Cgp0
eXBlZGVmIHN0cnVjdCBiZmRfdGFyZ2V0CnsKCiAgY2hhciAqbmFtZTsKCgoKICBlbnVtIGJmZF9m
bGF2b3VyIGZsYXZvdXI7CgoKICBlbnVtIGJmZF9lbmRpYW4gYnl0ZW9yZGVyOwoKCiAgZW51bSBi
ZmRfZW5kaWFuIGhlYWRlcl9ieXRlb3JkZXI7CgoKCiAgZmxhZ3dvcmQgb2JqZWN0X2ZsYWdzOwoK
CgogIGZsYWd3b3JkIHNlY3Rpb25fZmxhZ3M7CgoKCiAgY2hhciBzeW1ib2xfbGVhZGluZ19jaGFy
OwoKCiAgY2hhciBhcl9wYWRfY2hhcjsKCgogIHVuc2lnbmVkIHNob3J0IGFyX21heF9uYW1lbGVu
OwoKCgoKICBiZmRfdm1hICgqYmZkX2dldHg2NCkgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9z
aWduZWRfdm1hICgqYmZkX2dldHhfc2lnbmVkXzY0KSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9p
ZCAoKmJmZF9wdXR4NjQpIChiZmRfdm1hLCBiZmRfYnl0ZSAqKTsKICBiZmRfdm1hICgqYmZkX2dl
dHgzMikgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2dldHhfc2ln
bmVkXzMyKSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9wdXR4MzIpIChiZmRfdm1h
LCBiZmRfYnl0ZSAqKTsKICBiZmRfdm1hICgqYmZkX2dldHgxNikgKGNvbnN0IGJmZF9ieXRlICop
OwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2dldHhfc2lnbmVkXzE2KSAoY29uc3QgYmZkX2J5dGUg
Kik7CiAgdm9pZCAoKmJmZF9wdXR4MTYpIChiZmRfdm1hLCBiZmRfYnl0ZSAqKTsKCgogIGJmZF92
bWEgKCpiZmRfaF9nZXR4NjQpIChjb25zdCBiZmRfYnl0ZSAqKTsKICBiZmRfc2lnbmVkX3ZtYSAo
KmJmZF9oX2dldHhfc2lnbmVkXzY0KSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9o
X3B1dHg2NCkgKGJmZF92bWEsIGJmZF9ieXRlICopOwogIGJmZF92bWEgKCpiZmRfaF9nZXR4MzIp
IChjb25zdCBiZmRfYnl0ZSAqKTsKICBiZmRfc2lnbmVkX3ZtYSAoKmJmZF9oX2dldHhfc2lnbmVk
XzMyKSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9oX3B1dHgzMikgKGJmZF92bWEs
IGJmZF9ieXRlICopOwogIGJmZF92bWEgKCpiZmRfaF9nZXR4MTYpIChjb25zdCBiZmRfYnl0ZSAq
KTsKICBiZmRfc2lnbmVkX3ZtYSAoKmJmZF9oX2dldHhfc2lnbmVkXzE2KSAoY29uc3QgYmZkX2J5
dGUgKik7CiAgdm9pZCAoKmJmZF9oX3B1dHgxNikgKGJmZF92bWEsIGJmZF9ieXRlICopOwoKCgoK
CiAgY29uc3Qgc3RydWN0IGJmZF90YXJnZXQgKigqX2JmZF9jaGVja19mb3JtYXRbYmZkX3R5cGVf
ZW5kXSkgKGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9zZXRfZm9ybWF0W2JmZF90eXBl
X2VuZF0pIChiZmQgKik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfd3JpdGVfY29udGVudHNbYmZk
X3R5cGVfZW5kXSkgKGJmZCAqKTsKIyA0MTI5ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2Jvb2xlYW4g
KCpfY2xvc2VfYW5kX2NsZWFudXApIChiZmQgKik7CgogIGJmZF9ib29sZWFuICgqX2JmZF9mcmVl
X2NhY2hlZF9pbmZvKSAoYmZkICopOwoKICBiZmRfYm9vbGVhbiAoKl9uZXdfc2VjdGlvbl9ob29r
KSAoYmZkICosIHNlY19wdHIpOwoKICBiZmRfYm9vbGVhbiAoKl9iZmRfZ2V0X3NlY3Rpb25fY29u
dGVudHMpCiAgICAoYmZkICosIHNlY19wdHIsIHZvaWQgKiwgZmlsZV9wdHIsIGJmZF9zaXplX3R5
cGUpOwogIGJmZF9ib29sZWFuICgqX2JmZF9nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cp
CiAgICAoYmZkICosIHNlY19wdHIsIGJmZF93aW5kb3cgKiwgZmlsZV9wdHIsIGJmZF9zaXplX3R5
cGUpOwojIDQxNTAgIi4uL2JmZC9iZmQuaCIKICBiZmRfYm9vbGVhbiAoKl9iZmRfY29weV9wcml2
YXRlX2JmZF9kYXRhKSAoYmZkICosIGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9tZXJn
ZV9wcml2YXRlX2JmZF9kYXRhKSAoYmZkICosIGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2Jm
ZF9jb3B5X3ByaXZhdGVfc2VjdGlvbl9kYXRhKQogICAgKGJmZCAqLCBzZWNfcHRyLCBiZmQgKiwg
c2VjX3B0cik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfY29weV9wcml2YXRlX3N5bWJvbF9kYXRh
KQogICAgKGJmZCAqLCBhc3ltYm9sICosIGJmZCAqLCBhc3ltYm9sICopOwoKICBiZmRfYm9vbGVh
biAoKl9iZmRfc2V0X3ByaXZhdGVfZmxhZ3MpIChiZmQgKiwgZmxhZ3dvcmQpOwoKCiAgYmZkX2Jv
b2xlYW4gKCpfYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpIChiZmQgKiwgdm9pZCAqKTsKCgoK
CgoKICBjaGFyICogKCpfY29yZV9maWxlX2ZhaWxpbmdfY29tbWFuZCkgKGJmZCAqKTsKICBpbnQg
KCpfY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsKSAoYmZkICopOwogIGJmZF9ib29sZWFuICgqX2Nv
cmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcCkgKGJmZCAqLCBiZmQgKik7CiMgNDE4OSAiLi4v
YmZkL2JmZC5oIgogIGJmZF9ib29sZWFuICgqX2JmZF9zbHVycF9hcm1hcCkgKGJmZCAqKTsKICBi
ZmRfYm9vbGVhbiAoKl9iZmRfc2x1cnBfZXh0ZW5kZWRfbmFtZV90YWJsZSkgKGJmZCAqKTsKICBi
ZmRfYm9vbGVhbiAoKl9iZmRfY29uc3RydWN0X2V4dGVuZGVkX25hbWVfdGFibGUpCiAgICAoYmZk
ICosIGNoYXIgKiosIGJmZF9zaXplX3R5cGUgKiwgY29uc3QgY2hhciAqKik7CiAgdm9pZCAoKl9i
ZmRfdHJ1bmNhdGVfYXJuYW1lKSAoYmZkICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICBiZmRf
Ym9vbGVhbiAoKndyaXRlX2FybWFwKQogICAgKGJmZCAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBv
cmwgKiwgdW5zaWduZWQgaW50LCBpbnQpOwogIHZvaWQgKiAoKl9iZmRfcmVhZF9hcl9oZHJfZm4p
IChiZmQgKik7CiAgYmZkICogKCpvcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUpIChiZmQgKiwgYmZk
ICopOwoKICBiZmQgKiAoKl9iZmRfZ2V0X2VsdF9hdF9pbmRleCkgKGJmZCAqLCBzeW1pbmRleCk7
CiAgaW50ICgqX2JmZF9zdGF0X2FyY2hfZWx0KSAoYmZkICosIHN0cnVjdCBzdGF0ICopOwogIGJm
ZF9ib29sZWFuICgqX2JmZF91cGRhdGVfYXJtYXBfdGltZXN0YW1wKSAoYmZkICopOwojIDQyMTYg
Ii4uL2JmZC9iZmQuaCIKICBsb25nICgqX2JmZF9nZXRfc3ltdGFiX3VwcGVyX2JvdW5kKSAoYmZk
ICopOwogIGxvbmcgKCpfYmZkX2Nhbm9uaWNhbGl6ZV9zeW10YWIpIChiZmQgKiwgc3RydWN0IHN5
bWJvbF9jYWNoZV9lbnRyeSAqKik7CgogIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKgogICAg
ICAgICAgICAgICgqX2JmZF9tYWtlX2VtcHR5X3N5bWJvbCkgKGJmZCAqKTsKICB2b2lkICgqX2Jm
ZF9wcmludF9zeW1ib2wpCiAgICAoYmZkICosIHZvaWQgKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9l
bnRyeSAqLCBiZmRfcHJpbnRfc3ltYm9sX3R5cGUpOwoKICB2b2lkICgqX2JmZF9nZXRfc3ltYm9s
X2luZm8pCiAgICAoYmZkICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgc3ltYm9sX2lu
Zm8gKik7CgogIGJmZF9ib29sZWFuICgqX2JmZF9pc19sb2NhbF9sYWJlbF9uYW1lKSAoYmZkICos
IGNvbnN0IGNoYXIgKik7CgogIGFsZW50ICogKCpfZ2V0X2xpbmVubykgKGJmZCAqLCBzdHJ1Y3Qg
c3ltYm9sX2NhY2hlX2VudHJ5ICopOwogIGJmZF9ib29sZWFuICgqX2JmZF9maW5kX25lYXJlc3Rf
bGluZSkKICAgIChiZmQgKiwgc3RydWN0IHNlYyAqLCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5
ICoqLCBiZmRfdm1hLCBjb25zdCBjaGFyICoqLCBjb25zdCBjaGFyICoqLCB1bnNpZ25lZCBpbnQg
Kik7CgoKCgogIGFzeW1ib2wgKiAoKl9iZmRfbWFrZV9kZWJ1Z19zeW1ib2wpCiAgICAoYmZkICos
IHZvaWQgKiwgdW5zaWduZWQgbG9uZyBzaXplKTsKCgogIGxvbmcgKCpfcmVhZF9taW5pc3ltYm9s
cykKICAgIChiZmQgKiwgYmZkX2Jvb2xlYW4sIHZvaWQgKiAqLCB1bnNpZ25lZCBpbnQgKik7CgoK
ICBhc3ltYm9sICogKCpfbWluaXN5bWJvbF90b19zeW1ib2wpCiAgICAoYmZkICosIGJmZF9ib29s
ZWFuLCBjb25zdCB2b2lkICosIGFzeW1ib2wgKik7CgoKCgoKCiAgbG9uZyAoKl9nZXRfcmVsb2Nf
dXBwZXJfYm91bmQpIChiZmQgKiwgc2VjX3B0cik7CiAgbG9uZyAoKl9iZmRfY2Fub25pY2FsaXpl
X3JlbG9jKQogICAgKGJmZCAqLCBzZWNfcHRyLCBhcmVsZW50ICoqLCBzdHJ1Y3Qgc3ltYm9sX2Nh
Y2hlX2VudHJ5ICoqKTsKCiAgcmVsb2NfaG93dG9fdHlwZSAqCiAgICAgICAgICAgICAgKCpyZWxv
Y190eXBlX2xvb2t1cCkgKGJmZCAqLCBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUpOwoKCgoKCiAg
YmZkX2Jvb2xlYW4gKCpfYmZkX3NldF9hcmNoX21hY2gpCiAgICAoYmZkICosIGVudW0gYmZkX2Fy
Y2hpdGVjdHVyZSwgdW5zaWduZWQgbG9uZyk7CiAgYmZkX2Jvb2xlYW4gKCpfYmZkX3NldF9zZWN0
aW9uX2NvbnRlbnRzKQogICAgKGJmZCAqLCBzZWNfcHRyLCB2b2lkICosIGZpbGVfcHRyLCBiZmRf
c2l6ZV90eXBlKTsKIyA0MjgyICIuLi9iZmQvYmZkLmgiCiAgaW50ICgqX2JmZF9zaXplb2ZfaGVh
ZGVycykgKGJmZCAqLCBiZmRfYm9vbGVhbik7CiAgYmZkX2J5dGUgKiAoKl9iZmRfZ2V0X3JlbG9j
YXRlZF9zZWN0aW9uX2NvbnRlbnRzKQogICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAq
LCBzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIgKiwgYmZkX2J5dGUgKiwgYmZkX2Jvb2xlYW4sIHN0cnVj
dCBzeW1ib2xfY2FjaGVfZW50cnkgKiopOwoKCiAgYmZkX2Jvb2xlYW4gKCpfYmZkX3JlbGF4X3Nl
Y3Rpb24pCiAgICAoYmZkICosIHN0cnVjdCBzZWMgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwg
YmZkX2Jvb2xlYW4gKik7CgoKCiAgc3RydWN0IGJmZF9saW5rX2hhc2hfdGFibGUgKgogICAgICAg
ICAgICAgICgqX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKSAoYmZkICopOwoKCiAgdm9pZCAo
Kl9iZmRfbGlua19oYXNoX3RhYmxlX2ZyZWUpCiAgICAoc3RydWN0IGJmZF9saW5rX2hhc2hfdGFi
bGUgKik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfbGlua19hZGRfc3ltYm9scykKICAgIChiZmQg
Kiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgoKICB2b2lkICgqX2JmZF9saW5rX2p1c3Rfc3lt
cykKICAgIChhc2VjdGlvbiAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgoKICBiZmRfYm9v
bGVhbiAoKl9iZmRfZmluYWxfbGluaykgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsK
CgogIGJmZF9ib29sZWFuICgqX2JmZF9saW5rX3NwbGl0X3NlY3Rpb24pIChiZmQgKiwgc3RydWN0
IHNlYyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9nY19zZWN0aW9ucykgKGJmZCAqLCBzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9tZXJnZV9zZWN0aW9u
cykgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2Jm
ZF9kaXNjYXJkX2dyb3VwKSAoYmZkICosIHN0cnVjdCBzZWMgKik7CiMgNDMzMCAiLi4vYmZkL2Jm
ZC5oIgogIGxvbmcgKCpfYmZkX2dldF9keW5hbWljX3N5bXRhYl91cHBlcl9ib3VuZCkgKGJmZCAq
KTsKCiAgbG9uZyAoKl9iZmRfY2Fub25pY2FsaXplX2R5bmFtaWNfc3ltdGFiKQogICAgKGJmZCAq
LCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICoqKTsKCiAgbG9uZyAoKl9iZmRfZ2V0X2R5bmFt
aWNfcmVsb2NfdXBwZXJfYm91bmQpIChiZmQgKik7CgogIGxvbmcgKCpfYmZkX2Nhbm9uaWNhbGl6
ZV9keW5hbWljX3JlbG9jKQogICAgKGJmZCAqLCBhcmVsZW50ICoqLCBzdHJ1Y3Qgc3ltYm9sX2Nh
Y2hlX2VudHJ5ICoqKTsKCgogIGNvbnN0IHN0cnVjdCBiZmRfdGFyZ2V0ICogYWx0ZXJuYXRpdmVf
dGFyZ2V0OwoKCgogIHZvaWQgKiBiYWNrZW5kX2RhdGE7Cgp9IGJmZF90YXJnZXQ7CgpiZmRfYm9v
bGVhbgpiZmRfc2V0X2RlZmF1bHRfdGFyZ2V0IChjb25zdCBjaGFyICpuYW1lKTsKCmNvbnN0IGJm
ZF90YXJnZXQgKgpiZmRfZmluZF90YXJnZXQgKGNvbnN0IGNoYXIgKnRhcmdldF9uYW1lLCBiZmQg
KmFiZmQpOwoKY29uc3QgY2hhciAqKgpiZmRfdGFyZ2V0X2xpc3QgKHZvaWQpOwoKY29uc3QgYmZk
X3RhcmdldCAqCmJmZF9zZWFyY2hfZm9yX3RhcmdldCAoaW50ICgqIHNlYXJjaF9mdW5jKSAoY29u
c3QgYmZkX3RhcmdldCAqLCB2b2lkICopLCB2b2lkICopOwoKCgoKYmZkX2Jvb2xlYW4KYmZkX2No
ZWNrX2Zvcm1hdCAoYmZkICphYmZkLCBiZmRfZm9ybWF0IGZvcm1hdCk7CgpiZmRfYm9vbGVhbgpi
ZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMgKGJmZCAqYWJmZCwgYmZkX2Zvcm1hdCBmb3JtYXQsIGNo
YXIgKioqbWF0Y2hpbmcpOwoKCmJmZF9ib29sZWFuCmJmZF9zZXRfZm9ybWF0IChiZmQgKmFiZmQs
IGJmZF9mb3JtYXQgZm9ybWF0KTsKCmNvbnN0IGNoYXIgKgpiZmRfZm9ybWF0X3N0cmluZyAoYmZk
X2Zvcm1hdCBmb3JtYXQpOwoKCmJmZF9ib29sZWFuCmJmZF9saW5rX3NwbGl0X3NlY3Rpb24gKGJm
ZCAqYWJmZCwgYXNlY3Rpb24gKnNlYyk7CgoKCgoKYmZkX2J5dGUgKgpiZmRfc2ltcGxlX2dldF9y
ZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBiZmRf
Ynl0ZSAqb3V0YnVmKTsKIyA0MCAicmVhZGVsZi5jIiAyCgojIDEgIi4uL2luY2x1ZGUvZWxmL2Nv
bW1vbi5oIiAxCiMgNDIgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2V4dGVybmFs
LmgiIDEKIyA0MCAiLi4vaW5jbHVkZS9lbGYvZXh0ZXJuYWwuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
IHVuc2lnbmVkIGNoYXIgZV9pZGVudFsxNl07CiAgdW5zaWduZWQgY2hhciBlX3R5cGVbMl07CiAg
dW5zaWduZWQgY2hhciBlX21hY2hpbmVbMl07CiAgdW5zaWduZWQgY2hhciBlX3ZlcnNpb25bNF07
CiAgdW5zaWduZWQgY2hhciBlX2VudHJ5WzRdOwogIHVuc2lnbmVkIGNoYXIgZV9waG9mZls0XTsK
ICB1bnNpZ25lZCBjaGFyIGVfc2hvZmZbNF07CiAgdW5zaWduZWQgY2hhciBlX2ZsYWdzWzRdOwog
IHVuc2lnbmVkIGNoYXIgZV9laHNpemVbMl07CiAgdW5zaWduZWQgY2hhciBlX3BoZW50c2l6ZVsy
XTsKICB1bnNpZ25lZCBjaGFyIGVfcGhudW1bMl07CiAgdW5zaWduZWQgY2hhciBlX3NoZW50c2l6
ZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hudW1bMl07CiAgdW5zaWduZWQgY2hhciBlX3Noc3Ry
bmR4WzJdOwp9IEVsZjMyX0V4dGVybmFsX0VoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWdu
ZWQgY2hhciBlX2lkZW50WzE2XTsKICB1bnNpZ25lZCBjaGFyIGVfdHlwZVsyXTsKICB1bnNpZ25l
ZCBjaGFyIGVfbWFjaGluZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfdmVyc2lvbls0XTsKICB1bnNp
Z25lZCBjaGFyIGVfZW50cnlbOF07CiAgdW5zaWduZWQgY2hhciBlX3Bob2ZmWzhdOwogIHVuc2ln
bmVkIGNoYXIgZV9zaG9mZls4XTsKICB1bnNpZ25lZCBjaGFyIGVfZmxhZ3NbNF07CiAgdW5zaWdu
ZWQgY2hhciBlX2Voc2l6ZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfcGhlbnRzaXplWzJdOwogIHVu
c2lnbmVkIGNoYXIgZV9waG51bVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hlbnRzaXplWzJdOwog
IHVuc2lnbmVkIGNoYXIgZV9zaG51bVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hzdHJuZHhbMl07
Cn0gRWxmNjRfRXh0ZXJuYWxfRWhkcjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNo
YXIgcF90eXBlWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hh
ciBwX3ZhZGRyWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9wYWRkcls0XTsKICB1bnNpZ25lZCBjaGFy
IHBfZmlsZXN6WzRdOwogIHVuc2lnbmVkIGNoYXIgcF9tZW1zels0XTsKICB1bnNpZ25lZCBjaGFy
IHBfZmxhZ3NbNF07CiAgdW5zaWduZWQgY2hhciBwX2FsaWduWzRdOwp9IEVsZjMyX0V4dGVybmFs
X1BoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBwX3R5cGVbNF07CiAgdW5z
aWduZWQgY2hhciBwX2ZsYWdzWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9vZmZzZXRbOF07CiAgdW5z
aWduZWQgY2hhciBwX3ZhZGRyWzhdOwogIHVuc2lnbmVkIGNoYXIgcF9wYWRkcls4XTsKICB1bnNp
Z25lZCBjaGFyIHBfZmlsZXN6WzhdOwogIHVuc2lnbmVkIGNoYXIgcF9tZW1zels4XTsKICB1bnNp
Z25lZCBjaGFyIHBfYWxpZ25bOF07Cn0gRWxmNjRfRXh0ZXJuYWxfUGhkcjsKCgoKdHlwZWRlZiBz
dHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgc2hfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHNoX3R5
cGVbNF07CiAgdW5zaWduZWQgY2hhciBzaF9mbGFnc1s0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2Fk
ZHJbNF07CiAgdW5zaWduZWQgY2hhciBzaF9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hhciBzaF9z
aXplWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfbGlua1s0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2lu
Zm9bNF07CiAgdW5zaWduZWQgY2hhciBzaF9hZGRyYWxpZ25bNF07CiAgdW5zaWduZWQgY2hhciBz
aF9lbnRzaXplWzRdOwp9IEVsZjMyX0V4dGVybmFsX1NoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
dW5zaWduZWQgY2hhciBzaF9uYW1lWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfdHlwZVs0XTsKICB1
bnNpZ25lZCBjaGFyIHNoX2ZsYWdzWzhdOwogIHVuc2lnbmVkIGNoYXIgc2hfYWRkcls4XTsKICB1
bnNpZ25lZCBjaGFyIHNoX29mZnNldFs4XTsKICB1bnNpZ25lZCBjaGFyIHNoX3NpemVbOF07CiAg
dW5zaWduZWQgY2hhciBzaF9saW5rWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfaW5mb1s0XTsKICB1
bnNpZ25lZCBjaGFyIHNoX2FkZHJhbGlnbls4XTsKICB1bnNpZ25lZCBjaGFyIHNoX2VudHNpemVb
OF07Cn0gRWxmNjRfRXh0ZXJuYWxfU2hkcjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVk
IGNoYXIgc3RfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHN0X3ZhbHVlWzRdOwogIHVuc2lnbmVk
IGNoYXIgc3Rfc2l6ZVs0XTsKICB1bnNpZ25lZCBjaGFyIHN0X2luZm9bMV07CiAgdW5zaWduZWQg
Y2hhciBzdF9vdGhlclsxXTsKICB1bnNpZ25lZCBjaGFyIHN0X3NobmR4WzJdOwp9IEVsZjMyX0V4
dGVybmFsX1N5bTsKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIHN0X25hbWVbNF07
CiAgdW5zaWduZWQgY2hhciBzdF9pbmZvWzFdOwogIHVuc2lnbmVkIGNoYXIgc3Rfb3RoZXJbMV07
CiAgdW5zaWduZWQgY2hhciBzdF9zaG5keFsyXTsKICB1bnNpZ25lZCBjaGFyIHN0X3ZhbHVlWzhd
OwogIHVuc2lnbmVkIGNoYXIgc3Rfc2l6ZVs4XTsKfSBFbGY2NF9FeHRlcm5hbF9TeW07Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBlc3Rfc2huZHhbNF07Cn0gRWxmX0V4dGVybmFs
X1N5bV9TaG5keDsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgbmFtZXN6WzRd
OwogIHVuc2lnbmVkIGNoYXIgZGVzY3N6WzRdOwogIHVuc2lnbmVkIGNoYXIgdHlwZVs0XTsKICBj
aGFyIG5hbWVbMV07Cn0gRWxmX0V4dGVybmFsX05vdGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVu
c2lnbmVkIGNoYXIgcl9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bNF07Cn0gRWxm
MzJfRXh0ZXJuYWxfUmVsOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgcl9vZmZz
ZXRbNF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bNF07CiAgdW5zaWduZWQgY2hhciByX2FkZGVu
ZFs0XTsKfSBFbGYzMl9FeHRlcm5hbF9SZWxhOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVk
IGNoYXIgcl9vZmZzZXRbOF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bOF07Cn0gRWxmNjRfRXh0
ZXJuYWxfUmVsOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgcl9vZmZzZXRbOF07
CiAgdW5zaWduZWQgY2hhciByX2luZm9bOF07CiAgdW5zaWduZWQgY2hhciByX2FkZGVuZFs4XTsK
fSBFbGY2NF9FeHRlcm5hbF9SZWxhOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hh
ciBkX3RhZ1s0XTsKICB1bmlvbiB7CiAgICB1bnNpZ25lZCBjaGFyIGRfdmFsWzRdOwogICAgdW5z
aWduZWQgY2hhciBkX3B0cls0XTsKICB9IGRfdW47Cn0gRWxmMzJfRXh0ZXJuYWxfRHluOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgZF90YWdbOF07CiAgdW5pb24gewogICAgdW5z
aWduZWQgY2hhciBkX3ZhbFs4XTsKICAgIHVuc2lnbmVkIGNoYXIgZF9wdHJbOF07CiAgfSBkX3Vu
Owp9IEVsZjY0X0V4dGVybmFsX0R5bjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25l
ZCBjaGFyIHZkX3ZlcnNpb25bMl07CiAgdW5zaWduZWQgY2hhciB2ZF9mbGFnc1syXTsKICB1bnNp
Z25lZCBjaGFyIHZkX25keFsyXTsKICB1bnNpZ25lZCBjaGFyIHZkX2NudFsyXTsKICB1bnNpZ25l
ZCBjaGFyIHZkX2hhc2hbNF07CiAgdW5zaWduZWQgY2hhciB2ZF9hdXhbNF07CiAgdW5zaWduZWQg
Y2hhciB2ZF9uZXh0WzRdOwp9IEVsZl9FeHRlcm5hbF9WZXJkZWY7CgoKCnR5cGVkZWYgc3RydWN0
IHsKICB1bnNpZ25lZCBjaGFyIHZkYV9uYW1lWzRdOwogIHVuc2lnbmVkIGNoYXIgdmRhX25leHRb
NF07Cn0gRWxmX0V4dGVybmFsX1ZlcmRhdXg7CgoKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25l
ZCBjaGFyIHZuX3ZlcnNpb25bMl07CiAgdW5zaWduZWQgY2hhciB2bl9jbnRbMl07CiAgdW5zaWdu
ZWQgY2hhciB2bl9maWxlWzRdOwogIHVuc2lnbmVkIGNoYXIgdm5fYXV4WzRdOwogIHVuc2lnbmVk
IGNoYXIgdm5fbmV4dFs0XTsKfSBFbGZfRXh0ZXJuYWxfVmVybmVlZDsKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogIHVuc2lnbmVkIGNoYXIgdm5hX2hhc2hbNF07CiAgdW5zaWduZWQgY2hhciB2bmFfZmxh
Z3NbMl07CiAgdW5zaWduZWQgY2hhciB2bmFfb3RoZXJbMl07CiAgdW5zaWduZWQgY2hhciB2bmFf
bmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHZuYV9uZXh0WzRdOwp9IEVsZl9FeHRlcm5hbF9WZXJu
YXV4OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgdnNfdmVyc1syXTsKfQoK
ICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkKCiAgRWxmX0V4dGVybmFsX1ZlcnN5bTsKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBzaV9ib3VuZHRvWzJdOwogIHVuc2lnbmVkIGNo
YXIgc2lfZmxhZ3NbMl07Cn0gRWxmX0V4dGVybmFsX1N5bWluZm87CiMgNDMgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL2ludGVybmFsLmgiIDEKIyA0NCAiLi4vaW5jbHVkZS9lbGYv
aW50ZXJuYWwuaCIKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX2VoZHIgewogIHVuc2lnbmVk
IGNoYXIgZV9pZGVudFsxNl07CiAgYmZkX3ZtYSBlX2VudHJ5OwogIGJmZF9zaXplX3R5cGUgZV9w
aG9mZjsKICBiZmRfc2l6ZV90eXBlIGVfc2hvZmY7CiAgdW5zaWduZWQgbG9uZyBlX3ZlcnNpb247
CiAgdW5zaWduZWQgbG9uZyBlX2ZsYWdzOwogIHVuc2lnbmVkIHNob3J0IGVfdHlwZTsKICB1bnNp
Z25lZCBzaG9ydCBlX21hY2hpbmU7CiAgdW5zaWduZWQgaW50IGVfZWhzaXplOwogIHVuc2lnbmVk
IGludCBlX3BoZW50c2l6ZTsKICB1bnNpZ25lZCBpbnQgZV9waG51bTsKICB1bnNpZ25lZCBpbnQg
ZV9zaGVudHNpemU7CiAgdW5zaWduZWQgaW50IGVfc2hudW07CiAgdW5zaWduZWQgaW50IGVfc2hz
dHJuZHg7Cn0gRWxmX0ludGVybmFsX0VoZHI7CgoKCnN0cnVjdCBlbGZfaW50ZXJuYWxfcGhkciB7
CiAgdW5zaWduZWQgbG9uZyBwX3R5cGU7CiAgdW5zaWduZWQgbG9uZyBwX2ZsYWdzOwogIGJmZF92
bWEgcF9vZmZzZXQ7CiAgYmZkX3ZtYSBwX3ZhZGRyOwogIGJmZF92bWEgcF9wYWRkcjsKICBiZmRf
dm1hIHBfZmlsZXN6OwogIGJmZF92bWEgcF9tZW1zejsKICBiZmRfdm1hIHBfYWxpZ247Cn07Cgp0
eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfcGhkciBFbGZfSW50ZXJuYWxfUGhkcjsKCgoKdHlw
ZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3NoZHIgewogIHVuc2lnbmVkIGludCBzaF9uYW1lOwog
IHVuc2lnbmVkIGludCBzaF90eXBlOwogIGJmZF92bWEgc2hfZmxhZ3M7CiAgYmZkX3ZtYSBzaF9h
ZGRyOwogIGJmZF9zaXplX3R5cGUgc2hfc2l6ZTsKICBiZmRfc2l6ZV90eXBlIHNoX2VudHNpemU7
CiAgdW5zaWduZWQgbG9uZyBzaF9saW5rOwogIHVuc2lnbmVkIGxvbmcgc2hfaW5mbzsKICBmaWxl
X3B0ciBzaF9vZmZzZXQ7CiAgdW5zaWduZWQgaW50IHNoX2FkZHJhbGlnbjsKCgogIGFzZWN0aW9u
ICogYmZkX3NlY3Rpb247CiAgdW5zaWduZWQgY2hhciAqY29udGVudHM7Cn0gRWxmX0ludGVybmFs
X1NoZHI7CgoKCnN0cnVjdCBlbGZfaW50ZXJuYWxfc3ltIHsKICBiZmRfdm1hIHN0X3ZhbHVlOwog
IGJmZF92bWEgc3Rfc2l6ZTsKICB1bnNpZ25lZCBsb25nIHN0X25hbWU7CiAgdW5zaWduZWQgY2hh
ciBzdF9pbmZvOwogIHVuc2lnbmVkIGNoYXIgc3Rfb3RoZXI7CiAgdW5zaWduZWQgaW50IHN0X3No
bmR4Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3N5bSBFbGZfSW50ZXJuYWxfU3lt
OwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfbm90ZSB7CiAgdW5zaWduZWQgbG9uZyBu
YW1lc3o7CiAgdW5zaWduZWQgbG9uZyBkZXNjc3o7CiAgdW5zaWduZWQgbG9uZyB0eXBlOwogIGNo
YXIgKiBuYW1lZGF0YTsKICBjaGFyICogZGVzY2RhdGE7CiAgYmZkX3ZtYSBkZXNjcG9zOwp9IEVs
Zl9JbnRlcm5hbF9Ob3RlOwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfcmVsYSB7CiAg
YmZkX3ZtYSByX29mZnNldDsKICBiZmRfdm1hIHJfaW5mbzsKICBiZmRfdm1hIHJfYWRkZW5kOwp9
IEVsZl9JbnRlcm5hbF9SZWxhOwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfZHluIHsK
CiAgYmZkX3ZtYSBkX3RhZzsKICB1bmlvbiB7CgogICAgYmZkX3ZtYSBkX3ZhbDsKICAgIGJmZF92
bWEgZF9wdHI7CiAgfSBkX3VuOwp9IEVsZl9JbnRlcm5hbF9EeW47CgoKCnR5cGVkZWYgc3RydWN0
IGVsZl9pbnRlcm5hbF92ZXJkZWYgewogIHVuc2lnbmVkIHNob3J0IHZkX3ZlcnNpb247CiAgdW5z
aWduZWQgc2hvcnQgdmRfZmxhZ3M7CiAgdW5zaWduZWQgc2hvcnQgdmRfbmR4OwogIHVuc2lnbmVk
IHNob3J0IHZkX2NudDsKICB1bnNpZ25lZCBsb25nIHZkX2hhc2g7CiAgdW5zaWduZWQgbG9uZyB2
ZF9hdXg7CiAgdW5zaWduZWQgbG9uZyB2ZF9uZXh0OwoKCgogIGJmZCAqdmRfYmZkOwogIGNvbnN0
IGNoYXIgKnZkX25vZGVuYW1lOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxfdmVyZGVmICp2ZF9uZXh0
ZGVmOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxfdmVyZGF1eCAqdmRfYXV4cHRyOwogIHVuc2lnbmVk
IGludCB2ZF9leHBfcmVmbm87Cn0gRWxmX0ludGVybmFsX1ZlcmRlZjsKCgoKdHlwZWRlZiBzdHJ1
Y3QgZWxmX2ludGVybmFsX3ZlcmRhdXggewogIHVuc2lnbmVkIGxvbmcgdmRhX25hbWU7CiAgdW5z
aWduZWQgbG9uZyB2ZGFfbmV4dDsKCgoKICBjb25zdCBjaGFyICp2ZGFfbm9kZW5hbWU7CiAgc3Ry
dWN0IGVsZl9pbnRlcm5hbF92ZXJkYXV4ICp2ZGFfbmV4dHB0cjsKfSBFbGZfSW50ZXJuYWxfVmVy
ZGF1eDsKCgoKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3Zlcm5lZWQgewogIHVuc2lnbmVk
IHNob3J0IHZuX3ZlcnNpb247CiAgdW5zaWduZWQgc2hvcnQgdm5fY250OwogIHVuc2lnbmVkIGxv
bmcgdm5fZmlsZTsKICB1bnNpZ25lZCBsb25nIHZuX2F1eDsKICB1bnNpZ25lZCBsb25nIHZuX25l
eHQ7CgoKCiAgYmZkICp2bl9iZmQ7CiAgY29uc3QgY2hhciAqdm5fZmlsZW5hbWU7CiAgc3RydWN0
IGVsZl9pbnRlcm5hbF92ZXJuYXV4ICp2bl9hdXhwdHI7CiAgc3RydWN0IGVsZl9pbnRlcm5hbF92
ZXJuZWVkICp2bl9uZXh0cmVmOwp9IEVsZl9JbnRlcm5hbF9WZXJuZWVkOwoKCgp0eXBlZGVmIHN0
cnVjdCBlbGZfaW50ZXJuYWxfdmVybmF1eCB7CiAgdW5zaWduZWQgbG9uZyB2bmFfaGFzaDsKICB1
bnNpZ25lZCBzaG9ydCB2bmFfZmxhZ3M7CiAgdW5zaWduZWQgc2hvcnQgdm5hX290aGVyOwogIHVu
c2lnbmVkIGxvbmcgdm5hX25hbWU7CiAgdW5zaWduZWQgbG9uZyB2bmFfbmV4dDsKCgoKICBjb25z
dCBjaGFyICp2bmFfbm9kZW5hbWU7CiAgc3RydWN0IGVsZl9pbnRlcm5hbF92ZXJuYXV4ICp2bmFf
bmV4dHB0cjsKfSBFbGZfSW50ZXJuYWxfVmVybmF1eDsKCgoKCnR5cGVkZWYgc3RydWN0IGVsZl9p
bnRlcm5hbF92ZXJzeW0gewogIHVuc2lnbmVkIHNob3J0IHZzX3ZlcnM7Cn0gRWxmX0ludGVybmFs
X1ZlcnN5bTsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgc2hvcnQgaW50IHNpX2JvdW5k
dG87CiAgdW5zaWduZWQgc2hvcnQgaW50IHNpX2ZsYWdzOwp9IEVsZl9JbnRlcm5hbF9TeW1pbmZv
OwoKCgoKCnN0cnVjdCBlbGZfc2VnbWVudF9tYXAKewoKICBzdHJ1Y3QgZWxmX3NlZ21lbnRfbWFw
ICpuZXh0OwoKICB1bnNpZ25lZCBsb25nIHBfdHlwZTsKCiAgdW5zaWduZWQgbG9uZyBwX2ZsYWdz
OwoKICBiZmRfdm1hIHBfcGFkZHI7CgoKICB1bnNpZ25lZCBpbnQgcF9mbGFnc192YWxpZCA6IDE7
CgoKICB1bnNpZ25lZCBpbnQgcF9wYWRkcl92YWxpZCA6IDE7CgogIHVuc2lnbmVkIGludCBpbmNs
dWRlc19maWxlaGRyIDogMTsKCiAgdW5zaWduZWQgaW50IGluY2x1ZGVzX3BoZHJzIDogMTsKCiAg
dW5zaWduZWQgaW50IGNvdW50OwoKICBhc2VjdGlvbiAqc2VjdGlvbnNbMV07Cn07CiMgNDQgInJl
YWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIiAxCiMgNDUgIi4uL2luY2x1
ZGUvZWxmL2R3YXJmMi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBsaV9sZW5n
dGggWzRdOwogIHVuc2lnbmVkIGNoYXIgbGlfdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBs
aV9wcm9sb2d1ZV9sZW5ndGggWzRdOwogIHVuc2lnbmVkIGNoYXIgbGlfbWluX2luc25fbGVuZ3Ro
IFsxXTsKICB1bnNpZ25lZCBjaGFyIGxpX2RlZmF1bHRfaXNfc3RtdCBbMV07CiAgdW5zaWduZWQg
Y2hhciBsaV9saW5lX2Jhc2UgWzFdOwogIHVuc2lnbmVkIGNoYXIgbGlfbGluZV9yYW5nZSBbMV07
CiAgdW5zaWduZWQgY2hhciBsaV9vcGNvZGVfYmFzZSBbMV07Cn0KRFdBUkYyX0V4dGVybmFsX0xp
bmVJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgbGlfbGVuZ3RoOwogIHVu
c2lnbmVkIHNob3J0IGxpX3ZlcnNpb247CiAgdW5zaWduZWQgaW50IGxpX3Byb2xvZ3VlX2xlbmd0
aDsKICB1bnNpZ25lZCBjaGFyIGxpX21pbl9pbnNuX2xlbmd0aDsKICB1bnNpZ25lZCBjaGFyIGxp
X2RlZmF1bHRfaXNfc3RtdDsKICBpbnQgbGlfbGluZV9iYXNlOwogIHVuc2lnbmVkIGNoYXIgbGlf
bGluZV9yYW5nZTsKICB1bnNpZ25lZCBjaGFyIGxpX29wY29kZV9iYXNlOwp9CkRXQVJGMl9JbnRl
cm5hbF9MaW5lSW5mbzsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBwbl9sZW5n
dGggWzRdOwogIHVuc2lnbmVkIGNoYXIgcG5fdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBw
bl9vZmZzZXQgWzRdOwogIHVuc2lnbmVkIGNoYXIgcG5fc2l6ZSBbNF07Cn0KRFdBUkYyX0V4dGVy
bmFsX1B1Yk5hbWVzOwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgcG5fbGVuZ3Ro
OwogIHVuc2lnbmVkIHNob3J0IHBuX3ZlcnNpb247CiAgdW5zaWduZWQgbG9uZyBwbl9vZmZzZXQ7
CiAgdW5zaWduZWQgbG9uZyBwbl9zaXplOwp9CkRXQVJGMl9JbnRlcm5hbF9QdWJOYW1lczsKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBjdV9sZW5ndGggWzRdOwogIHVuc2lnbmVk
IGNoYXIgY3VfdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBjdV9hYmJyZXZfb2Zmc2V0IFs0
XTsKICB1bnNpZ25lZCBjaGFyIGN1X3BvaW50ZXJfc2l6ZSBbMV07Cn0KRFdBUkYyX0V4dGVybmFs
X0NvbXBVbml0OwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgY3VfbGVuZ3RoOwog
IHVuc2lnbmVkIHNob3J0IGN1X3ZlcnNpb247CiAgdW5zaWduZWQgbG9uZyBjdV9hYmJyZXZfb2Zm
c2V0OwogIHVuc2lnbmVkIGNoYXIgY3VfcG9pbnRlcl9zaXplOwp9CkRXQVJGMl9JbnRlcm5hbF9D
b21wVW5pdDsKCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBjaGFyIGFyX2xlbmd0aCBbNF07
CiAgdW5zaWduZWQgY2hhciBhcl92ZXJzaW9uIFsyXTsKICB1bnNpZ25lZCBjaGFyIGFyX2luZm9f
b2Zmc2V0IFs0XTsKICB1bnNpZ25lZCBjaGFyIGFyX3BvaW50ZXJfc2l6ZSBbMV07CiAgdW5zaWdu
ZWQgY2hhciBhcl9zZWdtZW50X3NpemUgWzFdOwp9CkRXQVJGMl9FeHRlcm5hbF9BUmFuZ2U7Cgp0
eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgbG9uZyBhcl9sZW5ndGg7CiAgdW5zaWduZWQgc2hv
cnQgYXJfdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIGFyX2luZm9fb2Zmc2V0OwogIHVuc2lnbmVk
IGNoYXIgYXJfcG9pbnRlcl9zaXplOwogIHVuc2lnbmVkIGNoYXIgYXJfc2VnbWVudF9zaXplOwp9
CkRXQVJGMl9JbnRlcm5hbF9BUmFuZ2U7CgoKCmVudW0gZHdhcmZfdGFnCiAgewogICAgRFdfVEFH
X3BhZGRpbmcgPSAweDAwLAogICAgRFdfVEFHX2FycmF5X3R5cGUgPSAweDAxLAogICAgRFdfVEFH
X2NsYXNzX3R5cGUgPSAweDAyLAogICAgRFdfVEFHX2VudHJ5X3BvaW50ID0gMHgwMywKICAgIERX
X1RBR19lbnVtZXJhdGlvbl90eXBlID0gMHgwNCwKICAgIERXX1RBR19mb3JtYWxfcGFyYW1ldGVy
ID0gMHgwNSwKICAgIERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbiA9IDB4MDgsCiAgICBEV19U
QUdfbGFiZWwgPSAweDBhLAogICAgRFdfVEFHX2xleGljYWxfYmxvY2sgPSAweDBiLAogICAgRFdf
VEFHX21lbWJlciA9IDB4MGQsCiAgICBEV19UQUdfcG9pbnRlcl90eXBlID0gMHgwZiwKICAgIERX
X1RBR19yZWZlcmVuY2VfdHlwZSA9IDB4MTAsCiAgICBEV19UQUdfY29tcGlsZV91bml0ID0gMHgx
MSwKICAgIERXX1RBR19zdHJpbmdfdHlwZSA9IDB4MTIsCiAgICBEV19UQUdfc3RydWN0dXJlX3R5
cGUgPSAweDEzLAogICAgRFdfVEFHX3N1YnJvdXRpbmVfdHlwZSA9IDB4MTUsCiAgICBEV19UQUdf
dHlwZWRlZiA9IDB4MTYsCiAgICBEV19UQUdfdW5pb25fdHlwZSA9IDB4MTcsCiAgICBEV19UQUdf
dW5zcGVjaWZpZWRfcGFyYW1ldGVycyA9IDB4MTgsCiAgICBEV19UQUdfdmFyaWFudCA9IDB4MTks
CiAgICBEV19UQUdfY29tbW9uX2Jsb2NrID0gMHgxYSwKICAgIERXX1RBR19jb21tb25faW5jbHVz
aW9uID0gMHgxYiwKICAgIERXX1RBR19pbmhlcml0YW5jZSA9IDB4MWMsCiAgICBEV19UQUdfaW5s
aW5lZF9zdWJyb3V0aW5lID0gMHgxZCwKICAgIERXX1RBR19tb2R1bGUgPSAweDFlLAogICAgRFdf
VEFHX3B0cl90b19tZW1iZXJfdHlwZSA9IDB4MWYsCiAgICBEV19UQUdfc2V0X3R5cGUgPSAweDIw
LAogICAgRFdfVEFHX3N1YnJhbmdlX3R5cGUgPSAweDIxLAogICAgRFdfVEFHX3dpdGhfc3RtdCA9
IDB4MjIsCiAgICBEV19UQUdfYWNjZXNzX2RlY2xhcmF0aW9uID0gMHgyMywKICAgIERXX1RBR19i
YXNlX3R5cGUgPSAweDI0LAogICAgRFdfVEFHX2NhdGNoX2Jsb2NrID0gMHgyNSwKICAgIERXX1RB
R19jb25zdF90eXBlID0gMHgyNiwKICAgIERXX1RBR19jb25zdGFudCA9IDB4MjcsCiAgICBEV19U
QUdfZW51bWVyYXRvciA9IDB4MjgsCiAgICBEV19UQUdfZmlsZV90eXBlID0gMHgyOSwKICAgIERX
X1RBR19mcmllbmQgPSAweDJhLAogICAgRFdfVEFHX25hbWVsaXN0ID0gMHgyYiwKICAgIERXX1RB
R19uYW1lbGlzdF9pdGVtID0gMHgyYywKICAgIERXX1RBR19wYWNrZWRfdHlwZSA9IDB4MmQsCiAg
ICBEV19UQUdfc3VicHJvZ3JhbSA9IDB4MmUsCiAgICBEV19UQUdfdGVtcGxhdGVfdHlwZV9wYXJh
bSA9IDB4MmYsCiAgICBEV19UQUdfdGVtcGxhdGVfdmFsdWVfcGFyYW0gPSAweDMwLAogICAgRFdf
VEFHX3Rocm93bl90eXBlID0gMHgzMSwKICAgIERXX1RBR190cnlfYmxvY2sgPSAweDMyLAogICAg
RFdfVEFHX3ZhcmlhbnRfcGFydCA9IDB4MzMsCiAgICBEV19UQUdfdmFyaWFibGUgPSAweDM0LAog
ICAgRFdfVEFHX3ZvbGF0aWxlX3R5cGUgPSAweDM1LAoKICAgIERXX1RBR19kd2FyZl9wcm9jZWR1
cmUgPSAweDM2LAogICAgRFdfVEFHX3Jlc3RyaWN0X3R5cGUgPSAweDM3LAogICAgRFdfVEFHX2lu
dGVyZmFjZV90eXBlID0gMHgzOCwKICAgIERXX1RBR19uYW1lc3BhY2UgPSAweDM5LAogICAgRFdf
VEFHX2ltcG9ydGVkX21vZHVsZSA9IDB4M2EsCiAgICBEV19UQUdfdW5zcGVjaWZpZWRfdHlwZSA9
IDB4M2IsCiAgICBEV19UQUdfcGFydGlhbF91bml0ID0gMHgzYywKICAgIERXX1RBR19pbXBvcnRl
ZF91bml0ID0gMHgzZCwKCiAgICBEV19UQUdfTUlQU19sb29wID0gMHg0MDgxLAoKICAgIERXX1RB
R19mb3JtYXRfbGFiZWwgPSAweDQxMDEsCiAgICBEV19UQUdfZnVuY3Rpb25fdGVtcGxhdGUgPSAw
eDQxMDIsCiAgICBEV19UQUdfY2xhc3NfdGVtcGxhdGUgPSAweDQxMDMsCiAgICBEV19UQUdfR05V
X0JJTkNMID0gMHg0MTA0LAogICAgRFdfVEFHX0dOVV9FSU5DTCA9IDB4NDEwNSwKCiAgICBEV19U
QUdfdXBjX3NoYXJlZF90eXBlID0gMHg4NzY1LAogICAgRFdfVEFHX3VwY19zdHJpY3RfdHlwZSA9
IDB4ODc2NiwKICAgIERXX1RBR191cGNfcmVsYXhlZF90eXBlID0gMHg4NzY3CiAgfTsKIyAyMTIg
Ii4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIgplbnVtIGR3YXJmX2Zvcm0KICB7CiAgICBEV19GT1JN
X2FkZHIgPSAweDAxLAogICAgRFdfRk9STV9ibG9jazIgPSAweDAzLAogICAgRFdfRk9STV9ibG9j
azQgPSAweDA0LAogICAgRFdfRk9STV9kYXRhMiA9IDB4MDUsCiAgICBEV19GT1JNX2RhdGE0ID0g
MHgwNiwKICAgIERXX0ZPUk1fZGF0YTggPSAweDA3LAogICAgRFdfRk9STV9zdHJpbmcgPSAweDA4
LAogICAgRFdfRk9STV9ibG9jayA9IDB4MDksCiAgICBEV19GT1JNX2Jsb2NrMSA9IDB4MGEsCiAg
ICBEV19GT1JNX2RhdGExID0gMHgwYiwKICAgIERXX0ZPUk1fZmxhZyA9IDB4MGMsCiAgICBEV19G
T1JNX3NkYXRhID0gMHgwZCwKICAgIERXX0ZPUk1fc3RycCA9IDB4MGUsCiAgICBEV19GT1JNX3Vk
YXRhID0gMHgwZiwKICAgIERXX0ZPUk1fcmVmX2FkZHIgPSAweDEwLAogICAgRFdfRk9STV9yZWYx
ID0gMHgxMSwKICAgIERXX0ZPUk1fcmVmMiA9IDB4MTIsCiAgICBEV19GT1JNX3JlZjQgPSAweDEz
LAogICAgRFdfRk9STV9yZWY4ID0gMHgxNCwKICAgIERXX0ZPUk1fcmVmX3VkYXRhID0gMHgxNSwK
ICAgIERXX0ZPUk1faW5kaXJlY3QgPSAweDE2CiAgfTsKCgoKZW51bSBkd2FyZl9hdHRyaWJ1dGUK
ICB7CiAgICBEV19BVF9zaWJsaW5nID0gMHgwMSwKICAgIERXX0FUX2xvY2F0aW9uID0gMHgwMiwK
ICAgIERXX0FUX25hbWUgPSAweDAzLAogICAgRFdfQVRfb3JkZXJpbmcgPSAweDA5LAogICAgRFdf
QVRfc3Vic2NyX2RhdGEgPSAweDBhLAogICAgRFdfQVRfYnl0ZV9zaXplID0gMHgwYiwKICAgIERX
X0FUX2JpdF9vZmZzZXQgPSAweDBjLAogICAgRFdfQVRfYml0X3NpemUgPSAweDBkLAogICAgRFdf
QVRfZWxlbWVudF9saXN0ID0gMHgwZiwKICAgIERXX0FUX3N0bXRfbGlzdCA9IDB4MTAsCiAgICBE
V19BVF9sb3dfcGMgPSAweDExLAogICAgRFdfQVRfaGlnaF9wYyA9IDB4MTIsCiAgICBEV19BVF9s
YW5ndWFnZSA9IDB4MTMsCiAgICBEV19BVF9tZW1iZXIgPSAweDE0LAogICAgRFdfQVRfZGlzY3Ig
PSAweDE1LAogICAgRFdfQVRfZGlzY3JfdmFsdWUgPSAweDE2LAogICAgRFdfQVRfdmlzaWJpbGl0
eSA9IDB4MTcsCiAgICBEV19BVF9pbXBvcnQgPSAweDE4LAogICAgRFdfQVRfc3RyaW5nX2xlbmd0
aCA9IDB4MTksCiAgICBEV19BVF9jb21tb25fcmVmZXJlbmNlID0gMHgxYSwKICAgIERXX0FUX2Nv
bXBfZGlyID0gMHgxYiwKICAgIERXX0FUX2NvbnN0X3ZhbHVlID0gMHgxYywKICAgIERXX0FUX2Nv
bnRhaW5pbmdfdHlwZSA9IDB4MWQsCiAgICBEV19BVF9kZWZhdWx0X3ZhbHVlID0gMHgxZSwKICAg
IERXX0FUX2lubGluZSA9IDB4MjAsCiAgICBEV19BVF9pc19vcHRpb25hbCA9IDB4MjEsCiAgICBE
V19BVF9sb3dlcl9ib3VuZCA9IDB4MjIsCiAgICBEV19BVF9wcm9kdWNlciA9IDB4MjUsCiAgICBE
V19BVF9wcm90b3R5cGVkID0gMHgyNywKICAgIERXX0FUX3JldHVybl9hZGRyID0gMHgyYSwKICAg
IERXX0FUX3N0YXJ0X3Njb3BlID0gMHgyYywKICAgIERXX0FUX3N0cmlkZV9zaXplID0gMHgyZSwK
ICAgIERXX0FUX3VwcGVyX2JvdW5kID0gMHgyZiwKICAgIERXX0FUX2Fic3RyYWN0X29yaWdpbiA9
IDB4MzEsCiAgICBEV19BVF9hY2Nlc3NpYmlsaXR5ID0gMHgzMiwKICAgIERXX0FUX2FkZHJlc3Nf
Y2xhc3MgPSAweDMzLAogICAgRFdfQVRfYXJ0aWZpY2lhbCA9IDB4MzQsCiAgICBEV19BVF9iYXNl
X3R5cGVzID0gMHgzNSwKICAgIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiA9IDB4MzYsCiAgICBE
V19BVF9jb3VudCA9IDB4MzcsCiAgICBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiA9IDB4Mzgs
CiAgICBEV19BVF9kZWNsX2NvbHVtbiA9IDB4MzksCiAgICBEV19BVF9kZWNsX2ZpbGUgPSAweDNh
LAogICAgRFdfQVRfZGVjbF9saW5lID0gMHgzYiwKICAgIERXX0FUX2RlY2xhcmF0aW9uID0gMHgz
YywKICAgIERXX0FUX2Rpc2NyX2xpc3QgPSAweDNkLAogICAgRFdfQVRfZW5jb2RpbmcgPSAweDNl
LAogICAgRFdfQVRfZXh0ZXJuYWwgPSAweDNmLAogICAgRFdfQVRfZnJhbWVfYmFzZSA9IDB4NDAs
CiAgICBEV19BVF9mcmllbmQgPSAweDQxLAogICAgRFdfQVRfaWRlbnRpZmllcl9jYXNlID0gMHg0
MiwKICAgIERXX0FUX21hY3JvX2luZm8gPSAweDQzLAogICAgRFdfQVRfbmFtZWxpc3RfaXRlbXMg
PSAweDQ0LAogICAgRFdfQVRfcHJpb3JpdHkgPSAweDQ1LAogICAgRFdfQVRfc2VnbWVudCA9IDB4
NDYsCiAgICBEV19BVF9zcGVjaWZpY2F0aW9uID0gMHg0NywKICAgIERXX0FUX3N0YXRpY19saW5r
ID0gMHg0OCwKICAgIERXX0FUX3R5cGUgPSAweDQ5LAogICAgRFdfQVRfdXNlX2xvY2F0aW9uID0g
MHg0YSwKICAgIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciA9IDB4NGIsCiAgICBEV19BVF92aXJ0
dWFsaXR5ID0gMHg0YywKICAgIERXX0FUX3Z0YWJsZV9lbGVtX2xvY2F0aW9uID0gMHg0ZCwKCiAg
ICBEV19BVF9hbGxvY2F0ZWQgPSAweDRlLAogICAgRFdfQVRfYXNzb2NpYXRlZCA9IDB4NGYsCiAg
ICBEV19BVF9kYXRhX2xvY2F0aW9uID0gMHg1MCwKICAgIERXX0FUX3N0cmlkZSA9IDB4NTEsCiAg
ICBEV19BVF9lbnRyeV9wYyA9IDB4NTIsCiAgICBEV19BVF91c2VfVVRGOCA9IDB4NTMsCiAgICBE
V19BVF9leHRlbnNpb24gPSAweDU0LAogICAgRFdfQVRfcmFuZ2VzID0gMHg1NSwKICAgIERXX0FU
X3RyYW1wb2xpbmUgPSAweDU2LAogICAgRFdfQVRfY2FsbF9jb2x1bW4gPSAweDU3LAogICAgRFdf
QVRfY2FsbF9maWxlID0gMHg1OCwKICAgIERXX0FUX2NhbGxfbGluZSA9IDB4NTksCgogICAgRFdf
QVRfTUlQU19mZGUgPSAweDIwMDEsCiAgICBEV19BVF9NSVBTX2xvb3BfYmVnaW4gPSAweDIwMDIs
CiAgICBEV19BVF9NSVBTX3RhaWxfbG9vcF9iZWdpbiA9IDB4MjAwMywKICAgIERXX0FUX01JUFNf
ZXBpbG9nX2JlZ2luID0gMHgyMDA0LAogICAgRFdfQVRfTUlQU19sb29wX3Vucm9sbF9mYWN0b3Ig
PSAweDIwMDUsCiAgICBEV19BVF9NSVBTX3NvZnR3YXJlX3BpcGVsaW5lX2RlcHRoID0gMHgyMDA2
LAogICAgRFdfQVRfTUlQU19saW5rYWdlX25hbWUgPSAweDIwMDcsCiAgICBEV19BVF9NSVBTX3N0
cmlkZSA9IDB4MjAwOCwKICAgIERXX0FUX01JUFNfYWJzdHJhY3RfbmFtZSA9IDB4MjAwOSwKICAg
IERXX0FUX01JUFNfY2xvbmVfb3JpZ2luID0gMHgyMDBhLAogICAgRFdfQVRfTUlQU19oYXNfaW5s
aW5lcyA9IDB4MjAwYiwKCiAgICBEV19BVF9zZl9uYW1lcyA9IDB4MjEwMSwKICAgIERXX0FUX3Ny
Y19pbmZvID0gMHgyMTAyLAogICAgRFdfQVRfbWFjX2luZm8gPSAweDIxMDMsCiAgICBEV19BVF9z
cmNfY29vcmRzID0gMHgyMTA0LAogICAgRFdfQVRfYm9keV9iZWdpbiA9IDB4MjEwNSwKICAgIERX
X0FUX2JvZHlfZW5kID0gMHgyMTA2LAogICAgRFdfQVRfR05VX3ZlY3RvciA9IDB4MjEwNywKCiAg
ICBEV19BVF9WTVNfcnRuYmVnX3BkX2FkZHJlc3MgPSAweDIyMDEsCgogICAgRFdfQVRfdXBjX3Ro
cmVhZHNfc2NhbGVkID0gMHgzMjEwCiAgfTsKCgoKCgplbnVtIGR3YXJmX2xvY2F0aW9uX2F0b20K
ICB7CiAgICBEV19PUF9hZGRyID0gMHgwMywKICAgIERXX09QX2RlcmVmID0gMHgwNiwKICAgIERX
X09QX2NvbnN0MXUgPSAweDA4LAogICAgRFdfT1BfY29uc3QxcyA9IDB4MDksCiAgICBEV19PUF9j
b25zdDJ1ID0gMHgwYSwKICAgIERXX09QX2NvbnN0MnMgPSAweDBiLAogICAgRFdfT1BfY29uc3Q0
dSA9IDB4MGMsCiAgICBEV19PUF9jb25zdDRzID0gMHgwZCwKICAgIERXX09QX2NvbnN0OHUgPSAw
eDBlLAogICAgRFdfT1BfY29uc3Q4cyA9IDB4MGYsCiAgICBEV19PUF9jb25zdHUgPSAweDEwLAog
ICAgRFdfT1BfY29uc3RzID0gMHgxMSwKICAgIERXX09QX2R1cCA9IDB4MTIsCiAgICBEV19PUF9k
cm9wID0gMHgxMywKICAgIERXX09QX292ZXIgPSAweDE0LAogICAgRFdfT1BfcGljayA9IDB4MTUs
CiAgICBEV19PUF9zd2FwID0gMHgxNiwKICAgIERXX09QX3JvdCA9IDB4MTcsCiAgICBEV19PUF94
ZGVyZWYgPSAweDE4LAogICAgRFdfT1BfYWJzID0gMHgxOSwKICAgIERXX09QX2FuZCA9IDB4MWEs
CiAgICBEV19PUF9kaXYgPSAweDFiLAogICAgRFdfT1BfbWludXMgPSAweDFjLAogICAgRFdfT1Bf
bW9kID0gMHgxZCwKICAgIERXX09QX211bCA9IDB4MWUsCiAgICBEV19PUF9uZWcgPSAweDFmLAog
ICAgRFdfT1Bfbm90ID0gMHgyMCwKICAgIERXX09QX29yID0gMHgyMSwKICAgIERXX09QX3BsdXMg
PSAweDIyLAogICAgRFdfT1BfcGx1c191Y29uc3QgPSAweDIzLAogICAgRFdfT1Bfc2hsID0gMHgy
NCwKICAgIERXX09QX3NociA9IDB4MjUsCiAgICBEV19PUF9zaHJhID0gMHgyNiwKICAgIERXX09Q
X3hvciA9IDB4MjcsCiAgICBEV19PUF9icmEgPSAweDI4LAogICAgRFdfT1BfZXEgPSAweDI5LAog
ICAgRFdfT1BfZ2UgPSAweDJhLAogICAgRFdfT1BfZ3QgPSAweDJiLAogICAgRFdfT1BfbGUgPSAw
eDJjLAogICAgRFdfT1BfbHQgPSAweDJkLAogICAgRFdfT1BfbmUgPSAweDJlLAogICAgRFdfT1Bf
c2tpcCA9IDB4MmYsCiAgICBEV19PUF9saXQwID0gMHgzMCwKICAgIERXX09QX2xpdDEgPSAweDMx
LAogICAgRFdfT1BfbGl0MiA9IDB4MzIsCiAgICBEV19PUF9saXQzID0gMHgzMywKICAgIERXX09Q
X2xpdDQgPSAweDM0LAogICAgRFdfT1BfbGl0NSA9IDB4MzUsCiAgICBEV19PUF9saXQ2ID0gMHgz
NiwKICAgIERXX09QX2xpdDcgPSAweDM3LAogICAgRFdfT1BfbGl0OCA9IDB4MzgsCiAgICBEV19P
UF9saXQ5ID0gMHgzOSwKICAgIERXX09QX2xpdDEwID0gMHgzYSwKICAgIERXX09QX2xpdDExID0g
MHgzYiwKICAgIERXX09QX2xpdDEyID0gMHgzYywKICAgIERXX09QX2xpdDEzID0gMHgzZCwKICAg
IERXX09QX2xpdDE0ID0gMHgzZSwKICAgIERXX09QX2xpdDE1ID0gMHgzZiwKICAgIERXX09QX2xp
dDE2ID0gMHg0MCwKICAgIERXX09QX2xpdDE3ID0gMHg0MSwKICAgIERXX09QX2xpdDE4ID0gMHg0
MiwKICAgIERXX09QX2xpdDE5ID0gMHg0MywKICAgIERXX09QX2xpdDIwID0gMHg0NCwKICAgIERX
X09QX2xpdDIxID0gMHg0NSwKICAgIERXX09QX2xpdDIyID0gMHg0NiwKICAgIERXX09QX2xpdDIz
ID0gMHg0NywKICAgIERXX09QX2xpdDI0ID0gMHg0OCwKICAgIERXX09QX2xpdDI1ID0gMHg0OSwK
ICAgIERXX09QX2xpdDI2ID0gMHg0YSwKICAgIERXX09QX2xpdDI3ID0gMHg0YiwKICAgIERXX09Q
X2xpdDI4ID0gMHg0YywKICAgIERXX09QX2xpdDI5ID0gMHg0ZCwKICAgIERXX09QX2xpdDMwID0g
MHg0ZSwKICAgIERXX09QX2xpdDMxID0gMHg0ZiwKICAgIERXX09QX3JlZzAgPSAweDUwLAogICAg
RFdfT1BfcmVnMSA9IDB4NTEsCiAgICBEV19PUF9yZWcyID0gMHg1MiwKICAgIERXX09QX3JlZzMg
PSAweDUzLAogICAgRFdfT1BfcmVnNCA9IDB4NTQsCiAgICBEV19PUF9yZWc1ID0gMHg1NSwKICAg
IERXX09QX3JlZzYgPSAweDU2LAogICAgRFdfT1BfcmVnNyA9IDB4NTcsCiAgICBEV19PUF9yZWc4
ID0gMHg1OCwKICAgIERXX09QX3JlZzkgPSAweDU5LAogICAgRFdfT1BfcmVnMTAgPSAweDVhLAog
ICAgRFdfT1BfcmVnMTEgPSAweDViLAogICAgRFdfT1BfcmVnMTIgPSAweDVjLAogICAgRFdfT1Bf
cmVnMTMgPSAweDVkLAogICAgRFdfT1BfcmVnMTQgPSAweDVlLAogICAgRFdfT1BfcmVnMTUgPSAw
eDVmLAogICAgRFdfT1BfcmVnMTYgPSAweDYwLAogICAgRFdfT1BfcmVnMTcgPSAweDYxLAogICAg
RFdfT1BfcmVnMTggPSAweDYyLAogICAgRFdfT1BfcmVnMTkgPSAweDYzLAogICAgRFdfT1BfcmVn
MjAgPSAweDY0LAogICAgRFdfT1BfcmVnMjEgPSAweDY1LAogICAgRFdfT1BfcmVnMjIgPSAweDY2
LAogICAgRFdfT1BfcmVnMjMgPSAweDY3LAogICAgRFdfT1BfcmVnMjQgPSAweDY4LAogICAgRFdf
T1BfcmVnMjUgPSAweDY5LAogICAgRFdfT1BfcmVnMjYgPSAweDZhLAogICAgRFdfT1BfcmVnMjcg
PSAweDZiLAogICAgRFdfT1BfcmVnMjggPSAweDZjLAogICAgRFdfT1BfcmVnMjkgPSAweDZkLAog
ICAgRFdfT1BfcmVnMzAgPSAweDZlLAogICAgRFdfT1BfcmVnMzEgPSAweDZmLAogICAgRFdfT1Bf
YnJlZzAgPSAweDcwLAogICAgRFdfT1BfYnJlZzEgPSAweDcxLAogICAgRFdfT1BfYnJlZzIgPSAw
eDcyLAogICAgRFdfT1BfYnJlZzMgPSAweDczLAogICAgRFdfT1BfYnJlZzQgPSAweDc0LAogICAg
RFdfT1BfYnJlZzUgPSAweDc1LAogICAgRFdfT1BfYnJlZzYgPSAweDc2LAogICAgRFdfT1BfYnJl
ZzcgPSAweDc3LAogICAgRFdfT1BfYnJlZzggPSAweDc4LAogICAgRFdfT1BfYnJlZzkgPSAweDc5
LAogICAgRFdfT1BfYnJlZzEwID0gMHg3YSwKICAgIERXX09QX2JyZWcxMSA9IDB4N2IsCiAgICBE
V19PUF9icmVnMTIgPSAweDdjLAogICAgRFdfT1BfYnJlZzEzID0gMHg3ZCwKICAgIERXX09QX2Jy
ZWcxNCA9IDB4N2UsCiAgICBEV19PUF9icmVnMTUgPSAweDdmLAogICAgRFdfT1BfYnJlZzE2ID0g
MHg4MCwKICAgIERXX09QX2JyZWcxNyA9IDB4ODEsCiAgICBEV19PUF9icmVnMTggPSAweDgyLAog
ICAgRFdfT1BfYnJlZzE5ID0gMHg4MywKICAgIERXX09QX2JyZWcyMCA9IDB4ODQsCiAgICBEV19P
UF9icmVnMjEgPSAweDg1LAogICAgRFdfT1BfYnJlZzIyID0gMHg4NiwKICAgIERXX09QX2JyZWcy
MyA9IDB4ODcsCiAgICBEV19PUF9icmVnMjQgPSAweDg4LAogICAgRFdfT1BfYnJlZzI1ID0gMHg4
OSwKICAgIERXX09QX2JyZWcyNiA9IDB4OGEsCiAgICBEV19PUF9icmVnMjcgPSAweDhiLAogICAg
RFdfT1BfYnJlZzI4ID0gMHg4YywKICAgIERXX09QX2JyZWcyOSA9IDB4OGQsCiAgICBEV19PUF9i
cmVnMzAgPSAweDhlLAogICAgRFdfT1BfYnJlZzMxID0gMHg4ZiwKICAgIERXX09QX3JlZ3ggPSAw
eDkwLAogICAgRFdfT1BfZmJyZWcgPSAweDkxLAogICAgRFdfT1BfYnJlZ3ggPSAweDkyLAogICAg
RFdfT1BfcGllY2UgPSAweDkzLAogICAgRFdfT1BfZGVyZWZfc2l6ZSA9IDB4OTQsCiAgICBEV19P
UF94ZGVyZWZfc2l6ZSA9IDB4OTUsCiAgICBEV19PUF9ub3AgPSAweDk2LAoKICAgIERXX09QX3B1
c2hfb2JqZWN0X2FkZHJlc3MgPSAweDk3LAogICAgRFdfT1BfY2FsbDIgPSAweDk4LAogICAgRFdf
T1BfY2FsbDQgPSAweDk5LAogICAgRFdfT1BfY2FsbF9yZWYgPSAweDlhLAoKICAgIERXX09QX0dO
VV9wdXNoX3Rsc19hZGRyZXNzID0gMHhlMAogIH07CgoKCgoKZW51bSBkd2FyZl90eXBlCiAgewog
ICAgRFdfQVRFX3ZvaWQgPSAweDAsCiAgICBEV19BVEVfYWRkcmVzcyA9IDB4MSwKICAgIERXX0FU
RV9ib29sZWFuID0gMHgyLAogICAgRFdfQVRFX2NvbXBsZXhfZmxvYXQgPSAweDMsCiAgICBEV19B
VEVfZmxvYXQgPSAweDQsCiAgICBEV19BVEVfc2lnbmVkID0gMHg1LAogICAgRFdfQVRFX3NpZ25l
ZF9jaGFyID0gMHg2LAogICAgRFdfQVRFX3Vuc2lnbmVkID0gMHg3LAogICAgRFdfQVRFX3Vuc2ln
bmVkX2NoYXIgPSAweDgsCgogICAgRFdfQVRFX2ltYWdpbmFyeV9mbG9hdCA9IDB4OQogIH07CgoK
CgoKZW51bSBkd2FyZl9hcnJheV9kaW1fb3JkZXJpbmcKICB7CiAgICBEV19PUkRfcm93X21ham9y
ID0gMCwKICAgIERXX09SRF9jb2xfbWFqb3IgPSAxCiAgfTsKCgplbnVtIGR3YXJmX2FjY2Vzc19h
dHRyaWJ1dGUKICB7CiAgICBEV19BQ0NFU1NfcHVibGljID0gMSwKICAgIERXX0FDQ0VTU19wcm90
ZWN0ZWQgPSAyLAogICAgRFdfQUNDRVNTX3ByaXZhdGUgPSAzCiAgfTsKCgplbnVtIGR3YXJmX3Zp
c2liaWxpdHlfYXR0cmlidXRlCiAgewogICAgRFdfVklTX2xvY2FsID0gMSwKICAgIERXX1ZJU19l
eHBvcnRlZCA9IDIsCiAgICBEV19WSVNfcXVhbGlmaWVkID0gMwogIH07CgoKZW51bSBkd2FyZl92
aXJ0dWFsaXR5X2F0dHJpYnV0ZQogIHsKICAgIERXX1ZJUlRVQUxJVFlfbm9uZSA9IDAsCiAgICBE
V19WSVJUVUFMSVRZX3ZpcnR1YWwgPSAxLAogICAgRFdfVklSVFVBTElUWV9wdXJlX3ZpcnR1YWwg
PSAyCiAgfTsKCgplbnVtIGR3YXJmX2lkX2Nhc2UKICB7CiAgICBEV19JRF9jYXNlX3NlbnNpdGl2
ZSA9IDAsCiAgICBEV19JRF91cF9jYXNlID0gMSwKICAgIERXX0lEX2Rvd25fY2FzZSA9IDIsCiAg
ICBEV19JRF9jYXNlX2luc2Vuc2l0aXZlID0gMwogIH07CgoKZW51bSBkd2FyZl9jYWxsaW5nX2Nv
bnZlbnRpb24KICB7CiAgICBEV19DQ19ub3JtYWwgPSAweDEsCiAgICBEV19DQ19wcm9ncmFtID0g
MHgyLAogICAgRFdfQ0Nfbm9jYWxsID0gMHgzCiAgfTsKCgoKCgplbnVtIGR3YXJmX2lubGluZV9h
dHRyaWJ1dGUKICB7CiAgICBEV19JTkxfbm90X2lubGluZWQgPSAwLAogICAgRFdfSU5MX2lubGlu
ZWQgPSAxLAogICAgRFdfSU5MX2RlY2xhcmVkX25vdF9pbmxpbmVkID0gMiwKICAgIERXX0lOTF9k
ZWNsYXJlZF9pbmxpbmVkID0gMwogIH07CgoKZW51bSBkd2FyZl9kaXNjcmltX2xpc3QKICB7CiAg
ICBEV19EU0NfbGFiZWwgPSAwLAogICAgRFdfRFNDX3JhbmdlID0gMQogIH07CgoKZW51bSBkd2Fy
Zl9saW5lX251bWJlcl9vcHMKICB7CiAgICBEV19MTlNfZXh0ZW5kZWRfb3AgPSAwLAogICAgRFdf
TE5TX2NvcHkgPSAxLAogICAgRFdfTE5TX2FkdmFuY2VfcGMgPSAyLAogICAgRFdfTE5TX2FkdmFu
Y2VfbGluZSA9IDMsCiAgICBEV19MTlNfc2V0X2ZpbGUgPSA0LAogICAgRFdfTE5TX3NldF9jb2x1
bW4gPSA1LAogICAgRFdfTE5TX25lZ2F0ZV9zdG10ID0gNiwKICAgIERXX0xOU19zZXRfYmFzaWNf
YmxvY2sgPSA3LAogICAgRFdfTE5TX2NvbnN0X2FkZF9wYyA9IDgsCiAgICBEV19MTlNfZml4ZWRf
YWR2YW5jZV9wYyA9IDksCgogICAgRFdfTE5TX3NldF9wcm9sb2d1ZV9lbmQgPSAxMCwKICAgIERX
X0xOU19zZXRfZXBpbG9ndWVfYmVnaW4gPSAxMSwKICAgIERXX0xOU19zZXRfaXNhID0gMTIKICB9
OwoKCmVudW0gZHdhcmZfbGluZV9udW1iZXJfeF9vcHMKICB7CiAgICBEV19MTkVfZW5kX3NlcXVl
bmNlID0gMSwKICAgIERXX0xORV9zZXRfYWRkcmVzcyA9IDIsCiAgICBEV19MTkVfZGVmaW5lX2Zp
bGUgPSAzCiAgfTsKCgplbnVtIGR3YXJmX2NhbGxfZnJhbWVfaW5mbwogIHsKICAgIERXX0NGQV9h
ZHZhbmNlX2xvYyA9IDB4NDAsCiAgICBEV19DRkFfb2Zmc2V0ID0gMHg4MCwKICAgIERXX0NGQV9y
ZXN0b3JlID0gMHhjMCwKICAgIERXX0NGQV9ub3AgPSAweDAwLAogICAgRFdfQ0ZBX3NldF9sb2Mg
PSAweDAxLAogICAgRFdfQ0ZBX2FkdmFuY2VfbG9jMSA9IDB4MDIsCiAgICBEV19DRkFfYWR2YW5j
ZV9sb2MyID0gMHgwMywKICAgIERXX0NGQV9hZHZhbmNlX2xvYzQgPSAweDA0LAogICAgRFdfQ0ZB
X29mZnNldF9leHRlbmRlZCA9IDB4MDUsCiAgICBEV19DRkFfcmVzdG9yZV9leHRlbmRlZCA9IDB4
MDYsCiAgICBEV19DRkFfdW5kZWZpbmVkID0gMHgwNywKICAgIERXX0NGQV9zYW1lX3ZhbHVlID0g
MHgwOCwKICAgIERXX0NGQV9yZWdpc3RlciA9IDB4MDksCiAgICBEV19DRkFfcmVtZW1iZXJfc3Rh
dGUgPSAweDBhLAogICAgRFdfQ0ZBX3Jlc3RvcmVfc3RhdGUgPSAweDBiLAogICAgRFdfQ0ZBX2Rl
Zl9jZmEgPSAweDBjLAogICAgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIgPSAweDBkLAogICAgRFdf
Q0ZBX2RlZl9jZmFfb2Zmc2V0ID0gMHgwZSwKCgogICAgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lv
biA9IDB4MGYsCiAgICBEV19DRkFfZXhwcmVzc2lvbiA9IDB4MTAsCiAgICBEV19DRkFfb2Zmc2V0
X2V4dGVuZGVkX3NmID0gMHgxMSwKICAgIERXX0NGQV9kZWZfY2ZhX3NmID0gMHgxMiwKICAgIERX
X0NGQV9kZWZfY2ZhX29mZnNldF9zZiA9IDB4MTMsCgoKICAgIERXX0NGQV9NSVBTX2FkdmFuY2Vf
bG9jOCA9IDB4MWQsCgoKICAgIERXX0NGQV9HTlVfd2luZG93X3NhdmUgPSAweDJkLAogICAgRFdf
Q0ZBX0dOVV9hcmdzX3NpemUgPSAweDJlLAogICAgRFdfQ0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRf
ZXh0ZW5kZWQgPSAweDJmCiAgfTsKIyA2NjkgIi4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIgplbnVt
IGR3YXJmX3NvdXJjZV9sYW5ndWFnZQogIHsKICAgIERXX0xBTkdfQzg5ID0gMHgwMDAxLAogICAg
RFdfTEFOR19DID0gMHgwMDAyLAogICAgRFdfTEFOR19BZGE4MyA9IDB4MDAwMywKICAgIERXX0xB
TkdfQ19wbHVzX3BsdXMgPSAweDAwMDQsCiAgICBEV19MQU5HX0NvYm9sNzQgPSAweDAwMDUsCiAg
ICBEV19MQU5HX0NvYm9sODUgPSAweDAwMDYsCiAgICBEV19MQU5HX0ZvcnRyYW43NyA9IDB4MDAw
NywKICAgIERXX0xBTkdfRm9ydHJhbjkwID0gMHgwMDA4LAogICAgRFdfTEFOR19QYXNjYWw4MyA9
IDB4MDAwOSwKICAgIERXX0xBTkdfTW9kdWxhMiA9IDB4MDAwYSwKICAgIERXX0xBTkdfSmF2YSA9
IDB4MDAwYiwKCiAgICBEV19MQU5HX0M5OSA9IDB4MDAwYywKICAgIERXX0xBTkdfQWRhOTUgPSAw
eDAwMGQsCiAgICBEV19MQU5HX0ZvcnRyYW45NSA9IDB4MDAwZSwKCiAgICBEV19MQU5HX01pcHNf
QXNzZW1ibGVyID0gMHg4MDAxLAoKICAgIERXX0xBTkdfVXBjID0gMHg4NzY1CiAgfTsKCgoKCgpl
bnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUKICB7CiAgICBEV19NQUNJTkZPX2RlZmluZSA9
IDEsCiAgICBEV19NQUNJTkZPX3VuZGVmID0gMiwKICAgIERXX01BQ0lORk9fc3RhcnRfZmlsZSA9
IDMsCiAgICBEV19NQUNJTkZPX2VuZF9maWxlID0gNCwKICAgIERXX01BQ0lORk9fdmVuZG9yX2V4
dCA9IDI1NQogIH07CiMgNDUgInJlYWRlbGYuYyIgMgoKCgoKCgoKIyAxICIuLi9pbmNsdWRlL2Vs
Zi9hbHBoYS5oIiAxCiMgNTEgIi4uL2luY2x1ZGUvZWxmL2FscGhhLmgiCnR5cGVkZWYgc3RydWN0
CnsKCiAgdW5zaWduZWQgbG9uZyByaV9ncHJtYXNrOwoKICB1bnNpZ25lZCBsb25nIHJpX2Nwcm1h
c2tbNF07CgogIGxvbmcgcmlfZ3BfdmFsdWU7Cn0gRWxmNjRfUmVnSW5mbzsKCgoKCgoKIyAxICIu
Li9pbmNsdWRlL2VsZi9yZWxvYy1tYWNyb3MuaCIgMQojIDY3ICIuLi9pbmNsdWRlL2VsZi9hbHBo
YS5oIiAyCgoKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfYWxwaGFfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FscGhhX3JlbG9jX3R5cGUg
KHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAg
OiByZXR1cm4gIlJfQUxQSEFfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9BTFBIQV9SRUZM
T05HIiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0FMUEhBX1JFRlFVQUQiIDsKICBjYXNlIDMgOiBy
ZXR1cm4gIlJfQUxQSEFfR1BSRUwzMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9BTFBIQV9MSVRF
UkFMIiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX0FMUEhBX0xJVFVTRSIgOwogIGNhc2UgNiA6IHJl
dHVybiAiUl9BTFBIQV9HUERJU1AiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfQUxQSEFfQlJBRERS
IiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX0FMUEhBX0hJTlQiIDsKICBjYXNlIDkgOiByZXR1cm4g
IlJfQUxQSEFfU1JFTDE2IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9BTFBIQV9TUkVMMzIiIDsK
ICBjYXNlIDExIDogcmV0dXJuICJSX0FMUEhBX1NSRUw2NCIgOwoKCgogIGNhc2UgMTcgOiByZXR1
cm4gIlJfQUxQSEFfR1BSRUxISUdIIiA7CiAgY2FzZSAxOCA6IHJldHVybiAiUl9BTFBIQV9HUFJF
TExPVyIgOwogIGNhc2UgMTkgOiByZXR1cm4gIlJfQUxQSEFfR1BSRUwxNiIgOwoKCgoKICBjYXNl
IDI0IDogcmV0dXJuICJSX0FMUEhBX0NPUFkiIDsKICBjYXNlIDI1IDogcmV0dXJuICJSX0FMUEhB
X0dMT0JfREFUIiA7CiAgY2FzZSAyNiA6IHJldHVybiAiUl9BTFBIQV9KTVBfU0xPVCIgOwogIGNh
c2UgMjcgOiByZXR1cm4gIlJfQUxQSEFfUkVMQVRJVkUiIDsKCgoKCiAgY2FzZSAyOCA6IHJldHVy
biAiUl9BTFBIQV9CUlNHUCIgOwoKCiAgY2FzZSAyOSA6IHJldHVybiAiUl9BTFBIQV9UTFNHRCIg
OwogIGNhc2UgMzAgOiByZXR1cm4gIlJfQUxQSEFfVExTTERNIiA7CiAgY2FzZSAzMSA6IHJldHVy
biAiUl9BTFBIQV9EVFBNT0Q2NCIgOwogIGNhc2UgMzIgOiByZXR1cm4gIlJfQUxQSEFfR09URFRQ
UkVMIiA7CiAgY2FzZSAzMyA6IHJldHVybiAiUl9BTFBIQV9EVFBSRUw2NCIgOwogIGNhc2UgMzQg
OiByZXR1cm4gIlJfQUxQSEFfRFRQUkVMSEkiIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX0FMUEhB
X0RUUFJFTExPIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9BTFBIQV9EVFBSRUwxNiIgOwogIGNh
c2UgMzcgOiByZXR1cm4gIlJfQUxQSEFfR09UVFBSRUwiIDsKICBjYXNlIDM4IDogcmV0dXJuICJS
X0FMUEhBX1RQUkVMNjQiIDsKICBjYXNlIDM5IDogcmV0dXJuICJSX0FMUEhBX1RQUkVMSEkiIDsK
ICBjYXNlIDQwIDogcmV0dXJuICJSX0FMUEhBX1RQUkVMTE8iIDsKICBjYXNlIDQxIDogcmV0dXJu
ICJSX0FMUEhBX1RQUkVMMTYiIDsKCmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NTMgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2FyYy5oIiAxCiMgMzAgIi4uL2lu
Y2x1ZGUvZWxmL2FyYy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9hcmNfcmVsb2NfdHlwZSAo
dW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FyY19yZWxvY190
eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2Fz
ZSAwIDogcmV0dXJuICJSX0FSQ19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0FSQ18zMiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9BUkNfQjI2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0FS
Q19CMjJfUENSRUwiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA1NCAicmVh
ZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvYXJtLmgiIDEKIyA3MyAiLi4vaW5jbHVkZS9l
bGYvYXJtLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FybV9yZWxvY190eXBlICh1bnNpZ25l
ZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfYXJtX3JlbG9jX3R5cGUgKHJ0
eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiBy
ZXR1cm4gIlJfQVJNX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfQVJNX1BDMjQiIDsKICBj
YXNlIDIgOiByZXR1cm4gIlJfQVJNX0FCUzMyIiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0FSTV9S
RUwzMiIgOwojIDkxICIuLi9pbmNsdWRlL2VsZi9hcm0uaCIKICBjYXNlIDQgOiByZXR1cm4gIlJf
QVJNX1BDMTMiIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfQVJNX0FCUzE2IiA7CiAgY2FzZSA2IDog
cmV0dXJuICJSX0FSTV9BQlMxMiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9BUk1fVEhNX0FCUzUi
IDsKICBjYXNlIDggOiByZXR1cm4gIlJfQVJNX0FCUzgiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJf
QVJNX1NCUkVMMzIiIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0FSTV9USE1fUEMyMiIgOwogIGNh
c2UgMTEgOiByZXR1cm4gIlJfQVJNX1RITV9QQzgiIDsKICBjYXNlIDEyIDogcmV0dXJuICJSX0FS
TV9BTVBfVkNBTEw5IiA7CiAgY2FzZSAxMyA6IHJldHVybiAiUl9BUk1fU1dJMjQiIDsKICBjYXNl
IDE0IDogcmV0dXJuICJSX0FSTV9USE1fU1dJOCIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfQVJN
X1hQQzI1IiA7CiAgY2FzZSAxNiA6IHJldHVybiAiUl9BUk1fVEhNX1hQQzIyIiA7CgogIGNhc2Ug
MjAgOiByZXR1cm4gIlJfQVJNX0NPUFkiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX0FSTV9HTE9C
X0RBVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJfQVJNX0pVTVBfU0xPVCIgOwogIGNhc2UgMjMg
OiByZXR1cm4gIlJfQVJNX1JFTEFUSVZFIiA7CiAgY2FzZSAyNCA6IHJldHVybiAiUl9BUk1fR09U
T0ZGIiA7CiAgY2FzZSAyNSA6IHJldHVybiAiUl9BUk1fR09UUEMiIDsKICBjYXNlIDI2IDogcmV0
dXJuICJSX0FSTV9HT1QzMiIgOwogIGNhc2UgMjcgOiByZXR1cm4gIlJfQVJNX1BMVDMyIiA7CgoK
CgogCiAKICBjYXNlIDMyIDogcmV0dXJuICJSX0FSTV9BTFVfUENSRUw3XzAiIDsKICBjYXNlIDMz
IDogcmV0dXJuICJSX0FSTV9BTFVfUENSRUwxNV84IiA7CiAgY2FzZSAzNCA6IHJldHVybiAiUl9B
Uk1fQUxVX1BDUkVMMjNfMTUiIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX0FSTV9MRFJfU0JSRUwx
MV8wIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9BUk1fQUxVX1NCUkVMMTlfMTIiIDsKICBjYXNl
IDM3IDogcmV0dXJuICJSX0FSTV9BTFVfU0JSRUwyN18yMCIgOwogCiAKICBjYXNlIDEwMCA6IHJl
dHVybiAiUl9BUk1fR05VX1ZURU5UUlkiIDsKICBjYXNlIDEwMSA6IHJldHVybiAiUl9BUk1fR05V
X1ZUSU5IRVJJVCIgOwogIGNhc2UgMTAyIDogcmV0dXJuICJSX0FSTV9USE1fUEMxMSIgOwogIGNh
c2UgMTAzIDogcmV0dXJuICJSX0FSTV9USE1fUEM5IiA7CiAKIAogIGNhc2UgMjQ5IDogcmV0dXJu
ICJSX0FSTV9SWFBDMjUiIDsKCiAgY2FzZSAyNTAgOiByZXR1cm4gIlJfQVJNX1JTQlJFTDMyIiA7
CiAgY2FzZSAyNTEgOiByZXR1cm4gIlJfQVJNX1RITV9SUEMyMiIgOwogIGNhc2UgMjUyIDogcmV0
dXJuICJSX0FSTV9SUkVMMzIiIDsKICBjYXNlIDI1MyA6IHJldHVybiAiUl9BUk1fUkFCUzMyIiA7
CiAgY2FzZSAyNTQgOiByZXR1cm4gIlJfQVJNX1JQQzI0IiA7CiAgY2FzZSAyNTUgOiByZXR1cm4g
IlJfQVJNX1JCQVNFIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNTUgInJl
YWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2F2ci5oIiAxCiMgMzYgIi4uL2luY2x1ZGUv
ZWxmL2F2ci5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9hdnJfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2F2cl9yZWxvY190eXBlIChy
dHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgICAgY2FzZSAw
IDogcmV0dXJuICJSX0FWUl9OT05FIiA7CiAgICAgY2FzZSAxIDogcmV0dXJuICJSX0FWUl8zMiIg
OwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9BVlJfN19QQ1JFTCIgOwogICAgIGNhc2UgMyA6IHJl
dHVybiAiUl9BVlJfMTNfUENSRUwiIDsKICAgICBjYXNlIDQgOiByZXR1cm4gIlJfQVZSXzE2IiA7
CiAgICAgY2FzZSA1IDogcmV0dXJuICJSX0FWUl8xNl9QTSIgOwogICAgIGNhc2UgNiA6IHJldHVy
biAiUl9BVlJfTE84X0xESSIgOwogICAgIGNhc2UgNyA6IHJldHVybiAiUl9BVlJfSEk4X0xESSIg
OwogICAgIGNhc2UgOCA6IHJldHVybiAiUl9BVlJfSEg4X0xESSIgOwogICAgIGNhc2UgOSA6IHJl
dHVybiAiUl9BVlJfTE84X0xESV9ORUciIDsKICAgICBjYXNlIDEwIDogcmV0dXJuICJSX0FWUl9I
SThfTERJX05FRyIgOwogICAgIGNhc2UgMTEgOiByZXR1cm4gIlJfQVZSX0hIOF9MRElfTkVHIiA7
CiAgICAgY2FzZSAxMiA6IHJldHVybiAiUl9BVlJfTE84X0xESV9QTSIgOwogICAgIGNhc2UgMTMg
OiByZXR1cm4gIlJfQVZSX0hJOF9MRElfUE0iIDsKICAgICBjYXNlIDE0IDogcmV0dXJuICJSX0FW
Ul9ISDhfTERJX1BNIiA7CiAgICAgY2FzZSAxNSA6IHJldHVybiAiUl9BVlJfTE84X0xESV9QTV9O
RUciIDsKICAgICBjYXNlIDE2IDogcmV0dXJuICJSX0FWUl9ISThfTERJX1BNX05FRyIgOwogICAg
IGNhc2UgMTcgOiByZXR1cm4gIlJfQVZSX0hIOF9MRElfUE1fTkVHIiA7CiAgICAgY2FzZSAxOCA6
IHJldHVybiAiUl9BVlJfQ0FMTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQoj
IDU2ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9jcmlzLmgiIDEKIyAyOCAiLi4v
aW5jbHVkZS9lbGYvY3Jpcy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9jcmlzX3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9jcmlzX3Jl
bG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsK
ICBjYXNlIDAgOiByZXR1cm4gIlJfQ1JJU19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0NS
SVNfOCIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9DUklTXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJu
ICJSX0NSSVNfMzIiIDsKCgogIGNhc2UgNCA6IHJldHVybiAiUl9DUklTXzhfUENSRUwiIDsKICBj
YXNlIDUgOiByZXR1cm4gIlJfQ1JJU18xNl9QQ1JFTCIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9D
UklTXzMyX1BDUkVMIiA7CgogIGNhc2UgNyA6IHJldHVybiAiUl9DUklTX0dOVV9WVElOSEVSSVQi
IDsKICBjYXNlIDggOiByZXR1cm4gIlJfQ1JJU19HTlVfVlRFTlRSWSIgOwoKCgogIGNhc2UgOSA6
IHJldHVybiAiUl9DUklTX0NPUFkiIDsKCgoKICBjYXNlIDEwIDogcmV0dXJuICJSX0NSSVNfR0xP
Ql9EQVQiIDsKCgoKICBjYXNlIDExIDogcmV0dXJuICJSX0NSSVNfSlVNUF9TTE9UIiA7CgoKCiAg
Y2FzZSAxMiA6IHJldHVybiAiUl9DUklTX1JFTEFUSVZFIiA7CgoKCgogIGNhc2UgMTMgOiByZXR1
cm4gIlJfQ1JJU18xNl9HT1QiIDsKCgoKCiAgY2FzZSAxNCA6IHJldHVybiAiUl9DUklTXzMyX0dP
VCIgOwoKCgoKICBjYXNlIDE1IDogcmV0dXJuICJSX0NSSVNfMTZfR09UUExUIiA7CgoKCgogIGNh
c2UgMTYgOiByZXR1cm4gIlJfQ1JJU18zMl9HT1RQTFQiIDsKCgoKCiAgY2FzZSAxNyA6IHJldHVy
biAiUl9DUklTXzMyX0dPVFJFTCIgOwoKCgoKICBjYXNlIDE4IDogcmV0dXJuICJSX0NSSVNfMzJf
UExUX0dPVFJFTCIgOwoKCgoKCiAgY2FzZSAxOSA6IHJldHVybiAiUl9DUklTXzMyX1BMVF9QQ1JF
TCIgOwoKCgpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDU3ICJyZWFkZWxmLmMi
IDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kMTB2LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYvZDEw
di5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMTB2X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxv
bmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMTB2X3JlbG9jX3R5cGUgKHJ0eXBl
KSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1
cm4gIlJfRDEwVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0QxMFZfMTBfUENSRUxfUiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9EMTBWXzEwX1BDUkVMX0wiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfRDEwVl8xNiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9EMTBWXzE4IiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX0QxMFZfMThfUENSRUwiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfRDEwVl8z
MiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9EMTBWX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDgg
OiByZXR1cm4gIlJfRDEwVl9HTlVfVlRFTlRSWSIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICop
MCk7IH0gfQojIDU4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kMzB2LmgiIDEK
IyAyNiAiLi4vaW5jbHVkZS9lbGYvZDMwdi5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMzB2
X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9kMzB2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfRDMwVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0
dXJuICJSX0QzMFZfNiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9EMzBWXzlfUENSRUwiIDsKICBj
YXNlIDMgOiByZXR1cm4gIlJfRDMwVl85X1BDUkVMX1IiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJf
RDMwVl8xNSIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9EMzBWXzE1X1BDUkVMIiA7CiAgY2FzZSA2
IDogcmV0dXJuICJSX0QzMFZfMTVfUENSRUxfUiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9EMzBW
XzIxIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX0QzMFZfMjFfUENSRUwiIDsKICBjYXNlIDkgOiBy
ZXR1cm4gIlJfRDMwVl8yMV9QQ1JFTF9SIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9EMzBWXzMy
IiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl9EMzBWXzMyX1BDUkVMIiA7CiAgY2FzZSAxMiA6IHJl
dHVybiAiUl9EMzBWXzMyX05PUk1BTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0g
fQojIDU5ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kbHguaCIgMQojIDM5ICIu
Li9pbmNsdWRlL2VsZi9kbHguaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZGx4X3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kbHhfcmVs
b2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewog
ICAgIGNhc2UgMCA6IHJldHVybiAiUl9ETFhfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAi
Ul9ETFhfUkVMT0NfOCIgOwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9ETFhfUkVMT0NfMTYiIDsK
ICAgICBjYXNlIDMgOiByZXR1cm4gIlJfRExYX1JFTE9DXzMyIiA7CiAgICAgY2FzZSA0IDogcmV0
dXJuICJSX0RMWF9HTlVfVlRJTkhFUklUIiA7CiAgICAgY2FzZSA1IDogcmV0dXJuICJSX0RMWF9H
TlVfVlRFTlRSWSIgOwogICAgIGNhc2UgNiA6IHJldHVybiAiUl9ETFhfUkVMT0NfMTZfSEkiIDsK
ICAgICBjYXNlIDcgOiByZXR1cm4gIlJfRExYX1JFTE9DXzE2X0xPIiA7CiAgICAgY2FzZSA4IDog
cmV0dXJuICJSX0RMWF9SRUxPQ18xNl9QQ1JFTCIgOwogICAgIGNhc2UgOSA6IHJldHVybiAiUl9E
TFhfUkVMT0NfMjZfUENSRUwiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2
MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvZnIzMC5oIiAxCiMgMjYgIi4uL2lu
Y2x1ZGUvZWxmL2ZyMzAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZnIzMF9yZWxvY190eXBl
ICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZnIzMF9yZWxv
Y190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAg
Y2FzZSAwIDogcmV0dXJuICJSX0ZSMzBfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9GUjMw
XzgiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfRlIzMF8yMCIgOwogIGNhc2UgMyA6IHJldHVybiAi
Ul9GUjMwXzMyIiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0ZSMzBfNDgiIDsKICBjYXNlIDUgOiBy
ZXR1cm4gIlJfRlIzMF82X0lOXzQiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfRlIzMF84X0lOXzgi
IDsKICBjYXNlIDcgOiByZXR1cm4gIlJfRlIzMF85X0lOXzgiIDsKICBjYXNlIDggOiByZXR1cm4g
IlJfRlIzMF8xMF9JTl84IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX0ZSMzBfOV9QQ1JFTCIgOwog
IGNhc2UgMTAgOiByZXR1cm4gIlJfRlIzMF8xMl9QQ1JFTCIgOwogIGNhc2UgMTEgOiByZXR1cm4g
IlJfRlIzMF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9GUjMwX0dOVV9W
VEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNjEgInJlYWRlbGYu
YyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2Zydi5oIiAxCiMgMjYgIi4uL2luY2x1ZGUvZWxmL2Zy
di5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9mcnZfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2Zydl9yZWxvY190eXBlIChydHlwZSkg
dW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJu
ICJSX0ZSVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0ZSVl8zMiIgOwogIGNhc2UgMiA6
IHJldHVybiAiUl9GUlZfTEFCRUwxNiIgOwogIGNhc2UgMyA6IHJldHVybiAiUl9GUlZfTEFCRUwy
NCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9GUlZfTE8xNiIgOwogIGNhc2UgNSA6IHJldHVybiAi
Ul9GUlZfSEkxNiIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9GUlZfR1BSRUwxMiIgOwogIGNhc2Ug
NyA6IHJldHVybiAiUl9GUlZfR1BSRUxVMTIiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfRlJWX0dQ
UkVMMzIiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfRlJWX0dQUkVMSEkiIDsKICBjYXNlIDEwIDog
cmV0dXJuICJSX0ZSVl9HUFJFTExPIiA7CiAgY2FzZSAyMDAgOiByZXR1cm4gIlJfRlJWX0dOVV9W
VElOSEVSSVQiIDsKICBjYXNlIDIwMSA6IHJldHVybiAiUl9GUlZfR05VX1ZURU5UUlkiIDsKZGVm
YXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2MiAicmVhZGVsZi5jIiAyCiMgMSAiLi4v
aW5jbHVkZS9lbGYvaDguaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi9oOC5oIgpzdGF0aWMgY29u
c3QgY2hhciAqIGVsZl9oOF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfaDhfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5
cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVybiAiUl9IOF9OT05FIiA7CiAg
Y2FzZSAxIDogcmV0dXJuICJSX0g4X0RJUjMyIiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0g4X0RJ
UjMyXzI4IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0g4X0RJUjMyXzI0IiA7CiAgY2FzZSA0IDog
cmV0dXJuICJSX0g4X0RJUjMyXzE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX0g4X0RJUjMyVSIg
OwogIGNhc2UgNyA6IHJldHVybiAiUl9IOF9ESVIzMlVfMjgiIDsKICBjYXNlIDggOiByZXR1cm4g
IlJfSDhfRElSMzJVXzI0IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX0g4X0RJUjMyVV8yMCIgOwog
IGNhc2UgMTAgOiByZXR1cm4gIlJfSDhfRElSMzJVXzE2IiA7CiAgY2FzZSAxMSA6IHJldHVybiAi
Ul9IOF9ESVIyNCIgOwogIGNhc2UgMTIgOiByZXR1cm4gIlJfSDhfRElSMjRfMjAiIDsKICBjYXNl
IDEzIDogcmV0dXJuICJSX0g4X0RJUjI0XzE2IiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9IOF9E
SVIyNFUiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX0g4X0RJUjI0VV8yMCIgOwogIGNhc2UgMTYg
OiByZXR1cm4gIlJfSDhfRElSMjRVXzE2IiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9IOF9ESVIx
NiIgOwogIGNhc2UgMTggOiByZXR1cm4gIlJfSDhfRElSMTZVIiA7CiAgY2FzZSAxOSA6IHJldHVy
biAiUl9IOF9ESVIxNlNfMzIiIDsKICBjYXNlIDIwIDogcmV0dXJuICJSX0g4X0RJUjE2U18yOCIg
OwogIGNhc2UgMjEgOiByZXR1cm4gIlJfSDhfRElSMTZTXzI0IiA7CiAgY2FzZSAyMiA6IHJldHVy
biAiUl9IOF9ESVIxNlNfMjAiIDsKICBjYXNlIDIzIDogcmV0dXJuICJSX0g4X0RJUjE2UyIgOwog
IGNhc2UgMjQgOiByZXR1cm4gIlJfSDhfRElSOCIgOwogIGNhc2UgMjUgOiByZXR1cm4gIlJfSDhf
RElSOFUiIDsKICBjYXNlIDI2IDogcmV0dXJuICJSX0g4X0RJUjhaXzMyIiA7CiAgY2FzZSAyNyA6
IHJldHVybiAiUl9IOF9ESVI4Wl8yOCIgOwogIGNhc2UgMjggOiByZXR1cm4gIlJfSDhfRElSOFpf
MjQiIDsKICBjYXNlIDI5IDogcmV0dXJuICJSX0g4X0RJUjhaXzIwIiA7CiAgY2FzZSAzMCA6IHJl
dHVybiAiUl9IOF9ESVI4Wl8xNiIgOwogIGNhc2UgMzEgOiByZXR1cm4gIlJfSDhfUENSRUwxNiIg
OwogIGNhc2UgMzIgOiByZXR1cm4gIlJfSDhfUENSRUw4IiA7CiAgY2FzZSAzMyA6IHJldHVybiAi
Ul9IOF9CUE9TIiA7CiAKIAogIGNhc2UgNTkgOiByZXR1cm4gIlJfSDhfRElSMTZBOCIgOwogIGNh
c2UgNjAgOiByZXR1cm4gIlJfSDhfRElSMTZSOCIgOwogIGNhc2UgNjEgOiByZXR1cm4gIlJfSDhf
RElSMjRBOCIgOwogIGNhc2UgNjIgOiByZXR1cm4gIlJfSDhfRElSMjRSOCIgOwogIGNhc2UgNjMg
OiByZXR1cm4gIlJfSDhfRElSMzJBMTYiIDsKICBjYXNlIDY1IDogcmV0dXJuICJSX0g4X0FCUzMy
IiA7CiAgY2FzZSAxMjcgOiByZXR1cm4gIlJfSDhfQUJTMzJBMTYiIDsKICBjYXNlIDEyOCA6IHJl
dHVybiAiUl9IOF9TWU0iIDsKICBjYXNlIDEyOSA6IHJldHVybiAiUl9IOF9PUG5lZyIgOwogIGNh
c2UgMTMwIDogcmV0dXJuICJSX0g4X09QYWRkIiA7CiAgY2FzZSAxMzEgOiByZXR1cm4gIlJfSDhf
T1BzdWIiIDsKICBjYXNlIDEzMiA6IHJldHVybiAiUl9IOF9PUG11bCIgOwogIGNhc2UgMTMzIDog
cmV0dXJuICJSX0g4X09QZGl2IiA7CiAgY2FzZSAxMzQgOiByZXR1cm4gIlJfSDhfT1BzaGxhIiA7
CiAgY2FzZSAxMzUgOiByZXR1cm4gIlJfSDhfT1BzaHJhIiA7CiAgY2FzZSAxMzYgOiByZXR1cm4g
IlJfSDhfT1BzY3RzaXplIiA7CiAgY2FzZSAxMzcgOiByZXR1cm4gIlJfSDhfT1Bod29yZCIgOwog
IGNhc2UgMTM4IDogcmV0dXJuICJSX0g4X09QbHdvcmQiIDsKICBjYXNlIDEzOSA6IHJldHVybiAi
Ul9IOF9PUGhpZ2giIDsKICBjYXNlIDE0MCA6IHJldHVybiAiUl9IOF9PUGxvdyIgOwogIGNhc2Ug
MTQxIDogcmV0dXJuICJSX0g4X09Qc2N0dG9wIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikw
KTsgfSB9CiMgNjMgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2hwcGEuaCIgMQoj
IDEwNSAiLi4vaW5jbHVkZS9lbGYvaHBwYS5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9ocHBh
X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9ocHBhX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKY2FzZSAwIDogcmV0dXJuICJSX1BBUklTQ19OT05FIiA7CgoKCmNhc2UgMSA6IHJl
dHVybiAiUl9QQVJJU0NfRElSMzIiIDsKCgpjYXNlIDIgOiByZXR1cm4gIlJfUEFSSVNDX0RJUjIx
TCIgOwoKCmNhc2UgMyA6IHJldHVybiAiUl9QQVJJU0NfRElSMTdSIiA7CgoKY2FzZSA0IDogcmV0
dXJuICJSX1BBUklTQ19ESVIxN0YiIDsKCgpjYXNlIDYgOiByZXR1cm4gIlJfUEFSSVNDX0RJUjE0
UiIgOwoKCmNhc2UgNyA6IHJldHVybiAiUl9QQVJJU0NfRElSMTRGIiA7CiMgMTQyICIuLi9pbmNs
dWRlL2VsZi9ocHBhLmgiCmNhc2UgOCA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxMkYiIDsKCgpj
YXNlIDkgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMzIiIDsKCgpjYXNlIDEwIDogcmV0dXJuICJS
X1BBUklTQ19QQ1JFTDIxTCIgOwoKCmNhc2UgMTEgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMTdS
IiA7CgoKY2FzZSAxMiA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxN0YiIDsKCgpjYXNlIDEzIDog
cmV0dXJuICJSX1BBUklTQ19QQ1JFTDE3QyIgOwoKCmNhc2UgMTQgOiByZXR1cm4gIlJfUEFSSVND
X1BDUkVMMTRSIiA7CgoKY2FzZSAxNSA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxNEYiIDsKCgoK
CmNhc2UgMTggOiByZXR1cm4gIlJfUEFSSVNDX0RQUkVMMjFMIiA7CgoKY2FzZSAxOSA6IHJldHVy
biAiUl9QQVJJU0NfRFBSRUwxNFdSIiA7CgoKY2FzZSAyMCA6IHJldHVybiAiUl9QQVJJU0NfRFBS
RUwxNERSIiA7CgoKY2FzZSAyMiA6IHJldHVybiAiUl9QQVJJU0NfRFBSRUwxNFIiIDsKCgpjYXNl
IDIzIDogcmV0dXJuICJSX1BBUklTQ19EUFJFTDE0RiIgOwojIDE5MCAiLi4vaW5jbHVkZS9lbGYv
aHBwYS5oIgpjYXNlIDI2IDogcmV0dXJuICJSX1BBUklTQ19ETFRSRUwyMUwiIDsKCgpjYXNlIDMw
IDogcmV0dXJuICJSX1BBUklTQ19ETFRSRUwxNFIiIDsKCgpjYXNlIDMxIDogcmV0dXJuICJSX1BB
UklTQ19ETFRSRUwxNEYiIDsKCgoKCmNhc2UgMzQgOiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDIx
TCIgOwoKCmNhc2UgMzggOiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDE0UiIgOwoKCmNhc2UgMzkg
OiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDE0RiIgOwoKCgoKY2FzZSA0MCA6IHJldHVybiAiUl9Q
QVJJU0NfU0VUQkFTRSIgOwoKCmNhc2UgNDEgOiByZXR1cm4gIlJfUEFSSVNDX1NFQ1JFTDMyIiA7
CgoKY2FzZSA0MiA6IHJldHVybiAiUl9QQVJJU0NfQkFTRVJFTDIxTCIgOwoKCmNhc2UgNDMgOiBy
ZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxN1IiIDsKCgpjYXNlIDQ0IDogcmV0dXJuICJSX1BBUklT
Q19CQVNFUkVMMTdGIiA7CgoKY2FzZSA0NiA6IHJldHVybiAiUl9QQVJJU0NfQkFTRVJFTDE0UiIg
OwoKCmNhc2UgNDcgOiByZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxNEYiIDsKCgoKCmNhc2UgNDgg
OiByZXR1cm4gIlJfUEFSSVNDX1NFR0JBU0UiIDsKCgpjYXNlIDQ5IDogcmV0dXJuICJSX1BBUklT
Q19TRUdSRUwzMiIgOwoKCgoKY2FzZSA1MCA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMjFMIiA7
CgoKY2FzZSA1NCA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTRSIiA7CgoKY2FzZSA1NSA6IHJl
dHVybiAiUl9QQVJJU0NfUExUT0ZGMTRGIiA7CgoKCmNhc2UgNTcgOiByZXR1cm4gIlJfUEFSSVND
X0xUT0ZGX0ZQVFIzMiIgOwoKCmNhc2UgNTggOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIy
MUwiIDsKCgpjYXNlIDYyIDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9GUFRSMTRSIiA7CgoKCmNh
c2UgNjQgOiByZXR1cm4gIlJfUEFSSVNDX0ZQVFI2NCIgOwoKCgoKY2FzZSA2NSA6IHJldHVybiAi
Ul9QQVJJU0NfUExBQkVMMzIiIDsKCgpjYXNlIDY2IDogcmV0dXJuICJSX1BBUklTQ19QTEFCRUwy
MUwiIDsKCgpjYXNlIDcwIDogcmV0dXJuICJSX1BBUklTQ19QTEFCRUwxNFIiIDsKCgoKCmNhc2Ug
NzIgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMNjQiIDsKCgpjYXNlIDczIDogcmV0dXJuICJSX1BB
UklTQ19QQ1JFTDIyQyIgOwoKCmNhc2UgNzQgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMjJGIiA7
CgoKY2FzZSA3NSA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxNFdSIiA7CgoKY2FzZSA3NiA6IHJl
dHVybiAiUl9QQVJJU0NfUENSRUwxNERSIiA7CgoKY2FzZSA3NyA6IHJldHVybiAiUl9QQVJJU0Nf
UENSRUwxNkYiIDsKCgpjYXNlIDc4IDogcmV0dXJuICJSX1BBUklTQ19QQ1JFTDE2V0YiIDsKCgpj
YXNlIDc5IDogcmV0dXJuICJSX1BBUklTQ19QQ1JFTDE2REYiIDsKCgoKY2FzZSA4MCA6IHJldHVy
biAiUl9QQVJJU0NfRElSNjQiIDsKCgpjYXNlIDgxIDogcmV0dXJuICJSX1BBUklTQ19ESVI2NFdS
IiA7CgoKY2FzZSA4MiA6IHJldHVybiAiUl9QQVJJU0NfRElSNjREUiIgOwoKCmNhc2UgODMgOiBy
ZXR1cm4gIlJfUEFSSVNDX0RJUjE0V1IiIDsKCgpjYXNlIDg0IDogcmV0dXJuICJSX1BBUklTQ19E
SVIxNERSIiA7CgoKY2FzZSA4NSA6IHJldHVybiAiUl9QQVJJU0NfRElSMTZGIiA7CgoKY2FzZSA4
NiA6IHJldHVybiAiUl9QQVJJU0NfRElSMTZXRiIgOwoKCmNhc2UgODcgOiByZXR1cm4gIlJfUEFS
SVNDX0RJUjE2REYiIDsKCgpjYXNlIDg4IDogcmV0dXJuICJSX1BBUklTQ19HUFJFTDY0IiA7CgoK
Y2FzZSA5MSA6IHJldHVybiAiUl9QQVJJU0NfRExUUkVMMTRXUiIgOwoKCmNhc2UgOTIgOiByZXR1
cm4gIlJfUEFSSVNDX0RMVFJFTDE0RFIiIDsKCgpjYXNlIDkzIDogcmV0dXJuICJSX1BBUklTQ19H
UFJFTDE2RiIgOwoKCmNhc2UgOTQgOiByZXR1cm4gIlJfUEFSSVNDX0dQUkVMMTZXRiIgOwoKCmNh
c2UgOTUgOiByZXR1cm4gIlJfUEFSSVNDX0dQUkVMMTZERiIgOwoKCgpjYXNlIDk2IDogcmV0dXJu
ICJSX1BBUklTQ19MVE9GRjY0IiA7CgoKY2FzZSA5OSA6IHJldHVybiAiUl9QQVJJU0NfRExUSU5E
MTRXUiIgOwoKCmNhc2UgMTAwIDogcmV0dXJuICJSX1BBUklTQ19ETFRJTkQxNERSIiA7CgoKY2Fz
ZSAxMDEgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGMTZGIiA7CgoKY2FzZSAxMDIgOiByZXR1cm4g
IlJfUEFSSVNDX0xUT0ZGMTZXRiIgOwoKCmNhc2UgMTAzIDogcmV0dXJuICJSX1BBUklTQ19MVE9G
RjE2REYiIDsKCgoKY2FzZSAxMDQgOiByZXR1cm4gIlJfUEFSSVNDX1NFQ1JFTDY0IiA7CgoKY2Fz
ZSAxMDcgOiByZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxNFdSIiA7CgoKY2FzZSAxMDggOiByZXR1
cm4gIlJfUEFSSVNDX0JBU0VSRUwxNERSIiA7CgoKCmNhc2UgMTEyIDogcmV0dXJuICJSX1BBUklT
Q19TRUdSRUw2NCIgOwoKCmNhc2UgMTE1IDogcmV0dXJuICJSX1BBUklTQ19QTFRPRkYxNFdSIiA7
CgoKY2FzZSAxMTYgOiByZXR1cm4gIlJfUEFSSVNDX1BMVE9GRjE0RFIiIDsKCgpjYXNlIDExNyA6
IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTZGIiA7CgoKY2FzZSAxMTggOiByZXR1cm4gIlJfUEFS
SVNDX1BMVE9GRjE2V0YiIDsKCgpjYXNlIDExOSA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTZE
RiIgOwoKCgpjYXNlIDEyMCA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfRlBUUjY0IiA7CgoKY2Fz
ZSAxMjMgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIxNFdSIiA7CgoKY2FzZSAxMjQgOiBy
ZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIxNERSIiA7CgoKY2FzZSAxMjUgOiByZXR1cm4gIlJf
UEFSSVNDX0xUT0ZGX0ZQVFIxNkYiIDsKCgpjYXNlIDEyNiA6IHJldHVybiAiUl9QQVJJU0NfTFRP
RkZfRlBUUjE2V0YiIDsKCgpjYXNlIDEyNyA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfRlBUUjE2
REYiIDsKCgoKY2FzZSAxMjggOiByZXR1cm4gIlJfUEFSSVNDX0NPUFkiIDsKCgpjYXNlIDEyOSA6
IHJldHVybiAiUl9QQVJJU0NfSVBMVCIgOwoKCmNhc2UgMTMwIDogcmV0dXJuICJSX1BBUklTQ19F
UExUIiA7CgoKCmNhc2UgMTUzIDogcmV0dXJuICJSX1BBUklTQ19UUFJFTDMyIiA7CgoKY2FzZSAx
NTQgOiByZXR1cm4gIlJfUEFSSVNDX1RQUkVMMjFMIiA7CgoKY2FzZSAxNTggOiByZXR1cm4gIlJf
UEFSSVNDX1RQUkVMMTRSIiA7CgoKCmNhc2UgMTYyIDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9U
UDIxTCIgOwoKCmNhc2UgMTY2IDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9UUDE0UiIgOwoKCmNh
c2UgMTY3IDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9UUDE0RiIgOwoKCgpjYXNlIDIxNiA6IHJl
dHVybiAiUl9QQVJJU0NfVFBSRUw2NCIgOwoKCmNhc2UgMjE5IDogcmV0dXJuICJSX1BBUklTQ19U
UFJFTDE0V1IiIDsKCgpjYXNlIDIyMCA6IHJldHVybiAiUl9QQVJJU0NfVFBSRUwxNERSIiA7CgoK
Y2FzZSAyMjEgOiByZXR1cm4gIlJfUEFSSVNDX1RQUkVMMTZGIiA7CgoKY2FzZSAyMjIgOiByZXR1
cm4gIlJfUEFSSVNDX1RQUkVMMTZXRiIgOwoKCmNhc2UgMjIzIDogcmV0dXJuICJSX1BBUklTQ19U
UFJFTDE2REYiIDsKCgoKY2FzZSAyMjQgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX1RQNjQiIDsK
CgpjYXNlIDIyNyA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfVFAxNFdSIiA7CgoKY2FzZSAyMjgg
OiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX1RQMTREUiIgOwoKCmNhc2UgMjI5IDogcmV0dXJuICJS
X1BBUklTQ19MVE9GRl9UUDE2RiIgOwoKCmNhc2UgMjMwIDogcmV0dXJuICJSX1BBUklTQ19MVE9G
Rl9UUDE2V0YiIDsKCgpjYXNlIDIzMSA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfVFAxNkRGIiA7
CgoKY2FzZSAyMzIgOiByZXR1cm4gIlJfUEFSSVNDX0dOVV9WVEVOVFJZIiA7CmNhc2UgMjMzIDog
cmV0dXJuICJSX1BBUklTQ19HTlVfVlRJTkhFUklUIiA7CgpkZWZhdWx0OiByZXR1cm4gKCh2b2lk
ICopMCk7IH0gfQojIDY0ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9pMzg2Lmgi
IDEKIyAyNSAiLi4vaW5jbHVkZS9lbGYvaTM4Ni5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9p
Mzg2X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAq
IGVsZl9pMzg2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRj
aCAocnR5cGUpIHsKICAgICBjYXNlIDAgOiByZXR1cm4gIlJfMzg2X05PTkUiIDsKICAgICBjYXNl
IDEgOiByZXR1cm4gIlJfMzg2XzMyIiA7CiAgICAgY2FzZSAyIDogcmV0dXJuICJSXzM4Nl9QQzMy
IiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSXzM4Nl9HT1QzMiIgOwogICAgIGNhc2UgNCA6IHJl
dHVybiAiUl8zODZfUExUMzIiIDsKICAgICBjYXNlIDUgOiByZXR1cm4gIlJfMzg2X0NPUFkiIDsK
ICAgICBjYXNlIDYgOiByZXR1cm4gIlJfMzg2X0dMT0JfREFUIiA7CiAgICAgY2FzZSA3IDogcmV0
dXJuICJSXzM4Nl9KVU1QX1NMT1QiIDsKICAgICBjYXNlIDggOiByZXR1cm4gIlJfMzg2X1JFTEFU
SVZFIiA7CiAgICAgY2FzZSA5IDogcmV0dXJuICJSXzM4Nl9HT1RPRkYiIDsKICAgICBjYXNlIDEw
IDogcmV0dXJuICJSXzM4Nl9HT1RQQyIgOwogICAgIGNhc2UgMTEgOiByZXR1cm4gIlJfMzg2XzMy
UExUIiA7CiAgICAKICAgIAogICAgIGNhc2UgMTQgOiByZXR1cm4gIlJfMzg2X1RMU19UUE9GRiIg
OwogICAgIGNhc2UgMTUgOiByZXR1cm4gIlJfMzg2X1RMU19JRSIgOwogICAgIGNhc2UgMTYgOiBy
ZXR1cm4gIlJfMzg2X1RMU19HT1RJRSIgOwogICAgIGNhc2UgMTcgOiByZXR1cm4gIlJfMzg2X1RM
U19MRSIgOwogICAgIGNhc2UgMTggOiByZXR1cm4gIlJfMzg2X1RMU19HRCIgOwogICAgIGNhc2Ug
MTkgOiByZXR1cm4gIlJfMzg2X1RMU19MRE0iIDsKICAgICBjYXNlIDIwIDogcmV0dXJuICJSXzM4
Nl8xNiIgOwogICAgIGNhc2UgMjEgOiByZXR1cm4gIlJfMzg2X1BDMTYiIDsKICAgICBjYXNlIDIy
IDogcmV0dXJuICJSXzM4Nl84IiA7CiAgICAgY2FzZSAyMyA6IHJldHVybiAiUl8zODZfUEM4IiA7
CiAgICAgY2FzZSAyNCA6IHJldHVybiAiUl8zODZfVExTX0dEXzMyIiA7CiAgICAgY2FzZSAyNSA6
IHJldHVybiAiUl8zODZfVExTX0dEX1BVU0giIDsKICAgICBjYXNlIDI2IDogcmV0dXJuICJSXzM4
Nl9UTFNfR0RfQ0FMTCIgOwogICAgIGNhc2UgMjcgOiByZXR1cm4gIlJfMzg2X1RMU19HRF9QT1Ai
IDsKICAgICBjYXNlIDI4IDogcmV0dXJuICJSXzM4Nl9UTFNfTERNXzMyIiA7CiAgICAgY2FzZSAy
OSA6IHJldHVybiAiUl8zODZfVExTX0xETV9QVVNIIiA7CiAgICAgY2FzZSAzMCA6IHJldHVybiAi
Ul8zODZfVExTX0xETV9DQUxMIiA7CiAgICAgY2FzZSAzMSA6IHJldHVybiAiUl8zODZfVExTX0xE
TV9QT1AiIDsKICAgICBjYXNlIDMyIDogcmV0dXJuICJSXzM4Nl9UTFNfTERPXzMyIiA7CiAgICAg
Y2FzZSAzMyA6IHJldHVybiAiUl8zODZfVExTX0lFXzMyIiA7CiAgICAgY2FzZSAzNCA6IHJldHVy
biAiUl8zODZfVExTX0xFXzMyIiA7CiAgICAgY2FzZSAzNSA6IHJldHVybiAiUl8zODZfVExTX0RU
UE1PRDMyIiA7CiAgICAgY2FzZSAzNiA6IHJldHVybiAiUl8zODZfVExTX0RUUE9GRjMyIiA7CiAg
ICAgY2FzZSAzNyA6IHJldHVybiAiUl8zODZfVExTX1RQT0ZGMzIiIDsKCgogICAgIGNhc2UgMjUw
IDogcmV0dXJuICJSXzM4Nl9HTlVfVlRJTkhFUklUIiA7CiAgICAgY2FzZSAyNTEgOiByZXR1cm4g
IlJfMzg2X0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NjUgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2kzNzAuaCIgMQojIDUzICIuLi9p
bmNsdWRlL2VsZi9pMzcwLmgiCnN0YXRpYyBjb25zdCBjaGFyICogaTM3MF9yZWxvY190eXBlICh1
bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBpMzcwX3JlbG9jX3R5cGUg
KHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAg
OiByZXR1cm4gIlJfSTM3MF9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0kzNzBfQUREUjMx
IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0kzNzBfQUREUjMyIiA7CiAgY2FzZSAzIDogcmV0dXJu
ICJSX0kzNzBfQUREUjE2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0kzNzBfUkVMMzEiIDsKICBj
YXNlIDUgOiByZXR1cm4gIlJfSTM3MF9SRUwzMiIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9JMzcw
X0FERFIxMiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9JMzcwX1JFTDEyIiA7CiAgY2FzZSA4IDog
cmV0dXJuICJSX0kzNzBfQUREUjgiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfSTM3MF9SRUw4IiA7
CiAgY2FzZSAxMCA6IHJldHVybiAiUl9JMzcwX0NPUFkiIDsKICBjYXNlIDExIDogcmV0dXJuICJS
X0kzNzBfUkVMQVRJVkUiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2NiAi
cmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaTg2MC5oIiAxCiMgMjkgIi4uL2luY2x1
ZGUvZWxmL2k4NjAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaTg2MF9yZWxvY190eXBlICh1
bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaTg2MF9yZWxvY190
eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgICAg
Y2FzZSAweDAwIDogcmV0dXJuICJSXzg2MF9OT05FIiA7CiAgICAgY2FzZSAweDAxIDogcmV0dXJu
ICJSXzg2MF8zMiIgOwogICAgIGNhc2UgMHgwMiA6IHJldHVybiAiUl84NjBfQ09QWSIgOwogICAg
IGNhc2UgMHgwMyA6IHJldHVybiAiUl84NjBfR0xPQl9EQVQiIDsKICAgICBjYXNlIDB4MDQgOiBy
ZXR1cm4gIlJfODYwX0pVTVBfU0xPVCIgOwogICAgIGNhc2UgMHgwNSA6IHJldHVybiAiUl84NjBf
UkVMQVRJVkUiIDsKICAgICBjYXNlIDB4MzAgOiByZXR1cm4gIlJfODYwX1BDMjYiIDsKICAgICBj
YXNlIDB4MzEgOiByZXR1cm4gIlJfODYwX1BMVDI2IiA7CiAgICAgY2FzZSAweDMyIDogcmV0dXJu
ICJSXzg2MF9QQzE2IiA7CiAgICAgY2FzZSAweDQwIDogcmV0dXJuICJSXzg2MF9MT1cwIiA7CiAg
ICAgY2FzZSAweDQyIDogcmV0dXJuICJSXzg2MF9TUExJVDAiIDsKICAgICBjYXNlIDB4NDQgOiBy
ZXR1cm4gIlJfODYwX0xPVzEiIDsKICAgICBjYXNlIDB4NDYgOiByZXR1cm4gIlJfODYwX1NQTElU
MSIgOwogICAgIGNhc2UgMHg0OCA6IHJldHVybiAiUl84NjBfTE9XMiIgOwogICAgIGNhc2UgMHg0
QSA6IHJldHVybiAiUl84NjBfU1BMSVQyIiA7CiAgICAgY2FzZSAweDRDIDogcmV0dXJuICJSXzg2
MF9MT1czIiA7CiAgICAgY2FzZSAweDUwIDogcmV0dXJuICJSXzg2MF9MT0dPVDAiIDsKICAgICBj
YXNlIDB4NTIgOiByZXR1cm4gIlJfODYwX1NQR09UMCIgOwogICAgIGNhc2UgMHg1NCA6IHJldHVy
biAiUl84NjBfTE9HT1QxIiA7CiAgICAgY2FzZSAweDU2IDogcmV0dXJuICJSXzg2MF9TUEdPVDEi
IDsKICAgICBjYXNlIDB4NjAgOiByZXR1cm4gIlJfODYwX0xPR09UT0ZGMCIgOwogICAgIGNhc2Ug
MHg2MiA6IHJldHVybiAiUl84NjBfU1BHT1RPRkYwIiA7CiAgICAgY2FzZSAweDY0IDogcmV0dXJu
ICJSXzg2MF9MT0dPVE9GRjEiIDsKICAgICBjYXNlIDB4NjYgOiByZXR1cm4gIlJfODYwX1NQR09U
T0ZGMSIgOwogICAgIGNhc2UgMHg2OCA6IHJldHVybiAiUl84NjBfTE9HT1RPRkYyIiA7CiAgICAg
Y2FzZSAweDZDIDogcmV0dXJuICJSXzg2MF9MT0dPVE9GRjMiIDsKICAgICBjYXNlIDB4NzAgOiBy
ZXR1cm4gIlJfODYwX0xPUEMiIDsKICAgICBjYXNlIDB4ODAgOiByZXR1cm4gIlJfODYwX0hJR0hB
REoiIDsKICAgICBjYXNlIDB4OTAgOiByZXR1cm4gIlJfODYwX0hBR09UIiA7CiAgICAgY2FzZSAw
eEEwIDogcmV0dXJuICJSXzg2MF9IQUdPVE9GRiIgOwogICAgIGNhc2UgMHhCMCA6IHJldHVybiAi
Ul84NjBfSEFQQyIgOwogICAgIGNhc2UgMHhDMCA6IHJldHVybiAiUl84NjBfSElHSCIgOwogICAg
IGNhc2UgMHhEMCA6IHJldHVybiAiUl84NjBfSElHT1QiIDsKICAgICBjYXNlIDB4RTAgOiByZXR1
cm4gIlJfODYwX0hJR09UT0ZGIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NjcgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2k5NjAuaCIgMQojIDI2ICIuLi9p
bmNsdWRlL2VsZi9pOTYwLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2k5NjBfcmVsb2NfdHlw
ZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2k5NjBfcmVs
b2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewog
ICAgIGNhc2UgMCA6IHJldHVybiAiUl85NjBfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAi
Ul85NjBfMTIiIDsKICAgICBjYXNlIDIgOiByZXR1cm4gIlJfOTYwXzMyIiA7CiAgICAgY2FzZSAz
IDogcmV0dXJuICJSXzk2MF9JUDI0IiA7CiAgICAgY2FzZSA0IDogcmV0dXJuICJSXzk2MF9TVUIi
IDsKICAgICBjYXNlIDUgOiByZXR1cm4gIlJfOTYwX09QVENBTEwiIDsKICAgICBjYXNlIDYgOiBy
ZXR1cm4gIlJfOTYwX09QVENBTExYIiA7CiAgICAgY2FzZSA3IDogcmV0dXJuICJSXzk2MF9PUFRD
QUxMWEEiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2OCAicmVhZGVsZi5j
IiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaWE2NC5oIiAxCiMgMTEzICIuLi9pbmNsdWRlL2VsZi9p
YTY0LmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lhNjRfcmVsb2NfdHlwZSAodW5zaWduZWQg
bG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lhNjRfcmVsb2NfdHlwZSAocnR5
cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMHgwMCA6
IHJldHVybiAiUl9JQTY0X05PTkUiIDsKCiAgY2FzZSAweDIxIDogcmV0dXJuICJSX0lBNjRfSU1N
MTQiIDsKICBjYXNlIDB4MjIgOiByZXR1cm4gIlJfSUE2NF9JTU0yMiIgOwogIGNhc2UgMHgyMyA6
IHJldHVybiAiUl9JQTY0X0lNTTY0IiA7CiAgY2FzZSAweDI0IDogcmV0dXJuICJSX0lBNjRfRElS
MzJNU0IiIDsKICBjYXNlIDB4MjUgOiByZXR1cm4gIlJfSUE2NF9ESVIzMkxTQiIgOwogIGNhc2Ug
MHgyNiA6IHJldHVybiAiUl9JQTY0X0RJUjY0TVNCIiA7CiAgY2FzZSAweDI3IDogcmV0dXJuICJS
X0lBNjRfRElSNjRMU0IiIDsKCiAgY2FzZSAweDJhIDogcmV0dXJuICJSX0lBNjRfR1BSRUwyMiIg
OwogIGNhc2UgMHgyYiA6IHJldHVybiAiUl9JQTY0X0dQUkVMNjRJIiA7CiAgY2FzZSAweDJjIDog
cmV0dXJuICJSX0lBNjRfR1BSRUwzMk1TQiIgOwogIGNhc2UgMHgyZCA6IHJldHVybiAiUl9JQTY0
X0dQUkVMMzJMU0IiIDsKICBjYXNlIDB4MmUgOiByZXR1cm4gIlJfSUE2NF9HUFJFTDY0TVNCIiA7
CiAgY2FzZSAweDJmIDogcmV0dXJuICJSX0lBNjRfR1BSRUw2NExTQiIgOwoKICBjYXNlIDB4MzIg
OiByZXR1cm4gIlJfSUE2NF9MVE9GRjIyIiA7CiAgY2FzZSAweDMzIDogcmV0dXJuICJSX0lBNjRf
TFRPRkY2NEkiIDsKCiAgY2FzZSAweDNhIDogcmV0dXJuICJSX0lBNjRfUExUT0ZGMjIiIDsKICBj
YXNlIDB4M2IgOiByZXR1cm4gIlJfSUE2NF9QTFRPRkY2NEkiIDsKICBjYXNlIDB4M2UgOiByZXR1
cm4gIlJfSUE2NF9QTFRPRkY2NE1TQiIgOwogIGNhc2UgMHgzZiA6IHJldHVybiAiUl9JQTY0X1BM
VE9GRjY0TFNCIiA7CgogIGNhc2UgMHg0MyA6IHJldHVybiAiUl9JQTY0X0ZQVFI2NEkiIDsKICBj
YXNlIDB4NDQgOiByZXR1cm4gIlJfSUE2NF9GUFRSMzJNU0IiIDsKICBjYXNlIDB4NDUgOiByZXR1
cm4gIlJfSUE2NF9GUFRSMzJMU0IiIDsKICBjYXNlIDB4NDYgOiByZXR1cm4gIlJfSUE2NF9GUFRS
NjRNU0IiIDsKICBjYXNlIDB4NDcgOiByZXR1cm4gIlJfSUE2NF9GUFRSNjRMU0IiIDsKCiAgY2Fz
ZSAweDQ4IDogcmV0dXJuICJSX0lBNjRfUENSRUw2MEIiIDsKICBjYXNlIDB4NDkgOiByZXR1cm4g
IlJfSUE2NF9QQ1JFTDIxQiIgOwogIGNhc2UgMHg0YSA6IHJldHVybiAiUl9JQTY0X1BDUkVMMjFN
IiA7CiAgY2FzZSAweDRiIDogcmV0dXJuICJSX0lBNjRfUENSRUwyMUYiIDsKICBjYXNlIDB4NGMg
OiByZXR1cm4gIlJfSUE2NF9QQ1JFTDMyTVNCIiA7CiAgY2FzZSAweDRkIDogcmV0dXJuICJSX0lB
NjRfUENSRUwzMkxTQiIgOwogIGNhc2UgMHg0ZSA6IHJldHVybiAiUl9JQTY0X1BDUkVMNjRNU0Ii
IDsKICBjYXNlIDB4NGYgOiByZXR1cm4gIlJfSUE2NF9QQ1JFTDY0TFNCIiA7CgogIGNhc2UgMHg1
MiA6IHJldHVybiAiUl9JQTY0X0xUT0ZGX0ZQVFIyMiIgOwogIGNhc2UgMHg1MyA6IHJldHVybiAi
Ul9JQTY0X0xUT0ZGX0ZQVFI2NEkiIDsKICBjYXNlIDB4NTQgOiByZXR1cm4gIlJfSUE2NF9MVE9G
Rl9GUFRSMzJNU0IiIDsKICBjYXNlIDB4NTUgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSMzJM
U0IiIDsKICBjYXNlIDB4NTYgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSNjRNU0IiIDsKICBj
YXNlIDB4NTcgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSNjRMU0IiIDsKCiAgY2FzZSAweDVj
IDogcmV0dXJuICJSX0lBNjRfU0VHUkVMMzJNU0IiIDsKICBjYXNlIDB4NWQgOiByZXR1cm4gIlJf
SUE2NF9TRUdSRUwzMkxTQiIgOwogIGNhc2UgMHg1ZSA6IHJldHVybiAiUl9JQTY0X1NFR1JFTDY0
TVNCIiA7CiAgY2FzZSAweDVmIDogcmV0dXJuICJSX0lBNjRfU0VHUkVMNjRMU0IiIDsKCiAgY2Fz
ZSAweDY0IDogcmV0dXJuICJSX0lBNjRfU0VDUkVMMzJNU0IiIDsKICBjYXNlIDB4NjUgOiByZXR1
cm4gIlJfSUE2NF9TRUNSRUwzMkxTQiIgOwogIGNhc2UgMHg2NiA6IHJldHVybiAiUl9JQTY0X1NF
Q1JFTDY0TVNCIiA7CiAgY2FzZSAweDY3IDogcmV0dXJuICJSX0lBNjRfU0VDUkVMNjRMU0IiIDsK
CiAgY2FzZSAweDZjIDogcmV0dXJuICJSX0lBNjRfUkVMMzJNU0IiIDsKICBjYXNlIDB4NmQgOiBy
ZXR1cm4gIlJfSUE2NF9SRUwzMkxTQiIgOwogIGNhc2UgMHg2ZSA6IHJldHVybiAiUl9JQTY0X1JF
TDY0TVNCIiA7CiAgY2FzZSAweDZmIDogcmV0dXJuICJSX0lBNjRfUkVMNjRMU0IiIDsKCiAgY2Fz
ZSAweDc0IDogcmV0dXJuICJSX0lBNjRfTFRWMzJNU0IiIDsKICBjYXNlIDB4NzUgOiByZXR1cm4g
IlJfSUE2NF9MVFYzMkxTQiIgOwogIGNhc2UgMHg3NiA6IHJldHVybiAiUl9JQTY0X0xUVjY0TVNC
IiA7CiAgY2FzZSAweDc3IDogcmV0dXJuICJSX0lBNjRfTFRWNjRMU0IiIDsKCiAgY2FzZSAweDc5
IDogcmV0dXJuICJSX0lBNjRfUENSRUwyMUJJIiA7CiAgY2FzZSAweDdhIDogcmV0dXJuICJSX0lB
NjRfUENSRUwyMiIgOwogIGNhc2UgMHg3YiA6IHJldHVybiAiUl9JQTY0X1BDUkVMNjRJIiA7Cgog
IGNhc2UgMHg4MCA6IHJldHVybiAiUl9JQTY0X0lQTFRNU0IiIDsKICBjYXNlIDB4ODEgOiByZXR1
cm4gIlJfSUE2NF9JUExUTFNCIiA7CiAgY2FzZSAweDg0IDogcmV0dXJuICJSX0lBNjRfQ09QWSIg
OwogIGNhc2UgMHg4NiA6IHJldHVybiAiUl9JQTY0X0xUT0ZGMjJYIiA7CiAgY2FzZSAweDg3IDog
cmV0dXJuICJSX0lBNjRfTERYTU9WIiA7CgogIGNhc2UgMHg5MSA6IHJldHVybiAiUl9JQTY0X1RQ
UkVMMTQiIDsKICBjYXNlIDB4OTIgOiByZXR1cm4gIlJfSUE2NF9UUFJFTDIyIiA7CiAgY2FzZSAw
eDkzIDogcmV0dXJuICJSX0lBNjRfVFBSRUw2NEkiIDsKICBjYXNlIDB4OTYgOiByZXR1cm4gIlJf
SUE2NF9UUFJFTDY0TVNCIiA7CiAgY2FzZSAweDk3IDogcmV0dXJuICJSX0lBNjRfVFBSRUw2NExT
QiIgOwoKICBjYXNlIDB4OWEgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9UUFJFTDIyIiA7CgogIGNh
c2UgMHhhNiA6IHJldHVybiAiUl9JQTY0X0RUUE1PRDY0TVNCIiA7CiAgY2FzZSAweGE3IDogcmV0
dXJuICJSX0lBNjRfRFRQTU9ENjRMU0IiIDsKICBjYXNlIDB4YWEgOiByZXR1cm4gIlJfSUE2NF9M
VE9GRl9EVFBNT0QyMiIgOwoKICBjYXNlIDB4YjEgOiByZXR1cm4gIlJfSUE2NF9EVFBSRUwxNCIg
OwogIGNhc2UgMHhiMiA6IHJldHVybiAiUl9JQTY0X0RUUFJFTDIyIiA7CiAgY2FzZSAweGIzIDog
cmV0dXJuICJSX0lBNjRfRFRQUkVMNjRJIiA7CiAgY2FzZSAweGI0IDogcmV0dXJuICJSX0lBNjRf
RFRQUkVMMzJNU0IiIDsKICBjYXNlIDB4YjUgOiByZXR1cm4gIlJfSUE2NF9EVFBSRUwzMkxTQiIg
OwogIGNhc2UgMHhiNiA6IHJldHVybiAiUl9JQTY0X0RUUFJFTDY0TVNCIiA7CiAgY2FzZSAweGI3
IDogcmV0dXJuICJSX0lBNjRfRFRQUkVMNjRMU0IiIDsKCiAgY2FzZSAweGJhIDogcmV0dXJuICJS
X0lBNjRfTFRPRkZfRFRQUkVMMjIiIDsKCiAKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9
IH0KIyA2OSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaXAyay5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL2lwMmsuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaXAya19yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaXAy
a19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBl
KSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX0lQMktfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAi
Ul9JUDJLXzE2IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0lQMktfMzIiIDsKICBjYXNlIDMgOiBy
ZXR1cm4gIlJfSVAyS19GUjkiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfSVAyS19CQU5LIiA7CiAg
Y2FzZSA1IDogcmV0dXJuICJSX0lQMktfQUREUjE2Q0pQIiA7CiAgY2FzZSA2IDogcmV0dXJuICJS
X0lQMktfUEFHRTMiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfSVAyS19MTzhEQVRBIiA7CiAgY2Fz
ZSA4IDogcmV0dXJuICJSX0lQMktfSEk4REFUQSIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9JUDJL
X0xPOElOU04iIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0lQMktfSEk4SU5TTiIgOwogIGNhc2Ug
MTEgOiByZXR1cm4gIlJfSVAyS19QQ19TS0lQIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9JUDJL
X1RFWFQiIDsKICBjYXNlIDEzIDogcmV0dXJuICJSX0lQMktfRlJfT0ZGU0VUIiA7CiAgY2FzZSAx
NCA6IHJldHVybiAiUl9JUDJLX0VYOERBVEEiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTAp
OyB9IH0KIyA3MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTMyci5oIiAxCiMg
MjYgIi4uL2luY2x1ZGUvZWxmL20zMnIuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTMycl9y
ZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZf
bTMycl9yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0
eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX00zMlJfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVy
biAiUl9NMzJSXzE2IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX00zMlJfMzIiIDsKICBjYXNlIDMg
OiByZXR1cm4gIlJfTTMyUl8yNCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NMzJSXzEwX1BDUkVM
IiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX00zMlJfMThfUENSRUwiIDsKICBjYXNlIDYgOiByZXR1
cm4gIlJfTTMyUl8yNl9QQ1JFTCIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9NMzJSX0hJMTZfVUxP
IiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX00zMlJfSEkxNl9TTE8iIDsKICBjYXNlIDkgOiByZXR1
cm4gIlJfTTMyUl9MTzE2IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9NMzJSX1NEQTE2IiA7CiAg
Y2FzZSAxMSA6IHJldHVybiAiUl9NMzJSX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDEyIDogcmV0
dXJuICJSX00zMlJfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9
IH0KIyA3MSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTY4ay5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL202OGsuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4a19yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4
a19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBl
KSB7CiAgY2FzZSAwIDogcmV0dXJuICJSXzY4S19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJS
XzY4S18zMiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl82OEtfMTYiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfNjhLXzgiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfNjhLX1BDMzIiIDsKICBjYXNlIDUg
OiByZXR1cm4gIlJfNjhLX1BDMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfNjhLX1BDOCIgOwog
IGNhc2UgNyA6IHJldHVybiAiUl82OEtfR09UMzIiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfNjhL
X0dPVDE2IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSXzY4S19HT1Q4IiA7CiAgY2FzZSAxMCA6IHJl
dHVybiAiUl82OEtfR09UMzJPIiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl82OEtfR09UMTZPIiA7
CiAgY2FzZSAxMiA6IHJldHVybiAiUl82OEtfR09UOE8iIDsKICBjYXNlIDEzIDogcmV0dXJuICJS
XzY4S19QTFQzMiIgOwogIGNhc2UgMTQgOiByZXR1cm4gIlJfNjhLX1BMVDE2IiA7CiAgY2FzZSAx
NSA6IHJldHVybiAiUl82OEtfUExUOCIgOwogIGNhc2UgMTYgOiByZXR1cm4gIlJfNjhLX1BMVDMy
TyIgOwogIGNhc2UgMTcgOiByZXR1cm4gIlJfNjhLX1BMVDE2TyIgOwogIGNhc2UgMTggOiByZXR1
cm4gIlJfNjhLX1BMVDhPIiA7CiAgY2FzZSAxOSA6IHJldHVybiAiUl82OEtfQ09QWSIgOwogIGNh
c2UgMjAgOiByZXR1cm4gIlJfNjhLX0dMT0JfREFUIiA7CiAgY2FzZSAyMSA6IHJldHVybiAiUl82
OEtfSk1QX1NMT1QiIDsKICBjYXNlIDIyIDogcmV0dXJuICJSXzY4S19SRUxBVElWRSIgOwoKICBj
YXNlIDIzIDogcmV0dXJuICJSXzY4S19HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAyNCA6IHJldHVy
biAiUl82OEtfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0K
IyA3MiAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTY4aGMxMS5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL202OGhjMTEuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4aGMx
MV9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBl
bGZfbTY4aGMxMV9yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0
Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX002OEhDMTFfTk9ORSIgOwogIGNhc2Ug
MSA6IHJldHVybiAiUl9NNjhIQzExXzgiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfTTY4SEMxMV9I
STgiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJfTTY4SEMxMV9MTzgiIDsKICBjYXNlIDQgOiByZXR1
cm4gIlJfTTY4SEMxMV9QQ1JFTF84IiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX002OEhDMTFfMTYi
IDsKICBjYXNlIDYgOiByZXR1cm4gIlJfTTY4SEMxMV8zMiIgOwogIGNhc2UgNyA6IHJldHVybiAi
Ul9NNjhIQzExXzNCIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX002OEhDMTFfUENSRUxfMTYiIDsK
CgogIGNhc2UgOSA6IHJldHVybiAiUl9NNjhIQzExX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDEw
IDogcmV0dXJuICJSX002OEhDMTFfR05VX1ZURU5UUlkiIDsKCiAgY2FzZSAxMSA6IHJldHVybiAi
Ul9NNjhIQzExXzI0IiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9NNjhIQzExX0xPMTYiIDsKICBj
YXNlIDEzIDogcmV0dXJuICJSX002OEhDMTFfUEFHRSIgOwoKCgogIGNhc2UgMjAgOiByZXR1cm4g
IlJfTTY4SEMxMV9STF9KVU1QIiA7CgoKICBjYXNlIDIxIDogcmV0dXJuICJSX002OEhDMTFfUkxf
R1JPVVAiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA3MyAicmVhZGVsZi5j
IiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbWNvcmUuaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi9t
Y29yZS5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tY29yZV9yZWxvY190eXBlICh1bnNpZ25l
ZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbWNvcmVfcmVsb2NfdHlwZSAo
cnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6
IHJldHVybiAiUl9NQ09SRV9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX01DT1JFX0FERFIz
MiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9NQ09SRV9QQ1JFTElNTThCWTQiIDsKICBjYXNlIDMg
OiByZXR1cm4gIlJfTUNPUkVfUENSRUxJTU0xMUJZMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9N
Q09SRV9QQ1JFTElNTTRCWTIiIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfTUNPUkVfUENSRUwzMiIg
OwogIGNhc2UgNiA6IHJldHVybiAiUl9NQ09SRV9QQ1JFTEpTUl9JTU0xMUJZMiIgOwogIGNhc2Ug
NyA6IHJldHVybiAiUl9NQ09SRV9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSA4IDogcmV0dXJuICJS
X01DT1JFX0dOVV9WVEVOVFJZIiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX01DT1JFX1JFTEFUSVZF
IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9NQ09SRV9DT1BZIiA7CiAgY2FzZSAxMSA6IHJldHVy
biAiUl9NQ09SRV9HTE9CX0RBVCIgOwogIGNhc2UgMTIgOiByZXR1cm4gIlJfTUNPUkVfSlVNUF9T
TE9UIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNzQgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL21pcHMuaCIgMQojIDM0ICIuLi9pbmNsdWRlL2VsZi9taXBz
LmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX21pcHNfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX21pcHNfcmVsb2NfdHlwZSAocnR5cGUp
IHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVy
biAiUl9NSVBTX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfTUlQU18xNiIgOwogIGNhc2Ug
MiA6IHJldHVybiAiUl9NSVBTXzMyIiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX01JUFNfUkVMMzIi
IDsKICBjYXNlIDQgOiByZXR1cm4gIlJfTUlQU18yNiIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9N
SVBTX0hJMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfTUlQU19MTzE2IiA7CiAgY2FzZSA3IDog
cmV0dXJuICJSX01JUFNfR1BSRUwxNiIgOwogIGNhc2UgOCA6IHJldHVybiAiUl9NSVBTX0xJVEVS
QUwiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfTUlQU19HT1QxNiIgOwogIGNhc2UgMTAgOiByZXR1
cm4gIlJfTUlQU19QQzE2IiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl9NSVBTX0NBTEwxNiIgOwog
IGNhc2UgMTIgOiByZXR1cm4gIlJfTUlQU19HUFJFTDMyIiA7CgoKICBjYXNlIDEzIDogcmV0dXJu
ICJSX01JUFNfVU5VU0VEMSIgOwogIGNhc2UgMTQgOiByZXR1cm4gIlJfTUlQU19VTlVTRUQyIiA7
CiAgY2FzZSAxNSA6IHJldHVybiAiUl9NSVBTX1VOVVNFRDMiIDsKICBjYXNlIDE2IDogcmV0dXJu
ICJSX01JUFNfU0hJRlQ1IiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9NSVBTX1NISUZUNiIgOwog
IGNhc2UgMTggOiByZXR1cm4gIlJfTUlQU182NCIgOwogIGNhc2UgMTkgOiByZXR1cm4gIlJfTUlQ
U19HT1RfRElTUCIgOwogIGNhc2UgMjAgOiByZXR1cm4gIlJfTUlQU19HT1RfUEFHRSIgOwogIGNh
c2UgMjEgOiByZXR1cm4gIlJfTUlQU19HT1RfT0ZTVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJf
TUlQU19HT1RfSEkxNiIgOwogIGNhc2UgMjMgOiByZXR1cm4gIlJfTUlQU19HT1RfTE8xNiIgOwog
IGNhc2UgMjQgOiByZXR1cm4gIlJfTUlQU19TVUIiIDsKICBjYXNlIDI1IDogcmV0dXJuICJSX01J
UFNfSU5TRVJUX0EiIDsKICBjYXNlIDI2IDogcmV0dXJuICJSX01JUFNfSU5TRVJUX0IiIDsKICBj
YXNlIDI3IDogcmV0dXJuICJSX01JUFNfREVMRVRFIiA7CiAgY2FzZSAyOCA6IHJldHVybiAiUl9N
SVBTX0hJR0hFUiIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJfTUlQU19ISUdIRVNUIiA7CiAgY2Fz
ZSAzMCA6IHJldHVybiAiUl9NSVBTX0NBTExfSEkxNiIgOwogIGNhc2UgMzEgOiByZXR1cm4gIlJf
TUlQU19DQUxMX0xPMTYiIDsKICBjYXNlIDMyIDogcmV0dXJuICJSX01JUFNfU0NOX0RJU1AiIDsK
ICBjYXNlIDMzIDogcmV0dXJuICJSX01JUFNfUkVMMTYiIDsKICBjYXNlIDM0IDogcmV0dXJuICJS
X01JUFNfQUREX0lNTUVESUFURSIgOwogIGNhc2UgMzUgOiByZXR1cm4gIlJfTUlQU19QSlVNUCIg
OwogIGNhc2UgMzYgOiByZXR1cm4gIlJfTUlQU19SRUxHT1QiIDsKICBjYXNlIDM3IDogcmV0dXJu
ICJSX01JUFNfSkFMUiIgOwogIGNhc2UgMzggOiByZXR1cm4gIlJfTUlQU19tYXgiIDsKCiAgY2Fz
ZSAxMDAgOiByZXR1cm4gIlJfTUlQUzE2XzI2IiA7CiAgY2FzZSAxMDEgOiByZXR1cm4gIlJfTUlQ
UzE2X0dQUkVMIiA7CgogIGNhc2UgMjQ4IDogcmV0dXJuICJSX01JUFNfUEMzMiIgOwogIGNhc2Ug
MjQ5IDogcmV0dXJuICJSX01JUFNfUEM2NCIgOwogIGNhc2UgMjUwIDogcmV0dXJuICJSX01JUFNf
R05VX1JFTDE2X1MyIiA7CiAgY2FzZSAyNTEgOiByZXR1cm4gIlJfTUlQU19HTlVfUkVMX0xPMTYi
IDsKICBjYXNlIDI1MiA6IHJldHVybiAiUl9NSVBTX0dOVV9SRUxfSEkxNiIgOwoKICBjYXNlIDI1
MyA6IHJldHVybiAiUl9NSVBTX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDI1NCA6IHJldHVybiAi
Ul9NSVBTX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
MzQxICIuLi9pbmNsdWRlL2VsZi9taXBzLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgdW5zaWduZWQg
bG9uZyBsX25hbWU7CgogIHVuc2lnbmVkIGxvbmcgbF90aW1lX3N0YW1wOwoKICB1bnNpZ25lZCBs
b25nIGxfY2hlY2tzdW07CgogIHVuc2lnbmVkIGxvbmcgbF92ZXJzaW9uOwoKICB1bnNpZ25lZCBs
b25nIGxfZmxhZ3M7Cn0gRWxmMzJfTGliOwoKCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBj
aGFyIGxfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIGxfdGltZV9zdGFtcFs0XTsKICB1bnNpZ25l
ZCBjaGFyIGxfY2hlY2tzdW1bNF07CiAgdW5zaWduZWQgY2hhciBsX3ZlcnNpb25bNF07CiAgdW5z
aWduZWQgY2hhciBsX2ZsYWdzWzRdOwp9IEVsZjMyX0V4dGVybmFsX0xpYjsKIyAzODkgIi4uL2lu
Y2x1ZGUvZWxmL21pcHMuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEVsZjMyX0NvbmZsaWN0Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgRWxmMzJfRXh0ZXJuYWxfQ29uZmxpY3RbNF07Cgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgRWxmNjRfQ29uZmxpY3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBFbGY2
NF9FeHRlcm5hbF9Db25mbGljdFs4XTsKIyA0MDMgIi4uL2luY2x1ZGUvZWxmL21pcHMuaCIKdHlw
ZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgICB7CgogICAgICB1bnNpZ25lZCBsb25nIGd0X2N1cnJl
bnRfZ192YWx1ZTsKCiAgICAgIHVuc2lnbmVkIGxvbmcgZ3RfdW51c2VkOwogICAgfSBndF9oZWFk
ZXI7CiAgc3RydWN0CiAgICB7CgogICAgICB1bnNpZ25lZCBsb25nIGd0X2dfdmFsdWU7CgogICAg
ICB1bnNpZ25lZCBsb25nIGd0X2J5dGVzOwogICAgfSBndF9lbnRyeTsKfSBFbGYzMl9ncHRhYjsK
CgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgICB7CiAgICAgIHVuc2lnbmVkIGNoYXIgZ3Rf
Y3VycmVudF9nX3ZhbHVlWzRdOwogICAgICB1bnNpZ25lZCBjaGFyIGd0X3VudXNlZFs0XTsKICAg
IH0gZ3RfaGVhZGVyOwogIHN0cnVjdAogICAgewogICAgICB1bnNpZ25lZCBjaGFyIGd0X2dfdmFs
dWVbNF07CiAgICAgIHVuc2lnbmVkIGNoYXIgZ3RfYnl0ZXNbNF07CiAgICB9IGd0X2VudHJ5Owp9
IEVsZjMyX0V4dGVybmFsX2dwdGFiOwoKCgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGxv
bmcgcmlfZ3BybWFzazsKCiAgdW5zaWduZWQgbG9uZyByaV9jcHJtYXNrWzRdOwoKICBsb25nIHJp
X2dwX3ZhbHVlOwp9IEVsZjMyX1JlZ0luZm87CgoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVk
IGNoYXIgcmlfZ3BybWFza1s0XTsKICB1bnNpZ25lZCBjaGFyIHJpX2Nwcm1hc2tbNF1bNF07CiAg
dW5zaWduZWQgY2hhciByaV9ncF92YWx1ZVs0XTsKfSBFbGYzMl9FeHRlcm5hbF9SZWdJbmZvOwoK
CmV4dGVybiB2b2lkIGJmZF9taXBzX2VsZjMyX3N3YXBfcmVnaW5mb19pbgogIChiZmQgKiwgY29u
c3QgRWxmMzJfRXh0ZXJuYWxfUmVnSW5mbyAqLCBFbGYzMl9SZWdJbmZvICopOwpleHRlcm4gdm9p
ZCBiZmRfbWlwc19lbGYzMl9zd2FwX3JlZ2luZm9fb3V0CiAgKGJmZCAqLCBjb25zdCBFbGYzMl9S
ZWdJbmZvICosIEVsZjMyX0V4dGVybmFsX1JlZ0luZm8gKik7CiMgNzA2ICIuLi9pbmNsdWRlL2Vs
Zi9taXBzLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgdW5zaWduZWQgY2hhciByX29mZnNldFs4XTsK
CiAgdW5zaWduZWQgY2hhciByX3N5bVs0XTsKCiAgdW5zaWduZWQgY2hhciByX3NzeW1bMV07Cgog
IHVuc2lnbmVkIGNoYXIgcl90eXBlM1sxXTsKCiAgdW5zaWduZWQgY2hhciByX3R5cGUyWzFdOwoK
ICB1bnNpZ25lZCBjaGFyIHJfdHlwZVsxXTsKfSBFbGY2NF9NaXBzX0V4dGVybmFsX1JlbDsKCnR5
cGVkZWYgc3RydWN0CnsKCiAgYmZkX3ZtYSByX29mZnNldDsKCiAgdW5zaWduZWQgbG9uZyByX3N5
bTsKCiAgdW5zaWduZWQgY2hhciByX3NzeW07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlMzsKCiAg
dW5zaWduZWQgY2hhciByX3R5cGUyOwoKICB1bnNpZ25lZCBjaGFyIHJfdHlwZTsKfSBFbGY2NF9N
aXBzX0ludGVybmFsX1JlbDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewoKICB1bnNpZ25lZCBjaGFyIHJf
b2Zmc2V0WzhdOwoKICB1bnNpZ25lZCBjaGFyIHJfc3ltWzRdOwoKICB1bnNpZ25lZCBjaGFyIHJf
c3N5bVsxXTsKCiAgdW5zaWduZWQgY2hhciByX3R5cGUzWzFdOwoKICB1bnNpZ25lZCBjaGFyIHJf
dHlwZTJbMV07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlWzFdOwoKICB1bnNpZ25lZCBjaGFyIHJf
YWRkZW5kWzhdOwp9IEVsZjY0X01pcHNfRXh0ZXJuYWxfUmVsYTsKCnR5cGVkZWYgc3RydWN0CnsK
CiAgYmZkX3ZtYSByX29mZnNldDsKCiAgdW5zaWduZWQgbG9uZyByX3N5bTsKCiAgdW5zaWduZWQg
Y2hhciByX3NzeW07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlMzsKCiAgdW5zaWduZWQgY2hhciBy
X3R5cGUyOwoKICB1bnNpZ25lZCBjaGFyIHJfdHlwZTsKCiAgYmZkX3NpZ25lZF92bWEgcl9hZGRl
bmQ7Cn0gRWxmNjRfTWlwc19JbnRlcm5hbF9SZWxhOwojIDc5OSAiLi4vaW5jbHVkZS9lbGYvbWlw
cy5oIgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGNoYXIga2luZFsxXTsKCiAgdW5zaWdu
ZWQgY2hhciBzaXplWzFdOwoKICB1bnNpZ25lZCBjaGFyIHNlY3Rpb25bMl07CgogIHVuc2lnbmVk
IGNoYXIgaW5mb1s0XTsKfSBFbGZfRXh0ZXJuYWxfT3B0aW9uczsKCnR5cGVkZWYgc3RydWN0CnsK
CiAgdW5zaWduZWQgY2hhciBraW5kOwoKICB1bnNpZ25lZCBjaGFyIHNpemU7CgogIHVuc2lnbmVk
IHNob3J0IHNlY3Rpb247CgogIHVuc2lnbmVkIGxvbmcgaW5mbzsKfSBFbGZfSW50ZXJuYWxfT3B0
aW9uczsKCgpleHRlcm4gdm9pZCBiZmRfbWlwc19lbGZfc3dhcF9vcHRpb25zX2luCiAgKGJmZCAq
LCBjb25zdCBFbGZfRXh0ZXJuYWxfT3B0aW9ucyAqLCBFbGZfSW50ZXJuYWxfT3B0aW9ucyAqKTsK
ZXh0ZXJuIHZvaWQgYmZkX21pcHNfZWxmX3N3YXBfb3B0aW9uc19vdXQKICAoYmZkICosIGNvbnN0
IEVsZl9JbnRlcm5hbF9PcHRpb25zICosIEVsZl9FeHRlcm5hbF9PcHRpb25zICopOwojIDg2OSAi
Li4vaW5jbHVkZS9lbGYvbWlwcy5oIgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGNoYXIg
cmlfZ3BybWFza1s0XTsKCiAgdW5zaWduZWQgY2hhciByaV9wYWRbNF07CgogIHVuc2lnbmVkIGNo
YXIgcmlfY3BybWFza1s0XVs0XTsKCiAgdW5zaWduZWQgY2hhciByaV9ncF92YWx1ZVs4XTsKfSBF
bGY2NF9FeHRlcm5hbF9SZWdJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QKewoKICB1bnNpZ25lZCBsb25n
IHJpX2dwcm1hc2s7CgogIHVuc2lnbmVkIGxvbmcgcmlfcGFkOwoKICB1bnNpZ25lZCBsb25nIHJp
X2Nwcm1hc2tbNF07CgogIGJmZF92bWEgcmlfZ3BfdmFsdWU7Cn0gRWxmNjRfSW50ZXJuYWxfUmVn
SW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKCgogIHVuc2lnbmVkIGNoYXIgbXNfaGFzaF92YWx1ZVs0
XTsKCgoKCgoKCiAgdW5zaWduZWQgY2hhciBtc19pbmZvWzRdOwp9IEVsZjMyX0V4dGVybmFsX01z
eW07Cgp0eXBlZGVmIHN0cnVjdAp7CgoKICB1bnNpZ25lZCBsb25nIG1zX2hhc2hfdmFsdWU7CgoK
CgoKCgogIHVuc2lnbmVkIGxvbmcgbXNfaW5mbzsKfSBFbGYzMl9JbnRlcm5hbF9Nc3ltOwoKCgoK
CgpleHRlcm4gdm9pZCBiZmRfbWlwc19lbGY2NF9zd2FwX3JlZ2luZm9faW4KICAoYmZkICosIGNv
bnN0IEVsZjY0X0V4dGVybmFsX1JlZ0luZm8gKiwgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyAqKTsK
ZXh0ZXJuIHZvaWQgYmZkX21pcHNfZWxmNjRfc3dhcF9yZWdpbmZvX291dAogIChiZmQgKiwgY29u
c3QgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyAqLCBFbGY2NF9FeHRlcm5hbF9SZWdJbmZvICopOwoj
IDc1ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9tbWl4LmgiIDEKIyAyNyAiLi4v
aW5jbHVkZS9lbGYvbW1peC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tbWl4X3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tbWl4X3Jl
bG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsK
ICBjYXNlIDAgOiByZXR1cm4gIlJfTU1JWF9OT05FIiA7CgoKICBjYXNlIDEgOiByZXR1cm4gIlJf
TU1JWF84IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX01NSVhfMTYiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfTU1JWF8yNCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NTUlYXzMyIiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX01NSVhfNjQiIDsKCgogIGNhc2UgNiA6IHJldHVybiAiUl9NTUlYX1BDXzgi
IDsKICBjYXNlIDcgOiByZXR1cm4gIlJfTU1JWF9QQ18xNiIgOwogIGNhc2UgOCA6IHJldHVybiAi
Ul9NTUlYX1BDXzI0IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX01NSVhfUENfMzIiIDsKICBjYXNl
IDEwIDogcmV0dXJuICJSX01NSVhfUENfNjQiIDsKCgogIGNhc2UgMTEgOiByZXR1cm4gIlJfTU1J
WF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9NTUlYX0dOVV9WVEVOVFJZ
IiA7CgoKICBjYXNlIDEzIDogcmV0dXJuICJSX01NSVhfR0VUQSIgOwogIGNhc2UgMTQgOiByZXR1
cm4gIlJfTU1JWF9HRVRBXzEiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX01NSVhfR0VUQV8yIiA7
CiAgY2FzZSAxNiA6IHJldHVybiAiUl9NTUlYX0dFVEFfMyIgOwoKCiAgY2FzZSAxNyA6IHJldHVy
biAiUl9NTUlYX0NCUkFOQ0giIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX01NSVhfQ0JSQU5DSF9K
IiA7CiAgY2FzZSAxOSA6IHJldHVybiAiUl9NTUlYX0NCUkFOQ0hfMSIgOwogIGNhc2UgMjAgOiBy
ZXR1cm4gIlJfTU1JWF9DQlJBTkNIXzIiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX01NSVhfQ0JS
QU5DSF8zIiA7CgoKICBjYXNlIDIyIDogcmV0dXJuICJSX01NSVhfUFVTSEoiIDsKICBjYXNlIDIz
IDogcmV0dXJuICJSX01NSVhfUFVTSEpfMSIgOwogIGNhc2UgMjQgOiByZXR1cm4gIlJfTU1JWF9Q
VVNISl8yIiA7CiAgY2FzZSAyNSA6IHJldHVybiAiUl9NTUlYX1BVU0hKXzMiIDsKCgogIGNhc2Ug
MjYgOiByZXR1cm4gIlJfTU1JWF9KTVAiIDsKICBjYXNlIDI3IDogcmV0dXJuICJSX01NSVhfSk1Q
XzEiIDsKICBjYXNlIDI4IDogcmV0dXJuICJSX01NSVhfSk1QXzIiIDsKICBjYXNlIDI5IDogcmV0
dXJuICJSX01NSVhfSk1QXzMiIDsKCgogIGNhc2UgMzAgOiByZXR1cm4gIlJfTU1JWF9BRERSMTki
IDsKCgogIGNhc2UgMzEgOiByZXR1cm4gIlJfTU1JWF9BRERSMjciIDsKCgogIGNhc2UgMzIgOiBy
ZXR1cm4gIlJfTU1JWF9SRUdfT1JfQllURSIgOwoKCiAgY2FzZSAzMyA6IHJldHVybiAiUl9NTUlY
X1JFRyIgOwoKCgoKCiAgY2FzZSAzNCA6IHJldHVybiAiUl9NTUlYX0JBU0VfUExVU19PRkZTRVQi
IDsKCgogIGNhc2UgMzUgOiByZXR1cm4gIlJfTU1JWF9MT0NBTCIgOwpkZWZhdWx0OiByZXR1cm4g
KCh2b2lkICopMCk7IH0gfQojIDE2MCAiLi4vaW5jbHVkZS9lbGYvbW1peC5oIgpleHRlcm4gYmZk
X2Jvb2xlYW4gX2JmZF9tbWl4X3ByZXBhcmVfbGlua2VyX2FsbG9jYXRlZF9ncmVncwogKGJmZCAq
LCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfbW1peF9m
aW5hbGl6ZV9saW5rZXJfYWxsb2NhdGVkX2dyZWdzCiAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9tbWl4X2NoZWNrX2FsbF9yZWxvY3MKIChi
ZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CiMgNzYgInJlYWRlbGYuYyIgMgojIDEgIi4u
L2luY2x1ZGUvZWxmL21uMTAyMDAuaCIgMQojIDI4ICIuLi9pbmNsdWRlL2VsZi9tbjEwMjAwLmgi
CnN0YXRpYyBjb25zdCBjaGFyICogZWxmX21uMTAyMDBfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX21uMTAyMDBfcmVsb2NfdHlwZSAocnR5
cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJl
dHVybiAiUl9NTjEwMjAwX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfTU4xMDIwMF8zMiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9NTjEwMjAwXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJS
X01OMTAyMDBfOCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NTjEwMjAwXzI0IiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX01OMTAyMDBfUENSRUw4IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX01OMTAy
MDBfUENSRUwxNiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9NTjEwMjAwX1BDUkVMMjQiIDsKZGVm
YXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA3NyAicmVhZGVsZi5jIiAyCiMgMSAiLi4v
aW5jbHVkZS9lbGYvbW4xMDMwMC5oIiAxCiMgMjggIi4uL2luY2x1ZGUvZWxmL21uMTAzMDAuaCIK
c3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbW4xMDMwMF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25n
IHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbW4xMDMwMF9yZWxvY190eXBlIChydHlw
ZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0
dXJuICJSX01OMTAzMDBfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9NTjEwMzAwXzMyIiA7
CiAgY2FzZSAyIDogcmV0dXJuICJSX01OMTAzMDBfMTYiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJf
TU4xMDMwMF84IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX01OMTAzMDBfUENSRUwzMiIgOwogIGNh
c2UgNSA6IHJldHVybiAiUl9NTjEwMzAwX1BDUkVMMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJf
TU4xMDMwMF9QQ1JFTDgiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfTU4xMDMwMF9HTlVfVlRJTkhF
UklUIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX01OMTAzMDBfR05VX1ZURU5UUlkiIDsKICBjYXNl
IDkgOiByZXR1cm4gIlJfTU4xMDMwMF8yNCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7
IH0gfQojIDc4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9tc3A0MzAuaCIgMQoj
IDQ0ICIuLi9pbmNsdWRlL2VsZi9tc3A0MzAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbXNw
NDMwX3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAq
IGVsZl9tc3A0MzBfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dp
dGNoIChydHlwZSkgewogICAgIGNhc2UgMCA6IHJldHVybiAiUl9NU1A0MzBfTk9ORSIgOwogICAg
IGNhc2UgMSA6IHJldHVybiAiUl9NU1A0MzBfMzIiIDsKICAgICBjYXNlIDIgOiByZXR1cm4gIlJf
TVNQNDMwXzEwX1BDUkVMIiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSX01TUDQzMF8xNiIgOwog
ICAgIGNhc2UgNCA6IHJldHVybiAiUl9NU1A0MzBfMTZfUENSRUwiIDsKICAgICBjYXNlIDUgOiBy
ZXR1cm4gIlJfTVNQNDMwXzE2X0JZVEUiIDsKICAgICBjYXNlIDYgOiByZXR1cm4gIlJfTVNQNDMw
XzE2X1BDUkVMX0JZVEUiIDsKCmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNzkg
InJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL29yMzIuaCIgMQojIDI3ICIuLi9pbmNs
dWRlL2VsZi9vcjMyLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX29yMzJfcmVsb2NfdHlwZSAo
dW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX29yMzJfcmVsb2Nf
dHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNh
c2UgMCA6IHJldHVybiAiUl9PUjMyX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfT1IzMl8z
MiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9PUjMyXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJS
X09SMzJfOCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9PUjMyX0NPTlNUIiA7CiAgY2FzZSA1IDog
cmV0dXJuICJSX09SMzJfQ09OU1RIIiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX09SMzJfSlVNUFRB
UkciIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfT1IzMl9HTlVfVlRFTlRSWSIgOwogIGNhc2UgOCA6
IHJldHVybiAiUl9PUjMyX0dOVV9WVElOSEVSSVQiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAq
KTApOyB9IH0KIyA4MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvcGouaCIgMQoj
IDI3ICIuLi9pbmNsdWRlL2VsZi9wai5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9wal9yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfcGpf
cmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkg
ewogIGNhc2UgMCA6IHJldHVybiAiUl9QSl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX1BK
X0RBVEFfRElSMzIiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfUEpfQ09ERV9SRUwzMiIgOwogIGNh
c2UgMyA6IHJldHVybiAiUl9QSl9DT0RFX1JFTDE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX1BK
X0NPREVfRElSMzIiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfUEpfQ09ERV9ESVIxNiIgOwogIGNh
c2UgMTMgOiByZXR1cm4gIlJfUEpfQ09ERV9MTzE2IiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9Q
Sl9DT0RFX0hJMTYiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX1BKX0dOVV9WVElOSEVSSVQiIDsK
ICBjYXNlIDE2IDogcmV0dXJuICJSX1BKX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODEgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3Bw
Yy5oIiAxCiMgMzQgIi4uL2luY2x1ZGUvZWxmL3BwYy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9wcGNfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFy
ICogZWxmX3BwY19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0
Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX1BQQ19OT05FIiA7CiAgY2FzZSAxIDog
cmV0dXJuICJSX1BQQ19BRERSMzIiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfUFBDX0FERFIyNCIg
OwogIGNhc2UgMyA6IHJldHVybiAiUl9QUENfQUREUjE2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJS
X1BQQ19BRERSMTZfTE8iIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfUFBDX0FERFIxNl9ISSIgOwog
IGNhc2UgNiA6IHJldHVybiAiUl9QUENfQUREUjE2X0hBIiA7CiAgY2FzZSA3IDogcmV0dXJuICJS
X1BQQ19BRERSMTQiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfUFBDX0FERFIxNF9CUlRBS0VOIiA7
CiAgY2FzZSA5IDogcmV0dXJuICJSX1BQQ19BRERSMTRfQlJOVEFLRU4iIDsKICBjYXNlIDEwIDog
cmV0dXJuICJSX1BQQ19SRUwyNCIgOwogIGNhc2UgMTEgOiByZXR1cm4gIlJfUFBDX1JFTDE0IiA7
CiAgY2FzZSAxMiA6IHJldHVybiAiUl9QUENfUkVMMTRfQlJUQUtFTiIgOwogIGNhc2UgMTMgOiBy
ZXR1cm4gIlJfUFBDX1JFTDE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9QUENf
R09UMTYiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX1BQQ19HT1QxNl9MTyIgOwogIGNhc2UgMTYg
OiByZXR1cm4gIlJfUFBDX0dPVDE2X0hJIiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9QUENfR09U
MTZfSEEiIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX1BQQ19QTFRSRUwyNCIgOwogIGNhc2UgMTkg
OiByZXR1cm4gIlJfUFBDX0NPUFkiIDsKICBjYXNlIDIwIDogcmV0dXJuICJSX1BQQ19HTE9CX0RB
VCIgOwogIGNhc2UgMjEgOiByZXR1cm4gIlJfUFBDX0pNUF9TTE9UIiA7CiAgY2FzZSAyMiA6IHJl
dHVybiAiUl9QUENfUkVMQVRJVkUiIDsKICBjYXNlIDIzIDogcmV0dXJuICJSX1BQQ19MT0NBTDI0
UEMiIDsKICBjYXNlIDI0IDogcmV0dXJuICJSX1BQQ19VQUREUjMyIiA7CiAgY2FzZSAyNSA6IHJl
dHVybiAiUl9QUENfVUFERFIxNiIgOwogIGNhc2UgMjYgOiByZXR1cm4gIlJfUFBDX1JFTDMyIiA7
CiAgY2FzZSAyNyA6IHJldHVybiAiUl9QUENfUExUMzIiIDsKICBjYXNlIDI4IDogcmV0dXJuICJS
X1BQQ19QTFRSRUwzMiIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJfUFBDX1BMVDE2X0xPIiA7CiAg
Y2FzZSAzMCA6IHJldHVybiAiUl9QUENfUExUMTZfSEkiIDsKICBjYXNlIDMxIDogcmV0dXJuICJS
X1BQQ19QTFQxNl9IQSIgOwogIGNhc2UgMzIgOiByZXR1cm4gIlJfUFBDX1NEQVJFTDE2IiA7CiAg
Y2FzZSAzMyA6IHJldHVybiAiUl9QUENfU0VDVE9GRiIgOwogIGNhc2UgMzQgOiByZXR1cm4gIlJf
UFBDX1NFQ1RPRkZfTE8iIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX1BQQ19TRUNUT0ZGX0hJIiA7
CiAgY2FzZSAzNiA6IHJldHVybiAiUl9QUENfU0VDVE9GRl9IQSIgOwogIGNhc2UgMzcgOiByZXR1
cm4gIlJfUFBDX0FERFIzMCIgOwoKCiAgY2FzZSA2NyA6IHJldHVybiAiUl9QUENfVExTIiA7CiAg
Y2FzZSA2OCA6IHJldHVybiAiUl9QUENfRFRQTU9EMzIiIDsKICBjYXNlIDY5IDogcmV0dXJuICJS
X1BQQ19UUFJFTDE2IiA7CiAgY2FzZSA3MCA6IHJldHVybiAiUl9QUENfVFBSRUwxNl9MTyIgOwog
IGNhc2UgNzEgOiByZXR1cm4gIlJfUFBDX1RQUkVMMTZfSEkiIDsKICBjYXNlIDcyIDogcmV0dXJu
ICJSX1BQQ19UUFJFTDE2X0hBIiA7CiAgY2FzZSA3MyA6IHJldHVybiAiUl9QUENfVFBSRUwzMiIg
OwogIGNhc2UgNzQgOiByZXR1cm4gIlJfUFBDX0RUUFJFTDE2IiA7CiAgY2FzZSA3NSA6IHJldHVy
biAiUl9QUENfRFRQUkVMMTZfTE8iIDsKICBjYXNlIDc2IDogcmV0dXJuICJSX1BQQ19EVFBSRUwx
Nl9ISSIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfUFBDX0RUUFJFTDE2X0hBIiA7CiAgY2FzZSA3
OCA6IHJldHVybiAiUl9QUENfRFRQUkVMMzIiIDsKICBjYXNlIDc5IDogcmV0dXJuICJSX1BQQ19H
T1RfVExTR0QxNiIgOwogIGNhc2UgODAgOiByZXR1cm4gIlJfUFBDX0dPVF9UTFNHRDE2X0xPIiA7
CiAgY2FzZSA4MSA6IHJldHVybiAiUl9QUENfR09UX1RMU0dEMTZfSEkiIDsKICBjYXNlIDgyIDog
cmV0dXJuICJSX1BQQ19HT1RfVExTR0QxNl9IQSIgOwogIGNhc2UgODMgOiByZXR1cm4gIlJfUFBD
X0dPVF9UTFNMRDE2IiA7CiAgY2FzZSA4NCA6IHJldHVybiAiUl9QUENfR09UX1RMU0xEMTZfTE8i
IDsKICBjYXNlIDg1IDogcmV0dXJuICJSX1BQQ19HT1RfVExTTEQxNl9ISSIgOwogIGNhc2UgODYg
OiByZXR1cm4gIlJfUFBDX0dPVF9UTFNMRDE2X0hBIiA7CiAgY2FzZSA4NyA6IHJldHVybiAiUl9Q
UENfR09UX1RQUkVMMTYiIDsKICBjYXNlIDg4IDogcmV0dXJuICJSX1BQQ19HT1RfVFBSRUwxNl9M
TyIgOwogIGNhc2UgODkgOiByZXR1cm4gIlJfUFBDX0dPVF9UUFJFTDE2X0hJIiA7CiAgY2FzZSA5
MCA6IHJldHVybiAiUl9QUENfR09UX1RQUkVMMTZfSEEiIDsKICBjYXNlIDkxIDogcmV0dXJuICJS
X1BQQ19HT1RfRFRQUkVMMTYiIDsKICBjYXNlIDkyIDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVM
MTZfTE8iIDsKICBjYXNlIDkzIDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVMMTZfSEkiIDsKICBj
YXNlIDk0IDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVMMTZfSEEiIDsKCgoKICBjYXNlIDEwMSA6
IHJldHVybiAiUl9QUENfRU1CX05BRERSMzIiIDsKICBjYXNlIDEwMiA6IHJldHVybiAiUl9QUENf
RU1CX05BRERSMTYiIDsKICBjYXNlIDEwMyA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfTE8i
IDsKICBjYXNlIDEwNCA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfSEkiIDsKICBjYXNlIDEw
NSA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfSEEiIDsKICBjYXNlIDEwNiA6IHJldHVybiAi
Ul9QUENfRU1CX1NEQUkxNiIgOwogIGNhc2UgMTA3IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMkkx
NiIgOwogIGNhc2UgMTA4IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMlJFTCIgOwogIGNhc2UgMTA5
IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMjEiIDsKICBjYXNlIDExMCA6IHJldHVybiAiUl9QUENf
RU1CX01SS1JFRiIgOwogIGNhc2UgMTExIDogcmV0dXJuICJSX1BQQ19FTUJfUkVMU0VDMTYiIDsK
ICBjYXNlIDExMiA6IHJldHVybiAiUl9QUENfRU1CX1JFTFNUX0xPIiA7CiAgY2FzZSAxMTMgOiBy
ZXR1cm4gIlJfUFBDX0VNQl9SRUxTVF9ISSIgOwogIGNhc2UgMTE0IDogcmV0dXJuICJSX1BQQ19F
TUJfUkVMU1RfSEEiIDsKICBjYXNlIDExNSA6IHJldHVybiAiUl9QUENfRU1CX0JJVF9GTEQiIDsK
ICBjYXNlIDExNiA6IHJldHVybiAiUl9QUENfRU1CX1JFTFNEQSIgOwoKCiAgY2FzZSAyNTMgOiBy
ZXR1cm4gIlJfUFBDX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDI1NCA6IHJldHVybiAiUl9QUENf
R05VX1ZURU5UUlkiIDsKCgoKICBjYXNlIDI1NSA6IHJldHVybiAiUl9QUENfVE9DMTYiIDsKCmRl
ZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgODIgInJlYWRlbGYuYyIgMgojIDEgIi4u
L2luY2x1ZGUvZWxmL3BwYzY0LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYvcHBjNjQuaCIKc3Rh
dGljIGNvbnN0IGNoYXIgKiBlbGZfcHBjNjRfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlw
ZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX3BwYzY0X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNp
Z25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJf
UFBDNjRfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9QUEM2NF9BRERSMzIiIDsKICBjYXNl
IDIgOiByZXR1cm4gIlJfUFBDNjRfQUREUjI0IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX1BQQzY0
X0FERFIxNiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfTE8iIDsKICBjYXNl
IDUgOiByZXR1cm4gIlJfUFBDNjRfQUREUjE2X0hJIiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX1BQ
QzY0X0FERFIxNl9IQSIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9QUEM2NF9BRERSMTQiIDsKICBj
YXNlIDggOiByZXR1cm4gIlJfUFBDNjRfQUREUjE0X0JSVEFLRU4iIDsKICBjYXNlIDkgOiByZXR1
cm4gIlJfUFBDNjRfQUREUjE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9QUEM2
NF9SRUwyNCIgOwogIGNhc2UgMTEgOiByZXR1cm4gIlJfUFBDNjRfUkVMMTQiIDsKICBjYXNlIDEy
IDogcmV0dXJuICJSX1BQQzY0X1JFTDE0X0JSVEFLRU4iIDsKICBjYXNlIDEzIDogcmV0dXJuICJS
X1BQQzY0X1JFTDE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9QUEM2NF9HT1Qx
NiIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfUFBDNjRfR09UMTZfTE8iIDsKICBjYXNlIDE2IDog
cmV0dXJuICJSX1BQQzY0X0dPVDE2X0hJIiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9QUEM2NF9H
T1QxNl9IQSIgOwoKICBjYXNlIDE5IDogcmV0dXJuICJSX1BQQzY0X0NPUFkiIDsKICBjYXNlIDIw
IDogcmV0dXJuICJSX1BQQzY0X0dMT0JfREFUIiA7CiAgY2FzZSAyMSA6IHJldHVybiAiUl9QUEM2
NF9KTVBfU0xPVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJfUFBDNjRfUkVMQVRJVkUiIDsKCiAg
Y2FzZSAyNCA6IHJldHVybiAiUl9QUEM2NF9VQUREUjMyIiA7CiAgY2FzZSAyNSA6IHJldHVybiAi
Ul9QUEM2NF9VQUREUjE2IiA7CiAgY2FzZSAyNiA6IHJldHVybiAiUl9QUEM2NF9SRUwzMiIgOwog
IGNhc2UgMjcgOiByZXR1cm4gIlJfUFBDNjRfUExUMzIiIDsKICBjYXNlIDI4IDogcmV0dXJuICJS
X1BQQzY0X1BMVFJFTDMyIiA7CiAgY2FzZSAyOSA6IHJldHVybiAiUl9QUEM2NF9QTFQxNl9MTyIg
OwogIGNhc2UgMzAgOiByZXR1cm4gIlJfUFBDNjRfUExUMTZfSEkiIDsKICBjYXNlIDMxIDogcmV0
dXJuICJSX1BQQzY0X1BMVDE2X0hBIiA7CgogIGNhc2UgMzMgOiByZXR1cm4gIlJfUFBDNjRfU0VD
VE9GRiIgOwogIGNhc2UgMzQgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9GRl9MTyIgOwogIGNhc2Ug
MzUgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9GRl9ISSIgOwogIGNhc2UgMzYgOiByZXR1cm4gIlJf
UFBDNjRfU0VDVE9GRl9IQSIgOwogIGNhc2UgMzcgOiByZXR1cm4gIlJfUFBDNjRfUkVMMzAiIDsK
ICBjYXNlIDM4IDogcmV0dXJuICJSX1BQQzY0X0FERFI2NCIgOwogIGNhc2UgMzkgOiByZXR1cm4g
IlJfUFBDNjRfQUREUjE2X0hJR0hFUiIgOwogIGNhc2UgNDAgOiByZXR1cm4gIlJfUFBDNjRfQURE
UjE2X0hJR0hFUkEiIDsKICBjYXNlIDQxIDogcmV0dXJuICJSX1BQQzY0X0FERFIxNl9ISUdIRVNU
IiA7CiAgY2FzZSA0MiA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfSElHSEVTVEEiIDsKICBjYXNl
IDQzIDogcmV0dXJuICJSX1BQQzY0X1VBRERSNjQiIDsKICBjYXNlIDQ0IDogcmV0dXJuICJSX1BQ
QzY0X1JFTDY0IiA7CiAgY2FzZSA0NSA6IHJldHVybiAiUl9QUEM2NF9QTFQ2NCIgOwogIGNhc2Ug
NDYgOiByZXR1cm4gIlJfUFBDNjRfUExUUkVMNjQiIDsKICBjYXNlIDQ3IDogcmV0dXJuICJSX1BQ
QzY0X1RPQzE2IiA7CiAgY2FzZSA0OCA6IHJldHVybiAiUl9QUEM2NF9UT0MxNl9MTyIgOwogIGNh
c2UgNDkgOiByZXR1cm4gIlJfUFBDNjRfVE9DMTZfSEkiIDsKICBjYXNlIDUwIDogcmV0dXJuICJS
X1BQQzY0X1RPQzE2X0hBIiA7CiAgY2FzZSA1MSA6IHJldHVybiAiUl9QUEM2NF9UT0MiIDsKICBj
YXNlIDUyIDogcmV0dXJuICJSX1BQQzY0X1BMVEdPVDE2IiA7CiAgY2FzZSA1MyA6IHJldHVybiAi
Ul9QUEM2NF9QTFRHT1QxNl9MTyIgOwogIGNhc2UgNTQgOiByZXR1cm4gIlJfUFBDNjRfUExUR09U
MTZfSEkiIDsKICBjYXNlIDU1IDogcmV0dXJuICJSX1BQQzY0X1BMVEdPVDE2X0hBIiA7CgoKCiAg
Y2FzZSA1NiA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfRFMiIDsKICBjYXNlIDU3IDogcmV0dXJu
ICJSX1BQQzY0X0FERFIxNl9MT19EUyIgOwogIGNhc2UgNTggOiByZXR1cm4gIlJfUFBDNjRfR09U
MTZfRFMiIDsKICBjYXNlIDU5IDogcmV0dXJuICJSX1BQQzY0X0dPVDE2X0xPX0RTIiA7CiAgY2Fz
ZSA2MCA6IHJldHVybiAiUl9QUEM2NF9QTFQxNl9MT19EUyIgOwogIGNhc2UgNjEgOiByZXR1cm4g
IlJfUFBDNjRfU0VDVE9GRl9EUyIgOwogIGNhc2UgNjIgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9G
Rl9MT19EUyIgOwogIGNhc2UgNjMgOiByZXR1cm4gIlJfUFBDNjRfVE9DMTZfRFMiIDsKICBjYXNl
IDY0IDogcmV0dXJuICJSX1BQQzY0X1RPQzE2X0xPX0RTIiA7CiAgY2FzZSA2NSA6IHJldHVybiAi
Ul9QUEM2NF9QTFRHT1QxNl9EUyIgOwogIGNhc2UgNjYgOiByZXR1cm4gIlJfUFBDNjRfUExUR09U
MTZfTE9fRFMiIDsKCgogIGNhc2UgNjcgOiByZXR1cm4gIlJfUFBDNjRfVExTIiA7CiAgY2FzZSA2
OCA6IHJldHVybiAiUl9QUEM2NF9EVFBNT0Q2NCIgOwogIGNhc2UgNjkgOiByZXR1cm4gIlJfUFBD
NjRfVFBSRUwxNiIgOwogIGNhc2UgNzAgOiByZXR1cm4gIlJfUFBDNjRfVFBSRUwxNl9MTyIgOwog
IGNhc2UgNzEgOiByZXR1cm4gIlJfUFBDNjRfVFBSRUwxNl9ISSIgOwogIGNhc2UgNzIgOiByZXR1
cm4gIlJfUFBDNjRfVFBSRUwxNl9IQSIgOwogIGNhc2UgNzMgOiByZXR1cm4gIlJfUFBDNjRfVFBS
RUw2NCIgOwogIGNhc2UgNzQgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTYiIDsKICBjYXNlIDc1
IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDE2X0xPIiA7CiAgY2FzZSA3NiA6IHJldHVybiAiUl9Q
UEM2NF9EVFBSRUwxNl9ISSIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZf
SEEiIDsKICBjYXNlIDc4IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDY0IiA7CiAgY2FzZSA3OSA6
IHJldHVybiAiUl9QUEM2NF9HT1RfVExTR0QxNiIgOwogIGNhc2UgODAgOiByZXR1cm4gIlJfUFBD
NjRfR09UX1RMU0dEMTZfTE8iIDsKICBjYXNlIDgxIDogcmV0dXJuICJSX1BQQzY0X0dPVF9UTFNH
RDE2X0hJIiA7CiAgY2FzZSA4MiA6IHJldHVybiAiUl9QUEM2NF9HT1RfVExTR0QxNl9IQSIgOwog
IGNhc2UgODMgOiByZXR1cm4gIlJfUFBDNjRfR09UX1RMU0xEMTYiIDsKICBjYXNlIDg0IDogcmV0
dXJuICJSX1BQQzY0X0dPVF9UTFNMRDE2X0xPIiA7CiAgY2FzZSA4NSA6IHJldHVybiAiUl9QUEM2
NF9HT1RfVExTTEQxNl9ISSIgOwogIGNhc2UgODYgOiByZXR1cm4gIlJfUFBDNjRfR09UX1RMU0xE
MTZfSEEiIDsKICBjYXNlIDg3IDogcmV0dXJuICJSX1BQQzY0X0dPVF9UUFJFTDE2X0RTIiA7CiAg
Y2FzZSA4OCA6IHJldHVybiAiUl9QUEM2NF9HT1RfVFBSRUwxNl9MT19EUyIgOwogIGNhc2UgODkg
OiByZXR1cm4gIlJfUFBDNjRfR09UX1RQUkVMMTZfSEkiIDsKICBjYXNlIDkwIDogcmV0dXJuICJS
X1BQQzY0X0dPVF9UUFJFTDE2X0hBIiA7CiAgY2FzZSA5MSA6IHJldHVybiAiUl9QUEM2NF9HT1Rf
RFRQUkVMMTZfRFMiIDsKICBjYXNlIDkyIDogcmV0dXJuICJSX1BQQzY0X0dPVF9EVFBSRUwxNl9M
T19EUyIgOwogIGNhc2UgOTMgOiByZXR1cm4gIlJfUFBDNjRfR09UX0RUUFJFTDE2X0hJIiA7CiAg
Y2FzZSA5NCA6IHJldHVybiAiUl9QUEM2NF9HT1RfRFRQUkVMMTZfSEEiIDsKICBjYXNlIDk1IDog
cmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfRFMiIDsKICBjYXNlIDk2IDogcmV0dXJuICJSX1BQQzY0
X1RQUkVMMTZfTE9fRFMiIDsKICBjYXNlIDk3IDogcmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElH
SEVSIiA7CiAgY2FzZSA5OCA6IHJldHVybiAiUl9QUEM2NF9UUFJFTDE2X0hJR0hFUkEiIDsKICBj
YXNlIDk5IDogcmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElHSEVTVCIgOwogIGNhc2UgMTAwIDog
cmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElHSEVTVEEiIDsKICBjYXNlIDEwMSA6IHJldHVybiAi
Ul9QUEM2NF9EVFBSRUwxNl9EUyIgOwogIGNhc2UgMTAyIDogcmV0dXJuICJSX1BQQzY0X0RUUFJF
TDE2X0xPX0RTIiA7CiAgY2FzZSAxMDMgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZfSElHSEVS
IiA7CiAgY2FzZSAxMDQgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZfSElHSEVSQSIgOwogIGNh
c2UgMTA1IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDE2X0hJR0hFU1QiIDsKICBjYXNlIDEwNiA6
IHJldHVybiAiUl9QUEM2NF9EVFBSRUwxNl9ISUdIRVNUQSIgOwoKCiAgY2FzZSAyNTMgOiByZXR1
cm4gIlJfUFBDNjRfR05VX1ZUSU5IRVJJVCIgOwogIGNhc2UgMjU0IDogcmV0dXJuICJSX1BQQzY0
X0dOVV9WVEVOVFJZIiA7CgpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDgzICJy
ZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9zMzkwLmgiIDEKIyAzOCAiLi4vaW5jbHVk
ZS9lbGYvczM5MC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zMzkwX3JlbG9jX3R5cGUgKHVu
c2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zMzkwX3JlbG9jX3R5
cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICAgIGNh
c2UgMCA6IHJldHVybiAiUl8zOTBfTk9ORSIgOwogICAgY2FzZSAxIDogcmV0dXJuICJSXzM5MF84
IiA7CiAgICBjYXNlIDIgOiByZXR1cm4gIlJfMzkwXzEyIiA7CiAgICBjYXNlIDMgOiByZXR1cm4g
IlJfMzkwXzE2IiA7CiAgICBjYXNlIDQgOiByZXR1cm4gIlJfMzkwXzMyIiA7CiAgICBjYXNlIDUg
OiByZXR1cm4gIlJfMzkwX1BDMzIiIDsKICAgIGNhc2UgNiA6IHJldHVybiAiUl8zOTBfR09UMTIi
IDsKICAgIGNhc2UgNyA6IHJldHVybiAiUl8zOTBfR09UMzIiIDsKICAgIGNhc2UgOCA6IHJldHVy
biAiUl8zOTBfUExUMzIiIDsKICAgIGNhc2UgOSA6IHJldHVybiAiUl8zOTBfQ09QWSIgOwogICAg
Y2FzZSAxMCA6IHJldHVybiAiUl8zOTBfR0xPQl9EQVQiIDsKICAgIGNhc2UgMTEgOiByZXR1cm4g
IlJfMzkwX0pNUF9TTE9UIiA7CiAgICBjYXNlIDEyIDogcmV0dXJuICJSXzM5MF9SRUxBVElWRSIg
OwogICAgY2FzZSAxMyA6IHJldHVybiAiUl8zOTBfR09UT0ZGMzIiIDsKICAgIGNhc2UgMTQgOiBy
ZXR1cm4gIlJfMzkwX0dPVFBDIiA7CiAgICBjYXNlIDE1IDogcmV0dXJuICJSXzM5MF9HT1QxNiIg
OwogICAgY2FzZSAxNiA6IHJldHVybiAiUl8zOTBfUEMxNiIgOwogICAgY2FzZSAxNyA6IHJldHVy
biAiUl8zOTBfUEMxNkRCTCIgOwogICAgY2FzZSAxOCA6IHJldHVybiAiUl8zOTBfUExUMTZEQkwi
IDsKICAgIGNhc2UgMTkgOiByZXR1cm4gIlJfMzkwX1BDMzJEQkwiIDsKICAgIGNhc2UgMjAgOiBy
ZXR1cm4gIlJfMzkwX1BMVDMyREJMIiA7CiAgICBjYXNlIDIxIDogcmV0dXJuICJSXzM5MF9HT1RQ
Q0RCTCIgOwogICAgY2FzZSAyMiA6IHJldHVybiAiUl8zOTBfNjQiIDsKICAgIGNhc2UgMjMgOiBy
ZXR1cm4gIlJfMzkwX1BDNjQiIDsKICAgIGNhc2UgMjQgOiByZXR1cm4gIlJfMzkwX0dPVDY0IiA7
CiAgICBjYXNlIDI1IDogcmV0dXJuICJSXzM5MF9QTFQ2NCIgOwogICAgY2FzZSAyNiA6IHJldHVy
biAiUl8zOTBfR09URU5UIiA7CiAgICBjYXNlIDI3IDogcmV0dXJuICJSXzM5MF9HT1RPRkYxNiIg
OwogICAgY2FzZSAyOCA6IHJldHVybiAiUl8zOTBfR09UT0ZGNjQiIDsKICAgIGNhc2UgMjkgOiBy
ZXR1cm4gIlJfMzkwX0dPVFBMVDEyIiA7CiAgICBjYXNlIDMwIDogcmV0dXJuICJSXzM5MF9HT1RQ
TFQxNiIgOwogICAgY2FzZSAzMSA6IHJldHVybiAiUl8zOTBfR09UUExUMzIiIDsKICAgIGNhc2Ug
MzIgOiByZXR1cm4gIlJfMzkwX0dPVFBMVDY0IiA7CiAgICBjYXNlIDMzIDogcmV0dXJuICJSXzM5
MF9HT1RQTFRFTlQiIDsKICAgIGNhc2UgMzQgOiByZXR1cm4gIlJfMzkwX1BMVE9GRjE2IiA7CiAg
ICBjYXNlIDM1IDogcmV0dXJuICJSXzM5MF9QTFRPRkYzMiIgOwogICAgY2FzZSAzNiA6IHJldHVy
biAiUl8zOTBfUExUT0ZGNjQiIDsKICAgIGNhc2UgMzcgOiByZXR1cm4gIlJfMzkwX1RMU19MT0FE
IiA7CiAgICBjYXNlIDM4IDogcmV0dXJuICJSXzM5MF9UTFNfR0RDQUxMIiA7CgogICAgY2FzZSAz
OSA6IHJldHVybiAiUl8zOTBfVExTX0xEQ0FMTCIgOwoKICAgIGNhc2UgNDAgOiByZXR1cm4gIlJf
MzkwX1RMU19HRDMyIiA7CgogICAgY2FzZSA0MSA6IHJldHVybiAiUl8zOTBfVExTX0dENjQiIDsK
CiAgICBjYXNlIDQyIDogcmV0dXJuICJSXzM5MF9UTFNfR09USUUxMiIgOwoKICAgIGNhc2UgNDMg
OiByZXR1cm4gIlJfMzkwX1RMU19HT1RJRTMyIiA7CgogICAgY2FzZSA0NCA6IHJldHVybiAiUl8z
OTBfVExTX0dPVElFNjQiIDsKCiAgICBjYXNlIDQ1IDogcmV0dXJuICJSXzM5MF9UTFNfTERNMzIi
IDsKCiAgICBjYXNlIDQ2IDogcmV0dXJuICJSXzM5MF9UTFNfTERNNjQiIDsKCiAgICBjYXNlIDQ3
IDogcmV0dXJuICJSXzM5MF9UTFNfSUUzMiIgOwoKICAgIGNhc2UgNDggOiByZXR1cm4gIlJfMzkw
X1RMU19JRTY0IiA7CgogICAgY2FzZSA0OSA6IHJldHVybiAiUl8zOTBfVExTX0lFRU5UIiA7Cgog
ICAgY2FzZSA1MCA6IHJldHVybiAiUl8zOTBfVExTX0xFMzIiIDsKCiAgICBjYXNlIDUxIDogcmV0
dXJuICJSXzM5MF9UTFNfTEU2NCIgOwoKICAgIGNhc2UgNTIgOiByZXR1cm4gIlJfMzkwX1RMU19M
RE8zMiIgOwoKICAgIGNhc2UgNTMgOiByZXR1cm4gIlJfMzkwX1RMU19MRE82NCIgOwoKICAgIGNh
c2UgNTQgOiByZXR1cm4gIlJfMzkwX1RMU19EVFBNT0QiIDsKICAgIGNhc2UgNTUgOiByZXR1cm4g
IlJfMzkwX1RMU19EVFBPRkYiIDsKICAgIGNhc2UgNTYgOiByZXR1cm4gIlJfMzkwX1RMU19UUE9G
RiIgOwoKCiAgICBjYXNlIDI1MCA6IHJldHVybiAiUl8zOTBfR05VX1ZUSU5IRVJJVCIgOwogICAg
Y2FzZSAyNTEgOiByZXR1cm4gIlJfMzkwX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODQgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3No
LmgiIDEKIyA4NyAiLi4vaW5jbHVkZS9lbGYvc2guaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZf
c2hfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICog
ZWxmX3NoX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfU0hfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVy
biAiUl9TSF9ESVIzMiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9TSF9SRUwzMiIgOwogIGNhc2Ug
MyA6IHJldHVybiAiUl9TSF9ESVI4V1BOIiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX1NIX0lORDEy
VyIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9TSF9ESVI4V1BMIiA7CiAgY2FzZSA2IDogcmV0dXJu
ICJSX1NIX0RJUjhXUFoiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfU0hfRElSOEJQIiA7CiAgY2Fz
ZSA4IDogcmV0dXJuICJSX1NIX0RJUjhXIiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX1NIX0RJUjhM
IiA7CiAKIAogIGNhc2UgMjUgOiByZXR1cm4gIlJfU0hfU1dJVENIMTYiIDsKICBjYXNlIDI2IDog
cmV0dXJuICJSX1NIX1NXSVRDSDMyIiA7CiAgY2FzZSAyNyA6IHJldHVybiAiUl9TSF9VU0VTIiA7
CiAgY2FzZSAyOCA6IHJldHVybiAiUl9TSF9DT1VOVCIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJf
U0hfQUxJR04iIDsKICBjYXNlIDMwIDogcmV0dXJuICJSX1NIX0NPREUiIDsKICBjYXNlIDMxIDog
cmV0dXJuICJSX1NIX0RBVEEiIDsKICBjYXNlIDMyIDogcmV0dXJuICJSX1NIX0xBQkVMIiA7CiAg
Y2FzZSAzMyA6IHJldHVybiAiUl9TSF9TV0lUQ0g4IiA7CiAgY2FzZSAzNCA6IHJldHVybiAiUl9T
SF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAzNSA6IHJldHVybiAiUl9TSF9HTlVfVlRFTlRSWSIg
OwogIGNhc2UgMzYgOiByZXR1cm4gIlJfU0hfTE9PUF9TVEFSVCIgOwogIGNhc2UgMzcgOiByZXR1
cm4gIlJfU0hfTE9PUF9FTkQiIDsKIAogCiAgY2FzZSA0NSA6IHJldHVybiAiUl9TSF9ESVI1VSIg
OwogIGNhc2UgNDYgOiByZXR1cm4gIlJfU0hfRElSNlUiIDsKICBjYXNlIDQ3IDogcmV0dXJuICJS
X1NIX0RJUjZTIiA7CiAgY2FzZSA0OCA6IHJldHVybiAiUl9TSF9ESVIxMFMiIDsKICBjYXNlIDQ5
IDogcmV0dXJuICJSX1NIX0RJUjEwU1ciIDsKICBjYXNlIDUwIDogcmV0dXJuICJSX1NIX0RJUjEw
U0wiIDsKICBjYXNlIDUxIDogcmV0dXJuICJSX1NIX0RJUjEwU1EiIDsKIAogCiAgY2FzZSAxNDQg
OiByZXR1cm4gIlJfU0hfVExTX0dEXzMyIiA7CiAgY2FzZSAxNDUgOiByZXR1cm4gIlJfU0hfVExT
X0xEXzMyIiA7CiAgY2FzZSAxNDYgOiByZXR1cm4gIlJfU0hfVExTX0xET18zMiIgOwogIGNhc2Ug
MTQ3IDogcmV0dXJuICJSX1NIX1RMU19JRV8zMiIgOwogIGNhc2UgMTQ4IDogcmV0dXJuICJSX1NI
X1RMU19MRV8zMiIgOwogIGNhc2UgMTQ5IDogcmV0dXJuICJSX1NIX1RMU19EVFBNT0QzMiIgOwog
IGNhc2UgMTUwIDogcmV0dXJuICJSX1NIX1RMU19EVFBPRkYzMiIgOwogIGNhc2UgMTUxIDogcmV0
dXJuICJSX1NIX1RMU19UUE9GRjMyIiA7CiAKIAogIGNhc2UgMTYwIDogcmV0dXJuICJSX1NIX0dP
VDMyIiA7CiAgY2FzZSAxNjEgOiByZXR1cm4gIlJfU0hfUExUMzIiIDsKICBjYXNlIDE2MiA6IHJl
dHVybiAiUl9TSF9DT1BZIiA7CiAgY2FzZSAxNjMgOiByZXR1cm4gIlJfU0hfR0xPQl9EQVQiIDsK
ICBjYXNlIDE2NCA6IHJldHVybiAiUl9TSF9KTVBfU0xPVCIgOwogIGNhc2UgMTY1IDogcmV0dXJu
ICJSX1NIX1JFTEFUSVZFIiA7CiAgY2FzZSAxNjYgOiByZXR1cm4gIlJfU0hfR09UT0ZGIiA7CiAg
Y2FzZSAxNjcgOiByZXR1cm4gIlJfU0hfR09UUEMiIDsKICBjYXNlIDE2OCA6IHJldHVybiAiUl9T
SF9HT1RQTFQzMiIgOwogIGNhc2UgMTY5IDogcmV0dXJuICJSX1NIX0dPVF9MT1cxNiIgOwogIGNh
c2UgMTcwIDogcmV0dXJuICJSX1NIX0dPVF9NRURMT1cxNiIgOwogIGNhc2UgMTcxIDogcmV0dXJu
ICJSX1NIX0dPVF9NRURISTE2IiA7CiAgY2FzZSAxNzIgOiByZXR1cm4gIlJfU0hfR09UX0hJMTYi
IDsKICBjYXNlIDE3MyA6IHJldHVybiAiUl9TSF9HT1RQTFRfTE9XMTYiIDsKICBjYXNlIDE3NCA6
IHJldHVybiAiUl9TSF9HT1RQTFRfTUVETE9XMTYiIDsKICBjYXNlIDE3NSA6IHJldHVybiAiUl9T
SF9HT1RQTFRfTUVESEkxNiIgOwogIGNhc2UgMTc2IDogcmV0dXJuICJSX1NIX0dPVFBMVF9ISTE2
IiA7CiAgY2FzZSAxNzcgOiByZXR1cm4gIlJfU0hfUExUX0xPVzE2IiA7CiAgY2FzZSAxNzggOiBy
ZXR1cm4gIlJfU0hfUExUX01FRExPVzE2IiA7CiAgY2FzZSAxNzkgOiByZXR1cm4gIlJfU0hfUExU
X01FREhJMTYiIDsKICBjYXNlIDE4MCA6IHJldHVybiAiUl9TSF9QTFRfSEkxNiIgOwogIGNhc2Ug
MTgxIDogcmV0dXJuICJSX1NIX0dPVE9GRl9MT1cxNiIgOwogIGNhc2UgMTgyIDogcmV0dXJuICJS
X1NIX0dPVE9GRl9NRURMT1cxNiIgOwogIGNhc2UgMTgzIDogcmV0dXJuICJSX1NIX0dPVE9GRl9N
RURISTE2IiA7CiAgY2FzZSAxODQgOiByZXR1cm4gIlJfU0hfR09UT0ZGX0hJMTYiIDsKICBjYXNl
IDE4NSA6IHJldHVybiAiUl9TSF9HT1RQQ19MT1cxNiIgOwogIGNhc2UgMTg2IDogcmV0dXJuICJS
X1NIX0dPVFBDX01FRExPVzE2IiA7CiAgY2FzZSAxODcgOiByZXR1cm4gIlJfU0hfR09UUENfTUVE
SEkxNiIgOwogIGNhc2UgMTg4IDogcmV0dXJuICJSX1NIX0dPVFBDX0hJMTYiIDsKICBjYXNlIDE4
OSA6IHJldHVybiAiUl9TSF9HT1QxMEJZNCIgOwogIGNhc2UgMTkwIDogcmV0dXJuICJSX1NIX0dP
VFBMVDEwQlk0IiA7CiAgY2FzZSAxOTEgOiByZXR1cm4gIlJfU0hfR09UMTBCWTgiIDsKICBjYXNl
IDE5MiA6IHJldHVybiAiUl9TSF9HT1RQTFQxMEJZOCIgOwogIGNhc2UgMTkzIDogcmV0dXJuICJS
X1NIX0NPUFk2NCIgOwogIGNhc2UgMTk0IDogcmV0dXJuICJSX1NIX0dMT0JfREFUNjQiIDsKICBj
YXNlIDE5NSA6IHJldHVybiAiUl9TSF9KTVBfU0xPVDY0IiA7CiAgY2FzZSAxOTYgOiByZXR1cm4g
IlJfU0hfUkVMQVRJVkU2NCIgOwogCiAKICBjYXNlIDI0MiA6IHJldHVybiAiUl9TSF9TSE1FRElB
X0NPREUiIDsKICBjYXNlIDI0MyA6IHJldHVybiAiUl9TSF9QVF8xNiIgOwogIGNhc2UgMjQ0IDog
cmV0dXJuICJSX1NIX0lNTVMxNiIgOwogIGNhc2UgMjQ1IDogcmV0dXJuICJSX1NIX0lNTVUxNiIg
OwogIGNhc2UgMjQ2IDogcmV0dXJuICJSX1NIX0lNTV9MT1cxNiIgOwogIGNhc2UgMjQ3IDogcmV0
dXJuICJSX1NIX0lNTV9MT1cxNl9QQ1JFTCIgOwogIGNhc2UgMjQ4IDogcmV0dXJuICJSX1NIX0lN
TV9NRURMT1cxNiIgOwogIGNhc2UgMjQ5IDogcmV0dXJuICJSX1NIX0lNTV9NRURMT1cxNl9QQ1JF
TCIgOwogIGNhc2UgMjUwIDogcmV0dXJuICJSX1NIX0lNTV9NRURISTE2IiA7CiAgY2FzZSAyNTEg
OiByZXR1cm4gIlJfU0hfSU1NX01FREhJMTZfUENSRUwiIDsKICBjYXNlIDI1MiA6IHJldHVybiAi
Ul9TSF9JTU1fSEkxNiIgOwogIGNhc2UgMjUzIDogcmV0dXJuICJSX1NIX0lNTV9ISTE2X1BDUkVM
IiA7CiAgY2FzZSAyNTQgOiByZXR1cm4gIlJfU0hfNjQiIDsKICBjYXNlIDI1NSA6IHJldHVybiAi
Ul9TSF82NF9QQ1JFTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg1ICJy
ZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9zcGFyYy5oIiAxCiMgNjIgIi4uL2luY2x1
ZGUvZWxmL3NwYXJjLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX3NwYXJjX3JlbG9jX3R5cGUg
KHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zcGFyY19yZWxv
Y190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAg
Y2FzZSAwIDogcmV0dXJuICJSX1NQQVJDX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfU1BB
UkNfOCIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9TUEFSQ18xNiIgOwogIGNhc2UgMyA6IHJldHVy
biAiUl9TUEFSQ18zMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9TUEFSQ19ESVNQOCIgOwogIGNh
c2UgNSA6IHJldHVybiAiUl9TUEFSQ19ESVNQMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfU1BB
UkNfRElTUDMyIiA7CiAgY2FzZSA3IDogcmV0dXJuICJSX1NQQVJDX1dESVNQMzAiIDsKICBjYXNl
IDggOiByZXR1cm4gIlJfU1BBUkNfV0RJU1AyMiIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9TUEFS
Q19ISTIyIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9TUEFSQ18yMiIgOwogIGNhc2UgMTEgOiBy
ZXR1cm4gIlJfU1BBUkNfMTMiIDsKICBjYXNlIDEyIDogcmV0dXJuICJSX1NQQVJDX0xPMTAiIDsK
ICBjYXNlIDEzIDogcmV0dXJuICJSX1NQQVJDX0dPVDEwIiA7CiAgY2FzZSAxNCA6IHJldHVybiAi
Ul9TUEFSQ19HT1QxMyIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfU1BBUkNfR09UMjIiIDsKICBj
YXNlIDE2IDogcmV0dXJuICJSX1NQQVJDX1BDMTAiIDsKICBjYXNlIDE3IDogcmV0dXJuICJSX1NQ
QVJDX1BDMjIiIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX1NQQVJDX1dQTFQzMCIgOwogIGNhc2Ug
MTkgOiByZXR1cm4gIlJfU1BBUkNfQ09QWSIgOwogIGNhc2UgMjAgOiByZXR1cm4gIlJfU1BBUkNf
R0xPQl9EQVQiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX1NQQVJDX0pNUF9TTE9UIiA7CiAgY2Fz
ZSAyMiA6IHJldHVybiAiUl9TUEFSQ19SRUxBVElWRSIgOwogIGNhc2UgMjMgOiByZXR1cm4gIlJf
U1BBUkNfVUEzMiIgOwoKCgoKCgogIGNhc2UgMjQgOiByZXR1cm4gIlJfU1BBUkNfUExUMzIiIDsK
ICBjYXNlIDI1IDogcmV0dXJuICJSX1NQQVJDX0hJUExUMjIiIDsKICBjYXNlIDI2IDogcmV0dXJu
ICJSX1NQQVJDX0xPUExUMTAiIDsKICBjYXNlIDI3IDogcmV0dXJuICJSX1NQQVJDX1BDUExUMzIi
IDsKICBjYXNlIDI4IDogcmV0dXJuICJSX1NQQVJDX1BDUExUMjIiIDsKICBjYXNlIDI5IDogcmV0
dXJuICJSX1NQQVJDX1BDUExUMTAiIDsKCgoKICBjYXNlIDMwIDogcmV0dXJuICJSX1NQQVJDXzEw
IiA7CiAgY2FzZSAzMSA6IHJldHVybiAiUl9TUEFSQ18xMSIgOwogIGNhc2UgMzIgOiByZXR1cm4g
IlJfU1BBUkNfNjQiIDsKICBjYXNlIDMzIDogcmV0dXJuICJSX1NQQVJDX09MTzEwIiA7CiAgY2Fz
ZSAzNCA6IHJldHVybiAiUl9TUEFSQ19ISDIyIiA7CiAgY2FzZSAzNSA6IHJldHVybiAiUl9TUEFS
Q19ITTEwIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9TUEFSQ19MTTIyIiA7CiAgY2FzZSAzNyA6
IHJldHVybiAiUl9TUEFSQ19QQ19ISDIyIiA7CiAgY2FzZSAzOCA6IHJldHVybiAiUl9TUEFSQ19Q
Q19ITTEwIiA7CiAgY2FzZSAzOSA6IHJldHVybiAiUl9TUEFSQ19QQ19MTTIyIiA7CiAgY2FzZSA0
MCA6IHJldHVybiAiUl9TUEFSQ19XRElTUDE2IiA7CiAgY2FzZSA0MSA6IHJldHVybiAiUl9TUEFS
Q19XRElTUDE5IiA7CiAgY2FzZSA0MiA6IHJldHVybiAiUl9TUEFSQ19VTlVTRURfNDIiIDsKICBj
YXNlIDQzIDogcmV0dXJuICJSX1NQQVJDXzciIDsKICBjYXNlIDQ0IDogcmV0dXJuICJSX1NQQVJD
XzUiIDsKICBjYXNlIDQ1IDogcmV0dXJuICJSX1NQQVJDXzYiIDsKICBjYXNlIDQ2IDogcmV0dXJu
ICJSX1NQQVJDX0RJU1A2NCIgOwogIGNhc2UgNDcgOiByZXR1cm4gIlJfU1BBUkNfUExUNjQiIDsK
ICBjYXNlIDQ4IDogcmV0dXJuICJSX1NQQVJDX0hJWDIyIiA7CiAgY2FzZSA0OSA6IHJldHVybiAi
Ul9TUEFSQ19MT1gxMCIgOwogIGNhc2UgNTAgOiByZXR1cm4gIlJfU1BBUkNfSDQ0IiA7CiAgY2Fz
ZSA1MSA6IHJldHVybiAiUl9TUEFSQ19NNDQiIDsKICBjYXNlIDUyIDogcmV0dXJuICJSX1NQQVJD
X0w0NCIgOwogIGNhc2UgNTMgOiByZXR1cm4gIlJfU1BBUkNfUkVHSVNURVIiIDsKICBjYXNlIDU0
IDogcmV0dXJuICJSX1NQQVJDX1VBNjQiIDsKICBjYXNlIDU1IDogcmV0dXJuICJSX1NQQVJDX1VB
MTYiIDsKCiAgY2FzZSA1NiA6IHJldHVybiAiUl9TUEFSQ19UTFNfR0RfSEkyMiIgOwogIGNhc2Ug
NTcgOiByZXR1cm4gIlJfU1BBUkNfVExTX0dEX0xPMTAiIDsKICBjYXNlIDU4IDogcmV0dXJuICJS
X1NQQVJDX1RMU19HRF9BREQiIDsKICBjYXNlIDU5IDogcmV0dXJuICJSX1NQQVJDX1RMU19HRF9D
QUxMIiA7CiAgY2FzZSA2MCA6IHJldHVybiAiUl9TUEFSQ19UTFNfTERNX0hJMjIiIDsKICBjYXNl
IDYxIDogcmV0dXJuICJSX1NQQVJDX1RMU19MRE1fTE8xMCIgOwogIGNhc2UgNjIgOiByZXR1cm4g
IlJfU1BBUkNfVExTX0xETV9BREQiIDsKICBjYXNlIDYzIDogcmV0dXJuICJSX1NQQVJDX1RMU19M
RE1fQ0FMTCIgOwogIGNhc2UgNjQgOiByZXR1cm4gIlJfU1BBUkNfVExTX0xET19ISVgyMiIgOwog
IGNhc2UgNjUgOiByZXR1cm4gIlJfU1BBUkNfVExTX0xET19MT1gxMCIgOwogIGNhc2UgNjYgOiBy
ZXR1cm4gIlJfU1BBUkNfVExTX0xET19BREQiIDsKICBjYXNlIDY3IDogcmV0dXJuICJSX1NQQVJD
X1RMU19JRV9ISTIyIiA7CiAgY2FzZSA2OCA6IHJldHVybiAiUl9TUEFSQ19UTFNfSUVfTE8xMCIg
OwogIGNhc2UgNjkgOiByZXR1cm4gIlJfU1BBUkNfVExTX0lFX0xEIiA7CiAgY2FzZSA3MCA6IHJl
dHVybiAiUl9TUEFSQ19UTFNfSUVfTERYIiA7CiAgY2FzZSA3MSA6IHJldHVybiAiUl9TUEFSQ19U
TFNfSUVfQUREIiA7CiAgY2FzZSA3MiA6IHJldHVybiAiUl9TUEFSQ19UTFNfTEVfSElYMjIiIDsK
ICBjYXNlIDczIDogcmV0dXJuICJSX1NQQVJDX1RMU19MRV9MT1gxMCIgOwogIGNhc2UgNzQgOiBy
ZXR1cm4gIlJfU1BBUkNfVExTX0RUUE1PRDMyIiA7CiAgY2FzZSA3NSA6IHJldHVybiAiUl9TUEFS
Q19UTFNfRFRQTU9ENjQiIDsKICBjYXNlIDc2IDogcmV0dXJuICJSX1NQQVJDX1RMU19EVFBPRkYz
MiIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfU1BBUkNfVExTX0RUUE9GRjY0IiA7CiAgY2FzZSA3
OCA6IHJldHVybiAiUl9TUEFSQ19UTFNfVFBPRkYzMiIgOwogIGNhc2UgNzkgOiByZXR1cm4gIlJf
U1BBUkNfVExTX1RQT0ZGNjQiIDsKCiAKCiAgY2FzZSAyNTAgOiByZXR1cm4gIlJfU1BBUkNfR05V
X1ZUSU5IRVJJVCIgOwogIGNhc2UgMjUxIDogcmV0dXJuICJSX1NQQVJDX0dOVV9WVEVOVFJZIiA7
CiAgY2FzZSAyNTIgOiByZXR1cm4gIlJfU1BBUkNfUkVWMzIiIDsKCmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODYgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3Y4
NTAuaCIgMQojIDQ5ICIuLi9pbmNsdWRlL2VsZi92ODUwLmgiCnN0YXRpYyBjb25zdCBjaGFyICog
djg1MF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIg
KiB2ODUwX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICAgICBjYXNlIDAgOiByZXR1cm4gIlJfVjg1MF9OT05FIiA7CiAgICAgY2FzZSAx
IDogcmV0dXJuICJSX1Y4NTBfOV9QQ1JFTCIgOwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9WODUw
XzIyX1BDUkVMIiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSX1Y4NTBfSEkxNl9TIiA7CiAgICAg
Y2FzZSA0IDogcmV0dXJuICJSX1Y4NTBfSEkxNiIgOwogICAgIGNhc2UgNSA6IHJldHVybiAiUl9W
ODUwX0xPMTYiIDsKICAgICBjYXNlIDYgOiByZXR1cm4gIlJfVjg1MF8zMiIgOwogICAgIGNhc2Ug
NyA6IHJldHVybiAiUl9WODUwXzE2IiA7CiAgICAgY2FzZSA4IDogcmV0dXJuICJSX1Y4NTBfOCIg
OwogICAgIGNhc2UgOSA6IHJldHVybiAiUl9WODUwX1NEQV8xNl8xNl9PRkZTRVQiIDsKICAgICBj
YXNlIDEwIDogcmV0dXJuICJSX1Y4NTBfU0RBXzE1XzE2X09GRlNFVCIgOwogICAgIGNhc2UgMTEg
OiByZXR1cm4gIlJfVjg1MF9aREFfMTZfMTZfT0ZGU0VUIiA7CiAgICAgY2FzZSAxMiA6IHJldHVy
biAiUl9WODUwX1pEQV8xNV8xNl9PRkZTRVQiIDsKICAgICBjYXNlIDEzIDogcmV0dXJuICJSX1Y4
NTBfVERBXzZfOF9PRkZTRVQiIDsKICAgICBjYXNlIDE0IDogcmV0dXJuICJSX1Y4NTBfVERBXzdf
OF9PRkZTRVQiIDsKICAgICBjYXNlIDE1IDogcmV0dXJuICJSX1Y4NTBfVERBXzdfN19PRkZTRVQi
IDsKICAgICBjYXNlIDE2IDogcmV0dXJuICJSX1Y4NTBfVERBXzE2XzE2X09GRlNFVCIgOwogICAg
IGNhc2UgMTcgOiByZXR1cm4gIlJfVjg1MF9UREFfNF81X09GRlNFVCIgOwogICAgIGNhc2UgMTgg
OiByZXR1cm4gIlJfVjg1MF9UREFfNF80X09GRlNFVCIgOwogICAgIGNhc2UgMTkgOiByZXR1cm4g
IlJfVjg1MF9TREFfMTZfMTZfU1BMSVRfT0ZGU0VUIiA7CiAgICAgY2FzZSAyMCA6IHJldHVybiAi
Ul9WODUwX1pEQV8xNl8xNl9TUExJVF9PRkZTRVQiIDsKICAgICBjYXNlIDIxIDogcmV0dXJuICJS
X1Y4NTBfQ0FMTFRfNl83X09GRlNFVCIgOwogICAgIGNhc2UgMjIgOiByZXR1cm4gIlJfVjg1MF9D
QUxMVF8xNl8xNl9PRkZTRVQiIDsKICAgICBjYXNlIDIzIDogcmV0dXJuICJSX1Y4NTBfR05VX1ZU
SU5IRVJJVCIgOwogICAgIGNhc2UgMjQgOiByZXR1cm4gIlJfVjg1MF9HTlVfVlRFTlRSWSIgOwog
ICAgIGNhc2UgMjUgOiByZXR1cm4gIlJfVjg1MF9MT05HQ0FMTCIgOwogICAgIGNhc2UgMjYgOiBy
ZXR1cm4gIlJfVjg1MF9MT05HSlVNUCIgOwogICAgIGNhc2UgMjcgOiByZXR1cm4gIlJfVjg1MF9B
TElHTiIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg3ICJyZWFkZWxmLmMi
IDIKIyAxICIuLi9pbmNsdWRlL2VsZi92YXguaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi92YXgu
aCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfdmF4X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcg
cnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl92YXhfcmVsb2NfdHlwZSAocnR5cGUpIHVu
c2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVybiAi
Ul9WQVhfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9WQVhfMzIiIDsKICBjYXNlIDIgOiBy
ZXR1cm4gIlJfVkFYXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX1ZBWF84IiA7CiAgY2FzZSA0
IDogcmV0dXJuICJSX1ZBWF9QQzMyIiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX1ZBWF9QQzE2IiA7
CiAgY2FzZSA2IDogcmV0dXJuICJSX1ZBWF9QQzgiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfVkFY
X0dPVDMyIiA7CiAgY2FzZSAxMyA6IHJldHVybiAiUl9WQVhfUExUMzIiIDsKICBjYXNlIDE5IDog
cmV0dXJuICJSX1ZBWF9DT1BZIiA7CiAgY2FzZSAyMCA6IHJldHVybiAiUl9WQVhfR0xPQl9EQVQi
IDsKICBjYXNlIDIxIDogcmV0dXJuICJSX1ZBWF9KTVBfU0xPVCIgOwogIGNhc2UgMjIgOiByZXR1
cm4gIlJfVkFYX1JFTEFUSVZFIiA7CgogIGNhc2UgMjMgOiByZXR1cm4gIlJfVkFYX0dOVV9WVElO
SEVSSVQiIDsKICBjYXNlIDI0IDogcmV0dXJuICJSX1ZBWF9HTlVfVlRFTlRSWSIgOwpkZWZhdWx0
OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNs
dWRlL2VsZi94ODYtNjQuaCIgMQojIDI2ICIuLi9pbmNsdWRlL2VsZi94ODYtNjQuaCIKc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfeDg2XzY0X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUp
OyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl94ODZfNjRfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2ln
bmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogICAgIGNhc2UgMCA6IHJldHVybiAi
Ul9YODZfNjRfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAiUl9YODZfNjRfNjQiIDsKICAg
ICBjYXNlIDIgOiByZXR1cm4gIlJfWDg2XzY0X1BDMzIiIDsKICAgICBjYXNlIDMgOiByZXR1cm4g
IlJfWDg2XzY0X0dPVDMyIiA7CiAgICAgY2FzZSA0IDogcmV0dXJuICJSX1g4Nl82NF9QTFQzMiIg
OwogICAgIGNhc2UgNSA6IHJldHVybiAiUl9YODZfNjRfQ09QWSIgOwogICAgIGNhc2UgNiA6IHJl
dHVybiAiUl9YODZfNjRfR0xPQl9EQVQiIDsKICAgICBjYXNlIDcgOiByZXR1cm4gIlJfWDg2XzY0
X0pVTVBfU0xPVCIgOwogICAgIGNhc2UgOCA6IHJldHVybiAiUl9YODZfNjRfUkVMQVRJVkUiIDsK
ICAgICBjYXNlIDkgOiByZXR1cm4gIlJfWDg2XzY0X0dPVFBDUkVMIiA7CgogICAgIGNhc2UgMTAg
OiByZXR1cm4gIlJfWDg2XzY0XzMyIiA7CiAgICAgY2FzZSAxMSA6IHJldHVybiAiUl9YODZfNjRf
MzJTIiA7CiAgICAgY2FzZSAxMiA6IHJldHVybiAiUl9YODZfNjRfMTYiIDsKICAgICBjYXNlIDEz
IDogcmV0dXJuICJSX1g4Nl82NF9QQzE2IiA7CiAgICAgY2FzZSAxNCA6IHJldHVybiAiUl9YODZf
NjRfOCIgOwogICAgIGNhc2UgMTUgOiByZXR1cm4gIlJfWDg2XzY0X1BDOCIgOwogICAgIGNhc2Ug
MTYgOiByZXR1cm4gIlJfWDg2XzY0X0RUUE1PRDY0IiA7CiAgICAgY2FzZSAxNyA6IHJldHVybiAi
Ul9YODZfNjRfRFRQT0ZGNjQiIDsKICAgICBjYXNlIDE4IDogcmV0dXJuICJSX1g4Nl82NF9UUE9G
RjY0IiA7CiAgICAgY2FzZSAxOSA6IHJldHVybiAiUl9YODZfNjRfVExTR0QiIDsKICAgICBjYXNl
IDIwIDogcmV0dXJuICJSX1g4Nl82NF9UTFNMRCIgOwogICAgIGNhc2UgMjEgOiByZXR1cm4gIlJf
WDg2XzY0X0RUUE9GRjMyIiA7CiAgICAgY2FzZSAyMiA6IHJldHVybiAiUl9YODZfNjRfR09UVFBP
RkYiIDsKICAgICBjYXNlIDIzIDogcmV0dXJuICJSX1g4Nl82NF9UUE9GRjMyIiA7CiAgICAgY2Fz
ZSAyNTAgOiByZXR1cm4gIlJfWDg2XzY0X0dOVV9WVElOSEVSSVQiIDsKICAgICBjYXNlIDI1MSA6
IHJldHVybiAiUl9YODZfNjRfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAq
KTApOyB9IH0KIyA4OSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYveHN0b3JteTE2
LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYveHN0b3JteTE2LmgiCnN0YXRpYyBjb25zdCBjaGFy
ICogZWxmX3hzdG9ybXkxNl9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfeHN0b3JteTE2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBs
b25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfWFNUT1JN
WTE2X05PTkUiIDsKCiAgY2FzZSAxIDogcmV0dXJuICJSX1hTVE9STVkxNl8zMiIgOwogIGNhc2Ug
MiA6IHJldHVybiAiUl9YU1RPUk1ZMTZfMTYiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJfWFNUT1JN
WTE2XzgiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfWFNUT1JNWTE2X1BDMzIiIDsKICBjYXNlIDUg
OiByZXR1cm4gIlJfWFNUT1JNWTE2X1BDMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfWFNUT1JN
WTE2X1BDOCIgOwoKICBjYXNlIDcgOiByZXR1cm4gIlJfWFNUT1JNWTE2X1JFTF8xMiIgOwogIGNh
c2UgOCA6IHJldHVybiAiUl9YU1RPUk1ZMTZfMjQiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfWFNU
T1JNWTE2X0ZQVFIxNiIgOwoKICBjYXNlIDEwIDogcmV0dXJuICJSX1hTVE9STVkxNl9MTzE2IiA7
CiAgY2FzZSAxMSA6IHJldHVybiAiUl9YU1RPUk1ZMTZfSEkxNiIgOwogIGNhc2UgMTIgOiByZXR1
cm4gIlJfWFNUT1JNWTE2XzEyIiA7CgogIGNhc2UgMTI4IDogcmV0dXJuICJSX1hTVE9STVkxNl9H
TlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMjkgOiByZXR1cm4gIlJfWFNUT1JNWTE2X0dOVV9WVEVO
VFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgOTAgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL2lxMjAwMC5oIiAxCiMgMjYgIi4uL2luY2x1ZGUvZWxmL2lx
MjAwMC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9pcTIwMDBfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lxMjAwMF9yZWxvY190eXBl
IChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAw
IDogcmV0dXJuICJSX0lRMjAwMF9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0lRMjAwMF8x
NiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9JUTIwMDBfMzIiIDsKICBjYXNlIDMgOiByZXR1cm4g
IlJfSVEyMDAwXzI2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0lRMjAwMF9QQzE2IiA7CiAgY2Fz
ZSA1IDogcmV0dXJuICJSX0lRMjAwMF9ISTE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX0lRMjAw
MF9MTzE2IiA7CiAgY2FzZSA3IDogcmV0dXJuICJSX0lRMjAwMF9PRkZTRVRfMTYiIDsKICBjYXNl
IDggOiByZXR1cm4gIlJfSVEyMDAwX09GRlNFVF8yMSIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9J
UTIwMDBfVUhJMTYiIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0lRMjAwMF8zMl9ERUJVRyIgOwog
IGNhc2UgMjAwIDogcmV0dXJuICJSX0lRMjAwMF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAyMDEg
OiByZXR1cm4gIlJfSVEyMDAwX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQg
KikwKTsgfSB9CiMgOTEgInJlYWRlbGYuYyIgMgoKIyAxICIuL2J1Y29tbS5oIiAxCiMgMjggIi4v
YnVjb21tLmgiCiMgMSAiLi9jb25maWcuaCIgMQojIDI5ICIuL2J1Y29tbS5oIiAyCiMgMSAiLi4v
aW5jbHVkZS9iaW4tYnVncy5oIiAxCiMgMzAgIi4vYnVjb21tLmgiIDIKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDEw
NSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRhcmcu
aCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMzMgIi4vYnVjb21tLmgiIDIK
CgoKCgoKCiMgMSAiLi4vaW5jbHVkZS9mb3Blbi1zYW1lLmgiIDEKIyA0MSAiLi9idWNvbW0uaCIg
MgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZXJy
bm8uaCIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5j
bHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIg
MiAzCiMgMzggIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCAqX19lcnJu
b19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDM3ICIvdXNy
L2luY2x1ZGUvZXJybm8uaCIgMiAzCiMgNTUgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCmV4dGVy
biBjaGFyICpwcm9ncmFtX2ludm9jYXRpb25fbmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9y
dF9uYW1lOwoKCgoKIyA2OSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJy
b3JfdDsKIyA0NCAiLi9idWNvbW0uaCIgMgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwojIDE3
NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9l
bnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvaW5j
bHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAyIDMKIyAxODAgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMiAzCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
dHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNv
Y2tsZW5fdDsKIyAyNjAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2Vz
cyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKCgoKCmV4dGVybiBpbnQgZXVp
ZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKIyAyOTAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2Zm
X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwojIDMwMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNl
dCwgaW50IF9fd2hlbmNlKSA7CgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSA7CgoKCmV4
dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVz
KSA7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkKICAgICA7CmV4dGVybiBz
c2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24s
CiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgOwojIDM0MCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHByZWFkNjQgKGludCBfX2ZkLCB2b2lk
ICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0
X3QgX19vZmZzZXQpIDsKCgpleHRlcm4gc3NpemVfdCBwd3JpdGU2NCAoaW50IF9fZmQsIF9fY29u
c3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICBfX29m
ZjY0X3QgX19vZmZzZXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1sy
XSkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQg
YWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKIyAzNzEgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRz
KSA7CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1
ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgOwoKCgpleHRlcm4gaW50IHVzbGVlcCAo
X191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2b2lkKSA7
CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3du
ZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19m
ZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApIDsKCgoKCmV4dGVybiBpbnQgbGNo
b3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3Jv
dXApCiAgICAgOwoKCgoKZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsK
CgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSA7CiMgNDIzICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUp
IDsKCgoKCgpleHRlcm4gY2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUgKHZvaWQpIDsKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGludCBkdXAgKGlu
dCBfX2ZkKSA7CgoKZXh0ZXJuIGludCBkdXAyIChpbnQgX19mZCwgaW50IF9fZmQyKSA7CgoKZXh0
ZXJuIGNoYXIgKipfX2Vudmlyb247CgpleHRlcm4gY2hhciAqKmVudmlyb247CgoKCgoKZXh0ZXJu
IGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltd
LAogICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCBfX2VudnBbXSkgOwoKCgoKZXh0ZXJu
IGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19j
b25zdCBfX2VudnBbXSkKICAgICA7CgoKCgpleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAo
X19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRl
cm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywg
Li4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAq
X19jb25zdCBfX2FyZ3ZbXSkgOwoKCgoKZXh0ZXJuIGludCBleGVjbHAgKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgbmljZSAo
aW50IF9faW5jKSA7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25m
bmFtZS5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAg
ewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBV
VCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JV
RiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BD
X1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENf
UFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAg
ICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAg
ICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9Q
Q19BTExPQ19TSVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgKCiAgfTsKCgplbnVtCiAgewog
ICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAg
ICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFY
LAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FW
RURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hF
RFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBf
U0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZ
TkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVN
TE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0Vf
UEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpF
Q1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0Nf
QUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFf
T1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9T
Q19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwK
CiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19U
SU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoK
ICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NP
TExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9O
RVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1ND
X0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJ
TkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9S
VF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1ND
X1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJ
X0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxF
Q1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElP
ViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RH
UkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBf
U0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAg
ICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoK
ICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBf
U0NfVFRZX05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoK
ICAgIF9TQ19USFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAg
X1NDX1RIUkVBRF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoK
ICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9T
Q0hFRFVMSU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURf
UFJJT19QUk9URUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19O
UFJPQ0VTU09SU19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlT
X1BBR0VTLAoKICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAg
X1NDX1BBU1NfTUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENV
X1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAg
IF9TQ19YT1BFTl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFS
X1RFUk0sCgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hP
UEVOX1hQRzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAg
IF9TQ19DSEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAg
IF9TQ19JTlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBf
U0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9T
Q19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAg
IF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAg
ICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoK
CiAgICBfU0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dN
QVgsCgogICAgX1NDX05MX05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVY
VE1BWCwKCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZG
QklHLAoKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklH
LAoKCiAgICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBf
U0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAg
X1NDX0JBUlJJRVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAg
ICBfU0NfQ19MQU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9T
Q19DUFVUSU1FLAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoK
ICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAg
IF9TQ19GRF9NR01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxF
X0FUVFJJQlVURVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0s
CgogICAgX1NDX01PTk9UT05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKCiAgICBf
U0NfU0lOR0xFX1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9X
UklURVJfTE9DS1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBf
U0NfUkVHRVhfVkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAg
X1NDX1NQQVdOLAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9S
QURJQ19TRVJWRVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RB
VEFCQVNFX1IsCgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNU
UywKCiAgICBfU0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1ND
XzJfUEJTLAoKICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUs
CgogICAgX1NDXzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19T
WU1MT09QX01BWCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwK
CgogICAgX1NDX1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19WNl9JTFAzMl9PRkZCSUcsCgogICAg
X1NDX1Y2X0xQNjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKCgogICAgX1NDX0hP
U1RfTkFNRV9NQVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIs
CgogICAgX1NDX1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RSQUNFX0xPRwoKICB9OwoKCgoKCmVu
dW0KICB7CiAgICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAg
X0NTX0xGU19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFH
UywKCiAgICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9D
U19MRlM2NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKCgogICAgX0NTX1hCUzVf
SUxQMzJfT0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZM
QUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklH
X0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJT
NV9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgog
ICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElO
VEZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgog
ICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19QT1NJWF9WNl9J
TFAzMl9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1Ms
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lM
UDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFH
UywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lY
X1Y2X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElO
VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9T
SVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJ
QlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJ
WF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BP
U0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJ
Q1RFRF9FTlZTCgogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVy
biBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIDsK
CgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSkgOwoKCmV4
dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAo
dm9pZCkgOwojIDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9f
Z2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRf
dCBfX3BpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlk
X3QgX19wZ2lkKSA7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz
ZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9f
cGlkX3Qgc2V0c2lkICh2b2lkKSA7CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBf
X3BpZCkgOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRf
dCBnZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGlu
dCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsKCgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIg
KF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQp
IDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVp
ZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVy
biBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChf
X2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAo
X19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSA7CgoKCgoK
CmV4dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUg
KGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19i
dWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgpleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIDsK
CgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgbGluayAoX19j
b25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgpleHRlcm4gaW50IHN5
bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKCmV4
dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoK
CgpleHRlcm4gaW50IHVubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50
IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBn
cnAgKGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90
IF9fcGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBzaXplX3QgX19uYW1lX2xlbikgOwoKCgoK
ZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA3MjYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM2ICIu
Li9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNTAgIi4uL2luY2x1
ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsK
CgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgODIgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDMKc3RydWN0
IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQg
KmZsYWc7CiAgaW50IHZhbDsKfTsKIyAxMTMgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJu
IGludCBnZXRvcHQgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hv
cnRvcHRzKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBhcmdjLCBjaGFyICpj
b25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKZXh0ZXJuIGlu
dCBnZXRvcHRfbG9uZ19vbmx5IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdp
bmQpOwoKCmV4dGVybiBpbnQgX2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0
ICphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25n
b3B0cywgaW50ICpsb25naW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb25n
X29ubHkpOwojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKCgoKCmV4dGVybiBp
bnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVy
biBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsK
CgoKZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIDsKCgoKCgpleHRlcm4gaW50
IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQg
c2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoK
CmV4dGVybiBpbnQgdmhhbmd1cCAodm9pZCkgOwoKCmV4dGVybiBpbnQgcmV2b2tlIChfX2NvbnN0
IGNoYXIgKl9fZmlsZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0
IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkgOwoKCgoKCmV4dGVybiBpbnQg
YWNjdCAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVs
bCAodm9pZCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQg
c2V0dXNlcnNoZWxsICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hk
aXIsIGludCBfX25vY2xvc2UpIDsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hh
ciAqX19wYXRoKSA7CgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJv
bXB0KSA7CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpIDsKCgoKCgoKZXh0ZXJuIGxv
bmcgaW50IGdldGhvc3RpZCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHN5bmMgKHZvaWQpIDsKCgoK
CmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90
IF9fbGVuZ3RoKSA7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCB0
cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoK
CgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4
NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQg
X19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXpl
ICh2b2lkKSA7CiMgODY2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBicmsg
KHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRh
KSA7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2Nh
bGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgOwojIDkwNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4p
IDsKIyA5MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGxvY2tmNjQgKGlu
dCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgOwojIDkzOCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIDsKCgoKCgoK
CmV4dGVybiBjaGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpf
X3NhbHQpIDsKCgoKZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRm
bGFnKSA7CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X2Zyb20sIHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBf
X24pIDsKCgoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKIyA5ODMgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgq
X19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3Bh
cmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkg
KHZvaWQpKSA7CgoKCiMgNTAgIi4vYnVjb21tLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAo
dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9p
ZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3Zl
ICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgOwoK
CgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Ms
IHNpemVfdCBfX24pCiAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQg
Kl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0
IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4gY2hhciAq
c3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hh
ciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgojIDExNyAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBpbnQgc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNo
YXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVf
dCBfX2wpIDsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwojIDE2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKZXh0ZXJuIGNoYXIg
KnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVs
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
c2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9f
aGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAgICA7CgoKCgpleHRlcm4gY2hhciAq
X19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tf
ciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGlt
LAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsK
CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9f
Y29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90
IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVk
bGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7
CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwg
c2l6ZV90IF9fYnVmbGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNp
emVfdCBfX24pIDsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZv
aWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3Ms
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j
b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgpf
X2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl
X3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY2Fz
ZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipf
X3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNo
YXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjKQogICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVy
biBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsK
ZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7
CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAq
bWVtZnJvYiAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNl
bmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CiMgMzcyICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzczICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAxIDMKIyAzODkgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAq
X19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgOTE5ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90
Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVjdDIpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJu
IF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19y
ZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0
MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgICAg
ICAgICBpbnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3
aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3Qx
CiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5NzYg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkK
ewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVy
biBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19h
Y2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQy
KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Fj
Y2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9f
YWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3Nb
X19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAg
ICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CiMgMTAzMyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNj
ZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAn
XDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7
CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkg
X19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAn
ICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpf
X3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9p
ZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTA4NSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7
CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpf
X25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAo
KHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAnXDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9f
cysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19z
ZXApCiAgICAgICAgICB7CiAgICAgICAgICAgIF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBi
cmVhazsKICAgICAgICAgIH0KICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CiMgMTExNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBj
aGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0p
OwojIDExMzUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAg
cmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQg
KikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19y
ZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3Jl
dHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9p
ZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEs
IGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hh
ciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsK
ICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9
CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikK
ICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAq
X19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBj
aGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWpl
Y3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3Jl
amVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIg
Kl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAg
ICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAg
ICAgewogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwg
Kl9fY3AgPT0gX19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9
ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19j
cDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsK
fQojIDEyMTEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiMgNTUyICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKCgpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCiMgOTE0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCiMgMTIxMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAyIDMKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0
cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjM1ICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpf
X3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoj
IDM3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiMgNTQgIi4vYnVjb21tLmgiIDIK
IyA2NCAiLi9idWNvbW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMK
IyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93
YWl0c3RhdHVzLmgiIDEgMwojIDY1ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMK
dW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAg
ICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3df
Y29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1
bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3Ry
dWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAg
dW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoK
CgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCiMgNjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewog
ICAgdW5pb24gd2FpdCAqX191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVT
IF9fYXR0cmlidXRlX18gKChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5MyAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGlu
dCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90
OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQg
cmVtOwogIH0gbGxkaXZfdDsKCgojIDEzNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBhdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikgOwoKCgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyKSA7CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBz
dHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
CiAgICAgOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgoKCl9fZXh0
ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgojIDIyOSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90
IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25fXwpl
eHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25n
IGludCBzdHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4gZG91YmxlIHN0cnRvZF9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4g
ZmxvYXQgc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19s
b2MpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9f
bG9jKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICA7CmV4dGVybiBmbG9h
dCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fZ3JvdXApCiAgICAgOwpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGlu
dCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCkgOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3Jv
dXApIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dy
b3VwKSA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19z
dHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkKICAgICA7CgoKCgoKCgoKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3RydG9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGlu
dApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKCmV4dGVybiBfX2lu
bGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIpCnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsK
fQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3Eg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGlu
dApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBj
aGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2Yg
KF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAq
KikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFy
ICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZv
aWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNo
YXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAq
KTApLCAxMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBp
bnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0
ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCiMgNDA4ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25n
IGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CiMgNDIxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAo
dm9pZCkgOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoK
CgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0
YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpl
eHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCBy
YW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAg
aW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAg
aW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5k
b21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5k
b21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoK
ZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0
cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl
biwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0
ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBz
cmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2ln
bmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIDsK
ZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoK
CmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBtcmFu
ZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
OwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBf
X3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9f
cGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hv
cnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IGxyYW5kNDhf
ciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgbnJh
bmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQg
bXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJu
IGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0
ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19idWZmZXIpCiAgICAgOwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSA7CiMgNTYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKZXh0ZXJuIHZvaWQg
KnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIg
MSAzCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9f
c2l6ZSkgOwoKCgoKCgojIDU3NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVy
biB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19tZW1wdHIsIHNpemVf
dCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkg
OwoKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg
dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICA7CgoKCgoKCmV4dGVybiB2b2lkIGV4aXQg
KGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRl
cm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoK
CgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK
CgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBpbnQg
c2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQg
X19yZXBsYWNlKQogICAgIDsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNjYxICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg
OwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CiMgNjc4ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVt
cGxhdGUpIDsKIyA2ODggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtk
dGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0
IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxl
X25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNzEyICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
YW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkg
OwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19j
b25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CgoK
CgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZv
aWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3Qg
X19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZv
aWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAg
ICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcg
aW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1l
ciwgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g
bGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZf
dCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKIyA3NzYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
ZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7
CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hh
ciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2
dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoK
ZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCgpleHRlcm4gaW50IG1i
bGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3dj
ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChj
aGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCgoK
CmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODU4ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9f
cmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tl
eSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoK
CgpleHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQg
KGludCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKCgoKCgoK
ZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm
bGVuKSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IGdldGxv
YWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyA2NSAiLi9i
dWNvbW0uaCIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyAyOSAiL3Vzci9p
bmNsdWRlL2ZjbnRsLmgiIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMSAz
CiMgMTM2ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzCnN0cnVjdCBmbG9jawogIHsKICAg
IHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CgogICAgX19vZmZfdCBs
X3N0YXJ0OwogICAgX19vZmZfdCBsX2xlbjsKCgoKCiAgICBfX3BpZF90IGxfcGlkOwogIH07CgoK
c3RydWN0IGZsb2NrNjQKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxf
d2hlbmNlOwogICAgX19vZmY2NF90IGxfc3RhcnQ7CiAgICBfX29mZjY0X3QgbF9sZW47CiAgICBf
X3BpZF90IGxfcGlkOwogIH07CiMgMzQgIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMKIyA2MCAi
L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBmY250bCAoaW50IF9fZmQsIGludCBf
X2NtZCwgLi4uKSA7CgoKCgoKZXh0ZXJuIGludCBvcGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
aW50IF9fb2ZsYWcsIC4uLikgOwojIDc2ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g
aW50IG9wZW42NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIDsKCgoK
CgoKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9k
ZSkgOwojIDkzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IGNyZWF0NjQgKF9f
Y29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIDsKIyAxMzAgIi91c3IvaW5jbHVk
ZS9mY250bC5oIiAzCmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZSAoaW50IF9fZmQsIF9fb2ZmX3Qg
X19vZmZzZXQsIHNpemVfdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19h
ZHZpc2UpIDsKIyAxNDIgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgcG9zaXhf
ZmFkdmlzZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hZHZpc2UpIDsKCgoKCgpleHRlcm4gaW50
IHBvc2l4X2ZhbGxvY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIHNpemVfdCBfX2xl
bikgOwojIDE2MCAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBwb3NpeF9mYWxs
b2NhdGU2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuKQogICAg
IDsKCgoKCiMgNjkgIi4vYnVjb21tLmgiIDIKIyA5MCAiLi9idWNvbW0uaCIKZXh0ZXJuIGNoYXIg
KiplbnZpcm9uOwojIDEyOSAiLi9idWNvbW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgi
IDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9p
bmNsdWRlL2xvY2FsZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMSAz
CiMgMjcgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAzCmVudW0KewogIF9fTENfQ1RZUEUg
PSAwLAogIF9fTENfTlVNRVJJQyA9IDEsCiAgX19MQ19USU1FID0gMiwKICBfX0xDX0NPTExBVEUg
PSAzLAogIF9fTENfTU9ORVRBUlkgPSA0LAogIF9fTENfTUVTU0FHRVMgPSA1LAogIF9fTENfQUxM
ID0gNiwKICBfX0xDX1BBUEVSID0gNywKICBfX0xDX05BTUUgPSA4LAogIF9fTENfQUREUkVTUyA9
IDksCiAgX19MQ19URUxFUEhPTkUgPSAxMCwKICBfX0xDX01FQVNVUkVNRU5UID0gMTEsCiAgX19M
Q19JREVOVElGSUNBVElPTiA9IDEyCn07CiMgMzEgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMiAz
CgoKIyA1MiAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCnN0cnVjdCBsY29udgp7CgoKICBjaGFy
ICpkZWNpbWFsX3BvaW50OwogIGNoYXIgKnRob3VzYW5kc19zZXA7CgoKCgoKICBjaGFyICpncm91
cGluZzsKCgoKCgogIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICBjaGFyICpjdXJyZW5jeV9zeW1i
b2w7CiAgY2hhciAqbW9uX2RlY2ltYWxfcG9pbnQ7CiAgY2hhciAqbW9uX3Rob3VzYW5kc19zZXA7
CiAgY2hhciAqbW9uX2dyb3VwaW5nOwogIGNoYXIgKnBvc2l0aXZlX3NpZ247CiAgY2hhciAqbmVn
YXRpdmVfc2lnbjsKICBjaGFyIGludF9mcmFjX2RpZ2l0czsKICBjaGFyIGZyYWNfZGlnaXRzOwoK
ICBjaGFyIHBfY3NfcHJlY2VkZXM7CgogIGNoYXIgcF9zZXBfYnlfc3BhY2U7CgogIGNoYXIgbl9j
c19wcmVjZWRlczsKCiAgY2hhciBuX3NlcF9ieV9zcGFjZTsKCgoKCgoKICBjaGFyIHBfc2lnbl9w
b3NuOwogIGNoYXIgbl9zaWduX3Bvc247CgoKICBjaGFyIGludF9wX2NzX3ByZWNlZGVzOwoKICBj
aGFyIGludF9wX3NlcF9ieV9zcGFjZTsKCiAgY2hhciBpbnRfbl9jc19wcmVjZWRlczsKCiAgY2hh
ciBpbnRfbl9zZXBfYnlfc3BhY2U7CgoKCgoKCiAgY2hhciBpbnRfcF9zaWduX3Bvc247CiAgY2hh
ciBpbnRfbl9zaWduX3Bvc247CiMgMTE5ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMKfTsKCgoK
CgpleHRlcm4gY2hhciAqc2V0bG9jYWxlIChpbnQgX19jYXRlZ29yeSwgX19jb25zdCBjaGFyICpf
X2xvY2FsZSkgOwoKCmV4dGVybiBzdHJ1Y3QgbGNvbnYgKmxvY2FsZWNvbnYgKHZvaWQpIDsKCgoj
IDE0OCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCnR5cGVkZWYgX19sb2NhbGVfdCBsb2NhbGVf
dDsKCgoKCgpleHRlcm4gX19sb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2NhdGVnb3J5X21hc2ss
IF9fY29uc3QgY2hhciAqX19sb2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2Jhc2UpIDsKIyAxODkgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMwpleHRlcm4g
X19sb2NhbGVfdCBkdXBsb2NhbGUgKF9fbG9jYWxlX3QgX19kYXRhc2V0KSA7CgoKCmV4dGVybiB2
b2lkIGZyZWVsb2NhbGUgKF9fbG9jYWxlX3QgX19kYXRhc2V0KSA7CgoKCgoKCmV4dGVybiBfX2xv
Y2FsZV90IHVzZWxvY2FsZSAoX19sb2NhbGVfdCBfX2RhdGFzZXQpIDsKCgoKCgoKCgojIDEzMCAi
Li9idWNvbW0uaCIgMgojIDE1MSAiLi9idWNvbW0uaCIKdm9pZCBiZmRfbm9uZmF0YWwKICAoY29u
c3QgY2hhciAqKTsKCnZvaWQgYmZkX2ZhdGFsCiAgKGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKdm9pZCByZXBvcnQKICAoY29uc3QgY2hhciAqLCB2YV9saXN0
KTsKCnZvaWQgZmF0YWwKICAoY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCnZvaWQgbm9uX2ZhdGFsCiAgKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKCnZvaWQgc2V0X2RlZmF1bHRfYmZkX3Rh
cmdldAogICh2b2lkKTsKCnZvaWQgbGlzdF9tYXRjaGluZ19mb3JtYXRzCiAgKGNoYXIgKipwKTsK
CnZvaWQgbGlzdF9zdXBwb3J0ZWRfdGFyZ2V0cwogIChjb25zdCBjaGFyICosIEZJTEUgKik7Cgp2
b2lkIGxpc3Rfc3VwcG9ydGVkX2FyY2hpdGVjdHVyZXMKICAoY29uc3QgY2hhciAqLCBGSUxFICop
OwoKdm9pZCBwcmludF9hcmVsdF9kZXNjcgogIChGSUxFICpmaWxlLCBiZmQgKmFiZmQsIGJmZF9i
b29sZWFuIHZlcmJvc2UpOwoKY2hhciAqbWFrZV90ZW1wbmFtZQogIChjaGFyICopOwoKYmZkX3Zt
YSBwYXJzZV92bWEKICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIGNoYXIg
KnByb2dyYW1fbmFtZTsKCgp2b2lkIG1vZGVfc3RyaW5nCiAgKHVuc2lnbmVkIGxvbmcgbW9kZSwg
Y2hhciAqYnVmKTsKCgpleHRlcm4gdm9pZCBwcmludF92ZXJzaW9uCiAgKGNvbnN0IGNoYXIgKik7
CgoKZXh0ZXJuIHZvaWQgc2V0X3RpbWVzCiAgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHN0
YXQgKik7CgpleHRlcm4gaW50IHNtYXJ0X3JlbmFtZQogIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgaW50KTsKCgp2b2lkICogeG1hbGxvYwogIChzaXplX3QpOwoKdm9pZCAqIHhyZWFsbG9j
CiAgKHZvaWQgKiwgc2l6ZV90KTsKIyA5MyAicmVhZGVsZi5jIiAyCgoKY2hhciAqcHJvZ3JhbV9u
YW1lID0gInJlYWRlbGYiOwp1bnNpZ25lZCBsb25nIGR5bmFtaWNfYWRkcjsKYmZkX3NpemVfdHlw
ZSBkeW5hbWljX3NpemU7CmNoYXIgKmR5bmFtaWNfc3RyaW5nczsKY2hhciAqc3RyaW5nX3RhYmxl
Owp1bnNpZ25lZCBsb25nIHN0cmluZ190YWJsZV9sZW5ndGg7CnVuc2lnbmVkIGxvbmcgbnVtX2R5
bmFtaWNfc3ltczsKRWxmX0ludGVybmFsX1N5bSAqZHluYW1pY19zeW1ib2xzOwpFbGZfSW50ZXJu
YWxfU3ltaW5mbyAqZHluYW1pY19zeW1pbmZvOwp1bnNpZ25lZCBsb25nIGR5bmFtaWNfc3ltaW5m
b19vZmZzZXQ7CnVuc2lnbmVkIGludCBkeW5hbWljX3N5bWluZm9fbmVudDsKY2hhciBwcm9ncmFt
X2ludGVycHJldGVyWzY0XTsKbG9uZyBkeW5hbWljX2luZm9bMjMgKyAxXTsKbG9uZyB2ZXJzaW9u
X2luZm9bMTZdOwpsb25nIGxvYWRhZGRyID0gMDsKRWxmX0ludGVybmFsX0VoZHIgZWxmX2hlYWRl
cjsKRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb25faGVhZGVyczsKRWxmX0ludGVybmFsX0R5biAq
ZHluYW1pY19zZWdtZW50OwpFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX3NobmR4X2hkcjsKaW50
IHNob3dfbmFtZTsKaW50IGRvX2R5bmFtaWM7CmludCBkb19zeW1zOwppbnQgZG9fcmVsb2M7Cmlu
dCBkb19zZWN0aW9uczsKaW50IGRvX3NlZ21lbnRzOwppbnQgZG9fdW53aW5kOwppbnQgZG9fdXNp
bmdfZHluYW1pYzsKaW50IGRvX2hlYWRlcjsKaW50IGRvX2R1bXA7CmludCBkb192ZXJzaW9uOwpp
bnQgZG9fd2lkZTsKaW50IGRvX2hpc3RvZ3JhbTsKaW50IGRvX2RlYnVnZ2luZzsKaW50IGRvX2Rl
YnVnX2luZm87CmludCBkb19kZWJ1Z19hYmJyZXZzOwppbnQgZG9fZGVidWdfbGluZXM7CmludCBk
b19kZWJ1Z19wdWJuYW1lczsKaW50IGRvX2RlYnVnX2FyYW5nZXM7CmludCBkb19kZWJ1Z19mcmFt
ZXM7CmludCBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwOwppbnQgZG9fZGVidWdfbWFjaW5mbzsKaW50
IGRvX2RlYnVnX3N0cjsKaW50IGRvX2RlYnVnX2xvYzsKaW50IGRvX2FyY2g7CmludCBkb19ub3Rl
czsKaW50IGlzXzMyYml0X2VsZjsKCgpjaGFyICpkdW1wX3NlY3RzID0gKCh2b2lkICopMCk7CnVu
c2lnbmVkIGludCBudW1fZHVtcF9zZWN0cyA9IDA7CgoKCgoKCnR5cGVkZWYgZW51bSBwcmludF9t
b2RlCnsKICBIRVgsCiAgREVDLAogIERFQ181LAogIFVOU0lHTkVELAogIFBSRUZJWF9IRVgsCiAg
RlVMTF9IRVgsCiAgTE9OR19IRVgKfQpwcmludF9tb2RlOwoKCnN0YXRpYyB2b2lkIHByaW50X3Zt
YQogIChiZmRfdm1hLCBwcmludF9tb2RlKTsKc3RhdGljIHZvaWQgcHJpbnRfc3ltYm9sCiAgKGlu
dCwgY29uc3QgY2hhciAqKTsKc3RhdGljIGJmZF92bWEgKCpieXRlX2dldCkKICAodW5zaWduZWQg
Y2hhciAqLCBpbnQpOwpzdGF0aWMgYmZkX3ZtYSBieXRlX2dldF9saXR0bGVfZW5kaWFuCiAgKHVu
c2lnbmVkIGNoYXIgKiwgaW50KTsKc3RhdGljIGJmZF92bWEgYnl0ZV9nZXRfYmlnX2VuZGlhbgog
ICh1bnNpZ25lZCBjaGFyICosIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19keW5h
bWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfc3BhcmM2
NF9keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRf
cHBjNjRfZHluYW1pY190eXBlCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY29uc3QgY2hhciAq
Z2V0X3BhcmlzY19keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBj
aGFyICpnZXRfaWE2NF9keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfZHluYW1pY190eXBlCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgaW50IHNs
dXJwX3JlbGFfcmVsb2NzCiAgKEZJTEUgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
RWxmX0ludGVybmFsX1JlbGEgKiosIHVuc2lnbmVkIGxvbmcgKik7CgpzdGF0aWMgaW50IHNsdXJw
X3JlbF9yZWxvY3MKICAoRklMRSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBFbGZf
SW50ZXJuYWxfUmVsYSAqKiwgdW5zaWduZWQgbG9uZyAqKTsKCnN0YXRpYyBpbnQgZHVtcF9yZWxv
Y2F0aW9ucwogIChGSUxFICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIEVsZl9JbnRl
cm5hbF9TeW0gKiwgdW5zaWduZWQgbG9uZywgY2hhciAqLCBpbnQpOwoKc3RhdGljIGNoYXIgKmdl
dF9maWxlX3R5cGUKICAodW5zaWduZWQpOwpzdGF0aWMgY2hhciAqZ2V0X21hY2hpbmVfbmFtZQog
ICh1bnNpZ25lZCk7CnN0YXRpYyB2b2lkIGRlY29kZV9BUk1fbWFjaGluZV9mbGFncwogICh1bnNp
Z25lZCwgY2hhcltdKTsKc3RhdGljIGNoYXIgKmdldF9tYWNoaW5lX2ZsYWdzCiAgKHVuc2lnbmVk
LCB1bnNpZ25lZCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19zZWdtZW50X3R5cGUKICAo
dW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfcGFyaXNjX3NlZ21lbnRfdHlw
ZQogICh1bnNpZ25lZCBsb25nKTsKc3RhdGljIGNvbnN0IGNoYXIgKmdldF9pYTY0X3NlZ21lbnRf
dHlwZQogICh1bnNpZ25lZCBsb25nKTsKc3RhdGljIGNvbnN0IGNoYXIgKmdldF9zZWdtZW50X3R5
cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19zZWN0aW9u
X3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3Bhcmlz
Y19zZWN0aW9uX3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAq
Z2V0X2lhNjRfc2VjdGlvbl90eXBlX25hbWUKICAodW5zaWduZWQgaW50KTsKc3RhdGljIGNvbnN0
IGNoYXIgKmdldF9zZWN0aW9uX3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29u
c3QgY2hhciAqZ2V0X3N5bWJvbF9iaW5kaW5nCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfc3ltYm9sX3R5cGUKICAodW5zaWduZWQgaW50KTsKc3RhdGljIGNvbnN0IGNo
YXIgKmdldF9zeW1ib2xfdmlzaWJpbGl0eQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3Qg
Y2hhciAqZ2V0X3N5bWJvbF9pbmRleF90eXBlCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfZHluYW1pY19mbGFncwogIChiZmRfdm1hKTsKc3RhdGljIHZvaWQgdXNhZ2UK
ICAodm9pZCk7CnN0YXRpYyB2b2lkIHBhcnNlX2FyZ3MKICAoaW50LCBjaGFyICoqKTsKc3RhdGlj
IGludCBwcm9jZXNzX2ZpbGVfaGVhZGVyCiAgKHZvaWQpOwpzdGF0aWMgaW50IHByb2Nlc3NfcHJv
Z3JhbV9oZWFkZXJzCiAgKEZJTEUgKik7CnN0YXRpYyBpbnQgcHJvY2Vzc19zZWN0aW9uX2hlYWRl
cnMKICAoRklMRSAqKTsKc3RhdGljIGludCBwcm9jZXNzX3Vud2luZAogIChGSUxFICopOwpzdGF0
aWMgdm9pZCBkeW5hbWljX3NlZ21lbnRfbWlwc192YWwKICAoRWxmX0ludGVybmFsX0R5biAqKTsK
c3RhdGljIHZvaWQgZHluYW1pY19zZWdtZW50X3BhcmlzY192YWwKICAoRWxmX0ludGVybmFsX0R5
biAqKTsKc3RhdGljIHZvaWQgZHluYW1pY19zZWdtZW50X2lhNjRfdmFsCiAgKEVsZl9JbnRlcm5h
bF9EeW4gKik7CnN0YXRpYyBpbnQgcHJvY2Vzc19keW5hbWljX3NlZ21lbnQKICAoRklMRSAqKTsK
c3RhdGljIGludCBwcm9jZXNzX3N5bWJvbF90YWJsZQogIChGSUxFICopOwpzdGF0aWMgaW50IHBy
b2Nlc3Nfc3ltaW5mbwogIChGSUxFICopOwpzdGF0aWMgaW50IHByb2Nlc3Nfc2VjdGlvbl9jb250
ZW50cwogIChGSUxFICopOwpzdGF0aWMgdm9pZCBwcm9jZXNzX21pcHNfZnBlX2V4Y2VwdGlvbgog
IChpbnQpOwpzdGF0aWMgaW50IHByb2Nlc3NfbWlwc19zcGVjaWZpYwogIChGSUxFICopOwpzdGF0
aWMgaW50IHByb2Nlc3NfZmlsZQogIChjaGFyICopOwpzdGF0aWMgaW50IHByb2Nlc3NfcmVsb2Nz
CiAgKEZJTEUgKik7CnN0YXRpYyBpbnQgcHJvY2Vzc192ZXJzaW9uX3NlY3Rpb25zCiAgKEZJTEUg
Kik7CnN0YXRpYyBjaGFyICpnZXRfdmVyX2ZsYWdzCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBp
bnQgZ2V0XzMyYml0X3NlY3Rpb25faGVhZGVycwogIChGSUxFICosIHVuc2lnbmVkIGludCk7CnN0
YXRpYyBpbnQgZ2V0XzY0Yml0X3NlY3Rpb25faGVhZGVycwogIChGSUxFICosIHVuc2lnbmVkIGlu
dCk7CnN0YXRpYyBpbnQgZ2V0XzMyYml0X3Byb2dyYW1faGVhZGVycwogIChGSUxFICosIEVsZl9J
bnRlcm5hbF9QaGRyICopOwpzdGF0aWMgaW50IGdldF82NGJpdF9wcm9ncmFtX2hlYWRlcnMKICAo
RklMRSAqLCBFbGZfSW50ZXJuYWxfUGhkciAqKTsKc3RhdGljIGludCBnZXRfZmlsZV9oZWFkZXIK
ICAoRklMRSAqKTsKc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKmdldF8zMmJpdF9lbGZfc3ltYm9s
cwogIChGSUxFICosIEVsZl9JbnRlcm5hbF9TaGRyICopOwpzdGF0aWMgRWxmX0ludGVybmFsX1N5
bSAqZ2V0XzY0Yml0X2VsZl9zeW1ib2xzCiAgKEZJTEUgKiwgRWxmX0ludGVybmFsX1NoZHIgKik7
CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZWxmX3NlY3Rpb25fZmxhZ3MKICAoYmZkX3ZtYSk7CnN0
YXRpYyBpbnQgKmdldF9keW5hbWljX2RhdGEKICAoRklMRSAqLCB1bnNpZ25lZCBpbnQpOwpzdGF0
aWMgaW50IGdldF8zMmJpdF9keW5hbWljX3NlZ21lbnQKICAoRklMRSAqKTsKc3RhdGljIGludCBn
ZXRfNjRiaXRfZHluYW1pY19zZWdtZW50CiAgKEZJTEUgKik7CgoKCgpzdGF0aWMgaW50IGR1bXBf
c2VjdGlvbgogIChFbGZfSW50ZXJuYWxfU2hkciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3Bs
YXlfZGVidWdfc2VjdGlvbgogIChFbGZfSW50ZXJuYWxfU2hkciAqLCBGSUxFICopOwpzdGF0aWMg
aW50IGRpc3BsYXlfZGVidWdfaW5mbwogIChFbGZfSW50ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBj
aGFyICosIEZJTEUgKik7CnN0YXRpYyBpbnQgZGlzcGxheV9kZWJ1Z19ub3Rfc3VwcG9ydGVkCiAg
KEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGlu
dCBwcmVzY2FuX2RlYnVnX2luZm8KICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hh
ciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfbGluZXMKICAoRWxmX0ludGVy
bmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlf
ZGVidWdfcHVibmFtZXMKICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBG
SUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfYWJicmV2CiAgKEVsZl9JbnRlcm5hbF9T
aGRyICosIHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVn
X2FyYW5nZXMKICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICop
OwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfZnJhbWVzCiAgKEVsZl9JbnRlcm5hbF9TaGRyICos
IHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVnX21hY2lu
Zm8KICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICopOwpzdGF0
aWMgaW50IGRpc3BsYXlfZGVidWdfc3RyCiAgKEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVk
IGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVnX2xvYwogIChFbGZfSW50
ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBjaGFyICosIEZJTEUgKik7CnN0YXRpYyB1bnNpZ25lZCBj
aGFyICpwcm9jZXNzX2FiYnJldl9zZWN0aW9uCiAgKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQg
Y2hhciAqKTsKc3RhdGljIHZvaWQgbG9hZF9kZWJ1Z19zdHIKICAoRklMRSAqKTsKc3RhdGljIHZv
aWQgZnJlZV9kZWJ1Z19zdHIKICAodm9pZCk7CnN0YXRpYyBjb25zdCBjaGFyICpmZXRjaF9pbmRp
cmVjdF9zdHJpbmcKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyB2b2lkIGxvYWRfZGVidWdfbG9j
CiAgKEZJTEUgKik7CnN0YXRpYyB2b2lkIGZyZWVfZGVidWdfbG9jCiAgKHZvaWQpOwpzdGF0aWMg
dW5zaWduZWQgbG9uZyByZWFkX2xlYjEyOAogICh1bnNpZ25lZCBjaGFyICosIGludCAqLCBpbnQp
OwpzdGF0aWMgaW50IHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcAogICh1bnNpZ25lZCBjaGFyICos
IGludCwgaW50KTsKc3RhdGljIHZvaWQgcmVzZXRfc3RhdGVfbWFjaGluZQogIChpbnQpOwpzdGF0
aWMgY2hhciAqZ2V0X1RBR19uYW1lCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY2hhciAqZ2V0
X0FUX25hbWUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjaGFyICpnZXRfRk9STV9uYW1lCiAg
KHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgdm9pZCBmcmVlX2FiYnJldnMKICAodm9pZCk7CnN0YXRp
YyB2b2lkIGFkZF9hYmJyZXYKICAodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KTsK
c3RhdGljIHZvaWQgYWRkX2FiYnJldl9hdHRyCiAgKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcpOwpzdGF0aWMgdW5zaWduZWQgY2hhciAqcmVhZF9hbmRfZGlzcGxheV9hdHRyCiAgKHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgdW5zaWduZWQgY2hhciAqcmVhZF9hbmRfZGlzcGxheV9h
dHRyX3ZhbHVlCiAgKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIg
KiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgdW5zaWduZWQgY2hhciAq
ZGlzcGxheV9ibG9jawogICh1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMg
dm9pZCBkZWNvZGVfbG9jYXRpb25fZXhwcmVzc2lvbgogICh1bnNpZ25lZCBjaGFyICosIHVuc2ln
bmVkIGludCwgdW5zaWduZWQgbG9uZyk7CnN0YXRpYyB2b2lkIHJlcXVlc3RfZHVtcAogICh1bnNp
Z25lZCBpbnQsIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZWxmX2NsYXNzCiAgKHVuc2ln
bmVkIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZGF0YV9lbmNvZGluZwogICh1bnNpZ25l
ZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAqZ2V0X29zYWJpX25hbWUKICAodW5zaWduZWQgaW50
KTsKc3RhdGljIGludCBndWVzc19pc19yZWxhCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY29u
c3QgY2hhciAqZ2V0X25vdGVfdHlwZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hh
ciAqZ2V0X25ldGJzZF9lbGZjb3JlX25vdGVfdHlwZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMg
aW50IHByb2Nlc3Nfbm90ZQogIChFbGZfSW50ZXJuYWxfTm90ZSAqKTsKc3RhdGljIGludCBwcm9j
ZXNzX2NvcmVmaWxlX25vdGVfc2VnbWVudAogIChGSUxFICosIGJmZF92bWEsIGJmZF92bWEpOwpz
dGF0aWMgaW50IHByb2Nlc3NfY29yZWZpbGVfbm90ZV9zZWdtZW50cwogIChGSUxFICopOwpzdGF0
aWMgaW50IHByb2Nlc3NfY29yZWZpbGVfY29udGVudHMKICAoRklMRSAqKTsKc3RhdGljIGludCBw
cm9jZXNzX2FyY2hfc3BlY2lmaWMKICAoRklMRSAqKTsKc3RhdGljIGludCBwcm9jZXNzX2dudV9s
aWJsaXN0CiAgKEZJTEUgKik7Cgp0eXBlZGVmIGludCBFbGYzMl9Xb3JkOwojIDQzNSAicmVhZGVs
Zi5jIgpzdGF0aWMgdm9pZAplcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQp7CiAgeyB2
YV9saXN0IGFyZ3M7IF9fYnVpbHRpbl92YV9zdGFydChhcmdzLG1lc3NhZ2UpOyB7IHN0cnVjdCBR
ZG15OwogIHN0cnVjdCBRZG15OwoKICBmcHJpbnRmIChzdGRlcnIsICgiJXM6IEVycm9yOiAiKSwg
cHJvZ3JhbV9uYW1lKTsKICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcmdzKTsKICB9IF9f
YnVpbHRpbl92YV9lbmQoYXJncyk7IH07Cn0KCnN0YXRpYyB2b2lkCndhcm4gKGNvbnN0IGNoYXIg
Km1lc3NhZ2UsIC4uLikKewogIHsgdmFfbGlzdCBhcmdzOyBfX2J1aWx0aW5fdmFfc3RhcnQoYXJn
cyxtZXNzYWdlKTsgeyBzdHJ1Y3QgUWRteTsKICBzdHJ1Y3QgUWRteTsKCiAgZnByaW50ZiAoc3Rk
ZXJyLCAoIiVzOiBXYXJuaW5nOiAiKSwgcHJvZ3JhbV9uYW1lKTsKICB2ZnByaW50ZiAoc3RkZXJy
LCBtZXNzYWdlLCBhcmdzKTsKICB9IF9fYnVpbHRpbl92YV9lbmQoYXJncyk7IH07Cn0KCnN0YXRp
YyB2b2lkICogZ2V0X2RhdGEgKHZvaWQgKiwgRklMRSAqLCBsb25nLCBzaXplX3QsIGNvbnN0IGNo
YXIgKik7CgpzdGF0aWMgdm9pZCAqCmdldF9kYXRhICh2YXIsIGZpbGUsIG9mZnNldCwgc2l6ZSwg
cmVhc29uKQogICAgIHZvaWQgKiB2YXI7CiAgICAgRklMRSAqZmlsZTsKICAgICBsb25nIG9mZnNl
dDsKICAgICBzaXplX3Qgc2l6ZTsKICAgICBjb25zdCBjaGFyICpyZWFzb247CnsKICB2b2lkICog
bXZhcjsKCiAgaWYgKHNpemUgPT0gMCkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgaWYgKGZz
ZWVrIChmaWxlLCBvZmZzZXQsIDApKQogICAgewogICAgICBlcnJvciAoKCJVbmFibGUgdG8gc2Vl
ayB0byAleCBmb3IgJXNcbiIpLCBvZmZzZXQsIHJlYXNvbik7CiAgICAgIHJldHVybiAoKHZvaWQg
KikwKTsKICAgIH0KCiAgbXZhciA9IHZhcjsKICBpZiAobXZhciA9PSAoKHZvaWQgKikwKSkKICAg
IHsKICAgICAgbXZhciA9ICh2b2lkICopIG1hbGxvYyAoc2l6ZSk7CgogICAgICBpZiAobXZhciA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
IGFsbG9jYXRpbmcgJWQgYnl0ZXMgZm9yICVzXG4iKSwKICAgICAgICAgICAgICAgICBzaXplLCBy
ZWFzb24pOwogICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIH0KICAgIH0KCiAg
aWYgKGZyZWFkIChtdmFyLCBzaXplLCAxLCBmaWxlKSAhPSAxKQogICAgewogICAgICBlcnJvciAo
KCJVbmFibGUgdG8gcmVhZCBpbiAlZCBieXRlcyBvZiAlc1xuIiksIHNpemUsIHJlYXNvbik7CiAg
ICAgIGlmIChtdmFyICE9IHZhcikKICAgICAgICBmcmVlIChtdmFyKTsKICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwogICAgfQoKICByZXR1cm4gbXZhcjsKfQoKc3RhdGljIGJmZF92bWEKYnl0ZV9n
ZXRfbGl0dGxlX2VuZGlhbiAoZmllbGQsIHNpemUpCiAgICAgdW5zaWduZWQgY2hhciAqZmllbGQ7
CiAgICAgaW50IHNpemU7CnsKICBzd2l0Y2ggKHNpemUpCiAgICB7CiAgICBjYXNlIDE6CiAgICAg
IHJldHVybiAqZmllbGQ7CgogICAgY2FzZSAyOgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBpbnQp
IChmaWVsZFswXSkpCiAgICAgICAgfCAoKCh1bnNpZ25lZCBpbnQpIChmaWVsZFsxXSkpIDw8IDgp
OwojIDUyMyAicmVhZGVsZi5jIgogICAgY2FzZSA0OgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBs
b25nKSAoZmllbGRbMF0pKQogICAgICAgIHwgKCgodW5zaWduZWQgbG9uZykgKGZpZWxkWzFdKSkg
PDwgOCkKICAgICAgICB8ICgoKHVuc2lnbmVkIGxvbmcpIChmaWVsZFsyXSkpIDw8IDE2KQogICAg
ICAgIHwgKCgodW5zaWduZWQgbG9uZykgKGZpZWxkWzNdKSkgPDwgMjQpOwoKCiAgICBjYXNlIDg6
CiAgICBjYXNlIC04OgoKCgoKICAgICAgcmV0dXJuICgoYmZkX3ZtYSkgKGZpZWxkWzBdKSkKICAg
ICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFsxXSkpIDw8IDgpCiAgICAgICAgfCAoKChiZmRfdm1h
KSAoZmllbGRbMl0pKSA8PCAxNikKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFszXSkpIDw8
IDI0KQogICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzRdKSkgPDwgMzIpCiAgICAgICAgfCAo
KChiZmRfdm1hKSAoZmllbGRbNV0pKSA8PCA0MCkKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVs
ZFs2XSkpIDw8IDQ4KQogICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzddKSkgPDwgNTYpOwoK
ICAgIGRlZmF1bHQ6CiAgICAgIGVycm9yICgoIlVuaGFuZGxlZCBkYXRhIGxlbmd0aDogJWRcbiIp
LCBzaXplKTsKICAgICAgYWJvcnQgKCk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZApwcmludF92bWEg
KHZtYSwgbW9kZSkKICAgICBiZmRfdm1hIHZtYTsKICAgICBwcmludF9tb2RlIG1vZGU7CnsKCiAg
aWYgKGlzXzMyYml0X2VsZikKCiAgICB7CiAgICAgIHN3aXRjaCAobW9kZSkKICAgICAgICB7CiAg
ICAgICAgY2FzZSBGVUxMX0hFWDogcHJpbnRmICgiMHgiKTsKICAgICAgICBjYXNlIExPTkdfSEVY
OiBwcmludGYgKCIlOC44bHgiLCAodW5zaWduZWQgbG9uZykgdm1hKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSBQUkVGSVhfSEVYOiBwcmludGYgKCIweCIpOwogICAgICAgIGNhc2UgSEVYOiBwcmludGYg
KCIlbHgiLCAodW5zaWduZWQgbG9uZykgdm1hKTsgYnJlYWs7CiAgICAgICAgY2FzZSBERUM6IHBy
aW50ZiAoIiVsZCIsICh1bnNpZ25lZCBsb25nKSB2bWEpOyBicmVhazsKICAgICAgICBjYXNlIERF
Q181OiBwcmludGYgKCIlNWxkIiwgKGxvbmcpIHZtYSk7IGJyZWFrOwogICAgICAgIGNhc2UgVU5T
SUdORUQ6IHByaW50ZiAoIiVsdSIsICh1bnNpZ25lZCBsb25nKSB2bWEpOyBicmVhazsKICAgICAg
ICB9CiAgICB9CgogIGVsc2UKICAgIHsKICAgICAgc3dpdGNoIChtb2RlKQogICAgICAgIHsKICAg
ICAgICBjYXNlIEZVTExfSEVYOgogICAgICAgICAgcHJpbnRmICgiMHgiKTsKCgogICAgICAgIGNh
c2UgTE9OR19IRVg6CiAgICAgICAgICBmcHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAo
KHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpLCAoKHVuc2lnbmVk
IGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZmKSkpKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIFBSRUZJWF9IRVg6CiAgICAgICAgICBwcmludGYgKCIweCIpOwoKCiAgICAgICAgY2Fz
ZSBIRVg6CgoKCiAgICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpID4+IDMyKSAm
IDB4ZmZmZmZmZmYpKSkKICAgICAgICAgICAgcHJpbnRmICgiJWx4JTguOGx4IiwgKCh1bnNpZ25l
ZCBsb25nKSAoKCh2bWEpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50
ZiAoIiVseCIsICgodW5zaWduZWQgbG9uZykgKCgodm1hKSAmIDB4ZmZmZmZmZmYpKSkpOwoKICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIERFQzoKCgoKICAgICAgICAgIGlmICgoKHVuc2ln
bmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpKQoKICAgICAgICAgICAgcHJp
bnRmICgiKyslbGQiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZmKSkpKTsK
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJWxkIiwgKCh1bnNpZ25lZCBsb25n
KSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CgogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgREVDXzU6CgoKCiAgICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpID4+IDMy
KSAmIDB4ZmZmZmZmZmYpKSkKCiAgICAgICAgICAgIHByaW50ZiAoIisrJWxkIiwgKCh1bnNpZ25l
ZCBsb25nKSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgIHByaW50ZiAoIiU1bGQiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZm
KSkpKTsKCiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBVTlNJR05FRDoKCgoKICAgICAg
ICAgIGlmICgoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpKQoK
ICAgICAgICAgICAgcHJpbnRmICgiKyslbHUiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAw
eGZmZmZmZmZmKSkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJWx1Iiwg
KCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CgogICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQogICAgfQoKfQoKCgoKCgoKc3RhdGljIHZvaWQKcHJpbnRfc3ltYm9sICh3
aWR0aCwgc3ltYm9sKQogICAgIGludCB3aWR0aDsKICAgICBjb25zdCBjaGFyICpzeW1ib2w7CnsK
ICBpZiAoZG9fd2lkZSkKICAgIHByaW50ZiAoIiVzIiwgc3ltYm9sKTsKICBlbHNlIGlmICh3aWR0
aCA8IDApCiAgICBwcmludGYgKCIlLSouKnMiLCB3aWR0aCwgd2lkdGgsIHN5bWJvbCk7CiAgZWxz
ZQogICAgcHJpbnRmICgiJS0uKnMiLCB3aWR0aCwgc3ltYm9sKTsKfQoKc3RhdGljIGJmZF92bWEK
Ynl0ZV9nZXRfYmlnX2VuZGlhbiAoZmllbGQsIHNpemUpCiAgICAgdW5zaWduZWQgY2hhciAqZmll
bGQ7CiAgICAgaW50IHNpemU7CnsKICBzd2l0Y2ggKHNpemUpCiAgICB7CiAgICBjYXNlIDE6CiAg
ICAgIHJldHVybiAqZmllbGQ7CgogICAgY2FzZSAyOgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBp
bnQpIChmaWVsZFsxXSkpIHwgKCgoaW50KSAoZmllbGRbMF0pKSA8PCA4KTsKCiAgICBjYXNlIDQ6
CiAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpIChmaWVsZFszXSkpCiAgICAgICAgfCAoKCh1
bnNpZ25lZCBsb25nKSAoZmllbGRbMl0pKSA8PCA4KQogICAgICAgIHwgKCgodW5zaWduZWQgbG9u
ZykgKGZpZWxkWzFdKSkgPDwgMTYpCiAgICAgICAgfCAoKCh1bnNpZ25lZCBsb25nKSAoZmllbGRb
MF0pKSA8PCAyNCk7CiMgNjg3ICJyZWFkZWxmLmMiCiAgICBjYXNlIDg6CiAgICBjYXNlIC04OgoK
CgoKICAgICAgcmV0dXJuICgoYmZkX3ZtYSkgKGZpZWxkWzddKSkKICAgICAgICB8ICgoKGJmZF92
bWEpIChmaWVsZFs2XSkpIDw8IDgpCiAgICAgICAgfCAoKChiZmRfdm1hKSAoZmllbGRbNV0pKSA8
PCAxNikKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFs0XSkpIDw8IDI0KQogICAgICAgIHwg
KCgoYmZkX3ZtYSkgKGZpZWxkWzNdKSkgPDwgMzIpCiAgICAgICAgfCAoKChiZmRfdm1hKSAoZmll
bGRbMl0pKSA8PCA0MCkKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFsxXSkpIDw8IDQ4KQog
ICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzBdKSkgPDwgNTYpOwoKCiAgICBkZWZhdWx0Ogog
ICAgICBlcnJvciAoKCJVbmhhbmRsZWQgZGF0YSBsZW5ndGg6ICVkXG4iKSwgc2l6ZSk7CiAgICAg
IGFib3J0ICgpOwogICAgfQp9CgoKCnN0YXRpYyBpbnQKZ3Vlc3NfaXNfcmVsYSAoZV9tYWNoaW5l
KQogICAgIHVuc2lnbmVkIGxvbmcgZV9tYWNoaW5lOwp7CiAgc3dpdGNoIChlX21hY2hpbmUpCiAg
ICB7CgogICAgY2FzZSA0MDoKICAgIGNhc2UgMzoKICAgIGNhc2UgNjoKICAgIGNhc2UgMTk6CiAg
ICBjYXNlIDB4NWFhNToKICAgIGNhc2UgOTI6CiAgICBjYXNlIDB4ODQ3MjoKICAgIGNhc2UgODg6
CiAgICBjYXNlIDB4OTA0MToKICAgIGNhc2UgODU6CiAgICBjYXNlIDB4NzY1MDoKICAgIGNhc2Ug
ODoKICAgIGNhc2UgMTA6CiAgICAgIHJldHVybiAwOwoKCiAgICBjYXNlIDQ6CiAgICBjYXNlIDQ2
OgogICAgY2FzZSA0NzoKICAgIGNhc2UgNDg6CiAgICBjYXNlIDE4OgogICAgY2FzZSA0MzoKICAg
IGNhc2UgMjoKICAgIGNhc2UgMjA6CiAgICBjYXNlIDIxOgogICAgY2FzZSA4NzoKICAgIGNhc2Ug
MHg5MDgwOgogICAgY2FzZSA4NjoKICAgIGNhc2UgMHg3Njc2OgogICAgY2FzZSA5MDoKICAgIGNh
c2UgMHhkZWFkOgogICAgY2FzZSA4OToKICAgIGNhc2UgMHhiZWVmOgogICAgY2FzZSA4NDoKICAg
IGNhc2UgMHgzMzMwOgogICAgY2FzZSAweDU0NDE6CiAgICBjYXNlIDQyOgogICAgY2FzZSAweDkw
MjY6CiAgICBjYXNlIDM5OgogICAgY2FzZSA1MDoKICAgIGNhc2UgODM6CiAgICBjYXNlIDB4MTA1
NzoKICAgIGNhc2UgNzY6CiAgICBjYXNlIDc6CiAgICBjYXNlIDYyOgogICAgY2FzZSAyMjoKICAg
IGNhc2UgMHhhMzkwOgogICAgY2FzZSA4MDoKICAgIGNhc2UgMTA1OgogICAgY2FzZSAweDEwNTk6
CiAgICBjYXNlIDB4YWQ0NToKICAgIGNhc2UgNzU6CiAgICBjYXNlIDEwMToKICAgIGNhc2UgMHg4
MjE3OgogICAgY2FzZSAweEZFQkE6CiAgICAgIHJldHVybiAxOwoKICAgIGNhc2UgNTQ6CiAgICBj
YXNlIDU1OgogICAgY2FzZSA1NjoKICAgIGNhc2UgNTc6CiAgICBjYXNlIDU4OgogICAgY2FzZSA1
OToKICAgIGNhc2UgNjA6CiAgICBjYXNlIDYxOgogICAgY2FzZSA2NjoKICAgIGNhc2UgNjc6CiAg
ICBjYXNlIDY4OgogICAgY2FzZSA2OToKICAgIGNhc2UgNzA6CiAgICBjYXNlIDcxOgogICAgY2Fz
ZSA3MjoKICAgIGNhc2UgNzM6CiAgICBjYXNlIDc0OgogICAgZGVmYXVsdDoKICAgICAgd2FybiAo
KCJEb24ndCBrbm93IGFib3V0IHJlbG9jYXRpb25zIG9uIHRoaXMgbWFjaGluZSBhcmNoaXRlY3R1
cmVcbiIpKTsKICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCnN0YXRpYyBpbnQKc2x1cnBfcmVsYV9y
ZWxvY3MgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9zaXplLCByZWxhc3AsIG5yZWxhc3ApCiAgICAg
RklMRSAqZmlsZTsKICAgICB1bnNpZ25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQg
bG9uZyByZWxfc2l6ZTsKICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqKnJlbGFzcDsKICAgICB1bnNp
Z25lZCBsb25nICpucmVsYXNwOwp7CiAgRWxmX0ludGVybmFsX1JlbGEgKnJlbGFzOwogIHVuc2ln
bmVkIGxvbmcgbnJlbGFzOwogIHVuc2lnbmVkIGludCBpOwoKICBpZiAoaXNfMzJiaXRfZWxmKQog
ICAgewogICAgICBFbGYzMl9FeHRlcm5hbF9SZWxhICplcmVsYXM7CgogICAgICBlcmVsYXMgPSAo
RWxmMzJfRXh0ZXJuYWxfUmVsYSAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHJlbF9v
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJlbGFzKQogICAgICAgIHJldHVybiAw
OwoKICAgICAgbnJlbGFzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbGEp
OwoKICAgICAgcmVsYXMgPSAoRWxmX0ludGVybmFsX1JlbGEgKikKICAgICAgICBtYWxsb2MgKG5y
ZWxhcyAqIHNpemVvZiAoRWxmX0ludGVybmFsX1JlbGEpKTsKCiAgICAgIGlmIChyZWxhcyA9PSAo
KHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkgcGFy
c2luZyByZWxvY3MiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3Ig
KGkgPSAwOyBpIDwgbnJlbGFzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsYXNbaV0ucl9v
ZmZzZXQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfb2Zmc2V0LCBzaXplb2YgKGVyZWxhc1tpXS5y
X29mZnNldCkpOwogICAgICAgICAgcmVsYXNbaV0ucl9pbmZvID0gYnl0ZV9nZXQgKGVyZWxhc1tp
XS5yX2luZm8sIHNpemVvZiAoZXJlbGFzW2ldLnJfaW5mbykpOwogICAgICAgICAgcmVsYXNbaV0u
cl9hZGRlbmQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfYWRkZW5kLCBzaXplb2YgKGVyZWxhc1tp
XS5yX2FkZGVuZCkpOwogICAgICAgIH0KCiAgICAgIGZyZWUgKGVyZWxhcyk7CiAgICB9CiAgZWxz
ZQogICAgewogICAgICBFbGY2NF9FeHRlcm5hbF9SZWxhICplcmVsYXM7CgogICAgICBlcmVsYXMg
PSAoRWxmNjRfRXh0ZXJuYWxfUmVsYSAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHJl
bF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJlbGFzKQogICAgICAgIHJldHVy
biAwOwoKICAgICAgbnJlbGFzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1Jl
bGEpOwoKICAgICAgcmVsYXMgPSAoRWxmX0ludGVybmFsX1JlbGEgKikKICAgICAgICBtYWxsb2Mg
KG5yZWxhcyAqIHNpemVvZiAoRWxmX0ludGVybmFsX1JlbGEpKTsKCiAgICAgIGlmIChyZWxhcyA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkg
cGFyc2luZyByZWxvY3MiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBm
b3IgKGkgPSAwOyBpIDwgbnJlbGFzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsYXNbaV0u
cl9vZmZzZXQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfb2Zmc2V0LCAtOCk7CiAgICAgICAgICBy
ZWxhc1tpXS5yX2luZm8gPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfaW5mbywgLTgpOwogICAgICAg
ICAgcmVsYXNbaV0ucl9hZGRlbmQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfYWRkZW5kLCAtOCk7
CiAgICAgICAgfQoKICAgICAgZnJlZSAoZXJlbGFzKTsKICAgIH0KICAqcmVsYXNwID0gcmVsYXM7
CiAgKm5yZWxhc3AgPSBucmVsYXM7CiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKc2x1cnBfcmVs
X3JlbG9jcyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3NpemUsIHJlbHNwLCBucmVsc3ApCiAgICAg
RklMRSAqZmlsZTsKICAgICB1bnNpZ25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQg
bG9uZyByZWxfc2l6ZTsKICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqKnJlbHNwOwogICAgIHVuc2ln
bmVkIGxvbmcgKm5yZWxzcDsKewogIEVsZl9JbnRlcm5hbF9SZWxhICpyZWxzOwogIHVuc2lnbmVk
IGxvbmcgbnJlbHM7CiAgdW5zaWduZWQgaW50IGk7CgogIGlmIChpc18zMmJpdF9lbGYpCiAgICB7
CiAgICAgIEVsZjMyX0V4dGVybmFsX1JlbCAqZXJlbHM7CgogICAgICBlcmVscyA9IChFbGYzMl9F
eHRlcm5hbF9SZWwgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCByZWxfb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbF9zaXplLCAo
InJlbG9jcyIpKTsKICAgICAgaWYgKCFlcmVscykKICAgICAgICByZXR1cm4gMDsKCiAgICAgIG5y
ZWxzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbCk7CgogICAgICByZWxz
ID0gKEVsZl9JbnRlcm5hbF9SZWxhICopIG1hbGxvYyAobnJlbHMgKiBzaXplb2YgKEVsZl9JbnRl
cm5hbF9SZWxhKSk7CgogICAgICBpZiAocmVscyA9PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAg
ICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkgcGFyc2luZyByZWxvY3MiKSk7CiAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykK
ICAgICAgICB7CiAgICAgICAgICByZWxzW2ldLnJfb2Zmc2V0ID0gYnl0ZV9nZXQgKGVyZWxzW2ld
LnJfb2Zmc2V0LCBzaXplb2YgKGVyZWxzW2ldLnJfb2Zmc2V0KSk7CiAgICAgICAgICByZWxzW2ld
LnJfaW5mbyA9IGJ5dGVfZ2V0IChlcmVsc1tpXS5yX2luZm8sIHNpemVvZiAoZXJlbHNbaV0ucl9p
bmZvKSk7CiAgICAgICAgICByZWxzW2ldLnJfYWRkZW5kID0gMDsKICAgICAgICB9CgogICAgICBm
cmVlIChlcmVscyk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBFbGY2NF9FeHRlcm5hbF9SZWwg
KmVyZWxzOwoKICAgICAgZXJlbHMgPSAoRWxmNjRfRXh0ZXJuYWxfUmVsICopIGdldF9kYXRhICgo
KHZvaWQgKikwKSwgZmlsZSwgcmVsX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJl
bHMpCiAgICAgICAgcmV0dXJuIDA7CgogICAgICBucmVscyA9IHJlbF9zaXplIC8gc2l6ZW9mIChF
bGY2NF9FeHRlcm5hbF9SZWwpOwoKICAgICAgcmVscyA9IChFbGZfSW50ZXJuYWxfUmVsYSAqKSBt
YWxsb2MgKG5yZWxzICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfUmVsYSkpOwoKICAgICAgaWYgKHJl
bHMgPT0gKCh2b2lkICopMCkpCiAgICAgICAgewogICAgICAgICAgZXJyb3IoKCJvdXQgb2YgbWVt
b3J5IHBhcnNpbmcgcmVsb2NzIikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAg
ICAgZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsc1tp
XS5yX29mZnNldCA9IGJ5dGVfZ2V0IChlcmVsc1tpXS5yX29mZnNldCwgLTgpOwogICAgICAgICAg
cmVsc1tpXS5yX2luZm8gPSBieXRlX2dldCAoZXJlbHNbaV0ucl9pbmZvLCAtOCk7CiAgICAgICAg
ICByZWxzW2ldLnJfYWRkZW5kID0gMDsKICAgICAgICB9CgogICAgICBmcmVlIChlcmVscyk7CiAg
ICB9CiAgKnJlbHNwID0gcmVsczsKICAqbnJlbHNwID0gbnJlbHM7CiAgcmV0dXJuIDE7Cn0KCgpz
dGF0aWMgaW50CmR1bXBfcmVsb2NhdGlvbnMgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9zaXplLCBz
eW10YWIsIG5zeW1zLCBzdHJ0YWIsIGlzX3JlbGEpCiAgICAgRklMRSAqZmlsZTsKICAgICB1bnNp
Z25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyByZWxfc2l6ZTsKICAgICBF
bGZfSW50ZXJuYWxfU3ltICpzeW10YWI7CiAgICAgdW5zaWduZWQgbG9uZyBuc3ltczsKICAgICBj
aGFyICpzdHJ0YWI7CiAgICAgaW50IGlzX3JlbGE7CnsKICB1bnNpZ25lZCBpbnQgaTsKICBFbGZf
SW50ZXJuYWxfUmVsYSAqcmVsczsKCgogIGlmIChpc19yZWxhID09IC0xKQogICAgaXNfcmVsYSA9
IGd1ZXNzX2lzX3JlbGEgKGVsZl9oZWFkZXIuZV9tYWNoaW5lKTsKCiAgaWYgKGlzX3JlbGEpCiAg
ICB7CiAgICAgIGlmICghc2x1cnBfcmVsYV9yZWxvY3MgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9z
aXplLCAmcmVscywgJnJlbF9zaXplKSkKICAgICAgICByZXR1cm4gMDsKICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIGlmICghc2x1cnBfcmVsX3JlbG9jcyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3Np
emUsICZyZWxzLCAmcmVsX3NpemUpKQogICAgICAgIHJldHVybiAwOwogICAgfQoKICBpZiAoaXNf
MzJiaXRfZWxmKQogICAgewogICAgICBpZiAoaXNfcmVsYSkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoZG9fd2lkZSkKICAgICAgICAgICAgcHJpbnRmICgoIiBPZmZzZXQgICAgIEluZm8gICAgVHlw
ZSAgICAgICAgICAgICAgICBTeW0uIFZhbHVlICBTeW1ib2wncyBOYW1lICsgQWRkZW5kXG4iKSk7
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50ZiAoKCIgT2Zmc2V0ICAgICBJbmZvICAg
IFR5cGUgICAgICAgICAgICBTeW0uVmFsdWUgIFN5bS4gTmFtZSArIEFkZGVuZFxuIikpOwogICAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlmIChkb193aWRlKQogICAgICAg
ICAgICBwcmludGYgKCgiIE9mZnNldCAgICAgSW5mbyAgICBUeXBlICAgICAgICAgICAgICAgIFN5
bS4gVmFsdWUgIFN5bWJvbCdzIE5hbWVcbiIpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
cHJpbnRmICgoIiBPZmZzZXQgICAgIEluZm8gICAgVHlwZSAgICAgICAgICAgIFN5bS5WYWx1ZSAg
U3ltLiBOYW1lXG4iKSk7CiAgICAgICAgfQogICAgfQogIGVsc2UKICAgIHsKICAgICAgaWYgKGlz
X3JlbGEpCiAgICAgICAgewogICAgICAgICAgaWYgKGRvX3dpZGUpCiAgICAgICAgICAgIHByaW50
ZiAoKCIgICAgT2Zmc2V0ICAgICAgICAgICAgIEluZm8gICAgICAgICAgICBUeXBlICAgICAgICAg
ICAgICAgU3ltYm9sJ3MgVmFsdWUgIFN5bWJvbCdzIE5hbWUgKyBBZGRlbmRcbiIpKTsKICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0ICAgICAgICAgIEluZm8gICAg
ICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3ltLiBOYW1lICsgQWRkZW5kXG4i
KSk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgaWYgKGRvX3dpZGUp
CiAgICAgICAgICAgIHByaW50ZiAoKCIgICAgT2Zmc2V0ICAgICAgICAgICAgIEluZm8gICAgICAg
ICAgICBUeXBlICAgICAgICAgICAgICAgU3ltYm9sJ3MgVmFsdWUgIFN5bWJvbCdzIE5hbWVcbiIp
KTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0ICAgICAgICAg
IEluZm8gICAgICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3ltLiBOYW1lXG4i
KSk7CiAgICAgICAgfQogICAgfQoKICBmb3IgKGkgPSAwOyBpIDwgcmVsX3NpemU7IGkrKykKICAg
IHsKICAgICAgY29uc3QgY2hhciAqcnR5cGU7CiAgICAgIGNvbnN0IGNoYXIgKnJ0eXBlMiA9ICgo
dm9pZCAqKTApOwogICAgICBjb25zdCBjaGFyICpydHlwZTMgPSAoKHZvaWQgKikwKTsKICAgICAg
YmZkX3ZtYSBvZmZzZXQ7CiAgICAgIGJmZF92bWEgaW5mbzsKICAgICAgYmZkX3ZtYSBzeW10YWJf
aW5kZXg7CiAgICAgIGJmZF92bWEgdHlwZTsKICAgICAgYmZkX3ZtYSB0eXBlMiA9IChiZmRfdm1h
KSAoKHZvaWQgKikwKTsKICAgICAgYmZkX3ZtYSB0eXBlMyA9IChiZmRfdm1hKSAoKHZvaWQgKikw
KTsKCiAgICAgIG9mZnNldCA9IHJlbHNbaV0ucl9vZmZzZXQ7CiAgICAgIGluZm8gPSByZWxzW2ld
LnJfaW5mbzsKCiAgICAgIGlmIChpc18zMmJpdF9lbGYpCiAgICAgICAgewogICAgICAgICAgdHlw
ZSA9ICgoaW5mbykgJiAweGZmKTsKICAgICAgICAgIHN5bXRhYl9pbmRleCA9ICgoaW5mbykgPj4g
OCk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewoKCgoKICAgICAgICAgIGlmIChlbGZf
aGVhZGVyLmVfbWFjaGluZSA9PSA4KQogICAgICAgICAgICB7CgoKCgogICAgICAgICAgICAgIGlm
IChlbGZfaGVhZGVyLmVfaWRlbnRbNV0gIT0gMikKICAgICAgICAgICAgICAgIGluZm8gPSAoKChp
bmZvICYgMHhmZmZmZmZmZikgPDwgMzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZv
ID4+IDU2KSAmIDB4ZmYpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZvID4+IDQwKSAm
IDB4ZmYwMCkKICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGluZm8gPj4gMjQpICYgMHhmZjAw
MDApCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZvID4+IDgpICYgMHhmZjAwMDAwMCkp
OwogICAgICAgICAgICAgIHR5cGUgPSAoKGluZm8pICYgMHhmZik7CiAgICAgICAgICAgICAgdHlw
ZTIgPSAoKChpbmZvKSA+PiA4KSAmIDB4ZmYpOwogICAgICAgICAgICAgIHR5cGUzID0gKCgoaW5m
bykgPj4gMTYpICYgMHhmZik7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGVsZl9o
ZWFkZXIuZV9tYWNoaW5lID09IDQzKQogICAgICAgICAgICB0eXBlID0gKChpbmZvKSAmIDB4ZmYp
OwogICAgICAgICAgZWxzZQogICAgICAgICAgICB0eXBlID0gKChpbmZvKSAmIDB4ZmZmZmZmZmYp
OwoKICAgICAgICAgIHN5bXRhYl9pbmRleCA9ICgoaW5mbykgPj4gMzIpOwoKICAgICAgICB9Cgog
ICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHsKCiAgICAgICAgICBwcmludGYgKCIlOC44
bHggICU4LjhseCAiLCAoKHVuc2lnbmVkIGxvbmcpICgoKG9mZnNldCkgJiAweGZmZmZmZmZmKSkp
LCAoKHVuc2lnbmVkIGxvbmcpICgoKGluZm8pICYgMHhmZmZmZmZmZikpKSk7CgoKCiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgIHByaW50ZiAoZG9fd2lkZQogICAgICAg
ICAgICAgICAgICA/ICIlOC44bHglOC44bHggICU4LjhseCU4LjhseCAiCiAgICAgICAgICAgICAg
ICAgIDogIiU0LjRseCU4LjhseCAgJTQuNGx4JTguOGx4ICIsCiAgICAgICAgICAgICAgICAgICgo
dW5zaWduZWQgbG9uZykgKCgob2Zmc2V0KSA+PiAzMikgJiAweGZmZmZmZmZmKSksCiAgICAgICAg
ICAgICAgICAgICgodW5zaWduZWQgbG9uZykgKCgob2Zmc2V0KSAmIDB4ZmZmZmZmZmYpKSksCiAg
ICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykgKCgoaW5mbykgPj4gMzIpICYgMHhmZmZm
ZmZmZikpLAogICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpICgoKGluZm8pICYgMHhm
ZmZmZmZmZikpKSk7CgoKCgoKCiAgICAgICAgfQoKICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVf
bWFjaGluZSkKICAgICAgICB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJ0eXBlID0gKCh2
b2lkICopMCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4ODoKICAgICAgICBjYXNl
IDB4OTA0MToKICAgICAgICAgIHJ0eXBlID0gZWxmX20zMnJfcmVsb2NfdHlwZSAodHlwZSk7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgIGNhc2UgNjoKICAgICAgICAg
IHJ0eXBlID0gZWxmX2kzODZfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSA3MDoKICAgICAgICBjYXNlIDUzOgogICAgICAgICAgcnR5cGUgPSBlbGZfbTY4
aGMxMV9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6
CiAgICAgICAgICBydHlwZSA9IGVsZl9tNjhrX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgMTk6CiAgICAgICAgICBydHlwZSA9IGVsZl9pOTYwX3JlbG9j
X3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODM6CiAgICAgICAg
Y2FzZSAweDEwNTc6CiAgICAgICAgICBydHlwZSA9IGVsZl9hdnJfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAxMToKICAgICAgICBjYXNlIDE4OgogICAg
ICAgIGNhc2UgNDM6CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgcnR5cGUgPSBlbGZfc3BhcmNf
cmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NzoKICAg
ICAgICBjYXNlIDB4OTA4MDoKICAgICAgICAgIHJ0eXBlID0gdjg1MF9yZWxvY190eXBlICh0eXBl
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg1OgogICAgICAgIGNhc2UgMHg3NjUw
OgogICAgICAgICAgcnR5cGUgPSBlbGZfZDEwdl9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDg2OgogICAgICAgIGNhc2UgMHg3Njc2OgogICAgICAgICAg
cnR5cGUgPSBlbGZfZDMwdl9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIDB4NWFhNToKICAgICAgICAgIHJ0eXBlID0gZWxmX2RseF9yZWxvY190eXBlICh0
eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQyOgogICAgICAgICAgcnR5cGUg
PSBlbGZfc2hfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSA4OToKICAgICAgICBjYXNlIDB4YmVlZjoKICAgICAgICAgIHJ0eXBlID0gZWxmX21uMTAzMDBf
cmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MDoKICAg
ICAgICBjYXNlIDB4ZGVhZDoKICAgICAgICAgIHJ0eXBlID0gZWxmX21uMTAyMDBfcmVsb2NfdHlw
ZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NDoKICAgICAgICBjYXNl
IDB4MzMzMDoKICAgICAgICAgIHJ0eXBlID0gZWxmX2ZyMzBfcmVsb2NfdHlwZSAodHlwZSk7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDU0NDE6CiAgICAgICAgICBydHlwZSA9IGVs
Zl9mcnZfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAz
OToKICAgICAgICAgIHJ0eXBlID0gZWxmX21jb3JlX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgODA6CiAgICAgICAgICBydHlwZSA9IGVsZl9tbWl4X3Jl
bG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTA1OgogICAg
ICAgIGNhc2UgMHgxMDU5OgogICAgICAgICAgcnR5cGUgPSBlbGZfbXNwNDMwX3JlbG9jX3R5cGUg
KHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjA6CiAgICAgICAgICBydHlw
ZSA9IGVsZl9wcGNfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAyMToKICAgICAgICAgIHJ0eXBlID0gZWxmX3BwYzY0X3JlbG9jX3R5cGUgKHR5cGUpOwog
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODoKICAgICAgICBjYXNlIDEwOgogICAgICAg
ICAgcnR5cGUgPSBlbGZfbWlwc19yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGlmICghaXNf
MzJiaXRfZWxmKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcnR5cGUyID0gZWxmX21pcHNf
cmVsb2NfdHlwZSAodHlwZTIpOwogICAgICAgICAgICAgIHJ0eXBlMyA9IGVsZl9taXBzX3JlbG9j
X3R5cGUgKHR5cGUzKTsKICAgICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHg5MDI2OgogICAgICAgICAgcnR5cGUgPSBlbGZfYWxwaGFfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0MDoKICAgICAgICAgIHJ0eXBlID0gZWxm
X2FybV9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ1
OgogICAgICAgICAgcnR5cGUgPSBlbGZfYXJjX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgMTU6CiAgICAgICAgICBydHlwZSA9IGVsZl9ocHBhX3JlbG9j
X3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDY6CiAgICAgICAg
Y2FzZSA0NzoKICAgICAgICBjYXNlIDQ4OgogICAgICAgICAgcnR5cGUgPSBlbGZfaDhfcmVsb2Nf
dHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MjoKICAgICAgICBj
YXNlIDB4ODQ3MjoKICAgICAgICAgIHJ0eXBlID0gZWxmX29yMzJfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MToKICAgICAgICBjYXNlIDk5OgogICAg
ICAgICAgcnR5cGUgPSBlbGZfcGpfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlIDUwOgogICAgICAgICAgcnR5cGUgPSBlbGZfaWE2NF9yZWxvY190eXBlICh0
eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc2OgogICAgICAgICAgcnR5cGUg
PSBlbGZfY3Jpc19yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBj
YXNlIDc6CiAgICAgICAgICBydHlwZSA9IGVsZl9pODYwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNjI6CiAgICAgICAgICBydHlwZSA9IGVsZl94ODZf
NjRfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5Ogog
ICAgICAgICAgcnR5cGUgPSBpMzcwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7
CgogICAgICAgIGNhc2UgMHhhMzkwOgogICAgICAgIGNhc2UgMjI6CiAgICAgICAgICBydHlwZSA9
IGVsZl9zMzkwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHhhZDQ1OgogICAgICAgICAgcnR5cGUgPSBlbGZfeHN0b3JteTE2X3JlbG9jX3R5cGUgKHR5
cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNzU6CiAgICAgICAgICBydHlwZSA9
IGVsZl92YXhfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAxMDE6CiAgICAgICAgY2FzZSAweDgyMTc6CiAgICAgICAgICBydHlwZSA9IGVsZl9pcDJrX3Jl
bG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRUJBOgog
ICAgICAgICAgcnR5cGUgPSBlbGZfaXEyMDAwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHJ0eXBlID09ICgodm9pZCAqKTApKQoKICAgICAg
ICBwcmludGYgKCgidW5yZWNvZ25pemVkOiAlLTdseCIpLCAoKHVuc2lnbmVkIGxvbmcpICgoKHR5
cGUpICYgMHhmZmZmZmZmZikpKSk7CgoKCiAgICAgIGVsc2UKICAgICAgICBwcmludGYgKGRvX3dp
ZGUgPyAiJS0yMS4yMXMiIDogIiUtMTcuMTdzIiwgcnR5cGUpOwoKICAgICAgaWYgKHN5bXRhYl9p
bmRleCkKICAgICAgICB7CiAgICAgICAgICBpZiAoc3ltdGFiID09ICgodm9pZCAqKTApIHx8IHN5
bXRhYl9pbmRleCA+PSBuc3ltcykKICAgICAgICAgICAgcHJpbnRmICgiIGJhZCBzeW1ib2wgaW5k
ZXg6ICUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpIHN5bXRhYl9pbmRleCk7CiAgICAgICAgICBlbHNl
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfU3ltICpwc3ltOwoKICAg
ICAgICAgICAgICBwc3ltID0gc3ltdGFiICsgc3ltdGFiX2luZGV4OwoKICAgICAgICAgICAgICBw
cmludGYgKCIgIik7CiAgICAgICAgICAgICAgcHJpbnRfdm1hIChwc3ltLT5zdF92YWx1ZSwgTE9O
R19IRVgpOwogICAgICAgICAgICAgIHByaW50ZiAoaXNfMzJiaXRfZWxmID8gIiAgICIgOiAiICIp
OwoKICAgICAgICAgICAgICBpZiAocHN5bS0+c3RfbmFtZSA9PSAwKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWNfbmFtZSA9ICI8bnVsbD4iOwogICAg
ICAgICAgICAgICAgICBjaGFyIG5hbWVfYnVmWzQwXTsKCiAgICAgICAgICAgICAgICAgIGlmICgo
KHBzeW0tPnN0X2luZm8pICYgMHhGKSA9PSAzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIGJmZF92bWEgc2VjX2luZGV4ID0gKGJmZF92bWEpIC0xOwoKICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwc3ltLT5zdF9zaG5keCA8IDB4RkYwMCkKICAgICAgICAgICAg
ICAgICAgICAgICAgc2VjX2luZGV4ID0gcHN5bS0+c3Rfc2huZHg7CiAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChwc3ltLT5zdF9zaG5keCA+IDB4RkYwMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgc2VjX2luZGV4ID0gcHN5bS0+c3Rfc2huZHggLSAoMHhGRkZGICsgMQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDB4RkYwMCk7Cgog
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY19pbmRleCAhPSAoYmZkX3ZtYSkgLTEpCiAgICAg
ICAgICAgICAgICAgICAgICAgIHNlY19uYW1lID0gKChzZWN0aW9uX2hlYWRlcnMgKyBzZWNfaW5k
ZXgpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb25faGVhZGVycyArIHNlY19p
bmRleCktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlY3Rpb25faGVhZGVycyArIHNlY19pbmRleCktPnNoX25hbWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGMSkKICAg
ICAgICAgICAgICAgICAgICAgICAgc2VjX25hbWUgPSAiQUJTIjsKICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGMikKICAgICAgICAgICAgICAgICAg
ICAgICAgc2VjX25hbWUgPSAiQ09NTU9OIjsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYg
KG5hbWVfYnVmLCAiPHNlY3Rpb24gMHgleD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh1bnNpZ25lZCBpbnQpIHBzeW0tPnN0X3NobmR4KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWNfbmFtZSA9IG5hbWVfYnVmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBwcmludF9zeW1ib2wgKDIyLCBz
ZWNfbmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZiAoc3RydGFi
ID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcHJpbnRmICgoIjxzdHJpbmcgdGFibGUg
aW5kZXggJTNsZD4iKSwgcHN5bS0+c3RfbmFtZSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgcHJpbnRfc3ltYm9sICgyMiwgc3RydGFiICsgcHN5bS0+c3RfbmFtZSk7CgogICAg
ICAgICAgICAgIGlmIChpc19yZWxhKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICsgJWx4Iiwg
KHVuc2lnbmVkIGxvbmcpIHJlbHNbaV0ucl9hZGRlbmQpOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICBlbHNlIGlmIChpc19yZWxhKQogICAgICAgIHsKICAgICAgICAgIHByaW50ZiAoIiUq
YyIsIGlzXzMyYml0X2VsZiA/IChkb193aWRlID8gMzQgOiAyOCkgOiAoZG9fd2lkZSA/IDI2IDog
MjApLCAnICcpOwogICAgICAgICAgcHJpbnRfdm1hIChyZWxzW2ldLnJfYWRkZW5kLCBMT05HX0hF
WCk7CiAgICAgICAgfQoKICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQzCiAgICAg
ICAgICAmJiAhX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHJ0eXBlKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfU1BB
UkNfT0xPMTAiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHJ0eXBlKSwgX19zMl9sZW4gPSBzdHJs
ZW4gKCJSX1NQQVJDX09MTzEwIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHJ0eXBlKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShydHlwZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0g
NCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfU1BBUkNfT0xPMTAiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiUl9TUEFSQ19PTE8xMCIpID09IDEpIHx8IF9fczJfbGVu
ID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAocnR5cGUpLCAoX19jb25zdCBjaGFy
ICopICgiUl9TUEFSQ19PTE8xMCIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDog
X19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHJ0eXBlKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgocnR5cGUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHJ0
eXBlKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHJ0eXBlKSwgX19zMV9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfU1BBUkNfT0xPMTAiKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIlJfU1BBUkNfT0xPMTAiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiUl9TUEFSQ19PTE8xMCIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHJ0eXBlKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCJSX1NQQVJDX09MTzEwIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHJ0eXBlKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiUl9TUEFSQ19PTE8xMCIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChydHlwZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIlJfU1BBUkNfT0xPMTAiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVz
dWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHJ0eXBlKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9f
ZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpOyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAocnR5cGUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAocnR5cGUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocnR5cGUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHJ0eXBlKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wICgiUl9TUEFSQ19PTE8xMCIpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiUl9TUEFSQ19PTE8xMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCJSX1NQQVJDX09MTzEwIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiUl9TUEFSQ19P
TE8xMCIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChydHlwZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHJ0eXBlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShydHlwZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocnR5cGUp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIlJfU1BB
UkNfT0xPMTAiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocnR5
cGUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJS
X1NQQVJDX09MTzEwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHJ0eXBlKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiUl9TUEFSQ19PTE8xMCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAocnR5cGUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJSX1NQQVJDX09MTzEwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJ0eXBlKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
X19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJS
X1NQQVJDX09MTzEwIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJSX1NQQVJDX09MTzEwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpKVsyXSk7IGlmIChfX3MyX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX1NQQVJDX09MTzEwIikpWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChydHlwZSwgIlJfU1BBUkNfT0xPMTAiKSkpKTsg
fSkpCiAgICAgICAgcHJpbnRmICgiICsgJWx4IiwgKHVuc2lnbmVkIGxvbmcpICgoKGJmZF9zaWdu
ZWRfdm1hKSgoKGluZm8pICYgMHhmZmZmZmZmZikgPj4gOCkgXiAweDgwMDAwMCkgLSAweDgwMDAw
MCkpOwoKICAgICAgcHV0Y2hhciAoJ1xuJyk7CgogICAgICBpZiAoISBpc18zMmJpdF9lbGYgJiYg
ZWxmX2hlYWRlci5lX21hY2hpbmUgPT0gOCkKICAgICAgICB7CiAgICAgICAgICBwcmludGYgKCIg
ICAgICAgICAgICAgICAgICAgIFR5cGUyOiAiKTsKCiAgICAgICAgICBpZiAocnR5cGUyID09ICgo
dm9pZCAqKTApKQoKICAgICAgICAgICAgcHJpbnRmICgoInVucmVjb2duaXplZDogJS03bHgiKSwg
KCh1bnNpZ25lZCBsb25nKSAoKCh0eXBlMikgJiAweGZmZmZmZmZmKSkpKTsKCgoKICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJS0xNy4xN3MiLCBydHlwZTIpOwoKICAgICAgICAg
IHByaW50ZigiXG4gICAgICAgICAgICAgICAgICAgIFR5cGUzOiAiKTsKCiAgICAgICAgICBpZiAo
cnR5cGUzID09ICgodm9pZCAqKTApKQoKICAgICAgICAgICAgcHJpbnRmICgoInVucmVjb2duaXpl
ZDogJS03bHgiKSwgKCh1bnNpZ25lZCBsb25nKSAoKCh0eXBlMykgJiAweGZmZmZmZmZmKSkpKTsK
CgoKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJS0xNy4xN3MiLCBydHlwZTMp
OwoKICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgIH0KICAgIH0KCiAgZnJlZSAocmVs
cyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9taXBzX2R5bmFtaWNf
dHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAg
ICB7CiAgICBjYXNlIDB4NzAwMDAwMDE6IHJldHVybiAiTUlQU19STERfVkVSU0lPTiI7CiAgICBj
YXNlIDB4NzAwMDAwMDI6IHJldHVybiAiTUlQU19USU1FX1NUQU1QIjsKICAgIGNhc2UgMHg3MDAw
MDAwMzogcmV0dXJuICJNSVBTX0lDSEVDS1NVTSI7CiAgICBjYXNlIDB4NzAwMDAwMDQ6IHJldHVy
biAiTUlQU19JVkVSU0lPTiI7CiAgICBjYXNlIDB4NzAwMDAwMDU6IHJldHVybiAiTUlQU19GTEFH
UyI7CiAgICBjYXNlIDB4NzAwMDAwMDY6IHJldHVybiAiTUlQU19CQVNFX0FERFJFU1MiOwogICAg
Y2FzZSAweDcwMDAwMDA3OiByZXR1cm4gIk1JUFNfTVNZTSI7CiAgICBjYXNlIDB4NzAwMDAwMDg6
IHJldHVybiAiTUlQU19DT05GTElDVCI7CiAgICBjYXNlIDB4NzAwMDAwMDk6IHJldHVybiAiTUlQ
U19MSUJMSVNUIjsKICAgIGNhc2UgMHg3MDAwMDAwYTogcmV0dXJuICJNSVBTX0xPQ0FMX0dPVE5P
IjsKICAgIGNhc2UgMHg3MDAwMDAwYjogcmV0dXJuICJNSVBTX0NPTkZMSUNUTk8iOwogICAgY2Fz
ZSAweDcwMDAwMDEwOiByZXR1cm4gIk1JUFNfTElCTElTVE5PIjsKICAgIGNhc2UgMHg3MDAwMDAx
MTogcmV0dXJuICJNSVBTX1NZTVRBQk5PIjsKICAgIGNhc2UgMHg3MDAwMDAxMjogcmV0dXJuICJN
SVBTX1VOUkVGRVhUTk8iOwogICAgY2FzZSAweDcwMDAwMDEzOiByZXR1cm4gIk1JUFNfR09UU1lN
IjsKICAgIGNhc2UgMHg3MDAwMDAxNDogcmV0dXJuICJNSVBTX0hJUEFHRU5PIjsKICAgIGNhc2Ug
MHg3MDAwMDAxNjogcmV0dXJuICJNSVBTX1JMRF9NQVAiOwogICAgY2FzZSAweDcwMDAwMDE3OiBy
ZXR1cm4gIk1JUFNfREVMVEFfQ0xBU1MiOwogICAgY2FzZSAweDcwMDAwMDE4OiByZXR1cm4gIk1J
UFNfREVMVEFfQ0xBU1NfTk8iOwogICAgY2FzZSAweDcwMDAwMDE5OiByZXR1cm4gIk1JUFNfREVM
VEFfSU5TVEFOQ0UiOwogICAgY2FzZSAweDcwMDAwMDFhOiByZXR1cm4gIk1JUFNfREVMVEFfSU5T
VEFOQ0VfTk8iOwogICAgY2FzZSAweDcwMDAwMDFiOiByZXR1cm4gIk1JUFNfREVMVEFfUkVMT0Mi
OwogICAgY2FzZSAweDcwMDAwMDFjOiByZXR1cm4gIk1JUFNfREVMVEFfUkVMT0NfTk8iOwogICAg
Y2FzZSAweDcwMDAwMDFkOiByZXR1cm4gIk1JUFNfREVMVEFfU1lNIjsKICAgIGNhc2UgMHg3MDAw
MDAxZTogcmV0dXJuICJNSVBTX0RFTFRBX1NZTV9OTyI7CiAgICBjYXNlIDB4NzAwMDAwMjA6IHJl
dHVybiAiTUlQU19ERUxUQV9DTEFTU1NZTSI7CiAgICBjYXNlIDB4NzAwMDAwMjE6IHJldHVybiAi
TUlQU19ERUxUQV9DTEFTU1NZTV9OTyI7CiAgICBjYXNlIDB4NzAwMDAwMjI6IHJldHVybiAiTUlQ
U19DWFhfRkxBR1MiOwogICAgY2FzZSAweDcwMDAwMDIzOiByZXR1cm4gIk1JUFNfUElYSUVfSU5J
VCI7CiAgICBjYXNlIDB4NzAwMDAwMjQ6IHJldHVybiAiTUlQU19TWU1CT0xfTElCIjsKICAgIGNh
c2UgMHg3MDAwMDAyNTogcmV0dXJuICJNSVBTX0xPQ0FMUEFHRV9HT1RJRFgiOwogICAgY2FzZSAw
eDcwMDAwMDI2OiByZXR1cm4gIk1JUFNfTE9DQUxfR09USURYIjsKICAgIGNhc2UgMHg3MDAwMDAy
NzogcmV0dXJuICJNSVBTX0hJRERFTl9HT1RJRFgiOwogICAgY2FzZSAweDcwMDAwMDI4OiByZXR1
cm4gIk1JUFNfUFJPVEVDVEVEX0dPVElEWCI7CiAgICBjYXNlIDB4NzAwMDAwMjk6IHJldHVybiAi
TUlQU19PUFRJT05TIjsKICAgIGNhc2UgMHg3MDAwMDAyYTogcmV0dXJuICJNSVBTX0lOVEVSRkFD
RSI7CiAgICBjYXNlIDB4NzAwMDAwMmI6IHJldHVybiAiTUlQU19EWU5TVFJfQUxJR04iOwogICAg
Y2FzZSAweDcwMDAwMDJjOiByZXR1cm4gIk1JUFNfSU5URVJGQUNFX1NJWkUiOwogICAgY2FzZSAw
eDcwMDAwMDJkOiByZXR1cm4gIk1JUFNfUkxEX1RFWFRfUkVTT0xWRV9BRERSIjsKICAgIGNhc2Ug
MHg3MDAwMDAyZTogcmV0dXJuICJNSVBTX1BFUkZfU1VGRklYIjsKICAgIGNhc2UgMHg3MDAwMDAy
ZjogcmV0dXJuICJNSVBTX0NPTVBBQ1RfU0laRSI7CiAgICBjYXNlIDB4NzAwMDAwMzA6IHJldHVy
biAiTUlQU19HUF9WQUxVRSI7CiAgICBjYXNlIDB4NzAwMDAwMzE6IHJldHVybiAiTUlQU19BVVhf
RFlOQU1JQyI7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9Cn0K
CnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3NwYXJjNjRfZHluYW1pY190eXBlICh0eXBlKQogICAg
IHVuc2lnbmVkIGxvbmcgdHlwZTsKewogIHN3aXRjaCAodHlwZSkKICAgIHsKICAgIGNhc2UgMHg3
MDAwMDAwMTogcmV0dXJuICJTUEFSQ19SRUdJU1RFUiI7CiAgICBkZWZhdWx0OgogICAgICByZXR1
cm4gKCh2b2lkICopMCk7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3BwYzY0X2R5
bmFtaWNfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5
cGUpCiAgICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJldHVybiAiUFBDNjRfR0xJTksiOwogICAg
Y2FzZSAoMHg3MDAwMDAwMCArIDEpOiByZXR1cm4gIlBQQzY0X09QRCI7CiAgICBjYXNlICgweDcw
MDAwMDAwICsgMik6IHJldHVybiAiUFBDNjRfT1BEU1oiOwogICAgZGVmYXVsdDoKICAgICAgcmV0
dXJuICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9wYXJpc2Nf
ZHluYW1pY190eXBlICh0eXBlKQogICAgIHVuc2lnbmVkIGxvbmcgdHlwZTsKewogIHN3aXRjaCAo
dHlwZSkKICAgIHsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDApOiByZXR1cm4gIkhQX0xPQURf
TUFQIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDEpOiByZXR1cm4gIkhQX0RMRF9GTEFHUyI7
CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgyKTogcmV0dXJuICJIUF9ETERfSE9PSyI7CiAgICBj
YXNlICgweDYwMDAwMDAwICsgMHgzKTogcmV0dXJuICJIUF9VWDEwX0lOSVQiOwogICAgY2FzZSAo
MHg2MDAwMDAwMCArIDB4NCk6IHJldHVybiAiSFBfVVgxMF9JTklUU1oiOwogICAgY2FzZSAoMHg2
MDAwMDAwMCArIDB4NSk6IHJldHVybiAiSFBfUFJFSU5JVCI7CiAgICBjYXNlICgweDYwMDAwMDAw
ICsgMHg2KTogcmV0dXJuICJIUF9QUkVJTklUU1oiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4
Nyk6IHJldHVybiAiSFBfTkVFREVEIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDgpOiByZXR1
cm4gIkhQX1RJTUVfU1RBTVAiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4OSk6IHJldHVybiAi
SFBfQ0hFQ0tTVU0iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4YSk6IHJldHVybiAiSFBfR1NU
X1NJWkUiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4Yik6IHJldHVybiAiSFBfR1NUX1ZFUlNJ
T04iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4Yyk6IHJldHVybiAiSFBfR1NUX0hBU0hWQUwi
OwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMg
Y29uc3QgY2hhciAqCmdldF9pYTY0X2R5bmFtaWNfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBs
b25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlICgweDcwMDAwMDAwICsg
MCk6IHJldHVybiAiSUFfNjRfUExUX1JFU0VSVkUiOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9keW5hbWljX3R5
cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0eXBlOwp7CiAgc3RhdGljIGNoYXIgYnVmZlsz
Ml07CgogIHN3aXRjaCAodHlwZSkKICAgIHsKICAgIGNhc2UgMDogcmV0dXJuICJOVUxMIjsKICAg
IGNhc2UgMTogcmV0dXJuICJORUVERUQiOwogICAgY2FzZSAyOiByZXR1cm4gIlBMVFJFTFNaIjsK
ICAgIGNhc2UgMzogcmV0dXJuICJQTFRHT1QiOwogICAgY2FzZSA0OiByZXR1cm4gIkhBU0giOwog
ICAgY2FzZSA1OiByZXR1cm4gIlNUUlRBQiI7CiAgICBjYXNlIDY6IHJldHVybiAiU1lNVEFCIjsK
ICAgIGNhc2UgNzogcmV0dXJuICJSRUxBIjsKICAgIGNhc2UgODogcmV0dXJuICJSRUxBU1oiOwog
ICAgY2FzZSA5OiByZXR1cm4gIlJFTEFFTlQiOwogICAgY2FzZSAxMDogcmV0dXJuICJTVFJTWiI7
CiAgICBjYXNlIDExOiByZXR1cm4gIlNZTUVOVCI7CiAgICBjYXNlIDEyOiByZXR1cm4gIklOSVQi
OwogICAgY2FzZSAxMzogcmV0dXJuICJGSU5JIjsKICAgIGNhc2UgMTQ6IHJldHVybiAiU09OQU1F
IjsKICAgIGNhc2UgMTU6IHJldHVybiAiUlBBVEgiOwogICAgY2FzZSAxNjogcmV0dXJuICJTWU1C
T0xJQyI7CiAgICBjYXNlIDE3OiByZXR1cm4gIlJFTCI7CiAgICBjYXNlIDE4OiByZXR1cm4gIlJF
TFNaIjsKICAgIGNhc2UgMTk6IHJldHVybiAiUkVMRU5UIjsKICAgIGNhc2UgMjA6IHJldHVybiAi
UExUUkVMIjsKICAgIGNhc2UgMjE6IHJldHVybiAiREVCVUciOwogICAgY2FzZSAyMjogcmV0dXJu
ICJURVhUUkVMIjsKICAgIGNhc2UgMjM6IHJldHVybiAiSk1QUkVMIjsKICAgIGNhc2UgMjQ6IHJl
dHVybiAiQklORF9OT1ciOwogICAgY2FzZSAyNTogcmV0dXJuICJJTklUX0FSUkFZIjsKICAgIGNh
c2UgMjY6IHJldHVybiAiRklOSV9BUlJBWSI7CiAgICBjYXNlIDI3OiByZXR1cm4gIklOSVRfQVJS
QVlTWiI7CiAgICBjYXNlIDI4OiByZXR1cm4gIkZJTklfQVJSQVlTWiI7CiAgICBjYXNlIDI5OiBy
ZXR1cm4gIlJVTlBBVEgiOwogICAgY2FzZSAzMDogcmV0dXJuICJGTEFHUyI7CgogICAgY2FzZSAz
MjogcmV0dXJuICJQUkVJTklUX0FSUkFZIjsKICAgIGNhc2UgMzM6IHJldHVybiAiUFJFSU5JVF9B
UlJBWVNaIjsKCiAgICBjYXNlIDB4NmZmZmZkZjg6IHJldHVybiAiQ0hFQ0tTVU0iOwogICAgY2Fz
ZSAweDZmZmZmZGY5OiByZXR1cm4gIlBMVFBBRFNaIjsKICAgIGNhc2UgMHg2ZmZmZmRmYTogcmV0
dXJuICJNT1ZFRU5UIjsKICAgIGNhc2UgMHg2ZmZmZmRmYjogcmV0dXJuICJNT1ZFU1oiOwogICAg
Y2FzZSAweDZmZmZmZGZjOiByZXR1cm4gIkZFQVRVUkUiOwogICAgY2FzZSAweDZmZmZmZGZkOiBy
ZXR1cm4gIlBPU0ZMQUdfMSI7CiAgICBjYXNlIDB4NmZmZmZkZmU6IHJldHVybiAiU1lNSU5TWiI7
CiAgICBjYXNlIDB4NmZmZmZkZmY6IHJldHVybiAiU1lNSU5FTlQiOwoKICAgIGNhc2UgMHg2ZmZm
ZmUwMDogcmV0dXJuICJBRERSUk5HTE8iOwogICAgY2FzZSAweDZmZmZmZWZhOiByZXR1cm4gIkNP
TkZJRyI7CiAgICBjYXNlIDB4NmZmZmZlZmI6IHJldHVybiAiREVQQVVESVQiOwogICAgY2FzZSAw
eDZmZmZmZWZjOiByZXR1cm4gIkFVRElUIjsKICAgIGNhc2UgMHg2ZmZmZmVmZDogcmV0dXJuICJQ
TFRQQUQiOwogICAgY2FzZSAweDZmZmZmZWZlOiByZXR1cm4gIk1PVkVUQUIiOwogICAgY2FzZSAw
eDZmZmZmZWZmOiByZXR1cm4gIlNZTUlORk8iOwoKICAgIGNhc2UgMHg2ZmZmZmZmMDogcmV0dXJu
ICJWRVJTWU0iOwoKICAgIGNhc2UgMHg2ZmZmZmZmOTogcmV0dXJuICJSRUxBQ09VTlQiOwogICAg
Y2FzZSAweDZmZmZmZmZhOiByZXR1cm4gIlJFTENPVU5UIjsKICAgIGNhc2UgMHg2ZmZmZmZmYjog
cmV0dXJuICJGTEFHU18xIjsKICAgIGNhc2UgMHg2ZmZmZmZmYzogcmV0dXJuICJWRVJERUYiOwog
ICAgY2FzZSAweDZmZmZmZmZkOiByZXR1cm4gIlZFUkRFRk5VTSI7CiAgICBjYXNlIDB4NmZmZmZm
ZmU6IHJldHVybiAiVkVSTkVFRCI7CiAgICBjYXNlIDB4NmZmZmZmZmY6IHJldHVybiAiVkVSTkVF
RE5VTSI7CgogICAgY2FzZSAweDdmZmZmZmZkOiByZXR1cm4gIkFVWElMSUFSWSI7CiAgICBjYXNl
IDB4N2ZmZmZmZmU6IHJldHVybiAiVVNFRCI7CiAgICBjYXNlIDB4N2ZmZmZmZmY6IHJldHVybiAi
RklMVEVSIjsKCiAgICBjYXNlIDB4NmZmZmZkZjU6IHJldHVybiAiR05VX1BSRUxJTktFRCI7CiAg
ICBjYXNlIDB4NmZmZmZlZjg6IHJldHVybiAiR05VX0NPTkZMSUNUIjsKICAgIGNhc2UgMHg2ZmZm
ZmRmNjogcmV0dXJuICJHTlVfQ09ORkxJQ1RTWiI7CiAgICBjYXNlIDB4NmZmZmZlZjk6IHJldHVy
biAiR05VX0xJQkxJU1QiOwogICAgY2FzZSAweDZmZmZmZGY3OiByZXR1cm4gIkdOVV9MSUJMSVNU
U1oiOwoKICAgIGRlZmF1bHQ6CiAgICAgIGlmICgodHlwZSA+PSAweDcwMDAwMDAwKSAmJiAodHlw
ZSA8PSAweDdmZmZmZmZmKSkKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7
CgogICAgICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewog
ICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgcmVz
dWx0ID0gZ2V0X21pcHNfZHluYW1pY190eXBlICh0eXBlKTsKICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgY2FzZSA0MzoKICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfc3BhcmM2NF9k
eW5hbWljX3R5cGUgKHR5cGUpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNl
IDIxOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wcGM2NF9keW5hbWljX3R5cGUgKHR5cGUp
OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAg
IHJlc3VsdCA9IGdldF9pYTY0X2R5bmFtaWNfdHlwZSAodHlwZSk7CiAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2b2lkICop
MCk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAocmVz
dWx0ICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0OwoKICAgICAgICAg
IHNwcmludGYgKGJ1ZmYsICgiUHJvY2Vzc29yIFNwZWNpZmljOiAlbHgiKSwgdHlwZSk7CiAgICAg
ICAgfQogICAgICBlbHNlIGlmICgodHlwZSA+PSAweDYwMDAwMDBkKSAmJiAodHlwZSA8PSAweDZm
ZmYwMDAwKSkKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAg
ICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewogICAgICAgICAg
ICBjYXNlIDE1OgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wYXJpc2NfZHluYW1pY190eXBl
ICh0eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1bHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCJPcGVyYXRpbmcgU3lz
dGVtIHNwZWNpZmljOiAlbHgiKSwgdHlwZSk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAg
c3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVseCIpLCB0eXBlKTsKCiAgICAgIHJldHVybiBi
dWZmOwogICAgfQp9CgpzdGF0aWMgY2hhciAqCmdldF9maWxlX3R5cGUgKGVfdHlwZSkKICAgICB1
bnNpZ25lZCBlX3R5cGU7CnsKICBzdGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChlX3R5
cGUpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAoIk5PTkUgKE5vbmUpIik7CiAgICBjYXNlIDE6
IHJldHVybiAoIlJFTCAoUmVsb2NhdGFibGUgZmlsZSkiKTsKICAgIGNhc2UgMjogcmV0dXJuICgi
RVhFQyAoRXhlY3V0YWJsZSBmaWxlKSIpOwogICAgY2FzZSAzOiByZXR1cm4gKCJEWU4gKFNoYXJl
ZCBvYmplY3QgZmlsZSkiKTsKICAgIGNhc2UgNDogcmV0dXJuICgiQ09SRSAoQ29yZSBmaWxlKSIp
OwoKICAgIGRlZmF1bHQ6CiAgICAgIGlmICgoZV90eXBlID49IDB4RkYwMCkgJiYgKGVfdHlwZSA8
PSAweEZGRkYpKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICgiUHJvY2Vzc29yIFNwZWNpZmljOiAo
JXgpIiksIGVfdHlwZSk7CiAgICAgIGVsc2UgaWYgKChlX3R5cGUgPj0gMHhGRTAwKSAmJiAoZV90
eXBlIDw9IDB4RkVGRikpCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCJPUyBTcGVjaWZpYzogKCV4
KSIpLCBlX3R5cGUpOwogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93
bj46ICV4IiksIGVfdHlwZSk7CiAgICAgIHJldHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY2hh
ciAqCmdldF9tYWNoaW5lX25hbWUgKGVfbWFjaGluZSkKICAgICB1bnNpZ25lZCBlX21hY2hpbmU7
CnsKICBzdGF0aWMgY2hhciBidWZmWzY0XTsKCiAgc3dpdGNoIChlX21hY2hpbmUpCiAgICB7CiAg
ICBjYXNlIDA6IHJldHVybiAoIk5vbmUiKTsKICAgIGNhc2UgMTogcmV0dXJuICJXRTMyMTAwIjsK
ICAgIGNhc2UgMjogcmV0dXJuICJTcGFyYyI7CiAgICBjYXNlIDM6IHJldHVybiAiSW50ZWwgODAz
ODYiOwogICAgY2FzZSA0OiByZXR1cm4gIk1DNjgwMDAiOwogICAgY2FzZSA1OiByZXR1cm4gIk1D
ODgwMDAiOwogICAgY2FzZSA2OiByZXR1cm4gIkludGVsIDgwNDg2IjsKICAgIGNhc2UgNzogcmV0
dXJuICJJbnRlbCA4MDg2MCI7CiAgICBjYXNlIDg6IHJldHVybiAiTUlQUyBSMzAwMCI7CiAgICBj
YXNlIDk6IHJldHVybiAiSUJNIFN5c3RlbS8zNzAiOwogICAgY2FzZSAxMDogcmV0dXJuICJNSVBT
IFI0MDAwIGJpZy1lbmRpYW4iOwogICAgY2FzZSAxMTogcmV0dXJuICJTcGFyYyB2OSAob2xkKSI7
CiAgICBjYXNlIDE1OiByZXR1cm4gIkhQUEEiOwogICAgY2FzZSAxNzogcmV0dXJuICJQb3dlciBQ
QyAob2xkKSI7CiAgICBjYXNlIDE4OiByZXR1cm4gIlNwYXJjIHY4KyIgOwogICAgY2FzZSAxOTog
cmV0dXJuICJJbnRlbCA5MDg2MCI7CiAgICBjYXNlIDIwOiByZXR1cm4gIlBvd2VyUEMiOwogICAg
Y2FzZSAyMTogcmV0dXJuICJQb3dlclBDNjQiOwogICAgY2FzZSAzNjogcmV0dXJuICJORUMgVjgw
MCI7CiAgICBjYXNlIDM3OiByZXR1cm4gIkZ1aml0c3UgRlIyMCI7CiAgICBjYXNlIDM4OiByZXR1
cm4gIlRSVyBSSDMyIjsKICAgIGNhc2UgMzk6IHJldHVybiAiTUNPUkUiOwogICAgY2FzZSA0MDog
cmV0dXJuICJBUk0iOwogICAgY2FzZSA0MTogcmV0dXJuICJEaWdpdGFsIEFscGhhIChvbGQpIjsK
ICAgIGNhc2UgNDI6IHJldHVybiAiSGl0YWNoaSBTSCI7CiAgICBjYXNlIDQzOiByZXR1cm4gIlNw
YXJjIHY5IjsKICAgIGNhc2UgNDQ6IHJldHVybiAiU2llbWVucyBUcmljb3JlIjsKICAgIGNhc2Ug
NDU6IHJldHVybiAiQVJDIjsKICAgIGNhc2UgNDY6IHJldHVybiAiSGl0YWNoaSBIOC8zMDAiOwog
ICAgY2FzZSA0NzogcmV0dXJuICJIaXRhY2hpIEg4LzMwMEgiOwogICAgY2FzZSA0ODogcmV0dXJu
ICJIaXRhY2hpIEg4UyI7CiAgICBjYXNlIDQ5OiByZXR1cm4gIkhpdGFjaGkgSDgvNTAwIjsKICAg
IGNhc2UgNTA6IHJldHVybiAiSW50ZWwgSUEtNjQiOwogICAgY2FzZSA1MTogcmV0dXJuICJTdGFu
Zm9yZCBNSVBTLVgiOwogICAgY2FzZSA1MjogcmV0dXJuICJNb3Rvcm9sYSBDb2xkZmlyZSI7CiAg
ICBjYXNlIDUzOiByZXR1cm4gIk1vdG9yb2xhIE02OEhDMTIiOwogICAgY2FzZSAweDkwMjY6IHJl
dHVybiAiQWxwaGEiOwogICAgY2FzZSAweDc2NTA6CiAgICBjYXNlIDg1OiByZXR1cm4gImQxMHYi
OwogICAgY2FzZSAweDc2NzY6CiAgICBjYXNlIDg2OiByZXR1cm4gImQzMHYiOwogICAgY2FzZSAw
eDkwNDE6CiAgICBjYXNlIDg4OiByZXR1cm4gIk1pdHN1YmlzaGkgTTMyciI7CiAgICBjYXNlIDB4
OTA4MDoKICAgIGNhc2UgODc6IHJldHVybiAiTkVDIHY4NTAiOwogICAgY2FzZSAweGJlZWY6CiAg
ICBjYXNlIDg5OiByZXR1cm4gIm1uMTAzMDAiOwogICAgY2FzZSAweGRlYWQ6CiAgICBjYXNlIDkw
OiByZXR1cm4gIm1uMTAyMDAiOwogICAgY2FzZSAweDMzMzA6CiAgICBjYXNlIDg0OiByZXR1cm4g
IkZ1aml0c3UgRlIzMCI7CiAgICBjYXNlIDB4NTQ0MTogcmV0dXJuICJGdWppdHN1IEZSLVYiOwog
ICAgY2FzZSA5OToKICAgIGNhc2UgOTE6IHJldHVybiAicGljb0phdmEiOwogICAgY2FzZSA1NDog
cmV0dXJuICJGdWppdHN1IE11bHRpbWVkaWEgQWNjZWxlcmF0b3IiOwogICAgY2FzZSA1NTogcmV0
dXJuICJTaWVtZW5zIFBDUCI7CiAgICBjYXNlIDU2OiByZXR1cm4gIlNvbnkgbkNQVSBlbWJlZGRl
ZCBSSVNDIHByb2Nlc3NvciI7CiAgICBjYXNlIDU3OiByZXR1cm4gIkRlbnNvIE5EUjEgbWljcm9w
cm9jZXNzcHIiOwogICAgY2FzZSA1ODogcmV0dXJuICJNb3Rvcm9sYSBTdGFyKkNvcmUgcHJvY2Vz
c29yIjsKICAgIGNhc2UgNTk6IHJldHVybiAiVG95b3RhIE1FMTYgcHJvY2Vzc29yIjsKICAgIGNh
c2UgNjA6IHJldHVybiAiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMTAwIHByb2Nlc3NvciI7CiAgICBj
YXNlIDYxOiByZXR1cm4gIkFkdmFuY2VkIExvZ2ljIENvcnAuIFRpbnlKIGVtYmVkZGVkIHByb2Nl
c3NvciI7CiAgICBjYXNlIDY2OiByZXR1cm4gIlNpZW1lbnMgRlg2NiBtaWNyb2NvbnRyb2xsZXIi
OwogICAgY2FzZSA2NzogcmV0dXJuICJTVE1pY3JvZWxlY3Ryb25pY3MgU1Q5KyA4LzE2IGJpdCBt
aWNyb2NvbnRyb2xsZXIiOwogICAgY2FzZSA2ODogcmV0dXJuICJTVE1pY3JvZWxlY3Ryb25pY3Mg
U1Q3IDgtYml0IG1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDY5OiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzE2IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcwOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzExIE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcxOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzA4IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcyOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzA1IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDczOiByZXR1cm4gIlNpbGljb24g
R3JhcGhpY3MgU1Z4IjsKICAgIGNhc2UgNzQ6IHJldHVybiAiU1RNaWNyb2VsZWN0cm9uaWNzIFNU
MTkgOC1iaXQgbWljcm9jb250cm9sbGVyIjsKICAgIGNhc2UgNzU6IHJldHVybiAiRGlnaXRhbCBW
QVgiOwogICAgY2FzZSAweDEwNTc6CiAgICBjYXNlIDgzOiByZXR1cm4gIkF0bWVsIEFWUiA4LWJp
dCBtaWNyb2NvbnRyb2xsZXIiOwogICAgY2FzZSA3NjogcmV0dXJuICJBeGlzIENvbW11bmljYXRp
b25zIDMyLWJpdCBlbWJlZGRlZCBwcm9jZXNzb3IiOwogICAgY2FzZSA3NzogcmV0dXJuICJJbmZp
bmVvbiBUZWNobm9sb2dpZXMgMzItYml0IGVtYmVkZGVkIGNwdSI7CiAgICBjYXNlIDc4OiByZXR1
cm4gIkVsZW1lbnQgMTQgNjQtYml0IERTUCBwcm9jZXNzb3IiOwogICAgY2FzZSA3OTogcmV0dXJu
ICJMU0kgTG9naWMncyAxNi1iaXQgRFNQIHByb2Nlc3NvciI7CiAgICBjYXNlIDgwOiByZXR1cm4g
IkRvbmFsZCBLbnV0aCdzIGVkdWNhdGlvbmFsIDY0LWJpdCBwcm9jZXNzb3IiOwogICAgY2FzZSA4
MTogcmV0dXJuICJIYXJ2YXJkIFVuaXZlcnNpdHlzJ3MgbWFjaGluZS1pbmRlcGVuZGVudCBvYmpl
Y3QgZm9ybWF0IjsKICAgIGNhc2UgODI6IHJldHVybiAiVml0ZXNzZSBQcmlzbSI7CiAgICBjYXNl
IDYyOiByZXR1cm4gIkFkdmFuY2VkIE1pY3JvIERldmljZXMgWDg2LTY0IjsKICAgIGNhc2UgMHhh
MzkwOgogICAgY2FzZSAyMjogcmV0dXJuICJJQk0gUy8zOTAiOwogICAgY2FzZSAweGFkNDU6IHJl
dHVybiAiU2FueW8gWHN0b3JteTE2IENQVSBjb3JlIjsKICAgIGNhc2UgOTI6CiAgICBjYXNlIDB4
ODQ3MjogcmV0dXJuICJPcGVuUklTQyI7CiAgICBjYXNlIDB4NWFhNTogcmV0dXJuICJPcGVuRExY
IjsKICAgIGNhc2UgMHg4MjE3OgogICAgY2FzZSAxMDE6IHJldHVybiAiVWJpY29tIElQMnh4eCA4
LWJpdCBtaWNyb2NvbnRyb2xsZXJzIjsKICAgIGNhc2UgMHhGRUJBOiByZXR1cm4gIlZpdGVzc2Ug
SVEyMDAwIjsKICAgIGRlZmF1bHQ6CiAgICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd24+OiAl
eCIpLCBlX21hY2hpbmUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KfQoKc3RhdGljIHZvaWQK
ZGVjb2RlX0FSTV9tYWNoaW5lX2ZsYWdzIChlX2ZsYWdzLCBidWYpCiAgICAgdW5zaWduZWQgZV9m
bGFnczsKICAgICBjaGFyIGJ1ZltdOwp7CiAgdW5zaWduZWQgZWFiaTsKICBpbnQgdW5rbm93biA9
IDA7CgogIGVhYmkgPSAoKGVfZmxhZ3MpICYgMHhGRjAwMDAwMCk7CiAgZV9mbGFncyAmPSB+IDB4
RkYwMDAwMDA7CgoKICBpZiAoZV9mbGFncyAmIDB4MDEpCiAgICB7CiAgICAgIHN0cmNhdCAoYnVm
LCAiLCByZWxvY2F0YWJsZSBleGVjdXRhYmxlIik7CiAgICAgIGVfZmxhZ3MgJj0gfiAweDAxOwog
ICAgfQoKICBpZiAoZV9mbGFncyAmIDB4MDIpCiAgICB7CiAgICAgIHN0cmNhdCAoYnVmLCAiLCBo
YXMgZW50cnkgcG9pbnQiKTsKICAgICAgZV9mbGFncyAmPSB+IDB4MDI7CiAgICB9CgoKICBzd2l0
Y2ggKGVhYmkpCiAgICB7CiAgICBkZWZhdWx0OgogICAgICBzdHJjYXQgKGJ1ZiwgIiwgPHVucmVj
b2duaXplZCBFQUJJPiIpOwogICAgICBpZiAoZV9mbGFncykKICAgICAgICB1bmtub3duID0gMTsK
ICAgICAgYnJlYWs7CgogICAgY2FzZSAweDAxMDAwMDAwOgogICAgICBzdHJjYXQgKGJ1ZiwgIiwg
VmVyc2lvbjEgRUFCSSIpOwogICAgICB3aGlsZSAoZV9mbGFncykKICAgICAgICB7CiAgICAgICAg
ICB1bnNpZ25lZCBmbGFnOwoKCiAgICAgICAgICBmbGFnID0gZV9mbGFncyAmIC0gZV9mbGFnczsK
ICAgICAgICAgIGVfZmxhZ3MgJj0gfiBmbGFnOwoKICAgICAgICAgIHN3aXRjaCAoZmxhZykKICAg
ICAgICAgICAgewogICAgICAgICAgICBjYXNlIDB4MDQ6CiAgICAgICAgICAgICAgc3RyY2F0IChi
dWYsICIsIHNvcnRlZCBzeW1ib2wgdGFibGVzIik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHVua25vd24gPSAxOwogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIDB4
MDIwMDAwMDA6CiAgICAgIHN0cmNhdCAoYnVmLCAiLCBWZXJzaW9uMiBFQUJJIik7CiAgICAgIHdo
aWxlIChlX2ZsYWdzKQogICAgICAgIHsKICAgICAgICAgIHVuc2lnbmVkIGZsYWc7CgoKICAgICAg
ICAgIGZsYWcgPSBlX2ZsYWdzICYgLSBlX2ZsYWdzOwogICAgICAgICAgZV9mbGFncyAmPSB+IGZs
YWc7CgogICAgICAgICAgc3dpdGNoIChmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNh
c2UgMHgwNDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgc29ydGVkIHN5bWJvbCB0YWJs
ZXMiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHgwODoKICAgICAg
ICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgZHluYW1pYyBzeW1ib2xzIHVzZSBzZWdtZW50IGluZGV4
Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4MTA6CiAgICAgICAg
ICAgICAgc3RyY2F0IChidWYsICIsIG1hcHBpbmcgc3ltYm9scyBwcmVjZWRlIG90aGVycyIpOwog
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB1
bmtub3duID0gMTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgICAgYnJlYWs7CgogICAgY2FzZSAweDAwMDAwMDAwOgogICAgICBzdHJjYXQgKGJ1ZiwgIiwg
R05VIEVBQkkiKTsKICAgICAgd2hpbGUgKGVfZmxhZ3MpCiAgICAgICAgewogICAgICAgICAgdW5z
aWduZWQgZmxhZzsKCgogICAgICAgICAgZmxhZyA9IGVfZmxhZ3MgJiAtIGVfZmxhZ3M7CiAgICAg
ICAgICBlX2ZsYWdzICY9IH4gZmxhZzsKCiAgICAgICAgICBzd2l0Y2ggKGZsYWcpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgY2FzZSAweDA0OgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAi
LCBpbnRlcndvcmtpbmcgZW5hYmxlZCIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSAweDA4OgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB1c2VzIEFQQ1MvMjYi
KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHgxMDoKICAgICAgICAg
ICAgICBzdHJjYXQgKGJ1ZiwgIiwgdXNlcyBBUENTL2Zsb2F0Iik7CiAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgICBjYXNlIDB4MjA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHBvc2l0aW9uIGluZGVwZW5kZW50Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICBjYXNlIDB4NDA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIDggYml0IHN0cnVjdHVy
ZSBhbGlnbm1lbnQiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHg4
MDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdXNlcyBuZXcgQUJJIik7CiAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4MTAwOgogICAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCB1c2VzIG9sZCBBQkkiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgMHgyMDA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHNvZnR3YXJlIEZQ
Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4ODAwOgogICAgICAg
ICAgICAgIHN0cmNhdCAoYnVmLCAiLCBNYXZlcmljayBGUCIpOwogICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB1bmtub3duID0gMTsKICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgaWYgKHVua25v
d24pCiAgICBzdHJjYXQgKGJ1ZiwiLCA8dW5rbm93bj4iKTsKfQoKc3RhdGljIGNoYXIgKgpnZXRf
bWFjaGluZV9mbGFncyAoZV9mbGFncywgZV9tYWNoaW5lKQogICAgIHVuc2lnbmVkIGVfZmxhZ3M7
CiAgICAgdW5zaWduZWQgZV9tYWNoaW5lOwp7CiAgc3RhdGljIGNoYXIgYnVmWzEwMjRdOwoKICBi
dWZbMF0gPSAnXDAnOwoKICBpZiAoZV9mbGFncykKICAgIHsKICAgICAgc3dpdGNoIChlX21hY2hp
bmUpCiAgICAgICAgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSA0MDoKICAgICAgICAgIGRlY29kZV9BUk1fbWFjaGluZV9mbGFncyAoZV9mbGFncywgYnVm
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6CiAgICAgICAgICBpZiAoZV9mbGFn
cyAmIDB4MDA4MTAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBjcHUzMiIpOwogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAxMDAwMDAwKQogICAgICAgICAgICBzdHJjYXQgKGJ1Ziwg
IiwgbTY4MDAwIik7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyMDoKICAgICAgICAg
IGlmIChlX2ZsYWdzICYgMHg4MDAwMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIGVt
YiIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAxMDAwMCkKICAgICAgICAgICAgc3Ry
Y2F0IChidWYsICIsIHJlbG9jYXRhYmxlIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAw
MDA4MDAwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgcmVsb2NhdGFibGUtbGliIik7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NzoKICAgICAgICBjYXNlIDB4OTA4MDoKICAg
ICAgICAgIHN3aXRjaCAoZV9mbGFncyAmIDB4ZjAwMDAwMDApCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgY2FzZSAweDEwMDAwMDAwOgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB2ODUw
ZSIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDAwMDAwMDA6CiAg
ICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHY4NTAiKTsKICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdW5rbm93
biB2ODUwIGFyY2hpdGVjdHVyZSB2YXJpYW50Iik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg4OgogICAgICAgIGNhc2Ug
MHg5MDQxOgogICAgICAgICAgaWYgKChlX2ZsYWdzICYgMHgzMDAwMDAwMCkgPT0gMHgwMDAwMDAw
MCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG0zMnIiKTsKCiAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSA4OgogICAgICAgIGNhc2UgMTA6CiAgICAgICAgICBpZiAoZV9mbGFncyAm
IDB4MDAwMDAwMDEpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBub3Jlb3JkZXIiKTsKCiAg
ICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwMDIpCiAgICAgICAgICAgIHN0cmNhdCAoYnVm
LCAiLCBwaWMiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwMDQpCiAgICAgICAg
ICAgIHN0cmNhdCAoYnVmLCAiLCBjcGljIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAw
MDAwMDEwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdWdlbl9yZXNlcnZlZCIpOwoKICAg
ICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAwMDAyMCkKICAgICAgICAgICAgc3RyY2F0IChidWYs
ICIsIGFiaTIiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwODApCiAgICAgICAg
ICAgIHN0cmNhdCAoYnVmLCAiLCBvZGsgZmlyc3QiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAm
IDB4MDAwMDAxMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCAzMmJpdG1vZGUiKTsKCiAg
ICAgICAgICBzd2l0Y2ggKChlX2ZsYWdzICYgMHgwMEZGMDAwMCkpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgY2FzZSAweDAwODEwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgMzkwMCIpOyBicmVhazsK
ICAgICAgICAgICAgY2FzZSAweDAwODIwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDAxMCIpOyBicmVh
azsKICAgICAgICAgICAgY2FzZSAweDAwODMwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDEwMCIpOyBi
cmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODgwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDExMSIp
OyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODcwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDEy
MCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODUwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwg
NDY1MCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOTEwMDAwOiBzdHJjYXQgKGJ1Ziwg
IiwgNTQwMCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOTgwMDAwOiBzdHJjYXQgKGJ1
ZiwgIiwgNTUwMCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOGEwMDAwOiBzdHJjYXQg
KGJ1ZiwgIiwgc2IxIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDA6CgoKCiAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAoYnVmLCAiLCB1bmtub3duIENQ
VSIpOyBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIHN3aXRjaCAoKGVfZmxhZ3MgJiAw
eDAwMDBGMDAwKSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDB4MDAwMDEwMDA6IHN0
cmNhdCAoYnVmLCAiLCBvMzIiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHgwMDAwMjAwMDog
c3RyY2F0IChidWYsICIsIG82NCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwMDAzMDAw
OiBzdHJjYXQgKGJ1ZiwgIiwgZWFiaTMyIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDAw
MDQwMDA6IHN0cmNhdCAoYnVmLCAiLCBlYWJpNjQiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
MDoKCgoKCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAo
YnVmLCAiLCB1bmtub3duIEFCSSIpOyBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlm
IChlX2ZsYWdzICYgMHgwODAwMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG1kbXgi
KTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDQwMDAwMDApCiAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCBtaXBzMTYiKTsKCiAgICAgICAgICBzd2l0Y2ggKChlX2ZsYWdzICYgMHhmMDAw
MDAwMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSAweDAwMDAwMDAwOiBzdHJjYXQg
KGJ1ZiwgIiwgbWlwczEiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHgxMDAwMDAwMDogc3Ry
Y2F0IChidWYsICIsIG1pcHMyIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MjAwMDAwMDA6
IHN0cmNhdCAoYnVmLCAiLCBtaXBzMyIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDMwMDAw
MDAwOiBzdHJjYXQgKGJ1ZiwgIiwgbWlwczQiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHg0
MDAwMDAwMDogc3RyY2F0IChidWYsICIsIG1pcHM1Iik7IGJyZWFrOwogICAgICAgICAgICBjYXNl
IDB4NTAwMDAwMDA6IHN0cmNhdCAoYnVmLCAiLCBtaXBzMzIiKTsgYnJlYWs7CiAgICAgICAgICAg
IGNhc2UgMHg3MDAwMDAwMDogc3RyY2F0IChidWYsICIsIG1pcHMzMnIyIik7IGJyZWFrOwogICAg
ICAgICAgICBjYXNlIDB4NjAwMDAwMDA6IHN0cmNhdCAoYnVmLCAiLCBtaXBzNjQiKTsgYnJlYWs7
CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAoYnVmLCAiLCB1bmtub3duIElTQSIpOyBicmVh
azsKICAgICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQzOgogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDEwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHY4KyIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAyMDApCiAgICAgICAgICAgIHN0
cmNhdCAoYnVmLCAiLCB1bHRyYXNwYXJjSSIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgw
MDA4MDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB1bHRyYXNwYXJjSUlJIik7CgogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDQwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IGhhbHIxIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDgwMDAwMCkKICAgICAgICAgICAg
c3RyY2F0IChidWYsICIsIGxlZGF0YSIpOwoKICAgICAgICAgIGlmICgoZV9mbGFncyAmIDB4Mykg
PT0gMHgwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdHNvIik7CgogICAgICAgICAgaWYg
KChlX2ZsYWdzICYgMHgzKSA9PSAweDEpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBwc28i
KTsKCiAgICAgICAgICBpZiAoKGVfZmxhZ3MgJiAweDMpID09IDB4MikKICAgICAgICAgICAgc3Ry
Y2F0IChidWYsICIsIHJtbyIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTU6CiAg
ICAgICAgICBzd2l0Y2ggKGVfZmxhZ3MgJiAweDAwMDBmZmZmKQogICAgICAgICAgICB7CiAgICAg
ICAgICAgIGNhc2UgMHgwMjBiOgogICAgICAgICAgICAgIHN0cmNweSAoYnVmLCAiLCBQQS1SSVND
IDEuMCIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDIxMDoKICAg
ICAgICAgICAgICBzdHJjcHkgKGJ1ZiwgIiwgUEEtUklTQyAxLjEiKTsKICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgY2FzZSAweDAyMTQ6CiAgICAgICAgICAgICAgc3RyY3B5IChidWYs
ICIsIFBBLVJJU0MgMi4wIik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmIChlX2Zs
YWdzICYgMHgwMDAxMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHRyYXBuaWwiKTsK
ICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAyMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChi
dWYsICIsIGV4dCIpOwogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDQwMDAwKQogICAgICAg
ICAgICBzdHJjYXQgKGJ1ZiwgIiwgbHNiIik7CiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAw
ODAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB3aWRlIik7CiAgICAgICAgICBpZiAo
ZV9mbGFncyAmIDB4MDAxMDAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBubyBrYWJw
Iik7CiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDA0MDAwMDApCiAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCBsYXp5c3dhcCIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgOTE6
CiAgICAgICAgY2FzZSA5OToKICAgICAgICAgIGlmICgoZV9mbGFncyAmIDB4MDAwMDAwMTApID09
IDB4MDAwMDAwMTApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBuZXcgY2FsbGluZyBjb252
ZW50aW9uIik7CgogICAgICAgICAgaWYgKChlX2ZsYWdzICYgMHgwMDAwMDAyMCkgPT0gMHgwMDAw
MDAyMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIGdudSBjYWxsaW5nIGNvbnZlbnRpb24i
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDUwOgogICAgICAgICAgaWYgKChlX2Zs
YWdzICYgKDEgPDwgNCkpKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgNjQtYml0Iik7CiAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCAzMi1iaXQiKTsKICAgICAg
ICAgIGlmICgoZV9mbGFncyAmICgxIDw8IDUpKSkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHJlZHVjZWQgZnAgbW9kZWwiKTsKICAgICAgICAgIGlmICgoZV9mbGFncyAmICgxIDw8IDcpKSkK
ICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG5vIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLCBjb25z
dGFudCBncCIpOwogICAgICAgICAgZWxzZSBpZiAoKGVfZmxhZ3MgJiAoMSA8PCA2KSkpCiAgICAg
ICAgICAgIHN0cmNhdCAoYnVmLCAiLCBjb25zdGFudCBncCIpOwogICAgICAgICAgaWYgKChlX2Zs
YWdzICYgKDEgPDwgOCkpKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgYWJzb2x1dGUiKTsK
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc1OgogICAgICAgICAgaWYgKChlX2ZsYWdz
ICYgMHgwMDAxKSkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG5vbi1QSUMiKTsKICAgICAg
ICAgIGlmICgoZV9mbGFncyAmIDB4MDEwMCkpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBE
LUZsb2F0Iik7CiAgICAgICAgICBpZiAoKGVfZmxhZ3MgJiAweDAyMDApKQogICAgICAgICAgICBz
dHJjYXQgKGJ1ZiwgIiwgRy1GbG9hdCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAg
fQoKICByZXR1cm4gYnVmOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9taXBzX3NlZ21lbnRf
dHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAg
ICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6CiAgICAgIHJldHVybiAiUkVHSU5GTyI7CiAgICBjYXNl
IDB4NzAwMDAwMDE6CiAgICAgIHJldHVybiAiUlRQUk9DIjsKICAgIGNhc2UgMHg3MDAwMDAwMjoK
ICAgICAgcmV0dXJuICJPUFRJT05TIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoK
ICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3BhcmlzY19z
ZWdtZW50X3R5cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0eXBlOwp7CiAgc3dpdGNoICh0
eXBlKQogICAgewogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MCk6IHJldHVybiAiSFBfVExTIjsK
ICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDEpOiByZXR1cm4gIkhQX0NPUkVfTk9ORSI7CiAgICBj
YXNlICgweDYwMDAwMDAwICsgMHgyKTogcmV0dXJuICJIUF9DT1JFX1ZFUlNJT04iOwogICAgY2Fz
ZSAoMHg2MDAwMDAwMCArIDB4Myk6IHJldHVybiAiSFBfQ09SRV9LRVJORUwiOwogICAgY2FzZSAo
MHg2MDAwMDAwMCArIDB4NCk6IHJldHVybiAiSFBfQ09SRV9DT01NIjsKICAgIGNhc2UgKDB4NjAw
MDAwMDAgKyAweDUpOiByZXR1cm4gIkhQX0NPUkVfUFJPQyI7CiAgICBjYXNlICgweDYwMDAwMDAw
ICsgMHg2KTogcmV0dXJuICJIUF9DT1JFX0xPQURBQkxFIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAg
KyAweDcpOiByZXR1cm4gIkhQX0NPUkVfU1RBQ0siOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4
OCk6IHJldHVybiAiSFBfQ09SRV9TSE0iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4OSk6IHJl
dHVybiAiSFBfQ09SRV9NTUYiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MTApOiByZXR1cm4g
IkhQX1BBUkFMTEVMIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDExKTogcmV0dXJuICJIUF9G
QVNUQklORCI7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJldHVybiAiUEFSSVNDX0FSQ0hFWFQiOwog
ICAgY2FzZSAweDcwMDAwMDAxOiByZXR1cm4gIlBBUklTQ19VTldJTkQiOwogICAgZGVmYXVsdDoK
ICAgICAgYnJlYWs7CiAgICB9CgogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0
IGNoYXIgKgpnZXRfaWE2NF9zZWdtZW50X3R5cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0
eXBlOwp7CiAgc3dpdGNoICh0eXBlKQogICAgewogICAgY2FzZSAoMHg3MDAwMDAwMCArIDApOiBy
ZXR1cm4gIklBXzY0X0FSQ0hFWFQiOwogICAgY2FzZSAoMHg3MDAwMDAwMCArIDEpOiByZXR1cm4g
IklBXzY0X1VOV0lORCI7CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgwKTogcmV0dXJuICJIUF9U
TFMiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MTIpOiByZXR1cm4gIkhQX09QVF9BTk5PVCI7
CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgxMyk6IHJldHVybiAiSFBfSFNMX0FOTk9UIjsKICAg
IGNhc2UgKDB4NjAwMDAwMDAgKyAweDE0KTogcmV0dXJuICJIUF9TVEFDSyI7CiAgICBkZWZhdWx0
OgogICAgICBicmVhazsKICAgIH0KCiAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpzdGF0aWMgY29u
c3QgY2hhciAqCmdldF9zZWdtZW50X3R5cGUgKHBfdHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHBf
dHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICBzd2l0Y2ggKHBfdHlwZSkKICAgIHsK
ICAgIGNhc2UgMDogcmV0dXJuICJOVUxMIjsKICAgIGNhc2UgMTogcmV0dXJuICJMT0FEIjsKICAg
IGNhc2UgMjogcmV0dXJuICJEWU5BTUlDIjsKICAgIGNhc2UgMzogcmV0dXJuICJJTlRFUlAiOwog
ICAgY2FzZSA0OiByZXR1cm4gIk5PVEUiOwogICAgY2FzZSA1OiByZXR1cm4gIlNITElCIjsKICAg
IGNhc2UgNjogcmV0dXJuICJQSERSIjsKICAgIGNhc2UgNzogcmV0dXJuICJUTFMiOwoKICAgIGNh
c2UgKDB4NjAwMDAwMDAgKyAweDQ3NGU1NTApOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIkdOVV9FSF9GUkFNRSI7CgogICAgZGVmYXVsdDoKICAgICAgaWYgKChwX3R5cGUgPj0gMHg3
MDAwMDAwMCkgJiYgKHBfdHlwZSA8PSAweDdGRkZGRkZGKSkKICAgICAgICB7CiAgICAgICAgICBj
b25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGlu
ZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgMTA6
CiAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X21pcHNfc2VnbWVudF90eXBlIChwX3R5cGUpOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIHJl
c3VsdCA9IGdldF9wYXJpc2Nfc2VnbWVudF90eXBlIChwX3R5cGUpOwogICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9pYTY0
X3NlZ21lbnRfdHlwZSAocF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1bHQgIT0gKCh2b2lkICop
MCkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwg
IkxPUFJPQyslbHgiLCBwX3R5cGUgLSAweDcwMDAwMDAwKTsKICAgICAgICB9CiAgICAgIGVsc2Ug
aWYgKChwX3R5cGUgPj0gMHg2MDAwMDAwMCkgJiYgKHBfdHlwZSA8PSAweDZmZmZmZmZmKSkKICAg
ICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAgICAgc3dpdGNoIChl
bGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDE1Ogog
ICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wYXJpc2Nfc2VnbWVudF90eXBlIChwX3R5cGUpOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgIHJl
c3VsdCA9IGdldF9pYTY0X3NlZ21lbnRfdHlwZSAocF90eXBlKTsKICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikw
KTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1
bHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgogICAgICAgICAg
c3ByaW50ZiAoYnVmZiwgIkxPT1MrJWx4IiwgcF90eXBlIC0gMHg2MDAwMDAwMCk7CiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVseCIpLCBw
X3R5cGUpOwoKICAgICAgcmV0dXJuIGJ1ZmY7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoK
Z2V0X21pcHNfc2VjdGlvbl90eXBlX25hbWUgKHNoX3R5cGUpCiAgICAgdW5zaWduZWQgaW50IHNo
X3R5cGU7CnsKICBzd2l0Y2ggKHNoX3R5cGUpCiAgICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJl
dHVybiAiTUlQU19MSUJMSVNUIjsKICAgIGNhc2UgMHg3MDAwMDAwMTogcmV0dXJuICJNSVBTX01T
WU0iOwogICAgY2FzZSAweDcwMDAwMDAyOiByZXR1cm4gIk1JUFNfQ09ORkxJQ1QiOwogICAgY2Fz
ZSAweDcwMDAwMDAzOiByZXR1cm4gIk1JUFNfR1BUQUIiOwogICAgY2FzZSAweDcwMDAwMDA0OiBy
ZXR1cm4gIk1JUFNfVUNPREUiOwogICAgY2FzZSAweDcwMDAwMDA1OiByZXR1cm4gIk1JUFNfREVC
VUciOwogICAgY2FzZSAweDcwMDAwMDA2OiByZXR1cm4gIk1JUFNfUkVHSU5GTyI7CiAgICBjYXNl
IDB4NzAwMDAwMDc6IHJldHVybiAiTUlQU19QQUNLQUdFIjsKICAgIGNhc2UgMHg3MDAwMDAwODog
cmV0dXJuICJNSVBTX1BBQ0tTWU0iOwogICAgY2FzZSAweDcwMDAwMDA5OiByZXR1cm4gIk1JUFNf
UkVMRCI7CiAgICBjYXNlIDB4NzAwMDAwMGI6IHJldHVybiAiTUlQU19JRkFDRSI7CiAgICBjYXNl
IDB4NzAwMDAwMGM6IHJldHVybiAiTUlQU19DT05URU5UIjsKICAgIGNhc2UgMHg3MDAwMDAwZDog
cmV0dXJuICJNSVBTX09QVElPTlMiOwogICAgY2FzZSAweDcwMDAwMDEwOiByZXR1cm4gIk1JUFNf
U0hEUiI7CiAgICBjYXNlIDB4NzAwMDAwMTE6IHJldHVybiAiTUlQU19GREVTQyI7CiAgICBjYXNl
IDB4NzAwMDAwMTI6IHJldHVybiAiTUlQU19FWFRTWU0iOwogICAgY2FzZSAweDcwMDAwMDEzOiBy
ZXR1cm4gIk1JUFNfREVOU0UiOwogICAgY2FzZSAweDcwMDAwMDE0OiByZXR1cm4gIk1JUFNfUERF
U0MiOwogICAgY2FzZSAweDcwMDAwMDE1OiByZXR1cm4gIk1JUFNfTE9DU1lNIjsKICAgIGNhc2Ug
MHg3MDAwMDAxNjogcmV0dXJuICJNSVBTX0FVWFNZTSI7CiAgICBjYXNlIDB4NzAwMDAwMTc6IHJl
dHVybiAiTUlQU19PUFRTWU0iOwogICAgY2FzZSAweDcwMDAwMDE4OiByZXR1cm4gIk1JUFNfTE9D
U1RSIjsKICAgIGNhc2UgMHg3MDAwMDAxOTogcmV0dXJuICJNSVBTX0xJTkUiOwogICAgY2FzZSAw
eDcwMDAwMDFhOiByZXR1cm4gIk1JUFNfUkZERVNDIjsKICAgIGNhc2UgMHg3MDAwMDAxYjogcmV0
dXJuICJNSVBTX0RFTFRBU1lNIjsKICAgIGNhc2UgMHg3MDAwMDAxYzogcmV0dXJuICJNSVBTX0RF
TFRBSU5TVCI7CiAgICBjYXNlIDB4NzAwMDAwMWQ6IHJldHVybiAiTUlQU19ERUxUQUNMQVNTIjsK
ICAgIGNhc2UgMHg3MDAwMDAxZTogcmV0dXJuICJNSVBTX0RXQVJGIjsKICAgIGNhc2UgMHg3MDAw
MDAxZjogcmV0dXJuICJNSVBTX0RFTFRBREVDTCI7CiAgICBjYXNlIDB4NzAwMDAwMjA6IHJldHVy
biAiTUlQU19TWU1CT0xfTElCIjsKICAgIGNhc2UgMHg3MDAwMDAyMTogcmV0dXJuICJNSVBTX0VW
RU5UUyI7CiAgICBjYXNlIDB4NzAwMDAwMjI6IHJldHVybiAiTUlQU19UUkFOU0xBVEUiOwogICAg
Y2FzZSAweDcwMDAwMDIzOiByZXR1cm4gIk1JUFNfUElYSUUiOwogICAgY2FzZSAweDcwMDAwMDI0
OiByZXR1cm4gIk1JUFNfWExBVEUiOwogICAgY2FzZSAweDcwMDAwMDI1OiByZXR1cm4gIk1JUFNf
WExBVEVfREVCVUciOwogICAgY2FzZSAweDcwMDAwMDI2OiByZXR1cm4gIk1JUFNfV0hJUkwiOwog
ICAgY2FzZSAweDcwMDAwMDI3OiByZXR1cm4gIk1JUFNfRUhfUkVHSU9OIjsKICAgIGNhc2UgMHg3
MDAwMDAyODogcmV0dXJuICJNSVBTX1hMQVRFX09MRCI7CiAgICBjYXNlIDB4NzAwMDAwMjk6IHJl
dHVybiAiTUlQU19QRFJfRVhDRVBUSU9OIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAg
fQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRfcGFyaXNj
X3NlY3Rpb25fdHlwZV9uYW1lIChzaF90eXBlKQogICAgIHVuc2lnbmVkIGludCBzaF90eXBlOwp7
CiAgc3dpdGNoIChzaF90eXBlKQogICAgewogICAgY2FzZSAweDcwMDAwMDAwOiByZXR1cm4gIlBB
UklTQ19FWFQiOwogICAgY2FzZSAweDcwMDAwMDAxOiByZXR1cm4gIlBBUklTQ19VTldJTkQiOwog
ICAgY2FzZSAweDcwMDAwMDAyOiByZXR1cm4gIlBBUklTQ19ET0MiOwogICAgZGVmYXVsdDoKICAg
ICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpzdGF0aWMgY29uc3QgY2hh
ciAqCmdldF9pYTY0X3NlY3Rpb25fdHlwZV9uYW1lIChzaF90eXBlKQogICAgIHVuc2lnbmVkIGlu
dCBzaF90eXBlOwp7CgogIGlmICgoc2hfdHlwZSAmIDB4RkYwMDAwMDApID09ICgweDcwMDAwMDAw
ICsgMHg4MDAwMDAwKSkKICAgIHJldHVybiBnZXRfb3NhYmlfbmFtZSAoKHNoX3R5cGUgJiAweDAw
RkYwMDAwKSA+PiAxNik7CgogIHN3aXRjaCAoc2hfdHlwZSkKICAgIHsKICAgIGNhc2UgKDB4NzAw
MDAwMDAgKyAwKTogcmV0dXJuICJJQV82NF9FWFQiOwogICAgY2FzZSAoMHg3MDAwMDAwMCArIDEp
OiByZXR1cm4gIklBXzY0X1VOV0lORCI7CiAgICBjYXNlICgweDcwMDAwMDAwICsgMHg5MDAwMDAw
KTogcmV0dXJuICJJQV82NF9QUklPUklUWV9JTklUIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFr
OwogICAgfQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRf
c2VjdGlvbl90eXBlX25hbWUgKHNoX3R5cGUpCiAgICAgdW5zaWduZWQgaW50IHNoX3R5cGU7CnsK
ICBzdGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChzaF90eXBlKQogICAgewogICAgY2Fz
ZSAwOiByZXR1cm4gIk5VTEwiOwogICAgY2FzZSAxOiByZXR1cm4gIlBST0dCSVRTIjsKICAgIGNh
c2UgMjogcmV0dXJuICJTWU1UQUIiOwogICAgY2FzZSAzOiByZXR1cm4gIlNUUlRBQiI7CiAgICBj
YXNlIDQ6IHJldHVybiAiUkVMQSI7CiAgICBjYXNlIDU6IHJldHVybiAiSEFTSCI7CiAgICBjYXNl
IDY6IHJldHVybiAiRFlOQU1JQyI7CiAgICBjYXNlIDc6IHJldHVybiAiTk9URSI7CiAgICBjYXNl
IDg6IHJldHVybiAiTk9CSVRTIjsKICAgIGNhc2UgOTogcmV0dXJuICJSRUwiOwogICAgY2FzZSAx
MDogcmV0dXJuICJTSExJQiI7CiAgICBjYXNlIDExOiByZXR1cm4gIkRZTlNZTSI7CiAgICBjYXNl
IDE0OiByZXR1cm4gIklOSVRfQVJSQVkiOwogICAgY2FzZSAxNTogcmV0dXJuICJGSU5JX0FSUkFZ
IjsKICAgIGNhc2UgMTY6IHJldHVybiAiUFJFSU5JVF9BUlJBWSI7CiAgICBjYXNlIDE3OiByZXR1
cm4gIkdST1VQIjsKICAgIGNhc2UgMTg6IHJldHVybiAiU1lNVEFCIFNFQ1RJT04gSU5ESUNJRVMi
OwogICAgY2FzZSAweDZmZmZmZmZkOiByZXR1cm4gIlZFUkRFRiI7CiAgICBjYXNlIDB4NmZmZmZm
ZmU6IHJldHVybiAiVkVSTkVFRCI7CiAgICBjYXNlIDB4NmZmZmZmZmY6IHJldHVybiAiVkVSU1lN
IjsKICAgIGNhc2UgMHg2ZmZmZmZmMDogcmV0dXJuICJWRVJTWU0iOwogICAgY2FzZSAweDZmZmZm
ZmZjOiByZXR1cm4gIlZFUkRFRiI7CiAgICBjYXNlIDB4N2ZmZmZmZmQ6IHJldHVybiAiQVVYSUxJ
QVJZIjsKICAgIGNhc2UgMHg3ZmZmZmZmZjogcmV0dXJuICJGSUxURVIiOwogICAgY2FzZSAweDZm
ZmZmZmY3OiByZXR1cm4gIkdOVV9MSUJMSVNUIjsKCiAgICBkZWZhdWx0OgogICAgICBpZiAoKHNo
X3R5cGUgPj0gMHg3MDAwMDAwMCkgJiYgKHNoX3R5cGUgPD0gMHg3RkZGRkZGRikpCiAgICAgICAg
ewogICAgICAgICAgY29uc3QgY2hhciAqcmVzdWx0OwoKICAgICAgICAgIHN3aXRjaCAoZWxmX2hl
YWRlci5lX21hY2hpbmUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAg
ICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9taXBzX3NlY3Rpb25fdHlw
ZV9uYW1lIChzaF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAx
NToKICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfcGFyaXNjX3NlY3Rpb25fdHlwZV9uYW1lIChz
aF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1MDoKICAgICAg
ICAgICAgICByZXN1bHQgPSBnZXRfaWE2NF9zZWN0aW9uX3R5cGVfbmFtZSAoc2hfdHlwZSk7CiAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgcmVz
dWx0ID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICBpZiAocmVzdWx0ICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwoKICAgICAgICAgIHNwcmludGYgKGJ1ZmYsICJMT1BST0MrJXgiLCBzaF90eXBlIC0gMHg3
MDAwMDAwMCk7CiAgICAgICAgfQogICAgICBlbHNlIGlmICgoc2hfdHlwZSA+PSAweDYwMDAwMDAw
KSAmJiAoc2hfdHlwZSA8PSAweDZmZmZmZmZmKSkKICAgICAgICBzcHJpbnRmIChidWZmLCAiTE9P
UysleCIsIHNoX3R5cGUgLSAweDYwMDAwMDAwKTsKICAgICAgZWxzZSBpZiAoKHNoX3R5cGUgPj0g
MHg4MDAwMDAwMCkgJiYgKHNoX3R5cGUgPD0gMHhGRkZGRkZGRikpCiAgICAgICAgc3ByaW50ZiAo
YnVmZiwgIkxPVVNFUisleCIsIHNoX3R5cGUgLSAweDgwMDAwMDAwKTsKICAgICAgZWxzZQogICAg
ICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd24+OiAleCIpLCBzaF90eXBlKTsKCiAgICAgIHJl
dHVybiBidWZmOwogICAgfQp9CgoKCnN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0KewogIHsiYWxs
IiwgMCwgMCwgJ2EnfSwKICB7ImZpbGUtaGVhZGVyIiwgMCwgMCwgJ2gnfSwKICB7InByb2dyYW0t
aGVhZGVycyIsIDAsIDAsICdsJ30sCiAgeyJoZWFkZXJzIiwgMCwgMCwgJ2UnfSwKICB7Imhpc3Rv
Z3JhbSIsIDAsIDAsICdJJ30sCiAgeyJzZWdtZW50cyIsIDAsIDAsICdsJ30sCiAgeyJzZWN0aW9u
cyIsIDAsIDAsICdTJ30sCiAgeyJzZWN0aW9uLWhlYWRlcnMiLCAwLCAwLCAnUyd9LAogIHsic3lt
Ym9scyIsIDAsIDAsICdzJ30sCiAgeyJzeW1zIiwgMCwgMCwgJ3MnfSwKICB7InJlbG9jcyIsIDAs
IDAsICdyJ30sCiAgeyJub3RlcyIsIDAsIDAsICduJ30sCiAgeyJkeW5hbWljIiwgMCwgMCwgJ2Qn
fSwKICB7ImFyY2gtc3BlY2lmaWMiLCAwLCAwLCAnQSd9LAogIHsidmVyc2lvbi1pbmZvIiwgMCwg
MCwgJ1YnfSwKICB7InVzZS1keW5hbWljIiwgMCwgMCwgJ0QnfSwKICB7ImhleC1kdW1wIiwgMSwg
MCwgJ3gnfSwKICB7ImRlYnVnLWR1bXAiLCAyLCAwLCA1MTJ9LAogIHsidW53aW5kIiwgMCwgMCwg
J3UnfSwKCgoKCiAgeyJ2ZXJzaW9uIiwgMCwgMCwgJ3YnfSwKICB7IndpZGUiLCAwLCAwLCAnVyd9
LAogIHsiaGVscCIsIDAsIDAsICdIJ30sCiAgezAsIDAsIDAsIDB9Cn07CgpzdGF0aWMgdm9pZAp1
c2FnZSAoKQp7CiAgZnByaW50ZiAoc3Rkb3V0LCAoIlVzYWdlOiByZWFkZWxmIDxvcHRpb24ocyk+
IGVsZi1maWxlKHMpXG4iKSk7CiAgZnByaW50ZiAoc3Rkb3V0LCAoIiBEaXNwbGF5IGluZm9ybWF0
aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiBFTEYgZm9ybWF0IGZpbGVzXG4iKSk7CiAgZnByaW50
ZiAoc3Rkb3V0LCAoIiBPcHRpb25zIGFyZTpcbiAgLWEgLS1hbGwgICAgICAgICAgICAgICBFcXVp
dmFsZW50IHRvOiAtaCAtbCAtUyAtcyAtciAtZCAtViAtQSAtSVxuICAtaCAtLWZpbGUtaGVhZGVy
ICAgICAgIERpc3BsYXkgdGhlIEVMRiBmaWxlIGhlYWRlclxuICAtbCAtLXByb2dyYW0taGVhZGVy
cyAgIERpc3BsYXkgdGhlIHByb2dyYW0gaGVhZGVyc1xuICAgICAtLXNlZ21lbnRzICAgICAgICAg
IEFuIGFsaWFzIGZvciAtLXByb2dyYW0taGVhZGVyc1xuICAtUyAtLXNlY3Rpb24taGVhZGVycyAg
IERpc3BsYXkgdGhlIHNlY3Rpb25zJyBoZWFkZXJcbiAgICAgLS1zZWN0aW9ucyAgICAgICAgICBB
biBhbGlhcyBmb3IgLS1zZWN0aW9uLWhlYWRlcnNcbiAgLWUgLS1oZWFkZXJzICAgICAgICAgICBF
cXVpdmFsZW50IHRvOiAtaCAtbCAtU1xuICAtcyAtLXN5bXMgICAgICAgICAgICAgIERpc3BsYXkg
dGhlIHN5bWJvbCB0YWJsZVxuICAgICAgLS1zeW1ib2xzICAgICAgICAgIEFuIGFsaWFzIGZvciAt
LXN5bXNcbiAgLW4gLS1ub3RlcyAgICAgICAgICAgICBEaXNwbGF5IHRoZSBjb3JlIG5vdGVzIChp
ZiBwcmVzZW50KVxuICAtciAtLXJlbG9jcyAgICAgICAgICAgIERpc3BsYXkgdGhlIHJlbG9jYXRp
b25zIChpZiBwcmVzZW50KVxuICAtdSAtLXVud2luZCAgICAgICAgICAgIERpc3BsYXkgdGhlIHVu
d2luZCBpbmZvIChpZiBwcmVzZW50KVxuICAtZCAtLWR5bmFtaWMgICAgICAgICAgIERpc3BsYXkg
dGhlIGR5bmFtaWMgc2VnbWVudCAoaWYgcHJlc2VudClcbiAgLVYgLS12ZXJzaW9uLWluZm8gICAg
ICBEaXNwbGF5IHRoZSB2ZXJzaW9uIHNlY3Rpb25zIChpZiBwcmVzZW50KVxuICAtQSAtLWFyY2gt
c3BlY2lmaWMgICAgIERpc3BsYXkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGluZm9ybWF0aW9uIChp
ZiBhbnkpLlxuICAtRCAtLXVzZS1keW5hbWljICAgICAgIFVzZSB0aGUgZHluYW1pYyBzZWN0aW9u
IGluZm8gd2hlbiBkaXNwbGF5aW5nIHN5bWJvbHNcbiAgLXggLS1oZXgtZHVtcD08bnVtYmVyPiBE
dW1wIHRoZSBjb250ZW50cyBvZiBzZWN0aW9uIDxudW1iZXI+XG4gIC13W2xpYXBybWZGc29dIG9y
XG4gIC0tZGVidWctZHVtcFs9bGluZSw9aW5mbyw9YWJicmV2LD1wdWJuYW1lcyw9cmFuZ2VzLD1t
YWNybyw9ZnJhbWVzLD1zdHIsPWxvY11cbiAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5
IHRoZSBjb250ZW50cyBvZiBEV0FSRjIgZGVidWcgc2VjdGlvbnNcbiIpKTsKIyAyNTA0ICJyZWFk
ZWxmLmMiCiAgZnByaW50ZiAoc3Rkb3V0LCAoIiAgLUkgLS1oaXN0b2dyYW0gICAgICAgICBEaXNw
bGF5IGhpc3RvZ3JhbSBvZiBidWNrZXQgbGlzdCBsZW5ndGhzXG4gIC1XIC0td2lkZSAgICAgICAg
ICAgICAgQWxsb3cgb3V0cHV0IHdpZHRoIHRvIGV4Y2VlZCA4MCBjaGFyYWN0ZXJzXG4gIC1IIC0t
aGVscCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uXG4gIC12IC0tdmVyc2lv
biAgICAgICAgICAgRGlzcGxheSB0aGUgdmVyc2lvbiBudW1iZXIgb2YgcmVhZGVsZlxuIikpOwoK
CgoKICBmcHJpbnRmIChzdGRvdXQsICgiUmVwb3J0IGJ1Z3MgdG8gJXNcbiIpLCAiYnVnLWJpbnV0
aWxzQGdudS5vcmciKTsKCiAgZXhpdCAoMCk7Cn0KCnN0YXRpYyB2b2lkCnJlcXVlc3RfZHVtcCAo
c2VjdGlvbiwgdHlwZSkKICAgICB1bnNpZ25lZCBpbnQgc2VjdGlvbjsKICAgICBpbnQgdHlwZTsK
ewogIGlmIChzZWN0aW9uID49IG51bV9kdW1wX3NlY3RzKQogICAgewogICAgICBjaGFyICpuZXdf
ZHVtcF9zZWN0czsKCiAgICAgIG5ld19kdW1wX3NlY3RzID0gKGNoYXIgKikgY2FsbG9jIChzZWN0
aW9uICsgMSwgMSk7CgogICAgICBpZiAobmV3X2R1bXBfc2VjdHMgPT0gKCh2b2lkICopMCkpCiAg
ICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGR1bXAgcmVxdWVzdCB0YWJs
ZS4iKSk7CiAgICAgIGVsc2UKICAgICAgICB7CgogICAgICAgICAgbWVtY3B5IChuZXdfZHVtcF9z
ZWN0cywgZHVtcF9zZWN0cywgbnVtX2R1bXBfc2VjdHMpOwoKICAgICAgICAgIGZyZWUgKGR1bXBf
c2VjdHMpOwoKICAgICAgICAgIGR1bXBfc2VjdHMgPSBuZXdfZHVtcF9zZWN0czsKICAgICAgICAg
IG51bV9kdW1wX3NlY3RzID0gc2VjdGlvbiArIDE7CiAgICAgICAgfQogICAgfQoKICBpZiAoZHVt
cF9zZWN0cykKICAgIGR1bXBfc2VjdHNbc2VjdGlvbl0gfD0gdHlwZTsKCiAgcmV0dXJuOwp9Cgpz
dGF0aWMgdm9pZApwYXJzZV9hcmdzIChhcmdjLCBhcmd2KQogICAgIGludCBhcmdjOwogICAgIGNo
YXIgKiphcmd2Owp7CiAgaW50IGM7CgogIGlmIChhcmdjIDwgMikKICAgIHVzYWdlICgpOwoKICB3
aGlsZSAoKGMgPSBnZXRvcHRfbG9uZwogICAgICAgICAgKGFyZ2MsIGFyZ3YsICJlcnN1YWhubGRT
REFJdzo6eDppOnZWV0giLCBvcHRpb25zLCAoKHZvaWQgKikwKSkpICE9ICgtMSkpCiAgICB7CiAg
ICAgIGNoYXIgKmNwOwogICAgICBpbnQgc2VjdGlvbjsKCiAgICAgIHN3aXRjaCAoYykKICAgICAg
ICB7CiAgICAgICAgY2FzZSAwOgoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0gnOgog
ICAgICAgICAgdXNhZ2UgKCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnYSc6CiAg
ICAgICAgICBkb19zeW1zKys7CiAgICAgICAgICBkb19yZWxvYysrOwogICAgICAgICAgZG9fdW53
aW5kKys7CiAgICAgICAgICBkb19keW5hbWljKys7CiAgICAgICAgICBkb19oZWFkZXIrKzsKICAg
ICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAgICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAg
ZG9fdmVyc2lvbisrOwogICAgICAgICAgZG9faGlzdG9ncmFtKys7CiAgICAgICAgICBkb19hcmNo
Kys7CiAgICAgICAgICBkb19ub3RlcysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn
ZSc6CiAgICAgICAgICBkb19oZWFkZXIrKzsKICAgICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAg
ICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQSc6CiAg
ICAgICAgICBkb19hcmNoKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdEJzoKICAg
ICAgICAgIGRvX3VzaW5nX2R5bmFtaWMrKzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
J3InOgogICAgICAgICAgZG9fcmVsb2MrKzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
J3UnOgogICAgICAgICAgZG9fdW53aW5kKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
ICdoJzoKICAgICAgICAgIGRvX2hlYWRlcisrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSAnbCc6CiAgICAgICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAg
Y2FzZSAncyc6CiAgICAgICAgICBkb19zeW1zKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlICdTJzoKICAgICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlICdkJzoKICAgICAgICAgIGRvX2R5bmFtaWMrKzsKICAgICAgICAgIGJyZWFrOwogICAg
ICAgIGNhc2UgJ0knOgogICAgICAgICAgZG9faGlzdG9ncmFtKys7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICduJzoKICAgICAgICAgIGRvX25vdGVzKys7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICd4JzoKICAgICAgICAgIGRvX2R1bXArKzsKICAgICAgICAgIHNlY3Rpb24g
PSBzdHJ0b3VsIChvcHRhcmcsICYgY3AsIDApOwogICAgICAgICAgaWYgKCEgKmNwICYmIHNlY3Rp
b24gPj0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHJlcXVlc3RfZHVtcCAoc2VjdGlv
biwgKDEgPDwgMCkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
ICBnb3RvIG9vcHM7CiAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICBkb19kdW1wKys7CiAgICAg
ICAgICBpZiAob3B0YXJnID09IDApCiAgICAgICAgICAgIGRvX2RlYnVnZ2luZyA9IDE7CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXgg
PSAwOwoKICAgICAgICAgICAgICBkb19kZWJ1Z2dpbmcgPSAwOwoKICAgICAgICAgICAgICB3aGls
ZSAob3B0YXJnW2luZGV4XSkKICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0YXJnW2luZGV4Kytd
KQogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAg
ICAgICAgICAgICBjYXNlICdJJzoKICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19pbmZvID0g
MTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgIGNhc2UgJ2En
OgogICAgICAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgICAgICAgICBkb19kZWJ1
Z19hYmJyZXZzID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgICBjYXNlICdMJzoKICAgICAgICAgICAgICAg
ICAgICBkb19kZWJ1Z19saW5lcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICAgY2FzZSAnUCc6CiAgICAg
ICAgICAgICAgICAgICAgZG9fZGVidWdfcHVibmFtZXMgPSAxOwogICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICAgICAgIGNh
c2UgJ1InOgogICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2FyYW5nZXMgPSAxOwogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAg
ICAgICAgICAgICAgZG9fZGVidWdfZnJhbWVzX2ludGVycCA9IDE7CiAgICAgICAgICAgICAgICAg
IGNhc2UgJ2YnOgogICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2ZyYW1lcyA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICBjYXNlICdtJzoKICAgICAg
ICAgICAgICAgICAgY2FzZSAnTSc6CiAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfbWFjaW5m
byA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICBjYXNl
ICdzJzoKICAgICAgICAgICAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgICAgICAgICAgZG9f
ZGVidWdfc3RyID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgICAgICBjYXNlICdPJzoKICAgICAgICAgICAgICAg
ICAgICBkb19kZWJ1Z19sb2MgPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB3YXJuICgoIlVucmVjb2du
aXplZCBkZWJ1ZyBvcHRpb24gJyVzJ1xuIiksIG9wdGFyZyk7CiAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSA1MTI6CiAgICAgICAgICBkb19kdW1wKys7CiAgICAgICAgICBpZiAob3B0
YXJnID09IDApCiAgICAgICAgICAgIGRvX2RlYnVnZ2luZyA9IDE7CiAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfZHVtcF9v
cHRbXQogICAgICAgICAgICAgICAgPSB7ICJsaW5lIiwgImluZm8iLCAiYWJicmV2IiwgInB1Ym5h
bWVzIiwgInJhbmdlcyIsCiAgICAgICAgICAgICAgICAgICAgIm1hY3JvIiwgImZyYW1lcyIsICJm
cmFtZXMtaW50ZXJwIiwgInN0ciIsICJsb2MiLCAoKHZvaWQgKikwKSB9OwogICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBpbmRleDsKICAgICAgICAgICAgICBjb25zdCBjaGFyICpwOwoKICAgICAg
ICAgICAgICBkb19kZWJ1Z2dpbmcgPSAwOwoKICAgICAgICAgICAgICBwID0gb3B0YXJnOwogICAg
ICAgICAgICAgIHdoaWxlICgqcCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
Zm9yIChpbmRleCA9IDA7IGRlYnVnX2R1bXBfb3B0W2luZGV4XTsgaW5kZXgrKykKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChk
ZWJ1Z19kdW1wX29wdFtpbmRleF0pOwoKICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGxlbikgJiYgKChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAocCkgJiYgc3RybGVuIChwKSA8ICgoc2l6ZV90KSAobGVuKSkpIHx8IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKSAmJiBzdHJsZW4gKGRlYnVnX2R1bXBf
b3B0W2luZGV4XSkgPCAoKHNpemVfdCkgKGxlbikpKSkgPyBfX2V4dGVuc2lvbl9fICh7IHNpemVf
dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocCkgJiYgX19idWls
dGluX2NvbnN0YW50X3AgKGRlYnVnX2R1bXBfb3B0W2luZGV4XSkgJiYgKF9fczFfbGVuID0gc3Ry
bGVuIChwKSwgX19zMl9sZW4gPSBzdHJsZW4gKGRlYnVnX2R1bXBfb3B0W2luZGV4XSksICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKHApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHAp
ID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRl
YnVnX2R1bXBfb3B0W2luZGV4XSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2Nv
bnN0IGNoYXIgKikgKHApLCAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtpbmRleF0p
LCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHApICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChwKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4g
KHApLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1Z19kdW1wX29wdFtpbmRl
eF0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2R1bXBfb3B0W2luZGV4XSkg
PT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShkZWJ1Z19kdW1wX29wdFtpbmRleF0p
KVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtp
bmRleF0pKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1w
X29wdFtpbmRleF0pKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkp
WzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9f
ICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKTsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHApKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cCkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChw
KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlb
M10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9w
IChkZWJ1Z19kdW1wX29wdFtpbmRleF0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1
Z19kdW1wX29wdFtpbmRleF0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2R1
bXBfb3B0W2luZGV4XSkgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChwKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
cCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzBdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShkZWJ1Z19kdW1wX29wdFtpbmRl
eF0pKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
dW1wX29wdFtpbmRleF0pKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVi
dWdfZHVtcF9vcHRbaW5kZXhdKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAocCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
dW1wX29wdFtpbmRleF0pKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtpbmRleF0pKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1w
X29wdFtpbmRleF0pKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAocCwgZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSkpKTsgfSkgOiBzdHJuY21wIChwLCBkZWJ1Z19kdW1wX29wdFtpbmRl
eF0sIGxlbikpKSA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbbGVuXSA9PSAn
LCcgfHwgcFtsZW5dID09ICdcMCcpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChwWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvX2RlYnVnX2luZm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfYWJicmV2cyA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFsxXSA9PSAnaScp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfbGluZXMgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9fZGVidWdfbG9jID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvX2RlYnVnX3B1Ym5hbWVzID0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2FyYW5nZXMgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IDYp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfZnJhbWVzX2ludGVycCA9
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2ZyYW1lcyA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ20nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19t
YWNpbmZvID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvX2RlYnVnX3N0ciA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
ICBwICs9IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIGlm
IChkZWJ1Z19kdW1wX29wdFtpbmRleF0gPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgd2FybiAoKCJVbnJlY29nbml6ZWQgZGVidWcgb3B0
aW9uICclcydcbiIpLCBwKTsKICAgICAgICAgICAgICAgICAgICAgIHAgPSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCcsJykgJiYgKCcsJykgPT0gJ1wwJyA/IChjaGFyICop
IF9fcmF3bWVtY2hyIChwLCAnLCcpIDogc3RyY2hyIChwLCAnLCcpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICBpZiAocCA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICcs
JykKICAgICAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KICAgICAgICAgIGJyZWFrOwojIDI3ODggInJlYWRlbGYuYyIKICAgICAgICBjYXNlICd2JzoK
ICAgICAgICAgIHByaW50X3ZlcnNpb24gKHByb2dyYW1fbmFtZSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICdWJzoKICAgICAgICAgIGRvX3ZlcnNpb24rKzsKICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgZG9fd2lkZSsrOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgZGVmYXVsdDoKICAgICAgICBvb3BzOgoKICAgICAgICAgIGVycm9yICgoIkludmFs
aWQgb3B0aW9uICctJWMnXG4iKSwgYyk7CgogICAgICAgIGNhc2UgJz8nOgogICAgICAgICAgdXNh
Z2UgKCk7CiAgICAgICAgfQogICAgfQoKICBpZiAoIWRvX2R5bmFtaWMgJiYgIWRvX3N5bXMgJiYg
IWRvX3JlbG9jICYmICFkb191bndpbmQgJiYgIWRvX3NlY3Rpb25zCiAgICAgICYmICFkb19zZWdt
ZW50cyAmJiAhZG9faGVhZGVyICYmICFkb19kdW1wICYmICFkb192ZXJzaW9uCiAgICAgICYmICFk
b19oaXN0b2dyYW0gJiYgIWRvX2RlYnVnZ2luZyAmJiAhZG9fYXJjaCAmJiAhZG9fbm90ZXMpCiAg
ICB1c2FnZSAoKTsKICBlbHNlIGlmIChhcmdjIDwgMykKICAgIHsKICAgICAgd2FybiAoKCJOb3Ro
aW5nIHRvIGRvLlxuIikpOwogICAgICB1c2FnZSgpOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hh
ciAqCmdldF9lbGZfY2xhc3MgKGVsZl9jbGFzcykKICAgICB1bnNpZ25lZCBpbnQgZWxmX2NsYXNz
Owp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07CgogIHN3aXRjaCAoZWxmX2NsYXNzKQogICAgewog
ICAgY2FzZSAwOiByZXR1cm4gKCJub25lIik7CiAgICBjYXNlIDE6IHJldHVybiAiRUxGMzIiOwog
ICAgY2FzZSAyOiByZXR1cm4gIkVMRjY0IjsKICAgIGRlZmF1bHQ6CiAgICAgIHNwcmludGYgKGJ1
ZmYsICgiPHVua25vd246ICV4PiIpLCBlbGZfY2xhc3MpOwogICAgICByZXR1cm4gYnVmZjsKICAg
IH0KfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRfZGF0YV9lbmNvZGluZyAoZW5jb2RpbmcpCiAg
ICAgdW5zaWduZWQgaW50IGVuY29kaW5nOwp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07CgogIHN3
aXRjaCAoZW5jb2RpbmcpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAoIm5vbmUiKTsKICAgIGNh
c2UgMTogcmV0dXJuICgiMidzIGNvbXBsZW1lbnQsIGxpdHRsZSBlbmRpYW4iKTsKICAgIGNhc2Ug
MjogcmV0dXJuICgiMidzIGNvbXBsZW1lbnQsIGJpZyBlbmRpYW4iKTsKICAgIGRlZmF1bHQ6CiAg
ICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd246ICV4PiIpLCBlbmNvZGluZyk7CiAgICAgIHJl
dHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9vc2FiaV9uYW1lIChv
c2FiaSkKICAgICB1bnNpZ25lZCBpbnQgb3NhYmk7CnsKICBzdGF0aWMgY2hhciBidWZmWzMyXTsK
CiAgc3dpdGNoIChvc2FiaSkKICAgIHsKICAgIGNhc2UgMDogcmV0dXJuICJVTklYIC0gU3lzdGVt
IFYiOwogICAgY2FzZSAxOiByZXR1cm4gIlVOSVggLSBIUC1VWCI7CiAgICBjYXNlIDI6IHJldHVy
biAiVU5JWCAtIE5ldEJTRCI7CiAgICBjYXNlIDM6IHJldHVybiAiVU5JWCAtIExpbnV4IjsKICAg
IGNhc2UgNDogcmV0dXJuICJHTlUvSHVyZCI7CiAgICBjYXNlIDY6IHJldHVybiAiVU5JWCAtIFNv
bGFyaXMiOwogICAgY2FzZSA3OiByZXR1cm4gIlVOSVggLSBBSVgiOwogICAgY2FzZSA4OiByZXR1
cm4gIlVOSVggLSBJUklYIjsKICAgIGNhc2UgOTogcmV0dXJuICJVTklYIC0gRnJlZUJTRCI7CiAg
ICBjYXNlIDEwOiByZXR1cm4gIlVOSVggLSBUUlU2NCI7CiAgICBjYXNlIDExOiByZXR1cm4gIk5v
dmVsbCAtIE1vZGVzdG8iOwogICAgY2FzZSAxMjogcmV0dXJuICJVTklYIC0gT3BlbkJTRCI7CiAg
ICBjYXNlIDEzOiByZXR1cm4gIlZNUyAtIE9wZW5WTVMiOwogICAgY2FzZSAxNDogcmV0dXJuICJI
UCAtIE5vbi1TdG9wIEtlcm5lbCI7CiAgICBjYXNlIDE1OiByZXR1cm4gIkFtaWdhIFJlc2VhcmNo
IE9TIjsKICAgIGNhc2UgMjU1OiByZXR1cm4gKCJTdGFuZGFsb25lIEFwcCIpOwogICAgY2FzZSA5
NzogcmV0dXJuICJBUk0iOwogICAgZGVmYXVsdDoKICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5r
bm93bjogJXg+IiksIG9zYWJpKTsKICAgICAgcmV0dXJuIGJ1ZmY7CiAgICB9Cn0KCgpzdGF0aWMg
aW50CnByb2Nlc3NfZmlsZV9oZWFkZXIgKCkKewogIGlmICggZWxmX2hlYWRlci5lX2lkZW50WzBd
ICE9IDB4N0YKICAgICAgfHwgZWxmX2hlYWRlci5lX2lkZW50WzFdICE9ICdFJwogICAgICB8fCBl
bGZfaGVhZGVyLmVfaWRlbnRbMl0gIT0gJ0wnCiAgICAgIHx8IGVsZl9oZWFkZXIuZV9pZGVudFsz
XSAhPSAnRicpCiAgICB7CiAgICAgIGVycm9yCiAgICAgICAgKCgiTm90IGFuIEVMRiBmaWxlIC0g
aXQgaGFzIHRoZSB3cm9uZyBtYWdpYyBieXRlcyBhdCB0aGUgc3RhcnRcbiIpKTsKICAgICAgcmV0
dXJuIDA7CiAgICB9CgogIGlmIChkb19oZWFkZXIpCiAgICB7CiAgICAgIGludCBpOwoKICAgICAg
cHJpbnRmICgoIkVMRiBIZWFkZXI6XG4iKSk7CiAgICAgIHByaW50ZiAoKCIgIE1hZ2ljOiAgICIp
KTsKICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCiAgICAgICAgcHJpbnRmICgiJTIuMngg
IiwgZWxmX2hlYWRlci5lX2lkZW50W2ldKTsKICAgICAgcHJpbnRmICgiXG4iKTsKICAgICAgcHJp
bnRmICgoIiAgQ2xhc3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIiksCiAgICAg
ICAgICAgICAgZ2V0X2VsZl9jbGFzcyAoZWxmX2hlYWRlci5lX2lkZW50WzRdKSk7CiAgICAgIHBy
aW50ZiAoKCIgIERhdGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAg
ICAgICAgICAgIGdldF9kYXRhX2VuY29kaW5nIChlbGZfaGVhZGVyLmVfaWRlbnRbNV0pKTsKICAg
ICAgcHJpbnRmICgoIiAgVmVyc2lvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAlZCAlc1xu
IiksCiAgICAgICAgICAgICAgZWxmX2hlYWRlci5lX2lkZW50WzZdLAogICAgICAgICAgICAgIChl
bGZfaGVhZGVyLmVfaWRlbnRbNl0gPT0gMQogICAgICAgICAgICAgICA/ICIoY3VycmVudCkiCiAg
ICAgICAgICAgICAgIDogKGVsZl9oZWFkZXIuZV9pZGVudFs2XSAhPSAwCiAgICAgICAgICAgICAg
ICAgID8gIjx1bmtub3duOiAlbHg+IgogICAgICAgICAgICAgICAgICA6ICIiKSkpOwogICAgICBw
cmludGYgKCgiICBPUy9BQkk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iKSwKICAg
ICAgICAgICAgICBnZXRfb3NhYmlfbmFtZSAoZWxmX2hlYWRlci5lX2lkZW50WzddKSk7CiAgICAg
IHByaW50ZiAoKCIgIEFCSSBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgJWRcbiIpLAog
ICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9pZGVudFs4XSk7CiAgICAgIHByaW50ZiAoKCIgIFR5
cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAgICAgICAgICAgIGdl
dF9maWxlX3R5cGUgKGVsZl9oZWFkZXIuZV90eXBlKSk7CiAgICAgIHByaW50ZiAoKCIgIE1hY2hp
bmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAgICAgICAgICAgIGdldF9t
YWNoaW5lX25hbWUgKGVsZl9oZWFkZXIuZV9tYWNoaW5lKSk7CiAgICAgIHByaW50ZiAoKCIgIFZl
cnNpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHglbHhcbiIpLAogICAgICAgICAgICAg
ICh1bnNpZ25lZCBsb25nKSBlbGZfaGVhZGVyLmVfdmVyc2lvbik7CgogICAgICBwcmludGYgKCgi
ICBFbnRyeSBwb2ludCBhZGRyZXNzOiAgICAgICAgICAgICAgICIpKTsKICAgICAgcHJpbnRfdm1h
ICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX2VudHJ5LCBQUkVGSVhfSEVYKTsKICAgICAgcHJpbnRm
ICgoIlxuICBTdGFydCBvZiBwcm9ncmFtIGhlYWRlcnM6ICAgICAgICAgICIpKTsKICAgICAgcHJp
bnRfdm1hICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX3Bob2ZmLCBERUMpOwogICAgICBwcmludGYg
KCgiIChieXRlcyBpbnRvIGZpbGUpXG4gIFN0YXJ0IG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAg
ICAgIikpOwogICAgICBwcmludF92bWEgKChiZmRfdm1hKSBlbGZfaGVhZGVyLmVfc2hvZmYsIERF
Qyk7CiAgICAgIHByaW50ZiAoKCIgKGJ5dGVzIGludG8gZmlsZSlcbiIpKTsKCiAgICAgIHByaW50
ZiAoKCIgIEZsYWdzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHglbHglc1xuIiksCiAg
ICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIGVsZl9oZWFkZXIuZV9mbGFncywKICAgICAgICAg
ICAgICBnZXRfbWFjaGluZV9mbGFncyAoZWxmX2hlYWRlci5lX2ZsYWdzLCBlbGZfaGVhZGVyLmVf
bWFjaGluZSkpOwogICAgICBwcmludGYgKCgiICBTaXplIG9mIHRoaXMgaGVhZGVyOiAgICAgICAg
ICAgICAgICVsZCAoYnl0ZXMpXG4iKSwKICAgICAgICAgICAgICAobG9uZykgZWxmX2hlYWRlci5l
X2Voc2l6ZSk7CiAgICAgIHByaW50ZiAoKCIgIFNpemUgb2YgcHJvZ3JhbSBoZWFkZXJzOiAgICAg
ICAgICAgJWxkIChieXRlcylcbiIpLAogICAgICAgICAgICAgIChsb25nKSBlbGZfaGVhZGVyLmVf
cGhlbnRzaXplKTsKICAgICAgcHJpbnRmICgoIiAgTnVtYmVyIG9mIHByb2dyYW0gaGVhZGVyczog
ICAgICAgICAlbGRcbiIpLAogICAgICAgICAgICAgIChsb25nKSBlbGZfaGVhZGVyLmVfcGhudW0p
OwogICAgICBwcmludGYgKCgiICBTaXplIG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAgICAgICVs
ZCAoYnl0ZXMpXG4iKSwKICAgICAgICAgICAgICAobG9uZykgZWxmX2hlYWRlci5lX3NoZW50c2l6
ZSk7CiAgICAgIHByaW50ZiAoKCIgIE51bWJlciBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAg
JWxkIiksCiAgICAgICAgICAgICAgKGxvbmcpIGVsZl9oZWFkZXIuZV9zaG51bSk7CiAgICAgIGlm
IChzZWN0aW9uX2hlYWRlcnMgIT0gKCh2b2lkICopMCkgJiYgZWxmX2hlYWRlci5lX3NobnVtID09
IDApCiAgICAgICAgcHJpbnRmICgiICglbGQpIiwgKGxvbmcpIHNlY3Rpb25faGVhZGVyc1swXS5z
aF9zaXplKTsKICAgICAgX0lPX3B1dGMgKCdcbicsIHN0ZG91dCk7CiAgICAgIHByaW50ZiAoKCIg
IFNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZSBpbmRleDogJWxkIiksCiAgICAgICAgICAgICAg
KGxvbmcpIGVsZl9oZWFkZXIuZV9zaHN0cm5keCk7CiAgICAgIGlmIChzZWN0aW9uX2hlYWRlcnMg
IT0gKCh2b2lkICopMCkgJiYgZWxmX2hlYWRlci5lX3Noc3RybmR4ID09IDB4RkZGRikKICAgICAg
ICBwcmludGYgKCIgKCVsZCkiLCAobG9uZykgc2VjdGlvbl9oZWFkZXJzWzBdLnNoX2xpbmspOwog
ICAgICBfSU9fcHV0YyAoJ1xuJywgc3Rkb3V0KTsKICAgIH0KCiAgaWYgKHNlY3Rpb25faGVhZGVy
cyAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgaWYgKGVsZl9oZWFkZXIuZV9zaG51bSA9PSAw
KQogICAgICAgIGVsZl9oZWFkZXIuZV9zaG51bSA9IHNlY3Rpb25faGVhZGVyc1swXS5zaF9zaXpl
OwogICAgICBpZiAoZWxmX2hlYWRlci5lX3Noc3RybmR4ID09IDB4RkZGRikKICAgICAgICBlbGZf
aGVhZGVyLmVfc2hzdHJuZHggPSBzZWN0aW9uX2hlYWRlcnNbMF0uc2hfbGluazsKICAgICAgZnJl
ZSAoc2VjdGlvbl9oZWFkZXJzKTsKICAgICAgc2VjdGlvbl9oZWFkZXJzID0gKCh2b2lkICopMCk7
CiAgICB9CgogIHJldHVybiAxOwp9CgoKc3RhdGljIGludApnZXRfMzJiaXRfcHJvZ3JhbV9oZWFk
ZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpCiAgICAgRklMRSAqZmlsZTsKICAgICBFbGZfSW50
ZXJuYWxfUGhkciAqcHJvZ3JhbV9oZWFkZXJzOwp7CiAgRWxmMzJfRXh0ZXJuYWxfUGhkciAqcGhk
cnM7CiAgRWxmMzJfRXh0ZXJuYWxfUGhkciAqZXh0ZXJuYWw7CiAgRWxmX0ludGVybmFsX1BoZHIg
KmludGVybmFsOwogIHVuc2lnbmVkIGludCBpOwoKICBwaGRycyA9ICgoRWxmMzJfRXh0ZXJuYWxf
UGhkciAqKQogICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgZWxmX2hlYWRl
ci5lX3Bob2ZmLAogICAgICAgICAgICAgICAgICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplICog
ZWxmX2hlYWRlci5lX3BobnVtLAogICAgICAgICAgICAgICAgICAgICAoInByb2dyYW0gaGVhZGVy
cyIpKSk7CiAgaWYgKCFwaGRycykKICAgIHJldHVybiAwOwoKICBmb3IgKGkgPSAwLCBpbnRlcm5h
bCA9IHByb2dyYW1faGVhZGVycywgZXh0ZXJuYWwgPSBwaGRyczsKICAgICAgIGkgPCBlbGZfaGVh
ZGVyLmVfcGhudW07CiAgICAgICBpKyssIGludGVybmFsKyssIGV4dGVybmFsKyspCiAgICB7CiAg
ICAgIGludGVybmFsLT5wX3R5cGUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBfdHlwZSwgc2l6ZW9m
IChleHRlcm5hbC0+cF90eXBlKSk7CiAgICAgIGludGVybmFsLT5wX29mZnNldCA9IGJ5dGVfZ2V0
IChleHRlcm5hbC0+cF9vZmZzZXQsIHNpemVvZiAoZXh0ZXJuYWwtPnBfb2Zmc2V0KSk7CiAgICAg
IGludGVybmFsLT5wX3ZhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3ZhZGRyLCBzaXplb2Yg
KGV4dGVybmFsLT5wX3ZhZGRyKSk7CiAgICAgIGludGVybmFsLT5wX3BhZGRyID0gYnl0ZV9nZXQg
KGV4dGVybmFsLT5wX3BhZGRyLCBzaXplb2YgKGV4dGVybmFsLT5wX3BhZGRyKSk7CiAgICAgIGlu
dGVybmFsLT5wX2ZpbGVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cF9maWxlc3osIHNpemVvZiAo
ZXh0ZXJuYWwtPnBfZmlsZXN6KSk7CiAgICAgIGludGVybmFsLT5wX21lbXN6ID0gYnl0ZV9nZXQg
KGV4dGVybmFsLT5wX21lbXN6LCBzaXplb2YgKGV4dGVybmFsLT5wX21lbXN6KSk7CiAgICAgIGlu
dGVybmFsLT5wX2ZsYWdzID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX2ZsYWdzLCBzaXplb2YgKGV4
dGVybmFsLT5wX2ZsYWdzKSk7CiAgICAgIGludGVybmFsLT5wX2FsaWduID0gYnl0ZV9nZXQgKGV4
dGVybmFsLT5wX2FsaWduLCBzaXplb2YgKGV4dGVybmFsLT5wX2FsaWduKSk7CiAgICB9CgogIGZy
ZWUgKHBoZHJzKTsKCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZ2V0XzY0Yml0X3Byb2dyYW1f
aGVhZGVycyAoZmlsZSwgcHJvZ3JhbV9oZWFkZXJzKQogICAgIEZJTEUgKmZpbGU7CiAgICAgRWxm
X0ludGVybmFsX1BoZHIgKnByb2dyYW1faGVhZGVyczsKewogIEVsZjY0X0V4dGVybmFsX1BoZHIg
KnBoZHJzOwogIEVsZjY0X0V4dGVybmFsX1BoZHIgKmV4dGVybmFsOwogIEVsZl9JbnRlcm5hbF9Q
aGRyICppbnRlcm5hbDsKICB1bnNpZ25lZCBpbnQgaTsKCiAgcGhkcnMgPSAoKEVsZjY0X0V4dGVy
bmFsX1BoZHIgKikKICAgICAgICAgICBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIGVsZl9o
ZWFkZXIuZV9waG9mZiwKICAgICAgICAgICAgICAgICAgICAgZWxmX2hlYWRlci5lX3BoZW50c2l6
ZSAqIGVsZl9oZWFkZXIuZV9waG51bSwKICAgICAgICAgICAgICAgICAgICAgKCJwcm9ncmFtIGhl
YWRlcnMiKSkpOwogIGlmICghcGhkcnMpCiAgICByZXR1cm4gMDsKCiAgZm9yIChpID0gMCwgaW50
ZXJuYWwgPSBwcm9ncmFtX2hlYWRlcnMsIGV4dGVybmFsID0gcGhkcnM7CiAgICAgICBpIDwgZWxm
X2hlYWRlci5lX3BobnVtOwogICAgICAgaSsrLCBpbnRlcm5hbCsrLCBleHRlcm5hbCsrKQogICAg
ewogICAgICBpbnRlcm5hbC0+cF90eXBlID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3R5cGUsIHNp
emVvZiAoZXh0ZXJuYWwtPnBfdHlwZSkpOwogICAgICBpbnRlcm5hbC0+cF9mbGFncyA9IGJ5dGVf
Z2V0IChleHRlcm5hbC0+cF9mbGFncywgc2l6ZW9mIChleHRlcm5hbC0+cF9mbGFncykpOwogICAg
ICBpbnRlcm5hbC0+cF9vZmZzZXQgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBfb2Zmc2V0LCAtOCk7
CiAgICAgIGludGVybmFsLT5wX3ZhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3ZhZGRyLCAt
OCk7CiAgICAgIGludGVybmFsLT5wX3BhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3BhZGRy
LCAtOCk7CiAgICAgIGludGVybmFsLT5wX2ZpbGVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cF9m
aWxlc3osIC04KTsKICAgICAgaW50ZXJuYWwtPnBfbWVtc3ogPSBieXRlX2dldCAoZXh0ZXJuYWwt
PnBfbWVtc3osIC04KTsKICAgICAgaW50ZXJuYWwtPnBfYWxpZ24gPSBieXRlX2dldCAoZXh0ZXJu
YWwtPnBfYWxpZ24sIC04KTsKICAgIH0KCiAgZnJlZSAocGhkcnMpOwoKICByZXR1cm4gMTsKfQoK
CgpzdGF0aWMgaW50CnByb2Nlc3NfcHJvZ3JhbV9oZWFkZXJzIChmaWxlKQogICAgIEZJTEUgKmZp
bGU7CnsKICBFbGZfSW50ZXJuYWxfUGhkciAqcHJvZ3JhbV9oZWFkZXJzOwogIEVsZl9JbnRlcm5h
bF9QaGRyICpzZWdtZW50OwogIHVuc2lnbmVkIGludCBpOwoKICBpZiAoZWxmX2hlYWRlci5lX3Bo
bnVtID09IDApCiAgICB7CiAgICAgIGlmIChkb19zZWdtZW50cykKICAgICAgICBwcmludGYgKCgi
XG5UaGVyZSBhcmUgbm8gcHJvZ3JhbSBoZWFkZXJzIGluIHRoaXMgZmlsZS5cbiIpKTsKICAgICAg
cmV0dXJuIDA7CiAgICB9CgogIGlmIChkb19zZWdtZW50cyAmJiAhZG9faGVhZGVyKQogICAgewog
ICAgICBwcmludGYgKCgiXG5FbGYgZmlsZSB0eXBlIGlzICVzXG4iKSwgZ2V0X2ZpbGVfdHlwZSAo
ZWxmX2hlYWRlci5lX3R5cGUpKTsKICAgICAgcHJpbnRmICgoIkVudHJ5IHBvaW50ICIpKTsKICAg
ICAgcHJpbnRfdm1hICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX2VudHJ5LCBQUkVGSVhfSEVYKTsK
ICAgICAgcHJpbnRmICgoIlxuVGhlcmUgYXJlICVkIHByb2dyYW0gaGVhZGVycywgc3RhcnRpbmcg
YXQgb2Zmc2V0ICIpLAogICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9waG51bSk7CiAgICAgIHBy
aW50X3ZtYSAoKGJmZF92bWEpIGVsZl9oZWFkZXIuZV9waG9mZiwgREVDKTsKICAgICAgcHJpbnRm
ICgiXG4iKTsKICAgIH0KCiAgcHJvZ3JhbV9oZWFkZXJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICop
IG1hbGxvYwogICAgKGVsZl9oZWFkZXIuZV9waG51bSAqIHNpemVvZiAoRWxmX0ludGVybmFsX1Bo
ZHIpKTsKCiAgaWYgKHByb2dyYW1faGVhZGVycyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAg
ZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYg
KGlzXzMyYml0X2VsZikKICAgIGkgPSBnZXRfMzJiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBw
cm9ncmFtX2hlYWRlcnMpOwogIGVsc2UKICAgIGkgPSBnZXRfNjRiaXRfcHJvZ3JhbV9oZWFkZXJz
IChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwoKICBpZiAoaSA9PSAwKQogICAgewogICAgICBmcmVl
IChwcm9ncmFtX2hlYWRlcnMpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYgKGRvX3NlZ21l
bnRzKQogICAgewogICAgICBpZiAoZWxmX2hlYWRlci5lX3BobnVtID4gMSkKICAgICAgICBwcmlu
dGYgKCgiXG5Qcm9ncmFtIEhlYWRlcnM6XG4iKSk7CiAgICAgIGVsc2UKICAgICAgICBwcmludGYg
KCgiXG5Qcm9ncmFtIEhlYWRlcnM6XG4iKSk7CgogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAg
ICAgIHByaW50ZgogICAgICAgICAgKCgiICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRk
ciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnblxuIikpOwogICAgICBlbHNl
IGlmIChkb193aWRlKQogICAgICAgIHByaW50ZgogICAgICAgICAgKCgiICBUeXBlICAgICAgICAg
ICBPZmZzZXQgICBWaXJ0QWRkciAgICAgICAgICAgUGh5c0FkZHIgICAgICAgICAgIEZpbGVTaXog
IE1lbVNpeiAgIEZsZyBBbGlnblxuIikpOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
cHJpbnRmCiAgICAgICAgICAgICgoIiAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgICAgICAgICAg
IFZpcnRBZGRyICAgICAgICAgICBQaHlzQWRkclxuIikpOwogICAgICAgICAgcHJpbnRmCiAgICAg
ICAgICAgICgoIiAgICAgICAgICAgICAgICAgRmlsZVNpeiAgICAgICAgICAgIE1lbVNpeiAgICAg
ICAgICAgICAgRmxhZ3MgIEFsaWduXG4iKSk7CiAgICAgICAgfQogICAgfQoKICBsb2FkYWRkciA9
IC0xOwogIGR5bmFtaWNfYWRkciA9IDA7CiAgZHluYW1pY19zaXplID0gMDsKCiAgZm9yIChpID0g
MCwgc2VnbWVudCA9IHByb2dyYW1faGVhZGVyczsKICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfcGhu
dW07CiAgICAgICBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgaWYgKGRvX3NlZ21lbnRzKQog
ICAgICAgIHsKICAgICAgICAgIHByaW50ZiAoIiAgJS0xNC4xNHMgIiwgZ2V0X3NlZ21lbnRfdHlw
ZSAoc2VnbWVudC0+cF90eXBlKSk7CgogICAgICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIHByaW50ZiAoIjB4JTYuNmx4ICIsICh1bnNpZ25lZCBsb25n
KSBzZWdtZW50LT5wX29mZnNldCk7CiAgICAgICAgICAgICAgcHJpbnRmICgiMHglOC44bHggIiwg
KHVuc2lnbmVkIGxvbmcpIHNlZ21lbnQtPnBfdmFkZHIpOwogICAgICAgICAgICAgIHByaW50ZiAo
IjB4JTguOGx4ICIsICh1bnNpZ25lZCBsb25nKSBzZWdtZW50LT5wX3BhZGRyKTsKICAgICAgICAg
ICAgICBwcmludGYgKCIweCU1LjVseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9maWxl
c3opOwogICAgICAgICAgICAgIHByaW50ZiAoIjB4JTUuNWx4ICIsICh1bnNpZ25lZCBsb25nKSBz
ZWdtZW50LT5wX21lbXN6KTsKICAgICAgICAgICAgICBwcmludGYgKCIlYyVjJWMgIiwKICAgICAg
ICAgICAgICAgICAgICAgIChzZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMikgPyAnUicgOiAnICcp
LAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3MgJiAoMSA8PCAxKSA/ICdX
JyA6ICcgJyksCiAgICAgICAgICAgICAgICAgICAgICAoc2VnbWVudC0+cF9mbGFncyAmICgxIDw8
IDApID8gJ0UnIDogJyAnKSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiJSNseCIsICh1bnNpZ25l
ZCBsb25nKSBzZWdtZW50LT5wX2FsaWduKTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZSBp
ZiAoZG9fd2lkZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
Zykgc2VnbWVudC0+cF9vZmZzZXQgPT0gc2VnbWVudC0+cF9vZmZzZXQpCiAgICAgICAgICAgICAg
ICBwcmludGYgKCIweCU2LjZseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9vZmZzZXQp
OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
cHJpbnRfdm1hIChzZWdtZW50LT5wX29mZnNldCwgRlVMTF9IRVgpOwogICAgICAgICAgICAgICAg
ICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludF92
bWEgKHNlZ21lbnQtPnBfdmFkZHIsIEZVTExfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgn
ICcpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAoc2VnbWVudC0+cF9wYWRkciwgRlVMTF9IRVgp
OwogICAgICAgICAgICAgIHB1dGNoYXIgKCcgJyk7CgogICAgICAgICAgICAgIGlmICgodW5zaWdu
ZWQgbG9uZykgc2VnbWVudC0+cF9maWxlc3ogPT0gc2VnbWVudC0+cF9maWxlc3opCiAgICAgICAg
ICAgICAgICBwcmludGYgKCIweCU2LjZseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9m
aWxlc3opOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgcHJpbnRfdm1hIChzZWdtZW50LT5wX2ZpbGVzeiwgRlVMTF9IRVgpOwogICAgICAgICAg
ICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBp
ZiAoKHVuc2lnbmVkIGxvbmcpIHNlZ21lbnQtPnBfbWVtc3ogPT0gc2VnbWVudC0+cF9tZW1zeikK
ICAgICAgICAgICAgICAgIHByaW50ZiAoIjB4JTYuNmx4IiwgKHVuc2lnbmVkIGxvbmcpIHNlZ21l
bnQtPnBfbWVtc3opOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgcHJpbnRfdm1hIChzZWdtZW50LT5wX29mZnNldCwgRlVMTF9IRVgpOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludGYgKCIgJWMlYyVjICIsCiAgICAgICAg
ICAgICAgICAgICAgICAoc2VnbWVudC0+cF9mbGFncyAmICgxIDw8IDIpID8gJ1InIDogJyAnKSwK
ICAgICAgICAgICAgICAgICAgICAgIChzZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMSkgPyAnVycg
OiAnICcpLAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3MgJiAoMSA8PCAw
KSA/ICdFJyA6ICcgJykpOwoKICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHNlZ21l
bnQtPnBfYWxpZ24gPT0gc2VnbWVudC0+cF9hbGlnbikKICAgICAgICAgICAgICAgIHByaW50ZiAo
IiUjbHgiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9hbGlnbik7CiAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21l
bnQtPnBfYWxpZ24sIFBSRUZJWF9IRVgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludF92bWEgKHNl
Z21lbnQtPnBfb2Zmc2V0LCBGVUxMX0hFWCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsK
ICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21lbnQtPnBfdmFkZHIsIEZVTExfSEVYKTsKICAg
ICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAoc2VnbWVu
dC0+cF9wYWRkciwgRlVMTF9IRVgpOwogICAgICAgICAgICAgIHByaW50ZiAoIlxuICAgICAgICAg
ICAgICAgICAiKTsKICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21lbnQtPnBfZmlsZXN6LCBG
VUxMX0hFWCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgICBwcmlu
dF92bWEgKHNlZ21lbnQtPnBfbWVtc3osIEZVTExfSEVYKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgICVjJWMlYyAgICAiLAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3Mg
JiAoMSA8PCAyKSA/ICdSJyA6ICcgJyksCiAgICAgICAgICAgICAgICAgICAgICAoc2VnbWVudC0+
cF9mbGFncyAmICgxIDw8IDEpID8gJ1cnIDogJyAnKSwKICAgICAgICAgICAgICAgICAgICAgIChz
ZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMCkgPyAnRScgOiAnICcpKTsKICAgICAgICAgICAgICBw
cmludF92bWEgKHNlZ21lbnQtPnBfYWxpZ24sIEhFWCk7CiAgICAgICAgICAgIH0KICAgICAgICB9
CgogICAgICBzd2l0Y2ggKHNlZ21lbnQtPnBfdHlwZSkKICAgICAgICB7CiAgICAgICAgY2FzZSAx
OgogICAgICAgICAgaWYgKGxvYWRhZGRyID09IC0xKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBhbGlnbl9tYXNrID0gLXNlZ21lbnQtPnBfYWxpZ247CgogICAgICAg
ICAgICAgIGlmIChhbGlnbl9tYXNrID09IDApCiAgICAgICAgICAgICAgICAtLWFsaWduX21hc2s7
CiAgICAgICAgICAgICAgbG9hZGFkZHIgPSAoKHNlZ21lbnQtPnBfdmFkZHIgJiBhbGlnbl9tYXNr
KQogICAgICAgICAgICAgICAgICAgICAgICAgIC0gKHNlZ21lbnQtPnBfb2Zmc2V0ICYgYWxpZ25f
bWFzaykpOwogICAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgog
ICAgICAgICAgaWYgKGR5bmFtaWNfYWRkcikKICAgICAgICAgICAgZXJyb3IgKCgibW9yZSB0aGFu
IG9uZSBkeW5hbWljIHNlZ21lbnRcbiIpKTsKCiAgICAgICAgICBkeW5hbWljX2FkZHIgPSBzZWdt
ZW50LT5wX29mZnNldDsKICAgICAgICAgIGR5bmFtaWNfc2l6ZSA9IHNlZ21lbnQtPnBfZmlsZXN6
OwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgIGlmIChmc2VlayAo
ZmlsZSwgKGxvbmcpIHNlZ21lbnQtPnBfb2Zmc2V0LCAwKSkKICAgICAgICAgICAgZXJyb3IgKCgi
VW5hYmxlIHRvIGZpbmQgcHJvZ3JhbSBpbnRlcnByZXRlciBuYW1lXG4iKSk7CiAgICAgICAgICBl
bHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcm9ncmFtX2ludGVycHJldGVyWzBdID0g
MDsKICAgICAgICAgICAgICBmc2NhbmYgKGZpbGUsICIlNjNzIiwgcHJvZ3JhbV9pbnRlcnByZXRl
cik7CgogICAgICAgICAgICAgIGlmIChkb19zZWdtZW50cykKICAgICAgICAgICAgICAgIHByaW50
ZiAoKCJcbiAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6ICVzXSIpLAogICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1faW50ZXJwcmV0ZXIpOwogICAgICAgICAgICB9CiAgICAg
ICAgICBicmVhazsKICAgICAgICB9CgogICAgICBpZiAoZG9fc2VnbWVudHMpCiAgICAgICAgX0lP
X3B1dGMgKCdcbicsIHN0ZG91dCk7CiAgICB9CgogIGlmIChsb2FkYWRkciA9PSAtMSkKICAgIHsK
CiAgICAgIGxvYWRhZGRyID0gMDsKICAgIH0KCiAgaWYgKGRvX3NlZ21lbnRzICYmIHNlY3Rpb25f
aGVhZGVycyAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcHJpbnRmICgoIlxuIFNlY3Rpb24g
dG8gU2VnbWVudCBtYXBwaW5nOlxuIikpOwogICAgICBwcmludGYgKCgiICBTZWdtZW50IFNlY3Rp
b25zLi4uXG4iKSk7CgogICAgICAoKHZvaWQpICgoc3RyaW5nX3RhYmxlICE9ICgodm9pZCAqKTAp
KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoInN0cmluZ190YWJsZSAhPSAoKHZvaWQgKikwKSIsICJy
ZWFkZWxmLmMiLCAzMjUzLCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpKTsKCiAgICAgIGZvciAo
aSA9IDA7IGkgPCBlbGZfaGVhZGVyLmVfcGhudW07IGkrKykKICAgICAgICB7CiAgICAgICAgICB1
bnNpZ25lZCBpbnQgajsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwoKICAg
ICAgICAgIHNlZ21lbnQgPSBwcm9ncmFtX2hlYWRlcnMgKyBpOwogICAgICAgICAgc2VjdGlvbiA9
IHNlY3Rpb25faGVhZGVyczsKCiAgICAgICAgICBwcmludGYgKCIgICAlMi4yZCAgICAgIiwgaSk7
CgogICAgICAgICAgZm9yIChqID0gMTsgaiA8IGVsZl9oZWFkZXIuZV9zaG51bTsgaisrLCBzZWN0
aW9uKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoc2VjdGlvbi0+c2hfc2l6ZSA+
IDAKCgogICAgICAgICAgICAgICAgICAmJiAoc2VjdGlvbi0+c2hfZmxhZ3MgJiAoMSA8PCAxKQog
ICAgICAgICAgICAgICAgICAgICAgPyAoc2VjdGlvbi0+c2hfYWRkciA+PSBzZWdtZW50LT5wX3Zh
ZGRyCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWN0aW9uLT5zaF9hZGRyICsgc2VjdGlv
bi0+c2hfc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgPD0gc2VnbWVudC0+cF92YWRkciAr
IHNlZ21lbnQtPnBfbWVtc3opCiAgICAgICAgICAgICAgICAgICAgICA6ICgoYmZkX3ZtYSkgc2Vj
dGlvbi0+c2hfb2Zmc2V0ID49IHNlZ21lbnQtPnBfb2Zmc2V0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAoc2VjdGlvbi0+c2hfb2Zmc2V0ICsgc2VjdGlvbi0+c2hfc2l6ZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw9IHNlZ21lbnQtPnBfb2Zmc2V0ICsgc2VnbWVudC0+cF9maWxl
c3opKSkpCiAgICAgICAgICAgICAgICBwcmludGYgKCIlcyAiLCAoKHNlY3Rpb24pID09ICgodm9p
ZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9s
ZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkp
KTsKICAgICAgICAgICAgfQoKICAgICAgICAgIF9JT19wdXRjICgnXG4nLCBzdGRvdXQpOwogICAg
ICAgIH0KICAgIH0KCiAgZnJlZSAocHJvZ3JhbV9oZWFkZXJzKTsKCiAgcmV0dXJuIDE7Cn0KCgpz
dGF0aWMgaW50CmdldF8zMmJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIG51bSkKICAgICBGSUxF
ICpmaWxlOwogICAgIHVuc2lnbmVkIGludCBudW07CnsKICBFbGYzMl9FeHRlcm5hbF9TaGRyICpz
aGRyczsKICBFbGZfSW50ZXJuYWxfU2hkciAqaW50ZXJuYWw7CiAgdW5zaWduZWQgaW50IGk7Cgog
IHNoZHJzID0gKChFbGYzMl9FeHRlcm5hbF9TaGRyICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgo
dm9pZCAqKTApLCBmaWxlLCBlbGZfaGVhZGVyLmVfc2hvZmYsCiAgICAgICAgICAgICAgICAgICAg
IGVsZl9oZWFkZXIuZV9zaGVudHNpemUgKiBudW0sCiAgICAgICAgICAgICAgICAgICAgICgic2Vj
dGlvbiBoZWFkZXJzIikpKTsKICBpZiAoIXNoZHJzKQogICAgcmV0dXJuIDA7CgogIHNlY3Rpb25f
aGVhZGVycyA9ICgoRWxmX0ludGVybmFsX1NoZHIgKikKICAgICAgICAgICAgICAgICAgICAgbWFs
bG9jIChudW0gKiBzaXplb2YgKEVsZl9JbnRlcm5hbF9TaGRyKSkpOwoKICBpZiAoc2VjdGlvbl9o
ZWFkZXJzID09ICgodm9pZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
XG4iKSk7CiAgICAgIHJldHVybiAwOwogICAgfQoKICBmb3IgKGkgPSAwLCBpbnRlcm5hbCA9IHNl
Y3Rpb25faGVhZGVyczsKICAgICAgIGkgPCBudW07CiAgICAgICBpKyssIGludGVybmFsKyspCiAg
ICB7CiAgICAgIGludGVybmFsLT5zaF9uYW1lID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX25hbWUs
IHNpemVvZiAoc2hkcnNbaV0uc2hfbmFtZSkpOwogICAgICBpbnRlcm5hbC0+c2hfdHlwZSA9IGJ5
dGVfZ2V0IChzaGRyc1tpXS5zaF90eXBlLCBzaXplb2YgKHNoZHJzW2ldLnNoX3R5cGUpKTsKICAg
ICAgaW50ZXJuYWwtPnNoX2ZsYWdzID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2ZsYWdzLCBzaXpl
b2YgKHNoZHJzW2ldLnNoX2ZsYWdzKSk7CiAgICAgIGludGVybmFsLT5zaF9hZGRyID0gYnl0ZV9n
ZXQgKHNoZHJzW2ldLnNoX2FkZHIsIHNpemVvZiAoc2hkcnNbaV0uc2hfYWRkcikpOwogICAgICBp
bnRlcm5hbC0+c2hfb2Zmc2V0ID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX29mZnNldCwgc2l6ZW9m
IChzaGRyc1tpXS5zaF9vZmZzZXQpKTsKICAgICAgaW50ZXJuYWwtPnNoX3NpemUgPSBieXRlX2dl
dCAoc2hkcnNbaV0uc2hfc2l6ZSwgc2l6ZW9mIChzaGRyc1tpXS5zaF9zaXplKSk7CiAgICAgIGlu
dGVybmFsLT5zaF9saW5rID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2xpbmssIHNpemVvZiAoc2hk
cnNbaV0uc2hfbGluaykpOwogICAgICBpbnRlcm5hbC0+c2hfaW5mbyA9IGJ5dGVfZ2V0IChzaGRy
c1tpXS5zaF9pbmZvLCBzaXplb2YgKHNoZHJzW2ldLnNoX2luZm8pKTsKICAgICAgaW50ZXJuYWwt
PnNoX2FkZHJhbGlnbiA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9hZGRyYWxpZ24sIHNpemVvZiAo
c2hkcnNbaV0uc2hfYWRkcmFsaWduKSk7CiAgICAgIGludGVybmFsLT5zaF9lbnRzaXplID0gYnl0
ZV9nZXQgKHNoZHJzW2ldLnNoX2VudHNpemUsIHNpemVvZiAoc2hkcnNbaV0uc2hfZW50c2l6ZSkp
OwogICAgfQoKICBmcmVlIChzaGRycyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50CmdldF82
NGJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIG51bSkKICAgICBGSUxFICpmaWxlOwogICAgIHVu
c2lnbmVkIGludCBudW07CnsKICBFbGY2NF9FeHRlcm5hbF9TaGRyICpzaGRyczsKICBFbGZfSW50
ZXJuYWxfU2hkciAqaW50ZXJuYWw7CiAgdW5zaWduZWQgaW50IGk7CgogIHNoZHJzID0gKChFbGY2
NF9FeHRlcm5hbF9TaGRyICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxl
LCBlbGZfaGVhZGVyLmVfc2hvZmYsCiAgICAgICAgICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9z
aGVudHNpemUgKiBudW0sCiAgICAgICAgICAgICAgICAgICAgICgic2VjdGlvbiBoZWFkZXJzIikp
KTsKICBpZiAoIXNoZHJzKQogICAgcmV0dXJuIDA7CgogIHNlY3Rpb25faGVhZGVycyA9ICgoRWxm
X0ludGVybmFsX1NoZHIgKikKICAgICAgICAgICAgICAgICAgICAgbWFsbG9jIChudW0gKiBzaXpl
b2YgKEVsZl9JbnRlcm5hbF9TaGRyKSkpOwoKICBpZiAoc2VjdGlvbl9oZWFkZXJzID09ICgodm9p
ZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgIHJl
dHVybiAwOwogICAgfQoKICBmb3IgKGkgPSAwLCBpbnRlcm5hbCA9IHNlY3Rpb25faGVhZGVyczsK
ICAgICAgIGkgPCBudW07CiAgICAgICBpKyssIGludGVybmFsKyspCiAgICB7CiAgICAgIGludGVy
bmFsLT5zaF9uYW1lID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX25hbWUsIHNpemVvZiAoc2hkcnNb
aV0uc2hfbmFtZSkpOwogICAgICBpbnRlcm5hbC0+c2hfdHlwZSA9IGJ5dGVfZ2V0IChzaGRyc1tp
XS5zaF90eXBlLCBzaXplb2YgKHNoZHJzW2ldLnNoX3R5cGUpKTsKICAgICAgaW50ZXJuYWwtPnNo
X2ZsYWdzID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2ZsYWdzLCAtOCk7CiAgICAgIGludGVybmFs
LT5zaF9hZGRyID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2FkZHIsIC04KTsKICAgICAgaW50ZXJu
YWwtPnNoX3NpemUgPSBieXRlX2dldCAoc2hkcnNbaV0uc2hfc2l6ZSwgLTgpOwogICAgICBpbnRl
cm5hbC0+c2hfZW50c2l6ZSA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9lbnRzaXplLCAtOCk7CiAg
ICAgIGludGVybmFsLT5zaF9saW5rID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2xpbmssIHNpemVv
ZiAoc2hkcnNbaV0uc2hfbGluaykpOwogICAgICBpbnRlcm5hbC0+c2hfaW5mbyA9IGJ5dGVfZ2V0
IChzaGRyc1tpXS5zaF9pbmZvLCBzaXplb2YgKHNoZHJzW2ldLnNoX2luZm8pKTsKICAgICAgaW50
ZXJuYWwtPnNoX29mZnNldCA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9vZmZzZXQsIHNpemVvZiAo
c2hkcnNbaV0uc2hfb2Zmc2V0KSk7CiAgICAgIGludGVybmFsLT5zaF9hZGRyYWxpZ24gPSBieXRl
X2dldCAoc2hkcnNbaV0uc2hfYWRkcmFsaWduLCBzaXplb2YgKHNoZHJzW2ldLnNoX2FkZHJhbGln
bikpOwogICAgfQoKICBmcmVlIChzaGRycyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgRWxmX0lu
dGVybmFsX1N5bSAqCmdldF8zMmJpdF9lbGZfc3ltYm9scyAoZmlsZSwgc2VjdGlvbikKICAgICBG
SUxFICpmaWxlOwogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwp7CiAgdW5zaWduZWQg
bG9uZyBudW1iZXI7CiAgRWxmMzJfRXh0ZXJuYWxfU3ltICplc3ltczsKICBFbGZfRXh0ZXJuYWxf
U3ltX1NobmR4ICpzaG5keDsKICBFbGZfSW50ZXJuYWxfU3ltICppc3ltczsKICBFbGZfSW50ZXJu
YWxfU3ltICpwc3ltOwogIHVuc2lnbmVkIGludCBqOwoKICBlc3ltcyA9ICgoRWxmMzJfRXh0ZXJu
YWxfU3ltICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9u
LT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24tPnNoX3NpemUsICgic3lt
Ym9scyIpKSk7CiAgaWYgKCFlc3ltcykKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgc2huZHgg
PSAoKHZvaWQgKikwKTsKICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSAoKHZvaWQgKikwKQogICAg
ICAmJiAoc3ltdGFiX3NobmR4X2hkci0+c2hfbGluawogICAgICAgICAgPT0gKHVuc2lnbmVkIGxv
bmcpICgoc2VjdGlvbiAtIHNlY3Rpb25faGVhZGVycykgPCAweEZGMDAgPyAoc2VjdGlvbiAtIHNl
Y3Rpb25faGVhZGVycykgOiAoc2VjdGlvbiAtIHNlY3Rpb25faGVhZGVycykgKyAoMHhGRkZGICsg
MSAtIDB4RkYwMCkpKSkKICAgIHsKICAgICAgc2huZHggPSAoKEVsZl9FeHRlcm5hbF9TeW1fU2hu
ZHggKikKICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzeW10YWJf
c2huZHhfaGRyLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzeW10YWJfc2hu
ZHhfaGRyLT5zaF9zaXplLCAoInN5bXRhYiBzaG5keCIpKSk7CiAgICAgIGlmICghc2huZHgpCiAg
ICAgICAgewogICAgICAgICAgZnJlZSAoZXN5bXMpOwogICAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwogICAgICAgIH0KICAgIH0KCiAgbnVtYmVyID0gc2VjdGlvbi0+c2hfc2l6ZSAvIHNlY3Rp
b24tPnNoX2VudHNpemU7CiAgaXN5bXMgPSAoRWxmX0ludGVybmFsX1N5bSAqKSBtYWxsb2MgKG51
bWJlciAqIHNpemVvZiAoRWxmX0ludGVybmFsX1N5bSkpOwoKICBpZiAoaXN5bXMgPT0gKCh2b2lk
ICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnlcbiIpKTsKICAgICAgaWYg
KHNobmR4KQogICAgICAgIGZyZWUgKHNobmR4KTsKICAgICAgZnJlZSAoZXN5bXMpOwogICAgICBy
ZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogIGZvciAoaiA9IDAsIHBzeW0gPSBpc3ltczsKICAg
ICAgIGogPCBudW1iZXI7CiAgICAgICBqKyssIHBzeW0rKykKICAgIHsKICAgICAgcHN5bS0+c3Rf
bmFtZSA9IGJ5dGVfZ2V0IChlc3ltc1tqXS5zdF9uYW1lLCBzaXplb2YgKGVzeW1zW2pdLnN0X25h
bWUpKTsKICAgICAgcHN5bS0+c3RfdmFsdWUgPSBieXRlX2dldCAoZXN5bXNbal0uc3RfdmFsdWUs
IHNpemVvZiAoZXN5bXNbal0uc3RfdmFsdWUpKTsKICAgICAgcHN5bS0+c3Rfc2l6ZSA9IGJ5dGVf
Z2V0IChlc3ltc1tqXS5zdF9zaXplLCBzaXplb2YgKGVzeW1zW2pdLnN0X3NpemUpKTsKICAgICAg
cHN5bS0+c3Rfc2huZHggPSBieXRlX2dldCAoZXN5bXNbal0uc3Rfc2huZHgsIHNpemVvZiAoZXN5
bXNbal0uc3Rfc2huZHgpKTsKICAgICAgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGRiAmJiBz
aG5keCAhPSAoKHZvaWQgKikwKSkKICAgICAgICBwc3ltLT5zdF9zaG5keAogICAgICAgICAgPSBi
eXRlX2dldCAoKHVuc2lnbmVkIGNoYXIgKikgJnNobmR4W2pdLCBzaXplb2YgKHNobmR4W2pdKSk7
CiAgICAgIHBzeW0tPnN0X2luZm8gPSBieXRlX2dldCAoZXN5bXNbal0uc3RfaW5mbywgc2l6ZW9m
IChlc3ltc1tqXS5zdF9pbmZvKSk7CiAgICAgIHBzeW0tPnN0X290aGVyID0gYnl0ZV9nZXQgKGVz
eW1zW2pdLnN0X290aGVyLCBzaXplb2YgKGVzeW1zW2pdLnN0X290aGVyKSk7CiAgICB9CgogIGlm
IChzaG5keCkKICAgIGZyZWUgKHNobmR4KTsKICBmcmVlIChlc3ltcyk7CgogIHJldHVybiBpc3lt
czsKfQoKc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKgpnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZp
bGUsIHNlY3Rpb24pCiAgICAgRklMRSAqZmlsZTsKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2Vj
dGlvbjsKewogIHVuc2lnbmVkIGxvbmcgbnVtYmVyOwogIEVsZjY0X0V4dGVybmFsX1N5bSAqZXN5
bXM7CiAgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqc2huZHg7CiAgRWxmX0ludGVybmFsX1N5bSAq
aXN5bXM7CiAgRWxmX0ludGVybmFsX1N5bSAqcHN5bTsKICB1bnNpZ25lZCBpbnQgajsKCiAgZXN5
bXMgPSAoKEVsZjY0X0V4dGVybmFsX1N5bSAqKQogICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQg
KikwKSwgZmlsZSwgc2VjdGlvbi0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBzZWN0
aW9uLT5zaF9zaXplLCAoInN5bWJvbHMiKSkpOwogIGlmICghZXN5bXMpCiAgICByZXR1cm4gKCh2
b2lkICopMCk7CgogIHNobmR4ID0gKCh2b2lkICopMCk7CiAgaWYgKHN5bXRhYl9zaG5keF9oZHIg
IT0gKCh2b2lkICopMCkKICAgICAgJiYgKHN5bXRhYl9zaG5keF9oZHItPnNoX2xpbmsKICAgICAg
ICAgID09ICh1bnNpZ25lZCBsb25nKSAoKHNlY3Rpb24gLSBzZWN0aW9uX2hlYWRlcnMpIDwgMHhG
RjAwID8gKHNlY3Rpb24gLSBzZWN0aW9uX2hlYWRlcnMpIDogKHNlY3Rpb24gLSBzZWN0aW9uX2hl
YWRlcnMpICsgKDB4RkZGRiArIDEgLSAweEZGMDApKSkpCiAgICB7CiAgICAgIHNobmR4ID0gKChF
bGZfRXh0ZXJuYWxfU3ltX1NobmR4ICopCiAgICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQg
KikwKSwgZmlsZSwgc3ltdGFiX3NobmR4X2hkci0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfc2l6ZSwgKCJzeW10YWIgc2huZHgiKSkpOwog
ICAgICBpZiAoIXNobmR4KQogICAgICAgIHsKICAgICAgICAgIGZyZWUgKGVzeW1zKTsKICAgICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgogIG51bWJlciA9IHNlY3Rp
b24tPnNoX3NpemUgLyBzZWN0aW9uLT5zaF9lbnRzaXplOwogIGlzeW1zID0gKEVsZl9JbnRlcm5h
bF9TeW0gKikgbWFsbG9jIChudW1iZXIgKiBzaXplb2YgKEVsZl9JbnRlcm5hbF9TeW0pKTsKCiAg
aWYgKGlzeW1zID09ICgodm9pZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVt
b3J5XG4iKSk7CiAgICAgIGlmIChzaG5keCkKICAgICAgICBmcmVlIChzaG5keCk7CiAgICAgIGZy
ZWUgKGVzeW1zKTsKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICBmb3IgKGogPSAw
LCBwc3ltID0gaXN5bXM7CiAgICAgICBqIDwgbnVtYmVyOwogICAgICAgaisrLCBwc3ltKyspCiAg
ICB7CiAgICAgIHBzeW0tPnN0X25hbWUgPSBieXRlX2dldCAoZXN5bXNbal0uc3RfbmFtZSwgc2l6
ZW9mIChlc3ltc1tqXS5zdF9uYW1lKSk7CiAgICAgIHBzeW0tPnN0X2luZm8gPSBieXRlX2dldCAo
ZXN5bXNbal0uc3RfaW5mbywgc2l6ZW9mIChlc3ltc1tqXS5zdF9pbmZvKSk7CiAgICAgIHBzeW0t
PnN0X290aGVyID0gYnl0ZV9nZXQgKGVzeW1zW2pdLnN0X290aGVyLCBzaXplb2YgKGVzeW1zW2pd
LnN0X290aGVyKSk7CiAgICAgIHBzeW0tPnN0X3NobmR4ID0gYnl0ZV9nZXQgKGVzeW1zW2pdLnN0
X3NobmR4LCBzaXplb2YgKGVzeW1zW2pdLnN0X3NobmR4KSk7CiAgICAgIGlmIChwc3ltLT5zdF9z
aG5keCA9PSAweEZGRkYgJiYgc2huZHggIT0gKCh2b2lkICopMCkpCiAgICAgICAgcHN5bS0+c3Rf
c2huZHgKICAgICAgICAgID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopICZzaG5keFtqXSwg
c2l6ZW9mIChzaG5keFtqXSkpOwogICAgICBwc3ltLT5zdF92YWx1ZSA9IGJ5dGVfZ2V0IChlc3lt
c1tqXS5zdF92YWx1ZSwgLTgpOwogICAgICBwc3ltLT5zdF9zaXplID0gYnl0ZV9nZXQgKGVzeW1z
W2pdLnN0X3NpemUsIC04KTsKICAgIH0KCiAgaWYgKHNobmR4KQogICAgZnJlZSAoc2huZHgpOwog
IGZyZWUgKGVzeW1zKTsKCiAgcmV0dXJuIGlzeW1zOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdl
dF9lbGZfc2VjdGlvbl9mbGFncyAoc2hfZmxhZ3MpCiAgICAgYmZkX3ZtYSBzaF9mbGFnczsKewog
IHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICAqYnVmZiA9IDA7CgogIHdoaWxlIChzaF9mbGFncykK
ICAgIHsKICAgICAgYmZkX3ZtYSBmbGFnOwoKICAgICAgZmxhZyA9IHNoX2ZsYWdzICYgLSBzaF9m
bGFnczsKICAgICAgc2hfZmxhZ3MgJj0gfiBmbGFnOwoKICAgICAgc3dpdGNoIChmbGFnKQogICAg
ICAgIHsKICAgICAgICBjYXNlICgxIDw8IDApOiBzdHJjYXQgKGJ1ZmYsICJXIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgKDEgPDwgMSk6IHN0cmNhdCAoYnVmZiwgIkEiKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSAoMSA8PCAyKTogc3RyY2F0IChidWZmLCAiWCIpOyBicmVhazsKICAgICAgICBjYXNlICgx
IDw8IDQpOiBzdHJjYXQgKGJ1ZmYsICJNIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgNSk6
IHN0cmNhdCAoYnVmZiwgIlMiKTsgYnJlYWs7CiAgICAgICAgY2FzZSAoMSA8PCA2KTogc3RyY2F0
IChidWZmLCAiSSIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8IDcpOiBzdHJjYXQgKGJ1ZmYs
ICJMIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgOCk6IHN0cmNhdCAoYnVmZiwgIk8iKTsg
YnJlYWs7CiAgICAgICAgY2FzZSAoMSA8PCA5KTogc3RyY2F0IChidWZmLCAiRyIpOyBicmVhazsK
ICAgICAgICBjYXNlICgxIDw8IDEwKTogc3RyY2F0IChidWZmLCAiVCIpOyBicmVhazsKCiAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgIGlmIChmbGFnICYgMHgwRkYwMDAwMCkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgIHN0cmNhdCAoYnVmZiwgIm8iKTsKICAgICAgICAgICAgICBzaF9mbGFn
cyAmPSB+IDB4MEZGMDAwMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGZsYWcg
JiAweEYwMDAwMDAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgc3RyY2F0IChidWZmLCAi
cCIpOwogICAgICAgICAgICAgIHNoX2ZsYWdzICY9IH4gMHhGMDAwMDAwMDsKICAgICAgICAgICAg
fQogICAgICAgICAgZWxzZQogICAgICAgICAgICBzdHJjYXQgKGJ1ZmYsICJ4Iik7CiAgICAgICAg
ICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHJldHVybiBidWZmOwp9CgpzdGF0aWMgaW50CnBy
b2Nlc3Nfc2VjdGlvbl9oZWFkZXJzIChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGZfSW50
ZXJuYWxfU2hkciAqc2VjdGlvbjsKICB1bnNpZ25lZCBpbnQgaTsKCiAgc2VjdGlvbl9oZWFkZXJz
ID0gKCh2b2lkICopMCk7CgogIGlmIChlbGZfaGVhZGVyLmVfc2hudW0gPT0gMCkKICAgIHsKICAg
ICAgaWYgKGRvX3NlY3Rpb25zKQogICAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyBzZWN0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CgogICAgICByZXR1cm4gMTsKICAgIH0KCiAgaWYgKGRv
X3NlY3Rpb25zICYmICFkb19oZWFkZXIpCiAgICBwcmludGYgKCgiVGhlcmUgYXJlICVkIHNlY3Rp
b24gaGVhZGVycywgc3RhcnRpbmcgYXQgb2Zmc2V0IDB4JWx4OlxuIiksCiAgICAgICAgICAgIGVs
Zl9oZWFkZXIuZV9zaG51bSwgKHVuc2lnbmVkIGxvbmcpIGVsZl9oZWFkZXIuZV9zaG9mZik7Cgog
IGlmIChpc18zMmJpdF9lbGYpCiAgICB7CiAgICAgIGlmICghIGdldF8zMmJpdF9zZWN0aW9uX2hl
YWRlcnMgKGZpbGUsIGVsZl9oZWFkZXIuZV9zaG51bSkpCiAgICAgICAgcmV0dXJuIDA7CiAgICB9
CiAgZWxzZSBpZiAoISBnZXRfNjRiaXRfc2VjdGlvbl9oZWFkZXJzIChmaWxlLCBlbGZfaGVhZGVy
LmVfc2hudW0pKQogICAgcmV0dXJuIDA7CgoKICBzZWN0aW9uID0gKHNlY3Rpb25faGVhZGVycyAr
ICgoZWxmX2hlYWRlci5lX3Noc3RybmR4KSA8IDB4RkYwMCA/IChlbGZfaGVhZGVyLmVfc2hzdHJu
ZHgpIDogKChlbGZfaGVhZGVyLmVfc2hzdHJuZHgpIDw9IDB4RkZGRiA/IDAgOiAoZWxmX2hlYWRl
ci5lX3Noc3RybmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKTsKCiAgaWYgKHNlY3Rpb24t
PnNoX3NpemUgIT0gMCkKICAgIHsKICAgICAgc3RyaW5nX3RhYmxlID0gKGNoYXIgKikgZ2V0X2Rh
dGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9zaXplLCAoInN0cmluZyB0YWJs
ZSIpKTsKCiAgICAgIHN0cmluZ190YWJsZV9sZW5ndGggPSBzZWN0aW9uLT5zaF9zaXplOwogICAg
fQoKCgogIGR5bmFtaWNfc3ltYm9scyA9ICgodm9pZCAqKTApOwogIGR5bmFtaWNfc3RyaW5ncyA9
ICgodm9pZCAqKTApOwogIGR5bmFtaWNfc3ltaW5mbyA9ICgodm9pZCAqKTApOwogIHN5bXRhYl9z
aG5keF9oZHIgPSAoKHZvaWQgKikwKTsKCiAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25f
aGVhZGVyczsKICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICBpKyssIHNlY3Rp
b24rKykKICAgIHsKICAgICAgY2hhciAqbmFtZSA9ICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSk7CgogICAg
ICBpZiAoc2VjdGlvbi0+c2hfdHlwZSA9PSAxMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoZHlu
YW1pY19zeW1ib2xzICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ZXJyb3IgKCgiRmlsZSBjb250YWlucyBtdWx0aXBsZSBkeW5hbWljIHN5bWJvbCB0YWJsZXNcbiIp
KTsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgIG51bV9k
eW5hbWljX3N5bXMgPSBzZWN0aW9uLT5zaF9zaXplIC8gc2VjdGlvbi0+c2hfZW50c2l6ZTsKICAg
ICAgICAgIGR5bmFtaWNfc3ltYm9scyA9IChpc18zMmJpdF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5
bWJvbHMgKGZpbGUsIHNlY3Rpb24pIDogZ2V0XzY0Yml0X2VsZl9zeW1ib2xzIChmaWxlLCBzZWN0
aW9uKSk7CiAgICAgICAgfQogICAgICBlbHNlIGlmIChzZWN0aW9uLT5zaF90eXBlID09IDMKICAg
ICAgICAgICAgICAgJiYgX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LmR5bnN0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVu
ICgiLmR5bnN0ciIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKCgiLmR5bnN0ciIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKCIuZHluc3RyIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19j
b25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVu
IChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5keW5zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5keW5zdHIiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiLmR5bnN0ciIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikoIi5keW5zdHIiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi5keW5zdHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5keW5zdHIiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHlu
c3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIuZHluc3RyIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5keW5zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5keW5zdHIiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiLmR5bnN0ciIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5k
eW5zdHIiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5keW5zdHIi
KSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHluc3RyIikpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
Kl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHluc3RyIikpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICIuZHluc3RyIikpKSk7IH0pID09
IDApCiAgICAgICAgewogICAgICAgICAgaWYgKGR5bmFtaWNfc3RyaW5ncyAhPSAoKHZvaWQgKikw
KSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGVycm9yICgoIkZpbGUgY29udGFpbnMgbXVs
dGlwbGUgZHluYW1pYyBzdHJpbmcgdGFibGVzXG4iKSk7CiAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICBkeW5hbWljX3N0cmluZ3MgPSAoY2hhciAqKSBnZXRf
ZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlY3Rpb24tPnNoX29mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHluYW1pYyBzdHJp
bmdzIikpOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoc2VjdGlvbi0+c2hfdHlwZSA9PSAxOCkK
ICAgICAgICB7CiAgICAgICAgICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSAoKHZvaWQgKikwKSkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIGVycm9yICgoIkZpbGUgY29udGFpbnMgbXVsdGlw
bGUgc3ltdGFiIHNobmR4IHRhYmxlc1xuIikpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICB9CiAgICAgICAgICBzeW10YWJfc2huZHhfaGRyID0gc2VjdGlvbjsKICAgICAgICB9
CiAgICAgIGVsc2UgaWYgKChkb19kZWJ1Z2dpbmcgfHwgZG9fZGVidWdfaW5mbyB8fCBkb19kZWJ1
Z19hYmJyZXZzCiAgICAgICAgICAgICAgICB8fCBkb19kZWJ1Z19saW5lcyB8fCBkb19kZWJ1Z19w
dWJuYW1lcyB8fCBkb19kZWJ1Z19hcmFuZ2VzCiAgICAgICAgICAgICAgICB8fCBkb19kZWJ1Z19m
cmFtZXMgfHwgZG9fZGVidWdfbWFjaW5mbyB8fCBkb19kZWJ1Z19zdHIKICAgICAgICAgICAgICAg
IHx8IGRvX2RlYnVnX2xvYykKICAgICAgICAgICAgICAgJiYgKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wICg3KSAmJiAoKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBz
dHJsZW4gKG5hbWUpIDwgKChzaXplX3QpICg3KSkpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
Ii5kZWJ1Z18iKSAmJiBzdHJsZW4gKCIuZGVidWdfIikgPCAoKHNpemVfdCkgKDcpKSkpID8gX19l
eHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0
YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnXyIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnXyIpLCAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgiLmRlYnVnXyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z18iKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIi5kZWJ1Z18iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRl
YnVnXyIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z18iKSlb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdf
Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z18iKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIi5kZWJ1Z18iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRl
YnVnXyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5kZWJ1Z18iKSwgX19zMl9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z18iKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5kZWJ1Z18iKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiBzdHJjbXAgKG5hbWUsICIuZGVidWdfIikpKSk7IH0pIDogc3RybmNtcCAobmFtZSwgIi5k
ZWJ1Z18iLCA3KSkpID09IDApCiAgICAgICAgewogICAgICAgICAgbmFtZSArPSA3OwoKICAgICAg
ICAgIGlmIChkb19kZWJ1Z2dpbmcKICAgICAgICAgICAgICB8fCAoZG9fZGVidWdfaW5mbyAmJiAo
X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiaW5mbyIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiaW5mbyIpLCAoISgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJpbmZvIikgPT0gMSkgfHwg
X19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9f
czJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkg
PT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoImluZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImlu
Zm8iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiaW5mbyIpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikoImluZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJpbmZvIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19z
MlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImluZm8i
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImluZm8iKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgiaW5mbyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoImluZm8iKSwg
X19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUp
ID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImluZm8iKSlbMF0pOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImluZm8iKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJpbmZvIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5h
bWUsICJpbmZvIikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19hYmJy
ZXZzICYmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmJyZXYi
KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoImFiYnJl
diIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiYWJicmV2IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFi
YnJldiIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAq
KSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImFiYnJldiIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiYWJicmV2IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
ImFiYnJldiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImFiYnJldiIp
KVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWJicmV2IikpWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19z
MiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFiYnJldiIp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmJyZXYiKSAmJiAoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgoImFiYnJldiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJhYmJyZXYi
KSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJhYmJyZXYiKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikoImFiYnJldiIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiYWJicmV2IikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVz
dWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJhYmJyZXYiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWJi
cmV2IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJhYmJyZXYiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJhYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiYWJicmV2IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChu
YW1lLCAiYWJicmV2IikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19s
aW5lcyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgibGluZSIp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgibGluZSIp
LCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgibGluZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJsaW5lIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3Mx
X2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImxpbmUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoImxpbmUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibGluZSIpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImxpbmUiKSlbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJsaW5lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsx
XSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoImxpbmUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImxpbmUiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibGluZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAo
ImxpbmUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImxpbmUiKSlb
MF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMl0pOyBpZiAoX19z
Ml9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImxpbmUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKG5hbWUsICJsaW5lIikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19k
ZWJ1Z19wdWJuYW1lcyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9w
ICgicHVibmFtZXMiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0
cmxlbiAoInB1Ym5hbWVzIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYm
ICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJwdWJuYW1lcyIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJwdWJuYW1lcyIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNt
cCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJwdWJuYW1lcyIp
LCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1l
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMV9sZW4g
PSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
cHVibmFtZXMiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInB1Ym5hbWVzIikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoInB1Ym5hbWVzIikgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSgicHVibmFtZXMiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoInB1Ym5hbWVzIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJwdWJuYW1lcyIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwdWJuYW1lcyIpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKCJwdWJuYW1lcyIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicHVibmFtZXMi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicHVibmFtZXMiKSA9PSAxKSAmJiAoX19z
Ml9sZW4gPSBzdHJsZW4gKCJwdWJuYW1lcyIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSgicHVibmFtZXMiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInB1Ym5hbWVzIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJwdWJuYW1lcyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInB1Ym5hbWVz
IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
X19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJw
dWJuYW1lcyIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoInB1Ym5hbWVzIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21w
IChuYW1lLCAicHVibmFtZXMiKSkpKTsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgfHwgKGRvX2Rl
YnVnX2FyYW5nZXMgJiYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xl
bjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAo
ImFyYW5nZXMiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxl
biAoImFyYW5nZXMiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImFyYW5nZXMiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiYXJhbmdlcyIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9f
Y29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIiksIChfX3Mx
X2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhcmFuZ2Vz
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhcmFuZ2VzIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoImFyYW5nZXMiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKCJhcmFuZ2VzIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJhcmFuZ2VzIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJhcmFuZ2VzIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJh
bmdlcyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiYXJhbmdlcyIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhcmFuZ2Vz
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhcmFuZ2VzIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoImFyYW5nZXMiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJh
cmFuZ2VzIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJhcmFuZ2Vz
IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikp
WzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJhbmdlcyIpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzBdOyBpZiAoX19zMl9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJhbmdlcyIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChuYW1lLCAiYXJhbmdlcyIpKSkpOyB9KSA9
PSAwKSkKICAgICAgICAgICAgICB8fCAoZG9fZGVidWdfZnJhbWVzICYmIChfX2V4dGVuc2lvbl9f
ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJmcmFtZSIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiZnJhbWUiKSwgKCEoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkg
fHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImZyYW1lIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImZyYW1lIikgPT0gMSkgfHwgX19zMl9sZW4g
Pj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAq
KSAoImZyYW1lIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYm
IChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKCJmcmFtZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZnJhbWUiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZnJhbWUiKSA9PSAxKSA/IChfX2V4dGVuc2lv
bl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCJmcmFtZSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiZnJhbWUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImZyYW1lIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImZyYW1lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19z
MlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImZyYW1l
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJmcmFtZSIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJmcmFtZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoImZyYW1l
IiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJmcmFtZSIpKVswXSk7
IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImZyYW1lIikpWzJdKTsgaWYgKF9fczJf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiZnJhbWUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImZyYW1lIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkg
OiBzdHJjbXAgKG5hbWUsICJmcmFtZSIpKSkpOyB9KSA9PSAwKSkKICAgICAgICAgICAgICB8fCAo
ZG9fZGVidWdfbWFjaW5mbyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9f
czJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFu
dF9wICgibWFjaW5mbyIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0g
c3RybGVuICgibWFjaW5mbyIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgibWFjaW5mbyIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJtYWNpbmZvIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21w
ICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSwg
KF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIm1h
Y2luZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIm1hY2luZm8iKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibWFjaW5mbyIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoIm1hY2luZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIm1hY2luZm8iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIm1hY2luZm8iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJtYWNpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3My
WzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9f
czJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0g
X19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIm1h
Y2luZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIm1hY2luZm8iKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibWFjaW5mbyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxl
biAoIm1hY2luZm8iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIm1h
Y2luZm8iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2lu
Zm8iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSlbMF07IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8i
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICJtYWNpbmZvIikpKSk7
IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19zdHIgJiYgKF9fZXh0ZW5zaW9u
X18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInN0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgic3RyIiksICghKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8
IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJzdHIiKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgic3RyIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkp
ID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoInN0
ciIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICgic3RyIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJzdHIiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgic3RyIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgic3RyIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJz
dHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpf
X3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgic3RyIik7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoInN0ciIpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgic3RyIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInN0ciIpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAoInN0ciIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSgic3RyIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJzdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0
ciIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJzdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsxXSk7IGlmIChfX3MyX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsyXSk7IGlmIChfX3MyX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJzdHIiKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICJzdHIiKSkpKTsgfSkgPT0gMCkpCiAgICAgICAgICAg
ICAgfHwgKGRvX2RlYnVnX2xvYyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4s
IF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25z
dGFudF9wICgibG9jIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBz
dHJsZW4gKCJsb2MiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImxvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCJsb2MiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopICgibG9jIiksIChfX3MxX2xlbiA8IF9fczJf
bGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9f
czFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJsb2MiKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoImxvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJsb2Mi
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJsb2MiKSlbMF0pOyBpZiAo
X19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvYyIpKVsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgibG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsb2MiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgibG9jIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJsb2MiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibG9jIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgi
bG9jIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgo
c2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJsb2MiKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvYyIpKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczJfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImxvYyIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgibG9jIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImxvYyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobmFt
ZSwgImxvYyIpKSkpOyB9KSA9PSAwKSkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHJlcXVl
c3RfZHVtcCAoaSwgKDEgPDwgMikpOwogICAgICAgIH0KCiAgICAgIGVsc2UgaWYgKChkb19kZWJ1
Z2dpbmcgfHwgZG9fZGVidWdfaW5mbykKICAgICAgICAgICAgICAgJiYgKF9fZXh0ZW5zaW9uX18g
KF9fYnVpbHRpbl9jb25zdGFudF9wICgxNykgJiYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgc3RybGVuIChuYW1lKSA8ICgoc2l6ZV90KSAoMTcpKSkgfHwgKF9fYnVpbHRpbl9jb25z
dGFudF9wICgiLmdudS5saW5rb25jZS53aS4iKSAmJiBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLndp
LiIpIDwgKChzaXplX3QpICgxNykpKSkgPyBfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgX19idWlsdGluX2Nv
bnN0YW50X3AgKCIuZ251LmxpbmtvbmNlLndpLiIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFt
ZSksIF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS53aS4iKSwgKCEoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5n
bnUubGlua29uY2Uud2kuIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5nbnUubGlu
a29uY2Uud2kuIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIiksIChf
X3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZ251
LmxpbmtvbmNlLndpLiIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25j
ZS53aS4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25jZS53aS4i
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIuZ251LmxpbmtvbmNlLndp
LiIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5r
b25jZS53aS4iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5n
bnUubGlua29uY2Uud2kuIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVu
c2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIik7IHJlZ2lzdGVy
IGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCIuZ251LmxpbmtvbmNlLndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIuZ251LmxpbmtvbmNlLndpLiIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5n
bnUubGlua29uY2Uud2kuIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCIuZ251LmxpbmtvbmNlLndpLiIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9
IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIikpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5s
aW5rb25jZS53aS4iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKG5hbWUsICIuZ251LmxpbmtvbmNlLndpLiIpKSkpOyB9KSA6IHN0cm5jbXAgKG5hbWUs
ICIuZ251LmxpbmtvbmNlLndpLiIsIDE3KSkpID09IDApCiAgICAgICAgcmVxdWVzdF9kdW1wIChp
LCAoMSA8PCAyKSk7CiAgICAgIGVsc2UgaWYgKGRvX2RlYnVnX2ZyYW1lcyAmJiBfX2V4dGVuc2lv
bl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCIuZWhfZnJhbWUiKSAmJiAoX19zMV9sZW4g
PSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIi5laF9mcmFtZSIpLCAoISgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5laF9mcmFtZSIp
ID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAobmFt
ZSksIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1l
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9s
ZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFtZSIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoIi5laF9mcmFtZSIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5l
aF9mcmFtZSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmVo
X2ZyYW1lIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhf
ZnJhbWUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJh
bWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5laF9mcmFtZSIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZWhfZnJh
bWUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5laF9mcmFtZSIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCIuZWhfZnJhbWUiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJs
ZW4gKCIuZWhfZnJhbWUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKiko
Ii5laF9mcmFtZSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
LmVoX2ZyYW1lIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
ZWhfZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhf
ZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29u
c3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmVoX2ZyYW1lIikpWzBd
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJh
bWUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIuZWhfZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmVoX2ZyYW1lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChu
YW1lLCAiLmVoX2ZyYW1lIikpKSk7IH0pID09IDApCiAgICAgICAgcmVxdWVzdF9kdW1wIChpLCAo
MSA8PCAyKSk7CiAgICB9CgogIGlmICghIGRvX3NlY3Rpb25zKQogICAgcmV0dXJuIDE7CgogIGlm
IChlbGZfaGVhZGVyLmVfc2hudW0gPiAxKQogICAgcHJpbnRmICgoIlxuU2VjdGlvbiBIZWFkZXJz
OlxuIikpOwogIGVsc2UKICAgIHByaW50ZiAoKCJcblNlY3Rpb24gSGVhZGVyOlxuIikpOwoKICBp
ZiAoaXNfMzJiaXRfZWxmKQogICAgcHJpbnRmCiAgICAgICgoIiAgW05yXSBOYW1lICAgICAgICAg
ICAgICBUeXBlICAgICAgICAgICAgQWRkciAgICAgT2ZmICAgIFNpemUgICBFUyBGbGcgTGsgSW5m
IEFsXG4iKSk7CiAgZWxzZSBpZiAoZG9fd2lkZSkKICAgIHByaW50ZgogICAgICAoKCIgIFtOcl0g
TmFtZSAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgIEFkZHJlc3MgICAgICAgICAgT2ZmICAg
IFNpemUgICBFUyBGbGcgTGsgSW5mIEFsXG4iKSk7CiAgZWxzZQogICAgewogICAgICBwcmludGYg
KCgiICBbTnJdIE5hbWUgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgQWRkcmVzcyAgICAg
ICAgICAgT2Zmc2V0XG4iKSk7CiAgICAgIHByaW50ZiAoKCIgICAgICAgU2l6ZSAgICAgICAgICAg
ICAgRW50U2l6ZSAgICAgICAgICBGbGFncyAgTGluayAgSW5mbyAgQWxpZ25cbiIpKTsKICAgIH0K
CiAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25faGVhZGVyczsKICAgICAgIGkgPCBlbGZf
aGVhZGVyLmVfc2hudW07CiAgICAgICBpKyssIHNlY3Rpb24rKykKICAgIHsKICAgICAgcHJpbnRm
ICgiICBbJTJ1XSAlLTE3LjE3cyAlLTE1LjE1cyAiLAogICAgICAgICAgICAgICgoaSkgPCAweEZG
MDAgPyAoaSkgOiAoaSkgKyAoMHhGRkZGICsgMSAtIDB4RkYwMCkpLAogICAgICAgICAgICAgICgo
c2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
Y3Rpb24pLT5zaF9uYW1lKSksCiAgICAgICAgICAgICAgZ2V0X3NlY3Rpb25fdHlwZV9uYW1lIChz
ZWN0aW9uLT5zaF90eXBlKSk7CgogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHsKICAg
ICAgICAgIHByaW50X3ZtYSAoc2VjdGlvbi0+c2hfYWRkciwgTE9OR19IRVgpOwoKICAgICAgICAg
IHByaW50ZiAoICIgJTYuNmx4ICU2LjZseCAlMi4ybHgiLAogICAgICAgICAgICAgICAgICAgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX29mZnNldCwKICAgICAgICAgICAgICAgICAgICh1bnNp
Z25lZCBsb25nKSBzZWN0aW9uLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpIHNlY3Rpb24tPnNoX2VudHNpemUpOwoKICAgICAgICAgIHByaW50ZiAoIiAlM3MgIiwg
Z2V0X2VsZl9zZWN0aW9uX2ZsYWdzIChzZWN0aW9uLT5zaF9mbGFncykpOwoKICAgICAgICAgIHBy
aW50ZiAoIiUybGQgJTNseCAlMmxkXG4iLAogICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u
Zykgc2VjdGlvbi0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHNl
Y3Rpb24tPnNoX2luZm8sCiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9u
LT5zaF9hZGRyYWxpZ24pOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoZG9fd2lkZSkKICAgICAg
ICB7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX2FkZHIsIExPTkdfSEVYKTsKCiAg
ICAgICAgICBpZiAoKGxvbmcpIHNlY3Rpb24tPnNoX29mZnNldCA9PSBzZWN0aW9uLT5zaF9vZmZz
ZXQpCiAgICAgICAgICAgIHByaW50ZiAoIiAlNi42bHgiLCAodW5zaWduZWQgbG9uZykgc2VjdGlv
bi0+c2hfb2Zmc2V0KTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAg
IHB1dGNoYXIgKCcgJyk7CiAgICAgICAgICAgICAgcHJpbnRfdm1hIChzZWN0aW9uLT5zaF9vZmZz
ZXQsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
Zykgc2VjdGlvbi0+c2hfc2l6ZSA9PSBzZWN0aW9uLT5zaF9zaXplKQogICAgICAgICAgICBwcmlu
dGYgKCIgJTYuNmx4IiwgKHVuc2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX3NpemUpOwogICAgICAg
ICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAg
ICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX3NpemUsIExPTkdfSEVYKTsKICAgICAgICAg
ICAgfQoKICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfZW50c2l6ZSA9
PSBzZWN0aW9uLT5zaF9lbnRzaXplKQogICAgICAgICAgICBwcmludGYgKCIgJTIuMmx4IiwgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2VudHNpemUpOwogICAgICAgICAgZWxzZQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgICBwcmludF92
bWEgKHNlY3Rpb24tPnNoX2VudHNpemUsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQoKICAgICAg
ICAgIHByaW50ZiAoIiAlM3MgIiwgZ2V0X2VsZl9zZWN0aW9uX2ZsYWdzIChzZWN0aW9uLT5zaF9m
bGFncykpOwoKICAgICAgICAgIHByaW50ZiAoIiUybGQgJTNseCAiLAogICAgICAgICAgICAgICAg
ICAodW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2luZm8pOwoKICAgICAgICAgIGlmICgodW5zaWduZWQg
bG9uZykgc2VjdGlvbi0+c2hfYWRkcmFsaWduID09IHNlY3Rpb24tPnNoX2FkZHJhbGlnbikKICAg
ICAgICAgICAgcHJpbnRmICgiJTJsZFxuIiwgKHVuc2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2Fk
ZHJhbGlnbik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmlu
dF92bWEgKHNlY3Rpb24tPnNoX2FkZHJhbGlnbiwgREVDKTsKICAgICAgICAgICAgICBwdXRjaGFy
ICgnXG4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAg
ICAgICAgIHB1dGNoYXIgKCcgJyk7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX2Fk
ZHIsIExPTkdfSEVYKTsKICAgICAgICAgIGlmICgobG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0ID09
IHNlY3Rpb24tPnNoX29mZnNldCkKICAgICAgICAgICAgcHJpbnRmICgiICAlOC44bHgiLCAodW5z
aWduZWQgbG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0KTsKICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIHByaW50ZiAoIiAgIik7CiAgICAgICAgICAgICAgcHJpbnRfdm1h
IChzZWN0aW9uLT5zaF9vZmZzZXQsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQogICAgICAgICAg
cHJpbnRmICgiXG4gICAgICAgIik7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX3Np
emUsIExPTkdfSEVYKTsKICAgICAgICAgIHByaW50ZiAoIiAgIik7CiAgICAgICAgICBwcmludF92
bWEgKHNlY3Rpb24tPnNoX2VudHNpemUsIExPTkdfSEVYKTsKCiAgICAgICAgICBwcmludGYgKCIg
JTNzICIsIGdldF9lbGZfc2VjdGlvbl9mbGFncyAoc2VjdGlvbi0+c2hfZmxhZ3MpKTsKCiAgICAg
ICAgICBwcmludGYgKCIgICAgICUybGQgICAlM2x4ICAgICAlbGRcbiIsCiAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9uLT5zaF9saW5rLAogICAgICAgICAgICAgICAgICAo
dW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfaW5mbywKICAgICAgICAgICAgICAgICAgKHVuc2ln
bmVkIGxvbmcpIHNlY3Rpb24tPnNoX2FkZHJhbGlnbik7CiAgICAgICAgfQogICAgfQoKICBwcmlu
dGYgKCgiS2V5IHRvIEZsYWdzOlxuICBXICh3cml0ZSksIEEgKGFsbG9jKSwgWCAoZXhlY3V0ZSks
IE0gKG1lcmdlKSwgUyAoc3RyaW5ncylcbiAgSSAoaW5mbyksIEwgKGxpbmsgb3JkZXIpLCBHIChn
cm91cCksIHggKHVua25vd24pXG4gIE8gKGV4dHJhIE9TIHByb2Nlc3NpbmcgcmVxdWlyZWQpIG8g
KE9TIHNwZWNpZmljKSwgcCAocHJvY2Vzc29yIHNwZWNpZmljKVxuIikpOwoKCgoKICByZXR1cm4g
MTsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19yZWxvY3MgKGZpbGUpCiAgICAgRklMRSAqZmlsZTsK
ewogIHVuc2lnbmVkIGxvbmcgcmVsX3NpemU7CiAgdW5zaWduZWQgbG9uZyByZWxfb2Zmc2V0OwoK
CiAgaWYgKCFkb19yZWxvYykKICAgIHJldHVybiAxOwoKICBpZiAoZG9fdXNpbmdfZHluYW1pYykK
ICAgIHsKICAgICAgaW50IGlzX3JlbGEgPSAwOwoKICAgICAgcmVsX3NpemUgPSAwOwogICAgICBy
ZWxfb2Zmc2V0ID0gMDsKCiAgICAgIGlmIChkeW5hbWljX2luZm9bMTddKQogICAgICAgIHsKICAg
ICAgICAgIHJlbF9vZmZzZXQgPSBkeW5hbWljX2luZm9bMTddOwogICAgICAgICAgcmVsX3NpemUg
PSBkeW5hbWljX2luZm9bMThdOwogICAgICAgICAgaXNfcmVsYSA9IDA7CiAgICAgICAgfQogICAg
ICBlbHNlIGlmIChkeW5hbWljX2luZm9bN10pCiAgICAgICAgewogICAgICAgICAgcmVsX29mZnNl
dCA9IGR5bmFtaWNfaW5mb1s3XTsKICAgICAgICAgIHJlbF9zaXplID0gZHluYW1pY19pbmZvWzhd
OwogICAgICAgICAgaXNfcmVsYSA9IDE7CiAgICAgICAgfQogICAgICBlbHNlIGlmIChkeW5hbWlj
X2luZm9bMjNdKQogICAgICAgIHsKICAgICAgICAgIHJlbF9vZmZzZXQgPSBkeW5hbWljX2luZm9b
MjNdOwogICAgICAgICAgcmVsX3NpemUgPSBkeW5hbWljX2luZm9bMl07CgogICAgICAgICAgc3dp
dGNoIChkeW5hbWljX2luZm9bMjBdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgMTc6
CiAgICAgICAgICAgICAgaXNfcmVsYSA9IDA7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgNzoKICAgICAgICAgICAgICBpc19yZWxhID0gMTsKICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBpc19yZWxhID0gLTE7CiAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAocmVsX3Np
emUpCiAgICAgICAgewogICAgICAgICAgcHJpbnRmCiAgICAgICAgICAgICgoIlxuUmVsb2NhdGlv
biBzZWN0aW9uIGF0IG9mZnNldCAweCVseCBjb250YWlucyAlbGQgYnl0ZXM6XG4iKSwKICAgICAg
ICAgICAgIHJlbF9vZmZzZXQsIHJlbF9zaXplKTsKCiAgICAgICAgICBkdW1wX3JlbG9jYXRpb25z
IChmaWxlLCByZWxfb2Zmc2V0IC0gbG9hZGFkZHIsIHJlbF9zaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHluYW1pY19zeW1ib2xzLCBudW1fZHluYW1pY19zeW1zLCBkeW5hbWljX3N0
cmluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19yZWxhKTsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBwcmludGYgKCgiXG5UaGVyZSBhcmUgbm8gZHluYW1pYyByZWxvY2F0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBFbGZfSW50
ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICAgdW5zaWduZWQgbG9uZyBpOwogICAgICBpbnQgZm91
bmQgPSAwOwoKICAgICAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25faGVhZGVyczsKICAg
ICAgICAgICBpIDwgZWxmX2hlYWRlci5lX3NobnVtOwogICAgICAgICAgIGkrKywgc2VjdGlvbisr
KQogICAgICAgIHsKICAgICAgICAgIGlmICggc2VjdGlvbi0+c2hfdHlwZSAhPSA0CiAgICAgICAg
ICAgICAgJiYgc2VjdGlvbi0+c2hfdHlwZSAhPSA5KQogICAgICAgICAgICBjb250aW51ZTsKCiAg
ICAgICAgICByZWxfb2Zmc2V0ID0gc2VjdGlvbi0+c2hfb2Zmc2V0OwogICAgICAgICAgcmVsX3Np
emUgPSBzZWN0aW9uLT5zaF9zaXplOwoKICAgICAgICAgIGlmIChyZWxfc2l6ZSkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzdHJzZWM7CiAgICAgICAgICAg
ICAgRWxmX0ludGVybmFsX1N5bSAqc3ltdGFiOwogICAgICAgICAgICAgIGNoYXIgKnN0cnRhYjsK
ICAgICAgICAgICAgICBpbnQgaXNfcmVsYTsKICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5z
eW1zOwoKICAgICAgICAgICAgICBwcmludGYgKCgiXG5SZWxvY2F0aW9uIHNlY3Rpb24gIikpOwoK
ICAgICAgICAgICAgICBpZiAoc3RyaW5nX3RhYmxlID09ICgodm9pZCAqKTApKQogICAgICAgICAg
ICAgICAgcHJpbnRmICgiJWQiLCBzZWN0aW9uLT5zaF9uYW1lKTsKICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBwcmludGYgKCgiJyVzJyIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsK
CiAgICAgICAgICAgICAgcHJpbnRmICgoIiBhdCBvZmZzZXQgMHglbHggY29udGFpbnMgJWx1IGVu
dHJpZXM6XG4iKSwKICAgICAgICAgICAgICAgICByZWxfb2Zmc2V0LCAodW5zaWduZWQgbG9uZykg
KHJlbF9zaXplIC8gc2VjdGlvbi0+c2hfZW50c2l6ZSkpOwoKICAgICAgICAgICAgICBzeW10YWIg
PSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICBzdHJ0YWIgPSAoKHZvaWQgKikwKTsKICAgICAg
ICAgICAgICBuc3ltcyA9IDA7CiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24tPnNoX2xpbmspCiAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW1z
ZWM7CgogICAgICAgICAgICAgICAgICBzeW1zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0
aW9uLT5zaF9saW5rKSA8IDB4RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAx
IC0gMHhGRjAwKSkpKTsKICAgICAgICAgICAgICAgICAgbnN5bXMgPSBzeW1zZWMtPnNoX3NpemUg
LyBzeW1zZWMtPnNoX2VudHNpemU7CiAgICAgICAgICAgICAgICAgIHN5bXRhYiA9IChpc18zMmJp
dF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIHN5bXNlYykgOiBnZXRfNjRiaXRf
ZWxmX3N5bWJvbHMgKGZpbGUsIHN5bXNlYykpOwoKICAgICAgICAgICAgICAgICAgaWYgKHN5bXRh
YiA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAg
ICAgICAgICAgIHN0cnNlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHN5bXNlYy0+c2hfbGluaykg
PCAweEZGMDAgPyAoc3ltc2VjLT5zaF9saW5rKSA6ICgoc3ltc2VjLT5zaF9saW5rKSA8PSAweEZG
RkYgPyAwIDogKHN5bXNlYy0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkpKSk7Cgog
ICAgICAgICAgICAgICAgICBzdHJ0YWIgPSAoY2hhciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCks
IGZpbGUsIHN0cnNlYy0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Ryc2VjLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCJzdHJpbmcgdGFibGUiKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgaXNfcmVsYSA9IHNlY3Rpb24tPnNoX3R5cGUgPT0gNDsKCiAgICAgICAg
ICAgICAgZHVtcF9yZWxvY2F0aW9ucyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltdGFiLCBuc3ltcywgc3RydGFiLCBpc19yZWxh
KTsKCiAgICAgICAgICAgICAgaWYgKHN0cnRhYikKICAgICAgICAgICAgICAgIGZyZWUgKHN0cnRh
Yik7CiAgICAgICAgICAgICAgaWYgKHN5bXRhYikKICAgICAgICAgICAgICAgIGZyZWUgKHN5bXRh
Yik7CgogICAgICAgICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgIGlmICghIGZvdW5kKQogICAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyByZWxvY2F0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CiAgICB9CgogIHJldHVybiAxOwp9CgojIDEgIi4vdW53
aW5kLWlhNjQuaCIgMQojIDMxICIuL3Vud2luZC1pYTY0LmgiCmV4dGVybiBjb25zdCB1bnNpZ25l
ZCBjaGFyICogdW53X2RlY29kZSAoY29uc3QgdW5zaWduZWQgY2hhciAqLCBpbnQsIHZvaWQgKik7
CiMgMzkzOSAicmVhZGVsZi5jIiAyCgoKCgoKc3RydWN0IGFic2FkZHIKICB7CiAgICB1bnNpZ25l
ZCBzaG9ydCBzZWN0aW9uOwogICAgYmZkX3ZtYSBvZmZzZXQ7CiAgfTsKCnN0cnVjdCB1bndfYXV4
X2luZm8KICB7CiAgICBzdHJ1Y3QgdW53X3RhYmxlX2VudHJ5CiAgICAgIHsKICAgICAgICBzdHJ1
Y3QgYWJzYWRkciBzdGFydDsKICAgICAgICBzdHJ1Y3QgYWJzYWRkciBlbmQ7CiAgICAgICAgc3Ry
dWN0IGFic2FkZHIgaW5mbzsKICAgICAgfQogICAgKnRhYmxlOwogICAgdW5zaWduZWQgbG9uZyB0
YWJsZV9sZW47CiAgICB1bnNpZ25lZCBjaGFyICppbmZvOwogICAgdW5zaWduZWQgbG9uZyBpbmZv
X3NpemU7CiAgICBiZmRfdm1hIGluZm9fYWRkcjsKICAgIGJmZF92bWEgc2VnX2Jhc2U7CiAgICBF
bGZfSW50ZXJuYWxfU3ltICpzeW10YWI7CiAgICB1bnNpZ25lZCBsb25nIG5zeW1zOwogICAgY2hh
ciAqc3RydGFiOwogICAgdW5zaWduZWQgbG9uZyBzdHJ0YWJfc2l6ZTsKICB9OwoKc3RhdGljIHZv
aWQgZmluZF9zeW1ib2xfZm9yX2FkZHJlc3MKICAoc3RydWN0IHVud19hdXhfaW5mbyAqLCBzdHJ1
Y3QgYWJzYWRkciwgY29uc3QgY2hhciAqKiwgYmZkX3ZtYSAqKTsKc3RhdGljIHZvaWQgZHVtcF9p
YTY0X3Vud2luZAogIChzdHJ1Y3QgdW53X2F1eF9pbmZvICopOwpzdGF0aWMgaW50IHNsdXJwX2lh
NjRfdW53aW5kX3RhYmxlCiAgKEZJTEUgKiwgc3RydWN0IHVud19hdXhfaW5mbyAqLCBFbGZfSW50
ZXJuYWxfU2hkciAqKTsKCnN0YXRpYyB2b2lkCmZpbmRfc3ltYm9sX2Zvcl9hZGRyZXNzIChhdXgs
IGFkZHIsIHN5bW5hbWUsIG9mZnNldCkKICAgICBzdHJ1Y3QgdW53X2F1eF9pbmZvICphdXg7CiAg
ICAgc3RydWN0IGFic2FkZHIgYWRkcjsKICAgICBjb25zdCBjaGFyICoqc3ltbmFtZTsKICAgICBi
ZmRfdm1hICpvZmZzZXQ7CnsKICBiZmRfdm1hIGRpc3QgPSAoYmZkX3ZtYSkgMHgxMDAwMDA7CiAg
RWxmX0ludGVybmFsX1N5bSAqc3ltLCAqYmVzdCA9ICgodm9pZCAqKTApOwogIHVuc2lnbmVkIGxv
bmcgaTsKCiAgZm9yIChpID0gMCwgc3ltID0gYXV4LT5zeW10YWI7IGkgPCBhdXgtPm5zeW1zOyAr
K2ksICsrc3ltKQogICAgewogICAgICBpZiAoKChzeW0tPnN0X2luZm8pICYgMHhGKSA9PSAyCiAg
ICAgICAgICAmJiBzeW0tPnN0X25hbWUgIT0gMAogICAgICAgICAgJiYgKGFkZHIuc2VjdGlvbiA9
PSAwIHx8IGFkZHIuc2VjdGlvbiA9PSBzeW0tPnN0X3NobmR4KQogICAgICAgICAgJiYgYWRkci5v
ZmZzZXQgPj0gc3ltLT5zdF92YWx1ZQogICAgICAgICAgJiYgYWRkci5vZmZzZXQgLSBzeW0tPnN0
X3ZhbHVlIDwgZGlzdCkKICAgICAgICB7CiAgICAgICAgICBiZXN0ID0gc3ltOwogICAgICAgICAg
ZGlzdCA9IGFkZHIub2Zmc2V0IC0gc3ltLT5zdF92YWx1ZTsKICAgICAgICAgIGlmICghZGlzdCkK
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogIGlmIChiZXN0KQogICAgewogICAg
ICAqc3ltbmFtZSA9IChiZXN0LT5zdF9uYW1lID49IGF1eC0+c3RydGFiX3NpemUKICAgICAgICAg
ICAgICAgICAgPyAiPGNvcnJ1cHQ+IiA6IGF1eC0+c3RydGFiICsgYmVzdC0+c3RfbmFtZSk7CiAg
ICAgICpvZmZzZXQgPSBkaXN0OwogICAgICByZXR1cm47CiAgICB9CiAgKnN5bW5hbWUgPSAoKHZv
aWQgKikwKTsKICAqb2Zmc2V0ID0gYWRkci5vZmZzZXQ7Cn0KCnN0YXRpYyB2b2lkCmR1bXBfaWE2
NF91bndpbmQgKGF1eCkKICAgICBzdHJ1Y3QgdW53X2F1eF9pbmZvICphdXg7CnsKICBiZmRfdm1h
IGFkZHJfc2l6ZTsKICBzdHJ1Y3QgdW53X3RhYmxlX2VudHJ5ICp0cDsKICBpbnQgaW5fYm9keTsK
CiAgYWRkcl9zaXplID0gaXNfMzJiaXRfZWxmID8gNCA6IDg7CgogIGZvciAodHAgPSBhdXgtPnRh
YmxlOyB0cCA8IGF1eC0+dGFibGUgKyBhdXgtPnRhYmxlX2xlbjsgKyt0cCkKICAgIHsKICAgICAg
YmZkX3ZtYSBzdGFtcDsKICAgICAgYmZkX3ZtYSBvZmZzZXQ7CiAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmRwOwogICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkOwogICAgICBjb25zdCBj
aGFyICpwcm9jbmFtZTsKCiAgICAgIGZpbmRfc3ltYm9sX2Zvcl9hZGRyZXNzIChhdXgsIHRwLT5z
dGFydCwgJnByb2NuYW1lLCAmb2Zmc2V0KTsKCiAgICAgIGZwdXRzICgiXG48Iiwgc3Rkb3V0KTsK
CiAgICAgIGlmIChwcm9jbmFtZSkKICAgICAgICB7CiAgICAgICAgICBmcHV0cyAocHJvY25hbWUs
IHN0ZG91dCk7CgogICAgICAgICAgaWYgKG9mZnNldCkKICAgICAgICAgICAgcHJpbnRmICgiKyVs
eCIsICh1bnNpZ25lZCBsb25nKSBvZmZzZXQpOwogICAgICAgIH0KCiAgICAgIGZwdXRzICgiPjog
WyIsIHN0ZG91dCk7CiAgICAgIHByaW50X3ZtYSAodHAtPnN0YXJ0Lm9mZnNldCwgUFJFRklYX0hF
WCk7CiAgICAgIGZwdXRjICgnLScsIHN0ZG91dCk7CiAgICAgIHByaW50X3ZtYSAodHAtPmVuZC5v
ZmZzZXQsIFBSRUZJWF9IRVgpOwogICAgICBwcmludGYgKCJdLCBpbmZvIGF0ICsweCVseFxuIiwK
ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHRwLT5pbmZvLm9mZnNldCAtIGF1eC0+c2Vn
X2Jhc2UpKTsKCiAgICAgIGhlYWQgPSBhdXgtPmluZm8gKyAodHAtPmluZm8ub2Zmc2V0IC0gYXV4
LT5pbmZvX2FkZHIpOwogICAgICBzdGFtcCA9IGJ5dGVfZ2V0ICgodW5zaWduZWQgY2hhciAqKSBo
ZWFkLCAtOCk7CgogICAgICBwcmludGYgKCIgIHYldSwgZmxhZ3M9MHglbHggKCVzJXMpLCBsZW49
JWx1IGJ5dGVzXG4iLAogICAgICAgICAgICAgICh1bnNpZ25lZCkgKChzdGFtcCkgPj4gNDgpLAog
ICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoKHN0YW1wICYgMHgwMDAwZmZmZjAwMDAwMDAw
TEwpID4+IDMyKSwKICAgICAgICAgICAgICAoKHN0YW1wKSAmIDB4MDAwMDAwMDEwMDAwMDAwMExM
KSA/ICIgZWhhbmRsZXIiIDogIiIsCiAgICAgICAgICAgICAgKChzdGFtcCkgJiAweDAwMDAwMDAy
MDAwMDAwMDBMTCkgPyAiIHVoYW5kbGVyIiA6ICIiLAogICAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKSAoYWRkcl9zaXplICogKChzdGFtcCkgJiAweDAwMDAwMDAwZmZmZmZmZmZMTCkpKTsKCiAg
ICAgIGlmICgoKHN0YW1wKSA+PiA0OCkgIT0gMSkKICAgICAgICB7CiAgICAgICAgICBwcmludGYg
KCJcdFVua25vd24gdmVyc2lvbi5cbiIpOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoK
ICAgICAgaW5fYm9keSA9IDA7CiAgICAgIGZvciAoZHAgPSBoZWFkICsgODsgZHAgPCBoZWFkICsg
OCArIGFkZHJfc2l6ZSAqICgoc3RhbXApICYgMHgwMDAwMDAwMGZmZmZmZmZmTEwpOykKICAgICAg
ICBkcCA9IHVud19kZWNvZGUgKGRwLCBpbl9ib2R5LCAmIGluX2JvZHkpOwogICAgfQp9CgpzdGF0
aWMgaW50CnNsdXJwX2lhNjRfdW53aW5kX3RhYmxlIChmaWxlLCBhdXgsIHNlYykKICAgICBGSUxF
ICpmaWxlOwogICAgIHN0cnVjdCB1bndfYXV4X2luZm8gKmF1eDsKICAgICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjOwp7CiAgdW5zaWduZWQgbG9uZyBzaXplLCBhZGRyX3NpemUsIG5yZWxhcywgaTsK
ICBFbGZfSW50ZXJuYWxfUGhkciAqcHJvZ19oZHJzLCAqc2VnOwogIHN0cnVjdCB1bndfdGFibGVf
ZW50cnkgKnRlcDsKICBFbGZfSW50ZXJuYWxfU2hkciAqcmVsc2VjOwogIEVsZl9JbnRlcm5hbF9S
ZWxhICpyZWxhLCAqcnA7CiAgdW5zaWduZWQgY2hhciAqdGFibGUsICp0cDsKICBFbGZfSW50ZXJu
YWxfU3ltICpzeW07CiAgY29uc3QgY2hhciAqcmVsbmFtZTsKICBpbnQgcmVzdWx0OwoKICBhZGRy
X3NpemUgPSBpc18zMmJpdF9lbGYgPyA0IDogODsKCgoKCiAgaWYgKGVsZl9oZWFkZXIuZV9waG51
bSkKICAgIHsKICAgICAgcHJvZ19oZHJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopCiAgICAgICAg
eG1hbGxvYyAoZWxmX2hlYWRlci5lX3BobnVtICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfUGhkcikp
OwoKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAgICByZXN1bHQgPSBnZXRfMzJiaXRfcHJv
Z3JhbV9oZWFkZXJzIChmaWxlLCBwcm9nX2hkcnMpOwogICAgICBlbHNlCiAgICAgICAgcmVzdWx0
ID0gZ2V0XzY0Yml0X3Byb2dyYW1faGVhZGVycyAoZmlsZSwgcHJvZ19oZHJzKTsKCiAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgIGZyZWUgKHByb2dfaGRycyk7CiAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3IgKHNlZyA9IHByb2dfaGRyczsgc2VnIDwg
cHJvZ19oZHJzICsgZWxmX2hlYWRlci5lX3BobnVtOyArK3NlZykKICAgICAgICB7CiAgICAgICAg
ICBpZiAoc2VnLT5wX3R5cGUgIT0gMSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAg
aWYgKHNlYy0+c2hfYWRkciA+PSBzZWctPnBfdmFkZHIKICAgICAgICAgICAgICAmJiAoc2VjLT5z
aF9hZGRyICsgc2VjLT5zaF9zaXplIDw9IHNlZy0+cF92YWRkciArIHNlZy0+cF9tZW1zeikpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBhdXgtPnNlZ19iYXNlID0gc2VnLT5wX3ZhZGRyOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgZnJlZSAo
cHJvZ19oZHJzKTsKICAgIH0KCgogIHNpemUgPSBzZWMtPnNoX3NpemU7CiAgdGFibGUgPSAoY2hh
ciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlYy0+c2hfb2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUsICgidW53aW5kIHRhYmxlIikpOwogIGlmICghdGFi
bGUpCiAgICByZXR1cm4gMDsKCiAgdGVwID0gYXV4LT50YWJsZSA9IHhtYWxsb2MgKHNpemUgLyAo
MyAqIGFkZHJfc2l6ZSkgKiBzaXplb2YgKGF1eC0+dGFibGVbMF0pKTsKICBmb3IgKHRwID0gdGFi
bGU7IHRwIDwgdGFibGUgKyBzaXplOyB0cCArPSAzICogYWRkcl9zaXplLCArK3RlcCkKICAgIHsK
ICAgICAgdGVwLT5zdGFydC5zZWN0aW9uID0gMDsKICAgICAgdGVwLT5lbmQuc2VjdGlvbiA9IDA7
CiAgICAgIHRlcC0+aW5mby5zZWN0aW9uID0gMDsKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAg
ICAgICB7CiAgICAgICAgICB0ZXAtPnN0YXJ0Lm9mZnNldCA9IGJ5dGVfZ2V0ICgodW5zaWduZWQg
Y2hhciAqKSB0cCArIDAsIDQpOwogICAgICAgICAgdGVwLT5lbmQub2Zmc2V0ID0gYnl0ZV9nZXQg
KCh1bnNpZ25lZCBjaGFyICopIHRwICsgNCwgNCk7CiAgICAgICAgICB0ZXAtPmluZm8ub2Zmc2V0
ID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopIHRwICsgOCwgNCk7CiAgICAgICAgfQogICAg
ICBlbHNlCiAgICAgICAgewogICAgICAgICAgdGVwLT5zdGFydC5vZmZzZXQgPSBieXRlX2dldCAo
KHVuc2lnbmVkIGNoYXIgKikgdHAgKyAwLCAtOCk7CiAgICAgICAgICB0ZXAtPmVuZC5vZmZzZXQg
PSBieXRlX2dldCAoKHVuc2lnbmVkIGNoYXIgKikgdHAgKyA4LCAtOCk7CiAgICAgICAgICB0ZXAt
PmluZm8ub2Zmc2V0ID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopIHRwICsgMTYsIC04KTsK
ICAgICAgICB9CiAgICAgIHRlcC0+c3RhcnQub2Zmc2V0ICs9IGF1eC0+c2VnX2Jhc2U7CiAgICAg
IHRlcC0+ZW5kLm9mZnNldCArPSBhdXgtPnNlZ19iYXNlOwogICAgICB0ZXAtPmluZm8ub2Zmc2V0
ICs9IGF1eC0+c2VnX2Jhc2U7CiAgICB9CiAgZnJlZSAodGFibGUpOwoKCgogIGZvciAocmVsc2Vj
ID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgcmVsc2VjIDwgc2VjdGlvbl9oZWFkZXJzICsgZWxm
X2hlYWRlci5lX3NobnVtOwogICAgICAgKytyZWxzZWMpCiAgICB7CiAgICAgIGlmIChyZWxzZWMt
PnNoX3R5cGUgIT0gNAogICAgICAgICAgfHwgKHNlY3Rpb25faGVhZGVycyArICgocmVsc2VjLT5z
aF9pbmZvKSA8IDB4RkYwMCA/IChyZWxzZWMtPnNoX2luZm8pIDogKChyZWxzZWMtPnNoX2luZm8p
IDw9IDB4RkZGRiA/IDAgOiAocmVsc2VjLT5zaF9pbmZvKSAtICgweEZGRkYgKyAxIC0gMHhGRjAw
KSkpKSAhPSBzZWMpCiAgICAgICAgY29udGludWU7CgogICAgICBpZiAoIXNsdXJwX3JlbGFfcmVs
b2NzIChmaWxlLCByZWxzZWMtPnNoX29mZnNldCwgcmVsc2VjLT5zaF9zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmIHJlbGEsICYgbnJlbGFzKSkKICAgICAgICByZXR1cm4gMDsK
CiAgICAgIGZvciAocnAgPSByZWxhOyBycCA8IHJlbGEgKyBucmVsYXM7ICsrcnApCiAgICAgICAg
ewogICAgICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAgICAgICAgewogICAgICAgICAgICAg
IHJlbG5hbWUgPSBlbGZfaWE2NF9yZWxvY190eXBlICgoKHJwLT5yX2luZm8pICYgMHhmZikpOwog
ICAgICAgICAgICAgIHN5bSA9IGF1eC0+c3ltdGFiICsgKChycC0+cl9pbmZvKSA+PiA4KTsKCiAg
ICAgICAgICAgICAgaWYgKCgoc3ltLT5zdF9pbmZvKSAmIDB4RikgIT0gMykKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHN5bWJv
bCB0eXBlICV1XG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgKChzeW0tPnN0X2luZm8pICYg
MHhGKSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICByZWxu
YW1lID0gZWxmX2lhNjRfcmVsb2NfdHlwZSAoKChycC0+cl9pbmZvKSAmIDB4ZmZmZmZmZmYpKTsK
ICAgICAgICAgICAgICBzeW0gPSBhdXgtPnN5bXRhYiArICgocnAtPnJfaW5mbykgPj4gMzIpOwoK
ICAgICAgICAgICAgICBpZiAoKChzeW0tPnN0X2luZm8pICYgMHhGKSAhPSAzKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICB3YXJuICgoIlNraXBwaW5nIHVuZXhwZWN0ZWQgc3lt
Ym9sIHR5cGUgJXVcbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAoKHN5bS0+c3RfaW5mbykg
JiAweEYpKTsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgxMykgJiYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCAocmVsbmFtZSkgJiYgc3RybGVu
IChyZWxuYW1lKSA8ICgoc2l6ZV90KSAoMTMpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
Ul9JQTY0X1NFR1JFTCIpICYmIHN0cmxlbiAoIlJfSUE2NF9TRUdSRUwiKSA8ICgoc2l6ZV90KSAo
MTMpKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHJlbG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiUl9J
QTY0X1NFR1JFTCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAocmVsbmFtZSksIF9fczJfbGVuID0g
c3RybGVuICgiUl9JQTY0X1NFR1JFTCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChyZWxu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShyZWxuYW1lKSA9PSAxKSB8fCBfX3Mx
X2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiUl9JQTY0X1NFR1JFTCIp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJSX0lBNjRfU0VHUkVMIikgPT0gMSkgfHwg
X19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChyZWxuYW1lKSwgKF9f
Y29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChyZWxuYW1l
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocmVsbmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikocmVsbmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChyZWxuYW1l
KSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfSUE2NF9TRUdSRUwi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfSUE2NF9TRUdSRUwiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiUl9JQTY0X1NFR1JFTCIpID09IDEpID8gKF9fZXh0ZW5zaW9u
X18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikoIlJfSUE2NF9TRUdSRUwiKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbMV0pOyBpZiAoX19z
MV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX0lBNjRfU0VHUkVMIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJSX0lBNjRfU0VHUkVMIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChyZWxuYW1lKSlbMF0gLSBfX3MyWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzNd
IC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
IlJfSUE2NF9TRUdSRUwiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfSUE2NF9TRUdS
RUwiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiUl9JQTY0X1NFR1JFTCIpID09IDEp
ICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIlJfSUE2NF9TRUdSRUwiKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocmVsbmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKHJlbG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHJlbG5hbWUpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIlJfSUE2NF9TRUdSRUwiKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwi
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9T
RUdSRUwiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX0lB
NjRfU0VHUkVMIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9T
RUdSRUwiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIlJfSUE2NF9TRUdSRUwiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJSX0lBNjRfU0VHUkVMIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHJlbG5hbWUsICJSX0lBNjRfU0VHUkVMIikpKSk7IH0pIDog
c3RybmNtcCAocmVsbmFtZSwgIlJfSUE2NF9TRUdSRUwiLCAxMykpKSAhPSAwKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHJlbG9jYXRpb24g
dHlwZSAlc1xuIiksIHJlbG5hbWUpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICB9CgogICAgICAgICAgaSA9IHJwLT5yX29mZnNldCAvICgzICogYWRkcl9zaXplKTsKCiAgICAg
ICAgICBzd2l0Y2ggKHJwLT5yX29mZnNldC9hZGRyX3NpemUgJSAzKQogICAgICAgICAgICB7CiAg
ICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBhdXgtPnRhYmxlW2ldLnN0YXJ0LnNlY3Rp
b24gPSBzeW0tPnN0X3NobmR4OwogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uc3RhcnQub2Zm
c2V0ICs9IHJwLT5yX2FkZGVuZDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2Fz
ZSAxOgogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uZW5kLnNlY3Rpb24gPSBzeW0tPnN0X3No
bmR4OwogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uZW5kLm9mZnNldCArPSBycC0+cl9hZGRl
bmQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAg
ICBhdXgtPnRhYmxlW2ldLmluZm8uc2VjdGlvbiA9IHN5bS0+c3Rfc2huZHg7CiAgICAgICAgICAg
ICAgYXV4LT50YWJsZVtpXS5pbmZvLm9mZnNldCArPSBycC0+cl9hZGRlbmQ7CiAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICBmcmVlIChyZWxhKTsKICAgIH0KCiAgYXV4LT50YWJs
ZV9sZW4gPSBzaXplIC8gKDMgKiBhZGRyX3NpemUpOwogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50
CnByb2Nlc3NfdW53aW5kIChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjLCAqdW53c2VjID0gKCh2b2lkICopMCksICpzdHJzZWM7CiAgdW5zaWduZWQgbG9u
ZyBpLCBhZGRyX3NpemUsIHVud2NvdW50ID0gMCwgdW53c3RhcnQgPSAwOwogIHN0cnVjdCB1bndf
YXV4X2luZm8gYXV4OwoKICBpZiAoIWRvX3Vud2luZCkKICAgIHJldHVybiAxOwoKICBpZiAoZWxm
X2hlYWRlci5lX21hY2hpbmUgIT0gNTApCiAgICB7CiAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFy
ZSBubyB1bndpbmQgc2VjdGlvbnMgaW4gdGhpcyBmaWxlLlxuIikpOwogICAgICByZXR1cm4gMTsK
ICAgIH0KCiAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YgKGF1
eCkpICYmIChzaXplb2YgKGF1eCkpIDw9IDE2ID8gKChzaXplb2YgKGF1eCkpID09IDEgPyAoeyB2
b2lkICpfX3MgPSAoJiBhdXgpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7
IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJiBhdXgpOyB1bmlvbiB7IHVuc2lnbmVkIGludCBf
X3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191YzsgfSAqX191
ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1bnNpZ25l
ZCBpbnQpIChzaXplb2YgKGF1eCkpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVu
c2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNh
c2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgw
MTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9f
YzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBj
YXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAo
MCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmIGF1eCk7IF9fYnVpbHRpbl9tZW1zZXQgKF9f
cywgJ1wwJywgc2l6ZW9mIChhdXgpKTsgX19zOyB9KSA6IG1lbXNldCAoJiBhdXgsIDAsIHNpemVv
ZiAoYXV4KSkpKSk7CgogIGFkZHJfc2l6ZSA9IGlzXzMyYml0X2VsZiA/IDQgOiA4OwoKICBmb3Ig
KGkgPSAwLCBzZWMgPSBzZWN0aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07ICsr
aSwgKytzZWMpCiAgICB7CiAgICAgIGlmIChzZWMtPnNoX3R5cGUgPT0gMikKICAgICAgICB7CiAg
ICAgICAgICBhdXgubnN5bXMgPSBzZWMtPnNoX3NpemUgLyBzZWMtPnNoX2VudHNpemU7CiAgICAg
ICAgICBhdXguc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJpdF9lbGZfc3ltYm9scyAo
ZmlsZSwgc2VjKSA6IGdldF82NGJpdF9lbGZfc3ltYm9scyAoZmlsZSwgc2VjKSk7CgogICAgICAg
ICAgc3Ryc2VjID0gKHNlY3Rpb25faGVhZGVycyArICgoc2VjLT5zaF9saW5rKSA8IDB4RkYwMCA/
IChzZWMtPnNoX2xpbmspIDogKChzZWMtPnNoX2xpbmspIDw9IDB4RkZGRiA/IDAgOiAoc2VjLT5z
aF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKTsKICAgICAgICAgIGF1eC5zdHJ0YWJf
c2l6ZSA9IHN0cnNlYy0+c2hfc2l6ZTsKICAgICAgICAgIGF1eC5zdHJ0YWIgPSAoY2hhciAqKSBn
ZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHN0cnNlYy0+c2hfb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXguc3RydGFiX3NpemUsICgic3RyaW5n
IHRhYmxlIikpOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoc2VjLT5zaF90eXBlID09ICgweDcw
MDAwMDAwICsgMSkpCiAgICAgICAgdW53Y291bnQrKzsKICAgIH0KCiAgaWYgKCF1bndjb3VudCkK
ICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyB1bndpbmQgc2VjdGlvbnMgaW4gdGhpcyBmaWxl
LlxuIikpOwoKICB3aGlsZSAodW53Y291bnQtLSA+IDApCiAgICB7CiAgICAgIGNoYXIgKnN1ZmZp
eDsKICAgICAgc2l6ZV90IGxlbiwgbGVuMjsKCiAgICAgIGZvciAoaSA9IHVud3N0YXJ0LCBzZWMg
PSBzZWN0aW9uX2hlYWRlcnMgKyB1bndzdGFydDsKICAgICAgICAgICBpIDwgZWxmX2hlYWRlci5l
X3NobnVtOyArK2ksICsrc2VjKQogICAgICAgIGlmIChzZWMtPnNoX3R5cGUgPT0gKDB4NzAwMDAw
MDAgKyAxKSkKICAgICAgICAgIHsKICAgICAgICAgICAgdW53c2VjID0gc2VjOwogICAgICAgICAg
ICBicmVhazsKICAgICAgICAgIH0KCiAgICAgIHVud3N0YXJ0ID0gaSArIDE7CiAgICAgIGxlbiA9
IHNpemVvZiAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSAtIDE7CgogICAgICBpZiAoKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChsZW4pICYmICgoX19idWlsdGluX2NvbnN0
YW50X3AgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPCAo
KHNpemVfdCkgKGxlbikpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZ251LmxpbmtvbmNl
LmlhNjR1bncuIikgJiYgc3RybGVuICgiLmdudS5saW5rb25jZS5pYTY0dW53LiIpIDwgKChzaXpl
X3QpIChsZW4pKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRpbl9j
b25zdGFudF9wICgiLmdudS5saW5rb25jZS5pYTY0dW53LiIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHVud3NlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS5p
YTY0dW53LiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHVud3NlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBf
X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25j
ZS5pYTY0dW53LiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZ251LmxpbmtvbmNl
LmlhNjR1bncuIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVu
KSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3Nl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVu
ICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
dW53c2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
Ii5nbnUubGlua29uY2UuaWE2NHVudy4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
LmdudS5saW5rb25jZS5pYTY0dW53LiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1
bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3Nl
YyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bncuIikp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bncuIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHVud3NlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFt
ZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVu
d3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3Mx
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlu
a29uY2UuaWE2NHVudy4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25j
ZS5pYTY0dW53LiIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCh1bndz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYykt
PnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgodW53c2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9s
ZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1
bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3Nl
YyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAo
KHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1l
KSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bncuIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4i
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
X19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bncuIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSksICIuZ251LmxpbmtvbmNlLmlh
NjR1bncuIikpKSk7IH0pIDogc3RybmNtcCAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSwgIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iLCBsZW4pKSkgPT0gMCkKCiAgICAgICAgewoKICAgICAgICAgIGxlbjIgPSBz
aXplb2YgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpIC0gMTsKICAgICAgICAgIHN1ZmZpeCA9
ICgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkgKyBsZW47CiAgICAgICAgICBmb3IgKGkgPSAwLCBzZWMgPSBzZWN0
aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgICAgICsraSwg
KytzZWMpCiAgICAgICAgICAgIGlmICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKGxlbjIpICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbjIpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LmdudS5saW5rb25jZS5pYTY0dW53aS4iKSAmJiBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLmlhNjR1
bndpLiIpIDwgKChzaXplX3QpIChsZW4yKSkpKSA/IF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9f
czFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikgJiYgKF9fczFfbGVu
ID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLmlh
NjR1bndpLiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAo
ISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSA9PSAx
KSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkp
LCAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSwgKF9fczFfbGVu
IDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
Ii5nbnUubGlua29uY2UuaWE2NHVud2kuIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikoIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikpWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5p
YTY0dW53aS4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0
ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKTsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmdudS5saW5rb25jZS5pYTY0
dW53aS4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29uY2UuaWE2NHVu
d2kuIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5nbnUubGlua29uY2UuaWE2NHVu
d2kuIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS5pYTY0dW53
aS4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgo
c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9u
YW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKiko
Ii5nbnUubGlua29uY2UuaWE2NHVud2kuIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVsxXSk7IGlmIChfX3My
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251Lmxpbmtv
bmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18g
KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19z
MVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251
LmxpbmtvbmNlLmlhNjR1bndpLiIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlh
NjR1bndpLiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlYyktPnNoX25hbWUpKSwgIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikpKSk7IH0pIDogc3Ry
bmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSwgIi5nbnUubGlua29uY2UuaWE2NHVud2kuIiwgbGVuMikpKSA9PSAwCgog
ICAgICAgICAgICAgICAgJiYgX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc3VmZml4KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4y
KSwgX19zMl9sZW4gPSBzdHJsZW4gKHN1ZmZpeCksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkgKyBsZW4yKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsg
bGVuMikgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoc3VmZml4KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdWZmaXgpID09IDEpIHx8
IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxl
bjIpLCAoX19jb25zdCBjaGFyICopIChzdWZmaXgpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9f
czFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkg
KyBsZW4yKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc3VmZml4KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoc3VmZml4KSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdWZmaXgpID09IDEpID8gKF9fZXh0ZW5zaW9u
X18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKHN1ZmZpeCkpWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpf
X3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsy
XSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkg
KyBsZW4yKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wIChzdWZmaXgpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdWZmaXgpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN1ZmZpeCkgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuIChzdWZmaXgpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgo
KHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hf
bmFtZSkpICsgbGVuMikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4y
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikgPT0gMSkgPyAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoc3VmZml4KSlbMF0pOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsxXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVsy
XSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49
IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMp
LT5zaF9uYW1lKSkgKyBsZW4yKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzBdOyBp
ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgp
KVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19z
MVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZp
eCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMiwgc3Vm
Zml4KSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICB7CgoKICAgICAgICAgIGxlbiA9IHNpemVvZiAoIi5JQV82NC51bndpbmQiKSAt
IDE7CiAgICAgICAgICBsZW4yID0gc2l6ZW9mICgiLklBXzY0LnVud2luZF9pbmZvIikgLSAxOwog
ICAgICAgICAgc3VmZml4ID0gIiI7CiAgICAgICAgICBpZiAoKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChsZW4pICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSkpICYmIHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbikp
KSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuSUFfNjQudW53aW5kIikgJiYgc3RybGVuICgi
LklBXzY0LnVud2luZCIpIDwgKChzaXplX3QpIChsZW4pKSkpID8gX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSkpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLklBXzY0LnVud2luZCIpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgi
LklBXzY0LnVud2luZCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHVud3NlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFt
ZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHVud3NlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSA9PSAx
KSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLklBXzY0
LnVud2luZCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuSUFfNjQudW53aW5kIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHVu
d3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBz
dHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2Vj
KS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2Vj
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
KCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVu
d3NlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCh1bndzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNo
X25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHVud3NlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSwg
X19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5JQV82NC51bndpbmQiKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5JQV82NC51bndpbmQiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiLklBXzY0LnVud2luZCIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5JQV82NC51bndpbmQiKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQi
KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5JQV82NC51bndpbmQiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIik7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJd
IC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNo
X25hbWUpKSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoIi5JQV82NC51bndpbmQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
Ii5JQV82NC51bndpbmQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLklBXzY0LnVu
d2luZCIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5JQV82NC51bndpbmQiKSwgX19z
Ml9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5JQV82NC51bndpbmQiKSlbMF0pOyBpZiAoX19z
Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQi
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5JQV82NC51bndpbmQiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGgg
PyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5k
IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChf
X3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5J
QV82NC51bndpbmQiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSksICIuSUFfNjQudW53aW5kIikpKSk7IH0pIDogc3RybmNtcCAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSwgIi5JQV82NC51bndpbmQiLCBsZW4pKSkgPT0gMCkKCiAgICAgICAgICAgIHN1ZmZpeCA9
ICgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkgKyBsZW47CiAgICAgICAgICBmb3IgKGkgPSAwLCBzZWMgPSBzZWN0
aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgICAgICsraSwg
KytzZWMpCiAgICAgICAgICAgIGlmICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKGxlbjIpICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbjIpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LklBXzY0LnVud2luZF9pbmZvIikgJiYgc3RybGVuICgiLklBXzY0LnVud2luZF9pbmZvIikgPCAo
KHNpemVfdCkgKGxlbjIpKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9f
czJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRpbl9jb25z
dGFudF9wICgiLklBXzY0LnVud2luZF9pbmZvIikgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuSUFfNjQudW53aW5kX2luZm8iKSwgKCEoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoIi5JQV82NC51bndpbmRfaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCIuSUFfNjQudW53aW5kX2luZm8iKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVu
d2luZF9pbmZvIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkp
ID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSksIF9fczFfbGVuIDwgNCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AgKCIuSUFfNjQudW53aW5kX2luZm8iKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoIi5JQV82NC51bndpbmRfaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCIuSUFfNjQudW53aW5kX2luZm8iKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopKCIuSUFfNjQudW53aW5kX2luZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmRfaW5mbyIpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZv
IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVu
d2luZF9pbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kX2luZm8iKTsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wICgiLklBXzY0LnVud2luZF9pbmZvIikgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCIuSUFfNjQudW53aW5kX2luZm8iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiLklBXzY0LnVud2luZF9pbmZvIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVu
ICgiLklBXzY0LnVud2luZF9pbmZvIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0
YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9f
ICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2Vj
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCIuSUFfNjQudW53aW5kX2luZm8iKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmRfaW5mbyIpKVsxXSk7
IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9p
bmZvIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0
LnVud2luZF9pbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82
NC51bndpbmRfaW5mbyIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZvIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZvIikpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndp
bmRfaW5mbyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSwgIi5J
QV82NC51bndpbmRfaW5mbyIpKSkpOyB9KSA6IHN0cm5jbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuSUFfNjQudW53
aW5kX2luZm8iLCBsZW4yKSkpID09IDAKCiAgICAgICAgICAgICAgICAmJiBfX2V4dGVuc2lvbl9f
ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25h
bWUpKSArIGxlbjIpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChzdWZmaXgpICYmIChfX3MxX2xl
biA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpLCBfX3MyX2xlbiA9IHN0cmxlbiAoc3VmZml4KSwg
KCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdWZmaXgpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKHN1ZmZpeCkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMiksIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCks
IChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpICsgbGVuMikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUp
KSArIGxlbjIpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpLCBf
X3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdWZmaXgpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChzdWZmaXgpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN1
ZmZpeCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxl
bjIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoc3Vm
Zml4KSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSAr
IGxlbjIpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHN1ZmZpeCkpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkgKyBsZW4yKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChzdWZmaXgpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25h
bWUpKSArIGxlbjIpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHN1ZmZpeCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikp
WzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpICsgbGVuMikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVszXSAtIF9fczJbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHN1ZmZpeCkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHN1ZmZpeCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3Vm
Zml4KSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKHN1ZmZpeCksIF9fczJfbGVuIDwgNCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkgKyBsZW4yKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
KHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hf
bmFtZSkpICsgbGVuMikpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKShzdWZmaXgpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBz
dHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+
c2hfbmFtZSkpICsgbGVuMikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoc3VmZml4KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSArIGxlbjIpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoc3VmZml4KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoc3VmZml4KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkgKyBsZW4yLCBzdWZmaXgpKSkpOyB9KSA9PSAwKQogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KCiAgICAgIGlmIChpID09IGVsZl9oZWFkZXIuZV9zaG51bSkKICAg
ICAgICB7CiAgICAgICAgICBwcmludGYgKCgiXG5Db3VsZCBub3QgZmluZCB1bndpbmQgaW5mbyBz
ZWN0aW9uIGZvciAiKSk7CgogICAgICAgICAgaWYgKHN0cmluZ190YWJsZSA9PSAoKHZvaWQgKikw
KSkKICAgICAgICAgICAgcHJpbnRmICgiJWQiLCB1bndzZWMtPnNoX25hbWUpOwogICAgICAgICAg
ZWxzZQogICAgICAgICAgICBwcmludGYgKCgiJyVzJyIpLCAoKHVud3NlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKTsKICAg
ICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBhdXguaW5mb19zaXplID0gc2Vj
LT5zaF9zaXplOwogICAgICAgICAgYXV4LmluZm9fYWRkciA9IHNlYy0+c2hfYWRkcjsKICAgICAg
ICAgIGF1eC5pbmZvID0gKGNoYXIgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMt
PnNoX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1eC5p
bmZvX3NpemUsICgidW53aW5kIGluZm8iKSk7CgogICAgICAgICAgcHJpbnRmICgoIlxuVW53aW5k
IHNlY3Rpb24gIikpOwoKICAgICAgICAgIGlmIChzdHJpbmdfdGFibGUgPT0gKCh2b2lkICopMCkp
CiAgICAgICAgICAgIHByaW50ZiAoIiVkIiwgdW53c2VjLT5zaF9uYW1lKTsKICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgcHJpbnRmICgoIiclcyciKSwgKCh1bndzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSk7CgogICAg
ICAgICAgcHJpbnRmICgoIiBhdCBvZmZzZXQgMHglbHggY29udGFpbnMgJWx1IGVudHJpZXM6XG4i
KSwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHVud3NlYy0+c2hfb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHVud3NlYy0+c2hfc2l6ZSAvICgzICog
YWRkcl9zaXplKSkpOwoKICAgICAgICAgICh2b2lkKSBzbHVycF9pYTY0X3Vud2luZF90YWJsZSAo
ZmlsZSwgJiBhdXgsIHVud3NlYyk7CgogICAgICAgICAgaWYgKGF1eC50YWJsZV9sZW4gPiAwKQog
ICAgICAgICAgICBkdW1wX2lhNjRfdW53aW5kICgmIGF1eCk7CgogICAgICAgICAgaWYgKGF1eC50
YWJsZSkKICAgICAgICAgICAgZnJlZSAoKGNoYXIgKikgYXV4LnRhYmxlKTsKICAgICAgICAgIGlm
IChhdXguaW5mbykKICAgICAgICAgICAgZnJlZSAoKGNoYXIgKikgYXV4LmluZm8pOwogICAgICAg
ICAgYXV4LnRhYmxlID0gKCh2b2lkICopMCk7CiAgICAgICAgICBhdXguaW5mbyA9ICgodm9pZCAq
KTApOwogICAgICAgIH0KICAgIH0KCiAgaWYgKGF1eC5zeW10YWIpCiAgICBmcmVlIChhdXguc3lt
dGFiKTsKICBpZiAoYXV4LnN0cnRhYikKICAgIGZyZWUgKChjaGFyICopIGF1eC5zdHJ0YWIpOwoK
ICByZXR1cm4gMTsKfQoKc3RhdGljIHZvaWQKZHluYW1pY19zZWdtZW50X21pcHNfdmFsIChlbnRy
eSkKICAgICBFbGZfSW50ZXJuYWxfRHluICplbnRyeTsKewogIHN3aXRjaCAoZW50cnktPmRfdGFn
KQogICAgewogICAgY2FzZSAweDcwMDAwMDA1OgogICAgICBpZiAoZW50cnktPmRfdW4uZF92YWwg
PT0gMCkKICAgICAgICBwcmludGYgKCJOT05FXG4iKTsKICAgICAgZWxzZQogICAgICAgIHsKICAg
ICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICogb3B0c1tdID0KICAgICAgICAgIHsKICAgICAgICAg
ICAgIlFVSUNLU1RBUlQiLCAiTk9UUE9UIiwgIk5PX0xJQlJBUllfUkVQTEFDRU1FTlQiLAogICAg
ICAgICAgICAiTk9fTU9WRSIsICJTR0lfT05MWSIsICJHVUFSQU5URUVfSU5JVCIsICJERUxUQV9D
X1BMVVNfUExVUyIsCiAgICAgICAgICAgICJHVUFSQU5URUVfU1RBUlRfSU5JVCIsICJQSVhJRSIs
ICJERUZBVUxUX0RFTEFZX0xPQUQiLAogICAgICAgICAgICAiUkVRVUlDS1NUQVJUIiwgIlJFUVVJ
Q0tTVEFSVEVEIiwgIkNPUkQiLCAiTk9fVU5SRVNfVU5ERUYiLAogICAgICAgICAgICAiUkxEX09S
REVSX1NBRkUiCiAgICAgICAgICB9OwogICAgICAgICAgdW5zaWduZWQgaW50IGNudDsKICAgICAg
ICAgIGludCBmaXJzdCA9IDE7CiAgICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IChzaXplb2Yg
KG9wdHMpIC8gc2l6ZW9mICgob3B0cylbMF0pKTsgKytjbnQpCiAgICAgICAgICAgIGlmIChlbnRy
eS0+ZF91bi5kX3ZhbCAmICgxIDw8IGNudCkpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgcHJpbnRmICgiJXMlcyIsIGZpcnN0ID8gIiIgOiAiICIsIG9wdHNbY250XSk7CiAgICAgICAg
ICAgICAgICBmaXJzdCA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgcHV0cyAoIiIpOwog
ICAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDA0OgogICAgICBpZiAoZHlu
YW1pY19zdHJpbmdzICE9ICgodm9pZCAqKTApKQogICAgICAgIHByaW50ZiAoIkludGVyZmFjZSBW
ZXJzaW9uOiAlc1xuIiwKICAgICAgICAgICAgICAgIGR5bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5k
X3VuLmRfdmFsKTsKICAgICAgZWxzZQogICAgICAgIHByaW50ZiAoIiVsZFxuIiwgKGxvbmcpIGVu
dHJ5LT5kX3VuLmRfcHRyKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDAyOgogICAg
ICB7CiAgICAgICAgY2hhciB0aW1lYnVmWzIwXTsKICAgICAgICBzdHJ1Y3QgdG0gKnRtcDsKCiAg
ICAgICAgdGltZV90IHRpbWUgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKICAgICAgICB0bXAgPSBnbXRp
bWUgKCZ0aW1lKTsKICAgICAgICBzcHJpbnRmICh0aW1lYnVmLCAiJTA0dS0lMDJ1LSUwMnVUJTAy
dTolMDJ1OiUwMnUiLAogICAgICAgICAgICAgICAgIHRtcC0+dG1feWVhciArIDE5MDAsIHRtcC0+
dG1fbW9uICsgMSwgdG1wLT50bV9tZGF5LAogICAgICAgICAgICAgICAgIHRtcC0+dG1faG91ciwg
dG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKICAgICAgICBwcmludGYgKCJUaW1lIFN0YW1wOiAl
c1xuIiwgdGltZWJ1Zik7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDAx
OgogICAgY2FzZSAweDcwMDAwMDBhOgogICAgY2FzZSAweDcwMDAwMDBiOgogICAgY2FzZSAweDcw
MDAwMDEwOgogICAgY2FzZSAweDcwMDAwMDExOgogICAgY2FzZSAweDcwMDAwMDEyOgogICAgY2Fz
ZSAweDcwMDAwMDE0OgogICAgY2FzZSAweDcwMDAwMDE4OgogICAgY2FzZSAweDcwMDAwMDFhOgog
ICAgY2FzZSAweDcwMDAwMDFjOgogICAgY2FzZSAweDcwMDAwMDFlOgogICAgY2FzZSAweDcwMDAw
MDIxOgogICAgY2FzZSAweDcwMDAwMDJmOgogICAgICBwcmludGYgKCIlbGRcbiIsIChsb25nKSBl
bnRyeS0+ZF91bi5kX3B0cik7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHByaW50
ZiAoIiUjbHhcbiIsIChsb25nKSBlbnRyeS0+ZF91bi5kX3B0cik7CiAgICB9Cn0KCgpzdGF0aWMg
dm9pZApkeW5hbWljX3NlZ21lbnRfcGFyaXNjX3ZhbCAoZW50cnkpCiAgICAgRWxmX0ludGVybmFs
X0R5biAqZW50cnk7CnsKICBzd2l0Y2ggKGVudHJ5LT5kX3RhZykKICAgIHsKICAgIGNhc2UgKDB4
NjAwMDAwMDAgKyAweDEpOgogICAgICB7CiAgICAgICAgc3RhdGljIHN0cnVjdAogICAgICAgIHsK
ICAgICAgICAgIGxvbmcgaW50IGJpdDsKICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAg
ICB9CiAgICAgICAgZmxhZ3NbXSA9CiAgICAgICAgewogICAgICAgICAgeyAweDAwMDEsICJIUF9E
RUJVR19QUklWQVRFIiB9LAogICAgICAgICAgeyAweDAwMDIsICJIUF9ERUJVR19DQUxMQkFDSyIg
fSwKICAgICAgICAgIHsgMHgwMDA0LCAiSFBfREVCVUdfQ0FMTEJBQ0tfQk9SIiB9LAogICAgICAg
ICAgeyAweDAwMDgsICJIUF9OT19FTlZWQVIiIH0sCiAgICAgICAgICB7IDB4MDAxMCwgIkhQX0JJ
TkRfTk9XIiB9LAogICAgICAgICAgeyAweDAwMjAsICJIUF9CSU5EX05PTkZBVEFMIiB9LAogICAg
ICAgICAgeyAweDAwNDAsICJIUF9CSU5EX1ZFUkJPU0UiIH0sCiAgICAgICAgICB7IDB4MDA4MCwg
IkhQX0JJTkRfUkVTVFJJQ1RFRCIgfSwKICAgICAgICAgIHsgMHgwMTAwLCAiSFBfQklORF9TWU1C
T0xJQyIgfSwKICAgICAgICAgIHsgMHgwMjAwLCAiSFBfUlBBVEhfRklSU1QiIH0sCiAgICAgICAg
ICB7IDB4MDQwMCwgIkhQX0JJTkRfREVQVEhfRklSU1QiIH0KICAgICAgICB9OwogICAgICAgIGlu
dCBmaXJzdCA9IDE7CiAgICAgICAgc2l6ZV90IGNudDsKICAgICAgICBiZmRfdm1hIHZhbCA9IGVu
dHJ5LT5kX3VuLmRfdmFsOwoKICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IHNpemVvZiAoZmxh
Z3MpIC8gc2l6ZW9mIChmbGFnc1swXSk7ICsrY250KQogICAgICAgICAgaWYgKHZhbCAmIGZsYWdz
W2NudF0uYml0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKCEgZmlyc3QpCiAgICAg
ICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIGZwdXRzIChmbGFnc1tjbnRd
LnN0ciwgc3Rkb3V0KTsKICAgICAgICAgICAgICBmaXJzdCA9IDA7CiAgICAgICAgICAgICAgdmFs
IF49IGZsYWdzW2NudF0uYml0OwogICAgICAgICAgICB9CgogICAgICAgIGlmICh2YWwgIT0gMCB8
fCBmaXJzdCkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCEgZmlyc3QpCiAgICAgICAgICAg
ICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgcHJpbnRfdm1hICh2YWwsIEhFWCk7CiAgICAg
ICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgcHJpbnRfdm1h
IChlbnRyeS0+ZF91bi5kX3B0ciwgUFJFRklYX0hFWCk7CiAgICAgIGJyZWFrOwogICAgfQogIHB1
dGNoYXIgKCdcbicpOwp9CgpzdGF0aWMgdm9pZApkeW5hbWljX3NlZ21lbnRfaWE2NF92YWwgKGVu
dHJ5KQogICAgIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5Owp7CiAgc3dpdGNoIChlbnRyeS0+ZF90
YWcpCiAgICB7CiAgICBjYXNlICgweDcwMDAwMDAwICsgMCk6CgogICAgICBwcmludF92bWEgKGVu
dHJ5LT5kX3VuLmRfcHRyLCBQUkVGSVhfSEVYKTsKICAgICAgcHJpbnRmICgiIC0tICIpOwogICAg
ICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfcHRyICsgKDMgKiA4KSwgUFJFRklYX0hFWCk7CiAg
ICAgIHByaW50ZiAoIlxuIik7CiAgICB9Cn0KCnN0YXRpYyBpbnQKZ2V0XzMyYml0X2R5bmFtaWNf
c2VnbWVudCAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAgRWxmMzJfRXh0ZXJuYWxfRHluICpl
ZHluOwogIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5OwogIGJmZF9zaXplX3R5cGUgaTsKCiAgZWR5
biA9IChFbGYzMl9FeHRlcm5hbF9EeW4gKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBk
eW5hbWljX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5
bmFtaWNfc2l6ZSwgKCJkeW5hbWljIHNlZ21lbnQiKSk7CiAgaWYgKCFlZHluKQogICAgcmV0dXJu
IDA7CgoKCgogIGR5bmFtaWNfc2l6ZSA9IDA7CiAgd2hpbGUgKCooRWxmMzJfV29yZCAqKSBlZHlu
W2R5bmFtaWNfc2l6ZSsrXS5kX3RhZyAhPSAwKQogICAgOwoKICBkeW5hbWljX3NlZ21lbnQgPSAo
RWxmX0ludGVybmFsX0R5biAqKQogICAgbWFsbG9jIChkeW5hbWljX3NpemUgKiBzaXplb2YgKEVs
Zl9JbnRlcm5hbF9EeW4pKTsKCiAgaWYgKGR5bmFtaWNfc2VnbWVudCA9PSAoKHZvaWQgKikwKSkK
ICAgIHsKICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICBmcmVlIChlZHlu
KTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIGZvciAoaSA9IDAsIGVudHJ5ID0gZHluYW1pY19z
ZWdtZW50OwogICAgICAgaSA8IGR5bmFtaWNfc2l6ZTsKICAgICAgIGkrKywgZW50cnkrKykKICAg
IHsKICAgICAgZW50cnktPmRfdGFnID0gYnl0ZV9nZXQgKGVkeW5baV0uZF90YWcsIHNpemVvZiAo
ZWR5bltpXS5kX3RhZykpOwogICAgICBlbnRyeS0+ZF91bi5kX3ZhbCA9IGJ5dGVfZ2V0IChlZHlu
W2ldLmRfdW4uZF92YWwsIHNpemVvZiAoZWR5bltpXS5kX3VuLmRfdmFsKSk7CiAgICB9CgogIGZy
ZWUgKGVkeW4pOwoKICByZXR1cm4gMTsKfQoKc3RhdGljIGludApnZXRfNjRiaXRfZHluYW1pY19z
ZWdtZW50IChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGY2NF9FeHRlcm5hbF9EeW4gKmVk
eW47CiAgRWxmX0ludGVybmFsX0R5biAqZW50cnk7CiAgYmZkX3NpemVfdHlwZSBpOwoKICBlZHlu
ID0gKEVsZjY0X0V4dGVybmFsX0R5biAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIGR5
bmFtaWNfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHlu
YW1pY19zaXplLCAoImR5bmFtaWMgc2VnbWVudCIpKTsKICBpZiAoIWVkeW4pCiAgICByZXR1cm4g
MDsKCgoKCiAgZHluYW1pY19zaXplID0gMDsKICB3aGlsZSAoKihiZmRfdm1hICopIGVkeW5bZHlu
YW1pY19zaXplKytdLmRfdGFnICE9IDApCiAgICA7CgogIGR5bmFtaWNfc2VnbWVudCA9IChFbGZf
SW50ZXJuYWxfRHluICopCiAgICBtYWxsb2MgKGR5bmFtaWNfc2l6ZSAqIHNpemVvZiAoRWxmX0lu
dGVybmFsX0R5bikpOwoKICBpZiAoZHluYW1pY19zZWdtZW50ID09ICgodm9pZCAqKTApKQogICAg
ewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgIGZyZWUgKGVkeW4pOwog
ICAgICByZXR1cm4gMDsKICAgIH0KCiAgZm9yIChpID0gMCwgZW50cnkgPSBkeW5hbWljX3NlZ21l
bnQ7CiAgICAgICBpIDwgZHluYW1pY19zaXplOwogICAgICAgaSsrLCBlbnRyeSsrKQogICAgewog
ICAgICBlbnRyeS0+ZF90YWcgPSBieXRlX2dldCAoZWR5bltpXS5kX3RhZywgLTgpOwogICAgICBl
bnRyeS0+ZF91bi5kX3ZhbCA9IGJ5dGVfZ2V0IChlZHluW2ldLmRfdW4uZF92YWwsIC04KTsKICAg
IH0KCiAgZnJlZSAoZWR5bik7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdl
dF9keW5hbWljX2ZsYWdzIChmbGFncykKICAgICBiZmRfdm1hIGZsYWdzOwp7CiAgc3RhdGljIGNo
YXIgYnVmZlsxMjhdOwogIGNoYXIgKnAgPSBidWZmOwoKICAqcCA9ICdcMCc7CiAgd2hpbGUgKGZs
YWdzKQogICAgewogICAgICBiZmRfdm1hIGZsYWc7CgogICAgICBmbGFnID0gZmxhZ3MgJiAtIGZs
YWdzOwogICAgICBmbGFncyAmPSB+IGZsYWc7CgogICAgICBpZiAocCAhPSBidWZmKQogICAgICAg
ICpwKysgPSAnICc7CgogICAgICBzd2l0Y2ggKGZsYWcpCiAgICAgICAgewogICAgICAgIGNhc2Ug
KDEgPDwgMCk6IHN0cmNweSAocCwgIk9SSUdJTiIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8
IDEpOiBzdHJjcHkgKHAsICJTWU1CT0xJQyIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8IDIp
OiBzdHJjcHkgKHAsICJURVhUUkVMIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgMyk6IHN0
cmNweSAocCwgIkJJTkRfTk9XIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgNCk6IHN0cmNw
eSAocCwgIlNUQVRJQ19UTFMiKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDogc3RyY3B5IChwLCAi
dW5rbm93biIpOyBicmVhazsKICAgICAgICB9CgogICAgICBwID0gKF9fZXh0ZW5zaW9uX18gKF9f
YnVpbHRpbl9jb25zdGFudF9wICgnXDAnKSAmJiAoJ1wwJykgPT0gJ1wwJyA/IChjaGFyICopIF9f
cmF3bWVtY2hyIChwLCAnXDAnKSA6IHN0cmNociAocCwgJ1wwJykpKTsKICAgIH0KICByZXR1cm4g
YnVmZjsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19keW5hbWljX3NlZ21lbnQgKGZpbGUpCiAgICAg
RklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5OwogIGJmZF9zaXplX3R5cGUg
aTsKCiAgaWYgKGR5bmFtaWNfc2l6ZSA9PSAwKQogICAgewogICAgICBpZiAoZG9fZHluYW1pYykK
ICAgICAgICBwcmludGYgKCgiXG5UaGVyZSBpcyBubyBkeW5hbWljIHNlZ21lbnQgaW4gdGhpcyBm
aWxlLlxuIikpOwoKICAgICAgcmV0dXJuIDE7CiAgICB9CgogIGlmIChpc18zMmJpdF9lbGYpCiAg
ICB7CiAgICAgIGlmICghIGdldF8zMmJpdF9keW5hbWljX3NlZ21lbnQgKGZpbGUpKQogICAgICAg
IHJldHVybiAwOwogICAgfQogIGVsc2UgaWYgKCEgZ2V0XzY0Yml0X2R5bmFtaWNfc2VnbWVudCAo
ZmlsZSkpCiAgICByZXR1cm4gMDsKCgogIGlmIChkeW5hbWljX3N5bWJvbHMgPT0gKCh2b2lkICop
MCkpCiAgICB7CiAgICAgIGZvciAoaSA9IDAsIGVudHJ5ID0gZHluYW1pY19zZWdtZW50OwogICAg
ICAgICAgIGkgPCBkeW5hbWljX3NpemU7CiAgICAgICAgICAgKytpLCArK2VudHJ5KQogICAgICAg
IHsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyIHNlY3Rpb247CgogICAgICAgICAgaWYgKGVu
dHJ5LT5kX3RhZyAhPSA2KQogICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICBkeW5hbWlj
X2luZm9bNl0gPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCgoKCgogICAgICAgICAgc2VjdGlvbi5zaF9v
ZmZzZXQgPSBlbnRyeS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwoKICAgICAgICAgIGlmIChmc2Vl
ayAoZmlsZSwgMCwgMikpCiAgICAgICAgICAgIGVycm9yICgoIlVuYWJsZSB0byBzZWVrIHRvIGVu
ZCBvZiBmaWxlISIpKTsKCiAgICAgICAgICBzZWN0aW9uLnNoX3NpemUgPSBmdGVsbCAoZmlsZSkg
LSBzZWN0aW9uLnNoX29mZnNldDsKICAgICAgICAgIGlmIChpc18zMmJpdF9lbGYpCiAgICAgICAg
ICAgIHNlY3Rpb24uc2hfZW50c2l6ZSA9IHNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfU3ltKTsKICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgc2VjdGlvbi5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGY2
NF9FeHRlcm5hbF9TeW0pOwoKICAgICAgICAgIG51bV9keW5hbWljX3N5bXMgPSBzZWN0aW9uLnNo
X3NpemUgLyBzZWN0aW9uLnNoX2VudHNpemU7CiAgICAgICAgICBpZiAobnVtX2R5bmFtaWNfc3lt
cyA8IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAoKCJVbmFibGUgdG8gZGV0
ZXJtaW5lIHRoZSBudW1iZXIgb2Ygc3ltYm9scyB0byBsb2FkXG4iKSk7CiAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBkeW5hbWljX3N5bWJvbHMgPSAoaXNf
MzJiaXRfZWxmID8gZ2V0XzMyYml0X2VsZl9zeW1ib2xzIChmaWxlLCAmc2VjdGlvbikgOiBnZXRf
NjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsICZzZWN0aW9uKSk7CiAgICAgICAgfQogICAgfQoKCiAg
aWYgKGR5bmFtaWNfc3RyaW5ncyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZm9yIChpID0g
MCwgZW50cnkgPSBkeW5hbWljX3NlZ21lbnQ7CiAgICAgICAgICAgaSA8IGR5bmFtaWNfc2l6ZTsK
ICAgICAgICAgICArK2ksICsrZW50cnkpCiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQgbG9u
ZyBvZmZzZXQ7CiAgICAgICAgICBsb25nIHN0cl90YWJfbGVuOwoKICAgICAgICAgIGlmIChlbnRy
eS0+ZF90YWcgIT0gNSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgZHluYW1pY19p
bmZvWzVdID0gZW50cnktPmRfdW4uZF92YWw7CgoKCgoKCiAgICAgICAgICBvZmZzZXQgPSBlbnRy
eS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwogICAgICAgICAgaWYgKGZzZWVrIChmaWxlLCAwLCAy
KSkKICAgICAgICAgICAgZXJyb3IgKCgiVW5hYmxlIHRvIHNlZWsgdG8gZW5kIG9mIGZpbGVcbiIp
KTsKICAgICAgICAgIHN0cl90YWJfbGVuID0gZnRlbGwgKGZpbGUpIC0gb2Zmc2V0OwoKICAgICAg
ICAgIGlmIChzdHJfdGFiX2xlbiA8IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJv
cgogICAgICAgICAgICAgICAgKCgiVW5hYmxlIHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRo
ZSBkeW5hbWljIHN0cmluZyB0YWJsZVxuIikpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICB9CgogICAgICAgICAgZHluYW1pY19zdHJpbmdzID0gKGNoYXIgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBvZmZzZXQsIHN0cl90YWJfbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHluYW1pYyBzdHJpbmcgdGFibGUiKSk7
CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgoKICBpZiAoZHluYW1pY19zeW1pbmZv
ID09ICgodm9pZCAqKTApKQogICAgewogICAgICB1bnNpZ25lZCBsb25nIHN5bWluc3ogPSAwOwoK
ICAgICAgZm9yIChpID0gMCwgZW50cnkgPSBkeW5hbWljX3NlZ21lbnQ7CiAgICAgICAgICAgaSA8
IGR5bmFtaWNfc2l6ZTsKICAgICAgICAgICArK2ksICsrZW50cnkpCiAgICAgICAgewogICAgICAg
ICAgaWYgKGVudHJ5LT5kX3RhZyA9PSAweDZmZmZmZGZmKQogICAgICAgICAgICB7CgoKICAgICAg
ICAgICAgICAoKHZvaWQpICgoc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltaW5mbykgPT0gZW50cnkt
PmRfdW4uZF92YWwpID8gMCA6IChfX2Fzc2VydF9mYWlsICgic2l6ZW9mIChFbGZfRXh0ZXJuYWxf
U3ltaW5mbykgPT0gZW50cnktPmRfdW4uZF92YWwiLCAicmVhZGVsZi5jIiwgNDc0OCwgX19QUkVU
VFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGVu
dHJ5LT5kX3RhZyA9PSAweDZmZmZmZGZlKQogICAgICAgICAgICBzeW1pbnN6ID0gZW50cnktPmRf
dW4uZF92YWw7CiAgICAgICAgICBlbHNlIGlmIChlbnRyeS0+ZF90YWcgPT0gMHg2ZmZmZmVmZikK
ICAgICAgICAgICAgZHluYW1pY19zeW1pbmZvX29mZnNldCA9IGVudHJ5LT5kX3VuLmRfdmFsIC0g
bG9hZGFkZHI7CiAgICAgICAgfQoKICAgICAgaWYgKGR5bmFtaWNfc3ltaW5mb19vZmZzZXQgIT0g
MCAmJiBzeW1pbnN6ICE9IDApCiAgICAgICAgewogICAgICAgICAgRWxmX0V4dGVybmFsX1N5bWlu
Zm8gKmV4dHN5bWluZm87CiAgICAgICAgICBFbGZfSW50ZXJuYWxfU3ltaW5mbyAqc3ltaW5mbzsK
CgogICAgICAgICAgZXh0c3ltaW5mbyA9ICgoRWxmX0V4dGVybmFsX1N5bWluZm8gKikKICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBkeW5hbWljX3N5
bWluZm9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltaW5zeiwg
KCJzeW1ib2wgaW5mb3JtYXRpb24iKSkpOwogICAgICAgICAgaWYgKCFleHRzeW1pbmZvKQogICAg
ICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgICBkeW5hbWljX3N5bWluZm8gPSAoRWxmX0ludGVy
bmFsX1N5bWluZm8gKikgbWFsbG9jIChzeW1pbnN6KTsKICAgICAgICAgIGlmIChkeW5hbWljX3N5
bWluZm8gPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAo
KCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
IH0KCiAgICAgICAgICBkeW5hbWljX3N5bWluZm9fbmVudCA9IHN5bWluc3ogLyBzaXplb2YgKEVs
Zl9FeHRlcm5hbF9TeW1pbmZvKTsKICAgICAgICAgIGZvciAoaSA9IDAsIHN5bWluZm8gPSBkeW5h
bWljX3N5bWluZm87IGkgPCBkeW5hbWljX3N5bWluZm9fbmVudDsKICAgICAgICAgICAgICAgKytp
LCArK3N5bWluZm8pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzeW1pbmZvLT5zaV9ib3Vu
ZHRvID0gYnl0ZV9nZXQgKGV4dHN5bWluZm9baV0uc2lfYm91bmR0bywgc2l6ZW9mIChleHRzeW1p
bmZvW2ldLnNpX2JvdW5kdG8pKTsKICAgICAgICAgICAgICBzeW1pbmZvLT5zaV9mbGFncyA9IGJ5
dGVfZ2V0IChleHRzeW1pbmZvW2ldLnNpX2ZsYWdzLCBzaXplb2YgKGV4dHN5bWluZm9baV0uc2lf
ZmxhZ3MpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGZyZWUgKGV4dHN5bWluZm8pOwogICAg
ICAgIH0KICAgIH0KCiAgaWYgKGRvX2R5bmFtaWMgJiYgZHluYW1pY19hZGRyKQogICAgcHJpbnRm
ICgoIlxuRHluYW1pYyBzZWdtZW50IGF0IG9mZnNldCAweCVseCBjb250YWlucyAlbGQgZW50cmll
czpcbiIpLAogICAgICAgICAgICBkeW5hbWljX2FkZHIsIChsb25nKSBkeW5hbWljX3NpemUpOwog
IGlmIChkb19keW5hbWljKQogICAgcHJpbnRmICgoIiAgVGFnICAgICAgICBUeXBlICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hbWUvVmFsdWVcbiIpKTsKCiAgZm9yIChpID0gMCwgZW50cnkgPSBk
eW5hbWljX3NlZ21lbnQ7CiAgICAgICBpIDwgZHluYW1pY19zaXplOwogICAgICAgaSsrLCBlbnRy
eSsrKQogICAgewogICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICB7CiAgICAgICAgICBjb25z
dCBjaGFyICpkdHlwZTsKCiAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgcHJpbnRf
dm1hIChlbnRyeS0+ZF90YWcsIEZVTExfSEVYKTsKICAgICAgICAgIGR0eXBlID0gZ2V0X2R5bmFt
aWNfdHlwZSAoZW50cnktPmRfdGFnKTsKICAgICAgICAgIHByaW50ZiAoIiAoJXMpJSpzIiwgZHR5
cGUsCiAgICAgICAgICAgICAgICAgICgoaXNfMzJiaXRfZWxmID8gMjcgOiAxOSkKICAgICAgICAg
ICAgICAgICAgIC0gKGludCkgc3RybGVuIChkdHlwZSkpLAogICAgICAgICAgICAgICAgICAiICIp
OwogICAgICAgIH0KCiAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFnKQogICAgICAgIHsKICAgICAg
ICBjYXNlIDMwOgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHB1dHMgKGdl
dF9keW5hbWljX2ZsYWdzIChlbnRyeS0+ZF91bi5kX3ZhbCkpOwogICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGNhc2UgMHg3ZmZmZmZmZDoKICAgICAgICBjYXNlIDB4N2ZmZmZmZmY6CiAgICAgICAg
Y2FzZSAweDZmZmZmZWZhOgogICAgICAgIGNhc2UgMHg2ZmZmZmVmYjoKICAgICAgICBjYXNlIDB4
NmZmZmZlZmM6CiAgICAgICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgY2FzZSAweDdmZmZmZmZkOgogICAgICAgICAgICAgICAgICBwcmludGYgKCgiQXV4aWxp
YXJ5IGxpYnJhcnkiKSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAg
IGNhc2UgMHg3ZmZmZmZmZjoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkZpbHRlciBsaWJy
YXJ5IikpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4
NmZmZmZlZmE6CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoKCJDb25maWd1cmF0aW9uIGZpbGUi
KSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHg2ZmZm
ZmVmYjoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkRlcGVuZGVuY3kgYXVkaXQgbGlicmFy
eSIpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweDZm
ZmZmZWZjOgogICAgICAgICAgICAgICAgICBwcmludGYgKCgiQXVkaXQgbGlicmFyeSIpKTsKICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlm
IChkeW5hbWljX3N0cmluZ3MpCiAgICAgICAgICAgICAgICBwcmludGYgKCI6IFslc11cbiIsIGR5
bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5kX3VuLmRfdmFsKTsKICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIjogIik7CiAgICAgICAg
ICAgICAgICAgIHByaW50X3ZtYSAoZW50cnktPmRfdW4uZF92YWwsIFBSRUZJWF9IRVgpOwogICAg
ICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHg2ZmZmZmRmYzoKICAgICAgICAg
IGlmIChkb19keW5hbWljKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcHJpbnRmICgoIkZs
YWdzOiIpKTsKCiAgICAgICAgICAgICAgaWYgKGVudHJ5LT5kX3VuLmRfdmFsID09IDApCiAgICAg
ICAgICAgICAgICBwcmludGYgKCgiIE5vbmVcbiIpKTsKICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IHZhbCA9IGVu
dHJ5LT5kX3VuLmRfdmFsOwoKICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDEp
CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIFBB
UklOSVQiKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAxOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDIpCiAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIENPTkZF
WFAiKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAyOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSAwKQogICAgICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiAlbHgiLCB2YWwpOwogICAgICAgICAgICAgICAgICBwdXRzICgiIik7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDB4NmZmZmZkZmQ6CiAgICAgICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICAgICAg
ewogICAgICAgICAgICAgIHByaW50ZiAoKCJGbGFnczoiKSk7CgogICAgICAgICAgICAgIGlmIChl
bnRyeS0+ZF91bi5kX3ZhbCA9PSAwKQogICAgICAgICAgICAgICAgcHJpbnRmICgoIiBOb25lXG4i
KSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGludCB2YWwgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAg
ICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDAxKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiBMQVpZTE9BRCIpOwogICAgICAgICAgICAgICAgICAg
ICAgdmFsIF49IDB4MDAwMDAwMDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICBpZiAodmFsICYgMHgwMDAwMDAwMikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICBwcmludGYgKCIgR1JPVVBQRVJNIik7CiAgICAgICAgICAgICAgICAgICAg
ICB2YWwgXj0gMHgwMDAwMDAwMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgIGlmICh2YWwgIT0gMCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJWx4IiwgdmFs
KTsKICAgICAgICAgICAgICAgICAgcHV0cyAoIiIpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZmZmZmZmZiOgogICAgICAg
ICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludGYgKCgi
RmxhZ3M6IikpOwogICAgICAgICAgICAgIGlmIChlbnRyeS0+ZF91bi5kX3ZhbCA9PSAwKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgoIiBOb25lXG4iKSk7CiAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludCB2YWwgPSBl
bnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDAx
KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBO
T1ciKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAxOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDIpCiAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIEdMT0JBTCIp
OwogICAgICAgICAgICAgICAgICAgICAgdmFsIF49IDB4MDAwMDAwMDI7CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodmFsICYgMHgwMDAwMDAwNCkKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgR1JPVVAiKTsKICAg
ICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDA0OwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDgpCiAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE5PREVMRVRFIik7CiAgICAg
ICAgICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAwMDAwODsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDEwKQogICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBMT0FERkxUUiIpOwogICAgICAg
ICAgICAgICAgICAgICAgdmFsIF49IDB4MDAwMDAwMTA7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICBpZiAodmFsICYgMHgwMDAwMDAyMCkKICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgSU5JVEZJUlNUIik7CiAgICAgICAg
ICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAwMDAyMDsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDQwKQogICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBOT09QRU4iKTsKICAgICAgICAgICAg
ICAgICAgICAgIHZhbCBePSAweDAwMDAwMDQwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwODApCiAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE9SSUdJTiIpOwogICAgICAgICAgICAgICAg
ICAgICAgdmFsIF49IDB4MDAwMDAwODA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICBpZiAodmFsICYgMHgwMDAwMDEwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYgKCIgRElSRUNUIik7CiAgICAgICAgICAgICAgICAgICAg
ICB2YWwgXj0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgIGlmICh2YWwgJiAweDAwMDAwMjAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoIiBUUkFOUyIpOwogICAgICAgICAgICAgICAgICAgICAgdmFs
IF49IDB4MDAwMDAyMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBp
ZiAodmFsICYgMHgwMDAwMDQwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYgKCIgSU5URVJQT1NFIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwg
Xj0gMHgwMDAwMDQwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlm
ICh2YWwgJiAweDAwMDAwODAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiBOT0RFRkxJQiIpOwogICAgICAgICAgICAgICAgICAgICAgdmFsIF49
IDB4MDAwMDA4MDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAo
dmFsICYgMHgwMDAwMTAwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYgKCIgTk9EVU1QIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwgXj0gMHgw
MDAwMTAwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh2YWwg
JiAweDAwMDAyMDAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZiAoIiBDT05MRkFUIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAw
MjAwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh2YWwgIT0g
MCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJWx4IiwgdmFsKTsKICAgICAgICAgICAg
ICAgICAgcHV0cyAoIiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICBicmVhazsKCiAgICAgICAgY2FzZSAyMDoKICAgICAgICAgIGlmIChkb19keW5hbWljKQogICAg
ICAgICAgICBwdXRzIChnZXRfZHluYW1pY190eXBlIChlbnRyeS0+ZF91bi5kX3ZhbCkpOwogICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMCA6CiAgICAgICAgY2FzZSAxIDoKICAgICAgICBj
YXNlIDMgOgogICAgICAgIGNhc2UgNCA6CiAgICAgICAgY2FzZSA1IDoKICAgICAgICBjYXNlIDYg
OgogICAgICAgIGNhc2UgNyA6CiAgICAgICAgY2FzZSAxMiA6CiAgICAgICAgY2FzZSAxMyA6CiAg
ICAgICAgY2FzZSAxNCA6CiAgICAgICAgY2FzZSAxNSA6CiAgICAgICAgY2FzZSAxNjoKICAgICAg
ICBjYXNlIDE3IDoKICAgICAgICBjYXNlIDIxIDoKICAgICAgICBjYXNlIDIyIDoKICAgICAgICBj
YXNlIDIzIDoKICAgICAgICBjYXNlIDI5IDoKICAgICAgICAgIGR5bmFtaWNfaW5mb1tlbnRyeS0+
ZF90YWddID0gZW50cnktPmRfdW4uZF92YWw7CgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBjaGFyICpuYW1lOwoKICAgICAgICAgICAgICBpZiAo
ZHluYW1pY19zdHJpbmdzID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgbmFtZSA9ICgo
dm9pZCAqKTApOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIG5hbWUgPSBkeW5h
bWljX3N0cmluZ3MgKyBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgaWYgKG5hbWUp
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFn
KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYgKCgiU2hhcmVkIGxpYnJhcnk6IFslc10iKSwgbmFtZSk7
CgogICAgICAgICAgICAgICAgICAgICAgaWYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFf
bGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAocHJvZ3JhbV9pbnRlcnByZXRlcikgJiYgKF9fczFfbGVuID0gc3RybGVuIChu
YW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKHByb2dyYW1faW50ZXJwcmV0ZXIpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChw
cm9ncmFtX2ludGVycHJldGVyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwcm9ncmFt
X2ludGVycHJldGVyKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSwg
KF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocHJv
Z3JhbV9pbnRlcnByZXRlcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHByb2dyYW1faW50
ZXJwcmV0ZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHByb2dyYW1faW50ZXJwcmV0
ZXIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikocHJvZ3JhbV9pbnRlcnBy
ZXRlcikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1f
aW50ZXJwcmV0ZXIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChw
cm9ncmFtX2ludGVycHJldGVyKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0
ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChwcm9ncmFtX2ludGVycHJldGVyKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgocHJvZ3JhbV9pbnRlcnByZXRlcikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikocHJvZ3JhbV9pbnRlcnByZXRlcikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChw
cm9ncmFtX2ludGVycHJldGVyKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIg
aW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikocHJvZ3JhbV9pbnRlcnByZXRlcikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSlbMl0pOyBpZiAoX19zMl9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3Mx
ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVswXTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dy
YW1faW50ZXJwcmV0ZXIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAobmFtZSwgcHJvZ3JhbV9pbnRlcnByZXRlcikpKSk7IH0pID09IDApCiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoKCIgcHJvZ3JhbSBpbnRlcnByZXRlciIpKTsKICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkxpYnJhcnkgc29uYW1lOiBbJXNdIiksIG5hbWUp
OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2Ug
MTU6CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCgiTGlicmFyeSBycGF0aDogWyVzXSIp
LCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI5OgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkxpYnJhcnkgcnVucGF0
aDogWyVzXSIpLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdm1hIChlbnRy
eS0+ZF91bi5kX3ZhbCwgUFJFRklYX0hFWCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgcHJpbnRfdm1hIChlbnRyeS0+ZF91bi5kX3ZhbCwgUFJFRklYX0hF
WCk7CgogICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICB9CiAgICAgICAg
ICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgIGNhc2UgOCA6CiAgICAgICAgY2FzZSAx
MCA6CiAgICAgICAgY2FzZSAxOCA6CiAgICAgICAgY2FzZSA5IDoKICAgICAgICBjYXNlIDExIDoK
ICAgICAgICBjYXNlIDE5IDoKICAgICAgICBjYXNlIDB4NmZmZmZkZjk6CiAgICAgICAgY2FzZSAw
eDZmZmZmZGZhIDoKICAgICAgICBjYXNlIDB4NmZmZmZkZmIgOgogICAgICAgIGNhc2UgMjc6CiAg
ICAgICAgY2FzZSAyODoKICAgICAgICBjYXNlIDB4NmZmZmZkZjY6CiAgICAgICAgY2FzZSAweDZm
ZmZmZGY3OgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfdmFsLCBVTlNJR05FRCk7CiAgICAgICAgICAg
ICAgcHJpbnRmICgiIChieXRlcylcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSAweDZmZmZmZmZkOgogICAgICAgIGNhc2UgMHg2ZmZmZmZmZjoKICAgICAg
ICBjYXNlIDB4NmZmZmZmZjk6CiAgICAgICAgY2FzZSAweDZmZmZmZmZhOgogICAgICAgICAgaWYg
KGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5
LT5kX3VuLmRfdmFsLCBVTlNJR05FRCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4NmZmZmZkZmU6CiAg
ICAgICAgY2FzZSAweDZmZmZmZGZmOgogICAgICAgIGNhc2UgMHg2ZmZmZmVmZjoKICAgICAgICBj
YXNlIDB4N2ZmZmZmZmU6CiAgICAgICAgY2FzZSAyNToKICAgICAgICBjYXNlIDI2OgogICAgICAg
ICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoZHluYW1p
Y19zdHJpbmdzICE9ICgodm9pZCAqKTApICYmIGVudHJ5LT5kX3RhZyA9PSAweDdmZmZmZmZlKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjaGFyICpuYW1lOwoKICAgICAgICAg
ICAgICAgICAgbmFtZSA9IGR5bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5kX3VuLmRfdmFsOwoKICAg
ICAgICAgICAgICAgICAgaWYgKCpuYW1lKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoKCJOb3QgbmVlZGVkIG9iamVjdDogWyVzXVxuIiksIG5hbWUp
OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfdmFs
LCBQUkVGSVhfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAgICAgICAg
fQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjQ6CgogICAgICAgICAgaWYgKGRvX2R5
bmFtaWMpCiAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgMHg2ZmZmZmRmNToKICAgICAgICAgIGlmIChkb19keW5hbWljKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgc3RydWN0IHRtICp0bXA7CiAgICAgICAgICAgICAgdGltZV90IHRp
bWUgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGlt
ZSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiJTA0dS0lMDJ1LSUwMnVUJTAydTolMDJ1OiUwMnVc
biIsCiAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21v
biArIDEsIHRtcC0+dG1fbWRheSwKICAgICAgICAgICAgICAgICAgICAgIHRtcC0+dG1faG91ciwg
dG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFr
OwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKChlbnRyeS0+ZF90YWcgPj0gMHg2ZmZm
ZmZmMCkgJiYgKGVudHJ5LT5kX3RhZyA8PSAweDZmZmZmZmZmKSkKICAgICAgICAgICAgdmVyc2lv
bl9pbmZvWygweDZmZmZmZmZmIC0gKGVudHJ5LT5kX3RhZykpXSA9CiAgICAgICAgICAgICAgZW50
cnktPmRfdW4uZF92YWw7CgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQogICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAg
ICAgICAgICAgICAgICAgZHluYW1pY19zZWdtZW50X21pcHNfdmFsIChlbnRyeSk7CiAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAg
ICAgZHluYW1pY19zZWdtZW50X3BhcmlzY192YWwgKGVudHJ5KTsKICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgICAgICBkeW5hbWlj
X3NlZ21lbnRfaWE2NF92YWwgKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5LT5k
X3VuLmRfdmFsLCBQUkVGSVhfSEVYKTsKICAgICAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KICAgIH0KCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBjaGFyICoKZ2V0X3Zlcl9mbGFncyAoZmxh
Z3MpCiAgICAgdW5zaWduZWQgaW50IGZsYWdzOwp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07Cgog
IGJ1ZmZbMF0gPSAwOwoKICBpZiAoZmxhZ3MgPT0gMCkKICAgIHJldHVybiAoIm5vbmUiKTsKCiAg
aWYgKGZsYWdzICYgMHgxKQogICAgc3RyY2F0IChidWZmLCAiQkFTRSAiKTsKCiAgaWYgKGZsYWdz
ICYgMHgyKQogICAgewogICAgICBpZiAoZmxhZ3MgJiAweDEpCiAgICAgICAgc3RyY2F0IChidWZm
LCAifCAiKTsKCiAgICAgIHN0cmNhdCAoYnVmZiwgIldFQUsgIik7CiAgICB9CgogIGlmIChmbGFn
cyAmIH4oMHgxIHwgMHgyKSkKICAgIHN0cmNhdCAoYnVmZiwgInwgPHVua25vd24+Iik7CgogIHJl
dHVybiBidWZmOwp9CgoKc3RhdGljIGludApwcm9jZXNzX3ZlcnNpb25fc2VjdGlvbnMgKGZpbGUp
CiAgICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwogIHVuc2ln
bmVkIGk7CiAgaW50IGZvdW5kID0gMDsKCiAgaWYgKCEgZG9fdmVyc2lvbikKICAgIHJldHVybiAx
OwoKICBmb3IgKGkgPSAwLCBzZWN0aW9uID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVs
Zl9oZWFkZXIuZV9zaG51bTsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewogICAgICBzd2l0
Y2ggKHNlY3Rpb24tPnNoX3R5cGUpCiAgICAgICAgewogICAgICAgIGNhc2UgMHg2ZmZmZmZmZDoK
ICAgICAgICAgIHsKICAgICAgICAgICAgRWxmX0V4dGVybmFsX1ZlcmRlZiAqZWRlZnM7CiAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBpZHg7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbnQ7Cgog
ICAgICAgICAgICBmb3VuZCA9IDE7CgogICAgICAgICAgICBwcmludGYKICAgICAgICAgICAgICAo
KCJcblZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uICclcycgY29udGFpbnMgJWxkIGVudHJpZXM6
XG4iKSwKICAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSwgc2VjdGlvbi0+c2hfaW5m
byk7CgogICAgICAgICAgICBwcmludGYgKCgiICBBZGRyOiAweCIpKTsKICAgICAgICAgICAgZnBy
aW50ZiAoKHN0ZG91dCksICIlMDhseCUwOGx4IiwgKCh1bnNpZ25lZCBsb25nKSAoKChzZWN0aW9u
LT5zaF9hZGRyKSA+PiAzMikgJiAweGZmZmZmZmZmKSksICgodW5zaWduZWQgbG9uZykgKCgoc2Vj
dGlvbi0+c2hfYWRkcikgJiAweGZmZmZmZmZmKSkpKTsKICAgICAgICAgICAgcHJpbnRmICgoIiAg
T2Zmc2V0OiAlIzA4bHggIExpbms6ICVseCAoJXMpXG4iKSwKICAgICAgICAgICAgICAgICAgICAo
dW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0LCBzZWN0aW9uLT5zaF9saW5rLAogICAg
ICAgICAgICAgICAgICAgICgoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hfbGluaykg
PCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmspIDw9IDB4
RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkpKSkp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rp
b24tPnNoX2xpbmspIDwgMHhGRjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5z
aF9saW5rKSA8PSAweEZGRkYgPyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEg
LSAweEZGMDApKSkpKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hfbGlu
aykgPCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmspIDw9
IDB4RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkp
KSkpLT5zaF9uYW1lKSkpOwoKICAgICAgICAgICAgZWRlZnMgPSAoKEVsZl9FeHRlcm5hbF9WZXJk
ZWYgKikKICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBz
ZWN0aW9uLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9u
LT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9uIGRlZmlu
aXRpb24gc2VjdGlvbiIpKSk7CiAgICAgICAgICAgIGlmICghZWRlZnMpCiAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICBmb3IgKGlkeCA9IGNudCA9IDA7IGNudCA8IHNlY3Rpb24tPnNo
X2luZm87ICsrY250KQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgKnZzdGFy
dDsKICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJkZWYgKmVkZWY7CiAgICAgICAgICAg
ICAgICBFbGZfSW50ZXJuYWxfVmVyZGVmIGVudDsKICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5h
bF9WZXJkYXV4ICplYXV4OwogICAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1ZlcmRhdXggYXV4
OwogICAgICAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgICAgICBpbnQgaXN1bTsKCiAgICAg
ICAgICAgICAgICB2c3RhcnQgPSAoKGNoYXIgKikgZWRlZnMpICsgaWR4OwoKICAgICAgICAgICAg
ICAgIGVkZWYgPSAoRWxmX0V4dGVybmFsX1ZlcmRlZiAqKSB2c3RhcnQ7CgogICAgICAgICAgICAg
ICAgZW50LnZkX3ZlcnNpb24gPSBieXRlX2dldCAoZWRlZi0+dmRfdmVyc2lvbiwgc2l6ZW9mIChl
ZGVmLT52ZF92ZXJzaW9uKSk7CiAgICAgICAgICAgICAgICBlbnQudmRfZmxhZ3MgPSBieXRlX2dl
dCAoZWRlZi0+dmRfZmxhZ3MsIHNpemVvZiAoZWRlZi0+dmRfZmxhZ3MpKTsKICAgICAgICAgICAg
ICAgIGVudC52ZF9uZHggPSBieXRlX2dldCAoZWRlZi0+dmRfbmR4LCBzaXplb2YgKGVkZWYtPnZk
X25keCkpOwogICAgICAgICAgICAgICAgZW50LnZkX2NudCA9IGJ5dGVfZ2V0IChlZGVmLT52ZF9j
bnQsIHNpemVvZiAoZWRlZi0+dmRfY250KSk7CiAgICAgICAgICAgICAgICBlbnQudmRfaGFzaCA9
IGJ5dGVfZ2V0IChlZGVmLT52ZF9oYXNoLCBzaXplb2YgKGVkZWYtPnZkX2hhc2gpKTsKICAgICAg
ICAgICAgICAgIGVudC52ZF9hdXggPSBieXRlX2dldCAoZWRlZi0+dmRfYXV4LCBzaXplb2YgKGVk
ZWYtPnZkX2F1eCkpOwogICAgICAgICAgICAgICAgZW50LnZkX25leHQgPSBieXRlX2dldCAoZWRl
Zi0+dmRfbmV4dCwgc2l6ZW9mIChlZGVmLT52ZF9uZXh0KSk7CgogICAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJSMwNng6IFJldjogJWQgIEZsYWdzOiAlcyIpLAogICAgICAgICAgICAgICAgICAg
ICAgICBpZHgsIGVudC52ZF92ZXJzaW9uLCBnZXRfdmVyX2ZsYWdzIChlbnQudmRfZmxhZ3MpKTsK
CiAgICAgICAgICAgICAgICBwcmludGYgKCgiICBJbmRleDogJWQgIENudDogJWQgICIpLAogICAg
ICAgICAgICAgICAgICAgICAgICBlbnQudmRfbmR4LCBlbnQudmRfY250KTsKCiAgICAgICAgICAg
ICAgICB2c3RhcnQgKz0gZW50LnZkX2F1eDsKCiAgICAgICAgICAgICAgICBlYXV4ID0gKEVsZl9F
eHRlcm5hbF9WZXJkYXV4ICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICBhdXgudmRhX25hbWUg
PSBieXRlX2dldCAoZWF1eC0+dmRhX25hbWUsIHNpemVvZiAoZWF1eC0+dmRhX25hbWUpKTsKICAg
ICAgICAgICAgICAgIGF1eC52ZGFfbmV4dCA9IGJ5dGVfZ2V0IChlYXV4LT52ZGFfbmV4dCwgc2l6
ZW9mIChlYXV4LT52ZGFfbmV4dCkpOwoKICAgICAgICAgICAgICAgIGlmIChkeW5hbWljX3N0cmlu
Z3MpCiAgICAgICAgICAgICAgICAgIHByaW50ZiAoKCJOYW1lOiAlc1xuIiksIGR5bmFtaWNfc3Ry
aW5ncyArIGF1eC52ZGFfbmFtZSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgIHByaW50ZiAoKCJOYW1lIGluZGV4OiAlbGRcbiIpLCBhdXgudmRhX25hbWUpOwoKICAgICAg
ICAgICAgICAgIGlzdW0gPSBpZHggKyBlbnQudmRfYXV4OwoKICAgICAgICAgICAgICAgIGZvciAo
aiA9IDE7IGogPCBlbnQudmRfY250OyBqKyspCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICBpc3VtICs9IGF1eC52ZGFfbmV4dDsKICAgICAgICAgICAgICAgICAgICB2c3Rh
cnQgKz0gYXV4LnZkYV9uZXh0OwoKICAgICAgICAgICAgICAgICAgICBlYXV4ID0gKEVsZl9FeHRl
cm5hbF9WZXJkYXV4ICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICAgICAgYXV4LnZkYV9uYW1l
ID0gYnl0ZV9nZXQgKGVhdXgtPnZkYV9uYW1lLCBzaXplb2YgKGVhdXgtPnZkYV9uYW1lKSk7CiAg
ICAgICAgICAgICAgICAgICAgYXV4LnZkYV9uZXh0ID0gYnl0ZV9nZXQgKGVhdXgtPnZkYV9uZXh0
LCBzaXplb2YgKGVhdXgtPnZkYV9uZXh0KSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChkeW5h
bWljX3N0cmluZ3MpCiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCgiICAlIzA2eDogUGFy
ZW50ICVkOiAlc1xuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzdW0sIGosIGR5
bmFtaWNfc3RyaW5ncyArIGF1eC52ZGFfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIiAgJSMwNng6IFBhcmVudCAlZCwgbmFtZSBp
bmRleDogJWxkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXN1bSwgaiwgYXV4
LnZkYV9uYW1lKTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlkeCArPSBl
bnQudmRfbmV4dDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBmcmVlIChlZGVmcyk7CiAg
ICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZmZmZmZmZlOgogICAg
ICAgICAgewogICAgICAgICAgICBFbGZfRXh0ZXJuYWxfVmVybmVlZCAqZW5lZWQ7CiAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBpZHg7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbnQ7CgogICAg
ICAgICAgICBmb3VuZCA9IDE7CgogICAgICAgICAgICBwcmludGYgKCgiXG5WZXJzaW9uIG5lZWRz
IHNlY3Rpb24gJyVzJyBjb250YWlucyAlbGQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAg
ICAgICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSksIHNlY3Rpb24tPnNoX2luZm8pOwoKICAgICAgICAgICAg
cHJpbnRmICgoIiBBZGRyOiAweCIpKTsKICAgICAgICAgICAgZnByaW50ZiAoKHN0ZG91dCksICIl
MDhseCUwOGx4IiwgKCh1bnNpZ25lZCBsb25nKSAoKChzZWN0aW9uLT5zaF9hZGRyKSA+PiAzMikg
JiAweGZmZmZmZmZmKSksICgodW5zaWduZWQgbG9uZykgKCgoc2VjdGlvbi0+c2hfYWRkcikgJiAw
eGZmZmZmZmZmKSkpKTsKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0OiAlIzA4bHggIExp
bmsgdG8gc2VjdGlvbjogJWxkICglcylcbiIpLAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25l
ZCBsb25nKSBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNoX2xpbmssCiAgICAgICAgICAg
ICAgICAgICAgKCgoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0aW9uLT5zaF9saW5rKSA8IDB4RkYw
MCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+c2hfbGluaykgPD0gMHhGRkZGID8g
MCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKSkgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hf
bGluaykgPCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmsp
IDw9IDB4RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYw
MCkpKSkpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICgoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0aW9uLT5zaF9saW5rKSA8IDB4
RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+c2hfbGluaykgPD0gMHhGRkZG
ID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKSktPnNo
X25hbWUpKSk7CgogICAgICAgICAgICBlbmVlZCA9ICgoRWxmX0V4dGVybmFsX1Zlcm5lZWQgKikK
ICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9u
LT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9z
aXplLCAoInZlcnNpb24gbmVlZCBzZWN0aW9uIikpKTsKICAgICAgICAgICAgaWYgKCFlbmVlZCkK
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGZvciAoaWR4ID0gY250ID0gMDsgY250
IDwgc2VjdGlvbi0+c2hfaW5mbzsgKytjbnQpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgRWxmX0V4dGVybmFsX1Zlcm5lZWQgKmVudHJ5OwogICAgICAgICAgICAgICAgRWxmX0ludGVy
bmFsX1Zlcm5lZWQgZW50OwogICAgICAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgICAgICBp
bnQgaXN1bTsKICAgICAgICAgICAgICAgIGNoYXIgKnZzdGFydDsKCiAgICAgICAgICAgICAgICB2
c3RhcnQgPSAoKGNoYXIgKikgZW5lZWQpICsgaWR4OwoKICAgICAgICAgICAgICAgIGVudHJ5ID0g
KEVsZl9FeHRlcm5hbF9WZXJuZWVkICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICBlbnQudm5f
dmVyc2lvbiA9IGJ5dGVfZ2V0IChlbnRyeS0+dm5fdmVyc2lvbiwgc2l6ZW9mIChlbnRyeS0+dm5f
dmVyc2lvbikpOwogICAgICAgICAgICAgICAgZW50LnZuX2NudCA9IGJ5dGVfZ2V0IChlbnRyeS0+
dm5fY250LCBzaXplb2YgKGVudHJ5LT52bl9jbnQpKTsKICAgICAgICAgICAgICAgIGVudC52bl9m
aWxlID0gYnl0ZV9nZXQgKGVudHJ5LT52bl9maWxlLCBzaXplb2YgKGVudHJ5LT52bl9maWxlKSk7
CiAgICAgICAgICAgICAgICBlbnQudm5fYXV4ID0gYnl0ZV9nZXQgKGVudHJ5LT52bl9hdXgsIHNp
emVvZiAoZW50cnktPnZuX2F1eCkpOwogICAgICAgICAgICAgICAgZW50LnZuX25leHQgPSBieXRl
X2dldCAoZW50cnktPnZuX25leHQsIHNpemVvZiAoZW50cnktPnZuX25leHQpKTsKCiAgICAgICAg
ICAgICAgICBwcmludGYgKCgiICAlIzA2eDogVmVyc2lvbjogJWQiKSwgaWR4LCBlbnQudm5fdmVy
c2lvbik7CgogICAgICAgICAgICAgICAgaWYgKGR5bmFtaWNfc3RyaW5ncykKICAgICAgICAgICAg
ICAgICAgcHJpbnRmICgoIiAgRmlsZTogJXMiKSwgZHluYW1pY19zdHJpbmdzICsgZW50LnZuX2Zp
bGUpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICBwcmludGYgKCgiICBG
aWxlOiAlbHgiKSwgZW50LnZuX2ZpbGUpOwoKICAgICAgICAgICAgICAgIHByaW50ZiAoKCIgIENu
dDogJWRcbiIpLCBlbnQudm5fY250KTsKCiAgICAgICAgICAgICAgICB2c3RhcnQgKz0gZW50LnZu
X2F1eDsKCiAgICAgICAgICAgICAgICBmb3IgKGogPSAwLCBpc3VtID0gaWR4ICsgZW50LnZuX2F1
eDsgaiA8IGVudC52bl9jbnQ7ICsraikKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4ICplYXV4OwogICAgICAgICAgICAgICAgICAgIEVs
Zl9JbnRlcm5hbF9WZXJuYXV4IGF1eDsKCiAgICAgICAgICAgICAgICAgICAgZWF1eCA9IChFbGZf
RXh0ZXJuYWxfVmVybmF1eCAqKSB2c3RhcnQ7CgogICAgICAgICAgICAgICAgICAgIGF1eC52bmFf
aGFzaCA9IGJ5dGVfZ2V0IChlYXV4LT52bmFfaGFzaCwgc2l6ZW9mIChlYXV4LT52bmFfaGFzaCkp
OwogICAgICAgICAgICAgICAgICAgIGF1eC52bmFfZmxhZ3MgPSBieXRlX2dldCAoZWF1eC0+dm5h
X2ZsYWdzLCBzaXplb2YgKGVhdXgtPnZuYV9mbGFncykpOwogICAgICAgICAgICAgICAgICAgIGF1
eC52bmFfb3RoZXIgPSBieXRlX2dldCAoZWF1eC0+dm5hX290aGVyLCBzaXplb2YgKGVhdXgtPnZu
YV9vdGhlcikpOwogICAgICAgICAgICAgICAgICAgIGF1eC52bmFfbmFtZSA9IGJ5dGVfZ2V0IChl
YXV4LT52bmFfbmFtZSwgc2l6ZW9mIChlYXV4LT52bmFfbmFtZSkpOwogICAgICAgICAgICAgICAg
ICAgIGF1eC52bmFfbmV4dCA9IGJ5dGVfZ2V0IChlYXV4LT52bmFfbmV4dCwgc2l6ZW9mIChlYXV4
LT52bmFfbmV4dCkpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZHluYW1pY19zdHJpbmdzKQog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIiAgJSMwNng6IE5hbWU6ICVzIiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzdW0sIGR5bmFtaWNfc3RyaW5ncyArIGF1eC52bmFf
bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJSMwNng6IE5hbWUgaW5kZXg6ICVseCIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpc3VtLCBhdXgudm5hX25hbWUpOwoKICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCgiICBGbGFnczogJXMgIFZlcnNpb246ICVkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldF92ZXJfZmxhZ3MgKGF1eC52bmFfZmxhZ3MpLCBhdXgudm5hX290aGVyKTsKCiAgICAg
ICAgICAgICAgICAgICAgaXN1bSArPSBhdXgudm5hX25leHQ7CiAgICAgICAgICAgICAgICAgICAg
dnN0YXJ0ICs9IGF1eC52bmFfbmV4dDsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGlkeCArPSBlbnQudm5fbmV4dDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBmcmVl
IChlbmVlZCk7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZm
ZmZmZmZmOgogICAgICAgICAgewogICAgICAgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqbGlua19z
ZWN0aW9uOwogICAgICAgICAgICBpbnQgdG90YWw7CiAgICAgICAgICAgIGludCBjbnQ7CiAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKmVkYXRhOwogICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAq
ZGF0YTsKICAgICAgICAgICAgY2hhciAqc3RydGFiOwogICAgICAgICAgICBFbGZfSW50ZXJuYWxf
U3ltICpzeW1ib2xzOwogICAgICAgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3RyaW5nX3NlYzsK
CiAgICAgICAgICAgIGxpbmtfc2VjdGlvbiA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rpb24t
PnNoX2xpbmspIDwgMHhGRjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5zaF9s
aW5rKSA8PSAweEZGRkYgPyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEgLSAw
eEZGMDApKSkpOwogICAgICAgICAgICB0b3RhbCA9IHNlY3Rpb24tPnNoX3NpemUgLyBzZWN0aW9u
LT5zaF9lbnRzaXplOwoKICAgICAgICAgICAgZm91bmQgPSAxOwoKICAgICAgICAgICAgc3ltYm9s
cyA9IChpc18zMmJpdF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIGxpbmtfc2Vj
dGlvbikgOiBnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIGxpbmtfc2VjdGlvbikpOwoKICAg
ICAgICAgICAgc3RyaW5nX3NlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKGxpbmtfc2VjdGlvbi0+
c2hfbGluaykgPCAweEZGMDAgPyAobGlua19zZWN0aW9uLT5zaF9saW5rKSA6ICgobGlua19zZWN0
aW9uLT5zaF9saW5rKSA8PSAweEZGRkYgPyAwIDogKGxpbmtfc2VjdGlvbi0+c2hfbGluaykgLSAo
MHhGRkZGICsgMSAtIDB4RkYwMCkpKSk7CgogICAgICAgICAgICBzdHJ0YWIgPSAoY2hhciAqKSBn
ZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHN0cmluZ19zZWMtPnNoX29mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19zZWMtPnNoX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gc3RyaW5nIHRh
YmxlIikpOwogICAgICAgICAgICBpZiAoIXN0cnRhYikKICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgIHByaW50ZiAoKCJcblZlcnNpb24gc3ltYm9scyBzZWN0aW9uICclcycgY29udGFp
bnMgJWQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAgICgoc2VjdGlvbikgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1l
KSksIHRvdGFsKTsKCiAgICAgICAgICAgIHByaW50ZiAoKCIgQWRkcjogIikpOwogICAgICAgICAg
ICBmcHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHNl
Y3Rpb24tPnNoX2FkZHIpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KChzZWN0aW9uLT5zaF9hZGRyKSAmIDB4ZmZmZmZmZmYpKSkpOwogICAgICAgICAgICBwcmludGYg
KCgiICBPZmZzZXQ6ICUjMDhseCAgTGluazogJWx4ICglcylcbiIpLAogICAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNoX2xpbmss
CiAgICAgICAgICAgICAgICAgICAgKChsaW5rX3NlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKGxpbmtfc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKGxpbmtfc2VjdGlvbiktPnNoX25hbWUpKSk7
CgogICAgICAgICAgICBlZGF0YSA9CiAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopCiAg
ICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb25faW5mb1soMHg2ZmZmZmZmZiAtICgweDZmZmZmZmYwKSldIC0gbG9h
ZGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCAqIHNpemVvZiAoc2hvcnQpLCAo
InZlcnNpb24gc3ltYm9sIGRhdGEiKSkpOwogICAgICAgICAgICBpZiAoIWVkYXRhKQogICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgIGZyZWUgKHN0cnRhYik7CiAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBkYXRhID0gKHVuc2lnbmVkIHNob3J0
ICopIG1hbGxvYyAodG90YWwgKiBzaXplb2YgKHNob3J0KSk7CgogICAgICAgICAgICBmb3IgKGNu
dCA9IHRvdGFsOyBjbnQgLS07KQogICAgICAgICAgICAgIGRhdGFbY250XSA9IGJ5dGVfZ2V0IChl
ZGF0YSArIGNudCAqIHNpemVvZiAoc2hvcnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplb2YgKHNob3J0KSk7CgogICAgICAgICAgICBmcmVlIChlZGF0YSk7CgogICAg
ICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IHRvdGFsOyBjbnQgKz0gNCkKICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICBpbnQgaiwgbm47CiAgICAgICAgICAgICAgICBpbnQgY2hlY2tf
ZGVmLCBjaGVja19uZWVkOwogICAgICAgICAgICAgICAgY2hhciAqbmFtZTsKCiAgICAgICAgICAg
ICAgICBwcmludGYgKCIgICUwM3g6IiwgY250KTsKCiAgICAgICAgICAgICAgICBmb3IgKGogPSAw
OyAoaiA8IDQpICYmIChjbnQgKyBqKSA8IHRvdGFsOyArK2opCiAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoZGF0YVtjbnQgKyBqXSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCgiICAgMCAoKmxvY2Fs
KikgICAgIiksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCgiICAgMSAo
Kmdsb2JhbCopICAgIiksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgIG5uID0gcHJp
bnRmICgiJTR4JWMiLCBkYXRhW2NudCArIGpdICYgMHg3ZmZmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFbY250ICsgal0gJiAweDgwMDAgPyAnaCcgOiAnICcpOwoKICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBj
aGVja19uZWVkID0gMTsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2VjdGlvbl9oZWFkZXJz
ICsgKChzeW1ib2xzW2NudCArIGpdLnN0X3NobmR4KSA8IDB4RkYwMCA/IChzeW1ib2xzW2NudCAr
IGpdLnN0X3NobmR4KSA6ICgoc3ltYm9sc1tjbnQgKyBqXS5zdF9zaG5keCkgPD0gMHhGRkZGID8g
MCA6IChzeW1ib2xzW2NudCArIGpdLnN0X3NobmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkp
KS0+c2hfdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICE9IDgpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sc1tjbnQgKyBq
XS5zdF9zaG5keCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZGVmID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja19uZWVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGVja19uZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
dmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmUpKV0pCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmVl
ZCBpdm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHZlcnNpb25faW5mb1soMHg2ZmZmZmZm
ZiAtICgweDZmZmZmZmZlKSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRy
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmF1eCBp
dm5hOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0ZXJuYWxfVmVybmVlZCBl
dm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4IGV2
bmE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYV9vZmY7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZGF0YSAoJmV2biwgZmlsZSwgb2Zmc2V0
LCBzaXplb2YgKGV2biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
InZlcnNpb24gbmVlZCIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2bi52bl9h
dXggPSBieXRlX2dldCAoZXZuLnZuX2F1eCwgc2l6ZW9mIChldm4udm5fYXV4KSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl2bi52bl9uZXh0ID0gYnl0ZV9nZXQgKGV2bi52bl9uZXh0
LCBzaXplb2YgKGV2bi52bl9uZXh0KSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
X29mZiA9IG9mZnNldCArIGl2bi52bl9hdXg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldF9kYXRhICgmZXZuYSwgZmlsZSwgYV9vZmYsIHNpemVvZiAoZXZu
YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9u
IG5lZWQgYXV4ICgyKSIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm5h
LnZuYV9uZXh0ID0gYnl0ZV9nZXQgKGV2bmEudm5hX25leHQsIHNpemVvZiAoZXZuYS52bmFfbmV4
dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZuYS52bmFfb3RoZXIgPSBi
eXRlX2dldCAoZXZuYS52bmFfb3RoZXIsIHNpemVvZiAoZXZuYS52bmFfb3RoZXIpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX29mZiArPSBpdm5hLnZuYV9uZXh0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGl2bmEudm5hX290aGVyICE9IGRhdGFbY250ICsgal0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIGl2bmEudm5hX25leHQgIT0gMCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXZuYS52bmFfb3RoZXIgPT0gZGF0YVtjbnQgKyBqXSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpdm5hLnZuYV9uYW1lID0gYnl0ZV9nZXQgKGV2bmEudm5hX25hbWUsIHNpemVv
ZiAoZXZuYS52bmFfbmFtZSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUgPSBzdHJ0YWIgKyBpdm5hLnZuYV9uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm4gKz0gcHJpbnRmICgiKCVzJS0qcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEyIC0gKGludCkgc3RybGVuIChuYW1lKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gaXZuLnZuX25leHQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl2
bi52bl9uZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjaGVja19kZWYgJiYgZGF0YVtjbnQgKyBqXSAhPSAweDgwMDEKICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiB2ZXJzaW9uX2luZm9bKDB4NmZmZmZmZmYgLSAoMHg2ZmZmZmZmYykp
XSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIEVs
Zl9JbnRlcm5hbF9WZXJkZWYgaXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRl
cm5hbF9WZXJkZWYgZXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAodmVyc2lvbl9pbmZv
WygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmMpKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLSBsb2FkYWRkcik7CgogICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
dF9kYXRhICgmZXZkLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgidmVyc2lvbiBkZWYiKSk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpdmQudmRfbmV4dCA9IGJ5dGVfZ2V0IChldmQudmRfbmV4dCwgc2l6
ZW9mIChldmQudmRfbmV4dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdmQudmRf
bmR4ID0gYnl0ZV9nZXQgKGV2ZC52ZF9uZHgsIHNpemVvZiAoZXZkLnZkX25keCkpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGl2ZC52ZF9uZXh0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpdmQu
dmRfbmR4ICE9IChkYXRhW2NudCArIGpdICYgMHg3ZmZmKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpdmQudmRfbmV4dCAhPSAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGl2ZC52ZF9uZHggPT0gKGRhdGFbY250ICsgal0gJiAweDdmZmYpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0
ZXJuYWxfVmVyZGF1eCBldmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50
ZXJuYWxfVmVyZGF1eCBpdmRhOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZkLnZk
X2F1eCA9IGJ5dGVfZ2V0IChldmQudmRfYXV4LCBzaXplb2YgKGV2ZC52ZF9hdXgpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhICgmZXZkYSwgZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAtIGl2ZC52ZF9uZXh0ICsgaXZk
LnZkX2F1eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAo
ZXZkYSksICgidmVyc2lvbiBkZWYgYXV4IikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXZkYS52ZGFfbmFtZSA9IGJ5dGVfZ2V0IChldmRhLnZkYV9uYW1lLCBzaXplb2YgKGV2ZGEu
dmRhX25hbWUpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzdHJ0YWIg
KyBpdmRhLnZkYV9uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubiArPSBwcmlu
dGYgKCIoJXMlLSpzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyIC0g
KGludCkgc3RybGVuIChuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgaWYgKG5uIDwgMTgpCiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiUqYyIsIDE4IC0gbm4sICcgJyk7CiAgICAgICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIGZyZWUgKGRhdGEpOwogICAgICAgICAgICBmcmVlIChzdHJ0YWIpOwog
ICAgICAgICAgICBmcmVlIChzeW1ib2xzKTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICBpZiAo
ISBmb3VuZCkKICAgIHByaW50ZiAoKCJcbk5vIHZlcnNpb24gaW5mb3JtYXRpb24gZm91bmQgaW4g
dGhpcyBmaWxlLlxuIikpOwoKICByZXR1cm4gMTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRf
c3ltYm9sX2JpbmRpbmcgKGJpbmRpbmcpCiAgICAgdW5zaWduZWQgaW50IGJpbmRpbmc7CnsKICBz
dGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChiaW5kaW5nKQogICAgewogICAgY2FzZSAw
OiByZXR1cm4gIkxPQ0FMIjsKICAgIGNhc2UgMTogcmV0dXJuICJHTE9CQUwiOwogICAgY2FzZSAy
OiByZXR1cm4gIldFQUsiOwogICAgZGVmYXVsdDoKICAgICAgaWYgKGJpbmRpbmcgPj0gMTMgJiYg
YmluZGluZyA8PSAxNSkKICAgICAgICBzcHJpbnRmIChidWZmLCAoIjxwcm9jZXNzb3Igc3BlY2lm
aWM+OiAlZCIpLCBiaW5kaW5nKTsKICAgICAgZWxzZSBpZiAoYmluZGluZyA+PSAxMCAmJiBiaW5k
aW5nIDw9IDEyKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICgiPE9TIHNwZWNpZmljPjogJWQiKSwg
YmluZGluZyk7CiAgICAgIGVsc2UKICAgICAgICBzcHJpbnRmIChidWZmLCAoIjx1bmtub3duPjog
JWQiKSwgYmluZGluZyk7CiAgICAgIHJldHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY29uc3Qg
Y2hhciAqCmdldF9zeW1ib2xfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKewog
IHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlIDA6
IHJldHVybiAiTk9UWVBFIjsKICAgIGNhc2UgMTogcmV0dXJuICJPQkpFQ1QiOwogICAgY2FzZSAy
OiByZXR1cm4gIkZVTkMiOwogICAgY2FzZSAzOiByZXR1cm4gIlNFQ1RJT04iOwogICAgY2FzZSA0
OiByZXR1cm4gIkZJTEUiOwogICAgY2FzZSA1OiByZXR1cm4gIkNPTU1PTiI7CiAgICBjYXNlIDY6
IHJldHVybiAiVExTIjsKICAgIGRlZmF1bHQ6CiAgICAgIGlmICh0eXBlID49IDEzICYmIHR5cGUg
PD0gMTUpCiAgICAgICAgewogICAgICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQw
ICYmIHR5cGUgPT0gMTMpCiAgICAgICAgICAgIHJldHVybiAiVEhVTUJfRlVOQyI7CgogICAgICAg
ICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQzICYmIHR5cGUgPT0gMTMpCiAgICAgICAg
ICAgIHJldHVybiAiUkVHSVNURVIiOwoKICAgICAgICAgIGlmIChlbGZfaGVhZGVyLmVfbWFjaGlu
ZSA9PSAxNSAmJiB0eXBlID09IDEzKQogICAgICAgICAgICByZXR1cm4gIlBBUklTQ19NSUxMSSI7
CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8cHJvY2Vzc29yIHNwZWNpZmljPjogJWQiKSwg
dHlwZSk7CiAgICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlID49IDEwICYmIHR5cGUgPD0gMTIp
CiAgICAgICAgewogICAgICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDE1KQogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gKDEwICsgMHgxKSkKICAgICAgICAg
ICAgICAgIHJldHVybiAiSFBfT1BBUVVFIjsKICAgICAgICAgICAgICBpZiAodHlwZSA9PSAoMTAg
KyAweDIpKQogICAgICAgICAgICAgICAgcmV0dXJuICJIUF9TVFVCIjsKICAgICAgICAgICAgfQoK
ICAgICAgICAgIHNwcmludGYgKGJ1ZmYsICgiPE9TIHNwZWNpZmljPjogJWQiKSwgdHlwZSk7CiAg
ICAgICAgfQogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVk
IiksIHR5cGUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KfQoKc3RhdGljIGNvbnN0IGNoYXIg
KgpnZXRfc3ltYm9sX3Zpc2liaWxpdHkgKHZpc2liaWxpdHkpCiAgICAgdW5zaWduZWQgaW50IHZp
c2liaWxpdHk7CnsKICBzd2l0Y2ggKHZpc2liaWxpdHkpCiAgICB7CiAgICBjYXNlIDA6IHJldHVy
biAiREVGQVVMVCI7CiAgICBjYXNlIDE6IHJldHVybiAiSU5URVJOQUwiOwogICAgY2FzZSAyOiBy
ZXR1cm4gIkhJRERFTiI7CiAgICBjYXNlIDM6IHJldHVybiAiUFJPVEVDVEVEIjsKICAgIGRlZmF1
bHQ6IGFib3J0ICgpOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9zeW1ib2xfaW5k
ZXhfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1
ZmZbMzJdOwoKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAiVU5EIjsK
ICAgIGNhc2UgMHhGRkYxOiByZXR1cm4gIkFCUyI7CiAgICBjYXNlIDB4RkZGMjogcmV0dXJuICJD
T00iOwogICAgZGVmYXVsdDoKICAgICAgaWYgKHR5cGUgPj0gMHhGRjAwICYmIHR5cGUgPD0gMHhG
RjFGKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICJQUkNbMHglMDR4XSIsIHR5cGUpOwogICAgICBl
bHNlIGlmICh0eXBlID49IDB4RkYyMCAmJiB0eXBlIDw9IDB4RkYzRikKICAgICAgICBzcHJpbnRm
IChidWZmLCAiT1MgWzB4JTA0eF0iLCB0eXBlKTsKICAgICAgZWxzZSBpZiAodHlwZSA+PSAweEZG
MDAgJiYgdHlwZSA8PSAweEZGRkYpCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgIlJTVlsweCUwNHhd
IiwgdHlwZSk7CiAgICAgIGVsc2UKICAgICAgICBzcHJpbnRmIChidWZmLCAiJTNkIiwgdHlwZSk7
CiAgICAgIGJyZWFrOwogICAgfQoKICByZXR1cm4gYnVmZjsKfQoKc3RhdGljIGludCAqCmdldF9k
eW5hbWljX2RhdGEgKGZpbGUsIG51bWJlcikKICAgICBGSUxFICpmaWxlOwogICAgIHVuc2lnbmVk
IGludCBudW1iZXI7CnsKICB1bnNpZ25lZCBjaGFyICplX2RhdGE7CiAgaW50ICppX2RhdGE7Cgog
IGVfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAobnVtYmVyICogNCk7CgogIGlmIChl
X2RhdGEgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnlc
biIpKTsKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICBpZiAoZnJlYWQgKGVfZGF0
YSwgNCwgbnVtYmVyLCBmaWxlKSAhPSBudW1iZXIpCiAgICB7CiAgICAgIGVycm9yICgoIlVuYWJs
ZSB0byByZWFkIGluIGR5bmFtaWMgZGF0YVxuIikpOwogICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICB9CgogIGlfZGF0YSA9IChpbnQgKikgbWFsbG9jIChudW1iZXIgKiBzaXplb2YgKCppX2Rh
dGEpKTsKCiAgaWYgKGlfZGF0YSA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZXJyb3IgKCgi
T3V0IG9mIG1lbW9yeVxuIikpOwogICAgICBmcmVlIChlX2RhdGEpOwogICAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgICB9CgogIHdoaWxlIChudW1iZXItLSkKICAgIGlfZGF0YVtudW1iZXJdID0g
Ynl0ZV9nZXQgKGVfZGF0YSArIG51bWJlciAqIDQsIDQpOwoKICBmcmVlIChlX2RhdGEpOwoKICBy
ZXR1cm4gaV9kYXRhOwp9CgoKc3RhdGljIGludApwcm9jZXNzX3N5bWJvbF90YWJsZSAoZmlsZSkK
ICAgICBGSUxFICpmaWxlOwp7CiAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgdW5zaWdu
ZWQgY2hhciBuYls0XTsKICB1bnNpZ25lZCBjaGFyIG5jWzRdOwogIGludCBuYnVja2V0cyA9IDA7
CiAgaW50IG5jaGFpbnMgPSAwOwogIGludCAqYnVja2V0cyA9ICgodm9pZCAqKTApOwogIGludCAq
Y2hhaW5zID0gKCh2b2lkICopMCk7CgogIGlmICghIGRvX3N5bXMgJiYgIWRvX2hpc3RvZ3JhbSkK
ICAgIHJldHVybiAxOwoKICBpZiAoZHluYW1pY19pbmZvWzRdICYmICgoZG9fdXNpbmdfZHluYW1p
YyAmJiBkeW5hbWljX3N0cmluZ3MgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgZG9faGlzdG9ncmFtKSkKICAgIHsKICAgICAgaWYgKGZzZWVrIChmaWxl
LCBkeW5hbWljX2luZm9bNF0gLSBsb2FkYWRkciwgMCkpCiAgICAgICAgewogICAgICAgICAgZXJy
b3IgKCgiVW5hYmxlIHRvIHNlZWsgdG8gc3RhcnQgb2YgZHluYW1pYyBpbmZvcm1hdGlvbiIpKTsK
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgIGlmIChmcmVhZCAobmIsIHNpemVv
ZiAobmIpLCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHsKICAgICAgICAgIGVycm9yICgoIkZhaWxl
ZCB0byByZWFkIGluIG51bWJlciBvZiBidWNrZXRzXG4iKSk7CiAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICB9CgogICAgICBpZiAoZnJlYWQgKG5jLCBzaXplb2YgKG5jKSwgMSwgZmlsZSkgIT0g
MSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJGYWlsZWQgdG8gcmVhZCBpbiBudW1iZXIg
b2YgY2hhaW5zXG4iKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBuYnVj
a2V0cyA9IGJ5dGVfZ2V0IChuYiwgNCk7CiAgICAgIG5jaGFpbnMgPSBieXRlX2dldCAobmMsIDQp
OwoKICAgICAgYnVja2V0cyA9IGdldF9keW5hbWljX2RhdGEgKGZpbGUsIG5idWNrZXRzKTsKICAg
ICAgY2hhaW5zID0gZ2V0X2R5bmFtaWNfZGF0YSAoZmlsZSwgbmNoYWlucyk7CgogICAgICBpZiAo
YnVja2V0cyA9PSAoKHZvaWQgKikwKSB8fCBjaGFpbnMgPT0gKCh2b2lkICopMCkpCiAgICAgICAg
cmV0dXJuIDA7CiAgICB9CgogIGlmIChkb19zeW1zCiAgICAgICYmIGR5bmFtaWNfaW5mb1s0XSAm
JiBkb191c2luZ19keW5hbWljICYmIGR5bmFtaWNfc3RyaW5ncyAhPSAoKHZvaWQgKikwKSkKICAg
IHsKICAgICAgaW50IGhuOwogICAgICBpbnQgc2k7CgogICAgICBwcmludGYgKCgiXG5TeW1ib2wg
dGFibGUgZm9yIGltYWdlOlxuIikpOwogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHBy
aW50ZiAoKCIgIE51bSBCdWM6ICAgIFZhbHVlICBTaXplICAgVHlwZSAgIEJpbmQgVmlzICAgICAg
TmR4IE5hbWVcbiIpKTsKICAgICAgZWxzZQogICAgICAgIHByaW50ZiAoKCIgIE51bSBCdWM6ICAg
IFZhbHVlICAgICAgICAgIFNpemUgICBUeXBlICAgQmluZCBWaXMgICAgICBOZHggTmFtZVxuIikp
OwoKICAgICAgZm9yIChobiA9IDA7IGhuIDwgbmJ1Y2tldHM7IGhuKyspCiAgICAgICAgewogICAg
ICAgICAgaWYgKCEgYnVja2V0c1tobl0pCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAg
IGZvciAoc2kgPSBidWNrZXRzW2huXTsgc2kgPCBuY2hhaW5zICYmIHNpID4gMDsgc2kgPSBjaGFp
bnNbc2ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1N5bSAqcHN5
bTsKCiAgICAgICAgICAgICAgcHN5bSA9IGR5bmFtaWNfc3ltYm9scyArIHNpOwoKICAgICAgICAg
ICAgICBwcmludGYgKCIgICUzZCAlM2Q6ICIsIHNpLCBobik7CiAgICAgICAgICAgICAgcHJpbnRf
dm1hIChwc3ltLT5zdF92YWx1ZSwgTE9OR19IRVgpOwogICAgICAgICAgICAgIHB1dGNoYXIgKCcg
JyApOwogICAgICAgICAgICAgIHByaW50X3ZtYSAocHN5bS0+c3Rfc2l6ZSwgREVDXzUpOwoKICAg
ICAgICAgICAgICBwcmludGYgKCIgICU2cyIsIGdldF9zeW1ib2xfdHlwZSAoKChwc3ltLT5zdF9p
bmZvKSAmIDB4RikpKTsKICAgICAgICAgICAgICBwcmludGYgKCIgJTZzIiwgZ2V0X3N5bWJvbF9i
aW5kaW5nICgoKCh1bnNpZ25lZCBpbnQpKHBzeW0tPnN0X2luZm8pKSA+PiA0KSkpOwogICAgICAg
ICAgICAgIHByaW50ZiAoIiAlM3MiLCBnZXRfc3ltYm9sX3Zpc2liaWxpdHkgKCgocHN5bS0+c3Rf
b3RoZXIpICYgMHgzKSkpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAlMy4zcyAiLCBnZXRfc3lt
Ym9sX2luZGV4X3R5cGUgKHBzeW0tPnN0X3NobmR4KSk7CiAgICAgICAgICAgICAgcHJpbnRfc3lt
Ym9sICgyNSwgZHluYW1pY19zdHJpbmdzICsgcHN5bS0+c3RfbmFtZSk7CiAgICAgICAgICAgICAg
cHV0Y2hhciAoJ1xuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgZWxzZSBpZiAo
ZG9fc3ltcyAmJiAhZG9fdXNpbmdfZHluYW1pYykKICAgIHsKICAgICAgdW5zaWduZWQgaW50IGk7
CgogICAgICBmb3IgKGkgPSAwLCBzZWN0aW9uID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgICAg
IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgaSsrLCBzZWN0aW9uKyspCiAgICAg
ICAgewogICAgICAgICAgdW5zaWduZWQgaW50IHNpOwogICAgICAgICAgY2hhciAqc3RydGFiOwog
ICAgICAgICAgRWxmX0ludGVybmFsX1N5bSAqc3ltdGFiOwogICAgICAgICAgRWxmX0ludGVybmFs
X1N5bSAqcHN5bTsKCgogICAgICAgICAgaWYgKCBzZWN0aW9uLT5zaF90eXBlICE9IDIKICAgICAg
ICAgICAgICAmJiBzZWN0aW9uLT5zaF90eXBlICE9IDExKQogICAgICAgICAgICBjb250aW51ZTsK
CiAgICAgICAgICBwcmludGYgKCgiXG5TeW1ib2wgdGFibGUgJyVzJyBjb250YWlucyAlbHUgZW50
cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpLAogICAgICAg
ICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHNlY3Rpb24tPnNoX3NpemUgLyBzZWN0aW9uLT5z
aF9lbnRzaXplKSk7CiAgICAgICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgICAgICBwcmlu
dGYgKCgiICAgTnVtOiAgICBWYWx1ZSAgU2l6ZSBUeXBlICAgIEJpbmQgICBWaXMgICAgICBOZHgg
TmFtZVxuIikpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBwcmludGYgKCgiICAgTnVtOiAg
ICBWYWx1ZSAgICAgICAgICBTaXplIFR5cGUgICAgQmluZCAgIFZpcyAgICAgIE5keCBOYW1lXG4i
KSk7CgogICAgICAgICAgc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJpdF9lbGZfc3lt
Ym9scyAoZmlsZSwgc2VjdGlvbikgOiBnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIHNlY3Rp
b24pKTsKICAgICAgICAgIGlmIChzeW10YWIgPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIGNv
bnRpbnVlOwoKICAgICAgICAgIGlmIChzZWN0aW9uLT5zaF9saW5rID09IGVsZl9oZWFkZXIuZV9z
aHN0cm5keCkKICAgICAgICAgICAgc3RydGFiID0gc3RyaW5nX3RhYmxlOwogICAgICAgICAgZWxz
ZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN0cmluZ19z
ZWM7CgogICAgICAgICAgICAgIHN0cmluZ19zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0
aW9uLT5zaF9saW5rKSA8IDB4RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAx
IC0gMHhGRjAwKSkpKTsKCiAgICAgICAgICAgICAgc3RydGFiID0gKGNoYXIgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBzdHJpbmdfc2VjLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19zZWMtPnNoX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgic3RyaW5nIHRhYmxlIikpOwogICAg
ICAgICAgICB9CgogICAgICAgICAgZm9yIChzaSA9IDAsIHBzeW0gPSBzeW10YWI7CiAgICAgICAg
ICAgICAgIHNpIDwgc2VjdGlvbi0+c2hfc2l6ZSAvIHNlY3Rpb24tPnNoX2VudHNpemU7CiAgICAg
ICAgICAgICAgIHNpKyssIHBzeW0rKykKICAgICAgICAgICAgewogICAgICAgICAgICAgIHByaW50
ZiAoIiU2ZDogIiwgc2kpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAocHN5bS0+c3RfdmFsdWUs
IExPTkdfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIHBy
aW50X3ZtYSAocHN5bS0+c3Rfc2l6ZSwgREVDXzUpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAl
LTdzIiwgZ2V0X3N5bWJvbF90eXBlICgoKHBzeW0tPnN0X2luZm8pICYgMHhGKSkpOwogICAgICAg
ICAgICAgIHByaW50ZiAoIiAlLTZzIiwgZ2V0X3N5bWJvbF9iaW5kaW5nICgoKCh1bnNpZ25lZCBp
bnQpKHBzeW0tPnN0X2luZm8pKSA+PiA0KSkpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAlLTNz
IiwgZ2V0X3N5bWJvbF92aXNpYmlsaXR5ICgoKHBzeW0tPnN0X290aGVyKSAmIDB4MykpKTsKICAg
ICAgICAgICAgICBwcmludGYgKCIgJTRzICIsIGdldF9zeW1ib2xfaW5kZXhfdHlwZSAocHN5bS0+
c3Rfc2huZHgpKTsKICAgICAgICAgICAgICBwcmludF9zeW1ib2wgKDI1LCBzdHJ0YWIgKyBwc3lt
LT5zdF9uYW1lKTsKCiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24tPnNoX3R5cGUgPT0gMTEgJiYK
ICAgICAgICAgICAgICAgICAgdmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZjAp
KV0gIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBkYXRhWzJdOwogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXJzX2RhdGE7CiAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogICAgICAgICAgICAgICAgICBp
bnQgaXNfbm9iaXRzOwogICAgICAgICAgICAgICAgICBpbnQgY2hlY2tfZGVmOwoKICAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gdmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZjAp
KV0KICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRyOwoKICAgICAgICAgICAgICAgICAgZ2V0
X2RhdGEgKCZkYXRhLCBmaWxlLCBvZmZzZXQgKyBzaSAqIHNpemVvZiAodmVyc19kYXRhKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZGF0YSksICgidmVyc2lvbiBkYXRhIikp
OwoKICAgICAgICAgICAgICAgICAgdmVyc19kYXRhID0gYnl0ZV9nZXQgKGRhdGEsIDIpOwoKICAg
ICAgICAgICAgICAgICAgaXNfbm9iaXRzID0gKChzZWN0aW9uX2hlYWRlcnMgKyAoKHBzeW0tPnN0
X3NobmR4KSA8IDB4RkYwMCA/IChwc3ltLT5zdF9zaG5keCkgOiAoKHBzeW0tPnN0X3NobmR4KSA8
PSAweEZGRkYgPyAwIDogKHBzeW0tPnN0X3NobmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkp
KS0+c2hfdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gOCk7CgogICAgICAg
ICAgICAgICAgICBjaGVja19kZWYgPSAocHN5bS0+c3Rfc2huZHggIT0gMCk7CgogICAgICAgICAg
ICAgICAgICBpZiAoKHZlcnNfZGF0YSAmIDB4ODAwMCkgfHwgdmVyc19kYXRhID4gMSkKICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbl9pbmZvWygw
eDZmZmZmZmZmIC0gKDB4NmZmZmZmZmUpKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo
aXNfbm9iaXRzIHx8ICEgY2hlY2tfZGVmKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuZWVkIGV2bjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmVlZCBpdm47CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgRWxmX0ludGVybmFsX1Zlcm5hdXggaXZuYTsKCgogICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldCA9ICh2ZXJzaW9uX2luZm9bKDB4NmZmZmZmZmYgLSAoMHg2ZmZmZmZm
ZSkpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRyKTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bmFfb2ZmOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCZldm4sIGZpbGUsIG9mZnNldCwg
c2l6ZW9mIChldm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2
ZXJzaW9uIG5lZWQiKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm4udm5fYXV4
ID0gYnl0ZV9nZXQgKGV2bi52bl9hdXgsIHNpemVvZiAoZXZuLnZuX2F1eCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpdm4udm5fbmV4dCA9IGJ5dGVfZ2V0IChldm4udm5fbmV4dCwg
c2l6ZW9mIChldm4udm5fbmV4dCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5h
X29mZiA9IG9mZnNldCArIGl2bi52bl9hdXg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4IGV2bmE7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCZldm5hLCBmaWxlLCB2bmFfb2ZmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZXZuYSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9uIG5lZWQg
YXV4ICgzKSIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm5hLnZuYV9v
dGhlciA9IGJ5dGVfZ2V0IChldm5hLnZuYV9vdGhlciwgc2l6ZW9mIChldm5hLnZuYV9vdGhlcikp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZuYS52bmFfbmV4dCA9IGJ5dGVf
Z2V0IChldm5hLnZuYV9uZXh0LCBzaXplb2YgKGV2bmEudm5hX25leHQpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl2bmEudm5hX25hbWUgPSBieXRlX2dldCAoZXZuYS52bmFf
bmFtZSwgc2l6ZW9mIChldm5hLnZuYV9uYW1lKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm5hX29mZiArPSBpdm5hLnZuYV9uZXh0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl2bmEudm5h
X290aGVyICE9IHZlcnNfZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgaXZuYS52bmFfbmV4dCAhPSAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpdm5hLnZuYV9vdGhlciA9PSB2ZXJzX2RhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gaXZu
LnZuX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGl2bi52bl9uZXh0ICE9IDApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXZuYS52bmFfb3RoZXIgPT0gdmVyc19kYXRhKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJAJXMgKCVk
KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydGFiICsgaXZuYS52
bmFfbmFtZSwgaXZuYS52bmFfb3RoZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja19kZWYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCEgaXNfbm9iaXRzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IgKCgiYmFkIGR5bmFtaWMgc3ltYm9sIikpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tf
ZGVmKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcnNfZGF0YSAhPSAweDgwMDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
dmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmMpKV0pCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9JbnRlcm5h
bF9WZXJkZWYgaXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxf
VmVyZGF1eCBpdmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0ZXJuYWxf
VmVyZGF1eCBldmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IG9mZnNldDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKHZlcnNpb25faW5mb1soMHg2ZmZmZmZmZiAtICgweDZm
ZmZmZmZjKSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBsb2FkYWRkcik7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5h
bF9WZXJkZWYgZXZkOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRh
ICgmZXZkLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gZGVmIikpOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl2ZC52ZF9uZHggPSBieXRlX2dldCAoZXZkLnZkX25keCwgc2l6
ZW9mIChldmQudmRfbmR4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdmQu
dmRfYXV4ID0gYnl0ZV9nZXQgKGV2ZC52ZF9hdXgsIHNpemVvZiAoZXZkLnZkX2F1eCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZkLnZkX25leHQgPSBieXRlX2dldCAoZXZk
LnZkX25leHQsIHNpemVvZiAoZXZkLnZkX25leHQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQgKz0gaXZkLnZkX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXZkLnZkX25k
eCAhPSAodmVyc19kYXRhICYgMHg3ZmZmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgaXZkLnZkX25leHQgIT0gMCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQgLT0gaXZkLnZkX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCArPSBpdmQudmRfYXV4OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Rh
dGEgKCZldmRhLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkYSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gZGVmIGF1eCIpKTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl2ZGEudmRhX25hbWUgPSBieXRlX2dldCAoZXZkYS52ZGFfbmFt
ZSwgc2l6ZW9mIChldmRhLnZkYV9uYW1lKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHN5bS0+c3RfbmFtZSAhPSBpdmRhLnZkYV9uYW1lKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoKHZlcnNfZGF0YSAmIDB4ODAwMCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gIkAlcyIgOiAiQEAlcyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0YWIgKyBpdmRhLnZkYV9uYW1lKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgcHV0Y2hhciAo
J1xuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBmcmVlIChzeW10YWIpOwogICAgICAgICAg
aWYgKHN0cnRhYiAhPSBzdHJpbmdfdGFibGUpCiAgICAgICAgICAgIGZyZWUgKHN0cnRhYik7CiAg
ICAgICAgfQogICAgfQogIGVsc2UgaWYgKGRvX3N5bXMpCiAgICBwcmludGYKICAgICAgKCgiXG5E
eW5hbWljIHN5bWJvbCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGZvciBkaXNwbGF5aW5n
IHN5bWJvbHMuXG4iKSk7CgogIGlmIChkb19oaXN0b2dyYW0gJiYgYnVja2V0cyAhPSAoKHZvaWQg
KikwKSkKICAgIHsKICAgICAgaW50ICpsZW5ndGhzOwogICAgICBpbnQgKmNvdW50czsKICAgICAg
aW50IGhuOwogICAgICBpbnQgc2k7CiAgICAgIGludCBtYXhsZW5ndGggPSAwOwogICAgICBpbnQg
bnplcm9fY291bnRzID0gMDsKICAgICAgaW50IG5zeW1zID0gMDsKCiAgICAgIHByaW50ZiAoKCJc
bkhpc3RvZ3JhbSBmb3IgYnVja2V0IGxpc3QgbGVuZ3RoICh0b3RhbCBvZiAlZCBidWNrZXRzKTpc
biIpLAogICAgICAgICAgICAgIG5idWNrZXRzKTsKICAgICAgcHJpbnRmICgoIiBMZW5ndGggIE51
bWJlciAgICAgJSUgb2YgdG90YWwgIENvdmVyYWdlXG4iKSk7CgogICAgICBsZW5ndGhzID0gKGlu
dCAqKSBjYWxsb2MgKG5idWNrZXRzLCBzaXplb2YgKGludCkpOwogICAgICBpZiAobGVuZ3RocyA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
IikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICBmb3IgKGhuID0gMDsgaG4g
PCBuYnVja2V0czsgKytobikKICAgICAgICB7CiAgICAgICAgICBpZiAoISBidWNrZXRzW2huXSkK
ICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgZm9yIChzaSA9IGJ1Y2tldHNbaG5dOyBz
aSA+IDAgJiYgc2kgPCBuY2hhaW5zOyBzaSA9IGNoYWluc1tzaV0pCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICArK25zeW1zOwogICAgICAgICAgICAgIGlmIChtYXhsZW5ndGggPCArK2xlbmd0
aHNbaG5dKQogICAgICAgICAgICAgICAgKyttYXhsZW5ndGg7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICBjb3VudHMgPSAoaW50ICopIGNhbGxvYyAobWF4bGVuZ3RoICsgMSwgc2l6ZW9m
IChpbnQpKTsKICAgICAgaWYgKGNvdW50cyA9PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAg
ICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5IikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgfQoKICAgICAgZm9yIChobiA9IDA7IGhuIDwgbmJ1Y2tldHM7ICsraG4pCiAgICAgICAgKytj
b3VudHNbbGVuZ3Roc1tobl1dOwoKICAgICAgaWYgKG5idWNrZXRzID4gMCkKICAgICAgICB7CiAg
ICAgICAgICBwcmludGYgKCIgICAgICAwICAlLTEwZCAoJTUuMWYlJSlcbiIsCiAgICAgICAgICAg
ICAgICAgIGNvdW50c1swXSwgKGNvdW50c1swXSAqIDEwMC4wKSAvIG5idWNrZXRzKTsKICAgICAg
ICAgIGZvciAoc2kgPSAxOyBzaSA8PSBtYXhsZW5ndGg7ICsrc2kpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICBuemVyb19jb3VudHMgKz0gY291bnRzW3NpXSAqIHNpOwogICAgICAgICAgICAg
IHByaW50ZiAoIiU3ZCAgJS0xMGQgKCU1LjFmJSUpICAgICU1LjFmJSVcbiIsCiAgICAgICAgICAg
ICAgICAgICAgICBzaSwgY291bnRzW3NpXSwgKGNvdW50c1tzaV0gKiAxMDAuMCkgLyBuYnVja2V0
cywKICAgICAgICAgICAgICAgICAgICAgIChuemVyb19jb3VudHMgKiAxMDAuMCkgLyBuc3ltcyk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBmcmVlIChjb3VudHMpOwogICAgICBmcmVl
IChsZW5ndGhzKTsKICAgIH0KCiAgaWYgKGJ1Y2tldHMgIT0gKCh2b2lkICopMCkpCiAgICB7CiAg
ICAgIGZyZWUgKGJ1Y2tldHMpOwogICAgICBmcmVlIChjaGFpbnMpOwogICAgfQoKICByZXR1cm4g
MTsKfQoKc3RhdGljIGludApwcm9jZXNzX3N5bWluZm8gKGZpbGUpCiAgICAgRklMRSAqZmlsZSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgdW5zaWduZWQgaW50IGk7CgogIGlmIChk
eW5hbWljX3N5bWluZm8gPT0gKCh2b2lkICopMCkKICAgICAgfHwgIWRvX2R5bmFtaWMpCgogICAg
cmV0dXJuIDE7CgoKICBpZiAoZHluYW1pY19zeW1ib2xzID09ICgodm9pZCAqKTApIHx8IGR5bmFt
aWNfc3RyaW5ncyA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAwOwoKICBpZiAoZHluYW1pY19h
ZGRyKQogICAgcHJpbnRmICgoIlxuRHluYW1pYyBpbmZvIHNlZ21lbnQgYXQgb2Zmc2V0IDB4JWx4
IGNvbnRhaW5zICVkIGVudHJpZXM6XG4iKSwKICAgICAgICAgICAgZHluYW1pY19zeW1pbmZvX29m
ZnNldCwgZHluYW1pY19zeW1pbmZvX25lbnQpOwoKICBwcmludGYgKCgiIE51bTogTmFtZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJvdW5kVG8gICAgIEZsYWdzXG4iKSk7CiAgZm9yIChpID0g
MDsgaSA8IGR5bmFtaWNfc3ltaW5mb19uZW50OyArK2kpCiAgICB7CiAgICAgIHVuc2lnbmVkIHNo
b3J0IGludCBmbGFncyA9IGR5bmFtaWNfc3ltaW5mb1tpXS5zaV9mbGFnczsKCiAgICAgIHByaW50
ZiAoIiU0ZDogIiwgaSk7CiAgICAgIHByaW50X3N5bWJvbCAoMzAsIGR5bmFtaWNfc3RyaW5ncyAr
IGR5bmFtaWNfc3ltYm9sc1tpXS5zdF9uYW1lKTsKICAgICAgcHV0Y2hhciAoJyAnKTsKCiAgICAg
IHN3aXRjaCAoZHluYW1pY19zeW1pbmZvW2ldLnNpX2JvdW5kdG8pCiAgICAgICAgewogICAgICAg
IGNhc2UgMHhmZmZmOgogICAgICAgICAgZnB1dHMgKCJTRUxGICAgICAgICIsIHN0ZG91dCk7CiAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDB4ZmZmZToKICAgICAgICAgIGZwdXRzICgiUEFS
RU5UICAgICAiLCBzdGRvdXQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgIGlmIChkeW5hbWljX3N5bWluZm9baV0uc2lfYm91bmR0byA+IDAKICAgICAgICAgICAg
ICAmJiBkeW5hbWljX3N5bWluZm9baV0uc2lfYm91bmR0byA8IGR5bmFtaWNfc2l6ZSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIHByaW50X3N5bWJvbCAoMTAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkeW5hbWljX3N0cmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg
KGR5bmFtaWNfc2VnbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2R5bmFtaWNf
c3ltaW5mb1tpXS5zaV9ib3VuZHRvXS5kX3VuLmRfdmFsKSk7CiAgICAgICAgICAgICAgcHV0Y2hh
ciAoJyAnICk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRm
ICgiJS0xMGQgIiwgZHluYW1pY19zeW1pbmZvW2ldLnNpX2JvdW5kdG8pOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQoKICAgICAgaWYgKGZsYWdzICYgMHgwMDAxKQogICAgICAgIHByaW50ZiAo
IiBESVJFQ1QiKTsKICAgICAgaWYgKGZsYWdzICYgMHgwMDAyKQogICAgICAgIHByaW50ZiAoIiBQ
QVNTVEhSVSIpOwogICAgICBpZiAoZmxhZ3MgJiAweDAwMDQpCiAgICAgICAgcHJpbnRmICgiIENP
UFkiKTsKICAgICAgaWYgKGZsYWdzICYgMHgwMDA4KQogICAgICAgIHByaW50ZiAoIiBMQVpZTE9B
RCIpOwoKICAgICAgcHV0cyAoIiIpOwogICAgfQoKICByZXR1cm4gMTsKfQojIDYxOTQgInJlYWRl
bGYuYyIKc3RhdGljIGludApkdW1wX3NlY3Rpb24gKHNlY3Rpb24sIGZpbGUpCiAgICAgRWxmX0lu
dGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgRklMRSAqZmlsZTsKewogIGJmZF9zaXplX3R5cGUg
Ynl0ZXM7CiAgYmZkX3ZtYSBhZGRyOwogIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgdW5zaWduZWQg
Y2hhciAqc3RhcnQ7CgogIGJ5dGVzID0gc2VjdGlvbi0+c2hfc2l6ZTsKCiAgaWYgKGJ5dGVzID09
IDApCiAgICB7CiAgICAgIHByaW50ZiAoKCJcblNlY3Rpb24gJyVzJyBoYXMgbm8gZGF0YSB0byBk
dW1wLlxuIiksCiAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CiAgICAgIHJldHVy
biAwOwogICAgfQogIGVsc2UKICAgIHByaW50ZiAoKCJcbkhleCBkdW1wIG9mIHNlY3Rpb24gJyVz
JzpcbiIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24p
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsKCiAgYWRkciA9IHNlY3Rpb24tPnNoX2FkZHI7
CgogIHN0YXJ0ID0gKHVuc2lnbmVkIGNoYXIgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxl
LCBzZWN0aW9uLT5zaF9vZmZzZXQsIGJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgic2VjdGlvbiBkYXRhIikpOwogIGlmICghc3RhcnQpCiAgICByZXR1cm4gMDsK
CiAgZGF0YSA9IHN0YXJ0OwoKICB3aGlsZSAoYnl0ZXMpCiAgICB7CiAgICAgIGludCBqOwogICAg
ICBpbnQgazsKICAgICAgaW50IGxieXRlczsKCiAgICAgIGxieXRlcyA9IChieXRlcyA+IDE2ID8g
MTYgOiBieXRlcyk7CgogICAgICBwcmludGYgKCIgIDB4JTguOGx4ICIsICh1bnNpZ25lZCBsb25n
KSBhZGRyKTsKCiAgICAgIHN3aXRjaCAoZWxmX2hlYWRlci5lX2lkZW50WzVdKQogICAgICAgIHsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgIGNhc2UgMToKICAgICAgICAgIGZvciAoaiA9IDE1OyBq
ID49IDA7IGogLS0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoaiA8IGxieXRlcykK
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiUyLjJ4IiwgZGF0YVtqXSk7CiAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICAiKTsKCiAgICAgICAgICAgICAgaWYgKCEo
aiAmIDB4MykpCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIik7CiAgICAgICAgICAgIH0KICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwg
MTY7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmIChqIDwgbGJ5dGVzKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgiJTIuMngiLCBkYXRhW2pdKTsKICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBwcmludGYgKCIgICIpOwoKICAgICAgICAgICAgICBpZiAoKGogJiAz
KSA9PSAzKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICIpOwogICAgICAgICAgICB9CiAgICAg
ICAgICBicmVhazsKICAgICAgICB9CgogICAgICBmb3IgKGogPSAwOyBqIDwgbGJ5dGVzOyBqKysp
CiAgICAgICAgewogICAgICAgICAgayA9IGRhdGFbal07CiAgICAgICAgICBpZiAoayA+PSAnICcg
JiYgayA8IDB4ODApCiAgICAgICAgICAgIHByaW50ZiAoIiVjIiwgayk7CiAgICAgICAgICBlbHNl
CiAgICAgICAgICAgIHByaW50ZiAoIi4iKTsKICAgICAgICB9CgogICAgICBwdXRjaGFyICgnXG4n
KTsKCiAgICAgIGRhdGEgKz0gbGJ5dGVzOwogICAgICBhZGRyICs9IGxieXRlczsKICAgICAgYnl0
ZXMgLT0gbGJ5dGVzOwogICAgfQoKICBmcmVlIChzdGFydCk7CgogIHJldHVybiAxOwp9CgoKc3Rh
dGljIHVuc2lnbmVkIGxvbmcgaW50CnJlYWRfbGViMTI4IChkYXRhLCBsZW5ndGhfcmV0dXJuLCBz
aWduKQogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgaW50ICpsZW5ndGhfcmV0dXJuOwog
ICAgIGludCBzaWduOwp7CiAgdW5zaWduZWQgbG9uZyBpbnQgcmVzdWx0ID0gMDsKICB1bnNpZ25l
ZCBpbnQgbnVtX3JlYWQgPSAwOwogIGludCBzaGlmdCA9IDA7CiAgdW5zaWduZWQgY2hhciBieXRl
OwoKICBkbwogICAgewogICAgICBieXRlID0gKmRhdGErKzsKICAgICAgbnVtX3JlYWQrKzsKCiAg
ICAgIHJlc3VsdCB8PSAoYnl0ZSAmIDB4N2YpIDw8IHNoaWZ0OwoKICAgICAgc2hpZnQgKz0gNzsK
CiAgICB9CiAgd2hpbGUgKGJ5dGUgJiAweDgwKTsKCiAgaWYgKGxlbmd0aF9yZXR1cm4gIT0gKCh2
b2lkICopMCkpCiAgICAqbGVuZ3RoX3JldHVybiA9IG51bV9yZWFkOwoKICBpZiAoc2lnbiAmJiAo
c2hpZnQgPCAzMikgJiYgKGJ5dGUgJiAweDQwKSkKICAgIHJlc3VsdCB8PSAtMSA8PCBzaGlmdDsK
CiAgcmV0dXJuIHJlc3VsdDsKfQoKdHlwZWRlZiBzdHJ1Y3QgU3RhdGVfTWFjaGluZV9SZWdpc3Rl
cnMKewogIHVuc2lnbmVkIGxvbmcgYWRkcmVzczsKICB1bnNpZ25lZCBpbnQgZmlsZTsKICB1bnNp
Z25lZCBpbnQgbGluZTsKICB1bnNpZ25lZCBpbnQgY29sdW1uOwogIGludCBpc19zdG10OwogIGlu
dCBiYXNpY19ibG9jazsKICBpbnQgZW5kX3NlcXVlbmNlOwoKCiAgdW5zaWduZWQgaW50IGxhc3Rf
ZmlsZV9lbnRyeTsKfSBTTVI7CgpzdGF0aWMgU01SIHN0YXRlX21hY2hpbmVfcmVnczsKCnN0YXRp
YyB2b2lkCnJlc2V0X3N0YXRlX21hY2hpbmUgKGlzX3N0bXQpCiAgICAgaW50IGlzX3N0bXQ7CnsK
ICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyA9IDA7CiAgc3RhdGVfbWFjaGluZV9yZWdzLmZp
bGUgPSAxOwogIHN0YXRlX21hY2hpbmVfcmVncy5saW5lID0gMTsKICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuY29sdW1uID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3MuaXNfc3RtdCA9IGlzX3N0bXQ7CiAg
c3RhdGVfbWFjaGluZV9yZWdzLmJhc2ljX2Jsb2NrID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3Mu
ZW5kX3NlcXVlbmNlID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlX2VudHJ5ID0g
MDsKfQoKCgpzdGF0aWMgaW50CnByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCAoZGF0YSwgaXNfc3Rt
dCwgcG9pbnRlcl9zaXplKQogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgaW50IGlzX3N0
bXQ7CiAgICAgaW50IHBvaW50ZXJfc2l6ZTsKewogIHVuc2lnbmVkIGNoYXIgb3BfY29kZTsKICBp
bnQgYnl0ZXNfcmVhZDsKICB1bnNpZ25lZCBpbnQgbGVuOwogIHVuc2lnbmVkIGNoYXIgKm5hbWU7
CiAgdW5zaWduZWQgbG9uZyBhZHI7CgogIGxlbiA9IHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVz
X3JlYWQsIDApOwogIGRhdGEgKz0gYnl0ZXNfcmVhZDsKCiAgaWYgKGxlbiA9PSAwKQogICAgewog
ICAgICB3YXJuICgoImJhZGx5IGZvcm1lZCBleHRlbmRlZCBsaW5lIG9wIGVuY291bnRlcmVkIVxu
IikpOwogICAgICByZXR1cm4gYnl0ZXNfcmVhZDsKICAgIH0KCiAgbGVuICs9IGJ5dGVzX3JlYWQ7
CiAgb3BfY29kZSA9ICpkYXRhKys7CgogIHByaW50ZiAoKCIgIEV4dGVuZGVkIG9wY29kZSAlZDog
IiksIG9wX2NvZGUpOwoKICBzd2l0Y2ggKG9wX2NvZGUpCiAgICB7CiAgICBjYXNlIERXX0xORV9l
bmRfc2VxdWVuY2U6CiAgICAgIHByaW50ZiAoKCJFbmQgb2YgU2VxdWVuY2VcblxuIikpOwogICAg
ICByZXNldF9zdGF0ZV9tYWNoaW5lIChpc19zdG10KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBE
V19MTkVfc2V0X2FkZHJlc3M6CiAgICAgIGFkciA9IGJ5dGVfZ2V0IChkYXRhLCBwb2ludGVyX3Np
emUpOwogICAgICBwcmludGYgKCgic2V0IEFkZHJlc3MgdG8gMHglbHhcbiIpLCBhZHIpOwogICAg
ICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyA9IGFkcjsKICAgICAgYnJlYWs7CgogICAgY2Fz
ZSBEV19MTkVfZGVmaW5lX2ZpbGU6CiAgICAgIHByaW50ZiAoKCIgIGRlZmluZSBuZXcgRmlsZSBU
YWJsZSBlbnRyeVxuIikpOwogICAgICBwcmludGYgKCgiICBFbnRyeVx0RGlyXHRUaW1lXHRTaXpl
XHROYW1lXG4iKSk7CgogICAgICBwcmludGYgKCgiICAgJWRcdCIpLCArK3N0YXRlX21hY2hpbmVf
cmVncy5sYXN0X2ZpbGVfZW50cnkpOwogICAgICBuYW1lID0gZGF0YTsKICAgICAgZGF0YSArPSBz
dHJsZW4gKChjaGFyICopIGRhdGEpICsgMTsKICAgICAgcHJpbnRmICgoIiVsdVx0IiksIHJlYWRf
bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApKTsKICAgICAgZGF0YSArPSBieXRlc19yZWFk
OwogICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVh
ZCwgMCkpOwogICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgIHByaW50ZiAoKCIlbHVcdCIp
LCByZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKSk7CiAgICAgIHByaW50ZiAoKCIl
c1xuXG4iKSwgbmFtZSk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHByaW50ZiAo
KCJVTktOT1dOOiBsZW5ndGggJWRcbiIpLCBsZW4gLSBieXRlc19yZWFkKTsKICAgICAgYnJlYWs7
CiAgICB9CgogIHJldHVybiBsZW47Cn0KCgoKCnN0YXRpYyBpbnQgZGVidWdfbGluZV9wb2ludGVy
X3NpemUgPSA0OwoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX2xpbmVzIChzZWN0aW9uLCBzdGFy
dCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBj
aGFyICogc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgRFdBUkYyX0V4dGVybmFsX0xpbmVJbmZvICpleHRlcm5hbDsKICBEV0FSRjJfSW50ZXJu
YWxfTGluZUluZm8gaW5mbzsKICB1bnNpZ25lZCBjaGFyICpzdGFuZGFyZF9vcGNvZGVzOwogIHVu
c2lnbmVkIGNoYXIgKmRhdGEgPSBzdGFydDsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCAr
IHNlY3Rpb24tPnNoX3NpemU7CiAgdW5zaWduZWQgY2hhciAqZW5kX29mX3NlcXVlbmNlOwogIGlu
dCBpOwoKICBwcmludGYgKCgiXG5EdW1wIG9mIGRlYnVnIGNvbnRlbnRzIG9mIHNlY3Rpb24gJXM6
XG5cbiIpLAogICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CgogIHdoaWxlIChkYXRhIDwg
ZW5kKQogICAgewogICAgICBleHRlcm5hbCA9IChEV0FSRjJfRXh0ZXJuYWxfTGluZUluZm8gKikg
ZGF0YTsKCgogICAgICBpbmZvLmxpX2xlbmd0aCA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bGlfbGVu
Z3RoLCBzaXplb2YgKGV4dGVybmFsLT5saV9sZW5ndGgpKTsKCiAgICAgIGlmIChpbmZvLmxpX2xl
bmd0aCA9PSAweGZmZmZmZmZmKQogICAgICAgIHsKICAgICAgICAgIHdhcm4gKCgiNjQtYml0IERX
QVJGIGxpbmUgaW5mbyBpcyBub3Qgc3VwcG9ydGVkIHlldC5cbiIpKTsKICAgICAgICAgIGJyZWFr
OwogICAgICAgIH0KCiAgICAgIGlmIChpbmZvLmxpX2xlbmd0aCArIHNpemVvZiAoZXh0ZXJuYWwt
PmxpX2xlbmd0aCkgPiBzZWN0aW9uLT5zaF9zaXplKQogICAgICAgIHsKICAgICAgICAgIHdhcm4K
ICAgICAgICAgICAgKCgiVGhlIGxpbmUgaW5mbyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQgLSB0aGUg
c2VjdGlvbiBpcyB0b28gc21hbGxcbiIpKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0K
CgogICAgICBpbmZvLmxpX3ZlcnNpb24gPSBieXRlX2dldCAoZXh0ZXJuYWwtPmxpX3ZlcnNpb24s
IHNpemVvZiAoZXh0ZXJuYWwtPmxpX3ZlcnNpb24pKTsKICAgICAgaWYgKGluZm8ubGlfdmVyc2lv
biAhPSAyKQogICAgICAgIHsKICAgICAgICAgIHdhcm4gKCgiT25seSBEV0FSRiB2ZXJzaW9uIDIg
bGluZSBpbmZvIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iKSk7CiAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICB9CgogICAgICBpbmZvLmxpX3Byb2xvZ3VlX2xlbmd0aCA9IGJ5dGVfZ2V0IChl
eHRlcm5hbC0+bGlfcHJvbG9ndWVfbGVuZ3RoLCBzaXplb2YgKGV4dGVybmFsLT5saV9wcm9sb2d1
ZV9sZW5ndGgpKTsKICAgICAgaW5mby5saV9taW5faW5zbl9sZW5ndGggPSBieXRlX2dldCAoZXh0
ZXJuYWwtPmxpX21pbl9pbnNuX2xlbmd0aCwgc2l6ZW9mIChleHRlcm5hbC0+bGlfbWluX2luc25f
bGVuZ3RoKSk7CiAgICAgIGluZm8ubGlfZGVmYXVsdF9pc19zdG10ID0gYnl0ZV9nZXQgKGV4dGVy
bmFsLT5saV9kZWZhdWx0X2lzX3N0bXQsIHNpemVvZiAoZXh0ZXJuYWwtPmxpX2RlZmF1bHRfaXNf
c3RtdCkpOwogICAgICBpbmZvLmxpX2xpbmVfYmFzZSA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bGlf
bGluZV9iYXNlLCBzaXplb2YgKGV4dGVybmFsLT5saV9saW5lX2Jhc2UpKTsKICAgICAgaW5mby5s
aV9saW5lX3JhbmdlID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5saV9saW5lX3JhbmdlLCBzaXplb2Yg
KGV4dGVybmFsLT5saV9saW5lX3JhbmdlKSk7CiAgICAgIGluZm8ubGlfb3Bjb2RlX2Jhc2UgPSBi
eXRlX2dldCAoZXh0ZXJuYWwtPmxpX29wY29kZV9iYXNlLCBzaXplb2YgKGV4dGVybmFsLT5saV9v
cGNvZGVfYmFzZSkpOwoKCiAgICAgIGluZm8ubGlfbGluZV9iYXNlIDw8PSAyNDsKICAgICAgaW5m
by5saV9saW5lX2Jhc2UgPj49IDI0OwoKICAgICAgcHJpbnRmICgoIiAgTGVuZ3RoOiAgICAgICAg
ICAgICAgICAgICAgICAlbGRcbiIpLCBpbmZvLmxpX2xlbmd0aCk7CiAgICAgIHByaW50ZiAoKCIg
IERXQVJGIFZlcnNpb246ICAgICAgICAgICAgICAgJWRcbiIpLCBpbmZvLmxpX3ZlcnNpb24pOwog
ICAgICBwcmludGYgKCgiICBQcm9sb2d1ZSBMZW5ndGg6ICAgICAgICAgICAgICVkXG4iKSwgaW5m
by5saV9wcm9sb2d1ZV9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICBNaW5pbXVtIEluc3RydWN0
aW9uIExlbmd0aDogICVkXG4iKSwgaW5mby5saV9taW5faW5zbl9sZW5ndGgpOwogICAgICBwcmlu
dGYgKCgiICBJbml0aWFsIHZhbHVlIG9mICdpc19zdG10JzogICVkXG4iKSwgaW5mby5saV9kZWZh
dWx0X2lzX3N0bXQpOwogICAgICBwcmludGYgKCgiICBMaW5lIEJhc2U6ICAgICAgICAgICAgICAg
ICAgICVkXG4iKSwgaW5mby5saV9saW5lX2Jhc2UpOwogICAgICBwcmludGYgKCgiICBMaW5lIFJh
bmdlOiAgICAgICAgICAgICAgICAgICVkXG4iKSwgaW5mby5saV9saW5lX3JhbmdlKTsKICAgICAg
cHJpbnRmICgoIiAgT3Bjb2RlIEJhc2U6ICAgICAgICAgICAgICAgICAlZFxuIiksIGluZm8ubGlf
b3Bjb2RlX2Jhc2UpOwoKICAgICAgZW5kX29mX3NlcXVlbmNlID0gZGF0YSArIGluZm8ubGlfbGVu
Z3RoICsgc2l6ZW9mIChleHRlcm5hbC0+bGlfbGVuZ3RoKTsKCiAgICAgIHJlc2V0X3N0YXRlX21h
Y2hpbmUgKGluZm8ubGlfZGVmYXVsdF9pc19zdG10KTsKCgogICAgICBzdGFuZGFyZF9vcGNvZGVz
ID0gZGF0YSArIHNpemVvZiAoKmV4dGVybmFsKTsKCiAgICAgIHByaW50ZiAoKCJcbiBPcGNvZGVz
OlxuIikpOwoKICAgICAgZm9yIChpID0gMTsgaSA8IGluZm8ubGlfb3Bjb2RlX2Jhc2U7IGkrKykK
ICAgICAgICBwcmludGYgKCgiICBPcGNvZGUgJWQgaGFzICVkIGFyZ3NcbiIpLCBpLCBzdGFuZGFy
ZF9vcGNvZGVzW2kgLSAxXSk7CgoKICAgICAgZGF0YSA9IHN0YW5kYXJkX29wY29kZXMgKyBpbmZv
LmxpX29wY29kZV9iYXNlIC0gMTsKCiAgICAgIGlmICgqZGF0YSA9PSAwKQogICAgICAgIHByaW50
ZiAoKCJcbiBUaGUgRGlyZWN0b3J5IFRhYmxlIGlzIGVtcHR5LlxuIikpOwogICAgICBlbHNlCiAg
ICAgICAgewogICAgICAgICAgcHJpbnRmICgoIlxuIFRoZSBEaXJlY3RvcnkgVGFibGU6XG4iKSk7
CgogICAgICAgICAgd2hpbGUgKCpkYXRhICE9IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICBwcmludGYgKCgiICAlc1xuIiksIGRhdGEpOwoKICAgICAgICAgICAgICBkYXRhICs9IHN0cmxl
biAoKGNoYXIgKikgZGF0YSkgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgIGRh
dGErKzsKCgogICAgICBpZiAoKmRhdGEgPT0gMCkKICAgICAgICBwcmludGYgKCgiXG4gVGhlIEZp
bGUgTmFtZSBUYWJsZSBpcyBlbXB0eS5cbiIpKTsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAg
ICAgIHByaW50ZiAoKCJcbiBUaGUgRmlsZSBOYW1lIFRhYmxlOlxuIikpOwogICAgICAgICAgcHJp
bnRmICgoIiAgRW50cnlcdERpclx0VGltZVx0U2l6ZVx0TmFtZVxuIikpOwoKICAgICAgICAgIHdo
aWxlICgqZGF0YSAhPSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqbmFtZTsKICAgICAgICAgICAgICBpbnQgYnl0ZXNfcmVhZDsKCiAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJWRcdCIpLCArK3N0YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVfZW50cnkpOwog
ICAgICAgICAgICAgIG5hbWUgPSBkYXRhOwoKICAgICAgICAgICAgICBkYXRhICs9IHN0cmxlbiAo
KGNoYXIgKikgZGF0YSkgKyAxOwoKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVh
ZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0g
Ynl0ZXNfcmVhZDsKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjgg
KGRhdGEsICYgYnl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjggKGRhdGEsICYg
Ynl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAg
ICAgICAgICBwcmludGYgKCgiJXNcbiIpLCBuYW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0K
CgogICAgICBkYXRhKys7CgoKICAgICAgcHJpbnRmICgoIlxuIExpbmUgTnVtYmVyIFN0YXRlbWVu
dHM6XG4iKSk7CgoKICAgICAgd2hpbGUgKGRhdGEgPCBlbmRfb2Zfc2VxdWVuY2UpCiAgICAgICAg
ewogICAgICAgICAgdW5zaWduZWQgY2hhciBvcF9jb2RlOwogICAgICAgICAgaW50IGFkdjsKICAg
ICAgICAgIGludCBieXRlc19yZWFkOwoKICAgICAgICAgIG9wX2NvZGUgPSAqZGF0YSsrOwoKICAg
ICAgICAgIGlmIChvcF9jb2RlID49IGluZm8ubGlfb3Bjb2RlX2Jhc2UpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBvcF9jb2RlIC09IGluZm8ubGlfb3Bjb2RlX2Jhc2U7CiAgICAgICAgICAg
ICAgYWR2ID0gKG9wX2NvZGUgLyBpbmZvLmxpX2xpbmVfcmFuZ2UpICogaW5mby5saV9taW5faW5z
bl9sZW5ndGg7CiAgICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MgKz0gYWR2
OwogICAgICAgICAgICAgIHByaW50ZiAoKCIgIFNwZWNpYWwgb3Bjb2RlICVkOiBhZHZhbmNlIEFk
ZHJlc3MgYnkgJWQgdG8gMHglbHgiKSwKICAgICAgICAgICAgICAgICAgICAgIG9wX2NvZGUsIGFk
diwgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAgICAgICAgIGFkdiA9IChvcF9j
b2RlICUgaW5mby5saV9saW5lX3JhbmdlKSArIGluZm8ubGlfbGluZV9iYXNlOwogICAgICAgICAg
ICAgIHN0YXRlX21hY2hpbmVfcmVncy5saW5lICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYg
KCgiIGFuZCBMaW5lIGJ5ICVkIHRvICVkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgIGFkdiwg
c3RhdGVfbWFjaGluZV9yZWdzLmxpbmUpOwogICAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHN3
aXRjaCAob3BfY29kZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIERXX0xOU19leHRl
bmRlZF9vcDoKICAgICAgICAgICAgICBkYXRhICs9IHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCAo
ZGF0YSwgaW5mby5saV9kZWZhdWx0X2lzX3N0bXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplKTsKICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgRFdfTE5TX2NvcHk6CiAgICAgICAgICAgICAg
cHJpbnRmICgoIiAgQ29weVxuIikpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAg
Y2FzZSBEV19MTlNfYWR2YW5jZV9wYzoKICAgICAgICAgICAgICBhZHYgPSBpbmZvLmxpX21pbl9p
bnNuX2xlbmd0aCAqIHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAg
ICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuYWRkcmVzcyArPSBhZHY7CiAgICAgICAgICAgICAgcHJpbnRmICgoIiAgQWR2YW5jZSBQQyBi
eSAlZCB0byAlbHhcbiIpLCBhZHYsCiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5l
X3JlZ3MuYWRkcmVzcyk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0xOU19hZHZhbmNlX2xpbmU6CiAgICAgICAgICAgICAgYWR2ID0gcmVhZF9sZWIxMjggKGRhdGEs
ICYgYnl0ZXNfcmVhZCwgMSk7CiAgICAgICAgICAgICAgZGF0YSArPSBieXRlc19yZWFkOwogICAg
ICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5saW5lICs9IGFkdjsKICAgICAgICAgICAgICBw
cmludGYgKCgiICBBZHZhbmNlIExpbmUgYnkgJWQgdG8gJWRcbiIpLCBhZHYsCiAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGluZSk7CiAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICBjYXNlIERXX0xOU19zZXRfZmlsZToKICAgICAgICAgICAgICBhZHYgPSBy
ZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgICAgICBkYXRhICs9
IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAgICAgcHJpbnRmICgoIiAgU2V0IEZpbGUgTmFtZSB0byBl
bnRyeSAlZCBpbiB0aGUgRmlsZSBOYW1lIFRhYmxlXG4iKSwKICAgICAgICAgICAgICAgICAgICAg
IGFkdik7CiAgICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmZpbGUgPSBhZHY7CiAgICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0xOU19zZXRfY29sdW1uOgogICAg
ICAgICAgICAgIGFkdiA9IHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAg
ICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgICBwcmludGYgKCgiICBT
ZXQgY29sdW1uIHRvICVkXG4iKSwgYWR2KTsKICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuY29sdW1uID0gYWR2OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19MTlNfbmVnYXRlX3N0bXQ6CiAgICAgICAgICAgICAgYWR2ID0gc3RhdGVfbWFjaGluZV9yZWdz
LmlzX3N0bXQ7CiAgICAgICAgICAgICAgYWR2ID0gISBhZHY7CiAgICAgICAgICAgICAgcHJpbnRm
ICgoIiAgU2V0IGlzX3N0bXQgdG8gJWRcbiIpLCBhZHYpOwogICAgICAgICAgICAgIHN0YXRlX21h
Y2hpbmVfcmVncy5pc19zdG10ID0gYWR2OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSBEV19MTlNfc2V0X2Jhc2ljX2Jsb2NrOgogICAgICAgICAgICAgIHByaW50ZiAoKCIg
IFNldCBiYXNpYyBibG9ja1xuIikpOwogICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5i
YXNpY19ibG9jayA9IDE7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0xOU19jb25zdF9hZGRfcGM6CiAgICAgICAgICAgICAgYWR2ID0gKCgoMjU1IC0gaW5mby5saV9v
cGNvZGVfYmFzZSkgLyBpbmZvLmxpX2xpbmVfcmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgICog
aW5mby5saV9taW5faW5zbl9sZW5ndGgpOwogICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVn
cy5hZGRyZXNzICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYgKCgiICBBZHZhbmNlIFBDIGJ5
IGNvbnN0YW50ICVkIHRvIDB4JWx4XG4iKSwgYWR2LAogICAgICAgICAgICAgICAgICAgICAgc3Rh
dGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSBEV19MTlNfZml4ZWRfYWR2YW5jZV9wYzoKICAgICAgICAgICAgICBhZHYgPSBieXRl
X2dldCAoZGF0YSwgMik7CiAgICAgICAgICAgICAgZGF0YSArPSAyOwogICAgICAgICAgICAgIHN0
YXRlX21hY2hpbmVfcmVncy5hZGRyZXNzICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYgKCgi
ICBBZHZhbmNlIFBDIGJ5IGZpeGVkIHNpemUgYW1vdW50ICVkIHRvIDB4JWx4XG4iKSwKICAgICAg
ICAgICAgICAgICAgICAgIGFkdiwgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19MTlNfc2V0X3Byb2xvZ3VlX2VuZDoK
ICAgICAgICAgICAgICBwcmludGYgKCgiICBTZXQgcHJvbG9ndWVfZW5kIHRvIHRydWVcbiIpKTsK
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgRFdfTE5TX3NldF9lcGlsb2d1
ZV9iZWdpbjoKICAgICAgICAgICAgICBwcmludGYgKCgiICBTZXQgZXBpbG9ndWVfYmVnaW4gdG8g
dHJ1ZVxuIikpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19MTlNf
c2V0X2lzYToKICAgICAgICAgICAgICBhZHYgPSByZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19y
ZWFkLCAwKTsKICAgICAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAgICAg
cHJpbnRmICgoIiAgU2V0IElTQSB0byAlZFxuIiksIGFkdik7CiAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHByaW50ZiAoKCIgIFVua25vd24g
b3Bjb2RlICVkIHdpdGggb3BlcmFuZHM6ICIpLCBvcF9jb2RlKTsKICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgICAgIGZvciAoaSA9IHN0YW5kYXJkX29w
Y29kZXNbb3BfY29kZSAtIDFdOyBpID4gMCA7IC0taSkKICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIjB4JWx4JXMiLCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5
dGVzX3JlYWQsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9PSAxID8gIiIgOiAi
LCAiKTsKICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgcHV0Y2hh
ciAoJ1xuJyk7CiAgICB9CgogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdf
cHVibmFtZXMgKHNlY3Rpb24sIHN0YXJ0LCBmaWxlKQogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpz
ZWN0aW9uOwogICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0OwogICAgIEZJTEUgKmZpbGUgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIERXQVJGMl9FeHRlcm5hbF9QdWJOYW1lcyAqZXh0
ZXJuYWw7CiAgRFdBUkYyX0ludGVybmFsX1B1Yk5hbWVzIHB1Ym5hbWVzOwogIHVuc2lnbmVkIGNo
YXIgKmVuZDsKCiAgZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwoKICBwcmludGYgKCgi
Q29udGVudHMgb2YgdGhlICVzIHNlY3Rpb246XG5cbiIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsK
CiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAgewogICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwog
ICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKCiAgICAgIGV4dGVybmFsID0gKERXQVJGMl9FeHRl
cm5hbF9QdWJOYW1lcyAqKSBzdGFydDsKCiAgICAgIHB1Ym5hbWVzLnBuX2xlbmd0aCA9IGJ5dGVf
Z2V0IChleHRlcm5hbC0+cG5fbGVuZ3RoLCBzaXplb2YgKGV4dGVybmFsLT5wbl9sZW5ndGgpKTsK
ICAgICAgcHVibmFtZXMucG5fdmVyc2lvbiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cG5fdmVyc2lv
biwgc2l6ZW9mIChleHRlcm5hbC0+cG5fdmVyc2lvbikpOwogICAgICBwdWJuYW1lcy5wbl9vZmZz
ZXQgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBuX29mZnNldCwgc2l6ZW9mIChleHRlcm5hbC0+cG5f
b2Zmc2V0KSk7CiAgICAgIHB1Ym5hbWVzLnBuX3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBu
X3NpemUsIHNpemVvZiAoZXh0ZXJuYWwtPnBuX3NpemUpKTsKCiAgICAgIGRhdGEgPSBzdGFydCAr
IHNpemVvZiAoKmV4dGVybmFsKTsKICAgICAgc3RhcnQgKz0gcHVibmFtZXMucG5fbGVuZ3RoICsg
c2l6ZW9mIChleHRlcm5hbC0+cG5fbGVuZ3RoKTsKCiAgICAgIGlmIChwdWJuYW1lcy5wbl9sZW5n
dGggPT0gMHhmZmZmZmZmZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgoIjY0LWJpdCBEV0FS
RiBwdWJuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuXG4iKSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICB9CgogICAgICBpZiAocHVibmFtZXMucG5fdmVyc2lvbiAhPSAyKQogICAgICAgIHsK
ICAgICAgICAgIHN0YXRpYyBpbnQgd2FybmVkID0gMDsKCiAgICAgICAgICBpZiAoISB3YXJuZWQp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB3YXJuICgoIk9ubHkgRFdBUkYgMiBwdWJuYW1l
cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZFxuIikpOwogICAgICAgICAgICAgIHdhcm5lZCA9IDE7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICBwcmlu
dGYgKCgiICBMZW5ndGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWxkXG4iKSwKICAg
ICAgICAgICAgICBwdWJuYW1lcy5wbl9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICBWZXJzaW9u
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWRcbiIpLAogICAgICAgICAgICAgIHB1Ym5h
bWVzLnBuX3ZlcnNpb24pOwogICAgICBwcmludGYgKCgiICBPZmZzZXQgaW50byAuZGVidWdfaW5m
byBzZWN0aW9uOiAgICAgJWxkXG4iKSwKICAgICAgICAgICAgICBwdWJuYW1lcy5wbl9vZmZzZXQp
OwogICAgICBwcmludGYgKCgiICBTaXplIG9mIGFyZWEgaW4gLmRlYnVnX2luZm8gc2VjdGlvbjog
JWxkXG4iKSwKICAgICAgICAgICAgICBwdWJuYW1lcy5wbl9zaXplKTsKCiAgICAgIHByaW50ZiAo
KCJcbiAgICBPZmZzZXRcdE5hbWVcbiIpKTsKCiAgICAgIGRvCiAgICAgICAgewogICAgICAgICAg
b2Zmc2V0ID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwoKICAgICAgICAgIGlmIChvZmZzZXQgIT0gMCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIGRhdGEgKz0gNDsKICAgICAgICAgICAgICBwcmlu
dGYgKCIgICAgJWxkXHRcdCVzXG4iLCBvZmZzZXQsIGRhdGEpOwogICAgICAgICAgICAgIGRhdGEg
Kz0gc3RybGVuICgoY2hhciAqKSBkYXRhKSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICAgIHdoaWxlIChvZmZzZXQgIT0gMCk7CiAgICB9CgogIHByaW50ZiAoIlxuIik7CiAgcmV0dXJu
IDE7Cn0KCnN0YXRpYyBjaGFyICoKZ2V0X1RBR19uYW1lICh0YWcpCiAgICAgdW5zaWduZWQgbG9u
ZyB0YWc7CnsKICBzd2l0Y2ggKHRhZykKICAgIHsKICAgIGNhc2UgRFdfVEFHX3BhZGRpbmc6IHJl
dHVybiAiRFdfVEFHX3BhZGRpbmciOwogICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZTogcmV0dXJu
ICJEV19UQUdfYXJyYXlfdHlwZSI7CiAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOiByZXR1cm4g
IkRXX1RBR19jbGFzc190eXBlIjsKICAgIGNhc2UgRFdfVEFHX2VudHJ5X3BvaW50OiByZXR1cm4g
IkRXX1RBR19lbnRyeV9wb2ludCI7CiAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOiBy
ZXR1cm4gIkRXX1RBR19lbnVtZXJhdGlvbl90eXBlIjsKICAgIGNhc2UgRFdfVEFHX2Zvcm1hbF9w
YXJhbWV0ZXI6IHJldHVybiAiRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIiOwogICAgY2FzZSBEV19U
QUdfaW1wb3J0ZWRfZGVjbGFyYXRpb246IHJldHVybiAiRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0
aW9uIjsKICAgIGNhc2UgRFdfVEFHX2xhYmVsOiByZXR1cm4gIkRXX1RBR19sYWJlbCI7CiAgICBj
YXNlIERXX1RBR19sZXhpY2FsX2Jsb2NrOiByZXR1cm4gIkRXX1RBR19sZXhpY2FsX2Jsb2NrIjsK
ICAgIGNhc2UgRFdfVEFHX21lbWJlcjogcmV0dXJuICJEV19UQUdfbWVtYmVyIjsKICAgIGNhc2Ug
RFdfVEFHX3BvaW50ZXJfdHlwZTogcmV0dXJuICJEV19UQUdfcG9pbnRlcl90eXBlIjsKICAgIGNh
c2UgRFdfVEFHX3JlZmVyZW5jZV90eXBlOiByZXR1cm4gIkRXX1RBR19yZWZlcmVuY2VfdHlwZSI7
CiAgICBjYXNlIERXX1RBR19jb21waWxlX3VuaXQ6IHJldHVybiAiRFdfVEFHX2NvbXBpbGVfdW5p
dCI7CiAgICBjYXNlIERXX1RBR19zdHJpbmdfdHlwZTogcmV0dXJuICJEV19UQUdfc3RyaW5nX3R5
cGUiOwogICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6IHJldHVybiAiRFdfVEFHX3N0cnVj
dHVyZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3N1YnJvdXRpbmVfdHlwZTogcmV0dXJuICJEV19U
QUdfc3Vicm91dGluZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6IHJldHVybiAiRFdf
VEFHX3R5cGVkZWYiOwogICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZTogcmV0dXJuICJEV19UQUdf
dW5pb25fdHlwZSI7CiAgICBjYXNlIERXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0ZXJzOiByZXR1
cm4gIkRXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0ZXJzIjsKICAgIGNhc2UgRFdfVEFHX3Zhcmlh
bnQ6IHJldHVybiAiRFdfVEFHX3ZhcmlhbnQiOwogICAgY2FzZSBEV19UQUdfY29tbW9uX2Jsb2Nr
OiByZXR1cm4gIkRXX1RBR19jb21tb25fYmxvY2siOwogICAgY2FzZSBEV19UQUdfY29tbW9uX2lu
Y2x1c2lvbjogcmV0dXJuICJEV19UQUdfY29tbW9uX2luY2x1c2lvbiI7CiAgICBjYXNlIERXX1RB
R19pbmhlcml0YW5jZTogcmV0dXJuICJEV19UQUdfaW5oZXJpdGFuY2UiOwogICAgY2FzZSBEV19U
QUdfaW5saW5lZF9zdWJyb3V0aW5lOiByZXR1cm4gIkRXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUi
OwogICAgY2FzZSBEV19UQUdfbW9kdWxlOiByZXR1cm4gIkRXX1RBR19tb2R1bGUiOwogICAgY2Fz
ZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOiByZXR1cm4gIkRXX1RBR19wdHJfdG9fbWVtYmVy
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfc2V0X3R5cGU6IHJldHVybiAiRFdfVEFHX3NldF90eXBl
IjsKICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6IHJldHVybiAiRFdfVEFHX3N1YnJhbmdl
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfd2l0aF9zdG10OiByZXR1cm4gIkRXX1RBR193aXRoX3N0
bXQiOwogICAgY2FzZSBEV19UQUdfYWNjZXNzX2RlY2xhcmF0aW9uOiByZXR1cm4gIkRXX1RBR19h
Y2Nlc3NfZGVjbGFyYXRpb24iOwogICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOiByZXR1cm4gIkRX
X1RBR19iYXNlX3R5cGUiOwogICAgY2FzZSBEV19UQUdfY2F0Y2hfYmxvY2s6IHJldHVybiAiRFdf
VEFHX2NhdGNoX2Jsb2NrIjsKICAgIGNhc2UgRFdfVEFHX2NvbnN0X3R5cGU6IHJldHVybiAiRFdf
VEFHX2NvbnN0X3R5cGUiOwogICAgY2FzZSBEV19UQUdfY29uc3RhbnQ6IHJldHVybiAiRFdfVEFH
X2NvbnN0YW50IjsKICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0b3I6IHJldHVybiAiRFdfVEFHX2Vu
dW1lcmF0b3IiOwogICAgY2FzZSBEV19UQUdfZmlsZV90eXBlOiByZXR1cm4gIkRXX1RBR19maWxl
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfZnJpZW5kOiByZXR1cm4gIkRXX1RBR19mcmllbmQiOwog
ICAgY2FzZSBEV19UQUdfbmFtZWxpc3Q6IHJldHVybiAiRFdfVEFHX25hbWVsaXN0IjsKICAgIGNh
c2UgRFdfVEFHX25hbWVsaXN0X2l0ZW06IHJldHVybiAiRFdfVEFHX25hbWVsaXN0X2l0ZW0iOwog
ICAgY2FzZSBEV19UQUdfcGFja2VkX3R5cGU6IHJldHVybiAiRFdfVEFHX3BhY2tlZF90eXBlIjsK
ICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06IHJldHVybiAiRFdfVEFHX3N1YnByb2dyYW0iOwog
ICAgY2FzZSBEV19UQUdfdGVtcGxhdGVfdHlwZV9wYXJhbTogcmV0dXJuICJEV19UQUdfdGVtcGxh
dGVfdHlwZV9wYXJhbSI7CiAgICBjYXNlIERXX1RBR190ZW1wbGF0ZV92YWx1ZV9wYXJhbTogcmV0
dXJuICJEV19UQUdfdGVtcGxhdGVfdmFsdWVfcGFyYW0iOwogICAgY2FzZSBEV19UQUdfdGhyb3du
X3R5cGU6IHJldHVybiAiRFdfVEFHX3Rocm93bl90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3RyeV9i
bG9jazogcmV0dXJuICJEV19UQUdfdHJ5X2Jsb2NrIjsKICAgIGNhc2UgRFdfVEFHX3ZhcmlhbnRf
cGFydDogcmV0dXJuICJEV19UQUdfdmFyaWFudF9wYXJ0IjsKICAgIGNhc2UgRFdfVEFHX3Zhcmlh
YmxlOiByZXR1cm4gIkRXX1RBR192YXJpYWJsZSI7CiAgICBjYXNlIERXX1RBR192b2xhdGlsZV90
eXBlOiByZXR1cm4gIkRXX1RBR192b2xhdGlsZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX01JUFNf
bG9vcDogcmV0dXJuICJEV19UQUdfTUlQU19sb29wIjsKICAgIGNhc2UgRFdfVEFHX2Zvcm1hdF9s
YWJlbDogcmV0dXJuICJEV19UQUdfZm9ybWF0X2xhYmVsIjsKICAgIGNhc2UgRFdfVEFHX2Z1bmN0
aW9uX3RlbXBsYXRlOiByZXR1cm4gIkRXX1RBR19mdW5jdGlvbl90ZW1wbGF0ZSI7CiAgICBjYXNl
IERXX1RBR19jbGFzc190ZW1wbGF0ZTogcmV0dXJuICJEV19UQUdfY2xhc3NfdGVtcGxhdGUiOwoK
ICAgIGNhc2UgRFdfVEFHX2R3YXJmX3Byb2NlZHVyZTogcmV0dXJuICJEV19UQUdfZHdhcmZfcHJv
Y2VkdXJlIjsKICAgIGNhc2UgRFdfVEFHX3Jlc3RyaWN0X3R5cGU6IHJldHVybiAiRFdfVEFHX3Jl
c3RyaWN0X3R5cGUiOwogICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6IHJldHVybiAiRFdf
VEFHX2ludGVyZmFjZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX25hbWVzcGFjZTogcmV0dXJuICJE
V19UQUdfbmFtZXNwYWNlIjsKICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX21vZHVsZTogcmV0dXJu
ICJEV19UQUdfaW1wb3J0ZWRfbW9kdWxlIjsKICAgIGNhc2UgRFdfVEFHX3Vuc3BlY2lmaWVkX3R5
cGU6IHJldHVybiAiRFdfVEFHX3Vuc3BlY2lmaWVkX3R5cGUiOwogICAgY2FzZSBEV19UQUdfcGFy
dGlhbF91bml0OiByZXR1cm4gIkRXX1RBR19wYXJ0aWFsX3VuaXQiOwogICAgY2FzZSBEV19UQUdf
aW1wb3J0ZWRfdW5pdDogcmV0dXJuICJEV19UQUdfaW1wb3J0ZWRfdW5pdCI7CgogICAgY2FzZSBE
V19UQUdfdXBjX3NoYXJlZF90eXBlOiByZXR1cm4gIkRXX1RBR191cGNfc2hhcmVkX3R5cGUiOwog
ICAgY2FzZSBEV19UQUdfdXBjX3N0cmljdF90eXBlOiByZXR1cm4gIkRXX1RBR191cGNfc3RyaWN0
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfdXBjX3JlbGF4ZWRfdHlwZTogcmV0dXJuICJEV19UQUdf
dXBjX3JlbGF4ZWRfdHlwZSI7CiAgICBkZWZhdWx0OgogICAgICB7CiAgICAgICAgc3RhdGljIGNo
YXIgYnVmZmVyWzEwMF07CgogICAgICAgIHNwcmludGYgKGJ1ZmZlciwgKCJVbmtub3duIFRBRyB2
YWx1ZTogJWx4IiksIHRhZyk7CiAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICAgfQogICAgfQp9
CgpzdGF0aWMgY2hhciAqCmdldF9BVF9uYW1lIChhdHRyaWJ1dGUpCiAgICAgdW5zaWduZWQgbG9u
ZyBhdHRyaWJ1dGU7CnsKICBzd2l0Y2ggKGF0dHJpYnV0ZSkKICAgIHsKICAgIGNhc2UgRFdfQVRf
c2libGluZzogcmV0dXJuICJEV19BVF9zaWJsaW5nIjsKICAgIGNhc2UgRFdfQVRfbG9jYXRpb246
IHJldHVybiAiRFdfQVRfbG9jYXRpb24iOwogICAgY2FzZSBEV19BVF9uYW1lOiByZXR1cm4gIkRX
X0FUX25hbWUiOwogICAgY2FzZSBEV19BVF9vcmRlcmluZzogcmV0dXJuICJEV19BVF9vcmRlcmlu
ZyI7CiAgICBjYXNlIERXX0FUX3N1YnNjcl9kYXRhOiByZXR1cm4gIkRXX0FUX3N1YnNjcl9kYXRh
IjsKICAgIGNhc2UgRFdfQVRfYnl0ZV9zaXplOiByZXR1cm4gIkRXX0FUX2J5dGVfc2l6ZSI7CiAg
ICBjYXNlIERXX0FUX2JpdF9vZmZzZXQ6IHJldHVybiAiRFdfQVRfYml0X29mZnNldCI7CiAgICBj
YXNlIERXX0FUX2JpdF9zaXplOiByZXR1cm4gIkRXX0FUX2JpdF9zaXplIjsKICAgIGNhc2UgRFdf
QVRfZWxlbWVudF9saXN0OiByZXR1cm4gIkRXX0FUX2VsZW1lbnRfbGlzdCI7CiAgICBjYXNlIERX
X0FUX3N0bXRfbGlzdDogcmV0dXJuICJEV19BVF9zdG10X2xpc3QiOwogICAgY2FzZSBEV19BVF9s
b3dfcGM6IHJldHVybiAiRFdfQVRfbG93X3BjIjsKICAgIGNhc2UgRFdfQVRfaGlnaF9wYzogcmV0
dXJuICJEV19BVF9oaWdoX3BjIjsKICAgIGNhc2UgRFdfQVRfbGFuZ3VhZ2U6IHJldHVybiAiRFdf
QVRfbGFuZ3VhZ2UiOwogICAgY2FzZSBEV19BVF9tZW1iZXI6IHJldHVybiAiRFdfQVRfbWVtYmVy
IjsKICAgIGNhc2UgRFdfQVRfZGlzY3I6IHJldHVybiAiRFdfQVRfZGlzY3IiOwogICAgY2FzZSBE
V19BVF9kaXNjcl92YWx1ZTogcmV0dXJuICJEV19BVF9kaXNjcl92YWx1ZSI7CiAgICBjYXNlIERX
X0FUX3Zpc2liaWxpdHk6IHJldHVybiAiRFdfQVRfdmlzaWJpbGl0eSI7CiAgICBjYXNlIERXX0FU
X2ltcG9ydDogcmV0dXJuICJEV19BVF9pbXBvcnQiOwogICAgY2FzZSBEV19BVF9zdHJpbmdfbGVu
Z3RoOiByZXR1cm4gIkRXX0FUX3N0cmluZ19sZW5ndGgiOwogICAgY2FzZSBEV19BVF9jb21tb25f
cmVmZXJlbmNlOiByZXR1cm4gIkRXX0FUX2NvbW1vbl9yZWZlcmVuY2UiOwogICAgY2FzZSBEV19B
VF9jb21wX2RpcjogcmV0dXJuICJEV19BVF9jb21wX2RpciI7CiAgICBjYXNlIERXX0FUX2NvbnN0
X3ZhbHVlOiByZXR1cm4gIkRXX0FUX2NvbnN0X3ZhbHVlIjsKICAgIGNhc2UgRFdfQVRfY29udGFp
bmluZ190eXBlOiByZXR1cm4gIkRXX0FUX2NvbnRhaW5pbmdfdHlwZSI7CiAgICBjYXNlIERXX0FU
X2RlZmF1bHRfdmFsdWU6IHJldHVybiAiRFdfQVRfZGVmYXVsdF92YWx1ZSI7CiAgICBjYXNlIERX
X0FUX2lubGluZTogcmV0dXJuICJEV19BVF9pbmxpbmUiOwogICAgY2FzZSBEV19BVF9pc19vcHRp
b25hbDogcmV0dXJuICJEV19BVF9pc19vcHRpb25hbCI7CiAgICBjYXNlIERXX0FUX2xvd2VyX2Jv
dW5kOiByZXR1cm4gIkRXX0FUX2xvd2VyX2JvdW5kIjsKICAgIGNhc2UgRFdfQVRfcHJvZHVjZXI6
IHJldHVybiAiRFdfQVRfcHJvZHVjZXIiOwogICAgY2FzZSBEV19BVF9wcm90b3R5cGVkOiByZXR1
cm4gIkRXX0FUX3Byb3RvdHlwZWQiOwogICAgY2FzZSBEV19BVF9yZXR1cm5fYWRkcjogcmV0dXJu
ICJEV19BVF9yZXR1cm5fYWRkciI7CiAgICBjYXNlIERXX0FUX3N0YXJ0X3Njb3BlOiByZXR1cm4g
IkRXX0FUX3N0YXJ0X3Njb3BlIjsKICAgIGNhc2UgRFdfQVRfc3RyaWRlX3NpemU6IHJldHVybiAi
RFdfQVRfc3RyaWRlX3NpemUiOwogICAgY2FzZSBEV19BVF91cHBlcl9ib3VuZDogcmV0dXJuICJE
V19BVF91cHBlcl9ib3VuZCI7CiAgICBjYXNlIERXX0FUX2Fic3RyYWN0X29yaWdpbjogcmV0dXJu
ICJEV19BVF9hYnN0cmFjdF9vcmlnaW4iOwogICAgY2FzZSBEV19BVF9hY2Nlc3NpYmlsaXR5OiBy
ZXR1cm4gIkRXX0FUX2FjY2Vzc2liaWxpdHkiOwogICAgY2FzZSBEV19BVF9hZGRyZXNzX2NsYXNz
OiByZXR1cm4gIkRXX0FUX2FkZHJlc3NfY2xhc3MiOwogICAgY2FzZSBEV19BVF9hcnRpZmljaWFs
OiByZXR1cm4gIkRXX0FUX2FydGlmaWNpYWwiOwogICAgY2FzZSBEV19BVF9iYXNlX3R5cGVzOiBy
ZXR1cm4gIkRXX0FUX2Jhc2VfdHlwZXMiOwogICAgY2FzZSBEV19BVF9jYWxsaW5nX2NvbnZlbnRp
b246IHJldHVybiAiRFdfQVRfY2FsbGluZ19jb252ZW50aW9uIjsKICAgIGNhc2UgRFdfQVRfY291
bnQ6IHJldHVybiAiRFdfQVRfY291bnQiOwogICAgY2FzZSBEV19BVF9kYXRhX21lbWJlcl9sb2Nh
dGlvbjogcmV0dXJuICJEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiI7CiAgICBjYXNlIERXX0FU
X2RlY2xfY29sdW1uOiByZXR1cm4gIkRXX0FUX2RlY2xfY29sdW1uIjsKICAgIGNhc2UgRFdfQVRf
ZGVjbF9maWxlOiByZXR1cm4gIkRXX0FUX2RlY2xfZmlsZSI7CiAgICBjYXNlIERXX0FUX2RlY2xf
bGluZTogcmV0dXJuICJEV19BVF9kZWNsX2xpbmUiOwogICAgY2FzZSBEV19BVF9kZWNsYXJhdGlv
bjogcmV0dXJuICJEV19BVF9kZWNsYXJhdGlvbiI7CiAgICBjYXNlIERXX0FUX2Rpc2NyX2xpc3Q6
IHJldHVybiAiRFdfQVRfZGlzY3JfbGlzdCI7CiAgICBjYXNlIERXX0FUX2VuY29kaW5nOiByZXR1
cm4gIkRXX0FUX2VuY29kaW5nIjsKICAgIGNhc2UgRFdfQVRfZXh0ZXJuYWw6IHJldHVybiAiRFdf
QVRfZXh0ZXJuYWwiOwogICAgY2FzZSBEV19BVF9mcmFtZV9iYXNlOiByZXR1cm4gIkRXX0FUX2Zy
YW1lX2Jhc2UiOwogICAgY2FzZSBEV19BVF9mcmllbmQ6IHJldHVybiAiRFdfQVRfZnJpZW5kIjsK
ICAgIGNhc2UgRFdfQVRfaWRlbnRpZmllcl9jYXNlOiByZXR1cm4gIkRXX0FUX2lkZW50aWZpZXJf
Y2FzZSI7CiAgICBjYXNlIERXX0FUX21hY3JvX2luZm86IHJldHVybiAiRFdfQVRfbWFjcm9faW5m
byI7CiAgICBjYXNlIERXX0FUX25hbWVsaXN0X2l0ZW1zOiByZXR1cm4gIkRXX0FUX25hbWVsaXN0
X2l0ZW1zIjsKICAgIGNhc2UgRFdfQVRfcHJpb3JpdHk6IHJldHVybiAiRFdfQVRfcHJpb3JpdHki
OwogICAgY2FzZSBEV19BVF9zZWdtZW50OiByZXR1cm4gIkRXX0FUX3NlZ21lbnQiOwogICAgY2Fz
ZSBEV19BVF9zcGVjaWZpY2F0aW9uOiByZXR1cm4gIkRXX0FUX3NwZWNpZmljYXRpb24iOwogICAg
Y2FzZSBEV19BVF9zdGF0aWNfbGluazogcmV0dXJuICJEV19BVF9zdGF0aWNfbGluayI7CiAgICBj
YXNlIERXX0FUX3R5cGU6IHJldHVybiAiRFdfQVRfdHlwZSI7CiAgICBjYXNlIERXX0FUX3VzZV9s
b2NhdGlvbjogcmV0dXJuICJEV19BVF91c2VfbG9jYXRpb24iOwogICAgY2FzZSBEV19BVF92YXJp
YWJsZV9wYXJhbWV0ZXI6IHJldHVybiAiRFdfQVRfdmFyaWFibGVfcGFyYW1ldGVyIjsKICAgIGNh
c2UgRFdfQVRfdmlydHVhbGl0eTogcmV0dXJuICJEV19BVF92aXJ0dWFsaXR5IjsKICAgIGNhc2Ug
RFdfQVRfdnRhYmxlX2VsZW1fbG9jYXRpb246IHJldHVybiAiRFdfQVRfdnRhYmxlX2VsZW1fbG9j
YXRpb24iOwoKICAgIGNhc2UgRFdfQVRfYWxsb2NhdGVkOiByZXR1cm4gIkRXX0FUX2FsbG9jYXRl
ZCI7CiAgICBjYXNlIERXX0FUX2Fzc29jaWF0ZWQ6IHJldHVybiAiRFdfQVRfYXNzb2NpYXRlZCI7
CiAgICBjYXNlIERXX0FUX2RhdGFfbG9jYXRpb246IHJldHVybiAiRFdfQVRfZGF0YV9sb2NhdGlv
biI7CiAgICBjYXNlIERXX0FUX3N0cmlkZTogcmV0dXJuICJEV19BVF9zdHJpZGUiOwogICAgY2Fz
ZSBEV19BVF9lbnRyeV9wYzogcmV0dXJuICJEV19BVF9lbnRyeV9wYyI7CiAgICBjYXNlIERXX0FU
X3VzZV9VVEY4OiByZXR1cm4gIkRXX0FUX3VzZV9VVEY4IjsKICAgIGNhc2UgRFdfQVRfZXh0ZW5z
aW9uOiByZXR1cm4gIkRXX0FUX2V4dGVuc2lvbiI7CiAgICBjYXNlIERXX0FUX3JhbmdlczogcmV0
dXJuICJEV19BVF9yYW5nZXMiOwogICAgY2FzZSBEV19BVF90cmFtcG9saW5lOiByZXR1cm4gIkRX
X0FUX3RyYW1wb2xpbmUiOwogICAgY2FzZSBEV19BVF9jYWxsX2NvbHVtbjogcmV0dXJuICJEV19B
VF9jYWxsX2NvbHVtbiI7CiAgICBjYXNlIERXX0FUX2NhbGxfZmlsZTogcmV0dXJuICJEV19BVF9j
YWxsX2ZpbGUiOwogICAgY2FzZSBEV19BVF9jYWxsX2xpbmU6IHJldHVybiAiRFdfQVRfY2FsbF9s
aW5lIjsKCiAgICBjYXNlIERXX0FUX01JUFNfZmRlOiByZXR1cm4gIkRXX0FUX01JUFNfZmRlIjsK
ICAgIGNhc2UgRFdfQVRfTUlQU19sb29wX2JlZ2luOiByZXR1cm4gIkRXX0FUX01JUFNfbG9vcF9i
ZWdpbiI7CiAgICBjYXNlIERXX0FUX01JUFNfdGFpbF9sb29wX2JlZ2luOiByZXR1cm4gIkRXX0FU
X01JUFNfdGFpbF9sb29wX2JlZ2luIjsKICAgIGNhc2UgRFdfQVRfTUlQU19lcGlsb2dfYmVnaW46
IHJldHVybiAiRFdfQVRfTUlQU19lcGlsb2dfYmVnaW4iOwogICAgY2FzZSBEV19BVF9NSVBTX2xv
b3BfdW5yb2xsX2ZhY3RvcjogcmV0dXJuICJEV19BVF9NSVBTX2xvb3BfdW5yb2xsX2ZhY3RvciI7
CiAgICBjYXNlIERXX0FUX01JUFNfc29mdHdhcmVfcGlwZWxpbmVfZGVwdGg6CiAgICAgIHJldHVy
biAiRFdfQVRfTUlQU19zb2Z0d2FyZV9waXBlbGluZV9kZXB0aCI7CiAgICBjYXNlIERXX0FUX01J
UFNfbGlua2FnZV9uYW1lOiByZXR1cm4gIkRXX0FUX01JUFNfbGlua2FnZV9uYW1lIjsKICAgIGNh
c2UgRFdfQVRfTUlQU19zdHJpZGU6IHJldHVybiAiRFdfQVRfTUlQU19zdHJpZGUiOwogICAgY2Fz
ZSBEV19BVF9NSVBTX2Fic3RyYWN0X25hbWU6IHJldHVybiAiRFdfQVRfTUlQU19hYnN0cmFjdF9u
YW1lIjsKICAgIGNhc2UgRFdfQVRfTUlQU19jbG9uZV9vcmlnaW46IHJldHVybiAiRFdfQVRfTUlQ
U19jbG9uZV9vcmlnaW4iOwogICAgY2FzZSBEV19BVF9NSVBTX2hhc19pbmxpbmVzOiByZXR1cm4g
IkRXX0FUX01JUFNfaGFzX2lubGluZXMiOwoKICAgIGNhc2UgRFdfQVRfc2ZfbmFtZXM6IHJldHVy
biAiRFdfQVRfc2ZfbmFtZXMiOwogICAgY2FzZSBEV19BVF9zcmNfaW5mbzogcmV0dXJuICJEV19B
VF9zcmNfaW5mbyI7CiAgICBjYXNlIERXX0FUX21hY19pbmZvOiByZXR1cm4gIkRXX0FUX21hY19p
bmZvIjsKICAgIGNhc2UgRFdfQVRfc3JjX2Nvb3JkczogcmV0dXJuICJEV19BVF9zcmNfY29vcmRz
IjsKICAgIGNhc2UgRFdfQVRfYm9keV9iZWdpbjogcmV0dXJuICJEV19BVF9ib2R5X2JlZ2luIjsK
ICAgIGNhc2UgRFdfQVRfYm9keV9lbmQ6IHJldHVybiAiRFdfQVRfYm9keV9lbmQiOwogICAgY2Fz
ZSBEV19BVF9HTlVfdmVjdG9yOiByZXR1cm4gIkRXX0FUX0dOVV92ZWN0b3IiOwoKICAgIGNhc2Ug
RFdfQVRfdXBjX3RocmVhZHNfc2NhbGVkOiByZXR1cm4gIkRXX0FUX3VwY190aHJlYWRzX3NjYWxl
ZCI7CiAgICBkZWZhdWx0OgogICAgICB7CiAgICAgICAgc3RhdGljIGNoYXIgYnVmZmVyWzEwMF07
CgogICAgICAgIHNwcmludGYgKGJ1ZmZlciwgKCJVbmtub3duIEFUIHZhbHVlOiAlbHgiKSwgYXR0
cmlidXRlKTsKICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgICB9CiAgICB9Cn0KCnN0YXRpYyBj
aGFyICoKZ2V0X0ZPUk1fbmFtZSAoZm9ybSkKICAgICB1bnNpZ25lZCBsb25nIGZvcm07CnsKICBz
d2l0Y2ggKGZvcm0pCiAgICB7CiAgICBjYXNlIERXX0ZPUk1fYWRkcjogcmV0dXJuICJEV19GT1JN
X2FkZHIiOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrMjogcmV0dXJuICJEV19GT1JNX2Jsb2NrMiI7
CiAgICBjYXNlIERXX0ZPUk1fYmxvY2s0OiByZXR1cm4gIkRXX0ZPUk1fYmxvY2s0IjsKICAgIGNh
c2UgRFdfRk9STV9kYXRhMjogcmV0dXJuICJEV19GT1JNX2RhdGEyIjsKICAgIGNhc2UgRFdfRk9S
TV9kYXRhNDogcmV0dXJuICJEV19GT1JNX2RhdGE0IjsKICAgIGNhc2UgRFdfRk9STV9kYXRhODog
cmV0dXJuICJEV19GT1JNX2RhdGE4IjsKICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6IHJldHVybiAi
RFdfRk9STV9zdHJpbmciOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrOiByZXR1cm4gIkRXX0ZPUk1f
YmxvY2siOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrMTogcmV0dXJuICJEV19GT1JNX2Jsb2NrMSI7
CiAgICBjYXNlIERXX0ZPUk1fZGF0YTE6IHJldHVybiAiRFdfRk9STV9kYXRhMSI7CiAgICBjYXNl
IERXX0ZPUk1fZmxhZzogcmV0dXJuICJEV19GT1JNX2ZsYWciOwogICAgY2FzZSBEV19GT1JNX3Nk
YXRhOiByZXR1cm4gIkRXX0ZPUk1fc2RhdGEiOwogICAgY2FzZSBEV19GT1JNX3N0cnA6IHJldHVy
biAiRFdfRk9STV9zdHJwIjsKICAgIGNhc2UgRFdfRk9STV91ZGF0YTogcmV0dXJuICJEV19GT1JN
X3VkYXRhIjsKICAgIGNhc2UgRFdfRk9STV9yZWZfYWRkcjogcmV0dXJuICJEV19GT1JNX3JlZl9h
ZGRyIjsKICAgIGNhc2UgRFdfRk9STV9yZWYxOiByZXR1cm4gIkRXX0ZPUk1fcmVmMSI7CiAgICBj
YXNlIERXX0ZPUk1fcmVmMjogcmV0dXJuICJEV19GT1JNX3JlZjIiOwogICAgY2FzZSBEV19GT1JN
X3JlZjQ6IHJldHVybiAiRFdfRk9STV9yZWY0IjsKICAgIGNhc2UgRFdfRk9STV9yZWY4OiByZXR1
cm4gIkRXX0ZPUk1fcmVmOCI7CiAgICBjYXNlIERXX0ZPUk1fcmVmX3VkYXRhOiByZXR1cm4gIkRX
X0ZPUk1fcmVmX3VkYXRhIjsKICAgIGNhc2UgRFdfRk9STV9pbmRpcmVjdDogcmV0dXJuICJEV19G
T1JNX2luZGlyZWN0IjsKICAgIGRlZmF1bHQ6CiAgICAgIHsKICAgICAgICBzdGF0aWMgY2hhciBi
dWZmZXJbMTAwXTsKCiAgICAgICAgc3ByaW50ZiAoYnVmZmVyLCAoIlVua25vd24gRk9STSB2YWx1
ZTogJWx4IiksIGZvcm0pOwogICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgIH0KICAgIH0KfQoK
CgoKdHlwZWRlZiBzdHJ1Y3QgYWJicmV2X2F0dHIKewogIHVuc2lnbmVkIGxvbmcgYXR0cmlidXRl
OwogIHVuc2lnbmVkIGxvbmcgZm9ybTsKICBzdHJ1Y3QgYWJicmV2X2F0dHIgKm5leHQ7Cn0KYWJi
cmV2X2F0dHI7Cgp0eXBlZGVmIHN0cnVjdCBhYmJyZXZfZW50cnkKewogIHVuc2lnbmVkIGxvbmcg
ZW50cnk7CiAgdW5zaWduZWQgbG9uZyB0YWc7CiAgaW50IGNoaWxkcmVuOwogIHN0cnVjdCBhYmJy
ZXZfYXR0ciAqZmlyc3RfYXR0cjsKICBzdHJ1Y3QgYWJicmV2X2F0dHIgKmxhc3RfYXR0cjsKICBz
dHJ1Y3QgYWJicmV2X2VudHJ5ICpuZXh0Owp9CmFiYnJldl9lbnRyeTsKCnN0YXRpYyBhYmJyZXZf
ZW50cnkgKmZpcnN0X2FiYnJldiA9ICgodm9pZCAqKTApOwpzdGF0aWMgYWJicmV2X2VudHJ5ICps
YXN0X2FiYnJldiA9ICgodm9pZCAqKTApOwoKc3RhdGljIHZvaWQKZnJlZV9hYmJyZXZzICgpCnsK
ICBhYmJyZXZfZW50cnkgKmFiYnJldjsKCiAgZm9yIChhYmJyZXYgPSBmaXJzdF9hYmJyZXY7IGFi
YnJldjspCiAgICB7CiAgICAgIGFiYnJldl9lbnRyeSAqbmV4dCA9IGFiYnJldi0+bmV4dDsKICAg
ICAgYWJicmV2X2F0dHIgKmF0dHI7CgogICAgICBmb3IgKGF0dHIgPSBhYmJyZXYtPmZpcnN0X2F0
dHI7IGF0dHI7KQogICAgICAgIHsKICAgICAgICAgIGFiYnJldl9hdHRyICpuZXh0ID0gYXR0ci0+
bmV4dDsKCiAgICAgICAgICBmcmVlIChhdHRyKTsKICAgICAgICAgIGF0dHIgPSBuZXh0OwogICAg
ICAgIH0KCiAgICAgIGZyZWUgKGFiYnJldik7CiAgICAgIGFiYnJldiA9IG5leHQ7CiAgICB9Cgog
IGxhc3RfYWJicmV2ID0gZmlyc3RfYWJicmV2ID0gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyB2b2lk
CmFkZF9hYmJyZXYgKG51bWJlciwgdGFnLCBjaGlsZHJlbikKICAgICB1bnNpZ25lZCBsb25nIG51
bWJlcjsKICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICBpbnQgY2hpbGRyZW47CnsKICBhYmJy
ZXZfZW50cnkgKmVudHJ5OwoKICBlbnRyeSA9IChhYmJyZXZfZW50cnkgKikgbWFsbG9jIChzaXpl
b2YgKCplbnRyeSkpOwoKICBpZiAoZW50cnkgPT0gKCh2b2lkICopMCkpCgogICAgcmV0dXJuOwoK
ICBlbnRyeS0+ZW50cnkgPSBudW1iZXI7CiAgZW50cnktPnRhZyA9IHRhZzsKICBlbnRyeS0+Y2hp
bGRyZW4gPSBjaGlsZHJlbjsKICBlbnRyeS0+Zmlyc3RfYXR0ciA9ICgodm9pZCAqKTApOwogIGVu
dHJ5LT5sYXN0X2F0dHIgPSAoKHZvaWQgKikwKTsKICBlbnRyeS0+bmV4dCA9ICgodm9pZCAqKTAp
OwoKICBpZiAoZmlyc3RfYWJicmV2ID09ICgodm9pZCAqKTApKQogICAgZmlyc3RfYWJicmV2ID0g
ZW50cnk7CiAgZWxzZQogICAgbGFzdF9hYmJyZXYtPm5leHQgPSBlbnRyeTsKCiAgbGFzdF9hYmJy
ZXYgPSBlbnRyeTsKfQoKc3RhdGljIHZvaWQKYWRkX2FiYnJldl9hdHRyIChhdHRyaWJ1dGUsIGZv
cm0pCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5zaWduZWQgbG9uZyBmb3Jt
Owp7CiAgYWJicmV2X2F0dHIgKmF0dHI7CgogIGF0dHIgPSAoYWJicmV2X2F0dHIgKikgbWFsbG9j
IChzaXplb2YgKCphdHRyKSk7CgogIGlmIChhdHRyID09ICgodm9pZCAqKTApKQoKICAgIHJldHVy
bjsKCiAgYXR0ci0+YXR0cmlidXRlID0gYXR0cmlidXRlOwogIGF0dHItPmZvcm0gPSBmb3JtOwog
IGF0dHItPm5leHQgPSAoKHZvaWQgKikwKTsKCiAgaWYgKGxhc3RfYWJicmV2LT5maXJzdF9hdHRy
ID09ICgodm9pZCAqKTApKQogICAgbGFzdF9hYmJyZXYtPmZpcnN0X2F0dHIgPSBhdHRyOwogIGVs
c2UKICAgIGxhc3RfYWJicmV2LT5sYXN0X2F0dHItPm5leHQgPSBhdHRyOwoKICBsYXN0X2FiYnJl
di0+bGFzdF9hdHRyID0gYXR0cjsKfQoKCgoKCgpzdGF0aWMgdW5zaWduZWQgY2hhciAqCnByb2Nl
c3NfYWJicmV2X3NlY3Rpb24gKHN0YXJ0LCBlbmQpCiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgICAgdW5zaWduZWQgY2hhciAqZW5kOwp7CiAgaWYgKGZpcnN0X2FiYnJldiAhPSAoKHZvaWQg
KikwKSkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAg
ewogICAgICBpbnQgYnl0ZXNfcmVhZDsKICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeTsKICAgICAg
dW5zaWduZWQgbG9uZyB0YWc7CiAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cmlidXRlOwogICAgICBp
bnQgY2hpbGRyZW47CgogICAgICBlbnRyeSA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBieXRlc19y
ZWFkLCAwKTsKICAgICAgc3RhcnQgKz0gYnl0ZXNfcmVhZDsKCgoKCiAgICAgIGlmIChlbnRyeSA9
PSAwKQogICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQgPyAoKHZvaWQgKikwKSA6IHN0YXJ0OwoK
ICAgICAgdGFnID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICBz
dGFydCArPSBieXRlc19yZWFkOwoKICAgICAgY2hpbGRyZW4gPSAqc3RhcnQrKzsKCiAgICAgIGFk
ZF9hYmJyZXYgKGVudHJ5LCB0YWcsIGNoaWxkcmVuKTsKCiAgICAgIGRvCiAgICAgICAgewogICAg
ICAgICAgdW5zaWduZWQgbG9uZyBmb3JtOwoKICAgICAgICAgIGF0dHJpYnV0ZSA9IHJlYWRfbGVi
MTI4IChzdGFydCwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIHN0YXJ0ICs9IGJ5dGVzX3Jl
YWQ7CgogICAgICAgICAgZm9ybSA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBieXRlc19yZWFkLCAw
KTsKICAgICAgICAgIHN0YXJ0ICs9IGJ5dGVzX3JlYWQ7CgogICAgICAgICAgaWYgKGF0dHJpYnV0
ZSAhPSAwKQogICAgICAgICAgICBhZGRfYWJicmV2X2F0dHIgKGF0dHJpYnV0ZSwgZm9ybSk7CiAg
ICAgICAgfQogICAgICB3aGlsZSAoYXR0cmlidXRlICE9IDApOwogICAgfQoKICByZXR1cm4gKCh2
b2lkICopMCk7Cn0KCgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdfbWFjaW5mbyAoc2VjdGlvbiwg
c3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWdu
ZWQgY2hhciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwp7CiAgdW5zaWduZWQgY2hhciAqZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwog
IHVuc2lnbmVkIGNoYXIgKmN1cnIgPSBzdGFydDsKICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsK
ICBlbnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUgb3A7CgogIHByaW50ZiAoKCJDb250ZW50
cyBvZiB0aGUgJXMgc2VjdGlvbjpcblxuIiksICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpOwoKICB3aGls
ZSAoY3VyciA8IGVuZCkKICAgIHsKICAgICAgdW5zaWduZWQgaW50IGxpbmVubzsKICAgICAgY29u
c3QgY2hhciAqc3RyaW5nOwoKICAgICAgb3AgPSAqY3VycjsKICAgICAgY3VycisrOwoKICAgICAg
c3dpdGNoIChvcCkKICAgICAgICB7CiAgICAgICAgY2FzZSBEV19NQUNJTkZPX3N0YXJ0X2ZpbGU6
CiAgICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlbnVtOwoKICAgICAgICAg
ICAgbGluZW5vID0gcmVhZF9sZWIxMjggKGN1cnIsICYgYnl0ZXNfcmVhZCwgMCk7CiAgICAgICAg
ICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgZmlsZW51bSA9IHJlYWRfbGViMTI4
IChjdXJyLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAgICBjdXJyICs9IGJ5dGVzX3JlYWQ7
CgogICAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fc3RhcnRfZmlsZSAtIGxpbmVubzog
JWQgZmlsZW51bTogJWRcbiIpLCBsaW5lbm8sIGZpbGVudW0pOwogICAgICAgICAgfQogICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgRFdfTUFDSU5GT19lbmRfZmlsZToKICAgICAgICAgIHBy
aW50ZiAoKCIgRFdfTUFDSU5GT19lbmRfZmlsZVxuIikpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgRFdfTUFDSU5GT19kZWZpbmU6CiAgICAgICAgICBsaW5lbm8gPSByZWFkX2xlYjEy
OCAoY3VyciwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsK
ICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICBjdXJyICs9IHN0cmxlbiAoc3RyaW5n
KSArIDE7CiAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fZGVmaW5lIC0gbGluZW5vIDog
JWQgbWFjcm8gOiAlc1xuIiksIGxpbmVubywgc3RyaW5nKTsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIERXX01BQ0lORk9fdW5kZWY6CiAgICAgICAgICBsaW5lbm8gPSByZWFkX2xlYjEy
OCAoY3VyciwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsK
ICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICBjdXJyICs9IHN0cmxlbiAoc3RyaW5n
KSArIDE7CiAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fdW5kZWYgLSBsaW5lbm8gOiAl
ZCBtYWNybyA6ICVzXG4iKSwgbGluZW5vLCBzdHJpbmcpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgRFdfTUFDSU5GT192ZW5kb3JfZXh0OgogICAgICAgICAgewogICAgICAgICAgICB1
bnNpZ25lZCBpbnQgY29uc3RhbnQ7CgogICAgICAgICAgICBjb25zdGFudCA9IHJlYWRfbGViMTI4
IChjdXJyLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAgICBjdXJyICs9IGJ5dGVzX3JlYWQ7
CiAgICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICAgIGN1cnIgKz0gc3RybGVuIChz
dHJpbmcpICsgMTsKICAgICAgICAgICAgcHJpbnRmICgoIiBEV19NQUNJTkZPX3ZlbmRvcl9leHQg
LSBjb25zdGFudCA6ICVkIHN0cmluZyA6ICVzXG4iKSwgY29uc3RhbnQsIHN0cmluZyk7CiAgICAg
ICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHJldHVybiAxOwp9CgoK
c3RhdGljIGludApkaXNwbGF5X2RlYnVnX2FiYnJldiAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpCiAg
ICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgYWJicmV2
X2VudHJ5ICplbnRyeTsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCArIHNlY3Rpb24tPnNo
X3NpemU7CgogIHByaW50ZiAoKCJDb250ZW50cyBvZiB0aGUgJXMgc2VjdGlvbjpcblxuIiksICgo
c2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
Y3Rpb24pLT5zaF9uYW1lKSkpOwoKICBkbwogICAgewogICAgICBzdGFydCA9IHByb2Nlc3NfYWJi
cmV2X3NlY3Rpb24gKHN0YXJ0LCBlbmQpOwoKICAgICAgaWYgKGZpcnN0X2FiYnJldiA9PSAoKHZv
aWQgKikwKSkKICAgICAgICBjb250aW51ZTsKCiAgICAgIHByaW50ZiAoKCIgIE51bWJlciBUQUdc
biIpKTsKCiAgICAgIGZvciAoZW50cnkgPSBmaXJzdF9hYmJyZXY7IGVudHJ5OyBlbnRyeSA9IGVu
dHJ5LT5uZXh0KQogICAgICAgIHsKICAgICAgICAgIGFiYnJldl9hdHRyICphdHRyOwoKICAgICAg
ICAgIHByaW50ZiAoKCIgICAlbGQgICAgICAlcyAgICBbJXNdXG4iKSwKICAgICAgICAgICAgICAg
ICAgZW50cnktPmVudHJ5LAogICAgICAgICAgICAgICAgICBnZXRfVEFHX25hbWUgKGVudHJ5LT50
YWcpLAogICAgICAgICAgICAgICAgICBlbnRyeS0+Y2hpbGRyZW4gPyAoImhhcyBjaGlsZHJlbiIp
IDogKCJubyBjaGlsZHJlbiIpKTsKCiAgICAgICAgICBmb3IgKGF0dHIgPSBlbnRyeS0+Zmlyc3Rf
YXR0cjsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICBwcmludGYgKCgiICAgICUtMThzICVzXG4iKSwKICAgICAgICAgICAgICAgICAgICAgIGdldF9B
VF9uYW1lIChhdHRyLT5hdHRyaWJ1dGUpLAogICAgICAgICAgICAgICAgICAgICAgZ2V0X0ZPUk1f
bmFtZSAoYXR0ci0+Zm9ybSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgZnJlZV9h
YmJyZXZzICgpOwogICAgfQogIHdoaWxlIChzdGFydCk7CgogIHByaW50ZiAoIlxuIik7CgogIHJl
dHVybiAxOwp9CgoKc3RhdGljIHVuc2lnbmVkIGNoYXIgKgpkaXNwbGF5X2Jsb2NrIChkYXRhLCBs
ZW5ndGgpCiAgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKewogIHByaW50ZiAoKCIgJWx1IGJ5dGUgYmxvY2s6ICIpLCBsZW5ndGgpOwoKICB3aGlsZSAo
bGVuZ3RoIC0tKQogICAgcHJpbnRmICgiJWx4ICIsICh1bnNpZ25lZCBsb25nKSBieXRlX2dldCAo
ZGF0YSsrLCAxKSk7CgogIHJldHVybiBkYXRhOwp9CgpzdGF0aWMgdm9pZApkZWNvZGVfbG9jYXRp
b25fZXhwcmVzc2lvbiAoZGF0YSwgcG9pbnRlcl9zaXplLCBsZW5ndGgpCiAgICAgdW5zaWduZWQg
Y2hhciAqIGRhdGE7CiAgICAgdW5zaWduZWQgaW50IHBvaW50ZXJfc2l6ZTsKICAgICB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKewogIHVuc2lnbmVkIG9wOwogIGludCBieXRlc19yZWFkOwogIHVuc2ln
bmVkIGxvbmcgdXZhbHVlOwogIHVuc2lnbmVkIGNoYXIgKmVuZCA9IGRhdGEgKyBsZW5ndGg7Cgog
IHdoaWxlIChkYXRhIDwgZW5kKQogICAgewogICAgICBvcCA9ICpkYXRhKys7CgogICAgICBzd2l0
Y2ggKG9wKQogICAgICAgIHsKICAgICAgICBjYXNlIERXX09QX2FkZHI6CiAgICAgICAgICBwcmlu
dGYgKCJEV19PUF9hZGRyOiAlbHgiLAogICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykg
Ynl0ZV9nZXQgKGRhdGEsIHBvaW50ZXJfc2l6ZSkpOwogICAgICAgICAgZGF0YSArPSBwb2ludGVy
X3NpemU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2RlcmVmOgogICAgICAg
ICAgcHJpbnRmICgiRFdfT1BfZGVyZWYiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
RFdfT1BfY29uc3QxdToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NvbnN0MXU6ICVsdSIsICh1
bnNpZ25lZCBsb25nKSBieXRlX2dldCAoZGF0YSsrLCAxKSk7CiAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIERXX09QX2NvbnN0MXM6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDFz
OiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAg
ICAgICAgY2FzZSBEV19PUF9jb25zdDJ1OgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfY29uc3Qy
dTogJWx1IiwgKHVuc2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCAyKSk7CiAgICAgICAgICBk
YXRhICs9IDI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2NvbnN0MnM6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDJzOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRh
dGEsIDIpKTsKICAgICAgICAgIGRhdGEgKz0gMjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1BfY29uc3Q0dToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NvbnN0NHU6ICVsdSIs
ICh1bnNpZ25lZCBsb25nKSBieXRlX2dldCAoZGF0YSwgNCkpOwogICAgICAgICAgZGF0YSArPSA0
OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jb25zdDRzOgogICAgICAgICAg
cHJpbnRmICgiRFdfT1BfY29uc3Q0czogJWxkIiwgKGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCA0KSk7
CiAgICAgICAgICBkYXRhICs9IDQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09Q
X2NvbnN0OHU6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDh1OiAlbHUgJWx1IiwgKHVu
c2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCA0KSwKICAgICAgICAgICAgICAgICAgKHVuc2ln
bmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhICsgNCwgNCkpOwogICAgICAgICAgZGF0YSArPSA4Owog
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jb25zdDhzOgogICAgICAgICAgcHJp
bnRmICgiRFdfT1BfY29uc3Q4czogJWxkICVsZCIsIChsb25nKSBieXRlX2dldCAoZGF0YSwgNCks
CiAgICAgICAgICAgICAgICAgIChsb25nKSBieXRlX2dldCAoZGF0YSArIDQsIDQpKTsKICAgICAg
ICAgIGRhdGEgKz0gODsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfY29uc3R1
OgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfY29uc3R1OiAlbHUiLCByZWFkX2xlYjEyOCAoZGF0
YSwgJmJ5dGVzX3JlYWQsIDApKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfY29uc3RzOgogICAgICAgICAgcHJpbnRmICgi
RFdfT1BfY29uc3RzOiAlbGQiLCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDEpKTsK
ICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1BfZHVwOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfZHVwIik7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX2Ryb3A6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9k
cm9wIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX292ZXI6CiAgICAgICAg
ICBwcmludGYgKCJEV19PUF9vdmVyIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERX
X09QX3BpY2s6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9waWNrOiAlbGQiLCAodW5zaWduZWQg
bG9uZykgYnl0ZV9nZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSBEV19PUF9zd2FwOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfc3dhcCIpOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9yb3Q6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9y
b3QiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfeGRlcmVmOgogICAgICAg
ICAgcHJpbnRmICgiRFdfT1BfeGRlcmVmIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IERXX09QX2FiczoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2FicyIpOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9hbmQ6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9hbmQi
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZGl2OgogICAgICAgICAgcHJp
bnRmICgiRFdfT1BfZGl2Iik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX21p
bnVzOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbWludXMiKTsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgRFdfT1BfbW9kOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbW9kIik7CiAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX211bDoKICAgICAgICAgIHByaW50ZiAo
IkRXX09QX211bCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9uZWc6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9uZWciKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1Bfbm90OgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfbm90Iik7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX29yOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfb3Ii
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfcGx1czoKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX3BsdXMiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bf
cGx1c191Y29uc3Q6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9wbHVzX3Vjb25zdDogJWx1IiwK
ICAgICAgICAgICAgICAgICAgcmVhZF9sZWIxMjggKGRhdGEsICZieXRlc19yZWFkLCAwKSk7CiAg
ICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IERXX09QX3NobDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX3NobCIpOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9zaHI6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9zaHIi
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bfc2hyYToKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX3NocmEiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bf
eG9yOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfeG9yIik7CiAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIERXX09QX2JyYToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2JyYTogJWxkIiwg
KGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCAyKSk7CiAgICAgICAgICBkYXRhICs9IDI7CiAgICAgICAg
ICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2VxOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bf
ZXEiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZ2U6CiAgICAgICAgICBw
cmludGYgKCJEV19PUF9nZSIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9n
dDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2d0Iik7CiAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIERXX09QX2xlOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbGUiKTsKICAgICAgICAg
IGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfbHQ6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9s
dCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9uZToKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX25lIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX3Nr
aXA6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9za2lwOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQg
KGRhdGEsIDIpKTsKICAgICAgICAgIGRhdGEgKz0gMjsKICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIERXX09QX2xpdDA6CiAgICAgICAgY2FzZSBEV19PUF9saXQxOgogICAgICAgIGNhc2Ug
RFdfT1BfbGl0MjoKICAgICAgICBjYXNlIERXX09QX2xpdDM6CiAgICAgICAgY2FzZSBEV19PUF9s
aXQ0OgogICAgICAgIGNhc2UgRFdfT1BfbGl0NToKICAgICAgICBjYXNlIERXX09QX2xpdDY6CiAg
ICAgICAgY2FzZSBEV19PUF9saXQ3OgogICAgICAgIGNhc2UgRFdfT1BfbGl0ODoKICAgICAgICBj
YXNlIERXX09QX2xpdDk6CiAgICAgICAgY2FzZSBEV19PUF9saXQxMDoKICAgICAgICBjYXNlIERX
X09QX2xpdDExOgogICAgICAgIGNhc2UgRFdfT1BfbGl0MTI6CiAgICAgICAgY2FzZSBEV19PUF9s
aXQxMzoKICAgICAgICBjYXNlIERXX09QX2xpdDE0OgogICAgICAgIGNhc2UgRFdfT1BfbGl0MTU6
CiAgICAgICAgY2FzZSBEV19PUF9saXQxNjoKICAgICAgICBjYXNlIERXX09QX2xpdDE3OgogICAg
ICAgIGNhc2UgRFdfT1BfbGl0MTg6CiAgICAgICAgY2FzZSBEV19PUF9saXQxOToKICAgICAgICBj
YXNlIERXX09QX2xpdDIwOgogICAgICAgIGNhc2UgRFdfT1BfbGl0MjE6CiAgICAgICAgY2FzZSBE
V19PUF9saXQyMjoKICAgICAgICBjYXNlIERXX09QX2xpdDIzOgogICAgICAgIGNhc2UgRFdfT1Bf
bGl0MjQ6CiAgICAgICAgY2FzZSBEV19PUF9saXQyNToKICAgICAgICBjYXNlIERXX09QX2xpdDI2
OgogICAgICAgIGNhc2UgRFdfT1BfbGl0Mjc6CiAgICAgICAgY2FzZSBEV19PUF9saXQyODoKICAg
ICAgICBjYXNlIERXX09QX2xpdDI5OgogICAgICAgIGNhc2UgRFdfT1BfbGl0MzA6CiAgICAgICAg
Y2FzZSBEV19PUF9saXQzMToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2xpdCVkIiwgb3AgLSBE
V19PUF9saXQwKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIERXX09QX3JlZzA6CiAg
ICAgICAgY2FzZSBEV19PUF9yZWcxOgogICAgICAgIGNhc2UgRFdfT1BfcmVnMjoKICAgICAgICBj
YXNlIERXX09QX3JlZzM6CiAgICAgICAgY2FzZSBEV19PUF9yZWc0OgogICAgICAgIGNhc2UgRFdf
T1BfcmVnNToKICAgICAgICBjYXNlIERXX09QX3JlZzY6CiAgICAgICAgY2FzZSBEV19PUF9yZWc3
OgogICAgICAgIGNhc2UgRFdfT1BfcmVnODoKICAgICAgICBjYXNlIERXX09QX3JlZzk6CiAgICAg
ICAgY2FzZSBEV19PUF9yZWcxMDoKICAgICAgICBjYXNlIERXX09QX3JlZzExOgogICAgICAgIGNh
c2UgRFdfT1BfcmVnMTI6CiAgICAgICAgY2FzZSBEV19PUF9yZWcxMzoKICAgICAgICBjYXNlIERX
X09QX3JlZzE0OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMTU6CiAgICAgICAgY2FzZSBEV19PUF9y
ZWcxNjoKICAgICAgICBjYXNlIERXX09QX3JlZzE3OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMTg6
CiAgICAgICAgY2FzZSBEV19PUF9yZWcxOToKICAgICAgICBjYXNlIERXX09QX3JlZzIwOgogICAg
ICAgIGNhc2UgRFdfT1BfcmVnMjE6CiAgICAgICAgY2FzZSBEV19PUF9yZWcyMjoKICAgICAgICBj
YXNlIERXX09QX3JlZzIzOgogICAgICAgIGNhc2UgRFdfT1BfcmVnMjQ6CiAgICAgICAgY2FzZSBE
V19PUF9yZWcyNToKICAgICAgICBjYXNlIERXX09QX3JlZzI2OgogICAgICAgIGNhc2UgRFdfT1Bf
cmVnMjc6CiAgICAgICAgY2FzZSBEV19PUF9yZWcyODoKICAgICAgICBjYXNlIERXX09QX3JlZzI5
OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMzA6CiAgICAgICAgY2FzZSBEV19PUF9yZWczMToKICAg
ICAgICAgIHByaW50ZiAoIkRXX09QX3JlZyVkIiwgb3AgLSBEV19PUF9yZWcwKTsKICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIERXX09QX2JyZWcwOgogICAgICAgIGNhc2UgRFdfT1BfYnJl
ZzE6CiAgICAgICAgY2FzZSBEV19PUF9icmVnMjoKICAgICAgICBjYXNlIERXX09QX2JyZWczOgog
ICAgICAgIGNhc2UgRFdfT1BfYnJlZzQ6CiAgICAgICAgY2FzZSBEV19PUF9icmVnNToKICAgICAg
ICBjYXNlIERXX09QX2JyZWc2OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzc6CiAgICAgICAgY2Fz
ZSBEV19PUF9icmVnODoKICAgICAgICBjYXNlIERXX09QX2JyZWc5OgogICAgICAgIGNhc2UgRFdf
T1BfYnJlZzEwOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzExOgogICAgICAgIGNhc2UgRFdfT1Bf
YnJlZzEyOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzEzOgogICAgICAgIGNhc2UgRFdfT1BfYnJl
ZzE0OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE1OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE2
OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE3OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE4Ogog
ICAgICAgIGNhc2UgRFdfT1BfYnJlZzE5OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzIwOgogICAg
ICAgIGNhc2UgRFdfT1BfYnJlZzIxOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzIyOgogICAgICAg
IGNhc2UgRFdfT1BfYnJlZzIzOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI0OgogICAgICAgIGNh
c2UgRFdfT1BfYnJlZzI1OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI2OgogICAgICAgIGNhc2Ug
RFdfT1BfYnJlZzI3OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI4OgogICAgICAgIGNhc2UgRFdf
T1BfYnJlZzI5OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzMwOgogICAgICAgIGNhc2UgRFdfT1Bf
YnJlZzMxOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfYnJlZyVkOiAlbGQiLCBvcCAtIERXX09Q
X2JyZWcwLAogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQs
IDEpKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIERXX09QX3JlZ3g6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9yZWd4OiAlbHUi
LCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDApKTsKICAgICAgICAgIGRhdGEgKz0g
Ynl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZmJyZWc6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9mYnJlZzogJWxkIiwgcmVhZF9sZWIxMjggKGRhdGEsICZi
eXRlc19yZWFkLCAxKSk7CiAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX2JyZWd4OgogICAgICAgICAgdXZhbHVlID0gcmVhZF9s
ZWIxMjggKGRhdGEsICZieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2JyZWd4OiAlbHUgJWxkIiwgdXZhbHVlLAogICAg
ICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDEpKTsKICAgICAg
ICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdf
T1BfcGllY2U6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9waWVjZTogJWx1IiwgcmVhZF9sZWIx
MjggKGRhdGEsICZieXRlc19yZWFkLCAwKSk7CiAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7
CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2RlcmVmX3NpemU6CiAgICAgICAg
ICBwcmludGYgKCJEV19PUF9kZXJlZl9zaXplOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRhdGEr
KywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF94ZGVyZWZfc2l6ZToK
ICAgICAgICAgIHByaW50ZiAoIkRXX09QX3hkZXJlZl9zaXplOiAlbGQiLCAobG9uZykgYnl0ZV9n
ZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9ub3A6
CiAgICAgICAgICBwcmludGYgKCJEV19PUF9ub3AiKTsKICAgICAgICAgIGJyZWFrOwoKCiAgICAg
ICAgY2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOgogICAgICAgICAgcHJpbnRmICgiRFdf
T1BfcHVzaF9vYmplY3RfYWRkcmVzcyIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBE
V19PUF9jYWxsMjoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NhbGwyOiA8JWx4PiIsIChsb25n
KSBieXRlX2dldCAoZGF0YSwgMikpOwogICAgICAgICAgZGF0YSArPSAyOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9jYWxsNDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2Nh
bGw0OiA8JWx4PiIsIChsb25nKSBieXRlX2dldCAoZGF0YSwgNCkpOwogICAgICAgICAgZGF0YSAr
PSA0OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jYWxsX3JlZjoKICAgICAg
ICAgIHByaW50ZiAoIkRXX09QX2NhbGxfcmVmIik7CiAgICAgICAgICBicmVhazsKCgogICAgICAg
IGNhc2UgRFdfT1BfR05VX3B1c2hfdGxzX2FkZHJlc3M6CiAgICAgICAgICBwcmludGYgKCJEV19P
UF9HTlVfcHVzaF90bHNfYWRkcmVzcyIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICBpZiAob3AgPj0gMHhlMAogICAgICAgICAgICAgICYmIG9wIDw9IDB4ZmYp
CiAgICAgICAgICAgIHByaW50ZiAoKCIoVXNlciBkZWZpbmVkIGxvY2F0aW9uIG9wKSIpKTsKICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIihVbmtub3duIGxvY2F0aW9uIG9wKSIp
KTsKCiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgIHByaW50ZiAoIjsgIik7CiAg
ICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19sb2NfY29udGVudHM7CnN0YXRpYyBiZmRf
dm1hIGRlYnVnX2xvY19zaXplOwoKc3RhdGljIHZvaWQKbG9hZF9kZWJ1Z19sb2MgKGZpbGUpCiAg
ICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWM7CiAgdW5zaWduZWQgaW50
IGk7CgoKICBpZiAoZGVidWdfbG9jX2NvbnRlbnRzICE9ICgodm9pZCAqKTApKQogICAgcmV0dXJu
OwoKCiAgZm9yIChpID0gMCwgc2VjID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVsZl9o
ZWFkZXIuZV9zaG51bTsKICAgICAgIGkrKywgc2VjKyspCiAgICBpZiAoX19leHRlbnNpb25fXyAo
eyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2xvYyIpICYmIChfX3MxX2xlbiA9
IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnX2xvYyIpLCAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiLmRlYnVnX2xvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIu
ZGVidWdfbG9jIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVu
ID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoIi5kZWJ1Z19sb2MiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19sb2Mi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX2xvYyIpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19sb2MiKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAo
X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
ZGVidWdfbG9jIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1
Z19sb2MiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19sb2MiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX2xvYyIpID09IDEpICYmIChfX3MyX2xlbiA9
IHN0cmxlbiAoIi5kZWJ1Z19sb2MiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19sb2MiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMl0pOyBpZiAoX19zMl9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0
OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2Mi
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuZGVidWdfbG9j
IikpKSk7IH0pID09IDApCiAgICAgIGJyZWFrOwoKICBpZiAoaSA9PSBlbGZfaGVhZGVyLmVfc2hu
dW0gfHwgc2VjLT5zaF9zaXplID09IDApCiAgICByZXR1cm47CgogIGRlYnVnX2xvY19zaXplID0g
c2VjLT5zaF9zaXplOwoKICBkZWJ1Z19sb2NfY29udGVudHMgPSAoKGNoYXIgKikKICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNl
dCwgc2VjLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJkZWJ1
Z19sb2Mgc2VjdGlvbiBkYXRhIikpKTsKfQoKc3RhdGljIHZvaWQKZnJlZV9kZWJ1Z19sb2MgKCkK
ewogIGlmIChkZWJ1Z19sb2NfY29udGVudHMgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm47Cgog
IGZyZWUgKChjaGFyICopIGRlYnVnX2xvY19jb250ZW50cyk7CiAgZGVidWdfbG9jX2NvbnRlbnRz
ID0gKCh2b2lkICopMCk7CiAgZGVidWdfbG9jX3NpemUgPSAwOwp9CgoKc3RhdGljIGludApkaXNw
bGF5X2RlYnVnX2xvYyAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1No
ZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgdW5zaWduZWQgY2hhciAqc2VjdGlvbl9l
bmQ7CiAgdW5zaWduZWQgbG9uZyBieXRlczsKICB1bnNpZ25lZCBjaGFyICpzZWN0aW9uX2JlZ2lu
ID0gc3RhcnQ7CiAgYmZkX3ZtYSBhZGRyOwoKICBhZGRyID0gc2VjdGlvbi0+c2hfYWRkcjsKICBi
eXRlcyA9IHNlY3Rpb24tPnNoX3NpemU7CiAgc2VjdGlvbl9lbmQgPSBzdGFydCArIGJ5dGVzOwoK
ICBpZiAoYnl0ZXMgPT0gMCkKICAgIHsKICAgICAgcHJpbnRmICgoIlxuVGhlIC5kZWJ1Z19sb2Mg
c2VjdGlvbiBpcyBlbXB0eS5cbiIpKTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHByaW50ZiAo
KCJDb250ZW50cyBvZiB0aGUgLmRlYnVnX2xvYyBzZWN0aW9uOlxuXG4iKSk7CiAgcHJpbnRmICgo
IlxuICAgIE9mZnNldCAgIEJlZ2luICAgIEVuZCAgICAgIEV4cHJlc3Npb25cbiIpKTsKCiAgd2hp
bGUgKHN0YXJ0IDwgc2VjdGlvbl9lbmQpCiAgICB7CiAgICAgIHVuc2lnbmVkIGxvbmcgYmVnaW47
CiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwogICAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAg
ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwoKICAgICAgb2Zmc2V0ID0gc3RhcnQgLSBzZWN0aW9u
X2JlZ2luOwoKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewoKCgoKCgogICAgICAgICAgYmVnaW4g
PSBieXRlX2dldCAoc3RhcnQsIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplKTsKICAgICAgICAgIHN0
YXJ0ICs9IGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplOwogICAgICAgICAgZW5kID0gYnl0ZV9nZXQg
KHN0YXJ0LCBkZWJ1Z19saW5lX3BvaW50ZXJfc2l6ZSk7CiAgICAgICAgICBzdGFydCArPSBkZWJ1
Z19saW5lX3BvaW50ZXJfc2l6ZTsKCiAgICAgICAgICBpZiAoYmVnaW4gPT0gMCAmJiBlbmQgPT0g
MCkKICAgICAgICAgICAgYnJlYWs7CgoKICAgICAgICAgIGlmIChiZWdpbiA9PSAweGZmZmZmZmZm
KQogICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICBiZWdpbiArPSBhZGRyOwogICAgICAg
ICAgZW5kICs9IGFkZHI7CgogICAgICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHN0YXJ0LCAyKTsK
ICAgICAgICAgIHN0YXJ0ICs9IDI7CgogICAgICAgICAgcHJpbnRmICgiICAgICU4LjhseCAlOC44
bHggJTguOGx4ICgiLCBvZmZzZXQsIGJlZ2luLCBlbmQpOwogICAgICAgICAgZGVjb2RlX2xvY2F0
aW9uX2V4cHJlc3Npb24gKHN0YXJ0LCBkZWJ1Z19saW5lX3BvaW50ZXJfc2l6ZSwgbGVuZ3RoKTsK
ICAgICAgICAgIHByaW50ZiAoIilcbiIpOwoKICAgICAgICAgIHN0YXJ0ICs9IGxlbmd0aDsKICAg
ICAgICB9CiAgICAgIHByaW50ZiAoIlxuIik7CiAgICB9CiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBj
b25zdCBjaGFyICpkZWJ1Z19zdHJfY29udGVudHM7CnN0YXRpYyBiZmRfdm1hIGRlYnVnX3N0cl9z
aXplOwoKc3RhdGljIHZvaWQKbG9hZF9kZWJ1Z19zdHIgKGZpbGUpCiAgICAgRklMRSAqZmlsZTsK
ewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWM7CiAgdW5zaWduZWQgaW50IGk7CgoKICBpZiAoZGVi
dWdfc3RyX2NvbnRlbnRzICE9ICgodm9pZCAqKTApKQogICAgcmV0dXJuOwoKCiAgZm9yIChpID0g
MCwgc2VjID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVsZl9oZWFkZXIuZV9zaG51bTsK
ICAgICAgIGkrKywgc2VjKyspCiAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9s
ZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRp
bl9jb25zdGFudF9wICgiLmRlYnVnX3N0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUp
KSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnX3N0ciIpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9
PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmRl
YnVnX3N0ciIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfc3RyIikgPT0g
MSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHNlYykg
PT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkp
KSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z19zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19zdHIiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX3N0ciIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19zdHIiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIik7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z19zdHIiKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19zdHIiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiLmRlYnVnX3N0ciIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5kZWJ1
Z19zdHIiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikoIi5kZWJ1Z19zdHIiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0
ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi5kZWJ1Z19zdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuZGVidWdfc3RyIikpKSk7IH0pID09IDAp
CiAgICAgIGJyZWFrOwoKICBpZiAoaSA9PSBlbGZfaGVhZGVyLmVfc2hudW0gfHwgc2VjLT5zaF9z
aXplID09IDApCiAgICByZXR1cm47CgogIGRlYnVnX3N0cl9zaXplID0gc2VjLT5zaF9zaXplOwoK
ICBkZWJ1Z19zdHJfY29udGVudHMgPSAoKGNoYXIgKikKICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNldCwgc2VjLT5zaF9zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJkZWJ1Z19zdHIgc2VjdGlvbiBk
YXRhIikpKTsKfQoKc3RhdGljIHZvaWQKZnJlZV9kZWJ1Z19zdHIgKCkKewogIGlmIChkZWJ1Z19z
dHJfY29udGVudHMgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm47CgogIGZyZWUgKChjaGFyICop
IGRlYnVnX3N0cl9jb250ZW50cyk7CiAgZGVidWdfc3RyX2NvbnRlbnRzID0gKCh2b2lkICopMCk7
CiAgZGVidWdfc3RyX3NpemUgPSAwOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmZldGNoX2luZGly
ZWN0X3N0cmluZyAob2Zmc2V0KQogICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Owp7CiAgaWYgKGRl
YnVnX3N0cl9jb250ZW50cyA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAoIjxubyAuZGVidWdf
c3RyIHNlY3Rpb24+Iik7CgogIGlmIChvZmZzZXQgPiBkZWJ1Z19zdHJfc2l6ZSkKICAgIHJldHVy
biAoIjxvZmZzZXQgaXMgdG9vIGJpZz4iKTsKCiAgcmV0dXJuIGRlYnVnX3N0cl9jb250ZW50cyAr
IG9mZnNldDsKfQoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX3N0ciAoc2VjdGlvbiwgc3RhcnQs
IGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hh
ciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgdW5zaWduZWQgbG9uZyBieXRlczsKICBiZmRfdm1hIGFkZHI7CgogIGFkZHIgPSBzZWN0aW9u
LT5zaF9hZGRyOwogIGJ5dGVzID0gc2VjdGlvbi0+c2hfc2l6ZTsKCiAgaWYgKGJ5dGVzID09IDAp
CiAgICB7CiAgICAgIHByaW50ZiAoKCJcblRoZSAuZGVidWdfc3RyIHNlY3Rpb24gaXMgZW1wdHku
XG4iKSk7CiAgICAgIHJldHVybiAwOwogICAgfQoKICBwcmludGYgKCgiQ29udGVudHMgb2YgdGhl
IC5kZWJ1Z19zdHIgc2VjdGlvbjpcblxuIikpOwoKICB3aGlsZSAoYnl0ZXMpCiAgICB7CiAgICAg
IGludCBqOwogICAgICBpbnQgazsKICAgICAgaW50IGxieXRlczsKCiAgICAgIGxieXRlcyA9IChi
eXRlcyA+IDE2ID8gMTYgOiBieXRlcyk7CgogICAgICBwcmludGYgKCIgIDB4JTguOGx4ICIsICh1
bnNpZ25lZCBsb25nKSBhZGRyKTsKCiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgaisrKQogICAg
ICAgIHsKICAgICAgICAgIGlmIChqIDwgbGJ5dGVzKQogICAgICAgICAgICBwcmludGYgKCIlMi4y
eCIsIHN0YXJ0W2pdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiICAiKTsK
CiAgICAgICAgICBpZiAoKGogJiAzKSA9PSAzKQogICAgICAgICAgICBwcmludGYgKCIgIik7CiAg
ICAgICAgfQoKICAgICAgZm9yIChqID0gMDsgaiA8IGxieXRlczsgaisrKQogICAgICAgIHsKICAg
ICAgICAgIGsgPSBzdGFydFtqXTsKICAgICAgICAgIGlmIChrID49ICcgJyAmJiBrIDwgMHg4MCkK
ICAgICAgICAgICAgcHJpbnRmICgiJWMiLCBrKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
cHJpbnRmICgiLiIpOwogICAgICAgIH0KCiAgICAgIHB1dGNoYXIgKCdcbicpOwoKICAgICAgc3Rh
cnQgKz0gbGJ5dGVzOwogICAgICBhZGRyICs9IGxieXRlczsKICAgICAgYnl0ZXMgLT0gbGJ5dGVz
OwogICAgfQoKICByZXR1cm4gMTsKfQoKc3RhdGljIHVuc2lnbmVkIGNoYXIgKgpyZWFkX2FuZF9k
aXNwbGF5X2F0dHJfdmFsdWUgKGF0dHJpYnV0ZSwgZm9ybSwgZGF0YSwgY3Vfb2Zmc2V0LCBwb2lu
dGVyX3NpemUpCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5zaWduZWQgbG9u
ZyBmb3JtOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgdW5zaWduZWQgbG9uZyBjdV9v
ZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBwb2ludGVyX3NpemU7CnsKICB1bnNpZ25lZCBsb25n
IHV2YWx1ZSA9IDA7CiAgdW5zaWduZWQgY2hhciAqYmxvY2tfc3RhcnQgPSAoKHZvaWQgKikwKTsK
ICBpbnQgYnl0ZXNfcmVhZDsKCiAgc3dpdGNoIChmb3JtKQogICAgewogICAgZGVmYXVsdDoKICAg
ICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZl9hZGRyOgogICAgY2FzZSBEV19GT1JNX2Fk
ZHI6CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCBwb2ludGVyX3NpemUpOwogICAgICBk
YXRhICs9IHBvaW50ZXJfc2l6ZTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3N0cnA6
CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCA0KTsKICAgICAgZGF0YSArPSA0OwogICAg
ICBicmVhazsKCiAgICBjYXNlIERXX0ZPUk1fcmVmMToKICAgIGNhc2UgRFdfRk9STV9mbGFnOgog
ICAgY2FzZSBEV19GT1JNX2RhdGExOgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSsrLCAx
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZjI6CiAgICBjYXNlIERXX0ZPUk1f
ZGF0YTI6CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCAyKTsKICAgICAgZGF0YSArPSAy
OwogICAgICBicmVhazsKCiAgICBjYXNlIERXX0ZPUk1fcmVmNDoKICAgIGNhc2UgRFdfRk9STV9k
YXRhNDoKICAgICAgdXZhbHVlID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwogICAgICBkYXRhICs9IDQ7
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zZGF0YToKICAgICAgdXZhbHVlID0gcmVh
ZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgMSk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZl91ZGF0YToKICAgIGNhc2UgRFdf
Rk9STV91ZGF0YToKICAgICAgdXZhbHVlID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVh
ZCwgMCk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgYnJlYWs7CgogICAgY2FzZSBE
V19GT1JNX2luZGlyZWN0OgogICAgICBmb3JtID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNf
cmVhZCwgMCk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgcHJpbnRmICgiICVzIiwg
Z2V0X0ZPUk1fbmFtZSAoZm9ybSkpOwogICAgICByZXR1cm4gcmVhZF9hbmRfZGlzcGxheV9hdHRy
X3ZhbHVlIChhdHRyaWJ1dGUsIGZvcm0sIGRhdGEsIGN1X29mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9zaXplKTsKICAgIH0KCiAgc3dpdGNo
IChmb3JtKQogICAgewogICAgY2FzZSBEV19GT1JNX3JlZl9hZGRyOgogICAgICBwcmludGYgKCIg
PCMlbHg+IiwgdXZhbHVlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZjE6CiAg
ICBjYXNlIERXX0ZPUk1fcmVmMjoKICAgIGNhc2UgRFdfRk9STV9yZWY0OgogICAgY2FzZSBEV19G
T1JNX3JlZl91ZGF0YToKICAgICAgcHJpbnRmICgiIDwlbHg+IiwgdXZhbHVlICsgY3Vfb2Zmc2V0
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX2FkZHI6CiAgICAgIHByaW50ZiAoIiAl
I2x4IiwgdXZhbHVlKTsKCiAgICBjYXNlIERXX0ZPUk1fZmxhZzoKICAgIGNhc2UgRFdfRk9STV9k
YXRhMToKICAgIGNhc2UgRFdfRk9STV9kYXRhMjoKICAgIGNhc2UgRFdfRk9STV9kYXRhNDoKICAg
IGNhc2UgRFdfRk9STV9zZGF0YToKICAgIGNhc2UgRFdfRk9STV91ZGF0YToKICAgICAgcHJpbnRm
ICgiICVsZCIsIHV2YWx1ZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9yZWY4Ogog
ICAgY2FzZSBEV19GT1JNX2RhdGE4OgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSwgNCk7
CiAgICAgIHByaW50ZiAoIiAlbHgiLCB1dmFsdWUpOwogICAgICBwcmludGYgKCIgJWx4IiwgKHVu
c2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhICsgNCwgNCkpOwogICAgICBkYXRhICs9IDg7CiAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6CiAgICAgIHByaW50ZiAoIiAlcyIs
IGRhdGEpOwogICAgICBkYXRhICs9IHN0cmxlbiAoKGNoYXIgKikgZGF0YSkgKyAxOwogICAgICBi
cmVhazsKCiAgICBjYXNlIERXX0ZPUk1fYmxvY2s6CiAgICAgIHV2YWx1ZSA9IHJlYWRfbGViMTI4
IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICBibG9ja19zdGFydCA9IGRhdGEgKyBieXRl
c19yZWFkOwogICAgICBkYXRhID0gZGlzcGxheV9ibG9jayAoYmxvY2tfc3RhcnQsIHV2YWx1ZSk7
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9ibG9jazE6CiAgICAgIHV2YWx1ZSA9IGJ5
dGVfZ2V0IChkYXRhLCAxKTsKICAgICAgYmxvY2tfc3RhcnQgPSBkYXRhICsgMTsKICAgICAgZGF0
YSA9IGRpc3BsYXlfYmxvY2sgKGJsb2NrX3N0YXJ0LCB1dmFsdWUpOwogICAgICBicmVhazsKCiAg
ICBjYXNlIERXX0ZPUk1fYmxvY2syOgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSwgMik7
CiAgICAgIGJsb2NrX3N0YXJ0ID0gZGF0YSArIDI7CiAgICAgIGRhdGEgPSBkaXNwbGF5X2Jsb2Nr
IChibG9ja19zdGFydCwgdXZhbHVlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX2Js
b2NrNDoKICAgICAgdXZhbHVlID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwogICAgICBibG9ja19zdGFy
dCA9IGRhdGEgKyA0OwogICAgICBkYXRhID0gZGlzcGxheV9ibG9jayAoYmxvY2tfc3RhcnQsIHV2
YWx1ZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zdHJwOgogICAgICBwcmludGYg
KCgiIChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHglbHgpOiAlcyIpLAogICAgICAgICAgICAg
IHV2YWx1ZSwgZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nICh1dmFsdWUpKTsKICAgICAgYnJlYWs7Cgog
ICAgY2FzZSBEV19GT1JNX2luZGlyZWN0OgoKICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAg
ICAgd2FybiAoKCJVbnJlY29nbml6ZWQgZm9ybTogJWRcbiIpLCBmb3JtKTsKICAgICAgYnJlYWs7
CiAgICB9CgoKCiAgcHJpbnRmICgiXHQiKTsKCiAgc3dpdGNoIChhdHRyaWJ1dGUpCiAgICB7CiAg
ICBjYXNlIERXX0FUX2lubGluZToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAg
ICAgIGNhc2UgRFdfSU5MX25vdF9pbmxpbmVkOgogICAgICAgICAgcHJpbnRmICgoIihub3QgaW5s
aW5lZCkiKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX0lOTF9pbmxpbmVkOgog
ICAgICAgICAgcHJpbnRmICgoIihpbmxpbmVkKSIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgRFdfSU5MX2RlY2xhcmVkX25vdF9pbmxpbmVkOgogICAgICAgICAgcHJpbnRmICgoIihk
ZWNsYXJlZCBhcyBpbmxpbmUgYnV0IGlnbm9yZWQpIikpOwogICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSBEV19JTkxfZGVjbGFyZWRfaW5saW5lZDoKICAgICAgICAgIHByaW50ZiAoKCIoZGVj
bGFyZWQgYXMgaW5saW5lIGFuZCBpbmxpbmVkKSIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICBwcmludGYgKCgiICAoVW5rbm93biBpbmxpbmUgYXR0cmlidXRl
IHZhbHVlOiAlbHgpIiksIHV2YWx1ZSk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAg
IGJyZWFrOwoKICAgIGNhc2UgRFdfQVRfbGFuZ3VhZ2U6CiAgICAgIHN3aXRjaCAodXZhbHVlKQog
ICAgICAgIHsKICAgICAgICBjYXNlIERXX0xBTkdfQzogcHJpbnRmICgiKG5vbi1BTlNJIEMpIik7
IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19DODk6IHByaW50ZiAoIihBTlNJIEMpIik7IGJy
ZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19DX3BsdXNfcGx1czogcHJpbnRmICgiKEMrKykiKTsg
YnJlYWs7CiAgICAgICAgY2FzZSBEV19MQU5HX0ZvcnRyYW43NzogcHJpbnRmICgiKEZPUlRSQU4g
NzcpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19Gb3J0cmFuOTA6IHByaW50ZiAoIihG
b3J0cmFuIDkwKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfTW9kdWxhMjogcHJpbnRm
ICgiKE1vZHVsYSAyKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfUGFzY2FsODM6IHBy
aW50ZiAoIihBTlNJIFBhc2NhbCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19MQU5HX0FkYTgz
OiBwcmludGYgKCIoQWRhKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQ29ib2w3NDog
cHJpbnRmICgiKENvYm9sIDc0KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQ29ib2w4
NTogcHJpbnRmICgiKENvYm9sIDg1KSIpOyBicmVhazsKCiAgICAgICAgY2FzZSBEV19MQU5HX0M5
OTogcHJpbnRmICgiKEFOU0kgQzk5KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQWRh
OTU6IHByaW50ZiAoIihBREEgOTUpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19Gb3J0
cmFuOTU6IHByaW50ZiAoIihGb3J0cmFuIDk1KSIpOyBicmVhazsKCiAgICAgICAgY2FzZSBEV19M
QU5HX01pcHNfQXNzZW1ibGVyOiBwcmludGYgKCIoTUlQUyBhc3NlbWJsZXIpIik7IGJyZWFrOwoK
ICAgICAgICBjYXNlIERXX0xBTkdfVXBjOiBwcmludGYgKCIoVW5pZmllZCBQYXJhbGxlbCBDKSIp
OyBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcHJpbnRmICgiKFVua25vd246ICVs
eCkiLCB1dmFsdWUpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAg
ICBjYXNlIERXX0FUX2VuY29kaW5nOgogICAgICBzd2l0Y2ggKHV2YWx1ZSkKICAgICAgICB7CiAg
ICAgICAgY2FzZSBEV19BVEVfdm9pZDogcHJpbnRmICgiKHZvaWQpIik7IGJyZWFrOwogICAgICAg
IGNhc2UgRFdfQVRFX2FkZHJlc3M6IHByaW50ZiAoIihtYWNoaW5lIGFkZHJlc3MpIik7IGJyZWFr
OwogICAgICAgIGNhc2UgRFdfQVRFX2Jvb2xlYW46IHByaW50ZiAoIihib29sZWFuKSIpOyBicmVh
azsKICAgICAgICBjYXNlIERXX0FURV9jb21wbGV4X2Zsb2F0OiBwcmludGYgKCIoY29tcGxleCBm
bG9hdCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19BVEVfZmxvYXQ6IHByaW50ZiAoIihmbG9h
dCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19BVEVfc2lnbmVkOiBwcmludGYgKCIoc2lnbmVk
KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV9zaWduZWRfY2hhcjogcHJpbnRmICgiKHNp
Z25lZCBjaGFyKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV91bnNpZ25lZDogcHJpbnRm
ICgiKHVuc2lnbmVkKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV91bnNpZ25lZF9jaGFy
OiBwcmludGYgKCIodW5zaWduZWQgY2hhcikiKTsgYnJlYWs7CgogICAgICAgIGNhc2UgRFdfQVRF
X2ltYWdpbmFyeV9mbG9hdDogcHJpbnRmICgiKGltYWdpbmFyeSBmbG9hdCkiKTsgYnJlYWs7CiAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgIGlmICh1dmFsdWUgPj0gMHg4MAogICAgICAgICAgICAg
ICYmIHV2YWx1ZSA8PSAweGZmKQogICAgICAgICAgICBwcmludGYgKCIodXNlciBkZWZpbmVkIHR5
cGUpIik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50ZiAoIih1bmtub3duIHR5cGUp
Iik7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdf
QVRfYWNjZXNzaWJpbGl0eToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAgICAg
IGNhc2UgRFdfQUNDRVNTX3B1YmxpYzogcHJpbnRmICgiKHB1YmxpYykiKTsgYnJlYWs7CiAgICAg
ICAgY2FzZSBEV19BQ0NFU1NfcHJvdGVjdGVkOiBwcmludGYgKCIocHJvdGVjdGVkKSIpOyBicmVh
azsKICAgICAgICBjYXNlIERXX0FDQ0VTU19wcml2YXRlOiBwcmludGYgKCIocHJpdmF0ZSkiKTsg
YnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHByaW50ZiAoIih1bmtub3duIGFjY2Vz
c2liaWxpdHkpIik7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAg
IGNhc2UgRFdfQVRfdmlzaWJpbGl0eToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewog
ICAgICAgIGNhc2UgRFdfVklTX2xvY2FsOiBwcmludGYgKCIobG9jYWwpIik7IGJyZWFrOwogICAg
ICAgIGNhc2UgRFdfVklTX2V4cG9ydGVkOiBwcmludGYgKCIoZXhwb3J0ZWQpIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgRFdfVklTX3F1YWxpZmllZDogcHJpbnRmICgiKHF1YWxpZmllZCkiKTsgYnJl
YWs7CiAgICAgICAgZGVmYXVsdDogcHJpbnRmICgiKHVua25vd24gdmlzaWJpbGl0eSkiKTsgYnJl
YWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIERXX0FUX3ZpcnR1YWxpdHk6CiAg
ICAgIHN3aXRjaCAodXZhbHVlKQogICAgICAgIHsKICAgICAgICBjYXNlIERXX1ZJUlRVQUxJVFlf
bm9uZTogcHJpbnRmICgiKG5vbmUpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfVklSVFVBTElU
WV92aXJ0dWFsOiBwcmludGYgKCIodmlydHVhbCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19W
SVJUVUFMSVRZX3B1cmVfdmlydHVhbDpwcmludGYgKCIocHVyZV92aXJ0dWFsKSIpOyBicmVhazsK
ICAgICAgICBkZWZhdWx0OiBwcmludGYgKCIodW5rbm93biB2aXJ0dWFsaXR5KSIpOyBicmVhazsK
ICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfQVRfaWRlbnRpZmllcl9jYXNlOgog
ICAgICBzd2l0Y2ggKHV2YWx1ZSkKICAgICAgICB7CiAgICAgICAgY2FzZSBEV19JRF9jYXNlX3Nl
bnNpdGl2ZTogcHJpbnRmICgiKGNhc2Vfc2Vuc2l0aXZlKSIpOyBicmVhazsKICAgICAgICBjYXNl
IERXX0lEX3VwX2Nhc2U6IHByaW50ZiAoIih1cF9jYXNlKSIpOyBicmVhazsKICAgICAgICBjYXNl
IERXX0lEX2Rvd25fY2FzZTogcHJpbnRmICgiKGRvd25fY2FzZSkiKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSBEV19JRF9jYXNlX2luc2Vuc2l0aXZlOiBwcmludGYgKCIoY2FzZV9pbnNlbnNpdGl2ZSki
KTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDogcHJpbnRmICgiKHVua25vd24gY2FzZSkiKTsgYnJl
YWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIERXX0FUX2NhbGxpbmdfY29udmVu
dGlvbjoKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAgICAgIGNhc2UgRFdfQ0Nf
bm9ybWFsOiBwcmludGYgKCIobm9ybWFsKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0NDX3By
b2dyYW06IHByaW50ZiAoIihwcm9ncmFtKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0NDX25v
Y2FsbDogcHJpbnRmICgiKG5vY2FsbCkiKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgIGlmICh1dmFsdWUgPj0gMHg0MAogICAgICAgICAgICAgICYmIHV2YWx1ZSA8PSAweGZmKQog
ICAgICAgICAgICBwcmludGYgKCIodXNlciBkZWZpbmVkKSIpOwogICAgICAgICAgZWxzZQogICAg
ICAgICAgICBwcmludGYgKCIodW5rbm93biBjb252ZW50aW9uKSIpOwogICAgICAgIH0KICAgICAg
YnJlYWs7CgogICAgY2FzZSBEV19BVF9vcmRlcmluZzoKICAgICAgc3dpdGNoICh1dmFsdWUpCiAg
ICAgICAgewogICAgICAgIGNhc2UgLTE6IHByaW50ZiAoIih1bmRlZmluZWQpIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgMDogcHJpbnRmICgiKHJvdyBtYWpvcikiKTsgYnJlYWs7CiAgICAgICAgY2Fz
ZSAxOiBwcmludGYgKCIoY29sdW1uIG1ham9yKSIpOyBicmVhazsKICAgICAgICB9CiAgICAgIGJy
ZWFrOwoKICAgIGNhc2UgRFdfQVRfZnJhbWVfYmFzZToKICAgIGNhc2UgRFdfQVRfbG9jYXRpb246
CiAgICBjYXNlIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uOgogICAgY2FzZSBEV19BVF92dGFi
bGVfZWxlbV9sb2NhdGlvbjoKICAgIGNhc2UgRFdfQVRfYWxsb2NhdGVkOgogICAgY2FzZSBEV19B
VF9hc3NvY2lhdGVkOgogICAgY2FzZSBEV19BVF9kYXRhX2xvY2F0aW9uOgogICAgY2FzZSBEV19B
VF9zdHJpZGU6CiAgICBjYXNlIERXX0FUX3VwcGVyX2JvdW5kOgogICAgY2FzZSBEV19BVF9sb3dl
cl9ib3VuZDoKICAgICAgaWYgKGJsb2NrX3N0YXJ0KQogICAgICAgIHsKICAgICAgICAgIHByaW50
ZiAoIigiKTsKICAgICAgICAgIGRlY29kZV9sb2NhdGlvbl9leHByZXNzaW9uIChibG9ja19zdGFy
dCwgcG9pbnRlcl9zaXplLCB1dmFsdWUpOwogICAgICAgICAgcHJpbnRmICgiKSIpOwogICAgICAg
IH0KICAgICAgZWxzZSBpZiAoZm9ybSA9PSBEV19GT1JNX2RhdGE0KQogICAgICAgIHsKICAgICAg
ICAgIHByaW50ZiAoIigiKTsKICAgICAgICAgIHByaW50ZiAoImxvY2F0aW9uIGxpc3QiKTsKICAg
ICAgICAgIHByaW50ZiAoIikiKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6
CiAgICAgIGJyZWFrOwogICAgfQoKICByZXR1cm4gZGF0YTsKfQoKc3RhdGljIHVuc2lnbmVkIGNo
YXIgKgpyZWFkX2FuZF9kaXNwbGF5X2F0dHIgKGF0dHJpYnV0ZSwgZm9ybSwgZGF0YSwgY3Vfb2Zm
c2V0LCBwb2ludGVyX3NpemUpCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5z
aWduZWQgbG9uZyBmb3JtOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgdW5zaWduZWQg
bG9uZyBjdV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBwb2ludGVyX3NpemU7CnsKICBwcmlu
dGYgKCIgICAgICUtMThzOiIsIGdldF9BVF9uYW1lIChhdHRyaWJ1dGUpKTsKICBkYXRhID0gcmVh
ZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlIChhdHRyaWJ1dGUsIGZvcm0sIGRhdGEsIGN1X29mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3NpemUpOwog
IHByaW50ZiAoIlxuIik7CiAgcmV0dXJuIGRhdGE7Cn0KCnN0YXRpYyBpbnQKZGlzcGxheV9kZWJ1
Z19pbmZvIChzZWN0aW9uLCBzdGFydCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2Vj
dGlvbjsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpmaWxlOwp7CiAgdW5z
aWduZWQgY2hhciAqZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwogIHVuc2lnbmVkIGNo
YXIgKnNlY3Rpb25fYmVnaW4gPSBzdGFydDsKCiAgcHJpbnRmICgoIlRoZSBzZWN0aW9uICVzIGNv
bnRhaW5zOlxuXG4iKSwgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CgogIGxvYWRfZGVidWdfc3RyIChm
aWxlKTsKICBsb2FkX2RlYnVnX2xvYyAoZmlsZSk7CgogIHdoaWxlIChzdGFydCA8IGVuZCkKICAg
IHsKICAgICAgRFdBUkYyX0V4dGVybmFsX0NvbXBVbml0ICpleHRlcm5hbDsKICAgICAgRFdBUkYy
X0ludGVybmFsX0NvbXBVbml0IGNvbXB1bml0OwogICAgICBFbGZfSW50ZXJuYWxfU2hkciAqcmVs
c2VjOwogICAgICB1bnNpZ25lZCBjaGFyICp0YWdzOwogICAgICB1bnNpZ25lZCBpbnQgaTsKICAg
ICAgaW50IGxldmVsOwogICAgICB1bnNpZ25lZCBsb25nIGN1X29mZnNldDsKCiAgICAgIGV4dGVy
bmFsID0gKERXQVJGMl9FeHRlcm5hbF9Db21wVW5pdCAqKSBzdGFydDsKCiAgICAgIGNvbXB1bml0
LmN1X2xlbmd0aCA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+Y3VfbGVuZ3RoLCBzaXplb2YgKGV4dGVy
bmFsLT5jdV9sZW5ndGgpKTsKICAgICAgY29tcHVuaXQuY3VfdmVyc2lvbiA9IGJ5dGVfZ2V0IChl
eHRlcm5hbC0+Y3VfdmVyc2lvbiwgc2l6ZW9mIChleHRlcm5hbC0+Y3VfdmVyc2lvbikpOwogICAg
ICBjb21wdW5pdC5jdV9hYmJyZXZfb2Zmc2V0ID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5jdV9hYmJy
ZXZfb2Zmc2V0LCBzaXplb2YgKGV4dGVybmFsLT5jdV9hYmJyZXZfb2Zmc2V0KSk7CiAgICAgIGNv
bXB1bml0LmN1X3BvaW50ZXJfc2l6ZSA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+Y3VfcG9pbnRlcl9z
aXplLCBzaXplb2YgKGV4dGVybmFsLT5jdV9wb2ludGVyX3NpemUpKTsKCiAgICAgIGlmIChjb21w
dW5pdC5jdV9sZW5ndGggPT0gMHhmZmZmZmZmZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgo
IjY0LWJpdCBEV0FSRiBkZWJ1ZyBpbmZvIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuIikpOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKCgogICAgICBmb3IgKHJlbHNlYyA9IHNlY3Rpb25faGVh
ZGVyczsKICAgICAgICAgICByZWxzZWMgPCBzZWN0aW9uX2hlYWRlcnMgKyBlbGZfaGVhZGVyLmVf
c2hudW07CiAgICAgICAgICAgKytyZWxzZWMpCiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQg
bG9uZyBucmVsYXM7CiAgICAgICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsYSwgKnJwOwogICAg
ICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXNlYzsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9T
eW0gKnN5bXRhYjsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKCiAgICAgICAgICBp
ZiAocmVsc2VjLT5zaF90eXBlICE9IDQKICAgICAgICAgICAgICB8fCAoc2VjdGlvbl9oZWFkZXJz
ICsgKChyZWxzZWMtPnNoX2luZm8pIDwgMHhGRjAwID8gKHJlbHNlYy0+c2hfaW5mbykgOiAoKHJl
bHNlYy0+c2hfaW5mbykgPD0gMHhGRkZGID8gMCA6IChyZWxzZWMtPnNoX2luZm8pIC0gKDB4RkZG
RiArIDEgLSAweEZGMDApKSkpICE9IHNlY3Rpb24KICAgICAgICAgICAgICB8fCByZWxzZWMtPnNo
X3NpemUgPT0gMCkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgaWYgKCFzbHVycF9y
ZWxhX3JlbG9jcyAoZmlsZSwgcmVsc2VjLT5zaF9vZmZzZXQsIHJlbHNlYy0+c2hfc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgcmVsYSwgJiBucmVsYXMpKQogICAgICAg
ICAgICByZXR1cm4gMDsKCiAgICAgICAgICBzeW1zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChy
ZWxzZWMtPnNoX2xpbmspIDwgMHhGRjAwID8gKHJlbHNlYy0+c2hfbGluaykgOiAoKHJlbHNlYy0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChyZWxzZWMtPnNoX2xpbmspIC0gKDB4RkZGRiArIDEg
LSAweEZGMDApKSkpOwogICAgICAgICAgc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJp
dF9lbGZfc3ltYm9scyAoZmlsZSwgc3ltc2VjKSA6IGdldF82NGJpdF9lbGZfc3ltYm9scyAoZmls
ZSwgc3ltc2VjKSk7CgogICAgICAgICAgZm9yIChycCA9IHJlbGE7IHJwIDwgcmVsYSArIG5yZWxh
czsgKytycCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmIChycC0+cl9vZmZzZXQKICAg
ICAgICAgICAgICAgICAgIT0gKGJmZF92bWEpICgodW5zaWduZWQgY2hhciAqKSAmZXh0ZXJuYWwt
PmN1X2FiYnJldl9vZmZzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHNlY3Rp
b25fYmVnaW4pKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgIGlmIChp
c18zMmJpdF9lbGYpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN5bSA9IHN5
bXRhYiArICgocnAtPnJfaW5mbykgPj4gOCk7CgogICAgICAgICAgICAgICAgICBpZiAoKChycC0+
cl9pbmZvKSA+PiA4KSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAmJiAoKHN5bS0+c3RfaW5m
bykgJiAweEYpICE9IDMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHN5bWJvbCB0eXBlICV1XG4iKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgoc3ltLT5zdF9pbmZvKSAmIDB4RikpOwogICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgc3ltID0gc3ltdGFiICsgKChycC0+cl9pbmZvKSA+PiAzMik7CgogICAgICAgICAgICAgICAg
ICBpZiAoKChycC0+cl9pbmZvKSA+PiAzMikgIT0gMAogICAgICAgICAgICAgICAgICAgICAgJiYg
KChzeW0tPnN0X2luZm8pICYgMHhGKSAhPSAzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIHdhcm4gKCgiU2tpcHBpbmcgdW5leHBlY3RlZCBzeW1ib2wgdHlwZSAl
dVxuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN5bS0+c3RfaW5mbykgJiAweEYp
KTsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgY29tcHVuaXQuY3VfYWJicmV2X29mZnNl
dCA9IHJwLT5yX2FkZGVuZDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAg
ICAgICAgIGZyZWUgKHJlbGEpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgdGFn
cyA9IHN0YXJ0ICsgc2l6ZW9mICgqZXh0ZXJuYWwpOwogICAgICBjdV9vZmZzZXQgPSBzdGFydCAt
IHNlY3Rpb25fYmVnaW47CiAgICAgIHN0YXJ0ICs9IGNvbXB1bml0LmN1X2xlbmd0aCArIHNpemVv
ZiAoZXh0ZXJuYWwtPmN1X2xlbmd0aCk7CgogICAgICBwcmludGYgKCgiICBDb21waWxhdGlvbiBV
bml0IEAgJWx4OlxuIiksIGN1X29mZnNldCk7CiAgICAgIHByaW50ZiAoKCIgICBMZW5ndGg6ICAg
ICAgICAlbGRcbiIpLCBjb21wdW5pdC5jdV9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICAgVmVy
c2lvbjogICAgICAgJWRcbiIpLCBjb21wdW5pdC5jdV92ZXJzaW9uKTsKICAgICAgcHJpbnRmICgo
IiAgIEFiYnJldiBPZmZzZXQ6ICVsZFxuIiksIGNvbXB1bml0LmN1X2FiYnJldl9vZmZzZXQpOwog
ICAgICBwcmludGYgKCgiICAgUG9pbnRlciBTaXplOiAgJWRcbiIpLCBjb21wdW5pdC5jdV9wb2lu
dGVyX3NpemUpOwoKICAgICAgaWYgKGNvbXB1bml0LmN1X3ZlcnNpb24gIT0gMikKICAgICAgICB7
CiAgICAgICAgICB3YXJuICgoIk9ubHkgdmVyc2lvbiAyIERXQVJGIGRlYnVnIGluZm9ybWF0aW9u
IGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iKSk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICB9CgogICAgICBmcmVlX2FiYnJldnMgKCk7CgoKICAgICAgewogICAgICAgIEVsZl9JbnRlcm5h
bF9TaGRyICpzZWM7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYmVnaW47CgoKICAgICAgICBmb3Ig
KGkgPSAwLCBzZWMgPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICAgICAgICBpIDwgZWxmX2hlYWRl
ci5lX3NobnVtOwogICAgICAgICAgICAgaSsrLCBzZWMrKykKICAgICAgICAgIGlmIChfX2V4dGVu
c2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCIuZGVidWdfYWJicmV2IikgJiYg
KF9fczFfbGVuID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZGVidWdf
YWJicmV2IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIuZGVidWdfYWJicmV2IikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIi5kZWJ1Z19hYmJyZXYiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkg
PyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCAoX19jb25zdCBjaGFyICopICgi
LmRlYnVnX2FiYnJldiIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9s
ZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCBfX3MxX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2FiYnJldiIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiLmRlYnVnX2FiYnJldiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIuZGVidWdfYWJicmV2IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgiLmRlYnVnX2FiYnJldiIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYiKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYi
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9f
czFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2FiYnJldiIp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmRlYnVnX2FiYnJldiIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfYWJicmV2IikgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuICgiLmRlYnVnX2FiYnJldiIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSgiLmRlYnVnX2FiYnJldiIpKVswXSk7IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsxXSk7IGlmIChfX3My
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVswXTsgaWYg
KF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJl
diIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5kZWJ1Z19hYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0
cmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSwgIi5kZWJ1Z19hYmJyZXYiKSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgIGlmIChpID09IGVsZl9oZWFkZXIuZV9zaG51bSB8fCBzZWMtPnNoX3Np
emUgPT0gMCkKICAgICAgICAgIHsKICAgICAgICAgICAgd2FybiAoKCJVbmFibGUgdG8gbG9jYXRl
IC5kZWJ1Z19hYmJyZXYgc2VjdGlvbiFcbiIpKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICB9CgogICAgICAgIGJlZ2luID0gKCh1bnNpZ25lZCBjaGFyICopCiAgICAgICAgICAgICAg
ICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNldCwgc2VjLT5zaF9z
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoImRlYnVnX2FiYnJldiBzZWN0aW9uIGRh
dGEiKSkpOwogICAgICAgIGlmICghYmVnaW4pCiAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAg
cHJvY2Vzc19hYmJyZXZfc2VjdGlvbiAoYmVnaW4gKyBjb21wdW5pdC5jdV9hYmJyZXZfb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luICsgc2VjLT5zaF9zaXplKTsK
CiAgICAgICAgZnJlZSAoYmVnaW4pOwogICAgICB9CgogICAgICBsZXZlbCA9IDA7CiAgICAgIHdo
aWxlICh0YWdzIDwgc3RhcnQpCiAgICAgICAgewogICAgICAgICAgaW50IGJ5dGVzX3JlYWQ7CiAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFiYnJldl9udW1iZXI7CiAgICAgICAgICBhYmJyZXZfZW50
cnkgKmVudHJ5OwogICAgICAgICAgYWJicmV2X2F0dHIgKmF0dHI7CgogICAgICAgICAgYWJicmV2
X251bWJlciA9IHJlYWRfbGViMTI4ICh0YWdzLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAg
dGFncyArPSBieXRlc19yZWFkOwoKCiAgICAgICAgICBpZiAoYWJicmV2X251bWJlciA9PSAwKQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgLS1sZXZlbDsKICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgfQoKCgogICAgICAgICAgZm9yIChlbnRyeSA9IGZpcnN0X2FiYnJldjsK
ICAgICAgICAgICAgICAgZW50cnkgJiYgZW50cnktPmVudHJ5ICE9IGFiYnJldl9udW1iZXI7CiAg
ICAgICAgICAgICAgIGVudHJ5ID0gZW50cnktPm5leHQpCiAgICAgICAgICAgIGNvbnRpbnVlOwoK
ICAgICAgICAgIGlmIChlbnRyeSA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIHdhcm4gKCgiVW5hYmxlIHRvIGxvY2F0ZSBlbnRyeSAlbHUgaW4gdGhlIGFiYnJldmlh
dGlvbiB0YWJsZVxuIiksCiAgICAgICAgICAgICAgICAgICAgYWJicmV2X251bWJlcik7CiAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBwcmludGYgKCgiIDwl
ZD48JWx4PjogQWJicmV2IE51bWJlcjogJWx1ICglcylcbiIpLAogICAgICAgICAgICAgICAgICBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpICh0YWdzIC0gc2VjdGlvbl9i
ZWdpbiAtIGJ5dGVzX3JlYWQpLAogICAgICAgICAgICAgICAgICBhYmJyZXZfbnVtYmVyLAogICAg
ICAgICAgICAgICAgICBnZXRfVEFHX25hbWUgKGVudHJ5LT50YWcpKTsKCiAgICAgICAgICBmb3Ig
KGF0dHIgPSBlbnRyeS0+Zmlyc3RfYXR0cjsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpCiAgICAg
ICAgICAgIHRhZ3MgPSByZWFkX2FuZF9kaXNwbGF5X2F0dHIgKGF0dHItPmF0dHJpYnV0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+Zm9ybSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncywgY3Vfb2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdW5pdC5jdV9wb2ludGVy
X3NpemUpOwoKICAgICAgICAgIGlmIChlbnRyeS0+Y2hpbGRyZW4pCiAgICAgICAgICAgICsrbGV2
ZWw7CiAgICAgICAgfQogICAgfQoKICBmcmVlX2RlYnVnX3N0ciAoKTsKICBmcmVlX2RlYnVnX2xv
YyAoKTsKCiAgcHJpbnRmICgiXG4iKTsKCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZGlzcGxh
eV9kZWJ1Z19hcmFuZ2VzIChzZWN0aW9uLCBzdGFydCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpmaWxl
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBz
dGFydCArIHNlY3Rpb24tPnNoX3NpemU7CgogIHByaW50ZiAoKCJUaGUgc2VjdGlvbiAlcyBjb250
YWluczpcblxuIiksICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2Vj
dGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpOwoKICB3aGlsZSAoc3RhcnQgPCBlbmQp
CiAgICB7CiAgICAgIERXQVJGMl9FeHRlcm5hbF9BUmFuZ2UgKmV4dGVybmFsOwogICAgICBEV0FS
RjJfSW50ZXJuYWxfQVJhbmdlIGFyYW5nZTsKICAgICAgdW5zaWduZWQgY2hhciAqcmFuZ2VzOwog
ICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzOwog
ICAgICBpbnQgZXhjZXNzOwoKICAgICAgZXh0ZXJuYWwgPSAoRFdBUkYyX0V4dGVybmFsX0FSYW5n
ZSAqKSBzdGFydDsKCiAgICAgIGFyYW5nZS5hcl9sZW5ndGggPSBieXRlX2dldCAoZXh0ZXJuYWwt
PmFyX2xlbmd0aCwgc2l6ZW9mIChleHRlcm5hbC0+YXJfbGVuZ3RoKSk7CiAgICAgIGFyYW5nZS5h
cl92ZXJzaW9uID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5hcl92ZXJzaW9uLCBzaXplb2YgKGV4dGVy
bmFsLT5hcl92ZXJzaW9uKSk7CiAgICAgIGFyYW5nZS5hcl9pbmZvX29mZnNldCA9IGJ5dGVfZ2V0
IChleHRlcm5hbC0+YXJfaW5mb19vZmZzZXQsIHNpemVvZiAoZXh0ZXJuYWwtPmFyX2luZm9fb2Zm
c2V0KSk7CiAgICAgIGFyYW5nZS5hcl9wb2ludGVyX3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwt
PmFyX3BvaW50ZXJfc2l6ZSwgc2l6ZW9mIChleHRlcm5hbC0+YXJfcG9pbnRlcl9zaXplKSk7CiAg
ICAgIGFyYW5nZS5hcl9zZWdtZW50X3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPmFyX3NlZ21l
bnRfc2l6ZSwgc2l6ZW9mIChleHRlcm5hbC0+YXJfc2VnbWVudF9zaXplKSk7CgogICAgICBpZiAo
YXJhbmdlLmFyX2xlbmd0aCA9PSAweGZmZmZmZmZmKQogICAgICAgIHsKICAgICAgICAgIHdhcm4g
KCgiNjQtYml0IERXQVJGIGFyYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LlxuIikpOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKGFyYW5nZS5hcl92ZXJzaW9uICE9IDIp
CiAgICAgICAgewogICAgICAgICAgd2FybiAoKCJPbmx5IERXQVJGIDIgYXJhbmdlcyBhcmUgY3Vy
cmVudGx5IHN1cHBvcnRlZC5cbiIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAg
IHByaW50ZiAoKCIgIExlbmd0aDogICAgICAgICAgICAgICAgICAgJWxkXG4iKSwgYXJhbmdlLmFy
X2xlbmd0aCk7CiAgICAgIHByaW50ZiAoKCIgIFZlcnNpb246ICAgICAgICAgICAgICAgICAgJWRc
biIpLCBhcmFuZ2UuYXJfdmVyc2lvbik7CiAgICAgIHByaW50ZiAoKCIgIE9mZnNldCBpbnRvIC5k
ZWJ1Z19pbmZvOiAgJWx4XG4iKSwgYXJhbmdlLmFyX2luZm9fb2Zmc2V0KTsKICAgICAgcHJpbnRm
ICgoIiAgUG9pbnRlciBTaXplOiAgICAgICAgICAgICAlZFxuIiksIGFyYW5nZS5hcl9wb2ludGVy
X3NpemUpOwogICAgICBwcmludGYgKCgiICBTZWdtZW50IFNpemU6ICAgICAgICAgICAgICVkXG4i
KSwgYXJhbmdlLmFyX3NlZ21lbnRfc2l6ZSk7CgogICAgICBwcmludGYgKCgiXG4gICAgQWRkcmVz
cyAgTGVuZ3RoXG4iKSk7CgogICAgICByYW5nZXMgPSBzdGFydCArIHNpemVvZiAoKmV4dGVybmFs
KTsKCgogICAgICBleGNlc3MgPSBzaXplb2YgKCpleHRlcm5hbCkgJSAoMiAqIGFyYW5nZS5hcl9w
b2ludGVyX3NpemUpOwogICAgICBpZiAoZXhjZXNzKQogICAgICAgIHJhbmdlcyArPSAoMiAqIGFy
YW5nZS5hcl9wb2ludGVyX3NpemUpIC0gZXhjZXNzOwoKICAgICAgZm9yICg7OykKICAgICAgICB7
CiAgICAgICAgICBhZGRyZXNzID0gYnl0ZV9nZXQgKHJhbmdlcywgYXJhbmdlLmFyX3BvaW50ZXJf
c2l6ZSk7CgogICAgICAgICAgcmFuZ2VzICs9IGFyYW5nZS5hcl9wb2ludGVyX3NpemU7CgogICAg
ICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHJhbmdlcywgYXJhbmdlLmFyX3BvaW50ZXJfc2l6ZSk7
CgogICAgICAgICAgcmFuZ2VzICs9IGFyYW5nZS5hcl9wb2ludGVyX3NpemU7CgoKICAgICAgICAg
IGlmIChhZGRyZXNzID09IDAgJiYgbGVuZ3RoID09IDApCiAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgIHByaW50ZiAoIiAgICAlOC44bHggJWx1XG4iLCBhZGRyZXNzLCBsZW5ndGgpOwogICAg
ICAgIH0KCiAgICAgIHN0YXJ0ICs9IGFyYW5nZS5hcl9sZW5ndGggKyBzaXplb2YgKGV4dGVybmFs
LT5hcl9sZW5ndGgpOwogICAgfQoKICBwcmludGYgKCJcbiIpOwoKICByZXR1cm4gMTsKfQoKdHlw
ZWRlZiBzdHJ1Y3QgRnJhbWVfQ2h1bmsKewogIHN0cnVjdCBGcmFtZV9DaHVuayAqbmV4dDsKICB1
bnNpZ25lZCBjaGFyICpjaHVua19zdGFydDsKICBpbnQgbmNvbHM7CgogIHNob3J0IGludCAqY29s
X3R5cGU7CiAgaW50ICpjb2xfb2Zmc2V0OwogIGNoYXIgKmF1Z21lbnRhdGlvbjsKICB1bnNpZ25l
ZCBpbnQgY29kZV9mYWN0b3I7CiAgaW50IGRhdGFfZmFjdG9yOwogIHVuc2lnbmVkIGxvbmcgcGNf
YmVnaW47CiAgdW5zaWduZWQgbG9uZyBwY19yYW5nZTsKICBpbnQgY2ZhX3JlZzsKICBpbnQgY2Zh
X29mZnNldDsKICBpbnQgcmE7CiAgdW5zaWduZWQgY2hhciBmZGVfZW5jb2Rpbmc7Cn0KRnJhbWVf
Q2h1bms7CgoKCgoKc3RhdGljIHZvaWQgZnJhbWVfbmVlZF9zcGFjZSAoRnJhbWVfQ2h1bmsgKiwg
aW50KTsKc3RhdGljIHZvaWQgZnJhbWVfZGlzcGxheV9yb3cgKEZyYW1lX0NodW5rICosIGludCAq
LCBpbnQgKik7CnN0YXRpYyBpbnQgc2l6ZV9vZl9lbmNvZGVkX3ZhbHVlIChpbnQpOwoKc3RhdGlj
IHZvaWQKZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJlZykKICAgICBGcmFtZV9DaHVuayAqZmM7CiAg
ICAgaW50IHJlZzsKewogIGludCBwcmV2ID0gZmMtPm5jb2xzOwoKICBpZiAocmVnIDwgZmMtPm5j
b2xzKQogICAgcmV0dXJuOwoKICBmYy0+bmNvbHMgPSByZWcgKyAxOwogIGZjLT5jb2xfdHlwZSA9
IChzaG9ydCBpbnQgKikgeHJlYWxsb2MgKGZjLT5jb2xfdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYy0+bmNvbHMgKiBzaXplb2YgKHNob3J0IGludCkpOwog
IGZjLT5jb2xfb2Zmc2V0ID0gKGludCAqKSB4cmVhbGxvYyAoZmMtPmNvbF9vZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYy0+bmNvbHMgKiBzaXplb2YgKGludCkp
OwoKICB3aGlsZSAocHJldiA8IGZjLT5uY29scykKICAgIHsKICAgICAgZmMtPmNvbF90eXBlW3By
ZXZdID0gKC0xKTsKICAgICAgZmMtPmNvbF9vZmZzZXRbcHJldl0gPSAwOwogICAgICBwcmV2Kys7
CiAgICB9Cn0KCnN0YXRpYyB2b2lkCmZyYW1lX2Rpc3BsYXlfcm93IChmYywgbmVlZF9jb2xfaGVh
ZGVycywgbWF4X3JlZ3MpCiAgICAgRnJhbWVfQ2h1bmsgKmZjOwogICAgIGludCAqbmVlZF9jb2xf
aGVhZGVyczsKICAgICBpbnQgKm1heF9yZWdzOwp7CiAgaW50IHI7CiAgY2hhciB0bXBbMTAwXTsK
CiAgaWYgKCptYXhfcmVncyA8IGZjLT5uY29scykKICAgICptYXhfcmVncyA9IGZjLT5uY29sczsK
CiAgaWYgKCpuZWVkX2NvbF9oZWFkZXJzKQogICAgewogICAgICAqbmVlZF9jb2xfaGVhZGVycyA9
IDA7CgogICAgICBwcmludGYgKCIgICBMT0MgICBDRkEgICAgICAiKTsKCiAgICAgIGZvciAociA9
IDA7IHIgPCAqbWF4X3JlZ3M7IHIrKykKICAgICAgICBpZiAoZmMtPmNvbF90eXBlW3JdICE9ICgt
MSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmIChyID09IGZjLT5yYSkKICAgICAgICAgICAg
ICBwcmludGYgKCJyYSAgICIpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcHJpbnRm
ICgiciUtNGQiLCByKTsKICAgICAgICAgIH0KCiAgICAgIHByaW50ZiAoIlxuIik7CiAgICB9Cgog
IHByaW50ZiAoIiUwOGx4ICIsIGZjLT5wY19iZWdpbik7CiAgc3ByaW50ZiAodG1wLCAiciVkJStk
IiwgZmMtPmNmYV9yZWcsIGZjLT5jZmFfb2Zmc2V0KTsKICBwcmludGYgKCIlLThzICIsIHRtcCk7
CgogIGZvciAociA9IDA7IHIgPCBmYy0+bmNvbHM7IHIrKykKICAgIHsKICAgICAgaWYgKGZjLT5j
b2xfdHlwZVtyXSAhPSAoLTEpKQogICAgICAgIHsKICAgICAgICAgIHN3aXRjaCAoZmMtPmNvbF90
eXBlW3JdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3VuZGVmaW5lZDoK
ICAgICAgICAgICAgICBzdHJjcHkgKHRtcCwgInUiKTsKICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICBzdHJjcHkgKHRt
cCwgInMiKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBEV19DRkFfb2Zm
c2V0OgogICAgICAgICAgICAgIHNwcmludGYgKHRtcCwgImMlK2QiLCBmYy0+Y29sX29mZnNldFty
XSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVy
OgogICAgICAgICAgICAgIHNwcmludGYgKHRtcCwgInIlZCIsIGZjLT5jb2xfb2Zmc2V0W3JdKTsK
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBz
dHJjcHkgKHRtcCwgIm4vYSIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAg
ICAgICAgICBwcmludGYgKCIlLTVzIiwgdG1wKTsKICAgICAgICB9CiAgICB9CiAgcHJpbnRmICgi
XG4iKTsKfQoKc3RhdGljIGludApzaXplX29mX2VuY29kZWRfdmFsdWUgKGVuY29kaW5nKQogICAg
IGludCBlbmNvZGluZzsKewogIHN3aXRjaCAoZW5jb2RpbmcgJiAweDcpCiAgICB7CiAgICBkZWZh
dWx0OgogICAgY2FzZSAwOiByZXR1cm4gaXNfMzJiaXRfZWxmID8gNCA6IDg7CiAgICBjYXNlIDI6
IHJldHVybiAyOwogICAgY2FzZSAzOiByZXR1cm4gNDsKICAgIGNhc2UgNDogcmV0dXJuIDg7CiAg
ICB9Cn0KCgoKCgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdfZnJhbWVzIChzZWN0aW9uLCBzdGFy
dCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBj
aGFyICpzdGFydDsKICAgICBGSUxFICpmaWxlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCArIHNlY3Rpb24tPnNoX3NpemU7CiAgdW5z
aWduZWQgY2hhciAqc2VjdGlvbl9zdGFydCA9IHN0YXJ0OwogIEZyYW1lX0NodW5rICpjaHVua3Mg
PSAwOwogIEZyYW1lX0NodW5rICpyZW1lbWJlcmVkX3N0YXRlID0gMDsKICBGcmFtZV9DaHVuayAq
cnM7CiAgaW50IGlzX2VoID0gKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3My
X2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFtZSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChz
ZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
dGlvbiktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmVoX2ZyYW1lIiksICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpID09IDEpIHx8IF9fczFfbGVuID49
IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIuZWhfZnJhbWUiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiLmVoX2ZyYW1lIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkp
ID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSwgKF9fY29u
c3QgY2hhciAqKSAoIi5laF9mcmFtZSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVu
IDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjdGlvbikgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9u
YW1lKSkpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSA9PSAxKSAm
JiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpLCBfX3MxX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmVoX2ZyYW1lIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCIuZWhfZnJhbWUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmVo
X2ZyYW1lIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9u
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbikt
PnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgiLmVoX2ZyYW1lIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChf
X3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiLmVoX2ZyYW1lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGgg
PyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjdGlv
bikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24p
LT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9u
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFt
ZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoIi5laF9mcmFtZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxl
biAoIi5laF9mcmFtZSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgo
KHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWN0aW9uKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWN0aW9u
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbikt
PnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWN0aW9uKSA9PSAo
KHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25h
bWUpKSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNo
X25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSgiLmVoX2ZyYW1lIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlY3Rpb24pLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChfX3My
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWN0aW9uKS0+c2hfbmFtZSkpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUi
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5l
aF9mcmFtZSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJj
bXAgKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSksICIuZWhfZnJhbWUiKSkpKTsgfSkgPT0gMCk7CiAgaW50
IGxlbmd0aF9yZXR1cm47CiAgaW50IG1heF9yZWdzID0gMDsKICBpbnQgYWRkcl9zaXplID0gaXNf
MzJiaXRfZWxmID8gNCA6IDg7CgogIHByaW50ZiAoKCJUaGUgc2VjdGlvbiAlcyBjb250YWluczpc
biIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsKCiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAgewog
ICAgICB1bnNpZ25lZCBjaGFyICpzYXZlZF9zdGFydDsKICAgICAgdW5zaWduZWQgY2hhciAqYmxv
Y2tfZW5kOwogICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgdW5zaWduZWQgbG9uZyBj
aWVfaWQ7CiAgICAgIEZyYW1lX0NodW5rICpmYzsKICAgICAgRnJhbWVfQ2h1bmsgKmNpZTsKICAg
ICAgaW50IG5lZWRfY29sX2hlYWRlcnMgPSAxOwogICAgICB1bnNpZ25lZCBjaGFyICphdWdtZW50
YXRpb25fZGF0YSA9ICgodm9pZCAqKTApOwogICAgICB1bnNpZ25lZCBsb25nIGF1Z21lbnRhdGlv
bl9kYXRhX2xlbiA9IDA7CiAgICAgIGludCBlbmNvZGVkX3B0cl9zaXplID0gYWRkcl9zaXplOwoK
ICAgICAgc2F2ZWRfc3RhcnQgPSBzdGFydDsKICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHN0YXJ0
LCA0KTsgc3RhcnQgKz0gNDsKCiAgICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICB7CiAgICAg
ICAgICBwcmludGYgKCJcbiUwOGx4IFpFUk8gdGVybWluYXRvclxuXG4iLAogICAgICAgICAgICAg
ICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rpb25fc3RhcnQpKTsKICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgIGlmIChsZW5ndGggPT0gMHhmZmZmZmZm
ZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgoIjY0LWJpdCBEV0FSRiBmb3JtYXQgZnJhbWVz
IGFyZSBub3Qgc3VwcG9ydGVkIHlldC5cbiIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
CiAgICAgIGJsb2NrX2VuZCA9IHNhdmVkX3N0YXJ0ICsgbGVuZ3RoICsgNDsKICAgICAgY2llX2lk
ID0gYnl0ZV9nZXQgKHN0YXJ0LCA0KTsgc3RhcnQgKz0gNDsKCiAgICAgIGlmIChpc19laCA/IChj
aWVfaWQgPT0gMCkgOiAoY2llX2lkID09IDB4ZmZmZmZmZmYpKQogICAgICAgIHsKICAgICAgICAg
IGludCB2ZXJzaW9uOwoKICAgICAgICAgIGZjID0gKEZyYW1lX0NodW5rICopIHhtYWxsb2MgKHNp
emVvZiAoRnJhbWVfQ2h1bmspKTsKICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc2l6ZW9mIChGcmFtZV9DaHVuaykpICYmIChzaXplb2YgKEZyYW1lX0NodW5r
KSkgPD0gMTYgPyAoKHNpemVvZiAoRnJhbWVfQ2h1bmspKSA9PSAxID8gKHsgdm9pZCAqX19zID0g
KGZjKTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsg
dm9pZCAqX19zID0gKGZjKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hv
cnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90
IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mIChG
cmFtZV9DaHVuaykpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNo
b3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVh
azsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7
IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJy
ZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1ww
JyA/ICh7IHZvaWQgKl9fcyA9IChmYyk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6
ZW9mIChGcmFtZV9DaHVuaykpOyBfX3M7IH0pIDogbWVtc2V0IChmYywgMCwgc2l6ZW9mIChGcmFt
ZV9DaHVuaykpKSkpOwoKICAgICAgICAgIGZjLT5uZXh0ID0gY2h1bmtzOwogICAgICAgICAgY2h1
bmtzID0gZmM7CiAgICAgICAgICBmYy0+Y2h1bmtfc3RhcnQgPSBzYXZlZF9zdGFydDsKICAgICAg
ICAgIGZjLT5uY29scyA9IDA7CiAgICAgICAgICBmYy0+Y29sX3R5cGUgPSAoc2hvcnQgaW50ICop
IHhtYWxsb2MgKHNpemVvZiAoc2hvcnQgaW50KSk7CiAgICAgICAgICBmYy0+Y29sX29mZnNldCA9
IChpbnQgKikgeG1hbGxvYyAoc2l6ZW9mIChpbnQpKTsKICAgICAgICAgIGZyYW1lX25lZWRfc3Bh
Y2UgKGZjLCBtYXhfcmVncy0xKTsKCiAgICAgICAgICB2ZXJzaW9uID0gKnN0YXJ0Kys7CgogICAg
ICAgICAgZmMtPmF1Z21lbnRhdGlvbiA9IHN0YXJ0OwogICAgICAgICAgc3RhcnQgPSAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCdcMCcpICYmICgnXDAnKSA9PSAnXDAnID8g
KGNoYXIgKikgX19yYXdtZW1jaHIgKHN0YXJ0LCAnXDAnKSA6IHN0cmNociAoc3RhcnQsICdcMCcp
KSkgKyAxOwoKICAgICAgICAgIGlmIChmYy0+YXVnbWVudGF0aW9uWzBdID09ICd6JykKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIGZjLT5jb2RlX2ZhY3RvciA9IHJlYWRfbGViMTI4IChzdGFy
dCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAg
ICAgICBmYy0+ZGF0YV9mYWN0b3IgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVy
biwgMSk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgZmMtPnJhID0gYnl0
ZV9nZXQgKHN0YXJ0LCAxKTsgc3RhcnQgKz0gMTsKICAgICAgICAgICAgICBhdWdtZW50YXRpb25f
ZGF0YV9sZW4gPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0
ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgYXVnbWVudGF0aW9uX2RhdGEgPSBzdGFy
dDsKICAgICAgICAgICAgICBzdGFydCArPSBhdWdtZW50YXRpb25fZGF0YV9sZW47CiAgICAgICAg
ICAgIH0KICAgICAgICAgIGVsc2UgaWYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVu
LCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChmYy0+YXVnbWVudGF0aW9uKSAmJiBf
X2J1aWx0aW5fY29uc3RhbnRfcCAoImVoIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChmYy0+YXVn
bWVudGF0aW9uKSwgX19zMl9sZW4gPSBzdHJsZW4gKCJlaCIpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKChmYy0+YXVnbWVudGF0aW9uKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShm
Yy0+YXVnbWVudGF0aW9uKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiZWgiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZWgiKSA9
PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGZjLT5h
dWdtZW50YXRpb24pLCAoX19jb25zdCBjaGFyICopICgiZWgiKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChm
Yy0+YXVnbWVudGF0aW9uKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZmMtPmF1Z21lbnRh
dGlvbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZmMtPmF1Z21lbnRhdGlvbikgPT0g
MSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChmYy0+YXVnbWVudGF0aW9uKSwgX19zMV9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImVoIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJlaCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJlaCIpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImVoIikpWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVsxXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlaCIpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVnbWVudGF0aW9uKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWgiKSlbMl0p
OyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlaCIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZWgiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVswXSAtIF9fczJbMF0pOyBp
ZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZmMtPmF1Z21lbnRhdGlvbikpWzFd
IC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVn
bWVudGF0aW9uKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChmYy0+YXVnbWVudGF0aW9uKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZWgiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoImVoIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImVoIikgPT0gMSkgJiYgKF9f
czJfbGVuID0gc3RybGVuICgiZWgiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoZmMtPmF1Z21lbnRhdGlvbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGZjLT5h
dWdtZW50YXRpb24pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGZjLT5hdWdtZW50YXRp
b24pID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRp
b24pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImVo
IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50
YXRpb24pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJlaCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVn
bWVudGF0aW9uKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiZWgiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5h
dWdtZW50YXRpb24pKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJlaCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsg
X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChmYy0+YXVnbWVudGF0aW9uKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJlaCIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZWgiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlaCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlaCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoZmMtPmF1Z21lbnRh
dGlvbiwgImVoIikpKSk7IH0pID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGFy
dCArPSBhZGRyX3NpemU7CiAgICAgICAgICAgICAgZmMtPmNvZGVfZmFjdG9yID0gcmVhZF9sZWIx
MjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwog
ICAgICAgICAgICAgIGZjLT5kYXRhX2ZhY3RvciA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAxKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBmYy0+
cmEgPSBieXRlX2dldCAoc3RhcnQsIDEpOyBzdGFydCArPSAxOwogICAgICAgICAgICB9CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmYy0+Y29kZV9mYWN0b3IgPSBy
ZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9y
ZXR1cm47CiAgICAgICAgICAgICAgZmMtPmRhdGFfZmFjdG9yID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgIGZjLT5yYSA9IGJ5dGVfZ2V0IChzdGFydCwgMSk7IHN0YXJ0ICs9IDE7CiAgICAgICAgICAg
IH0KICAgICAgICAgIGNpZSA9IGZjOwoKICAgICAgICAgIGlmIChkb19kZWJ1Z19mcmFtZXNfaW50
ZXJwKQogICAgICAgICAgICBwcmludGYgKCJcbiUwOGx4ICUwOGx4ICUwOGx4IENJRSBcIiVzXCIg
Y2Y9JWQgZGY9JWQgcmE9JWRcbiIsCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcp
KHNhdmVkX3N0YXJ0IC0gc2VjdGlvbl9zdGFydCksIGxlbmd0aCwgY2llX2lkLAogICAgICAgICAg
ICAgICAgICAgIGZjLT5hdWdtZW50YXRpb24sIGZjLT5jb2RlX2ZhY3RvciwgZmMtPmRhdGFfZmFj
dG9yLAogICAgICAgICAgICAgICAgICAgIGZjLT5yYSk7CiAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBwcmludGYgKCJcbiUwOGx4ICUwOGx4ICUwOGx4IENJRVxuIiwK
ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rp
b25fc3RhcnQpLCBsZW5ndGgsIGNpZV9pZCk7CiAgICAgICAgICAgICAgcHJpbnRmICgiICBWZXJz
aW9uOiAgICAgICAgICAgICAgICVkXG4iLCB2ZXJzaW9uKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgIEF1Z21lbnRhdGlvbjogICAgICAgICAgXCIlc1wiXG4iLCBmYy0+YXVnbWVudGF0aW9uKTsK
ICAgICAgICAgICAgICBwcmludGYgKCIgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogJXVcbiIsIGZj
LT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgcHJpbnRmICgiICBEYXRhIGFsaWdubWVudCBm
YWN0b3I6ICVkXG4iLCBmYy0+ZGF0YV9mYWN0b3IpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAg
UmV0dXJuIGFkZHJlc3MgY29sdW1uOiAlZFxuIiwgZmMtPnJhKTsKCiAgICAgICAgICAgICAgaWYg
KGF1Z21lbnRhdGlvbl9kYXRhX2xlbikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBpOwogICAgICAgICAgICAgICAgICBwcmludGYgKCIgIEF1Z21lbnRh
dGlvbiBkYXRhOiAgICAiKTsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGF1Z21l
bnRhdGlvbl9kYXRhX2xlbjsgKytpKQogICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAlMDJ4
IiwgYXVnbWVudGF0aW9uX2RhdGFbaV0pOwogICAgICAgICAgICAgICAgICBwdXRjaGFyICgnXG4n
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgIGlmIChhdWdtZW50YXRpb25fZGF0YV9sZW4pCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpwLCAqcTsKICAgICAgICAgICAgICBwID0g
ZmMtPmF1Z21lbnRhdGlvbiArIDE7CiAgICAgICAgICAgICAgcSA9IGF1Z21lbnRhdGlvbl9kYXRh
OwoKICAgICAgICAgICAgICB3aGlsZSAoMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgaWYgKCpwID09ICdMJykKICAgICAgICAgICAgICAgICAgICBxKys7CiAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCpwID09ICdQJykKICAgICAgICAgICAgICAgICAgICBxICs9IDEgKyBz
aXplX29mX2VuY29kZWRfdmFsdWUgKCpxKTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnAg
PT0gJ1InKQogICAgICAgICAgICAgICAgICAgIGZjLT5mZGVfZW5jb2RpbmcgPSAqcSsrOwogICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgIHArKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKGZjLT5mZGVf
ZW5jb2RpbmcpCiAgICAgICAgICAgICAgICBlbmNvZGVkX3B0cl9zaXplID0gc2l6ZV9vZl9lbmNv
ZGVkX3ZhbHVlIChmYy0+ZmRlX2VuY29kaW5nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGZy
YW1lX25lZWRfc3BhY2UgKGZjLCBmYy0+cmEpOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
IHsKICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmxvb2tfZm9yOwogICAgICAgICAgc3RhdGljIEZy
YW1lX0NodW5rIGZkZV9mYzsKCiAgICAgICAgICBmYyA9ICYgZmRlX2ZjOwogICAgICAgICAgKF9f
ZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YgKEZyYW1lX0NodW5rKSkg
JiYgKHNpemVvZiAoRnJhbWVfQ2h1bmspKSA8PSAxNiA/ICgoc2l6ZW9mIChGcmFtZV9DaHVuaykp
ID09IDEgPyAoeyB2b2lkICpfX3MgPSAoZmMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3Vp
bnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoZmMpOyB1bmlvbiB7IHVuc2lnbmVk
IGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191Yzsg
fSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1
bnNpZ25lZCBpbnQpIChzaXplb2YgKEZyYW1lX0NodW5rKSkpIHsgY2FzZSAxNTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDM6IF9f
dS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikg
X19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBj
YXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQg
aW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA5OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5z
aWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTI6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKGZjKTsgX19idWlsdGlu
X21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YgKEZyYW1lX0NodW5rKSk7IF9fczsgfSkgOiBtZW1z
ZXQgKGZjLCAwLCBzaXplb2YgKEZyYW1lX0NodW5rKSkpKSk7CgogICAgICAgICAgbG9va19mb3Ig
PSBpc19laCA/IHN0YXJ0IC0gNCAtIGNpZV9pZCA6IHNlY3Rpb25fc3RhcnQgKyBjaWVfaWQ7Cgog
ICAgICAgICAgZm9yIChjaWUgPSBjaHVua3M7IGNpZSA7IGNpZSA9IGNpZS0+bmV4dCkKICAgICAg
ICAgICAgaWYgKGNpZS0+Y2h1bmtfc3RhcnQgPT0gbG9va19mb3IpCiAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgaWYgKCFjaWUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB3YXJu
ICgiSW52YWxpZCBDSUUgcG9pbnRlciAlMDhseCBpbiBGREUgYXQgJTA4bHhcbiIsCiAgICAgICAg
ICAgICAgICAgICAgY2llX2lkLCBzYXZlZF9zdGFydCk7CiAgICAgICAgICAgICAgc3RhcnQgPSBi
bG9ja19lbmQ7CiAgICAgICAgICAgICAgZmMtPm5jb2xzID0gMDsKICAgICAgICAgICAgICBmYy0+
Y29sX3R5cGUgPSAoc2hvcnQgaW50ICopIHhtYWxsb2MgKHNpemVvZiAoc2hvcnQgaW50KSk7CiAg
ICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXQgPSAoaW50ICopIHhtYWxsb2MgKHNpemVvZiAoaW50
KSk7CiAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIG1heF9yZWdzIC0gMSk7CiAg
ICAgICAgICAgICAgY2llID0gZmM7CiAgICAgICAgICAgICAgZmMtPmF1Z21lbnRhdGlvbiA9ICIi
OwogICAgICAgICAgICAgIGZjLT5mZGVfZW5jb2RpbmcgPSAwOwogICAgICAgICAgICB9CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmYy0+bmNvbHMgPSBjaWUtPm5j
b2xzOwogICAgICAgICAgICAgIGZjLT5jb2xfdHlwZSA9IChzaG9ydCBpbnQgKikgeG1hbGxvYyAo
ZmMtPm5jb2xzICogc2l6ZW9mIChzaG9ydCBpbnQpKTsKICAgICAgICAgICAgICBmYy0+Y29sX29m
ZnNldCA9IChpbnQgKikgeG1hbGxvYyAoZmMtPm5jb2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAg
ICAgICAgICBtZW1jcHkgKGZjLT5jb2xfdHlwZSwgY2llLT5jb2xfdHlwZSwgZmMtPm5jb2xzICog
c2l6ZW9mIChzaG9ydCBpbnQpKTsKICAgICAgICAgICAgICBtZW1jcHkgKGZjLT5jb2xfb2Zmc2V0
LCBjaWUtPmNvbF9vZmZzZXQsIGZjLT5uY29scyAqIHNpemVvZiAoaW50KSk7CiAgICAgICAgICAg
ICAgZmMtPmF1Z21lbnRhdGlvbiA9IGNpZS0+YXVnbWVudGF0aW9uOwogICAgICAgICAgICAgIGZj
LT5jb2RlX2ZhY3RvciA9IGNpZS0+Y29kZV9mYWN0b3I7CiAgICAgICAgICAgICAgZmMtPmRhdGFf
ZmFjdG9yID0gY2llLT5kYXRhX2ZhY3RvcjsKICAgICAgICAgICAgICBmYy0+Y2ZhX3JlZyA9IGNp
ZS0+Y2ZhX3JlZzsKICAgICAgICAgICAgICBmYy0+Y2ZhX29mZnNldCA9IGNpZS0+Y2ZhX29mZnNl
dDsKICAgICAgICAgICAgICBmYy0+cmEgPSBjaWUtPnJhOwogICAgICAgICAgICAgIGZyYW1lX25l
ZWRfc3BhY2UgKGZjLCBtYXhfcmVncy0xKTsKICAgICAgICAgICAgICBmYy0+ZmRlX2VuY29kaW5n
ID0gY2llLT5mZGVfZW5jb2Rpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoZmMtPmZk
ZV9lbmNvZGluZykKICAgICAgICAgICAgZW5jb2RlZF9wdHJfc2l6ZSA9IHNpemVfb2ZfZW5jb2Rl
ZF92YWx1ZSAoZmMtPmZkZV9lbmNvZGluZyk7CgogICAgICAgICAgZmMtPnBjX2JlZ2luID0gYnl0
ZV9nZXQgKHN0YXJ0LCBlbmNvZGVkX3B0cl9zaXplKTsKICAgICAgICAgIGlmICgoZmMtPmZkZV9l
bmNvZGluZyAmIDB4NzApID09IDB4MTApCiAgICAgICAgICAgIGZjLT5wY19iZWdpbiArPSBzZWN0
aW9uLT5zaF9hZGRyICsgKHN0YXJ0IC0gc2VjdGlvbl9zdGFydCk7CiAgICAgICAgICBzdGFydCAr
PSBlbmNvZGVkX3B0cl9zaXplOwogICAgICAgICAgZmMtPnBjX3JhbmdlID0gYnl0ZV9nZXQgKHN0
YXJ0LCBlbmNvZGVkX3B0cl9zaXplKTsKICAgICAgICAgIHN0YXJ0ICs9IGVuY29kZWRfcHRyX3Np
emU7CgogICAgICAgICAgaWYgKGNpZS0+YXVnbWVudGF0aW9uWzBdID09ICd6JykKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIGF1Z21lbnRhdGlvbl9kYXRhX2xlbiA9IHJlYWRfbGViMTI4IChz
dGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAg
ICAgICAgICBhdWdtZW50YXRpb25fZGF0YSA9IHN0YXJ0OwogICAgICAgICAgICAgIHN0YXJ0ICs9
IGF1Z21lbnRhdGlvbl9kYXRhX2xlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgIHByaW50ZiAo
IlxuJTA4bHggJTA4bHggJTA4bHggRkRFIGNpZT0lMDhseCBwYz0lMDhseC4uJTA4bHhcbiIsCiAg
ICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rpb25fc3Rh
cnQpLCBsZW5ndGgsIGNpZV9pZCwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGNp
ZS0+Y2h1bmtfc3RhcnQgLSBzZWN0aW9uX3N0YXJ0KSwKICAgICAgICAgICAgICAgICAgZmMtPnBj
X2JlZ2luLCBmYy0+cGNfYmVnaW4gKyBmYy0+cGNfcmFuZ2UpOwogICAgICAgICAgaWYgKCEgZG9f
ZGVidWdfZnJhbWVzX2ludGVycCAmJiBhdWdtZW50YXRpb25fZGF0YV9sZW4pCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGk7CiAgICAgICAgICAgICAgcHJpbnRmICgi
ICBBdWdtZW50YXRpb24gZGF0YTogICAgIik7CiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IGF1Z21lbnRhdGlvbl9kYXRhX2xlbjsgKytpKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICUw
MngiLCBhdWdtZW50YXRpb25fZGF0YVtpXSk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7
CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoK
CgogICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICB7CgoKICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgKnRtcCA9IHN0YXJ0OwoKICAgICAgICAgIHdoaWxlIChzdGFydCA8IGJs
b2NrX2VuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHVuc2lnbmVkIG9wLCBvcGE7CiAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByZWc7CgogICAgICAgICAgICAgIG9wID0gKnN0YXJ0
Kys7CiAgICAgICAgICAgICAgb3BhID0gb3AgJiAweDNmOwogICAgICAgICAgICAgIGlmIChvcCAm
IDB4YzApCiAgICAgICAgICAgICAgICBvcCAmPSAweGMwOwoKCgogICAgICAgICAgICAgIHN3aXRj
aCAob3ApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZh
bmNlX2xvYzoKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERX
X0NGQV9vZmZzZXQ6CiAgICAgICAgICAgICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAg
ZnJhbWVfbmVlZF9zcGFjZSAoZmMsIG9wYSk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlw
ZVtvcGFdID0gRFdfQ0ZBX3VuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBjYXNlIERXX0NGQV9yZXN0b3JlOgogICAgICAgICAgICAgICAgICBmcmFtZV9u
ZWVkX3NwYWNlIChmYywgb3BhKTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW29wYV0g
PSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX3NldF9sb2M6CiAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGVuY29k
ZWRfcHRyX3NpemU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSBEV19DRkFfYWR2YW5jZV9sb2MxOgogICAgICAgICAgICAgICAgICBzdGFydCArPSAxOwogICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2FkdmFuY2Vf
bG9jMjoKICAgICAgICAgICAgICAgICAgc3RhcnQgKz0gMjsKICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xvYzQ6CiAgICAgICAgICAg
ICAgICAgIHN0YXJ0ICs9IDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkOgogICAgICAgICAgICAgICAgICByZWcgPSBy
ZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9y
ZXR1cm47IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0g
bGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJl
Zyk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZBX3VuZGVmaW5l
ZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9y
ZXN0b3JlX2V4dGVuZGVkOgogICAgICAgICAgICAgICAgICByZWcgPSByZWFkX2xlYjEyOCAoc3Rh
cnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAg
ICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2UgKGZjLCByZWcpOwogICAgICAgICAgICAgICAgICBm
Yy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV91bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSBEV19DRkFfdW5kZWZpbmVkOgogICAgICAgICAgICAg
ICAgICByZWcgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0
ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2UgKGZj
LCByZWcpOwogICAgICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV91bmRl
ZmluZWQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBEV19D
RkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICAgICAgcmVnID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcmVnKTsKICAgICAgICAgICAgICAgICAgZmMt
PmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVyOgogICAgICAgICAgICAgICAg
ICByZWcgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9
IGxlbmd0aF9yZXR1cm47IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsg
c3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFj
ZSAoZmMsIHJlZyk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZB
X3VuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNl
IERXX0NGQV9kZWZfY2ZhOgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYg
bGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47IHJlYWRfbGViMTI4IChz
dGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9kZWZfY2ZhX3Jl
Z2lzdGVyOgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3Jl
dHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9vZmZzZXQ6CiAgICAgICAgICAg
ICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0g
bGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlIERXX0NGQV9vZmZzZXRfZXh0ZW5kZWRfc2Y6CiAgICAgICAgICAgICAgICAgIHJlZyA9IHJl
YWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3Jl
dHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBs
ZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcmVn
KTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVk
OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2Rl
Zl9jZmFfc2Y6CiAgICAgICAgICAgICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhf
cmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAm
IGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0X3Nm
OgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwg
MSk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgY2FzZSBEV19DRkFfR05VX2FyZ3Nfc2l6ZToKICAgICAgICAgICAgICAgICAg
cmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhf
cmV0dXJuOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdf
Q0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQ6CiAgICAgICAgICAgICAgICAgIHJlZyA9
IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3Ro
X3JldHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCAr
PSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywg
cmVnKTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZp
bmVkOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBzdGFydCA9IHRtcDsKICAg
ICAgICB9CgoKCgogICAgICB3aGlsZSAoc3RhcnQgPCBibG9ja19lbmQpCiAgICAgICAgewogICAg
ICAgICAgdW5zaWduZWQgb3AsIG9wYTsKICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWwsIHJlZywg
cm9mZnM7CiAgICAgICAgICBsb25nIGwsIG9mczsKICAgICAgICAgIGJmZF92bWEgdm1hOwoKICAg
ICAgICAgIG9wID0gKnN0YXJ0Kys7CiAgICAgICAgICBvcGEgPSBvcCAmIDB4M2Y7CiAgICAgICAg
ICBpZiAob3AgJiAweGMwKQogICAgICAgICAgICBvcCAmPSAweGMwOwoKCgogICAgICAgICAgc3dp
dGNoIChvcCkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xv
YzoKICAgICAgICAgICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIGZyYW1lX2Rpc3BsYXlfcm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7
CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfYWR2
YW5jZV9sb2M6ICVkIHRvICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBvcGEgKiBm
Yy0+Y29kZV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGZjLT5wY19iZWdpbiArIG9w
YSAqIGZjLT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPnBjX2JlZ2luICs9IG9wYSAq
IGZjLT5jb2RlX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2Ug
RFdfQ0ZBX29mZnNldDoKICAgICAgICAgICAgICByb2ZmcyA9IHJlYWRfbGViMTI4IChzdGFydCwg
JiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAg
ICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgi
ICBEV19DRkFfb2Zmc2V0OiByJWQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgb3BhLCByb2ZmcyAqIGZjLT5kYXRhX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPmNvbF90
eXBlW29wYV0gPSBEV19DRkFfb2Zmc2V0OwogICAgICAgICAgICAgIGZjLT5jb2xfb2Zmc2V0W29w
YV0gPSByb2ZmcyAqIGZjLT5kYXRhX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgICAgIGNhc2UgRFdfQ0ZBX3Jlc3RvcmU6CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdf
ZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3Jlc3RvcmU6
IHIlZFxuIiwgb3BhKTsKICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbb3BhXSA9IGNpZS0+Y29s
X3R5cGVbb3BhXTsKICAgICAgICAgICAgICBmYy0+Y29sX29mZnNldFtvcGFdID0gY2llLT5jb2xf
b2Zmc2V0W29wYV07CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NG
QV9zZXRfbG9jOgogICAgICAgICAgICAgIHZtYSA9IGJ5dGVfZ2V0IChzdGFydCwgZW5jb2RlZF9w
dHJfc2l6ZSk7CiAgICAgICAgICAgICAgaWYgKChmYy0+ZmRlX2VuY29kaW5nICYgMHg3MCkgPT0g
MHgxMCkKICAgICAgICAgICAgICAgIHZtYSArPSBzZWN0aW9uLT5zaF9hZGRyICsgKHN0YXJ0IC0g
c2VjdGlvbl9zdGFydCk7CiAgICAgICAgICAgICAgc3RhcnQgKz0gZW5jb2RlZF9wdHJfc2l6ZTsK
ICAgICAgICAgICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAg
IGZyYW1lX2Rpc3BsYXlfcm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7CiAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfc2V0X2xv
YzogJTA4bHhcbiIsICh1bnNpZ25lZCBsb25nKXZtYSk7CiAgICAgICAgICAgICAgZmMtPnBjX2Jl
Z2luID0gdm1hOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFf
YWR2YW5jZV9sb2MxOgogICAgICAgICAgICAgIG9mcyA9IGJ5dGVfZ2V0IChzdGFydCwgMSk7IHN0
YXJ0ICs9IDE7CiAgICAgICAgICAgICAgaWYgKGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAg
ICAgICAgICAgICBmcmFtZV9kaXNwbGF5X3JvdyAoZmMsICZuZWVkX2NvbF9oZWFkZXJzLCAmbWF4
X3JlZ3MpOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdf
Q0ZBX2FkdmFuY2VfbG9jMTogJWxkIHRvICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICBvZnMgKiBmYy0+Y29kZV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGZjLT5wY19i
ZWdpbiArIG9mcyAqIGZjLT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPnBjX2JlZ2lu
ICs9IG9mcyAqIGZjLT5jb2RlX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jMjoKICAgICAgICAgICAgICBvZnMgPSBieXRlX2dl
dCAoc3RhcnQsIDIpOyBzdGFydCArPSAyOwogICAgICAgICAgICAgIGlmIChkb19kZWJ1Z19mcmFt
ZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgZnJhbWVfZGlzcGxheV9yb3cgKGZjLCAmbmVlZF9j
b2xfaGVhZGVycywgJm1heF9yZWdzKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICBwcmludGYgKCIgIERXX0NGQV9hZHZhbmNlX2xvYzI6ICVsZCB0byAlMDhseFxuIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgb2ZzICogZmMtPmNvZGVfZmFjdG9yLAogICAgICAgICAgICAgICAg
ICAgICAgICBmYy0+cGNfYmVnaW4gKyBvZnMgKiBmYy0+Y29kZV9mYWN0b3IpOwogICAgICAgICAg
ICAgIGZjLT5wY19iZWdpbiArPSBvZnMgKiBmYy0+Y29kZV9mYWN0b3I7CiAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xvYzQ6CiAgICAgICAgICAg
ICAgb2ZzID0gYnl0ZV9nZXQgKHN0YXJ0LCA0KTsgc3RhcnQgKz0gNDsKICAgICAgICAgICAgICBp
ZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIGZyYW1lX2Rpc3BsYXlf
cm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7CiAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfYWR2YW5jZV9sb2M0OiAlbGQgdG8g
JTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9mcyAqIGZjLT5jb2RlX2ZhY3RvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgZmMtPnBjX2JlZ2luICsgb2ZzICogZmMtPmNvZGVfZmFj
dG9yKTsKICAgICAgICAgICAgICBmYy0+cGNfYmVnaW4gKz0gb2ZzICogZmMtPmNvZGVfZmFjdG9y
OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4
dGVuZGVkOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhf
cmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICByb2ZmcyA9
IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3Ro
X3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkOiByJWxkIGF0IGNm
YSUrbGRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgcm9mZnMgKiBmYy0+ZGF0YV9m
YWN0b3IpOwogICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZBX29mZnNldDsK
ICAgICAgICAgICAgICBmYy0+Y29sX29mZnNldFtyZWddID0gcm9mZnMgKiBmYy0+ZGF0YV9mYWN0
b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NGQV9yZXN0b3Jl
X2V4dGVuZGVkOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAo
ISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19D
RkFfcmVzdG9yZV9leHRlbmRlZDogciVsZFxuIiwgcmVnKTsKICAgICAgICAgICAgICBmYy0+Y29s
X3R5cGVbcmVnXSA9IGNpZS0+Y29sX3R5cGVbcmVnXTsKICAgICAgICAgICAgICBmYy0+Y29sX29m
ZnNldFtyZWddID0gY2llLT5jb2xfb2Zmc2V0W3JlZ107CiAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgICAgICBjYXNlIERXX0NGQV91bmRlZmluZWQ6CiAgICAgICAgICAgICAgcmVnID0gcmVh
ZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0
dXJuOwogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAg
ICAgICAgICBwcmludGYgKCIgIERXX0NGQV91bmRlZmluZWQ6IHIlbGRcbiIsIHJlZyk7CiAgICAg
ICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAg
ICAgIGZjLT5jb2xfb2Zmc2V0W3JlZ10gPSAwOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgY2FzZSBEV19DRkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICByZWcgPSByZWFkX2xl
YjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47
CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3NhbWVfdmFsdWU6IHIlbGRcbiIsIHJlZyk7CiAgICAgICAg
ICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfc2FtZV92YWx1ZTsKICAgICAgICAgICAg
ICBmYy0+Y29sX29mZnNldFtyZWddID0gMDsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVyOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4
IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAg
ICAgICAgICAgICByb2ZmcyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAw
KTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19m
cmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfcmVnaXN0ZXI6
IHIlbGRcbiIsIHJlZyk7CiAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFf
cmVnaXN0ZXI7CiAgICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXRbcmVnXSA9IHJvZmZzOwogICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfcmVtZW1iZXJfc3RhdGU6
CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3JlbWVtYmVyX3N0YXRlXG4iKTsKICAgICAgICAgICAgICBy
cyA9IChGcmFtZV9DaHVuayAqKSB4bWFsbG9jIChzaXplb2YgKEZyYW1lX0NodW5rKSk7CiAgICAg
ICAgICAgICAgcnMtPm5jb2xzID0gZmMtPm5jb2xzOwogICAgICAgICAgICAgIHJzLT5jb2xfdHlw
ZSA9IChzaG9ydCBpbnQgKikgeG1hbGxvYyAocnMtPm5jb2xzICogc2l6ZW9mIChzaG9ydCBpbnQp
KTsKICAgICAgICAgICAgICBycy0+Y29sX29mZnNldCA9IChpbnQgKikgeG1hbGxvYyAocnMtPm5j
b2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAgICAgICAgICBtZW1jcHkgKHJzLT5jb2xfdHlwZSwg
ZmMtPmNvbF90eXBlLCBycy0+bmNvbHMpOwogICAgICAgICAgICAgIG1lbWNweSAocnMtPmNvbF9v
ZmZzZXQsIGZjLT5jb2xfb2Zmc2V0LCBycy0+bmNvbHMgKiBzaXplb2YgKGludCkpOwogICAgICAg
ICAgICAgIHJzLT5uZXh0ID0gcmVtZW1iZXJlZF9zdGF0ZTsKICAgICAgICAgICAgICByZW1lbWJl
cmVkX3N0YXRlID0gcnM7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0NGQV9yZXN0b3JlX3N0YXRlOgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19p
bnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9yZXN0b3JlX3N0YXRlXG4i
KTsKICAgICAgICAgICAgICBycyA9IHJlbWVtYmVyZWRfc3RhdGU7CiAgICAgICAgICAgICAgcmVt
ZW1iZXJlZF9zdGF0ZSA9IHJzLT5uZXh0OwogICAgICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2Ug
KGZjLCBycy0+bmNvbHMtMSk7CiAgICAgICAgICAgICAgbWVtY3B5IChmYy0+Y29sX3R5cGUsIHJz
LT5jb2xfdHlwZSwgcnMtPm5jb2xzKTsKICAgICAgICAgICAgICBtZW1jcHkgKGZjLT5jb2xfb2Zm
c2V0LCBycy0+Y29sX29mZnNldCwgcnMtPm5jb2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAgICAg
ICAgICBmcmVlIChycy0+Y29sX3R5cGUpOwogICAgICAgICAgICAgIGZyZWUgKHJzLT5jb2xfb2Zm
c2V0KTsKICAgICAgICAgICAgICBmcmVlIChycyk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBjYXNlIERXX0NGQV9kZWZfY2ZhOgogICAgICAgICAgICAgIGZjLT5jZmFfcmVnID0g
cmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhf
cmV0dXJuOwogICAgICAgICAgICAgIGZjLT5jZmFfb2Zmc2V0ID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYg
KCIgIERXX0NGQV9kZWZfY2ZhOiByJWQgb2ZzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICBmYy0+Y2ZhX3JlZywgZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcjoKICAgICAgICAgICAgICBmYy0+
Y2ZhX3JlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQg
Kz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50
ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfZGVmX2NmYV9yZWc6IHIlZFxu
IiwgZmMtPmNmYV9yZWcpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19DRkFfZGVmX2NmYV9vZmZzZXQ6CiAgICAgICAgICAgICAgZmMtPmNmYV9vZmZzZXQgPSByZWFk
X2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1
cm47CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAlZFxuIiwgZmMtPmNmYV9v
ZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfbm9w
OgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAg
ICAgICBwcmludGYgKCIgIERXX0NGQV9ub3BcbiIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkX3NmOgogICAgICAgICAgICAgIHJl
ZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVu
Z3RoX3JldHVybjsKICAgICAgICAgICAgICBsID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0
aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgIGZyYW1l
X25lZWRfc3BhY2UgKGZjLCByZWcpOwogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1l
c19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9vZmZzZXRfZXh0ZW5k
ZWRfc2Y6IHIlbGQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnLCBs
ICogZmMtPmRhdGFfZmFjdG9yKTsKICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbcmVnXSA9IERX
X0NGQV9vZmZzZXQ7CiAgICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXRbcmVnXSA9IGwgKiBmYy0+
ZGF0YV9mYWN0b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NG
QV9kZWZfY2ZhX3NmOgogICAgICAgICAgICAgIGZjLT5jZmFfcmVnID0gcmVhZF9sZWIxMjggKHN0
YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAg
ICAgICAgIGZjLT5jZmFfb2Zmc2V0ID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1
cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgIGlmICghIGRvX2Rl
YnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9kZWZf
Y2ZhX3NmOiByJWQgb2ZzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBmYy0+Y2ZhX3Jl
ZywgZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2Fz
ZSBEV19DRkFfZGVmX2NmYV9vZmZzZXRfc2Y6CiAgICAgICAgICAgICAgZmMtPmNmYV9vZmZzZXQg
PSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMSk7IHN0YXJ0ICs9IGxlbmd0
aF9yZXR1cm47CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAg
ICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0X3NmOiAlZFxuIiwg
ZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19DRkFfR05VX3dpbmRvd19zYXZlOgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1l
c19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9HTlVfd2luZG93X3Nh
dmVcbiIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfR05V
X2FyZ3Nfc2l6ZToKICAgICAgICAgICAgICB1bCA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAo
ISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19D
RkFfR05VX2FyZ3Nfc2l6ZTogJWxkXG4iLCB1bCk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBjYXNlIERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkOgogICAgICAg
ICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3Rh
cnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBsID0gLSByZWFkX2xlYjEyOCAoc3Rh
cnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAg
ICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJlZyk7CiAgICAgICAgICAgICAgaWYgKCEgZG9f
ZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX0dO
VV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQ6IHIlbGQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgcmVnLCBsICogZmMtPmRhdGFfZmFjdG9yKTsKICAgICAgICAgICAgICBm
Yy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV9vZmZzZXQ7CiAgICAgICAgICAgICAgZmMtPmNvbF9v
ZmZzZXRbcmVnXSA9IGwgKiBmYy0+ZGF0YV9mYWN0b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgoK
ICAgICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uOgogICAgICAgICAgICAg
IGZwcmludGYgKHN0ZGVyciwgInVuc3VwcG9ydGVkIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb25c
biIpOwogICAgICAgICAgICAgIHN0YXJ0ID0gYmxvY2tfZW5kOwogICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfZXhwcmVzc2lvbjoKICAgICAgICAgICAgICBmcHJp
bnRmIChzdGRlcnIsICJ1bnN1cHBvcnRlZCBEV19DRkFfZXhwcmVzc2lvblxuIik7CiAgICAgICAg
ICAgICAgc3RhcnQgPSBibG9ja19lbmQ7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgInVuc3VwcG9ydGVkIG9y
IHVua25vd24gRFdfQ0ZBXyVkXG4iLCBvcCk7CiAgICAgICAgICAgICAgc3RhcnQgPSBibG9ja19l
bmQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2lu
dGVycCkKICAgICAgICBmcmFtZV9kaXNwbGF5X3JvdyAoZmMsICZuZWVkX2NvbF9oZWFkZXJzLCAm
bWF4X3JlZ3MpOwoKICAgICAgc3RhcnQgPSBibG9ja19lbmQ7CiAgICB9CgogIHByaW50ZiAoIlxu
Iik7CgogIHJldHVybiAxOwp9CgoKCgoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX25vdF9zdXBw
b3J0ZWQgKHNlY3Rpb24sIHN0YXJ0LCBmaWxlKQogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0
aW9uOwogICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcHJp
bnRmICgoIkRpc3BsYXlpbmcgdGhlIGRlYnVnIGNvbnRlbnRzIG9mIHNlY3Rpb24gJXMgaXMgbm90
IHlldCBzdXBwb3J0ZWQuXG4iKSwKICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7Cgog
IHJldHVybiAxOwp9CgoKCgpzdGF0aWMgaW50CnByZXNjYW5fZGVidWdfaW5mbyAoc2VjdGlvbiwg
c3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb24gX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpm
aWxlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBEV0FSRjJfRXh0ZXJuYWxfQ29t
cFVuaXQgKmV4dGVybmFsOwoKICBleHRlcm5hbCA9IChEV0FSRjJfRXh0ZXJuYWxfQ29tcFVuaXQg
Kikgc3RhcnQ7CgogIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplID0gYnl0ZV9nZXQgKGV4dGVybmFs
LT5jdV9wb2ludGVyX3NpemUsIHNpemVvZiAoZXh0ZXJuYWwtPmN1X3BvaW50ZXJfc2l6ZSkpOwog
IHJldHVybiAwOwp9CgoKCgoKc3RydWN0CnsKICBjb25zdCBjaGFyICpjb25zdCBuYW1lOwogIGlu
dCAoKmRpc3BsYXkpIChFbGZfSW50ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBjaGFyICosIEZJTEUg
Kik7CiAgaW50ICgqcHJlc2NhbikgKEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVkIGNoYXIg
KiwgRklMRSAqKTsKfQpkZWJ1Z19kaXNwbGF5c1tdID0KewogIHsgIi5kZWJ1Z19hYmJyZXYiLCBk
aXNwbGF5X2RlYnVnX2FiYnJldiwgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfYXJhbmdlcyIs
IGRpc3BsYXlfZGVidWdfYXJhbmdlcywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfZnJhbWUi
LCBkaXNwbGF5X2RlYnVnX2ZyYW1lcywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfaW5mbyIs
IGRpc3BsYXlfZGVidWdfaW5mbywgcHJlc2Nhbl9kZWJ1Z19pbmZvIH0sCiAgeyAiLmRlYnVnX2xp
bmUiLCBkaXNwbGF5X2RlYnVnX2xpbmVzLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z19wdWJu
YW1lcyIsIGRpc3BsYXlfZGVidWdfcHVibmFtZXMsICgodm9pZCAqKTApIH0sCiAgeyAiLmVoX2Zy
YW1lIiwgZGlzcGxheV9kZWJ1Z19mcmFtZXMsICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVnX21h
Y2luZm8iLCBkaXNwbGF5X2RlYnVnX21hY2luZm8sICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVn
X3N0ciIsIGRpc3BsYXlfZGVidWdfc3RyLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z19sb2Mi
LCBkaXNwbGF5X2RlYnVnX2xvYywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfcHVidHlwZXMi
LCBkaXNwbGF5X2RlYnVnX25vdF9zdXBwb3J0ZWQsICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVn
X3JhbmdlcyIsIGRpc3BsYXlfZGVidWdfbm90X3N1cHBvcnRlZCwgKCh2b2lkICopMCkgfSwKICB7
ICIuZGVidWdfc3RhdGljX2Z1bmMiLCBkaXNwbGF5X2RlYnVnX25vdF9zdXBwb3J0ZWQsICgodm9p
ZCAqKTApIH0sCiAgeyAiLmRlYnVnX3N0YXRpY192YXJzIiwgZGlzcGxheV9kZWJ1Z19ub3Rfc3Vw
cG9ydGVkLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z190eXBlcyIsIGRpc3BsYXlfZGVidWdf
bm90X3N1cHBvcnRlZCwgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfd2Vha25hbWVzIiwgZGlz
cGxheV9kZWJ1Z19ub3Rfc3VwcG9ydGVkLCAoKHZvaWQgKikwKSB9Cn07CgpzdGF0aWMgaW50CmRp
c3BsYXlfZGVidWdfc2VjdGlvbiAoc2VjdGlvbiwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hk
ciAqc2VjdGlvbjsKICAgICBGSUxFICpmaWxlOwp7CiAgY2hhciAqbmFtZSA9ICgoc2VjdGlvbikg
PT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5z
aF9uYW1lKSk7CiAgYmZkX3NpemVfdHlwZSBsZW5ndGg7CiAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgaW50IGk7CgogIGxlbmd0aCA9IHNlY3Rpb24tPnNoX3NpemU7CiAgaWYgKGxlbmd0aCA9PSAw
KQogICAgewogICAgICBwcmludGYgKCgiXG5TZWN0aW9uICclcycgaGFzIG5vIGRlYnVnZ2luZyBk
YXRhLlxuIiksIG5hbWUpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgc3RhcnQgPSAodW5zaWdu
ZWQgY2hhciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlY3Rpb24tPnNoX29mZnNl
dCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZGVidWcg
c2VjdGlvbiBkYXRhIikpOwogIGlmICghc3RhcnQpCiAgICByZXR1cm4gMDsKCgogIGlmICgoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKDE3KSAmJiAoKF9fYnVpbHRpbl9jb25z
dGFudF9wIChuYW1lKSAmJiBzdHJsZW4gKG5hbWUpIDwgKChzaXplX3QpICgxNykpKSB8fCAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCIuZ251LmxpbmtvbmNlLndpLiIpICYmIHN0cmxlbiAoIi5nbnUu
bGlua29uY2Uud2kuIikgPCAoKHNpemVfdCkgKDE3KSkpKSA/IF9fZXh0ZW5zaW9uX18gKHsgc2l6
ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBf
X2J1aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLndpLiIpLCAo
ISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgiLmdudS5saW5rb25jZS53aS4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiLmdudS5saW5rb25jZS53aS4iKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25j
ZS53aS4iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIu
Z251LmxpbmtvbmNlLndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZ251Lmxp
bmtvbmNlLndpLiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5nbnUu
bGlua29uY2Uud2kuIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIuZ251LmxpbmtvbmNlLndpLiIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4i
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmdudS5saW5rb25jZS53aS4iKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29uY2Uud2kuIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIi5nbnUubGlua29uY2Uud2kuIikgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuICgiLmdudS5saW5rb25jZS53aS4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoIi5nbnUubGlua29uY2Uud2kuIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVsxXSk7IGlmIChfX3MyX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVswXTsgaWYg
KF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25j
ZS53aS4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpKSA6IHN0cmNtcCAobmFtZSwgIi5nbnUubGlua29uY2Uud2kuIikpKSk7IH0pIDogc3Ry
bmNtcCAobmFtZSwgIi5nbnUubGlua29uY2Uud2kuIiwgMTcpKSkgPT0gMCkKICAgIG5hbWUgPSAi
LmRlYnVnX2luZm8iOwoKICBmb3IgKGkgPSAoc2l6ZW9mIChkZWJ1Z19kaXNwbGF5cykgLyBzaXpl
b2YgKChkZWJ1Z19kaXNwbGF5cylbMF0pKTsgaS0tOykKICAgIGlmIChfX2V4dGVuc2lvbl9fICh7
IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdf
ZGlzcGxheXNbaV0ubmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSksIF9fczJfbGVuID0gc3RybGVu
IChuYW1lKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZGVidWdfZGlzcGxheXNbaV0ubmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMl9sZW4g
Pj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9s
ZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxh
eXNbaV0ubmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRlYnVnX2Rpc3BsYXlzW2ld
Lm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2Rpc3BsYXlzW2ldLm5h
bWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSks
IF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tp
XS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KG5hbWUpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
aXNwbGF5c1tpXS5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGRlYnVnX2Rpc3BsYXlzW2ldLm5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNb
aV0ubmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGRlYnVnX2Rpc3BsYXlzW2ldLm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1l
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGRlYnVnX2Rpc3BsYXlzW2ld
Lm5hbWUsIG5hbWUpKSkpOyB9KSA9PSAwKQogICAgICB7CiAgICAgICAgZGVidWdfZGlzcGxheXNb
aV0uZGlzcGxheSAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpOwogICAgICAgIGJyZWFrOwogICAgICB9
CgogIGlmIChpID09IC0xKQogICAgcHJpbnRmICgoIlVucmVjb2duaXplZCBkZWJ1ZyBzZWN0aW9u
OiAlc1xuIiksIG5hbWUpOwoKICBmcmVlIChzdGFydCk7CgoKCiAgZnJlZV9hYmJyZXZzICgpOwoK
ICByZXR1cm4gMTsKfQoKc3RhdGljIGludApwcm9jZXNzX3NlY3Rpb25fY29udGVudHMgKGZpbGUp
CiAgICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwogIHVuc2ln
bmVkIGludCBpOwoKICBpZiAoISBkb19kdW1wKQogICAgcmV0dXJuIDE7CgoKCgogIGZvciAoaSA9
IDAsIHNlY3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hlYWRlci5lX3No
bnVtICYmIGkgPCBudW1fZHVtcF9zZWN0czsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewog
ICAgICBjaGFyICpuYW1lID0gKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKTsKICAgICAgaW50IGo7CgogICAg
ICBpZiAoc2VjdGlvbi0+c2hfc2l6ZSA9PSAwKQogICAgICAgIGNvbnRpbnVlOwoKCiAgICAgIGZv
ciAoaiA9IChzaXplb2YgKGRlYnVnX2Rpc3BsYXlzKSAvIHNpemVvZiAoKGRlYnVnX2Rpc3BsYXlz
KVswXSkpOyBqLS07KQogICAgICAgIGlmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxheXNbal0ubmFt
ZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAo
ZGVidWdfZGlzcGxheXNbal0ubmFtZSksIF9fczJfbGVuID0gc3RybGVuIChuYW1lKSwgKCEoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgPT0gMSkgfHwgX19zMV9s
ZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21w
ICgoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSwgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpID09IDEpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbal0ubmFtZSksIF9fczFfbGVuIDwgNCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4
dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1l
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxh
eXNbal0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1
Z19kaXNwbGF5c1tqXS5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5
c1tqXS5uYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxh
eXNbal0ubmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAobmFtZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGRlYnVn
X2Rpc3BsYXlzW2pdLm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1Z19kaXNw
bGF5c1tqXS5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShkZWJ1Z19kaXNwbGF5
c1tqXS5uYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
aXNwbGF5c1tqXS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19z
MSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlz
cGxheXNbal0ubmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF07IGlmIChfX3My
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9f
czJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUsIG5hbWUpKSkp
OyB9KSA9PSAwKQogICAgICAgICAgewogICAgICAgICAgICBpZiAoZGVidWdfZGlzcGxheXNbal0u
cHJlc2NhbiAhPSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBi
ZmRfc2l6ZV90eXBlIGxlbmd0aDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0
OwoKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHNlY3Rpb24tPnNoX3NpemU7CiAgICAgICAgICAg
ICAgICBzdGFydCA9ICgodW5zaWduZWQgY2hhciAqKQogICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImRlYnVnIHNlY3Rpb24gZGF0YSIp
KSk7CiAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0KQogICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKCiAgICAgICAgICAgICAgICBkZWJ1Z19kaXNwbGF5c1tqXS5wcmVzY2FuIChzZWN0aW9uLCBz
dGFydCwgZmlsZSk7CiAgICAgICAgICAgICAgICBmcmVlIChzdGFydCk7CiAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICB9CgogIGZvciAoaSA9IDAsIHNl
Y3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hlYWRlci5lX3NobnVtICYm
IGkgPCBudW1fZHVtcF9zZWN0czsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewoKCgoKICAg
ICAgaWYgKGR1bXBfc2VjdHNbaV0gJiAoMSA8PCAwKSkKICAgICAgICBkdW1wX3NlY3Rpb24gKHNl
Y3Rpb24sIGZpbGUpOwoKICAgICAgaWYgKGR1bXBfc2VjdHNbaV0gJiAoMSA8PCAyKSkKICAgICAg
ICBkaXNwbGF5X2RlYnVnX3NlY3Rpb24gKHNlY3Rpb24sIGZpbGUpOwogICAgfQoKICBpZiAoaSA8
IG51bV9kdW1wX3NlY3RzKQogICAgd2FybiAoKCJTb21lIHNlY3Rpb25zIHdlcmUgbm90IGR1bXBl
ZCBiZWNhdXNlIHRoZXkgZG8gbm90IGV4aXN0IVxuIikpOwoKICByZXR1cm4gMTsKfQoKc3RhdGlj
IHZvaWQKcHJvY2Vzc19taXBzX2ZwZV9leGNlcHRpb24gKG1hc2spCiAgICAgaW50IG1hc2s7CnsK
ICBpZiAobWFzaykKICAgIHsKICAgICAgaW50IGZpcnN0ID0gMTsKICAgICAgaWYgKG1hc2sgJiAw
eDAxKQogICAgICAgIGZwdXRzICgiSU5FWCIsIHN0ZG91dCksIGZpcnN0ID0gMDsKICAgICAgaWYg
KG1hc2sgJiAweDAyKQogICAgICAgIHByaW50ZiAoIiVzVUZMTyIsIGZpcnN0ID8gIiIgOiAifCIp
LCBmaXJzdCA9IDA7CiAgICAgIGlmIChtYXNrICYgMHgwNCkKICAgICAgICBwcmludGYgKCIlc09G
TE8iLCBmaXJzdCA/ICIiIDogInwiKSwgZmlyc3QgPSAwOwogICAgICBpZiAobWFzayAmIDB4MDgp
CiAgICAgICAgcHJpbnRmICgiJXNESVYwIiwgZmlyc3QgPyAiIiA6ICJ8IiksIGZpcnN0ID0gMDsK
ICAgICAgaWYgKG1hc2sgJiAweDEwKQogICAgICAgIHByaW50ZiAoIiVzSU5WQUwiLCBmaXJzdCA/
ICIiIDogInwiKTsKICAgIH0KICBlbHNlCiAgICBmcHV0cyAoIjAiLCBzdGRvdXQpOwp9CgpzdGF0
aWMgaW50CnByb2Nlc3NfbWlwc19zcGVjaWZpYyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAg
RWxmX0ludGVybmFsX0R5biAqZW50cnk7CiAgc2l6ZV90IGxpYmxpc3Rfb2Zmc2V0ID0gMDsKICBz
aXplX3QgbGlibGlzdG5vID0gMDsKICBzaXplX3QgY29uZmxpY3Rzbm8gPSAwOwogIHNpemVfdCBv
cHRpb25zX29mZnNldCA9IDA7CiAgc2l6ZV90IGNvbmZsaWN0c19vZmZzZXQgPSAwOwoKCiAgaWYg
KGR5bmFtaWNfc2VnbWVudCA9PSAoKHZvaWQgKikwKSkKCiAgICByZXR1cm4gMDsKCiAgZm9yIChl
bnRyeSA9IGR5bmFtaWNfc2VnbWVudDsgZW50cnktPmRfdGFnICE9IDA7ICsrZW50cnkpCiAgICBz
d2l0Y2ggKGVudHJ5LT5kX3RhZykKICAgICAgewogICAgICBjYXNlIDB4NzAwMDAwMDk6CiAgICAg
ICAgbGlibGlzdF9vZmZzZXQgPSBlbnRyeS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwogICAgICAg
IGJyZWFrOwogICAgICBjYXNlIDB4NzAwMDAwMTA6CiAgICAgICAgbGlibGlzdG5vID0gZW50cnkt
PmRfdW4uZF92YWw7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg3MDAwMDAyOToKICAgICAg
ICBvcHRpb25zX29mZnNldCA9IGVudHJ5LT5kX3VuLmRfdmFsIC0gbG9hZGFkZHI7CiAgICAgICAg
YnJlYWs7CiAgICAgIGNhc2UgMHg3MDAwMDAwODoKICAgICAgICBjb25mbGljdHNfb2Zmc2V0ID0g
ZW50cnktPmRfdW4uZF92YWwgLSBsb2FkYWRkcjsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAw
eDcwMDAwMDBiOgogICAgICAgIGNvbmZsaWN0c25vID0gZW50cnktPmRfdW4uZF92YWw7CiAgICAg
ICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgaWYgKGxp
Ymxpc3Rfb2Zmc2V0ICE9IDAgJiYgbGlibGlzdG5vICE9IDAgJiYgZG9fZHluYW1pYykKICAgIHsK
ICAgICAgRWxmMzJfRXh0ZXJuYWxfTGliICplbGliOwogICAgICBzaXplX3QgY250OwoKICAgICAg
ZWxpYiA9ICgoRWxmMzJfRXh0ZXJuYWxfTGliICopCiAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgo
dm9pZCAqKTApLCBmaWxlLCBsaWJsaXN0X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
bGlibGlzdG5vICogc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9MaWIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAoImxpYmxpc3QiKSkpOwogICAgICBpZiAoZWxpYikKICAgICAgICB7CiAgICAgICAg
ICBwcmludGYgKCJcblNlY3Rpb24gJy5saWJsaXN0JyBjb250YWlucyAlbHUgZW50cmllczpcbiIs
CiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBsaWJsaXN0bm8pOwogICAgICAgICAg
ZnB1dHMgKCIgICAgIExpYnJhcnkgICAgICAgICAgICAgIFRpbWUgU3RhbXAgICAgICAgICAgQ2hl
Y2tzdW0gICBWZXJzaW9uIEZsYWdzXG4iLAogICAgICAgICAgICAgICAgIHN0ZG91dCk7CgogICAg
ICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBsaWJsaXN0bm87ICsrY250KQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgRWxmMzJfTGliIGxpYmxpc3Q7CiAgICAgICAgICAgICAgdGltZV90IHRp
bWU7CiAgICAgICAgICAgICAgY2hhciB0aW1lYnVmWzIwXTsKICAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gKnRtcDsKCiAgICAgICAgICAgICAgbGlibGlzdC5sX25hbWUgPSBieXRlX2dldCAoZWxpYltj
bnRdLmxfbmFtZSwgc2l6ZW9mIChlbGliW2NudF0ubF9uYW1lKSk7CiAgICAgICAgICAgICAgdGlt
ZSA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF90aW1lX3N0YW1wLCBzaXplb2YgKGVsaWJbY250XS5s
X3RpbWVfc3RhbXApKTsKICAgICAgICAgICAgICBsaWJsaXN0LmxfY2hlY2tzdW0gPSBieXRlX2dl
dCAoZWxpYltjbnRdLmxfY2hlY2tzdW0sIHNpemVvZiAoZWxpYltjbnRdLmxfY2hlY2tzdW0pKTsK
ICAgICAgICAgICAgICBsaWJsaXN0LmxfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF92
ZXJzaW9uLCBzaXplb2YgKGVsaWJbY250XS5sX3ZlcnNpb24pKTsKICAgICAgICAgICAgICBsaWJs
aXN0LmxfZmxhZ3MgPSBieXRlX2dldCAoZWxpYltjbnRdLmxfZmxhZ3MsIHNpemVvZiAoZWxpYltj
bnRdLmxfZmxhZ3MpKTsKCiAgICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGltZSk7CiAgICAg
ICAgICAgICAgc3ByaW50ZiAodGltZWJ1ZiwgIiUwNHUtJTAydS0lMDJ1VCUwMnU6JTAydTolMDJ1
IiwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21v
biArIDEsIHRtcC0+dG1fbWRheSwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX2hvdXIs
IHRtcC0+dG1fbWluLCB0bXAtPnRtX3NlYyk7CgogICAgICAgICAgICAgIHByaW50ZiAoIiUzbHU6
ICIsICh1bnNpZ25lZCBsb25nKSBjbnQpOwogICAgICAgICAgICAgIHByaW50X3N5bWJvbCAoMjAs
IGR5bmFtaWNfc3RyaW5ncyArIGxpYmxpc3QubF9uYW1lKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgJXMgJSMxMGx4ICUtN2xkIiwgdGltZWJ1ZiwgbGlibGlzdC5sX2NoZWNrc3VtLAogICAgICAg
ICAgICAgICAgICAgICAgbGlibGlzdC5sX3ZlcnNpb24pOwoKICAgICAgICAgICAgICBpZiAobGli
bGlzdC5sX2ZsYWdzID09IDApCiAgICAgICAgICAgICAgICBwdXRzICgiIE5PTkUiKTsKICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3QKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWU7CiAgICAgICAgICAgICAgICAgICAgaW50IGJpdDsKICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICBsX2ZsYWdzX3ZhbHNbXSA9CiAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICB7ICIgRVhBQ1RfTUFUQ0giLCAweDAwMDAwMDAxIH0sCiAg
ICAgICAgICAgICAgICAgICAgeyAiIElHTk9SRV9JTlRfVkVSIiwgMHgwMDAwMDAwMiB9LAogICAg
ICAgICAgICAgICAgICAgIHsgIiBSRVFVSVJFX01JTk9SIiwgMHgwMDAwMDAwNCB9LAogICAgICAg
ICAgICAgICAgICAgIHsgIiBFWFBPUlRTIiwgMHgwMDAwMDAwOCB9LAogICAgICAgICAgICAgICAg
ICAgIHsgIiBERUxBWV9MT0FEIiwgMHgwMDAwMDAxMCB9LAogICAgICAgICAgICAgICAgICAgIHsg
IiBERUxUQSIsIDB4MDAwMDAwMjAgfQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAg
ICAgICBpbnQgZmxhZ3MgPSBsaWJsaXN0LmxfZmxhZ3M7CiAgICAgICAgICAgICAgICAgIHNpemVf
dCBmY250OwoKICAgICAgICAgICAgICAgICAgZm9yIChmY250ID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgICBmY250IDwgc2l6ZW9mIChsX2ZsYWdzX3ZhbHMpIC8gc2l6ZW9mIChsX2ZsYWdzX3Zh
bHNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICsrZmNudCkKICAgICAgICAgICAgICAgICAg
ICBpZiAoKGZsYWdzICYgbF9mbGFnc192YWxzW2ZjbnRdLmJpdCkgIT0gMCkKICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKGxfZmxhZ3NfdmFsc1tm
Y250XS5uYW1lLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBmbGFncyBePSBsX2Zs
YWdzX3ZhbHNbZmNudF0uYml0OwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICBpZiAoZmxhZ3MgIT0gMCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJSN4Iiwg
KHVuc2lnbmVkIGludCkgZmxhZ3MpOwoKICAgICAgICAgICAgICAgICAgcHV0cyAoIiIpOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgZnJlZSAoZWxpYik7CiAgICAg
ICAgfQogICAgfQoKICBpZiAob3B0aW9uc19vZmZzZXQgIT0gMCkKICAgIHsKICAgICAgRWxmX0V4
dGVybmFsX09wdGlvbnMgKmVvcHQ7CiAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0ID0gc2Vj
dGlvbl9oZWFkZXJzOwogICAgICBFbGZfSW50ZXJuYWxfT3B0aW9ucyAqaW9wdDsKICAgICAgRWxm
X0ludGVybmFsX09wdGlvbnMgKm9wdGlvbjsKICAgICAgc2l6ZV90IG9mZnNldDsKICAgICAgaW50
IGNudDsKCgogICAgICB3aGlsZSAoc2VjdC0+c2hfdHlwZSAhPSAweDcwMDAwMDBkKQogICAgICAg
ICsrc2VjdDsKCiAgICAgIGVvcHQgPSAoRWxmX0V4dGVybmFsX09wdGlvbnMgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBvcHRpb25zX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdC0+c2hfc2l6ZSwgKCJvcHRpb25zIikpOwog
ICAgICBpZiAoZW9wdCkKICAgICAgICB7CiAgICAgICAgICBpb3B0ID0gKChFbGZfSW50ZXJuYWxf
T3B0aW9ucyAqKQogICAgICAgICAgICAgICAgICBtYWxsb2MgKChzZWN0LT5zaF9zaXplIC8gc2l6
ZW9mIChlb3B0KSkgKiBzaXplb2YgKCppb3B0KSkpOwogICAgICAgICAgaWYgKGlvcHQgPT0gKCh2
b2lkICopMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVt
b3J5IikpOwogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CgogICAgICAgICAg
b2Zmc2V0ID0gY250ID0gMDsKICAgICAgICAgIG9wdGlvbiA9IGlvcHQ7CgogICAgICAgICAgd2hp
bGUgKG9mZnNldCA8IHNlY3QtPnNoX3NpemUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBF
bGZfRXh0ZXJuYWxfT3B0aW9ucyAqZW9wdGlvbjsKCiAgICAgICAgICAgICAgZW9wdGlvbiA9IChF
bGZfRXh0ZXJuYWxfT3B0aW9ucyAqKSAoKGNoYXIgKikgZW9wdCArIG9mZnNldCk7CgogICAgICAg
ICAgICAgIG9wdGlvbi0+a2luZCA9IGJ5dGVfZ2V0IChlb3B0aW9uLT5raW5kLCBzaXplb2YgKGVv
cHRpb24tPmtpbmQpKTsKICAgICAgICAgICAgICBvcHRpb24tPnNpemUgPSBieXRlX2dldCAoZW9w
dGlvbi0+c2l6ZSwgc2l6ZW9mIChlb3B0aW9uLT5zaXplKSk7CiAgICAgICAgICAgICAgb3B0aW9u
LT5zZWN0aW9uID0gYnl0ZV9nZXQgKGVvcHRpb24tPnNlY3Rpb24sIHNpemVvZiAoZW9wdGlvbi0+
c2VjdGlvbikpOwogICAgICAgICAgICAgIG9wdGlvbi0+aW5mbyA9IGJ5dGVfZ2V0IChlb3B0aW9u
LT5pbmZvLCBzaXplb2YgKGVvcHRpb24tPmluZm8pKTsKCiAgICAgICAgICAgICAgb2Zmc2V0ICs9
IG9wdGlvbi0+c2l6ZTsKCiAgICAgICAgICAgICAgKytvcHRpb247CiAgICAgICAgICAgICAgKytj
bnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBwcmludGYgKCgiXG5TZWN0aW9uICclcycgY29u
dGFpbnMgJWQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAoKHNlY3QpID09ICgodm9p
ZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3QpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0KS0+c2hfbmFtZSkpLCBjbnQp
OwoKICAgICAgICAgIG9wdGlvbiA9IGlvcHQ7CgogICAgICAgICAgd2hpbGUgKGNudC0tID4gMCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIHNpemVfdCBsZW47CgogICAgICAgICAgICAgIHN3
aXRjaCAob3B0aW9uLT5raW5kKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2Fz
ZSAwOgoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE5VTEwgICAgICAgJWQgJWx4Iiwgb3B0
aW9uLT5zZWN0aW9uLCBvcHRpb24tPmluZm8pOwogICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIFJFR0lORk8g
ICAgIik7CiAgICAgICAgICAgICAgICAgIGlmIChlbGZfaGVhZGVyLmVfbWFjaGluZSA9PSA4KQog
ICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICBFbGYzMl9FeHRlcm5h
bF9SZWdJbmZvICplcmVnOwogICAgICAgICAgICAgICAgICAgICAgRWxmMzJfUmVnSW5mbyByZWdp
bmZvOwoKICAgICAgICAgICAgICAgICAgICAgIGVyZWcgPSAoRWxmMzJfRXh0ZXJuYWxfUmVnSW5m
byAqKSAob3B0aW9uICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2dwcm1h
c2sgPSBieXRlX2dldCAoZXJlZy0+cmlfZ3BybWFzaywgc2l6ZW9mIChlcmVnLT5yaV9ncHJtYXNr
KSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0gPSBieXRlX2dl
dCAoZXJlZy0+cmlfY3BybWFza1swXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzBdKSk7CiAg
ICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMV0gPSBieXRlX2dldCAoZXJl
Zy0+cmlfY3BybWFza1sxXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzFdKSk7CiAgICAgICAg
ICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMl0gPSBieXRlX2dldCAoZXJlZy0+cmlf
Y3BybWFza1syXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzJdKSk7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbM10gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFz
a1szXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzNdKSk7CiAgICAgICAgICAgICAgICAgICAg
ICByZWdpbmZvLnJpX2dwX3ZhbHVlID0gYnl0ZV9nZXQgKGVyZWctPnJpX2dwX3ZhbHVlLCBzaXpl
b2YgKGVyZWctPnJpX2dwX3ZhbHVlKSk7CgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgi
R1BSICUwOGx4ICBHUCAweCVseFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn
aW5mby5yaV9ncHJtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQg
bG9uZykgcmVnaW5mby5yaV9ncF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCIgICAgICAgICAgICBDUFIwICUwOGx4ICBDUFIxICUwOGx4ICBDUFIyICUwOGx4ICBDUFIzICUw
OGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tb
MF0sIHJlZ2luZm8ucmlfY3BybWFza1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVnaW5mby5yaV9jcHJtYXNrWzJdLCByZWdpbmZvLnJpX2Nwcm1hc2tbM10pOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHsK
CiAgICAgICAgICAgICAgICAgICAgICBFbGY2NF9FeHRlcm5hbF9SZWdJbmZvICplcmVnOwogICAg
ICAgICAgICAgICAgICAgICAgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyByZWdpbmZvOwoKICAgICAg
ICAgICAgICAgICAgICAgIGVyZWcgPSAoRWxmNjRfRXh0ZXJuYWxfUmVnSW5mbyAqKSAob3B0aW9u
ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2dwcm1hc2sgPSBieXRlX2dl
dCAoZXJlZy0+cmlfZ3BybWFzaywgc2l6ZW9mIChlcmVnLT5yaV9ncHJtYXNrKSk7CiAgICAgICAg
ICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0gPSBieXRlX2dldCAoZXJlZy0+cmlf
Y3BybWFza1swXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzBdKSk7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMV0gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFz
a1sxXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzFdKSk7CiAgICAgICAgICAgICAgICAgICAg
ICByZWdpbmZvLnJpX2Nwcm1hc2tbMl0gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFza1syXSwg
c2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzJdKSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdp
bmZvLnJpX2Nwcm1hc2tbM10gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFza1szXSwgc2l6ZW9m
IChlcmVnLT5yaV9jcHJtYXNrWzNdKSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJp
X2dwX3ZhbHVlID0gYnl0ZV9nZXQgKGVyZWctPnJpX2dwX3ZhbHVlLCAtOCk7CgogICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmICgiR1BSICUwOGx4ICBHUCAweCIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2luZm8ucmlfZ3BybWFzayk7CiAgICAgICAgICAgICAgICAgICAgICBm
cHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHJlZ2lu
Zm8ucmlfZ3BfdmFsdWUpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KChyZWdpbmZvLnJpX2dwX3ZhbHVlKSAmIDB4ZmZmZmZmZmYpKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmICgiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgICAg
ICAgICAgICBDUFIwICUwOGx4ICBDUFIxICUwOGx4ICBDUFIyICUwOGx4ICBDUFIzICUwOGx4XG4i
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0sIHJl
Z2luZm8ucmlfY3BybWFza1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW5m
by5yaV9jcHJtYXNrWzJdLCByZWdpbmZvLnJpX2Nwcm1hc2tbM10pOwogICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgKytvcHRpb247CiAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICBmcHV0cyAoIiBF
WENFUFRJT05TIGZwZV9taW4oIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgcHJvY2Vzc19t
aXBzX2ZwZV9leGNlcHRpb24gKG9wdGlvbi0+aW5mbyAmIDB4MWYpOwogICAgICAgICAgICAgICAg
ICBmcHV0cyAoIikgZnBlX21heCgiLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICBwcm9jZXNz
X21pcHNfZnBlX2V4Y2VwdGlvbiAoKG9wdGlvbi0+aW5mbyAmIDB4MWYwMCkgPj4gOCk7CiAgICAg
ICAgICAgICAgICAgIGZwdXRzICgiKSIsIHN0ZG91dCk7CgogICAgICAgICAgICAgICAgICBpZiAo
b3B0aW9uLT5pbmZvICYgMHgxMDAwMCkKICAgICAgICAgICAgICAgICAgICBmcHV0cyAoIiBQQUdF
MCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDIwMDAw
KQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFNNTSIsIHN0ZG91dCk7CiAgICAgICAgICAg
ICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDQwMDAwKQogICAgICAgICAgICAgICAgICAgIGZw
dXRzICgiIEZQREJVRyIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmlu
Zm8gJiAweDgwMDAwKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIERJU01JU1MiLCBzdGRv
dXQpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAg
ICAgICAgICAgICAgICAgZnB1dHMgKCIgUEFEICAgICAgICIsIHN0ZG91dCk7CiAgICAgICAgICAg
ICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRz
ICgiIFBSRUZJWCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8g
JiAweDAyKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFBPU1RGSVgiLCBzdGRvdXQpOwog
ICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLT5pbmZvICYgMHgwNCkKICAgICAgICAgICAgICAg
ICAgICBmcHV0cyAoIiBTWU1CT0wiLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgSFdQQVRD
SCAgICIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAw
MDAwMDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFI0S0VPUCIsIHN0ZG91dCk7CiAg
ICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAwMDAwMDAyKQogICAgICAgICAg
ICAgICAgICAgIGZwdXRzICgiIFI4S1BGRVRDSCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAg
IGlmIChvcHRpb24tPmluZm8gJiAweDAwMDAwMDA0KQogICAgICAgICAgICAgICAgICAgIGZwdXRz
ICgiIFI1S0VPUCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8g
JiAweDAwMDAwMDA4KQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFI1S0NWVEwiLCBzdGRv
dXQpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAg
ICAgICAgICAgICAgICAgZnB1dHMgKCIgRklMTCAgICAgICAiLCBzdGRvdXQpOwoKICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAg
IGZwdXRzICgiIFRBR1MgICAgICAgIiwgc3Rkb3V0KTsKCiAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICBmcHV0cyAoIiBIV0FO
RCAgICAgIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbi0+aW5mbyAmIDB4
MDAwMDAwMDEpCiAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgUjRLRU9QX0NIRUNLRUQiLCBz
dGRvdXQpOwogICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLT5pbmZvICYgMHgwMDAwMDAwMikK
ICAgICAgICAgICAgICAgICAgICBmcHV0cyAoIiBSNEtFT1BfQ0xFQU4iLCBzdGRvdXQpOwogICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAg
ICAgICAgZnB1dHMgKCIgSFdPUiAgICAgICIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlm
IChvcHRpb24tPmluZm8gJiAweDAwMDAwMDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgi
IFI0S0VPUF9DSEVDS0VEIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbi0+
aW5mbyAmIDB4MDAwMDAwMDIpCiAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgUjRLRU9QX0NM
RUFOIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlIDk6CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBHUF9HUk9VUCAgJSMwNmx4ICBzZWxm
LWNvbnRhaW5lZCAlIzA2bHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+aW5m
byAmIDB4MDAwMGZmZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbi0+aW5mbyAm
IDB4ZmZmZjAwMDApID4+IDE2KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICBwcmludGYgKCIgSURFTlQgICAgICUjMDZs
eCAgc2VsZi1jb250YWluZWQgJSMwNmx4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b24tPmluZm8gJiAweDAwMDBmZmZmLAogICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24t
PmluZm8gJiAweGZmZmYwMDAwKSA+PiAxNik7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgZGVmYXVsdDoKCiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAlM2QgPz8/
ICAgICAlZCAlbHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+a2luZCwgb3B0
aW9uLT5zZWN0aW9uLCBvcHRpb24tPmluZm8pOwogICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgbGVuID0gc2l6ZW9mICgqZW9wdCk7CiAgICAg
ICAgICAgICAgd2hpbGUgKGxlbiA8IG9wdGlvbi0+c2l6ZSkKICAgICAgICAgICAgICAgIGlmICgo
KGNoYXIgKikgb3B0aW9uKVtsZW5dID49ICcgJwogICAgICAgICAgICAgICAgICAgICYmICgoY2hh
ciAqKSBvcHRpb24pW2xlbl0gPCAweDdmKQogICAgICAgICAgICAgICAgICBwcmludGYgKCIlYyIs
ICgoY2hhciAqKSBvcHRpb24pW2xlbisrXSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgIHByaW50ZiAoIlxcJTAzbyIsICgoY2hhciAqKSBvcHRpb24pW2xlbisrXSk7Cgog
ICAgICAgICAgICAgIGZwdXRzICgiXG4iLCBzdGRvdXQpOwogICAgICAgICAgICAgICsrb3B0aW9u
OwogICAgICAgICAgICB9CgogICAgICAgICAgZnJlZSAoZW9wdCk7CiAgICAgICAgfQogICAgfQoK
ICBpZiAoY29uZmxpY3RzX29mZnNldCAhPSAwICYmIGNvbmZsaWN0c25vICE9IDApCiAgICB7CiAg
ICAgIEVsZjMyX0NvbmZsaWN0ICppY29uZjsKICAgICAgc2l6ZV90IGNudDsKCiAgICAgIGlmIChk
eW5hbWljX3N5bWJvbHMgPT0gKCh2b2lkICopMCkpCiAgICAgICAgewogICAgICAgICAgZXJyb3Ig
KCgiY29uZmxpY3QgbGlzdCBmb3VuZCB3aXRob3V0IGEgZHluYW1pYyBzeW1ib2wgdGFibGUiKSk7
CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpY29uZiA9IChFbGYzMl9Db25m
bGljdCAqKSBtYWxsb2MgKGNvbmZsaWN0c25vICogc2l6ZW9mICgqaWNvbmYpKTsKICAgICAgaWYg
KGljb25mID09ICgodm9pZCAqKTApKQogICAgICAgIHsKICAgICAgICAgIGVycm9yICgoIk91dCBv
ZiBtZW1vcnkiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpZiAoaXNf
MzJiaXRfZWxmKQogICAgICAgIHsKICAgICAgICAgIEVsZjMyX0V4dGVybmFsX0NvbmZsaWN0ICpl
Y29uZjMyOwoKICAgICAgICAgIGVjb25mMzIgPSAoKEVsZjMyX0V4dGVybmFsX0NvbmZsaWN0ICop
CiAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgY29uZmxp
Y3RzX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0c25vICog
c2l6ZW9mICgqZWNvbmYzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNvbmZs
aWN0IikpKTsKICAgICAgICAgIGlmICghZWNvbmYzMikKICAgICAgICAgICAgcmV0dXJuIDA7Cgog
ICAgICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBjb25mbGljdHNubzsgKytjbnQpCiAgICAgICAg
ICAgIGljb25mW2NudF0gPSBieXRlX2dldCAoZWNvbmYzMltjbnRdLCBzaXplb2YgKGVjb25mMzJb
Y250XSkpOwoKICAgICAgICAgIGZyZWUgKGVjb25mMzIpOwogICAgICAgIH0KICAgICAgZWxzZQog
ICAgICAgIHsKICAgICAgICAgIEVsZjY0X0V4dGVybmFsX0NvbmZsaWN0ICplY29uZjY0OwoKICAg
ICAgICAgIGVjb25mNjQgPSAoKEVsZjY0X0V4dGVybmFsX0NvbmZsaWN0ICopCiAgICAgICAgICAg
ICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgY29uZmxpY3RzX29mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0c25vICogc2l6ZW9mICgqZWNv
bmY2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNvbmZsaWN0IikpKTsKICAg
ICAgICAgIGlmICghZWNvbmY2NCkKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgICAgZm9y
IChjbnQgPSAwOyBjbnQgPCBjb25mbGljdHNubzsgKytjbnQpCiAgICAgICAgICAgIGljb25mW2Nu
dF0gPSBieXRlX2dldCAoZWNvbmY2NFtjbnRdLCBzaXplb2YgKGVjb25mNjRbY250XSkpOwoKICAg
ICAgICAgIGZyZWUgKGVjb25mNjQpOwogICAgICAgIH0KCiAgICAgIHByaW50ZiAoKCJcblNlY3Rp
b24gJy5jb25mbGljdCcgY29udGFpbnMgJWxkIGVudHJpZXM6XG4iKSwKICAgICAgICAgICAgICAo
bG9uZykgY29uZmxpY3Rzbm8pOwogICAgICBwdXRzICgoIiAgTnVtOiAgICBJbmRleCAgICAgICBW
YWx1ZSAgTmFtZSIpKTsKCiAgICAgIGZvciAoY250ID0gMDsgY250IDwgY29uZmxpY3Rzbm87ICsr
Y250KQogICAgICAgIHsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnBzeW0gPSAmIGR5bmFt
aWNfc3ltYm9sc1tpY29uZltjbnRdXTsKCiAgICAgICAgICBwcmludGYgKCIlNWx1OiAlOGx1ICAi
LCAodW5zaWduZWQgbG9uZykgY250LCBpY29uZltjbnRdKTsKICAgICAgICAgIHByaW50X3ZtYSAo
cHN5bS0+c3RfdmFsdWUsIEZVTExfSEVYKTsKICAgICAgICAgIHB1dGNoYXIgKCcgJyk7CiAgICAg
ICAgICBwcmludF9zeW1ib2wgKDI1LCBkeW5hbWljX3N0cmluZ3MgKyBwc3ltLT5zdF9uYW1lKTsK
ICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgIH0KCiAgICAgIGZyZWUgKGljb25mKTsK
ICAgIH0KCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKcHJvY2Vzc19nbnVfbGlibGlzdCAoZmls
ZSkKICAgICBGSUxFICpmaWxlOwp7CiAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb24sICpzdHJp
bmdfc2VjOwogIEVsZjMyX0V4dGVybmFsX0xpYiAqZWxpYjsKICBjaGFyICpzdHJ0YWI7CiAgc2l6
ZV90IGNudDsKICB1bnNpZ25lZCBpOwoKICBpZiAoISBkb19hcmNoKQogICAgcmV0dXJuIDA7Cgog
IGZvciAoaSA9IDAsIHNlY3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hl
YWRlci5lX3NobnVtOwogICAgICAgaSsrLCBzZWN0aW9uKyspCiAgICB7CiAgICAgIHN3aXRjaCAo
c2VjdGlvbi0+c2hfdHlwZSkKICAgICAgICB7CiAgICAgICAgY2FzZSAweDZmZmZmZmY3OgogICAg
ICAgICAgZWxpYiA9ICgoRWxmMzJfRXh0ZXJuYWxfTGliICopCiAgICAgICAgICAgICAgICAgZ2V0
X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNo
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgibGlibGlzdCIpKSk7CgogICAgICAg
ICAgaWYgKGVsaWIgPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
c3RyaW5nX3NlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rpb24tPnNoX2xpbmspIDwgMHhG
RjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5zaF9saW5rKSA8PSAweEZGRkYg
PyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEgLSAweEZGMDApKSkpOwoKICAg
ICAgICAgIHN0cnRhYiA9IChjaGFyICopIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgc3Ry
aW5nX3NlYy0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZ19zZWMtPnNoX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCJsaWJsaXN0IHN0cmluZyB0YWJsZSIpKTsKCiAgICAgICAgICBpZiAoc3RydGFiID09ICgo
dm9pZCAqKTApCiAgICAgICAgICAgICAgfHwgc2VjdGlvbi0+c2hfZW50c2l6ZSAhPSBzaXplb2Yg
KEVsZjMyX0V4dGVybmFsX0xpYikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmcmVlIChl
bGliKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIHByaW50
ZiAoKCJcbkxpYnJhcnkgbGlzdCBzZWN0aW9uICclcycgY29udGFpbnMgJWx1IGVudHJpZXM6XG4i
KSwKICAgICAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSwKICAgICAgICAgICAgICAg
ICAgKGxvbmcpIChzZWN0aW9uLT5zaF9zaXplIC8gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9MaWIp
KSk7CgogICAgICAgICAgcHV0cyAoIiAgICAgTGlicmFyeSAgICAgICAgICAgICAgVGltZSBTdGFt
cCAgICAgICAgICBDaGVja3N1bSAgIFZlcnNpb24gRmxhZ3MiKTsKCiAgICAgICAgICBmb3IgKGNu
dCA9IDA7IGNudCA8IHNlY3Rpb24tPnNoX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX0xp
Yik7CiAgICAgICAgICAgICAgICsrY250KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxm
MzJfTGliIGxpYmxpc3Q7CiAgICAgICAgICAgICAgdGltZV90IHRpbWU7CiAgICAgICAgICAgICAg
Y2hhciB0aW1lYnVmWzIwXTsKICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKnRtcDsKCiAgICAgICAg
ICAgICAgbGlibGlzdC5sX25hbWUgPSBieXRlX2dldCAoZWxpYltjbnRdLmxfbmFtZSwgc2l6ZW9m
IChlbGliW2NudF0ubF9uYW1lKSk7CiAgICAgICAgICAgICAgdGltZSA9IGJ5dGVfZ2V0IChlbGli
W2NudF0ubF90aW1lX3N0YW1wLCBzaXplb2YgKGVsaWJbY250XS5sX3RpbWVfc3RhbXApKTsKICAg
ICAgICAgICAgICBsaWJsaXN0LmxfY2hlY2tzdW0gPSBieXRlX2dldCAoZWxpYltjbnRdLmxfY2hl
Y2tzdW0sIHNpemVvZiAoZWxpYltjbnRdLmxfY2hlY2tzdW0pKTsKICAgICAgICAgICAgICBsaWJs
aXN0LmxfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF92ZXJzaW9uLCBzaXplb2YgKGVs
aWJbY250XS5sX3ZlcnNpb24pKTsKICAgICAgICAgICAgICBsaWJsaXN0LmxfZmxhZ3MgPSBieXRl
X2dldCAoZWxpYltjbnRdLmxfZmxhZ3MsIHNpemVvZiAoZWxpYltjbnRdLmxfZmxhZ3MpKTsKCiAg
ICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGltZSk7CiAgICAgICAgICAgICAgc3ByaW50ZiAo
dGltZWJ1ZiwgIiUwNHUtJTAydS0lMDJ1VCUwMnU6JTAydTolMDJ1IiwKICAgICAgICAgICAgICAg
ICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21vbiArIDEsIHRtcC0+dG1fbWRh
eSwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX2hvdXIsIHRtcC0+dG1fbWluLCB0bXAt
PnRtX3NlYyk7CgogICAgICAgICAgICAgIHByaW50ZiAoIiUzbHU6ICIsICh1bnNpZ25lZCBsb25n
KSBjbnQpOwogICAgICAgICAgICAgIGlmIChkb193aWRlKQogICAgICAgICAgICAgICAgcHJpbnRm
ICgiJS0yMHMiLCBzdHJ0YWIgKyBsaWJsaXN0LmxfbmFtZSk7CiAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgcHJpbnRmICgiJS0yMC4yMHMiLCBzdHJ0YWIgKyBsaWJsaXN0LmxfbmFt
ZSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiICVzICUjMDEwbHggJS03bGQgJS03bGRcbiIsIHRp
bWVidWYsIGxpYmxpc3QubF9jaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgIGxpYmxpc3Qu
bF92ZXJzaW9uLCBsaWJsaXN0LmxfZmxhZ3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgZnJl
ZSAoZWxpYik7CiAgICAgICAgfQogICAgfQoKICByZXR1cm4gMTsKfQoKc3RhdGljIGNvbnN0IGNo
YXIgKgpnZXRfbm90ZV90eXBlIChlX3R5cGUpCiAgICAgdW5zaWduZWQgZV90eXBlOwp7CiAgc3Rh
dGljIGNoYXIgYnVmZls2NF07CgogIHN3aXRjaCAoZV90eXBlKQogICAgewogICAgY2FzZSAxOiBy
ZXR1cm4gKCJOVF9QUlNUQVRVUyAocHJzdGF0dXMgc3RydWN0dXJlKSIpOwogICAgY2FzZSAyOiBy
ZXR1cm4gKCJOVF9GUFJFR1NFVCAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzKSIpOwogICAgY2Fz
ZSAzOiByZXR1cm4gKCJOVF9QUlBTSU5GTyAocHJwc2luZm8gc3RydWN0dXJlKSIpOwogICAgY2Fz
ZSA0OiByZXR1cm4gKCJOVF9UQVNLU1RSVUNUICh0YXNrIHN0cnVjdHVyZSkiKTsKICAgIGNhc2Ug
MHg0NmU2MmI3ZjogcmV0dXJuICgiTlRfUFJYRlBSRUcgKHVzZXJfeGZwcmVncyBzdHJ1Y3R1cmUp
Iik7CiAgICBjYXNlIDEwOiByZXR1cm4gKCJOVF9QU1RBVFVTIChwc3RhdHVzIHN0cnVjdHVyZSki
KTsKICAgIGNhc2UgMTI6IHJldHVybiAoIk5UX0ZQUkVHUyAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0
ZXJzKSIpOwogICAgY2FzZSAxMzogcmV0dXJuICgiTlRfUFNJTkZPIChwc2luZm8gc3RydWN0dXJl
KSIpOwogICAgY2FzZSAxNjogcmV0dXJuICgiTlRfTFdQU1RBVFVTIChsd3BzdGF0dXNfdCBzdHJ1
Y3R1cmUpIik7CiAgICBjYXNlIDE3OiByZXR1cm4gKCJOVF9MV1BTSU5GTyAobHdwc2luZm9fdCBz
dHJ1Y3R1cmUpIik7CiAgICBjYXNlIDE4OiByZXR1cm4gKCJOVF9XSU4zMlBTVEFUVVMgKHdpbjMy
X3BzdGF0dXMgc3RydWN0dXJlKSIpOwogICAgZGVmYXVsdDoKICAgICAgc3ByaW50ZiAoYnVmZiwg
KCJVbmtub3duIG5vdGUgdHlwZTogKDB4JTA4eCkiKSwgZV90eXBlKTsKICAgICAgcmV0dXJuIGJ1
ZmY7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X25ldGJzZF9lbGZjb3JlX25vdGVf
dHlwZSAoZV90eXBlKQogICAgIHVuc2lnbmVkIGVfdHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1ZmZb
NjRdOwoKICBpZiAoZV90eXBlID09IDEpCiAgICB7CgogICAgICByZXR1cm4gKCJOZXRCU0QgcHJv
Y2luZm8gc3RydWN0dXJlIik7CiAgICB9CgoKCgoKCiAgaWYgKGVfdHlwZSA8IDMyKQogICAgewog
ICAgICBzcHJpbnRmIChidWZmLCAoIlVua25vd24gbm90ZSB0eXBlOiAoMHglMDh4KSIpLCBlX3R5
cGUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KCiAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFj
aGluZSkKICAgIHsKCgoKICAgIGNhc2UgNDE6CiAgICBjYXNlIDB4OTAyNjoKICAgIGNhc2UgMjoK
ICAgIGNhc2UgMTg6CiAgICBjYXNlIDQzOgogICAgICBzd2l0Y2ggKGVfdHlwZSkKICAgICAgICB7
CiAgICAgICAgY2FzZSAzMiArMDoKICAgICAgICAgIHJldHVybiAoIlBUX0dFVFJFR1MgKHJlZyBz
dHJ1Y3R1cmUpIik7CiAgICAgICAgY2FzZSAzMiArMjoKICAgICAgICAgIHJldHVybiAoIlBUX0dF
VEZQUkVHUyAoZnByZWcgc3RydWN0dXJlKSIpOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKCgogICAgZGVmYXVsdDoKICAgICAgc3dpdGNo
IChlX3R5cGUpCiAgICAgICAgewogICAgICAgIGNhc2UgMzIgKzE6CiAgICAgICAgICByZXR1cm4g
KCJQVF9HRVRSRUdTIChyZWcgc3RydWN0dXJlKSIpOwogICAgICAgIGNhc2UgMzIgKzM6CiAgICAg
ICAgICByZXR1cm4gKCJQVF9HRVRGUFJFR1MgKGZwcmVnIHN0cnVjdHVyZSkiKTsKICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICBzcHJpbnRmIChidWZm
LCAoIlBUX0ZJUlNUTUFDSCslZCIpLCBlX3R5cGUgLSAzMik7CiAgcmV0dXJuIGJ1ZmY7Cn0KCgoK
CgoKc3RhdGljIGludApwcm9jZXNzX25vdGUgKHBub3RlKQogICAgIEVsZl9JbnRlcm5hbF9Ob3Rl
ICpwbm90ZTsKewogIGNvbnN0IGNoYXIgKm50OwoKICBpZiAocG5vdGUtPm5hbWVzeiA9PSAwKQog
ICAgewoKCiAgICAgIG50ID0gZ2V0X25vdGVfdHlwZSAocG5vdGUtPnR5cGUpOwogICAgfQogIGVs
c2UgaWYgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMTEpICYmICgoX19i
dWlsdGluX2NvbnN0YW50X3AgKHBub3RlLT5uYW1lZGF0YSkgJiYgc3RybGVuIChwbm90ZS0+bmFt
ZWRhdGEpIDwgKChzaXplX3QpICgxMSkpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCJOZXRC
U0QtQ09SRSIpICYmIHN0cmxlbiAoIk5ldEJTRC1DT1JFIikgPCAoKHNpemVfdCkgKDExKSkpKSA/
IF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9j
b25zdGFudF9wIChwbm90ZS0+bmFtZWRhdGEpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiTmV0
QlNELUNPUkUiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHBub3RlLT5uYW1lZGF0YSksIF9fczJf
bGVuID0gc3RybGVuICgiTmV0QlNELUNPUkUiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
cG5vdGUtPm5hbWVkYXRhKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwbm90ZS0+bmFt
ZWRhdGEpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJOZXRCU0Qt
Q09SRSIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAq
KSAocG5vdGUtPm5hbWVkYXRhKSwgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIiksIChf
X3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAocG5vdGUtPm5hbWVkYXRhKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgocG5vdGUtPm5hbWVkYXRhKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwbm90ZS0+
bmFtZWRhdGEpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAocG5vdGUtPm5hbWVkYXRhKSwg
X19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIk5ldEJTRC1DT1JFIikgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJOZXRCU0QtQ09SRSIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0YSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSgiTmV0QlNELUNPUkUiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVkYXRhKSlbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTmV0QlNELUNPUkUiKSlbMV0pOyBpZiAo
X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVkYXRhKSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTmV0QlNELUNPUkUi
KSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0
YSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5l
dEJTRC1DT1JFIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVk
YXRhKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHBub3RlLT5uYW1lZGF0YSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0YSkpWzNdIC0gX19zMlszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIk5ldEJTRC1DT1JF
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCJOZXRCU0QtQ09SRSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAoIk5ldEJTRC1DT1JFIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50
X3AgKHBub3RlLT5uYW1lZGF0YSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHBub3RlLT5u
YW1lZGF0YSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikocG5vdGUtPm5hbWVkYXRhKSA9
PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIk5ldEJTRC1D
T1JFIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5u
YW1lZGF0YSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIk5ldEJTRC1DT1JFIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHBub3RlLT5uYW1lZGF0YSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0g
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRh
dGEpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIikpWzBdOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpKVsxXSk7
IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1D
T1JFIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ik5ldEJTRC1DT1JFIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChwbm90ZS0+
bmFtZWRhdGEsICJOZXRCU0QtQ09SRSIpKSkpOyB9KSA6IHN0cm5jbXAgKHBub3RlLT5uYW1lZGF0
YSwgIk5ldEJTRC1DT1JFIiwgMTEpKSkgPT0gMCkKICAgIHsKCiAgICAgIG50ID0gZ2V0X25ldGJz
ZF9lbGZjb3JlX25vdGVfdHlwZSAocG5vdGUtPnR5cGUpOwogICAgfQogIGVsc2UKICAgIHsKCgog
ICAgICBudCA9IGdldF9ub3RlX3R5cGUgKHBub3RlLT50eXBlKTsKICAgIH0KCiAgcHJpbnRmICgi
ICAlc1x0XHQweCUwOGx4XHQlc1xuIiwKICAgICAgICAgIHBub3RlLT5uYW1lc3ogPyBwbm90ZS0+
bmFtZWRhdGEgOiAiKE5PTkUpIiwKICAgICAgICAgIHBub3RlLT5kZXNjc3osIG50KTsKICByZXR1
cm4gMTsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19jb3JlZmlsZV9ub3RlX3NlZ21lbnQgKGZpbGUs
IG9mZnNldCwgbGVuZ3RoKQogICAgIEZJTEUgKmZpbGU7CiAgICAgYmZkX3ZtYSBvZmZzZXQ7CiAg
ICAgYmZkX3ZtYSBsZW5ndGg7CnsKICBFbGZfRXh0ZXJuYWxfTm90ZSAqcG5vdGVzOwogIEVsZl9F
eHRlcm5hbF9Ob3RlICpleHRlcm5hbDsKICBpbnQgcmVzID0gMTsKCiAgaWYgKGxlbmd0aCA8PSAw
KQogICAgcmV0dXJuIDA7CgogIHBub3RlcyA9IChFbGZfRXh0ZXJuYWxfTm90ZSAqKSBnZXRfZGF0
YSAoKCh2b2lkICopMCksIGZpbGUsIG9mZnNldCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCJub3RlcyIpKTsKICBpZiAoIXBub3RlcykKICAgIHJl
dHVybiAwOwoKICBleHRlcm5hbCA9IHBub3RlczsKCiAgcHJpbnRmICgoIlxuTm90ZXMgYXQgb2Zm
c2V0IDB4JTA4bHggd2l0aCBsZW5ndGggMHglMDhseDpcbiIpLAogICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpIG9mZnNldCwgKHVuc2lnbmVkIGxvbmcpIGxlbmd0aCk7CiAgcHJpbnRmICgoIiAgT3du
ZXJcdFx0RGF0YSBzaXplXHREZXNjcmlwdGlvblxuIikpOwoKICB3aGlsZSAoZXh0ZXJuYWwgPCAo
RWxmX0V4dGVybmFsX05vdGUgKikoKGNoYXIgKikgcG5vdGVzICsgbGVuZ3RoKSkKICAgIHsKICAg
ICAgRWxmX0V4dGVybmFsX05vdGUgKm5leHQ7CiAgICAgIEVsZl9JbnRlcm5hbF9Ob3RlIGlub3Rl
OwogICAgICBjaGFyICp0ZW1wID0gKCh2b2lkICopMCk7CgogICAgICBpbm90ZS50eXBlID0gYnl0
ZV9nZXQgKGV4dGVybmFsLT50eXBlLCBzaXplb2YgKGV4dGVybmFsLT50eXBlKSk7CiAgICAgIGlu
b3RlLm5hbWVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bmFtZXN6LCBzaXplb2YgKGV4dGVybmFs
LT5uYW1lc3opKTsKICAgICAgaW5vdGUubmFtZWRhdGEgPSBleHRlcm5hbC0+bmFtZTsKICAgICAg
aW5vdGUuZGVzY3N6ID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5kZXNjc3osIHNpemVvZiAoZXh0ZXJu
YWwtPmRlc2NzeikpOwogICAgICBpbm90ZS5kZXNjZGF0YSA9IGlub3RlLm5hbWVkYXRhICsgKCgo
aW5vdGUubmFtZXN6KSArICgoYmZkX3ZtYSkgMSA8PCAoMikpIC0gMSkgJiAoKGJmZF92bWEpIC0x
IDw8ICgyKSkpOwogICAgICBpbm90ZS5kZXNjcG9zID0gb2Zmc2V0ICsgKGlub3RlLmRlc2NkYXRh
IC0gKGNoYXIgKikgcG5vdGVzKTsKCiAgICAgIG5leHQgPSAoRWxmX0V4dGVybmFsX05vdGUgKiko
aW5vdGUuZGVzY2RhdGEgKyAoKChpbm90ZS5kZXNjc3opICsgKChiZmRfdm1hKSAxIDw8ICgyKSkg
LSAxKSAmICgoYmZkX3ZtYSkgLTEgPDwgKDIpKSkpOwoKICAgICAgaWYgKCgoY2hhciAqKSBuZXh0
KSA+ICgoKGNoYXIgKikgcG5vdGVzKSArIGxlbmd0aCkpCiAgICAgICAgewogICAgICAgICAgd2Fy
biAoKCJjb3JydXB0IG5vdGUgZm91bmQgYXQgb2Zmc2V0ICV4IGludG8gY29yZSBub3Rlc1xuIiks
CiAgICAgICAgICAgICAgICAoKGNoYXIgKikgZXh0ZXJuYWwpIC0gKChjaGFyICopIHBub3Rlcykp
OwogICAgICAgICAgd2FybiAoKCIgdHlwZTogJXgsIG5hbWVzaXplOiAlMDhseCwgZGVzY3NpemU6
ICUwOGx4XG4iKSwKICAgICAgICAgICAgICAgIGlub3RlLnR5cGUsIGlub3RlLm5hbWVzeiwgaW5v
dGUuZGVzY3N6KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGV4dGVybmFsID0g
bmV4dDsKCgoKCgogICAgICBpZiAoaW5vdGUubmFtZWRhdGFbaW5vdGUubmFtZXN6XSAhPSAnXDAn
KQogICAgICAgIHsKICAgICAgICAgIHRlbXAgPSBtYWxsb2MgKGlub3RlLm5hbWVzeiArIDEpOwoK
ICAgICAgICAgIGlmICh0ZW1wID09ICgodm9pZCAqKTApKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICAgICAgICAgIHJlcyA9IDA7
CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGlub3RlLm5hbWVkYXRhKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoaW5vdGUubmFtZXN6KSA/IChzdHJsZW4gKGlub3RlLm5hbWVkYXRhKSArIDEg
Pj0gKChzaXplX3QpIChpbm90ZS5uYW1lc3opKSA/IChjaGFyICopIG1lbWNweSAodGVtcCwgaW5v
dGUubmFtZWRhdGEsIGlub3RlLm5hbWVzeikgOiBzdHJuY3B5ICh0ZW1wLCBpbm90ZS5uYW1lZGF0
YSwgaW5vdGUubmFtZXN6KSkgOiBzdHJuY3B5ICh0ZW1wLCBpbm90ZS5uYW1lZGF0YSwgaW5vdGUu
bmFtZXN6KSkpOwogICAgICAgICAgdGVtcFtpbm90ZS5uYW1lc3pdID0gMDsKCgogICAgICAgICAg
aW5vdGUubmFtZWRhdGEgPSB0ZW1wOwogICAgICAgIH0KCiAgICAgIHJlcyAmPSBwcm9jZXNzX25v
dGUgKCYgaW5vdGUpOwoKICAgICAgaWYgKHRlbXAgIT0gKCh2b2lkICopMCkpCiAgICAgICAgewog
ICAgICAgICAgZnJlZSAodGVtcCk7CiAgICAgICAgICB0ZW1wID0gKCh2b2lkICopMCk7CiAgICAg
ICAgfQogICAgfQoKICBmcmVlIChwbm90ZXMpOwoKICByZXR1cm4gcmVzOwp9CgpzdGF0aWMgaW50
CnByb2Nlc3NfY29yZWZpbGVfbm90ZV9zZWdtZW50cyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7
CiAgRWxmX0ludGVybmFsX1BoZHIgKnByb2dyYW1faGVhZGVyczsKICBFbGZfSW50ZXJuYWxfUGhk
ciAqc2VnbWVudDsKICB1bnNpZ25lZCBpbnQgaTsKICBpbnQgcmVzID0gMTsKCiAgcHJvZ3JhbV9o
ZWFkZXJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopIG1hbGxvYwogICAgKGVsZl9oZWFkZXIuZV9w
aG51bSAqIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKCiAgaWYgKHByb2dyYW1faGVhZGVy
cyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikp
OwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYgKGlzXzMyYml0X2VsZikKICAgIGkgPSBnZXRf
MzJiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwogIGVsc2UKICAg
IGkgPSBnZXRfNjRiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwoK
ICBpZiAoaSA9PSAwKQogICAgewogICAgICBmcmVlIChwcm9ncmFtX2hlYWRlcnMpOwogICAgICBy
ZXR1cm4gMDsKICAgIH0KCiAgZm9yIChpID0gMCwgc2VnbWVudCA9IHByb2dyYW1faGVhZGVyczsK
ICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfcGhudW07CiAgICAgICBpKyssIHNlZ21lbnQrKykKICAg
IHsKICAgICAgaWYgKHNlZ21lbnQtPnBfdHlwZSA9PSA0KQogICAgICAgIHJlcyAmPSBwcm9jZXNz
X2NvcmVmaWxlX25vdGVfc2VnbWVudCAoZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChiZmRfdm1hKSBzZWdtZW50LT5wX29mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZmRfdm1hKSBzZWdtZW50LT5w
X2ZpbGVzeik7CiAgICB9CgogIGZyZWUgKHByb2dyYW1faGVhZGVycyk7CgogIHJldHVybiByZXM7
Cn0KCnN0YXRpYyBpbnQKcHJvY2Vzc19jb3JlZmlsZV9jb250ZW50cyAoZmlsZSkKICAgICBGSUxF
ICpmaWxlOwp7CgogIGlmICghIGRvX25vdGVzKQogICAgcmV0dXJuIDE7CgoKICBpZiAoZWxmX2hl
YWRlci5lX3R5cGUgIT0gNCkKICAgIHJldHVybiAxOwoKCiAgaWYgKGVsZl9oZWFkZXIuZV9waG51
bSA9PSAwKQogICAgewogICAgICBwcmludGYgKCgiTm8gbm90ZSBzZWdtZW50cyBwcmVzZW50IGlu
IHRoZSBjb3JlIGZpbGUuXG4iKSk7CiAgICAgIHJldHVybiAxOwogICB9CgogIHJldHVybiBwcm9j
ZXNzX2NvcmVmaWxlX25vdGVfc2VnbWVudHMgKGZpbGUpOwp9CgpzdGF0aWMgaW50CnByb2Nlc3Nf
YXJjaF9zcGVjaWZpYyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAgaWYgKCEgZG9fYXJjaCkK
ICAgIHJldHVybiAxOwoKICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQogICAgewogICAg
Y2FzZSA4OgogICAgY2FzZSAxMDoKICAgICAgcmV0dXJuIHByb2Nlc3NfbWlwc19zcGVjaWZpYyAo
ZmlsZSk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0
dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZ2V0X2ZpbGVfaGVhZGVyIChmaWxlKQogICAgIEZJTEUgKmZp
bGU7CnsKCiAgaWYgKGZyZWFkIChlbGZfaGVhZGVyLmVfaWRlbnQsIDE2LCAxLCBmaWxlKSAhPSAx
KQogICAgcmV0dXJuIDA7CgoKICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9pZGVudFs1XSkKICAgIHsK
ICAgIGRlZmF1bHQ6CiAgICBjYXNlIDA6CiAgICBjYXNlIDE6IGJ5dGVfZ2V0ID0gYnl0ZV9nZXRf
bGl0dGxlX2VuZGlhbjsgYnJlYWs7CiAgICBjYXNlIDI6IGJ5dGVfZ2V0ID0gYnl0ZV9nZXRfYmln
X2VuZGlhbjsgYnJlYWs7CiAgICB9CgoKICBpc18zMmJpdF9lbGYgPSAoZWxmX2hlYWRlci5lX2lk
ZW50WzRdICE9IDIpOwoKCiAgaWYgKGlzXzMyYml0X2VsZikKICAgIHsKICAgICAgRWxmMzJfRXh0
ZXJuYWxfRWhkciBlaGRyMzI7CgogICAgICBpZiAoZnJlYWQgKGVoZHIzMi5lX3R5cGUsIHNpemVv
ZiAoZWhkcjMyKSAtIDE2LCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHJldHVybiAwOwoKICAgICAg
ZWxmX2hlYWRlci5lX3R5cGUgPSBieXRlX2dldCAoZWhkcjMyLmVfdHlwZSwgc2l6ZW9mIChlaGRy
MzIuZV90eXBlKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9tYWNoaW5lID0gYnl0ZV9nZXQgKGVoZHIz
Mi5lX21hY2hpbmUsIHNpemVvZiAoZWhkcjMyLmVfbWFjaGluZSkpOwogICAgICBlbGZfaGVhZGVy
LmVfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlaGRyMzIuZV92ZXJzaW9uLCBzaXplb2YgKGVoZHIzMi5l
X3ZlcnNpb24pKTsKICAgICAgZWxmX2hlYWRlci5lX2VudHJ5ID0gYnl0ZV9nZXQgKGVoZHIzMi5l
X2VudHJ5LCBzaXplb2YgKGVoZHIzMi5lX2VudHJ5KSk7CiAgICAgIGVsZl9oZWFkZXIuZV9waG9m
ZiA9IGJ5dGVfZ2V0IChlaGRyMzIuZV9waG9mZiwgc2l6ZW9mIChlaGRyMzIuZV9waG9mZikpOwog
ICAgICBlbGZfaGVhZGVyLmVfc2hvZmYgPSBieXRlX2dldCAoZWhkcjMyLmVfc2hvZmYsIHNpemVv
ZiAoZWhkcjMyLmVfc2hvZmYpKTsKICAgICAgZWxmX2hlYWRlci5lX2ZsYWdzID0gYnl0ZV9nZXQg
KGVoZHIzMi5lX2ZsYWdzLCBzaXplb2YgKGVoZHIzMi5lX2ZsYWdzKSk7CiAgICAgIGVsZl9oZWFk
ZXIuZV9laHNpemUgPSBieXRlX2dldCAoZWhkcjMyLmVfZWhzaXplLCBzaXplb2YgKGVoZHIzMi5l
X2Voc2l6ZSkpOwogICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplID0gYnl0ZV9nZXQgKGVoZHIz
Mi5lX3BoZW50c2l6ZSwgc2l6ZW9mIChlaGRyMzIuZV9waGVudHNpemUpKTsKICAgICAgZWxmX2hl
YWRlci5lX3BobnVtID0gYnl0ZV9nZXQgKGVoZHIzMi5lX3BobnVtLCBzaXplb2YgKGVoZHIzMi5l
X3BobnVtKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9zaGVudHNpemUgPSBieXRlX2dldCAoZWhkcjMy
LmVfc2hlbnRzaXplLCBzaXplb2YgKGVoZHIzMi5lX3NoZW50c2l6ZSkpOwogICAgICBlbGZfaGVh
ZGVyLmVfc2hudW0gPSBieXRlX2dldCAoZWhkcjMyLmVfc2hudW0sIHNpemVvZiAoZWhkcjMyLmVf
c2hudW0pKTsKICAgICAgZWxmX2hlYWRlci5lX3Noc3RybmR4ID0gYnl0ZV9nZXQgKGVoZHIzMi5l
X3Noc3RybmR4LCBzaXplb2YgKGVoZHIzMi5lX3Noc3RybmR4KSk7CiAgICB9CiAgZWxzZQogICAg
ewogICAgICBFbGY2NF9FeHRlcm5hbF9FaGRyIGVoZHI2NDsKCgoKCgogICAgICBpZiAoc2l6ZW9m
IChiZmRfdm1hKSA8IDgpCiAgICAgICAgewogICAgICAgICAgZXJyb3IgKCgiVGhpcyBpbnN0YW5j
ZSBvZiByZWFkZWxmIGhhcyBiZWVuIGJ1aWx0IHdpdGhvdXQgc3VwcG9ydCBmb3IgYVxuNjQgYml0
IGRhdGEgdHlwZSBhbmQgc28gaXQgY2Fubm90IHJlYWQgNjQgYml0IEVMRiBmaWxlcy5cbiIpKTsK
CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpZiAoZnJlYWQgKGVoZHI2NC5l
X3R5cGUsIHNpemVvZiAoZWhkcjY0KSAtIDE2LCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHJldHVy
biAwOwoKICAgICAgZWxmX2hlYWRlci5lX3R5cGUgPSBieXRlX2dldCAoZWhkcjY0LmVfdHlwZSwg
c2l6ZW9mIChlaGRyNjQuZV90eXBlKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9tYWNoaW5lID0gYnl0
ZV9nZXQgKGVoZHI2NC5lX21hY2hpbmUsIHNpemVvZiAoZWhkcjY0LmVfbWFjaGluZSkpOwogICAg
ICBlbGZfaGVhZGVyLmVfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlaGRyNjQuZV92ZXJzaW9uLCBzaXpl
b2YgKGVoZHI2NC5lX3ZlcnNpb24pKTsKICAgICAgZWxmX2hlYWRlci5lX2VudHJ5ID0gYnl0ZV9n
ZXQgKGVoZHI2NC5lX2VudHJ5LCAtOCk7CiAgICAgIGVsZl9oZWFkZXIuZV9waG9mZiA9IGJ5dGVf
Z2V0IChlaGRyNjQuZV9waG9mZiwgLTgpOwogICAgICBlbGZfaGVhZGVyLmVfc2hvZmYgPSBieXRl
X2dldCAoZWhkcjY0LmVfc2hvZmYsIC04KTsKICAgICAgZWxmX2hlYWRlci5lX2ZsYWdzID0gYnl0
ZV9nZXQgKGVoZHI2NC5lX2ZsYWdzLCBzaXplb2YgKGVoZHI2NC5lX2ZsYWdzKSk7CiAgICAgIGVs
Zl9oZWFkZXIuZV9laHNpemUgPSBieXRlX2dldCAoZWhkcjY0LmVfZWhzaXplLCBzaXplb2YgKGVo
ZHI2NC5lX2Voc2l6ZSkpOwogICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplID0gYnl0ZV9nZXQg
KGVoZHI2NC5lX3BoZW50c2l6ZSwgc2l6ZW9mIChlaGRyNjQuZV9waGVudHNpemUpKTsKICAgICAg
ZWxmX2hlYWRlci5lX3BobnVtID0gYnl0ZV9nZXQgKGVoZHI2NC5lX3BobnVtLCBzaXplb2YgKGVo
ZHI2NC5lX3BobnVtKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9zaGVudHNpemUgPSBieXRlX2dldCAo
ZWhkcjY0LmVfc2hlbnRzaXplLCBzaXplb2YgKGVoZHI2NC5lX3NoZW50c2l6ZSkpOwogICAgICBl
bGZfaGVhZGVyLmVfc2hudW0gPSBieXRlX2dldCAoZWhkcjY0LmVfc2hudW0sIHNpemVvZiAoZWhk
cjY0LmVfc2hudW0pKTsKICAgICAgZWxmX2hlYWRlci5lX3Noc3RybmR4ID0gYnl0ZV9nZXQgKGVo
ZHI2NC5lX3Noc3RybmR4LCBzaXplb2YgKGVoZHI2NC5lX3Noc3RybmR4KSk7CiAgICB9CgogIGlm
IChlbGZfaGVhZGVyLmVfc2hvZmYpCiAgICB7CgoKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAg
ICAgICBnZXRfMzJiaXRfc2VjdGlvbl9oZWFkZXJzIChmaWxlLCAxKTsKICAgICAgZWxzZQogICAg
ICAgIGdldF82NGJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIDEpOwogICAgfQoKICByZXR1cm4g
MTsKfQoKc3RhdGljIGludApwcm9jZXNzX2ZpbGUgKGZpbGVfbmFtZSkKICAgICBjaGFyICpmaWxl
X25hbWU7CnsKICBGSUxFICpmaWxlOwogIHN0cnVjdCBzdGF0IHN0YXRidWY7CiAgdW5zaWduZWQg
aW50IGk7CgogIGlmIChzdGF0IChmaWxlX25hbWUsICYgc3RhdGJ1ZikgPCAwKQogICAgewogICAg
ICBlcnJvciAoKCJDYW5ub3Qgc3RhdCBpbnB1dCBmaWxlICVzLlxuIiksIGZpbGVfbmFtZSk7CiAg
ICAgIHJldHVybiAxOwogICAgfQoKICBmaWxlID0gZm9wZW4gKGZpbGVfbmFtZSwgInJiIik7CiAg
aWYgKGZpbGUgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIklucHV0IGZpbGUg
JXMgbm90IGZvdW5kLlxuIiksIGZpbGVfbmFtZSk7CiAgICAgIHJldHVybiAxOwogICAgfQoKICBp
ZiAoISBnZXRfZmlsZV9oZWFkZXIgKGZpbGUpKQogICAgewogICAgICBlcnJvciAoKCIlczogRmFp
bGVkIHRvIHJlYWQgZmlsZSBoZWFkZXJcbiIpLCBmaWxlX25hbWUpOwogICAgICBmY2xvc2UgKGZp
bGUpOwogICAgICByZXR1cm4gMTsKICAgIH0KCgogIGZvciAoaSA9IChzaXplb2YgKHZlcnNpb25f
aW5mbykgLyBzaXplb2YgKCh2ZXJzaW9uX2luZm8pWzBdKSk7IGktLTspCiAgICB2ZXJzaW9uX2lu
Zm9baV0gPSAwOwoKICBmb3IgKGkgPSAoc2l6ZW9mIChkeW5hbWljX2luZm8pIC8gc2l6ZW9mICgo
ZHluYW1pY19pbmZvKVswXSkpOyBpLS07KQogICAgZHluYW1pY19pbmZvW2ldID0gMDsKCgogIGlm
IChzaG93X25hbWUpCiAgICBwcmludGYgKCgiXG5GaWxlOiAlc1xuIiksIGZpbGVfbmFtZSk7Cgog
IGlmICghIHByb2Nlc3NfZmlsZV9oZWFkZXIgKCkpCiAgICB7CiAgICAgIGZjbG9zZSAoZmlsZSk7
CiAgICAgIHJldHVybiAxOwogICAgfQoKICBpZiAoISBwcm9jZXNzX3NlY3Rpb25faGVhZGVycyAo
ZmlsZSkpCiAgICB7CgoKICAgICAgZG9fdW53aW5kID0gZG9fdmVyc2lvbiA9IGRvX2R1bXAgPSBk
b19hcmNoID0gMDsKCiAgICAgIGlmICghIGRvX3VzaW5nX2R5bmFtaWMpCiAgICAgICAgZG9fc3lt
cyA9IGRvX3JlbG9jID0gMDsKICAgIH0KCiAgaWYgKHByb2Nlc3NfcHJvZ3JhbV9oZWFkZXJzIChm
aWxlKSkKICAgIHByb2Nlc3NfZHluYW1pY19zZWdtZW50IChmaWxlKTsKCiAgcHJvY2Vzc19yZWxv
Y3MgKGZpbGUpOwoKICBwcm9jZXNzX3Vud2luZCAoZmlsZSk7CgogIHByb2Nlc3Nfc3ltYm9sX3Rh
YmxlIChmaWxlKTsKCiAgcHJvY2Vzc19zeW1pbmZvIChmaWxlKTsKCiAgcHJvY2Vzc192ZXJzaW9u
X3NlY3Rpb25zIChmaWxlKTsKCiAgcHJvY2Vzc19zZWN0aW9uX2NvbnRlbnRzIChmaWxlKTsKCiAg
cHJvY2Vzc19jb3JlZmlsZV9jb250ZW50cyAoZmlsZSk7CgogIHByb2Nlc3NfZ251X2xpYmxpc3Qg
KGZpbGUpOwoKICBwcm9jZXNzX2FyY2hfc3BlY2lmaWMgKGZpbGUpOwoKICBmY2xvc2UgKGZpbGUp
OwoKICBpZiAoc2VjdGlvbl9oZWFkZXJzKQogICAgewogICAgICBmcmVlIChzZWN0aW9uX2hlYWRl
cnMpOwogICAgICBzZWN0aW9uX2hlYWRlcnMgPSAoKHZvaWQgKikwKTsKICAgIH0KCiAgaWYgKHN0
cmluZ190YWJsZSkKICAgIHsKICAgICAgZnJlZSAoc3RyaW5nX3RhYmxlKTsKICAgICAgc3RyaW5n
X3RhYmxlID0gKCh2b2lkICopMCk7CiAgICAgIHN0cmluZ190YWJsZV9sZW5ndGggPSAwOwogICAg
fQoKICBpZiAoZHluYW1pY19zdHJpbmdzKQogICAgewogICAgICBmcmVlIChkeW5hbWljX3N0cmlu
Z3MpOwogICAgICBkeW5hbWljX3N0cmluZ3MgPSAoKHZvaWQgKikwKTsKICAgIH0KCiAgaWYgKGR5
bmFtaWNfc3ltYm9scykKICAgIHsKICAgICAgZnJlZSAoZHluYW1pY19zeW1ib2xzKTsKICAgICAg
ZHluYW1pY19zeW1ib2xzID0gKCh2b2lkICopMCk7CiAgICAgIG51bV9keW5hbWljX3N5bXMgPSAw
OwogICAgfQoKICBpZiAoZHluYW1pY19zeW1pbmZvKQogICAgewogICAgICBmcmVlIChkeW5hbWlj
X3N5bWluZm8pOwogICAgICBkeW5hbWljX3N5bWluZm8gPSAoKHZvaWQgKikwKTsKICAgIH0KCiAg
cmV0dXJuIDA7Cn0KIyAxMDM1MyAicmVhZGVsZi5jIgppbnQgbWFpbiAoaW50LCBjaGFyICoqKTsK
CmludAptYWluIChhcmdjLCBhcmd2KQogICAgIGludCBhcmdjOwogICAgIGNoYXIgKiphcmd2Owp7
CiAgaW50IGVycjsKICBjaGFyICpjbWRsaW5lX2R1bXBfc2VjdHMgPSAoKHZvaWQgKikwKTsKICB1
bnNpZ25lZCBudW1fY21kbGluZV9kdW1wX3NlY3RzID0gMDsKCgogIHNldGxvY2FsZSAoX19MQ19N
RVNTQUdFUywgIiIpOwoKCiAgc2V0bG9jYWxlIChfX0xDX0NUWVBFLCAiIik7CgogIHdoaWxlICgw
KTsKICB3aGlsZSAoMCk7CgogIHBhcnNlX2FyZ3MgKGFyZ2MsIGFyZ3YpOwoKICBpZiAob3B0aW5k
IDwgKGFyZ2MgLSAxKSkKICAgIHNob3dfbmFtZSA9IDE7CgoKCiAgaWYgKG9wdGluZCArIDEgPCBh
cmdjICYmIGR1bXBfc2VjdHMgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGNtZGxpbmVfZHVt
cF9zZWN0cyA9IG1hbGxvYyAobnVtX2R1bXBfc2VjdHMpOwogICAgICBpZiAoY21kbGluZV9kdW1w
X3NlY3RzID09ICgodm9pZCAqKTApKQogICAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnkgYWxs
b2NhdGluZyBkdW1wIHJlcXVlc3QgdGFibGUuIikpOwogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgICAgbWVtY3B5IChjbWRsaW5lX2R1bXBfc2VjdHMsIGR1bXBfc2VjdHMsIG51bV9kdW1wX3Nl
Y3RzKTsKICAgICAgICAgIG51bV9jbWRsaW5lX2R1bXBfc2VjdHMgPSBudW1fZHVtcF9zZWN0czsK
ICAgICAgICB9CiAgICB9CgogIGVyciA9IDA7CiAgd2hpbGUgKG9wdGluZCA8IGFyZ2MpCiAgICB7
CiAgICAgIGVyciB8PSBwcm9jZXNzX2ZpbGUgKGFyZ3Zbb3B0aW5kKytdKTsKCgogICAgICBpZiAo
b3B0aW5kIDwgYXJnYyAmJiBkdW1wX3NlY3RzICE9ICgodm9pZCAqKTApKQogICAgICAgIHsKICAg
ICAgICAgIG51bV9kdW1wX3NlY3RzID0gbnVtX2NtZGxpbmVfZHVtcF9zZWN0czsKICAgICAgICAg
IGlmIChudW1fY21kbGluZV9kdW1wX3NlY3RzID4gMCkKICAgICAgICAgICAgbWVtY3B5IChkdW1w
X3NlY3RzLCBjbWRsaW5lX2R1bXBfc2VjdHMsIG51bV9jbWRsaW5lX2R1bXBfc2VjdHMpOwogICAg
ICAgIH0KICAgIH0KCiAgaWYgKGR1bXBfc2VjdHMgIT0gKCh2b2lkICopMCkpCiAgICBmcmVlIChk
dW1wX3NlY3RzKTsKICBpZiAoY21kbGluZV9kdW1wX3NlY3RzICE9ICgodm9pZCAqKTApKQogICAg
ZnJlZSAoY21kbGluZV9kdW1wX3NlY3RzKTsKCiAgcmV0dXJuIGVycjsKfQo=


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

end of thread, other threads:[~2003-03-22 18:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-22 18:47 optimization/9900: map coloring failure bangerth
  -- strict thread matches above, loose matches on Subject: below --
2003-03-02  3:46 eezyy

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