public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/4723: g++
@ 2002-03-22 20:01 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2002-03-22 20:01 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, hpenner, uweigand, michael.frommeyer, nobody

Synopsis: g++

State-Changed-From-To: feedback->closed
State-Changed-By: rodrigc
State-Changed-When: Fri Mar 22 20:01:42 2002
State-Changed-Why:
    No feedback.

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


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

* Re: c++/4723: g++
@ 2002-02-24 12:06 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2002-02-24 12:06 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, hpenner, uweigand, michael.frommeyer, nobody

Synopsis: g++

State-Changed-From-To: open->feedback
State-Changed-By: rodrigc
State-Changed-When: Sun Feb 24 11:58:24 2002
State-Changed-Why:
    Can you reproduce this problem with gcc 3.0.4 under s390?

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


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

* c++/4723: g++
@ 2001-10-28 21:46 michael.frommeyer
  0 siblings, 0 replies; 3+ messages in thread
From: michael.frommeyer @ 2001-10-28 21:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4723
>Category:       c++
>Synopsis:       g++
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Oct 28 21:46:02 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     michael.frommeyer@rbg.de
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
s390-suse-linux
>Description:
Internal compiler error 305
>How-To-Repeat:

>Fix:

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

IyAxICIvaG9tZS94aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvbXFxdWV1ZS5jcHAiCgoKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRlLmhw
cCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lz
dHJlYW0uaHBwIiAxCgoKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAoKIAoKIyA0MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pc3RyZWFtLmhwcCIKCgogCgojIDEgIi91c3IvaW5jbHVkZS9nKysvaW9zdHJlYW0i
IDEgMwogCiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrL2lvc3RyZWFtLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCgojIDEgIi91c3IvaW5jbHVk
ZS9nKysvc3RyZWFtYnVmLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdt
YSBpbnRlcmZhY2UKCgogICAKCgoKZXh0ZXJuICJDIiB7CiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMSAzCiAKCgoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKIAoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoK
CgogCgojIDE2NiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoK
CgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoKIyA3MSAiL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAiL3Vzci9pbmNsdWRlL3N5
cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI1MCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2du
dS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjc4ICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy
IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3Vz
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYx
ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vz
ci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGxvbmcgdW5z
aWduZWQgaW50IHNpemVfdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiMgMjcxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgogCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ4ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQg
X19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVm
IHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoK
X19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5
cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90OwkJ
IAp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkg
CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90OwkJ
IAp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190OyAJCSAKdHlwZWRlZiBsb25nIGludCBfX29mZl90
OwkJIAp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90OwkJIAp0eXBlZGVmIGludCBfX3BpZF90OwkJ
CSAKdHlwZWRlZiBpbnQgX19zc2l6ZV90OwkJCSAKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsJ
CSAKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lk
X3Q7CQkJIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRf
dDsJCQkJIAoKIAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2Fk
ZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3Ymxr
X3Q7CQkgCgwKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgX19mZF9tYXNrOwoKIAoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICAg
CgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2sp
KSBdOwoKCgoKCiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgogCgogCnR5cGVkZWYgbG9uZyBpbnQg
X19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191
X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7Cgog
CnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Zp
bGNudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9m
Zl90IF9fb2ZmNjRfdDsKCiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJf
dDsKCgogCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVk
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0cy9zY2hl
ZC5oIiAzCgoKCgoKIApzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlv
cml0eTsKICB9OwoKCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMK
CgogCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7ICAgICAg
ICAgICAgIAogIGludCBfX3NwaW5sb2NrOyAgICAgICAgICAgICAgICAKfTsKCgogCnR5cGVkZWYg
c3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgogCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBz
dHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwog
IGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0
OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0
dHJfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19j
X2xvY2s7ICAKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsgICAgICAgICAKfSBwdGhyZWFk
X2NvbmRfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2Nv
bmRhdHRyX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKIAogCgp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsgICAgICAgICAgICAgICAgCiAgaW50
IF9fbV9jb3VudDsgICAgICAgICAgICAgICAgICAgCiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVy
OyAgICAgICAgCiAgaW50IF9fbV9raW5kOyAgICAgICAgICAgICAgICAgICAgCiAgc3RydWN0IF9w
dGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOyAgCn0gcHRocmVhZF9tdXRleF90OwoKCiAKdHlwZWRl
ZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCiAK
dHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRf
cndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7ICAKICBpbnQg
X19yd19yZWFkZXJzOyAgICAgICAgICAgICAgICAgICAgCiAgX3B0aHJlYWRfZGVzY3IgX19yd193
cml0ZXI7ICAgICAgICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOyAgICAK
ICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7ICAgCiAgaW50IF9fcndfa2luZDsg
ICAgICAgICAgICAgICAgICAgICAgIAogIGludCBfX3J3X3BzaGFyZWQ7ICAgICAgICAgICAgICAg
ICAgICAKfSBwdGhyZWFkX3J3bG9ja190OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xv
Y2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCiAKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CgoKIyAxNTAgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDIgMwoKCgoKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7CgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2Nj
LWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAxNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvdmEtczM5MC5o
IiAxIDMKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgX192YV9saXN0X3RhZyB7CiAgaW50IGdwcjsgICAg
ICAgICAgICAgICAgICAgICAgIAoKCiAgaW50IGZwcjsgICAgICAgICAgICAgICAgICAgICAgIAoK
CiAgY2hhciAqaW5jb21pbmdfYXJnc19hcmVhOyAgICAgIAoKICBjaGFyICpyZWdfc2F2ZV9hcmVh
OyAgICAgICAgICAgCgp9IF9fZ251Y192YV9saXN0WzFdLCpfX2dudWNfdmFfbGlzdHA7CgoKIAoK
IyAxNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3Zh
LXMzOTAuaCIgMwoKCiMgNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3Vz
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKIyAy
MTMgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFy
Zy5oIiAzCgoKCgojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgoKCgoKCgojIDY3ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDk4ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJTEU7Cgog
CgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19tYXJrZXIg
ewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwog
ICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCn07Cgpz
dHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCgoKICAgCiAgIAogIGNoYXIqIF9JT19y
ZWFkX3B0cjsJIAogIGNoYXIqIF9JT19yZWFkX2VuZDsJIAogIGNoYXIqIF9JT19yZWFkX2Jhc2U7
CSAKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9wdHI7CSAKICBj
aGFyKiBfSU9fd3JpdGVfZW5kOwkgCiAgY2hhciogX0lPX2J1Zl9iYXNlOwkgCiAgY2hhciogX0lP
X2J1Zl9lbmQ7CSAKICAgCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsgIAogIGNoYXIgKl9JT19iYWNr
dXBfYmFzZTsgICAKICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3RydWN0IF9JT19tYXJrZXIg
Kl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAg
aW50IF9ibGtzaXplOwogIF9fb2ZmX3QgICBfb2xkX29mZnNldDsgIAoKCiAgIAogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoKCgoKCgoKCiAgX19vZmY2
NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKCgoKc3RydWN0IF9J
T19GSUxFX3BsdXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwK
CQkJCSAgICAgICBzaXplX3QgX19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3Qg
X19pb193cml0ZV9mbiAgKHZvaWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJ
CQkgICAgICBzaXplX3QgX19uKSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAg
KHZvaWQgKiAgX19jb29raWUsIF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRl
ZiBpbnQgX19pb19jbG9zZV9mbiAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKCiAKdHlwZWRlZiBf
X2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2Zu
IGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vl
a19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9u
X3Q7CgogCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CQkgCiAgX19pb193
cml0ZV9mbiAqd3JpdGU7CQkgCiAgX19pb19zZWVrX2ZuICpzZWVrOwkJIAogIF9faW9fY2xvc2Vf
Zm4gKmNsb3NlOwkJIAp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nv
b2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgogCnN0cnVjdCBfSU9f
Y29va2llX2ZpbGUKewogIHN0cnVjdCBfSU9fRklMRSBfX2ZpbGU7CiAgY29uc3Qgdm9pZCAqX192
dGFibGU7CiAgdm9pZCAqX19jb29raWU7CiAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lv
X2Z1bmN0aW9uczsKfTsKCgoKCmV4dGVybiAiQyIgewoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cg
IChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUg
KikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkg
IHRocm93ICgpICA7CgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT19nZXRjICAoX0lPX0ZJ
TEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9JT19wdXRjICAoaW50IF9fYywgX0lP
X0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUg
Kl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgIChfSU9fRklMRSAqX19m
cCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgIChfSU9fRklMRSAq
X19mcCkgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9f
RklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlICAoX0lPX0ZJ
TEUgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAgKF9JT19GSUxF
ICopICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lP
X0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJICAgICBfX2du
dWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lP
X3ZmcHJpbnRmICAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qs
CgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkgIHRocm93ICgpICA7CmV4dGVybiBfX3NzaXplX3Qg
ICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90ICApICB0aHJvdyAoKSAgOwpl
eHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkg
IHRocm93ICgpICA7CgpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSAq
LCBfX29mZjY0X3QgICwgaW50LCBpbnQpICB0aHJvdyAoKSAgOwpleHRlcm4gX19vZmY2NF90ICAg
X0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50KSAgdGhyb3cgKCkgIDsK
CmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lPX0ZJTEUgKikgIHRocm93ICgp
ICA7CgoKfQoKCgojIDM2ICIvdXNyL2luY2x1ZGUvZysrL3N0cmVhbWJ1Zi5oIiAyIDMKCn0KIAoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRh
cmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgv
Mi45NS4yL2luY2x1ZGUvdmEtczM5MC5oIiAxIDMKIAoKIyAxOCAiL3Vzci9saWIvZ2NjLWxpYi9z
MzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvdmEtczM5MC5oIiAzCgoKIAoKCgogCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogIGxvbmcgICBiYWNrY2hhaW47CiAgbG9uZyAgIHNwYXJlOwogIGxv
bmcgICBfX2dwX3NhdmVbMTRdOyAgICAgICAgICAgICAgICAgCiAgbG9uZyBsb25nICAgIF9fZnBf
c2F2ZVs0XTsgICAgICAgICAgICAKfSBfX3ZhX3JlZ3NhdmVfdDsKCiAKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTU5ICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS92YS1zMzkwLmgi
IDMKCgoKIAoKCgoKCiMgNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3Vz
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
IAoKCgoKCgoKCgoKCgoKIyAxNzkgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIu
OTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNf
dmFfbGlzdCB2YV9saXN0OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDQwICIvdXNyL2luY2x1
ZGUvZysrL3N0cmVhbWJ1Zi5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAi
QysrIiB7CmNsYXNzIGlzdHJlYW07ICAKY2xhc3Mgb3N0cmVhbTsgY2xhc3Mgc3RyZWFtYnVmOwoK
IAoKCgoKdHlwZWRlZiBfX29mZjY0X3QgICBzdHJlYW1vZmY7CnR5cGVkZWYgX19vZmY2NF90ICAg
c3RyZWFtcG9zOwoKCgoKdHlwZWRlZiBfX3NzaXplX3QgICBzdHJlYW1zaXplOwoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIF9fZm10ZmxhZ3M7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX2lvc3RhdGU7
CgpzdHJ1Y3QgX2lvc19maWVsZHMKeyAgCiAgICBzdHJlYW1idWYgKl9zdHJidWY7CiAgICBvc3Ry
ZWFtKiBfdGllOwogICAgaW50IF93aWR0aDsKICAgIF9fZm10ZmxhZ3MgX2ZsYWdzOwogICAgd2No
YXJfdCAgIF9maWxsOwogICAgX19pb3N0YXRlIF9zdGF0ZTsKICAgIF9faW9zdGF0ZSBfZXhjZXB0
aW9uczsKICAgIGludCBfcHJlY2lzaW9uOwoKICAgIHZvaWQgKl9hcnJheXM7ICAKfTsKCgoKCgoK
CgoKCgoKCgoKIyAxMjQgIi91c3IvaW5jbHVkZS9nKysvc3RyZWFtYnVmLmgiIDMKCgpjbGFzcyBp
b3MgOiBwdWJsaWMgX2lvc19maWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAogIGlv
cyAoY29uc3QgaW9zJik7ICAKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10Zmxh
Z3M7CiAgICB0eXBlZGVmIGludCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7CiAg
ICB0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsKCWdv
b2RiaXQgPSAwICwKCWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAgfTsK
ICAgIGVudW0gb3Blbl9tb2RlIHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJYXBw
ID0gOCAsCgl0cnVuYyA9IDE2ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQgLAoJ
YmluID0gMTI4ICwgIAoJYmluYXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJlZywg
Y3VyLCBlbmR9OwogICAgdHlwZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAgICBl
bnVtIHsgc2tpcHdzPSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFsPSAw
MTAgLAoJICAgZGVjPSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFzZT0g
MDIwMCAsIHNob3dwb2ludD0gMDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0g
MDIwMDAgLAoJICAgc2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVuaXRi
dWY9IDAyMDAwMCAsIHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJhc2Vm
aWVsZD1kZWMrb2N0K2hleCwKCWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRqdXN0
ZmllbGQgPSBsZWZ0K3JpZ2h0K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvaW5jbHVkZS9n
Kysvc3RyZWFtYnVmLmgiIDMKCgogICAgb3N0cmVhbSogdGllKCkgY29uc3QgeyByZXR1cm4gX3Rp
ZTsgfQogICAgb3N0cmVhbSogdGllKG9zdHJlYW0qIHZhbCkgeyBvc3RyZWFtKiBzYXZlPV90aWU7
IF90aWU9dmFsOyByZXR1cm4gc2F2ZTsgfQoKICAgICAKICAgIHdjaGFyX3QgICBmaWxsKCkgY29u
c3QgeyByZXR1cm4gX2ZpbGw7IH0KICAgIHdjaGFyX3QgICBmaWxsKHdjaGFyX3QgICBuZXdmKQoJ
e3djaGFyX3QgICBvbGRmID0gX2ZpbGw7IF9maWxsID0gbmV3ZjsgcmV0dXJuIG9sZGY7fQogICAg
Zm10ZmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBfZmxhZ3M7IH0KICAgIGZtdGZsYWdzIGZs
YWdzKGZtdGZsYWdzIG5ld192YWwpIHsKCWZtdGZsYWdzIG9sZF92YWwgPSBfZmxhZ3M7IF9mbGFn
cyA9IG5ld192YWw7IHJldHVybiBvbGRfdmFsOyB9CiAgICBpbnQgcHJlY2lzaW9uKCkgY29uc3Qg
eyByZXR1cm4gX3ByZWNpc2lvbjsgfQogICAgaW50IHByZWNpc2lvbihpbnQgbmV3cCkgewoJdW5z
aWduZWQgc2hvcnQgb2xkcCA9IF9wcmVjaXNpb247IF9wcmVjaXNpb24gPSAodW5zaWduZWQgc2hv
cnQpbmV3cDsKCXJldHVybiBvbGRwOyB9CiAgICBmbXRmbGFncyBzZXRmKGZtdGZsYWdzIHZhbCkg
ewoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyB8PSB2YWw7IHJldHVybiBvbGRi
aXRzOyB9CiAgICBmbXRmbGFncyBzZXRmKGZtdGZsYWdzIHZhbCwgZm10ZmxhZ3MgbWFzaykgewoJ
Zm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyA9IChfZmxhZ3MgJiB+bWFzaykgfCAo
dmFsICYgbWFzayk7IHJldHVybiBvbGRiaXRzOyB9CiAgICBmbXRmbGFncyB1bnNldGYoZm10Zmxh
Z3MgbWFzaykgewoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsKCV9mbGFncyAmPSB+bWFzazsg
cmV0dXJuIG9sZGJpdHM7IH0KICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIF93aWR0aDsg
fQogICAgaW50IHdpZHRoKGludCB2YWwpIHsgaW50IHNhdmUgPSBfd2lkdGg7IF93aWR0aCA9IHZh
bDsgcmV0dXJuIHNhdmU7IH0KCgoKCiAgICB2b2lkIF90aHJvd19mYWlsdXJlKCkgY29uc3QgeyB9
CgogICAgdm9pZCBjbGVhcihpb3N0YXRlIHN0YXRlID0gMCkgewoJX3N0YXRlID0gX3N0cmJ1ZiA/
IHN0YXRlIDogc3RhdGV8YmFkYml0OwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3df
ZmFpbHVyZSgpOyB9CiAgICB2b2lkIHNldChpb3N0YXRlIGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7
CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQg
c2V0c3RhdGUoaW9zdGF0ZSBmbGFnKSB7IF9zdGF0ZSB8PSBmbGFnOyAgCglpZiAoX3N0YXRlICYg
X2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIGludCBnb29kKCkgY29uc3QgeyBy
ZXR1cm4gX3N0YXRlID09IDA7IH0KICAgIGludCBlb2YoKSBjb25zdCB7IHJldHVybiBfc3RhdGUg
JiBpb3M6OmVvZmJpdDsgfQogICAgaW50IGZhaWwoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiAo
aW9zOjpiYWRiaXR8aW9zOjpmYWlsYml0KTsgfQogICAgaW50IGJhZCgpIGNvbnN0IHsgcmV0dXJu
IF9zdGF0ZSAmIGlvczo6YmFkYml0OyB9CiAgICBpb3N0YXRlIHJkc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBfc3RhdGU7IH0KICAgIG9wZXJhdG9yIHZvaWQqKCkgY29uc3QgeyByZXR1cm4gZmFpbCgp
ID8gKHZvaWQqKTAgOiAodm9pZCopKC0xKTsgfQogICAgaW50IG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuIGZhaWwoKTsgfQogICAgaW9zdGF0ZSBleGNlcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
X2V4Y2VwdGlvbnM7IH0KICAgIHZvaWQgZXhjZXB0aW9ucyhpb3N0YXRlIGVuYWJsZSkgewoJX2V4
Y2VwdGlvbnMgPSBlbmFibGU7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWls
dXJlKCk7IH0KCiAgICBzdHJlYW1idWYqIHJkYnVmKCkgY29uc3QgeyByZXR1cm4gX3N0cmJ1Zjsg
fQogICAgc3RyZWFtYnVmKiByZGJ1ZihzdHJlYW1idWYgKl9zKSB7CiAgICAgIHN0cmVhbWJ1ZiAq
X29sZCA9IF9zdHJidWY7IF9zdHJidWYgPSBfczsgY2xlYXIgKCk7IHJldHVybiBfb2xkOyB9Cgog
ICAgc3RhdGljIGludCBzeW5jX3dpdGhfc3RkaW8oaW50IG9uKTsKICAgIHN0YXRpYyB2b2lkIHN5
bmNfd2l0aF9zdGRpbygpIHsgc3luY193aXRoX3N0ZGlvKDEpOyB9CiAgICBzdGF0aWMgZm10Zmxh
Z3MgYml0YWxsb2MoKTsKICAgIHN0YXRpYyBpbnQgeGFsbG9jKCk7CiAgICB2b2lkKiYgcHdvcmQo
aW50KTsKICAgIHZvaWQqIHB3b3JkKGludCkgY29uc3Q7CiAgICBsb25nJiBpd29yZChpbnQpOwog
ICAgbG9uZyBpd29yZChpbnQpIGNvbnN0OwoKCgoKCgoKCgogICAgIAogICAgY2xhc3MgSW5pdCB7
CiAgICBwdWJsaWM6CiAgICAgIEluaXQgKCkgeyB9CiAgICB9OwoKICBwcm90ZWN0ZWQ6CiAgICBp
bmxpbmUgaW9zKHN0cmVhbWJ1Ziogc2IgPSAwLCBvc3RyZWFtKiB0aWVfdG8gPSAwKTsKICAgIGlu
bGluZSB2aXJ0dWFsIH5pb3MoKTsKICAgIGlubGluZSB2b2lkIGluaXQoc3RyZWFtYnVmKiBzYiwg
b3N0cmVhbSogdGllID0gMCk7Cn07CgoKCgp0eXBlZGVmIGlvczo6c2Vla19kaXIgX3NlZWtfZGly
OwoKCiAKIAogCiAKIAoKIAogCmNsYXNzIHN0cmVhbW1hcmtlciA6IHByaXZhdGUgX0lPX21hcmtl
ciB7CiAgICBmcmllbmQgY2xhc3Mgc3RyZWFtYnVmOwogICAgdm9pZCBzZXRfb2Zmc2V0KGludCBv
ZmZzZXQpIHsgX3BvcyA9IG9mZnNldDsgfQogIHB1YmxpYzoKICAgIHN0cmVhbW1hcmtlcihzdHJl
YW1idWYgKnNiKTsKICAgIH5zdHJlYW1tYXJrZXIoKTsKICAgIGludCBzYXZpbmcoKSB7IHJldHVy
biAgMTsgfQogICAgaW50IGRlbHRhKHN0cmVhbW1hcmtlciYpOwogICAgaW50IGRlbHRhKCk7Cn07
CgpzdHJ1Y3Qgc3RyZWFtYnVmIDogcHVibGljIF9JT19GSUxFIHsgIAogICAgZnJpZW5kIGNsYXNz
IGlvczsKICAgIGZyaWVuZCBjbGFzcyBpc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIG9zdHJlYW07
CiAgICBmcmllbmQgY2xhc3Mgc3RyZWFtbWFya2VyOwogICAgY29uc3Qgdm9pZCAqJl92dGFibGUo
KSB7IHJldHVybiAqKGNvbnN0IHZvaWQqKikoKF9JT19GSUxFKil0aGlzICsgMSk7IH0KICBwcm90
ZWN0ZWQ6CiAgICBzdGF0aWMgc3RyZWFtYnVmKiBfbGlzdF9hbGw7ICAKICAgIF9JT19GSUxFKiYg
eGNoYWluKCkgeyByZXR1cm4gX2NoYWluOyB9CiAgICB2b2lkIF91bl9saW5rKCk7CiAgICB2b2lk
IF9saW5rX2luKCk7CiAgICBjaGFyKiBncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4gX2ZsYWdz
ICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9wdHI7IH0KICAgIGNoYXIqIHBw
dHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfcHRyOyB9CiAgICBjaGFyKiBlZ3B0cigpIGNv
bnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9lbmQgOiBfSU9f
cmVhZF9lbmQ7IH0KICAgIGNoYXIqIGVwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX2Vu
ZDsgfQogICAgY2hhciogcGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfYmFzZTsgfQog
ICAgY2hhciogZWJhY2soKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8g
X0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7fQogICAgY2hhciogYmFzZSgpIGNvbnN0IHsg
cmV0dXJuIF9JT19idWZfYmFzZTsgfQogICAgY2hhciogZWJ1ZigpIGNvbnN0IHsgcmV0dXJuIF9J
T19idWZfZW5kOyB9CiAgICBpbnQgYmxlbigpIGNvbnN0IHsgcmV0dXJuIF9JT19idWZfZW5kIC0g
X0lPX2J1Zl9iYXNlOyB9CiAgICB2b2lkIHhwdXRfY2hhcihjaGFyIGMpIHsgKl9JT193cml0ZV9w
dHIrKyA9IGM7IH0KICAgIGludCB4ZmxhZ3MoKSB7IHJldHVybiBfZmxhZ3MgOyB9CiAgICBpbnQg
eGZsYWdzKGludCBmKSB7aW50IGZsID0gX2ZsYWdzIDsgX2ZsYWdzICA9IGY7IHJldHVybiBmbDt9
CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZikgeyBfZmxhZ3MgIHw9IGY7IH0KICAgIHZvaWQgeHNl
dGZsYWdzKGludCBmLCBpbnQgbWFzaykKICAgICAgeyBfZmxhZ3MgID0gKF9mbGFncyAgJiB+bWFz
aykgfCAoZiAmIG1hc2spOyB9CiAgICB2b2lkIGdidW1wKGludCBuKQogICAgICB7IF9mbGFncyAg
JiAweDEwMCAgPyAoX0lPX3NhdmVfYmFzZSs9bik6KF9JT19yZWFkX3B0cis9bik7fQogICAgdm9p
ZCBwYnVtcChpbnQgbikgeyBfSU9fd3JpdGVfcHRyICs9IG47IH0KICAgIHZvaWQgc2V0YihjaGFy
KiBiLCBjaGFyKiBlYiwgaW50IGE9MCk7CiAgICB2b2lkIHNldHAoY2hhciogcCwgY2hhciogZXAp
CiAgICAgIHsgX0lPX3dyaXRlX2Jhc2U9X0lPX3dyaXRlX3B0cj1wOyBfSU9fd3JpdGVfZW5kPWVw
OyB9CiAgICB2b2lkIHNldGcoY2hhciogZWIsIGNoYXIqIGcsIGNoYXIgKmVnKSB7CiAgICAgIGlm
IChfZmxhZ3MgICYgMHgxMDAgKSBfSU9fZnJlZV9iYWNrdXBfYXJlYSh0aGlzKTsgCiAgICAgIF9J
T19yZWFkX2Jhc2UgPSBlYjsgX0lPX3JlYWRfcHRyID0gZzsgX0lPX3JlYWRfZW5kID0gZWc7IH0K
ICAgIGNoYXIgKnNob3J0YnVmKCkgeyByZXR1cm4gX3Nob3J0YnVmOyB9CgogICAgaW50IGluX2Jh
Y2t1cCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MTAwIDsgfQogICAgIAogICAgY2hhciAqR2Jhc2Uo
KSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlOyB9
CiAgICAgCiAgICBjaGFyICplR3B0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3NhdmVf
ZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICAgCiAgICBjaGFyICpCYmFzZSgpIHsgcmV0dXJuIGlu
X2JhY2t1cCgpID8gX0lPX3JlYWRfYmFzZSA6IF9JT19zYXZlX2Jhc2U7IH0KICAgIGNoYXIgKkJw
dHIoKSB7IHJldHVybiBfSU9fYmFja3VwX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVCcHRyKCkg
eyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9lbmQgOiBfSU9fc2F2ZV9lbmQ7IH0KICAg
IGNoYXIgKk5iYXNlKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAqZU5wdHIo
KSB7IHJldHVybiBfSU9fc2F2ZV9lbmQ7IH0KICAgIGludCBoYXZlX2JhY2t1cCgpIHsgcmV0dXJu
IF9JT19zYXZlX2Jhc2UgIT0gX19udWxsIDsgfQogICAgaW50IGhhdmVfbWFya2VycygpIHsgcmV0
dXJuIF9tYXJrZXJzICE9IF9fbnVsbCA7IH0KICAgIHZvaWQgZnJlZV9iYWNrdXBfYXJlYSgpOwog
ICAgdm9pZCB1bnNhdmVfbWFya2VycygpOyAgCiAgICBpbnQgcHV0X21vZGUoKSB7IHJldHVybiBf
ZmxhZ3MgJiAweDgwMCA7IH0KICAgIGludCBzd2l0Y2hfdG9fZ2V0X21vZGUoKTsKICAgIAogICAg
c3RyZWFtYnVmKGludCBmbGFncz0wKTsKICBwdWJsaWM6CiAgICBzdGF0aWMgaW50IGZsdXNoX2Fs
bCgpOwogICAgc3RhdGljIHZvaWQgZmx1c2hfYWxsX2xpbmVidWZmZXJlZCgpOyAgCiAgICB2aXJ0
dWFsIH5zdHJlYW1idWYoKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0xKSAp
OyAgCiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3coKTsgIAogICAgdmlydHVhbCBpbnQgdWZsb3co
KTsgIAogICAgdmlydHVhbCBpbnQgcGJhY2tmYWlsKGludCBjKTsKIAogICAgdmlydHVhbCBzdHJl
YW1zaXplIHhzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBz
dHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBzdHJl
YW1wb3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6
Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrcG9zKHN0cmVhbXBvcyBwb3MsIGludCBt
b2RlID0gaW9zOjppbnxpb3M6Om91dCk7CgogICAgc3RyZWFtcG9zIHB1YnNlZWtvZmYoc3RyZWFt
b2ZmIG8sIF9zZWVrX2RpciBkLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJl
dHVybiBfSU9fc2Vla29mZiAodGhpcywgbywgZCwgbW9kZSk7IH0KICAgIHN0cmVhbXBvcyBwdWJz
ZWVrcG9zKHN0cmVhbXBvcyBwb3MsIGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCkKICAgICAg
eyByZXR1cm4gX0lPX3NlZWtwb3MgKHRoaXMsIHBvcywgbW9kZSk7IH0KICAgIHN0cmVhbXBvcyBz
c2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91dCk7
CiAgICBzdHJlYW1wb3Mgc3NlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6Omlu
fGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtYnVmKiBzZXRidWYoY2hhciogcCwgaW50IGxl
bik7CiAgICB2aXJ0dWFsIGludCBzeW5jKCk7CiAgICB2aXJ0dWFsIGludCBkb2FsbG9jYXRlKCk7
CgogICAgaW50IHNlZWttYXJrKHN0cmVhbW1hcmtlciYgbWFyaywgaW50IGRlbHRhID0gMCk7CiAg
ICBpbnQgc3B1dGJhY2tjKGNoYXIgYyk7CiAgICBpbnQgc3VuZ2V0YygpOwogICAgaW50IHVuYnVm
ZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAyICA/IDEgOiAwOyB9CiAgICBpbnQgbGluZWJ1ZmZl
cmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgyMDAgID8gMSA6IDA7IH0KICAgIHZvaWQgdW5idWZm
ZXJlZChpbnQgaSkKCXsgaWYgKGkpIF9mbGFncyB8PSAyIDsgZWxzZSBfZmxhZ3MgJj0gfjIgOyB9
CiAgICB2b2lkIGxpbmVidWZmZXJlZChpbnQgaSkKCXsgaWYgKGkpIF9mbGFncyB8PSAweDIwMCA7
IGVsc2UgX2ZsYWdzICY9IH4weDIwMCA7IH0KICAgIGludCBhbGxvY2F0ZSgpIHsgIAoJaWYgKGJh
c2UoKSB8fCB1bmJ1ZmZlcmVkKCkpIHJldHVybiAwOwoJZWxzZSByZXR1cm4gZG9hbGxvY2F0ZSgp
OyB9CiAgICAgCiAgICB2b2lkIGFsbG9jYnVmKCkgeyBpZiAoYmFzZSgpID09IF9fbnVsbCApIGRv
YWxsb2NidWYoKTsgfQogICAgdm9pZCBkb2FsbG9jYnVmKCk7CiAgICBpbnQgaW5fYXZhaWwoKSB7
IHJldHVybiBfSU9fcmVhZF9lbmQgLSBfSU9fcmVhZF9wdHI7IH0KICAgIGludCBvdXRfd2FpdGlu
ZygpIHsgcmV0dXJuIF9JT193cml0ZV9wdHIgLSBfSU9fd3JpdGVfYmFzZTsgfQogICAgc3RyZWFt
c2l6ZSBzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIHhzcHV0bihz
LCBuKTsgfQogICAgc3RyZWFtc2l6ZSBwYWRuKGNoYXIgcGFkLCBzdHJlYW1zaXplIG4pIHsgcmV0
dXJuIF9JT19wYWRuKHRoaXMsIHBhZCwgbik7IH0KICAgIHN0cmVhbXNpemUgc2dldG4oY2hhciog
cywgc3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fc2dldG4odGhpcywgcywgbik7IH0KICAgIGlu
dCBpZ25vcmUoaW50KTsKICAgIGludCBnZXRfY29sdW1uKCk7CiAgICBpbnQgc2V0X2NvbHVtbihp
bnQpOwogICAgbG9uZyBzZ2V0bGluZShjaGFyKiBidWYsIHNpemVfdCAgIG4sIGNoYXIgZGVsaW0s
IGludCBwdXRiYWNrX2RlbGltKTsKICAgIGludCBzcHV0YyhpbnQgYykgeyByZXR1cm4gX0lPX3B1
dGMoYywgdGhpcyk7IH0KICAgIGludCBzYnVtcGMoKSB7IHJldHVybiBfSU9fZ2V0Yyh0aGlzKTsg
fQogICAgaW50IHNnZXRjKCkgeyByZXR1cm4gKCggIHRoaXMgICktPl9JT19yZWFkX3B0ciA+PSAo
ICB0aGlzICApLT5fSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3cgKCAgdGhpcyAgKSA9PSAoLTEp
ICA/ICgtMSkgIDogKih1bnNpZ25lZCBjaGFyICopICggIHRoaXMgICktPl9JT19yZWFkX3B0cikg
IDsgfQogICAgaW50IHNuZXh0YygpIHsKCWlmIChfSU9fcmVhZF9wdHIgPj0gX0lPX3JlYWRfZW5k
ICYmIF9fdW5kZXJmbG93KHRoaXMpID09ICgtMSkgKQoJICByZXR1cm4gKC0xKSA7CgllbHNlIHJl
dHVybiBfSU9fcmVhZF9wdHIrKywgc2dldGMoKTsgfQogICAgdm9pZCBzdG9zc2MoKSB7IGlmIChf
SU9fcmVhZF9wdHIgPCBfSU9fcmVhZF9lbmQpIF9JT19yZWFkX3B0cisrOyB9CiAgICBpbnQgdnNj
YW4oY2hhciBjb25zdCAqZm10MCwgX19nbnVjX3ZhX2xpc3QgIGFwLCBpb3MqIHN0cmVhbSA9IF9f
bnVsbCApOwogICAgaW50IHNjYW4oY2hhciBjb25zdCAqZm10MCAuLi4pOwogICAgaW50IHZmb3Jt
KGNoYXIgY29uc3QgKmZtdDAsIF9fZ251Y192YV9saXN0ICBhcCk7CiAgICBpbnQgZm9ybShjaGFy
IGNvbnN0ICpmbXQwIC4uLik7CgoKCgogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFkKGNo
YXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3Jp
dGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3Nl
ZWsoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgdmlydHVhbCBpbnQgc3lzX2Nsb3NlKCk7CiAg
ICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAKCiAgICB2aXJ0dWFsIGludCBzaG93bWFu
eWMoKTsKICAgIHZpcnR1YWwgdm9pZCBpbWJ1ZSh2b2lkICopOwoKfTsKCiAKIAoKY2xhc3MgZmls
ZWJ1ZiA6IHB1YmxpYyBzdHJlYW1idWYgewogIHByb3RlY3RlZDoKICAgIHZvaWQgaW5pdCgpOwog
IHB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBpbnQgb3BlbnByb3Q7ICAKICAgIGZpbGVidWYoKTsK
ICAgIGZpbGVidWYoaW50IGZkKTsKICAgIGZpbGVidWYoaW50IGZkLCBjaGFyKiBwLCBpbnQgbGVu
KTsKCgoKICAgIH5maWxlYnVmKCk7CiAgICBmaWxlYnVmKiBhdHRhY2goaW50IGZkKTsKICAgIGZp
bGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpOwogICAg
ZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW9zOjpvcGVubW9kZSBtb2RlLCBp
bnQgcHJvdCA9IDA2NjQpOwogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7CiAgICB2aXJ0dWFs
IGludCBvdmVyZmxvdyhpbnQgYyA9ICgtMSkgKTsKICAgIGludCBpc19vcGVuKCkgY29uc3QgeyBy
ZXR1cm4gX2ZpbGVubyA+PSAwOyB9CiAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBpc19vcGVu
KCkgPyBfZmlsZW5vIDogKC0xKSA7IH0KICAgIGZpbGVidWYqIGNsb3NlKCk7CiAgICB2aXJ0dWFs
IGludCBkb2FsbG9jYXRlKCk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9m
ZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3Ry
ZWFtYnVmKiBzZXRidWYoY2hhciogcCwgaW50IGxlbik7CiAgICBzdHJlYW1zaXplIHhzcHV0bihj
b25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciog
cywgc3RyZWFtc2l6ZSBuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICBwcm90ZWN0ZWQ6ICAK
IAogICAgaW50IGlzX3JlYWRpbmcoKSB7IHJldHVybiBlYmFjaygpICE9IGVncHRyKCk7IH0KICAg
IGNoYXIqIGN1cl9wdHIoKSB7IHJldHVybiBpc19yZWFkaW5nKCkgPyAgZ3B0cigpIDogcHB0cigp
OyB9CiAgICAgCiAgICBjaGFyKiBmaWxlX3B0cigpIHsgcmV0dXJuIGVHcHRyKCk7IH0KICAgICAK
ICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6
ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7
CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXpl
KTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAogICAgdmlydHVhbCBpbnQgc3lz
X2Nsb3NlKCk7CgoKCgp9OwoKaW5saW5lIHZvaWQgaW9zOjppbml0KHN0cmVhbWJ1Ziogc2IsIG9z
dHJlYW0qIHRpZV90bykgewoJCV9zdGF0ZSA9IHNiID8gaW9zOjpnb29kYml0IDogaW9zOjpiYWRi
aXQ7IF9leGNlcHRpb25zPTA7CgkJX3N0cmJ1Zj1zYjsgX3RpZSA9IHRpZV90bzsgX3dpZHRoPTA7
IF9maWxsPScgJzsKCgkJX2ZsYWdzPWlvczo6c2tpcHdzfGlvczo6ZGVjOwoKCgoJCV9wcmVjaXNp
b249NjsgX2FycmF5cyA9IDA7IH0KCmlubGluZSBpb3M6OmlvcyhzdHJlYW1idWYqIHNiLCBvc3Ry
ZWFtKiB0aWVfdG8pIHsgaW5pdChzYiwgdGllX3RvKTsgfQoKaW5saW5lIGlvczo6fmlvcygpIHsK
CgoKICAgICAKICAgICAKICAgIG9wZXJhdG9yIGRlbGV0ZVtdIChfYXJyYXlzKTsKfQp9ICAKCiMg
MzEgIi91c3IvaW5jbHVkZS9nKysvaW9zdHJlYW0uaCIgMiAzCgoKZXh0ZXJuICJDKysiIHsKY2xh
c3MgaXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKdHlwZWRlZiBpb3MmICgqX19tYW5pcCkoaW9zJik7
CnR5cGVkZWYgaXN0cmVhbSYgKCpfX2ltYW5pcCkoaXN0cmVhbSYpOwp0eXBlZGVmIG9zdHJlYW0m
ICgqX19vbWFuaXApKG9zdHJlYW0mKTsKCmV4dGVybiBpc3RyZWFtJiB3cyhpc3RyZWFtJiBpbnMp
OwpleHRlcm4gb3N0cmVhbSYgZmx1c2gob3N0cmVhbSYgb3V0cyk7CmV4dGVybiBvc3RyZWFtJiBl
bmRsKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kcyhvc3RyZWFtJiBvdXRzKTsK
CmNsYXNzIG9zdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAgIAogICAgdm9pZCBkb19v
c2Z4KCk7CiAgcHVibGljOgogICAgb3N0cmVhbSgpIHsgfQogICAgb3N0cmVhbShzdHJlYW1idWYq
IHNiLCBvc3RyZWFtKiB0aWVkPSBfX251bGwgKTsKICAgIGludCBvcGZ4KCkgewoJaWYgKCFnb29k
KCkpIHJldHVybiAwOwoJZWxzZSB7IGlmIChfdGllKSBfdGllLT5mbHVzaCgpOyAgOyByZXR1cm4g
MTt9IH0KICAgIHZvaWQgb3NmeCgpIHsgIDsKCQkgIGlmIChmbGFncygpICYgKGlvczo6dW5pdGJ1
Znxpb3M6OnN0ZGlvKSkKCQkgICAgICBkb19vc2Z4KCk7IH0KICAgIG9zdHJlYW0mIGZsdXNoKCk7
CiAgICBvc3RyZWFtJiBwdXQoY2hhciBjKSB7IF9zdHJidWYtPnNwdXRjKGMpOyByZXR1cm4gKnRo
aXM7IH0KCgoKCgogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgY2hhciAqcywgc3RyZWFtc2l6ZSBu
KTsKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIHN0cmVhbXNpemUg
bikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAgIG9zdHJlYW0m
IHdyaXRlKGNvbnN0IHNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJu
IHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCB2b2lk
ICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBu
KTt9CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1wb3MpOwogICAgb3N0cmVhbSYgc2Vla3Aoc3Ry
ZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFtcG9zIHRlbGxwKCk7CiAgICBvc3RyZWFtJiBm
b3JtKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwogICAgb3N0cmVhbSYgdmZvcm0oY29uc3QgY2hh
ciAqZm9ybWF0LCBfX2dudWNfdmFfbGlzdCAgYXJncyk7CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChjaGFyIGMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBjaGFyIGMpIHsgcmV0
dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChzaWduZWQg
Y2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJh
dG9yPDwoY29uc3QgY2hhciAqcyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHVuc2ln
bmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRoaXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHNpZ25lZCBjaGFyICpzKQoJeyByZXR1cm4gKCp0aGlz
KSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB2b2lk
ICpwKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0
b3I8PCh1bnNpZ25lZCBpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbik7CiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbik7CgogICAgX19leHRlbnNpb25f
XyBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbG9uZyBuKTsKICAgIF9fZXh0ZW5zaW9uX18gb3N0
cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGxvbmcgbik7CgogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKGludCluKTt9CiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8PCgodW5zaWdu
ZWQgaW50KW4pO30KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGJvb2wgYikgeyByZXR1cm4gb3Bl
cmF0b3I8PCgoaW50KWIpOyB9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChkb3VibGUgbik7CiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KGZsb2F0IG4pIHsgcmV0dXJuIG9wZXJhdG9yPDwoKGRvdWJs
ZSluKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBkb3VibGUgbik7CgoKCiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KF9fb21hbmlwIGZ1bmMpIHsgcmV0dXJuICgqZnVuYykoKnRoaXMp
OyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMp
OyByZXR1cm4gKnRoaXM7fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChzdHJlYW1idWYqKTsKCgoK
fTsKCmNsYXNzIGlzdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAgIApwcm90ZWN0ZWQ6
CiAgICBzaXplX3QgICBfZ2NvdW50OwoKICAgIGludCBfc2tpcF93cygpOwogIHB1YmxpYzoKICAg
IGlzdHJlYW0oKTogX2djb3VudCAoMCkgeyB9CiAgICBpc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9z
dHJlYW0qdGllZD0gX19udWxsICk7CiAgICBpc3RyZWFtJiBnZXQoY2hhciogcHRyLCBpbnQgbGVu
LCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3RyZWFtJiBnZXQodW5zaWduZWQgY2hhciogcHRy
LCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldCgoY2hhciopcHRyLCBs
ZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0KGNoYXImIGMpOwogICAgaXN0cmVhbSYgZ2V0
KHVuc2lnbmVkIGNoYXImIGMpIHsgcmV0dXJuIGdldCgoY2hhciYpYyk7IH0KICAgIGlzdHJlYW0m
IGdldGxpbmUoY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3Ry
ZWFtJiBnZXRsaW5lKHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdc
bicpCgl7IHJldHVybiBnZXRsaW5lKChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3Ry
ZWFtJiBnZXQoc2lnbmVkIGNoYXImIGMpICB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBp
c3RyZWFtJiBnZXQoc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicp
Cgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdl
dGxpbmUoc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJl
dHVybiBnZXRsaW5lKChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiByZWFk
KGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKTsKICAgIGlzdHJlYW0mIHJlYWQodW5zaWduZWQgY2hh
ciAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7
IH0KICAgIGlzdHJlYW0mIHJlYWQoc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBuKQogICAg
ICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFkKHZvaWQg
KnB0ciwgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9
CiAgICBpc3RyZWFtJiBnZXQoc3RyZWFtYnVmJiBzYiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAg
aXN0cmVhbSYgZ2V0cyhjaGFyICoqcywgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaW50IGlwZngo
aW50IG5lZWQgPSAwKSB7CglpZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJu
IDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3RpZSAmJiAobmVlZCA9PSAwIHx8IHJkYnVmKCkt
PmluX2F2YWlsKCkgPCBuZWVkKSkgX3RpZS0+Zmx1c2goKTsKCSAgaWYgKCFuZWVkICYmIChmbGFn
cygpICYgaW9zOjpza2lwd3MpKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsK
CX0KICAgIH0KICAgIGludCBpcGZ4MCgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFp
bGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUpIF90aWUtPmZsdXNo
KCk7CgkgIGlmIChmbGFncygpICYgaW9zOjpza2lwd3MpIHJldHVybiBfc2tpcF93cygpOwoJICBl
bHNlIHJldHVybiAxOwoJfQogICAgfQogICAgaW50IGlwZngxKCkgeyAgCglpZiAoIWdvb2QoKSkg
eyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3Rp
ZSAmJiByZGJ1ZigpLT5pbl9hdmFpbCgpID09IDApIF90aWUtPmZsdXNoKCk7CgkgIHJldHVybiAx
OwoJfQogICAgfQogICAgdm9pZCBpc2Z4KCkgeyAgOyB9CiAgICBpbnQgZ2V0KCkgeyBpZiAoIWlw
ZngxKCkpIHJldHVybiAoLTEpIDsKCQllbHNlIHsgaW50IGNoID0gX3N0cmJ1Zi0+c2J1bXBjKCk7
CgkJICAgICAgIGlmIChjaCA9PSAoLTEpICkgc2V0KGlvczo6ZW9mYml0KTsKCQkgICAgICAgaXNm
eCgpOwoJCSAgICAgICByZXR1cm4gY2g7CgkJICAgICB9IH0KICAgIGludCBwZWVrKCk7CiAgICBz
aXplX3QgICBnY291bnQoKSB7IHJldHVybiBfZ2NvdW50OyB9CiAgICBpc3RyZWFtJiBpZ25vcmUo
aW50IG49MSwgaW50IGRlbGltID0gKC0xKSApOwogICAgaW50IHN5bmMgKCk7CiAgICBpc3RyZWFt
JiBzZWVrZyhzdHJlYW1wb3MpOwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtb2ZmLCBfc2Vla19k
aXIpOwogICAgc3RyZWFtcG9zIHRlbGxnKCk7CiAgICBpc3RyZWFtJiBwdXRiYWNrKGNoYXIgY2gp
IHsKCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+c3B1dGJhY2tjKGNoKSA9PSAoLTEpICkgY2xlYXIo
aW9zOjpiYWRiaXQpOwoJcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIHVuZ2V0KCkgewoJaWYg
KGdvb2QoKSAmJiBfc3RyYnVmLT5zdW5nZXRjKCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0
KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiBzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCAu
Li4pOwogICAgaXN0cmVhbSYgdnNjYW4oY29uc3QgY2hhciAqZm9ybWF0LCBfX2dudWNfdmFfbGlz
dCAgYXJncyk7CgoKCgoKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXIqKTsKICAgIGlzdHJl
YW0mIG9wZXJhdG9yPj4odW5zaWduZWQgY2hhciogcCkgeyByZXR1cm4gb3BlcmF0b3I+PigoY2hh
ciopcCk7IH0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXIqcCkgeyByZXR1cm4g
b3BlcmF0b3I+PigoY2hhciopcCk7IH0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciYgYyk7
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0
b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaWduZWQgY2hhciYgYykg
e3JldHVybiBvcGVyYXRvcj4+KChjaGFyJiljKTt9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGlu
dCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihsb25nJik7CgogICAgX19leHRlbnNpb25fXyBp
c3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcgbG9uZyYpOwogICAgX19leHRlbnNpb25fXyBpc3RyZWFt
JiBvcGVyYXRvcj4+KHVuc2lnbmVkIGxvbmcgbG9uZyYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9y
Pj4oc2hvcnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgaW50Jik7CiAgICBp
c3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGxvbmcmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9y
Pj4odW5zaWduZWQgc2hvcnQmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGJvb2wmKTsKCiAg
ICBpc3RyZWFtJiBvcGVyYXRvcj4+KGZsb2F0Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGRv
dWJsZSYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihsb25nIGRvdWJsZSYpOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+PiggX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhp
czt9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KF9faW1hbmlwIGZ1bmMpIHsgcmV0dXJuICgqZnVu
YykoKnRoaXMpOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHN0cmVhbWJ1ZiopOwp9OwoKY2xh
c3MgaW9zdHJlYW0gOiBwdWJsaWMgaXN0cmVhbSwgcHVibGljIG9zdHJlYW0KewogIHB1YmxpYzoK
ICAgIGlvc3RyZWFtKCkgeyB9CiAgICBpb3N0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRp
ZWQ9IF9fbnVsbCApOwp9OwoKY2xhc3MgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiA6IHB1YmxpYyBp
c3RyZWFtIHsKcHVibGljOgogIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShpc3Ry
ZWFtJik7CiAgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19pc3RyZWFtX3dp
dGhhc3NpZ24mIHJocykKICAgIHsgcmV0dXJuIG9wZXJhdG9yPSAoc3RhdGljX2Nhc3Q8aXN0cmVh
bSY+IChyaHMpKTsgfQp9OwoKY2xhc3MgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiA6IHB1YmxpYyBv
c3RyZWFtIHsKcHVibGljOgogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShvc3Ry
ZWFtJik7CiAgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19vc3RyZWFtX3dp
dGhhc3NpZ24mIHJocykKICAgIHsgcmV0dXJuIG9wZXJhdG9yPSAoc3RhdGljX2Nhc3Q8b3N0cmVh
bSY+IChyaHMpKTsgfQp9OwoKZXh0ZXJuIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gY2luOwogCmV4
dGVybiBfSU9fb3N0cmVhbV93aXRoYXNzaWduIGNvdXQsIGNlcnI7CgpleHRlcm4gX0lPX29zdHJl
YW1fd2l0aGFzc2lnbiBjbG9nCgoKCjsKCmV4dGVybiBpc3RyZWFtJiBsb2NrKGlzdHJlYW0mIGlu
cyk7CmV4dGVybiBpc3RyZWFtJiB1bmxvY2soaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0m
IGxvY2sob3N0cmVhbSYgb3V0cyk7CmV4dGVybiBvc3RyZWFtJiB1bmxvY2sob3N0cmVhbSYgb3V0
cyk7CgpzdHJ1Y3QgSW9zdHJlYW1faW5pdCB7IH0gOyAgIAoKaW5saW5lIGlvcyYgZGVjKGlvcyYg
aSkKeyBpLnNldGYoaW9zOjpkZWMsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJu
IGk7IH0KaW5saW5lIGlvcyYgaGV4KGlvcyYgaSkKeyBpLnNldGYoaW9zOjpoZXgsIGlvczo6ZGVj
fGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7IH0KaW5saW5lIGlvcyYgb2N0KGlvcyYgaSkK
eyBpLnNldGYoaW9zOjpvY3QsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7
IH0KfSAgCgoKIyA2ICIvdXNyL2luY2x1ZGUvZysrL2lvc3RyZWFtIiAyIDMKCgojIDQ1ICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJlYW0uaHBw
IiAyCgojIDEgIi91c3IvaW5jbHVkZS9nKysvaW9zZndkIiAxIDMKIAogCgoKCmNsYXNzIGlvczsK
Y2xhc3Mgc3RyZWFtYnVmOwpjbGFzcyBpc3RyZWFtOwpjbGFzcyBvc3RyZWFtOwpjbGFzcyBpb3N0
cmVhbTsKY2xhc3MgZmlsZWJ1ZjsKY2xhc3MgaWZzdHJlYW07CmNsYXNzIG9mc3RyZWFtOwpjbGFz
cyBmc3RyZWFtOwoKIyA0NiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pc3RyZWFtLmhwcCIgMgoKCgoKCgoKIAoKIAoKCgoKCiMgMjkgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWRhdGUuaHBwIiAyCgoj
IDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJh
c2UuaHBwIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAoKIAoKCgoKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pbGFuZ2x2bC5ocHAiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoK
IAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWNvbWRlZnMuaCIgMQogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCgoKCiAKCiAgCgoKCgoK
ICAKCgoKCgogIAoKCgoKCiAgCgoKCgoKCgoKCgojIDYwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ljb21kZWZzLmgiCgoKIAogCgogIAoKCiAgCiAg
ICAKICAgIAogIAogIAoKCgoKCgogIAoKCiAgCiAgICAKICAKICAKCgogIAoKCiAgCgoKCgoKCgoK
CgogIAogIAoKCgoKCgoKCiAgCgoKCgoKICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
ICAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKIAoKICAgIAoKCgogICAgCgoKCiAgICAKCgoKICAgIAoKCgogICAgCiAgICAgICAgCiAg
ICAKCiAgICAKCgoKICAgIAoKCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogICAg
CiAgICAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgICAKICAgIAoKCgoKCgojIDMyNiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pY29tZGVm
cy5oIgoKCiAKIAojIDM0MyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pY29tZGVmcy5oIgoKCgojIDI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lsYW5nbHZsLmhwcCIgMgoKIAoKIAogCiAKIAogCgoK
CgoKCgogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIyA4OCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbGFuZ2x2bC5ocHAi
CgogCgoKCgojIDExOCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pbGFuZ2x2bC5ocHAiCgoKCgoKCgogCnR5cGVkZWYgaW50IElCb29sOwoKIyAxNDQg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWxhbmds
dmwuaHBwIgoKCiMgMTU3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2lsYW5nbHZsLmhwcCIKCgoKCgoKCgoKCgoKCgoKCm5hbWVzcGFjZSBpb2MgewoK
CgoKCiAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVuaWNoYXJfdDsKCiAgICAKCgoKCiAgICB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdW51bWVyaWNfdDsKICAgIHR5cGVkZWYgICBzaWduZWQgbG9u
ZyAgbnVtZXJpY190OwoKCn07CgogCgojIDM0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liYXNlLmhwcCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liYXNlcGwuaHBwIiAxCgoKCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKCiAKCgogIAoKCiAgICAK
ICAKCgoKICAKCgogICAgCiAgCgoKIAoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lwcmFnbGliLmgiIDEKIAogCiAKIAogCiAKIAogCiAKIAog
CgoKCgogCgoKCgoKCiAgICAKCgoKCgoKCgoKCgogICAgICAgIAoKCiMgNjcgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXByYWdsaWIuaCIKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKICAgICAgICAKCgogICAgICAgICAgICAgICAgCiAgICAg
ICAgCgoKCgoKICAgICAgICAKCgoKCgogICAgICAgIAoKCgogICAgICAgICAgICAgICAgCiAgICAg
ICAgCgoKCgoKICAgICAgICAKCgoKCgogICAgICAgIAoKCgoKCiAgICAgICAgCiAgICAgICAgCgoK
CgoKICAgICAgICAKCgoKIyA0OSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pYmFzZXBsLmhwcCIgMgoKCgoKICAgIAogICAgICAJCiMgMTA1ICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liYXNlcGwuaHBw
IgoKICAgIAojIDEyOCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pYmFzZXBsLmhwcCIKCgoKIAoKIyAzNSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmFzZS5ocHAiIDIKCiAKIAogCiAKCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RyZWFtLmhw
cCIgMQojIDU2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lzdHJlYW0uaHBwIgoKCgoKCiMgNDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJhc2UuaHBwIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIiAxCiMgMTAgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2Uu
aHBwIgoKCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAojIDEgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJhc2UuaHBw
IiAxCiMgMTkyICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2liYXNlLmhwcCIKCiMgNjQgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIiAyCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ljY29uc3RhLmgiIDEKCgogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCiMgMTg5ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2ljY29uc3RhLmgiCgoKIyAyMDggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWNjb25zdGEuaCIKCgoKIyA2NiAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiIDIKCiMgMSAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbXNndGV4
dC5ocHAiIDEKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pcHJpbXR5cC5o
cHAiIDEKCgoKIAoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAoKIAojIDEgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIyA0MSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoK
CgoKCiMgNjM4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgojIDMxICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMiAzCgoKIAoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoK
IAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiMgMzggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCgogCgoKCgoKCgoKCgoKIAp0eXBl
ZGVmIHN0cnVjdAp7CiAgaW50IGNvdW50OwkJIAogIHdpbnRfdCB2YWx1ZTsJCSAKfSBtYnN0YXRl
X3Q7CgoKIAoKCgoKCgoKCiAKCgoKCgogCgpzdHJ1Y3QgdG07CgoKZXh0ZXJuICJDIiB7IAoKIApl
eHRlcm4gd2NoYXJfdCAqd2NzY3B5ICAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAg
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSAgdGhyb3cgKCkgIDsKIApleHRl
cm4gd2NoYXJfdCAqd2NzbmNweSAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAg
ICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gd2NoYXJfdCAqd2NzY2F0ICAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rl
c3QsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSAgdGhyb3cgKCkg
IDsKIApleHRlcm4gd2NoYXJfdCAqd2NzbmNhdCAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0
LAoJCQkgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHdjc2NtcCAgKF9fY29uc3Qgd2NoYXJfdCAqX19z
MSwgX19jb25zdCB3Y2hhcl90ICpfX3MyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHdjc25j
bXAgIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwKCQkJIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCB3Y3NjYXNlY21wICAoX19jb25z
dCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IHdjc25jYXNlY21wICAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdj
aGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgIHRo
cm93ICgpICA7CgogCgojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3Ry
dWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNbNl07CSAKCiAgIAogIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0
IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwoKCiMgMTEyICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMiAzCgoKZXh0ZXJuIGludCBfX3djc2Nhc2VjbXBfbCAgKF9fY29uc3Qgd2No
YXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyLAoJCQkJX19sb2NhbGVfdCBfX2xvYykg
IHRocm93ICgpICA7CgpleHRlcm4gaW50IF9fd2NzbmNhc2VjbXBfbCAgKF9fY29uc3Qgd2NoYXJf
dCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyLAoJCQkJIHNpemVfdCBfX24sIF9fbG9jYWxl
X3QgX19sb2MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgd2NzY29sbCAgKF9fY29uc3Qg
d2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyKSAgdGhyb3cgKCkgIDsKIAoKCmV4
dGVybiBzaXplX3Qgd2NzeGZybSAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zMSwKCQkJICAgIF9f
Y29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MyLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsK
CgogCgoKIAoKZXh0ZXJuIGludCBfX3djc2NvbGxfbCAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwg
X19jb25zdCB3Y2hhcl90ICpfX3MyLAoJCQkgICAgIF9fbG9jYWxlX3QgX19sb2MpICB0aHJvdyAo
KSAgOwogCgoKZXh0ZXJuIHNpemVfdCBfX3djc3hmcm1fbCAgKHdjaGFyX3QgKl9fczEsIF9fY29u
c3Qgd2NoYXJfdCAqX19zMiwKCQkJCXNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gd2NoYXJfdCAqd2NzZHVwICAoX19jb25zdCB3Y2hhcl90ICpfX3Mp
ICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHdjaGFyX3QgKndjc2NociAgKF9fY29uc3Qgd2NoYXJf
dCAqX193Y3MsIHdjaGFyX3QgX193YykgIHRocm93ICgpICA7CiAKZXh0ZXJuIHdjaGFyX3QgKndj
c3JjaHIgIChfX2NvbnN0IHdjaGFyX3QgKl9fd2NzLCB3Y2hhcl90IF9fd2MpICB0aHJvdyAoKSAg
OwoKIAoKZXh0ZXJuIHNpemVfdCB3Y3Njc3BuICAoX19jb25zdCB3Y2hhcl90ICpfX3djcywKCQkJ
ICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZWplY3QpICB0aHJvdyAoKSAgOwogCgpleHRlcm4gc2l6
ZV90IHdjc3NwbiAgKF9fY29uc3Qgd2NoYXJfdCAqX193Y3MsIF9fY29uc3Qgd2NoYXJfdCAqX19h
Y2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrICAoX19jb25zdCB3
Y2hhcl90ICpfX3djcywKCQkJICAgICAgX19jb25zdCB3Y2hhcl90ICpfX2FjY2VwdCkgIHRocm93
ICgpICA7CiAKZXh0ZXJuIHdjaGFyX3QgKndjc3N0ciAgKF9fY29uc3Qgd2NoYXJfdCAqX19oYXlz
dGFjaywKCQkJICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fbmVlZGxlKSAgdGhyb3cgKCkgIDsKCgoK
CgoKCiAKZXh0ZXJuIHdjaGFyX3QgKndjc3RvayAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLAoJ
CQkgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAgIHdjaGFy
X3QgKipfX3Jlc3RyaWN0IF9fcHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHNpemVfdCBfX3dj
c2xlbiAgKF9fY29uc3Qgd2NoYXJfdCAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHNpemVfdCB3
Y3NsZW4gIChfX2NvbnN0IHdjaGFyX3QgKl9fcykgIHRocm93ICgpICA7CgoKIApleHRlcm4gc2l6
ZV90IHdjc25sZW4gIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgc2l6ZV90IF9fbWF4bGVuKSAgdGhy
b3cgKCkgIDsKCgoKIApleHRlcm4gd2NoYXJfdCAqd21lbWNociAgKF9fY29uc3Qgd2NoYXJfdCAq
X19zLCB3Y2hhcl90IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
d21lbWNtcCAgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLAoJCQkgX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gd2NoYXJfdCAqd21lbWNweSAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zMSwKCQkJICAgICAg
X19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAg
OwoKIAoKZXh0ZXJuIHdjaGFyX3QgKndtZW1tb3ZlICAod2NoYXJfdCAqX19zMSwgX19jb25zdCB3
Y2hhcl90ICpfX3MyLAoJCQkgICAgICAgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVy
biB3Y2hhcl90ICp3bWVtc2V0ICAod2NoYXJfdCAqX19zLCB3Y2hhcl90IF9fYywgc2l6ZV90IF9f
bikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHdpbnRfdCBidG93YyAgKGludCBfX2MpICB0aHJv
dyAoKSAgOwoKIAoKZXh0ZXJuIGludCB3Y3RvYiAgKHdpbnRfdCBfX2MpICB0aHJvdyAoKSAgOwoK
IAoKZXh0ZXJuIGludCBtYnNpbml0ICAoX19jb25zdCBtYnN0YXRlX3QgKl9fcHMpICB0aHJvdyAo
KSAgOwoKIAoKZXh0ZXJuIHNpemVfdCBtYnJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3
YywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24sCgkJCSAg
ICBtYnN0YXRlX3QgKl9fcCkgIHRocm93ICgpICA7CgogCmV4dGVybiBzaXplX3Qgd2NydG9tYiAg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCB3Y2hhcl90IF9fd2MsCgkJCSAgICBtYnN0YXRlX3QgKl9f
cmVzdHJpY3QgX19wcykgIHRocm93ICgpICA7CgogCmV4dGVybiBzaXplX3QgX19tYnJsZW4gIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAoJCQkgICAgIG1ic3RhdGVf
dCAqX19yZXN0cmljdCBfX3BzKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHNpemVfdCBtYnJsZW4gIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAoJCQkgICBtYnN0YXRlX3Qg
Kl9fcmVzdHJpY3QgX19wcykgIHRocm93ICgpICA7CgoKCgoKCgoKCgogCgpleHRlcm4gc2l6ZV90
IG1ic3J0b3djcyAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kc3QsCgkJCSAgICAgIF9fY29uc3Qg
Y2hhciAqKl9fcmVzdHJpY3QgX19zcmMsCgkJCSAgICAgIHNpemVfdCBfX2xlbiwgbWJzdGF0ZV90
ICpfX3Jlc3RyaWN0IF9fcHMpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHNpemVfdCB3Y3NydG9t
YnMgIChjaGFyICpfX3Jlc3RyaWN0IF9fZHN0LAoJCQkgICAgICBfX2NvbnN0IHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fc3JjLAoJCQkgICAgICBzaXplX3QgX19sZW4sIG1ic3RhdGVfdCAqX19yZXN0
cmljdCBfX3BzKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIHNpemVfdCBtYnNucnRvd2NzICAo
d2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKCQkJICAgICAgIF9fY29uc3QgY2hhciAqKl9fcmVz
dHJpY3QgX19zcmMsIHNpemVfdCBfX25tYywKCQkJICAgICAgIHNpemVfdCBfX2xlbiwgbWJzdGF0
ZV90ICpfX3Jlc3RyaWN0IF9fcHMpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHNpemVfdCB3Y3Nu
cnRvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX2RzdCwKCQkJICAgICAgIF9fY29uc3Qgd2NoYXJf
dCAqKl9fcmVzdHJpY3QgX19zcmMsCgkJCSAgICAgICBzaXplX3QgX19ud2MsIHNpemVfdCBfX2xl
biwKCQkJICAgICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSAgdGhyb3cgKCkgIDsKCgoK
IAoKIApleHRlcm4gaW50IHdjd2lkdGggICh3aW50X3QgX19jKSAgdGhyb3cgKCkgIDsKCiAKCmV4
dGVybiBpbnQgd2Nzd2lkdGggIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgc2l6ZV90IF9fbikgIHRo
cm93ICgpICA7CgoKCiAKCmV4dGVybiBkb3VibGUgd2NzdG9kICAoX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICB0
aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGZsb2F0IHdjc3RvZiAgKF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX25wdHIsCgkJCSAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICB0aHJv
dyAoKSAgOwpleHRlcm4gbG9uZyBkb3VibGUgIHdjc3RvbGQgIChfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkJICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0cikg
IHRocm93ICgpICA7CgoKCiAKCmV4dGVybiBsb25nIGludCB3Y3N0b2wgIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu
dCB3Y3N0b3VsICAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQgX19iYXNlKSAg
dGhyb3cgKCkgIDsKCgogCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHdjc3Rv
cSAgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCiAKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91cSAgKF9fY29uc3Qgd2No
YXJfdCAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCSAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIAoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCB3Y3N0b2xsICAoX19jb25zdCB3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fbnB0ciwKCQkJCSAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKSAgdGhyb3cgKCkgIDsKCiAKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgd2NzdG91bGwgIChfX2NvbnN0IHdjaGFyX3QgKgoJCQkJCSAgICAgX19yZXN0
cmljdCBfX25wdHIsCgkJCQkJICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJ
CQkgICAgIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwoKCgogCgoKCgoKCgoKCgogCgoKCiAKCmV4
dGVybiBsb25nIGludCBfX3djc3RvbF9sICAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
bnB0ciwKCQkJCSB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKCQkJ
CSBfX2xvY2FsZV90IF9fbG9jKSAgdGhyb3cgKCkgIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGlu
dCBfX3djc3RvdWxfbCAgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJ
ICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgaW50IF9fYmFzZSwgX19s
b2NhbGVfdCBfX2xvYykgIHRocm93ICgpICA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fd2NzdG9sbF9sICAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwK
CQkJCSAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQg
X19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSAgdGhyb3cgKCkgIDsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193Y3N0b3VsbF9sICAoX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0CgkJCQkJCSBfX25wdHIsCgkJCQkJCSB3Y2hhcl90ICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKCQkJCQkJIGludCBfX2Jhc2UsCgkJCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgdGhy
b3cgKCkgIDsKCmV4dGVybiBkb3VibGUgX193Y3N0b2RfbCAgKF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX25wdHIsCgkJCSAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
CQkJICAgICAgIF9fbG9jYWxlX3QgX19sb2MpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGZsb2F0IF9f
d2NzdG9mX2wgIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgICB3
Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJICAgICAgX19sb2NhbGVfdCBfX2xvYykg
IHRocm93ICgpICA7CgpleHRlcm4gbG9uZyBkb3VibGUgIF9fd2NzdG9sZF9sICAoX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCgkJCQkJIF9fbG9jYWxlX3QgX19sb2MpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4g
ZG91YmxlIF9fd2NzdG9kX2ludGVybmFsICAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
bnB0ciwKCQkJCSAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAg
aW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRlcm4gZmxvYXQgX193Y3N0b2ZfaW50ZXJuYWwg
IChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgICB3Y2hhcl90ICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpl
eHRlcm4gbG9uZyBkb3VibGUgIF9fd2NzdG9sZF9pbnRlcm5hbCAgKF9fY29uc3Qgd2NoYXJfdCAq
CgkJCQkJCV9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQl3Y2hhcl90ICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCmV4dGVybiBsb25nIGludCBf
X3djc3RvbF9pbnRlcm5hbCAgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCgkJ
CQkJd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJaW50IF9fYmFzZSwgaW50IF9f
Z3JvdXApICB0aHJvdyAoKSAgOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX193Y3N0b3Vs
X2ludGVybmFsICAoX19jb25zdCB3Y2hhcl90ICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwK
CQkJCQkJICB3Y2hhcl90ICoqCgkJCQkJCSAgX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkJICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgIHRocm93ICgpICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsICAoX19jb25zdCB3Y2hhcl90ICoK
CQkJCQkgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgICB3Y2hhcl90ICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKCQkJCQkgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgIHRocm93
ICgpICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193
Y3N0b3VsbF9pbnRlcm5hbCAgKF9fY29uc3Qgd2NoYXJfdCAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9f
bnB0ciwKCQkJCQkJCXdjaGFyX3QgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJ
CQlpbnQgX19iYXNlLAoJCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgoKIyA0NzYg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCgogCgpleHRlcm4gd2NoYXJfdCAqd2NwY3B5ICAo
d2NoYXJfdCAqX19kZXN0LCBfX2NvbnN0IHdjaGFyX3QgKl9fc3JjKSAgdGhyb3cgKCkgIDsKCiAK
CmV4dGVybiB3Y2hhcl90ICp3Y3BuY3B5ICAod2NoYXJfdCAqX19kZXN0LCBfX2NvbnN0IHdjaGFy
X3QgKl9fc3JjLAoJCQkgICAgICBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgoKIAoKCgoKCgoK
CgoKfSAKCgojIDI1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lwcmltdHlwLmhwcCIgMgoKCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWxvbmdsbmcuaHBwIiAxCgoKCiAKIAogCgoKCgoKCgoK
CgoKIAogCiAKIAogCiAKCiAKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoK
CgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCgoKCgoKdHlwZWRlZiBsb25nIGxvbmcgSUxv
bmdMb25nOwoKIyA0MjAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWxvbmdsbmcuaHBwIgoKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3By
YWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFn
bWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCgoKIyAyOCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pcHJpbXR5cC5ocHAi
IDIKCiAKCiAKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVbmlDaGFyOwoKIAoKIyAyNCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbXNndGV4dC5ocHAi
IDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19I
RUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEg
bmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVt
KDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSU1lc3NhZ2VUZXh0UHJpdmF0ZURhdGE7CiAKCiAK
CmNsYXNzICAgSU1lc3NhZ2VUZXh0CnsKcHVibGljOgogICAgIAogICAgc3RhdGljIGNvbnN0IGNo
YXIgKm1lc3NhZ2VGaWxlKCk7CiAgICBzdGF0aWMgY29uc3QgaW9jOjp1bmljaGFyX3QqIG1lc3Nh
Z2VGaWxlVygpOwoKICAgIHN0YXRpYyB2b2lkIHNldE1lc3NhZ2VGaWxlKGNvbnN0IGNoYXIqIG1z
Z0ZpbGVOYW1lKTsKICAgIHN0YXRpYyB2b2lkIHNldE1lc3NhZ2VGaWxlVyhjb25zdCBpb2M6OnVu
aWNoYXJfdCogbXNnRmlsZU5hbWUpOwoKICAgICAKICAgIElNZXNzYWdlVGV4dChpb2M6OnVudW1l
cmljX3QgbWVzc2FnZUlkKTsKCiAgICBJTWVzc2FnZVRleHQoaW9jOjp1bnVtZXJpY190IG1lc3Nh
Z2VJZCwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlRmlsZU5hbWUsCiAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogdGV4dEluc2VydDEgPSAwLAogICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHRleHRJbnNlcnQyID0gMCwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0ZXh0SW5zZXJ0MyA9IDAsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGV4dEluc2Vy
dDQgPSAwLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRleHRJbnNlcnQ1ID0gMCwKICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXh0SW5zZXJ0NiA9IDAsCiAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogdGV4dEluc2VydDcgPSAwLAogICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHRleHRJbnNlcnQ4ID0gMCwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXh0SW5z
ZXJ0OSA9IDApOwoKICAgIElNZXNzYWdlVGV4dChpb2M6OnVudW1lcmljX3QgbWVzc2FnZUlkLAog
ICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBtZXNzYWdlRmlsZU5hbWUsCiAg
ICAgICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRleHRJbnNlcnQxID0gMCwKICAg
ICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCogdGV4dEluc2VydDIgPSAwLAogICAg
ICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0SW5zZXJ0MyA9IDAsCiAgICAg
ICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRleHRJbnNlcnQ0ID0gMCwKICAgICAg
ICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCogdGV4dEluc2VydDUgPSAwLAogICAgICAg
ICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0SW5zZXJ0NiA9IDAsCiAgICAgICAg
ICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRleHRJbnNlcnQ3ID0gMCwKICAgICAgICAg
ICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCogdGV4dEluc2VydDggPSAwLAogICAgICAgICAg
ICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0SW5zZXJ0OSA9IDApOwoKICAgIElNZXNz
YWdlVGV4dChjb25zdCBJTWVzc2FnZVRleHQmIHRleHQpOwoKICAgIH5JTWVzc2FnZVRleHQoKTsK
CiAgICAgCgogICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBjb25zdDsKCgogICAgY29uc3QgY2hh
ciogdGV4dCgpIGNvbnN0OwogICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRleHRXKCkgY29uc3Q7
CgogICAgSU1lc3NhZ2VUZXh0JiBzZXREZWZhdWx0VGV4dChjb25zdCBjaGFyKiB0ZXh0KTsKICAg
IElNZXNzYWdlVGV4dCYgc2V0RGVmYXVsdFRleHRXKGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0
KTsKCiAgICBJTWVzc2FnZVRleHQmIG9wZXJhdG9yPShjb25zdCBJTWVzc2FnZVRleHQmIHRleHQp
OwoKICAgIGJvb2wgc3VjY2Vzc2Z1bCgpIGNvbnN0OwoKcHJpdmF0ZToKCiAgICBzdGF0aWMgY29u
c3QgVW5pQ2hhciogbWVzc2FnZUZpbGVVbmlDaGFyKCk7CiAgICBzdGF0aWMgdm9pZCBzZXRNZXNz
YWdlRmlsZVVuaUNoYXIoY29uc3QgVW5pQ2hhciogbXNnRmlsZU5hbWUpOwogICAgY29uc3QgVW5p
Q2hhciogdGV4dFVuaUNoYXIoKSBjb25zdDsKICAgIElNZXNzYWdlVGV4dCYgc2V0RGVmYXVsdFRl
eHRVbmlDaGFyKGNvbnN0IFVuaUNoYXIqIHRleHQpOwogICAgdm9pZCBpbml0aWFsaXplV2l0aFVu
aUNoYXIoaW9jOjp1bnVtZXJpY190IG1lc3NhZ2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFVuaUNoYXIqIG1lc3NhZ2VGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFVuaUNoYXIqIHRleHRJbnNlcnQxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVW5pQ2hhciogdGV4dEluc2VydDIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiB0ZXh0SW5zZXJ0MywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaUNoYXIqIHRleHRJbnNlcnQ0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pQ2hhciogdGV4dEluc2VydDUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiB0ZXh0SW5zZXJ0NiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaUNoYXIqIHRleHRJbnNlcnQ3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pQ2hhciogdGV4dEluc2VydDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiB0ZXh0SW5zZXJ0OSk7
CiAgICB2b2lkIGluaXRpYWxpemVXaXRoQ2hhcihpb2M6OnVudW1lcmljX3QgbWVzc2FnZUlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZUZpbGVOYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGV4dEluc2VydDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXh0SW5zZXJ0MiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRleHRJbnNlcnQzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGV4dEluc2VydDQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB0ZXh0SW5zZXJ0NSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHRleHRJbnNlcnQ2LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogdGV4dEluc2VydDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0ZXh0SW5zZXJ0OCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHRleHRJbnNlcnQ5KTsKCiAgICBJTWVzc2FnZVRleHRQcml2YXRlRGF0YSAqZkRhdGE7
Cn07CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5n
KHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2ltc2d0ZXh0LmlubCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCgppbmxp
bmUKY29uc3QgaW9jOjp1bmljaGFyX3QgKgpJTWVzc2FnZVRleHQ6Om1lc3NhZ2VGaWxlVygpCnsK
ICAgIHJldHVybiAoY29uc3QgaW9jOjp1bmljaGFyX3QgKilJTWVzc2FnZVRleHQ6Om1lc3NhZ2VG
aWxlVW5pQ2hhcigpOwp9CgppbmxpbmUKdm9pZApJTWVzc2FnZVRleHQ6OnNldE1lc3NhZ2VGaWxl
Vyhjb25zdCBpb2M6OnVuaWNoYXJfdCAqbXNnRmlsZU5hbWUpCnsKICAgIElNZXNzYWdlVGV4dDo6
c2V0TWVzc2FnZUZpbGVVbmlDaGFyKChjb25zdCBVbmlDaGFyICopbXNnRmlsZU5hbWUpOwp9Cgpp
bmxpbmUKY29uc3QgaW9jOjp1bmljaGFyX3QqIElNZXNzYWdlVGV4dDo6dGV4dFcoKSBjb25zdAp7
CiAgICByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopdGV4dFVuaUNoYXIoKTsKfQoKaW5s
aW5lCklNZXNzYWdlVGV4dCYKSU1lc3NhZ2VUZXh0OjpzZXREZWZhdWx0VGV4dFcoY29uc3QgaW9j
Ojp1bmljaGFyX3QqIGRlZmF1bHRUZXh0KQp7CiAgICByZXR1cm4gc2V0RGVmYXVsdFRleHRVbmlD
aGFyKChjb25zdCBVbmlDaGFyICopZGVmYXVsdFRleHQpOwp9CgppbmxpbmUKSU1lc3NhZ2VUZXh0
OjpJTWVzc2FnZVRleHQoaW9jOjp1bnVtZXJpY190IG1lc3NhZ2VfaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBtZXNzYWdlX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCogdGV4dEluc2VydDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0SW5z
ZXJ0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRl
eHRJbnNlcnQzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJf
dCogdGV4dEluc2VydDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5p
Y2hhcl90KiB0ZXh0SW5zZXJ0NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW9j
Ojp1bmljaGFyX3QqIHRleHRJbnNlcnQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpb2M6OnVuaWNoYXJfdCogdGV4dEluc2VydDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZXh0SW5zZXJ0OCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRleHRJbnNlcnQ5KQogICAgICAgIDogZkRhdGEo
MCkKewogICAgaW5pdGlhbGl6ZVdpdGhVbmlDaGFyKG1lc3NhZ2VfaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbnN0IFVuaUNoYXIqKW1lc3NhZ2VfZmlsZW5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNvbnN0IFVuaUNoYXIqKXRleHRJbnNlcnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb25zdCBVbmlDaGFyKil0ZXh0SW5zZXJ0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29uc3QgVW5pQ2hhciopdGV4dEluc2VydDMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvbnN0IFVuaUNoYXIqKXRleHRJbnNlcnQ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25zdCBVbmlDaGFyKil0ZXh0SW5zZXJ0NSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29uc3QgVW5pQ2hhciopdGV4dEluc2VydDYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNvbnN0IFVuaUNoYXIqKXRleHRJbnNlcnQ3LAogICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBVbmlDaGFyKil0ZXh0SW5zZXJ0OCwKICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29uc3QgVW5pQ2hhciopdGV4dEluc2VydDkpOwp9CgoKIyAxNzAgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaW1zZ3RleHQuaHBwIiAyCgogCgogCiNw
cmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3Jl
KQogCgogCgoKCgoKIyA2NyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiIDIKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJh
Z21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZv
KHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdf
U0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoKIAoKIyAxMTIgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIgoK
CiAKCiAKCgoKCgoKCgoKIApjbGFzcyBJRXhjZXB0aW9uTG9jYXRpb25EYXRhOwpjbGFzcyBJRXhj
ZXB0aW9uRGF0YTsKY2xhc3MgSVN5c3RlbUVycm9ySW5mb0RhdGE7CmNsYXNzIElDTGliRXJyb3JJ
bmZvRGF0YTsKY2xhc3MgSVNpbXBsZVRleHQ7CiAKCiAKY2xhc3MgICBJRXhjZXB0aW9uTG9jYXRp
b24gewpwdWJsaWM6CgogCiAgICBJRXhjZXB0aW9uTG9jYXRpb24oKTsKICAgIElFeGNlcHRpb25M
b2NhdGlvbihjb25zdCBjaGFyKiBmaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUgPSAwLAogICAgICAgICAgICAgICAgICAgICAgIGlvYzo6dW51
bWVyaWNfdCBsaW5lTnVtYmVyID0gMCk7CiAgICBJRXhjZXB0aW9uTG9jYXRpb24oY29uc3QgaW9j
Ojp1bmljaGFyX3QqIGZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6
dW5pY2hhcl90KiBmdW5jdGlvbk5hbWUgPSAwLAogICAgICAgICAgICAgICAgICAgICAgIGlvYzo6
dW51bWVyaWNfdCBsaW5lTnVtYmVyID0gMCk7CiAgICBJRXhjZXB0aW9uTG9jYXRpb24oY29uc3Qg
SUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2MpOwogICAgfklFeGNlcHRpb25Mb2NhdGlvbigpOwoKIAog
ICAgY29uc3QgY2hhciAqZmlsZU5hbWUoKSBjb25zdDsKICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9u
TmFtZSgpIGNvbnN0OwogICAgY29uc3QgaW9jOjp1bmljaGFyX3QgKmZpbGVOYW1lVygpIGNvbnN0
OwogICAgY29uc3QgaW9jOjp1bmljaGFyX3QgKmZ1bmN0aW9uTmFtZVcoKSBjb25zdDsKCiAgICBp
b2M6OnVudW1lcmljX3QgbGluZU51bWJlcigpIGNvbnN0OwoKICAgIElFeGNlcHRpb25Mb2NhdGlv
biYgb3BlcmF0b3I9KGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiAmbG9jKTsKCnByaXZhdGU6CiAK
ICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhVbmlDaGFyKGNvbnN0IFVuaUNoYXIgKmZpbGVOYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pQ2hhciAqZnVuY3Rpb25OYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9jOjp1bnVtZXJpY190IGxpbmVOdW1i
ZXIpOwogICAgY29uc3QgVW5pQ2hhciAqZmlsZU5hbWVVbmlDaGFyKCkgY29uc3Q7CiAgICBjb25z
dCBVbmlDaGFyICpmdW5jdGlvbk5hbWVVbmlDaGFyKCkgY29uc3Q7CiAgICBJRXhjZXB0aW9uTG9j
YXRpb25EYXRhICpmRGF0YTsKfTsKCmNsYXNzICAgSUV4Y2VwdGlvbiB7CnB1YmxpYzoKCiAgICBl
bnVtIFNldmVyaXR5CiAgICB7CiAgICAgICAgdW5yZWNvdmVyYWJsZSwgcmVjb3ZlcmFibGUKICAg
IH07CgogCiAgICBJRXhjZXB0aW9uKGNvbnN0IGNoYXIqIGVycm9yVGV4dCwKICAgICAgICAgICAg
ICAgaW9jOjp1bnVtZXJpY190IGVycm9ySWQgPSAwLAogICAgICAgICAgICAgICBTZXZlcml0eSBz
ZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwogIAoKCgogICAgSUV4Y2VwdGlv
bihjb25zdCBpb2M6OnVuaWNoYXJfdCogZXJyb3JUZXh0LAogICAgICAgICAgICAgICBpb2M6OnVu
dW1lcmljX3QgZXJyb3JJZCA9IDAsCiAgICAgICAgICAgICAgIFNldmVyaXR5IHNldmVyaXR5ID0g
SUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSk7CiAgICBJRXhjZXB0aW9uKGNvbnN0IElFeGNlcHRp
b24mIGV4Y2VwdGlvbik7CgogICAgdmlydHVhbCB+SUV4Y2VwdGlvbigpOwoKIAogICAgdHlwZWRl
ZiBjb25zdCBjaGFyKiBFcnJvckNvZGVHcm91cDsKCiAgICBzdGF0aWMgRXJyb3JDb2RlR3JvdXAg
Y29uc3QKICAgICAgICAgIGJhc2VMaWJyYXJ5LAogICAgICAgICAgQ0xpYnJhcnksCiAgICAgICAg
ICBvcGVyYXRpbmdTeXN0ZW0sCiAgICAgICAgICBwcmVzZW50YXRpb25TeXN0ZW0sCiAgICAgICAg
ICBvdGhlcjsKCiAgICBJRXhjZXB0aW9uJiBzZXRFcnJvckNvZGVHcm91cChFcnJvckNvZGVHcm91
cCBlcnJvckdyb3VwKTsKICAgIEVycm9yQ29kZUdyb3VwIGVycm9yQ29kZUdyb3VwKCkgY29uc3Q7
CgogCiAgICBJRXhjZXB0aW9uICZhcHBlbmRUZXh0KGNvbnN0IGNoYXIqIGVycm9yVGV4dCk7CiAg
ICBJRXhjZXB0aW9uICZzZXRUZXh0KGNvbnN0IGNoYXIqIGVycm9yVGV4dCk7CiAgICBjb25zdCBj
aGFyICp0ZXh0KGlvYzo6dW51bWVyaWNfdCBpbmRleEZyb21Ub3AgPSAwKSBjb25zdDsKCiAgICBJ
RXhjZXB0aW9uICZhcHBlbmRUZXh0Vyhjb25zdCBpb2M6OnVuaWNoYXJfdCogZXJyb3JUZXh0KTsK
ICAgIElFeGNlcHRpb24gJnNldFRleHRXKGNvbnN0IGlvYzo6dW5pY2hhcl90KiBlcnJvclRleHQp
OwogICAgY29uc3QgaW9jOjp1bmljaGFyX3QgKnRleHRXKGlvYzo6dW51bWVyaWNfdCBpbmRleEZy
b21Ub3AgPSAwKSBjb25zdDsKCiAgICBpb2M6OnVudW1lcmljX3QgdGV4dENvdW50KCkgY29uc3Q7
CgogCiAgICBJRXhjZXB0aW9uICZzZXRTZXZlcml0eShTZXZlcml0eSBzZXZlcml0eSk7CiAgICB2
aXJ0dWFsIGludCBpc1JlY292ZXJhYmxlKCkgY29uc3Q7CgogCiAgICBJRXhjZXB0aW9uICZzZXRF
cnJvcklkKGlvYzo6dW51bWVyaWNfdCBlcnJvcklkKTsKICAgIGlvYzo6dW51bWVyaWNfdCBlcnJv
cklkKCkgY29uc3Q7CgogCiAgICB2aXJ0dWFsIElFeGNlcHRpb24gJmFkZExvY2F0aW9uKGNvbnN0
IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRpb24pOwoKICAgIGlvYzo6dW51bWVyaWNfdCBsb2Nh
dGlvbkNvdW50KCkgY29uc3Q7CgogICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uICpsb2NhdGlv
bkF0SW5kZXgKICAgIChpb2M6OnVudW1lcmljX3QgbG9jYXRpb25JbmRleCkgY29uc3Q7CgogCiAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKICAgIHZpcnR1YWwgY29uc3QgaW9j
Ojp1bmljaGFyX3QgKm5hbWVXKCkgY29uc3Q7CgogCgoKCgogCiAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRQYXJhbWV0ZXIoY29uc3QgY2hhciogZXhjZXB0aW9uVGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJRXhjZXB0aW9uTG9jYXRpb24mIGxvY2F0aW9uKTsKICAgIHN0
YXRpYyB2b2lkIGFzc2VydFBhcmFtZXRlclcoY29uc3QgaW9jOjp1bmljaGFyX3QqIGV4Y2VwdGlv
blRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25M
b2NhdGlvbiYgbG9jYXRpb24pOwoKIAoKICAgIGNsYXNzICAgVHJhY2VGbiB7CiAgICBwdWJsaWM6
CiAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlKGNvbnN0IGNoYXIqIGJ1ZmZlcik7CiAgICAgICAg
dmlydHVhbCB2b2lkIHdyaXRlVyhjb25zdCBpb2M6OnVuaWNoYXJfdCogYnVmZmVyKTsKICAgICAg
ICB2aXJ0dWFsIHZvaWQgbG9nRGF0YShJRXhjZXB0aW9uJiBleGNlcHRpb24pOwogICAgICAgIHZp
cnR1YWwgdm9pZCBsb2dEYXRhVyhJRXhjZXB0aW9uJiBleGNlcHRpb24pOwoKICAgIHByb3RlY3Rl
ZDoKICAgICAgICBUcmFjZUZuKCk7CiAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbkxvZ2dl
ZCgpOwogICAgcHJpdmF0ZToKICAgICAgICB2b2lkIHdyaXRlVW5pQ2hhcihjb25zdCBVbmlDaGFy
KiBidWZmZXIpOwogICAgfTsKCiAgICBzdGF0aWMgSUV4Y2VwdGlvbjo6VHJhY2VGbiAqc2V0VHJh
Y2VGdW5jdGlvbihJRXhjZXB0aW9uOjpUcmFjZUZuJgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VGdW5jdGlvbik7CiAgICB2aXJ0dWFsIElFeGNl
cHRpb24gJmxvZ0V4Y2VwdGlvbkRhdGEoKTsKICAgIHZpcnR1YWwgSUV4Y2VwdGlvbiAmbG9nRXhj
ZXB0aW9uRGF0YVcoKTsKCnByaXZhdGU6CiAgICBJRXhjZXB0aW9uICZvcGVyYXRvcj0oY29uc3Qg
SUV4Y2VwdGlvbiYgZXhjKTsKICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhVbmlDaGFyKGNvbnN0IFVu
aUNoYXIqIHRleHQsIGlvYzo6dW51bWVyaWNfdCBlcnJvcklkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2V2ZXJpdHkgc2V2KTsKICAgIElFeGNlcHRpb24gJmFwcGVuZFRleHRVbmlD
aGFyKGNvbnN0IFVuaUNoYXIqIGVycm9yVGV4dCk7CiAgICBJRXhjZXB0aW9uICZzZXRUZXh0VW5p
Q2hhcihjb25zdCBVbmlDaGFyKiBlcnJvclRleHQpOwogICAgY29uc3QgVW5pQ2hhciAqdGV4dFVu
aUNoYXIoaW9jOjp1bnVtZXJpY190IGluZGV4RnJvbVRvcCA9IDApIGNvbnN0OwogICAgY29uc3Qg
VW5pQ2hhciAqbmFtZVVuaUNoYXIoKSBjb25zdDsKICAgIHN0YXRpYyB2b2lkIGFzc2VydFBhcmFt
ZXRlclVuaUNoYXIoY29uc3QgVW5pQ2hhciogZXhjZXB0aW9uVGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlv
bik7CgogICAgSUV4Y2VwdGlvbkRhdGEgKmZEYXRhOwogICAgZnJpZW5kIGNsYXNzICAgSUV4Y2Vw
dGlvbjo6VHJhY2VGbjsKfTsKCmNsYXNzICAgSUJhc2VFcnJvckluZm8gewpwdWJsaWM6CgogCiAg
ICBJQmFzZUVycm9ySW5mbygpOwogICAgdmlydHVhbCB+SUJhc2VFcnJvckluZm8oKTsKCiAKCgog
ICAgdmlydHVhbCBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0OwoKCiAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIgKnRleHQoKSBjb25zdCA9IDA7CiAgICB2aXJ0dWFsIGNvbnN0IGlvYzo6dW5pY2hh
cl90ICp0ZXh0VygpIGNvbnN0OwoKICAgIHZpcnR1YWwgaW9jOjp1bnVtZXJpY190IGVycm9ySWQo
KSBjb25zdCA9IDA7CgogICAgdmlydHVhbCBib29sIGlzQXZhaWxhYmxlKCkgY29uc3QgPSAwOwoK
ICAgIGVudW0gRXhjZXB0aW9uVHlwZSB7CiAgICAgICAgYWNjZXNzRXJyb3IsCiAgICAgICAgZGV2
aWNlRXJyb3IsCiAgICAgICAgaW52YWxpZFBhcmFtZXRlciwKICAgICAgICBpbnZhbGlkUmVxdWVz
dCwKICAgICAgICBvdXRPZlN5c3RlbVJlc291cmNlLAogICAgICAgIG91dE9mV2luZG93UmVzb3Vy
Y2UsCiAgICAgICAgb3V0T2ZNZW1vcnksCiAgICAgICAgcmVzb3VyY2VFeGhhdXN0ZWQKICAgIH07
CgogCiAgICB2b2lkIHRocm93RXJyb3IoY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25UeXBlIG5hbWUgPSBhY2Nlc3NFcnJvciwK
ICAgICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZlcml0eSA9IElFeGNl
cHRpb246OnJlY292ZXJhYmxlLAogICAgICAgICAgICAgICAgICAgIElFeGNlcHRpb246OkVycm9y
Q29kZUdyb3VwIGVycm9yR3JvdXAgPQogICAgICAgICAgICAgICAgICAgIElFeGNlcHRpb246OmJh
c2VMaWJyYXJ5KTsKCiAgICB2b2lkIHRocm93RXJyb3JXKGNvbnN0IElFeGNlcHRpb25Mb2NhdGlv
biYgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblR5cGUgbmFtZSA9IGFj
Y2Vzc0Vycm9yLAogICAgICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZl
cml0eSA9IElFeGNlcHRpb246OnJlY292ZXJhYmxlLAogICAgICAgICAgICAgICAgICAgICBJRXhj
ZXB0aW9uOjpFcnJvckNvZGVHcm91cCBlcnJvckdyb3VwID0KICAgICAgICAgICAgICAgICAgICAg
SUV4Y2VwdGlvbjo6YmFzZUxpYnJhcnkpOwpwcml2YXRlOgogICAgY29uc3QgVW5pQ2hhciAqdGV4
dFVuaUNoYXIoKSBjb25zdDsKCiAgICBtdXRhYmxlCgogICAgSVNpbXBsZVRleHQgKmZEYXRhOwp9
OyAgCgoKCnR5cGVkZWYgSUJhc2VFcnJvckluZm8gSUVycm9ySW5mbzsKCgoKY2xhc3MgICBJU3lz
dGVtRXJyb3JJbmZvIDogcHVibGljIElCYXNlRXJyb3JJbmZvCnsKcHVibGljOgogCiAgICBJU3lz
dGVtRXJyb3JJbmZvKGlvYzo6dW51bWVyaWNfdCBzeXN0ZW1FcnJvcklkKTsKICAgIElTeXN0ZW1F
cnJvckluZm8oaW9jOjp1bnVtZXJpY190IHN5c3RlbUVycm9ySWQsCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHN5c3RlbUZ1bmN0aW9uTmFtZSk7CiAgICBJU3lzdGVtRXJyb3JJbmZv
KGlvYzo6dW51bWVyaWNfdCBzeXN0ZW1FcnJvcklkLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBpb2M6OnVuaWNoYXJfdCogc3lzdGVtRnVuY3Rpb25OYW1lKTsKCiAgICB2aXJ0dWFsIH5JU3lz
dGVtRXJyb3JJbmZvKCk7CgogCgogICAgdmlydHVhbCBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNv
bnN0OwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnRleHQoKSBjb25zdDsKICAgIHZpcnR1YWwg
Y29uc3QgaW9jOjp1bmljaGFyX3QgKnRleHRXKCkgY29uc3Q7CiAgICB2aXJ0dWFsIGlvYzo6dW51
bWVyaWNfdCBlcnJvcklkKCkgY29uc3Q7CiAgICB2aXJ0dWFsIGJvb2wgaXNBdmFpbGFibGUoKSBj
b25zdDsKCiAKICAgIHN0YXRpYyB2b2lkIHRocm93U3lzdGVtRXJyb3IoaW9jOjp1bnVtZXJpY190
IHN5c3RlbUVycm9ySWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSUJhc2VFcnJvckluZm86OkV4Y2VwdGlvblR5cGUgbmFtZSA9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzc0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZlcml0eSA9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElFeGNlcHRpb246OnJlY292ZXJhYmxlKTsKCiAgICBzdGF0aWMgdm9p
ZCB0aHJvd1N5c3RlbUVycm9yVyhpb2M6OnVudW1lcmljX3Qgc3lzdGVtRXJyb3JJZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBmdW5jdGlv
bk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJRXhjZXB0aW9u
TG9jYXRpb24mIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJh
c2VFcnJvckluZm86OkV4Y2VwdGlvblR5cGUgbmFtZSA9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY2Nlc3NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElFeGNlcHRpb246OlNldmVyaXR5IHNldmVyaXR5ID0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElFeGNlcHRpb246OnJlY292ZXJhYmxlKTsKCnByaXZhdGU6CiAgICBJU3lzdGVt
RXJyb3JJbmZvKGNvbnN0IElTeXN0ZW1FcnJvckluZm8mIGVycm9ySW5mb3JtYXRpb24pOwogICAg
SVN5c3RlbUVycm9ySW5mbyAmb3BlcmF0b3I9KGNvbnN0IElTeXN0ZW1FcnJvckluZm8mIGVycm9y
SW5mb3JtYXRpb24pOwogICAgc3RhdGljIHZvaWQgdGhyb3dTeXN0ZW1FcnJvclVuaUNoYXIoaW9j
Ojp1bnVtZXJpY190IHN5c3RlbUVycm9ySWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVbmlDaGFyKiBmdW5jdGlvbk5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJRXhjZXB0aW9uTG9jYXRpb24mIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJhc2VFcnJvckluZm86
OkV4Y2VwdGlvblR5cGUgbmFtZSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElFeGNlcHRpb246OlNldmVyaXR5IHNldmVyaXR5ID0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElFeGNlcHRpb246OnJlY292ZXJhYmxlKTsKICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGhVbmlDaGFyKGlvYzo6dW51bWVyaWNfdCBpZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVuaUNoYXIgKmZ1bmN0aW9uX25hbWUpOwogICAgY29uc3QgVW5pQ2hh
ciAqdGV4dFVuaUNoYXIoKSBjb25zdDsKICAgIElTeXN0ZW1FcnJvckluZm9EYXRhICpmRGF0YTsK
fTsgIAoKY2xhc3MgICBJQ0xpYkVycm9ySW5mbyA6IHB1YmxpYyBJQmFzZUVycm9ySW5mbwp7CnB1
YmxpYzoKIAogICAgSUNMaWJFcnJvckluZm8oKTsKICAgIElDTGliRXJyb3JJbmZvKGNvbnN0IGNo
YXIqIENMaWJGdW5jdGlvbk5hbWUpOwogIAoKCgogICAgSUNMaWJFcnJvckluZm8oY29uc3QgaW9j
Ojp1bmljaGFyX3QqIENMaWJGdW5jdGlvbk5hbWUpOwoKICAgIHZpcnR1YWwgfklDTGliRXJyb3JJ
bmZvKCk7CgogCgogICAgdmlydHVhbCBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0OwoKCiAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnRleHQoKSBjb25zdDsKICAgIHZpcnR1YWwgY29uc3QgaW9j
Ojp1bmljaGFyX3QgKnRleHRXKCkgY29uc3Q7CgogICAgdmlydHVhbCBpb2M6OnVudW1lcmljX3Qg
ZXJyb3JJZCgpIGNvbnN0OwoKICAgIHZpcnR1YWwgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0OwoK
IAogICAgc3RhdGljIHZvaWQgdGhyb3dDTGliRXJyb3IoY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9u
JiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZv
OjpFeGNlcHRpb25UeXBlIG5hbWUgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ZXNzRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpTZXZl
cml0eSBzZXZlcml0eSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRXhjZXB0aW9u
OjpyZWNvdmVyYWJsZSk7CiAgICBzdGF0aWMgdm9pZCB0aHJvd0NMaWJFcnJvclcoY29uc3QgaW9j
Ojp1bmljaGFyX3QqIGZ1bmN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJRXhjZXB0aW9uTG9jYXRpb24mIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjpFeGNlcHRpb25UeXBlIG5hbWUgPQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc0Vycm9yLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElFeGNlcHRpb246OlNldmVyaXR5IHNldmVyaXR5ID0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpyZWNvdmVyYWJsZSk7Cgpwcml2YXRlOgog
ICAgSUNMaWJFcnJvckluZm8oY29uc3QgSUNMaWJFcnJvckluZm8mIGVycm9ySW5mb3JtYXRpb24p
OwogICAgSUNMaWJFcnJvckluZm8gJm9wZXJhdG9yPShjb25zdCBJQ0xpYkVycm9ySW5mbyYgZXJy
b3JJbmZvcm1hdGlvbik7CiAgICB2b2lkIGluaXRpYWxpemVXaXRoVW5pQ2hhcihjb25zdCBVbmlD
aGFyICpmdW5jdGlvbl9uYW1lKTsKICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDaGFyKGNvbnN0IGNo
YXIgKmZ1bmN0aW9uX25hbWUpOwogICAgY29uc3QgVW5pQ2hhciAqdGV4dFVuaUNoYXIoKSBjb25z
dDsKCiAgICBJQ0xpYkVycm9ySW5mb0RhdGEgKmZEYXRhOwp9OwoKY2xhc3MgICAgSUFjY2Vzc0Vy
cm9yICA6IHB1YmxpYyAgSUV4Y2VwdGlvbiAgeyBwdWJsaWM6ICBJQWNjZXNzRXJyb3IgKGNvbnN0
IGNoYXIqIGEsIGlvYzo6dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246
OnVucmVjb3ZlcmFibGUpIDogIElFeGNlcHRpb24gKGEsIGIsIGMpIHt9ICBJQWNjZXNzRXJyb3Ig
KGNvbnN0IGlvYzo6dW5pY2hhcl90KiBhLCBpb2M6OnVudW1lcmljX3QgYiA9IDAsIFNldmVyaXR5
IGMgPSBJRXhjZXB0aW9uOjp1bnJlY292ZXJhYmxlKSA6ICBJRXhjZXB0aW9uIChhLCBiLCBjKSB7
fSB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiAoIklBY2Nlc3NFcnJv
ciIpOyB9IHZpcnR1YWwgY29uc3QgaW9jOjp1bmljaGFyX3QqIG5hbWVXKCkgY29uc3QgeyByZXR1
cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopTCJJQWNjZXNzRXJyb3IiOyB9IHZpcnR1YWwgfiBJ
QWNjZXNzRXJyb3IgKCkge30gIElBY2Nlc3NFcnJvciAoY29uc3QgIElBY2Nlc3NFcnJvciAgJmEp
IDogIElFeGNlcHRpb24gKGEpIHt9cHJpdmF0ZTogIElBY2Nlc3NFcnJvciAgJm9wZXJhdG9yID0o
Y29uc3QgIElBY2Nlc3NFcnJvciAgJik7fSA7CmNsYXNzICAgIElBc3NlcnRpb25GYWlsdXJlICA6
IHB1YmxpYyAgSUV4Y2VwdGlvbiAgeyBwdWJsaWM6ICBJQXNzZXJ0aW9uRmFpbHVyZSAoY29uc3Qg
Y2hhciogYSwgaW9jOjp1bnVtZXJpY190IGIgPSAwLCBTZXZlcml0eSBjID0gSUV4Y2VwdGlvbjo6
dW5yZWNvdmVyYWJsZSkgOiAgSUV4Y2VwdGlvbiAoYSwgYiwgYykge30gIElBc3NlcnRpb25GYWls
dXJlIChjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwgaW9jOjp1bnVtZXJpY190IGIgPSAwLCBTZXZl
cml0eSBjID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSkgOiAgSUV4Y2VwdGlvbiAoYSwgYiwg
Yykge30gdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKCJJQXNzZXJ0
aW9uRmFpbHVyZSIpOyB9IHZpcnR1YWwgY29uc3QgaW9jOjp1bmljaGFyX3QqIG5hbWVXKCkgY29u
c3QgeyByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopTCJJQXNzZXJ0aW9uRmFpbHVyZSI7
IH0gdmlydHVhbCB+IElBc3NlcnRpb25GYWlsdXJlICgpIHt9ICBJQXNzZXJ0aW9uRmFpbHVyZSAo
Y29uc3QgIElBc3NlcnRpb25GYWlsdXJlICAmYSkgOiAgSUV4Y2VwdGlvbiAoYSkge31wcml2YXRl
OiAgSUFzc2VydGlvbkZhaWx1cmUgICZvcGVyYXRvciA9KGNvbnN0ICBJQXNzZXJ0aW9uRmFpbHVy
ZSAgJik7fSA7CmNsYXNzICAgIElEZXZpY2VFcnJvciAgOiBwdWJsaWMgIElFeGNlcHRpb24gIHsg
cHVibGljOiAgSURldmljZUVycm9yIChjb25zdCBjaGFyKiBhLCBpb2M6OnVudW1lcmljX3QgYiA9
IDAsIFNldmVyaXR5IGMgPSBJRXhjZXB0aW9uOjp1bnJlY292ZXJhYmxlKSA6ICBJRXhjZXB0aW9u
IChhLCBiLCBjKSB7fSAgSURldmljZUVycm9yIChjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwgaW9j
Ojp1bnVtZXJpY190IGIgPSAwLCBTZXZlcml0eSBjID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJs
ZSkgOiAgSUV4Y2VwdGlvbiAoYSwgYiwgYykge30gdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gKCJJRGV2aWNlRXJyb3IiKTsgfSB2aXJ0dWFsIGNvbnN0IGlvYzo6dW5p
Y2hhcl90KiBuYW1lVygpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNoYXJfdCAqKUwi
SURldmljZUVycm9yIjsgfSB2aXJ0dWFsIH4gSURldmljZUVycm9yICgpIHt9ICBJRGV2aWNlRXJy
b3IgKGNvbnN0ICBJRGV2aWNlRXJyb3IgICZhKSA6ICBJRXhjZXB0aW9uIChhKSB7fXByaXZhdGU6
ICBJRGV2aWNlRXJyb3IgICZvcGVyYXRvciA9KGNvbnN0ICBJRGV2aWNlRXJyb3IgICYpO30gOwpj
bGFzcyAgICBJSW52YWxpZFBhcmFtZXRlciAgOiBwdWJsaWMgIElFeGNlcHRpb24gIHsgcHVibGlj
OiAgSUludmFsaWRQYXJhbWV0ZXIgKGNvbnN0IGNoYXIqIGEsIGlvYzo6dW51bWVyaWNfdCBiID0g
MCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElFeGNlcHRpb24g
KGEsIGIsIGMpIHt9ICBJSW52YWxpZFBhcmFtZXRlciAoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEs
IGlvYzo6dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3Zl
cmFibGUpIDogIElFeGNlcHRpb24gKGEsIGIsIGMpIHt9IHZpcnR1YWwgY29uc3QgY2hhciogbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICgiSUludmFsaWRQYXJhbWV0ZXIiKTsgfSB2aXJ0dWFsIGNvbnN0
IGlvYzo6dW5pY2hhcl90KiBuYW1lVygpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNo
YXJfdCAqKUwiSUludmFsaWRQYXJhbWV0ZXIiOyB9IHZpcnR1YWwgfiBJSW52YWxpZFBhcmFtZXRl
ciAoKSB7fSAgSUludmFsaWRQYXJhbWV0ZXIgKGNvbnN0ICBJSW52YWxpZFBhcmFtZXRlciAgJmEp
IDogIElFeGNlcHRpb24gKGEpIHt9cHJpdmF0ZTogIElJbnZhbGlkUGFyYW1ldGVyICAmb3BlcmF0
b3IgPShjb25zdCAgSUludmFsaWRQYXJhbWV0ZXIgICYpO30gOwpjbGFzcyAgICBJSW52YWxpZFJl
cXVlc3QgIDogcHVibGljICBJRXhjZXB0aW9uICB7IHB1YmxpYzogIElJbnZhbGlkUmVxdWVzdCAo
Y29uc3QgY2hhciogYSwgaW9jOjp1bnVtZXJpY190IGIgPSAwLCBTZXZlcml0eSBjID0gSUV4Y2Vw
dGlvbjo6dW5yZWNvdmVyYWJsZSkgOiAgSUV4Y2VwdGlvbiAoYSwgYiwgYykge30gIElJbnZhbGlk
UmVxdWVzdCAoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGlvYzo6dW51bWVyaWNfdCBiID0gMCwg
U2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElFeGNlcHRpb24gKGEs
IGIsIGMpIHt9IHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuICgiSUlu
dmFsaWRSZXF1ZXN0Iik7IH0gdmlydHVhbCBjb25zdCBpb2M6OnVuaWNoYXJfdCogbmFtZVcoKSBj
b25zdCB7IHJldHVybiAoY29uc3QgaW9jOjp1bmljaGFyX3QgKilMIklJbnZhbGlkUmVxdWVzdCI7
IH0gdmlydHVhbCB+IElJbnZhbGlkUmVxdWVzdCAoKSB7fSAgSUludmFsaWRSZXF1ZXN0IChjb25z
dCAgSUludmFsaWRSZXF1ZXN0ICAmYSkgOiAgSUV4Y2VwdGlvbiAoYSkge31wcml2YXRlOiAgSUlu
dmFsaWRSZXF1ZXN0ICAmb3BlcmF0b3IgPShjb25zdCAgSUludmFsaWRSZXF1ZXN0ICAmKTt9IDsK
Y2xhc3MgICAgSVJlc291cmNlRXhoYXVzdGVkICA6IHB1YmxpYyAgSUV4Y2VwdGlvbiAgeyBwdWJs
aWM6ICBJUmVzb3VyY2VFeGhhdXN0ZWQgKGNvbnN0IGNoYXIqIGEsIGlvYzo6dW51bWVyaWNfdCBi
ID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElFeGNlcHRp
b24gKGEsIGIsIGMpIHt9ICBJUmVzb3VyY2VFeGhhdXN0ZWQgKGNvbnN0IGlvYzo6dW5pY2hhcl90
KiBhLCBpb2M6OnVudW1lcmljX3QgYiA9IDAsIFNldmVyaXR5IGMgPSBJRXhjZXB0aW9uOjp1bnJl
Y292ZXJhYmxlKSA6ICBJRXhjZXB0aW9uIChhLCBiLCBjKSB7fSB2aXJ0dWFsIGNvbnN0IGNoYXIq
IG5hbWUoKSBjb25zdCB7IHJldHVybiAoIklSZXNvdXJjZUV4aGF1c3RlZCIpOyB9IHZpcnR1YWwg
Y29uc3QgaW9jOjp1bmljaGFyX3QqIG5hbWVXKCkgY29uc3QgeyByZXR1cm4gKGNvbnN0IGlvYzo6
dW5pY2hhcl90ICopTCJJUmVzb3VyY2VFeGhhdXN0ZWQiOyB9IHZpcnR1YWwgfiBJUmVzb3VyY2VF
eGhhdXN0ZWQgKCkge30gIElSZXNvdXJjZUV4aGF1c3RlZCAoY29uc3QgIElSZXNvdXJjZUV4aGF1
c3RlZCAgJmEpIDogIElFeGNlcHRpb24gKGEpIHt9cHJpdmF0ZTogIElSZXNvdXJjZUV4aGF1c3Rl
ZCAgJm9wZXJhdG9yID0oY29uc3QgIElSZXNvdXJjZUV4aGF1c3RlZCAgJik7fSA7CmNsYXNzICAg
IElPdXRPZk1lbW9yeSAgOiBwdWJsaWMgIElSZXNvdXJjZUV4aGF1c3RlZCAgeyBwdWJsaWM6ICBJ
T3V0T2ZNZW1vcnkgKGNvbnN0IGNoYXIqIGEsIGlvYzo6dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJp
dHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElSZXNvdXJjZUV4aGF1c3RlZCAo
YSwgYiwgYykge30gIElPdXRPZk1lbW9yeSAoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGlvYzo6
dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUp
IDogIElSZXNvdXJjZUV4aGF1c3RlZCAoYSwgYiwgYykge30gdmlydHVhbCBjb25zdCBjaGFyKiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gKCJJT3V0T2ZNZW1vcnkiKTsgfSB2aXJ0dWFsIGNvbnN0IGlv
Yzo6dW5pY2hhcl90KiBuYW1lVygpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNoYXJf
dCAqKUwiSU91dE9mTWVtb3J5IjsgfSB2aXJ0dWFsIH4gSU91dE9mTWVtb3J5ICgpIHt9ICBJT3V0
T2ZNZW1vcnkgKGNvbnN0ICBJT3V0T2ZNZW1vcnkgICZhKSA6ICBJUmVzb3VyY2VFeGhhdXN0ZWQg
KGEpIHt9cHJpdmF0ZTogIElPdXRPZk1lbW9yeSAgJm9wZXJhdG9yID0oY29uc3QgIElPdXRPZk1l
bW9yeSAgJik7fSA7CmNsYXNzICAgIElPdXRPZlN5c3RlbVJlc291cmNlICA6IHB1YmxpYyAgSVJl
c291cmNlRXhoYXVzdGVkICB7IHB1YmxpYzogIElPdXRPZlN5c3RlbVJlc291cmNlIChjb25zdCBj
aGFyKiBhLCBpb2M6OnVudW1lcmljX3QgYiA9IDAsIFNldmVyaXR5IGMgPSBJRXhjZXB0aW9uOjp1
bnJlY292ZXJhYmxlKSA6ICBJUmVzb3VyY2VFeGhhdXN0ZWQgKGEsIGIsIGMpIHt9ICBJT3V0T2ZT
eXN0ZW1SZXNvdXJjZSAoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGlvYzo6dW51bWVyaWNfdCBi
ID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElSZXNvdXJj
ZUV4aGF1c3RlZCAoYSwgYiwgYykge30gdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gKCJJT3V0T2ZTeXN0ZW1SZXNvdXJjZSIpOyB9IHZpcnR1YWwgY29uc3QgaW9jOjp1
bmljaGFyX3QqIG5hbWVXKCkgY29uc3QgeyByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICop
TCJJT3V0T2ZTeXN0ZW1SZXNvdXJjZSI7IH0gdmlydHVhbCB+IElPdXRPZlN5c3RlbVJlc291cmNl
ICgpIHt9ICBJT3V0T2ZTeXN0ZW1SZXNvdXJjZSAoY29uc3QgIElPdXRPZlN5c3RlbVJlc291cmNl
ICAmYSkgOiAgSVJlc291cmNlRXhoYXVzdGVkIChhKSB7fXByaXZhdGU6ICBJT3V0T2ZTeXN0ZW1S
ZXNvdXJjZSAgJm9wZXJhdG9yID0oY29uc3QgIElPdXRPZlN5c3RlbVJlc291cmNlICAmKTt9IDsK
Y2xhc3MgICAgSU91dE9mV2luZG93UmVzb3VyY2UgIDogcHVibGljICBJUmVzb3VyY2VFeGhhdXN0
ZWQgIHsgcHVibGljOiAgSU91dE9mV2luZG93UmVzb3VyY2UgKGNvbnN0IGNoYXIqIGEsIGlvYzo6
dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUp
IDogIElSZXNvdXJjZUV4aGF1c3RlZCAoYSwgYiwgYykge30gIElPdXRPZldpbmRvd1Jlc291cmNl
IChjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwgaW9jOjp1bnVtZXJpY190IGIgPSAwLCBTZXZlcml0
eSBjID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSkgOiAgSVJlc291cmNlRXhoYXVzdGVkIChh
LCBiLCBjKSB7fSB2aXJ0dWFsIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiAoIklP
dXRPZldpbmRvd1Jlc291cmNlIik7IH0gdmlydHVhbCBjb25zdCBpb2M6OnVuaWNoYXJfdCogbmFt
ZVcoKSBjb25zdCB7IHJldHVybiAoY29uc3QgaW9jOjp1bmljaGFyX3QgKilMIklPdXRPZldpbmRv
d1Jlc291cmNlIjsgfSB2aXJ0dWFsIH4gSU91dE9mV2luZG93UmVzb3VyY2UgKCkge30gIElPdXRP
ZldpbmRvd1Jlc291cmNlIChjb25zdCAgSU91dE9mV2luZG93UmVzb3VyY2UgICZhKSA6ICBJUmVz
b3VyY2VFeGhhdXN0ZWQgKGEpIHt9cHJpdmF0ZTogIElPdXRPZldpbmRvd1Jlc291cmNlICAmb3Bl
cmF0b3IgPShjb25zdCAgSU91dE9mV2luZG93UmVzb3VyY2UgICYpO30gOwpjbGFzcyAgICBJRGVj
aW1hbERhdGFFcnJvciAgOiBwdWJsaWMgIElFeGNlcHRpb24gIHsgcHVibGljOiAgSURlY2ltYWxE
YXRhRXJyb3IgKGNvbnN0IGNoYXIqIGEsIGlvYzo6dW51bWVyaWNfdCBiID0gMCwgU2V2ZXJpdHkg
YyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElFeGNlcHRpb24gKGEsIGIsIGMpIHt9
ICBJRGVjaW1hbERhdGFFcnJvciAoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGlvYzo6dW51bWVy
aWNfdCBiID0gMCwgU2V2ZXJpdHkgYyA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpIDogIElF
eGNlcHRpb24gKGEsIGIsIGMpIHt9IHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsg
cmV0dXJuICgiSURlY2ltYWxEYXRhRXJyb3IiKTsgfSB2aXJ0dWFsIGNvbnN0IGlvYzo6dW5pY2hh
cl90KiBuYW1lVygpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNoYXJfdCAqKUwiSURl
Y2ltYWxEYXRhRXJyb3IiOyB9IHZpcnR1YWwgfiBJRGVjaW1hbERhdGFFcnJvciAoKSB7fSAgSURl
Y2ltYWxEYXRhRXJyb3IgKGNvbnN0ICBJRGVjaW1hbERhdGFFcnJvciAgJmEpIDogIElFeGNlcHRp
b24gKGEpIHt9cHJpdmF0ZTogIElEZWNpbWFsRGF0YUVycm9yICAmb3BlcmF0b3IgPShjb25zdCAg
SURlY2ltYWxEYXRhRXJyb3IgICYpO30gOwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkK
CgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQoj
cHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgoKCnZvaWQgIApJ
RXhjZXB0X19hc3NlcnRQYXJhbWV0ZXIoY29uc3QgY2hhciogYXNzZXJ0RXhwcmVzc2lvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRpb24p
OwoKdm9pZCAgCklFeGNlcHRfX2Fzc2VydFBhcmFtZXRlcihjb25zdCBVbmlDaGFyKiBhc3NlcnRF
eHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0
aW9uJiBsb2NhdGlvbik7Cgp2b2lkICAKSUV4Y2VwdF9fYXNzZXJ0U3RhdGUoY29uc3QgVW5pQ2hh
ciogYXNzZXJ0RXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlv
bkxvY2F0aW9uJiBsb2NhdGlvbik7Cgp2b2lkICAKSUV4Y2VwdF9fYXNzZXJ0U3RhdGUoY29uc3Qg
Y2hhciogYXNzZXJ0RXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2Vw
dGlvbkxvY2F0aW9uJiBsb2NhdGlvbik7Cgp2b2lkICAKSUV4Y2VwdF9fdGhyb3dMaWJyYXJ5RXJy
b3IoaW9jOjp1bnVtZXJpY190IG1lc3NhZ2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSUJhc2VFcnJvckluZm86OkV4Y2VwdGlvblR5cGUgbmFtZSA9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjppbnZhbGlkUmVxdWVzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSUV4Y2VwdGlvbjo6U2V2ZXJpdHkgc2V2ZXJpdHkgPQogICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpyZWNvdmVyYWJsZSk7Cgp2b2lkICAKSUV4Y2Vw
dF9fdGhyb3dMaWJyYXJ5RXJyb3IoaW9jOjp1bnVtZXJpY190IG1lc3NhZ2VJZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSUJhc2VFcnJvckluZm86OkV4Y2VwdGlvblR5cGUgbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSUV4Y2VwdGlvbjo6U2V2ZXJpdHkgc2V2ZXJp
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRleHQpOwoKdm9pZCAg
CklFeGNlcHRfX3Rocm93TGlicmFyeUVycm9yKGlvYzo6dW51bWVyaWNfdCBtZXNzYWdlSWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjpFeGNlcHRpb25U
eXBlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElFeGNlcHRpb246OlNldmVyaXR5
IHNldmVyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiB0ZXh0
KTsKCnZvaWQgIApJRXhjZXB0X190aHJvd0Vycm9yKGlvYzo6dW51bWVyaWNfdCBtZXNzYWdlSWQs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlRmlsZSwKICAgICAgICAgICAg
ICAgICAgICBJRXhjZXB0aW9uOjpFcnJvckNvZGVHcm91cCBlcnJvckdyb3VwLAogICAgICAgICAg
ICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjpFeGNlcHRpb25UeXBlIG5hbWUgPQogICAgICAgICAg
ICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjppbnZhbGlkUmVxdWVzdCwKICAgICAgICAgICAgICAg
ICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZlcml0eSA9IElFeGNlcHRpb246OnJlY292ZXJh
YmxlKTsKCnZvaWQgIApJRXhjZXB0X190aHJvd0Vycm9yKGlvYzo6dW51bWVyaWNfdCBtZXNzYWdl
SWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiBtZXNzYWdlRmlsZSwKICAgICAg
ICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpFcnJvckNvZGVHcm91cCBlcnJvckdyb3VwLAogICAg
ICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjpFeGNlcHRpb25UeXBlIG5hbWUgPQogICAg
ICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjppbnZhbGlkUmVxdWVzdCwKICAgICAgICAg
ICAgICAgICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZlcml0eSA9IElFeGNlcHRpb246OnJl
Y292ZXJhYmxlKTsKCnZvaWQgIApJRXhjZXB0X190aHJvd0Vycm9yKGlvYzo6dW51bWVyaWNfdCBt
ZXNzYWdlSWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0aW9uJiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlRmlsZSwKICAg
ICAgICAgICAgICAgICAgICBJRXhjZXB0aW9uOjpFcnJvckNvZGVHcm91cCBlcnJvckdyb3VwLAog
ICAgICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJbmZvOjpFeGNlcHRpb25UeXBlIG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgSUV4Y2VwdGlvbjo6U2V2ZXJpdHkgc2V2ZXJpdHksCiAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogc3Vic3RpdHV0aW9uVGV4dCk7Cgp2b2lkICAKSUV4Y2Vw
dF9fdGhyb3dFcnJvcihpb2M6OnVudW1lcmljX3QgbWVzc2FnZUlkLAogICAgICAgICAgICAgICAg
ICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pQ2hhciogbWVzc2FnZUZpbGUsCiAgICAgICAgICAgICAgICAgICAgSUV4Y2Vw
dGlvbjo6RXJyb3JDb2RlR3JvdXAgZXJyb3JHcm91cCwKICAgICAgICAgICAgICAgICAgICBJQmFz
ZUVycm9ySW5mbzo6RXhjZXB0aW9uVHlwZSBuYW1lLAogICAgICAgICAgICAgICAgICAgIElFeGNl
cHRpb246OlNldmVyaXR5IHNldmVyaXR5LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFVuaUNo
YXIqIHN1YnN0aXR1dGlvblRleHQpOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDU5MiAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5o
cHAiCgoKCgoKCgoKCgoKIAogCiMgNjE1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lleGNiYXNlLmhwcCIKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDY4MSAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiCgoKCgojIDY5
MyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhj
YmFzZS5ocHAiCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiMgMSAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5pbmwiIDEKCgoK
IAogCiAKIAogCiAKIAogCiAKIAoKaW5saW5lCklFeGNlcHRpb25Mb2NhdGlvbjo6SUV4Y2VwdGlv
bkxvY2F0aW9uKGNvbnN0IGlvYzo6dW5pY2hhcl90KiBmaWxlTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIGZ1bmN0aW9uTmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9jOjp1bnVtZXJpY190
IGxpbmVOdW1iZXIpCiAgICAgICAgOiBmRGF0YSgwKQp7CiAgICBpbml0aWFsaXplV2l0aFVuaUNo
YXIoKGNvbnN0IFVuaUNoYXIgKilmaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y29uc3QgVW5pQ2hhciAqKWZ1bmN0aW9uTmFtZSwgbGluZU51bWJlcik7Cn0KCmlubGluZQpjb25z
dCBpb2M6OnVuaWNoYXJfdCAqCklFeGNlcHRpb25Mb2NhdGlvbjo6ZmlsZU5hbWVXKCkgY29uc3QK
ewogICAgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNoYXJfdCAqKWZpbGVOYW1lVW5pQ2hhcigpOwp9
CgppbmxpbmUKY29uc3QgaW9jOjp1bmljaGFyX3QgKgpJRXhjZXB0aW9uTG9jYXRpb246OmZ1bmN0
aW9uTmFtZVcoKSBjb25zdAp7CiAgICByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopZnVu
Y3Rpb25OYW1lVW5pQ2hhcigpOwp9CgppbmxpbmUKSUV4Y2VwdGlvbjo6SUV4Y2VwdGlvbihjb25z
dCBpb2M6OnVuaWNoYXJfdCogdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBpb2M6OnVudW1l
cmljX3QgZXJyb3JJZCwKICAgICAgICAgICAgICAgICAgICAgICBTZXZlcml0eSBzZXYpCiAgICAg
ICAgOiBmRGF0YSgwKQp7CiAgICBpbml0aWFsaXplV2l0aFVuaUNoYXIoKGNvbnN0IFVuaUNoYXIg
Kil0ZXh0LCBlcnJvcklkLCBzZXYpOwp9CgppbmxpbmUKdm9pZApJRXhjZXB0aW9uOjpUcmFjZUZu
Ojp3cml0ZVcoY29uc3QgaW9jOjp1bmljaGFyX3QqIGJ1ZmZlcikKewogICAgd3JpdGVVbmlDaGFy
KChjb25zdCBVbmlDaGFyICopYnVmZmVyKTsKfQoKaW5saW5lCklFeGNlcHRpb24gJgpJRXhjZXB0
aW9uOjphcHBlbmRUZXh0Vyhjb25zdCBpb2M6OnVuaWNoYXJfdCogZXJyb3JUZXh0KSB7CiAgICBy
ZXR1cm4gYXBwZW5kVGV4dFVuaUNoYXIoKGNvbnN0IFVuaUNoYXIgKillcnJvclRleHQpOwp9Cgpp
bmxpbmUKSUV4Y2VwdGlvbiAmCklFeGNlcHRpb246OnNldFRleHRXKGNvbnN0IGlvYzo6dW5pY2hh
cl90KiBlcnJvclRleHQpIHsKICAgIHJldHVybiBzZXRUZXh0VW5pQ2hhcigoY29uc3QgVW5pQ2hh
ciAqKWVycm9yVGV4dCk7Cn0KCmlubGluZQpjb25zdCBpb2M6OnVuaWNoYXJfdCAqCklFeGNlcHRp
b246OnRleHRXKGlvYzo6dW51bWVyaWNfdCBpbmRleEZyb21Ub3ApIGNvbnN0IHsKICAgIHJldHVy
biAoY29uc3QgaW9jOjp1bmljaGFyX3QgKil0ZXh0VW5pQ2hhcihpbmRleEZyb21Ub3ApOwp9Cgpp
bmxpbmUKY29uc3QgaW9jOjp1bmljaGFyX3QgKgpJRXhjZXB0aW9uOjpuYW1lVygpIGNvbnN0IHsK
ICAgIHJldHVybiAoY29uc3QgaW9jOjp1bmljaGFyX3QgKiluYW1lVW5pQ2hhcigpOwp9Cgppbmxp
bmUKdm9pZApJRXhjZXB0aW9uOjphc3NlcnRQYXJhbWV0ZXJXKGNvbnN0IGlvYzo6dW5pY2hhcl90
KiBleGNlcHRpb25UZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNl
cHRpb25Mb2NhdGlvbiYgbG9jYXRpb24pCnsKICAgIGFzc2VydFBhcmFtZXRlclVuaUNoYXIoKGNv
bnN0IFVuaUNoYXIgKilleGNlcHRpb25UZXh0LCBsb2NhdGlvbik7Cn0KCmlubGluZQpjb25zdCBp
b2M6OnVuaWNoYXJfdCAqCklCYXNlRXJyb3JJbmZvOjp0ZXh0VygpIGNvbnN0CnsKICAgIHJldHVy
biAoY29uc3QgaW9jOjp1bmljaGFyX3QgKil0ZXh0VW5pQ2hhcigpOwp9CgppbmxpbmUKSVN5c3Rl
bUVycm9ySW5mbzo6SVN5c3RlbUVycm9ySW5mbyhpb2M6OnVudW1lcmljX3Qgc3lzdGVtRXJyb3JJ
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJf
dCogc3lzdGVtRnVuY3Rpb25OYW1lKQogICAgICAgIDogZkRhdGEoMCkKewogICAgaW5pdGlhbGl6
ZVdpdGhVbmlDaGFyKHN5c3RlbUVycm9ySWQsIChjb25zdCBVbmlDaGFyICopc3lzdGVtRnVuY3Rp
b25OYW1lKTsKfQoKaW5saW5lCmNvbnN0IGlvYzo6dW5pY2hhcl90ICoKSVN5c3RlbUVycm9ySW5m
bzo6dGV4dFcoKSBjb25zdAp7CiAgICByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopdGV4
dFVuaUNoYXIoKTsKfQoKaW5saW5lCnZvaWQKSVN5c3RlbUVycm9ySW5mbzo6dGhyb3dTeXN0ZW1F
cnJvclcoaW9jOjp1bnVtZXJpY190IHN5c3RlbUVycm9ySWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBmdW5jdGlvbk5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYg
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCYXNlRXJyb3JJ
bmZvOjpFeGNlcHRpb25UeXBlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElFeGNlcHRpb246OlNldmVyaXR5IHNldmVyaXR5KQp7CiAgICB0aHJvd1N5c3RlbUVycm9y
VW5pQ2hhcihzeXN0ZW1FcnJvcklkLCAoY29uc3QgVW5pQ2hhciAqKWZ1bmN0aW9uTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBuYW1lLCBzZXZlcml0eSk7Cn0KCmlu
bGluZQpJQ0xpYkVycm9ySW5mbzo6SUNMaWJFcnJvckluZm8oKQogICAgICAgIDogZkRhdGEoMCkK
ewogICAgaW5pdGlhbGl6ZVdpdGhDaGFyKDApOwp9CgppbmxpbmUKdm9pZCBJQ0xpYkVycm9ySW5m
bzo6dGhyb3dDTGliRXJyb3JXKGNvbnN0IGlvYzo6dW5pY2hhcl90ICpmdW5jdGlvbl9uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUV4Y2VwdGlvbkxvY2F0
aW9uICZsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCYXNl
RXJyb3JJbmZvOjpFeGNlcHRpb25UeXBlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRXhjZXB0aW9uOjpTZXZlcml0eSBzZXZlcml0eSkKewogICAgSUNMaWJFcnJv
ckluZm8gaW5mbyhmdW5jdGlvbl9uYW1lKTsKICAgIGluZm8udGhyb3dFcnJvclcobG9jYXRpb24s
IG5hbWUsIHNldmVyaXR5LCBJRXhjZXB0aW9uOjpDTGlicmFyeSk7Cn0KCmlubGluZQpJQ0xpYkVy
cm9ySW5mbzo6SUNMaWJFcnJvckluZm8oY29uc3QgaW9jOjp1bmljaGFyX3QgKmZ1bmN0aW9uX25h
bWUpCiAgICAgICAgOiBmRGF0YSgwKQp7CiAgICBpbml0aWFsaXplV2l0aFVuaUNoYXIoKGNvbnN0
IFVuaUNoYXIgKilmdW5jdGlvbl9uYW1lKTsKfQoKaW5saW5lCmNvbnN0IGlvYzo6dW5pY2hhcl90
ICoKSUNMaWJFcnJvckluZm86OnRleHRXKCkgY29uc3QKewogICAgcmV0dXJuIChjb25zdCBpb2M6
OnVuaWNoYXJfdCAqKXRleHRVbmlDaGFyKCk7Cn0KCgojIDcyMiAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiIDIKCiAKCiAKCgoK
CgoKIyA0MiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pYmFzZS5ocHAiIDIKCgogCgoKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoK
CgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSVN0cmluZzsKY2xhc3Mg
SU1lc3NhZ2VUZXh0OwpjbGFzcyBJQmFzZTsKCgppbmxpbmUgc3RkOjpvc3RyZWFtICYKICBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSAmYVN0cmVhbSwgY29uc3QgSUJhc2UgJmFuT2JqZWN0KTsKCgoK
CiAKCiAKCmNsYXNzICAgSUJhc2UKewpwdWJsaWM6CiAgICAgCgogICAgdHlwZWRlZiBib29sIEJv
b2xlYW47CgoKICAgICAKICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtZXNzYWdlRmlsZSggKTsKCiAg
ICBzdGF0aWMgdm9pZCBzZXRNZXNzYWdlRmlsZSAoIGNvbnN0IGNoYXIgKm1zZ0ZpbGVOYW1lICk7
CgogICAgc3RhdGljIElNZXNzYWdlVGV4dAogICAgbWVzc2FnZVRleHQoaW9jOjp1bnVtZXJpY190
IG1lc3NhZ2VJZCwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgdGV4dEluc2VydDEgPSAw
LAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogICB0ZXh0SW5zZXJ0MiA9IDAsCiAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiAgIHRleHRJbnNlcnQzID0gMCwKICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqICAgdGV4dEluc2VydDQgPSAwLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ICB0ZXh0SW5zZXJ0NSA9IDAsCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgIHRleHRJbnNl
cnQ2ID0gMCwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgdGV4dEluc2VydDcgPSAwLAog
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogICB0ZXh0SW5zZXJ0OCA9IDAsCiAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiAgIHRleHRJbnNlcnQ5ID0gMCApOwoKICAgICAKCiAgICBmcmllbmQg
aW5saW5lIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmYVN0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJQmFz
ZSAmYW5PYmplY3QpOwoKCgoKICAgIGNoYXIqIGFzVGV4dCgpIGNvbnN0OwoKICAgIElTdHJpbmcg
YXNTdHJpbmcoKSBjb25zdDsKCiAgICBJU3RyaW5nIGFzRGVidWdJbmZvKCkgY29uc3Q7CgogICAg
c3RydWN0IFZlcnNpb24KICAgIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYWpvcjsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBtaW5vcjsKICAgIH07CgogICAgc3RhdGljIFZlcnNpb24gdmVyc2lv
bigpOwoKcHJpdmF0ZToKICAgICAKfTsKCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoK
I3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAppbmxpbmUKCnN0ZDo6b3N0cmVhbSAm
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sIGNvbnN0IElCYXNlJiBhbk9iamVjdCkK
CgoKewogICAgY2hhciogcHN6VGV4dCA9IGFuT2JqZWN0LmFzVGV4dCgpOwogICAgYVN0cmVhbSA8
PCBwc3pUZXh0OwogICAgZGVsZXRlIHBzelRleHQ7CiAgICByZXR1cm4gYVN0cmVhbTsKfQogCgog
CiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0
b3JlKQogCgoKCiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pc3lub255bS5ocHAiIDEKIyAxMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3lub255bS5ocHAiCgoKCgoKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgog
CgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVS
X1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVt
YW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoK
CgoKCgoKIAoKIAoKCgogICAKCiAKCgoKCgoKCgoKCgp0eXBlZGVmIGJvb2wgSUJvb2xlYW47CgoK
CgoKICAgCiAKCgoKCgoKCgogICAgCgoKCgoKCgoKCgoKICAgCiAgZW51bSB7CiAgICAgIEZhbHNl
ID0gMCwKICAgICAgVHJ1ZSAgPSAxCiAgIH07CgoKCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKCgoK
CgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgog
CiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZv
KHJlc3RvcmUpCiAKCiAKCiMgMTg4ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2liYXNlLmhwcCIgMgoKCgogCgojIDMwICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRlLmhwcCIgMgoKIyAxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRzdHJtLmhw
cCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCgoKIAoKIAojcHJhZ21hIGlu
Zm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwp
CiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0Nf
TkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoK
IApjbGFzcyBJTVN0cmVhbWFibGU7CmNsYXNzIElUeXBlUmVwcmVzZW50YXRpb247CmNsYXNzIElT
dHJlYW1GaW5kZXI7CmNsYXNzIElTdHJlYW1GYWN0b3J5OwpjbGFzcyBJU3RyZWFtSU87CiAKCiAK
CmNsYXNzIElEYXRhU3RyZWFtCnsKcHVibGljOgogICAgfklEYXRhU3RyZWFtKCk7CgogICAgZW51
bSBFU3RyZWFtRW5jb2RpbmcKICAgIHsKICAgICAgICBrSW50ZXJvcGVyYWJsZUJpbmFyeSwKICAg
ICAgICBrUmF3QmluYXJ5LAogICAgICAgIGtEZWJ1ZwogICAgfTsKCiAgICBzdGF0aWMgSURhdGFT
dHJlYW0qIGNyZWF0ZU1lbW9yeVN0cmVhbShpbnQgZW5jb2RpbmcgPSBrSW50ZXJvcGVyYWJsZUJp
bmFyeSk7CgogICAgSVN0cmVhbUlPKiBzdHJlYW1JTygpIGNvbnN0OwoKICAgIHZvaWQgd3JpdGVC
eXRlKGNoYXIgc291cmNlKTsKICAgIHZvaWQgd3JpdGVTaG9ydChzaG9ydCBzb3VyY2UpOwogICAg
dm9pZCB3cml0ZUludChpbnQgc291cmNlKTsKICAgIHZvaWQgd3JpdGVMb25nKGxvbmcgc291cmNl
KTsKICAgIHZvaWQgd3JpdGVGbG9hdChmbG9hdCBzb3VyY2UpOwogICAgdm9pZCB3cml0ZURvdWJs
ZShkb3VibGUgc291cmNlKTsKCiAgICB2b2lkIHdyaXRlQm9vbChib29sIHNvdXJjZSk7CgoKICAg
IGNoYXIgICByZWFkQnl0ZSgpOwogICAgc2hvcnQgIHJlYWRTaG9ydCgpOwogICAgaW50ICAgIHJl
YWRJbnQoKTsKICAgIGxvbmcgICByZWFkTG9uZygpOwogICAgZmxvYXQgIHJlYWRGbG9hdCgpOwog
ICAgZG91YmxlIHJlYWREb3VibGUoKTsKCiAgICBib29sIHJlYWRCb29sKCk7CgoKICAgIHZvaWQg
d3JpdGVCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSk7CiAg
ICB2b2lkIHJlYWRCeXRlcyhjaGFyKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSk7CiAg
ICB2b2lkIHdyaXRlU2hvcnRzKGNvbnN0IHNob3J0KiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93
TWFueSk7CiAgICB2b2lkIHJlYWRTaG9ydHMoc2hvcnQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBo
b3dNYW55KTsKICAgIHZvaWQgd3JpdGVJbnRzKGNvbnN0IGludCogZGF0YSwgaW9jOjp1bnVtZXJp
Y190IGhvd01hbnkpOwogICAgdm9pZCByZWFkSW50cyhpbnQqIGRhdGEsIGlvYzo6dW51bWVyaWNf
dCBob3dNYW55KTsKICAgIHZvaWQgd3JpdGVMb25ncyhjb25zdCBsb25nKiBkYXRhLCBpb2M6OnVu
dW1lcmljX3QgaG93TWFueSk7CiAgICB2b2lkIHJlYWRMb25ncyhsb25nKiBkYXRhLCBpb2M6OnVu
dW1lcmljX3QgaG93TWFueSk7CiAgICB2b2lkIHdyaXRlRmxvYXRzKGNvbnN0IGZsb2F0KiBkYXRh
LCBpb2M6OnVudW1lcmljX3QgaG93TWFueSk7CiAgICB2b2lkIHJlYWRGbG9hdHMoZmxvYXQqIGRh
dGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KTsKICAgIHZvaWQgd3JpdGVEb3VibGVzKGNvbnN0
IGRvdWJsZSogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpOwogICAgdm9pZCByZWFkRG91
Ymxlcyhkb3VibGUqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KTsKCiAgICB2b2lkIHdy
aXRlQm9vbHMoY29uc3QgYm9vbCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpOwogICAg
dm9pZCByZWFkQm9vbHMoYm9vbCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpOwoKCiAg
ICB2b2lkIHJlc2V0KCk7CgogICAgdm9pZCBmbHVzaCgpOwoKcHJpdmF0ZToKICAgIElEYXRhU3Ry
ZWFtKCk7CiAgICBJRGF0YVN0cmVhbShjb25zdCBJRGF0YVN0cmVhbSYgb3RoZXIpOwoKICAgIGZy
aWVuZCBjbGFzcyBJU3RyZWFtRmFjdG9yeTsKICAgIElEYXRhU3RyZWFtKElTdHJlYW1JTyogc3Ry
ZWFtSU8pOwoKcHJpdmF0ZToKICAgIElTdHJlYW1JTyogIGZTdHJlYW1JTzsKfTsKCiAKCiAKCgoK
CgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoK
IAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWRhdHN0cm0uaW5sIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJtaW8u
aHBwIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKCiAKCiAKI3ByYWdtYSBp
bmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVM
KQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9D
X05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAK
CiAKY2xhc3MgSU1TdHJlYW1hYmxlOwpjbGFzcyBJTVJlZkNvdW50ZWQ7CmNsYXNzIElUeXBlUmVw
cmVzZW50YXRpb247CmNsYXNzIElTdHJlYW1GaW5kZXI7CmNsYXNzIElUeXBlTmFtZTsKY2xhc3Mg
SVN0cmVhbUNvbnRleHRGcmFtZTsKY2xhc3MgSURhdGFTdHJlYW07CmNsYXNzIElTdHJlYW1JbkZy
YW1lOwpjbGFzcyBJU3RyZWFtT3V0RnJhbWU7CmNsYXNzIElTdHJlYW1Db250ZXh0RnJhbWU7CmNs
YXNzIElTdHJlYW1hYmxlR2xvYmFsVGVtcGxhdGVIZWxwZXI7CiAKCiAKCmNsYXNzIElTdHJlYW1J
Twp7CnByb3RlY3RlZDoKICAgIElTdHJlYW1JTygpOwogICAgSVN0cmVhbUlPKGNvbnN0IElTdHJl
YW1JTyYgb3RoZXIpOwogICAgdmlydHVhbCB+SVN0cmVhbUlPKCk7CgogICAgZnJpZW5kIGNsYXNz
IElEYXRhU3RyZWFtOwogICAgIAogICAgIAogICAgIAogICAgIAogICAgdmlydHVhbCB2b2lkICAg
IHNldFN0cmVhbShJRGF0YVN0cmVhbSogZGF0YVN0cmVhbSkgPSAwOwoKICAgICAKICAgICAKICAg
ICAKICAgIHZpcnR1YWwgdm9pZCAgICByZXNldCgpID0gMDsKCiAgICAgCiAgICAgCiAgICAgCiAg
ICB2aXJ0dWFsIHZvaWQgICAgZmx1c2goKSA9IDA7CgogICAgIAogICAgIAogICAgIAogICAgIAog
ICAgdmlydHVhbCB2b2lkICAgIHdyaXRlQnl0ZShjaGFyIHNvdXJjZSkgPSAwOwogICAgdmlydHVh
bCB2b2lkICAgIHdyaXRlU2hvcnQoc2hvcnQgc291cmNlKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQg
ICAgd3JpdGVJbnQoaW50IHNvdXJjZSkgPSAwOwogICAgdmlydHVhbCB2b2lkICAgIHdyaXRlTG9u
Zyhsb25nIHNvdXJjZSkgPSAwOwogICAgdmlydHVhbCB2b2lkICAgIHdyaXRlRmxvYXQoZmxvYXQg
c291cmNlKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgICAgd3JpdGVEb3VibGUoZG91YmxlIHNvdXJj
ZSkgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZUJvb2woYm9vbCBzb3VyY2UpID0gMDsK
CiAgICAgCiAgICAgCiAgICAgCiAgICB2aXJ0dWFsIGNoYXIgICAgcmVhZEJ5dGUoKSA9IDA7CiAg
ICB2aXJ0dWFsIHNob3J0ICAgcmVhZFNob3J0KCkgPSAwOwogICAgdmlydHVhbCBpbnQgICAgIHJl
YWRJbnQoKSA9IDA7CiAgICB2aXJ0dWFsIGxvbmcgICAgcmVhZExvbmcoKSA9IDA7CiAgICB2aXJ0
dWFsIGZsb2F0ICAgcmVhZEZsb2F0KCkgPSAwOwogICAgdmlydHVhbCBkb3VibGUgIHJlYWREb3Vi
bGUoKSA9IDA7CgogICAgdmlydHVhbCBib29sICAgIHJlYWRCb29sKCkgPSAwOwoKICAgICAKICAg
ICAKICAgICAKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZUJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEs
IGlvYzo6dW51bWVyaWNfdCBob3dNYW55KSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgICAgcmVhZEJ5
dGVzKGNoYXIqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KSA9IDA7CiAgICB2aXJ0dWFs
IHZvaWQgICAgd3JpdGVTaG9ydHMoY29uc3Qgc2hvcnQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBo
b3dNYW55KSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgICAgcmVhZFNob3J0cyhzaG9ydCogZGF0YSwg
aW9jOjp1bnVtZXJpY190IGhvd01hbnkpID0gMDsKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZUlu
dHMoY29uc3QgaW50KiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSkgPSAwOwogICAgdmly
dHVhbCB2b2lkICAgIHJlYWRJbnRzKGludCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkp
ID0gMDsKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZUxvbmdzKGNvbnN0IGxvbmcqIGRhdGEsIGlv
Yzo6dW51bWVyaWNfdCBob3dNYW55KSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgICAgcmVhZExvbmdz
KGxvbmcqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KSA9IDA7CiAgICB2aXJ0dWFsIHZv
aWQgICAgd3JpdGVGbG9hdHMoY29uc3QgZmxvYXQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dN
YW55KSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgICAgcmVhZEZsb2F0cyhmbG9hdCogZGF0YSwgaW9j
Ojp1bnVtZXJpY190IGhvd01hbnkpID0gMDsKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZURvdWJs
ZXMoY29uc3QgZG91YmxlKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSkgPSAwOwogICAg
dmlydHVhbCB2b2lkICAgIHJlYWREb3VibGVzKGRvdWJsZSogZGF0YSwgaW9jOjp1bnVtZXJpY190
IGhvd01hbnkpID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgICAgd3JpdGVCb29scyhjb25zdCBib29s
KiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSkgPSAwOwogICAgdmlydHVhbCB2b2lkICAg
IHJlYWRCb29scyhib29sKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSkgPSAwOwoKCiAg
ICBmcmllbmQgY2xhc3MgSVN0cmVhbWFibGVHbG9iYWxUZW1wbGF0ZUhlbHBlcjsKICAgICAKICAg
ICAKICAgICAKICAgIHZpcnR1YWwgdm9pZCAgICB3cml0ZU9iamVjdChjb25zdCBJTVN0cmVhbWFi
bGUqIG9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJVHlwZVJl
cHJlc2VudGF0aW9uKiB0eXBlUmVwKSA9IDA7CiAgICB2aXJ0dWFsIElNU3RyZWFtYWJsZSogICBy
ZWFkT2JqZWN0KGNvbnN0IElTdHJlYW1GaW5kZXIqIGZpbmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlvbiogdHlwZVJlcCkg
PSAwOwogICAgdmlydHVhbCBib29sICAgIHdyaXRlQWxpYXNlZE9iamVjdChjb25zdCBJTVN0cmVh
bWFibGUqIG9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSU1SZWZDb3VudGVkKiByZWZDb3VudGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uKiB0eXBlUmVwKSA9IDA7CiAgICB2
aXJ0dWFsIGJvb2wgICAgcmVhZEFsaWFzZWRPYmplY3QoSU1TdHJlYW1hYmxlKiYgb2JqZWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUmVmQ291bnRlZComIHJlZkNv
dW50ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmVh
bUZpbmRlciogZmluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IElUeXBlUmVwcmVzZW50YXRpb24qIHR5cGVSZXApID0gMDsKCiAgICBmcmllbmQgY2xhc3Mg
SVN0cmVhbUluRnJhbWU7CiAgICBmcmllbmQgY2xhc3MgSVN0cmVhbU91dEZyYW1lOwogICAgIAog
ICAgIAogICAgIAogICAgdmlydHVhbCB2b2lkICAgIHdyaXRlQmVnaW5GcmFtZSgpID0gMDsKICAg
IHZpcnR1YWwgdm9pZCAgICB3cml0ZUVuZEZyYW1lKCkgPSAwOwogICAgdmlydHVhbCB2b2lkICAg
IHJlYWRCZWdpbkZyYW1lKCkgPSAwOwogICAgdmlydHVhbCB2b2lkICAgIHJlYWRFbmRGcmFtZSgp
ID0gMDsKICAgIHZpcnR1YWwgYm9vbCAgICBhdEVuZE9mRnJhbWUoKSA9IDA7CgogICAgZnJpZW5k
IGNsYXNzIElTdHJlYW1Db250ZXh0RnJhbWU7CiAgICAgCiAgICAgCiAgICAgCiAgICB2aXJ0dWFs
IGJvb2wgICAgZXN0YWJsaXNoQ29udGV4dCgpID0gMDsKICAgIHZpcnR1YWwgdm9pZCAgICBjbGVh
ckNvbnRleHQoKSA9IDA7CgogICAgIAogICAgIAogICAgIAogICAgc3RhdGljIElNU3RyZWFtYWJs
ZSogY3JlYXRlVW5pbml0aWFsaXplZChjb25zdCBJU3RyZWFtRmluZGVyKiBmaW5kZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElUeXBlTmFtZSYg
dHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElN
UmVmQ291bnRlZComIHJlZkNvdW50ZWQpOwogICAgc3RhdGljIGNvbnN0IElUeXBlUmVwcmVzZW50
YXRpb24qIGZpbmRUeXBlUmVwcmVzZW50YXRpb24KICAgIChjb25zdCBJU3RyZWFtRmluZGVyKiBm
aW5kZXIsIGNvbnN0IElUeXBlTmFtZSYgdHlwZU5hbWUpOwp9OwoKIAoKIAoKCgoKCgoKI3ByYWdt
YSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUp
CiAKCiAKCiMgMjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWRhdHN0cm0uaW5sIiAyCgogCgogCiAKIAppbmxpbmUKSVN0cmVhbUlPKgpJRGF0YVN0
cmVhbTo6c3RyZWFtSU8oKSBjb25zdAp7CiAgICAgICAgcmV0dXJuIGZTdHJlYW1JTzsKfQoKIAog
CiAKIAppbmxpbmUKdm9pZApJRGF0YVN0cmVhbTo6d3JpdGVCeXRlKGNoYXIgc291cmNlKQp7CiAg
ICAgICAgZlN0cmVhbUlPLT53cml0ZUJ5dGUoc291cmNlKTsKfQoKaW5saW5lCnZvaWQKSURhdGFT
dHJlYW06OndyaXRlU2hvcnQoc2hvcnQgc291cmNlKQp7CiAgICAgICAgZlN0cmVhbUlPLT53cml0
ZVNob3J0KHNvdXJjZSk7Cn0KCmlubGluZQp2b2lkCklEYXRhU3RyZWFtOjp3cml0ZUludChpbnQg
c291cmNlKQp7CiAgICAgICAgZlN0cmVhbUlPLT53cml0ZUludChzb3VyY2UpOwp9CgppbmxpbmUK
dm9pZApJRGF0YVN0cmVhbTo6d3JpdGVMb25nKGxvbmcgc291cmNlKQp7CiAgICAgICAgZlN0cmVh
bUlPLT53cml0ZUxvbmcoc291cmNlKTsKfQoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06OndyaXRl
RmxvYXQoZmxvYXQgc291cmNlKQp7CiAgICAgICAgZlN0cmVhbUlPLT53cml0ZUZsb2F0KHNvdXJj
ZSk7Cn0KCmlubGluZQp2b2lkCklEYXRhU3RyZWFtOjp3cml0ZURvdWJsZShkb3VibGUgc291cmNl
KQp7CiAgICAgICAgZlN0cmVhbUlPLT53cml0ZURvdWJsZShzb3VyY2UpOwp9CgoKaW5saW5lCnZv
aWQKSURhdGFTdHJlYW06OndyaXRlQm9vbChib29sIHNvdXJjZSkKewogICAgICAgIGZTdHJlYW1J
Ty0+d3JpdGVCb29sKHNvdXJjZSk7Cn0KCgogCiAKIAppbmxpbmUKY2hhcgpJRGF0YVN0cmVhbTo6
cmVhZEJ5dGUoKQp7CiAgICAgICAgcmV0dXJuIGZTdHJlYW1JTy0+cmVhZEJ5dGUoKTsKfQoKaW5s
aW5lCnNob3J0CklEYXRhU3RyZWFtOjpyZWFkU2hvcnQoKQp7CiAgICAgICAgcmV0dXJuIGZTdHJl
YW1JTy0+cmVhZFNob3J0KCk7Cn0KCmlubGluZQppbnQKSURhdGFTdHJlYW06OnJlYWRJbnQoKQp7
CiAgICAgICAgcmV0dXJuIGZTdHJlYW1JTy0+cmVhZEludCgpOwp9CgppbmxpbmUKbG9uZwpJRGF0
YVN0cmVhbTo6cmVhZExvbmcoKQp7CiAgICAgICAgcmV0dXJuIGZTdHJlYW1JTy0+cmVhZExvbmco
KTsKfQoKaW5saW5lCmZsb2F0CklEYXRhU3RyZWFtOjpyZWFkRmxvYXQoKQp7CiAgICAgICAgcmV0
dXJuIGZTdHJlYW1JTy0+cmVhZEZsb2F0KCk7Cn0KCmlubGluZQpkb3VibGUKSURhdGFTdHJlYW06
OnJlYWREb3VibGUoKQp7CiAgICAgICAgcmV0dXJuIGZTdHJlYW1JTy0+cmVhZERvdWJsZSgpOwp9
CgoKaW5saW5lCmJvb2wKSURhdGFTdHJlYW06OnJlYWRCb29sKCkKewogICAgICAgIHJldHVybiBm
U3RyZWFtSU8tPnJlYWRCb29sKCk7Cn0KCgogCiAKIAppbmxpbmUKdm9pZApJRGF0YVN0cmVhbTo6
d3JpdGVCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93TWFueSkKewog
ICAgICAgIGZTdHJlYW1JTy0+d3JpdGVCeXRlcyhkYXRhLCBob3dNYW55KTsKfQoKaW5saW5lCnZv
aWQKSURhdGFTdHJlYW06OnJlYWRCeXRlcyhjaGFyKiBkYXRhLCBpb2M6OnVudW1lcmljX3QgaG93
TWFueSkKewogICAgICAgIGZTdHJlYW1JTy0+cmVhZEJ5dGVzKGRhdGEsIGhvd01hbnkpOwp9Cgpp
bmxpbmUKdm9pZApJRGF0YVN0cmVhbTo6d3JpdGVTaG9ydHMoY29uc3Qgc2hvcnQqIGRhdGEsIGlv
Yzo6dW51bWVyaWNfdCBob3dNYW55KQp7CiAgICAgICAgZlN0cmVhbUlPLT53cml0ZVNob3J0cyhk
YXRhLCBob3dNYW55KTsKfQoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06OnJlYWRTaG9ydHMoc2hv
cnQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KQp7CiAgICAgICAgZlN0cmVhbUlPLT5y
ZWFkU2hvcnRzKGRhdGEsIGhvd01hbnkpOwp9CgppbmxpbmUKdm9pZApJRGF0YVN0cmVhbTo6d3Jp
dGVJbnRzKGNvbnN0IGludCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpCnsKICAgICAg
ICBmU3RyZWFtSU8tPndyaXRlSW50cyhkYXRhLCBob3dNYW55KTsKfQoKaW5saW5lCnZvaWQKSURh
dGFTdHJlYW06OnJlYWRJbnRzKGludCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpCnsK
ICAgICAgICBmU3RyZWFtSU8tPnJlYWRJbnRzKGRhdGEsIGhvd01hbnkpOwp9CgppbmxpbmUKdm9p
ZApJRGF0YVN0cmVhbTo6d3JpdGVMb25ncyhjb25zdCBsb25nKiBkYXRhLCBpb2M6OnVudW1lcmlj
X3QgaG93TWFueSkKewogICAgICAgIGZTdHJlYW1JTy0+d3JpdGVMb25ncyhkYXRhLCBob3dNYW55
KTsKfQoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06OnJlYWRMb25ncyhsb25nKiBkYXRhLCBpb2M6
OnVudW1lcmljX3QgaG93TWFueSkKewogICAgICAgIGZTdHJlYW1JTy0+cmVhZExvbmdzKGRhdGEs
IGhvd01hbnkpOwp9CgppbmxpbmUKdm9pZApJRGF0YVN0cmVhbTo6d3JpdGVGbG9hdHMoY29uc3Qg
ZmxvYXQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KQp7CiAgICAgICAgZlN0cmVhbUlP
LT53cml0ZUZsb2F0cyhkYXRhLCBob3dNYW55KTsKfQoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06
OnJlYWRGbG9hdHMoZmxvYXQqIGRhdGEsIGlvYzo6dW51bWVyaWNfdCBob3dNYW55KQp7CiAgICAg
ICAgZlN0cmVhbUlPLT5yZWFkRmxvYXRzKGRhdGEsIGhvd01hbnkpOwp9CgppbmxpbmUKdm9pZApJ
RGF0YVN0cmVhbTo6d3JpdGVEb3VibGVzKGNvbnN0IGRvdWJsZSogZGF0YSwgaW9jOjp1bnVtZXJp
Y190IGhvd01hbnkpCnsKICAgICAgICBmU3RyZWFtSU8tPndyaXRlRG91YmxlcyhkYXRhLCBob3dN
YW55KTsKfQoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06OnJlYWREb3VibGVzKGRvdWJsZSogZGF0
YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpCnsKICAgICAgICBmU3RyZWFtSU8tPnJlYWREb3Vi
bGVzKGRhdGEsIGhvd01hbnkpOwp9CgoKaW5saW5lCnZvaWQKSURhdGFTdHJlYW06OndyaXRlQm9v
bHMoY29uc3QgYm9vbCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpCnsKICAgICAgICBm
U3RyZWFtSU8tPndyaXRlQm9vbHMoZGF0YSwgaG93TWFueSk7Cn0KCmlubGluZQp2b2lkCklEYXRh
U3RyZWFtOjpyZWFkQm9vbHMoYm9vbCogZGF0YSwgaW9jOjp1bnVtZXJpY190IGhvd01hbnkpCnsK
ICAgICAgICBmU3RyZWFtSU8tPnJlYWRCb29scyhkYXRhLCBob3dNYW55KTsKfQoKCmlubGluZQp2
b2lkCklEYXRhU3RyZWFtOjpyZXNldCgpCnsKICAgICAgICBmU3RyZWFtSU8tPnJlc2V0KCk7Cn0K
CmlubGluZQp2b2lkCklEYXRhU3RyZWFtOjpmbHVzaCgpCnsKICAgICAgICBmU3RyZWFtSU8tPmZs
dXNoKCk7Cn0KCiAKCiMgMTU3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2lkYXRzdHJtLmhwcCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnc3RyZWFtLmhwcCIgMQoKCgogCiAKIAoKCgoK
CgoKCgoKCiAKIAogCiAKIAogCgogCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVw
b3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9y
ZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUp
CgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSURhdGFTdHJlYW07
CmNsYXNzIElNU3RyZWFtYWJsZTsKCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KElNU3RyZWFtYWJs
ZSYgYywgSURhdGFTdHJlYW0mIHMpOwppbmxpbmUgdm9pZCBvcGVyYXRvcjw8PShjaGFyJiBjLCBJ
RGF0YVN0cmVhbSYgcyk7CmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHNpZ25lZCBjaGFyJiBjLCBJ
RGF0YVN0cmVhbSYgcyk7CmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHVuc2lnbmVkIGNoYXImIGMs
IElEYXRhU3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3BlcmF0b3I8PD0oc2hvcnQmIGMsIElEYXRh
U3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3BlcmF0b3I8PD0odW5zaWduZWQgc2hvcnQmIGMsIElE
YXRhU3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3BlcmF0b3I8PD0oaW50JiBjLCBJRGF0YVN0cmVh
bSYgcyk7CmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHVuc2lnbmVkIGludCYgYywgSURhdGFTdHJl
YW0mIHMpOwppbmxpbmUgdm9pZCBvcGVyYXRvcjw8PShsb25nJiBjLCBJRGF0YVN0cmVhbSYgcyk7
CmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHVuc2lnbmVkIGxvbmcmIGMsIElEYXRhU3RyZWFtJiBz
KTsKaW5saW5lIHZvaWQgb3BlcmF0b3I8PD0oZmxvYXQmIGMsIElEYXRhU3RyZWFtJiBzKTsKaW5s
aW5lIHZvaWQgb3BlcmF0b3I8PD0oZG91YmxlJiBjLCBJRGF0YVN0cmVhbSYgcyk7CgppbmxpbmUg
dm9pZCBvcGVyYXRvcjw8PShib29sJiBjLCBJRGF0YVN0cmVhbSYgcyk7CgoKaW5saW5lIHZvaWQg
b3BlcmF0b3I+Pj0oY29uc3QgSU1TdHJlYW1hYmxlJiBvYmplY3QsIElEYXRhU3RyZWFtJiBzKTsK
aW5saW5lIHZvaWQgb3BlcmF0b3I+Pj0oY2hhciBjLCBJRGF0YVN0cmVhbSYgcyk7CmlubGluZSB2
b2lkIG9wZXJhdG9yPj49KHNpZ25lZCBjaGFyIGMsIElEYXRhU3RyZWFtJiBzKTsKaW5saW5lIHZv
aWQgb3BlcmF0b3I+Pj0odW5zaWduZWQgY2hhciBjLCBJRGF0YVN0cmVhbSYgcyk7CmlubGluZSB2
b2lkIG9wZXJhdG9yPj49KHNob3J0IGMsIElEYXRhU3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3Bl
cmF0b3I+Pj0odW5zaWduZWQgc2hvcnQgYywgSURhdGFTdHJlYW0mIHMpOwppbmxpbmUgdm9pZCBv
cGVyYXRvcj4+PShpbnQgYywgSURhdGFTdHJlYW0mIHMpOwppbmxpbmUgdm9pZCBvcGVyYXRvcj4+
PSh1bnNpZ25lZCBpbnQgYywgSURhdGFTdHJlYW0mIHMpOwppbmxpbmUgdm9pZCBvcGVyYXRvcj4+
PShsb25nIGMsIElEYXRhU3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3BlcmF0b3I+Pj0odW5zaWdu
ZWQgbG9uZyBjLCBJRGF0YVN0cmVhbSYgcyk7CmlubGluZSB2b2lkIG9wZXJhdG9yPj49KGZsb2F0
IGMsIElEYXRhU3RyZWFtJiBzKTsKaW5saW5lIHZvaWQgb3BlcmF0b3I+Pj0oZG91YmxlIGMsIElE
YXRhU3RyZWFtJiBzKTsKCmlubGluZSB2b2lkIG9wZXJhdG9yPj49KGJvb2wgYywgSURhdGFTdHJl
YW0mIHMpOwoKIAoKIAogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFt
ZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnc3RyZWFtLmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoK
CiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pZGF0c3RybS5ocHAiIDEKIyAxNjggIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWRhdHN0cm0uaHBwIgoKIyAyNiAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ3N0cmVhbS5pbmwi
IDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pbXN0cm1ibC5ocHAiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvdHlwZWlu
Zm8iIDEgMwogCiAKCgoKCiNwcmFnbWEgaW50ZXJmYWNlICJ0eXBlaW5mbyIKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvZXhjZXB0aW9uIiAxIDMK
IAogCgoKCgojcHJhZ21hIGludGVyZmFjZSAiZXhjZXB0aW9uIgoKZXh0ZXJuICJDKysiIHsKCm5h
bWVzcGFjZSBzdGQgewoKY2xhc3MgZXhjZXB0aW9uIHsKcHVibGljOgogIGV4Y2VwdGlvbiAoKSB7
IH0KICB2aXJ0dWFsIH5leGNlcHRpb24gKCkgeyB9CiAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0
ICgpIGNvbnN0Owp9OwoKY2xhc3MgYmFkX2V4Y2VwdGlvbiA6IHB1YmxpYyBleGNlcHRpb24gewpw
dWJsaWM6CiAgYmFkX2V4Y2VwdGlvbiAoKSB7IH0KICB2aXJ0dWFsIH5iYWRfZXhjZXB0aW9uICgp
IHsgfQp9OwoKdHlwZWRlZiB2b2lkICgqdGVybWluYXRlX2hhbmRsZXIpICgpOwp0eXBlZGVmIHZv
aWQgKCp1bmV4cGVjdGVkX2hhbmRsZXIpICgpOwoKdGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1p
bmF0ZSAodGVybWluYXRlX2hhbmRsZXIpOwp2b2lkIHRlcm1pbmF0ZSAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CnVuZXhwZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCAodW5l
eHBlY3RlZF9oYW5kbGVyKTsKdm9pZCB1bmV4cGVjdGVkICgpIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKYm9vbCB1bmNhdWdodF9leGNlcHRpb24gKCk7Cgp9ICAKCn0gIAoKCiMgOSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvdHlwZWluZm8i
IDIgMwoKCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkIHsKCmNsYXNzIHR5cGVfaW5mbyB7
CnByaXZhdGU6CiAgIAogIHR5cGVfaW5mbyYgb3BlcmF0b3I9IChjb25zdCB0eXBlX2luZm8mKTsK
ICB0eXBlX2luZm8gKGNvbnN0IHR5cGVfaW5mbyYpOwoKcHJvdGVjdGVkOgogIGV4cGxpY2l0IHR5
cGVfaW5mbyAoY29uc3QgY2hhciAqbik6IF9uYW1lIChuKSB7IH0KCiAgY29uc3QgY2hhciAqX25h
bWU7CgpwdWJsaWM6CiAgIAogIHZpcnR1YWwgfnR5cGVfaW5mbyAoKTsKICAgIAogIGJvb2wgYmVm
b3JlIChjb25zdCB0eXBlX2luZm8mIGFyZykgY29uc3Q7CiAgY29uc3QgY2hhciogbmFtZSAoKSBj
b25zdAogICAgeyByZXR1cm4gX25hbWU7IH0KICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IHR5cGVf
aW5mbyYgYXJnKSBjb25zdDsKICBib29sIG9wZXJhdG9yIT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJn
KSBjb25zdDsKfTsKCmlubGluZSBib29sIHR5cGVfaW5mbzo6Cm9wZXJhdG9yIT0gKGNvbnN0IHR5
cGVfaW5mbyYgYXJnKSBjb25zdAp7CiAgcmV0dXJuICFvcGVyYXRvcj09IChhcmcpOwp9CgpjbGFz
cyBiYWRfY2FzdCA6IHB1YmxpYyBleGNlcHRpb24gewpwdWJsaWM6CiAgYmFkX2Nhc3QoKSB7IH0K
ICB2aXJ0dWFsIH5iYWRfY2FzdCgpIHsgfQp9OwoKY2xhc3MgYmFkX3R5cGVpZCA6IHB1YmxpYyBl
eGNlcHRpb24gewogcHVibGljOgogIGJhZF90eXBlaWQgKCkgeyB9CiAgdmlydHVhbCB+YmFkX3R5
cGVpZCAoKSB7IH0KfTsKCn0gIAoKfSAgCgojIDI3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ltc3RybWJsLmhwcCIgMgoKCiAKCiAKCiAKI3ByYWdt
YSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xF
VkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9f
SU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgog
CiAKCiAKY2xhc3MgSURhdGFTdHJlYW07CmNsYXNzIElUeXBlUmVwcmVzZW50YXRpb247CiAKCiAK
CmNsYXNzIElNU3RyZWFtYWJsZQp7CnB1YmxpYzoKICAgICAgICB2aXJ0dWFsIH5JTVN0cmVhbWFi
bGUoKTsKCiAgICAgICAgdmlydHVhbCBjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiAgICAgIHR5
cGVSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0gMDsKCiAgICAgICAgIAogICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIAogICAgICAgIHZvaWQgZXh0ZXJuYWxpemVUb1N0cmVhbShJRGF0YVN0cmVh
bSYgdG93aGVyZSkgY29uc3Q7CiAgICAgICAgdm9pZCBpbnRlcm5hbGl6ZUZyb21TdHJlYW0oSURh
dGFTdHJlYW0mIGZyb213aGVyZSk7Cgpwcm90ZWN0ZWQ6CiAgICAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9TdHJlYW0oSURhdGFTdHJlYW0mIHRvd2hlcmUpIGNvbnN0ID0gMDsKICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVhZEZyb21TdHJlYW0oSURhdGFTdHJlYW0mIGZyb213aGVyZSkgPSAwOwoKICAg
ICAgICBJTVN0cmVhbWFibGUoKTsKICAgICAgICBJTVN0cmVhbWFibGUoY29uc3QgSU1TdHJlYW1h
YmxlJiBvdGhlcik7Cn07CgpjbGFzcyBJU3RyZWFtT3V0RnJhbWUKewpwdWJsaWM6CiAgICAgICAg
SVN0cmVhbU91dEZyYW1lKElEYXRhU3RyZWFtJiBhU3RyZWFtKTsKICAgICAgICB+SVN0cmVhbU91
dEZyYW1lKCk7Cgpwcml2YXRlOgogICAgICAgIElTdHJlYW1PdXRGcmFtZSgpOwogICAgICAgIElT
dHJlYW1PdXRGcmFtZShjb25zdCBJU3RyZWFtT3V0RnJhbWUmIG90aGVyKTsKCnByaXZhdGU6CiAg
ICAgICAgSURhdGFTdHJlYW0qICAgIGZTdHJlYW07Cn07CgoKY2xhc3MgSVN0cmVhbUluRnJhbWUK
ewpwdWJsaWM6CiAgICAgICAgSVN0cmVhbUluRnJhbWUoSURhdGFTdHJlYW0mIGFTdHJlYW0pOwog
ICAgICAgIH5JU3RyZWFtSW5GcmFtZSgpOwoKICAgICAgICBib29sICAgIGF0RW5kKCk7Cgpwcml2
YXRlOgogICAgICAgIElTdHJlYW1JbkZyYW1lKCk7CiAgICAgICAgSVN0cmVhbUluRnJhbWUoY29u
c3QgSVN0cmVhbUluRnJhbWUmIG90aGVyKTsKCnByaXZhdGU6CiAgICAgICAgSURhdGFTdHJlYW0q
ICAgIGZTdHJlYW07Cn07CgoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPiB2b2lkIHdyaXRlT2JqZWN0
KGNvbnN0IEFUeXBlKiB0aGVPYmplY3QsIElEYXRhU3RyZWFtJiB0aGVTdHJlYW0pOwoKdGVtcGxh
dGUgPGNsYXNzIEFUeXBlPiB2b2lkIHdyaXRlQWxpYXNlZE9iamVjdChjb25zdCBBVHlwZSogdGhl
T2JqZWN0LCBJRGF0YVN0cmVhbSYgdGhlU3RyZWFtKTsKCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4g
dm9pZCByZWFkT2JqZWN0KEFUeXBlKiYgdGhlUmVzdWx0LCBJRGF0YVN0cmVhbSYgdGhlU3RyZWFt
KTsKCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4gdm9pZCByZWFkQWxpYXNlZE9iamVjdChBVHlwZSom
IHRoZVJlc3VsdCwgSURhdGFTdHJlYW0mIHRoZVN0cmVhbSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5
cGU+IEFUeXBlKiBjb3B5KGNvbnN0IEFUeXBlJiBzb3VyY2UpOwoKdGVtcGxhdGUgPGNsYXNzIEFU
eXBlPiBBVHlwZSogY29weVBvaW50ZXIoY29uc3QgQVR5cGUqIHNvdXJjZSk7CgogCgogCgoKCgoK
CgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lt
c3RybWJsLmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCgoKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRzdHJt
LmhwcCIgMQojIDE2OCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pZGF0c3RybS5ocHAiCgojIDI4ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ltc3RybWJsLmlubCIgMgoKIyAxICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0eXBlcmVwLmhwcCIgMQoKCgog
CiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCiAKIAoKIAoKIAoKIAojcHJhZ21hIGluZm8obm9u
ZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFn
bWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1B
TkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIApjbGFz
cyBJTVN0cmVhbWFibGU7CmNsYXNzIElTdHJlYW1Nb2R1bGU7CmNsYXNzIElTdHJlYW1hYmxlRmFj
dG9yeTsKY2xhc3MgSVR5cGVOYW1lOwogCgogCgpjbGFzcyBJVHlwZVJlcHJlc2VudGF0aW9uCnsK
cHVibGljOgogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24mIG90
aGVyKTsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiBvdGhl
cik7Cgpwcml2YXRlOgogICAgSVR5cGVSZXByZXNlbnRhdGlvbigpOwogICAgSVR5cGVSZXByZXNl
bnRhdGlvbihjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiBvdGhlcik7CiAgICBJVHlwZVJlcHJl
c2VudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgSVR5cGVSZXByZXNlbnRhdGlvbiYgb3RoZXIpOwog
ICAgdmlydHVhbCB+SVR5cGVSZXByZXNlbnRhdGlvbigpOwoKICAgIGZyaWVuZCBjbGFzcyBJVHlw
ZU5hbWU7CiAgICBjb25zdCBJVHlwZU5hbWUmIHR5cGVOYW1lKCkgY29uc3Q7CgogICAgZnJpZW5k
IGNsYXNzIElTdHJlYW1GaW5kZXI7CiAgICBzdGF0aWMgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlv
biogZmluZFR5cGVXaXRoTmFtZShjb25zdCBJVHlwZU5hbWUmIHR5cGVOYW1lKTsKCiAgICBmcmll
bmQgY2xhc3MgSVN0cmVhbU1vZHVsZTsKICAgIGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24qICBu
ZXh0VHlwZUluTW9kdWxlKCkgY29uc3Q7CiAgICB2b2lkIHNldE5leHQoY29uc3QgSVR5cGVSZXBy
ZXNlbnRhdGlvbiogdHlwZVJlcCk7CiAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7CgogICAg
ZnJpZW5kIGNsYXNzIElTdHJlYW1hYmxlRmFjdG9yeTsKICAgIGZyaWVuZCBjbGFzcyBJU3RyZWFt
YWJsZUdsb2JhbFRlbXBsYXRlSGVscGVyOwogICAgSVR5cGVSZXByZXNlbnRhdGlvbihJU3RyZWFt
YWJsZUZhY3RvcnkqIHN0cmVhbWFibGVGYWN0b3J5KTsKICAgIGNvbnN0IElTdHJlYW1hYmxlRmFj
dG9yeSYgc3RyZWFtYWJsZUZhY3RvcnkoKSBjb25zdDsKCiAgICAgCiAgICAgCiAgICAgCiAgICBm
cmllbmQgY2xhc3MgSVN0cmVhbVRlc3RIZWxwZXI7CiAgICB2b2lkIG1ha2VDb25zdCgpIGNvbnN0
OwoKcHJpdmF0ZToKICAgIElTdHJlYW1hYmxlRmFjdG9yeSogZkZhY3Rvcnk7CiAgICBjb25zdCBJ
VHlwZVJlcHJlc2VudGF0aW9uKiBmTmV4dFR5cGVSZXA7Cn07CgogCgogCgoKCgoKCgojcHJhZ21h
IGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJh
Z21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKIAoKIyAyOSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pbXN0cm1ibC5pbmwiIDIKCgoKCgoKIAoKCgoKCgoKIAoKIAojcHJhZ21hIGluZm8obm9u
ZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFn
bWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1B
TkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIApjbGFz
cyBJU3RyZWFtTW9kdWxlOwpjbGFzcyBJU3RyZWFtSU87CmNsYXNzIElNUmVmQ291bnRlZDsKY2xh
c3MgSVZvaWRNYXN0ZXJQb2ludGVyOwogCgogCgpjbGFzcyBJU3RyZWFtYWJsZUZhY3RvcnkKewpw
dWJsaWM6CiAgICAgICAgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlvbiYgdHlwZVJlcHJlc2VudGF0
aW9uKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZlR5cGVSZXA7CiAgICB9OwoKcHJvdGVj
dGVkOgogICAgICAgIElTdHJlYW1hYmxlRmFjdG9yeShJU3RyZWFtTW9kdWxlKiBtb2R1bGUpOwoK
ZnJpZW5kIGNsYXNzIElTdHJlYW1hYmxlR2xvYmFsVGVtcGxhdGVIZWxwZXI7CiAgICAgICAgdmly
dHVhbCBJTVN0cmVhbWFibGUqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSU1SZWZDb3VudGVkKiYgcmVm
Q291bnRlZCkgY29uc3QgPSAwOwogICAgICAgIHZpcnR1YWwgSU1TdHJlYW1hYmxlKiBjcmVhdGVD
b3B5KGNvbnN0IElNU3RyZWFtYWJsZSYgb3RoZXIpIGNvbnN0ID0gMDsKICAgICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqICAgICBuYW1lKCkgY29uc3QgPSAwOwoKICAgICAgICBJU3RyZWFtYWJsZUZh
Y3RvcnkoKTsKICAgICAgICB+SVN0cmVhbWFibGVGYWN0b3J5KCk7CiAgICAgICAgSVN0cmVhbWFi
bGVGYWN0b3J5KGNvbnN0IElTdHJlYW1hYmxlRmFjdG9yeSYgb3RoZXIpOwogICAgICAgIElTdHJl
YW1hYmxlRmFjdG9yeSYgICAgIG9wZXJhdG9yPShjb25zdCBJU3RyZWFtYWJsZUZhY3RvcnkmIG90
aGVyKTsKCnByaXZhdGU6CiAgICAgICAgSVR5cGVSZXByZXNlbnRhdGlvbiAgICAgZlR5cGVSZXA7
CiAgICAgICAgSVN0cmVhbU1vZHVsZSogIGZNb2R1bGU7CiAgICAgICAgSVR5cGVOYW1lKiAgICAg
IGZUeXBlTmFtZTsKCiAgICBmcmllbmQgY2xhc3MgSVR5cGVSZXByZXNlbnRhdGlvbjsKICAgICAg
ICBjb25zdCBJVHlwZU5hbWUmICAgICAgICB0eXBlTmFtZSgpOwoKICAgIGZyaWVuZCBjbGFzcyBJ
U3RyZWFtRmluZGVyOwogICAgICAgIHN0YXRpYyAgY29uc3QgSVN0cmVhbWFibGVGYWN0b3J5JiAg
ICAgICBmaW5kRmFjdG9yeShjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiB0eXBlUmVwcmVzZW50
YXRpb24pOwp9OwoKI3ByYWdtYSBlbnVtKHBvcCkKCgoKCgoKCmlubGluZSB2b2lkCnN0cmVhbWFi
bGVIZWxwZXJBc3NpZ25SZWZDb3VudGVkKElNUmVmQ291bnRlZComIHJlZkNvdW50ZWQsIHZvaWQq
KQp7CiAgICAgICAgcmVmQ291bnRlZCA9IDA7Cn0KCmlubGluZSB2b2lkCnN0cmVhbWFibGVIZWxw
ZXJBc3NpZ25SZWZDb3VudGVkKElNUmVmQ291bnRlZComIHJlZkNvdW50ZWQsIElNUmVmQ291bnRl
ZCogdGVtcCkKewogICAgICAgIHJlZkNvdW50ZWQgPSB0ZW1wOwp9CgoKCgoKCgojcHJhZ21hIGVu
dW0oNCkKCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4KY2xhc3MgSVN0cmVhbWFibGVIZWxwZXJGb3Ig
OiBwdWJsaWMgSVN0cmVhbWFibGVGYWN0b3J5CnsKcHVibGljOgoKICAgICAgICBJU3RyZWFtYWJs
ZUhlbHBlckZvcihJU3RyZWFtTW9kdWxlKiBtb2R1bGUsIC4uLikKICAgICAgICAgICAgICAgIDog
SVN0cmVhbWFibGVGYWN0b3J5KG1vZHVsZSkKICAgICAgICAgICAgICAgICwgZkNsYXNzTmFtZSh0
eXBlaWQoQVR5cGUpLm5hbWUoKSkKCgoKCgogICAgICAgIHsKICAgICAgICB9OwogICAgICAgIHZp
cnR1YWwgSU1TdHJlYW1hYmxlKiAgIGNyZWF0ZUNvcHkoY29uc3QgSU1TdHJlYW1hYmxlJiBvdGhl
cikgY29uc3QKICAgICAgICB7CgoKCgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBVHlwZShk
eW5hbWljX2Nhc3Q8Y29uc3QgQVR5cGUmPihvdGhlcikpOwoKCgoKICAgICAgICB9OwogICAgICAg
IHZpcnR1YWwgSU1TdHJlYW1hYmxlKiAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSU1SZWZDb3VudGVk
KiYgcmVmQ291bnRlZCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgICAgICBBVHlwZSogdGVt
cCA9IG5ldyBBVHlwZSgpOwogICAgICAgICAgICAgICAgc3RyZWFtYWJsZUhlbHBlckFzc2lnblJl
ZkNvdW50ZWQocmVmQ291bnRlZCwgdGVtcCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcDsK
ICAgICAgICB9OwogICAgICAgIHZpcnR1YWwgY29uc3QgY2hhciogICAgIG5hbWUoKSBjb25zdCB7
IHJldHVybiBmQ2xhc3NOYW1lOyB9OwoKcHJpdmF0ZToKICAgICAgICBjb25zdCBjaGFyKiAgICAg
ZkNsYXNzTmFtZTsKCiAgICAgICAgSVN0cmVhbWFibGVIZWxwZXJGb3IoKSB7fTsKICAgICAgICBJ
U3RyZWFtYWJsZUhlbHBlckZvcihjb25zdCBJU3RyZWFtYWJsZUhlbHBlckZvcjxBVHlwZT4mIG90
aGVyKSB7fTsKICAgICAgICBJU3RyZWFtYWJsZUhlbHBlckZvcjxBVHlwZT4mICAgIG9wZXJhdG9y
PShjb25zdCBJU3RyZWFtYWJsZUhlbHBlckZvcjxBVHlwZT4mIG90aGVyKSB7IHJldHVybiAqdGhp
czsgfTsKfTsKCiNwcmFnbWEgZW51bShwb3ApCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgpjbGFzcyB3cml0ZU9iamVjdEludmFsaWRGb3JOb25TdHJlYW1hYmxlT2JqZWN0czsKY2xh
c3Mgd3JpdGVPYmplY3RJbnZhbGlkRm9yUmVmQ291bnRlZE9iamVjdHM7CmNsYXNzIHdyaXRlQWxp
YXNlZE9iamVjdEludmFsaWRGb3JOb25TdHJlYW1hYmxlT2JqZWN0czsKY2xhc3Mgd3JpdGVBbGlh
c2VkT2JqZWN0SW52YWxpZEZvck5vblJlZkNvdW50ZWRPYmplY3RzOwpjbGFzcyByZWFkT2JqZWN0
SW52YWxpZEZvck5vblN0cmVhbWFibGVPYmplY3RzOwpjbGFzcyByZWFkT2JqZWN0SW52YWxpZEZv
clJlZkNvdW50ZWRPYmplY3RzOwpjbGFzcyByZWFkQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25T
dHJlYW1hYmxlT2JqZWN0czsKY2xhc3MgcmVhZEFsaWFzZWRPYmplY3RJbnZhbGlkRm9yTm9uUmVm
Q291bnRlZE9iamVjdHM7CgoKCgoKCgojcHJhZ21hIGVudW0oNCkKCmNsYXNzIElTdHJlYW1hYmxl
R2xvYmFsVGVtcGxhdGVIZWxwZXIKewpwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAKICAgICAg
ICAgCiAgICAgICAgIAogICAgICAgIHN0YXRpYyAgdm9pZCAgICB3cml0ZVVuYWxpYXNlZE9iamVj
dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSU1TdHJlYW1hYmxlKiBzb3VyY2UpOwogICAgICAgIHN0YXRpYyAgdm9pZCAgICB3cml0ZVVu
YWxpYXNlZE9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSU1TdHJlYW1hYmxlKiAgICAgc291cmNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiB0eXBlUmVwcmVzZW50YXRpb24pOwoKICAgICAgICAg
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgc3RhdGljICB2b2lkICAgIHdy
aXRlQWxpYXNlZE9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSU1TdHJlYW1hYmxlKiBzb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IElNUmVmQ291bnRlZCogcmVmQ291bnRlZCk7CiAgICAgICAgc3RhdGljICB2b2lkICAgIHdy
aXRlQWxpYXNlZE9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSU1TdHJlYW1hYmxlKiAgICAgc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJTVJlZkNvdW50ZWQqIHJlZkNvdW50ZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElU
eXBlUmVwcmVzZW50YXRpb24mIHR5cGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgc3RhdGljICB2
b2lkICAgIHdyaXRlQWxpYXNlZE9iamVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJl
YW1JTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSU1TdHJlYW1hYmxlKiAgICAgc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJTVJlZkNvdW50ZWQqIHJlZkNvdW50ZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNXcmFwcGVkKTsKCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAgICAgICAg
IAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBzdGF0aWMg
IElNU3RyZWFtYWJsZSogICByZWFkVW5hbGlhc2VkT2JqZWN0KElTdHJlYW1JTyYgc3RyZWFtSU8p
OwogICAgICAgIHN0YXRpYyAgSU1TdHJlYW1hYmxlKiAgIHJlYWRVbmFsaWFzZWRPYmplY3QoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBz
dHJlYW1JTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiB0eXBlUmVwcmVzZW50YXRpb24pOwogICAgICAgIHN0
YXRpYyAgSU1TdHJlYW1hYmxlKiAgIHJlYWRVbmFsaWFzZWRPYmplY3QoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyZWFt
RmluZGVyJiBmaW5kZXIpOwogICAgICAgIHN0YXRpYyAgSU1TdHJlYW1hYmxlKiAgIHJlYWRVbmFs
aWFzZWRPYmplY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJU3RyZWFtRmluZGVyJiBmaW5kZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlv
biYgdHlwZVJlcHJlc2VudGF0aW9uKTsKCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAg
ICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBz
dGF0aWMgIElNU3RyZWFtYWJsZSogICByZWFkQWxpYXNlZE9iamVjdChJU3RyZWFtSU8mIHN0cmVh
bUlPKTsKICAgICAgICBzdGF0aWMgIElNU3RyZWFtYWJsZSogICByZWFkQWxpYXNlZE9iamVjdCgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU3RyZWFtSU8m
IHN0cmVhbUlPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24mIHR5cGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAg
c3RhdGljICBJTVN0cmVhbWFibGUqICAgcmVhZEFsaWFzZWRPYmplY3QoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyZWFt
RmluZGVyJiBmaW5kZXIpOwogICAgICAgIHN0YXRpYyAgSU1TdHJlYW1hYmxlKiAgIHJlYWRBbGlh
c2VkT2JqZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElTdHJlYW1JTyYgc3RyZWFtSU8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSVN0cmVhbUZpbmRlciYgZmluZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24m
IHR5cGVSZXByZXNlbnRhdGlvbik7CiAgICAgICAgc3RhdGljICBJTVN0cmVhbWFibGUqICAgcmVh
ZEFsaWFzZWRPYmplY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSVN0cmVhbUlPJiBzdHJlYW1JTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJVm9pZE1hc3RlclBvaW50ZXIqJiByZXN1bHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1dyYXBwZWQpOwoKICAg
ICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBzdGF0aWMgIElNU3RyZWFtYWJsZSog
ICBjcmVhdGVDb3B5KGNvbnN0IElNU3RyZWFtYWJsZSYgc291cmNlKTsKfTsKCiAKCiAKI3ByYWdt
YSBlbnVtKHBvcCkKCgoKCgoKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCgog
CiAKCmlubGluZSB3cml0ZU9iamVjdEludmFsaWRGb3JOb25TdHJlYW1hYmxlT2JqZWN0cyYKd3Jp
dGVPYmplY3RDaGVjayhJRGF0YVN0cmVhbSYgdGhlU3RyZWFtLCB2b2lkKiAgLCB2b2lkKiAgKQp7
CiAgICAgICAgcmV0dXJuICood3JpdGVPYmplY3RJbnZhbGlkRm9yTm9uU3RyZWFtYWJsZU9iamVj
dHMqKTA7Cn0KCiAKCmlubGluZSBJRGF0YVN0cmVhbSYKd3JpdGVPYmplY3RDaGVjayhJRGF0YVN0
cmVhbSYgdGhlU3RyZWFtLCBJTVN0cmVhbWFibGUqICAsIHZvaWQqICApCnsKICAgICAgICByZXR1
cm4gdGhlU3RyZWFtOwp9CgppbmxpbmUgd3JpdGVPYmplY3RJbnZhbGlkRm9yUmVmQ291bnRlZE9i
amVjdHMmCndyaXRlT2JqZWN0Q2hlY2soSURhdGFTdHJlYW0mIHRoZVN0cmVhbSwgSU1TdHJlYW1h
YmxlKiAgLCBJTVJlZkNvdW50ZWQqICApCnsKICAgICAgICByZXR1cm4gKih3cml0ZU9iamVjdElu
dmFsaWRGb3JSZWZDb3VudGVkT2JqZWN0cyopMDsKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgpp
bmxpbmUgdm9pZCB3cml0ZU9iamVjdChjb25zdCBBVHlwZSogdGhlT2JqZWN0LCBJRGF0YVN0cmVh
bSYgdGhlU3RyZWFtKQp7CiAgICAgICAgSVN0cmVhbWFibGVHbG9iYWxUZW1wbGF0ZUhlbHBlcjo6
d3JpdGVVbmFsaWFzZWRPYmplY3QoKjo6d3JpdGVPYmplY3RDaGVjayh0aGVTdHJlYW0sIChBVHlw
ZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCB0aGVPYmplY3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgQVR5cGU+CmlubGluZSB2b2lkCndyaXRlT2JqZWN0KGNvbnN0IEFUeXBlKiB0aGVPYmplY3Qs
IGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24mIHR5cGVSZXAsIElEYXRhU3RyZWFtJiB0aGVTdHJl
YW0pCnsKICAgICAgICBJU3RyZWFtYWJsZUdsb2JhbFRlbXBsYXRlSGVscGVyOjp3cml0ZVVuYWxp
YXNlZE9iamVjdCgqOjp3cml0ZU9iamVjdENoZWNrKHRoZVN0cmVhbSwgKEFUeXBlKikwLCAoQVR5
cGUqKTApLnN0cmVhbUlPKCksIHRoZU9iamVjdCwgdHlwZVJlcCk7Cn0KCiAKIAoKaW5saW5lIHdy
aXRlQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25TdHJlYW1hYmxlT2JqZWN0cyYKd3JpdGVBbGlh
c2VkT2JqZWN0Q2hlY2soSURhdGFTdHJlYW0mIHRoZVN0cmVhbSwgdm9pZCogICwgdm9pZCogICkK
ewogICAgICAgIHJldHVybiAqKHdyaXRlQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25TdHJlYW1h
YmxlT2JqZWN0cyopMDsKfQoKaW5saW5lIHdyaXRlQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25S
ZWZDb3VudGVkT2JqZWN0cyYKd3JpdGVBbGlhc2VkT2JqZWN0Q2hlY2soSURhdGFTdHJlYW0mIHRo
ZVN0cmVhbSwgSU1TdHJlYW1hYmxlKiAgLCB2b2lkKiAgKQp7CiAgICAgICAgcmV0dXJuICood3Jp
dGVBbGlhc2VkT2JqZWN0SW52YWxpZEZvck5vblJlZkNvdW50ZWRPYmplY3RzKikwOwp9CgogCgpp
bmxpbmUgSURhdGFTdHJlYW0mCndyaXRlQWxpYXNlZE9iamVjdENoZWNrKElEYXRhU3RyZWFtJiB0
aGVTdHJlYW0sIElNU3RyZWFtYWJsZSogICwgSU1SZWZDb3VudGVkKiAgKQp7CiAgICAgICAgcmV0
dXJuIHRoZVN0cmVhbTsKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9pZCB3cml0
ZUFsaWFzZWRPYmplY3QoY29uc3QgQVR5cGUqIHRoZU9iamVjdCwgSURhdGFTdHJlYW0mIHRoZVN0
cmVhbSkKewogICAgICAgIElTdHJlYW1hYmxlR2xvYmFsVGVtcGxhdGVIZWxwZXI6OndyaXRlQWxp
YXNlZE9iamVjdCgqOjp3cml0ZUFsaWFzZWRPYmplY3RDaGVjayh0aGVTdHJlYW0sIChBVHlwZSop
MCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCB0aGVPYmplY3QsIHRoZU9iamVjdCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBBVHlwZT4KaW5saW5lIHZvaWQKd3JpdGVBbGlhc2VkT2JqZWN0KGNvbnN0IEFU
eXBlKiB0aGVPYmplY3QsIGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24mIHR5cGVSZXAsIElEYXRh
U3RyZWFtJiB0aGVTdHJlYW0pCnsKICAgICAgICBJU3RyZWFtYWJsZUdsb2JhbFRlbXBsYXRlSGVs
cGVyOjp3cml0ZUFsaWFzZWRPYmplY3QoKjo6d3JpdGVBbGlhc2VkT2JqZWN0Q2hlY2sodGhlU3Ry
ZWFtLCAoQVR5cGUqKTAsIChBVHlwZSopMCkuc3RyZWFtSU8oKSwgdGhlT2JqZWN0LCB0aGVPYmpl
Y3QsIHR5cGVSZXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGluZSB2b2lkCndyaXRl
Q291bnRlZE9iamVjdChjb25zdCBBVHlwZSogdGhlT2JqZWN0LCBJTVJlZkNvdW50ZWQqIHJlZkNv
dW50ZWQsIGJvb2wgaXNXcmFwcGVkLCBJRGF0YVN0cmVhbSYgdGhlU3RyZWFtKQp7CiAgICAgICAg
SVN0cmVhbWFibGVHbG9iYWxUZW1wbGF0ZUhlbHBlcjo6d3JpdGVBbGlhc2VkT2JqZWN0KCAqdGhl
U3RyZWFtLnN0cmVhbUlPKCksIHRoZU9iamVjdCwgcmVmQ291bnRlZCwgaXNXcmFwcGVkICk7Cn0K
CiAKCmlubGluZSByZWFkT2JqZWN0SW52YWxpZEZvck5vblN0cmVhbWFibGVPYmplY3RzJgpyZWFk
T2JqZWN0Q2hlY2soSURhdGFTdHJlYW0mIHRoZVN0cmVhbSwgdm9pZCogICwgdm9pZCogICkKewog
ICAgICAgIHJldHVybiAqKHJlYWRPYmplY3RJbnZhbGlkRm9yTm9uU3RyZWFtYWJsZU9iamVjdHMq
KTA7Cn0KCiAKCmlubGluZSBJRGF0YVN0cmVhbSYKcmVhZE9iamVjdENoZWNrKElEYXRhU3RyZWFt
JiB0aGVTdHJlYW0sIElNU3RyZWFtYWJsZSogICwgdm9pZCogICkKewogICAgICAgIHJldHVybiB0
aGVTdHJlYW07Cn0KCmlubGluZSByZWFkT2JqZWN0SW52YWxpZEZvclJlZkNvdW50ZWRPYmplY3Rz
JgpyZWFkT2JqZWN0Q2hlY2soSURhdGFTdHJlYW0mIHRoZVN0cmVhbSwgSU1TdHJlYW1hYmxlKiAg
LCBJTVJlZkNvdW50ZWQqICApCnsKICAgICAgICByZXR1cm4gKihyZWFkT2JqZWN0SW52YWxpZEZv
clJlZkNvdW50ZWRPYmplY3RzKikwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGluZSB2
b2lkIHJlYWRPYmplY3QoQVR5cGUqJiB0aGVSZXN1bHQsIElEYXRhU3RyZWFtJiB0aGVTdHJlYW0p
CnsKICAgICAgICBJTVN0cmVhbWFibGUqIHRoZVN0cmVhbWFibGUgPSBJU3RyZWFtYWJsZUdsb2Jh
bFRlbXBsYXRlSGVscGVyOjpyZWFkVW5hbGlhc2VkT2JqZWN0KCo6OnJlYWRPYmplY3RDaGVjayh0
aGVTdHJlYW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpKTsKCiAgICAgICAgdGhl
UmVzdWx0ID0gZHluYW1pY19jYXN0PEFUeXBlKj4odGhlU3RyZWFtYWJsZSk7CgoKCn0KCnRlbXBs
YXRlIDxjbGFzcyBBVHlwZT4KaW5saW5lIHZvaWQKcmVhZE9iamVjdChBVHlwZSomIHRoZVJlc3Vs
dCwgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlvbiYgdHlwZVJlcCwgSURhdGFTdHJlYW0mIHRoZVN0
cmVhbSkKewogICAgICAgIElNU3RyZWFtYWJsZSogdGhlU3RyZWFtYWJsZSA9IElTdHJlYW1hYmxl
R2xvYmFsVGVtcGxhdGVIZWxwZXI6OnJlYWRVbmFsaWFzZWRPYmplY3QoKjo6cmVhZE9iamVjdENo
ZWNrKHRoZVN0cmVhbSwgKEFUeXBlKikwLCAoQVR5cGUqKTApLnN0cmVhbUlPKCksIHR5cGVSZXAp
OwoKICAgICAgICB0aGVSZXN1bHQgPSBkeW5hbWljX2Nhc3Q8QVR5cGUqPih0aGVTdHJlYW1hYmxl
KTsKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9pZApyZWFkT2JqZWN0KEFU
eXBlKiYgdGhlUmVzdWx0LCBjb25zdCBJU3RyZWFtRmluZGVyJiBmaW5kZXIsIElEYXRhU3RyZWFt
JiB0aGVTdHJlYW0pCnsKICAgICAgICBJTVN0cmVhbWFibGUqIHRoZVN0cmVhbWFibGUgPSBJU3Ry
ZWFtYWJsZUdsb2JhbFRlbXBsYXRlSGVscGVyOjpyZWFkVW5hbGlhc2VkT2JqZWN0KCo6OnJlYWRP
YmplY3RDaGVjayh0aGVTdHJlYW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCBm
aW5kZXIpOwoKICAgICAgICB0aGVSZXN1bHQgPSBkeW5hbWljX2Nhc3Q8QVR5cGUqPih0aGVTdHJl
YW1hYmxlKTsKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9pZApyZWFkT2Jq
ZWN0KEFUeXBlKiYgdGhlUmVzdWx0LCBjb25zdCBJU3RyZWFtRmluZGVyJiBmaW5kZXIsIGNvbnN0
IElUeXBlUmVwcmVzZW50YXRpb24mIHR5cGVSZXAsIElEYXRhU3RyZWFtJiB0aGVTdHJlYW0pCnsK
ICAgICAgICBJTVN0cmVhbWFibGUqIHRoZVN0cmVhbWFibGUgPSBJU3RyZWFtYWJsZUdsb2JhbFRl
bXBsYXRlSGVscGVyOjpyZWFkVW5hbGlhc2VkT2JqZWN0KCo6OnJlYWRPYmplY3RDaGVjayh0aGVT
dHJlYW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCBmaW5kZXIsIHR5cGVSZXAp
OwoKICAgICAgICB0aGVSZXN1bHQgPSBkeW5hbWljX2Nhc3Q8QVR5cGUqPih0aGVTdHJlYW1hYmxl
KTsKCgoKfQoKIAoKIAogCmlubGluZSByZWFkQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25TdHJl
YW1hYmxlT2JqZWN0cyYKcmVhZEFsaWFzZWRPYmplY3RDaGVjayhJRGF0YVN0cmVhbSYgdGhlU3Ry
ZWFtLCB2b2lkKiAgLCB2b2lkKiAgKQp7CiAgICAgICAgcmV0dXJuICoocmVhZEFsaWFzZWRPYmpl
Y3RJbnZhbGlkRm9yTm9uU3RyZWFtYWJsZU9iamVjdHMqKTA7Cn0KCmlubGluZSByZWFkQWxpYXNl
ZE9iamVjdEludmFsaWRGb3JOb25SZWZDb3VudGVkT2JqZWN0cyYKcmVhZEFsaWFzZWRPYmplY3RD
aGVjayhJRGF0YVN0cmVhbSYgdGhlU3RyZWFtLCBJTVN0cmVhbWFibGUqICAsIHZvaWQqICApCnsK
ICAgICAgICByZXR1cm4gKihyZWFkQWxpYXNlZE9iamVjdEludmFsaWRGb3JOb25SZWZDb3VudGVk
T2JqZWN0cyopMDsKfQoKIAoKaW5saW5lIElEYXRhU3RyZWFtJgpyZWFkQWxpYXNlZE9iamVjdENo
ZWNrKElEYXRhU3RyZWFtJiB0aGVTdHJlYW0sIElNU3RyZWFtYWJsZSogICwgSU1SZWZDb3VudGVk
KiAgKQp7CiAgICAgICAgcmV0dXJuIHRoZVN0cmVhbTsKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBl
PgppbmxpbmUgdm9pZCByZWFkQWxpYXNlZE9iamVjdChBVHlwZSomIHRoZVJlc3VsdCwgSURhdGFT
dHJlYW0mIHRoZVN0cmVhbSkKewogCgogICAgICAgIHRoZVJlc3VsdCA9IGR5bmFtaWNfY2FzdDxB
VHlwZSo+KHRoZVN0cmVhbWFibGUpOwoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGlu
ZSB2b2lkCnJlYWRBbGlhc2VkT2JqZWN0KEFUeXBlKiYgdGhlUmVzdWx0LCBjb25zdCBJVHlwZVJl
cHJlc2VudGF0aW9uJiB0eXBlUmVwLCBJRGF0YVN0cmVhbSYgdGhlU3RyZWFtKQp7CiAgICAgICAg
SU1TdHJlYW1hYmxlKiB0aGVTdHJlYW1hYmxlID0gSVN0cmVhbWFibGVHbG9iYWxUZW1wbGF0ZUhl
bHBlcjo6cmVhZEFsaWFzZWRPYmplY3QoKjo6cmVhZEFsaWFzZWRPYmplY3RDaGVjayh0aGVTdHJl
YW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCB0eXBlUmVwKTsKCiAKCgoKfQoK
dGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9pZApyZWFkQWxpYXNlZE9iamVjdChBVHlw
ZSomIHRoZVJlc3VsdCwgY29uc3QgSVN0cmVhbUZpbmRlciYgZmluZGVyLCBJRGF0YVN0cmVhbSYg
dGhlU3RyZWFtKQp7CiAgICAgICAgSU1TdHJlYW1hYmxlKiB0aGVTdHJlYW1hYmxlID0gSVN0cmVh
bWFibGVHbG9iYWxUZW1wbGF0ZUhlbHBlcjo6cmVhZEFsaWFzZWRPYmplY3QoKjo6cmVhZEFsaWFz
ZWRPYmplY3RDaGVjayh0aGVTdHJlYW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygp
LCBmaW5kZXIpOwoKICAgICAgICB0aGVSZXN1bHQgPSBkeW5hbWljX2Nhc3Q8QVR5cGUqPih0aGVT
dHJlYW1hYmxlKTsKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9pZApyZWFk
QWxpYXNlZE9iamVjdChBVHlwZSomIHRoZVJlc3VsdCwgY29uc3QgSVN0cmVhbUZpbmRlciYgZmlu
ZGVyLCBjb25zdCBJVHlwZVJlcHJlc2VudGF0aW9uJiB0eXBlUmVwLCBJRGF0YVN0cmVhbSYgdGhl
U3RyZWFtKQp7CiAgICAgICAgSU1TdHJlYW1hYmxlKiB0aGVTdHJlYW1hYmxlID0gSVN0cmVhbWFi
bGVHbG9iYWxUZW1wbGF0ZUhlbHBlcjo6cmVhZEFsaWFzZWRPYmplY3QoKjo6cmVhZEFsaWFzZWRP
YmplY3RDaGVjayh0aGVTdHJlYW0sIChBVHlwZSopMCwgKEFUeXBlKikwKS5zdHJlYW1JTygpLCBm
aW5kZXIsIHR5cGVSZXApOwoKICAgICAgICB0aGVSZXN1bHQgPSBkeW5hbWljX2Nhc3Q8QVR5cGUq
Pih0aGVTdHJlYW1hYmxlKTsKCgoKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgdm9p
ZApyZWFkQ291bnRlZE9iamVjdChBVHlwZSomIHRoZVJlc3VsdCwgSVZvaWRNYXN0ZXJQb2ludGVy
KiYgaW5kaXJlY3QsIGJvb2wgaXNXcmFwcGVkLCBJRGF0YVN0cmVhbSYgdGhlU3RyZWFtKQp7CiAg
ICAgICAgSU1TdHJlYW1hYmxlKiB0aGVTdHJlYW1hYmxlID0gSVN0cmVhbWFibGVHbG9iYWxUZW1w
bGF0ZUhlbHBlcjo6cmVhZEFsaWFzZWRPYmplY3QoKnRoZVN0cmVhbS5zdHJlYW1JTygpLCBpbmRp
cmVjdCwgaXNXcmFwcGVkKTsKCiAgICAgICAgdGhlUmVzdWx0ID0gZHluYW1pY19jYXN0PEFUeXBl
Kj4odGhlU3RyZWFtYWJsZSk7CgoKCn0KCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4KaW5saW5lIEFU
eXBlKiBjb3B5KGNvbnN0IEFUeXBlJiBzb3VyY2UpCnsKICAgICAgICBJTVN0cmVhbWFibGUqIHRo
ZUNvcHkgPSBJU3RyZWFtYWJsZUdsb2JhbFRlbXBsYXRlSGVscGVyOjpjcmVhdGVDb3B5KHNvdXJj
ZSk7CgogICAgICAgIHJldHVybiBkeW5hbWljX2Nhc3Q8QVR5cGUqPih0aGVDb3B5KTsKCgoKfQoK
dGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUgQVR5cGUqIGNvcHlQb2ludGVyKGNvbnN0IEFU
eXBlKiBzb3VyY2UpCnsKICAgICAgICBpZiAoc291cmNlID09IDApCiAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICByZXR1cm4gOjpjb3B5KCpzb3VyY2UpOwp9CgogCgogCiNwcmFnbWEg
aW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgog
CgojIDE1NSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pbXN0cm1ibC5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWdzdHJlYW0uaW5sIiAyCgogCgppbmxp
bmUgdm9pZCBvcGVyYXRvcjw8PShJTVN0cmVhbWFibGUmIG9iamVjdCwgSURhdGFTdHJlYW0mIHMp
CnsKICAgICAgICBvYmplY3QuaW50ZXJuYWxpemVGcm9tU3RyZWFtKHMpOwp9CgppbmxpbmUgdm9p
ZCBvcGVyYXRvcjw8PShjaGFyJiBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAgIGMgPSBzLnJl
YWRCeXRlKCk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHNpZ25lZCBjaGFyJiBjLCBJRGF0
YVN0cmVhbSYgcykKewogICAgICAgIGMgPSAoc2lnbmVkIGNoYXIpIHMucmVhZEJ5dGUoKTsKfQoK
aW5saW5lIHZvaWQgb3BlcmF0b3I8PD0odW5zaWduZWQgY2hhciYgYywgSURhdGFTdHJlYW0mIHMp
CnsKICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHMucmVhZEJ5dGUoKTsKfQoKaW5saW5lIHZv
aWQgb3BlcmF0b3I8PD0oc2hvcnQmIGMsIElEYXRhU3RyZWFtJiBzKQp7CiAgICAgICAgYyA9IHMu
cmVhZFNob3J0KCk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHVuc2lnbmVkIHNob3J0JiBj
LCBJRGF0YVN0cmVhbSYgcykKewogICAgICAgIGMgPSAodW5zaWduZWQgc2hvcnQpIHMucmVhZFNo
b3J0KCk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KGludCYgYywgSURhdGFTdHJlYW0mIHMp
CnsKICAgICAgICBjID0gcy5yZWFkSW50KCk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KHVu
c2lnbmVkIGludCYgYywgSURhdGFTdHJlYW0mIHMpCnsKICAgICAgICBjID0gKHVuc2lnbmVkIGlu
dCkgcy5yZWFkSW50KCk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KGxvbmcmIGMsIElEYXRh
U3RyZWFtJiBzKQp7CiAgICAgICAgYyA9IHMucmVhZExvbmcoKTsKfQoKaW5saW5lIHZvaWQgb3Bl
cmF0b3I8PD0odW5zaWduZWQgbG9uZyYgYywgSURhdGFTdHJlYW0mIHMpCnsKICAgICAgICBjID0g
KHVuc2lnbmVkIGxvbmcpIHMucmVhZExvbmcoKTsKfQoKaW5saW5lIHZvaWQgb3BlcmF0b3I8PD0o
ZmxvYXQmIGMsIElEYXRhU3RyZWFtJiBzKQp7CiAgICAgICAgYyA9IHMucmVhZEZsb2F0KCk7Cn0K
CmlubGluZSB2b2lkIG9wZXJhdG9yPDw9KGRvdWJsZSYgYywgSURhdGFTdHJlYW0mIHMpCnsKICAg
ICAgICBjID0gcy5yZWFkRG91YmxlKCk7Cn0KCgppbmxpbmUgdm9pZCBvcGVyYXRvcjw8PShib29s
JiBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAgIGMgPSBzLnJlYWRCb29sKCk7Cn0KCgppbmxp
bmUgdm9pZCBvcGVyYXRvcj4+PShjb25zdCBJTVN0cmVhbWFibGUmIG9iamVjdCwgSURhdGFTdHJl
YW0mIHMpCnsKICAgICAgICBvYmplY3QuZXh0ZXJuYWxpemVUb1N0cmVhbShzKTsKfQoKaW5saW5l
IHZvaWQgb3BlcmF0b3I+Pj0oY2hhciBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAgIHMud3Jp
dGVCeXRlKGMpOwp9CgppbmxpbmUgdm9pZCBvcGVyYXRvcj4+PShzaWduZWQgY2hhciBjLCBJRGF0
YVN0cmVhbSYgcykKewogICAgICAgIHMud3JpdGVCeXRlKChjaGFyKSBjKTsKfQoKaW5saW5lIHZv
aWQgb3BlcmF0b3I+Pj0odW5zaWduZWQgY2hhciBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAg
IHMud3JpdGVCeXRlKChjaGFyKSBjKTsKfQoKaW5saW5lIHZvaWQgb3BlcmF0b3I+Pj0oc2hvcnQg
YywgSURhdGFTdHJlYW0mIHMpCnsKICAgICAgICBzLndyaXRlU2hvcnQoYyk7Cn0KCmlubGluZSB2
b2lkIG9wZXJhdG9yPj49KHVuc2lnbmVkIHNob3J0IGMsIElEYXRhU3RyZWFtJiBzKQp7CiAgICAg
ICAgcy53cml0ZVNob3J0KChzaG9ydCkgYyk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPj49KGlu
dCBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAgIHMud3JpdGVJbnQoYyk7Cn0KCmlubGluZSB2
b2lkIG9wZXJhdG9yPj49KHVuc2lnbmVkIGludCBjLCBJRGF0YVN0cmVhbSYgcykKewogICAgICAg
IHMud3JpdGVMb25nKChpbnQpIGMpOwp9CgppbmxpbmUgdm9pZCBvcGVyYXRvcj4+PShsb25nIGMs
IElEYXRhU3RyZWFtJiBzKQp7CiAgICAgICAgcy53cml0ZUxvbmcoYyk7Cn0KCmlubGluZSB2b2lk
IG9wZXJhdG9yPj49KHVuc2lnbmVkIGxvbmcgYywgSURhdGFTdHJlYW0mIHMpCnsKICAgICAgICBz
LndyaXRlTG9uZygobG9uZykgYyk7Cn0KCmlubGluZSB2b2lkIG9wZXJhdG9yPj49KGZsb2F0IGMs
IElEYXRhU3RyZWFtJiBzKQp7CiAgICAgICAgcy53cml0ZUZsb2F0KGMpOwp9CgppbmxpbmUgdm9p
ZCBvcGVyYXRvcj4+PShkb3VibGUgYywgSURhdGFTdHJlYW0mIHMpCnsKICAgICAgICBzLndyaXRl
RG91YmxlKGMpOwp9CgoKaW5saW5lIHZvaWQgb3BlcmF0b3I+Pj0oYm9vbCBjLCBJRGF0YVN0cmVh
bSYgcykKewogICAgICAgIHMud3JpdGVCb29sKGMpOwp9CgoKIAoKIyAxMTUgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWdzdHJlYW0uaHBwIiAyCgog
CgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgogCgojIDE1OCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pZGF0c3RybS5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNw
cmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMzEgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWRhdGUuaHBwIiAy
CgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aXN0cmluZy5ocHAiIDEKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pc3RyZWFtLmhwcCIgMQojIDU2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJlYW0uaHBwIgoKCgoKCiMgMjkgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmluZy5ocHAiIDIKCgoj
IDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0
cmVudW0uaHBwIiAxCiMgMTAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaXN0cmVudW0uaHBwIgoKCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAoKIAoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSBy
ZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0
b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVN
RSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIAogCgogCgpjbGFzcyAgIElT
dHJpbmdFbnVtIHsKcHVibGljOgogCnR5cGVkZWYgZW51bSB7CiAgbGVhZGluZywKICB0cmFpbGlu
ZywKICBib3RoCiAgfSBTdHJpcE1vZGU7CgogCnR5cGVkZWYgZW51bSB7CiAgc2JjcywKICBkYmNz
MSA9IDEsCiAgbWJjczEgPSAxLAogIGRiY3MyID0gMiwKICBtYmNzMiA9IDIsCiAgbWJjczMgPSAz
LAogIG1iY3M0ID0gNAogIH0gQ2hhclR5cGU7Cgp9OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVt
KHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiAKCiAKI3ByYWdtYSBp
bmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAK
CgoKCgoKCiMgMzEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaXN0cmluZy5ocHAiIDIKCgoKZXh0ZXJuICJDIgp7CiAgICAKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiAKCgog
CgoKCgoKIAojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N5c2xpbWl0cy5oIiAxIDMKIAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1
c2UtbGludXgvMi45NS4yL2luY2x1ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKIyAxMTQgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAzCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
CiAKCgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoK
CiAKCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbG9jYWxfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjcgIi91
c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAyIDMKCgogCgoKCgoKIAoKIAoKCiAKCiAKCgog
CgogCgoKIAoKCgogCgojIDEyNiAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMK
CgoKCgoKCgogCgoKCgoKCgojIDMwICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKCiAKCgoKCiAKCgoKIAoKCiAKCgoKIAoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDM0ICIvdXNyL2luY2x1ZGUv
bGltaXRzLmgiIDIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RkaW9fbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzIgIi91c3IvaW5j
bHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAzCgoKCgoKCiMgMzQgIi91c3IvaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKIAoKCgogCgoK
CgogCgoKCiAKCgogCgoKIAoKCgogCgoKIAoKCiAKCgoKIyAzOCAiL3Vzci9pbmNsdWRlL2xpbWl0
cy5oIiAyIDMKCgoKCiAKCgoKCgogCgojIDEyMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCgoK
CgogIAoKCgoKCgoKCiMgMTE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCgojIDcgIi91c3IvbGliL2djYy1saWIvczM5MC1z
dXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKCgojIDExICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoK
CgoKIAoKCgogCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKIAoKIAoKCgoKIAoK
CgogCgoKCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKIAoKCgoKCgog
CgoKCgoKCgoKCiMgMzYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaXN0cmluZy5ocHAiIDIKCn0KIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdt
YSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1ND
SEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIApjbGFzcyBJU3RyaW5n
VGVzdDsKY2xhc3MgSUJ1ZmZlcjsKY2xhc3MgSVRleHQ7CmNsYXNzIElTdHJpbmc7CgogCgppbmxp
bmUgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYVN0
cmluZyk7CmlubGluZSBzdGQ6OmlzdHJlYW0mICAgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0gJmFT
dHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU3RyaW5n
ICZhU3RyaW5nKTsKCgoKCgoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJU3RyaW5nICZz
dHJpbmcxLCBjb25zdCBJU3RyaW5nICZzdHJpbmcyKTsKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJU3RyaW5nICZzdHJpbmcxLCBjb25zdCBjaGFyICpwU3RyaW5nMik7CmlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgY2hhciAqcFN0cmluZzEsIGNvbnN0IElTdHJpbmcgJnN0cmluZzIp
OwppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElTdHJpbmcgJnN0cmluZzEsIGNvbnN0IElT
dHJpbmcgJnN0cmluZzIpOwppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElTdHJpbmcgJnN0
cmluZzEsIGNvbnN0IGNoYXIgKnBTdHJpbmcyKTsKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBjaGFyICpwU3RyaW5nMSwgY29uc3QgSVN0cmluZyAmc3RyaW5nMik7CmlubGluZSBib29sIG9w
ZXJhdG9yPChjb25zdCBJU3RyaW5nICZzdHJpbmcxLCBjb25zdCBJU3RyaW5nICZzdHJpbmcyKTsK
aW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IElTdHJpbmcgJnN0cmluZzEsIGNvbnN0IGNoYXIg
KnBTdHJpbmcyKTsKaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGNoYXIgKnBTdHJpbmcxLCBj
b25zdCBJU3RyaW5nICZzdHJpbmcyKTsKaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBJU3Ry
aW5nICZzdHJpbmcxLCBjb25zdCBJU3RyaW5nICZzdHJpbmcyKTsKaW5saW5lIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBJU3RyaW5nICZzdHJpbmcxLCBjb25zdCBjaGFyICpwU3RyaW5nMik7CmlubGlu
ZSBib29sIG9wZXJhdG9yPD0oY29uc3QgY2hhciAqcFN0cmluZzEsIGNvbnN0IElTdHJpbmcgJnN0
cmluZzIpOwppbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgSVN0cmluZyAmc3RyaW5nMSwgY29u
c3QgSVN0cmluZyAmc3RyaW5nMik7CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBJU3RyaW5n
ICZzdHJpbmcxLCBjb25zdCBjaGFyICpwU3RyaW5nMik7CmlubGluZSBib29sIG9wZXJhdG9yPihj
b25zdCBjaGFyICpwU3RyaW5nMSwgY29uc3QgSVN0cmluZyAmc3RyaW5nMik7CmlubGluZSBib29s
IG9wZXJhdG9yPj0oY29uc3QgSVN0cmluZyAmc3RyaW5nMSwgY29uc3QgSVN0cmluZyAmc3RyaW5n
Mik7CmlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgSVN0cmluZyAmc3RyaW5nMSwgY29uc3Qg
Y2hhciAqcFN0cmluZzIpOwppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGNoYXIgKnBTdHJp
bmcxLCBjb25zdCBJU3RyaW5nICZzdHJpbmcyKTsKSVN0cmluZyAgIG9wZXJhdG9yKyhjb25zdCBj
aGFyICpwU3RyaW5nLCBjb25zdCBJU3RyaW5nICZhU3RyaW5nKTsKSVN0cmluZyAgIG9wZXJhdG9y
Jihjb25zdCBjaGFyICpwU3RyaW5nLCBjb25zdCBJU3RyaW5nICZhU3RyaW5nKTsKSVN0cmluZyAg
IG9wZXJhdG9yfChjb25zdCBjaGFyICpwU3RyaW5nLCBjb25zdCBJU3RyaW5nICZhU3RyaW5nKTsK
SVN0cmluZyAgIG9wZXJhdG9yXihjb25zdCBjaGFyICpwU3RyaW5nLCBjb25zdCBJU3RyaW5nICZh
U3RyaW5nKTsKCiAKCiAKCmNsYXNzICAgSVN0cmluZwp7CnB1YmxpYzoKCiAKIAogCgoKCgoKCgoj
IDEzNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
c3RyaW5nLmhwcCIKCgogICB0eXBlZGVmIHVuc2lnbmVkIGludCB1b2Zmc2V0X3Q7CiAgIHR5cGVk
ZWYgdW5zaWduZWQgaW50IHVsZW5ndGhfdDsKICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWNvdW50
X3Q7CiAgIHR5cGVkZWYgICBzaWduZWQgaW50IG9mZnNldF90OwoKCgoKCiAKICBJU3RyaW5nICAg
ICAgICAgICAoICk7CiAgSVN0cmluZyAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5n
ICk7CiAgSVN0cmluZyAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICpwSVN0cmluZyApOwoKICBJ
U3RyaW5nICAgICAgICAgICAoIGludCAgYW5JbnQgKTsKICBJU3RyaW5nICAgICAgICAgICAoIHVu
c2lnbmVkICBhblVuc2lnbmVkICk7CiAgSVN0cmluZyAgICAgICAgICAgKCBsb25nICBhTG9uZyAp
OwogIElTdHJpbmcgICAgICAgICAgICggdW5zaWduZWQgbG9uZyAgYW5VbnNpZ25lZExvbmcgKTsK
CgoKCiAgSVN0cmluZyAgICAgICAgICAgKCBzaG9ydCAgYVNob3J0ICk7CiAgSVN0cmluZyAgICAg
ICAgICAgKCB1bnNpZ25lZCBzaG9ydCAgYW5VbnNpZ25lZFNob3J0ICk7CiAgSVN0cmluZyAgICAg
ICAgICAgKCBkb3VibGUgIGFEb3VibGUgKTsKCiAgSVN0cmluZyAgICAgICAgICAgKCBjaGFyICBh
Q2hhciApOwogIElTdHJpbmcgICAgICAgICAgICggdW5zaWduZWQgY2hhciAgYW5VbnNpZ25lZENo
YXIgKTsKICBJU3RyaW5nICAgICAgICAgICAoIHNpZ25lZCBjaGFyICBhU2lnbmVkQ2hhcik7Cgog
IElTdHJpbmcgICAgICAgICAgICggY29uc3QgY2hhciAgKnBDaGFyICk7CiAgSVN0cmluZyAgICAg
ICAgICAgKCBjb25zdCB1bnNpZ25lZCBjaGFyICAqcFVuc2lnbmVkQ2hhciApOwogIElTdHJpbmcg
ICAgICAgICAgICggY29uc3Qgc2lnbmVkIGNoYXIgICpwU2lnbmVkQ2hhciApOwoKICBJU3RyaW5n
ICAgICAgICAgICAoIGNvbnN0IHZvaWQgKnBCdWZmZXIxLAogICAgICAgICAgICAgICAgICAgICAg
dWxlbmd0aF90ICAgbGVuQnVmZmVyMSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAg
IHBhZENoYXJhY3RlciA9ICcgJyApOwogIElTdHJpbmcgICAgICAgICAgICggY29uc3Qgdm9pZCAq
cEJ1ZmZlcjEsCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBsZW5CdWZmZXIxLAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAgKnBCdWZmZXIyLAogICAgICAgICAgICAg
ICAgICAgICAgdWxlbmd0aF90ICAgbGVuQnVmZmVyMiwKICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgICAgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKTsKICBJU3RyaW5nICAgICAgICAgICAoIGNv
bnN0IHZvaWQgKnBCdWZmZXIxLAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgbGVu
QnVmZmVyMSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgICpwQnVmZmVyMiwKICAg
ICAgICAgICAgICAgICAgICAgIHVsZW5ndGhfdCAgIGxlbkJ1ZmZlcjIsCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICAqcEJ1ZmZlcjMsCiAgICAgICAgICAgICAgICAgICAgICB1bGVu
Z3RoX3QgICBsZW5CdWZmZXIzLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgIHBh
ZENoYXJhY3RlciA9ICcgJyApOwogIElTdHJpbmcgICAgICAgICAgICggY29uc3QgSVRleHQgJmFu
SVRleHQgKTsKICB+SVN0cmluZyAgICAgICAgICAoICk7CgogCklTdHJpbmcKICBhc1N0cmluZyAg
ICAgICAgICAoICkgY29uc3QsCiAgYXNEZWJ1Z0luZm8gICAgICAgKCApIGNvbnN0OwoKCmZyaWVu
ZCBzdGQ6Om9zdHJlYW0mICAgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJmFTdHJlYW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZhU3Ry
aW5nKTsKZnJpZW5kIHN0ZDo6aXN0cmVhbSYgICBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSAmYVN0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTdHJpbmcg
JmFTdHJpbmcpOwpzdGF0aWMgSVN0cmluZyBsaW5lRnJvbShzdGQ6OmlzdHJlYW0gJmFTdHJlYW0s
IGNoYXIgZGVsaW0gPSAnXG4nKTsKCgoKCgoKIApib29sCiAgaXNBbHBoYW51bWVyaWMgICAgKCAp
IGNvbnN0LAogIGlzQWxwaGFiZXRpYyAgICAgICggKSBjb25zdCwKICBpc0FTQ0lJICAgICAgICAg
ICAoICkgY29uc3QsCiAgaXNCaW5hcnlEaWdpdHMgICAgKCApIGNvbnN0LAogIGlzQ29udHJvbCAg
ICAgICAgICggKSBjb25zdCwKICBpc0RpZ2l0cyAgICAgICAgICAoICkgY29uc3QsCiAgaXNHcmFw
aGljcyAgICAgICAgKCApIGNvbnN0LAogIGlzSGV4RGlnaXRzICAgICAgICggKSBjb25zdCwKICBp
c0xvd2VyQ2FzZSAgICAgICAoICkgY29uc3QsCiAgaXNQcmludGFibGUgICAgICAgKCApIGNvbnN0
LAogIGlzUHVuY3R1YXRpb24gICAgICggKSBjb25zdCwKICBpc1VwcGVyQ2FzZSAgICAgICAoICkg
Y29uc3QsCiAgaXNXaGl0ZVNwYWNlICAgICAgKCApIGNvbnN0OwoKIApib29sCiAgaXNNQkNTICAg
ICAgICAgICAgKCApIGNvbnN0LAogIGlzREJDUyAgICAgICAgICAgICggKSBjb25zdCwKICBpc1NC
Q1MgICAgICAgICAgICAoICkgY29uc3QsCiAgaXNWYWxpZE1CQ1MgICAgICAgKCApIGNvbnN0LAog
IGlzVmFsaWREQkNTICAgICAgICggKSBjb25zdCwKICBpbmNsdWRlc01CQ1MgICAgICAoICkgY29u
c3QsCiAgaW5jbHVkZXNEQkNTICAgICAgKCApIGNvbnN0LAogIGluY2x1ZGVzU0JDUyAgICAgICgg
KSBjb25zdDsKCgogCmJvb2wKICBpc0xpa2UgICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFQ
YXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgemVyb09yTW9yZSA9
ICcqJywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIGFueUNoYXIgICAgPSAn
PycgKSBjb25zdCwKICBpc0xpa2UgICAgICAgICAgICAoIGNvbnN0IGNoYXIgICAgKnBQYXR0ZXJu
LAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgemVyb09yTW9yZSA9ICcqJywK
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIGFueUNoYXIgICAgPSAnPycgKSBj
b25zdCwKCiAgaXNBYmJyZXZpYXRpb25Gb3IgKCBjb25zdCBJU3RyaW5nICZmdWxsU3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgICBtaW5BYmJyZXZMZW5ndGggPSAwICkg
Y29uc3QsCiAgaXNBYmJyZXZpYXRpb25Gb3IgKCBjb25zdCBjaGFyICAgICpwRnVsbFN0cmluZywK
ICAgICAgICAgICAgICAgICAgICAgIHVsZW5ndGhfdCAgICAgbWluQWJicmV2TGVuZ3RoID0gMCAp
IGNvbnN0LAoKICBpbmNsdWRlcyAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgICAgICZhU3RyaW5n
ICkgY29uc3QsCiAgaW5jbHVkZXMgICAgICAgICAgKCBjb25zdCBjaGFyICAgICAgICAqcFN0cmlu
ZyApIGNvbnN0LAogIGluY2x1ZGVzICAgICAgICAgICggY2hhciAgICAgICAgICAgICAgIGFDaGFy
ICAgKSBjb25zdCwKICBpbmNsdWRlcyAgICAgICAgICAoIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVz
dCAgICkgY29uc3Q7CgogCmZyaWVuZCBib29sCiAgb3BlcmF0b3IgPT0gICAgICAoIGNvbnN0IElT
dHJpbmcgJnN0cmluZzEsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJnN0cmlu
ZzIgICksCiAgb3BlcmF0b3IgPT0gICAgICAoIGNvbnN0IElTdHJpbmcgJnN0cmluZzEsCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcyICksCiAgb3BlcmF0b3IgPT0g
ICAgICAoIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcxLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBJU3RyaW5nICZzdHJpbmcyICApLAoKICBvcGVyYXRvciAhPSAgICAgICggY29uc3QgSVN0cmlu
ZyAmc3RyaW5nMSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmc3RyaW5nMiAg
KSwKICBvcGVyYXRvciAhPSAgICAgICggY29uc3QgSVN0cmluZyAmc3RyaW5nMSwKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcFN0cmluZzIgKSwKICBvcGVyYXRvciAhPSAgICAg
ICggY29uc3QgY2hhciAgICAqcFN0cmluZzEsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElT
dHJpbmcgJnN0cmluZzIgICksCgogIG9wZXJhdG9yIDwgICAgICAgKCBjb25zdCBJU3RyaW5nICZz
dHJpbmcxLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZzdHJpbmcyICApLAog
IG9wZXJhdG9yIDwgICAgICAgKCBjb25zdCBJU3RyaW5nICZzdHJpbmcxLAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICAgICpwU3RyaW5nMiApLAogIG9wZXJhdG9yIDwgICAgICAgKCBj
b25zdCBjaGFyICAgICpwU3RyaW5nMSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmlu
ZyAmc3RyaW5nMiAgKSwKCiAgb3BlcmF0b3IgPD0gICAgICAoIGNvbnN0IElTdHJpbmcgJnN0cmlu
ZzEsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJnN0cmluZzIgICksCiAgb3Bl
cmF0b3IgPD0gICAgICAoIGNvbnN0IElTdHJpbmcgJnN0cmluZzEsCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcyICksCiAgb3BlcmF0b3IgPD0gICAgICAoIGNvbnN0
IGNoYXIgICAgKnBTdHJpbmcxLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZz
dHJpbmcyICApLAoKICBvcGVyYXRvciA+ICAgICAgICggY29uc3QgSVN0cmluZyAmc3RyaW5nMSwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmc3RyaW5nMiAgKSwKICBvcGVyYXRv
ciA+ICAgICAgICggY29uc3QgSVN0cmluZyAmc3RyaW5nMSwKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAgICAqcFN0cmluZzIgKSwKICBvcGVyYXRvciA+ICAgICAgICggY29uc3QgY2hh
ciAgICAqcFN0cmluZzEsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJnN0cmlu
ZzIgICksCgogIG9wZXJhdG9yID49ICAgICAgKCBjb25zdCBJU3RyaW5nICZzdHJpbmcxLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZzdHJpbmcyICApLAogIG9wZXJhdG9yID49
ICAgICAgKCBjb25zdCBJU3RyaW5nICZzdHJpbmcxLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICAgICpwU3RyaW5nMiApLAogIG9wZXJhdG9yID49ICAgICAgKCBjb25zdCBjaGFyICAg
ICpwU3RyaW5nMSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmc3RyaW5nMiAg
KTsKCiAKICBvcGVyYXRvciBjaGFyKiAgICAgICAgICAoICkgY29uc3Q7CiAgb3BlcmF0b3IgdW5z
aWduZWQgY2hhciogKCApIGNvbnN0OwogIG9wZXJhdG9yIHNpZ25lZCBjaGFyKiAgICggKSBjb25z
dDsKCgpsb25nCiAgYXNJbnQgICAgICAgICAgICAgICAgICAgKCApIGNvbnN0OwoKdW5zaWduZWQg
bG9uZwogIGFzVW5zaWduZWQgICAgICAgICAgICAgICggKSBjb25zdDsKCgoKCgoKCgoKZG91Ymxl
CiAgYXNEb3VibGUgICAgICAgICAgICAgICAgKCApIGNvbnN0OwoKIApJU3RyaW5nCiAmYjJjICAg
ICAgICAgICAgICAoICksCiAmYjJkICAgICAgICAgICAgICAoICksCiAmYjJ4ICAgICAgICAgICAg
ICAoICk7CgpzdGF0aWMgSVN0cmluZwogIGIyYyAgICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5n
ICZhU3RyaW5nICksCiAgYjJkICAgICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcg
KSwKICBiMnggICAgICAgICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApOwoKIApJU3Ry
aW5nCiAmYzJiICAgICAgICAgICAgICAoICksCiAmYzJkICAgICAgICAgICAgICAoICksCiAmYzJ4
ICAgICAgICAgICAgICAoICk7CgpzdGF0aWMgSVN0cmluZwogIGMyYiAgICAgICAgICAgICAgKCBj
b25zdCBJU3RyaW5nICZhU3RyaW5nICksCiAgYzJkICAgICAgICAgICAgICAoIGNvbnN0IElTdHJp
bmcgJmFTdHJpbmcgKSwKICBjMnggICAgICAgICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmlu
ZyApOwoKIApJU3RyaW5nCiAmZDJiICAgICAgICAgICAgICAoICksCiAmZDJjICAgICAgICAgICAg
ICAoICksCiAmZDJ4ICAgICAgICAgICAgICAoICk7CgpzdGF0aWMgSVN0cmluZwogIGQyYiAgICAg
ICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nICksCiAgZDJjICAgICAgICAgICAgICAo
IGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICBkMnggICAgICAgICAgICAgICggY29uc3QgSVN0
cmluZyAmYVN0cmluZyApOwoKIApJU3RyaW5nCiAmeDJiICAgICAgICAgICAgICAoICksCiAmeDJj
ICAgICAgICAgICAgICAoICksCiAmeDJkICAgICAgICAgICAgICAoICk7CgpzdGF0aWMgSVN0cmlu
ZwogIHgyYiAgICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nICksCiAgeDJjICAg
ICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICB4MmQgICAgICAgICAgICAg
ICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApOwoKCiAKSVN0cmluZwogJm9wZXJhdG9yID0gICAg
ICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nICksCiAgb3BlcmF0b3IgfiAgICAgICAoICAgICAg
ICAgICAgICAgICAgICAgICAgKSBjb25zdCwKICBvcGVyYXRvciArICAgICAgICggY29uc3QgSVN0
cmluZyAmYVN0cmluZyApIGNvbnN0LAogIG9wZXJhdG9yICsgICAgICAgKCBjb25zdCBjaGFyICAg
ICpwU3RyaW5nICkgY29uc3QsCiAmb3BlcmF0b3IgKz0gICAgICAoIGNvbnN0IElTdHJpbmcgJmFT
dHJpbmcgKSwKICZvcGVyYXRvciArPSAgICAgICggY29uc3QgY2hhciAgICAqcFN0cmluZyApLAog
IG9wZXJhdG9yICYgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nICkgY29uc3QsCiAgb3Bl
cmF0b3IgJiAgICAgICAoIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcgKSBjb25zdCwKICZvcGVyYXRv
ciAmPSAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApLAogJm9wZXJhdG9yICY9ICAgICAg
KCBjb25zdCBjaGFyICAgICpwU3RyaW5nICksCiAgb3BlcmF0b3IgfCAgICAgICAoIGNvbnN0IElT
dHJpbmcgJmFTdHJpbmcgKSBjb25zdCwKICBvcGVyYXRvciB8ICAgICAgICggY29uc3QgY2hhciAg
ICAqcFN0cmluZyApIGNvbnN0LAogJm9wZXJhdG9yIHw9ICAgICAgKCBjb25zdCBJU3RyaW5nICZh
U3RyaW5nICksCiAmb3BlcmF0b3IgfD0gICAgICAoIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcgKSwK
ICBvcGVyYXRvciBeICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApIGNvbnN0LAogIG9w
ZXJhdG9yIF4gICAgICAgKCBjb25zdCBjaGFyICAgICpwU3RyaW5nICkgY29uc3QsCiAmb3BlcmF0
b3IgXj0gICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICZvcGVyYXRvciBePSAgICAg
ICggY29uc3QgY2hhciAgICAqcFN0cmluZyApOwoKZnJpZW5kIElTdHJpbmcKICAgIG9wZXJhdG9y
ICsgICAgICAgKCBjb25zdCBjaGFyICAgICpwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICAgIG9wZXJhdG9yICYgICAgICAg
KCBjb25zdCBjaGFyICAgICpwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICAgIG9wZXJhdG9yIHwgICAgICAgKCBjb25zdCBj
aGFyICAgICpwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElT
dHJpbmcgJmFTdHJpbmcgKSwKICAgIG9wZXJhdG9yIF4gICAgICAgKCBjb25zdCBjaGFyICAgICpw
U3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFT
dHJpbmcgKTsKCiAKdWxlbmd0aF90CiAgc2l6ZSAgICAgICAgICAgICAgKCApIGNvbnN0LAogIGxl
bmd0aCAgICAgICAgICAgICggKSBjb25zdDsKCklTdHJpbmcKICBzdWJTdHJpbmcgICAgICAgICAo
IHVvZmZzZXRfdCBzdGFydFBvcyApIGNvbnN0LAogIHN1YlN0cmluZyAgICAgICAgICggdW9mZnNl
dF90IHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90IGxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgICAgIHBhZENoYXJhY3RlciA9ICcgJyApIGNvbnN0OwoK
Y2hhcgogJm9wZXJhdG9yIFtdICAgICAgICggdW5zaWduZWQgaW5kZXggKTsKCmNvbnN0IGNoYXIK
ICZvcGVyYXRvciBbXSAgICAgICAoIHVuc2lnbmVkIGluZGV4ICkgY29uc3Q7CgpjaGFyCiAmb3Bl
cmF0b3IgW10gICAgICAgKCBzaWduZWQgaW5kZXggKTsKCmNvbnN0IGNoYXIKICZvcGVyYXRvciBb
XSAgICAgICAoIHNpZ25lZCBpbmRleCApIGNvbnN0OwoKY2hhcgogJm9wZXJhdG9yIFtdICAgICAg
ICggdW5zaWduZWQgbG9uZyBpbmRleCApOwoKY29uc3QgY2hhcgogJm9wZXJhdG9yIFtdICAgICAg
ICggdW5zaWduZWQgbG9uZyBpbmRleCApIGNvbnN0OwoKY2hhcgogJm9wZXJhdG9yIFtdICAgICAg
ICggc2lnbmVkIGxvbmcgaW5kZXggKTsKCmNvbnN0IGNoYXIKICZvcGVyYXRvciBbXSAgICAgICAo
IHNpZ25lZCBsb25nIGluZGV4ICkgY29uc3Q7CgpJU3RyaW5nRW51bTo6Q2hhclR5cGUKICBjaGFy
VHlwZSAgICAgICAgICAoIHVvZmZzZXRfdCBpbmRleCApIGNvbnN0OwoKIAp1b2Zmc2V0X3QKICBp
bmRleE9mICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9mICAg
ICAgICAgICAoIGNvbnN0IGNoYXIgICAgKnBTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1
b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9mICAgICAgICAgICAo
IGNoYXIgICAgICAgICAgIGFDaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0
X3QgICAgICBzdGFydFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9mICAgICAgICAgICAoIGNvbnN0
IElTdHJpbmdUZXN0ICZhVGVzdCwKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAg
IHN0YXJ0UG9zID0gMSApIGNvbnN0LAoKICBpbmRleE9mQW55QnV0ICAgICAoIGNvbnN0IElTdHJp
bmcgJnZhbGlkQ2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFy
dFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9mQW55QnV0ICAgICAoIGNvbnN0IGNoYXIgICAgKnBW
YWxpZENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3Mg
PSAxICkgY29uc3QsCiAgaW5kZXhPZkFueUJ1dCAgICAgKCBjaGFyICAgICAgICAgICB2YWxpZENo
YXIsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDEgKSBj
b25zdCwKICBpbmRleE9mQW55QnV0ICAgICAoIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSApIGNvbnN0LAoK
ICBpbmRleE9mQW55T2YgICAgICAoIGNvbnN0IElTdHJpbmcgJnNlYXJjaENoYXJzLAogICAgICAg
ICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAxICkgY29uc3QsCiAgaW5k
ZXhPZkFueU9mICAgICAgKCBjb25zdCBjaGFyICAgICpwU2VhcmNoQ2hhcnMsCiAgICAgICAgICAg
ICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9m
QW55T2YgICAgICAoIGNoYXIgICAgICAgICAgIHNlYXJjaENoYXIsCiAgICAgICAgICAgICAgICAg
ICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDEgKSBjb25zdCwKICBpbmRleE9mQW55T2Yg
ICAgICAoIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVzdCwKICAgICAgICAgICAgICAgICAgICAgIHVv
ZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSApIGNvbnN0Owp1Y291bnRfdAogIG9jY3VycmVuY2Vz
T2YgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVv
ZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSApIGNvbnN0LAogIG9jY3VycmVuY2VzT2YgICAgICgg
Y29uc3QgY2hhciAgICAqcFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAg
ICAgIHN0YXJ0UG9zID0gMSApIGNvbnN0LAogIG9jY3VycmVuY2VzT2YgICAgICggY2hhciAgICAg
ICAgICAgYUNoYXJhY3RlciwKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0
YXJ0UG9zID0gMSApIGNvbnN0LAogIG9jY3VycmVuY2VzT2YgICAgICggY29uc3QgSVN0cmluZ1Rl
c3QgJmFUZXN0LAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3Mg
PSAxICkgY29uc3Q7CgoKIApzdGF0aWMgY29uc3QgSVN0cmluZzo6dW9mZnNldF90CiAgICBrRW5k
T2ZTdHJpbmc7Cgp1b2Zmc2V0X3QKICBsYXN0SW5kZXhPZiAgICAgICAoIGNvbnN0IElTdHJpbmcg
JmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9
IGtFbmRPZlN0cmluZyApIGNvbnN0LAogIGxhc3RJbmRleE9mICAgICAgICggY29uc3QgY2hhciAg
ICAqcFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9z
ID0ga0VuZE9mU3RyaW5nICkgY29uc3QsCiAgbGFzdEluZGV4T2YgICAgICAgKCBjaGFyICAgICAg
ICAgICBhQ2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3Rh
cnRQb3MgPSBrRW5kT2ZTdHJpbmcgKSBjb25zdCwKICBsYXN0SW5kZXhPZiAgICAgICAoIGNvbnN0
IElTdHJpbmdUZXN0ICZhVGVzdCwKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAg
IHN0YXJ0UG9zID0ga0VuZE9mU3RyaW5nICkgY29uc3QsCgogIGxhc3RJbmRleE9mQW55QnV0ICgg
Y29uc3QgSVN0cmluZyAmdmFsaWRDaGFycywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRf
dCAgICAgIHN0YXJ0UG9zID0ga0VuZE9mU3RyaW5nICkgY29uc3QsCiAgbGFzdEluZGV4T2ZBbnlC
dXQgKCBjb25zdCBjaGFyICAgICpwVmFsaWRDaGFycywKICAgICAgICAgICAgICAgICAgICAgIHVv
ZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0ga0VuZE9mU3RyaW5nICkgY29uc3QsCiAgbGFzdEluZGV4
T2ZBbnlCdXQgKCBjaGFyICAgICAgICAgICB2YWxpZENoYXIsCiAgICAgICAgICAgICAgICAgICAg
ICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IGtFbmRPZlN0cmluZyApIGNvbnN0LAogIGxhc3RJ
bmRleE9mQW55QnV0ICggY29uc3QgSVN0cmluZ1Rlc3QgJmFUZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSBrRW5kT2ZTdHJpbmcgKSBjb25zdCwKCiAg
bGFzdEluZGV4T2ZBbnlPZiAgKCBjb25zdCBJU3RyaW5nICZzZWFyY2hDaGFycywKICAgICAgICAg
ICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0ga0VuZE9mU3RyaW5nICkgY29u
c3QsCiAgbGFzdEluZGV4T2ZBbnlPZiAgKCBjb25zdCBjaGFyICAgICpwU2VhcmNoQ2hhcnMsCiAg
ICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IGtFbmRPZlN0cmlu
ZyApIGNvbnN0LAogIGxhc3RJbmRleE9mQW55T2YgICggY2hhciAgICAgICAgICAgc2VhcmNoQ2hh
ciwKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0ga0VuZE9m
U3RyaW5nICkgY29uc3QsCiAgbGFzdEluZGV4T2ZBbnlPZiAgKCBjb25zdCBJU3RyaW5nVGVzdCAm
YVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IGtF
bmRPZlN0cmluZyApIGNvbnN0OwoKIApzdGF0aWMgY29uc3QgSVN0cmluZzo6dWNvdW50X3QKICAg
IGtBbGxDaGFuZ2VzOwoKSVN0cmluZwogJmNlbnRlciAgICAgICAgICAgICggdWxlbmd0aF90IGxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcg
KSwKCiAmY2hhbmdlICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZpbnB1dFN0cmluZywKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJm91dHB1dFN0cmluZywKICAgICAgICAg
ICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSwKICAgICAgICAgICAgICAg
ICAgICAgIHVjb3VudF90ICAgICAgIG51bUNoYW5nZXMgPSBrQWxsQ2hhbmdlcyApLAogJmNoYW5n
ZSAgICAgICAgICAgICggY29uc3QgSVN0cmluZyAmaW5wdXRTdHJpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICAgICpwT3V0cHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAxLAogICAgICAgICAgICAgICAgICAgICAgdWNv
dW50X3QgICAgICAgbnVtQ2hhbmdlcyA9IGtBbGxDaGFuZ2VzICksCiAmY2hhbmdlICAgICAgICAg
ICAgKCBjb25zdCBjaGFyICAgICpwSW5wdXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJU3RyaW5nICZvdXRwdXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0
X3QgICAgICBzdGFydFBvcyA9IDEsCiAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAg
ICBudW1DaGFuZ2VzID0ga0FsbENoYW5nZXMgKSwKICZjaGFuZ2UgICAgICAgICAgICAoIGNvbnN0
IGNoYXIgICAgKnBJbnB1dFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
ICAgKnBPdXRwdXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBz
dGFydFBvcyA9IDEsCiAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAgICBudW1DaGFu
Z2VzID0ga0FsbENoYW5nZXMgKSwKCiAmY29weSAgICAgICAgICAgICAgKCB1Y291bnRfdCBudW1D
b3BpZXMgKSwKCiAmaW5zZXJ0ICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgaW5kZXggPSAwLAogICAgICAgICAg
ICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyID0gJyAnICksCiAmaW5zZXJ0
ICAgICAgICAgICAgKCBjb25zdCBjaGFyICAgICpwU3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgdW9mZnNldF90ICAgICAgaW5kZXggPSAwLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAg
ICAgICAgICAgcGFkQ2hhcmFjdGVyID0gJyAnICksCgogJmxlZnRKdXN0aWZ5ICAgICAgICggdWxl
bmd0aF90ICAgICAgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAg
cGFkQ2hhcmFjdGVyID0gJyAnICksCgogJmxvd2VyQ2FzZSAgICAgICAgICggKSwKCiAmb3Zlcmxh
eVdpdGggICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgdW9mZnNldF90ICAgICAgaW5kZXggICAgICAgID0gMSwKICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciA9ICcgJyApLAogJm92ZXJsYXlXaXRoICAgICAg
ICggY29uc3QgY2hhciAgICAqcFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRf
dCAgICAgIGluZGV4ICAgICAgICA9IDEsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAg
ICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKSwKCiAmcmVtb3ZlICAgICAgICAgICAgKCB1b2Zmc2V0
X3Qgc3RhcnRQb3MgKSwKICZyZW1vdmUgICAgICAgICAgICAoIHVvZmZzZXRfdCBzdGFydFBvcywK
ICAgICAgICAgICAgICAgICAgICAgIHVjb3VudF90ICBudW1DaGFycyApLAoKICZyZXZlcnNlICAg
ICAgICAgICAoICksCgogJnJpZ2h0SnVzdGlmeSAgICAgICggdWxlbmd0aF90IGxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKSwKCiAmc3Ry
aXAgICAgICAgICAgICAgKCApLAogJnN0cmlwICAgICAgICAgICAgICggY2hhciAgICAgICAgICAg
ICAgIGFDaGFyYWN0ZXIgKSwKICZzdHJpcCAgICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgICAg
ICZhU3RyaW5nICksCiAmc3RyaXAgICAgICAgICAgICAgKCBjb25zdCBjaGFyICAgICAgICAqcFN0
cmluZyApLAogJnN0cmlwICAgICAgICAgICAgICggY29uc3QgSVN0cmluZ1Rlc3QgJmFUZXN0ICks
CgogJnN0cmlwTGVhZGluZyAgICAgICggKSwKICZzdHJpcExlYWRpbmcgICAgICAoIGNoYXIgICAg
ICAgICAgICAgICBhQ2hhcmFjdGVyICksCiAmc3RyaXBMZWFkaW5nICAgICAgKCBjb25zdCBJU3Ry
aW5nICAgICAmYVN0cmluZyApLAogJnN0cmlwTGVhZGluZyAgICAgICggY29uc3QgY2hhciAgICAg
ICAgKnBTdHJpbmcgKSwKICZzdHJpcExlYWRpbmcgICAgICAoIGNvbnN0IElTdHJpbmdUZXN0ICZh
VGVzdCApLAoKICZzdHJpcFRyYWlsaW5nICAgICAoICksCiAmc3RyaXBUcmFpbGluZyAgICAgKCBj
aGFyICAgICAgICAgICAgICAgYUNoYXJhY3RlciApLAogJnN0cmlwVHJhaWxpbmcgICAgICggY29u
c3QgSVN0cmluZyAgICAgJmFTdHJpbmcgKSwKICZzdHJpcFRyYWlsaW5nICAgICAoIGNvbnN0IGNo
YXIgICAgICAgICpwU3RyaW5nICksCiAmc3RyaXBUcmFpbGluZyAgICAgKCBjb25zdCBJU3RyaW5n
VGVzdCAmYVRlc3QgKSwKCiAmdHJhbnNsYXRlICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZpbnB1
dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmb3V0cHV0Q2hhcnMs
CiAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcg
KSwKICZ0cmFuc2xhdGUgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmlucHV0Q2hhcnMsCiAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpwT3V0cHV0Q2hhcnMsCiAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKSwKICZ0cmFuc2xh
dGUgICAgICAgICAoIGNvbnN0IGNoYXIgICAgKnBJbnB1dENoYXJzLAogICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSVN0cmluZyAmb3V0cHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICBj
aGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKSwKICZ0cmFuc2xhdGUgICAgICAgICAo
IGNvbnN0IGNoYXIgICAgKnBJbnB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAgICAqcE91dHB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAg
ICAgcGFkQ2hhcmFjdGVyID0gJyAnICksCgogJnVwcGVyQ2FzZSAgICAgICAgICggKTsKCnN0YXRp
YyBJU3RyaW5nCiAgY2VudGVyICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgICAgbGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyID0gJyAnICksCgogIGNoYW5nZSAg
ICAgICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElTdHJpbmcgJmlucHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SVN0cmluZyAmb3V0cHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAg
ICAgc3RhcnRQb3MgPSAxLAogICAgICAgICAgICAgICAgICAgICAgdWNvdW50X3QgICAgICAgbnVt
Q2hhbmdlcyA9IGtBbGxDaGFuZ2VzICksCiAgY2hhbmdlICAgICAgICAgICAgKCBjb25zdCBJU3Ry
aW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmaW5wdXRT
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpwT3V0cHV0U3RyaW5n
LAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAxLAogICAg
ICAgICAgICAgICAgICAgICAgdWNvdW50X3QgICAgICAgbnVtQ2hhbmdlcyA9IGtBbGxDaGFuZ2Vz
ICksCiAgY2hhbmdlICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcElucHV0U3RyaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSVN0cmluZyAmb3V0cHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAxLAogICAgICAgICAgICAgICAgICAgICAgdWNv
dW50X3QgICAgICAgbnVtQ2hhbmdlcyA9IGtBbGxDaGFuZ2VzICksCiAgY2hhbmdlICAgICAgICAg
ICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAgICAqcElucHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAg
ICAqcE91dHB1dFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0
YXJ0UG9zID0gMSwKICAgICAgICAgICAgICAgICAgICAgIHVjb3VudF90ICAgICAgIG51bUNoYW5n
ZXMgPSBrQWxsQ2hhbmdlcyApLAoKICBjb3B5ICAgICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcg
JmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAgICBudW1Db3BpZXMg
KSwKCiAgaW5zZXJ0ICAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYW5JbnNlcnQsCiAgICAgICAgICAgICAgICAg
ICAgICB1b2Zmc2V0X3QgICAgICBpbmRleCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICAgICAgICAgICBwYWRDaGFyYWN0ZXIgPSAnICcgKSwKICBpbnNlcnQgICAgICAgICAgICAoIGNv
bnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAg
ICpwSW5zZXJ0LAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgaW5kZXggPSAw
LAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyID0gJyAn
ICksCgogIGxlZnRKdXN0aWZ5ICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAg
ICAgICAgICAgICAgICAgIHVsZW5ndGhfdCAgICAgIGxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciA9ICcgJyApLAoKICBsb3dlckNhc2UgICAg
ICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKCiAgb3ZlcmxheVdpdGggICAgICAgKCBj
b25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmlu
ZyAmYW5PdmVybGF5LAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgaW5kZXgg
ICAgICAgID0gMSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJh
Y3RlciA9ICcgJyApLAogIG92ZXJsYXlXaXRoICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmlu
ZywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnBPdmVybGF5LAogICAgICAg
ICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgaW5kZXggICAgICAgID0gMSwKICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciA9ICcgJyApLAoKICByZW1v
dmUgICAgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcyApLAogIHJlbW92ZSAgICAgICAgICAgICggY29u
c3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAg
IHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgdWNvdW50X3QgICAgICAgbnVtQ2hhcnMg
KSwKCiAgcmV2ZXJzZSAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nICksCgogIHJp
Z2h0SnVzdGlmeSAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAg
ICAgICAgIHVsZW5ndGhfdCAgICAgIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
ICAgICAgICAgIHBhZENoYXJhY3RlciA9ICcgJyApLAoKICBzdHJpcEJsYW5rcyAgICAgICAoIGNv
bnN0IElTdHJpbmcgJmFTdHJpbmcgKSwKICBzdHJpcCAgICAgICAgICAgICAoIGNvbnN0IElTdHJp
bmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBhQ2hhciAp
LAogIHN0cmlwICAgICAgICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFTdHJpbmdPZkNoYXJzICksCiAgc3RyaXAgICAg
ICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAgICAqcFN0cmluZ09mQ2hhcnMgKSwKICBzdHJpcCAgICAgICAgICAgICAoIGNv
bnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5n
VGVzdCAmYVRlc3QgKSwKCiAgc3RyaXBMZWFkaW5nQmxhbmtzICggY29uc3QgSVN0cmluZyAmYVN0
cmluZyApLAogIHN0cmlwTGVhZGluZyAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIGFDaGFyICksCiAgc3RyaXBMZWFkaW5n
ICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSVN0cmluZyAmYVN0cmluZ09mQ2hhcnMgKSwKICBzdHJpcExlYWRpbmcgICAgICAoIGNvbnN0
IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpw
U3RyaW5nT2ZDaGFycyApLAogIHN0cmlwTGVhZGluZyAgICAgICggY29uc3QgSVN0cmluZyAmYVN0
cmluZywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVzdCApLAoK
ICBzdHJpcFRyYWlsaW5nQmxhbmtzICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApLAogIHN0cmlw
VHJhaWxpbmcgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgICAgICAgICAgIGFDaGFyICksCiAgc3RyaXBUcmFpbGluZyAgICAgKCBjb25zdCBJ
U3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYVN0
cmluZ09mQ2hhcnMgKSwKICBzdHJpcFRyYWlsaW5nICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJp
bmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpwU3RyaW5nT2ZDaGFycyAp
LAogIHN0cmlwVHJhaWxpbmcgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZywKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVzdCApLAoKICB0cmFuc2xhdGUgICAg
ICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJU3RyaW5nICZpbnB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmlu
ZyAmb3V0cHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRD
aGFyYWN0ZXIgPSAnICcgKSwKICB0cmFuc2xhdGUgICAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFT
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZpbnB1dENoYXJzLAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcE91dHB1dENoYXJzLAogICAgICAg
ICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyID0gJyAnICksCiAgdHJh
bnNsYXRlICAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAgICAqcElucHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJU3RyaW5nICZvdXRwdXRDaGFycywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAg
ICAgICAgIHBhZENoYXJhY3RlciA9ICcgJyApLAogIHRyYW5zbGF0ZSAgICAgICAgICggY29uc3Qg
SVN0cmluZyAmYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnBJ
bnB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcE91dHB1dENo
YXJzLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyID0g
JyAnICksCgogIHVwcGVyQ2FzZSAgICAgICAgICggY29uc3QgSVN0cmluZyAmYVN0cmluZyApOwoK
IApJU3RyaW5nCiAmcmVtb3ZlV29yZHMgICAgICAgKCB1Y291bnRfdCBmaXJzdFdvcmQgKSwKICZy
ZW1vdmVXb3JkcyAgICAgICAoIHVjb3VudF90IGZpcnN0V29yZCwKICAgICAgICAgICAgICAgICAg
ICAgIHVjb3VudF90IG51bVdvcmRzICksCgogJnNwYWNlICAgICAgICAgICAgICggdWNvdW50X3Qg
bnVtU3BhY2VzID0gMSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgIHNwYWNlQ2hhciA9
ICcgJyApLAoKICB3b3JkICAgICAgICAgICAgICAoIHVjb3VudF90IHdvcmROdW1iZXIgKSBjb25z
dCwKCiAgd29yZHMgICAgICAgICAgICAgKCB1Y291bnRfdCBmaXJzdFdvcmQgKSBjb25zdCwKICB3
b3JkcyAgICAgICAgICAgICAoIHVjb3VudF90IGZpcnN0V29yZCwKICAgICAgICAgICAgICAgICAg
ICAgIHVjb3VudF90IG51bVdvcmRzICApIGNvbnN0OwoKdW9mZnNldF90CiAgaW5kZXhPZlBocmFz
ZSAgICAgKCBjb25zdCBJU3RyaW5nICZ3b3JkU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
dWNvdW50X3QgICAgICAgc3RhcnRXb3JkID0gMSApIGNvbnN0LAoKICBpbmRleE9mV29yZCAgICAg
ICAoIHVjb3VudF90IHdvcmROdW1iZXIgKSBjb25zdDsKCnVsZW5ndGhfdAogIGxlbmd0aE9mV29y
ZCAgICAgICggdWNvdW50X3Qgd29yZE51bWJlciApIGNvbnN0OwoKdWNvdW50X3QKICBudW1Xb3Jk
cyAgICAgICAgICAoICkgY29uc3QsCgogIHdvcmRJbmRleE9mUGhyYXNlICggY29uc3QgSVN0cmlu
ZyAmYVBocmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHVjb3VudF90ICAgICAgIHN0YXJ0V29y
ZCA9IDEgKSBjb25zdDsKCnN0YXRpYyBJU3RyaW5nCiAgc3BhY2UgICAgICAgICAgICAgKCBjb25z
dCBJU3RyaW5nICZhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgdWNvdW50X3QgICAgICAg
bnVtU3BhY2VzID0gMSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIHNwYWNl
Q2hhciA9ICcgJyApLAoKICByZW1vdmVXb3JkcyAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJp
bmcsCiAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAgICBzdGFydFdvcmQgKSwKICBy
ZW1vdmVXb3JkcyAgICAgICAoIGNvbnN0IElTdHJpbmcgJmFTdHJpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICB1Y291bnRfdCAgICAgICBzdGFydFdvcmQsCiAgICAgICAgICAgICAgICAgICAgICB1
Y291bnRfdCAgICAgICBudW1Xb3JkcyAgKTsKCgoKCgoKIAp2b2lkCiAgb3BlcmF0b3IgPj49ICgg
SURhdGFTdHJlYW0gJnRvV2hlcmUgKTsKdm9pZAogIG9wZXJhdG9yIDw8PSAoIElEYXRhU3RyZWFt
ICZmcm9tV2hlcmUgKTsKCnByb3RlY3RlZDoKIApzdGF0aWMgY29uc3QgY2hhcgogICAqIGNvbnN0
IG51bGwsCiAgICogY29uc3QgemVybywKICAgKiBjb25zdCBtYXhMb25nOwoKIApzdGF0aWMgY29u
c3QgY2hhciAqIG51bGxCdWYoKTsKCgogCklTdHJpbmcKICZzZXRCdWZmZXIgICAgICAgICAoIElC
dWZmZXIgKmlidWZmICksCgogJmluaXRCdWZmZXIgICAgICAgICggY29uc3Qgdm9pZCAqcDEsCiAg
ICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBsZW4xLAogICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcDIgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3Ro
X3QgICBsZW4yICAgID0gMCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnAzICAg
ICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgbGVuMyAgICA9IDAsCiAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICBwYWRDaGFyID0gMCApLAogJmluaXRCdWZm
ZXIgICAgICAgICggbG9uZyAgYUxvbmcgKSwKICZpbml0QnVmZmVyICAgICAgICAoIHVuc2lnbmVk
IGxvbmcgIGFuVW5zaWduZWRMb25nICksCgoKCgogJmluaXRCdWZmZXIgICAgICAgICggZG91Ymxl
ICBhRG91YmxlICk7CgoKIApjaGFyCiAqZGF0YSAgICAgICAgICAgICAgKCApIGNvbnN0OwoKSUJ1
ZmZlcgogKmJ1ZmZlciAgICAgICAgICAgICggKSBjb25zdDsKCnN0YXRpYyB1bGVuZ3RoX3QKICBs
ZW5ndGhPZiAgICAgICAgICAoIGNvbnN0IGNoYXIgKnBDaGFyICk7CgpzdGF0aWMgY2hhcgogKmRl
ZmF1bHRCdWZmZXIgICAgICggKTsKCgogCnR5cGVkZWYgZW51bSB7CiAgY2hhckluZGV4LAogIHdv
cmRJbmRleAogIH0gSW5kZXhUeXBlOwoKdW9mZnNldF90CiAgaW5kZXhPZldvcmQgICAgICAgKCB1
Y291bnRfdCAgd29yZE51bWJlciwKICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCBzdGFy
dFBvcywKICAgICAgICAgICAgICAgICAgICAgIHVjb3VudF90ICBudW1Xb3JkcyApIGNvbnN0OwoK
dWNvdW50X3QKICBvY2N1cnJlbmNlc09mICAgICAoIGNvbnN0IGNoYXIgKnBTZWFyY2hTdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBzZWFyY2hMZW4sCiAgICAgICAgICAg
ICAgICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcyApIGNvbnN0OwoKdW9mZnNldF90CiAgZmlu
ZFBocmFzZSAgICAgICAgKCBjb25zdCBJU3RyaW5nICZhUGhyYXNlLAogICAgICAgICAgICAgICAg
ICAgICAgdWNvdW50X3QgICAgICAgc3RhcnRXb3JkLAogICAgICAgICAgICAgICAgICAgICAgSW5k
ZXhUeXBlICAgICAgY2hhck9yV29yZCApIGNvbnN0OwoKYm9vbAogIGlzTGlrZSAgICAgICAgICAg
ICggY29uc3QgY2hhciAqcFBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3Qg
ICBwYXR0ZXJuTGVuLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgemVyb09yTW9y
ZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgIGFueUNoYXIgKSBjb25zdCwKCiAg
aXNBYmJyZXZGb3IgICAgICAgKCBjb25zdCBjaGFyICpwRnVsbFN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgIHVsZW5ndGhfdCAgIGZ1bGxMZW4sCiAgICAgICAgICAgICAgICAgICAgICB1bGVu
Z3RoX3QgICBtaW5MZW4gKSBjb25zdDsKCiAKSVN0cmluZwogJmNoYW5nZSAgICAgICAgICAgICgg
Y29uc3QgY2hhciAqcFBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBw
YXR0ZXJuTGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcFJlcGxhY2VtZW50
LAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgcmVwbGFjZW1lbnRMZW4sCiAgICAg
ICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcywKICAgICAgICAgICAgICAgICAg
ICAgIHVjb3VudF90ICAgIG51bUNoYW5nZXMgKSwKCiAmaW5zZXJ0ICAgICAgICAgICAgKCBjb25z
dCBjaGFyICpwSW5zZXJ0LAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgaW5zZXJ0
TGVuLAogICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgc3RhcnRQb3MsCiAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICAgICAgICBwYWRDaGFyYWN0ZXIgKSwKCiAmb3ZlcmxheVdpdGgg
ICAgICAgKCBjb25zdCBjaGFyICpwT3ZlcmxheSwKICAgICAgICAgICAgICAgICAgICAgIHVsZW5n
dGhfdCAgIG92ZXJsYXlMZW4sCiAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgIHBhZENoYXJhY3RlciApLAoKICZz
dHJpcCAgICAgICAgICAgICAoIGNvbnN0IGNoYXIgICAgICAgICAgICAgKnBDaGFyLAogICAgICAg
ICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgICAgICAgICAgICAgbGVuLAogICAgICAgICAgICAg
ICAgICAgICAgSVN0cmluZ0VudW06OlN0cmlwTW9kZSAgbW9kZSApLAoKICZzdHJpcCAgICAgICAg
ICAgICAoIGNvbnN0IElTdHJpbmdUZXN0ICAgICAgJmFUZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgSVN0cmluZ0VudW06OlN0cmlwTW9kZSAgbW9kZSApLAoKICZ0cmFuc2xhdGUgICAgICAgICAo
IGNvbnN0IGNoYXIgKnBJbnB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgdWxlbmd0aF90
ICAgaW5wdXRMZW4sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwT3V0cHV0Q2hh
cnMsCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBvdXRwdXRMZW4sCiAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICAgICAgICBwYWRDaGFyYWN0ZXIgKTsKCgogCnR5cGVkZWYgZW51
bSB7CiAgYml0QW5kLAogIGJpdE9yLAogIGJpdEV4Y2x1c2l2ZU9yCgoKIAoKCgoKCgoKCiAgfSBC
aXRPcGVyYXRvcjsKCklTdHJpbmcKICZhcHBseUJpdE9wICAgICAgICAoIGNvbnN0IGNoYXIgKnBB
cmcsCiAgICAgICAgICAgICAgICAgICAgICB1bGVuZ3RoX3QgICBhcmdMZW4sCiAgICAgICAgICAg
ICAgICAgICAgICBCaXRPcGVyYXRvciBvcCApOwoKIAp2b2lkCiAgd3JpdGVUb1N0cmVhbSggSURh
dGFTdHJlYW0gJnRvV2hlcmUgKSBjb25zdDsKdm9pZAogIHJlYWRGcm9tU3RyZWFtKCBJRGF0YVN0
cmVhbSAmZnJvbVdoZXJlICk7Cgpwcml2YXRlOgogCiAgSVN0cmluZyAgICAgICAgICAgKCBJQnVm
ZmVyICpwQnVmZmVyICk7CnZvaWQKICBiaW5hcnlNYXRoICAgICAgICAoIHVuc2lnbmVkIGNoYXIg
bmV3RGlnaXQgKSwKICBkZWNpbWFsTWF0aCAgICAgICAoIHVuc2lnbmVkIGNoYXIgbmV3RGlnaXQg
KTsKSVN0cmluZwogJnByZXBhcmVUb0NoYW5nZSAgICggKTsKY2hhcgogKnBCdWZmZXI7CgpzdGF0
aWMgdm9pZAogIHNldERlZmF1bHRCdWZmZXIgICggY2hhciAqICk7CgpzdGF0aWMgY2hhcgogICpu
dWxsQnVmZmVyOwoKZnJpZW5kIGNsYXNzIElCdWZmZXI7CmZyaWVuZCBjbGFzcyBJVGV4dDsKfTsK
CiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9w
KQoKCgoKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaXN0cmluZy5pbmwiIDEKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKCiAKZXh0ZXJuICJDIgp7CiAgICAKIyAxICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAK
CgogCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAx
IDMKIAoKCgoKCgojIDM1ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwoKCiAKCgoKCgoKCgoK
CgoKCiMgNDAgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9JU3Vw
cGVyID0gKDEgPDwgKCAwICkpICwJIAogIF9JU2xvd2VyID0gKDEgPDwgKCAxICkpICwJIAogIF9J
U2FscGhhID0gKDEgPDwgKCAyICkpICwJIAogIF9JU2RpZ2l0ID0gKDEgPDwgKCAzICkpICwJIAog
IF9JU3hkaWdpdCA9ICgxIDw8ICggNCApKSAsCSAKICBfSVNzcGFjZSA9ICgxIDw8ICggNSApKSAs
CSAKICBfSVNwcmludCA9ICgxIDw8ICggNiApKSAsCSAKICBfSVNncmFwaCA9ICgxIDw8ICggNyAp
KSAsCSAKICBfSVNibGFuayA9ICgxIDw8ICggOCApKSAsCSAKICBfSVNjbnRybCA9ICgxIDw8ICgg
OSApKSAsCSAKICBfSVNwdW5jdCA9ICgxIDw8ICggMTAgKSkgLAkgCiAgX0lTYWxudW0gPSAoMSA8
PCAoIDExICkpIAkgCn07CgoKIAoKCgoKCgoKCgoKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hv
cnQgaW50ICpfX2N0eXBlX2I7CSAKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3Rv
bG93ZXI7ICAKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7ICAKCgoK
CgoKCgoKIAoKCgpleHRlcm4gaW50ICBpc2FsbnVtICAgKGludCkgIHRocm93ICgpICAgOwpleHRl
cm4gaW50ICBpc2FscGhhICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBpc2NudHJs
ICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBpc2RpZ2l0ICAgKGludCkgIHRocm93
ICgpICAgOwpleHRlcm4gaW50ICBpc2xvd2VyICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4g
aW50ICBpc2dyYXBoICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBpc3ByaW50ICAg
KGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBpc3B1bmN0ICAgKGludCkgIHRocm93ICgp
ICAgOwpleHRlcm4gaW50ICBpc3NwYWNlICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50
ICBpc3VwcGVyICAgKGludCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBpc3hkaWdpdCAgIChp
bnQpICB0aHJvdyAoKSAgIDsKCgpleHRlcm4gaW50ICBpc2JsYW5rICAgKGludCkgIHRocm93ICgp
ICAgOwoKCgogCmV4dGVybiBpbnQgdG9sb3dlciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAgdGhyb3cgKCkgIDsKCgoKCiAKCmV4dGVybiBp
bnQgaXNhc2NpaSAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCB0b2FzY2lp
ICAoaW50IF9fYykgIHRocm93ICgpICA7CgoKCgogCgpleHRlcm4gaW50ICBfdG91cHBlciAgIChp
bnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX3RvbG93ZXIgICAoaW50KSAgdGhyb3cgKCkg
ICA7CgoKCgoKCgoKCgoKCgoKCgoKCgojIDE2NCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKCgoj
IDE4NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgog
CgoKCiAKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50ICBfX2lzYWxudW1fbCAgIChpbnQsIF9fbG9j
YWxlX3QpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX19pc2FscGhhX2wgICAoaW50LCBfX2xv
Y2FsZV90KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIF9faXNjbnRybF9sICAgKGludCwgX19s
b2NhbGVfdCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBfX2lzZGlnaXRfbCAgIChpbnQsIF9f
bG9jYWxlX3QpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX19pc2xvd2VyX2wgICAoaW50LCBf
X2xvY2FsZV90KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIF9faXNncmFwaF9sICAgKGludCwg
X19sb2NhbGVfdCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBfX2lzcHJpbnRfbCAgIChpbnQs
IF9fbG9jYWxlX3QpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX19pc3B1bmN0X2wgICAoaW50
LCBfX2xvY2FsZV90KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIF9faXNzcGFjZV9sICAgKGlu
dCwgX19sb2NhbGVfdCkgIHRocm93ICgpICAgOwpleHRlcm4gaW50ICBfX2lzdXBwZXJfbCAgIChp
bnQsIF9fbG9jYWxlX3QpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX19pc3hkaWdpdF9sICAg
KGludCwgX19sb2NhbGVfdCkgIHRocm93ICgpICAgOwoKZXh0ZXJuIGludCAgX19pc2JsYW5rX2wg
ICAoaW50LCBfX2xvY2FsZV90KSAgdGhyb3cgKCkgICA7CgoKIApleHRlcm4gaW50IF9fdG9sb3dl
cl9sICAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IF9fdG91cHBlcl9sICAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpICB0aHJvdyAoKSAgOwoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCn0gCgoKIyAzMiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RyaW5nLmlubCIgMgoKICAgIAojIDEgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMK
IAoKCiAKCiMgMTE0ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9saW1pdHMuaCIgMwoKCgoKCgoKIyAzMyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RyaW5nLmlubCIgMgoKICAgIAojIDEgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKZXh0ZXJuICJD
IiB7IAoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoK
IyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVybiB2b2lkICogIG1lbWNweSAgKHZvaWQg
KiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiB2b2lkICogIG1lbW1vdmUg
ICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIHNpemVfdCBf
X24pICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAodm9pZCAqICBf
X2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICogIF9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgbWVtY21wICAo
X19jb25zdCB2b2lkICogIF9fczEsIF9fY29uc3Qgdm9pZCAqICBfX3MyLAoJCQlzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2b2lkICog
IF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHZvaWQg
KiAgcmF3bWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9fYykgIHRocm93ICgpICA7
CgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNo
YXIgKnN0cm5jcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNo
YXIgKnN0cmNhdCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjbXAgIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJu
IGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVf
dCBzdHJ4ZnJtICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiAKCgoKCiAKZXh0
ZXJuIGludCBfX3N0cmNvbGxfbCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLAoJCQkgICAgIF9fbG9jYWxlX3QgX19sKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gc2l6ZV90
IF9fc3RyeGZybV9sICAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3Qg
X19uLAoJCQkJX19sb2NhbGVfdCBfX2wpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBjaGFyICpf
X3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnN0
cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCgoKCmV4dGVybiBjaGFy
ICpzdHJuZHVwICAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikgIHRocm93ICgp
ICA7CgoKCiAKCgoKCgoKCgoKIAoKIyAxNDMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCiAK
ZXh0ZXJuIGNoYXIgKnN0cmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cg
KCkgIDsKIApleHRlcm4gY2hhciAqc3RycmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gY2hhciAqc3RyY2hybnVsICAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAg
KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KSAgdGhyb3cgKCkgIDsK
IAoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFy
ICpfX2FjY2VwdCkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnBicmsgIChfX2NvbnN0
IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgIHRocm93ICgpICA7CiAKZXh0ZXJu
IGNoYXIgKnN0cnN0ciAgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpf
X25lZWRsZSkgIHRocm93ICgpICA7CgoKIApleHRlcm4gY2hhciAqX19zdHJjYXNlc3RyICAoX19j
b25zdCBjaGFyICpfX2hheXN0YWNrLAoJCQkJX19jb25zdCBjaGFyICpfX25lZWRsZSkgIHRocm93
ICgpICA7CmV4dGVybiBjaGFyICpzdHJjYXNlc3RyICAoX19jb25zdCBjaGFyICpfX2hheXN0YWNr
LAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVy
biBjaGFyICpzdHJ0b2sgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gY2hhciAqX19zdHJ0
b2tfciAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKCQkJICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIHRo
cm93ICgpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gdm9pZCAqICBt
ZW1tZW0gIChfX2NvbnN0IHZvaWQgKiAgX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4s
CgkJCSAgICBfX2NvbnN0IHZvaWQgKiAgX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikgIHRo
cm93ICgpICA7CgogCgpleHRlcm4gdm9pZCAqICBfX21lbXBjcHkgICh2b2lkICogIF9fcmVzdHJp
Y3QgX19kZXN0LAoJCQkgICAgICAgX19jb25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCAqICBtZW1wY3B5ICAodm9pZCAqICBf
X3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHNpemVfdCBzdHJsZW4gIChf
X2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHNpemVfdCBzdHJubGVu
ICAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKSAgdGhyb3cgKCkgIDsK
CgoKIApleHRlcm4gY2hhciAqc3RyZXJyb3IgIChpbnQgX19lcnJudW0pICB0aHJvdyAoKSAgOwoK
IAoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yICAo
aW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSAgdGhyb3cgKCkgIDsK
CgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBfX24pICB0aHJv
dyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgYmNvcHkgIChfX2NvbnN0IHZvaWQgKiAgX19zcmMsIHZv
aWQgKiAgX19kZXN0LCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgYnpl
cm8gICh2b2lkICogIF9fcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
YmNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICppbmRleCAgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnJpbmRleCAgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgX19mZnMg
IChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKZXh0ZXJuIGlu
dCBmZnMgIChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCiAK
CgpleHRlcm4gaW50IGZmc2wgIChsb25nIGludCBfX2wpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRl
X18gKChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsICAobG9uZyBsb25n
IGludCBfX2xsKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKCgog
CmV4dGVybiBpbnQgX19zdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
c3RybmNhc2VjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKCQkJ
ICAgICBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBfX3N0cmNhc2Vj
bXBfbCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkJX19sb2Nh
bGVfdCBfX2xvYykgIHRocm93ICgpICA7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkJIHNpemVfdCBfX24sIF9f
bG9jYWxlX3QgX19sb2MpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gY2hhciAqc3Ryc2VwICAo
Y2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2RlbGltKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IHN0cnZlcnNjbXAgIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CgogCmV4dGVy
biBjaGFyICpzdHJzaWduYWwgIChpbnQgX19zaWcpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hh
ciAqX19zdHBjcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpzdHBjcHkgIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpzdHBuY3B5ICAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpzdHJmcnkgIChjaGFyICpfX3N0cmlu
ZykgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkICogIG1lbWZyb2IgICh2b2lkICogIF9fcywg
c2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKIAoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgIChf
X2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICB0aHJvdyAoKSAgOwoKCgoKCiMgMzQ3ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKCgoKfSAKCgojIDM0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJpbmcuaW5sIiAyCgogICAgCiMgMSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4
LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAK
CgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvczM5MC1z
dXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgojIDI4MyAiL3Vzci9saWIv
Z2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgog
CgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAyIDMKCgpleHRlcm4gIkMiIHsgCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewog
ICAgaW50IHF1b3Q7CQkJIAogICAgaW50IHJlbTsJCQkgCiAgfSBkaXZfdDsKCiAKCnR5cGVkZWYg
c3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgaW50IHJlbTsJCSAKICB9
IGxkaXZfdDsKCgoKCiAKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg
bG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGxkaXZfdDsK
CgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAoX19jb25zdCBjaGFy
ICpfX25wdHIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgYXRvaSAgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hh
ciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgYXRvbGwgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CgoKIApleHRl
cm4gZG91YmxlIHN0cnRvZCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBmbG9h
dCBzdHJ0b2YgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBsb25nIGRvdWJsZSAgc3Ry
dG9sZCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBsb25nIGludCBzdHJ0
b2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdW5zaWdu
ZWQgbG9uZyBpbnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJ
CQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fYmFz
ZSkgIHRocm93ICgpICA7CgoKIApfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0
cnRvcSAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApfX2V4dGVuc2lvbl9f
CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJ
CQkgICAgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRl
cm4gbG9uZyBsb25nIGludCBzdHJ0b2xsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKCQkJCSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cg
KCkgIDsKIApfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRv
dWxsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoK
CgogCgoKCgoKCgoKCgogCgoKCiAKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9sICAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSwKCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgdGhyb3cgKCkgIDsKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCgkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgaW50
IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgIHRocm93ICgpICA7CgpfX2V4dGVuc2lvbl9fCmV4
dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9sICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSwKCQkJCSAgICAgICBfX2xvY2FsZV90IF9fbG9jKSAgdGhyb3cgKCkgIDsKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9sICAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0CgkJCQkJCSBfX25wdHIsCgkJCQkJCSBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKCQkJCQkJIGludCBfX2Jhc2UsCgkJCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgdGhy
b3cgKCkgIDsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2Nh
bGVfdCBfX2xvYykgIHRocm93ICgpICA7CgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfbCAgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBsb25nIGRvdWJs
ZSAgX19zdHJ0b2xkX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgX19sb2NhbGVfdCBfX2xvYykgIHRocm93
ICgpICA7CgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsICAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRlcm4gZmxvYXQgX19z
dHJ0b2ZfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpl
eHRlcm4gbG9uZyBkb3VibGUgIF9fc3RydG9sZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJ
CQkJCV9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQljaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
CQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgIHRocm93
ICgpICA7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgIChf
X2NvbnN0IGNoYXIgKgoJCQkJCQkgIF9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQkgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCQkgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhy
b3cgKCkgIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xs
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCkgIHRocm93ICgpICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jl
c3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNoYXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIs
CgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgoK
IyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIAoKCmV4dGVybiBjaGFyICpsNjRh
ICAobG9uZyBpbnQgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChf
X2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoK
CnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBl
ZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVh
ZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90
IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlu
b190OwoKCgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwoKCgoKdHlwZWRlZiBfX2Rldl90
IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgoKdHlwZWRlZiBfX21vZGVfdCBt
b2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwoKCgoKdHlwZWRlZiBfX3VpZF90
IHVpZF90OwoKCgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKdHlwZWRlZiBfX29mZjY0
X3Qgb2ZmNjRfdDsKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90
IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJf
dCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qg
a2V5X3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoK
CgogCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgoKCiAKdHlwZWRlZiBfX3RpbWVf
dCB0aW1lX3Q7CgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyAyNzkgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMjMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1
c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91
c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGli
L3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEyNiAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVs
b25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVpbnQ7CgoKIAoKIyAxNjAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCiAKCgoK
CgoKCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9f
ICkpKSA7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9f
SElfXyApKSkgOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
ICBfX1NJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKCAgX19ESV9fICkpKSA7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lf
XyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fICggIF9fRElfXyApKSkgOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwoKCiAKCgoKCgoKIAoKCiAKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgog
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoK
IAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVk
IGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoKCgoKIAoKCgoKCiMgMTI1ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MiAzCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgojIDUxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNjIgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoK
CgoKCiAKCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsJCSAKICAgIGxv
bmcgaW50IHR2X25zZWM7CQkgCiAgfTsKCgoKCgojIDI3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwoKCgojIDM4ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgpleHRlcm4gIkMiIHsg
CgogCgoKCnN0cnVjdCB0aW1ldmFsOwoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKCiAKdHlw
ZWRlZiBfX2ZkX3NldCBmZF9zZXQ7CgogCgoKCiAKCgoKCiAKCgoKCgoKIAoKCgoKZXh0ZXJuIGlu
dCBfX3NlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCSAgX19mZF9z
ZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJICBzdHJ1Y3QgdGltZXZh
bCAqX190aW1lb3V0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzZWxlY3QgIChpbnQgX19uZmRz
LCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQlfX2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQg
Kl9fZXhjZXB0ZmRzLAoJCQlzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KSAgdGhyb3cgKCkgIDsK
CgogCgogCgoKZXh0ZXJuIGludCBwc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVh
ZGZkcywKCQkJIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJ
CSBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKCQkJIGNvbnN0IF9fc2lnc2V0X3Qg
Kl9fc2lnbWFzaykgIHRocm93ICgpICA7CgoKfSAKCgojIDE5NSAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc3lz
bWFjcm9zLmgiIDMKCgoKIyAxOTggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgog
Cgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19mc2Jsa2NudF90IGZz
YmxrY250X3Q7ICAKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCgoKCgoKdHlw
ZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsgICAgICAKdHlwZWRlZiBfX2ZzYmxrY250NjRf
dCBmc2Jsa2NudDY0X3Q7ICAKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7ICAK
Cgp9IAoKCiMgMzM5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAKCgoKIApleHRlcm4g
aW50MzJfdCByYW5kb20gICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmRv
bSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gdm9pZCAq
ICBpbml0c3RhdGUgICh1bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lkICogIF9fc3RhdGVidWYsCgkJ
CSAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgIHRocm93ICgpICA7CgogCgpleHRlcm4gdm9pZCAq
ICBzZXRzdGF0ZSAgKHZvaWQgKiAgX19zdGF0ZWJ1ZikgIHRocm93ICgpICA7CgoKCiAKCgoKc3Ry
dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJw
dHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBp
bnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRy
OwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmLAoJCQkgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAo
KSAgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3Ig
ICh1bnNpZ25lZCBpbnQgX19zZWVkLAoJCQkgICAgIHZvaWQgKiAgX19yZXN0cmljdCBfX3N0YXRl
YnVmLAoJCQkgICAgIHNpemVfdCBfX3N0YXRlbGVuLAoJCQkgICAgIHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZikgIHRocm93ICgpICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3Ig
ICh2b2lkICogIF9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0
YSAqX19yZXN0cmljdCBfX2J1ZikgIHRocm93ICgpICA7CgoKCgogCmV4dGVybiBpbnQgcmFuZCAg
KHZvaWQpICB0aHJvdyAoKSAgOwogCmV4dGVybiB2b2lkIHNyYW5kICAodW5zaWduZWQgaW50IF9f
c2VlZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2lnbmVkIGludCAq
X19zZWVkKSAgdGhyb3cgKCkgIDsKCgoKCiAKCiAKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICAodm9p
ZCkgIHRocm93ICgpICA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAgKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2
b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggICh1bnNpZ25lZCBzaG9y
dCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBsb25nIGludCBtcmFuZDQ4
ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBzcmFuZDQ4
ICAobG9uZyBpbnQgX19zZWVkdmFsKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0
IGludCAqc2VlZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgIHRocm93ICgp
ICA7CmV4dGVybiB2b2lkIGxjb25nNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkg
IHRocm93ICgpICA7CgogCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgeFszXTsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IGFbM107CSAKICAgIHVuc2lnbmVk
IHNob3J0IGludCBjOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgb2xkX3hbM107ICAKICAgIGlu
dCBpbml0OwkJCSAKICB9OwoKCiAKZXh0ZXJuIGludCBkcmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBkb3VibGUgKl9fcmVzdHJpY3QgX19y
ZXN1bHQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGVyYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0
IGludCBfX3hzdWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAoJCQkgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwK
CQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9u
ZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IG1y
YW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBq
cmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRy
YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHNyYW5kNDhfciAgKGxvbmcg
aW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICB0aHJvdyAoKSAg
OwoKZXh0ZXJuIGludCBzZWVkNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10s
CgkJCSAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICB0aHJvdyAoKSAgOwoKZXh0ZXJu
IGludCBsY29uZzQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkJICAgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICB0aHJvdyAoKSAgOwoKCgoKCgoKIApleHRlcm4g
dm9pZCAqICBtYWxsb2MgIChzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9p
ZCAqICBjYWxsb2MgIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7
CgoKCiAKCmV4dGVybiB2b2lkICogIHJlYWxsb2MgICh2b2lkICogIF9fcHRyLCBzaXplX3QgX19z
aXplKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBmcmVlICAodm9pZCAqICBfX3B0cikgIHRo
cm93ICgpICA7CgoKIApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICB0aHJvdyAo
KSAgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5MC1z
dXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMg
NjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4y
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxp
Yi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vz
ci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNSAiL3Vzci9p
bmNsdWRlL2FsbG9jYS5oIiAyIDMKCgpleHRlcm4gIkMiIHsgCgogCgoKIApleHRlcm4gdm9pZCAq
ICBhbGxvY2EgIChzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCgoKCgp9IAoKCiMgNDkyICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2MgIChz
aXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQp
ICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4dGVybiBp
bnQgYXRleGl0ICAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgpleHRl
cm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAg
X19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBvbl9l
eGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSB2
b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAgKGludCBf
X3N0YXR1cykgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAK
CmV4dGVybiB2b2lkIF9FeGl0ICAoaW50IF9fc3RhdHVzKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0
ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCiAKZXh0ZXJuIGNoYXIgKmdldGVudiAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRl
bnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgoKIAogCgpleHRlcm4gaW50
IHB1dGVudiAgKGNoYXIgKl9fc3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBz
ZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlp
bnQgX19yZXBsYWNlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52
ICAodm9pZCkgIHRocm93ICgpICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFy
ICpfX3RlbXBsYXRlKSAgdGhyb3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNo
YXIgKl9fdGVtcGxhdGUpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19j
b25zdCBjaGFyICpfX2NvbW1hbmQpICB0aHJvdyAoKSAgOwoKCgogCgoKZXh0ZXJuIGNoYXIgKmNh
bm9uaWNhbGl6ZV9maWxlX25hbWUgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7
CgoKCiAKCgoKCgpleHRlcm4gY2hhciAqcmVhbHBhdGggIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19uYW1lLAoJCQkgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSAgdGhyb3cgKCkg
IDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2NvbnN0IHZvaWQgKiAs
IF9fY29uc3Qgdm9pZCAqICkgIDsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9m
bl90OwoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2b2lkICogIF9fa2V5
LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJu
IHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3Np
emUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVybiBpbnQgYWJzICAo
aW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g
bG9uZyBpbnQgbGFicyAgKGxvbmcgaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAg
KGxvbmcgbG9uZyBpbnQgX194KSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKIAoKIApleHRlcm4gZGl2X3QgZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rl
bm9tKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2
X3QgbGRpdiAgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pICB0aHJvdyAoKSAg
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g
bGxkaXZfdCBsbGRpdiAgKGxvbmcgbG9uZyBpbnQgX19udW1lciwKCQkJCQkgbG9uZyBsb25nIGlu
dCBfX2Rlbm9tKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
IHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmZjdnQgIChkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmdjdnQgIChkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFy
ICpxZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgIHRocm93ICgpICA7CmV4
dGVybiBjaGFyICpxZmN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJ
CSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgIHRocm93
ICgpICA7CmV4dGVybiBjaGFyICpxZ2N2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3Ig
IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK
CQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6
ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmY3Z0X3IgIChkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgdGhy
b3cgKCkgIDsKCmV4dGVybiBpbnQgcWVjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwK
CQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CgoK
CgogCgpleHRlcm4gaW50IG1ibGVuICAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pICB0
aHJvdyAoKSAgOwogCgpleHRlcm4gaW50IG1idG93YyAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19w
d2MsCgkJCV9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwogCgpleHRlcm4gaW50IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAg
dGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgICh3Y2hhcl90ICpfX3Jlc3Ry
aWN0ICBfX3B3Y3MsCgkJCSAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLAoJCQkgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNp
emVfdCBfX24pICB0aHJvdyAoKSAgOwoKCgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29u
c3QgY2hhciAqX19yZXNwb25zZSkgIHRocm93ICgpICA7CgoKCgogCgoKCgoKZXh0ZXJuIGludCBn
ZXRzdWJvcHQgIChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCgkJCSAgIF9fY29uc3QgY2hh
ciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKCQkJICAgY2hhciAqKl9fcmVzdHJpY3Qg
X192YWx1ZXApICB0aHJvdyAoKSAgOwoKCgoKCiAKZXh0ZXJuIHZvaWQgc2V0a2V5ICAoX19jb25z
dCBjaGFyICpfX2tleSkgIHRocm93ICgpICA7CgogCgogCgoKIApleHRlcm4gaW50IGdyYW50cHQg
IChpbnQgX19mZCkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHVubG9ja3B0ICAoaW50IF9f
ZmQpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBjaGFyICpwdHNuYW1lICAoaW50IF9fZmQpICB0
aHJvdyAoKSAgOwoKCgogCgoKZXh0ZXJuIGludCBwdHNuYW1lX3IgIChpbnQgX19mZCwgY2hhciAq
X19idWYsIHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZ2V0cHQg
ICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKCgp9IAoKCiMgMzUgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmluZy5pbmwiIDIKCn0KCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5o
cHAiIDEKIyAxMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pZXhjYmFzZS5ocHAiCgoKIyA3MjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIgoKCgoKCgojIDM4ICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJpbmcuaW5sIiAyCgoj
IDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJ1
ZmZlci5ocHAiIDEKIyAxMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pYnVmZmVyLmhwcCIKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKCiAKZXh0ZXJuICJDIiB7CiAgCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK
CgoKCgogCgogCgoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IHB0
cmRpZmZfdDsKCgoKCgoKCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoj
IDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKIyA0MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pYnVmZmVyLmhwcCIgMgoKICAKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1s
aWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoK
IAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAK
CiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCnR5cGVkZWYgX19v
ZmZfdCAgZnBvc190OwoKCgoKdHlwZWRlZiBfX29mZjY0X3QgIGZwb3M2NF90OwoKCiAKCgoKCgog
CgoKCgoKIAoKCgoKCgogCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9zdGRpb19saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAxMTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIApleHRlcm4gRklMRSAqc3Rk
aW47CQkgCmV4dGVybiBGSUxFICpzdGRvdXQ7CQkgCmV4dGVybiBGSUxFICpzdGRlcnI7CQkgCiAK
CgoKCgogCmV4dGVybiBpbnQgcmVtb3ZlICAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSAgdGhy
b3cgKCkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29u
c3QgY2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBGSUxFICp0bXBmaWxlICAo
dm9pZCkgIHRocm93ICgpICA7CgoKCgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAgKHZvaWQp
ICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hhciAqdG1wbmFtICAoY2hhciAqX19zKSAgdGhyb3cg
KCkgIDsKCgogCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgIChjaGFyICpfX3MpICB0aHJvdyAoKSAg
OwoKCgoKIAoKCgoKCgpleHRlcm4gY2hhciAqdGVtcG5hbSAgKF9fY29uc3QgY2hhciAqX19kaXIs
IF9fY29uc3QgY2hhciAqX19wZngpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZmNsb3Nl
ICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmZsdXNoICAoRklM
RSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2VhbGwg
ICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIEZJTEUgKmZvcGVuICAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19tb2RlcykgIHRocm93ICgpICA7CiAKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMsCgkJCSAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoj
IDIwMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42NCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19tb2RlcykgIHRocm93ICgpICA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKCQkJICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcywKCQkJICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAg
dGhyb3cgKCkgIDsKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9fZmQsIF9fY29uc3Qg
Y2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgoKCiAKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tp
ZSAgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCgkJCSAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25z
X3QgX19pb19mdW5jcykgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3Ry
ZWFtICAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCgkJCQkgIHNpemVfdCAqX19yZXN0cmlj
dCBfX3NpemVsb2MpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCBzZXRidWYgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkg
IDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CgoKIAoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyICAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJICAgIHNpemVfdCBfX3NpemUpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmICAoRklMRSAqX19zdHJlYW0pICB0aHJv
dyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIGludCBwcmludGYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqX19yZXN0
cmljdCBfX3MsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRo
cm93ICgpICA7CgogCmV4dGVybiBpbnQgdmZwcmludGYgIChGSUxFICpfX3Jlc3RyaWN0IF9fcywK
CQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgX19nbnVjX3ZhX2xp
c3QgIF9fYXJnKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHZwcmludGYgIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0aHJv
dyAoKSAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJ
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgX19nbnVjX3ZhX2xpc3Qg
IF9fYXJnKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgc25wcmludGYgIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h
dF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJCSAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgICAgIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93
ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkp
KTsKZXh0ZXJuIGludCB2c25wcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f
bWF4bGVuLAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgIF9f
Z251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKIAoKZXh0ZXJuIGludCB2YXNwcmludGYg
IChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZiwgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmlu
dGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2ZtdCwgLi4uKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h
dF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmICAoY2hhciAqKl9f
cmVzdHJpY3QgX19wdHIsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4p
ICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s
IDIsIDMpKSk7CgogCmV4dGVybiBpbnQgdmRwcmludGYgIChpbnQgX19mZCwgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm10LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgp
ICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsK
ZXh0ZXJuIGludCBkcHJpbnRmICAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgLi4uKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAyLCAzKSkpOwoKCgogCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
ICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIC4uLikgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IHZmc2NhbmYgIChGSUxFICpf
X3Jlc3RyaWN0IF9fcywKCQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJ
IF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKIApleHRlcm4gaW50IHZzY2FuZiAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAg
dGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEs
IDApKSk7CgogCmV4dGVybiBpbnQgdnNzY2FuZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3MsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18g
KF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKIApleHRlcm4gaW50IGZnZXRjICAoRklMRSAqX19zdHJl
YW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgZ2V0Y2hhciAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKCgoK
IApleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7
CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgogCmV4
dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
CiAKZXh0ZXJuIGludCBmcHV0YyAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGludCBwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gaW50IHB1dGNoYXIgIChpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAK
ZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhy
b3cgKCkgIDsKCgoKIApleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAgKGludCBf
X2MpICB0aHJvdyAoKSAgOwoKCgoKIApleHRlcm4gaW50IGdldHcgIChGSUxFICpfX3N0cmVhbSkg
IHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHV0dyAgKGludCBfX3csIEZJTEUgKl9fc3RyZWFt
KSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gY2hhciAqZmdldHMgIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgaW50IF9fbiwKCQkJIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAg
OwoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkICAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IGludCBfX24sCgkJCQkgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoK
CiAKCmV4dGVybiBjaGFyICpnZXRzICAoY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgoKIAoKCgoK
ZXh0ZXJuIF9fc3NpemVfdCAgIF9fZ2V0ZGVsaW0gIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVw
dHIsCgkJCQkgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAoJCQkJ
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gX19zc2l6
ZV90ICAgZ2V0ZGVsaW0gIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCgkJCQkgIHNpemVf
dCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKCQkJCSAgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBfX3NzaXplX3QgICBnZXRsaW5lICAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAoJCQkJIHNpemVfdCAqX19yZXN0cmljdCBfX24s
CgkJCQkgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu
IGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCgkJICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmcHV0c191
bmxvY2tlZCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCQlGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgcHV0cyAgKF9fY29uc3Qg
Y2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgdW5nZXRjICAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBmcmVhZCAgKHZv
aWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHNpemVfdCBmd3Jp
dGUgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAg
IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVy
biBzaXplX3QgZnJlYWRfdW5sb2NrZWQgICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3Qg
X19zaXplLAoJCQkJICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRo
cm93ICgpICA7CmV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2VkICAoX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLAoJCQkJICAgIHNpemVfdCBfX3NpemUsIHNpemVfdCBfX24sCgkJCQkg
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGlu
dCBmc2VlayAgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSAg
dGhyb3cgKCkgIDsKIApleHRlcm4gbG9uZyBpbnQgZnRlbGwgIChGSUxFICpfX3N0cmVhbSkgIHRo
cm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgcmV3aW5kICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBmc2Vla28gIChGSUxF
ICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSAgdGhyb3cgKCkgIDsKIApl
eHRlcm4gX19vZmZfdCBmdGVsbG8gIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKIApl
eHRlcm4gaW50IGZnZXRwb3MgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQkgZnBvc190
ICpfX3Jlc3RyaWN0IF9fcG9zKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IGZzZXRwb3MgIChG
SUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgdGhyb3cgKCkgIDsKIyA1MjMg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZnNlZWtvNjQgIChGSUxFICpf
X3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpICB0aHJvdyAoKSAgOwpleHRl
cm4gX19vZmY2NF90IGZ0ZWxsbzY0ICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRl
cm4gaW50IGZnZXRwb3M2NCAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJCSAgIGZwb3M2
NF90ICpfX3Jlc3RyaWN0IF9fcG9zKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmc2V0cG9zNjQg
IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpICB0aHJvdyAoKSAgOwoK
CiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIGludCBmZW9mICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBp
bnQgZmVycm9yICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQg
Y2xlYXJlcnJfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgZmVvZl91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGlu
dCBmZXJyb3JfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0
ZXJuIHZvaWQgcGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKIAoKCmV4
dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxp
c3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25z
dCBfc3lzX2Vycmxpc3RbXTsKCgoKCiAKZXh0ZXJuIGludCBmaWxlbm8gIChGSUxFICpfX3N0cmVh
bSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpf
X3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgoKIApleHRlcm4gRklMRSAqcG9wZW4gIChfX2NvbnN0
IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBwY2xvc2UgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgogCmV4
dGVybiBjaGFyICpjdGVybWlkICAoY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJu
IGNoYXIgKmN1c2VyaWQgIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCgoKc3RydWN0IG9ic3Rh
Y2s7CQkJIAoKIApleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmICAoc3RydWN0IG9ic3RhY2sgKl9f
cmVzdHJpY3QgX19vYnN0YWNrLAoJCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAgKHN0cnVjdCBv
YnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKCQkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsCgkJCQkgX19nbnVjX3ZhX2xpc3QgIF9fYXJncykgIHRocm93ICgpICA7CgoK
CgogCgogCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKCiAKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cg
KCkgIDsKCgoKCgoKCgoKCiAKCgoKCgp9IAoKCgoKIyA0MiAiL2hvbWUvYWtub2xsL2lvY3NyYy9s
aW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYnVmZmVyLmhwcCIgMgoKICAKICAKIyAxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIg
MSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4y
L2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCgoKCiMgNDQgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJ1ZmZlci5ocHAiIDIKCiAgfQoKCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RyZW51bS5o
cHAiIDEKIyAxMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pc3RyZW51bS5ocHAiCgoKIyAxMjggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmVudW0uaHBwIgoKCgoKCgoKIyA0OCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYnVmZmVyLmhwcCIgMgoK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lt
cmVmY250LmhwcCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCiAKIAoKIAogCgog
CgojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9S
RVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFu
Z2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoK
CgoKCiAKCiAKIAoKIAogCgogCgogIAojIDEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDEgMwog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDczICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoK
CgojIDI3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDI5ICIvdXNyL2luY2x1ZGUvc2No
ZWQuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgogCnN0cnVjdCBzY2hlZF9w
YXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKZXh0ZXJuICJDIiB7IAoKIAoK
ZXh0ZXJuIGludCBjbG9uZSAgKGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9fY2hp
bGRfc3RhY2ssCgkJICAgICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZykgIHRocm93ICgpICA7
CgoKfSAKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKIyAzMiAiL3Vzci9p
bmNsdWRlL3NjaGVkLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIGludCBfX3NjaGVk
X3NldHBhcmFtICAoX19waWRfdCBfX3BpZCwKCQkJCSAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFy
YW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3NldHBhcmFtICAoX19w
aWRfdCBfX3BpZCwKCQkJCV9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldHBhcmFtICAoX19waWRfdCBfX3BpZCwg
c3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hl
ZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkg
IHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9zZXRzY2hlZHVsZXIgIChfX3BpZF90
IF9fcGlkLCBpbnQgX19wb2xpY3ksCgkJCQkgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJh
bSAqX19wYXJhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfc2V0c2NoZWR1bGVyICAo
X19waWRfdCBfX3BpZCwgaW50IF9fcG9saWN5LAoJCQkJICAgIF9fY29uc3Qgc3RydWN0IHNjaGVk
X3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldHNj
aGVkdWxlciAgKF9fcGlkX3QgX19waWQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dl
dHNjaGVkdWxlciAgKF9fcGlkX3QgX19waWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9f
c2NoZWRfeWllbGQgICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF95aWVsZCAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfZ2V0X3ByaW9yaXR5X21h
eCAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0X3By
aW9yaXR5X21heCAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
X19zY2hlZF9nZXRfcHJpb3JpdHlfbWluICAoaW50IF9fYWxnb3JpdGhtKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlfbWluICAoaW50IF9fYWxnb3JpdGhtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX3JyX2dldF9pbnRlcnZhbCAgKF9fcGlkX3Qg
X19waWQsIHN0cnVjdCB0aW1lc3BlYyAqX190KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hl
ZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkg
IHRocm93ICgpICA7Cgp9IAoKCiMgMjAgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CmV4dGVybiAiQyIgeyAKCgoKCiAKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxp
bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGli
L2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAK
CgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv
czM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
CiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIv
czM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
IAoKCiAKCgoKCgogCgoKCgoKCgojIDU5ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKIAoj
IDQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCiMgNjIgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwkJ
CSAKICBpbnQgdG1fbWluOwkJCSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRtX21kYXk7CQkJ
IAogIGludCB0bV9tb247CQkJIAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1fd2RheTsJCQkg
CiAgaW50IHRtX3lkYXk7CQkJIAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25nIGludCB0bV9n
bXRvZmY7CQkgCiAgX19jb25zdCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAKCmV4dGVybiBj
bG9ja190IGNsb2NrICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZSAg
KHRpbWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUg
ICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAgKHN0cnVjdCB0
bSAqX190cCkgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKCQkJICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJp
Y3QgX190cCkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lICAoX19jb25z
dCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19mbXQsCgkJCSAgICBzdHJ1Y3QgdG0gKl9fdHAp
ICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUgIChfX2NvbnN0IHRp
bWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRp
bWUgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHN0
cnVjdCB0bSAqX19nbXRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIs
CgkJCQkgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgpICA7CmV4dGVybiBz
dHJ1Y3QgdG0gKmdtdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
CQkJCSBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgpICA7CgogCgpleHRlcm4g
c3RydWN0IHRtICpsb2NhbHRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGlt
ZXIsCgkJCQkgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICB0aHJvdyAoKSAgOwoKCiAK
CmV4dGVybiBjaGFyICphc2N0aW1lICAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gY2hhciAqY3RpbWUgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgIHRo
cm93ICgpICA7CgoKIAoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAgKF9fY29uc3Qgc3RydWN0
IHRtICpfX3Jlc3RyaWN0IF9fdHAsCgkJCSAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgIHRo
cm93ICgpICA7CgogCmV4dGVybiBjaGFyICpjdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVz
dHJpY3QgX190aW1lciwKCQkJICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgIHRocm93ICgpICA7
CgoKCiAKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwkgCmV4dGVybiBpbnQgX19kYXlsaWdodDsJ
CSAKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CSAKCgoKIApleHRlcm4gY2hhciAqdHpuYW1l
WzJdOwoKIAoKZXh0ZXJuIHZvaWQgdHpzZXQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKZXh0ZXJu
IGludCBkYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgogCgpleHRlcm4gaW50
IHN0aW1lICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgIHRocm93ICgpICA7CgoKCiAKCgoKCgoK
IAoKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gIChzdHJ1Y3QgdG0gKl9fdHApICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gdGltZV90IHRpbWVsb2NhbCAgKHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50IF9feWVhcikgIHRocm93ICgpICA7CgoKCgog
CmV4dGVybiBpbnQgbmFub3NsZWVwICAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVz
dGVkX3RpbWUsCgkJCSAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpICB0aHJvdyAoKSAg
OwoKCgoKIAoKCgoKCgoKCgoKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCiAKCgoKZXh0ZXJuIHN0
cnVjdCB0bSAqZ2V0ZGF0ZSAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpICB0aHJvdyAoKSAgOwoK
CgogCgoKCgpleHRlcm4gaW50IGdldGRhdGVfciAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3N0cmluZywKCQkJICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fcmVzYnVmcCkgIHRocm93ICgp
ICA7CgoKCn0gCgoKCgojIDIxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKIyAxICIv
dXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CmV4dGVybiAiQyIgeyAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgoKCiAK
CgoKCgojIDEyNSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKCiMgMzMgIi91c3IvaW5j
bHVkZS9zaWduYWwuaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNp
Z3NldF90OwoKCgojIDM2MCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCgoKfSAKCgojIDI0ICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVh
ZHR5cGVzLmgiIDEgMwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKCgoKIyAxMjIgIi91c3Iv
aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCgojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVh
ZC5oIiAyIDMKCgoKZXh0ZXJuICJDIiB7IAoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAg
UFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUsCgogIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVECgp9OwoK
ZW51bQp7CiAgUFRIUkVBRF9JTkhFUklUX1NDSEVELAoKICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVE
Cgp9OwoKZW51bQp7CiAgUFRIUkVBRF9TQ09QRV9TWVNURU0sCgogIFBUSFJFQURfU0NPUEVfUFJP
Q0VTUwoKfTsKCmVudW0KewogIFBUSFJFQURfTVVURVhfRkFTVF9OUCwKICBQVEhSRUFEX01VVEVY
X1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAKCiAgLAogIFBUSFJF
QURfTVVURVhfTk9STUFMID0gUFRIUkVBRF9NVVRFWF9GQVNUX05QLAogIFBUSFJFQURfTVVURVhf
UkVDVVJTSVZFID0gUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9NVVRFWF9F
UlJPUkNIRUNLID0gUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QLAogIFBUSFJFQURfTVVURVhf
REVGQVVMVCA9IFBUSFJFQURfTVVURVhfTk9STUFMCgp9OwoKZW51bQp7CiAgUFRIUkVBRF9QUk9D
RVNTX1BSSVZBVEUsCgogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKCn07CgoKZW51bQp7CiAgUFRI
UkVBRF9SV0xPQ0tfUFJFRkVSX1JFQURFUl9OUCwKICBQVEhSRUFEX1JXTE9DS19QUkVGRVJfV1JJ
VEVSX05QLAogIFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9OUkVDVVJTSVZFX05QLAog
IFBUSFJFQURfUldMT0NLX0RFRkFVTFRfTlAgPSBQVEhSRUFEX1JXTE9DS19QUkVGRVJfV1JJVEVS
X05QCn07CgoKCgogCgpzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIKewogIHZvaWQgKCpf
X3JvdXRpbmUpICAodm9pZCAqKSAgOwkgICAKICB2b2lkICpfX2FyZzsJCQkJICAgCiAgaW50IF9f
Y2FuY2VsdHlwZTsJCQkgICAKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fcHJl
djsgIAp9OwoKIAoKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAoKICBQVEhSRUFEX0NB
TkNFTF9ESVNBQkxFCgp9OwplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRCwKCiAgUFRI
UkVBRF9DQU5DRUxfQVNZTkNIUk9OT1VTCgp9OwoKCgogCgogCgoKZXh0ZXJuIGludCBwdGhyZWFk
X2NyZWF0ZSAgKHB0aHJlYWRfdCAqX190aHJlYWQsCgkJCQlfX2NvbnN0IHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsCgkJCQl2b2lkICooKl9fc3RhcnRfcm91dGluZSkgKHZvaWQgKiksCgkJCQl2b2lk
ICpfX2FyZykgIHRocm93ICgpICA7CgogCmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmICAo
dm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9lcXVhbCAgKHB0aHJlYWRf
dCBfX3RocmVhZDEsIHB0aHJlYWRfdCBfX3RocmVhZDIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
dm9pZCBwdGhyZWFkX2V4aXQgICh2b2lkICpfX3JldHZhbCkgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKIAoKCmV4dGVybiBpbnQgcHRocmVhZF9qb2luICAocHRo
cmVhZF90IF9fdGgsIHZvaWQgKipfX3RocmVhZF9yZXR1cm4pICB0aHJvdyAoKSAgOwoKIAoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfZGV0YWNoICAocHRocmVhZF90IF9fdGgpICB0aHJvdyAoKSAgOwoK
CiAKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9pbml0ICAocHRocmVhZF9hdHRyX3QgKl9f
YXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2Rlc3Ryb3kgIChw
dGhyZWFkX2F0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfc2V0ZGV0YWNoc3RhdGUgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAg
aW50IF9fZGV0YWNoc3RhdGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRkZXRhY2hzdGF0ZSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkg
ICAgIGludCAqX19kZXRhY2hzdGF0ZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX3NldHNjaGVkcGFyYW0gIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJICAgICAg
ICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4
dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNjaGVkcGFyYW0gIChfX2NvbnN0IHB0aHJlYWRfYXR0
cl90ICpfX2F0dHIsCgkJCQkJICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5ICAocHRocmVh
ZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgIGludCBfX3BvbGljeSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNjaGVkcG9saWN5ICAoX19jb25zdCBwdGhyZWFk
X2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgaW50ICpfX3BvbGljeSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZCAgKHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsCgkJCQkJICAgICAgaW50IF9faW5oZXJpdCkgIHRocm93ICgpICA7CgogCmV4dGVy
biBpbnQgcHRocmVhZF9hdHRyX2dldGluaGVyaXRzY2hlZCAgKF9fY29uc3QgcHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKCQkJCQkgICAgICBpbnQgKl9faW5oZXJpdCkgIHRocm93ICgpICA7CgogCmV4
dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjb3BlICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwg
aW50IF9fc2NvcGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRz
Y29wZSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCSAgICAgICBpbnQgKl9f
c2NvcGUpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRz
aXplICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICBzaXplX3QgX19ndWFyZHNpemUp
ICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRndWFyZHNpemUgIChf
X2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgc2l6ZV90ICpfX2d1YXJkc2l6
ZSkgIHRocm93ICgpICA7CgoKIAoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja2Fk
ZHIgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgIHZvaWQgKl9fc3RhY2thZGRyKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2thZGRyICAoX19j
b25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgIHZvaWQgKipfX3N0YWNrYWRkcikg
IHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplICAo
cHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJCQkgICBzaXplX3QgX19zdGFja3NpemUpICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFja3NpemUgIChfX2NvbnN0
IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgc2l6ZV90ICpfX3N0YWNrc2l6ZSkgIHRo
cm93ICgpICA7CgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0c2NoZWRwYXJhbSAgKHB0aHJl
YWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3BvbGljeSwKCQkJCSAgICAgICBfX2NvbnN0IHN0
cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRo
cmVhZF9nZXRzY2hlZHBhcmFtICAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwKCQkJCSAgICAg
ICBpbnQgKl9fcG9saWN5LAoJCQkJICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkg
IHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IHB0aHJlYWRfZ2V0Y29uY3VycmVuY3kgICh2b2lk
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5ICAoaW50
IF9fbGV2ZWwpICB0aHJvdyAoKSAgOwoKCiAKCiAKCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4
X2luaXQgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCgkJCQkgICBfX2NvbnN0IHB0aHJlYWRf
bXV0ZXhhdHRyX3QgKl9fbXV0ZXhfYXR0cikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVh
ZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJCQkJICAgX19jb25zdCBw
dGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
aW50IF9fcHRocmVhZF9tdXRleF9kZXN0cm95ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2Rlc3Ryb3kgIChwdGhyZWFkX211
dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRl
eF90cnlsb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4X3RyeWxvY2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9sb2NrICAocHRocmVhZF9t
dXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2xv
Y2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IF9fcHRocmVhZF9tdXRleF91bmxvY2sgIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0aHJv
dyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICAocHRocmVhZF9tdXRleF90
ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCgogCgogCgpleHRlcm4gaW50IF9fcHRocmVhZF9tdXRl
eGF0dHJfaW5pdCAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9f
YXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4YXR0cl9kZXN0
cm95ICAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95ICAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRy
KSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX3NldHR5
cGUgIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgX19raW5kKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlICAocHRocmVh
ZF9tdXRleGF0dHJfdCAqX19hdHRyLAoJCQkJCSAgIGludCBfX2tpbmQpICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUgIChfX2NvbnN0IHB0aHJlYWRf
bXV0ZXhhdHRyX3QgKl9fYXR0ciwKCQkJCQkgICBpbnQgKl9fa2luZCkgIHRocm93ICgpICA7CgoK
CiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2luaXQgIChwdGhyZWFkX2NvbmRfdCAqX19j
b25kLAoJCQkJICAgX19jb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKl9fY29uZF9hdHRyKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVzdHJveSAgKHB0aHJlYWRfY29u
ZF90ICpfX2NvbmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfY29uZF9zaWdu
YWwgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2NvbmRfYnJvYWRjYXN0ICAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgIHRocm93ICgp
ICA7CgogCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0ICAocHRocmVhZF9jb25kX3QgKl9f
Y29uZCwKCQkJCSAgIHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CgogCgoK
CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdCAgKHB0aHJlYWRfY29uZF90ICpfX2Nv
bmQsCgkJCQkJcHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJCQkJCV9fY29uc3Qgc3RydWN0IHRp
bWVzcGVjICpfX2Fic3RpbWUpICB0aHJvdyAoKSAgOwoKIAoKIApleHRlcm4gaW50IHB0aHJlYWRf
Y29uZGF0dHJfaW5pdCAgKHB0aHJlYWRfY29uZGF0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3kgIChwdGhyZWFkX2NvbmRhdHRy
X3QgKl9fYXR0cikgIHRocm93ICgpICA7CgoKCiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xv
Y2tfaW5pdCAgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrLAoJCQkJICAgICBfX2NvbnN0IHB0
aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0
aHJlYWRfcndsb2NrX2Rlc3Ryb3kgIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfcmRsb2NrICAocHRocmVhZF9yd2xv
Y2tfdCAqX19yd2xvY2spICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
X3RyeXJkbG9jayAgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja193cmxvY2sgIChwdGhyZWFkX3J3bG9ja190ICpfX3J3
bG9jaykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2Nr
ICAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50
IHB0aHJlYWRfcndsb2NrX3VubG9jayAgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSAgdGhy
b3cgKCkgIDsKCgogCgogCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX2luaXQgIChwdGhy
ZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX3J3bG9ja2F0dHJfZGVzdHJveSAgKHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkICAo
X19jb25zdAoJCQkJCSAgICAgICBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLAoJCQkJCSAg
ICAgICBpbnQgKl9fcHNoYXJlZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9y
d2xvY2thdHRyX3NldHBzaGFyZWQgIChwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLAoJCQkJ
CSAgICAgICBpbnQgX19wc2hhcmVkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFk
X3J3bG9ja2F0dHJfZ2V0a2luZF9ucCAgKF9fY29uc3QKCQkJCQkgICAgICAgcHRocmVhZF9yd2xv
Y2thdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgICAgaW50ICpfX3ByZWYpICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRraW5kX25wICAocHRocmVhZF9yd2xv
Y2thdHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgICAgaW50IF9fcHJlZikgIHRocm93ICgpICA7CgoK
CiAKCiAKCgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9rZXlfY3JlYXRlICAocHRocmVhZF9rZXlf
dCAqX19rZXksCgkJCQkgICAgICB2b2lkICgqX19kZXN0cl9mdW5jdGlvbikgKHZvaWQgKikpICB0
aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfa2V5X2NyZWF0ZSAgKHB0aHJlYWRfa2V5X3Qg
Kl9fa2V5LAoJCQkJICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVsZXRlICAocHRocmVhZF9rZXlfdCBf
X2tleSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19wdGhyZWFkX3NldHNwZWNpZmljICAo
cHRocmVhZF9rZXlfdCBfX2tleSwKCQkJCSAgICAgICBfX2NvbnN0IHZvaWQgKl9fcG9pbnRlcikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9zZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5
X3QgX19rZXksCgkJCQkgICAgIF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIHZvaWQgKl9fcHRocmVhZF9nZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19r
ZXkpICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyAgKHB0aHJl
YWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwoKCiAKCiAKCgoKZXh0ZXJuIGludCBfX3B0aHJl
YWRfb25jZSAgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwKCQkJCXZvaWQgKCpfX2lu
aXRfcm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX29uY2Ug
IChwdGhyZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCgkJCSAgICAgIHZvaWQgKCpfX2luaXRf
cm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRf
c2V0Y2FuY2Vsc3RhdGUgIChpbnQgX19zdGF0ZSwgaW50ICpfX29sZHN0YXRlKSAgdGhyb3cgKCkg
IDsKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0eXBlICAoaW50IF9fdHlwZSwgaW50
ICpfX29sZHR5cGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfY2FuY2VsICAo
cHRocmVhZF90IF9fdGhyZWFkKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gdm9pZCBwdGhyZWFk
X3Rlc3RjYW5jZWwgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoKCgoKCgpleHRlcm4gdm9p
ZCBfcHRocmVhZF9jbGVhbnVwX3B1c2ggIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIg
Kl9fYnVmZmVyLAoJCQkJCXZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCXZvaWQgKl9f
YXJnKSAgdGhyb3cgKCkgIDsKCiAKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3Bv
cCAgKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCgkJCQkgICAgICAg
aW50IF9fZXhlY3V0ZSkgIHRocm93ICgpICA7CgogCgoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVh
ZF9jbGVhbnVwX3B1c2hfZGVmZXIgIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9f
YnVmZmVyLAoJCQkJCSAgICAgIHZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCSAgICAg
IHZvaWQgKl9fYXJnKSAgdGhyb3cgKCkgIDsKCiAKCgoKCgoKZXh0ZXJuIHZvaWQgX3B0aHJlYWRf
Y2xlYW51cF9wb3BfcmVzdG9yZSAgKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19i
dWZmZXIsCgkJCQkJICAgICAgIGludCBfX2V4ZWN1dGUpICB0aHJvdyAoKSAgOwoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9zaWdtYXNrICAoaW50IF9faG93LCBfX2NvbnN0
IF9fc2lnc2V0X3QgKl9fbmV3bWFzaywKCQkJCSBfX3NpZ3NldF90ICpfX29sZG1hc2spICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfa2lsbCAgKHB0aHJlYWRfdCBfX3RocmVhZCwg
aW50IF9fc2lnbm8pICB0aHJvdyAoKSAgOwoKCiMgNTE4ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5o
IiAyIDMKCgoKIAoKIAoKCgoKCgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXRmb3JrICAodm9p
ZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAoJCQkJICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJ
CSAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVh
ZF9hdGZvcmsgICh2b2lkICgqX19wcmVwYXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQp
ICh2b2lkKSwKCQkJCXZvaWQgKCpfX2NoaWxkKSAodm9pZCkpICB0aHJvdyAoKSAgOwoKIAoKCmV4
dGVybiB2b2lkIHB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wICAodm9pZCkgIHRocm93ICgp
ICA7CgoKIApleHRlcm4gdm9pZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZSAgKHZvaWQpICB0aHJvdyAo
KSAgOwoKfSAKCgojIDY0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2ltcmVmY250LmhwcCIgMgoKCiAgdm9pZCBQUl9Bc3NlcnQoY29uc3QgY2hhciAq
cywgY29uc3QgY2hhciAqZmlsZSwgaW50IGxuKTsKICAKCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgpjbGFzcyBJTVJlZkNvdW50ZWQgewpwdWJsaWM6CiAgICAgICAgIAoKCgoKICAgICAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICBhZGRSZWYoKTsKCiAgICAgICAgIAoKCgoKCiAgICAgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVmKCk7CgogICAgICAgICAKICAgICAgICBpb2M6
OnVudW1lcmljX3QgICBjb3VudCgpIGNvbnN0OwoKcHJvdGVjdGVkOgogICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUmVmQ291bnRlZCgpOwoKICAgICAg
ICAgCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVJlZkNv
dW50ZWQoY29uc3QgSU1SZWZDb3VudGVkJik7CgogICAgICAgICAKCgoKCgoKICAgICAgICBJTVJl
ZkNvdW50ZWQmICAgb3BlcmF0b3I9KGNvbnN0IElNUmVmQ291bnRlZCYpOwoKICAgICAgICAgCgoK
CgoKICAgICAgICB2aXJ0dWFsICAgICAgICAgICAgICAgICB+SU1SZWZDb3VudGVkKCk7Cgpwcml2
YXRlOgogICAgICAgIGlvYzo6dW51bWVyaWNfdCAgIGZDb3VudDsKIAoKICAgICAgICBzdGF0aWMg
cHRocmVhZF9tdXRleF90IF9zb2xhcmlzX2F0b21pYzsKCiAKfTsKCiAKCiAKCgoKCgoKCiNwcmFn
bWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCgogCiNw
cmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3Jl
KQogCgogCgojIDQ5ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lidWZmZXIuaHBwIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmluZy5ocHAiIDEKIyA5NTAgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmluZy5ocHAiCgojIDUwICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lidWZmZXIu
aHBwIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19J
T0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJh
Z21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEg
ZW51bSg0KQoKCgoKCgoKIAoKIAogCgogCmNsYXNzIElTdHJpbmdUZXN0Owp0ZW1wbGF0ZTxjbGFz
cyBUPiBjbGFzcyBJU3RhdGljT2JqZWN0SGVscGVyOwogCgogCgpjbGFzcyAgIElCdWZmZXIgOiBw
dWJsaWMgSU1SZWZDb3VudGVkIHsKcHVibGljOgogCklCdWZmZXIKICpuZXdCdWZmZXIgICAgICAg
ICAgICggY29uc3Qgdm9pZCogICAgICAgICAgcDEsCiAgICAgICAgICAgICAgICAgICAgICAgIElT
dHJpbmc6OnVsZW5ndGhfdCAgIGxlbjEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQqICAgICAgICAgIHAyICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBJU3RyaW5n
Ojp1bGVuZ3RoX3QgICBsZW4yICAgID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCogICAgICAgICAgcDMgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIElTdHJp
bmc6OnVsZW5ndGhfdCAgIGxlbjMgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICAgICAgICAgICAgICAgICBwYWRDaGFyID0gMCApIGNvbnN0OwoKc3RhdGljIElTdHJpbmc6OnVs
ZW5ndGhfdAogIGNoZWNrQWRkaXRpb24gICAgICAgKCBJU3RyaW5nOjp1bGVuZ3RoX3QgYWRkZW5k
MSwKICAgICAgICAgICAgICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0aF90IGFkZGVuZDIgKSwK
ICBjaGVja011bHRpcGxpY2F0aW9uICggSVN0cmluZzo6dWxlbmd0aF90IGZhY3RvcjEsCiAgICAg
ICAgICAgICAgICAgICAgICAgIElTdHJpbmc6OnVsZW5ndGhfdCBmYWN0b3IyICksCiAgb3ZlcmZs
b3cgICAgICAgICAgICAoICk7CgpzdGF0aWMgdm9pZAogIHNldERlZmF1bHRCdWZmZXIgICAgKCBJ
QnVmZmVyKiBuZXdEZWZhdWx0QnVmZmVyICk7CgogCnN0YXRpYyBJQnVmZmVyCiAqZGVmYXVsdEJ1
ZmZlciAoICksCiAqZnJvbUNvbnRlbnRzICAoIGNvbnN0IGNoYXIgKnBCdWZmZXIgKTsKCklCdWZm
ZXIKICpudWxsICAgICAgICAgICggKSBjb25zdDsKCklTdHJpbmc6OnVjb3VudF90CiAgdXNlQ291
bnQgICAgICAoICkgY29uc3Q7CklTdHJpbmc6OnVsZW5ndGhfdAogIGxlbmd0aCAgICAgICAgKCAp
IGNvbnN0OwoKY29uc3QgY2hhcgogKmNvbnRlbnRzICAgICAgKCApIGNvbnN0OwoKY2hhcgogKmNv
bnRlbnRzICAgICAgKCApOwoKdmlydHVhbCBJU3RyaW5nRW51bTo6Q2hhclR5cGUKICBjaGFyVHlw
ZSAgICAgICggSVN0cmluZzo6dW9mZnNldF90IGluZGV4ICkgY29uc3Q7Cgp2aXJ0dWFsIGNoYXIK
ICpuZXh0ICAgICAgICAgICggY29uc3QgY2hhciAqcHJldiApOwoKdmlydHVhbCBjb25zdCBjaGFy
CiAqbmV4dCAgICAgICAgICAoIGNvbnN0IGNoYXIgKnByZXYgKSBjb25zdDsKCiAKdHlwZWRlZiBl
bnVtIHsKICBlcXVhbCwKICBncmVhdGVyVGhhbiwKICBsZXNzVGhhbgogIH0gQ29tcGFyaXNvbjsK
CnZpcnR1YWwgQ29tcGFyaXNvbgogIGNvbXBhcmUgKCBjb25zdCB2b2lkKiBwLAogICAgICAgICAg
ICBJU3RyaW5nOjp1bGVuZ3RoX3QgICBsZW4gKSBjb25zdDsKIAp2aXJ0dWFsIElCdWZmZXIKICpz
dWJTdHJpbmcgKCBJU3RyaW5nOjp1b2Zmc2V0X3Qgc3RhcnRQb3MsCiAgICAgICAgICAgICAgSVN0
cmluZzo6dWxlbmd0aF90IGxlbiwKICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgICAgcGFk
Q2hhcmFjdGVyICkgY29uc3Q7CgogCgoKCgoKIAp2aXJ0dWFsIElTdHJpbmcKICBhc0RlYnVnSW5m
byAoICkgY29uc3Q7CgogCnZpcnR1YWwgYm9vbAogIGlzQWxwaGFudW1lcmljICggKSBjb25zdCwK
ICBpc0FscGhhYmV0aWMgICAoICkgY29uc3QsCiAgaXNBU0NJSSAgICAgICAgKCApIGNvbnN0LAog
IGlzQ29udHJvbCAgICAgICggKSBjb25zdCwKICBpc0RpZ2l0cyAgICAgICAoICkgY29uc3QsCiAg
aXNHcmFwaGljcyAgICAgKCApIGNvbnN0LAogIGlzSGV4RGlnaXRzICAgICggKSBjb25zdCwKICBp
c0xvd2VyQ2FzZSAgICAoICkgY29uc3QsCiAgaXNQcmludGFibGUgICAgKCApIGNvbnN0LAogIGlz
UHVuY3R1YXRpb24gICggKSBjb25zdCwKICBpc1VwcGVyQ2FzZSAgICAoICkgY29uc3QsCiAgaXNX
aGl0ZVNwYWNlICAgKCApIGNvbnN0OwoKIAp2aXJ0dWFsIGJvb2wKICBpc01CQ1MgICAgICAgKCAp
IGNvbnN0LAogIGlzREJDUyAgICAgICAoICkgY29uc3QsCiAgaXNTQkNTICAgICAgICggKSBjb25z
dCwKICBpc1ZhbGlkTUJDUyAgKCApIGNvbnN0LAogIGlzVmFsaWREQkNTICAoICkgY29uc3QsCiAg
aW5jbHVkZXNNQkNTICggKSBjb25zdCwKICBpbmNsdWRlc0RCQ1MgKCApIGNvbnN0LAogIGluY2x1
ZGVzU0JDUyAoICkgY29uc3Q7CgogCnZpcnR1YWwgSVN0cmluZzo6dW9mZnNldF90CiAgaW5kZXhP
ZiAgICAgICAgICAgKCBjb25zdCBjaGFyKiAgICAgICAgICAgICBwU3RyaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0aF90ICAgICAgbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgSVN0cmluZzo6dW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAxICkgY29uc3QsCiAgaW5k
ZXhPZiAgICAgICAgICAgKCBjb25zdCBJU3RyaW5nVGVzdCYgICAgICBhVGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgIElTdHJpbmc6OnVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSApIGNvbnN0
LAogIGluZGV4T2ZBbnlCdXQgICAgICggY29uc3QgY2hhciogICAgICAgICAgICAgcFN0cmluZywK
ICAgICAgICAgICAgICAgICAgICAgIElTdHJpbmc6OnVsZW5ndGhfdCAgICAgIGxlbiwKICAgICAg
ICAgICAgICAgICAgICAgIElTdHJpbmc6OnVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMSApIGNv
bnN0LAogIGluZGV4T2ZBbnlCdXQgICAgICggY29uc3QgSVN0cmluZ1Rlc3QmICAgICAgYVRlc3Qs
CiAgICAgICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9
IDEgKSBjb25zdCwKICBpbmRleE9mQW55T2YgICAgICAoIGNvbnN0IGNoYXIqICAgICAgICAgICAg
IHBTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1bGVuZ3RoX3QgICAgICBs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1b2Zmc2V0X3QgICAgICBzdGFydFBv
cyA9IDEgKSBjb25zdCwKICBpbmRleE9mQW55T2YgICAgICAoIGNvbnN0IElTdHJpbmdUZXN0JiAg
ICAgIGFUZXN0LAogICAgICAgICAgICAgICAgICAgICAgSVN0cmluZzo6dW9mZnNldF90ICAgICAg
c3RhcnRQb3MgPSAxICkgY29uc3QsCiAgbGFzdEluZGV4T2YgICAgICAgKCBjb25zdCBjaGFyKiAg
ICAgICAgICAgICBwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0
aF90ICAgICAgbGVuLAogICAgICAgICAgICAgICAgICAgICAgSVN0cmluZzo6dW9mZnNldF90ICAg
ICAgc3RhcnRQb3MgPSAwICkgY29uc3QsCiAgbGFzdEluZGV4T2YgICAgICAgKCBjb25zdCBJU3Ry
aW5nVGVzdCYgICAgICBhVGVzdCwKICAgICAgICAgICAgICAgICAgICAgIElTdHJpbmc6OnVvZmZz
ZXRfdCAgICAgIHN0YXJ0UG9zID0gMCApIGNvbnN0LAogIGxhc3RJbmRleE9mQW55QnV0ICggY29u
c3QgY2hhciogICAgICAgICAgICAgcFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgIElTdHJp
bmc6OnVsZW5ndGhfdCAgICAgIGxlbiwKICAgICAgICAgICAgICAgICAgICAgIElTdHJpbmc6OnVv
ZmZzZXRfdCAgICAgIHN0YXJ0UG9zID0gMCApIGNvbnN0LAogIGxhc3RJbmRleE9mQW55QnV0ICgg
Y29uc3QgSVN0cmluZ1Rlc3QmICAgICAgYVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICBJU3Ry
aW5nOjp1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDAgKSBjb25zdCwKICBsYXN0SW5kZXhPZkFu
eU9mICAoIGNvbnN0IGNoYXIqICAgICAgICAgICAgIHBTdHJpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICBJU3RyaW5nOjp1bGVuZ3RoX3QgICAgICBsZW4sCiAgICAgICAgICAgICAgICAgICAgICBJ
U3RyaW5nOjp1b2Zmc2V0X3QgICAgICBzdGFydFBvcyA9IDAgKSBjb25zdCwKICBsYXN0SW5kZXhP
ZkFueU9mICAoIGNvbnN0IElTdHJpbmdUZXN0JiAgICAgIGFUZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgSVN0cmluZzo6dW9mZnNldF90ICAgICAgc3RhcnRQb3MgPSAwICkgY29uc3Q7CgogCnZp
cnR1YWwgSUJ1ZmZlcgogKmNlbnRlciAgICAgICAoIElTdHJpbmc6OnVsZW5ndGhfdCAgIG5ld0xl
biwKICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgICAgICBwYWRDaGFyYWN0ZXIgKSwK
ICpjaGFuZ2UgICAgICAgKCBjb25zdCBjaGFyKiAgICAgICAgICBwU291cmNlLAogICAgICAgICAg
ICAgICAgIElTdHJpbmc6OnVsZW5ndGhfdCAgIHNvdXJjZUxlbiwKICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiAgICAgICAgICBwVGFyZ2V0LAogICAgICAgICAgICAgICAgIElTdHJpbmc6OnVs
ZW5ndGhfdCAgIHRhcmdldExlbiwKICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1b2Zmc2V0X3Qg
ICBzdGFydFBvcywKICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1Y291bnRfdCAgICBudW1DaGFu
Z2VzICksCiAqY29weSAgICAgICAgICggSVN0cmluZzo6dWNvdW50X3QgICAgbnVtQ29waWVzICks
CiAqaW5zZXJ0ICAgICAgICggY29uc3QgY2hhciogICAgICAgICAgcEluc2VydCwKICAgICAgICAg
ICAgICAgICBJU3RyaW5nOjp1bGVuZ3RoX3QgICBpbnNlcnRMZW4sCiAgICAgICAgICAgICAgICAg
SVN0cmluZzo6dW9mZnNldF90ICAgcG9zLAogICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAg
ICAgICAgIHBhZENoYXJhY3RlciApLAogKmxlZnRKdXN0aWZ5ICAoIElTdHJpbmc6OnVsZW5ndGhf
dCAgIG5ld0xlbiwKICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgICAgICBwYWRDaGFy
YWN0ZXIgKSwKICpsb3dlckNhc2UgICAgKCApLAogKm92ZXJsYXlXaXRoICAoIGNvbnN0IGNoYXIq
ICAgICAgICAgIG92ZXJsYXksCiAgICAgICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0aF90ICAg
bGVuLAogICAgICAgICAgICAgICAgIElTdHJpbmc6OnVvZmZzZXRfdCAgIHBvcywKICAgICAgICAg
ICAgICAgICBjaGFyICAgICAgICAgICAgICAgICBwYWRDaGFyYWN0ZXIgKSwKICpyZW1vdmUgICAg
ICAgKCBJU3RyaW5nOjp1b2Zmc2V0X3QgICBzdGFydFBvcywKICAgICAgICAgICAgICAgICBJU3Ry
aW5nOjp1Y291bnRfdCAgICBudW1DaGFycyApLAogKnJldmVyc2UgICAgICAoICksCiAqcmlnaHRK
dXN0aWZ5ICggSVN0cmluZzo6dWxlbmd0aF90ICAgbmV3TGVuLAogICAgICAgICAgICAgICAgIGNo
YXIgICAgICAgICAgICAgICAgIHBhZENoYXJhY3RlciApLAogKnN0cmlwICAgICAgICAoIGNvbnN0
IGNoYXIqICAgICAgICAgIHBDaGFycywKICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1bGVuZ3Ro
X3QgICBsZW4sCiAgICAgICAgICAgICAgICAgSVN0cmluZ0VudW06OlN0cmlwTW9kZSBtb2RlICks
CiAqc3RyaXAgICAgICAgICggY29uc3QgSVN0cmluZ1Rlc3QmICAgICBhVGVzdCwKICAgICAgICAg
ICAgICAgICBJU3RyaW5nRW51bTo6U3RyaXBNb2RlIG1vZGUgKSwKICp0cmFuc2xhdGUgICAgKCBj
b25zdCBjaGFyKiAgICAgICAgICBwSW5wdXRDaGFycywKICAgICAgICAgICAgICAgICBJU3RyaW5n
Ojp1bGVuZ3RoX3QgICBpbnB1dExlbiwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiAgICAg
ICAgICBwT3V0cHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0aF90ICAg
b3V0cHV0TGVuLAogICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICAgICAgIHBhZENoYXJh
Y3RlciApLAogKnVwcGVyQ2FzZSAgICAoICk7Cgpwcm90ZWN0ZWQ6CgpzdGF0aWMgYm9vbCBpczMy
Ynl0ZXNBbGlnbmVkOwoKCgoKCgogCnZpcnR1YWwgSVN0cmluZzo6dW9mZnNldF90CiAgc3RhcnRT
ZWFyY2ggICAgICAgICAgKCBJU3RyaW5nOjp1b2Zmc2V0X3Qgc3RhcnRQb3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBJU3RyaW5nOjp1bGVuZ3RoX3Qgc2VhcmNoTGVuICkgY29uc3QsCiAgc3Rh
cnRCYWNrd2FyZHNTZWFyY2ggKCBJU3RyaW5nOjp1b2Zmc2V0X3Qgc3RhcnRQb3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBJU3RyaW5nOjp1bGVuZ3RoX3Qgc2VhcmNoTGVuICkgY29uc3Q7Cgog
CnZpcnR1YWwgSUJ1ZmZlcgogKmFsbG9jYXRlICAgICAgICAoIElTdHJpbmc6OnVsZW5ndGhfdCBi
dWZMZW5ndGggKSBjb25zdDsKCiMgMjkyICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lidWZmZXIuaHBwIgoKdm9pZAogKm9wZXJhdG9yIG5ldyAgICAo
IHNpemVfdCAgICAgIHQsCiAgICAgICAgICAgICAgICAgICAgSVN0cmluZzo6dWxlbmd0aF90ICAg
YnVmTGVuICk7CnZvaWQKICBvcGVyYXRvciBkZWxldGUgKCB2b2lkKiAgICBwICk7CgoKIApzdGF0
aWMgSUJ1ZmZlcgogKmluaXRpYWxpemUgKCApOwoKIAp2aXJ0dWFsIGNvbnN0IGNoYXIKICpjbGFz
c05hbWUgKCApIGNvbnN0OwoKIAogIElCdWZmZXIgKCBJU3RyaW5nOjp1bGVuZ3RoX3QgbmV3TGVu
ICk7CnZpcnR1YWwKIH5JQnVmZmVyICggKTsKCnByaXZhdGU6CiAKSVN0cmluZzo6dWxlbmd0aF90
CiAgbGVuOwpjaGFyCiAgZGF0YVsxXTsKCnN0YXRpYyBJQnVmZmVyCiAqbnVsbEJ1ZmZlcjsKCnN0
YXRpYyBJQnVmZmVyCiAqbnVsbElCdWZmZXI7CgoKCgoKCgpmcmllbmQgY2xhc3MgSVN0cmluZzsK
ZnJpZW5kIGNsYXNzIElTdGF0aWNPYmplY3RIZWxwZXI8SUJ1ZmZlcj47Cn07CgogCgogCgoKCgoK
CgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2li
dWZmZXIuaW5sIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCgogCmV4dGVybiAiQyIgewogIAojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgoK
CgoKIyAzMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pYnVmZmVyLmlubCIgMgoKfQoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lleGNiYXNlLmhwcCIgMQojIDEwICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGNiYXNlLmhwcCIKCgojIDcyNiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFz
ZS5ocHAiCgoKCgoKCiMgMzQgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaWJ1ZmZlci5pbmwiIDIKCiAKCiNwcmFnbWEgaW5mbyhub3BhcikKCiAKaW5s
aW5lIElTdHJpbmc6OnVsZW5ndGhfdCBJQnVmZmVyIDo6IGNoZWNrQWRkaXRpb24gKCBJU3RyaW5n
Ojp1bGVuZ3RoX3QgYWRkZW5kMSwgSVN0cmluZzo6dWxlbmd0aF90IGFkZGVuZDIgKQogIHsKICBy
ZXR1cm4gKCBhZGRlbmQxIDwKCgoKICAgICAgICAgICAgICAgICAgICAgKDIxNDc0ODM2NDcgICAq
IDJVICsgMSkgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGFkZGVuZDIgKSA/IGFk
ZGVuZDEgKyBhZGRlbmQyIDogb3ZlcmZsb3coKTsKICB9CmlubGluZSBJU3RyaW5nOjp1bGVuZ3Ro
X3QgSUJ1ZmZlciA6OiBjaGVja011bHRpcGxpY2F0aW9uICggSVN0cmluZzo6dWxlbmd0aF90IGZh
Y3RvcjEsIElTdHJpbmc6OnVsZW5ndGhfdCBmYWN0b3IyICkKICB7CiAgcmV0dXJuICggZmFjdG9y
MSA8CgoKCiAgICAgICAgICAgICAgICAgICAgICgyMTQ3NDgzNjQ3ICAgKiAyVSArIDEpIAoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBmYWN0b3IyICkgPyBmYWN0b3IxICogZmFjdG9y
MiA6IG92ZXJmbG93KCk7CiAgfQogCmlubGluZSBJU3RyaW5nOjp1bGVuZ3RoX3QgSUJ1ZmZlciA6
OiB1c2VDb3VudCAoICkgY29uc3QKICB7CiAgcmV0dXJuIChJU3RyaW5nOjp1bGVuZ3RoX3QpKHRo
aXMtPmNvdW50KCkpOwogIH0KaW5saW5lIElTdHJpbmc6OnVsZW5ndGhfdCBJQnVmZmVyIDo6IGxl
bmd0aCAoICkgY29uc3QKICB7CiAgcmV0dXJuIGxlbjsKICB9CmlubGluZSBjb25zdCBjaGFyICpJ
QnVmZmVyIDo6IGNvbnRlbnRzICggKSBjb25zdAogIHsKICByZXR1cm4gZGF0YTsKICB9CmlubGlu
ZSBjaGFyICpJQnVmZmVyIDo6IGNvbnRlbnRzICggKQogIHsKICByZXR1cm4gZGF0YTsKICB9Cgoj
IDk2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2li
dWZmZXIuaW5sIgoKCgoKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCgogCgojIDM1NyAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYnVmZmVyLmhwcCIgMgoK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2li
dWZmZXJuLmlubCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAoKIyA0NiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pYnVmZmVybi5pbmwiCgoKaW5saW5lIHZvaWQqCklCdWZmZXI6Om9wZXJhdG9yIG5l
dyhzaXplX3QsIElTdHJpbmc6OnVsZW5ndGhfdCByZWFsU2l6ZSkKewogIHZvaWQgKnAgPSA6Om5l
dyBjaGFyW2NoZWNrQWRkaXRpb24oc2l6ZW9mKElCdWZmZXIpLCByZWFsU2l6ZSldOwogIHJldHVy
biBwOwp9CgppbmxpbmUgdm9pZApJQnVmZmVyOjpvcGVyYXRvciBkZWxldGUodm9pZCAqcCkKewog
ICAgOjpkZWxldGUgW10gKGNoYXIqKXA7Cn0KCgoKIAoKIyAzNTggIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJ1ZmZlci5ocHAiIDIKCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUp
CiAKCiAKCgoKCgoKIyAzOSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pc3RyaW5nLmlubCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJ0ZXN0LmhwcCIgMQojIDEwICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJ0ZXN0LmhwcCIKCgoK
CgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKCiAKCiAK
I3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQ
T1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmds
aW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoK
CgogCgogCmV4dGVybiAiQyIKICB7CgoKCgogIHR5cGVkZWYgaW50IElDU3RyVGVzdEZuKCBpbnQg
KTsKCiAgfQogCgogCiAKCiAKCmNsYXNzICAgSVN0cmluZ1Rlc3QgewpwdWJsaWM6CgogCnR5cGVk
ZWYgSUNTdHJUZXN0Rm4KICBDRnVuY3Rpb247CnR5cGVkZWYgYm9vbAogIENQUEZ1bmN0aW9uKCBp
bnQgKTsKCiAKIyAxMDggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaXN0cnRlc3QuaHBwIgoKICBJU3RyaW5nVGVzdCAoIENGdW5jdGlvbiAgICZjRnVu
YyApOwoKCgoKCgp2aXJ0dWFsCiB+SVN0cmluZ1Rlc3QgKCApOwoKIAp2aXJ0dWFsIGJvb2wKICB0
ZXN0ICAgICAgICAoIGludCBjICkgY29uc3Q7Cgpwcm90ZWN0ZWQ6CiAKZW51bSBGblR5cGUgewog
IHVzZXIsCiAgYywKICBjcHAsCiAgbWVtRm4sCiAgY01lbUZuCiAgfTsKCkZuVHlwZQogIHR5cGU7
CgoKCgogICB1bmlvbiB7IENGdW5jdGlvbiAqY0ZuOyB2b2lkICp1c2VyOyB9IGRhdGE7CgoKCiAK
ICBJU3RyaW5nVGVzdCAoIEZuVHlwZSAgdHlwZSwKICAgICAgICAgICAgICAgIHZvaWQgICAqdXNl
ckRhdGEgKTsKCn07ICAKCnRlbXBsYXRlIDwgY2xhc3MgVCA+CmNsYXNzICAgSVN0cmluZ1Rlc3RN
ZW1iZXJGbiA6IHB1YmxpYyBJU3RyaW5nVGVzdCB7CnB1YmxpYzoKIAp0eXBlZGVmIGJvb2wKICgg
VDo6KkNvbnN0Rm4gKSggaW50ICkgY29uc3Q7CnR5cGVkZWYgYm9vbAogKCBUOjoqTm9uY29uc3RG
biApKCBpbnQgKTsKCiAKICBJU3RyaW5nVGVzdE1lbWJlckZuICggY29uc3QgVCAgICAmb2JqZWN0
LAogICAgICAgICAgICAgICAgICAgICAgICBDb25zdEZuICAgICBjb25zdEZuICkKICAgIDogSVN0
cmluZ1Rlc3QgKCBjTWVtRm4sICh2b2lkKikmb2JqZWN0ICksCiAgICAgIGNNRiAgICAgICAgICgg
Y29uc3RGbiApCiAgICB7CiAgICB9CiAgSVN0cmluZ1Rlc3RNZW1iZXJGbiAoIFQgICAgICAgICAg
Jm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgTm9uY29uc3RGbiAgbm9uY29uc3RGbiAp
CiAgICA6IElTdHJpbmdUZXN0ICggdXNlciwgKHZvaWQqKSZvYmplY3QgKSwKICAgICAgbmNNRiAg
ICAgICAgKCBub25jb25zdEZuICkKICAgIHsKICAgIH0KCiAKdmlydHVhbCBib29sCiAgdGVzdCAg
ICAgICAgICAgICAgICAoIGludCBjICkgY29uc3QKICAgIHsKICAgIGlmICggdGhpcy0+dHlwZSA9
PSBjTWVtRm4gKQogICAgICByZXR1cm4gKChjb25zdCBUKilkYXRhLnVzZXItPipjTUYpKCBjICk7
CiAgICBlbHNlCiAgICAgIHJldHVybiAoKFQqKWRhdGEudXNlci0+Km5jTUYpKCBjICk7CiAgICB9
Cgpwcml2YXRlOgogCnVuaW9uIHsgQ29uc3RGbiBjTUY7IE5vbmNvbnN0Rm4gbmNNRjsgfTsKCn07
CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBv
cCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2lzdHJ0ZXN0LmlubCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgppbmxpbmUgSVN0cmluZ1Rlc3QgOjogSVN0cmlu
Z1Rlc3QgKCBGblR5cGUgdHlwLCB2b2lkICpwICkKICA6IHR5cGUoIHR5cCApCiAgewogIGRhdGEu
dXNlciA9IHA7CiAgfQoKIAoKIyAyMDkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1z
aGFyZWQuYmluL2luY2x1ZGUvaXN0cnRlc3QuaHBwIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25l
KQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgoKCgoKCgoj
IDQwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lz
dHJpbmcuaW5sIiAyCgogCgogCmlubGluZSBJQnVmZmVyKiBJU3RyaW5nOjpidWZmZXIoKSBjb25z
dAp7CiAgICAKCgogICAgcmV0dXJuIElCdWZmZXI6OmZyb21Db250ZW50cyhwQnVmZmVyKTsKfQoK
aW5saW5lIGNoYXIqIElTdHJpbmc6OmRhdGEoKSBjb25zdAp7CiAgICByZXR1cm4gcEJ1ZmZlcjsK
fQoKaW5saW5lIElTdHJpbmc6OnVsZW5ndGhfdCBJU3RyaW5nOjpsZW5ndGhPZiAoY29uc3QgY2hh
ciogcCkKewogICAgcmV0dXJuIHAgPyBzdHJsZW4ocCkgOiAwOwp9CgppbmxpbmUgSVN0cmluZyYg
SVN0cmluZzo6c2V0QnVmZmVyKElCdWZmZXIqIGlidWZmKQp7CiAgICAKCgogICAgcEJ1ZmZlciA9
IGlidWZmLT5jb250ZW50cygpOwogICAgcmV0dXJuICp0aGlzOwp9CgoKIAppbmxpbmUgSVN0cmlu
Zzo6dWxlbmd0aF90IElTdHJpbmc6Omxlbmd0aCgpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5i
dWZmZXIoKS0+bGVuZ3RoKCk7Cn0KCmlubGluZSBJU3RyaW5nOjp1bGVuZ3RoX3QgSVN0cmluZzo6
c2l6ZSgpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+bGVuZ3RoKCk7Cn0KCmlu
bGluZSBJU3RyaW5nRW51bTo6Q2hhclR5cGUgSVN0cmluZzo6Y2hhclR5cGUgKCB1b2Zmc2V0X3Qg
aW5kZXggKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmNoYXJUeXBlKGluZGV4
KTsKfQoKIAppbmxpbmUgSVN0cmluZzo6dW9mZnNldF90IElTdHJpbmc6OmluZGV4T2YoIGNvbnN0
IElTdHJpbmcmIGFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5i
dWZmZXIoKS0+aW5kZXhPZiggYVN0cmluZy5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFTdHJpbmcubGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0UG9zICk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmlu
Zzo6aW5kZXhPZiggY29uc3QgY2hhciogcFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcykgY29uc3QKewogICAgcmV0
dXJuIHRoaXMtPmJ1ZmZlcigpLT5pbmRleE9mKCBwU3RyaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZW5ndGhPZiggcFN0cmluZyApLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFydFBvcyApOwp9CgppbmxpbmUgSVN0cmluZzo6dW9mZnNldF90
IElTdHJpbmc6OmluZGV4T2YoIGNvbnN0IElTdHJpbmdUZXN0JiAgYVRlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgICAgICBzdGFy
dFBvcykgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pbmRleE9mKGFUZXN0LCBz
dGFydFBvcyApOwp9CgppbmxpbmUgSVN0cmluZzo6dW9mZnNldF90IElTdHJpbmc6OmluZGV4T2ZB
bnlCdXQoIGNvbnN0IElTdHJpbmcmICBhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgICBzdGFydFBvcykgY29uc3QK
ewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pbmRleE9mQW55QnV0KCAgIGFTdHJpbmcuZGF0
YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFTdHJpbmcu
bGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRQb3MgKTsKfQoKaW5saW5lIElTdHJpbmc6OnVvZmZzZXRfdCBJU3RyaW5nOjppbmRleE9mQW55
QnV0KCBjb25zdCBjaGFyKiBwVmFsaWRDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcykgY29uc3QKewogICAg
cmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pbmRleE9mQW55QnV0KCAgIHBWYWxpZENoYXJzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aE9mKHBWYWxpZENo
YXJzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBv
cyk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6aW5kZXhPZkFueUJ1dCAo
IGNoYXIgICAgICB2YWxpZENoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVvZmZzZXRfdCBzdGFydFBvcyApIGNvbnN0CnsKICAgIHJldHVybiB0
aGlzLT5idWZmZXIoKS0+aW5kZXhPZkFueUJ1dCgmdmFsaWRDaGFyLCAxLCBzdGFydFBvcyApOwp9
CgppbmxpbmUgSVN0cmluZzo6dW9mZnNldF90IElTdHJpbmc6OmluZGV4T2ZBbnlCdXQgKCBjb25z
dCBJU3RyaW5nVGVzdCAmYVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgICAgICBzdGFydFBvcyApIGNvbnN0CnsKICBy
ZXR1cm4gdGhpcy0+YnVmZmVyKCktPmluZGV4T2ZBbnlCdXQoIGFUZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3MgKTsKfQoKaW5saW5lIElTdHJpbmc6
OnVvZmZzZXRfdCBJU3RyaW5nOjppbmRleE9mQW55T2YgKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZz
ZXRfdCAgICAgIHN0YXJ0UG9zICkgY29uc3QKewogIHJldHVybiB0aGlzLT5idWZmZXIoKS0+aW5k
ZXhPZkFueU9mKCBhU3RyaW5nLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYVN0cmluZy5sZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRQb3MgKTsKfQoKaW5saW5lIElTdHJpbmc6OnVvZmZzZXRfdCBJU3RyaW5n
OjppbmRleE9mQW55T2YgKCBjb25zdCBjaGFyICpwU2VhcmNoQ2hhcnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgc3RhcnRQb3Mg
KSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pbmRleE9mQW55T2YoIHBTZWFyY2hD
aGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoT2YoIHBT
ZWFyY2hDaGFycyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFBvcyApOwp9CgppbmxpbmUgSVN0cmluZzo6dW9mZnNldF90IElTdHJpbmc6OmluZGV4T2ZBbnlP
ZiAoIGNoYXIgICAgICBzZWFyY2hDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCBzdGFydFBvcyApIGNvbnN0CnsKICAgIHJldHVy
biB0aGlzLT5idWZmZXIoKS0+aW5kZXhPZkFueU9mKCZzZWFyY2hDaGFyLCAxLCBzdGFydFBvcyk7
Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6aW5kZXhPZkFueU9mICggY29u
c3QgSVN0cmluZ1Rlc3QgJmFUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgICAgICBzdGFydFBvcyApIGNvbnN0CnsKICAg
IHJldHVybiB0aGlzLT5idWZmZXIoKS0+aW5kZXhPZkFueU9mKGFUZXN0LCBzdGFydFBvcyk7Cn0K
CmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6bGFzdEluZGV4T2YgKCBjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3MgKSBjb25zdAp7CiAgICByZXR1cm4gdGhp
cy0+YnVmZmVyKCktPmxhc3RJbmRleE9mKCBhU3RyaW5nLmRhdGEoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFTdHJpbmcubGVuZ3RoKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvcyk7Cn0KCmlubGluZSBJU3RyaW5nOjp1
b2Zmc2V0X3QgSVN0cmluZzo6bGFzdEluZGV4T2YgKCBjb25zdCBjaGFyICpwU3RyaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAg
c3RhcnRQb3MgKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmxhc3RJbmRleE9m
KCBwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
T2YocFN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFBvcyk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6bGFzdEluZGV4T2Yg
KCBjb25zdCBJU3RyaW5nVGVzdCAmYVRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICAgICAgc3RhcnRQb3MgKSBjb25zdAp7
CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmxhc3RJbmRleE9mKGFUZXN0LCBzdGFydFBvcyk7
Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6bGFzdEluZGV4T2ZBbnlCdXQo
IGNvbnN0IElTdHJpbmcmICBhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICAgc3RhcnRQb3MpIGNvbnN0CnsK
ICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+bGFzdEluZGV4T2ZBbnlCdXQoICAgYVN0cmluZy5k
YXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFT
dHJpbmcubGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0UG9zICk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QKSVN0cmluZzo6
bGFzdEluZGV4T2ZBbnlCdXQoY29uc3QgY2hhciogcFZhbGlkQ2hhcnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVvZmZzZXRfdCAgIHN0YXJ0UG9zKSBjb25zdAp7CiAgICByZXR1cm4gdGhp
cy0+YnVmZmVyKCktPmxhc3RJbmRleE9mQW55QnV0KCAgIHBWYWxpZENoYXJzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhPZihwVmFsaWRDaGFy
cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
UG9zKTsKfQoKaW5saW5lIElTdHJpbmc6OnVvZmZzZXRfdApJU3RyaW5nOjpsYXN0SW5kZXhPZkFu
eUJ1dChjaGFyICAgICAgdmFsaWRDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1b2Zm
c2V0X3Qgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+bGFzdElu
ZGV4T2ZBbnlCdXQoJnZhbGlkQ2hhciwgMSwgc3RhcnRQb3MpOwp9CgppbmxpbmUgSVN0cmluZzo6
dW9mZnNldF90CklTdHJpbmc6Omxhc3RJbmRleE9mQW55QnV0KGNvbnN0IElTdHJpbmdUZXN0ICZh
VGVzdCwgdW9mZnNldF90IHN0YXJ0UG9zKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVy
KCktPmxhc3RJbmRleE9mQW55QnV0KGFUZXN0LCBzdGFydFBvcyk7Cn0KCmlubGluZSBJU3RyaW5n
Ojp1b2Zmc2V0X3QKSVN0cmluZzo6bGFzdEluZGV4T2ZBbnlPZiAoY29uc3QgSVN0cmluZyYgYVN0
cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3Mp
IGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+bGFzdEluZGV4T2ZBbnlPZihhU3Ry
aW5nLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
U3RyaW5nLmxlbmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0UG9zKTsKfQoKaW5saW5lIElTdHJpbmc6OnVvZmZzZXRfdApJU3RyaW5nOjpsYXN0
SW5kZXhPZkFueU9mKGNvbnN0IGNoYXIgKnBTZWFyY2hDaGFycywKICAgICAgICAgICAgICAgICAg
ICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcykgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1
ZmZlcigpLT5sYXN0SW5kZXhPZkFueU9mKHBTZWFyY2hDaGFycywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhPZihwU2VhcmNoQ2hhcnMpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zKTsKfQoKaW5saW5l
IElTdHJpbmc6OnVvZmZzZXRfdApJU3RyaW5nOjpsYXN0SW5kZXhPZkFueU9mKGNoYXIgICAgICBz
ZWFyY2hDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCBzdGFydFBvcykg
Y29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5sYXN0SW5kZXhPZkFueU9mKCZzZWFy
Y2hDaGFyLCAxLCBzdGFydFBvcyk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QKSVN0cmlu
Zzo6bGFzdEluZGV4T2ZBbnlPZihjb25zdCBJU3RyaW5nVGVzdCYgYVRlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgICAgIHN0YXJ0UG9zKSBjb25zdAp7CiAgICBy
ZXR1cm4gdGhpcy0+YnVmZmVyKCktPmxhc3RJbmRleE9mQW55T2YoYVRlc3QsIHN0YXJ0UG9zKTsK
fQoKaW5saW5lIElTdHJpbmc6OnVjb3VudF90CklTdHJpbmc6Om9jY3VycmVuY2VzT2YoY29uc3Qg
SVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBz
dGFydFBvcykgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPm9jY3VycmVuY2VzT2YoYVN0cmluZy5k
YXRhKCksIGFTdHJpbmcubGVuZ3RoKCksIHN0YXJ0UG9zKTsKfQoKaW5saW5lIElTdHJpbmc6OnVj
b3VudF90CklTdHJpbmc6Om9jY3VycmVuY2VzT2YoY29uc3QgY2hhciogcFN0cmluZywKICAgICAg
ICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBzdGFydFBvcykgY29uc3QKewogICAgcmV0dXJu
IHRoaXMtPm9jY3VycmVuY2VzT2YocFN0cmluZywgbGVuZ3RoT2YocFN0cmluZyksIHN0YXJ0UG9z
ICk7Cn0KCiAKaW5saW5lIGJvb2wgSVN0cmluZzo6aXNBbHBoYW51bWVyaWMoKSBjb25zdAp7CiAg
ICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzQWxwaGFudW1lcmljKCk7Cn0KCmlubGluZSBib29s
IElTdHJpbmc6OmlzQWxwaGFiZXRpYygpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIo
KS0+aXNBbHBoYWJldGljKCk7Cn0KCmlubGluZSBib29sIElTdHJpbmc6OmlzQVNDSUkoKSBjb25z
dAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzQVNDSUkoKTsKfQoKaW5saW5lIGJvb2wg
SVN0cmluZzo6aXNDb250cm9sKCkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5p
c0NvbnRyb2woKTsKfQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aXNEaWdpdHMoKSBjb25zdAp7CiAg
ICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzRGlnaXRzKCk7Cn0KCmlubGluZSBib29sIElTdHJp
bmc6OmlzR3JhcGhpY3MoKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzR3Jh
cGhpY3MoKTsKfQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aXNIZXhEaWdpdHMoKSBjb25zdAp7CiAg
ICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzSGV4RGlnaXRzKCk7Cn0KCmlubGluZSBib29sIElT
dHJpbmc6OmlzTG93ZXJDYXNlKCkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5p
c0xvd2VyQ2FzZSgpOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppc1ByaW50YWJsZSgpIGNvbnN0
CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+aXNQcmludGFibGUoKTsKfQoKaW5saW5lIGJv
b2wgSVN0cmluZzo6aXNQdW5jdHVhdGlvbigpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZm
ZXIoKS0+aXNQdW5jdHVhdGlvbigpOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppc1VwcGVyQ2Fz
ZSgpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS0+aXNVcHBlckNhc2UoKTsKfQoK
aW5saW5lIGJvb2wgSVN0cmluZzo6aXNXaGl0ZVNwYWNlKCkgY29uc3QKewogICAgcmV0dXJuIHRo
aXMtPmJ1ZmZlcigpLT5pc1doaXRlU3BhY2UoKTsKfQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aXNN
QkNTKCkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pc01CQ1MoKTsKfQoKaW5s
aW5lIGJvb2wgSVN0cmluZzo6aXNEQkNTKCkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmJ1ZmZl
cigpLT5pc0RCQ1MoKTsKfQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aXNTQkNTKCkgY29uc3QKewog
ICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pc1NCQ1MoKTsKfQoKaW5saW5lIGJvb2wgSVN0cmlu
Zzo6aXNWYWxpZE1CQ1MoKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmlzVmFs
aWRNQkNTKCk7Cn0KCmlubGluZSBib29sIElTdHJpbmc6OmlzVmFsaWREQkNTKCkgY29uc3QKewog
ICAgcmV0dXJuIHRoaXMtPmJ1ZmZlcigpLT5pc1ZhbGlkREJDUygpOwp9CgppbmxpbmUgYm9vbCBJ
U3RyaW5nOjppbmNsdWRlc01CQ1MoKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCkt
PmluY2x1ZGVzTUJDUygpOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppbmNsdWRlc0RCQ1MoKSBj
b25zdAp7CiAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCktPmluY2x1ZGVzREJDUygpOwp9Cgppbmxp
bmUgYm9vbCBJU3RyaW5nOjppbmNsdWRlc1NCQ1MoKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+
YnVmZmVyKCktPmluY2x1ZGVzU0JDUygpOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppc0xpa2Uo
Y29uc3QgSVN0cmluZyYgYVBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICAgICAgICAgICB6ZXJvT3JNb3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAg
ICAgICAgICAgYW55Q2hhciApIGNvbnN0CnsKICByZXR1cm4gdGhpcy0+aXNMaWtlKCBhUGF0dGVy
bi5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgYVBhdHRlcm4ubGVuZ3RoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgemVyb09yTW9yZSwKICAgICAgICAgICAgICAgICAgICAgICBhbnlD
aGFyICk7Cn0KCmlubGluZSBib29sIElTdHJpbmc6OmlzTGlrZShjb25zdCBjaGFyKiBwUGF0dGVy
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgIHplcm9Pck1vcmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICBhbnlDaGFyKSBjb25zdAp7CiAg
cmV0dXJuIHRoaXMtPmlzTGlrZSggcFBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoT2YocFBhdHRlcm4pLAogICAgICAgICAgICAgICAgICAgICAgIHplcm9Pck1vcmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgYW55Q2hhciApOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppc0Fi
YnJldmlhdGlvbkZvciggY29uc3QgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVsZW5ndGhfdCAgICAgIG1pbkFiYnJldkxlbmd0aCkgY29u
c3QKewogIHJldHVybiB0aGlzLT5pc0FiYnJldkZvciggYVN0cmluZy5kYXRhKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhU3RyaW5nLmxlbmd0aCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWluQWJicmV2TGVuZ3RoICk7Cn0KCmlubGluZSBib29sIElTdHJpbmc6OmlzQWJi
cmV2aWF0aW9uRm9yKCBjb25zdCBjaGFyKiBwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWxlbmd0aF90ICAgbWluQWJicmV2TGVuZ3RoKSBjb25zdAp7CiAg
cmV0dXJuIHRoaXMtPmlzQWJicmV2Rm9yKCBwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoT2YocFN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5B
YmJyZXZMZW5ndGgpOwp9CgppbmxpbmUgYm9vbCBJU3RyaW5nOjppbmNsdWRlcyhjb25zdCBJU3Ry
aW5nJiBhU3RyaW5nKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+aW5kZXhPZihhU3RyaW5nKTsK
fQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aW5jbHVkZXMoY29uc3QgY2hhciogcFN0cmluZykgY29u
c3QKewogICAgcmV0dXJuIHRoaXMtPmluZGV4T2YocFN0cmluZyk7Cn0KCmlubGluZSBib29sIElT
dHJpbmc6OmluY2x1ZGVzKGNoYXIgYUNoYXIpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5pbmRl
eE9mKGFDaGFyKTsKfQoKaW5saW5lIGJvb2wgSVN0cmluZzo6aW5jbHVkZXMoY29uc3QgSVN0cmlu
Z1Rlc3QmIGFUZXN0KSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+aW5kZXhPZihhVGVzdCk7Cn0K
CiAKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJU3RyaW5nJiBzdHJpbmcxLCBjb25zdCBJ
U3RyaW5nJiBzdHJpbmcyKQp7CiAgICByZXR1cm4oc3RyaW5nMS5idWZmZXIoKS0+Y29tcGFyZShz
dHJpbmcyLmRhdGEoKSwgc3RyaW5nMi5sZW5ndGgoKSkKICAgICAgICAgICAgPT0gSUJ1ZmZlcjo6
ZXF1YWwpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElTdHJpbmcmIHN0cmluZzEs
IGNvbnN0IGNoYXIqIHBTdHJpbmcyKQp7CiAgICByZXR1cm4gKHN0cmluZzEuYnVmZmVyKCktPmNv
bXBhcmUocFN0cmluZzIsIElTdHJpbmc6Omxlbmd0aE9mKHBTdHJpbmcyKSkKICAgICAgICAgICAg
PT0gSUJ1ZmZlcjo6ZXF1YWwpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIq
IHBTdHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJpbmcyKQp7CiAgcmV0dXJuIChzdHJpbmcyLmJ1
ZmZlcigpLT5jb21wYXJlKHBTdHJpbmcxLCBJU3RyaW5nOjpsZW5ndGhPZihwU3RyaW5nMSkpCiAg
ICAgICAgICAgID09IElCdWZmZXI6OmVxdWFsKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJU3RyaW5nJiBzdHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJpbmcyKQp7CiAgICByZXR1
cm4gIShzdHJpbmcxID09IHN0cmluZzIpOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IElTdHJpbmcmIHN0cmluZzEsIGNvbnN0IGNoYXIqIHBTdHJpbmcyKQp7CiAgICByZXR1cm4gIShz
dHJpbmcxID09IHBTdHJpbmcyKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFy
KiBwU3RyaW5nMSwgY29uc3QgSVN0cmluZyYgc3RyaW5nMikKewogICAgcmV0dXJuICEocFN0cmlu
ZzEgPT0gc3RyaW5nMik7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBJU3RyaW5nJiBz
dHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJpbmcyKQp7CiAgICByZXR1cm4gKHN0cmluZzEuYnVm
ZmVyKCktPmNvbXBhcmUoc3RyaW5nMi5kYXRhKCksIHN0cmluZzIubGVuZ3RoKCkpCiAgICAgICAg
ICAgID09IElCdWZmZXI6OmdyZWF0ZXJUaGFuICk7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPihj
b25zdCBJU3RyaW5nJiBzdHJpbmcxLCBjb25zdCBjaGFyKiBwU3RyaW5nMikKewogICAgcmV0dXJu
IChzdHJpbmcxLmJ1ZmZlcigpLT5jb21wYXJlKHBTdHJpbmcyLCBJU3RyaW5nOjpsZW5ndGhPZihw
U3RyaW5nMikpCiAgICAgICAgICAgID09IElCdWZmZXI6OmdyZWF0ZXJUaGFuKTsKfQoKaW5saW5l
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IGNoYXIqIHBTdHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJp
bmcyKQp7CiAgICByZXR1cm4gKHN0cmluZzIuYnVmZmVyKCktPmNvbXBhcmUocFN0cmluZzEsIElT
dHJpbmc6Omxlbmd0aE9mKHBTdHJpbmcxKSkKICAgICAgICAgICAgPT0gSUJ1ZmZlcjo6bGVzc1Ro
YW4pOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IElTdHJpbmcmIHN0cmluZzEsIGNv
bnN0IElTdHJpbmcmIHN0cmluZzIpCnsKICAgIHJldHVybiAhKHN0cmluZzEuYnVmZmVyKCktPmNv
bXBhcmUoIHN0cmluZzIuZGF0YSgpLCBzdHJpbmcyLmxlbmd0aCgpKQogICAgICAgICAgICA9PSBJ
QnVmZmVyOjpsZXNzVGhhbik7Cn0KCmlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgSVN0cmlu
ZyYgc3RyaW5nMSwgY29uc3QgY2hhciogcFN0cmluZzIpCnsKICAgIHJldHVybiAhKHN0cmluZzEu
YnVmZmVyKCktPmNvbXBhcmUocFN0cmluZzIsIElTdHJpbmc6Omxlbmd0aE9mKHBTdHJpbmcyKSkK
ICAgICAgICAgICAgPT0gSUJ1ZmZlcjo6bGVzc1RoYW4gKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBjaGFyKiBwU3RyaW5nMSwgY29uc3QgSVN0cmluZyYgc3RyaW5nMikKewogICAg
cmV0dXJuICEoc3RyaW5nMi5idWZmZXIoKS0+Y29tcGFyZShwU3RyaW5nMSwgSVN0cmluZzo6bGVu
Z3RoT2YocFN0cmluZzEpKQogICAgICAgICAgICA9PSBJQnVmZmVyOjpncmVhdGVyVGhhbiApOwp9
CgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgSVN0cmluZyYgc3RyaW5nMSwgY29uc3QgSVN0
cmluZyYgc3RyaW5nMikKewogICAgcmV0dXJuICEoc3RyaW5nMSA+PSBzdHJpbmcyKTsKfQoKaW5s
aW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IElTdHJpbmcmIHN0cmluZzEsIGNvbnN0IGNoYXIqIHBT
dHJpbmcyKQp7CiAgICByZXR1cm4gIShzdHJpbmcxID49IHBTdHJpbmcyKTsKfQoKaW5saW5lIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IGNoYXIqIHBTdHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJpbmcy
KQp7CiAgICByZXR1cm4gIShwU3RyaW5nMSA+PSBzdHJpbmcyKTsKfQoKaW5saW5lIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBJU3RyaW5nJiBzdHJpbmcxLCBjb25zdCBJU3RyaW5nJiBzdHJpbmcyKQp7
CiAgICByZXR1cm4gIShzdHJpbmcxID4gc3RyaW5nMik7Cn0KCmlubGluZSBib29sIG9wZXJhdG9y
PD0oY29uc3QgSVN0cmluZyYgc3RyaW5nMSwgY29uc3QgY2hhciogcFN0cmluZzIpCnsKICAgIHJl
dHVybiAhKCBzdHJpbmcxID4gcFN0cmluZzIgKTsKfQoKaW5saW5lIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBjaGFyKiBwU3RyaW5nMSwgY29uc3QgSVN0cmluZyYgc3RyaW5nMikKewogICAgcmV0dXJu
ICEoIHBTdHJpbmcxID4gc3RyaW5nMiApOwp9CgogCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OmFz
U3RyaW5nKCkgY29uc3QKewogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgbG9uZyBpbnQgSVN0
cmluZzo6YXNJbnQoKSBjb25zdAp7CiAgICByZXR1cm4gc3RydG9sKCB0aGlzLT5kYXRhKCksIDAs
IDEwICk7Cn0KCmlubGluZSB1bnNpZ25lZCBsb25nIElTdHJpbmc6OmFzVW5zaWduZWQoKSBjb25z
dAp7CiAgICByZXR1cm4gc3RydG91bCggdGhpcy0+ZGF0YSgpLCAwLCAxMCApOwp9CgojIDU0OSAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RyaW5n
LmlubCIKCgppbmxpbmUgZG91YmxlIElTdHJpbmc6OmFzRG91YmxlKCkgY29uc3QKewogICAgcmV0
dXJuIHN0cnRvZCggdGhpcy0+ZGF0YSgpLCAwICk7Cn0KCmlubGluZSBJU3RyaW5nOjpvcGVyYXRv
ciBjaGFyKigpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5kYXRhKCk7Cn0KCmlubGluZSBJU3Ry
aW5nOjpvcGVyYXRvciB1bnNpZ25lZCBjaGFyKigpIGNvbnN0CnsKICAgIHJldHVybiAodW5zaWdu
ZWQgY2hhciopIHRoaXMtPmRhdGEoKTsKfQoKaW5saW5lIElTdHJpbmc6Om9wZXJhdG9yIHNpZ25l
ZCBjaGFyKigpIGNvbnN0CnsKICAgIHJldHVybiAoc2lnbmVkIGNoYXIqKSB0aGlzLT5kYXRhKCk7
Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OmMyYiggY29uc3QgSVN0cmluZyYgYVN0cmluZyAp
CnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLmMyYigpOwp9CgppbmxpbmUgSVN0cmluZyBJ
U3RyaW5nOjpjMmQoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcgKQp7CiAgICByZXR1cm4gSVN0cmlu
ZyhhU3RyaW5nKS5jMmQoKTsKfQoKaW5saW5lIElTdHJpbmcgSVN0cmluZzo6YzJ4KCBjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nICkKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuYzJ4KCk7Cn0K
CmlubGluZSBJU3RyaW5nIElTdHJpbmc6OmIyYyggY29uc3QgSVN0cmluZyYgYVN0cmluZyApCnsK
ICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLmIyYygpOwp9CgppbmxpbmUgSVN0cmluZyYgIElT
dHJpbmc6OmIyZCgpCnsKICAgIHRoaXMtPmIyYygpLmMyZCgpOwogICAgcmV0dXJuICp0aGlzOwp9
CgppbmxpbmUgSVN0cmluZyBJU3RyaW5nOjpiMmQoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcgKQp7
CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS5iMmQoKTsKfQoKaW5saW5lIElTdHJpbmcmICBJ
U3RyaW5nOjpiMngoKQp7CiAgICB0aGlzLT5iMmMoKS5jMngoKTsKICAgIHJldHVybiAqdGhpczsK
fQoKaW5saW5lIElTdHJpbmcgSVN0cmluZzo6YjJ4KCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nICkK
ewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuYjJ4KCk7Cn0KCmlubGluZSBJU3RyaW5nIElT
dHJpbmc6OmQyYyggY29uc3QgSVN0cmluZyYgYVN0cmluZyApCnsKICAgIHJldHVybiBJU3RyaW5n
KGFTdHJpbmcpLmQyYygpOwp9CgppbmxpbmUgSVN0cmluZyYgIElTdHJpbmc6OmQyYigpCnsKICAg
IHRoaXMtPmQyYygpLmMyYigpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSVN0cmluZyBJ
U3RyaW5nOjpkMmIoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcgKQp7CiAgICByZXR1cm4gSVN0cmlu
ZyhhU3RyaW5nKS5kMmIoKTsKfQoKaW5saW5lIElTdHJpbmcmIElTdHJpbmc6OmQyeCgpCnsKICAg
IHRoaXMtPmQyYygpLmMyeCgpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSVN0cmluZyBJ
U3RyaW5nOjpkMngoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcgKQp7CiAgICByZXR1cm4gSVN0cmlu
ZyhhU3RyaW5nKS5kMngoKTsKfQoKaW5saW5lIElTdHJpbmcgSVN0cmluZzo6eDJjKCBjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nICkKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykueDJjKCk7Cn0K
CmlubGluZSBJU3RyaW5nJiBJU3RyaW5nOjp4MmIoKQp7CiAgICB0aGlzLT54MmMoKS5jMmIoKTsK
ICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lIElTdHJpbmcgSVN0cmluZzo6eDJiKCBjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nICkKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykueDJiKCk7Cn0K
CmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6eDJkKCkKewogICAgdGhpcy0+eDJjKCkuYzJkKCk7
CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OngyZCggY29uc3Qg
SVN0cmluZyYgYVN0cmluZyApCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLngyZCgpOwp9
CgogCmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6Y2hhbmdlICggY29uc3QgSVN0cmluZyYgYVBh
dHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyYg
YVJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRf
dCAgICAgIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjb3Vu
dF90ICAgICAgIG51bUNoYW5nZXMgKQogIHsKICByZXR1cm4gdGhpcy0+Y2hhbmdlKCBhUGF0dGVy
bi5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgYVBhdHRlcm4ubGVuZ3RoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgYVJlcGxhY2VtZW50LmRhdGEoKSwKICAgICAgICAgICAgICAgICAg
ICAgICBhUmVwbGFjZW1lbnQubGVuZ3RoKCksCiAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQ
b3MsCiAgICAgICAgICAgICAgICAgICAgICAgbnVtQ2hhbmdlcyApOwogIH0KaW5saW5lIElTdHJp
bmcmICBJU3RyaW5nOjpjaGFuZ2UgKCBjb25zdCBJU3RyaW5nJiBhUGF0dGVybiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpwUmVwbGFjZW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgc3RhcnRQb3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNvdW50X3QgICAgICAgbnVtQ2hh
bmdlcyApCiAgewogIHJldHVybiB0aGlzLT5jaGFuZ2UoIGFQYXR0ZXJuLmRhdGEoKSwKICAgICAg
ICAgICAgICAgICAgICAgICBhUGF0dGVybi5sZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAg
ICBwUmVwbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoT2YoIHBSZXBsYWNl
bWVudCApLAogICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAg
ICAgICAgIG51bUNoYW5nZXMgKTsKICB9CmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6Y2hhbmdl
ICggY29uc3QgY2hhciAgICAqcFBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSVN0cmluZyYgYVJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVjb3VudF90ICAgICAgIG51bUNoYW5nZXMgKQogIHsKICByZXR1cm4g
dGhpcy0+Y2hhbmdlKCBwUGF0dGVybiwKICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhPZigg
cFBhdHRlcm4gKSwKICAgICAgICAgICAgICAgICAgICAgICBhUmVwbGFjZW1lbnQuZGF0YSgpLAog
ICAgICAgICAgICAgICAgICAgICAgIGFSZXBsYWNlbWVudC5sZW5ndGgoKSwKICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydFBvcywKICAgICAgICAgICAgICAgICAgICAgICBudW1DaGFuZ2VzICk7
CiAgfQppbmxpbmUgSVN0cmluZyYgIElTdHJpbmc6OmNoYW5nZSAoIGNvbnN0IGNoYXIgKnBQYXR0
ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBSZXBs
YWNlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBz
dGFydFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICBu
dW1DaGFuZ2VzICkKICB7CiAgcmV0dXJuIHRoaXMtPmNoYW5nZSggcFBhdHRlcm4sCiAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoT2YoIHBQYXR0ZXJuICksCiAgICAgICAgICAgICAgICAgICAg
ICAgcFJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aE9mKCBwUmVwbGFj
ZW1lbnQgKSwKICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvcywKICAgICAgICAgICAgICAg
ICAgICAgICBudW1DaGFuZ2VzICk7CiAgfQppbmxpbmUgSVN0cmluZyBJU3RyaW5nOjpjaGFuZ2Ug
KCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJU3RyaW5nJiBhUGF0dGVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAgICAqcFJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1b2Zmc2V0X3QgICAgICBzdGFydFBvcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWNvdW50X3QgICAgICAgbnVtQ2hhbmdlcyApCiAgewogIHJldHVybiBJU3RyaW5n
KGFTdHJpbmcpLmNoYW5nZSggYVBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwUmVwbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNoYW5nZXMgKTsKICB9
CmlubGluZSBJU3RyaW5nIElTdHJpbmc6OmNoYW5nZSAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnBQYXR0ZXJu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nJiBhUmVwbGFj
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0
YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAgICBu
dW1DaGFuZ2VzICkKICB7CiAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuY2hhbmdlKCBwUGF0dGVy
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFSZXBsYWNlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtQ2hhbmdlcyApOwogIH0KaW5saW5lIElTdHJpbmcgSVN0cmluZzo6
Y29weSAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1Y291bnRfdCAgICAgICBudW1Db3BpZXMgKQogIHsKICByZXR1cm4gSVN0cmluZyhhU3Ry
aW5nKS5jb3B5KCBudW1Db3BpZXMgKTsKICB9CmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6aW5z
ZXJ0ICggY29uc3QgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1b2Zmc2V0X3QgICAgICBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgKQogIHsKICByZXR1cm4gdGhpcy0+
aW5zZXJ0KCBhU3RyaW5nLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICBhU3RyaW5nLmxl
bmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgIHBhZENoYXJhY3RlciApOwogIH0KaW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjppbnNlcnQg
KCBjb25zdCBjaGFyICpwU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVvZmZzZXRfdCAgIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgICAgICAgIHBhZENoYXJhY3RlciApCiAgewogIHJldHVybiB0aGlzLT5pbnNlcnQoIHBTdHJp
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoT2YoIHBTdHJpbmcgKSwKICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICBwYWRDaGFyYWN0ZXIg
KTsKICB9CmlubGluZSBJU3RyaW5nIElTdHJpbmc6Omluc2VydCAoIGNvbnN0IElTdHJpbmcmIGFT
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcmIGFu
SW5zZXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICAgICBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFk
Q2hhcmFjdGVyICkKICB7CiAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuaW5zZXJ0KCBhbkluc2Vy
dCwgaW5kZXgsIHBhZENoYXJhY3RlciApOwogIH0KaW5saW5lIElTdHJpbmcgSVN0cmluZzo6aW5z
ZXJ0ICggY29uc3QgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAgICAqcEluc2VydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW9mZnNldF90ICAgICAgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciApCiAgewogIHJldHVybiBJU3RyaW5nKGFT
dHJpbmcpLmluc2VydCggcEluc2VydCwgaW5kZXgsIHBhZENoYXJhY3RlciApOwogIH0KaW5saW5l
IElTdHJpbmcgSVN0cmluZzo6bGVmdEp1c3RpZnkgKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsZW5ndGhfdCAgICAgIG5ld0xl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAg
ICBwYWRDaGFyYWN0ZXIgKQogIHsKICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS5sZWZ0SnVzdGlm
eSggbmV3TGVuZ3RoLCBwYWRDaGFyYWN0ZXIgKTsKICB9CmlubGluZSBJU3RyaW5nIElTdHJpbmc6
Omxvd2VyQ2FzZSAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcgKQogIHsKICByZXR1cm4gSVN0cmlu
ZyhhU3RyaW5nKS5sb3dlckNhc2UoKTsKICB9CmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6b3Zl
cmxheVdpdGggKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW9mZnNldF90ICAgICAgaW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgKQogIHsK
ICByZXR1cm4gdGhpcy0+b3ZlcmxheVdpdGgoIGFTdHJpbmcuZGF0YSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYVN0cmluZy5sZW5ndGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkQ2hhcmFjdGVyICk7CiAg
fQppbmxpbmUgSVN0cmluZyYgSVN0cmluZzo6b3ZlcmxheVdpdGggKCBjb25zdCBjaGFyICpwU3Ry
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1b2Zmc2V0X3QgICBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAg
cGFkQ2hhcmFjdGVyICkKICAgewogICByZXR1cm4gdGhpcy0+b3ZlcmxheVdpdGgoIHBTdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoT2YoIHBTdHJpbmcgKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWRDaGFyYWN0ZXIgKTsKICAgfQppbmxpbmUgSVN0cmluZyBJU3RyaW5nOjpvdmVybGF5V2l0
aCAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSVN0cmluZyYgYW5PdmVybGF5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciApCiAgewogIHJl
dHVybiBJU3RyaW5nKGFTdHJpbmcpLm92ZXJsYXlXaXRoKCBhbk92ZXJsYXksIGluZGV4LCBwYWRD
aGFyYWN0ZXIgKTsKICB9CmlubGluZSBJU3RyaW5nIElTdHJpbmc6Om92ZXJsYXlXaXRoICggY29u
c3QgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICAgICpwT3ZlcmxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1b2Zmc2V0X3QgICAgICBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRDaGFyYWN0ZXIgKQogIHsKICByZXR1cm4gSVN0
cmluZyhhU3RyaW5nKS5vdmVybGF5V2l0aCggcE92ZXJsYXksIGluZGV4LCBwYWRDaGFyYWN0ZXIg
KTsKICB9CmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnJlbW92ZSAoIGNvbnN0IElTdHJpbmcmIGFT
dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVvZmZzZXRfdCAgICAgIHN0
YXJ0UG9zICkKICB7CiAgcmV0dXJuIElTdHJpbmc6OnJlbW92ZSggYVN0cmluZywgc3RhcnRQb3Ms
IGtBbGxDaGFuZ2VzICk7CiAgfQppbmxpbmUgSVN0cmluZyBJU3RyaW5nOjpyZXZlcnNlICggY29u
c3QgSVN0cmluZyYgYVN0cmluZyApCiAgewogIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnJldmVy
c2UoKTsKICB9CmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnJpZ2h0SnVzdGlmeSAoIGNvbnN0IElT
dHJpbmcmIGFTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVs
ZW5ndGhfdCAgICAgIG5ld0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAgICAgICAgICAgcGFkQ2hhcmFjdGVyICkKewogICAgcmV0dXJuIElTdHJpbmco
YVN0cmluZykucmlnaHRKdXN0aWZ5KCBuZXdMZW5ndGgsIHBhZENoYXJhY3RlciApOwp9Cgppbmxp
bmUgSVN0cmluZyYgIElTdHJpbmc6OnN0cmlwTGVhZGluZygpCnsKICAgIHJldHVybiB0aGlzLT5z
dHJpcCggSVN0cmluZ1Rlc3QoIGlzc3BhY2UgKSwgSVN0cmluZ0VudW06OmxlYWRpbmcgKTsKfQoK
aW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJpcFRyYWlsaW5nKCkKewogICAgcmV0dXJuIHRo
aXMtPnN0cmlwKCBJU3RyaW5nVGVzdCggaXNzcGFjZSApLCBJU3RyaW5nRW51bTo6dHJhaWxpbmcg
KTsKfQoKaW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJpcCAoIGNoYXIgYUNoYXIgKQp7CiAg
ICByZXR1cm4gdGhpcy0+c3RyaXAoICZhQ2hhciwgMSwgSVN0cmluZ0VudW06OmJvdGggKTsKfQoK
aW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJpcExlYWRpbmcgKCBjaGFyIGFDaGFyICkKewog
ICAgcmV0dXJuIHRoaXMtPnN0cmlwKCAmYUNoYXIsIDEsIElTdHJpbmdFbnVtOjpsZWFkaW5nICk7
Cn0KCmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6c3RyaXBUcmFpbGluZyAoIGNoYXIgYUNoYXIg
KQp7CiAgICByZXR1cm4gdGhpcy0+c3RyaXAoICZhQ2hhciwgMSwgSVN0cmluZ0VudW06OnRyYWls
aW5nICk7Cn0KCmlubGluZSBJU3RyaW5nJiAgSVN0cmluZzo6c3RyaXAgKCBjb25zdCBJU3RyaW5n
JiBhU3RyaW5nICkKewogICAgcmV0dXJuIHRoaXMtPnN0cmlwKCBhU3RyaW5nLmRhdGEoKSwgYVN0
cmluZy5sZW5ndGgoKSwgSVN0cmluZ0VudW06OmJvdGggKTsKfQoKaW5saW5lIElTdHJpbmcmICBJ
U3RyaW5nOjpzdHJpcExlYWRpbmcgKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nICkKewogICAgcmV0
dXJuIHRoaXMtPnN0cmlwKCBhU3RyaW5nLmRhdGEoKSwgYVN0cmluZy5sZW5ndGgoKSwgSVN0cmlu
Z0VudW06OmxlYWRpbmcgKTsKfQoKaW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJpcFRyYWls
aW5nICggY29uc3QgSVN0cmluZyYgYVN0cmluZyApCnsKICAgIHJldHVybiB0aGlzLT5zdHJpcCgg
YVN0cmluZy5kYXRhKCksIGFTdHJpbmcubGVuZ3RoKCksIElTdHJpbmdFbnVtOjp0cmFpbGluZyAp
Owp9CgppbmxpbmUgSVN0cmluZyYgIElTdHJpbmc6OnN0cmlwICggY29uc3QgY2hhciAqcFN0cmlu
ZyApCnsKICAgIHJldHVybiB0aGlzLT5zdHJpcCggcFN0cmluZywgbGVuZ3RoT2YoIHBTdHJpbmcg
KSwgSVN0cmluZ0VudW06OmJvdGggKTsKfQoKaW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJp
cExlYWRpbmcgKCBjb25zdCBjaGFyICpwU3RyaW5nICkKewogICAgcmV0dXJuIHRoaXMtPnN0cmlw
KCBwU3RyaW5nLCBsZW5ndGhPZiggcFN0cmluZyApLCBJU3RyaW5nRW51bTo6bGVhZGluZyApOwp9
CgppbmxpbmUgSVN0cmluZyYgIElTdHJpbmc6OnN0cmlwVHJhaWxpbmcgKCBjb25zdCBjaGFyICpw
U3RyaW5nICkKewogICAgcmV0dXJuIHRoaXMtPnN0cmlwKCBwU3RyaW5nLCBsZW5ndGhPZiggcFN0
cmluZyApLCBJU3RyaW5nRW51bTo6dHJhaWxpbmcgKTsKfQoKaW5saW5lIElTdHJpbmcmICBJU3Ry
aW5nOjpzdHJpcCAoIGNvbnN0IElTdHJpbmdUZXN0ICZhVGVzdCApCnsKICAgIHJldHVybiB0aGlz
LT5zdHJpcCggYVRlc3QsIElTdHJpbmdFbnVtOjpib3RoICk7Cn0KCmlubGluZSBJU3RyaW5nJiAg
SVN0cmluZzo6c3RyaXBMZWFkaW5nICggY29uc3QgSVN0cmluZ1Rlc3QgJmFUZXN0ICkKewogICAg
cmV0dXJuIHRoaXMtPnN0cmlwKCBhVGVzdCwgSVN0cmluZ0VudW06OmxlYWRpbmcgKTsKfQoKaW5s
aW5lIElTdHJpbmcmICBJU3RyaW5nOjpzdHJpcFRyYWlsaW5nICggY29uc3QgSVN0cmluZ1Rlc3Qg
JmFUZXN0ICkKewogICAgcmV0dXJuIHRoaXMtPnN0cmlwKCBhVGVzdCwgSVN0cmluZ0VudW06OnRy
YWlsaW5nICk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnN0cmlwQmxhbmtzICggY29uc3Qg
SVN0cmluZyYgYVN0cmluZyApCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwKCk7
Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnN0cmlwKGNvbnN0IElTdHJpbmcmIGFTdHJpbmcs
IGNoYXIgYUNoYXIpCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwKGFDaGFyKTsK
fQoKaW5saW5lIElTdHJpbmcKSVN0cmluZzo6c3RyaXAoY29uc3QgSVN0cmluZyYgYVN0cmluZywg
Y29uc3QgSVN0cmluZyYgYVN0cmluZ09mQ2hhcnMpCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJp
bmcpLnN0cmlwKGFTdHJpbmdPZkNoYXJzKTsKfQoKaW5saW5lIElTdHJpbmcKSVN0cmluZzo6c3Ry
aXAoY29uc3QgSVN0cmluZyYgYVN0cmluZywgY29uc3QgY2hhciogcFN0cmluZ09mQ2hhcnMpCnsK
ICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwKHBTdHJpbmdPZkNoYXJzKTsKfQoKaW5s
aW5lIElTdHJpbmcKSVN0cmluZzo6c3RyaXAoY29uc3QgSVN0cmluZyYgYVN0cmluZywgY29uc3Qg
SVN0cmluZ1Rlc3QmIGFUZXN0KQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS5zdHJpcChh
VGVzdCk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnN0cmlwTGVhZGluZ0JsYW5rcyAoIGNv
bnN0IElTdHJpbmcmIGFTdHJpbmcgKQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS5zdHJp
cExlYWRpbmcoKTsKfQoKaW5saW5lIElTdHJpbmcKSVN0cmluZzo6c3RyaXBMZWFkaW5nKGNvbnN0
IElTdHJpbmcmIGFTdHJpbmcsIGNoYXIgYUNoYXIpCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJp
bmcpLnN0cmlwTGVhZGluZyhhQ2hhcik7Cn0KCmlubGluZSBJU3RyaW5nCklTdHJpbmc6OnN0cmlw
TGVhZGluZyhjb25zdCBJU3RyaW5nJiBhU3RyaW5nLCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nT2ZD
aGFycyApCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwTGVhZGluZyhhU3RyaW5n
T2ZDaGFycyk7Cn0KCmlubGluZSBJU3RyaW5nCklTdHJpbmc6OnN0cmlwTGVhZGluZyhjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nLCBjb25zdCBjaGFyKiBwU3RyaW5nT2ZDaGFycyApCnsKICAgIHJldHVy
biBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwTGVhZGluZyhwU3RyaW5nT2ZDaGFycyk7Cn0KCmlubGlu
ZSBJU3RyaW5nCklTdHJpbmc6OnN0cmlwTGVhZGluZyhjb25zdCBJU3RyaW5nJiBhU3RyaW5nLCBj
b25zdCBJU3RyaW5nVGVzdCYgYVRlc3QpCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0
cmlwTGVhZGluZyhhVGVzdCk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnN0cmlwVHJhaWxp
bmdCbGFua3MgKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nICkKewogICAgcmV0dXJuIElTdHJpbmco
YVN0cmluZykuc3RyaXBUcmFpbGluZygpOwp9CgppbmxpbmUgSVN0cmluZyBJU3RyaW5nOjpzdHJp
cFRyYWlsaW5nIChjb25zdCBJU3RyaW5nJiBhU3RyaW5nLCBjaGFyIGFDaGFyKQp7CiAgICByZXR1
cm4gSVN0cmluZyhhU3RyaW5nKS5zdHJpcFRyYWlsaW5nKGFDaGFyKTsKfQoKaW5saW5lIElTdHJp
bmcKSVN0cmluZzo6c3RyaXBUcmFpbGluZyhjb25zdCBJU3RyaW5nJiBhU3RyaW5nLCBjb25zdCBJ
U3RyaW5nJiBhU3RyaW5nT2ZDaGFycykKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuc3Ry
aXBUcmFpbGluZyhhU3RyaW5nT2ZDaGFycyk7Cn0KCmlubGluZSBJU3RyaW5nCklTdHJpbmc6OnN0
cmlwVHJhaWxpbmcoY29uc3QgSVN0cmluZyYgYVN0cmluZywgY29uc3QgY2hhciogcFN0cmluZ09m
Q2hhcnMpCnsKICAgIHJldHVybiBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwVHJhaWxpbmcocFN0cmlu
Z09mQ2hhcnMpOwp9CgppbmxpbmUgSVN0cmluZwpJU3RyaW5nOjpzdHJpcFRyYWlsaW5nKGNvbnN0
IElTdHJpbmcmIGFTdHJpbmcsIGNvbnN0IElTdHJpbmdUZXN0JiBhVGVzdCApCnsKICAgIHJldHVy
biBJU3RyaW5nKGFTdHJpbmcpLnN0cmlwVHJhaWxpbmcoYVRlc3QpOwp9CgppbmxpbmUgSVN0cmlu
ZyYgIElTdHJpbmc6OnRyYW5zbGF0ZSAoIGNvbnN0IElTdHJpbmcmIGlucHV0Q2hhcnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyYgb3V0cHV0Q2hh
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAg
cGFkQ2hhcmFjdGVyICkKewogIHJldHVybiB0aGlzLT50cmFuc2xhdGUoIGlucHV0Q2hhcnMuZGF0
YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q2hhcnMubGVuZ3RoKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Q2hhcnMuZGF0YSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dENoYXJzLmxlbmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
IHBhZENoYXJhY3RlciApOwp9CgppbmxpbmUgSVN0cmluZyYgIElTdHJpbmc6OnRyYW5zbGF0ZSAo
IGNvbnN0IElTdHJpbmcmIGlucHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAgICAqcE91dHB1dENoYXJzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgIHBhZENoYXJhY3RlciApCnsKICByZXR1
cm4gdGhpcy0+dHJhbnNsYXRlKCBpbnB1dENoYXJzLmRhdGEoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dENoYXJzLmxlbmd0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBP
dXRwdXRDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhPZiggcE91dHB1dENo
YXJzICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkQ2hhcmFjdGVyICk7Cn0KCmlubGlu
ZSBJU3RyaW5nJiAgSVN0cmluZzo6dHJhbnNsYXRlICggY29uc3QgY2hhciAgICAqcElucHV0Q2hh
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyYg
b3V0cHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAg
ICAgICAgICAgcGFkQ2hhcmFjdGVyICkKewogIHJldHVybiB0aGlzLT50cmFuc2xhdGUoIHBJbnB1
dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aE9mKCBwSW5wdXRDaGFycyAp
LAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dENoYXJzLmRhdGEoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRDaGFycy5sZW5ndGgoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYWRDaGFyYWN0ZXIgKTsKfQoKaW5saW5lIElTdHJpbmcmICBJU3RyaW5nOjp0cmFu
c2xhdGUgKCBjb25zdCBjaGFyICpwSW5wdXRDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpwT3V0cHV0Q2hhcnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgcGFkQ2hhcmFjdGVyICkKewogIHJldHVy
biB0aGlzLT50cmFuc2xhdGUoIHBJbnB1dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGxlbmd0aE9mKCBwSW5wdXRDaGFycyApLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBPdXRw
dXRDaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhPZiggcE91dHB1dENoYXJz
ICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkQ2hhcmFjdGVyICk7Cn0KCmlubGluZSBJ
U3RyaW5nIElTdHJpbmc6OnRyYW5zbGF0ZSAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcmIGlucHV0Q2hhcnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcmIG91dHB1
dENoYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAg
ICBwYWRDaGFyYWN0ZXIgKQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS50cmFuc2xhdGUo
IGlucHV0Q2hhcnMsIG91dHB1dENoYXJzLCBwYWRDaGFyYWN0ZXIgKTsKfQoKaW5saW5lIElTdHJp
bmcgSVN0cmluZzo6dHJhbnNsYXRlICggY29uc3QgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyYgaW5wdXRDaGFycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcE91dHB1dENo
YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBw
YWRDaGFyYWN0ZXIgKQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS50cmFuc2xhdGUoIGlu
cHV0Q2hhcnMsIHBPdXRwdXRDaGFycywgcGFkQ2hhcmFjdGVyICk7Cn0KCmlubGluZSBJU3RyaW5n
IElTdHJpbmc6OnRyYW5zbGF0ZSAoIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnBJbnB1dENoYXJzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nJiBvdXRwdXRDaGFy
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGFk
Q2hhcmFjdGVyICkKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykudHJhbnNsYXRlKCBwSW5w
dXRDaGFycywgb3V0cHV0Q2hhcnMsIHBhZENoYXJhY3RlciApOwp9CgppbmxpbmUgSVN0cmluZyBJ
U3RyaW5nOjp0cmFuc2xhdGUgKCBjb25zdCBJU3RyaW5nJiBhU3RyaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpwSW5wdXRDaGFycywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqcE91dHB1dENoYXJz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBwYWRD
aGFyYWN0ZXIgKQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS50cmFuc2xhdGUoIHBJbnB1
dENoYXJzLCBwT3V0cHV0Q2hhcnMsIHBhZENoYXJhY3RlciApOwp9CgogCmlubGluZSBJU3RyaW5n
JiAgSVN0cmluZzo6cmVtb3ZlV29yZHMgKCB1Y291bnRfdCBmaXJzdFdvcmQgKQp7CiAgICByZXR1
cm4gdGhpcy0+cmVtb3ZlV29yZHMoIGZpcnN0V29yZCwga0FsbENoYW5nZXMgKTsKfQoKaW5saW5l
IElTdHJpbmcgSVN0cmluZzo6cmVtb3ZlV29yZHMoY29uc3QgSVN0cmluZyYgYVN0cmluZywgdWNv
dW50X3QgZmlyc3RXb3JkKQp7CiAgICByZXR1cm4gSVN0cmluZyhhU3RyaW5nKS5yZW1vdmVXb3Jk
cyggZmlyc3RXb3JkICk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnJlbW92ZVdvcmRzKGNv
bnN0ICAgSVN0cmluZyYgYVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWNvdW50X3QgICAgICAgICBmaXJzdFdvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVjb3VudF90ICAgICAgICAgbnVtV29yZHMgKQp7CiAgICByZXR1cm4gSVN0cmlu
ZyhhU3RyaW5nKS5yZW1vdmVXb3JkcyggZmlyc3RXb3JkLCBudW1Xb3JkcyApOwp9CgppbmxpbmUg
SVN0cmluZzo6dW9mZnNldF90CklTdHJpbmc6OmluZGV4T2ZQaHJhc2UoY29uc3QgSVN0cmluZyYg
YVBocmFzZSwgdWNvdW50X3Qgc3RhcnRXb3JkKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+Zmlu
ZFBocmFzZSAoIGFQaHJhc2UsIHN0YXJ0V29yZCwgY2hhckluZGV4ICk7Cn0KCmlubGluZSBJU3Ry
aW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6aW5kZXhPZldvcmQgKCB1Y291bnRfdCB3b3JkTnVtYmVy
ICkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmluZGV4T2ZXb3JkKCB3b3JkTnVtYmVyLCAxLCAw
ICk7Cn0KCmlubGluZSBJU3RyaW5nOjp1b2Zmc2V0X3QgSVN0cmluZzo6d29yZEluZGV4T2ZQaHJh
c2UoIGNvbnN0IElTdHJpbmcmIGFQaHJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVjb3VudF90ICAgICAgc3RhcnRXb3JkICkgY29uc3QK
ewogICAgcmV0dXJuIHRoaXMtPmZpbmRQaHJhc2UoIGFQaHJhc2UsIHN0YXJ0V29yZCwgd29yZElu
ZGV4ICk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OnNwYWNlICggY29uc3QgSVN0cmluZyYg
YVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y291bnRfdCAgICAgICBu
dW1TcGFjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAg
c3BhY2VDaGFyICkKewogICAgcmV0dXJuIElTdHJpbmcoYVN0cmluZykuc3BhY2UoIG51bVNwYWNl
cywgc3BhY2VDaGFyICk7Cn0KCmlubGluZSBJU3RyaW5nIElTdHJpbmc6OndvcmRzICggdWNvdW50
X3QgZmlyc3RXb3JkICkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPndvcmRzKCBmaXJzdFdvcmQs
IGtBbGxDaGFuZ2VzICk7Cn0KCmlubGluZSB2b2lkIElTdHJpbmc6Om9wZXJhdG9yPj49KElEYXRh
U3RyZWFtJiB0b1doZXJlKQp7CiAgICB3cml0ZVRvU3RyZWFtKHRvV2hlcmUpOwp9CgppbmxpbmUg
dm9pZCBJU3RyaW5nOjpvcGVyYXRvcjw8PShJRGF0YVN0cmVhbSYgZnJvbVdoZXJlKQp7CiAgICBy
ZWFkRnJvbVN0cmVhbShmcm9tV2hlcmUpOwp9CgppbmxpbmUKCnN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sIGNvbnN0IElTdHJpbmcmIGFTdHJpbmcpCgoKCnsK
ICAgIHJldHVybiBhU3RyZWFtIDw8IGFTdHJpbmcuZGF0YSgpOwp9CgppbmxpbmUKCnN0ZDo6aXN0
cmVhbSYgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0mIGFTdHJlYW0sIElTdHJpbmcmIGFTdHJpbmcp
CgoKCnsKICAgIGlmICggYVN0cmluZy5sZW5ndGgoKSA9PSAwICkKICAgICAgICBhU3RyaW5nID0g
SVN0cmluZyggMCwgMTI4ICk7CgogICAgSVN0cmluZzo6dWxlbmd0aF90IGJ5dGVzID0gMDsKICAg
IGNoYXIgYzsKCiAgICAgCiAgICBJU3RyaW5nOjp1bGVuZ3RoX3QgcGVla1Jlc3VsdDsKICAgIElT
dHJpbmc6OnVsZW5ndGhfdCB3ID0gYVN0cmVhbS53aWR0aCgwKTsKCiAgICBpZiAoYVN0cmVhbS5m
bGFncygpICYKCiAgICAgICAgc3RkOjppb3M6OnNraXB3cwoKCgogICAgICAgICkKICAgIHsKIAog
ICAgICAgIGlmKDAgICkKICAgICAgICB7CiAgICAgICAgICAgIGFTdHJpbmcucmVtb3ZlKDEpOwog
ICAgICAgICAgICByZXR1cm4gYVN0cmVhbTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7
CiAKICAgICAgICBpZigwICApCiAgICAgICAgewogICAgICAgICAgICBhU3RyaW5nLnJlbW92ZSgx
KTsKICAgICAgICAgICAgcmV0dXJuIGFTdHJlYW07CiAgICAgICAgfQogICAgfQoKICAgIGlmICh3
ID4gMCkKICAgIHsKICAgICAgICBmb3IgKHBlZWtSZXN1bHQgPSBhU3RyZWFtLnBlZWsoKTsKICAg
ICAgICAgICAgISAoX19jdHlwZV9iWyhpbnQpICggKCBwZWVrUmVzdWx0ICkgKV0gJiAodW5zaWdu
ZWQgc2hvcnQgaW50KSAgIF9JU3NwYWNlICkgICAmJiBwZWVrUmVzdWx0ICE9ICgtMSkgICAmJiAt
LXcgPiAwOwogICAgICAgICAgICBwZWVrUmVzdWx0ID0gYVN0cmVhbS5wZWVrKCkpCiAgICAgICAg
ewogICAgICAgICAgICBhU3RyZWFtLmdldChjKTsKICAgICAgICAgICAgaWYgKGJ5dGVzID09IGFT
dHJpbmcubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICBhU3RyaW5nICs9IElTdHJpbmcoIDAsIGJ5
dGVzICk7CiAgICAgICAgICAgIGFTdHJpbmdbKytieXRlc10gPSBjOwogICAgICAgIH0KICAgIH0K
ICAgIGVsc2UKICAgIHsKICAgICAgICBmb3IgKHBlZWtSZXN1bHQgPSBhU3RyZWFtLnBlZWsoKTsK
ICAgICAgICAgICAgICEgKF9fY3R5cGVfYlsoaW50KSAoICggcGVla1Jlc3VsdCApICldICYgKHVu
c2lnbmVkIHNob3J0IGludCkgICBfSVNzcGFjZSApICAgJiYgcGVla1Jlc3VsdCAhPSAoLTEpIDsK
ICAgICAgICAgICAgIHBlZWtSZXN1bHQgPSBhU3RyZWFtLnBlZWsoKSkKICAgICAgICB7CiAgICAg
ICAgICAgIGFTdHJlYW0uZ2V0KGMpOwogICAgICAgICAgICBpZiAoYnl0ZXMgPT0gYVN0cmluZy5s
ZW5ndGgoKSkKICAgICAgICAgICAgICAgIGFTdHJpbmcgKz0gSVN0cmluZyggMCwgYnl0ZXMgKTsK
ICAgICAgICAgICAgICAgIGFTdHJpbmdbKytieXRlc10gPSBjOwogICAgICAgIH0KICAgIH0KCiAg
ICAgCiAgICBhU3RyaW5nLnJlbW92ZShieXRlcysxKTsKCiAgICByZXR1cm4gYVN0cmVhbTsKfQoK
aW5saW5lCgpJU3RyaW5nIElTdHJpbmc6OmxpbmVGcm9tKHN0ZDo6aXN0cmVhbSYgYVN0cmVhbSwg
Y2hhciBkZWxpbSkKCgoKewogICAgSVN0cmluZyByZXN1bHQoMCwgMTI4KTsKCiAgICBJU3RyaW5n
Ojp1bGVuZ3RoX3QgICAgYnl0ZXMgPSAwOwogICAgY2hhciAgICAgICAgYzsKCiAgICBmb3IoIGFT
dHJlYW0uZ2V0KCBjICk7IGMgIT0gZGVsaW0gJiYgIWFTdHJlYW0uZmFpbCgpOyBhU3RyZWFtLmdl
dChjKSApCiAgICB7CiAgICAgICAgaWYgKCBieXRlcyA9PSByZXN1bHQubGVuZ3RoKCkgKQogICAg
ICAgICAgICByZXN1bHQgKz0gSVN0cmluZyggMCwgYnl0ZXMgKTsKICAgICAgICByZXN1bHRbKyti
eXRlc10gPSBjOwogICAgfQoKICAgICAKICAgIHJlc3VsdC5yZW1vdmUoIGJ5dGVzKzEgKTsKICAg
IHJldHVybiByZXN1bHQ7Cn0KCiAKCiMgOTQwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJpbmcuaHBwIiAyCgogCgogCiNwcmFnbWEgaW5mbyhu
b25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgojIDMy
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRl
LmhwcCIgMgoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBf
X0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKI3By
YWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21h
IGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIAoKIAoKCgoKCgpjbGFzcyBJRGF0ZTsKY2xhc3MgSVRl
eHQ7CgoKaW5saW5lIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElE
YXRlJiBhRGF0ZSk7CgoKCiAKCiAKc3RydWN0IElDbnJEYXRlCnsKICAgIHVuc2lnbmVkIGNoYXIg
ZGF5OwogICAgdW5zaWduZWQgY2hhciBtb250aDsKICAgIHVuc2lnbmVkIHNob3J0IHllYXI7Cn07
CgpjbGFzcyAgIElEYXRlCnsKcHVibGljOgogICAgIAogICAgdHlwZWRlZiBlbnVtCiAgICB7CiAg
ICAgICAgTW9uZGF5ID0gMCwKICAgICAgICBUdWVzZGF5LAogICAgICAgIFdlZG5lc2RheSwKICAg
ICAgICBUaHVyc2RheSwKICAgICAgICBGcmlkYXksCiAgICAgICAgU2F0dXJkYXksCiAgICAgICAg
U3VuZGF5CiAgICB9IERheU9mV2VlazsKCiAgICB0eXBlZGVmIGVudW0KICAgIHsKICAgICAgICBK
YW51YXJ5ID0gMSwKICAgICAgICBGZWJydWFyeSwKICAgICAgICBNYXJjaCwKICAgICAgICBBcHJp
bCwKICAgICAgICBNYXksCiAgICAgICAgSnVuZSwKICAgICAgICBKdWx5LAogICAgICAgIEF1Z3Vz
dCwKICAgICAgICBTZXB0ZW1iZXIsCiAgICAgICAgT2N0b2JlciwKICAgICAgICBOb3ZlbWJlciwK
ICAgICAgICBEZWNlbWJlcgogICAgfSBNb250aDsKCiAgICB0eXBlZGVmIGVudW0KICAgIHsKICAg
ICAgICB5eSwKICAgICAgICB5eXl5CiAgICB9IFllYXJGb3JtYXQ7CgogICAgIAogICAgSURhdGUo
ICk7CgogICAgSURhdGUoTW9udGggYU1vbnRoLCBpbnQgYURheSwgaW50IGFZZWFyKTsKCiAgICBJ
RGF0ZShpbnQgYURheSwgTW9udGggYU1vbnRoLCBpbnQgYVllYXIpOwoKICAgIElEYXRlKGludCBh
WWVhciwgaW50IGFEYXkpOwoKICAgIElEYXRlKGNvbnN0IElEYXRlJiBhRGF0ZSk7CgogICAgSURh
dGUoaW9jOjp1bnVtZXJpY190IGp1bGlhbkRheU51bWJlcik7CgogICAgSURhdGUoY29uc3QgSUNu
ckRhdGUmIGNuckRhdGUpOwoKICAgICAKICAgIHN0YXRpYyBJRGF0ZSB0b2RheSgpOwoKICAgICAK
ICAgIElTdHJpbmcgYXNTdHJpbmcoWWVhckZvcm1hdCB5ZWFyRm10ID0geXkpIGNvbnN0OwogICAg
SVN0cmluZyBhc1N0cmluZyhjb25zdCBjaGFyICpmbXQpIGNvbnN0OwoKICAgIElUZXh0IGFzVGV4
dChZZWFyRm9ybWF0IHllYXJGbXQgPSB5eXl5KSBjb25zdDsKICAgIElUZXh0IGFzVGV4dChjb25z
dCBpb2M6OnVuaWNoYXJfdCAqZm10KSBjb25zdDsKCgogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYg
ICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJRGF0ZSYgYURhdGUpOwoKCgoKICAgICAK
ICAgIERheU9mV2VlayBkYXlPZldlZWsoKSBjb25zdDsKCiAgICBJU3RyaW5nIGRheU5hbWUoKSBj
b25zdDsKICAgIElUZXh0IGRheU5hbWVXKCkgY29uc3Q7CgogICAgaW50IGRheU9mTW9udGgoKSBj
b25zdDsKICAgIGludCBkYXlPZlllYXIoKSBjb25zdDsKCiAgICAgCiAgICBNb250aCBtb250aE9m
WWVhcigpIGNvbnN0OwoKICAgIElTdHJpbmcgbW9udGhOYW1lKCkgY29uc3Q7CiAgICBJVGV4dCBt
b250aE5hbWVXKCkgY29uc3Q7CgogICAgIAogICAgaW50IHllYXIoKSBjb25zdDsKCiAgICAgCiAg
ICBpb2M6OnVudW1lcmljX3QganVsaWFuRGF0ZSgpIGNvbnN0OwoKICAgIElDbnJEYXRlIGFzSUNu
ckRhdGUoKSBjb25zdDsKCiAgICAgCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURhdGUmIGFE
YXRlKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJRGF0ZSYgYURhdGUpIGNvbnN0
OwogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSURhdGUmIGFEYXRlKSBjb25zdDsKICAgIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBJRGF0ZSYgYURhdGUpIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgSURhdGUmIGFEYXRlKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBJRGF0
ZSYgYURhdGUpIGNvbnN0OwoKICAgICAKICAgIElEYXRlIG9wZXJhdG9yKyhpbnQgbnVtRGF5cykg
Y29uc3Q7CiAgICBJRGF0ZSBvcGVyYXRvci0oaW50IG51bURheXMpIGNvbnN0OwoKICAgIElEYXRl
JiBvcGVyYXRvcis9KGludCBudW1EYXlzKTsKICAgIElEYXRlJiBvcGVyYXRvci09KGludCBudW1E
YXlzKTsKCiAgICBpb2M6Om51bWVyaWNfdCBvcGVyYXRvci0oY29uc3QgSURhdGUmIGFEYXRlKSBj
b25zdDsKCiAgICAgCiAgICBzdGF0aWMgSVN0cmluZyBkYXlOYW1lKERheU9mV2VlayBhRGF5KTsK
ICAgIHN0YXRpYyBJU3RyaW5nIG1vbnRoTmFtZShNb250aCBhTW9udGgpOwogICAgc3RhdGljIElU
ZXh0IGRheU5hbWVXKERheU9mV2VlayBhRGF5KTsKICAgIHN0YXRpYyBJVGV4dCBtb250aE5hbWVX
KE1vbnRoIGFNb250aCk7CgogICAgc3RhdGljIGludCBkYXlzSW5Nb250aChNb250aCBhTW9udGgs
IGludCBhWWVhcik7CiAgICBzdGF0aWMgaW50IGRheXNJblllYXIoaW50IGFZZWFyKTsKCiAgICAg
CiAgICBzdGF0aWMgYm9vbCBpc0xlYXBZZWFyKGludCBhWWVhcik7CiAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkKE1vbnRoIGFNb250aCwgaW50IGFEYXksIGludCBhWWVhcik7CiAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkKGludCBhRGF5LCBNb250aCBhTW9udGgsIGludCBhWWVhcik7CiAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkKGludCBhWWVhciwgaW50IGFEYXkpOwoKICAgICAKICAgIHZvaWQgb3BlcmF0
b3I+Pj0oSURhdGFTdHJlYW0gJnRvV2hlcmUpOwogICAgdm9pZCBvcGVyYXRvcjw8PShJRGF0YVN0
cmVhbSAmZnJvbVdoZXJlKTsKCgoKCgoKCgpwcm90ZWN0ZWQ6CiAgICAgCiAgICBJRGF0ZSYgaW5p
dGlhbGl6ZShNb250aCBhTW9udGgsIGludCBhRGF5LCBpbnQgYVllYXIpOwoKICAgICAKICAgIHZv
aWQgd3JpdGVUb1N0cmVhbShJRGF0YVN0cmVhbSAmdG9XaGVyZSkgY29uc3Q7CiAgICB2b2lkIHJl
YWRGcm9tU3RyZWFtKElEYXRhU3RyZWFtICZmcm9tV2hlcmUpOwoKcHJpdmF0ZToKICAgICAKICAg
IElUZXh0IGFzVGV4dFVuaUNoYXIoY29uc3QgVW5pQ2hhciAqZm10KSBjb25zdDsKICAgIGlvYzo6
dW51bWVyaWNfdCBqdWxpYW47Cn07CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNw
cmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lkYXRlLmlubCIgMQoKCgogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIApleHRlcm4gIkMiCnsKCn0K
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0
ZXh0LmhwcCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCgojIDEgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXR4dHN0eWwuaHBw
IiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgogCgogCiNw
cmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9S
VF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGlu
ZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoK
IAoKIAogCgogCmNsYXNzIElUZXh0U3R5bGVTZXQ7CiAKCiAKCiAKIAogCiAKY2xhc3MgSVRleHRT
dHlsZSB7CiAgICAgICAgcHVibGljOgogICAgICAgICAgICAgICAgZW51bSBFU3R5bGVQcm9wYWdh
dGlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGtQcm9wYWdhdGVCeUNoYXJhY3RlciwKICAg
ICAgICAgICAgICAgICAgICAgICAga1Byb3BhZ2F0ZUJ5UGFyYWdyYXBoLAogICAgICAgICAgICAg
ICAgICAgICAgICBrTWF4aW11bVByb3BhZ2F0aW9uID0gMTI3CiAgICAgICAgICAgICAgICB9OwoK
ICAgICAgICAgICAgICAgIHZpcnR1YWwgfklUZXh0U3R5bGUoKTsKCiAgICAgICAgICAgICAgICB2
aXJ0dWFsIEVTdHlsZVByb3BhZ2F0aW9uIHByb3BhZ2F0ZXMoKSBjb25zdCA9IDA7CgogICAgICAg
IHByb3RlY3RlZDoKICAgICAgICAgICAgICAgIElUZXh0U3R5bGUoKTsKICAgICAgICAgICAgICAg
IElUZXh0U3R5bGUoIGNvbnN0IElUZXh0U3R5bGUmICk7CgogICAgICAgICAgICAgICAgSVRleHRT
dHlsZSYgIG9wZXJhdG9yPSggY29uc3QgSVRleHRTdHlsZSYgKTsKCiAgICAgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkVG9TZXQoSVRleHRTdHlsZVNldCYgc2V0KSBjb25zdCA9IDA7CiAgICAg
ICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVNldChJVGV4dFN0eWxlU2V0JiAgICBz
ZXQpIGNvbnN0ID0gMDsKICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRWYWx1ZUZyb21T
ZXQoY29uc3QgSVRleHRTdHlsZVNldCYgICAgc2V0KSA9IDA7CiAgICAgICAgICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNDb250YWluZWRJblNldChjb25zdCBJVGV4dFN0eWxlU2V0JiAgIHNldCkgY29u
c3QgPSAwOwogICAgICAgICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsdWVDb250YWluZWRJblNl
dChjb25zdCBJVGV4dFN0eWxlU2V0JiAgICAgIHNldCkgY29uc3QgPSAwOwoKICAgICAgICBwcml2
YXRlOgogICAgICAgICAgICAgICAgZnJpZW5kIGNsYXNzIElUZXh0U3R5bGVTZXQ7Cn07CgogCiAK
IAogCmNsYXNzIElDaGFyYWN0ZXJTdHlsZSA6IHB1YmxpYyBJVGV4dFN0eWxlIHsKICAgICAgICBw
dWJsaWM6CiAgICAgICAgICAgICAgICB2aXJ0dWFsIH5JQ2hhcmFjdGVyU3R5bGUoKTsKCiAgICAg
ICAgICAgICAgICB2aXJ0dWFsIElUZXh0U3R5bGU6OkVTdHlsZVByb3BhZ2F0aW9uCiAgICAgICAg
ICAgICAgICBwcm9wYWdhdGVzKCkgY29uc3Q7CgogICAgICAgIHByb3RlY3RlZDoKICAgICAgICAg
ICAgICAgIElDaGFyYWN0ZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgSUNoYXJhY3RlclN0eWxl
KCBjb25zdCBJQ2hhcmFjdGVyU3R5bGUmICk7CgogICAgICAgICAgICAgICAgSUNoYXJhY3RlclN0
eWxlJiBvcGVyYXRvcj0oIGNvbnN0IElDaGFyYWN0ZXJTdHlsZSYgKTsKfTsKCiAKIAogCiAKY2xh
c3MgSVBhcmFncmFwaFN0eWxlIDogcHVibGljIElUZXh0U3R5bGUgewogICAgICAgIHB1YmxpYzoK
ICAgICAgICAgICAgICAgIHZpcnR1YWwgfklQYXJhZ3JhcGhTdHlsZSgpOwoKICAgICAgICAgICAg
ICAgIHZpcnR1YWwgSVRleHRTdHlsZTo6RVN0eWxlUHJvcGFnYXRpb24KICAgICAgICAgICAgICAg
IHByb3BhZ2F0ZXMoKSBjb25zdDsKCiAgICAgICAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAg
SVBhcmFncmFwaFN0eWxlKCk7CiAgICAgICAgICAgICAgICBJUGFyYWdyYXBoU3R5bGUoIGNvbnN0
IElQYXJhZ3JhcGhTdHlsZSYgKTsKCiAgICAgICAgICAgICAgICBJUGFyYWdyYXBoU3R5bGUmIG9w
ZXJhdG9yPSggY29uc3QgSVBhcmFncmFwaFN0eWxlJiApOwp9OwoKIAoKIAoKCgoKCgoKI3ByYWdt
YSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUp
CiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaXRleHQuaHBwIiAyCgoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2NjLWxp
Yi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMzIgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXRleHQuaHBwIiAy
CgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aXN0cmVhbS5ocHAiIDEKIyA1NiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pc3RyZWFtLmhwcCIKCgoKCgojIDMzICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0ZXh0LmhwcCIgMgoKCgogCgogCiNwcmFn
bWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9M
RVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9f
SU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgog
CiAKCiAKY2xhc3MgSUJ1ZmZlcjsKY2xhc3MgSVN0cmluZzsKY2xhc3MgSVRleHRTdG9yYWdlOwpj
bGFzcyBJRGF0YVN0cmVhbTsKY2xhc3MgSVRleHRTdHlsZVNldDsKCmNsYXNzIElDaGFyYWN0ZXJS
ZWZlcmVuY2U7CmNsYXNzIElUZXh0SXRlcmF0b3I7CmNsYXNzIElDb25zdFRleHRJdGVyYXRvcjsK
CnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4gY2xhc3Mg
SVJldmVyc2VJdGVyYXRvcjsKdHlwZWRlZiBJUmV2ZXJzZUl0ZXJhdG9yPElUZXh0SXRlcmF0b3Is
IElDaGFyYWN0ZXJSZWZlcmVuY2U+CklSZXZlcnNlVGV4dEl0ZXJhdG9yOwp0eXBlZGVmIElSZXZl
cnNlSXRlcmF0b3I8SUNvbnN0VGV4dEl0ZXJhdG9yLCBpb2M6OnVuaWNoYXJfdD4KSVJldmVyc2VD
b25zdFRleHRJdGVyYXRvcjsKIAoKIAoKIAogCiAKIApjbGFzcyBJVGV4dCB7CnB1YmxpYzoKICAg
ICAKICAgICAKICAgICAKICAgIHR5cGVkZWYgc2l6ZV90IGxlbmd0aF90eXBlOyAgCiAgICB0eXBl
ZGVmIHNpemVfdCBvZmZzZXRfdHlwZTsgIAogICAgc3RhdGljIGNvbnN0IGxlbmd0aF90eXBlICAg
bnBvczsKCiAgICAgCiAgICAgCiAgICAgCiAgICBzdGF0aWMgY29uc3QgSVRleHQmIGVtcHR5VGV4
dCgpOwoKICAgICAKICAgICAKICAgICAKCiAgICBJVGV4dCgpOwogICAgSVRleHQoY29uc3QgSVRl
eHQmIHRoYXQpOwogICAgSVRleHQoY29uc3QgSVRleHQmIHRoYXQsIG9mZnNldF90eXBlIHRoYXRQ
b3MsIGxlbmd0aF90eXBlIHRoYXRMZW5ndGgpOwogICAgSVRleHQoY29uc3QgaW9jOjp1bmljaGFy
X3QgdGhhdFtdLCBsZW5ndGhfdHlwZSB0aGF0TGVuZ3RoKTsKICAgIElUZXh0KGNvbnN0IGlvYzo6
dW5pY2hhcl90KiB0aGF0KTsKICAgIElUZXh0KGxlbmd0aF90eXBlIHRoYXRDb3BpZXMsIGlvYzo6
dW5pY2hhcl90IHRoYXQpOwogICAgSVRleHQoSVRleHRJdGVyYXRvciB0aGF0RnJvbSwgSVRleHRJ
dGVyYXRvciB0aGF0VG8pOwogICAgSVRleHQoaW9jOjp1bmljaGFyX3QgdGhhdCk7ICAKICAgIElU
ZXh0KGNvbnN0IGNoYXIqIHRoYXQsIGNvbnN0IGNoYXIgKmNvZGVzZXQgPSAwKTsgIAogICAgSVRl
eHQoY29uc3QgSVN0cmluZyYgdGhhdCwgY29uc3QgY2hhciAqY29kZXNldCA9IDApOyAgCgogICAg
fklUZXh0KCk7CgogICAgIAogICAgIAogICAgIAoKICAgIElUZXh0JiBvcGVyYXRvcj0oY29uc3Qg
SVRleHQmIHRoYXQpOwogICAgSVRleHQmIG9wZXJhdG9yPShjb25zdCBpb2M6OnVuaWNoYXJfdCog
dGhhdCk7CiAgICBJVGV4dCYgb3BlcmF0b3I9KGlvYzo6dW5pY2hhcl90IHRoYXQpOwoKICAgIElU
ZXh0JiBhc3NpZ24oY29uc3QgSVRleHQmIHRoYXQpOwogICAgSVRleHQmIGFzc2lnbihjb25zdCBJ
VGV4dCYgdGhhdCwgb2Zmc2V0X3R5cGUgdGhhdFBvcywKICAgICAgICAgICAgICAgICAgbGVuZ3Ro
X3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgYXNzaWduKGNvbnN0IGlvYzo6dW5pY2hhcl90
IHRoYXRbXSwgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgYXNzaWduKGNvbnN0
IGlvYzo6dW5pY2hhcl90KiB0aGF0KTsKICAgIElUZXh0JiBhc3NpZ24obGVuZ3RoX3R5cGUgdGhh
dENvcGllcywgaW9jOjp1bmljaGFyX3QgdGhhdCk7CiAgICBJVGV4dCYgYXNzaWduKElUZXh0SXRl
cmF0b3IgdGhhdEZyb20sIElUZXh0SXRlcmF0b3IgdGhhdFRvKTsKCiAgICAgCiAgICAgCiAgICAg
CgogICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBjb25zdDsgIAogICAgIAogICAgb3BlcmF0b3Ig
Y29uc3QgaW9jOjp1bmljaGFyX3QqKCkgY29uc3Q7ICAKCiAgICAgCiAgICAgCiAgICAgCgogICAg
dm9pZCBvcGVyYXRvcj4+PShJRGF0YVN0cmVhbSYgdG9XaGVyZSkgY29uc3Q7ICAKICAgIHZvaWQg
b3BlcmF0b3I8PD0oSURhdGFTdHJlYW0mIGZyb21XaGVyZSk7ICAKCiAgICAgCiAgICAgCiAgICAg
CgogICAgbGVuZ3RoX3R5cGUgc2l6ZSgpIGNvbnN0OwogICAgbGVuZ3RoX3R5cGUgbGVuZ3RoKCkg
Y29uc3Q7CiAgICBsZW5ndGhfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0OwogICAgdm9pZCByZXNpemUo
bGVuZ3RoX3R5cGUgbnVtQ2hhcnMsIGlvYzo6dW5pY2hhcl90IGZpbGxDaGFyKTsKICAgIHZvaWQg
cmVzaXplKGxlbmd0aF90eXBlIG51bUNoYXJzKTsKICAgIGxlbmd0aF90eXBlIGNhcGFjaXR5KCkg
Y29uc3Q7CiAgICB2b2lkIHJlc2VydmUobGVuZ3RoX3R5cGUgbnVtQ2hhcnMpOwogICAgYm9vbCBl
bXB0eSgpIGNvbnN0OwoKICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBjX3N0cigpIGNvbnN0Owog
ICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIGRhdGEoKSBjb25zdDsKICAgIGNvbnN0IGlvYzo6dW5p
Y2hhcl90KiBzdG9yYWdlX2NodW5rKG9mZnNldF90eXBlIHNlYXJjaFBvcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlJiBjaHVua1BvcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlJiBjaHVua0xlbmd0aCkgY29uc3Q7ICAK
CiAgICAgCiAgICAgCiAgICAgCgogICAgSVRleHRJdGVyYXRvciBiZWdpbigpOwogICAgSUNvbnN0
VGV4dEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CiAgICBJVGV4dEl0ZXJhdG9yIGVuZCgpOwogICAg
SUNvbnN0VGV4dEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogICAgSVJldmVyc2VUZXh0SXRlcmF0b3Ig
cmJlZ2luKCk7CiAgICBJUmV2ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yIHJiZWdpbigpIGNvbnN0Owog
ICAgSVJldmVyc2VUZXh0SXRlcmF0b3IgcmVuZCgpOwogICAgSVJldmVyc2VDb25zdFRleHRJdGVy
YXRvciByZW5kKCkgY29uc3Q7CgogICAgIAogICAgIAogICAgIAoKCgoKICAgIGlvYzo6dW5pY2hh
cl90IG9wZXJhdG9yW10ob2Zmc2V0X3R5cGUgcG9zKSBjb25zdDsKICAgIElDaGFyYWN0ZXJSZWZl
cmVuY2Ugb3BlcmF0b3JbXShvZmZzZXRfdHlwZSBwb3MpOwoKICAgIGlvYzo6dW5pY2hhcl90IGF0
KG9mZnNldF90eXBlIHBvcykgY29uc3Q7CiAgICBJQ2hhcmFjdGVyUmVmZXJlbmNlIGF0KG9mZnNl
dF90eXBlIHBvcyk7CgoKCgoKICAgIHZvaWQgYXRfcHV0KG9mZnNldF90eXBlIHBvcywgaW9jOjp1
bmljaGFyX3QgbmV3Q2hhcik7ICAKCiAgICAgCiAgICAgCiAgICAgCgogICAgSVRleHQgc3Vic3Ry
KG9mZnNldF90eXBlIHBvcyA9IDAsCiAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgbGVuZ3Ro
ID0gbnBvcykgY29uc3Q7CgogICAgIAogICAgIAogICAgIAoKICAgIElUZXh0JiBvcGVyYXRvcis9
KGNvbnN0IElUZXh0JiB0aGF0KTsKICAgIElUZXh0JiBvcGVyYXRvcis9KGNvbnN0IGlvYzo6dW5p
Y2hhcl90KiB0aGF0KTsKICAgIElUZXh0JiBvcGVyYXRvcis9KGlvYzo6dW5pY2hhcl90IHRoYXQp
OwoKICAgIElUZXh0JiBhcHBlbmQoY29uc3QgSVRleHQmIHRoYXQpOwogICAgSVRleHQmIGFwcGVu
ZChjb25zdCBJVGV4dCYgdGhhdCwgb2Zmc2V0X3R5cGUgdGhhdFBvcywKICAgICAgICAgICAgICAg
ICAgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgYXBwZW5kKGNvbnN0IGlvYzo6
dW5pY2hhcl90IHRoYXRbXSwgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgYXBw
ZW5kKGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0aGF0KTsKICAgIElUZXh0JiBhcHBlbmQobGVuZ3Ro
X3R5cGUgdGhhdENvcGllcywgaW9jOjp1bmljaGFyX3QgdGhhdCk7CiAgICBJVGV4dCYgYXBwZW5k
KElUZXh0SXRlcmF0b3IgdGhhdEZyb20sIElUZXh0SXRlcmF0b3IgdGhhdFRvKTsKCiAgICAgCiAg
ICAgCiAgICAgCgogICAgSVRleHQmIGluc2VydChvZmZzZXRfdHlwZSBpbnNlcnRQb3MsCiAgICAg
ICAgICAgICAgICAgIGNvbnN0IElUZXh0JiB0aGF0KTsKICAgIElUZXh0JiBpbnNlcnQob2Zmc2V0
X3R5cGUgaW5zZXJ0UG9zLAogICAgICAgICAgICAgICAgICBjb25zdCBJVGV4dCYgdGhhdCwKICAg
ICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgdGhhdFBvcywKICAgICAgICAgICAgICAgICAgbGVu
Z3RoX3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgaW5zZXJ0KG9mZnNldF90eXBlIGluc2Vy
dFBvcywKICAgICAgICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QgdGhhdFtdLAogICAg
ICAgICAgICAgICAgICBsZW5ndGhfdHlwZSB0aGF0TGVuZ3RoKTsKICAgIElUZXh0JiBpbnNlcnQo
b2Zmc2V0X3R5cGUgaW5zZXJ0UG9zLAogICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNo
YXJfdCogdGhhdCk7CiAgICBJVGV4dCYgaW5zZXJ0KG9mZnNldF90eXBlIGluc2VydFBvcywKICAg
ICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgdGhhdENvcGllcywKICAgICAgICAgICAgICAgICAg
aW9jOjp1bmljaGFyX3QgdGhhdCk7CiAgICBJVGV4dEl0ZXJhdG9yIGluc2VydChJVGV4dEl0ZXJh
dG9yIGluc2VydFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90IHRo
YXQpOwogICAgdm9pZCBpbnNlcnQoSVRleHRJdGVyYXRvciBpbnNlcnRQb3MsCiAgICAgICAgICAg
ICAgICBsZW5ndGhfdHlwZSB0aGF0Q29waWVzLAogICAgICAgICAgICAgICAgaW9jOjp1bmljaGFy
X3QgdGhhdCk7CiAgICB2b2lkIGluc2VydChJVGV4dEl0ZXJhdG9yIGluc2VydFBvcywKICAgICAg
ICAgICAgICAgIElUZXh0SXRlcmF0b3IgdGhhdEZyb20sCiAgICAgICAgICAgICAgICBJVGV4dEl0
ZXJhdG9yIHRoYXRUbyk7CgogICAgSVRleHQmIGluc2VydF9hbmRfcHJvcGFnYXRlX3N0eWxlcyhv
ZmZzZXRfdHlwZSBpbnNlcnRQb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90IHRoYXRbXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCk7CiAgICBJVGV4dCYgaW5zZXJ0
X2FuZF9wcm9wYWdhdGVfc3R5bGVzKG9mZnNldF90eXBlIGluc2VydFBvcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgdGhhdENvcGllcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9jOjp1bmljaGFyX3QgdGhhdCk7Cgog
ICAgIAogICAgIAogICAgIAoKICAgIElUZXh0JiBlcmFzZShvZmZzZXRfdHlwZSBwb3MgPSAwLCBs
ZW5ndGhfdHlwZSBudW1DaGFycyA9IG5wb3MpOwogICAgSVRleHRJdGVyYXRvciBlcmFzZShJVGV4
dEl0ZXJhdG9yIHBvcyk7CiAgICBJVGV4dEl0ZXJhdG9yIGVyYXNlKElUZXh0SXRlcmF0b3IgZnJv
bSwgSVRleHRJdGVyYXRvciB0byk7CgogICAgIAogICAgIAogICAgIAoKICAgIElUZXh0JiByZXBs
YWNlKG9mZnNldF90eXBlIHRoaXNQb3MsIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBJVGV4dCYgdGhhdCk7CiAgICBJVGV4dCYgcmVwbGFjZShvZmZzZXRf
dHlwZSB0aGlzUG9zLCBsZW5ndGhfdHlwZSB0aGlzTGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
Y29uc3QgSVRleHQmIHRoYXQsCiAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSB0aGF0UG9z
LCBsZW5ndGhfdHlwZSB0aGF0TGVuZ3RoKTsKICAgIElUZXh0JiByZXBsYWNlKG9mZnNldF90eXBl
IHRoaXNQb3MsIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAgICAgICAgICAgICAgICAgICBjb25z
dCBpb2M6OnVuaWNoYXJfdCB0aGF0W10sIGxlbmd0aF90eXBlIHRoYXRMZW5ndGgpOwogICAgSVRl
eHQmIHJlcGxhY2Uob2Zmc2V0X3R5cGUgdGhpc1BvcywgbGVuZ3RoX3R5cGUgdGhpc0xlbmd0aCwK
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0aGF0KTsKICAgIElUZXh0
JiByZXBsYWNlKG9mZnNldF90eXBlIHRoaXNQb3MsIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSB0aGF0Q29waWVzLCBpb2M6OnVuaWNoYXJfdCB0
aGF0KTsKICAgIElUZXh0JiByZXBsYWNlKElUZXh0SXRlcmF0b3IgdGhpc0Zyb20sIElUZXh0SXRl
cmF0b3IgdGhpc1RvLAogICAgICAgICAgICAgICAgICAgY29uc3QgSVRleHQmIHRoYXQpOwogICAg
SVRleHQmIHJlcGxhY2UoSVRleHRJdGVyYXRvciB0aGlzRnJvbSwgSVRleHRJdGVyYXRvciB0aGlz
VG8sCiAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCB0aGF0W10sIGxlbmd0
aF90eXBlIHRoYXRMZW5ndGgpOwogICAgSVRleHQmIHJlcGxhY2UoSVRleHRJdGVyYXRvciB0aGlz
RnJvbSwgSVRleHRJdGVyYXRvciB0aGlzVG8sCiAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6
OnVuaWNoYXJfdCogdGhhdCk7CiAgICBJVGV4dCYgcmVwbGFjZShJVGV4dEl0ZXJhdG9yIHRoaXNG
cm9tLCBJVGV4dEl0ZXJhdG9yIHRoaXNUbywKICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBl
IHRoYXRDb3BpZXMsIGlvYzo6dW5pY2hhcl90IHRoYXQpOwogICAgSVRleHQmIHJlcGxhY2UoSVRl
eHRJdGVyYXRvciB0aGlzRnJvbSwgSVRleHRJdGVyYXRvciB0aGlzVG8sCiAgICAgICAgICAgICAg
ICAgICBJVGV4dEl0ZXJhdG9yIHRoYXRGcm9tLCBJVGV4dEl0ZXJhdG9yIHRoYXRUbyk7CgogICAg
IAogICAgIAogICAgIAoKICAgIGludCBjb21wYXJlKGNvbnN0IElUZXh0JiB0aGF0KSBjb25zdDsK
ICAgIGludCBjb21wYXJlKG9mZnNldF90eXBlIHRoaXNQb3MsIGxlbmd0aF90eXBlIHRoaXNMZW5n
dGgsCiAgICAgICAgICAgICAgICBjb25zdCBJVGV4dCYgdGhhdCkgY29uc3Q7CiAgICBpbnQgY29t
cGFyZShvZmZzZXRfdHlwZSB0aGlzUG9zLCBsZW5ndGhfdHlwZSB0aGlzTGVuZ3RoLAogICAgICAg
ICAgICAgICAgY29uc3QgSVRleHQmIHRoYXQsIG9mZnNldF90eXBlIHRoYXRQb3MsCiAgICAgICAg
ICAgICAgICBsZW5ndGhfdHlwZSB0aGF0TGVuZ3RoKSBjb25zdDsKICAgIGludCBjb21wYXJlKGNv
bnN0IGlvYzo6dW5pY2hhcl90KiB0aGF0KSBjb25zdDsKICAgIGludCBjb21wYXJlKG9mZnNldF90
eXBlIHRoaXNQb3MsIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAgICAgICAgICAgICAgICBjb25z
dCBpb2M6OnVuaWNoYXJfdCB0aGF0W10sIGxlbmd0aF90eXBlIHRoYXRMZW5ndGgpIGNvbnN0OwoK
ICAgIGxvbmcgaGFzaCgpIGNvbnN0OyAgCgogICAgIAogICAgIAogICAgIAoKICAgIGxlbmd0aF90
eXBlIGNvcHkoaW9jOjp1bmljaGFyX3QgdGhhdFtdLCBsZW5ndGhfdHlwZSBtYXhDaGFycywKICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSAwKSBjb25zdDsKCiAgICB2
b2lkIHN3YXAoSVRleHQmIHRoYXQpOwogICAgSVN0cmluZyBjb2RlU2V0KCkgY29uc3Q7CgogICAg
IAogICAgIAogICAgIAoKICAgIG9mZnNldF90eXBlIGZpbmQoY29uc3QgSVRleHQmIGtleSwKICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSAwKSBjb25zdDsKICAgIG9m
ZnNldF90eXBlIGZpbmQoY29uc3QgaW9jOjp1bmljaGFyX3Qga2V5W10sCiAgICAgICAgICAgICAg
ICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICBsZW5ndGhf
dHlwZSBrZXlMZW5ndGgpIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmluZChjb25zdCBpb2M6OnVu
aWNoYXJfdCoga2V5LAogICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFydFBvcyA9
IDApIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmluZChpb2M6OnVuaWNoYXJfdCBrZXksCiAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zID0gMCkgY29uc3Q7CgogICAgb2Zm
c2V0X3R5cGUgcmZpbmQoY29uc3QgSVRleHQmIGtleSwKICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldF90eXBlIHN0YXJ0UG9zID0gbnBvcykgY29uc3Q7CiAgICBvZmZzZXRfdHlwZSByZmluZChj
b25zdCBpb2M6OnVuaWNoYXJfdCBrZXlbXSwKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90
eXBlIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUga2V5TGVuZ3Ro
KSBjb25zdDsKICAgIG9mZnNldF90eXBlIHJmaW5kKGNvbnN0IGlvYzo6dW5pY2hhcl90KiBrZXks
CiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFydFBvcyA9IG5wb3MpIGNvbnN0
OwogICAgb2Zmc2V0X3R5cGUgcmZpbmQoaW9jOjp1bmljaGFyX3Qga2V5LAogICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSBucG9zKSBjb25zdDsKCiAgICBvZmZzZXRf
dHlwZSBmaW5kX2ZpcnN0X29mKGNvbnN0IElUZXh0JiBrZXlzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFydFBvcyA9IDApIGNvbnN0OwogICAgb2Zmc2V0X3R5
cGUgZmluZF9maXJzdF9vZihjb25zdCBpb2M6OnVuaWNoYXJfdCBrZXlzW10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBudW1LZXlzKSBjb25zdDsKICAgIG9mZnNldF90eXBl
IGZpbmRfZmlyc3Rfb2YoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zID0gMCkgY29uc3Q7CiAgICBvZmZz
ZXRfdHlwZSBmaW5kX2ZpcnN0X29mKGlvYzo6dW5pY2hhcl90IGtleSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSAwKSBjb25zdDsKCiAgICBvZmZz
ZXRfdHlwZSBmaW5kX2xhc3Rfb2YoY29uc3QgSVRleHQmIGtleXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSBucG9zKSBjb25zdDsKICAgIG9mZnNl
dF90eXBlIGZpbmRfbGFzdF9vZihjb25zdCBpb2M6OnVuaWNoYXJfdCBrZXlzW10sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgbnVtS2V5cykgY29uc3Q7CiAgICBvZmZzZXRfdHlw
ZSBmaW5kX2xhc3Rfb2YoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSBucG9zKSBjb25zdDsKICAgIG9m
ZnNldF90eXBlIGZpbmRfbGFzdF9vZihpb2M6OnVuaWNoYXJfdCBrZXksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSBucG9zKSBjb25zdDsKCiAgICBv
ZmZzZXRfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBJVGV4dCYga2V5cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zID0gMCkgY29uc3Q7
CiAgICBvZmZzZXRfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBpb2M6OnVuaWNoYXJfdCBr
ZXlzW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFy
dFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlIG51bUtl
eXMpIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgaW9jOjp1
bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRf
dHlwZSBzdGFydFBvcyA9IDApIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmluZF9maXJzdF9ub3Rf
b2YoaW9jOjp1bmljaGFyX3Qga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0X3R5cGUgc3RhcnRQb3MgPSAwKSBjb25zdDsKCiAgICBvZmZzZXRfdHlwZSBmaW5kX2xh
c3Rfbm90X29mKGNvbnN0IElUZXh0JiBrZXlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXRfdHlwZSBzdGFydFBvcyA9IG5wb3MpIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUg
ZmluZF9sYXN0X25vdF9vZihjb25zdCBpb2M6OnVuaWNoYXJfdCBrZXlzW10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBudW1LZXlzKSBjb25zdDsKICAgIG9mZnNl
dF90eXBlIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHN0YXJ0UG9zID0gbnBvcykg
Y29uc3Q7CiAgICBvZmZzZXRfdHlwZSBmaW5kX2xhc3Rfbm90X29mKGlvYzo6dW5pY2hhcl90IGtl
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3Mg
PSBucG9zKSBjb25zdDsKCiAgICAgCiAgICAgCiAgICAgCgogICAgdm9pZCBhZGRTdHlsZXMoY29u
c3QgSVRleHRTdHlsZSYgc3R5bGUsCiAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFy
dGluZyA9IDAsCiAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBjb3VudCA9IG5wb3MpOyAg
CiAgICB2b2lkIGFkZFN0eWxlcyhjb25zdCBJVGV4dFN0eWxlU2V0JiBzdHlsZXMsCiAgICAgICAg
ICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFydGluZyA9IDAsCiAgICAgICAgICAgICAgICAgICBs
ZW5ndGhfdHlwZSBjb3VudCA9IG5wb3MpOyAgCgogICAgdm9pZCByZW1vdmVTdHlsZXMoY29uc3Qg
SVRleHRTdHlsZSYgc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFy
dGluZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBjb3VudCA9IG5wb3Mp
OyAgCiAgICB2b2lkIHJlbW92ZVN0eWxlcyhjb25zdCBJVGV4dFN0eWxlU2V0JiBzdHlsZXMsCiAg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSBzdGFydGluZyA9IDAsCiAgICAgICAgICAg
ICAgICAgICAgICBsZW5ndGhfdHlwZSBjb3VudCA9IG5wb3MpOyAgCiAgICB2b2lkIHJlbW92ZVN0
eWxlcyhvZmZzZXRfdHlwZSBzdGFydGluZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGhfdHlwZSBjb3VudCA9IG5wb3MpOyAgCgogICAgIAogICAgIAogICAgIAoKICAgIGNvbnN0IElU
ZXh0U3R5bGVTZXQgKnN0eWxlc0F0KG9mZnNldF90eXBlIHBvc2l0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUmIHN0YXJ0aW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUmIGNvdW50KSBjb25zdDsgIAogICAgdm9p
ZCBzdHlsZXNBdChvZmZzZXRfdHlwZSBwb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgSVRleHRT
dHlsZVNldCYgc2V0LAogICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSYgc3RhcnRpbmcsCiAg
ICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlJiBjb3VudCwKICAgICAgICAgICAgICAgICAgSVRl
eHRTdHlsZTo6RVN0eWxlUHJvcGFnYXRpb24gcHJvcGFnYXRpb25Ub01hdGNoCiAgICAgICAgICAg
ICAgICAgID0gSVRleHRTdHlsZTo6a01heGltdW1Qcm9wYWdhdGlvbikgY29uc3Q7ICAKCiAgICBi
b29sIG1heGltdW1TdHlsZVNwYW4ob2Zmc2V0X3R5cGUgcG9zaXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSVRleHRTdHlsZSYgc3R5bGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0X3R5cGUmIHN0YXJ0aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxl
bmd0aF90eXBlJiBjb3VudCkgY29uc3Q7ICAKICAgIGJvb2wgbWF4aW11bVN0eWxlU3BhbihvZmZz
ZXRfdHlwZSBwb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJVGV4dFN0
eWxlU2V0JiBzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUmIHN0YXJ0
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlJiBjb3VudCkgY29uc3Q7
ICAKCiAgICBib29sIGNvbnRpbnVvdXNTdHlsZXNPdmVyKG9mZnNldF90eXBlIHN0YXJ0aW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSVRleHRTdHlsZVNldCYgc3R5bGVzKSBjb25zdDsgIAogICAg
Ym9vbCBjb250aW51b3VzU3R5bGVzT3ZlcihvZmZzZXRfdHlwZSBzdGFydGluZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElUZXh0U3R5bGVTZXQmIHN0eWxlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSVRleHRTdHlsZTo6RVN0eWxlUHJvcGFnYXRpb24gcHJvcGFnYXRpb25Ub01hdGNo
KSBjb25zdDsgIAoKICAgIGJvb2wgaXNTdHlsZWQoKSBjb25zdDsgIAoKICAgIGJvb2wgc2FtZVN0
eWxlZFRleHQoY29uc3QgSVRleHQmIG90aGVyKSBjb25zdDsgIAogICAgYm9vbCBzYW1lQ2hhcmFj
dGVycyhjb25zdCBJVGV4dCYgb3RoZXIpIGNvbnN0OyAgCgogICAgIAogICAgIAogICAgIAoKICAg
IHZvaWQgcHJpbnREZWJ1Z0luZm8oKSBjb25zdDsgIAoKcHJpdmF0ZToKICAgIElUZXh0KElUZXh0
U3RvcmFnZSogdHh0c3RvcmFnZSk7CiAgICB2b2lkIHdyaXRlVG9TdHJlYW0oSURhdGFTdHJlYW0m
IHRvV2hlcmUpIGNvbnN0OwogICAgdm9pZCByZWFkRnJvbVN0cmVhbShJRGF0YVN0cmVhbSYgZnJv
bVdoZXJlKTsKICAgIElUZXh0U3RvcmFnZSAqc3RvcmFnZSgpIGNvbnN0OwoKCiAgICBtdXRhYmxl
CgogICAgSVRleHRTdG9yYWdlKiBmU3RvcmFnZTsKCiAgICBtdXRhYmxlCgogICAgSUJ1ZmZlciAq
ZkxhenlTdG9yYWdlOwoKICAgIGludCBmQ29kZVNldDsKCiAgICB2b2lkIGxhenlJbml0U3RvcmFn
ZSgpIGNvbnN0OyAgCiAgICB2b2lkIGFzc2lnbkNvZGVTZXRGcm9tKGNvbnN0IElUZXh0JiB0aGF0
KTsKCiAgICBpbnQgY29tcGFyZVVuaUNoYXIoY29uc3QgVW5pQ2hhciogdGhhdCkgY29uc3Q7CiAg
ICBpbnQgY29tcGFyZVVuaUNoYXIob2Zmc2V0X3R5cGUgdGhpc1BvcywgbGVuZ3RoX3R5cGUgdGhp
c0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyIGF0aGF0W10sIGxl
bmd0aF90eXBlIHRoYXRMZW5ndGgpIGNvbnN0OwogICAgbGVuZ3RoX3R5cGUgY29weVVuaUNoYXIo
VW5pQ2hhciB0aGF0W10sIGxlbmd0aF90eXBlIG1heENoYXJzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmlu
ZFVuaUNoYXIoVW5pQ2hhciBrZXksIG9mZnNldF90eXBlIHN0YXJ0UG9zKSBjb25zdDsKICAgIG9m
ZnNldF90eXBlIHJmaW5kVW5pQ2hhcihVbmlDaGFyIGtleSwgb2Zmc2V0X3R5cGUgc3RhcnRQb3Mp
IGNvbnN0OwogICAgb2Zmc2V0X3R5cGUgZmluZF9maXJzdF9ub3Rfb2ZVbmlDaGFyKFVuaUNoYXIg
a2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBl
IHN0YXJ0UG9zKSBjb25zdDsKICAgIG9mZnNldF90eXBlIGZpbmRfbGFzdF9ub3Rfb2ZVbmlDaGFy
KFVuaUNoYXIga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0OwoKICAgIGZyaWVuZCBjbGFzcyBJVGV4dFN0b3JhZ2U7
CiAgICBmcmllbmQgY2xhc3MgSVN0eWxlU3RvcmFnZTsKICAgIGZyaWVuZCBjbGFzcyBJRmFzdFRl
eHRJdGVyYXRvcjsKICAgIGZyaWVuZCBjbGFzcyBJU3RyaW5nOwp9OwoKIAogCiAKCiAKIAogCgpp
bmxpbmUgSVRleHQgb3BlcmF0b3IrKGNvbnN0IElUZXh0JiBhLCBjb25zdCBJVGV4dCYgYik7Cmlu
bGluZSBJVGV4dCBvcGVyYXRvcisoY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGNvbnN0IElUZXh0
JiBiKTsKaW5saW5lIElUZXh0IG9wZXJhdG9yKyhpb2M6OnVuaWNoYXJfdCBhLCBjb25zdCBJVGV4
dCYgYik7CmlubGluZSBJVGV4dCBvcGVyYXRvcisoY29uc3QgSVRleHQmIGEsIGNvbnN0IGlvYzo6
dW5pY2hhcl90KiBiKTsKaW5saW5lIElUZXh0IG9wZXJhdG9yKyhjb25zdCBJVGV4dCYgYSwgaW9j
Ojp1bmljaGFyX3QgYik7CgogCiAKIAoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJVGV4
dCYgYSwgY29uc3QgSVRleHQmIGIpOwppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGlvYzo6
dW5pY2hhcl90KiBhLCBjb25zdCBJVGV4dCYgYik7CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgSVRleHQmIGEsIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBiKTsKCmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSVRleHQmIGEsIGNvbnN0IElUZXh0JiBiKTsKaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwgY29uc3QgSVRleHQmIGIpOwppbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IElUZXh0JiBhLCBjb25zdCBpb2M6OnVuaWNoYXJfdCogYik7Cgpp
bmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgSVRleHQmIGEsIGNvbnN0IElUZXh0JiBiKTsKaW5s
aW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGlvYzo6dW5pY2hhcl90KiBhLCBjb25zdCBJVGV4dCYg
Yik7CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBJVGV4dCYgYSwgY29uc3QgaW9jOjp1bmlj
aGFyX3QqIGIpOwoKaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IElUZXh0JiBhLCBjb25zdCBJ
VGV4dCYgYik7CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwg
Y29uc3QgSVRleHQmIGIpOwppbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgSVRleHQmIGEsIGNv
bnN0IGlvYzo6dW5pY2hhcl90KiBiKTsKCmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgSVRl
eHQmIGEsIGNvbnN0IElUZXh0JiBiKTsKaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBpb2M6
OnVuaWNoYXJfdCogYSwgY29uc3QgSVRleHQmIGIpOwppbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IElUZXh0JiBhLCBjb25zdCBpb2M6OnVuaWNoYXJfdCogYik7CgppbmxpbmUgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IElUZXh0JiBhLCBjb25zdCBJVGV4dCYgYik7CmlubGluZSBib29sIG9wZXJh
dG9yPj0oY29uc3QgaW9jOjp1bmljaGFyX3QqIGEsIGNvbnN0IElUZXh0JiBiKTsKaW5saW5lIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBJVGV4dCYgYSwgY29uc3QgaW9jOjp1bmljaGFyX3QqIGIpOwoK
IAogCiAKCnZvaWQgc3dhcChJVGV4dCYgYSwgSVRleHQmIGIpOwoKaW5saW5lIHN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgSVRleHQmIHRleHQpOwpp
bmxpbmUgc3RkOjppc3RyZWFtJiBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYgc3RyZWFtLCBJVGV4
dCYgdGV4dCk7CmlubGluZSBzdGQ6OmlzdHJlYW0mIGdldGxpbmUoc3RkOjppc3RyZWFtJiBzdHJl
YW0sIElUZXh0JiB0ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVsaW1p
dGVyID0gJ1xuJyk7CgoKCgoKCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdt
YSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCiAKIAogCgojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXRleHQuaW5sIiAxCgoKCiAKIAog
CgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIAogCiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdHh0c3Rvci5ocHAiIDEKCgoKIAogCiAK
CgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3luY2hyLmhwcCIgMQoKCgogCiAKIAoKCgoKCgoK
CgoKCiAKIAogCiAKIAogCiAKIAoKIAogCgoKCgoKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQoj
cHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBp
bmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJ
TkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoKIAogCgogCiAKCiAKCnRl
bXBsYXRlIDxjbGFzcyBBVHlwZT4gY2xhc3MgSVN5bmNocm9uaXplZAp7CnB1YmxpYzoKIAogCiAK
CiAgICAgICAgSVN5bmNocm9uaXplZCgpOwogICAgICAgIH5JU3luY2hyb25pemVkKCk7CiAgICAg
ICAgQVR5cGUgICBnZXQoKSBjb25zdDsKICAgICAgICBvcGVyYXRvciBBVHlwZSgpIGNvbnN0OwoJ
CiAgICAgICAgdm9sYXRpbGUgQVR5cGUgZkF0b207CgkKICAgICAgICAgCiAgICAgICAgYm9vbCBz
ZXRTaW5nbGUoQVR5cGUgbmV3VmFsdWUpOwogICAgICAgIAogICAgICAgIHB0aHJlYWRfbXV0ZXhf
dCBmTXV0ZXg7CiAgICAgICAgCiMgMTEwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lzeW5jaHIuaHBwIgoKfTsKCiAKIAogCnRlbXBsYXRlPGNsYXNz
IEFUeXBlPiBBVHlwZSAqc3luY2hyb25pemVkSW5pdChJU3luY2hyb25pemVkPEFUeXBlICo+ICZ2
YXIsIEFUeXBlICp2YWx1ZSk7CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFn
bWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzeW5jaHIuaW5sIiAxCgoKCiAKIAogCgoKCgoK
CgoKCgoKIAogCiAKIAogCiAKIAogCiAKCiAKCgp0ZW1wbGF0ZTxjbGFzcyBBVHlwZT4gaW5saW5l
CklTeW5jaHJvbml6ZWQ8QVR5cGU+OjpJU3luY2hyb25pemVkKCkKewogICAgZkF0b20gPSAwOwog
ICAgcHRocmVhZF9tdXRleF9pbml0KCAmZk11dGV4LCAwICk7Cn0KCnRlbXBsYXRlPGNsYXNzIEFU
eXBlPiBpbmxpbmUKSVN5bmNocm9uaXplZDxBVHlwZT46On5JU3luY2hyb25pemVkKCkKewogICAg
cHRocmVhZF9tdXRleF9kZXN0cm95KCAmZk11dGV4ICk7Cn0KCnRlbXBsYXRlPGNsYXNzIEFUeXBl
PiBpbmxpbmUKQVR5cGUgSVN5bmNocm9uaXplZDxBVHlwZT46OmdldCgpIGNvbnN0CnsKICAgcmV0
dXJuKCAoQVR5cGUpZkF0b20gKTsKfQoKdGVtcGxhdGU8Y2xhc3MgQVR5cGU+IGlubGluZQpJU3lu
Y2hyb25pemVkPEFUeXBlPjo6b3BlcmF0b3IgQVR5cGUoKSBjb25zdAp7CiAgICByZXR1cm4gZ2V0
KCk7Cn0KCnRlbXBsYXRlPGNsYXNzIEFUeXBlPiBpbmxpbmUKYm9vbCBJU3luY2hyb25pemVkPEFU
eXBlPjo6c2V0U2luZ2xlKEFUeXBlIG5ld1ZhbHVlKQp7CiAgYm9vbCByYyA9IHRydWU7CiAgCiAg
aWYgKCBmQXRvbSA9PSAwICkgewogICAgcHRocmVhZF9tdXRleF9sb2NrKCAmZk11dGV4ICk7CiAg
ICBpZiAoIGZBdG9tID09IDAgKSB7CiAgICAgIGZBdG9tID0gbmV3VmFsdWU7CiAgICAgIHJjID0g
ZmFsc2U7CiAgICB9CiAgICBwdGhyZWFkX211dGV4X3VubG9jayggJmZNdXRleCApOwogIH0KICAK
ICByZXR1cm4oIHJjICk7Cn0KCnRlbXBsYXRlPGNsYXNzIEFUeXBlPiBpbmxpbmUgQVR5cGUgKgpz
eW5jaHJvbml6ZWRJbml0KElTeW5jaHJvbml6ZWQ8QVR5cGUgKj4gJnZhciwgQVR5cGUgKnZhbHVl
KQp7CiAgaWYgKCB2YXIuc2V0U2luZ2xlKHZhbHVlKSApIHsKICAgIGRlbGV0ZSB2YWx1ZTsKICB9
CiAgCiAgcmV0dXJuKCB2YXIuZ2V0KCkgKTsKfQoKIyAyMTYgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN5bmNoci5pbmwiCgoKIAoKIyAxMzkgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN5bmNoci5o
cHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdt
YSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMjggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaXR4dHN0b3IuaHBwIiAyCgoKIyAxICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0eHRpdGVyLmhwcCIgMQoKCgog
CiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKIyAzNSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pdHh0aXRlci5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFn
bWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8o
cmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19T
Q0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSVRleHQ7
CiAKCiAKCiAKIAogCiAKCmNsYXNzIElDaGFyYWN0ZXJSZWZlcmVuY2UgewpwdWJsaWM6CiAgICB+
SUNoYXJhY3RlclJlZmVyZW5jZSgpOwoKICAgIElDaGFyYWN0ZXJSZWZlcmVuY2UmIG9wZXJhdG9y
PShpb2M6OnVuaWNoYXJfdCBuZXdDaGFyKTsKICAgIElDaGFyYWN0ZXJSZWZlcmVuY2UmIG9wZXJh
dG9yPShjb25zdCBJQ2hhcmFjdGVyUmVmZXJlbmNlJiB0aGF0KTsKCiAgICBvcGVyYXRvciBpb2M6
OnVuaWNoYXJfdCgpIGNvbnN0OwoKICAgIElUZXh0KiB0ZXh0KCkgY29uc3Q7ICAKICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdDsgIAoKICAgIElDaGFyYWN0ZXJSZWZlcmVuY2UoY29uc3QgSUNoYXJh
Y3RlclJlZmVyZW5jZSYgdGhhdCk7Cgpwcml2YXRlOgogICAgSUNoYXJhY3RlclJlZmVyZW5jZShp
b2M6OnVuaWNoYXJfdCogdGhlQ2hhcik7CgogICAgSUNoYXJhY3RlclJlZmVyZW5jZShJVGV4dCog
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCk7CgogICAgSUNoYXJh
Y3RlclJlZmVyZW5jZSgpOwoKICAgIGlvYzo6dW5pY2hhcl90IGRlcmVmZXJlbmNlKCkgY29uc3Q7
CgogICAgdW5pb24gewogICAgICAgIGlvYzo6dW5pY2hhcl90KiBmQ2hhcjsKICAgICAgICBJVGV4
dCogZlRleHQ7CiAgICB9OwogICAgc2l6ZV90IGZPZmZzZXQ7CgogICAgZnJpZW5kIGNsYXNzIElU
ZXh0OwogICAgZnJpZW5kIGNsYXNzIElUZXh0SXRlcmF0b3I7Cn07CgogCiAKIAogCgpjbGFzcyBJ
VGV4dEl0ZXJhdG9yIHsKcHVibGljOgogICAgSVRleHRJdGVyYXRvcigpOwoKCgoKICAgIElUZXh0
SXRlcmF0b3IoY29uc3QgSVRleHRJdGVyYXRvciYgdGhhdCk7CgoKCgogICAgfklUZXh0SXRlcmF0
b3IoKTsKCiAgICBJVGV4dEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgSVRleHRJdGVyYXRvciYg
dGhhdCk7CgogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElUZXh0SXRlcmF0b3ImIHRoYXQpIGNv
bnN0OwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0
OwoKICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IElUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0Owog
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSVRleHRJdGVyYXRvciYgdGhhdCkgY29uc3Q7CiAgICBi
b29sIG9wZXJhdG9yPj0oY29uc3QgSVRleHRJdGVyYXRvciYgdGhhdCkgY29uc3Q7CiAgICBib29s
IG9wZXJhdG9yPD0oY29uc3QgSVRleHRJdGVyYXRvciYgdGhhdCkgY29uc3Q7CgogICAgSUNoYXJh
Y3RlclJlZmVyZW5jZSBvcGVyYXRvcltdKGlvYzo6bnVtZXJpY190IG9mZnNldCkgY29uc3Q7CiAg
ICBJQ2hhcmFjdGVyUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0OwoKICAgIElUZXh0SXRlcmF0
b3ImIG9wZXJhdG9yKysoKTsKICAgIElUZXh0SXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpOwogICAg
SVRleHRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgSVRleHRJdGVyYXRvciBvcGVyYXRvci0t
KGludCk7CgogICAgSVRleHRJdGVyYXRvciYgb3BlcmF0b3IrPShpb2M6Om51bWVyaWNfdCBkaXN0
YW5jZSk7CiAgICBJVGV4dEl0ZXJhdG9yJiBvcGVyYXRvci09KGlvYzo6bnVtZXJpY190IGRpc3Rh
bmNlKTsKCiAgICBJVGV4dEl0ZXJhdG9yIG9wZXJhdG9yLShpb2M6Om51bWVyaWNfdCBkaXN0YW5j
ZSkgY29uc3Q7CiAgICBpb2M6Om51bWVyaWNfdCBvcGVyYXRvci0oY29uc3QgSVRleHRJdGVyYXRv
ciYgdGhhdCkgY29uc3Q7CgogICAgSVRleHQqIHRleHQoKSBjb25zdDsKCgoKCiAgICBzaXplX3Qg
b2Zmc2V0KCkgY29uc3Q7Cgpwcml2YXRlOgogICAgSVRleHRJdGVyYXRvcihJVGV4dCogdGhlVGV4
dCwKICAgICAgICAgICAgICAgICAgc2l6ZV90IHRoZU9mZnNldCk7CiAgICB2b2lkIHRocm93RXhj
ZXB0aW9uKCkgY29uc3Q7CgogICAgSVRleHQqIGZUZXh0OwogICAgc2l6ZV90IGZPZmZzZXQ7Cgog
ICAgZnJpZW5kIGNsYXNzIElUZXh0OwogICAgZnJpZW5kIGNsYXNzIElDb25zdFRleHRJdGVyYXRv
cjsKfTsKCiAKIAogCgppbmxpbmUgSVRleHRJdGVyYXRvciBvcGVyYXRvcisoY29uc3QgSVRleHRJ
dGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb2M6Om51
bWVyaWNfdCBvZmZzZXQpOwppbmxpbmUgSVRleHRJdGVyYXRvciBvcGVyYXRvcisoaW9jOjpudW1l
cmljX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVRleHRJ
dGVyYXRvciYgaXRlcmF0b3IpOwoKaW5saW5lIGlvYzo6dW5pY2hhcl90KiB2YWx1ZV90eXBlKGNv
bnN0IElUZXh0SXRlcmF0b3ImKTsKaW5saW5lIGlvYzo6bnVtZXJpY190IGRpc3RhbmNlX3R5cGUo
Y29uc3QgSVRleHRJdGVyYXRvciYpOwoKIAoKIAogCiAKIAoKY2xhc3MgSUNvbnN0VGV4dEl0ZXJh
dG9yIHsKcHVibGljOgogICAgSUNvbnN0VGV4dEl0ZXJhdG9yKCk7CiAgICBJQ29uc3RUZXh0SXRl
cmF0b3IoY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJiB0aGF0KTsKICAgIH5JQ29uc3RUZXh0SXRl
cmF0b3IoKTsKCiAgICBJQ29uc3RUZXh0SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBJQ29uc3RU
ZXh0SXRlcmF0b3ImIHRoYXQpOwoKICAgIG9wZXJhdG9yIElUZXh0SXRlcmF0b3IoKSBjb25zdDsK
CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25z
dDsKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJQ29uc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNv
bnN0OwoKICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhhdCkg
Y29uc3Q7CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBJQ29uc3RUZXh0SXRlcmF0b3ImIHRoYXQp
IGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhh
dCkgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJiB0
aGF0KSBjb25zdDsKCiAgICBpb2M6OnVuaWNoYXJfdCBvcGVyYXRvcltdKGlvYzo6bnVtZXJpY190
IG9mZnNldCkgY29uc3Q7CiAgICBpb2M6OnVuaWNoYXJfdCBvcGVyYXRvciooKSBjb25zdDsKCiAg
ICBJQ29uc3RUZXh0SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKICAgIElDb25zdFRleHRJdGVyYXRv
ciBvcGVyYXRvcisrKGludCk7CiAgICBJQ29uc3RUZXh0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsK
ICAgIElDb25zdFRleHRJdGVyYXRvciBvcGVyYXRvci0tKGludCk7CgogICAgSUNvbnN0VGV4dEl0
ZXJhdG9yJiBvcGVyYXRvcis9KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKTsKICAgIElDb25zdFRl
eHRJdGVyYXRvciYgb3BlcmF0b3ItPShpb2M6Om51bWVyaWNfdCBkaXN0YW5jZSk7CgogICAgSUNv
bnN0VGV4dEl0ZXJhdG9yIG9wZXJhdG9yLShpb2M6Om51bWVyaWNfdCBkaXN0YW5jZSkgY29uc3Q7
CiAgICBpb2M6Om51bWVyaWNfdCBvcGVyYXRvci0oY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJiB0
aGF0KSBjb25zdDsKCiAgICBjb25zdCBJVGV4dCogdGV4dCgpIGNvbnN0OwogICAgc2l6ZV90IG9m
ZnNldCgpIGNvbnN0OwoKcHJpdmF0ZToKICAgIElDb25zdFRleHRJdGVyYXRvcihjb25zdCBJVGV4
dCogdGhlVGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdGhlT2Zmc2V0KTsKICAg
IHZvaWQgdGhyb3dFeGNlcHRpb24oKSBjb25zdDsKCiAgICBjb25zdCBJVGV4dCogZlRleHQ7CiAg
ICBzaXplX3QgZk9mZnNldDsKCiAgICBmcmllbmQgY2xhc3MgSVRleHQ7Cn07CgogCiAKIAoKaW5s
aW5lIElDb25zdFRleHRJdGVyYXRvciBvcGVyYXRvcisoY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9y
JiBpdGVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9jOjpudW1l
cmljX3Qgb2Zmc2V0KTsKaW5saW5lIElDb25zdFRleHRJdGVyYXRvciBvcGVyYXRvcisoaW9jOjpu
dW1lcmljX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJQ29uc3RUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKTsKCmlubGluZSBpb2M6OnVuaWNoYXJfdCog
dmFsdWVfdHlwZShjb25zdCBJQ29uc3RUZXh0SXRlcmF0b3ImKTsKaW5saW5lIGlvYzo6bnVtZXJp
Y190IGRpc3RhbmNlX3R5cGUoY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJik7CgogCgogCiAKIAog
CiAKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0
dXJuVHlwZT4KY2xhc3MgSVJldmVyc2VJdGVyYXRvciB7CnB1YmxpYzoKICAgIElSZXZlcnNlSXRl
cmF0b3IoKTsKICAgIElSZXZlcnNlSXRlcmF0b3IoY29uc3QgQVJlYWxJdGVyYXRvciYgdGhlUmVh
bEl0ZXJhdG9yKTsKICAgIElSZXZlcnNlSXRlcmF0b3IoY29uc3QgSVJldmVyc2VJdGVyYXRvcjxB
UmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mIHRoYXQpOwogICAgfklSZXZlcnNlSXRlcmF0b3Io
KTsKCiAgICBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYKICAg
IG9wZXJhdG9yPShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5U
eXBlPiYgdGhhdCk7CgogICAgb3BlcmF0b3IgQVJlYWxJdGVyYXRvcigpIGNvbnN0OwoKICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1
cm5UeXBlPiYgdGhhdCkgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSVJldmVyc2VJ
dGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mIHRoYXQpIGNvbnN0OwoKICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVy
blR5cGU+JiB0aGF0KSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IElSZXZlcnNlSXRl
cmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+JiB0aGF0KSBjb25zdDsKICAgIGJvb2wg
b3BlcmF0b3I+PShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5U
eXBlPiYgdGhhdCkgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgSVJldmVyc2VJdGVy
YXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mIHRoYXQpIGNvbnN0OwoKICAgIEFSZXR1
cm5UeXBlIG9wZXJhdG9yW10oaW9jOjpudW1lcmljX3Qgb2Zmc2V0KSBjb25zdDsKICAgIEFSZXR1
cm5UeXBlIG9wZXJhdG9yKigpIGNvbnN0OwoKICAgIElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVy
YXRvciwgQVJldHVyblR5cGU+JgogICAgb3BlcmF0b3IrKygpOwogICAgSVJldmVyc2VJdGVyYXRv
cjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4KICAgIG9wZXJhdG9yKysoaW50KTsKICAgIElS
ZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+JgogICAgb3BlcmF0b3It
LSgpOwogICAgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4KICAg
IG9wZXJhdG9yLS0oaW50KTsKCiAgICBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFS
ZXR1cm5UeXBlPiYKICAgIG9wZXJhdG9yKz0oaW9jOjpudW1lcmljX3QgZGlzdGFuY2UpOwogICAg
SVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mCiAgICBvcGVyYXRv
ci09KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKTsKCiAgICBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFs
SXRlcmF0b3IsIEFSZXR1cm5UeXBlPgogICAgb3BlcmF0b3ItKGlvYzo6bnVtZXJpY190IGRpc3Rh
bmNlKSBjb25zdDsKICAgIGlvYzo6bnVtZXJpY190IG9wZXJhdG9yLShjb25zdCBJUmV2ZXJzZUl0
ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYgdGhhdCkgY29uc3Q7Cgpwcml2YXRl
OgogICAgQVJlYWxJdGVyYXRvciBmUmVhbEl0ZXJhdG9yOwp9OwoKIAogCiAKCnRlbXBsYXRlIDxj
bGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5lCklSZXZlcnNlSXRl
cmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+Cm9wZXJhdG9yKyhjb25zdCBJUmV2ZXJz
ZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYgaXRlcmF0b3IsCiAgICAgICAg
ICBpb2M6Om51bWVyaWNfdCBvZmZzZXQpOwoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0b3Is
IGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUKSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9y
LCBBUmV0dXJuVHlwZT4Kb3BlcmF0b3IrKGlvYzo6bnVtZXJpY190IG9mZnNldCwKICAgICAgICAg
IGNvbnN0IElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+JiBpdGVy
YXRvcik7Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+
CmlubGluZQppb2M6OnVuaWNoYXJfdCogdmFsdWVfdHlwZShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9y
PEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYpOwoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRl
cmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUKaW9jOjpudW1lcmljX3QgZGlzdGFuY2Vf
dHlwZShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYp
OwoKIAogCgogCiAKIAoKdHlwZWRlZiBJUmV2ZXJzZUl0ZXJhdG9yPElUZXh0SXRlcmF0b3IsIElD
aGFyYWN0ZXJSZWZlcmVuY2U+IElSZXZlcnNlVGV4dEl0ZXJhdG9yOwp0eXBlZGVmIElSZXZlcnNl
SXRlcmF0b3I8SUNvbnN0VGV4dEl0ZXJhdG9yLCBpb2M6OnVuaWNoYXJfdD4gSVJldmVyc2VDb25z
dFRleHRJdGVyYXRvcjsKCiAKIAogCiAKIAogCiAKIAogCgppbmxpbmUgSVJldmVyc2VUZXh0SXRl
cmF0b3Igb3BlcmF0b3IrKGNvbnN0IElSZXZlcnNlVGV4dEl0ZXJhdG9yJiBpdGVyYXRvciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb2M6Om51bWVyaWNfdCBvZmZzZXQp
OwoKaW5saW5lIElSZXZlcnNlVGV4dEl0ZXJhdG9yIG9wZXJhdG9yKyhpb2M6Om51bWVyaWNfdCBv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVJldmVy
c2VUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKTsKCmlubGluZSBJUmV2ZXJzZUNvbnN0VGV4dEl0ZXJh
dG9yIG9wZXJhdG9yKyhjb25zdCBJUmV2ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yJiBpdGVyYXRvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvYzo6bnVtZXJpY190
IG9mZnNldCk7CgppbmxpbmUgSVJldmVyc2VDb25zdFRleHRJdGVyYXRvciBvcGVyYXRvcisoaW9j
OjpudW1lcmljX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSVJldmVyc2VDb25zdFRleHRJdGVyYXRvciYgaXRlcmF0b3IpOwoKIAogCiAK
IApjbGFzcyBJRmFzdFRleHRJdGVyYXRvciB7CnB1YmxpYzoKICAgIElGYXN0VGV4dEl0ZXJhdG9y
KCk7CiAgICBJRmFzdFRleHRJdGVyYXRvcihjb25zdCBJRmFzdFRleHRJdGVyYXRvciYgdGhhdCk7
CiAgICBJRmFzdFRleHRJdGVyYXRvcihjb25zdCBJVGV4dEl0ZXJhdG9yJiB0aGF0LAogICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB3aWxsV3JpdGUgPSB0cnVlKTsKICAgIElGYXN0VGV4dEl0ZXJh
dG9yKGNvbnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhhdCwKICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgd2lsbFdyaXRlID0gdHJ1ZSk7CiAgICB+SUZhc3RUZXh0SXRlcmF0b3IoKTsKCiAgICBJ
RmFzdFRleHRJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0
KTsKCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNv
bnN0OwogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBj
b25zdDsKCiAgICBib29sIG9wZXJhdG9yPihjb25zdCBJRmFzdFRleHRJdGVyYXRvciYgdGhhdCkg
Y29uc3Q7CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBJRmFzdFRleHRJdGVyYXRvciYgdGhhdCkg
Y29uc3Q7CiAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImIHRoYXQp
IGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0
KSBjb25zdDsKCiAgICBpb2M6OnVuaWNoYXJfdCYgb3BlcmF0b3JbXShpb2M6Om51bWVyaWNfdCBv
ZmZzZXQpIGNvbnN0OwogICAgaW9jOjp1bmljaGFyX3QmIG9wZXJhdG9yKigpIGNvbnN0OwoKICAg
IElGYXN0VGV4dEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAgICBJRmFzdFRleHRJdGVyYXRvciBv
cGVyYXRvcisrKGludCk7CiAgICBJRmFzdFRleHRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAg
SUZhc3RUZXh0SXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpOwoKICAgIElGYXN0VGV4dEl0ZXJhdG9y
JiBvcGVyYXRvcis9KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKTsKICAgIElGYXN0VGV4dEl0ZXJh
dG9yJiBvcGVyYXRvci09KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKTsKCiAgICBJRmFzdFRleHRJ
dGVyYXRvciBvcGVyYXRvci0oaW9jOjpudW1lcmljX3QgZGlzdGFuY2UpIGNvbnN0OwogICAgaW9j
OjpudW1lcmljX3Qgb3BlcmF0b3ItKGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25z
dDsKCnByaXZhdGU6CiAgICBJRmFzdFRleHRJdGVyYXRvcihpb2M6OnVuaWNoYXJfdCogdGhlQ2hh
ciwKICAgICAgICAgICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90KiBnYXBTdGFydCwKICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBnYXBMZW5ndGgpOwoKICAgIGlvYzo6dW5pY2hhcl90KiBm
Q2hhcjsKICAgIGlvYzo6dW5pY2hhcl90KiBmR2FwU3RhcnQ7CiAgICBzaXplX3QgZkdhcExlbmd0
aDsKCiAgICBmcmllbmQgY2xhc3MgSVRleHRTdG9yYWdlOwp9OwoKIAogCiAKCmlubGluZSBJRmFz
dFRleHRJdGVyYXRvciBvcGVyYXRvcisoY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImIGl0ZXJhdG9y
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvYzo6bnVtZXJpY190IG9mZnNl
dCk7CmlubGluZSBJRmFzdFRleHRJdGVyYXRvciBvcGVyYXRvcisoaW9jOjpudW1lcmljX3Qgb2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElGYXN0VGV4dEl0
ZXJhdG9yJiBpdGVyYXRvcik7CgppbmxpbmUgaW9jOjp1bmljaGFyX3QqIHZhbHVlX3R5cGUoY29u
c3QgSUZhc3RUZXh0SXRlcmF0b3ImKTsKaW5saW5lIGlvYzo6bnVtZXJpY190IGRpc3RhbmNlX3R5
cGUoY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImKTsKCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShw
b3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCgojIDEgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXR4dGl0ZXIuaW5sIiAx
CgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKCiAKCgoKIAoKIAogCiAKCmlu
bGluZQpJQ2hhcmFjdGVyUmVmZXJlbmNlOjpJQ2hhcmFjdGVyUmVmZXJlbmNlKCkKICAgICAgICA6
IGZUZXh0KChJVGV4dCopKCZJVGV4dDo6ZW1wdHlUZXh0KCkpKSwKICAgICAgICAgIGZPZmZzZXQo
MCkKewogICAgIAp9CgppbmxpbmUKSUNoYXJhY3RlclJlZmVyZW5jZTo6SUNoYXJhY3RlclJlZmVy
ZW5jZShjb25zdCBJQ2hhcmFjdGVyUmVmZXJlbmNlJiB0aGF0KQogICAgICAgIDogZlRleHQodGhh
dC5mVGV4dCksCiAgICAgICAgICBmT2Zmc2V0KHRoYXQuZk9mZnNldCkKewp9CgppbmxpbmUKSUNo
YXJhY3RlclJlZmVyZW5jZTo6SUNoYXJhY3RlclJlZmVyZW5jZShpb2M6OnVuaWNoYXJfdCogdGhl
Q2hhcikKICAgICAgICA6IGZDaGFyKHRoZUNoYXIpLAogICAgICAgICAgZk9mZnNldCgoc2l6ZV90
KSgtMSkpCnsKfQoKaW5saW5lCklDaGFyYWN0ZXJSZWZlcmVuY2U6OklDaGFyYWN0ZXJSZWZlcmVu
Y2UoSVRleHQqIHRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICBvZmZzZXQpCiAgICAgICAgOiBmVGV4dCh0ZXh0KSwKICAgICAgICAgIGZPZmZzZXQo
b2Zmc2V0KQp7Cn0KCmlubGluZQpJQ2hhcmFjdGVyUmVmZXJlbmNlOjp+SUNoYXJhY3RlclJlZmVy
ZW5jZSgpCnsKfQoKaW5saW5lIGlvYzo6dW5pY2hhcl90CklDaGFyYWN0ZXJSZWZlcmVuY2U6OmRl
cmVmZXJlbmNlKCkgY29uc3QKewogICAgaWYgKGZPZmZzZXQgPT0gKHNpemVfdCkoLTEpKQogICAg
ICAgIHJldHVybiAqZkNoYXI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICgqKChjb25zdCBJVGV4
dCopZlRleHQpKVtmT2Zmc2V0XTsKICAgICAKICAgICAKICAgICAKfQoKaW5saW5lIElDaGFyYWN0
ZXJSZWZlcmVuY2UmCklDaGFyYWN0ZXJSZWZlcmVuY2U6Om9wZXJhdG9yPShpb2M6OnVuaWNoYXJf
dCBuZXdDaGFyKQp7CiAgICBpZiAoZk9mZnNldCA9PSAoc2l6ZV90KSgtMSkpCiAgICAgICAgKmZD
aGFyID0gbmV3Q2hhcjsKICAgIGVsc2UKICAgICAgICBmVGV4dC0+YXRfcHV0KGZPZmZzZXQsIG5l
d0NoYXIpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSUNoYXJhY3RlclJlZmVyZW5jZSYK
SUNoYXJhY3RlclJlZmVyZW5jZTo6b3BlcmF0b3I9KGNvbnN0IElDaGFyYWN0ZXJSZWZlcmVuY2Um
IHRoYXQpCnsKICAgIHJldHVybiBvcGVyYXRvcj0odGhhdC5kZXJlZmVyZW5jZSgpKTsKfQoKaW5s
aW5lCklDaGFyYWN0ZXJSZWZlcmVuY2U6Om9wZXJhdG9yIGlvYzo6dW5pY2hhcl90KCkgY29uc3QK
ewogICAgcmV0dXJuIGRlcmVmZXJlbmNlKCk7Cn0KCmlubGluZSBJVGV4dCoKSUNoYXJhY3RlclJl
ZmVyZW5jZTo6dGV4dCgpIGNvbnN0CnsKICAgIHJldHVybiBmVGV4dDsKfQoKaW5saW5lIHNpemVf
dApJQ2hhcmFjdGVyUmVmZXJlbmNlOjpvZmZzZXQoKSBjb25zdAp7CiAgICByZXR1cm4gZk9mZnNl
dDsKfQoKIAogCiAKCgoKI3ByYWdtYSBpbmZvKG5vY252KQppbmxpbmUKSVRleHRJdGVyYXRvcjo6
SVRleHRJdGVyYXRvcigpCiAgICAgICAgOiBmVGV4dCgoSVRleHQqKSgmSVRleHQ6OmVtcHR5VGV4
dCgpKSksICAKICAgIGZPZmZzZXQoMCkKewp9CiNwcmFnbWEgaW5mbyhyZXN0b3JlKQoKaW5saW5l
CklUZXh0SXRlcmF0b3I6OklUZXh0SXRlcmF0b3IoSVRleHQqICB0aGVUZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgdGhlT2Zmc2V0KQogICAgICAgIDogZlRleHQodGhl
VGV4dCksCiAgICAgICAgICBmT2Zmc2V0KHRoZU9mZnNldCkKewp9CgppbmxpbmUKSVRleHRJdGVy
YXRvcjo6SVRleHRJdGVyYXRvcihjb25zdCBJVGV4dEl0ZXJhdG9yJiB0aGF0KQogICAgICAgIDog
ZlRleHQodGhhdC5mVGV4dCksCiAgICAgICAgICBmT2Zmc2V0KHRoYXQuZk9mZnNldCkKewp9Cgpp
bmxpbmUKSVRleHRJdGVyYXRvcjo6fklUZXh0SXRlcmF0b3IoKQp7Cn0KCmlubGluZSBJVGV4dEl0
ZXJhdG9yJgpJVGV4dEl0ZXJhdG9yOjpvcGVyYXRvcj0oY29uc3QgSVRleHRJdGVyYXRvciYgdGhh
dCkKewogICAgZlRleHQgPSB0aGF0LmZUZXh0OwogICAgZk9mZnNldCA9IHRoYXQuZk9mZnNldDsK
ICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lIGJvb2wKSVRleHRJdGVyYXRvcjo6b3BlcmF0b3I9
PShjb25zdCBJVGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZlRleHQgPT0g
dGhhdC5mVGV4dCAmJiBmT2Zmc2V0ID09IHRoYXQuZk9mZnNldDsKfQoKaW5saW5lIGJvb2wKSVRl
eHRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJVGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7
CiAgICByZXR1cm4gZlRleHQgIT0gdGhhdC5mVGV4dCB8fCBmT2Zmc2V0ICE9IHRoYXQuZk9mZnNl
dDsKfQoKaW5saW5lIGJvb2wKSVRleHRJdGVyYXRvcjo6b3BlcmF0b3I+KGNvbnN0IElUZXh0SXRl
cmF0b3ImIHRoYXQpIGNvbnN0CnsKICAgIGlmICghKCBmVGV4dCA9PSB0aGF0LmZUZXh0ICkpIHRo
cm93RXhjZXB0aW9uKCkgOwogICAgcmV0dXJuIGZPZmZzZXQgPiB0aGF0LmZPZmZzZXQ7Cn0KCmlu
bGluZSBib29sCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9yPChjb25zdCBJVGV4dEl0ZXJhdG9yJiB0
aGF0KSBjb25zdAp7CiAgICBpZiAoISggZlRleHQgPT0gdGhhdC5mVGV4dCApKSB0aHJvd0V4Y2Vw
dGlvbigpIDsKICAgIHJldHVybiBmT2Zmc2V0IDwgdGhhdC5mT2Zmc2V0Owp9CgppbmxpbmUgYm9v
bApJVGV4dEl0ZXJhdG9yOjpvcGVyYXRvcj49KGNvbnN0IElUZXh0SXRlcmF0b3ImIHRoYXQpIGNv
bnN0CnsKICAgIGlmICghKCBmVGV4dCA9PSB0aGF0LmZUZXh0ICkpIHRocm93RXhjZXB0aW9uKCkg
OwogICAgcmV0dXJuIGZPZmZzZXQgPj0gdGhhdC5mT2Zmc2V0Owp9CgppbmxpbmUgYm9vbApJVGV4
dEl0ZXJhdG9yOjpvcGVyYXRvcjw9KGNvbnN0IElUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0CnsK
ICAgIGlmICghKCBmVGV4dCA9PSB0aGF0LmZUZXh0ICkpIHRocm93RXhjZXB0aW9uKCkgOwogICAg
cmV0dXJuIGZPZmZzZXQgPD0gdGhhdC5mT2Zmc2V0Owp9CgppbmxpbmUgSUNoYXJhY3RlclJlZmVy
ZW5jZQpJVGV4dEl0ZXJhdG9yOjpvcGVyYXRvcltdKGlvYzo6bnVtZXJpY190ICBvZmZzZXQpIGNv
bnN0CnsKICAgIHJldHVybiAoKmZUZXh0KVsoc2l6ZV90KShmT2Zmc2V0ICsgb2Zmc2V0KV07Cn0K
CmlubGluZSBJQ2hhcmFjdGVyUmVmZXJlbmNlCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNv
bnN0CnsKICAgIHJldHVybiAoKmZUZXh0KVtmT2Zmc2V0XTsKfQoKaW5saW5lIElUZXh0SXRlcmF0
b3ImCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9yKysoKQp7CiAgICBmT2Zmc2V0Kys7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCmlubGluZSBJVGV4dEl0ZXJhdG9yCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9y
KysoaW50KQp7CiAgICBJVGV4dEl0ZXJhdG9yICAgdGVtcCgqdGhpcyk7CiAgICBmT2Zmc2V0Kys7
CiAgICByZXR1cm4gdGVtcDsKfQoKaW5saW5lIElUZXh0SXRlcmF0b3ImCklUZXh0SXRlcmF0b3I6
Om9wZXJhdG9yLS0oKQp7CiAgICBmT2Zmc2V0LS07CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGlu
ZSBJVGV4dEl0ZXJhdG9yCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9yLS0oaW50KQp7CiAgICBJVGV4
dEl0ZXJhdG9yICAgdGVtcCgqdGhpcyk7CiAgICBmT2Zmc2V0LS07CiAgICByZXR1cm4gdGVtcDsK
fQoKaW5saW5lIElUZXh0SXRlcmF0b3ImCklUZXh0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaW9jOjpu
dW1lcmljX3QgZGlzdGFuY2UpCnsKICAgIGZPZmZzZXQgKz0gZGlzdGFuY2U7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCmlubGluZSBJVGV4dEl0ZXJhdG9yJgpJVGV4dEl0ZXJhdG9yOjpvcGVyYXRvci09
KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKQp7CiAgICBmT2Zmc2V0IC09IGRpc3RhbmNlOwogICAg
cmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSVRleHRJdGVyYXRvcgpJVGV4dEl0ZXJhdG9yOjpvcGVy
YXRvci0oaW9jOjpudW1lcmljX3QgZGlzdGFuY2UpIGNvbnN0CnsKICAgIElUZXh0SXRlcmF0b3Ig
ICB0ZW1wKCp0aGlzKTsKICAgIHJldHVybiB0ZW1wIC09IGRpc3RhbmNlOwp9CgppbmxpbmUgaW9j
OjpudW1lcmljX3QKSVRleHRJdGVyYXRvcjo6b3BlcmF0b3ItKGNvbnN0IElUZXh0SXRlcmF0b3Im
IHRoYXQpIGNvbnN0CnsKICAgIGlmICghKCBmVGV4dCA9PSB0aGF0LmZUZXh0ICkpIHRocm93RXhj
ZXB0aW9uKCkgOwogICAgcmV0dXJuIGZPZmZzZXQgLSB0aGF0LmZPZmZzZXQ7Cn0KCmlubGluZSBJ
VGV4dCoKSVRleHRJdGVyYXRvcjo6dGV4dCgpIGNvbnN0CnsKICAgIHJldHVybiBmVGV4dDsKfQoK
aW5saW5lIHNpemVfdApJVGV4dEl0ZXJhdG9yOjpvZmZzZXQoKSBjb25zdAp7CiAgICByZXR1cm4g
Zk9mZnNldDsKfQoKIAogCiAKCmlubGluZSBJVGV4dEl0ZXJhdG9yCm9wZXJhdG9yKyhjb25zdCBJ
VGV4dEl0ZXJhdG9yJiBpdGVyYXRvciwKICAgICAgICAgIGlvYzo6bnVtZXJpY190IG9mZnNldCkK
ewogICAgSVRleHRJdGVyYXRvciAgIHJlc3VsdChpdGVyYXRvcik7CiAgICByZXR1cm4gcmVzdWx0
ICs9IG9mZnNldDsKfQoKaW5saW5lIElUZXh0SXRlcmF0b3IKb3BlcmF0b3IrKGlvYzo6bnVtZXJp
Y190IG9mZnNldCwKICAgICAgICAgIGNvbnN0IElUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQp7CiAg
ICBJVGV4dEl0ZXJhdG9yICAgcmVzdWx0KGl0ZXJhdG9yKTsKICAgIHJldHVybiByZXN1bHQgKz0g
b2Zmc2V0Owp9CgppbmxpbmUgaW9jOjp1bmljaGFyX3QqCnZhbHVlX3R5cGUoY29uc3QgSVRleHRJ
dGVyYXRvciYpCnsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgaW9jOjpudW1lcmljX3QKZGlzdGFu
Y2VfdHlwZShjb25zdCBJVGV4dEl0ZXJhdG9yJikKewogICAgcmV0dXJuIDA7Cn0KCiAKIAogCiAK
IAoKIAogCiAKCmlubGluZQpJQ29uc3RUZXh0SXRlcmF0b3I6OklDb25zdFRleHRJdGVyYXRvcigp
CiAgICAgICAgOiBmVGV4dCgmSVRleHQ6OmVtcHR5VGV4dCgpKSwKICAgICAgICAgIGZPZmZzZXQo
MCkKewp9CgppbmxpbmUKSUNvbnN0VGV4dEl0ZXJhdG9yOjpJQ29uc3RUZXh0SXRlcmF0b3IoY29u
c3QgSUNvbnN0VGV4dEl0ZXJhdG9yJiB0aGF0KQogICAgICAgIDogZlRleHQodGhhdC5mVGV4dCks
CiAgICAgICAgICBmT2Zmc2V0KHRoYXQuZk9mZnNldCkKewp9CgppbmxpbmUKSUNvbnN0VGV4dEl0
ZXJhdG9yOjpJQ29uc3RUZXh0SXRlcmF0b3IoY29uc3QgSVRleHQqIHRoZVRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0aGVPZmZzZXQpCiAgICAgICAg
OiBmVGV4dCh0aGVUZXh0KSwKICAgICAgICAgIGZPZmZzZXQodGhlT2Zmc2V0KQp7Cn0KCmlubGlu
ZQpJQ29uc3RUZXh0SXRlcmF0b3I6On5JQ29uc3RUZXh0SXRlcmF0b3IoKQp7Cn0KCmlubGluZSBJ
Q29uc3RUZXh0SXRlcmF0b3ImCklDb25zdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I9KGNvbnN0IElD
b25zdFRleHRJdGVyYXRvciYgdGhhdCkKewogICAgZlRleHQgPSB0aGF0LmZUZXh0OwogICAgZk9m
ZnNldCA9IHRoYXQuZk9mZnNldDsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lCklDb25zdFRl
eHRJdGVyYXRvcjo6b3BlcmF0b3IgSVRleHRJdGVyYXRvcigpIGNvbnN0CnsKICAgIHJldHVybiBJ
VGV4dEl0ZXJhdG9yKChJVGV4dCopZlRleHQsIGZPZmZzZXQpOyAgICAKICAgICAKICAgICAKICAg
ICAKfQoKaW5saW5lIGJvb2wKSUNvbnN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IElD
b25zdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QKewogICAgcmV0dXJuIGZUZXh0ID09IHRoYXQu
ZlRleHQgJiYgZk9mZnNldCA9PSB0aGF0LmZPZmZzZXQ7Cn0KCmlubGluZSBib29sCklDb25zdFRl
eHRJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJQ29uc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNv
bnN0CnsKICAgIHJldHVybiBmVGV4dCAhPSB0aGF0LmZUZXh0IHx8IGZPZmZzZXQgIT0gdGhhdC5m
T2Zmc2V0Owp9CgppbmxpbmUgYm9vbApJQ29uc3RUZXh0SXRlcmF0b3I6Om9wZXJhdG9yPihjb25z
dCBJQ29uc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0CnsKICAgIGlmICghKCBmVGV4dCA9PSB0
aGF0LmZUZXh0ICkpIHRocm93RXhjZXB0aW9uKCkgOwogICAgcmV0dXJuIGZPZmZzZXQgPiB0aGF0
LmZPZmZzZXQ7Cn0KCmlubGluZSBib29sCklDb25zdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I8KGNv
bnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QKewogICAgaWYgKCEoIGZUZXh0ID09
IHRoYXQuZlRleHQgKSkgdGhyb3dFeGNlcHRpb24oKSA7CiAgICByZXR1cm4gZk9mZnNldCA8IHRo
YXQuZk9mZnNldDsKfQoKaW5saW5lIGJvb2wKSUNvbnN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvcj49
KGNvbnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QKewogICAgaWYgKCEoIGZUZXh0
ID09IHRoYXQuZlRleHQgKSkgdGhyb3dFeGNlcHRpb24oKSA7CiAgICByZXR1cm4gZk9mZnNldCA+
PSB0aGF0LmZPZmZzZXQ7Cn0KCmlubGluZSBib29sCklDb25zdFRleHRJdGVyYXRvcjo6b3BlcmF0
b3I8PShjb25zdCBJQ29uc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0CnsKICAgIGlmICghKCBm
VGV4dCA9PSB0aGF0LmZUZXh0ICkpIHRocm93RXhjZXB0aW9uKCkgOwogICAgcmV0dXJuIGZPZmZz
ZXQgPD0gdGhhdC5mT2Zmc2V0Owp9CgppbmxpbmUgaW9jOjp1bmljaGFyX3QKSUNvbnN0VGV4dEl0
ZXJhdG9yOjpvcGVyYXRvcltdKGlvYzo6bnVtZXJpY190IG9mZnNldCkgY29uc3QKewogICAgcmV0
dXJuICgqZlRleHQpWyhzaXplX3QpKGZPZmZzZXQgKyBvZmZzZXQpXTsKfQoKaW5saW5lIGlvYzo6
dW5pY2hhcl90CklDb25zdFRleHRJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKewogICAgcmV0
dXJuICgqZlRleHQpW2ZPZmZzZXRdOwp9CgppbmxpbmUgSUNvbnN0VGV4dEl0ZXJhdG9yJgpJQ29u
c3RUZXh0SXRlcmF0b3I6Om9wZXJhdG9yKysoKQp7CiAgICBmT2Zmc2V0Kys7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCmlubGluZSBJQ29uc3RUZXh0SXRlcmF0b3IKSUNvbnN0VGV4dEl0ZXJhdG9yOjpv
cGVyYXRvcisrKGludCkKewogICAgSUNvbnN0VGV4dEl0ZXJhdG9yICAgICAgdGVtcCgqdGhpcyk7
CiAgICBmT2Zmc2V0Kys7CiAgICByZXR1cm4gdGVtcDsKfQoKaW5saW5lIElDb25zdFRleHRJdGVy
YXRvciYKSUNvbnN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKewogICAgZk9mZnNldC0tOwog
ICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSUNvbnN0VGV4dEl0ZXJhdG9yCklDb25zdFRleHRJ
dGVyYXRvcjo6b3BlcmF0b3ItLShpbnQpCnsKICAgIElDb25zdFRleHRJdGVyYXRvciAgICAgIHRl
bXAoKnRoaXMpOwogICAgZk9mZnNldC0tOwogICAgcmV0dXJuIHRlbXA7Cn0KCmlubGluZSBJQ29u
c3RUZXh0SXRlcmF0b3ImCklDb25zdFRleHRJdGVyYXRvcjo6b3BlcmF0b3IrPShpb2M6Om51bWVy
aWNfdCBkaXN0YW5jZSkKewogICAgZk9mZnNldCArPSBkaXN0YW5jZTsKICAgIHJldHVybiAqdGhp
czsKfQoKaW5saW5lIElDb25zdFRleHRJdGVyYXRvciYKSUNvbnN0VGV4dEl0ZXJhdG9yOjpvcGVy
YXRvci09KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKQp7CiAgICBmT2Zmc2V0IC09IGRpc3RhbmNl
OwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSUNvbnN0VGV4dEl0ZXJhdG9yCklDb25zdFRl
eHRJdGVyYXRvcjo6b3BlcmF0b3ItKGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKSBjb25zdAp7CiAg
ICBJQ29uc3RUZXh0SXRlcmF0b3IgICAgICByZXN1bHQoKnRoaXMpOwogICAgcmV0dXJuIHJlc3Vs
dCAtPSBkaXN0YW5jZTsKfQoKaW5saW5lIGlvYzo6bnVtZXJpY190CklDb25zdFRleHRJdGVyYXRv
cjo6b3BlcmF0b3ItKGNvbnN0IElDb25zdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QKewogICAg
aWYgKCEoIGZUZXh0ID09IHRoYXQuZlRleHQgKSkgdGhyb3dFeGNlcHRpb24oKSA7CiAgICByZXR1
cm4gZk9mZnNldCAtIHRoYXQuZk9mZnNldDsKfQoKaW5saW5lIGNvbnN0IElUZXh0KgpJQ29uc3RU
ZXh0SXRlcmF0b3I6OnRleHQoKSBjb25zdAp7CiAgICByZXR1cm4gZlRleHQ7Cn0KCmlubGluZSBz
aXplX3QKSUNvbnN0VGV4dEl0ZXJhdG9yOjpvZmZzZXQoKSBjb25zdAp7CiAgICByZXR1cm4gZk9m
ZnNldDsKfQoKIAogCiAKCmlubGluZSBJQ29uc3RUZXh0SXRlcmF0b3IKb3BlcmF0b3IrKGNvbnN0
IElDb25zdFRleHRJdGVyYXRvciYgaXRlcmF0b3IsCiAgICAgICAgICBpb2M6Om51bWVyaWNfdCBv
ZmZzZXQpCnsKICAgIElDb25zdFRleHRJdGVyYXRvciAgICAgIHJlc3VsdChpdGVyYXRvcik7CiAg
ICByZXR1cm4gcmVzdWx0ICs9IG9mZnNldDsKfQoKaW5saW5lIElDb25zdFRleHRJdGVyYXRvcgpv
cGVyYXRvcisoaW9jOjpudW1lcmljX3Qgb2Zmc2V0LAogICAgICAgICAgY29uc3QgSUNvbnN0VGV4
dEl0ZXJhdG9yJiBpdGVyYXRvcikKewogICAgSUNvbnN0VGV4dEl0ZXJhdG9yICAgICAgcmVzdWx0
KGl0ZXJhdG9yKTsKICAgIHJldHVybiByZXN1bHQgKz0gb2Zmc2V0Owp9CgppbmxpbmUgaW9jOjp1
bmljaGFyX3QqCnZhbHVlX3R5cGUoY29uc3QgSUNvbnN0VGV4dEl0ZXJhdG9yJikKewogICAgcmV0
dXJuIDA7Cn0KCmlubGluZSBpb2M6Om51bWVyaWNfdApkaXN0YW5jZV90eXBlKGNvbnN0IElDb25z
dFRleHRJdGVyYXRvciYpCnsKICAgIHJldHVybiAwOwp9CgogCiAKIAogCiAKCiAKIAogCgp0ZW1w
bGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGluZQpJUmV2
ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPjo6SVJldmVyc2VJdGVyYXRv
cigpCiAgICAgICAgOiBmUmVhbEl0ZXJhdG9yKCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJ
dGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGluZQpJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFs
SXRlcmF0b3IsIEFSZXR1cm5UeXBlPjo6SVJldmVyc2VJdGVyYXRvcihjb25zdCBBUmVhbEl0ZXJh
dG9yJiAgICAgdGhlUmVhbEl0ZXJhdG9yKQogICAgICAgIDogZlJlYWxJdGVyYXRvcih0aGVSZWFs
SXRlcmF0b3IpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1
cm5UeXBlPgppbmxpbmUKSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlw
ZT46OklSZXZlcnNlSXRlcmF0b3IoY29uc3QgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9y
LCBBUmV0dXJuVHlwZT4mICAgICAgdGhhdCkKICAgICAgICA6IGZSZWFsSXRlcmF0b3IodGhhdC5m
UmVhbEl0ZXJhdG9yKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBB
UmV0dXJuVHlwZT4KaW5saW5lCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVy
blR5cGU+Ojp+SVJldmVyc2VJdGVyYXRvcigpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRl
cmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0
ZXJhdG9yLCBBUmV0dXJuVHlwZT4mCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJl
dHVyblR5cGU+OjpvcGVyYXRvcj0oY29uc3QgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9y
LCBBUmV0dXJuVHlwZT4mICAgICB0aGF0KQp7CiAgICBmUmVhbEl0ZXJhdG9yID0gdGhhdC5mUmVh
bEl0ZXJhdG9yOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVy
YXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGluZQpJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRl
cmF0b3IsIEFSZXR1cm5UeXBlPjo6b3BlcmF0b3IgQVJlYWxJdGVyYXRvcigpIGNvbnN0CnsKICAg
IHJldHVybiBmUmVhbEl0ZXJhdG9yOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwg
Y2xhc3MgQVJldHVyblR5cGU+CmlubGluZSBib29sCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVy
YXRvciwgQVJldHVyblR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IElSZXZlcnNlSXRlcmF0b3I8QVJl
YWxJdGVyYXRvciwgQVJldHVyblR5cGU+JiAgICB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZlJl
YWxJdGVyYXRvciA9PSB0aGF0LmZSZWFsSXRlcmF0b3I7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBUmVh
bEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5lIGJvb2wKSVJldmVyc2VJdGVyYXRv
cjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgSVJldmVyc2VJ
dGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mICAgIHRoYXQpIGNvbnN0CnsKICAg
IHJldHVybiBmUmVhbEl0ZXJhdG9yICE9IHRoYXQuZlJlYWxJdGVyYXRvcjsKfQoKdGVtcGxhdGUg
PGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgYm9vbApJUmV2
ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPjo6b3BlcmF0b3I+KGNvbnN0
IElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+JiAgICAgdGhhdCkg
Y29uc3QKewogICAgcmV0dXJuIGZSZWFsSXRlcmF0b3IgPiB0aGF0LmZSZWFsSXRlcmF0b3I7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5l
IGJvb2wKSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT46Om9wZXJh
dG9yPChjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYg
ICAgIHRoYXQpIGNvbnN0CnsKICAgIHJldHVybiBmUmVhbEl0ZXJhdG9yIDwgdGhhdC5mUmVhbEl0
ZXJhdG9yOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5
cGU+CmlubGluZSBib29sCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5
cGU+OjpvcGVyYXRvcj49KGNvbnN0IElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJl
dHVyblR5cGU+JiAgICB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZlJlYWxJdGVyYXRvciA+PSB0
aGF0LmZSZWFsSXRlcmF0b3I7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFz
cyBBUmV0dXJuVHlwZT4KaW5saW5lIGJvb2wKSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9y
LCBBUmV0dXJuVHlwZT46Om9wZXJhdG9yPD0oY29uc3QgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0
ZXJhdG9yLCBBUmV0dXJuVHlwZT4mICAgIHRoYXQpIGNvbnN0CnsKICAgIHJldHVybiBmUmVhbEl0
ZXJhdG9yIDw9IHRoYXQuZlJlYWxJdGVyYXRvcjsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRl
cmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgQVJldHVyblR5cGUKSVJldmVyc2VJdGVy
YXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT46Om9wZXJhdG9yW10oaW9jOjpudW1lcmlj
X3QgICBvZmZzZXQpIGNvbnN0CnsKICAgIHJldHVybiBmUmVhbEl0ZXJhdG9yW29mZnNldF07Cn0K
CnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5l
IEFSZXR1cm5UeXBlCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+
OjpvcGVyYXRvciooKSBjb25zdAp7CiAgICByZXR1cm4gKmZSZWFsSXRlcmF0b3I7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBBUmVhbEl0ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5lIElSZXZl
cnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+JgpJUmV2ZXJzZUl0ZXJhdG9y
PEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPjo6b3BlcmF0b3IrKygpCnsKICAgIC0tZlJlYWxJ
dGVyYXRvcjsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0
b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJh
dG9yLCBBUmV0dXJuVHlwZT4KSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJu
VHlwZT46Om9wZXJhdG9yKysoaW50KQp7CiAgICByZXR1cm4gZlJlYWxJdGVyYXRvci0tOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGluZSBJ
UmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiYKSVJldmVyc2VJdGVy
YXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT46Om9wZXJhdG9yLS0oKQp7CiAgICArK2ZS
ZWFsSXRlcmF0b3I7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0
ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5lIElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJ
dGVyYXRvciwgQVJldHVyblR5cGU+CklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJl
dHVyblR5cGU+OjpvcGVyYXRvci0tKGludCkKewogICAgcmV0dXJuIGZSZWFsSXRlcmF0b3IrKzsK
fQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxp
bmUgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mCklSZXZlcnNl
SXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+OjpvcGVyYXRvcis9KGlvYzo6bnVt
ZXJpY190ICAgICAgICAgICBkaXN0YW5jZSkKewogICAgZlJlYWxJdGVyYXRvciAtPSBkaXN0YW5j
ZTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNs
YXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBB
UmV0dXJuVHlwZT4mCklSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVyblR5cGU+
OjpvcGVyYXRvci09KGlvYzo6bnVtZXJpY190ICAgICAgICAgICBkaXN0YW5jZSkKewogICAgZlJl
YWxJdGVyYXRvciArPSBkaXN0YW5jZTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNs
YXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgSVJldmVyc2VJdGVy
YXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4KSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0
ZXJhdG9yLCBBUmV0dXJuVHlwZT46Om9wZXJhdG9yLShpb2M6Om51bWVyaWNfdCAgICAgICAgICAg
IGRpc3RhbmNlKSBjb25zdAp7CiAgICByZXR1cm4gZlJlYWxJdGVyYXRvciArIGRpc3RhbmNlOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGlu
ZSBpb2M6Om51bWVyaWNfdApJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5U
eXBlPjo6b3BlcmF0b3ItKGNvbnN0IElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJl
dHVyblR5cGU+JiAgICAgdGhhdCkgY29uc3QKewogICAgIAogICAgIAogICAgIAogICAgIAogICAg
IAogICAgcmV0dXJuIGZSZWFsSXRlcmF0b3IgLSB0aGF0LmZSZWFsSXRlcmF0b3I7Cn0KCiAKIAog
Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVJlYWxJdGVyYXRvciwgY2xhc3MgQVJldHVyblR5cGU+CmlubGlu
ZSBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPgpvcGVyYXRvciso
Y29uc3QgSVJldmVyc2VJdGVyYXRvcjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mIGl0ZXJh
dG9yLAogICAgICAgICAgaW9jOjpudW1lcmljX3Qgb2Zmc2V0KQp7CiAgICBJUmV2ZXJzZUl0ZXJh
dG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBlPiAgICByZXR1cm5WYWwoaXRlcmF0b3IpOwog
ICAgcmV0dXJuIHJldHVyblZhbCArPSBvZmZzZXQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBUmVhbEl0
ZXJhdG9yLCBjbGFzcyBBUmV0dXJuVHlwZT4KaW5saW5lIElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJ
dGVyYXRvciwgQVJldHVyblR5cGU+Cm9wZXJhdG9yKyhpb2M6Om51bWVyaWNfdCBvZmZzZXQsCiAg
ICAgICAgICBjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0b3IsIEFSZXR1cm5UeXBl
PiYgaXRlcmF0b3IpCnsKICAgIElSZXZlcnNlSXRlcmF0b3I8QVJlYWxJdGVyYXRvciwgQVJldHVy
blR5cGU+ICAgIHJldHVyblZhbChpdGVyYXRvcik7CiAgICByZXR1cm4gcmV0dXJuVmFsICs9IG9m
ZnNldDsKfQoKdGVtcGxhdGUgPGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBl
PgppbmxpbmUgaW9jOjp1bmljaGFyX3QqCnZhbHVlX3R5cGUoY29uc3QgSVJldmVyc2VJdGVyYXRv
cjxBUmVhbEl0ZXJhdG9yLCBBUmV0dXJuVHlwZT4mKQp7CiAgICByZXR1cm4gMDsKfQoKdGVtcGxh
dGUgPGNsYXNzIEFSZWFsSXRlcmF0b3IsIGNsYXNzIEFSZXR1cm5UeXBlPgppbmxpbmUgaW9jOjpu
dW1lcmljX3QKZGlzdGFuY2VfdHlwZShjb25zdCBJUmV2ZXJzZUl0ZXJhdG9yPEFSZWFsSXRlcmF0
b3IsIEFSZXR1cm5UeXBlPiYpCnsKICAgIHJldHVybiAwOwp9CgogCiAKIAogCiAKIAoKIAogCiAK
IAogCiAKIAogCiAKCmlubGluZSBJUmV2ZXJzZVRleHRJdGVyYXRvcgpvcGVyYXRvcisoY29uc3Qg
SVJldmVyc2VUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yLAogICAgICAgICAgaW9jOjpudW1lcmljX3Qg
b2Zmc2V0KQp7CiAgICBJUmV2ZXJzZVRleHRJdGVyYXRvciAgICByZXR1cm5WYWwoaXRlcmF0b3Ip
OwogICAgcmV0dXJuIHJldHVyblZhbCArPSBvZmZzZXQ7Cn0KCmlubGluZSBJUmV2ZXJzZVRleHRJ
dGVyYXRvcgpvcGVyYXRvcisoaW9jOjpudW1lcmljX3Qgb2Zmc2V0LAogICAgICAgICAgY29uc3Qg
SVJldmVyc2VUZXh0SXRlcmF0b3ImIGl0ZXJhdG9yKQp7CiAgICBJUmV2ZXJzZVRleHRJdGVyYXRv
ciAgICByZXR1cm5WYWwoaXRlcmF0b3IpOwogICAgcmV0dXJuIHJldHVyblZhbCArPSBvZmZzZXQ7
Cn0KCmlubGluZSBJUmV2ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yCm9wZXJhdG9yKyhjb25zdCBJUmV2
ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yJiBpdGVyYXRvciwKICAgICAgICAgIGlvYzo6bnVtZXJpY190
IG9mZnNldCkKewogICAgSVJldmVyc2VDb25zdFRleHRJdGVyYXRvciAgICAgICByZXR1cm5WYWwo
aXRlcmF0b3IpOwogICAgcmV0dXJuIHJldHVyblZhbCArPSBvZmZzZXQ7Cn0KCmlubGluZSBJUmV2
ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yCm9wZXJhdG9yKyhpb2M6Om51bWVyaWNfdCBvZmZzZXQsCiAg
ICAgICAgICBjb25zdCBJUmV2ZXJzZUNvbnN0VGV4dEl0ZXJhdG9yJiBpdGVyYXRvcikKewogICAg
SVJldmVyc2VDb25zdFRleHRJdGVyYXRvciAgICAgICByZXR1cm5WYWwoaXRlcmF0b3IpOwogICAg
cmV0dXJuIHJldHVyblZhbCArPSBvZmZzZXQ7Cn0KCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKCmlubGluZQpJRmFzdFRleHRJdGVyYXRvcjo6SUZhc3RUZXh0SXRlcmF0b3IoKQogICAg
ICAgIDogZkNoYXIoMCksCiAgICAgICAgICBmR2FwU3RhcnQoMCksCiAgICAgICAgICBmR2FwTGVu
Z3RoKDApCnsKICAgICAKICAgICAKICAgICAKfQoKaW5saW5lCklGYXN0VGV4dEl0ZXJhdG9yOjpJ
RmFzdFRleHRJdGVyYXRvcihpb2M6OnVuaWNoYXJfdCogdGhlQ2hhciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90KiBnYXBTdGFydCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgIGdhcExlbmd0aCkKICAgICAgICA6
IGZDaGFyKHRoZUNoYXIpLAogICAgICAgICAgZkdhcFN0YXJ0KGdhcFN0YXJ0KSwKICAgICAgICAg
IGZHYXBMZW5ndGgoZ2FwTGVuZ3RoKQp7Cn0KCmlubGluZQpJRmFzdFRleHRJdGVyYXRvcjo6SUZh
c3RUZXh0SXRlcmF0b3IoY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImIHRoYXQpCiAgICAgICAgOiBm
Q2hhcih0aGF0LmZDaGFyKSwKICAgICAgICAgIGZHYXBTdGFydCh0aGF0LmZHYXBTdGFydCksCiAg
ICAgICAgICBmR2FwTGVuZ3RoKHRoYXQuZkdhcExlbmd0aCkKewp9CgppbmxpbmUKSUZhc3RUZXh0
SXRlcmF0b3I6On5JRmFzdFRleHRJdGVyYXRvcigpCnsKfQoKaW5saW5lIElGYXN0VGV4dEl0ZXJh
dG9yJgpJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I9KGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9y
JiB0aGF0KQp7CiAgICBmQ2hhciA9IHRoYXQuZkNoYXI7CiAgICBmR2FwU3RhcnQgPSB0aGF0LmZH
YXBTdGFydDsKICAgIGZHYXBMZW5ndGggPSB0aGF0LmZHYXBMZW5ndGg7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCmlubGluZSBib29sCklGYXN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IElG
YXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZkNoYXIgPT0gdGhhdC5m
Q2hhcjsKfQoKaW5saW5lIGJvb2wKSUZhc3RUZXh0SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3Qg
SUZhc3RUZXh0SXRlcmF0b3ImIHRoYXQpIGNvbnN0CnsKICAgIHJldHVybiBmQ2hhciAhPSB0aGF0
LmZDaGFyOwp9CgppbmxpbmUgYm9vbApJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I+KGNvbnN0
IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZkNoYXIgPiB0aGF0
LmZDaGFyOwp9CgppbmxpbmUgYm9vbApJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I8KGNvbnN0
IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZkNoYXIgPCB0aGF0
LmZDaGFyOwp9CgppbmxpbmUgYm9vbApJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3I+PShjb25z
dCBJRmFzdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QKewogICAgcmV0dXJuIGZDaGFyID49IHRo
YXQuZkNoYXI7Cn0KCmlubGluZSBib29sCklGYXN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvcjw9KGNv
bnN0IElGYXN0VGV4dEl0ZXJhdG9yJiB0aGF0KSBjb25zdAp7CiAgICByZXR1cm4gZkNoYXIgPD0g
dGhhdC5mQ2hhcjsKfQoKaW5saW5lIGlvYzo6dW5pY2hhcl90JgpJRmFzdFRleHRJdGVyYXRvcjo6
b3BlcmF0b3IqKCkgY29uc3QKewogICAgcmV0dXJuICpmQ2hhcjsKfQoKaW5saW5lIElGYXN0VGV4
dEl0ZXJhdG9yJgpJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3IrKygpCnsKICAgIGZDaGFyKys7
CiAgICBpZiAoZkdhcFN0YXJ0ICYmIGZDaGFyID09IGZHYXBTdGFydCkKICAgICAgICBmQ2hhciAr
PSBmR2FwTGVuZ3RoOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUgSUZhc3RUZXh0SXRlcmF0
b3IKSUZhc3RUZXh0SXRlcmF0b3I6Om9wZXJhdG9yKysoaW50KQp7CiAgICBJRmFzdFRleHRJdGVy
YXRvciAgICAgICB0ZW1wKCp0aGlzKTsKICAgICsrKCp0aGlzKTsKICAgIHJldHVybiB0ZW1wOwp9
CgppbmxpbmUgSUZhc3RUZXh0SXRlcmF0b3ImCklGYXN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvci0t
KCkKewogICAgZkNoYXItLTsKICAgIGlmIChmR2FwU3RhcnQgJiYgZkNoYXIgKyAxID09IGZHYXBT
dGFydCArIGZHYXBMZW5ndGgpCiAgICAgICAgZkNoYXIgLT0gZkdhcExlbmd0aDsKICAgIHJldHVy
biAqdGhpczsKfQoKaW5saW5lIElGYXN0VGV4dEl0ZXJhdG9yCklGYXN0VGV4dEl0ZXJhdG9yOjpv
cGVyYXRvci0tKGludCkKewogICAgSUZhc3RUZXh0SXRlcmF0b3IgICAgICAgdGVtcCgqdGhpcyk7
CiAgICAtLSgqdGhpcyk7CiAgICByZXR1cm4gdGVtcDsKfQoKaW5saW5lIElGYXN0VGV4dEl0ZXJh
dG9yJgpJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3IrPShpb2M6Om51bWVyaWNfdCBkaXN0YW5j
ZSkKewogICAgaW9jOjp1bmljaGFyX3QqICAgICAgICB0ZW1wID0gZkNoYXIgKyBkaXN0YW5jZTsK
ICAgIGlmIChmR2FwU3RhcnQpIHsKICAgICAgICBpZiAoZkNoYXIgPCBmR2FwU3RhcnQgJiYgdGVt
cCA+PSBmR2FwU3RhcnQpCiAgICAgICAgICAgIHRlbXAgKz0gZkdhcExlbmd0aDsKICAgICAgICBl
bHNlIGlmIChmQ2hhciA+PSBmR2FwU3RhcnQgKyBmR2FwTGVuZ3RoICYmIHRlbXAgPCBmR2FwU3Rh
cnQgKyBmR2FwTGVuZ3RoKQogICAgICAgICAgICB0ZW1wIC09IGZHYXBMZW5ndGg7CiAgICB9CiAg
ICBmQ2hhciA9IHRlbXA7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBpb2M6OnVuaWNoYXJf
dCYKSUZhc3RUZXh0SXRlcmF0b3I6Om9wZXJhdG9yW10oaW9jOjpudW1lcmljX3Qgb2Zmc2V0KSBj
b25zdAp7CiAgICBJRmFzdFRleHRJdGVyYXRvciAgICAgICB0ZW1wKCp0aGlzKTsKICAgIHRlbXAg
Kz0gb2Zmc2V0OwogICAgcmV0dXJuICp0ZW1wOwp9CgppbmxpbmUgSUZhc3RUZXh0SXRlcmF0b3Im
CklGYXN0VGV4dEl0ZXJhdG9yOjpvcGVyYXRvci09KGlvYzo6bnVtZXJpY190IGRpc3RhbmNlKQp7
CiAgICByZXR1cm4gKnRoaXMgKz0gKC1kaXN0YW5jZSk7Cn0KCmlubGluZSBJRmFzdFRleHRJdGVy
YXRvcgpJRmFzdFRleHRJdGVyYXRvcjo6b3BlcmF0b3ItKGlvYzo6bnVtZXJpY190IGRpc3RhbmNl
KSBjb25zdAp7CiAgICBJRmFzdFRleHRJdGVyYXRvciAgICAgICB0ZW1wKCp0aGlzKTsKICAgIHJl
dHVybiB0ZW1wIC09IGRpc3RhbmNlOwp9CgppbmxpbmUgaW9jOjpudW1lcmljX3QKSUZhc3RUZXh0
SXRlcmF0b3I6Om9wZXJhdG9yLShjb25zdCBJRmFzdFRleHRJdGVyYXRvciYgdGhhdCkgY29uc3QK
ewogICAgaW9jOjpudW1lcmljX3QgICAgZGlzdGFuY2U7CgogICAgZGlzdGFuY2UgPSBmQ2hhciAt
IHRoYXQuZkNoYXI7CiAgICBpZiAoZkdhcFN0YXJ0ICYmICgoZkNoYXIgPCBmR2FwU3RhcnQgJiYg
dGhhdC5mQ2hhciA+PSBmR2FwU3RhcnQpIHx8IChmQ2hhciA+PSBmR2FwU3RhcnQgKyBmR2FwTGVu
Z3RoICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmZDaGFyIDwgZkdhcFN0YXJ0ICsgZkdhcExlbmd0
aCkpKQogICAgICAgIGRpc3RhbmNlIC09IGZHYXBMZW5ndGg7CiAgICByZXR1cm4gZGlzdGFuY2U7
Cn0KCiAKIAogCgppbmxpbmUgSUZhc3RUZXh0SXRlcmF0b3IKb3BlcmF0b3IrKGNvbnN0IElGYXN0
VGV4dEl0ZXJhdG9yJiBpdGVyYXRvciwKICAgICAgICAgIGlvYzo6bnVtZXJpY190IG9mZnNldCkK
ewogICAgSUZhc3RUZXh0SXRlcmF0b3IgICAgICAgcmVzdWx0KGl0ZXJhdG9yKTsKICAgIHJldHVy
biByZXN1bHQgKz0gb2Zmc2V0Owp9CgppbmxpbmUgSUZhc3RUZXh0SXRlcmF0b3IKb3BlcmF0b3Ir
KGlvYzo6bnVtZXJpY190IG9mZnNldCwKICAgICAgICAgIGNvbnN0IElGYXN0VGV4dEl0ZXJhdG9y
JiBpdGVyYXRvcikKewogICAgSUZhc3RUZXh0SXRlcmF0b3IgICAgICAgcmVzdWx0KGl0ZXJhdG9y
KTsKICAgIHJldHVybiByZXN1bHQgKz0gb2Zmc2V0Owp9CgppbmxpbmUgaW9jOjp1bmljaGFyX3Qq
CnZhbHVlX3R5cGUoY29uc3QgSUZhc3RUZXh0SXRlcmF0b3ImKQp7CiAgICByZXR1cm4gMDsKfQoK
aW5saW5lIGlvYzo6bnVtZXJpY190CmRpc3RhbmNlX3R5cGUoY29uc3QgSUZhc3RUZXh0SXRlcmF0
b3ImKQp7CiAgICByZXR1cm4gMDsKfQoKIAogCiAKIAogCgogCgoKIAogCiAKIAogCiAKIAogCiMg
MTAyMiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
dHh0aXRlci5pbmwiCgoKCiMgNDUxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2l0eHRpdGVyLmhwcCIgMgoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUp
CiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMzAgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXR4dHN0b3Iu
aHBwIiAyCgogCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyAzNCAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdHh0c3Rvci5ocHAiIDIKCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JU
X0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5n
KF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgog
CgogCiAKCiAKY2xhc3MgSVRleHQ7CmNsYXNzIElEYXRhU3RyZWFtOwpjbGFzcyBJU3R5bGVTdG9y
YWdlOwpjbGFzcyBJVGV4dFN0eWxlOwpjbGFzcyBJVGV4dFN0eWxlU2V0OwpjbGFzcyBJU3RyaW5n
OwogCgogCgogCiAKIAogCiAKIAogCiAKIAogCgpjbGFzcyBJVGV4dFN0b3JhZ2UgOiBwdWJsaWMg
SU1SZWZDb3VudGVkLCBwdWJsaWMgdmlydHVhbCBJTVN0cmVhbWFibGUgCnsKcHVibGljOgogICAg
dHlwZWRlZiBzaXplX3Qgb2Zmc2V0X3R5cGU7CiAgICB0eXBlZGVmIHNpemVfdCBsZW5ndGhfdHlw
ZTsKCiAgICBzdGF0aWMgSVN5bmNocm9uaXplZDxJVGV4dFN0b3JhZ2UgKj4gZmdFbXB0eVRleHRT
dG9yYWdlOwoKICAgIHZpcnR1YWwgfklUZXh0U3RvcmFnZSgpOwoKICAgIHN0YXRpYyBJVGV4dFN0
b3JhZ2UqIGNyZWF0ZU5ldyhsZW5ndGhfdHlwZSBtaW5DYXBhY2l0eSk7CiAgICB2b2lkIGRyb3Ao
KTsKCiAgICB2aXJ0dWFsIHZvaWQgaW5pdEZyb20oSVRleHRTdG9yYWdlKiB0aGF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlIHBvczEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoX3R5cGUgbGVuZ3RoMSwKICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZz
ZXRfdHlwZSBwb3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlIGxlbmd0
aDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgZ2FwTGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd2lsbERyb3BPcmlnaW5hbCk7CgogICAgdmlydHVh
bCBJVGV4dFN0b3JhZ2UqIHJlcGxhY2Uob2Zmc2V0X3R5cGUgdGhpc1BvcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJVGV4dFN0b3JhZ2UqIHRoYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdHlwZSB0aGF0UG9zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCk7CgogICAgdmlydHVhbCBJ
VGV4dFN0b3JhZ2UqIHJlcGxhY2Uob2Zmc2V0X3R5cGUgdGhpc1BvcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlIHRoaXNMZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbmlDaGFyKiB0aGF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgdGhhdExlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlIGdhcExlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZmlsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgcHJvcGFnYXRlU3R5bGVzID0gZmFsc2UpOwoKICAgIHZpcnR1YWwgSVRleHRT
dG9yYWdlKiByZXBsYWNlKG9mZnNldF90eXBlIHRoaXNQb3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZW5ndGhfdHlwZSB0aGlzTGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbmd0aF90eXBlIHRoYXRMZW5ndGgpOwoKICAgIElUZXh0U3RvcmFnZSogYXRQ
dXQob2Zmc2V0X3R5cGUgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICBVbmlDaGFyIG5ld0No
YXIpOwoKICAgIHZpcnR1YWwgdm9pZCBjb3B5T3V0KFVuaUNoYXIqIHRoYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXRfdHlwZSB0aGlzUG9zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoX3R5cGUgbnVtQ2hhcnMpIGNvbnN0ID0gMDsKCiAgICB2aXJ0dWFsIGNvbnN0IElT
dHJpbmcmIGNoYXJCdWZmZXIoaW50IGNvZGVzZXQpOwogICAgdmlydHVhbCBJVGV4dFN0b3JhZ2Uq
IHJlcGxhY2VXaXRoQ2hhckJ1ZmZlcihjb25zdCBJU3RyaW5nJiBidWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2Rlc2V0KTsKCiAgICB2
aXJ0dWFsIGNvbnN0IFVuaUNoYXIqIGNfc3RyKCkgY29uc3QgPSAwOwogICAgdmlydHVhbCBVbmlD
aGFyJiBhdChvZmZzZXRfdHlwZSBwb3MpID0gMDsKCiAgICB2aXJ0dWFsIGxvbmcgaGFzaCgpOwoK
ICAgIGxlbmd0aF90eXBlIGxlbmd0aCgpIGNvbnN0OwogICAgbGVuZ3RoX3R5cGUgbWF4U2l6ZSgp
IGNvbnN0OwogICAgbGVuZ3RoX3R5cGUgY2FwYWNpdHkoKSBjb25zdDsKICAgIHZpcnR1YWwgSVRl
eHRTdG9yYWdlKiByZXNlcnZlKGxlbmd0aF90eXBlIG51bUNoYXJzKSA9IDA7CiAgICB2aXJ0dWFs
IElUZXh0U3RvcmFnZSogY29tcGFjdCgpID0gMDsKICAgIHZpcnR1YWwgY29uc3QgVW5pQ2hhciog
c3RvcmFnZUNodW5rKG9mZnNldF90eXBlIHNlYXJjaFBvcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldF90eXBlJiBjaHVua1BvcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90eXBlJiBjaHVua0xlbmd0aCkgY29uc3Qg
PSAwOwoKICAgIElUZXh0U3RvcmFnZSogY2xvbmVJZk5lY2Vzc2FyeSgpOwoKICAgIGJvb2wgaXNT
dHlsZWQoKSBjb25zdDsKICAgIElTdHlsZVN0b3JhZ2UqIHN0eWxlcygpOwogICAgY29uc3QgSVN0
eWxlU3RvcmFnZSogc3R5bGVzKCkgY29uc3Q7CiAgICB2b2lkIGluaXRTdHlsZXNGcm9tKElUZXh0
U3RvcmFnZSogdGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5BZG9wdCk7CiAg
ICB2b2lkIHJlbW92ZUFsbFN0eWxlcygpOwoKICAgIHZpcnR1YWwgSUZhc3RUZXh0SXRlcmF0b3IK
ICAgIGJlZ2luQXQob2Zmc2V0X3R5cGUgcG9zaXRpb24pID0gMDsKCiAgICBzdGF0aWMgSVRleHRT
dG9yYWdlKiBlbXB0eVRleHRTdG9yYWdlKCk7CgogICAgdmlydHVhbCB2b2lkIHByaW50RGVidWdJ
bmZvKCkgY29uc3Q7Cgpwcm90ZWN0ZWQ6CiAgICBJVGV4dFN0b3JhZ2UoKTsKICAgIElUZXh0U3Rv
cmFnZShjb25zdCBJVGV4dFN0b3JhZ2UmIHRoYXQpOwoKICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bnNlcnRHYXAob2Zmc2V0X3R5cGUgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZW5ndGhfdHlwZSBudW1DaGFycykgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEZWxl
dGVDaGFycyhvZmZzZXRfdHlwZSBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoX3R5cGUgbnVtQ2hhcnMpID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgY29weUluKG9m
ZnNldF90eXBlIHRoaXNQb3MsCiAgICAgICAgICAgICAgICAgICAgICAgIElUZXh0U3RvcmFnZSog
dGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3R5cGUgdGhhdFBvcywKICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgbnVtQ2hhcnMpOwoKICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVDb3B5SW4ob2Zmc2V0X3R5cGUgdGhpc1BvcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVW5pQ2hhciogdGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoX3R5cGUgbnVtQ2hhcnMpID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRmls
bChvZmZzZXRfdHlwZSBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlDaGFyIGZp
bGxDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5cGUgbnVtQ29waWVz
KSA9IDA7CgogICAgYm9vbCBtdXN0Q29weShsZW5ndGhfdHlwZSBuZXdMZW5ndGgpIGNvbnN0Owog
ICAgYm9vbCBtdXN0Q29weShsZW5ndGhfdHlwZSBuZXdMZW5ndGgsCiAgICAgICAgICAgICAgICAg
IGNvbnN0IElUZXh0U3RvcmFnZSogdGhhdCkgY29uc3Q7CgogICAgSVRleHRTdG9yYWdlKiBtYWtl
Q29weShsZW5ndGhfdHlwZSBuZXdDYXBhY2l0eSA9IDApOwoKICAgIElUZXh0U3RvcmFnZSogbWFr
ZUNvcHkob2Zmc2V0X3R5cGUgZ2FwUG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGhfdHlwZSBvbGRHYXBMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF90
eXBlIG9sZFRvdGFsTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlw
ZSBuZXdUb3RhbExlbmd0aCk7CgogICAgSVRleHRTdG9yYWdlKiBtb2RpZnlJblBsYWNlKG9mZnNl
dF90eXBlIGdhcFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlw
ZSBvbGRHYXBMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3R5
cGUgbmV3R2FwTGVuZ3RoKTsKCiAgICB2b2lkIHNldENhcGFjaXR5KGxlbmd0aF90eXBlIG5ld0Nh
cGFjaXR5KTsKICAgIHZvaWQgc2V0TGVuZ3RoKGxlbmd0aF90eXBlIG5ld0xlbmd0aCk7CiAgICB2
b2lkIHNldFN0eWxlcyhJU3R5bGVTdG9yYWdlKiBuZXdTdHlsZXMpOwoKICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZVRvU3RyZWFtKElEYXRhU3RyZWFtJiB0b1doZXJlKSBjb25zdDsKICAgIHZpcnR1YWwg
dm9pZCByZWFkRnJvbVN0cmVhbShJRGF0YVN0cmVhbSYgZnJvbVdoZXJlKTsKCiAgICBzdGF0aWMg
dm9pZCBmaWxsSW5JdGVyYXRvckZpZWxkcyhJRmFzdFRleHRJdGVyYXRvciYgaXRlcmF0b3IsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlDaGFyKiB0aGVDaGFyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pQ2hhciogZ2FwU3RhcnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfdHlwZSBnYXBMZW5ndGgpOwoK
cHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyBJU3RyZWFtSW5UZXh0U3RvcmFnZTsKCiAgICBJVGV4
dFN0b3JhZ2UmIG9wZXJhdG9yPShjb25zdCBJVGV4dFN0b3JhZ2UmIHRoYXQpOwoKICAgIGxlbmd0
aF90eXBlIGZMZW5ndGg7CiAgICBsZW5ndGhfdHlwZSBmQ2FwYWNpdHk7CiAgICBJU3RyaW5nICpm
OEJpdENoYXJDYWNoZTsKICAgIGxvbmcgZkhhc2g7CiAgICBJU3R5bGVTdG9yYWdlKiBmU3R5bGVz
Owp9OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGlu
Zyhwb3ApCgoKCgogCgogCmlubGluZSB2b2lkCklUZXh0U3RvcmFnZTo6ZHJvcCgpCnsKICAgIHJl
bW92ZVJlZigpOwp9CgppbmxpbmUgSVRleHRTdG9yYWdlOjpsZW5ndGhfdHlwZQpJVGV4dFN0b3Jh
Z2U6Omxlbmd0aCgpIGNvbnN0CnsKICAgIHJldHVybiBmTGVuZ3RoOwp9CgppbmxpbmUgSVRleHRT
dG9yYWdlOjpsZW5ndGhfdHlwZQpJVGV4dFN0b3JhZ2U6Om1heFNpemUoKSBjb25zdAp7CiAgICBy
ZXR1cm4gKGxlbmd0aF90eXBlKSgtMSkgLSAxOyAgCiAgICAgCn0KCmlubGluZSBJVGV4dFN0b3Jh
Z2U6Omxlbmd0aF90eXBlCklUZXh0U3RvcmFnZTo6Y2FwYWNpdHkoKSBjb25zdAp7CiAgICByZXR1
cm4gZkNhcGFjaXR5Owp9CgppbmxpbmUgdm9pZApJVGV4dFN0b3JhZ2U6OnNldENhcGFjaXR5KGxl
bmd0aF90eXBlIG5ld0NhcGFjaXR5KQp7CiAgICBmQ2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKfQoK
aW5saW5lIHZvaWQKSVRleHRTdG9yYWdlOjpzZXRMZW5ndGgobGVuZ3RoX3R5cGUgbmV3TGVuZ3Ro
KQp7CiAgICBmTGVuZ3RoID0gbmV3TGVuZ3RoOwp9CgogCgogCiNwcmFnbWEgaW5mbyhub25lKQoj
cHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgojIDMwICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0ZXh0LmlubCIg
MgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2l1Z25ybC5ocHAiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAK
CiAKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0Nf
SEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21h
IG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51
bSg0KQoKCgoKCgoKIAoKIAogCgogCmNsYXNzIFVMYXRpbjsKY2xhc3MgVU1vZGlmaWVyTGV0dGVy
OwpjbGFzcyBVQ29tYmluaW5nOwpjbGFzcyBVVW5pY29kZURpZ2l0OwpjbGFzcyBVQVNDSUk7CmNs
YXNzIFVMYXRpbjE7CmNsYXNzIFVHZW5lcmFsUHVuY3R1YXRpb247CmNsYXNzIFVVbmljb2RlU3Bl
Y2lhbDsKIAoKIAoKIAogCiAKCmNsYXNzIFVMYXRpbiB7CnB1YmxpYzoKICAgIGVudW0gRUxhdGlu
TmFtZXMgewogICAgICAgIGtDYXBpdGFsTGV0dGVyQSA9IDB4MDA0MSwKICAgICAgICBrQ2FwaXRh
bExldHRlckIgPSAweDAwNDIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJDID0gMHgwMDQzLAogICAg
ICAgIGtDYXBpdGFsTGV0dGVyRCA9IDB4MDA0NCwKICAgICAgICBrQ2FwaXRhbExldHRlckUgPSAw
eDAwNDUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJGID0gMHgwMDQ2LAogICAgICAgIGtDYXBpdGFs
TGV0dGVyRyA9IDB4MDA0NywKICAgICAgICBrQ2FwaXRhbExldHRlckggPSAweDAwNDgsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJJID0gMHgwMDQ5LAogICAgICAgIGtDYXBpdGFsTGV0dGVySiA9IDB4
MDA0QSwKICAgICAgICBrQ2FwaXRhbExldHRlcksgPSAweDAwNEIsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJMID0gMHgwMDRDLAogICAgICAgIGtDYXBpdGFsTGV0dGVyTSA9IDB4MDA0RCwKICAgICAg
ICBrQ2FwaXRhbExldHRlck4gPSAweDAwNEUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPID0gMHgw
MDRGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyUCA9IDB4MDA1MCwKICAgICAgICBrQ2FwaXRhbExl
dHRlclEgPSAweDAwNTEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJSID0gMHgwMDUyLAogICAgICAg
IGtDYXBpdGFsTGV0dGVyUyA9IDB4MDA1MywKICAgICAgICBrQ2FwaXRhbExldHRlclQgPSAweDAw
NTQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVID0gMHgwMDU1LAogICAgICAgIGtDYXBpdGFsTGV0
dGVyViA9IDB4MDA1NiwKICAgICAgICBrQ2FwaXRhbExldHRlclcgPSAweDAwNTcsCiAgICAgICAg
a0NhcGl0YWxMZXR0ZXJYID0gMHgwMDU4LAogICAgICAgIGtDYXBpdGFsTGV0dGVyWSA9IDB4MDA1
OSwKICAgICAgICBrQ2FwaXRhbExldHRlclogPSAweDAwNUEsCiAgICAgICAga1NtYWxsTGV0dGVy
QSA9IDB4MDA2MSwKICAgICAgICBrU21hbGxMZXR0ZXJCID0gMHgwMDYyLAogICAgICAgIGtTbWFs
bExldHRlckMgPSAweDAwNjMsCiAgICAgICAga1NtYWxsTGV0dGVyRCA9IDB4MDA2NCwKICAgICAg
ICBrU21hbGxMZXR0ZXJFID0gMHgwMDY1LAogICAgICAgIGtTbWFsbExldHRlckYgPSAweDAwNjYs
CiAgICAgICAga1NtYWxsTGV0dGVyRyA9IDB4MDA2NywKICAgICAgICBrU21hbGxMZXR0ZXJIID0g
MHgwMDY4LAogICAgICAgIGtTbWFsbExldHRlckkgPSAweDAwNjksCiAgICAgICAga1NtYWxsTGV0
dGVySiA9IDB4MDA2QSwKICAgICAgICBrU21hbGxMZXR0ZXJLID0gMHgwMDZCLAogICAgICAgIGtT
bWFsbExldHRlckwgPSAweDAwNkMsCiAgICAgICAga1NtYWxsTGV0dGVyTSA9IDB4MDA2RCwKICAg
ICAgICBrU21hbGxMZXR0ZXJOID0gMHgwMDZFLAogICAgICAgIGtTbWFsbExldHRlck8gPSAweDAw
NkYsCiAgICAgICAga1NtYWxsTGV0dGVyUCA9IDB4MDA3MCwKICAgICAgICBrU21hbGxMZXR0ZXJR
ID0gMHgwMDcxLAogICAgICAgIGtTbWFsbExldHRlclIgPSAweDAwNzIsCiAgICAgICAga1NtYWxs
TGV0dGVyUyA9IDB4MDA3MywKICAgICAgICBrU21hbGxMZXR0ZXJUID0gMHgwMDc0LAogICAgICAg
IGtTbWFsbExldHRlclUgPSAweDAwNzUsCiAgICAgICAga1NtYWxsTGV0dGVyViA9IDB4MDA3NiwK
ICAgICAgICBrU21hbGxMZXR0ZXJXID0gMHgwMDc3LAogICAgICAgIGtTbWFsbExldHRlclggPSAw
eDAwNzgsCiAgICAgICAga1NtYWxsTGV0dGVyWSA9IDB4MDA3OSwKICAgICAgICBrU21hbGxMZXR0
ZXJaID0gMHgwMDdBLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSA9IDB4MDBDMCwK
ICAgICAgICBrQ2FwaXRhbExldHRlckFXaXRoQWN1dGUgPSAweDAwQzEsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJBV2l0aENpcmN1bWZsZXggPSAweDAwQzIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJB
V2l0aFRpbGRlID0gMHgwMEMzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhEaWFlcmVzaXMg
PSAweDAwQzQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aFJpbmdBYm92ZSA9IDB4MDBDNSwK
ICAgICAgICBrQ2FwaXRhbExpZ2F0dXJlQWUgPSAweDAwQzYsCiAgICAgICAga0NhcGl0YWxMZXR0
ZXJDV2l0aENlZGlsbGEgPSAweDAwQzcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJFV2l0aEdyYXZl
ID0gMHgwMEM4LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhBY3V0ZSA9IDB4MDBDOSwKICAg
ICAgICBrQ2FwaXRhbExldHRlckVXaXRoQ2lyY3VtZmxleCA9IDB4MDBDQSwKICAgICAgICBrQ2Fw
aXRhbExldHRlckVXaXRoRGlhZXJlc2lzID0gMHgwMENCLAogICAgICAgIGtDYXBpdGFsTGV0dGVy
SVdpdGhHcmF2ZSA9IDB4MDBDQywKICAgICAgICBrQ2FwaXRhbExldHRlcklXaXRoQWN1dGUgPSAw
eDAwQ0QsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJJV2l0aENpcmN1bWZsZXggPSAweDAwQ0UsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJJV2l0aERpYWVyZXNpcyA9IDB4MDBDRiwKICAgICAgICBrQ2Fw
aXRhbExldHRlckV0aCA9IDB4MDBEMCwKICAgICAgICBrQ2FwaXRhbExldHRlck5XaXRoVGlsZGUg
PSAweDAwRDEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aEdyYXZlID0gMHgwMEQyLAogICAg
ICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhBY3V0ZSA9IDB4MDBEMywKICAgICAgICBrQ2FwaXRhbExl
dHRlck9XaXRoQ2lyY3VtZmxleCA9IDB4MDBENCwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRo
VGlsZGUgPSAweDAwRDUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aERpYWVyZXNpcyA9IDB4
MDBENiwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoU3Ryb2tlID0gMHgwMEQ4LAogICAgICAg
IGtDYXBpdGFsTGV0dGVyVVdpdGhHcmF2ZSA9IDB4MDBEOSwKICAgICAgICBrQ2FwaXRhbExldHRl
clVXaXRoQWN1dGUgPSAweDAwREEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aENpcmN1bWZs
ZXggPSAweDAwREIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aERpYWVyZXNpcyA9IDB4MDBE
QywKICAgICAgICBrQ2FwaXRhbExldHRlcllXaXRoQWN1dGUgPSAweDAwREQsCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJUaG9ybiA9IDB4MDBERSwKICAgICAgICBrU21hbGxMZXR0ZXJTaGFycFMgPSAw
eDAwREYsCiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhHcmF2ZSA9IDB4MDBFMCwKICAgICAgICBr
U21hbGxMZXR0ZXJBV2l0aEFjdXRlID0gMHgwMEUxLAogICAgICAgIGtTbWFsbExldHRlckFXaXRo
Q2lyY3VtZmxleCA9IDB4MDBFMiwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aFRpbGRlID0gMHgw
MEUzLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoRGlhZXJlc2lzID0gMHgwMEU0LAogICAgICAg
IGtTbWFsbExldHRlckFXaXRoUmluZ0Fib3ZlID0gMHgwMEU1LAogICAgICAgIGtTbWFsbExpZ2F0
dXJlQWUgPSAweDAwRTYsCiAgICAgICAga1NtYWxsTGV0dGVyQ1dpdGhDZWRpbGxhID0gMHgwMEU3
LAogICAgICAgIGtTbWFsbExldHRlckVXaXRoR3JhdmUgPSAweDAwRTgsCiAgICAgICAga1NtYWxs
TGV0dGVyRVdpdGhBY3V0ZSA9IDB4MDBFOSwKICAgICAgICBrU21hbGxMZXR0ZXJFV2l0aENpcmN1
bWZsZXggPSAweDAwRUEsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhEaWFlcmVzaXMgPSAweDAw
RUIsCiAgICAgICAga1NtYWxsTGV0dGVySVdpdGhHcmF2ZSA9IDB4MDBFQywKICAgICAgICBrU21h
bGxMZXR0ZXJJV2l0aEFjdXRlID0gMHgwMEVELAogICAgICAgIGtTbWFsbExldHRlcklXaXRoQ2ly
Y3VtZmxleCA9IDB4MDBFRSwKICAgICAgICBrU21hbGxMZXR0ZXJJV2l0aERpYWVyZXNpcyA9IDB4
MDBFRiwKICAgICAgICBrU21hbGxMZXR0ZXJFdGggPSAweDAwRjAsCiAgICAgICAga1NtYWxsTGV0
dGVyTldpdGhUaWxkZSA9IDB4MDBGMSwKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aEdyYXZlID0g
MHgwMEYyLAogICAgICAgIGtTbWFsbExldHRlck9XaXRoQWN1dGUgPSAweDAwRjMsCiAgICAgICAg
a1NtYWxsTGV0dGVyT1dpdGhDaXJjdW1mbGV4ID0gMHgwMEY0LAogICAgICAgIGtTbWFsbExldHRl
ck9XaXRoVGlsZGUgPSAweDAwRjUsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhEaWFlcmVzaXMg
PSAweDAwRjYsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhTdHJva2UgPSAweDAwRjgsCiAgICAg
ICAga1NtYWxsTGV0dGVyVVdpdGhHcmF2ZSA9IDB4MDBGOSwKICAgICAgICBrU21hbGxMZXR0ZXJV
V2l0aEFjdXRlID0gMHgwMEZBLAogICAgICAgIGtTbWFsbExldHRlclVXaXRoQ2lyY3VtZmxleCA9
IDB4MDBGQiwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aERpYWVyZXNpcyA9IDB4MDBGQywKICAg
ICAgICBrU21hbGxMZXR0ZXJZV2l0aEFjdXRlID0gMHgwMEZELAogICAgICAgIGtTbWFsbExldHRl
clRob3JuID0gMHgwMEZFLAogICAgICAgIGtTbWFsbExldHRlcllXaXRoRGlhZXJlc2lzID0gMHgw
MEZGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhNYWNyb24gPSAweDAxMDAsCiAgICAgICAg
a1NtYWxsTGV0dGVyQVdpdGhNYWNyb24gPSAweDAxMDEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJB
V2l0aEJyZXZlID0gMHgwMTAyLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoQnJldmUgPSAweDAx
MDMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aE9nb25layA9IDB4MDEwNCwKICAgICAgICBr
U21hbGxMZXR0ZXJBV2l0aE9nb25layA9IDB4MDEwNSwKICAgICAgICBrQ2FwaXRhbExldHRlckNX
aXRoQWN1dGUgPSAweDAxMDYsCiAgICAgICAga1NtYWxsTGV0dGVyQ1dpdGhBY3V0ZSA9IDB4MDEw
NywKICAgICAgICBrQ2FwaXRhbExldHRlckNXaXRoQ2lyY3VtZmxleCA9IDB4MDEwOCwKICAgICAg
ICBrU21hbGxMZXR0ZXJDV2l0aENpcmN1bWZsZXggPSAweDAxMDksCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJDV2l0aERvdEFib3ZlID0gMHgwMTBBLAogICAgICAgIGtTbWFsbExldHRlckNXaXRoRG90
QWJvdmUgPSAweDAxMEIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJDV2l0aENhcm9uID0gMHgwMTBD
LAogICAgICAgIGtTbWFsbExldHRlckNXaXRoQ2Fyb24gPSAweDAxMEQsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJEV2l0aENhcm9uID0gMHgwMTBFLAogICAgICAgIGtTbWFsbExldHRlckRXaXRoQ2Fy
b24gPSAweDAxMEYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJEV2l0aFN0cm9rZSA9IDB4MDExMCwK
ICAgICAgICBrU21hbGxMZXR0ZXJEV2l0aFN0cm9rZSA9IDB4MDExMSwKICAgICAgICBrQ2FwaXRh
bExldHRlckVXaXRoTWFjcm9uID0gMHgwMTEyLAogICAgICAgIGtTbWFsbExldHRlckVXaXRoTWFj
cm9uID0gMHgwMTEzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhCcmV2ZSA9IDB4MDExNCwK
ICAgICAgICBrU21hbGxMZXR0ZXJFV2l0aEJyZXZlID0gMHgwMTE1LAogICAgICAgIGtDYXBpdGFs
TGV0dGVyRVdpdGhEb3RBYm92ZSA9IDB4MDExNiwKICAgICAgICBrU21hbGxMZXR0ZXJFV2l0aERv
dEFib3ZlID0gMHgwMTE3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhPZ29uZWsgPSAweDAx
MTgsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhPZ29uZWsgPSAweDAxMTksCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJFV2l0aENhcm9uID0gMHgwMTFBLAogICAgICAgIGtTbWFsbExldHRlckVXaXRo
Q2Fyb24gPSAweDAxMUIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJHV2l0aENpcmN1bWZsZXggPSAw
eDAxMUMsCiAgICAgICAga1NtYWxsTGV0dGVyR1dpdGhDaXJjdW1mbGV4ID0gMHgwMTFELAogICAg
ICAgIGtDYXBpdGFsTGV0dGVyR1dpdGhCcmV2ZSA9IDB4MDExRSwKICAgICAgICBrU21hbGxMZXR0
ZXJHV2l0aEJyZXZlID0gMHgwMTFGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyR1dpdGhEb3RBYm92
ZSA9IDB4MDEyMCwKICAgICAgICBrU21hbGxMZXR0ZXJHV2l0aERvdEFib3ZlID0gMHgwMTIxLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyR1dpdGhDZWRpbGxhID0gMHgwMTIyLAogICAgICAgIGtTbWFs
bExldHRlckdXaXRoQ2VkaWxsYSA9IDB4MDEyMywKICAgICAgICBrQ2FwaXRhbExldHRlckhXaXRo
Q2lyY3VtZmxleCA9IDB4MDEyNCwKICAgICAgICBrU21hbGxMZXR0ZXJIV2l0aENpcmN1bWZsZXgg
PSAweDAxMjUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJIV2l0aFN0cm9rZSA9IDB4MDEyNiwKICAg
ICAgICBrU21hbGxMZXR0ZXJIV2l0aFN0cm9rZSA9IDB4MDEyNywKICAgICAgICBrQ2FwaXRhbExl
dHRlcklXaXRoVGlsZGUgPSAweDAxMjgsCiAgICAgICAga1NtYWxsTGV0dGVySVdpdGhUaWxkZSA9
IDB4MDEyOSwKICAgICAgICBrQ2FwaXRhbExldHRlcklXaXRoTWFjcm9uID0gMHgwMTJBLAogICAg
ICAgIGtTbWFsbExldHRlcklXaXRoTWFjcm9uID0gMHgwMTJCLAogICAgICAgIGtDYXBpdGFsTGV0
dGVySVdpdGhCcmV2ZSA9IDB4MDEyQywKICAgICAgICBrU21hbGxMZXR0ZXJJV2l0aEJyZXZlID0g
MHgwMTJELAogICAgICAgIGtDYXBpdGFsTGV0dGVySVdpdGhPZ29uZWsgPSAweDAxMkUsCiAgICAg
ICAga1NtYWxsTGV0dGVySVdpdGhPZ29uZWsgPSAweDAxMkYsCiAgICAgICAga0NhcGl0YWxMZXR0
ZXJJV2l0aERvdEFib3ZlID0gMHgwMTMwLAogICAgICAgIGtTbWFsbExldHRlckRvdGxlc3NJID0g
MHgwMTMxLAogICAgICAgIGtDYXBpdGFsTGlnYXR1cmVJaiA9IDB4MDEzMiwKICAgICAgICBrU21h
bGxMaWdhdHVyZUlqID0gMHgwMTMzLAogICAgICAgIGtDYXBpdGFsTGV0dGVySldpdGhDaXJjdW1m
bGV4ID0gMHgwMTM0LAogICAgICAgIGtTbWFsbExldHRlckpXaXRoQ2lyY3VtZmxleCA9IDB4MDEz
NSwKICAgICAgICBrQ2FwaXRhbExldHRlcktXaXRoQ2VkaWxsYSA9IDB4MDEzNiwKICAgICAgICBr
U21hbGxMZXR0ZXJLV2l0aENlZGlsbGEgPSAweDAxMzcsCiAgICAgICAga1NtYWxsTGV0dGVyS3Jh
ID0gMHgwMTM4LAogICAgICAgIGtDYXBpdGFsTGV0dGVyTFdpdGhBY3V0ZSA9IDB4MDEzOSwKICAg
ICAgICBrU21hbGxMZXR0ZXJMV2l0aEFjdXRlID0gMHgwMTNBLAogICAgICAgIGtDYXBpdGFsTGV0
dGVyTFdpdGhDZWRpbGxhID0gMHgwMTNCLAogICAgICAgIGtTbWFsbExldHRlckxXaXRoQ2VkaWxs
YSA9IDB4MDEzQywKICAgICAgICBrQ2FwaXRhbExldHRlckxXaXRoQ2Fyb24gPSAweDAxM0QsCiAg
ICAgICAga1NtYWxsTGV0dGVyTFdpdGhDYXJvbiA9IDB4MDEzRSwKICAgICAgICBrQ2FwaXRhbExl
dHRlckxXaXRoTWlkZGxlRG90ID0gMHgwMTNGLAogICAgICAgIGtTbWFsbExldHRlckxXaXRoTWlk
ZGxlRG90ID0gMHgwMTQwLAogICAgICAgIGtDYXBpdGFsTGV0dGVyTFdpdGhTdHJva2UgPSAweDAx
NDEsCiAgICAgICAga1NtYWxsTGV0dGVyTFdpdGhTdHJva2UgPSAweDAxNDIsCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJOV2l0aEFjdXRlID0gMHgwMTQzLAogICAgICAgIGtTbWFsbExldHRlck5XaXRo
QWN1dGUgPSAweDAxNDQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJOV2l0aENlZGlsbGEgPSAweDAx
NDUsCiAgICAgICAga1NtYWxsTGV0dGVyTldpdGhDZWRpbGxhID0gMHgwMTQ2LAogICAgICAgIGtD
YXBpdGFsTGV0dGVyTldpdGhDYXJvbiA9IDB4MDE0NywKICAgICAgICBrU21hbGxMZXR0ZXJOV2l0
aENhcm9uID0gMHgwMTQ4LAogICAgICAgIGtTbWFsbExldHRlck5QcmVjZWRlZEJ5QXBvc3Ryb3Bo
ZSA9IDB4MDE0OSwKICAgICAgICBrQ2FwaXRhbExldHRlckVuZyA9IDB4MDE0QSwKICAgICAgICBr
U21hbGxMZXR0ZXJFbmcgPSAweDAxNEIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aE1hY3Jv
biA9IDB4MDE0QywKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aE1hY3JvbiA9IDB4MDE0RCwKICAg
ICAgICBrQ2FwaXRhbExldHRlck9XaXRoQnJldmUgPSAweDAxNEUsCiAgICAgICAga1NtYWxsTGV0
dGVyT1dpdGhCcmV2ZSA9IDB4MDE0RiwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoRG91Ymxl
QWN1dGUgPSAweDAxNTAsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhEb3VibGVBY3V0ZSA9IDB4
MDE1MSwKICAgICAgICBrQ2FwaXRhbExpZ2F0dXJlT2UgPSAweDAxNTIsCiAgICAgICAga1NtYWxs
TGlnYXR1cmVPZSA9IDB4MDE1MywKICAgICAgICBrQ2FwaXRhbExldHRlclJXaXRoQWN1dGUgPSAw
eDAxNTQsCiAgICAgICAga1NtYWxsTGV0dGVyUldpdGhBY3V0ZSA9IDB4MDE1NSwKICAgICAgICBr
Q2FwaXRhbExldHRlclJXaXRoQ2VkaWxsYSA9IDB4MDE1NiwKICAgICAgICBrU21hbGxMZXR0ZXJS
V2l0aENlZGlsbGEgPSAweDAxNTcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJSV2l0aENhcm9uID0g
MHgwMTU4LAogICAgICAgIGtTbWFsbExldHRlclJXaXRoQ2Fyb24gPSAweDAxNTksCiAgICAgICAg
a0NhcGl0YWxMZXR0ZXJTV2l0aEFjdXRlID0gMHgwMTVBLAogICAgICAgIGtTbWFsbExldHRlclNX
aXRoQWN1dGUgPSAweDAxNUIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJTV2l0aENpcmN1bWZsZXgg
PSAweDAxNUMsCiAgICAgICAga1NtYWxsTGV0dGVyU1dpdGhDaXJjdW1mbGV4ID0gMHgwMTVELAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyU1dpdGhDZWRpbGxhID0gMHgwMTVFLAogICAgICAgIGtTbWFs
bExldHRlclNXaXRoQ2VkaWxsYSA9IDB4MDE1RiwKICAgICAgICBrQ2FwaXRhbExldHRlclNXaXRo
Q2Fyb24gPSAweDAxNjAsCiAgICAgICAga1NtYWxsTGV0dGVyU1dpdGhDYXJvbiA9IDB4MDE2MSwK
ICAgICAgICBrQ2FwaXRhbExldHRlclRXaXRoQ2VkaWxsYSA9IDB4MDE2MiwKICAgICAgICBrU21h
bGxMZXR0ZXJUV2l0aENlZGlsbGEgPSAweDAxNjMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJUV2l0
aENhcm9uID0gMHgwMTY0LAogICAgICAgIGtTbWFsbExldHRlclRXaXRoQ2Fyb24gPSAweDAxNjUs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJUV2l0aFN0cm9rZSA9IDB4MDE2NiwKICAgICAgICBrU21h
bGxMZXR0ZXJUV2l0aFN0cm9rZSA9IDB4MDE2NywKICAgICAgICBrQ2FwaXRhbExldHRlclVXaXRo
VGlsZGUgPSAweDAxNjgsCiAgICAgICAga1NtYWxsTGV0dGVyVVdpdGhUaWxkZSA9IDB4MDE2OSwK
ICAgICAgICBrQ2FwaXRhbExldHRlclVXaXRoTWFjcm9uID0gMHgwMTZBLAogICAgICAgIGtTbWFs
bExldHRlclVXaXRoTWFjcm9uID0gMHgwMTZCLAogICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhC
cmV2ZSA9IDB4MDE2QywKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aEJyZXZlID0gMHgwMTZELAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhSaW5nQWJvdmUgPSAweDAxNkUsCiAgICAgICAga1Nt
YWxsTGV0dGVyVVdpdGhSaW5nQWJvdmUgPSAweDAxNkYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJV
V2l0aERvdWJsZUFjdXRlID0gMHgwMTcwLAogICAgICAgIGtTbWFsbExldHRlclVXaXRoRG91Ymxl
QWN1dGUgPSAweDAxNzEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aE9nb25layA9IDB4MDE3
MiwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aE9nb25layA9IDB4MDE3MywKICAgICAgICBrQ2Fw
aXRhbExldHRlcldXaXRoQ2lyY3VtZmxleCA9IDB4MDE3NCwKICAgICAgICBrU21hbGxMZXR0ZXJX
V2l0aENpcmN1bWZsZXggPSAweDAxNzUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJZV2l0aENpcmN1
bWZsZXggPSAweDAxNzYsCiAgICAgICAga1NtYWxsTGV0dGVyWVdpdGhDaXJjdW1mbGV4ID0gMHgw
MTc3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyWVdpdGhEaWFlcmVzaXMgPSAweDAxNzgsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJaV2l0aEFjdXRlID0gMHgwMTc5LAogICAgICAgIGtTbWFsbExldHRl
clpXaXRoQWN1dGUgPSAweDAxN0EsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJaV2l0aERvdEFib3Zl
ID0gMHgwMTdCLAogICAgICAgIGtTbWFsbExldHRlclpXaXRoRG90QWJvdmUgPSAweDAxN0MsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJaV2l0aENhcm9uID0gMHgwMTdELAogICAgICAgIGtTbWFsbExl
dHRlclpXaXRoQ2Fyb24gPSAweDAxN0UsCiAgICAgICAga1NtYWxsTGV0dGVyTG9uZ1MgPSAweDAx
N0YsCiAgICAgICAga1NtYWxsTGV0dGVyQldpdGhTdHJva2UgPSAweDAxODAsCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJCV2l0aEhvb2sgPSAweDAxODEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJCV2l0
aFRvcGJhciA9IDB4MDE4MiwKICAgICAgICBrU21hbGxMZXR0ZXJCV2l0aFRvcGJhciA9IDB4MDE4
MywKICAgICAgICBrQ2FwaXRhbExldHRlclRvbmVTaXggPSAweDAxODQsCiAgICAgICAga1NtYWxs
TGV0dGVyVG9uZVNpeCA9IDB4MDE4NSwKICAgICAgICBrQ2FwaXRhbExldHRlck9wZW5PID0gMHgw
MTg2LAogICAgICAgIGtDYXBpdGFsTGV0dGVyQ1dpdGhIb29rID0gMHgwMTg3LAogICAgICAgIGtT
bWFsbExldHRlckNXaXRoSG9vayA9IDB4MDE4OCwKICAgICAgICBrQ2FwaXRhbExldHRlckFmcmlj
YW5EID0gMHgwMTg5LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRFdpdGhIb29rID0gMHgwMThBLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyRFdpdGhUb3BiYXIgPSAweDAxOEIsCiAgICAgICAga1NtYWxs
TGV0dGVyRFdpdGhUb3BiYXIgPSAweDAxOEMsCiAgICAgICAga1NtYWxsTGV0dGVyVHVybmVkRGVs
dGEgPSAweDAxOEQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJSZXZlcnNlZEUgPSAweDAxOEUsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJTY2h3YSA9IDB4MDE4RiwKICAgICAgICBrQ2FwaXRhbExldHRl
ck9wZW5FID0gMHgwMTkwLAogICAgICAgIGtDYXBpdGFsTGV0dGVyRldpdGhIb29rID0gMHgwMTkx
LAogICAgICAgIGtTbWFsbExldHRlckZXaXRoSG9vayA9IDB4MDE5MiwKICAgICAgICBrQ2FwaXRh
bExldHRlckdXaXRoSG9vayA9IDB4MDE5MywKICAgICAgICBrQ2FwaXRhbExldHRlckdhbW1hID0g
MHgwMTk0LAogICAgICAgIGtTbWFsbExldHRlckh2ID0gMHgwMTk1LAogICAgICAgIGtDYXBpdGFs
TGV0dGVySW90YSA9IDB4MDE5NiwKICAgICAgICBrQ2FwaXRhbExldHRlcklXaXRoU3Ryb2tlID0g
MHgwMTk3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyS1dpdGhIb29rID0gMHgwMTk4LAogICAgICAg
IGtTbWFsbExldHRlcktXaXRoSG9vayA9IDB4MDE5OSwKICAgICAgICBrU21hbGxMZXR0ZXJMV2l0
aEJhciA9IDB4MDE5QSwKICAgICAgICBrU21hbGxMZXR0ZXJMYW1iZGFXaXRoU3Ryb2tlID0gMHgw
MTlCLAogICAgICAgIGtDYXBpdGFsTGV0dGVyVHVybmVkTSA9IDB4MDE5QywKICAgICAgICBrQ2Fw
aXRhbExldHRlck5XaXRoTGVmdEhvb2sgPSAweDAxOUQsCiAgICAgICAga1NtYWxsTGV0dGVyTldp
dGhMb25nUmlnaHRMZWcgPSAweDAxOUUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aE1pZGRs
ZVRpbGRlID0gMHgwMTlGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhIb3JuID0gMHgwMUEw
LAogICAgICAgIGtTbWFsbExldHRlck9XaXRoSG9ybiA9IDB4MDFBMSwKICAgICAgICBrQ2FwaXRh
bExldHRlck9pID0gMHgwMUEyLAogICAgICAgIGtTbWFsbExldHRlck9pID0gMHgwMUEzLAogICAg
ICAgIGtDYXBpdGFsTGV0dGVyUFdpdGhIb29rID0gMHgwMUE0LAogICAgICAgIGtTbWFsbExldHRl
clBXaXRoSG9vayA9IDB4MDFBNSwKICAgICAgICBrTGV0dGVyWXIgPSAweDAxQTYsCiAgICAgICAg
a0NhcGl0YWxMZXR0ZXJUb25lVHdvID0gMHgwMUE3LAogICAgICAgIGtTbWFsbExldHRlclRvbmVU
d28gPSAweDAxQTgsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJFc2ggPSAweDAxQTksCiAgICAgICAg
a0xldHRlclJldmVyc2VkRXNoTG9vcCA9IDB4MDFBQSwKICAgICAgICBrU21hbGxMZXR0ZXJUV2l0
aFBhbGF0YWxIb29rID0gMHgwMUFCLAogICAgICAgIGtDYXBpdGFsTGV0dGVyVFdpdGhIb29rID0g
MHgwMUFDLAogICAgICAgIGtTbWFsbExldHRlclRXaXRoSG9vayA9IDB4MDFBRCwKICAgICAgICBr
Q2FwaXRhbExldHRlclRXaXRoUmV0cm9mbGV4SG9vayA9IDB4MDFBRSwKICAgICAgICBrQ2FwaXRh
bExldHRlclVXaXRoSG9ybiA9IDB4MDFBRiwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aEhvcm4g
PSAweDAxQjAsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVcHNpbG9uID0gMHgwMUIxLAogICAgICAg
IGtDYXBpdGFsTGV0dGVyVldpdGhIb29rID0gMHgwMUIyLAogICAgICAgIGtDYXBpdGFsTGV0dGVy
WVdpdGhIb29rID0gMHgwMUIzLAogICAgICAgIGtTbWFsbExldHRlcllXaXRoSG9vayA9IDB4MDFC
NCwKICAgICAgICBrQ2FwaXRhbExldHRlclpXaXRoU3Ryb2tlID0gMHgwMUI1LAogICAgICAgIGtT
bWFsbExldHRlclpXaXRoU3Ryb2tlID0gMHgwMUI2LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRXpo
ID0gMHgwMUI3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRXpoUmV2ZXJzZWQgPSAweDAxQjgsCiAg
ICAgICAga1NtYWxsTGV0dGVyRXpoUmV2ZXJzZWQgPSAweDAxQjksCiAgICAgICAga1NtYWxsTGV0
dGVyRXpoV2l0aFRhaWwgPSAweDAxQkEsCiAgICAgICAga0xldHRlclR3b1dpdGhTdHJva2UgPSAw
eDAxQkIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJUb25lRml2ZSA9IDB4MDFCQywKICAgICAgICBr
U21hbGxMZXR0ZXJUb25lRml2ZSA9IDB4MDFCRCwKICAgICAgICBrTGV0dGVySW52ZXJ0ZWRHbG90
dGFsU3RvcFdpdGhTdHJva2UgPSAweDAxQkUsCiAgICAgICAga0xldHRlcld5bm4gPSAweDAxQkYs
CiAgICAgICAga0xldHRlckRlbnRhbENsaWNrID0gMHgwMUMwLAogICAgICAgIGtMZXR0ZXJMYXRl
cmFsQ2xpY2sgPSAweDAxQzEsCiAgICAgICAga0xldHRlckFsdmVvbGFyQ2xpY2sgPSAweDAxQzIs
CiAgICAgICAga0xldHRlclJldHJvZmxleENsaWNrID0gMHgwMUMzLAogICAgICAgIGtDYXBpdGFs
TGV0dGVyRHpXaXRoQ2Fyb24gPSAweDAxQzQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJEV2l0aFNt
YWxsTGV0dGVyWldpdGhDYXJvbiA9IDB4MDFDNSwKICAgICAgICBrU21hbGxMZXR0ZXJEeldpdGhD
YXJvbiA9IDB4MDFDNiwKICAgICAgICBrQ2FwaXRhbExldHRlckxqID0gMHgwMUM3LAogICAgICAg
IGtDYXBpdGFsTGV0dGVyTFdpdGhTbWFsbExldHRlckogPSAweDAxQzgsCiAgICAgICAga1NtYWxs
TGV0dGVyTGogPSAweDAxQzksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJOaiA9IDB4MDFDQSwKICAg
ICAgICBrQ2FwaXRhbExldHRlck5XaXRoU21hbGxMZXR0ZXJKID0gMHgwMUNCLAogICAgICAgIGtT
bWFsbExldHRlck5qID0gMHgwMUNDLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhDYXJvbiA9
IDB4MDFDRCwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aENhcm9uID0gMHgwMUNFLAogICAgICAg
IGtDYXBpdGFsTGV0dGVySVdpdGhDYXJvbiA9IDB4MDFDRiwKICAgICAgICBrU21hbGxMZXR0ZXJJ
V2l0aENhcm9uID0gMHgwMUQwLAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhDYXJvbiA9IDB4
MDFEMSwKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aENhcm9uID0gMHgwMUQyLAogICAgICAgIGtD
YXBpdGFsTGV0dGVyVVdpdGhDYXJvbiA9IDB4MDFEMywKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0
aENhcm9uID0gMHgwMUQ0LAogICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhEaWFlcmVzaXNBbmRN
YWNyb24gPSAweDAxRDUsCiAgICAgICAga1NtYWxsTGV0dGVyVVdpdGhEaWFlcmVzaXNBbmRNYWNy
b24gPSAweDAxRDYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aERpYWVyZXNpc0FuZEFjdXRl
ID0gMHgwMUQ3LAogICAgICAgIGtTbWFsbExldHRlclVXaXRoRGlhZXJlc2lzQW5kQWN1dGUgPSAw
eDAxRDgsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aERpYWVyZXNpc0FuZENhcm9uID0gMHgw
MUQ5LAogICAgICAgIGtTbWFsbExldHRlclVXaXRoRGlhZXJlc2lzQW5kQ2Fyb24gPSAweDAxREEs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aERpYWVyZXNpc0FuZEdyYXZlID0gMHgwMURCLAog
ICAgICAgIGtTbWFsbExldHRlclVXaXRoRGlhZXJlc2lzQW5kR3JhdmUgPSAweDAxREMsCiAgICAg
ICAga1NtYWxsTGV0dGVyVHVybmVkRSA9IDB4MDFERCwKICAgICAgICBrQ2FwaXRhbExldHRlckFX
aXRoRGlhZXJlc2lzQW5kTWFjcm9uID0gMHgwMURFLAogICAgICAgIGtTbWFsbExldHRlckFXaXRo
RGlhZXJlc2lzQW5kTWFjcm9uID0gMHgwMURGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhE
b3RBYm92ZUFuZE1hY3JvbiA9IDB4MDFFMCwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aERvdEFi
b3ZlQW5kTWFjcm9uID0gMHgwMUUxLAogICAgICAgIGtDYXBpdGFsTGlnYXR1cmVBZVdpdGhNYWNy
b24gPSAweDAxRTIsCiAgICAgICAga1NtYWxsTGlnYXR1cmVBZVdpdGhNYWNyb24gPSAweDAxRTMs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJHV2l0aFN0cm9rZSA9IDB4MDFFNCwKICAgICAgICBrU21h
bGxMZXR0ZXJHV2l0aFN0cm9rZSA9IDB4MDFFNSwKICAgICAgICBrQ2FwaXRhbExldHRlckdXaXRo
Q2Fyb24gPSAweDAxRTYsCiAgICAgICAga1NtYWxsTGV0dGVyR1dpdGhDYXJvbiA9IDB4MDFFNywK
ICAgICAgICBrQ2FwaXRhbExldHRlcktXaXRoQ2Fyb24gPSAweDAxRTgsCiAgICAgICAga1NtYWxs
TGV0dGVyS1dpdGhDYXJvbiA9IDB4MDFFOSwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoT2dv
bmVrID0gMHgwMUVBLAogICAgICAgIGtTbWFsbExldHRlck9XaXRoT2dvbmVrID0gMHgwMUVCLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhPZ29uZWtBbmRNYWNyb24gPSAweDAxRUMsCiAgICAg
ICAga1NtYWxsTGV0dGVyT1dpdGhPZ29uZWtBbmRNYWNyb24gPSAweDAxRUQsCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJFemhXaXRoQ2Fyb24gPSAweDAxRUUsCiAgICAgICAga1NtYWxsTGV0dGVyRXpo
V2l0aENhcm9uID0gMHgwMUVGLAogICAgICAgIGtTbWFsbExldHRlckpXaXRoQ2Fyb24gPSAweDAx
RjAsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJEeiA9IDB4MDFGMSwKICAgICAgICBrQ2FwaXRhbExl
dHRlckRXaXRoU21hbGxMZXR0ZXJaID0gMHgwMUYyLAogICAgICAgIGtTbWFsbExldHRlckR6ID0g
MHgwMUYzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyR1dpdGhBY3V0ZSA9IDB4MDFGNCwKICAgICAg
ICBrU21hbGxMZXR0ZXJHV2l0aEFjdXRlID0gMHgwMUY1LAogICAgICAgIGtDYXBpdGFsTGV0dGVy
QVdpdGhSaW5nQWJvdmVBbmRBY3V0ZSA9IDB4MDFGQSwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0
aFJpbmdBYm92ZUFuZEFjdXRlID0gMHgwMUZCLAogICAgICAgIGtDYXBpdGFsTGlnYXR1cmVBZVdp
dGhBY3V0ZSA9IDB4MDFGQywKICAgICAgICBrU21hbGxMaWdhdHVyZUFlV2l0aEFjdXRlID0gMHgw
MUZELAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhTdHJva2VBbmRBY3V0ZSA9IDB4MDFGRSwK
ICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aFN0cm9rZUFuZEFjdXRlID0gMHgwMUZGLAogICAgICAg
IGtDYXBpdGFsTGV0dGVyQVdpdGhEb3VibGVHcmF2ZSA9IDB4MDIwMCwKICAgICAgICBrU21hbGxM
ZXR0ZXJBV2l0aERvdWJsZUdyYXZlID0gMHgwMjAxLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdp
dGhJbnZlcnRlZEJyZXZlID0gMHgwMjAyLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoSW52ZXJ0
ZWRCcmV2ZSA9IDB4MDIwMywKICAgICAgICBrQ2FwaXRhbExldHRlckVXaXRoRG91YmxlR3JhdmUg
PSAweDAyMDQsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhEb3VibGVHcmF2ZSA9IDB4MDIwNSwK
ICAgICAgICBrQ2FwaXRhbExldHRlckVXaXRoSW52ZXJ0ZWRCcmV2ZSA9IDB4MDIwNiwKICAgICAg
ICBrU21hbGxMZXR0ZXJFV2l0aEludmVydGVkQnJldmUgPSAweDAyMDcsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJJV2l0aERvdWJsZUdyYXZlID0gMHgwMjA4LAogICAgICAgIGtTbWFsbExldHRlcklX
aXRoRG91YmxlR3JhdmUgPSAweDAyMDksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJJV2l0aEludmVy
dGVkQnJldmUgPSAweDAyMEEsCiAgICAgICAga1NtYWxsTGV0dGVySVdpdGhJbnZlcnRlZEJyZXZl
ID0gMHgwMjBCLAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhEb3VibGVHcmF2ZSA9IDB4MDIw
QywKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aERvdWJsZUdyYXZlID0gMHgwMjBELAogICAgICAg
IGtDYXBpdGFsTGV0dGVyT1dpdGhJbnZlcnRlZEJyZXZlID0gMHgwMjBFLAogICAgICAgIGtTbWFs
bExldHRlck9XaXRoSW52ZXJ0ZWRCcmV2ZSA9IDB4MDIwRiwKICAgICAgICBrQ2FwaXRhbExldHRl
clJXaXRoRG91YmxlR3JhdmUgPSAweDAyMTAsCiAgICAgICAga1NtYWxsTGV0dGVyUldpdGhEb3Vi
bGVHcmF2ZSA9IDB4MDIxMSwKICAgICAgICBrQ2FwaXRhbExldHRlclJXaXRoSW52ZXJ0ZWRCcmV2
ZSA9IDB4MDIxMiwKICAgICAgICBrU21hbGxMZXR0ZXJSV2l0aEludmVydGVkQnJldmUgPSAweDAy
MTMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aERvdWJsZUdyYXZlID0gMHgwMjE0LAogICAg
ICAgIGtTbWFsbExldHRlclVXaXRoRG91YmxlR3JhdmUgPSAweDAyMTUsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJVV2l0aEludmVydGVkQnJldmUgPSAweDAyMTYsCiAgICAgICAga1NtYWxsTGV0dGVy
VVdpdGhJbnZlcnRlZEJyZXZlID0gMHgwMjE3LAogICAgICAgIGtTbWFsbExldHRlclR1cm5lZEEg
PSAweDAyNTAsCiAgICAgICAga1NtYWxsTGV0dGVyQWxwaGEgPSAweDAyNTEsCiAgICAgICAga1Nt
YWxsTGV0dGVyVHVybmVkQWxwaGEgPSAweDAyNTIsCiAgICAgICAga1NtYWxsTGV0dGVyQldpdGhI
b29rID0gMHgwMjUzLAogICAgICAgIGtTbWFsbExldHRlck9wZW5PID0gMHgwMjU0LAogICAgICAg
IGtTbWFsbExldHRlckNXaXRoQ3VybCA9IDB4MDI1NSwKICAgICAgICBrU21hbGxMZXR0ZXJEV2l0
aFRhaWwgPSAweDAyNTYsCiAgICAgICAga1NtYWxsTGV0dGVyRFdpdGhIb29rID0gMHgwMjU3LAog
ICAgICAgIGtTbWFsbExldHRlclJldmVyc2VkRSA9IDB4MDI1OCwKICAgICAgICBrU21hbGxMZXR0
ZXJTY2h3YSA9IDB4MDI1OSwKICAgICAgICBrU21hbGxMZXR0ZXJTY2h3YVdpdGhIb29rID0gMHgw
MjVBLAogICAgICAgIGtTbWFsbExldHRlck9wZW5FID0gMHgwMjVCLAogICAgICAgIGtTbWFsbExl
dHRlclJldmVyc2VkT3BlbkUgPSAweDAyNUMsCiAgICAgICAga1NtYWxsTGV0dGVyUmV2ZXJzZWRP
cGVuRVdpdGhIb29rID0gMHgwMjVELAogICAgICAgIGtTbWFsbExldHRlckNsb3NlZFJldmVyc2Vk
T3BlbkUgPSAweDAyNUUsCiAgICAgICAga1NtYWxsTGV0dGVyRG90bGVzc0pXaXRoU3Ryb2tlID0g
MHgwMjVGLAogICAgICAgIGtTbWFsbExldHRlckdXaXRoSG9vayA9IDB4MDI2MCwKICAgICAgICBr
U21hbGxMZXR0ZXJTY3JpcHRHID0gMHgwMjYxLAogICAgICAgIGtMZXR0ZXJTbWFsbENhcGl0YWxH
ID0gMHgwMjYyLAogICAgICAgIGtTbWFsbExldHRlckdhbW1hID0gMHgwMjYzLAogICAgICAgIGtT
bWFsbExldHRlclJhbXNIb3JuID0gMHgwMjY0LAogICAgICAgIGtTbWFsbExldHRlclR1cm5lZEgg
PSAweDAyNjUsCiAgICAgICAga1NtYWxsTGV0dGVySFdpdGhIb29rID0gMHgwMjY2LAogICAgICAg
IGtTbWFsbExldHRlckhlbmdXaXRoSG9vayA9IDB4MDI2NywKICAgICAgICBrU21hbGxMZXR0ZXJJ
V2l0aFN0cm9rZSA9IDB4MDI2OCwKICAgICAgICBrU21hbGxMZXR0ZXJJb3RhID0gMHgwMjY5LAog
ICAgICAgIGtMZXR0ZXJTbWFsbENhcGl0YWxJID0gMHgwMjZBLAogICAgICAgIGtTbWFsbExldHRl
ckxXaXRoTWlkZGxlVGlsZGUgPSAweDAyNkIsCiAgICAgICAga1NtYWxsTGV0dGVyTFdpdGhCZWx0
ID0gMHgwMjZDLAogICAgICAgIGtTbWFsbExldHRlckxXaXRoUmV0cm9mbGV4SG9vayA9IDB4MDI2
RCwKICAgICAgICBrU21hbGxMZXR0ZXJMZXpoID0gMHgwMjZFLAogICAgICAgIGtTbWFsbExldHRl
clR1cm5lZE0gPSAweDAyNkYsCiAgICAgICAga1NtYWxsTGV0dGVyVHVybmVkTVdpdGhMb25nTGVn
ID0gMHgwMjcwLAogICAgICAgIGtTbWFsbExldHRlck1XaXRoSG9vayA9IDB4MDI3MSwKICAgICAg
ICBrU21hbGxMZXR0ZXJOV2l0aExlZnRIb29rID0gMHgwMjcyLAogICAgICAgIGtTbWFsbExldHRl
ck5XaXRoUmV0cm9mbGV4SG9vayA9IDB4MDI3MywKICAgICAgICBrTGV0dGVyU21hbGxDYXBpdGFs
TiA9IDB4MDI3NCwKICAgICAgICBrU21hbGxMZXR0ZXJCYXJyZWRPID0gMHgwMjc1LAogICAgICAg
IGtMZXR0ZXJTbWFsbENhcGl0YWxPZSA9IDB4MDI3NiwKICAgICAgICBrU21hbGxMZXR0ZXJDbG9z
ZWRPbWVnYSA9IDB4MDI3NywKICAgICAgICBrU21hbGxMZXR0ZXJQaGkgPSAweDAyNzgsCiAgICAg
ICAga1NtYWxsTGV0dGVyVHVybmVkUiA9IDB4MDI3OSwKICAgICAgICBrU21hbGxMZXR0ZXJUdXJu
ZWRSV2l0aExvbmdMZWcgPSAweDAyN0EsCiAgICAgICAga1NtYWxsTGV0dGVyVHVybmVkUldpdGhI
b29rID0gMHgwMjdCLAogICAgICAgIGtTbWFsbExldHRlclJXaXRoTG9uZ0xlZyA9IDB4MDI3QywK
ICAgICAgICBrU21hbGxMZXR0ZXJSV2l0aFRhaWwgPSAweDAyN0QsCiAgICAgICAga1NtYWxsTGV0
dGVyUldpdGhGaXNoaG9vayA9IDB4MDI3RSwKICAgICAgICBrU21hbGxMZXR0ZXJSZXZlcnNlZFJX
aXRoRmlzaGhvb2sgPSAweDAyN0YsCiAgICAgICAga0xldHRlclNtYWxsQ2FwaXRhbFIgPSAweDAy
ODAsCiAgICAgICAga0xldHRlclNtYWxsQ2FwaXRhbEludmVydGVkUiA9IDB4MDI4MSwKICAgICAg
ICBrU21hbGxMZXR0ZXJTV2l0aEhvb2sgPSAweDAyODIsCiAgICAgICAga1NtYWxsTGV0dGVyRXNo
ID0gMHgwMjgzLAogICAgICAgIGtTbWFsbExldHRlckRvdGxlc3NKV2l0aFN0cm9rZUFuZEhvb2sg
PSAweDAyODQsCiAgICAgICAga1NtYWxsTGV0dGVyU3F1YXRSZXZlcnNlZEVzaCA9IDB4MDI4NSwK
ICAgICAgICBrU21hbGxMZXR0ZXJFc2hXaXRoQ3VybCA9IDB4MDI4NiwKICAgICAgICBrU21hbGxM
ZXR0ZXJUdXJuZWRUID0gMHgwMjg3LAogICAgICAgIGtTbWFsbExldHRlclRXaXRoUmV0cm9mbGV4
SG9vayA9IDB4MDI4OCwKICAgICAgICBrU21hbGxMZXR0ZXJVQmFyID0gMHgwMjg5LAogICAgICAg
IGtTbWFsbExldHRlclVwc2lsb24gPSAweDAyOEEsCiAgICAgICAga1NtYWxsTGV0dGVyVldpdGhI
b29rID0gMHgwMjhCLAogICAgICAgIGtTbWFsbExldHRlclR1cm5lZFYgPSAweDAyOEMsCiAgICAg
ICAga1NtYWxsTGV0dGVyVHVybmVkVyA9IDB4MDI4RCwKICAgICAgICBrU21hbGxMZXR0ZXJUdXJu
ZWRZID0gMHgwMjhFLAogICAgICAgIGtMZXR0ZXJTbWFsbENhcGl0YWxZID0gMHgwMjhGLAogICAg
ICAgIGtTbWFsbExldHRlclpXaXRoUmV0cm9mbGV4SG9vayA9IDB4MDI5MCwKICAgICAgICBrU21h
bGxMZXR0ZXJaV2l0aEN1cmwgPSAweDAyOTEsCiAgICAgICAga1NtYWxsTGV0dGVyRXpoID0gMHgw
MjkyLAogICAgICAgIGtTbWFsbExldHRlckV6aFdpdGhDdXJsID0gMHgwMjkzLAogICAgICAgIGtM
ZXR0ZXJHbG90dGFsU3RvcCA9IDB4MDI5NCwKICAgICAgICBrTGV0dGVyUGhhcnluZ2VhbFZvaWNl
ZEZyaWNhdGl2ZSA9IDB4MDI5NSwKICAgICAgICBrTGV0dGVySW52ZXJ0ZWRHbG90dGFsU3RvcCA9
IDB4MDI5NiwKICAgICAgICBrTGV0dGVyU3RyZXRjaGVkQyA9IDB4MDI5NywKICAgICAgICBrTGV0
dGVyQmlsYWJpYWxDbGljayA9IDB4MDI5OCwKICAgICAgICBrTGV0dGVyU21hbGxDYXBpdGFsQiA9
IDB4MDI5OSwKICAgICAgICBrU21hbGxMZXR0ZXJDbG9zZWRPcGVuRSA9IDB4MDI5QSwKICAgICAg
ICBrTGV0dGVyU21hbGxDYXBpdGFsR1dpdGhIb29rID0gMHgwMjlCLAogICAgICAgIGtMZXR0ZXJT
bWFsbENhcGl0YWxIID0gMHgwMjlDLAogICAgICAgIGtTbWFsbExldHRlckpXaXRoQ3Jvc3NlZFRh
aWwgPSAweDAyOUQsCiAgICAgICAga1NtYWxsTGV0dGVyVHVybmVkSyA9IDB4MDI5RSwKICAgICAg
ICBrTGV0dGVyU21hbGxDYXBpdGFsTCA9IDB4MDI5RiwKICAgICAgICBrU21hbGxMZXR0ZXJRV2l0
aEhvb2sgPSAweDAyQTAsCiAgICAgICAga0xldHRlckdsb3R0YWxTdG9wV2l0aFN0cm9rZSA9IDB4
MDJBMSwKICAgICAgICBrTGV0dGVyUmV2ZXJzZWRHbG90dGFsU3RvcFdpdGhTdHJva2UgPSAweDAy
QTIsCiAgICAgICAga1NtYWxsTGV0dGVyRHpEaWdyYXBoID0gMHgwMkEzLAogICAgICAgIGtTbWFs
bExldHRlckRlemhEaWdyYXBoID0gMHgwMkE0LAogICAgICAgIGtTbWFsbExldHRlckR6RGlncmFw
aFdpdGhDdXJsID0gMHgwMkE1LAogICAgICAgIGtTbWFsbExldHRlclRzRGlncmFwaCA9IDB4MDJB
NiwKICAgICAgICBrU21hbGxMZXR0ZXJUZXNoRGlncmFwaCA9IDB4MDJBNywKICAgICAgICBrU21h
bGxMZXR0ZXJUY0RpZ3JhcGhXaXRoQ3VybCA9IDB4MDJBOCwKICAgICAgICBrQ2FwaXRhbExldHRl
ckFXaXRoUmluZ0JlbG93ID0gMHgxRTAwLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoUmluZ0Jl
bG93ID0gMHgxRTAxLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQldpdGhEb3RBYm92ZSA9IDB4MUUw
MiwKICAgICAgICBrU21hbGxMZXR0ZXJCV2l0aERvdEFib3ZlID0gMHgxRTAzLAogICAgICAgIGtD
YXBpdGFsTGV0dGVyQldpdGhEb3RCZWxvdyA9IDB4MUUwNCwKICAgICAgICBrU21hbGxMZXR0ZXJC
V2l0aERvdEJlbG93ID0gMHgxRTA1LAogICAgICAgIGtDYXBpdGFsTGV0dGVyQldpdGhMaW5lQmVs
b3cgPSAweDFFMDYsCiAgICAgICAga1NtYWxsTGV0dGVyQldpdGhMaW5lQmVsb3cgPSAweDFFMDcs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJDV2l0aENlZGlsbGFBbmRBY3V0ZSA9IDB4MUUwOCwKICAg
ICAgICBrU21hbGxMZXR0ZXJDV2l0aENlZGlsbGFBbmRBY3V0ZSA9IDB4MUUwOSwKICAgICAgICBr
Q2FwaXRhbExldHRlckRXaXRoRG90QWJvdmUgPSAweDFFMEEsCiAgICAgICAga1NtYWxsTGV0dGVy
RFdpdGhEb3RBYm92ZSA9IDB4MUUwQiwKICAgICAgICBrQ2FwaXRhbExldHRlckRXaXRoRG90QmVs
b3cgPSAweDFFMEMsCiAgICAgICAga1NtYWxsTGV0dGVyRFdpdGhEb3RCZWxvdyA9IDB4MUUwRCwK
ICAgICAgICBrQ2FwaXRhbExldHRlckRXaXRoTGluZUJlbG93ID0gMHgxRTBFLAogICAgICAgIGtT
bWFsbExldHRlckRXaXRoTGluZUJlbG93ID0gMHgxRTBGLAogICAgICAgIGtDYXBpdGFsTGV0dGVy
RFdpdGhDZWRpbGxhID0gMHgxRTEwLAogICAgICAgIGtTbWFsbExldHRlckRXaXRoQ2VkaWxsYSA9
IDB4MUUxMSwKICAgICAgICBrQ2FwaXRhbExldHRlckRXaXRoQ2lyY3VtZmxleEJlbG93ID0gMHgx
RTEyLAogICAgICAgIGtTbWFsbExldHRlckRXaXRoQ2lyY3VtZmxleEJlbG93ID0gMHgxRTEzLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhNYWNyb25BbmRHcmF2ZSA9IDB4MUUxNCwKICAgICAg
ICBrU21hbGxMZXR0ZXJFV2l0aE1hY3JvbkFuZEdyYXZlID0gMHgxRTE1LAogICAgICAgIGtDYXBp
dGFsTGV0dGVyRVdpdGhNYWNyb25BbmRBY3V0ZSA9IDB4MUUxNiwKICAgICAgICBrU21hbGxMZXR0
ZXJFV2l0aE1hY3JvbkFuZEFjdXRlID0gMHgxRTE3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdp
dGhDaXJjdW1mbGV4QmVsb3cgPSAweDFFMTgsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhDaXJj
dW1mbGV4QmVsb3cgPSAweDFFMTksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJFV2l0aFRpbGRlQmVs
b3cgPSAweDFFMUEsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhUaWxkZUJlbG93ID0gMHgxRTFC
LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhDZWRpbGxhQW5kQnJldmUgPSAweDFFMUMsCiAg
ICAgICAga1NtYWxsTGV0dGVyRVdpdGhDZWRpbGxhQW5kQnJldmUgPSAweDFFMUQsCiAgICAgICAg
a0NhcGl0YWxMZXR0ZXJGV2l0aERvdEFib3ZlID0gMHgxRTFFLAogICAgICAgIGtTbWFsbExldHRl
ckZXaXRoRG90QWJvdmUgPSAweDFFMUYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJHV2l0aE1hY3Jv
biA9IDB4MUUyMCwKICAgICAgICBrU21hbGxMZXR0ZXJHV2l0aE1hY3JvbiA9IDB4MUUyMSwKICAg
ICAgICBrQ2FwaXRhbExldHRlckhXaXRoRG90QWJvdmUgPSAweDFFMjIsCiAgICAgICAga1NtYWxs
TGV0dGVySFdpdGhEb3RBYm92ZSA9IDB4MUUyMywKICAgICAgICBrQ2FwaXRhbExldHRlckhXaXRo
RG90QmVsb3cgPSAweDFFMjQsCiAgICAgICAga1NtYWxsTGV0dGVySFdpdGhEb3RCZWxvdyA9IDB4
MUUyNSwKICAgICAgICBrQ2FwaXRhbExldHRlckhXaXRoRGlhZXJlc2lzID0gMHgxRTI2LAogICAg
ICAgIGtTbWFsbExldHRlckhXaXRoRGlhZXJlc2lzID0gMHgxRTI3LAogICAgICAgIGtDYXBpdGFs
TGV0dGVySFdpdGhDZWRpbGxhID0gMHgxRTI4LAogICAgICAgIGtTbWFsbExldHRlckhXaXRoQ2Vk
aWxsYSA9IDB4MUUyOSwKICAgICAgICBrQ2FwaXRhbExldHRlckhXaXRoQnJldmVCZWxvdyA9IDB4
MUUyQSwKICAgICAgICBrU21hbGxMZXR0ZXJIV2l0aEJyZXZlQmVsb3cgPSAweDFFMkIsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJJV2l0aFRpbGRlQmVsb3cgPSAweDFFMkMsCiAgICAgICAga1NtYWxs
TGV0dGVySVdpdGhUaWxkZUJlbG93ID0gMHgxRTJELAogICAgICAgIGtDYXBpdGFsTGV0dGVySVdp
dGhEaWFlcmVzaXNBbmRBY3V0ZSA9IDB4MUUyRSwKICAgICAgICBrU21hbGxMZXR0ZXJJV2l0aERp
YWVyZXNpc0FuZEFjdXRlID0gMHgxRTJGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyS1dpdGhBY3V0
ZSA9IDB4MUUzMCwKICAgICAgICBrU21hbGxMZXR0ZXJLV2l0aEFjdXRlID0gMHgxRTMxLAogICAg
ICAgIGtDYXBpdGFsTGV0dGVyS1dpdGhEb3RCZWxvdyA9IDB4MUUzMiwKICAgICAgICBrU21hbGxM
ZXR0ZXJLV2l0aERvdEJlbG93ID0gMHgxRTMzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyS1dpdGhM
aW5lQmVsb3cgPSAweDFFMzQsCiAgICAgICAga1NtYWxsTGV0dGVyS1dpdGhMaW5lQmVsb3cgPSAw
eDFFMzUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJMV2l0aERvdEJlbG93ID0gMHgxRTM2LAogICAg
ICAgIGtTbWFsbExldHRlckxXaXRoRG90QmVsb3cgPSAweDFFMzcsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJMV2l0aERvdEJlbG93QW5kTWFjcm9uID0gMHgxRTM4LAogICAgICAgIGtTbWFsbExldHRl
ckxXaXRoRG90QmVsb3dBbmRNYWNyb24gPSAweDFFMzksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJM
V2l0aExpbmVCZWxvdyA9IDB4MUUzQSwKICAgICAgICBrU21hbGxMZXR0ZXJMV2l0aExpbmVCZWxv
dyA9IDB4MUUzQiwKICAgICAgICBrQ2FwaXRhbExldHRlckxXaXRoQ2lyY3VtZmxleEJlbG93ID0g
MHgxRTNDLAogICAgICAgIGtTbWFsbExldHRlckxXaXRoQ2lyY3VtZmxleEJlbG93ID0gMHgxRTNE
LAogICAgICAgIGtDYXBpdGFsTGV0dGVyTVdpdGhBY3V0ZSA9IDB4MUUzRSwKICAgICAgICBrU21h
bGxMZXR0ZXJNV2l0aEFjdXRlID0gMHgxRTNGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyTVdpdGhE
b3RBYm92ZSA9IDB4MUU0MCwKICAgICAgICBrU21hbGxMZXR0ZXJNV2l0aERvdEFib3ZlID0gMHgx
RTQxLAogICAgICAgIGtDYXBpdGFsTGV0dGVyTVdpdGhEb3RCZWxvdyA9IDB4MUU0MiwKICAgICAg
ICBrU21hbGxMZXR0ZXJNV2l0aERvdEJlbG93ID0gMHgxRTQzLAogICAgICAgIGtDYXBpdGFsTGV0
dGVyTldpdGhEb3RBYm92ZSA9IDB4MUU0NCwKICAgICAgICBrU21hbGxMZXR0ZXJOV2l0aERvdEFi
b3ZlID0gMHgxRTQ1LAogICAgICAgIGtDYXBpdGFsTGV0dGVyTldpdGhEb3RCZWxvdyA9IDB4MUU0
NiwKICAgICAgICBrU21hbGxMZXR0ZXJOV2l0aERvdEJlbG93ID0gMHgxRTQ3LAogICAgICAgIGtD
YXBpdGFsTGV0dGVyTldpdGhMaW5lQmVsb3cgPSAweDFFNDgsCiAgICAgICAga1NtYWxsTGV0dGVy
TldpdGhMaW5lQmVsb3cgPSAweDFFNDksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJOV2l0aENpcmN1
bWZsZXhCZWxvdyA9IDB4MUU0QSwKICAgICAgICBrU21hbGxMZXR0ZXJOV2l0aENpcmN1bWZsZXhC
ZWxvdyA9IDB4MUU0QiwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoVGlsZGVBbmRBY3V0ZSA9
IDB4MUU0QywKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aFRpbGRlQW5kQWN1dGUgPSAweDFFNEQs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aFRpbGRlQW5kRGlhZXJlc2lzID0gMHgxRTRFLAog
ICAgICAgIGtTbWFsbExldHRlck9XaXRoVGlsZGVBbmREaWFlcmVzaXMgPSAweDFFNEYsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJPV2l0aE1hY3JvbkFuZEdyYXZlID0gMHgxRTUwLAogICAgICAgIGtT
bWFsbExldHRlck9XaXRoTWFjcm9uQW5kR3JhdmUgPSAweDFFNTEsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJPV2l0aE1hY3JvbkFuZEFjdXRlID0gMHgxRTUyLAogICAgICAgIGtTbWFsbExldHRlck9X
aXRoTWFjcm9uQW5kQWN1dGUgPSAweDFFNTMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJQV2l0aEFj
dXRlID0gMHgxRTU0LAogICAgICAgIGtTbWFsbExldHRlclBXaXRoQWN1dGUgPSAweDFFNTUsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJQV2l0aERvdEFib3ZlID0gMHgxRTU2LAogICAgICAgIGtTbWFs
bExldHRlclBXaXRoRG90QWJvdmUgPSAweDFFNTcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJSV2l0
aERvdEFib3ZlID0gMHgxRTU4LAogICAgICAgIGtTbWFsbExldHRlclJXaXRoRG90QWJvdmUgPSAw
eDFFNTksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJSV2l0aERvdEJlbG93ID0gMHgxRTVBLAogICAg
ICAgIGtTbWFsbExldHRlclJXaXRoRG90QmVsb3cgPSAweDFFNUIsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJSV2l0aERvdEJlbG93QW5kTWFjcm9uID0gMHgxRTVDLAogICAgICAgIGtTbWFsbExldHRl
clJXaXRoRG90QmVsb3dBbmRNYWNyb24gPSAweDFFNUQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJS
V2l0aExpbmVCZWxvdyA9IDB4MUU1RSwKICAgICAgICBrU21hbGxMZXR0ZXJSV2l0aExpbmVCZWxv
dyA9IDB4MUU1RiwKICAgICAgICBrQ2FwaXRhbExldHRlclNXaXRoRG90QWJvdmUgPSAweDFFNjAs
CiAgICAgICAga1NtYWxsTGV0dGVyU1dpdGhEb3RBYm92ZSA9IDB4MUU2MSwKICAgICAgICBrQ2Fw
aXRhbExldHRlclNXaXRoRG90QmVsb3cgPSAweDFFNjIsCiAgICAgICAga1NtYWxsTGV0dGVyU1dp
dGhEb3RCZWxvdyA9IDB4MUU2MywKICAgICAgICBrQ2FwaXRhbExldHRlclNXaXRoQWN1dGVBbmRE
b3RBYm92ZSA9IDB4MUU2NCwKICAgICAgICBrU21hbGxMZXR0ZXJTV2l0aEFjdXRlQW5kRG90QWJv
dmUgPSAweDFFNjUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJTV2l0aENhcm9uQW5kRG90QWJvdmUg
PSAweDFFNjYsCiAgICAgICAga1NtYWxsTGV0dGVyU1dpdGhDYXJvbkFuZERvdEFib3ZlID0gMHgx
RTY3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyU1dpdGhEb3RCZWxvd0FuZERvdEFib3ZlID0gMHgx
RTY4LAogICAgICAgIGtTbWFsbExldHRlclNXaXRoRG90QmVsb3dBbmREb3RBYm92ZSA9IDB4MUU2
OSwKICAgICAgICBrQ2FwaXRhbExldHRlclRXaXRoRG90QWJvdmUgPSAweDFFNkEsCiAgICAgICAg
a1NtYWxsTGV0dGVyVFdpdGhEb3RBYm92ZSA9IDB4MUU2QiwKICAgICAgICBrQ2FwaXRhbExldHRl
clRXaXRoRG90QmVsb3cgPSAweDFFNkMsCiAgICAgICAga1NtYWxsTGV0dGVyVFdpdGhEb3RCZWxv
dyA9IDB4MUU2RCwKICAgICAgICBrQ2FwaXRhbExldHRlclRXaXRoTGluZUJlbG93ID0gMHgxRTZF
LAogICAgICAgIGtTbWFsbExldHRlclRXaXRoTGluZUJlbG93ID0gMHgxRTZGLAogICAgICAgIGtD
YXBpdGFsTGV0dGVyVFdpdGhDaXJjdW1mbGV4QmVsb3cgPSAweDFFNzAsCiAgICAgICAga1NtYWxs
TGV0dGVyVFdpdGhDaXJjdW1mbGV4QmVsb3cgPSAweDFFNzEsCiAgICAgICAga0NhcGl0YWxMZXR0
ZXJVV2l0aERpYWVyZXNpc0JlbG93ID0gMHgxRTcyLAogICAgICAgIGtTbWFsbExldHRlclVXaXRo
RGlhZXJlc2lzQmVsb3cgPSAweDFFNzMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aFRpbGRl
QmVsb3cgPSAweDFFNzQsCiAgICAgICAga1NtYWxsTGV0dGVyVVdpdGhUaWxkZUJlbG93ID0gMHgx
RTc1LAogICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhDaXJjdW1mbGV4QmVsb3cgPSAweDFFNzYs
CiAgICAgICAga1NtYWxsTGV0dGVyVVdpdGhDaXJjdW1mbGV4QmVsb3cgPSAweDFFNzcsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJVV2l0aFRpbGRlQW5kQWN1dGUgPSAweDFFNzgsCiAgICAgICAga1Nt
YWxsTGV0dGVyVVdpdGhUaWxkZUFuZEFjdXRlID0gMHgxRTc5LAogICAgICAgIGtDYXBpdGFsTGV0
dGVyVVdpdGhNYWNyb25BbmREaWFlcmVzaXMgPSAweDFFN0EsCiAgICAgICAga1NtYWxsTGV0dGVy
VVdpdGhNYWNyb25BbmREaWFlcmVzaXMgPSAweDFFN0IsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJW
V2l0aFRpbGRlID0gMHgxRTdDLAogICAgICAgIGtTbWFsbExldHRlclZXaXRoVGlsZGUgPSAweDFF
N0QsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJWV2l0aERvdEJlbG93ID0gMHgxRTdFLAogICAgICAg
IGtTbWFsbExldHRlclZXaXRoRG90QmVsb3cgPSAweDFFN0YsCiAgICAgICAga0NhcGl0YWxMZXR0
ZXJXV2l0aEdyYXZlID0gMHgxRTgwLAogICAgICAgIGtTbWFsbExldHRlcldXaXRoR3JhdmUgPSAw
eDFFODEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJXV2l0aEFjdXRlID0gMHgxRTgyLAogICAgICAg
IGtTbWFsbExldHRlcldXaXRoQWN1dGUgPSAweDFFODMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJX
V2l0aERpYWVyZXNpcyA9IDB4MUU4NCwKICAgICAgICBrU21hbGxMZXR0ZXJXV2l0aERpYWVyZXNp
cyA9IDB4MUU4NSwKICAgICAgICBrQ2FwaXRhbExldHRlcldXaXRoRG90QWJvdmUgPSAweDFFODYs
CiAgICAgICAga1NtYWxsTGV0dGVyV1dpdGhEb3RBYm92ZSA9IDB4MUU4NywKICAgICAgICBrQ2Fw
aXRhbExldHRlcldXaXRoRG90QmVsb3cgPSAweDFFODgsCiAgICAgICAga1NtYWxsTGV0dGVyV1dp
dGhEb3RCZWxvdyA9IDB4MUU4OSwKICAgICAgICBrQ2FwaXRhbExldHRlclhXaXRoRG90QWJvdmUg
PSAweDFFOEEsCiAgICAgICAga1NtYWxsTGV0dGVyWFdpdGhEb3RBYm92ZSA9IDB4MUU4QiwKICAg
ICAgICBrQ2FwaXRhbExldHRlclhXaXRoRGlhZXJlc2lzID0gMHgxRThDLAogICAgICAgIGtTbWFs
bExldHRlclhXaXRoRGlhZXJlc2lzID0gMHgxRThELAogICAgICAgIGtDYXBpdGFsTGV0dGVyWVdp
dGhEb3RBYm92ZSA9IDB4MUU4RSwKICAgICAgICBrU21hbGxMZXR0ZXJZV2l0aERvdEFib3ZlID0g
MHgxRThGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyWldpdGhDaXJjdW1mbGV4ID0gMHgxRTkwLAog
ICAgICAgIGtTbWFsbExldHRlclpXaXRoQ2lyY3VtZmxleCA9IDB4MUU5MSwKICAgICAgICBrQ2Fw
aXRhbExldHRlclpXaXRoRG90QmVsb3cgPSAweDFFOTIsCiAgICAgICAga1NtYWxsTGV0dGVyWldp
dGhEb3RCZWxvdyA9IDB4MUU5MywKICAgICAgICBrQ2FwaXRhbExldHRlclpXaXRoTGluZUJlbG93
ID0gMHgxRTk0LAogICAgICAgIGtTbWFsbExldHRlclpXaXRoTGluZUJlbG93ID0gMHgxRTk1LAog
ICAgICAgIGtTbWFsbExldHRlckhXaXRoTGluZUJlbG93ID0gMHgxRTk2LAogICAgICAgIGtTbWFs
bExldHRlclRXaXRoRGlhZXJlc2lzID0gMHgxRTk3LAogICAgICAgIGtTbWFsbExldHRlcldXaXRo
UmluZ0Fib3ZlID0gMHgxRTk4LAogICAgICAgIGtTbWFsbExldHRlcllXaXRoUmluZ0Fib3ZlID0g
MHgxRTk5LAogICAgICAgIGtTbWFsbExldHRlckFXaXRoUmlnaHRIYWxmUmluZyA9IDB4MUU5QSwK
ICAgICAgICBrQ2FwaXRhbExldHRlckFXaXRoRG90QmVsb3cgPSAweDFFQTAsCiAgICAgICAga1Nt
YWxsTGV0dGVyQVdpdGhEb3RCZWxvdyA9IDB4MUVBMSwKICAgICAgICBrQ2FwaXRhbExldHRlckFX
aXRoSG9va0Fib3ZlID0gMHgxRUEyLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoSG9va0Fib3Zl
ID0gMHgxRUEzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhDaXJjdW1mbGV4QW5kQWN1dGUg
PSAweDFFQTQsCiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhDaXJjdW1mbGV4QW5kQWN1dGUgPSAw
eDFFQTUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aENpcmN1bWZsZXhBbmRHcmF2ZSA9IDB4
MUVBNiwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aENpcmN1bWZsZXhBbmRHcmF2ZSA9IDB4MUVB
NywKICAgICAgICBrQ2FwaXRhbExldHRlckFXaXRoQ2lyY3VtZmxleEFuZEhvb2tBYm92ZSA9IDB4
MUVBOCwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aENpcmN1bWZsZXhBbmRIb29rQWJvdmUgPSAw
eDFFQTksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aENpcmN1bWZsZXhBbmRUaWxkZSA9IDB4
MUVBQSwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0aENpcmN1bWZsZXhBbmRUaWxkZSA9IDB4MUVB
QiwKICAgICAgICBrQ2FwaXRhbExldHRlckFXaXRoQ2lyY3VtZmxleEFuZERvdEJlbG93ID0gMHgx
RUFDLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoQ2lyY3VtZmxleEFuZERvdEJlbG93ID0gMHgx
RUFELAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhCcmV2ZUFuZEFjdXRlID0gMHgxRUFFLAog
ICAgICAgIGtTbWFsbExldHRlckFXaXRoQnJldmVBbmRBY3V0ZSA9IDB4MUVBRiwKICAgICAgICBr
Q2FwaXRhbExldHRlckFXaXRoQnJldmVBbmRHcmF2ZSA9IDB4MUVCMCwKICAgICAgICBrU21hbGxM
ZXR0ZXJBV2l0aEJyZXZlQW5kR3JhdmUgPSAweDFFQjEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJB
V2l0aEJyZXZlQW5kSG9va0Fib3ZlID0gMHgxRUIyLAogICAgICAgIGtTbWFsbExldHRlckFXaXRo
QnJldmVBbmRIb29rQWJvdmUgPSAweDFFQjMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aEJy
ZXZlQW5kVGlsZGUgPSAweDFFQjQsCiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhCcmV2ZUFuZFRp
bGRlID0gMHgxRUI1LAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhCcmV2ZUFuZERvdEJlbG93
ID0gMHgxRUI2LAogICAgICAgIGtTbWFsbExldHRlckFXaXRoQnJldmVBbmREb3RCZWxvdyA9IDB4
MUVCNywKICAgICAgICBrQ2FwaXRhbExldHRlckVXaXRoRG90QmVsb3cgPSAweDFFQjgsCiAgICAg
ICAga1NtYWxsTGV0dGVyRVdpdGhEb3RCZWxvdyA9IDB4MUVCOSwKICAgICAgICBrQ2FwaXRhbExl
dHRlckVXaXRoSG9va0Fib3ZlID0gMHgxRUJBLAogICAgICAgIGtTbWFsbExldHRlckVXaXRoSG9v
a0Fib3ZlID0gMHgxRUJCLAogICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhUaWxkZSA9IDB4MUVC
QywKICAgICAgICBrU21hbGxMZXR0ZXJFV2l0aFRpbGRlID0gMHgxRUJELAogICAgICAgIGtDYXBp
dGFsTGV0dGVyRVdpdGhDaXJjdW1mbGV4QW5kQWN1dGUgPSAweDFFQkUsCiAgICAgICAga1NtYWxs
TGV0dGVyRVdpdGhDaXJjdW1mbGV4QW5kQWN1dGUgPSAweDFFQkYsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJFV2l0aENpcmN1bWZsZXhBbmRHcmF2ZSA9IDB4MUVDMCwKICAgICAgICBrU21hbGxMZXR0
ZXJFV2l0aENpcmN1bWZsZXhBbmRHcmF2ZSA9IDB4MUVDMSwKICAgICAgICBrQ2FwaXRhbExldHRl
ckVXaXRoQ2lyY3VtZmxleEFuZEhvb2tBYm92ZSA9IDB4MUVDMiwKICAgICAgICBrU21hbGxMZXR0
ZXJFV2l0aENpcmN1bWZsZXhBbmRIb29rQWJvdmUgPSAweDFFQzMsCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJFV2l0aENpcmN1bWZsZXhBbmRUaWxkZSA9IDB4MUVDNCwKICAgICAgICBrU21hbGxMZXR0
ZXJFV2l0aENpcmN1bWZsZXhBbmRUaWxkZSA9IDB4MUVDNSwKICAgICAgICBrQ2FwaXRhbExldHRl
ckVXaXRoQ2lyY3VtZmxleEFuZERvdEJlbG93ID0gMHgxRUM2LAogICAgICAgIGtTbWFsbExldHRl
ckVXaXRoQ2lyY3VtZmxleEFuZERvdEJlbG93ID0gMHgxRUM3LAogICAgICAgIGtDYXBpdGFsTGV0
dGVySVdpdGhIb29rQWJvdmUgPSAweDFFQzgsCiAgICAgICAga1NtYWxsTGV0dGVySVdpdGhIb29r
QWJvdmUgPSAweDFFQzksCiAgICAgICAga0NhcGl0YWxMZXR0ZXJJV2l0aERvdEJlbG93ID0gMHgx
RUNBLAogICAgICAgIGtTbWFsbExldHRlcklXaXRoRG90QmVsb3cgPSAweDFFQ0IsCiAgICAgICAg
a0NhcGl0YWxMZXR0ZXJPV2l0aERvdEJlbG93ID0gMHgxRUNDLAogICAgICAgIGtTbWFsbExldHRl
ck9XaXRoRG90QmVsb3cgPSAweDFFQ0QsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aEhvb2tB
Ym92ZSA9IDB4MUVDRSwKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aEhvb2tBYm92ZSA9IDB4MUVD
RiwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoQ2lyY3VtZmxleEFuZEFjdXRlID0gMHgxRUQw
LAogICAgICAgIGtTbWFsbExldHRlck9XaXRoQ2lyY3VtZmxleEFuZEFjdXRlID0gMHgxRUQxLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhDaXJjdW1mbGV4QW5kR3JhdmUgPSAweDFFRDIsCiAg
ICAgICAga1NtYWxsTGV0dGVyT1dpdGhDaXJjdW1mbGV4QW5kR3JhdmUgPSAweDFFRDMsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJPV2l0aENpcmN1bWZsZXhBbmRIb29rQWJvdmUgPSAweDFFRDQsCiAg
ICAgICAga1NtYWxsTGV0dGVyT1dpdGhDaXJjdW1mbGV4QW5kSG9va0Fib3ZlID0gMHgxRUQ1LAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhDaXJjdW1mbGV4QW5kVGlsZGUgPSAweDFFRDYsCiAg
ICAgICAga1NtYWxsTGV0dGVyT1dpdGhDaXJjdW1mbGV4QW5kVGlsZGUgPSAweDFFRDcsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJPV2l0aENpcmN1bWZsZXhBbmREb3RCZWxvdyA9IDB4MUVEOCwKICAg
ICAgICBrU21hbGxMZXR0ZXJPV2l0aENpcmN1bWZsZXhBbmREb3RCZWxvdyA9IDB4MUVEOSwKICAg
ICAgICBrQ2FwaXRhbExldHRlck9XaXRoSG9ybkFuZEFjdXRlID0gMHgxRURBLAogICAgICAgIGtT
bWFsbExldHRlck9XaXRoSG9ybkFuZEFjdXRlID0gMHgxRURCLAogICAgICAgIGtDYXBpdGFsTGV0
dGVyT1dpdGhIb3JuQW5kR3JhdmUgPSAweDFFREMsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhI
b3JuQW5kR3JhdmUgPSAweDFFREQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aEhvcm5BbmRI
b29rQWJvdmUgPSAweDFFREUsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhIb3JuQW5kSG9va0Fi
b3ZlID0gMHgxRURGLAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dpdGhIb3JuQW5kVGlsZGUgPSAw
eDFFRTAsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhIb3JuQW5kVGlsZGUgPSAweDFFRTEsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aEhvcm5BbmREb3RCZWxvdyA9IDB4MUVFMiwKICAgICAg
ICBrU21hbGxMZXR0ZXJPV2l0aEhvcm5BbmREb3RCZWxvdyA9IDB4MUVFMywKICAgICAgICBrQ2Fw
aXRhbExldHRlclVXaXRoRG90QmVsb3cgPSAweDFFRTQsCiAgICAgICAga1NtYWxsTGV0dGVyVVdp
dGhEb3RCZWxvdyA9IDB4MUVFNSwKICAgICAgICBrQ2FwaXRhbExldHRlclVXaXRoSG9va0Fib3Zl
ID0gMHgxRUU2LAogICAgICAgIGtTbWFsbExldHRlclVXaXRoSG9va0Fib3ZlID0gMHgxRUU3LAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhIb3JuQW5kQWN1dGUgPSAweDFFRTgsCiAgICAgICAg
a1NtYWxsTGV0dGVyVVdpdGhIb3JuQW5kQWN1dGUgPSAweDFFRTksCiAgICAgICAga0NhcGl0YWxM
ZXR0ZXJVV2l0aEhvcm5BbmRHcmF2ZSA9IDB4MUVFQSwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0
aEhvcm5BbmRHcmF2ZSA9IDB4MUVFQiwKICAgICAgICBrQ2FwaXRhbExldHRlclVXaXRoSG9ybkFu
ZEhvb2tBYm92ZSA9IDB4MUVFQywKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aEhvcm5BbmRIb29r
QWJvdmUgPSAweDFFRUQsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aEhvcm5BbmRUaWxkZSA9
IDB4MUVFRSwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aEhvcm5BbmRUaWxkZSA9IDB4MUVFRiwK
ICAgICAgICBrQ2FwaXRhbExldHRlclVXaXRoSG9ybkFuZERvdEJlbG93ID0gMHgxRUYwLAogICAg
ICAgIGtTbWFsbExldHRlclVXaXRoSG9ybkFuZERvdEJlbG93ID0gMHgxRUYxLAogICAgICAgIGtD
YXBpdGFsTGV0dGVyWVdpdGhHcmF2ZSA9IDB4MUVGMiwKICAgICAgICBrU21hbGxMZXR0ZXJZV2l0
aEdyYXZlID0gMHgxRUYzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyWVdpdGhEb3RCZWxvdyA9IDB4
MUVGNCwKICAgICAgICBrU21hbGxMZXR0ZXJZV2l0aERvdEJlbG93ID0gMHgxRUY1LAogICAgICAg
IGtDYXBpdGFsTGV0dGVyWVdpdGhIb29rQWJvdmUgPSAweDFFRjYsCiAgICAgICAga1NtYWxsTGV0
dGVyWVdpdGhIb29rQWJvdmUgPSAweDFFRjcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJZV2l0aFRp
bGRlID0gMHgxRUY4LAogICAgICAgIGtTbWFsbExldHRlcllXaXRoVGlsZGUgPSAweDFFRjkKICAg
IH07Cn07CgogCiAKIAoKY2xhc3MgVU1vZGlmaWVyTGV0dGVyIHsKcHVibGljOgogICAgZW51bSBF
TW9kaWZpZXJMZXR0ZXJOYW1lcyB7CiAgICAgICAga1NtYWxsSCA9IDB4MDJCMCwKICAgICAgICBr
U21hbGxIV2l0aEhvb2sgPSAweDAyQjEsCiAgICAgICAga1NtYWxsSiA9IDB4MDJCMiwKICAgICAg
ICBrU21hbGxSID0gMHgwMkIzLAogICAgICAgIGtTbWFsbFR1cm5lZFIgPSAweDAyQjQsCiAgICAg
ICAga1NtYWxsVHVybmVkUldpdGhIb29rID0gMHgwMkI1LAogICAgICAgIGtTbWFsbENhcGl0YWxJ
bnZlcnRlZFIgPSAweDAyQjYsCiAgICAgICAga1NtYWxsVyA9IDB4MDJCNywKICAgICAgICBrU21h
bGxZID0gMHgwMkI4LAogICAgICAgIGtUdXJuZWRDb21tYSA9IDB4MDJCQiwKICAgICAgICBrQXBv
c3Ryb3BoZSA9IDB4MDJCQywKICAgICAgICBrUmV2ZXJzZWRDb21tYSA9IDB4MDJCRCwKICAgICAg
ICBrUmlnaHRIYWxmUmluZyA9IDB4MDJCRSwKICAgICAgICBrTGVmdEhhbGZSaW5nID0gMHgwMkJG
LAogICAgICAgIGtHbG90dGFsU3RvcCA9IDB4MDJDMCwKICAgICAgICBrUmV2ZXJzZWRHbG90dGFs
U3RvcCA9IDB4MDJDMSwKICAgICAgICBrVHJpYW5ndWxhckNvbG9uID0gMHgwMkQwLAogICAgICAg
IGtIYWxmVHJpYW5ndWxhckNvbG9uID0gMHgwMkQxLAogICAgICAgIGtTbWFsbEdhbW1hID0gMHgw
MkUwLAogICAgICAgIGtTbWFsbEwgPSAweDAyRTEsCiAgICAgICAga1NtYWxsUyA9IDB4MDJFMiwK
ICAgICAgICBrU21hbGxYID0gMHgwMkUzLAogICAgICAgIGtTbWFsbFJldmVyc2VkR2xvdHRhbFN0
b3AgPSAweDAyRTQsCiAgICAgICAga0RvdWJsZUFwb3N0cm9waGUgPSAweDAyRUUsCiAgICAgICAg
a0dyZWVrWXBvZ2VncmFtbWVuaSA9IDB4MDM3QSwKICAgICAgICBrQXJtZW5pYW5MZWZ0SGFsZlJp
bmcgPSAweDA1NTksCiAgICAgICAga0FyYWJpY1RhdHdlZWwgPSAweDA2NDAsCiAgICAgICAga0Fy
YWJpY1NtYWxsV2F3ID0gMHgwNkU1LAogICAgICAgIGtBcmFiaWNTbWFsbFllaCA9IDB4MDZFNiwK
ICAgICAgICBrVGhhaUNoYXJhY3Rlck1haXlhbW9rID0gMHgwRTQ2LAogICAgICAgIGtMYW9Lb0xh
ID0gMHgwRUM2LAogICAgICAgIGtNb25nb2xpYW5MZXR0ZXJUb2RvTG9uZ1Zvd2VsU2lnbiA9IDB4
MTg0MywKICAgICAgICBrSWRlb2dyYXBoaWNJdGVyYXRpb25NYXJrID0gMHgzMDA1LAogICAgICAg
IGtWZXJ0aWNhbEthbmFSZXBlYXRNYXJrID0gMHgzMDMxLAogICAgICAgIGtWZXJ0aWNhbEthbmFS
ZXBlYXRXaXRoVm9pY2VkU291bmRNYXJrID0gMHgzMDMyLAogICAgICAgIGtWZXJ0aWNhbEthbmFS
ZXBlYXRNYXJrVXBwZXJIYWxmID0gMHgzMDMzLAogICAgICAgIGtWZXJ0aWNhbEthbmFSZXBlYXRX
aXRoVm9pY2VkU291bmRNYXJrVXBwZXJIYWxmID0gMHgzMDM0LAogICAgICAgIGtWZXJ0aWNhbEth
bmFSZXBlYXRNYXJrTG93ZXJIYWxmID0gMHgzMDM1LAogICAgICAgIGtIaXJhZ2FuYUl0ZXJhdGlv
bk1hcmsgPSAweDMwOUQsCiAgICAgICAga0hpcmFnYW5hVm9pY2VkSXRlcmF0aW9uTWFyayA9IDB4
MzA5RSwKICAgICAgICBrS2F0YWthbmFIaXJhZ2FuYVByb2xvbmdlZFNvdW5kTWFyayA9IDB4MzBG
QywKICAgICAgICBrS2F0YWthbmFJdGVyYXRpb25NYXJrID0gMHgzMEZELAogICAgICAgIGtLYXRh
a2FuYVZvaWNlZEl0ZXJhdGlvbk1hcmsgPSAweDMwRkUsCgoKICAgICAgICAgCiAgICAgICAga1By
aW1lID0gMHgwMkI5LAogICAgICAgIGtEb3VibGVQcmltZSA9IDB4MDJCQSwKICAgICAgICBrVXBB
cnJvd2hlYWQgPSAweDAyQzQsCiAgICAgICAga0Rvd25BcnJvd2hlYWQgPSAweDAyQzUsCiAgICAg
ICAga0NlbnRyZWRSaWdodEhhbGZSaW5nID0gMHgwMkQyLAogICAgICAgIGtDZW50cmVkTGVmdEhh
bGZSaW5nID0gMHgwMkQzLAogICAgICAgIGtVcFRhY2sgPSAweDAyRDQsCiAgICAgICAga0Rvd25U
YWNrID0gMHgwMkQ1LAogICAgICAgIGtFeHRyYUhpZ2hUb25lQmFyID0gMHgwMkU1LAogICAgICAg
IGtFeHRyYUxvd1RvbmVCYXIgPSAweDAyRTksCiAgICAgICAga0hpZ2hUb25lQmFyID0gMHgwMkU2
LAogICAgICAgIGtMZWZ0QXJyb3doZWFkID0gMHgwMkMyLAogICAgICAgIGtMb3dBY3V0ZUFjY2Vu
dCA9IDB4MDJDRiwKICAgICAgICBrTG93R3JhdmVBY2NlbnQgPSAweDAyQ0UsCiAgICAgICAga0xv
d01hY3JvbiA9IDB4MDJDRCwKICAgICAgICBrTG93VG9uZUJhciA9IDB4MDJFOCwKICAgICAgICBr
TG93VmVydGljYWxMaW5lID0gMHgwMkNDLAogICAgICAgIGtNaWRUb25lQmFyID0gMHgwMkU3LAog
ICAgICAgIGtSaG90aWNIb29rID0gMHgwMkRFLAogICAgICAgIGtSaWdodEFycm93aGVhZCA9IDB4
MDJDMywKICAgICAgICBrU21hbGxUaWxkZSA9IDB4MDJEQywKCgogICAgICAgICAKICAgICAgICBr
U21hbGxISG9vayA9IGtTbWFsbEhXaXRoSG9vaywKICAgICAgICBrU21hbGxUdXJuZWRSSG9vayA9
IGtTbWFsbFR1cm5lZFJXaXRoSG9vaywKICAgICAgICBrR3JlZWtTcGFjaW5nSW90YUJlbG93ID0g
a0dyZWVrWXBvZ2VncmFtbWVuaSwKICAgICAgICBrVGhhaU1haVlhbW9rID0ga1RoYWlDaGFyYWN0
ZXJNYWl5YW1vawogICAgfTsKfTsKCiAKIAogCgpjbGFzcyBVQ29tYmluaW5nIHsKcHVibGljOgog
ICAgZW51bSBFQ29tYmluaW5nTmFtZXMgewogICAgICAgIGtHcmF2ZUFjY2VudCA9IDB4MDMwMCwK
ICAgICAgICBrQWN1dGVBY2NlbnQgPSAweDAzMDEsCiAgICAgICAga0NpcmN1bWZsZXhBY2NlbnQg
PSAweDAzMDIsCiAgICAgICAga1RpbGRlID0gMHgwMzAzLAogICAgICAgIGtNYWNyb24gPSAweDAz
MDQsCiAgICAgICAga092ZXJsaW5lID0gMHgwMzA1LAogICAgICAgIGtCcmV2ZSA9IDB4MDMwNiwK
ICAgICAgICBrRG90QWJvdmUgPSAweDAzMDcsCiAgICAgICAga0RpYWVyZXNpcyA9IDB4MDMwOCwK
ICAgICAgICBrSG9va0Fib3ZlID0gMHgwMzA5LAogICAgICAgIGtSaW5nQWJvdmUgPSAweDAzMEEs
CiAgICAgICAga0RvdWJsZUFjdXRlQWNjZW50ID0gMHgwMzBCLAogICAgICAgIGtDYXJvbiA9IDB4
MDMwQywKICAgICAgICBrVmVydGljYWxMaW5lQWJvdmUgPSAweDAzMEQsCiAgICAgICAga0RvdWJs
ZVZlcnRpY2FsTGluZUFib3ZlID0gMHgwMzBFLAogICAgICAgIGtEb3VibGVHcmF2ZUFjY2VudCA9
IDB4MDMwRiwKICAgICAgICBrQ2FuZHJhYmluZHUgPSAweDAzMTAsCiAgICAgICAga0ludmVydGVk
QnJldmUgPSAweDAzMTEsCiAgICAgICAga1R1cm5lZENvbW1hQWJvdmUgPSAweDAzMTIsCiAgICAg
ICAga0NvbW1hQWJvdmUgPSAweDAzMTMsCiAgICAgICAga1JldmVyc2VkQ29tbWFBYm92ZSA9IDB4
MDMxNCwKICAgICAgICBrQ29tbWFBYm92ZVJpZ2h0ID0gMHgwMzE1LAogICAgICAgIGtHcmF2ZUFj
Y2VudEJlbG93ID0gMHgwMzE2LAogICAgICAgIGtBY3V0ZUFjY2VudEJlbG93ID0gMHgwMzE3LAog
ICAgICAgIGtMZWZ0VGFja0JlbG93ID0gMHgwMzE4LAogICAgICAgIGtSaWdodFRhY2tCZWxvdyA9
IDB4MDMxOSwKICAgICAgICBrTGVmdEFuZ2xlQWJvdmUgPSAweDAzMUEsCiAgICAgICAga0hvcm4g
PSAweDAzMUIsCiAgICAgICAga0xlZnRIYWxmUmluZ0JlbG93ID0gMHgwMzFDLAogICAgICAgIGtV
cFRhY2tCZWxvdyA9IDB4MDMxRCwKICAgICAgICBrRG93blRhY2tCZWxvdyA9IDB4MDMxRSwKICAg
ICAgICBrUGx1c1NpZ25CZWxvdyA9IDB4MDMxRiwKICAgICAgICBrTWludXNTaWduQmVsb3cgPSAw
eDAzMjAsCiAgICAgICAga1BhbGF0YWxpemVkSG9va0JlbG93ID0gMHgwMzIxLAogICAgICAgIGtS
ZXRyb2ZsZXhIb29rQmVsb3cgPSAweDAzMjIsCiAgICAgICAga0RvdEJlbG93ID0gMHgwMzIzLAog
ICAgICAgIGtEaWFlcmVzaXNCZWxvdyA9IDB4MDMyNCwKICAgICAgICBrUmluZ0JlbG93ID0gMHgw
MzI1LAogICAgICAgIGtDb21tYUJlbG93ID0gMHgwMzI2LAogICAgICAgIGtDZWRpbGxhID0gMHgw
MzI3LAogICAgICAgIGtPZ29uZWsgPSAweDAzMjgsCiAgICAgICAga1ZlcnRpY2FsTGluZUJlbG93
ID0gMHgwMzI5LAogICAgICAgIGtCcmlkZ2VCZWxvdyA9IDB4MDMyQSwKICAgICAgICBrSW52ZXJ0
ZWREb3VibGVBcmNoQmVsb3cgPSAweDAzMkIsCiAgICAgICAga0Nhcm9uQmVsb3cgPSAweDAzMkMs
CiAgICAgICAga0NpcmN1bWZsZXhBY2NlbnRCZWxvdyA9IDB4MDMyRCwKICAgICAgICBrQnJldmVC
ZWxvdyA9IDB4MDMyRSwKICAgICAgICBrSW52ZXJ0ZWRCcmV2ZUJlbG93ID0gMHgwMzJGLAogICAg
ICAgIGtUaWxkZUJlbG93ID0gMHgwMzMwLAogICAgICAgIGtNYWNyb25CZWxvdyA9IDB4MDMzMSwK
ICAgICAgICBrTG93TGluZSA9IDB4MDMzMiwKICAgICAgICBrRG91YmxlTG93TGluZSA9IDB4MDMz
MywKICAgICAgICBrVGlsZGVPdmVybGF5ID0gMHgwMzM0LAogICAgICAgIGtTaG9ydFN0cm9rZU92
ZXJsYXkgPSAweDAzMzUsCiAgICAgICAga0xvbmdTdHJva2VPdmVybGF5ID0gMHgwMzM2LAogICAg
ICAgIGtTaG9ydFNvbGlkdXNPdmVybGF5ID0gMHgwMzM3LAogICAgICAgIGtMb25nU29saWR1c092
ZXJsYXkgPSAweDAzMzgsCiAgICAgICAga1JpZ2h0SGFsZlJpbmdCZWxvdyA9IDB4MDMzOSwKICAg
ICAgICBrSW52ZXJ0ZWRCcmlkZ2VCZWxvdyA9IDB4MDMzQSwKICAgICAgICBrU3F1YXJlQmVsb3cg
PSAweDAzM0IsCiAgICAgICAga1NlYWd1bGxCZWxvdyA9IDB4MDMzQywKICAgICAgICBrWEFib3Zl
ID0gMHgwMzNELAogICAgICAgIGtWZXJ0aWNhbFRpbGRlID0gMHgwMzNFLAogICAgICAgIGtEb3Vi
bGVPdmVybGluZSA9IDB4MDMzRiwKICAgICAgICBrR3JhdmVUb25lTWFyayA9IDB4MDM0MCwKICAg
ICAgICBrQWN1dGVUb25lTWFyayA9IDB4MDM0MSwKICAgICAgICBrR3JlZWtQZXJpc3BvbWVuaSA9
IDB4MDM0MiwKICAgICAgICBrR3JlZWtLb3JvbmlzID0gMHgwMzQzLAogICAgICAgIGtHcmVla0Rp
YWx5dGlrYVRvbm9zID0gMHgwMzQ0LAogICAgICAgIGtHcmVla1lwb2dlZ3JhbW1lbmkgPSAweDAz
NDUsCiAgICAgICAga0JyaWRnZUFib3ZlID0gMHgwMzQ2LAogICAgICAgIGtFcXVhbHNTaWduQmVs
b3cgPSAweDAzNDcsCiAgICAgICAga0RvdWJsZVZlcnRpY2FsTGluZUJlbG93ID0gMHgwMzQ4LAog
ICAgICAgIGtMZWZ0QW5nbGVCZWxvdyA9IDB4MDM0OSwKICAgICAgICBrTm90VGlsZGVBYm92ZSA9
IDB4MDM0QSwKICAgICAgICBrSG9tb3RoZXRpY0Fib3ZlID0gMHgwMzRCLAogICAgICAgIGtBbG1v
c3RFcXVhbFRvQWJvdmUgPSAweDAzNEMsCiAgICAgICAga0xlZnRSaWdodEFycm93QmVsb3cgPSAw
eDAzNEQsCiAgICAgICAga1Vwd2FyZHNBcnJvd0JlbG93ID0gMHgwMzRFLAogICAgICAgIGtEb3Vi
bGVUaWxkZSA9IDB4MDM2MCwKICAgICAgICBrRG91YmxlSW52ZXJ0ZWRCcmV2ZSA9IDB4MDM2MSwK
ICAgICAgICBrRG91YmxlUmlnaHR3YXJkc0Fycm93QmVsb3cgPSAweDAzNjIsCiAgICAgICAga0N5
cmlsbGljVGl0bG8gPSAweDA0ODMsCiAgICAgICAga0N5cmlsbGljUGFsYXRhbGl6YXRpb24gPSAw
eDA0ODQsCiAgICAgICAga0N5cmlsbGljRGFzaWFQbmV1bWF0YSA9IDB4MDQ4NSwKICAgICAgICBr
Q3lyaWxsaWNQc2lsaVBuZXVtYXRhID0gMHgwNDg2LAogICAgICAgIEhlYnJld0FjY2VudEV0bmFo
dGEgPSAweDA1OTEsCiAgICAgICAga0hlYnJld0FjY2VudFNlZ29sID0gMHgwNTkyLAogICAgICAg
IGtIZWJyZXdBY2NlbnRTaGFsc2hlbGV0ID0gMHgwNTkzLAogICAgICAgIGtIZWJyZXdBY2NlbnRa
YXFlZlFhdGFuID0gMHgwNTk0LAogICAgICAgIGtIZWJyZXdBY2NlbnRaYXFlZkdhZG9sID0gMHgw
NTk1LAogICAgICAgIGtIZWJyZXdBY2NlbnRUaXBlaGEgPSAweDA1OTYsCiAgICAgICAga0hlYnJl
d0FjY2VudFJldmlhID0gMHgwNTk3LAogICAgICAgIGtIZWJyZXdBY2NlbnRaYXJxYSA9IDB4MDU5
OCwKICAgICAgICBrSGVicmV3QWNjZW50UGFzaHRhID0gMHgwNTk5LAogICAgICAgIGtIZWJyZXdB
Y2NlbnRZZXRpdiA9IDB4MDU5QSwKICAgICAgICBrSGVicmV3QWNjZW50VGV2aXIgPSAweDA1OUIs
CiAgICAgICAga0hlYnJld0FjY2VudEdlcmVzaCA9IDB4MDU5QywKICAgICAgICBrSGVicmV3QWNj
ZW50R2VyZXNoTXVxZGFtID0gMHgwNTlELAogICAgICAgIGtIZWJyZXdBY2NlbnRHZXJzaGF5aW0g
PSAweDA1OUUsCiAgICAgICAga0hlYnJld0FjY2VudFFhcm5leVBhcmEgPSAweDA1OUYsCiAgICAg
ICAga0hlYnJld0FjY2VudFRlbGlzaGFHZWRvbGEgPSAweDA1QTAsCiAgICAgICAga0hlYnJld0Fj
Y2VudFBhemVyID0gMHgwNUExLAogICAgICAgIGtIZWJyZXdBY2NlbnRNdW5haCA9IDB4MDVBMywK
ICAgICAgICBrSGVicmV3QWNjZW50TWFoYXBha2ggPSAweDA1QTQsCiAgICAgICAga0hlYnJld0Fj
Y2VudE1lcmtoYSA9IDB4MDVBNSwKICAgICAgICBrSGVicmV3QWNjZW50TWVya2hhS2VmdWxhID0g
MHgwNUE2LAogICAgICAgIGtIZWJyZXdBY2NlbnREYXJnYSA9IDB4MDVBNywKICAgICAgICBrSGVi
cmV3QWNjZW50UWFkbWEgPSAweDA1QTgsCiAgICAgICAga0hlYnJld0FjY2VudFRlbGlzaGFRZXRh
bmEgPSAweDA1QTksCiAgICAgICAga0hlYnJld0FjY2VudFllcmFoQmVuWW9tbyA9IDB4MDVBQSwK
ICAgICAgICBrSGVicmV3QWNjZW50T2xlID0gMHgwNUFCLAogICAgICAgIGtIZWJyZXdBY2NlbnRJ
bHV5ID0gMHgwNUFDLAogICAgICAgIGtIZWJyZXdBY2NlbnREZWhpID0gMHgwNUFELAogICAgICAg
IGtIZWJyZXdBY2NlbnRaaW5vciA9IDB4MDVBRSwKICAgICAgICBrSGVicmV3TWFya01hc29yYUNp
cmNsZSA9IDB4MDVBRiwKICAgICAgICBrSGVicmV3UG9pbnRTaGV2YSA9IDB4MDVCMCwKICAgICAg
ICBrSGVicmV3UG9pbnRIYXRhZlNlZ29sID0gMHgwNUIxLAogICAgICAgIGtIZWJyZXdQb2ludEhh
dGFmUGF0YWggPSAweDA1QjIsCiAgICAgICAga0hlYnJld1BvaW50SGF0YWZRYW1hdHMgPSAweDA1
QjMsCiAgICAgICAga0hlYnJld1BvaW50SGlyaXEgPSAweDA1QjQsCiAgICAgICAga0hlYnJld1Bv
aW50VHNlcmUgPSAweDA1QjUsCiAgICAgICAga0hlYnJld1BvaW50U2Vnb2wgPSAweDA1QjYsCiAg
ICAgICAga0hlYnJld1BvaW50UGF0YWggPSAweDA1QjcsCiAgICAgICAga0hlYnJld1BvaW50UWFt
YXRzID0gMHgwNUI4LAogICAgICAgIGtIZWJyZXdQb2ludEhvbGFtID0gMHgwNUI5LAogICAgICAg
IGtIZWJyZXdQb2ludFF1YnV0cyA9IDB4MDVCQiwKICAgICAgICBrSGVicmV3UG9pbnREYWdlc2hP
ck1hcGlxID0gMHgwNUJDLAogICAgICAgIGtIZWJyZXdQb2ludE1ldGVnID0gMHgwNUJELAogICAg
ICAgIGtIZWJyZXdQb2ludFJhZmUgPSAweDA1QkYsCiAgICAgICAga0hlYnJld1BvaW50U2hpbkRv
dCA9IDB4MDVDMSwKICAgICAgICBrSGVicmV3UG9pbnRTaW5Eb3QgPSAweDA1QzIsCiAgICAgICAg
a0hlYnJld01hcmtVcHBlckRvdCA9IDB4MDVDNCwKICAgICAgICBrQXJhYmljRmF0aGF0YW4gPSAw
eDA2NEIsCiAgICAgICAga0FyYWJpY0RhbW1hdGFuID0gMHgwNjRDLAogICAgICAgIGtBcmFiaWNL
YXNyYXRhbiA9IDB4MDY0RCwKICAgICAgICBrQXJhYmljRmF0aGEgPSAweDA2NEUsCiAgICAgICAg
a0FyYWJpY0RhbW1hID0gMHgwNjRGLAogICAgICAgIGtBcmFiaWNLYXNyYSA9IDB4MDY1MCwKICAg
ICAgICBrQXJhYmljU2hhZGRhID0gMHgwNjUxLAogICAgICAgIGtBcmFiaWNTdWt1biA9IDB4MDY1
MiwKICAgICAgICBrQXJhYmljTWFkZGFoQWJvdmUgPSAweDA2NTMsCiAgICAgICAga0FyYWJpY0hh
bXphQWJvdmUgPSAweDA2NTQsCiAgICAgICAga0FyYWJpY0hhbXphQmVsb3cgPSAweDA2NTUsCiAg
ICAgICAga0FyYWJpY0xldHRlclN1cGVyc2NyaXB0QWxlZiA9IDB4MDY3MCwKICAgICAgICBrQXJh
YmljU21hbGxIaWdoTGlnYXR1cmVTYWRXaXRoTGFtV2l0aEFsZWZNYWtzdXJhID0gMHgwNkQ2LAog
ICAgICAgIGtBcmFiaWNTbWFsbEhpZ2hMaWdhdHVyZVFhZldpdGhMYW1XaXRoQWxlZk1ha3N1cmEg
PSAweDA2RDcsCiAgICAgICAga0FyYWJpY1NtYWxsSGlnaE1lZW1Jbml0aWFsRm9ybSA9IDB4MDZE
OCwKICAgICAgICBrQXJhYmljU21hbGxIaWdoTGFtQWxlZiA9IDB4MDZEOSwKICAgICAgICBrQXJh
YmljU21hbGxIaWdoSmVlbSA9IDB4MDZEQSwKICAgICAgICBrQXJhYmljU21hbGxIaWdoVGhyZWVE
b3RzID0gMHgwNkRCLAogICAgICAgIGtBcmFiaWNTbWFsbEhpZ2hTZWVuID0gMHgwNkRDLAogICAg
ICAgIGtBcmFiaWNTbWFsbEhpZ2hSb3VuZGVkWmVybyA9IDB4MDZERiwKICAgICAgICBrQXJhYmlj
U21hbGxIaWdoVXByaWdodFJlY3Rhbmd1bGFyWmVybyA9IDB4MDZFMCwKICAgICAgICBrQXJhYmlj
U21hbGxIaWdoRG90bGVzc0hlYWRPZktoYWggPSAweDA2RTEsCiAgICAgICAga0FyYWJpY1NtYWxs
SGlnaE1lZW1Jc29sYXRlZEZvcm0gPSAweDA2RTIsCiAgICAgICAga0FyYWJpY1NtYWxsTG93U2Vl
biA9IDB4MDZFMywKICAgICAgICBrQXJhYmljU21hbGxIaWdoTWFkZGEgPSAweDA2RTQsCiAgICAg
ICAga0FyYWJpY1NtYWxsSGlnaFllaCA9IDB4MDZFNywKICAgICAgICBrQXJhYmljU21hbGxIaWdo
Tm9vbiA9IDB4MDZFOCwKICAgICAgICBrQXJhYmljRW1wdHlDZW50cmVMb3dTdG9wID0gMHgwNkVB
LAogICAgICAgIGtBcmFiaWNFbXB0eUNlbnRyZUhpZ2hTdG9wID0gMHgwNkVCLAogICAgICAgIGtB
cmFiaWNSb3VuZGVkSGlnaFN0b3BXaXRoRmlsbGVkQ2VudHJlID0gMHgwNkVDLAogICAgICAgIGtB
cmFiaWNTbWFsbExvd01lZW0gPSAweDA2RUQsCiAgICAgICAga1N5cmlhY0xldHRlclN1cGVyc2Ny
aXB0QWxhcGggPSAweDA3MTEsCiAgICAgICAga1N5cmlhY1B0aGFoYUFib3ZlID0gMHgwNzMwLAog
ICAgICAgIGtTeXJpYWNQdGhhaGFCZWxvdyA9IDB4MDczMSwKICAgICAgICBrU3lyaWFjUHRoYWhh
RG90dGVkID0gMHgwNzMyLAogICAgICAgIGtTeXJpYWNacWFwaGFBYm92ZSA9IDB4MDczMywKICAg
ICAgICBrU3lyaWFjWnFhcGhhQmVsb3cgPSAweDA3MzQsCiAgICAgICAga1N5cmlhY1pxYXBoYURv
dHRlZCA9IDB4MDczNSwKICAgICAgICBrU3lyaWFjUmJhc2FBYm92ZSA9IDB4MDczNiwKICAgICAg
ICBrU3lyaWFjUmJhc2FCZWxvdyA9IDB4MDczNywKICAgICAgICBrU3lyaWFjRG90dGVkWmxhbWFI
b3Jpem9udGFsID0gMHgwNzM4LAogICAgICAgIGtTeXJpYWNEb3R0ZWRabGFtYUFuZ3VsYXIgPSAw
eDA3MzksCiAgICAgICAga1N5cmlhY0hiYXNhQWJvdmUgPSAweDA3M0EsCiAgICAgICAga1N5cmlh
Y0hiYXNhQmVsb3cgPSAweDA3M0IsCiAgICAgICAga1N5cmlhY0hiYXNhRXNhc2FEb3R0ZWQgPSAw
eDA3M0MsCiAgICAgICAga1N5cmlhY0VzYXNhQWJvdmUgPSAweDA3M0QsCiAgICAgICAga1N5cmlh
Y0VzYXNhQmVsb3cgPSAweDA3M0UsCiAgICAgICAga1N5cmlhY1J3YWhhID0gMHgwNzNGLAogICAg
ICAgIGtTeXJpYWNGZW1pbmluZURvdCA9IDB4MDc0MCwKICAgICAgICBrU3lyaWFjUXVzaHNoYXlh
ID0gMHgwNzQxLAogICAgICAgIGtTeXJpYWNSdWtrYWtoYSA9IDB4MDc0MiwKICAgICAgICBrU3ly
aWFjVHdvVmVydGljYWxEb3RzQWJvdmUgPSAweDA3NDMsCiAgICAgICAga1N5cmlhY1R3b1ZlcnRp
Y2FsRG90c0JlbG93ID0gMHgwNzQ0LAogICAgICAgIGtTeXJpYWNUaHJlZURvdHNBYm92ZSA9IDB4
MDc0NSwKICAgICAgICBrU3lyaWFjVGhyZWVEb3RzQmVsb3cgPSAweDA3NDYsCiAgICAgICAga1N5
cmlhY09ibGlxdWVMaW5lQWJvdmUgPSAweDA3NDcsCiAgICAgICAga1N5cmlhY09ibGlxdWVMaW5l
QmVsb3cgPSAweDA3NDgsCiAgICAgICAga1N5cmlhY011c2ljID0gMHgwNzQ5LAogICAgICAgIGtT
eXJpYWNCYXJyZWtoID0gMHgwNzRBLAogICAgICAgIGtEZXZhbmFnYXJpU2lnbk51a3RhID0gMHgw
OTNDLAogICAgICAgIGtEZXZhbmFnYXJpU2lnblZpcmFtYSA9IDB4MDk0RCwKICAgICAgICBrRGV2
YW5hZ2FyaVN0cmVzc1NpZ25VZGF0dGEgPSAweDA5NTEsCiAgICAgICAga0RldmFuYWdhcmlTdHJl
c3NTaWduQW51ZGF0dGEgPSAweDA5NTIsCiAgICAgICAga0RldmFuYWdhcmlHcmF2ZUFjY2VudCA9
IDB4MDk1MywKICAgICAgICBrRGV2YW5hZ2FyaUFjdXRlQWNjZW50ID0gMHgwOTU0LAogICAgICAg
IGtCZW5nYWxpU2lnbk51a3RhID0gMHgwOUJDLAogICAgICAgIGtCZW5nYWxpU2lnblZpcmFtYSA9
IDB4MDlDRCwKICAgICAgICBrR3VybXVraGlTaWduTnVrdGEgPSAweDBBM0MsCiAgICAgICAga0d1
cm11a2hpU2lnblZpcmFtYSA9IDB4MEE0RCwKICAgICAgICBrR3VqYXJhdGlTaWduTnVrdGEgPSAw
eDBBQkMsCiAgICAgICAga0d1amFyYXRpU2lnblZpcmFtYSA9IDB4MEFDRCwKICAgICAgICBrT3Jp
eWFTaWduTnVrdGEgPSAweDBCM0MsCiAgICAgICAga09yaXlhU2lnblZpcmFtYSA9IDB4MEI0RCwK
ICAgICAgICBrVGFtaWxTaWduVmlyYW1hID0gMHgwQkNELAogICAgICAgIGtUZWx1Z3VTaWduVmly
YW1hID0gMHgwQzRELAogICAgICAgIGtUZWx1Z3VMZW5ndGhNYXJrID0gMHgwQzU1LAogICAgICAg
IGtUZWx1Z3VBaUxlbmd0aE1hcmsgPSAweDBDNTYsCiAgICAgICAga0thbm5hZGFTaWduVmlyYW1h
ID0gMHgwQ0NELAogICAgICAgIGtNYWxheWFsYW1TaWduVmlyYW1hID0gMHgwRDRELAogICAgICAg
IGtTaW5oYWxhU2lnbkFsTGFrdW5hID0gMHgwRENBLAogICAgICAgIGtUaGFpQ2hhcmFjdGVyU2Fy
YVUgPSAweDBFMzgsCiAgICAgICAga1RoYWlDaGFyYWN0ZXJTYXJhVXUgPSAweDBFMzksCiAgICAg
ICAga1RoYWlDaGFyYWN0ZXJQaGludGh1ID0gMHgwRTNBLAogICAgICAgIGtUaGFpQ2hhcmFjdGVy
TWFpRWsgPSAweDBFNDgsCiAgICAgICAga1RoYWlDaGFyYWN0ZXJNYWlUaG8gPSAweDBFNDksCiAg
ICAgICAga1RoYWlDaGFyYWN0ZXJNYWlUcmkgPSAweDBFNEEsCiAgICAgICAga1RoYWlDaGFyYWN0
ZXJNYWlDaGF0dGF3YSA9IDB4MEU0QiwKICAgICAgICBrTGFvVm93ZWxTaWduVSA9IDB4MEVCOCwK
ICAgICAgICBrTGFvVm93ZWxTaWduVXUgPSAweDBFQjksCiAgICAgICAga0xhb1RvbmVNYWlFayA9
IDB4MEVDOCwKICAgICAgICBrTGFvVG9uZU1haVRobyA9IDB4MEVDOSwKICAgICAgICBrTGFvVG9u
ZU1haVRpID0gMHgwRUNBLAogICAgICAgIGtMYW9Ub25lTWFpQ2F0YXdhID0gMHgwRUNCLAogICAg
ICAgIGtUaWJldGFuQXN0cm9sb2dpY2FsU2lnbktoeXVkUGEgPSAweDBGMTgsCiAgICAgICAga1Rp
YmV0YW5Bc3Ryb2xvZ2ljYWxTaWduU2RvbmdUc2h1Z3MgPSAweDBGMTksCiAgICAgICAga1RpYmV0
YW5NYXJrTmdhc0J6dW5nTnlpWmxhID0gMHgwRjM1LAogICAgICAgIGtUaWJldGFuTWFya05nYXNC
enVuZ1Nnb3JSdGFncyA9IDB4MEYzNywKICAgICAgICBrVGliZXRhbk1hcmtUc2FQaHJ1ID0gMHgw
RjM5LAogICAgICAgIGtUaWJldGFuVm93ZWxTaWduQWEgPSAweDBGNzEsCiAgICAgICAga1RpYmV0
YW5Wb3dlbFNpZ25JID0gMHgwRjcyLAogICAgICAgIGtUaWJldGFuVm93ZWxTaWduVSA9IDB4MEY3
NCwKICAgICAgICBrVGliZXRhblZvd2VsU2lnbkUgPSAweDBGN0EsCiAgICAgICAga1RpYmV0YW5W
b3dlbFNpZ25FZSA9IDB4MEY3QiwKICAgICAgICBrVGliZXRhblZvd2VsU2lnbk8gPSAweDBGN0Ms
CiAgICAgICAga1RpYmV0YW5Wb3dlbFNpZ25PbyA9IDB4MEY3RCwKICAgICAgICBrVGliZXRhblZv
d2VsU2lnblJldmVyc2VkSSA9IDB4MEY4MCwKICAgICAgICBrVGliZXRhblNpZ25OeWlabGFOYWFE
YSA9IDB4MEY4MiwKICAgICAgICBrVGliZXRhblNpZ25TbmFMZGFuID0gMHgwRjgzLAogICAgICAg
IGtUaWJldGFuTWFya0hhbGFudGEgPSAweDBGODQsCiAgICAgICAga1RpYmV0YW5TaWduTGNpUnRh
Z3MgPSAweDBGODYsCiAgICAgICAga1RpYmV0YW5TaWduWWFuZ1J0YWdzID0gMHgwRjg3LAogICAg
ICAgIGtUaWJldGFuU3ltYm9sUGFkbWFHZGFuID0gMHgwRkM2LAogICAgICAgIGtNeWFubWFyU2ln
bkRvdEJlbG93ID0gMHgxMDM3LAogICAgICAgIGtNeWFubWFyU2lnblZpcmFtYSA9IDB4MTAzOSwK
ICAgICAgICBrS2htZXJTaWduQ29lbmcgPSAweDE3RDIsCiAgICAgICAga01vbmdvbGlhbkxldHRl
ckFsaUdhbGlEYWdhbGdhID0gMHgxOEE5LAogICAgICAgIGtMZWZ0SGFycG9vbkFib3ZlID0gMHgy
MEQwLAogICAgICAgIGtSaWdodEhhcnBvb25BYm92ZSA9IDB4MjBEMSwKICAgICAgICBrTG9uZ1Zl
cnRpY2FsTGluZU92ZXJsYXkgPSAweDIwRDIsCiAgICAgICAga1Nob3J0VmVydGljYWxMaW5lT3Zl
cmxheSA9IDB4MjBEMywKICAgICAgICBrQW50aWNsb2Nrd2lzZUFycm93QWJvdmUgPSAweDIwRDQs
CiAgICAgICAga0Nsb2Nrd2lzZUFycm93QWJvdmUgPSAweDIwRDUsCiAgICAgICAga0xlZnRBcnJv
d0Fib3ZlID0gMHgyMEQ2LAogICAgICAgIGtSaWdodEFycm93QWJvdmUgPSAweDIwRDcsCiAgICAg
ICAga1JpbmdPdmVybGF5ID0gMHgyMEQ4LAogICAgICAgIGtDbG9ja3dpc2VSaW5nT3ZlcmxheSA9
IDB4MjBEOSwKICAgICAgICBrQW50aWNsb2Nrd2lzZVJpbmdPdmVybGF5ID0gMHgyMERBLAogICAg
ICAgIGtUaHJlZURvdHNBYm92ZSA9IDB4MjBEQiwKICAgICAgICBrRm91ckRvdHNBYm92ZSA9IDB4
MjBEQywKICAgICAgICBrTGVmdFJpZ2h0QXJyb3dBYm92ZSA9IDB4MjBFMSwKICAgICAgICBJZGVv
Z3JhcGhpY0xldmVsVG9uZU1hcmsgPSAweDMwMkEsCiAgICAgICAgSWRlb2dyYXBoaWNSaXNpbmdU
b25lTWFyayA9IDB4MzAyQiwKICAgICAgICBJZGVvZ3JhcGhpY0RlcGFydGluZ1RvbmVNYXJrID0g
MHgzMDJDLAogICAgICAgIElkZW9ncmFwaGljRW50ZXJpbmdUb25lTWFyayA9IDB4MzAyRCwKICAg
ICAgICBIYW5ndWxTaW5nbGVEb3RUb25lTWFyayA9IDB4MzAyRSwKICAgICAgICBIYW5ndWxEb3Vi
bGVEb3RUb25lTWFyayA9IDB4MzAyRiwKICAgICAgICBrS2F0YWthbmFIaXJhZ2FuYVZvaWNlZFNv
dW5kTWFyayA9IDB4MzA5OSwKICAgICAgICBrS2F0YWthbmFIaXJhZ2FuYVNlbWlWb2ljZWRTb3Vu
ZE1hcmsgPSAweDMwOUEsCiAgICAgICAga0hlYnJld1BvaW50SnVkZW9TcGFuaXNoVmFyaWthID0g
MHhGQjFFLAogICAgICAgIGtMaWdhdHVyZUxlZnRIYWxmID0gMHhGRTIwLAogICAgICAgIGtMaWdh
dHVyZVJpZ2h0SGFsZiA9IDB4RkUyMSwKICAgICAgICBrRG91YmxlVGlsZGVMZWZ0SGFsZiA9IDB4
RkUyMiwKICAgICAgICBrRG91YmxlVGlsZGVSaWdodEhhbGYgPSAweEZFMjMsCgoKICAgICAgICAg
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICBrQmVuZ2FsaVNpZ25DYW5kcmFiaW5kdSA9IDB4
MDk4MSwKICAgICAgICBrQmVuZ2FsaVZvd2VsU2lnblUgPSAweDA5QzEsCiAgICAgICAga0Jlbmdh
bGlWb3dlbFNpZ25VdSA9IDB4MDlDMiwKICAgICAgICBrQmVuZ2FsaVZvd2VsU2lnblZvY2FsaWNM
ID0gMHgwOUUyLAogICAgICAgIGtCZW5nYWxpVm93ZWxTaWduVm9jYWxpY0xsID0gMHgwOUUzLAog
ICAgICAgIGtCZW5nYWxpVm93ZWxTaWduVm9jYWxpY1IgPSAweDA5QzMsCiAgICAgICAga0Jlbmdh
bGlWb3dlbFNpZ25Wb2NhbGljUnIgPSAweDA5QzQsCiAgICAgICAga0RldmFuYWdhcmlTaWduQW51
c3ZhcmEgPSAweDA5MDIsCiAgICAgICAga0RldmFuYWdhcmlTaWduQXZhZ3JhaGEgPSAweDA5M0Qs
CiAgICAgICAga0RldmFuYWdhcmlTaWduQ2FuZHJhYmluZHUgPSAweDA5MDEsCiAgICAgICAga0Rl
dmFuYWdhcmlWb3dlbFNpZ25VID0gMHgwOTQxLAogICAgICAgIGtEZXZhbmFnYXJpVm93ZWxTaWdu
VXUgPSAweDA5NDIsCiAgICAgICAga0RldmFuYWdhcmlWb3dlbFNpZ25Wb2NhbGljUiA9IDB4MDk0
MywKICAgICAgICBrRGV2YW5hZ2FyaVZvd2VsU2lnblZvY2FsaWNSciA9IDB4MDk0NCwKICAgICAg
ICBrRGV2YW5hZ2FyaVZvd2VsU2lnbkNhbmRyYUUgPSAweDA5NDUsCiAgICAgICAga0RldmFuYWdh
cmlWb3dlbFNpZ25TaG9ydEUgPSAweDA5NDYsCiAgICAgICAga0RldmFuYWdhcmlWb3dlbFNpZ25F
ID0gMHgwOTQ3LAogICAgICAgIGtEZXZhbmFnYXJpVm93ZWxTaWduQWkgPSAweDA5NDgsCiAgICAg
ICAga0RldmFuYWdhcmlWb3dlbFNpZ25Wb2NhbGljTCA9IDB4MDk2MiwKICAgICAgICBrRGV2YW5h
Z2FyaVZvd2VsU2lnblZvY2FsaWNMbCA9IDB4MDk2MywKICAgICAgICBrRW5jbG9zaW5nQ2lyY2xl
ID0gMHgyMERELAogICAgICAgIGtFbmNsb3NpbmdDaXJjbGVCYWNrc2xhc2ggPSAweDIwRTAsCiAg
ICAgICAga0VuY2xvc2luZ0RpYW1vbmQgPSAweDIwREYsCiAgICAgICAga0VuY2xvc2luZ1NxdWFy
ZSA9IDB4MjBERSwKICAgICAgICBrR3VqYXJhdGlTaWduQ2FuZHJhYmluZHUgPSAweDBBODEsCiAg
ICAgICAga0d1amFyYXRpU2lnbkFudXN2YXJhID0gMHgwQTgyLAogICAgICAgIGtHdWphcmF0aVZv
d2VsU2lnblUgPSAweDBBQzEsCiAgICAgICAga0d1amFyYXRpVm93ZWxTaWduVXUgPSAweDBBQzIs
CiAgICAgICAga0d1amFyYXRpVm93ZWxTaWduVm9jYWxpY1IgPSAweDBBQzMsCiAgICAgICAga0d1
amFyYXRpVm93ZWxTaWduVm9jYWxpY1JyID0gMHgwQUM0LAogICAgICAgIGtHdWphcmF0aVZvd2Vs
U2lnbkNhbmRyYUUgPSAweDBBQzUsCiAgICAgICAga0d1amFyYXRpVm93ZWxTaWduRSA9IDB4MEFD
NywKICAgICAgICBrR3VqYXJhdGlWb3dlbFNpZ25BaSA9IDB4MEFDOCwKICAgICAgICBrR3VqYXJh
dGlWb3dlbFNpZ25DYW5kcmFPID0gMHgwQUM5LAogICAgICAgIGtHdXJtdWtoaVNpZ25CaW5kaSA9
IDB4MEEwMiwKICAgICAgICBrR3VybXVraGlWb3dlbFNpZ25VID0gMHgwQTQxLAogICAgICAgIGtH
dXJtdWtoaVZvd2VsU2lnblV1ID0gMHgwQTQyLAogICAgICAgIGtHdXJtdWtoaVZvd2VsU2lnbkVl
ID0gMHgwQTQ3LAogICAgICAgIGtHdXJtdWtoaVZvd2VsU2lnbkFpID0gMHgwQTQ4LAogICAgICAg
IGtHdXJtdWtoaVZvd2VsU2lnbk9vID0gMHgwQTRCLAogICAgICAgIGtHdXJtdWtoaVZvd2VsU2ln
bkF1ID0gMHgwQTRDLAogICAgICAgIGtHdXJtdWtoaVRpcHBpID0gMHgwQTcwLAogICAgICAgIGtH
dXJtdWtoaUFkZGFrID0gMHgwQTcxLAogICAgICAgIGtIYW5ndWxTaW5nbGVEb3RUb25lTWFyayA9
IDB4MzAyRSwKICAgICAgICBrSGFuZ3VsRG91YmxlRG90VG9uZU1hcmsgPSAweDMwMkYsCiAgICAg
ICAga0lkZW9ncmFwaGljTGV2ZWxUb25lTWFyayA9IDB4MzAyQSwKICAgICAgICBrSWRlb2dyYXBo
aWNSaXNpbmdUb25lTWFyayA9IDB4MzAyQiwKICAgICAgICBrSWRlb2dyYXBoaWNEZXBhcnRpbmdU
b25lTWFyayA9IDB4MzAyQywKICAgICAgICBrSWRlb2dyYXBoaWNFbnRlcmluZ1RvbmVNYXJrID0g
MHgzMDJELAogICAgICAgIGtLYW5uYWRhVm93ZWxTaWduSSA9IDB4MENCRiwKICAgICAgICBrS2Fu
bmFkYVZvd2VsU2lnbkUgPSAweDBDQzYsCiAgICAgICAga0thbm5hZGFWb3dlbFNpZ25BdSA9IDB4
MENDQywKICAgICAgICBrTGFvQ2FuY2VsbGF0aW9uTWFyayA9IDB4MEVDQywKICAgICAgICBrTGFv
TmlnZ2FoaXRhID0gMHgwRUNELAogICAgICAgIGtMYW9Wb3dlbFNpZ25NYWlLYW4gPSAweDBFQjEs
CiAgICAgICAga0xhb1Zvd2VsU2lnbkkgPSAweDBFQjQsCiAgICAgICAga0xhb1Zvd2VsU2lnbklp
ID0gMHgwRUI1LAogICAgICAgIGtMYW9Wb3dlbFNpZ25ZID0gMHgwRUI2LAogICAgICAgIGtMYW9W
b3dlbFNpZ25ZeSA9IDB4MEVCNywKICAgICAgICBrTGFvVm93ZWxTaWduTWFpS29uID0gMHgwRUJC
LAogICAgICAgIGtMYW9TZW1pdm93ZWxTaWduTG8gPSAweDBFQkMsCiAgICAgICAga01hbGF5YWxh
bVZvd2VsU2lnblUgPSAweDBENDEsCiAgICAgICAga01hbGF5YWxhbVZvd2VsU2lnblV1ID0gMHgw
RDQyLAogICAgICAgIGtNYWxheWFsYW1Wb3dlbFNpZ25Wb2NhbGljUiA9IDB4MEQ0MywKICAgICAg
ICBrT3JpeWFTaWduQ2FuZHJhYmluZHUgPSAweDBCMDEsCiAgICAgICAga09yaXlhVm93ZWxTaWdu
SSA9IDB4MEIzRiwKICAgICAgICBrT3JpeWFWb3dlbFNpZ25VID0gMHgwQjQxLAogICAgICAgIGtP
cml5YVZvd2VsU2lnblV1ID0gMHgwQjQyLAogICAgICAgIGtPcml5YVZvd2VsU2lnblZvY2FsaWNS
ID0gMHgwQjQzLAogICAgICAgIGtPcml5YUFpTGVuZ3RoTWFyayA9IDB4MEI1NiwKICAgICAgICBr
VGFtaWxWb3dlbFNpZ25JaSA9IDB4MEJDMCwKICAgICAgICBrVGVsdWd1Vm93ZWxTaWduQWEgPSAw
eDBDM0UsCiAgICAgICAga1RlbHVndVZvd2VsU2lnbkkgPSAweDBDM0YsCiAgICAgICAga1RlbHVn
dVZvd2VsU2lnbklpID0gMHgwQzQwLAogICAgICAgIGtUZWx1Z3VWb3dlbFNpZ25FID0gMHgwQzQ2
LAogICAgICAgIGtUZWx1Z3VWb3dlbFNpZ25FZSA9IDB4MEM0NywKICAgICAgICBrVGVsdWd1Vm93
ZWxTaWduQWkgPSAweDBDNDgsCiAgICAgICAga1RlbHVndVZvd2VsU2lnbk8gPSAweDBDNEEsCiAg
ICAgICAga1RlbHVndVZvd2VsU2lnbk9vID0gMHgwQzRCLAogICAgICAgIGtUZWx1Z3VWb3dlbFNp
Z25BdSA9IDB4MEM0QywKICAgICAgICBrVGhhaUNoYXJhY3Rlck1haUhhbkFrYXQgPSAweDBFMzEs
CiAgICAgICAga1RoYWlDaGFyYWN0ZXJNYWl0YWlraHUgPSAweDBFNDcsCiAgICAgICAga1RoYWlD
aGFyYWN0ZXJOaWtoYWhpdCA9IDB4MEU0RCwKICAgICAgICBrVGhhaUNoYXJhY3RlclNhcmFJID0g
MHgwRTM0LAogICAgICAgIGtUaGFpQ2hhcmFjdGVyU2FyYUlpID0gMHgwRTM1LAogICAgICAgIGtU
aGFpQ2hhcmFjdGVyU2FyYVVlID0gMHgwRTM2LAogICAgICAgIGtUaGFpQ2hhcmFjdGVyU2FyYVVl
ZSA9IDB4MEUzNywKICAgICAgICBrVGhhaUNoYXJhY3RlclRoYW50aGFraGF0ID0gMHgwRTRDLAoK
ICAgICAgICAgCgogICAgICAgIGtOb25TcGFjaW5nR3JhdmUgPSBrR3JhdmVBY2NlbnQsCiAgICAg
ICAga05vblNwYWNpbmdBY3V0ZSA9IGtBY3V0ZUFjY2VudCwKICAgICAgICBrTm9uU3BhY2luZ0Np
cmN1bWZsZXggPSBrQ2lyY3VtZmxleEFjY2VudCwKICAgICAgICBrTm9uU3BhY2luZ1RpbGRlID0g
a1RpbGRlLAogICAgICAgIGtOb25TcGFjaW5nTWFjcm9uID0ga01hY3JvbiwKICAgICAgICBrTm9u
U3BhY2luZ092ZXJzY29yZSA9IGtPdmVybGluZSwKICAgICAgICBrTm9uU3BhY2luZ0JyZXZlID0g
a0JyZXZlLAogICAgICAgIGtOb25TcGFjaW5nRG90QWJvdmUgPSBrRG90QWJvdmUsCiAgICAgICAg
a05vblNwYWNpbmdEaWFlcmVzaXMgPSBrRGlhZXJlc2lzLAogICAgICAgIGtOb25TcGFjaW5nSG9v
a0Fib3ZlID0ga0hvb2tBYm92ZSwKICAgICAgICBrTm9uU3BhY2luZ1JpbmdBYm92ZSA9IGtSaW5n
QWJvdmUsCiAgICAgICAgTm9uU3BhY2luZ0RvdWJsZUFjdXRlID0ga0RvdWJsZUFjdXRlQWNjZW50
LAogICAgICAgIGtOb25TcGFjaW5nSGFjZWsgPSBrQ2Fyb24sCiAgICAgICAga05vblNwYWNpbmdW
ZXJ0aWNhbExpbmVBYm92ZSA9IGtWZXJ0aWNhbExpbmVBYm92ZSwKICAgICAgICBrTm9uU3BhY2lu
Z0RvdWJsZVZlcnRpY2FsTGluZUFib3ZlID0ga0RvdWJsZVZlcnRpY2FsTGluZUFib3ZlLAogICAg
ICAgIGtOb25TcGFjaW5nRG91YmxlR3JhdmUgPSBrRG91YmxlR3JhdmVBY2NlbnQsCiAgICAgICAg
a05vblNwYWNpbmdDYW5kcmFiaW5kdSA9IGtDYW5kcmFiaW5kdSwKICAgICAgICBrTm9uU3BhY2lu
Z0ludmVydGVkQnJldmUgPSBrSW52ZXJ0ZWRCcmV2ZSwKICAgICAgICBrTm9uU3BhY2luZ1R1cm5l
ZENvbW1hQWJvdmUgPSBrVHVybmVkQ29tbWFBYm92ZSwKICAgICAgICBrTm9uU3BhY2luZ0NvbW1h
QWJvdmUgPSBrQ29tbWFBYm92ZSwKICAgICAgICBrTm9uU3BhY2luZ1JldmVyc2VkQ29tbWFBYm92
ZSA9IGtSZXZlcnNlZENvbW1hQWJvdmUsCiAgICAgICAga05vblNwYWNpbmdDb21tYUFib3ZlUmln
aHQgPSBrQ29tbWFBYm92ZVJpZ2h0LAogICAgICAgIGtOb25TcGFjaW5nR3JhdmVCZWxvdyA9IGtH
cmF2ZUFjY2VudEJlbG93LAogICAgICAgIGtOb25TcGFjaW5nQWN1dGVCZWxvdyA9IGtBY3V0ZUFj
Y2VudEJlbG93LAogICAgICAgIGtOb25TcGFjaW5nTGVmdFRhY2tCZWxvdyA9IGtMZWZ0VGFja0Jl
bG93LAogICAgICAgIGtOb25TcGFjaW5nUmlnaHRUYWNrQmVsb3cgPSBrUmlnaHRUYWNrQmVsb3cs
CiAgICAgICAga05vblNwYWNpbmdMZWZ0QW5nbGVBYm92ZSA9IGtMZWZ0QW5nbGVBYm92ZSwKICAg
ICAgICBrTm9uU3BhY2luZ0hvcm4gPSBrSG9ybiwKICAgICAgICBrTm9uU3BhY2luZ0xlZnRIYWxm
UmluZ0JlbG93ID0ga0xlZnRIYWxmUmluZ0JlbG93LAogICAgICAgIGtOb25TcGFjaW5nVXBUYWNr
QmVsb3cgPSBrVXBUYWNrQmVsb3csCiAgICAgICAga05vblNwYWNpbmdEb3duVGFja0JlbG93ID0g
a0Rvd25UYWNrQmVsb3csCiAgICAgICAga05vblNwYWNpbmdQbHVzU2lnbkJlbG93ID0ga1BsdXNT
aWduQmVsb3csCiAgICAgICAga05vblNwYWNpbmdNaW51c1NpZ25CZWxvdyA9IGtNaW51c1NpZ25C
ZWxvdywKICAgICAgICBrTm9uU3BhY2luZ1BhbGF0YWxpemVkSG9va0JlbG93ID0ga1BhbGF0YWxp
emVkSG9va0JlbG93LAogICAgICAgIGtOb25TcGFjaW5nUmV0cm9mbGV4SG9va0JlbG93ID0ga1Jl
dHJvZmxleEhvb2tCZWxvdywKICAgICAgICBrTm9uU3BhY2luZ0RvdEJlbG93ID0ga0RvdEJlbG93
LAogICAgICAgIGtOb25TcGFjaW5nRG91YmxlRG90QmVsb3cgPSBrRGlhZXJlc2lzQmVsb3csCiAg
ICAgICAga05vblNwYWNpbmdSaW5nQmVsb3cgPSBrUmluZ0JlbG93LAogICAgICAgIGtOb25TcGFj
aW5nQ29tbWFCZWxvdyA9IGtDb21tYUJlbG93LAogICAgICAgIGtOb25TcGFjaW5nQ2VkaWxsYSA9
IGtDZWRpbGxhLAogICAgICAgIGtOb25TcGFjaW5nT2dvbmVrID0ga09nb25laywKICAgICAgICBr
Tm9uU3BhY2luZ1ZlcnRpY2FsTGluZUJlbG93ID0ga1ZlcnRpY2FsTGluZUJlbG93LAogICAgICAg
IGtOb25TcGFjaW5nQnJpZGdlQmVsb3cgPSBrQnJpZGdlQmVsb3csCiAgICAgICAga05vblNwYWNp
bmdJbnZlcnRlZERvdWJsZUFyY2hCZWxvdyA9IGtJbnZlcnRlZERvdWJsZUFyY2hCZWxvdywKICAg
ICAgICBrTm9uU3BhY2luZ0hhY2VrQmVsb3cgPSBrQ2Fyb25CZWxvdywKICAgICAgICBrTm9uU3Bh
Y2luZ0NpcmN1bWZsZXhCZWxvdyA9IGtDaXJjdW1mbGV4QWNjZW50QmVsb3csCiAgICAgICAga05v
blNwYWNpbmdCcmV2ZUJlbG93ID0ga0JyZXZlQmVsb3csCiAgICAgICAga05vblNwYWNpbmdJbnZl
cnRlZEJyZXZlQmVsb3cgPSBrSW52ZXJ0ZWRCcmV2ZUJlbG93LAogICAgICAgIGtOb25TcGFjaW5n
VGlsZGVCZWxvdyA9IGtUaWxkZUJlbG93LAogICAgICAgIGtOb25TcGFjaW5nTWFjcm9uQmVsb3cg
PSBrTWFjcm9uQmVsb3csCiAgICAgICAga05vblNwYWNpbmdVbmRlcnNjb3JlID0ga0xvd0xpbmUs
CiAgICAgICAga05vblNwYWNpbmdEb3VibGVVbmRlcnNjb3JlID0ga0RvdWJsZUxvd0xpbmUsCiAg
ICAgICAga05vblNwYWNpbmdUaWxkZU92ZXJsYXkgPSBrVGlsZGVPdmVybGF5LAogICAgICAgIGtO
b25TcGFjaW5nU2hvcnRCYXJPdmVybGF5ID0ga1Nob3J0U3Ryb2tlT3ZlcmxheSwKICAgICAgICBr
Tm9uU3BhY2luZ0xvbmdCYXJPdmVybGF5ID0ga0xvbmdTdHJva2VPdmVybGF5LAogICAgICAgIGtO
b25TcGFjaW5nU2hvcnRTbGFzaE92ZXJsYXkgPSBrU2hvcnRTb2xpZHVzT3ZlcmxheSwKICAgICAg
ICBrTm9uU3BhY2luZ0xvbmdTbGFzaE92ZXJsYXkgPSBrTG9uZ1NvbGlkdXNPdmVybGF5LAogICAg
ICAgIGtOb25TcGFjaW5nUmlnaHRIYWxmUmluZ0JlbG93ID0ga1JpZ2h0SGFsZlJpbmdCZWxvdywK
ICAgICAgICBrTm9uU3BhY2luZ0ludmVydGVkQnJpZGdlQmVsb3cgPSBrSW52ZXJ0ZWRCcmlkZ2VC
ZWxvdywKICAgICAgICBrTm9uU3BhY2luZ1NxdWFyZUJlbG93ID0ga1NxdWFyZUJlbG93LAogICAg
ICAgIGtOb25TcGFjaW5nU2VhZ3VsbEJlbG93ID0ga1NlYWd1bGxCZWxvdywKICAgICAgICBrTm9u
U3BhY2luZ1hBYm92ZSA9IGtYQWJvdmUsCiAgICAgICAga05vblNwYWNpbmdWZXJ0aWNhbFRpbGRl
ID0ga1ZlcnRpY2FsVGlsZGUsCiAgICAgICAga05vblNwYWNpbmdEb3VibGVPdmVyc2NvcmUgPSBr
RG91YmxlT3ZlcmxpbmUsCiAgICAgICAga05vblNwYWNpbmdHcmF2ZVRvbmVNYXJrID0ga0dyYXZl
VG9uZU1hcmssCiAgICAgICAga05vblNwYWNpbmdBY3V0ZVRvbmVNYXJrID0ga0FjdXRlVG9uZU1h
cmssCiAgICAgICAgR3JlZWtOb25TcGFjaW5nRGlhZXJlc2lzVG9ub3MgPSBrR3JlZWtEaWFseXRp
a2FUb25vcywKICAgICAgICBHcmVla05vblNwYWNpbmdJb3RhQmVsb3cgPSBrR3JlZWtZcG9nZWdy
YW1tZW5pLAogICAgICAgIGtDeXJpbGxpY05vblNwYWNpbmdUaXRsbyA9IGtDeXJpbGxpY1RpdGxv
LAogICAgICAgIGtDeXJpbGxpY05vblNwYWNpbmdQYWxhdGFsaXphdGlvbiA9IGtDeXJpbGxpY1Bh
bGF0YWxpemF0aW9uLAogICAgICAgIGtDeXJpbGxpY05vblNwYWNpbmdEYXNpYVBuZXVtYXRhID0g
a0N5cmlsbGljRGFzaWFQbmV1bWF0YSwKICAgICAgICBrQ3lyaWxsaWNOb25TcGFjaW5nUHNpbGlQ
bmV1bWF0YSA9IGtDeXJpbGxpY1BzaWxpUG5ldW1hdGEsCiAgICAgICAga0hlYnJld1BvaW50RGFn
ZXNoID0ga0hlYnJld1BvaW50RGFnZXNoT3JNYXBpcSwKICAgICAgICBrQXJhYmljRmF0aGFoID0g
a0FyYWJpY0ZhdGhhLAogICAgICAgIGtBcmFiaWNEYW1tYWggPSBrQXJhYmljRGFtbWEsCiAgICAg
ICAga0FyYWJpY0thc3JhaCA9IGtBcmFiaWNLYXNyYSwKICAgICAgICBrQXJhYmljU2hhZGRhaCA9
IGtBcmFiaWNTaGFkZGEsCiAgICAgICAga0FyYWJpY0FsZWZBYm92ZSA9IGtBcmFiaWNMZXR0ZXJT
dXBlcnNjcmlwdEFsZWYsCiAgICAgICAga1RoYWlWb3dlbFNpZ25TYXJhVSA9IGtUaGFpQ2hhcmFj
dGVyU2FyYVUsCiAgICAgICAga1RoYWlWb3dlbFNpZ25TYXJhVXUgPSBrVGhhaUNoYXJhY3RlclNh
cmFVdSwKICAgICAgICBrVGhhaVZvd2VsU2lnblBoaW50aHUgPSBrVGhhaUNoYXJhY3RlclBoaW50
aHUsCiAgICAgICAga1RoYWlUb25lTWFpRWsgPSBrVGhhaUNoYXJhY3Rlck1haUVrLAogICAgICAg
IGtUaGFpVG9uZU1haVRobyA9IGtUaGFpQ2hhcmFjdGVyTWFpVGhvLAogICAgICAgIGtUaGFpVG9u
ZU1haVRyaSA9IGtUaGFpQ2hhcmFjdGVyTWFpVHJpLAogICAgICAgIGtUaGFpVG9uZU1haUNoYXR0
YXdhID0ga1RoYWlDaGFyYWN0ZXJNYWlDaGF0dGF3YSwKICAgICAgICBrVGliZXRhbkhvbm9yaWZp
Y1VuZGVyUmluZyA9IGtUaWJldGFuTWFya05nYXNCenVuZ055aVpsYSwKICAgICAgICBrVGliZXRh
blVuZGVyUmluZyA9IGtUaWJldGFuTWFya05nYXNCenVuZ1Nnb3JSdGFncywKICAgICAgICBrVGli
ZXRhbkxlbml0aW9uTWFyayA9IGtUaWJldGFuTWFya1RzYVBocnUsCiAgICAgICAga1RpYmV0YW5W
b3dlbFNpZ25BaSA9IGtUaWJldGFuVm93ZWxTaWduRWUsCiAgICAgICAga1RpYmV0YW5Wb3dlbFNp
Z25BdSA9IGtUaWJldGFuVm93ZWxTaWduT28sCiAgICAgICAga1RpYmV0YW5Wb3dlbFNpZ25TaG9y
dEkgPSBrVGliZXRhblZvd2VsU2lnblJldmVyc2VkSSwKICAgICAgICBrVGliZXRhbkNhbmRyYWJp
bmR1V2l0aE9ybmFtZW50ID0ga1RpYmV0YW5TaWduTnlpWmxhTmFhRGEsCiAgICAgICAga1RpYmV0
YW5DYW5kcmFiaW5kdSA9IGtUaWJldGFuU2lnblNuYUxkYW4sCiAgICAgICAga1RpYmV0YW5WaXJh
bWEgPSBrVGliZXRhbk1hcmtIYWxhbnRhLAogICAgICAgIGtOb25TcGFjaW5nTGVmdEhhcnBvb25B
Ym92ZSA9IGtMZWZ0SGFycG9vbkFib3ZlLAogICAgICAgIGtOb25TcGFjaW5nUmlnaHRIYXJwb29u
QWJvdmUgPSBrUmlnaHRIYXJwb29uQWJvdmUsCiAgICAgICAga05vblNwYWNpbmdMb25nVmVydGlj
YWxCYXJPdmVybGF5ID0ga0xvbmdWZXJ0aWNhbExpbmVPdmVybGF5LAogICAgICAgIGtOb25TcGFj
aW5nU2hvcnRWZXJ0aWNhbEJhck92ZXJsYXkgPSBrU2hvcnRWZXJ0aWNhbExpbmVPdmVybGF5LAog
ICAgICAgIGtOb25TcGFjaW5nQW50aWNsb2Nrd2lzZUFycm93QWJvdmUgPSBrQW50aWNsb2Nrd2lz
ZUFycm93QWJvdmUsCiAgICAgICAga05vblNwYWNpbmdDbG9ja3dpc2VBcnJvd0Fib3ZlID0ga0Ns
b2Nrd2lzZUFycm93QWJvdmUsCiAgICAgICAga05vblNwYWNpbmdMZWZ0QXJyb3dBYm92ZSA9IGtM
ZWZ0QXJyb3dBYm92ZSwKICAgICAgICBrTm9uU3BhY2luZ1JpZ2h0QXJyb3dBYm92ZSA9IGtSaWdo
dEFycm93QWJvdmUsCiAgICAgICAga05vblNwYWNpbmdSaW5nT3ZlcmxheSA9IGtSaW5nT3Zlcmxh
eSwKICAgICAgICBrTm9uU3BhY2luZ0Nsb2Nrd2lzZVJpbmdPdmVybGF5ID0ga0Nsb2Nrd2lzZVJp
bmdPdmVybGF5LAogICAgICAgIGtOb25TcGFjaW5nQW50aWNsb2Nrd2lzZVJpbmdPdmVybGF5ID0g
a0FudGljbG9ja3dpc2VSaW5nT3ZlcmxheSwKICAgICAgICBrTm9uU3BhY2luZ1RocmVlRG90c0Fi
b3ZlID0ga1RocmVlRG90c0Fib3ZlLAogICAgICAgIGtOb25TcGFjaW5nRm91ckRvdHNBYm92ZSA9
IGtGb3VyRG90c0Fib3ZlLAogICAgICAgIGtOb25TcGFjaW5nTGVmdFJpZ2h0QXJyb3dBYm92ZSA9
IGtMZWZ0UmlnaHRBcnJvd0Fib3ZlLAogICAgICAgIGtOb25TcGFjaW5nS2F0YWthbmFIaXJhZ2Fu
YVZvaWNlZFNvdW5kTWFyayA9IGtLYXRha2FuYUhpcmFnYW5hVm9pY2VkU291bmRNYXJrLAogICAg
ICAgIGtOb25TcGFjaW5nS2F0YWthbmFIaXJhZ2FuYVNlbWlWb2ljZWRTb3VuZE1hcmsgPSBrS2F0
YWthbmFIaXJhZ2FuYVNlbWlWb2ljZWRTb3VuZE1hcmssCiAgICAgICAga0hlYnJld1BvaW50VmFy
aWthID0ga0hlYnJld1BvaW50SnVkZW9TcGFuaXNoVmFyaWthCiAgICB9Owp9OwoKIAogCiAKY2xh
c3MgVVVuaWNvZGVEaWdpdCB7CnB1YmxpYzoKICAgIGVudW0gRVVuaWNvZGVEaWdpdE5hbWVzIHsK
ICAgICAgICBrWmVybyA9IDB4MDAzMCwKICAgICAgICBrT25lID0gMHgwMDMxLAogICAgICAgIGtU
d28gPSAweDAwMzIsCiAgICAgICAga1RocmVlID0gMHgwMDMzLAogICAgICAgIGtGb3VyID0gMHgw
MDM0LAogICAgICAgIGtGaXZlID0gMHgwMDM1LAogICAgICAgIGtTaXggPSAweDAwMzYsCiAgICAg
ICAga1NldmVuID0gMHgwMDM3LAogICAgICAgIGtFaWdodCA9IDB4MDAzOCwKICAgICAgICBrTmlu
ZSA9IDB4MDAzOSwKICAgICAgICBrQXJhYmljSW5kaWNaZXJvID0gMHgwNjYwLAogICAgICAgIGtB
cmFiaWNJbmRpY09uZSA9IDB4MDY2MSwKICAgICAgICBrQXJhYmljSW5kaWNUd28gPSAweDA2NjIs
CiAgICAgICAga0FyYWJpY0luZGljVGhyZWUgPSAweDA2NjMsCiAgICAgICAga0FyYWJpY0luZGlj
Rm91ciA9IDB4MDY2NCwKICAgICAgICBrQXJhYmljSW5kaWNGaXZlID0gMHgwNjY1LAogICAgICAg
IGtBcmFiaWNJbmRpY1NpeCA9IDB4MDY2NiwKICAgICAgICBrQXJhYmljSW5kaWNTZXZlbiA9IDB4
MDY2NywKICAgICAgICBrQXJhYmljSW5kaWNFaWdodCA9IDB4MDY2OCwKICAgICAgICBrQXJhYmlj
SW5kaWNOaW5lID0gMHgwNjY5LAogICAgICAgIGtFeHRlbmRlZEFyYWJpY0luZGljWmVybyA9IDB4
MDZGMCwKICAgICAgICBrRXh0ZW5kZWRBcmFiaWNJbmRpY09uZSA9IDB4MDZGMSwKICAgICAgICBr
RXh0ZW5kZWRBcmFiaWNJbmRpY1R3byA9IDB4MDZGMiwKICAgICAgICBrRXh0ZW5kZWRBcmFiaWNJ
bmRpY1RocmVlID0gMHgwNkYzLAogICAgICAgIGtFeHRlbmRlZEFyYWJpY0luZGljRm91ciA9IDB4
MDZGNCwKICAgICAgICBrRXh0ZW5kZWRBcmFiaWNJbmRpY0ZpdmUgPSAweDA2RjUsCiAgICAgICAg
a0V4dGVuZGVkQXJhYmljSW5kaWNTaXggPSAweDA2RjYsCiAgICAgICAga0V4dGVuZGVkQXJhYmlj
SW5kaWNTZXZlbiA9IDB4MDZGNywKICAgICAgICBrRXh0ZW5kZWRBcmFiaWNJbmRpY0VpZ2h0ID0g
MHgwNkY4LAogICAgICAgIGtFeHRlbmRlZEFyYWJpY0luZGljTmluZSA9IDB4MDZGOSwKICAgICAg
ICBrRGV2YW5hZ2FyaVplcm8gPSAweDA5NjYsCiAgICAgICAga0RldmFuYWdhcmlPbmUgPSAweDA5
NjcsCiAgICAgICAga0RldmFuYWdhcmlUd28gPSAweDA5NjgsCiAgICAgICAga0RldmFuYWdhcmlU
aHJlZSA9IDB4MDk2OSwKICAgICAgICBrRGV2YW5hZ2FyaUZvdXIgPSAweDA5NkEsCiAgICAgICAg
a0RldmFuYWdhcmlGaXZlID0gMHgwOTZCLAogICAgICAgIGtEZXZhbmFnYXJpU2l4ID0gMHgwOTZD
LAogICAgICAgIGtEZXZhbmFnYXJpU2V2ZW4gPSAweDA5NkQsCiAgICAgICAga0RldmFuYWdhcmlF
aWdodCA9IDB4MDk2RSwKICAgICAgICBrRGV2YW5hZ2FyaU5pbmUgPSAweDA5NkYsCiAgICAgICAg
a0JlbmdhbGlaZXJvID0gMHgwOUU2LAogICAgICAgIGtCZW5nYWxpT25lID0gMHgwOUU3LAogICAg
ICAgIGtCZW5nYWxpVHdvID0gMHgwOUU4LAogICAgICAgIGtCZW5nYWxpVGhyZWUgPSAweDA5RTks
CiAgICAgICAga0JlbmdhbGlGb3VyID0gMHgwOUVBLAogICAgICAgIGtCZW5nYWxpRml2ZSA9IDB4
MDlFQiwKICAgICAgICBrQmVuZ2FsaVNpeCA9IDB4MDlFQywKICAgICAgICBrQmVuZ2FsaVNldmVu
ID0gMHgwOUVELAogICAgICAgIGtCZW5nYWxpRWlnaHQgPSAweDA5RUUsCiAgICAgICAga0Jlbmdh
bGlOaW5lID0gMHgwOUVGLAogICAgICAgIGtHdXJtdWtoaVplcm8gPSAweDBBNjYsCiAgICAgICAg
a0d1cm11a2hpT25lID0gMHgwQTY3LAogICAgICAgIGtHdXJtdWtoaVR3byA9IDB4MEE2OCwKICAg
ICAgICBrR3VybXVraGlUaHJlZSA9IDB4MEE2OSwKICAgICAgICBrR3VybXVraGlGb3VyID0gMHgw
QTZBLAogICAgICAgIGtHdXJtdWtoaUZpdmUgPSAweDBBNkIsCiAgICAgICAga0d1cm11a2hpU2l4
ID0gMHgwQTZDLAogICAgICAgIGtHdXJtdWtoaVNldmVuID0gMHgwQTZELAogICAgICAgIGtHdXJt
dWtoaUVpZ2h0ID0gMHgwQTZFLAogICAgICAgIGtHdXJtdWtoaU5pbmUgPSAweDBBNkYsCiAgICAg
ICAga0d1amFyYXRpWmVybyA9IDB4MEFFNiwKICAgICAgICBrR3VqYXJhdGlPbmUgPSAweDBBRTcs
CiAgICAgICAga0d1amFyYXRpVHdvID0gMHgwQUU4LAogICAgICAgIGtHdWphcmF0aVRocmVlID0g
MHgwQUU5LAogICAgICAgIGtHdWphcmF0aUZvdXIgPSAweDBBRUEsCiAgICAgICAga0d1amFyYXRp
Rml2ZSA9IDB4MEFFQiwKICAgICAgICBrR3VqYXJhdGlTaXggPSAweDBBRUMsCiAgICAgICAga0d1
amFyYXRpU2V2ZW4gPSAweDBBRUQsCiAgICAgICAga0d1amFyYXRpRWlnaHQgPSAweDBBRUUsCiAg
ICAgICAga0d1amFyYXRpTmluZSA9IDB4MEFFRiwKICAgICAgICBrT3JpeWFaZXJvID0gMHgwQjY2
LAogICAgICAgIGtPcml5YU9uZSA9IDB4MEI2NywKICAgICAgICBrT3JpeWFUd28gPSAweDBCNjgs
CiAgICAgICAga09yaXlhVGhyZWUgPSAweDBCNjksCiAgICAgICAga09yaXlhRm91ciA9IDB4MEI2
QSwKICAgICAgICBrT3JpeWFGaXZlID0gMHgwQjZCLAogICAgICAgIGtPcml5YVNpeCA9IDB4MEI2
QywKICAgICAgICBrT3JpeWFTZXZlbiA9IDB4MEI2RCwKICAgICAgICBrT3JpeWFFaWdodCA9IDB4
MEI2RSwKICAgICAgICBrT3JpeWFOaW5lID0gMHgwQjZGLAogICAgICAgIGtUYW1pbE9uZSA9IDB4
MEJFNywKICAgICAgICBrVGFtaWxUd28gPSAweDBCRTgsCiAgICAgICAga1RhbWlsVGhyZWUgPSAw
eDBCRTksCiAgICAgICAga1RhbWlsRm91ciA9IDB4MEJFQSwKICAgICAgICBrVGFtaWxGaXZlID0g
MHgwQkVCLAogICAgICAgIGtUYW1pbFNpeCA9IDB4MEJFQywKICAgICAgICBrVGFtaWxTZXZlbiA9
IDB4MEJFRCwKICAgICAgICBrVGFtaWxFaWdodCA9IDB4MEJFRSwKICAgICAgICBrVGFtaWxOaW5l
ID0gMHgwQkVGLAogICAgICAgIGtUZWx1Z3VaZXJvID0gMHgwQzY2LAogICAgICAgIGtUZWx1Z3VP
bmUgPSAweDBDNjcsCiAgICAgICAga1RlbHVndVR3byA9IDB4MEM2OCwKICAgICAgICBrVGVsdWd1
VGhyZWUgPSAweDBDNjksCiAgICAgICAga1RlbHVndUZvdXIgPSAweDBDNkEsCiAgICAgICAga1Rl
bHVndUZpdmUgPSAweDBDNkIsCiAgICAgICAga1RlbHVndVNpeCA9IDB4MEM2QywKICAgICAgICBr
VGVsdWd1U2V2ZW4gPSAweDBDNkQsCiAgICAgICAga1RlbHVndUVpZ2h0ID0gMHgwQzZFLAogICAg
ICAgIGtUZWx1Z3VOaW5lID0gMHgwQzZGLAogICAgICAgIGtLYW5uYWRhWmVybyA9IDB4MENFNiwK
ICAgICAgICBrS2FubmFkYU9uZSA9IDB4MENFNywKICAgICAgICBrS2FubmFkYVR3byA9IDB4MENF
OCwKICAgICAgICBrS2FubmFkYVRocmVlID0gMHgwQ0U5LAogICAgICAgIGtLYW5uYWRhRm91ciA9
IDB4MENFQSwKICAgICAgICBrS2FubmFkYUZpdmUgPSAweDBDRUIsCiAgICAgICAga0thbm5hZGFT
aXggPSAweDBDRUMsCiAgICAgICAga0thbm5hZGFTZXZlbiA9IDB4MENFRCwKICAgICAgICBrS2Fu
bmFkYUVpZ2h0ID0gMHgwQ0VFLAogICAgICAgIGtLYW5uYWRhTmluZSA9IDB4MENFRiwKICAgICAg
ICBrTWFsYXlhbGFtWmVybyA9IDB4MEQ2NiwKICAgICAgICBrTWFsYXlhbGFtT25lID0gMHgwRDY3
LAogICAgICAgIGtNYWxheWFsYW1Ud28gPSAweDBENjgsCiAgICAgICAga01hbGF5YWxhbVRocmVl
ID0gMHgwRDY5LAogICAgICAgIGtNYWxheWFsYW1Gb3VyID0gMHgwRDZBLAogICAgICAgIGtNYWxh
eWFsYW1GaXZlID0gMHgwRDZCLAogICAgICAgIGtNYWxheWFsYW1TaXggPSAweDBENkMsCiAgICAg
ICAga01hbGF5YWxhbVNldmVuID0gMHgwRDZELAogICAgICAgIGtNYWxheWFsYW1FaWdodCA9IDB4
MEQ2RSwKICAgICAgICBrTWFsYXlhbGFtTmluZSA9IDB4MEQ2RiwKICAgICAgICBrVGhhaVplcm8g
PSAweDBFNTAsCiAgICAgICAga1RoYWlPbmUgPSAweDBFNTEsCiAgICAgICAga1RoYWlUd28gPSAw
eDBFNTIsCiAgICAgICAga1RoYWlUaHJlZSA9IDB4MEU1MywKICAgICAgICBrVGhhaUZvdXIgPSAw
eDBFNTQsCiAgICAgICAga1RoYWlGaXZlID0gMHgwRTU1LAogICAgICAgIGtUaGFpU2l4ID0gMHgw
RTU2LAogICAgICAgIGtUaGFpU2V2ZW4gPSAweDBFNTcsCiAgICAgICAga1RoYWlFaWdodCA9IDB4
MEU1OCwKICAgICAgICBrVGhhaU5pbmUgPSAweDBFNTksCiAgICAgICAga0xhb1plcm8gPSAweDBF
RDAsCiAgICAgICAga0xhb09uZSA9IDB4MEVEMSwKICAgICAgICBrTGFvVHdvID0gMHgwRUQyLAog
ICAgICAgIGtMYW9UaHJlZSA9IDB4MEVEMywKICAgICAgICBrTGFvRm91ciA9IDB4MEVENCwKICAg
ICAgICBrTGFvRml2ZSA9IDB4MEVENSwKICAgICAgICBrTGFvU2l4ID0gMHgwRUQ2LAogICAgICAg
IGtMYW9TZXZlbiA9IDB4MEVENywKICAgICAgICBrTGFvRWlnaHQgPSAweDBFRDgsCiAgICAgICAg
a0xhb05pbmUgPSAweDBFRDksCiAgICAgICAga1RpYmV0YW5aZXJvID0gMHgwRjIwLAogICAgICAg
IGtUaWJldGFuT25lID0gMHgwRjIxLAogICAgICAgIGtUaWJldGFuVHdvID0gMHgwRjIyLAogICAg
ICAgIGtUaWJldGFuVGhyZWUgPSAweDBGMjMsCiAgICAgICAga1RpYmV0YW5Gb3VyID0gMHgwRjI0
LAogICAgICAgIGtUaWJldGFuRml2ZSA9IDB4MEYyNSwKICAgICAgICBrVGliZXRhblNpeCA9IDB4
MEYyNiwKICAgICAgICBrVGliZXRhblNldmVuID0gMHgwRjI3LAogICAgICAgIGtUaWJldGFuRWln
aHQgPSAweDBGMjgsCiAgICAgICAga1RpYmV0YW5OaW5lID0gMHgwRjI5LAogICAgICAgIGtNeWFu
bWFyWmVybyA9IDB4MTA0MCwKICAgICAgICBrTXlhbm1hck9uZSA9IDB4MTA0MSwKICAgICAgICBr
TXlhbm1hclR3byA9IDB4MTA0MiwKICAgICAgICBrTXlhbm1hclRocmVlID0gMHgxMDQzLAogICAg
ICAgIGtNeWFubWFyRm91ciA9IDB4MTA0NCwKICAgICAgICBrTXlhbm1hckZpdmUgPSAweDEwNDUs
CiAgICAgICAga015YW5tYXJTaXggPSAweDEwNDYsCiAgICAgICAga015YW5tYXJTZXZlbiA9IDB4
MTA0NywKICAgICAgICBrTXlhbm1hckVpZ2h0ID0gMHgxMDQ4LAogICAgICAgIGtNeWFubWFyTmlu
ZSA9IDB4MTA0OSwKICAgICAgICBrRXRoaW9waWNPbmUgPSAweDEzNjksCiAgICAgICAga0V0aGlv
cGljVHdvID0gMHgxMzZBLAogICAgICAgIGtFdGhpb3BpY1RocmVlID0gMHgxMzZCLAogICAgICAg
IGtFdGhpb3BpY0ZvdXIgPSAweDEzNkMsCiAgICAgICAga0V0aGlvcGljRml2ZSA9IDB4MTM2RCwK
ICAgICAgICBrRXRoaW9waWNTaXggPSAweDEzNkUsCiAgICAgICAga0V0aGlvcGljU2V2ZW4gPSAw
eDEzNkYsCiAgICAgICAga0V0aGlvcGljRWlnaHQgPSAweDEzNzAsCiAgICAgICAga0V0aGlvcGlj
TmluZSA9IDB4MTM3MSwKICAgICAgICBrS2htZXJaZXJvID0gMHgxN0UwLAogICAgICAgIGtLaG1l
ck9uZSA9IDB4MTdFMSwKICAgICAgICBrS2htZXJUd28gPSAweDE3RTIsCiAgICAgICAga0tobWVy
VGhyZWUgPSAweDE3RTMsCiAgICAgICAga0tobWVyRm91ciA9IDB4MTdFNCwKICAgICAgICBrS2ht
ZXJGaXZlID0gMHgxN0U1LAogICAgICAgIGtLaG1lclNpeCA9IDB4MTdFNiwKICAgICAgICBrS2ht
ZXJTZXZlbiA9IDB4MTdFNywKICAgICAgICBrS2htZXJFaWdodCA9IDB4MTdFOCwKICAgICAgICBr
S2htZXJOaW5lID0gMHgxN0U5LAogICAgICAgIGtNb25nb2xpYW5aZXJvID0gMHgxODEwLAogICAg
ICAgIGtNb25nb2xpYW5PbmUgPSAweDE4MTEsCiAgICAgICAga01vbmdvbGlhblR3byA9IDB4MTgx
MiwKICAgICAgICBrTW9uZ29saWFuVGhyZWUgPSAweDE4MTMsCiAgICAgICAga01vbmdvbGlhbkZv
dXIgPSAweDE4MTQsCiAgICAgICAga01vbmdvbGlhbkZpdmUgPSAweDE4MTUsCiAgICAgICAga01v
bmdvbGlhblNpeCA9IDB4MTgxNiwKICAgICAgICBrTW9uZ29saWFuU2V2ZW4gPSAweDE4MTcsCiAg
ICAgICAga01vbmdvbGlhbkVpZ2h0ID0gMHgxODE4LAogICAgICAgIGtNb25nb2xpYW5OaW5lID0g
MHgxODE5LAoKCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBrSGFuZ3pob3VPbmUgPSAweDMw
MjEsCiAgICAgICAga0hhbmd6aG91VHdvID0gMHgzMDIyLAogICAgICAgIGtIYW5nemhvdVRocmVl
ID0gMHgzMDIzLAogICAgICAgIGtIYW5nemhvdUZvdXIgPSAweDMwMjQsCiAgICAgICAga0hhbmd6
aG91Rml2ZSA9IDB4MzAyNSwKICAgICAgICBrSGFuZ3pob3VTaXggPSAweDMwMjYsCiAgICAgICAg
a0hhbmd6aG91U2V2ZW4gPSAweDMwMjcsCiAgICAgICAga0hhbmd6aG91RWlnaHQgPSAweDMwMjgs
CiAgICAgICAga0hhbmd6aG91TmluZSA9IDB4MzAyOSwKICAgICAgICBrSGFuWmVybyA9IDB4MzAw
NywKICAgICAgICBrSGFuT25lID0gMHg0RTAwLAogICAgICAgIGtIYW5Ud28gPSAweDRFOEMsCiAg
ICAgICAga0hhblRocmVlID0gMHg0RTA5LAogICAgICAgIGtIYW5Gb3VyID0gMHg1NkRCLAogICAg
ICAgIGtIYW5GaXZlID0gMHg0RTk0LAogICAgICAgIGtIYW5TaXggPSAweDUxNkQsCiAgICAgICAg
a0hhblNldmVuID0gMHg0RTAzLAogICAgICAgIGtIYW5FaWdodCA9IDB4NTE2QiwKICAgICAgICBr
SGFuTmluZSA9IDB4NEU1RCwKICAgICAgICBrU3VwZXJzY3JpcHRPbmUgPSAweDAwQjksCiAgICAg
ICAga1N1cGVyc2NyaXB0VGhyZWUgPSAweDAwQjMsCiAgICAgICAga1N1cGVyc2NyaXB0VHdvID0g
MHgwMEIyLAoKICAgICAgICAgCiAgICAgICAga0Vhc3Rlcm5BcmFiaWNJbmRpY1plcm8gPSBrRXh0
ZW5kZWRBcmFiaWNJbmRpY1plcm8sCiAgICAgICAga0Vhc3Rlcm5BcmFiaWNJbmRpY09uZSA9IGtF
eHRlbmRlZEFyYWJpY0luZGljT25lLAogICAgICAgIGtFYXN0ZXJuQXJhYmljSW5kaWNUd28gPSBr
RXh0ZW5kZWRBcmFiaWNJbmRpY1R3bywKICAgICAgICBrRWFzdGVybkFyYWJpY0luZGljVGhyZWUg
PSBrRXh0ZW5kZWRBcmFiaWNJbmRpY1RocmVlLAogICAgICAgIGtFYXN0ZXJuQXJhYmljSW5kaWNG
b3VyID0ga0V4dGVuZGVkQXJhYmljSW5kaWNGb3VyLAogICAgICAgIGtFYXN0ZXJuQXJhYmljSW5k
aWNGaXZlID0ga0V4dGVuZGVkQXJhYmljSW5kaWNGaXZlLAogICAgICAgIGtFYXN0ZXJuQXJhYmlj
SW5kaWNTaXggPSBrRXh0ZW5kZWRBcmFiaWNJbmRpY1NpeCwKICAgICAgICBrRWFzdGVybkFyYWJp
Y0luZGljU2V2ZW4gPSBrRXh0ZW5kZWRBcmFiaWNJbmRpY1NldmVuLAogICAgICAgIGtFYXN0ZXJu
QXJhYmljSW5kaWNFaWdodCA9IGtFeHRlbmRlZEFyYWJpY0luZGljRWlnaHQsCiAgICAgICAga0Vh
c3Rlcm5BcmFiaWNJbmRpY05pbmUgPSBrRXh0ZW5kZWRBcmFiaWNJbmRpY05pbmUKICAgIH07Cn07
CgogCiAKIAoKY2xhc3MgVUFTQ0lJIHsKcHVibGljOgogICAgZW51bSBFQVNDSUlOYW1lcyB7CiAg
ICAgICAga051bGwgPSAweDAwMDAsCiAgICAgICAga1N0YXJ0T2ZIZWFkaW5nID0gMHgwMDAxLAog
ICAgICAgIGtTdGFydE9mVGV4dCA9IDB4MDAwMiwKICAgICAgICBrRW5kT2ZUZXh0ID0gMHgwMDAz
LAogICAgICAgIGtFbmRPZlRyYW5zbWlzc2lvbiA9IDB4MDAwNCwKICAgICAgICBrRW5xdWlyeSA9
IDB4MDAwNSwKICAgICAgICBrQWNrbm93bGVkZ2UgPSAweDAwMDYsCiAgICAgICAga0JlbGwgPSAw
eDAwMDcsCiAgICAgICAga0JhY2tzcGFjZSA9IDB4MDAwOCwKCiAgICAgICAga0hvcml6b250YWxU
YWJ1bGF0aW9uID0gMHgwMDA5LAogICAgICAgIGtMaW5lRmVlZCA9IDB4MDAwQSwKICAgICAgICBr
VmVydGljYWxUYWJ1bGF0aW9uID0gMHgwMDBCLAogICAgICAgIGtGb3JtRmVlZCA9IDB4MDAwQywK
ICAgICAgICBrQ2FycmlhZ2VSZXR1cm4gPSAweDAwMEQsCiAgICAgICAga1NoaWZ0T3V0ID0gMHgw
MDBFLAogICAgICAgIGtTaGlmdEluID0gMHgwMDBGLAogICAgICAgIGtEYXRhTGlua0VzY2FwZSA9
IDB4MDAxMCwKICAgICAgICBrRGV2aWNlQ29udHJvbE9uZSA9IDB4MDAxMSwKICAgICAgICBrRGV2
aWNlQ29udHJvbFR3byA9IDB4MDAxMiwKICAgICAgICBrRGV2aWNlQ29udHJvbFRocmVlID0gMHgw
MDEzLAogICAgICAgIGtEZXZpY2VDb250cm9sRm91ciA9IDB4MDAxNCwKICAgICAgICBrTmVnYXRp
dmVBY2tub3dsZWRnZSA9IDB4MDAxNSwKICAgICAgICBrU3luY2hyb25vdXNJZGxlID0gMHgwMDE2
LAogICAgICAgIGtFbmRPZlRyYW5zbWlzc2lvbkJsb2NrID0gMHgwMDE3LAogICAgICAgIGtDYW5j
ZWwgPSAweDAwMTgsCiAgICAgICAga0VuZE9mTWVkaXVtID0gMHgwMDE5LAogICAgICAgIGtTdWJz
dGl0dXRlID0gMHgwMDFBLAogICAgICAgIGtFc2NhcGUgPSAweDAwMUIsCiAgICAgICAga0ZpbGVT
ZXBhcmF0b3IgPSAweDAwMUMsCiAgICAgICAga0dyb3VwU2VwYXJhdG9yID0gMHgwMDFELAogICAg
ICAgIGtSZWNvcmRTZXBhcmF0b3IgPSAweDAwMUUsCiAgICAgICAga1VuaXRTZXBhcmF0b3IgPSAw
eDAwMUYsCgogICAgICAgIGtTcGFjZSA9IDB4MDAyMCwKICAgICAgICBrRXhjbGFtYXRpb25NYXJr
ID0gMHgwMDIxLAogICAgICAgIGtRdW90YXRpb25NYXJrID0gMHgwMDIyLAogICAgICAgIGtOdW1i
ZXJTaWduID0gMHgwMDIzLAogICAgICAgIGtEb2xsYXJTaWduID0gMHgwMDI0LAogICAgICAgIGtQ
ZXJjZW50U2lnbiA9IDB4MDAyNSwKICAgICAgICBrQW1wZXJzYW5kID0gMHgwMDI2LAogICAgICAg
IGtBcG9zdHJvcGhlID0gMHgwMDI3LAogICAgICAgIGtMZWZ0UGFyZW50aGVzaXMgPSAweDAwMjgs
CiAgICAgICAga1JpZ2h0UGFyZW50aGVzaXMgPSAweDAwMjksCiAgICAgICAga0FzdGVyaXNrID0g
MHgwMDJBLAogICAgICAgIGtQbHVzU2lnbiA9IDB4MDAyQiwKICAgICAgICBrQ29tbWEgPSAweDAw
MkMsCiAgICAgICAga0h5cGhlbk1pbnVzID0gMHgwMDJELAogICAgICAgIGtGdWxsU3RvcCA9IDB4
MDAyRSwKICAgICAgICBrU29saWR1cyA9IDB4MDAyRiwKICAgICAgICBrRGlnaXRaZXJvID0gMHgw
MDMwLAogICAgICAgIGtEaWdpdE9uZSA9IDB4MDAzMSwKICAgICAgICBrRGlnaXRUd28gPSAweDAw
MzIsCiAgICAgICAga0RpZ2l0VGhyZWUgPSAweDAwMzMsCiAgICAgICAga0RpZ2l0Rm91ciA9IDB4
MDAzNCwKICAgICAgICBrRGlnaXRGaXZlID0gMHgwMDM1LAogICAgICAgIGtEaWdpdFNpeCA9IDB4
MDAzNiwKICAgICAgICBrRGlnaXRTZXZlbiA9IDB4MDAzNywKICAgICAgICBrRGlnaXRFaWdodCA9
IDB4MDAzOCwKICAgICAgICBrRGlnaXROaW5lID0gMHgwMDM5LAogICAgICAgIGtDb2xvbiA9IDB4
MDAzQSwKICAgICAgICBrU2VtaWNvbG9uID0gMHgwMDNCLAogICAgICAgIGtMZXNzVGhhblNpZ24g
PSAweDAwM0MsCiAgICAgICAga0VxdWFsc1NpZ24gPSAweDAwM0QsCiAgICAgICAga0dyZWF0ZXJU
aGFuU2lnbiA9IDB4MDAzRSwKICAgICAgICBrUXVlc3Rpb25NYXJrID0gMHgwMDNGLAogICAgICAg
IGtDb21tZXJjaWFsQXQgPSAweDAwNDAsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBID0gMHgwMDQx
LAogICAgICAgIGtDYXBpdGFsTGV0dGVyQiA9IDB4MDA0MiwKICAgICAgICBrQ2FwaXRhbExldHRl
ckMgPSAweDAwNDMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJEID0gMHgwMDQ0LAogICAgICAgIGtD
YXBpdGFsTGV0dGVyRSA9IDB4MDA0NSwKICAgICAgICBrQ2FwaXRhbExldHRlckYgPSAweDAwNDYs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJHID0gMHgwMDQ3LAogICAgICAgIGtDYXBpdGFsTGV0dGVy
SCA9IDB4MDA0OCwKICAgICAgICBrQ2FwaXRhbExldHRlckkgPSAweDAwNDksCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJKID0gMHgwMDRBLAogICAgICAgIGtDYXBpdGFsTGV0dGVySyA9IDB4MDA0QiwK
ICAgICAgICBrQ2FwaXRhbExldHRlckwgPSAweDAwNEMsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJN
ID0gMHgwMDRELAogICAgICAgIGtDYXBpdGFsTGV0dGVyTiA9IDB4MDA0RSwKICAgICAgICBrQ2Fw
aXRhbExldHRlck8gPSAweDAwNEYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJQID0gMHgwMDUwLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyUSA9IDB4MDA1MSwKICAgICAgICBrQ2FwaXRhbExldHRlclIg
PSAweDAwNTIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJTID0gMHgwMDUzLAogICAgICAgIGtDYXBp
dGFsTGV0dGVyVCA9IDB4MDA1NCwKICAgICAgICBrQ2FwaXRhbExldHRlclUgPSAweDAwNTUsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJWID0gMHgwMDU2LAogICAgICAgIGtDYXBpdGFsTGV0dGVyVyA9
IDB4MDA1NywKICAgICAgICBrQ2FwaXRhbExldHRlclggPSAweDAwNTgsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJZID0gMHgwMDU5LAogICAgICAgIGtDYXBpdGFsTGV0dGVyWiA9IDB4MDA1QSwKICAg
ICAgICBrTGVmdFNxdWFyZUJyYWNrZXQgPSAweDAwNUIsCiAgICAgICAga1JldmVyc2VTb2xpZHVz
ID0gMHgwMDVDLAogICAgICAgIGtSaWdodFNxdWFyZUJyYWNrZXQgPSAweDAwNUQsCiAgICAgICAg
a0NpcmN1bWZsZXhBY2NlbnQgPSAweDAwNUUsCiAgICAgICAga0xvd0xpbmUgPSAweDAwNUYsCiAg
ICAgICAga0dyYXZlQWNjZW50ID0gMHgwMDYwLAogICAgICAgIGtTbWFsbExldHRlckEgPSAweDAw
NjEsCiAgICAgICAga1NtYWxsTGV0dGVyQiA9IDB4MDA2MiwKICAgICAgICBrU21hbGxMZXR0ZXJD
ID0gMHgwMDYzLAogICAgICAgIGtTbWFsbExldHRlckQgPSAweDAwNjQsCiAgICAgICAga1NtYWxs
TGV0dGVyRSA9IDB4MDA2NSwKICAgICAgICBrU21hbGxMZXR0ZXJGID0gMHgwMDY2LAogICAgICAg
IGtTbWFsbExldHRlckcgPSAweDAwNjcsCiAgICAgICAga1NtYWxsTGV0dGVySCA9IDB4MDA2OCwK
ICAgICAgICBrU21hbGxMZXR0ZXJJID0gMHgwMDY5LAogICAgICAgIGtTbWFsbExldHRlckogPSAw
eDAwNkEsCiAgICAgICAga1NtYWxsTGV0dGVySyA9IDB4MDA2QiwKICAgICAgICBrU21hbGxMZXR0
ZXJMID0gMHgwMDZDLAogICAgICAgIGtTbWFsbExldHRlck0gPSAweDAwNkQsCiAgICAgICAga1Nt
YWxsTGV0dGVyTiA9IDB4MDA2RSwKICAgICAgICBrU21hbGxMZXR0ZXJPID0gMHgwMDZGLAogICAg
ICAgIGtTbWFsbExldHRlclAgPSAweDAwNzAsCiAgICAgICAga1NtYWxsTGV0dGVyUSA9IDB4MDA3
MSwKICAgICAgICBrU21hbGxMZXR0ZXJSID0gMHgwMDcyLAogICAgICAgIGtTbWFsbExldHRlclMg
PSAweDAwNzMsCiAgICAgICAga1NtYWxsTGV0dGVyVCA9IDB4MDA3NCwKICAgICAgICBrU21hbGxM
ZXR0ZXJVID0gMHgwMDc1LAogICAgICAgIGtTbWFsbExldHRlclYgPSAweDAwNzYsCiAgICAgICAg
a1NtYWxsTGV0dGVyVyA9IDB4MDA3NywKICAgICAgICBrU21hbGxMZXR0ZXJYID0gMHgwMDc4LAog
ICAgICAgIGtTbWFsbExldHRlclkgPSAweDAwNzksCiAgICAgICAga1NtYWxsTGV0dGVyWiA9IDB4
MDA3QSwKICAgICAgICBrTGVmdEN1cmx5QnJhY2tldCA9IDB4MDA3QiwKICAgICAgICBrVmVydGlj
YWxMaW5lID0gMHgwMDdDLAogICAgICAgIGtSaWdodEN1cmx5QnJhY2tldCA9IDB4MDA3RCwKICAg
ICAgICBrVGlsZGUgPSAweDAwN0UsCiAgICAgICAga0RlbGV0ZSA9IDB4MDA3RiwKCiAgICAgICAg
IAoKICAgICAgICBrQXBvc3Ryb3BoZVF1b3RlID0ga0Fwb3N0cm9waGUsCiAgICAgICAga09wZW5p
bmdQYXJlbnRoZXNpcyA9IGtMZWZ0UGFyZW50aGVzaXMsCiAgICAgICAga0Nsb3NpbmdQYXJlbnRo
ZXNpcyA9IGtSaWdodFBhcmVudGhlc2lzLAogICAgICAgIGtQZXJpb2QgPSBrRnVsbFN0b3AsCiAg
ICAgICAga1NsYXNoID0ga1NvbGlkdXMsCiAgICAgICAga0JhY2tzbGFzaCA9IGtSZXZlcnNlU29s
aWR1cywKICAgICAgICBrU3BhY2luZ1VuZGVyc2NvcmUgPSBrTG93TGluZSwKICAgICAgICBrT3Bl
bmluZ0N1cmx5QnJhY2tldCA9IGtMZWZ0Q3VybHlCcmFja2V0LAogICAgICAgIGtWZXJ0aWNhbEJh
ciA9IGtWZXJ0aWNhbExpbmUsCiAgICAgICAga0Nsb3NpbmdDdXJseUJyYWNrZXQgPSBrUmlnaHRD
dXJseUJyYWNrZXQKICAgIH07Cn07CgogCiAKIApjbGFzcyBVTGF0aW4xIHsKcHVibGljOgogICAg
ZW51bSBFTGF0aW4xTmFtZXMgewogICAgICAgIGtOdWxsID0gMHgwMDAwLAogICAgICAgIGtTdGFy
dE9mSGVhZGluZyA9IDB4MDAwMSwKICAgICAgICBrU3RhcnRPZlRleHQgPSAweDAwMDIsCiAgICAg
ICAga0VuZE9mVGV4dCA9IDB4MDAwMywKICAgICAgICBrRW5kT2ZUcmFuc21pc3Npb24gPSAweDAw
MDQsCiAgICAgICAga0VucXVpcnkgPSAweDAwMDUsCiAgICAgICAga0Fja25vd2xlZGdlID0gMHgw
MDA2LAogICAgICAgIGtCZWxsID0gMHgwMDA3LAogICAgICAgIGtCYWNrc3BhY2UgPSAweDAwMDgs
CgogICAgICAgIGtIb3Jpem9udGFsVGFidWxhdGlvbiA9IDB4MDAwOSwKICAgICAgICBrTGluZUZl
ZWQgPSAweDAwMEEsCiAgICAgICAga1ZlcnRpY2FsVGFidWxhdGlvbiA9IDB4MDAwQiwKICAgICAg
ICBrRm9ybUZlZWQgPSAweDAwMEMsCiAgICAgICAga0NhcnJpYWdlUmV0dXJuID0gMHgwMDBELAog
ICAgICAgIGtTaGlmdE91dCA9IDB4MDAwRSwKICAgICAgICBrU2hpZnRJbiA9IDB4MDAwRiwKICAg
ICAgICBrRGF0YUxpbmtFc2NhcGUgPSAweDAwMTAsCiAgICAgICAga0RldmljZUNvbnRyb2xPbmUg
PSAweDAwMTEsCiAgICAgICAga0RldmljZUNvbnRyb2xUd28gPSAweDAwMTIsCiAgICAgICAga0Rl
dmljZUNvbnRyb2xUaHJlZSA9IDB4MDAxMywKICAgICAgICBrRGV2aWNlQ29udHJvbEZvdXIgPSAw
eDAwMTQsCiAgICAgICAga05lZ2F0aXZlQWNrbm93bGVkZ2UgPSAweDAwMTUsCiAgICAgICAga1N5
bmNocm9ub3VzSWRsZSA9IDB4MDAxNiwKICAgICAgICBrRW5kT2ZUcmFuc21pc3Npb25CbG9jayA9
IDB4MDAxNywKICAgICAgICBrQ2FuY2VsID0gMHgwMDE4LAogICAgICAgIGtFbmRPZk1lZGl1bSA9
IDB4MDAxOSwKICAgICAgICBrU3Vic3RpdHV0ZSA9IDB4MDAxQSwKICAgICAgICBrRXNjYXBlID0g
MHgwMDFCLAogICAgICAgIGtGaWxlU2VwYXJhdG9yID0gMHgwMDFDLAogICAgICAgIGtHcm91cFNl
cGFyYXRvciA9IDB4MDAxRCwKICAgICAgICBrUmVjb3JkU2VwYXJhdG9yID0gMHgwMDFFLAogICAg
ICAgIGtVbml0U2VwYXJhdG9yID0gMHgwMDFGLAoKICAgICAgICBrU3BhY2UgPSAweDAwMjAsCiAg
ICAgICAga0V4Y2xhbWF0aW9uTWFyayA9IDB4MDAyMSwKICAgICAgICBrUXVvdGF0aW9uTWFyayA9
IDB4MDAyMiwKICAgICAgICBrTnVtYmVyU2lnbiA9IDB4MDAyMywKICAgICAgICBrRG9sbGFyU2ln
biA9IDB4MDAyNCwKICAgICAgICBrUGVyY2VudFNpZ24gPSAweDAwMjUsCiAgICAgICAga0FtcGVy
c2FuZCA9IDB4MDAyNiwKICAgICAgICBrQXBvc3Ryb3BoZSA9IDB4MDAyNywKICAgICAgICBrTGVm
dFBhcmVudGhlc2lzID0gMHgwMDI4LAogICAgICAgIGtSaWdodFBhcmVudGhlc2lzID0gMHgwMDI5
LAogICAgICAgIGtBc3RlcmlzayA9IDB4MDAyQSwKICAgICAgICBrUGx1c1NpZ24gPSAweDAwMkIs
CiAgICAgICAga0NvbW1hID0gMHgwMDJDLAogICAgICAgIGtIeXBoZW5NaW51cyA9IDB4MDAyRCwK
ICAgICAgICBrRnVsbFN0b3AgPSAweDAwMkUsCiAgICAgICAga1NvbGlkdXMgPSAweDAwMkYsCiAg
ICAgICAga0RpZ2l0WmVybyA9IDB4MDAzMCwKICAgICAgICBrRGlnaXRPbmUgPSAweDAwMzEsCiAg
ICAgICAga0RpZ2l0VHdvID0gMHgwMDMyLAogICAgICAgIGtEaWdpdFRocmVlID0gMHgwMDMzLAog
ICAgICAgIGtEaWdpdEZvdXIgPSAweDAwMzQsCiAgICAgICAga0RpZ2l0Rml2ZSA9IDB4MDAzNSwK
ICAgICAgICBrRGlnaXRTaXggPSAweDAwMzYsCiAgICAgICAga0RpZ2l0U2V2ZW4gPSAweDAwMzcs
CiAgICAgICAga0RpZ2l0RWlnaHQgPSAweDAwMzgsCiAgICAgICAga0RpZ2l0TmluZSA9IDB4MDAz
OSwKICAgICAgICBrQ29sb24gPSAweDAwM0EsCiAgICAgICAga1NlbWljb2xvbiA9IDB4MDAzQiwK
ICAgICAgICBrTGVzc1RoYW5TaWduID0gMHgwMDNDLAogICAgICAgIGtFcXVhbHNTaWduID0gMHgw
MDNELAogICAgICAgIGtHcmVhdGVyVGhhblNpZ24gPSAweDAwM0UsCiAgICAgICAga1F1ZXN0aW9u
TWFyayA9IDB4MDAzRiwKICAgICAgICBrQ29tbWVyY2lhbEF0ID0gMHgwMDQwLAogICAgICAgIGtD
YXBpdGFsTGV0dGVyQSA9IDB4MDA0MSwKICAgICAgICBrQ2FwaXRhbExldHRlckIgPSAweDAwNDIs
CiAgICAgICAga0NhcGl0YWxMZXR0ZXJDID0gMHgwMDQzLAogICAgICAgIGtDYXBpdGFsTGV0dGVy
RCA9IDB4MDA0NCwKICAgICAgICBrQ2FwaXRhbExldHRlckUgPSAweDAwNDUsCiAgICAgICAga0Nh
cGl0YWxMZXR0ZXJGID0gMHgwMDQ2LAogICAgICAgIGtDYXBpdGFsTGV0dGVyRyA9IDB4MDA0NywK
ICAgICAgICBrQ2FwaXRhbExldHRlckggPSAweDAwNDgsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJJ
ID0gMHgwMDQ5LAogICAgICAgIGtDYXBpdGFsTGV0dGVySiA9IDB4MDA0QSwKICAgICAgICBrQ2Fw
aXRhbExldHRlcksgPSAweDAwNEIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJMID0gMHgwMDRDLAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyTSA9IDB4MDA0RCwKICAgICAgICBrQ2FwaXRhbExldHRlck4g
PSAweDAwNEUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPID0gMHgwMDRGLAogICAgICAgIGtDYXBp
dGFsTGV0dGVyUCA9IDB4MDA1MCwKICAgICAgICBrQ2FwaXRhbExldHRlclEgPSAweDAwNTEsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJSID0gMHgwMDUyLAogICAgICAgIGtDYXBpdGFsTGV0dGVyUyA9
IDB4MDA1MywKICAgICAgICBrQ2FwaXRhbExldHRlclQgPSAweDAwNTQsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJVID0gMHgwMDU1LAogICAgICAgIGtDYXBpdGFsTGV0dGVyViA9IDB4MDA1NiwKICAg
ICAgICBrQ2FwaXRhbExldHRlclcgPSAweDAwNTcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJYID0g
MHgwMDU4LAogICAgICAgIGtDYXBpdGFsTGV0dGVyWSA9IDB4MDA1OSwKICAgICAgICBrQ2FwaXRh
bExldHRlclogPSAweDAwNUEsCiAgICAgICAga0xlZnRTcXVhcmVCcmFja2V0ID0gMHgwMDVCLAog
ICAgICAgIGtSZXZlcnNlU29saWR1cyA9IDB4MDA1QywKICAgICAgICBrUmlnaHRTcXVhcmVCcmFj
a2V0ID0gMHgwMDVELAogICAgICAgIGtDaXJjdW1mbGV4QWNjZW50ID0gMHgwMDVFLAogICAgICAg
IGtMb3dMaW5lID0gMHgwMDVGLAogICAgICAgIGtHcmF2ZUFjY2VudCA9IDB4MDA2MCwKICAgICAg
ICBrU21hbGxMZXR0ZXJBID0gMHgwMDYxLAogICAgICAgIGtTbWFsbExldHRlckIgPSAweDAwNjIs
CiAgICAgICAga1NtYWxsTGV0dGVyQyA9IDB4MDA2MywKICAgICAgICBrU21hbGxMZXR0ZXJEID0g
MHgwMDY0LAogICAgICAgIGtTbWFsbExldHRlckUgPSAweDAwNjUsCiAgICAgICAga1NtYWxsTGV0
dGVyRiA9IDB4MDA2NiwKICAgICAgICBrU21hbGxMZXR0ZXJHID0gMHgwMDY3LAogICAgICAgIGtT
bWFsbExldHRlckggPSAweDAwNjgsCiAgICAgICAga1NtYWxsTGV0dGVySSA9IDB4MDA2OSwKICAg
ICAgICBrU21hbGxMZXR0ZXJKID0gMHgwMDZBLAogICAgICAgIGtTbWFsbExldHRlcksgPSAweDAw
NkIsCiAgICAgICAga1NtYWxsTGV0dGVyTCA9IDB4MDA2QywKICAgICAgICBrU21hbGxMZXR0ZXJN
ID0gMHgwMDZELAogICAgICAgIGtTbWFsbExldHRlck4gPSAweDAwNkUsCiAgICAgICAga1NtYWxs
TGV0dGVyTyA9IDB4MDA2RiwKICAgICAgICBrU21hbGxMZXR0ZXJQID0gMHgwMDcwLAogICAgICAg
IGtTbWFsbExldHRlclEgPSAweDAwNzEsCiAgICAgICAga1NtYWxsTGV0dGVyUiA9IDB4MDA3MiwK
ICAgICAgICBrU21hbGxMZXR0ZXJTID0gMHgwMDczLAogICAgICAgIGtTbWFsbExldHRlclQgPSAw
eDAwNzQsCiAgICAgICAga1NtYWxsTGV0dGVyVSA9IDB4MDA3NSwKICAgICAgICBrU21hbGxMZXR0
ZXJWID0gMHgwMDc2LAogICAgICAgIGtTbWFsbExldHRlclcgPSAweDAwNzcsCiAgICAgICAga1Nt
YWxsTGV0dGVyWCA9IDB4MDA3OCwKICAgICAgICBrU21hbGxMZXR0ZXJZID0gMHgwMDc5LAogICAg
ICAgIGtTbWFsbExldHRlclogPSAweDAwN0EsCiAgICAgICAga0xlZnRDdXJseUJyYWNrZXQgPSAw
eDAwN0IsCiAgICAgICAga1ZlcnRpY2FsTGluZSA9IDB4MDA3QywKICAgICAgICBrUmlnaHRDdXJs
eUJyYWNrZXQgPSAweDAwN0QsCiAgICAgICAga1RpbGRlID0gMHgwMDdFLAogICAgICAgIGtEZWxl
dGUgPSAweDAwN0YsCgogICAgICAgIGtOb0JyZWFrU3BhY2UgPSAweDAwQTAsCiAgICAgICAga0lu
dmVydGVkRXhjbGFtYXRpb25NYXJrID0gMHgwMEExLAogICAgICAgIGtDZW50U2lnbiA9IDB4MDBB
MiwKICAgICAgICBrUG91bmRTaWduID0gMHgwMEEzLAogICAgICAgIGtDdXJyZW5jeVNpZ24gPSAw
eDAwQTQsCiAgICAgICAga1llblNpZ24gPSAweDAwQTUsCiAgICAgICAga0Jyb2tlbkJhciA9IDB4
MDBBNiwKICAgICAgICBrU2VjdGlvblNpZ24gPSAweDAwQTcsCiAgICAgICAga0RpYWVyZXNpcyA9
IDB4MDBBOCwKICAgICAgICBrQ29weXJpZ2h0U2lnbiA9IDB4MDBBOSwKICAgICAgICBrRmVtaW5p
bmVPcmRpbmFsSW5kaWNhdG9yID0gMHgwMEFBLAogICAgICAgIGtMZWZ0UG9pbnRpbmdEb3VibGVB
bmdsZVF1b3RhdGlvbk1hcmsgPSAweDAwQUIsCiAgICAgICAga05vdFNpZ24gPSAweDAwQUMsCiAg
ICAgICAga1NvZnRIeXBoZW4gPSAweDAwQUQsCiAgICAgICAga1JlZ2lzdGVyZWRTaWduID0gMHgw
MEFFLAogICAgICAgIGtNYWNyb24gPSAweDAwQUYsCiAgICAgICAga0RlZ3JlZVNpZ24gPSAweDAw
QjAsCiAgICAgICAga1BsdXNNaW51c1NpZ24gPSAweDAwQjEsCiAgICAgICAga0FjdXRlQWNjZW50
ID0gMHgwMEI0LAogICAgICAgIGtNaWNyb1NpZ24gPSAweDAwQjUsCiAgICAgICAga1BpbGNyb3dT
aWduID0gMHgwMEI2LAogICAgICAgIGtNaWRkbGVEb3QgPSAweDAwQjcsCiAgICAgICAga0NlZGls
bGEgPSAweDAwQjgsCiAgICAgICAga01hc2N1bGluZU9yZGluYWxJbmRpY2F0b3IgPSAweDAwQkEs
CiAgICAgICAga1JpZ2h0UG9pbnRpbmdEb3VibGVBbmdsZVF1b3RhdGlvbk1hcmsgPSAweDAwQkIs
CiAgICAgICAga1Z1bGdhckZyYWN0aW9uT25lUXVhcnRlciA9IDB4MDBCQywKICAgICAgICBrVnVs
Z2FyRnJhY3Rpb25PbmVIYWxmID0gMHgwMEJELAogICAgICAgIGtWdWxnYXJGcmFjdGlvblRocmVl
UXVhcnRlcnMgPSAweDAwQkUsCiAgICAgICAga0ludmVydGVkUXVlc3Rpb25NYXJrID0gMHgwMEJG
LAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSA9IDB4MDBDMCwKICAgICAgICBrQ2Fw
aXRhbExldHRlckFXaXRoQWN1dGUgPSAweDAwQzEsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0
aENpcmN1bWZsZXggPSAweDAwQzIsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aFRpbGRlID0g
MHgwMEMzLAogICAgICAgIGtDYXBpdGFsTGV0dGVyQVdpdGhEaWFlcmVzaXMgPSAweDAwQzQsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJBV2l0aFJpbmdBYm92ZSA9IDB4MDBDNSwKICAgICAgICBrQ2Fw
aXRhbExpZ2F0dXJlQWUgPSAweDAwQzYsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJDV2l0aENlZGls
bGEgPSAweDAwQzcsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJFV2l0aEdyYXZlID0gMHgwMEM4LAog
ICAgICAgIGtDYXBpdGFsTGV0dGVyRVdpdGhBY3V0ZSA9IDB4MDBDOSwKICAgICAgICBrQ2FwaXRh
bExldHRlckVXaXRoQ2lyY3VtZmxleCA9IDB4MDBDQSwKICAgICAgICBrQ2FwaXRhbExldHRlckVX
aXRoRGlhZXJlc2lzID0gMHgwMENCLAogICAgICAgIGtDYXBpdGFsTGV0dGVySVdpdGhHcmF2ZSA9
IDB4MDBDQywKICAgICAgICBrQ2FwaXRhbExldHRlcklXaXRoQWN1dGUgPSAweDAwQ0QsCiAgICAg
ICAga0NhcGl0YWxMZXR0ZXJJV2l0aENpcmN1bWZsZXggPSAweDAwQ0UsCiAgICAgICAga0NhcGl0
YWxMZXR0ZXJJV2l0aERpYWVyZXNpcyA9IDB4MDBDRiwKICAgICAgICBrQ2FwaXRhbExldHRlckV0
aCA9IDB4MDBEMCwKICAgICAgICBrQ2FwaXRhbExldHRlck5XaXRoVGlsZGUgPSAweDAwRDEsCiAg
ICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aEdyYXZlID0gMHgwMEQyLAogICAgICAgIGtDYXBpdGFs
TGV0dGVyT1dpdGhBY3V0ZSA9IDB4MDBEMywKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoQ2ly
Y3VtZmxleCA9IDB4MDBENCwKICAgICAgICBrQ2FwaXRhbExldHRlck9XaXRoVGlsZGUgPSAweDAw
RDUsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJPV2l0aERpYWVyZXNpcyA9IDB4MDBENiwKICAgICAg
ICBrTXVsdGlwbGljYXRpb25TaWduID0gMHgwMEQ3LAogICAgICAgIGtDYXBpdGFsTGV0dGVyT1dp
dGhTdHJva2UgPSAweDAwRDgsCiAgICAgICAga0NhcGl0YWxMZXR0ZXJVV2l0aEdyYXZlID0gMHgw
MEQ5LAogICAgICAgIGtDYXBpdGFsTGV0dGVyVVdpdGhBY3V0ZSA9IDB4MDBEQSwKICAgICAgICBr
Q2FwaXRhbExldHRlclVXaXRoQ2lyY3VtZmxleCA9IDB4MDBEQiwKICAgICAgICBrQ2FwaXRhbExl
dHRlclVXaXRoRGlhZXJlc2lzID0gMHgwMERDLAogICAgICAgIGtDYXBpdGFsTGV0dGVyWVdpdGhB
Y3V0ZSA9IDB4MDBERCwKICAgICAgICBrQ2FwaXRhbExldHRlclRob3JuID0gMHgwMERFLAogICAg
ICAgIGtTbWFsbExldHRlclNoYXJwUyA9IDB4MDBERiwKICAgICAgICBrU21hbGxMZXR0ZXJBV2l0
aEdyYXZlID0gMHgwMEUwLAogICAgICAgIGtTbWFsbExldHRlckFXaXRoQWN1dGUgPSAweDAwRTEs
CiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhDaXJjdW1mbGV4ID0gMHgwMEUyLAogICAgICAgIGtT
bWFsbExldHRlckFXaXRoVGlsZGUgPSAweDAwRTMsCiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhE
aWFlcmVzaXMgPSAweDAwRTQsCiAgICAgICAga1NtYWxsTGV0dGVyQVdpdGhSaW5nQWJvdmUgPSAw
eDAwRTUsCiAgICAgICAga1NtYWxsTGlnYXR1cmVBZSA9IDB4MDBFNiwKICAgICAgICBrU21hbGxM
ZXR0ZXJDV2l0aENlZGlsbGEgPSAweDAwRTcsCiAgICAgICAga1NtYWxsTGV0dGVyRVdpdGhHcmF2
ZSA9IDB4MDBFOCwKICAgICAgICBrU21hbGxMZXR0ZXJFV2l0aEFjdXRlID0gMHgwMEU5LAogICAg
ICAgIGtTbWFsbExldHRlckVXaXRoQ2lyY3VtZmxleCA9IDB4MDBFQSwKICAgICAgICBrU21hbGxM
ZXR0ZXJFV2l0aERpYWVyZXNpcyA9IDB4MDBFQiwKICAgICAgICBrU21hbGxMZXR0ZXJJV2l0aEdy
YXZlID0gMHgwMEVDLAogICAgICAgIGtTbWFsbExldHRlcklXaXRoQWN1dGUgPSAweDAwRUQsCiAg
ICAgICAga1NtYWxsTGV0dGVySVdpdGhDaXJjdW1mbGV4ID0gMHgwMEVFLAogICAgICAgIGtTbWFs
bExldHRlcklXaXRoRGlhZXJlc2lzID0gMHgwMEVGLAogICAgICAgIGtTbWFsbExldHRlckV0aCA9
IDB4MDBGMCwKICAgICAgICBrU21hbGxMZXR0ZXJOV2l0aFRpbGRlID0gMHgwMEYxLAogICAgICAg
IGtTbWFsbExldHRlck9XaXRoR3JhdmUgPSAweDAwRjIsCiAgICAgICAga1NtYWxsTGV0dGVyT1dp
dGhBY3V0ZSA9IDB4MDBGMywKICAgICAgICBrU21hbGxMZXR0ZXJPV2l0aENpcmN1bWZsZXggPSAw
eDAwRjQsCiAgICAgICAga1NtYWxsTGV0dGVyT1dpdGhUaWxkZSA9IDB4MDBGNSwKICAgICAgICBr
U21hbGxMZXR0ZXJPV2l0aERpYWVyZXNpcyA9IDB4MDBGNiwKICAgICAgICBrRGl2aXNpb25TaWdu
ID0gMHgwMEY3LAogICAgICAgIGtTbWFsbExldHRlck9XaXRoU3Ryb2tlID0gMHgwMEY4LAogICAg
ICAgIGtTbWFsbExldHRlclVXaXRoR3JhdmUgPSAweDAwRjksCiAgICAgICAga1NtYWxsTGV0dGVy
VVdpdGhBY3V0ZSA9IDB4MDBGQSwKICAgICAgICBrU21hbGxMZXR0ZXJVV2l0aENpcmN1bWZsZXgg
PSAweDAwRkIsCiAgICAgICAga1NtYWxsTGV0dGVyVVdpdGhEaWFlcmVzaXMgPSAweDAwRkMsCiAg
ICAgICAga1NtYWxsTGV0dGVyWVdpdGhBY3V0ZSA9IDB4MDBGRCwKICAgICAgICBrU21hbGxMZXR0
ZXJUaG9ybiA9IDB4MDBGRSwKICAgICAgICBrU21hbGxMZXR0ZXJZV2l0aERpYWVyZXNpcyA9IDB4
MDBGRiwKCiAgICAgICAgIAoKICAgICAgICBrQXBvc3Ryb3BoZVF1b3RlID0ga0Fwb3N0cm9waGUs
CiAgICAgICAga09wZW5pbmdQYXJlbnRoZXNpcyA9IGtMZWZ0UGFyZW50aGVzaXMsCiAgICAgICAg
a0Nsb3NpbmdQYXJlbnRoZXNpcyA9IGtSaWdodFBhcmVudGhlc2lzLAogICAgICAgIGtQZXJpb2Qg
PSBrRnVsbFN0b3AsCiAgICAgICAga1NsYXNoID0ga1NvbGlkdXMsCiAgICAgICAga0JhY2tzbGFz
aCA9IGtSZXZlcnNlU29saWR1cywKICAgICAgICBrU3BhY2luZ1VuZGVyc2NvcmUgPSBrTG93TGlu
ZSwKICAgICAgICBrT3BlbmluZ0N1cmx5QnJhY2tldCA9IGtMZWZ0Q3VybHlCcmFja2V0LAogICAg
ICAgIGtWZXJ0aWNhbEJhciA9IGtWZXJ0aWNhbExpbmUsCiAgICAgICAga0Nsb3NpbmdDdXJseUJy
YWNrZXQgPSBrUmlnaHRDdXJseUJyYWNrZXQsCiAgICAgICAga05vbkJyZWFraW5nU3BhY2UgPSBr
Tm9CcmVha1NwYWNlLAogICAgICAgIGtCcm9rZW5WZXJ0aWNhbEJhciA9IGtCcm9rZW5CYXIsCiAg
ICAgICAga1NwYWNpbmdEaWFlcmVzaXMgPSBrRGlhZXJlc2lzLAogICAgICAgIGtMZWZ0UG9pbnRp
bmdHdWlsbGVtZXQgPSBrTGVmdFBvaW50aW5nRG91YmxlQW5nbGVRdW90YXRpb25NYXJrLAogICAg
ICAgIGtSZWdpc3RlcmVkVHJhZGVNYXJrU2lnbiA9IGtSZWdpc3RlcmVkU2lnbiwKICAgICAgICBr
UGx1c09yTWludXNTaWduID0ga1BsdXNNaW51c1NpZ24sCiAgICAgICAga1BhcmFncmFwaFNpZ24g
PSBrUGlsY3Jvd1NpZ24sCiAgICAgICAga1JpZ2h0UG9pbnRpbmdHdWlsbGVtZXQgPSBrUmlnaHRQ
b2ludGluZ0RvdWJsZUFuZ2xlUXVvdGF0aW9uTWFyawogICAgfTsKfTsKCiAKIAogCmNsYXNzIFVH
ZW5lcmFsUHVuY3R1YXRpb24gewpwdWJsaWM6CiAgICBlbnVtIEVHZW5lcmFsUHVuY3R1YXRpb25O
YW1lcyB7CiAgICAgICAga0V4Y2xhbWF0aW9uTWFyayA9IDB4MDAyMSwKICAgICAgICBrUXVvdGF0
aW9uTWFyayA9IDB4MDAyMiwKICAgICAgICBrTnVtYmVyU2lnbiA9IDB4MDAyMywKICAgICAgICBr
UGVyY2VudFNpZ24gPSAweDAwMjUsCiAgICAgICAga0FtcGVyc2FuZCA9IDB4MDAyNiwKICAgICAg
ICBrQXBvc3Ryb3BoZSA9IDB4MDAyNywKICAgICAgICBrTGVmdFBhcmVudGhlc2lzID0gMHgwMDI4
LAogICAgICAgIGtSaWdodFBhcmVudGhlc2lzID0gMHgwMDI5LAogICAgICAgIGtBc3RlcmlzayA9
IDB4MDAyQSwKICAgICAgICBrQ29tbWEgPSAweDAwMkMsCiAgICAgICAga0h5cGhlbk1pbnVzID0g
MHgwMDJELAogICAgICAgIGtGdWxsU3RvcCA9IDB4MDAyRSwKICAgICAgICBrU29saWR1cyA9IDB4
MDAyRiwKICAgICAgICBrQ29sb24gPSAweDAwM0EsCiAgICAgICAga1NlbWljb2xvbiA9IDB4MDAz
QiwKICAgICAgICBrUXVlc3Rpb25NYXJrID0gMHgwMDNGLAogICAgICAgIGtDb21tZXJjaWFsQXQg
PSAweDAwNDAsCiAgICAgICAga0xlZnRTcXVhcmVCcmFja2V0ID0gMHgwMDVCLAogICAgICAgIGtS
ZXZlcnNlU29saWR1cyA9IDB4MDA1QywKICAgICAgICBrUmlnaHRTcXVhcmVCcmFja2V0ID0gMHgw
MDVELAogICAgICAgIGtMb3dMaW5lID0gMHgwMDVGLAogICAgICAgIGtMZWZ0Q3VybHlCcmFja2V0
ID0gMHgwMDdCLAogICAgICAgIGtSaWdodEN1cmx5QnJhY2tldCA9IDB4MDA3RCwKICAgICAgICBr
SW52ZXJ0ZWRFeGNsYW1hdGlvbk1hcmsgPSAweDAwQTEsCiAgICAgICAga0xlZnRQb2ludGluZ0Rv
dWJsZUFuZ2xlUXVvdGF0aW9uTWFyayA9IDB4MDBBQiwKICAgICAgICBrU29mdEh5cGhlbiA9IDB4
MDBBRCwKICAgICAgICBrTWlkZGxlRG90ID0gMHgwMEI3LAogICAgICAgIGtSaWdodFBvaW50aW5n
RG91YmxlQW5nbGVRdW90YXRpb25NYXJrID0gMHgwMEJCLAogICAgICAgIGtJbnZlcnRlZFF1ZXN0
aW9uTWFyayA9IDB4MDBCRiwKICAgICAgICBrR3JlZWtRdWVzdGlvbk1hcmsgPSAweDAzN0UsCiAg
ICAgICAga0dyZWVrQW5vVGVsZWlhID0gMHgwMzg3LAogICAgICAgIGtBcm1lbmlhbkFwb3N0cm9w
aGUgPSAweDA1NUEsCiAgICAgICAga0FybWVuaWFuRW1waGFzaXNNYXJrID0gMHgwNTVCLAogICAg
ICAgIGtBcm1lbmlhbkV4Y2xhbWF0aW9uTWFyayA9IDB4MDU1QywKICAgICAgICBrQXJtZW5pYW5D
b21tYSA9IDB4MDU1RCwKICAgICAgICBrQXJtZW5pYW5RdWVzdGlvbk1hcmsgPSAweDA1NUUsCiAg
ICAgICAga0FybWVuaWFuQWJicmV2aWF0aW9uTWFyayA9IDB4MDU1RiwKICAgICAgICBrQXJtZW5p
YW5GdWxsU3RvcCA9IDB4MDU4OSwKICAgICAgICBrQXJtZW5pYW5IeXBoZW4gPSAweDA1OEEsCiAg
ICAgICAga0hlYnJld1B1bmN0dWF0aW9uTWFxYWYgPSAweDA1QkUsCiAgICAgICAga0hlYnJld1B1
bmN0dWF0aW9uUGFzZXEgPSAweDA1QzAsCiAgICAgICAga0hlYnJld1B1bmN0dWF0aW9uU29mUGFz
dXEgPSAweDA1QzMsCiAgICAgICAga0hlYnJld1B1bmN0dWF0aW9uR2VyZXNoID0gMHgwNUYzLAog
ICAgICAgIGtIZWJyZXdQdW5jdHVhdGlvbkdlcnNoYXlpbSA9IDB4MDVGNCwKICAgICAgICBrQXJh
YmljQ29tbWEgPSAweDA2MEMsCiAgICAgICAga0FyYWJpY1NlbWljb2xvbiA9IDB4MDYxQiwKICAg
ICAgICBrQXJhYmljUXVlc3Rpb25NYXJrID0gMHgwNjFGLAogICAgICAgIGtBcmFiaWNQZXJjZW50
U2lnbiA9IDB4MDY2QSwKICAgICAgICBrQXJhYmljRGVjaW1hbFNlcGFyYXRvciA9IDB4MDY2QiwK
ICAgICAgICBrQXJhYmljVGhvdXNhbmRzU2VwYXJhdG9yID0gMHgwNjZDLAogICAgICAgIGtBcmFi
aWNGaXZlUG9pbnRlZFN0YXIgPSAweDA2NkQsCiAgICAgICAga0FyYWJpY0Z1bGxTdG9wID0gMHgw
NkQ0LAogICAgICAgIGtTeXJpYWNFbmRPZlBhcmFncmFwaCA9IDB4MDcwMCwKICAgICAgICBrU3ly
aWFjU3VwcmFsaW5lYXJGdWxsU3RvcCA9IDB4MDcwMSwKICAgICAgICBrU3lyaWFjU3VibGluZWFy
RnVsbFN0b3AgPSAweDA3MDIsCiAgICAgICAga1N5cmlhY1N1cHJhbGluZWFyQ29sb24gPSAweDA3
MDMsCiAgICAgICAga1N5cmlhY1N1YmxpbmVhckNvbG9uID0gMHgwNzA0LAogICAgICAgIGtTeXJp
YWNIb3Jpem9udGFsQ29sb24gPSAweDA3MDUsCiAgICAgICAga1N5cmlhY0NvbG9uU2tld2VkTGVm
dCA9IDB4MDcwNiwKICAgICAgICBrU3lyaWFjQ29sb25Ta2V3ZWRSaWdodCA9IDB4MDcwNywKICAg
ICAgICBrU3lyaWFjU3VwcmFsaW5lYXJDb2xvblNrZXdlZExlZnQgPSAweDA3MDgsCiAgICAgICAg
a1N5cmlhY1N1YmxpbmVhckNvbG9uU2tld2VkUmlnaHQgPSAweDA3MDksCiAgICAgICAga1N5cmlh
Y0NvbnRyYWN0aW9uID0gMHgwNzBBLAogICAgICAgIGtTeXJpYWNIYXJrbGVhbk9iZWx1cyA9IDB4
MDcwQiwKICAgICAgICBrU3lyaWFjSGFya2xlYW5NZXRvYmVsdXMgPSAweDA3MEMsCiAgICAgICAg
a1N5cmlhY0hhcmtsZWFuQXN0ZXJpc2N1cyA9IDB4MDcwRCwKICAgICAgICBrRGV2YW5hZ2FyaURh
bmRhID0gMHgwOTY0LAogICAgICAgIGtEZXZhbmFnYXJpRG91YmxlRGFuZGEgPSAweDA5NjUsCiAg
ICAgICAga0RldmFuYWdhcmlBYmJyZXZpYXRpb25TaWduID0gMHgwOTcwLAogICAgICAgIGtTaW5o
YWxhUHVuY3R1YXRpb25LdW5kZGFsaXlhID0gMHgwREY0LAogICAgICAgIGtUaGFpQ2hhcmFjdGVy
Rm9uZ21hbiA9IDB4MEU0RiwKICAgICAgICBrVGhhaUNoYXJhY3RlckFuZ2toYW5raHUgPSAweDBF
NUEsCiAgICAgICAga1RoYWlDaGFyYWN0ZXJLaG9tdXQgPSAweDBFNUIsCiAgICAgICAga1RpYmV0
YW5NYXJrSW5pdGlhbFlpZ01nb01kdW5NYSA9IDB4MEYwNCwKICAgICAgICBrVGliZXRhbk1hcmtD
bG9zaW5nWWlnTWdvU2dhYk1hID0gMHgwRjA1LAogICAgICAgIGtUaWJldGFuTWFya0NhcmV0WWln
TWdvUGh1clNoYWRNYSA9IDB4MEYwNiwKICAgICAgICBrVGliZXRhbk1hcmtZaWdNZ29Uc2hlZ1No
YWRNYSA9IDB4MEYwNywKICAgICAgICBrVGliZXRhbk1hcmtTYnJ1bFNoYWQgPSAweDBGMDgsCiAg
ICAgICAga1RpYmV0YW5NYXJrQnNrdXJZaWdNZ28gPSAweDBGMDksCiAgICAgICAga1RpYmV0YW5N
YXJrQmthU2hvZ1lpZ01nbyA9IDB4MEYwQSwKICAgICAgICBrVGliZXRhbk1hcmtJbnRlcnN5bGxh
YmljVHNoZWcgPSAweDBGMEIsCiAgICAgICAga1RpYmV0YW5NYXJrRGVsaW1pdGVyVHNoZWdCc3Rh
ciA9IDB4MEYwQywKICAgICAgICBrVGliZXRhbk1hcmtTaGFkID0gMHgwRjBELAogICAgICAgIGtU
aWJldGFuTWFya055aXNTaGFkID0gMHgwRjBFLAogICAgICAgIGtUaWJldGFuTWFya1RzaGVnU2hh
ZCA9IDB4MEYwRiwKICAgICAgICBrVGliZXRhbk1hcmtOeWlzVHNoZWdTaGFkID0gMHgwRjEwLAog
ICAgICAgIGtUaWJldGFuTWFya1JpbkNoZW5TcHVuZ3NTaGFkID0gMHgwRjExLAogICAgICAgIGtU
aWJldGFuTWFya1JneWFHcmFtU2hhZCA9IDB4MEYxMiwKICAgICAgICBrVGliZXRhbk1hcmtHdWdS
dGFnc0d5b24gPSAweDBGM0EsCiAgICAgICAga1RpYmV0YW5NYXJrR3VnUnRhZ3NHeWFzID0gMHgw
RjNCLAogICAgICAgIGtUaWJldGFuTWFya0FuZ0toYW5nR3lvbiA9IDB4MEYzQywKICAgICAgICBr
VGliZXRhbk1hcmtBbmdLaGFuZ0d5YXMgPSAweDBGM0QsCiAgICAgICAga1RpYmV0YW5NYXJrUGFs
dXRhID0gMHgwRjg1LAogICAgICAgIGtNeWFubWFyU2lnbkxpdHRsZVNlY3Rpb24gPSAweDEwNEEs
CiAgICAgICAga015YW5tYXJTaWduU2VjdGlvbiA9IDB4MTA0QiwKICAgICAgICBrTXlhbm1hclN5
bWJvbExvY2F0aXZlID0gMHgxMDRDLAogICAgICAgIGtNeWFubWFyU3ltYm9sQ29tcGxldGVkID0g
MHgxMDRELAogICAgICAgIGtNeWFubWFyU3ltYm9sQWZvcmVtZW50aW9uZWQgPSAweDEwNEUsCiAg
ICAgICAga015YW5tYXJTeW1ib2xHZW5pdGl2ZSA9IDB4MTA0RiwKICAgICAgICBrR2VvcmdpYW5Q
YXJhZ3JhcGhTZXBhcmF0b3IgPSAweDEwRkIsCiAgICAgICAga0V0aGlvcGljV29yZHNwYWNlID0g
MHgxMzYxLAogICAgICAgIGtFdGhpb3BpY0Z1bGxTdG9wID0gMHgxMzYyLAogICAgICAgIGtFdGhp
b3BpY0NvbW1hID0gMHgxMzYzLAogICAgICAgIGtFdGhpb3BpY1NlbWljb2xvbiA9IDB4MTM2NCwK
ICAgICAgICBrRXRoaW9waWNDb2xvbiA9IDB4MTM2NSwKICAgICAgICBrRXRoaW9waWNQcmVmYWNl
Q29sb24gPSAweDEzNjYsCiAgICAgICAga0V0aGlvcGljUXVlc3Rpb25NYXJrID0gMHgxMzY3LAog
ICAgICAgIGtFdGhpb3BpY1BhcmFncmFwaFNlcGFyYXRvciA9IDB4MTM2OCwKICAgICAgICBrQ2Fu
YWRpYW5TeWxsYWJpY3NDaGlTaWduID0gMHgxNjZELAogICAgICAgIGtDYW5hZGlhblN5bGxhYmlj
c0Z1bGxTdG9wID0gMHgxNjZFLAogICAgICAgIGtPZ2hhbUZlYXRoZXJNYXJrID0gMHgxNjlCLAog
ICAgICAgIGtPZ2hhbVJldmVyc2VkRmVhdGhlck1hcmsgPSAweDE2OUMsCiAgICAgICAga1J1bmlj
U2luZ2xlUHVuY3R1YXRpb24gPSAweDE2RUIsCiAgICAgICAga1J1bmljTXVsdGlwbGVQdW5jdHVh
dGlvbiA9IDB4MTZFQywKICAgICAgICBrUnVuaWNDcm9zc1B1bmN0dWF0aW9uID0gMHgxNkVELAog
ICAgICAgIGtLaG1lclNpZ25LaGFuID0gMHgxN0Q0LAogICAgICAgIGtLaG1lclNpZ25CYXJpeW9v
c2FuID0gMHgxN0Q1LAogICAgICAgIGtLaG1lclNpZ25DYW1udWNQaWlLdXVoID0gMHgxN0Q2LAog
ICAgICAgIGtLaG1lclNpZ25MZWtUb28gPSAweDE3RDcsCiAgICAgICAga0tobWVyU2lnbkJleXlh
bCA9IDB4MTdEOCwKICAgICAgICBrS2htZXJTaWduUGhuYWVrTXVhbiA9IDB4MTdEOSwKICAgICAg
ICBrS2htZXJTaWduS29vbXV1dCA9IDB4MTdEQSwKICAgICAgICBrS2htZXJTaWduQXZha3JhaGFz
YW55YSA9IDB4MTdEQywKICAgICAgICBrTW9uZ29saWFuQmlyZ2EgPSAweDE4MDAsCiAgICAgICAg
a01vbmdvbGlhbkVsbGlwc2lzID0gMHgxODAxLAogICAgICAgIGtNb25nb2xpYW5Db21tYSA9IDB4
MTgwMiwKICAgICAgICBrTW9uZ29saWFuRnVsbFN0b3AgPSAweDE4MDMsCiAgICAgICAga01vbmdv
bGlhbkNvbG9uID0gMHgxODA0LAogICAgICAgIGtNb25nb2xpYW5Gb3VyRG90cyA9IDB4MTgwNSwK
ICAgICAgICBrTW9uZ29saWFuVG9kb1NvZnRIeXBoZW4gPSAweDE4MDYsCiAgICAgICAga01vbmdv
bGlhblNpYmVTeWxsYWJsZUJvdW5kYXJ5TWFya2VyID0gMHgxODA3LAogICAgICAgIGtNb25nb2xp
YW5NYW5jaHVDb21tYSA9IDB4MTgwOCwKICAgICAgICBrTW9uZ29saWFuTWFuY2h1RnVsbFN0b3Ag
PSAweDE4MDksCiAgICAgICAga01vbmdvbGlhbk5pcnVndSA9IDB4MTgwQSwKICAgICAgICBrSHlw
aGVuID0gMHgyMDEwLAogICAgICAgIGtOb25CcmVha2luZ0h5cGhlbiA9IDB4MjAxMSwKICAgICAg
ICBrRmlndXJlRGFzaCA9IDB4MjAxMiwKICAgICAgICBrRW5EYXNoID0gMHgyMDEzLAogICAgICAg
IGtFbURhc2ggPSAweDIwMTQsCiAgICAgICAga0hvcml6b250YWxCYXIgPSAweDIwMTUsCiAgICAg
ICAga0RvdWJsZVZlcnRpY2FsTGluZSA9IDB4MjAxNiwKICAgICAgICBrRG91YmxlTG93TGluZSA9
IDB4MjAxNywKICAgICAgICBrTGVmdFNpbmdsZVF1b3RhdGlvbk1hcmsgPSAweDIwMTgsCiAgICAg
ICAga1JpZ2h0U2luZ2xlUXVvdGF0aW9uTWFyayA9IDB4MjAxOSwKICAgICAgICBrU2luZ2xlTG93
OVF1b3RhdGlvbk1hcmsgPSAweDIwMUEsCiAgICAgICAga1NpbmdsZUhpZ2hSZXZlcnNlZDlRdW90
YXRpb25NYXJrID0gMHgyMDFCLAogICAgICAgIGtMZWZ0RG91YmxlUXVvdGF0aW9uTWFyayA9IDB4
MjAxQywKICAgICAgICBrUmlnaHREb3VibGVRdW90YXRpb25NYXJrID0gMHgyMDFELAogICAgICAg
IGtEb3VibGVMb3c5UXVvdGF0aW9uTWFyayA9IDB4MjAxRSwKICAgICAgICBrRG91YmxlSGlnaFJl
dmVyc2VkOVF1b3RhdGlvbk1hcmsgPSAweDIwMUYsCiAgICAgICAga0RhZ2dlciA9IDB4MjAyMCwK
ICAgICAgICBrRG91YmxlRGFnZ2VyID0gMHgyMDIxLAogICAgICAgIGtCdWxsZXQgPSAweDIwMjIs
CiAgICAgICAga1RyaWFuZ3VsYXJCdWxsZXQgPSAweDIwMjMsCiAgICAgICAga09uZURvdExlYWRl
ciA9IDB4MjAyNCwKICAgICAgICBrVHdvRG90TGVhZGVyID0gMHgyMDI1LAogICAgICAgIGtIb3Jp
em9udGFsRWxsaXBzaXMgPSAweDIwMjYsCiAgICAgICAga0h5cGhlbmF0aW9uUG9pbnQgPSAweDIw
MjcsCiAgICAgICAga1Blck1pbGxlU2lnbiA9IDB4MjAzMCwKICAgICAgICBrUGVyVGVuVGhvdXNh
bmRTaWduID0gMHgyMDMxLAogICAgICAgIGtQcmltZSA9IDB4MjAzMiwKICAgICAgICBrRG91Ymxl
UHJpbWUgPSAweDIwMzMsCiAgICAgICAga1RyaXBsZVByaW1lID0gMHgyMDM0LAogICAgICAgIGtS
ZXZlcnNlZFByaW1lID0gMHgyMDM1LAogICAgICAgIGtSZXZlcnNlZERvdWJsZVByaW1lID0gMHgy
MDM2LAogICAgICAgIGtSZXZlcnNlZFRyaXBsZVByaW1lID0gMHgyMDM3LAogICAgICAgIGtDYXJl
dCA9IDB4MjAzOCwKICAgICAgICBrU2luZ2xlTGVmdFBvaW50aW5nQW5nbGVRdW90YXRpb25NYXJr
ID0gMHgyMDM5LAogICAgICAgIGtTaW5nbGVSaWdodFBvaW50aW5nQW5nbGVRdW90YXRpb25NYXJr
ID0gMHgyMDNBLAogICAgICAgIGtSZWZlcmVuY2VNYXJrID0gMHgyMDNCLAogICAgICAgIGtEb3Vi
bGVFeGNsYW1hdGlvbk1hcmsgPSAweDIwM0MsCiAgICAgICAga0ludGVycm9iYW5nID0gMHgyMDNE
LAogICAgICAgIGtPdmVybGluZSA9IDB4MjAzRSwKICAgICAgICBrVW5kZXJ0aWUgPSAweDIwM0Ys
CiAgICAgICAga0NoYXJhY3RlclRpZSA9IDB4MjA0MCwKICAgICAgICBrQ2FyZXRJbnNlcnRpb25Q
b2ludCA9IDB4MjA0MSwKICAgICAgICBrQXN0ZXJpc20gPSAweDIwNDIsCiAgICAgICAga0h5cGhl
bkJ1bGxldCA9IDB4MjA0MywKICAgICAgICBrTGVmdFNxdWFyZUJyYWNrZXRXaXRoUXVpbGwgPSAw
eDIwNDUsCiAgICAgICAga1JpZ2h0U3F1YXJlQnJhY2tldFdpdGhRdWlsbCA9IDB4MjA0NiwKICAg
ICAgICBrUXVlc3Rpb25FeGNsYW1hdGlvbk1hcmsgPSAweDIwNDgsCiAgICAgICAga0V4Y2xhbWF0
aW9uUXVlc3Rpb25NYXJrID0gMHgyMDQ5LAogICAgICAgIGtUaXJvbmlhblNpZ25FdCA9IDB4MjA0
QSwKICAgICAgICBrUmV2ZXJzZWRQaWxjcm93U2lnbiA9IDB4MjA0QiwKICAgICAgICBrQmxhY2tM
ZWZ0d2FyZHNCdWxsZXQgPSAweDIwNEMsCiAgICAgICAga0JsYWNrUmlnaHR3YXJkc0J1bGxldCA9
IDB4MjA0RCwKICAgICAgICBrU3VwZXJzY3JpcHRMZWZ0UGFyZW50aGVzaXMgPSAweDIwN0QsCiAg
ICAgICAga1N1cGVyc2NyaXB0UmlnaHRQYXJlbnRoZXNpcyA9IDB4MjA3RSwKICAgICAgICBrU3Vi
c2NyaXB0TGVmdFBhcmVudGhlc2lzID0gMHgyMDhELAogICAgICAgIGtTdWJzY3JpcHRSaWdodFBh
cmVudGhlc2lzID0gMHgyMDhFLAogICAgICAgIGtMZWZ0UG9pbnRpbmdBbmdsZUJyYWNrZXQgPSAw
eDIzMjksCiAgICAgICAga1JpZ2h0UG9pbnRpbmdBbmdsZUJyYWNrZXQgPSAweDIzMkEsCiAgICAg
ICAga0lkZW9ncmFwaGljQ29tbWEgPSAweDMwMDEsCiAgICAgICAga0lkZW9ncmFwaGljRnVsbFN0
b3AgPSAweDMwMDIsCiAgICAgICAga0RpdHRvTWFyayA9IDB4MzAwMywKICAgICAgICBrTGVmdEFu
Z2xlQnJhY2tldCA9IDB4MzAwOCwKICAgICAgICBrUmlnaHRBbmdsZUJyYWNrZXQgPSAweDMwMDks
CiAgICAgICAga0xlZnREb3VibGVBbmdsZUJyYWNrZXQgPSAweDMwMEEsCiAgICAgICAga1JpZ2h0
RG91YmxlQW5nbGVCcmFja2V0ID0gMHgzMDBCLAogICAgICAgIGtMZWZ0Q29ybmVyQnJhY2tldCA9
IDB4MzAwQywKICAgICAgICBrUmlnaHRDb3JuZXJCcmFja2V0ID0gMHgzMDBELAogICAgICAgIGtM
ZWZ0V2hpdGVDb3JuZXJCcmFja2V0ID0gMHgzMDBFLAogICAgICAgIGtSaWdodFdoaXRlQ29ybmVy
QnJhY2tldCA9IDB4MzAwRiwKICAgICAgICBrTGVmdEJsYWNrTGVudGljdWxhckJyYWNrZXQgPSAw
eDMwMTAsCiAgICAgICAga1JpZ2h0QmxhY2tMZW50aWN1bGFyQnJhY2tldCA9IDB4MzAxMSwKICAg
ICAgICBrTGVmdFRvcnRvaXNlU2hlbGxCcmFja2V0ID0gMHgzMDE0LAogICAgICAgIGtSaWdodFRv
cnRvaXNlU2hlbGxCcmFja2V0ID0gMHgzMDE1LAogICAgICAgIGtMZWZ0V2hpdGVMZW50aWN1bGFy
QnJhY2tldCA9IDB4MzAxNiwKICAgICAgICBrUmlnaHRXaGl0ZUxlbnRpY3VsYXJCcmFja2V0ID0g
MHgzMDE3LAogICAgICAgIGtMZWZ0V2hpdGVUb3J0b2lzZVNoZWxsQnJhY2tldCA9IDB4MzAxOCwK
ICAgICAgICBrUmlnaHRXaGl0ZVRvcnRvaXNlU2hlbGxCcmFja2V0ID0gMHgzMDE5LAogICAgICAg
IGtMZWZ0V2hpdGVTcXVhcmVCcmFja2V0ID0gMHgzMDFBLAogICAgICAgIGtSaWdodFdoaXRlU3F1
YXJlQnJhY2tldCA9IDB4MzAxQiwKICAgICAgICBrV2F2ZURhc2ggPSAweDMwMUMsCiAgICAgICAg
a1JldmVyc2VkRG91YmxlUHJpbWVRdW90YXRpb25NYXJrID0gMHgzMDFELAogICAgICAgIGtEb3Vi
bGVQcmltZVF1b3RhdGlvbk1hcmsgPSAweDMwMUUsCiAgICAgICAga0xvd0RvdWJsZVByaW1lUXVv
dGF0aW9uTWFyayA9IDB4MzAxRiwKICAgICAgICBrV2F2eURhc2ggPSAweDMwMzAsCiAgICAgICAg
a0thdGFrYW5hTWlkZGxlRG90ID0gMHgzMEZCLAogICAgICAgIGtPcm5hdGVMZWZ0UGFyZW50aGVz
aXMgPSAweEZEM0UsCiAgICAgICAga09ybmF0ZVJpZ2h0UGFyZW50aGVzaXMgPSAweEZEM0YsCiAg
ICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFR3b0RvdExlYWRlciA9IDB4RkUzMCwK
ICAgICAgICBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsRW1EYXNoID0gMHhGRTMxLAogICAg
ICAgIGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxFbkRhc2ggPSAweEZFMzIsCiAgICAgICAg
a1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbExvd0xpbmUgPSAweEZFMzMsCiAgICAgICAga1By
ZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFdhdnlMb3dMaW5lID0gMHhGRTM0LAogICAgICAgIGtQ
cmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0UGFyZW50aGVzaXMgPSAweEZFMzUsCiAgICAg
ICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFJpZ2h0UGFyZW50aGVzaXMgPSAweEZFMzYs
CiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbExlZnRDdXJseUJyYWNrZXQgPSAw
eEZFMzcsCiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFJpZ2h0Q3VybHlCcmFj
a2V0ID0gMHhGRTM4LAogICAgICAgIGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0VG9y
dG9pc2VTaGVsbEJyYWNrZXQgPSAweEZFMzksCiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JW
ZXJ0aWNhbFJpZ2h0VG9ydG9pc2VTaGVsbEJyYWNrZXQgPSAweEZFM0EsCiAgICAgICAga1ByZXNl
bnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbExlZnRCbGFja0xlbnRpY3VsYXJCcmFja2V0ID0gMHhGRTNC
LAogICAgICAgIGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxSaWdodEJsYWNrTGVudGljdWxh
ckJyYWNrZXQgPSAweEZFM0MsCiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbExl
ZnREb3VibGVBbmdsZUJyYWNrZXQgPSAweEZFM0QsCiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1G
b3JWZXJ0aWNhbFJpZ2h0RG91YmxlQW5nbGVCcmFja2V0ID0gMHhGRTNFLAogICAgICAgIGtQcmVz
ZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0QW5nbGVCcmFja2V0ID0gMHhGRTNGLAogICAgICAg
IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxSaWdodEFuZ2xlQnJhY2tldCA9IDB4RkU0MCwK
ICAgICAgICBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsTGVmdENvcm5lckJyYWNrZXQgPSAw
eEZFNDEsCiAgICAgICAga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFJpZ2h0Q29ybmVyQnJh
Y2tldCA9IDB4RkU0MiwKICAgICAgICBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsTGVmdFdo
aXRlQ29ybmVyQnJhY2tldCA9IDB4RkU0MywKICAgICAgICBrUHJlc2VudGF0aW9uRm9ybUZvclZl
cnRpY2FsUmlnaHRXaGl0ZUNvcm5lckJyYWNrZXQgPSAweEZFNDQsCiAgICAgICAga0Rhc2hlZE92
ZXJsaW5lID0gMHhGRTQ5LAogICAgICAgIGtDZW50cmVsaW5lT3ZlcmxpbmUgPSAweEZFNEEsCiAg
ICAgICAga1dhdnlPdmVybGluZSA9IDB4RkU0QiwKICAgICAgICBrRG91YmxlV2F2eU92ZXJsaW5l
ID0gMHhGRTRDLAogICAgICAgIGtEYXNoZWRMb3dMaW5lID0gMHhGRTRELAogICAgICAgIGtDZW50
cmVsaW5lTG93TGluZSA9IDB4RkU0RSwKICAgICAgICBrV2F2eUxvd0xpbmUgPSAweEZFNEYsCiAg
ICAgICAga1NtYWxsQ29tbWEgPSAweEZFNTAsCiAgICAgICAga1NtYWxsSWRlb2dyYXBoaWNDb21t
YSA9IDB4RkU1MSwKICAgICAgICBrU21hbGxGdWxsU3RvcCA9IDB4RkU1MiwKICAgICAgICBrU21h
bGxTZW1pY29sb24gPSAweEZFNTQsCiAgICAgICAga1NtYWxsQ29sb24gPSAweEZFNTUsCiAgICAg
ICAga1NtYWxsUXVlc3Rpb25NYXJrID0gMHhGRTU2LAogICAgICAgIGtTbWFsbEV4Y2xhbWF0aW9u
TWFyayA9IDB4RkU1NywKICAgICAgICBrU21hbGxFbURhc2ggPSAweEZFNTgsCiAgICAgICAga1Nt
YWxsTGVmdFBhcmVudGhlc2lzID0gMHhGRTU5LAogICAgICAgIGtTbWFsbFJpZ2h0UGFyZW50aGVz
aXMgPSAweEZFNUEsCiAgICAgICAga1NtYWxsTGVmdEN1cmx5QnJhY2tldCA9IDB4RkU1QiwKICAg
ICAgICBrU21hbGxSaWdodEN1cmx5QnJhY2tldCA9IDB4RkU1QywKICAgICAgICBrU21hbGxMZWZ0
VG9ydG9pc2VTaGVsbEJyYWNrZXQgPSAweEZFNUQsCiAgICAgICAga1NtYWxsUmlnaHRUb3J0b2lz
ZVNoZWxsQnJhY2tldCA9IDB4RkU1RSwKICAgICAgICBrU21hbGxOdW1iZXJTaWduID0gMHhGRTVG
LAogICAgICAgIGtTbWFsbEFtcGVyc2FuZCA9IDB4RkU2MCwKICAgICAgICBrU21hbGxBc3Rlcmlz
ayA9IDB4RkU2MSwKICAgICAgICBrU21hbGxIeXBoZW5NaW51cyA9IDB4RkU2MywKICAgICAgICBr
U21hbGxSZXZlcnNlU29saWR1cyA9IDB4RkU2OCwKICAgICAgICBrU21hbGxQZXJjZW50U2lnbiA9
IDB4RkU2QSwKICAgICAgICBrU21hbGxDb21tZXJjaWFsQXQgPSAweEZFNkIsCgoKICAgICAgICAg
CiAgICAgICAgIAogICAgICAgIGtMaW5lU2VwYXJhdG9yID0gMHgyMDI4LAogICAgICAgIGtQYXJh
Z3JhcGhTZXBhcmF0b3IgPSAweDIwMjksCiAgICAgICAga0luaGliaXRTeW1tZXRyaWNTd2FwcGlu
ZyA9IDB4MjA2QSwKICAgICAgICBrQWN0aXZhdGVTeW1tZXRyaWNTd2FwcGluZyA9IDB4MjA2QiwK
ICAgICAgICBrRG91YmxlSGlnaFJldmVyc2VkUXVvdGF0aW9uTWFyayA9IDB4MjAxRiwKICAgICAg
ICBrRG91YmxlTG93UXVvdGF0aW9uTWFyayA9IDB4MjAxRSwKICAgICAgICBrRnJhY3Rpb25TbGFz
aCA9IDB4MjA0NCwKICAgICAgICBrTGVmdFRvUmlnaHRNYXJrID0gMHgyMDBFLAogICAgICAgIGtS
aWdodFRvTGVmdE1hcmsgPSAweDIwMEYsCiAgICAgICAga1NpbmdsZUhpZ2hSZXZlcnNlZFF1b3Rh
dGlvbk1hcmsgPSAweDIwMUIsCiAgICAgICAga1NpbmdsZUxvd1F1b3RhdGlvbk1hcmsgPSAweDIw
MUEsCiAgICAgICAga1plcm9XaWR0aEpvaW5lciA9IDB4MjAwRCwKICAgICAgICBrWmVyb1dpZHRo
Tm9uSm9pbmVyID0gMHgyMDBDLAogICAgICAgIGtQb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmcgPSAw
eDIwMkMsCgoKICAgICAgICAgCgogICAgICAgIGtBcG9zdHJvcGhlUXVvdGUgPSBrQXBvc3Ryb3Bo
ZSwKICAgICAgICBrT3BlbmluZ1BhcmVudGhlc2lzID0ga0xlZnRQYXJlbnRoZXNpcywKICAgICAg
ICBrQ2xvc2luZ1BhcmVudGhlc2lzID0ga1JpZ2h0UGFyZW50aGVzaXMsCiAgICAgICAga1Blcmlv
ZCA9IGtGdWxsU3RvcCwKICAgICAgICBrU2xhc2ggPSBrU29saWR1cywKICAgICAgICBrT3Blbmlu
Z1NxdWFyZUJyYWNrZXQgPSBrTGVmdFNxdWFyZUJyYWNrZXQsCiAgICAgICAga0JhY2tzbGFzaCA9
IGtSZXZlcnNlU29saWR1cywKICAgICAgICBrQ2xvc2luZ1NxdWFyZUJyYWNrZXQgPSBrUmlnaHRT
cXVhcmVCcmFja2V0LAogICAgICAgIGtTcGFjaW5nVW5kZXJzY29yZSA9IGtMb3dMaW5lLAogICAg
ICAgIGtPcGVuaW5nQ3VybHlCcmFja2V0ID0ga0xlZnRDdXJseUJyYWNrZXQsCiAgICAgICAga0Ns
b3NpbmdDdXJseUJyYWNrZXQgPSBrUmlnaHRDdXJseUJyYWNrZXQsCiAgICAgICAga0xlZnRQb2lu
dGluZ0d1aWxsZW1ldCA9IGtMZWZ0UG9pbnRpbmdEb3VibGVBbmdsZVF1b3RhdGlvbk1hcmssCiAg
ICAgICAga1JpZ2h0UG9pbnRpbmdHdWlsbGVtZXQgPSBrUmlnaHRQb2ludGluZ0RvdWJsZUFuZ2xl
UXVvdGF0aW9uTWFyaywKICAgICAgICBrQXJtZW5pYW5Nb2RpZmllckxldHRlclJpZ2h0SGFsZlJp
bmcgPSBrQXJtZW5pYW5BcG9zdHJvcGhlLAogICAgICAgIGtBcm1lbmlhblBlcmlvZCA9IGtBcm1l
bmlhbkZ1bGxTdG9wLAogICAgICAgIGtIZWJyZXdQb2ludFBhc2VxID0ga0hlYnJld1B1bmN0dWF0
aW9uUGFzZXEsCiAgICAgICAga0FyYWJpY1BlcmlvZCA9IGtBcmFiaWNGdWxsU3RvcCwKICAgICAg
ICBrVGhhaUZvbmdtYW4gPSBrVGhhaUNoYXJhY3RlckZvbmdtYW4sCiAgICAgICAga1RoYWlBbmdr
aGFua2h1ID0ga1RoYWlDaGFyYWN0ZXJBbmdraGFua2h1LAogICAgICAgIGtUaGFpS2hvbXV0ID0g
a1RoYWlDaGFyYWN0ZXJLaG9tdXQsCiAgICAgICAga1RpYmV0YW5TaW5nbGVPcm5hbWVudCA9IGtU
aWJldGFuTWFya0luaXRpYWxZaWdNZ29NZHVuTWEsCiAgICAgICAga1RpYmV0YW5SZ3lhbnNoYWQg
PSBrVGliZXRhbk1hcmtTYnJ1bFNoYWQsCiAgICAgICAga1RpYmV0YW5Uc2VnID0ga1RpYmV0YW5N
YXJrSW50ZXJzeWxsYWJpY1RzaGVnLAogICAgICAgIGtUaWJldGFuU2hhZCA9IGtUaWJldGFuTWFy
a1NoYWQsCiAgICAgICAga1RpYmV0YW5Eb3VibGVTaGFkID0ga1RpYmV0YW5NYXJrTnlpc1NoYWQs
CiAgICAgICAga1RpYmV0YW5SaW5jaGFucGh1bmdzaGFkID0ga1RpYmV0YW5NYXJrUmluQ2hlblNw
dW5nc1NoYWQsCiAgICAgICAga1RpYmV0YW5MZWZ0QnJhY2UgPSBrVGliZXRhbk1hcmtBbmdLaGFu
Z0d5b24sCiAgICAgICAga1RpYmV0YW5SaWdodEJyYWNlID0ga1RpYmV0YW5NYXJrQW5nS2hhbmdH
eWFzLAogICAgICAgIGtUaWJldGFuQ2h1Y2hlbnlpZ2UgPSBrVGliZXRhbk1hcmtQYWx1dGEsCiAg
ICAgICAga1F1b3RhdGlvbkRhc2ggPSBrSG9yaXpvbnRhbEJhciwKICAgICAgICBrRG91YmxlVmVy
dGljYWxCYXIgPSBrRG91YmxlVmVydGljYWxMaW5lLAogICAgICAgIGtTcGFjaW5nRG91YmxlVW5k
ZXJzY29yZSA9IGtEb3VibGVMb3dMaW5lLAogICAgICAgIGtTaW5nbGVUdXJuZWRDb21tYVF1b3Rh
dGlvbk1hcmsgPSBrTGVmdFNpbmdsZVF1b3RhdGlvbk1hcmssCiAgICAgICAga1NpbmdsZUNvbW1h
UXVvdGF0aW9uTWFyayA9IGtSaWdodFNpbmdsZVF1b3RhdGlvbk1hcmssCiAgICAgICAga0xvd1Np
bmdsZUNvbW1hUXVvdGF0aW9uTWFyayA9IGtTaW5nbGVMb3c5UXVvdGF0aW9uTWFyaywKICAgICAg
ICBrU2luZ2xlUmV2ZXJzZWRDb21tYVF1b3RhdGlvbk1hcmsgPSBrU2luZ2xlSGlnaFJldmVyc2Vk
OVF1b3RhdGlvbk1hcmssCiAgICAgICAga0RvdWJsZVR1cm5lZENvbW1hUXVvdGF0aW9uTWFyayA9
IGtMZWZ0RG91YmxlUXVvdGF0aW9uTWFyaywKICAgICAgICBrRG91YmxlQ29tbWFRdW90YXRpb25N
YXJrID0ga1JpZ2h0RG91YmxlUXVvdGF0aW9uTWFyaywKICAgICAgICBrTG93RG91YmxlQ29tbWFR
dW90YXRpb25NYXJrID0ga0RvdWJsZUxvdzlRdW90YXRpb25NYXJrLAogICAgICAgIGtEb3VibGVS
ZXZlcnNlZENvbW1hUXVvdGF0aW9uTWFyayA9IGtEb3VibGVIaWdoUmV2ZXJzZWQ5UXVvdGF0aW9u
TWFyaywKICAgICAgICBrTGVmdFBvaW50aW5nU2luZ2xlR3VpbGxlbWV0ID0ga1NpbmdsZUxlZnRQ
b2ludGluZ0FuZ2xlUXVvdGF0aW9uTWFyaywKICAgICAgICBrUmlnaHRQb2ludGluZ1NpbmdsZUd1
aWxsZW1ldCA9IGtTaW5nbGVSaWdodFBvaW50aW5nQW5nbGVRdW90YXRpb25NYXJrLAogICAgICAg
IGtTcGFjaW5nT3ZlcnNjb3JlID0ga092ZXJsaW5lLAogICAgICAgIGtTdXBlcnNjcmlwdE9wZW5p
bmdQYXJlbnRoZXNpcyA9IGtTdXBlcnNjcmlwdExlZnRQYXJlbnRoZXNpcywKICAgICAgICBrU3Vw
ZXJzY3JpcHRDbG9zaW5nUGFyZW50aGVzaXMgPSBrU3VwZXJzY3JpcHRSaWdodFBhcmVudGhlc2lz
LAogICAgICAgIGtTdWJzY3JpcHRPcGVuaW5nUGFyZW50aGVzaXMgPSBrU3Vic2NyaXB0TGVmdFBh
cmVudGhlc2lzLAogICAgICAgIGtTdWJzY3JpcHRDbG9zaW5nUGFyZW50aGVzaXMgPSBrU3Vic2Ny
aXB0UmlnaHRQYXJlbnRoZXNpcywKICAgICAgICBrQnJhID0ga0xlZnRQb2ludGluZ0FuZ2xlQnJh
Y2tldCwKICAgICAgICBrS2V0ID0ga1JpZ2h0UG9pbnRpbmdBbmdsZUJyYWNrZXQsCiAgICAgICAg
a0lkZW9ncmFwaGljUGVyaW9kID0ga0lkZW9ncmFwaGljRnVsbFN0b3AsCiAgICAgICAga09wZW5p
bmdBbmdsZUJyYWNrZXQgPSBrTGVmdEFuZ2xlQnJhY2tldCwKICAgICAgICBrQ2xvc2luZ0FuZ2xl
QnJhY2tldCA9IGtSaWdodEFuZ2xlQnJhY2tldCwKICAgICAgICBrT3BlbmluZ0RvdWJsZUFuZ2xl
QnJhY2tldCA9IGtMZWZ0RG91YmxlQW5nbGVCcmFja2V0LAogICAgICAgIGtDbG9zaW5nRG91Ymxl
QW5nbGVCcmFja2V0ID0ga1JpZ2h0RG91YmxlQW5nbGVCcmFja2V0LAogICAgICAgIGtPcGVuaW5n
Q29ybmVyQnJhY2tldCA9IGtMZWZ0Q29ybmVyQnJhY2tldCwKICAgICAgICBrQ2xvc2luZ0Nvcm5l
ckJyYWNrZXQgPSBrUmlnaHRDb3JuZXJCcmFja2V0LAogICAgICAgIGtPcGVuaW5nV2hpdGVDb3Ju
ZXJCcmFja2V0ID0ga0xlZnRXaGl0ZUNvcm5lckJyYWNrZXQsCiAgICAgICAga0Nsb3NpbmdXaGl0
ZUNvcm5lckJyYWNrZXQgPSBrUmlnaHRXaGl0ZUNvcm5lckJyYWNrZXQsCiAgICAgICAga09wZW5p
bmdCbGFja0xlbnRpY3VsYXJCcmFja2V0ID0ga0xlZnRCbGFja0xlbnRpY3VsYXJCcmFja2V0LAog
ICAgICAgIGtDbG9zaW5nQmxhY2tMZW50aWN1bGFyQnJhY2tldCA9IGtSaWdodEJsYWNrTGVudGlj
dWxhckJyYWNrZXQsCiAgICAgICAga09wZW5pbmdUb3J0b2lzZVNoZWxsQnJhY2tldCA9IGtMZWZ0
VG9ydG9pc2VTaGVsbEJyYWNrZXQsCiAgICAgICAga0Nsb3NpbmdUb3J0b2lzZVNoZWxsQnJhY2tl
dCA9IGtSaWdodFRvcnRvaXNlU2hlbGxCcmFja2V0LAogICAgICAgIGtPcGVuaW5nV2hpdGVMZW50
aWN1bGFyQnJhY2tldCA9IGtMZWZ0V2hpdGVMZW50aWN1bGFyQnJhY2tldCwKICAgICAgICBrQ2xv
c2luZ1doaXRlTGVudGljdWxhckJyYWNrZXQgPSBrUmlnaHRXaGl0ZUxlbnRpY3VsYXJCcmFja2V0
LAogICAgICAgIGtPcGVuaW5nV2hpdGVUb3J0b2lzZVNoZWxsQnJhY2tldCA9IGtMZWZ0V2hpdGVU
b3J0b2lzZVNoZWxsQnJhY2tldCwKICAgICAgICBrQ2xvc2luZ1doaXRlVG9ydG9pc2VTaGVsbEJy
YWNrZXQgPSBrUmlnaHRXaGl0ZVRvcnRvaXNlU2hlbGxCcmFja2V0LAogICAgICAgIGtPcGVuaW5n
V2hpdGVTcXVhcmVCcmFja2V0ID0ga0xlZnRXaGl0ZVNxdWFyZUJyYWNrZXQsCiAgICAgICAga0Ns
b3NpbmdXaGl0ZVNxdWFyZUJyYWNrZXQgPSBrUmlnaHRXaGl0ZVNxdWFyZUJyYWNrZXQsCiAgICAg
ICAga0dseXBoRm9yVmVydGljYWxUd29Eb3RMZWFkZXIgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZl
cnRpY2FsVHdvRG90TGVhZGVyLAogICAgICAgIGtHbHlwaEZvclZlcnRpY2FsRW1EYXNoID0ga1By
ZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbEVtRGFzaCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNh
bEVuRGFzaCA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxFbkRhc2gsCiAgICAgICAga0ds
eXBoRm9yVmVydGljYWxTcGFjaW5nVW5kZXJzY29yZSA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVy
dGljYWxMb3dMaW5lLAogICAgICAgIGtHbHlwaEZvclZlcnRpY2FsU3BhY2luZ1dhdnlVbmRlcnNj
b3JlID0ga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbFdhdnlMb3dMaW5lLAogICAgICAgIGtH
bHlwaEZvclZlcnRpY2FsT3BlbmluZ1BhcmVudGhlc2lzID0ga1ByZXNlbnRhdGlvbkZvcm1Gb3JW
ZXJ0aWNhbExlZnRQYXJlbnRoZXNpcywKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbENsb3NpbmdQ
YXJlbnRoZXNpcyA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxSaWdodFBhcmVudGhlc2lz
LAogICAgICAgIGtHbHlwaEZvclZlcnRpY2FsT3BlbmluZ0N1cmx5QnJhY2tldCA9IGtQcmVzZW50
YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0Q3VybHlCcmFja2V0LAogICAgICAgIGtHbHlwaEZvclZl
cnRpY2FsQ2xvc2luZ0N1cmx5QnJhY2tldCA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxS
aWdodEN1cmx5QnJhY2tldCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbE9wZW5pbmdUb3J0b2lz
ZVNoZWxsQnJhY2tldCA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0VG9ydG9pc2VT
aGVsbEJyYWNrZXQsCiAgICAgICAga0dseXBoRm9yVmVydGljYWxDbG9zaW5nVG9ydG9pc2VTaGVs
bEJyYWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsUmlnaHRUb3J0b2lzZVNoZWxs
QnJhY2tldCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbE9wZW5pbmdCbGFja0xlbnRpY3VsYXJC
cmFja2V0ID0ga1ByZXNlbnRhdGlvbkZvcm1Gb3JWZXJ0aWNhbExlZnRCbGFja0xlbnRpY3VsYXJC
cmFja2V0LAogICAgICAgIGtHbHlwaEZvclZlcnRpY2FsQ2xvc2luZ0JsYWNrTGVudGljdWxhckJy
YWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsUmlnaHRCbGFja0xlbnRpY3VsYXJC
cmFja2V0LAogICAgICAgIGtHbHlwaEZvclZlcnRpY2FsT3BlbmluZ0RvdWJsZUFuZ2xlQnJhY2tl
dCA9IGtQcmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0RG91YmxlQW5nbGVCcmFja2V0LAog
ICAgICAgIGtHbHlwaEZvclZlcnRpY2FsQ2xvc2luZ0RvdWJsZUFuZ2xlQnJhY2tldCA9IGtQcmVz
ZW50YXRpb25Gb3JtRm9yVmVydGljYWxSaWdodERvdWJsZUFuZ2xlQnJhY2tldCwKICAgICAgICBr
R2x5cGhGb3JWZXJ0aWNhbE9wZW5pbmdBbmdsZUJyYWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZv
clZlcnRpY2FsTGVmdEFuZ2xlQnJhY2tldCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbENsb3Np
bmdBbmdsZUJyYWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsUmlnaHRBbmdsZUJy
YWNrZXQsCiAgICAgICAga0dseXBoRm9yVmVydGljYWxPcGVuaW5nQ29ybmVyQnJhY2tldCA9IGtQ
cmVzZW50YXRpb25Gb3JtRm9yVmVydGljYWxMZWZ0Q29ybmVyQnJhY2tldCwKICAgICAgICBrR2x5
cGhGb3JWZXJ0aWNhbENsb3NpbmdDb3JuZXJCcmFja2V0ID0ga1ByZXNlbnRhdGlvbkZvcm1Gb3JW
ZXJ0aWNhbFJpZ2h0Q29ybmVyQnJhY2tldCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbE9wZW5p
bmdXaGl0ZUNvcm5lckJyYWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsTGVmdFdo
aXRlQ29ybmVyQnJhY2tldCwKICAgICAgICBrR2x5cGhGb3JWZXJ0aWNhbENsb3NpbmdXaGl0ZUNv
cm5lckJyYWNrZXQgPSBrUHJlc2VudGF0aW9uRm9ybUZvclZlcnRpY2FsUmlnaHRXaGl0ZUNvcm5l
ckJyYWNrZXQsCiAgICAgICAga1NwYWNpbmdEYXNoZWRPdmVyc2NvcmUgPSBrRGFzaGVkT3Zlcmxp
bmUsCiAgICAgICAga1NwYWNpbmdDZW50ZXJsaW5lT3ZlcnNjb3JlID0ga0NlbnRyZWxpbmVPdmVy
bGluZSwKICAgICAgICBrU3BhY2luZ1dhdnlPdmVyc2NvcmUgPSBrV2F2eU92ZXJsaW5lLAogICAg
ICAgIGtTcGFjaW5nRG91YmxlV2F2eU92ZXJzY29yZSA9IGtEb3VibGVXYXZ5T3ZlcmxpbmUsCiAg
ICAgICAga1NwYWNpbmdEYXNoZWRVbmRlcnNjb3JlID0ga0Rhc2hlZExvd0xpbmUsCiAgICAgICAg
a1NwYWNpbmdDZW50ZXJsaW5lVW5kZXJzY29yZSA9IGtDZW50cmVsaW5lTG93TGluZSwKICAgICAg
ICBrU3BhY2luZ1dhdnlVbmRlcnNjb3JlID0ga1dhdnlMb3dMaW5lLAogICAgICAgIGtTbWFsbFBl
cmlvZCA9IGtTbWFsbEZ1bGxTdG9wLAogICAgICAgIGtTbWFsbE9wZW5pbmdQYXJlbnRoZXNpcyA9
IGtTbWFsbExlZnRQYXJlbnRoZXNpcywKICAgICAgICBrU21hbGxDbG9zaW5nUGFyZW50aGVzaXMg
PSBrU21hbGxSaWdodFBhcmVudGhlc2lzLAogICAgICAgIGtTbWFsbE9wZW5pbmdDdXJseUJyYWNr
ZXQgPSBrU21hbGxMZWZ0Q3VybHlCcmFja2V0LAogICAgICAgIGtTbWFsbENsb3NpbmdDdXJseUJy
YWNrZXQgPSBrU21hbGxSaWdodEN1cmx5QnJhY2tldCwKICAgICAgICBrU21hbGxPcGVuaW5nVG9y
dG9pc2VTaGVsbEJyYWNrZXQgPSBrU21hbGxMZWZ0VG9ydG9pc2VTaGVsbEJyYWNrZXQsCiAgICAg
ICAga1NtYWxsQ2xvc2luZ1RvcnRvaXNlU2hlbGxCcmFja2V0ID0ga1NtYWxsUmlnaHRUb3J0b2lz
ZVNoZWxsQnJhY2tldCwKICAgICAgICBrU21hbGxCYWNrc2xhc2ggPSBrU21hbGxSZXZlcnNlU29s
aWR1cwogICAgfTsKfTsKCiAKIAogCmNsYXNzIFVXaGl0ZVNwYWNlIHsKcHVibGljOgogICAgZW51
bSBFV2hpdGVTcGFjZU5hbWVzIHsKICAgICAgICBrRm9ybUZlZWQgPSAweDAwMEMsCiAgICAgICAg
a1NwYWNlID0gMHgwMDIwLAogICAgICAgIGtPZ2hhbVNwYWNlTWFyayA9IDB4MTY4MCwKICAgICAg
ICBrRW5RdWFkID0gMHgyMDAwLAogICAgICAgIGtFbVF1YWQgPSAweDIwMDEsCiAgICAgICAga0Vu
U3BhY2UgPSAweDIwMDIsCiAgICAgICAga0VtU3BhY2UgPSAweDIwMDMsCiAgICAgICAga1RocmVl
UGVyRW1TcGFjZSA9IDB4MjAwNCwKICAgICAgICBrRm91clBlckVtU3BhY2UgPSAweDIwMDUsCiAg
ICAgICAga1NpeFBlckVtU3BhY2UgPSAweDIwMDYsCiAgICAgICAga0ZpZ3VyZVNwYWNlID0gMHgy
MDA3LAogICAgICAgIGtQdW5jdHVhdGlvblNwYWNlID0gMHgyMDA4LAogICAgICAgIGtUaGluU3Bh
Y2UgPSAweDIwMDksCiAgICAgICAga0hhaXJTcGFjZSA9IDB4MjAwQSwKICAgICAgICBrTGluZVNl
cGFyYXRvciA9IDB4MjAyOCwKICAgICAgICBrTmFycm93Tm9CcmVha1NwYWNlID0gMHgyMDJGLAog
ICAgICAgIGtJZGVvZ3JhcGhpY1NwYWNlID0gMHgzMDAwLAoKCiAgICAgICAgIAogICAgICAgICAK
ICAgICAgICBrSG9yaXpvbnRhbFRhYnVsYXRpb24gPSAweDAwMDksCiAgICAgICAga0xpbmVGZWVk
ID0gMHgwMDBBLAogICAgICAgIGtOb0JyZWFrU3BhY2UgPSAweDAwQTAsCiAgICAgICAga1BhcmFn
cmFwaFNlcGFyYXRvciA9IDB4MjAyOSwKICAgICAgICBrWmVyb1dpZHRoU3BhY2UgPSAweDIwMEIs
CiAgICAgICAga1plcm9XaWR0aE5vQnJlYWtTcGFjZSA9IDB4RkVGRiwKICAgICAgICBrTm9uQnJl
YWtpbmdTcGFjZSA9IGtOb0JyZWFrU3BhY2UsCiAgICAgICAga0J5dGVPcmRlck1hcmsgPSBrWmVy
b1dpZHRoTm9CcmVha1NwYWNlCgogICAgfTsKfTsKCiAKIAogCgpjbGFzcyBVVW5pY29kZVNwZWNp
YWwgewpwdWJsaWM6CiAgICBlbnVtIEVVbmljb2RlU3BlY2lhbE5hbWVzIHsKICAgICAgICBrTnVs
bCA9IDB4MDAwMCwKICAgICAgICBrWmVyb1dpZHRoTm9CcmVha1NwYWNlID0gMHhGRUZGLAogICAg
ICAgIGtCeXRlT3JkZXJNYXJrID0gMHhGRUZGLAogICAgICAgIGtSZXBsYWNlbWVudENoYXJhY3Rl
ciA9IDB4RkZGRCwKICAgICAgICBrQ29ycnVwdEJ5dGVPcmRlck1hcmsgPSAweEZGRkUsCiAgICAg
ICAga05vdEFVbmljb2RlID0gMHhGRkZGLAogICAgICAgIGtNaXNzaW5nQ2hhciA9IGtOb3RBVW5p
Y29kZQogICAgfTsKfTsKCiAKIAogCgpjbGFzcyBVQ29udHJvbENvZGUgewpwdWJsaWM6CiAgICBl
bnVtIEVDb250cm9sQ29kZU5hbWVzIHsKICAgICAgICBrTnVsbCA9IDB4MDAwMCwKICAgICAgICBr
U3RhcnRPZkhlYWRpbmcgPSAweDAwMDEsCiAgICAgICAga1N0YXJ0T2ZUZXh0ID0gMHgwMDAyLAog
ICAgICAgIGtFbmRPZlRleHQgPSAweDAwMDMsCiAgICAgICAga0VuZE9mVHJhbnNtaXNzaW9uID0g
MHgwMDA0LAogICAgICAgIGtFbnF1aXJ5ID0gMHgwMDA1LAogICAgICAgIGtBY2tub3dsZWRnZSA9
IDB4MDAwNiwKICAgICAgICBrQmVsbCA9IDB4MDAwNywKICAgICAgICBrQmFja3NwYWNlID0gMHgw
MDA4LAogICAgICAgIGtIb3Jpem9udGFsVGFidWxhdGlvbiA9IDB4MDAwOSwKICAgICAgICBrTGlu
ZUZlZWQgPSAweDAwMEEsCiAgICAgICAga1ZlcnRpY2FsVGFidWxhdGlvbiA9IDB4MDAwQiwKICAg
ICAgICBrRm9ybUZlZWQgPSAweDAwMEMsCiAgICAgICAga0NhcnJpYWdlUmV0dXJuID0gMHgwMDBE
LAogICAgICAgIGtTaGlmdE91dCA9IDB4MDAwRSwKICAgICAgICBrU2hpZnRJbiA9IDB4MDAwRiwK
ICAgICAgICBrRGF0YUxpbmtFc2NhcGUgPSAweDAwMTAsCiAgICAgICAga0RldmljZUNvbnRyb2xP
bmUgPSAweDAwMTEsCiAgICAgICAga0RldmljZUNvbnRyb2xUd28gPSAweDAwMTIsCiAgICAgICAg
a0RldmljZUNvbnRyb2xUaHJlZSA9IDB4MDAxMywKICAgICAgICBrRGV2aWNlQ29udHJvbEZvdXIg
PSAweDAwMTQsCiAgICAgICAga05lZ2F0aXZlQWNrbm93bGVkZ2UgPSAweDAwMTUsCiAgICAgICAg
a1N5bmNocm9ub3VzSWRsZSA9IDB4MDAxNiwKICAgICAgICBrRW5kT2ZUcmFuc21pc3Npb25CbG9j
ayA9IDB4MDAxNywKICAgICAgICBrQ2FuY2VsID0gMHgwMDE4LAogICAgICAgIGtFbmRPZk1lZGl1
bSA9IDB4MDAxOSwKICAgICAgICBrU3Vic3RpdHV0ZSA9IDB4MDAxQSwKICAgICAgICBrRXNjYXBl
ID0gMHgwMDFCLAogICAgICAgIGtGaWxlU2VwYXJhdG9yID0gMHgwMDFDLAogICAgICAgIGtHcm91
cFNlcGFyYXRvciA9IDB4MDAxRCwKICAgICAgICBrUmVjb3JkU2VwYXJhdG9yID0gMHgwMDFFLAog
ICAgICAgIGtVbml0U2VwYXJhdG9yID0gMHgwMDFGLAogICAgICAgIGtEZWxldGUgPSAweDAwN0Ys
CiAgICAgICAga0JyZWFrUGVybWl0dGVkSGVyZSA9IDB4MDA4MiwKICAgICAgICBrTm9CcmVha0hl
cmUgPSAweDAwODMsCiAgICAgICAga0luZGV4ID0gMHgwMDg0LAogICAgICAgIGtOZXh0TGluZSA9
IDB4MDA4NSwKICAgICAgICBrU3RhcnRPZlNlbGVjdGVkQXJlYSA9IDB4MDA4NiwKICAgICAgICBr
RW5kT2ZTZWxlY3RlZEFyZWEgPSAweDAwODcsCiAgICAgICAga0NoYXJhY3RlclRhYnVsYXRpb25T
ZXQgPSAweDAwODgsCiAgICAgICAga0NoYXJhY3RlclRhYnVsYXRpb25XaXRoSnVzdGlmaWNhdGlv
biA9IDB4MDA4OSwKICAgICAgICBrTGluZVRhYnVsYXRpb25TZXQgPSAweDAwOEEsCiAgICAgICAg
a1BhcnRpYWxMaW5lRG93biA9IDB4MDA4QiwKICAgICAgICBrUGFydGlhbExpbmVVcCA9IDB4MDA4
QywKICAgICAgICBrUmV2ZXJzZUxpbmVGZWVkID0gMHgwMDhELAogICAgICAgIGtTaW5nbGVTaGlm
dFR3byA9IDB4MDA4RSwKICAgICAgICBrU2luZ2xlU2hpZnRUaHJlZSA9IDB4MDA4RiwKICAgICAg
ICBrRGV2aWNlQ29udHJvbFN0cmluZyA9IDB4MDA5MCwKICAgICAgICBrUHJpdmF0ZVVzZU9uZSA9
IDB4MDA5MSwKICAgICAgICBrUHJpdmF0ZVVzZVR3byA9IDB4MDA5MiwKICAgICAgICBrU2V0VHJh
bnNtaXRTdGF0ZSA9IDB4MDA5MywKICAgICAgICBrQ2FuY2VsQ2hhcmFjdGVyID0gMHgwMDk0LAog
ICAgICAgIGtNZXNzYWdlV2FpdGluZyA9IDB4MDA5NSwKICAgICAgICBrU3RhcnRPZkd1YXJkZWRB
cmVhID0gMHgwMDk2LAogICAgICAgIGtFbmRPZkd1YXJkZWRBcmVhID0gMHgwMDk3LAogICAgICAg
IGtTdGFydE9mU3RyaW5nID0gMHgwMDk4LAogICAgICAgIGtTaW5nbGVDaGFyYWN0ZXJJbnRyb2R1
Y2VyID0gMHgwMDlBLAogICAgICAgIGtDb250cm9sU2VxdWVuY2VJbnRyb2R1Y2VyID0gMHgwMDlC
LAogICAgICAgIGtTdHJpbmdUZXJtaW5hdG9yID0gMHgwMDlDLAogICAgICAgIGtPcGVyYXRpbmdT
eXN0ZW1Db21tYW5kID0gMHgwMDlELAogICAgICAgIGtQcml2YWN5TWVzc2FnZSA9IDB4MDA5RSwK
ICAgICAgICBrQXBwbGljYXRpb25Qcm9ncmFtQ29tbWFuZCA9IDB4MDA5RiwKCiAgICAgICAgIAog
ICAgICAgIGtCeXRlT3JkZXJNYXJrID0gVVVuaWNvZGVTcGVjaWFsOjprWmVyb1dpZHRoTm9CcmVh
a1NwYWNlCgoKICAgICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAsCiAgICAgICAg
azAwODAgPSAweDAwODAsCiAgICAgICAgazAwODEgPSAweDAwODEsCiAgICAgICAgazAwODIgPSAw
eDAwODIsCiAgICAgICAgazAwODMgPSAweDAwODMsCiAgICAgICAgazAwODQgPSAweDAwODQsCiAg
ICAgICAgazAwODUgPSAweDAwODUsCiAgICAgICAgazAwODYgPSAweDAwODYsCiAgICAgICAgazAw
ODcgPSAweDAwODcsCiAgICAgICAgazAwODggPSAweDAwODgsCiAgICAgICAgazAwODkgPSAweDAw
ODksCiAgICAgICAgazAwOEEgPSAweDAwOEEsCiAgICAgICAgazAwOEIgPSAweDAwOEIsCiAgICAg
ICAgazAwOEMgPSAweDAwOEMsCiAgICAgICAgazAwOEQgPSAweDAwOEQsCiAgICAgICAgazAwOEUg
PSAweDAwOEUsCiAgICAgICAgazAwOEYgPSAweDAwOEYsCiAgICAgICAgazAwOTAgPSAweDAwOTAs
CiAgICAgICAgazAwOTEgPSAweDAwOTEsCiAgICAgICAgazAwOTIgPSAweDAwOTIsCiAgICAgICAg
azAwOTMgPSAweDAwOTMsCiAgICAgICAgazAwOTQgPSAweDAwOTQsCiAgICAgICAgazAwOTUgPSAw
eDAwOTUsCiAgICAgICAgazAwOTYgPSAweDAwOTYsCiAgICAgICAgazAwOTcgPSAweDAwOTcsCiAg
ICAgICAgazAwOTggPSAweDAwOTgsCiAgICAgICAgazAwOTkgPSAweDAwOTksCiAgICAgICAgazAw
OUEgPSAweDAwOUEsCiAgICAgICAgazAwOUIgPSAweDAwOUIsCiAgICAgICAgazAwOUMgPSAweDAw
OUMsCiAgICAgICAgazAwOUQgPSAweDAwOUQsCiAgICAgICAgazAwOUUgPSAweDAwOUUsCiAgICAg
ICAgazAwOUYgPSAweDAwOUYsCiAgICAgICAga05hdGlvbmFsRGlnaXRTaGFwZXMgPSAweDIwNkUs
CiAgICAgICAga05vbWluYWxEaWdpdFNoYXBlcyA9IDB4MjA2RgoKICAgIH07Cn07CgogCgogCgoK
CgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAK
CiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKIAoKIyAzMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pdGV4dC5pbmwiIDIKCgppbmxpbmUKSVRleHRTdG9yYWdlICoKSVRl
eHQ6OnN0b3JhZ2UoKSBjb25zdAp7CiAgICBpZiAoZkxhenlTdG9yYWdlKSB7CiAgICAgICAgbGF6
eUluaXRTdG9yYWdlKCk7CiAgICB9CiAgICByZXR1cm4gZlN0b3JhZ2U7Cn0KCmlubGluZQpJVGV4
dDo6bGVuZ3RoX3R5cGUKZmluZF9sZW5ndGgoY29uc3QgaW9jOjp1bmljaGFyX3QqIHgpCnsKICAg
IGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0ZW1wID0geDsKICAgIHdoaWxlICgqdGVtcCAhPSAoaW9j
Ojp1bmljaGFyX3QpVVVuaWNvZGVTcGVjaWFsOjprTnVsbCkKICAgICAgICB0ZW1wKys7CiAgICBy
ZXR1cm4gdGVtcCAtIHg7Cn0KCmlubGluZQp2b2lkCnBpbihJVGV4dDo6bGVuZ3RoX3R5cGUmIHZh
bHVlLAogICAgSVRleHQ6Omxlbmd0aF90eXBlIHBpblRvKQp7CiAgICBpZiAodmFsdWUgPiBwaW5U
bykKICAgICAgICB2YWx1ZSA9IHBpblRvOwp9CgppbmxpbmUKSVRleHQ6OklUZXh0KGNvbnN0IGlv
Yzo6dW5pY2hhcl90IHRoYXRbXSwKICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSB0aGF0
TGVuZ3RoKQogICAgICAgIDogZkxhenlTdG9yYWdlKDApLAogICAgICAgICAgZkNvZGVTZXQoLTEp
CnsKICAgICAKICAgICAKICAgIGlmICh0aGF0TGVuZ3RoID09IDApIHsKICAgICAgICBmU3RvcmFn
ZSA9IElUZXh0U3RvcmFnZTo6ZW1wdHlUZXh0U3RvcmFnZSgpOwogICAgICAgIGZTdG9yYWdlLT5h
ZGRSZWYoKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZTdG9yYWdlID0gSVRleHRTdG9yYWdl
OjpjcmVhdGVOZXcodGhhdExlbmd0aCk7CiAgICAgICAgZlN0b3JhZ2UgPSBmU3RvcmFnZS0+cmVw
bGFjZSgwLCAwLCAoY29uc3QgVW5pQ2hhciAqKXRoYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGF0TGVuZ3RoLCAwLCBmYWxzZSk7CiAgICB9Cn0KCmlubGluZQpJVGV4
dDo6SVRleHQoY29uc3QgaW9jOjp1bmljaGFyX3QqIHRoYXQpCiAgICAgICAgOiBmTGF6eVN0b3Jh
Z2UoMCksCiAgICAgICAgICBmQ29kZVNldCgtMSkKewogICAgSVRleHQ6Omxlbmd0aF90eXBlIHRo
YXRMZW5ndGggPSBmaW5kX2xlbmd0aCh0aGF0KTsKCiAgICAgCiAgICAgCiAgICBpZiAodGhhdExl
bmd0aCA9PSAwKSB7CiAgICAgICAgZlN0b3JhZ2UgPSBJVGV4dFN0b3JhZ2U6OmVtcHR5VGV4dFN0
b3JhZ2UoKTsKICAgICAgICBmU3RvcmFnZS0+YWRkUmVmKCk7CiAgICB9CiAgICBlbHNlIHsKICAg
ICAgICBmU3RvcmFnZSA9IElUZXh0U3RvcmFnZTo6Y3JlYXRlTmV3KHRoYXRMZW5ndGgpOwogICAg
ICAgIGZTdG9yYWdlID0gZlN0b3JhZ2UtPnJlcGxhY2UoMCwgMCwgKGNvbnN0IFVuaUNoYXIgKil0
aGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdExlbmd0aCwgMCwg
ZmFsc2UpOwogICAgfQp9CgppbmxpbmUKSVRleHQ6OklUZXh0KElUZXh0OjpsZW5ndGhfdHlwZSB0
aGF0Q29waWVzLCBpb2M6OnVuaWNoYXJfdCB0aGF0KQogICAgICAgIDogZkxhenlTdG9yYWdlKDAp
LAogICAgICAgICAgZkNvZGVTZXQoLTEpCnsKICAgICAKICAgICAKICAgIGlmICh0aGF0Q29waWVz
ID09IDApIHsKICAgICAgICBmU3RvcmFnZSA9IElUZXh0U3RvcmFnZTo6ZW1wdHlUZXh0U3RvcmFn
ZSgpOwogICAgICAgIGZTdG9yYWdlLT5hZGRSZWYoKTsKICAgIH0KICAgIGVsc2UgewogICAgICAg
IGZTdG9yYWdlID0gSVRleHRTdG9yYWdlOjpjcmVhdGVOZXcodGhhdENvcGllcyk7CiAgICAgICAg
ZlN0b3JhZ2UgPSBmU3RvcmFnZS0+cmVwbGFjZSgwLCAwLCAoY29uc3QgVW5pQ2hhciAqKSZ0aGF0
LCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdENvcGllcyAtIDEs
IHRydWUpOwogICAgfQp9CgppbmxpbmUKSVRleHQ6OklUZXh0KGlvYzo6dW5pY2hhcl90IHRoYXQp
CiAgICAgICAgOiBmTGF6eVN0b3JhZ2UoMCksCiAgICAgICAgICBmQ29kZVNldCgtMSkKewogICAg
ZlN0b3JhZ2UgPSBJVGV4dFN0b3JhZ2U6OmNyZWF0ZU5ldygxKTsKICAgIGZTdG9yYWdlID0gZlN0
b3JhZ2UtPnJlcGxhY2UoMCwgMCwgKGNvbnN0IFVuaUNoYXIgKikmdGhhdCwgMSwgMCwgZmFsc2Up
Owp9CgppbmxpbmUKSVRleHQmCklUZXh0OjpvcGVyYXRvcj0oY29uc3QgaW9jOjp1bmljaGFyX3Qq
IHRoYXQpCnsKICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5yZXBsYWNlKDAsIGxlbmd0aCgpLCAo
Y29uc3QgVW5pQ2hhciAqKXRoYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aW5kX2xlbmd0aCh0aGF0KSwgMCwgZmFsc2UpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUK
SVRleHQmCklUZXh0OjpvcGVyYXRvcj0oaW9jOjp1bmljaGFyX3QgdGhhdCkKewogICAgZlN0b3Jh
Z2UgPSBzdG9yYWdlKCktPnJlcGxhY2UoMCwgbGVuZ3RoKCksIChjb25zdCBVbmlDaGFyICopJnRo
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAwLCBmYWxzZSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCgppbmxpbmUKSVRleHQmCklUZXh0Ojphc3NpZ24oY29uc3QgaW9jOjp1
bmljaGFyX3QgdGhhdFtdLAogICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSB0aGF0TGVu
Z3RoKQp7CiAgICBmU3RvcmFnZSA9IHN0b3JhZ2UoKS0+cmVwbGFjZSgwLCBsZW5ndGgoKSwgKGNv
bnN0IFVuaUNoYXIgKil0aGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhh
dExlbmd0aCwgMCwgZmFsc2UpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUKSVRleHQmCklU
ZXh0Ojphc3NpZ24oY29uc3QgaW9jOjp1bmljaGFyX3QqIHRoYXQpCnsKICAgIGZTdG9yYWdlID0g
c3RvcmFnZSgpLT5yZXBsYWNlKDAsIGxlbmd0aCgpLCAoY29uc3QgVW5pQ2hhciAqKXRoYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2xlbmd0aCh0aGF0KSwgMCwgZmFs
c2UpOwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUKSVRleHQmCklUZXh0Ojphc3NpZ24oSVRl
eHQ6Omxlbmd0aF90eXBlIHRoYXRDb3BpZXMsCiAgICAgICAgICAgICAgaW9jOjp1bmljaGFyX3Qg
dGhhdCkKewogICAgaWYgKHRoYXRDb3BpZXMgPT0gMCkKICAgICAgICByZXR1cm4gZXJhc2UoMCwg
bGVuZ3RoKCkpOwogICAgZWxzZQogICAgICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5yZXBsYWNl
KDAsIGxlbmd0aCgpLCAoY29uc3QgVW5pQ2hhciAqKSZ0aGF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsIHRoYXRDb3BpZXMgLSAxLCB0cnVlKTsKICAgIHJldHVybiAq
dGhpczsKfQoKaW5saW5lCklUZXh0OjpvcGVyYXRvciBjb25zdCBpb2M6OnVuaWNoYXJfdCooKSBj
b25zdAp7CiAgICByZXR1cm4gKGNvbnN0IGlvYzo6dW5pY2hhcl90ICopKHN0b3JhZ2UoKS0+Y19z
dHIoKSk7Cn0KCmlubGluZQp2b2lkCklUZXh0OjpyZXNpemUoSVRleHQ6Omxlbmd0aF90eXBlIG51
bUNoYXJzLAogICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90IGZpbGxDaGFyKQp7CiAgICBpZiAo
bnVtQ2hhcnMgPiBsZW5ndGgoKSkKICAgICAgICBmU3RvcmFnZSA9IHN0b3JhZ2UoKS0+cmVwbGFj
ZShsZW5ndGgoKSwgMCwgKGNvbnN0IFVuaUNoYXIgKikmZmlsbENoYXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMSwgbnVtQ2hhcnMgLSAxIC0gbGVuZ3RoKCksIHRydWUp
OwogICAgZWxzZSBpZiAobnVtQ2hhcnMgPCBsZW5ndGgoKSkKICAgICAgICBmU3RvcmFnZSA9IHN0
b3JhZ2UoKS0+cmVwbGFjZShudW1DaGFycywgbGVuZ3RoKCkgLSBudW1DaGFycywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVGV4dFN0b3JhZ2U6OmVtcHR5VGV4dFN0b3Jh
Z2UoKSwgMCwgMCk7Cn0KCmlubGluZQpjb25zdCBpb2M6OnVuaWNoYXJfdCoKSVRleHQ6OmNfc3Ry
KCkgY29uc3QKewogICAgcmV0dXJuIChjb25zdCBpb2M6OnVuaWNoYXJfdCAqKXN0b3JhZ2UoKS0+
Y19zdHIoKTsKfQoKaW5saW5lCmNvbnN0IGlvYzo6dW5pY2hhcl90KgpJVGV4dDo6ZGF0YSgpIGNv
bnN0CnsKICAgIHJldHVybiBjX3N0cigpOwp9CgppbmxpbmUKY29uc3QgaW9jOjp1bmljaGFyX3Qq
CklUZXh0OjpzdG9yYWdlX2NodW5rKElUZXh0OjpvZmZzZXRfdHlwZSBzZWFyY2hQb3MsCiAgICAg
ICAgICAgICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSYgY2h1bmtQb3MsCiAgICAgICAgICAg
ICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSYgY2h1bmtMZW5ndGgpIGNvbnN0CnsKICAgIHJl
dHVybiAoY29uc3QgaW9jOjp1bmljaGFyX3QgKilzdG9yYWdlKCktPnN0b3JhZ2VDaHVuayhzZWFy
Y2hQb3MsIGNodW5rUG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNodW5rTGVuZ3RoKTsKfQoKaW5saW5lCmlvYzo6dW5pY2hhcl90CklUZXh0
OjpvcGVyYXRvcltdKG9mZnNldF90eXBlIHBvcykgY29uc3QKewogICAgcmV0dXJuIChpb2M6OnVu
aWNoYXJfdClzdG9yYWdlKCktPmF0KHBvcyk7Cn0KCmlubGluZQppb2M6OnVuaWNoYXJfdApJVGV4
dDo6YXQob2Zmc2V0X3R5cGUgcG9zKSBjb25zdAp7CiAgICByZXR1cm4gKGlvYzo6dW5pY2hhcl90
KXN0b3JhZ2UoKS0+YXQocG9zKTsKfQoKaW5saW5lCnZvaWQKSVRleHQ6OmF0X3B1dChJVGV4dDo6
b2Zmc2V0X3R5cGUgcG9zLAogICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90IG5ld0NoYXIpCnsK
ICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5hdFB1dChwb3MsIChVbmlDaGFyKW5ld0NoYXIpOwp9
CgppbmxpbmUKSVRleHQmCklUZXh0OjpvcGVyYXRvcis9KGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0
aGF0KQp7CiAgICBmU3RvcmFnZSA9IHN0b3JhZ2UoKS0+cmVwbGFjZShsZW5ndGgoKSwgMCwgKGNv
bnN0IFVuaUNoYXIgKil0aGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlu
ZF9sZW5ndGgodGhhdCksIDAsIGZhbHNlKTsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lCklU
ZXh0JgpJVGV4dDo6b3BlcmF0b3IrPShpb2M6OnVuaWNoYXJfdCB0aGF0KQp7CiAgICBmU3RvcmFn
ZSA9IHN0b3JhZ2UoKS0+cmVwbGFjZShsZW5ndGgoKSwgMCwgKGNvbnN0IFVuaUNoYXIgKikmdGhh
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDAsIGZhbHNlKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4dDo6YXBwZW5kKGNvbnN0IGlvYzo6dW5p
Y2hhcl90IHRoYXRbXSwKICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhhdExlbmd0
aCkKewogICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2UobGVuZ3RoKCksIDAsIChjb25z
dCBVbmlDaGFyICopdGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXRM
ZW5ndGgsIDAsIGZhbHNlKTsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4
dDo6YXBwZW5kKGNvbnN0IGlvYzo6dW5pY2hhcl90KiB0aGF0KQp7CiAgICBmU3RvcmFnZSA9IHN0
b3JhZ2UoKS0+cmVwbGFjZShsZW5ndGgoKSwgMCwgKGNvbnN0IFVuaUNoYXIgKil0aGF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9sZW5ndGgodGhhdCksIDAsIGZhbHNl
KTsKICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4dDo6YXBwZW5kKElUZXh0
OjpsZW5ndGhfdHlwZSB0aGF0Q29waWVzLAogICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90IHRo
YXQpCnsKICAgIGlmICh0aGF0Q29waWVzICE9IDApIHsKICAgICAgICBmU3RvcmFnZSA9IHN0b3Jh
Z2UoKS0+cmVwbGFjZShsZW5ndGgoKSwgMCwgKGNvbnN0IFVuaUNoYXIgKikmdGhhdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCB0aGF0Q29waWVzIC0gMSwgdHJ1ZSk7
CiAgICB9CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZQpJVGV4dCYKSVRleHQ6Omluc2VydChJ
VGV4dDo6b2Zmc2V0X3R5cGUgaW5zZXJ0UG9zLAogICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5p
Y2hhcl90IHRoYXRbXSwKICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhhdExlbmd0
aCkKewogICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2UoaW5zZXJ0UG9zLCAwLCAoY29u
c3QgVW5pQ2hhciAqKXRoYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0
TGVuZ3RoLCAwLCBmYWxzZSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZQpJVGV4dCYKSVRl
eHQ6Omluc2VydChJVGV4dDo6b2Zmc2V0X3R5cGUgaW5zZXJ0UG9zLAogICAgICAgICAgICAgIGNv
bnN0IGlvYzo6dW5pY2hhcl90KiB0aGF0KQp7CiAgICBmU3RvcmFnZSA9IHN0b3JhZ2UoKS0+cmVw
bGFjZShpbnNlcnRQb3MsIDAsIChjb25zdCBVbmlDaGFyICopdGhhdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbmRfbGVuZ3RoKHRoYXQpLCAwLCBmYWxzZSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCmlubGluZQpJVGV4dCYKSVRleHQ6Omluc2VydChJVGV4dDo6b2Zmc2V0X3R5
cGUgaW5zZXJ0UG9zLAogICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSB0aGF0Q29waWVz
LAogICAgICAgICAgICAgIGlvYzo6dW5pY2hhcl90IHRoYXQpCnsKICAgIGlmICh0aGF0Q29waWVz
ICE9MCkgewogICAgICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5yZXBsYWNlKGluc2VydFBvcywg
MCwgKGNvbnN0IFVuaUNoYXIgKikmdGhhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLCB0aGF0Q29waWVzIC0gMSwgdHJ1ZSk7CiAgICB9CiAgICByZXR1cm4gKnRoaXM7
Cn0KCmlubGluZQpJVGV4dEl0ZXJhdG9yCklUZXh0OjppbnNlcnQoSVRleHRJdGVyYXRvciBpbnNl
cnRQb3MsCiAgICAgICAgICAgICAgaW9jOjp1bmljaGFyX3QgdGhhdCkKewogICAgZlN0b3JhZ2Ug
PSBzdG9yYWdlKCktPnJlcGxhY2UoaW5zZXJ0UG9zLm9mZnNldCgpLCAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFVuaUNoYXIgKikmdGhhdCwgMSwgMCwgZmFsc2Up
OwogICAgcmV0dXJuIGluc2VydFBvczsKfQoKaW5saW5lCnZvaWQKSVRleHQ6Omluc2VydChJVGV4
dEl0ZXJhdG9yIGluc2VydFBvcywKICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhh
dENvcGllcywKICAgICAgICAgICAgICBpb2M6OnVuaWNoYXJfdCB0aGF0KQp7CiAgICBpZiAodGhh
dENvcGllcyAhPSAwKSB7CiAgICAgICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2UoaW5z
ZXJ0UG9zLm9mZnNldCgpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBVbmlDaGFyICopJnRoYXQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhhdENvcGllcyAtIDEsIHRydWUpOwogICAgfQp9CgppbmxpbmUKSVRleHQmCklU
ZXh0OjppbnNlcnRfYW5kX3Byb3BhZ2F0ZV9zdHlsZXMoSVRleHQ6Om9mZnNldF90eXBlIGluc2Vy
dFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNo
YXJfdCB0aGF0W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRleHQ6Omxl
bmd0aF90eXBlIHRoYXRMZW5ndGgpCnsKICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5yZXBsYWNl
KGluc2VydFBvcywgMCwgKGNvbnN0IFVuaUNoYXIgKil0aGF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhhdExlbmd0aCwgMCwgZmFsc2UsIHRydWUpOwogICAgcmV0dXJuICp0
aGlzOwp9CgppbmxpbmUKSVRleHQmCklUZXh0OjppbnNlcnRfYW5kX3Byb3BhZ2F0ZV9zdHlsZXMo
SVRleHQ6Om9mZnNldF90eXBlIGluc2VydFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhhdENvcGllcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpb2M6OnVuaWNoYXJfdCB0aGF0KQp7CiAgICBpZiAodGhhdENvcGll
cyAhPSAwKSB7CiAgICAgICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2UoaW5zZXJ0UG9z
LCAwLCAoY29uc3QgVW5pQ2hhciAqKSZ0aGF0LCAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoYXRDb3BpZXMgLSAxLCB0cnVlLCB0cnVlKTsKICAgIH0KICAgIHJldHVy
biAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4dDo6cmVwbGFjZShJVGV4dDo6b2Zmc2V0X3R5
cGUgdGhpc1BvcywKICAgICAgICAgICAgICAgSVRleHQ6Omxlbmd0aF90eXBlIHRoaXNMZW5ndGgs
CiAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90IHRoYXRbXSwKICAgICAgICAgICAg
ICAgSVRleHQ6Omxlbmd0aF90eXBlIHRoYXRMZW5ndGgpCnsKICAgIHBpbih0aGlzTGVuZ3RoLCBs
ZW5ndGgoKSAtIHRoaXNQb3MpOwogICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2UodGhp
c1BvcywgdGhpc0xlbmd0aCwgKGNvbnN0IFVuaUNoYXIgKil0aGF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhhdExlbmd0aCwgMCwgZmFsc2UpOwogICAgcmV0dXJuICp0aGlz
Owp9CgppbmxpbmUKSVRleHQmCklUZXh0OjpyZXBsYWNlKElUZXh0OjpvZmZzZXRfdHlwZSB0aGlz
UG9zLAogICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhpc0xlbmd0aCwKICAgICAg
ICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRoYXQpCnsKICAgIHBpbih0aGlzTGVuZ3Ro
LCBsZW5ndGgoKSAtIHRoaXNQb3MpOwogICAgZlN0b3JhZ2UgPSBzdG9yYWdlKCktPnJlcGxhY2Uo
dGhpc1BvcywgdGhpc0xlbmd0aCwgKGNvbnN0IFVuaUNoYXIgKil0aGF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluZF9sZW5ndGgodGhhdCksIDAsIGZhbHNlKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4dDo6cmVwbGFjZShJVGV4dDo6b2Zmc2V0
X3R5cGUgdGhpc1BvcywKICAgICAgICAgICAgICAgSVRleHQ6Omxlbmd0aF90eXBlIHRoaXNMZW5n
dGgsCiAgICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSB0aGF0Q29waWVzLAogICAgICAg
ICAgICAgICBpb2M6OnVuaWNoYXJfdCB0aGF0KQp7CiAgICBwaW4odGhpc0xlbmd0aCwgbGVuZ3Ro
KCkgLSB0aGlzUG9zKTsKICAgIGlmICh0aGF0Q29waWVzID09IDApCiAgICAgICAgcmV0dXJuIGVy
YXNlKHRoaXNQb3MsIHRoaXNMZW5ndGgpOwogICAgZWxzZQogICAgICAgIGZTdG9yYWdlID0gc3Rv
cmFnZSgpLT5yZXBsYWNlKHRoaXNQb3MsIHRoaXNMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNvbnN0IFVuaUNoYXIgKikmdGhhdCwgMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Q29waWVzIC0gMSwgdHJ1ZSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCmlubGluZQpJVGV4dCYKSVRleHQ6OnJlcGxhY2UoSVRleHRJdGVyYXRvciB0
aGlzRnJvbSwKICAgICAgICAgICAgICAgSVRleHRJdGVyYXRvciB0aGlzVG8sCiAgICAgICAgICAg
ICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90IHRoYXRbXSwKICAgICAgICAgICAgICAgSVRleHQ6Omxl
bmd0aF90eXBlIHRoYXRMZW5ndGgpCnsKICAgIGZTdG9yYWdlID0gc3RvcmFnZSgpLT5yZXBsYWNl
KHRoaXNGcm9tLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
c1RvLm9mZnNldCgpIC0gdGhpc0Zyb20ub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29uc3QgVW5pQ2hhciAqKXRoYXQsIHRoYXRMZW5ndGgsIDAsIGZhbHNlKTsK
ICAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lCklUZXh0JgpJVGV4dDo6cmVwbGFjZShJVGV4dEl0
ZXJhdG9yIHRoaXNGcm9tLAogICAgICAgICAgICAgICBJVGV4dEl0ZXJhdG9yIHRoaXNUbywKICAg
ICAgICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIHRoYXQpCnsKICAgIGZTdG9yYWdlID0g
c3RvcmFnZSgpLT5yZXBsYWNlKHRoaXNGcm9tLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpc1RvLm9mZnNldCgpIC0gdGhpc0Zyb20ub2Zmc2V0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgVW5pQ2hhciAqKXRoYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2xlbmd0aCh0aGF0KSwgMCwgZmFsc2Up
OwogICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUKSVRleHQmCklUZXh0OjpyZXBsYWNlKElUZXh0
SXRlcmF0b3IgdGhpc0Zyb20sCiAgICAgICAgICAgICAgIElUZXh0SXRlcmF0b3IgdGhpc1RvLAog
ICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3RoX3R5cGUgdGhhdENvcGllcywKICAgICAgICAgICAg
ICAgaW9jOjp1bmljaGFyX3QgdGhhdCkKewogICAgaWYgKHRoYXRDb3BpZXMgPT0gMCkKICAgICAg
ICBlcmFzZSh0aGlzRnJvbSwgdGhpc1RvKTsKICAgIGVsc2UKICAgICAgICBmU3RvcmFnZSA9IHN0
b3JhZ2UoKS0+cmVwbGFjZSh0aGlzRnJvbS5vZmZzZXQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzVG8ub2Zmc2V0KCkgLSB0aGlzRnJvbS5vZmZzZXQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgVW5pQ2hhciAqKSZ0aGF0
LCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXRDb3BpZXMgLSAx
LCB0cnVlKTsKICAgIHJldHVybiAqdGhpczsKfQoKCmlubGluZQpJVGV4dDo6bGVuZ3RoX3R5cGUK
SVRleHQ6OmNvcHkoaW9jOjp1bmljaGFyX3QgdGhhdFtdLAogICAgICAgICAgICBJVGV4dDo6bGVu
Z3RoX3R5cGUgbWF4Q2hhcnMsCiAgICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBv
cykgY29uc3QKewogICAgcmV0dXJuIGNvcHlVbmlDaGFyKChVbmlDaGFyICopdGhhdCwgbWF4Q2hh
cnMsIHN0YXJ0UG9zKTsKfQoKaW5saW5lCmludApJVGV4dDo6Y29tcGFyZShjb25zdCBpb2M6OnVu
aWNoYXJfdCogdGhhdCkgY29uc3QgewogICAgcmV0dXJuIGNvbXBhcmVVbmlDaGFyKChjb25zdCBV
bmlDaGFyICopdGhhdCk7Cn0KCmlubGluZQppbnQKSVRleHQ6OmNvbXBhcmUoSVRleHQ6Om9mZnNl
dF90eXBlIHRoaXNQb3MsIElUZXh0OjpsZW5ndGhfdHlwZSB0aGlzTGVuZ3RoLAogICAgICAgICAg
ICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCB0aGF0W10sIElUZXh0OjpsZW5ndGhfdHlwZSB0aGF0
TGVuZ3RoKSBjb25zdAp7CiAgICByZXR1cm4gY29tcGFyZVVuaUNoYXIodGhpc1BvcywgdGhpc0xl
bmd0aCwgKGNvbnN0IFVuaUNoYXIgKil0aGF0LCB0aGF0TGVuZ3RoKTsKfQoKaW5saW5lCklUZXh0
OjpvZmZzZXRfdHlwZQpJVGV4dDo6ZmluZChjb25zdCBpb2M6OnVuaWNoYXJfdCBrZXlbXSwKICAg
ICAgICAgICAgSVRleHQ6Om9mZnNldF90eXBlIHN0YXJ0UG9zLAogICAgICAgICAgICBJVGV4dDo6
bGVuZ3RoX3R5cGUga2V5TGVuZ3RoKSBjb25zdAp7CiAgICByZXR1cm4gZmluZChJVGV4dChrZXks
IGtleUxlbmd0aCksIHN0YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0OjpvZmZzZXRfdHlwZQpJVGV4
dDo6ZmluZChjb25zdCBpb2M6OnVuaWNoYXJfdCoga2V5LAogICAgICAgICAgICBJVGV4dDo6b2Zm
c2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiBmaW5kKElUZXh0KGtleSksIHN0
YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0OjpvZmZzZXRfdHlwZQpJVGV4dDo6ZmluZChpb2M6OnVu
aWNoYXJfdCBrZXksIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcykgY29uc3QgewogICAgcmV0
dXJuIGZpbmRVbmlDaGFyKChVbmlDaGFyKWtleSwgc3RhcnRQb3MpOwp9CgppbmxpbmUKSVRleHQ6
Om9mZnNldF90eXBlCklUZXh0OjpyZmluZChjb25zdCBpb2M6OnVuaWNoYXJfdCBrZXlbXSwKICAg
ICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcywKICAgICAgICAgICAgIElUZXh0
OjpsZW5ndGhfdHlwZSBrZXlMZW5ndGgpIGNvbnN0CnsKICAgIHJldHVybiByZmluZChJVGV4dChr
ZXksIGtleUxlbmd0aCksIHN0YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0OjpvZmZzZXRfdHlwZQpJ
VGV4dDo6cmZpbmQoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleSwKICAgICAgICAgICAgIElUZXh0
OjpvZmZzZXRfdHlwZSBzdGFydFBvcykgY29uc3QKewogICAgcmV0dXJuIHJmaW5kKElUZXh0KGtl
eSksIHN0YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0OjpvZmZzZXRfdHlwZQpJVGV4dDo6cmZpbmQo
aW9jOjp1bmljaGFyX3Qga2V5LCBJVGV4dDo6b2Zmc2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0IHsK
ICAgIHJldHVybiByZmluZFVuaUNoYXIoKFVuaUNoYXIpa2V5LCBzdGFydFBvcyk7Cn0KCmlubGlu
ZQpJVGV4dDo6b2Zmc2V0X3R5cGUKSVRleHQ6OmZpbmRfZmlyc3Rfb2YoY29uc3QgaW9jOjp1bmlj
aGFyX3Qga2V5c1tdLAogICAgICAgICAgICAgICAgICAgICBJVGV4dDo6b2Zmc2V0X3R5cGUgc3Rh
cnRQb3MsCiAgICAgICAgICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSBudW1LZXlzKSBj
b25zdAp7CiAgICByZXR1cm4gZmluZF9maXJzdF9vZihJVGV4dChrZXlzLCBudW1LZXlzKSwgc3Rh
cnRQb3MpOwp9CgppbmxpbmUKSVRleHQ6Om9mZnNldF90eXBlCklUZXh0OjpmaW5kX2ZpcnN0X29m
KGNvbnN0IGlvYzo6dW5pY2hhcl90KiBrZXlzLAogICAgICAgICAgICAgICAgICAgICBJVGV4dDo6
b2Zmc2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiBmaW5kX2ZpcnN0X29mKElU
ZXh0KGtleXMpLCBzdGFydFBvcyk7Cn0KCmlubGluZQpJVGV4dDo6b2Zmc2V0X3R5cGUKSVRleHQ6
OmZpbmRfZmlyc3Rfb2YoaW9jOjp1bmljaGFyX3Qga2V5LAogICAgICAgICAgICAgICAgICAgICBJ
VGV4dDo6b2Zmc2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiBmaW5kKGtleSwg
c3RhcnRQb3MpOwp9CgppbmxpbmUKSVRleHQ6Om9mZnNldF90eXBlCklUZXh0OjpmaW5kX2xhc3Rf
b2YoY29uc3QgaW9jOjp1bmljaGFyX3Qga2V5c1tdLAogICAgICAgICAgICAgICAgICAgIElUZXh0
OjpvZmZzZXRfdHlwZSBzdGFydFBvcywKICAgICAgICAgICAgICAgICAgICBJVGV4dDo6bGVuZ3Ro
X3R5cGUgbnVtS2V5cykgY29uc3QKewogICAgcmV0dXJuIGZpbmRfbGFzdF9vZihJVGV4dChrZXlz
LCBudW1LZXlzKSwgc3RhcnRQb3MpOwp9CgppbmxpbmUKSVRleHQ6Om9mZnNldF90eXBlCklUZXh0
OjpmaW5kX2xhc3Rfb2YoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAg
ICAgICAgSVRleHQ6Om9mZnNldF90eXBlIHN0YXJ0UG9zKSBjb25zdAp7CiAgICByZXR1cm4gZmlu
ZF9sYXN0X29mKElUZXh0KGtleXMpLCBzdGFydFBvcyk7Cn0KCmlubGluZQpJVGV4dDo6b2Zmc2V0
X3R5cGUKSVRleHQ6OmZpbmRfbGFzdF9vZihpb2M6OnVuaWNoYXJfdCBrZXksCiAgICAgICAgICAg
ICAgICAgICAgSVRleHQ6Om9mZnNldF90eXBlIHN0YXJ0UG9zKSBjb25zdAp7CiAgICByZXR1cm4g
cmZpbmQoa2V5LCBzdGFydFBvcyk7Cn0KCmlubGluZQpJVGV4dDo6b2Zmc2V0X3R5cGUKSVRleHQ6
OmZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGlvYzo6dW5pY2hhcl90IGtleXNbXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcywKICAgICAgICAgICAg
ICAgICAgICAgICAgIElUZXh0OjpsZW5ndGhfdHlwZSBudW1LZXlzKSBjb25zdAp7CiAgICByZXR1
cm4gZmluZF9maXJzdF9ub3Rfb2YoSVRleHQoa2V5cywgbnVtS2V5cyksIHN0YXJ0UG9zKTsKfQoK
aW5saW5lCklUZXh0OjpvZmZzZXRfdHlwZQpJVGV4dDo6ZmluZF9maXJzdF9ub3Rfb2YoY29uc3Qg
aW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBJVGV4dDo6b2Zm
c2V0X3R5cGUgc3RhcnRQb3MpIGNvbnN0CnsKICAgIHJldHVybiBmaW5kX2ZpcnN0X25vdF9vZihJ
VGV4dChrZXlzKSwgc3RhcnRQb3MpOwp9CgppbmxpbmUKSVRleHQ6Om9mZnNldF90eXBlCklUZXh0
OjpmaW5kX2ZpcnN0X25vdF9vZihpb2M6OnVuaWNoYXJfdCBrZXksCiAgICAgICAgICAgICAgICAg
IElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcykgY29uc3QgewogICAgcmV0dXJuIGZpbmRfZmly
c3Rfbm90X29mVW5pQ2hhcigoVW5pQ2hhcilrZXksIHN0YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0
OjpvZmZzZXRfdHlwZQpJVGV4dDo6ZmluZF9sYXN0X25vdF9vZihjb25zdCBpb2M6OnVuaWNoYXJf
dCBrZXlzW10sCiAgICAgICAgICAgICAgICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFy
dFBvcywKICAgICAgICAgICAgICAgICAgICAgICAgSVRleHQ6Omxlbmd0aF90eXBlIG51bUtleXMp
IGNvbnN0CnsKICAgIHJldHVybiBmaW5kX2xhc3Rfbm90X29mKElUZXh0KGtleXMsIG51bUtleXMp
LCBzdGFydFBvcyk7Cn0KCmlubGluZQpJVGV4dDo6b2Zmc2V0X3R5cGUKSVRleHQ6OmZpbmRfbGFz
dF9ub3Rfb2YoY29uc3QgaW9jOjp1bmljaGFyX3QqIGtleXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcykgY29uc3QKewogICAgcmV0dXJuIGZpbmRf
bGFzdF9ub3Rfb2YoSVRleHQoa2V5cyksIHN0YXJ0UG9zKTsKfQoKaW5saW5lCklUZXh0OjpvZmZz
ZXRfdHlwZQpJVGV4dDo6ZmluZF9sYXN0X25vdF9vZihpb2M6OnVuaWNoYXJfdCBrZXksCiAgICAg
ICAgICAgICAgICAgICAgICAgIElUZXh0OjpvZmZzZXRfdHlwZSBzdGFydFBvcykgY29uc3QKewog
ICAgcmV0dXJuIGZpbmRfbGFzdF9ub3Rfb2ZVbmlDaGFyKChVbmlDaGFyKWtleSwgc3RhcnRQb3Mp
Owp9CgogCiAKIAoKaW5saW5lCklUZXh0Cm9wZXJhdG9yKyhjb25zdCBJVGV4dCYgYSwKICAgICAg
ICAgIGNvbnN0IElUZXh0JiBiKQp7CiAgICBJVGV4dCByZXN1bHQoYSk7CiAgICByZXR1cm4gcmVz
dWx0ICs9IGI7Cn0KCmlubGluZQpJVGV4dApvcGVyYXRvcisoY29uc3QgaW9jOjp1bmljaGFyX3Qq
IGEsCiAgICAgICAgICBjb25zdCBJVGV4dCYgYikKewogICAgSVRleHQgcmVzdWx0KGEpOwogICAg
cmV0dXJuIHJlc3VsdCArPSBiOwp9CgppbmxpbmUKSVRleHQKb3BlcmF0b3IrKGlvYzo6dW5pY2hh
cl90IGEsCiAgICAgICAgICBjb25zdCBJVGV4dCYgYikKewogICAgSVRleHQgcmVzdWx0KDEsIGEp
OwogICAgcmV0dXJuIHJlc3VsdCArPSBiOwp9CgppbmxpbmUKSVRleHQKb3BlcmF0b3IrKGNvbnN0
IElUZXh0JiBhLAogICAgICAgICAgY29uc3QgaW9jOjp1bmljaGFyX3QqIGIpCnsKICAgIElUZXh0
IHJlc3VsdChhKTsKICAgIHJldHVybiByZXN1bHQgKz0gYjsKfQoKaW5saW5lCklUZXh0Cm9wZXJh
dG9yKyhjb25zdCBJVGV4dCYgYSwKICAgICAgICAgIGlvYzo6dW5pY2hhcl90IGIpCnsKICAgIElU
ZXh0IHJlc3VsdChhKTsKICAgIHJldHVybiByZXN1bHQgKz0gYjsKfQoKIAogCiAKCmlubGluZQpi
b29sCm9wZXJhdG9yPT0oY29uc3QgSVRleHQmIGEsCiAgICAgICAgICAgY29uc3QgSVRleHQmIGIp
CnsKICAgIHJldHVybiBhLmNvbXBhcmUoYikgPT0gMDsKfQoKaW5saW5lCmJvb2wKb3BlcmF0b3I9
PShjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwKICAgICAgICAgICBjb25zdCBJVGV4dCYgYikKewog
ICAgcmV0dXJuIGIuY29tcGFyZShhKSA9PSAwOwp9CgppbmxpbmUKYm9vbApvcGVyYXRvcj09KGNv
bnN0IElUZXh0JiBhLAogICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBiKQp7CiAgICBy
ZXR1cm4gYS5jb21wYXJlKGIpID09IDA7Cn0KCmlubGluZQpib29sCm9wZXJhdG9yIT0oY29uc3Qg
SVRleHQmIGEsCiAgICAgICAgICAgY29uc3QgSVRleHQmIGIpCnsKICAgIHJldHVybiBhLmNvbXBh
cmUoYikgIT0gMDsKfQoKaW5saW5lCmJvb2wKb3BlcmF0b3IhPShjb25zdCBpb2M6OnVuaWNoYXJf
dCogYSwKICAgICAgICAgICBjb25zdCBJVGV4dCYgYikKewogICAgcmV0dXJuIGIuY29tcGFyZShh
KSAhPSAwOwp9CgppbmxpbmUKYm9vbApvcGVyYXRvciE9KGNvbnN0IElUZXh0JiBhLAogICAgICAg
ICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBiKQp7CiAgICByZXR1cm4gYS5jb21wYXJlKGIpICE9
IDA7Cn0KCmlubGluZQpib29sCm9wZXJhdG9yPChjb25zdCBJVGV4dCYgYSwKICAgICAgICAgIGNv
bnN0IElUZXh0JiBiKQp7CiAgICByZXR1cm4gYS5jb21wYXJlKGIpIDwgMDsKfQoKaW5saW5lCmJv
b2wKb3BlcmF0b3I8KGNvbnN0IGlvYzo6dW5pY2hhcl90KiBhLAogICAgICAgICAgY29uc3QgSVRl
eHQmIGIpCnsKICAgIHJldHVybiBiLmNvbXBhcmUoYSkgPiAwOwp9CgppbmxpbmUKYm9vbApvcGVy
YXRvcjwoY29uc3QgSVRleHQmIGEsCiAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCogYikK
ewogICAgcmV0dXJuIGEuY29tcGFyZShiKSA8IDA7Cn0KCmlubGluZQpib29sCm9wZXJhdG9yPihj
b25zdCBJVGV4dCYgYSwKICAgICAgICAgIGNvbnN0IElUZXh0JiBiKQp7CiAgICByZXR1cm4gYS5j
b21wYXJlKGIpID4gMDsKfQoKaW5saW5lCmJvb2wKb3BlcmF0b3I+KGNvbnN0IGlvYzo6dW5pY2hh
cl90KiBhLAogICAgICAgICAgY29uc3QgSVRleHQmIGIpCnsKICAgIHJldHVybiBiLmNvbXBhcmUo
YSkgPCAwOwp9CgppbmxpbmUKYm9vbApvcGVyYXRvcj4oY29uc3QgSVRleHQmIGEsCiAgICAgICAg
ICBjb25zdCBpb2M6OnVuaWNoYXJfdCogYikKewogICAgcmV0dXJuIGEuY29tcGFyZShiKSA+IDA7
Cn0KCmlubGluZQpib29sCm9wZXJhdG9yPD0oY29uc3QgSVRleHQmIGEsCiAgICAgICAgICAgY29u
c3QgSVRleHQmIGIpCnsKICAgIHJldHVybiBhLmNvbXBhcmUoYikgPD0gMDsKfQoKaW5saW5lCmJv
b2wKb3BlcmF0b3I8PShjb25zdCBpb2M6OnVuaWNoYXJfdCogYSwKICAgICAgICAgICBjb25zdCBJ
VGV4dCYgYikKewogICAgcmV0dXJuIGIuY29tcGFyZShhKSA+PSAwOwp9CgppbmxpbmUKYm9vbApv
cGVyYXRvcjw9KGNvbnN0IElUZXh0JiBhLAogICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90
KiBiKQp7CiAgICByZXR1cm4gYS5jb21wYXJlKGIpIDw9IDA7Cn0KCmlubGluZQpib29sCm9wZXJh
dG9yPj0oY29uc3QgSVRleHQmIGEsCiAgICAgICAgICAgY29uc3QgSVRleHQmIGIpCnsKICAgIHJl
dHVybiBhLmNvbXBhcmUoYikgPj0gMDsKfQoKaW5saW5lCmJvb2wKb3BlcmF0b3I+PShjb25zdCBp
b2M6OnVuaWNoYXJfdCogYSwKICAgICAgICAgICBjb25zdCBJVGV4dCYgYikKewogICAgcmV0dXJu
IGIuY29tcGFyZShhKSA8PSAwOwp9CgppbmxpbmUKYm9vbApvcGVyYXRvcj49KGNvbnN0IElUZXh0
JiBhLAogICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBiKQp7CiAgICByZXR1cm4gYS5j
b21wYXJlKGIpID49IDA7Cn0KCiAKIAogCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVRl
eHQmIHRleHQpCgoKCgp7CiAgICBjb25zdCBjaGFyKiBjaGFycyA9IChjb25zdCBjaGFyKikodGV4
dCk7CiAgICAgCgogICAgcmV0dXJuIHN0cmVhbSA8PCBjaGFyczsKfQoKaW5saW5lCgpzdGQ6Omlz
dHJlYW0mIG9wZXJhdG9yPj4oc3RkOjppc3RyZWFtJiBzdHJlYW0sIElUZXh0JiB0ZXh0KQoKCgp7
CiAgICBzaXplX3QgbWF4Q2hhcnMgPSBzdHJlYW0ud2lkdGgoKTsKICAgIGlmIChtYXhDaGFycyA9
PSAwKQogICAgICAgIG1heENoYXJzID0gdGV4dC5tYXhfc2l6ZSgpOwoKICAgIHNpemVfdCBjaGFy
c1JlYWQgPSAwOwogICAgY2hhciBidWZmZXJbMTAxXTsKICAgIHNob3J0IGJ1ZlB0ciA9IDA7CiAg
ICBpbnQgY3VyQ2hhcjsKCiAgICBidWZmZXJbMTAwXSA9ICdcMCc7CiAgICB0ZXh0LmVyYXNlKCk7
CiAKIAogCiAKICAgIHdoaWxlIChjaGFyc1JlYWQgPCBtYXhDaGFycyAmJiAhc3RyZWFtLmVvZigp
KSB7CiAgICAgICAgY3VyQ2hhciA9IHN0cmVhbS5nZXQoKTsKICAgICAgICBpZiAoY3VyQ2hhciAh
PSAoLTEpICAmJiAhIChfX2N0eXBlX2JbKGludCkgKCAoIGN1ckNoYXIgKSApXSAmICh1bnNpZ25l
ZCBzaG9ydCBpbnQpICAgX0lTc3BhY2UgKSAgKSB7CiAgICAgICAgICAgIGJ1ZmZlcltidWZQdHIr
K10gPSAoY2hhciljdXJDaGFyOwogICAgICAgICAgICBjaGFyc1JlYWQrKzsKICAgICAgICAgICAg
aWYgKGJ1ZlB0ciA9PSAxMDApIHsKICAgICAgICAgICAgICAgIHRleHQgKz0gYnVmZmVyOwogICAg
ICAgICAgICAgICAgYnVmUHRyID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBl
bHNlCiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgYnVmZmVyW2J1ZlB0cl0gPSAnXDAnOwog
ICAgdGV4dCArPSBidWZmZXI7CgogCiAKIAoKICAgIHJldHVybiBzdHJlYW07Cn0KCmlubGluZQoK
c3RkOjppc3RyZWFtJiBnZXRsaW5lKHN0ZDo6aXN0cmVhbSYgc3RyZWFtLCBJVGV4dCYgdGV4dCwg
Y2hhciBkZWxpbWl0ZXIpCgoKCnsKICAgIHNpemVfdCBtYXhDaGFycyA9IHN0cmVhbS53aWR0aCgp
OwogICAgaWYgKG1heENoYXJzID09IDApCiAgICAgICAgbWF4Q2hhcnMgPSB0ZXh0Lm1heF9zaXpl
KCk7CgogICAgc2l6ZV90IGNoYXJzUmVhZCA9IDA7CiAgICBjaGFyIGJ1ZmZlclsxMDFdOwogICAg
c2hvcnQgYnVmUHRyID0gMDsKICAgIGludCBjdXJDaGFyOwoKICAgIGJ1ZmZlclsxMDBdID0gJ1ww
JzsKICAgIHRleHQuZXJhc2UoKTsKIAogCiAKICAgIHdoaWxlIChjaGFyc1JlYWQgPCBtYXhDaGFy
cyAmJiAhc3RyZWFtLmVvZigpKSB7CiAgICAgICAgY3VyQ2hhciA9IHN0cmVhbS5nZXQoKTsKICAg
ICAgICBpZiAoY3VyQ2hhciAhPSAoLTEpICAmJiBjdXJDaGFyICE9IGRlbGltaXRlcikgewogICAg
ICAgICAgICBidWZmZXJbYnVmUHRyKytdID0gKGNoYXIpY3VyQ2hhcjsKICAgICAgICAgICAgY2hh
cnNSZWFkKys7CiAgICAgICAgICAgIGlmIChidWZQdHIgPT0gMTAwKSB7CiAgICAgICAgICAgICAg
ICB0ZXh0ICs9IGJ1ZmZlcjsKICAgICAgICAgICAgICAgIGJ1ZlB0ciA9IDA7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICBicmVhazsKICAgIH0KICAgIGJ1
ZmZlcltidWZQdHJdID0gJ1wwJzsKICAgIHRleHQgKz0gYnVmZmVyOwoKIAogCiAKCiAgICByZXR1
cm4gc3RyZWFtOwp9CgogCgojIDU2NyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pdGV4dC5ocHAiIDIKCgoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUp
CiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMzQgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWRhdGUuaW5s
IiAyCgogCgppbmxpbmUgSURhdGU6OklEYXRlKE1vbnRoIGFNb250aCwgaW50IGFEYXksIGludCBh
WWVhcikKewogICAgdGhpcy0+aW5pdGlhbGl6ZShhTW9udGgsIGFEYXksIGFZZWFyKTsKfQoKaW5s
aW5lIElEYXRlOjpJRGF0ZShpbnQgYURheSwgTW9udGggYU1vbnRoLCBpbnQgYVllYXIpCnsKICAg
IHRoaXMtPmluaXRpYWxpemUoYU1vbnRoLCBhRGF5LCBhWWVhcik7Cn0KCmlubGluZSBJRGF0ZTo6
SURhdGUoY29uc3QgSURhdGUmIGFEYXRlKSA6CgogICAganVsaWFuKGFEYXRlLmp1bGlhbikKewp9
CgppbmxpbmUgSURhdGU6OklEYXRlKGlvYzo6dW51bWVyaWNfdCBqdWxpYW5EYXlOdW1iZXIpIDoK
CiAgICBqdWxpYW4oanVsaWFuRGF5TnVtYmVyKQp7Cn0KCmlubGluZSBJRGF0ZTo6RGF5T2ZXZWVr
IElEYXRlOjpkYXlPZldlZWsoKSBjb25zdAp7CiAgICByZXR1cm4gRGF5T2ZXZWVrKHRoaXMtPmp1
bGlhbiAlIDcpOwp9CgppbmxpbmUgaW9jOjp1bnVtZXJpY190IElEYXRlOjpqdWxpYW5EYXRlKCkg
Y29uc3QKewogICAgcmV0dXJuIHRoaXMtPmp1bGlhbjsKfQoKaW5saW5lIGJvb2wgSURhdGU6Om9w
ZXJhdG9yPT0oY29uc3QgSURhdGUmIGFEYXRlKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+anVs
aWFuID09IGFEYXRlLmp1bGlhbjsKfQoKaW5saW5lIGJvb2wgSURhdGU6Om9wZXJhdG9yIT0oY29u
c3QgSURhdGUmIGFEYXRlKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+anVsaWFuICE9IGFEYXRl
Lmp1bGlhbjsKfQoKaW5saW5lIGJvb2wgSURhdGU6Om9wZXJhdG9yPChjb25zdCBJRGF0ZSYgYURh
dGUpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5qdWxpYW4gPCAgYURhdGUuanVsaWFuOwp9Cgpp
bmxpbmUgYm9vbCBJRGF0ZTo6b3BlcmF0b3I8PShjb25zdCBJRGF0ZSYgYURhdGUpIGNvbnN0CnsK
ICAgIHJldHVybiB0aGlzLT5qdWxpYW4gPD0gYURhdGUuanVsaWFuOwp9CgppbmxpbmUgYm9vbCBJ
RGF0ZTo6b3BlcmF0b3I+KGNvbnN0IElEYXRlJiBhRGF0ZSkgY29uc3QKewogICAgcmV0dXJuIHRo
aXMtPmp1bGlhbiA+ICBhRGF0ZS5qdWxpYW47Cn0KCmlubGluZSBib29sIElEYXRlOjpvcGVyYXRv
cj49KGNvbnN0IElEYXRlJiBhRGF0ZSkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmp1bGlhbiA+
PSBhRGF0ZS5qdWxpYW47Cn0KCmlubGluZSBJRGF0ZSBJRGF0ZTo6b3BlcmF0b3IrKGludCBudW1E
YXlzKSBjb25zdAp7CiAgICByZXR1cm4gSURhdGUoIHRoaXMtPmp1bGlhbiArIG51bURheXMgKTsK
fQoKaW5saW5lIElEYXRlIElEYXRlOjpvcGVyYXRvci0oaW50IG51bURheXMpIGNvbnN0CnsKICAg
IHJldHVybiBJRGF0ZSh0aGlzLT5qdWxpYW4gLSBudW1EYXlzKTsKfQoKaW5saW5lIElEYXRlJiBJ
RGF0ZTo6b3BlcmF0b3IrPShpbnQgbnVtRGF5cykKewogICAgdGhpcy0+anVsaWFuICs9IG51bURh
eXM7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBJRGF0ZSYgSURhdGU6Om9wZXJhdG9yLT0o
aW50IG51bURheXMpCnsKICAgIHRoaXMtPmp1bGlhbiAtPSBudW1EYXlzOwogICAgcmV0dXJuICp0
aGlzOwp9CgppbmxpbmUgaW9jOjpudW1lcmljX3QgSURhdGU6Om9wZXJhdG9yLShjb25zdCBJRGF0
ZSYgYURhdGUpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5qdWxpYW4gLSBhRGF0ZS5qdWxpYW47
Cn0KCmlubGluZSBib29sIElEYXRlOjppc1ZhbGlkKGludCBhRGF5LCBNb250aCBhTW9udGgsIGlu
dCBhWWVhcikKewogICAgcmV0dXJuIElEYXRlOjppc1ZhbGlkKGFNb250aCwgYURheSwgYVllYXIp
Owp9CgppbmxpbmUgYm9vbCBJRGF0ZTo6aXNWYWxpZChpbnQgYVllYXIsIGludCAgYURheSkKewog
ICAgcmV0dXJuKGFZZWFyICE9IDAKICAgICAgICAgICAmJgogICAgICAgICAgIGFEYXkgPD0gSURh
dGU6OmRheXNJblllYXIoYVllYXIpKTsKfQoKaW5saW5lIHZvaWQgSURhdGU6Om9wZXJhdG9yPj49
KElEYXRhU3RyZWFtICZ0b1doZXJlKQp7CiAgICB3cml0ZVRvU3RyZWFtKHRvV2hlcmUpOwp9Cgpp
bmxpbmUgdm9pZCBJRGF0ZTo6b3BlcmF0b3I8PD0oSURhdGFTdHJlYW0gJmZyb21XaGVyZSkKewog
ICAgcmVhZEZyb21TdHJlYW0oZnJvbVdoZXJlKTsKfQoKaW5saW5lCklUZXh0CklEYXRlOjphc1Rl
eHQoY29uc3QgaW9jOjp1bmljaGFyX3QgKmZtdCkgY29uc3QKewogICAgcmV0dXJuIGFzVGV4dFVu
aUNoYXIoKGNvbnN0IFVuaUNoYXIgKilmbXQpOwp9CgppbmxpbmUKCnN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sIGNvbnN0IElEYXRlJiBhRGF0ZSkKCgoKewog
ICAgcmV0dXJuIGFTdHJlYW0gPDwgYURhdGUuYXNTdHJpbmcoKTsKfQoKIAoKIyAyNjEgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWRhdGUuaHBwIiAy
CgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5m
byhyZXN0b3JlKQogCgogCgojIDMgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1
ZXVlLmNwcCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2l0aW1lLmhwcCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lzdHJlYW0uaHBwIiAxCiMgNTYgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cmVhbS5ocHAiCgoKCgoKIyAyOSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdGltZS5ocHAi
IDIKCgoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lP
Q19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKI3ByYWdt
YSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVu
dW0oNCkKCgoKCgoKCiAKCiAKIAoKIAoKCgoKCgpjbGFzcyBJVGltZTsKY2xhc3MgSVRleHQ7CgoK
aW5saW5lIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElUaW1lJiBh
VGltZSk7CgoKCiAKCiAKc3RydWN0IElDbnJUaW1lCnsKICAgIHVuc2lnbmVkIGNoYXIgaG91cnM7
CiAgICB1bnNpZ25lZCBjaGFyIG1pbnV0ZXM7CiAgICB1bnNpZ25lZCBjaGFyIHNlY29uZHM7CiAg
ICB1bnNpZ25lZCBjaGFyIHVjUmVzZXJ2ZWQ7Cn07CgpjbGFzcyAgIElUaW1lCnsKcHVibGljOgog
ICAgIAogICAgSVRpbWUoKTsKICAgIElUaW1lKGlvYzo6bnVtZXJpY190IHNlY29uZHMpOwogICAg
SVRpbWUodW5zaWduZWQgaG91cnMsCiAgICAgICAgICB1bnNpZ25lZCBtaW51dGVzLAogICAgICAg
ICAgdW5zaWduZWQgc2Vjb25kcyA9IDApOwogICAgSVRpbWUoY29uc3QgSVRpbWUgJmFUaW1lKTsK
ICAgIElUaW1lKGNvbnN0IElDbnJUaW1lICZjbnJUaW1lKTsKCiAgICAgCiAgICBzdGF0aWMgSVRp
bWUgbm93KCk7CgogICAgIAogICAgSVN0cmluZyBhc1N0cmluZyhjb25zdCBjaGFyKiBmbXQgPSAi
JVgiKSBjb25zdDsKIAogCiAKICAgIElUZXh0IGFzVGV4dCgpIGNvbnN0OwogICAgSVRleHQgYXNU
ZXh0KGNvbnN0IGlvYzo6dW5pY2hhcl90KiBmbXQpIGNvbnN0OwoKCiAgICBmcmllbmQgc3RkOjpv
c3RyZWFtJiAgIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElUaW1lJiBhVGltZSk7CgoK
CgogICAgIAogICAgaW9jOjpudW1lcmljX3QgYXNTZWNvbmRzKCkgY29uc3Q7CgogICAgSUNuclRp
bWUgYXNJQ25yVGltZSgpIGNvbnN0OwoKICAgIHVuc2lnbmVkIGhvdXJzKCkgY29uc3Q7CiAgICB1
bnNpZ25lZCBtaW51dGVzKCkgY29uc3Q7CiAgICB1bnNpZ25lZCBzZWNvbmRzKCkgY29uc3Q7Cgog
ICAgIAogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElUaW1lJiBhVGltZSApIGNvbnN0OwogICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IElUaW1lJiBhVGltZSApIGNvbnN0OwogICAgYm9vbCBvcGVy
YXRvcjwgKGNvbnN0IElUaW1lJiBhVGltZSApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IElUaW1lJiBhVGltZSApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IElUaW1l
JiBhVGltZSApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IElUaW1lJiBhVGltZSAp
IGNvbnN0OwoKICAgICAKICAgIElUaW1lIG9wZXJhdG9yKyhjb25zdCBJVGltZSYgYVRpbWUpIGNv
bnN0OwogICAgSVRpbWUgb3BlcmF0b3ItKGNvbnN0IElUaW1lJiBhVGltZSkgY29uc3Q7CgogICAg
SVRpbWUmIG9wZXJhdG9yKz0oY29uc3QgSVRpbWUmIGFUaW1lICk7CiAgICBJVGltZSYgb3BlcmF0
b3ItPShjb25zdCBJVGltZSYgYVRpbWUgKTsKCiAgICAgCiAgICB2b2lkIG9wZXJhdG9yPj49KElE
YXRhU3RyZWFtJiB0b1doZXJlKTsKICAgIHZvaWQgb3BlcmF0b3I8PD0oSURhdGFTdHJlYW0mIGZy
b21XaGVyZSk7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICBJVGltZSYgaW5pdGlhbGl6ZShpb2M6Om51
bWVyaWNfdCBzZWNvbmRzKTsKCiAgICAgCiAgICB2b2lkIHdyaXRlVG9TdHJlYW0oSURhdGFTdHJl
YW0mIHRvV2hlcmUpIGNvbnN0OwogICAgdm9pZCByZWFkRnJvbVN0cmVhbShJRGF0YVN0cmVhbSYg
ZnJvbVdoZXJlKTsKCgogICAgIAoKCgoKCgoKCnByaXZhdGU6CiAgICBJVGV4dCBhc1RleHRVbmlD
aGFyKGNvbnN0IFVuaUNoYXIqIGZtdCkgY29uc3Q7CiAgICBpb2M6Om51bWVyaWNfdCB0aWNrczsK
fTsKCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmco
cG9wKQoKCgoKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaXRpbWUuaW5sIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCgogCmV4dGVybiAiQyIKewogICAgCn0KCiAKCiAKaW5saW5lIElU
aW1lJiBJVGltZSA6OiBpbml0aWFsaXplICggaW9jOjpudW1lcmljX3Qgc2Vjb25kcyApCiAgewog
IGNvbnN0IGlvYzo6bnVtZXJpY190IHNlY29uZHNQZXJEYXkgPSAyNCo2MCo2MEw7CiAgaWYgKCBz
ZWNvbmRzIDwgMCApCiAgICB0aGlzLT50aWNrcyA9IHNlY29uZHNQZXJEYXkgLSAoLXNlY29uZHMg
JSBzZWNvbmRzUGVyRGF5KTsKICBlbHNlCiAgICB0aGlzLT50aWNrcyA9IHNlY29uZHMgJSBzZWNv
bmRzUGVyRGF5OwogIHJldHVybiAqdGhpczsKICB9CgogCmlubGluZSBJVGltZSA6OiBJVGltZSAo
IHVuc2lnbmVkIGhvdXJzLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW51dGVz
LAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZWNvbmRzICkKICB7CiAgaW9jOjpu
dW1lcmljX3Qgc2VjcyA9IGhvdXJzOwogIHNlY3MgKj0gNjA7CiAgc2VjcyArPSBtaW51dGVzOwog
IHNlY3MgKj0gNjA7CiAgc2VjcyArPSBzZWNvbmRzOwogIHRoaXMtPmluaXRpYWxpemUoIHNlY3Mg
KTsKICB9CmlubGluZSBJVGltZSA6OiBJVGltZSAoIGlvYzo6bnVtZXJpY190IHNlY29uZHMgKQog
IHsKICB0aGlzLT5pbml0aWFsaXplKCBzZWNvbmRzICk7CiAgfQppbmxpbmUgSVRpbWUgOjogSVRp
bWUgKCBjb25zdCBJVGltZSAmYVRpbWUgKQogIHsKICB0aGlzLT50aWNrcyA9IGFUaW1lLnRpY2tz
OwogIH0KIAppbmxpbmUgaW9jOjpudW1lcmljX3QgSVRpbWUgOjogYXNTZWNvbmRzICggKSBjb25z
dAogIHsKICByZXR1cm4gdGhpcy0+dGlja3M7CiAgfQppbmxpbmUgdW5zaWduZWQgSVRpbWUgOjog
aG91cnMgKCApIGNvbnN0CiAgewogICAKICByZXR1cm4gKCh1bnNpZ25lZCkodGhpcy0+dGlja3Mg
LyAzNjAwKSk7CiAgfQppbmxpbmUgdW5zaWduZWQgSVRpbWUgOjogbWludXRlcyAoICkgY29uc3QK
ICB7CiAgIAogIHJldHVybiAoKHVuc2lnbmVkKSgodGhpcy0+dGlja3MgJSAzNjAwICkgLyA2MCkp
OwogIH0KaW5saW5lIHVuc2lnbmVkIElUaW1lIDo6IHNlY29uZHMgKCApIGNvbnN0CiAgewogICAK
ICByZXR1cm4gKCh1bnNpZ25lZCkodGhpcy0+dGlja3MgJSA2MCkpOwogIH0KIAppbmxpbmUgYm9v
bCBJVGltZSA6OiBvcGVyYXRvciA9PSAoIGNvbnN0IElUaW1lICZhVGltZSApIGNvbnN0CiAgewog
IHJldHVybiB0aGlzLT50aWNrcyA9PSBhVGltZS50aWNrczsKICB9CmlubGluZSBib29sIElUaW1l
IDo6IG9wZXJhdG9yICE9ICggY29uc3QgSVRpbWUgJmFUaW1lICkgY29uc3QKICB7CiAgcmV0dXJu
IHRoaXMtPnRpY2tzICE9IGFUaW1lLnRpY2tzOwogIH0KaW5saW5lIGJvb2wgSVRpbWUgOjogb3Bl
cmF0b3IgPCAgKCBjb25zdCBJVGltZSAmYVRpbWUgKSBjb25zdAogIHsKICByZXR1cm4gdGhpcy0+
dGlja3MgPCAgYVRpbWUudGlja3M7CiAgfQppbmxpbmUgYm9vbCBJVGltZSA6OiBvcGVyYXRvciA8
PSAoIGNvbnN0IElUaW1lICZhVGltZSApIGNvbnN0CiAgewogIHJldHVybiB0aGlzLT50aWNrcyA8
PSBhVGltZS50aWNrczsKICB9CmlubGluZSBib29sIElUaW1lIDo6IG9wZXJhdG9yID4gICggY29u
c3QgSVRpbWUgJmFUaW1lICkgY29uc3QKICB7CiAgcmV0dXJuIHRoaXMtPnRpY2tzID4gIGFUaW1l
LnRpY2tzOwogIH0KaW5saW5lIGJvb2wgSVRpbWUgOjogb3BlcmF0b3IgPj0gKCBjb25zdCBJVGlt
ZSAmYVRpbWUgKSBjb25zdAogIHsKICByZXR1cm4gdGhpcy0+dGlja3MgPj0gYVRpbWUudGlja3M7
CiAgfQogCmlubGluZSBJVGltZSYgSVRpbWUgOjogb3BlcmF0b3IgKz0gKCBjb25zdCBJVGltZSAm
YVRpbWUgKQogIHsKICByZXR1cm4gdGhpcy0+aW5pdGlhbGl6ZSggdGhpcy0+dGlja3MgKyBhVGlt
ZS50aWNrcyApOwogIH0KaW5saW5lIElUaW1lIElUaW1lIDo6IG9wZXJhdG9yICsgKCBjb25zdCBJ
VGltZSAmYVRpbWUgKSBjb25zdAogIHsKICByZXR1cm4gSVRpbWUoIHRoaXMtPnRpY2tzICsgYVRp
bWUudGlja3MgKTsKICB9CmlubGluZSBJVGltZSYgSVRpbWUgOjogb3BlcmF0b3IgLT0gKCBjb25z
dCBJVGltZSAmYVRpbWUgKQogIHsKICByZXR1cm4gdGhpcy0+aW5pdGlhbGl6ZSggdGhpcy0+dGlj
a3MgLSBhVGltZS50aWNrcyApOwogIH0KaW5saW5lIElUaW1lIElUaW1lIDo6IG9wZXJhdG9yIC0g
KCBjb25zdCBJVGltZSAmYVRpbWUgKSBjb25zdAogIHsKICByZXR1cm4gSVRpbWUoIHRoaXMtPnRp
Y2tzIC0gYVRpbWUudGlja3MgKTsKICB9CgoKaW5saW5lIHZvaWQgSVRpbWU6Om9wZXJhdG9yPj49
KElEYXRhU3RyZWFtJiB0b1doZXJlKQp7CiAgICB3cml0ZVRvU3RyZWFtKHRvV2hlcmUpOwp9Cgpp
bmxpbmUgdm9pZCBJVGltZTo6b3BlcmF0b3I8PD0oSURhdGFTdHJlYW0mIGZyb21XaGVyZSkKewog
ICAgcmVhZEZyb21TdHJlYW0oZnJvbVdoZXJlKTsKfQoKaW5saW5lIElUZXh0IElUaW1lOjphc1Rl
eHQoY29uc3QgaW9jOjp1bmljaGFyX3QqIGZtdCkgY29uc3QKewoJcmV0dXJuIGFzVGV4dFVuaUNo
YXIoKGNvbnN0IFVuaUNoYXIgKilmbXQpOwp9CgppbmxpbmUKCnN0ZDo6b3N0cmVhbSYgb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sIGNvbnN0IElUaW1lJiBhVGltZSkKCgoKewogICAg
cmV0dXJuIGFTdHJlYW0gPDwgYVRpbWUuYXNTdHJpbmcoKTsKfQoKIAoKIyAxOTEgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXRpbWUuaHBwIiAyCgog
CgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgogCgoKCgoKCiMgNCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21x
cXVldWUuY3BwIiAyCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2ljb25kaXRuLmhwcCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJoYW5kbGUuaHBwIiAxCgoKCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKCiAKCgoKZXh0ZXJuICJDIgp7CgoKICAgICAKICAgIAojIDU3ICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liaGFuZGxlLmhwcCIKCgogICAgCgoK
ICAgIAoKCgogICAgCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoK
CiAKCgoKIAoKCgogCgoKCiAKCgoKCgoKIAoKCiAKCgoKCiAKCgogCgoKIAoKCgogCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCgoKIAoK
CiAKCgogCiAKCiAKCgogCgogCgoKIAoKCiAKCgoKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25t
ZW50cy5oIiAyIDMKCgogCgoKCgoKCgoKCgoKIyA0NyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJv
bm1lbnRzLmgiIDMKCgogCgoKIAoKCiAKCgoKCiMgMTc5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDIgMwoKCgogCgoKCgoKIAoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3Vz
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoK
CiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKIyAxOTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIF9faW50cHRyX3QgaW50cHRy
X3Q7CgoKCgogCgoKCgoKCiAKZXh0ZXJuIGludCBhY2Nlc3MgIChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSwgaW50IF9fdHlwZSkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGludCBldWlkYWNjZXNzICAo
X19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpICB0aHJvdyAoKSAgOwoKCgogCgoKCgoK
CgogCgoKCgoKCiAKCgoKCmV4dGVybiBfX29mZl90IF9fbHNlZWsgIChpbnQgX19mZCwgX19vZmZf
dCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBfX29mZl90IGxz
ZWVrICAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgIHRocm93ICgp
ICA7CiMgMjg5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgpleHRlcm4gX19vZmY2NF90IGxz
ZWVrNjQgIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICB0aHJv
dyAoKSAgOwoKCiAKZXh0ZXJuIGludCBfX2Nsb3NlICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwpl
eHRlcm4gaW50IGNsb3NlICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHNzaXpl
X3QgIF9fcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uYnl0ZXMpICB0
aHJvdyAoKSAgOwpleHRlcm4gc3NpemVfdCAgcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVm
LCBzaXplX3QgX19uYnl0ZXMpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gc3NpemVfdCAgX193cml0
ZSAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwpleHRlcm4gc3NpemVfdCAgd3JpdGUgIChpbnQgX19mZCwgX19jb25zdCB2b2lkICogIF9f
YnVmLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHNzaXplX3QgIF9fcHJl
YWQ2NCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCgkJCSAgICAg
ICBfX29mZjY0X3QgX19vZmZzZXQpICB0aHJvdyAoKSAgOwogCgpleHRlcm4gc3NpemVfdCAgX19w
d3JpdGU2NCAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24sCgkJ
CQlfX29mZjY0X3QgX19vZmZzZXQpICB0aHJvdyAoKSAgOwoKCmV4dGVybiBzc2l6ZV90ICBwcmVh
ZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCgkJCSAgIF9fb2Zm
X3QgX19vZmZzZXQpICB0aHJvdyAoKSAgOwpleHRlcm4gc3NpemVfdCAgcHdyaXRlICAoaW50IF9f
ZmQsIF9fY29uc3Qgdm9pZCAqICBfX2J1Ziwgc2l6ZV90IF9fbiwKCQkJICAgIF9fb2ZmX3QgX19v
ZmZzZXQpICB0aHJvdyAoKSAgOwojIDMzNSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCmV4
dGVybiBzc2l6ZV90ICBwcmVhZDY0ICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBf
X25ieXRlcywKCQkJICAgICBfX29mZjY0X3QgX19vZmZzZXQpICB0aHJvdyAoKSAgOwpleHRlcm4g
c3NpemVfdCAgcHdyaXRlNjQgIChpbnQgX19mZCwgX19jb25zdCB2b2lkICogIF9fYnVmLCBzaXpl
X3QgX19uLAoJCQkgICAgICBfX29mZjY0X3QgX19vZmZzZXQpICB0aHJvdyAoKSAgOwoKCgogCgoK
CmV4dGVybiBpbnQgcGlwZSAgKGludCBfX3BpcGVkZXNbMl0pICB0aHJvdyAoKSAgOwoKIAoKCgoK
CgpleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgIHRo
cm93ICgpICA7CgogCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgICh1bnNpZ25lZCBp
bnQgX19zZWNvbmRzKSAgdGhyb3cgKCkgIDsKCgogCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgdWFs
YXJtICAodW5zaWduZWQgaW50IF9fdmFsdWUsCgkJCQkgdW5zaWduZWQgaW50IF9faW50ZXJ2YWwp
ICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHZvaWQgdXNsZWVwICAodW5zaWduZWQgaW50IF9fdXNl
Y29uZHMpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gaW50IHBhdXNlICAodm9pZCkgIHRocm93
ICgpICA7CgoKIApleHRlcm4gaW50IGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlk
X3QgX19vd25lciwKCQkgICAgICAgX19naWRfdCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgogCmV4
dGVybiBpbnQgZmNob3duICAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dy
b3VwKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gaW50IGxjaG93biAgKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX3VpZF90IF9fb3duZXIsCgkJCV9fZ2lkX3QgX19ncm91cCkgIHRocm93ICgpICA7
CgoKCiAKZXh0ZXJuIGludCBjaGRpciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAgdGhyb3cgKCkg
IDsKCgogCmV4dGVybiBpbnQgZmNoZGlyICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKCiAKCgoK
CgoKZXh0ZXJuIGNoYXIgKmdldGN3ZCAgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSAgdGhy
b3cgKCkgIDsKCgogCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1lICAodm9pZCkg
IHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gY2hhciAqZ2V0d2QgIChjaGFyICpfX2J1ZikgIHRo
cm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBkdXAgIChpbnQgX19mZCkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgZHVwMiAgKGludCBfX2ZkLCBpbnQgX19mZDIpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKIAoKZXh0
ZXJuIGludCBleGVjdmUgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2Fy
Z3ZbXSwKCQkJY2hhciAqX19jb25zdCBfX2VudnBbXSkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJu
IGludCBmZXhlY3ZlICAoaW50IF9fZmQsCgkJCSBjaGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFy
ICpfX2NvbnN0IF9fZW52cFtdKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGludCBleGVjdiAg
KF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSAgdGhyb3cgKCkg
IDsKCiAKCmV4dGVybiBpbnQgZXhlY2xlICAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3Qg
Y2hhciAqX19hcmcsIC4uLikgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGV4ZWNsICAoX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgIHRocm93ICgpICA7
CgogCgpleHRlcm4gaW50IGV4ZWN2cCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gaW50IGV4ZWNscCAgKF9fY29u
c3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICB0aHJvdyAoKSAgOwoK
CgogCmV4dGVybiBpbnQgbmljZSAgKGludCBfX2luYykgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu
IHZvaWQgX2V4aXQgIChpbnQgX19zdGF0dXMpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01B
WF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENf
UEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoK
ICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgog
ICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwK
CiAgICBfUENfRklMRVNJWkVCSVRTCgogIH07CgogCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwK
CiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01B
WCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFN
RV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1ND
X1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1ND
X1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9J
TywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQ
UEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAg
IF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9T
Q19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJ
T19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9N
QVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBf
U0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAg
ICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFM
VUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgogICAg
IAoKICAgIF9TQ19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNf
U0NBTEVfTUFYLAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNf
TUFYLAoKICAgIF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgog
ICAgX1NDX0xJTkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1Nf
TkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9T
Q18yX0NfREVWLAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAg
IF9TQ18yX1NXX0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAg
X1NDX1BJSV9YVEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwK
CiAgICBfU0NfUElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9T
Q19VSU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlf
SU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9D
TFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgogICAgIAogICAg
X1NDX1RIUkVBRFMsCgogICAgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUywKCiAgICBfU0NfR0VU
R1JfUl9TSVpFX01BWCwKCiAgICBfU0NfR0VUUFdfUl9TSVpFX01BWCwKCiAgICBfU0NfTE9HSU5f
TkFNRV9NQVgsCgogICAgX1NDX1RUWV9OQU1FX01BWCwKCiAgICBfU0NfVEhSRUFEX0RFU1RSVUNU
T1JfSVRFUkFUSU9OUywKCiAgICBfU0NfVEhSRUFEX0tFWVNfTUFYLAoKICAgIF9TQ19USFJFQURf
U1RBQ0tfTUlOLAoKICAgIF9TQ19USFJFQURfVEhSRUFEU19NQVgsCgogICAgX1NDX1RIUkVBRF9B
VFRSX1NUQUNLQUREUiwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19U
SFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwK
CiAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hB
UkVELAoKCiAgICBfU0NfTlBST0NFU1NPUlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05M
TiwKCiAgICBfU0NfUEhZU19QQUdFUywKCiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19B
VEVYSVRfTUFYLAoKICAgIF9TQ19QQVNTX01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgog
ICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19Y
T1BFTl9DUllQVCwKCiAgICBfU0NfWE9QRU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwK
CgogICAgX1NDXzJfQ0hBUl9URVJNLAoKICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9V
UEUsCgoKICAgIF9TQ19YT1BFTl9YUEcyLAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19Y
T1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hBUl9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9T
Q19DSEFSX01JTiwKCiAgICBfU0NfSU5UX01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0Nf
TE9OR19CSVQsCgogICAgX1NDX1dPUkRfQklULAoKICAgIF9TQ19NQl9MRU5fTUFYLAoKICAgIF9T
Q19OWkVSTywKCiAgICBfU0NfU1NJWkVfTUFYLAoKICAgIF9TQ19TQ0hBUl9NQVgsCgogICAgX1ND
X1NDSEFSX01JTiwKCiAgICBfU0NfU0hSVF9NQVgsCgogICAgX1NDX1NIUlRfTUlOLAoKICAgIF9T
Q19VQ0hBUl9NQVgsCgogICAgX1NDX1VJTlRfTUFYLAoKICAgIF9TQ19VTE9OR19NQVgsCgogICAg
X1NDX1VTSFJUX01BWCwKCgogICAgX1NDX05MX0FSR01BWCwKCiAgICBfU0NfTkxfTEFOR01BWCwK
CiAgICBfU0NfTkxfTVNHTUFYLAoKICAgIF9TQ19OTF9OTUFYLAoKICAgIF9TQ19OTF9TRVRNQVgs
CgogICAgX1NDX05MX1RFWFRNQVgsCgoKICAgIF9TQ19YQlM1X0lMUDMyX09GRjMyLAoKICAgIF9T
Q19YQlM1X0lMUDMyX09GRkJJRywKCiAgICBfU0NfWEJTNV9MUDY0X09GRjY0LAoKICAgIF9TQ19Y
QlM1X0xQQklHX09GRkJJRywKCgogICAgX1NDX1hPUEVOX0xFR0FDWSwKCiAgICBfU0NfWE9QRU5f
UkVBTFRJTUUsCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMKCiAgfTsKCgoKCiAKZW51
bQogIHsKICAgIF9DU19QQVRICQkJIAoKCgoKICAgICwKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAw
MCwKCiAgICBfQ1NfTEZTX0xERkxBR1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNf
TElOVEZMQUdTLAoKICAgIF9DU19MRlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1Ms
CgogICAgX0NTX0xGUzY0X0xJQlMsCgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUwoKCgoKICAgICwK
ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDExMDAsCgogICAgX0NTX1hCUzVfSUxQ
MzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9D
U19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdf
Q0ZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1
X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1Ms
CgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2
NF9MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfWEJTNV9M
UDY0X09GRjY0X0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoK
ICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09G
RkJJR19MSUJTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MKCgogIH07Cgoj
IDQ5NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCmV4dGVybiBsb25nIGludCBwYXRo
Y29uZiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAgKGludCBfX2ZkLCBpbnQgX19uYW1lKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IHN5c2NvbmYgIChpbnQgX19uYW1lKSAgdGhyb3cgKCkg
IDsKCgogCmV4dGVybiBzaXplX3QgY29uZnN0ciAgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAo
dm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBfX3BpZF90IGdldHBpZCAgKHZvaWQpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gX19waWRfdCBnZXRwcGlkICAodm9pZCkgIHRocm93ICgpICA7CgogCgoK
ZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0
ZXJuIF9fcGlkX3QgX19nZXRwZ2lkICAoX19waWRfdCBfX3BpZCkgIHRocm93ICgpICA7CgpleHRl
cm4gX19waWRfdCBnZXRwZ2lkICAoX19waWRfdCBfX3BpZCkgIHRocm93ICgpICA7CgoKCiAKCgpl
eHRlcm4gaW50IF9fc2V0cGdpZCAgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBzZXRwZ2lkICAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3Bn
aWQpICB0aHJvdyAoKSAgOwoKCiAKCgoKCgoKCgoKCgogCgpleHRlcm4gaW50IHNldHBncnAgICh2
b2lkKSAgdGhyb3cgKCkgIDsKCiMgNTczICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoK
CmV4dGVybiBfX3BpZF90IHNldHNpZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIF9f
cGlkX3QgZ2V0c2lkICAoX19waWRfdCBfX3BpZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gX191
aWRfdCBnZXR1aWQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIF9fdWlkX3QgZ2V0ZXVp
ZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gX19naWRfdCBnZXRnaWQgICh2b2lkKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAgKHZvaWQpICB0aHJvdyAoKSAg
OwoKIAoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBzICAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3Rb
XSkgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IGdyb3VwX21lbWJlciAgKF9fZ2lkX3QgX19n
aWQpICB0aHJvdyAoKSAgOwoKCiAKCgoKZXh0ZXJuIGludCBzZXR1aWQgIChfX3VpZF90IF9fdWlk
KSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gaW50IHNldHJldWlkICAoX191aWRfdCBfX3J1aWQs
IF9fdWlkX3QgX19ldWlkKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IHNldGV1aWQgIChf
X3VpZF90IF9fdWlkKSAgdGhyb3cgKCkgIDsKCgogCgoKCmV4dGVybiBpbnQgc2V0Z2lkICAoX19n
aWRfdCBfX2dpZCkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZWdpZCAgKF9fZ2lk
X3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBz
ZXRlZ2lkICAoX19naWRfdCBfX2dpZCkgIHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gX19waWRf
dCBfX2ZvcmsgICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIF9fcGlkX3QgZm9yayAgKHZvaWQp
ICB0aHJvdyAoKSAgOwoKCiAKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgIChpbnQgX19mZCkgIHRocm93ICgpICA7
CgogCgpleHRlcm4gaW50IHR0eW5hbWVfciAgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgaXNhdHR5ICAoaW50IF9fZmQp
ICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgdHR5c2xvdCAgKHZvaWQpICB0aHJvdyAoKSAg
OwoKCgogCmV4dGVybiBpbnQgbGluayAgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNo
YXIgKl9fdG8pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzeW1saW5rICAoX19jb25zdCBj
aGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgIHRocm93ICgpICA7CgogCgoKZXh0ZXJu
IGludCByZWFkbGluayAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgdW5saW5rICAoX19jb25zdCBjaGFy
ICpfX25hbWUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHJtZGlyICAoX19jb25zdCBjaGFy
ICpfX3BhdGgpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwICAoaW50
IF9fZmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHRjc2V0cGdycCAgKGludCBfX2ZkLCBf
X3BpZF90IF9fcGdycF9pZCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gY2hhciAqZ2V0bG9naW4g
ICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgogCmV4dGVybiBpbnQgc2V0bG9naW4gIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgoKCgogCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2dldG9wdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoK
IAoKCgoKCmV4dGVybiBjaGFyICpvcHRhcmc7CgogCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBvcHRp
bmQ7CgogCgoKZXh0ZXJuIGludCBvcHRlcnI7CgogCgpleHRlcm4gaW50IG9wdG9wdDsKCiMgMTAy
ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCmV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBjaGFyICpjb25zdCAqX19hcmd2LCBj
b25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CgoKCgojIDE1MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5o
IiAzCgojIDE2MCAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCgoKCn0KCgogCgoKCiMgNzI0ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgogCgoKZXh0ZXJuIGludCBnZXRob3N0bmFt
ZSAgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBp
bnQgc2V0aG9zdG5hbWUgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgdGhy
b3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgc2V0aG9zdGlkICAobG9uZyBpbnQgX19pZCkgIHRocm93
ICgpICA7CgoKIAoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAgKGNoYXIgKl9fbmFtZSwgc2l6
ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lICAoX19jb25z
dCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50
IGZzeW5jICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKCiAKCgpleHRlcm4gaW50IHZoYW5ndXAg
ICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCByZXZva2UgIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSkgIHRocm93ICgpICA7CgoKIAoKCgoKZXh0ZXJuIGludCBwcm9maWwgICh1bnNpZ25l
ZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKCQkJc2l6ZV90IF9f
b2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBp
bnQgYWNjdCAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBp
bnQgY2hyb290ICAoX19jb25zdCBjaGFyICpfX3BhdGgpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJu
IGNoYXIgKmdldHVzZXJzaGVsbCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBlbmR1
c2Vyc2hlbGwgICh2b2lkKSAgdGhyb3cgKCkgIDsgIApleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwg
ICh2b2lkKSAgdGhyb3cgKCkgIDsgIAoKCiAKCmV4dGVybiBjaGFyICpnZXRwYXNzICAoX19jb25z
dCBjaGFyICpfX3Byb21wdCkgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBkYWVtb24gIChp
bnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSAgdGhyb3cgKCkgIDsKCgoKCgoKIApleHRlcm4g
bG9uZyBpbnQgZ2V0aG9zdGlkICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3lu
YyAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgX19nZXRwYWdlc2l6ZSAgKHZv
aWQpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGludCBn
ZXRwYWdlc2l6ZSAgKHZvaWQpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgogCgpleHRlcm4gaW50IHRydW5jYXRlICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2Zm
X3QgX19sZW5ndGgpICB0aHJvdyAoKSAgOwojIDgyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CgoKZXh0ZXJuIGludCB0cnVuY2F0ZTY0ICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRf
dCBfX2xlbmd0aCkgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IF9fZnRydW5jYXRlICAoaW50
IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBmdHJ1bmNh
dGUgIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgIHRocm93ICgpICA7CgoKCgoKCgoKCmV4
dGVybiBpbnQgZnRydW5jYXRlNjQgIChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSAgdGhy
b3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICAodm9pZCkgIHRocm93ICgp
ICA7CgoKCgoKCiAKCmV4dGVybiBpbnQgYnJrICAodm9pZCAqICBfX2FkZHIpICB0aHJvdyAoKSAg
OwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2dj
Yy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoK
CgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgODYz
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiAKCgoKZXh0ZXJuIHZvaWQgKiAgX19zYnJr
ICAocHRyZGlmZl90IF9fZGVsdGEpICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCAqICBzYnJrICAo
cHRyZGlmZl90IF9fZGVsdGEpICB0aHJvdyAoKSAgOwoKCgoKIAoKCgoKCgoKCgpleHRlcm4gbG9u
ZyBpbnQgc3lzY2FsbCAgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgIHRocm93ICgpICA7CgoKCgoK
IAoKCgogCgoKCgoKCgoKCmV4dGVybiBpbnQgbG9ja2YgIChpbnQgX19mZCwgaW50IF9fY21kLCBf
X29mZl90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKZXh0ZXJuIGludCBsb2NrZjY0ICAo
aW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgoKCgoK
IAoKCgoKCgoKCgoKIAoKCgoKZXh0ZXJuIGludCBfX2xpYmNfZW5hYmxlX3NlY3VyZTsKCgoKCiAK
CmV4dGVybiBpbnQgZmRhdGFzeW5jICAoaW50IF9fZmlsZGVzKSAgdGhyb3cgKCkgIDsKCgoKIAoK
CiAKZXh0ZXJuIGNoYXIgKmNyeXB0ICAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFy
ICpfX3NhbHQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBzZXRrZXkgIChfX2NvbnN0IGNo
YXIgKl9fa2V5KSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiB2b2lkIGVuY3J5cHQgIChjaGFyICpf
X2Jsb2NrLCBpbnQgX19lZGZsYWcpICB0aHJvdyAoKSAgOwoKCiAKCgoKZXh0ZXJuIHZvaWQgc3dh
YiAgKF9fY29uc3Qgdm9pZCAqICBfX2Zyb20sIHZvaWQgKiAgX190bywgc3NpemVfdCAgX19uKSAg
dGhyb3cgKCkgIDsKCgoKIAoKCiAKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgIChjaGFyICpfX3MpICB0
aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgIChjaGFyICpfX3MpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3Qg
Y2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoKCgoKIAoKIAoKCgoKCgoKCgpleHRlcm4gaW50IHB0
aHJlYWRfYXRmb3JrICAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAoJCQkJdm9pZCAoKl9fcGFy
ZW50KSAodm9pZCksCgkJCQl2b2lkICgqX19jaGlsZCkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgp9
IAoKCiMgNjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWJoYW5kbGUuaHBwIiAyCgogICAgCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9h
c20vZXJybm8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNCAiL3Vzci9pbmNs
dWRlL2xpbnV4L2Vycm5vLmgiIDIgMwoKCiMgMTQgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAzCgoKCiMgMjUgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDIgMwoKCiAKCgogCgoKCgog
CmV4dGVybiBpbnQgZXJybm87CgogCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gICh2b2lk
KSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgogCgoKCgoK
CgoKCgoKCgojIDM2ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoK
IAoKCmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9jYXRpb25fbmFtZSwgKnByb2dyYW1faW52b2Nh
dGlvbl9zaG9ydF9uYW1lOwoKCgp9IAoKCgogCgoKCgoKdHlwZWRlZiBpbnQgZXJyb3JfdDsKCgoK
CiMgNjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWJoYW5kbGUuaHBwIiAyCgoKCgoKCn0KCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXZ0ZGF0YS5ocHAiIDEKCgoKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKIAoKIAojcHJhZ21h
IGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVW
RUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19J
T0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAK
IAoKIAogCgogCgpjbGFzcyAgIElFdmVudERhdGEKewpwdWJsaWM6CiAgICAgCiAgICBJRXZlbnRE
YXRhKCApOwoKICAgIElFdmVudERhdGEoYm9vbCB2YWx1ZSk7CgogICAgSUV2ZW50RGF0YSh2b2lk
KiB2YWx1ZSk7CiAgICBJRXZlbnREYXRhKHVuc2lnbmVkIGxvbmcgdmFsdWUpOwogICAgSUV2ZW50
RGF0YShpbnQgdmFsdWUpOwogICAgSUV2ZW50RGF0YSh1bnNpZ25lZCBzaG9ydCBsb3dWYWx1ZSwg
dW5zaWduZWQgc2hvcnQgaGlWYWx1ZSk7CiAgICBJRXZlbnREYXRhKHVuc2lnbmVkIHNob3J0IGxv
d1ZhbHVlLCBjaGFyIGxvd0J5dGUsIGNoYXIgaGlCeXRlKTsKCiAgICAgCiAgICB1bnNpZ25lZCBz
aG9ydCBsb3dOdW1iZXIoKSBjb25zdDsKICAgIHVuc2lnbmVkIHNob3J0IGhpZ2hOdW1iZXIoKSBj
b25zdDsKICAgIHVuc2lnbmVkIHNob3J0IG51bWJlcjEoKSBjb25zdDsKICAgIHVuc2lnbmVkIHNo
b3J0IG51bWJlcjIoKSBjb25zdDsKCiAgICBjaGFyIGxvd0xvd0J5dGUoKSBjb25zdDsKICAgIGNo
YXIgbG93SGlnaEJ5dGUoKSBjb25zdDsKICAgIGNoYXIgaGlnaExvd0J5dGUoKSBjb25zdDsKICAg
IGNoYXIgaGlnaEhpZ2hCeXRlKCkgY29uc3Q7CiAgICBjaGFyIGNoYXIxKCkgY29uc3Q7CiAgICBj
aGFyIGNoYXIyKCkgY29uc3Q7CiAgICBjaGFyIGNoYXIzKCkgY29uc3Q7CiAgICBjaGFyIGNoYXI0
KCkgY29uc3Q7CgogICAgIAogICAgdW5zaWduZWQgbG9uZyBhc1Vuc2lnbmVkTG9uZygpIGNvbnN0
OwogICAgbG9uZyBhc0xvbmcoKSBjb25zdDsKCiAgICBvcGVyYXRvciBjaGFyKigpIGNvbnN0Owog
ICAgb3BlcmF0b3IgdW5zaWduZWQgbG9uZygpIGNvbnN0OwoKcHJpdmF0ZToKICAgICAKICAgIHZv
aWQqIHB2Q2xNc2c7Cn07Cgp0eXBlZGVmIElFdmVudERhdGEgSUV2ZW50UGFyYW1ldGVyMTsKdHlw
ZWRlZiBJRXZlbnREYXRhIElFdmVudFBhcmFtZXRlcjI7CnR5cGVkZWYgSUV2ZW50RGF0YSBJTG93
RXZlbnRQYXJhbWV0ZXI7CnR5cGVkZWYgSUV2ZW50RGF0YSBJSGlnaEV2ZW50UGFyYW1ldGVyOwp0
eXBlZGVmIElFdmVudERhdGEgSUV2ZW50UmVzdWx0OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVt
KHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXZ0ZGF0YS5pbmwiIDEK
CgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgppbmxpbmUg
SUV2ZW50RGF0YSA6OiBJRXZlbnREYXRhICggKQogIDogcHZDbE1zZyAoIDAgKQogIHsgfQoKaW5s
aW5lIElFdmVudERhdGEgOjogSUV2ZW50RGF0YSAoIGJvb2wgdmFsdWUgKQogIHsKICBwdkNsTXNn
ID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpdmFsdWUpOwogIH0KCmlubGluZSBJRXZlbnREYXRh
IDo6IElFdmVudERhdGEgKCB2b2lkKiB2YWx1ZSApCiAgewogIHB2Q2xNc2cgPSB2YWx1ZTsKICB9
CmlubGluZSBJRXZlbnREYXRhIDo6IElFdmVudERhdGEgKCB1bnNpZ25lZCBsb25nIHZhbHVlICkK
ICB7CiAgcHZDbE1zZyA9ICh2b2lkKil2YWx1ZTsKICB9CmlubGluZSBJRXZlbnREYXRhIDo6IElF
dmVudERhdGEgKCBpbnQgdmFsdWUgKQogIHsKICBwdkNsTXNnID0gKHZvaWQqKSgodW5zaWduZWQg
bG9uZyl2YWx1ZSk7CiAgfQppbmxpbmUgSUV2ZW50RGF0YSA6OiBJRXZlbnREYXRhICggdW5zaWdu
ZWQgc2hvcnQgbG93VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCBoaVZhbHVlICkKICB7CiAgcHZDbE1zZyA9ICh2b2lkKikobG93VmFsdWUgfCAo
dW5zaWduZWQgbG9uZyloaVZhbHVlIDw8IDE2KTsKICB9CmlubGluZSBJRXZlbnREYXRhIDo6IElF
dmVudERhdGEgKCB1bnNpZ25lZCBzaG9ydCBsb3dWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgbG93Qnl0ZSwgY2hhciBoaUJ5dGUgKQogIHsKICB1bnNpZ25lZCBz
aG9ydCBoaVZhbHVlID0gKHVuc2lnbmVkIHNob3J0KShsb3dCeXRlIHwgKHVuc2lnbmVkIHNob3J0
KWhpQnl0ZSA8PAogIDgpOyBwdkNsTXNnID0gKHZvaWQqKShsb3dWYWx1ZSB8ICh1bnNpZ25lZCBs
b25nKWhpVmFsdWUgPDwgMTYpOwogIH0KaW5saW5lIGNoYXIgIElFdmVudERhdGEgOjogbG93TG93
Qnl0ZSAoICkgY29uc3QKICB7CiAgcmV0dXJuIChjaGFyKSh1bnNpZ25lZCBsb25nKXB2Q2xNc2c7
CiAgfQppbmxpbmUgY2hhciAgSUV2ZW50RGF0YSA6OiBsb3dIaWdoQnl0ZSAoICkgY29uc3QKICB7
CiAgcmV0dXJuIChjaGFyKSgodW5zaWduZWQgbG9uZylwdkNsTXNnID4+IDgpOwogIH0KaW5saW5l
IGNoYXIgIElFdmVudERhdGEgOjogaGlnaExvd0J5dGUgKCApIGNvbnN0CiAgewogIHJldHVybiAo
Y2hhcikoKHVuc2lnbmVkIGxvbmcpcHZDbE1zZyA+PiAxNik7CiAgfQppbmxpbmUgY2hhciAgSUV2
ZW50RGF0YSA6OiBoaWdoSGlnaEJ5dGUgKCApIGNvbnN0CiAgewogIHJldHVybiAoY2hhcikoKHVu
c2lnbmVkIGxvbmcpcHZDbE1zZyA+PiAyNCk7CiAgfQppbmxpbmUgY2hhciAgSUV2ZW50RGF0YSA6
OiBjaGFyMSAoICkgY29uc3QKICB7CiAgcmV0dXJuIGxvd0xvd0J5dGUoKTsKICB9CmlubGluZSBj
aGFyICBJRXZlbnREYXRhIDo6IGNoYXIyICggKSBjb25zdAogIHsKICByZXR1cm4gbG93SGlnaEJ5
dGUoKTsKICB9CmlubGluZSBjaGFyICBJRXZlbnREYXRhIDo6IGNoYXIzICggKSBjb25zdAogIHsK
ICByZXR1cm4gaGlnaExvd0J5dGUoKTsKICB9CmlubGluZSBjaGFyICBJRXZlbnREYXRhIDo6IGNo
YXI0ICggKSBjb25zdAogIHsKICByZXR1cm4gaGlnaEhpZ2hCeXRlKCk7CiAgfQppbmxpbmUgdW5z
aWduZWQgc2hvcnQgIElFdmVudERhdGEgOjogbG93TnVtYmVyICggKSBjb25zdAogIHsKICByZXR1
cm4gKHVuc2lnbmVkIHNob3J0KSh1bnNpZ25lZCBsb25nKXB2Q2xNc2c7CiAgfQppbmxpbmUgdW5z
aWduZWQgc2hvcnQgIElFdmVudERhdGEgOjogaGlnaE51bWJlciAoICkgY29uc3QKICB7CiAgcmV0
dXJuICh1bnNpZ25lZCBzaG9ydCkoKHVuc2lnbmVkIGxvbmcpcHZDbE1zZyA+PiAxNik7CiAgfQpp
bmxpbmUgdW5zaWduZWQgc2hvcnQgIElFdmVudERhdGEgOjogbnVtYmVyMSAoICkgY29uc3QKICB7
CiAgcmV0dXJuIGxvd051bWJlcigpOwogIH0KaW5saW5lIHVuc2lnbmVkIHNob3J0ICBJRXZlbnRE
YXRhIDo6IG51bWJlcjIgKCApIGNvbnN0CiAgewogIHJldHVybiBoaWdoTnVtYmVyKCk7CiAgfQpp
bmxpbmUgdW5zaWduZWQgbG9uZyAgSUV2ZW50RGF0YSA6OiBhc1Vuc2lnbmVkTG9uZyAoICkgY29u
c3QKICB7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB2Q2xNc2c7CiAgfQppbmxpbmUgbG9uZyAg
SUV2ZW50RGF0YSA6OiBhc0xvbmcgKCApIGNvbnN0CiAgewogIHJldHVybiAobG9uZylwdkNsTXNn
OwogIH0KaW5saW5lIElFdmVudERhdGEgOjogb3BlcmF0b3IgY2hhciogKCApIGNvbnN0CiAgewog
IHJldHVybiAoY2hhciopcHZDbE1zZzsKICB9CmlubGluZSBJRXZlbnREYXRhIDo6IG9wZXJhdG9y
IHVuc2lnbmVkIGxvbmcgKCApIGNvbnN0CiAgewogIHJldHVybiAodW5zaWduZWQgbG9uZylwdkNs
TXNnOwogIH0KCiAKCiMgMTM4ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2lldnRkYXRhLmhwcCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3By
YWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyA3NSAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmhhbmRsZS5ocHAi
IDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pc3RyZWFtLmhwcCIgMQojIDU2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lzdHJlYW0uaHBwIgoKCgoKCiMgNzYgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJoYW5kbGUuaHBwIiAyCgogCgogCiNw
cmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9S
VF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKIAoKIAoKI3ByYWdtYSBuYW1lbWFu
Z2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoK
CgoKCiAKCiAKIAoKIApjbGFzcyBJU3RyaW5nOwpjbGFzcyBJSGFuZGxlOwpjbGFzcyBJVGhyZWFk
SWQ7CmNsYXNzIElQcm9jZXNzSWQ7CmNsYXNzIElFbnVtSGFuZGxlOwpjbGFzcyBJUHJpdmF0ZVNl
bWFwaG9yZUhhbmRsZTsKY2xhc3MgSVNoYXJlZFNlbWFwaG9yZUhhbmRsZTsKY2xhc3MgSU1vZHVs
ZUhhbmRsZTsKCgppbmxpbmUgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
JiBhU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSUhhbmRsZSYgYUhhbmRsZSk7CmlubGluZSBzdGQ6Om9zdHJlYW0mICAgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJVGhyZWFkSWQmIGFIYW5kbGUpOwoKCgoKCmlubGluZSBzdGQ6Om9zdHJl
YW0mICAgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJUHJvY2Vzc0lkJiBhSGFuZGxlKTsKaW5s
aW5lIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFbnVtSGFuZGxl
JiBhSGFuZGxlKTsKaW5saW5lIHN0ZDo6b3N0cmVhbSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IElQcml2YXRlU2VtYXBob3JlSGFuZGxlJiBhSGFuZGxlKTsKaW5saW5lIHN0ZDo6b3N0cmVh
bSYgICBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTaGFyZWRTZW1hcGhvcmVIYW5kbGUmIGFI
YW5kbGUpOwppbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTW9kdWxlSGFuZGxl
JiBhSGFuZGxlKTsKIyAxNTkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaWJoYW5kbGUuaHBwIgoKCmJvb2wgICBvcGVyYXRvcj09KGNvbnN0IElUaHJl
YWRJZCAmdGhyZWFkSWQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJVGhyZWFk
SWQgJnRocmVhZElkMik7CmJvb2wgICBvcGVyYXRvciE9KGNvbnN0IElUaHJlYWRJZCAmdGhyZWFk
SWQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJVGhyZWFkSWQgJnRocmVhZElk
Mik7CgogCgogCgpjbGFzcyAgIElIYW5kbGUKewpwdWJsaWM6CiAgICAgCgoKCiAgICB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgVmFsdWU7CgoKICAgICAKICAgIElIYW5kbGUgKFZhbHVlIHZhbHVlKTsK
CiAgICAgCiAgICBJU3RyaW5nIGFzU3RyaW5nKCkgY29uc3Q7CiAgICBJU3RyaW5nIGFzRGVidWdJ
bmZvKCkgY29uc3Q7CgoKICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0gIAogICAgICAgICZvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwgY29uc3QgSUhhbmRsZSYgYUhhbmRsZSk7CgoKCgoK
ICAgIHVuc2lnbmVkIGxvbmcgYXNVbnNpZ25lZCgpIGNvbnN0OwoKICAgICAKICAgIG9wZXJhdG9y
IFZhbHVlKCkgY29uc3Q7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICBWYWx1ZSBoYW5kbGU7Cn07CgoK
Y2xhc3MgICBJVGhyZWFkSWQKewpwdWJsaWM6CiAgICAgCiAgICBJVGhyZWFkSWQoKTsKICAgIElU
aHJlYWRJZChjb25zdCBJVGhyZWFkSWQmIHRpZCApOwogICAgSVRocmVhZElkJiBvcGVyYXRvcj0g
KCBjb25zdCBJVGhyZWFkSWQmIHRpZCApOwoKCgoKICAgIElUaHJlYWRJZCh1bnNpZ25lZCBsb25n
IHRoaWQpOwoKCiAgICAgCiAgICB+SVRocmVhZElkKCk7CgoKICAgICAKICAgIGZyaWVuZCBib29s
ICAgb3BlcmF0b3I9PSggIGNvbnN0IElUaHJlYWRJZCAgJnRocmVhZElkMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElUaHJlYWRJZCAgJnRocmVhZElkMik7
CgogICAgZnJpZW5kIGJvb2wgICBvcGVyYXRvciE9KCAgY29uc3QgSVRocmVhZElkICAmdGhyZWFk
SWQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVRocmVh
ZElkICAmdGhyZWFkSWQyKTsKCiAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKCgogICAgIAogICAg
SVN0cmluZyBhc1N0cmluZygpIGNvbnN0OwogICAgSVN0cmluZyBhc0RlYnVnSW5mbygpIGNvbnN0
OwoKCiAgICBmcmllbmQgc3RkOjpvc3RyZWFtICAgJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYg
YVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSVRocmVhZElkJiBhSGFuZGxlICk7CgoKCgoKCiAgICB1bnNpZ25lZCBsb25nIGFzVW5z
aWduZWQoKSBjb25zdDsKCgoKCgoKCgogICAgIAoKICAgIG9wZXJhdG9yIHVuc2lnbmVkIGxvbmco
KSBjb25zdDsKCgoKCnByaXZhdGU6CgoKCgogICAgdW5zaWduZWQgbG9uZyAgIGZTeXN0ZW1UaHJl
YWRJZDsKCn07CgoKIyAzMDYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaWJoYW5kbGUuaHBwIgoKdHlwZWRlZiBJVGhyZWFkSWQgSVRocmVhZEhhbmRs
ZTsKCgoKY2xhc3MgICBJUHJvY2Vzc0lkCnsKcHVibGljOgoKCgogICAgdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIFZhbHVlOwoKCiAgICAgCiAgICBJUHJvY2Vzc0lkKFZhbHVlIHBpZCA9IDApOwoKICAg
ICAKICAgIElTdHJpbmcgYXNTdHJpbmcoKSBjb25zdDsKICAgIElTdHJpbmcgYXNEZWJ1Z0luZm8o
KSBjb25zdDsKCgogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAgICZvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJUHJvY2Vzc0lkJiBhSGFuZGxlKTsKCgoKCgogICAgdW5zaWduZWQgbG9uZyBh
c1Vuc2lnbmVkKCkgY29uc3Q7CgogICAgIAogICAgb3BlcmF0b3IgVmFsdWUoKSBjb25zdDsKCnBy
aXZhdGU6CiAgICAgCiAgICBWYWx1ZSBoYW5kbGU7Cgp9OwoKCmNsYXNzICAgSUVudW1IYW5kbGUK
ewpwdWJsaWM6CgoKCiAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVmFsdWU7CgoKICAgICAKICAg
IElFbnVtSGFuZGxlKFZhbHVlIGhlbnVtID0gMCk7CgogICAgIAogICAgSVN0cmluZyBhc1N0cmlu
ZyAoKSBjb25zdDsKICAgIElTdHJpbmcgYXNEZWJ1Z0luZm8oKSBjb25zdDsKCgogICAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSAgCiAgICAgICAgJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFt
LCBjb25zdCBJRW51bUhhbmRsZSYgYUhhbmRsZSk7CgoKCgoKICAgIHVuc2lnbmVkIGxvbmcgYXNV
bnNpZ25lZCgpIGNvbnN0OwoKICAgICAKICAgIG9wZXJhdG9yIFZhbHVlKCkgY29uc3Q7Cgpwcml2
YXRlOgogICAgIAogICAgVmFsdWUgaGFuZGxlOwp9OwoKCmNsYXNzICAgSVByaXZhdGVTZW1hcGhv
cmVIYW5kbGUKewpwdWJsaWM6CgoKCgogIHR5cGVkZWYgdm9pZCogVmFsdWU7CgoKICAgICAKICAg
IElQcml2YXRlU2VtYXBob3JlSGFuZGxlKFZhbHVlIHByaXZTZW1JZCA9IDApOwoKCiAKICAgIElQ
cml2YXRlU2VtYXBob3JlSGFuZGxlJiBvcGVyYXRvcj0oVmFsdWUgcHJpdlNlbUlkKTsKCgogICAg
IAogICAgfklQcml2YXRlU2VtYXBob3JlSGFuZGxlKCk7CgogICAgIAogICAgSVN0cmluZyBhc1N0
cmluZygpIGNvbnN0OwogICAgSVN0cmluZyBhc0RlYnVnSW5mbygpIGNvbnN0OwoKCiAgICBmcmll
bmQgc3RkOjpvc3RyZWFtICAKICAgICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwK
ICAgICAgICAgICAgICAgIGNvbnN0IElQcml2YXRlU2VtYXBob3JlSGFuZGxlJiBhSGFuZGxlKTsK
CgoKCgogCiAgICB1bnNpZ25lZCBsb25nIGFzVW5zaWduZWQoKSBjb25zdDsKIAoKICAgICAKICAg
IG9wZXJhdG9yIFZhbHVlKCkgY29uc3Q7CgoKcHJpdmF0ZToKICAgICAKICAgIFZhbHVlIGZTeXN0
ZW1Qcml2U2VtSWQ7Cn07CgoKY2xhc3MgICBJU2hhcmVkU2VtYXBob3JlSGFuZGxlCnsKcHVibGlj
OgoKCgogICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICBWYWx1ZTsKCgogICAgIAogICAgSVNoYXJl
ZFNlbWFwaG9yZUhhbmRsZShWYWx1ZSBoc2VtID0gMCk7CgogICAgIAogICAgSVN0cmluZyBhc1N0
cmluZygpIGNvbnN0OwogICAgSVN0cmluZyBhc0RlYnVnSW5mbygpIGNvbnN0OwoKCiAgICBmcmll
bmQgc3RkOjpvc3RyZWFtICAKICAgICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwg
Y29uc3QgSVNoYXJlZFNlbWFwaG9yZUhhbmRsZSYgYUhhbmRsZSk7CgoKCgoKICAgIHVuc2lnbmVk
IGxvbmcgYXNVbnNpZ25lZCgpIGNvbnN0OwoKICAgICAKICAgIG9wZXJhdG9yIFZhbHVlKCkgY29u
c3Q7Cgpwcml2YXRlOgogICAgIAogICAgVmFsdWUgaGFuZGxlOwp9OwoKdHlwZWRlZiBJU2hhcmVk
U2VtYXBob3JlSGFuZGxlIElTZW1hcGhvcmVIYW5kbGU7CmNsYXNzIElNb2R1bGVIYW5kbGUKewpw
dWJsaWM6CiAgICAgCgogICAgdHlwZWRlZiB2b2lkKiBWYWx1ZTsKCgoKCgoKCgoKCgoKCgogICAg
IAogICAgSU1vZHVsZUhhbmRsZShWYWx1ZSB2YWx1ZSA9IDApOwoKICAgICAKICAgIElTdHJpbmcg
YXNTdHJpbmcoKSBjb25zdDsKICAgIElTdHJpbmcgYXNEZWJ1Z0luZm8oKSBjb25zdDsKCgogICAg
ZnJpZW5kIHN0ZDo6b3N0cmVhbQogICAgJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFt
LCBjb25zdCBJTW9kdWxlSGFuZGxlJiBhSGFuZGxlKTsKCgoKCgogICAgdW5zaWduZWQgbG9uZyBh
c1Vuc2lnbmVkKCkgY29uc3Q7CgogICAgIAogICAgb3BlcmF0b3IgVmFsdWUoKSBjb25zdDsKCnBy
aXZhdGU6CiAgICAgCiAgICBWYWx1ZSBmaGFuZGxlOwp9OwogCgogCgoKCgoKCgojcHJhZ21hIGVu
dW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9h
a25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liaGFuZGxlLmlubCIg
MQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIyAx
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdHJl
YW0uaHBwIiAxCiMgNTYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaXN0cmVhbS5ocHAiCgoKCgoKIyAyOSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmhhbmRsZS5pbmwiIDIKCiAKCiAKIAogCmlubGlu
ZSBJSGFuZGxlOjpJSGFuZGxlKFZhbHVlIHZhbHVlKSA6CgogICAgaGFuZGxlKCB2YWx1ZSApCnsK
fQoKaW5saW5lIHVuc2lnbmVkIGxvbmcgSUhhbmRsZTo6YXNVbnNpZ25lZCgpIGNvbnN0CnsKICAg
IHJldHVybiAodW5zaWduZWQgbG9uZyl0aGlzLT5oYW5kbGU7Cn0KCmlubGluZQoKc3RkOjpvc3Ry
ZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwgY29uc3QgSUhhbmRsZSYgYUhh
bmRsZSApCgoKCnsKICAgIHJldHVybiBhU3RyZWFtIDw8IGFIYW5kbGUuYXNTdHJpbmcoKTsKfQoK
aW5saW5lIElIYW5kbGU6Om9wZXJhdG9yIElIYW5kbGU6OlZhbHVlKCkgY29uc3QKewogICAgcmV0
dXJuIHRoaXMtPmhhbmRsZTsKfQoKCiAKIAogCmlubGluZSBJUHJvY2Vzc0lkOjpJUHJvY2Vzc0lk
IChWYWx1ZSB2YWx1ZSkgOgoKICAgIGhhbmRsZSggdmFsdWUgKQp7Cn0KCmlubGluZSB1bnNpZ25l
ZCBsb25nIElQcm9jZXNzSWQ6OmFzVW5zaWduZWQoKSBjb25zdAp7CiAgICByZXR1cm4gKCh1bnNp
Z25lZCBsb25nKXRoaXMtPmhhbmRsZSk7Cn0KCmlubGluZSBJUHJvY2Vzc0lkOjpvcGVyYXRvciBJ
UHJvY2Vzc0lkOjpWYWx1ZSgpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5oYW5kbGU7Cn0KCmlu
bGluZSBJVGhyZWFkSWQ6OklUaHJlYWRJZCAoKQp7CgoKCgogICAgZlN5c3RlbVRocmVhZElkID0g
MDsKCn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0
cmVhbSwgY29uc3QgSVByb2Nlc3NJZCYgYUhhbmRsZSkKCgoKewogICAgcmV0dXJuIGFTdHJlYW0g
PDwgYUhhbmRsZS5hc1N0cmluZygpOwp9CgoKIAogCiAKIyAxMTMgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJoYW5kbGUuaW5sIgoKCmlubGluZSBJ
VGhyZWFkSWQ6OklUaHJlYWRJZCAgKHVuc2lnbmVkIGxvbmcgIHRoaWQpCnsKCgoKCiAgICB0aGlz
LT5mU3lzdGVtVGhyZWFkSWQgPSB0aGlkOwoKfQoKCgppbmxpbmUgSVRocmVhZElkOjp+SVRocmVh
ZElkICggKQp7CgoKCgoKICAgICAgIGZTeXN0ZW1UaHJlYWRJZCA9IDA7CgoKfQoKaW5saW5lIElU
aHJlYWRJZDo6SVRocmVhZElkIChjb25zdCBJVGhyZWFkSWQgICZ0aWQgKQp7CiAKCiAKCiAKIAog
CiAKIAogCgogCgoKCgogICAgZlN5c3RlbVRocmVhZElkID0gdGlkOwoKCiAKfQoKaW5saW5lCgpz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFtLCBjb25zdCBJVGhy
ZWFkSWQmIGFIYW5kbGUpCgoKCnsKICAgIHJldHVybiBhU3RyZWFtIDw8IGFIYW5kbGUuYXNTdHJp
bmcoKTsKfQoKCiAKIAogCiMgMTkzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2liaGFuZGxlLmlubCIKCgoKCiAKIAogCmlubGluZSBJRW51bUhhbmRs
ZTo6SUVudW1IYW5kbGUoVmFsdWUgdmFsdWUpIDoKCiAgICBoYW5kbGUoIHZhbHVlICkKewp9Cgpp
bmxpbmUgdW5zaWduZWQgbG9uZyBJRW51bUhhbmRsZTo6YXNVbnNpZ25lZCgpIGNvbnN0CnsKICAg
IHJldHVybiAoICh1bnNpZ25lZCBsb25nKXRoaXMtPmhhbmRsZSApOwp9CgppbmxpbmUgSUVudW1I
YW5kbGU6Om9wZXJhdG9yIElFbnVtSGFuZGxlOjpWYWx1ZSgpIGNvbnN0CnsKICAgIHJldHVybiB0
aGlzLT5oYW5kbGU7Cn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSYgYVN0cmVhbSwgY29uc3QgSUVudW1IYW5kbGUmIGFIYW5kbGUpCgoKCnsKICAgIHJldHVy
biBhU3RyZWFtIDw8IGFIYW5kbGUuYXNTdHJpbmcoKTsKfQoKCiAKIAogCmlubGluZSBJUHJpdmF0
ZVNlbWFwaG9yZUhhbmRsZTo6SVByaXZhdGVTZW1hcGhvcmVIYW5kbGUoVmFsdWUgcHJpdlNlbUlk
KQp7CiAgICBmU3lzdGVtUHJpdlNlbUlkID0gcHJpdlNlbUlkOwp9CgppbmxpbmUgSVByaXZhdGVT
ZW1hcGhvcmVIYW5kbGU6On5JUHJpdmF0ZVNlbWFwaG9yZUhhbmRsZSgpCnsKCiAgICBpZiAoZlN5
c3RlbVByaXZTZW1JZCAhPSAwKQogICAgewogICAgICAgIGZTeXN0ZW1Qcml2U2VtSWQgID0gMDsK
ICAgIH0KCn0KCmlubGluZSBJUHJpdmF0ZVNlbWFwaG9yZUhhbmRsZTo6b3BlcmF0b3IgSVByaXZh
dGVTZW1hcGhvcmVIYW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgICByZXR1cm4gdGhpcy0+ZlN5
c3RlbVByaXZTZW1JZDsKfQoKaW5saW5lCgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBhU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSVByaXZhdGVT
ZW1hcGhvcmVIYW5kbGUmIGFIYW5kbGUpCgoKCnsKICAgIHJldHVybiBhU3RyZWFtIDw8IGFIYW5k
bGUuYXNTdHJpbmcoKTsKfQoKCiAKIAogCmlubGluZSBJU2hhcmVkU2VtYXBob3JlSGFuZGxlOjpJ
U2hhcmVkU2VtYXBob3JlSGFuZGxlKFZhbHVlIHZhbHVlKSA6CgogICAgaGFuZGxlKHZhbHVlKQp7
Cn0KCmlubGluZSB1bnNpZ25lZCBsb25nIElTaGFyZWRTZW1hcGhvcmVIYW5kbGU6OmFzVW5zaWdu
ZWQoKSBjb25zdAp7CiAgICByZXR1cm4oKHVuc2lnbmVkIGxvbmcpdGhpcy0+aGFuZGxlKTsKfQoK
aW5saW5lIElTaGFyZWRTZW1hcGhvcmVIYW5kbGU6Om9wZXJhdG9yIElTaGFyZWRTZW1hcGhvcmVI
YW5kbGU6OlZhbHVlKCkgY29uc3QKewogICAgcmV0dXJuIHRoaXMtPmhhbmRsZTsKfQoKaW5saW5l
CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBhU3RyZWFtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSVNoYXJlZFNlbWFwaG9yZUhhbmRsZSYgYUhhbmRsZSkK
CgoKewogICAgcmV0dXJuIGFTdHJlYW0gPDwgYUhhbmRsZS5hc1N0cmluZygpOwp9CgogCiAKIApp
bmxpbmUgSU1vZHVsZUhhbmRsZTo6SU1vZHVsZUhhbmRsZSAoVmFsdWUgdmFsdWUpIDoKCiAgICBm
aGFuZGxlKHZhbHVlKQp7Cn0KCmlubGluZSB1bnNpZ25lZCBsb25nIElNb2R1bGVIYW5kbGU6OmFz
VW5zaWduZWQoKSBjb25zdAp7CiAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHRoaXMtPmZoYW5k
bGU7Cn0KCmlubGluZSBJTW9kdWxlSGFuZGxlOjpvcGVyYXRvciBJTW9kdWxlSGFuZGxlOjpWYWx1
ZSgpIGNvbnN0CnsKICAgIHJldHVybiB0aGlzLT5maGFuZGxlOwp9CgppbmxpbmUKCnN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sIGNvbnN0IElNb2R1bGVIYW5k
bGUmIGhhbmRsZSkKCgoKewogICAgcmV0dXJuIGFTdHJlYW0gPDwgaGFuZGxlLmFzU3RyaW5nKCk7
Cn0KCiAKCiMgNTMwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2liaGFuZGxlLmhwcCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSBy
ZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzNiAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pY29uZGl0bi5ocHAiIDIKCiAK
CiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJf
UkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1h
bmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoK
CgoKCgogCgogCiAKCiAKY2xhc3MgSVN0cmluZzsKY2xhc3MgSVJlc291cmNlTG9jazsKY2xhc3Mg
SVByaXZDb25kSW1wbDsKY2xhc3MgSVNoYXJlZENvbmRJbXBsOwpjbGFzcyBJU3RhcnRlZFRocmVh
ZDsKIAoKIAoKY2xhc3MgSUNvbmRpdGlvbgp7CnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIFJlbG9j
ayhJUmVzb3VyY2VMb2NrJiwgaW9jOjpudW1lcmljX3QgdGltZXMpOwogICAgc3RhdGljIGlvYzo6
bnVtZXJpY190IFVubG9jayhJUmVzb3VyY2VMb2NrJik7CgpwdWJsaWM6CiAgICB2aXJ0dWFsIGJv
b2wgd2FpdChpb2M6Om51bWVyaWNfdCB0aW1lT3V0ID0gLTEpID0gMDsKICAgIHZpcnR1YWwgYm9v
bCB3YWl0KElSZXNvdXJjZUxvY2smIGFsb2NrLCBpb2M6Om51bWVyaWNfdCB0aW1lT3V0ID0gLTEp
ID0gMDsKICAgIHZpcnR1YWwgdm9pZCBzaWduYWwoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgYnJv
YWRjYXN0KCkgPSAwOwogICAgdmlydHVhbCB+SUNvbmRpdGlvbigpIHt9Cgpwcm90ZWN0ZWQ6CiAg
ICBJQ29uZGl0aW9uKCkge30KCnByaXZhdGU6CiAgICBJQ29uZGl0aW9uKGNvbnN0IElDb25kaXRp
b24mIGNvbmRpdGlvbik7CiAgICBJQ29uZGl0aW9uICYgb3BlcmF0b3I9KGNvbnN0IElDb25kaXRp
b24mIGNvbmRpdGlvbik7Cn07CgpjbGFzcyBJUHJpdmF0ZUNvbmRpdGlvbiA6IHB1YmxpYyBJQ29u
ZGl0aW9uCnsKcHVibGljOgogICAgSVByaXZhdGVDb25kaXRpb24oKTsKICAgIHZpcnR1YWwgfklQ
cml2YXRlQ29uZGl0aW9uKCk7CgogICAgdmlydHVhbCBib29sIHdhaXQoaW9jOjpudW1lcmljX3Qg
dGltZU91dCA9IC0xKTsKICAgIHZpcnR1YWwgYm9vbCB3YWl0KElSZXNvdXJjZUxvY2smIGFMb2Nr
LCBpb2M6Om51bWVyaWNfdCB0aW1lT3V0ID0gLTEpOwoKICAgIHZpcnR1YWwgdm9pZCBzaWduYWwo
KTsKCiAgICB2aXJ0dWFsIHZvaWQgYnJvYWRjYXN0KCk7Cgpwcml2YXRlOgogICAgSVByaXZhdGVD
b25kaXRpb24oY29uc3QgSVByaXZhdGVDb25kaXRpb24mIGNvbmRpdGlvbik7CiAgICBJUHJpdmF0
ZUNvbmRpdGlvbiYgb3BlcmF0b3I9KGNvbnN0IElQcml2YXRlQ29uZGl0aW9uJiBjb25kaXRpb24p
OwogICAgZnJpZW5kIGNsYXNzIElTdGFydGVkVGhyZWFkOwogICAgSVByaXZDb25kSW1wbCogZklt
cGw7Cn07CgpjbGFzcyBJU2hhcmVkQ29uZGl0aW9uIDogcHVibGljIElDb25kaXRpb24KewpwdWJs
aWM6CiAgICBJU2hhcmVkQ29uZGl0aW9uKCk7CiAgICBJU2hhcmVkQ29uZGl0aW9uKGNvbnN0IGNo
YXIqIGtleU5hbWUpOwogICAgdmlydHVhbCB+SVNoYXJlZENvbmRpdGlvbigpOwoKICAgIHZpcnR1
YWwgYm9vbCB3YWl0KGlvYzo6bnVtZXJpY190IHRpbWVPdXQgPSAtMSk7CiAgICB2aXJ0dWFsIGJv
b2wgd2FpdChJUmVzb3VyY2VMb2NrJiBhbG9jaywgaW9jOjpudW1lcmljX3QgdGltZU91dCA9IC0x
KTsKCiAgICB2aXJ0dWFsIHZvaWQgc2lnbmFsKCk7CgogICAgdmlydHVhbCB2b2lkIGJyb2FkY2Fz
dCgpOwoKICAgIElTdHJpbmcga2V5TmFtZSgpIGNvbnN0OwoKICAgIHN0YXRpYyBib29sIGV4aXN0
cyhjb25zdCBjaGFyKiBrZXlOYW1lKTsKCnByaXZhdGU6CiAgICBJU2hhcmVkQ29uZGl0aW9uKGNv
bnN0IElTaGFyZWRDb25kaXRpb24mIGNvbmRpdGlvbik7CiAgICBJU2hhcmVkQ29uZGl0aW9uJiBv
cGVyYXRvcj0oY29uc3QgSVNoYXJlZENvbmRpdGlvbiYgY29uZGl0aW9uKTsKICAgIGZyaWVuZCBj
bGFzcyBJU3RhcnRlZFRocmVhZDsKCiAgICBJU2hhcmVkQ29uZEltcGwqIGZJbXBsOwp9OwoKIAoK
IAoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoK
CgogCgogCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdt
YSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgNiAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNl
L21xcXVldWUuY3BwIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaXJlc2xvY2suaHBwIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKCgpleHRlcm4gIkMiCnsKCn0KCgoKCgog
CgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVS
X1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVt
YW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoK
CgoKCgoKIAoKIAogCgogCmNsYXNzIElSZXNvdXJjZUxvY2s7CmNsYXNzIElQcml2YXRlUmVzb3Vy
Y2U7CmNsYXNzIElTaGFyZWRSZXNvdXJjZTsKY2xhc3MgSUNvbmRpdGlvbjsKY2xhc3MgSVByaXZD
b25kSW1wbDsKIAoKIAoKY2xhc3MgICBJUmVzb3VyY2UKewpwdWJsaWM6CiAgICAgCiAgICBJUmVz
b3VyY2UoKTsKICAgIHZpcnR1YWwgfklSZXNvdXJjZSgpOwoKICAgICAKICAgIHZpcnR1YWwgSVJl
c291cmNlJiBsb2NrKGlvYzo6bnVtZXJpY190IHRpbWVPdXQgPSAtMSkgPSAwOwogICAgdmlydHVh
bCBJUmVzb3VyY2UmIHVubG9jaygpID0gMDsKCnByb3RlY3RlZDoKICAgICAKICAgIGlvYzo6bnVt
ZXJpY190IHVubG9ja0FsbCgpOwogICAgdm9pZCByZWxvY2tBbGwoaW9jOjpudW1lcmljX3QgdGlt
ZXMpOwoKcHJpdmF0ZToKICAgICAKICAgIElSZXNvdXJjZShjb25zdCBJUmVzb3VyY2UmIHJlc291
cmNlKTsKICAgIElSZXNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IElSZXNvdXJjZSYgcmVzb3VyY2Up
OwoKICAgICAKICAgIElUaHJlYWRJZCBsb2NraW5nVGhyZWFkOwogICAgaW9jOjpudW1lcmljX3Qg
IHJlY3Vyc2lvbkNvdW50OwoKICAgIGZyaWVuZCBjbGFzcyBJQ29uZGl0aW9uOwogICAgZnJpZW5k
IGNsYXNzIElSZXNvdXJjZUxvY2s7CiAgICBmcmllbmQgY2xhc3MgSVByaXZhdGVSZXNvdXJjZTsK
ICAgIGZyaWVuZCBjbGFzcyBJU2hhcmVkUmVzb3VyY2U7CiAgICBmcmllbmQgY2xhc3MgSVByaXZD
b25kSW1wbDsKfTsKCgpjbGFzcyAgIElQcml2YXRlUmVzb3VyY2UgOiBwdWJsaWMgSVJlc291cmNl
CnsKICAgIHR5cGVkZWYgSVJlc291cmNlIEluaGVyaXRlZDsKcHVibGljOgogICAgIAogICAgSVBy
aXZhdGVSZXNvdXJjZSgpOwogICAgdmlydHVhbCB+SVByaXZhdGVSZXNvdXJjZSgpOwoKICAgICAK
ICAgIHZpcnR1YWwgSVByaXZhdGVSZXNvdXJjZSYgbG9jayhpb2M6Om51bWVyaWNfdCB0aW1lT3V0
ID0gLTEpOwogICAgdmlydHVhbCBJUHJpdmF0ZVJlc291cmNlJiB1bmxvY2soKTsKCgpwcm90ZWN0
ZWQ6CiAgICAgCiAgICBJUHJpdmF0ZVNlbWFwaG9yZUhhbmRsZSYgaGFuZGxlKCk7Cgpwcml2YXRl
OgogICAgIAogICAgSVByaXZhdGVSZXNvdXJjZShjb25zdCBJUHJpdmF0ZVJlc291cmNlJiBwcml2
YXRlUmVzb3VyY2UpOwogICAgSVByaXZhdGVSZXNvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IElQcml2
YXRlUmVzb3VyY2UmIHByaXZhdGVSZXNvdXJjZSk7CgogICAgIAoKICAgIHB0aHJlYWRfbXV0ZXhf
dCBmTXV0ZXg7CgoKICAgIElQcml2YXRlU2VtYXBob3JlSGFuZGxlIHJlc291cmNlSGFuZGxlQ2w7
CiAgICBmcmllbmQgY2xhc3MgSVJlc291cmNlTG9jazsKICAgIGZyaWVuZCBjbGFzcyBJUHJpdkNv
bmRJbXBsOwp9OwoKCmNsYXNzICAgSVNoYXJlZFJlc291cmNlIDogcHVibGljIElSZXNvdXJjZQp7
CiAgICB0eXBlZGVmIElSZXNvdXJjZSBJbmhlcml0ZWQ7CnB1YmxpYzoKICAgICAKICAgIElTaGFy
ZWRSZXNvdXJjZShjb25zdCBjaGFyKiBrZXlOYW1lKTsKICAgIHZpcnR1YWwgfklTaGFyZWRSZXNv
dXJjZSgpOwoKICAgICAKICAgIElTdHJpbmcga2V5TmFtZSgpIGNvbnN0OwoKCiAgICAgCiAgICB2
aXJ0dWFsIElTaGFyZWRSZXNvdXJjZSYgbG9jayhpb2M6Om51bWVyaWNfdCB0aW1lT3V0ID0gLTEp
OwogICAgdmlydHVhbCBJU2hhcmVkUmVzb3VyY2UmIHVubG9jaygpOwoKcHJvdGVjdGVkOgogICAg
IAogICAgSVNoYXJlZFNlbWFwaG9yZUhhbmRsZSYgaGFuZGxlKCk7Cgpwcml2YXRlOgogICAgIAog
ICAgSVNoYXJlZFJlc291cmNlKGNvbnN0IElTaGFyZWRSZXNvdXJjZSYgc2hhcmVkUmVzb3VyY2Up
OwogICAgSVNoYXJlZFJlc291cmNlICZvcGVyYXRvcj0oY29uc3QgSVNoYXJlZFJlc291cmNlJiBz
aGFyZWRSZXNvdXJjZSk7CgogICAgIAogICAgSVNoYXJlZFNlbWFwaG9yZUhhbmRsZSByZXNvdXJj
ZUhhbmRsZUNsOwogICAgSVN0cmluZyBrZXlOYW1lQ2w7CgogICAgZnJpZW5kIGNsYXNzIElSZXNv
dXJjZUxvY2s7Cn07CgpjbGFzcyAgIElSZXNvdXJjZUxvY2sKewpwdWJsaWM6CiAgICAgCiAgICBJ
UmVzb3VyY2VMb2NrKCBJUmVzb3VyY2UmIHJlc291cmNlLCBpb2M6Om51bWVyaWNfdCB0aW1lT3V0
ID0gLTEpOwogICAgdmlydHVhbCB+SVJlc291cmNlTG9jaygpOwoKcHJvdGVjdGVkOgogICAgIAog
ICAgdmlydHVhbCBJUmVzb3VyY2VMb2NrJiBzZXRMb2NrKGlvYzo6bnVtZXJpY190IHRpbWVPdXQg
PSAtMSk7CiAgICB2aXJ0dWFsIElSZXNvdXJjZUxvY2smIGNsZWFyTG9jaygpOwoKcHJpdmF0ZToK
ICAgICAKICAgIElSZXNvdXJjZUxvY2soY29uc3QgSVJlc291cmNlTG9jayYgcmVzb3VyY2VMb2Nr
KTsKICAgIElSZXNvdXJjZUxvY2smIG9wZXJhdG9yPShjb25zdCBJUmVzb3VyY2VMb2NrJiByZXNv
dXJjZUxvY2spOwoKICAgICAKICAgIElSZXNvdXJjZSogcHJlc0NsOwoKICAgIGZyaWVuZCBjbGFz
cyBJQ29uZGl0aW9uOwogICAgZnJpZW5kIGNsYXNzIElQcml2Q29uZEltcGw7Cn07CgogCgogCgoK
CgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAK
CiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lyZXNsb2NrLmlubCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKCgoKCgoKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pdHJhY2UuaHBwIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAoKIAoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEg
cmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVz
dG9yZSkKIAoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVN
RSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgogIAoKCgoKCgoK
CgoKICAgCiAgIAogICAKCgoKCgoKCgoKCiAgIAogICAKICAgCgoKCiAgIAogICAKICAgCgoKCgoK
CiMgMTIxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2l0cmFjZS5ocHAiCgogICAKICAgCiAgIAogICAKICAgCiAgIAoKIAoKIApjbGFzcyBJU3RyaW5n
OwpjbGFzcyBJVHJhY2VQcml2YXRlRGF0YTsKIAoKIAoKY2xhc3MgICBJVHJhY2UKewpwdWJsaWM6
CiAKICAgIElUcmFjZSgpOwogICAgSVRyYWNlKGNvbnN0IGNoYXIqIHRyYWNlTmFtZSwgaW9jOjpu
dW1lcmljX3QgbGluZU51bWJlciA9IDApOwogICAgSVRyYWNlKGNvbnN0IGlvYzo6dW5pY2hhcl90
KiB0cmFjZU5hbWUsIGlvYzo6bnVtZXJpY190IGxpbmVOdW1iZXIgPSAwKTsKCiAgICB+SVRyYWNl
KCk7CgogCiAgICBzdGF0aWMgdm9pZCB3cml0ZShjb25zdCBJU3RyaW5nJiB0ZXh0KTsKICAgIHN0
YXRpYyB2b2lkIHdyaXRlKGNvbnN0IGNoYXIqIHRleHQpOwogICAgc3RhdGljIHZvaWQgd3JpdGUo
Y29uc3QgaW9jOjp1bmljaGFyX3QgKnRleHQpOwoKICAgIGVudW0gRGVzdGluYXRpb24gewogICAg
ICAgIHF1ZXVlLAogICAgICAgIHN0YW5kYXJkRXJyb3IsCiAgICAgICAgc3RhbmRhcmRPdXRwdXQs
CiAgICAgICAgZmlsZQogICAgfTsKCiAgICBzdGF0aWMgSVRyYWNlOjpEZXN0aW5hdGlvbiB0cmFj
ZURlc3RpbmF0aW9uKCk7CgogICAgc3RhdGljIHZvaWQgd3JpdGVUb1F1ZXVlKCk7CiAgICBzdGF0
aWMgdm9pZCB3cml0ZVRvU3RhbmRhcmRFcnJvcigpOwogICAgc3RhdGljIHZvaWQgd3JpdGVUb1N0
YW5kYXJkT3V0cHV0KCk7CiAgICBzdGF0aWMgdm9pZCB3cml0ZVRvRmlsZSgpOwoKIAogICAgc3Rh
dGljIHZvaWQgZW5hYmxlVHJhY2UoKTsKICAgIHN0YXRpYyB2b2lkIGRpc2FibGVUcmFjZSgpOwog
ICAgc3RhdGljIHZvaWQgZW5hYmxlVW5pY29kZVRyYWNlKCk7CiAgICBzdGF0aWMgdm9pZCBkaXNh
YmxlVW5pY29kZVRyYWNlKCk7CiAgICBzdGF0aWMgYm9vbCBpc1RyYWNlRW5hYmxlZCgpOwoKIAog
ICAgc3RhdGljIHZvaWQgc2V0TWFya2VyKGNvbnN0IGNoYXIgKmJlZ2luX21hcmtlciA9ICIrIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmRfbWFya2VyID0gIi0iKTsK
ICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlclcoY29uc3QgaW9jOjp1bmljaGFyX3QgKmJlZ2luX21h
cmtlciA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBpb2M6OnVuaWNoYXJfdCAq
KUwiKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90ICpl
bmRfbWFya2VyID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGlvYzo6dW5pY2hh
cl90ICopTCItIik7CgogICAgc3RhdGljIHZvaWQgZW5hYmxlV3JpdGVMaW5lTnVtYmVyKCk7CiAg
ICBzdGF0aWMgdm9pZCBkaXNhYmxlV3JpdGVMaW5lTnVtYmVyKCk7CiAgICBzdGF0aWMgdm9pZCBl
bmFibGVXcml0ZVByZWZpeCgpOwogICAgc3RhdGljIHZvaWQgZGlzYWJsZVdyaXRlUHJlZml4KCk7
CgogICAgc3RhdGljIGJvb2wgaXNXcml0ZUxpbmVOdW1iZXJFbmFibGVkKCk7CiAgICBzdGF0aWMg
Ym9vbCBpc1dyaXRlUHJlZml4RW5hYmxlZCgpOwoKIAogICAgc3RhdGljIHZvaWQgd3JpdGVEZWJ1
Z0xvY2F0aW9uKGNvbnN0IGNoYXIqIHN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJRXhjZXB0aW9uTG9jYXRpb24mIGxvY2F0aW9uKTsKICAgIHN0YXRpYyB2b2lk
IHdyaXRlRGVidWdMb2NhdGlvbihjb25zdCBpb2M6OnVuaWNoYXJfdCogc3RyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRp
b24pOwoKcHJvdGVjdGVkOgogCgoKCiAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyB0aHJlYWRJZCgp
OwoKICAgIHN0YXRpYyBpb2M6OnVudW1lcmljX3QgcGlkKCk7CgogCiAgICBzdGF0aWMgdm9pZCB3
cml0ZVN0cmluZyhjb25zdCBjaGFyICp0ZXh0KTsKICAgIHN0YXRpYyB2b2lkIHdyaXRlU3RyaW5n
KGNvbnN0IGlvYzo6dW5pY2hhcl90ICp0ZXh0KTsKICAgIHN0YXRpYyB2b2lkIHdyaXRlRm9ybWF0
dGVkU3RyaW5nKGNvbnN0IElTdHJpbmcmIHN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hcmtlcik7CiAgICBzdGF0aWMgdm9pZCB3cml0ZUZv
cm1hdHRlZFN0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtYXJrZXIpOwogICAgc3RhdGljIHZvaWQgd3JpdGVG
b3JtYXR0ZWRTdHJpbmcoY29uc3QgaW9jOjp1bmljaGFyX3QqIHN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBtYXJrZXIpOwpw
cml2YXRlOgogICAgSVRyYWNlUHJpdmF0ZURhdGEgKmZEYXRhOwogICAgc3RhdGljIElUcmFjZTo6
RGVzdGluYXRpb24gZkRlc3RpbmF0aW9uOwoKICAgIHN0YXRpYyBpbnQgZ2V0SW5kZW50SWQoaW9j
Ojp1bnVtZXJpY190IHRpZCk7CiAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RQcmVmaXgoaW50IGlu
ZGVudElkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvYzo6dW51bWVyaWNfdCB0
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBwcmVmaXhfYnVmZmVyW10p
OwoKICAgIHN0YXRpYyBpb2M6OnVudW1lcmljX3QgcmVtYWluaW5nU3RhY2soKTsKICAgIHN0YXRp
YyB2b2lkIHdyaXRlU3RyaW5nVW5pQ2hhcihjb25zdCBVbmlDaGFyICp0ZXh0KTsKICAgIHN0YXRp
YyB2b2lkIHdyaXRlRm9ybWF0dGVkU3RyaW5nVW5pQ2hhcihjb25zdCBVbmlDaGFyICpzdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pQ2hh
ciogbWFya2VyKTsKICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlclVuaUNoYXIoY29uc3QgVW5pQ2hh
ciAqYmVnaW5fbWFya2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBV
bmlDaGFyICplbmRfbWFya2VyKTsKICAgIHN0YXRpYyB2b2lkIHdyaXRlVW5pQ2hhcihjb25zdCBV
bmlDaGFyKiBwc3pUZXh0KTsKICAgIHN0YXRpYyB2b2lkIHdyaXRlRGVidWdMb2NhdGlvblVuaUNo
YXIoY29uc3QgVW5pQ2hhciogc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJRXhjZXB0aW9uTG9jYXRpb24mIGxvY2F0aW9uKTsKICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhVbmlDaGFyKGNvbnN0IFVuaUNoYXIqIHBzelRyYWNlTmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlvYzo6bnVtZXJpY190IGxMaW5lTm8pOwogICAgZnJpZW5k
IGNsYXNzIElUcmFjZVByaXZhdGVEYXRhOwp9OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVtKHBv
cCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdHJhY2UuaW5sIiAxCiAKCgog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgogCgppbmxpbmUKdm9pZApJVHJhY2U6
OndyaXRlU3RyaW5nKGNvbnN0IGlvYzo6dW5pY2hhcl90ICp0ZXh0KQp7CiAgICB3cml0ZVN0cmlu
Z1VuaUNoYXIoKGNvbnN0IFVuaUNoYXIgKil0ZXh0KTsKfQoKaW5saW5lCnZvaWQKSVRyYWNlOjp3
cml0ZUZvcm1hdHRlZFN0cmluZyhjb25zdCBpb2M6OnVuaWNoYXJfdCAqdGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCAqbWFya2VyKQp7CiAgICB3
cml0ZUZvcm1hdHRlZFN0cmluZ1VuaUNoYXIoKGNvbnN0IFVuaUNoYXIgKil0ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBVbmlDaGFyICopbWFya2VyKTsKfQoKaW5s
aW5lCnZvaWQKSVRyYWNlOjpzZXRNYXJrZXJXKGNvbnN0IGlvYzo6dW5pY2hhcl90ICpiZWdpbl9t
YXJrZXIsCiAgICAgICAgICAgICAgICAgICBjb25zdCBpb2M6OnVuaWNoYXJfdCAqZW5kX21hcmtl
cikKewogICAgc2V0TWFya2VyVW5pQ2hhcigoY29uc3QgVW5pQ2hhciAqKWJlZ2luX21hcmtlciwK
ICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFVuaUNoYXIgKillbmRfbWFya2VyKTsKfQoKaW5s
aW5lCnZvaWQKSVRyYWNlOjp3cml0ZShjb25zdCBpb2M6OnVuaWNoYXJfdCogcHN6VGV4dCkKewog
ICAgd3JpdGVVbmlDaGFyKChjb25zdCBVbmlDaGFyICopcHN6VGV4dCk7Cn0KCmlubGluZQp2b2lk
CklUcmFjZTo6d3JpdGVEZWJ1Z0xvY2F0aW9uKGNvbnN0IGlvYzo6dW5pY2hhcl90KiBzdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElFeGNlcHRpb25Mb2NhdGlvbiYgbG9jYXRp
b24pCnsKICAgIHdyaXRlRGVidWdMb2NhdGlvblVuaUNoYXIoKGNvbnN0IFVuaUNoYXIgKilzdHIs
IGxvY2F0aW9uKTsKfQoKaW5saW5lCnZvaWQKSVRyYWNlOjp3cml0ZUZvcm1hdHRlZFN0cmluZyhj
b25zdCBJU3RyaW5nJiBzdHJTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcHN6TWFya2VyKQp7CiAgICB3cml0ZUZvcm1hdHRlZFN0cmluZygoY29uc3QgY2hh
ciAqKXN0clN0cmluZywgcHN6TWFya2VyKTsKfQoKaW5saW5lCklUcmFjZTo6SVRyYWNlKGNvbnN0
IGlvYzo6dW5pY2hhcl90ICpwc3pUcmFjZU5hbWUsIGlvYzo6bnVtZXJpY190IGxMaW5lTm8pCiAg
ICAgICAgOiBmRGF0YSgwKQp7CiAgICBpbml0aWFsaXplV2l0aFVuaUNoYXIoKGNvbnN0IFVuaUNo
YXIqKXBzelRyYWNlTmFtZSwgbExpbmVObyk7Cn0KCgojIDI1OCAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdHJhY2UuaHBwIiAyCgogCgogCiNwcmFn
bWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQog
CgogCgojIDM0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lyZXNsb2NrLmlubCIgMgoKCgoKCgppbmxpbmUgSVN0cmluZyBJU2hhcmVkUmVzb3VyY2Ug
Ojoga2V5TmFtZSgpIGNvbnN0CiAgeyByZXR1cm4ga2V5TmFtZUNsOyB9CgogCgoKIyAyMjcgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXJlc2xvY2su
aHBwIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFn
bWEgaW5mbyhyZXN0b3JlKQogCgogCgojIDcgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2Vydmlj
ZS9tcXF1ZXVlLmNwcCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lzZXEuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAog
CgogCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWFzZXEuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYXNxbnRsLmgi
IDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFvcmRlci5oIiAxCgoKCiAKIAog
CgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhY2xsY3QuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoK
CiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pYmNsbGN0LmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAK
IAoKIAoKCgoKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pbWNsbGN0LmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoj
IDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlh
Y2xsY3QuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWdsb2JhbC5oIiAx
CgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMSAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbnVtcG9z
LmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIElOdW1iZXI7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgSVBvc2l0aW9uOwoKIAoKIyA0MiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWdsb2Jh
bC5oIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWlrZXlvcHMuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiMg
MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWds
b2JhbC5oIiAxCiMgNTAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWlnbG9iYWwuaCIKCiMgMjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlrZXlvcHMuaCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpc3RyZWFtLmgiIDEKCgoKIAogCiAK
CgoKCgoKCgoKCgogCiAKIAogCiAKIAoKCgogCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFzdHIuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoK
CiAKIAogCiAKIAogCgoKCiAKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoK
CgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKY2xhc3MgSUFDb2xsZWN0
aW9uU3RyZWFtZXIKewpwdWJsaWM6CiAgSUFDb2xsZWN0aW9uU3RyZWFtZXIoKSB7fTsKICB2aXJ0
dWFsIHZvaWQgc3RyZWFtT3V0IChJRGF0YVN0cmVhbSYgc3RyZWFtLCB2b2lkKiBlbGVtZW50KSA9
IDA7CiAgdmlydHVhbCB2b2lkIHN0cmVhbUluICAoSURhdGFTdHJlYW0mIHN0cmVhbSwgdm9pZCog
ZWxlbWVudCkgPSAwOwoKICB2aXJ0dWFsIH5JQUNvbGxlY3Rpb25TdHJlYW1lciAoKSB7fTsKfTsK
CiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9w
KQoKCgoKIAoKIAogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNw
cmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKCiAKCiMgMjkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzdHJlYW0uaCIgMgoKIAoKIAojcHJhZ21hIGlu
Zm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwp
CiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0Nf
TkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKCgog
CgogCiAKCiAKCmNsYXNzIElTdHJlYW1lclB0cgp7CnB1YmxpYzoKCiAgSVN0cmVhbWVyUHRyICgp
CiAgOiBpdlB0clJjICgwKQogIHsKICB9OwoKICBJU3RyZWFtZXJQdHIgKElBQ29sbGVjdGlvblN0
cmVhbWVyKik7CgogIElTdHJlYW1lclB0ciAoSVN0cmVhbWVyUHRyIGNvbnN0JiBwdHIpCiAgeyBp
dlB0clJjID0gcHRyLml2UHRyUmM7CiAgICBpZiAoaXZQdHJSYyAhPSAwKSBpdlB0clJjLT5pdlJj
Kys7CiAgfTsKCiAgSVN0cmVhbWVyUHRyJgogIG9wZXJhdG9yPSAoSVN0cmVhbWVyUHRyIGNvbnN0
JiBwdHIpCiAgeyBpZiAodGhpcyAhPSAmcHRyKSB7CiAgICAgIGlmIChpdlB0clJjICYmIC0taXZQ
dHJSYy0+aXZSYyA9PSAwKSBkZWxldGUgaXZQdHJSYzsKICAgICAgaXZQdHJSYyA9IHB0ci5pdlB0
clJjOwogICAgICBpZiAoaXZQdHJSYyAhPSAwKSBpdlB0clJjLT5pdlJjKys7CiAgICB9CiAgICBy
ZXR1cm4gKnRoaXM7CiAgfTsKCiAgSUFDb2xsZWN0aW9uU3RyZWFtZXIqIG9wZXJhdG9yLT4gKCkg
Y29uc3Q7CgogIG9wZXJhdG9yIElBQ29sbGVjdGlvblN0cmVhbWVyKiAoKSBjb25zdDsKCiAgSUFD
b2xsZWN0aW9uU3RyZWFtZXImIG9wZXJhdG9yKiAoKSBjb25zdDsKCiAgSUFDb2xsZWN0aW9uU3Ry
ZWFtZXIqIFB0ck9mICgpIGNvbnN0CiAgeyByZXR1cm4gKGl2UHRyUmMgPyBpdlB0clJjLT5pdlB0
ciA6IDApOwogIH0KCiAgfklTdHJlYW1lclB0ciAgICAgKCkKICB7IGlmIChpdlB0clJjICE9IDAg
JiYgLS1pdlB0clJjLT5pdlJjID09IDApIGRlbGV0ZSBpdlB0clJjOwogIH07Cgpwcml2YXRlOgog
IHN0cnVjdCBQdHJSYwogIHsgSUFDb2xsZWN0aW9uU3RyZWFtZXIgKml2UHRyOwoKICAgIHVuc2ln
bmVkIGludCBpdlJjOwoKICAgICAgICAgICAgIFB0clJjIChJQUNvbGxlY3Rpb25TdHJlYW1lciAq
cHRyKQogICAgICAgICAgICAgOiBpdlB0ciAocHRyKSwgaXZSYyAoMSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH5QdHJSYyAoKQogICAgICAgICAgICAgeyBkZWxl
dGUgaXZQdHI7IH0KCiAgfSAqaXZQdHJSYzsKfTsKCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShw
b3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCgogCiNwcmFnbWEgaW5m
byhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKCiAK
CiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWlrZXlvcHMuaCIgMgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1
c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMjkgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlrZXlvcHMuaCIgMgoKCgoKCgog
CgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVS
X1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVt
YW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoK
CgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5Pgp2b2lkKiBJ
S2V5RnJvbU9wcyAoS2V5IGNvbnN0Jik7Cgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgpLZXkgY29uc3Qm
IElLZXlGb3JPcHMgKEtleSBjb25zdCopOwoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNs
YXNzIEVsZW1lbnRPcHM+CmNsYXNzICAgSU9wc1dpdGhLZXkgOiBwdWJsaWMgRWxlbWVudE9wcyB7
CnB1YmxpYzoKCiAgRWxlbWVudE9wcwogICAgICAgICAgIGtleU9wczsKCiAgICAgICAgICAgSU9w
c1dpdGhLZXkgICAgICAoKTsKCiAgICAgICAgICAgSU9wc1dpdGhLZXkgICAgICAodm9pZCopOwoK
ICBFbGVtZW50IGNvbnN0JgogICAgICAgICAgIEtleSAgICAgICAgICAgICAgKEVsZW1lbnQgY29u
c3QmKSBjb25zdDsKCnByb3RlY3RlZDoKCnByaXZhdGU6Cgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNw
cmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAojIDEg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlrZXlv
cHMuaW5sIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0
MiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCiMgMjUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWlrZXlvcHMuaW5sIiAyCgoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBLZXk+CmlubGlu
ZSB2b2lkKiBJS2V5RnJvbU9wcyAoS2V5IGNvbnN0JiBrKQp7IHJldHVybiAodm9pZCopJms7Cn0K
CiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgppbmxpbmUgS2V5IGNvbnN0JiBJS2V5Rm9yT3Bz
IChLZXkgY29uc3QqIGspCnsgcmV0dXJuICprOwp9CgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHM+CmlubGluZQpJT3BzV2l0aEtleSA8RWxlbWVudCwg
RWxlbWVudE9wcz46OgpJT3BzV2l0aEtleSAoKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUKSU9wc1dpdGhLZXkgPEVsZW1lbnQsIEVsZW1lbnRP
cHM+OjoKSU9wc1dpdGhLZXkgKHZvaWQqIG9wc0FyZykKOiBFbGVtZW50T3BzIChvcHNBcmcpLCBr
ZXlPcHMgKG9wc0FyZykKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVu
dE9wcz4KaW5saW5lIEVsZW1lbnQgY29uc3QmCklPcHNXaXRoS2V5IDxFbGVtZW50LCBFbGVtZW50
T3BzPjo6CktleSAoRWxlbWVudCBjb25zdCYgZSkgY29uc3QKeyByZXR1cm4gZTsKfQoKIAoKIyAx
MjkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlr
ZXlvcHMuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQoj
cHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyA0MyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWdsb2JhbC5oIiAyCgoKIyAxICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhcmd0eXBlLmgiIDEKCgoK
IAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAogCgogCiNwcmFnbWEgaW5mbyhub25lKQoj
cHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBp
bmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJ
TkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoKIAoKZW51bSBJQXJnVHlw
ZQp7CiAgICBrS2V5LAogICAga0VsZW1lbnQsCiAgICBrS2V5S2V5LAogICAga0VsZW1lbnRLZXks
CiAgICBrRWxlbWVudEVsZW1lbnQKfTsKCiAKCiAKIAoKIAogCgogCgoKCgoKCgojcHJhZ21hIGVu
dW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21h
IGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoK
IAoKIyA0NSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9paWdsb2JhbC5oIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWZ1bmMuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAog
CgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWlnbG9iYWwuaCIgMQojIDUwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2lpZ2xvYmFsLmgiCgojIDI1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lmdW5jLmgiIDIKCgp0eXBlZGVmIGJvb2wgKCpJQXBw
bEZ1bmMpICh2b2lkKiwgdm9pZCopOwoKdHlwZWRlZiBib29sICgqSVByZWRGdW5jKSAodm9pZCBj
b25zdCosIHZvaWQqKTsKCnR5cGVkZWYgbG9uZyAoKklDb21wRnVuYykgKHZvaWQgY29uc3QqLCB2
b2lkIGNvbnN0Kiwgdm9pZCopOwoKIAoKIyA0NiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWdsb2JhbC5oIiAyCgogCgogCgojIDI2ICIvaG9tZS9h
a25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpYWNsbGN0LmgiIDIK
CiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
ZXhjdHh0LmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoKIyAxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ltc2d0ZXh0Lmhw
cCIgMQojIDE4MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pbXNndGV4dC5ocHAiCgoKCgoKIyAyNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjdHh0LmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5v
bmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJh
Z21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVN
QU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKIAoKIAogCgog
CiAKCiAKCmNsYXNzICAgSUNvbGxlY3Rpb25FeGNlcHRpb25UZXh0CnsKcHVibGljOgoKICAgICAg
ICAgICBJQ29sbGVjdGlvbkV4Y2VwdGlvblRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQpOwoKICAgICAgICAgIH5JQ29sbGVjdGlvbkV4Y2Vw
dGlvblRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICBjaGFyIGNvbnN0Kgog
ICAgICAgICAgIHRleHQgICAgICAgICAgICAgKCkgY29uc3Q7CgogICAgICAgICAgIG9wZXJhdG9y
IGNoYXIgY29uc3QqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSBjb25zdDsKCnByb3Rl
Y3RlZDoKCnByaXZhdGU6CgogIElNZXNzYWdlVGV4dCogaXZNc2dUeHQ7Cgp9OwoKIAoKIAoKCgoK
CgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoK
IAoKIAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWV4Y3R4dC5pbmwiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKaW5saW5l
CklDb2xsZWN0aW9uRXhjZXB0aW9uVGV4dDo6Cn5JQ29sbGVjdGlvbkV4Y2VwdGlvblRleHQgKCAp
CnsgZGVsZXRlIGl2TXNnVHh0Owp9CgppbmxpbmUgY2hhciBjb25zdCoKSUNvbGxlY3Rpb25FeGNl
cHRpb25UZXh0OjoKdGV4dCAoICkgY29uc3QKeyBpZiAoaXZNc2dUeHQgIT0gMCkKICAgIHJldHVy
biBpdk1zZ1R4dC0+dGV4dCgpOwogIGVsc2UKICAgIHJldHVybiAidW5rbm93biBleGNlcHRpb24g
dGV4dCI7Cn0KCmlubGluZQpJQ29sbGVjdGlvbkV4Y2VwdGlvblRleHQ6OgpvcGVyYXRvciBjaGFy
IGNvbnN0KiAoKSBjb25zdAp7IHJldHVybiB0ZXh0ICgpOwp9CgogCgojIDExNiAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjdHh0LmgiIDIKCiAK
CiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJl
c3RvcmUpCiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaWlhY2xsY3QuaCIgMgoKCgoKCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpdmNsbGN0LmgiIDEKCgoKIAogCiAKCgoK
CgoKCgoKCgogCiAKIAogCiAKIAoKIAoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzdGRudGZ5LmhwcCIgMQoKCgogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lub3RpZnkuaHBwIiAxCgoKCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKIyAxICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lub3RhZHIuaHBwIiAxCgoK
CiAKIAogCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKCiAKCiAKI3ByYWdtYSBpbmZvKG5v
bmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJh
Z21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVN
QU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKY2xh
c3MgSU5vdGlmaWVyOwogCgogCgpjbGFzcyBJTm90aWZpZXJBZGRyZXNzIHsKcHVibGljOgogICAg
ICAgIElOb3RpZmllckFkZHJlc3MoKTsKICAgICAgICBJTm90aWZpZXJBZGRyZXNzKGNvbnN0IElO
b3RpZmllciogbm90aWZpZXIpOwogICAgICAgIHZpcnR1YWwgfklOb3RpZmllckFkZHJlc3MoKTsK
CiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElOb3RpZmllckFkZHJlc3MmIHNyYyApIGNv
bnN0OwogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJTm90aWZpZXJBZGRyZXNzJiBzcmMg
KSBjb25zdDsKICAgICAgICBJTm90aWZpZXJBZGRyZXNzICYgb3BlcmF0b3I9KGNvbnN0IElOb3Rp
ZmllckFkZHJlc3MmIHNyYyApOwoKIApwdWJsaWM6CiAgICAgICAgSU5vdGlmaWVyJiBub3RpZmll
cigpOwoKcHJpdmF0ZToKCiAgICAgICAgY29uc3QgSU5vdGlmaWVyKiBmTm90aWZpZXI7Cn07Cgog
CgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkK
CgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJh
Z21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbm90aWZ5LmhwcCIgMgoKIyAxICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2luZ3RocmQuaHBwIiAxCgoKCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgoK
CgoKCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2ljbnRwdHIuaHBwIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCgog
CgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hF
QURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBu
YW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0o
NCkKCgoKCgoKCiAKCiAKIAoKIApjbGFzcyBJRGF0YVN0cmVhbTsKY2xhc3MgSVZvaWRNYXN0ZXJQ
b2ludGVyOwogCgogCgogCgoKCgoKCgoKCgoKCgoKCnRlbXBsYXRlPGNsYXNzIEFUeXBlPiBjbGFz
cyBJQ291bnRlZFBvaW50ZXJUbyB7CiAgcHVibGljOgogCgogICAgIAoKCgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDb3VudGVkUG9pbnRlclRvICAgICAgICgpOyAg
ICAgIAoKICAgICAKCgoKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElDb3VudGVkUG9pbnRlclRvICAgICAgIChBVHlwZSogYWRvcHQpOwoKICAgICAKCgoKCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUNvdW50ZWRQb2ludGVyVG8g
ICAgICAgKGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBlPiYgc2hhcmUpOwoKICAgICAKCgoK
CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5JQ291bnRlZFBvaW50
ZXJUbyAgICAgICgpOwoKIAogICAgIAoKCgoKCgoKCgoKCgogICAgSUNvdW50ZWRQb2ludGVyVG88
QVR5cGU+JiBvcGVyYXRvciA9IChBVHlwZSogYWRvcHQpOwoKICAgICAKCgoKCgoKCgoKCiAgICBJ
Q291bnRlZFBvaW50ZXJUbzxBVHlwZT4mIG9wZXJhdG9yID0gKGNvbnN0IElDb3VudGVkUG9pbnRl
clRvPEFUeXBlPiYgc2hhcmUpOwoKIAogICAgIAoKCgoKCgoKCiAgICBBVHlwZSogICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0b3IgLT4gICAgICAgICAgICAgKCkgICAgICBjb25zdDsKCiAgICAg
CgoKCgoKICAgIEFUeXBlJiAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciAqICAgICAgICAg
ICAgICAoKSAgICAgIGNvbnN0OwoKIAoKICAgICAKCgoKCgoKCgoKCiAgICBBVHlwZSogICAgICAg
ICAgICAgICAgICAgICAgZ2V0QWxpYXMgICAgICAgICAgICAgICAgKCkgICAgICBjb25zdDsKCiAg
ICAgCgoKCgoKICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCAgICAgICAgICAg
ICAgICAgICAoKSAgICAgIGNvbnN0OwoKICAgICAKCgoKCgoKICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICB2YWxpZGF0ZSAgICAgICAgICAgICAgICAoKSAgICAgIGNvbnN0OwoKICAgICAK
CgoKCgoKCgoKCiAgICAgICAgaW9jOjp1bnVtZXJpY190ICAgY291bnQgKCkgY29uc3Q7CgogCgog
ICAgIAogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09ICAgICAgICAg
ICAgIChjb25zdCBBVHlwZSAqcikgY29uc3Q7CgogICAgIAoKCiAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0b3IgPT0gICAgICAgICAgICAgKGNvbnN0IElDb3VudGVkUG9pbnRl
clRvPEFUeXBlPiYgcikgY29uc3Q7CgogICAgIAogICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdG9yICE9ICAgICAgICAgICAgIChjb25zdCBBVHlwZSAqcikgY29uc3Q7CgogICAg
IAoKCiAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgIT0gICAgICAgICAg
ICAgKGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBlPiYgcikgY29uc3Q7CgogCgoKCgogICAg
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbihBVHlwZSogciwg
SVZvaWRNYXN0ZXJQb2ludGVyICppbmRpcmVjdCwgSU1SZWZDb3VudGVkICopOwogICAgICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbihBVHlwZSogciwgSVZvaWRN
YXN0ZXJQb2ludGVyICppbmRpcmVjdCwgdm9pZCAqKTsKICAgICAgICBJTVJlZkNvdW50ZWQqICAg
ICAgICAgICAgICAgICAgIGdldENvdW50ZWQoKSBjb25zdDsKICAgICAgICBzdGF0aWMgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNXcmFwcGVkICgpOwoKCnByaXZhdGU6CiAKICAg
ICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkUmVmKCk7CiAg
ICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlZigp
OwoKICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcEl0
IChJTVJlZkNvdW50ZWQqIGl0KTsKICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3JhcEl0ICh2b2lkKiBpdCk7CiAgICAgICAgc3RhdGljIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzV3JhcHBlZCAoSU1SZWZDb3VudGVkKik7CiAgICAgICAg
c3RhdGljIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzV3JhcHBlZCAodm9pZCop
OwogICAgICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgICAgICAgICAgZG9EZWxldGUodm9pZCog
aXQpOwoKIAogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIEFUeXBlICogICAgICAgICAg
ICAgICAgICAgICAgICAgZkRpcmVjdDsKICAgICAgICAgICAgICAgIElWb2lkTWFzdGVyUG9pbnRl
ciogICAgIGZJbmRpcmVjdDsKICAgICAgICB9Owp9OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVt
KHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pY250cHRyLmlubCIgMQoK
CgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCiAKIAogCgogCgoKIyAxICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGNiYXNlLmhwcCIgMQoj
IDEwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ll
eGNiYXNlLmhwcCIKCgojIDcyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiCgoKCgoKCiMgMzEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWNudHB0ci5pbmwiIDIKCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JU
X0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5n
KF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgog
CgogCiAKCiAKIAoKIAoKIAogCiAKIAogCiAKY2xhc3MgSVZvaWRNYXN0ZXJQb2ludGVyIDogcHVi
bGljIElNUmVmQ291bnRlZCwgcHVibGljIHZpcnR1YWwgSU1TdHJlYW1hYmxlICB7CiAgICAgICAg
cHVibGljOiB2aXJ0dWFsIGNvbnN0IElUeXBlUmVwcmVzZW50YXRpb24mICAgICAgdHlwZVJlcHJl
c2VudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmdTdHJlYW1hYmxlSGVscGVyLnR5cGVSZXByZXNl
bnRhdGlvbigpOyB9OyBzdGF0aWMgY29uc3QgSVR5cGVSZXByZXNlbnRhdGlvbiYgICAgICAgc3Rh
dGljVHlwZVJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gZmdTdHJlYW1hYmxlSGVscGVyLnR5cGVS
ZXByZXNlbnRhdGlvbigpOyB9OyBwcml2YXRlOiBzdGF0aWMgIElTdHJlYW1hYmxlSGVscGVyRm9y
PCBJVm9pZE1hc3RlclBvaW50ZXIgPiBmZ1N0cmVhbWFibGVIZWxwZXIgOwpwdWJsaWM6CiAgICAg
ICAgdHlwZWRlZiB2b2lkICgqRGVsZXRlcikgKHZvaWQqIHRoZU9iamVjdCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElWb2lkTWFzdGVyUG9pbnRlcih2b2lkKiBhZG9wdE9iamVj
dCwgRGVsZXRlciBmdW5jdGlvbik7CiAgICAgICAgdmlydHVhbCAgICAgICAgIH5JVm9pZE1hc3Rl
clBvaW50ZXIgICAgICgpOwoKICAgICAgICB2b2lkKiAgICAgICAgICAgZ2V0T2JqZWN0ICgpIGNv
bnN0OwogICAgICAgIHZvaWQgICAgICAgICAgICBhZG9wdE9iamVjdCh2b2lkICpvYmosIERlbGV0
ZXIgZnVuY3Rpb24pOwoKICAgICAgICBzdGF0aWMgdm9pZCB0aHJvd0ludmFsaWQoKTsKCiAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElWb2lkTWFzdGVyUG9pbnRlcigp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElWb2lkTWFzdGVyUG9pbnRlcihjb25z
dCBJVm9pZE1hc3RlclBvaW50ZXImKTsgICAKICAgICAgICB2b2lkICAgICAgICAgICAgd3JpdGVU
b1N0cmVhbShJRGF0YVN0cmVhbSYpIGNvbnN0OwogICAgICAgIHZvaWQgICAgICAgICAgICByZWFk
RnJvbVN0cmVhbShJRGF0YVN0cmVhbSYpOwoKcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgdm9p
ZCAgICAgICAgICAgIG9wZXJhdG9yPShjb25zdCBJVm9pZE1hc3RlclBvaW50ZXImKTsKCiAgICAg
ICAgdm9pZCogICAgICAgICAgIGZPYmplY3Q7CiAgICAgICAgRGVsZXRlciAgICAgICAgIGZEZWxl
dGVyOwp9OwoKIAoKIAoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5n
bGluZyhwb3ApCgoKCgogCgogCmlubGluZSB2b2lkICoKSVZvaWRNYXN0ZXJQb2ludGVyOjpnZXRP
YmplY3QgKCkgY29uc3QKewogICAgICAgIHJldHVybiBmT2JqZWN0Owp9CgppbmxpbmUgdm9pZApJ
Vm9pZE1hc3RlclBvaW50ZXI6OmFkb3B0T2JqZWN0ICh2b2lkICpvYmosIERlbGV0ZXIgZnVuY3Rp
b24pCnsKICAgICAgICBmT2JqZWN0ID0gb2JqOwogICAgICAgIGZEZWxldGVyID0gZnVuY3Rpb247
Cn0KCgogCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4KaW5saW5lCnZvaWQgSUNvdW50ZWRQ
b2ludGVyVG88QVR5cGU+Ojp3cmFwSXQoSU1SZWZDb3VudGVkKikKewogICAgICAgICAKfQoKdGVt
cGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUKdm9pZCBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46
OndyYXBJdCh2b2lkKiBpdCkKewogICAgICAgIGZJbmRpcmVjdCA9IGl0ID8gbmV3IElWb2lkTWFz
dGVyUG9pbnRlciAoaXQsICZkb0RlbGV0ZSkgOiAwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+
CmlubGluZQp2b2lkIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6ZG9EZWxldGUodm9pZCogaXQp
CnsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGRlbGV0ZSAoQVR5cGUqKSBpdDsKfQoKdGVt
cGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUKYm9vbCBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46
OmlzV3JhcHBlZChJTVJlZkNvdW50ZWQqKQp7CiAgICAgICAgcmV0dXJuIGZhbHNlOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGluZQpib29sIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6
aXNXcmFwcGVkKHZvaWQqKQp7CiAgICAgICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBBVHlwZT4KaW5saW5lCmJvb2wgSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+Ojppc1dyYXBwZWQo
KQp7CiAgICAgICAgcmV0dXJuIGlzV3JhcHBlZCgoQVR5cGUqKTApOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgQVR5cGU+CmlubGluZQpJTVJlZkNvdW50ZWQqCklDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6
Z2V0Q291bnRlZCgpIGNvbnN0CnsKICAgICAgICByZXR1cm4gaXNXcmFwcGVkKCkgPyBmSW5kaXJl
Y3QgOiAoSU1SZWZDb3VudGVkKilmRGlyZWN0Owp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgQVR5
cGU+CmlubGluZQp2b2lkCklDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6YWRkUmVmKCkKewogICAg
ICAgIGlmICh2YWxpZCgpKQogICAgICAgICAgICAgICAgZ2V0Q291bnRlZCgpLT5hZGRSZWYoKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUKdm9pZApJQ291bnRlZFBvaW50ZXJUbzxB
VHlwZT46OnJlbW92ZVJlZigpCnsKICAgICAgICBpZiAodmFsaWQoKSkKICAgICAgICAgICAgICAg
IGdldENvdW50ZWQoKS0+cmVtb3ZlUmVmKCk7CiAgICAgICAgZkRpcmVjdCA9IDA7Cn0KCiAKIAog
CnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4gaW5saW5lCklDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6
SUNvdW50ZWRQb2ludGVyVG8oQVR5cGUqIGFkb3B0KQogICAgICAgIDogZkRpcmVjdChhZG9wdCkK
ewogICAgICAgICAKICAgICAgICAgCiAgICAgICAgd3JhcEl0KGFkb3B0KTsKICAgICAgICBhZGRS
ZWYoKTsKfQoKIAogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+IGlubGluZQpJQ291bnRlZFBv
aW50ZXJUbzxBVHlwZT46OklDb3VudGVkUG9pbnRlclRvKCkKOiBmRGlyZWN0KDApCnsKfQoKdGVt
cGxhdGUgPGNsYXNzIEFUeXBlPiBpbmxpbmUKSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+OjpJQ291
bnRlZFBvaW50ZXJUbyhjb25zdCBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT4mIHNoYXJlKQo6IGZE
aXJlY3Qoc2hhcmUuZkRpcmVjdCkKewogICAgICAgIGFkZFJlZigpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgQVR5cGU+IGlubGluZQpJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46On5JQ291bnRlZFBvaW50
ZXJUbygpCnsKICAgICAgICByZW1vdmVSZWYoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBlPiBp
bmxpbmUKSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+JiBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46
Om9wZXJhdG9yPShBVHlwZSogYWRvcHQpCnsKICAgIGlmKGdldEFsaWFzKCkgIT0gYWRvcHQpIHsK
ICAgICAgICAgICAgICAgIHJlbW92ZVJlZigpOwogICAgICAgICAgICAgICAgZkRpcmVjdCA9IGFk
b3B0OwogICAgICAgICAgICAgICAgd3JhcEl0KGFkb3B0KTsKICAgICAgICAgICAgICAgIGFkZFJl
ZigpOwogICAgICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIEFUeXBl
PiBpbmxpbmUKSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+JiBJQ291bnRlZFBvaW50ZXJUbzxBVHlw
ZT46Om9wZXJhdG9yPShjb25zdCBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT4mIHNoYXJlKQp7CiAg
ICBpZihmRGlyZWN0ICE9IHNoYXJlLmZEaXJlY3QpIHsKICAgICAgICAgICAgICAgIHJlbW92ZVJl
ZigpOwogICAgICAgICAgICAgICAgZkRpcmVjdCA9IHNoYXJlLmZEaXJlY3Q7CiAgICAgICAgICAg
ICAgICBhZGRSZWYoKTsKICAgICAgICB9CiAgICByZXR1cm4gKnRoaXM7Cn0KCgogCiAKIAp0ZW1w
bGF0ZSA8Y2xhc3MgQVR5cGU+IGlubGluZQpBVHlwZSogIElDb3VudGVkUG9pbnRlclRvPEFUeXBl
Pjo6Z2V0QWxpYXMoKSBjb25zdAp7CiAgICAgICAgcmV0dXJuIGlzV3JhcHBlZCgpICAgICAgPyAo
ZkluZGlyZWN0ID8gKEFUeXBlKilmSW5kaXJlY3QtPmdldE9iamVjdCgpIDogMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmRGlyZWN0Owp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgQVR5cGU+IGlubGluZQpib29sIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6
dmFsaWQoKSBjb25zdAp7CiAgICByZXR1cm4gKGZEaXJlY3QgIT0gMCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBBVHlwZT4gaW5saW5lCnZvaWQgSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+Ojp2YWxpZGF0
ZSgpIGNvbnN0CnsKICAgIGlmICghdmFsaWQoKSkKICAgICAgICAgICAgICAgIElWb2lkTWFzdGVy
UG9pbnRlcjo6dGhyb3dJbnZhbGlkKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBBVHlwZT4gaW5saW5l
CkFUeXBlKiBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46Om9wZXJhdG9yLT4oKSBjb25zdAp7CiAg
ICB2YWxpZGF0ZSgpOwogICAgcmV0dXJuIGdldEFsaWFzKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBB
VHlwZT4gaW5saW5lCkFUeXBlJiBJQ291bnRlZFBvaW50ZXJUbzxBVHlwZT46Om9wZXJhdG9yKigp
IGNvbnN0CnsKICAgIHZhbGlkYXRlKCk7CiAgICByZXR1cm4gKihnZXRBbGlhcygpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIEFUeXBlPiBpbmxpbmUKaW9jOjp1bnVtZXJpY190IElDb3VudGVkUG9pbnRl
clRvPEFUeXBlPjo6Y291bnQgKCkgY29uc3QKewogICAgICAgIHJldHVybiB2YWxpZCgpID8gZ2V0
Q291bnRlZCgpLT5jb3VudCgpIDogMDsKfQoKIAogCiAKdGVtcGxhdGU8Y2xhc3MgQVR5cGU+IGlu
bGluZQpib29sIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6b3BlcmF0b3IgPT0gKGNvbnN0IEFU
eXBlICpyKSBjb25zdAp7CiAgICAgICAgcmV0dXJuIGdldEFsaWFzKCkgPT0gcjsKfQoKdGVtcGxh
dGU8Y2xhc3MgQVR5cGU+IGlubGluZQpib29sIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6b3Bl
cmF0b3IgIT0gKGNvbnN0IEFUeXBlICpyKSBjb25zdAp7CiAgICAgICAgcmV0dXJuIGdldEFsaWFz
KCkgIT0gcjsKfQoKdGVtcGxhdGU8Y2xhc3MgQVR5cGU+IGlubGluZQpib29sIElDb3VudGVkUG9p
bnRlclRvPEFUeXBlPjo6b3BlcmF0b3IgPT0gKGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBl
PiYgcikgY29uc3QKewogICAgICAgIHJldHVybiBnZXRBbGlhcygpID09IHIuZ2V0QWxpYXMoKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgQVR5cGU+IGlubGluZQpib29sIElDb3VudGVkUG9pbnRlclRvPEFU
eXBlPjo6b3BlcmF0b3IgIT0gKGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBlPiYgcikgY29u
c3QKewogICAgICAgIHJldHVybiBnZXRBbGlhcygpICE9IHIuZ2V0QWxpYXMoKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgQVR5cGU+IGlubGluZQpib29sIG9wZXJhdG9yID09IChjb25zdCBBVHlwZSogbCwg
Y29uc3QgSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+JnIpCnsKICAgICAgICByZXR1cm4gbCA9PSBy
LmdldEFsaWFzKCk7Cn0KCnRlbXBsYXRlPGNsYXNzIEFUeXBlPiBpbmxpbmUKYm9vbCBvcGVyYXRv
ciAhPSAoY29uc3QgQVR5cGUqIGwsIGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBlPiZyKQp7
CiAgICAgICAgcmV0dXJuIGwgIT0gci5nZXRBbGlhcygpOwp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xh
c3MgQVR5cGU+CmlubGluZQp2b2lkIElDb3VudGVkUG9pbnRlclRvPEFUeXBlPjo6aW4oQVR5cGUq
IHJhdywgSVZvaWRNYXN0ZXJQb2ludGVyKiBpbmRpcmVjdCwgdm9pZCopCnsKICAgICAgICByZW1v
dmVSZWYoKTsKCiAgICAgICAgIAogICAgICAgIGZJbmRpcmVjdCA9IGluZGlyZWN0OwogICAgICAg
IGlmIChyYXcpCiAgICAgICAgICAgICAgICBmSW5kaXJlY3QtPmFkb3B0T2JqZWN0KHJhdywgZG9E
ZWxldGUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGluZQp2b2lkIElDb3VudGVkUG9p
bnRlclRvPEFUeXBlPjo6aW4oQVR5cGUqIHJhdywgSVZvaWRNYXN0ZXJQb2ludGVyKiwgSU1SZWZD
b3VudGVkKikKewoKICAgICAgICAgCiAgICAgICAgb3BlcmF0b3I9KCByYXcgKTsKCiAgICAgICAg
Z2V0Q291bnRlZCgpLT5yZW1vdmVSZWYoKTsKfQoKIAogCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBB
VHlwZT4KaW5saW5lCkFUeXBlKgpjb3B5UG9pbnRlcihjb25zdCBJQ291bnRlZFBvaW50ZXJUbzxB
VHlwZT4mIG9iamVjdCkKewogICAgICAgIHJldHVybiA6OmNvcHkoICoob2JqZWN0LmdldEFsaWFz
KCkpICkgOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+CmlubGluZQp2b2lkCm9wZXJhdG9yPj49
KGNvbnN0IElDb3VudGVkUG9pbnRlclRvPEFUeXBlPiYgb2JqZWN0LCBJRGF0YVN0cmVhbSYgdG9T
dHJlYW0pCnsKICAgICAgICA6OndyaXRlQ291bnRlZE9iamVjdCggb2JqZWN0LmdldEFsaWFzKCks
IG9iamVjdC5nZXRDb3VudGVkKCksIG9iamVjdC5pc1dyYXBwZWQoKSwgdG9TdHJlYW0gKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIEFUeXBlPgppbmxpbmUKdm9pZApvcGVyYXRvcjw8PShJQ291bnRlZFBv
aW50ZXJUbzxBVHlwZT4mIHJlc3VsdCwgSURhdGFTdHJlYW0mIGZyb21TdHJlYW0pCnsKICAgICAg
ICBBVHlwZSogcmF3OwogICAgICAgIElWb2lkTWFzdGVyUG9pbnRlciogaW5kaXJlY3Q7CiAgICAg
ICAgOjpyZWFkQ291bnRlZE9iamVjdCggcmF3LCBpbmRpcmVjdCwgcmVzdWx0LmlzV3JhcHBlZCgp
LCBmcm9tU3RyZWFtICk7CiAgICAgICAgcmVzdWx0LmluKCByYXcsIGluZGlyZWN0LCAoQVR5cGUq
KTAgKTsKfQoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJh
Z21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyODUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWNudHB0ci5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZv
KG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCnRlbXBs
YXRlIDxjbGFzcyBBVHlwZT4gQVR5cGUqICAgY29weVBvaW50ZXIoY29uc3QgSUNvdW50ZWRQb2lu
dGVyVG88QVR5cGU+Jik7Cgp0ZW1wbGF0ZSA8Y2xhc3MgQVR5cGU+IHZvaWQgICAgICAgICAgICAg
b3BlcmF0b3I+Pj0oY29uc3QgSUNvdW50ZWRQb2ludGVyVG88QVR5cGU+JiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEYXRhU3RyZWFtJiB0b1N0cmVhbSk7CnRlbXBsYXRlIDxjbGFz
cyBBVHlwZT4gdm9pZCAgICAgICAgICAgICBvcGVyYXRvcjw8PShJQ291bnRlZFBvaW50ZXJUbzxB
VHlwZT4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURhdGFTdHJlYW0mIGZyb21T
dHJlYW0pOwoKIAoKIyA0MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pbmd0aHJkLmhwcCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdt
YSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1ND
SEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIApjbGFzcyBJQ3VycmVu
dE5vbkdVSVRocmVhZDsKY2xhc3MgSUN1cnJlbnROb25HVUlUaHJlYWREYXRhOwpjbGFzcyBJU3Rh
cnRlZFRocmVhZDsKY2xhc3MgSVRocmVhZEN1cnNvckRhdGE7CiAKCiAKCmNsYXNzICAgSVRocmVh
ZEZuIDogcHVibGljIElNUmVmQ291bnRlZCB7CnB1YmxpYzoKICAgIElUaHJlYWRGbigpIHt9CiAg
ICB2aXJ0dWFsIH5JVGhyZWFkRm4oKSB7fQogICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKcHJp
dmF0ZToKICAgIElUaHJlYWRGbihjb25zdCBJVGhyZWFkRm4mIGZ1bmN0aW9uKSB7fQogICAgSVRo
cmVhZEZuICZvcGVyYXRvcj0oY29uc3QgSVRocmVhZEZuJiBmdW5jdGlvbikgeyByZXR1cm4gKnRo
aXM7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyAgIElUaHJlYWRNZW1iZXJGbiA6IHB1
YmxpYyBJVGhyZWFkRm4KewpwdWJsaWM6CiAgICBJVGhyZWFkTWVtYmVyRm4oVCAmb2JqLCB2b2lk
IChUIDo6ICptZW0pKCkpCiAgICAgICAgICAgIDogbWVtYmVyKG1lbSksIG9iamVjdChvYmopIHt9
CiAgICB2aXJ0dWFsIH5JVGhyZWFkTWVtYmVyRm4oKSB7fQogICAgdmlydHVhbCB2b2lkIHJ1bigp
IHsgKG9iamVjdC4qbWVtYmVyKSgpOyB9Cgpwcml2YXRlOgogICAgSVRocmVhZE1lbWJlckZuKGNv
bnN0IElUaHJlYWRNZW1iZXJGbjxUPiYgdGhyZWFkRnVuY3Rpb24pCiAgICAgICAgICAgIDogbWVt
YmVyKHRocmVhZEZ1bmN0aW9uLm1lbWJlciksIG9iamVjdCh0aHJlYWRGdW5jdGlvbi5vYmplY3Qp
IHt9CiAgICBJVGhyZWFkTWVtYmVyRm48VD4gJm9wZXJhdG9yPShjb25zdCBJVGhyZWFkTWVtYmVy
Rm48VD4mIHRocmVhZEZ1bmN0aW9uKQogICAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgogICAgVCAm
b2JqZWN0OwogICAgdm9pZCAoVDo6Km1lbWJlcikoKTsKfTsKCmNsYXNzICAgSU5vbkdVSVRocmVh
ZAp7CnB1YmxpYzoKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICBlbnVtIEVUaHJlYWRQcmlv
cml0eQogICAgewogICAgICAgIGlkbGUgICAgICAgICAgICAgID0gMTAwMCwKICAgICAgICBiZWxv
d05vcm1hbCAgICAgICA9IDEwMDEsCiAgICAgICAgbm9ybWFsICAgICAgICAgICAgPSAxMDAyLAog
ICAgICAgIGFib3ZlTm9ybWFsICAgICAgID0gMTAwMywKICAgICAgICB0aW1lQ3JpdGljYWwgICAg
ICA9IDEwMDQsCgogICAgICAgIG1pblByaW9yaXR5ICAgICAgID0gMTAwMCwKICAgICAgICBtYXhQ
cmlvcml0eSAgICAgICA9IDEwMDQKICAgIH07CgogICAgdHlwZWRlZiB2b2lkICggKiBPcHRsaW5r
Rm5QdHIpICh2b2lkKik7CiAgICB0eXBlZGVmIHZvaWQgKCAqICBTeXN0ZW1GblB0cikgKGlvYzo6
dW51bWVyaWNfdCk7CgogICAgIAogICAgIAogICAgIAogICAgSU5vbkdVSVRocmVhZCgpOwogICAg
SU5vbkdVSVRocmVhZChjb25zdCBJTm9uR1VJVGhyZWFkJiB0aHJlYWQpOwogICAgSU5vbkdVSVRo
cmVhZChjb25zdCBJVGhyZWFkSWQmIHRocmVhZElELAogICAgICAgICAgICAgICAgICBjb25zdCBJ
VGhyZWFkSGFuZGxlJiB0aHJlYWRIYW5kbGUgPSBJVGhyZWFkSGFuZGxlKCkpOwogICAgSU5vbkdV
SVRocmVhZChjb25zdCBJQ291bnRlZFBvaW50ZXJUbzxJVGhyZWFkRm4+JiBmdW5jdGlvbik7CiAg
ICBJTm9uR1VJVGhyZWFkKE9wdGxpbmtGblB0ciBmdW5jdGlvbiwgdm9pZCAqZnVuY3Rpb25Bcmd1
bWVudCk7CiAgICBJTm9uR1VJVGhyZWFkKFN5c3RlbUZuUHRyIGZ1bmN0aW9uLCBpb2M6OnVudW1l
cmljX3QgZnVuY3Rpb25Bcmd1bWVudCk7CiAgICB2aXJ0dWFsIH5JTm9uR1VJVGhyZWFkKCk7Cgog
ICAgIAogICAgIAogICAgIAogICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IElDb3VudGVkUG9p
bnRlclRvPElUaHJlYWRGbj4mIGZ1bmN0aW9uKTsKICAgIHZpcnR1YWwgdm9pZCBzdGFydChPcHRs
aW5rRm5QdHIgZnVuY3Rpb24sIHZvaWQgKmZ1bmN0aW9uQXJndW1lbnQpOwogICAgdmlydHVhbCB2
b2lkIHN0YXJ0KFN5c3RlbUZuUHRyIGZ1bmN0aW9uLCBpb2M6OnVudW1lcmljX3QgIGZ1bmN0aW9u
QXJndW1lbnQpOwogICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kKCk7CiAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CgogICAgIAogICAgIAogICAgIAogICAg
dmlydHVhbCBpb2M6OnVudW1lcmljX3Qgc3RhY2tTaXplKCkgY29uc3Q7CiAgICB2aXJ0dWFsIElO
b25HVUlUaHJlYWQmIHNldFN0YWNrU2l6ZShpb2M6OnVudW1lcmljX3Qgc2l6ZSk7CiAgICBzdGF0
aWMgaW9jOjp1bnVtZXJpY190IGRlZmF1bHRTdGFja1NpemUoKTsKICAgIHN0YXRpYyB2b2lkIHNl
dERlZmF1bHRTdGFja1NpemUoaW9jOjp1bnVtZXJpY190IHNpemUpOwoKICAgICAKICAgICAKICAg
ICAKICAgIHZpcnR1YWwgSU5vbkdVSVRocmVhZDo6RVRocmVhZFByaW9yaXR5IHRocmVhZFByaW9y
aXR5KCkgY29uc3Q7CiAgICB2aXJ0dWFsIElOb25HVUlUaHJlYWQmIHNldFRocmVhZFByaW9yaXR5
KAogICAgY29uc3QgSU5vbkdVSVRocmVhZDo6RVRocmVhZFByaW9yaXR5IG5ld1ByaW9yaXR5KTsK
CiAgICAgCiAgICAgCiAgICAgCiAgICBzdGF0aWMgSUN1cnJlbnROb25HVUlUaHJlYWQmIGN1cnJl
bnQoKTsKICAgIHZpcnR1YWwgSVRocmVhZElkIGlkKCkgY29uc3Q7CiAgICBzdGF0aWMgSVRocmVh
ZElkIGN1cnJlbnRJZCgpOwogICAgdmlydHVhbCBJVGhyZWFkSGFuZGxlIGhhbmRsZSgpIGNvbnN0
OwogICAgc3RhdGljIElUaHJlYWRIYW5kbGUgY3VycmVudEhhbmRsZSgpOwogICAgdmlydHVhbCBi
b29sIGlzU3RhcnRlZCgpIGNvbnN0OwogICAgaW9jOjp1bnVtZXJpY190IGV4aXRDb2RlKCkgY29u
c3Q7CgogICAgIAogICAgIAogICAgIAogICAgdmlydHVhbCBJU3RyaW5nIGFzU3RyaW5nKCkgY29u
c3Q7CiAgICB2aXJ0dWFsIElTdHJpbmcgYXNEZWJ1Z0luZm8oKSBjb25zdDsKCiAgICAgCiAgICAg
CiAgICAgCiAgICAgCiAgICBJU3RyaW5nIHZhcmlhYmxlKGNvbnN0IElTdHJpbmcmIGtleSkgY29u
c3Q7CiAgICBJTm9uR1VJVGhyZWFkJiBzZXRWYXJpYWJsZShjb25zdCBJU3RyaW5nJiBrZXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nJiB2YWx1ZSk7CgogICAg
IAogICAgIAogICAgIAogICAgY2xhc3MgICBDdXJzb3IKICAgIHsKICAgIHB1YmxpYzoKICAgICAg
ICBDdXJzb3IoYm9vbCBhbGxUaHJlYWRzID0gdHJ1ZSk7CiAgICAgICAgdmlydHVhbCB+Q3Vyc29y
KCk7CiAgICAgICAgdmlydHVhbCBib29sIHNldFRvRmlyc3QoKTsKICAgICAgICB2aXJ0dWFsIGJv
b2wgc2V0VG9OZXh0KCk7CiAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAg
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgICAgIElUaHJlYWRJZCB0aHJlYWRJ
ZCgpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAgICAgZnJpZW5kIGNsYXNzIElTdGFydGVkVGhy
ZWFkOwogICAgICAgIGZyaWVuZCBjbGFzcyBJV2luZG93OwoKICAgICAgICBib29sIGFsbDsKICAg
ICAgICBib29sIGl0ZXJhdGVkQWxsOwogICAgICAgIGJvb2wgYWR2YW5jZSgpOwogICAgICAgIHVu
c2lnbmVkIGN1cnNvcjsKICAgICAgICB1bnNpZ25lZCBjcmVhdGVkOwogICAgICAgIHN0YXRpYyB1
bnNpZ25lZCB0aW1lU3RhbXA7CiAgICAgICAgSVRocmVhZEN1cnNvckRhdGEqIGZDdXJzb3JEYXRh
OwogICAgfTsKCgogICAgIAoKCgoKIyAyNDIgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaW5ndGhyZC5ocHAiCgoKcHJvdGVjdGVkOgogICAgdmlydHVh
bCBJU3RhcnRlZFRocmVhZCogc3RhcnRlZFRocmVhZCgpIGNvbnN0OwogICAgc3RhdGljIElTdGFy
dGVkVGhyZWFkKiBuZXdTdGFydGVkVGhyZWFkKCk7CiAgICBJTm9uR1VJVGhyZWFkJiBvcGVyYXRv
cj0oY29uc3QgSU5vbkdVSVRocmVhZCYgdGhyZWFkKTsKCnByaXZhdGU6CiAgICBmcmllbmQgY2xh
c3MgSUN1cnJlbnROb25HVUlUaHJlYWQ7CiAgICBmcmllbmQgY2xhc3MgSVdpbmRvdzsKCiAgICBJ
U3RhcnRlZFRocmVhZCogcHJlcGFyZVRvU3RhcnQoY29uc3QgSUNvdW50ZWRQb2ludGVyVG88SVRo
cmVhZEZuPiYpOwogICAgdm9pZCB0aHJlYWRTdGFydGVkKElTdGFydGVkVGhyZWFkKiB0aHJlYWQs
IGludCByYywgSVRocmVhZElkIHRocmVhZElkKTsKCiAgICBJU3RhcnRlZFRocmVhZCAqdGhyZWFk
OwogICAgc3RhdGljIGlvYzo6dW51bWVyaWNfdCBkZmx0U3RhY2tTaXplOwoKCiAKICAgIHB0aHJl
YWRfdCBwdGg7CiAKICAgIHN0YXRpYyBib29sIGluaXRJblByb2dyZXNzOwoKfTsgIAoKIAoKCmNs
YXNzICAgSUN1cnJlbnROb25HVUlUaHJlYWQgOiBwdWJsaWMgSU5vbkdVSVRocmVhZAp7CiAgICB0
eXBlZGVmIElOb25HVUlUaHJlYWQgSW5oZXJpdGVkOwpwdWJsaWM6CiAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUN1cnJlbnROb25HVUlUaHJlYWQoKTsKICAgIHZp
cnR1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICB+SUN1cnJlbnROb25HVUlUaHJlYWQoKTsK
CiAgICB2aXJ0dWFsIGlvYzo6dW51bWVyaWNfdCAgICAgICAgICByZW1haW5pbmdTdGFjaygpIGNv
bnN0OwoKICAgIHZpcnR1YWwgSUN1cnJlbnROb25HVUlUaHJlYWQmICAgIHNsZWVwKGlvYzo6dW51
bWVyaWNfdCBtaWxsaXNlY29uZHMpOwogICAgdmlydHVhbCBJQ3VycmVudE5vbkdVSVRocmVhZCYg
ICAgd2FpdEZvcihjb25zdCBJTm9uR1VJVGhyZWFkJiBhbm90aGVyVGhyZWFkKTsKICAgIHZpcnR1
YWwgSUN1cnJlbnROb25HVUlUaHJlYWQmICAgIHdhaXRGb3IoY29uc3QgSU5vbkdVSVRocmVhZCYg
YW5vdGhlclRocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW9jOjpudW1lcmljX3QgdGltZW91dCk7CiAgICB2aXJ0dWFsIElDdXJyZW50Tm9uR1VJVGhy
ZWFkJiAgICB3YWl0Rm9yKGNvbnN0IElOb25HVUlUaHJlYWQmIGFub3RoZXJUaHJlYWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvYzo6bnVtZXJpY190IHRp
bWVvdXQsIGJvb2wgKnRpbWVkT3V0KTsKICAgIHZpcnR1YWwgSUN1cnJlbnROb25HVUlUaHJlYWQm
ICAgIHdhaXRGb3JBbGxUaHJlYWRzKGlvYzo6bnVtZXJpY190IHRpbWVvdXQgPSAtMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnRp
bWVkT3V0ID0gMCk7CiAgICB2aXJ0dWFsIElUaHJlYWRJZCAgICAgICAgICAgICAgICB3YWl0Rm9y
QW55VGhyZWFkKGlvYzo6bnVtZXJpY190IHRpbWVvdXQgPSAtMSk7CgogICAgdmlydHVhbCB2b2lk
ICAgICAgICAgICAgICAgICAgICAgZXhpdChpb2M6OnVudW1lcmljX3QgcmV0dXJuQ29kZSk7Cgog
ICAgIAogICAgdmlydHVhbCBJVGhyZWFkSWQgICAgICAgICAgICAgICAgaWQoKSBjb25zdDsKICAg
IHZpcnR1YWwgSVRocmVhZEhhbmRsZSAgICAgICAgICAgIGhhbmRsZSgpIGNvbnN0OwoKICAgICAK
ICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgICAgICAgICAgIHN1c3BlbmQoKTsKCnByb3RlY3Rl
ZDoKICAgICAKICAgIHZpcnR1YWwgSVN0YXJ0ZWRUaHJlYWQqICAgICAgICAgIHN0YXJ0ZWRUaHJl
YWQoKSBjb25zdDsKcHJpdmF0ZToKICAgIGZyaWVuZCBjbGFzcyAgICAgICAgICAgICAgICAgICAg
IElOb25HVUlUaHJlYWQ7CiAgICBmcmllbmQgY2xhc3MgICAgICAgICAgICAgICAgICAgICBJQ3Vy
cmVudFRocmVhZDsKCiAgICBJQ3VycmVudE5vbkdVSVRocmVhZERhdGEqICAgICAgICBmQ3VycmVu
dFRocmVhZERhdGE7Cn07CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEg
bmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2luZ3RocmQuaW5sIiAxCgoKCiAKIAogCgoKCgoKCgoK
CgoKCgoKIAogCiAKIAogCiAKCgppbmxpbmUgaW9jOjp1bnVtZXJpY190IElOb25HVUlUaHJlYWQg
OjogZGVmYXVsdFN0YWNrU2l6ZSgpCnsKICAgIHJldHVybiBJTm9uR1VJVGhyZWFkOjpkZmx0U3Rh
Y2tTaXplOwp9CgppbmxpbmUgdm9pZCBJTm9uR1VJVGhyZWFkIDo6IHNldERlZmF1bHRTdGFja1Np
emUoaW9jOjp1bnVtZXJpY190IG5ld1N0a1NpemUpCnsKICAgIElOb25HVUlUaHJlYWQ6OmRmbHRT
dGFja1NpemUgPSBuZXdTdGtTaXplOwp9CgoKCiAKCiMgMzMwICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2luZ3RocmQuaHBwIiAyCgogCgogCiNwcmFn
bWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQog
CgogCgojIDMxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lub3RpZnkuaHBwIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9y
dChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUp
CiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoK
CgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoKIAp0eXBlZGVmIGNvbnN0IGNoYXIqIElOb3Rp
ZmljYXRpb25JZDsKIAoKIApjbGFzcyBJSW50ZXJlc3Q7CmNsYXNzIElOb3RpZmllckFkZHJlc3M7
CmNsYXNzIElPYnNlcnZlcjsKY2xhc3MgSU9ic2VydmVyTGlzdDsKY2xhc3MgSU5vdGlmaWNhdGlv
bkV2ZW50OwpjbGFzcyBJRXZlbnREYXRhOwogCgogCgpjbGFzcyBJTm90aWZpZXIKewpwdWJsaWM6
CiAgICAgCiAgICBJTm90aWZpZXIoKTsKICAgIHZpcnR1YWwgfklOb3RpZmllcigpOwoKICAgICAK
ICAgIHZpcnR1YWwgSU5vdGlmaWVyJiBlbmFibGVOb3RpZmljYXRpb24oYm9vbCBlbmFibGUgPSB0
cnVlKSA9IDA7CiAgICB2aXJ0dWFsIElOb3RpZmllciYgZGlzYWJsZU5vdGlmaWNhdGlvbigpID0g
MDsKCiAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkRm9yTm90aWZpY2F0aW9uKCkgY29uc3QgPSAw
OwoKICAgICAKICAgIHZpcnR1YWwgSU5vdGlmaWVyJiBub3RpZnlPYnNlcnZlcnMoY29uc3QgSU5v
dGlmaWNhdGlvbkV2ZW50JiBldmVudCkgPSAwOwogICAgdmlydHVhbCBJTm90aWZpZXImIG5vdGlm
eU9ic2VydmVyc0FzeW5jKGNvbnN0IElOb3RpZmljYXRpb25FdmVudCYgZXZlbnQpOwoKICAgIHZp
cnR1YWwgSU5vdGlmaWVyQWRkcmVzcyBub3RpZmllckFkZHJlc3MoKSBjb25zdDsKCiAgICBjb25z
dCBJVGhyZWFkSWQmIHRocmVhZElkKCkgY29uc3Q7CgoKICAgICAKICAgIHN0YXRpYyBJTm90aWZp
Y2F0aW9uSWQgY29uc3QgICBhbGxDaGFuZ2VzSWQ7CiAgICBzdGF0aWMgSU5vdGlmaWNhdGlvbklk
IGNvbnN0ICAgZGVsZXRlSWQ7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICB2aXJ0dWFsIElOb3RpZmll
ciYgYWRkT2JzZXJ2ZXIoSU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSUludGVyZXN0JiBpbnRl
cmVzdCk7CiAgICB2aXJ0dWFsIElOb3RpZmllciYgcmVtb3ZlT2JzZXJ2ZXIoSU9ic2VydmVyJiBv
YnNlcnZlcikgPSAwOwogICAgdmlydHVhbCBJTm90aWZpZXImIHJlbW92ZU9ic2VydmVyKElPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IElJbnRlcmVzdCYgaW50ZXJlc3QpOwogICAgdmlydHVhbCBJ
Tm90aWZpZXImIHJlbW92ZUFsbE9ic2VydmVycygpID0gMDsKCiAgICB2aXJ0dWFsIElPYnNlcnZl
ckxpc3QmIG9ic2VydmVyTGlzdChjb25zdCBJSW50ZXJlc3QqIGFuSW50ZXJlc3QgPSAwKSBjb25z
dCA9IDA7CgogICAgIAogICAgdmlydHVhbCBJTm90aWZpZXImIG5vdGlmeU9ic2VydmVycyhjb25z
dCBJTm90aWZpY2F0aW9uSWQmIGlkKSA9IDA7Cgpwcml2YXRlOgogICAgIAogICAgZnJpZW5kIGNs
YXNzIElPYnNlcnZlcjsKICAgIGZyaWVuZCBjbGFzcyBJSW50ZXJlc3Q7CgogICAgSVRocmVhZElk
IGZUaHJlYWRJZDsKCiAgICAgCgpwdWJsaWM6CiAgICB2aXJ0dWFsIElOb3RpZmllciYgYWRkT2Jz
ZXJ2ZXIoSU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSUV2ZW50RGF0YSYgdXNlckRhdGEpID0g
MDsKCn07CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmds
aW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQo
cG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyOSAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RkbnRmeS5ocHAiIDIKCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pb2JzbGlzdC5o
cHAiIDEKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgog
CgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVB
REVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5h
bWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0
KQoKCgoKCgoKIAoKIAogCgogCmNsYXNzIElPYnNlcnZlcjsKY2xhc3MgSU5vdGlmaWNhdGlvbkV2
ZW50OwpjbGFzcyBJT2JzZXJ2ZXJQb2ludGVyczsKY2xhc3MgSU9ic2VydmVyTGlzdERhdGE7CiAK
CiAKCmNsYXNzIElPYnNlcnZlckxpc3QKewpwdWJsaWM6CiAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJT2JzZXJ2ZXJMaXN0KCk7CiAgICB2aXJ0dWFsICAgICAgICAgICAgICAgICB+
SU9ic2VydmVyTGlzdCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPYnNlcnZlckxp
c3QoY29uc3QgSU9ic2VydmVyTGlzdCYgb2JzTGlzdCk7CgogICAgSU9ic2VydmVyTGlzdCYgICAg
ICAgICAgb3BlcmF0b3I9KGNvbnN0IElPYnNlcnZlckxpc3QmIG9ic0xpc3QpOwoKICAgICAKICAg
IElPYnNlcnZlckxpc3QmICAgICAgICAgIG5vdGlmeU9ic2VydmVycyhjb25zdCBJTm90aWZpY2F0
aW9uRXZlbnQmIGV2ZW50KTsKCiAgICBJT2JzZXJ2ZXJMaXN0JiAgICAgICAgICBub3RpZnlPYnNl
cnZlcnNBc3luYyhjb25zdCBJTm90aWZpY2F0aW9uRXZlbnQmIGFuRXZlbnQpOwoKICAgICAKICAg
IHZpcnR1YWwgYm9vbCAgICAgICAgICAgIGFkZChJT2JzZXJ2ZXImIG9ic2VydmVyLCB2b2lkKiB1
c2VyRGF0YSk7CgogICAgdmlydHVhbCBJT2JzZXJ2ZXJMaXN0JiAgcmVtb3ZlKGNvbnN0IElPYnNl
cnZlciYgb2JzZXJ2ZXIpOwogICAgdmlydHVhbCBJT2JzZXJ2ZXJMaXN0JiAgcmVtb3ZlQWxsKCk7
CgogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNFbXB0eSgpIGNvbnN0OwoKCnByaXZhdGU6
CiAgICAgCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICBsb2NrTGlzdCgpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgdW5sb2NrTGlzdCgpOwoKICAgIElPYnNlcnZlclBvaW50ZXJzKiAg
ICAgIGZPYnNlcnZlclBvaW50ZXJzOwogICAgaW9jOjp1bnVtZXJpY190ICAgICAgICAgZk5vdGlm
eURlcHRoOwogICAgSU9ic2VydmVyTGlzdERhdGEqICAgICAgZk9ic2VydmVyTGlzdERhdGE7Cgog
ICAgZnJpZW5kIGNsYXNzICAgICAgICAgICAgSU9ic2VydmVyTGlzdERhdGE7Cn07CgogCgogCgoK
CgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAK
CiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKIAoKIyAzMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pc3RkbnRmeS5ocHAiIDIKCgojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWludHJzdC5ocHAiIDEKCgoKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgoKIAoKIAojcHJhZ21h
IGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVW
RUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19J
T0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAK
IAoKIApjbGFzcyBJSW50ZXJlc3Q7CmlubGluZSBpb2M6OnVudW1lcmljX3QgaGFzaChJSW50ZXJl
c3QgY29uc3QmIGssIGlvYzo6dW51bWVyaWNfdCBuKTsKIAoKIAoKY2xhc3MgSUludGVyZXN0CnsK
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICBJSW50ZXJlc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgSUludGVyZXN0KGNvbnN0IElOb3RpZmllciYsIGNvbnN0IElOb3RpZmljYXRp
b25JZCYpOwogICAgICAgICAgICAgICAgICAgICAgICBJSW50ZXJlc3QoY29uc3QgSUludGVyZXN0
JiBzcmMpOwoKICAgIHZpcnR1YWwgICAgICAgICAgICAgfklJbnRlcmVzdCgpOwogICAgSU5vdGlm
aWNhdGlvbklkICAgICBub3RpZmljYXRpb25JZCgpIGNvbnN0OwogICAgSU5vdGlmaWVyQWRkcmVz
cyAgICBub3RpZmllckFkZHJlc3MoKSBjb25zdDsKICAgIElJbnRlcmVzdCYgICAgICAgICAgb3Bl
cmF0b3I9KGNvbnN0IElJbnRlcmVzdCYgcmhzICk7CiAgICBib29sICAgICAgICAgICAgICAgIG9w
ZXJhdG9yPChjb25zdCBJSW50ZXJlc3QmIHJocykgY29uc3Q7CiAgICBib29sICAgICAgICAgICAg
ICAgIG9wZXJhdG9yPT0oY29uc3QgSUludGVyZXN0JiB0aGVJbnRlcmVzdCkgY29uc3Q7CiAgICBi
b29sICAgICAgICAgICAgICAgIG9wZXJhdG9yIT0oY29uc3QgSUludGVyZXN0JiB0aGVJbnRlcmVz
dCkgY29uc3Q7CiAgICBpb2M6OnVudW1lcmljX3QgICAgIGhhc2hWYWx1ZSgpIGNvbnN0OwoKICAg
IGZyaWVuZCBpb2M6OnVudW1lcmljX3QgaGFzaCAoSUludGVyZXN0IGNvbnN0JiBrLCBpb2M6OnVu
dW1lcmljX3Qgbik7CgogICAgdmlydHVhbCB2b2lkICAgICAgICBub3RpZnlPYnNlcnZlcnMoSU5v
dGlmaWNhdGlvbkV2ZW50Jik7CiAgICB2aXJ0dWFsIHZvaWQgICAgICAgIG5vdGlmeU9ic2VydmVy
c0FzeW5jKElOb3RpZmljYXRpb25FdmVudCYpOwoKcHJvdGVjdGVkOgogICAgc3RhdGljICBpb2M6
OnVudW1lcmljX3QgY29tcHV0ZUhhc2hWYWx1ZShjb25zdCBjaGFyKiBwU3RyaW5nKTsKCnByaXZh
dGU6CiAgICBJTm90aWZpY2F0aW9uSWQgICAgIGZOYW1lOwogICAgSU5vdGlmaWVyQWRkcmVzcyAg
ICBmTm90aWZpZXJBZGRyZXNzOwogICAgaW9jOjp1bnVtZXJpY190ICAgICBmSGFzaFZhbHVlOwog
ICAgSU9ic2VydmVyTGlzdCogICAgICBmcE9ic2VydmVyQ2FjaGU7Cn07CgogCgogCgoKCgoKCgoj
cHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAx
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpbnRy
c3QuaW5sIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAoKaW5saW5lIGJvb2wgSUludGVyZXN0OjpvcGVyYXRvcjwoY29uc3QgSUludGVyZXN0JiByaHMp
IGNvbnN0CnsKICAgIHJldHVybiAoZk5hbWUgPCByaHMuZk5hbWUpOwp9CgppbmxpbmUgaW9jOjp1
bnVtZXJpY190IGhhc2goSUludGVyZXN0IGNvbnN0JiBrLCBpb2M6OnVudW1lcmljX3QgbikKewog
ICAgcmV0dXJuIGsuaGFzaFZhbHVlKCkgJSBuOwp9CgogCgojIDEyMCAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paW50cnN0LmhwcCIgMgoKIAoKIAoj
cHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9y
ZSkKIAoKIAoKIyAzMiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pc3RkbnRmeS5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEg
cmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVz
dG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hF
TUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSU9ic2VydmVy
TGlzdDsKY2xhc3MgSU9ic2VydmVyOwpjbGFzcyBJTm90aWZpY2F0aW9uRXZlbnQ7CmNsYXNzIElO
b3RpZmllckltcGxlbWVudGF0aW9uOwogCgogCgpjbGFzcyBJU3RhbmRhcmROb3RpZmllciA6IHB1
YmxpYyBJTm90aWZpZXIKewogICAgdHlwZWRlZiBJTm90aWZpZXIgSW5oZXJpdGVkOwoKcHVibGlj
OgogICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVN0YW5kYXJkTm90aWZpZXIoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTdGFuZGFyZE5vdGlmaWVyKGNvbnN0IElTdGFu
ZGFyZE5vdGlmaWVyJiBjb3B5KTsKICAgIElTdGFuZGFyZE5vdGlmaWVyJiAgICAgIG9wZXJhdG9y
PShjb25zdCBJU3RhbmRhcmROb3RpZmllciYgYVN0YW5kYXJkTm90aWZpZXIpOwoKICAgIHZpcnR1
YWwgICAgICAgICAgICAgICAgIH5JU3RhbmRhcmROb3RpZmllcigpOwoKICAgICAKICAgIHZpcnR1
YWwgSVN0YW5kYXJkTm90aWZpZXImIGVuYWJsZU5vdGlmaWNhdGlvbihib29sIGVuYWJsZSA9IHRy
dWUpOwogICAgdmlydHVhbCBJU3RhbmRhcmROb3RpZmllciYgZGlzYWJsZU5vdGlmaWNhdGlvbigp
OwoKICAgIHZpcnR1YWwgYm9vbCAgICAgICAgICAgIGlzRW5hYmxlZEZvck5vdGlmaWNhdGlvbigp
IGNvbnN0OwoKICAgIHZpcnR1YWwgSU5vdGlmaWVyQWRkcmVzcyBub3RpZmllckFkZHJlc3MoKSBj
b25zdDsKCiAgICAgCiAgICB2aXJ0dWFsIElTdGFuZGFyZE5vdGlmaWVyJiBub3RpZnlPYnNlcnZl
cnMoY29uc3QgSU5vdGlmaWNhdGlvbkV2ZW50JiBhbkV2ZW50KTsKICAgIHZpcnR1YWwgSVN0YW5k
YXJkTm90aWZpZXImIG5vdGlmeU9ic2VydmVyc0FzeW5jKGNvbnN0IElOb3RpZmljYXRpb25FdmVu
dCYgYW5FdmVudCk7Cgpwcm90ZWN0ZWQ6CiAgICAgCiAgICB2aXJ0dWFsIElTdGFuZGFyZE5vdGlm
aWVyJiBhZGRPYnNlcnZlcihJT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBJSW50ZXJlc3QmIGlu
dGVyZXN0KTsKICAgIHZpcnR1YWwgSVN0YW5kYXJkTm90aWZpZXImIHJlbW92ZU9ic2VydmVyKElP
YnNlcnZlciYgb2JzZXJ2ZXIpOwogICAgdmlydHVhbCBJU3RhbmRhcmROb3RpZmllciYgcmVtb3Zl
T2JzZXJ2ZXIoSU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSUludGVyZXN0JiBpbnRlcmVzdCk7
CiAgICB2aXJ0dWFsIElTdGFuZGFyZE5vdGlmaWVyJiByZW1vdmVBbGxPYnNlcnZlcnMoKTsKCiAg
ICB2aXJ0dWFsIElPYnNlcnZlckxpc3QmICBvYnNlcnZlckxpc3QoY29uc3QgSUludGVyZXN0KiBh
bkludGVyZXN0ID0gMCkgY29uc3Q7CgogICAgIAogICAgdmlydHVhbCBJU3RhbmRhcmROb3RpZmll
ciYgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IElOb3RpZmljYXRpb25JZCYgbklkKTsKCnByaXZhdGU6
CiAgICAgCiAgICBJTm90aWZpZXJJbXBsZW1lbnRhdGlvbiogICAgbm90aWZpZXJJbXAoYm9vbCBj
cmVhdGUgPSB0cnVlKTsKICAgIElOb3RpZmllckltcGxlbWVudGF0aW9uKiAgICBub3RpZmllcklt
cChib29sIGNyZWF0ZSA9IHRydWUpIGNvbnN0OwoKICAgIGJvb2wgICAgZW5hYmxlZDsKCiAgICBJ
Tm90aWZpZXJJbXBsZW1lbnRhdGlvbiogICAgZk5vdGlmaWVySW1wOwoKICAgICAKCnB1YmxpYzoK
ICAgIHZpcnR1YWwgSVN0YW5kYXJkTm90aWZpZXImICBhZGRPYnNlcnZlcihJT2JzZXJ2ZXImIG9i
c2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IElFdmVudERhdGEmIHVzZXJEYXRhID0gSUV2ZW50RGF0YSgwKSk7Cgp9OwoKIAoKIAoKCgoKCgoK
I3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiAK
CiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJl
c3RvcmUpCiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaWl2Y2xsY3QuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdt
YSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1ND
SEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKCiAgCgogCgogCmNsYXNzIElD
dXJzb3I7CgpjbGFzcyBJQ3Vyc29ySW1wbDsKCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
PgpjbGFzcyBJVkNvbGxlY3Rpb25FdmVudERhdGEKewpwdWJsaWM6CgogICAgICAgICAgIElWQ29s
bGVjdGlvbkV2ZW50RGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElDdXJzb3IgY29u
c3QmLCBFbGVtZW50IGNvbnN0KiA9IDApOwoKICBJQ3Vyc29yIGNvbnN0JgogICAgICAgICAgIGN1
cnNvciAgICAgICAgICAgKCkgY29uc3Q7CgogIEVsZW1lbnQgY29uc3QqY29uc3QKICAgICAgICAg
ICBlbGVtZW50ICAgICAgICAgICgpIGNvbnN0OwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgSUN1
cnNvciBjb25zdCoKICAgICAgICAgICBpdkN1cnNvcjsKCiAgRWxlbWVudCBjb25zdCoKICAgICAg
ICAgICBpdkVsZW1lbnQ7Cgp9OwoKCgoKCgoKCgpjbGFzcyAgIElWQ29sbGVjdGlvbkltcGwgOiBw
dWJsaWMgSVN0YW5kYXJkTm90aWZpZXIKewogIHR5cGVkZWYgIElTdGFuZGFyZE5vdGlmaWVyIElu
aGVyaXRlZDsKCnB1YmxpYzoKCiAgc3RhdGljCiAgSU5vdGlmaWNhdGlvbklkIGNvbnN0CiAgICBh
ZGRJZCwKICAgIG1vZGlmeUlkLAogICAgcmVtb3ZlSWQsCiAgICByZXBsYWNlSWQ7CgogICAKICBz
dGF0aWMKICBJTm90aWZpY2F0aW9uSWQgY29uc3QKICAgIGFkZGVkSWQsCiAgICBtb2RpZmllZElk
LAogICAgcmVtb3ZlZElkLAogICAgcmVwbGFjZWRJZDsKCiAgICAgICAgICB+SVZDb2xsZWN0aW9u
SW1wbCAoKTsKCiAgSU5vdGlmaWVyJgogICAgICAgICAgIERpc2FibGVOb3RpZmljYXRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICBJTm90aWZpZXImCiAgICAgICAgICAgRW5h
YmxlTm90aWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm9vbCA9IHRydWUp
OwoKICBib29sIElzRW5hYmxlZEZvck5vdGlmaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCkgY29uc3Q7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElWQ29sbGVjdGlvbkltcGwg
KCk7CgogIHZvaWQgICAgIE5vdGlmeU9mQWRkQXQgICAgKElDdXJzb3JJbXBsIGNvbnN0Jik7Cgog
IHZvaWQgICAgIE5vdGlmeU9mTW9kaWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKTsKCiAgdm9pZCAgICAgTm90aWZ5T2ZSZW1vdmVBdCAoSUN1cnNvckltcGwgY29uc3QmKTsK
CiAgdm9pZCAgICAgTm90aWZ5T2ZSZXBsYWNlQXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChJQ3Vyc29ySW1wbCBjb25zdCYsIHZvaWQgY29uc3QqID0gMCk7Cgpwcml2YXRlOgoKIyAxNzgg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2Y2xs
Y3QuaCIKCgp9OwoKdHlwZWRlZiBJVkNvbGxlY3Rpb25JbXBsIElWQ29sbGVjdGlvbjsKCiAKCiAK
CgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkK
CgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lpdmNsbGN0LmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgoK
CgoKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSVZDb2xsZWN0aW9u
RXZlbnREYXRhIDxFbGVtZW50Pjo6CklWQ29sbGVjdGlvbkV2ZW50RGF0YSAoSUN1cnNvciBjb25z
dCYgY3Vyc29yLAogICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQgY29uc3QqIGVsZW1lbnQp
CjogaXZDdXJzb3IgKCZjdXJzb3IpLCBpdkVsZW1lbnQgKGVsZW1lbnQpCnsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSBJQ3Vyc29yIGNvbnN0JgpJVkNvbGxlY3Rpb25FdmVudERh
dGEgPEVsZW1lbnQ+OjoKY3Vyc29yICgpIGNvbnN0CnsgcmV0dXJuICppdkN1cnNvcjsKfQoKdGVt
cGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50IGNvbnN0KmNvbnN0CklWQ29sbGVj
dGlvbkV2ZW50RGF0YSA8RWxlbWVudD46OgplbGVtZW50ICgpIGNvbnN0CnsgcmV0dXJuIGl2RWxl
bWVudDsKfQoKIAogCiAKCiAKCmlubGluZSBJTm90aWZpZXImCklWQ29sbGVjdGlvbkltcGw6OgpE
aXNhYmxlTm90aWZpY2F0aW9uICgpCnsgcmV0dXJuIGRpc2FibGVOb3RpZmljYXRpb24gKCk7Cn0K
CmlubGluZSBJTm90aWZpZXImCklWQ29sbGVjdGlvbkltcGw6OgpFbmFibGVOb3RpZmljYXRpb24g
KGJvb2wgZW5hYmxlKQp7IHJldHVybiBlbmFibGVOb3RpZmljYXRpb24gKGVuYWJsZSk7Cn0KCmlu
bGluZSBib29sCklWQ29sbGVjdGlvbkltcGw6OgpJc0VuYWJsZWRGb3JOb3RpZmljYXRpb24gKCkg
Y29uc3QKeyByZXR1cm4gaXNFbmFibGVkRm9yTm90aWZpY2F0aW9uICgpOwp9CgoKCgoKIAoKIyAy
MDkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2
Y2xsY3QuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQoj
cHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzNCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWFjbGxjdC5oIiAyCgoKIAoKIAojcHJhZ21hIGlu
Zm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwp
CiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0Nf
TkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCgoKCgoKCgoK
IAoKIAogCgogCiAKCiAKCmNsYXNzIElBQ29sbGVjdGlvbkltcGw7CgoKCgoKCgojcHJhZ21hIGVu
dW0oNCkKCgpjbGFzcyAgIElDb2xsZWN0aW9uUmVzb3VyY2VJbXBsCnsKcHVibGljOgogICAgICAg
ICAgIElDb2xsZWN0aW9uUmVzb3VyY2VJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KTsKCiAgICAgICAgICAgfklDb2xsZWN0aW9uUmVzb3VyY2VJbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoKTsKCiAgdm9pZCAgICAgbG9jayAgICAgICAgICAgICAobG9uZyk7CgogIHZv
aWQgICAgIHVubG9jayAgICAgICAgICAgKCk7Cgpwcm90ZWN0ZWQ6CiAgSVJlc291cmNlKiBpdlJl
c291cmNlOwoKcHJpdmF0ZToKCiMgMTE2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpYWNsbGN0LmgiCgp9OwoKCmNsYXNzICAgSUN1cnNvckltcGwg
ewpwdWJsaWM6CgogICAgICAgICAgIElDdXJzb3JJbXBsICAgICAgKElBQ29sbGVjdGlvbkltcGwg
Y29uc3QmKTsKCiAgdmlydHVhbCB+SUN1cnNvckltcGwgICAgICAoKTsKCiAgdmlydHVhbAogIElD
dXJzb3JJbXBsKgogICAgICAgICAgIENsb25lICAgICAgICAgICAgKCkgY29uc3QgPSAwOwoKICB2
aXJ0dWFsCiAgdm9pZCAgICAgQ29weSAgICAgICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSA9
IDA7CgogIHZvaWQgY29uc3QqCiAgICAgICAgICAgRWxlbWVudCAgICAgICAgICAoKSBjb25zdDsK
CiAgdmlydHVhbAogIHZvaWQgICAgIEludmFsaWRhdGUgICAgICAgKCkgPSAwOwoKICBib29sIElz
Rm9yICAgICAgICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKSBjb25zdDsKCiAgdmlydHVh
bAogIGJvb2wgSXNJbkJldHdlZW4gICAgICAoKSBjb25zdCA9IDA7CgogIHZpcnR1YWwKICBib29s
IElzTW5nQ3Vyc29yICAgICAgKCkgY29uc3Q7CgogIHZpcnR1YWwKICBib29sIElzVmFsaWQgICAg
ICAgICAgKCkgY29uc3QgPSAwOwoKICBJUG9zaXRpb24KICAgICAgICAgICBQb3NpdGlvbiAgICAg
ICAgICgpIGNvbnN0OwoKICBib29sIFNldFRvRmlyc3QgICAgICAgKCk7CgogIGJvb2wgU2V0VG9M
YXN0ICAgICAgICAoKTsKCiAgYm9vbCBTZXRUb05leHQgICAgICAgICgpOwoKICB2b2lkICAgICBT
ZXRUb1Bvc2l0aW9uICAgIChJUG9zaXRpb24pOwoKICBib29sIFNldFRvUHJldmlvdXMgICAgKCk7
CgogIHZpcnR1YWwKICBib29sIG9wZXJhdG9yPT0gICAgICAgKElDdXJzb3JJbXBsIGNvbnN0Jikg
Y29uc3Q7CgogIGJvb2wgb3BlcmF0b3IhPSAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25z
dDsKCnByb3RlY3RlZDoKCiAgSUFDb2xsZWN0aW9uSW1wbCBjb25zdCoKICAgICAgICAgICBpdkNv
bGxlY3Rpb247CgogIHN0YXRpYwogIHZvaWQqICAgIENoZWNrUG9pbnRlciAgICAgKHZvaWQqKTsK
CnByaXZhdGU6CgojIDIwMyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9paWFjbGxjdC5oIgoKCn07CgoKCgoKCmNsYXNzIElBQ29sbGVjdGlvbk9wczsK
CgpjbGFzcyAgIElBQ29sbGVjdGlvbkltcGwgOiBwdWJsaWMgSVZDb2xsZWN0aW9uSW1wbAp7CgoK
CgpwdWJsaWM6CgogIHR5cGVkZWYgIElBQ29sbGVjdGlvbk9wcyBPcHM7CgogICAgICAgICAgfklB
Q29sbGVjdGlvbkltcGwgKCk7CgogIGJvb2wgQWRkICAgICAgICAgICAgICAodm9pZCBjb25zdCop
OwoKICB2aXJ0dWFsCiAgYm9vbCBBZGQgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNv
ckltcGwmKSA9IDA7CgogIHZvaWQgICAgIEFkZEFzRmlyc3QgICAgICAgKHZvaWQgY29uc3QqKTsK
CiAgdmlydHVhbAogIHZvaWQgICAgIEFkZEFzRmlyc3QgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vy
c29ySW1wbCYpOyAgCgogIHZvaWQgICAgIEFkZEFzTGFzdCAgICAgICAgKHZvaWQgY29uc3QqKTsK
CiAgdmlydHVhbAogIHZvaWQgICAgIEFkZEFzTGFzdCAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vy
c29ySW1wbCYpOyAgCgogIHZpcnR1YWwKICB2b2lkICAgICBBZGRBc05leHQgICAgICAgICh2b2lk
IGNvbnN0KiwgSUN1cnNvckltcGwmKTsgIAoKICB2aXJ0dWFsCiAgdm9pZCAgICAgQWRkQXNQcmV2
aW91cyAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7ICAKCiAgdm9pZCAgICAgQWRkQXRQ
b3NpdGlvbiAgICAoSVBvc2l0aW9uLCB2b2lkIGNvbnN0Kik7CgogIHZpcnR1YWwKICB2b2lkICAg
ICBBZGRBdFBvc2l0aW9uICAgIChJUG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7ICAKCiAgYm9vbCBBZGRPclJlcGxhY2VFbGVt
ZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqKTsKCiAg
dmlydHVhbAogIGJvb2wgQWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsgIAoKICB2aXJ0dWFsCiAg
dm9pZCAgICAgQWRkQWxsRnJvbSAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBjb25zdCYpOwoKICB2
aXJ0dWFsCiAgYm9vbCBBbGxFbGVtZW50c0RvICAgIChJQXBwbEZ1bmMsIHZvaWQqKTsKCiAgdmly
dHVhbAogIHZvaWQqICAgIEFueSAgICAgICAgICAgICAgKCkgY29uc3QgPSAwOwoKICBzdGF0aWMK
ICB2b2lkKiAgICBDaGVja1BvaW50ZXIgICAgICh2b2lkKik7CgogIHZpcnR1YWwKICBjaGFyIGNv
bnN0KgogICAgICAgICAgIENsYXNzTmFtZSAgICAgICAgKCkgY29uc3QgPSAwOwoKICB2aXJ0dWFs
CiAgSUFDb2xsZWN0aW9uSW1wbCoKICAgICAgICAgICBDbG9uZSAgICAgICAgICAgICgpIGNvbnN0
ID0gMDsKCiAgdmlydHVhbAogIGJvb2wgQ29udGFpbnMgICAgICAgICAodm9pZCBjb25zdCopIGNv
bnN0OyAgCgogIHZpcnR1YWwKICBib29sIENvbnRhaW5zQWxsRnJvbSAgKElBQ29sbGVjdGlvbklt
cGwgY29uc3QmKSBjb25zdDsgIAoKICB2aXJ0dWFsCiAgYm9vbCBDb250YWluc0FsbEtleXNGcm9t
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBjb25zdCYpIGNv
bnN0OyAgCgogIHZpcnR1YWwKICBib29sIENvbnRhaW5zRWxlbWVudFdpdGhLZXkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0KikgY29uc3Q7ICAKCiAgdmlydHVhbAogIHZv
aWQgICAgIENvcHkgICAgICAgICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKTsKCiAgdmly
dHVhbAogIElDdXJzb3JJbXBsKgogICAgICAgICAgIENyZWF0ZUN1cnNvciAgICAgKCkgY29uc3Qg
PSAwOwoKICB2aXJ0dWFsCiAgSUN1cnNvckltcGwqCiAgICAgICAgICAgQ3JlYXRlTW5nQ3Vyc29y
ICAoKSBjb25zdCA9IDA7CgogIHZvaWQgICAgIERlbGV0ZSAgICAgICAgICAgKCk7CgogIHZpcnR1
YWwKICB2b2lkKiAgICBFbGVtZW50QXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNvbnN0
ID0gMDsKCiAgdmlydHVhbAogIHZvaWQqICAgIEVsZW1lbnRBdFBvc2l0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoSVBvc2l0aW9uKSBjb25zdDsgIAoKICB2aXJ0dWFsCiAgdm9pZCog
ICAgRWxlbWVudFdpdGhLZXkgICAodm9pZCBjb25zdCopIGNvbnN0OyAgCgogIHZpcnR1YWwKICB2
b2lkKiAgICBGaXJzdCAgICAgICAgICAgICgpIGNvbnN0OwoKICB2b2lkICAgICBJbml0aWFsaXpl
ICAgICAgICgpOwoKICB2aXJ0dWFsCiAgYm9vbCBJc0JvdW5kZWQgICAgICAgICgpIGNvbnN0ID0g
MDsKCiAgdmlydHVhbAogIGJvb2wgSXNDb25zaXN0ZW50ICAgICAoKSBjb25zdCA9IDA7CgogIHZp
cnR1YWwKICBib29sIElzRW1wdHkgICAgICAgICAgKCkgY29uc3Q7CgogIHZpcnR1YWwKICBib29s
IElzRmlyc3RBdCAgICAgICAgKElDdXJzb3JJbXBsIGNvbnN0JikgY29uc3Q7CgogIHZpcnR1YWwK
ICBib29sIElzRnVsbCAgICAgICAgICAgKCkgY29uc3QgPSAwOwoKICB2aXJ0dWFsCiAgYm9vbCBJ
c0xhc3RBdCAgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNvbnN0OwoKICB2aXJ0dWFsCiAg
dm9pZCogICAgS2V5ICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OyAgCgogIHZpcnR1
YWwKICB2b2lkKiAgICBMYXN0ICAgICAgICAgICAgICgpIGNvbnN0OwoKICB2aXJ0dWFsCiAgYm9v
bCBMb2NhdGUgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKSBjb25zdDsgIAoK
ICB2aXJ0dWFsCiAgYm9vbCBMb2NhdGVFbGVtZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpIGNvbnN0OyAgCgogIHZpcnR1YWwK
ICBib29sIExvY2F0ZU5leHQgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpIGNvbnN0
OyAgCgogIHZpcnR1YWwKICBib29sIExvY2F0ZU5leHRFbGVtZW50V2l0aEtleQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpIGNvbnN0OyAgCgog
IGJvb2wgTG9jYXRlT3JBZGQgICAgICAodm9pZCBjb25zdCopOwoKICB2aXJ0dWFsCiAgYm9vbCBM
b2NhdGVPckFkZCAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsgIAoKICBib29sIExv
Y2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
IGNvbnN0Kik7CgogIHZpcnR1YWwKICBib29sIExvY2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsgIAoK
ICB2aXJ0dWFsCiAgdm9pZCAgICAgTG9ja0JlZm9yZVJlYWRpbmcKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChsb25nID0gLTEpOwoKICB2aXJ0dWFsCiAgdm9pZCAgICAgTG9ja0JlZm9yZVdy
aXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nID0gLTEpOwoKICB2aXJ0dWFs
CiAgSU51bWJlciAgTWF4TnVtYmVyT2ZFbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCkgY29uc3Q7CgogIHZpcnR1YWwKICBJTnVtYmVyICBOdW1iZXJPZkRpZmZlcmVudEtleXMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpIGNvbnN0OyAgCgogIHZpcnR1YWwKICBJTnVt
YmVyICBOdW1iZXJPZkVsZW1lbnRzICgpIGNvbnN0ID0gMDsKCiAgdmlydHVhbAogIElOdW1iZXIg
IE51bWJlck9mRWxlbWVudHNXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9p
ZCBjb25zdCopIGNvbnN0OyAgCgogIHZpcnR1YWwKICBJTnVtYmVyICBOdW1iZXJPZk9jY3VycmVu
Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OyAgCgog
IHZpcnR1YWwKICBJUG9zaXRpb24KICAgICAgICAgICBQb3NpdGlvbkF0ICAgICAgIChJQ3Vyc29y
SW1wbCBjb25zdCYpIGNvbnN0OyAgCgogIHZpcnR1YWwKICB2b2lkICAgICBSZWxlYXNlICAgICAg
ICAgICgpIGNvbnN0OwoKICB2aXJ0dWFsCiAgYm9vbCBSZW1vdmUgICAgICAgICAgICh2b2lkIGNv
bnN0Kik7ICAKCiAgdmlydHVhbAogIElOdW1iZXIgIFJlbW92ZUFsbCAgICAgICAgKCkgPSAwOwoK
ICB2aXJ0dWFsCiAgSU51bWJlciAgUmVtb3ZlQWxsICAgICAgICAoSVByZWRGdW5jLCB2b2lkKikg
PSAwOwoKICB2aXJ0dWFsCiAgSU51bWJlciAgUmVtb3ZlQWxsRWxlbWVudHNXaXRoS2V5CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCopOyAgCgogIHZpcnR1YWwKICBJTnVt
YmVyICBSZW1vdmVBbGxPY2N1cnJlbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv
aWQgY29uc3QqKTsgIAoKICB2aXJ0dWFsCiAgdm9pZCAgICAgUmVtb3ZlQXQgICAgICAgICAoSUN1
cnNvckltcGwmKSA9IDA7CgoKICB2aXJ0dWFsCiAgdm9pZCAgICAgUmVtb3ZlQXRQb3NpdGlvbiAo
SVBvc2l0aW9uKTsgIAoKICB2aXJ0dWFsCiAgYm9vbCBSZW1vdmVFbGVtZW50V2l0aEtleQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqKTsgIAoKICB2aXJ0dWFsCiAgdm9p
ZCAgICAgUmVtb3ZlRmlyc3QgICAgICAoKTsKCiAgdmlydHVhbAogIHZvaWQgICAgIFJlbW92ZUxh
c3QgICAgICAgKCk7CgogIHZpcnR1YWwKICB2b2lkICAgICBSZXBsYWNlQXQgICAgICAgIChJQ3Vy
c29ySW1wbCBjb25zdCYsIHZvaWQgY29uc3QqKSA9IDA7CgogIHZpcnR1YWwKICB2b2lkICAgICBS
ZXBsYWNlQXRQb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElQb3NpdGlvbiwg
dm9pZCBjb25zdCopOwoKICBib29sIFJlcGxhY2VFbGVtZW50V2l0aEtleQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqKTsKCiAgdmlydHVhbAogIGJvb2wgUmVwbGFjZUVs
ZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElD
dXJzb3JJbXBsJik7ICAKCiAgdmlydHVhbAogIHZvaWQgICAgIFJldmVyc2UgICAgICAgICAgKCk7
ICAKCiAgdmlydHVhbAogIHZvaWQgICAgIFNlaXplICAgICAgICAgICAgKGxvbmcgdGltZW91dCA9
IC0xKTsKCiAgdmlydHVhbAogIGJvb2wgU2V0VG9GaXJzdCAgICAgICAoSUN1cnNvckltcGwmKSBj
b25zdCA9IDA7CgogIHZpcnR1YWwKICBib29sIFNldFRvTGFzdCAgICAgICAgKElDdXJzb3JJbXBs
JikgY29uc3Q7ICAKCiAgdmlydHVhbAogIGJvb2wgU2V0VG9OZXh0ICAgICAgICAoSUN1cnNvcklt
cGwmKSBjb25zdCA9IDA7CgogIHZpcnR1YWwKICBib29sIFNldFRvTmV4dFdpdGhEaWZmZXJlbnRL
ZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OyAgCgog
IHZpcnR1YWwKICB2b2lkICAgICBTZXRUb1Bvc2l0aW9uICAgIChJUG9zaXRpb24sIElDdXJzb3JJ
bXBsJikgY29uc3Q7ICAKCiAgdmlydHVhbAogIGJvb2wgU2V0VG9QcmV2aW91cyAgICAoSUN1cnNv
ckltcGwmKSBjb25zdDsgIAoKICB2aXJ0dWFsCiAgdm9pZCAgICAgU29ydCAgICAgICAgICAgICAo
SUNvbXBGdW5jLCB2b2lkKik7ICAKCiAgdmlydHVhbAogIHZvaWQgICAgIFVubG9ja0FmdGVyUmVh
ZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwKICB2b2lkICAg
ICBVbmxvY2tBZnRlcldyaXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKCnBy
b3RlY3RlZDoKCgoKCgogIHN0cnVjdCBQcmVkaWNhdGUgewoKICAgIHN0YXRpYwogICAgYm9vbCBJ
c0NvbnRhaW5lZCAgICAgICh2b2lkIGNvbnN0Kiwgdm9pZCopOwoKICAgIHN0YXRpYwogICAgYm9v
bCBJc05vdENvbnRhaW5lZCAgICh2b2lkIGNvbnN0Kiwgdm9pZCopOwoKICB9OwoKCgoKCiAgICAg
ICAgICAgSUFDb2xsZWN0aW9uSW1wbCAoT3BzJik7CgogICAgICAgICAgIElBQ29sbGVjdGlvbklt
cGwgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKTsKCiAgc3RhdGljCiAgaW5saW5lCiAgSUN1cnNv
ckltcGwmCiAgICAgICAgICAgQ3Vyc29yT2YgICAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBjb25z
dCYpOwoKICBzdGF0aWMKICBPcHMmICAgICBPcHNPZiAgICAgICAgICAgIChJQUNvbGxlY3Rpb25J
bXBsIGNvbnN0Jik7CnByaXZhdGU6CgogIE9wcyogICAgIGl2T3BzOwoKICBJTnVtYmVyICBpdlJl
ZmVyZW5jZUNvdW50OwoKICBJQ3Vyc29ySW1wbCoKICAgICAgICAgICBpdkR1bW15Q3Vyc29yOwoK
CiAgSUNvbGxlY3Rpb25SZXNvdXJjZUltcGwqCiAgICAgICAgICAgaXZSZXNvdXJjZTsKCgoKcHJv
dGVjdGVkOgogIElTdHJlYW1lclB0cgogICAgICAgICAgIGl2U3RyZWFtZXI7CgpwdWJsaWM6CiAg
dmlydHVhbAogIElTdHJlYW1lclB0ciYKICAgICAgICAgICBTdHJlYW1lck9mICAgICAgIChJQUNv
bGxlY3Rpb25JbXBsIGNvbnN0JikgPSAwOwoKICB2aXJ0dWFsCiAgdm9pZCAgICAgU3RyZWFtSW4g
ICAgICAgICAoSURhdGFTdHJlYW0mKSA9IDA7CgogIHZpcnR1YWwKICB2b2lkICAgICBTdHJlYW1P
dXQgICAgICAgIChJRGF0YVN0cmVhbSYpIGNvbnN0ID0gMDsKCiAgdmlydHVhbAogIHZvaWQgICAg
IEFkb3B0U3RyZWFtZXIgICAgKElBQ29sbGVjdGlvblN0cmVhbWVyKikgPSAwOwoKICB2aXJ0dWFs
CiAgdm9pZCAgICAgV3JpdGVWZXJzaW9uICAgICAoSURhdGFTdHJlYW0mKSBjb25zdDsKCiAgdmly
dHVhbAogIHZvaWQgICAgIFJlYWRWZXJzaW9uICAgICAgKElEYXRhU3RyZWFtJik7CgoKIyA2ODgg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlhY2xs
Y3QuaCIKCgp9OwoKY2xhc3MgICBJQUNvbGxlY3Rpb25PcHMKewpwdWJsaWM6CgogIHZpcnR1YWwg
fklBQ29sbGVjdGlvbk9wcyAgKCk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKCgoKCgoKfTsKCiAK
CiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBv
cCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2lpYWNsbGN0LmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAog
CgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lpZXhjLmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoKIyAxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIgMQoK
CgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCgojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIiAxCiMgMTAgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2Uu
aHBwIgoKCiMgNzI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lleGNiYXNlLmhwcCIKCgoKCgoKIyAyNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiIDIKCgogCgogCiNwcmFnbWEgaW5mbyhu
b25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3By
YWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1F
TUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKIAogCgogCiAKCiAKCgpjbGFzcyAgIElDb2xsZWN0aW9uUmVzb3VyY2VFeGNlcHRpb24g
OiBwdWJsaWMgSUV4Y2VwdGlvbgp7CnB1YmxpYzoKCiAgICAgICAgICAgSUNvbGxlY3Rpb25SZXNv
dXJjZUV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCB1
bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXZlcml0eSA9
IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJQ29sbGVjdGlvblJlc291
cmNlRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUNvbGxlY3Rpb25SZXNv
dXJjZUV4Y2VwdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsICB+SUNvbGxlY3Rpb25SZXNvdXJjZUV4
Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwgIGNoYXIg
Y29uc3QqIG5hbWUgKCkgY29uc3Q7CgogIHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAgICAg
ICAgKHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25z
dCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgICAgICAgdm9pZCAg
ICAgb3BlcmF0b3I9ICAgICAgICAoSUNvbGxlY3Rpb25SZXNvdXJjZUV4Y2VwdGlvbiBjb25zdCYp
OwoKIyAxMTUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWV4Yy5oIgoKfTsKCmNsYXNzICAgSUNvbGxlY3Rpb25Mb2NrRXhjZXB0aW9uIDogcHVibGlj
IElFeGNlcHRpb24KewpwdWJsaWM6CgogICAgICAgICAgIElDb2xsZWN0aW9uTG9ja0V4Y2VwdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25n
ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246
OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJQ29sbGVjdGlvbkxvY2tFeGNlcHRpb24KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChJQ29sbGVjdGlvbkxvY2tFeGNlcHRpb24gY29uc3Qm
KTsKCiAgdmlydHVhbCAgfklDb2xsZWN0aW9uTG9ja0V4Y2VwdGlvbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwgIGNoYXIgY29uc3QqIG5hbWUgKCkgY29uc3Q7Cgog
IHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAgICAgICAgKHVuc2lnbmVkIGxvbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJv
dGVjdGVkOgoKcHJpdmF0ZToKCiAgICAgICAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUNv
bGxlY3Rpb25Mb2NrRXhjZXB0aW9uIGNvbnN0Jik7CgojIDE1MyAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiCgp9OwoKY2xhc3MgICBJQ29s
bGVjdGlvbkxvY2tUaW1lT3V0RXhjZXB0aW9uIDogcHVibGljIElFeGNlcHRpb24KewpwdWJsaWM6
CgogICAgICAgICAgIElDb2xsZWN0aW9uTG9ja1RpbWVPdXRFeGNlcHRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyA9IDAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2V2ZXJpdHkgPSBJRXhjZXB0aW9uOjp1bnJlY292ZXJhYmxl
KTsKCiAgICAgICAgICAgSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2VwdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKElDb2xsZWN0aW9uTG9ja1RpbWVPdXRFeGNlcHRpb24gY29uc3Qm
KTsKCiAgdmlydHVhbCAgfklDb2xsZWN0aW9uTG9ja1RpbWVPdXRFeGNlcHRpb24KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgpOwoKICB2aXJ0dWFsICBjaGFyIGNvbnN0KiBuYW1lICgpIGNv
bnN0OwoKICBzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0ICAgICAgICAgICh1bnNpZ25lZCBsb25n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25n
KTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogICAgICAgIHZvaWQgICAgIG9wZXJhdG9yPSAgICAg
ICAgKElDb2xsZWN0aW9uTG9ja1RpbWVPdXRFeGNlcHRpb24gY29uc3QmKTsKCiMgMTkxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCn07
CgpjbGFzcyAgIElDb2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uIDogcHVibGljIElFeGNlcHRpb24K
ewpwdWJsaWM6CgogICAgICAgICAgIElDb2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcgPSAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNldmVyaXR5ID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVy
YWJsZSk7CgogICAgICAgICAgIElDb2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoSUNvbGxlY3Rpb25VbmxvY2tFeGNlcHRpb24gY29uc3QmKTsKCiAg
dmlydHVhbCAgfklDb2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKTsKCiAgdmlydHVhbCAgY2hhciBjb25zdCogbmFtZSAoKSBjb25zdDsKCiAgc3Rh
dGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0
ZWQ6Cgpwcml2YXRlOgoKICAgICAgICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJQ29sbGVj
dGlvblVubG9ja0V4Y2VwdGlvbiBjb25zdCYpOwoKIyAyMjkgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKfTsKCgpjbGFzcyAgIElQcmVj
b25kaXRpb25WaW9sYXRpb24gOiBwdWJsaWMgSUV4Y2VwdGlvbgp7CnB1YmxpYzoKCiAgICAgICAg
ICAgSVByZWNvbmRpdGlvblZpb2xhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNo
YXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJUHJl
Y29uZGl0aW9uVmlvbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVByZWNvbmRp
dGlvblZpb2xhdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsIH5JUHJlY29uZGl0aW9uVmlvbGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgdmlydHVhbAogIGNoYXIgY29uc3Qq
CiAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25zdDsKCiAgc3RhdGljCiAgdm9pZCAg
ICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRl
OgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJUHJlY29uZGl0aW9uVmlvbGF0aW9uIGNv
bnN0Jik7CgojIDI3MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pZXhjLmgiCgoKfTsKCmNsYXNzICAgSUZ1bGxFeGNlcHRpb24gOiBwdWJsaWMgSVBy
ZWNvbmRpdGlvblZpb2xhdGlvbgp7CnB1YmxpYzoKCiAgICAgICAgICAgSUZ1bGxFeGNlcHRpb24g
ICAoY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcgPSAwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNldmVyaXR5ID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSk7CgogICAgICAgICAg
IElGdWxsRXhjZXB0aW9uICAgKElGdWxsRXhjZXB0aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklG
dWxsRXhjZXB0aW9uICAgKCk7CgogIHZpcnR1YWwKICBjaGFyIGNvbnN0KgogICAgICAgICAgIG5h
bWUgICAgICAgICAgICAgKCkgY29uc3Q7CgogIHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAg
ICAgICAgKHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAg
b3BlcmF0b3I9ICAgICAgICAoSUZ1bGxFeGNlcHRpb24gY29uc3QmKTsKCiMgMzA3ICIvaG9tZS9h
a25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgp9OwoK
Y2xhc3MgICBJRW1wdHlFeGNlcHRpb24gOiBwdWJsaWMgSVByZWNvbmRpdGlvblZpb2xhdGlvbiB7
CnB1YmxpYzoKCiAgICAgICAgICAgSUVtcHR5RXhjZXB0aW9uICAoY2hhciBjb25zdCosIHVuc2ln
bmVkIGxvbmcgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldmVyaXR5ID0gSUV4
Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSk7CgogICAgICAgICAgIElFbXB0eUV4Y2VwdGlvbiAgKElF
bXB0eUV4Y2VwdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsIH5JRW1wdHlFeGNlcHRpb24gICgpOwoK
ICB2aXJ0dWFsCiAgY2hhciBjb25zdCoKICAgICAgICAgICBuYW1lICAgICAgICAgICAgICgpIGNv
bnN0OwoKICBzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0ICAgICAgICAgICh1bnNpZ25lZCBsb25n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25n
KTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElF
bXB0eUV4Y2VwdGlvbiBjb25zdCYpOwoKIyAzNDQgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKCn07CgpjbGFzcyAgIElOb3RFbXB0eUV4
Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0aW9uCnsKcHVibGljOgoKICAgICAg
ICAgICBJTm90RW1wdHlFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgdW5zaWduZWQgbG9uZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2V2ZXJpdHkgPSBJRXhjZXB0aW9uOjp1bnJlY292ZXJhYmxlKTsKCiAgICAgICAgICAgSU5vdEVt
cHR5RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5vdEVtcHR5RXhjZXB0
aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklOb3RFbXB0eUV4Y2VwdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwKICBjaGFyIGNvbnN0KgogICAgICAgICAgIG5h
bWUgICAgICAgICAgICAgKCkgY29uc3Q7CgogIHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAg
ICAgICAgKHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAg
b3BlcmF0b3I9ICAgICAgICAoSU5vdEVtcHR5RXhjZXB0aW9uIGNvbnN0Jik7CgojIDM4NSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiCgoK
fTsKCmNsYXNzICAgSU5vdEJvdW5kZWRFeGNlcHRpb24gOiBwdWJsaWMgSVByZWNvbmRpdGlvblZp
b2xhdGlvbgp7CnB1YmxpYzoKCiAgICAgICAgICAgSU5vdEJvdW5kZWRFeGNlcHRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyA9IDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V2ZXJpdHkgPSBJRXhjZXB0aW9uOjp1bnJlY292
ZXJhYmxlKTsKCiAgICAgICAgICAgSU5vdEJvdW5kZWRFeGNlcHRpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChJTm90Qm91bmRlZEV4Y2VwdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsIH5J
Tm90Qm91bmRlZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZp
cnR1YWwKICBjaGFyIGNvbnN0KgogICAgICAgICAgIG5hbWUgICAgICAgICAgICAgKCkgY29uc3Q7
CgogIHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAgICAgICAgKHVuc2lnbmVkIGxvbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoK
cHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSU5vdEJv
dW5kZWRFeGNlcHRpb24gY29uc3QmKTsKCiMgNDI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgp9OwoKY2xhc3MgICBJQ3Vyc29ySW52
YWxpZEV4Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0aW9uCnsKcHVibGljOgoK
ICAgICAgICAgICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAg
ICAgICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklDdXJzb3JJbnZh
bGlkRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgdmlydHVhbAog
IGNoYXIgY29uc3QqCiAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25zdDsKCiAgc3Rh
dGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0
ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJQ3Vyc29ySW52YWxp
ZEV4Y2VwdGlvbiBjb25zdCYpOwoKIyA0NjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKCn07CgpjbGFzcyAgIElQb3NpdGlvbkludmFs
aWRFeGNlcHRpb24gOiBwdWJsaWMgSVByZWNvbmRpdGlvblZpb2xhdGlvbgp7CnB1YmxpYzoKCiAg
ICAgICAgICAgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAg
ICAgICBJUG9zaXRpb25JbnZhbGlkRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsIH5JUG9zaXRp
b25JbnZhbGlkRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgdmly
dHVhbAogIGNoYXIgY29uc3QqCiAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25zdDsK
CiAgc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpw
cm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJUG9zaXRp
b25JbnZhbGlkRXhjZXB0aW9uIGNvbnN0Jik7CgojIDUwOCAiL2hvbWUvYWtub2xsL2lvY3NyYy9s
aW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiCgoKfTsKCmNsYXNzICAgSU5vdENv
bnRhaW5zS2V5RXhjZXB0aW9uIDogcHVibGljIElQcmVjb25kaXRpb25WaW9sYXRpb24KewpwdWJs
aWM6CgogICAgICAgICAgIElOb3RDb250YWluc0tleUV4Y2VwdGlvbgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoK
ICAgICAgICAgICBJTm90Q29udGFpbnNLZXlFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChJTm90Q29udGFpbnNLZXlFeGNlcHRpb24gY29uc3QmKTsKCiAgdmlydHVhbCB+SU5v
dENvbnRhaW5zS2V5RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAg
dmlydHVhbAogIGNoYXIgY29uc3QqCiAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25z
dDsKCiAgc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7
Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJTm90
Q29udGFpbnNLZXlFeGNlcHRpb24gY29uc3QmKTsKCiMgNTQ5ICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgp9OwoKY2xhc3MgICBJS2V5
QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0aW9uCnsK
cHVibGljOgoKICAgICAgICAgICBJS2V5QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFi
bGUpOwoKICAgICAgICAgICBJS2V5QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKElLZXlBbHJlYWR5RXhpc3RzRXhjZXB0aW9uIGNvbnN0Jik7CgogIHZp
cnR1YWwgfklLZXlBbHJlYWR5RXhpc3RzRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoKTsKCiAgdmlydHVhbAogIGNoYXIgY29uc3QqCiAgICAgICAgICAgbmFtZSAgICAgICAg
ICAgICAoKSBjb25zdDsKCiAgc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5z
aWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5z
aWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0g
ICAgICAgIChJS2V5QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbiBjb25zdCYpOwoKIyA1OTAgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKCn07
CgpjbGFzcyAgIElSb290QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0
aW9uVmlvbGF0aW9uCnsKcHVibGljOgoKICAgICAgICAgICBJUm9vdEFscmVhZHlFeGlzdHNFeGNl
cHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgdW5zaWduZWQg
bG9uZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V2ZXJpdHkgPSBJRXhjZXB0
aW9uOjp1bnJlY292ZXJhYmxlKTsKCiAgICAgICAgICAgSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0
aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0
aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklSb290QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwKICBjaGFyIGNvbnN0KgogICAg
ICAgICAgIG5hbWUgICAgICAgICAgICAgKCkgY29uc3Q7CgogIHN0YXRpYwogIHZvaWQgICAgIHRo
cm93SXQgICAgICAgICAgKHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAg
dm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0aW9uIGNv
bnN0Jik7CgojIDYzMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pZXhjLmgiCgoKfTsKCmNsYXNzICAgSUNoaWxkQWxyZWFkeUV4aXN0c0V4Y2VwdGlv
biA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0aW9uCnsKcHVibGljOgoKICAgICAgICAgICBJ
Q2hpbGRBbHJlYWR5RXhpc3RzRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldmVyaXR5ID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSk7CgogICAgICAgICAgIElD
aGlsZEFscmVhZHlFeGlzdHNFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJ
Q2hpbGRBbHJlYWR5RXhpc3RzRXhjZXB0aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklDaGlsZEFs
cmVhZHlFeGlzdHNFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICB2
aXJ0dWFsCiAgY2hhciBjb25zdCoKICAgICAgICAgICBuYW1lICAgICAgICAgICAgICgpIGNvbnN0
OwoKICBzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0ICAgICAgICAgICh1bnNpZ25lZCBsb25nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsK
CnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElDaGls
ZEFscmVhZHlFeGlzdHNFeGNlcHRpb24gY29uc3QmKTsKCiMgNjcyICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgp9OwoKY2xhc3MgICBJ
SWRlbnRpY2FsQ29sbGVjdGlvbkV4Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0
aW9uCnsKcHVibGljOgoKICAgICAgICAgICBJSWRlbnRpY2FsQ29sbGVjdGlvbkV4Y2VwdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0g
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVu
cmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJSWRlbnRpY2FsQ29sbGVjdGlvbkV4Y2VwdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKElJZGVudGljYWxDb2xsZWN0aW9uRXhjZXB0aW9u
IGNvbnN0Jik7CgogIHZpcnR1YWwgfklJZGVudGljYWxDb2xsZWN0aW9uRXhjZXB0aW9uCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgdmlydHVhbAogIGNoYXIgY29uc3QqCiAgICAg
ICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25zdDsKCiAgc3RhdGljCiAgdm9pZCAgICAgdGhy
b3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2
b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJSWRlbnRpY2FsQ29sbGVjdGlvbkV4Y2VwdGlvbiBj
b25zdCYpOwoKIyA3MTMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWV4Yy5oIgoKCn07CgpjbGFzcyAgIElJbnZhbGlkUmVwbGFjZW1lbnRFeGNlcHRp
b24gOiBwdWJsaWMgSVByZWNvbmRpdGlvblZpb2xhdGlvbgp7CnB1YmxpYzoKCiAgICAgICAgICAg
SUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJ
SW52YWxpZFJlcGxhY2VtZW50RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
SUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsIH5JSW52YWxp
ZFJlcGxhY2VtZW50RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAg
dmlydHVhbAogIGNoYXIgY29uc3QqCiAgICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25z
dDsKCiAgc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7
Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJSW52
YWxpZFJlcGxhY2VtZW50RXhjZXB0aW9uIGNvbnN0Jik7CgojIDc1NCAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiCgoKfTsKCmNsYXNzICAg
SUN5Y2xpY0F0dGFjaEV4Y2VwdGlvbiA6IHB1YmxpYyBJUHJlY29uZGl0aW9uVmlvbGF0aW9uCnsK
cHVibGljOgoKICAgICAgICAgICBJQ3ljbGljQXR0YWNoRXhjZXB0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcgPSAwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNldmVyaXR5ID0gSUV4Y2VwdGlvbjo6dW5yZWNvdmVyYWJsZSk7
CgogICAgICAgICAgIElDeWNsaWNBdHRhY2hFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChJQ3ljbGljQXR0YWNoRXhjZXB0aW9uIGNvbnN0Jik7CgogIHZpcnR1YWwgfklDeWNs
aWNBdHRhY2hFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICB2aXJ0
dWFsCiAgY2hhciBjb25zdCoKICAgICAgICAgICBuYW1lICAgICAgICAgICAgICgpIGNvbnN0OwoK
ICBzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0ICAgICAgICAgICh1bnNpZ25lZCBsb25nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnBy
b3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElDeWNsaWNB
dHRhY2hFeGNlcHRpb24gY29uc3QmKTsKCiMgNzk1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgp9OwoKY2xhc3MgICBJT3V0T2ZDb2xs
ZWN0aW9uTWVtb3J5IDogcHVibGljIElPdXRPZk1lbW9yeQp7CnB1YmxpYzoKCiAgICAgICAgICAg
SU91dE9mQ29sbGVjdGlvbk1lbW9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIg
Y29uc3QqLCB1bnNpZ25lZCBsb25nID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZXZlcml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJT3V0T2ZD
b2xsZWN0aW9uTWVtb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU91dE9mQ29sbGVj
dGlvbk1lbW9yeSBjb25zdCYpOwoKICB2aXJ0dWFsIH5JT3V0T2ZDb2xsZWN0aW9uTWVtb3J5CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgdmlydHVhbAogIGNoYXIgY29uc3QqCiAg
ICAgICAgICAgbmFtZSAgICAgICAgICAgICAoKSBjb25zdDsKCiAgc3RhdGljCiAgdm9pZCAgICAg
dGhyb3dJdCAgICAgICAgICAodW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoK
ICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJT3V0T2ZDb2xsZWN0aW9uTWVtb3J5IGNvbnN0
Jik7CgojIDgzNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pZXhjLmgiCgoKfTsKCiMgODgxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lleGMuaCIKCgojIDEwNDcgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKCgpjbGFzcyAgIElTdHJlYW1F
cnJvckV4Y2VwdGlvbiA6IHB1YmxpYyBJRXhjZXB0aW9uCnsKcHVibGljOgoKICAgICAgICAgICBJ
U3RyZWFtRXJyb3JFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNv
bnN0KiwgdW5zaWduZWQgbG9uZyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXZl
cml0eSA9IElFeGNlcHRpb246OnVucmVjb3ZlcmFibGUpOwoKICAgICAgICAgICBJU3RyZWFtRXJy
b3JFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJU3RyZWFtRXJyb3JFeGNl
cHRpb24gY29uc3QmKTsKCiAgdmlydHVhbCAgfklTdHJlYW1FcnJvckV4Y2VwdGlvbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwgIGNoYXIgY29uc3QqIG5hbWUgKCkg
Y29uc3Q7CgogIHN0YXRpYwogIHZvaWQgICAgIHRocm93SXQgICAgICAgICAgKHVuc2lnbmVkIGxv
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxv
bmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgICAgICAgdm9pZCAgICAgb3BlcmF0b3I9ICAg
ICAgICAoSVN0cmVhbUVycm9yRXhjZXB0aW9uIGNvbnN0Jik7CgojIDEwODUgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Yy5oIgoKfTsKCmNsYXNz
ICAgSVN0cmVhbWVySW52YWxpZEV4Y2VwdGlvbiA6IHB1YmxpYyBJRXhjZXB0aW9uCnsKcHVibGlj
OgoKICAgICAgICAgICBJU3RyZWFtZXJJbnZhbGlkRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcgPSAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2V2ZXJpdHkgPSBJRXhjZXB0aW9uOjp1bnJlY292ZXJhYmxlKTsKCiAg
ICAgICAgICAgSVN0cmVhbWVySW52YWxpZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKElTdHJlYW1lckludmFsaWRFeGNlcHRpb24gY29uc3QmKTsKCiAgdmlydHVhbCAgfklT
dHJlYW1lckludmFsaWRFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoK
ICB2aXJ0dWFsICBjaGFyIGNvbnN0KiBuYW1lICgpIGNvbnN0OwoKICBzdGF0aWMKICB2b2lkICAg
ICB0aHJvd0l0ICAgICAgICAgICh1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZhdGU6
CgogICAgICAgIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElTdHJlYW1lckludmFsaWRFeGNl
cHRpb24gY29uc3QmKTsKCiMgMTEyMyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pZXhjLmgiCgp9OwoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKI3By
YWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiAKCiAK
I3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3Rv
cmUpCiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWlleGMuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBv
cnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3Jl
KQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkK
CgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIAogCgogCgpjbGFzcyAgIElGdWxs
RXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBJRnVsbEV4Y2VwdGlvbgp7CnB1YmxpYzoKICAgIHR5cGVk
ZWYgSUZ1bGxFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6CgogICAgICAgICAgIElGdWxs
RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsK
CiAgICAgICAgICAgSUZ1bGxFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcpOwoKICAgICAgICAgICBJRnVsbEV4Y2VwdGlvbkltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChJRnVsbEV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCiAgICAgICAg
ICB+SUZ1bGxFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCnN0
YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAg
b3BlcmF0b3I9ICAgICAgICAoSUZ1bGxFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoKY2xhc3Mg
ICBJRW1wdHlFeGNlcHRpb25JbXBsIDogcHVibGljIElFbXB0eUV4Y2VwdGlvbgp7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgSUVtcHR5RXhjZXB0aW9uIEluaGVyaXRlZElCTTsKcHVibGljOgoKICAgICAg
ICAgICBJRW1wdHlFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hh
ciBjb25zdCopOwoKICAgICAgICAgICBJRW1wdHlFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcpOwoKICAgICAgICAgICBJRW1wdHlFeGNlcHRpb25J
bXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUVtcHR5RXhjZXB0aW9uSW1wbCBjb25z
dCYpOwoKICAgICAgICAgIH5JRW1wdHlFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0
ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUVtcHR5RXhjZXB0aW9uSW1wbCBjb25z
dCYpOwoKfTsKCmNsYXNzICAgSU5vdEVtcHR5RXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBJTm90RW1w
dHlFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0eXBlZGVmIElOb3RFbXB0eUV4Y2VwdGlvbiBJbmhl
cml0ZWRJQk07CnB1YmxpYzoKCiAgICAgICAgICAgSU5vdEVtcHR5RXhjZXB0aW9uSW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSU5vdEVt
cHR5RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3Qq
LCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0Kiwg
dW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
KTsKCiAgICAgICAgICAgSU5vdEVtcHR5RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKElOb3RFbXB0eUV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCiAgICAgICAgICB+SU5v
dEVtcHR5RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgpzdGF0
aWMKICB2b2lkICAgICB0aHJvd0l0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBj
b25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29u
c3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9w
ZXJhdG9yPSAgICAgICAgKElOb3RFbXB0eUV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCn07CgpjbGFz
cyAgIElOb3RCb3VuZGVkRXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBJTm90Qm91bmRlZEV4Y2VwdGlv
bgp7CnB1YmxpYzoKICAgIHR5cGVkZWYgSU5vdEJvdW5kZWRFeGNlcHRpb24gSW5oZXJpdGVkSUJN
OwpwdWJsaWM6CgogICAgICAgICAgIElOb3RCb3VuZGVkRXhjZXB0aW9uSW1wbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSU5vdEJvdW5kZWRF
eGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNo
YXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNp
Z25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcpOwoK
ICAgICAgICAgICBJTm90Qm91bmRlZEV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChJTm90Qm91bmRlZEV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCiAgICAgICAgICB+SU5v
dEJvdW5kZWRFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCnN0
YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAg
b3BlcmF0b3I9ICAgICAgICAoSU5vdEJvdW5kZWRFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoK
Y2xhc3MgICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgSUN1cnNvckludmFs
aWRFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0eXBlZGVmIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9u
IEluaGVyaXRlZElCTTsKcHVibGljOgoKICAgICAgICAgICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlv
bkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0Kik7CgogICAgICAg
ICAgIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nKTsKCiAgICAgICAgICAgSUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBs
IGNvbnN0Jik7CgogICAgICAgICAgfklDdXJzb3JJbnZhbGlkRXhjZXB0aW9uSW1wbAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCk7CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3Rl
Y3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElDdXJzb3JJbnZh
bGlkRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoKfTsKCmNsYXNzICAgSUN1cnNvck5vdEZvclRoaXNF
eGNlcHRpb25JbXBsIDogcHVibGljIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uCnsKcHVibGljOgog
ICAgdHlwZWRlZiBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbiBJbmhlcml0ZWRJQk07CnB1YmxpYzoK
CiAgICAgICAgICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ3Vyc29yTm90Rm9yVGhp
c0V4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0Kiwg
Y2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVu
c2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyk7
CgogICAgICAgICAgIElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoK
ICAgICAgICAgIH5JQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpw
cml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJQ3Vyc29yTm90Rm9yVGhpc0V4
Y2VwdGlvbkltcGwgY29uc3QmKTsKCn07CgpjbGFzcyAgIElDdXJzb3JOb3RGb3JHaXZlbkV4Y2Vw
dGlvbkltcGwgOiBwdWJsaWMgSUN1cnNvckludmFsaWRFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0
eXBlZGVmIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uIEluaGVyaXRlZElCTTsKcHVibGljOgoKICAg
ICAgICAgICBJQ3Vyc29yTm90Rm9yR2l2ZW5FeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ3Vyc29yTm90Rm9yR2l2ZW5F
eGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNo
YXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNp
Z25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcpOwoK
ICAgICAgICAgICBJQ3Vyc29yTm90Rm9yR2l2ZW5FeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoSUN1cnNvck5vdEZvckdpdmVuRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoK
ICAgICAgICAgIH5JQ3Vyc29yTm90Rm9yR2l2ZW5FeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoKTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoK
cHJpdmF0ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUN1cnNvck5vdEZvckdpdmVu
RXhjZXB0aW9uSW1wbCBjb25zdCYpOwoKfTsKCmNsYXNzICAgSUN1cnNvck5vdENvbnRhaW5lZEV4
Y2VwdGlvbkltcGwgOiBwdWJsaWMgSUN1cnNvckludmFsaWRFeGNlcHRpb24KewpwdWJsaWM6CiAg
ICB0eXBlZGVmIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uIEluaGVyaXRlZElCTTsKcHVibGljOgoK
ICAgICAgICAgICBJQ3Vyc29yTm90Q29udGFpbmVkRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSUN1cnNvck5vdENvbnRh
aW5lZEV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0
KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCos
IHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
Zyk7CgogICAgICAgICAgIElDdXJzb3JOb3RDb250YWluZWRFeGNlcHRpb25JbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoSUN1cnNvck5vdENvbnRhaW5lZEV4Y2VwdGlvbkltcGwgY29u
c3QmKTsKCiAgICAgICAgICB+SUN1cnNvck5vdENvbnRhaW5lZEV4Y2VwdGlvbkltcGwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90
ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJQ3Vyc29yTm90
Q29udGFpbmVkRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoKfTsKCmNsYXNzICAgSVBvc2l0aW9uSW52
YWxpZEV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbgp7CnB1
YmxpYzoKICAgIHR5cGVkZWYgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbiBJbmhlcml0ZWRJQk07
CnB1YmxpYzoKCiAgICAgICAgICAgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbkltcGwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0Kik7CgogICAgICAgICAgIElQb3NpdGlv
bkludmFsaWRFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBj
b25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29u
c3QqLCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcpOwoKICAgICAgICAgICBJUG9zaXRpb25JbnZhbGlkRXhjZXB0aW9uSW1wbAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKElQb3NpdGlvbkludmFsaWRFeGNlcHRpb25JbXBsIGNvbnN0
Jik7CgogICAgICAgICAgfklQb3NpdGlvbkludmFsaWRFeGNlcHRpb25JbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoKTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVk
OgoKcHJpdmF0ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSVBvc2l0aW9uSW52YWxp
ZEV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCn07CgpjbGFzcyAgIElOb3RDb250YWluc0tleUV4Y2Vw
dGlvbkltcGwgOiBwdWJsaWMgSU5vdENvbnRhaW5zS2V5RXhjZXB0aW9uCnsKcHVibGljOgogICAg
dHlwZWRlZiBJTm90Q29udGFpbnNLZXlFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6Cgog
ICAgICAgICAgIElOb3RDb250YWluc0tleUV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjaGFyIGNvbnN0Kik7CgogICAgICAgICAgIElOb3RDb250YWluc0tleUV4Y2Vw
dGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBj
b25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVk
IGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyk7CgogICAg
ICAgICAgIElOb3RDb250YWluc0tleUV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChJTm90Q29udGFpbnNLZXlFeGNlcHRpb25JbXBsIGNvbnN0Jik7CgogICAgICAgICAg
fklOb3RDb250YWluc0tleUV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2
b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJTm90Q29udGFpbnNLZXlFeGNlcHRpb25JbXBsIGNv
bnN0Jik7Cgp9OwoKY2xhc3MgICBJS2V5QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbkltcGwgOiBwdWJs
aWMgSUtleUFscmVhZHlFeGlzdHNFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0eXBlZGVmIElLZXlB
bHJlYWR5RXhpc3RzRXhjZXB0aW9uIEluaGVyaXRlZElCTTsKcHVibGljOgoKICAgICAgICAgICBJ
S2V5QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjaGFyIGNvbnN0Kik7CgogICAgICAgICAgIElLZXlBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1w
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKTsKCiAgICAgICAgICAg
SUtleUFscmVhZHlFeGlzdHNFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoSUtleUFscmVhZHlFeGlzdHNFeGNlcHRpb25JbXBsIGNvbnN0Jik7CgogICAgICAgICAgfklL
ZXlBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCk7CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZv
aWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElLZXlBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbCBj
b25zdCYpOwoKfTsKCmNsYXNzICAgSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbCA6IHB1
YmxpYyBJUm9vdEFscmVhZHlFeGlzdHNFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0eXBlZGVmIElS
b290QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbiBJbmhlcml0ZWRJQk07CnB1YmxpYzoKCiAgICAgICAg
ICAgSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0
aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNv
bnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQg
bG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKTsKCiAgICAg
ICAgICAgSVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKElSb290QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbkltcGwgY29uc3QmKTsKCiAgICAg
ICAgICB+SVJvb3RBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCk7CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZh
dGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElSb290QWxyZWFkeUV4aXN0c0V4Y2Vw
dGlvbkltcGwgY29uc3QmKTsKCn07CgpjbGFzcyAgIElDaGlsZEFscmVhZHlFeGlzdHNFeGNlcHRp
b25JbXBsIDogcHVibGljIElDaGlsZEFscmVhZHlFeGlzdHNFeGNlcHRpb24KewpwdWJsaWM6CiAg
ICB0eXBlZGVmIElDaGlsZEFscmVhZHlFeGlzdHNFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJs
aWM6CgogICAgICAgICAgIElDaGlsZEFscmVhZHlFeGlzdHNFeGNlcHRpb25JbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ2hpbGRBbHJl
YWR5RXhpc3RzRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIg
Y29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNv
bnN0KiwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nKTsKCiAgICAgICAgICAgSUNoaWxkQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbkltcGwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChJQ2hpbGRBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1w
bCBjb25zdCYpOwoKICAgICAgICAgIH5JQ2hpbGRBbHJlYWR5RXhpc3RzRXhjZXB0aW9uSW1wbAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsK
CnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElDaGls
ZEFscmVhZHlFeGlzdHNFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoKY2xhc3MgICBJSWRlbnRp
Y2FsQ29sbGVjdGlvbkV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgSUlkZW50aWNhbENvbGxlY3Rpb25F
eGNlcHRpb24KewpwdWJsaWM6CiAgICB0eXBlZGVmIElJZGVudGljYWxDb2xsZWN0aW9uRXhjZXB0
aW9uIEluaGVyaXRlZElCTTsKcHVibGljOgoKICAgICAgICAgICBJSWRlbnRpY2FsQ29sbGVjdGlv
bkV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0Kik7
CgogICAgICAgICAgIElJZGVudGljYWxDb2xsZWN0aW9uRXhjZXB0aW9uSW1wbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKTsKCiAgICAgICAgICAgSUlkZW50aWNhbENv
bGxlY3Rpb25FeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUlkZW50
aWNhbENvbGxlY3Rpb25FeGNlcHRpb25JbXBsIGNvbnN0Jik7CgogICAgICAgICAgfklJZGVudGlj
YWxDb2xsZWN0aW9uRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7
CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQg
ICAgIG9wZXJhdG9yPSAgICAgICAgKElJZGVudGljYWxDb2xsZWN0aW9uRXhjZXB0aW9uSW1wbCBj
b25zdCYpOwoKfTsKCmNsYXNzICAgSUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbkltcGwgOiBw
dWJsaWMgSUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbgp7CnB1YmxpYzoKICAgIHR5cGVkZWYg
SUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbiBJbmhlcml0ZWRJQk07CnB1YmxpYzoKCiAgICAg
ICAgICAgSUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjaGFyIGNvbnN0Kik7CgogICAgICAgICAgIElJbnZhbGlkUmVwbGFjZW1lbnRF
eGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNo
YXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNp
Z25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcpOwoK
ICAgICAgICAgICBJSW52YWxpZFJlcGxhY2VtZW50RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKElJbnZhbGlkUmVwbGFjZW1lbnRFeGNlcHRpb25JbXBsIGNvbnN0Jik7
CgogICAgICAgICAgfklJbnZhbGlkUmVwbGFjZW1lbnRFeGNlcHRpb25JbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoKTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVk
OgoKcHJpdmF0ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUludmFsaWRSZXBsYWNl
bWVudEV4Y2VwdGlvbkltcGwgY29uc3QmKTsKCn07CgpjbGFzcyAgIElDeWNsaWNBdHRhY2hFeGNl
cHRpb25JbXBsIDogcHVibGljIElDeWNsaWNBdHRhY2hFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0
eXBlZGVmIElDeWNsaWNBdHRhY2hFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6CgogICAg
ICAgICAgIElDeWNsaWNBdHRhY2hFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ3ljbGljQXR0YWNoRXhjZXB0aW9uSW1w
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nKTsKCiAgICAgICAgICAg
SUN5Y2xpY0F0dGFjaEV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJ
Q3ljbGljQXR0YWNoRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoKICAgICAgICAgIH5JQ3ljbGljQXR0
YWNoRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgpzdGF0aWMK
ICB2b2lkICAgICB0aHJvd0l0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25z
dCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
LCB1bnNpZ25lZCBsb25nKTsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJh
dG9yPSAgICAgICAgKElDeWNsaWNBdHRhY2hFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoKY2xh
c3MgICBJT3V0T2ZDb2xsZWN0aW9uTWVtb3J5SW1wbCA6IHB1YmxpYyBJT3V0T2ZDb2xsZWN0aW9u
TWVtb3J5CnsKcHVibGljOgogICAgdHlwZWRlZiBJT3V0T2ZDb2xsZWN0aW9uTWVtb3J5IEluaGVy
aXRlZElCTTsKcHVibGljOgoKICAgICAgICAgICBJT3V0T2ZDb2xsZWN0aW9uTWVtb3J5SW1wbAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSU91
dE9mQ29sbGVjdGlvbk1lbW9yeUltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyk7CgogICAgICAgICAgIElPdXRPZkNvbGxlY3Rpb25NZW1vcnlJbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoSU91dE9mQ29sbGVjdGlvbk1lbW9yeUltcGwgY29uc3QmKTsK
CiAgICAgICAgICB+SU91dE9mQ29sbGVjdGlvbk1lbW9yeUltcGwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2
YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJT3V0T2ZDb2xsZWN0aW9uTWVtb3J5
SW1wbCBjb25zdCYpOwoKfTsKCgpjbGFzcyAgIElDb2xsZWN0aW9uUmVzb3VyY2VFeGNlcHRpb25J
bXBsIDogcHVibGljIElDb2xsZWN0aW9uUmVzb3VyY2VFeGNlcHRpb24KewpwdWJsaWM6CiAgICB0
eXBlZGVmIElDb2xsZWN0aW9uUmVzb3VyY2VFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6
CgogICAgICAgICAgIElDb2xsZWN0aW9uUmVzb3VyY2VFeGNlcHRpb25JbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ29sbGVjdGlvblJl
c291cmNlRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29u
c3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0
KiwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nKTsKCiAgICAgICAgICAgSUNvbGxlY3Rpb25SZXNvdXJjZUV4Y2VwdGlvbkltcGwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChJQ29sbGVjdGlvblJlc291cmNlRXhjZXB0aW9uSW1wbCBj
b25zdCYpOwoKICAgICAgICAgIH5JQ29sbGVjdGlvblJlc291cmNlRXhjZXB0aW9uSW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgpzdGF0aWMKICB2b2lkICAgICB0aHJvd0l0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nKTsKCnBy
b3RlY3RlZDoKCnByaXZhdGU6CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElDb2xsZWN0
aW9uUmVzb3VyY2VFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoKY2xhc3MgICBJQ29sbGVjdGlv
bkxvY2tFeGNlcHRpb25JbXBsIDogcHVibGljIElDb2xsZWN0aW9uTG9ja0V4Y2VwdGlvbgp7CnB1
YmxpYzoKICAgIHR5cGVkZWYgSUNvbGxlY3Rpb25Mb2NrRXhjZXB0aW9uIEluaGVyaXRlZElCTTsK
cHVibGljOgoKICAgICAgICAgICBJQ29sbGVjdGlvbkxvY2tFeGNlcHRpb25JbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCopOwoKICAgICAgICAgICBJQ29sbGVjdGlv
bkxvY2tFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25z
dCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
LCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcpOwoKICAgICAgICAgICBJQ29sbGVjdGlvbkxvY2tFeGNlcHRpb25JbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoSUNvbGxlY3Rpb25Mb2NrRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoK
ICAgICAgICAgIH5JQ29sbGVjdGlvbkxvY2tFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoKTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJp
dmF0ZToKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUNvbGxlY3Rpb25Mb2NrRXhjZXB0
aW9uSW1wbCBjb25zdCYpOwoKfTsKCmNsYXNzICAgSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2Vw
dGlvbkltcGwgOiBwdWJsaWMgSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2VwdGlvbgp7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2VwdGlvbiBJbmhlcml0ZWRJ
Qk07CnB1YmxpYzoKCiAgICAgICAgICAgSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2VwdGlvbklt
cGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0Kik7CgogICAgICAgICAg
IElDb2xsZWN0aW9uTG9ja1RpbWVPdXRFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcpOwoKICAgICAgICAgICBJQ29sbGVjdGlvbkxvY2tUaW1lT3V0
RXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElDb2xsZWN0aW9uTG9j
a1RpbWVPdXRFeGNlcHRpb25JbXBsIGNvbnN0Jik7CgogICAgICAgICAgfklDb2xsZWN0aW9uTG9j
a1RpbWVPdXRFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCnN0
YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9pZCAgICAg
b3BlcmF0b3I9ICAgICAgICAoSUNvbGxlY3Rpb25Mb2NrVGltZU91dEV4Y2VwdGlvbkltcGwgY29u
c3QmKTsKCn07CgpjbGFzcyAgIElDb2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uSW1wbCA6IHB1Ymxp
YyBJQ29sbGVjdGlvblVubG9ja0V4Y2VwdGlvbgp7CnB1YmxpYzoKICAgIHR5cGVkZWYgSUNvbGxl
Y3Rpb25VbmxvY2tFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6CgogICAgICAgICAgIElD
b2xsZWN0aW9uVW5sb2NrRXhjZXB0aW9uSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSUNvbGxlY3Rpb25VbmxvY2tFeGNlcHRpb25JbXBs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciBjb25zdCosIGNoYXIgY29uc3QqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcpOwoKICAgICAgICAgICBJ
Q29sbGVjdGlvblVubG9ja0V4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChJQ29sbGVjdGlvblVubG9ja0V4Y2VwdGlvbkltcGwgY29uc3QmKTsKCiAgICAgICAgICB+SUNv
bGxlY3Rpb25VbmxvY2tFeGNlcHRpb25JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KTsKCnN0YXRpYwogIHZvaWQgICAgIHRocm93SXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgdm9p
ZCAgICAgb3BlcmF0b3I9ICAgICAgICAoSUNvbGxlY3Rpb25VbmxvY2tFeGNlcHRpb25JbXBsIGNv
bnN0Jik7Cgp9OwoKCgojIDc5MiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9paWV4Yy5oIgoKCgpjbGFzcyAgIElTdHJlYW1FcnJvckV4Y2VwdGlvbklt
cGwgOiBwdWJsaWMgSVN0cmVhbUVycm9yRXhjZXB0aW9uCnsKcHVibGljOgogICAgdHlwZWRlZiBJ
U3RyZWFtRXJyb3JFeGNlcHRpb24gSW5oZXJpdGVkSUJNOwpwdWJsaWM6CgogICAgICAgICAgIElT
dHJlYW1FcnJvckV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0Kik7CgogICAgICAgICAgIElTdHJlYW1FcnJvckV4Y2VwdGlvbkltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaGFyIGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCosIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyk7CgogICAgICAgICAgIElTdHJlYW1FcnJv
ckV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJU3RyZWFtRXJyb3JF
eGNlcHRpb25JbXBsIGNvbnN0Jik7CgogICAgICAgICAgfklTdHJlYW1FcnJvckV4Y2VwdGlvbklt
cGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhy
b3dJdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9u
Zyk7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJ
U3RyZWFtRXJyb3JFeGNlcHRpb25JbXBsIGNvbnN0Jik7Cgp9OwoKY2xhc3MgICBJU3RyZWFtZXJJ
bnZhbGlkRXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBJU3RyZWFtZXJJbnZhbGlkRXhjZXB0aW9uCnsK
cHVibGljOgogICAgdHlwZWRlZiBJU3RyZWFtZXJJbnZhbGlkRXhjZXB0aW9uIEluaGVyaXRlZElC
TTsKcHVibGljOgoKICAgICAgICAgICBJU3RyZWFtZXJJbnZhbGlkRXhjZXB0aW9uSW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqKTsKCiAgICAgICAgICAgSVN0cmVh
bWVySW52YWxpZEV4Y2VwdGlvbkltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFy
IGNvbnN0KiwgY2hhciBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCosIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyk7CgogICAgICAgICAgIElTdHJlYW1lckludmFsaWRFeGNlcHRpb25JbXBsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoSVN0cmVhbWVySW52YWxpZEV4Y2VwdGlvbkltcGwgY29u
c3QmKTsKCiAgICAgICAgICB+SVN0cmVhbWVySW52YWxpZEV4Y2VwdGlvbkltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgpOwoKc3RhdGljCiAgdm9pZCAgICAgdGhyb3dJdAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiwgdW5zaWduZWQgbG9uZyk7Cgpwcm90ZWN0
ZWQ6Cgpwcml2YXRlOgoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJU3RyZWFtZXJJbnZh
bGlkRXhjZXB0aW9uSW1wbCBjb25zdCYpOwoKfTsKCgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0o
cG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGlu
Zm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCgoK
CgoKCgoKCiAgCiAgCiAgCiAgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiMgMjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlhY2xsY3QuaW5sIiAyCgogCiAKIAoKaW5saW5lCklD
b2xsZWN0aW9uUmVzb3VyY2VJbXBsOjoKfklDb2xsZWN0aW9uUmVzb3VyY2VJbXBsICgpCnsgZGVs
ZXRlIGl2UmVzb3VyY2U7Cn0KCgogCiAKIAoKIAoKaW5saW5lCklDdXJzb3JJbXBsOjoKSUN1cnNv
ckltcGwgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmIGNvbGxlY3Rpb24pCjogaXZDb2xsZWN0aW9u
ICgmY29sbGVjdGlvbikKewp9CgppbmxpbmUKSUN1cnNvckltcGw6Ogp+SUN1cnNvckltcGwgKCkK
ewp9CgppbmxpbmUgdm9pZCBjb25zdCoKSUN1cnNvckltcGw6OgpFbGVtZW50ICgpIGNvbnN0Cnsg
cmV0dXJuIGl2Q29sbGVjdGlvbi0+RWxlbWVudEF0ICgqdGhpcyk7Cn0KCmlubGluZSBib29sCklD
dXJzb3JJbXBsOjoKSXNGb3IgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmIGNvbGxlY3Rpb24pIGNv
bnN0CnsgcmV0dXJuIChpdkNvbGxlY3Rpb24gPT0gJmNvbGxlY3Rpb24pOwp9CgppbmxpbmUgSVBv
c2l0aW9uCklDdXJzb3JJbXBsOjoKUG9zaXRpb24gKCkgY29uc3QKeyByZXR1cm4gaXZDb2xsZWN0
aW9uLT5Qb3NpdGlvbkF0ICgqdGhpcyk7Cn0KCmlubGluZSBib29sCklDdXJzb3JJbXBsOjoKU2V0
VG9GaXJzdCAoKQp7IHJldHVybiBpdkNvbGxlY3Rpb24tPlNldFRvRmlyc3QgKCp0aGlzKTsKfQoK
aW5saW5lIGJvb2wKSUN1cnNvckltcGw6OgpTZXRUb0xhc3QgKCkKeyByZXR1cm4gaXZDb2xsZWN0
aW9uLT5TZXRUb0xhc3QgKCp0aGlzKTsKfQoKaW5saW5lIGJvb2wKSUN1cnNvckltcGw6OgpTZXRU
b05leHQgKCkKeyByZXR1cm4gaXZDb2xsZWN0aW9uLT5TZXRUb05leHQgKCp0aGlzKTsKfQoKaW5s
aW5lIHZvaWQKSUN1cnNvckltcGw6OgpTZXRUb1Bvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRpb24p
CnsgaXZDb2xsZWN0aW9uLT5TZXRUb1Bvc2l0aW9uIChwb3NpdGlvbiwgKnRoaXMpOwp9Cgppbmxp
bmUgYm9vbApJQ3Vyc29ySW1wbDo6ClNldFRvUHJldmlvdXMgKCkKeyByZXR1cm4gaXZDb2xsZWN0
aW9uLT5TZXRUb1ByZXZpb3VzICgqdGhpcyk7Cn0KCmlubGluZSBib29sCklDdXJzb3JJbXBsOjoK
b3BlcmF0b3I9PSAoSUN1cnNvckltcGwgY29uc3QmIGN1cnNvcikgY29uc3QKeyByZXR1cm4gKGl2
Q29sbGVjdGlvbiA9PSBjdXJzb3IuaXZDb2xsZWN0aW9uKTsKfQoKaW5saW5lIGJvb2wKSUN1cnNv
ckltcGw6OgpvcGVyYXRvciE9IChJQ3Vyc29ySW1wbCBjb25zdCYgY3Vyc29yKSBjb25zdAp7IHJl
dHVybiAhIG9wZXJhdG9yPT0gKGN1cnNvcik7Cn0KCiAKCmlubGluZSB2b2lkKgpJQ3Vyc29ySW1w
bDo6CkNoZWNrUG9pbnRlciAodm9pZCogcHRyKQp7IHJldHVybiBJQUNvbGxlY3Rpb25JbXBsOjpD
aGVja1BvaW50ZXIgKHB0cik7Cn0KCiAKIAogCgogCgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb25J
bXBsOjoKQWRkICh2b2lkIGNvbnN0KiBlbGVtZW50KQp7IHJldHVybiBBZGQgKGVsZW1lbnQsICpp
dkR1bW15Q3Vyc29yKTsKfQoKaW5saW5lIHZvaWQKSUFDb2xsZWN0aW9uSW1wbDo6CkFkZEFzRmly
c3QgKHZvaWQgY29uc3QqIGVsZW1lbnQpCnsgQWRkQXNGaXJzdCAoZWxlbWVudCwgQ3Vyc29yT2Yg
KCp0aGlzKSk7Cn0KCmlubGluZSB2b2lkCklBQ29sbGVjdGlvbkltcGw6OgpBZGRBc0xhc3QgKHZv
aWQgY29uc3QqIGVsZW1lbnQpCnsgQWRkQXNMYXN0IChlbGVtZW50LCBDdXJzb3JPZiAoKnRoaXMp
KTsKfQoKaW5saW5lIHZvaWQKSUFDb2xsZWN0aW9uSW1wbDo6CkFkZEF0UG9zaXRpb24gKElQb3Np
dGlvbiBwb3NpdGlvbiwgdm9pZCBjb25zdCogZWxlbWVudCkKeyBBZGRBdFBvc2l0aW9uIChwb3Np
dGlvbiwgZWxlbWVudCwgQ3Vyc29yT2YgKCp0aGlzKSk7Cn0KCmlubGluZSBib29sCklBQ29sbGVj
dGlvbkltcGw6OgpBZGRPclJlcGxhY2VFbGVtZW50V2l0aEtleSAodm9pZCBjb25zdCogZWxlbWVu
dCkKeyByZXR1cm4gQWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkgKGVsZW1lbnQsIEN1cnNvck9m
ICgqdGhpcykpOwp9CgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb25JbXBsOjoKQ29udGFpbnMgKHZv
aWQgY29uc3QqIGVsZW1lbnQpIGNvbnN0CnsgcmV0dXJuIExvY2F0ZSAoZWxlbWVudCwgQ3Vyc29y
T2YgKCp0aGlzKSk7Cn0KCmlubGluZSBib29sCklBQ29sbGVjdGlvbkltcGw6OgpMb2NhdGVPckFk
ZCAodm9pZCBjb25zdCogZWxlbWVudCkKeyByZXR1cm4gTG9jYXRlT3JBZGQgKGVsZW1lbnQsIEN1
cnNvck9mICgqdGhpcykpOwp9CgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb25JbXBsOjoKTG9jYXRl
T3JBZGRFbGVtZW50V2l0aEtleSAodm9pZCBjb25zdCogZWxlbWVudCkKeyByZXR1cm4gTG9jYXRl
T3JBZGRFbGVtZW50V2l0aEtleSAoZWxlbWVudCwgQ3Vyc29yT2YgKCp0aGlzKSk7Cn0KCmlubGlu
ZSBib29sCklBQ29sbGVjdGlvbkltcGw6OgpSZXBsYWNlRWxlbWVudFdpdGhLZXkgKHZvaWQgY29u
c3QqIGVsZW1lbnQpCnsgcmV0dXJuIFJlcGxhY2VFbGVtZW50V2l0aEtleSAoZWxlbWVudCwgQ3Vy
c29yT2YgKCp0aGlzKSk7Cn0KCiAKCmlubGluZQpJQUNvbGxlY3Rpb25JbXBsOjoKSUFDb2xsZWN0
aW9uSW1wbCAoSUFDb2xsZWN0aW9uSW1wbCBjb25zdCYpCnsgIAp9CgppbmxpbmUgSUN1cnNvcklt
cGwmCklBQ29sbGVjdGlvbkltcGw6OgpDdXJzb3JPZiAoSUFDb2xsZWN0aW9uSW1wbCBjb25zdCYg
Y29sbGVjdGlvbikKeyByZXR1cm4gKmNvbGxlY3Rpb24uaXZEdW1teUN1cnNvcjsKfQoKaW5saW5l
IElBQ29sbGVjdGlvbkltcGw6Ok9wcyYKSUFDb2xsZWN0aW9uSW1wbDo6Ck9wc09mIChJQUNvbGxl
Y3Rpb25JbXBsIGNvbnN0JiBjb2xsZWN0aW9uKQp7IHJldHVybiAqY29sbGVjdGlvbi5pdk9wczsK
fQoKIAoKIyA3MzUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWlhY2xsY3QuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBv
cnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyNiAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbWNsbGN0LmgiIDIKCiAKCiAKI3By
YWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JU
X0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5n
KF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoK
CgoKCgoKCiAKCiAKCgoKIAoKIAogCgogCgpjbGFzcyAgIElNZXRhQ29sbGVjdGlvbgp7CnB1Ymxp
YzoKCnByb3RlY3RlZDoKCiAgSUFDb2xsZWN0aW9uSW1wbCoKICAgICAgICAgICBpdkltcGw7Cgog
ICAgICAgICAgIElNZXRhQ29sbGVjdGlvbiAgKCk7CgogICAgICAgICAgIElNZXRhQ29sbGVjdGlv
biAgKElNZXRhQ29sbGVjdGlvbiBjb25zdCYpOwoKICB2aXJ0dWFsICB+SU1ldGFDb2xsZWN0aW9u
ICAoKTsKCiAgc3RhdGljCiAgdm9pZCogICAgQ2hlY2tQb2ludGVyICAgICAodm9pZCopOwoKICB2
b2lkICAgICBDbG9uZUltcGxPZiAgICAgIChJTWV0YUNvbGxlY3Rpb24gY29uc3QmKTsKCiAgc3Rh
dGljCiAgSUFDb2xsZWN0aW9uSW1wbCYKICAgICAgICAgICBJbXBsT2YgICAgICAgICAgIChJTWV0
YUNvbGxlY3Rpb24gY29uc3QmKTsKCiAgdm9pZCAgICAgU2V0SW1wbCAgICAgICAgICAoSUFDb2xs
ZWN0aW9uSW1wbCopOwoKIyAxMDggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaW1jbGxjdC5oIgoKCn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdtYSBl
bnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbWNsbGN0LmlubCIg
MQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiAKIAoKIAoKaW5saW5lCklNZXRh
Q29sbGVjdGlvbjo6CklNZXRhQ29sbGVjdGlvbiAoKQo6IGl2SW1wbCAoMCkKewp9CgppbmxpbmUK
SU1ldGFDb2xsZWN0aW9uOjoKSU1ldGFDb2xsZWN0aW9uIChJTWV0YUNvbGxlY3Rpb24gY29uc3Qm
KQo6IGl2SW1wbCAoMCkKewp9CgppbmxpbmUgdm9pZCoKSU1ldGFDb2xsZWN0aW9uOjoKQ2hlY2tQ
b2ludGVyICh2b2lkKiBwKQp7IHJldHVybiBJQUNvbGxlY3Rpb25JbXBsOjpDaGVja1BvaW50ZXIg
KHApOwp9CgppbmxpbmUgSUFDb2xsZWN0aW9uSW1wbCYKSU1ldGFDb2xsZWN0aW9uOjoKSW1wbE9m
IChJTWV0YUNvbGxlY3Rpb24gY29uc3QmIGNvbGxlY3Rpb24pCnsgcmV0dXJuICooSUFDb2xsZWN0
aW9uSW1wbCopY29sbGVjdGlvbi5pdkltcGw7Cn0KCiAKCiMgMTM3ICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ltY2xsY3QuaCIgMgoKIAoKIAojcHJh
Z21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKIAoKIyAzMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pYmNsbGN0LmgiIDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFscy5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAK
IAogCiAKCiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pY3N0ci5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCgoKIAoK
IAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURF
Ul9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1l
bWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkK
CgoKCgoKCiAKCiAKIAoKIAogCgogCgp0ZW1wbGF0ZSA8IGNsYXNzIEVsZW1lbnQgPgpjbGFzcyBJ
Q29sbGVjdGlvblN0cmVhbWVyIDogcHVibGljIElBQ29sbGVjdGlvblN0cmVhbWVyCnsKcHVibGlj
OgogIElDb2xsZWN0aW9uU3RyZWFtZXIgKCkge307CiAgdmlydHVhbCB+SUNvbGxlY3Rpb25TdHJl
YW1lciAoKSB7fTsKCiAgdmlydHVhbCB2b2lkIHN0cmVhbU91dCAoSURhdGFTdHJlYW0mIHRvV2hl
cmUsIHZvaWQqIGVsZW1lbnQpCiAgeyAqKEVsZW1lbnQqKWVsZW1lbnQgPj49IHRvV2hlcmU7CiAg
fTsKCiAgdmlydHVhbCB2b2lkIHN0cmVhbUluIChJRGF0YVN0cmVhbSYgZnJvbVdoZXJlLCB2b2lk
KiBlbGVtZW50KQogIHsgbmV3IChlbGVtZW50KSBFbGVtZW50ICgpOwogICAgKihFbGVtZW50Kill
bGVtZW50IDw8PSBmcm9tV2hlcmU7CiAgfTsKCn07CgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0o
cG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGlu
Zm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCgog
CgojIDI3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lnbG9iYWxzLmgiIDIKCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2ljb21wYXQuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAK
IAogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKIyAzMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFscy5oIiAyCgojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0ZG9wcy5oIiAxCgoKCiAKIAog
CgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnbG9iYWxzLmgiIDEKIyAzOSAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFscy5oIgoKIyAyNiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3Rkb3Bz
LmgiIDIKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0ZG9wcy5oIiAyCgoKCgoKCiAKCiAKI3ByYWdt
YSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xF
VkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9f
SU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoK
CiAKCiAKIAoKIAogCgogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KRWxlbWVudCYgZWxl
bWVudEZvck9wcyAoRWxlbWVudCYgZSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KRWxlbWVu
dCBjb25zdCYgZWxlbWVudEZvck9wcyAoRWxlbWVudCBjb25zdCYgZSk7CgogCgpjbGFzcyBJU3Rk
TWVtT3BzIHsKcHVibGljOgoKICB2b2lkKiBhbGxvY2F0ZSAgIChzaXplX3QKIAoKCgoKCgoKCiAg
ICAgICAgICAgICAgICAgICApIGNvbnN0OwoKICB2b2lkICBkZWFsbG9jYXRlICh2b2lkKgogCiAK
CgoKCgogICAgICAgICAgICAgICAgICAgKSBjb25zdDsKCn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudE9wcz4KY2xhc3MgSVdTdGRNZW1PcHMgewogIEVsZW1lbnRPcHMgaXZFbGVtZW50T3BzOwpw
dWJsaWM6CgogIHZvaWQqIEFsbG9jYXRlICAgKHNpemVfdAogCgoKCgoKCgoKICAgICAgICAgICAg
ICAgICAgICkgY29uc3Q7CgogIHZvaWQgIERlYWxsb2NhdGUgKHZvaWQqCiAKCgoKCgogICAgICAg
ICAgICAgICAgICAgKSBjb25zdDsKCn07CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xh
c3MgSVN0ZEFzT3BzIHsKcHVibGljOgogIHZvaWQgYXNzaWduIChFbGVtZW50JiwgRWxlbWVudCBj
b25zdCYpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRP
cHM+CmNsYXNzIElXU3RkQXNPcHMgewogIEVsZW1lbnRPcHMgaXZFbGVtZW50T3BzOwpwdWJsaWM6
CiAgdm9pZCBBc3NpZ24gKEVsZW1lbnQmLCBFbGVtZW50IGNvbnN0JikgY29uc3Q7Cn07CgogCgp0
ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSVN0ZEVxT3BzIHsKcHVibGljOgogIGJvb2wg
ZXF1YWwgKEVsZW1lbnQgY29uc3QmLCBFbGVtZW50IGNvbnN0JikgY29uc3Q7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSVdTdGRFcU9wcyB7CiAg
RWxlbWVudE9wcyBpdkVsZW1lbnRPcHM7CnB1YmxpYzoKICBib29sIEVxdWFsIChFbGVtZW50IGNv
bnN0JiwgRWxlbWVudCBjb25zdCYpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xh
c3MgRWxlbWVudE9wcz4KY2xhc3MgSVdTdGRFcUtleU9wcyB7CiAgRWxlbWVudE9wcyBpdkVsZW1l
bnRPcHM7CnB1YmxpYzoKICBib29sIEVxdWFsIChLZXkgY29uc3QmLCBLZXkgY29uc3QmKSBjb25z
dDsKfTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJU3RkQ21wT3BzIHsKcHVi
bGljOgogIGxvbmcgY29tcGFyZSAoRWxlbWVudCBjb25zdCYsIEVsZW1lbnQgY29uc3QmKSBjb25z
dDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJ
V1N0ZENtcE9wcyB7CiAgRWxlbWVudE9wcyBpdkVsZW1lbnRPcHM7CnB1YmxpYzoKICBsb25nIENv
bXBhcmUgKEVsZW1lbnQgY29uc3QmLCBFbGVtZW50IGNvbnN0JikgY29uc3Q7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgS2V5LCBjbGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJV1N0ZENtcEtleU9wcyB7CiAg
RWxlbWVudE9wcyBpdkVsZW1lbnRPcHM7CnB1YmxpYzoKICBsb25nIENvbXBhcmUgKEtleSBjb25z
dCYsIEtleSBjb25zdCYpIGNvbnN0Owp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmNs
YXNzIElTdGRIc2hPcHMgewpwdWJsaWM6CiAgdW5zaWduZWQgbG9uZyBoYXNoIChFbGVtZW50IGNv
bnN0JiwgdW5zaWduZWQgbG9uZykgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwg
Y2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSVdTdGRIc2hPcHMgewogIEVsZW1lbnRPcHMgaXZFbGVt
ZW50T3BzOwpwdWJsaWM6CiAgdW5zaWduZWQgbG9uZyBIYXNoIChFbGVtZW50IGNvbnN0JiwgdW5z
aWduZWQgbG9uZykgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBFbGVtZW50
T3BzPgpjbGFzcyBJV1N0ZEhzaEtleU9wcyB7CiAgRWxlbWVudE9wcyBpdkVsZW1lbnRPcHM7CnB1
YmxpYzoKICB1bnNpZ25lZCBsb25nIEhhc2ggKEtleSBjb25zdCYsIHVuc2lnbmVkIGxvbmcpIGNv
bnN0Owp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KY2xhc3MgSVN0
ZEtleU9wcyB7CnB1YmxpYzoKICBLZXkgY29uc3QmIGtleSAoRWxlbWVudCBjb25zdCYpIGNvbnN0
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIF9LZXksIGNsYXNzIEVsZW1lbnRP
cHM+CmNsYXNzIElXU3RkS2V5T3BzIHsKICBFbGVtZW50T3BzIGl2RWxlbWVudE9wczsKcHVibGlj
OgogIF9LZXkgY29uc3QmIEtleSAoRWxlbWVudCBjb25zdCYpIGNvbnN0Owp9OwoKIAoKdGVtcGxh
dGUgPGNsYXNzIEVsZW1lbnQ+CmNsYXNzIElTdGRPcHMgOiBwdWJsaWMgSVN0ZE1lbU9wcywKICAg
ICAgICAgICAgICAgIHB1YmxpYyBJU3RkQXNPcHMgPEVsZW1lbnQ+IHsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJV1N0ZE9wcyA6CiAgcHVibGlj
IElXU3RkTWVtT3BzIDxFbGVtZW50T3BzPiwKICBwdWJsaWMgSVdTdGRBc09wcyA8RWxlbWVudCwg
RWxlbWVudE9wcz4gewpwdWJsaWM6CiAgSVdTdGRPcHMgKHZvaWQqID0gMCkge30KfTsKCnRlbXBs
YXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJRU9wcyA6IHB1YmxpYyBJU3RkT3BzIDxFbGVtZW50
PiwKICAgICAgICAgICAgICBwdWJsaWMgSVN0ZEVxT3BzIDxFbGVtZW50PiB7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSVdFT3BzIDoKICBwdWJs
aWMgSVdTdGRPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHM+LAogIHB1YmxpYyBJV1N0ZEVxT3BzIDxF
bGVtZW50LCBFbGVtZW50T3BzPiB7CnB1YmxpYzoKICBJV0VPcHMgKHZvaWQqID0gMCkge30KfTsK
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJQ09wcyA6IHB1YmxpYyBJU3RkT3BzIDxF
bGVtZW50PiwKICAgICAgICAgICAgICBwdWJsaWMgSVN0ZENtcE9wcyA8RWxlbWVudD4gewp9OwoK
dGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHM+CmNsYXNzIElXQ09wcyA6
CiAgcHVibGljIElXU3RkT3BzIDxFbGVtZW50LCBFbGVtZW50T3BzPiwKICBwdWJsaWMgSVdTdGRD
bXBPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHM+IHsKcHVibGljOgogIElXQ09wcyAodm9pZCogPSAw
KSB7fQp9OwoKIAp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSUVDT3BzIDogcHVibGlj
IElFT3BzIDxFbGVtZW50PiwKICAgICAgICAgICAgICAgcHVibGljIElTdGRDbXBPcHMgPEVsZW1l
bnQ+IHsKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJRUhPcHMgOiBwdWJsaWMg
SUVPcHMgPEVsZW1lbnQ+LAogICAgICAgICAgICAgICBwdWJsaWMgSVN0ZEhzaE9wcyA8RWxlbWVu
dD4gewp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHM+CmNsYXNz
IElXRUhPcHMgOgogIHB1YmxpYyBJV0VPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHM+LAogIHB1Ymxp
YyBJV1N0ZEhzaE9wcyA8RWxlbWVudCwgRWxlbWVudE9wcz4gewpwdWJsaWM6CiAgSVdFSE9wcyAo
dm9pZCogPSAwKSB7fQp9OwoKdGVtcGxhdGUgPGNsYXNzIEtleT4KY2xhc3MgSUtDS2V5T3BzIDog
cHVibGljIElTdGRDbXBPcHMgPEtleT4gewp9OwoKdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3Mg
RWxlbWVudE9wcz4KY2xhc3MgSVdLQ0tleU9wcyA6CiAgcHVibGljIElXU3RkQ21wS2V5T3BzIDxL
ZXksIEVsZW1lbnRPcHM+IHsKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+
CmNsYXNzIElLQ09wcyA6IHB1YmxpYyBJU3RkT3BzIDxFbGVtZW50PiwKICAgICAgICAgICAgICAg
cHVibGljIElTdGRLZXlPcHMgPEVsZW1lbnQsIEtleT4gewpwdWJsaWM6CiAgSUtDS2V5T3BzIDxL
ZXk+IGtleU9wczsKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBfS2V5LCBjbGFz
cyBFbGVtZW50T3BzPgpjbGFzcyBJV0tDT3BzIDoKICBwdWJsaWMgSVdTdGRPcHMgPEVsZW1lbnQs
IEVsZW1lbnRPcHM+LAogIHB1YmxpYyBJV1N0ZEtleU9wcyA8RWxlbWVudCwgX0tleSwgRWxlbWVu
dE9wcz4gewpwdWJsaWM6CiAgSVdLQ0tleU9wcyA8X0tleSwgRWxlbWVudE9wcz4ga2V5T3BzOwog
IElXS0NPcHMgKHZvaWQqID0gMCkge307Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgpjbGFzcyBJ
S0VIS2V5T3BzIDogcHVibGljIElTdGRFcU9wcyA8S2V5PiwKICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBJU3RkSHNoT3BzIDxLZXk+IHsKfTsKCnRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIEVs
ZW1lbnRPcHM+CmNsYXNzIElXS0VIS2V5T3BzIDoKICBwdWJsaWMgSVdTdGRFcUtleU9wcyA8S2V5
LCBFbGVtZW50T3BzPiwKICBwdWJsaWMgSVdTdGRIc2hLZXlPcHMgPEtleSwgRWxlbWVudE9wcz4g
ewpwdWJsaWM6Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgpjbGFzcyBJ
S0VIT3BzIDogcHVibGljIElTdGRPcHMgPEVsZW1lbnQ+LAogICAgICAgICAgICAgICAgcHVibGlj
IElTdGRLZXlPcHMgPEVsZW1lbnQsIEtleT4gewpwdWJsaWM6CiAgSUtFSEtleU9wcyA8S2V5PiBr
ZXlPcHM7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgX0tleSwgY2xhc3MgRWxl
bWVudE9wcz4KY2xhc3MgSVdLRUhPcHMgOgogIHB1YmxpYyBJV1N0ZE9wcyA8RWxlbWVudCwgRWxl
bWVudE9wcz4sCiAgcHVibGljIElXU3RkS2V5T3BzIDxFbGVtZW50LCBfS2V5LCBFbGVtZW50T3Bz
PiB7CnB1YmxpYzoKICBJV0tFSEtleU9wcyA8X0tleSwgRWxlbWVudE9wcz4ga2V5T3BzOwogIElX
S0VIT3BzICh2b2lkKiA9IDApIHt9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgS2V5PgpjbGFzcyBJRUtD
S2V5T3BzIDogcHVibGljIElTdGRDbXBPcHMgPEtleT4gewp9OwoKdGVtcGxhdGUgPGNsYXNzIEtl
eSwgY2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSVdFS0NLZXlPcHMgOgogIHB1YmxpYyBJV1N0ZENt
cEtleU9wcyA8S2V5LCBFbGVtZW50T3BzPiB7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwg
Y2xhc3MgS2V5PgpjbGFzcyBJRUtDT3BzIDogcHVibGljIElFT3BzIDxFbGVtZW50PiwKICAgICAg
ICAgICAgICAgIHB1YmxpYyBJU3RkS2V5T3BzIDxFbGVtZW50LCBLZXk+IHsKcHVibGljOgogIElF
S0NLZXlPcHMgPEtleT4ga2V5T3BzOwp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNz
IF9LZXksIGNsYXNzIEVsZW1lbnRPcHM+CmNsYXNzIElXRUtDT3BzIDoKICBwdWJsaWMgSVdFT3Bz
IDxFbGVtZW50LCBFbGVtZW50T3BzPiwKICBwdWJsaWMgSVdTdGRLZXlPcHMgPEVsZW1lbnQsIF9L
ZXksIEVsZW1lbnRPcHM+IHsKcHVibGljOgogIElXRUtDS2V5T3BzIDxfS2V5LCBFbGVtZW50T3Bz
PiBrZXlPcHM7CiAgSVdFS0NPcHMgKHZvaWQqID0gMCkge30KfTsKCnRlbXBsYXRlIDxjbGFzcyBL
ZXk+CmNsYXNzIElFS0VIS2V5T3BzIDogcHVibGljIElTdGRFcU9wcyA8S2V5PiwKICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgSVN0ZEhzaE9wcyA8S2V5PiB7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
S2V5LCBjbGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJV0VLRUhLZXlPcHMgOgogIHB1YmxpYyBJV1N0
ZEVxS2V5T3BzIDxLZXksIEVsZW1lbnRPcHM+LAogIHB1YmxpYyBJV1N0ZEhzaEtleU9wcyA8S2V5
LCBFbGVtZW50T3BzPiB7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5Pgpj
bGFzcyBJRUtFSE9wcyA6IHB1YmxpYyBJRU9wcyA8RWxlbWVudD4sCiAgICAgICAgICAgICAgICAg
cHVibGljIElTdGRLZXlPcHMgPEVsZW1lbnQsIEtleT4gewpwdWJsaWM6CiAgSUVLRUhLZXlPcHMg
PEtleT4ga2V5T3BzOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBfS2V5LCBj
bGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJV0VLRUhPcHMgOgogIHB1YmxpYyBJV0VPcHMgPEVsZW1l
bnQsIEVsZW1lbnRPcHM+LAogIHB1YmxpYyBJV1N0ZEtleU9wcyA8RWxlbWVudCwgX0tleSwgRWxl
bWVudE9wcz4gewpwdWJsaWM6CiAgSVdFS0VIS2V5T3BzIDxfS2V5LCBFbGVtZW50T3BzPiBrZXlP
cHM7CiAgSVdFS0VIT3BzICh2b2lkKiA9IDApIHt9Cn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdt
YSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3Rkb3BzLmlu
bCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgoKCiAKIAogCgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQmIGVsZW1lbnRGb3JPcHMgKEVsZW1lbnQmIGUp
CnsgcmV0dXJuIGU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBj
b25zdCYgZWxlbWVudEZvck9wcyAoRWxlbWVudCBjb25zdCYgZSkKeyByZXR1cm4gZTsKfQoKIAog
CiAKCmlubGluZSB2b2lkKgpJU3RkTWVtT3BzOjoKYWxsb2NhdGUgKHNpemVfdCBzCiAKCgoKCgoK
CgogICAgICAgICApIGNvbnN0CnsKIyA3MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9pc3Rkb3BzLmlubCIKCiAgICByZXR1cm4gOjpvcGVyYXRvciBu
ZXcgKHMKIAoKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKfQoKaW5saW5lIHZv
aWQKSVN0ZE1lbU9wczo6CmRlYWxsb2NhdGUgKHZvaWQqIHAKIAoKCgoKCiAgICAgICAgICAgKSBj
b25zdAp7IDo6b3BlcmF0b3IgZGVsZXRlIChwCiAKCgoKCgogICAgICAgICAgICAgICAgICAgICk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUgdm9pZCoKSVdTdGRNZW1PcHMg
PEVsZW1lbnRPcHM+OjoKQWxsb2NhdGUgKHNpemVfdCBzCiAKCgoKCgoKCgogICAgICAgICApIGNv
bnN0CnsgcmV0dXJuIGl2RWxlbWVudE9wcy5hbGxvY2F0ZSAocwogCgoKCgoKCgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50T3BzPgpp
bmxpbmUgdm9pZApJV1N0ZE1lbU9wcyA8RWxlbWVudE9wcz46OgpEZWFsbG9jYXRlICh2b2lkKiBw
CiAKCgoKCgogICAgICAgICAgICkgY29uc3QKeyBpdkVsZW1lbnRPcHMuZGVhbGxvY2F0ZSAocAog
CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICApOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSB2b2lkCmFzc2lnbiAoRWxlbWVudCYgZTEsIEVsZW1lbnQgY29u
c3QmIGUyKQp7IGUxID0gZTI7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUg
dm9pZApJU3RkQXNPcHMgPEVsZW1lbnQ+OjoKYXNzaWduIChFbGVtZW50JiBlMSwgRWxlbWVudCBj
b25zdCYgZTIpIGNvbnN0CnsgOjphc3NpZ24gKGUxLCBlMik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBF
bGVtZW50LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUgdm9pZApJV1N0ZEFzT3BzIDxFbGVtZW50
LCBFbGVtZW50T3BzPjo6CkFzc2lnbiAoRWxlbWVudCYgZTEsIEVsZW1lbnQgY29uc3QmIGUyKSBj
b25zdAp7IGl2RWxlbWVudE9wcy5hc3NpZ24gKGUxLCBlMik7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudD4KaW5saW5lIGJvb2wKZXF1YWwgKEVsZW1lbnQgY29uc3QmIGUxLCBFbGVt
ZW50IGNvbnN0JiBlMikKeyByZXR1cm4gKGUxID09IGUyKTsKfQoKaW5saW5lIGJvb2wKZXF1YWwg
KGNoYXIgY29uc3QqIGUxLCBjaGFyIGNvbnN0KiBlMikKeyByZXR1cm4gKHN0cmNtcCAoZTEsIGUy
KSA9PSAwKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklTdGRF
cU9wcyA8RWxlbWVudD46OgplcXVhbCAoRWxlbWVudCBjb25zdCYgZTEsIEVsZW1lbnQgY29uc3Qm
IGUyKSBjb25zdAp7IHJldHVybiA6OmVxdWFsIChlbGVtZW50Rm9yT3BzIChlMSksIGVsZW1lbnRG
b3JPcHMgKGUyKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3Bz
PgppbmxpbmUgYm9vbApJV1N0ZEVxT3BzIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6CkVxdWFsIChF
bGVtZW50IGNvbnN0JiBlMSwgRWxlbWVudCBjb25zdCYgZTIpIGNvbnN0CnsgcmV0dXJuIGl2RWxl
bWVudE9wcy5lcXVhbCAoZTEsIGUyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgRWxl
bWVudE9wcz4KaW5saW5lIGJvb2wKSVdTdGRFcUtleU9wcyA8S2V5LCBFbGVtZW50T3BzPjo6CkVx
dWFsIChLZXkgY29uc3QmIGsxLCBLZXkgY29uc3QmIGsyKSBjb25zdAp7IHJldHVybiBpdkVsZW1l
bnRPcHMua2V5T3BzLmVxdWFsIChrMSwgazIpOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQ+CmlubGluZSBsb25nCmNvbXBhcmUgKEVsZW1lbnQgY29uc3QmIGUxLCBFbGVtZW50IGNv
bnN0JiBlMikKeyBpZiAgICAgIChlMSA8IGUyKSByZXR1cm4gLTE7CiAgZWxzZSBpZiAoZTIgPCBl
MSkgcmV0dXJuICAxOwogIGVsc2UgICAgICAgICAgICAgIHJldHVybiAgMDsKfQoKaW5saW5lIGxv
bmcKY29tcGFyZSAoaW50IGUxLCBpbnQgZTIpCnsgcmV0dXJuIChlMSAtIGUyKTsKfQoKaW5saW5l
IGxvbmcKY29tcGFyZSAoY2hhciBjb25zdCogZTEsIGNoYXIgY29uc3QqIGUyKQp7IHJldHVybiBz
dHJjbXAgKGUxLCBlMik7Cn0KCmlubGluZSBsb25nCmNvbXBhcmUgKGNoYXIqIGNvbnN0IGUxLCBj
aGFyKiBjb25zdCBlMikKewogIHJldHVybiBzdHJjbXAgKGUxLCBlMik7Cn0KCgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIGxvbmcKSVN0ZENtcE9wcyA8RWxlbWVudD46Ogpjb21w
YXJlIChFbGVtZW50IGNvbnN0JiBlMSwgRWxlbWVudCBjb25zdCYgZTIpIGNvbnN0CnsgcmV0dXJu
IDo6Y29tcGFyZSAoZWxlbWVudEZvck9wcyAoZTEpLCBlbGVtZW50Rm9yT3BzIChlMikpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9wcz4KaW5saW5lIGxvbmcKSVdT
dGRDbXBPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHM+OjoKQ29tcGFyZSAoRWxlbWVudCBjb25zdCYg
ZTEsIEVsZW1lbnQgY29uc3QmIGUyKSBjb25zdAp7IHJldHVybiBpdkVsZW1lbnRPcHMuY29tcGFy
ZSAoZTEsIGUyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgRWxlbWVudE9wcz4KaW5s
aW5lIGxvbmcKSVdTdGRDbXBLZXlPcHMgPEtleSwgRWxlbWVudE9wcz46OgpDb21wYXJlIChLZXkg
Y29uc3QmIGsxLCBLZXkgY29uc3QmIGsyKSBjb25zdAp7IHJldHVybiBpdkVsZW1lbnRPcHMua2V5
T3BzLmNvbXBhcmUgKGsxLCBrMik7Cn0KCiAKIAogCgppbmxpbmUgdW5zaWduZWQgbG9uZwpoYXNo
IChpbnQgZSwgdW5zaWduZWQgbG9uZyBoKQp7IHJldHVybiBlICUgaDsKfQoKaW5saW5lIHVuc2ln
bmVkIGxvbmcKaGFzaCAoY2hhciBjb25zdCogcywgdW5zaWduZWQgbG9uZyBoKQp7IHVuc2lnbmVk
IGxvbmcgaGFzaFZhbHVlID0gMCwgZzsKICBmb3IgKGNoYXIqIHAgPSAoY2hhciopczsgKnAgIT0g
J1wwJzsgcCsrKSB7CiAgICBoYXNoVmFsdWUgPSAoaGFzaFZhbHVlIDw8IDQpICsgKnA7CgogICAg
aWYgKChnID0gaGFzaFZhbHVlICYgMHhmMDAwMDAwMEwpICE9IDApIHsKICAgICAgaGFzaFZhbHVl
IF49IChnID4+IDI0KTsKCgoKCgoKICAgICAgaGFzaFZhbHVlIF49IGc7CiAgICB9CiAgfQogIHJl
dHVybiBoYXNoVmFsdWUgJSBoOwp9ICAKICAgCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4K
aW5saW5lIHVuc2lnbmVkIGxvbmcKSVN0ZEhzaE9wcyA8RWxlbWVudD46OgpoYXNoIChFbGVtZW50
IGNvbnN0JiBlLCB1bnNpZ25lZCBsb25nIGgpIGNvbnN0CnsgcmV0dXJuIDo6aGFzaCAoZWxlbWVu
dEZvck9wcyAoZSksIGgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVu
dE9wcz4KaW5saW5lIHVuc2lnbmVkIGxvbmcKSVdTdGRIc2hPcHMgPEVsZW1lbnQsIEVsZW1lbnRP
cHM+OjoKSGFzaCAoRWxlbWVudCBjb25zdCYgZSwgdW5zaWduZWQgbG9uZyBoKSBjb25zdAp7IHJl
dHVybiBpdkVsZW1lbnRPcHMuaGFzaCAoZSwgaCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBLZXksIGNs
YXNzIEVsZW1lbnRPcHM+CmlubGluZSB1bnNpZ25lZCBsb25nCklXU3RkSHNoS2V5T3BzIDxLZXks
IEVsZW1lbnRPcHM+OjoKSGFzaCAoS2V5IGNvbnN0JiBrLCB1bnNpZ25lZCBsb25nIGgpIGNvbnN0
CnsgcmV0dXJuIGl2RWxlbWVudE9wcy5rZXlPcHMuaGFzaCAoaywgaCk7Cn0KCiAKIAogCgogCgoK
dGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIF9LZXk+IF9LZXkgY29uc3QmIGtleShFbGVt
ZW50IGNvbnN0JiBlbGVtZW50KTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgX0tl
eT4KaW5saW5lIF9LZXkgY29uc3QmCklTdGRLZXlPcHMgPEVsZW1lbnQsIF9LZXk+OjoKa2V5IChF
bGVtZW50IGNvbnN0JiBlKSBjb25zdAp7IHJldHVybiA6OmtleSAoZWxlbWVudEZvck9wcyAoZSkp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgX0tleSwgY2xhc3MgRWxlbWVudE9w
cz4KaW5saW5lIF9LZXkgY29uc3QmCklXU3RkS2V5T3BzIDxFbGVtZW50LCBfS2V5LCBFbGVtZW50
T3BzPjo6CktleSAoRWxlbWVudCBjb25zdCYgZSkgY29uc3QKeyByZXR1cm4gaXZFbGVtZW50T3Bz
LmtleSAoZSk7Cn0KCiAKCiMgNDI1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lzdGRvcHMuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3By
YWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCgogCgojIDMxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnbG9iYWxzLmgi
IDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9paXRlci5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhcHBsLmgiIDEK
CgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWdsb2JhbHMuaCIgMQojIDM5ICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnbG9iYWxzLmgi
CgojIDI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lhcHBsLmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVs
LCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAK
CiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3By
YWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KY2xhc3MgSUFwcGxpY2F0b3IKewpwdWJsaWM6CgogIHZpcnR1YWwKICBib29s
IGFwcGx5VG8gICAgICAgICAgKEVsZW1lbnQmKSA9IDA7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoK
CgoKCgoKCgp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmNsYXNzIElDb25zdGFudEFwcGxp
Y2F0b3IKewpwdWJsaWM6CgogIHZpcnR1YWwKICBib29sIGFwcGx5VG8gICAgICAgICAgKEVsZW1l
bnQgY29uc3QmKSA9IDA7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKCgoKCgoKCgp9OwoKY2xhc3Mg
SUludGVybmFsQXBwbGljYXRvcgp7CnB1YmxpYzoKCiAgdmlydHVhbAogIGJvb2wgYXBwbHlUbyAg
ICAgICAgICAodm9pZCopCiAgICAgICAgICAgeyByZXR1cm4gdHJ1ZTsKICAgICAgICAgICB9Cgpw
cm90ZWN0ZWQ6Cgpwcml2YXRlOgoKCgoKCgoKCgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFnbWEg
ZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAoKaW5saW5lIGJv
b2wKX19hcHBsRnVuYyAodm9pZCogZWxlbWVudCwgdm9pZCogYXBwbGljYXRvcikKewoKCgogIHJl
dHVybiAoKElJbnRlcm5hbEFwcGxpY2F0b3IqKWFwcGxpY2F0b3IpLT5hcHBseVRvIChlbGVtZW50
KTsKfQogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEg
aW5mbyhyZXN0b3JlKQogCgogCgojIDI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpdGVyLmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNw
cmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElO
R19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAog
CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSUl0ZXJhdG9yIDogcHVibGljIElB
cHBsaWNhdG9yIDxFbGVtZW50Pgp7CgoKCgoKCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
PgpjbGFzcyBJQ29uc3RhbnRJdGVyYXRvciA6IHB1YmxpYyBJQ29uc3RhbnRBcHBsaWNhdG9yIDxF
bGVtZW50Pgp7CgoKCgoKCgoKfTsKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoK
CiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9u
ZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzMiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFs
cy5oIiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaXB0ci5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnbG9iYWxz
LmgiIDEKIyAzOSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pZ2xvYmFscy5oIgoKIyAyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pcHRyLmgiIDIKCgoKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQoj
cHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBp
bmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJ
TkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKCgoKCgoKCgogCgogCmVudW0g
SUV4cGxpY2l0SW5pdAp7CiAgICBJSU5JVAp9OwogCgogCnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFz
cyBJRWxlbVBvaW50ZXI7CnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBJTW5nRWxlbVBvaW50ZXI7
CnRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBJQXV0b0VsZW1Qb2ludGVyOwp0ZW1wbGF0ZSA8Y2xh
c3MgVD4gaW5saW5lIFQmIGVsZW1lbnRGb3JPcHMoSUVsZW1Qb2ludGVyIDxUPiYpOwp0ZW1wbGF0
ZSA8Y2xhc3MgVD4gaW5saW5lIFQgY29uc3QmIGVsZW1lbnRGb3JPcHMoSUVsZW1Qb2ludGVyIDxU
PiBjb25zdCYpIDsKdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBUJiBlbGVtZW50Rm9yT3BzKElN
bmdFbGVtUG9pbnRlciA8VD4mKTsKdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBUIGNvbnN0JiBl
bGVtZW50Rm9yT3BzKElNbmdFbGVtUG9pbnRlciA8VD4gY29uc3QmKTsKdGVtcGxhdGUgPGNsYXNz
IFQ+IGlubGluZSBUJiBlbGVtZW50Rm9yT3BzKElBdXRvRWxlbVBvaW50ZXIgPFQ+Jik7CnRlbXBs
YXRlIDxjbGFzcyBUPiBpbmxpbmUgVCBjb25zdCYgZWxlbWVudEZvck9wcyhJQXV0b0VsZW1Qb2lu
dGVyIDxUPiBjb25zdCYpOwogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSUVs
ZW1Qb2ludGVyCnsKcHVibGljOgoKICAgICAgICAgICBJRWxlbVBvaW50ZXIgICAgICgpOwoKICAg
ICAgICAgICBJRWxlbVBvaW50ZXIgICAgIChFbGVtZW50KiwgSUV4cGxpY2l0SW5pdCA9IElJTklU
KTsKCiAgRWxlbWVudCYgb3BlcmF0b3IqICAgICAgICAoKSBjb25zdDsKCiAgRWxlbWVudCogb3Bl
cmF0b3ItPiAgICAgICAoKSBjb25zdDsKCiAgICAgICAgICAgb3BlcmF0b3IgRWxlbWVudCoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgpIGNvbnN0OwogIGZyaWVuZCBFbGVtZW50JiBlbGVt
ZW50Rm9yT3BzCgogICAgICAgIDxFbGVtZW50PgoKCQkoSUVsZW1Qb2ludGVyIDxFbGVtZW50PiYp
OwoKICBmcmllbmQgRWxlbWVudCBjb25zdCYgZWxlbWVudEZvck9wcwoKICAgICAgICA8RWxlbWVu
dD4KCiAJCShJRWxlbVBvaW50ZXIgPEVsZW1lbnQ+IGNvbnN0JikgOwpwcm90ZWN0ZWQ6Cgpwcml2
YXRlOgoKICBFbGVtZW50KiBpdlB0cjsKCiMgMTI4ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lwdHIuaCIKCgp9OwoKIyAxNDAgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXB0ci5oIgoKCnRlbXBsYXRl
IDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJTW5nUG9pbnRlciB7CnB1YmxpYzoKCiAgICAgICAgICAg
SU1uZ1BvaW50ZXIgICAgICAoKTsKCiAgICAgICAgICAgSU1uZ1BvaW50ZXIgICAgICAoRWxlbWVu
dCosIElFeHBsaWNpdEluaXQpOwoKICAgICAgICAgICBJTW5nUG9pbnRlciAgICAgIChJTW5nUG9p
bnRlciA8RWxlbWVudD4gY29uc3QmKTsKCiAgICAgICAgICB+SU1uZ1BvaW50ZXIgICAgICAoKTsK
CiAgSU1uZ1BvaW50ZXIgPEVsZW1lbnQ+JgogICAgICAgICAgIG9wZXJhdG9yPSAgICAgICAgKElN
bmdQb2ludGVyIDxFbGVtZW50PiBjb25zdCYpOwoKICBFbGVtZW50JiBvcGVyYXRvciogICAgICAg
ICgpIGNvbnN0OwoKICBFbGVtZW50KiBvcGVyYXRvci0+ICAgICAgICgpIGNvbnN0OwoKICAgICAg
ICAgICBvcGVyYXRvciBFbGVtZW50KiAoKSBjb25zdDsKCiMgMTc2ICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lwdHIuaCIKCgpwcml2YXRlOgoKICBz
dHJ1Y3QgUHRyUmMKICB7IEVsZW1lbnQgKml2UHRyOwoKICAgIHVuc2lnbmVkIGludCBpdlJjOwoK
ICAgICAgICAgICAgIFB0clJjIChFbGVtZW50ICpwdHIpCiAgICAgICAgICAgICA6IGl2UHRyIChw
dHIpLCBpdlJjICgxKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQoKICAgICAgICAgICAg
flB0clJjICgpCiAgICAgICAgICAgICB7IGRlbGV0ZSBpdlB0cjsgfQoKICB9ICppdlB0clJjOwoK
IyAyMDYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aXB0ci5oIgoKCn07CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmNsYXNzIElTdHJlYW1hYmxl
UG9pbnRlciB7CnB1YmxpYzoKCiAgICAgICAgICAgSVN0cmVhbWFibGVQb2ludGVyICAgICAgKCk7
CgogICAgICAgICAgIElTdHJlYW1hYmxlUG9pbnRlciAgICAgIChFbGVtZW50KiwgSUV4cGxpY2l0
SW5pdCk7CgogICAgICAgICAgIElTdHJlYW1hYmxlUG9pbnRlciAgICAgIChJU3RyZWFtYWJsZVBv
aW50ZXIgPEVsZW1lbnQ+IGNvbnN0Jik7CgogICAgICAgICAgfklTdHJlYW1hYmxlUG9pbnRlciAg
ICAgICgpOwoKICBJU3RyZWFtYWJsZVBvaW50ZXIgPEVsZW1lbnQ+JgogICAgICAgICAgIG9wZXJh
dG9yPSAgICAgICAgKElTdHJlYW1hYmxlUG9pbnRlciA8RWxlbWVudD4gY29uc3QmKTsKCiAgRWxl
bWVudCYgb3BlcmF0b3IqICAgICAgICAoKSBjb25zdDsKCiAgRWxlbWVudCogb3BlcmF0b3ItPiAg
ICAgICAoKSBjb25zdDsKCiAgICAgICAgICAgb3BlcmF0b3IgRWxlbWVudCogKCkgY29uc3Q7Cgpw
cml2YXRlOgoKICBzdHJ1Y3QgUHRyUmMKICB7IEVsZW1lbnQgKml2UHRyOwoKICAgIHVuc2lnbmVk
IGludCBpdlJjOwoKICAgICAgICAgICAgIFB0clJjIChFbGVtZW50ICpwdHIpCiAgICAgICAgICAg
ICA6IGl2UHRyIChwdHIpLCBpdlJjICgxKQogICAgICAgICAgICAgewogICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgflB0clJjICgpCiAgICAgICAgICAgICB7IGRlbGV0ZSBpdlB0cjsgfQoKICB9
ICppdlB0clJjOwoKIyAyNjAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaXB0ci5oIgoKCn07CgpjbGFzcyBJRGF0YVN0cmVhbTsKCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50Pgp2b2lkIG9wZXJhdG9yPDw9KCBJU3RyZWFtYWJsZVBvaW50ZXI8RWxlbWVu
dD4mLCBJRGF0YVN0cmVhbSYpOwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CnZvaWQgb3BlcmF0
b3I+Pj0oIGNvbnN0IElTdHJlYW1hYmxlUG9pbnRlcjxFbGVtZW50PiYsIElEYXRhU3RyZWFtJik7
CgoKIyAyODEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaXB0ci5oIgoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJTW5nRWxlbVBvaW50
ZXIgOiBwcm90ZWN0ZWQgSU1uZ1BvaW50ZXIgPEVsZW1lbnQ+IHsKcHVibGljOgoKICAgICAgICAg
ICBJTW5nRWxlbVBvaW50ZXIgICgpIDsKCiAgICAgICAgICAgSU1uZ0VsZW1Qb2ludGVyICAoRWxl
bWVudCosIElFeHBsaWNpdEluaXQpOwoKCgoKCgoKICBFbGVtZW50JiBvcGVyYXRvciogICAgICAg
ICgpIGNvbnN0OwoKICBFbGVtZW50KiBvcGVyYXRvci0+ICAgICAgICgpIGNvbnN0OwoKICAgICAg
ICAgICBvcGVyYXRvciBFbGVtZW50KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgY29u
c3Q7CgogIGZyaWVuZCBFbGVtZW50JiBlbGVtZW50Rm9yT3BzCgogICAgICAgIDxFbGVtZW50PgoK
CQkoSU1uZ0VsZW1Qb2ludGVyIDxFbGVtZW50PiYpOwoKICBmcmllbmQgRWxlbWVudCBjb25zdCYg
ZWxlbWVudEZvck9wcwoKICAgICAgICA8RWxlbWVudD4KCgkJKElNbmdFbGVtUG9pbnRlciA8RWxl
bWVudD4gY29uc3QmKTsKCiMgMzI2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lwdHIuaCIKCgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKIyAzNDAgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXB0ci5oIgoK
Cn07CgoKIyAzNTYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaXB0ci5oIgoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJQXV0b1BvaW50
ZXIgewpwdWJsaWM6CgogICAgICAgICAgIElBdXRvUG9pbnRlciAgICAgKCk7CgogICAgICAgICAg
IElBdXRvUG9pbnRlciAgICAgKEVsZW1lbnQqLCBJRXhwbGljaXRJbml0KTsKCiAgICAgICAgICAg
SUF1dG9Qb2ludGVyICAgICAoSUF1dG9Qb2ludGVyIDxFbGVtZW50PiBjb25zdCYpOwoKICAgICAg
ICAgIH5JQXV0b1BvaW50ZXIgICAgICgpOwoKICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJ
QXV0b1BvaW50ZXIgPEVsZW1lbnQ+IGNvbnN0Jik7CgogICAgICAgICAgIG9wZXJhdG9yIEVsZW1l
bnQqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSBjb25zdDsKCiAgRWxlbWVudCYgb3Bl
cmF0b3IqICAgICAgICAoKSBjb25zdDsKCiAgRWxlbWVudCogb3BlcmF0b3ItPiAgICAgICAoKSBj
b25zdDsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIEVsZW1lbnQqIGl2UHRyOwoKIyAzOTUgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXB0ci5oIgoK
Cn07CgojIDQwNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pcHRyLmgiCgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmNsYXNzIElBdXRvRWxlbVBv
aW50ZXIgOiBwcm90ZWN0ZWQgSUF1dG9Qb2ludGVyIDxFbGVtZW50PiB7CnB1YmxpYzoKCiAgICAg
ICAgICAgSUF1dG9FbGVtUG9pbnRlciAoKTsKCiAgICAgICAgICAgSUF1dG9FbGVtUG9pbnRlciAo
RWxlbWVudCosIElFeHBsaWNpdEluaXQpOwoKICBFbGVtZW50JiBvcGVyYXRvciogICAgICAgICgp
IGNvbnN0OwoKICBFbGVtZW50KiBvcGVyYXRvci0+ICAgICAgICgpIGNvbnN0OwoKICAgICAgICAg
ICBvcGVyYXRvciBFbGVtZW50KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgY29uc3Q7
CgogIGZyaWVuZCBFbGVtZW50JiBlbGVtZW50Rm9yT3BzCgogICAgICAgIDxFbGVtZW50PgoKCQko
SUF1dG9FbGVtUG9pbnRlciA8RWxlbWVudD4mKTsKCiAgZnJpZW5kIEVsZW1lbnQgY29uc3QmIGVs
ZW1lbnRGb3JPcHMKCiAgICAgICAgPEVsZW1lbnQ+CgoJCShJQXV0b0VsZW1Qb2ludGVyIDxFbGVt
ZW50PiBjb25zdCYpOwoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiMgNDQ4ICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lwdHIuaCIKCgp9OwoKIyA0NjAg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXB0ci5o
IgoKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmds
aW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lwdHIuaW5sIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAog
CiAKCiAKIAoKIApleHRlcm4gdm9pZCBBdG9taWNJbmNyZW1lbnQodm9pZCogY29uc3Qgdm9sYXRp
bGUqIGFkZHJlc3MpOwpleHRlcm4gbG9uZyBBdG9taWNEZWNyZW1lbnQodm9pZCogY29uc3Qgdm9s
YXRpbGUqIGFkZHJlc3MpOwogCgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+Cmlu
bGluZQpJRWxlbVBvaW50ZXIgPEVsZW1lbnQ+OjoKSUVsZW1Qb2ludGVyICgpCjogaXZQdHIgKDAp
CnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJRWxlbVBvaW50ZXIgPEVsZW1l
bnQ+OjoKSUVsZW1Qb2ludGVyIChFbGVtZW50KiBwdHIsIElFeHBsaWNpdEluaXQpCjogaXZQdHIg
KHB0cikKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQmCklFbGVt
UG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRvciogKCkgY29uc3QKeyByZXR1cm4gKml2UHRyOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQqCklFbGVtUG9pbnRlciA8
RWxlbWVudD46OgpvcGVyYXRvci0+ICgpIGNvbnN0CnsgcmV0dXJuIGl2UHRyOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklFbGVtUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRv
ciBFbGVtZW50KiAoKSBjb25zdAp7IHJldHVybiBpdlB0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQ+CmlubGluZSBFbGVtZW50JgplbGVtZW50Rm9yT3BzIChJRWxlbVBvaW50ZXIgPEVsZW1l
bnQ+JiBwdHIpCnsgcmV0dXJuICpwdHIuaXZQdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
PgppbmxpbmUgRWxlbWVudCBjb25zdCYKZWxlbWVudEZvck9wcyAoSUVsZW1Qb2ludGVyIDxFbGVt
ZW50PiBjb25zdCYgcHRyKQp7IHJldHVybiAqcHRyLml2UHRyOwp9CgogCiAKIAoKIAoKdGVtcGxh
dGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJTW5nUG9pbnRlciA8RWxlbWVudD46OgpJTW5nUG9p
bnRlciAoKQo6IGl2UHRyUmMgKDApCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGlu
ZQpJTW5nUG9pbnRlciA8RWxlbWVudD46OgpJTW5nUG9pbnRlciAoRWxlbWVudCAqcHRyLCBJRXhw
bGljaXRJbml0KQo6IGl2UHRyUmMgKG5ldyBQdHJSYyAocHRyKSkKewp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lCklNbmdQb2ludGVyIDxFbGVtZW50Pjo6CklNbmdQb2ludGVyIChJ
TW5nUG9pbnRlciA8RWxlbWVudD4gY29uc3QmIHB0cikKewogICAgaXZQdHJSYyA9IHB0ci5pdlB0
clJjOwogICAgaWYgKGl2UHRyUmMgIT0gMCkKICAgICAgICBBdG9taWNJbmNyZW1lbnQoKHZvaWQg
KiBjb25zdCB2b2xhdGlsZSAqKSYoaXZQdHJSYy0+aXZSYykpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
RWxlbWVudD4KaW5saW5lCklNbmdQb2ludGVyIDxFbGVtZW50Pjo6Cn5JTW5nUG9pbnRlciAoKQp7
CiAgICBpZiAoaXZQdHJSYyAhPSAwICYmIEF0b21pY0RlY3JlbWVudCgodm9pZCAqIGNvbnN0IHZv
bGF0aWxlICopJihpdlB0clJjLT5pdlJjKSkgPT0gMCkKICAgICAgICBkZWxldGUgaXZQdHJSYzsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBJTW5nUG9pbnRlciA8RWxlbWVudD4m
CklNbmdQb2ludGVyIDxFbGVtZW50Pjo6Cm9wZXJhdG9yPSAoSU1uZ1BvaW50ZXIgPEVsZW1lbnQ+
IGNvbnN0JiBwdHIpCnsKICAgIGlmICh0aGlzICE9ICZwdHIpIHsKICAgICAgICBpZiAoaXZQdHJS
YyAmJiBBdG9taWNEZWNyZW1lbnQoKHZvaWQgKiBjb25zdCB2b2xhdGlsZSAqKSYoaXZQdHJSYy0+
aXZSYykpID09IDApCiAgICAgICAgICAgIGRlbGV0ZSBpdlB0clJjOwogICAgICAgIGl2UHRyUmMg
PSBwdHIuaXZQdHJSYzsKICAgICAgICBpZiAoaXZQdHJSYyAhPSAwKQogICAgICAgICAgICBBdG9t
aWNJbmNyZW1lbnQoKHZvaWQgKiBjb25zdCB2b2xhdGlsZSAqKSYoaXZQdHJSYy0+aXZSYykpOwog
ICAgfQogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5l
IEVsZW1lbnQmCklNbmdQb2ludGVyIDxFbGVtZW50Pjo6Cm9wZXJhdG9yKiAoKSBjb25zdAp7IHJl
dHVybiAqaXZQdHJSYy0+aXZQdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUg
RWxlbWVudCoKSU1uZ1BvaW50ZXIgPEVsZW1lbnQ+OjoKb3BlcmF0b3ItPiAoKSBjb25zdAp7IHJl
dHVybiBpdlB0clJjLT5pdlB0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJ
TW5nUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRvciBFbGVtZW50KiAoKSBjb25zdAp7IGlmIChp
dlB0clJjID09IDApIHJldHVybiAwOwogIGVsc2UgcmV0dXJuIGl2UHRyUmMtPml2UHRyOwp9Cgog
CiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJTW5nRWxlbVBvaW50ZXIg
PEVsZW1lbnQ+OjoKSU1uZ0VsZW1Qb2ludGVyIChFbGVtZW50ICpwdHIsIElFeHBsaWNpdEluaXQp
CjogSU1uZ1BvaW50ZXIgPEVsZW1lbnQ+IChwdHIsIElJTklUKQp7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50PgppbmxpbmUKSU1uZ0VsZW1Qb2ludGVyIDxFbGVtZW50Pjo6CklNbmdFbGVtUG9p
bnRlciAoKQp7Cn0KCiMgMjAzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2lwdHIuaW5sIgoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUg
RWxlbWVudCYKSU1uZ0VsZW1Qb2ludGVyIDxFbGVtZW50Pjo6Cm9wZXJhdG9yKiAoKSBjb25zdAp7
IHJldHVybiBJTW5nUG9pbnRlciA8RWxlbWVudD46Om9wZXJhdG9yKiAoKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50KgpJTW5nRWxlbVBvaW50ZXIgPEVsZW1lbnQ+
OjoKb3BlcmF0b3ItPiAoKSBjb25zdAp7IHJldHVybiBJTW5nUG9pbnRlciA8RWxlbWVudD46Om9w
ZXJhdG9yLT4gKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSU1uZ0VsZW1Q
b2ludGVyIDxFbGVtZW50Pjo6Cm9wZXJhdG9yIEVsZW1lbnQqICgpIGNvbnN0CnsgcmV0dXJuIChJ
TW5nUG9pbnRlciA8RWxlbWVudD4gY29uc3QmKSp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudD4KaW5saW5lIEVsZW1lbnQmCmVsZW1lbnRGb3JPcHMgKElNbmdFbGVtUG9pbnRlciA8RWxl
bWVudD4mIHB0cikKeyByZXR1cm4gKihFbGVtZW50KilwdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBF
bGVtZW50PgppbmxpbmUgRWxlbWVudCBjb25zdCYKZWxlbWVudEZvck9wcyAoSU1uZ0VsZW1Qb2lu
dGVyIDxFbGVtZW50PiBjb25zdCYgcHRyKQp7IHJldHVybiAqKEVsZW1lbnQqKXB0cjsKfQoKIAog
CiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUF1dG9Qb2ludGVyIDxFbGVt
ZW50Pjo6CklBdXRvUG9pbnRlciAoRWxlbWVudCogcHRyLCBJRXhwbGljaXRJbml0KQo6IGl2UHRy
IChwdHIpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQXV0b1BvaW50ZXIg
PEVsZW1lbnQ+OjoKSUF1dG9Qb2ludGVyICgpCjogaXZQdHIgKDApCnsKfQoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZQpJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+OjoKSUF1dG9Qb2ludGVy
IChJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+IGNvbnN0JiBwdHIpCnsgaXZQdHIgPSBwdHIuaXZQdHI7
CiAgKChJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+JilwdHIpLml2UHRyID0gMDsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+OjoKfklBdXRvUG9p
bnRlciAoKQp7IGRlbGV0ZSBpdlB0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGlu
ZSB2b2lkCklBdXRvUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRvcj0gKElBdXRvUG9pbnRlciA8
RWxlbWVudD4gY29uc3QmIHB0cikKeyBpZiAodGhpcyAhPSAmcHRyKSB7CiAgICBkZWxldGUgaXZQ
dHI7CiAgICBpdlB0ciA9IHB0ci5pdlB0cjsKICAgICgoSUF1dG9Qb2ludGVyIDxFbGVtZW50PiYp
IHB0cikuaXZQdHIgPSAwOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJ
QXV0b1BvaW50ZXIgPEVsZW1lbnQ+OjoKb3BlcmF0b3IgRWxlbWVudCogKCkgY29uc3QKeyByZXR1
cm4gaXZQdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCYKSUF1
dG9Qb2ludGVyIDxFbGVtZW50Pjo6Cm9wZXJhdG9yICogKCkgY29uc3QKeyByZXR1cm4gKml2UHRy
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQqCklBdXRvUG9pbnRl
ciA8RWxlbWVudD46OgpvcGVyYXRvci0+ICgpIGNvbnN0CnsgcmV0dXJuIGl2UHRyOwp9CgoKIAog
CiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUF1dG9FbGVtUG9pbnRlciA8
RWxlbWVudD46OgpJQXV0b0VsZW1Qb2ludGVyICgpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1l
bnQ+CmlubGluZQpJQXV0b0VsZW1Qb2ludGVyIDxFbGVtZW50Pjo6CklBdXRvRWxlbVBvaW50ZXIg
KEVsZW1lbnQgKnB0ciwgSUV4cGxpY2l0SW5pdCkKOiBJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+IChw
dHIsIElJTklUKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCYK
SUF1dG9FbGVtUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRvciogKCkgY29uc3QKeyByZXR1cm4g
SUF1dG9Qb2ludGVyIDxFbGVtZW50Pjo6b3BlcmF0b3IqICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
RWxlbWVudD4KaW5saW5lIEVsZW1lbnQqCklBdXRvRWxlbVBvaW50ZXIgPEVsZW1lbnQ+OjoKb3Bl
cmF0b3ItPiAoKSBjb25zdAp7IHJldHVybiBJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+OjpvcGVyYXRv
ci0+KCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUF1dG9FbGVtUG9pbnRl
ciA8RWxlbWVudD46OgpvcGVyYXRvciBFbGVtZW50KiAoKSBjb25zdAp7CiAgCiAgCiByZXR1cm4g
KChJQXV0b1BvaW50ZXIgPEVsZW1lbnQ+Kil0aGlzKS0+b3BlcmF0b3IgRWxlbWVudCogKCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCYKZWxlbWVudEZvck9wcyAo
SUF1dG9FbGVtUG9pbnRlciA8RWxlbWVudD4mIHB0cikKeyByZXR1cm4gKihFbGVtZW50KilwdHI7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBjb25zdCYKZWxlbWVu
dEZvck9wcyAoSUF1dG9FbGVtUG9pbnRlciA8RWxlbWVudD4gY29uc3QmIHB0cikKeyByZXR1cm4g
KihFbGVtZW50KilwdHI7Cn0KCgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+Cmlu
bGluZQpJU3RyZWFtYWJsZVBvaW50ZXIgPEVsZW1lbnQ+OjoKSVN0cmVhbWFibGVQb2ludGVyICgp
CjogaXZQdHJSYyAoMCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklTdHJl
YW1hYmxlUG9pbnRlciA8RWxlbWVudD46OgpJU3RyZWFtYWJsZVBvaW50ZXIgKEVsZW1lbnQgKnB0
ciwgSUV4cGxpY2l0SW5pdCkKOiBpdlB0clJjIChuZXcgUHRyUmMgKHB0cikpCnsKfQoKdGVtcGxh
dGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJU3RyZWFtYWJsZVBvaW50ZXIgPEVsZW1lbnQ+OjoK
SVN0cmVhbWFibGVQb2ludGVyIChJU3RyZWFtYWJsZVBvaW50ZXIgPEVsZW1lbnQ+IGNvbnN0JiBw
dHIpCnsKICAgIGl2UHRyUmMgPSBwdHIuaXZQdHJSYzsKICAgIGlmIChpdlB0clJjICE9IDApCiAg
ICAgICAgQXRvbWljSW5jcmVtZW50KCh2b2lkICogY29uc3Qgdm9sYXRpbGUgKikmKGl2UHRyUmMt
Pml2UmMpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJU3RyZWFtYWJsZVBv
aW50ZXIgPEVsZW1lbnQ+OjoKfklTdHJlYW1hYmxlUG9pbnRlciAoKQp7CiAgICBpZiAoaXZQdHJS
YyAhPSAwICYmIEF0b21pY0RlY3JlbWVudCgodm9pZCAqIGNvbnN0IHZvbGF0aWxlICopJihpdlB0
clJjLT5pdlJjKSkgPT0gMCkKICAgICAgICBkZWxldGUgaXZQdHJSYzsKfQoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSBJU3RyZWFtYWJsZVBvaW50ZXIgPEVsZW1lbnQ+JgpJU3RyZWFt
YWJsZVBvaW50ZXIgPEVsZW1lbnQ+OjoKb3BlcmF0b3I9IChJU3RyZWFtYWJsZVBvaW50ZXIgPEVs
ZW1lbnQ+IGNvbnN0JiBwdHIpCnsKICAgIGlmICh0aGlzICE9ICZwdHIpIHsKICAgICAgICBpZiAo
aXZQdHJSYyAmJiBBdG9taWNEZWNyZW1lbnQoKHZvaWQgKiBjb25zdCB2b2xhdGlsZSAqKSYoaXZQ
dHJSYy0+aXZSYykpID09IDApCiAgICAgICAgICAgIGRlbGV0ZSBpdlB0clJjOwogICAgICAgIGl2
UHRyUmMgPSBwdHIuaXZQdHJSYzsKICAgICAgICBpZiAoaXZQdHJSYyAhPSAwKQogICAgICAgICAg
ICBBdG9taWNJbmNyZW1lbnQoKHZvaWQgKiBjb25zdCB2b2xhdGlsZSAqKSYoaXZQdHJSYy0+aXZS
YykpOwogICAgfQogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4K
aW5saW5lIEVsZW1lbnQmCklTdHJlYW1hYmxlUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRvciog
KCkgY29uc3QKeyByZXR1cm4gKml2UHRyUmMtPml2UHRyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudD4KaW5saW5lIEVsZW1lbnQqCklTdHJlYW1hYmxlUG9pbnRlciA8RWxlbWVudD46OgpvcGVy
YXRvci0+ICgpIGNvbnN0CnsgcmV0dXJuIGl2UHRyUmMtPml2UHRyOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lCklTdHJlYW1hYmxlUG9pbnRlciA8RWxlbWVudD46OgpvcGVyYXRv
ciBFbGVtZW50KiAoKSBjb25zdAp7IGlmIChpdlB0clJjID09IDApIHJldHVybiAwOwogIGVsc2Ug
cmV0dXJuIGl2UHRyUmMtPml2UHRyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5l
CnZvaWQKb3BlcmF0b3I8PD0oIElTdHJlYW1hYmxlUG9pbnRlcjxFbGVtZW50PiYgZWxlbWVudCwg
SURhdGFTdHJlYW0mIGZyb21XaGVyZSkKeyBlbGVtZW50ID0gSVN0cmVhbWFibGVQb2ludGVyPEVs
ZW1lbnQ+IChuZXcgRWxlbWVudCgpLElJTklUKTsKICAqKChFbGVtZW50KillbGVtZW50KSA8PD0g
ZnJvbVdoZXJlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCnZvaWQKb3BlcmF0
b3I+Pj0oY29uc3QgSVN0cmVhbWFibGVQb2ludGVyPEVsZW1lbnQ+JmVsZW1lbnQsIElEYXRhU3Ry
ZWFtJiB0b1doZXJlKQp7ICooKEVsZW1lbnQqKWVsZW1lbnQpID4+PSB0b1doZXJlOwp9CgoKIAoK
IyA0ODcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aXB0ci5oIiAyCgoKIyA0OTcgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaXB0ci5oIgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBv
cnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzMyAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFscy5oIiAyCgojIDEgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWNvbm5lY3Qu
aCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZ2xvYmFscy5oIiAxCiMgMzkg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWdsb2Jh
bHMuaCIKCiMgMjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWNvbm5lY3QuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBv
cnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3Jl
KQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkK
CgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCgoKCgoKCiNwcmFnbWEgZW51bShw
b3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCgogCiNwcmFnbWEgaW5m
byhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgoj
IDM0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2ln
bG9iYWxzLmgiIDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pY2NscGwuaHBwIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAogIAogICAgICAKICAgICAg
CQojIDYzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2ljY2xwbC5ocHAiCgogICAgICAKICAKCgogCgojIDM1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lnbG9iYWxzLmgiIDIKCiAKCiAKCiMgMzIgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWJjbGxjdC5o
IiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0Nf
SEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21h
IG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51
bSg0KQoKCgoKCgoKCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKY2xhc3MgICBJQ3Vyc29yCnsKICB0
eXBlZGVmICBJQ3Vyc29ySW1wbCBJbXBsZW1lbnRhdGlvbjsKCnB1YmxpYzoKCiAgdmlydHVhbCAg
fklDdXJzb3IgICAgICAgICAgKCk7CgogIHZvaWQgICAgIGNvcHkgICAgICAgICAgICAgKElDdXJz
b3IgY29uc3QmKTsKCiAgdm9pZCAgICAgaW52YWxpZGF0ZSAgICAgICAoKTsKCgoKCgoKCiAgYm9v
bCBpc1ZhbGlkICAgICAgICAgICgpIGNvbnN0OwoKICBib29sIHNldFRvRmlyc3QgICAgICAgKCk7
CgogIGJvb2wgc2V0VG9OZXh0ICAgICAgICAoKTsKCiAgdm9pZCAgICAgb3BlcmF0b3I9ICAgICAg
ICAoSUN1cnNvciBjb25zdCYpOwoKICBib29sIG9wZXJhdG9yPT0gICAgICAgKElDdXJzb3IgY29u
c3QmKSBjb25zdDsKCiAgYm9vbCBvcGVyYXRvciE9ICAgICAgIChJQ3Vyc29yIGNvbnN0JikgY29u
c3Q7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElDdXJzb3IgICAgICAgICAgKEltcGxlbWVudGF0
aW9uKik7CgogICAgICAgICAgIElDdXJzb3IgICAgICAgICAgKElDdXJzb3IgY29uc3QmKTsKCiAg
c3RhdGljCiAgaW5saW5lCiAgSW1wbGVtZW50YXRpb24mCiAgICAgICAgICAgSW1wbE9mICAgICAg
ICAgICAoSUN1cnNvciBjb25zdCYpOwoKcHJpdmF0ZToKCiAgSW1wbGVtZW50YXRpb24qCiAgICAg
ICAgICAgaXZJbXBsOwoKICBmcmllbmQKICBjbGFzcyAgICBJQUNvbGxlY3Rpb25CYXNlOwoKCiAg
ZnJpZW5kCiAgY2xhc3MgICAgSVZDb2xsZWN0aW9uSW1wbDsKCgojIDE0MyAiL2hvbWUvYWtub2xs
L2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmNsbGN0LmgiCgoKfTsKCgoK
CiAKCgoKY2xhc3MgICBJQUNvbGxlY3Rpb25CYXNlIDogcHJvdGVjdGVkIElNZXRhQ29sbGVjdGlv
biB7CnB1YmxpYzoKCnByb3RlY3RlZDoKCiAgICAgICAgICAgSUFDb2xsZWN0aW9uQmFzZSAoKTsK
CiAgICAgICAgICAgSUFDb2xsZWN0aW9uQmFzZSAoSUFDb2xsZWN0aW9uQmFzZSBjb25zdCYpOwoK
ICAgICAgICAgIH5JQUNvbGxlY3Rpb25CYXNlICgpOwoKICBzdGF0aWMKICBJQ3Vyc29ySW1wbCYK
ICAgICAgICAgICBDcnNySW1wbE9mICAgICAgIChJQ3Vyc29yJiBjdXJzb3IpOwoKICBzdGF0aWMK
ICBJQ3Vyc29ySW1wbCBjb25zdCYKICAgICAgICAgICBDcnNySW1wbE9mICAgICAgIChJQ3Vyc29y
IGNvbnN0JiBjdXJzb3IpOwoKICBzdGF0aWMKICBJQ3Vyc29yKiBJbnRlcmZhY2VGb3IgICAgIChJ
Q3Vyc29ySW1wbCogY3Vyc29yKTsKCgoKCgoKCgoKCn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdt
YSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmNsbGN0Lmlu
bCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiAKIAoKIAoKaW5saW5lIHZv
aWQKSUN1cnNvcjo6CmNvcHkgKElDdXJzb3IgY29uc3QmIGN1cnNvcikKeyBJbXBsT2YgKCp0aGlz
KS5Db3B5ICgqY3Vyc29yLml2SW1wbCk7Cn0KCmlubGluZSB2b2lkCklDdXJzb3I6OgppbnZhbGlk
YXRlICgpCnsgSW1wbE9mICgqdGhpcykuSW52YWxpZGF0ZSAoKTsKfQoKIyA1NiAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYmNsbGN0LmlubCIKCmlu
bGluZSBib29sCklDdXJzb3I6Ogppc1ZhbGlkICgpIGNvbnN0CnsgcmV0dXJuIEltcGxPZiAoKnRo
aXMpLklzVmFsaWQgKCk7Cn0KCmlubGluZSBib29sCklDdXJzb3I6OgpzZXRUb0ZpcnN0ICgpCnsg
cmV0dXJuIEltcGxPZiAoKnRoaXMpLlNldFRvRmlyc3QgKCk7Cn0KCmlubGluZSBib29sCklDdXJz
b3I6OgpzZXRUb05leHQgKCkKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuU2V0VG9OZXh0ICgpOwp9
CgppbmxpbmUgdm9pZApJQ3Vyc29yOjoKb3BlcmF0b3I9IChJQ3Vyc29yIGNvbnN0JiBjdXJzb3Ip
CnsgSW1wbE9mICgqdGhpcykuQ29weSAoSW1wbE9mIChjdXJzb3IpKTsKfQoKaW5saW5lIGJvb2wK
SUN1cnNvcjo6Cm9wZXJhdG9yPT0gKElDdXJzb3IgY29uc3QmIGN1cnNvcikgY29uc3QKeyByZXR1
cm4gSW1wbE9mICgqdGhpcykub3BlcmF0b3I9PSAoKmN1cnNvci5pdkltcGwpOwp9CgppbmxpbmUg
Ym9vbApJQ3Vyc29yOjoKb3BlcmF0b3IhPSAoSUN1cnNvciBjb25zdCYgY3Vyc29yKSBjb25zdAp7
IHJldHVybiBJbXBsT2YgKCp0aGlzKS5vcGVyYXRvciE9ICgqY3Vyc29yLml2SW1wbCk7Cn0KCiAK
CmlubGluZQpJQ3Vyc29yOjoKSUN1cnNvciAoSW1wbGVtZW50YXRpb24qIGltcGwpCjogaXZJbXBs
IChpbXBsKQp7Cn0KCmlubGluZQpJQ3Vyc29yOjoKSUN1cnNvciAoSUN1cnNvciBjb25zdCYgY3Vy
c29yKQo6IGl2SW1wbCAoSW1wbE9mIChjdXJzb3IpLkNsb25lICgpKQp7Cn0KCmlubGluZSBJQ3Vy
c29yOjpJbXBsZW1lbnRhdGlvbiYKSUN1cnNvcjo6CkltcGxPZiAoSUN1cnNvciBjb25zdCYgY3Vy
c29yKQp7IHJldHVybiAqY3Vyc29yLml2SW1wbDsKfQoKIAogCiAKCiAKCmlubGluZQpJQUNvbGxl
Y3Rpb25CYXNlOjoKSUFDb2xsZWN0aW9uQmFzZSAoKQo6IElNZXRhQ29sbGVjdGlvbiAoKQp7Cn0K
CmlubGluZQpJQUNvbGxlY3Rpb25CYXNlOjoKSUFDb2xsZWN0aW9uQmFzZSAoSUFDb2xsZWN0aW9u
QmFzZSBjb25zdCYgY29sbGVjdGlvbikKOiBJTWV0YUNvbGxlY3Rpb24gKGNvbGxlY3Rpb24pCnsK
fQoKaW5saW5lCklBQ29sbGVjdGlvbkJhc2U6Ogp+SUFDb2xsZWN0aW9uQmFzZSAoKQp7Cn0KCmlu
bGluZSBJQ3Vyc29ySW1wbCYKSUFDb2xsZWN0aW9uQmFzZTo6CkNyc3JJbXBsT2YgKElDdXJzb3Im
IGN1cnNvcikKeyByZXR1cm4gKmN1cnNvci5pdkltcGw7Cn0KCmlubGluZSBJQ3Vyc29ySW1wbCBj
b25zdCYKSUFDb2xsZWN0aW9uQmFzZTo6CkNyc3JJbXBsT2YgKElDdXJzb3IgY29uc3QmIGN1cnNv
cikKeyByZXR1cm4gKmN1cnNvci5pdkltcGw7Cn0KCiAKCiMgMjEyICIvaG9tZS9ha25vbGwvaW9j
c3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2liY2xsY3QuaCIgMgoKIAoKIAojcHJh
Z21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKIAoKIyAyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9pYWNsbGN0LmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkK
IAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoK
CgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudD4gY2xhc3MgSUFDb2xsZWN0aW9uOwoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
RWxlbWVudD4KY2xhc3MgSUNvbGxlY3Rpb25HdWFyZCB7CnB1YmxpYzoKICBJQ29sbGVjdGlvbkd1
YXJkIChJQUNvbGxlY3Rpb248RWxlbWVudD4mLCBsb25nIHRpbWVvdXQ9LTEpOwoKICB+SUNvbGxl
Y3Rpb25HdWFyZCAoKTsKCnByaXZhdGU6CiAgSUFDb2xsZWN0aW9uPEVsZW1lbnQ+JiBpdkNvbGxl
Y3Rpb247CgogIElDb2xsZWN0aW9uR3VhcmQgKGNvbnN0IElDb2xsZWN0aW9uR3VhcmQ8RWxlbWVu
dD4mKTsKCiAgICAgICAgIElDb2xsZWN0aW9uR3VhcmQ8RWxlbWVudD4KICAgICAgICAgICZvcGVy
YXRvcj0gICAgICAoY29uc3QgSUNvbGxlY3Rpb25HdWFyZDxFbGVtZW50PiYpOwoKIyA5OCAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYWNsbGN0Lmgi
Cgp9OwoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJRWxlbWVudEN1cnNvciA6IHB1
YmxpYyBJQ3Vyc29yIHsKCiAgdHlwZWRlZiAgSUN1cnNvckltcGwgSW1wbGVtZW50YXRpb247Cgpw
dWJsaWM6CgogIEVsZW1lbnQgY29uc3QmCiAgICAgICAgICAgZWxlbWVudCAgICAgICAgICAoKSBj
b25zdDsKCnByb3RlY3RlZDoKCiAgICAgICAgICAgSUVsZW1lbnRDdXJzb3IgICAoSW1wbGVtZW50
YXRpb24qKTsKCgoKCgoKCgoKCn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSUFD
b2xsZWN0aW9uIDogcHJvdGVjdGVkIElBQ29sbGVjdGlvbkJhc2UgewoKICB0eXBlZGVmICBJQUNv
bGxlY3Rpb25JbXBsIEltcGxlbWVudGF0aW9uOwoKcHVibGljOgoKCiAgICAgICAgICAgSUFDb2xs
ZWN0aW9uICAgICAoSU5vdGlmaWVyJik7CgoKICB2aXJ0dWFsIH5JQUNvbGxlY3Rpb24gICAgICgp
OwoKCgoKICBib29sIGFkZCAgICAgICAgICAgICAgKEVsZW1lbnQgY29uc3QmKTsKCgoKCiAgYm9v
bCBhZGQgICAgICAgICAgICAgIChFbGVtZW50IGNvbnN0JiwgSUN1cnNvciYpOwoKCgoKICB2b2lk
ICAgICBhZGRBbGxGcm9tICAgICAgIChJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0Jik7Cgog
IGJvb2wgYWxsRWxlbWVudHNEbyAgICAoYm9vbCAoKmFwcGxpY2F0b3JGdW5jdGlvbikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEVsZW1lbnQmLCB2b2lkKiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCogYWRkaXRpb25hbEFyZ3VtZW50ID0gMCk7CgogIGJvb2wgYWxs
RWxlbWVudHNEbyAgICAoYm9vbCAoKmFwcGxpY2F0b3JGdW5jdGlvbikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKEVsZW1lbnQgY29uc3QmLCB2b2lkKiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCogYWRkaXRpb25hbEFyZ3VtZW50ID0gMCkgY29uc3Q7CgogIGJvb2wg
YWxsRWxlbWVudHNEbyAgICAoSUFwcGxpY2F0b3IgPEVsZW1lbnQ+Jik7CgogIGJvb2wgYWxsRWxl
bWVudHNEbyAgICAoSUNvbnN0YW50QXBwbGljYXRvciA8RWxlbWVudD4mKSBjb25zdDsKCiAgRWxl
bWVudCBjb25zdCYKICAgICAgICAgICBhbnkgICAgICAgICAgICAgICgpIGNvbnN0OwoKCgoKICB2
b2lkICAgICBjb3B5ICAgICAgICAgICAgIChJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0Jik7
CgoKICBJTm90aWZpZXImCiAgICAgICAgICAgZGlzYWJsZU5vdGlmaWNhdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCk7CgoKCiAgRWxlbWVudCYgZWxlbWVudEF0ICAgICAgICAoSUN1
cnNvciBjb25zdCYpOwoKICBFbGVtZW50IGNvbnN0JgogICAgICAgICAgIGVsZW1lbnRBdCAgICAg
ICAgKElDdXJzb3IgY29uc3QmKSBjb25zdDsKCgogIElOb3RpZmllciYKICAgICAgICAgICBlbmFi
bGVOb3RpZmljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChib29sID0gdHJ1ZSk7
CgoKICBib29sIGlzQm91bmRlZCAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgaXNDb25zaXN0ZW50
ICAgICAoKSBjb25zdDsKCiAgYm9vbCBpc0VtcHR5ICAgICAgICAgICgpIGNvbnN0OwoKCiAgYm9v
bCBpc0VuYWJsZWRGb3JOb3RpZmljYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgp
IGNvbnN0OwoKCiAgYm9vbCBpc0Z1bGwgICAgICAgICAgICgpIGNvbnN0OwoKICBJTnVtYmVyICBt
YXhOdW1iZXJPZkVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSBjb25zdDsK
CgoKCiAgSUN1cnNvciogbmV3Q3Vyc29yICAgICAgICAoKSBjb25zdDsKCgoKCgoKICBJTm90aWZp
ZXImCiAgICAgICAgICAgbm90aWZpZXIgICAgICAgICAoKTsKCiAgSU5vdGlmaWVyIGNvbnN0Jgog
ICAgICAgICAgIG5vdGlmaWVyICAgICAgICAgKCkgY29uc3Q7CgogIElOb3RpZmllciYKICAgICAg
ICAgICBub3RpZnlPYnNlcnZlcnMgIChJTm90aWZpY2F0aW9uRXZlbnQgY29uc3QmKTsKCgogIElO
dW1iZXIgIG51bWJlck9mRWxlbWVudHMgKCkgY29uc3Q7CgoKCgogIElOdW1iZXIgIHJlbW92ZUFs
bCAgICAgICAgKCk7CgoKCgogIElOdW1iZXIgIHJlbW92ZUFsbCAgICAgICAgKGJvb2wgKCpwcmVk
aWNhdGVGdW5jdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVsZW1lbnQgY29u
c3QmLCB2b2lkKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYWRkaXRpb25h
bEFyZ3VtZW50ID0gMCk7CgoKCgogIHZvaWQgICAgIHJlbW92ZUF0ICAgICAgICAgKElDdXJzb3Im
KTsKCgoKCiAgdm9pZCAgICAgcmVwbGFjZUF0ICAgICAgICAoSUN1cnNvciBjb25zdCYsIEVsZW1l
bnQgY29uc3QmKTsKCiAgYm9vbCBzZXRUb0ZpcnN0ICAgICAgIChJQ3Vyc29yJikgY29uc3Q7Cgog
IGJvb2wgc2V0VG9OZXh0ICAgICAgICAoSUN1cnNvciYpIGNvbnN0OwoKCiAgICAgICAgICAgb3Bl
cmF0b3IgSU5vdGlmaWVyJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgY29uc3Q7CgoK
ICAgCiAgRWxlbWVudCBjb25zdCYKICAgICAgICAgICBhbnlFbGVtZW50ICAgICAgICgpIGNvbnN0
OwoKcHJvdGVjdGVkOgoKCiAgICAgICAgZnJpZW5kIGNsYXNzIElDb2xsZWN0aW9uR3VhcmQ8RWxl
bWVudD47CgoKICAgICAgICAgICBJQUNvbGxlY3Rpb24gICAgICgpOwoKICAgICAgICAgICBJQUNv
bGxlY3Rpb24gICAgIChJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0Jik7CgogIHN0YXRpYwog
IEltcGxlbWVudGF0aW9uJgogICAgICAgICAgIEltcGxPZiAgICAgICAgICAgKElBQ29sbGVjdGlv
biA8RWxlbWVudD4gY29uc3QmKTsKCnByaXZhdGU6CgoKcHVibGljOgoKCgogIHZvaWQgICBvcGVy
YXRvcjw8PSAgICAgIChJRGF0YVN0cmVhbSYpOwoKCgoKICB2b2lkICAgb3BlcmF0b3I+Pj0gICAg
ICAoSURhdGFTdHJlYW0mKTsKCiAgdm9pZCAgIGFkb3B0U3RyZWFtZXIgICAgKElBQ29sbGVjdGlv
blN0cmVhbWVyKik7CgoKIyAzMzMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWFjbGxjdC5oIgoKCn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdtYSBl
bnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYWNsbGN0LmlubCIg
MQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgoKCgogCiAKIAoKIAoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQ29sbGVjdGlvbkd1YXJkPEVsZW1lbnQ+OjoKSUNvbGxl
Y3Rpb25HdWFyZCAoSUFDb2xsZWN0aW9uPEVsZW1lbnQ+JiBjLCBsb25nIHRpbWVvdXQpCjogaXZD
b2xsZWN0aW9uKGMpCnsgYy5JbXBsT2YoYykuU2VpemUodGltZW91dCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50PgppbmxpbmUKSUNvbGxlY3Rpb25HdWFyZDxFbGVtZW50Pjo6Cn5JQ29sbGVj
dGlvbkd1YXJkICgpCnsgaXZDb2xsZWN0aW9uLkltcGxPZihpdkNvbGxlY3Rpb24pLlJlbGVhc2Uo
KTsKfQoKCgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50
IGNvbnN0JgpJRWxlbWVudEN1cnNvciA8RWxlbWVudD46OgplbGVtZW50ICgpIGNvbnN0CnsgcmV0
dXJuICooRWxlbWVudCBjb25zdCopIEltcGxPZiAoKnRoaXMpLkVsZW1lbnQgKCk7Cn0KCiAKCnRl
bXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUVsZW1lbnRDdXJzb3IgPEVsZW1lbnQ+OjoK
SUVsZW1lbnRDdXJzb3IgKEltcGxlbWVudGF0aW9uKiBpbXBsKQo6IElDdXJzb3IgKGltcGwpCnsK
fQoKIAogCiAKCiAKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklBQ29sbGVjdGlv
biA8RWxlbWVudD46OgpJQUNvbGxlY3Rpb24gKElOb3RpZmllciYgbm90aWZpZXIpCnsKICAgIElB
Q29sbGVjdGlvbkJhc2U6OlNldEltcGwgKChJbXBsZW1lbnRhdGlvbiopJm5vdGlmaWVyKTsKfQoK
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6
Cn5JQUNvbGxlY3Rpb24gKCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIGJv
b2wKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CmFkZCAoRWxlbWVudCBjb25zdCYgZWxlbWVudCkK
eyByZXR1cm4gSW1wbE9mICgqdGhpcykuQWRkICgmZWxlbWVudCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50PgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYWRkIChFbGVt
ZW50IGNvbnN0JiBlbGVtZW50LCBJQ3Vyc29yJiBjdXJzb3IpCnsgcmV0dXJuIEltcGxPZiAoKnRo
aXMpLkFkZCAoJmVsZW1lbnQsIENyc3JJbXBsT2YgKGN1cnNvcikpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CmFkZEFsbEZy
b20gKElBQ29sbGVjdGlvbiA8RWxlbWVudD4gY29uc3QmIGNvbGxlY3Rpb24pCnsgSW1wbE9mICgq
dGhpcykuQWRkQWxsRnJvbSAoSW1wbE9mIChjb2xsZWN0aW9uKSk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50PgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYWxsRWxlbWVu
dHNEbyAoYm9vbCAoKmFwcGxGdW5jKSAoRWxlbWVudCYsIHZvaWQqKSwgdm9pZCogYWRkQXJnKQp7
IHJldHVybiBJbXBsT2YgKCp0aGlzKS5BbGxFbGVtZW50c0RvICgoSUFwcGxGdW5jKWFwcGxGdW5j
LCBhZGRBcmcpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIGJvb2wKSUFDb2xs
ZWN0aW9uIDxFbGVtZW50Pjo6CmFsbEVsZW1lbnRzRG8gKGJvb2wgKCphcHBsRnVuYykgKEVsZW1l
bnQgY29uc3QmLCB2b2lkKiksCiAgICAgICAgICAgICAgIHZvaWQqIGFkZEFyZykgY29uc3QKeyBy
ZXR1cm4gSW1wbE9mICgqdGhpcykuQWxsRWxlbWVudHNEbyAoKElBcHBsRnVuYylhcHBsRnVuYywg
YWRkQXJnKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBQ29sbGVj
dGlvbiA8RWxlbWVudD46OgphbGxFbGVtZW50c0RvIChJQXBwbGljYXRvciA8RWxlbWVudD4mIGFw
cGxpY2F0b3IpCnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpLkFsbEVsZW1lbnRzRG8gKF9fYXBwbEZ1
bmMsICZhcHBsaWNhdG9yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29s
CklBQ29sbGVjdGlvbiA8RWxlbWVudD46OgphbGxFbGVtZW50c0RvIChJQ29uc3RhbnRBcHBsaWNh
dG9yIDxFbGVtZW50PiYgYXBwbGljYXRvcikgY29uc3QKeyByZXR1cm4gSW1wbE9mICgqdGhpcyku
QWxsRWxlbWVudHNEbyAoX19hcHBsRnVuYywgJmFwcGxpY2F0b3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQgY29uc3QmCklBQ29sbGVjdGlvbiA8RWxlbWVudD46
OgphbnkgKCkgY29uc3QKeyByZXR1cm4gKihFbGVtZW50IGNvbnN0KikgSW1wbE9mICgqdGhpcyku
QW55ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQgY29uc3Qm
CklBQ29sbGVjdGlvbiA8RWxlbWVudD46OgphbnlFbGVtZW50ICgpIGNvbnN0CnsgcmV0dXJuICoo
RWxlbWVudCBjb25zdCopIEltcGxPZiAoKnRoaXMpLkFueSAoKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQ+CmlubGluZSB2b2lkCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpjb3B5IChJQUNv
bGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0JiBjb2xsZWN0aW9uKQp7IEltcGxPZiAoKnRoaXMpLkNv
cHkgKEltcGxPZiAoY29sbGVjdGlvbikpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+Cmlu
bGluZSBJTm90aWZpZXImCklBQ29sbGVjdGlvbiA8RWxlbWVudD46OgpkaXNhYmxlTm90aWZpY2F0
aW9uICgpCnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpLkRpc2FibGVOb3RpZmljYXRpb24gKCk7Cn0K
Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQmCklBQ29sbGVjdGlvbiA8
RWxlbWVudD46OgplbGVtZW50QXQgKElDdXJzb3IgY29uc3QmIGN1cnNvcikKeyByZXR1cm4gKihF
bGVtZW50KikgSW1wbE9mICgqdGhpcykuRWxlbWVudEF0IChDcnNySW1wbE9mIChjdXJzb3IpKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50IGNvbnN0JgpJQUNvbGxl
Y3Rpb24gPEVsZW1lbnQ+OjoKZWxlbWVudEF0IChJQ3Vyc29yIGNvbnN0JiBjdXJzb3IpIGNvbnN0
CnsgcmV0dXJuICooRWxlbWVudCBjb25zdCopIEltcGxPZiAoKnRoaXMpLgogICAgRWxlbWVudEF0
IChDcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50Pgppbmxp
bmUgSU5vdGlmaWVyJgpJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKZW5hYmxlTm90aWZpY2F0aW9u
IChib29sIGVuYWJsZSkKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuRW5hYmxlTm90aWZpY2F0aW9u
IChlbmFibGUpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBQ29s
bGVjdGlvbiA8RWxlbWVudD46Ogppc0JvdW5kZWQgKCkgY29uc3QKeyByZXR1cm4gSW1wbE9mICgq
dGhpcykuSXNCb3VuZGVkICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIGJv
b2wKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CmlzQ29uc2lzdGVudCAoKSBjb25zdAp7IHJldHVy
biBJbXBsT2YgKCp0aGlzKS5Jc0NvbnNpc3RlbnQgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVt
ZW50PgppbmxpbmUgYm9vbApJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKaXNFbXB0eSAoKSBjb25z
dAp7IHJldHVybiBJbXBsT2YgKCp0aGlzKS5Jc0VtcHR5ICgpOwp9CgoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQ+CmlubGluZSBib29sCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogppc0VuYWJsZWRG
b3JOb3RpZmljYXRpb24gKCkgY29uc3QKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuSXNFbmFibGVk
Rm9yTm90aWZpY2F0aW9uICgpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBi
b29sCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogppc0Z1bGwgKCkgY29uc3QKeyByZXR1cm4gSW1w
bE9mICgqdGhpcykuSXNGdWxsICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5l
IElOdW1iZXIKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6Cm1heE51bWJlck9mRWxlbWVudHMgKCkg
Y29uc3QKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuTWF4TnVtYmVyT2ZFbGVtZW50cyAoKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBJQ3Vyc29yKgpJQUNvbGxlY3Rpb24gPEVs
ZW1lbnQ+OjoKbmV3Q3Vyc29yICgpIGNvbnN0CnsgcmV0dXJuIEludGVyZmFjZUZvciAoSW1wbE9m
ICgqdGhpcykuQ3JlYXRlQ3Vyc29yICgpKTsKfQoKIyAyNjAgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFjbGxjdC5pbmwiCgoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSBJTm90aWZpZXImCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpu
b3RpZmllciAoKQp7IHJldHVybiBJbXBsT2YgKCp0aGlzKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQ+CmlubGluZSBJTm90aWZpZXIgY29uc3QmCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpu
b3RpZmllciAoKSBjb25zdAp7IHJldHVybiBJbXBsT2YgKCp0aGlzKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSBJTm90aWZpZXImCklBQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpu
b3RpZnlPYnNlcnZlcnMgKElOb3RpZmljYXRpb25FdmVudCBjb25zdCYgZXZlbnQpCnsgcmV0dXJu
IEltcGxPZiAoKnRoaXMpLm5vdGlmeU9ic2VydmVycyAoZXZlbnQpOwp9CgoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSBJTnVtYmVyCklBQ29sbGVjdGlvbiA8RWxlbWVudD46OgpudW1i
ZXJPZkVsZW1lbnRzICgpIGNvbnN0CnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpLk51bWJlck9mRWxl
bWVudHMgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgSU51bWJlcgpJQUNv
bGxlY3Rpb24gPEVsZW1lbnQ+OjoKcmVtb3ZlQWxsICgpCnsgcmV0dXJuIEltcGxPZiAoKnRoaXMp
LlJlbW92ZUFsbCAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBJTnVtYmVy
CklBQ29sbGVjdGlvbiA8RWxlbWVudD46OgpyZW1vdmVBbGwgKGJvb2wgKCpwcmVkRnVuYykgKEVs
ZW1lbnQgY29uc3QmLCB2b2lkKiksIHZvaWQqIGFkZEFyZykKeyByZXR1cm4gSW1wbE9mICgqdGhp
cykuUmVtb3ZlQWxsICgoSVByZWRGdW5jKXByZWRGdW5jLCBhZGRBcmcpOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CnJlbW92
ZUF0IChJQ3Vyc29yJiBjdXJzb3IpCnsgSW1wbE9mICgqdGhpcykuUmVtb3ZlQXQgKENyc3JJbXBs
T2YgKGN1cnNvcikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFD
b2xsZWN0aW9uIDxFbGVtZW50Pjo6CnJlcGxhY2VBdCAoSUN1cnNvciBjb25zdCYgY3Vyc29yLCBF
bGVtZW50IGNvbnN0JiBlbGVtZW50KQp7IEltcGxPZiAoKnRoaXMpLlJlcGxhY2VBdCAoQ3Jzcklt
cGxPZiAoY3Vyc29yKSwgJmVsZW1lbnQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5s
aW5lIGJvb2wKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CnNldFRvRmlyc3QgKElDdXJzb3ImIGN1
cnNvcikgY29uc3QKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuU2V0VG9GaXJzdCAoQ3JzckltcGxP
ZiAoY3Vyc29yKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgYm9vbApJQUNv
bGxlY3Rpb24gPEVsZW1lbnQ+OjoKc2V0VG9OZXh0IChJQ3Vyc29yJiBjdXJzb3IpIGNvbnN0Cnsg
cmV0dXJuIEltcGxPZiAoKnRoaXMpLlNldFRvTmV4dCAoQ3JzckltcGxPZiAoY3Vyc29yKSk7Cn0K
Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklBQ29sbGVjdGlvbiA8RWxlbWVudD46
OgpvcGVyYXRvciBJTm90aWZpZXImICgpIGNvbnN0CnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpOwp9
CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCnZvaWQKSUFDb2xsZWN0aW9uIDxF
bGVtZW50Pjo6Cm9wZXJhdG9yPDw9IChJRGF0YVN0cmVhbSYgc3RyZWFtKQp7IEltcGxPZiAoKnRo
aXMpLlN0cmVhbUluIChzdHJlYW0pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5l
CnZvaWQKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6Cm9wZXJhdG9yPj49IChJRGF0YVN0cmVhbSYg
c3RyZWFtKQp7IEltcGxPZiAoKnRoaXMpLlN0cmVhbU91dCAoc3RyZWFtKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSB2b2lkCklBQ29sbGVjdGlvbjxFbGVtZW50Pjo6CmFkb3B0
U3RyZWFtZXIgKElBQ29sbGVjdGlvblN0cmVhbWVyICpzdHJlYW1lcikKeyBJbXBsT2YgKCp0aGlz
KS5BZG9wdFN0cmVhbWVyKHN0cmVhbWVyKTsKfQoKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
PgppbmxpbmUKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CklBQ29sbGVjdGlvbiAoKQo6IElBQ29s
bGVjdGlvbkJhc2UgKCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklBQ29s
bGVjdGlvbiA8RWxlbWVudD46OgpJQUNvbGxlY3Rpb24gKElBQ29sbGVjdGlvbiA8RWxlbWVudD4g
Y29uc3QmIGNvbGxlY3Rpb24pCjogSUFDb2xsZWN0aW9uQmFzZSAoY29sbGVjdGlvbikKewp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHR5cGVuYW1lICBJQUNvbGxlY3Rpb24gPEVs
ZW1lbnQ+OjpJbXBsZW1lbnRhdGlvbiYKSUFDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CkltcGxPZiAo
SUFDb2xsZWN0aW9uIDxFbGVtZW50PiBjb25zdCYgY29sbGVjdGlvbikKeyByZXR1cm4gKihJbXBs
ZW1lbnRhdGlvbiopY29sbGVjdGlvbi5pdkltcGw7Cn0KCiAKCiMgMzYyICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhY2xsY3QuaCIgMgoKIAoKIAoj
cHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9y
ZSkKIAoKIAoKIyAyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pYW9yZGVyLmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVw
b3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9y
ZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUp
CgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgp0ZW1w
bGF0ZSA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSU9yZGVyZWRDdXJzb3IgOiBwdWJsaWMgSUVsZW1l
bnRDdXJzb3IgPEVsZW1lbnQ+CnsKICB0eXBlZGVmICBJQ3Vyc29ySW1wbCBJbXBsZW1lbnRhdGlv
bjsKCnB1YmxpYzoKCiAgYm9vbCBzZXRUb0xhc3QgICAgICAgICgpOwoKICBib29sIHNldFRvUHJl
dmlvdXMgICAgKCk7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElPcmRlcmVkQ3Vyc29yICAgKElt
cGxlbWVudGF0aW9uKik7CgojIDkzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lhb3JkZXIuaCIKCgp9OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+
CmNsYXNzIElBT3JkZXJlZENvbGxlY3Rpb24gOiBwdWJsaWMgdmlydHVhbCBJQUNvbGxlY3Rpb24g
PEVsZW1lbnQ+IHsKCiAgdHlwZWRlZiAgSUFDb2xsZWN0aW9uSW1wbCBJbXBsZW1lbnRhdGlvbjsK
CnB1YmxpYzoKCgogICAgICAgICAgIElBT3JkZXJlZENvbGxlY3Rpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChJTm90aWZpZXImKTsKCgogICAgICAgICAgfklBT3JkZXJlZENvbGxlY3Rp
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICBFbGVtZW50IGNvbnN0JgogICAg
ICAgICAgIGVsZW1lbnRBdFBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVBv
c2l0aW9uKSBjb25zdDsKCiAgRWxlbWVudCBjb25zdCYKICAgICAgICAgICBmaXJzdCAgICAgICAg
ICAgICgpIGNvbnN0OwoKICBib29sIGlzRmlyc3RBdCAgICAgICAgKElDdXJzb3IgY29uc3QmKSBj
b25zdDsKCiAgYm9vbCBpc0xhc3RBdCAgICAgICAgIChJQ3Vyc29yIGNvbnN0JikgY29uc3Q7Cgog
IEVsZW1lbnQgY29uc3QmCiAgICAgICAgICAgbGFzdCAgICAgICAgICAgICAoKSBjb25zdDsKCiAg
SVBvc2l0aW9uCiAgICAgICAgICAgcG9zaXRpb25BdCAgICAgICAoSUN1cnNvciBjb25zdCYpIGNv
bnN0OwoKCgoKICB2b2lkICAgICByZW1vdmVBdFBvc2l0aW9uIChJUG9zaXRpb24pOwoKCgoKICB2
b2lkICAgICByZW1vdmVGaXJzdCAgICAgICgpOwoKCgoKICB2b2lkICAgICByZW1vdmVMYXN0ICAg
ICAgICgpOwoKICBib29sIHNldFRvTGFzdCAgICAgICAgKElDdXJzb3ImKSBjb25zdDsKCiAgdm9p
ZCAgICAgc2V0VG9Qb3NpdGlvbiAgICAoSVBvc2l0aW9uLCBJQ3Vyc29yJikgY29uc3Q7CgogIGJv
b2wgc2V0VG9QcmV2aW91cyAgICAoSUN1cnNvciYpIGNvbnN0OwoKICAgCiAgRWxlbWVudCBjb25z
dCYKICAgICAgICAgICBmaXJzdEVsZW1lbnQgICAgICgpIGNvbnN0OwoKICBib29sIGlzRmlyc3Qg
ICAgICAgICAgKElDdXJzb3IgY29uc3QmKSBjb25zdDsKCiAgYm9vbCBpc0xhc3QgICAgICAgICAg
IChJQ3Vyc29yIGNvbnN0JikgY29uc3Q7CgogIEVsZW1lbnQgY29uc3QmCiAgICAgICAgICAgbGFz
dEVsZW1lbnQgICAgICAoKSBjb25zdDsKCiAgSVBvc2l0aW9uCiAgICAgICAgICAgcG9zaXRpb24g
ICAgICAgICAoSUN1cnNvciBjb25zdCYpIGNvbnN0OwoKcHJvdGVjdGVkOgoKICAgICAgICAgICBJ
QU9yZGVyZWRDb2xsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgICAg
ICAgICAgSUFPcmRlcmVkQ29sbGVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElB
T3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0Jik7Cgpwcml2YXRlOgoKICBzdGF0aWMK
ICBJbXBsZW1lbnRhdGlvbiYKICAgICAgICAgICBJbXBsT2YgICAgICAgICAgIChJQU9yZGVyZWRD
b2xsZWN0aW9uIDxFbGVtZW50PiBjb25zdCYpOwoKIyAxOTYgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFvcmRlci5oIgoKCn07CgogCgogCgoKCgoK
CgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgog
CgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pYW9yZGVyLmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiAKIAoK
CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIGJvb2wKSU9yZGVyZWRDdXJzb3Ig
PEVsZW1lbnQ+OjoKc2V0VG9MYXN0ICgpCnsgcmV0dXJuIHRoaXMtPkltcGxPZiAoKnRoaXMpLlNl
dFRvTGFzdCAoKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgYm9vbApJT3Jk
ZXJlZEN1cnNvciA8RWxlbWVudD46OgpzZXRUb1ByZXZpb3VzICgpCnsgcmV0dXJuIHRoaXMtPklt
cGxPZiAoKnRoaXMpLlNldFRvUHJldmlvdXMgKCk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVt
ZW50PgppbmxpbmUKSU9yZGVyZWRDdXJzb3IgPEVsZW1lbnQ+OjoKSU9yZGVyZWRDdXJzb3IgKElt
cGxlbWVudGF0aW9uKiBpbXBsKQo6IElFbGVtZW50Q3Vyc29yIDxFbGVtZW50PiAoaW1wbCkKewp9
CgogCiAKIAoKIAoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUFPcmRlcmVkQ29s
bGVjdGlvbiA8RWxlbWVudD46OgpJQU9yZGVyZWRDb2xsZWN0aW9uIChJTm90aWZpZXImIG5vdGlm
aWVyKQp7IHRoaXMtPlNldEltcGwgKChJbXBsZW1lbnRhdGlvbiopJm5vdGlmaWVyKTsKfQoKCnRl
bXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVu
dD46Ogp+SUFPcmRlcmVkQ29sbGVjdGlvbiAoKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
PgppbmxpbmUgRWxlbWVudCBjb25zdCYKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpl
bGVtZW50QXRQb3NpdGlvbiAoSVBvc2l0aW9uIHBvc2l0aW9uKSBjb25zdAp7IHJldHVybiAqKEVs
ZW1lbnQgY29uc3QqKSBJbXBsT2YgKCp0aGlzKS4KICAgIEVsZW1lbnRBdFBvc2l0aW9uIChwb3Np
dGlvbik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBjb25zdCYK
SUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46OgpmaXJzdEVsZW1lbnQgKCkgY29uc3QKeyBy
ZXR1cm4gKihFbGVtZW50IGNvbnN0KikgSW1wbE9mICgqdGhpcykuRmlyc3QgKCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBjb25zdCYKSUFPcmRlcmVkQ29sbGVj
dGlvbiA8RWxlbWVudD46OgpmaXJzdCAoKSBjb25zdAp7IHJldHVybiAqKEVsZW1lbnQgY29uc3Qq
KSBJbXBsT2YgKCp0aGlzKS5GaXJzdCAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+Cmlu
bGluZSBib29sCklBT3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKaXNGaXJzdCAoSUN1cnNv
ciBjb25zdCYgY3Vyc29yKSBjb25zdAp7IHJldHVybiB0aGlzLT5JbXBsT2YgKCp0aGlzKS5Jc0Zp
cnN0QXQgKHRoaXMtPkNyc3JJbXBsT2YgKGN1cnNvcikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudD4KaW5saW5lIGJvb2wKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46Ogppc0ZpcnN0
QXQgKElDdXJzb3IgY29uc3QmIGN1cnNvcikgY29uc3QKeyByZXR1cm4gdGhpcy0+SW1wbE9mICgq
dGhpcykuSXNGaXJzdEF0ICh0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBT3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+
OjoKaXNMYXN0IChJQ3Vyc29yIGNvbnN0JiBjdXJzb3IpIGNvbnN0CnsgcmV0dXJuIHRoaXMtPklt
cGxPZiAoKnRoaXMpLklzTGFzdEF0ICh0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBT3JkZXJlZENvbGxlY3Rpb24gPEVs
ZW1lbnQ+OjoKaXNMYXN0QXQgKElDdXJzb3IgY29uc3QmIGN1cnNvcikgY29uc3QKeyByZXR1cm4g
dGhpcy0+SW1wbE9mICgqdGhpcykuSXNMYXN0QXQgKHRoaXMtPkNyc3JJbXBsT2YgKGN1cnNvcikp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQgY29uc3QmCklBT3Jk
ZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKbGFzdEVsZW1lbnQgKCkgY29uc3QKeyByZXR1cm4g
KihFbGVtZW50IGNvbnN0KikgSW1wbE9mICgqdGhpcykuTGFzdCAoKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50IGNvbnN0JgpJQU9yZGVyZWRDb2xsZWN0aW9uIDxF
bGVtZW50Pjo6Cmxhc3QgKCkgY29uc3QKeyByZXR1cm4gKihFbGVtZW50IGNvbnN0KikgSW1wbE9m
ICgqdGhpcykuTGFzdCAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBJUG9z
aXRpb24KSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpwb3NpdGlvbiAoSUN1cnNvciBj
b25zdCYgY3Vyc29yKSBjb25zdAp7IHJldHVybiB0aGlzLT5JbXBsT2YgKCp0aGlzKS5Qb3NpdGlv
bkF0ICh0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1l
bnQ+CmlubGluZSBJUG9zaXRpb24KSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpwb3Np
dGlvbkF0IChJQ3Vyc29yIGNvbnN0JiBjdXJzb3IpIGNvbnN0CnsgcmV0dXJuIHRoaXMtPkltcGxP
ZiAoKnRoaXMpLlBvc2l0aW9uQXQgKHRoaXMtPkNyc3JJbXBsT2YgKGN1cnNvcikpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxl
bWVudD46OgpyZW1vdmVBdFBvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRpb24pCnsgdGhpcy0+SW1w
bE9mICgqdGhpcykuUmVtb3ZlQXRQb3NpdGlvbiAocG9zaXRpb24pOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD46Ogpy
ZW1vdmVGaXJzdCAoKQp7IHRoaXMtPkltcGxPZiAoKnRoaXMpLlJlbW92ZUZpcnN0ICgpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFPcmRlcmVkQ29sbGVjdGlvbiA8
RWxlbWVudD46OgpyZW1vdmVMYXN0ICgpCnsgdGhpcy0+SW1wbE9mICgqdGhpcykuUmVtb3ZlTGFz
dCAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBT3JkZXJlZENv
bGxlY3Rpb24gPEVsZW1lbnQ+OjoKc2V0VG9MYXN0IChJQ3Vyc29yJiBjdXJzb3IpIGNvbnN0Cnsg
cmV0dXJuIHRoaXMtPkltcGxPZiAoKnRoaXMpLlNldFRvTGFzdCAodGhpcy0+Q3JzckltcGxPZiAo
Y3Vyc29yKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgdm9pZApJQU9yZGVy
ZWRDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CnNldFRvUG9zaXRpb24gKElQb3NpdGlvbiBwb3NpdGlv
biwgSUN1cnNvciYgY3Vyc29yKSBjb25zdAp7IHRoaXMtPkltcGxPZiAoKnRoaXMpLlNldFRvUG9z
aXRpb24gKHBvc2l0aW9uLCB0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSBib29sCklBT3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+
OjoKc2V0VG9QcmV2aW91cyAoSUN1cnNvciYgY3Vyc29yKSBjb25zdAp7IHJldHVybiB0aGlzLT5J
bXBsT2YgKCp0aGlzKS5TZXRUb1ByZXZpb3VzICh0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsK
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQU9yZGVyZWRDb2xsZWN0aW9u
IDxFbGVtZW50Pjo6CklBT3JkZXJlZENvbGxlY3Rpb24gKCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
RWxlbWVudD4KaW5saW5lCklBT3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKSUFPcmRlcmVk
Q29sbGVjdGlvbiAoSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxlbWVudD4gY29uc3QmKQp7Cn0KCiAK
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgdHlwZW5hbWUgIElBT3JkZXJlZENvbGxl
Y3Rpb24gPEVsZW1lbnQ+OjpJbXBsZW1lbnRhdGlvbiYKSUFPcmRlcmVkQ29sbGVjdGlvbiA8RWxl
bWVudD46OgpJbXBsT2YgKElBT3JkZXJlZENvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0JiBjb2xs
ZWN0aW9uKQp7IHJldHVybiAqKEltcGxlbWVudGF0aW9uKiljb2xsZWN0aW9uLml2SW1wbDsKfQoK
IAoKIyAyMjUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWFvcmRlci5oIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChw
b3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgojIDI2ICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhc3FudGwuaCIgMgoKIAoKIAojcHJhZ21h
IGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVW
RUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19J
T0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCgoKCgoK
CgoKIAoKIAogCgogCiAKCiAKCnRlbXBsYXRlICA8Y2xhc3MgRWxlbWVudD4KY2xhc3MgSUFTZXF1
ZW50aWFsQ29sbGVjdGlvbiA6IHB1YmxpYyBJQU9yZGVyZWRDb2xsZWN0aW9uIDxFbGVtZW50Pgp7
CiAgdHlwZWRlZiBJQUNvbGxlY3Rpb25JbXBsIEltcGxlbWVudGF0aW9uOwoKcHVibGljOgoKCiAg
ICAgICAgICAgSUFTZXF1ZW50aWFsQ29sbGVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKElOb3RpZmllciYpOwoKCiAgICAgICAgICB+SUFTZXF1ZW50aWFsQ29sbGVjdGlvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgoKCgogIHZvaWQgICAgIGFkZEFzRmlyc3QgICAg
ICAgKEVsZW1lbnQgY29uc3QmKTsKCgoKCiAgdm9pZCAgICAgYWRkQXNGaXJzdCAgICAgICAoRWxl
bWVudCBjb25zdCYsIElDdXJzb3ImKTsKCgoKCiAgdm9pZCAgICAgYWRkQXNMYXN0ICAgICAgICAo
RWxlbWVudCBjb25zdCYpOwoKCgoKICB2b2lkICAgICBhZGRBc0xhc3QgICAgICAgIChFbGVtZW50
IGNvbnN0JiwgSUN1cnNvciYpOwoKCgoKICB2b2lkICAgICBhZGRBc05leHQgICAgICAgIChFbGVt
ZW50IGNvbnN0JiwgSUN1cnNvciYpOwoKCgoKICB2b2lkICAgICBhZGRBc1ByZXZpb3VzICAgIChF
bGVtZW50IGNvbnN0JiwgSUN1cnNvciYpOwoKCgoKICB2b2lkICAgICBhZGRBdFBvc2l0aW9uICAg
IChJUG9zaXRpb24sIEVsZW1lbnQgY29uc3QmKTsKCgoKCiAgdm9pZCAgICAgYWRkQXRQb3NpdGlv
biAgICAoSVBvc2l0aW9uLCBFbGVtZW50IGNvbnN0JiwgSUN1cnNvciYpOwoKICBFbGVtZW50JiBh
bnkgICAgICAgICAgICAgICgpOwoKICBFbGVtZW50IGNvbnN0JgogICAgICAgICAgIGFueSAgICAg
ICAgICAgICAgKCkgY29uc3Q7CgogIEVsZW1lbnQmIGVsZW1lbnRBdFBvc2l0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoSVBvc2l0aW9uKTsKCiAgRWxlbWVudCBjb25zdCYKICAgICAg
ICAgICBlbGVtZW50QXRQb3NpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElQb3Np
dGlvbikgY29uc3Q7CgogIEVsZW1lbnQmIGZpcnN0ICAgICAgICAgICAgKCk7CgogIEVsZW1lbnQg
Y29uc3QmCiAgICAgICAgICAgZmlyc3QgICAgICAgICAgICAoKSBjb25zdDsKCiAgRWxlbWVudCYg
bGFzdCAgICAgICAgICAgICAoKTsKCiAgRWxlbWVudCBjb25zdCYKICAgICAgICAgICBsYXN0ICAg
ICAgICAgICAgICgpIGNvbnN0OwoKCgoKICB2b2lkICAgICByZXZlcnNlICAgICAgICAgICgpOwoK
CgoKICB2b2lkICAgICBzb3J0ICAgICAgICAgICAgIChsb25nICgqY29tcGFyaXNvbkZ1bmN0aW9u
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRWxlbWVudCBjb25zdCYsIEVsZW1lbnQg
Y29uc3QmKSk7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElBU2VxdWVudGlhbENvbGxlY3Rpb24K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICAgICAgICAgICBJQVNlcXVlbnRpYWxD
b2xsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUFTZXF1ZW50aWFsQ29sbGVj
dGlvbiA8RWxlbWVudD4gY29uc3QmKTsKCnByaXZhdGU6CgogIHN0YXRpYwogIEltcGxlbWVudGF0
aW9uJgogICAgICAgICAgIEltcGxPZiAgICAgICAgICAgKElBU2VxdWVudGlhbENvbGxlY3Rpb24g
PEVsZW1lbnQ+IGNvbnN0Jik7CgojIDE4NyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9pYXNxbnRsLmgiCgoKfTsKCiAKCiAKCgoKCgoKCgoKCgojcHJh
Z21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhc3FudGwu
aW5sIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIAogCgoKCiAKCgp0ZW1w
bGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1l
bnQ+OjoKSUFTZXF1ZW50aWFsQ29sbGVjdGlvbiAoSU5vdGlmaWVyJiBub3RpZmllcikKeyB0aGlz
LT5TZXRJbXBsICgoSW1wbGVtZW50YXRpb24qKSZub3RpZmllcik7Cn0KCgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKfklB
U2VxdWVudGlhbENvbGxlY3Rpb24gKCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5s
aW5lIHZvaWQKSUFTZXF1ZW50aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46OgphZGRBc0ZpcnN0IChF
bGVtZW50IGNvbnN0JiBlbGVtZW50KQp7IEltcGxPZiAoKnRoaXMpLkFkZEFzRmlyc3QgKCZlbGVt
ZW50KTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSB2b2lkCklBU2VxdWVudGlh
bENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYWRkQXNGaXJzdCAoRWxlbWVudCBjb25zdCYgZWxlbWVu
dCwgSUN1cnNvciYgY3Vyc29yKQp7IEltcGxPZiAoKnRoaXMpLkFkZEFzRmlyc3QgKCZlbGVtZW50
LCB0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+
CmlubGluZSB2b2lkCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYWRkQXNMYXN0
IChFbGVtZW50IGNvbnN0JiBlbGVtZW50KQp7IEltcGxPZiAoKnRoaXMpLkFkZEFzTGFzdCAoJmVs
ZW1lbnQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFTZXF1ZW50
aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46OgphZGRBc0xhc3QgKEVsZW1lbnQgY29uc3QmIGVsZW1l
bnQsIElDdXJzb3ImIGN1cnNvcikKeyBJbXBsT2YgKCp0aGlzKS5BZGRBc0xhc3QgKCZlbGVtZW50
LCB0aGlzLT5DcnNySW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+
CmlubGluZSB2b2lkCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYWRkQXNOZXh0
IChFbGVtZW50IGNvbnN0JiBlbGVtZW50LCBJQ3Vyc29yJiBjdXJzb3IpCnsgSW1wbE9mICgqdGhp
cykuQWRkQXNOZXh0ICgmZWxlbWVudCwgdGhpcy0+Q3JzckltcGxPZiAoY3Vyc29yKSk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgdm9pZApJQVNlcXVlbnRpYWxDb2xsZWN0aW9u
IDxFbGVtZW50Pjo6CmFkZEFzUHJldmlvdXMgKEVsZW1lbnQgY29uc3QmIGVsZW1lbnQsIElDdXJz
b3ImIGN1cnNvcikKeyBJbXBsT2YgKCp0aGlzKS5BZGRBc1ByZXZpb3VzICgmZWxlbWVudCwgdGhp
cy0+Q3JzckltcGxPZiAoY3Vyc29yKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50Pgppbmxp
bmUgdm9pZApJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CmFkZEF0UG9zaXRpb24g
KElQb3NpdGlvbiBwb3NpdGlvbiwgRWxlbWVudCBjb25zdCYgZWxlbWVudCkKeyBJbXBsT2YgKCp0
aGlzKS5BZGRBdFBvc2l0aW9uIChwb3NpdGlvbiwgJmVsZW1lbnQpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSUFTZXF1ZW50aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46
OgphZGRBdFBvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRpb24sCiAgICAgICAgICAgICAgIEVsZW1l
bnQgY29uc3QmIGVsZW1lbnQsIElDdXJzb3ImIGN1cnNvcikKeyBJbXBsT2YgKCp0aGlzKS4KICAg
IEFkZEF0UG9zaXRpb24gKHBvc2l0aW9uLCAmZWxlbWVudCwgdGhpcy0+Q3JzckltcGxPZiAoY3Vy
c29yKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCYKSUFTZXF1
ZW50aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46OgphbnkgKCkKeyByZXR1cm4gKihFbGVtZW50Kikg
SW1wbE9mICgqdGhpcykuQW55ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5l
IEVsZW1lbnQgY29uc3QmCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKYW55ICgp
IGNvbnN0CnsgcmV0dXJuICooRWxlbWVudCBjb25zdCopIEltcGxPZiAoKnRoaXMpLkFueSAoKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50JgpJQVNlcXVlbnRpYWxD
b2xsZWN0aW9uIDxFbGVtZW50Pjo6CmVsZW1lbnRBdFBvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRp
b24pCnsgcmV0dXJuICooRWxlbWVudCopIEltcGxPZiAoKnRoaXMpLkVsZW1lbnRBdFBvc2l0aW9u
IChwb3NpdGlvbik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBj
b25zdCYKSUFTZXF1ZW50aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46OgplbGVtZW50QXRQb3NpdGlv
biAoSVBvc2l0aW9uIHBvc2l0aW9uKSBjb25zdAp7IHJldHVybiAqKEVsZW1lbnQgY29uc3QqKSBJ
bXBsT2YgKCp0aGlzKS5FbGVtZW50QXRQb3NpdGlvbiAocG9zaXRpb24pOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudD4KaW5saW5lIEVsZW1lbnQmCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVs
ZW1lbnQ+OjoKZmlyc3QgKCkKeyByZXR1cm4gKihFbGVtZW50KikgSW1wbE9mICgqdGhpcykuRmly
c3QgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUgRWxlbWVudCBjb25zdCYK
SUFTZXF1ZW50aWFsQ29sbGVjdGlvbiA8RWxlbWVudD46OgpmaXJzdCAoKSBjb25zdAp7IHJldHVy
biAqKEVsZW1lbnQgY29uc3QqKSBJbXBsT2YgKCp0aGlzKS5GaXJzdCAoKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50JgpJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxF
bGVtZW50Pjo6Cmxhc3QgKCkKeyByZXR1cm4gKihFbGVtZW50KikgSW1wbE9mICgqdGhpcykuTGFz
dCAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBFbGVtZW50IGNvbnN0JgpJ
QVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVtZW50Pjo6Cmxhc3QgKCkgY29uc3QKeyByZXR1cm4g
KihFbGVtZW50IGNvbnN0KikgSW1wbE9mICgqdGhpcykuTGFzdCAoKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQ+CmlubGluZSB2b2lkCklBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+
OjoKcmV2ZXJzZSAoKQp7IEltcGxPZiAoKnRoaXMpLlJldmVyc2UgKCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50PgppbmxpbmUgdm9pZApJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVtZW50
Pjo6CnNvcnQgKGxvbmcgKCpjb21wRnVuYykgKEVsZW1lbnQgY29uc3QmLCBFbGVtZW50IGNvbnN0
JikpCnsgSW1wbE9mICgqdGhpcykuU29ydCAoKElDb21wRnVuYyljb21wRnVuYywgMCk7Cn0KCiAK
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSUFTZXF1ZW50aWFsQ29sbGVjdGlvbiA8
RWxlbWVudD46OgpJQVNlcXVlbnRpYWxDb2xsZWN0aW9uICgpCnsKfQoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQ+CmlubGluZQpJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVtZW50Pjo6CklBU2Vx
dWVudGlhbENvbGxlY3Rpb24gKElBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0
JikKewp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHR5cGVuYW1lICBJQVNl
cXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVtZW50Pjo6SW1wbGVtZW50YXRpb24mCklBU2VxdWVudGlh
bENvbGxlY3Rpb24gPEVsZW1lbnQ+OjoKSW1wbE9mIChJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxF
bGVtZW50PiBjb25zdCYgY29sbGVjdGlvbikKeyByZXR1cm4gKihJbXBsZW1lbnRhdGlvbiopY29s
bGVjdGlvbi5pdkltcGw7Cn0KCiAKCiMgMjE2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhc3FudGwuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9u
ZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyNiAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYXNlcS5o
IiAyCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWlhc2VxLmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoKIAoKIAoj
cHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBP
UlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xp
bmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoK
CgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCmNsYXNzICAgSUFTZXF1ZW5jZUltcGwgOiBwdWJsaWMg
SUFDb2xsZWN0aW9uSW1wbCB7CnB1YmxpYzoKCiAgICAgICAgICB+SUFTZXF1ZW5jZUltcGwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICB2aXJ0dWFsCiAgbG9uZyAgICAgQ29tcGFy
ZSAgICAgICAgICAoSUFTZXF1ZW5jZUltcGwgY29uc3QmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElDb21wRnVuYywgdm9pZCopIGNvbnN0OwoKcHJvdGVjdGVkOgoKICAgICAgICAgICBJ
QVNlcXVlbmNlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wcyYpOwoKcHJpdmF0
ZToKCiMgOTUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWlhc2VxLmgiCgoKfTsKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNw
cmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkK
I3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyNyAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYXNlcS5oIiAy
CgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwgX19JT0NfSEVB
REVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgojcHJhZ21hIG5h
bWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0
KQoKCgoKCgoKCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+
CmNsYXNzIElBU2VxdWVuY2UgOgogIHB1YmxpYyBJQVNlcXVlbnRpYWxDb2xsZWN0aW9uIDxFbGVt
ZW50PiB7CgogIHR5cGVkZWYgIElBU2VxdWVudGlhbENvbGxlY3Rpb24gPEVsZW1lbnQ+IEluaGVy
aXRlZDsKCiAgdHlwZWRlZiAgSUFTZXF1ZW5jZUltcGwgSW1wbGVtZW50YXRpb247CgpwdWJsaWM6
CgoKICAgICAgICAgICBJQVNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5v
dGlmaWVyJik7CgoKICAgICAgICAgIH5JQVNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoKTsKCiAgbG9uZyAgICAgY29tcGFyZSAgICAgICAgICAoSUFTZXF1ZW5jZSA8RWxlbWVu
dD4gY29uc3QmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKCpjb21wYXJpc29u
RnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFbGVtZW50IGNvbnN0Jiwg
RWxlbWVudCBjb25zdCYpKSBjb25zdDsKCnByb3RlY3RlZDoKCiAgICAgICAgICAgSUFTZXF1ZW5j
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogICAgICAgICAgIElBU2VxdWVuY2UK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQVNlcXVlbmNlIDxFbGVtZW50PiBjb25zdCYp
OwoKcHJpdmF0ZToKCiAgc3RhdGljCiAgSW1wbGVtZW50YXRpb24mCiAgICAgICAgICAgSW1wbE9m
ICAgICAgICAgICAoSUFTZXF1ZW5jZSA8RWxlbWVudD4gY29uc3QmKTsKCiMgMTE2ICIvaG9tZS9h
a25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lhc2VxLmgiCgoKfTsK
CiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5n
KHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVk
LmJpbi9pbmNsdWRlL2lhc2VxLmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAog
CgogCiAKIAoKCgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQVNlcXVlbmNlIDxF
bGVtZW50Pjo6CklBU2VxdWVuY2UgKElOb3RpZmllciYgbm90aWZpZXIpCnsgdGhpcy0+U2V0SW1w
bCAoKEltcGxlbWVudGF0aW9uKikmbm90aWZpZXIpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1l
bnQ+CmlubGluZQpJQVNlcXVlbmNlIDxFbGVtZW50Pjo6Cn5JQVNlcXVlbmNlICgpCnsKfQoKdGVt
cGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZSBsb25nCklBU2VxdWVuY2UgPEVsZW1lbnQ+OjoK
Y29tcGFyZSAoSUFTZXF1ZW5jZSA8RWxlbWVudD4gY29uc3QmIGNvbGxlY3Rpb24sCiAgICAgICAg
IGxvbmcgKCpjb21wRnVuYykgKEVsZW1lbnQgY29uc3QmLCBFbGVtZW50IGNvbnN0JikpIGNvbnN0
CnsgcmV0dXJuIHRoaXMtPkltcGxPZiAoKnRoaXMpLgogICAgQ29tcGFyZSAodGhpcy0+SW1wbE9m
IChjb2xsZWN0aW9uKSwgKElDb21wRnVuYyljb21wRnVuYywgMCk7Cn0KCiAKCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50PgppbmxpbmUKSUFTZXF1ZW5jZSA8RWxlbWVudD46OgpJQVNlcXVlbmNlICgp
CnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJQVNlcXVlbmNlIDxFbGVtZW50
Pjo6CklBU2VxdWVuY2UgKElBU2VxdWVuY2UgPEVsZW1lbnQ+IGNvbnN0JiBjb2xsZWN0aW9uKQo6
IEluaGVyaXRlZCAoY29sbGVjdGlvbikKewp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4K
aW5saW5lIHR5cGVuYW1lICBJQVNlcXVlbmNlIDxFbGVtZW50Pjo6SW1wbGVtZW50YXRpb24mCklB
U2VxdWVuY2UgPEVsZW1lbnQ+OjoKSW1wbE9mIChJQVNlcXVlbmNlIDxFbGVtZW50PiBjb25zdCYg
Y29sbGVjdGlvbikKeyByZXR1cm4gKihJbXBsZW1lbnRhdGlvbiopY29sbGVjdGlvbi5pdkltcGw7
Cn0KCiAKCiMgMTQ1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lhc2VxLmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMjcgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXNlcS5oIiAyCgojIDEgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmgiIDEKCgoK
IAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUp
CiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21h
IGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5H
TElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoK
IAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KY2xhc3MgSUNTZXF1ZW5jZUltcGwg
OiBwdWJsaWMgQ0luaGVyaXRlZCB7CnB1YmxpYzoKCiAgdHlwZWRlZiB0eXBlbmFtZSAgQ0luaGVy
aXRlZDo6T3BzIE9wczsKCiAgICAgICAgICAgSUNTZXF1ZW5jZUltcGwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChPcHMmLCBJTnVtYmVyKTsKCiAgICAgICAgICAgSUNTZXF1ZW5jZUltcGwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHMmLCBJQ1NlcXVlbmNlSW1wbAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q0luaGVyaXRlZD4gY29uc3QmKTsKCiAgYm9v
bCAgICAgQWRkICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIHZv
aWQgICAgIEFkZEFsbEZyb20gICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKTsKCiAgdm9p
ZCAgICAgQWRkQXNGaXJzdCAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIHZv
aWQgICAgIEFkZEFzTGFzdCAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2
b2lkICAgICBBZGRBc05leHQgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsKCiAg
dm9pZCAgICAgQWRkQXNQcmV2aW91cyAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7Cgog
IHZvaWQgICAgIEFkZEF0UG9zaXRpb24gICAgKElQb3NpdGlvbiwgdm9pZCBjb25zdCosIElDdXJz
b3JJbXBsJik7CgogIHZvaWQqICAgIEFueSAgICAgICAgICAgICAgKCkgY29uc3Q7CgogIHZvaWQq
ICAgIEVsZW1lbnRBdCAgICAgICAgKElDdXJzb3JJbXBsIGNvbnN0JikgY29uc3Q7CgogIHZvaWQq
ICAgIEVsZW1lbnRBdFBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVBvc2l0
aW9uKSBjb25zdDsKCiAgdm9pZCogICAgRmlyc3QgICAgICAgICAgICAoKSBjb25zdDsKCiAgYm9v
bCAgICAgSXNGaXJzdEF0ICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgYm9v
bCAgICAgSXNMYXN0QXQgICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgdm9p
ZCogICAgTGFzdCAgICAgICAgICAgICAoKSBjb25zdDsKCiAgSVBvc2l0aW9uCiAgICAgICAgICAg
UG9zaXRpb25BdCAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgdm9pZCAgICAg
UmVtb3ZlQXQgICAgICAgICAoSUN1cnNvckltcGwmKTsKCiAgdm9pZCAgICAgUmVtb3ZlQXRQb3Np
dGlvbiAoSVBvc2l0aW9uKTsKCiAgdm9pZCAgICAgUmVtb3ZlRmlyc3QgICAgICAoKTsKCiAgdm9p
ZCAgICAgUmVtb3ZlTGFzdCAgICAgICAoKTsKCiAgdm9pZCAgICAgUmVwbGFjZUF0ICAgICAgICAo
SUN1cnNvckltcGwgY29uc3QmIGN1cnNvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkIGNvbnN0Kik7CgogIHZvaWQgICAgIFJlcGxhY2VBdFBvc2l0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoSVBvc2l0aW9uLCB2b2lkIGNvbnN0Kik7CgogIGJvb2wgICAgIFNldFRv
Rmlyc3QgICAgICAgKElDdXJzb3JJbXBsJikgY29uc3Q7CgogIGJvb2wgICAgIFNldFRvTGFzdCAg
ICAgICAgKElDdXJzb3JJbXBsJikgY29uc3Q7CgogIGJvb2wgICAgIFNldFRvTmV4dCAgICAgICAg
KElDdXJzb3JJbXBsJikgY29uc3Q7CgogIHZvaWQgICAgIFNldFRvUG9zaXRpb24gICAgKElQb3Np
dGlvbiwgSUN1cnNvckltcGwmKSBjb25zdDsKCiAgYm9vbCAgICAgU2V0VG9QcmV2aW91cyAgICAo
SUN1cnNvckltcGwmKSBjb25zdDsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgojIDE1MyAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuaCIKCgp9
OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xp
bmcocG9wKQoKCgoKIAoKIAoKCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiAxCiAKIAoKCgoKCgoKCgoKCgogCiAKIAogCgoK
CgoKCgoKCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KSUNTZXF1ZW5jZUlt
cGwgPENJbmhlcml0ZWQ+OjoKSUNTZXF1ZW5jZUltcGwgKE9wcyYgb3BzLCBJTnVtYmVyIG51bWJl
ck9mRWxlbWVudHMpCjogQ0luaGVyaXRlZCAob3BzLCBudW1iZXJPZkVsZW1lbnRzKQp7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgpJQ1NlcXVlbmNlSW1wbCA8Q0luaGVyaXRlZD46OgpJ
Q1NlcXVlbmNlSW1wbAogIChPcHMmIG9wcywgSUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+IGNv
bnN0JiBjb2xsZWN0aW9uKQo6IENJbmhlcml0ZWQgKG9wcywgY29sbGVjdGlvbikKewp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ1NlcXVlbmNlSW1wbCA8Q0luaGVyaXRlZD46
OgpBZGQgKHZvaWQgY29uc3QqIGVsZW1lbnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsgeyBpZiAo
ISAoIGN1cnNvci5Jc0ZvciAoKnRoaXMpICkpICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25J
bXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiQWRkIiAgLCAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIs
IDUzKTsgfSAgCgogIGJvb2wgaGFzQmVlbkFkZGVkID0gQ0luaGVyaXRlZDo6QWRkIChlbGVtZW50
LCBjdXJzb3IpOwogIHJldHVybiBoYXNCZWVuQWRkZWQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5o
ZXJpdGVkPgp2b2lkCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6CkFkZEFsbEZyb20gKElB
Q29sbGVjdGlvbkltcGwgY29uc3QmIGNvbGxlY3Rpb24pCnsgeyBpZiAoISAoIHRoaXMgIT0gJmNv
bGxlY3Rpb24gKSkgICBJSWRlbnRpY2FsQ29sbGVjdGlvbkV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0
ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJBZGRBbGxGcm9tIiAgLCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIsIDYzKTsg
fSAgCgogIENJbmhlcml0ZWQ6OkFkZEFsbEZyb20gKGNvbGxlY3Rpb24pOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZApJQ1NlcXVlbmNlSW1wbCA8Q0luaGVyaXRlZD46OgpBZGRB
c0ZpcnN0ICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJQ3Vyc29ySW1wbCYgY3Vyc29yKQp7IHsgaWYg
KCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9u
SW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkFkZEFzRmlyc3Qi
ICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lp
Y3NlcS5jIiwgNzIpOyB9ICAKCiAgQ0luaGVyaXRlZDo6QWRkQXNGaXJzdCAoZWxlbWVudCwgY3Vy
c29yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIENJbmhlcml0ZWQ+CnZvaWQKSUNTZXF1ZW5jZUltcGwg
PENJbmhlcml0ZWQ+OjoKQWRkQXNMYXN0ICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJQ3Vyc29ySW1w
bCYgY3Vyc29yKQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JO
b3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAg
LCAgICAgIkFkZEFzTGFzdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCA4MSk7IH0gIAoKICBDSW5oZXJpdGVkOjpBZGRBc0xh
c3QgKGVsZW1lbnQsIGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lk
CklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6CkFkZEFzTmV4dCAodm9pZCBjb25zdCogZWxl
bWVudCwgSUN1cnNvckltcGwmIGN1cnNvcikKeyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhp
cykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlz
LT5DbGFzc05hbWUgKCkgICwgICAgICJBZGRBc05leHQiICAsICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgOTApOyB9ICAKICB7IGlm
ICghICggY3Vyc29yLklzVmFsaWQgKCkgKSkgICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbkltcGwg
Ojp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJBZGRBc05leHQiICAsICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5j
IiwgOTEpOyB9ICAKCgoKCiAgQ0luaGVyaXRlZDo6QWRkQXNOZXh0IChlbGVtZW50LCBjdXJzb3Ip
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZApJQ1NlcXVlbmNlSW1wbCA8Q0lu
aGVyaXRlZD46OgpBZGRBc1ByZXZpb3VzICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJQ3Vyc29ySW1w
bCYgY3Vyc29yKQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JO
b3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAg
LCAgICAgIkFkZEFzUHJldmlvdXMiICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMTAzKTsgfSAgCiAgeyBpZiAoISAoIGN1cnNv
ci5Jc1ZhbGlkICgpICkpICAgSUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAo
ICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiQWRkQXNQcmV2aW91cyIgICwgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAxMDQp
OyB9ICAKCgoKCiAgQ0luaGVyaXRlZDo6QWRkQXNQcmV2aW91cyAoZWxlbWVudCwgY3Vyc29yKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIENJbmhlcml0ZWQ+CnZvaWQKSUNTZXF1ZW5jZUltcGwgPENJbmhl
cml0ZWQ+OjoKQWRkQXRQb3NpdGlvbiAoSVBvc2l0aW9uIHBvc2l0aW9uLAogICAgICAgICAgICAg
ICB2b2lkIGNvbnN0KiBlbGVtZW50LAogICAgICAgICAgICAgICBJQ3Vyc29ySW1wbCYgY3Vyc29y
KQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JOb3RGb3JUaGlz
RXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkFk
ZEF0UG9zaXRpb24iICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2lpY3NlcS5jIiwgMTE4KTsgfSAgCiAgeyBpZiAoISAoIDEgPD0gcG9zaXRpb24g
JiYgcG9zaXRpb24gPD0gdGhpcy0+TnVtYmVyT2ZFbGVtZW50cyAoKSArIDEgKSkgICBJUG9zaXRp
b25JbnZhbGlkRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAg
LCAgICAgIkFkZEF0UG9zaXRpb24iICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMTE5KTsgfSAgCgogIENJbmhlcml0ZWQ6OkFk
ZEF0UG9zaXRpb24gKHBvc2l0aW9uLCBlbGVtZW50LCBjdXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgQ0luaGVyaXRlZD4Kdm9pZCoKSUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+OjoKQW55ICgp
IGNvbnN0CnsgeyBpZiAoISAoICEgdGhpcy0+SXNFbXB0eSAoKSApKSAgIElFbXB0eUV4Y2VwdGlv
bkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJBbnkiICAsICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5j
IiwgMTI4KTsgfSAgCgogIHJldHVybiBDSW5oZXJpdGVkOjpBbnkgKCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBDSW5oZXJpdGVkPgp2b2lkKgpJQ1NlcXVlbmNlSW1wbCA8Q0luaGVyaXRlZD46OgpFbGVt
ZW50QXQgKElDdXJzb3JJbXBsIGNvbnN0JiBjdXJzb3IpIGNvbnN0CnsgeyBpZiAoISAoIGN1cnNv
ci5Jc0ZvciAoKnRoaXMpICkpICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsIDo6dGhy
b3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiRWxlbWVudEF0IiAgLCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIsIDEz
Nyk7IH0gIAogIHsgaWYgKCEgKCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJbnZhbGlk
RXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkVs
ZW1lbnRBdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWljc2VxLmMiLCAxMzgpOyB9ICAKCgoKCgoKCiAgcmV0dXJuIENJbmhlcml0ZWQ6OkVs
ZW1lbnRBdCAoY3Vyc29yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIENJbmhlcml0ZWQ+CnZvaWQqCklD
U2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6CkVsZW1lbnRBdFBvc2l0aW9uIChJUG9zaXRpb24g
cG9zaXRpb24pIGNvbnN0CnsgeyBpZiAoISAoIDEgPD0gcG9zaXRpb24gJiYgcG9zaXRpb24gPD0g
dGhpcy0+TnVtYmVyT2ZFbGVtZW50cyAoKSApKSAgIElQb3NpdGlvbkludmFsaWRFeGNlcHRpb25J
bXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiRWxlbWVudEF0UG9z
aXRpb24iICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lpY3NlcS5jIiwgMTUzKTsgfSAgCgogIHJldHVybiBDSW5oZXJpdGVkOjpFbGVtZW50QXRQ
b3NpdGlvbiAocG9zaXRpb24pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZCoK
SUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+OjoKRmlyc3QgKCkgY29uc3QKeyB7IGlmICghICgg
ISB0aGlzLT5Jc0VtcHR5ICgpICkpICAgSUVtcHR5RXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAg
IHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkZpcnN0IiAgLCAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIsIDE2Mik7IH0gIAoKICBy
ZXR1cm4gQ0luaGVyaXRlZDo6Rmlyc3QgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVk
Pgpib29sCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6CklzRmlyc3RBdCAoSUN1cnNvcklt
cGwgY29uc3QmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykg
KSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5D
bGFzc05hbWUgKCkgICwgICAgICJJc0ZpcnN0QXQiICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMTcxKTsgfSAgCiAgeyBpZiAo
ISAoIGN1cnNvci5Jc1ZhbGlkICgpICkpICAgSUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBsIDo6
dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiSXNGaXJzdEF0IiAgLCAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIs
IDE3Mik7IH0gIAoKCgoKCgoKICByZXR1cm4gQ0luaGVyaXRlZDo6SXNGaXJzdEF0IChjdXJzb3Ip
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ1NlcXVlbmNlSW1wbCA8Q0lu
aGVyaXRlZD46OgpJc0xhc3RBdCAoSUN1cnNvckltcGwgY29uc3QmIGN1cnNvcikgY29uc3QKeyB7
IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2Vw
dGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJJc0xhc3RB
dCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWljc2VxLmMiLCAxODcpOyB9ICAKICB7IGlmICghICggY3Vyc29yLklzVmFsaWQgKCkgKSkgICBJ
Q3Vyc29ySW52YWxpZEV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUg
KCkgICwgICAgICJJc0xhc3RBdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1z
aGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAxODgpOyB9ICAKCgoKCgoKCiAgcmV0dXJuIENJ
bmhlcml0ZWQ6OklzTGFzdEF0IChjdXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRl
ZD4Kdm9pZCoKSUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+OjoKTGFzdCAoKSBjb25zdAp7IHsg
aWYgKCEgKCAhIHRoaXMtPklzRW1wdHkgKCkgKSkgICBJRW1wdHlFeGNlcHRpb25JbXBsIDo6dGhy
b3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiTGFzdCIgICwgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAyMDMpOyB9
ICAKCiAgcmV0dXJuIENJbmhlcml0ZWQ6Okxhc3QgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5o
ZXJpdGVkPgpJUG9zaXRpb24KSUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+OjoKUG9zaXRpb25B
dCAoSUN1cnNvckltcGwgY29uc3QmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklz
Rm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0
ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJQb3NpdGlvbkF0IiAgLCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIsIDIxMik7
IH0gIAogIHsgaWYgKCEgKCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJbnZhbGlkRXhj
ZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIlBvc2l0
aW9uQXQiICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lpY3NlcS5jIiwgMjEzKTsgfSAgCgoKCgoKCgogIHJldHVybiBDSW5oZXJpdGVkOjpQb3Np
dGlvbkF0IChjdXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZApJQ1Nl
cXVlbmNlSW1wbCA8Q0luaGVyaXRlZD46OgpSZW1vdmVBdCAoSUN1cnNvckltcGwmIGN1cnNvcikK
eyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4
Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJSZW1v
dmVBdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWljc2VxLmMiLCAyMjgpOyB9ICAKICB7IGlmICghICggY3Vyc29yLklzVmFsaWQgKCkgKSkg
ICBJQ3Vyc29ySW52YWxpZEV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05h
bWUgKCkgICwgICAgICJSZW1vdmVBdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAyMjkpOyB9ICAKCgoKCgoKCiAgQ0luaGVy
aXRlZDo6UmVtb3ZlQXQgKGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2
b2lkCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClJlbW92ZUF0UG9zaXRpb24gKElQb3Np
dGlvbiBwb3NpdGlvbikKeyB7IGlmICghICggMSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSB0
aGlzLT5OdW1iZXJPZkVsZW1lbnRzICgpICkpICAgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbklt
cGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJSZW1vdmVBdFBvc2l0
aW9uIiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9paWNzZXEuYyIsIDI0NCk7IH0gIAoKICBDSW5oZXJpdGVkOjpSZW1vdmVBdFBvc2l0aW9uIChw
b3NpdGlvbik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lkCklDU2VxdWVuY2VJ
bXBsIDxDSW5oZXJpdGVkPjo6ClJlbW92ZUZpcnN0ICgpCnsgeyBpZiAoISAoICEgdGhpcy0+SXNF
bXB0eSAoKSApKSAgIElFbXB0eUV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFz
c05hbWUgKCkgICwgICAgICJSZW1vdmVGaXJzdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAyNTMpOyB9ICAKCiAgQ0luaGVy
aXRlZDo6UmVtb3ZlRmlyc3QgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lk
CklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClJlbW92ZUxhc3QgKCkKeyB7IGlmICghICgg
ISB0aGlzLT5Jc0VtcHR5ICgpICkpICAgSUVtcHR5RXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAg
IHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIlJlbW92ZUxhc3QiICAsICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMjYyKTsgfSAg
CgogIENJbmhlcml0ZWQ6OlJlbW92ZUxhc3QgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJp
dGVkPgp2b2lkCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClJlcGxhY2VBdCAoSUN1cnNv
ckltcGwgY29uc3QmIGN1cnNvciwgdm9pZCBjb25zdCogZWxlbWVudCkKeyB7IGlmICghICggY3Vy
c29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0
aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJSZXBsYWNlQXQiICAsICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwg
MjcxKTsgfSAgCiAgeyBpZiAoISAoIGN1cnNvci5Jc1ZhbGlkICgpICkpICAgSUN1cnNvckludmFs
aWRFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAi
UmVwbGFjZUF0IiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9paWNzZXEuYyIsIDI3Mik7IH0gIAoKCgoKCgoKICBDSW5oZXJpdGVkOjpSZXBsYWNl
QXQgKGN1cnNvciwgZWxlbWVudCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lk
CklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClJlcGxhY2VBdFBvc2l0aW9uIChJUG9zaXRp
b24gcG9zaXRpb24sIHZvaWQgY29uc3QqIGVsZW1lbnQpCnsgeyBpZiAoISAoIDEgPD0gcG9zaXRp
b24gJiYgcG9zaXRpb24gPD0gdGhpcy0+TnVtYmVyT2ZFbGVtZW50cyAoKSApKSAgIElQb3NpdGlv
bkludmFsaWRFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAs
ICAgICAiUmVwbGFjZUF0UG9zaXRpb24iICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMjg3KTsgfSAgCgogIENJbmhlcml0ZWQ6
OlJlcGxhY2VBdFBvc2l0aW9uIChwb3NpdGlvbiwgZWxlbWVudCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBDSW5oZXJpdGVkPgpib29sCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClNldFRvRmly
c3QgKElDdXJzb3JJbXBsJiBjdXJzb3IpIGNvbnN0CnsgeyBpZiAoISAoIGN1cnNvci5Jc0ZvciAo
KnRoaXMpICkpICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAg
dGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiU2V0VG9GaXJzdCIgICwgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAyOTYpOyB9ICAK
CiAgcmV0dXJuIENJbmhlcml0ZWQ6OlNldFRvRmlyc3QgKGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBDSW5oZXJpdGVkPgpib29sCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClNldFRv
TGFzdCAoSUN1cnNvckltcGwmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklzRm9y
ICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICgg
ICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJTZXRUb0xhc3QiICAsICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMzA1KTsgfSAg
CgogIHJldHVybiBDSW5oZXJpdGVkOjpTZXRUb0xhc3QgKGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBDSW5oZXJpdGVkPgpib29sCklDU2VxdWVuY2VJbXBsIDxDSW5oZXJpdGVkPjo6ClNldFRv
TmV4dCAoSUN1cnNvckltcGwmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklzRm9y
ICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICgg
ICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJTZXRUb05leHQiICAsICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMzE0KTsgfSAg
CiAgeyBpZiAoISAoIGN1cnNvci5Jc1ZhbGlkICgpICkpICAgSUN1cnNvckludmFsaWRFeGNlcHRp
b25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiU2V0VG9OZXh0
IiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
aWNzZXEuYyIsIDMxNSk7IH0gIAoKCgoKICByZXR1cm4gQ0luaGVyaXRlZDo6U2V0VG9OZXh0IChj
dXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZApJQ1NlcXVlbmNlSW1w
bCA8Q0luaGVyaXRlZD46OgpTZXRUb1Bvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRpb24sIElDdXJz
b3JJbXBsJiBjdXJzb3IpIGNvbnN0CnsgeyBpZiAoISAoIGN1cnNvci5Jc0ZvciAoKnRoaXMpICkp
ICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xh
c3NOYW1lICgpICAsICAgICAiU2V0VG9Qb3NpdGlvbiIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWljc2VxLmMiLCAzMjcpOyB9ICAKICB7IGlm
ICghICggMSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSB0aGlzLT5OdW1iZXJPZkVsZW1lbnRz
ICgpICkpICAgSVBvc2l0aW9uSW52YWxpZEV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlz
LT5DbGFzc05hbWUgKCkgICwgICAgICJTZXRUb1Bvc2l0aW9uIiAgLCAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEuYyIsIDMyOCk7IH0gIAoK
ICBDSW5oZXJpdGVkOjpTZXRUb1Bvc2l0aW9uIChwb3NpdGlvbiwgY3Vyc29yKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIENJbmhlcml0ZWQ+CmJvb2wKSUNTZXF1ZW5jZUltcGwgPENJbmhlcml0ZWQ+OjoK
U2V0VG9QcmV2aW91cyAoSUN1cnNvckltcGwmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vy
c29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0
aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJTZXRUb1ByZXZpb3VzIiAgLCAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNzZXEu
YyIsIDMzNyk7IH0gIAogIHsgaWYgKCEgKCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJ
bnZhbGlkRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAg
ICAgIlNldFRvUHJldmlvdXMiICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5jIiwgMzM4KTsgfSAgCgoKCgogIHJldHVybiBDSW5oZXJp
dGVkOjpTZXRUb1ByZXZpb3VzIChjdXJzb3IpOwp9CgoKCgoKCiMgMTg2ICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY3NlcS5oIiAyCgoKCiAKCiAK
I3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3Rv
cmUpCiAKCiAKCiMgMjggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaXNlcS5oIiAyCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpdnNlcS5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAK
IAogCiAKCiAKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwg
X19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgoj
cHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFn
bWEgZW51bSg0KQoKCgoKCgoKCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNz
IFZJbmhlcml0ZWQ+CmNsYXNzIElWU2VxdWVuY2VJbXBsIDogcHVibGljIFZJbmhlcml0ZWQgewpw
dWJsaWM6CgogIHR5cGVkZWYgdHlwZW5hbWUgIFZJbmhlcml0ZWQ6Ok9wcyBPcHM7CgogICAgICAg
ICAgIElWU2VxdWVuY2VJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3BzJiwgSU51
bWJlcik7CgogICAgICAgICAgIElWU2VxdWVuY2VJbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoT3BzJiwgSVZTZXF1ZW5jZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPFZJbmhlcml0ZWQ+IGNvbnN0Jik7CgogIGJvb2wgICAgIEFkZCAgICAgICAgICAgICAg
KHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBBZGRBbGxGcm9tICAgICAg
IChJQUNvbGxlY3Rpb25JbXBsIGNvbnN0Jik7CgogIHZvaWQgICAgIEFkZEFzRmlyc3QgICAgICAg
KHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBBZGRBc0xhc3QgICAgICAg
ICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsKCiAgdm9pZCAgICAgQWRkQXNOZXh0ICAgICAg
ICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIHZvaWQgICAgIEFkZEFzUHJldmlvdXMg
ICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBBZGRBdFBvc2l0aW9u
ICAgIChJUG9zaXRpb24sIHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBD
b3B5ICAgICAgICAgICAgIChJQUNvbGxlY3Rpb25JbXBsIGNvbnN0Jik7CgogIElOdW1iZXIgIFJl
bW92ZUFsbCAgICAgICAgKCk7CgogIElOdW1iZXIgIFJlbW92ZUFsbCAgICAgICAgKElQcmVkRnVu
Yywgdm9pZCopOwoKICB2b2lkICAgICBSZW1vdmVBdCAgICAgICAgIChJQ3Vyc29ySW1wbCYpOwoK
ICB2b2lkICAgICBSZW1vdmVBdFBvc2l0aW9uIChJUG9zaXRpb24pOwoKICB2b2lkICAgICBSZW1v
dmVGaXJzdCAgICAgICgpOwoKICB2b2lkICAgICBSZW1vdmVMYXN0ICAgICAgICgpOwoKICB2b2lk
ICAgICBSZXBsYWNlQXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYsIHZvaWQgY29uc3QqKTsK
CiAgdm9pZCAgICAgUmV2ZXJzZSAgICAgICAgICAoKTsKCiAgdm9pZCAgICAgU29ydCAgICAgICAg
ICAgICAoSUNvbXBGdW5jLCB2b2lkKik7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKIyAxMzEgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2c2VxLmgi
CgoKfTsKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1h
bmdsaW5nKHBvcCkKCgoKCiAKCiAKCgoKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paXZzZXEuYyIgMQogCiAKCgoKCgoKCgoKCgoKIAogCiAK
IAoKCgoKCgoKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBWSW5oZXJpdGVkPgpJVlNlcXVlbmNl
SW1wbCA8VkluaGVyaXRlZD46OgpJVlNlcXVlbmNlSW1wbCAoT3BzJiBvcHMsIElOdW1iZXIgbnVt
YmVyT2ZFbGVtZW50cykKOiBWSW5oZXJpdGVkIChvcHMsIG51bWJlck9mRWxlbWVudHMpCnsKfQoK
dGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CklWU2VxdWVuY2VJbXBsIDxWSW5oZXJpdGVkPjo6
CklWU2VxdWVuY2VJbXBsCiAgKE9wcyYgb3BzLCBJVlNlcXVlbmNlSW1wbCA8VkluaGVyaXRlZD4g
Y29uc3QmIGNvbGxlY3Rpb24pCjogVkluaGVyaXRlZCAob3BzLCBjb2xsZWN0aW9uKQp7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBWSW5oZXJpdGVkPgpib29sCklWU2VxdWVuY2VJbXBsIDxWSW5oZXJpdGVk
Pjo6CkFkZCAodm9pZCBjb25zdCogZWxlbWVudCwgSUN1cnNvckltcGwmIGN1cnNvcikKeyBib29s
IGlzRW5hYmxlZCA9IHRoaXMtPklzRW5hYmxlZEZvck5vdGlmaWNhdGlvbiAoKTsKICB0aGlzLT5E
aXNhYmxlTm90aWZpY2F0aW9uICgpOwogIGJvb2wgaGFzQmVlbkFkZGVkID0gVkluaGVyaXRlZDo6
QWRkIChlbGVtZW50LCBjdXJzb3IpOwogIHRoaXMtPkVuYWJsZU5vdGlmaWNhdGlvbiAoaXNFbmFi
bGVkKTsKICBpZiAoaGFzQmVlbkFkZGVkKSB7CiAgICB0aGlzLT5Ob3RpZnlPZkFkZEF0IChjdXJz
b3IpOwogIH0KICByZXR1cm4gaGFzQmVlbkFkZGVkOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVy
aXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8VkluaGVyaXRlZD46OgpBZGRBbGxGcm9tIChJQUNv
bGxlY3Rpb25JbXBsIGNvbnN0JiBjb2xsZWN0aW9uKQp7IGJvb2wgaXNFbmFibGVkID0gdGhpcy0+
SXNFbmFibGVkRm9yTm90aWZpY2F0aW9uICgpOwogIHRoaXMtPkRpc2FibGVOb3RpZmljYXRpb24g
KCk7CiAgVkluaGVyaXRlZDo6QWRkQWxsRnJvbSAoY29sbGVjdGlvbik7CiAgdGhpcy0+RW5hYmxl
Tm90aWZpY2F0aW9uIChpc0VuYWJsZWQpOwogIHRoaXMtPk5vdGlmeU9mTW9kaWZpY2F0aW9uICgp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8Vklu
aGVyaXRlZD46OgpBZGRBc0ZpcnN0ICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJQ3Vyc29ySW1wbCYg
Y3Vyc29yKQp7IFZJbmhlcml0ZWQ6OkFkZEFzRmlyc3QgKGVsZW1lbnQsIGN1cnNvcik7CiAgdGhp
cy0+Tm90aWZ5T2ZBZGRBdCAoY3Vyc29yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+
CnZvaWQKSVZTZXF1ZW5jZUltcGwgPFZJbmhlcml0ZWQ+OjoKQWRkQXNMYXN0ICh2b2lkIGNvbnN0
KiBlbGVtZW50LCBJQ3Vyc29ySW1wbCYgY3Vyc29yKQp7IFZJbmhlcml0ZWQ6OkFkZEFzTGFzdCAo
ZWxlbWVudCwgY3Vyc29yKTsKICB0aGlzLT5Ob3RpZnlPZkFkZEF0IChjdXJzb3IpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8VkluaGVyaXRlZD46
OgpBZGRBc05leHQgKHZvaWQgY29uc3QqIGVsZW1lbnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsg
VkluaGVyaXRlZDo6QWRkQXNOZXh0IChlbGVtZW50LCBjdXJzb3IpOwogIHRoaXMtPk5vdGlmeU9m
QWRkQXQgKGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBWSW5oZXJpdGVkPgp2b2lkCklWU2Vx
dWVuY2VJbXBsIDxWSW5oZXJpdGVkPjo6CkFkZEFzUHJldmlvdXMgKHZvaWQgY29uc3QqIGVsZW1l
bnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsgVkluaGVyaXRlZDo6QWRkQXNQcmV2aW91cyAoZWxl
bWVudCwgY3Vyc29yKTsKICB0aGlzLT5Ob3RpZnlPZkFkZEF0IChjdXJzb3IpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8VkluaGVyaXRlZD46OgpB
ZGRBdFBvc2l0aW9uIChJUG9zaXRpb24gcG9zaXRpb24sCiAgICAgICAgICAgICAgIHZvaWQgY29u
c3QqIGVsZW1lbnQsCiAgICAgICAgICAgICAgIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsgVkluaGVy
aXRlZDo6QWRkQXRQb3NpdGlvbiAocG9zaXRpb24sIGVsZW1lbnQsIGN1cnNvcik7CiAgdGhpcy0+
Tm90aWZ5T2ZBZGRBdCAoY3Vyc29yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CnZv
aWQKSVZTZXF1ZW5jZUltcGwgPFZJbmhlcml0ZWQ+OjoKQ29weSAoSUFDb2xsZWN0aW9uSW1wbCBj
b25zdCYgY29sbGVjdGlvbikKeyBib29sIGlzRW5hYmxlZCA9IHRoaXMtPklzRW5hYmxlZEZvck5v
dGlmaWNhdGlvbiAoKTsKICB0aGlzLT5EaXNhYmxlTm90aWZpY2F0aW9uICgpOwogIFZJbmhlcml0
ZWQ6OkNvcHkgKGNvbGxlY3Rpb24pOwogIHRoaXMtPkVuYWJsZU5vdGlmaWNhdGlvbiAoaXNFbmFi
bGVkKTsKICB0aGlzLT5Ob3RpZnlPZk1vZGlmaWNhdGlvbiAoKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IFZJbmhlcml0ZWQ+CklOdW1iZXIKSVZTZXF1ZW5jZUltcGwgPFZJbmhlcml0ZWQ+OjoKUmVtb3Zl
QWxsICgpCnsgSU51bWJlciByZXN1bHQgPSBWSW5oZXJpdGVkOjpSZW1vdmVBbGwgKCk7CiAgaWYg
KHJlc3VsdCA+IDApIHsKICAgIHRoaXMtPk5vdGlmeU9mTW9kaWZpY2F0aW9uICgpOwogIH0KICBy
ZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4KSU51bWJlcgpJVlNl
cXVlbmNlSW1wbCA8VkluaGVyaXRlZD46OgpSZW1vdmVBbGwgKElQcmVkRnVuYyBwcmVkRnVuYywg
dm9pZCogYWRkQXJnKQp7IElOdW1iZXIgcmVzdWx0ID0gVkluaGVyaXRlZDo6UmVtb3ZlQWxsIChw
cmVkRnVuYywgYWRkQXJnKTsKICBpZiAocmVzdWx0ID4gMCkgewogICAgdGhpcy0+Tm90aWZ5T2ZN
b2RpZmljYXRpb24gKCk7CiAgfQogIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBW
SW5oZXJpdGVkPgp2b2lkCklWU2VxdWVuY2VJbXBsIDxWSW5oZXJpdGVkPjo6ClJlbW92ZUF0IChJ
Q3Vyc29ySW1wbCYgY3Vyc29yKQp7IHRoaXMtPk5vdGlmeU9mUmVtb3ZlQXQgKGN1cnNvcik7CiAg
VkluaGVyaXRlZDo6UmVtb3ZlQXQgKGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBWSW5oZXJp
dGVkPgp2b2lkCklWU2VxdWVuY2VJbXBsIDxWSW5oZXJpdGVkPjo6ClJlbW92ZUF0UG9zaXRpb24g
KElQb3NpdGlvbiBwb3NpdGlvbikKeyB0aGlzLT5TZXRUb1Bvc2l0aW9uIChwb3NpdGlvbiwgdGhp
cy0+Q3Vyc29yT2YgKCp0aGlzKSk7CiAgdGhpcy0+Tm90aWZ5T2ZSZW1vdmVBdCAodGhpcy0+Q3Vy
c29yT2YgKCp0aGlzKSk7CiAgVkluaGVyaXRlZDo6UmVtb3ZlQXRQb3NpdGlvbiAocG9zaXRpb24p
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8Vklu
aGVyaXRlZD46OgpSZW1vdmVGaXJzdCAoKQp7IHRoaXMtPlNldFRvRmlyc3QgKHRoaXMtPkN1cnNv
ck9mICgqdGhpcykpOwogIHRoaXMtPk5vdGlmeU9mUmVtb3ZlQXQgKHRoaXMtPkN1cnNvck9mICgq
dGhpcykpOwogIFZJbmhlcml0ZWQ6OlJlbW92ZUZpcnN0ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
VkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1wbCA8VkluaGVyaXRlZD46OgpSZW1vdmVMYXN0
ICgpCnsgdGhpcy0+U2V0VG9MYXN0ICh0aGlzLT5DdXJzb3JPZiAoKnRoaXMpKTsKICB0aGlzLT5O
b3RpZnlPZlJlbW92ZUF0ICh0aGlzLT5DdXJzb3JPZiAoKnRoaXMpKTsKICBWSW5oZXJpdGVkOjpS
ZW1vdmVMYXN0ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVl
bmNlSW1wbCA8VkluaGVyaXRlZD46OgpSZXBsYWNlQXQgKElDdXJzb3JJbXBsIGNvbnN0JiBjdXJz
b3IsIHZvaWQgY29uc3QqIGVsZW1lbnQpCnsKCgoKICB0aGlzLT5Ob3RpZnlPZlJlcGxhY2VBdCAo
Y3Vyc29yLCBlbGVtZW50KTsKCiAgVkluaGVyaXRlZDo6UmVwbGFjZUF0IChjdXJzb3IsIGVsZW1l
bnQpOwoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4Kdm9pZApJVlNlcXVlbmNlSW1w
bCA8VkluaGVyaXRlZD46OgpSZXZlcnNlICgpCnsgVkluaGVyaXRlZDo6UmV2ZXJzZSAoKTsKICB0
aGlzLT5Ob3RpZnlPZk1vZGlmaWNhdGlvbiAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0
ZWQ+CnZvaWQKSVZTZXF1ZW5jZUltcGwgPFZJbmhlcml0ZWQ+OjoKU29ydCAoSUNvbXBGdW5jIGNv
bXBGdW5jLCB2b2lkKiBhZGRBcmcpCnsgVkluaGVyaXRlZDo6U29ydCAoY29tcEZ1bmMsIGFkZEFy
Zyk7CiAgdGhpcy0+Tm90aWZ5T2ZNb2RpZmljYXRpb24gKCk7Cn0KCgoKCgoKIyAxNjQgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2c2VxLmgiIDIK
CgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKIAoKIyAzMCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pc2VxLmgiIDIKCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzZXFsc3QuaCIgMQoKCgogCiAKIAoKCgoKCgoK
CgoKCiAKIAogCiAKIAogCgogCgoKCgoKCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21h
IHJlcG9ydChsZXZlbCwgX19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJl
c3RvcmUpCiAKCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NI
RU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKCgoKCiAKCiAKIAoKIApjbGFzcyBJU2Vx
dWVuY2VBc0xpc3RJbXBsOwogCgogCgpzdHJ1Y3QgSUFTZXF1ZW5jZUFzTGlzdE5vZGVJbXBsIHsK
ICBJQVNlcXVlbmNlQXNMaXN0Tm9kZUltcGwoKTsKICBJQVNlcXVlbmNlQXNMaXN0Tm9kZUltcGwK
ICAgICAgICAgICppdk5leHQsCiAgICAgICAgICAqaXZQcmV2aW91czsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50PgpzdHJ1Y3QgSVNlcXVlbmNlQXNMaXN0Tm9kZUltcGwgOiBwdWJsaWMgSUFT
ZXF1ZW5jZUFzTGlzdE5vZGVJbXBsIHsKCiAgRWxlbWVudCAgaXZFbGVtZW50OwoKICAgICAgICAg
ICBJU2VxdWVuY2VBc0xpc3ROb2RlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVs
ZW1lbnQgY29uc3QmKTsKCiAgICAgICAgICB+SVNlcXVlbmNlQXNMaXN0Tm9kZUltcGwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgpOwoKCiAgdm9pZCAgICAgU3RyZWFtSW4gICAgICAgICAo
SUFDb2xsZWN0aW9uU3RyZWFtZXIqLCBJRGF0YVN0cmVhbSYpOwoKCgoKCgoKfTsKCgoKCgoKCgoK
CmNsYXNzICAgSVNlcXVlbmNlQXNMaXN0Q3Vyc29ySW1wbCA6IHB1YmxpYyBJQ3Vyc29ySW1wbCB7
CgogIHR5cGVkZWYgIElDdXJzb3JJbXBsIEluaGVyaXRlZDsKCiAgdHlwZWRlZiAgSVNlcXVlbmNl
QXNMaXN0Q3Vyc29ySW1wbCBTZWxmOwoKcHVibGljOgoKICAgICAgICAgICBJU2VxdWVuY2VBc0xp
c3RDdXJzb3JJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUFDb2xsZWN0aW9uSW1w
bCBjb25zdCYpOwoKICAgICAgICAgICBJU2VxdWVuY2VBc0xpc3RDdXJzb3JJbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoSVNlcXVlbmNlQXNMaXN0Q3Vyc29ySW1wbCBjb25zdCYpOwoK
ICAgICAgICAgIH5JU2VxdWVuY2VBc0xpc3RDdXJzb3JJbXBsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKTsKCiAgSUN1cnNvckltcGwqCiAgICAgICAgICAgQ2xvbmUgICAgICAgICAgICAo
KSBjb25zdDsKCiAgdm9pZCAgICAgQ29weSAgICAgICAgICAgICAoSUN1cnNvckltcGwgY29uc3Qm
KTsKCiAgdm9pZCAgICAgSW52YWxpZGF0ZSAgICAgICAoKTsKCiAgYm9vbCBJc0luQmV0d2VlbiAg
ICAgICgpIGNvbnN0OwoKICBib29sIElzVmFsaWQgICAgICAgICAgKCkgY29uc3Q7CgogIHZvaWQg
ICAgIG9wZXJhdG9yPSAgICAgICAgKElTZXF1ZW5jZUFzTGlzdEN1cnNvckltcGwgY29uc3QmKTsK
CiAgYm9vbCBvcGVyYXRvcj09ICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNvbnN0OwoKcHJv
dGVjdGVkOgoKcHJpdmF0ZToKCiAgSUFTZXF1ZW5jZUFzTGlzdE5vZGVJbXBsKgogICAgICAgICAg
IGl2Tm9kZTsKCiAgZnJpZW5kCiAgY2xhc3MgICAgSVNlcXVlbmNlQXNMaXN0SW1wbDsKCgoKCgoK
CgoKCn07CgojIDIyMyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9paXNlcWxzdC5oIgoKCmNsYXNzIElBU2VxdWVuY2VBc0xpc3RPcHM7CgpjbGFzcyAg
IElTZXF1ZW5jZUFzTGlzdEltcGwgOiBwdWJsaWMgSUFTZXF1ZW5jZUltcGwgewoKICB0eXBlZGVm
ICBJQVNlcXVlbmNlSW1wbCBJbmhlcml0ZWQ7CgogIHR5cGVkZWYgIElTZXF1ZW5jZUFzTGlzdElt
cGwgU2VsZjsKCiAgdHlwZWRlZiAgSUFTZXF1ZW5jZUFzTGlzdE5vZGVJbXBsIE5vZGU7CgpwdWJs
aWM6CgogIHR5cGVkZWYgIElBU2VxdWVuY2VBc0xpc3RPcHMgT3BzOwoKICB0eXBlZGVmICBJU2Vx
dWVuY2VBc0xpc3RDdXJzb3JJbXBsIEN1cnNvcjsKCgoKCiAgdHlwZWRlZiAgSVNlcXVlbmNlQXNM
aXN0Q3Vyc29ySW1wbCBNbmdDdXJzb3I7CgoKICAgICAgICAgICBJU2VxdWVuY2VBc0xpc3RJbXBs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3BzJiwgSU51bWJlcik7CgogICAgICAgICAg
IElTZXF1ZW5jZUFzTGlzdEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHMmLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTZXF1ZW5jZUFzTGlzdEltcGwgY29uc3QmKTsK
CiAgICAgICAgICB+SVNlcXVlbmNlQXNMaXN0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCk7CgogIGJvb2wgQWRkICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBs
Jik7CgogIHZvaWQgICAgIEFkZEFsbEZyb20gICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3Qm
KTsKCiAgdm9pZCAgICAgQWRkQXNGaXJzdCAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBs
Jik7CgogIHZvaWQgICAgIEFkZEFzTGFzdCAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1w
bCYpOwoKICB2b2lkICAgICBBZGRBc05leHQgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvcklt
cGwmKTsKCiAgdm9pZCAgICAgQWRkQXNQcmV2aW91cyAgICAodm9pZCBjb25zdCosIElDdXJzb3JJ
bXBsJik7CgogIHZvaWQgICAgIEFkZEF0UG9zaXRpb24gICAgKElQb3NpdGlvbiwgdm9pZCBjb25z
dCosIElDdXJzb3JJbXBsJik7CgogIGJvb2wgQWxsRWxlbWVudHNEbyAgICAoSUFwcGxGdW5jLCB2
b2lkKik7CgogIHZvaWQqICAgIEFueSAgICAgICAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgQ2hl
Y2tDdXJzb3IgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgY2hhciBjb25zdCoK
ICAgICAgICAgICBDbGFzc05hbWUgICAgICAgICgpIGNvbnN0OwoKICBJQUNvbGxlY3Rpb25JbXBs
KgogICAgICAgICAgIENsb25lICAgICAgICAgICAgKCkgY29uc3Q7CgogIHZvaWQgICAgIENvcHkg
ICAgICAgICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKTsKCiAgQ3Vyc29yKiAgQ3JlYXRl
Q3Vyc29yICAgICAoKSBjb25zdDsKCiAgTW5nQ3Vyc29yKgogICAgICAgICAgIENyZWF0ZU1uZ0N1
cnNvciAgKCkgY29uc3Q7CgogIHZvaWQqICAgIEVsZW1lbnRBdCAgICAgICAgKElDdXJzb3JJbXBs
IGNvbnN0JikgY29uc3Q7CgogIHZvaWQqICAgIEVsZW1lbnRBdFBvc2l0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoSVBvc2l0aW9uKSBjb25zdDsKCiAgdm9pZCogICAgRmlyc3QgICAg
ICAgICAgICAoKSBjb25zdDsKCiAgYm9vbCBJc0JvdW5kZWQgICAgICAgICgpIGNvbnN0OwoKICBi
b29sIElzQ29uc2lzdGVudCAgICAgKCkgY29uc3Q7CgogIGJvb2wgSXNFbXB0eSAgICAgICAgICAo
KSBjb25zdDsKCiAgYm9vbCBJc0ZpcnN0QXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNv
bnN0OwoKICBib29sIElzRnVsbCAgICAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgSXNMYXN0QXQg
ICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgdm9pZCogICAgTGFzdCAgICAg
ICAgICAgICAoKSBjb25zdDsKCiAgSU51bWJlciAgTnVtYmVyT2ZFbGVtZW50cyAoKSBjb25zdDsK
CiAgSVBvc2l0aW9uCiAgICAgICAgICAgUG9zaXRpb25BdCAgICAgICAoSUN1cnNvckltcGwgY29u
c3QmKSBjb25zdDsKCiAgSU51bWJlciAgUmVtb3ZlQWxsICAgICAgICAoKTsKCiAgSU51bWJlciAg
UmVtb3ZlQWxsICAgICAgICAoSVByZWRGdW5jLCB2b2lkKik7CgogIHZvaWQgICAgIFJlbW92ZUF0
ICAgICAgICAgKElDdXJzb3JJbXBsJik7CgogIHZvaWQgICAgIFJlbW92ZUF0UG9zaXRpb24gKElQ
b3NpdGlvbik7CgogIHZvaWQgICAgIFJlbW92ZUZpcnN0ICAgICAgKCk7CgogIHZvaWQgICAgIFJl
bW92ZUxhc3QgICAgICAgKCk7CgogIHZvaWQgICAgIFJlcGxhY2VBdCAgICAgICAgKElDdXJzb3JJ
bXBsIGNvbnN0Jiwgdm9pZCBjb25zdCopOwoKICB2b2lkICAgICBSZXBsYWNlQXRQb3NpdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKElQb3NpdGlvbiwgdm9pZCBjb25zdCopOwoKICB2
b2lkICAgICBSZXZlcnNlICAgICAgICAgICgpOwoKICBib29sIFNldFRvRmlyc3QgICAgICAgKElD
dXJzb3JJbXBsJikgY29uc3Q7CgogIGJvb2wgU2V0VG9MYXN0ICAgICAgICAoSUN1cnNvckltcGwm
KSBjb25zdDsKCiAgYm9vbCBTZXRUb05leHQgICAgICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoK
ICB2b2lkICAgICBTZXRUb1Bvc2l0aW9uICAgIChJUG9zaXRpb24sIElDdXJzb3JJbXBsJikgY29u
c3Q7CgogIGJvb2wgU2V0VG9QcmV2aW91cyAgICAoSUN1cnNvckltcGwmKSBjb25zdDsKCiAgdm9p
ZCAgICAgU29ydCAgICAgICAgICAgICAoSUNvbXBGdW5jLCB2b2lkKik7CgogIHZvaWQgICAgIG9w
ZXJhdG9yPSAgICAgICAgKElTZXF1ZW5jZUFzTGlzdEltcGwgY29uc3QmKTsKCnByb3RlY3RlZDoK
CiAgdm9pZCAgICAgQXNzaWduICAgICAgICAgICAodm9pZCosIHZvaWQgY29uc3QqKSBjb25zdDsK
CiAgdm9pZCogICAgQ3JlYXRlTm9kZSAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICB2b2lk
ICAgICBEZWxldGVOb2RlICAgICAgICh2b2lkKikgY29uc3Q7CgoKcHJpdmF0ZToKCiAgZW51bSB7
IGtPcmlnaW5hbFZlcnNpb24gfTsKCiAgc3RhdGljCiAgY2hhciBjb25zdCoKICAgICAgICAgICBj
dkNsYXNzTmFtZTsKCiAgTW5nQ3Vyc29yKgogICAgICAgICAgIGl2TW5nQ3Vyc29yczsKCiAgTm9k
ZSogICAgaXZGaXJzdDsKCiAgTm9kZSogICAgaXZMYXN0OwoKICBJTnVtYmVyICBpdk51bWJlck9m
RWxlbWVudHM7CgogIHZvaWQgICAgIEFkZEFzTmV4dE5vZGUgICAgKE5vZGUqLCBOb2RlKik7Cgog
IHZvaWQqICAgIEVsZW1lbnRPZiAgICAgICAgKE5vZGUgY29uc3QqKSBjb25zdDsKCiAgc3RhdGlj
CiAgYm9vbCBJc0luQmV0d2VlbiAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpOwoKICBzdGF0aWMK
ICBOb2RlKiYgICBOZXh0Tm9kZU9mICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpOwoKICBzdGF0
aWMKICBOb2RlKiYgICBOb2RlT2YgICAgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpOwoKICBz
dGF0aWMKICBPcHMmICAgICBPcHNPZiAgICAgICAgICAgIChJU2VxdWVuY2VBc0xpc3RJbXBsIGNv
bnN0Jik7CgogIHN0YXRpYwogIE5vZGUqJiAgIFByZXZpb3VzTm9kZU9mICAgKElDdXJzb3JJbXBs
IGNvbnN0Jik7CgogIHZvaWQgICAgIFJlbW92ZU5vZGUgICAgICAgKE5vZGUqKTsKCiAgdm9pZCAg
ICAgU2V0SW5CZXR3ZWVuICAgICAoTW5nQ3Vyc29yJikgY29uc3Q7CgogIHZvaWQgICAgIFNldE5v
ZGVUb1Bvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVBvc2l0aW9uLCBOb2Rl
KiYpIGNvbnN0OwoKICBmcmllbmQKICBjbGFzcyAgICBJU2VxdWVuY2VBc0xpc3RNbmdDdXJzb3JJ
bXBsOwoKCnByb3RlY3RlZDoKICB2b2lkKiAgICBDcmVhdGVOb2RlV2l0aFN0cmVhbWVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChJRGF0YVN0cmVhbSYpIGNvbnN0OwoKcHVibGljOgog
IElTdHJlYW1lclB0ciYKICAgICAgICAgICBTdHJlYW1lck9mICAgICAgIChJQUNvbGxlY3Rpb25J
bXBsIGNvbnN0Jik7CgogIHZvaWQgICAgIFN0cmVhbUluICAgICAgICAgKElEYXRhU3RyZWFtJik7
CgogIHZvaWQgICAgIFN0cmVhbU91dCAgICAgICAgKElEYXRhU3RyZWFtJikgY29uc3Q7CgogIHZv
aWQgICAgIEFkb3B0U3RyZWFtZXIgICAgKElBQ29sbGVjdGlvblN0cmVhbWVyKik7CgoKIyA0NTMg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzZXFs
c3QuaCIKCgp9OwoKY2xhc3MgICBJQVNlcXVlbmNlQXNMaXN0T3BzIDogcHVibGljIElBQ29sbGVj
dGlvbk9wcyB7CnB1YmxpYzoKCiAgdmlydHVhbCB+SUFTZXF1ZW5jZUFzTGlzdE9wcwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1YWwKICB2b2lkICAgICBBc3NpZ24gICAg
ICAgICAgICh2b2lkKiwgdm9pZCBjb25zdCopIGNvbnN0ID0gMDsKCiAgdmlydHVhbAogIElBQ29s
bGVjdGlvbkltcGwqCiAgICAgICAgICAgQ2xvbmUgICAgICAgICAgICAoKSBjb25zdCA9IDA7Cgog
IHZpcnR1YWwKICB2b2lkKiAgICBDcmVhdGVOb2RlICAgICAgICh2b2lkIGNvbnN0KikgY29uc3Qg
PSAwOwoKICB2aXJ0dWFsCiAgdm9pZCAgICAgRGVsZXRlTm9kZSAgICAgICAodm9pZCopIGNvbnN0
ID0gMDsKCiAgdmlydHVhbAogIHZvaWQqICAgIEVsZW1lbnRQdHIgICAgICAgKHZvaWQgY29uc3Qq
KSBjb25zdCA9IDA7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElBU2VxdWVuY2VBc0xpc3RPcHMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChib29sKTsKCnByaXZhdGU6CgogIGJvb2wgaXZD
b250YWluc0RUU09iamVjdHM7CgogIGZyaWVuZAogIGNsYXNzICAgIElTZXF1ZW5jZUFzTGlzdElt
cGw7CgoKcHVibGljOgogIHZpcnR1YWwKICB2b2lkKiAgICBDcmVhdGVOb2RlV2l0aFN0cmVhbWVy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUFDb2xsZWN0aW9uU3RyZWFtZXIqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElEYXRhU3RyZWFtJikgY29uc3QgPSAwOwoKCiMgNTEz
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpc2Vx
bHN0LmgiCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzLCBj
bGFzcyBJbXBsZW1lbnRhdGlvbj4KY2xhc3MgICBJU2VxdWVuY2VBc0xpc3RPcHMgOiBwdWJsaWMg
SUFTZXF1ZW5jZUFzTGlzdE9wcyB7CgogIHR5cGVkZWYgIElBU2VxdWVuY2VBc0xpc3RPcHMgSW5o
ZXJpdGVkOwoKICB0eXBlZGVmICBJU2VxdWVuY2VBc0xpc3RPcHMKICAgICAgICAgICAgPEVsZW1l
bnQsIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPiBTZWxmOwoKICB0eXBlZGVmICBJU2VxdWVu
Y2VBc0xpc3ROb2RlSW1wbCA8RWxlbWVudD4gTm9kZTsKCnB1YmxpYzoKCiAgdHlwZWRlZiAgSW1w
bGVtZW50YXRpb24gSW1wbFR5cGU7CgogIHR5cGVkZWYgIEVsZW1lbnQgRWxlbWVudFR5cGU7Cgog
IHR5cGVkZWYgIHZvaWQgS2V5VHlwZTsKCiAgICAgICAgICAgSVNlcXVlbmNlQXNMaXN0T3BzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoSU51bWJlcik7CgogICAgICAgICAgIElTZXF1ZW5j
ZUFzTGlzdE9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOdW1iZXIsIHZvaWQqKTsK
CiAgICAgICAgICAgSVNlcXVlbmNlQXNMaXN0T3BzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoSVNlcXVlbmNlQXNMaXN0T3BzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbGVt
ZW50LCBFbGVtZW50T3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wbGVtZW50
YXRpb24+IGNvbnN0Jik7CgogIHZvaWQgICAgIEFzc2lnbiAgICAgICAgICAgKHZvaWQqLCB2b2lk
IGNvbnN0KikgY29uc3Q7CgogIElBQ29sbGVjdGlvbkltcGwqCiAgICAgICAgICAgQ2xvbmUgICAg
ICAgICAgICAoKSBjb25zdDsKCiAgdm9pZCogICAgQ3JlYXRlTm9kZSAgICAgICAodm9pZCBjb25z
dCopIGNvbnN0OwoKICB2b2lkICAgICBEZWxldGVOb2RlICAgICAgICh2b2lkKikgY29uc3Q7Cgog
IHZvaWQqICAgIEVsZW1lbnRQdHIgICAgICAgKHZvaWQgY29uc3QqKSBjb25zdDsKCiAgICAgICAg
ICAgb3BlcmF0b3IgSW1wbGVtZW50YXRpb24qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
KTsKCiMgNTc2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lpc2VxbHN0LmgiCgoKcHJvdGVjdGVkOgoKcHJpdmF0ZToKCiAgRWxlbWVudE9wcwogICAg
ICAgICAgIGl2RWxlbWVudE9wczsKCiAgSW1wbGVtZW50YXRpb24KICAgICAgICAgICBpdkltcGw7
CgoKcHVibGljOgogIHZvaWQqICAgIENyZWF0ZU5vZGVXaXRoU3RyZWFtZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChJQUNvbGxlY3Rpb25TdHJlYW1lciosIElEYXRhU3RyZWFtJikgY29u
c3Q7CgoKIyA2MDMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWlzZXFsc3QuaCIKCgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFnbWEgZW51bShwb3Ap
CgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzZXFsc3QuaW5sIiAxCgoKCiAK
IAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIAogCgogCgppbmxpbmUKSUFTZXF1ZW5jZUFz
TGlzdE5vZGVJbXBsOjoKSUFTZXF1ZW5jZUFzTGlzdE5vZGVJbXBsKCkKOiBpdk5leHQgKDApLCBp
dlByZXZpb3VzICgwKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSVNlcXVl
bmNlQXNMaXN0Tm9kZUltcGwgPEVsZW1lbnQ+OjoKSVNlcXVlbmNlQXNMaXN0Tm9kZUltcGwgKEVs
ZW1lbnQgY29uc3QmIGVsZW1lbnQpCjogSUFTZXF1ZW5jZUFzTGlzdE5vZGVJbXBsKCksIGl2RWxl
bWVudCAoZWxlbWVudCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklTZXF1
ZW5jZUFzTGlzdE5vZGVJbXBsIDxFbGVtZW50Pjo6Cn5JU2VxdWVuY2VBc0xpc3ROb2RlSW1wbCAo
KQp7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lIHZvaWQKSVNlcXVlbmNlQXNM
aXN0Tm9kZUltcGw8RWxlbWVudD46OgpTdHJlYW1JbiAoSUFDb2xsZWN0aW9uU3RyZWFtZXIgKnN0
cmVhbWVyLCBJRGF0YVN0cmVhbSYgZnJvbVdoZXJlKQp7IGl2TmV4dCA9IGl2UHJldmlvdXMgPSAw
OwogIHN0cmVhbWVyLT5zdHJlYW1Jbihmcm9tV2hlcmUsICZpdkVsZW1lbnQpOwp9CgoKIAogCiAK
CiAKCmlubGluZSB2b2lkCklTZXF1ZW5jZUFzTGlzdEN1cnNvckltcGw6OgpJbnZhbGlkYXRlICgp
CnsgaXZOb2RlID0gMDsKfQoKaW5saW5lIGJvb2wKSVNlcXVlbmNlQXNMaXN0Q3Vyc29ySW1wbDo6
CklzSW5CZXR3ZWVuICgpIGNvbnN0CnsgcmV0dXJuIGZhbHNlOwp9CgppbmxpbmUgYm9vbApJU2Vx
dWVuY2VBc0xpc3RDdXJzb3JJbXBsOjoKSXNWYWxpZCAoKSBjb25zdAp7IHJldHVybiAoaXZOb2Rl
ICE9IDApOwp9CgppbmxpbmUgdm9pZApJU2VxdWVuY2VBc0xpc3RDdXJzb3JJbXBsOjoKb3BlcmF0
b3I9IChJU2VxdWVuY2VBc0xpc3RDdXJzb3JJbXBsIGNvbnN0JiBjdXJzb3IpCnsgSW5oZXJpdGVk
OjpvcGVyYXRvcj0gKGN1cnNvcik7CiAgaXZOb2RlID0gY3Vyc29yLml2Tm9kZTsKfQoKaW5saW5l
IGJvb2wKSVNlcXVlbmNlQXNMaXN0Q3Vyc29ySW1wbDo6Cm9wZXJhdG9yPT0gKElDdXJzb3JJbXBs
IGNvbnN0JiBjdXJzb3IpIGNvbnN0CnsgcmV0dXJuIChJbmhlcml0ZWQ6Om9wZXJhdG9yPT0gKGN1
cnNvcikgJiYKICAgICAgICAgIGl2Tm9kZSA9PSAoKFNlbGYgY29uc3QmKWN1cnNvcikuaXZOb2Rl
KTsKfQoKIAogCiAKCiAKCmlubGluZQpJQVNlcXVlbmNlQXNMaXN0T3BzOjoKfklBU2VxdWVuY2VB
c0xpc3RPcHMgKCkKewp9CgogCgppbmxpbmUKSUFTZXF1ZW5jZUFzTGlzdE9wczo6CklBU2VxdWVu
Y2VBc0xpc3RPcHMgKGJvb2wgY29udGFpbnNEVFNPYmplY3RzKQo6IGl2Q29udGFpbnNEVFNPYmpl
Y3RzIChjb250YWluc0RUU09iamVjdHMpCnsKfQoKIAoKIyA2MzIgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzZXFsc3QuaCIgMgoKCgoKCgojIDEg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlzZXFs
c3QuYyIgMQogCiAKCgoKCgoKCgoKCgoKIAogCiAKIAoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
czM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL25ldy5oIiAxIDMKIAoKCgoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9uZXciIDEgMwogCiAK
CgoKCiNwcmFnbWEgaW50ZXJmYWNlICJuZXciCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1
c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vzci9saWIvZ2Nj
LWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgOCAiL3Vz
ci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvbmV3IiAyIDMKCgoK
ZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQgewoKICBjbGFzcyBiYWRfYWxsb2MgOiBwdWJs
aWMgZXhjZXB0aW9uIHsKICBwdWJsaWM6CiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBj
b25zdCB0aHJvdygpIHsgcmV0dXJuICJiYWRfYWxsb2MiOyB9CiAgfTsKCiAgc3RydWN0IG5vdGhy
b3dfdCB7fTsKICBleHRlcm4gY29uc3Qgbm90aHJvd190IG5vdGhyb3c7CiAgdHlwZWRlZiB2b2lk
ICgqbmV3X2hhbmRsZXIpKCk7CiAgbmV3X2hhbmRsZXIgc2V0X25ld19oYW5kbGVyIChuZXdfaGFu
ZGxlcik7Cgp9ICAKCiAKdm9pZCAqb3BlcmF0b3IgbmV3IChzaXplX3QpIHRocm93IChzdGQ6OmJh
ZF9hbGxvYyk7CnZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3QpIHRocm93IChzdGQ6OmJhZF9h
bGxvYyk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkICopIHRocm93KCk7CnZvaWQgb3BlcmF0
b3IgZGVsZXRlW10gKHZvaWQgKikgdGhyb3coKTsKdm9pZCAqb3BlcmF0b3IgbmV3IChzaXplX3Qs
IGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCAqb3BlcmF0b3IgbmV3W10gKHNp
emVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRlbGV0
ZSAodm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CnZvaWQgb3BlcmF0b3Ig
ZGVsZXRlW10gKHZvaWQgKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwoKIAppbmxp
bmUgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqcGxhY2UpIHRocm93KCkgeyByZXR1
cm4gcGxhY2U7IH0KaW5saW5lIHZvaWQgKm9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqcGxh
Y2UpIHRocm93KCkgeyByZXR1cm4gcGxhY2U7IH0KfSAgCgoKIyA2ICIvdXNyL2xpYi9nY2MtbGli
L3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9uZXcuaCIgMiAzCgoKdXNpbmcgc3RkOjpu
ZXdfaGFuZGxlcjsKdXNpbmcgc3RkOjpzZXRfbmV3X2hhbmRsZXI7CgoKIyAyMiAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paXNlcWxzdC5jIiAyCgoK
CgoKCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9wcywg
Y2xhc3MgSW1wbGVtZW50YXRpb24+CklTZXF1ZW5jZUFzTGlzdE9wcyA8RWxlbWVudCwgRWxlbWVu
dE9wcywgSW1wbGVtZW50YXRpb24+OjoKSVNlcXVlbmNlQXNMaXN0T3BzIChJTnVtYmVyIG51bWJl
ck9mRWxlbWVudHMpCjogSW5oZXJpdGVkICgwICksCiAgaXZFbGVtZW50T3BzICgpLAogIGl2SW1w
bCAoKnRoaXMsIG51bWJlck9mRWxlbWVudHMpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQs
IGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgpJU2VxdWVuY2VBc0xpc3RP
cHMgPEVsZW1lbnQsIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPjo6CklTZXF1ZW5jZUFzTGlz
dE9wcyAoSU51bWJlciBudW1iZXJPZkVsZW1lbnRzLCB2b2lkKiBvcHNBcmcpCjogSW5oZXJpdGVk
ICgwICksCiAgaXZFbGVtZW50T3BzIChvcHNBcmcpLAogIGl2SW1wbCAoKnRoaXMsIG51bWJlck9m
RWxlbWVudHMpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHMs
IGNsYXNzIEltcGxlbWVudGF0aW9uPgpJU2VxdWVuY2VBc0xpc3RPcHMgPEVsZW1lbnQsIEVsZW1l
bnRPcHMsIEltcGxlbWVudGF0aW9uPjo6CklTZXF1ZW5jZUFzTGlzdE9wcwogIChJU2VxdWVuY2VB
c0xpc3RPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHMsCiAgICAgICAgICAgICAgICAgICAgICAgSW1w
bGVtZW50YXRpb24+IGNvbnN0JiBjb2xsZWN0aW9uKQo6IEluaGVyaXRlZCAoMCApLAogIGl2RWxl
bWVudE9wcyAoY29sbGVjdGlvbi5pdkVsZW1lbnRPcHMpLAogIGl2SW1wbCAoKnRoaXMsIGNvbGxl
Y3Rpb24uaXZJbXBsKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50
T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4Kdm9pZApJU2VxdWVuY2VBc0xpc3RPcHMgPEVsZW1l
bnQsIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPjo6CkFzc2lnbiAodm9pZCogZWxlbWVudDEs
IHZvaWQgY29uc3QqIGVsZW1lbnQyKSBjb25zdAp7IGl2RWxlbWVudE9wcy5Bc3NpZ24gKCooRWxl
bWVudCopZWxlbWVudDEsCiAgICAgICAgICAgICAgICAgICAgICAgKihFbGVtZW50IGNvbnN0Kill
bGVtZW50Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzLCBj
bGFzcyBJbXBsZW1lbnRhdGlvbj4KSUFDb2xsZWN0aW9uSW1wbCoKSVNlcXVlbmNlQXNMaXN0T3Bz
IDxFbGVtZW50LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj46OgpDbG9uZSAoKSBjb25zdAp7
IHJldHVybiAoSW1wbGVtZW50YXRpb24qKSAqbmV3IFNlbGYgKCp0aGlzKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgp2
b2lkKgpJU2VxdWVuY2VBc0xpc3RPcHMgPEVsZW1lbnQsIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0
aW9uPjo6CkNyZWF0ZU5vZGUgKHZvaWQgY29uc3QqIGVsZW1lbnQpIGNvbnN0CnsKICB2b2lkKiBu
b2RlID0gaXZFbGVtZW50T3BzLkFsbG9jYXRlIChzaXplb2YgKE5vZGUpCgoKCgoKCgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgcmV0dXJuIG5ldyAoaXZJbXBsLkNo
ZWNrUG9pbnRlciAobm9kZSkpCiAgICAgICAgICAgICAgTm9kZSAoKihFbGVtZW50IGNvbnN0Kill
bGVtZW50KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzLCBj
bGFzcyBJbXBsZW1lbnRhdGlvbj4Kdm9pZCoKSVNlcXVlbmNlQXNMaXN0T3BzIDxFbGVtZW50LCBF
bGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj46OgpDcmVhdGVOb2RlV2l0aFN0cmVhbWVyKElBQ29s
bGVjdGlvblN0cmVhbWVyICpzdHJlYW1lciwKICAgICAgICAgICAgICAgICAgICAgICBJRGF0YVN0
cmVhbSYgZnJvbVdoZXJlKSBjb25zdAp7IHZvaWQqIG5vZGUgPSBpdkVsZW1lbnRPcHMuQWxsb2Nh
dGUgKHNpemVvZiAoTm9kZSkKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKICBpdkltcGwuQ2hlY2tQb2ludGVyIChub2RlKTsKICAoKE5vZGUqKW5vZGUpLT5TdHJl
YW1JbiAoc3RyZWFtZXIsIGZyb21XaGVyZSk7CiAgcmV0dXJuIG5vZGU7Cn0KCgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9wcywgY2xhc3MgSW1wbGVtZW50YXRpb24+CnZv
aWQKSVNlcXVlbmNlQXNMaXN0T3BzIDxFbGVtZW50LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlv
bj46OgpEZWxldGVOb2RlICh2b2lkKiBub2RlKSBjb25zdAp7ICgoTm9kZSopbm9kZSktPn5Ob2Rl
ICgpOwogIGl2RWxlbWVudE9wcy5EZWFsbG9jYXRlIChub2RlCgoKCgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgRWxlbWVudE9w
cywgY2xhc3MgSW1wbGVtZW50YXRpb24+CnZvaWQqCklTZXF1ZW5jZUFzTGlzdE9wcyA8RWxlbWVu
dCwgRWxlbWVudE9wcywgSW1wbGVtZW50YXRpb24+OjoKRWxlbWVudFB0ciAodm9pZCBjb25zdCog
bm9kZSkgY29uc3QKeyByZXR1cm4gKHZvaWQgKikoJigoKE5vZGUgY29uc3QqKW5vZGUpLT5pdkVs
ZW1lbnQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHMsIGNs
YXNzIEltcGxlbWVudGF0aW9uPgpJU2VxdWVuY2VBc0xpc3RPcHMgPEVsZW1lbnQsIEVsZW1lbnRP
cHMsIEltcGxlbWVudGF0aW9uPjo6Cm9wZXJhdG9yIEltcGxlbWVudGF0aW9uKiAoKQp7IGl2SW1w
bC5DaGVja1BvaW50ZXIgKHRoaXMpOwogIHJldHVybiAmaXZJbXBsOwp9CgoKCgoKCiMgNjM4ICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpc2VxbHN0
LmgiIDIKCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJh
Z21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzMiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc2VxLmgiIDIKCgoKCgoKIAoKIAojcHJhZ21hIGluZm8o
bm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNw
cmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1F
TUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKCgoKCgoKCgogCgog
CiAKCgogCgogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3Bz
PgpjbGFzcyBJR1NlcXVlbmNlQ3Vyc29yOwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNz
IEVsZW1lbnRPcHM+CmNsYXNzIElHU2VxdWVuY2UgOgogIHB1YmxpYyBJQVNlcXVlbmNlIDxFbGVt
ZW50PiB7CnByb3RlY3RlZDoKCiAgdHlwZWRlZiAgSUdTZXF1ZW5jZSA8RWxlbWVudCwgRWxlbWVu
dE9wcz4gU2VsZjsKCiAgdHlwZWRlZiAgSVNlcXVlbmNlQXNMaXN0SW1wbCBQdXJlSW1wbGVtZW50
YXRpb247CgoKICB0eXBlZGVmICBQdXJlSW1wbGVtZW50YXRpb24gSW1wbGVtZW50YXRpb247CgoK
CgoKCgoKCgoKICAgICAgICAgICB0eXBlZGVmICBJU2VxdWVuY2VBc0xpc3RPcHMgPCBFbGVtZW50
ICwgSVdTdGRPcHMgPCBFbGVtZW50ICwgICBFbGVtZW50T3BzID4sIEltcGxlbWVudGF0aW9uPiBJ
bnN0YW50aWF0aW9uIDsKCnB1YmxpYzoKCgogIHR5cGVkZWYgSUNvbGxlY3Rpb25HdWFyZDxFbGVt
ZW50PiBHdWFyZDsKCgogIHR5cGVkZWYgIElHU2VxdWVuY2VDdXJzb3IKICAgICAgICAgICAgPEVs
ZW1lbnQsIEVsZW1lbnRPcHM+IEN1cnNvcjsKCgoKCgoKICAgICAgICAgICBJR1NlcXVlbmNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoSU51bWJlciA9IDEwMCk7CgogICAgICAgICAgIElH
U2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJR1NlcXVlbmNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVs
ZW1lbnQsIEVsZW1lbnRPcHM+IGNvbnN0Jik7CgogIElHU2VxdWVuY2UgPEVsZW1lbnQsIEVsZW1l
bnRPcHM+JgogICAgICAgICAgIG9wZXJhdG9yPSAgICAgICAgKElHU2VxdWVuY2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxl
bWVudCwgRWxlbWVudE9wcz4gY29uc3QmKTsKCiMgMTUzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzZXEuaCIKCgpwcm90ZWN0ZWQ6CgogICAgICAg
ICAgIElHU2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQdXJlSW1wbGVtZW50
YXRpb24mKTsKCiAgc3RhdGljCiAgSW1wbGVtZW50YXRpb24mCiAgICAgICAgICAgSW1wbE9mICAg
ICAgICAgICAoSUdTZXF1ZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50LCBFbGVtZW50T3BzPiBjb25zdCYpOwoK
cHJpdmF0ZToKCiAgZnJpZW5kCiAgY2xhc3MgICAgSUdTZXF1ZW5jZUN1cnNvciA8RWxlbWVudCwg
RWxlbWVudE9wcz47CgoKCgoKCgojIDE5MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9pc2VxLmgiCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
LCBjbGFzcyBFbGVtZW50T3BzPgpjbGFzcyBJR1NlcXVlbmNlQ3Vyc29yIDoKICBwdWJsaWMgSU9y
ZGVyZWRDdXJzb3IgPEVsZW1lbnQ+IHsKCiAgdHlwZWRlZiAgSU9yZGVyZWRDdXJzb3IgPEVsZW1l
bnQ+IEluaGVyaXRlZDsKCiAgdHlwZWRlZiB0eXBlbmFtZSAgSUdTZXF1ZW5jZQogICAgICAgICAg
ICA8RWxlbWVudCwgRWxlbWVudE9wcz46OgogICAgICAgICAgICAgIEltcGxlbWVudGF0aW9uOjpD
dXJzb3IgSW1wbGVtZW50YXRpb247CgpwdWJsaWM6CgogICAgICAgICAgIElHU2VxdWVuY2VDdXJz
b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJR1NlcXVlbmNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQs
IEVsZW1lbnRPcHM+IGNvbnN0Jik7CgogIElHU2VxdWVuY2VDdXJzb3IgPEVsZW1lbnQsIEVsZW1l
bnRPcHM+JgogICAgICAgICAgIG9wZXJhdG9yPSAgICAgICAgKElHU2VxdWVuY2VDdXJzb3IKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRWxlbWVudCwgRWxlbWVudE9wcz4gY29uc3QmKTsKCnByb3RlY3RlZDoKCiAgICAgICAgICAg
SUdTZXF1ZW5jZUN1cnNvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElDdXJzb3JJbXBs
Kik7Cgpwcml2YXRlOgoKIyAyMzUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaXNlcS5oIgoKCn07CgojIDI4MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9s
aW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc2VxLmgiCgoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQ+CmNsYXNzIElTZXF1ZW5jZSA6CiAgcHVibGljIElHU2VxdWVuY2UKICAgICAgICAgIDxF
bGVtZW50LCBJU3RkT3BzIDxFbGVtZW50PiA+IHsKCiAgdHlwZWRlZiAgSUdTZXF1ZW5jZQogICAg
ICAgICAgICA8RWxlbWVudCwKICAgICAgICAgICAgIElTdGRPcHMgPEVsZW1lbnQ+ID4gSW5oZXJp
dGVkOwoKcHJvdGVjdGVkOgoKICB0eXBlZGVmIHR5cGVuYW1lICBJbmhlcml0ZWQ6OlB1cmVJbXBs
ZW1lbnRhdGlvbiBQdXJlSW1wbGVtZW50YXRpb247CgogIHR5cGVkZWYgIElTZXF1ZW5jZSA8RWxl
bWVudD4gU2VsZjsKCgoKCgoKCnB1YmxpYzoKCgogIHR5cGVkZWYgSUNvbGxlY3Rpb25HdWFyZDxF
bGVtZW50PiBHdWFyZDsKCgogICAgICAgICAgIElTZXF1ZW5jZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKElOdW1iZXIgPSAxMDApOwoKIyAzMjggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXNlcS5oIgoKCnByb3RlY3RlZDoKCiAgICAgICAg
ICAgSVNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQdXJlSW1wbGVtZW50
YXRpb24mKTsKCnByaXZhdGU6CgojIDM0NiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9pc2VxLmgiCgoKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dCwgY2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSVZHU2VxdWVuY2UgOgogIHB1YmxpYyBJR1NlcXVl
bmNlCiAgICAgICAgICA8RWxlbWVudCwgRWxlbWVudE9wcyA+IHsKCiAgdHlwZWRlZiAgSVZHU2Vx
dWVuY2UKICAgICAgICAgICAgPEVsZW1lbnQsIEVsZW1lbnRPcHM+IEluaGVyaXRlZDsKCnByb3Rl
Y3RlZDoKCiAgdHlwZWRlZiB0eXBlbmFtZSAKICAgICAgICAgICBJR1NlcXVlbmNlCiAgICAgICAg
ICAgIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6UHVyZUltcGxlbWVudGF0aW9uIFB1cmVJbXBsZW1l
bnRhdGlvbjsKCgogIHR5cGVkZWYgIElWU2VxdWVuY2VJbXBsCiAgICAgICAgICAgIDxQdXJlSW1w
bGVtZW50YXRpb24+IEltcGxlbWVudGF0aW9uOwoKCgoKCgoKCgoKCgogICAgICAgICAgIHR5cGVk
ZWYgIElTZXF1ZW5jZUFzTGlzdE9wcyA8IEVsZW1lbnQgLCBJV1N0ZE9wcyA8IEVsZW1lbnQgLCAg
IEVsZW1lbnRPcHMgPiwgSW1wbGVtZW50YXRpb24+IEluc3RhbnRpYXRpb24gOwoKcHVibGljOgoK
CiAgdHlwZWRlZiBJQ29sbGVjdGlvbkd1YXJkPEVsZW1lbnQ+IEd1YXJkOwoKCiAgICAgICAgICAg
SVZHU2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTnVtYmVyID0gMTAwKTsK
CiMgNDA3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lzZXEuaCIKCgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElWR1NlcXVlbmNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChQdXJlSW1wbGVtZW50YXRpb24mKTsKCnByaXZhdGU6CgojIDQy
NSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc2Vx
LmgiCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgpjbGFzcyBJVlNlcXVlbmNlIDoKICBw
dWJsaWMgSVZHU2VxdWVuY2UKICAgICAgICAgIDxFbGVtZW50LCBJU3RkT3BzIDxFbGVtZW50PiA+
IHsKCiAgdHlwZWRlZiAgSVZHU2VxdWVuY2UKICAgICAgICAgICAgPEVsZW1lbnQsCiAgICAgICAg
ICAgICBJU3RkT3BzIDxFbGVtZW50PiA+IEluaGVyaXRlZDsKCnByb3RlY3RlZDoKCiAgdHlwZWRl
ZiB0eXBlbmFtZSAgSW5oZXJpdGVkOjpQdXJlSW1wbGVtZW50YXRpb24gUHVyZUltcGxlbWVudGF0
aW9uOwoKICB0eXBlZGVmICBJVlNlcXVlbmNlIDxFbGVtZW50PiBTZWxmOwoKCgoKCgoKcHVibGlj
OgoKCiAgdHlwZWRlZiBJQ29sbGVjdGlvbkd1YXJkPEVsZW1lbnQ+IEd1YXJkOwoKCiAgICAgICAg
ICAgSVZTZXF1ZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOdW1iZXIgPSAxMDAp
OwoKIyA0NzUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaXNlcS5oIgoKCnByb3RlY3RlZDoKCiAgICAgICAgICAgSVZTZXF1ZW5jZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoUHVyZUltcGxlbWVudGF0aW9uJik7Cgpwcml2YXRlOgoKIyA0
OTMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXNl
cS5oIgoKCn07CgoKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEg
bmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lzZXEuaW5sIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoK
IAogCiAKIAogCiAKCiAKIAogCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBF
bGVtZW50T3BzPgppbmxpbmUKSUdTZXF1ZW5jZUN1cnNvciA8RWxlbWVudCwgRWxlbWVudE9wcz46
OgpJR1NlcXVlbmNlQ3Vyc29yCiAgKElHU2VxdWVuY2UKICAgIDxFbGVtZW50LCBFbGVtZW50T3Bz
PiBjb25zdCYgY29sbGVjdGlvbikKOiBJT3JkZXJlZEN1cnNvciA8RWxlbWVudD4KICAgIChjb2xs
ZWN0aW9uLml2SW1wbC0+Q3JlYXRlQ3Vyc29yICgpKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVt
ZW50LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUgSUdTZXF1ZW5jZUN1cnNvciA8RWxlbWVudCwg
RWxlbWVudE9wcz4mCklHU2VxdWVuY2VDdXJzb3IgPEVsZW1lbnQsIEVsZW1lbnRPcHM+OjoKb3Bl
cmF0b3I9CiAgKElHU2VxdWVuY2VDdXJzb3IKICAgIDxFbGVtZW50LCBFbGVtZW50T3BzPiBjb25z
dCYgY3Vyc29yKQp7IEluaGVyaXRlZDo6b3BlcmF0b3I9IChjdXJzb3IpOwogIHJldHVybiAqdGhp
czsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHM+CmlubGlu
ZQpJR1NlcXVlbmNlQ3Vyc29yIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6CklHU2VxdWVuY2VDdXJz
b3IgKElDdXJzb3JJbXBsKiBpbXBsKQo6IElPcmRlcmVkQ3Vyc29yIDxFbGVtZW50PiAoaW1wbCkK
ewp9CgojIDkyICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lzZXEuaW5sIgoKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBF
bGVtZW50T3BzPgppbmxpbmUKSUdTZXF1ZW5jZSA8RWxlbWVudCwgRWxlbWVudE9wcz46OgpJR1Nl
cXVlbmNlIChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMpCnsgdGhpcy0+U2V0SW1wbCAoKEltcGxl
bWVudGF0aW9uKikgKm5ldwoKCgoKICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24gKG51bWJl
ck9mRWxlbWVudHMpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEVsZW1lbnRP
cHM+CmlubGluZQpJR1NlcXVlbmNlIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6CklHU2VxdWVuY2UK
ICAoSUdTZXF1ZW5jZQogICAgPEVsZW1lbnQsIEVsZW1lbnRPcHM+IGNvbnN0JiBjb2xsZWN0aW9u
KQp7IHRoaXMtPkNsb25lSW1wbE9mIChjb2xsZWN0aW9uKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQsIGNsYXNzIEVsZW1lbnRPcHM+CmlubGluZSBJR1NlcXVlbmNlIDxFbGVtZW50LCBFbGVt
ZW50T3BzPiYKSUdTZXF1ZW5jZSA8RWxlbWVudCwgRWxlbWVudE9wcz46OgpvcGVyYXRvcj0gKElH
U2VxdWVuY2UKICAgICAgICAgICAgPEVsZW1lbnQsIEVsZW1lbnRPcHM+IGNvbnN0JiBjb2xsZWN0
aW9uKQp7IHRoaXMtPkltcGxPZiAoKnRoaXMpLkNvcHkgKHRoaXMtPkltcGxPZiAoY29sbGVjdGlv
bikpOwogIHJldHVybiAqdGhpczsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNz
IEVsZW1lbnRPcHM+CmlubGluZQpJR1NlcXVlbmNlIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6CklH
U2VxdWVuY2UgKFB1cmVJbXBsZW1lbnRhdGlvbiYgaW1wbCkKeyB0aGlzLT5TZXRJbXBsICgmaW1w
bCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUg
dHlwZW5hbWUgIElHU2VxdWVuY2UKIDxFbGVtZW50LCBFbGVtZW50T3BzPjo6SW1wbGVtZW50YXRp
b24mCklHU2VxdWVuY2UgPEVsZW1lbnQsIEVsZW1lbnRPcHM+OjoKSW1wbE9mIChJR1NlcXVlbmNl
CiAgICAgICAgIDxFbGVtZW50LCBFbGVtZW50T3BzPiBjb25zdCYgY29sbGVjdGlvbikKeyByZXR1
cm4gKihJbXBsZW1lbnRhdGlvbiopY29sbGVjdGlvbi5pdkltcGw7Cn0KCiAKIAogCgogCgp0ZW1w
bGF0ZSA8Y2xhc3MgRWxlbWVudD4KaW5saW5lCklTZXF1ZW5jZSA8RWxlbWVudD46OgpJU2VxdWVu
Y2UgKElOdW1iZXIgbnVtYmVyT2ZFbGVtZW50cykKOiBJR1NlcXVlbmNlCiAgIDxFbGVtZW50LCBJ
U3RkT3BzIDxFbGVtZW50PiA+IChudW1iZXJPZkVsZW1lbnRzKQp7Cn0KCiAKCnRlbXBsYXRlIDxj
bGFzcyBFbGVtZW50PgppbmxpbmUKSVNlcXVlbmNlIDxFbGVtZW50Pjo6CklTZXF1ZW5jZSAoUHVy
ZUltcGxlbWVudGF0aW9uJiBpbXBsKQo6IElHU2VxdWVuY2UKICAgPEVsZW1lbnQsIElTdGRPcHMg
PEVsZW1lbnQ+ID4gKGltcGwpCnsKfQoKCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dCwgY2xhc3MgRWxlbWVudE9wcz4KaW5saW5lCklWR1NlcXVlbmNlIDxFbGVtZW50LCBFbGVtZW50
T3BzPjo6CklWR1NlcXVlbmNlIChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMpCjogSUdTZXF1ZW5j
ZQogICAgPEVsZW1lbnQsIEVsZW1lbnRPcHM+ICgqKEltcGxlbWVudGF0aW9uKikgKm5ldwoKCgoK
ICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24gKG51bWJlck9mRWxlbWVudHMpKQp7Cn0KCiAK
CnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUKSVZHU2Vx
dWVuY2UgPEVsZW1lbnQsIEVsZW1lbnRPcHM+OjoKSVZHU2VxdWVuY2UgKFB1cmVJbXBsZW1lbnRh
dGlvbiYgaW1wbCkKOiBJR1NlcXVlbmNlCiAgICA8RWxlbWVudCwgRWxlbWVudE9wcz4gKGltcGwp
CnsKfQoKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50PgppbmxpbmUKSVZTZXF1ZW5j
ZSA8RWxlbWVudD46OgpJVlNlcXVlbmNlIChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMpCjogSVZH
U2VxdWVuY2UKICAgPEVsZW1lbnQsIElTdGRPcHMgPEVsZW1lbnQ+ID4gKG51bWJlck9mRWxlbWVu
dHMpCnsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJVlNlcXVlbmNlIDxF
bGVtZW50Pjo6CklWU2VxdWVuY2UgKFB1cmVJbXBsZW1lbnRhdGlvbiYgaW1wbCkKOiBJVkdTZXF1
ZW5jZQogICA8RWxlbWVudCwgSVN0ZE9wcyA8RWxlbWVudD4gPiAoaW1wbCkKewp9CgoKIAoKIyA1
MjQgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXNl
cS5oIiAyCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFn
bWEgaW5mbyhyZXN0b3JlKQogCgoKCiMgOCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNl
L21xcXVldWUuY3BwIiAyCgojIDEgIi91c3IvaW5jbHVkZS9nKysvZnN0cmVhbS5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKCmV4dGVybiAiQysr
IiB7CmNsYXNzIGZzdHJlYW1iYXNlIDogdmlydHVhbCBwdWJsaWMgaW9zIHsKCiAgICBtdXRhYmxl
IGZpbGVidWYgX19teV9mYjsgIAoKICAgIHZvaWQgX19mYl9pbml0ICgpOwogIHB1YmxpYzoKICAg
IGZzdHJlYW1iYXNlKCk7CiAgICBmc3RyZWFtYmFzZShpbnQgZmQpOwogICAgZnN0cmVhbWJhc2Uo
aW50IGZkLCBjaGFyICpwLCBpbnQgbCk7ICAKICAgIGZzdHJlYW1iYXNlKGNvbnN0IGNoYXIgKm5h
bWUsIGludCBtb2RlLCBpbnQgcHJvdD0wNjY0KTsKICAgIHZvaWQgY2xvc2UoKTsKCiAgICBmaWxl
YnVmKiByZGJ1ZigpIGNvbnN0IHsgcmV0dXJuICZfX215X2ZiOyB9CgoKCiAgICB2b2lkIG9wZW4o
Y29uc3QgY2hhciAqbmFtZSwgaW50IG1vZGUsIGludCBwcm90PTA2NjQpOwogICAgaW50IGlzX29w
ZW4oKSBjb25zdCB7IHJldHVybiByZGJ1ZigpLT5pc19vcGVuKCk7IH0KICAgIHZvaWQgc2V0YnVm
KGNoYXIgKnB0ciwgaW50IGxlbikgeyByZGJ1ZigpLT5zZXRidWYocHRyLCBsZW4pOyB9CiAgICB2
b2lkIGF0dGFjaChpbnQgZmQpOwoKCgoKfTsKCmNsYXNzIGlmc3RyZWFtIDogcHVibGljIGZzdHJl
YW1iYXNlLCBwdWJsaWMgaXN0cmVhbSB7CiAgcHVibGljOgogICAgaWZzdHJlYW0oKSA6IGZzdHJl
YW1iYXNlKCkgeyB9CiAgICBpZnN0cmVhbShpbnQgZmQpIDogZnN0cmVhbWJhc2UoZmQpIHsgfQog
ICAgaWZzdHJlYW0oaW50IGZkLCBjaGFyICpwLCBpbnQgbCkgOiBmc3RyZWFtYmFzZShmZCwgcCwg
bCkgeyB9ICAKICAgIGlmc3RyZWFtKGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlPWlvczo6aW4s
IGludCBwcm90PTA2NjQpCgk6IGZzdHJlYW1iYXNlKG5hbWUsIG1vZGUgfCBpb3M6OmluLCBwcm90
KSB7IH0KICAgIHZvaWQgb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZT1pb3M6OmluLCBp
bnQgcHJvdD0wNjY0KQoJeyBmc3RyZWFtYmFzZTo6b3BlbihuYW1lLCBtb2RlIHwgaW9zOjppbiwg
cHJvdCk7IH0KfTsKCmNsYXNzIG9mc3RyZWFtIDogcHVibGljIGZzdHJlYW1iYXNlLCBwdWJsaWMg
b3N0cmVhbSB7CiAgcHVibGljOgogICAgb2ZzdHJlYW0oKSA6IGZzdHJlYW1iYXNlKCkgeyB9CiAg
ICBvZnN0cmVhbShpbnQgZmQpIDogZnN0cmVhbWJhc2UoZmQpIHsgfQogICAgb2ZzdHJlYW0oaW50
IGZkLCBjaGFyICpwLCBpbnQgbCkgOiBmc3RyZWFtYmFzZShmZCwgcCwgbCkgeyB9ICAKICAgIG9m
c3RyZWFtKGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlPWlvczo6b3V0LCBpbnQgcHJvdD0wNjY0
KQoJOiBmc3RyZWFtYmFzZShuYW1lLCBtb2RlIHwgaW9zOjpvdXQsIHByb3QpIHsgfQogICAgdm9p
ZCBvcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlPWlvczo6b3V0LCBpbnQgcHJvdD0wNjY0
KQoJeyBmc3RyZWFtYmFzZTo6b3BlbihuYW1lLCBtb2RlIHwgaW9zOjpvdXQsIHByb3QpOyB9Cn07
CgpjbGFzcyBmc3RyZWFtIDogcHVibGljIGZzdHJlYW1iYXNlLCBwdWJsaWMgaW9zdHJlYW0gewog
IHB1YmxpYzoKICAgIGZzdHJlYW0oKSA6IGZzdHJlYW1iYXNlKCkgeyB9CiAgICBmc3RyZWFtKGlu
dCBmZCkgOiBmc3RyZWFtYmFzZShmZCkgeyB9CiAgICBmc3RyZWFtKGNvbnN0IGNoYXIgKm5hbWUs
IGludCBtb2RlLCBpbnQgcHJvdD0wNjY0KQoJOiBmc3RyZWFtYmFzZShuYW1lLCBtb2RlLCBwcm90
KSB7IH0KICAgIGZzdHJlYW0oaW50IGZkLCBjaGFyICpwLCBpbnQgbCkgOiBmc3RyZWFtYmFzZShm
ZCwgcCwgbCkgeyB9ICAKICAgIHZvaWQgb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZSwg
aW50IHByb3Q9MDY2NCkKCXsgZnN0cmVhbWJhc2U6Om9wZW4obmFtZSwgbW9kZSwgcHJvdCk7IH0K
fTsKfSAgCgojIDkgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIg
MgoKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvdHJhY2VtYWNyb3MuaHBwIiAxCgoK
CiAKCgoKCgoKCgoKIyA2MCAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvdHJhY2VtYWNyb3Mu
aHBwIgoKCgkKCQoJCgkKCQoKCgoKIyAxMSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNl
L21xcXVldWUuY3BwIiAyCgoKIyAxICIvaG9tZS94aHU2MDMxL3RzZncvSW5jbHVkZS9UU0ZXRXJy
b3IuaHBwIiAxCgoKCgoKCQkJCgoKCQkJCgoKCgoKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0lu
Y2x1ZGUvVFNGV0RhdGFTZXQuaHBwIiAxCiAKIAogCiAKIAoKCiAgICAKCiAgICAgCiAgICAKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMu
aCIgMSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCgoKCiMgMTEgIi9ob21lL3hodTYwMzEvdHNmdy9J
bmNsdWRlL1RTRldEYXRhU2V0LmhwcCIgMgoKICAgIAojIDEgIi91c3IvbGliL2djYy1saWIvczM5
MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL2Zsb2F0LmgiIDEgMwogCgoKIAoKICAgIAoKCiAg
ICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAg
IAoKCiAgICAKCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAg
IAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAg
IAoKCiAgICAKCgogICAgCgoKICAgIAoKCgoKIyAxMiAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1
ZGUvVFNGV0RhdGFTZXQuaHBwIiAyCgoKICAgICAKICAgIAojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cGFyc2UuaHBwIiAxCiMgMTAgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cGFyc2Uu
aHBwIgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
CiAKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19I
RUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEg
bmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVt
KDQpCgoKCgoKCgogCgogCiAKCiAKY2xhc3MgSVN0cmluZzsKY2xhc3MgSVN0cmluZ1Rlc3Q7CmNs
YXNzIElTdHJpbmdQYXJzZXJEYXRhOwpjbGFzcyBJU3RyaW5nUGFyc2VyOwoKSVN0cmluZ1BhcnNl
ciAgIG9wZXJhdG9yPj4oY29uc3QgSVN0cmluZyYgdGV4dCwgSVN0cmluZyYgdG9rZW4gKTsKSVN0
cmluZ1BhcnNlciAgIG9wZXJhdG9yPj4oY29uc3QgSVN0cmluZyYgdGV4dCwgY29uc3QgSVN0cmlu
ZyYgcGF0dGVybik7CklTdHJpbmdQYXJzZXIgICBvcGVyYXRvcj4+KGNvbnN0IElTdHJpbmcmIHRl
eHQsIGNvbnN0IGNoYXIqIHBhdHRlcm4pOwpJU3RyaW5nUGFyc2VyICAgb3BlcmF0b3I+Pihjb25z
dCBJU3RyaW5nJiB0ZXh0LCBjaGFyIHBhdHRlcm4pOwpJU3RyaW5nUGFyc2VyICAgb3BlcmF0b3I+
Pihjb25zdCBJU3RyaW5nJiB0ZXh0LCBpb2M6OnVudW1lcmljX3QgcG9zaXRpb24pOwpJU3RyaW5n
UGFyc2VyICAgb3BlcmF0b3I+Pihjb25zdCBJU3RyaW5nJiB0ZXh0LCBpbnQgcG9zaXRpb24pOwpJ
U3RyaW5nUGFyc2VyICAgb3BlcmF0b3I8PChjb25zdCBJU3RyaW5nJiB0ZXh0LCBpb2M6OnVudW1l
cmljX3QgcG9zaXRpb24pOwpJU3RyaW5nUGFyc2VyICAgb3BlcmF0b3I+Pihjb25zdCBJU3RyaW5n
JiB0ZXh0LCBjb25zdCBJU3RyaW5nVGVzdCYgdGVzdCk7CgogCgogCgpjbGFzcyAgIElTdHJpbmdQ
YXJzZXIgewpwdWJsaWM6CgogCiB+SVN0cmluZ1BhcnNlciAoICk7CgogCgplbnVtIENvbW1hbmQg
ewogICAgcmVzZXQsCiAgICBza2lwV29yZAp9OwoKY2xhc3MgICBTa2lwV29yZHMgewpwdWJsaWM6
CiAgU2tpcFdvcmRzICAgICAoIGlvYzo6dW51bWVyaWNfdCBudW1iZXJPZldvcmRzID0gMSApOwpp
b2M6OnVudW1lcmljX3QKICBudW1iZXJPZldvcmRzICggKSBjb25zdDsKcHJpdmF0ZToKaW9jOjp1
bnVtZXJpY190CiAgZk51bVNraXA7Cgp9OwoKSVN0cmluZ1BhcnNlcgogJm9wZXJhdG9yID4+ICAg
KCBDb21tYW5kICAgICAgICAgIGNvbW1hbmQgKSwKICZvcGVyYXRvciA+PiAgICggY29uc3QgU2tp
cFdvcmRzJiBza2lwT2JqZWN0ICk7CgogCmZyaWVuZCBJU3RyaW5nUGFyc2VyICAKICBvcGVyYXRv
ciA+PiAgICggY29uc3QgSVN0cmluZyYgdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgSVN0
cmluZyYgdG9rZW4gKTsKCmZyaWVuZCBJU3RyaW5nUGFyc2VyICAKICBvcGVyYXRvciA+PiAgICgg
Y29uc3QgSVN0cmluZyYgdGV4dCwKICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyYgcGF0
dGVybiApOwpmcmllbmQgSVN0cmluZ1BhcnNlciAgCiAgb3BlcmF0b3IgPj4gICAoIGNvbnN0IElT
dHJpbmcmIHRleHQsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqICAgIHBhdHRlcm4gKTsK
CmZyaWVuZCBJU3RyaW5nUGFyc2VyICAKICBvcGVyYXRvciA+PiAgICggY29uc3QgSVN0cmluZyYg
dGV4dCwKICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgcGF0dGVybiApOwoKZnJpZW5k
IElTdHJpbmdQYXJzZXIgIAogIG9wZXJhdG9yID4+ICAgKCBjb25zdCBJU3RyaW5nJiB0ZXh0LAog
ICAgICAgICAgICAgICAgICBpb2M6OnVudW1lcmljX3QgIHBvc2l0aW9uICk7CmZyaWVuZCBJU3Ry
aW5nUGFyc2VyICAKICBvcGVyYXRvciA+PiAgICggY29uc3QgSVN0cmluZyYgdGV4dCwKICAgICAg
ICAgICAgICAgICAgaW50ICAgICAgICAgICAgcG9zaXRpb24gKTsKCmZyaWVuZCBJU3RyaW5nUGFy
c2VyICAKICBvcGVyYXRvciA8PCAgICggY29uc3QgSVN0cmluZyYgdGV4dCwKICAgICAgICAgICAg
ICAgICAgaW9jOjp1bnVtZXJpY190ICBwb3NpdGlvbiApOwoKZnJpZW5kIElTdHJpbmdQYXJzZXIg
IAogIG9wZXJhdG9yID4+ICAgKCBjb25zdCBJU3RyaW5nJiAgICAgdGV4dCwKICAgICAgICAgICAg
ICAgICAgY29uc3QgSVN0cmluZ1Rlc3QmIHRlc3QgKTsKCmZyaWVuZCBJU3RyaW5nUGFyc2VyICAK
ICBvcGVyYXRvciA+PiAgICggY29uc3QgSVN0cmluZyYgICAgICAgICB0ZXh0LAogICAgICAgICAg
ICAgICAgICBJU3RyaW5nUGFyc2VyOjpDb21tYW5kIGNvbW1hbmQgKTsKCmZyaWVuZCBJU3RyaW5n
UGFyc2VyICAKICBvcGVyYXRvciA+PiAgICggY29uc3QgSVN0cmluZyYgICAgICAgICAgICAgICAg
ICB0ZXh0LAogICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nUGFyc2VyOjpTa2lwV29yZHMm
IHNraXBPYmplY3QgKTsKCiAKSVN0cmluZ1BhcnNlcgogJm9wZXJhdG9yID4+ICAgKCBJU3RyaW5n
JiB0b2tlbiApOwoKIApJU3RyaW5nUGFyc2VyCiAmb3BlcmF0b3IgPj4gICAoIGNvbnN0IElTdHJp
bmcmICAgICBwYXR0ZXJuICksCiAmb3BlcmF0b3IgPj4gICAoIGNvbnN0IGNoYXIqICAgICAgICBw
YXR0ZXJuICksCiAmb3BlcmF0b3IgPj4gICAoIGNoYXIgICAgICAgICAgICAgICBwYXR0ZXJuICks
CiAmb3BlcmF0b3IgPj4gICAoIGNvbnN0IElTdHJpbmdUZXN0JiB0ZXN0ICk7CgogCklTdHJpbmdQ
YXJzZXIKICZvcGVyYXRvciA+PiAgICggaW50ICAgICAgICAgICBkZWx0YSApLAogJm9wZXJhdG9y
ID4+ICAgKCBpb2M6OnVudW1lcmljX3QgZGVsdGEgKTsKCiAKSVN0cmluZ1BhcnNlcgogJm9wZXJh
dG9yIDw8ICAgKCBpb2M6OnVudW1lcmljX3QgcG9zaXRpb24gKTsKCgpwcm90ZWN0ZWQ6CiAKICBJ
U3RyaW5nUGFyc2VyICggY29uc3QgSVN0cmluZyYgICAgICAgdGV4dCApOwogIElTdHJpbmdQYXJz
ZXIgKCBjb25zdCBJU3RyaW5nUGFyc2VyJiBwYXJzZXIgKTsKCgogCnByaXZhdGU6CklTdHJpbmdQ
YXJzZXJEYXRhCiAqZkRhdGE7Cgp9OyAgCgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoK
CiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9u
ZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKSVN0cmluZ1Bh
cnNlciAgIG9wZXJhdG9yPj4oY29uc3QgSVN0cmluZyYgdGV4dCwgSVN0cmluZ1BhcnNlcjo6Q29t
bWFuZCBjb21tYW5kKTsKSVN0cmluZ1BhcnNlciAgIG9wZXJhdG9yPj4oY29uc3QgSVN0cmluZyYg
dGV4dCwgY29uc3QgSVN0cmluZ1BhcnNlcjo6U2tpcFdvcmRzJiBza2lwT2JqZWN0KTsKCiAKCgoK
CgojIDE1ICIvaG9tZS94aHU2MDMxL3RzZncvSW5jbHVkZS9UU0ZXRGF0YVNldC5ocHAiIDIKCiAg
ICAKICAgIAojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWV4Y2Jhc2UuaHBwIiAxCiMgMTAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIgoKCiMgNzI2ICIvaG9tZS9ha25vbGwv
aW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lleGNiYXNlLmhwcCIKCgoKCgoK
IyAxNyAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0RhdGFTZXQuaHBwIiAyCgogICAg
CiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
a3MuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCgojIDEgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFrcy5oIiAxCgoKCiAK
IAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xp
bnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lha2V5LmgiIDEKCgoKIAogCiAKCgoKCgoKCgoK
CgogCiAKIAogCiAKIAoKIAoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQo
bGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQog
CgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoK
CgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCnRlbXBsYXRl
IDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+CmNsYXNzIElBS2V5Q29sbGVjdGlvbiA6IHB1Ymxp
YyB2aXJ0dWFsIElBQ29sbGVjdGlvbiA8RWxlbWVudD4KewogIHR5cGVkZWYgIElBQ29sbGVjdGlv
bkltcGwgSW1wbGVtZW50YXRpb247CgpwdWJsaWM6CgoKICAgICAgICAgICBJQUtleUNvbGxlY3Rp
b24gIChJTm90aWZpZXImKTsKCgogICAgICAgICAgfklBS2V5Q29sbGVjdGlvbiAgKCk7CgoKCgog
IGJvb2wgYWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChFbGVtZW50IGNvbnN0Jik7CgoKCgogIGJvb2wgYWRkT3JSZXBsYWNlRWxlbWVudFdpdGhL
ZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFbGVtZW50IGNvbnN0JiwgSUN1cnNvciYp
OwoKICBib29sIGNvbnRhaW5zQWxsS2V5c0Zyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChJQUNvbGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0JikgY29uc3Q7CgogIGJvb2wgY29udGFpbnNF
bGVtZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKEtleSBjb25zdCYpIGNv
bnN0OwoKICBFbGVtZW50JiBlbGVtZW50V2l0aEtleSAgIChLZXkgY29uc3QmKTsKCiAgRWxlbWVu
dCBjb25zdCYKICAgICAgICAgICBlbGVtZW50V2l0aEtleSAgIChLZXkgY29uc3QmKSBjb25zdDsK
CiAgS2V5IGNvbnN0JgogICAgICAgICAgIGtleSAgICAgICAgICAgICAgKEVsZW1lbnQgY29uc3Qm
KSBjb25zdDsKCiAgYm9vbCBsb2NhdGVFbGVtZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKEtleSBjb25zdCYsIElDdXJzb3ImKSBjb25zdDsKCiAgYm9vbCBsb2NhdGVOZXh0
RWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChLZXkgY29uc3QmLCBJ
Q3Vyc29yJikgY29uc3Q7CgoKCgogIGJvb2wgbG9jYXRlT3JBZGRFbGVtZW50V2l0aEtleQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEVsZW1lbnQgY29uc3QmKTsKCgoKCiAgYm9vbCBsb2Nh
dGVPckFkZEVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRWxlbWVu
dCBjb25zdCYsIElDdXJzb3ImKTsKCiAgSU51bWJlciAgbnVtYmVyT2ZEaWZmZXJlbnRLZXlzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKSBjb25zdDsKCiAgSU51bWJlciAgbnVtYmVyT2ZF
bGVtZW50c1dpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChLZXkgY29uc3QmKSBj
b25zdDsKCgoKCiAgSU51bWJlciAgcmVtb3ZlQWxsRWxlbWVudHNXaXRoS2V5CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoS2V5IGNvbnN0Jik7CgoKCgogIGJvb2wgcmVtb3ZlRWxlbWVudFdp
dGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChLZXkgY29uc3QmKTsKCgoKCiAgYm9v
bCByZXBsYWNlRWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFbGVt
ZW50IGNvbnN0Jik7CgoKCgogIGJvb2wgcmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoRWxlbWVudCBjb25zdCYsIElDdXJzb3ImKTsKCiAgYm9vbCBzZXRU
b05leHRXaXRoRGlmZmVyZW50S2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUN1cnNv
ciYpIGNvbnN0OwoKcHJvdGVjdGVkOgoKICAgICAgICAgICBJQUtleUNvbGxlY3Rpb24gICgpOwoK
ICAgICAgICAgICBJQUtleUNvbGxlY3Rpb24gIChJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtl
eT4gY29uc3QmKTsKCnByaXZhdGU6CgogIHN0YXRpYwogIEltcGxlbWVudGF0aW9uJgogICAgICAg
ICAgIEltcGxPZiAgICAgICAgICAgKElBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5PiBjb25z
dCYpOwoKIyAyMTEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaWFrZXkuaCIKCgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoK
I3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAojIDEgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFrZXkuaW5sIiAxCgoKCiAKIAogCgoK
CgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIAogCgoKCiAKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dCwgY2xhc3MgS2V5PgppbmxpbmUKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKSUFL
ZXlDb2xsZWN0aW9uIChJTm90aWZpZXImIG5vdGlmaWVyKQp7IHRoaXMtPlNldEltcGwgKChJbXBs
ZW1lbnRhdGlvbiopJm5vdGlmaWVyKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFz
cyBLZXk+CmlubGluZQpJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtleT46Ogp+SUFLZXlDb2xs
ZWN0aW9uICgpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5l
IGJvb2wKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKYWRkT3JSZXBsYWNlRWxlbWVu
dFdpdGhLZXkgKEVsZW1lbnQgY29uc3QmIGVsZW1lbnQpCnsgcmV0dXJuIEltcGxPZiAoKnRoaXMp
LkFkZE9yUmVwbGFjZUVsZW1lbnRXaXRoS2V5ICgmZWxlbWVudCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50LCBjbGFzcyBLZXk+CmlubGluZSBib29sCklBS2V5Q29sbGVjdGlvbiA8RWxlbWVu
dCwgS2V5Pjo6CmFkZE9yUmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAgKEVsZW1lbnQgY29uc3QmIGVs
ZW1lbnQsIElDdXJzb3ImIGN1cnNvcikKeyByZXR1cm4gSW1wbE9mICgqdGhpcykuCiAgICBBZGRP
clJlcGxhY2VFbGVtZW50V2l0aEtleSAoJmVsZW1lbnQsIHRoaXMtPkNyc3JJbXBsT2YgKGN1cnNv
cikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUgYm9vbApJ
QUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtleT46Ogpjb250YWluc0FsbEtleXNGcm9tIChJQUNv
bGxlY3Rpb24gPEVsZW1lbnQ+IGNvbnN0JiBjb2xsZWN0aW9uKSBjb25zdAp7IHJldHVybiBJbXBs
T2YgKCp0aGlzKS4KICAgIENvbnRhaW5zQWxsS2V5c0Zyb20gKElBQ29sbGVjdGlvbiA8RWxlbWVu
dD46OkltcGxPZiAoY29sbGVjdGlvbikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xh
c3MgS2V5PgppbmxpbmUgYm9vbApJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtleT46Ogpjb250
YWluc0VsZW1lbnRXaXRoS2V5IChLZXkgY29uc3QmIGtleSkgY29uc3QKeyByZXR1cm4gSW1wbE9m
ICgqdGhpcykuQ29udGFpbnNFbGVtZW50V2l0aEtleSAoJmtleSk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50LCBjbGFzcyBLZXk+CmlubGluZSBFbGVtZW50JgpJQUtleUNvbGxlY3Rpb24gPEVs
ZW1lbnQsIEtleT46OgplbGVtZW50V2l0aEtleSAoS2V5IGNvbnN0JiBrZXkpCnsgcmV0dXJuICoo
RWxlbWVudCopIEltcGxPZiAoKnRoaXMpLkVsZW1lbnRXaXRoS2V5ICgma2V5KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIEVsZW1lbnQgY29uc3QmCklBS2V5
Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6CmVsZW1lbnRXaXRoS2V5IChLZXkgY29uc3QmIGtl
eSkgY29uc3QKeyByZXR1cm4gKihFbGVtZW50KikgSW1wbE9mICgqdGhpcykuRWxlbWVudFdpdGhL
ZXkgKCZrZXkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUg
S2V5IGNvbnN0JgpJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtleT46OgprZXkgKEVsZW1lbnQg
Y29uc3QmIGVsZW1lbnQpIGNvbnN0CnsgcmV0dXJuICooS2V5KikgSW1wbE9mICgqdGhpcykuS2V5
ICgmZWxlbWVudCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+CmlubGlu
ZSBib29sCklBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6CmxvY2F0ZUVsZW1lbnRXaXRo
S2V5IChLZXkgY29uc3QmIGtleSwgSUN1cnNvciYgY3Vyc29yKSBjb25zdAp7IHJldHVybiBJbXBs
T2YgKCp0aGlzKS4KICAgIExvY2F0ZUVsZW1lbnRXaXRoS2V5ICgma2V5LCB0aGlzLT5DcnNySW1w
bE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5s
aW5lIGJvb2wKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKbG9jYXRlTmV4dEVsZW1l
bnRXaXRoS2V5IChLZXkgY29uc3QmIGtleSwgSUN1cnNvciYgY3Vyc29yKSBjb25zdAp7IHJldHVy
biBJbXBsT2YgKCp0aGlzKS4KICAgIExvY2F0ZU5leHRFbGVtZW50V2l0aEtleSAoJmtleSwgdGhp
cy0+Q3JzckltcGxPZiAoY3Vyc29yKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFz
cyBLZXk+CmlubGluZSBib29sCklBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6CmxvY2F0
ZU9yQWRkRWxlbWVudFdpdGhLZXkgKEVsZW1lbnQgY29uc3QmIGVsZW1lbnQpCnsgcmV0dXJuIElt
cGxPZiAoKnRoaXMpLkxvY2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkgKCZlbGVtZW50KTsKfQoKdGVt
cGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIGJvb2wKSUFLZXlDb2xsZWN0
aW9uIDxFbGVtZW50LCBLZXk+OjoKbG9jYXRlT3JBZGRFbGVtZW50V2l0aEtleSAoRWxlbWVudCBj
b25zdCYgZWxlbWVudCwgSUN1cnNvciYgY3Vyc29yKQp7IHJldHVybiBJbXBsT2YgKCp0aGlzKS4K
ICAgIExvY2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkgKCZlbGVtZW50LCB0aGlzLT5DcnNySW1wbE9m
IChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5l
IElOdW1iZXIKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKbnVtYmVyT2ZEaWZmZXJl
bnRLZXlzICgpIGNvbnN0CnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpLk51bWJlck9mRGlmZmVyZW50
S2V5cyAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIElO
dW1iZXIKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKbnVtYmVyT2ZFbGVtZW50c1dp
dGhLZXkgKEtleSBjb25zdCYga2V5KSBjb25zdAp7IHJldHVybiBJbXBsT2YgKCp0aGlzKS5OdW1i
ZXJPZkVsZW1lbnRzV2l0aEtleSAoJmtleSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBj
bGFzcyBLZXk+CmlubGluZSBib29sCklBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6CnJl
bW92ZUVsZW1lbnRXaXRoS2V5IChLZXkgY29uc3QmIGtleSkKeyByZXR1cm4gSW1wbE9mICgqdGhp
cykuUmVtb3ZlRWxlbWVudFdpdGhLZXkgKCZrZXkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dCwgY2xhc3MgS2V5PgppbmxpbmUgSU51bWJlcgpJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtl
eT46OgpyZW1vdmVBbGxFbGVtZW50c1dpdGhLZXkgKEtleSBjb25zdCYga2V5KQp7IHJldHVybiBJ
bXBsT2YgKCp0aGlzKS5SZW1vdmVBbGxFbGVtZW50c1dpdGhLZXkgKCZrZXkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUgYm9vbApJQUtleUNvbGxlY3Rpb24g
PEVsZW1lbnQsIEtleT46OgpyZXBsYWNlRWxlbWVudFdpdGhLZXkgKEVsZW1lbnQgY29uc3QmIGVs
ZW1lbnQpCnsgcmV0dXJuIEltcGxPZiAoKnRoaXMpLlJlcGxhY2VFbGVtZW50V2l0aEtleSAoJmVs
ZW1lbnQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUgYm9v
bApJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtleT46OgpyZXBsYWNlRWxlbWVudFdpdGhLZXkg
KEVsZW1lbnQgY29uc3QmIGVsZW1lbnQsIElDdXJzb3ImIGN1cnNvcikKeyByZXR1cm4gSW1wbE9m
ICgqdGhpcykuCiAgICBSZXBsYWNlRWxlbWVudFdpdGhLZXkgKCZlbGVtZW50LCB0aGlzLT5DcnNy
SW1wbE9mIChjdXJzb3IpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4K
aW5saW5lIGJvb2wKSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKc2V0VG9OZXh0V2l0
aERpZmZlcmVudEtleSAoSUN1cnNvciYgY3Vyc29yKSBjb25zdAp7IHJldHVybiBJbXBsT2YgKCp0
aGlzKS4KICAgIFNldFRvTmV4dFdpdGhEaWZmZXJlbnRLZXkgKHRoaXMtPkNyc3JJbXBsT2YgKGN1
cnNvcikpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUK
SUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjoKSUFLZXlDb2xsZWN0aW9uICgpCnsKfQoK
dGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lCklBS2V5Q29sbGVjdGlv
biA8RWxlbWVudCwgS2V5Pjo6CklBS2V5Q29sbGVjdGlvbiAoSUFLZXlDb2xsZWN0aW9uIDxFbGVt
ZW50LCBLZXk+IGNvbnN0JikKewp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3Mg
S2V5PgppbmxpbmUgdHlwZW5hbWUgIElBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6SW1w
bGVtZW50YXRpb24mCklBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6CkltcGxPZiAoSUFL
ZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+IGNvbnN0JiBjb2xsZWN0aW9uKQp7IHJldHVybiAq
KEltcGxlbWVudGF0aW9uKiljb2xsZWN0aW9uLml2SW1wbDsKfQoKIAoKIyAyNDAgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWFrZXkuaCIgMgoKIAoK
IAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVz
dG9yZSkKIAoKIAoKIyAyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9pYWtzLmgiIDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9paWFrcy5oIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAK
IAogCiAKCiAKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBf
X0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNw
cmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdt
YSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgpjbGFzcyAgIElBS2V5U2V0
SW1wbCA6IHB1YmxpYyBJQUNvbGxlY3Rpb25JbXBsIHsKcHVibGljOgoKICAgICAgICAgIH5JQUtl
eVNldEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKcHJvdGVjdGVkOgoKICAg
ICAgICAgICBJQUtleVNldEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHMmKTsK
CiAgYm9vbCAgICAgTG9jYXRlTmV4dEVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJikgY29uc3Q7CgogIElOdW1iZXIgIE51
bWJlck9mRGlmZmVyZW50S2V5cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgY29uc3Q7
CgogIElOdW1iZXIgIE51bWJlck9mRWxlbWVudHNXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICBJTnVtYmVyICBSZW1vdmVBbGxFbGVtZW50
c1dpdGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0Kik7CgogIGJv
b2wgICAgIFNldFRvTmV4dFdpdGhEaWZmZXJlbnRLZXkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoKcHJpdmF0ZToKCgoKCgoKCgoKfTsKCiAKCiAKCgoK
CgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoK
CiAKCiAKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21h
IGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9pYWtzLmgiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNw
cmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElO
R19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAog
CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgpjbGFzcyBJQUtleVNldCA6
CiAgcHVibGljIElBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5PiB7CgogIHR5cGVkZWYgIElB
S2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5PiBJbmhlcml0ZWQ7CgogIHR5cGVkZWYgIElBS2V5
U2V0SW1wbCBJbXBsZW1lbnRhdGlvbjsKCnB1YmxpYzoKCgogICAgICAgICAgIElBS2V5U2V0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5vdGlmaWVyJik7CgoKICAgICAgICAgIH5JQUtl
eVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7Cgpwcm90ZWN0ZWQ6CgogICAgICAg
ICAgIElBS2V5U2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgICAgICAgICAg
SUFLZXlTZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQUtleVNldCA8RWxlbWVudCwg
S2V5PiBjb25zdCYpOwoKICBib29sICAgICBsb2NhdGVOZXh0RWxlbWVudFdpdGhLZXkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChLZXkgY29uc3QmLCBJQ3Vyc29yJikgY29uc3Q7CgogIElO
dW1iZXIgIG51bWJlck9mRGlmZmVyZW50S2V5cwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCkgY29uc3Q7CgogIElOdW1iZXIgIG51bWJlck9mRWxlbWVudHNXaXRoS2V5CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoS2V5IGNvbnN0JikgY29uc3Q7CgogIElOdW1iZXIgIHJlbW92ZUFs
bEVsZW1lbnRzV2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKEtleSBjb25zdCYp
OwoKICBib29sICAgICBzZXRUb05leHRXaXRoRGlmZmVyZW50S2V5CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoSUN1cnNvciYpIGNvbnN0OwoKcHJpdmF0ZToKCiAgc3RhdGljCiAgSW1wbGVt
ZW50YXRpb24mCiAgICAgICAgICAgSW1wbE9mICAgICAgICAgICAoSUFLZXlTZXQgPEVsZW1lbnQs
IEtleT4gY29uc3QmKTsKCgoKCgoKCgoKfTsKCiAKCiAKCgoKCgoKCgoKCgojcHJhZ21hIGVudW0o
cG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lha3MuaW5sIiAxCgoKCiAK
IAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiAKIAogCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudCwgY2xhc3MgS2V5PgppbmxpbmUKSUFLZXlTZXQgPEVsZW1lbnQsIEtleT46OgpJQUtleVNl
dCAoSU5vdGlmaWVyJiBub3RpZmllcikKeyB0aGlzLT5TZXRJbXBsICgoSW1wbGVtZW50YXRpb24q
KSZub3RpZmllcik7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5Pgppbmxp
bmUKSUFLZXlTZXQgPEVsZW1lbnQsIEtleT46Ogp+SUFLZXlTZXQgKCkKewp9CgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUKSUFLZXlTZXQgPEVsZW1lbnQsIEtl
eT46OgpJQUtleVNldCAoKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+
CmlubGluZQpJQUtleVNldCA8RWxlbWVudCwgS2V5Pjo6CklBS2V5U2V0IChJQUtleVNldCA8RWxl
bWVudCwgS2V5PiBjb25zdCYgY29sbGVjdGlvbikKOiBJbmhlcml0ZWQgKGNvbGxlY3Rpb24pCnsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIGJvb2wKSUFLZXlT
ZXQgPEVsZW1lbnQsIEtleT46Ogpsb2NhdGVOZXh0RWxlbWVudFdpdGhLZXkgKEtleSBjb25zdCYg
a2V5LCBJQ3Vyc29yJiBjdXJzb3IpIGNvbnN0CnsgcmV0dXJuIElBS2V5Q29sbGVjdGlvbiA8RWxl
bWVudCwgS2V5Pjo6CiAgICBsb2NhdGVOZXh0RWxlbWVudFdpdGhLZXkgKGtleSwgY3Vyc29yKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIElOdW1iZXIKSUFL
ZXlTZXQgPEVsZW1lbnQsIEtleT46OgpudW1iZXJPZkRpZmZlcmVudEtleXMgKCkgY29uc3QKeyBy
ZXR1cm4gSUFLZXlDb2xsZWN0aW9uIDxFbGVtZW50LCBLZXk+OjpudW1iZXJPZkRpZmZlcmVudEtl
eXMgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+CmlubGluZSBJTnVt
YmVyCklBS2V5U2V0IDxFbGVtZW50LCBLZXk+OjoKbnVtYmVyT2ZFbGVtZW50c1dpdGhLZXkgKEtl
eSBjb25zdCYga2V5KSBjb25zdAp7IHJldHVybiBJQUtleUNvbGxlY3Rpb24gPEVsZW1lbnQsIEtl
eT46Om51bWJlck9mRWxlbWVudHNXaXRoS2V5IChrZXkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudCwgY2xhc3MgS2V5PgppbmxpbmUgSU51bWJlcgpJQUtleVNldCA8RWxlbWVudCwgS2V5Pjo6
CnJlbW92ZUFsbEVsZW1lbnRzV2l0aEtleSAoS2V5IGNvbnN0JiBrZXkpCnsgcmV0dXJuIElBS2V5
Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5Pjo6cmVtb3ZlQWxsRWxlbWVudHNXaXRoS2V5IChrZXkp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgppbmxpbmUgYm9vbApJQUtl
eVNldCA8RWxlbWVudCwgS2V5Pjo6CnNldFRvTmV4dFdpdGhEaWZmZXJlbnRLZXkgKElDdXJzb3Im
IGN1cnNvcikgY29uc3QKeyByZXR1cm4KICAgIElBS2V5Q29sbGVjdGlvbiA8RWxlbWVudCwgS2V5
Pjo6c2V0VG9OZXh0V2l0aERpZmZlcmVudEtleSAoY3Vyc29yKTsKfQoKIAoKdGVtcGxhdGUgPGNs
YXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lIHR5cGVuYW1lICBJQUtleVNldCA8RWxlbWVu
dCwgS2V5Pjo6SW1wbGVtZW50YXRpb24mCklBS2V5U2V0IDxFbGVtZW50LCBLZXk+OjoKSW1wbE9m
IChJQUtleVNldCA8RWxlbWVudCwgS2V5PiBjb25zdCYgY29sbGVjdGlvbikKeyByZXR1cm4gKihJ
bXBsZW1lbnRhdGlvbiopY29sbGVjdGlvbi5pdkltcGw7Cn0KCiAKCiMgMTUzICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lha3MuaCIgMgoKIAoKIAoj
cHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9y
ZSkKIAoKIAoKIyAyNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4v
aW5jbHVkZS9pa3MuaCIgMgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lpY2tzLmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAK
IAoKIAoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lP
Q19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKCiAKCiNwcmFn
bWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoKCgoKI3ByYWdtYSBl
bnVtKDQpCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgQ0lu
aGVyaXRlZD4KY2xhc3MgSUNLZXlTZXRJbXBsIDogcHVibGljIENJbmhlcml0ZWQgewpwdWJsaWM6
CgogIHR5cGVkZWYgdHlwZW5hbWUgIENJbmhlcml0ZWQ6Ok9wcyBPcHM7CgogICAgICAgICAgIElD
S2V5U2V0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wcyYsIElOdW1iZXIpOwoK
ICAgICAgICAgICBJQ0tleVNldEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHMm
LCBJQ0tleVNldEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENJbmhl
cml0ZWQ+IGNvbnN0Jik7CgogIGJvb2wgICAgIEFkZCAgICAgICAgICAgICAgKHZvaWQgY29uc3Qq
LCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBBZGRBbGxGcm9tICAgICAgIChJQUNvbGxlY3Rp
b25JbXBsIGNvbnN0Jik7CgogIGJvb2wgICAgIEFkZE9yUmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7Cgog
IHZvaWQqICAgIEFueSAgICAgICAgICAgICAgKCkgY29uc3Q7CgogIHZvaWQqICAgIEVsZW1lbnRB
dCAgICAgICAgKElDdXJzb3JJbXBsIGNvbnN0JikgY29uc3Q7CgogIHZvaWQqICAgIEVsZW1lbnRX
aXRoS2V5ICAgKHZvaWQgY29uc3QqKSBjb25zdDsKCiAgYm9vbCAgICAgTG9jYXRlRWxlbWVudFdp
dGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvcklt
cGwmKSBjb25zdDsKCiAgYm9vbCAgICAgTG9jYXRlTmV4dEVsZW1lbnRXaXRoS2V5CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJikgY29uc3Q7Cgog
IGJvb2wgICAgIExvY2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsKCiAgdm9pZCAgICAgUmVtb3ZlQXQg
ICAgICAgICAoSUN1cnNvckltcGwmKTsKCiAgdm9pZCAgICAgUmVwbGFjZUF0ICAgICAgICAoSUN1
cnNvckltcGwgY29uc3QmIGN1cnNvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IGNvbnN0Kik7CgogIGJvb2wgICAgIFJlcGxhY2VFbGVtZW50V2l0aEtleQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICBib29sICAgICBT
ZXRUb0ZpcnN0ICAgICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoKICBib29sICAgICBTZXRUb05l
eHQgICAgICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoKICBib29sICAgICBTZXRUb05leHRXaXRo
RGlmZmVyZW50S2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUN1cnNvckltcGwmKSBj
b25zdDsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgojIDEzNCAiL2hvbWUvYWtub2xsL2lvY3NyYy9s
aW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5oIgoKCn07CgogCgogCgoKCgoKCgoK
CgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgog
CgoKCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWlja3MuYyIgMQogCiAKCgoKCgoKCgoKCgoKIAogCiAKIAoKCgoKCgoKCgogCiAKIAoKIAoK
dGVtcGxhdGUgPGNsYXNzIENJbmhlcml0ZWQ+CklDS2V5U2V0SW1wbCA8Q0luaGVyaXRlZD46OgpJ
Q0tleVNldEltcGwgKE9wcyYgb3BzLCBJTnVtYmVyIG51bWJlck9mRWxlbWVudHMpCjogQ0luaGVy
aXRlZCAob3BzLCBudW1iZXJPZkVsZW1lbnRzKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJp
dGVkPgpJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKSUNLZXlTZXRJbXBsCiAgKE9wcyYgb3Bz
LCBJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+IGNvbnN0JiBjb2xsZWN0aW9uKQo6IENJbmhlcml0
ZWQgKG9wcywgY29sbGVjdGlvbikKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9v
bApJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKQWRkICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJ
Q3Vyc29ySW1wbCYgY3Vyc29yKQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAg
IElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNz
TmFtZSAoKSAgLCAgICAgIkFkZCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1z
aGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDUzKTsgfSAgCgogIGJvb2wgaGFzQmVlbkFkZGVk
ID0gQ0luaGVyaXRlZDo6QWRkIChlbGVtZW50LCBjdXJzb3IpOwogIHJldHVybiBoYXNCZWVuQWRk
ZWQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lkCklDS2V5U2V0SW1wbCA8Q0lu
aGVyaXRlZD46OgpBZGRBbGxGcm9tIChJQUNvbGxlY3Rpb25JbXBsIGNvbnN0JiBjb2xsZWN0aW9u
KQp7IHsgaWYgKCEgKCB0aGlzICE9ICZjb2xsZWN0aW9uICkpICAgSUlkZW50aWNhbENvbGxlY3Rp
b25FeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAi
QWRkQWxsRnJvbSIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWlja3MuYyIsIDYzKTsgfSAgCgogIENJbmhlcml0ZWQ6OkFkZEFsbEZyb20gKGNv
bGxlY3Rpb24pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ0tleVNldElt
cGwgPENJbmhlcml0ZWQ+OjoKQWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkgKHZvaWQgY29uc3Qq
IGVsZW1lbnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsgeyBpZiAoISAoIGN1cnNvci5Jc0ZvciAo
KnRoaXMpICkpICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAg
dGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiQWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkiICAs
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY2tz
LmMiLCA3Mik7IH0gIAoKICByZXR1cm4gQ0luaGVyaXRlZDo6QWRkT3JSZXBsYWNlRWxlbWVudFdp
dGhLZXkgKGVsZW1lbnQsIGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2
b2lkKgpJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKQW55ICgpIGNvbnN0CnsgeyBpZiAoISAo
ICEgdGhpcy0+SXNFbXB0eSAoKSApKSAgIElFbXB0eUV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICgg
ICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJBbnkiICAsICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY2tzLmMiLCA4MSk7IH0gIAoKICByZXR1
cm4gQ0luaGVyaXRlZDo6QW55ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9p
ZCoKSUNLZXlTZXRJbXBsIDxDSW5oZXJpdGVkPjo6CkVsZW1lbnRBdCAoSUN1cnNvckltcGwgY29u
c3QmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkgICBJ
Q3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05h
bWUgKCkgICwgICAgICJFbGVtZW50QXQiICAsICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY2tzLmMiLCA5MCk7IH0gIAogIHsgaWYgKCEgKCBjdXJz
b3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uSW1wbCA6OnRocm93SXQg
KCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkVsZW1lbnRBdCIgICwgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDkxKTsgfSAg
CgoKCgoKCgogIHJldHVybiBDSW5oZXJpdGVkOjpFbGVtZW50QXQgKGN1cnNvcik7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lkKgpJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoK
RWxlbWVudFdpdGhLZXkgKHZvaWQgY29uc3QqIGtleSkgY29uc3QKeyByZXR1cm4gQ0luaGVyaXRl
ZDo6RWxlbWVudFdpdGhLZXkgKGtleSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgpi
b29sCklDS2V5U2V0SW1wbCA8Q0luaGVyaXRlZD46OgpMb2NhdGVFbGVtZW50V2l0aEtleSAodm9p
ZCBjb25zdCoga2V5LCBJQ3Vyc29ySW1wbCYgY3Vyc29yKSBjb25zdAp7IHsgaWYgKCEgKCBjdXJz
b3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRo
cm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIkxvY2F0ZUVsZW1lbnRXaXRoS2V5
IiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
aWNrcy5jIiwgMTEzKTsgfSAgCgogIHJldHVybiBDSW5oZXJpdGVkOjpMb2NhdGVFbGVtZW50V2l0
aEtleSAoa2V5LCBjdXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJ
Q0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKTG9jYXRlTmV4dEVsZW1lbnRXaXRoS2V5ICh2b2lk
IGNvbnN0KiBrZXksIElDdXJzb3JJbXBsJiBjdXJzb3IpIGNvbnN0CnsgeyBpZiAoISAoIGN1cnNv
ci5Jc0ZvciAoKnRoaXMpICkpICAgSUN1cnNvck5vdEZvclRoaXNFeGNlcHRpb25JbXBsIDo6dGhy
b3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiTG9jYXRlTmV4dEVsZW1lbnRXaXRo
S2V5IiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9paWNrcy5jIiwgMTIyKTsgfSAgCiAgeyBpZiAoISAoIGN1cnNvci5Jc1ZhbGlkICgpICkpICAg
SUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBsIDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1l
ICgpICAsICAgICAiTG9jYXRlTmV4dEVsZW1lbnRXaXRoS2V5IiAgLCAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5jIiwgMTIzKTsgfSAgCgoK
CgogIHJldHVybiBDSW5oZXJpdGVkOjpMb2NhdGVOZXh0RWxlbWVudFdpdGhLZXkgKGtleSwgY3Vy
c29yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIENJbmhlcml0ZWQ+CmJvb2wKSUNLZXlTZXRJbXBsIDxD
SW5oZXJpdGVkPjo6CkxvY2F0ZU9yQWRkRWxlbWVudFdpdGhLZXkgKHZvaWQgY29uc3QqIGtleSwg
SUN1cnNvckltcGwmIGN1cnNvcikKeyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkg
ICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFz
c05hbWUgKCkgICwgICAgICJMb2NhdGVPckFkZEVsZW1lbnRXaXRoS2V5IiAgLCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5jIiwgMTM1KTsg
fSAgCgogIHJldHVybiBDSW5oZXJpdGVkOjpMb2NhdGVPckFkZEVsZW1lbnRXaXRoS2V5IChrZXks
IGN1cnNvcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBDSW5oZXJpdGVkPgp2b2lkCklDS2V5U2V0SW1w
bCA8Q0luaGVyaXRlZD46OgpSZW1vdmVBdCAoSUN1cnNvckltcGwmIGN1cnNvcikKeyB7IGlmICgh
ICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbklt
cGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJSZW1vdmVBdCIgICwg
Ii9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3Mu
YyIsIDE0NCk7IH0gIAogIHsgaWYgKCEgKCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJ
bnZhbGlkRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAg
ICAgIlJlbW92ZUF0IiAgLCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5i
aW4vaW5jbHVkZS9paWNrcy5jIiwgMTQ1KTsgfSAgCgoKCgoKCgogIENJbmhlcml0ZWQ6OlJlbW92
ZUF0IChjdXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4Kdm9pZApJQ0tleVNl
dEltcGwgPENJbmhlcml0ZWQ+OjoKUmVwbGFjZUF0IChJQ3Vyc29ySW1wbCBjb25zdCYgY3Vyc29y
LCB2b2lkIGNvbnN0KiBlbGVtZW50KQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSAp
KSAgIElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNs
YXNzTmFtZSAoKSAgLCAgICAgIlJlcGxhY2VBdCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDE2MCk7IH0gIAogIHsgaWYgKCEg
KCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJbnZhbGlkRXhjZXB0aW9uSW1wbCA6OnRo
cm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIlJlcGxhY2VBdCIgICwgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDE2
MSk7IH0gIAoKCgoKCgogIHsgaWYgKCEgKCB0aGlzLT5DaGVja1JlcGxhY2VtZW50IChjdXJzb3Is
IGVsZW1lbnQpICkpICAgSUludmFsaWRSZXBsYWNlbWVudEV4Y2VwdGlvbkltcGwgOjp0aHJvd0l0
ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJSZXBsYWNlQXQiICAsICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpY2tzLmMiLCAxNjgpOyB9
ICAKCiAgQ0luaGVyaXRlZDo6UmVwbGFjZUF0IChjdXJzb3IsIGVsZW1lbnQpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKUmVw
bGFjZUVsZW1lbnRXaXRoS2V5ICh2b2lkIGNvbnN0KiBlbGVtZW50LCBJQ3Vyc29ySW1wbCYgY3Vy
c29yKQp7IHsgaWYgKCEgKCBjdXJzb3IuSXNGb3IgKCp0aGlzKSApKSAgIElDdXJzb3JOb3RGb3JU
aGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAg
IlJlcGxhY2VFbGVtZW50V2l0aEtleSIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDE3Nyk7IH0gIAoKICByZXR1cm4gQ0luaGVy
aXRlZDo6UmVwbGFjZUVsZW1lbnRXaXRoS2V5IChlbGVtZW50LCBjdXJzb3IpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKU2V0
VG9GaXJzdCAoSUN1cnNvckltcGwmIGN1cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklz
Rm9yICgqdGhpcykgKSkgICBJQ3Vyc29yTm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0
ICggICB0aGlzLT5DbGFzc05hbWUgKCkgICwgICAgICJTZXRUb0ZpcnN0IiAgLCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5jIiwgMTg2KTsg
fSAgCgogIHJldHVybiBDSW5oZXJpdGVkOjpTZXRUb0ZpcnN0IChjdXJzb3IpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ0tleVNldEltcGwgPENJbmhlcml0ZWQ+OjoKU2V0
VG9OZXh0IChJQ3Vyc29ySW1wbCYgY3Vyc29yKSBjb25zdAp7IHsgaWYgKCEgKCBjdXJzb3IuSXNG
b3IgKCp0aGlzKSApKSAgIElDdXJzb3JOb3RGb3JUaGlzRXhjZXB0aW9uSW1wbCA6OnRocm93SXQg
KCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIlNldFRvTmV4dCIgICwgIi9ob21lL2Frbm9s
bC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlja3MuYyIsIDE5NSk7IH0g
IAogIHsgaWYgKCEgKCBjdXJzb3IuSXNWYWxpZCAoKSApKSAgIElDdXJzb3JJbnZhbGlkRXhjZXB0
aW9uSW1wbCA6OnRocm93SXQgKCAgIHRoaXMtPkNsYXNzTmFtZSAoKSAgLCAgICAgIlNldFRvTmV4
dCIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUv
aWlja3MuYyIsIDE5Nik7IH0gIAoKCgoKICByZXR1cm4gQ0luaGVyaXRlZDo6U2V0VG9OZXh0IChj
dXJzb3IpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ0luaGVyaXRlZD4KYm9vbApJQ0tleVNldEltcGwg
PENJbmhlcml0ZWQ+OjoKU2V0VG9OZXh0V2l0aERpZmZlcmVudEtleSAoSUN1cnNvckltcGwmIGN1
cnNvcikgY29uc3QKeyB7IGlmICghICggY3Vyc29yLklzRm9yICgqdGhpcykgKSkgICBJQ3Vyc29y
Tm90Rm9yVGhpc0V4Y2VwdGlvbkltcGwgOjp0aHJvd0l0ICggICB0aGlzLT5DbGFzc05hbWUgKCkg
ICwgICAgICJTZXRUb05leHRXaXRoRGlmZmVyZW50S2V5IiAgLCAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5jIiwgMjA4KTsgfSAgCiAgeyBp
ZiAoISAoIGN1cnNvci5Jc1ZhbGlkICgpICkpICAgSUN1cnNvckludmFsaWRFeGNlcHRpb25JbXBs
IDo6dGhyb3dJdCAoICAgdGhpcy0+Q2xhc3NOYW1lICgpICAsICAgICAiU2V0VG9OZXh0V2l0aERp
ZmZlcmVudEtleSIgICwgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWlja3MuYyIsIDIwOSk7IH0gIAoKCgoKCgoKICByZXR1cm4gQ0luaGVyaXRlZDo6
U2V0VG9OZXh0V2l0aERpZmZlcmVudEtleSAoY3Vyc29yKTsKfQoKCgoKCgojIDE2NyAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWNrcy5oIiAyCgoK
CiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZv
KHJlc3RvcmUpCiAKCiAKCiMgMjggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWtzLmgiIDIKCgojIDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2a3MuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAK
IAogCiAKIAogCgogCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2
ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoK
IAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgoj
cHJhZ21hIGVudW0oNCkKCgoKCgoKCgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCnRlbXBsYXRlIDxj
bGFzcyBWSW5oZXJpdGVkPgpjbGFzcyBJVktleVNldEltcGwgOiBwdWJsaWMgVkluaGVyaXRlZCB7
CnB1YmxpYzoKCiAgdHlwZWRlZiB0eXBlbmFtZSAgVkluaGVyaXRlZDo6T3BzIE9wczsKCiAgICAg
ICAgICAgSVZLZXlTZXRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3BzJiwgSU51
bWJlcik7CgogICAgICAgICAgIElWS2V5U2V0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKE9wcyYsIElWS2V5U2V0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8VkluaGVyaXRlZD4gY29uc3QmKTsKCiAgYm9vbCAgICAgQWRkICAgICAgICAgICAgICAodm9p
ZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIHZvaWQgICAgIEFkZEFsbEZyb20gICAgICAgKElB
Q29sbGVjdGlvbkltcGwgY29uc3QmKTsKCiAgYm9vbCAgICAgQWRkT3JSZXBsYWNlRWxlbWVudFdp
dGhLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvcklt
cGwmKTsKCiAgdm9pZCAgICAgQ29weSAgICAgICAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBjb25z
dCYpOwoKICBib29sICAgICBMb2NhdGVPckFkZEVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIElOdW1iZXIgIFJl
bW92ZUFsbCAgICAgICAgKCk7CgogIElOdW1iZXIgIFJlbW92ZUFsbCAgICAgICAgKElQcmVkRnVu
Yywgdm9pZCopOwoKICBJTnVtYmVyICBSZW1vdmVBbGxFbGVtZW50c1dpdGhLZXkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0Kik7CgogIHZvaWQgICAgIFJlbW92ZUF0ICAg
ICAgICAgKElDdXJzb3JJbXBsJik7CgogIGJvb2wgICAgIFJlbW92ZUVsZW1lbnRXaXRoS2V5CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCopOwoKICB2b2lkICAgICBSZXBs
YWNlQXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYsIHZvaWQgY29uc3QqKTsKCiAgYm9vbCAg
ICAgUmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9p
ZCBjb25zdCosIElDdXJzb3JJbXBsJik7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRlOgoKIyAxMjYgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2a3MuaCIK
Cgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFnbWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFu
Z2xpbmcocG9wKQoKCgoKIAoKIAoKCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpdmtzLmMiIDEKIAogCgoKCgoKCgoKCgoKCiAKIAogCiAK
CgoKCgoKCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4KSVZLZXlTZXRJbXBs
IDxWSW5oZXJpdGVkPjo6CklWS2V5U2V0SW1wbCAoT3BzJiBvcHMsIElOdW1iZXIgbnVtYmVyT2ZF
bGVtZW50cykKOiBWSW5oZXJpdGVkIChvcHMsIG51bWJlck9mRWxlbWVudHMpCnsKfQoKdGVtcGxh
dGUgPGNsYXNzIFZJbmhlcml0ZWQ+CklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpJVktleVNl
dEltcGwKICAoT3BzJiBvcHMsIElWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD4gY29uc3QmIGNvbGxl
Y3Rpb24pCjogVkluaGVyaXRlZCAob3BzLCBjb2xsZWN0aW9uKQp7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBWSW5oZXJpdGVkPgpib29sCklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpBZGQgKHZvaWQg
Y29uc3QqIGVsZW1lbnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsgYm9vbCBpc0VuYWJsZWQgPSB0
aGlzLT5Jc0VuYWJsZWRGb3JOb3RpZmljYXRpb24gKCk7CiAgdGhpcy0+RGlzYWJsZU5vdGlmaWNh
dGlvbiAoKTsKICBib29sIGhhc0JlZW5BZGRlZCA9IFZJbmhlcml0ZWQ6OkFkZCAoZWxlbWVudCwg
Y3Vyc29yKTsKICB0aGlzLT5FbmFibGVOb3RpZmljYXRpb24gKGlzRW5hYmxlZCk7CiAgaWYgKGhh
c0JlZW5BZGRlZCkgewogICAgdGhpcy0+Tm90aWZ5T2ZBZGRBdCAoY3Vyc29yKTsKICB9CiAgcmV0
dXJuIGhhc0JlZW5BZGRlZDsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CnZvaWQKSVZL
ZXlTZXRJbXBsIDxWSW5oZXJpdGVkPjo6CkFkZEFsbEZyb20gKElBQ29sbGVjdGlvbkltcGwgY29u
c3QmIGNvbGxlY3Rpb24pCnsgYm9vbCBpc0VuYWJsZWQgPSB0aGlzLT5Jc0VuYWJsZWRGb3JOb3Rp
ZmljYXRpb24gKCk7CiAgdGhpcy0+RGlzYWJsZU5vdGlmaWNhdGlvbiAoKTsKICBWSW5oZXJpdGVk
OjpBZGRBbGxGcm9tIChjb2xsZWN0aW9uKTsKICB0aGlzLT5FbmFibGVOb3RpZmljYXRpb24gKGlz
RW5hYmxlZCk7CiAgdGhpcy0+Tm90aWZ5T2ZNb2RpZmljYXRpb24gKCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBWSW5oZXJpdGVkPgpib29sCklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpBZGRPclJl
cGxhY2VFbGVtZW50V2l0aEtleSAodm9pZCBjb25zdCogZWxlbWVudCwgSUN1cnNvckltcGwmIGN1
cnNvcikKeyBib29sIGhhc0JlZW5BZGRlZCA9IGZhbHNlOwogIGlmIChWSW5oZXJpdGVkOjpMb2Nh
dGVFbGVtZW50V2l0aEtleSAodGhpcy0+S2V5IChlbGVtZW50KSwgY3Vyc29yKSkgewoKCgogICAg
dGhpcy0+Tm90aWZ5T2ZSZXBsYWNlQXQgKGN1cnNvciwgZWxlbWVudCk7CgogICAgVkluaGVyaXRl
ZDo6UmVwbGFjZUF0IChjdXJzb3IsIGVsZW1lbnQpOwoKCgogIH0KICBlbHNlIHsKICAgIGhhc0Jl
ZW5BZGRlZCA9IFZJbmhlcml0ZWQ6OkFkZCAoZWxlbWVudCwgY3Vyc29yKTsKICAgIHRoaXMtPk5v
dGlmeU9mQWRkQXQgKGN1cnNvcik7CiAgfQogIHJldHVybiBoYXNCZWVuQWRkZWQ7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBWSW5oZXJpdGVkPgp2b2lkCklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpD
b3B5IChJQUNvbGxlY3Rpb25JbXBsIGNvbnN0JiBjb2xsZWN0aW9uKQp7IGJvb2wgaXNFbmFibGVk
ID0gdGhpcy0+SXNFbmFibGVkRm9yTm90aWZpY2F0aW9uICgpOwogIHRoaXMtPkRpc2FibGVOb3Rp
ZmljYXRpb24gKCk7CiAgVkluaGVyaXRlZDo6Q29weSAoY29sbGVjdGlvbik7CiAgdGhpcy0+RW5h
YmxlTm90aWZpY2F0aW9uIChpc0VuYWJsZWQpOwogIHRoaXMtPk5vdGlmeU9mTW9kaWZpY2F0aW9u
ICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVkluaGVyaXRlZD4KYm9vbApJVktleVNldEltcGwgPFZJ
bmhlcml0ZWQ+OjoKTG9jYXRlT3JBZGRFbGVtZW50V2l0aEtleSAodm9pZCBjb25zdCoga2V5LCBJ
Q3Vyc29ySW1wbCYgY3Vyc29yKQp7IGJvb2wgaXNFbmFibGVkID0gdGhpcy0+SXNFbmFibGVkRm9y
Tm90aWZpY2F0aW9uICgpOwogIHRoaXMtPkRpc2FibGVOb3RpZmljYXRpb24gKCk7CiAgYm9vbCBo
YXNCZWVuTG9jYXRlZCA9CiAgICBWSW5oZXJpdGVkOjpMb2NhdGVPckFkZEVsZW1lbnRXaXRoS2V5
IChrZXksIGN1cnNvcik7CiAgdGhpcy0+RW5hYmxlTm90aWZpY2F0aW9uIChpc0VuYWJsZWQpOwog
IGlmICghaGFzQmVlbkxvY2F0ZWQpIHsKICAgIHRoaXMtPk5vdGlmeU9mQWRkQXQgKGN1cnNvcik7
CiAgfQogIHJldHVybiBoYXNCZWVuTG9jYXRlZDsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0
ZWQ+CklOdW1iZXIKSVZLZXlTZXRJbXBsIDxWSW5oZXJpdGVkPjo6ClJlbW92ZUFsbCAoKQp7IElO
dW1iZXIgcmVzdWx0ID0gVkluaGVyaXRlZDo6UmVtb3ZlQWxsICgpOwogIGlmIChyZXN1bHQgPiAw
KSB7CiAgICB0aGlzLT5Ob3RpZnlPZk1vZGlmaWNhdGlvbiAoKTsKICB9CiAgcmV0dXJuIHJlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CklOdW1iZXIKSVZLZXlTZXRJbXBsIDxW
SW5oZXJpdGVkPjo6ClJlbW92ZUFsbCAoSVByZWRGdW5jIHByZWRGdW5jLCB2b2lkKiBhZGRBcmcp
CnsgSU51bWJlciByZXN1bHQgPSBWSW5oZXJpdGVkOjpSZW1vdmVBbGwgKHByZWRGdW5jLCBhZGRB
cmcpOwogIGlmIChyZXN1bHQgPiAwKSB7CiAgICB0aGlzLT5Ob3RpZnlPZk1vZGlmaWNhdGlvbiAo
KTsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CklO
dW1iZXIKSVZLZXlTZXRJbXBsIDxWSW5oZXJpdGVkPjo6ClJlbW92ZUFsbEVsZW1lbnRzV2l0aEtl
eSAodm9pZCBjb25zdCoga2V5KQp7IGJvb2wgaXNFbmFibGVkID0gdGhpcy0+SXNFbmFibGVkRm9y
Tm90aWZpY2F0aW9uICgpOwogIHRoaXMtPkRpc2FibGVOb3RpZmljYXRpb24gKCk7CiAgSU51bWJl
ciByZXN1bHQgPSBWSW5oZXJpdGVkOjpSZW1vdmVBbGxFbGVtZW50c1dpdGhLZXkgKGtleSk7CiAg
dGhpcy0+RW5hYmxlTm90aWZpY2F0aW9uIChpc0VuYWJsZWQpOwogIGlmIChyZXN1bHQgPiAwKSB7
CiAgICB0aGlzLT5Ob3RpZnlPZk1vZGlmaWNhdGlvbiAoKTsKICB9CiAgcmV0dXJuIHJlc3VsdDsK
fQoKdGVtcGxhdGUgPGNsYXNzIFZJbmhlcml0ZWQ+CnZvaWQKSVZLZXlTZXRJbXBsIDxWSW5oZXJp
dGVkPjo6ClJlbW92ZUF0IChJQ3Vyc29ySW1wbCYgY3Vyc29yKQp7IHRoaXMtPk5vdGlmeU9mUmVt
b3ZlQXQgKGN1cnNvcik7CiAgVkluaGVyaXRlZDo6UmVtb3ZlQXQgKGN1cnNvcik7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBWSW5oZXJpdGVkPgpib29sCklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpS
ZW1vdmVFbGVtZW50V2l0aEtleSAodm9pZCBjb25zdCoga2V5KQp7IGlmICh0aGlzLT5Mb2NhdGVF
bGVtZW50V2l0aEtleSAoa2V5LCB0aGlzLT5DdXJzb3JPZiAoKnRoaXMpKSkgewogICAgdGhpcy0+
Tm90aWZ5T2ZSZW1vdmVBdCAodGhpcy0+Q3Vyc29yT2YgKCp0aGlzKSk7CiAgfQogIHJldHVybiBW
SW5oZXJpdGVkOjpSZW1vdmVFbGVtZW50V2l0aEtleSAoa2V5KTsKfQoKdGVtcGxhdGUgPGNsYXNz
IFZJbmhlcml0ZWQ+CnZvaWQKSVZLZXlTZXRJbXBsIDxWSW5oZXJpdGVkPjo6ClJlcGxhY2VBdCAo
SUN1cnNvckltcGwgY29uc3QmIGN1cnNvciwgdm9pZCBjb25zdCogZWxlbWVudCkKewoKCgogIHRo
aXMtPk5vdGlmeU9mUmVwbGFjZUF0IChjdXJzb3IsIGVsZW1lbnQpOwoKICBWSW5oZXJpdGVkOjpS
ZXBsYWNlQXQgKGN1cnNvciwgZWxlbWVudCk7CgoKCn0KCnRlbXBsYXRlIDxjbGFzcyBWSW5oZXJp
dGVkPgpib29sCklWS2V5U2V0SW1wbCA8VkluaGVyaXRlZD46OgpSZXBsYWNlRWxlbWVudFdpdGhL
ZXkgKHZvaWQgY29uc3QqIGVsZW1lbnQsIElDdXJzb3JJbXBsJiBjdXJzb3IpCnsKCgoKICB0aGlz
LT5Ob3RpZnlPZlJlcGxhY2VBdCAoY3Vyc29yLCBlbGVtZW50KTsKCiAgYm9vbCBoYXNCZWVuUmVw
bGFjZWQgPQogICAgVkluaGVyaXRlZDo6UmVwbGFjZUVsZW1lbnRXaXRoS2V5IChlbGVtZW50LCBj
dXJzb3IpOwoKCgogIHJldHVybiBoYXNCZWVuUmVwbGFjZWQ7Cn0KCgoKCgoKIyAxNTkgIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWl2a3MuaCIgMgoK
CgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5m
byhyZXN0b3JlKQogCgogCgojIDMwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lrcy5oIiAyCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4
X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpa3NhdmwuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoK
CiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9paWtza3NzLmgiIDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAK
IAoKIAoKCgoKCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWws
IF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoK
I3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJh
Z21hIGVudW0oNCkKCgoKCgoKCgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCnRlbXBsYXRlIDxjbGFz
cyBCYXNlPgpjbGFzcyBJS2V5U2V0T25LZXlTb3J0ZWRTZXRNbmdDdXJzb3JJbXBsOwoKdGVtcGxh
dGUgPGNsYXNzIEJhc2U+CmNsYXNzIElLZXlTZXRPbktleVNvcnRlZFNldEltcGw7Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQmFzZT4KY2xhc3MgICBJS2V5U2V0T25LZXlTb3J0ZWRTZXRNbmdDdXJzb3JJbXBs
IDogcHVibGljIEJhc2U6Ok1uZ0N1cnNvcgp7CiAgdHlwZWRlZiB0eXBlbmFtZSAgQmFzZTo6TW5n
Q3Vyc29yIEluaGVyaXRlZDsKCnB1YmxpYzoKCiAgICAgICAgICAgSUtleVNldE9uS2V5U29ydGVk
U2V0TW5nQ3Vyc29ySW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElLZXlTZXRPbktl
eVNvcnRlZFNldEltcGwgPEJhc2U+IGNvbnN0Jik7CgogICAgICAgICAgfklLZXlTZXRPbktleVNv
cnRlZFNldE1uZ0N1cnNvckltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKcHJv
dGVjdGVkOgoKcHJpdmF0ZToKCgoKCgoKCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBCYXNlPgpjbGFz
cyBJQmFnT25LZXlTZXRJbXBsOwoKdGVtcGxhdGUgPGNsYXNzIEJhc2U+CmNsYXNzIElBS2V5U2V0
T25LZXlTb3J0ZWRTZXRPcHM7Cgp0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KY2xhc3MgICBJS2V5U2V0
T25LZXlTb3J0ZWRTZXRJbXBsIDogcHVibGljIElBS2V5U2V0SW1wbCB7CgogIHR5cGVkZWYgIElB
S2V5U2V0SW1wbCBJbmhlcml0ZWQ7CgogIHR5cGVkZWYgIElLZXlTZXRPbktleVNvcnRlZFNldElt
cGwgPEJhc2U+IFNlbGY7CgpwdWJsaWM6CgogIHR5cGVkZWYgIElBS2V5U2V0T25LZXlTb3J0ZWRT
ZXRPcHMgPEJhc2U+IE9wczsKCiAgdHlwZWRlZiB0eXBlbmFtZSAgQmFzZTo6Q3Vyc29yIEN1cnNv
cjsKCiAgdHlwZWRlZiAgSUtleVNldE9uS2V5U29ydGVkU2V0TW5nQ3Vyc29ySW1wbCA8QmFzZT4g
TW5nQ3Vyc29yOwoKICAgICAgICAgICBJS2V5U2V0T25LZXlTb3J0ZWRTZXRJbXBsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoT3BzJiwgSU51bWJlcik7CgogICAgICAgICAgIElLZXlTZXRP
bktleVNvcnRlZFNldEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHMmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElLZXlTZXRPbktleVNvcnRlZFNldEltcGwgPEJhc2U+
IGNvbnN0Jik7CgogICAgICAgICAgfklLZXlTZXRPbktleVNvcnRlZFNldEltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgpOwoKICBib29sIEFkZCAgICAgICAgICAgICAgKHZvaWQgY29u
c3QqLCBJQ3Vyc29ySW1wbCYpOwoKICB2b2lkICAgICBBZGRBbGxGcm9tICAgICAgIChJQUNvbGxl
Y3Rpb25JbXBsIGNvbnN0Jik7CgogIGJvb2wgQWRkT3JSZXBsYWNlRWxlbWVudFdpdGhLZXkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsKCiAg
Ym9vbCBBbGxFbGVtZW50c0RvICAgIChJQXBwbEZ1bmMsIHZvaWQqKTsKCiAgdm9pZCogICAgQW55
ICAgICAgICAgICAgICAoKSBjb25zdDsKCiAgYm9vbCBDaGVja0N1cnNvciAgICAgIChJQ3Vyc29y
SW1wbCBjb25zdCYpIGNvbnN0OwoKICBib29sIENoZWNrUmVwbGFjZW1lbnQgKElDdXJzb3JJbXBs
IGNvbnN0Jiwgdm9pZCBjb25zdCogKSBjb25zdDsKCiAgY2hhciBjb25zdCoKICAgICAgICAgICBD
bGFzc05hbWUgICAgICAgICgpIGNvbnN0OwoKICBJQUNvbGxlY3Rpb25JbXBsKgogICAgICAgICAg
IENsb25lICAgICAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgQ29udGFpbnNBbGxLZXlzRnJvbQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKElBQ29sbGVjdGlvbkltcGwgY29uc3QmKSBjb25z
dDsKCiAgYm9vbCBDb250YWluc0VsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICB2b2lkICAgICBDb3B5ICAgICAgICAgICAgIChJ
QUNvbGxlY3Rpb25JbXBsIGNvbnN0Jik7CgogIEN1cnNvciogIENyZWF0ZUN1cnNvciAgICAgKCkg
Y29uc3Q7CgogIE1uZ0N1cnNvcioKICAgICAgICAgICBDcmVhdGVNbmdDdXJzb3IgICgpIGNvbnN0
OwoKICB2b2lkKiAgICBFbGVtZW50QXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNvbnN0
OwoKICB2b2lkKiAgICBFbGVtZW50V2l0aEtleSAgICh2b2lkIGNvbnN0KikgY29uc3Q7CgogIGJv
b2wgSXNCb3VuZGVkICAgICAgICAoKSBjb25zdDsKCiAgYm9vbCBJc0NvbnNpc3RlbnQgICAgICgp
IGNvbnN0OwoKICBib29sIElzRW1wdHkgICAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgSXNGdWxs
ICAgICAgICAgICAoKSBjb25zdDsKCiAgdm9pZCogICAgS2V5ICAgICAgICAgICAgICAodm9pZCBj
b25zdCopIGNvbnN0OwoKICBib29sIExvY2F0ZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJikgY29uc3Q7CgogIGJvb2wg
TG9jYXRlT3JBZGRFbGVtZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv
aWQgY29uc3QqLCBJQ3Vyc29ySW1wbCYpOwoKICBJTnVtYmVyICBOdW1iZXJPZkVsZW1lbnRzICgp
IGNvbnN0OwoKICBJTnVtYmVyICBSZW1vdmVBbGwgICAgICAgICgpOwoKICBJTnVtYmVyICBSZW1v
dmVBbGwgICAgICAgIChJUHJlZEZ1bmMsIHZvaWQqKTsKCiAgdm9pZCAgICAgUmVtb3ZlQXQgICAg
ICAgICAoSUN1cnNvckltcGwmKTsKCiAgYm9vbCBSZW1vdmVFbGVtZW50V2l0aEtleQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqKTsKCiAgdm9pZCAgICAgUmVwbGFjZUF0
ICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmLCB2b2lkIGNvbnN0Kik7CgogIGJvb2wgUmVwbGFj
ZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCos
IElDdXJzb3JJbXBsJik7CgogIGJvb2wgU2V0VG9GaXJzdCAgICAgICAoSUN1cnNvckltcGwmKSBj
b25zdDsKCiAgYm9vbCBTZXRUb05leHQgICAgICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoKICB2
b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJS2V5U2V0T25LZXlTb3J0ZWRTZXRJbXBsIDxCYXNl
PiBjb25zdCYpOwoKcHJvdGVjdGVkOgoKICBib29sIEVxdWFsS2V5cyAgICAgICAgKHZvaWQgY29u
c3QqLCB2b2lkIGNvbnN0KiwgSUFyZ1R5cGUpIGNvbnN0OwoKcHJpdmF0ZToKCiAgc3RhdGljCiAg
Y2hhciBjb25zdCoKICAgICAgICAgICBjdkNsYXNzTmFtZTsKCiAgQmFzZSYgICAgaXZCYXNlOwoK
ICBzdGF0aWMKICBCYXNlJiAgICBCYXNlT2YgICAgICAgICAgIChJS2V5U2V0T25LZXlTb3J0ZWRT
ZXRJbXBsIDxCYXNlPiBjb25zdCYpOwoKICBzdGF0aWMKICBPcHMmICAgICBPcHNPZiAgICAgICAg
ICAgIChJS2V5U2V0T25LZXlTb3J0ZWRTZXRJbXBsIDxCYXNlPiBjb25zdCYpOwoKICBmcmllbmQK
ICBjbGFzcyAgICBJS2V5U2V0T25LZXlTb3J0ZWRTZXRNbmdDdXJzb3JJbXBsIDxCYXNlPjsKCiAK
IAogCiAKIAoKICBmcmllbmQKICBjbGFzcyAgICBJQmFnT25LZXlTZXRJbXBsIDxTZWxmPjsKCgpw
dWJsaWM6CiAgSVN0cmVhbWVyUHRyJgogICAgICAgICAgIFN0cmVhbWVyT2YgICAgICAgKElBQ29s
bGVjdGlvbkltcGwgY29uc3QmKTsKCiAgdm9pZCAgICAgU3RyZWFtSW4gICAgICAgICAoSURhdGFT
dHJlYW0mKTsKCiAgdm9pZCAgICAgU3RyZWFtT3V0ICAgICAgICAoSURhdGFTdHJlYW0mKSBjb25z
dDsKCiAgdm9pZCAgICAgQWRvcHRTdHJlYW1lciAgICAoSUFDb2xsZWN0aW9uU3RyZWFtZXIqKTsK
CgojIDI4MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9paWtza3NzLmgiCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBCYXNlPgpjbGFzcyAgIElBS2V5U2V0
T25LZXlTb3J0ZWRTZXRPcHMKewpwdWJsaWM6CgogIHZpcnR1YWwgfklBS2V5U2V0T25LZXlTb3J0
ZWRTZXRPcHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICB2aXJ0dWFsCiAgSUFD
b2xsZWN0aW9uSW1wbCoKICAgICAgICAgICBDbG9uZSAgICAgICAgICAgICgpIGNvbnN0ID0gMDsK
CiAgdmlydHVhbCAgb3BlcmF0b3IgQmFzZSYgICAoKSA9IDA7Cgpwcm90ZWN0ZWQ6Cgpwcml2YXRl
OgoKCgoKCgoKCn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21h
IG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtza3NzLmlubCIgMQoKCgogCiAKIAoKCgoKCgoK
CgoKCiAKIAogCiAKIAogCgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEJhc2U+CmlubGluZSB2
b2lkCklLZXlTZXRPbktleVNvcnRlZFNldEltcGwgPEJhc2U+OjoKb3BlcmF0b3I9IChJS2V5U2V0
T25LZXlTb3J0ZWRTZXRJbXBsIDxCYXNlPiBjb25zdCYgY29sbGVjdGlvbikKeyBCYXNlT2YgKCp0
aGlzKS5CYXNlOjpvcGVyYXRvcj0gKEJhc2VPZiAoY29sbGVjdGlvbikpOwp9CgoKIAogCiAKCiAK
CnRlbXBsYXRlIDxjbGFzcyBCYXNlPgppbmxpbmUKSUFLZXlTZXRPbktleVNvcnRlZFNldE9wcyA8
QmFzZT46Ogp+SUFLZXlTZXRPbktleVNvcnRlZFNldE9wcyAoKQp7Cn0KCiAKCiMgMzM2ICIvaG9t
ZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpa3Nrc3MuaCIg
MgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGlu
Zm8ocmVzdG9yZSkKIAoKIAoKIyAyNiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9paWtzYXZsLmgiIDIKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9s
aW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzc2F2bC5oIiAxCgoKCiAKIAogCgoKCgoK
CgoKCgoKIAogCiAKIAogCiAKCiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9paWFrc3MuaCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAog
CiAKIAogCgogCgogCgogCiNwcmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChsZXZlbCwg
X19JT0NfSEVBREVSX1JFUE9SVF9MRVZFTCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCgogCgoj
cHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFn
bWEgZW51bSg0KQoKCgoKCgoKCgoKCgoKCgogCgogCiAKCiAKIAoKIAoKY2xhc3MgICBJQUtleVNv
cnRlZFNldEltcGwgOiBwdWJsaWMgSUFDb2xsZWN0aW9uSW1wbCB7CnB1YmxpYzoKCiAgICAgICAg
ICB+SUFLZXlTb3J0ZWRTZXRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAg
dmlydHVhbAogIGxvbmcgICAgIENvbXBhcmUgICAgICAgICAgKElBS2V5U29ydGVkU2V0SW1wbCBj
b25zdCYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUNvbXBGdW5jLCB2b2lkKikgY29u
c3Q7Cgpwcm90ZWN0ZWQ6CgogICAgICAgICAgIElBS2V5U29ydGVkU2V0SW1wbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKE9wcyYpOwoKICBJTnVtYmVyICBOdW1iZXJPZkRpZmZlcmVudEtl
eXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpIGNvbnN0OwoKICBJTnVtYmVyICBOdW1i
ZXJPZkVsZW1lbnRzV2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29u
c3QqKSBjb25zdDsKCiAgSU51bWJlciAgUmVtb3ZlQWxsRWxlbWVudHNXaXRoS2V5CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCopOwoKICBib29sICAgICBTZXRUb05leHRX
aXRoRGlmZmVyZW50S2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUN1cnNvckltcGwm
KSBjb25zdDsKCnByaXZhdGU6CgojIDEwNyAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkw
LXNoYXJlZC5iaW4vaW5jbHVkZS9paWFrc3MuaCIKCgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFn
bWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAogCgogCiNw
cmFnbWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3Jl
KQogCgogCgojIDI3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lpa3NzYXZsLmgiIDIKCgoKCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdt
YSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhy
ZXN0b3JlKQogCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NI
RU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKCgoKCiAKCiAKdHlwZWRlZiBzaG9ydCBE
aXJlY3Rpb247CgpzdHJ1Y3QgSUFLZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2RlSW1wbCB7CgogIElB
S2V5U29ydGVkU2V0QXNBdmxUcmVlTm9kZUltcGwKICAgICAgICAgICppdkxlZnQsCiAgICAgICAg
ICAqaXZSaWdodCwKICAgICAgICAgICppdlBhcmVudDsKCiAgRGlyZWN0aW9uCiAgICAgICAgICAg
aXZEZWVwZXJTdWJ0cmVlOwoKICAgICAgICAgICBJQUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJ
bXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgSUFLZXlTb3J0ZWRTZXRBc0F2
bFRyZWVOb2RlSW1wbComCiAgICAgICAgICAgTGluayAgICAgICAgICAgICAoRGlyZWN0aW9uKTsK
CiAgdm9pZCAgICAgUGFyZW50ICAgICAgICAgICAoSUFLZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2Rl
SW1wbComLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiYpOwoKICB2b2lk
ICAgICBDb25uZWN0Q2hpbGQgICAgIChEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSUFLZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2RlSW1wbCopOwoKICB2b2lkICAgICBDb25u
ZWN0Q2hpbGQwICAgIChEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFL
ZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2RlSW1wbCopOwoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVt
ZW50PgpzdHJ1Y3QgSUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJbXBsIDoKICBwdWJsaWMgSUFL
ZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2RlSW1wbCB7CgogIEVsZW1lbnQgIGl2RWxlbWVudDsKCiAg
ICAgICAgICAgSUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoRWxlbWVudCBjb25zdCYpOwoKICAgICAgICAgIH5JS2V5U29ydGVkU2V0QXNB
dmxUcmVlTm9kZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKCiAgdm9pZCAg
ICAgU3RyZWFtSW4gICAgICAgICAoSUFDb2xsZWN0aW9uU3RyZWFtZXIqLCBJRGF0YVN0cmVhbSYp
OwoKCgoKCgoKCn07CgoKCgoKCgoKCgogCgogCiAKCiAKCmNsYXNzICAgSUtleVNvcnRlZFNldEFz
QXZsVHJlZUN1cnNvckltcGwgOiBwdWJsaWMgSUN1cnNvckltcGwgewoKICB0eXBlZGVmICBJQ3Vy
c29ySW1wbCBJbmhlcml0ZWQ7CgogIHR5cGVkZWYgIElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVDdXJz
b3JJbXBsIFNlbGY7CgpwdWJsaWM6CgogICAgICAgICAgIElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVD
dXJzb3JJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBj
b25zdCYpOwoKICAgICAgICAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlQ3Vyc29ySW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVDdXJzb3JJbXBs
IGNvbnN0Jik7CgogICAgICAgICAgfklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVDdXJzb3JJbXBsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgSUN1cnNvckltcGwqCiAgICAgICAgICAg
Q2xvbmUgICAgICAgICAgICAoKSBjb25zdDsKCiAgdm9pZCAgICAgQ29weSAgICAgICAgICAgICAo
SUN1cnNvckltcGwgY29uc3QmKTsKCiAgdm9pZCAgICAgSW52YWxpZGF0ZSAgICAgICAoKTsKCiAg
Ym9vbCBJc0luQmV0d2VlbiAgICAgICgpIGNvbnN0OwoKICBib29sIElzVmFsaWQgICAgICAgICAg
KCkgY29uc3Q7CgogIHZvaWQgICAgIG9wZXJhdG9yPSAgICAgICAgKElLZXlTb3J0ZWRTZXRBc0F2
bFRyZWVDdXJzb3JJbXBsIGNvbnN0Jik7CgogIGJvb2wgb3BlcmF0b3I9PSAgICAgICAoSUN1cnNv
ckltcGwgY29uc3QmKSBjb25zdDsKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIElBS2V5U29ydGVk
U2V0QXNBdmxUcmVlTm9kZUltcGwqCiAgICAgICAgICAgaXZOb2RlOwoKICBmcmllbmQKICBjbGFz
cyAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlSW1wbDsKCgoKCgoKCgoKCn07CgojIDI0NSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzc2F2bC5o
IgoKCnRlbXBsYXRlIDxjbGFzcyBCYXNlPiBjbGFzcyBJS2V5U2V0T25LZXlTb3J0ZWRTZXRJbXBs
OwoKdGVtcGxhdGUgPGNsYXNzIEJhc2U+IGNsYXNzIElTb3J0ZWRCYWdPbktleVNvcnRlZFNldElt
cGw7Cgp0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4gY2xhc3MgSVNvcnRlZE1hcE9uS2V5U29ydGVkU2V0
SW1wbDsKCmNsYXNzIElBS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzOwoKY2xhc3MgICBJS2V5U29y
dGVkU2V0QXNBdmxUcmVlSW1wbCA6IHB1YmxpYyBJQUtleVNvcnRlZFNldEltcGwgewoKICB0eXBl
ZGVmICBJQUtleVNvcnRlZFNldEltcGwgSW5oZXJpdGVkOwoKICB0eXBlZGVmICBJS2V5U29ydGVk
U2V0QXNBdmxUcmVlSW1wbCBTZWxmOwoKICB0eXBlZGVmICBJQUtleVNvcnRlZFNldEFzQXZsVHJl
ZU5vZGVJbXBsIE5vZGU7CgoKICB0eXBlZGVmICBJQUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJ
bXBsIFN0cmVhbWVyTm9kZTsKCgpwdWJsaWM6CgogIHR5cGVkZWYgIElBS2V5U29ydGVkU2V0QXNB
dmxUcmVlT3BzIE9wczsKCiAgdHlwZWRlZiAgSUtleVNvcnRlZFNldEFzQXZsVHJlZUN1cnNvcklt
cGwgQ3Vyc29yOwoKCgoKICB0eXBlZGVmICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlQ3Vyc29ySW1w
bCBNbmdDdXJzb3I7CgoKICAgICAgICAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlSW1wbAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKE9wcyYsIElOdW1iZXIpOwoKICAgICAgICAgICBJS2V5
U29ydGVkU2V0QXNBdmxUcmVlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9wcyYs
IElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVJbXBsIGNvbnN0Jik7CgogICAgICAgICAgfklLZXlTb3J0
ZWRTZXRBc0F2bFRyZWVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKTsKCiAgYm9v
bCBBZGQgICAgICAgICAgICAgICh2b2lkIGNvbnN0KiwgSUN1cnNvckltcGwmKTsKCiAgdm9pZCAg
ICAgQWRkQWxsRnJvbSAgICAgICAoSUFDb2xsZWN0aW9uSW1wbCBjb25zdCYpOwoKICBib29sIEFk
ZE9yUmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9p
ZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIGJvb2wgQWxsRWxlbWVudHNEbyAgICAoSUFwcGxG
dW5jLCB2b2lkKik7CgogIHZvaWQqICAgIEFueSAgICAgICAgICAgICAgKCkgY29uc3Q7CgogIGJv
b2wgQ2hlY2tDdXJzb3IgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgYm9vbCBD
aGVja1JlcGxhY2VtZW50IChJQ3Vyc29ySW1wbCBjb25zdCYsIHZvaWQgY29uc3QqKSBjb25zdDsK
CiAgY2hhciBjb25zdCoKICAgICAgICAgICBDbGFzc05hbWUgICAgICAgICgpIGNvbnN0OwoKICBJ
QUNvbGxlY3Rpb25JbXBsKgogICAgICAgICAgIENsb25lICAgICAgICAgICAgKCkgY29uc3Q7Cgog
IGJvb2wgQ29udGFpbnNBbGxLZXlzRnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElB
Q29sbGVjdGlvbkltcGwgY29uc3QmKSBjb25zdDsKCiAgYm9vbCBDb250YWluc0VsZW1lbnRXaXRo
S2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICB2
b2lkICAgICBDb3B5ICAgICAgICAgICAgIChJQUNvbGxlY3Rpb25JbXBsIGNvbnN0Jik7CgogIEN1
cnNvciogIENyZWF0ZUN1cnNvciAgICAgKCkgY29uc3Q7CgogIE1uZ0N1cnNvcioKICAgICAgICAg
ICBDcmVhdGVNbmdDdXJzb3IgICgpIGNvbnN0OwoKICB2b2lkKiAgICBFbGVtZW50QXQgICAgICAg
IChJQ3Vyc29ySW1wbCBjb25zdCYpIGNvbnN0OwoKICB2b2lkKiAgICBFbGVtZW50QXRQb3NpdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElQb3NpdGlvbikgY29uc3Q7CgogIHZvaWQq
ICAgIEVsZW1lbnRXaXRoS2V5ICAgKHZvaWQgY29uc3QqKSBjb25zdDsKCiAgdm9pZCogICAgRmly
c3QgICAgICAgICAgICAoKSBjb25zdDsKCiAgYm9vbCBJc0JvdW5kZWQgICAgICAgICgpIGNvbnN0
OwoKICBib29sIElzQ29uc2lzdGVudCAgICAgKCkgY29uc3Q7CgogIGJvb2wgSXNFbXB0eSAgICAg
ICAgICAoKSBjb25zdDsKCiAgYm9vbCBJc0ZpcnN0QXQgICAgICAgIChJQ3Vyc29ySW1wbCBjb25z
dCYpIGNvbnN0OwoKICBib29sIElzRnVsbCAgICAgICAgICAgKCkgY29uc3Q7CgogIGJvb2wgSXNM
YXN0QXQgICAgICAgICAoSUN1cnNvckltcGwgY29uc3QmKSBjb25zdDsKCiAgdm9pZCogICAgS2V5
ICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICB2b2lkKiAgICBMYXN0ICAgICAg
ICAgICAgICgpIGNvbnN0OwoKICBib29sIExvY2F0ZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJikgY29uc3Q7CgogIGJv
b2wgTG9jYXRlTmV4dEVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dm9pZCBjb25zdCosIElDdXJzb3JJbXBsJikgY29uc3Q7CgogIGJvb2wgTG9jYXRlT3JBZGRFbGVt
ZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgY29uc3QqLCBJQ3Vy
c29ySW1wbCYpOwoKICBJTnVtYmVyICBOdW1iZXJPZkVsZW1lbnRzICgpIGNvbnN0OwoKICBJUG9z
aXRpb24KICAgICAgICAgICBQb3NpdGlvbkF0ICAgICAgIChJQ3Vyc29ySW1wbCBjb25zdCYpIGNv
bnN0OwoKICBJTnVtYmVyICBSZW1vdmVBbGwgICAgICAgICgpOwoKICBJTnVtYmVyICBSZW1vdmVB
bGwgICAgICAgIChJUHJlZEZ1bmMsIHZvaWQqKTsKCiAgdm9pZCAgICAgUmVtb3ZlQXQgICAgICAg
ICAoSUN1cnNvckltcGwmKTsKCiAgdm9pZCAgICAgUmVtb3ZlQXRQb3NpdGlvbiAoSVBvc2l0aW9u
KTsKCiAgYm9vbCBSZW1vdmVFbGVtZW50V2l0aEtleQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZvaWQgY29uc3QqKTsKCiAgdm9pZCAgICAgUmVtb3ZlRmlyc3QgICAgICAoKTsKCiAgdm9p
ZCAgICAgUmVtb3ZlTGFzdCAgICAgICAoKTsKCiAgdm9pZCAgICAgUmVwbGFjZUF0ICAgICAgICAo
SUN1cnNvckltcGwgY29uc3QmLCB2b2lkIGNvbnN0Kik7CgogIHZvaWQgICAgIFJlcGxhY2VBdFBv
c2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVBvc2l0aW9uLCB2b2lkIGNvbnN0
Kik7CgogIGJvb2wgUmVwbGFjZUVsZW1lbnRXaXRoS2V5CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodm9pZCBjb25zdCosIElDdXJzb3JJbXBsJik7CgogIGJvb2wgU2V0VG9GaXJzdCAgICAg
ICAoSUN1cnNvckltcGwmKSBjb25zdDsKCiAgYm9vbCBTZXRUb05leHQgICAgICAgIChJQ3Vyc29y
SW1wbCYpIGNvbnN0OwoKICBib29sIFNldFRvTGFzdCAgICAgICAgKElDdXJzb3JJbXBsJikgY29u
c3Q7CgogIHZvaWQgICAgIFNldFRvUG9zaXRpb24gICAgKElQb3NpdGlvbiwgSUN1cnNvckltcGwm
KSBjb25zdDsKCiAgYm9vbCBTZXRUb1ByZXZpb3VzICAgIChJQ3Vyc29ySW1wbCYpIGNvbnN0OwoK
ICB2b2lkICAgICBvcGVyYXRvcj0gICAgICAgIChJS2V5U29ydGVkU2V0QXNBdmxUcmVlSW1wbCBj
b25zdCYpOwoKcHJvdGVjdGVkOgoKICB2b2lkICAgICBBc3NpZ24gICAgICAgICAgICh2b2lkKiwg
dm9pZCBjb25zdCopIGNvbnN0OwoKICB2b2lkKiAgICBDcmVhdGVOb2RlICAgICAgICh2b2lkIGNv
bnN0KikgY29uc3Q7CgogIGxvbmcgICAgIENvbXBhcmVLZXlzICAgICAgKHZvaWQgY29uc3QqLCB2
b2lkIGNvbnN0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQXJnVHlwZSkgY29uc3Q7
CgogIHZvaWQgICAgIERlbGV0ZU5vZGUgICAgICAgKHZvaWQqKSBjb25zdDsKCnByaXZhdGU6Cgog
IGVudW0geyBrT3JpZ2luYWxWZXJzaW9uIH07CgogIHN0YXRpYwogIGNoYXIgY29uc3QqCiAgICAg
ICAgICAgY3ZDbGFzc05hbWU7CgogIE1uZ0N1cnNvcioKICAgICAgICAgICBpdk1uZ0N1cnNvcnM7
CgogIE5vZGUqICAgIGl2Um9vdDsKCiAgSU51bWJlciAgaXZOdW1iZXJPZkVsZW1lbnRzOwoKICB2
b2lkICAgICBBZGRBbGxGcm9tU3VidHJlZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5v
ZGUgY29uc3QqKTsKCiAgYm9vbCBBbGxFbGVtZW50c0RvU3VidHJlZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKElBcHBsRnVuYywgdm9pZCosIE5vZGUqKSBjb25zdDsKCiAgdm9pZCAgICAg
QmFsYW5jZSAgICAgICAgICAoTm9kZSosIERpcmVjdGlvbiwgYm9vbCYpOwoKICBib29sIENoZWNr
Tm9kZSAgICAgICAgKE5vZGUgY29uc3QqLCBOb2RlKikgY29uc3Q7CgogIGJvb2wgQ29udGFpbnNB
bGxLZXlzRnJvbVN1YnRyZWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb2RlIGNvbnN0
KikgY29uc3Q7CgogIE5vZGUqICAgIENvcHlTdWJ0cmVlICAgICAgKE5vZGUgY29uc3QqKSBjb25z
dDsKCiAgdm9pZCAgICAgRGVsZXRlU3VidHJlZSAgICAoTm9kZSopIGNvbnN0OwoKICB2b2lkICAg
ICBEaXNjb25uZWN0QW5kUmVtb3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9kZSos
IGJvb2wmKTsKCiAgdm9pZCogICAgRWxlbWVudE9mICAgICAgICAoTm9kZSBjb25zdCopIGNvbnN0
OwoKICBib29sIElzQ29uc2lzdGVudFN1YnRyZWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChOb2RlIGNvbnN0KiwgaW50JiwgSU51bWJlciYpIGNvbnN0OwoKICBzdGF0aWMKICBib29sIElz
SW5CZXR3ZWVuICAgICAgKElDdXJzb3JJbXBsIGNvbnN0Jik7CgogIHN0YXRpYwogIE5vZGUqJiAg
IE5leHROb2RlT2YgICAgICAgKElDdXJzb3JJbXBsIGNvbnN0Jik7CgogIHN0YXRpYwogIE5vZGUq
JiAgIE5vZGVPZiAgICAgICAgICAgKElDdXJzb3JJbXBsIGNvbnN0Jik7CgogIHN0YXRpYwogIE9w
cyYgICAgIE9wc09mICAgICAgICAgICAgKElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVJbXBsIGNvbnN0
Jik7CgogIHN0YXRpYwogIE5vZGUqJiAgIFByZXZpb3VzTm9kZU9mICAgKElDdXJzb3JJbXBsIGNv
bnN0Jik7CgogIHZvaWQgICAgIFJlcGxhY2VOb2RlICAgICAgKE5vZGUqLCBOb2RlKik7CgogIHZv
aWQgICAgIFNldEluQmV0d2VlbiAgICAgKE1uZ0N1cnNvciYpIGNvbnN0OwoKICBmcmllbmQKICBj
bGFzcyAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlTW5nQ3Vyc29ySW1wbDsKCiAgZnJpZW5kCiAg
Y2xhc3MgICAgSUtleVNldE9uS2V5U29ydGVkU2V0SW1wbCA8U2VsZj47CgogIGZyaWVuZAogIGNs
YXNzICAgIElTb3J0ZWRCYWdPbktleVNvcnRlZFNldEltcGwgPFNlbGY+OwoKICBmcmllbmQKICBj
bGFzcyAgICBJU29ydGVkTWFwT25LZXlTb3J0ZWRTZXRJbXBsIDxTZWxmPjsKCgpwcm90ZWN0ZWQ6
CiAgdm9pZCAgICAgQWRkRnJvbVN0cmVhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElE
YXRhU3RyZWFtJiwgSUN1cnNvckltcGwmKTsKCiAgdm9pZCogICAgQ3JlYXRlTm9kZVdpdGhTdHJl
YW1lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSURhdGFTdHJlYW0mKSBjb25zdDsK
CnB1YmxpYzoKICBJU3RyZWFtZXJQdHImCiAgICAgICAgICAgU3RyZWFtZXJPZiAgICAgICAoSUFD
b2xsZWN0aW9uSW1wbCBjb25zdCYpOwoKICB2b2lkICAgICBTdHJlYW1JbiAgICAgICAgIChJRGF0
YVN0cmVhbSYpOwoKICB2b2lkICAgICBTdHJlYW1PdXQgICAgICAgIChJRGF0YVN0cmVhbSYpIGNv
bnN0OwoKICB2b2lkICAgICBBZG9wdFN0cmVhbWVyICAgIChJQUNvbGxlY3Rpb25TdHJlYW1lciop
OwoKCiMgNTQ0ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lpa3NzYXZsLmgiCgoKfTsKCmNsYXNzICAgSUFLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMg
OiBwdWJsaWMgSUFDb2xsZWN0aW9uT3BzIHsKcHVibGljOgoKICB2aXJ0dWFsIH5JQUtleVNvcnRl
ZFNldEFzQXZsVHJlZU9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgogIHZpcnR1
YWwKICB2b2lkICAgICBBc3NpZ24gICAgICAgICAgICh2b2lkKiwgdm9pZCBjb25zdCopIGNvbnN0
ID0gMDsKCiAgdmlydHVhbAogIElBQ29sbGVjdGlvbkltcGwqCiAgICAgICAgICAgQ2xvbmUgICAg
ICAgICAgICAoKSBjb25zdCA9IDA7CgogIHZpcnR1YWwKICBsb25nICAgICBDb21wYXJlS2V5cyAg
ICAgICh2b2lkIGNvbnN0Kiwgdm9pZCBjb25zdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUFyZ1R5cGUpIGNvbnN0ID0gMDsKCiAgdmlydHVhbAogIHZvaWQqICAgIENyZWF0ZU5vZGUg
ICAgICAgKHZvaWQgY29uc3QqKSBjb25zdCA9IDA7CgogIHZpcnR1YWwKICB2b2lkICAgICBEZWxl
dGVOb2RlICAgICAgICh2b2lkKikgY29uc3QgPSAwOwoKICB2aXJ0dWFsCiAgdm9pZCogICAgS2V5
ICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0ID0gMDsKCiAgdmlydHVhbAogIHZvaWQq
ICAgIEVsZW1lbnRQdHIgICAgICAgKHZvaWQgY29uc3QqKSBjb25zdCA9IDA7Cgpwcm90ZWN0ZWQ6
CgogICAgICAgICAgIElBS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYm9vbCk7Cgpwcml2YXRlOgoKICBib29sIGl2Q29udGFpbnNEVFNPYmplY3Rz
OwoKICBmcmllbmQKICBjbGFzcyAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlSW1wbDsKCgpwdWJs
aWM6CiAgdmlydHVhbAogIHZvaWQqICAgIENyZWF0ZU5vZGVXaXRoU3RyZWFtZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChJQUNvbGxlY3Rpb25TdHJlYW1lciosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSURhdGFTdHJlYW0mKSBjb25zdCA9IDA7CgoKIyA2MTMgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWlrc3NhdmwuaCIKCgp9
OwoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIF9LZXksCiAgICAgICAgICBjbGFzcyBF
bGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4KY2xhc3MgICBJS2V5U29ydGVkU2V0QXNB
dmxUcmVlT3BzIDogcHVibGljIElBS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIHsKCiAgdHlwZWRl
ZiAgSUFLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMgSW5oZXJpdGVkOwoKICB0eXBlZGVmICBJS2V5
U29ydGVkU2V0QXNBdmxUcmVlT3BzCiAgICAgICAgICAgIDxFbGVtZW50LCBfS2V5LCBFbGVtZW50
T3BzLCBJbXBsZW1lbnRhdGlvbj4gU2VsZjsKCiAgdHlwZWRlZiAgSUtleVNvcnRlZFNldEFzQXZs
VHJlZU5vZGVJbXBsIDxFbGVtZW50PiBOb2RlOwoKcHVibGljOgoKICB0eXBlZGVmICBJbXBsZW1l
bnRhdGlvbiBJbXBsVHlwZTsKCiAgdHlwZWRlZiAgRWxlbWVudCBFbGVtZW50VHlwZTsKCiAgdHlw
ZWRlZiAgX0tleSBLZXlUeXBlOwoKICAgICAgICAgICBJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3Bz
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU51bWJlcik7CgogICAgICAgICAgIElLZXlT
b3J0ZWRTZXRBc0F2bFRyZWVPcHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTnVtYmVy
LCB2b2lkKik7CgogICAgICAgICAgIElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxFbGVtZW50LCBfS2V5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWxlbWVudE9wcywgSW1wbGVtZW50YXRpb24+IGNvbnN0Jik7CgogICAgICAgICAg
fklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgp
OwoKICB2b2lkICAgICBBc3NpZ24gICAgICAgICAgICh2b2lkKiwgdm9pZCBjb25zdCopIGNvbnN0
OwoKICBJQUNvbGxlY3Rpb25JbXBsKgogICAgICAgICAgIENsb25lICAgICAgICAgICAgKCkgY29u
c3Q7CgogIGxvbmcgICAgIENvbXBhcmVLZXlzICAgICAgKHZvaWQgY29uc3QqLCB2b2lkIGNvbnN0
KiwgSUFyZ1R5cGUpIGNvbnN0OwoKICB2b2lkKiAgICBDcmVhdGVOb2RlICAgICAgICh2b2lkIGNv
bnN0KikgY29uc3Q7CgogIHZvaWQgICAgIERlbGV0ZU5vZGUgICAgICAgKHZvaWQqKSBjb25zdDsK
CiAgdm9pZCogICAgS2V5ICAgICAgICAgICAgICAodm9pZCBjb25zdCopIGNvbnN0OwoKICB2b2lk
KiAgICBFbGVtZW50UHRyICAgICAgICh2b2lkIGNvbnN0KikgY29uc3Q7CgogICAgICAgICAgIG9w
ZXJhdG9yIEltcGxlbWVudGF0aW9uKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7Cgoj
IDY4NCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
aWtzc2F2bC5oIgoKCnByb3RlY3RlZDoKCnByaXZhdGU6CgogIEVsZW1lbnRPcHMKICAgICAgICAg
ICBpdkVsZW1lbnRPcHM7CgogIEltcGxlbWVudGF0aW9uCiAgICAgICAgICAgaXZJbXBsOwoKCiAg
dm9pZCogICAgQ3JlYXRlTm9kZVdpdGhTdHJlYW1lcgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKElBQ29sbGVjdGlvblN0cmVhbWVyKiwgSURhdGFTdHJlYW0mKSBjb25zdDsKCgojIDcxMCAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzc2F2
bC5oIgoKCn07CgogCgogCgoKCgoKCgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5h
bWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzc2F2bC5pbmwiIDEKCgoKIAogCiAKCgoKCgoKCgoK
CgogCiAKIAogCiAKIAoKCgogCiAKIAoKIAoKaW5saW5lCklBS2V5U29ydGVkU2V0QXNBdmxUcmVl
Tm9kZUltcGw6OgpJQUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJbXBsICgpCiAgICAgICAgOiBp
dkxlZnQgKDApLCBpdlJpZ2h0ICgwKSwgaXZQYXJlbnQgKDApLCBpdkRlZXBlclN1YnRyZWUgKDAp
ICAKewp9CgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQ+CmlubGluZQpJS2V5U29y
dGVkU2V0QXNBdmxUcmVlTm9kZUltcGwgPEVsZW1lbnQ+OjoKSUtleVNvcnRlZFNldEFzQXZsVHJl
ZU5vZGVJbXBsIChFbGVtZW50IGNvbnN0JiBlbGVtZW50KQo6IElBS2V5U29ydGVkU2V0QXNBdmxU
cmVlTm9kZUltcGwgKCksIGl2RWxlbWVudCAoZWxlbWVudCkKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
RWxlbWVudD4KaW5saW5lCklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVOb2RlSW1wbCA8RWxlbWVudD46
Ogp+SUtleVNvcnRlZFNldEFzQXZsVHJlZU5vZGVJbXBsICgpCnsKfQoKCnRlbXBsYXRlIDxjbGFz
cyBFbGVtZW50PgppbmxpbmUgdm9pZApJS2V5U29ydGVkU2V0QXNBdmxUcmVlTm9kZUltcGwgPEVs
ZW1lbnQ+OjoKU3RyZWFtSW4gKElBQ29sbGVjdGlvblN0cmVhbWVyICpzdHJlYW1lciwgSURhdGFT
dHJlYW0mIGZyb21XaGVyZSkKeyBpdkxlZnQgPSBpdlJpZ2h0ID0gaXZQYXJlbnQgPSAwOwogIGl2
RGVlcGVyU3VidHJlZSA9IDA7ICAKICBzdHJlYW1lci0+c3RyZWFtSW4gKGZyb21XaGVyZSwgJml2
RWxlbWVudCk7Cn0KCgogCiAKIAoKIAoKaW5saW5lIHZvaWQKSUtleVNvcnRlZFNldEFzQXZsVHJl
ZUN1cnNvckltcGw6OgpJbnZhbGlkYXRlICgpCnsgaXZOb2RlID0gMDsKfQoKaW5saW5lIGJvb2wK
SUtleVNvcnRlZFNldEFzQXZsVHJlZUN1cnNvckltcGw6OgpJc0luQmV0d2VlbiAoKSBjb25zdAp7
IHJldHVybiBmYWxzZTsKfQoKaW5saW5lIGJvb2wKSUtleVNvcnRlZFNldEFzQXZsVHJlZUN1cnNv
ckltcGw6OgpJc1ZhbGlkICgpIGNvbnN0CnsgcmV0dXJuIChpdk5vZGUgIT0gMCk7Cn0KCmlubGlu
ZSB2b2lkCklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVDdXJzb3JJbXBsOjoKb3BlcmF0b3I9IChJS2V5
U29ydGVkU2V0QXNBdmxUcmVlQ3Vyc29ySW1wbCBjb25zdCYgY3Vyc29yKQp7IEluaGVyaXRlZDo6
b3BlcmF0b3I9IChjdXJzb3IpOwogIGl2Tm9kZSA9IGN1cnNvci5pdk5vZGU7Cn0KCmlubGluZSBi
b29sCklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVDdXJzb3JJbXBsOjoKb3BlcmF0b3I9PSAoSUN1cnNv
ckltcGwgY29uc3QmIGN1cnNvcikgY29uc3QKeyByZXR1cm4gKEluaGVyaXRlZDo6b3BlcmF0b3I9
PSAoY3Vyc29yKSAmJgogICAgICAgICAgaXZOb2RlID09ICgoU2VsZiBjb25zdCYpY3Vyc29yKS5p
dk5vZGUpOwp9CgoKIAogCiAKCiAKCmlubGluZQpJQUtleVNvcnRlZFNldEFzQXZsVHJlZU9wczo6
Cn5JQUtleVNvcnRlZFNldEFzQXZsVHJlZU9wcyAoKQp7Cn0KCiAKCmlubGluZQpJQUtleVNvcnRl
ZFNldEFzQXZsVHJlZU9wczo6CklBS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIChib29sIGNvbnRh
aW5zRFRTT2JqZWN0cykKOiBpdkNvbnRhaW5zRFRTT2JqZWN0cyAoY29udGFpbnNEVFNPYmplY3Rz
KQp7Cn0KCiAKCiMgNzM5ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2lpa3NzYXZsLmgiIDIKCgogCgoKCiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzc2F2bC5jIiAxCiAKIAoKCgoKCgoK
CgoKCgogCiAKIAogCgoKCgoKCgoKCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwg
Y2xhc3MgS2V5LAogICAgICAgICAgY2xhc3MgRWxlbWVudE9wcywgY2xhc3MgSW1wbGVtZW50YXRp
b24+CklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcywg
SW1wbGVtZW50YXRpb24+OjoKSUtleVNvcnRlZFNldEFzQXZsVHJlZU9wcyAoSU51bWJlciBudW1i
ZXJPZkVsZW1lbnRzKQo6IEluaGVyaXRlZCAoMCApLAogIGl2RWxlbWVudE9wcyAoKSwKICBpdklt
cGwgKCp0aGlzLCBudW1iZXJPZkVsZW1lbnRzKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
LCBjbGFzcyBLZXksCiAgICAgICAgICBjbGFzcyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRh
dGlvbj4KSUtleVNvcnRlZFNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3Bz
LCBJbXBsZW1lbnRhdGlvbj46OgpJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIChJTnVtYmVyIG51
bWJlck9mRWxlbWVudHMsIHZvaWQqIG9wc0FyZykKOiBJbmhlcml0ZWQgKDAgKSwKICBpdkVsZW1l
bnRPcHMgKG9wc0FyZyksCiAgaXZJbXBsICgqdGhpcywgbnVtYmVyT2ZFbGVtZW50cykKewp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgX0tleSwKICAgICAgICAgIGNsYXNzIEVsZW1l
bnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgpJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxF
bGVtZW50LCBfS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj46OgpJS2V5U29ydGVkU2V0
QXNBdmxUcmVlT3BzCiAgKElLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMKICAgIDxFbGVtZW50LCBf
S2V5LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj4gY29uc3QmIGNvbGxlY3Rpb24pCjogSW5o
ZXJpdGVkICgwICksCiAgaXZFbGVtZW50T3BzIChjb2xsZWN0aW9uLml2RWxlbWVudE9wcyksCiAg
aXZJbXBsICgqdGhpcywgY29sbGVjdGlvbi5pdkltcGwpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVs
ZW1lbnQsIGNsYXNzIEtleSwKICAgICAgICAgIGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxl
bWVudGF0aW9uPgpJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXksIEVsZW1l
bnRPcHMsIEltcGxlbWVudGF0aW9uPjo6Cn5JS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzICgpCnsK
fQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwKICAgICAgICAgIGNsYXNzIEVs
ZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgp2b2lkCklLZXlTb3J0ZWRTZXRBc0F2bFRy
ZWVPcHMgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcywgSW1wbGVtZW50YXRpb24+OjoKQXNzaWdu
ICh2b2lkKiBlbGVtZW50MSwgdm9pZCBjb25zdCogZWxlbWVudDIpIGNvbnN0CnsgaXZFbGVtZW50
T3BzLkFzc2lnbiAoKihFbGVtZW50KillbGVtZW50MSwgKihFbGVtZW50IGNvbnN0KillbGVtZW50
Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXksCiAgICAgICAgICBjbGFz
cyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4KSUFDb2xsZWN0aW9uSW1wbCoKSUtl
eVNvcnRlZFNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1l
bnRhdGlvbj46OgpDbG9uZSAoKSBjb25zdAp7IHJldHVybiAoSW1wbGVtZW50YXRpb24qKSAqbmV3
IFNlbGYgKCp0aGlzKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIF9LZXksCiAg
ICAgICAgICBjbGFzcyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4KbG9uZwpJS2V5
U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBfS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1l
bnRhdGlvbj46OgpDb21wYXJlS2V5cyAodm9pZCBjb25zdCogYXJnMSwgdm9pZCBjb25zdCogYXJn
MiwgSUFyZ1R5cGUgYXJnVHlwZSkgY29uc3QKeyBsb25nIGNvbXAgPSAwOwogIHN3aXRjaCAoYXJn
VHlwZSkgewogICAgY2FzZSBrRWxlbWVudEVsZW1lbnQ6IHsKICAgICAgY29tcCA9IGl2RWxlbWVu
dE9wcy5rZXlPcHMuQ29tcGFyZQogICAgICAgIChpdkVsZW1lbnRPcHMuS2V5ICgqKEVsZW1lbnQg
Y29uc3QqKWFyZzEpLAogICAgICAgICBpdkVsZW1lbnRPcHMuS2V5ICgqKEVsZW1lbnQgY29uc3Qq
KWFyZzIpKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICBjYXNlIGtFbGVtZW50S2V5OiB7CiAgICAg
IGNvbXAgPSBpdkVsZW1lbnRPcHMua2V5T3BzLkNvbXBhcmUKICAgICAgICAoaXZFbGVtZW50T3Bz
LktleSgqKEVsZW1lbnQgY29uc3QqKWFyZzEpLAogICAgICAgICBJS2V5Rm9yT3BzKChfS2V5IGNv
bnN0KilhcmcyKSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSBrS2V5S2V5OiB7CiAgICAg
IGNvbXAgPSBpdkVsZW1lbnRPcHMua2V5T3BzLkNvbXBhcmUKICAgICAgICAoSUtleUZvck9wcyAo
KF9LZXkgY29uc3QqKWFyZzEpLCBJS2V5Rm9yT3BzICgoX0tleSBjb25zdCopYXJnMikpOwogICAg
fQogIH0KICByZXR1cm4gY29tcDsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtl
eSwKICAgICAgICAgIGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgp2b2lk
KgpJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHMsIElt
cGxlbWVudGF0aW9uPjo6CkNyZWF0ZU5vZGUgKHZvaWQgY29uc3QqIGVsZW1lbnQpIGNvbnN0CnsK
ICB2b2lkKiBub2RlID0gaXZFbGVtZW50T3BzLkFsbG9jYXRlIChzaXplb2YgKE5vZGUpCgoKCgoK
CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgcmV0dXJuIG5ldyAo
aXZJbXBsLkNoZWNrUG9pbnRlciAobm9kZSkpCiAgICBOb2RlICgqKEVsZW1lbnQgY29uc3QqKWVs
ZW1lbnQpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwKICAgICAgICAg
IGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgp2b2lkKgpJS2V5U29ydGVk
U2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9u
Pjo6CkNyZWF0ZU5vZGVXaXRoU3RyZWFtZXIoSUFDb2xsZWN0aW9uU3RyZWFtZXIgKnN0cmVhbWVy
LAogICAgICAgICAgICAgICAgICAgICAgIElEYXRhU3RyZWFtJiBmcm9tV2hlcmUpIGNvbnN0Cnsg
dm9pZCogbm9kZSA9IGl2RWxlbWVudE9wcy5BbGxvY2F0ZSAoc2l6ZW9mIChOb2RlKQoKCgoKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogIGl2SW1wbC5DaGVja1BvaW50
ZXIgKG5vZGUpOwogICgoTm9kZSopbm9kZSktPlN0cmVhbUluIChzdHJlYW1lciwgZnJvbVdoZXJl
KTsKICByZXR1cm4gbm9kZTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXks
CiAgICAgICAgICBjbGFzcyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4Kdm9pZApJ
S2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHMsIEltcGxl
bWVudGF0aW9uPjo6CkRlbGV0ZU5vZGUgKHZvaWQqIG5vZGUpIGNvbnN0CnsgKChOb2RlKilub2Rl
KS0+fk5vZGUgKCk7CiAgaXZFbGVtZW50T3BzLkRlYWxsb2NhdGUgKG5vZGUKCgoKCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBf
S2V5LAogICAgICAgICAgY2xhc3MgRWxlbWVudE9wcywgY2xhc3MgSW1wbGVtZW50YXRpb24+CnZv
aWQqCklLZXlTb3J0ZWRTZXRBc0F2bFRyZWVPcHMgPEVsZW1lbnQsIF9LZXksIEVsZW1lbnRPcHMs
IEltcGxlbWVudGF0aW9uPjo6CktleSAodm9pZCBjb25zdCogZWxlbWVudCkgY29uc3QKeyByZXR1
cm4gSUtleUZyb21PcHMKICAgIChpdkVsZW1lbnRPcHMuS2V5ICgqKEVsZW1lbnQgY29uc3QqKWVs
ZW1lbnQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIF9LZXksCiAgICAgICAg
ICBjbGFzcyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4Kdm9pZCoKSUtleVNvcnRl
ZFNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgX0tleSwgRWxlbWVudE9wcywgSW1wbGVtZW50YXRp
b24+OjoKRWxlbWVudFB0ciAodm9pZCBjb25zdCogZWxlbWVudCkgY29uc3QKeyByZXR1cm4gKHZv
aWQgKikoJigoKE5vZGUgY29uc3QqKWVsZW1lbnQpLT5pdkVsZW1lbnQpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwKICAgICAgICAgIGNsYXNzIEVsZW1lbnRPcHMsIGNs
YXNzIEltcGxlbWVudGF0aW9uPgpJS2V5U29ydGVkU2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBL
ZXksIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPjo6Cm9wZXJhdG9yIEltcGxlbWVudGF0aW9u
KiAoKQp7IGl2SW1wbC5DaGVja1BvaW50ZXIgKHRoaXMpOwogIHJldHVybiAmaXZJbXBsOwp9CgoK
CgoKCiMgNzQ3ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lpa3NzYXZsLmgiIDIKCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBv
cnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAyNyAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzYXZsLmgiIDIKCgoKCgoKIAoK
IAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9S
RVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFu
Z2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoK
CgoKCgoKCgoKCgoKIAoKIAogCgogCiAKCiAKCnR5cGVkZWYgSUtleVNldE9uS2V5U29ydGVkU2V0
SW1wbAogICAgICAgICA8SUtleVNvcnRlZFNldEFzQXZsVHJlZUltcGw+IElLZXlTZXRBc0F2bFRy
ZWVJbXBsOwoKdHlwZWRlZiBJQUtleVNldE9uS2V5U29ydGVkU2V0T3BzCiAgICAgICAgIDxJS2V5
U29ydGVkU2V0QXNBdmxUcmVlSW1wbD4gSUFLZXlTZXRBc0F2bFRyZWVPcHM7Cgp0ZW1wbGF0ZSA8
Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5LAogICAgICAgICAgY2xhc3MgRWxlbWVudE9wcywgY2xh
c3MgSW1wbGVtZW50YXRpb24+CmNsYXNzICAgSUtleVNldEFzQXZsVHJlZU9wcyA6CiAgcHVibGlj
IElBS2V5U2V0QXNBdmxUcmVlT3BzIHsKCiAgdHlwZWRlZiAgSUtleVNldEFzQXZsVHJlZU9wcwog
ICAgICAgICAgICA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj4gU2Vs
ZjsKCiAgdHlwZWRlZiAgSUtleVNvcnRlZFNldEFzQXZsVHJlZU9wcwogICAgICAgICAgICA8RWxl
bWVudCwgS2V5LAogICAgICAgICAgICAgRWxlbWVudE9wcywgSUtleVNvcnRlZFNldEFzQXZsVHJl
ZUltcGw+IEJhc2U7CgpwdWJsaWM6CgogIHR5cGVkZWYgIEltcGxlbWVudGF0aW9uIEltcGxUeXBl
OwoKICB0eXBlZGVmICBFbGVtZW50IEVsZW1lbnRUeXBlOwoKICB0eXBlZGVmICBLZXkgS2V5VHlw
ZTsKCiAgICAgICAgICAgSUtleVNldEFzQXZsVHJlZU9wcwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAoSU51bWJlcik7CgogICAgICAgICAgIElLZXlTZXRBc0F2bFRyZWVPcHMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKElOdW1iZXIsIHZvaWQqKTsKCiAgICAgICAgICAgSUtleVNldEFz
QXZsVHJlZU9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAoSUtleVNldEFzQXZsVHJlZU9w
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbGVtZW50LCBLZXksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPiBjb25zdCYpOwoK
ICAgICAgICAgIH5JS2V5U2V0QXNBdmxUcmVlT3BzCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgpOwoKICBJQUNvbGxlY3Rpb25JbXBsKgogICAgICAgICAgIENsb25lICAgICAgICAgICAoKSBj
b25zdDsKCiAgICAgICAgICAgb3BlcmF0b3IgSUtleVNvcnRlZFNldEFzQXZsVHJlZUltcGwmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgpOwoKICAgICAgICAgICBvcGVyYXRvciBJbXBsZW1l
bnRhdGlvbioKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCk7CgojIDE0MCAiL2hvbWUvYWtu
b2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9paWtzYXZsLmgiCgoKcHJv
dGVjdGVkOgoKcHJpdmF0ZToKCiAgQmFzZSAgICAgaXZCYXNlOwoKICBJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgIGl2SW1wbDsKCiMgMTYwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAt
c2hhcmVkLmJpbi9pbmNsdWRlL2lpa3NhdmwuaCIKCgp9OwoKIAoKIAoKCgoKCgoKCgoKCiNwcmFn
bWEgZW51bShwb3ApCgoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcocG9wKQoKCgoKIAoKIAoKCgoKIyAx
ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lpa3Nh
dmwuYyIgMQogCiAKCgoKCgoKCgoKCgoKIAogCiAKIAoKCgoKCgoKIAogCiAKCiAKCnRlbXBsYXRl
IDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXksCiAgICAgICAgICBjbGFzcyBFbGVtZW50T3BzLCBj
bGFzcyBJbXBsZW1lbnRhdGlvbj4KSUtleVNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgS2V5LCBF
bGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj46OgpJS2V5U2V0QXNBdmxUcmVlT3BzIChJTnVtYmVy
IG51bWJlck9mRWxlbWVudHMpCjogaXZCYXNlIChudW1iZXJPZkVsZW1lbnRzKSwKICBpdkltcGwg
KCp0aGlzLCBudW1iZXJPZkVsZW1lbnRzKQp7Cn0KCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBj
bGFzcyBLZXksCiAgICAgICAgICBjbGFzcyBFbGVtZW50T3BzLCBjbGFzcyBJbXBsZW1lbnRhdGlv
bj4KSUtleVNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1l
bnRhdGlvbj46OgpJS2V5U2V0QXNBdmxUcmVlT3BzIChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMs
IHZvaWQqIG9wc0FyZykKOiBpdkJhc2UgKG51bWJlck9mRWxlbWVudHMsIG9wc0FyZyksCiAgaXZJ
bXBsICgqdGhpcywgbnVtYmVyT2ZFbGVtZW50cykKewp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dCwgY2xhc3MgS2V5LAogICAgICAgICAgY2xhc3MgRWxlbWVudE9wcywgY2xhc3MgSW1wbGVtZW50
YXRpb24+CklLZXlTZXRBc0F2bFRyZWVPcHMgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcywgSW1w
bGVtZW50YXRpb24+OjoKSUtleVNldEFzQXZsVHJlZU9wcwogIChJS2V5U2V0QXNBdmxUcmVlT3Bz
CiAgICA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj4gY29uc3QmIGNv
bGxlY3Rpb24pCjogaXZCYXNlIChjb2xsZWN0aW9uLml2QmFzZSksCiAgaXZJbXBsICgqdGhpcywg
Y29sbGVjdGlvbi5pdkltcGwpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtl
eSwKICAgICAgICAgIGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0aW9uPgpJS2V5
U2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9u
Pjo6Cn5JS2V5U2V0QXNBdmxUcmVlT3BzICgpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQs
IGNsYXNzIEtleSwKICAgICAgICAgIGNsYXNzIEVsZW1lbnRPcHMsIGNsYXNzIEltcGxlbWVudGF0
aW9uPgpJQUNvbGxlY3Rpb25JbXBsKgpJS2V5U2V0QXNBdmxUcmVlT3BzIDxFbGVtZW50LCBLZXks
IEVsZW1lbnRPcHMsIEltcGxlbWVudGF0aW9uPjo6CkNsb25lICgpIGNvbnN0CnsgcmV0dXJuIChJ
bXBsZW1lbnRhdGlvbiopICpuZXcgU2VsZiAoKnRoaXMpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxl
bWVudCwgY2xhc3MgS2V5LAogICAgICAgICAgY2xhc3MgRWxlbWVudE9wcywgY2xhc3MgSW1wbGVt
ZW50YXRpb24+CklLZXlTZXRBc0F2bFRyZWVPcHMgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcywg
SW1wbGVtZW50YXRpb24+OjoKb3BlcmF0b3IgSUtleVNvcnRlZFNldEFzQXZsVHJlZUltcGwmICgp
CnsgcmV0dXJuICooSUtleVNvcnRlZFNldEFzQXZsVHJlZUltcGwqKWl2QmFzZSA7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXksCiAgICAgICAgICBjbGFzcyBFbGVtZW50T3Bz
LCBjbGFzcyBJbXBsZW1lbnRhdGlvbj4KSUtleVNldEFzQXZsVHJlZU9wcyA8RWxlbWVudCwgS2V5
LCBFbGVtZW50T3BzLCBJbXBsZW1lbnRhdGlvbj46OgpvcGVyYXRvciBJbXBsZW1lbnRhdGlvbiog
KCkKeyBpdkltcGwuQ2hlY2tQb2ludGVyICh0aGlzKTsKICByZXR1cm4gJml2SW1wbCA7Cn0KCgoK
CgoKIyAxOTMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1
ZGUvaWlrc2F2bC5oIiAyCgoKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0
KHBvcCkKI3ByYWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgMzIgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWtzLmgiIDIKCgoKCgoKIAoKIAojcHJh
Z21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRf
TEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoKIAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmco
X19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgojcHJhZ21hIGVudW0oNCkKCgoKCgoKCgoK
CgoKCgoKIAoKIAogCgogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXks
IGNsYXNzIEVsZW1lbnRPcHM+CmNsYXNzIElHS2V5U2V0Q3Vyc29yOwoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQsIGNsYXNzIEtleSwgY2xhc3MgRWxlbWVudE9wcz4KY2xhc3MgSUdLZXlTZXQgOgog
IHB1YmxpYyBJQUtleVNldCA8RWxlbWVudCwgS2V5PiB7CnByb3RlY3RlZDoKCiAgdHlwZWRlZiAg
SUdLZXlTZXQgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gU2VsZjsKCiAgdHlwZWRlZiAgSUtl
eVNldEFzQXZsVHJlZUltcGwgUHVyZUltcGxlbWVudGF0aW9uOwoKCiAgdHlwZWRlZiAgUHVyZUlt
cGxlbWVudGF0aW9uIEltcGxlbWVudGF0aW9uOwoKCgoKCgoKCgoKCiAgICAgICAgICAgdHlwZWRl
ZiAgSUtleVNldEFzQXZsVHJlZU9wcyA8IEVsZW1lbnQgLCAgIEtleSAsIElXS0NPcHMgPCBFbGVt
ZW50ICwgICBLZXkgLCAgIEVsZW1lbnRPcHMgPiwgSW1wbGVtZW50YXRpb24+IEluc3RhbnRpYXRp
b24gOwoKcHVibGljOgoKCiAgdHlwZWRlZiBJQ29sbGVjdGlvbkd1YXJkPEVsZW1lbnQ+IEd1YXJk
OwoKCiAgdHlwZWRlZiAgSUdLZXlTZXRDdXJzb3IKICAgICAgICAgICAgPEVsZW1lbnQsIEtleSwg
RWxlbWVudE9wcz4gQ3Vyc29yOwoKCgoKCgogICAgICAgICAgIElHS2V5U2V0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoSU51bWJlciA9IDEwMCk7CgogICAgICAgICAgIElHS2V5U2V0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoSUdLZXlTZXQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCwgS2V5LCBF
bGVtZW50T3BzPiBjb25zdCYpOwoKICBJR0tleVNldCA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3Bz
PiYKICAgICAgICAgICBvcGVyYXRvcj0gICAgICAgIChJR0tleVNldAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50LCBL
ZXksIEVsZW1lbnRPcHM+IGNvbnN0Jik7CgojIDE1MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51
eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pa3MuaCIKCgpwcm90ZWN0ZWQ6CgogICAgICAgICAg
IElHS2V5U2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHVyZUltcGxlbWVudGF0aW9u
Jik7CgogIHN0YXRpYwogIEltcGxlbWVudGF0aW9uJgogICAgICAgICAgIEltcGxPZiAgICAgICAg
ICAgKElHS2V5U2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gY29uc3QmKTsKCnBy
aXZhdGU6CgogIGZyaWVuZAogIGNsYXNzICAgIElHS2V5U2V0Q3Vyc29yIDxFbGVtZW50LCBLZXks
IEVsZW1lbnRPcHM+OwoKCgoKCgoKIyAxODggIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5
MC1zaGFyZWQuYmluL2luY2x1ZGUvaWtzLmgiCgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50
LCBjbGFzcyBLZXksIGNsYXNzIEVsZW1lbnRPcHM+CmNsYXNzIElHS2V5U2V0Q3Vyc29yIDoKICBw
dWJsaWMgSUVsZW1lbnRDdXJzb3IgPEVsZW1lbnQ+IHsKCiAgdHlwZWRlZiAgSUVsZW1lbnRDdXJz
b3IgPEVsZW1lbnQ+IEluaGVyaXRlZDsKCiAgdHlwZWRlZiB0eXBlbmFtZSAgSUdLZXlTZXQKICAg
ICAgICAgICAgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz46OgogICAgICAgICAgICAgIEltcGxl
bWVudGF0aW9uOjpDdXJzb3IgSW1wbGVtZW50YXRpb247CgpwdWJsaWM6CgogICAgICAgICAgIElH
S2V5U2V0Q3Vyc29yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUdLZXlTZXQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzPiBjb25zdCYpOwoKICBJR0tleVNldEN1cnNvciA8RWxl
bWVudCwgS2V5LCBFbGVtZW50T3BzPiYKICAgICAgICAgICBvcGVyYXRvcj0gICAgICAgIChJR0tl
eVNldEN1cnNvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFbGVtZW50LCBLZXksIEVsZW1lbnRPcHM+IGNvbnN0Jik7Cgpwcm90
ZWN0ZWQ6CgogICAgICAgICAgIElHS2V5U2V0Q3Vyc29yCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoSUN1cnNvckltcGwqKTsKCnByaXZhdGU6CgojIDIzMyAiL2hvbWUvYWtub2xsL2lvY3Ny
Yy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pa3MuaCIKCgp9OwoKIyAyNzggIi9ob21l
L2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWtzLmgiCgoKdGVt
cGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleT4KY2xhc3MgSUtleVNldCA6CiAgcHVibGlj
IElHS2V5U2V0CiAgICAgICAgICA8RWxlbWVudCwgS2V5LCBJS0NPcHMgPEVsZW1lbnQsIEtleT4g
PiB7CgogIHR5cGVkZWYgIElHS2V5U2V0CiAgICAgICAgICAgIDxFbGVtZW50LCBLZXksCiAgICAg
ICAgICAgICBJS0NPcHMgPEVsZW1lbnQsIEtleT4gPiBJbmhlcml0ZWQ7Cgpwcm90ZWN0ZWQ6Cgog
IHR5cGVkZWYgdHlwZW5hbWUgIEluaGVyaXRlZDo6UHVyZUltcGxlbWVudGF0aW9uIFB1cmVJbXBs
ZW1lbnRhdGlvbjsKCiAgdHlwZWRlZiAgSUtleVNldCA8RWxlbWVudCwgS2V5PiBTZWxmOwoKCgoK
CgoKcHVibGljOgoKCiAgdHlwZWRlZiBJQ29sbGVjdGlvbkd1YXJkPEVsZW1lbnQ+IEd1YXJkOwoK
CiAgICAgICAgICAgSUtleVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOdW1iZXIg
PSAxMDApOwoKIyAzMjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWtzLmgiCgoKcHJvdGVjdGVkOgoKICAgICAgICAgICBJS2V5U2V0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChQdXJlSW1wbGVtZW50YXRpb24mKTsKCnByaXZhdGU6Cgoj
IDM0NCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
a3MuaCIKCgp9OwoKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXksIGNsYXNzIEVs
ZW1lbnRPcHM+CmNsYXNzIElWR0tleVNldCA6CiAgcHVibGljIElHS2V5U2V0CiAgICAgICAgICA8
RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzID4gewoKICB0eXBlZGVmICBJVkdLZXlTZXQKICAgICAg
ICAgICAgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gSW5oZXJpdGVkOwoKcHJvdGVjdGVkOgoK
ICB0eXBlZGVmIHR5cGVuYW1lIAogICAgICAgICAgIElHS2V5U2V0CiAgICAgICAgICAgIDxFbGVt
ZW50LCBLZXksIEVsZW1lbnRPcHM+OjpQdXJlSW1wbGVtZW50YXRpb24gUHVyZUltcGxlbWVudGF0
aW9uOwoKCiAgdHlwZWRlZiAgSVZLZXlTZXRJbXBsCiAgICAgICAgICAgIDxQdXJlSW1wbGVtZW50
YXRpb24+IEltcGxlbWVudGF0aW9uOwoKCgoKCgoKCgoKCgogICAgICAgICAgIHR5cGVkZWYgIElL
ZXlTZXRBc0F2bFRyZWVPcHMgPCBFbGVtZW50ICwgICBLZXkgLCBJV0tDT3BzIDwgRWxlbWVudCAs
ICAgS2V5ICwgICBFbGVtZW50T3BzID4sIEltcGxlbWVudGF0aW9uPiBJbnN0YW50aWF0aW9uIDsK
CnB1YmxpYzoKCgogIHR5cGVkZWYgSUNvbGxlY3Rpb25HdWFyZDxFbGVtZW50PiBHdWFyZDsKCgog
ICAgICAgICAgIElWR0tleVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOdW1iZXIg
PSAxMDApOwoKIyA0MDUgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWtzLmgiCgoKcHJvdGVjdGVkOgoKICAgICAgICAgICBJVkdLZXlTZXQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFB1cmVJbXBsZW1lbnRhdGlvbiYpOwoKcHJpdmF0ZToK
CiMgNDIzICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2lrcy5oIgoKCn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5PgpjbGFzcyBJ
VktleVNldCA6CiAgcHVibGljIElWR0tleVNldAogICAgICAgICAgPEVsZW1lbnQsIEtleSwgSUtD
T3BzIDxFbGVtZW50LCBLZXk+ID4gewoKICB0eXBlZGVmICBJVkdLZXlTZXQKICAgICAgICAgICAg
PEVsZW1lbnQsIEtleSwKICAgICAgICAgICAgIElLQ09wcyA8RWxlbWVudCwgS2V5PiA+IEluaGVy
aXRlZDsKCnByb3RlY3RlZDoKCiAgdHlwZWRlZiB0eXBlbmFtZSAgSW5oZXJpdGVkOjpQdXJlSW1w
bGVtZW50YXRpb24gUHVyZUltcGxlbWVudGF0aW9uOwoKICB0eXBlZGVmICBJVktleVNldCA8RWxl
bWVudCwgS2V5PiBTZWxmOwoKCgoKCgoKcHVibGljOgoKCiAgdHlwZWRlZiBJQ29sbGVjdGlvbkd1
YXJkPEVsZW1lbnQ+IEd1YXJkOwoKCiAgICAgICAgICAgSVZLZXlTZXQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChJTnVtYmVyID0gMTAwKTsKCiMgNDczICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lrcy5oIgoKCnByb3RlY3RlZDoKCiAgICAg
ICAgICAgSVZLZXlTZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB1cmVJbXBsZW1l
bnRhdGlvbiYpOwoKcHJpdmF0ZToKCiMgNDkxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3Mz
OTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lrcy5oIgoKCn07CgoKCiAKCiAKCgoKCgoKCgoKCgojcHJh
Z21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIyAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lrcy5pbmwi
IDEKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKIAogCiAKCgoKIAoKdGVtcGxhdGUg
PGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwgY2xhc3MgRWxlbWVudE9wcz4KaW5saW5lCklHS2V5
U2V0Q3Vyc29yIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHM+OjoKSUdLZXlTZXRDdXJzb3IKICAo
SUdLZXlTZXQKICAgIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHM+IGNvbnN0JiBjb2xsZWN0aW9u
KQo6IElFbGVtZW50Q3Vyc29yIDxFbGVtZW50PgogICAgKGNvbGxlY3Rpb24uaXZJbXBsLT5DcmVh
dGVDdXJzb3IgKCkpCnsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwgY2xh
c3MgRWxlbWVudE9wcz4KaW5saW5lIElHS2V5U2V0Q3Vyc29yIDxFbGVtZW50LCBLZXksIEVsZW1l
bnRPcHM+JgpJR0tleVNldEN1cnNvciA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzPjo6Cm9wZXJh
dG9yPQogIChJR0tleVNldEN1cnNvcgogICAgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gY29u
c3QmIGN1cnNvcikKeyBJbmhlcml0ZWQ6Om9wZXJhdG9yPSAoY3Vyc29yKTsKICByZXR1cm4gKnRo
aXM7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXksIGNsYXNzIEVsZW1l
bnRPcHM+CmlubGluZQpJR0tleVNldEN1cnNvciA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzPjo6
CklHS2V5U2V0Q3Vyc29yIChJQ3Vyc29ySW1wbCogaW1wbCkKOiBJRWxlbWVudEN1cnNvciA8RWxl
bWVudD4gKGltcGwpCnsKfQoKIyA5MiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNo
YXJlZC5iaW4vaW5jbHVkZS9pa3MuaW5sIgoKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVt
ZW50LCBjbGFzcyBLZXksIGNsYXNzIEVsZW1lbnRPcHM+CmlubGluZQpJR0tleVNldCA8RWxlbWVu
dCwgS2V5LCBFbGVtZW50T3BzPjo6CklHS2V5U2V0IChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMp
CnsgdGhpcy0+U2V0SW1wbCAoKEltcGxlbWVudGF0aW9uKikgKm5ldwoKCgoKICAgICAgICAgICAg
ICAgIEluc3RhbnRpYXRpb24gKG51bWJlck9mRWxlbWVudHMpKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQsIGNsYXNzIEtleSwgY2xhc3MgRWxlbWVudE9wcz4KaW5saW5lCklHS2V5U2V0IDxF
bGVtZW50LCBLZXksIEVsZW1lbnRPcHM+OjoKSUdLZXlTZXQKICAoSUdLZXlTZXQKICAgIDxFbGVt
ZW50LCBLZXksIEVsZW1lbnRPcHM+IGNvbnN0JiBjb2xsZWN0aW9uKQp7IHRoaXMtPkNsb25lSW1w
bE9mIChjb2xsZWN0aW9uKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwg
Y2xhc3MgRWxlbWVudE9wcz4KaW5saW5lIElHS2V5U2V0IDxFbGVtZW50LCBLZXksIEVsZW1lbnRP
cHM+JgpJR0tleVNldCA8RWxlbWVudCwgS2V5LCBFbGVtZW50T3BzPjo6Cm9wZXJhdG9yPSAoSUdL
ZXlTZXQKICAgICAgICAgICAgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gY29uc3QmIGNvbGxl
Y3Rpb24pCnsgdGhpcy0+SW1wbE9mICgqdGhpcykuQ29weSAodGhpcy0+SW1wbE9mIChjb2xsZWN0
aW9uKSk7CiAgcmV0dXJuICp0aGlzOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudCwgY2xh
c3MgS2V5LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUKSUdLZXlTZXQgPEVsZW1lbnQsIEtleSwg
RWxlbWVudE9wcz46OgpJR0tleVNldCAoUHVyZUltcGxlbWVudGF0aW9uJiBpbXBsKQp7IHRoaXMt
PlNldEltcGwgKCZpbXBsKTsKfQoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNsYXNzIEtleSwg
Y2xhc3MgRWxlbWVudE9wcz4KaW5saW5lIHR5cGVuYW1lICBJR0tleVNldAogPEVsZW1lbnQsIEtl
eSwgRWxlbWVudE9wcz46OkltcGxlbWVudGF0aW9uJgpJR0tleVNldCA8RWxlbWVudCwgS2V5LCBF
bGVtZW50T3BzPjo6CkltcGxPZiAoSUdLZXlTZXQKICAgICAgICAgPEVsZW1lbnQsIEtleSwgRWxl
bWVudE9wcz4gY29uc3QmIGNvbGxlY3Rpb24pCnsgcmV0dXJuICooSW1wbGVtZW50YXRpb24qKWNv
bGxlY3Rpb24uaXZJbXBsOwp9CgogCiAKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnQsIGNs
YXNzIEtleT4KaW5saW5lCklLZXlTZXQgPEVsZW1lbnQsIEtleT46OgpJS2V5U2V0IChJTnVtYmVy
IG51bWJlck9mRWxlbWVudHMpCjogSUdLZXlTZXQKICAgPEVsZW1lbnQsIEtleSwgSUtDT3BzIDxF
bGVtZW50LCBLZXk+ID4gKG51bWJlck9mRWxlbWVudHMpCnsKfQoKIAoKdGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnQsIGNsYXNzIEtleT4KaW5saW5lCklLZXlTZXQgPEVsZW1lbnQsIEtleT46OgpJS2V5
U2V0IChQdXJlSW1wbGVtZW50YXRpb24mIGltcGwpCjogSUdLZXlTZXQKICAgPEVsZW1lbnQsIEtl
eSwgSUtDT3BzIDxFbGVtZW50LCBLZXk+ID4gKGltcGwpCnsKfQoKCiAKIAogCgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgRWxlbWVudCwgY2xhc3MgS2V5LCBjbGFzcyBFbGVtZW50T3BzPgppbmxpbmUKSVZH
S2V5U2V0IDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHM+OjoKSVZHS2V5U2V0IChJTnVtYmVyIG51
bWJlck9mRWxlbWVudHMpCjogSUdLZXlTZXQKICAgIDxFbGVtZW50LCBLZXksIEVsZW1lbnRPcHM+
ICgqKEltcGxlbWVudGF0aW9uKikgKm5ldwoKCgoKICAgICAgICAgICAgICAgIEluc3RhbnRpYXRp
b24gKG51bWJlck9mRWxlbWVudHMpKQp7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBj
bGFzcyBLZXksIGNsYXNzIEVsZW1lbnRPcHM+CmlubGluZQpJVkdLZXlTZXQgPEVsZW1lbnQsIEtl
eSwgRWxlbWVudE9wcz46OgpJVkdLZXlTZXQgKFB1cmVJbXBsZW1lbnRhdGlvbiYgaW1wbCkKOiBJ
R0tleVNldAogICAgPEVsZW1lbnQsIEtleSwgRWxlbWVudE9wcz4gKGltcGwpCnsKfQoKIAogCiAK
CiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+CmlubGluZQpJVktleVNldCA8
RWxlbWVudCwgS2V5Pjo6CklWS2V5U2V0IChJTnVtYmVyIG51bWJlck9mRWxlbWVudHMpCjogSVZH
S2V5U2V0CiAgIDxFbGVtZW50LCBLZXksIElLQ09wcyA8RWxlbWVudCwgS2V5PiA+IChudW1iZXJP
ZkVsZW1lbnRzKQp7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBFbGVtZW50LCBjbGFzcyBLZXk+Cmlu
bGluZQpJVktleVNldCA8RWxlbWVudCwgS2V5Pjo6CklWS2V5U2V0IChQdXJlSW1wbGVtZW50YXRp
b24mIGltcGwpCjogSVZHS2V5U2V0CiAgIDxFbGVtZW50LCBLZXksIElLQ09wcyA8RWxlbWVudCwg
S2V5PiA+IChpbXBsKQp7Cn0KCgogCgojIDUyMiAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pa3MuaCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkK
I3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAxOCAiL2hv
bWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0RhdGFTZXQuaHBwIiAyCgoKICAgICAKICAgIAoj
IDEgIi9ob21lL3hodTYwMzEvdHNmdy9JbmNsdWRlL1RTRldOZXRCYXNlT2JqZWN0LmhwcCIgMQog
CiAKIAogCiAKCgogICAgCgogICAgIAogICAgCiAgICAKICAgIAojIDEgIi9ob21lL2Frbm9sbC9p
b2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXRpbWUuaHBwIiAxCiMgMjAxICIv
aG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l0aW1lLmhw
cCIKCgoKCgoKIyAxMyAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV05ldEJhc2VPYmpl
Y3QuaHBwIiAyCgogICAgCgogICAgIAogICAgZXh0ZXJuICJDIiB7CiAgICAgICAgIAogICAgICAg
IAojIDEgIi91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDEgMwogCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDEgMwog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAogCgoKCgoKdHlwZWRlZiBpbnQgYm9v
bF90Owp0eXBlZGVmIGludCBlbnVtX3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiMg
NDMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwoKCgoKCgoKCiAKCnN0cnVjdCB0aW1ldmFs
CiAgewogICAgX190aW1lX3QgdHZfc2VjOwkJIAogICAgX190aW1lX3QgdHZfdXNlYzsJCSAKICB9
OwoKIAojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCmV4dGVybiAiQyIgeyAK
CiAKCgoKCgoKCgoKCiAKCnN0cnVjdCB0aW1lem9uZQogIHsKICAgIGludCB0el9taW51dGVzd2Vz
dDsJCSAKICAgIGludCB0el9kc3R0aW1lOwkJIAogIH07CgogCgoKCgpleHRlcm4gaW50IGdldHRp
bWVvZmRheSAgKHN0cnVjdCB0aW1ldmFsICpfX3R2LAoJCQkgICAgICBzdHJ1Y3QgdGltZXpvbmUg
Kl9fdHopICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkgIChfX2NvbnN0
IHN0cnVjdCB0aW1ldmFsICpfX3R2LAoJCQkgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAq
X190eikgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiBpbnQgYWRqdGltZSAgKF9fY29uc3Qgc3Ry
dWN0IHRpbWV2YWwgKl9fZGVsdGEsCgkJCSBzdHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgIHRo
cm93ICgpICA7CgoKIAplbnVtIF9faXRpbWVyX3doaWNoCiAgewogICAgIAogICAgSVRJTUVSX1JF
QUwgPSAwLAoKICAgICAKICAgIElUSU1FUl9WSVJUVUFMID0gMSwKCiAgICAgCgogICAgSVRJTUVS
X1BST0YgPSAyCgogIH07CgogCgpzdHJ1Y3QgaXRpbWVydmFsCiAgewogICAgIAogICAgc3RydWN0
IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsK
ICB9OwoKIAoKZXh0ZXJuIGludCBnZXRpdGltZXIgIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hp
Y2gsCgkJCSAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpICB0aHJvdyAoKSAgOwoKIAoKCmV4
dGVybiBpbnQgc2V0aXRpbWVyICAoZW51bSBfX2l0aW1lcl93aGljaCBfX3doaWNoLAoJCQkgICBf
X2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9fbmV3LAoJCQkgICBzdHJ1Y3QgaXRpbWVydmFsICpf
X29sZCkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHV0aW1lcyAgKF9fY29uc3QgY2hhciAq
X19maWxlLCBzdHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSkgIHRocm93ICgpICA7CgoKIAoKCgoKCgoK
CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoKIyAxNDIgIi91c3IvaW5jbHVkZS9z
eXMvdGltZS5oIiAzCgp9IAoKCiMgNjMgIi91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMiAzCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1p
dHMuaCIgMSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgv
Mi45NS4yL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCgoKCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMv
cGFyYW0uaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojIDQgIi91c3IvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAyIDMKCgoKIyAyNSAiL3Vzci9p
bmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoK
IAoKCgoKIAoKCgoKIyA2NCAiL3Vzci9pbmNsdWRlL3JwYy90eXBlcy5oIiAyIDMKCgojIDEgIi91
c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvbGltaXRzLmgi
IDEgMwogCgoKIAoKIyAxMTQgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgoKCgojIDIzICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9p
bi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIv
czM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoK
IAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoj
IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy93b3Jkc2l6ZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgojIDI5ICIvdXNyL2luY2x1
ZGUvc3RkaW50LmgiIDIgMwoKCiAKCiAKCiAKIyA0NyAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAz
CgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJCXVpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgaW50CXVpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludAkJdWludDMyX3Q7CgoKCl9fZXh0
ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CXVpbnQ2NF90OwoKCgogCgog
CnR5cGVkZWYgc2lnbmVkIGNoYXIJCWludF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQJCWlu
dF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50CQkJaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25f
Xwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQJCWludF9sZWFzdDY0X3Q7CgoKIAp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIJCXVpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50CXVpbnRf
bGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludAkJdWludF9sZWFzdDMyX3Q7CgoKCl9fZXh0
ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CXVpbnRfbGVhc3Q2NF90OwoK
CgogCgogCnR5cGVkZWYgc2lnbmVkIGNoYXIJCWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgaW50
CQkJaW50X2Zhc3QxNl90Owp0eXBlZGVmIGludAkJCWludF9mYXN0MzJfdDsKX19leHRlbnNpb25f
Xwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQJCWludF9mYXN0NjRfdDsKCgogCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhcgkJdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50CQl1aW50X2Zh
c3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludAkJdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25f
Xwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQJdWludF9mYXN0NjRfdDsKCgoKIAoKCgoK
CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50CQl1aW50cHRyX3Q7CgoKCiAKCgoKCl9fZXh0ZW5z
aW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50CQlpbnRtYXhfdDsKX19leHRlbnNpb25fXwp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQJdWludG1heF90OwoKCgogCgojIDI4MCAiL3Vzci9p
bmNsdWRlL3N0ZGludC5oIiAzCgoKCiAKCiMgMzE2ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMK
CgoKIyAyNCAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc29ja2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIv
Z2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAK
CiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvczM5
MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgog
CgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMjkgIi91c3IvaW5j
bHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgoK
CgoKIyAzMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMwoKCgogCnR5cGVkZWYgdW5z
aWduZWQgaW50IHNvY2tsZW5fdDsKCiAKZW51bSBfX3NvY2tldF90eXBlCnsKICBTT0NLX1NUUkVB
TSA9IDEsCQkgCgoKICBTT0NLX0RHUkFNID0gMiwJCSAKCgogIFNPQ0tfUkFXID0gMywJCQkgCgog
IFNPQ0tfUkRNID0gNCwJCQkgCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwJCSAKCgogIFNPQ0tfUEFD
S0VUID0gMTAJCSAKCgoKfTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKIAojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3NvY2thZGRyLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7CgogCgoKCgoKCgoKIAoKZXh0ZXJu
IGludCBfX2xpYmNfc2FfbGVuICAoc2FfZmFtaWx5X3QgX19hZikgIHRocm93ICgpICA7CgoKIyAx
MzMgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgogCnN0cnVjdCBzb2NrYWRkcgog
IHsKICAgIHNhX2ZhbWlseV90ICBzYV9mYW1pbHkgOwkgCiAgICBjaGFyIHNhX2RhdGFbMTRdOwkJ
IAogIH07CgoKIAoKCgoKCgoKCgpzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQogIHsKICAgIHNhX2Zh
bWlseV90ICBfX3NzX2ZhbWlseSA7CSAKICAgIF9fdWludDMyX3QgIF9fc3NfYWxpZ247CSAKICAg
IGNoYXIgX19zc19wYWRkaW5nWygxMjggIC0gKDIgKiBzaXplb2YgKF9fdWludDMyX3QgKSkpIF07
CiAgfTsKCgogCmVudW0KICB7CiAgICBNU0dfT09CCQk9IDB4MDEsCSAKCiAgICBNU0dfUEVFSwkJ
PSAweDAyLAkgCgogICAgTVNHX0RPTlRST1VURQk9IDB4MDQsCSAKCgogICAgIAogICAgTVNHX1RS
WUhBUkQJCT0gTVNHX0RPTlRST1VURSAsCgoKICAgIE1TR19DVFJVTkMJCT0gMHgwOCwJIAoKICAg
IE1TR19QUk9YWQkJPSAweDEwLAkgCgogICAgTVNHX1RSVU5DCQk9IDB4MjAsCgogICAgTVNHX0RP
TlRXQUlUCT0gMHg0MCwgIAoKICAgIE1TR19FT1IJCT0gMHg4MCwgIAoKICAgIE1TR19XQUlUQUxM
CQk9IDB4MTAwLCAgCgogICAgTVNHX0ZJTgkJPSAweDIwMCwKCiAgICBNU0dfU1lOCQk9IDB4NDAw
LAoKICAgIE1TR19VUkcJCT0gMHg4MDAsCgogICAgTVNHX1JTVAkJPSAweDEwMDAsCgogICAgTVNH
X0VSUlFVRVVFCT0gMHgyMDAwLCAgCgogICAgTVNHX05PU0lHTkFMCT0gMHg0MDAwICAgCgogIH07
CgoKIAoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKiAgbXNnX25hbWU7CQkgCiAgICBzb2Nr
bGVuX3QgbXNnX25hbWVsZW47CSAKCiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19pb3Y7CSAKICAgIHNp
emVfdCBtc2dfaW92bGVuOwkJIAoKICAgIHZvaWQgKiAgbXNnX2NvbnRyb2w7CSAKICAgIHNpemVf
dCBtc2dfY29udHJvbGxlbjsJIAoKICAgIGludCBtc2dfZmxhZ3M7CQkgCiAgfTsKCiAKc3RydWN0
IGNtc2doZHIKICB7CiAgICBzaXplX3QgY21zZ19sZW47CQkgCgogICAgaW50IGNtc2dfbGV2ZWw7
CQkgCiAgICBpbnQgY21zZ190eXBlOwkJIAoKICAgIHVuc2lnbmVkIGNoYXIgX19jbXNnX2RhdGFb
MF07ICAKICAgICAKCiAgfTsKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIHN0cnVjdCBjbXNnaGRy
ICpfX2Ntc2dfbnh0aGRyICAoc3RydWN0IG1zZ2hkciAqX19taGRyLAoJCQkJCSAgIHN0cnVjdCBj
bXNnaGRyICpfX2Ntc2cpICB0aHJvdyAoKSAgOwojIDI3MCAiL3Vzci9pbmNsdWRlL2JpdHMvc29j
a2V0LmgiIDMKCgogCgplbnVtCiAgewogICAgU0NNX1JJR0hUUyA9IDB4MDEsCQkgCgoKICAgIFND
TV9DUkVERU5USUFMUyA9IDB4MDIsICAgICAgCgoKICAgIF9fU0NNX0NPTk5FQ1QgPSAweDAzCSAK
ICB9OwoKIAoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCAgcGlkOwkJCSAKICB1aWRfdCAgdWlkOwkJ
CSAKICBnaWRfdCAgZ2lkOwkJCSAKfTsKCiAKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5o
IiAxIDMKIAoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMSAzCiAK
CgoKCgoKCgoKCiAKCgoKCgoKCgojIDEyICIvdXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMK
CgogCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgojIDU2ICIvdXNyL2luY2x1ZGUvYXNt
L3NvY2tldC5oIiAzCgoKCgogCgoKCgojIDI5NSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0Lmgi
IDIgMwoKCgogCnN0cnVjdCBsaW5nZXIKICB7CiAgICBpbnQgbF9vbm9mZjsJCSAKICAgIGludCBs
X2xpbmdlcjsJCSAKICB9OwoKCiMgMjcgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwoK
CgpleHRlcm4gIkMiIHsgCgogCmVudW0KICB7CiAgICBJUFBST1RPX0lQID0gMCwJICAgIAogICAg
SVBQUk9UT19IT1BPUFRTID0gMCwgICAgCiAgICBJUFBST1RPX0lDTVAgPSAxLAkgICAgCiAgICBJ
UFBST1RPX0lHTVAgPSAyLAkgICAgCiAgICBJUFBST1RPX0lQSVAgPSA0LAkgICAgCiAgICBJUFBS
T1RPX1RDUCA9IDYsCSAgICAKICAgIElQUFJPVE9fRUdQID0gOCwJICAgIAogICAgSVBQUk9UT19Q
VVAgPSAxMiwJICAgIAogICAgSVBQUk9UT19VRFAgPSAxNywJICAgIAogICAgSVBQUk9UT19JRFAg
PSAyMiwJICAgIAogICAgSVBQUk9UT19UUCA9IDI5LAkgICAgCiAgICBJUFBST1RPX0lQVjYgPSA0
MSwgICAgICAKICAgIElQUFJPVE9fUk9VVElORyA9IDQzLCAgIAogICAgSVBQUk9UT19GUkFHTUVO
VCA9IDQ0LCAgCiAgICBJUFBST1RPX1JTVlAgPSA0NiwJICAgIAogICAgSVBQUk9UT19HUkUgPSA0
NywJICAgIAogICAgSVBQUk9UT19FU1AgPSA1MCwgICAgICAgCiAgICBJUFBST1RPX0FIID0gNTEs
ICAgICAgICAKICAgIElQUFJPVE9fSUNNUFY2ID0gNTgsICAgIAogICAgSVBQUk9UT19OT05FID0g
NTksICAgICAgCiAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwgICAKICAgIElQUFJPVE9fTVRQID0g
OTIsCSAgICAKICAgIElQUFJPVE9fRU5DQVAgPSA5OCwJICAgIAogICAgSVBQUk9UT19QSU0gPSAx
MDMsCSAgICAKICAgIElQUFJPVE9fQ09NUCA9IDEwOCwJICAgIAogICAgSVBQUk9UT19SQVcgPSAy
NTUsCSAgICAKICAgIElQUFJPVE9fTUFYCiAgfTsKCiAKZW51bQogIHsKICAgIElQUE9SVF9FQ0hP
ID0gNywJCSAKICAgIElQUE9SVF9ESVNDQVJEID0gOSwJCSAKICAgIElQUE9SVF9TWVNUQVQgPSAx
MSwJCSAKICAgIElQUE9SVF9EQVlUSU1FID0gMTMsCSAKICAgIElQUE9SVF9ORVRTVEFUID0gMTUs
CSAKICAgIElQUE9SVF9GVFAgPSAyMSwJCSAKICAgIElQUE9SVF9URUxORVQgPSAyMywJCSAKICAg
IElQUE9SVF9TTVRQID0gMjUsCQkgCiAgICBJUFBPUlRfVElNRVNFUlZFUiA9IDM3LAkgCiAgICBJ
UFBPUlRfTkFNRVNFUlZFUiA9IDQyLAkgCiAgICBJUFBPUlRfV0hPSVMgPSA0MywJCSAKICAgIElQ
UE9SVF9NVFAgPSA1NywKCiAgICBJUFBPUlRfVEZUUCA9IDY5LAkJIAogICAgSVBQT1JUX1JKRSA9
IDc3LAogICAgSVBQT1JUX0ZJTkdFUiA9IDc5LAkJIAogICAgSVBQT1JUX1RUWUxJTksgPSA4NywK
ICAgIElQUE9SVF9TVVBEVVAgPSA5NSwJCSAKCgogICAgSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIs
CSAKICAgIElQUE9SVF9MT0dJTlNFUlZFUiA9IDUxMywJIAogICAgSVBQT1JUX0NNRFNFUlZFUiA9
IDUxNCwKICAgIElQUE9SVF9FRlNTRVJWRVIgPSA1MjAsCgogICAgIAogICAgSVBQT1JUX0JJRkZV
RFAgPSA1MTIsCiAgICBJUFBPUlRfV0hPU0VSVkVSID0gNTEzLAogICAgSVBQT1JUX1JPVVRFU0VS
VkVSID0gNTIwLAoKICAgICAKICAgIElQUE9SVF9SRVNFUlZFRCA9IDEwMjQsCgogICAgIAogICAg
SVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKICB9OwoKCiAKc3RydWN0IGluX2FkZHIKICB7CiAg
ICB1aW50MzJfdCBzX2FkZHI7CiAgfTsKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CiAKCiAKCgogCgogCgoKCgogCgoKCgoKCiAKc3RydWN0IGluNl9hZGRyCiAgewogICAgdW5pb24K
ICAgICAgewoJdWludDhfdAkJdTZfYWRkcjhbMTZdOwoJdWludDE2X3QJdTZfYWRkcjE2WzhdOwoJ
dWludDMyX3QJdTZfYWRkcjMyWzRdOwoKCgogICAgICB9IGluNl91OwoKCgoKICB9OwoKZXh0ZXJu
IGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueTsgICAgICAgICAKZXh0ZXJuIGNvbnN0
IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2xvb3BiYWNrOyAgICAKCgoKCgoKIAoKCgogCnN0cnVj
dCBzb2NrYWRkcl9pbgogIHsKICAgIHNhX2ZhbWlseV90ICBzaW5fZmFtaWx5IDsKICAgIHVpbnQx
Nl90IHNpbl9wb3J0OwkJCSAKICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwkJIAoKICAgICAK
ICAgIHVuc2lnbmVkIGNoYXIgc2luX3plcm9bc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHIpIC0KCQkJ
ICAgKHNpemVvZiAodW5zaWduZWQgc2hvcnQgaW50KSkgIC0KCQkJICAgc2l6ZW9mICh1aW50MTZf
dCkgLQoJCQkgICBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKV07CiAgfTsKCiAKc3RydWN0IHNvY2th
ZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90ICBzaW42X2ZhbWlseSA7CiAgICB1aW50MTZfdCBz
aW42X3BvcnQ7CQkgCiAgICB1aW50MzJfdCBzaW42X2Zsb3dpbmZvOwkgCiAgICBzdHJ1Y3QgaW42
X2FkZHIgc2luNl9hZGRyOwkgCiAgfTsKCiAKc3RydWN0IGlwdjZfbXJlcQogIHsKICAgICAKICAg
IHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwoKICAgICAKICAgIHVuc2lnbmVkIGlu
dCBpcHY2bXJfaW50ZXJmYWNlOwogIH07CgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaW4uaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CiAKCgoKCiAKCgoKCgoKIAoKCnN0cnVjdCBpcF9vcHRzCiAgewogICAgc3RydWN0IGluX2FkZHIg
aXBfZHN0OwkgCiAgICBjaGFyIGlwX29wdHNbNDBdOwkJIAogIH07CgogCnN0cnVjdCBpcF9tcmVx
CiAgewogICAgc3RydWN0IGluX2FkZHIgaW1yX211bHRpYWRkcjsJIAogICAgc3RydWN0IGluX2Fk
ZHIgaW1yX2ludGVyZmFjZTsJIAogIH07CgogCnN0cnVjdCBpcF9tcmVxbgogIHsKICAgIHN0cnVj
dCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CSAKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNz
OwkJIAogICAgaW50CWltcl9pZmluZGV4OwkJCSAKICB9OwoKIApzdHJ1Y3QgaW5fcGt0aW5mbwog
IHsKICAgIGludCBpcGlfaWZpbmRleDsJCQkgCiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19k
c3Q7CSAKICAgIHN0cnVjdCBpbl9hZGRyIGlwaV9hZGRyOwkJIAogIH07CgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKIyAyMjUgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgi
IDIgMwoKCiAKCgoKCgoKZXh0ZXJuIHVpbnQzMl90IG50b2hsICAodWludDMyX3QgX19uZXRsb25n
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHVpbnQxNl90IG50b2hzICAodWludDE2X3QgX19uZXRzaG9y
dCkgIHRocm93ICgpICA7CmV4dGVybiB1aW50MzJfdCBodG9ubCAgKHVpbnQzMl90IF9faG9zdGxv
bmcpICB0aHJvdyAoKSAgOwpleHRlcm4gdWludDE2X3QgaHRvbnMgICh1aW50MTZfdCBfX2hvc3Rz
aG9ydCkgIHRocm93ICgpICA7CgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgojIDQ1ICIvdXNyL2luY2x1ZGUv
Yml0cy9ieXRlc3dhcC5oIiAzCgoKCgoKIAoKCgoKCgojIDcyICIvdXNyL2luY2x1ZGUvYml0cy9i
eXRlc3dhcC5oIiAzCgoKCgoKIAoKCgoKCgoKCgoKIyAyNDIgIi91c3IvaW5jbHVkZS9uZXRpbmV0
L2luLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCmV4dGVybiBpbnQgYmluZHJlc3Zwb3J0ICAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gKl9fc29ja19pbikgIHRocm93ICgpICA7CgoKCgoKCgoKCgoKCgoKCgoKCiAKc3RydWN0
IGluNl9wa3RpbmZvCiAgewogICAgc3RydWN0IGluNl9hZGRyCWlwaTZfYWRkcjsgICAgIAogICAg
dW5zaWduZWQgaW50CWlwaTZfaWZpbmRleDsgIAogIH07Cgp9IAoKCiMgNjYgIi91c3IvaW5jbHVk
ZS9ycGMvdHlwZXMuaCIgMiAzCgoKCgoKCgoKCgojIDQxICIvdXNyL2luY2x1ZGUvcnBjL3JwYy5o
IiAyIDMKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9ycGMveGRyLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCgpleHRlcm4gIkMiIHsgCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKZW51bSB4ZHJfb3AgewogIFhEUl9FTkNPREUg
PSAwLAogIFhEUl9ERUNPREUgPSAxLAogIFhEUl9GUkVFID0gMgp9OwoKIAoKCgogCgoKCgoKCgoK
CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IFhEUiBYRFI7CnN0cnVjdCBYRFIKICB7CiAgICBlbnVt
IHhkcl9vcCB4X29wOwkJIAogICAgc3RydWN0IHhkcl9vcHMKICAgICAgewoJYm9vbF90ICgqeF9n
ZXRsb25nKSAgKFhEUiAqX194ZHJzLCBsb25nICpfX2xwKSAgOwoJIAoJYm9vbF90ICgqeF9wdXRs
b25nKSAgKFhEUiAqX194ZHJzLCBfX2NvbnN0IGxvbmcgKl9fbHApICA7CgkgCglib29sX3QgKCp4
X2dldGJ5dGVzKSAgKFhEUiAqX194ZHJzLCBjYWRkcl90IF9fYWRkciwKCQkJCSAgICAgdV9pbnQg
X19sZW4pICA7CgkgCglib29sX3QgKCp4X3B1dGJ5dGVzKSAgKFhEUiAqX194ZHJzLCBfX2NvbnN0
IGNoYXIgKl9fYWRkciwKCQkJCSAgICAgdV9pbnQgX19sZW4pICA7CgkgCgl1X2ludCAoKnhfZ2V0
cG9zdG4pICAoX19jb25zdCBYRFIgKl9feGRycykgIDsKCSAKCWJvb2xfdCAoKnhfc2V0cG9zdG4p
ICAoWERSICpfX3hkcnMsIHVfaW50IHBvcykgIDsKCSAKCWludDMyX3QgKigqeF9pbmxpbmUpICAo
WERSICpfX3hkcnMsIGludCBsZW4pICA7CgkgCgl2b2lkICgqeF9kZXN0cm95KSAgKFhEUiAqX194
ZHJzKSAgOwoJIAoJYm9vbF90ICgqeF9nZXRpbnQzMikgIChYRFIgKl9feGRycywgaW50MzJfdCAq
X19pcCkgIDsKCSAKCWJvb2xfdCAoKnhfcHV0aW50MzIpICAoWERSICpfX3hkcnMsIF9fY29uc3Qg
aW50MzJfdCAqX19pcCkgIDsKCSAKICAgICAgfQogICAgICp4X29wczsKICAgIGNhZGRyX3QgeF9w
dWJsaWM7CQkgCiAgICBjYWRkcl90IHhfcHJpdmF0ZTsJCSAKICAgIGNhZGRyX3QgeF9iYXNlOwkJ
IAogICAgaW50IHhfaGFuZHk7CQkgCiAgfTsKCiAKCgoKCgoKCgp0eXBlZGVmIGJvb2xfdCAoKnhk
cnByb2NfdCkgIChYRFIgKiwgdm9pZCAqLC4uLikgIDsKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
c3RydWN0IHhkcl9kaXNjcmltCnsKICBpbnQgdmFsdWU7CiAgeGRycHJvY190IHByb2M7Cn07Cgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKZXh0ZXJu
IGJvb2xfdCB4ZHJfdm9pZCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl9z
aG9ydCAgKFhEUiAqX194ZHJzLCBzaG9ydCAqX19zcCkgIHRocm93ICgpICA7CmV4dGVybiBib29s
X3QgeGRyX3Vfc2hvcnQgIChYRFIgKl9feGRycywgdV9zaG9ydCAqX191c3ApICB0aHJvdyAoKSAg
OwpleHRlcm4gYm9vbF90IHhkcl9pbnQgIChYRFIgKl9feGRycywgaW50ICpfX2lwKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdV9pbnQgIChYRFIgKl9feGRycywgdV9pbnQgKl9fdXAp
ICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl9sb25nICAoWERSICpfX3hkcnMsIGxvbmcg
Kl9fbHApICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl91X2xvbmcgIChYRFIgKl9feGRy
cywgdV9sb25nICpfX3VscCkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX2h5cGVyICAo
WERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHApICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhk
cl91X2h5cGVyICAoWERSICpfX3hkcnMsIHVfcXVhZF90ICpfX3VsbHApICB0aHJvdyAoKSAgOwpl
eHRlcm4gYm9vbF90IHhkcl9sb25nbG9uZ190ICAoWERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHAp
ICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl91X2xvbmdsb25nX3QgIChYRFIgKl9feGRy
cywgdV9xdWFkX3QgKl9fdWxscCkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX2ludDhf
dCAgKFhEUiAqX194ZHJzLCBpbnQ4X3QgKl9faXApICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90
IHhkcl91aW50OF90ICAoWERSICpfX3hkcnMsIHVpbnQ4X3QgKl9fdXApICB0aHJvdyAoKSAgOwpl
eHRlcm4gYm9vbF90IHhkcl9pbnQxNl90ICAoWERSICpfX3hkcnMsIGludDE2X3QgKl9faXApICB0
aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl91aW50MTZfdCAgKFhEUiAqX194ZHJzLCB1aW50
MTZfdCAqX191cCkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX2ludDMyX3QgIChYRFIg
Kl9feGRycywgaW50MzJfdCAqX19pcCkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX3Vp
bnQzMl90ICAoWERSICpfX3hkcnMsIHVpbnQzMl90ICpfX3VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGJvb2xfdCB4ZHJfaW50NjRfdCAgKFhEUiAqX194ZHJzLCBpbnQ2NF90ICpfX2lwKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdWludDY0X3QgIChYRFIgKl9feGRycywgdWludDY0X3Qg
Kl9fdXApICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl9ib29sICAoWERSICpfX3hkcnMs
IGJvb2xfdCAqX19icCkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX2VudW0gIChYRFIg
Kl9feGRycywgZW51bV90ICpfX2VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfYXJy
YXkgIChYRFIgKiBfeGRycywgY2FkZHJfdCAqX19hZGRycCwgdV9pbnQgKl9fc2l6ZXAsCgkJCSAg
ICAgIHVfaW50IF9fbWF4c2l6ZSwgdV9pbnQgX19lbHNpemUsCgkJCSAgICAgIHhkcnByb2NfdCBf
X2VscHJvYykgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX2J5dGVzICAoWERSICpfX3hk
cnMsIGNoYXIgKipfX2NwcCwgdV9pbnQgKl9fc2l6ZXAsCgkJCSAgICAgIHVfaW50IF9fbWF4c2l6
ZSkgIHRocm93ICgpICA7CmV4dGVybiBib29sX3QgeGRyX29wYXF1ZSAgKFhEUiAqX194ZHJzLCBj
YWRkcl90IF9fY3AsIHVfaW50IF9fY250KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJf
c3RyaW5nICAoWERSICpfX3hkcnMsIGNoYXIgKipfX2NwcCwgdV9pbnQgX19tYXhzaXplKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdW5pb24gIChYRFIgKl9feGRycywgZW51bV90ICpf
X2RzY21wLCBjaGFyICpfX3VucCwKCQkJICAgICAgX19jb25zdCBzdHJ1Y3QgeGRyX2Rpc2NyaW0g
Kl9fY2hvaWNlcywKCQkJICAgICAgeGRycHJvY190IGRmYXVsdCkgIHRocm93ICgpICA7CmV4dGVy
biBib29sX3QgeGRyX2NoYXIgIChYRFIgKl9feGRycywgY2hhciAqX19jcCkgIHRocm93ICgpICA7
CmV4dGVybiBib29sX3QgeGRyX3VfY2hhciAgKFhEUiAqX194ZHJzLCB1X2NoYXIgKl9fY3ApICB0
aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl92ZWN0b3IgIChYRFIgKl9feGRycywgY2hhciAq
X19iYXNlcCwgdV9pbnQgX19uZWxlbSwKCQkJICAgICAgIHVfaW50IF9fZWxlbXNpemUsIHhkcnBy
b2NfdCBfX3hkcl9lbGVtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfZmxvYXQgIChY
RFIgKl9feGRycywgZmxvYXQgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHhkcl9k
b3VibGUgIChYRFIgKl9feGRycywgZG91YmxlICpfX2RwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGJv
b2xfdCB4ZHJfcmVmZXJlbmNlICAoWERSICpfX3hkcnMsIGNhZGRyX3QgKl9feHBwLCB1X2ludCBf
X3NpemUsCgkJCQkgIHhkcnByb2NfdCBfX3Byb2MpICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90
IHhkcl9wb2ludGVyICAoWERSICpfX3hkcnMsIGNoYXIgKipfX29ianBwLAoJCQkJdV9pbnQgX19v
Ympfc2l6ZSwgeGRycHJvY190IF9feGRyX29iaikgIHRocm93ICgpICA7CmV4dGVybiBib29sX3Qg
eGRyX3dyYXBzdHJpbmcgIChYRFIgKl9feGRycywgY2hhciAqKl9fY3BwKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIHVfbG9uZyB4ZHJfc2l6ZW9mICAoeGRycHJvY190LCB2b2lkICopICB0aHJvdyAoKSAg
OwoKIAoKCgoKc3RydWN0IG5ldG9iagp7CiAgdV9pbnQgbl9sZW47CiAgY2hhciAqbl9ieXRlczsK
fTsKdHlwZWRlZiBzdHJ1Y3QgbmV0b2JqIG5ldG9iajsKZXh0ZXJuIGJvb2xfdCB4ZHJfbmV0b2Jq
ICAoWERSICpfX3hkcnMsIHN0cnVjdCBuZXRvYmogKl9fbnApICB0aHJvdyAoKSAgOwoKIAoKCgoK
IApleHRlcm4gdm9pZCB4ZHJtZW1fY3JlYXRlICAoWERSICpfX3hkcnMsIF9fY29uc3QgY2FkZHJf
dCBfX2FkZHIsCgkJCQl1X2ludCBfX3NpemUsIGVudW0geGRyX29wIF9feG9wKSAgdGhyb3cgKCkg
IDsKCiAKZXh0ZXJuIHZvaWQgeGRyc3RkaW9fY3JlYXRlICAoWERSICpfX3hkcnMsIEZJTEUgKl9f
ZmlsZSwKCQkJCSAgZW51bSB4ZHJfb3AgX194b3ApICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9p
ZCB4ZHJyZWNfY3JlYXRlICAoWERSICpfX3hkcnMsIHVfaW50IF9fc2VuZHNpemUsCgkJCQl1X2lu
dCBfX3JlY3ZzaXplLCBjYWRkcl90IF9fdGNwX2hhbmRsZSwKCQkJCWludCAoKl9fcmVhZGl0KSAo
Y2hhciAqLCBjaGFyICosIGludCksCgkJCQlpbnQgKCpfX3dyaXRlaXQpIChjaGFyICosIGNoYXIg
KiwgaW50KSkgIHRocm93ICgpICA7CgogCmV4dGVybiBib29sX3QgeGRycmVjX2VuZG9mcmVjb3Jk
ICAoWERSICpfX3hkcnMsIGJvb2xfdCBfX3NlbmRub3cpICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
Ym9vbF90IHhkcnJlY19za2lwcmVjb3JkICAoWERSICpfX3hkcnMpICB0aHJvdyAoKSAgOwoKIApl
eHRlcm4gYm9vbF90IHhkcnJlY19lb2YgIChYRFIgKl9feGRycykgIHRocm93ICgpICA7CgogCmV4
dGVybiB2b2lkIHhkcl9mcmVlICAoeGRycHJvY190IF9fcHJvYywgY2hhciAqX19vYmpwKSAgdGhy
b3cgKCkgIDsKCn0gCgoKIyA0NSAiL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCgoKIAojIDEg
Ii91c3IvaW5jbHVkZS9ycGMvYXV0aC5oIiAxIDMKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCiAKCgplbnVtIGF1dGhfc3Rh
dCB7CglBVVRIX09LPTAsCgkgCgoKCUFVVEhfQkFEQ1JFRD0xLAkJCSAKCUFVVEhfUkVKRUNURURD
UkVEPTIsCQkgCglBVVRIX0JBRFZFUkY9MywJCQkgCglBVVRIX1JFSkVDVEVEVkVSRj00LAkJIAoJ
QVVUSF9UT09XRUFLPTUsCQkJIAoJIAoKCglBVVRIX0lOVkFMSURSRVNQPTYsCQkgCglBVVRIX0ZB
SUxFRD03CQkJIAp9OwoKdW5pb24gZGVzX2Jsb2NrIHsKCXN0cnVjdCB7CgkJdV9pbnQzMl90IGhp
Z2g7CgkJdV9pbnQzMl90IGxvdzsKCX0ga2V5OwoJY2hhciBjWzhdOwp9Owp0eXBlZGVmIHVuaW9u
IGRlc19ibG9jayBkZXNfYmxvY2s7CmV4dGVybiBib29sX3QgeGRyX2Rlc19ibG9jayAgKFhEUiAq
X194ZHJzLCBkZXNfYmxvY2sgKl9fYmxrcCkgIHRocm93ICgpICA7CgogCgoKc3RydWN0IG9wYXF1
ZV9hdXRoIHsKCWVudW1fdAlvYV9mbGF2b3I7CQkgCgljYWRkcl90CW9hX2Jhc2U7CQkgCgl1X2lu
dAlvYV9sZW5ndGg7CQkgCn07CgogCgoKdHlwZWRlZiBzdHJ1Y3QgQVVUSCBBVVRIOwpzdHJ1Y3Qg
QVVUSCB7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIGFoX2NyZWQ7CiAgc3RydWN0IG9wYXF1ZV9hdXRo
IGFoX3ZlcmY7CiAgdW5pb24gZGVzX2Jsb2NrIGFoX2tleTsKICBzdHJ1Y3QgYXV0aF9vcHMgewog
ICAgdm9pZCAoKmFoX25leHR2ZXJmKSAgKEFVVEggKikgIDsKICAgIGludCAgKCphaF9tYXJzaGFs
KSAgKEFVVEggKiwgWERSICopICA7CSAKICAgIGludCAgKCphaF92YWxpZGF0ZSkgIChBVVRIICos
IHN0cnVjdCBvcGFxdWVfYXV0aCAqKSAgOwoJCQkJCQkgCiAgICBpbnQgICgqYWhfcmVmcmVzaCkg
IChBVVRIICopICA7CSAKICAgIHZvaWQgKCphaF9kZXN0cm95KSAgKEFVVEggKikgIDsgICAgIAkg
CiAgfSAqYWhfb3BzOwogIGNhZGRyX3QgYWhfcHJpdmF0ZTsKfTsKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBzdHJ1Y3Qgb3BhcXVlX2F1dGggX251bGxfYXV0aDsK
CgogCgoKCiAKCgoKCgoKCgpleHRlcm4gQVVUSCAqYXV0aHVuaXhfY3JlYXRlICAoY2hhciAqX19t
YWNobmFtZSwgX191aWRfdCBfX3VpZCwKCQkJCSAgIF9fZ2lkX3QgX19naWQsIGludCBfX2xlbiwK
CQkJCSAgIF9fZ2lkX3QgKl9fYXVwX2dpZHMpICB0aHJvdyAoKSAgOwpleHRlcm4gQVVUSCAqYXV0
aHVuaXhfY3JlYXRlX2RlZmF1bHQgICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIEFVVEggKmF1
dGhub25lX2NyZWF0ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gQVVUSCAqYXV0aGRlc19j
cmVhdGUgIChjb25zdCBjaGFyICpfX3NlcnZlcm5hbWUsIHVfaW50IF9fd2luZG93LAoJCQkJICBz
dHJ1Y3Qgc29ja2FkZHIgKl9fc3luY2FkZHIsCgkJCQkgIGRlc19ibG9jayAqX19ja2V5KSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIEFVVEggKmF1dGhkZXNfcGtfY3JlYXRlICAoY29uc3QgY2hhciAqLCBu
ZXRvYmogKiwgdV9pbnQsCgkJCQkgICAgIHN0cnVjdCBzb2NrYWRkciAqLCBkZXNfYmxvY2sgKikg
IHRocm93ICgpICA7CgoKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50IGdldG5ldG5hbWUgIChjaGFy
ICopICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGhvc3QybmV0bmFtZSAgKGNoYXIgKiwgX19jb25z
dCBjaGFyICosIF9fY29uc3QgY2hhciAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCB1c2VyMm5l
dG5hbWUgIChjaGFyICosIF9fY29uc3QgdWlkX3QgLCBfX2NvbnN0IGNoYXIgKikgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgbmV0bmFtZTJ1c2VyICAoX19jb25zdCBjaGFyICosIHVpZF90ICAqLCBn
aWRfdCAgKiwgaW50ICosCgkJCSAgICAgIGdpZF90ICAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGlu
dCBuZXRuYW1lMmhvc3QgIChfX2NvbnN0IGNoYXIgKiwgY2hhciAqLCBfX2NvbnN0IGludCkgIHRo
cm93ICgpICA7CgogCgoKCgpleHRlcm4gaW50IGtleV9kZWNyeXB0c2Vzc2lvbiAgKGNoYXIgKiwg
ZGVzX2Jsb2NrICopICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGtleV9kZWNyeXB0c2Vzc2lvbl9w
ayAgKGNoYXIgKiwgbmV0b2JqICosIGRlc19ibG9jayAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGlu
dCBrZXlfZW5jcnlwdHNlc3Npb24gIChjaGFyICosIGRlc19ibG9jayAqKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGludCBrZXlfZW5jcnlwdHNlc3Npb25fcGsgIChjaGFyICosIG5ldG9iaiAqLCBkZXNf
YmxvY2sgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQga2V5X2dlbmRlcyAgKGRlc19ibG9jayAq
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBrZXlfc2V0c2VjcmV0ICAoY2hhciAqKSAgdGhyb3cg
KCkgIDsKZXh0ZXJuIGludCBrZXlfc2VjcmV0a2V5X2lzX3NldCAgKHZvaWQpICB0aHJvdyAoKSAg
OwpleHRlcm4gaW50IGtleV9nZXRfY29udiAgKGNoYXIgKiwgZGVzX2Jsb2NrICopICB0aHJvdyAo
KSAgOwoKIAoKCmV4dGVybiBib29sX3QgeGRyX29wYXF1ZV9hdXRoICAoWERSICosIHN0cnVjdCBv
cGFxdWVfYXV0aCAqKSAgdGhyb3cgKCkgIDsKCn0gCgoKIyA0OCAiL3Vzci9pbmNsdWRlL3JwYy9y
cGMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9ycGMvY2xudC5oIiAxIDMKIAogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy91bi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKZXh0ZXJuICJDIiB7IAoK
IApzdHJ1Y3Qgc29ja2FkZHJfdW4KICB7CiAgICBzYV9mYW1pbHlfdCAgc3VuX2ZhbWlseSA7CiAg
ICBjaGFyIHN1bl9wYXRoWzEwOF07CQkgCiAgfTsKCgogCgoKCn0gCgoKIyA0NCAiL3Vzci9pbmNs
dWRlL3JwYy9jbG50LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCmVudW0gY2xudF9zdGF0
IHsKCVJQQ19TVUNDRVNTPTAsCQkJIAoJIAoKCglSUENfQ0FOVEVOQ09ERUFSR1M9MSwJCSAKCVJQ
Q19DQU5UREVDT0RFUkVTPTIsCQkgCglSUENfQ0FOVFNFTkQ9MywJCQkgCglSUENfQ0FOVFJFQ1Y9
NCwJCQkgCglSUENfVElNRURPVVQ9NSwJCQkgCgkgCgoKCVJQQ19WRVJTTUlTTUFUQ0g9NiwJCSAK
CVJQQ19BVVRIRVJST1I9NywJCSAKCVJQQ19QUk9HVU5BVkFJTD04LAkJIAoJUlBDX1BST0dWRVJT
TUlTTUFUQ0g9OSwJCSAKCVJQQ19QUk9DVU5BVkFJTD0xMCwJCSAKCVJQQ19DQU5UREVDT0RFQVJH
Uz0xMSwJCSAKCVJQQ19TWVNURU1FUlJPUj0xMiwJCSAKCVJQQ19OT0JST0FEQ0FTVCA9IDIxLAkJ
IAoJIAoKCglSUENfVU5LTk9XTkhPU1Q9MTMsCQkgCglSUENfVU5LTk9XTlBST1RPPTE3LAkJIAoJ
UlBDX1VOS05PV05BRERSID0gMTksCQkgCgoJIAoKCglSUENfUlBDQkZBSUxVUkU9MTQsCQkgCgoJ
UlBDX1BST0dOT1RSRUdJU1RFUkVEPTE1LAkgCglSUENfTjJBWExBVEVGQUlMVVJFID0gMjIsCSAK
CSAKCgoJUlBDX0ZBSUxFRD0xNiwKCVJQQ19JTlRSPTE4LAoJUlBDX1RMSUVSUk9SPTIwLAoJUlBD
X1VERVJST1I9MjMsCiAgICAgICAgIAoKCiAgICAgICAgUlBDX0lOUFJPR1JFU1MgPSAyNCwKICAg
ICAgICBSUENfU1RBTEVSQUNIQU5ETEUgPSAyNQp9OwoKCiAKCgpzdHJ1Y3QgcnBjX2VyciB7CiAg
ZW51bSBjbG50X3N0YXQgcmVfc3RhdHVzOwogIHVuaW9uIHsKICAgIGludCBSRV9lcnJubzsJCSAK
ICAgIGVudW0gYXV0aF9zdGF0IFJFX3doeTsJIAogICAgc3RydWN0IHsKICAgICAgdV9sb25nIGxv
dzsJCSAKICAgICAgdV9sb25nIGhpZ2g7CQkgCiAgICB9IFJFX3ZlcnM7CiAgICBzdHJ1Y3QgewkJ
CSAKICAgICAgbG9uZyBzMTsKICAgICAgbG9uZyBzMjsKICAgIH0gUkVfbGI7CQkJIAogIH0gcnU7
CgoKCgp9OwoKCiAKCgoKCnR5cGVkZWYgc3RydWN0IENMSUVOVCBDTElFTlQ7CnN0cnVjdCBDTElF
TlQgewogIEFVVEgJKmNsX2F1dGg7CQkgIAogIHN0cnVjdCBjbG50X29wcyB7CiAgICBlbnVtIGNs
bnRfc3RhdCAoKmNsX2NhbGwpICAoQ0xJRU5UICosIHVfbG9uZywgeGRycHJvY190LAoJCQkJICAg
ICAgY2FkZHJfdCwgeGRycHJvY190LAoJCQkJICAgICAgY2FkZHJfdCwgc3RydWN0IHRpbWV2YWwp
ICA7CgkJCSAgICAgICAJIAogICAgdm9pZCAoKmNsX2Fib3J0KSAgKHZvaWQpICA7ICAgCiAgICB2
b2lkICgqY2xfZ2V0ZXJyKSAgKENMSUVOVCAqLCBzdHJ1Y3QgcnBjX2VyciAqKSAgOwoJCQkJIAog
ICAgYm9vbF90ICgqY2xfZnJlZXJlcykgIChDTElFTlQgKiwgeGRycHJvY190LCBjYWRkcl90KSAg
OwoJCQkJIAogICAgdm9pZCAoKmNsX2Rlc3Ryb3kpICAoQ0xJRU5UICopICA7ICAKICAgIGJvb2xf
dCAoKmNsX2NvbnRyb2wpICAoQ0xJRU5UICosIGludCwgY2hhciAqKSAgOwoJCQkJIAogIH0gKmNs
X29wczsKICBjYWRkcl90IGNsX3ByaXZhdGU7CQkgCn07CgoKIAoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAK
CgoKCgoKZXh0ZXJuIENMSUVOVCAqY2xudHJhd19jcmVhdGUgIChfX2NvbnN0IHVfbG9uZyBfX3By
b2csCgkJCQkgICAgX19jb25zdCB1X2xvbmcgX192ZXJzKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoK
CgoKCmV4dGVybiBDTElFTlQgKmNsbnRfY3JlYXRlICAoX19jb25zdCBjaGFyICpfX2hvc3QsIF9f
Y29uc3QgdV9sb25nIF9fcHJvZywKCQkJCSBfX2NvbnN0IHVfbG9uZyBfX3ZlcnMsIF9fY29uc3Qg
Y2hhciAqX19wcm90KSAgdGhyb3cgKCkgIDsKCgogCgoKCgoKCgoKCgpleHRlcm4gQ0xJRU5UICpj
bG50dGNwX2NyZWF0ZSAgKHN0cnVjdCBzb2NrYWRkcl9pbiAqX19yYWRkciwKCQkJCSAgICB1X2xv
bmcgX19wcm9nLCB1X2xvbmcgX192ZXJzaW9uLAoJCQkJICAgIGludCAqX19zb2NrcCwgdV9pbnQg
X19zZW5kc3osCgkJCQkgICAgdV9pbnQgX19yZWN2c3opICB0aHJvdyAoKSAgOwoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiBDTElFTlQgKmNsbnR1ZHBfY3JlYXRlICAoc3RydWN0IHNvY2th
ZGRyX2luICpfX3JhZGRyLAoJCQkJICAgIHVfbG9uZyBfX3Byb2dyYW0sIHVfbG9uZyBfX3ZlcnNp
b24sCgkJCQkgICAgc3RydWN0IHRpbWV2YWwgX193YWl0X3Jlc2VuZCwKCQkJCSAgICBpbnQgKl9f
c29ja3ApICB0aHJvdyAoKSAgOwpleHRlcm4gQ0xJRU5UICpjbG50dWRwX2J1ZmNyZWF0ZSAgKHN0
cnVjdCBzb2NrYWRkcl9pbiAqX19yYWRkciwKCQkJCSAgICAgICB1X2xvbmcgX19wcm9ncmFtLCB1
X2xvbmcgX192ZXJzaW9uLAoJCQkJICAgICAgIHN0cnVjdCB0aW1ldmFsIF9fd2FpdF9yZXNlbmQs
CgkJCQkgICAgICAgaW50ICpfX3NvY2twLCB1X2ludCBfX3NlbmRzeiwKCQkJCSAgICAgICB1X2lu
dCBfX3JlY3ZzeikgIHRocm93ICgpICA7CgoKIAoKCgoKCgoKCgoKZXh0ZXJuIENMSUVOVCAqY2xu
dHVuaXhfY3JlYXRlICAgKHN0cnVjdCBzb2NrYWRkcl91biAqX19yYWRkciwKCQkJCSAgICAgIHVf
bG9uZyBfX3Byb2dyYW0sIHVfbG9uZyBfX3ZlcnNpb24sCgkJCQkgICAgICBpbnQgKl9fc29ja3As
IHVfaW50IF9fc2VuZHN6LAoJCQkJICAgICAgdV9pbnQgX19yZWN2c3opICB0aHJvdyAoKSAgOwoK
CmV4dGVybiBpbnQgY2FsbHJwYyAgKF9fY29uc3QgY2hhciAqX19ob3N0LCBfX2NvbnN0IHVfbG9u
ZyBfX3Byb2dudW0sCgkJCSBfX2NvbnN0IHVfbG9uZyBfX3ZlcnNudW0sIF9fY29uc3QgdV9sb25n
IF9fcHJvY251bSwKCQkJIF9fY29uc3QgeGRycHJvY190IF9faW5wcm9jLCBfX2NvbnN0IGNoYXIg
Kl9faW4sCgkJCSBfX2NvbnN0IHhkcnByb2NfdCBfX291dHByb2MsIGNoYXIgKl9fb3V0KSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBfcnBjX2R0YWJsZXNpemUgICh2b2lkKSAgdGhyb3cgKCkgIDsK
CiAKCgpleHRlcm4gdm9pZCBjbG50X3BjcmVhdGVlcnJvciAgKF9fY29uc3QgY2hhciAqX19tc2cp
ICB0aHJvdyAoKSAgOwkgCmV4dGVybiBjaGFyICpjbG50X3NwY3JlYXRlZXJyb3IgIChfX2NvbnN0
IGNoYXIgKl9fbXNnKSAgdGhyb3cgKCkgIDsJIAoKIAoKCmV4dGVybiB2b2lkIGNsbnRfcGVycm5v
ICAoZW51bSBjbG50X3N0YXQgX19udW0pICB0aHJvdyAoKSAgOwkgCgogCgoKZXh0ZXJuIHZvaWQg
Y2xudF9wZXJyb3IgIChDTElFTlQgKl9fY2xudCwgX19jb25zdCBjaGFyICpfX21zZykgIHRocm93
ICgpICA7CgkJCQkJCQkgCmV4dGVybiBjaGFyICpjbG50X3NwZXJyb3IgIChDTElFTlQgKl9fY2xu
dCwgX19jb25zdCBjaGFyICpfX21zZykgIHRocm93ICgpICA7CgkJCQkJCQkgCgogCgoKc3RydWN0
IHJwY19jcmVhdGVlcnIgewoJZW51bSBjbG50X3N0YXQgY2Zfc3RhdDsKCXN0cnVjdCBycGNfZXJy
IGNmX2Vycm9yOyAgCn07CgpleHRlcm4gc3RydWN0IHJwY19jcmVhdGVlcnIgcnBjX2NyZWF0ZWVy
cjsKCgoKIAoKCmV4dGVybiBjaGFyICpjbG50X3NwZXJybm8gIChlbnVtIGNsbnRfc3RhdCBfX251
bSkgIHRocm93ICgpICA7CSAKCiAKCgpleHRlcm4gaW50IGdldHJwY3BvcnQgIChfX2NvbnN0IGNo
YXIgKiBfX2hvc3QsIHVfbG9uZyBfX3Byb2dudW0sCgkJCSAgIHVfbG9uZyBfX3ZlcnNudW0sIHVf
aW50IHByb3RvKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgZ2V0X215YWRkcmVzcyAg
KHN0cnVjdCBzb2NrYWRkcl9pbiAqKSAgdGhyb3cgKCkgIDsKCgoKCn0gCgoKIyA1MSAiL3Vzci9p
bmNsdWRlL3JwYy9ycGMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9ycGMvcnBjX21zZy5o
IiAxIDMKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoK
CgpleHRlcm4gIkMiIHsgCgogCgoKCgoKZW51bSBtc2dfdHlwZSB7CglDQUxMPTAsCglSRVBMWT0x
Cn07CgplbnVtIHJlcGx5X3N0YXQgewoJTVNHX0FDQ0VQVEVEPTAsCglNU0dfREVOSUVEPTEKfTsK
CmVudW0gYWNjZXB0X3N0YXQgewoJU1VDQ0VTUz0wLAoJUFJPR19VTkFWQUlMPTEsCglQUk9HX01J
U01BVENIPTIsCglQUk9DX1VOQVZBSUw9MywKCUdBUkJBR0VfQVJHUz00LAoJU1lTVEVNX0VSUj01
Cn07CgplbnVtIHJlamVjdF9zdGF0IHsKCVJQQ19NSVNNQVRDSD0wLAoJQVVUSF9FUlJPUj0xCn07
CgogCgoKCiAKCgoKCnN0cnVjdCBhY2NlcHRlZF9yZXBseSB7CglzdHJ1Y3Qgb3BhcXVlX2F1dGgJ
YXJfdmVyZjsKCWVudW0gYWNjZXB0X3N0YXQJYXJfc3RhdDsKCXVuaW9uIHsKCQlzdHJ1Y3QgewoJ
CQl1X2xvbmcJbG93OwoJCQl1X2xvbmcJaGlnaDsKCQl9IEFSX3ZlcnNpb25zOwoJCXN0cnVjdCB7
CgkJCWNhZGRyX3QJd2hlcmU7CgkJCXhkcnByb2NfdCBwcm9jOwoJCX0gQVJfcmVzdWx0czsKCQkg
Cgl9IHJ1OwoKCn07CgogCgoKc3RydWN0IHJlamVjdGVkX3JlcGx5IHsKCWVudW0gcmVqZWN0X3N0
YXQgcmpfc3RhdDsKCXVuaW9uIHsKCQlzdHJ1Y3QgewoJCQl1X2xvbmcgbG93OwoJCQl1X2xvbmcg
aGlnaDsKCQl9IFJKX3ZlcnNpb25zOwoJCWVudW0gYXV0aF9zdGF0IFJKX3doeTsgICAKCX0gcnU7
CgoKfTsKCiAKCgpzdHJ1Y3QgcmVwbHlfYm9keSB7CgllbnVtIHJlcGx5X3N0YXQgcnBfc3RhdDsK
CXVuaW9uIHsKCQlzdHJ1Y3QgYWNjZXB0ZWRfcmVwbHkgUlBfYXI7CgkJc3RydWN0IHJlamVjdGVk
X3JlcGx5IFJQX2RyOwoJfSBydTsKCgp9OwoKIAoKCnN0cnVjdCBjYWxsX2JvZHkgewoJdV9sb25n
IGNiX3JwY3ZlcnM7CSAKCXVfbG9uZyBjYl9wcm9nOwoJdV9sb25nIGNiX3ZlcnM7Cgl1X2xvbmcg
Y2JfcHJvYzsKCXN0cnVjdCBvcGFxdWVfYXV0aCBjYl9jcmVkOwoJc3RydWN0IG9wYXF1ZV9hdXRo
IGNiX3ZlcmY7ICAKfTsKCiAKCgpzdHJ1Y3QgcnBjX21zZyB7Cgl1X2xvbmcJCQlybV94aWQ7Cgll
bnVtIG1zZ190eXBlCQlybV9kaXJlY3Rpb247Cgl1bmlvbiB7CgkJc3RydWN0IGNhbGxfYm9keSBS
TV9jbWI7CgkJc3RydWN0IHJlcGx5X2JvZHkgUk1fcm1iOwoJfSBydTsKCgp9OwoKCgoKIAoKCgoK
CmV4dGVybiBib29sX3QJeGRyX2NhbGxtc2cgIChYRFIgKl9feGRycywgc3RydWN0IHJwY19tc2cg
Kl9fY21zZykgIHRocm93ICgpICA7CgogCgoKCgoKZXh0ZXJuIGJvb2xfdAl4ZHJfY2FsbGhkciAg
KFhEUiAqX194ZHJzLCBzdHJ1Y3QgcnBjX21zZyAqX19jbXNnKSAgdGhyb3cgKCkgIDsKCiAKCgoK
CgpleHRlcm4gYm9vbF90CXhkcl9yZXBseW1zZyAgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgcnBjX21z
ZyAqX19ybXNnKSAgdGhyb3cgKCkgIDsKCiAKCgoKCgpleHRlcm4gdm9pZAlfc2V0ZXJyX3JlcGx5
ICAoc3RydWN0IHJwY19tc2cgKl9fbXNnLAoJCQkJICAgIHN0cnVjdCBycGNfZXJyICpfX2Vycm9y
KSAgdGhyb3cgKCkgIDsKCn0gCgoKIyA1NCAiL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCgoj
IDEgIi91c3IvaW5jbHVkZS9ycGMvYXV0aF91bml4LmgiIDEgMwogCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoK
CiAKCgogCgoKc3RydWN0IGF1dGh1bml4X3Bhcm1zCiAgewogICAgdV9sb25nIGF1cF90aW1lOwog
ICAgY2hhciAqYXVwX21hY2huYW1lOwogICAgX191aWRfdCBhdXBfdWlkOwogICAgX19naWRfdCBh
dXBfZ2lkOwogICAgdV9pbnQgYXVwX2xlbjsKICAgIF9fZ2lkX3QgKmF1cF9naWRzOwogIH07Cgpl
eHRlcm4gYm9vbF90IHhkcl9hdXRodW5peF9wYXJtcyAgKFhEUiAqX194ZHJzLAoJCQkJICAgICAg
IHN0cnVjdCBhdXRodW5peF9wYXJtcyAqX19wKSAgdGhyb3cgKCkgIDsKCiAKCgoKCnN0cnVjdCBz
aG9ydF9oYW5kX3ZlcmYKICB7CiAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggbmV3X2NyZWQ7CiAgfTsK
Cn0gCgoKIyA1NSAiL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVk
ZS9ycGMvYXV0aF9kZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMi
IHsgCgogCmVudW0gYXV0aGRlc19uYW1la2luZAogIHsKICAgIEFETl9GVUxMTkFNRSwKICAgIEFE
Tl9OSUNLTkFNRQogIH07CgogCgpzdHJ1Y3QgYXV0aGRlc19mdWxsbmFtZQogIHsKICAgIGNoYXIg
Km5hbWU7CQkgCiAgICBkZXNfYmxvY2sga2V5OwkgCiAgICB1aW50MzJfdCB3aW5kb3c7CSAKICB9
OwoKIApzdHJ1Y3QgYXV0aGRlc19jcmVkCiAgewogICAgZW51bSBhdXRoZGVzX25hbWVraW5kIGFk
Y19uYW1la2luZDsKICAgIHN0cnVjdCBhdXRoZGVzX2Z1bGxuYW1lIGFkY19mdWxsbmFtZTsKICAg
IHVpbnQzMl90IGFkY19uaWNrbmFtZTsKICB9OwoKIApzdHJ1Y3QgcnBjX3RpbWV2YWwKICB7CiAg
ICB1aW50MzJfdCB0dl9zZWM7ICAgICAgICAgICAgIAogICAgdWludDMyX3QgdHZfdXNlYzsgICAg
ICAgICAgICAKICB9OwoKIApzdHJ1Y3QgYXV0aGRlc192ZXJmCiAgewogICAgdW5pb24KICAgICAg
ewoJc3RydWN0IHJwY190aW1ldmFsIGFkdl9jdGltZTsJIAoJZGVzX2Jsb2NrIGFkdl94dGltZTsJ
CSAKICAgICAgfQogICAgYWR2X3RpbWVfdTsKICAgIHVpbnQzMl90IGFkdl9pbnRfdTsKICB9OwoK
IAoKCgoKCgoKCiAKCgoKCgoKCgogCmV4dGVybiBpbnQgYXV0aGRlc19nZXR1Y3JlZCAgKF9fY29u
c3Qgc3RydWN0IGF1dGhkZXNfY3JlZCAqIF9fYWRjLAoJCQkJICB1aWRfdCAgKiBfX3VpZCwgZ2lk
X3QgICogX19naWQsCgkJCQkgIHNob3J0ICpfX2dyb3VwbGVuLCBnaWRfdCAgKiBfX2dyb3Vwcykg
IHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBnZXRwdWJsaWNrZXkgIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSwgY2hhciAqX19rZXkpICB0aHJvdyAoKSAgOwoKIAoKCgoKZXh0ZXJuIGludCBnZXRz
ZWNyZXRrZXkgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hhciAqX19rZXksCgkJCSAgICAgIF9f
Y29uc3QgY2hhciAqX19wYXNzd2QpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBydGltZSAgKHN0
cnVjdCBzb2NrYWRkcl9pbiAqX19hZGRycCwKCQkgICAgICAgc3RydWN0IHJwY190aW1ldmFsICpf
X3RpbWVwLAoJCSAgICAgICBzdHJ1Y3QgcnBjX3RpbWV2YWwgKl9fdGltZW91dCkgIHRocm93ICgp
ICA7Cgp9IAoKCgojIDU2ICIvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL3JwYy9zdmMuaCIgMSAzCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZW51bSB4
cHJ0X3N0YXQgewoJWFBSVF9ESUVELAoJWFBSVF9NT1JFUkVRUywKCVhQUlRfSURMRQp9OwoKIAoK
CnR5cGVkZWYgc3RydWN0IFNWQ1hQUlQgU1ZDWFBSVDsKc3RydWN0IFNWQ1hQUlQgewogIGludCB4
cF9zb2NrOwogIHVfc2hvcnQgeHBfcG9ydDsJCSAKICBjb25zdCBzdHJ1Y3QgeHBfb3BzIHsKICAg
IGJvb2xfdAkoKnhwX3JlY3YpICAoU1ZDWFBSVCAqX194cHJ0LCBzdHJ1Y3QgcnBjX21zZyAqX19t
c2cpICA7CgkJCQkgCiAgICBlbnVtIHhwcnRfc3RhdCAoKnhwX3N0YXQpICAoU1ZDWFBSVCAqX194
cHJ0KSAgOwoJCQkJIAogICAgYm9vbF90CSgqeHBfZ2V0YXJncykgIChTVkNYUFJUICpfX3hwcnQs
IHhkcnByb2NfdCBfX3hkcl9hcmdzLAoJCQkJICAgICAgY2FkZHJfdCBhcmdzX3B0cikgIDsgIAog
ICAgYm9vbF90CSgqeHBfcmVwbHkpICAoU1ZDWFBSVCAqX194cHJ0LCBzdHJ1Y3QgcnBjX21zZyAq
X19tc2cpICA7CgkJCQkgCiAgICBib29sX3QJKCp4cF9mcmVlYXJncykgIChTVkNYUFJUICpfX3hw
cnQsIHhkcnByb2NfdCBfX3hkcl9hcmdzLAoJCQkJICAgICAgIGNhZGRyX3QgYXJnc19wdHIpICA7
CgkJCQkgCiAgICB2b2lkCSgqeHBfZGVzdHJveSkgIChTVkNYUFJUICpfX3hwcnQpICA7CgkJCQkg
CiAgfSAqeHBfb3BzOwogIGludAkJeHBfYWRkcmxlbjsJICAKICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
eHBfcmFkZHI7CSAgCiAgc3RydWN0IG9wYXF1ZV9hdXRoIHhwX3ZlcmY7CSAgCiAgY2FkZHJfdAkJ
eHBfcDE7CQkgIAogIGNhZGRyX3QJCXhwX3AyOwkJICAKfTsKCiAKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKc3RydWN0IHN2Y19yZXEgewoJdV9sb25nCQly
cV9wcm9nOwkgCgl1X2xvbmcJCXJxX3ZlcnM7CSAKCXVfbG9uZwkJcnFfcHJvYzsJIAoJc3RydWN0
IG9wYXF1ZV9hdXRoIHJxX2NyZWQ7CSAKCWNhZGRyX3QJCXJxX2NsbnRjcmVkOwkgCglTVkNYUFJU
CSpycV94cHJ0OwkJIAp9OwoKCgp0eXBlZGVmIHZvaWQgKCpfX2Rpc3BhdGNoX2ZuX3QpICAoc3Ry
dWN0IHN2Y19yZXEqLCBTVkNYUFJUKikgIDsKCgogCgoKCgoKCgoKCmV4dGVybiBib29sX3QJc3Zj
X3JlZ2lzdGVyICAoU1ZDWFBSVCAqX194cHJ0LCB1X2xvbmcgX19wcm9nLAoJCQkJICAgdV9sb25n
IF9fdmVycywgX19kaXNwYXRjaF9mbl90IF9fZGlzcGF0Y2gsCgkJCQkgICB1X2xvbmcgX19wcm90
b2NvbCkgIHRocm93ICgpICA7CgogCgoKCgoKCmV4dGVybiB2b2lkCXN2Y191bnJlZ2lzdGVyICAo
dV9sb25nIF9fcHJvZywgdV9sb25nIF9fdmVycykgIHRocm93ICgpICA7CgogCgoKCgoKZXh0ZXJu
IHZvaWQJeHBydF9yZWdpc3RlciAgKFNWQ1hQUlQgKl9feHBydCkgIHRocm93ICgpICA7CgogCgoK
CgoKZXh0ZXJuIHZvaWQJeHBydF91bnJlZ2lzdGVyICAoU1ZDWFBSVCAqX194cHJ0KSAgdGhyb3cg
KCkgIDsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBib29sX3QJc3ZjX3Nl
bmRyZXBseSAgKFNWQ1hQUlQgKnhwcnQsIHhkcnByb2NfdCBfX3hkcl9yZXN1bHRzLAoJCQkJICAg
IGNhZGRyX3QgX194ZHJfbG9jYXRpb24pICB0aHJvdyAoKSAgOwoKZXh0ZXJuIHZvaWQJc3ZjZXJy
X2RlY29kZSAgKFNWQ1hQUlQgKl9feHBydCkgIHRocm93ICgpICA7CgpleHRlcm4gdm9pZAlzdmNl
cnJfd2Vha2F1dGggIChTVkNYUFJUICpfX3hwcnQpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIHZvaWQJ
c3ZjZXJyX25vcHJvYyAgKFNWQ1hQUlQgKl9feHBydCkgIHRocm93ICgpICA7CgpleHRlcm4gdm9p
ZAlzdmNlcnJfcHJvZ3ZlcnMgIChTVkNYUFJUICpfX3hwcnQsIHVfbG9uZyBfX2xvd192ZXJzLAoJ
CQkJICAgICAgdV9sb25nIF9faGlnaF92ZXJzKSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkCXN2
Y2Vycl9hdXRoICAoU1ZDWFBSVCAqX194cHJ0LCBlbnVtIGF1dGhfc3RhdCBfX3doeSkgIHRocm93
ICgpICA7CgpleHRlcm4gdm9pZAlzdmNlcnJfbm9wcm9nICAoU1ZDWFBSVCAqX194cHJ0KSAgdGhy
b3cgKCkgIDsKCmV4dGVybiB2b2lkCXN2Y2Vycl9zeXN0ZW1lcnIgIChTVkNYUFJUICpfX3hwcnQp
ICB0aHJvdyAoKSAgOwoKIAoKCgoKCgoKCgoKIAoKCgoKZXh0ZXJuIGZkX3NldCBzdmNfZmRzZXQ7
CgoKCgoKIAoKCgpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxICAoaW50IF9fcmRmZHMpICB0aHJvdyAo
KSAgOwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxc2V0ICAoZmRfc2V0ICpfX3JlYWRmZHMpICB0aHJv
dyAoKSAgOwpleHRlcm4gdm9pZCBzdmNfZXhpdCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4g
dm9pZCBzdmNfcnVuICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKCgogCgoKCiAKCgpleHRlcm4g
U1ZDWFBSVCAqc3ZjcmF3X2NyZWF0ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBT
VkNYUFJUICpzdmN1ZHBfY3JlYXRlICAoaW50IF9fc29jaykgIHRocm93ICgpICA7CmV4dGVybiBT
VkNYUFJUICpzdmN1ZHBfYnVmY3JlYXRlICAoaW50IF9fc29jaywgdV9pbnQgX19zZW5kc3osCgkJ
CQkgICAgICAgdV9pbnQgX19yZWN2c3opICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBTVkNYUFJU
ICpzdmN0Y3BfY3JlYXRlICAoaW50IF9fc29jaywgdV9pbnQgX19zZW5kc2l6ZSwKCQkJCSAgICB1
X2ludCBfX3JlY3ZzaXplKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIFNWQ1hQUlQgKnN2Y3Vu
aXhfY3JlYXRlICAoaW50IF9fc29jaywgdV9pbnQgX19zZW5kc2l6ZSwKCQkJCSAgICAgdV9pbnQg
X19yZWN2c2l6ZSwgY2hhciAqX19wYXRoKSAgdGhyb3cgKCkgIDsKCgp9IAoKCiMgNTkgIi91c3Iv
aW5jbHVkZS9ycGMvcnBjLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvcnBjL3N2Y19hdXRoLmgi
IDEgMwogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgoKCmV4dGVy
biAiQyIgeyAKCiAKCgpleHRlcm4gZW51bSBhdXRoX3N0YXQgX2F1dGhlbnRpY2F0ZSAgKHN0cnVj
dCBzdmNfcmVxICpfX3Jxc3QsCgkJCQkJICBzdHJ1Y3QgcnBjX21zZyAqX19tc2cpICB0aHJvdyAo
KSAgOwoKfSAKCgojIDYwICIvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMKCgogCgoKCgogCiMg
MSAiL3Vzci9pbmNsdWRlL3JwYy9uZXRkYi5oIiAxIDMKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoK
IAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgoj
IDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKIyA0MiAiL3Vzci9pbmNsdWRlL3JwYy9uZXRkYi5oIiAyIDMKCgpleHRlcm4g
IkMiIHsgCgpzdHJ1Y3QgcnBjZW50CnsKICBjaGFyICpyX25hbWU7CQkgCiAgY2hhciAqKnJfYWxp
YXNlczsJIAogIGludCByX251bWJlcjsJCSAKfTsKCmV4dGVybiB2b2lkIHNldHJwY2VudCAgKGlu
dCBfc3RheW9wZW4pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBlbmRycGNlbnQgICh2b2lkKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2J5bmFtZSAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2J5
bnVtYmVyICAoaW50IF9fbnVtYmVyKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVjdCBycGNlbnQg
KmdldHJwY2VudCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCmV4dGVybiBpbnQgZ2V0cnBjYnluYW1l
X3IgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwKCQkJCXN0cnVjdCBycGNlbnQgKl9fcmVzdWx0X2J1
ZiwgY2hhciAqX19idWZmZXIsCgkJCQlzaXplX3QgX19idWZsZW4sIHN0cnVjdCBycGNlbnQgKipf
X3Jlc3VsdCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IGdldHJwY2J5bnVtYmVyX3IgIChpbnQg
X19udW1iZXIsIHN0cnVjdCBycGNlbnQgKl9fcmVzdWx0X2J1ZiwKCQkJCSAgY2hhciAqX19idWZm
ZXIsIHNpemVfdCBfX2J1ZmxlbiwKCQkJCSAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSAgdGhy
b3cgKCkgIDsKCmV4dGVybiBpbnQgZ2V0cnBjZW50X3IgIChzdHJ1Y3QgcnBjZW50ICpfX3Jlc3Vs
dF9idWYsIGNoYXIgKl9fYnVmZmVyLAoJCQkgICAgIHNpemVfdCBfX2J1Zmxlbiwgc3RydWN0IHJw
Y2VudCAqKl9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCgp9IAoKCiMgNjggIi91c3IvaW5jbHVkZS9y
cGMvcnBjLmgiIDIgMwoKCgojIDE5ICIvaG9tZS94aHU2MDMxL3RzZncvSW5jbHVkZS9UU0ZXTmV0
QmFzZU9iamVjdC5ocHAiIDIKCiAgICAgICAgIAogICAgfQogICAgCiAgICAgCiAgICAKIyAxICIv
aG9tZS94aHU2MDMxL3RzZncvSW5jbHVkZS9pY2VrZXkuaHBwIiAxCiAKCgoKCgoKCgoKCmNsYXNz
IEljZVN1YmtleTsKCmNsYXNzIEljZUtleSB7CiAgICBwdWJsaWM6CglJY2VLZXkgKGludCBuKTsK
CX5JY2VLZXkgKCk7CgoJdm9pZAkJc2V0IChjb25zdCB1bnNpZ25lZCBjaGFyICprZXkpOwoKCXZv
aWQJCWVuY3J5cHQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBsYWludGV4dCwKCQkJCQl1bnNpZ25l
ZCBjaGFyICpjaXBoZXJ0ZXh0KSBjb25zdDsKCgl2b2lkCQlkZWNyeXB0IChjb25zdCB1bnNpZ25l
ZCBjaGFyICpjaXBoZXJ0ZXh0LAoJCQkJCXVuc2lnbmVkIGNoYXIgKnBsYWludGV4dCkgY29uc3Q7
CgoJaW50CQlrZXlTaXplICgpIGNvbnN0OwoKCWludAkJYmxvY2tTaXplICgpIGNvbnN0OwoKICAg
IHByaXZhdGU6Cgl2b2lkCQlzY2hlZHVsZUJ1aWxkICh1bnNpZ25lZCBzaG9ydCAqaywgaW50IG4s
CgkJCQkJCQljb25zdCBpbnQgKmtleXJvdCk7CgoJaW50CQlfc2l6ZTsKCWludAkJX3JvdW5kczsK
CUljZVN1YmtleQkqX2tleXNjaGVkOwp9OwoKCiMgMjQgIi9ob21lL3hodTYwMzEvdHNmdy9JbmNs
dWRlL1RTRldOZXRCYXNlT2JqZWN0LmhwcCIgMgoKICAgIAogICAgIAogICAgIAoKCgoKCgoKICAg
IAogICAgY2xhc3MgVFNGV05ldEJhc2VPYmplY3QgewogICAgcHVibGljOgogICAgCiAgICAgICAg
IAogICAgICAgICAKCgogICAgICAgIFRTRldOZXRCYXNlT2JqZWN0KCk7CgkKICAgICAgICAgCiAg
ICAgICAgIAoKCiAgICAgICAgflRTRldOZXRCYXNlT2JqZWN0KCk7CgogICAgICAgICAKICAgICAg
ICAgCgoKCgogICAgICAgIHZpcnR1YWwgYm9vbCByZXBseShTVkNYUFJUICphSGFuZGxlKTsKCiAg
ICAgICAgIAogICAgICAgICAKCgoKCiAgICAgICAgdmlydHVhbCBib29sIHJlY2VpdmUoU1ZDWFBS
VCAqYUhhbmRsZSk7CgogICAgICAgICAKICAgICAgICAgCgoKCgogICAgICAgIHZpcnR1YWwgdm9p
ZCByZXBseUVycm9yKFNWQ1hQUlQgKmFIYW5kbGUpOwoKICAgICAgICAgCiAgICAgICAgIAoKCgoK
CiAgICAgICAgdmlydHVhbCBib29sIGVuY29kZShYRFIgKnBYRFIpID0gMDsKCiAgICAgICAgIAog
ICAgICAgICAKCgoKCgogICAgICAgIHZpcnR1YWwgYm9vbCBkZWNvZGUoWERSICpwWERSKSA9IDA7
CgogICAgICAgCiAgICAgICAgIAogICAgICAgICAKCgoKICAgICAgICB2b2lkIHhkckNoYXIoWERS
ICpwWERSLCAgICBzaWduZWQgY2hhciAgJmFDaGFyKTsKICAgICAgICAKICAgICAgICAgCgoKICAg
ICAgICAKICAgICAgICB2b2lkIHhkclVDaGFyKFhEUiAqcFhEUiwgICB1bnNpZ25lZCBjaGFyICAm
YUNoYXIpOwogICAgICAgIAogICAgICAgICAKCgogICAgICAgCiAgICAgICAgdm9pZCB4ZHJCb29s
KFhEUiAqcFhEUiwgICAgYm9vbCAgICAgICAgICAgJmFCb29sKTsKICAgICAgICAKICAgICAgICAg
CgoKCiAgICAgICAgdm9pZCB4ZHJEb3VibGUoWERSICpwWERSLCAgZG91YmxlICAgICAgICAgJmFE
b3VibGUpOwogICAgICAgIAogICAgICAgIAogICAgICAgICAKCgoKICAgICAgICB2b2lkIHhkckZs
b2F0KFhEUiAqcFhEUiwgICBmbG9hdCAgICAgICAgICAmYUZsb2F0KTsKICAgICAgICAKICAgICAg
ICAgCgoKICAgICAgIAogICAgICAgIHZvaWQgeGRyU2hvcnQoWERSICpwWERSLCAgIHNob3J0ICAg
ICAgICAgICZhU2hvcnQpOwogICAgICAgIAogICAgICAgICAKCgogICAgICAgICAgICAgIAogICAg
ICAgIHZvaWQgeGRyVVNob3J0KFhEUiAqcFhEUiwgIHVuc2lnbmVkIHNob3J0ICZhVVMpOyAgICAg
ICAKICAgICAgICAKICAgICAgICAgCgoKICAgICAgIAogICAgICAgIHZvaWQgeGRySW50ZWdlcihY
RFIgKnBYRFIsIGludCAgICAgICAgICAgICZhSW50KTsKICAgICAgICAKICAgICAgICAKICAgICAg
ICAgCgoKICAgICAgIAogICAgICAgIHZvaWQgeGRyVUludChYRFIgKnBYRFIsICAgIHVuc2lnbmVk
IGludCAgICZhVUludCk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgIAoKCiAgICAgICAKICAg
ICAgICB2b2lkIHhkckxvbmcoWERSICpwWERSLCAgICBsb25nICAgICAgICAgICAmYUxvbmcpOwog
ICAgICAgIAogICAgICAgIAogICAgICAgICAKCgogICAgICAgCiAgICAgICAgdm9pZCB4ZHJVTG9u
ZyhYRFIgKnBYRFIsICAgdW5zaWduZWQgbG9uZyAgJmFVTCk7CiAgICAgICAgCiAgICAgICAgCiAg
ICAgICAgIAoKCiAgICAgICAKICAgICAgICB2b2lkIHhkclZvaWQoWERSICpwWERSKTsKICAgICAg
ICAKICAgICAgICAgCgoKICAgICAgIAogICAgICAgIHZvaWQgeGRySVN0cmluZyhYRFIgKnBYRFIs
IElTdHJpbmcgICAgICAgICZhU3RyaW5nKTsKICAgICAgICAKICAgICAgICAgCgoKICAgICAgIAog
ICAgICAgIHZvaWQgeGRySURhdGUoWERSICpwWERSLCAgIElEYXRlICAgICAgICAgICZhRGF0ZSk7
CiAgICAgICAgCiAgICAgICAgIAoKCiAgICAgICAKICAgICAgICB2b2lkIHhkcklUaW1lKFhEUiAq
cFhEUiwgICBJVGltZSAgICAgICAgICAmYVRpbWUpOwogICAgICAgIAogICAgICAgICAKCgogICAg
ICAgCiAgICAgICAgdm9pZCB4ZHJCeXRlcyhYRFIgKnBYRFIsICAgY2hhciAqKnBwY2hCdWZmZXIs
IHVuc2lnbmVkIGludCAmcGlMZW4pOwoKICAgICAgICAgCgoKCiAgICAgICAKICAgICAgICBJU3Ry
aW5nIGRlY3J5cHQoY29uc3QgY2hhciAqYUNpcGhlcnRleHQpIGNvbnN0OwoKICAgICAgICAgCgoK
CiAgICAgICAKICAgICAgICBJU3RyaW5nIGVuY3J5cHQoY29uc3QgY2hhciogcHN6UGxhaW50ZXh0
KSBjb25zdDsKCiAgICBwcml2YXRlOiAgICAKCiAgICAgICAgIAogICAgICAgICAKCgoKCgogICAg
ICAgIHN0YXRpYyBJUHJpdmF0ZVJlc291cmNlKiBnZXRSUENSZXNvdXJjZSgpOwogICAgICAgIAog
ICAgICAgICAKICAgICAgICBzdGF0aWMgSVByaXZhdGVSZXNvdXJjZSogcnBjUmVzb3VyY2U7CiAg
ICAgICAgCgoKICAgICAgIAogICAgfTsKICAgIAogICAgIAogICAgY2xhc3MgVFNGV05ldEV4Y2Vw
dGlvbiA6IHB1YmxpYyBJRXhjZXB0aW9uIHsKICAgIHB1YmxpYzoKCiAgICAgICAgIAogICAgICAg
IFRTRldOZXRFeGNlcHRpb24oY29uc3QgWERSICphU3RyZWFtLCBjb25zdCBjaGFyICphRnVuY3Rp
b25OYW1lKTsKCiAgICAgICAgIAogICAgICAgIH5UU0ZXTmV0RXhjZXB0aW9uKCk7CgogICAgICAg
ICAKICAgICAgICBjb25zdCBjaGFyICpuYW1lKHZvaWQpIGNvbnN0OwoKICAgIH07CiAgICAKCgog
CiAKIAogCiAKIyAyMSAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0RhdGFTZXQuaHBw
IiAyCgogICAgCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV1JlYWRXcml0ZUxv
Y2suaHBwIiAxCiAKIAogCiAKIAoKCiAgICAKCiAgICAgCiAgICAKICAgICAgICAKICAgIAoKICAg
ICAKICAgIAoKICAgICAKICAgIAogICAgCiAgICAKCiAgICAgCiAgICBjbGFzcyBUU0ZXUmVhZFdy
aXRlTG9jayB7CiAgICBwdWJsaWM6CiAgICAKICAgICAgICAgCgoKICAgICAgICB+VFNGV1JlYWRX
cml0ZUxvY2soKTsKCiAgICAgICAgIAoKCiAgICAgICAgc3RhdGljIFRTRldSZWFkV3JpdGVMb2Nr
ICpnZXRJbnN0YW5jZShjb25zdCB2b2lkICphTG9ja2VkUmVzb3VyY2UpOwogICAgICAgIAogICAg
ICAgICAKCgogICAgICAgIHZvaWQgcmVsZWFzZUluc3RhbmNlKHZvaWQpOwogICAgICAgIAogICAg
ICAgICAKCgogICAgICAgIHZvaWQgbG9ja0ZvclJlYWQodm9pZCk7CgogICAgICAgICAKCgogICAg
ICAgIHZvaWQgbG9ja0ZvcldyaXRlKHZvaWQpOwoKICAgICAgICAgCgoKICAgICAgICB2b2lkIHJl
bG9ja0ZvcldyaXRlKHZvaWQpOwoKICAgICAgICAgCgoKICAgICAgICB2b2lkIHVubG9jayh2b2lk
KTsKCiAgICAgICAgIAoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBjb25zdCAma2V5KHZvaWQpIGNv
bnN0IHsKCiAgICAgICAgICAgIHJldHVybih0aGlzLT50aGVMb2NrZWRSZXNvdXJjZSk7CiAgICAg
ICAgfQogICAgICAgIAogICAgcHJpdmF0ZToKCiAgICAgICAgIAoKCiAgICAgICAgVFNGV1JlYWRX
cml0ZUxvY2sodW5zaWduZWQgbG9uZyBhTG9ja2VkUmVzb3VyY2UgPSAwKTsKCiAgICAgICAgIAog
ICAgICAgIAoKCiAgICAgICAgICAgIHB0aHJlYWRfcndsb2NrX3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZUxvY2s7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgdW5zaWduZWQg
bG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUxvY2tlZFJlc291
cmNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGVSZWZDb3VudGVyOwoKICAgICAgICAgCiAgICAgICAgc3RhdGljIElQcml2YXRl
UmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZVBvb2xSZXNvdXJjZTsKICAg
ICAgICBzdGF0aWMgSUtleVNldDxUU0ZXUmVhZFdyaXRlTG9jayAqLCB1bnNpZ25lZCBsb25nPiAg
dGhlUG9vbDsKICAgICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlSW5pdGlhbFBvb2xTaXplOwogICAgfTsKCiAgICBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBjb25zdCAma2V5KFRTRldSZWFkV3JpdGVMb2NrIGNvbnN0ICphRWxlbWVudCkgewoK
ICAgICAgICByZXR1cm4oYUVsZW1lbnQtPmtleSgpKTsKICAgIH0KCiAgICBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBjb25zdCAma2V5KFRTRldSZWFkV3JpdGVMb2NrIGNvbnN0ICZhRWxlbWVudCkgewoK
ICAgICAgICByZXR1cm4oYUVsZW1lbnQua2V5KCkpOwogICAgfQoKCgoKIAogCiAKIAogCiMgMjIg
Ii9ob21lL3hodTYwMzEvdHNmdy9JbmNsdWRlL1RTRldEYXRhU2V0LmhwcCIgMgoKICAgIAojIDEg
Ii9ob21lL3hodTYwMzEvdHNmdy9JbmNsdWRlL1RTRldCeXRlQXJyYXkuaHBwIiAxCiAKIAogCiAK
IAoKICAgIAoKICAgICAKICAgIAoKICAgICAKICAgICAKCgoKCgoKCgogICAgY2xhc3MgVFNGV0J5
dGVBcnJheSB7CiAgICBwdWJsaWM6CgogICAgICAgICAKICAgICAgICBUU0ZXQnl0ZUFycmF5KCk7
CiAgICAgICAgVFNGV0J5dGVBcnJheShjb25zdCBJU3RyaW5nICZhU3RyaW5nKTsKICAgICAgICBU
U0ZXQnl0ZUFycmF5KGNvbnN0IGNoYXIgKmFTdHJpbmcpOwogICAgICAgIFRTRldCeXRlQXJyYXko
Y29uc3Qgdm9pZCAqYUJ1ZmZlciwgdW5zaWduZWQgYUxlbik7CgogICAgICAgICAKICAgICAgICBU
U0ZXQnl0ZUFycmF5IG9wZXJhdG9yICsoY29uc3QgVFNGV0J5dGVBcnJheSAmYVJlZikgICAgY29u
c3Q7CiAgICAgICAgVFNGV0J5dGVBcnJheSBvcGVyYXRvciArKGNvbnN0IGNoYXIgICAgICAgICAg
KmFTdHJpbmcpIGNvbnN0OwogICAgICAgIFRTRldCeXRlQXJyYXkgb3BlcmF0b3IgKyhjb25zdCBJ
U3RyaW5nICAgICAgICZhU3RyaW5nKSBjb25zdDsKCiAgICAgICAgIAogICAgICAgIFRTRldCeXRl
QXJyYXkgJm9wZXJhdG9yICs9KGNvbnN0IFRTRldCeXRlQXJyYXkgJmFTdHJpbmcpOwogICAgICAg
IFRTRldCeXRlQXJyYXkgJm9wZXJhdG9yICs9KGNvbnN0IElTdHJpbmcmIGFTdHJpbmcpOwogICAg
ICAgIFRTRldCeXRlQXJyYXkgJm9wZXJhdG9yICs9KGNvbnN0IGNoYXIqIGFTdHJpbmcpOwoKICAg
ICAgICAgCiAgICAgICAgVFNGV0J5dGVBcnJheSAmIG9wZXJhdG9yPShjb25zdCBUU0ZXQnl0ZUFy
cmF5ICZhUmVmKTsKICAgICAgICBUU0ZXQnl0ZUFycmF5ICYgb3BlcmF0b3I9KGNvbnN0IElTdHJp
bmcgICAgICAgJmFTdHJpbmcpOwogICAgICAgIFRTRldCeXRlQXJyYXkgJiBvcGVyYXRvcj0oY29u
c3QgY2hhciAgICAgICAgICAqYVN0cmluZyk7CgogICAgICAgICAKICAgICAgICBvcGVyYXRvciBJ
U3RyaW5nKCkgICAgICAgICBjb25zdCB7IHJldHVybih0aGlzLT50aGVCeXRlQXJyYXkpOyAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICBvcGVyYXRvciBJU3RyaW5nJigpICAgICAgICAgICAgICB7
IHJldHVybih0aGlzLT50aGVCeXRlQXJyYXkpOyAgICAgICAgICAgICAgICAgIH0KICAgICAgICBv
cGVyYXRvciBjaGFyICooKSAgICAgICAgICBjb25zdCB7IHJldHVybigoY2hhciAqKXRoaXMtPnRo
ZUJ5dGVBcnJheSk7ICAgICAgICAgIH0KICAgICAgICBvcGVyYXRvciBzaWduZWQgY2hhciAqKCkg
ICBjb25zdCB7IHJldHVybigoc2lnbmVkIGNoYXIgKil0aGlzLT50aGVCeXRlQXJyYXkpOyAgIH0K
ICAgICAgICBvcGVyYXRvciB1bnNpZ25lZCBjaGFyICooKSBjb25zdCB7IHJldHVybigodW5zaWdu
ZWQgY2hhciAqKXRoaXMtPnRoZUJ5dGVBcnJheSk7IH0KCiAgICAgICAgIAogICAgICAgIHVuc2ln
bmVkIGxlbmd0aCh2b2lkKSBjb25zdDsKICAgICAgICB1bnNpZ25lZCBzaXplKHZvaWQpICAgY29u
c3Q7CgogICAgcHJpdmF0ZToKCiAgICAgICAgIAogICAgICAgIElTdHJpbmcgICAgICAgICAgICAg
ICAgICAgdGhlQnl0ZUFycmF5OwoKICAgIH07CgoKCiAKIAogCiAKIAojIDIzICIvaG9tZS94aHU2
MDMxL3RzZncvSW5jbHVkZS9UU0ZXRGF0YVNldC5ocHAiIDIKCgogICAgIAogICAgY2xhc3MgVFNG
V0RhdGFDb250YWluZXI7CiAgICBjbGFzcyBUU0ZXRGF0YUFycmF5OwogICAgY2xhc3MgVFNGV0Rh
dGFJdGVtOwoKICAgICAKICAgICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgIGNsYXNzIFRT
RldEYXRhSXRlbSA6IHB1YmxpYyBUU0ZXTmV0QmFzZU9iamVjdCB7CiAgICBwdWJsaWM6CgogICAg
ICAgICAKCgogICAgICAgIGVudW0gRGF0YVR5cGUgewogICAgICAgICAgICB1bmtub3duRGF0YVR5
cGUgICAgICAgPSAwLAogICAgICAgICAgICBzaWduZWRDaGFyLAogICAgICAgICAgICB1bnNpZ25l
ZENoYXIsCiAgICAgICAgICAgIHNpZ25lZFNob3J0LAogICAgICAgICAgICB1bnNpZ25lZFNob3J0
LAogICAgICAgICAgICBzaWduZWRJbnRlZ2VyLAogICAgICAgICAgICB1bnNpZ25lZEludGVnZXIs
CiAgICAgICAgICAgIHNpZ25lZExvbmcsCiAgICAgICAgICAgIHVuc2lnbmVkTG9uZywKICAgICAg
ICAgICAgc2luZ2xlRmxvYXQsCiAgICAgICAgICAgIGRvdWJsZUZsb2F0LAogICAgICAgICAgICBz
dHJpbmcsCiAgICAgICAgICAgIGRhdGUsCiAgICAgICAgICAgIHRpbWUsCiAgICAgICAgICAgIGNv
bXBvdW5kLAogICAgICAgICAgICBhcnJheSwKICAgICAgICAgICAgYm9vbGVhbiwKICAgICAgICAg
ICAgYnl0ZUFycmF5CiAgICAgICAgfTsKCiAgICAgICAgIAoKCiAgICAgICAgZW51bSBBY2Nlc3NN
b2RlIHsKICAgICAgICAgICAgcHVibGljQWNjZXNzID0gMCwKICAgICAgICAgICAgcHJpdmF0ZUFj
Y2VzcwogICAgICAgIH07CgogICAgICAgICAKCgogICAgICAgIGVudW0gUmVhZFdyaXRlTW9kZSB7
CiAgICAgICAgICAgIHJlYWRPbmx5ID0gMCwKICAgICAgICAgICAgd3JpdGVhYmxlCiAgICAgICAg
fTsKCiAgICAgICAgIAoKCgoKCgoKCgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbShjb25zdCBJ
U3RyaW5nICZhTmFtZSA9ICIiLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIEFjY2Vz
c01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0gcmVhZE9ubHkp
OwoKICAgICAgICAgCgoKCgoKCgoKCgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbShjb25zdCBl
bnVtIERhdGFUeXBlICZhVHlwZSwgICAgY29uc3QgSVN0cmluZyAmYU5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVudW0gQWNjZXNzTW9kZSAgICAmYUFjY2VzTW9kZSAgICAgPSBwdWJs
aWNBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0gUmVhZFdyaXRlTW9kZSAm
YVJlYWRXcml0ZU1vZGUgPSByZWFkT25seSk7CgogICAgICAgICAKCgoKCgoKCgoKCgoKCgoKICAg
ICAgICBUU0ZXRGF0YUl0ZW0oY29uc3QgY2hhciAmYUNoYXIsICAgICAgICAgICAgIGNvbnN0IElT
dHJpbmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIEFjY2Vzc01vZGUg
ICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0gcmVhZE9ubHkpOwoKICAg
ICAgICAgCgoKCgoKCgoKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVtKGNvbnN0IHVuc2lnbmVk
IGNoYXIgJmFDaGFyLCAgICBjb25zdCBJU3RyaW5nICZhTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZW51bSBBY2Nlc3NNb2RlICAgICZhQWNjZXNNb2RlICAgICA9IHB1YmxpY0FjY2Vz
cywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBSZWFkV3JpdGVNb2RlICZhUmVhZFdy
aXRlTW9kZSA9IHJlYWRPbmx5KTsKCiAgICAgICAgIAoKCgoKCgoKCgoKCgoKCgogICAgICAgIFRT
RldEYXRhSXRlbShjb25zdCBzaG9ydCAmYVNob3J0LCAgICAgICAgICAgY29uc3QgSVN0cmluZyAm
YU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0gQWNjZXNzTW9kZSAgICAmYUFj
Y2VzTW9kZSAgICAgPSBwdWJsaWNBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVu
dW0gUmVhZFdyaXRlTW9kZSAmYVJlYWRXcml0ZU1vZGUgPSByZWFkT25seSk7CgogICAgICAgICAK
CgoKCgoKCgoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0oY29uc3QgdW5zaWduZWQgc2hvcnQg
JmFTaG9ydCwgIGNvbnN0IElTdHJpbmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBlbnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2Rl
ID0gcmVhZE9ubHkpOwoKICAgICAgICAgCgoKCgoKCgoKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJ
dGVtKGNvbnN0IGludCAmYUludGVnZXIsICAgICAgICAgICBjb25zdCBJU3RyaW5nICZhTmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBBY2Nlc3NNb2RlICAgICZhQWNjZXNNb2Rl
ICAgICA9IHB1YmxpY0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBSZWFk
V3JpdGVNb2RlICZhUmVhZFdyaXRlTW9kZSA9IHJlYWRPbmx5KTsKCiAgICAgICAgIAoKCgoKCgoK
CgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbShjb25zdCB1bnNpZ25lZCBpbnQgJmFJbnRlZ2Vy
LCAgY29uc3QgSVN0cmluZyAmYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0g
QWNjZXNzTW9kZSAgICAmYUFjY2VzTW9kZSAgICAgPSBwdWJsaWNBY2Nlc3MsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVudW0gUmVhZFdyaXRlTW9kZSAmYVJlYWRXcml0ZU1vZGUgPSByZWFk
T25seSk7CgogICAgICAgICAKCgoKCgoKCgoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0oY29u
c3QgbG9uZyAmYUxvbmcsICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFOYW1lLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlbnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0g
cHVibGljQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1v
ZGUgJmFSZWFkV3JpdGVNb2RlID0gcmVhZE9ubHkpOwoKICAgICAgICAgCgoKCgoKCgoKCgoKCgoK
CiAgICAgICAgVFNGV0RhdGFJdGVtKGNvbnN0IHVuc2lnbmVkIGxvbmcgJmFMb25nLCAgICBjb25z
dCBJU3RyaW5nICZhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBBY2Nlc3NN
b2RlICAgICZhQWNjZXNNb2RlICAgICA9IHB1YmxpY0FjY2VzcywKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZW51bSBSZWFkV3JpdGVNb2RlICZhUmVhZFdyaXRlTW9kZSA9IHJlYWRPbmx5KTsK
CiAgICAgICAgIAoKCgoKCgoKCgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbShjb25zdCBJU3Ry
aW5nICZhU3RyaW5nLCAgICAgICAgY29uc3QgSVN0cmluZyAmYU5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVudW0gQWNjZXNzTW9kZSAgICAmYUFjY2VzTW9kZSAgICAgPSBwdWJsaWNB
Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0gUmVhZFdyaXRlTW9kZSAmYVJl
YWRXcml0ZU1vZGUgPSByZWFkT25seSk7CgogICAgICAgICAKCgoKCgoKCgoKCgoKCgoKICAgICAg
ICBUU0ZXRGF0YUl0ZW0oY29uc3QgSURhdGUgJmFEYXRlLCAgICAgICAgICAgIGNvbnN0IElTdHJp
bmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIEFjY2Vzc01vZGUgICAg
JmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0gcmVhZE9ubHkpOwoKICAgICAg
ICAgCgoKCgoKCgoKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVtKGNvbnN0IElUaW1lICZhVGlt
ZSwgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZhTmFtZSwKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZW51bSBBY2Nlc3NNb2RlICAgICZhQWNjZXNNb2RlICAgICA9IHB1YmxpY0FjY2VzcywK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBSZWFkV3JpdGVNb2RlICZhUmVhZFdyaXRl
TW9kZSA9IHJlYWRPbmx5KTsKCiAgICAgICAgIAoKCgoKCgoKCgoKCgoKCgogICAgICAgIFRTRldE
YXRhSXRlbShjb25zdCBUU0ZXRGF0YUNvbnRhaW5lciAmYUNuciwgY29uc3QgSVN0cmluZyAmYU5h
bWUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0gQWNjZXNzTW9kZSAgICAmYUFjY2Vz
TW9kZSAgICAgPSBwdWJsaWNBY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0g
UmVhZFdyaXRlTW9kZSAmYVJlYWRXcml0ZU1vZGUgPSByZWFkT25seSk7CgogICAgICAgICAKCgoK
CgoKCgoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0oY29uc3QgVFNGV0RhdGFBcnJheSAmYUFy
cmF5LCAgIGNvbnN0IElTdHJpbmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBl
bnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0g
cmVhZE9ubHkpOwoKICAgICAgICAgCgoKCgoKCgoKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVt
KGJvb2wgYUJvb2xlYW4sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFOYW1l
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01v
ZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIFJl
YWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0gcmVhZE9ubHkpOwoKICAgICAgICAgCgoKCgoK
CgoKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVtKGNvbnN0IGNoYXIgKmFTdHJpbmcsCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlbnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNz
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3Jp
dGVNb2RlID0gcmVhZE9ubHkpOwoKICAgICAgICAgCgoKCgoKCgoKCgoKCgoKCiAgICAgICAgVFNG
V0RhdGFJdGVtKGNvbnN0IFRTRldCeXRlQXJyYXkgJmFCeXRlQXJyYXksCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IElTdHJpbmcgJmFOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBl
bnVtIEFjY2Vzc01vZGUgICAgJmFBY2Nlc01vZGUgICAgID0gcHVibGljQWNjZXNzLAogICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlbnVtIFJlYWRXcml0ZU1vZGUgJmFSZWFkV3JpdGVNb2RlID0g
cmVhZE9ubHkpOwoKICAgICAgICAgCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0oY29uc3QgVFNGV0Rh
dGFJdGVtICZhUmVmZXJlbmNlKTsKCiAgICAgICAgIAoKCiAgICAgICAgflRTRldEYXRhSXRlbSgp
OwoKICAgICAgICAgCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShjb25zdCBU
U0ZXRGF0YUl0ZW0gJmFJdGVtKTsKCiAgICAgICAgIAoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVt
ICZvcGVyYXRvcj0oY29uc3QgY2hhciAmYUNoYXIpOwoKICAgICAgICAgCgoKCgoKICAgICAgICBU
U0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShjb25zdCB1bnNpZ25lZCBjaGFyICZhQ2hhcik7CgogICAg
ICAgICAKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3I9KGNvbnN0IHNob3J0ICZh
U2hvcnQpOwoKICAgICAgICAgCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShj
b25zdCB1bnNpZ25lZCBzaG9ydCAmYVNob3J0KTsKCiAgICAgICAgIAoKCgoKCiAgICAgICAgVFNG
V0RhdGFJdGVtICZvcGVyYXRvcj0oY29uc3QgaW50ICZhSW50ZWdlcik7CgogICAgICAgICAKCgoK
CgogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3I9KGNvbnN0IHVuc2lnbmVkIGludCAmYUlu
dGVnZXIpOwoKICAgICAgICAgCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShj
b25zdCBsb25nICZhTG9uZyk7CgogICAgICAgICAKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAm
b3BlcmF0b3I9KGNvbnN0IHVuc2lnbmVkIGxvbmcgJmFMb25nKTsKCiAgICAgICAgIAoKCgoKCiAg
ICAgICAgVFNGV0RhdGFJdGVtICZvcGVyYXRvcj0oY29uc3QgZmxvYXQgJmFGbG9hdCk7CgogICAg
ICAgICAKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3I9KGNvbnN0IGRvdWJsZSAm
YURvdWJsZSk7CgogICAgICAgICAKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3I9
KGNvbnN0IElTdHJpbmcgJmFTdHJpbmcpOwoKICAgICAgICAgCgoKCgoKICAgICAgICBUU0ZXRGF0
YUl0ZW0gJm9wZXJhdG9yPShjb25zdCBJRGF0ZSAmYURhdGUpOwoKICAgICAgICAgCgoKCgoKICAg
ICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShjb25zdCBJVGltZSAmYVRpbWUpOwoKICAgICAg
ICAgCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShjb25zdCBUU0ZXRGF0YUNv
bnRhaW5lciAmYUNucik7CgogICAgICAgICAKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmb3Bl
cmF0b3I9KGNvbnN0IFRTRldEYXRhQXJyYXkgJmFBcnJheSk7CgogICAgICAgICAKCgoKCgogICAg
ICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3I9KGJvb2wgYUJvb2wpOwoKICAgICAgICAgCgoKCgoK
ICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yPShjb25zdCBjaGFyICphU3RyaW5nKTsKCiAg
ICAgICAgIAoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVtICZvcGVyYXRvcj0oY29uc3QgVFNGV0J5
dGVBcnJheSAmYUJ5dGVBcnJheSk7CgogICAgICAgICAKCgoKCiAgICAgICAgb3BlcmF0b3IgY2hh
cigpICAgICAgICAgICBjb25zdCB7IHJldHVybih0aGlzLT5hc0NoYXIoKSk7ICAgICAgfQoKICAg
ICAgICAgCgoKCgogICAgICAgIG9wZXJhdG9yIHVuc2lnbmVkIGNoYXIoKSAgY29uc3QgeyByZXR1
cm4odGhpcy0+YXNVQ2hhcigpKTsgICAgIH0KCiAgICAgICAgIAoKCgoKICAgICAgICBvcGVyYXRv
ciBzaG9ydCgpICAgICAgICAgIGNvbnN0IHsgcmV0dXJuKHRoaXMtPmFzU2hvcnQoKSk7ICAgICB9
CgogICAgICAgICAKCgoKCiAgICAgICAgb3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKSBjb25zdCB7
IHJldHVybih0aGlzLT5hc1VTaG9ydCgpKTsgICAgfQoKICAgICAgICAgCgoKCgogICAgICAgIG9w
ZXJhdG9yIGludCgpICAgICAgICAgICAgY29uc3QgeyByZXR1cm4odGhpcy0+YXNJbnQoKSk7ICAg
ICAgIH0KCiAgICAgICAgIAoKCgoKICAgICAgICBvcGVyYXRvciB1bnNpZ25lZCBpbnQoKSAgIGNv
bnN0IHsgcmV0dXJuKHRoaXMtPmFzVUludCgpKTsgICAgICB9CgogICAgICAgICAKCgoKCiAgICAg
ICAgb3BlcmF0b3IgbG9uZygpICAgICAgICAgICBjb25zdCB7IHJldHVybih0aGlzLT5hc0xvbmco
KSk7ICAgICAgfQoKICAgICAgICAgCgoKCgogICAgICAgIG9wZXJhdG9yIHVuc2lnbmVkIGxvbmco
KSAgY29uc3QgeyByZXR1cm4odGhpcy0+YXNVTG9uZygpKTsgICAgIH0KCiAgICAgICAgIAoKCgoK
ICAgICAgICBvcGVyYXRvciBmbG9hdCgpICAgICAgICAgIGNvbnN0IHsgcmV0dXJuKHRoaXMtPmFz
RmxvYXQoKSk7ICAgICB9CgogICAgICAgICAKCgoKCiAgICAgICAgb3BlcmF0b3IgZG91YmxlKCkg
ICAgICAgICBjb25zdCB7IHJldHVybih0aGlzLT5hc0RvdWJsZSgpKTsgICAgfQoKICAgICAgICAg
CgoKCgogICAgICAgIG9wZXJhdG9yIElTdHJpbmcoKSAgICAgICAgY29uc3QgeyByZXR1cm4odGhp
cy0+YXNTdHJpbmcoKSk7ICAgIH0KCiAgICAgICAgIAoKCgoKICAgICAgICBvcGVyYXRvciBJRGF0
ZSgpICAgICAgICAgIGNvbnN0IHsgcmV0dXJuKHRoaXMtPmFzRGF0ZSgpKTsgICAgICB9CgogICAg
ICAgICAKCgoKCiAgICAgICAgb3BlcmF0b3IgSVRpbWUoKSAgICAgICAgICBjb25zdCB7IHJldHVy
bih0aGlzLT5hc1RpbWUoKSk7ICAgICAgfQogICAgICAgIAogICAgICAgICAKCgoKCiAgICAgICAg
b3BlcmF0b3IgVFNGV0J5dGVBcnJheSgpICBjb25zdCB7IHJldHVybih0aGlzLT5hc0J5dGVBcnJh
eSgpKTsgfQogICAgICAgIAoKICAgICAgICAgCgoKCgoKCgoKCgoKCiAgICAgICAgY2hhciAgICAg
ICAgICAgICAgIGFzQ2hhcih2b2lkKSAgICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoK
CiAgICAgICAgdW5zaWduZWQgY2hhciAgICAgIGFzVUNoYXIodm9pZCkgICAgICBjb25zdDsKCiAg
ICAgICAgIAoKCgoKCgoKCgoKCiAgICAgICAgc2hvcnQgICAgICAgICAgICAgIGFzU2hvcnQodm9p
ZCkgICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgc2hv
cnQgICAgIGFzVVNob3J0KHZvaWQpICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAg
ICAgICAgaW50ICAgICAgICAgICAgICAgIGFzSW50KHZvaWQpICAgICAgICBjb25zdDsKCiAgICAg
ICAgIAoKCgoKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50ICAgICAgIGFzVUludCh2b2lkKSAg
ICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAgICAgICAgbG9uZyAgICAgICAgICAg
ICAgIGFzTG9uZyh2b2lkKSAgICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyAgICAgIGFzVUxvbmcodm9pZCkgICAgICBjb25zdDsKCiAgICAgICAg
IAoKCgoKCgoKCgoKCiAgICAgICAgZmxvYXQgICAgICAgICAgICAgIGFzRmxvYXQodm9pZCkgICAg
ICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAgICAgICAgZG91YmxlICAgICAgICAgICAg
IGFzRG91YmxlKHZvaWQpICAgICBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKICAgICAgICBJU3Ry
aW5nICAgICAgICAgICAgYXNTdHJpbmcodm9pZCkgICAgIGNvbnN0OwoJCQoJCSAKCgoKCgoKCgoK
ICAgICAgICBJU3RyaW5nICAgICAgICAgICAgYXNTdHJpbmcoY29uc3QgSVN0cmluZyAmYUZvcm1h
dCkgICAgIGNvbnN0OwoKCiAgICAgICAgIAoKCgoKCgoKICAgICAgICBJRGF0ZSAgICAgICAgICAg
ICAgYXNEYXRlKHZvaWQpICAgICAgIGNvbnN0OwoKICAgICAgICAgCgoKCgoKCgogICAgICAgIElU
aW1lICAgICAgICAgICAgICBhc1RpbWUodm9pZCkgICAgICAgY29uc3Q7CgogICAgICAgICAKCgoK
CgoKCiAgICAgICAgVFNGV0RhdGFDb250YWluZXIgICphc0NvbnRhaW5lcih2b2lkKSBjb25zdDsK
CiAgICAgICAgIAoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUFycmF5ICAgICAgKmFzQXJyYXkodm9p
ZCkgICAgIGNvbnN0OwoKICAgICAgICAgCgoKCgoKCgogICAgICAgIGJvb2wgICAgICAgICAgICAg
ICAgYXNCb29sZWFuKHZvaWQpICAgICBjb25zdDsKICAgICAgICAKICAgICAgICAgCgoKCgoKCgog
ICAgICAgIFRTRldCeXRlQXJyYXkgICAgICAgIGFzQnl0ZUFycmF5KHZvaWQpICAgY29uc3Q7CiAg
ICAgICAgCgogICAgICAgICAKCgoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9y
W10oY29uc3QgSVN0cmluZyAmYUtleSk7CgogICAgICAgICAKCgoKCgoKCiAgICAgICAgVFNGV0Rh
dGFJdGVtICZvcGVyYXRvcltdKGNvbnN0IElTdHJpbmcgJmFLZXkpIGNvbnN0OwoKICAgICAgICAg
CgoKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yW10oY29uc3QgY2hhciAgICAq
YUtleSk7CgogICAgICAgICAKCgoKCgoKCiAgICAgICAgVFNGV0RhdGFJdGVtICZvcGVyYXRvcltd
KGNvbnN0IGNoYXIgICAgKmFLZXkpIGNvbnN0OwoKICAgICAgICAgCgoKCgoKCgoKICAgICAgICBU
U0ZXRGF0YUl0ZW0gJm9wZXJhdG9yW10odW5zaWduZWQgbG9uZyBhSW5kZXgpOwoKICAgICAgICAg
CgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3JbXSh1bnNpZ25lZCBsb25nIGFJ
bmRleCkgY29uc3Q7CgogICAgICAgICAKCgoKCiAgICAgICAgZW51bSBEYXRhVHlwZSBkYXRhVHlw
ZSh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCgoKICAgICAgICBzdGF0aWMgSVN0cmluZyBkYXRh
VHlwZUFzU3RyaW5nKGNvbnN0IGVudW0gVFNGV0RhdGFJdGVtOjpEYXRhVHlwZSAmYVR5cGUpOwoK
ICAgICAgICAgCgoKCgogICAgICAgIElTdHJpbmcgZGF0YVR5cGVBc1N0cmluZyh2b2lkKSBjb25z
dDsKCiAgICAgICAgIAoKCiAgICAgICAgYm9vbCBpc1B1YmxpYyh2b2lkKTsKCiAgICAgICAgIAoK
CiAgICAgICAgYm9vbCBpc1ByaXZhdGUodm9pZCk7CgogICAgICAgICAKCgogICAgICAgIGJvb2wg
aXNSZWFkT25seSh2b2lkKTsKCiAgICAgICAgIAoKCiAgICAgICAgYm9vbCBpc1dyaXRlYWJsZSh2
b2lkKTsKCiAgICAgICAgIAoKCgoKCgoKICAgICAgICBJQ3Vyc29yICpuZXdDdXJzb3Iodm9pZCkg
Y29uc3Q7CgoKICAgICAgICAgCgoKCgoKCgogICAgICAgIFRTRldEYXRhSXRlbSAmZWxlbWVudEF0
KElDdXJzb3IgKmFDdXJzb3IpIGNvbnN0OwoKICAgICAgICAgCgoKCgoKCgogICAgICAgIGJvb2wg
Y29udGFpbnNFbGVtZW50V2l0aEtleShjb25zdCBJU3RyaW5nICZhS2V5KSBjb25zdDsKCiAgICAg
ICAgIAoKCgoKCgogICAgICAgIElTdHJpbmcgY29uc3QgJmtleSh2b2lkKSBjb25zdCB7CgogICAg
ICAgICAgICByZXR1cm4odGhpcy0+dGhlTmFtZSk7CiAgICAgICAgfQoKICAgICAgICAgCgoKCgog
ICAgICAgIElTdHJpbmcgbmFtZSh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCiAgICAgICAgdm9p
ZCBzZXROYW1lKGNvbnN0IElTdHJpbmcgJmFOYW1lKTsKCiAgICAgICAgIAoKCgoKCgogICAgICAg
IGJvb2wgZW5jb2RlKFhEUiAqYVhEUlN0cmVhbSk7CgogICAgICAgICAKCgoKCgoKICAgICAgICBi
b29sIGRlY29kZShYRFIgKmFYRFJTdHJlYW0pOwoKICAgICAgICAgCgoKCgoKICAgICAgICBJU3Ry
aW5nIGFzRGVidWdTdHJpbmcodm9pZCk7CgogICAgICAgICAKCgogICAgICAgIFRTRldEYXRhSXRl
bSBzZWN1cmVDb3B5KHZvaWQpIGNvbnN0OwoJCQoJCWJvb2wgd3JpdGUob3N0cmVhbSAmYVN0cmVh
bSwgaW50IGFJbmRlbnQgPSAwKSBjb25zdDsKIAoKICAgIHByaXZhdGU6CgogICAgICAgICAKCgoK
CgoKICAgICAgICB2b2lkIGRlbGV0ZU1lbWJlcnModm9pZCk7CgogICAgICAgICAKCgogICAgICAg
IHZvaWQgY2xvbmVGcm9tKGNvbnN0IFRTRldEYXRhSXRlbSAmYUl0ZW0pOwoKCiAgICAgICAgIAog
ICAgICAgIGVudW0gQWNjZXNzTW9kZSAgICAgICAgICAgdGhlQWNjZXNzTW9kZTsKCiAgICAgICAg
IAogICAgICAgIGVudW0gUmVhZFdyaXRlTW9kZSAgICAgICAgdGhlUmVhZFdyaXRlTW9kZTsKCgog
ICAgICAgICAKICAgICAgICBJU3RyaW5nICAgICAgICAgICAgICAgICAgIHRoZU5hbWU7CiAgICAg
ICAgZW51bSBEYXRhVHlwZSAgICAgICAgICAgICB0aGVEYXRhVHlwZTsKICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICB0aGVCb29sVmFsdWU7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgc2lnbmVkIGNoYXIgICAgICAgICAgIHRoZUNoYXJWYWx1ZTsKICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciAgICAgICAgIHRoZVVDaGFyVmFsdWU7CiAgICAgICAgICAgIHNob3J0ICAgICAgICAg
ICAgICAgICB0aGVTaG9ydFZhbHVlOwogICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAgICAgICAg
dGhlVVNob3J0VmFsdWU7CiAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICB0aGVJbnRW
YWx1ZTsKICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgIHRoZVVJbnRWYWx1ZTsKICAg
ICAgICAgICAgbG9uZyAgICAgICAgICAgICAgICAgIHRoZUxvbmdWYWx1ZTsKICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyAgICAgICAgIHRoZVVMb25nVmFsdWU7CiAgICAgICAgICAgIGZsb2F0ICAg
ICAgICAgICAgICAgICB0aGVGbG9hdFZhbHVlOwogICAgICAgICAgICBkb3VibGUgICAgICAgICAg
ICAgICAgdGhlRG91YmxlVmFsdWU7CiAgICAgICAgICAgIElTdHJpbmcgICAgICAgICAgICAgICAq
dGhlU3RyaW5nVmFsdWU7CiAgICAgICAgICAgIElEYXRlICAgICAgICAgICAgICAgICAqdGhlRGF0
ZVZhbHVlOwogICAgICAgICAgICBJVGltZSAgICAgICAgICAgICAgICAgKnRoZVRpbWVWYWx1ZTsK
ICAgICAgICAgICAgVFNGV0RhdGFDb250YWluZXIgICAgICp0aGVDb250YWluZXJWYWx1ZTsKICAg
ICAgICAgICAgVFNGV0RhdGFBcnJheSAgICAgICAgICp0aGVBcnJheVZhbHVlOwogICAgICAgICAg
ICBUU0ZXQnl0ZUFycmF5ICAgICAgICAgKnRoZUJ5dGVBcnJheVZhbHVlOyAgICAgCiAgICAgICAg
fSB0aGVEYXRhQXJlYTsKICAgIH07CgogICAgIAogICAgaW5saW5lIElTdHJpbmcgY29uc3QgJmtl
eShUU0ZXRGF0YUl0ZW0gY29uc3QgJmFFbGVtZW50KSB7CgogICAgICAgIHJldHVybihhRWxlbWVu
dC5rZXkoKSk7CiAgICB9CgogICAgaW5saW5lIElTdHJpbmcgY29uc3QgJmtleShUU0ZXRGF0YUl0
ZW0gY29uc3QgKmFFbGVtZW50KSB7CgogICAgICAgIHJldHVybihhRWxlbWVudC0+a2V5KCkpOwog
ICAgfQoKICAgICAKICAgICAKCgoKCgoKCiAgICBjbGFzcyBUU0ZXRGF0YUNvbnRhaW5lciA6IHB1
YmxpYyBUU0ZXTmV0QmFzZU9iamVjdCB7CiAgICBwdWJsaWM6CgogICAgICAgICAKCgogICAgICAg
IFRTRldEYXRhQ29udGFpbmVyKCk7CgogICAgICAgICAKCgogICAgICAgIFRTRldEYXRhQ29udGFp
bmVyKGNvbnN0IFRTRldEYXRhQ29udGFpbmVyICZhUmVmZXJlbmNlKTsKCiAgICAgICAgIAoKCiAg
ICAgICAgdmlydHVhbCB+VFNGV0RhdGFDb250YWluZXIoKTsKCiAgICAgICAgIAoKCgoKCgoKCgoK
CgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yW10oY29uc3QgSVN0cmluZyAmYUtl
eSk7CiAgICAgICAgVFNGV0RhdGFJdGVtICZvcGVyYXRvcltdKGNvbnN0IElTdHJpbmcgJmFLZXkp
IGNvbnN0OwogICAgICAgIFRTRldEYXRhSXRlbSAmb3BlcmF0b3JbXShjb25zdCBjaGFyICAgICph
S2V5KTsKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yW10oY29uc3QgY2hhciAgICAqYUtl
eSkgY29uc3Q7CgogICAgICAgICAKCgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZF
bGVtZW50cyh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCgoKCgoKCgogICAgICAg
IElDdXJzb3IgKm5ld0N1cnNvcih2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCgoKICAgICAgICBU
U0ZXRGF0YUl0ZW0gJmVsZW1lbnRBdChJQ3Vyc29yICphQ3Vyc29yKSBjb25zdDsKCiAgICAgICAg
IAoKCgoKCiAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgSVN0cmluZyAmYUtleSk7CgogICAgICAg
ICAKCgoKCgogICAgICAgIGJvb2wgaXNWYWxpZChjb25zdCBJU3RyaW5nICZhS2V5KSBjb25zdDsK
CiAgICAgICAgIAoKCiAgICAgICAgYm9vbCBpc1ByaXZhdGUoY29uc3QgSVN0cmluZyAmYUtleSkg
Y29uc3Q7CgogICAgICAgICAKCgogICAgICAgIGJvb2wgaXNQdWJsaWMoY29uc3QgSVN0cmluZyAm
YUtleSkgY29uc3Q7CgogICAgICAgICAKCgoKCgoKICAgICAgICBib29sIGVuY29kZShYRFIgKmFY
RFJTdHJlYW0pOwoKICAgICAgICAgCgoKCgoKCiAgICAgICAgYm9vbCBkZWNvZGUoWERSICphWERS
U3RyZWFtKTsKCiAgICAgICAgIAoKCgoKCgogICAgICAgIElTdHJpbmcgYXNEZWJ1Z1N0cmluZyh2
b2lkKTsKCiAgICAgICAgIAoKCiAgICAgICAgVFNGV0RhdGFJdGVtIHNlY3VyZUNvcHkodm9pZCkg
Y29uc3Q7CgkJCgkJYm9vbCB3cml0ZShvc3RyZWFtICZhU3RyZWFtLCBpbnQgYUluZGVudCA9IDAp
IGNvbnN0OwogCgoJIAkgCgoKCgkJYm9vbCByZWFkRmlsZShjb25zdCBJU3RyaW5nICZhS2V5LCBj
b25zdCBJU3RyaW5nICZhRmlsZW5hbWUpOwoKICAgIHByaXZhdGU6CgogICAgICAgICAKICAgICAg
ICBJS2V5U2V0PFRTRldEYXRhSXRlbSAqLCBJU3RyaW5nPiAgICAgdGhlQ29udGFpbmVyOwogICAg
fTsKCiAgICAgCiAgICBjbGFzcyBUU0ZXRGF0YUFycmF5SXRlbSA6IHB1YmxpYyBUU0ZXTmV0QmFz
ZU9iamVjdCB7CiAgICBwdWJsaWM6CgogICAgICAgICAKICAgICAgICBUU0ZXRGF0YUFycmF5SXRl
bSgpOwogICAgICAgIFRTRldEYXRhQXJyYXlJdGVtKHVuc2lnbmVkIGxvbmcgYUluZGV4LCBUU0ZX
RGF0YUl0ZW0gKmFJdGVtKTsKCiAgICAgICAgIAogICAgICAgIH5UU0ZXRGF0YUFycmF5SXRlbSgp
OwoKICAgICAgICAgCiAgICAgICAgVFNGV0RhdGFBcnJheUl0ZW0oY29uc3QgVFNGV0RhdGFBcnJh
eUl0ZW0gJmFSZWZlcmVuY2UpOwoKICAgICAgICAgCiAgICAgICAgdW5zaWduZWQgbG9uZyBjb25z
dCAma2V5KHZvaWQpIGNvbnN0IHsKCiAgICAgICAgICAgIHJldHVybih0aGlzLT50aGVJbmRleCk7
CiAgICAgICAgfQoKICAgICAgICAgCiAgICAgICAgVFNGV0RhdGFJdGVtICZpdGVtKHZvaWQpIGNv
bnN0OwoKICAgICAgICAgCiAgICAgICAgVFNGV0RhdGFBcnJheUl0ZW0gJm9wZXJhdG9yPShjb25z
dCBUU0ZXRGF0YUl0ZW0gJmFJdGVtKTsKICAgICAgICBUU0ZXRGF0YUFycmF5SXRlbSAmb3BlcmF0
b3I9KFRTRldEYXRhSXRlbSAqYUl0ZW0pOwogICAgICAgIFRTRldEYXRhQXJyYXlJdGVtICZvcGVy
YXRvcj0oY29uc3QgVFNGV0RhdGFBcnJheUl0ZW0gJmFJdGVtKTsKCiAgICAgICAgYm9vbCBlbmNv
ZGUoWERSICphWERSU3RyZWFtKTsKICAgICAgICBib29sIGRlY29kZShYRFIgKmFYRFJTdHJlYW0p
OwoJCQoJCWJvb2wgd3JpdGUob3N0cmVhbSAmYVN0cmVhbSwgaW50IGFJbmRlbnQgPSAwKSBjb25z
dDsKIAoKICAgIHByaXZhdGU6CgogICAgICAgICAKICAgICAgICB1bnNpZ25lZCBsb25nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoZUluZGV4OwogICAgICAgIFRTRldEYXRhSXRlbSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnRoZUl0ZW07CiAgICB9OwoKICAgICAKICAgIGlubGlu
ZSB1bnNpZ25lZCBsb25nIGNvbnN0ICZrZXkoVFNGV0RhdGFBcnJheUl0ZW0gY29uc3QgJmFFbGVt
ZW50KSB7CgogICAgICAgIHJldHVybihhRWxlbWVudC5rZXkoKSk7CiAgICB9CgogICAgaW5saW5l
IHVuc2lnbmVkIGxvbmcgY29uc3QgJmtleShUU0ZXRGF0YUFycmF5SXRlbSBjb25zdCAqYUVsZW1l
bnQpIHsKCiAgICAgICAgcmV0dXJuKGFFbGVtZW50LT5rZXkoKSk7CiAgICB9CgoKICAgICAKICAg
ICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgIGNsYXNzIFRTRldEYXRhQXJyYXkgOiBwdWJsaWMg
VFNGV05ldEJhc2VPYmplY3QgewogICAgcHVibGljOgoKICAgICAgICAgCgoKICAgICAgICBUU0ZX
RGF0YUFycmF5KCk7CgogICAgICAgICAKCgogICAgICAgIFRTRldEYXRhQXJyYXkoY29uc3QgVFNG
V0RhdGFBcnJheSAmYVJlZmVyZW5jZSk7CgogICAgICAgICAKCgogICAgICAgIH5UU0ZXRGF0YUFy
cmF5KCk7CgogICAgICAgICAKCgoKCgoKICAgICAgICBUU0ZXRGF0YUl0ZW0gJm9wZXJhdG9yW10o
dW5zaWduZWQgbG9uZyBhSW5kZXgpOwoKICAgICAgICAgCgoKCgoKCgogICAgICAgIFRTRldEYXRh
SXRlbSAmb3BlcmF0b3JbXSh1bnNpZ25lZCBsb25nIGFJbmRleCkgY29uc3Q7CgogICAgICAgICAK
CgoKCgoKCgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZFbGVtZW50cyh2b2lkKSBj
b25zdDsKCiAgICAgICAgIAoKCgoKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZlZhbGlkRWxlbWVudHModm9pZCkgY29uc3Q7CgogICAgICAgICAKCgoKCiAgICAgICAgdm9pZCBy
ZW1vdmUodW5zaWduZWQgbG9uZyBhSW5kZXgpOwoJCQoJCSAKCgoKCiAgICAgICAgdm9pZCByZW1v
dmVBbGwoKTsKCiAgICAgICAgIAoKCiAgICAgICAgYm9vbCBpc1ZhbGlkKHVuc2lnbmVkIGxvbmcg
YUluZGV4KSBjb25zdDsKCiAgICAgICAgIAoKCgoKCgoKICAgICAgICBib29sIGVuY29kZShYRFIg
KmFYRFJTdHJlYW0pOwoKICAgICAgICAgCgoKCgoKCgogICAgICAgIGJvb2wgZGVjb2RlKFhEUiAq
YVhEUlN0cmVhbSk7CgogICAgICAgICAKICAgICAgICBJU3RyaW5nIGFzRGVidWdTdHJpbmcodm9p
ZCk7CgogICAgICAgICAKCgogICAgICAgIFRTRldEYXRhSXRlbSBzZWN1cmVDb3B5KHZvaWQpIGNv
bnN0OwoJCQoJCWJvb2wgd3JpdGUob3N0cmVhbSAmYVN0cmVhbSwgaW50IGFJbmRlbnQgPSAwKSBj
b25zdDsKIAoKICAgIHByaXZhdGU6CgogICAgICAgICAKCgogICAgICAgIHZvaWQgcmVjYWxjTWF4
SW5kZXgodm9pZCk7CgogICAgICAgICAKICAgICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlTWF4SW5kZXg7CiAgICAgICAgSUtleVNldDxUU0ZXRGF0
YUFycmF5SXRlbSAqLCB1bnNpZ25lZCBsb25nPiAgIHRoZUFycmF5OwogICAgfTsKCiAgICAgCiAg
ICBjbGFzcyBUU0ZXQ2xpZW50UmVxdWVzdCA6IHB1YmxpYyBUU0ZXTmV0QmFzZU9iamVjdCB7CiAg
ICBwdWJsaWM6CgogICAgICAgICAKICAgICAgICBUU0ZXQ2xpZW50UmVxdWVzdChjb25zdCBJU3Ry
aW5nICZhTmFtZSwgVFNGV0RhdGFDb250YWluZXIgKmFDb250YWluZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYUNhbGxlckFkZHIgPSAiIik7CgogICAgICAgICAK
ICAgICAgICB+VFNGV0NsaWVudFJlcXVlc3QoKTsKCiAgICAgICAgIAogICAgICAgIGJvb2wgZW5j
b2RlKFhEUiAqYVhEUlN0cmVhbSk7CiAgICAgICAgYm9vbCBkZWNvZGUoWERSICphWERSU3RyZWFt
KTsKCiAgICAgICAgIAogICAgICAgIGNvbnN0IElTdHJpbmcgJnNlcnZpY2VOYW1lKHZvaWQpIGNv
bnN0OwoKICAgICAgICAgCiAgICAgICAgY29uc3QgSVN0cmluZyAmY2FsbGVyQWRkcih2b2lkKSBj
b25zdDsKCiAgICAgICAgIAogICAgICAgIFRTRldEYXRhQ29udGFpbmVyKiBkYXRhQ29udGFpbmVy
KHZvaWQpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZU1ham9yTnVtYmVyOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVNaW5vck51bWJlcjsKICAg
ICAgICBJU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlU2Vy
dmljZU5hbWU7CiAgICAgICAgSVN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZUNhbGxlckFkZHI7CiAgICAgICAgVFNGV0RhdGFDb250YWluZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICp0aGVEYXRhQ29udGFpbmVyOwogICAgfTsKCiAgICAgCiAgICBj
bGFzcyBUU0ZXUHJvcGVydHlTZXQgOiBwdWJsaWMgVFNGV0RhdGFDb250YWluZXIgewogICAgcHVi
bGljOgoKICAgICAgICAgCiAgICAgICAgVFNGV1Byb3BlcnR5U2V0KGNvbnN0IElTdHJpbmcgJmFS
ZWdpc3RyeUZpbGUpOwoKICAgICAgICAgCiAgICAgICAgflRTRldQcm9wZXJ0eVNldCgpOwoKICAg
ICAgICAgSVN0cmluZyBnZXRGaWxlbmFtZSgpOwoJCSAKCQkgYm9vbCB3cml0ZShvc3RyZWFtICZh
U3RyZWFtLCBpbnQgYUluZGVudCA9IDApIGNvbnN0OwogCgogICAgcHJpdmF0ZToKCiAgICAgICAg
IAogICAgICAgIHZvaWQgcmVhZEZpbGUodm9pZCk7CiAgICAgICAgdm9pZCB3cml0ZUZpbGUodm9p
ZCk7CiAgICAgICAgYm9vbCBjaGVja0ZvckF0dHJpYnV0ZShJU3RyaW5nICZhTGluZSwgY29uc3Qg
Y2hhciAqYUF0dHJpYk5hbWUpOwogICAgICAgIElTdHJpbmcgdHJ5VG9FeHBhbmQoY29uc3QgSVN0
cmluZyAmYVNvdXJjZSkgY29uc3Q7CgkJdm9pZCBwYXJzZUFycmF5KGNvbnN0IElTdHJpbmcgJmFT
b3VyY2UsIFRTRldEYXRhQXJyYXkgJmFEYXRhQXJyYXkpOwoKCiAgICAgICAgIAogICAgICAgIElT
dHJpbmcgICAgICAgICAgdGhlRmlsZU5hbWU7CiAgICB9OwoKICAgICAKICAgIGNsYXNzIFRTRldC
YWRDb252ZXJ0aW9uRXhjZXB0aW9uIDogcHVibGljIElFeGNlcHRpb24gewogICAgcHVibGljOgoK
ICAgICAgICAgCiAgICAgICAgVFNGV0JhZENvbnZlcnRpb25FeGNlcHRpb24oY29uc3QgZW51bSBU
U0ZXRGF0YUl0ZW06OkRhdGFUeXBlICZhU291cmNlVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlbnVtIFRTRldEYXRhSXRlbTo6RGF0YVR5cGUgJmFEZXN0VHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nICZhSXRl
bU5hbWUpOwoKICAgICAgICAgCiAgICAgICAgflRTRldCYWRDb252ZXJ0aW9uRXhjZXB0aW9uKCk7
CgogICAgICAgICAKICAgICAgICBjb25zdCBjaGFyICpuYW1lKHZvaWQpIGNvbnN0OwogICAgfTsK
CiAgICAgCiAgICBjbGFzcyBUU0ZXUHJlY2lzaW9uTG9zdEV4Y2VwdGlvbiA6IHB1YmxpYyBJRXhj
ZXB0aW9uIHsKICAgIHB1YmxpYzoKCiAgICAgICAgIAogICAgICAgIFRTRldQcmVjaXNpb25Mb3N0
RXhjZXB0aW9uKGNvbnN0IGVudW0gVFNGV0RhdGFJdGVtOjpEYXRhVHlwZSAmYVNvdXJjZVR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBUU0ZXRGF0YUl0
ZW06OkRhdGFUeXBlICZhRGVzdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSVN0cmluZyAmYUl0ZW1OYW1lKTsKCiAgICAgICAgIAogICAgICAgIH5UU0ZXUHJl
Y2lzaW9uTG9zdEV4Y2VwdGlvbigpOwoKICAgICAgICAgCiAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSh2b2lkKSBjb25zdDsKICAgIH07CgogICAgIAogICAgY2xhc3MgVFNGV1Byb3BlcnR5U2V0RXhj
ZXB0aW9uIDogcHVibGljIElFeGNlcHRpb24gewogICAgcHVibGljOgoKICAgICAgICAgCiAgICAg
ICAgVFNGV1Byb3BlcnR5U2V0RXhjZXB0aW9uKGNvbnN0IElTdHJpbmcgJmFFcnJvclRleHQpOwoK
ICAgICAgICAgCiAgICAgICAgflRTRldQcm9wZXJ0eVNldEV4Y2VwdGlvbigpOwoKICAgICAgICAg
CiAgICAgICAgY29uc3QgY2hhciAqbmFtZSh2b2lkKSBjb25zdDsKICAgIH07CgogICAgIAogICAg
Y2xhc3MgVFNGV1ByaXZhdGVBY2Nlc3NFeGNlcHRpb24gOiBwdWJsaWMgSUV4Y2VwdGlvbiB7CiAg
ICBwdWJsaWM6CgogICAgICAgICAKICAgICAgICBUU0ZXUHJpdmF0ZUFjY2Vzc0V4Y2VwdGlvbihj
b25zdCBJU3RyaW5nICZhUHJvcGVydHlOYW1lKTsKCiAgICAgICAgIAogICAgICAgIH5UU0ZXUHJp
dmF0ZUFjY2Vzc0V4Y2VwdGlvbigpOwoKICAgICAgICAgCiAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSh2b2lkKSBjb25zdDsKICAgIH07CgogICAgIAogICAgY2xhc3MgVFNGV1JlYWRPbmx5RXhjZXB0
aW9uIDogcHVibGljIElFeGNlcHRpb24gewogICAgcHVibGljOgoKICAgICAgICAgCiAgICAgICAg
VFNGV1JlYWRPbmx5RXhjZXB0aW9uKGNvbnN0IElTdHJpbmcgJmFQcm9wZXJ0eU5hbWUpOwoKICAg
ICAgICAgCiAgICAgICAgflRTRldSZWFkT25seUV4Y2VwdGlvbigpOwoKICAgICAgICAgCiAgICAg
ICAgY29uc3QgY2hhciAqbmFtZSh2b2lkKSBjb25zdDsKICAgIH07CgoKCgogCiAKIAogCiAKIyAx
NiAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0Vycm9yLmhwcCIgMgoKCmNsYXNzIFRT
RldFcnJvcgp7CglwdWJsaWM6CgkJVFNGV0Vycm9yKCkge30KCQlUU0ZXRXJyb3IoCWludCBhRXJy
b3JDb2RlLCAKCQkJCQljb25zdCBJU3RyaW5nICZhTWVzc2FnZSwgCgkJCQkJY29uc3QgSVN0cmlu
ZyAmYUluZm9UZXh0KSAKCQkJOiBtRXJyb3JDb2RlKGFFcnJvckNvZGUpLCBtTWVzc2FnZShhTWVz
c2FnZSksIG1JbmZvVGV4dChhSW5mb1RleHQpIHt9CgkJflRTRldFcnJvcigpIHt9CgoJCWludCBj
b25zdCYJCWtleSgpIGNvbnN0IAl7IHJldHVybiBtRXJyb3JDb2RlOwl9CgkJCQkJCgkJaW50CQkJ
CWdldENvZGUoKSAJCXsgcmV0dXJuIG1FcnJvckNvZGU7CX0KCQljb25zdCBJU3RyaW5nICYJZ2V0
TWVzc2FnZSgpCXsgcmV0dXJuIG1NZXNzYWdlOwkJfQoJCWNvbnN0IElTdHJpbmcgJglnZXRJbmZv
VGV4dCgpCXsgcmV0dXJuIG1JbmZvVGV4dDsJCX0KCQkKCQlJU3RyaW5nIAkJYXNTdHJpbmcoKQkJ
eyByZXR1cm4gSVN0cmluZyhtRXJyb3JDb2RlKSArICI6IiArIG1NZXNzYWdlOyB9CgoJcHJpdmF0
ZToKCQkKCQlpbnQJCW1FcnJvckNvZGU7CgkJSVN0cmluZwltTWVzc2FnZTsKCQlJU3RyaW5nCW1J
bmZvVGV4dDsKfTsKCmNsYXNzIFRTRldFcnJvclNldCA6IHByb3RlY3RlZCBJS2V5U2V0PFRTRldF
cnJvciwgaW50PiAKewoJcHVibGljOgoJCVRTRldFcnJvclNldCgpOwoJCX5UU0ZXRXJyb3JTZXQo
KTsKCQkKCQl2b2lkIAkJCWFkZEVycm9yKGNvbnN0IFRTRldFcnJvciAmYUVycm9yKTsKCQl2b2lk
CQkJc2V0RXJyb3IoaW50IGFFcnJvckNvZGUsIFRTRldEYXRhQ29udGFpbmVyICZhQ29udGFpbmVy
KTsKCQkKCQlJU3RyaW5nCQkJYXNTdHJpbmcoaW50IGFFcnJvckNvZGUpOwoJCUlTdHJpbmcJCQlh
c1N0cmluZygpOwp9OwoKCiMgMTMgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1
ZXVlLmNwcCIgMgoKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvUkJHQ29ib2xUcmFu
c2NvZGVyLmhwcCIgMQogCiAKIAogCiAKCgogICAgCgogICAgIAogICAgCiAgICAKICAgIAogICAg
CiAgICAKCQoKICAgICAKICAgIGNsYXNzIFJCR0NvYm9sVHJhbnNjb2RlciB7CiAgICBwdWJsaWM6
CgogICAgICAgICAKCgogICAgICAgIGVudW0gQ29ib2xOdW1iZXJUeXBlIHsKICAgICAgICAgICAg
dW5wYWNrZWQgPSAwLAogICAgICAgICAgICBjb21wM05vRnJhYywKICAgICAgICAgICAgY29tcDNG
cmFjMiwKICAgICAgICAgICAgbm9uZQogICAgICAgIH07CgogICAgICAgICAKCgogICAgICAgIHN0
YXRpYyBSQkdDb2JvbFRyYW5zY29kZXIgKmdldEluc3RhbmNlKHZvaWQpOwoKICAgICAgICAgCgoK
ICAgICAgICB+UkJHQ29ib2xUcmFuc2NvZGVyKCk7CgogICAgICAgICAKCgogICAgICAgIElTdHJp
bmcgY29udmVydFRvRUJDRElDKGNvbnN0IElTdHJpbmcgJmFTdHJpbmcpOwoKICAgICAgICAgCgoK
ICAgICAgICBJU3RyaW5nIGNvbnZlcnRGcm9tRUJDRElDKGNvbnN0IElTdHJpbmcgJmFTdHJpbmcp
OwoJCQoJCSAKCgogICAgICAgIHZvaWQgY29udmVydFRvRUJDRElDKGNoYXIgKmFCdWZmZXIsIHVu
c2lnbmVkIGxvbmcgYUJ1ZmZlckxlbmd0aCk7CgogICAgICAgICAKCgogICAgICAgIHZvaWQgY29u
dmVydEZyb21FQkNESUMoY2hhciAqYUJ1ZmZlciwgdW5zaWduZWQgbG9uZyBhQnVmZmVyTGVuZ3Ro
KTsKCQkKICAgICAgICAgCgoKICAgICAgICBJU3RyaW5nIHRvQ29ib2xOdW1iZXIoY29uc3QgbG9u
ZyAmYU51bWJlciwgY29uc3QgdW5zaWduZWQgbG9uZyBhRGlnaXRDb3VudGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnVtIENvYm9sTnVtYmVyVHlwZSAmYVR5cGUpOwoK
ICAgICAgICAgCgoKICAgICAgICBJU3RyaW5nIHRvVW5wYWNrZWRDb2JvbE51bWJlcihjb25zdCBs
b25nICZhTnVtYmVyLCBjb25zdCB1bnNpZ25lZCBsb25nIGFEaWdpdENvdW50ZXIpOwoKICAgICAg
ICAgCgoKICAgICAgICBsb25nIGZyb21Db2JvbE51bWJlcihjb25zdCBJU3RyaW5nICZhQ29ib2xO
dW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW51bSBDb2JvbE51bWJl
clR5cGUgJmFUeXBlKTsKCiAgICAgICAgIAoKCiAgICAgICAgbG9uZyBmcm9tVW5wYWNrZWRDb2Jv
bE51bWJlcihjb25zdCBJU3RyaW5nICZhQ29ib2xOdW1iZXIpOwoKICAgICAgICAgCgoKICAgICAg
ICBsb25nIGZyb21QYWNrZWRDb2JvbE51bWJlcihjb25zdCBJU3RyaW5nICZhQ29ib2xOdW1iZXIs
IGNvbnN0IGVudW0gQ29ib2xOdW1iZXJUeXBlICZhVHlwZSk7CgkJCgkJSURhdGUgZnJvbVBhY2tl
ZENvYm9sTnVtYmVyKGNvbnN0IElTdHJpbmcgJmFDb2JvbE51bWJlcik7CgogICAgcHJpdmF0ZToK
CiAgICAgICAgIAoKCiAgICAgICAgUkJHQ29ib2xUcmFuc2NvZGVyKCk7CgogICAgICAgICAKCgog
ICAgICAgIHN0YXRpYyBSQkdDb2JvbFRyYW5zY29kZXIgICAgICAgICAgICp0aGVJbnN0YW5jZTsK
ICAgIH07CiAgICAKICAgIGJvb2wgQ05WX1BhYzNUb0FzYyggY29uc3QgdW5zaWduZWQgbG9uZyB1
bExlblBhYywgY29uc3QgdW5zaWduZWQgY2hhciBhdWNEYXRhUGFjW10sCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgdWxEaWdpdHMsIGNvbnN0IHVuc2lnbmVkIGxv
bmcgdWxMZW5Bc2MsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYXVjRGF0
YUFzY1tdKTsKICAgIAoKCgogCiAKIAogCiAKIyAxNSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRz
ZXJ2aWNlL21xcXVldWUuY3BwIiAyCgojIDEgIi9ob21lL3hodTYwMzEvdHNmdy9JbmNsdWRlL1RT
RldMb2dGYWNpbGl0eS5ocHAiIDEKIAogCiAKIAogCgogICAgCgogICAgIAogICAgCiAgICAKCiAg
ICAgCiAgICAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2lhcHAuaHBwIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJl
ZC5iaW4vaW5jbHVkZS9pbmdhcHAuaHBwIiAxCiMgMTAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGlu
dXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaW5nYXBwLmhwcCIKCgoKCgogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKCiAKCiAKI3ByYWdtYSBpbmZv
KG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQoj
cHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKCgogCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhf
X0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoK
IAogCgogCmNsYXNzIElDdXJyZW50Tm9uR1VJQXBwbGljYXRpb247CmNsYXNzIElDdXJyZW50Tm9u
R1VJQXBwbGljYXRpb25EYXRhOwpjbGFzcyBJU3RyaW5nOwpjbGFzcyBJVGV4dDsKIAoKIAoKY2xh
c3MgICBJTm9uR1VJQXBwbGljYXRpb24KewpwdWJsaWM6CiAKICAgIHZpcnR1YWwgSVN0cmluZyBh
c1N0cmluZygpIGNvbnN0OwogICAgdmlydHVhbCBJU3RyaW5nIGFzRGVidWdJbmZvKCkgY29uc3Q7
CgogCiAgICBzdGF0aWMgSVByb2Nlc3NJZCBjdXJyZW50UElEKCk7CiAgICB2aXJ0dWFsIElQcm9j
ZXNzSWQgaWQoKSBjb25zdDsKICAgIHN0YXRpYyBJQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uJiBj
dXJyZW50KCk7CgogCiAgICBlbnVtIEVQcm9jZXNzUHJpb3JpdHkKICAgIHsKICAgICAgICBiZWxv
d05vcm1hbCwKICAgICAgICBub3JtYWwsCiAgICAgICAgYWJvdmVOb3JtYWwKICAgIH07CgogICAg
dmlydHVhbCBJTm9uR1VJQXBwbGljYXRpb24mIHNldFByb2Nlc3NQcmlvcml0eShjb25zdCBFUHJv
Y2Vzc1ByaW9yaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld1ByaW8pOwoKIAoKCgoKICAgIGVudW0gUHJpb3JpdHlDbGFzcwogICAgewogICAg
ICAgIG5vQ2hhbmdlLAogICAgICAgIGlkbGVUaW1lLAogICAgICAgIHJlZ3VsYXIsCiAgICAgICAg
dGltZUNyaXRpY2FsLAogICAgICAgIGZvcmVncm91bmRTZXJ2ZXIKICAgIH07CgojIDEzMiAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pbmdhcHAuaHBw
IgoKCnByb3RlY3RlZDoKIAogICAgSU5vbkdVSUFwcGxpY2F0aW9uKGNvbnN0IElQcm9jZXNzSWQm
IGlkKTsKICAgIHZpcnR1YWwgfklOb25HVUlBcHBsaWNhdGlvbigpOwoKIAogICAgdmlydHVhbCBJ
Tm9uR1VJQXBwbGljYXRpb24mIHNldElkKGNvbnN0IElQcm9jZXNzSWQmIGlkKTsKCnByaXZhdGU6
CiAKICAgIHN0YXRpYyBJQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uKiBwQ3VycmVudDsKICAgIElQ
cm9jZXNzSWQgcGlkOwp9OyAgCgoKY2xhc3MgICBJQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uIDog
cHVibGljIElOb25HVUlBcHBsaWNhdGlvbgp7CiAgICB0eXBlZGVmIElOb25HVUlBcHBsaWNhdGlv
biBJbmhlcml0ZWQ7CnB1YmxpYzoKIAogICAgdmlydHVhbCBpbnQgYXJnYygpIGNvbnN0OwogICAg
dmlydHVhbCBJU3RyaW5nIGFyZ3YoaW50IGFyZ3VtZW50TnVtYmVyKSBjb25zdDsKICAgIHZpcnR1
YWwgSVRleHQgYXJndlcoaW50IGFyZ3VtZW50TnVtYmVyKSBjb25zdDsKICAgIHZpcnR1YWwgSUN1
cnJlbnROb25HVUlBcHBsaWNhdGlvbiAmc2V0QXJncyhpbnQgYXJnYywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBhcmd2W10p
OwogICAgdmlydHVhbCBJQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uICZzZXRBcmdzVyhpbnQgYXJn
YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW9jOjp1bmljaGFyX3QqIGNvbnN0IGFyZ3ZbXSk7CgogCiAgICB2aXJ0dWFsIElDdXJyZW50Tm9u
R1VJQXBwbGljYXRpb24mIGV4aXQoKTsKCiAKICAgIHZpcnR1YWwgSVN0cmluZyBhc0RlYnVnSW5m
bygpIGNvbnN0OwoKcHJvdGVjdGVkOgogCiAgICBJQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uKCk7
CiAgICB2aXJ0dWFsIH5JQ3VycmVudE5vbkdVSUFwcGxpY2F0aW9uKCk7CgogCgoKCgpwcml2YXRl
OgogCiAgICBmcmllbmQgY2xhc3MgSU5vbkdVSUFwcGxpY2F0aW9uOwogICAgaW50IGFyZ0NvdW50
OwogICAgSVRleHQqIGFyZ1ZhbHVlOwogICAgSUN1cnJlbnROb25HVUlBcHBsaWNhdGlvbiAmc2V0
QXJnc1VuaUNoYXIoaW50IGFyZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBVbmlDaGFyKiBjb25zdCBhcmd2W10pOwoKCgogICAgSUN1cnJlbnRO
b25HVUlBcHBsaWNhdGlvbkRhdGEgKnBDdXJyZW50QXBwbGljYXRpb25EYXRhOwp9OwoKIAoKIAoK
CgoKCgoKI3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgog
CgogCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pbmdhcHAuaW5sIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIApp
bmxpbmUKSUN1cnJlbnROb25HVUlBcHBsaWNhdGlvbiYKSUN1cnJlbnROb25HVUlBcHBsaWNhdGlv
bjo6c2V0QXJnc1coaW50IGFyZ2MsIGNvbnN0IGlvYzo6dW5pY2hhcl90KiBjb25zdCBhcmd2W10p
CnsKICAgIHJldHVybiBzZXRBcmdzVW5pQ2hhcihhcmdjLCAoY29uc3QgVW5pQ2hhciogY29uc3Qg
Kilhcmd2KTsKfQogCgoKIyAyMTIgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaW5nYXBwLmhwcCIgMgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3By
YWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAzMCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYXBwLmhwcCIgMgoK
IyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2lo
YW5kbGUuaHBwIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAK
CiAKCiMgMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pc3RyZWFtLmhwcCIgMQojIDU2ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lzdHJlYW0uaHBwIgoKCgoKCiMgMzkgIi9ob21lL2Frbm9sbC9pb2Nz
cmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWhhbmRsZS5ocHAiIDIKCgojIDEgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaTJkZ2hhbmQu
aHBwIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiAKCiAKIAoKIAoj
cHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2ZWwsIF9fSU9DX0hFQURFUl9SRVBP
UlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgogCgpzdHJ1Y3QgX1dpZGdldFJlYzsK
CiAKCiAKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKF9fSU9DX05BTUVNQU5HTElOR19TQ0hFTUUpCgoK
CgoKI3ByYWdtYSBlbnVtKDQpCgoKCgoKCgogCgogCiAKCiAKCgoKCgoKCgoKCgpjbGFzcyBJWERD
Owp0eXBlZGVmIF9XaWRnZXRSZWMqIElOYXRpdmVXaW5kb3dIYW5kbGU7CgogCgogCgpjbGFzcyBJ
UG9pbnRlckhhbmRsZSB7CnB1YmxpYzoKIAoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFZhbHVlOwoK
CgoKCgoKCiAKICBJUG9pbnRlckhhbmRsZSAoIFZhbHVlIHZhbHVlPTAgKTsKICBJUG9pbnRlckhh
bmRsZSAoIGNvbnN0IElQb2ludGVySGFuZGxlJiBhSGFuZGxlICk7CiB+SVBvaW50ZXJIYW5kbGUg
KCApOwoKSVBvaW50ZXJIYW5kbGUKICZvcGVyYXRvciA9ICAgICAoIGNvbnN0IElQb2ludGVySGFu
ZGxlJiBhSGFuZGxlICk7CgoKIAoKSVN0cmluZwogIGFzU3RyaW5nICAgICggKSBjb25zdCwKICBh
c0RlYnVnSW5mbyAoICkgY29uc3Q7Cgp1bnNpZ25lZCBsb25nCiAgYXNVbnNpZ25lZCAgKCApIGNv
bnN0OwoKIAogIG9wZXJhdG9yIFZhbHVlICggKSBjb25zdDsKCnByb3RlY3RlZDoKIApWYWx1ZQog
IGZoYW5kbGU7Cn07ICAKCgpjbGFzcyBJUHJlc1NwYWNlSGFuZGxlIHsKcHVibGljOgogCgp0eXBl
ZGVmIElYREMqIFZhbHVlOwoKCgoKCgoKCiAKICBJUHJlc1NwYWNlSGFuZGxlICggVmFsdWUgdmFs
dWU9MCwgSU5hdGl2ZVdpbmRvd0hhbmRsZSBod25kPTAgKTsKCiAgSVByZXNTcGFjZUhhbmRsZSAo
Y29uc3QgSVByZXNTcGFjZUhhbmRsZSYgc3JjKTsKICBJUHJlc1NwYWNlSGFuZGxlJiBvcGVyYXRv
cj0gKGNvbnN0IElQcmVzU3BhY2VIYW5kbGUmIHNyYyk7CiAgfklQcmVzU3BhY2VIYW5kbGUgKCk7
CgogCgpJU3RyaW5nCiAgYXNTdHJpbmcgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICggKSBj
b25zdDsKCnVuc2lnbmVkIGxvbmcKICBhc1Vuc2lnbmVkICAoICkgY29uc3Q7CgogCiAgb3BlcmF0
b3IgVmFsdWUgKCApIGNvbnN0OwoKcHJpdmF0ZToKIAoKCgpWYWx1ZQogIGZoYW5kbGU7Cn07ICAK
CmNsYXNzIElCaXRtYXBIYW5kbGUgewpwdWJsaWM6CiAKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBW
YWx1ZTsKCgoKCgoKCgogCiAgSUJpdG1hcEhhbmRsZSAoIFZhbHVlIHZhbHVlPTAgKTsKICBJQml0
bWFwSGFuZGxlICggY29uc3QgSUJpdG1hcEhhbmRsZSYgYUhhbmRsZSApOwogfklCaXRtYXBIYW5k
bGUgKCApOwoKSUJpdG1hcEhhbmRsZQogJm9wZXJhdG9yID0gICAgKCBjb25zdCBJQml0bWFwSGFu
ZGxlJiBhSGFuZGxlICk7CgoKIAoKSVN0cmluZwogIGFzU3RyaW5nICAgICggKSBjb25zdCwKICBh
c0RlYnVnSW5mbyAoICkgY29uc3Q7Cgp1bnNpZ25lZCBsb25nCiAgYXNVbnNpZ25lZCAgKCApIGNv
bnN0OwoKIAogIG9wZXJhdG9yIFZhbHVlICggKSBjb25zdDsKCnByb3RlY3RlZDoKIApWYWx1ZQog
IGZoYW5kbGU7Cn07ICAKCgpjbGFzcyBJUmVnaW9uSGFuZGxlIHsKcHVibGljOgogCgp0eXBlZGVm
IHZvaWQqIFZhbHVlOwoKCgoKCgoKCiAKICBJUmVnaW9uSGFuZGxlICggVmFsdWUgdmFsdWU9MCAp
OwoKIAoKSVN0cmluZwogIGFzU3RyaW5nICAgICggKSBjb25zdCwKICBhc0RlYnVnSW5mbyAoICkg
Y29uc3Q7Cgp1bnNpZ25lZCBsb25nCiAgYXNVbnNpZ25lZCAgKCApIGNvbnN0OwoKIAogIG9wZXJh
dG9yIFZhbHVlICggKSBjb25zdDsKCnByaXZhdGU6CiAKVmFsdWUKICBmaGFuZGxlOwp9OyAgCgog
CgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkK
CgoKCiAKCiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9p
bmNsdWRlL2kyZGdoYW5kLmlubCIgMQoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAoKIAogCgoKaW5saW5lIHVuc2lnbmVkIGxvbmcgSVBvaW50ZXJIYW5k
bGU6OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHRoaXMt
PmZoYW5kbGU7Cn0KCmlubGluZSBJUG9pbnRlckhhbmRsZTo6b3BlcmF0b3IgSVBvaW50ZXJIYW5k
bGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5kbGU7Cn0KCgogCgoKaW5s
aW5lIElQcmVzU3BhY2VIYW5kbGU6OklQcmVzU3BhY2VIYW5kbGUgKCBWYWx1ZSB2YWx1ZSwgSU5h
dGl2ZVdpbmRvd0hhbmRsZSApCiAgOiBmaGFuZGxlKCB2YWx1ZSApCiAgewogIH0KCmlubGluZSB1
bnNpZ25lZCBsb25nIElQcmVzU3BhY2VIYW5kbGU6OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICBy
ZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHRoaXMtPmZoYW5kbGU7Cn0KCmlubGluZSBJUHJlc1NwYWNl
SGFuZGxlOjpvcGVyYXRvciBJUHJlc1NwYWNlSGFuZGxlOjpWYWx1ZSAoICkgY29uc3QKewogIHJl
dHVybiB0aGlzLT5maGFuZGxlOwp9CgoKIAoKCmlubGluZSB1bnNpZ25lZCBsb25nIElCaXRtYXBI
YW5kbGU6OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHRo
aXMtPmZoYW5kbGU7Cn0KCmlubGluZSBJQml0bWFwSGFuZGxlOjpvcGVyYXRvciBJQml0bWFwSGFu
ZGxlOjpWYWx1ZSAoICkgY29uc3QKewogIHJldHVybiB0aGlzLT5maGFuZGxlOwp9CgoKIAoKCmlu
bGluZSBJUmVnaW9uSGFuZGxlOjpJUmVnaW9uSGFuZGxlICggVmFsdWUgdmFsdWUgKQogIDogZmhh
bmRsZSggdmFsdWUgKQogIHsKICB9CgppbmxpbmUgdW5zaWduZWQgbG9uZyBJUmVnaW9uSGFuZGxl
Ojphc1Vuc2lnbmVkICggKSBjb25zdAp7CiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSB0aGlzLT5m
aGFuZGxlOwp9CgppbmxpbmUgSVJlZ2lvbkhhbmRsZTo6b3BlcmF0b3IgSVJlZ2lvbkhhbmRsZTo6
VmFsdWUgKCApIGNvbnN0CnsKICByZXR1cm4gdGhpcy0+ZmhhbmRsZTsKfQoKIAogCgojIDI2NSAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pMmRnaGFu
ZC5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3By
YWdtYSBpbmZvKHJlc3RvcmUpCiAKCiAKCiMgNDEgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhf
czM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWhhbmRsZS5ocHAiIDIKCgoKIyAxICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2l1aXBsLmhwcCIgMQogCgog
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAgCgoKICAgIAogIAoKCgoKCgogCgogICAgCiAgICAgIAkK
IyA5OSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9p
dWlwbC5ocHAiCgogICAgCiMgMTM1ICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2l1aXBsLmhwcCIKCgoKCiMgNDQgIi9ob21lL2Frbm9sbC9pb2NzcmMv
bGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWhhbmRsZS5ocHAiIDIKCiAKCiAKI3ByYWdt
YSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xF
VkVMKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKc3RydWN0IF9XaWRnZXRSZWM7CnN0cnVj
dCBfWHRBcHBTdHJ1Y3Q7CnN0cnVjdCBfWEdDOwpzdHJ1Y3QgX1hEaXNwbGF5OwpzdHJ1Y3QgX1hy
bUhhc2hCdWNrZXRSZWM7CnN0cnVjdCBfWHRBcHBTdHJ1Y3Q7CgogCgogCgojcHJhZ21hIG5hbWVt
YW5nbGluZyhfX0lPQ19OQU1FTUFOR0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoK
CgoKCgoKIAoKIAogCgogCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKCnR5cGVkZWYgdm9pZCAqICAK
ICBJV2luUHJvYyAoIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHZvaWQgKiwgdm9pZCAq
ICk7CgoKCn0KCmNsYXNzIElXaW5kb3dIYW5kbGU7CmNsYXNzIElTdHJpbmdIYW5kbGU7CmNsYXNz
IElQcm9maWxlSGFuZGxlOwpjbGFzcyBJTWVzc2FnZVF1ZXVlSGFuZGxlOwpjbGFzcyBJQWNjZWxU
YmxIYW5kbGU7CmNsYXNzIElBbmNob3JCbG9ja0hhbmRsZTsKCgoKCmNsYXNzIElEaXNwbGF5SGFu
ZGxlOwppbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVh
bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJRGlzcGxheUhhbmRsZSYg
YUhhbmRsZSk7CgoKCgoKCmlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtJiBhU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElXaW5k
b3dIYW5kbGUmIGFIYW5kbGUpOwppbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
U3RyaW5nSGFuZGxlJiBhSGFuZGxlKTsKaW5saW5lIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSVByb2ZpbGVIYW5kbGUmIGFIYW5kbGUpOwppbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJTWVzc2FnZVF1ZXVlSGFuZGxlJiBhSGFuZGxlKTsKaW5saW5lIHN0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSUFjY2VsVGJsSGFuZGxlJiBhSGFuZGxlKTsKaW5saW5lIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSUFuY2hvckJsb2NrSGFuZGxlJiBhSGFuZGxlKTsKIyAx
NTMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaWhh
bmRsZS5ocHAiCgoKIAoKIAoKY2xhc3MgSVdpbmRvd0hhbmRsZSB7CnB1YmxpYzoKIAp0eXBlZGVm
IElOYXRpdmVXaW5kb3dIYW5kbGUgVmFsdWU7CgogCiAgSVdpbmRvd0hhbmRsZSAoIFZhbHVlIHZh
bHVlPTAgKTsKCiAKYm9vbAogIGlzVmFsaWQgKCApIGNvbnN0OwoKIAplbnVtIEJyb2FkY2FzdFRv
IHsKICBkZXNjZW5kYW50cywKICBmcmFtZXMsCiAgZnJhbWVEZXNjZW5kYW50cwogIH07CgpJRXZl
bnRSZXN1bHQKICBzZW5kRXZlbnQgICggdW5zaWduZWQgbG9uZyAgICAgICAgICAgZXZlbnRJZCwK
ICAgICAgICAgICAgICAgY29uc3QgSUV2ZW50UGFyYW1ldGVyMSYgcGFybTEgPSAwdWwsCiAgICAg
ICAgICAgICAgIGNvbnN0IElFdmVudFBhcmFtZXRlcjImIHBhcm0yID0gMHVsICkgY29uc3Q7Cgp2
b2lkCiAgc2VuZEV2ZW50cyAoIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIGV2ZW50SWQsCiAgICAg
ICAgICAgICAgIGNvbnN0IElFdmVudFBhcmFtZXRlcjEmIHBhcm0xID0gMHVsLAogICAgICAgICAg
ICAgICBjb25zdCBJRXZlbnRQYXJhbWV0ZXIyJiBwYXJtMiA9IDB1bCwKICAgICAgICAgICAgICAg
QnJvYWRjYXN0VG8gICAgICAgICAgICAgdmFsdWUgPSBkZXNjZW5kYW50cyApIGNvbnN0OwoKdm9p
ZAogIHBvc3RFdmVudCAgKCB1bnNpZ25lZCBsb25nICAgICAgICAgICBldmVudElkLAogICAgICAg
ICAgICAgICBjb25zdCBJRXZlbnRQYXJhbWV0ZXIxJiBwYXJtMSA9IDB1bCwKICAgICAgICAgICAg
ICAgY29uc3QgSUV2ZW50UGFyYW1ldGVyMiYgcGFybTIgPSAwdWwgKSBjb25zdCwKCiAgcG9zdEV2
ZW50cyAoIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIGV2ZW50SWQsCiAgICAgICAgICAgICAgIGNv
bnN0IElFdmVudFBhcmFtZXRlcjEmIHBhcm0xID0gMHVsLAogICAgICAgICAgICAgICBjb25zdCBJ
RXZlbnRQYXJhbWV0ZXIyJiBwYXJtMiA9IDB1bCwKICAgICAgICAgICAgICAgQnJvYWRjYXN0VG8g
ICAgICAgICAgICAgdmFsdWUgPSBkZXNjZW5kYW50cyApIGNvbnN0OwogCgpJU3RyaW5nCiAgYXNT
dHJpbmcgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICggKSBjb25zdDsKCgpmcmllbmQgc3Rk
Ojpvc3RyZWFtCiAmb3BlcmF0b3IgPDwgKCBzdGQ6Om9zdHJlYW0mICAgICAgIGFTdHJlYW0sCiAg
ICAgICAgICAgICAgICBjb25zdCBJV2luZG93SGFuZGxlJiBhSGFuZGxlICk7CgoKCgoKCnVuc2ln
bmVkIGxvbmcKICBhc1Vuc2lnbmVkICAoICkgY29uc3Q7CgogCiAgb3BlcmF0b3IgVmFsdWUgKCAp
IGNvbnN0OwoKcHJpdmF0ZToKIApWYWx1ZQogIGZoYW5kbGU7Cn07ICAKCgpjbGFzcyBJU3lzdGVt
UG9pbnRlckhhbmRsZSA6IHB1YmxpYyBJUG9pbnRlckhhbmRsZSB7CnR5cGVkZWYgSVBvaW50ZXJI
YW5kbGUKICBJbmhlcml0ZWQ7CnB1YmxpYzoKIAplbnVtIEVQb2ludGVyVHlwZSB7CiAga0Fycm93
PTAsCiAga1RleHQ9MSwKICBrV2FpdD0yLAogIGtNb3ZlPTMsCiAga1NpemVVcExlZnQ9NCwKICBr
U2l6ZVVwUmlnaHQ9NSwKICBrU2l6ZURvd25MZWZ0PTYsCiAga1NpemVEb3duUmlnaHQ9NywKICBr
U2l6ZUxlZnQ9OCwKICBrU2l6ZVJpZ2h0PTksCiAga1NpemVVcD0xMCwKICBrU2l6ZURvd249MTEs
CgoKCiAga0luZm9ybWF0aW9uPTEzLAogIGtRdWVzdGlvbj0xNCwKICBrRXJyb3I9MTUsCiAga1dh
cm5pbmc9MTYsCiAga0lsbGVnYWxPcGVyYXRpb249MTcsCgoKCgoKCiAga0RyYWdGYWRlPTIyLAog
IGtTaXplSG9yaXpvbnRhbD0yMywKICBrU2l6ZVZlcnRpY2FsPTI0CiAgfTsKCiAKICBJU3lzdGVt
UG9pbnRlckhhbmRsZSAoIEVQb2ludGVyVHlwZSAgICBwb2ludGVySWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sICAgICAgICAgICAgbWFrZUNvcHkgPSBmYWxzZSApOwogfklTeXN0ZW1Q
b2ludGVySGFuZGxlICggKTsKCgplbnVtIElkZW50aWZpZXIgewogIGFycm93PTAsCiAgdGV4dD0x
LAogIHdhaXQ9MiwKICBtb3ZlPTMsCgoKCgogIHNpemVIb3Jpem9udGFsPTYsCiAgc2l6ZVZlcnRp
Y2FsPTcsCgoKCiAgaW5mb3JtYXRpb249OSwKICBxdWVzdGlvbj0xMCwKICBlcnJvcj0xMSwKICB3
YXJuaW5nPTEyLAogIGlsbGVnYWxPcGVyYXRpb249MTMsCgoKCgoKCiAgZHJhZ0ZhZGU9MTgKICB9
OwoKICBJU3lzdGVtUG9pbnRlckhhbmRsZSAoIElkZW50aWZpZXIgICAgICBwb2ludGVySWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sICBtYWtlQ29weSA9IGZhbHNlICk7CgoKfTsgIAoK
Y2xhc3MgSVN0cmluZ0hhbmRsZSB7CnB1YmxpYzoKIAoKdHlwZWRlZiB2b2lkKiBWYWx1ZTsKCgoK
CgoKCgogCiAgSVN0cmluZ0hhbmRsZSAoIFZhbHVlIHZhbHVlPTAgKTsKCiAKCklTdHJpbmcKICBh
c1N0cmluZyAgICAoICkgY29uc3QsCiAgYXNEZWJ1Z0luZm8gKCApIGNvbnN0OwoKCmZyaWVuZCBz
dGQ6Om9zdHJlYW0KICZvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSYgICAgICAgYVN0cmVhbSwK
ICAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmdIYW5kbGUmIGFIYW5kbGUgKTsKCgoKCgoKdW5z
aWduZWQgbG9uZwogIGFzVW5zaWduZWQgICggKSBjb25zdDsKCiAKICBvcGVyYXRvciBWYWx1ZSAo
ICkgY29uc3Q7Cgpwcml2YXRlOgogClZhbHVlCiAgZmhhbmRsZTsKfTsgIAoKCmNsYXNzIElTeXN0
ZW1CaXRtYXBIYW5kbGUgOiBwdWJsaWMgSUJpdG1hcEhhbmRsZSB7CnR5cGVkZWYgSUJpdG1hcEhh
bmRsZQogIEluaGVyaXRlZDsKcHVibGljOgogCmVudW0gSWRlbnRpZmllciB7CiAgc3lzdGVtTWVu
dT0wLAojIDM3MCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5j
bHVkZS9paGFuZGxlLmhwcCIKCiAgbWVudUNoZWNrTWFyaz0xNCwKCgoKCgoKICBtaW5pbWl6ZUJ1
dHRvbj0xOSwKCgoKICBtYXhpbWl6ZUJ1dHRvbj0yMSwKCgoKICByZXN0b3JlQnV0dG9uPTIzLAoK
CgoKCgogIGZpbGU9MjgKIyA0MDIgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWhhbmRsZS5ocHAiCgogIH07CgogCiAgSVN5c3RlbUJpdG1hcEhhbmRs
ZSAoIElkZW50aWZpZXIgYml0bWFwSWQgKTsKIH5JU3lzdGVtQml0bWFwSGFuZGxlICggKTsKCn07
ICAKCmNsYXNzIElQcm9maWxlSGFuZGxlIHsKcHVibGljOgogCgp0eXBlZGVmIF9Ycm1IYXNoQnVj
a2V0UmVjKiBWYWx1ZTsKCgoKCgoKCgogCiAgSVByb2ZpbGVIYW5kbGUgKCBWYWx1ZSB2YWx1ZT0w
ICk7CgogCgpJU3RyaW5nCiAgYXNTdHJpbmcgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICgg
KSBjb25zdDsKCgpmcmllbmQgc3RkOjpvc3RyZWFtCiAmb3BlcmF0b3IgPDwgKCBzdGQ6Om9zdHJl
YW0mICAgICAgIGFTdHJlYW0sCiAgICAgICAgICAgICAgICBjb25zdCBJUHJvZmlsZUhhbmRsZSYg
YUhhbmRsZSApOwoKCgoKCgp1bnNpZ25lZCBsb25nCiAgYXNVbnNpZ25lZCAgKCApIGNvbnN0OwoK
IAogIG9wZXJhdG9yIFZhbHVlICggKSBjb25zdDsKCnByaXZhdGU6CiAKVmFsdWUKICBmaGFuZGxl
Owp9OyAgCgpjbGFzcyBJTWVzc2FnZVF1ZXVlSGFuZGxlIHsKcHVibGljOgogCgp0eXBlZGVmIHZv
aWQqIFZhbHVlOwoKCgoKCgoKCiAKICBJTWVzc2FnZVF1ZXVlSGFuZGxlICggVmFsdWUgdmFsdWU9
MCApOwoKIAp2b2lkCiAgcG9zdEV2ZW50ICAoIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIGV2ZW50
SWQsCiAgICAgICAgICAgICAgIGNvbnN0IElFdmVudFBhcmFtZXRlcjEmIHBhcm0xID0gMHVsLAog
ICAgICAgICAgICAgICBjb25zdCBJRXZlbnRQYXJhbWV0ZXIyJiBwYXJtMiA9IDB1bCApIGNvbnN0
OwpzdGF0aWMgdm9pZAogIHBvc3RFdmVudCAgKCBjb25zdCBJTWVzc2FnZVF1ZXVlSGFuZGxlJiAg
ICBoYW5kbGUsCiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIGV2ZW50SWQs
CiAgICAgICAgICAgICAgIGNvbnN0IElFdmVudFBhcmFtZXRlcjEmIHBhcm0xID0gMHVsLAogICAg
ICAgICAgICAgICBjb25zdCBJRXZlbnRQYXJhbWV0ZXIyJiBwYXJtMiA9IDB1bCApOwpzdGF0aWMg
dm9pZAogIHBvc3RFdmVudHMgKCB1bnNpZ25lZCBsb25nICAgICAgICAgICBldmVudElkLAogICAg
ICAgICAgICAgICBjb25zdCBJRXZlbnRQYXJhbWV0ZXIxJiBwYXJtMSA9IDB1bCwKICAgICAgICAg
ICAgICAgY29uc3QgSUV2ZW50UGFyYW1ldGVyMiYgcGFybTIgPSAwdWwgKTsKCiAKCklTdHJpbmcK
ICBhc1N0cmluZyAgICAoICkgY29uc3QsCiAgYXNEZWJ1Z0luZm8gKCApIGNvbnN0OwoKCmZyaWVu
ZCBzdGQ6Om9zdHJlYW0KICZvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSYgICAgICAgYVN0cmVh
bSwKICAgICAgICAgICAgICAgIGNvbnN0IElNZXNzYWdlUXVldWVIYW5kbGUmIGFIYW5kbGUgKTsK
CgoKCgoKdW5zaWduZWQgbG9uZwogIGFzVW5zaWduZWQgICggKSBjb25zdDsKCiAKICBvcGVyYXRv
ciBWYWx1ZSAoICkgY29uc3Q7Cgpwcml2YXRlOgogClZhbHVlCiAgZmhhbmRsZTsKfTsgIAoKY2xh
c3MgSUFjY2VsVGJsSGFuZGxlIHsKcHVibGljOgogCgp0eXBlZGVmIHZvaWQqIFZhbHVlOwoKCgoK
CgoKCiAKICBJQWNjZWxUYmxIYW5kbGUgKCBWYWx1ZSB2YWx1ZT0wICk7CgogCgpJU3RyaW5nCiAg
YXNTdHJpbmcgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICggKSBjb25zdDsKCgpmcmllbmQg
c3RkOjpvc3RyZWFtCiAmb3BlcmF0b3IgPDwgKCBzdGQ6Om9zdHJlYW0mICAgICAgIGFTdHJlYW0s
CiAgICAgICAgICAgICAgICBjb25zdCBJQWNjZWxUYmxIYW5kbGUmIGFIYW5kbGUgKTsKCgoKCgoK
dW5zaWduZWQgbG9uZwogIGFzVW5zaWduZWQgICggKSBjb25zdDsKCiAKICBvcGVyYXRvciBWYWx1
ZSAoICkgY29uc3Q7Cgpwcml2YXRlOgogClZhbHVlCiAgZmhhbmRsZTsKfTsgIAoKCgoKY2xhc3Mg
SURpc3BsYXlIYW5kbGUgewpwdWJsaWM6CiAKdHlwZWRlZiBfWERpc3BsYXkqIFZhbHVlOwoKIAog
IElEaXNwbGF5SGFuZGxlICggVmFsdWUgdmFsdWU9MCApOwoKIAoKSVN0cmluZwogIGFzU3RyaW5n
ICAgICggKSBjb25zdCwKICBhc0RlYnVnSW5mbyAoICkgY29uc3Q7CgoKZnJpZW5kIHN0ZDo6b3N0
cmVhbQogJm9wZXJhdG9yIDw8ICggc3RkOjpvc3RyZWFtJiAgICAgICBhU3RyZWFtLAogICAgICAg
ICAgICAgICAgY29uc3QgSURpc3BsYXlIYW5kbGUmIGFIYW5kbGUgKTsKCgoKCgoKdW5zaWduZWQg
bG9uZwogIGFzVW5zaWduZWQgICggKSBjb25zdDsKCiAKICBvcGVyYXRvciBWYWx1ZSAoICkgY29u
c3Q7Cgpwcml2YXRlOgogClZhbHVlCiAgZmhhbmRsZTsKfTsgIAoKCiMgNjM0ICIvaG9tZS9ha25v
bGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2loYW5kbGUuaHBwIgoKCnR5
cGVkZWYgSVdpbmRvd0hhbmRsZSBJTWVudUhhbmRsZTsKCgpjbGFzcyBJQW5jaG9yQmxvY2tIYW5k
bGUKewpwdWJsaWM6CiAgICAgCgogICAgdHlwZWRlZiBfWHRBcHBTdHJ1Y3QqICBWYWx1ZTsKCgoK
CgoKCgoKCiAgICAgCiAgICBJQW5jaG9yQmxvY2tIYW5kbGUoVmFsdWUgdmFsdWUgPSAwKTsKCiAg
ICAgCiAgICBJU3RyaW5nIGFzU3RyaW5nKCkgY29uc3Q7CiAgICBJU3RyaW5nIGFzRGVidWdJbmZv
KCkgY29uc3Q7CgoKICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0KICAgICZvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSYgYVN0cmVhbSwgY29uc3QgSUFuY2hvckJsb2NrSGFuZGxlJiBhSGFuZGxlKTsKCgoK
CgogICAgdW5zaWduZWQgbG9uZyBhc1Vuc2lnbmVkKCkgY29uc3Q7CgogICAgIAogICAgb3BlcmF0
b3IgVmFsdWUoKSBjb25zdDsKCnByaXZhdGU6CiAgICAgCiAgICBWYWx1ZSBmaGFuZGxlOwp9OwoK
CgoKdHlwZWRlZiBJQW5jaG9yQmxvY2tIYW5kbGUgSUNvbnRleHRIYW5kbGU7CgoKCgogCgogCgoK
CgoKCgojcHJhZ21hIGVudW0ocG9wKQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAK
CiAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2loYW5kbGUuaW5sIiAxCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCgogCgoKaW5saW5lIElXaW5kb3dIYW5kbGU6OklXaW5kb3dIYW5kbGUgKCBWYWx1
ZSB2YWx1ZSApCiAgOiBmaGFuZGxlKCB2YWx1ZSApCiAgewogIH0KCmlubGluZSB1bnNpZ25lZCBs
b25nIElXaW5kb3dIYW5kbGU6OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICByZXR1cm4gKHVuc2ln
bmVkIGxvbmcpIHRoaXMtPmZoYW5kbGU7Cn0KCiAKaW5saW5lIElXaW5kb3dIYW5kbGU6Om9wZXJh
dG9yIElXaW5kb3dIYW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5k
bGU7Cn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSAm
YVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElXaW5kb3dIYW5kbGUm
IGhhbmRsZSApCgoKCnsKICByZXR1cm4gYVN0cmVhbSA8PCBoYW5kbGUuYXNTdHJpbmcoKTsKfQoK
CiAKCgppbmxpbmUgSVN0cmluZ0hhbmRsZTo6SVN0cmluZ0hhbmRsZSAoIFZhbHVlIHZhbHVlICkK
ICA6IGZoYW5kbGUoIHZhbHVlICkKICB7CiAgfQoKaW5saW5lIHVuc2lnbmVkIGxvbmcgSVN0cmlu
Z0hhbmRsZTo6YXNVbnNpZ25lZCAoICkgY29uc3QKewogIHJldHVybiAodW5zaWduZWQgbG9uZykg
dGhpcy0+ZmhhbmRsZTsKfQoKaW5saW5lIElTdHJpbmdIYW5kbGU6Om9wZXJhdG9yIElTdHJpbmdI
YW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5kbGU7Cn0KCgppbmxp
bmUKCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKCBzdGQ6Om9zdHJlYW0gJmFTdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJU3RyaW5nSGFuZGxlJiBoYW5kbGUgKQoK
Cgp7CiAgcmV0dXJuIGFTdHJlYW0gPDwgaGFuZGxlLmFzU3RyaW5nKCk7Cn0KCgogCgoKaW5saW5l
IElQcm9maWxlSGFuZGxlOjpJUHJvZmlsZUhhbmRsZSAoIFZhbHVlIHZhbHVlICkKICA6IGZoYW5k
bGUoIHZhbHVlICkKICB7CiAgfQoKaW5saW5lIHVuc2lnbmVkIGxvbmcgSVByb2ZpbGVIYW5kbGU6
OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHRoaXMtPmZo
YW5kbGU7Cn0KCmlubGluZSBJUHJvZmlsZUhhbmRsZTo6b3BlcmF0b3IgSVByb2ZpbGVIYW5kbGU6
OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5kbGU7Cn0KCmlubGluZQoKc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSAmYVN0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IElQcm9maWxlSGFuZGxlJiBoYW5kbGUgKQoKCgp7CiAg
cmV0dXJuIGFTdHJlYW0gPDwgaGFuZGxlLmFzU3RyaW5nKCk7Cn0KCiAKCgppbmxpbmUgSU1lc3Nh
Z2VRdWV1ZUhhbmRsZTo6SU1lc3NhZ2VRdWV1ZUhhbmRsZSAoIFZhbHVlIHZhbHVlICkKICA6IGZo
YW5kbGUoIHZhbHVlICkKICB7CiAgfQoKaW5saW5lIHVuc2lnbmVkIGxvbmcgSU1lc3NhZ2VRdWV1
ZUhhbmRsZTo6YXNVbnNpZ25lZCAoICkgY29uc3QKewogIHJldHVybiAodW5zaWduZWQgbG9uZykg
dGhpcy0+ZmhhbmRsZTsKfQoKaW5saW5lIElNZXNzYWdlUXVldWVIYW5kbGU6Om9wZXJhdG9yIElN
ZXNzYWdlUXVldWVIYW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5k
bGU7Cn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSAm
YVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElNZXNzYWdlUXVldWVI
YW5kbGUmIGhhbmRsZSApCgoKCnsKICByZXR1cm4gYVN0cmVhbSA8PCBoYW5kbGUuYXNTdHJpbmco
KTsKfQoKIAoKCmlubGluZSBJQWNjZWxUYmxIYW5kbGU6OklBY2NlbFRibEhhbmRsZSAoIFZhbHVl
IHZhbHVlICkKICA6IGZoYW5kbGUoIHZhbHVlICkKICB7CiAgfQoKaW5saW5lIHVuc2lnbmVkIGxv
bmcgSUFjY2VsVGJsSGFuZGxlOjphc1Vuc2lnbmVkICggKSBjb25zdAp7CiAgcmV0dXJuICh1bnNp
Z25lZCBsb25nKSB0aGlzLT5maGFuZGxlOwp9CgppbmxpbmUgSUFjY2VsVGJsSGFuZGxlOjpvcGVy
YXRvciBJQWNjZWxUYmxIYW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZo
YW5kbGU7Cn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVh
bSAmYVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElBY2NlbFRibEhh
bmRsZSYgaGFuZGxlICkKCgoKewogIHJldHVybiBhU3RyZWFtIDw8IGhhbmRsZS5hc1N0cmluZygp
Owp9CgoKIAoKCmlubGluZSBJRGlzcGxheUhhbmRsZTo6SURpc3BsYXlIYW5kbGUgKCBWYWx1ZSB2
YWx1ZSApCiAgOiBmaGFuZGxlKHZhbHVlICkKICB7CiAgfQoKaW5saW5lIHVuc2lnbmVkIGxvbmcg
SURpc3BsYXlIYW5kbGU6OmFzVW5zaWduZWQgKCApIGNvbnN0CnsKICByZXR1cm4gKHVuc2lnbmVk
IGxvbmcpIHRoaXMtPmZoYW5kbGU7Cn0KCmlubGluZSBJRGlzcGxheUhhbmRsZTo6b3BlcmF0b3Ig
SURpc3BsYXlIYW5kbGU6OlZhbHVlICggKSBjb25zdAp7CiAgcmV0dXJuIHRoaXMtPmZoYW5kbGU7
Cn0KCmlubGluZQoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoIHN0ZDo6b3N0cmVhbSAmYVN0
cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElEaXNwbGF5SGFuZGxlJiBo
YW5kbGUgKQoKCgp7CiAgcmV0dXJuIGFTdHJlYW0gPDwgaGFuZGxlLmFzU3RyaW5nKCk7Cn0KCgoK
CiMgMjQwICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRl
L2loYW5kbGUuaW5sIgoKCiAKIAogCmlubGluZSBJQW5jaG9yQmxvY2tIYW5kbGU6OklBbmNob3JC
bG9ja0hhbmRsZShWYWx1ZSB2YWx1ZSkgOgoKICAgIGZoYW5kbGUoIHZhbHVlICkKewp9Cgppbmxp
bmUgdW5zaWduZWQgbG9uZyBJQW5jaG9yQmxvY2tIYW5kbGU6OmFzVW5zaWduZWQgKCApIGNvbnN0
CnsKICAgIHJldHVybiAodW5zaWduZWQgbG9uZykgdGhpcy0+ZmhhbmRsZTsKfQoKaW5saW5lIElB
bmNob3JCbG9ja0hhbmRsZTo6b3BlcmF0b3IgSUFuY2hvckJsb2NrSGFuZGxlOjpWYWx1ZSgpIGNv
bnN0CnsKICAgIHJldHVybiB0aGlzLT5maGFuZGxlOwp9CgppbmxpbmUKCnN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGFTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJQW5jaG9yQmxvY2tIYW5kbGUmIGhhbmRsZSkKCgoKewogICAgcmV0dXJuIGFTdHJl
YW0gPDwgaGFuZGxlLmFzU3RyaW5nKCk7Cn0KCiAKCiMgNzA5ICIvaG9tZS9ha25vbGwvaW9jc3Jj
L2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNsdWRlL2loYW5kbGUuaHBwIiAyCgogCgogCiNwcmFn
bWEgaW5mbyhub25lKQojcHJhZ21hIHJlcG9ydChwb3ApCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQog
CgogCgojIDMxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJpbi9pbmNs
dWRlL2lhcHAuaHBwIiAyCgoKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hh
cmVkLmJpbi9pbmNsdWRlL2lyZXNsaWIuaHBwIiAxCgoKCiAKIAogCgoKCgoKCgoKCgoKCgoKCiAK
IAogCiAKIAogCgogCgoKIAoKIAojcHJhZ21hIGluZm8obm9uZSkKI3ByYWdtYSByZXBvcnQobGV2
ZWwsIF9fSU9DX0hFQURFUl9SRVBPUlRfTEVWRUwpCiNwcmFnbWEgaW5mbyhyZXN0b3JlKQogCgoK
IAoKI3ByYWdtYSBuYW1lbWFuZ2xpbmcoX19JT0NfTkFNRU1BTkdMSU5HX1NDSEVNRSkKCgoKCgoj
cHJhZ21hIGVudW0oNCkKCgoKCgoKCiAKCiAKIAoKIApjbGFzcyBJU3RyaW5nOwpjbGFzcyBJRExM
TW9kdWxlOwpjbGFzcyBJU2l6ZTsKY2xhc3MgSVdpbmRvdzsKY2xhc3MgSU1lbnU7CmNsYXNzIElS
ZXNMaWJQcml2YXRlRGF0YTsKY2xhc3MgSUR5bkxpbmtMaWJQcml2YXRlRGF0YTsKY2xhc3MgSURM
TE1vZHVsZTsKIAoKIAoKY2xhc3MgSVJlc291cmNlTGlicmFyeSAgewpwdWJsaWM6CiAKICBJUmVz
b3VyY2VMaWJyYXJ5ICAgKCApOwogIElSZXNvdXJjZUxpYnJhcnkgICAoIGNvbnN0IElSZXNvdXJj
ZUxpYnJhcnkmIHJlc0xpYnJhcnkgKTsKdmlydHVhbAogfklSZXNvdXJjZUxpYnJhcnkgICAoICk7
CgpJUmVzb3VyY2VMaWJyYXJ5CiAmb3BlcmF0b3I9ICAgICAgICAgICAoIGNvbnN0IElSZXNvdXJj
ZUxpYnJhcnkmIHJlc0xpYnJhcnkgKTsKCiAKdmlydHVhbCBJU3RyaW5nCiAgZmlsZU5hbWUgICAg
ICAgICAgICggKSBjb25zdDsKCnZpcnR1YWwgYm9vbAogIGlzT3BlbiAgICAgICAgICAgICAoICkg
Y29uc3Q7Cgp2aXJ0dWFsIElNb2R1bGVIYW5kbGUKICBoYW5kbGUgICAgICAgICAgICAgKCApIGNv
bnN0OwoKIAp2aXJ0dWFsIElTdHJpbmcKICBhc1N0cmluZyAgICAgICAgICAgKCApIGNvbnN0LAog
IGFzRGVidWdJbmZvICAgICAgICAoICkgY29uc3Q7CgoKIAp2aXJ0dWFsIElTdHJpbmcKICBsb2Fk
U3RyaW5nICAgICAgKCB1bnNpZ25lZCBsb25nIHN0cmluZ0lkICApIGNvbnN0LAogIGxvYWRNZXNz
YWdlICAgICAoIHVuc2lnbmVkIGxvbmcgbWVzc2FnZUlkICkgY29uc3Q7CgojIDExOCAiL2hvbWUv
YWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pcmVzbGliLmhwcCIK
CgoKdmlydHVhbCB2b2lkCiAgbG9hZE1lbnUgICAgICAgICggdW5zaWduZWQgbG9uZyAgICAgICAg
bWVudUlkLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IElXaW5kb3dIYW5kbGUmIG1lbnVIYW5k
bGUsCiAgICAgICAgICAgICAgICAgICAgSU1lbnUqICAgICAgICAgICAgICAgcGFyZW50TWVudSAp
IGNvbnN0OwoKCnZpcnR1YWwgSUFjY2VsVGJsSGFuZGxlCiAgbG9hZEFjY2VsVGFibGUgICggdW5z
aWduZWQgbG9uZyBhY2NlbFRhYmxlSWQgKSBjb25zdDsKCnZpcnR1YWwgSVJlc291cmNlTGlicmFy
eQogJmxvYWRIZWxwVGFibGUgICAoIElXaW5kb3cqICAgICAgaGVscEluc3RhbmNlLAogICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaGVscFRhYmxlSWQgKSBjb25zdDsKCnZpcnR1YWwg
SVBvaW50ZXJIYW5kbGUKICBsb2FkSWNvbiAgICAgICAgKCB1bnNpZ25lZCBsb25nIGljb25JZCwK
ICAgICAgICAgICAgICAgICAgICBib29sICAgICAgIGNhY2hlZCA9IHRydWUgKSBjb25zdCwKICBs
b2FkUG9pbnRlciAgICAgKCB1bnNpZ25lZCBsb25nIGljb25JZCwKICAgICAgICAgICAgICAgICAg
ICBib29sICAgICAgIGNhY2hlZCA9IHRydWUgKSBjb25zdDsKCnZpcnR1YWwgSUJpdG1hcEhhbmRs
ZQogIGxvYWRCaXRtYXAgICAgICAoIHVuc2lnbmVkIGxvbmcgYml0bWFwSWQsCiAgICAgICAgICAg
ICAgICAgICAgYm9vbCAgICAgICBjYWNoZWQgPSB0cnVlICkgY29uc3QsCiAgbG9hZEJpdG1hcCAg
ICAgICggdW5zaWduZWQgbG9uZyBiaXRtYXBJZCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
U2l6ZSYgIGJpdG1hcFNpemUsCiAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICBjYWNoZWQg
PSB0cnVlICkgY29uc3Q7Cgp2aXJ0dWFsIElTdHJpbmcKICB0cnlUb0xvYWRTdHJpbmcgICAgICAo
IHVuc2lnbmVkIGxvbmcgc3RyaW5nSWQgICkgY29uc3QsCiAgdHJ5VG9Mb2FkTWVzc2FnZSAgICAg
KCB1bnNpZ25lZCBsb25nIG1lc3NhZ2VJZCApIGNvbnN0OwoKdmlydHVhbCBJUG9pbnRlckhhbmRs
ZQogIHRyeVRvTG9hZEljb24gICAgICAgICggdW5zaWduZWQgbG9uZyBpY29uSWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sICAgICAgIGNhY2hlZCA9IHRydWUgKSBjb25zdCwKICB0cnlU
b0xvYWRQb2ludGVyICAgICAoIHVuc2lnbmVkIGxvbmcgaWNvbklkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCAgICAgICBjYWNoZWQgPSB0cnVlICkgY29uc3Q7Cgp2aXJ0dWFsIElCaXRt
YXBIYW5kbGUKICB0cnlUb0xvYWRCaXRtYXAgICAgICggdW5zaWduZWQgbG9uZyBiaXRtYXBJZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICBjYWNoZWQgPSB0cnVlICkgY29uc3Qs
CiAgdHJ5VG9Mb2FkQml0bWFwICAgICAoIHVuc2lnbmVkIGxvbmcgYml0bWFwSWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IElTaXplJiAgYml0bWFwU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCAgICAgICBjYWNoZWQgPSB0cnVlICkgY29uc3Q7Cgpwcm90ZWN0ZWQ6CgoK
dmlydHVhbCB2b2lkCiAqcmVzb3VyY2VBZGRyZXNzICggKSBjb25zdDsKCgpwcml2YXRlOgogCklT
dHJpbmcKIGxvYWRUZXh0ICAgICAgICAoIGJvb2wgICAgICAgaXNTdHJpbmcsCiAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmluZ0lELAogICAgICAgICAgICAgICAgICAgYm9vbCAg
ICAgICB0aHJvd0V4Y2VwdGlvbiA9IHRydWUgKSBjb25zdDsKCklSZXNMaWJQcml2YXRlRGF0YQog
KmZFeHRlbmRlZERhdGE7CgpJTW9kdWxlSGFuZGxlCiAgZk1vZHVsZUhhbmRsZTsKCgpmcmllbmQg
Y2xhc3MgSUFpeFJlc291cmNlSW1wOwoKCgogIAogIHB1YmxpYzoKICB2aXJ0dWFsIHZvaWQKICAg
IGxvYWRBY2NlbFRhYmxlICAoIHVuc2lnbmVkIGxvbmcgICAgICAgIGFjY2VsVGFibGVJZCwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IElXaW5kb3dIYW5kbGUmIG1lbnUgKSBjb25zdDsKICAK
Cgp9OyAgIAoKCmNsYXNzIElEeW5hbWljTGlua0xpYnJhcnkgOiBwdWJsaWMgSVJlc291cmNlTGli
cmFyeQp7CnR5cGVkZWYgSVJlc291cmNlTGlicmFyeQogIEluaGVyaXRlZDsKcHVibGljOgplbnVt
IEVTZWFyY2hMb2NhdGlvbiB7IGtPU0RlZmF1bHRTZWFyY2gsIGtOTFNQYXRoU2VhcmNoIH07CiAK
ICBJRHluYW1pY0xpbmtMaWJyYXJ5ICAgKCBjb25zdCBjaGFyKiAgICAgICAgICAgICAgICBmaWxl
TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBFU2VhcmNoTG9jYXRpb24gICAgICAgICAg
ICBzZWFyY2hMb2NhdGlvbiA9IGtPU0RlZmF1bHRTZWFyY2ggKTsKCgoKICBJRHluYW1pY0xpbmtM
aWJyYXJ5ICAgKCBjb25zdCBJRHluYW1pY0xpbmtMaWJyYXJ5JiBkbGxMaWJyYXJ5ICk7Cgp2aXJ0
dWFsCiAgfklEeW5hbWljTGlua0xpYnJhcnkgICggKTsKCklEeW5hbWljTGlua0xpYnJhcnkKICZv
cGVyYXRvcj0gICAgICAgICAgICAgKCBjb25zdCBJRHluYW1pY0xpbmtMaWJyYXJ5JiBkbGxMaWJy
YXJ5ICk7CgogCnZpcnR1YWwgSUR5bmFtaWNMaW5rTGlicmFyeQogJm9wZW4gICAgICAgICAgICAg
ICAgKCApLAogJmNsb3NlICAgICAgICAgICAgICAgKCApOwoKIAp2b2lkCiAqcHJvY0FkZHJlc3Mg
ICAgICAgKCBjb25zdCBjaGFyKiAgIHByb2NlZHVyZU5hbWUgKSBjb25zdDsKCgoKCgoKCgoKCgoK
IAp2aXJ0dWFsIGJvb2wKICBpc09wZW4gICAgICAgICAgICggKSBjb25zdDsKCnZpcnR1YWwgSVN0
cmluZwogIGZpbGVOYW1lICAgICAgICAgKCApIGNvbnN0OwoKdmlydHVhbCBJTW9kdWxlSGFuZGxl
CiAgaGFuZGxlICAgICAgICAgICAoICkgY29uc3Q7CgogCnZpcnR1YWwgSVN0cmluZwogIGFzU3Ry
aW5nICAgICAgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICAgICAgKCApIGNvbnN0OwoKCnBy
b3RlY3RlZDoKCgp2aXJ0dWFsIHZvaWQKICpyZXNvdXJjZUFkZHJlc3MgKCApIGNvbnN0OwoKCnBy
aXZhdGU6CiAKCklETExNb2R1bGUKICpmRExMTW9kdWxlOwoKSUR5bkxpbmtMaWJQcml2YXRlRGF0
YQogKmZQcml2YXRlRGF0YTsKfTsKCgpjbGFzcyBJUmVzb3VyY2VJZAp7CnB1YmxpYzoKIAogIElS
ZXNvdXJjZUlkICAgICAgKCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgICByZXNvdXJjZUlkLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJUmVzb3VyY2VMaWJyYXJ5JiAgICByZXNvdXJjZUxp
YnJhcnkgKTsKCiAgSVJlc291cmNlSWQgICAgICAoIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAg
IHJlc291cmNlSWQgKTsKCiAgSVJlc291cmNlSWQgICAgICAoIGNvbnN0IElSZXNvdXJjZUlkJiAg
ICAgICAgIHJlc291cmNlSWQgKTsKCiAKdW5zaWduZWQgbG9uZwogIGlkICAgICAgICAgICAgICAg
ICAgICAoICkgY29uc3Q7CgpvcGVyYXRvciB1bnNpZ25lZCBsb25nICAoICkgY29uc3Q7Cgpjb25z
dCBJUmVzb3VyY2VMaWJyYXJ5CiAmcmVzb3VyY2VMaWJyYXJ5ICAgICAgICggKSBjb25zdDsKCiAK
SVN0cmluZwogIGFzU3RyaW5nICAgICAgICAgKCApIGNvbnN0LAogIGFzRGVidWdJbmZvICAgICAg
KCApIGNvbnN0OwoKcHJpdmF0ZToKIApJUmVzb3VyY2VJZAogICZvcGVyYXRvcj0gICAgKCBjb25z
dCBJUmVzb3VyY2VJZCYgcmVzb3VyY2VJZCApOwoKIAp1bnNpZ25lZCBsb25nCiAgZlJlc0lkOwoK
Y29uc3QgSVJlc291cmNlTGlicmFyeQogJmZSZXNMaWJyYXJ5OwoKfTsgIAoKIAoKIAoKCgoKCgoK
I3ByYWdtYSBlbnVtKHBvcCkKCgojcHJhZ21hIG5hbWVtYW5nbGluZyhwb3ApCgoKCgogCgogCiMg
MSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pcmVz
bGliLmlubCIgMQoKCgogCiAKIAoKCgoKCgoKCgoKCgoKCiAKIAogCiAKIAogCgogCiMgMSAiL2hv
bWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pYXBwLmhwcCIg
MQojIDIwOCAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVk
ZS9pYXBwLmhwcCIKCiMgMjkgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQu
YmluL2luY2x1ZGUvaXJlc2xpYi5pbmwiIDIKCiAKCmlubGluZSBJUmVzb3VyY2VJZDo6SVJlc291
cmNlSWQodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBjb25zdCBJUmVzb3VyY2VMaWJyYXJ5JiBy
ZXNvdXJjZUxpYnJhcnkpCiAgICAgICAgICAgICAgICAgICAgIDogZlJlc0xpYnJhcnkocmVzb3Vy
Y2VMaWJyYXJ5KSwgZlJlc0lkKHJlc291cmNlSWQpCnsgfQoKaW5saW5lIElSZXNvdXJjZUlkOjpJ
UmVzb3VyY2VJZChjb25zdCBJUmVzb3VyY2VJZCYgcmVzb3VyY2VJZCkKICAgICAgICAgICAgICAg
ICAgICAgOiBmUmVzTGlicmFyeShyZXNvdXJjZUlkLmZSZXNMaWJyYXJ5KSwgZlJlc0lkKHJlc291
cmNlSWQuZlJlc0lkKQp7IH0KCgppbmxpbmUgY29uc3QgSVJlc291cmNlTGlicmFyeSYgSVJlc291
cmNlSWQ6OnJlc291cmNlTGlicmFyeSgpIGNvbnN0CnsgcmV0dXJuIGZSZXNMaWJyYXJ5OyB9Cgpp
bmxpbmUgSVJlc291cmNlSWQ6Om9wZXJhdG9yIHVuc2lnbmVkIGxvbmcoICkgICBjb25zdAp7IHJl
dHVybiB0aGlzLT5mUmVzSWQ7IH0KCmlubGluZSB1bnNpZ25lZCBsb25nIElSZXNvdXJjZUlkOjpp
ZCggKSAgIGNvbnN0CnsgcmV0dXJuIHRoaXMtPmZSZXNJZDsgfQoKIAoKIyAzMzQgIi9ob21lL2Fr
bm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXJlc2xpYi5ocHAiIDIK
CiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFnbWEgcmVwb3J0KHBvcCkKI3ByYWdtYSBpbmZv
KHJlc3RvcmUpCiAKCiAKCiMgMzMgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFy
ZWQuYmluL2luY2x1ZGUvaWFwcC5ocHAiIDIKCiAKCiAKI3ByYWdtYSBpbmZvKG5vbmUpCiNwcmFn
bWEgcmVwb3J0KGxldmVsLCBfX0lPQ19IRUFERVJfUkVQT1JUX0xFVkVMKQojcHJhZ21hIGluZm8o
cmVzdG9yZSkKIAoKIAoKCgogCgogCgojcHJhZ21hIG5hbWVtYW5nbGluZyhfX0lPQ19OQU1FTUFO
R0xJTkdfU0NIRU1FKQoKCgoKCiNwcmFnbWEgZW51bSg0KQoKCgoKCgoKIAoKIAogCgogCmNsYXNz
IElDdXJyZW50QXBwbGljYXRpb247CmNsYXNzIElDdXJyZW50QXBwbGljYXRpb25EYXRhOwpjbGFz
cyBJUmVzb3VyY2VMaWJyYXJ5OwpjbGFzcyBJQ29sb3JNYXA7CmNsYXNzIElTdHJpbmc7CnRlbXBs
YXRlPGNsYXNzIFQ+IGNsYXNzIElTdGF0aWNPYmplY3RIZWxwZXI7CiAKCiAKCmNsYXNzIElBcHBs
aWNhdGlvbiA6IHB1YmxpYyBJTm9uR1VJQXBwbGljYXRpb24gewp0eXBlZGVmIElOb25HVUlBcHBs
aWNhdGlvbgogIEluaGVyaXRlZDsKcHVibGljOgogCnN0YXRpYyBJQ3VycmVudEFwcGxpY2F0aW9u
CiAmY3VycmVudCAoICk7Cgpwcm90ZWN0ZWQ6CiAKICBJQXBwbGljYXRpb24gKCBjb25zdCBJUHJv
Y2Vzc0lkJiBpZCApOwp2aXJ0dWFsCiB+SUFwcGxpY2F0aW9uICggKTsKCnByaXZhdGU6CiAKc3Rh
dGljIElDdXJyZW50QXBwbGljYXRpb24KICpwQ3VycmVudDsKfTsgIAoKCmNsYXNzIElDdXJyZW50
QXBwbGljYXRpb24gOiBwdWJsaWMgSUFwcGxpY2F0aW9uIHsKdHlwZWRlZiBJQXBwbGljYXRpb24K
ICBJbmhlcml0ZWQ7CnB1YmxpYzoKIAp2aXJ0dWFsIGludAogIGFyZ2MgICAgKCApIGNvbnN0OwoK
dmlydHVhbCBJU3RyaW5nCiAgYXJndiAgICAoIGludCBhcmd1bWVudE51bWJlciApIGNvbnN0OwoK
dmlydHVhbCBJQ3VycmVudEFwcGxpY2F0aW9uCiAmc2V0QXJncyAoIGludCAgICAgICAgICAgICAg
IGFyZ2MsCiAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGFyZ3ZbXSApOwoKIAp2aXJ0dWFs
IElSZXNvdXJjZUxpYnJhcnkKICZ1c2VyUmVzb3VyY2VMaWJyYXJ5ICAgICggKSBjb25zdCwKICZy
ZXNvdXJjZUxpYnJhcnkgICAgICAgICggKSBjb25zdDsKCnZpcnR1YWwgSUN1cnJlbnRBcHBsaWNh
dGlvbgogJnNldFVzZXJSZXNvdXJjZUxpYnJhcnkgKCBjb25zdCBjaGFyKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzTGliTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSUR5bmFt
aWNMaW5rTGlicmFyeTo6RVNlYXJjaExvY2F0aW9uIHNlYXJjaExvY2F0aW9uID0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUR5bmFtaWNMaW5rTGlicmFyeTo6a09TRGVmYXVs
dFNlYXJjaCksCiAmc2V0UmVzb3VyY2VMaWJyYXJ5ICAgICAoIGNvbnN0IGNoYXIqIHJlc0xpYk5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElEeW5hbWljTGlua0xpYnJhcnk6OkVTZWFy
Y2hMb2NhdGlvbiBzZWFyY2hMb2NhdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEeW5hbWljTGlua0xpYnJhcnk6OmtPU0RlZmF1bHRTZWFyY2gpOwoKCiAKdmlydHVh
bCBJQ29sb3JNYXAKICZjb2xvck1hcCAgICAgICAgICAgICAgICggKSBjb25zdDsKCnZpcnR1YWwg
SUN1cnJlbnRBcHBsaWNhdGlvbgogJmFkb3B0Q29sb3JNYXAgICAgICAgICAgKCBJQ29sb3JNYXAq
IGNvbG9yTWFwICk7CgogCnZpcnR1YWwgSUN1cnJlbnRBcHBsaWNhdGlvbgogJnJ1biAgKCApLAog
JmV4aXQgKCApOwoKcHJvdGVjdGVkOgogCiAgSUN1cnJlbnRBcHBsaWNhdGlvbiAoICk7CnZpcnR1
YWwKIH5JQ3VycmVudEFwcGxpY2F0aW9uICggKTsKCiAKCgoKCgpwcml2YXRlOgogCmZyaWVuZCBj
bGFzcyBJQXBwbGljYXRpb247CmZyaWVuZCBjbGFzcyBJU3RhdGljT2JqZWN0SGVscGVyPCBJQ3Vy
cmVudEFwcGxpY2F0aW9uID47CgpJUmVzb3VyY2VMaWJyYXJ5CiAqaWNsdWlMaWIsCiAqdXNlckxp
YjsKYm9vbAogIGV4ZVJlc291cmNlOwppbnQKICBhcmdDb3VudDsKSVN0cmluZwogKmFyZ1ZhbHVl
OwoKCgoKSUN1cnJlbnRBcHBsaWNhdGlvbkRhdGEKICpwQ3VycmVudEFwcGxpY2F0aW9uRGF0YTsK
SUNvbG9yTWFwCiAqZkNvbG9yTWFwOwp9OyAgCgogCgogCgoKCgoKCgojcHJhZ21hIGVudW0ocG9w
KQoKCiNwcmFnbWEgbmFtZW1hbmdsaW5nKHBvcCkKCgoKCiAKCiAKIAoKIAojcHJhZ21hIGluZm8o
bm9uZSkKI3ByYWdtYSByZXBvcnQocG9wKQojcHJhZ21hIGluZm8ocmVzdG9yZSkKIAoKIAoKIyAx
NCAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0xvZ0ZhY2lsaXR5LmhwcCIgMgoKICAg
IAogICAgCiAgICAKIyAxICIvaG9tZS9ha25vbGwvaW9jc3JjL2xpbnV4X3MzOTAtc2hhcmVkLmJp
bi9pbmNsdWRlL2l0aW1lLmhwcCIgMQojIDIwMSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pdGltZS5ocHAiCgoKCgoKCiMgMTcgIi9ob21lL3hodTYw
MzEvdHNmdy9JbmNsdWRlL1RTRldMb2dGYWNpbGl0eS5ocHAiIDIKCiAgICAKICAgIAojIDEgIi9o
b21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2luY2x1ZGUvaXN0cGFyc2Uu
aHBwIiAxCiMgMTAgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmluL2lu
Y2x1ZGUvaXN0cGFyc2UuaHBwIgoKCgojIDIyNSAiL2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9z
MzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pc3RwYXJzZS5ocHAiCgoKCgoKIyAxOSAiL2hvbWUveGh1
NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0xvZ0ZhY2lsaXR5LmhwcCIgMgoKICAgIAoKICAgICAKICAg
IAojIDEgIi9ob21lL3hodTYwMzEvdHNmdy9JbmNsdWRlL1RTRldMb2dEZXZpY2UuaHBwIiAxCiAK
IAogCiAKIAoKCiAgICAKCiAgICAgCiAgICAKICAgIAoKICAgICAKICAgICAKCgogICAgY2xhc3Mg
VFNGV0xvZ0RldmljZSB7CiAgICBwdWJsaWM6CgogICAgICAgICAKCgogICAgICAgIHZpcnR1YWwg
flRTRldMb2dEZXZpY2UoKTsKCiAgICAgICAgIAoKCiAgICAgICAgdm9pZCB3cml0ZShjb25zdCBJ
U3RyaW5nICZhTG9nU3RyaW5nKTsKCiAgICAgICAgIAoKCiAgICAgICAgSVN0cmluZyBjb25zdCAm
ZGV2aWNlTmFtZSh2b2lkKSBjb25zdDsKCgogICAgcHJvdGVjdGVkOgoKICAgICAgICAgCgoKICAg
ICAgICBUU0ZXTG9nRGV2aWNlKCk7CgogICAgICAgICAKCgogICAgICAgIHZpcnR1YWwgdm9pZCB3
cml0ZUltcGxlbWVudGF0aW9uKGNvbnN0IElTdHJpbmcgJmFMb2dTdHJpbmcpID0gMDsKCiAgICAg
ICAgIAoKCiAgICAgICAgdmlydHVhbCBJU3RyaW5nIGNvbnN0ICZkZXZpY2VOYW1lSW1wbGVtZW50
YXRpb24odm9pZCkgY29uc3QgPSAwOwoKICAgIHByaXZhdGU6CgogICAgICAgICAKICAgICAgICBJ
UHJpdmF0ZVJlc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlRGV2aWNl
TG9jazsKCiAgICB9OwoKICAgICAKICAgIGlubGluZSBJU3RyaW5nIGNvbnN0ICZrZXkoVFNGV0xv
Z0RldmljZSBjb25zdCAmYUVsZW1lbnQpIHsKCiAgICAgICAgcmV0dXJuKGFFbGVtZW50LmRldmlj
ZU5hbWUoKSk7CiAgICB9CgogICAgaW5saW5lIElTdHJpbmcgY29uc3QgJmtleShUU0ZXTG9nRGV2
aWNlIGNvbnN0ICphRWxlbWVudCkgewoKICAgICAgICByZXR1cm4oYUVsZW1lbnQtPmRldmljZU5h
bWUoKSk7CiAgICB9CgoKCiAKIAogCiAKIAojIDIzICIvaG9tZS94aHU2MDMxL3RzZncvSW5jbHVk
ZS9UU0ZXTG9nRmFjaWxpdHkuaHBwIiAyCgogICAgCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0lu
Y2x1ZGUvVFNGV0xvZ0RldmljZVJlcG9zaXRvcnkuaHBwIiAxCiAKIAogCiAKIAoKCiAgICAKCiAg
ICAgCiAgICAKICAgIAogICAgCgogICAgIAogICAgCgogICAgIAogICAgIAoKCiAgICBjbGFzcyBU
U0ZXTG9nRGV2aWNlUmVwb3NpdG9yeSB7CiAgICBwdWJsaWM6CgogICAgICAgICAKCgogICAgICAg
IHZpcnR1YWwgflRTRldMb2dEZXZpY2VSZXBvc2l0b3J5KCk7CgogICAgICAgICAKCgogICAgICAg
IHN0YXRpYyBUU0ZXTG9nRGV2aWNlUmVwb3NpdG9yeSAqZ2V0SW5zdGFuY2Uodm9pZCk7CgogICAg
ICAgICAKCgogICAgICAgIFRTRldMb2dEZXZpY2UgKmxvZ0RldmljZUZvcihjb25zdCBJU3RyaW5n
ICZhRGV2aWNlKTsKCiAgICAgICAgIAoKCiAgICAgICAgdm9pZCByZWdpc3RlckxvZ0RldmljZShU
U0ZXTG9nRGV2aWNlICphRGV2aWNlKTsKCiAgICBwcm90ZWN0ZWQ6CgogICAgICAgICAKCgogICAg
ICAgIFRTRldMb2dEZXZpY2VSZXBvc2l0b3J5KCk7CgogICAgICAgICAKICAgICAgICBJUHJpdmF0
ZVJlc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlUmVwb3NpdG9yeVJl
c291cmNlOwogICAgICAgIElLZXlTZXQ8VFNGV0xvZ0RldmljZSAqLCBJU3RyaW5nPiAgICAgICAg
ICAgICAgICB0aGVSZXBvc2l0b3J5OwoKICAgIHByaXZhdGU6CgogICAgICAgICAKICAgICAgICBz
dGF0aWMgVFNGV0xvZ0RldmljZVJlcG9zaXRvcnkgICAgICAgICAgICAgICAgICAgKnRoZUluc3Rh
bmNlOwoKICAgIH07CgoKCgogCiAKIAogCiAKIyAyNCAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1
ZGUvVFNGV0xvZ0ZhY2lsaXR5LmhwcCIgMgoKCiAgICAgCiAgICBjbGFzcyBUU0ZXTG9nRmFjaWxp
dHkgewogICAgcHVibGljOgoKICAgICAgICAgCgoKICAgICAgICBlbnVtIFNldmVyaXR5IHsKICAg
ICAgICAgICAgaW5mb3JtYXRpb24gPSAwLAogICAgICAgICAgICB3YXJuaW5nLAogICAgICAgICAg
ICBlcnJvciwKICAgICAgICAgICAgcGFuaWMKICAgICAgICB9OwoKICAgICAgICAgCgoKICAgICAg
ICBlbnVtIExvZ0xldmVsIHsKICAgICAgICAgICAgZXJyb3JzT25seSA9IDAsCiAgICAgICAgICAg
IGVycm9yc0FuZFdhcm5pbmdzLAogICAgICAgICAgICBhbGxNZXNzYWdlcwogICAgICAgIH07Cgog
ICAgICAgICAKCgogICAgICAgIGVudW0gTG9nRm9ybWF0IHsKICAgICAgICAgICAgcG9vciA9IDAs
CiAgICAgICAgICAgIHZlcmJvc2UKICAgICAgICB9OwoKCiAgICAgICAgIAoKCiAgICAgICAgflRT
RldMb2dGYWNpbGl0eSgpOwoKICAgICAgICAgCgoKICAgICAgICBzdGF0aWMgVFNGV0xvZ0ZhY2ls
aXR5ICogZ2V0SW5zdGFuY2Uodm9pZCk7CgogICAgICAgICAKCgogICAgICAgIHZvaWQgc2V0TG9n
TGV2ZWwoY29uc3QgZW51bSBMb2dMZXZlbCAmYUxldmVsKTsKICAgICAgICAKICAgICAgICAgCgoK
ICAgICAgICBjb25zdCBlbnVtIExvZ0xldmVsICZsb2dMZXZlbCh2b2lkKSBjb25zdDsKCiAgICAg
ICAgIAoKCiAgICAgICAgdm9pZCBzZXRMb2dGb3JtYXQoY29uc3QgZW51bSBMb2dGb3JtYXQgJmFG
b3JtYXQpOwogICAgICAgIAogICAgICAgICAKCgogICAgICAgIGNvbnN0IGVudW0gTG9nRm9ybWF0
ICZsb2dGb3JtYXQodm9pZCkgY29uc3Q7CgogICAgICAgICAKCgogICAgICAgIHZvaWQgd3JpdGVM
b2coY29uc3QgSVN0cmluZyAgICAgICAmYUxvZ0VudHJ5LAogICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSVN0cmluZyAgICAgICAmYUZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyAgICAgICBhTGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVudW0gU2V2ZXJpdHkgJmFTZXZlcml0eSk7CgogICAgICAgICAKCgogICAgICAgIHZvaWQgd3Jp
dGVMb2coY29uc3QgSVN0cmluZyAmYUZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBhTGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW0g
U2V2ZXJpdHkgJmFTZXZlcml0eSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFG
b3JtYXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAuLi4pOwoKICAgICAgICAgCgoKICAg
ICAgICB2b2lkIHdyaXRlTG9nKElFeGNlcHRpb24gJmFFeGNlcHRpb24sIAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSVN0cmluZyAmYUZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBhTGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVu
dW0gU2V2ZXJpdHkgJmFTZXZlcml0eSk7CgoKICAgICAgICAgCgoKICAgICAgICB2b2lkIGR1bXBC
dWZmZXIoY29uc3QgSVN0cmluZyAgICAgICAmYUxvZ0VudHJ5LAogICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICAgICAgICAgICphQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nICAgICAgIGFCdWZmZXJMZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElTdHJpbmcgICAgICAgJmFGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyAgICAgICBhTGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZW51bSBTZXZlcml0eSAmYVNldmVyaXR5KTsKICAgIHByaXZhdGU6CgogICAgICAgICAK
CgoKCiAgICAgICAgVFNGV0xvZ0ZhY2lsaXR5KCk7CgogICAgICAgICAKCgogICAgICAgIGJvb2wg
aGF2ZVRvTG9nKGNvbnN0IGVudW0gU2V2ZXJpdHkgJmFTZXZlcml0eSkgY29uc3Q7CgogICAgICAg
ICAKCgogICAgICAgIElTdHJpbmcgY3JlYXRlTG9nSGVhZGVyKGNvbnN0IElTdHJpbmcgICAgICAg
JmFGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
ICAgICAgIGFMaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVudW0gU2V2ZXJpdHkgJmFTZXZlcml0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgIAoKCiAgICAgICAgSVN0cmluZyBsb2dMZXZlbEFzU3RyaW5nKGNvbnN0IGVu
dW0gTG9nTGV2ZWwgJmFMZXZlbCkgY29uc3Q7CiAgICAgICAgCiAgICAgICAgIAoKCiAgICAgICAg
SVN0cmluZyBsb2dGb3JtYXRBc1N0cmluZyhjb25zdCBlbnVtIExvZ0Zvcm1hdCAmYUZvcm1hdCkg
Y29uc3Q7CgogICAgICAgICAKICAgICAgICBlbnVtIExvZ0xldmVsICAgICAgICAgICAgICAgICAg
ICAgICB0aGVMb2dMZXZlbDsKICAgICAgICBlbnVtIExvZ0Zvcm1hdCAgICAgICAgICAgICAgICAg
ICAgICB0aGVMb2dGb3JtYXQ7CgogICAgICAgICAKICAgICAgICBzdGF0aWMgVFNGV0xvZ0ZhY2ls
aXR5ICAgICAgICAgICAgICAqdGhlSW5zdGFuY2U7CiAgICB9OwoKICAgICAKICAgIAoKCgoKICAg
IAoKCgoKCgoKIAogCiAKIAogCiMgMTYgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9t
cXF1ZXVlLmNwcCIgMgoKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21xcXVl
dWUuaHBwIiAxCgoKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21xbWVzc2Fn
ZS5ocHAiIDEKCgoKIyAxICIvdXNyL2luY2x1ZGUvY21xYy5oIiAxIDMKIAogICAKICAKICAKICAK
ICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAKICAK
ICAKICAKICAKCiAKICAgZXh0ZXJuICJDIiB7CiAKICAKICAKICAKCiAgCiAKCiAgCiAKCiAgCiAK
IAoKICAKIAoKCgogIAogIAogIAoKICAKIAoKICAKIAoKICAKIAogCiAKCiAgCiAKIAogCgogIAog
CgogIAogCiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKIAogCiAKIAogCgogIAogCgogIAogCiAK
CiAgCiAKCiAgCiAKIAogCiAKCiAgCiAKIAoKICAKIAogCiAKIAoKICAKIAoKICAKIAoKICAKIAog
CiAKIAogCiAKIAoKICAKIAogCiAKIAogCiAKIAoKICAKIAogCiAKIAoKICAKIAogCiAKIAoKICAK
ICAKICAKCiAgCiAKCiAgCiAKCiAgCiAKIAogCgogIAogCiAKIAoKCiAgCiAgCiAgCgogIAogCgog
IAogCgogIAogCiAKCiAgCiAKIAoKICAKICAKCgogIAogIAogIAoKICAKIAoKICAKIAoKICAKIAog
CgoKICAKICAKICAKCiAgCiAKCiAgCiAKCiAgCiAKIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogIAogCgogIAogCiAKIAogCiAKCiAgCiAKIAogCiAK
IAogCiAKCiAgCiAKIAogCgogIAogCiAKIAoKICAKIAogCgogIAogCgogIAogCgoKICAKIAoKCiAg
CiAgCiAgCgogIAogCgogIAogCgogIAogCiAKCiAgCiAKCiAgCiAKCiAgCiAKCiAgCiAKCiAgCiAK
CiAgCiAKCgogIAogCiAKIAoKICAKIAogCgogIAogCiAKCgogIAogIAogIAoKICAKIAoKICAKIAoK
ICAKIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgog
IAogCiAKIAoKICAKIAogCiAKIAogCiAKIAogCiAKIAoKICAKIAoKICAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAoKICAKIAoKICAKIAogCiAKIAoKICAKIAogCiAKCiAgCiAKIAog
CgogIAogCiAKIAogCgogIAogCiAKIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAoKICAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CgogIAogCgogIAogCiAKIAoKICAKIAoKICAKIAoKCgogIAogCgogCgoKCiAgCiAKCgoKIAoKCgoK
CgogIAogCgoKICAKIAoKCgoKICAKIAogCiAKIAogCiAKIAogCiAKCiAgCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKICAKIAoKICAKIAoK
CgogIAogCiAKIAogCiAKIAogCgogIAogCiAKIAoKICAKIAoKCiAgCiAgCiAgCgogIAogCgogIAog
CgogIAogCiAKCiAgCiAKCiAgCiAKCgogIAogIAogIAoKICAKIAoKICAKIAoKICAKIAogCiAKIAoK
ICAKIAoKICAKIAogCiAKIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAgCiAK
CgogIAogCgoKCgoKICAKIAogCgoKICAKICAKICAKCiAgCiAKCiAgCiAKCiAgCiAKIAogCgogIAog
CgogIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAgCiAKIAogCiAKIAogCgogIAogIAog
IAoKICAKIAoKICAKIAoKICAKIAogCgogIAogCiAKCiAgCiAKCiAgCiAKIAoKCgogIAogIAogIAoK
ICAKIAoKICAKIAoKICAKIAogCgogIAogCiAKCiAgCiAKCiAgCiAKCgoKCiAgCiAgCiAgCgogIAog
CgogIAogCgogIAogCiAKCgogIAogIAogIAoKICAKIAoKICAKIAoKICAKIAogCiAKCiAgCiAKIAog
CgoKICAKICAKICAKCiAgCiAKCiAgCiAKCiAgCiAKIAoKICAKIAogCgogIAogCgoKICAKICAKICAK
CiAgCiAKCiAgCiAKCiAgCiAKIAoKCiAgCiAgCiAgCgogIAogCiAKCiAgCiAKIAogCgoKICAKICAK
ICAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKCiAgCiAKIAoKCiAgCiAgCiAgCgogIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAoKCiAgCiAgCiAgCgogIAogCiAKCgogIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCgogIAogCiAKIAogCgogIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCgoKICAKICAKICAKCiAgCiAK
IAogCiAKIAoKICAKIAogCiAKIAoKICAKIAoKICAKIAogCiAKIAoKICAKIAogCgogIAogCiAKCiAg
CiAKIAoKICAKIAogCgogIAogCiAKCiAgCiAKIAoKICAKIAogCiAKIAoKICAKIAogCgogIAogCiAK
CiAgCiAKIAogCiAKCiAgCiAKIAoKICAKIAogCiAKCiAgCiAgCiAgCgogIAogCgoKICAKICAKICAK
CiAgCiAgCgoKICAKICAKICAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogIAog
CiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKCiAgCiAKIAogCiAgCiAKIAoKICAKIAogCiAKIAoK
ICAKICAKCgogIAogIAogIAoKICAKIHR5cGVkZWYgdW5zaWduZWQgY2hhciBNUUJZVEU7CiB0eXBl
ZGVmIE1RQllURSAqICBQTVFCWVRFOwogdHlwZWRlZiBNUUJZVEUgTVFCWVRFOFs4XTsKIHR5cGVk
ZWYgTVFCWVRFOCAqICBQTVFCWVRFODsKIHR5cGVkZWYgTVFCWVRFIE1RQllURTE2WzE2XTsKIHR5
cGVkZWYgTVFCWVRFMTYgKiAgUE1RQllURTE2OwogdHlwZWRlZiBNUUJZVEUgTVFCWVRFMjRbMjRd
OwogdHlwZWRlZiBNUUJZVEUyNCAqICBQTVFCWVRFMjQ7CiB0eXBlZGVmIE1RQllURSBNUUJZVEUz
MlszMl07CiB0eXBlZGVmIE1RQllURTMyICogIFBNUUJZVEUzMjsKIHR5cGVkZWYgTVFCWVRFIE1R
QllURTQwWzQwXTsKIHR5cGVkZWYgTVFCWVRFNDAgKiAgUE1RQllURTQwOwogdHlwZWRlZiBNUUJZ
VEUgTVFCWVRFMTI4WzEyOF07CiB0eXBlZGVmIE1RQllURTEyOCAqICBQTVFCWVRFMTI4OwoKICAK
IHR5cGVkZWYgY2hhciBNUUNIQVI7CiB0eXBlZGVmIE1RQ0hBUiAqICBQTVFDSEFSOwogdHlwZWRl
ZiBNUUNIQVIgTVFDSEFSNFs0XTsKIHR5cGVkZWYgTVFDSEFSNCAqICBQTVFDSEFSNDsKIHR5cGVk
ZWYgTVFDSEFSIE1RQ0hBUjhbOF07CiB0eXBlZGVmIE1RQ0hBUjggKiAgUE1RQ0hBUjg7CiB0eXBl
ZGVmIE1RQ0hBUiBNUUNIQVIxMlsxMl07CiB0eXBlZGVmIE1RQ0hBUjEyICogIFBNUUNIQVIxMjsK
IHR5cGVkZWYgTVFDSEFSIE1RQ0hBUjIwWzIwXTsKIHR5cGVkZWYgTVFDSEFSMjAgKiAgUE1RQ0hB
UjIwOwogdHlwZWRlZiBNUUNIQVIgTVFDSEFSMjhbMjhdOwogdHlwZWRlZiBNUUNIQVIyOCAqICBQ
TVFDSEFSMjg7CiB0eXBlZGVmIE1RQ0hBUiBNUUNIQVIzMlszMl07CiB0eXBlZGVmIE1RQ0hBUjMy
ICogIFBNUUNIQVIzMjsKIHR5cGVkZWYgTVFDSEFSIE1RQ0hBUjQ4WzQ4XTsKIHR5cGVkZWYgTVFD
SEFSNDggKiAgUE1RQ0hBUjQ4OwogdHlwZWRlZiBNUUNIQVIgTVFDSEFSNjRbNjRdOwogdHlwZWRl
ZiBNUUNIQVI2NCAqICBQTVFDSEFSNjQ7CiB0eXBlZGVmIE1RQ0hBUiBNUUNIQVIxMjhbMTI4XTsK
IHR5cGVkZWYgTVFDSEFSMTI4ICogIFBNUUNIQVIxMjg7CiB0eXBlZGVmIE1RQ0hBUiBNUUNIQVIy
NTZbMjU2XTsKIHR5cGVkZWYgTVFDSEFSMjU2ICogIFBNUUNIQVIyNTY7CgogIAogdHlwZWRlZiBs
b25nIE1RTE9ORzsKIHR5cGVkZWYgTVFMT05HICogIFBNUUxPTkc7CiB0eXBlZGVmIE1RTE9ORyBN
UUhDT05OOwogdHlwZWRlZiBNUUhDT05OICogIFBNUUhDT05OOwogdHlwZWRlZiBNUUxPTkcgTVFI
T0JKOwogdHlwZWRlZiBNUUhPQkogKiAgUE1RSE9CSjsKIHR5cGVkZWYgdm9pZCAqICBNUVBUUjsK
IHR5cGVkZWYgTVFQVFIgKiAgUE1RUFRSOwogdHlwZWRlZiB2b2lkICogIFBNUVZPSUQ7CiB0eXBl
ZGVmIFBNUVZPSUQgKiAgUFBNUVZPSUQ7CgoKICAKICAKICAKCiB0eXBlZGVmIHN0cnVjdCB0YWdN
UUJPIHsKICAgTVFDSEFSNCAgU3RydWNJZDsgICAKICAgTVFMT05HICAgVmVyc2lvbjsgICAKICAg
TVFMT05HICAgT3B0aW9uczsgICAKIH0gTVFCTzsKIHR5cGVkZWYgTVFCTyAqICBQTVFCTzsKCiAK
CgoKCiAgCiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFDSUggewogICBNUUNIQVI0ICBTdHJ1
Y0lkOyAgICAgICAgICAgICAgCiAgIE1RTE9ORyAgIFZlcnNpb247ICAgICAgICAgICAgICAKICAg
TVFMT05HICAgU3RydWNMZW5ndGg7ICAgICAgICAgIAogICBNUUxPTkcgICBFbmNvZGluZzsgICAg
ICAgICAgICAgCiAgIE1RTE9ORyAgIENvZGVkQ2hhclNldElkOyAgICAgICAKICAgTVFDSEFSOCAg
Rm9ybWF0OyAgICAgICAgICAgICAgIAoKICAgTVFMT05HICAgRmxhZ3M7ICAgICAgICAgICAgICAg
IAogICBNUUxPTkcgICBSZXR1cm5Db2RlOyAgICAgICAgICAgCiAgIE1RTE9ORyAgIENvbXBDb2Rl
OyAgICAgICAgICAgICAKCiAgIE1RTE9ORyAgIFJlYXNvbjsgICAgICAgICAgICAgICAKCiAgIE1R
TE9ORyAgIFVPV0NvbnRyb2w7ICAgICAgICAgICAKICAgTVFMT05HICAgR2V0V2FpdEludGVydmFs
OyAgICAgIAoKICAgTVFMT05HICAgTGlua1R5cGU7ICAgICAgICAgICAgIAogICBNUUxPTkcgICBP
dXRwdXREYXRhTGVuZ3RoOyAgICAgCiAgIE1RTE9ORyAgIEZhY2lsaXR5S2VlcFRpbWU7ICAgICAK
ICAgTVFMT05HICAgQURTRGVzY3JpcHRvcjsgICAgICAgIAogICBNUUxPTkcgICBDb252ZXJzYXRp
b25hbFRhc2s7ICAgCgogICBNUUxPTkcgICBUYXNrRW5kU3RhdHVzOyAgICAgICAgCiAgIE1RQllU
RTggIEZhY2lsaXR5OyAgICAgICAgICAgICAKICAgTVFDSEFSNCAgRnVuY3Rpb247ICAgICAgICAg
ICAgIAoKICAgTVFDSEFSNCAgQWJlbmRDb2RlOyAgICAgICAgICAgIAogICBNUUNIQVI4ICBBdXRo
ZW50aWNhdG9yOyAgICAgICAgCiAgIE1RQ0hBUjggIFJlc2VydmVkMTsgICAgICAgICAgICAKICAg
TVFDSEFSOCAgUmVwbHlUb0Zvcm1hdDsgICAgICAgIAogICBNUUNIQVI0ICBSZW1vdGVTeXNJZDsg
ICAgICAgICAgCiAgIE1RQ0hBUjQgIFJlbW90ZVRyYW5zSWQ7ICAgICAgICAKICAgTVFDSEFSNCAg
VHJhbnNhY3Rpb25JZDsgICAgICAgIAogICBNUUNIQVI0ICBGYWNpbGl0eUxpa2U7ICAgICAgICAg
CiAgIE1RQ0hBUjQgIEF0dGVudGlvbklkOyAgICAgICAgICAKICAgTVFDSEFSNCAgU3RhcnRDb2Rl
OyAgICAgICAgICAgIAogICBNUUNIQVI0ICBDYW5jZWxDb2RlOyAgICAgICAgICAgCiAgIE1RQ0hB
UjQgIE5leHRUcmFuc2FjdGlvbklkOyAgICAKICAgTVFDSEFSOCAgUmVzZXJ2ZWQyOyAgICAgICAg
ICAgIAogICBNUUNIQVI4ICBSZXNlcnZlZDM7ICAgICAgICAgICAgCiAgIE1RTE9ORyAgIEN1cnNv
clBvc2l0aW9uOyAgICAgICAKICAgTVFMT05HICAgRXJyb3JPZmZzZXQ7ICAgICAgICAgIAogICBN
UUxPTkcgICBJbnB1dEl0ZW07ICAgICAgICAgICAgCiAgIE1RTE9ORyAgIFJlc2VydmVkNDsgICAg
ICAgICAgICAKIH0gTVFDSUg7CiB0eXBlZGVmIE1RQ0lIICogIFBNUUNJSDsKCiAKIyAxNzgwICIv
dXNyL2luY2x1ZGUvY21xYy5oIiAzCgoKICAKICAKICAKCiB0eXBlZGVmIHN0cnVjdCB0YWdNUUNO
TyB7CiAgIE1RQ0hBUjQgIFN0cnVjSWQ7ICAgICAgICAgICAgCiAgIE1RTE9ORyAgIFZlcnNpb247
ICAgICAgICAgICAgCiAgIE1RTE9ORyAgIE9wdGlvbnM7ICAgICAgICAgICAgCgogICBNUUxPTkcg
ICBDbGllbnRDb25uT2Zmc2V0OyAgIAoKICAgTVFQVFIgICAgQ2xpZW50Q29ublB0cjsgICAgICAK
CiB9IE1RQ05POwogdHlwZWRlZiBNUUNOTyAqICBQTVFDTk87CgogCgoKCgoKCiAgCiAgCiAgCgog
dHlwZWRlZiBzdHJ1Y3QgdGFnTVFESCB7CiAgIE1RQ0hBUjQgIFN0cnVjSWQ7ICAgICAgICAgICAK
ICAgTVFMT05HICAgVmVyc2lvbjsgICAgICAgICAgIAogICBNUUxPTkcgICBTdHJ1Y0xlbmd0aDsg
ICAgICAgCgogICBNUUxPTkcgICBFbmNvZGluZzsgICAgICAgICAgCgogICBNUUxPTkcgICBDb2Rl
ZENoYXJTZXRJZDsgICAgCgogICBNUUNIQVI4ICBGb3JtYXQ7ICAgICAgICAgICAgCgogICBNUUxP
TkcgICBGbGFnczsgICAgICAgICAgICAgCiAgIE1RTE9ORyAgIFB1dE1zZ1JlY0ZpZWxkczsgICAK
CiAgIE1RTE9ORyAgIFJlY3NQcmVzZW50OyAgICAgICAKICAgTVFMT05HICAgT2JqZWN0UmVjT2Zm
c2V0OyAgIAoKICAgTVFMT05HICAgUHV0TXNnUmVjT2Zmc2V0OyAgIAoKIH0gTVFESDsKIHR5cGVk
ZWYgTVFESCAqICBQTVFESDsKCiAKIyAxODQyICIvdXNyL2luY2x1ZGUvY21xYy5oIiAzCgoKICAK
ICAKICAKCiB0eXBlZGVmIHN0cnVjdCB0YWdNUURMSCB7CiAgIE1RQ0hBUjQgICBTdHJ1Y0lkOyAg
ICAgICAgICAKICAgTVFMT05HICAgIFZlcnNpb247ICAgICAgICAgIAogICBNUUxPTkcgICAgUmVh
c29uOyAgICAgICAgICAgCgogICBNUUNIQVI0OCAgRGVzdFFOYW1lOyAgICAgICAgCiAgIE1RQ0hB
UjQ4ICBEZXN0UU1nck5hbWU7ICAgICAKCiAgIE1RTE9ORyAgICBFbmNvZGluZzsgICAgICAgICAK
CiAgIE1RTE9ORyAgICBDb2RlZENoYXJTZXRJZDsgICAKCiAgIE1RQ0hBUjggICBGb3JtYXQ7ICAg
ICAgICAgICAKCiAgIE1RTE9ORyAgICBQdXRBcHBsVHlwZTsgICAgICAKCgogICBNUUNIQVIyOCAg
UHV0QXBwbE5hbWU7ICAgICAgCgoKICAgTVFDSEFSOCAgIFB1dERhdGU7ICAgICAgICAgIAoKCiAg
IE1RQ0hBUjggICBQdXRUaW1lOyAgICAgICAgICAKCgogfSBNUURMSDsKIHR5cGVkZWYgTVFETEgg
KiAgUE1RRExIOwoKIAojIDE4ODkgIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMKCgogIAogIAogIAoK
IHR5cGVkZWYgc3RydWN0IHRhZ01RR01PIHsKICAgTVFDSEFSNCAgIFN0cnVjSWQ7ICAgICAgICAg
IAogICBNUUxPTkcgICAgVmVyc2lvbjsgICAgICAgICAgCiAgIE1RTE9ORyAgICBPcHRpb25zOyAg
ICAgICAgICAKCiAgIE1RTE9ORyAgICBXYWl0SW50ZXJ2YWw7ICAgICAKICAgTVFMT05HICAgIFNp
Z25hbDE7ICAgICAgICAgIAogICBNUUxPTkcgICAgU2lnbmFsMjsgICAgICAgICAgCiAgIE1RQ0hB
UjQ4ICBSZXNvbHZlZFFOYW1lOyAgICAKICAgTVFMT05HICAgIE1hdGNoT3B0aW9uczsgICAgIAoK
ICAgTVFDSEFSICAgIEdyb3VwU3RhdHVzOyAgICAgIAoKICAgTVFDSEFSICAgIFNlZ21lbnRTdGF0
dXM7ICAgIAoKCiAgIE1RQ0hBUiAgICBTZWdtZW50YXRpb247ICAgICAKCgogICBNUUNIQVIgICAg
UmVzZXJ2ZWQxOyAgICAgICAgCiAgIE1RQllURTE2ICBNc2dUb2tlbjsgICAgICAgICAKICAgTVFM
T05HICAgIFJldHVybmVkTGVuZ3RoOyAgIAoKIH0gTVFHTU87CiB0eXBlZGVmIE1RR01PICogIFBN
UUdNTzsKCiAKIyAxOTM1ICIvdXNyL2luY2x1ZGUvY21xYy5oIiAzCgoKICAKICAKICAKCiB0eXBl
ZGVmIHN0cnVjdCB0YWdNUUlJSCB7CiAgIE1RQ0hBUjQgICBTdHJ1Y0lkOyAgICAgICAgICAKICAg
TVFMT05HICAgIFZlcnNpb247ICAgICAgICAgIAogICBNUUxPTkcgICAgU3RydWNMZW5ndGg7ICAg
ICAgCiAgIE1RTE9ORyAgICBFbmNvZGluZzsgICAgICAgICAKICAgTVFMT05HICAgIENvZGVkQ2hh
clNldElkOyAgIAogICBNUUNIQVI4ICAgRm9ybWF0OyAgICAgICAgICAgCgogICBNUUxPTkcgICAg
RmxhZ3M7ICAgICAgICAgICAgCiAgIE1RQ0hBUjggICBMVGVybU92ZXJyaWRlOyAgICAKICAgTVFD
SEFSOCAgIE1GU01hcE5hbWU7ICAgICAgIAogICBNUUNIQVI4ICAgUmVwbHlUb0Zvcm1hdDsgICAg
CiAgIE1RQ0hBUjggICBBdXRoZW50aWNhdG9yOyAgICAKICAgTVFCWVRFMTYgIFRyYW5JbnN0YW5j
ZUlkOyAgIAogICBNUUNIQVIgICAgVHJhblN0YXRlOyAgICAgICAgCiAgIE1RQ0hBUiAgICBDb21t
aXRNb2RlOyAgICAgICAKICAgTVFDSEFSICAgIFNlY3VyaXR5U2NvcGU7ICAgIAogICBNUUNIQVIg
ICAgUmVzZXJ2ZWQ7ICAgICAgICAgCiB9IE1RSUlIOwogdHlwZWRlZiBNUUlJSCAqICBQTVFJSUg7
CgogCiMgMTk3OCAiL3Vzci9pbmNsdWRlL2NtcWMuaCIgMwoKCiAgCiAgCiAgCgogdHlwZWRlZiBz
dHJ1Y3QgdGFnTVFNRCB7CiAgIE1RQ0hBUjQgICBTdHJ1Y0lkOyAgICAgICAgICAgIAogICBNUUxP
TkcgICAgVmVyc2lvbjsgICAgICAgICAgICAKICAgTVFMT05HICAgIFJlcG9ydDsgICAgICAgICAg
ICAgCiAgIE1RTE9ORyAgICBNc2dUeXBlOyAgICAgICAgICAgIAogICBNUUxPTkcgICAgRXhwaXJ5
OyAgICAgICAgICAgICAKICAgTVFMT05HICAgIEZlZWRiYWNrOyAgICAgICAgICAgCiAgIE1RTE9O
RyAgICBFbmNvZGluZzsgICAgICAgICAgIAogICBNUUxPTkcgICAgQ29kZWRDaGFyU2V0SWQ7ICAg
ICAKCiAgIE1RQ0hBUjggICBGb3JtYXQ7ICAgICAgICAgICAgIAogICBNUUxPTkcgICAgUHJpb3Jp
dHk7ICAgICAgICAgICAKICAgTVFMT05HICAgIFBlcnNpc3RlbmNlOyAgICAgICAgCiAgIE1RQllU
RTI0ICBNc2dJZDsgICAgICAgICAgICAgIAogICBNUUJZVEUyNCAgQ29ycmVsSWQ7ICAgICAgICAg
ICAKICAgTVFMT05HICAgIEJhY2tvdXRDb3VudDsgICAgICAgCiAgIE1RQ0hBUjQ4ICBSZXBseVRv
UTsgICAgICAgICAgIAogICBNUUNIQVI0OCAgUmVwbHlUb1FNZ3I7ICAgICAgICAKICAgTVFDSEFS
MTIgIFVzZXJJZGVudGlmaWVyOyAgICAgCiAgIE1RQllURTMyICBBY2NvdW50aW5nVG9rZW47ICAg
IAogICBNUUNIQVIzMiAgQXBwbElkZW50aXR5RGF0YTsgICAKCiAgIE1RTE9ORyAgICBQdXRBcHBs
VHlwZTsgICAgICAgIAoKICAgTVFDSEFSMjggIFB1dEFwcGxOYW1lOyAgICAgICAgCgogICBNUUNI
QVI4ICAgUHV0RGF0ZTsgICAgICAgICAgICAKICAgTVFDSEFSOCAgIFB1dFRpbWU7ICAgICAgICAg
ICAgCiAgIE1RQ0hBUjQgICBBcHBsT3JpZ2luRGF0YTsgICAgIAoKICAgTVFCWVRFMjQgIEdyb3Vw
SWQ7ICAgICAgICAgICAgCiAgIE1RTE9ORyAgICBNc2dTZXFOdW1iZXI7ICAgICAgIAoKICAgTVFM
T05HICAgIE9mZnNldDsgICAgICAgICAgICAgCgogICBNUUxPTkcgICAgTXNnRmxhZ3M7ICAgICAg
ICAgICAKICAgTVFMT05HICAgIE9yaWdpbmFsTGVuZ3RoOyAgICAgCiB9IE1RTUQ7CiB0eXBlZGVm
IE1RTUQgKiAgUE1RTUQ7CgogCiMgMjA1MyAiL3Vzci9pbmNsdWRlL2NtcWMuaCIgMwoKCiAgCiAg
CiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFNREUgewogICBNUUNIQVI0ICAgU3RydWNJZDsgICAg
ICAgICAgCiAgIE1RTE9ORyAgICBWZXJzaW9uOyAgICAgICAgICAKICAgTVFMT05HICAgIFN0cnVj
TGVuZ3RoOyAgICAgIAogICBNUUxPTkcgICAgRW5jb2Rpbmc7ICAgICAgICAgCgogICBNUUxPTkcg
ICAgQ29kZWRDaGFyU2V0SWQ7ICAgCgogICBNUUNIQVI4ICAgRm9ybWF0OyAgICAgICAgICAgCgog
ICBNUUxPTkcgICAgRmxhZ3M7ICAgICAgICAgICAgCiAgIE1RQllURTI0ICBHcm91cElkOyAgICAg
ICAgICAKICAgTVFMT05HICAgIE1zZ1NlcU51bWJlcjsgICAgIAoKICAgTVFMT05HICAgIE9mZnNl
dDsgICAgICAgICAgIAoKICAgTVFMT05HICAgIE1zZ0ZsYWdzOyAgICAgICAgIAogICBNUUxPTkcg
ICAgT3JpZ2luYWxMZW5ndGg7ICAgCiB9IE1RTURFOwogdHlwZWRlZiBNUU1ERSAqICBQTVFNREU7
CgogCiMgMjA5MiAiL3Vzci9pbmNsdWRlL2NtcWMuaCIgMwoKCiAgCiAgCiAgCgogdHlwZWRlZiBz
dHJ1Y3QgdGFnTVFNRDEgewogICBNUUNIQVI0ICAgU3RydWNJZDsgICAgICAgICAgICAKICAgTVFM
T05HICAgIFZlcnNpb247ICAgICAgICAgICAgCiAgIE1RTE9ORyAgICBSZXBvcnQ7ICAgICAgICAg
ICAgIAogICBNUUxPTkcgICAgTXNnVHlwZTsgICAgICAgICAgICAKICAgTVFMT05HICAgIEV4cGly
eTsgICAgICAgICAgICAgCiAgIE1RTE9ORyAgICBGZWVkYmFjazsgICAgICAgICAgIAogICBNUUxP
TkcgICAgRW5jb2Rpbmc7ICAgICAgICAgICAKICAgTVFMT05HICAgIENvZGVkQ2hhclNldElkOyAg
ICAgCgogICBNUUNIQVI4ICAgRm9ybWF0OyAgICAgICAgICAgICAKICAgTVFMT05HICAgIFByaW9y
aXR5OyAgICAgICAgICAgCiAgIE1RTE9ORyAgICBQZXJzaXN0ZW5jZTsgICAgICAgIAogICBNUUJZ
VEUyNCAgTXNnSWQ7ICAgICAgICAgICAgICAKICAgTVFCWVRFMjQgIENvcnJlbElkOyAgICAgICAg
ICAgCiAgIE1RTE9ORyAgICBCYWNrb3V0Q291bnQ7ICAgICAgIAogICBNUUNIQVI0OCAgUmVwbHlU
b1E7ICAgICAgICAgICAKICAgTVFDSEFSNDggIFJlcGx5VG9RTWdyOyAgICAgICAgCiAgIE1RQ0hB
UjEyICBVc2VySWRlbnRpZmllcjsgICAgIAogICBNUUJZVEUzMiAgQWNjb3VudGluZ1Rva2VuOyAg
ICAKICAgTVFDSEFSMzIgIEFwcGxJZGVudGl0eURhdGE7ICAgCgogICBNUUxPTkcgICAgUHV0QXBw
bFR5cGU7ICAgICAgICAKCiAgIE1RQ0hBUjI4ICBQdXRBcHBsTmFtZTsgICAgICAgIAoKICAgTVFD
SEFSOCAgIFB1dERhdGU7ICAgICAgICAgICAgCiAgIE1RQ0hBUjggICBQdXRUaW1lOyAgICAgICAg
ICAgIAogICBNUUNIQVI0ICAgQXBwbE9yaWdpbkRhdGE7ICAgICAKCiB9IE1RTUQxOwogdHlwZWRl
ZiBNUU1EMSAqICBQTVFNRDE7CgogCiMgMjE1NSAiL3Vzci9pbmNsdWRlL2NtcWMuaCIgMwoKCiAg
CiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFPRCB7CiAgIE1RQ0hBUjQgICBTdHJ1Y0lkOyAg
ICAgICAgICAgICAgIAogICBNUUxPTkcgICAgVmVyc2lvbjsgICAgICAgICAgICAgICAKICAgTVFM
T05HICAgIE9iamVjdFR5cGU7ICAgICAgICAgICAgCiAgIE1RQ0hBUjQ4ICBPYmplY3ROYW1lOyAg
ICAgICAgICAgIAogICBNUUNIQVI0OCAgT2JqZWN0UU1nck5hbWU7ICAgICAgICAKICAgTVFDSEFS
NDggIER5bmFtaWNRTmFtZTsgICAgICAgICAgCiAgIE1RQ0hBUjEyICBBbHRlcm5hdGVVc2VySWQ7
ICAgICAgIAogICBNUUxPTkcgICAgUmVjc1ByZXNlbnQ7ICAgICAgICAgICAKCiAgIE1RTE9ORyAg
ICBLbm93bkRlc3RDb3VudDsgICAgICAgIAoKICAgTVFMT05HICAgIFVua25vd25EZXN0Q291bnQ7
ICAgICAgCgogICBNUUxPTkcgICAgSW52YWxpZERlc3RDb3VudDsgICAgICAKCiAgIE1RTE9ORyAg
ICBPYmplY3RSZWNPZmZzZXQ7ICAgICAgIAoKICAgTVFMT05HICAgIFJlc3BvbnNlUmVjT2Zmc2V0
OyAgICAgCgogICBNUVBUUiAgICAgT2JqZWN0UmVjUHRyOyAgICAgICAgICAKICAgTVFQVFIgICAg
IFJlc3BvbnNlUmVjUHRyOyAgICAgICAgCgogICBNUUJZVEU0MCAgQWx0ZXJuYXRlU2VjdXJpdHlJ
ZDsgICAKICAgTVFDSEFSNDggIFJlc29sdmVkUU5hbWU7ICAgICAgICAgCiAgIE1RQ0hBUjQ4ICBS
ZXNvbHZlZFFNZ3JOYW1lOyAgICAgIAogfSBNUU9EOwogdHlwZWRlZiBNUU9EICogIFBNUU9EOwoK
IAojIDIyMDggIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMKCgogIAogIAogIAoKIHR5cGVkZWYgc3Ry
dWN0IHRhZ01RT1IgewogICBNUUNIQVI0OCAgT2JqZWN0TmFtZTsgICAgICAgCiAgIE1RQ0hBUjQ4
ICBPYmplY3RRTWdyTmFtZTsgICAKIH0gTVFPUjsKIHR5cGVkZWYgTVFPUiAqICBQTVFPUjsKCiAK
CgoKICAKICAKICAKCiB0eXBlZGVmIHN0cnVjdCB0YWdNUVBNTyB7CiAgIE1RQ0hBUjQgICBTdHJ1
Y0lkOyAgICAgICAgICAgICAKICAgTVFMT05HICAgIFZlcnNpb247ICAgICAgICAgICAgIAogICBN
UUxPTkcgICAgT3B0aW9uczsgICAgICAgICAgICAgCgogICBNUUxPTkcgICAgVGltZW91dDsgICAg
ICAgICAgICAgCiAgIE1RSE9CSiAgICBDb250ZXh0OyAgICAgICAgICAgICAKICAgTVFMT05HICAg
IEtub3duRGVzdENvdW50OyAgICAgIAoKICAgTVFMT05HICAgIFVua25vd25EZXN0Q291bnQ7ICAg
IAoKICAgTVFMT05HICAgIEludmFsaWREZXN0Q291bnQ7ICAgIAoKICAgTVFDSEFSNDggIFJlc29s
dmVkUU5hbWU7ICAgICAgIAoKICAgTVFDSEFSNDggIFJlc29sdmVkUU1nck5hbWU7ICAgIAoKICAg
TVFMT05HICAgIFJlY3NQcmVzZW50OyAgICAgICAgIAoKICAgTVFMT05HICAgIFB1dE1zZ1JlY0Zp
ZWxkczsgICAgIAoKICAgTVFMT05HICAgIFB1dE1zZ1JlY09mZnNldDsgICAgIAoKICAgTVFMT05H
ICAgIFJlc3BvbnNlUmVjT2Zmc2V0OyAgIAoKICAgTVFQVFIgICAgIFB1dE1zZ1JlY1B0cjsgICAg
ICAgIAoKICAgTVFQVFIgICAgIFJlc3BvbnNlUmVjUHRyOyAgICAgIAogfSBNUVBNTzsKIHR5cGVk
ZWYgTVFQTU8gKiAgUE1RUE1POwoKIAojIDIyNzUgIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMKCgog
IAogIAogIAoKIHR5cGVkZWYgc3RydWN0IHRhZ01RUkZIIHsKICAgTVFDSEFSNCAgU3RydWNJZDsg
ICAgICAgICAgCiAgIE1RTE9ORyAgIFZlcnNpb247ICAgICAgICAgIAogICBNUUxPTkcgICBTdHJ1
Y0xlbmd0aDsgICAgICAKCiAgIE1RTE9ORyAgIEVuY29kaW5nOyAgICAgICAgIAoKICAgTVFMT05H
ICAgQ29kZWRDaGFyU2V0SWQ7ICAgCgogICBNUUNIQVI4ICBGb3JtYXQ7ICAgICAgICAgICAKCiAg
IE1RTE9ORyAgIEZsYWdzOyAgICAgICAgICAgIAogfSBNUVJGSDsKIHR5cGVkZWYgTVFSRkggKiAg
UE1RUkZIOwoKIAoKCgoKCgoKCiAgCiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFSRkgyIHsK
ICAgTVFDSEFSNCAgU3RydWNJZDsgICAgICAgICAgCiAgIE1RTE9ORyAgIFZlcnNpb247ICAgICAg
ICAgIAogICBNUUxPTkcgICBTdHJ1Y0xlbmd0aDsgICAgICAKCiAgIE1RTE9ORyAgIEVuY29kaW5n
OyAgICAgICAgIAoKICAgTVFMT05HICAgQ29kZWRDaGFyU2V0SWQ7ICAgCgogICBNUUNIQVI4ICBG
b3JtYXQ7ICAgICAgICAgICAKCiAgIE1RTE9ORyAgIEZsYWdzOyAgICAgICAgICAgIAogICBNUUxP
TkcgICBOYW1lVmFsdWVDQ1NJRDsgICAKCiB9IE1RUkZIMjsKIHR5cGVkZWYgTVFSRkgyICogIFBN
UVJGSDI7CgogCgoKCgoKCgoKCiAgCiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFSTUggewog
ICBNUUNIQVI0ICAgU3RydWNJZDsgICAgICAgICAgICAgIAogICBNUUxPTkcgICAgVmVyc2lvbjsg
ICAgICAgICAgICAgIAogICBNUUxPTkcgICAgU3RydWNMZW5ndGg7ICAgICAgICAgIAoKCiAgIE1R
TE9ORyAgICBFbmNvZGluZzsgICAgICAgICAgICAgCiAgIE1RTE9ORyAgICBDb2RlZENoYXJTZXRJ
ZDsgICAgICAgCgogICBNUUNIQVI4ICAgRm9ybWF0OyAgICAgICAgICAgICAgIAogICBNUUxPTkcg
ICAgRmxhZ3M7ICAgICAgICAgICAgICAgIAogICBNUUNIQVI4ICAgT2JqZWN0VHlwZTsgICAgICAg
ICAgIAogICBNUUJZVEUyNCAgT2JqZWN0SW5zdGFuY2VJZDsgICAgIAogICBNUUxPTkcgICAgU3Jj
RW52TGVuZ3RoOyAgICAgICAgIAoKICAgTVFMT05HICAgIFNyY0Vudk9mZnNldDsgICAgICAgICAK
CiAgIE1RTE9ORyAgICBTcmNOYW1lTGVuZ3RoOyAgICAgICAgCiAgIE1RTE9ORyAgICBTcmNOYW1l
T2Zmc2V0OyAgICAgICAgCiAgIE1RTE9ORyAgICBEZXN0RW52TGVuZ3RoOyAgICAgICAgCgogICBN
UUxPTkcgICAgRGVzdEVudk9mZnNldDsgICAgICAgIAoKICAgTVFMT05HICAgIERlc3ROYW1lTGVu
Z3RoOyAgICAgICAKCiAgIE1RTE9ORyAgICBEZXN0TmFtZU9mZnNldDsgICAgICAgCgogICBNUUxP
TkcgICAgRGF0YUxvZ2ljYWxMZW5ndGg7ICAgIAogICBNUUxPTkcgICAgRGF0YUxvZ2ljYWxPZmZz
ZXQ7ICAgIAogICBNUUxPTkcgICAgRGF0YUxvZ2ljYWxPZmZzZXQyOyAgIAogfSBNUVJNSDsKIHR5
cGVkZWYgTVFSTUggKiAgUE1RUk1IOwoKIAojIDIzOTMgIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMK
CgogIAogIAogIAoKIHR5cGVkZWYgc3RydWN0IHRhZ01RUlIgewogICBNUUxPTkcgIENvbXBDb2Rl
OyAgIAogICBNUUxPTkcgIFJlYXNvbjsgICAgIAogfSBNUVJSOwogdHlwZWRlZiBNUVJSICogIFBN
UVJSOwoKIAoKCgogIAogIAogIAoKIHR5cGVkZWYgc3RydWN0IHRhZ01RVE0gewogICBNUUNIQVI0
ICAgIFN0cnVjSWQ7ICAgICAgIAogICBNUUxPTkcgICAgIFZlcnNpb247ICAgICAgIAogICBNUUNI
QVI0OCAgIFFOYW1lOyAgICAgICAgIAogICBNUUNIQVI0OCAgIFByb2Nlc3NOYW1lOyAgIAogICBN
UUNIQVI2NCAgIFRyaWdnZXJEYXRhOyAgIAogICBNUUxPTkcgICAgIEFwcGxUeXBlOyAgICAgIAog
ICBNUUNIQVIyNTYgIEFwcGxJZDsgICAgICAgIAogICBNUUNIQVIxMjggIEVudkRhdGE7ICAgICAg
IAogICBNUUNIQVIxMjggIFVzZXJEYXRhOyAgICAgIAogfSBNUVRNOwogdHlwZWRlZiBNUVRNICog
IFBNUVRNOwoKIAojIDI0MzUgIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMKCgoKICAKICAKICAKCiB0
eXBlZGVmIHN0cnVjdCB0YWdNUVRNQzIgewogICBNUUNIQVI0ICAgIFN0cnVjSWQ7ICAgICAgIAog
ICBNUUNIQVI0ICAgIFZlcnNpb247ICAgICAgIAogICBNUUNIQVI0OCAgIFFOYW1lOyAgICAgICAg
IAogICBNUUNIQVI0OCAgIFByb2Nlc3NOYW1lOyAgIAogICBNUUNIQVI2NCAgIFRyaWdnZXJEYXRh
OyAgIAogICBNUUNIQVI0ICAgIEFwcGxUeXBlOyAgICAgIAogICBNUUNIQVIyNTYgIEFwcGxJZDsg
ICAgICAgIAogICBNUUNIQVIxMjggIEVudkRhdGE7ICAgICAgIAogICBNUUNIQVIxMjggIFVzZXJE
YXRhOyAgICAgIAogICBNUUNIQVI0OCAgIFFNZ3JOYW1lOyAgICAgIAogfSBNUVRNQzI7CiB0eXBl
ZGVmIE1RVE1DMiAqICBQTVFUTUMyOwoKIAojIDI0NjYgIi91c3IvaW5jbHVkZS9jbXFjLmgiIDMK
CgogIAogIAogIAoKIHR5cGVkZWYgc3RydWN0IHRhZ01RV0lIIHsKICAgTVFDSEFSNCAgIFN0cnVj
SWQ7ICAgICAgICAgIAogICBNUUxPTkcgICAgVmVyc2lvbjsgICAgICAgICAgCiAgIE1RTE9ORyAg
ICBTdHJ1Y0xlbmd0aDsgICAgICAKICAgTVFMT05HICAgIEVuY29kaW5nOyAgICAgICAgIAoKICAg
TVFMT05HICAgIENvZGVkQ2hhclNldElkOyAgIAoKICAgTVFDSEFSOCAgIEZvcm1hdDsgICAgICAg
ICAgIAoKICAgTVFMT05HICAgIEZsYWdzOyAgICAgICAgICAgIAogICBNUUNIQVIzMiAgU2Vydmlj
ZU5hbWU7ICAgICAgCiAgIE1RQ0hBUjggICBTZXJ2aWNlU3RlcDsgICAgICAKICAgTVFCWVRFMTYg
IE1zZ1Rva2VuOyAgICAgICAgIAogICBNUUNIQVIzMiAgUmVzZXJ2ZWQ7ICAgICAgICAgCiB9IE1R
V0lIOwogdHlwZWRlZiBNUVdJSCAqICBQTVFXSUg7CgogCiMgMjUwNyAiL3Vzci9pbmNsdWRlL2Nt
cWMuaCIgMwoKCiAgCiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFnTVFYUUggewogICBNUUNIQVI0
ICAgU3RydWNJZDsgICAgICAgICAgCiAgIE1RTE9ORyAgICBWZXJzaW9uOyAgICAgICAgICAKICAg
TVFDSEFSNDggIFJlbW90ZVFOYW1lOyAgICAgIAogICBNUUNIQVI0OCAgUmVtb3RlUU1nck5hbWU7
ICAgCiAgIE1RTUQxICAgICBNc2dEZXNjOyAgICAgICAgICAKIH0gTVFYUUg7CiB0eXBlZGVmIE1R
WFFIICogIFBNUVhRSDsKCiAKCgoKCgoKICAKICAKICAKCiB2b2lkICAgTVFCQUNLICgKICAgTVFI
Q09OTiAgSGNvbm4sICAgICAgIAogICBQTVFMT05HICBwQ29tcENvZGUsICAgCiAgIFBNUUxPTkcg
IHBSZWFzb24pOyAgICAKCgogIAogIAogIAoKIHZvaWQgICBNUUJFR0lOICgKICAgTVFIQ09OTiAg
SGNvbm4sICAgICAgICAgICAKICAgUE1RVk9JRCAgcEJlZ2luT3B0aW9ucywgICAKCiAgIFBNUUxP
TkcgIHBDb21wQ29kZSwgICAgICAgCiAgIFBNUUxPTkcgIHBSZWFzb24pOyAgICAgICAgCgoKICAK
ICAKICAKCiB2b2lkICAgTVFDTE9TRSAoCiAgIE1RSENPTk4gIEhjb25uLCAgICAgICAKICAgUE1R
SE9CSiAgcEhvYmosICAgICAgIAogICBNUUxPTkcgICBPcHRpb25zLCAgICAgCiAgIFBNUUxPTkcg
IHBDb21wQ29kZSwgICAKICAgUE1RTE9ORyAgcFJlYXNvbik7ICAgIAoKCiAgCiAgCiAgCgogdm9p
ZCAgIE1RQ01JVCAoCiAgIE1RSENPTk4gIEhjb25uLCAgICAgICAKICAgUE1RTE9ORyAgcENvbXBD
b2RlLCAgIAogICBQTVFMT05HICBwUmVhc29uKTsgICAgCgoKICAKICAKICAKCiB2b2lkICAgTVFD
T05OICgKICAgUE1RQ0hBUiAgIHBRTWdyTmFtZSwgICAKICAgUE1RSENPTk4gIHBIY29ubiwgICAg
ICAKICAgUE1RTE9ORyAgIHBDb21wQ29kZSwgICAKICAgUE1RTE9ORyAgIHBSZWFzb24pOyAgICAK
CgogIAogIAogIAoKIHZvaWQgICBNUUNPTk5YICgKICAgUE1RQ0hBUiAgIHBRTWdyTmFtZSwgICAg
ICAKICAgUE1RQ05PICAgIHBDb25uZWN0T3B0cywgICAKCiAgIFBNUUhDT05OICBwSGNvbm4sICAg
ICAgICAgCiAgIFBNUUxPTkcgICBwQ29tcENvZGUsICAgICAgCiAgIFBNUUxPTkcgICBwUmVhc29u
KTsgICAgICAgCgoKICAKICAKICAKCiB2b2lkICAgTVFESVNDICgKICAgUE1RSENPTk4gIHBIY29u
biwgICAgICAKICAgUE1RTE9ORyAgIHBDb21wQ29kZSwgICAKICAgUE1RTE9ORyAgIHBSZWFzb24p
OyAgICAKCgogIAogIAogIAoKIHZvaWQgICBNUUdFVCAoCiAgIE1RSENPTk4gIEhjb25uLCAgICAg
ICAgICAKICAgTVFIT0JKICAgSG9iaiwgICAgICAgICAgIAogICBQTVFWT0lEICBwTXNnRGVzYywg
ICAgICAgCiAgIFBNUVZPSUQgIHBHZXRNc2dPcHRzLCAgICAKCiAgIE1RTE9ORyAgIEJ1ZmZlckxl
bmd0aCwgICAKICAgUE1RVk9JRCAgcEJ1ZmZlciwgICAgICAgIAogICBQTVFMT05HICBwRGF0YUxl
bmd0aCwgICAgCiAgIFBNUUxPTkcgIHBDb21wQ29kZSwgICAgICAKICAgUE1RTE9ORyAgcFJlYXNv
bik7ICAgICAgIAoKCiAgCiAgCiAgCgogdm9pZCAgIE1RSU5RICgKICAgTVFIQ09OTiAgSGNvbm4s
ICAgICAgICAgICAgCiAgIE1RSE9CSiAgIEhvYmosICAgICAgICAgICAgIAogICBNUUxPTkcgICBT
ZWxlY3RvckNvdW50LCAgICAKICAgUE1RTE9ORyAgcFNlbGVjdG9ycywgICAgICAgCiAgIE1RTE9O
RyAgIEludEF0dHJDb3VudCwgICAgIAogICBQTVFMT05HICBwSW50QXR0cnMsICAgICAgICAKICAg
TVFMT05HICAgQ2hhckF0dHJMZW5ndGgsICAgCiAgIFBNUUNIQVIgIHBDaGFyQXR0cnMsICAgICAg
IAogICBQTVFMT05HICBwQ29tcENvZGUsICAgICAgICAKICAgUE1RTE9ORyAgcFJlYXNvbik7ICAg
ICAgICAgCgoKICAKICAKICAKCiB2b2lkICAgTVFPUEVOICgKICAgTVFIQ09OTiAgSGNvbm4sICAg
ICAgIAogICBQTVFWT0lEICBwT2JqRGVzYywgICAgCiAgIE1RTE9ORyAgIE9wdGlvbnMsICAgICAK
ICAgUE1RSE9CSiAgcEhvYmosICAgICAgIAogICBQTVFMT05HICBwQ29tcENvZGUsICAgCiAgIFBN
UUxPTkcgIHBSZWFzb24pOyAgICAKCgogIAogIAogIAoKIHZvaWQgICBNUVBVVCAoCiAgIE1RSENP
Tk4gIEhjb25uLCAgICAgICAgICAKICAgTVFIT0JKICAgSG9iaiwgICAgICAgICAgIAogICBQTVFW
T0lEICBwTXNnRGVzYywgICAgICAgCiAgIFBNUVZPSUQgIHBQdXRNc2dPcHRzLCAgICAKCiAgIE1R
TE9ORyAgIEJ1ZmZlckxlbmd0aCwgICAKICAgUE1RVk9JRCAgcEJ1ZmZlciwgICAgICAgIAogICBQ
TVFMT05HICBwQ29tcENvZGUsICAgICAgCiAgIFBNUUxPTkcgIHBSZWFzb24pOyAgICAgICAKCgog
IAogIAogIAoKIHZvaWQgICBNUVBVVDEgKAogICBNUUhDT05OICBIY29ubiwgICAgICAgICAgCiAg
IFBNUVZPSUQgIHBPYmpEZXNjLCAgICAgICAKICAgUE1RVk9JRCAgcE1zZ0Rlc2MsICAgICAgIAog
ICBQTVFWT0lEICBwUHV0TXNnT3B0cywgICAgCgogICBNUUxPTkcgICBCdWZmZXJMZW5ndGgsICAg
CiAgIFBNUVZPSUQgIHBCdWZmZXIsICAgICAgICAKICAgUE1RTE9ORyAgcENvbXBDb2RlLCAgICAg
IAogICBQTVFMT05HICBwUmVhc29uKTsgICAgICAgCgoKICAKICAKICAKCiB2b2lkICAgTVFTRVQg
KAogICBNUUhDT05OICBIY29ubiwgICAgICAgICAgICAKICAgTVFIT0JKICAgSG9iaiwgICAgICAg
ICAgICAgCiAgIE1RTE9ORyAgIFNlbGVjdG9yQ291bnQsICAgIAogICBQTVFMT05HICBwU2VsZWN0
b3JzLCAgICAgICAKICAgTVFMT05HICAgSW50QXR0ckNvdW50LCAgICAgCiAgIFBNUUxPTkcgIHBJ
bnRBdHRycywgICAgICAgIAogICBNUUxPTkcgICBDaGFyQXR0ckxlbmd0aCwgICAKICAgUE1RQ0hB
UiAgcENoYXJBdHRycywgICAgICAgCiAgIFBNUUxPTkcgIHBDb21wQ29kZSwgICAgICAgIAogICBQ
TVFMT05HICBwUmVhc29uKTsgICAgICAgICAKCgogCiAgIH0KIAoKICAKICAKICAKCiAKIyA0ICIv
aG9tZS94aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvbXFtZXNzYWdlLmhwcCIgMgoKIyAxICIvdXNy
L2luY2x1ZGUvY21xY2ZjLmgiIDEgMwogCiAgIAogIAogIAogIAogIAogIAogIAogIAogIAogIAog
IAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAogIAoKIAogICBl
eHRlcm4gIkMiIHsKIAoKICAKICAKICAKCiAgCiAKCiAgCiAKIAoKICAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKCiAgCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogIAog
IAogIAoKICAKIAoKCiAgCiAgCiAgCgogIAogCgoKICAKICAKICAKCiAgCiAKCgogIAogIAogIAoK
ICAKIAoKCiAgCiAgCiAgCgogIAogCiAKIAogCiAKIAogCiAKCgogIAogIAogIAoKICAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKCgogIAogIAogIAoKICAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoK
CiAgCiAgCiAgCgogIAogCgogIAogCgogIAogCiAKCiAgCiAKIAogCiAKIAogCiAKIAogCiAKCiAg
CiAKIAoKICAKIAogCgogIAogCgogIAogCiAKCiAgCiAKIAoKICAKIAogCgogIAogCiAKCiAgCiAK
IAoKICAKIAogCiAKIAoKICAKIAogCgogIAogCiAKCiAgCiAKIAogCgogIAogCiAKCiAgCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKCiAgCiAKIAoKCiAgCiAgCiAgCgogIAogCiAKCiAg
CiAKIAogCiAKIAogCgogIAogCiAKIAogCiAKIAogCiAKIAogCgogIAogCiAKCgogIAogIAogIAoK
IHR5cGVkZWYgc3RydWN0IHRhZ01RQ0ZIIHsKICAgTVFMT05HICBUeXBlOyAgICAgICAgICAgICAK
ICAgTVFMT05HICBTdHJ1Y0xlbmd0aDsgICAgICAKICAgTVFMT05HICBWZXJzaW9uOyAgICAgICAg
ICAKICAgTVFMT05HICBDb21tYW5kOyAgICAgICAgICAKICAgTVFMT05HICBNc2dTZXFOdW1iZXI7
ICAgICAKICAgTVFMT05HICBDb250cm9sOyAgICAgICAgICAKICAgTVFMT05HICBDb21wQ29kZTsg
ICAgICAgICAKICAgTVFMT05HICBSZWFzb247ICAgICAgICAgICAKICAgTVFMT05HICBQYXJhbWV0
ZXJDb3VudDsgICAKIH0gTVFDRkg7CiB0eXBlZGVmIE1RQ0ZIICogIFBNUUNGSDsKCiAKIyA2NzAg
Ii91c3IvaW5jbHVkZS9jbXFjZmMuaCIgMwoKCiAgCiAgCiAgCgogdHlwZWRlZiBzdHJ1Y3QgdGFn
TVFDRklMIHsKICAgTVFMT05HICBUeXBlOyAgICAgICAgICAKICAgTVFMT05HICBTdHJ1Y0xlbmd0
aDsgICAKICAgTVFMT05HICBQYXJhbWV0ZXI7ICAgICAKICAgTVFMT05HICBDb3VudDsgICAgICAg
ICAKICAgTVFMT05HICBWYWx1ZXNbMV07ICAgICAKIH0gTVFDRklMOwogdHlwZWRlZiBNUUNGSUwg
KiAgUE1RQ0ZJTDsKCiAKCgoKCgoKICAKICAKICAKCiB0eXBlZGVmIHN0cnVjdCB0YWdNUUNGSU4g
ewogICBNUUxPTkcgIFR5cGU7ICAgICAgICAgIAogICBNUUxPTkcgIFN0cnVjTGVuZ3RoOyAgIAog
ICBNUUxPTkcgIFBhcmFtZXRlcjsgICAgIAogICBNUUxPTkcgIFZhbHVlOyAgICAgICAgIAogfSBN
UUNGSU47CiB0eXBlZGVmIE1RQ0ZJTiAqICBQTVFDRklOOwoKIAoKCgoKCiAgCiAgCiAgCgogdHlw
ZWRlZiBzdHJ1Y3QgdGFnTVFDRlNMIHsKICAgTVFMT05HICBUeXBlOyAgICAgICAgICAgICAKICAg
TVFMT05HICBTdHJ1Y0xlbmd0aDsgICAgICAKICAgTVFMT05HICBQYXJhbWV0ZXI7ICAgICAgICAK
ICAgTVFMT05HICBDb2RlZENoYXJTZXRJZDsgICAKICAgTVFMT05HICBDb3VudDsgICAgICAgICAg
ICAKICAgTVFMT05HICBTdHJpbmdMZW5ndGg7ICAgICAKICAgTVFDSEFSICBTdHJpbmdzWzFdOyAg
ICAgICAKIH0gTVFDRlNMOwogdHlwZWRlZiBNUUNGU0wgKiAgUE1RQ0ZTTDsKCiAKCgoKCgoKCgog
IAogIAogIAoKIHR5cGVkZWYgc3RydWN0IHRhZ01RQ0ZTVCB7CiAgIE1RTE9ORyAgVHlwZTsgICAg
ICAgICAgICAgCiAgIE1RTE9ORyAgU3RydWNMZW5ndGg7ICAgICAgCiAgIE1RTE9ORyAgUGFyYW1l
dGVyOyAgICAgICAgCiAgIE1RTE9ORyAgQ29kZWRDaGFyU2V0SWQ7ICAgCiAgIE1RTE9ORyAgU3Ry
aW5nTGVuZ3RoOyAgICAgCiAgIE1RQ0hBUiAgU3RyaW5nWzFdOyAgICAgICAgCiB9IE1RQ0ZTVDsK
IHR5cGVkZWYgTVFDRlNUICogIFBNUUNGU1Q7CgogCgoKCgoKCgogCiAgIH0KIAoKICAKICAKICAK
IAojIDUgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcW1lc3NhZ2UuaHBwIiAyCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCQkJCQoKY2xhc3MgTVFNZXNz
YWdlSUQKewpwdWJsaWM6CgoJIAoJZW51bSBNc2dJRFR5cGUgeyBTZW5kLCBSZWNlaXZlIH07Cgog
ICBNUU1lc3NhZ2VJRCgpOwogICBNUU1lc3NhZ2VJRChjb25zdCBJU3RyaW5nICYgICBhUlpCSywK
ICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmICAgYVRvcGljLAogICAgICAgICAgICAgICBj
b25zdCBJRGF0ZSAmICAgICBhRGF0ZSwKICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgICAg
YVNlcXVlbmNlTnVtYmVyLAogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgICAgICBhU2VyaWFs
TnVtYmVyKTsKCQkJICAgCglNUU1lc3NhZ2VJRChjb25zdCBJU3RyaW5nICYgICAgICAgYVJaQkss
CiAgICAgICAgICAgICAgIGNvbnN0IElTdHJpbmcgJiBhVG9waWMsCiAgICAgICAgICAgICAgIGNv
bnN0IElEYXRlICYgIGFEYXRlLAogICAgICAgICAgICAgICBjb25zdCBJVGltZSAmYVRpbWUsCiAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgIGFTZXJpYWxOdW1iZXIpOwoJCQkgICAKICAgTVFN
ZXNzYWdlSUQoY29uc3QgSVN0cmluZyAmYU1lc3NhZ2VJRFN0cmluZywgTXNnSURUeXBlIGFUeXBl
KTsKCiAgIE1RTWVzc2FnZUlEKGNvbnN0IE1RTWVzc2FnZUlEICZvdGhlcik7CgogICB2aXJ0dWFs
IH5NUU1lc3NhZ2VJRCgpOwoKICAgTVFNZXNzYWdlSUQgJiBvcGVyYXRvcj0oY29uc3QgTVFNZXNz
YWdlSUQgJm90aGVyKTsKCglNc2dJRFR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBl
OyB9CgkKICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CgogICB2b2lkIHNldFNlcmlhbE51bWJlcih1
bnNpZ25lZCBpbnQgYU51bWJlcik7CiAgIHZvaWQgbmV4dCgpOwogICB2b2lkIHByZXZpb3VzKCk7
CgogICBJU3RyaW5nICB0b1N0cmluZygpIGNvbnN0OwogICBJU3RyaW5nICB0b0ZpbGVuYW1lKCkg
Y29uc3Q7CiAgIAogICBJU3RyaW5nCWdldFRvcGljKCkgY29uc3Q7Cgpwcml2YXRlOgoKCU1zZ0lE
VHlwZQkJbVR5cGU7CgkKICAgSVN0cmluZyAgICAgICAgbVJaQks7CiAgIElTdHJpbmcgICAgICAg
IG1TYWNoZ2ViaWV0OwogICBJRGF0ZSAgICAgICAgICBtRGF0ZTsKICAgSVRpbWUJCQltVGltZTsK
ICAgdW5zaWduZWQgaW50ICAgbVNlcXVlbmNlTnVtYmVyOwogICB1bnNpZ25lZCBpbnQgICBtU2Vy
aWFsTnVtYmVyOwp9OwoKY2xhc3MgTVFNZXNzYWdlCnsKCnB1YmxpYzoKICAgTVFNZXNzYWdlKCk7
CglNUU1lc3NhZ2UoY29uc3QgTVFNZXNzYWdlSUQgJmFNZXNzYWdlSUQpOwogICBNUU1lc3NhZ2Uo
Y29uc3QgTVFNZXNzYWdlICZvdGhlcik7CgogICBNUU1lc3NhZ2UoICBjb25zdCBNUU1EICZkZXNj
cmlwdG9yLAogICAgICAgICAgICAgICBjb25zdCBNUVBNTyAmcG9wdCwKICAgICAgICAgICAgICAg
Y29uc3QgTVFHTU8gJmdvcHQsCiAgICAgICAgICAgICAgIGlvc3RyZWFtICogaW9zdHIsIHVuc2ln
bmVkIGxvbmcgcG9zaXRpb24sIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKCiAgIE1RTWVzc2FnZSgg
IGNvbnN0IE1RTUQgJmRlc2NyaXB0b3IsCiAgICAgICAgICAgICAgIGNvbnN0IE1RUE1PICZwb3B0
LAogICAgICAgICAgICAgICBjb25zdCBNUUdNTyAmZ29wdCwKICAgICAgICAgICAgICAgY2hhciAq
YnVmZmVyLCB1bnNpZ25lZCBsb25nIHBvc2l0aW9uLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CgkK
ICAgdmlydHVhbCAgICAgICAgfk1RTWVzc2FnZSgpOwoKICAgY29uc3QgTVFNZXNzYWdlICYgICAg
b3BlcmF0b3I9KGNvbnN0IE1RTWVzc2FnZSAmb3RoZXIpOwoKICAgYm9vbCAgICAgICAgICAgaGFz
QnVmZmVyKCk7CgoJdm9pZCAJCQlzZXRNZXNzYWdlVHlwZShNUU1lc3NhZ2VJRDo6TXNnSURUeXBl
IGFNc2dUeXBlKTsKCU1RTWVzc2FnZUlEOjpNc2dJRFR5cGUgCQkJZ2V0TWVzc2FnZVR5cGUoKTsK
ICAgdm9pZCAgICAgICAgICAgc2V0TWVzc2FnZUlEKGNvbnN0IE1RTWVzc2FnZUlEICZtaWQpOwog
ICBJU3RyaW5nICAgICAgICBnZXRNZXNzYWdlSUQoKSBjb25zdDsKICAgY29uc3QgTVFNZXNzYWdl
SUQgJiBnZXRNUU1lc3NhZ2VJRCgpOwoKICAgIAogICB2b2lkICAgICAgICAgICBzZXREZXNjcmlw
dG9yKGNvbnN0IE1RTUQgJmRlc2MpOwogICBjb25zdCBNUU1EICYgICBnZXREZXNjcmlwdG9yKCkg
Y29uc3Q7CgogICAgCiAgIHZvaWQgICAgICAgICAgIHNldFBVVE9wdGlvbnMoY29uc3QgTVFQTU8g
Jm9wdGlvbnMpOwogICBjb25zdCBNUVBNTyAmICBnZXRQVVRPcHRpb25zKCkgY29uc3Q7CgogICAg
CiAgIHZvaWQgICAgICAgICAgIHNldEdFVE9wdGlvbnMoY29uc3QgTVFHTU8gJm9wdGlvbnMpOwog
ICBjb25zdCBNUUdNTyAmICBnZXRHRVRPcHRpb25zKCkgY29uc3Q7CgogICAgCiAgIGludCAgICAg
ICAgICAgIHNldFN0cmVhbShpb3N0cmVhbSAqaW9zdHIsIHVuc2lnbmVkIGxvbmcgcG9zaXRpb24s
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKICAgaW9zdHJlYW0gKiAgICAgZ2V0U3RyZWFtKCkgY29u
c3Q7CgogICBjaGFyICogICAgICAgICBnZXRCdWZmZXIoKSBjb25zdDsKICAgYm9vbAkJCSAgIGNy
ZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIGFCdWZmZXJsZW5ndGgpOwkKCiAgIHVuc2lnbmVkIGxv
bmcgIGdldFBvc2l0aW9uKCkgY29uc3Q7CiAgIHVuc2lnbmVkIGxvbmcgIGdldExlbmd0aCgpIGNv
bnN0OwoKcHJpdmF0ZToKCglNUU1lc3NhZ2VJRDo6TXNnSURUeXBlCQltTWVzc2FnZVR5cGU7CglN
UU1lc3NhZ2VJRCAJCQkJbU1lc3NhZ2VJRDsKCQogICBNUU1EICAgICAgICAgICAJCQkJbURlc2Ny
aXB0b3I7CgogICBNUUdNTyAgICAgICAgICAJCQkJbUdFVE9wdGlvbnM7CiAgIE1RUE1PICAgICAg
ICAgIAkJCQltUFVUT3B0aW9uczsKCiAgIGNoYXIgKiAgICAgICAgIAkJCQltQnVmZmVyOwoKICAg
aW9zdHJlYW0gKiAgICAgCQkJCW1JT1N0cmVhbTsKICAgdW5zaWduZWQgbG9uZyAgCQkJCW1Qb3Np
dGlvbjsKICAgdW5zaWduZWQgbG9uZyAJCQkJbUxlbmd0aDsKICAgCiAgIGJvb2wgCQkJbU1lc3Nh
Z2VJRFBhcnNlZDsKfTsKCgojIDQgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1
ZXVlLmhwcCIgMgoKCgoKY2xhc3MgTVFCYXNlOwpjbGFzcyBNUUNvbm5lY3Rpb247CmNsYXNzIE1R
UXVldWU7CgpjbGFzcyBNUUJhc2UKewpwdWJsaWM6CiAgIE1RQmFzZSgpOwogICB2aXJ0dWFsIH5N
UUJhc2UoKTsKCiAgIHZvaWQgICAgICAgICAgICAgIHNldEVycm9yKCBjb25zdCBJU3RyaW5nICZm
dW5jdGlvbiwgdW5zaWduZWQgaW50IGNvbXBsZXRpb25jb2RlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVhc29uY29kZSk7CgogICB2aXJ0dWFsIHZv
aWQgICAgICBoYW5kbGVFcnJvcihjb25zdCBJU3RyaW5nICZhRnVuY3Rpb24sIHVuc2lnbmVkIGlu
dCBjb21wbGV0aW9uY29kZSwgdW5zaWduZWQgaW50IHJlYXNvbmNvZGUpID0gMDsKCiAgIHZvaWQg
ICAgICAgICAgICAgIGdldExhc3RFcnJvcihpbnQgJmFDb21wbGV0aW9uQ29kZSwgaW50ICZhUmVh
c29uQ29kZSwgSVN0cmluZyAmYUVycm9yTWVzc2FnZSk7CiAgIGNvbnN0IElTdHJpbmcgJiAgIGdl
dEVycm9yTWVzc2FnZSgpOwoKICAgYm9vbCAgICAgICAgICAgICAgdHJ5bG9jaygpOwogICBib29s
ICAgICAgICAgICAgICBsb2NrKGxvbmcgdGltZW91dCA9IC0xICApOwogICBib29sICAgICAgICAg
ICAgICB1bmxvY2soKTsKCiAgIGNvbnN0IElTdHJpbmcgJiAgIGdldE5hbWUoKSBjb25zdDsKCnBy
b3RlY3RlZDoKICAgSVN0cmluZyAgICAgICAgICAgbU5hbWU7CiAgIE1RUlIgICAgICAgICAgICAg
IG1SZXNwb25zZUNvZGU7ICAgICAKICAgSVN0cmluZyAgICAgICAgICAgbUVycm9yTWVzc2FnZTsg
ICAgIAoKcHJpdmF0ZToKICAgSVByaXZhdGVSZXNvdXJjZSAgbVByaXZhdGVSZXNvdXJjZTsKICAg
dW5zaWduZWQgaW50ICAgICAgbUxvY2tDb3VudDsKfTsKCmNsYXNzIE1RQ29ubmVjdGlvbiA6IHB1
YmxpYyBNUUJhc2UKewpwdWJsaWM6CgogICBNUUNvbm5lY3Rpb24oY29uc3QgSVN0cmluZyAmYUNv
bm5lY3Rpb25NYW5hZ2VyKTsKICAgdmlydHVhbCB+TVFDb25uZWN0aW9uKCk7CgogICBNUUhDT05O
IGdldEhhbmRsZSgpOwogICBJU3RyaW5nIGdldE1hbmFnZXJOYW1lKCk7CgogICAgCiAgIGludCAg
IGNvbm5lY3QodW5zaWduZWQgaW50IHJldHJ5ICA9IDMpOwogICAgCiAgIGludCAgIGRpc2Nvbm5l
Y3QoKTsKCiAgIGludCAgIGNvbW1pdCgpOwogICBpbnQgICByb2xsYmFjaygpOwoKICAgIAogICBi
b29sICBpc0Nvbm5lY3RlZCgpOwoKICAgdm9pZCBhZGRRdWV1ZShNUVF1ZXVlICphUXVldWUpOwoK
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUVycm9yKGNvbnN0IElTdHJpbmcgJmFGdW5jdGlvbiwgdW5z
aWduZWQgaW50IGNvbXBsZXRpb25jb2RlLCB1bnNpZ25lZCBpbnQgcmVhc29uY29kZSk7Cgpwcml2
YXRlOgogICBJU2VxdWVuY2U8TVFRdWV1ZSAqPiAgICBtUXVldWVzOyAgICAgICAgICAgICAgCiAg
IE1RSENPTk4gICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uSGFuZGxlOyAgICAKfTsKCmNsYXNz
IE1RUXVldWUgOiBwdWJsaWMgTVFCYXNlCnsKcHVibGljOgoKICAgTVFRdWV1ZShNUUNvbm5lY3Rp
b24gKmFDb25uZWN0aW9uLCBjb25zdCBJU3RyaW5nICZxdWV1ZU5hbWUsIHVuc2lnbmVkIGxvbmcg
bWF4TWVzc2FnZVNpemUsCiAgICAgICAgICAgIE1RTE9ORyBvcGVuX29wdGlvbnMpOwogICB2aXJ0
dWFsIH5NUVF1ZXVlKCk7CgogICBib29sIGlzT3BlbigpOwoKICAgdm9pZCBzZXRDb25uZWN0aW9u
KE1RQ29ubmVjdGlvbiAqYUNvbm5lY3Rpb24pOwogICBNUUNvbm5lY3Rpb24gKiBnZXRDb25uZWN0
aW9uKCk7CgogICAgCiAgIGludCBvcGVuKE1RTE9ORyBvcHRpb25zID0gMCk7CiAgICAKICAgaW50
IGNsb3NlKE1RTE9ORyBvcHRpb25zID0gMCk7CgogICAgCiAgIGludCBxdWVyeUludGVnZXJBdHRy
aWJ1dGUoTVFMT05HIGF0dHJpYnV0ZSwgTVFMT05HICZyZXN1bHQpOwoKICAgaW50IGNvbnRhaW5z
KE1RTWVzc2FnZUlEICZhTWVzc2FnZUlEKTsKCiAgICAKICAgaW50IGRvZXNFeGlzdChNUU1lc3Nh
Z2VJRCAmYU1lc3NhZ2VJRCwgYm9vbCAmcmMpOwoKICAgIAogICBpbnQgcHV0KE1RTWVzc2FnZSAm
bXNnKTsKCiAgICAKICAgIAogICBpbnQgcHV0KCBjb25zdCBNUU1EICBkZXNjcmlwdG9yLCAgICAg
ICAgCiAgICAgICAgICAgIGNvbnN0IE1RUE1PIG9wdGlvbnMsICAgICAgICAgICAKICAgICAgICAg
ICAgaW9zdHJlYW0gKiAgaW9zdHIsICAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCBNUU1l
c3NhZ2VJRCAmbWlkX3N0YXJ0LCAgCiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgJm1zZ19jb3Vu
dCk7ICAgICAKCiAgICAKICAgaW50IGdldChNUU1lc3NhZ2UgJm1zZywgdW5zaWduZWQgbG9uZyAq
YUxlbmd0aCA9IDApOwogICAKICAgaW50IGdldCgJY29uc3QgSVN0cmluZyAmYU1lc3NhZ2VJRCwg
CgkJCWNvbnN0IElTdHJpbmcgJmFDb3JyZWxhdGlvbklELAoJCQlsb25nIGFNZXNzYWdlQ291bnQs
CgkJCW9zdHJlYW0gJmFTdHJlYW0pOwogICAKICAgYm9vbAliZWdpbigpOwogICBib29sIG5leHQo
TVFNZXNzYWdlICZhTWVzc2FnZSwgdW5zaWduZWQgbG9uZyAqYUxlbmd0aCA9IDApOwogICBib29s
IGVuZCgpOwkKCiAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFcnJvcihjb25zdCBJU3RyaW5nICZhRnVu
Y3Rpb24sIHVuc2lnbmVkIGludCBjb21wbGV0aW9uY29kZSwgdW5zaWduZWQgaW50IHJlYXNvbmNv
ZGUpOwoKcHJpdmF0ZToKCgllbnVtIHsgTm9uZSwgQnJvd3NlRmlyc3QsIEJyb3dzZU5leHQgfTsJ
IAoKICAgTVFDb25uZWN0aW9uICptQ29ubmVjdGlvbjsgICAgICAgICAgCgogICBNUUhPQkogICBt
UXVldWVIYW5kbGU7ICAgICAgICAgCiAgIE1RT0QgICAgIG1PYmplY3REZXNjcmlwdG9yOyAgICAK
ICAgTVFMT05HICAgbU1heE1lc3NhZ2VTaXplOyAgICAgIAogICBNUUxPTkcgICBtT3Blbk9wdGlv
bnM7CiAgIAogICBpbnQgCQltQnJvd3NlT3B0aW9uczsKfTsKCgojIDE4ICIvaG9tZS94aHU2MDMx
L3RzZncvbXFmdHNlcnZpY2UvbXFxdWV1ZS5jcHAiIDIKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3
L21xZnRzZXJ2aWNlL1RTRldNUUZUU2VydmljZS5ocHAiIDEKIAogCiAKIAogCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAx
IDMKIAoKCiAKCiMgMTE0ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9saW1pdHMuaCIgMwoKCgoKCgoKIyAxMCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRz
ZXJ2aWNlL1RTRldNUUZUU2VydmljZS5ocHAiIDIKCgogCgoKCiMgMSAiL2hvbWUvYWtub2xsL2lv
Y3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFzZS5ocHAiIDEKIyAxMCAi
L2hvbWUvYWtub2xsL2lvY3NyYy9saW51eF9zMzkwLXNoYXJlZC5iaW4vaW5jbHVkZS9pZXhjYmFz
ZS5ocHAiCgoKIyA3MjYgIi9ob21lL2Frbm9sbC9pb2NzcmMvbGludXhfczM5MC1zaGFyZWQuYmlu
L2luY2x1ZGUvaWV4Y2Jhc2UuaHBwIgoKCgoKCgojIDE2ICIvaG9tZS94aHU2MDMxL3RzZncvbXFm
dHNlcnZpY2UvVFNGV01RRlRTZXJ2aWNlLmhwcCIgMgoKCiAKZXh0ZXJuICJDIiB7CiAgICAKIyAx
ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
IAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgpleHRlcm4gIkMiIHsgCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgog
CgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGli
L3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK
CgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGli
L3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCiAK
CgoKCgogCgpzdHJ1Y3Qgb3NvY2thZGRyCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHNhX2Zh
bWlseTsKICAgIHVuc2lnbmVkIGNoYXIgc2FfZGF0YVsxNF07CiAgfTsKCgogCgplbnVtCnsKICBT
SFVUX1JEID0gMCwJCSAKCiAgU0hVVF9XUiwJCSAKCiAgU0hVVF9SRFdSCQkgCgp9OwoKIAoKCgoK
CgoKCgojIDk0ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKCiAKCgpleHRlcm4gaW50
IHNvY2tldCAgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wpICB0aHJv
dyAoKSAgOwoKIAoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgIChpbnQgX19kb21haW4sIGludCBf
X3R5cGUsIGludCBfX3Byb3RvY29sLAoJCQkgICAgaW50IF9fZmRzWzJdKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBiaW5kICAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IHNvY2thZGRyICog
IF9fYWRkciwgc29ja2xlbl90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBnZXRz
b2NrbmFtZSAgKGludCBfX2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKiAgX19hZGRyLAoJCQkgICAgIHNv
Y2tsZW5fdCAqX19sZW4pICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gaW50IF9fY29ubmVjdCAg
KGludCBfX2ZkLAoJCQkgICBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqICBfX2FkZHIsIHNvY2ts
ZW5fdCBfX2xlbikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgY29ubmVjdCAgKGludCBfX2ZkLAoJ
CQkgX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiAgX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pICB0
aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBnZXRwZWVybmFtZSAgKGludCBfX2ZkLCBzdHJ1Y3Qg
c29ja2FkZHIgKiAgX19hZGRyLAoJCQkgICAgIHNvY2tsZW5fdCAqX19sZW4pICB0aHJvdyAoKSAg
OwoKCiAKZXh0ZXJuIGludCBfX3NlbmQgIChpbnQgX19mZCwgX19jb25zdCB2b2lkICogIF9fYnVm
LCBzaXplX3QgX19uLAoJCQlpbnQgX19mbGFncykgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2Vu
ZCAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24sCgkJICAgICAg
aW50IF9fZmxhZ3MpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCByZWN2ICAoaW50IF9fZmQs
IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzKSAgdGhyb3cgKCkgIDsKCiAK
CmV4dGVybiBpbnQgc2VuZHRvICAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqICBfX2J1Ziwgc2l6
ZV90IF9fbiwKCQkJaW50IF9fZmxhZ3MsIF9fY29uc3Qgc3RydWN0IHNvY2thZGRyICogIF9fYWRk
ciwKCQkJc29ja2xlbl90IF9fYWRkcl9sZW4pICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gaW50
IHJlY3Zmcm9tICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24sIGludCBfX2Zs
YWdzLAoJCQkgIHN0cnVjdCBzb2NrYWRkciAqICBfX2FkZHIsIHNvY2tsZW5fdCAqX19hZGRyX2xl
bikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGludCBzZW5kbXNnICAoaW50IF9fZmQsIF9fY29u
c3Qgc3RydWN0IG1zZ2hkciAqX19tZXNzYWdlLAoJCQkgaW50IF9fZmxhZ3MpICB0aHJvdyAoKSAg
OwoKIAoKZXh0ZXJuIGludCByZWN2bXNnICAoaW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVz
c2FnZSwgaW50IF9fZmxhZ3MpICB0aHJvdyAoKSAgOwoKCiAKCgpleHRlcm4gaW50IGdldHNvY2tv
cHQgIChpbnQgX19mZCwgaW50IF9fbGV2ZWwsIGludCBfX29wdG5hbWUsCgkJCSAgICB2b2lkICog
IF9fb3B0dmFsLCBzb2NrbGVuX3QgKl9fb3B0bGVuKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4g
aW50IHNldHNvY2tvcHQgIChpbnQgX19mZCwgaW50IF9fbGV2ZWwsIGludCBfX29wdG5hbWUsCgkJ
CSAgICBfX2NvbnN0IHZvaWQgKiAgX19vcHR2YWwsIHNvY2tsZW5fdCBfX29wdGxlbikgIHRocm93
ICgpICA7CgoKIAoKCmV4dGVybiBpbnQgbGlzdGVuICAoaW50IF9fZmQsIHVuc2lnbmVkIGludCBf
X24pICB0aHJvdyAoKSAgOwoKIAoKCgoKZXh0ZXJuIGludCBhY2NlcHQgIChpbnQgX19mZCwgc3Ry
dWN0IHNvY2thZGRyICogIF9fYWRkciwKCQkJc29ja2xlbl90ICpfX2FkZHJfbGVuKSAgdGhyb3cg
KCkgIDsKCiAKCgoKCgpleHRlcm4gaW50IHNodXRkb3duICAoaW50IF9fZmQsIGludCBfX2hvdykg
IHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBpbnQgaXNmZHR5cGUgIChpbnQgX19mZCwgaW50IF9f
ZmR0eXBlKSAgdGhyb3cgKCkgIDsKCn0gCgoKIyAzMSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIg
MwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc3VzZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2dj
Yy1saWIvczM5MC1zdXNlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoK
CgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXN1c2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMg
Ii91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMKCgogCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIApl
eHRlcm4gaW50IGhfZXJybm87CgogCmV4dGVybiBpbnQgKl9faF9lcnJub19sb2NhdGlvbiAgKHZv
aWQpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiMgNjIgIi91c3Iv
aW5jbHVkZS9uZXRkYi5oIiAzCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKIAoKZXh0ZXJuIHZvaWQg
aGVycm9yICAoX19jb25zdCBjaGFyICpfX3N0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBfX2Nv
bnN0IGNoYXIgKmhzdHJlcnJvciAgKGludCBfX2Vycl9udW0pICB0aHJvdyAoKSAgOwoKCgogCnN0
cnVjdCBob3N0ZW50CnsKICBjaGFyICpoX25hbWU7CQkJIAogIGNoYXIgKipoX2FsaWFzZXM7CQkg
CiAgaW50IGhfYWRkcnR5cGU7CQkgCiAgaW50IGhfbGVuZ3RoOwkJCSAKICBjaGFyICoqaF9hZGRy
X2xpc3Q7CQkgCgp9OwoKIAoKZXh0ZXJuIHZvaWQgc2V0aG9zdGVudCAgKGludCBfX3N0YXlfb3Bl
bikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGVuZGhvc3RlbnQgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGVudCAgKHZvaWQpICB0aHJv
dyAoKSAgOwoKIAoKZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnlhZGRyICAoX19jb25z
dCBjaGFyICpfX2FkZHIsIHNpemVfdCBfX2xlbiwKCQkJCQkgICBpbnQgX190eXBlKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lICAoX19jb25zdCBj
aGFyICpfX25hbWUpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0
aG9zdGJ5bmFtZTIgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fYWYpICB0aHJvdyAoKSAg
OwoKCiAKCgoKCmV4dGVybiBpbnQgZ2V0aG9zdGVudF9yICAoc3RydWN0IGhvc3RlbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXpl
X3QgX19idWZsZW4sCgkJCSAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3Vs
dCwKCQkJICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApICB0aHJvdyAoKSAgOwoKZXh0
ZXJuIGludCBnZXRob3N0YnlhZGRyX3IgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19hZGRy
LCBzaXplX3QgX19sZW4sCgkJCQkgaW50IF9fdHlwZSwKCQkJCSBzdHJ1Y3QgaG9zdGVudCAqX19y
ZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuLAoJCQkJIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKCQkJ
CSBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IGdl
dGhvc3RieW5hbWVfciAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCQkgc3Ry
dWN0IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkJIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJCSBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJp
Y3QgX19yZXN1bHQsCgkJCQkgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApICB0aHJvdyAoKSAg
OwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1lMl9yICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbmFtZSwgaW50IF9fYWYsCgkJCQkgIHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVz
dWx0X2J1ZiwKCQkJCSAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJ
CQkJICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCgkJCQkgIGludCAqX19y
ZXN0cmljdCBfX2hfZXJybm9wKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKCgpzdHJ1Y3QgbmV0
ZW50CnsKICBjaGFyICpuX25hbWU7CQkJIAogIGNoYXIgKipuX2FsaWFzZXM7CQkgCiAgaW50IG5f
YWRkcnR5cGU7CQkgCiAgdW5zaWduZWQgbG9uZwlpbnQgbl9uZXQ7CSAKfTsKCiAKCmV4dGVybiB2
b2lkIHNldG5ldGVudCAgKGludCBfX3N0YXlfb3BlbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2
b2lkIGVuZG5ldGVudCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHN0cnVjdCBuZXRl
bnQgKmdldG5ldGVudCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHN0cnVjdCBuZXRl
bnQgKmdldG5ldGJ5YWRkciAgKHVuc2lnbmVkIGxvbmcgaW50IF9fbmV0LAoJCQkJCSBpbnQgX190
eXBlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5bmFtZSAg
KF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCgogCgoKCgpleHRlcm4gaW50IGdl
dG5ldGVudF9yICAoc3RydWN0IG5ldGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCSAg
ICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJCQkgICAgIHN0cnVj
dCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAoJCQkgICAgIGludCAqX19yZXN0cmljdCBf
X2hfZXJybm9wKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgICh1bnNp
Z25lZCBsb25nIGludCBfX25ldCwgaW50IF9fdHlwZSwKCQkJCXN0cnVjdCBuZXRlbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHRfYnVmLAoJCQkJY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
YnVmbGVuLAoJCQkJc3RydWN0IG5ldGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCgkJCQlpbnQg
Kl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IGdldG5ldGJ5
bmFtZV9yICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkJCXN0cnVjdCBuZXRl
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkJY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fYnVmbGVuLAoJCQkJc3RydWN0IG5ldGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQs
CgkJCQlpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgIHRocm93ICgpICA7CgoKCiAKc3RydWN0
IHNlcnZlbnQKewogIGNoYXIgKnNfbmFtZTsJCQkgCiAgY2hhciAqKnNfYWxpYXNlczsJCSAKICBp
bnQgc19wb3J0OwkJCSAKICBjaGFyICpzX3Byb3RvOwkJIAp9OwoKIAoKZXh0ZXJuIHZvaWQgc2V0
c2VydmVudCAgKGludCBfX3N0YXlfb3BlbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGVu
ZHNlcnZlbnQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAq
Z2V0c2VydmVudCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50
ICpnZXRzZXJ2YnluYW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsCgkJCQkJICAgX19jb25zdCBj
aGFyICpfX3Byb3RvKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0
c2VydmJ5cG9ydCAgKGludCBfX3BvcnQsIF9fY29uc3QgY2hhciAqX19wcm90bykgIHRocm93ICgp
ICA7CgoKCiAKCmV4dGVybiBpbnQgZ2V0c2VydmVudF9yICAoc3RydWN0IHNlcnZlbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXpl
X3QgX19idWZsZW4sCgkJCSAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IGdldHNlcnZieW5hbWVfciAgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25hbWUsCgkJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJv
dG8sCgkJCQkgc3RydWN0IHNlcnZlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkJIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJCSBzdHJ1Y3Qgc2VydmVu
dCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBnZXRzZXJ2
Ynlwb3J0X3IgIChpbnQgX19wb3J0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wcm90bywK
CQkJCSBzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCQkgY2hhciAq
X19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJCQkJIHN0cnVjdCBzZXJ2ZW50ICoq
X19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgoKCiAKc3RydWN0IHByb3RvZW50CnsK
ICBjaGFyICpwX25hbWU7CQkJIAogIGNoYXIgKipwX2FsaWFzZXM7CQkgCiAgaW50IHBfcHJvdG87
CQkJIAp9OwoKIAoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQgIChpbnQgX19zdGF5X29wZW4pICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBlbmRwcm90b2VudCAgKHZvaWQpICB0aHJvdyAoKSAg
OwoKIAoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9lbnQgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9ieW5hbWUgIChfX2NvbnN0
IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBzdHJ1Y3QgcHJvdG9lbnQgKmdl
dHByb3RvYnludW1iZXIgIChpbnQgX19wcm90bykgIHRocm93ICgpICA7CgoKCiAKCmV4dGVybiBp
bnQgZ2V0cHJvdG9lbnRfciAgKHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9i
dWYsCgkJCSAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCgkJ
CSAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkg
IDsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW5hbWVfciAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25hbWUsCgkJCQkgIHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYs
CgkJCQkgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJCSAgc3Ry
dWN0IHByb3RvZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgpleHRlcm4g
aW50IGdldHByb3RvYnludW1iZXJfciAgKGludCBfX3Byb3RvLAoJCQkJICAgIHN0cnVjdCBwcm90
b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCQkgICAgY2hhciAqX19yZXN0cmljdCBf
X2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJCQkJICAgIHN0cnVjdCBwcm90b2VudCAqKl9fcmVzdHJp
Y3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc2V0bmV0Z3JlbnQgIChf
X2NvbnN0IGNoYXIgKl9fbmV0Z3JvdXApICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBlbmRu
ZXRncmVudCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBnZXRuZXRncmVudCAg
KGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCgkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX191
c2VycCwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2RvbWFpbnApICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gaW50IGlubmV0Z3IgIChfX2NvbnN0IGNoYXIgKl9fbmV0Z3JvdXAsIF9fY29uc3Qg
Y2hhciAqX19ob3N0LAoJCQkgX19jb25zdCBjaGFyICpfX3VzZXIsIF9fY29uc3QgY2hhciAqZG9t
YWluKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgZ2V0bmV0Z3JlbnRfciAgKGNoYXIgKipf
X3Jlc3RyaWN0IF9faG9zdHAsCgkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3VzZXJwLAoJ
CQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19kb21haW5wLAoJCQkgICAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKSAgdGhyb3cgKCkgIDsKCgoKCiAKCgoK
CgpleHRlcm4gaW50IHJjbWQgIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCB1bnNpZ25lZCBz
aG9ydCBpbnQgX19ycG9ydCwKCQkgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19sb2N1
c2VyLAoJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3JlbXVzZXIsCgkJICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKSAg
dGhyb3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgcmV4ZWMgIChjaGFyICoqX19yZXN0cmljdCBf
X2Fob3N0LCBpbnQgX19ycG9ydCwKCQkgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bmFtZSwKCQkgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKCQkgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLAoJCSAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19mZDJwKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gaW50IHJ1c2Vyb2sgIChfX2NvbnN0IGNo
YXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAoJCQkgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9f
Y29uc3QgY2hhciAqX19sb2N1c2VyKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gaW50IHJyZXN2
cG9ydCAgKGludCAqX19hbHBvcnQpICB0aHJvdyAoKSAgOwoKCgogCgogCnN0cnVjdCBhZGRyaW5m
bwp7CiAgaW50IGFpX2ZsYWdzOwkJCSAKICBpbnQgYWlfZmFtaWx5OwkJIAogIGludCBhaV9zb2Nr
dHlwZTsJCSAKICBpbnQgYWlfcHJvdG9jb2w7CQkgCiAgaW50IGFpX2FkZHJsZW47CQkgCiAgc3Ry
dWN0IHNvY2thZGRyICphaV9hZGRyOwkgCiAgY2hhciAqYWlfY2Fub25uYW1lOwkJIAogIHN0cnVj
dCBhZGRyaW5mbyAqYWlfbmV4dDsJIAp9OwoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgpleHRlcm4gaW50IGdldGFkZHJpbmZvICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFt
ZSwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zZXJ2aWNlLAoJCQkgICAgIF9f
Y29uc3Qgc3RydWN0IGFkZHJpbmZvICpfX3Jlc3RyaWN0IF9fcmVxLAoJCQkgICAgIHN0cnVjdCBh
ZGRyaW5mbyAqKl9fcmVzdHJpY3QgX19wYWkpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBm
cmVlYWRkcmluZm8gIChzdHJ1Y3QgYWRkcmluZm8gKl9fYWkpICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gY2hhciAqZ2FpX3N0cmVycm9yICAoaW50IF9fZWNvZGUpICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gaW50IGdldG5hbWVpbmZvICAoX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3Qg
X19zYSwKCQkJICAgICBzb2NrbGVuX3QgX19zYWxlbiwKCQkJICAgICBjaGFyICpfX3Jlc3RyaWN0
IF9faG9zdCwgc2l6ZV90IF9faG9zdGxlbiwKCQkJICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fc2Vy
diwgc2l6ZV90IF9fc2VydmxlbiwKCQkJICAgICBpbnQgX19mbGFncykgIHRocm93ICgpICA7CgoK
Cn0gCgoKIyAyMCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZUU2Vydmlj
ZS5ocHAiIDIKCiAgICAKCiAgICAKCgoKCn0KCiAKCgoKCgojIDEgIi9ob21lL3hodTYwMzEvdHNm
dy9JbmNsdWRlL1RTRldTZXNzaW9uQ29udGV4dC5ocHAiIDEKIAogCiAKIAogCgoKICAgIAoKICAg
ICAKICAgIGV4dGVybiAiQyIgewogICAgICAgIAogICAgfQoKICAgICAKICAgIAoKICAgICAKICAg
ICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgY2xhc3Mg
VFNGV1Nlc3Npb25Db250ZXh0IHsKICAgIHB1YmxpYzoKCiAgICAgICAgIAoKCiAgICAgICAgVFNG
V1Nlc3Npb25Db250ZXh0KFRTRldEYXRhSXRlbSAqYUNvbnRhaW5lcik7CgogICAgICAgICAKCgog
ICAgICAgIH5UU0ZXU2Vzc2lvbkNvbnRleHQoKTsKCiAgICAgICAgIAoKCiAgICAgICAgSVN0cmlu
ZyBjbGllbnRJUEFkZHIodm9pZCkgY29uc3Q7CgogICAgICAgICAKCgogICAgICAgIHVuc2lnbmVk
IGxvbmcgY2xpZW50SVBBZGRyQXNVbnNpZ25lZCh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCiAg
ICAgICAgY29uc3QgSVN0cmluZyBjdXJyZW50R2Vub1VzZXIodm9pZCkgY29uc3Q7CgogICAgICAg
ICAKCgogICAgICAgIGNvbnN0IElTdHJpbmcgZmlyc3RHZW5vVXNlcih2b2lkKSBjb25zdDsKCiAg
ICAgICAgIAoKCiAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBjdXJyZW50VXNlcklkKHZvaWQp
IGNvbnN0OwoKICAgICAgICAgCgoKICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGZpcnN0VXNl
cklkKHZvaWQpIGNvbnN0OwoKICAgICAgICAgCgoKICAgICAgICBjb25zdCBJU3RyaW5nIGN1cnJl
bnRQYXNzd29yZCh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoKCiAgICAgICAgY29uc3QgSVN0cmlu
ZyBmaXJzdFBhc3N3b3JkKHZvaWQpIGNvbnN0OwogICAgICAgIAogICAgICAgICAKCgogICAgICAg
IGNvbnN0IElTdHJpbmcgY3VycmVudFZOYW1lKHZvaWQpIGNvbnN0OwoKICAgICAgICAgCgoKICAg
ICAgICBjb25zdCBJU3RyaW5nIGN1cnJlbnRaTmFtZSh2b2lkKSBjb25zdDsKCiAgICAgICAgIAoK
CiAgICAgICAgY29uc3QgSVN0cmluZyBjdXJyZW50VGVsZWZvbih2b2lkKSBjb25zdDsKCiAgICAg
ICAgIAoKCiAgICAgICAgdm9pZCBsb2dvbihjb25zdCBJU3RyaW5nICZhR2Vub1VzZXIsIAogICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhQmVkTnIsICAKICAgICAgICAgICAgICAgICAg
IGNvbnN0IElTdHJpbmcgJmFQYXNzd29yZCwgCiAgICAgICAgICAgICAgICAgICBjb25zdCBJU3Ry
aW5nICZhVk5hbWUsIAogICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYVpOYW1lLAog
ICAgICAgICAgICAgICAgICAgY29uc3QgSVN0cmluZyAmYVRlbE5yKTsKICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAKCgogICAgICAgIHZvaWQgbG9nb2ZmKHZvaWQpOwoKICAgICAgICAgCgoK
ICAgICAgICBib29sIGlzTG9nZ2VkT24odm9pZCkgY29uc3Q7CgogICAgICAgICAKCgogICAgICAg
IGNvbnN0IFRTRldEYXRhSXRlbSAmYXNEYXRhSXRlbSh2b2lkKTsKCiAgICBwcml2YXRlOgoKICAg
ICAgICAgCgoKICAgICAgICBUU0ZXRGF0YUFycmF5ICpsb2dpbkFycmF5KHZvaWQpIGNvbnN0OwoK
ICAgICAgICAgCiAgICAgICAgbXV0YWJsZSBUU0ZXRGF0YUl0ZW0gICAgICAgICAgICAgICAgICAg
KnRoZURhdGFJdGVtOwogICAgfTsKCiAgICAgCiAgICBjbGFzcyBUU0ZXT2ZmbGluZUV4Y2VwdGlv
biA6IHB1YmxpYyBJRXhjZXB0aW9uIHsKICAgIHB1YmxpYzoKCiAgICAgICAgIAoKCiAgICAgICAg
VFNGV09mZmxpbmVFeGNlcHRpb24oKTsKCiAgICAgICAgIAoKCiAgICAgICAgflRTRldPZmZsaW5l
RXhjZXB0aW9uKCk7CgogICAgICAgICAKCgogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUodm9pZCkg
Y29uc3Q7CiAgICB9OwoKCgogCiAKIAogCiAKIyAzNiAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRz
ZXJ2aWNlL1RTRldNUUZUU2VydmljZS5ocHAiIDIKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0lu
Y2x1ZGUvVFNGV1RocmVhZFBvb2wuaHBwIiAxCgoKCiAgCgogICAgIAoKCgoKCgpjbGFzcyBUU0ZX
VGhyZWFkUG9vbDsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBUU0ZXU2VjdXJlQXNzaWdubWVu
dAp7CnB1YmxpYzoKCVRTRldTZWN1cmVBc3NpZ25tZW50KFQgYVZhbHVlKQoJewoJCQogICAgICAJ
CXB0aHJlYWRfbXV0ZXhfaW5pdCgmbU11dGV4LCAwKTsKCSAgICAJcHRocmVhZF9jb25kX2luaXQo
Jm1Db25kaXRpb24sIDApOwogICAgCQoJCQoJCWFzc2lnbihhVmFsdWUpOwoJfQoJflRTRldTZWN1
cmVBc3NpZ25tZW50KCkKCXsKCQkKICAgICAgCQlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1NdXRl
eCk7CiAgICAgIAkJcHRocmVhZF9jb25kX2Rlc3Ryb3koJm1Db25kaXRpb24pOwogICAgCQoJfQoJ
Cgl2b2lkIGFzc2lnbihUIGFWYWx1ZSkgeyBtVmFyaWFibGUgPSBhVmFsdWU7IH0KCQoJdm9pZCBh
c3NpZ25BbmRTaWduYWwoVCBhVmFsdWUpCgl7CgkJCiAgICAJCXB0aHJlYWRfbXV0ZXhfbG9jaygg
Jm1NdXRleCApOwogICAgCQoKICAgIAlhc3NpZ24oYVZhbHVlKTsKCgkJIAogICAgCQogICAgICAg
IAlwdGhyZWFkX2NvbmRfc2lnbmFsKCZtQ29uZGl0aW9uKTsgCgkJCXB0aHJlYWRfbXV0ZXhfdW5s
b2NrKCAmbU11dGV4ICk7CiAgICAJCgoKCX0KCQoJdm9pZCB3YWl0Rm9yVmFsdWUoKQoJewoJIAkK
ICAgICAgICAJcHRocmVhZF9tdXRleF9sb2NrKCAmbU11dGV4ICk7CgkJCQoJCQkgCgkJCWlmICgh
bVZhcmlhYmxlKQoJCQl7CiAgCSAgICAgICAgCXB0aHJlYWRfY29uZF93YWl0KCZtQ29uZGl0aW9u
LCAmbU11dGV4KTsKCQkJfQogICAgICAgIAoKCgoKCgkJCQoKICAgICAgICAKICAgICAgICAgIAlw
dGhyZWFkX211dGV4X3VubG9jayggJm1NdXRleCApOwogICAgICAgIAoJfQoJCgl2b2lkIHdhaXRV
bnRpbE51bGwoKQoJewoJIAkKICAgICAgICAJcHRocmVhZF9tdXRleF9sb2NrKCAmbU11dGV4ICk7
CgkJCQoJCQkgCgkJCWlmIChtVmFyaWFibGUpCgkJCXsKICAJICAgICAgICAJcHRocmVhZF9jb25k
X3dhaXQoJm1Db25kaXRpb24sICZtTXV0ZXgpOwoJCQl9CiAgICAgICAgCgoKCgoKCiAgICAgICAg
CiAgICAgICAgICAJcHRocmVhZF9tdXRleF91bmxvY2soICZtTXV0ZXggKTsKICAgICAgICAKCX0K
CQoJVCB2YWx1ZSgpIHsgcmV0dXJuIG1WYXJpYWJsZTsgfQoKcHJpdmF0ZToKCgkKICAgICAgICAg
IHB0aHJlYWRfY29uZF90ICAJbUNvbmRpdGlvbjsKICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAJ
bU11dGV4OwoJCgoKCQoJVAltVmFyaWFibGU7Cn07CgpjbGFzcyBUU0ZXU2VydmljZUNvbnRleHQK
ewpwdWJsaWM6CgoJZW51bSBGdW5jdGlvbkNvZGUgeyBzZXJ2aWNlLCBjb21taXQsIHJvbGxiYWNr
IH07CgkKCVRTRldTZXJ2aWNlQ29udGV4dCgpIHt9CgkKCVRTRldTZXJ2aWNlQ29udGV4dChGdW5j
dGlvbkNvZGUgYUZ1bmN0aW9uLAoJCQlUU0ZXU2Vzc2lvbkNvbnRleHQgKmFTZXNzaW9uQ29udGV4
dCwKICAgICAgICAJVFNGV0RhdGFDb250YWluZXIgICphSW5wdXRDb250YWluZXIsCiAgICAgICAg
CVRTRldEYXRhQ29udGFpbmVyICAqYU91dHB1dENvbnRhaW5lciwKCQkJVFNGV0RhdGFDb250YWlu
ZXIgICphUGFyYW1ldGVyID0gMCk7CgkJCQkKCXZpcnR1YWwgflRTRldTZXJ2aWNlQ29udGV4dCgp
OwoJCglGdW5jdGlvbkNvZGUJCQlnZXRGdW5jdGlvbkNvZGUoKTsKCXZvaWQJCQkJCXNldEZ1bmN0
aW9uQ29kZShGdW5jdGlvbkNvZGUgYUZ1bmN0aW9uQ29kZSk7Cglib29sIGlzVmFsaWQoKTsKCQoJ
RnVuY3Rpb25Db2RlCQkJbUZ1bmN0aW9uQ29kZTsKCVRTRldTZXNzaW9uQ29udGV4dCAqCW1TZXNz
aW9uQ29udGV4dDsKCVRTRldEYXRhQ29udGFpbmVyICoJCW1JbnB1dENvbnRhaW5lcjsKICAgIFRT
RldEYXRhQ29udGFpbmVyICoJCW1PdXRwdXRDb250YWluZXI7CgkKCVRTRldEYXRhQ29udGFpbmVy
IAkJbVBhcmFtZXRlcjsKfTsKCQpjbGFzcyBUU0ZXVGhyZWFkIDogcHVibGljIElOb25HVUlUaHJl
YWQKewpwdWJsaWM6CglUU0ZXVGhyZWFkKGNvbnN0IElTdHJpbmcgJmFLZXkpOwoJdmlydHVhbCB+
VFNGV1RocmVhZCgpOwoJCgljb25zdCBJU3RyaW5nICYga2V5KCkgY29uc3Q7CgkKCXZpcnR1YWwg
dm9pZCBzZXJ2aWNlKFRTRldTZXJ2aWNlQ29udGV4dCAmYVNlcnZpY2VDb250ZXh0KSAJPSAwOwoJ
dmlydHVhbCB2b2lkIHJvbGxiYWNrKFRTRldTZXJ2aWNlQ29udGV4dCAmYVNlcnZpY2VDb250ZXh0
KSAJPSAwOwoJdmlydHVhbCB2b2lkIGNvbW1pdChUU0ZXU2VydmljZUNvbnRleHQgJmFTZXJ2aWNl
Q29udGV4dCkgCT0gMDsKCQkKcHJpdmF0ZToKCWJvb2wgbG9jayhsb25nIGFUaW1lb3V0ID0gLTEp
OwoJYm9vbCB1bmxvY2soKTsKCglib29sIGludm9rZShUU0ZXU2VydmljZUNvbnRleHQgJmFTZXJ2
aWNlQ29udGV4dCk7CgkKCWJvb2wgd2FpdEZvclN0YXJ0dXBPZlRocmVhZChsb25nIGFUaW1lb3V0
ID0gLTEpOwoJdm9pZCBydW4odm9pZCk7CgkKCWJvb2wgc2h1dGRvd24obG9uZyBhVGltZW91dCk7
CgkKCUlTdHJpbmcgCQkJCW1LZXk7CgkKCUlQcml2YXRlQ29uZGl0aW9uCQltU2h1dGRvd25FdmVu
dDsKCUlQcml2YXRlQ29uZGl0aW9uCQltU3RhcnR1cEV2ZW50OwoJSVByaXZhdGVSZXNvdXJjZQkJ
bVJlc291cmNlTG9jazsKCQoJVFNGV1NlY3VyZUFzc2lnbm1lbnQ8VFNGV1NlcnZpY2VDb250ZXh0
ICo+CW1TZWN1cmVDb250ZXh0OwoJCglib29sIAkJCQkJbVNodXRkb3duOwoJYm9vbAkJCQkJbUlz
SWRsZTsKCQoJZnJpZW5kIGNsYXNzIFRTRldUaHJlYWRQb29sOwp9OwoKdHlwZWRlZiBUU0ZXVGhy
ZWFkICogKCpDUkVBVEVfVEhSRUFEX0ZVTkNUSU9OKShjb25zdCBJU3RyaW5nICZhS2V5KTsKCmNs
YXNzIFRTRldUaHJlYWRQb29sIDogcHJvdGVjdGVkIElLZXlTZXQ8VFNGV1RocmVhZCAqLCBJU3Ry
aW5nPgp7CgpwdWJsaWM6CgkKCVRTRldUaHJlYWRQb29sKAl1bnNpZ25lZCBpbnQgYU1heFRocmVh
ZENvdW50LCAKCQkJCQlsb25nIGFNYXhJZGxlVGltZSwKCQkJCQlDUkVBVEVfVEhSRUFEX0ZVTkNU
SU9OIGFGdW5jdGlvbik7Cgl2aXJ0dWFsIH5UU0ZXVGhyZWFkUG9vbCgpOwoJCgl1bnNpZ25lZCBs
b25nIAlhZGRSZWZlcmVuY2UoKSAJeyByZXR1cm4gKytzUmVmZXJlbmNlQ291bnQ7IH0KCXVuc2ln
bmVkIGxvbmcgCXJlbGVhc2UoKSAJCXsgcmV0dXJuIC0tc1JlZmVyZW5jZUNvdW50OyB9CgkKCVRT
RldUaHJlYWQgKglhZGQoY29uc3QgSVN0cmluZyAmYUtleSk7Cgl2b2lkIAkJcmVtb3ZlKGNvbnN0
IElTdHJpbmcgJmFLZXksIGxvbmcgYVRpbWVvdXQpOwoJYm9vbCAJCXJlbW92ZUFsbChsb25nIGFU
aW1lb3V0KTsKCVRTRldUaHJlYWQgKiAJZmluZChjb25zdCBJU3RyaW5nICZhS2V5KTsKCWJvb2wg
CQljb250YWluc1RocmVhZFdpdGhLZXkoY29uc3QgSVN0cmluZyAmYUtleSk7CgkKCWJvb2wgCQlz
dGFydCgpOwoJYm9vbCAJCXN0b3AobG9uZyBhVGltZW91dCk7CgkKCXZpcnR1YWwgYm9vbAlsb2Nr
VGhyZWFkKCBjb25zdCBJU3RyaW5nICZhVGhyZWFkS2V5LCBsb25nIGFUaW1lb3V0ICk7Cgl2aXJ0
dWFsIGJvb2wgCXVubG9ja1RocmVhZCggY29uc3QgSVN0cmluZyAmYVRocmVhZEtleSk7CgkKCXZp
cnR1YWwgYm9vbCAJaW52b2tlKAljb25zdCBJU3RyaW5nICZhVGhyZWFkS2V5LCAKCQkJCVRTRldT
ZXJ2aWNlQ29udGV4dCAmYVNlcnZpY2VDb250ZXh0KTsKcHJvdGVjdGVkOgoJYm9vbCAJCQlsb2Nr
KGxvbmcgYVRpbWVvdXQgPSAtMSAgKTsKCWJvb2wgCQkJdW5sb2NrKCk7CgkKcHJpdmF0ZToKCglJ
UHJpdmF0ZVJlc291cmNlIAltUmVzb3VyY2VMb2NrOwoJCgl1bnNpZ25lZCBpbnQgbU1heFRocmVh
ZENvdW50OyAKCXVuc2lnbmVkIGludCBtTWF4SWRsZVRpbWU7CgkKCUNSRUFURV9USFJFQURfRlVO
Q1RJT04JbUNyZWF0ZUZ1bmN0aW9uOwoJCglzdGF0aWMgdW5zaWduZWQgbG9uZyBzUmVmZXJlbmNl
Q291bnQ7Cn07CgoKIyAzNyAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZU
U2VydmljZS5ocHAiIDIKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV1NlcnZp
Y2VDb25uZWN0LmhwcCIgMQoKCgoKIAoKCgogCiAKCgpjbGFzcyBUU0ZXQ2xpZW50RXhjZXB0aW9u
IDogcHVibGljIElFeGNlcHRpb24gewpwdWJsaWM6CgogICAgIAoKCiAgICBUU0ZXQ2xpZW50RXhj
ZXB0aW9uKGNvbnN0IElTdHJpbmcgJmFUZXh0KSA6IElFeGNlcHRpb24oYVRleHQpIHt9CgogICAg
IAoKCiAgICB+VFNGV0NsaWVudEV4Y2VwdGlvbigpIHt9CgogICAgIAoKCiAgICBjb25zdCBjaGFy
ICpuYW1lKHZvaWQpIGNvbnN0IHsgcmV0dXJuKCJUU0ZXQ2xpZW50RXhjZXB0aW9uIik7IH0KfTsK
CgogIApjbGFzcyBIb3N0Q29ubmVjdAp7CiAgcHVibGljOgogICAgSG9zdENvbm5lY3QoY29uc3Qg
SVN0cmluZyAmYUhvc3QsCiAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICZhUGdt
TnVtYmVyLAogICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAmYVBnbVZlcnNpb24p
OwogICAgSG9zdENvbm5lY3QoY29uc3QgdW5zaWduZWQgbG9uZyAmYUlQQWRkciwKICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgJmFQZ21OdW1iZXIsCiAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBsb25nICZhUGdtVmVyc2lvbik7CiAgICBIb3N0Q29ubmVjdCgpOwogICAg
fkhvc3RDb25uZWN0KCk7CgogCiAgICBib29sIG9wZXJhdG9yID09ICggY29uc3QgSG9zdENvbm5l
Y3QmIGFIb3N0Q29ubmVjdCApIGNvbnN0OwoKICAgIHVuc2lnbmVkIGxvbmcgZ2V0SVBBZGRyKCkK
ICAgICAgeyByZXR1cm4odGhlSG9zdElQQWRkcik7IH0KCiAgICB1bnNpZ25lZCBsb25nIGdldFBn
bU51bWJlcigpCiAgICAgIHsgcmV0dXJuKHRoZVBnbU51bWJlcik7IH0KCiAgICB1bnNpZ25lZCBs
b25nIGdldFBnbVZlcnNpb24oKQogICAgICB7IHJldHVybih0aGVQZ21WZXJzaW9uKTsgfQoKICBw
cml2YXRlOgogICAgdW5zaWduZWQgbG9uZyAgICAgdGhlUGdtTnVtYmVyOwogICAgdW5zaWduZWQg
bG9uZyAgICAgdGhlUGdtVmVyc2lvbjsKICAgIHVuc2lnbmVkIGxvbmcgICAgIHRoZUhvc3RJUEFk
ZHI7Cgp9OyAgCgogCmNsYXNzIFRTRldTZXJ2aWNlQ29ubmVjdCA6IHB1YmxpYyBIb3N0Q29ubmVj
dAp7CiAgcHVibGljOgogIAlUU0ZXU2VydmljZUNvbm5lY3QoKSB7fQoKCVRTRldTZXJ2aWNlQ29u
bmVjdCgJY29uc3QgSVN0cmluZyAmYVNlcnZpY2VuYW1lLCAKCQkJCQkJY29uc3QgSVN0cmluZyAm
YUhvc3QsCgkJICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgJmFQZ21OdW1iZXIs
CiAgICAgICAgCQkgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgJmFQZ21WZXJzaW9uKTsKCglU
U0ZXU2VydmljZUNvbm5lY3QoCWNvbnN0IElTdHJpbmcgJmFTZXJ2aWNlbmFtZSwgCQkJCQkJCQoJ
CQkJCQljb25zdCB1bnNpZ25lZCBsb25nICZhSVBBZGRyLAoJCSAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBsb25nICZhUGdtTnVtYmVyLAogICAgICAgIAkJICAgICAgICBjb25zdCB1bnNp
Z25lZCBsb25nICZhUGdtVmVyc2lvbik7CgoJflRTRldTZXJ2aWNlQ29ubmVjdCgpOwoKCWNvbnN0
IElTdHJpbmcgJmdldFNlcnZpY2VuYW1lKCkgeyByZXR1cm4gbVNlcnZpY2VuYW1lOyB9CgoJYm9v
bCBvcGVyYXRvciA9PSAoIGNvbnN0IFRTRldTZXJ2aWNlQ29ubmVjdCYgYU90aGVyICkgY29uc3Q7
CgogIHByaXZhdGU6CQoJSVN0cmluZwltU2VydmljZW5hbWU7Cn07CgojIDM4ICIvaG9tZS94aHU2
MDMxL3RzZncvbXFmdHNlcnZpY2UvVFNGV01RRlRTZXJ2aWNlLmhwcCIgMgoKCiMgMSAiL2hvbWUv
eGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV1NlcnZpY2VJbXBsZW1lbnRhdGlvbi5ocHAiIDEKIAog
CiAKIAogCgoKICAgIAoKICAgICAKCQogICAgCiAgICAKCQojIDEgIi9ob21lL3hodTYwMzEvdHNm
dy9JbmNsdWRlL1RTRldDbGllbnQuaHBwIiAxCiAKIAogCiAKIAoKCiAgICAKCiAgICAgCiAgICAK
ICAgIAoKICAgICAKICAgIGV4dGVybiAiQyIgewogICAgICAgIAogICAgICAgIAogICAgICAgIAoJ
ICAgIAoKCgoKCgogICAgICAgICAgICAKIyAxICIvdXNyL2luY2x1ZGUvcnBjL3BtYXBfY2xudC5o
IiAxIDMKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuICJDIiB7IAoKdHlwZWRlZiBib29sX3QgKCpyZXN1bHRwcm9jX3QpICAoY2FkZHJfdCByZXNw
LAoJCQkJICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmFkZHIpICA7CgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCmV4dGVybiBib29sX3QgcG1hcF9zZXQgIChfX2NvbnN0IHVfbG9uZyBfX3Byb2dy
YW0sIF9fY29uc3QgdV9sb25nIF9fdmVycywKCQkJICAgICBpbnQgX19wcm90b2NvbCwgdV9zaG9y
dCBfX3BvcnQpICB0aHJvdyAoKSAgOwpleHRlcm4gYm9vbF90IHBtYXBfdW5zZXQgIChfX2NvbnN0
IHVfbG9uZyBfX3Byb2dyYW0sIF9fY29uc3QgdV9sb25nIF9fdmVycykgIHRocm93ICgpICA7CmV4
dGVybiBzdHJ1Y3QgcG1hcGxpc3QgKnBtYXBfZ2V0bWFwcyAgKHN0cnVjdCBzb2NrYWRkcl9pbiAq
X19hZGRyZXNzKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGVudW0gY2xudF9zdGF0IHBtYXBfcm10Y2Fs
bCAgKHN0cnVjdCBzb2NrYWRkcl9pbiAqX19hZGRyLAoJCQkJCSBfX2NvbnN0IHVfbG9uZyBfX3By
b2csCgkJCQkJIF9fY29uc3QgdV9sb25nIF9fdmVycywKCQkJCQkgX19jb25zdCB1X2xvbmcgX19w
cm9jLAoJCQkJCSB4ZHJwcm9jX3QgX194ZHJhcmdzLAoJCQkJCSBjYWRkcl90IF9fYXJnc3AsIHhk
cnByb2NfdCBfX3hkcnJlcywKCQkJCQkgY2FkZHJfdCBfX3Jlc3AsIHN0cnVjdCB0aW1ldmFsIF9f
dG91dCwKCQkJCQkgdV9sb25nICpfX3BvcnRfcHRyKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGVudW0g
Y2xudF9zdGF0IGNsbnRfYnJvYWRjYXN0ICAoX19jb25zdCB1X2xvbmcgX19wcm9nLAoJCQkJCSAg
IF9fY29uc3QgdV9sb25nIF9fdmVycywKCQkJCQkgICBfX2NvbnN0IHVfbG9uZyBfX3Byb2MsCgkJ
CQkJICAgeGRycHJvY190IF9feGFyZ3MsCgkJCQkJICAgY2FkZHJfdCBfX2FyZ3NwLAoJCQkJCSAg
IHhkcnByb2NfdCBfX3hyZXN1bHRzLAoJCQkJCSAgIGNhZGRyX3QgX19yZXN1bHRzcCwKCQkJCQkg
ICByZXN1bHRwcm9jX3QgX19lYWNocmVzdWx0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHVfc2hvcnQg
cG1hcF9nZXRwb3J0ICAoc3RydWN0IHNvY2thZGRyX2luICpfX2FkZHJlc3MsCgkJCQkgIF9fY29u
c3QgdV9sb25nIF9fcHJvZ3JhbSwKCQkJCSAgX19jb25zdCB1X2xvbmcgX192ZXJzaW9uLAoJCQkJ
ICB1X2ludCBfX3Byb3RvY29sKSAgdGhyb3cgKCkgIDsKCn0gCgoKIyAyNiAiL2hvbWUveGh1NjAz
MS90c2Z3L0luY2x1ZGUvVFNGV0NsaWVudC5ocHAiIDIKCiAgICAgICAgICAgIAojIDEgIi91c3Iv
aW5jbHVkZS9hcnBhL2luZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVy
biAiQyIgeyAKCiAKCmV4dGVybiB1X2ludDMyX3QgaW5ldF9hZGRyICAoX19jb25zdCBjaGFyICpf
X2NwKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgaW5ldF9hdG9uICAoX19jb25zdCBjaGFy
ICpfX2NwLCBzdHJ1Y3QgaW5fYWRkciAqX19pbnApICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdV9p
bnQzMl90IGluZXRfbG5hb2YgIChzdHJ1Y3QgaW5fYWRkciBfX2luKSAgdGhyb3cgKCkgIDsKCiAK
CmV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21ha2VhZGRyICAodV9pbnQzMl90IF9fbmV0LCB1
X2ludDMyX3QgX19ob3N0KSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICppbmV0X25ldGEg
ICh1X2ludDMyX3QgX19uZXQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gdV9pbnQzMl90IGluZXRfbmV0b2YgIChzdHJ1Y3QgaW5fYWRkciBfX2luKSAg
dGhyb3cgKCkgIDsKCiAKCmV4dGVybiB1X2ludDMyX3QgaW5ldF9uZXR3b3JrICAoX19jb25zdCBj
aGFyICpfX2NwKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqaW5ldF9uZXRfbnRvcCAg
KGludCBfX2FmLCBfX2NvbnN0IHZvaWQgKl9fY3AsIGludCBfX2JpdHMsCgkJCQkgY2hhciAqX19i
dWYsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGludCBpbmV0X25ldF9w
dG9uICAoaW50IF9fYWYsIF9fY29uc3QgY2hhciAqX19jcCwKCQkJICAgICAgIHZvaWQgKl9fYnVm
LCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKmluZXRfbnRvYSAg
KHN0cnVjdCBpbl9hZGRyIF9faW4pICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgaW5ldF9w
dG9uICAoaW50IF9fYWYsIF9fY29uc3QgY2hhciAqX19jcCwgdm9pZCAqX19idWYpICB0aHJvdyAo
KSAgOwoKIAoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmluZXRfbnRvcCAgKGludCBfX2FmLCBfX2Nv
bnN0IHZvaWQgKl9fY3AsCgkJCQkgICAgIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pICB0aHJv
dyAoKSAgOwoKIAoKCmV4dGVybiB1bnNpZ25lZCBpbnQgaW5ldF9uc2FwX2FkZHIgIChfX2NvbnN0
IGNoYXIgKl9fY3AsCgkJCQkJIHVuc2lnbmVkIGNoYXIgKl9fYnVmLCBpbnQgX19sZW4pICB0aHJv
dyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKmluZXRfbnNhcF9udG9hICAoaW50IF9fbGVuLCBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKl9fY3AsCgkJCQkgIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsK
Cn0gCgoKIyAyNyAiL2hvbWUveGh1NjAzMS90c2Z3L0luY2x1ZGUvVFNGV0NsaWVudC5ocHAiIDIK
CiAgICAgICAgICAgIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvdXRzbmFtZS5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3V0c25hbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKIyAzMCAi
L3Vzci9pbmNsdWRlL3N5cy91dHNuYW1lLmgiIDIgMwoKCgoKCgogCnN0cnVjdCB1dHNuYW1lCiAg
ewogICAgIAogICAgY2hhciBzeXNuYW1lWzY1IF07CgogICAgIAogICAgY2hhciBub2RlbmFtZVs2
NSAgXTsKCiAgICAgCiAgICBjaGFyIHJlbGVhc2VbNjUgXTsKICAgICAKICAgIGNoYXIgdmVyc2lv
bls2NSBdOwoKICAgICAKICAgIGNoYXIgbWFjaGluZVs2NSBdOwoKCiAgICAgCgogICAgY2hhciBk
b21haW5uYW1lWzY1ICBdOwoKCgoKICB9OwoKCgoKCgogCmV4dGVybiBpbnQgdW5hbWUgIChzdHJ1
Y3QgdXRzbmFtZSAqX19uYW1lKSAgdGhyb3cgKCkgIDsKCgp9IAoKCiMgMjggIi9ob21lL3hodTYw
MzEvdHNmdy9JbmNsdWRlL1RTRldDbGllbnQuaHBwIiAyCgogICAgICAgIAoKCiAgICAgICAgCiAg
ICB9CgogICAgIAogICAgCgkKCgogICAgIAogICAgIAoKCgoKICAgIGNsYXNzIFRTRldDbGllbnQg
ewogICAgcHVibGljOgoKICAgICAgICBzdGF0aWMgVFNGV0NsaWVudCAqZ2V0SW5zdGFuY2VGb3Io
SG9zdENvbm5lY3QgYUhvc3RDb25uZWN0KTsKICAgICAgICBzdGF0aWMgdm9pZCByZWxlYXNlKCk7
CgogICAgICAgICAKCgoKCiAgICAgICAgflRTRldDbGllbnQoKTsKCgogICAgICAgICAKCgoKCgoK
CgoKCgoKCgoKCgoKCiAgICAgICAgYm9vbCBpbnZva2UoY29uc3QgSVN0cmluZyAmYVNlcnZpY2VO
YW1lLCAgIFRTRldEYXRhQ29udGFpbmVyICphSW5wdXRDbnIsCiAgICAgICAgICAgICAgICAgICAg
VFNGV0RhdGFDb250YWluZXIgKmFPdXRwdXRDbnIsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyAmYVRpbWVvdXQgPSAzMCk7CgoKICAgIHByaXZhdGU6CgogICAgICAgICAK
CgogICAgICAgIFRTRldDbGllbnQoSG9zdENvbm5lY3QgYUhvc3RDb25uZWN0KTsKCiAgICAgICAg
IAogICAgICAgIGJvb2wgY29ubmVjdCh2b2lkKTsKCiAgICAgICAgIAogICAgICAgIHZvaWQgZGlz
Y29ubmVjdCh2b2lkKTsKCiAgICAgICAgIAogICAgICAgIGJvb2wgaXNDb25uZWN0ZWQodm9pZCk7
CgogICAgICAgICAKICAgICAgICBjb25zdCBJU3RyaW5nICYgY2xpZW50QWRkcih2b2lkKTsKCgog
ICAgICAgICAKICAgICAgICBDTElFTlQgICAgICAgICAgICAgICAgICAgICAqdGhlVENQSGFuZGxl
OwogICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIHRoZVNvY2tldDsKICAgICAgICAK
ICAgICAgICBIb3N0Q29ubmVjdCAgICAgICAgICAgICAgICB0aGVIb3N0Q29ubmVjdDsKCiAgICAg
ICAgIAogICAgICAgIHN0YXRpYyBJU3RyaW5nICAgICAgICAgICAgIHRoZUNsaWVudEFkZHI7CiAg
ICAgICAgc3RhdGljIElQcml2YXRlUmVzb3VyY2UgICAgdGhlTXV0ZXg7CiAgICAgICAgCiAgICAg
ICAgc3RhdGljIFRTRldDbGllbnQgKip0aGVDbGllbnRMaXN0OwogICAgICAgIHN0YXRpYyBpbnQg
ICAgICAgICAgbkNsaWVudHM7CiAgICB9OwoKCgoKIAogCiAKIAogCiMgMTQgIi9ob21lL3hodTYw
MzEvdHNmdy9JbmNsdWRlL1RTRldTZXJ2aWNlSW1wbGVtZW50YXRpb24uaHBwIiAyCgoKICAgICAK
ICAgICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgIGNsYXNzIFRTRldTZXJ2aWNlSW1w
bGVtZW50YXRpb24gewogICAgcHVibGljOgoKICAgICAgICAgCgoKICAgICAgICB2aXJ0dWFsIH5U
U0ZXU2VydmljZUltcGxlbWVudGF0aW9uKCkgewoKICAgICAgICB9CgogICAgICAgICAKCgoKCgoK
ICAgIAogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBuZWVkZWRTdGFja1NpemUodm9pZCkg
PSAwOwoKICAgICAgICAgCgoKCgoKCiAgICAgICAgdmlydHVhbCB2b2lkIHNlcnZpY2UoVFNGV1Nl
c3Npb25Db250ZXh0ICphU2Vzc2lvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFNGV0RhdGFDb250YWluZXIgICphSW5wdXRDb250YWluZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFNGV0RhdGFDb250YWluZXIgICphT3V0cHV0Q29udGFpbmVyKSA9IDA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAKCgoKCgoKICAgICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0KGNvbnN0IFRTRldTZXNzaW9uQ29udGV4dCAqYVNlc3Npb25Db250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNGV0RhdGFDb250YWluZXIgICph
SW5wdXRDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU0ZXRGF0
YUNvbnRhaW5lciAgKmFPdXRwdXRDb250YWluZXIpIHsKICAgICAgICB9CgogICAgICAgICAKCgoK
CgoKICAgICAgICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2soY29uc3QgVFNGV1Nlc3Npb25Db250ZXh0
ICphU2Vzc2lvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNG
V0RhdGFDb250YWluZXIgICphSW5wdXRDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNGV0RhdGFDb250YWluZXIgICphT3V0cHV0Q29udGFpbmVyKSB7CiAgICAg
ICAgfQogICAgCiAgICAgICAgIAoKCgoKCgoKICAgICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVNlcnZpY2VUaHJlYWQodm9pZCkgewogICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAg
IAogICAgICAgICAKCgoKCgoKICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFNlcnZpY2VUaHJl
YWQodm9pZCkgewogICAgICAgIAogICAgICAgIH0KICAgICAgICAKICAgIHByb3RlY3RlZDoKCQog
ICAgICAgICAKCgogICAgICAgIFRTRldTZXJ2aWNlSW1wbGVtZW50YXRpb24oVFNGV1Byb3BlcnR5
U2V0ICZhUHJvcGVydHlTZXQpCiAgICAgICAgICAgIDp0aGVQcm9wZXJ0eVNldChhUHJvcGVydHlT
ZXQpIHsKCiAgICAgICAgfQoJCQoJCSAKCgoKCgoKCQl2b2lkIAkJCQlhZGRTZXJ2aWNlRGVwZW5k
ZW5jeShjb25zdCBJU3RyaW5nICZhU2VydmljZW5hbWUpOwoKCQkgCgoKCgkJYm9vbCAJCQkJaGFz
U2VydmljZURlcGVuZGVuY3lEZWZpbml0aW9uKGNvbnN0IElTdHJpbmcgJmFTZXJ2aWNlbmFtZSkg
Y29uc3Q7CgkJCgkJIAoKCgoKCgoJCVRTRldTZXJ2aWNlQ29ubmVjdCAJZ2V0Q29ubmVjdEZvclNl
cnZpY2UoY29uc3QgSVN0cmluZyAmYVNlcnZpY2VuYW1lKSBjb25zdDsKCQkKCQkKICAgICAgICAg
CgkJSVNlcXVlbmNlPElTdHJpbmc+CQkJbVNlcnZpY2VEZXBlbmRlbmNpZXM7CiAgICAgICAgVFNG
V1Byb3BlcnR5U2V0ICYJCQl0aGVQcm9wZXJ0eVNldDsKICAgIH07CgogICAgIAogICAgdHlwZWRl
ZiBUU0ZXU2VydmljZUltcGxlbWVudGF0aW9uICooKlRTRldfQ1JFQVRFX1NFUlZJQ0VfSU1QTF9Q
Uk9DKShjb25zdCBJU3RyaW5nICZhTmFtZSwgVFNGV1Byb3BlcnR5U2V0ICZhUHJvcGVydHlTZXQp
OwogICAgdHlwZWRlZiB2b2lkICgqVFNGV19JTklUX1NFUlZJQ0VfTU9EVUxFX1BST0MpKFRTRldE
YXRhSXRlbSAmYVNlY3Rpb24pOwogICAgdHlwZWRlZiB2b2lkICgqVFNGV19FTkRfU0VSVklDRV9N
T0RVTEVfUFJPQykodm9pZCk7CgogICAgIAogICAgCiAgICAKICAgIAoKCgogCiAKIAogCiAKIyA0
MCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZUU2VydmljZS5ocHAiIDIK
CgogCgojIDEgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS90c2Z3c2VxdWVuY2UuaHBw
IiAxCgoKCmNsYXNzIFRTRldTZXF1ZW5jZQp7CnB1YmxpYzoKCVRTRldTZXF1ZW5jZSgpOwogICBU
U0ZXU2VxdWVuY2UobG9uZyBhU3RhcnRWYWx1ZSwgbG9uZyBhTWF4aW1hbFZhbHVlLCAKICAgCQkJ
CQkJdW5zaWduZWQgc2hvcnQgYVN0ZXBTaXplKTsKICAgflRTRldTZXF1ZW5jZSgpOwoKICAgYm9v
bCAgICAgbmV4dElEKGxvbmcgJmFOdW1iZXIpOwogICB2b2lkICAgICByZXNldCgpOwoKcHJpdmF0
ZToKCiAgIGJvb2wgbG9jayhsb25nIHRpbWVvdXQgPSAtMSAgKTsKICAgYm9vbCB1bmxvY2soKTsK
CiAgIElQcml2YXRlUmVzb3VyY2UgICAgICAgIG1Qcml2YXRlUmVzb3VyY2U7CgogICBsb25nICAg
ICAgICAgICAgICAgICAgICBtU3RhcnRWYWx1ZTsKICAgbG9uZyAgICAgICAgICAgICAgICAgICAg
bU1heGltYWxWYWx1ZTsKICAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgbVN0ZXBTaXplOwoKICAg
bG9uZyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1ZTsKfTsKCgojIDQ0ICIvaG9tZS94
aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvVFNGV01RRlRTZXJ2aWNlLmhwcCIgMgoKIyAxICIvaG9t
ZS94aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvVFNGV01RRlRUaHJlYWQuaHBwIiAxCgoKCmNsYXNz
IFRyaWdnZXJIZWFkZXI7CgpjbGFzcyBUU0ZXTVFGVFRocmVhZCA6IHB1YmxpYyBUU0ZXVGhyZWFk
CnsKCnB1YmxpYzoKCiAgICBlbnVtIFJlcXVlc3RUeXBlIAoJeyAKCQlTZW5kU3luY2hyb24gPSAw
LCAKCQlTZW5kQXN5bmNocm9uLCAKCQlSZWNlaXZlU3luY2hyb24sIAoJCVJlY2VpdmVBc3luY2hy
b24sCgkJUXVlcnkgCgl9OwoKCVRTRldNUUZUVGhyZWFkKGNvbnN0IElTdHJpbmcgJmFLZXkpOwoJ
dmlydHVhbCB+VFNGV01RRlRUaHJlYWQoKTsKCQoJdm9pZCAJCQlzZXRQcm9wZXJ0aWVzKFRTRldE
YXRhSXRlbSAqYVByb3BlcnR5U2V0KTsKCQoJdmlydHVhbCB2b2lkIAlzZXJ2aWNlCShUU0ZXU2Vy
dmljZUNvbnRleHQgJmFTZXJ2aWNlQ29udGV4dCk7Cgl2aXJ0dWFsIHZvaWQgCXJvbGxiYWNrKFRT
RldTZXJ2aWNlQ29udGV4dCAmYVNlcnZpY2VDb250ZXh0KTsKCXZpcnR1YWwgdm9pZCAJY29tbWl0
CShUU0ZXU2VydmljZUNvbnRleHQgJmFTZXJ2aWNlQ29udGV4dCk7CgkKCXN0YXRpYyBUU0ZXVGhy
ZWFkICogbmV3VGhyZWFkKGNvbnN0IElTdHJpbmcgJmFLZXkpOwoKcHJpdmF0ZToKCglib29sIAlj
aGVja0Nvbm5lY3Rpb24oY29uc3QgSVN0cmluZyAmYVJaQkspOwoJYm9vbCAJY2hlY2tRdWV1ZXMo
Y29uc3QgSVN0cmluZyAmYVJaQkspOwoJCglib29sIAlyZWNlaXZlRmlsZUZyb21NUVNlcmllcyhj
b25zdCBJU3RyaW5nICZhTWVzc2FnZUlELCAKCQkJCWNvbnN0IElTdHJpbmcgJmFMb2NhbEZpbGVu
YW1lLCBUU0ZXRGF0YUNvbnRhaW5lciAmYU91dHB1dENvbnRhaW5lcik7Cglib29sCXNlbmRGaWxl
VG9VUkwoY29uc3QgSVN0cmluZyAmYUxvY2FsRmlsZW5hbWUsIFRTRldEYXRhQ29udGFpbmVyICZh
SW5wdXRDb250YWluZXIsIFRTRldEYXRhQ29udGFpbmVyICZhT3V0cHV0Q29udGFpbmVyKTsKCQoJ
dm9pZAlkb01RU2VyaWVzQ29ubmVjdChjb25zdCBJU3RyaW5nICZhUlpCSyk7Cglib29sIAlnZXRN
UVNlcmllc0luZm9Gb3JSWkJLKGNvbnN0IElTdHJpbmcgJmFSWkJLKTsKCWludCAJZ2VuZXJhdGVN
ZXNzYWdlSUQoCWNvbnN0IElTdHJpbmcgJmFSWkJLLAogICAgICAgICAgICAJCQkJCWNvbnN0IElT
dHJpbmcgJmFUb3BpYywgCgkJCQkJCQkJTVFNZXNzYWdlSUQgJmFNZXNzYWdlSUQpOwoJTVFNZXNz
YWdlIGNyZWF0ZVRyaWdnZXJNZXNzYWdlKFRTRldEYXRhQ29udGFpbmVyICphSW5wdXRDb250YWlu
ZXIsIE1RTWVzc2FnZUlEICZhTWVzc2FnZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJpZ2dlckhlYWRlciAqYVRyaWdnZXJIZWFk
ZXIpOwoJCQkJCQkJCQoJCQkJCQkJCQoJaW50IAlmdHBHZXQoVFNGV0RhdGFDb250YWluZXIgKmFJ
bnB1dENvbnRhaW5lciwgSVN0cmluZyAmYURlc3RGaWxlbmFtZSk7CgkJCQkJCQkJCgl2b2lkIAlz
ZW5kX3N5bmNocm9uCQkoVFNGV1NlcnZpY2VDb250ZXh0ICZhU2VydmljZUNvbnRleHQpOwoJdm9p
ZCAJc2VuZF9hc3luY2hyb24JCShUU0ZXU2VydmljZUNvbnRleHQgJmFTZXJ2aWNlQ29udGV4dCk7
Cgl2b2lkIAlyZWNlaXZlX3N5bmNocm9uCShUU0ZXU2VydmljZUNvbnRleHQgJmFTZXJ2aWNlQ29u
dGV4dCk7Cgl2b2lkIAlyZWNlaXZlX2FzeW5jaHJvbgkoVFNGV1NlcnZpY2VDb250ZXh0ICZhU2Vy
dmljZUNvbnRleHQpOwoJdm9pZCAJcXVlcnkJCQkJKFRTRldTZXJ2aWNlQ29udGV4dCAmYVNlcnZp
Y2VDb250ZXh0KTsKCQoJSVN0cmluZyBnZXRFcnJvck1lc3NhZ2UoaW50IGFSZXR1cm5Db2RlKTsK
CglJU3RyaW5nIAkJbVF1ZXVlTWFuYWdlck5hbWU7CglJU3RyaW5nIAkJbVRyaWdnZXJRdWV1ZU5h
bWU7CglJU3RyaW5nIAkJbURhdGFRdWV1ZU5hbWVTZW5kLCBtRGF0YVF1ZXVlTmFtZVJlY3Y7CgkK
CU1RQ29ubmVjdGlvbiAqIAltQ29ubmVjdGlvbjsKCU1RUXVldWUgKgkJbURhdGFRdWV1ZVNlbmQ7
CglNUVF1ZXVlICoJCW1EYXRhUXVldWVSZWN2OwoJTVFRdWV1ZSAqCQltVHJpZ2dlclF1ZXVlOwoJ
CglUU0ZXU2VxdWVuY2UJbVNlcXVlbmNlOwoJCglUU0ZXRGF0YUl0ZW0gKgltTVFGVFByb3BlcnRp
ZXM7Cn07CgoKIyA0NSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZUU2Vy
dmljZS5ocHAiIDIKCiMgMSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZU
VGhyZWFkUG9vbC5ocHAiIDEKCgoKY2xhc3MgVFNGV01RRlRUaHJlYWRQb29sIDogcHVibGljIFRT
RldUaHJlYWRQb29sCnsKCnB1YmxpYzoKCVRTRldNUUZUVGhyZWFkUG9vbCgJVFNGV0RhdGFJdGVt
ICZhTVFGVFByb3BlcnR5U2V0LCAKCQkJCQkJdW5zaWduZWQgaW50IGFNYXhUaHJlYWRDb3VudCwK
CQkJCQkJbG9uZyBhTWF4SWRsZVRpbWUsCgkJCQkJCUNSRUFURV9USFJFQURfRlVOQ1RJT04gYUZ1
bmN0aW9uIAoJCQkJCQkJCT0gVFNGV01RRlRUaHJlYWQ6Om5ld1RocmVhZCk7CgkJCQkJCQkJCgl2
aXJ0dWFsIH5UU0ZXTVFGVFRocmVhZFBvb2woKTsKCQoJVFNGV01RRlRUaHJlYWQgKglhZGQoY29u
c3QgSVN0cmluZyAmYUtleSk7CgkKCXZpcnR1YWwgYm9vbCAJCWludm9rZSgJY29uc3QgSVN0cmlu
ZyAmYVRocmVhZEtleSwgCgkJCQkJCQkJVFNGV1NlcnZpY2VDb250ZXh0ICZhU2VydmljZUNvbnRl
eHQpOwoJCQkJCQkJCQoJVFNGV0RhdGFJdGVtCSZtTVFGVFByb3BlcnRpZXM7CQkJCQkJCQkKfTsK
CgoKIyA0NiAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZUU2VydmljZS5o
cHAiIDIKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmNsYXNzIFRyaWdnZXJIZWFkZXI7CgoK
Y2xhc3MgVFNGV01RRlRTZXJ2aWNlIDogcHVibGljIFRTRldTZXJ2aWNlSW1wbGVtZW50YXRpb24g
ewoKcHVibGljOgoKCWVudW0gUmVxdWVzdFR5cGUgCgl7IAoJCVNlbmRTeW5jaHJvbiAJCT0gMCwg
CgkJU2VuZEFzeW5jaHJvbiAJCT0gMSwgCgkJUmVjZWl2ZVN5bmNocm9uIAk9IDIsIAoJCVJlY2Vp
dmVBc3luY2hyb24JPSAzLAoJCVF1ZXJ5CQkJCT0gNAoJfTsKCQoJZW51bSBNZXNzYWdlVHlwZSB7
IFVua25vd24sIFRyaWdnZXJTZW5kLCBUcmlnZ2VyUmVjdiwgRGF0YSB9OwoKICAgIHN0YXRpYyBU
U0ZXRGF0YUl0ZW0gdGhlTVFGVFByb3BlcnRpZXM7CgogICAgIAoKCgoKICAgIFRTRldNUUZUU2Vy
dmljZShUU0ZXUHJvcGVydHlTZXQgJmFQcm9wZXJ0eVNldCk7CgogICAgIAoKCgoKICAgIHZpcnR1
YWwgflRTRldNUUZUU2VydmljZSgpOwoKICAgICAKCgoKCiAgICB1bnNpZ25lZCBsb25nIG5lZWRl
ZFN0YWNrU2l6ZSh2b2lkKTsKCiAgICAgCgoKICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlKFRTRldT
ZXNzaW9uQ29udGV4dCAqYVNlc3Npb25Db250ZXh0LAogICAgICAgICAgICAgICAgIFRTRldEYXRh
Q29udGFpbmVyICAqYUlucHV0Q29udGFpbmVyLAogICAgICAgICAgICAgICAgIFRTRldEYXRhQ29u
dGFpbmVyICAqYU91dHB1dENvbnRhaW5lcik7CgogICAgdmlydHVhbCB2b2lkIGNvbW1pdChjb25z
dCBUU0ZXU2Vzc2lvbkNvbnRleHQgKmFTZXNzaW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTRldEYXRhQ29udGFpbmVyICAqYUlucHV0Q29udGFpbmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNGV0RhdGFDb250YWluZXIgICphT3V0cHV0
Q29udGFpbmVyKTsKCiAgICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2soY29uc3QgVFNGV1Nlc3Npb25D
b250ZXh0ICphU2Vzc2lvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU0ZXRGF0YUNvbnRhaW5lciAgKmFJbnB1dENvbnRhaW5lciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTRldEYXRhQ29udGFpbmVyICAqYU91dHB1dENvbnRhaW5lcik7Cgog
ICAgCiAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVNlcnZpY2VUaHJlYWQoKTsKCiAgICAgCiAg
ICB2aXJ0dWFsIHZvaWQgY2xlYW51cFNlcnZpY2VUaHJlYWQoKTsKCiAgIHN0YXRpYyBib29sICBj
aGVja1Byb3BlcnR5RW50cmllcyhUU0ZXRGF0YUl0ZW0gJmFQcm9wZXJ0eVNldCk7CgogICBzdGF0
aWMgaW50ICAgc3RhcnR1cCgpOwogICBzdGF0aWMgaW50ICAgc2h1dGRvd24oKTsKICAgCiAgIHN0
YXRpYyBjb25zdCBUU0ZXU2VydmljZUNvbm5lY3QgJiBnZXRETVNIb3N0Q29ubmVjdCgpOwogICAK
ICAgSVN0cmluZyBnZXRFcnJvck1lc3NhZ2UoaW50IGFSZXR1cm5Db2RlKTsKICAgCiAgIHN0YXRp
YyB2b2lkIGFkZFRyaWdnZXJIZWFkZXIoVFNGV0RhdGFJdGVtICZhSXRlbSAsIAoJCU1RTWVzc2Fn
ZSAmYU1lc3NhZ2UsIE1lc3NhZ2VUeXBlIGFNZXNzYWdlVHlwZSk7CgoKcHJvdGVjdGVkOgoKcHJp
dmF0ZToKCglUU0ZXU2VydmljZUNvbnRleHQJbVNlcnZpY2VDb250ZXh0OwoJCglpbnQJCQltTVFU
aHJlYWRUaW1lb3V0OwoKICAgCWJvb2wgICAgICAgIGxvY2sobG9uZyB0aW1lb3V0ID0gLTEgICk7
CiAgIAlib29sICAgICAgICB1bmxvY2soKTsKCiAgIAlpbnQgCQljaGVja0lucHV0UGFyYW1ldGVy
cyhUU0ZXRGF0YUNvbnRhaW5lciAmYUlucHV0Q29udGFpbmVyLCAKCQkJCQkJCQlSZXF1ZXN0VHlw
ZSBhUmVxdWVzdFR5cGUpOwoJCQkJCQkJCQoJc3RhdGljIGJvb2wgY2hlY2tNUUZUU2VydmljZVBy
b3BlcnR5RW50cmllcyhUU0ZXRGF0YUl0ZW0gJmFEYXRhSXRlbSk7CglzdGF0aWMgYm9vbCBjaGVj
a0ZUUFByb3BlcnR5RW50cmllcyhUU0ZXRGF0YUl0ZW0gJmFEYXRhSXRlbSk7CglzdGF0aWMgYm9v
bCBjaGVja01RU2VyaWVzUHJvcGVydHlFbnRyaWVzKFRTRldEYXRhSXRlbSAmYURhdGFJdGVtKTsK
CXN0YXRpYyBib29sIGNoZWNrQ29tcHJlc3Npb25Qcm9wZXJ0eUVudHJpZXMoVFNGV0RhdGFJdGVt
ICZhRGF0YUl0ZW0pOwoJc3RhdGljIGJvb2wgY2hlY2tDb21wcmVzc2lvbkRlZmluaXRpb24oVFNG
V0RhdGFJdGVtICZhRGF0YUl0ZW0pOwogIAogIAlzdGF0aWMgVFNGV1NlcnZpY2VDb25uZWN0CXNE
TVNDb25uZWN0OwogIAlzdGF0aWMgSVByaXZhdGVSZXNvdXJjZSAgICAgICAJc1ByaXZhdGVSZXNv
dXJjZTsKICAgCiAgIAlzdGF0aWMgVFNGV01RRlRUaHJlYWRQb29sICoJCXNNUUZUVGhyZWFkUG9v
bDsKCglzdGF0aWMgVFNGV0Vycm9yU2V0IHNFcnJvclNldFRTRldNUUZUU2VydmljZSAgOwp9OwoK
CiMgMTkgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIgMgoKCiMg
MSAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL1RTRldNUUZUUXVlcnlQYXJzZXIuaHBw
IiAxCgoKCmNsYXNzIFRTRldNUUZURmlsdGVySXRlbQp7CglwdWJsaWM6CgkKCWVudW0gT3BlcmF0
b3IgeyBFcXVhbCwgTG93ZXJFcXVhbCwgTG93ZXIsIEdyZWF0ZXJFcXVhbCwgR3JlYXRlciB9OwoJ
CglUU0ZXTVFGVEZpbHRlckl0ZW0oKSB7fQoJCgl+VFNGV01RRlRGaWx0ZXJJdGVtKCkge30KCQoJ
SVN0cmluZyAmIAkJCWtleSgpIAkJCXsgcmV0dXJuIG1LZXk7IH0KCWNvbnN0IElTdHJpbmcgJiAJ
a2V5KCkgY29uc3QJCXsgcmV0dXJuIG1LZXk7IH0KCUlTdHJpbmcgJiAJCQl2YWx1ZSgpIAkJeyBy
ZXR1cm4gbVZhbHVlOyB9Cgljb25zdCBJU3RyaW5nICYgCXZhbHVlKCkgY29uc3QgCXsgcmV0dXJu
IG1WYWx1ZTsgfQoJT3BlcmF0b3IgJgkJCW9wKCkJCQl7IHJldHVybiBtT3BlcmF0b3I7IH0KCU9w
ZXJhdG9yCQkJb3AoKSBjb25zdCAJCXsgcmV0dXJuIG1PcGVyYXRvcjsgfQoJCnByaXZhdGU6CglJ
U3RyaW5nCQltS2V5OwoJSVN0cmluZwkJbVZhbHVlOwoJT3BlcmF0b3IJbU9wZXJhdG9yOwp9OwoK
Y2xhc3MgVFNGV01RRlRRdWVyeVBhcnNlcgp7CnB1YmxpYzoKCglUU0ZXTVFGVFF1ZXJ5UGFyc2Vy
KGNvbnN0IElTdHJpbmcgYUZpbHRlcik7Cgl+VFNGV01RRlRRdWVyeVBhcnNlcigpOwoJCglib29s
IGlzVmFsaWQoKTsKCQoJYm9vbCBoYXNOZXh0KCk7Cgl2b2lkIG5leHQoVFNGV01RRlRGaWx0ZXJJ
dGVtICZhSXRlbSk7CgkKcHJpdmF0ZToJCglib29sCW1Jc1ZhbGlkOwoJSVN0cmluZyBtRmlsdGVy
Owp9OwoKCiMgMjEgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIg
MgoKCgpNUUJhc2U6Ok1RQmFzZSgpCnsKICAgIDsKICAgbUxvY2tDb3VudCA9IDA7CiAgICA7Cn0K
Ck1RQmFzZTo6fk1RQmFzZSgpCnsKICAgIDsKCiAgIGlmIChtTG9ja0NvdW50KQogICB7CiBUU0ZX
TG9nRmFjaWxpdHk6OmdldEluc3RhbmNlKCktPndyaXRlTG9nKCggIlVuYXVzZ2V3b2dlbmUgTG9j
ay9VbmxvY2stQmlsYW56IGluIE1RQmFzZS4iICksICIvaG9tZS94aHU2MDMxL3RzZncvbXFmdHNl
cnZpY2UvbXFxdWV1ZS5jcHAiLCAzNywgKCAgVFNGV0xvZ0ZhY2lsaXR5OjpwYW5pYyApKSA7CiAg
IH0KCiAgICA7Cn0KCnZvaWQgTVFCYXNlOjpzZXRFcnJvciggY29uc3QgSVN0cmluZyAmZnVuY3Rp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb21wbGV0aW9uY29kZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlYXNvbmNvZGUpCnsKCWlmIChj
b21wbGV0aW9uY29kZSAhPSAwTCApCgl7CiAgICAgCW1SZXNwb25zZUNvZGUuQ29tcENvZGUgPSBj
b21wbGV0aW9uY29kZTsKICAgIAltUmVzcG9uc2VDb2RlLlJlYXNvbiA9IHJlYXNvbmNvZGU7Cgog
ICAgCW1FcnJvck1lc3NhZ2UgPSAiTVFTZXJpZXMtQVBJLUNhbGwgWyIgKyBmdW5jdGlvbiArICJd
IG9uIHF1ZXVlIFsiICsgbU5hbWUgKyAiXSBmYWlsZWQgd2l0aCBjb21wbGV0aW9uLWNvZGUgWyIg
ICAgICAgICAgICAgICArIElTdHJpbmcoY29tcGxldGlvbmNvZGUpICsgIl0gYW5kIHJlYXNvbi1j
b2RlIFsiICsgSVN0cmluZyhyZWFzb25jb2RlKSArICJdLiI7CgoKIAkJVFNGV0xvZ0ZhY2lsaXR5
OjpnZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoIG1FcnJvck1lc3NhZ2UgKSwgIi9ob21lL3hodTYw
MzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIsIDU2LCAoICAoY29tcGxldGlvbmNvZGUg
PT0gMkwgKSA/IAoJCQlUU0ZXTG9nRmFjaWxpdHk6OmVycm9yIDogVFNGV0xvZ0ZhY2lsaXR5Ojpp
bmZvcm1hdGlvbiApKSA7CiAgICAJIDsKCiAgICAJaGFuZGxlRXJyb3IoZnVuY3Rpb24sIGNvbXBs
ZXRpb25jb2RlLCByZWFzb25jb2RlKTsKCX0KfQoKIAp2b2lkIE1RQmFzZTo6Z2V0TGFzdEVycm9y
KGludCAmYUNvbXBsZXRpb25Db2RlLCBpbnQgJmFSZWFzb25Db2RlLCBJU3RyaW5nICZhRXJyb3JN
ZXNzYWdlKQp7CiAgICA7CgogICBhQ29tcGxldGlvbkNvZGUgPSBtUmVzcG9uc2VDb2RlLkNvbXBD
b2RlOwogICBhUmVhc29uQ29kZSA9IG1SZXNwb25zZUNvZGUuUmVhc29uOwogICBhRXJyb3JNZXNz
YWdlID0gbUVycm9yTWVzc2FnZTsKCiAgICA7Cn0KCmNvbnN0IElTdHJpbmcgJiBNUUJhc2U6Omdl
dEVycm9yTWVzc2FnZSgpCnsKICAgIDsKICAgIDsKICAgcmV0dXJuIG1FcnJvck1lc3NhZ2U7Cn0K
CmNvbnN0IElTdHJpbmcgJiBNUUJhc2U6OmdldE5hbWUoKSBjb25zdAp7CiAgIDsKICAgIDsKICAg
cmV0dXJuIG1OYW1lOwp9Cgpib29sIE1RQmFzZTo6dHJ5bG9jaygpCnsKICAgIDsKICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKCiAgIHRyeQogICB7CiAgICAgIG1Qcml2YXRlUmVzb3VyY2UubG9jaygw
KTsKICAgICAgbVByaXZhdGVSZXNvdXJjZS51bmxvY2soKTsKICAgICAgcmVzdWx0ID0gdHJ1ZTsK
ICAgfQogICBjYXRjaChJT3V0T2ZTeXN0ZW1SZXNvdXJjZSAmZSkgICAgCiAgIHt9CiAgIGNhdGNo
KElBY2Nlc3NFcnJvciAmZSkgICAgICAgICAgIAogICB7CiBUU0ZXTG9nRmFjaWxpdHk6OmdldElu
c3RhbmNlKCktPndyaXRlTG9nKCggIkF1c25haG1lICIgKyBJU3RyaW5nKGUubmFtZSgpKSArICIg
YXVmZ2V0cmV0ZW46ICIgKyBJU3RyaW5nKGUudGV4dCgpKSApLCAiL2hvbWUveGh1NjAzMS90c2Z3
L21xZnRzZXJ2aWNlL21xcXVldWUuY3BwIiwgMTA0LCAoICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9y
ICkpIDsKICAgfQogICAgOwogICByZXR1cm4gcmVzdWx0Owp9Cgpib29sIE1RQmFzZTo6bG9jayhs
b25nIHRpbWVvdXQgICkKewogICAgOwogICBib29sIHJlc3VsdCA9IGZhbHNlOwoKICAgdHJ5CiAg
IHsKICAgICAgbVByaXZhdGVSZXNvdXJjZS5sb2NrKHRpbWVvdXQpOwogICAgICByZXN1bHQgPSB0
cnVlOwogICAgICBtTG9ja0NvdW50Kys7CiAgIH0KICAgY2F0Y2goSU91dE9mU3lzdGVtUmVzb3Vy
Y2UgJmUpICAgIAogICB7fQogICBjYXRjaChJQWNjZXNzRXJyb3IgJmUpICAgICAgICAgICAKICAg
ewogVFNGV0xvZ0ZhY2lsaXR5OjpnZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoICJBdXNuYWhtZSAi
ICsgSVN0cmluZyhlLm5hbWUoKSkgKyAiIGF1ZmdldHJldGVuOiAiICsgSVN0cmluZyhlLnRleHQo
KSkgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIsIDEyNSwg
KCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJvciApKSA7CiAgIH0KCiAgICA7CgogICAgOwogICByZXR1
cm4gcmVzdWx0Owp9Cgpib29sIE1RQmFzZTo6dW5sb2NrKCkKewogICAgOwogICBib29sIHJlc3Vs
dCA9IGZhbHNlOwoKICAgdHJ5CiAgIHsKICAgICAgbVByaXZhdGVSZXNvdXJjZS51bmxvY2soKTsK
ICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgbUxvY2tDb3VudC0tOwogICB9CiAgIGNhdGNoKElP
dXRPZlN5c3RlbVJlc291cmNlICZlKSAgICAKICAge30KICAgY2F0Y2goSUFjY2Vzc0Vycm9yICZl
KSAgICAgICAgICAgCiAgIHsKIFRTRldMb2dGYWNpbGl0eTo6Z2V0SW5zdGFuY2UoKS0+d3JpdGVM
b2coKCAiQXVzbmFobWUgIiArIElTdHJpbmcoZS5uYW1lKCkpICsgIiBhdWZnZXRyZXRlbjogIiAr
IElTdHJpbmcoZS50ZXh0KCkpICksICIvaG9tZS94aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvbXFx
dWV1ZS5jcHAiLCAxNDksICggIFRTRldMb2dGYWNpbGl0eTo6ZXJyb3IgKSkgOwogICB9CiAgICA7
CiAgICA7CiAgIHJldHVybiByZXN1bHQ7Cn0KCgoKTVFDb25uZWN0aW9uOjpNUUNvbm5lY3Rpb24o
Y29uc3QgSVN0cmluZyAmYVF1ZXVlTWFuYWdlcikgOgogICBtQ29ubmVjdGlvbkhhbmRsZSgwKQp7
CiAgICA7CiAgIG1OYW1lID0gYVF1ZXVlTWFuYWdlcjsKICAgIDsKfQoKTVFDb25uZWN0aW9uOjp+
TVFDb25uZWN0aW9uKCkKewogICAgOwogICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgZGlzY29u
bmVjdCgpOwoKICAgSUN1cnNvciAqYUN1cnNvciA9IG1RdWV1ZXMubmV3Q3Vyc29yKCk7CgogICBp
ZiAoIWFDdXJzb3IpCiBUU0ZXTG9nRmFjaWxpdHk6OmdldEluc3RhbmNlKCktPndyaXRlTG9nKCgg
IktlaW5lbiBDdXJzb3IgZXJoYWx0ZW4uIiApLCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2
aWNlL21xcXVldWUuY3BwIiwgMTc1LCAoICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9yICkpIDsKICAg
ZWxzZQogICB7CiAgICAgICAKICAgICAgZm9yIChhQ3Vyc29yLT5zZXRUb0ZpcnN0KCk7IGFDdXJz
b3ItPmlzVmFsaWQoKTsgYUN1cnNvci0+c2V0VG9OZXh0KCkpCiAgICAgIHsKICAgICAgICAgZGVs
ZXRlIG1RdWV1ZXMuZWxlbWVudEF0KCphQ3Vyc29yKTsKICAgICAgfQogICAgICBkZWxldGUgYUN1
cnNvcjsKICAgfQoKICAgIDsKfQoKTVFIQ09OTiBNUUNvbm5lY3Rpb246OmdldEhhbmRsZSgpCnsK
ICAgIDsKICAgIDsKICAgcmV0dXJuIG1Db25uZWN0aW9uSGFuZGxlOwp9CgpJU3RyaW5nIE1RQ29u
bmVjdGlvbjo6Z2V0TWFuYWdlck5hbWUoKQp7CiAgICA7CiAgICA7CiAgIHJldHVybiBtTmFtZTsK
fQoKIAppbnQgTVFDb25uZWN0aW9uOjpjb25uZWN0KHVuc2lnbmVkIGludCByZXRyeSAgKQp7CiAg
ICA7CiAgIGxvbmcgcmVzdWx0ID0gMkwgOwoKICAgaWYgKG1Db25uZWN0aW9uSGFuZGxlICE9IDAp
CiAgICAgIGRpc2Nvbm5lY3QoKTsKCiAgIGZvciAoaW50IGk9MDsgaSA8IHJldHJ5ICYmIHJlc3Vs
dCAhPSAwTCA7IGkrKykKICAgewogICAgICAgCiAgICAgICA7CgoJY2hhciBuYW1lWzI1Nl07IG1l
bXNldChuYW1lLCAwLCBzaXplb2YobmFtZSkpOwoJCiAgICAgIDo6TVFDT05OKG5hbWUsICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAmbUNvbm5lY3Rpb25IYW5kbGUsICAgICAg
ICAgCiAgICAgICAgICAgICAgICZtUmVzcG9uc2VDb2RlLkNvbXBDb2RlLCAgICAKICAgICAgICAg
ICAgICAgJm1SZXNwb25zZUNvZGUuUmVhc29uKTsgICAgIAoJCQkgICAKCWNvdXQgPDwgIk1RQ09O
TjogIiA8PCBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlIDw8ICIgLSAiIDw8CiAgICAgICAgICAgICAg
IG1SZXNwb25zZUNvZGUuUmVhc29uIDw8IGVuZGw7CgoJCWNvdXQuZmx1c2goKTsKICAgICAgc2V0
RXJyb3IoIk1RQ09OTiIsCiAgICAgICAgICAgICAgIG1SZXNwb25zZUNvZGUuQ29tcENvZGUsCiAg
ICAgICAgICAgICAgIG1SZXNwb25zZUNvZGUuUmVhc29uKTsKCiAgICAgIHJlc3VsdCA9IG1SZXNw
b25zZUNvZGUuQ29tcENvZGU7CiAgIH0KCiAgIGlmIChyZXN1bHQgPT0gMEwgKQogICB7CiAgICAg
IElDdXJzb3IgKmFDdXJzb3IgPSBtUXVldWVzLm5ld0N1cnNvcigpOwoKICAgICAgaWYgKCFhQ3Vy
c29yKQogVFNGV0xvZ0ZhY2lsaXR5OjpnZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoICJLZWluZW4g
Q3Vyc29yIGVyaGFsdGVuLiIgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1
ZXVlLmNwcCIsIDI0MCwgKCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJvciApKSA7CiAgICAgIGVsc2UK
ICAgICAgeyAgIAogICAgICAgICByZXN1bHQgPSAwTCA7CiAgICAgICAgIGZvciAoYUN1cnNvci0+
c2V0VG9GaXJzdCgpOyBhQ3Vyc29yLT5pc1ZhbGlkKCkgJiYgcmVzdWx0ID09IDBMIDsKICAgICAg
ICAgICAgICAgICAgYUN1cnNvci0+c2V0VG9OZXh0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAg
bVF1ZXVlcy5lbGVtZW50QXQoKmFDdXJzb3IpLT5jbG9zZSgpOwogICAgICAgICAgICByZXN1bHQg
PSBtUXVldWVzLmVsZW1lbnRBdCgqYUN1cnNvciktPm9wZW4oKTsKICAgICAgICAgfQogICAgICAg
ICBkZWxldGUgYUN1cnNvcjsKICAgICAgfQoKICAgICAgaWYgKHJlc3VsdCA9PSAwTCApCiAgICAg
IHsKICAgICAgICAgSVN0cmluZyBhTWVzc2FnZSA9ICJNUVNlcmllcy1WZXJiaW5kdW5nIHp1IE1h
bmFnZXIgWyIgKyBtTmFtZSArICJdIiArICIgZnVlciBTZXJ2aWNldGhyZWFkICIgKwogICAgICAg
ICAgICAgICAgICAgICAgICAgICBJU3RyaW5nKElOb25HVUlUaHJlYWQ6OmN1cnJlbnQoKS5pZCgp
KSArICIgYXVmZ2ViYXV0LiI7CiBUU0ZXTG9nRmFjaWxpdHk6OmdldEluc3RhbmNlKCktPndyaXRl
TG9nKCggYU1lc3NhZ2UgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVl
LmNwcCIsIDI1NywgKCAgVFNGV0xvZ0ZhY2lsaXR5OjppbmZvcm1hdGlvbiApKSA7CiAgICAgICAg
ICA7CiAgICAgIH0KICAgfQogICBlbHNlCiAgICAgIG1Db25uZWN0aW9uSGFuZGxlID0gMDsgICAg
ICAKCgogICAgOwogICByZXR1cm4gcmVzdWx0Owp9CgogCmludCBNUUNvbm5lY3Rpb246OmRpc2Nv
bm5lY3QoKQp7CiAgICA7CiAgIGludCByZXN1bHQgPSAyTCA7CgogICBJQ3Vyc29yICphQ3Vyc29y
ID0gbVF1ZXVlcy5uZXdDdXJzb3IoKTsKCiAgIGlmICghYUN1cnNvcikKIFRTRldMb2dGYWNpbGl0
eTo6Z2V0SW5zdGFuY2UoKS0+d3JpdGVMb2coKCAiS2VpbmVuIEN1cnNvciBlcmhhbHRlbi4iICks
ICIvaG9tZS94aHU2MDMxL3RzZncvbXFmdHNlcnZpY2UvbXFxdWV1ZS5jcHAiLCAyNzgsICggIFRT
RldMb2dGYWNpbGl0eTo6ZXJyb3IgKSkgOwogICBlbHNlCiAgIHsKICAgICAgIAogICAgICBmb3Ig
KGFDdXJzb3ItPnNldFRvRmlyc3QoKTsgYUN1cnNvci0+aXNWYWxpZCgpOyBhQ3Vyc29yLT5zZXRU
b05leHQoKSkKICAgICAgewogICAgICAgICBtUXVldWVzLmVsZW1lbnRBdCgqYUN1cnNvciktPmNs
b3NlKCk7CiAgICAgIH0KICAgICAgZGVsZXRlIGFDdXJzb3I7CiAgIH0KCiAgIDo6TVFESVNDKCAg
ICZtQ29ubmVjdGlvbkhhbmRsZSwgICAgICAgICAKICAgICAgICAgICAgICAgJm1SZXNwb25zZUNv
ZGUuQ29tcENvZGUsICAgIAogICAgICAgICAgICAgICAmbVJlc3BvbnNlQ29kZS5SZWFzb24pOyAg
ICAgCgogICBtQ29ubmVjdGlvbkhhbmRsZSA9IDA7CgogICBzZXRFcnJvcigiTVFESVNDIiwKICAg
ICAgICAgICAgbVJlc3BvbnNlQ29kZS5Db21wQ29kZSwKICAgICAgICAgICAgbVJlc3BvbnNlQ29k
ZS5SZWFzb24pOwoKICAgcmVzdWx0ID0gbVJlc3BvbnNlQ29kZS5Db21wQ29kZTsKCiAgICA7CiAg
IHJldHVybiByZXN1bHQ7Cn0KCnZvaWQgTVFDb25uZWN0aW9uOjphZGRRdWV1ZShNUVF1ZXVlICph
UXVldWUpCnsKICAgIDsKICAgbG9jaygpOwoKICAgaWYgKCFhUXVldWUpCiBUU0ZXTG9nRmFjaWxp
dHk6OmdldEluc3RhbmNlKCktPndyaXRlTG9nKCggIlVuZ3VlbHRpZ2VyIFBhcmFtZXRlciBpbiBG
dW5rdGlvbnNhdWZydWYuIiApLCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21xcXVl
dWUuY3BwIiwgMzExLCAoICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9yICkpIDsKICAgZWxzZQogICB7
CiAgICAgIG1RdWV1ZXMuYWRkKGFRdWV1ZSk7CiAgIH0KCiAgIHVubG9jaygpOwogICAgOwp9Cgoj
IDM1NyAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21xcXVldWUuY3BwIgoKCmJvb2wg
TVFDb25uZWN0aW9uOjppc0Nvbm5lY3RlZCgpCnsKICAgIDsKICAgIDsKICAgcmV0dXJuIChjb21t
aXQoKSA9PSAwTCApOwp9Cgp2b2lkIE1RQ29ubmVjdGlvbjo6aGFuZGxlRXJyb3IoY29uc3QgSVN0
cmluZyAmYUZ1bmN0aW9uLCB1bnNpZ25lZCBpbnQgY29tcGxldGlvbmNvZGUsIHVuc2lnbmVkIGlu
dCByZWFzb25jb2RlKQp7CiAgICA7CgogICBpZiAoIShhRnVuY3Rpb24gPT0gIk1RQ09OTiIgfHwg
YUZ1bmN0aW9uID09ICJNUURJU0MiKSkKICAgewogICAgICBzd2l0Y2ggKHJlYXNvbmNvZGUpCiAg
ICAgIHsKICAgICAgICAgY2FzZSAyMDE4TCA6CiAgICAgICAgIGNhc2UgMjAwOUwgOgogICAgICAg
ICAgICBicmVhazsKICAgICAgfQogICB9CgogICAgOwp9CgpNUVF1ZXVlOjpNUVF1ZXVlKE1RQ29u
bmVjdGlvbiAqYUNvbm5lY3Rpb24sIGNvbnN0IElTdHJpbmcgJnF1ZXVlTmFtZSwgdW5zaWduZWQg
bG9uZyBtYXhNZXNzYWdlU2l6ZSwgTVFMT05HIG9wZW5fb3B0aW9ucykgOgogICBtQ29ubmVjdGlv
bihhQ29ubmVjdGlvbiksIG1PcGVuT3B0aW9ucyhvcGVuX29wdGlvbnMpLG1NYXhNZXNzYWdlU2l6
ZShtYXhNZXNzYWdlU2l6ZSkKewogICAgOwoKICAgaWYgKG1Db25uZWN0aW9uKQogICB7CiAgICAg
IG1Db25uZWN0aW9uLT5hZGRRdWV1ZSh0aGlzKTsKCiAgICAgIG1OYW1lID0gcXVldWVOYW1lOwog
ICAgICBNUU9EIG1vZCA9IHt7J08nLCdEJywnICcsJyAnIH0sIDFMICwgMUwgLCB7IiJ9LCB7IiJ9
LCB7IkFNUS4qIn0sIHsiIn0sIDBMLCAwTCwgMEwsIDBMLCAwTCwgMEwsIF9fbnVsbCAsIF9fbnVs
bCAsIHsnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdcMCcsJ1wwJywn
XDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdc
MCcsJ1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdc
MCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJyB9LCB7IiJ9LCB7IiJ9IH07IG1P
YmplY3REZXNjcmlwdG9yID0gbW9kOwogICAgICBzdHJjcHkobU9iamVjdERlc2NyaXB0b3IuT2Jq
ZWN0TmFtZSwgbU5hbWUpOwoKICAgICAgTVFSUiBtcnIgPSB7MEwgLCAwTCAgfTsgbVJlc3BvbnNl
Q29kZSA9IG1ycjsKICAgICAgbVF1ZXVlSGFuZGxlID0gMDsKICAgfQogICBtQnJvd3NlT3B0aW9u
cyA9IE5vbmU7CiAgICA7Cn0KCk1RUXVldWU6On5NUVF1ZXVlKCkKewogICAgOwoKICAgaWYgKGlz
T3BlbigpKQogICAgICBjbG9zZSgwKTsKCiAgICA7Cn0KCmJvb2wgTVFRdWV1ZTo6aXNPcGVuKCkK
ewogICAgOwogICBib29sIHJlc3VsdCA9IChtUXVldWVIYW5kbGUgIT0gMCk7CiAgICA7CiAgIHJl
dHVybiByZXN1bHQ7Cn0KCgogCmludCBNUVF1ZXVlOjpvcGVuKE1RTE9ORyBvcHRpb25zKQp7CiAg
ICA7CiAgIGludCByZXN1bHQgPSAwTCA7CgogICBpZiAoIWlzT3BlbigpKQogICB7CiAgICAgIDo6
TVFPUEVOKCAgIG1Db25uZWN0aW9uLT5nZXRIYW5kbGUoKSwgICAgCiAgICAgICAgICAgICAgICAg
ICZtT2JqZWN0RGVzY3JpcHRvciwgICAgICAgICAKICAgICAgICAgICAgICAgICAgb3B0aW9ucyA/
IG9wdGlvbnMgOiBtT3Blbk9wdGlvbnMsICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgJm1RdWV1ZUhhbmRsZSwgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAmbVJl
c3BvbnNlQ29kZS5Db21wQ29kZSwgICAgCiAgICAgICAgICAgICAgICAgICZtUmVzcG9uc2VDb2Rl
LlJlYXNvbik7ICAgICAKCiAKCgogICAgICBzZXRFcnJvcigiTVFPUEVOIiwKICAgICAgICAgICAg
ICAgbVJlc3BvbnNlQ29kZS5Db21wQ29kZSwKICAgICAgICAgICAgICAgbVJlc3BvbnNlQ29kZS5S
ZWFzb24pOwoKICAgICAgcmVzdWx0ID0gbVJlc3BvbnNlQ29kZS5Db21wQ29kZTsKCiAgICAgIGlm
IChyZXN1bHQgIT0gMEwgKSBtUXVldWVIYW5kbGUgPSAwOyAgCgogICB9CiAgICA7CiAgIHJldHVy
biByZXN1bHQ7Cn0KCiAKaW50IE1RUXVldWU6OmNsb3NlKE1RTE9ORyBvcHRpb25zKQp7CiAgICA7
CiAgIGludCByZXN1bHQgPSAwTCA7CgogICA6Ok1RQ0xPU0UoICBtQ29ubmVjdGlvbi0+Z2V0SGFu
ZGxlKCksICAgIAogICAgICAgICAgICAgICAmbVF1ZXVlSGFuZGxlLCAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgIG9wdGlvbnMsCiAgICAgICAgICAgICAgICZtUmVzcG9uc2VDb2RlLkNvbXBD
b2RlLCAgICAKICAgICAgICAgICAgICAgJm1SZXNwb25zZUNvZGUuUmVhc29uKTsgICAgIAoKICAg
bVF1ZXVlSGFuZGxlID0gMDsKCiAgIHNldEVycm9yKCJNUUNMT1NFIiwKICAgICAgICAgICAgbVJl
c3BvbnNlQ29kZS5Db21wQ29kZSwKICAgICAgICAgICAgbVJlc3BvbnNlQ29kZS5SZWFzb24pOwoK
ICAgcmVzdWx0ID0gbVJlc3BvbnNlQ29kZS5Db21wQ29kZTsKCiAgICA7CiAgIHJldHVybiByZXN1
bHQ7Cn0KCiAKaW50IE1RUXVldWU6OnF1ZXJ5SW50ZWdlckF0dHJpYnV0ZShNUUxPTkcgYXR0cmli
dXRlLCBNUUxPTkcgJnJlc3VsdCkKewogICAgOwogICBpbnQgcmMgPSAyTCA7CgogICA6Ok1RSU5R
KCBtQ29ubmVjdGlvbi0+Z2V0SGFuZGxlKCksCiAgICAgICAgICAgIG1RdWV1ZUhhbmRsZSwKICAg
ICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAmYXR0cmli
dXRlLAogICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICZyZXN1bHQsCiAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgKGNoYXIqKTAsICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAmbVJlc3BvbnNl
Q29kZS5Db21wQ29kZSwgICAgCiAgICAgICAgICAgICZtUmVzcG9uc2VDb2RlLlJlYXNvbik7ICAg
ICAKCiAgIHNldEVycm9yKCJNUUlOUSIsCiAgICAgICAgICAgICAgIG1SZXNwb25zZUNvZGUuQ29t
cENvZGUsCiAgICAgICAgICAgICAgIG1SZXNwb25zZUNvZGUuUmVhc29uKTsKCiAgIHJjID0gbVJl
c3BvbnNlQ29kZS5Db21wQ29kZTsKCiAgICA7CiAgIHJldHVybiByYzsKfQoKIAppbnQgTVFRdWV1
ZTo6cHV0KCBjb25zdCBNUU1EICBkZXNjcmlwdG9yLCAgICAgICAgCiAgICAgICAgICAgICAgICAg
IGNvbnN0IE1RUE1PIG9wdGlvbnMsICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgaW9zdHJl
YW0gKiAgaW9zdHIsICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICBjb25zdCBNUU1lc3Nh
Z2VJRCAmbWlkX3N0YXJ0LCAgCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgJm1zZ19j
b3VudCkgICAgICAKewogICAgOwogICBpbnQgcmVzdWx0ID0gMkwgOwoKICAgaWYgKCEoaW9zdHIg
JiYgaW9zdHItPmdvb2QoKSAmJiBtTWF4TWVzc2FnZVNpemUgJiYgbWlkX3N0YXJ0LmlzVmFsaWQo
KSkpCgkJIFRTRldMb2dGYWNpbGl0eTo6Z2V0SW5zdGFuY2UoKS0+d3JpdGVMb2coKCAiSW52YWxp
ZCBwYXJhbWV0ZXIgcGFzc2VkLiIgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9t
cXF1ZXVlLmNwcCIsIDUxNSwgKCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJvciApKSA7CgogICBlbHNl
CiAgIHsKICAgICAgTVFNZXNzYWdlSUQgYU1lc3NhZ2VJRChtaWRfc3RhcnQpOwogICAgICBhTWVz
c2FnZUlELnNldFNlcmlhbE51bWJlcigxKTsgICAgIAoKICAgICAgTVFNRCBtc2dfZGVzY3JpcHRv
cjsgbWVtY3B5KCZtc2dfZGVzY3JpcHRvciwgJmRlc2NyaXB0b3IsIHNpemVvZihNUU1EKSk7CiAg
ICAgIE1RUE1PIHB1dF9vcHRpb25zID0gb3B0aW9uczsKICAgICAgbXNnX2NvdW50PTA7CgogICAg
ICBpb3N0ci0+c2Vla2coMCwgaW9zOjplbmQpOwogICAgICBpZiAoIWlvc3RyLT5nb29kKCkpCiAg
ICAgIHsKICAgICAgICAgcmVzdWx0ID0gNTA0IDsKIAkJIFRTRldMb2dGYWNpbGl0eTo6Z2V0SW5z
dGFuY2UoKS0+d3JpdGVMb2coKCAiaW9zOjpzZWVrZyBmYWlsZWQuIiApLCAiL2hvbWUveGh1NjAz
MS90c2Z3L21xZnRzZXJ2aWNlL21xcXVldWUuY3BwIiwgNTMwLCAoICBUU0ZXTG9nRmFjaWxpdHk6
OmVycm9yICkpIDsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKCQkgICAgdW5zaWduZWQgbG9u
ZyBsZW5ndGggPSBpb3N0ci0+dGVsbGcoKTsKICAgICAgICAgCXVuc2lnbmVkIGxvbmcgdWxieXRl
c1RvV3JpdGUgPSBsZW5ndGg7CgogICAgICAgICBkbwogICAgICAgICB7CiAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbXNnX3NpemUgPSAodWxieXRlc1RvV3JpdGUgPiBtTWF4TWVzc2FnZVNpemUp
ID8KICAgICAgICAgICAgICAgICAgICAgICAgbU1heE1lc3NhZ2VTaXplIDogdWxieXRlc1RvV3Jp
dGU7CgogICAgICAgICAgICBNUUdNTyBtZ28gPSB7eydHJywnTScsJ08nLCcgJyB9LCAxTCAsIDB4
MDAwMDAwMDBMICwgMEwsIDBMLCAwTCwgeyIifSwgKDB4MDAwMDAwMDFMICsgMHgwMDAwMDAwMkwg
KSwgJyAnICwgJyAnICwgJyAnICwgJyAnLCB7J1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcs
J1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcgfSwgKC0x
TCkgIH07CiAgICAgICAgICAgIE1RTWVzc2FnZSBtc2cobXNnX2Rlc2NyaXB0b3IsIHB1dF9vcHRp
b25zLCBtZ28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc3RyLCBsZW5ndGggLSB1bGJ5
dGVzVG9Xcml0ZSwgbXNnX3NpemUpOwogICAgICAgICAgICBtc2cuc2V0TWVzc2FnZUlEKGFNZXNz
YWdlSUQpOwoKICAgICAgICAgICAgYU1lc3NhZ2VJRC5uZXh0KCk7ICAKCiAgICAgICAgICAgIHJl
c3VsdCA9IHB1dCAobXNnKTsKCiAgICAgICAgICAgIHVsYnl0ZXNUb1dyaXRlIC09IG1zZ19zaXpl
OwogICAgICAgICAgICBtc2dfY291bnQrKzsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAodWxi
eXRlc1RvV3JpdGUgPiAwICYmIHJlc3VsdCA9PSAwTCAgJiYgYU1lc3NhZ2VJRC5pc1ZhbGlkKCkp
OwogICAgICB9CiAgIH0KCiAgICA7CiAgIHJldHVybiByZXN1bHQ7Cn0KCgogCmludCBNUVF1ZXVl
OjpwdXQoTVFNZXNzYWdlICZtc2cpCnsKICAgIDsKICAgaW50IHJlc3VsdCA9IDJMIDsKCiAgIGNo
YXIgKmJ1ZmZlciA9IG1zZy5oYXNCdWZmZXIoKSA/IG1zZy5nZXRCdWZmZXIoKSA6IG5ldyBjaGFy
W21zZy5nZXRMZW5ndGgoKV07CgogICBpZiAoIWJ1ZmZlcikKIAkJVFNGV0xvZ0ZhY2lsaXR5Ojpn
ZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoICJPdXQgb2YgbWVtb3J5LiIgKSwgIi9ob21lL3hodTYw
MzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIsIDU3MiwgKCAgVFNGV0xvZ0ZhY2lsaXR5
OjplcnJvciApKSA7CgogICAgCiAgIGVsc2UgaWYgKCEgKG1zZy5oYXNCdWZmZXIoKSB8fCAoIW1z
Zy5oYXNCdWZmZXIoKSAmJgogICAgICAgICAgICAgICBtc2cuZ2V0U3RyZWFtKCktPnNlZWtnKG1z
Zy5nZXRQb3NpdGlvbigpKS5nb29kKCkpKSApCiAJCVRTRldMb2dGYWNpbGl0eTo6Z2V0SW5zdGFu
Y2UoKS0+d3JpdGVMb2coKCAic2Vla2cgYXVmIG1lc3NhZ2Ugc3RyZWFtIGZlaGxnZXNjaGxhZ2Vu
LiIgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIsIDU3Nywg
KCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJvciApKSA7CgogICAgCiAgIGVsc2UKICAgewogICAgICBp
ZiAoIW1zZy5oYXNCdWZmZXIoKSkKICAgICAgewogICAgICAgICBtc2cuZ2V0U3RyZWFtKCktPnJl
YWQoYnVmZmVyLCBtc2cuZ2V0TGVuZ3RoKCkpOwogICAgICB9CgogICAgICBpZiAoICEgKG1zZy5o
YXNCdWZmZXIoKSB8fAogICAgICAgICAgICAoIW1zZy5oYXNCdWZmZXIoKSAmJiAobXNnLmdldFN0
cmVhbSgpLT5nb29kKCkgfHwgbXNnLmdldFN0cmVhbSgpLT5lb2YoKSkpKSApCiAgICAgIHsKIAkJ
CVRTRldMb2dGYWNpbGl0eTo6Z2V0SW5zdGFuY2UoKS0+d3JpdGVMb2coKCAicmVhZCBhdWYgbWVz
c2FnZSBzdHJlYW0gZmVobGdlc2NobGFnZW4uIiApLCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRz
ZXJ2aWNlL21xcXVldWUuY3BwIiwgNTkwLCAoICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9yICkpIDsK
ICAgICAgICAgICAgcmVzdWx0ID0gNTAyIDsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAg
ICAgICAgTVFNRCBtc2dfZGVzY3JpcHRvcjsKICAgICAgICAgbWVtY3B5KCZtc2dfZGVzY3JpcHRv
ciwgJm1zZy5nZXREZXNjcmlwdG9yKCksIHNpemVvZihNUU1EKSk7CgoJCSBSQkdDb2JvbFRyYW5z
Y29kZXI6OmdldEluc3RhbmNlKCktPgoJCSAJY29udmVydFRvRUJDRElDKChjaGFyKikmbXNnX2Rl
c2NyaXB0b3IuTXNnSWRbMF0sIDI0TCApOwogICAgICAgICBSQkdDb2JvbFRyYW5zY29kZXI6Omdl
dEluc3RhbmNlKCktPgoJCSAJY29udmVydFRvRUJDRElDKChjaGFyKikmbXNnX2Rlc2NyaXB0b3Iu
Q29ycmVsSWRbMF0sIDI0TCApOwoKICAgICAgICAgTVFQTU8gcHV0X29wdGlvbnMgPSBtc2cuZ2V0
UFVUT3B0aW9ucygpOwoKICAgICAgICAgIDsKCgogICAgICAgICA6Ok1RUFVUKCBtQ29ubmVjdGlv
bi0+Z2V0SGFuZGxlKCksICAgIAogICAgICAgICAgICAgICBtUXVldWVIYW5kbGUsICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICZtc2dfZGVzY3JpcHRvciwgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgJnB1dF9vcHRpb25zLCAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBtc2cu
Z2V0TGVuZ3RoKCksCiAgICAgICAgICAgICAgIGJ1ZmZlciwKICAgICAgICAgICAgICAgJm1SZXNw
b25zZUNvZGUuQ29tcENvZGUsICAgIAogICAgICAgICAgICAgICAmbVJlc3BvbnNlQ29kZS5SZWFz
b24pOyAgICAgCgogICAgICAgICBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlID0gMEwgOwoKICAgICAg
ICAgc2V0RXJyb3IoIk1RUFVUIiwKICAgICAgICAgICAgICAgICAgbVJlc3BvbnNlQ29kZS5Db21w
Q29kZSwKICAgICAgICAgICAgICAgICAgbVJlc3BvbnNlQ29kZS5SZWFzb24pOwoKICAgICAgIAoK
CgogICAgICAgICByZXN1bHQgPSBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlOwogICAgICB9CiAgIH0K
ICAgaWYgKCFtc2cuaGFzQnVmZmVyKCkgJiYgYnVmZmVyKQogICAgICBkZWxldGUgYnVmZmVyOwoK
ICAgIDsKICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IE1RUXVldWU6OmdldCgJY29uc3QgSVN0cmlu
ZyAmYU1lc3NhZ2VJRCwgCgkJCQkJY29uc3QgSVN0cmluZyAmYUNvcnJlbGF0aW9uSUQsCgkJCQkJ
bG9uZyBhTWVzc2FnZUNvdW50LAoJCQkJCW9zdHJlYW0gJmFTdHJlYW0pCnsKCSAoTVFRdWV1ZTo6
Z2V0KTsKCWludCByZXN1bHQgPSAyTCA7CgkKCWlmICghYVN0cmVhbS5nb29kKCkpCgkJVFNGV0xv
Z0ZhY2lsaXR5OjpnZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoICJVbmd1ZWx0aWdlciBPdXRwdXQt
U3RyZWFtIGluIEZ1bmt0aW9uc3BhcmFtZXRlci4iICksICIvaG9tZS94aHU2MDMxL3RzZncvbXFm
dHNlcnZpY2UvbXFxdWV1ZS5jcHAiLCA2NDYsICggIFRTRldMb2dGYWNpbGl0eTo6ZXJyb3IgKSkg
OwoJZWxzZSBpZiAoISAoYU1lc3NhZ2VJRC5zaXplKCkgPT0gMjRMICAmJiAKCQkJCWFDb3JyZWxh
dGlvbklELnNpemUoKSA8PSAyNEwgKSkKCQlUU0ZXTG9nRmFjaWxpdHk6OmdldEluc3RhbmNlKCkt
PndyaXRlTG9nKCggIlVuZ3VlbHRpZ2UgTGFlbmdlbiBmdWVyIE1RU2VyaWVzLU1lc3NhZ2VJRCBv
ZGVyIE1RU2VyaWVzLUNvcnJlbGF0aW9uSUQuIiApLCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRz
ZXJ2aWNlL21xcXVldWUuY3BwIiwgNjQ5LCAoICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9yICkpIDsK
CWVsc2UJCQoJewoJCU1RTUQgYURlc2NyaXB0b3I7CgkJc3RyY3B5KChjaGFyICopYURlc2NyaXB0
b3IuTXNnSWQsIGFDb3JyZWxhdGlvbklEKTsKCQlSQkdDb2JvbFRyYW5zY29kZXI6OmdldEluc3Rh
bmNlKCktPgoJCQljb252ZXJ0VG9FQkNESUMoKGNoYXIqKSZhRGVzY3JpcHRvci5Db3JyZWxJZFsw
XSwgMjRMICk7CgoJCU1RTWVzc2FnZUlEIGFNUU1lc3NhZ2VJRChhTWVzc2FnZUlELCBNUU1lc3Nh
Z2VJRDo6UmVjZWl2ZSk7CQkKCQkKCQlyZXN1bHQgPSAwTCA7CgkJZm9yIChpbnQgbklkeCA9IDA7
IG5JZHggPCBhTWVzc2FnZUNvdW50ICYmIHJlc3VsdCA9PSAwTCA7IG5JZHgrKykKCQl7CgkJCXN0
cm5jcHkoKGNoYXIgKilhRGVzY3JpcHRvci5Nc2dJZCwgYU1RTWVzc2FnZUlELnRvU3RyaW5nKCks
IDI0TCApOwoJCSAgCVJCR0NvYm9sVHJhbnNjb2Rlcjo6Z2V0SW5zdGFuY2UoKS0+CgkJIAkgIGNv
bnZlcnRUb0VCQ0RJQygoY2hhciopYURlc2NyaXB0b3IuTXNnSWQsIDI0TCApOwkKCQkJCgkJCQoJ
CQlNUU1lc3NhZ2UgYU1lc3NhZ2U7IGFNZXNzYWdlLnNldERlc2NyaXB0b3IoYURlc2NyaXB0b3Ip
OwoJCQkKCQkJcmVzdWx0ID0gZ2V0KGFNZXNzYWdlKTsJCSAKCQkJCgkJCWlmIChyZXN1bHQgPT0g
MEwgKQoJCQl7CgkJCQlhU3RyZWFtLndyaXRlKGFNZXNzYWdlLmdldEJ1ZmZlcigpLCBhTWVzc2Fn
ZS5nZXRMZW5ndGgoKSk7CgkJCQkKCQkJCWlmICghYVN0cmVhbS5nb29kKCkpCgkJCQl7CgkJCQkJ
cmVzdWx0ID0gMkwgOwoJCQkJCVRTRldMb2dGYWNpbGl0eTo6Z2V0SW5zdGFuY2UoKS0+d3JpdGVM
b2coKCAiTVFTZXJpZXMtTWVzc2FnZSBlbXBmYW5nZW4sIGFiZXIgZGFzICIgKyAKCQkJCQkJCUlT
dHJpbmcoIlNjaHJlaWJlbiBpbiBlaW5lbiBPdXRwdXQtU3RyZWFtIHNjaGx1ZyBmZWhsLiAiKSAr
CgkJCQkJCQkiRW1wZmFuZyB3aXJkIGFiZ2Vicm9jaGVuLiIgKSwgIi9ob21lL3hodTYwMzEvdHNm
dy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIsIDY4MCwgKCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJv
ciApKSA7CgkJCQl9CgkJCX0KCQkJCgkJCWFNUU1lc3NhZ2VJRC5uZXh0KCk7ICAKCQl9Cgl9CgoJ
IChNUVF1ZXVlOjpnZXQpOwoJcmV0dXJuIHJlc3VsdDsKfQoKIAppbnQgTVFRdWV1ZTo6Z2V0KE1R
TWVzc2FnZSAmbXNnLCB1bnNpZ25lZCBsb25nICphTGVuZ3RoICApCnsKICAgIDsKICAgaW50IHJl
c3VsdCA9IDJMIDsKCglNUUxPTkcgYU1lc3NhZ2VTaXplOwoJTVFHTU8gYUdldE9wdGlvbjsKCW1l
bWNweSgmYUdldE9wdGlvbiwgJm1zZy5nZXRHRVRPcHRpb25zKCksIHNpemVvZihNUUdNTykpOwoJ
CglNUU1EIGFEZXNjcmlwdG9yOwkKCW1lbWNweSgmYURlc2NyaXB0b3IsICZtc2cuZ2V0RGVzY3Jp
cHRvcigpLCBzaXplb2YoTVFNRCkpOwoKICAgaWYgKGFMZW5ndGgpCiAgIHsKCSAgIGFHZXRPcHRp
b24uT3B0aW9ucyB8PSAweDAwMDAwMDQwTCA7CgkgICAKCSAgIGlmICghbXNnLmNyZWF0ZUJ1ZmZl
cigqYUxlbmd0aCkpCgkgICB7CgkgICAJCW1SZXNwb25zZUNvZGUuQ29tcENvZGUgPSAyTCA7Cgkg
ICB9CgkgICBlbHNlCgkgICB7CgkgICAJCWFNZXNzYWdlU2l6ZSA9IChNUUxPTkcpKmFMZW5ndGg7
CgkJCW1SZXNwb25zZUNvZGUuQ29tcENvZGUgPSAwTCA7CgkJfQogICB9CiAgIGVsc2UKICAgewog
ICAJCSAKCQkKCQkJOjpNUUdFVCggbUNvbm5lY3Rpb24tPmdldEhhbmRsZSgpLCAgICAgIAogICAg
ICAgICAgICAJCSBtUXVldWVIYW5kbGUsICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAkJ
ICZhRGVzY3JpcHRvciwgICAgICAgICAgICAgICAgICAKCSAgICAgICAgICAgIAkgJmFHZXRPcHRp
b24sICAgICAgICAgICAgICAgICAgCiAgICAJICAgICAgICAJIDAsIDAsICZhTWVzc2FnZVNpemUs
ICAgICAgICAgICAKICAgICAgICAJICAgIAkgJm1SZXNwb25zZUNvZGUuQ29tcENvZGUsICAgICAg
IAogICAgICAgICAgICAJCSAmbVJlc3BvbnNlQ29kZS5SZWFzb24pOyAgICAgICAgCgkJCiAgICAJ
c2V0RXJyb3IoIk1RR0VUIiwKICAgICAgICAgICAgCSBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlLAog
ICAgICAgICAgICAJIG1SZXNwb25zZUNvZGUuUmVhc29uKTsKCQkJCgkJICAKCQkgIAoJCSAgCgkJ
aWYgKG1SZXNwb25zZUNvZGUuQ29tcENvZGUgPT0gMEwgIHx8CgkJCW1SZXNwb25zZUNvZGUuQ29t
cENvZGUgPT0gMUwgKQoJCXsKCQkJbXNnLmNyZWF0ZUJ1ZmZlcihhTWVzc2FnZVNpemUpOwoJCQkK
CQkJIAoJCQkgCgkJCWlmIChtT3Blbk9wdGlvbnMgJiAweDAwMDAwMDA4TCApCgkJCXsKCQkJCSAK
CQkJCSAKCQkJCWFHZXRPcHRpb24uT3B0aW9ucyAmPSAoIH4gKDB4MDAwMDAwMTBMICB8IDB4MDAw
MDAwMjBMICkpOwoJCQkJIAoJCQkJYUdldE9wdGlvbi5PcHRpb25zIHw9IDB4MDAwMDAxMDBMIDsK
CQkJfQoJCX0KCX0KCQoJaWYgKG1SZXNwb25zZUNvZGUuQ29tcENvZGUgPT0gMEwgIHx8CgkJbVJl
c3BvbnNlQ29kZS5Db21wQ29kZSA9PSAxTCApCgl7CgkgCSAKICAgCQk6Ok1RR0VUKCBtQ29ubmVj
dGlvbi0+Z2V0SGFuZGxlKCksICAgICAgCiAgICAgICAgICAgIAkgbVF1ZXVlSGFuZGxlLCAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAJICZhRGVzY3JpcHRvciwgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgCSAmYUdldE9wdGlvbiwgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgCSBtc2cuZ2V0TGVuZ3RoKCksIAoJCQkJIG1zZy5nZXRCdWZmZXIoKSwgJmFNZXNzYWdlU2l6
ZSwKICAgICAgICAgICAgCSAmbVJlc3BvbnNlQ29kZS5Db21wQ29kZSwgICAgICAgCiAgICAgICAg
ICAgIAkgJm1SZXNwb25zZUNvZGUuUmVhc29uKTsgICAgICAgIAoKCQltc2cuc2V0RGVzY3JpcHRv
cihhRGVzY3JpcHRvcik7CQoJCW1zZy5zZXRHRVRPcHRpb25zKGFHZXRPcHRpb24pOwoJCQogICAg
CXNldEVycm9yKCJNUUdFVCIsCiAgICAgICAgICAgIAkgbVJlc3BvbnNlQ29kZS5Db21wQ29kZSwK
CSAgICAgICAgCSBtUmVzcG9uc2VDb2RlLlJlYXNvbik7Cgl9CglyZXN1bHQgPSBtUmVzcG9uc2VD
b2RlLkNvbXBDb2RlOwoJCgkKICAgIDsKICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IE1RUXVldWU6
OmNvbnRhaW5zKE1RTWVzc2FnZUlEICZhTWVzc2FnZUlEKQp7CgkgOwoJaW50IHJlc3VsdCA9IDJM
IDsKCglpZiAoIWFNZXNzYWdlSUQuaXNWYWxpZCgpKQogCQkgVFNGV0xvZ0ZhY2lsaXR5OjpnZXRJ
bnN0YW5jZSgpLT53cml0ZUxvZygoICJVbmd1ZWx0aWdlciBQYXJhbWV0ZXIgaW4gRnVua3Rpb25z
YXVmcnVmLiIgKSwgIi9ob21lL3hodTYwMzEvdHNmdy9tcWZ0c2VydmljZS9tcXF1ZXVlLmNwcCIs
IDc4OSwgKCAgVFNGV0xvZ0ZhY2lsaXR5OjplcnJvciApKSA7CgllbHNlCgl7CiAgICAJTVFHTU8g
YUdldE9wdGlvbnMgPSB7IHsnRycsJ00nLCdPJywnICcgfSwgMUwgLCAweDAwMDAwMDAwTCAsIDBM
LCAwTCwgMEwsIHsiIn0sICgweDAwMDAwMDAxTCArIDB4MDAwMDAwMDJMICksICcgJyAsICcgJyAs
ICcgJyAsICcgJywgeydcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1ww
JywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnIH0sICgtMUwpICAgfTsKICAgIAlN
UU1EIGFEZXNjcmlwdG9yID0geyB7J00nLCdEJywnICcsJyAnIH0sIDFMICwgMHgwMDAwMDAwMEwg
LCA4TCAsICgtMUwpICwgMEwgLCAweDAwMDAwMTExTCAsICgwTCkgLCB7JyAnLCcgJywnICcsJyAn
LCcgJywnICcsJyAnLCcgJyB9LCAoLTFMKSAsIDJMICwgeydcMCcsJ1wwJywnXDAnLCdcMCcsJ1ww
JywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAn
LCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcgfSwgeydcMCcsJ1wwJywn
XDAnLCdcMCcsJ1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywn
XDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnIH0s
IDBMLCB7IiJ9LCB7IiJ9LCB7IiJ9LCB7J1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1ww
JywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdcMCcsJ1ww
JywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAn
LCdcMCcsJ1wwJywnXDAnIH0sIHsiIn0sIDBMICwgeyIifSwgeyIifSwgeyIifSwgeyIifSwgeydc
MCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1ww
JywnXDAnLCdcMCcsJ1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAn
LCdcMCcgfSwgMUwsIDBMLCAweDAwMDAwMDAwTCAsICgtMUwpICAgfTsKICAgIAlJU3RyaW5nIG1z
Z2lkID0gYU1lc3NhZ2VJRC50b1N0cmluZygpOwogICAgCU1RTE9ORyBhTGVuZ3RoOwoKICAgIAlz
dHJuY3B5KChjaGFyICopYURlc2NyaXB0b3IuTXNnSWQsIG1zZ2lkLCAyNEwgKTsKCQkgIFJCR0Nv
Ym9sVHJhbnNjb2Rlcjo6Z2V0SW5zdGFuY2UoKS0+CgkJIAkgIGNvbnZlcnRUb0VCQ0RJQygoY2hh
ciopYURlc2NyaXB0b3IuTXNnSWQsIDI0TCApOwoKICAgIAlhR2V0T3B0aW9ucy5PcHRpb25zID0g
ICAweDAwMDAwMDQwTCAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCTB4MDAwMDAwMTBM
IDsKCiAgICAJOjpNUUdFVCggbUNvbm5lY3Rpb24tPmdldEhhbmRsZSgpLCAgICAgIAogICAgICAg
ICAgICAJIG1RdWV1ZUhhbmRsZSwgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCSAmYURl
c2NyaXB0b3IsICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAkgJmFHZXRPcHRpb25zLCAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAJIDAsIDAsICZhTGVuZ3RoLCAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgCSAmbVJlc3BvbnNlQ29kZS5Db21wQ29kZSwgICAgICAgCiAgICAg
ICAgICAgIAkgJm1SZXNwb25zZUNvZGUuUmVhc29uKTsgICAgICAgIAoKICAgIAlzZXRFcnJvcigi
TVFHRVQiLAogICAgICAgICAgICAJIG1SZXNwb25zZUNvZGUuQ29tcENvZGUsCiAgICAgICAgICAg
IAkgbVJlc3BvbnNlQ29kZS5SZWFzb24pOwoKICAgIAlyZXN1bHQgPSBtUmVzcG9uc2VDb2RlLkNv
bXBDb2RlOwoJfQoJIDsKCXJldHVybiByZXN1bHQ7Cn0KCmludCBNUVF1ZXVlOjpkb2VzRXhpc3Qo
TVFNZXNzYWdlSUQgJmFNZXNzYWdlSUQsIGJvb2wgJnJjKQp7CiAgICA7CiAgIGludCByZXN1bHQg
PSBjb250YWlucyhhTWVzc2FnZUlEKTsKCiAgIHN3aXRjaCAocmVzdWx0KQogICB7CiAgICAgIGNh
c2UgMEwgOiAgICAgICAgICAgIAogICAgICBjYXNlIDFMIDogICAgICAgCiAgICAgICAgIHJlc3Vs
dCAgID0gMEwgOwogICAgICAgICByYyAgICAgICA9IHRydWU7CiAgICAgIGJyZWFrOwogICAgICBj
YXNlIDJMIDogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgIGlmIChtUmVzcG9uc2VDb2Rl
LlJlYXNvbiA9PSAyMDMzTCApCiAgICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0ID0gMEwgOyBy
YyA9IGZhbHNlOwogICAgICAgICB9CgogICAgICBicmVhazsKICAgfQogICAgOwogICByZXR1cm4g
cmVzdWx0Owp9Cgpib29sIE1RUXVldWU6OmJlZ2luKCkKewogICAJIDsKCWJvb2wgcmVzdWx0ID0g
ZmFsc2U7CiAgIAogICAJaWYgKG1Ccm93c2VPcHRpb25zICE9IE5vbmUpCgkJVFNGV0xvZ0ZhY2ls
aXR5OjpnZXRJbnN0YW5jZSgpLT53cml0ZUxvZygoICJVbmd1ZWx0aWdlIEF1ZnJ1ZnNlcXVlbnou
IiApLCAiL2hvbWUveGh1NjAzMS90c2Z3L21xZnRzZXJ2aWNlL21xcXVldWUuY3BwIiwgODU0LCAo
ICBUU0ZXTG9nRmFjaWxpdHk6OmVycm9yICkpIDsKCWVsc2UKCXsKCQltQnJvd3NlT3B0aW9ucyA9
IEJyb3dzZUZpcnN0OwoJCXJlc3VsdCA9IHRydWU7Cgl9CQoJCgkgOwoJcmV0dXJuIHJlc3VsdDsK
fQoKYm9vbCBNUVF1ZXVlOjpuZXh0KE1RTWVzc2FnZSAmYU1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcg
KmFMZW5ndGggICkKewogICAJIDsKCWJvb2wgcmVzdWx0ID0gZmFsc2U7CgkKCU1RR01PIGFHZXRP
cHRpb25zID0geyB7J0cnLCdNJywnTycsJyAnIH0sIDFMICwgMHgwMDAwMDAwMEwgLCAwTCwgMEws
IDBMLCB7IiJ9LCAoMHgwMDAwMDAwMUwgKyAweDAwMDAwMDAyTCApLCAnICcgLCAnICcgLCAnICcg
LCAnICcsIHsnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdcMCcsJ1ww
JywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJyB9LCAoLTFMKSAgIH07CglNUU1EIGFEZXNj
cmlwdG9yID0geyB7J00nLCdEJywnICcsJyAnIH0sIDFMICwgMHgwMDAwMDAwMEwgLCA4TCAsICgt
MUwpICwgMEwgLCAweDAwMDAwMTExTCAsICgwTCkgLCB7JyAnLCcgJywnICcsJyAnLCcgJywnICcs
JyAnLCcgJyB9LCAoLTFMKSAsIDJMICwgeydcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdc
MCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCAnXDAnLCdc
MCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcgfSwgeydcMCcsJ1wwJywnXDAnLCdcMCcs
J1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcs
J1wwJywnXDAnLCdcMCcsICdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnIH0sIDBMLCB7IiJ9
LCB7IiJ9LCB7IiJ9LCB7J1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCAn
XDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsICdcMCcsJ1wwJywnXDAnLCdc
MCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1ww
JywnXDAnIH0sIHsiIn0sIDBMICwgeyIifSwgeyIifSwgeyIifSwgeyIifSwgeydcMCcsJ1wwJywn
XDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywgJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdc
MCcsJ1wwJywnXDAnLCAnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcsJ1wwJywnXDAnLCdcMCcgfSwg
MUwsIDBMLCAweDAwMDAwMDAwTCAsICgtMUwpICAgfTsKICAgCiAgIAlpZiAobUJyb3dzZU9wdGlv
bnMgPT0gTm9uZSkKCQlUU0ZXTG9nRmFjaWxpdHk6OmdldEluc3RhbmNlKCktPndyaXRlTG9nKCgg
IlVuZ3VlbHRpZ2UgQXVmcnVmc2VxdWVuei4iICksICIvaG9tZS94aHU2MDMxL3RzZncvbXFmdHNl
cnZpY2UvbXFxdWV1ZS5jcHAiLCA4NzQsICggIFRTRldMb2dGYWNpbGl0eTo6ZXJyb3IgKSkgOwoJ
ZWxzZSAKCXsJCgkJaWYgKG1Ccm93c2VPcHRpb25zID09IEJyb3dzZUZpcnN0KQoJCXsKCSAgICAJ
YUdldE9wdGlvbnMuT3B0aW9ucyA9ICAgMHgwMDAwMDA0MEwgIHwKICAgIAkgICAgICAgICAgICAg
ICAgICAgICAgICAJMHgwMDAwMDAxMEwgOwoJCX0KCQllbHNlCgkJCWFHZXRPcHRpb25zLk9wdGlv
bnMgPSAgIDB4MDAwMDAwNDBMICB8CiAgICAJICAgICAgICAgICAgICAgICAgICAgICAgCTB4MDAw
MDAwMjBMIDsKCQkKCQlhTWVzc2FnZS5zZXRHRVRPcHRpb25zKGFHZXRPcHRpb25zKTsJCgkJCgkJ
cmVzdWx0ID0gKGdldChhTWVzc2FnZSwgYUxlbmd0aCkgPT0gMkwgKSA/IGZhbHNlIDogdHJ1ZTsK
CX0KCQoJIDsKCXJldHVybiByZXN1bHQ7Cn0KCmJvb2wgTVFRdWV1ZTo6ZW5kKCkKewogICAJIDsK
CWJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgIAogICAJbUJyb3dzZU9wdGlvbnMgPSBOb25lOwoJCgkg
CgkgCglyZXN1bHQgPSAoCW1SZXNwb25zZUNvZGUuQ29tcENvZGUgPT0gMkwgICYmCiAgICAgICAJ
CQltUmVzcG9uc2VDb2RlLlJlYXNvbiA9PSAyMDMzTCApOwoJCgkgOwoJcmV0dXJuIHJlc3VsdDsK
fQoKIAppbnQgTVFDb25uZWN0aW9uOjpjb21taXQoKQp7CiAgICA7CiAgIGludCByZXN1bHQgPSAy
TCA7CgogICA6Ok1RQ01JVChnZXRIYW5kbGUoKSwgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICZtUmVzcG9uc2VDb2RlLkNvbXBDb2RlLCAgICAKICAgICAgICAgICAgJm1SZXNwb25zZUNvZGUu
UmVhc29uKTsgICAgIAoKICAgCgoKCiAgIHNldEVycm9yKCJNUUNNSVQiLAogICAgICAgICAgICAg
ICBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlLAogICAgICAgICAgICAgICBtUmVzcG9uc2VDb2RlLlJl
YXNvbik7CgogICByZXN1bHQgPSBtUmVzcG9uc2VDb2RlLkNvbXBDb2RlOwoKICAgIDsKICAgcmV0
dXJuIHJlc3VsdDsKfQoKIAppbnQgTVFDb25uZWN0aW9uOjpyb2xsYmFjaygpCnsKICAgIDsKICAg
aW50IHJlc3VsdCA9IDJMIDsKCiAgIDo6TVFCQUNLKGdldEhhbmRsZSgpLCAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgJm1SZXNwb25zZUNvZGUuQ29tcENvZGUsICAgIAogICAgICAgICAgICAm
bVJlc3BvbnNlQ29kZS5SZWFzb24pOyAgICAgCgogCgoKICAgc2V0RXJyb3IoIk1RQkFDSyIsCiAg
ICAgICAgICAgICAgIG1SZXNwb25zZUNvZGUuQ29tcENvZGUsCiAgICAgICAgICAgICAgIG1SZXNw
b25zZUNvZGUuUmVhc29uKTsKCiAgIHJlc3VsdCA9IG1SZXNwb25zZUNvZGUuQ29tcENvZGU7Cgog
ICAgOwogICByZXR1cm4gcmVzdWx0Owp9Cgp2b2lkIE1RUXVldWU6OmhhbmRsZUVycm9yKGNvbnN0
IElTdHJpbmcgJmFGdW5jdGlvbiwgdW5zaWduZWQgaW50IGNvbXBsZXRpb25jb2RlLCB1bnNpZ25l
ZCBpbnQgcmVhc29uY29kZSkKewogICAgOwoKICAgaWYgKGFGdW5jdGlvbiAhPSAiTVFDTE9TRSIg
KQogICB7CiAgICAgIHN3aXRjaCAocmVhc29uY29kZSkKICAgICAgewogICAgICAgICBjYXNlIDIw
MTlMIDoKICAgICAgICAgY2FzZSAyMDE4TCA6CiAgICAgICAgIGNhc2UgMjAwOUwgOgoKICAgICAg
ICAgYnJlYWs7CiAgICAgIH0KICAgfQoKICAgIDsKfQoKdm9pZCBNUVF1ZXVlOjpzZXRDb25uZWN0
aW9uKE1RQ29ubmVjdGlvbiAqYUNvbm5lY3Rpb24pCnsKICAgIDsKCiAgIGxvY2soKTsKCiAgIGlm
ICghYUNvbm5lY3Rpb24pCiAgIHsKICAgfQogICBlbHNlIGlmICghbUNvbm5lY3Rpb24pCiAgIHsK
ICAgICAgbUNvbm5lY3Rpb24gPSBhQ29ubmVjdGlvbjsKICAgfQogICBpZiAoICBpc09wZW4oKSAm
JgogICAgICAgICBtQ29ubmVjdGlvbi0+Z2V0SGFuZGxlKCkgIT0gYUNvbm5lY3Rpb24tPmdldEhh
bmRsZSgpKQogICB7CiAgICAgIGNsb3NlKCk7CiAgICAgIG1Db25uZWN0aW9uID0gYUNvbm5lY3Rp
b247CiAgICAgIG9wZW4oKTsKICAgfQoKICAgdW5sb2NrKCk7CgogICAgOwp9CgpNUUNvbm5lY3Rp
b24gKiBNUVF1ZXVlOjpnZXRDb25uZWN0aW9uKCkKewogICAgOyA7CiAgIHJldHVybiBtQ29ubmVj
dGlvbjsKfQoKCg==


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

end of thread, other threads:[~2002-03-23  4:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-22 20:01 c++/4723: g++ rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2002-02-24 12:06 rodrigc
2001-10-28 21:46 michael.frommeyer

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).