public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/6670: ICE when compiling code that uses __attribute__((dllimport))
@ 2003-04-06 23:16 Giovanni Bajo
  0 siblings, 0 replies; 5+ messages in thread
From: Giovanni Bajo @ 2003-04-06 23:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c++/6670; it has been noted by GNATS.

From: "Giovanni Bajo" <giovannibajo@libero.it>
To: <gcc-gnats@gcc.gnu.org>,
	<gcc-bugs@gcc.gnu.org>,
	<nobody@gcc.gnu.org>,
	<gcc-prs@gcc.gnu.org>,
	<ofv@wanadoo.es>
Cc: "Wolfgang Bangerth" <bangerth@ices.utexas.edu>
Subject: Re: c++/6670: ICE when compiling code that uses __attribute__((dllimport))
Date: Mon, 7 Apr 2003 01:09:41 +0200

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 r=6670
 
 I don't have 3.1, 3.2 compiles correctly, 2.95/3.3 can't handle the
 preprocessed file for some other reasons.
 
 To the poster: can you try if the problem still happens upgrading to a newer
 GCC version?
 
 Giovanni Bajo
 


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

* Re: c++/6670: ICE when compiling code that uses __attribute__((dllimport))
@ 2003-04-07 13:56 bangerth
  0 siblings, 0 replies; 5+ messages in thread
From: bangerth @ 2003-04-07 13:56 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, ofv

Synopsis: ICE when compiling code that uses __attribute__((dllimport))

State-Changed-From-To: feedback->closed
State-Changed-By: bangerth
State-Changed-When: Mon Apr  7 13:56:36 2003
State-Changed-Why:
    Sorry, should read full audit trail. Is apparently fixed.

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


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

* Re: c++/6670: ICE when compiling code that uses __attribute__((dllimport))
@ 2003-04-07 13:54 bangerth
  0 siblings, 0 replies; 5+ messages in thread
From: bangerth @ 2003-04-07 13:54 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, ofv

Synopsis: ICE when compiling code that uses __attribute__((dllimport))

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Mon Apr  7 13:54:51 2003
State-Changed-Why:
    See Giovanni's question

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


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

* Re: c++/6670: ICE when compiling code that uses __attribute__((dllimport))
@ 2003-04-06 23:36 Oscar Fuentes
  0 siblings, 0 replies; 5+ messages in thread
From: Oscar Fuentes @ 2003-04-06 23:36 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c++/6670; it has been noted by GNATS.

From: Oscar Fuentes <ofv@wanadoo.es>
To: <gcc-gnats@gcc.gnu.org>
Cc: <gcc-bugs@gcc.gnu.org>,  <nobody@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>
Subject: Re: c++/6670: ICE when compiling code that uses
 __attribute__((dllimport))
Date: Mon, 07 Apr 2003 01:24:38 +0200

 "Giovanni Bajo" <giovannibajo@libero.it> writes:
 
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 > r=6670
 >
 > I don't have 3.1, 3.2 compiles correctly, 2.95/3.3 can't handle the
 > preprocessed file for some other reasons.
 >
 > To the poster: can you try if the problem still happens upgrading to a newer
 > GCC version?
 >
 > Giovanni Bajo
 
 The problem is fixed. Checked with
 
 g++ -v
 
 Reading specs from t:/msys/1.0/mingw/bin/../lib/gcc-lib/mingw32/3.2.2/specs
 Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c++,f77,objc --disable-win32-registry --disable-shared --enable-sjlj-exceptions
 Thread model: win32
 gcc version 3.2.2 (mingw special 20030208-1)
 
 Thanks.
 
 -- 
 Oscar
 


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

* c++/6670: ICE when compiling code that uses __attribute__((dllimport))
@ 2002-05-15 20:16 ofv
  0 siblings, 0 replies; 5+ messages in thread
From: ofv @ 2002-05-15 20:16 UTC (permalink / raw)
  To: gcc-gnats


>Number:         6670
>Category:       c++
>Synopsis:       ICE when compiling code that uses __attribute__((dllimport))
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed May 15 20:16:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Oscar Fuentes
>Release:        gcc version 3.1 20020510 (prerelease)
>Organization:
>Environment:
Reading specs from t:\msys\1.0\mingw\bin\..\lib\gcc-lib\i686-pc-mingw32\3.1\specs
Configured with: ../gcc-3.1-20020510/configure --enable-languages=c,c++ --enable-threads=win32 --enable-sjlj-exceptions --prefix=t:/msys/1.0/mingw
Thread model: win32

and

Reading specs from /usr/local/lib/gcc-lib/i686-pc-cygwin/3.1/specs
Configured with: ../gcc-3.1-20020510/configure --enable-languages=c,c++ --enable
-threads=win32
Thread model: win32
>Description:
The attached source compiles fine without __attribute__((dllimport)). If not, it reports

$ g++ -c dll.ii
../../include/wx/dialog.h: In function `void 
   __static_initialization_and_destruction_0(int, int)':
../../include/wx/dialog.h:23: Internal compiler error in convert_move, at 
   gcc-3.1-20020510/gcc/expr.c:1243
Please submit a full bug report,

removing the attribute from the offending line (40716) causes

$ g++ -c dll.ii
../../include/wx/statusbr.h: In function `void 
   __static_initialization_and_destruction_0(int, int)':
../../include/wx/statusbr.h:67: Internal compiler error in convert_move, at 
   gcc-3.1-20020510/gcc/expr.c:1243
Please submit a full bug report,
with preprocessed source if appropriate.

Again, removing the attribute from the offending line (43766) gives

$ g++ -c dll.ii
c:\Temp/ccoraaaa.s: Assembler messages:
c:\Temp/ccoraaaa.s:5: Error: length of .comm "_D" is already 496; not changing to 480
>How-To-Repeat:

>Fix:

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

IyAxICJtaW5pbWFsMi5jcHAiDQojIDEgIjxidWlsdC1pbj4iDQojIDEgIjxjb21tYW5kIGxpbmU+
Ig0KIyAxICJtaW5pbWFsMi5jcHAiDQoNCiNwcmFnbWEgaW1wbGVtZW50YXRpb24gIm1pbmltYWwu
Y3BwIg0KI3ByYWdtYSBpbnRlcmZhY2UgIm1pbmltYWwuY3BwIg0KDQoNCg0KIyAxICIuLi8uLi9p
bmNsdWRlL3d4L3d4cHJlYy5oIiAxDQojIDEzICIuLi8uLi9pbmNsdWRlL3d4L3d4cHJlYy5oIg0K
IyAxICIuLi8uLi9pbmNsdWRlL3d4L2RlZnMuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9k
ZWZzLmgiDQojcHJhZ21hIGludGVyZmFjZSAiZGVmcy5oIg0KIyAyMjIgIi4uLy4uL2luY2x1ZGUv
d3gvZGVmcy5oIg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1p
bmd3MzIvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAxNDcgInQ6L21zeXMvMS4wL21pbmd3
L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMw0KdHlw
ZWRlZiBpbnQgcHRyZGlmZl90Ow0KIyAyMDEgInQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGli
L2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMw0KdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgc2l6ZV90Ow0KIyAyMjMgIi4uLy4uL2luY2x1ZGUvd3gvZGVmcy5oIiAyDQoNCiMgMSAi
Li4vLi4vaW5jbHVkZS93eC9zZXR1cC5oIiAxDQojIDIyNSAiLi4vLi4vaW5jbHVkZS93eC9kZWZz
LmgiIDINCiMgMjQ4ICIuLi8uLi9pbmNsdWRlL3d4L2RlZnMuaCINCiMgMSAiLi4vLi4vaW5jbHVk
ZS93eC92ZXJzaW9uLmgiIDENCiMgMjQ5ICIuLi8uLi9pbmNsdWRlL3d4L2RlZnMuaCIgMg0KIyAz
MjQgIi4uLy4uL2luY2x1ZGUvd3gvZGVmcy5oIg0KdHlwZWRlZiBzaG9ydCBpbnQgV1hUWVBFOw0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgd3hXaW5kb3dJRDsNCiMgNDU2ICIuLi8uLi9pbmNsdWRl
L3d4L2RlZnMuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4T2JqZWN0Ow0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hFdmVudDsNCiMgNDY4ICIuLi8uLi9p
bmNsdWRlL3d4L2RlZnMuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9kZWJ1Zy5oIiAxDQojIDE1
ICIuLi8uLi9pbmNsdWRlL3d4L2RlYnVnLmgiDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvYXNzZXJ0LmgiIDEgMw0KIyAzMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9hc3NlcnQu
aCIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL19taW5ndy5oIiAxIDMNCiMgMzIg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvYXNzZXJ0LmgiIDIgMw0KDQoNCg0KDQpleHRlcm4g
IkMiIHsNCiMgNTIgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvYXNzZXJ0LmgiIDMNCnZvaWQg
X2Fzc2VydCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBpbnQpDQoNCiAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKG5vcmV0dXJuKSkNCg0KICAgICAgICA7DQojIDY1ICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2Fzc2VydC5oIiAzDQp9DQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2RlYnVnLmgi
IDINCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3d4Y2hhci5oIiAxDQojIDE2ICIuLi8uLi9pbmNs
dWRlL3d4L3d4Y2hhci5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInd4Y2hhci5oIg0KIyAyODAgIi4u
Ly4uL2luY2x1ZGUvd3gvd3hjaGFyLmgiDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
d2NoYXIuaCIgMSAzDQojIDMzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3djaGFyLmgiIDMN
CiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9jdHlwZS5oIiAxIDMNCiMgMzYgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvY3R5cGUuaCIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAz
MjEgInQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90Ow0KIyAzNyAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9jdHlwZS5oIiAyIDMNCiMgNTkgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvY3R5cGUuaCIgMw0KZXh0ZXJuICJDIiB7DQoNCg0KaW50IGlzYWxudW0oaW50
KTsNCmludCBpc2FscGhhKGludCk7DQppbnQgaXNjbnRybChpbnQpOw0KaW50IGlzZGlnaXQoaW50
KTsNCmludCBpc2dyYXBoKGludCk7DQppbnQgaXNsb3dlcihpbnQpOw0KaW50IGlzcHJpbnQoaW50
KTsNCmludCBpc3B1bmN0KGludCk7DQppbnQgaXNzcGFjZShpbnQpOw0KaW50IGlzdXBwZXIoaW50
KTsNCmludCBpc3hkaWdpdChpbnQpOw0KDQoNCmludCBfaXNjdHlwZSAoaW50LCBpbnQpOw0KDQoN
CmludCB0b2xvd2VyKGludCk7DQppbnQgdG91cHBlcihpbnQpOw0KDQoNCg0KDQoNCg0KaW50IF90
b2xvd2VyKGludCk7DQppbnQgX3RvdXBwZXIoaW50KTsNCiMgOTggInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvY3R5cGUuaCIgMw0KICAgZXh0ZXJuIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IGludCBfX21iX2N1cl9tYXg7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgd2NoYXJfdCB3Y3R5cGVf
dDsNCg0KDQoNCg0KaW50IGlzd2FsbnVtKHdpbnRfdCk7DQppbnQgaXN3YWxwaGEod2ludF90KTsN
CmludCBpc3dhc2NpaSh3aW50X3QpOw0KaW50IGlzd2NudHJsKHdpbnRfdCk7DQppbnQgaXN3Y3R5
cGUod2ludF90LCB3Y3R5cGVfdCk7DQppbnQgaXNfd2N0eXBlKHdpbnRfdCwgd2N0eXBlX3QpOw0K
aW50IGlzd2RpZ2l0KHdpbnRfdCk7DQppbnQgaXN3Z3JhcGgod2ludF90KTsNCmludCBpc3dsb3dl
cih3aW50X3QpOw0KaW50IGlzd3ByaW50KHdpbnRfdCk7DQppbnQgaXN3cHVuY3Qod2ludF90KTsN
CmludCBpc3dzcGFjZSh3aW50X3QpOw0KaW50IGlzd3VwcGVyKHdpbnRfdCk7DQppbnQgaXN3eGRp
Z2l0KHdpbnRfdCk7DQoNCndjaGFyX3QgdG93bG93ZXIod2NoYXJfdCk7DQp3Y2hhcl90IHRvd3Vw
cGVyKHdjaGFyX3QpOw0KDQppbnQgaXNsZWFkYnl0ZSAoaW50KTsNCg0KDQppbnQgX19pc2FzY2lp
IChpbnQpOw0KaW50IF9fdG9hc2NpaSAoaW50KTsNCmludCBfX2lzY3N5bWYgKGludCk7DQppbnQg
X19pc2NzeW0gKGludCk7DQoNCg0KaW50IGlzYXNjaWkgKGludCk7DQppbnQgdG9hc2NpaSAoaW50
KTsNCmludCBpc2NzeW1mIChpbnQpOw0KaW50IGlzY3N5bSAoaW50KTsNCg0KDQoNCg0KDQp9DQoj
IDM0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3djaGFyLmgiIDIgMw0KIyAxICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL3N0ZGlvLmgiIDEgMw0KIyA0MiAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9zdGRpby5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2
ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDQzICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0KIyAxMzMgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvc3RkaW8uaCIgMw0KdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCB2YV9saXN0Ow0KIyAx
NDcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkaW8uaCIgMw0KdHlwZWRlZiBzdHJ1Y3Qg
X2lvYnVmDQp7DQogICAgICAgIGNoYXIqIF9wdHI7DQogICAgICAgIGludCBfY250Ow0KICAgICAg
ICBjaGFyKiBfYmFzZTsNCiAgICAgICAgaW50IF9mbGFnOw0KICAgICAgICBpbnQgX2ZpbGU7DQog
ICAgICAgIGludCBfY2hhcmJ1ZjsNCiAgICAgICAgaW50IF9idWZzaXo7DQogICAgICAgIGNoYXIq
IF90bXBmbmFtZTsNCn0gRklMRTsNCiMgMTcyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N0
ZGlvLmgiIDMNCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBGSUxFIF9pb2JbXTsN
CiMgMTgxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N0ZGlvLmgiIDMNCmV4dGVybiAiQyIg
ew0KDQoNCg0KDQoNCkZJTEUqIGZvcGVuIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOw0KRklM
RSogZnJlb3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBGSUxFKik7DQppbnQgZmZsdXNo
IChGSUxFKik7DQppbnQgZmNsb3NlIChGSUxFKik7DQoNCmludCByZW1vdmUgKGNvbnN0IGNoYXIq
KTsNCmludCByZW5hbWUgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQpGSUxFKiB0bXBmaWxl
ICh2b2lkKTsNCmNoYXIqIHRtcG5hbSAoY2hhciopOw0KY2hhciogX3RlbXBuYW0gKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKik7DQoNCg0KY2hhciogdGVtcG5hbSAoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsNCg0KDQppbnQgc2V0dmJ1ZiAoRklMRSosIGNoYXIqLCBpbnQsIHNpemVfdCk7DQoN
CnZvaWQgc2V0YnVmIChGSUxFKiwgY2hhciopOw0KDQoNCg0KDQoNCmludCBmcHJpbnRmIChGSUxF
KiwgY29uc3QgY2hhciosIC4uLik7DQppbnQgcHJpbnRmIChjb25zdCBjaGFyKiwgLi4uKTsNCmlu
dCBzcHJpbnRmIChjaGFyKiwgY29uc3QgY2hhciosIC4uLik7DQppbnQgX3NucHJpbnRmIChjaGFy
Kiwgc2l6ZV90LCBjb25zdCBjaGFyKiwgLi4uKTsNCmludCB2ZnByaW50ZiAoRklMRSosIGNvbnN0
IGNoYXIqLCB2YV9saXN0KTsNCmludCB2cHJpbnRmIChjb25zdCBjaGFyKiwgdmFfbGlzdCk7DQpp
bnQgdnNwcmludGYgKGNoYXIqLCBjb25zdCBjaGFyKiwgdmFfbGlzdCk7DQppbnQgX3ZzbnByaW50
ZiAoY2hhciosIHNpemVfdCwgY29uc3QgY2hhciosIHZhX2xpc3QpOw0KDQoNCg0KDQoNCg0KaW50
IGZzY2FuZiAoRklMRSosIGNvbnN0IGNoYXIqLCAuLi4pOw0KaW50IHNjYW5mIChjb25zdCBjaGFy
KiwgLi4uKTsNCmludCBzc2NhbmYgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKTsNCg0K
DQoNCg0KaW50IGZnZXRjIChGSUxFKik7DQpjaGFyKiBmZ2V0cyAoY2hhciosIGludCwgRklMRSop
Ow0KaW50IGZwdXRjIChpbnQsIEZJTEUqKTsNCmludCBmcHV0cyAoY29uc3QgY2hhciosIEZJTEUq
KTsNCmludCBnZXRjIChGSUxFKik7DQppbnQgZ2V0Y2hhciAodm9pZCk7DQpjaGFyKiBnZXRzIChj
aGFyKik7DQppbnQgcHV0YyAoaW50LCBGSUxFKik7DQppbnQgcHV0Y2hhciAoaW50KTsNCmludCBw
dXRzIChjb25zdCBjaGFyKik7DQppbnQgdW5nZXRjIChpbnQsIEZJTEUqKTsNCg0KDQoNCg0KDQpz
aXplX3QgZnJlYWQgKHZvaWQqLCBzaXplX3QsIHNpemVfdCwgRklMRSopOw0Kc2l6ZV90IGZ3cml0
ZSAoY29uc3Qgdm9pZCosIHNpemVfdCwgc2l6ZV90LCBGSUxFKik7DQoNCg0KDQoNCg0KaW50IGZz
ZWVrIChGSUxFKiwgbG9uZywgaW50KTsNCmxvbmcgZnRlbGwgKEZJTEUqKTsNCnZvaWQgcmV3aW5k
IChGSUxFKik7DQojIDI2OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRpby5oIiAzDQp0
eXBlZGVmIGxvbmcgbG9uZyBmcG9zX3Q7DQoNCg0KDQoNCmludCBmZ2V0cG9zIChGSUxFKiwgZnBv
c190Kik7DQppbnQgZnNldHBvcyAoRklMRSosIGNvbnN0IGZwb3NfdCopOw0KDQoNCg0KDQoNCnZv
aWQgY2xlYXJlcnIgKEZJTEUqKTsNCmludCBmZW9mIChGSUxFKik7DQppbnQgZmVycm9yIChGSUxF
Kik7DQp2b2lkIHBlcnJvciAoY29uc3QgY2hhciopOw0KDQoNCg0KDQoNCg0KRklMRSogX3BvcGVu
IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOw0KaW50IF9wY2xvc2UgKEZJTEUqKTsNCg0KDQpG
SUxFKiBwb3BlbiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsNCmludCBwY2xvc2UgKEZJTEUq
KTsNCg0KDQoNCg0KDQppbnQgX2ZsdXNoYWxsKHZvaWQpOw0KaW50IF9mZ2V0Y2hhciAodm9pZCk7
DQppbnQgX2ZwdXRjaGFyIChpbnQpOw0KRklMRSogX2Zkb3BlbiAoaW50LCBjb25zdCBjaGFyKik7
DQppbnQgX2ZpbGVubyAoRklMRSopOw0KDQoNCmludCBmZ2V0Y2hhciAodm9pZCk7DQppbnQgZnB1
dGNoYXIgKGludCk7DQpGSUxFKiBmZG9wZW4gKGludCwgY29uc3QgY2hhciopOw0KaW50IGZpbGVu
byAoRklMRSopOw0KIyAzMjAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkaW8uaCIgMw0K
aW50IGZ3cHJpbnRmIChGSUxFKiwgY29uc3Qgd2NoYXJfdCosIC4uLik7DQppbnQgd3ByaW50ZiAo
Y29uc3Qgd2NoYXJfdCosIC4uLik7DQppbnQgc3dwcmludGYgKHdjaGFyX3QqLCBjb25zdCB3Y2hh
cl90KiwgLi4uKTsNCmludCB2ZndwcmludGYgKEZJTEUqLCBjb25zdCB3Y2hhcl90KiwgdmFfbGlz
dCk7DQppbnQgdndwcmludGYgKGNvbnN0IHdjaGFyX3QqLCB2YV9saXN0KTsNCmludCB2c3dwcmlu
dGYgKHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90KiwgdmFfbGlzdCk7DQppbnQgZndzY2FuZiAoRklM
RSosIGNvbnN0IHdjaGFyX3QqLCAuLi4pOw0KaW50IHdzY2FuZiAoY29uc3Qgd2NoYXJfdCosIC4u
Lik7DQppbnQgc3dzY2FuZiAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCAuLi4pOw0K
d2ludF90IGZnZXR3YyAoRklMRSopOw0Kd2ludF90IGZwdXR3YyAod2NoYXJfdCwgRklMRSopOw0K
d2ludF90IHVuZ2V0d2MgKHdjaGFyX3QsIEZJTEUqKTsNCg0Kd2NoYXJfdCogZmdldHdzICh3Y2hh
cl90KiwgaW50LCBGSUxFKik7DQppbnQgZnB1dHdzIChjb25zdCB3Y2hhcl90KiwgRklMRSopOw0K
d2ludF90IGdldHdjIChGSUxFKik7DQp3aW50X3QgZ2V0d2NoYXIgKHZvaWQpOw0Kd2NoYXJfdCog
X2dldHdzICh3Y2hhcl90Kik7DQp3aW50X3QgcHV0d2MgKHdpbnRfdCwgRklMRSopOw0KaW50IF9w
dXR3cyAoY29uc3Qgd2NoYXJfdCopOw0Kd2ludF90IHB1dHdjaGFyICh3aW50X3QpOw0KRklMRSog
X3dmb3BlbiAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqKTsNCkZJTEUqIF93ZnJlb3Bl
biAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCBGSUxFKik7DQpGSUxFKiBfd2Zzb3Bl
bihjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIGludCk7DQp3Y2hhcl90KiBfd3RtcG5h
bSAod2NoYXJfdCopOw0Kd2NoYXJfdCogX3d0ZW1wbmFtIChjb25zdCB3Y2hhcl90KiwgY29uc3Qg
d2NoYXJfdCopOw0KaW50IF93cmVuYW1lKGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7
DQppbnQgX3dyZW1vdmUgKGNvbnN0IHdjaGFyX3QqKTsNCnZvaWQgX3dwZXJyb3IoY29uc3Qgd2No
YXJfdCopOw0KRklMRSogX3dwb3Blbihjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCopOw0K
IyAzNzQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkaW8uaCIgMw0Kd2ludF90IF9mZ2V0
d2NoYXIodm9pZCk7DQp3aW50X3QgX2ZwdXR3Y2hhcih3aW50X3QpOw0KaW50IF9nZXR3IChGSUxF
Kik7DQppbnQgX3B1dHcgKGludCwgRklMRSopOw0KDQoNCndpbnRfdCBmZ2V0d2NoYXIodm9pZCk7
DQp3aW50X3QgZnB1dHdjaGFyKHdpbnRfdCk7DQppbnQgZ2V0dyAoRklMRSopOw0KaW50IHB1dHcg
KGludCwgRklMRSopOw0KDQoNCg0KDQoNCn0NCiMgMzUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvd2NoYXIuaCIgMiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkbGliLmgi
IDEgMw0KIyAzOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIuaCIgMw0KIyAxICJ0
Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4xL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMw0KIyAzOSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzDQojIDc3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N0ZGxpYi5oIiAzDQpleHRlcm4g
IkMiIHsNCiMgODYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkbGliLmgiIDMNCmV4dGVy
biBpbnQgX2FyZ2M7DQpleHRlcm4gY2hhcioqIF9hcmd2Ow0KDQoNCg0KDQpleHRlcm4gaW50KiBf
X3BfX19hcmdjKHZvaWQpOw0KZXh0ZXJuIGNoYXIqKiogX19wX19fYXJndih2b2lkKTsNCmV4dGVy
biB3Y2hhcl90KioqIF9fcF9fX3dhcmd2KHZvaWQpOw0KIyAxNDIgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvc3RkbGliLmgiIDMNCmludCogX2Vycm5vKHZvaWQpOw0KDQoNCmludCogX19kb3Nl
cnJubyh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KICBleHRlcm4gY2hhciAqKiogX19wX19lbnZpcm9u
KCk7DQogIGV4dGVybiB3Y2hhcl90ICoqKiBfX3BfX3dlbnZpcm9uKCk7DQojIDE3NiAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIuaCIgMw0KICBleHRlcm4gX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgaW50IF9zeXNfbmVycjsNCiMgMjAwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3N0ZGxpYi5oIiAzDQpleHRlcm4gX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgY2hhciog
X3N5c19lcnJsaXN0W107DQojIDIxNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIu
aCIgMw0KZXh0ZXJuIHVuc2lnbmVkIGludCogX19wX19vc3Zlcih2b2lkKTsNCmV4dGVybiB1bnNp
Z25lZCBpbnQqIF9fcF9fd2ludmVyKHZvaWQpOw0KZXh0ZXJuIHVuc2lnbmVkIGludCogX19wX193
aW5tYWpvcih2b2lkKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQqIF9fcF9fd2lubWlub3Iodm9pZCk7
DQojIDI1OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIuaCIgMw0KY2hhcioqIF9f
cF9fcGdtcHRyKHZvaWQpOw0KDQp3Y2hhcl90KiogX19wX193cGdtcHRyKHZvaWQpOw0KIyAyODEg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3RkbGliLmgiIDMNCmRvdWJsZSBhdG9mIChjb25z
dCBjaGFyKik7DQppbnQgYXRvaSAoY29uc3QgY2hhciopOw0KbG9uZyBhdG9sIChjb25zdCBjaGFy
Kik7DQppbnQgX3d0b2kgKGNvbnN0IHdjaGFyX3QgKik7DQpsb25nIF93dG9sIChjb25zdCB3Y2hh
cl90ICopOw0KDQpkb3VibGUgc3RydG9kIChjb25zdCBjaGFyKiwgY2hhcioqKTsNCmRvdWJsZSB3
Y3N0b2QgKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90KiopOw0KbG9uZyBzdHJ0b2wgKGNvbnN0IGNo
YXIqLCBjaGFyKiosIGludCk7DQpsb25nIHdjc3RvbCAoY29uc3Qgd2NoYXJfdCosIHdjaGFyX3Qq
KiwgaW50KTsNCg0KdW5zaWduZWQgbG9uZyBzdHJ0b3VsIChjb25zdCBjaGFyKiwgY2hhcioqLCBp
bnQpOw0KdW5zaWduZWQgbG9uZyB3Y3N0b3VsIChjb25zdCB3Y2hhcl90Kiwgd2NoYXJfdCoqLCBp
bnQpOw0KDQpzaXplX3Qgd2NzdG9tYnMgKGNoYXIqLCBjb25zdCB3Y2hhcl90Kiwgc2l6ZV90KTsN
CmludCB3Y3RvbWIgKGNoYXIqLCB3Y2hhcl90KTsNCg0KaW50IG1ibGVuIChjb25zdCBjaGFyKiwg
c2l6ZV90KTsNCnNpemVfdCBtYnN0b3djcyAod2NoYXJfdCosIGNvbnN0IGNoYXIqLCBzaXplX3Qp
Ow0KaW50IG1idG93YyAod2NoYXJfdCosIGNvbnN0IGNoYXIqLCBzaXplX3QpOw0KDQppbnQgcmFu
ZCAodm9pZCk7DQp2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQpOw0KDQp2b2lkKiBjYWxsb2MgKHNp
emVfdCwgc2l6ZV90KTsNCnZvaWQqIG1hbGxvYyAoc2l6ZV90KTsNCnZvaWQqIHJlYWxsb2MgKHZv
aWQqLCBzaXplX3QpOw0Kdm9pZCBmcmVlICh2b2lkKik7DQoNCnZvaWQgYWJvcnQgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChub3JldHVybikpOw0Kdm9pZCBleGl0IChpbnQpIF9fYXR0cmlidXRlX18g
KChub3JldHVybikpOw0KaW50IGF0ZXhpdCAodm9pZCAoKikodm9pZCkpOw0KDQppbnQgc3lzdGVt
IChjb25zdCBjaGFyKik7DQpjaGFyKiBnZXRlbnYgKGNvbnN0IGNoYXIqKTsNCg0Kdm9pZCogYnNl
YXJjaCAoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QsIHNpemVfdCwNCiAgICAgICAg
ICAgICAgICAgaW50ICgqKShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopKTsNCnZvaWQgcXNvcnQg
KGNvbnN0IHZvaWQqLCBzaXplX3QsIHNpemVfdCwNCiAgICAgICAgICAgICAgICAgaW50ICgqKShj
b25zdCB2b2lkKiwgY29uc3Qgdm9pZCopKTsNCg0KaW50IGFicyAoaW50KTsNCmxvbmcgbGFicyAo
bG9uZyk7DQojIDMzMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIuaCIgMw0KdHlw
ZWRlZiBzdHJ1Y3QgeyBpbnQgcXVvdCwgcmVtOyB9IGRpdl90Ow0KdHlwZWRlZiBzdHJ1Y3QgeyBs
b25nIHF1b3QsIHJlbTsgfSBsZGl2X3Q7DQoNCmRpdl90IGRpdiAoaW50LCBpbnQpOw0KbGRpdl90
IGxkaXYgKGxvbmcsIGxvbmcpOw0KIyAzNDYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc3Rk
bGliLmgiIDMNCnZvaWQgX2JlZXAgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCnZvaWQg
X3NldGVycm9ybW9kZSAoaW50KTsNCnZvaWQgX3NsZWVwICh1bnNpZ25lZCBsb25nKTsNCg0Kdm9p
ZCBfZXhpdCAoaW50KSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsNCg0KaW50IF9wdXRlbnYg
KGNvbnN0IGNoYXIqKTsNCnZvaWQgX3NlYXJjaGVudiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjaGFyKik7DQoNCg0KY2hhciogX2VjdnQgKGRvdWJsZSwgaW50LCBpbnQqLCBpbnQqKTsNCmNo
YXIqIF9mY3Z0IChkb3VibGUsIGludCwgaW50KiwgaW50Kik7DQpjaGFyKiBfZ2N2dCAoZG91Ymxl
LCBpbnQsIGNoYXIqKTsNCg0Kdm9pZCBfbWFrZXBhdGggKGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQp2b2lkIF9zcGxpdHBhdGggKGNv
bnN0IGNoYXIqLCBjaGFyKiwgY2hhciosIGNoYXIqLCBjaGFyKik7DQpjaGFyKiBfZnVsbHBhdGgg
KGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsNCg0KDQpjaGFyKiBfaXRvYSAoaW50LCBjaGFy
KiwgaW50KTsNCmNoYXIqIF9sdG9hIChsb25nLCBjaGFyKiwgaW50KTsNCmNoYXIqIF91bHRvYSh1
bnNpZ25lZCBsb25nLCBjaGFyKiwgaW50KTsNCndjaGFyX3QqIF9pdG93IChpbnQsIHdjaGFyX3Qq
LCBpbnQpOw0Kd2NoYXJfdCogX2x0b3cgKGxvbmcsIHdjaGFyX3QqLCBpbnQpOw0Kd2NoYXJfdCog
X3VsdG93ICh1bnNpZ25lZCBsb25nLCB3Y2hhcl90KiwgaW50KTsNCg0KDQpsb25nIGxvbmcgX2F0
b2k2NChjb25zdCBjaGFyICopOw0KY2hhciogX2k2NHRvYShsb25nIGxvbmcsIGNoYXIgKiwgaW50
KTsNCmNoYXIqIF91aTY0dG9hKHVuc2lnbmVkIGxvbmcgbG9uZywgY2hhciAqLCBpbnQpOw0KbG9u
ZyBsb25nIF93dG9pNjQoY29uc3Qgd2NoYXJfdCAqKTsNCndjaGFyX3QqIF9pNjR0b3cobG9uZyBs
b25nLCB3Y2hhcl90ICosIGludCk7DQp3Y2hhcl90KiBfdWk2NHRvdyh1bnNpZ25lZCBsb25nIGxv
bmcsIHdjaGFyX3QgKiwgaW50KTsNCg0Kd2NoYXJfdCogX3dnZXRlbnYoY29uc3Qgd2NoYXJfdCop
Ow0KaW50IF93cHV0ZW52KGNvbnN0IHdjaGFyX3QqKTsNCnZvaWQgX3dzZWFyY2hlbnYoY29uc3Qg
d2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90Kik7DQp2b2lkIF93bWFrZXBhdGgod2No
YXJfdCosIGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIGNv
bnN0IHdjaGFyX3QqKTsNCnZvaWQgX3dzcGxpdHBhdGggKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90
Kiwgd2NoYXJfdCosIHdjaGFyX3QqLCB3Y2hhcl90Kik7DQp3Y2hhcl90KiBfd2Z1bGxwYXRoICh3
Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7DQoNCg0KDQoNCmludCBwdXRlbnYgKGNv
bnN0IGNoYXIqKTsNCnZvaWQgc2VhcmNoZW52IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNo
YXIqKTsNCg0KY2hhciogaXRvYSAoaW50LCBjaGFyKiwgaW50KTsNCmNoYXIqIGx0b2EgKGxvbmcs
IGNoYXIqLCBpbnQpOw0KDQoNCmNoYXIqIGVjdnQgKGRvdWJsZSwgaW50LCBpbnQqLCBpbnQqKTsN
CmNoYXIqIGZjdnQgKGRvdWJsZSwgaW50LCBpbnQqLCBpbnQqKTsNCmNoYXIqIGdjdnQgKGRvdWJs
ZSwgaW50LCBjaGFyKik7DQojIDQxMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdGRsaWIu
aCIgMw0KfQ0KIyAzNiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93Y2hhci5oIiAyIDMNCiMg
MSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdHJpbmcuaCIgMSAzDQojIDQwICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL3N0cmluZy5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2xp
Yi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzDQojIDQx
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N0cmluZy5oIiAyIDMNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIHsNCg0KDQoNCg0KDQp2b2lkKiBtZW1jaHIgKGNvbnN0IHZvaWQqLCBpbnQsIHNpemVf
dCk7DQppbnQgbWVtY21wIChjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7DQp2b2lk
KiBtZW1jcHkgKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsNCnZvaWQqIG1lbW1vdmUgKHZv
aWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsNCnZvaWQqIG1lbXNldCAodm9pZCosIGludCwgc2l6
ZV90KTsNCmNoYXIqIHN0cmNhdCAoY2hhciosIGNvbnN0IGNoYXIqKTsNCmNoYXIqIHN0cmNociAo
Y29uc3QgY2hhciosIGludCk7DQppbnQgc3RyY21wIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciop
Ow0KaW50IHN0cmNvbGwgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQpjaGFyKiBzdHJjcHkg
KGNoYXIqLCBjb25zdCBjaGFyKik7DQpzaXplX3Qgc3RyY3NwbiAoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsNCmNoYXIqIHN0cmVycm9yIChpbnQpOw0KY2hhciogX3N0cmVycm9yIChjb25zdCBj
aGFyICopOw0Kc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciopOw0KY2hhciogc3RybmNhdCAoY2hh
ciosIGNvbnN0IGNoYXIqLCBzaXplX3QpOw0KaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgc2l6ZV90KTsNCmNoYXIqIHN0cm5jcHkgKGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6
ZV90KTsNCmNoYXIqIHN0cnBicmsgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQpjaGFyKiBz
dHJyY2hyIChjb25zdCBjaGFyKiwgaW50KTsNCnNpemVfdCBzdHJzcG4gKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKik7DQpjaGFyKiBzdHJzdHIgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQpj
aGFyKiBzdHJ0b2sgKGNoYXIqLCBjb25zdCBjaGFyKik7DQpzaXplX3Qgc3RyeGZybSAoY2hhcios
IGNvbnN0IGNoYXIqLCBzaXplX3QpOw0KDQoNCg0KDQoNCnZvaWQqIF9tZW1jY3B5ICh2b2lkKiwg
Y29uc3Qgdm9pZCosIGludCwgc2l6ZV90KTsNCmludCBfbWVtaWNtcCAoY29uc3Qgdm9pZCosIGNv
bnN0IHZvaWQqLCBzaXplX3QpOw0KY2hhciogX3N0cmR1cCAoY29uc3QgY2hhciopOw0KaW50IF9z
dHJjbXBpIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOw0KaW50IF9zdHJpY21wIChjb25zdCBj
aGFyKiwgY29uc3QgY2hhciopOw0KaW50IF9zdHJpY29sbCAoY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqKTsNCmNoYXIqIF9zdHJsd3IgKGNoYXIqKTsNCmludCBfc3RybmljbXAgKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgc2l6ZV90KTsNCmNoYXIqIF9zdHJuc2V0IChjaGFyKiwgaW50LCBzaXpl
X3QpOw0KY2hhciogX3N0cnJldiAoY2hhciopOw0KY2hhciogX3N0cnNldCAoY2hhciosIGludCk7
DQpjaGFyKiBfc3RydXByIChjaGFyKik7DQp2b2lkIF9zd2FiIChjb25zdCBjaGFyKiwgY2hhcios
IHNpemVfdCk7DQoNCg0KDQoNCnVuc2lnbmVkIGNoYXIqIF9tYnNjaHIgKHVuc2lnbmVkIGNoYXIq
LCB1bnNpZ25lZCBjaGFyKik7DQp1bnNpZ25lZCBjaGFyKiBfbWJzbmNhdCAodW5zaWduZWQgY2hh
ciosIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QpOw0KdW5zaWduZWQgY2hhciogX21ic3Rv
ayAodW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGNoYXIqKTsNCg0KDQppbnQgX3N0cm5jb2xsKGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsNCmludCBfc3Rybmljb2xsKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsNCg0KDQoNCg0KDQoNCg0Kd2NoYXJfdCogd2NzY2F0
ICh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCopOw0Kd2NoYXJfdCogd2NzY2hyIChjb25zdCB3Y2hh
cl90Kiwgd2NoYXJfdCk7DQppbnQgd2NzY21wIChjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJf
dCopOw0KaW50IHdjc2NvbGwgKGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7DQp3Y2hh
cl90KiB3Y3NjcHkgKHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7DQpzaXplX3Qgd2NzY3NwbiAo
Y29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqKTsNCg0Kc2l6ZV90IHdjc2xlbiAoY29uc3Qg
d2NoYXJfdCopOw0Kd2NoYXJfdCogd2NzbmNhdCAod2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCBz
aXplX3QpOw0KaW50IHdjc25jbXAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCBzaXpl
X3QpOw0Kd2NoYXJfdCogd2NzbmNweSh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7
DQp3Y2hhcl90KiB3Y3NwYnJrKGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7DQp3Y2hh
cl90KiB3Y3NyY2hyKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90KTsNCnNpemVfdCB3Y3NzcG4oY29u
c3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqKTsNCndjaGFyX3QqIHdjc3N0cihjb25zdCB3Y2hh
cl90KiwgY29uc3Qgd2NoYXJfdCopOw0Kd2NoYXJfdCogd2NzdG9rKHdjaGFyX3QqLCBjb25zdCB3
Y2hhcl90Kik7DQpzaXplX3Qgd2NzeGZybSh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVf
dCk7DQojIDEzNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zdHJpbmcuaCIgMw0Kd2NoYXJf
dCogX3djc2R1cCAod2NoYXJfdCopOw0KaW50IF93Y3NpY21wIChjb25zdCB3Y2hhcl90KiwgY29u
c3Qgd2NoYXJfdCopOw0KaW50IF93Y3NpY29sbCAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFy
X3QqKTsNCndjaGFyX3QqIF93Y3Nsd3IgKHdjaGFyX3QqKTsNCmludCBfd2NzbmljbXAgKGNvbnN0
IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kiwgc2l6ZV90KTsNCndjaGFyX3QqIF93Y3Nuc2V0ICh3
Y2hhcl90Kiwgd2NoYXJfdCwgc2l6ZV90KTsNCndjaGFyX3QqIF93Y3NyZXYgKHdjaGFyX3QqKTsN
CndjaGFyX3QqIF93Y3NzZXQgKHdjaGFyX3QqLCB3Y2hhcl90KTsNCndjaGFyX3QqIF93Y3N1cHIg
KHdjaGFyX3QqKTsNCg0KDQppbnQgX3djc25jb2xsKGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hh
cl90Kiwgc2l6ZV90KTsNCmludCBfd2Nzbmljb2xsKGNvbnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hh
cl90Kiwgc2l6ZV90KTsNCiMgMTY1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N0cmluZy5o
IiAzDQp2b2lkKiBtZW1jY3B5ICh2b2lkKiwgY29uc3Qgdm9pZCosIGludCwgc2l6ZV90KTsNCmlu
dCBtZW1pY21wIChjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7DQpjaGFyKiBzdHJk
dXAgKGNvbnN0IGNoYXIqKTsNCmludCBzdHJjbXBpIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciop
Ow0KaW50IHN0cmljbXAgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQppbnQgc3RyY2FzZWNt
cCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsNCmludCBzdHJpY29sbCAoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsNCmNoYXIqIHN0cmx3ciAoY2hhciopOw0KaW50IHN0cm5pY21wIChjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIHNpemVfdCk7DQppbnQgc3RybmNhc2VjbXAgKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsNCmNoYXIqIHN0cm5zZXQgKGNoYXIqLCBpbnQsIHNp
emVfdCk7DQpjaGFyKiBzdHJyZXYgKGNoYXIqKTsNCmNoYXIqIHN0cnNldCAoY2hhciosIGludCk7
DQpjaGFyKiBzdHJ1cHIgKGNoYXIqKTsNCg0Kdm9pZCBzd2FiIChjb25zdCBjaGFyKiwgY2hhcios
IHNpemVfdCk7DQoNCg0KDQppbnQgd2NzY21waSAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFy
X3QqKTsNCndjaGFyX3QqIHdjc2R1cCAod2NoYXJfdCopOw0KaW50IHdjc2ljbXAgKGNvbnN0IHdj
aGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7DQppbnQgd2NzaWNvbGwgKGNvbnN0IHdjaGFyX3QqLCBj
b25zdCB3Y2hhcl90Kik7DQp3Y2hhcl90KiB3Y3Nsd3IgKHdjaGFyX3QqKTsNCmludCB3Y3NuaWNt
cCAoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCBzaXplX3QpOw0Kd2NoYXJfdCogd2Nz
bnNldCAod2NoYXJfdCosIHdjaGFyX3QsIHNpemVfdCk7DQp3Y2hhcl90KiB3Y3NyZXYgKHdjaGFy
X3QqKTsNCndjaGFyX3QqIHdjc3NldCAod2NoYXJfdCosIHdjaGFyX3QpOw0Kd2NoYXJfdCogd2Nz
dXByICh3Y2hhcl90Kik7DQoNCg0KDQoNCg0KDQp9DQojIDM3ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL3djaGFyLmgiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3RpbWUu
aCIgMSAzDQojIDM2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3RpbWUuaCIgMw0KIyAxICJ0
Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4xL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMw0KIyAzNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS90aW1lLmgiIDIg
Mw0KDQoNCg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MSAzDQojIDM4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQojIDEg
InQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzDQojIDM5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMNCg0KDQoNCg0KDQp0eXBlZGVmIGxvbmcgdGltZV90Ow0KIyA1MyAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0KdHlwZWRlZiBsb25nIF9vZmZfdDsNCg0K
DQp0eXBlZGVmIF9vZmZfdCBvZmZfdDsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX2Rldl90Ow0KDQoNCg0KDQoNCnR5cGVkZWYgX2Rldl90IGRldl90Ow0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzaG9ydCBfaW5vX3Q7DQoNCg0KdHlwZWRlZiBfaW5vX3QgaW5vX3Q7DQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIGludCBfcGlkX3Q7DQoNCg0KdHlwZWRlZiBfcGlkX3QgcGlkX3Q7DQoNCg0K
DQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9tb2RlX3Q7DQoNCg0KdHlwZWRlZiBfbW9k
ZV90IG1vZGVfdDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgaW50IF9zaWdzZXRfdDsNCg0KDQp0eXBl
ZGVmIF9zaWdzZXRfdCBzaWdzZXRfdDsNCiMgNDMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
dGltZS5oIiAyIDMNCiMgNjggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvdGltZS5oIiAzDQp0
eXBlZGVmIGxvbmcgY2xvY2tfdDsNCiMgNzcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvdGlt
ZS5oIiAzDQpzdHJ1Y3QgdG0NCnsNCiAgICAgICAgaW50IHRtX3NlYzsNCiAgICAgICAgaW50IHRt
X21pbjsNCiAgICAgICAgaW50IHRtX2hvdXI7DQogICAgICAgIGludCB0bV9tZGF5Ow0KICAgICAg
ICBpbnQgdG1fbW9uOw0KICAgICAgICBpbnQgdG1feWVhcjsNCiAgICAgICAgaW50IHRtX3dkYXk7
DQogICAgICAgIGludCB0bV95ZGF5Ow0KICAgICAgICBpbnQgdG1faXNkc3Q7DQoNCn07DQoNCg0K
ZXh0ZXJuICJDIiB7DQoNCg0KY2xvY2tfdCBjbG9jayAodm9pZCk7DQp0aW1lX3QgdGltZSAodGlt
ZV90Kik7DQpkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCwgdGltZV90KTsNCnRpbWVfdCBta3RpbWUg
KHN0cnVjdCB0bSopOw0KIyAxMTAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvdGltZS5oIiAz
DQpjaGFyKiBhc2N0aW1lIChjb25zdCBzdHJ1Y3QgdG0qKTsNCmNoYXIqIGN0aW1lIChjb25zdCB0
aW1lX3QqKTsNCnN0cnVjdCB0bSogZ210aW1lIChjb25zdCB0aW1lX3QqKTsNCnN0cnVjdCB0bSog
bG9jYWx0aW1lIChjb25zdCB0aW1lX3QqKTsNCg0KDQpzaXplX3Qgc3RyZnRpbWUgKGNoYXIqLCBz
aXplX3QsIGNvbnN0IGNoYXIqLCBjb25zdCBzdHJ1Y3QgdG0qKTsNCg0Kc2l6ZV90IHdjc2Z0aW1l
ICh3Y2hhcl90Kiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90KiwgY29uc3Qgc3RydWN0IHRtKik7DQoN
Cg0KZXh0ZXJuIHZvaWQgX3R6c2V0ICh2b2lkKTsNCg0KDQpleHRlcm4gdm9pZCB0enNldCAodm9p
ZCk7DQoNCg0Kc2l6ZV90IHN0cmZ0aW1lKGNoYXIqLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBjb25z
dCBzdHJ1Y3QgdG0qKTsNCmNoYXIqIF9zdHJkYXRlKGNoYXIqKTsNCmNoYXIqIF9zdHJ0aW1lKGNo
YXIqKTsNCiMgMTQyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3RpbWUuaCIgMw0KZXh0ZXJu
IGludCogX19wX19kYXlsaWdodCAodm9pZCk7DQpleHRlcm4gbG9uZyogX19wX190aW1lem9uZSAo
dm9pZCk7DQpleHRlcm4gY2hhcioqIF9fcF9fdHpuYW1lICh2b2lkKTsNCg0KZXh0ZXJuIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGludCBfZGF5bGlnaHQ7DQpleHRlcm4gX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgbG9uZyBfdGltZXpvbmU7DQpleHRlcm4gX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgY2hhciAqX3R6bmFtZVsyXTsNCiMgMTgwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3RpbWUuaCIgMw0KZXh0ZXJuIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGludCBkYXls
aWdodDsNCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBsb25nIHRpbWV6b25lOw0K
ZXh0ZXJuIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGNoYXIgKnR6bmFtZVsyXTsNCg0KDQoN
Cg0KDQp3Y2hhcl90ICogX3dhc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSopOw0Kd2NoYXJfdCAqIF93
Y3RpbWUoY29uc3QgdGltZV90Kik7DQp3Y2hhcl90KiBfd3N0cmRhdGUod2NoYXJfdCopOw0Kd2No
YXJfdCogX3dzdHJ0aW1lKHdjaGFyX3QqKTsNCiMgMjEzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3RpbWUuaCIgMw0KfQ0KIyAzOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93Y2hhci5o
IiAyIDMNCg0KDQoNCg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvbGliL2djYy1saWIvaTY4
Ni1wYy1taW5ndzMyLzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMNCiMgNDUgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvd2NoYXIuaCIgMiAzDQojIDUzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3djaGFyLmgiIDMNCmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfZnNpemVfdDsNCg0KDQoNCg0Kc3RydWN0IF93ZmluZGRhdGFfdCB7DQogICAgICAgIHVu
c2lnbmVkIGF0dHJpYjsNCiAgICAgICAgdGltZV90IHRpbWVfY3JlYXRlOw0KICAgICAgICB0aW1l
X3QgdGltZV9hY2Nlc3M7DQogICAgICAgIHRpbWVfdCB0aW1lX3dyaXRlOw0KICAgICAgICBfZnNp
emVfdCBzaXplOw0KICAgICAgICB3Y2hhcl90IG5hbWVbKDI2MCldOw0KfTsNCnN0cnVjdCBfd2Zp
bmRkYXRhaTY0X3Qgew0KICAgIHVuc2lnbmVkIGF0dHJpYjsNCiAgICB0aW1lX3QgdGltZV9jcmVh
dGU7DQogICAgdGltZV90IHRpbWVfYWNjZXNzOw0KICAgIHRpbWVfdCB0aW1lX3dyaXRlOw0KICAg
IGxvbmcgbG9uZyBzaXplOw0KICAgIHdjaGFyX3QgbmFtZVsoMjYwKV07DQp9Ow0KIyA4OCAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93Y2hhci5oIiAzDQppbnQgX3dhY2Nlc3MoY29uc3Qgd2No
YXJfdCosIGludCk7DQppbnQgX3djaG1vZChjb25zdCB3Y2hhcl90KiwgaW50KTsNCmludCBfd2Ny
ZWF0KGNvbnN0IHdjaGFyX3QqLCBpbnQpOw0KbG9uZyBfd2ZpbmRmaXJzdCh3Y2hhcl90Kiwgc3Ry
dWN0IF93ZmluZGRhdGFfdCAqKTsNCmludCBfd2ZpbmRuZXh0KGxvbmcsIHN0cnVjdCBfd2ZpbmRk
YXRhX3QgKik7DQppbnQgX3d1bmxpbmsoY29uc3Qgd2NoYXJfdCopOw0KaW50IF93b3Blbihjb25z
dCB3Y2hhcl90KiwgaW50LCAuLi4pOw0KaW50IF93c29wZW4oY29uc3Qgd2NoYXJfdCosIGludCwg
aW50LCAuLi4pOw0Kd2NoYXJfdCAqIF93bWt0ZW1wKHdjaGFyX3QqKTsNCmxvbmcgX3dmaW5kZmly
c3RpNjQoY29uc3Qgd2NoYXJfdCosIHN0cnVjdCBfd2ZpbmRkYXRhaTY0X3QqKTsNCmludCBfd2Zp
bmRuZXh0aTY0KGxvbmcsIHN0cnVjdCBfd2ZpbmRkYXRhaTY0X3QqKTsNCiMgMTQ1ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL3djaGFyLmgiIDMNCmludCBfd2NoZGlyKGNvbnN0IHdjaGFyX3Qq
KTsNCndjaGFyX3QqIF93Z2V0Y3dkKHdjaGFyX3QqLCBpbnQpOw0Kd2NoYXJfdCogX3dnZXRkY3dk
KGludCwgd2NoYXJfdCosIGludCk7DQppbnQgX3dta2Rpcihjb25zdCB3Y2hhcl90Kik7DQppbnQg
X3dybWRpcihjb25zdCB3Y2hhcl90Kik7DQojIDE2MiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS93Y2hhci5oIiAzDQpzdHJ1Y3QgX3N0YXQNCnsNCiAgICAgICAgX2Rldl90IHN0X2RldjsNCiAg
ICAgICAgX2lub190IHN0X2lubzsNCiAgICAgICAgX21vZGVfdCBzdF9tb2RlOw0KICAgICAgICBz
aG9ydCBzdF9ubGluazsNCiAgICAgICAgc2hvcnQgc3RfdWlkOw0KICAgICAgICBzaG9ydCBzdF9n
aWQ7DQogICAgICAgIF9kZXZfdCBzdF9yZGV2Ow0KICAgICAgICBfb2ZmX3Qgc3Rfc2l6ZTsNCiAg
ICAgICAgdGltZV90IHN0X2F0aW1lOw0KDQogICAgICAgIHRpbWVfdCBzdF9tdGltZTsNCiAgICAg
ICAgdGltZV90IHN0X2N0aW1lOw0KfTsNCg0Kc3RydWN0IHN0YXQNCnsNCiAgICAgICAgX2Rldl90
IHN0X2RldjsNCiAgICAgICAgX2lub190IHN0X2lubzsNCiAgICAgICAgX21vZGVfdCBzdF9tb2Rl
Ow0KICAgICAgICBzaG9ydCBzdF9ubGluazsNCiAgICAgICAgc2hvcnQgc3RfdWlkOw0KICAgICAg
ICBzaG9ydCBzdF9naWQ7DQogICAgICAgIF9kZXZfdCBzdF9yZGV2Ow0KICAgICAgICBfb2ZmX3Qg
c3Rfc2l6ZTsNCiAgICAgICAgdGltZV90IHN0X2F0aW1lOw0KDQogICAgICAgIHRpbWVfdCBzdF9t
dGltZTsNCiAgICAgICAgdGltZV90IHN0X2N0aW1lOw0KfTsNCg0Kc3RydWN0IF9zdGF0aTY0IHsN
CiAgICBfZGV2X3Qgc3RfZGV2Ow0KICAgIF9pbm9fdCBzdF9pbm87DQogICAgdW5zaWduZWQgc2hv
cnQgc3RfbW9kZTsNCiAgICBzaG9ydCBzdF9ubGluazsNCiAgICBzaG9ydCBzdF91aWQ7DQogICAg
c2hvcnQgc3RfZ2lkOw0KICAgIF9kZXZfdCBzdF9yZGV2Ow0KICAgIGxvbmcgbG9uZyBzdF9zaXpl
Ow0KICAgIHRpbWVfdCBzdF9hdGltZTsNCiAgICB0aW1lX3Qgc3RfbXRpbWU7DQogICAgdGltZV90
IHN0X2N0aW1lOw0KICAgIH07DQoNCg0KDQoNCg0KDQoNCmludCBfd3N0YXQoY29uc3Qgd2NoYXJf
dCosIHN0cnVjdCBfc3RhdCopOw0KaW50IF93c3RhdGk2NCAoY29uc3Qgd2NoYXJfdCosIHN0cnVj
dCBfc3RhdGk2NCopOw0KIyAyMzMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2NoYXIuaCIg
Mw0Kd2NoYXJfdCogX3dzZXRsb2NhbGUoaW50LCBjb25zdCB3Y2hhcl90Kik7DQojIDI2MiAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93Y2hhci5oIiAzDQp0eXBlZGVmIGludCBtYnN0YXRlX3Q7
DQp0eXBlZGVmIHdjaGFyX3QgX1dpbnRfdDsNCg0Kd2ludF90IGJ0b3djKGludCk7DQpzaXplX3Qg
bWJybGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7DQpzaXplX3QgbWJydG93
Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7DQpzaXplX3Qg
bWJzcnRvd2NzKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7
DQoNCnNpemVfdCB3Y3J0b21iKGNoYXIgKiwgd2NoYXJfdCwgbWJzdGF0ZV90ICopOw0Kc2l6ZV90
IHdjc3J0b21icyhjaGFyICosIGNvbnN0IHdjaGFyX3QgKiosIHNpemVfdCwgbWJzdGF0ZV90ICop
Ow0KaW50IHdjdG9iKHdpbnRfdCk7DQoNCg0KfQ0KIyAyODEgIi4uLy4uL2luY2x1ZGUvd3gvd3hj
aGFyLmgiIDINCiMgNTE0ICIuLi8uLi9pbmNsdWRlL3d4L3d4Y2hhci5oIg0KX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgaW5saW5lIGJvb2wgd3hJc0VtcHR5KGNvbnN0IGNoYXIgKnApIHsgcmV0
dXJuICFwIHx8ICEqcDsgfQ0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgaW5saW5l
IHNpemVfdCB3eFN0cmxlbihjb25zdCBjaGFyICpwc3opDQogICB7IHJldHVybiBwc3ogPyBzdHJs
ZW4ocHN6KSA6IDA7IH0NCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgc2l6ZV90
IHd4TUIyV0Mod2NoYXJfdCAqYnVmLCBjb25zdCBjaGFyICpwc3osIHNpemVfdCBuKTsNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHNpemVfdCB3eFdDMk1CKGNoYXIgKmJ1ZiwgY29uc3Qgd2No
YXJfdCAqcHN6LCBzaXplX3Qgbik7DQojIDU0NyAiLi4vLi4vaW5jbHVkZS93eC93eGNoYXIuaCIN
Cl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hPS2xpYmMoKTsNCiMgMTggIi4uLy4u
L2luY2x1ZGUvd3gvZGVidWcuaCIgMg0KIyA0NyAiLi4vLi4vaW5jbHVkZS93eC9kZWJ1Zy5oIg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGJvb2wgd3hUcnVlOw0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGJvb2wgd3hGYWxzZTsNCiMgNjAg
Ii4uLy4uL2luY2x1ZGUvd3gvZGVidWcuaCINCiAgdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB3eE9uQXNzZXJ0KGNvbnN0IGNoYXIgKnN6RmlsZSwgaW50IG5MaW5lLCBjb25zdCBjaGFy
ICpzek1zZyA9IChjb25zdCBjaGFyICopIF9fbnVsbCk7DQojIDQ2OSAiLi4vLi4vaW5jbHVkZS93
eC9kZWZzLmgiIDINCiMgNTM3ICIuLi8uLi9pbmNsdWRlL3d4L2RlZnMuaCINCnR5cGVkZWYgdm9p
ZCAoKnd4RnVuY3Rpb24pICh3eE9iamVjdCYsIHd4RXZlbnQmKTsNCg0KDQoNCg0KDQoNCmVudW0N
CnsNCiAgICB3eFVOS05PV05fUExBVEZPUk0sDQogICAgd3hDVVJTRVMsDQogICAgd3hYVklFV19Y
LA0KICAgIHd4TU9USUZfWCwNCiAgICB3eENPU0VfWCwNCiAgICB3eE5FWFRTVEVQLA0KICAgIHd4
TUFDSU5UT1NILA0KICAgIHd4QkVPUywNCiAgICB3eEdUSywNCiAgICB3eEdUS19XSU4zMiwNCiAg
ICB3eEdUS19PUzIsDQogICAgd3hHVEtfQkVPUywNCiAgICB3eFFULA0KICAgIHd4R0VPUywNCiAg
ICB3eE9TMl9QTSwNCiAgICB3eFdJTkRPV1MsDQogICAgd3hQRU5XSU5ET1dTLA0KICAgIHd4V0lO
RE9XU19OVCwNCiAgICB3eFdJTjMyUywNCiAgICB3eFdJTjk1LA0KICAgIHd4V0lOMzg2LA0KICAg
IHd4TUdMX1VOSVgsDQogICAgd3hNR0xfWCwNCiAgICB3eE1HTF9XSU4zMiwNCiAgICB3eE1HTF9P
UzIsDQogICAgd3hXSU5ET1dTX09TMiwNCiAgICB3eFVOSVgNCn07DQojIDU5MSAiLi4vLi4vaW5j
bHVkZS93eC9kZWZzLmgiDQogICAgICAgIHR5cGVkZWYgaW50IHd4Q29vcmQ7DQojIDY1MiAiLi4v
Li4vaW5jbHVkZS93eC9kZWZzLmgiDQp0eXBlZGVmIGZsb2F0IHd4RmxvYXQzMiA7DQoNCg0KDQog
ICAgdHlwZWRlZiBkb3VibGUgd3hGbG9hdDY0Ow0KDQoNCg0KDQoNCiAgICB0eXBlZGVmIGRvdWJs
ZSB3eERvdWJsZSA7DQojIDc2MyAiLi4vLi4vaW5jbHVkZS93eC9kZWZzLmgiDQplbnVtIHd4R2Vv
bWV0cnlDZW50cmUNCnsNCiAgICB3eENFTlRSRSA9IDB4MDAwMSwNCiAgICB3eENFTlRFUiA9IHd4
Q0VOVFJFDQp9Ow0KDQoNCg0KDQoNCg0KDQplbnVtIHd4T3JpZW50YXRpb24NCnsNCiAgICB3eEhP
UklaT05UQUwgPSAweDAwMDQsDQogICAgd3hWRVJUSUNBTCA9IDB4MDAwOCwNCg0KICAgIHd4Qk9U
SCA9ICh3eFZFUlRJQ0FMIHwgd3hIT1JJWk9OVEFMKQ0KfTsNCg0KZW51bSB3eERpcmVjdGlvbg0K
ew0KICAgIHd4TEVGVCA9IDB4MDAxMCwNCiAgICB3eFJJR0hUID0gMHgwMDIwLA0KICAgIHd4VVAg
PSAweDAwNDAsDQogICAgd3hET1dOID0gMHgwMDgwLA0KDQogICAgd3hUT1AgPSB3eFVQLA0KICAg
IHd4Qk9UVE9NID0gd3hET1dOLA0KDQogICAgd3hOT1JUSCA9IHd4VVAsDQogICAgd3hTT1VUSCA9
IHd4RE9XTiwNCiAgICB3eFdFU1QgPSB3eExFRlQsDQogICAgd3hFQVNUID0gd3hSSUdIVCwNCg0K
ICAgIHd4QUxMID0gKHd4VVAgfCB3eERPV04gfCB3eFJJR0hUIHwgd3hMRUZUKQ0KfTsNCg0KZW51
bSB3eEFsaWdubWVudA0Kew0KICAgIHd4QUxJR05fTk9UID0gMHgwMDAwLA0KICAgIHd4QUxJR05f
Q0VOVEVSX0hPUklaT05UQUwgPSAweDAxMDAsDQogICAgd3hBTElHTl9DRU5UUkVfSE9SSVpPTlRB
TCA9IHd4QUxJR05fQ0VOVEVSX0hPUklaT05UQUwsDQogICAgd3hBTElHTl9MRUZUID0gd3hBTElH
Tl9OT1QsDQogICAgd3hBTElHTl9UT1AgPSB3eEFMSUdOX05PVCwNCiAgICB3eEFMSUdOX1JJR0hU
ID0gMHgwMjAwLA0KICAgIHd4QUxJR05fQk9UVE9NID0gMHgwNDAwLA0KICAgIHd4QUxJR05fQ0VO
VEVSX1ZFUlRJQ0FMID0gMHgwODAwLA0KICAgIHd4QUxJR05fQ0VOVFJFX1ZFUlRJQ0FMID0gd3hB
TElHTl9DRU5URVJfVkVSVElDQUwsDQoNCiAgICB3eEFMSUdOX0NFTlRFUiA9ICh3eEFMSUdOX0NF
TlRFUl9IT1JJWk9OVEFMIHwgd3hBTElHTl9DRU5URVJfVkVSVElDQUwpLA0KICAgIHd4QUxJR05f
Q0VOVFJFID0gd3hBTElHTl9DRU5URVINCn07DQoNCmVudW0gd3hTdHJldGNoDQp7DQogICAgd3hT
VFJFVENIX05PVCA9IDB4MDAwMCwNCiAgICB3eFNIUklOSyA9IDB4MTAwMCwNCiAgICB3eEdST1cg
PSAweDIwMDAsDQogICAgd3hFWFBBTkQgPSB3eEdST1csDQogICAgd3hTSEFQRUQgPSAweDQwMDAN
Cn07DQojIDEzMzcgIi4uLy4uL2luY2x1ZGUvd3gvZGVmcy5oIg0KZW51bSB7DQoNCiAgd3hERUZB
VUxUID0gNzAsDQogIHd4REVDT1JBVElWRSwNCiAgd3hST01BTiwNCiAgd3hTQ1JJUFQsDQogIHd4
U1dJU1MsDQogIHd4TU9ERVJOLA0KICB3eFRFTEVUWVBFLA0KDQoNCiAgd3hWQVJJQUJMRSA9IDgw
LA0KICB3eEZJWEVELA0KDQogIHd4Tk9STUFMID0gOTAsDQogIHd4TElHSFQsDQogIHd4Qk9MRCwN
Cg0KICB3eElUQUxJQywNCiAgd3hTTEFOVCwNCg0KDQogIHd4U09MSUQgPSAxMDAsDQogIHd4RE9U
LA0KICB3eExPTkdfREFTSCwNCiAgd3hTSE9SVF9EQVNILA0KICB3eERPVF9EQVNILA0KICB3eFVT
RVJfREFTSCwNCg0KICB3eFRSQU5TUEFSRU5ULA0KDQoNCg0KICB3eFNUSVBQTEVfTUFTS19PUEFR
VUUsDQogIHd4U1RJUFBMRV9NQVNLLA0KDQogIHd4U1RJUFBMRSA9IDExMCwNCiAgd3hCRElBR09O
QUxfSEFUQ0gsDQogIHd4Q1JPU1NESUFHX0hBVENILA0KICB3eEZESUFHT05BTF9IQVRDSCwNCiAg
d3hDUk9TU19IQVRDSCwNCiAgd3hIT1JJWk9OVEFMX0hBVENILA0KICB3eFZFUlRJQ0FMX0hBVENI
LA0KDQoNCiAgd3hKT0lOX0JFVkVMID0gMTIwLA0KICB3eEpPSU5fTUlURVIsDQogIHd4Sk9JTl9S
T1VORCwNCg0KICB3eENBUF9ST1VORCA9IDEzMCwNCiAgd3hDQVBfUFJPSkVDVElORywNCiAgd3hD
QVBfQlVUVA0KfTsNCg0KDQoNCnR5cGVkZWYgZW51bQ0Kew0KICB3eENMRUFSLCB3eFJPUF9CTEFD
SyA9IHd4Q0xFQVIsIHd4QkxJVF9CTEFDS05FU1MgPSB3eENMRUFSLA0KICB3eFhPUiwgd3hST1Bf
WE9SUEVOID0gd3hYT1IsIHd4QkxJVF9TUkNJTlZFUlQgPSB3eFhPUiwNCiAgd3hJTlZFUlQsIHd4
Uk9QX05PVCA9IHd4SU5WRVJULCB3eEJMSVRfRFNUSU5WRVJUID0gd3hJTlZFUlQsDQogIHd4T1Jf
UkVWRVJTRSwgd3hST1BfTUVSR0VQRU5OT1QgPSB3eE9SX1JFVkVSU0UsIHd4QkxJVF8wMEREMDIy
OCA9IHd4T1JfUkVWRVJTRSwNCiAgd3hBTkRfUkVWRVJTRSwgd3hST1BfTUFTS1BFTk5PVCA9IHd4
QU5EX1JFVkVSU0UsIHd4QkxJVF9TUkNFUkFTRSA9IHd4QU5EX1JFVkVSU0UsDQogIHd4Q09QWSwg
d3hST1BfQ09QWVBFTiA9IHd4Q09QWSwgd3hCTElUX1NSQ0NPUFkgPSB3eENPUFksDQogIHd4QU5E
LCB3eFJPUF9NQVNLUEVOID0gd3hBTkQsIHd4QkxJVF9TUkNBTkQgPSB3eEFORCwNCiAgd3hBTkRf
SU5WRVJULCB3eFJPUF9NQVNLTk9UUEVOID0gd3hBTkRfSU5WRVJULCB3eEJMSVRfMDAyMjAzMjYg
PSB3eEFORF9JTlZFUlQsDQogIHd4Tk9fT1AsIHd4Uk9QX05PUCA9IHd4Tk9fT1AsIHd4QkxJVF8w
MEFBMDAyOSA9IHd4Tk9fT1AsDQogIHd4Tk9SLCB3eFJPUF9OT1RNRVJHRVBFTiA9IHd4Tk9SLCB3
eEJMSVRfTk9UU1JDRVJBU0UgPSB3eE5PUiwNCiAgd3hFUVVJViwgd3hST1BfTk9UWE9SUEVOID0g
d3hFUVVJViwgd3hCTElUXzAwOTkwMDY2ID0gd3hFUVVJViwNCiAgd3hTUkNfSU5WRVJULCB3eFJP
UF9OT1RDT1BZUEVOID0gd3hTUkNfSU5WRVJULCB3eEJMSVRfTk9UU0NSQ09QWSA9IHd4U1JDX0lO
VkVSVCwNCiAgd3hPUl9JTlZFUlQsIHd4Uk9QX01FUkdFTk9UUEVOID0gd3hPUl9JTlZFUlQsIHd4
QkxJVF9NRVJHRVBBSU5UID0gd3hPUl9JTlZFUlQsDQogIHd4TkFORCwgd3hST1BfTk9UTUFTS1BF
TiA9IHd4TkFORCwgd3hCTElUXzAwNzcwMEU2ID0gd3hOQU5ELA0KICB3eE9SLCB3eFJPUF9NRVJH
RVBFTiA9IHd4T1IsIHd4QkxJVF9TUkNQQUlOVCA9IHd4T1IsDQogIHd4U0VULCB3eFJPUF9XSElU
RSA9IHd4U0VULCB3eEJMSVRfV0hJVEVORVNTID0gd3hTRVQNCn0gZm9ybV9vcHNfdDsNCiMgMTQy
OSAiLi4vLi4vaW5jbHVkZS93eC9kZWZzLmgiDQplbnVtIHd4RGF0YUZvcm1hdElkDQp7DQogICAg
d3hERl9JTlZBTElEID0gMCwNCiAgICB3eERGX1RFWFQgPSAxLA0KICAgIHd4REZfQklUTUFQID0g
MiwNCiAgICB3eERGX01FVEFGSUxFID0gMywNCiAgICB3eERGX1NZTEsgPSA0LA0KICAgIHd4REZf
RElGID0gNSwNCiAgICB3eERGX1RJRkYgPSA2LA0KICAgIHd4REZfT0VNVEVYVCA9IDcsDQogICAg
d3hERl9ESUIgPSA4LA0KICAgIHd4REZfUEFMRVRURSA9IDksDQogICAgd3hERl9QRU5EQVRBID0g
MTAsDQogICAgd3hERl9SSUZGID0gMTEsDQogICAgd3hERl9XQVZFID0gMTIsDQogICAgd3hERl9V
TklDT0RFVEVYVCA9IDEzLA0KICAgIHd4REZfRU5ITUVUQUZJTEUgPSAxNCwNCiAgICB3eERGX0ZJ
TEVOQU1FID0gMTUsDQogICAgd3hERl9MT0NBTEUgPSAxNiwNCiAgICB3eERGX1BSSVZBVEUgPSAy
MCwNCiAgICB3eERGX01BWA0KfTsNCg0KDQoNCmVudW0gd3hLZXlDb2RlDQp7DQogIFdYS19CQUNL
ID0gOCwNCiAgV1hLX1RBQiA9IDksDQogIFdYS19SRVRVUk4gPSAxMywNCiAgV1hLX0VTQ0FQRSA9
IDI3LA0KICBXWEtfU1BBQ0UgPSAzMiwNCiAgV1hLX0RFTEVURSA9IDEyNywNCg0KICBXWEtfU1RB
UlQgPSAzMDAsDQogIFdYS19MQlVUVE9OLA0KICBXWEtfUkJVVFRPTiwNCiAgV1hLX0NBTkNFTCwN
CiAgV1hLX01CVVRUT04sDQogIFdYS19DTEVBUiwNCiAgV1hLX1NISUZULA0KICBXWEtfQUxULA0K
ICBXWEtfQ09OVFJPTCwNCiAgV1hLX01FTlUsDQogIFdYS19QQVVTRSwNCiAgV1hLX0NBUElUQUws
DQogIFdYS19QUklPUiwNCiAgV1hLX05FWFQsDQogIFdYS19FTkQsDQogIFdYS19IT01FLA0KICBX
WEtfTEVGVCwNCiAgV1hLX1VQLA0KICBXWEtfUklHSFQsDQogIFdYS19ET1dOLA0KICBXWEtfU0VM
RUNULA0KICBXWEtfUFJJTlQsDQogIFdYS19FWEVDVVRFLA0KICBXWEtfU05BUFNIT1QsDQogIFdY
S19JTlNFUlQsDQogIFdYS19IRUxQLA0KICBXWEtfTlVNUEFEMCwNCiAgV1hLX05VTVBBRDEsDQog
IFdYS19OVU1QQUQyLA0KICBXWEtfTlVNUEFEMywNCiAgV1hLX05VTVBBRDQsDQogIFdYS19OVU1Q
QUQ1LA0KICBXWEtfTlVNUEFENiwNCiAgV1hLX05VTVBBRDcsDQogIFdYS19OVU1QQUQ4LA0KICBX
WEtfTlVNUEFEOSwNCiAgV1hLX01VTFRJUExZLA0KICBXWEtfQURELA0KICBXWEtfU0VQQVJBVE9S
LA0KICBXWEtfU1VCVFJBQ1QsDQogIFdYS19ERUNJTUFMLA0KICBXWEtfRElWSURFLA0KICBXWEtf
RjEsDQogIFdYS19GMiwNCiAgV1hLX0YzLA0KICBXWEtfRjQsDQogIFdYS19GNSwNCiAgV1hLX0Y2
LA0KICBXWEtfRjcsDQogIFdYS19GOCwNCiAgV1hLX0Y5LA0KICBXWEtfRjEwLA0KICBXWEtfRjEx
LA0KICBXWEtfRjEyLA0KICBXWEtfRjEzLA0KICBXWEtfRjE0LA0KICBXWEtfRjE1LA0KICBXWEtf
RjE2LA0KICBXWEtfRjE3LA0KICBXWEtfRjE4LA0KICBXWEtfRjE5LA0KICBXWEtfRjIwLA0KICBX
WEtfRjIxLA0KICBXWEtfRjIyLA0KICBXWEtfRjIzLA0KICBXWEtfRjI0LA0KICBXWEtfTlVNTE9D
SywNCiAgV1hLX1NDUk9MTCwNCiAgV1hLX1BBR0VVUCwNCiAgV1hLX1BBR0VET1dOLA0KDQogIFdY
S19OVU1QQURfU1BBQ0UsDQogIFdYS19OVU1QQURfVEFCLA0KICBXWEtfTlVNUEFEX0VOVEVSLA0K
ICBXWEtfTlVNUEFEX0YxLA0KICBXWEtfTlVNUEFEX0YyLA0KICBXWEtfTlVNUEFEX0YzLA0KICBX
WEtfTlVNUEFEX0Y0LA0KICBXWEtfTlVNUEFEX0hPTUUsDQogIFdYS19OVU1QQURfTEVGVCwNCiAg
V1hLX05VTVBBRF9VUCwNCiAgV1hLX05VTVBBRF9SSUdIVCwNCiAgV1hLX05VTVBBRF9ET1dOLA0K
ICBXWEtfTlVNUEFEX1BSSU9SLA0KICBXWEtfTlVNUEFEX1BBR0VVUCwNCiAgV1hLX05VTVBBRF9O
RVhULA0KICBXWEtfTlVNUEFEX1BBR0VET1dOLA0KICBXWEtfTlVNUEFEX0VORCwNCiAgV1hLX05V
TVBBRF9CRUdJTiwNCiAgV1hLX05VTVBBRF9JTlNFUlQsDQogIFdYS19OVU1QQURfREVMRVRFLA0K
ICBXWEtfTlVNUEFEX0VRVUFMLA0KICBXWEtfTlVNUEFEX01VTFRJUExZLA0KICBXWEtfTlVNUEFE
X0FERCwNCiAgV1hLX05VTVBBRF9TRVBBUkFUT1IsDQogIFdYS19OVU1QQURfU1VCVFJBQ1QsDQog
IFdYS19OVU1QQURfREVDSU1BTCwNCiAgV1hLX05VTVBBRF9ESVZJREUNCn07DQojIDE1ODAgIi4u
Ly4uL2luY2x1ZGUvd3gvZGVmcy5oIg0KdHlwZWRlZiBlbnVtIHsNCiAgICB3eFBBUEVSX05PTkUs
DQogICAgd3hQQVBFUl9MRVRURVIsDQogICAgd3hQQVBFUl9MRUdBTCwNCiAgICB3eFBBUEVSX0E0
LA0KICAgIHd4UEFQRVJfQ1NIRUVULA0KICAgIHd4UEFQRVJfRFNIRUVULA0KICAgIHd4UEFQRVJf
RVNIRUVULA0KICAgIHd4UEFQRVJfTEVUVEVSU01BTEwsDQogICAgd3hQQVBFUl9UQUJMT0lELA0K
ICAgIHd4UEFQRVJfTEVER0VSLA0KICAgIHd4UEFQRVJfU1RBVEVNRU5ULA0KICAgIHd4UEFQRVJf
RVhFQ1VUSVZFLA0KICAgIHd4UEFQRVJfQTMsDQogICAgd3hQQVBFUl9BNFNNQUxMLA0KICAgIHd4
UEFQRVJfQTUsDQogICAgd3hQQVBFUl9CNCwNCiAgICB3eFBBUEVSX0I1LA0KICAgIHd4UEFQRVJf
Rk9MSU8sDQogICAgd3hQQVBFUl9RVUFSVE8sDQogICAgd3hQQVBFUl8xMFgxNCwNCiAgICB3eFBB
UEVSXzExWDE3LA0KICAgIHd4UEFQRVJfTk9URSwNCiAgICB3eFBBUEVSX0VOVl85LA0KICAgIHd4
UEFQRVJfRU5WXzEwLA0KICAgIHd4UEFQRVJfRU5WXzExLA0KICAgIHd4UEFQRVJfRU5WXzEyLA0K
ICAgIHd4UEFQRVJfRU5WXzE0LA0KICAgIHd4UEFQRVJfRU5WX0RMLA0KICAgIHd4UEFQRVJfRU5W
X0M1LA0KICAgIHd4UEFQRVJfRU5WX0MzLA0KICAgIHd4UEFQRVJfRU5WX0M0LA0KICAgIHd4UEFQ
RVJfRU5WX0M2LA0KICAgIHd4UEFQRVJfRU5WX0M2NSwNCiAgICB3eFBBUEVSX0VOVl9CNCwNCiAg
ICB3eFBBUEVSX0VOVl9CNSwNCiAgICB3eFBBUEVSX0VOVl9CNiwNCiAgICB3eFBBUEVSX0VOVl9J
VEFMWSwNCiAgICB3eFBBUEVSX0VOVl9NT05BUkNILA0KICAgIHd4UEFQRVJfRU5WX1BFUlNPTkFM
LA0KICAgIHd4UEFQRVJfRkFORk9MRF9VUywNCiAgICB3eFBBUEVSX0ZBTkZPTERfU1REX0dFUk1B
TiwNCiAgICB3eFBBUEVSX0ZBTkZPTERfTEdMX0dFUk1BTiwNCg0KICAgIHd4UEFQRVJfSVNPX0I0
LA0KICAgIHd4UEFQRVJfSkFQQU5FU0VfUE9TVENBUkQsDQogICAgd3hQQVBFUl85WDExLA0KICAg
IHd4UEFQRVJfMTBYMTEsDQogICAgd3hQQVBFUl8xNVgxMSwNCiAgICB3eFBBUEVSX0VOVl9JTlZJ
VEUsDQogICAgd3hQQVBFUl9MRVRURVJfRVhUUkEsDQogICAgd3hQQVBFUl9MRUdBTF9FWFRSQSwN
CiAgICB3eFBBUEVSX1RBQkxPSURfRVhUUkEsDQogICAgd3hQQVBFUl9BNF9FWFRSQSwNCiAgICB3
eFBBUEVSX0xFVFRFUl9UUkFOU1ZFUlNFLA0KICAgIHd4UEFQRVJfQTRfVFJBTlNWRVJTRSwNCiAg
ICB3eFBBUEVSX0xFVFRFUl9FWFRSQV9UUkFOU1ZFUlNFLA0KICAgIHd4UEFQRVJfQV9QTFVTLA0K
ICAgIHd4UEFQRVJfQl9QTFVTLA0KICAgIHd4UEFQRVJfTEVUVEVSX1BMVVMsDQogICAgd3hQQVBF
Ul9BNF9QTFVTLA0KICAgIHd4UEFQRVJfQTVfVFJBTlNWRVJTRSwNCiAgICB3eFBBUEVSX0I1X1RS
QU5TVkVSU0UsDQogICAgd3hQQVBFUl9BM19FWFRSQSwNCiAgICB3eFBBUEVSX0E1X0VYVFJBLA0K
ICAgIHd4UEFQRVJfQjVfRVhUUkEsDQogICAgd3hQQVBFUl9BMiwNCiAgICB3eFBBUEVSX0EzX1RS
QU5TVkVSU0UsDQogICAgd3hQQVBFUl9BM19FWFRSQV9UUkFOU1ZFUlNFDQoNCn0gd3hQYXBlclNp
emUgOw0KIyAxNjYxICIuLi8uLi9pbmNsdWRlL3d4L2RlZnMuaCINCnR5cGVkZWYgZW51bSB7DQog
ICAgd3hEVVBMRVhfU0lNUExFWCwNCiAgICB3eERVUExFWF9IT1JJWk9OVEFMLA0KICAgIHd4RFVQ
TEVYX1ZFUlRJQ0FMDQp9IHd4RHVwbGV4TW9kZTsNCiMgMTY3NSAiLi4vLi4vaW5jbHVkZS93eC9k
ZWZzLmgiDQp0eXBlZGVmIGludCB3eFByaW50UXVhbGl0eTsNCg0KDQoNCg0KdHlwZWRlZiBlbnVt
IHsNCiAgICB3eFBSSU5UX01PREVfTk9ORSA9IDAsDQogICAgd3hQUklOVF9NT0RFX1BSRVZJRVcg
PSAxLA0KICAgIHd4UFJJTlRfTU9ERV9GSUxFID0gMiwNCiAgICB3eFBSSU5UX01PREVfUFJJTlRF
UiA9IDMNCn0gd3hQcmludE1vZGU7DQojIDE3NTcgIi4uLy4uL2luY2x1ZGUvd3gvZGVmcy5oIg0K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFdYSFdORDsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBXWEhB
TkRMRTsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBXWEhJQ09OOw0KdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFdYSEZPTlQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV1hITUVOVTsNCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBXWEhQRU47DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV1hIQlJVU0g7DQp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgV1hIUEFMRVRURTsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBXWEhD
VVJTT1I7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV1hIUkdOOw0KdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFdYSEFDQ0VMOw0KdHlwZWRlZiB2b2lkICogV1hISU5TVEFOQ0U7DQp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgV1hIQklUTUFQOw0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdYSElNQUdFTElTVDsN
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBXWEhHTE9CQUw7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
V1hIREM7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBXWFVJTlQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgV1hEV09SRDsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgV1hXT1JEOw0KIyAxNzg0ICIuLi8u
Li9pbmNsdWRlL3d4L2RlZnMuaCINCnR5cGVkZWYgdW5zaWduZWQgaW50IFdYV1BBUkFNOw0KdHlw
ZWRlZiBsb25nIFdYTFBBUkFNOw0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV1hDT0xPUlJFRjsN
CnR5cGVkZWYgdm9pZCAqIFdYUkdOREFUQTsNCnR5cGVkZWYgdm9pZCAqIFdYTVNHOw0KdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFdYSENPTlY7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV1hIS0VZOw0K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFdYSFRSRUVJVEVNOw0KDQp0eXBlZGVmIHZvaWQgKiBXWERS
QVdJVEVNU1RSVUNUOw0KdHlwZWRlZiB2b2lkICogV1hNRUFTVVJFSVRFTVNUUlVDVDsNCnR5cGVk
ZWYgdm9pZCAqIFdYTFBDUkVBVEVTVFJVQ1Q7DQojIDE4NDYgIi4uLy4uL2luY2x1ZGUvd3gvZGVm
cy5oIg0KICAgIHR5cGVkZWYgaW50ICgqV1hGQVJQUk9DKSgpOw0KIyAxODYwICIuLi8uLi9pbmNs
dWRlL3d4L2RlZnMuaCINCnR5cGVkZWYgV1hIV05EIFdYV2lkZ2V0Ow0KIyAxNCAiLi4vLi4vaW5j
bHVkZS93eC93eHByZWMuaCIgMg0KIyA4ICJtaW5pbWFsMi5jcHAiIDINCiMgMTYgIm1pbmltYWwy
LmNwcCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRl
L3d4L3d4LmgiDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvb2JqZWN0LmgiIDENCiMgMTYgIi4uLy4u
L2luY2x1ZGUvd3gvb2JqZWN0LmgiDQojcHJhZ21hIGludGVyZmFjZSAib2JqZWN0LmgiDQoNCg0K
DQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbWVtb3J5LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUv
d3gvbWVtb3J5LmgiDQojcHJhZ21hIGludGVyZmFjZSAibWVtb3J5LmgiDQoNCg0KDQojIDEgIi4u
Ly4uL2luY2x1ZGUvd3gvc3RyaW5nLmgiIDENCiMgMjIgIi4uLy4uL2luY2x1ZGUvd3gvc3RyaW5n
LmgiDQojcHJhZ21hIGludGVyZmFjZSAic3RyaW5nLmgiDQojIDU5ICIuLi8uLi9pbmNsdWRlL3d4
L3N0cmluZy5oIg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1p
bmd3MzIvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMw0KIyA0MyAidDovbXN5cy8xLjAvbWluZ3cv
bGliL2djYy1saWIvaTY4Ni1wYy1taW5ndzMyLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzDQp0eXBl
ZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0Ow0KIyA2MCAiLi4vLi4vaW5jbHVk
ZS93eC9zdHJpbmcuaCIgMg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2
LXBjLW1pbmd3MzIvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMw0KIyAxMSAidDovbXN5cy8xLjAv
bWluZ3cvbGliL2djYy1saWIvaTY4Ni1wYy1taW5ndzMyLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAz
DQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEv
aW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzDQoNCg0KDQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21p
bmd3L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9saW1pdHMuaCIgMSAz
DQojIDEzMiAidDovbXN5cy8xLjAvbWluZ3cvbGliL2djYy1saWIvaTY4Ni1wYy1taW5ndzMyLzMu
MS9pbmNsdWRlL2xpbWl0cy5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvbGlt
aXRzLmgiIDEgMw0KIyAxMzMgInQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2ODYtcGMt
bWluZ3czMi8zLjEvaW5jbHVkZS9saW1pdHMuaCIgMiAzDQojIDggInQ6L21zeXMvMS4wL21pbmd3
L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAz
DQojIDEyICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4x
L2luY2x1ZGUvbGltaXRzLmgiIDIgMw0KIyA2MSAiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCIg
Mg0KIyA3MCAiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93
eC9idWZmZXIuaCIgMQ0KIyAyNiAiLi4vLi4vaW5jbHVkZS93eC9idWZmZXIuaCINCmNsYXNzIHd4
Q2hhckJ1ZmZlcg0Kew0KcHVibGljOg0KICAgIHd4Q2hhckJ1ZmZlcihjb25zdCBjaGFyICpzdHIp
DQogICAgew0KICAgICAgICBpZiAoICEoc3RyKSApIHd4T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUv
d3gvYnVmZmVyLmgiLCAzMSwgIk5VTEwgc3RyaW5nIGluIHd4Q2hhckJ1ZmZlciIpOw0KDQogICAg
ICAgIG1fc3RyID0gc3RyID8gc3RyZHVwKHN0cikgOiAoY2hhciAqKV9fbnVsbDsNCiAgICB9DQog
ICAgd3hDaGFyQnVmZmVyKHNpemVfdCBsZW4pDQogICAgew0KICAgICAgICBtX3N0ciA9IChjaGFy
ICopbWFsbG9jKGxlbisxKTsNCiAgICAgICAgbV9zdHJbbGVuXSA9ICdcMCc7DQogICAgfQ0KDQog
ICB+d3hDaGFyQnVmZmVyKCkgeyBmcmVlKG1fc3RyKTsgfQ0KDQogICB3eENoYXJCdWZmZXIoY29u
c3Qgd3hDaGFyQnVmZmVyJiBzcmMpDQogICB7DQogICAgIG1fc3RyID0gc3JjLm1fc3RyOw0KDQog
ICAgICgod3hDaGFyQnVmZmVyKikmc3JjKS0+bV9zdHIgPSAoY2hhciAqKV9fbnVsbDsNCiAgIH0N
CiAgIHd4Q2hhckJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IHd4Q2hhckJ1ZmZlciYgc3JjKQ0KICAg
ew0KICAgICBtX3N0ciA9IHNyYy5tX3N0cjsNCg0KICAgICAoKHd4Q2hhckJ1ZmZlciopJnNyYykt
Pm1fc3RyID0gKGNoYXIgKilfX251bGw7DQogICAgIHJldHVybiAqdGhpczsNCiAgIH0NCg0KICAg
Y29uc3QgY2hhciAqZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyOyB9DQogICBvcGVyYXRvciBj
b25zdCBjaGFyICooKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQ0KICAgY2hhciBvcGVyYXRvcltd
KHNpemVfdCBuKSBjb25zdCB7IHJldHVybiBtX3N0cltuXTsgfQ0KDQpwcml2YXRlOg0KICAgY2hh
ciAqbV9zdHI7DQp9Ow0KDQoNCmNsYXNzIHd4V0NoYXJCdWZmZXINCnsNCnB1YmxpYzoNCiAgICB3
eFdDaGFyQnVmZmVyKGNvbnN0IHdjaGFyX3QgKndjcykNCiAgICB7DQogICAgICAgIGlmICggISh3
Y3MpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9idWZmZXIuaCIsIDcxLCAiTlVMTCBz
dHJpbmcgaW4gd3hXQ2hhckJ1ZmZlciIpOw0KDQogICAgICAgIGlmICh3Y3MpIHsNCg0KDQoNCiAg
ICAgICAgICBzaXplX3Qgc2l6ID0gKDo6d2NzbGVuKHdjcykrMSkqc2l6ZW9mKHdjaGFyX3QpOw0K
DQogICAgICAgICAgbV93Y3MgPSAod2NoYXJfdCAqKW1hbGxvYyhzaXopOw0KICAgICAgICAgIG1l
bWNweShtX3djcywgd2NzLCBzaXopOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgbV93Y3MgPSAo
d2NoYXJfdCAqKV9fbnVsbDsNCiAgICB9DQogICAgd3hXQ2hhckJ1ZmZlcihzaXplX3QgbGVuKQ0K
ICAgIHsNCiAgICAgICAgbV93Y3MgPSAod2NoYXJfdCAqKW1hbGxvYygobGVuKzEpKnNpemVvZih3
Y2hhcl90KSk7DQogICAgICAgIG1fd2NzW2xlbl0gPSBMJ1wwJzsNCiAgICB9DQoNCg0KICAgfnd4
V0NoYXJCdWZmZXIoKSB7IGZyZWUobV93Y3MpOyB9DQoNCiAgIHd4V0NoYXJCdWZmZXIoY29uc3Qg
d3hXQ2hhckJ1ZmZlciYgc3JjKQ0KICAgew0KICAgICBtX3djcyA9IHNyYy5tX3djczsNCg0KICAg
ICAoKHd4V0NoYXJCdWZmZXIqKSZzcmMpLT5tX3djcyA9ICh3Y2hhcl90ICopX19udWxsOw0KICAg
fQ0KICAgd3hXQ2hhckJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IHd4V0NoYXJCdWZmZXImIHNyYykN
CiAgIHsNCiAgICAgbV93Y3MgPSBzcmMubV93Y3M7DQoNCiAgICAgKCh3eFdDaGFyQnVmZmVyKikm
c3JjKS0+bV93Y3MgPSAod2NoYXJfdCAqKV9fbnVsbDsNCiAgICAgcmV0dXJuICp0aGlzOw0KICAg
fQ0KDQogICBjb25zdCB3Y2hhcl90ICpkYXRhKCkgY29uc3QgeyByZXR1cm4gbV93Y3M7IH0NCiAg
IG9wZXJhdG9yIGNvbnN0IHdjaGFyX3QgKigpIGNvbnN0IHsgcmV0dXJuIG1fd2NzOyB9DQogICB3
Y2hhcl90IG9wZXJhdG9yW10oc2l6ZV90IG4pIGNvbnN0IHsgcmV0dXJuIG1fd2NzW25dOyB9DQoN
CnByaXZhdGU6DQogICB3Y2hhcl90ICptX3djczsNCn07DQojIDcxICIuLi8uLi9pbmNsdWRlL3d4
L3N0cmluZy5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvc3RyY29udi5oIiAxDQojIDE2ICIu
Li8uLi9pbmNsdWRlL3d4L3N0cmNvbnYuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJzdHJjb252Lmgi
DQojIDM0ICIuLi8uLi9pbmNsdWRlL3d4L3N0cmNvbnYuaCINCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4TUJDb252DQp7DQpwdWJsaWM6DQoNCiAgICB2aXJ0dWFsIHNpemVfdCBN
QjJXQyh3Y2hhcl90ICpidWYsIGNvbnN0IGNoYXIgKnBzeiwgc2l6ZV90IG4pIGNvbnN0Ow0KICAg
IHZpcnR1YWwgc2l6ZV90IFdDMk1CKGNoYXIgKmJ1ZiwgY29uc3Qgd2NoYXJfdCAqcHN6LCBzaXpl
X3QgbikgY29uc3Q7DQoNCg0KICAgIGNvbnN0IHd4V0NoYXJCdWZmZXIgY01CMldDKGNvbnN0IGNo
YXIgKnBzeikgY29uc3Q7DQogICAgY29uc3Qgd3hDaGFyQnVmZmVyIGNXQzJNQihjb25zdCB3Y2hh
cl90ICpwc3opIGNvbnN0Ow0KDQoNCg0KDQoNCg0KDQogICAgY29uc3QgY2hhciogY01CMldYKGNv
bnN0IGNoYXIgKnBzeikgY29uc3QgeyByZXR1cm4gcHN6OyB9DQogICAgY29uc3QgY2hhciogY1dY
Mk1CKGNvbnN0IGNoYXIgKnBzeikgY29uc3QgeyByZXR1cm4gcHN6OyB9DQogICAgY29uc3Qgd3hD
aGFyQnVmZmVyIGNXQzJXWChjb25zdCB3Y2hhcl90ICpwc3opIGNvbnN0IHsgcmV0dXJuIGNXQzJN
Qihwc3opOyB9DQogICAgY29uc3Qgd3hXQ2hhckJ1ZmZlciBjV1gyV0MoY29uc3QgY2hhciAqcHN6
KSBjb25zdCB7IHJldHVybiBjTUIyV0MocHN6KTsgfQ0KDQp9Ow0KDQpfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSBleHRlcm4gd3hNQkNvbnYgd3hDb252TGliYzsNCg0KDQoNCg0KDQpjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1CQ29udkZpbGUgOiBwdWJsaWMgd3hNQkNvbnYN
CnsNCnB1YmxpYzoNCiAgICB2aXJ0dWFsIHNpemVfdCBNQjJXQyh3Y2hhcl90ICpidWYsIGNvbnN0
IGNoYXIgKnBzeiwgc2l6ZV90IG4pIGNvbnN0Ow0KICAgIHZpcnR1YWwgc2l6ZV90IFdDMk1CKGNo
YXIgKmJ1ZiwgY29uc3Qgd2NoYXJfdCAqcHN6LCBzaXplX3QgbikgY29uc3Q7DQp9Ow0KDQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hNQkNvbnZGaWxlIHd4Q29udkZpbGU7DQoN
Cg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNQkNvbnZVVEY3IDog
cHVibGljIHd4TUJDb252DQp7DQpwdWJsaWM6DQogICAgdmlydHVhbCBzaXplX3QgTUIyV0Mod2No
YXJfdCAqYnVmLCBjb25zdCBjaGFyICpwc3osIHNpemVfdCBuKSBjb25zdDsNCiAgICB2aXJ0dWFs
IHNpemVfdCBXQzJNQihjaGFyICpidWYsIGNvbnN0IHdjaGFyX3QgKnBzeiwgc2l6ZV90IG4pIGNv
bnN0Ow0KfTsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4TUJDb252VVRG
NyB3eENvbnZVVEY3Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4TUJDb252VVRGOCA6IHB1YmxpYyB3eE1CQ29udg0Kew0KcHVibGljOg0KICAgIHZpcnR1YWwg
c2l6ZV90IE1CMldDKHdjaGFyX3QgKmJ1ZiwgY29uc3QgY2hhciAqcHN6LCBzaXplX3QgbikgY29u
c3Q7DQogICAgdmlydHVhbCBzaXplX3QgV0MyTUIoY2hhciAqYnVmLCBjb25zdCB3Y2hhcl90ICpw
c3osIHNpemVfdCBuKSBjb25zdDsNCn07DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4
dGVybiB3eE1CQ29udlVURjggd3hDb252VVRGODsNCiMgMTIwICIuLi8uLi9pbmNsdWRlL3d4L3N0
cmNvbnYuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Q2hhcmFjdGVyU2V0
Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENTQ29udiA6IHB1YmxpYyB3
eE1CQ29udg0Kew0KcHVibGljOg0KICAgIHd4Q1NDb252KGNvbnN0IGNoYXIgKmNoYXJzZXQpOw0K
ICAgIHZpcnR1YWwgfnd4Q1NDb252KCk7DQoNCiAgICB2b2lkIExvYWROb3coKTsNCg0KICAgIHZp
cnR1YWwgc2l6ZV90IE1CMldDKHdjaGFyX3QgKmJ1ZiwgY29uc3QgY2hhciAqcHN6LCBzaXplX3Qg
bikgY29uc3Q7DQogICAgdmlydHVhbCBzaXplX3QgV0MyTUIoY2hhciAqYnVmLCBjb25zdCB3Y2hh
cl90ICpwc3osIHNpemVfdCBuKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICB2b2lkIFNldE5hbWUo
Y29uc3QgY2hhciAqY2hhcnNldCk7DQoNCiAgICBjaGFyICptX25hbWU7DQogICAgd3hDaGFyYWN0
ZXJTZXQgKm1fY3NldDsNCiAgICBib29sIG1fZGVmZXJyZWQ7DQp9Ow0KDQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSBleHRlcm4gd3hDU0NvbnYgd3hDb252TG9jYWw7DQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSBleHRlcm4gd3hNQkNvbnYgKiB3eENvbnZDdXJyZW50Ow0KIyA3MiAiLi4v
Li4vaW5jbHVkZS93eC9zdHJpbmcuaCIgMg0KIyAxMDMgIi4uLy4uL2luY2x1ZGUvd3gvc3RyaW5n
LmgiDQpjb25zdCB1bnNpZ25lZCBpbnQgd3hTVFJJTkdfTUFYTEVOID0gKDIxNDc0ODM2NDcgKiAy
VSArIDEpIC0gMTAwOw0KIyAxMTIgIi4uLy4uL2luY2x1ZGUvd3gvc3RyaW5nLmgiDQpfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hFbXB0eVN0cmluZzsNCiMg
MTIzICIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIg0KaW5saW5lIGJvb2wgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgSXNFbXB0eShjb25zdCBjaGFyICpwKSB7IHJldHVybiAoIXAgfHwgISpw
KTsgfQ0KDQoNCmlubGluZSBzaXplX3QgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgU3RybGVu
KGNvbnN0IGNoYXIgKnBzeikNCiAgeyByZXR1cm4gcHN6ID8gc3RybGVuKHBzeikgOiAwOyB9DQoN
Cg0KaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBTdHJpY21wKGNvbnN0IGNo
YXIgKnBzejEsIGNvbnN0IGNoYXIgKnBzejIpDQp7DQojIDE0NyAiLi4vLi4vaW5jbHVkZS93eC9z
dHJpbmcuaCINCiAgcmV0dXJuIHN0cmNhc2VjbXAocHN6MSwgcHN6Mik7DQojIDE3MiAiLi4vLi4v
aW5jbHVkZS93eC9zdHJpbmcuaCINCn0NCg0KDQoNCmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hTbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBsZW4sDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOw0KDQoNCmV4
dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hWc25wcmludGYoY2hhciAqYnVm
LCBzaXplX3QgbGVuLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncHRyKTsNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFN0cmluZzsNCmlubGluZSBjb25zdCB3eFN0cmluZyYgd3hHZXRFbXB0eVN0
cmluZygpIHsgcmV0dXJuICood3hTdHJpbmcgKikmd3hFbXB0eVN0cmluZzsgfQ0KDQoNCg0KDQoN
Cg0Kc3RydWN0IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nRGF0YQ0Kew0KICBp
bnQgblJlZnM7DQogIHNpemVfdCBuRGF0YUxlbmd0aCwNCiAgICAgICAgICBuQWxsb2NMZW5ndGg7
DQoNCg0KICBjaGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gKGNoYXIqKSh0aGlzICsgMSk7IH0N
Cg0KDQogIGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIChuUmVmcyA9PSAtMSk7IH0NCiAg
Ym9vbCBJc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIChuUmVmcyA+IDEpOyB9DQoNCg0KICB2b2lk
IExvY2soKSB7IGlmICggIUlzRW1wdHkoKSApIG5SZWZzKys7IH0NCg0KDQoNCg0KDQoNCiAgdm9p
ZCBVbmxvY2soKSB7IGlmICggIUlzRW1wdHkoKSAmJiAtLW5SZWZzID09IDApIGZyZWUodGhpcyk7
IH0NCg0KDQoNCiAgdm9pZCBWYWxpZGF0ZShib29sIGIpIHsgblJlZnMgPSAoYiA/IDEgOiAwKTsg
fQ0KICBib29sIElzVmFsaWQoKSBjb25zdCB7IHJldHVybiAoblJlZnMgIT0gMCk7IH0NCn07DQoj
IDI0OSAiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4U3RyaW5nDQp7DQoNCg0KZnJpZW5kIGNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4QXJyYXlTdHJpbmc7DQoNCg0KDQoNCnByaXZhdGU6DQoNCiAgY2hhciAqbV9w
Y2hEYXRhOw0KDQoNCiAgd3hTdHJpbmdEYXRhKiBHZXRTdHJpbmdEYXRhKCkgY29uc3QgeyByZXR1
cm4gKHd4U3RyaW5nRGF0YSopbV9wY2hEYXRhIC0gMTsgfQ0KDQoNCg0KDQogIHZvaWQgSW5pdCgp
IHsgbV9wY2hEYXRhID0gKGNoYXIgKil3eEVtcHR5U3RyaW5nOyB9DQoNCiAgdm9pZCBJbml0V2l0
aChjb25zdCBjaGFyICpwc3osIHNpemVfdCBuUG9zID0gMCwgc2l6ZV90IG5MZW4gPSB3eFNUUklO
R19NQVhMRU4pOw0KDQogIHZvaWQgUmVpbml0KCkgeyBHZXRTdHJpbmdEYXRhKCktPlVubG9jaygp
OyBJbml0KCk7IH0NCg0KDQoNCiAgdm9pZCBBbGxvY0J1ZmZlcihzaXplX3Qgbkxlbik7DQoNCiAg
dm9pZCBBbGxvY0NvcHkod3hTdHJpbmcmLCBpbnQsIGludCkgY29uc3Q7DQoNCiAgdm9pZCBBc3Np
Z25Db3B5KHNpemVfdCwgY29uc3QgY2hhciAqKTsNCg0KDQogIHZvaWQgQ29uY2F0U2VsZihpbnQg
bkxlbiwgY29uc3QgY2hhciAqc3JjKTsNCg0KDQoNCiAgdm9pZCBDb3B5QmVmb3JlV3JpdGUoKTsN
CiAgdm9pZCBBbGxvY0JlZm9yZVdyaXRlKHNpemVfdCk7DQoNCg0KDQoNCg0KICB3eFN0cmluZyhp
bnQpOw0KICB3eFN0cmluZyh1bnNpZ25lZCBpbnQpOw0KICB3eFN0cmluZyhsb25nKTsNCiAgd3hT
dHJpbmcodW5zaWduZWQgbG9uZyk7DQoNCnB1YmxpYzoNCg0KDQogIHd4U3RyaW5nKCkgeyBJbml0
KCk7IH0NCg0KICB3eFN0cmluZyhjb25zdCB3eFN0cmluZyYgc3RyaW5nU3JjKQ0KICB7DQogICAg
aWYgKCAhKHN0cmluZ1NyYy5HZXRTdHJpbmdEYXRhKCktPklzVmFsaWQoKSkgKSB3eE9uQXNzZXJ0
KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIiwgMzA2KTsNCg0KICAgIGlmICggc3RyaW5nU3Jj
LklzRW1wdHkoKSApIHsNCg0KICAgICAgSW5pdCgpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAg
IG1fcGNoRGF0YSA9IHN0cmluZ1NyYy5tX3BjaERhdGE7DQogICAgICBHZXRTdHJpbmdEYXRhKCkt
PkxvY2soKTsNCiAgICB9DQogIH0NCg0KICB3eFN0cmluZyhjaGFyIGNoLCBzaXplX3QgblJlcGVh
dCA9IDEpOw0KDQoNCiAgd3hTdHJpbmcoY29uc3QgY2hhciAqcHN6LCBzaXplX3Qgbkxlbmd0aCA9
IHd4U1RSSU5HX01BWExFTikNCiAgICB7IEluaXRXaXRoKHBzeiwgMCwgbkxlbmd0aCk7IH0NCiAg
d3hTdHJpbmcoY29uc3QgY2hhciAqcHN6LCB3eE1CQ29udiYgLCBzaXplX3Qgbkxlbmd0aCA9IHd4
U1RSSU5HX01BWExFTikNCiAgICB7IEluaXRXaXRoKHBzeiwgMCwgbkxlbmd0aCk7IH0NCiMgMzM2
ICIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIg0KICB3eFN0cmluZyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBwc3osIHNpemVfdCBuTGVuZ3RoID0gd3hTVFJJTkdfTUFYTEVOKQ0KICAgIHsgSW5pdFdp
dGgoKGNvbnN0IGNoYXIqKXBzeiwgMCwgbkxlbmd0aCk7IH0NCg0KDQoNCiAgd3hTdHJpbmcoY29u
c3Qgd2NoYXJfdCAqcHd6LCB3eE1CQ29udiYgY29udiA9IHd4Q29udkxpYmMpOw0KDQoNCg0KICB3
eFN0cmluZyhjb25zdCB3eENoYXJCdWZmZXImIHBzeikNCiAgICB7IEluaXRXaXRoKHBzeiwgMCwg
d3hTVFJJTkdfTUFYTEVOKTsgfQ0KDQoNCg0KIH53eFN0cmluZygpIHsgR2V0U3RyaW5nRGF0YSgp
LT5VbmxvY2soKTsgfQ0KDQoNCg0KICBzaXplX3QgTGVuKCkgY29uc3QgeyByZXR1cm4gR2V0U3Ry
aW5nRGF0YSgpLT5uRGF0YUxlbmd0aDsgfQ0KDQogIGJvb2wgSXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIExlbigpID09IDA7IH0NCg0KICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIElz
RW1wdHkoKTsgfQ0KDQogIHZvaWQgRW1wdHkoKQ0KICB7DQogICAgaWYgKCAhSXNFbXB0eSgpICkN
CiAgICAgIFJlaW5pdCgpOw0KDQoNCiAgICBpZiAoICEoR2V0U3RyaW5nRGF0YSgpLT5uRGF0YUxl
bmd0aCA9PSAwKSApIHd4T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUvd3gvc3RyaW5nLmgiLCAzNjYp
Ow0KICB9DQoNCiAgdm9pZCBDbGVhcigpDQogIHsNCiAgICBpZiAoICFHZXRTdHJpbmdEYXRhKCkt
PklzRW1wdHkoKSApDQogICAgICBSZWluaXQoKTsNCg0KICAgIGlmICggIShHZXRTdHJpbmdEYXRh
KCktPm5EYXRhTGVuZ3RoID09IDApICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9zdHJp
bmcuaCIsIDM3NCk7DQogICAgaWYgKCAhKEdldFN0cmluZ0RhdGEoKS0+bkFsbG9jTGVuZ3RoID09
IDApICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCIsIDM3NSk7DQogIH0N
Cg0KDQoNCiAgYm9vbCBJc0FzY2lpKCkgY29uc3Q7DQoNCiAgYm9vbCBJc051bWJlcigpIGNvbnN0
Ow0KDQogIGJvb2wgSXNXb3JkKCkgY29uc3Q7DQoNCg0KDQogICAgY2hhciBHZXRDaGFyKHNpemVf
dCBuKSBjb25zdA0KICAgICAgeyBpZiAoICEoKHVuc2lnbmVkKShuKSA8PSBMZW4oKSkgKSB3eE9u
QXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIiwgMzg5KTsgcmV0dXJuIG1fcGNoRGF0
YVtuXTsgfQ0KDQogICAgY2hhciYgR2V0V3JpdGFibGVDaGFyKHNpemVfdCBuKQ0KICAgICAgeyBp
ZiAoICEoKHVuc2lnbmVkKShuKSA8PSBMZW4oKSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRl
L3d4L3N0cmluZy5oIiwgMzkyKTsgQ29weUJlZm9yZVdyaXRlKCk7IHJldHVybiBtX3BjaERhdGFb
bl07IH0NCg0KICAgIHZvaWQgU2V0Q2hhcihzaXplX3QgbiwgY2hhciBjaCkNCiAgICAgIHsgaWYg
KCAhKCh1bnNpZ25lZCkobikgPD0gTGVuKCkpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93
eC9zdHJpbmcuaCIsIDM5NSk7IENvcHlCZWZvcmVXcml0ZSgpOyBtX3BjaERhdGFbbl0gPSBjaDsg
fQ0KDQoNCiAgICBjaGFyIExhc3QoKSBjb25zdA0KICAgICAgeyBpZiAoICEoIUlzRW1wdHkoKSkg
KSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIiwgMzk5KTsgcmV0dXJuIG1f
cGNoRGF0YVtMZW4oKSAtIDFdOyB9DQoNCiAgICBjaGFyJiBMYXN0KCkNCiAgICAgIHsgaWYgKCAh
KCFJc0VtcHR5KCkpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCIsIDQw
Mik7IENvcHlCZWZvcmVXcml0ZSgpOyByZXR1cm4gbV9wY2hEYXRhW0xlbigpLTFdOyB9DQoNCg0K
ICAgIGNoYXIgb3BlcmF0b3JbXShzaXplX3QgbikgY29uc3QNCiAgICAgIHsgaWYgKCAhKCh1bnNp
Z25lZCkobikgPD0gTGVuKCkpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcu
aCIsIDQwNik7IHJldHVybiBtX3BjaERhdGFbbl07IH0NCg0KDQogICAgY2hhciBvcGVyYXRvcltd
KGludCBuKSBjb25zdA0KICAgICAgeyBpZiAoICEoKHVuc2lnbmVkKShuKSA8PSBMZW4oKSkgKSB3
eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIiwgNDEwKTsgcmV0dXJuIG1fcGNo
RGF0YVtuXTsgfQ0KDQoNCiAgICBjaGFyJiBvcGVyYXRvcltdKHNpemVfdCBuKQ0KICAgICAgeyBp
ZiAoICEoKHVuc2lnbmVkKShuKSA8PSBMZW4oKSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRl
L3d4L3N0cmluZy5oIiwgNDE0KTsgQ29weUJlZm9yZVdyaXRlKCk7IHJldHVybiBtX3BjaERhdGFb
bl07IH0NCiMgNDI3ICIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIg0KICAgIG9wZXJhdG9yIGNv
bnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9wY2hEYXRhOyB9DQoNCiAgICBjb25zdCBjaGFy
KiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIG1fcGNoRGF0YTsgfQ0KDQogICAgY29uc3QgY2hhciog
d3hfc3RyKCkgY29uc3QgeyByZXR1cm4gbV9wY2hEYXRhOyB9DQoNCiAgICBjb25zdCBjaGFyKiBH
ZXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wY2hEYXRhOyB9DQojIDQ2MSAiLi4vLi4vaW5jbHVk
ZS93eC9zdHJpbmcuaCINCiAgICBjb25zdCBjaGFyKiBtYl9zdHIoKSBjb25zdCB7IHJldHVybiBt
X3BjaERhdGE7IH0NCg0KDQogICAgY29uc3QgY2hhciogbWJfc3RyKHd4TUJDb252JiApIGNvbnN0
IHsgcmV0dXJuIG1fcGNoRGF0YTsgfQ0KDQogICAgY29uc3QgY2hhciogbWJjX3N0cigpIGNvbnN0
IHsgcmV0dXJuIG1iX3N0cigpOyB9DQoNCg0KICAgIGNvbnN0IHd4V0NoYXJCdWZmZXIgd2Nfc3Ry
KHd4TUJDb252JiBjb252KSBjb25zdA0KICAgICAgICB7IHJldHVybiBjb252LmNNQjJXQyhtX3Bj
aERhdGEpOyB9DQoNCg0KICAgIGNvbnN0IGNoYXIqIGZuX3N0cigpIGNvbnN0IHsgcmV0dXJuIG1f
cGNoRGF0YTsgfQ0KDQoNCg0KDQogIHd4U3RyaW5nJiBvcGVyYXRvcj0oY29uc3Qgd3hTdHJpbmcm
IHN0cmluZ1NyYyk7DQoNCiAgd3hTdHJpbmcmIG9wZXJhdG9yPShjaGFyIGNoKTsNCg0KICB3eFN0
cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIgKnBzeik7DQoNCg0KDQoNCg0KICB3eFN0cmluZyYg
b3BlcmF0b3I9KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHBzeik7DQoNCg0KICB3eFN0cmluZyYgb3Bl
cmF0b3I9KGNvbnN0IHdjaGFyX3QgKnB3eik7DQoNCg0KICB3eFN0cmluZyYgb3BlcmF0b3I9KGNv
bnN0IHd4Q2hhckJ1ZmZlciYgcHN6KSB7IHJldHVybiBvcGVyYXRvcj0oKGNvbnN0IGNoYXIgKilw
c3opOyB9DQojIDUwNSAiLi4vLi4vaW5jbHVkZS93eC9zdHJpbmcuaCINCiAgd3hTdHJpbmcmIG9w
ZXJhdG9yPDwoY29uc3Qgd3hTdHJpbmcmIHMpDQogIHsNCiAgICBpZiAoICEocy5HZXRTdHJpbmdE
YXRhKCktPklzVmFsaWQoKSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5o
IiwgNTA3KTsNCg0KICAgIENvbmNhdFNlbGYocy5MZW4oKSwgcyk7DQogICAgcmV0dXJuICp0aGlz
Ow0KICB9DQoNCiAgd3hTdHJpbmcmIG9wZXJhdG9yPDwoY29uc3QgY2hhciAqcHN6KQ0KICAgIHsg
Q29uY2F0U2VsZih3eFN0cmxlbihwc3opLCBwc3opOyByZXR1cm4gKnRoaXM7IH0NCg0KICB3eFN0
cmluZyYgb3BlcmF0b3I8PChjaGFyIGNoKSB7IENvbmNhdFNlbGYoMSwgJmNoKTsgcmV0dXJuICp0
aGlzOyB9DQoNCg0KICB2b2lkIG9wZXJhdG9yKz0oY29uc3Qgd3hTdHJpbmcmIHMpIHsgKHZvaWQp
b3BlcmF0b3I8PChzKTsgfQ0KDQogIHZvaWQgb3BlcmF0b3IrPShjb25zdCBjaGFyICpwc3opIHsg
KHZvaWQpb3BlcmF0b3I8PChwc3opOyB9DQoNCiAgdm9pZCBvcGVyYXRvcis9KGNoYXIgY2gpIHsg
KHZvaWQpb3BlcmF0b3I8PChjaCk7IH0NCg0KDQoNCg0KDQoNCiAgd3hTdHJpbmcmIG9wZXJhdG9y
PDwoY29uc3Qgd3hDaGFyQnVmZmVyJiBzKSB7ICh2b2lkKW9wZXJhdG9yPDwoKGNvbnN0IGNoYXIg
KilzKTsgcmV0dXJuICp0aGlzOyB9DQogIHZvaWQgb3BlcmF0b3IrPShjb25zdCB3eENoYXJCdWZm
ZXImIHMpIHsgKHZvaWQpb3BlcmF0b3I8PCgoY29uc3QgY2hhciAqKXMpOyB9DQoNCg0KDQogIHd4
U3RyaW5nJiBBcHBlbmQoY29uc3QgY2hhciogcHN6KQ0KICAgIHsgQ29uY2F0U2VsZih3eFN0cmxl
bihwc3opLCBwc3opOyByZXR1cm4gKnRoaXM7IH0NCg0KICB3eFN0cmluZyYgQXBwZW5kKGNoYXIg
Y2gsIHNpemVfdCBjb3VudCA9IDF1KQ0KICAgIHsgd3hTdHJpbmcgc3RyKGNoLCBjb3VudCk7IHJl
dHVybiAqdGhpcyA8PCBzdHI7IH0NCiAgd3hTdHJpbmcmIEFwcGVuZChjb25zdCBjaGFyKiBwc3os
IHNpemVfdCBuTGVuKQ0KICAgIHsgQ29uY2F0U2VsZihuTGVuLCBwc3opOyByZXR1cm4gKnRoaXM7
IH0NCg0KDQogIHd4U3RyaW5nJiBQcmVwZW5kKGNvbnN0IHd4U3RyaW5nJiBzdHIpDQogICAgeyAq
dGhpcyA9IHN0ciArICp0aGlzOyByZXR1cm4gKnRoaXM7IH0NCg0KDQoNCiAgZnJpZW5kIHd4U3Ry
aW5nIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIG9wZXJhdG9yKyhjb25zdCB3eFN0cmluZyYg
c3RyaW5nMSwgY29uc3Qgd3hTdHJpbmcmIHN0cmluZzIpOw0KDQogIGZyaWVuZCB3eFN0cmluZyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBvcGVyYXRvcisoY29uc3Qgd3hTdHJpbmcmIHN0cmlu
ZywgY2hhciBjaCk7DQoNCiAgZnJpZW5kIHd4U3RyaW5nIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIG9wZXJhdG9yKyhjaGFyIGNoLCBjb25zdCB3eFN0cmluZyYgc3RyaW5nKTsNCg0KICBmcmll
bmQgd3hTdHJpbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3BlcmF0b3IrKGNvbnN0IHd4
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKnBzeik7DQoNCiAgZnJpZW5kIHd4U3RyaW5nIF9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIG9wZXJhdG9yKyhjb25zdCBjaGFyICpwc3osIGNvbnN0
IHd4U3RyaW5nJiBzdHJpbmcpOw0KDQoNCg0KICB3eFN0cmluZyYgb3BlcmF0b3I8PChpbnQgaSkN
CiAgICB7IHJldHVybiAoKnRoaXMpIDw8IEZvcm1hdCgiJWQiLCBpKTsgfQ0KDQogIHd4U3RyaW5n
JiBvcGVyYXRvcjw8KHVuc2lnbmVkIGludCB1aSkNCiAgICB7IHJldHVybiAoKnRoaXMpIDw8IEZv
cm1hdCgiJXUiLCB1aSk7IH0NCg0KICB3eFN0cmluZyYgb3BlcmF0b3I8PChsb25nIGwpDQogICAg
eyByZXR1cm4gKCp0aGlzKSA8PCBGb3JtYXQoIiVsZCIsIGwpOyB9DQoNCiAgd3hTdHJpbmcmIG9w
ZXJhdG9yPDwodW5zaWduZWQgbG9uZyB1bCkNCiAgICB7IHJldHVybiAoKnRoaXMpIDw8IEZvcm1h
dCgiJWx1IiwgdWwpOyB9DQoNCiAgd3hTdHJpbmcmIG9wZXJhdG9yPDwoZmxvYXQgZikNCiAgICB7
IHJldHVybiAoKnRoaXMpIDw8IEZvcm1hdCgiJWYiLCBmKTsgfQ0KDQogIHd4U3RyaW5nJiBvcGVy
YXRvcjw8KGRvdWJsZSBkKQ0KICAgIHsgcmV0dXJuICgqdGhpcykgPDwgRm9ybWF0KCIlZyIsIGQp
OyB9DQoNCg0KDQogIGludCBDbXAoY29uc3QgY2hhciAqcHN6KSBjb25zdCB7IHJldHVybiBzdHJj
bXAoY19zdHIoKSwgcHN6KTsgfQ0KDQogIGludCBDbXBOb0Nhc2UoY29uc3QgY2hhciAqcHN6KSBj
b25zdCB7IHJldHVybiBzdHJjYXNlY21wKGNfc3RyKCksIHBzeik7IH0NCg0KDQogIGJvb2wgSXNT
YW1lQXMoY29uc3QgY2hhciAqcHN6LCBib29sIGNvbXBhcmVXaXRoQ2FzZSA9IDEpIGNvbnN0DQog
ICAgeyByZXR1cm4gKGNvbXBhcmVXaXRoQ2FzZSA/IENtcChwc3opIDogQ21wTm9DYXNlKHBzeikp
ID09IDA7IH0NCg0KICBib29sIElzU2FtZUFzKGNoYXIgYywgYm9vbCBjb21wYXJlV2l0aENhc2Ug
PSAxKSBjb25zdA0KICAgIHsNCiAgICAgIHJldHVybiAoTGVuKCkgPT0gMSkgJiYgKGNvbXBhcmVX
aXRoQ2FzZSA/IEdldENoYXIoMHUpID09IGMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogdG91cHBlcihHZXRDaGFyKDB1KSkgPT0gdG91cHBlcihjKSk7DQogICAgfQ0KDQoNCg0KDQog
IHd4U3RyaW5nIE1pZChzaXplX3QgbkZpcnN0LCBzaXplX3QgbkNvdW50ID0gd3hTVFJJTkdfTUFY
TEVOKSBjb25zdDsNCg0KDQogIHd4U3RyaW5nIG9wZXJhdG9yKCkoc2l6ZV90IHN0YXJ0LCBzaXpl
X3QgbGVuKSBjb25zdA0KICAgIHsgcmV0dXJuIE1pZChzdGFydCwgbGVuKTsgfQ0KDQoNCg0KDQog
IGJvb2wgU3RhcnRzV2l0aChjb25zdCBjaGFyICpwcmVmaXgsIHd4U3RyaW5nICpyZXN0ID0gX19u
dWxsKSBjb25zdDsNCg0KDQogIHd4U3RyaW5nIExlZnQoc2l6ZV90IG5Db3VudCkgY29uc3Q7DQoN
CiAgd3hTdHJpbmcgUmlnaHQoc2l6ZV90IG5Db3VudCkgY29uc3Q7DQoNCg0KICB3eFN0cmluZyBC
ZWZvcmVGaXJzdChjaGFyIGNoKSBjb25zdDsNCg0KDQogIHd4U3RyaW5nIEJlZm9yZUxhc3QoY2hh
ciBjaCkgY29uc3Q7DQoNCg0KICB3eFN0cmluZyBBZnRlckZpcnN0KGNoYXIgY2gpIGNvbnN0Ow0K
DQoNCiAgd3hTdHJpbmcgQWZ0ZXJMYXN0KGNoYXIgY2gpIGNvbnN0Ow0KDQoNCiAgd3hTdHJpbmcg
QmVmb3JlKGNoYXIgY2gpIGNvbnN0IHsgcmV0dXJuIEJlZm9yZUxhc3QoY2gpOyB9DQogIHd4U3Ry
aW5nIEFmdGVyKGNoYXIgY2gpIGNvbnN0IHsgcmV0dXJuIEFmdGVyRmlyc3QoY2gpOyB9DQoNCg0K
DQogIHd4U3RyaW5nJiBNYWtlVXBwZXIoKTsNCg0KDQogIHd4U3RyaW5nIFVwcGVyKCkgY29uc3Qg
Ow0KDQogIHd4U3RyaW5nJiBNYWtlTG93ZXIoKTsNCg0KICB3eFN0cmluZyBMb3dlcigpIGNvbnN0
IDsNCg0KDQoNCiAgd3hTdHJpbmcmIFRyaW0oYm9vbCBiRnJvbVJpZ2h0ID0gMSk7DQoNCiAgd3hT
dHJpbmcmIFBhZChzaXplX3QgbkNvdW50LCBjaGFyIGNoUGFkID0gJyAnLCBib29sIGJGcm9tUmln
aHQgPSAxKTsNCg0KICB3eFN0cmluZyYgVHJ1bmNhdGUoc2l6ZV90IHVpTGVuKTsNCg0KDQoNCiAg
aW50IEZpbmQoY2hhciBjaCwgYm9vbCBiRnJvbUVuZCA9IDApIGNvbnN0Ow0KDQogIGludCBGaW5k
KGNvbnN0IGNoYXIgKnBzelN1YikgY29uc3Q7DQoNCg0KICBzaXplX3QgUmVwbGFjZShjb25zdCBj
aGFyICpzek9sZCwNCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3pOZXcsDQogICAgICAg
ICAgICAgICAgIGJvb2wgYlJlcGxhY2VBbGwgPSAxKTsNCg0KDQogIGJvb2wgTWF0Y2hlcyhjb25z
dCBjaGFyICpzek1hc2spIGNvbnN0Ow0KDQoNCg0KDQogICAgYm9vbCBUb0xvbmcobG9uZyAqdmFs
KSBjb25zdDsNCg0KICAgIGJvb2wgVG9VTG9uZyh1bnNpZ25lZCBsb25nICp2YWwpIGNvbnN0Ow0K
DQogICAgYm9vbCBUb0RvdWJsZShkb3VibGUgKnZhbCkgY29uc3Q7DQoNCg0KDQogIGludCBQcmlu
dGYoY29uc3QgY2hhciAqcHN6Rm9ybWF0LCAuLi4pOw0KDQogIGludCBQcmludGZWKGNvbnN0IGNo
YXIqIHBzekZvcm1hdCwgdmFfbGlzdCBhcmdwdHIpOw0KDQoNCiAgc3RhdGljIHd4U3RyaW5nIEZv
cm1hdChjb25zdCBjaGFyICpwc3pGb3JtYXQsIC4uLik7DQoNCiAgc3RhdGljIHd4U3RyaW5nIEZv
cm1hdFYoY29uc3QgY2hhciAqcHN6Rm9ybWF0LCB2YV9saXN0IGFyZ3B0cik7DQoNCg0KDQoNCiAg
dm9pZCBBbGxvYyhzaXplX3Qgbkxlbik7DQoNCg0KICB2b2lkIFNocmluaygpOw0KDQoNCiAgY2hh
ciAqR2V0V3JpdGVCdWYoc2l6ZV90IG5MZW4pOw0KDQogIHZvaWQgVW5nZXRXcml0ZUJ1ZigpOw0K
ICB2b2lkIFVuZ2V0V3JpdGVCdWYoc2l6ZV90IG5MZW4pOw0KDQoNCg0KDQogIHd4U3RyaW5nIFN1
YlN0cmluZyhzaXplX3QgZnJvbSwgc2l6ZV90IHRvKSBjb25zdA0KICAgICAgeyByZXR1cm4gTWlk
KGZyb20sICh0byAtIGZyb20gKyAxKSk7IH0NCg0KICBlbnVtIGNhc2VDb21wYXJlIHtleGFjdCwg
aWdub3JlQ2FzZX07DQoNCiAgZW51bSBzdHJpcFR5cGUge2xlYWRpbmcgPSAweDEsIHRyYWlsaW5n
ID0gMHgyLCBib3RoID0gMHgzfTsNCg0KDQogIGludCBzcHJpbnRmKGNvbnN0IGNoYXIgKnBzekZv
cm1hdCwgLi4uKTsNCg0KDQogIGlubGluZSBpbnQgQ29tcGFyZVRvKGNvbnN0IGNoYXIqIHBzeiwg
Y2FzZUNvbXBhcmUgY21wID0gZXhhY3QpIGNvbnN0DQogICAgeyByZXR1cm4gY21wID09IGV4YWN0
ID8gQ21wKHBzeikgOiBDbXBOb0Nhc2UocHN6KTsgfQ0KDQoNCiAgc2l6ZV90IExlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIExlbigpOyB9DQoNCiAgaW50IEZyZXEoY2hhciBjaCkgY29uc3Q7DQoNCiAg
dm9pZCBMb3dlckNhc2UoKSB7IE1ha2VMb3dlcigpOyB9DQoNCiAgdm9pZCBVcHBlckNhc2UoKSB7
IE1ha2VVcHBlcigpOyB9DQoNCiAgd3hTdHJpbmcgU3RyaXAoc3RyaXBUeXBlIHcgPSB0cmFpbGlu
ZykgY29uc3Q7DQoNCg0KICBzaXplX3QgSW5kZXgoY29uc3QgY2hhciogcHN6KSBjb25zdCB7IHJl
dHVybiBGaW5kKHBzeik7IH0NCiAgc2l6ZV90IEluZGV4KGNoYXIgY2gpIGNvbnN0IHsgcmV0dXJu
IEZpbmQoY2gpOyB9DQoNCiAgd3hTdHJpbmcmIFJlbW92ZShzaXplX3QgcG9zKSB7IHJldHVybiBU
cnVuY2F0ZShwb3MpOyB9DQogIHd4U3RyaW5nJiBSZW1vdmVMYXN0KCkgeyByZXR1cm4gVHJ1bmNh
dGUoTGVuKCkgLSAxKTsgfQ0KDQogIHd4U3RyaW5nJiBSZW1vdmUoc2l6ZV90IG5TdGFydCwgc2l6
ZV90IG5MZW4pIHsgcmV0dXJuIGVyYXNlKCBuU3RhcnQsIG5MZW4gKTsgfQ0KDQoNCiAgaW50IEZp
cnN0KCBjb25zdCBjaGFyIGNoICkgY29uc3QgeyByZXR1cm4gRmluZChjaCk7IH0NCiAgaW50IEZp
cnN0KCBjb25zdCBjaGFyKiBwc3ogKSBjb25zdCB7IHJldHVybiBGaW5kKHBzeik7IH0NCiAgaW50
IEZpcnN0KCBjb25zdCB3eFN0cmluZyAmc3RyICkgY29uc3QgeyByZXR1cm4gRmluZChzdHIpOyB9
DQogIGludCBMYXN0KCBjb25zdCBjaGFyIGNoICkgY29uc3QgeyByZXR1cm4gRmluZChjaCwgMSk7
IH0NCiAgYm9vbCBDb250YWlucyhjb25zdCB3eFN0cmluZyYgc3RyKSBjb25zdCB7IHJldHVybiBG
aW5kKHN0cikgIT0gLTE7IH0NCg0KDQogIGJvb2wgSXNOdWxsKCkgY29uc3QgeyByZXR1cm4gSXNF
bXB0eSgpOyB9DQoNCg0KDQoNCg0KICB0eXBlZGVmIGNoYXIgdmFsdWVfdHlwZTsNCiAgdHlwZWRl
ZiBjb25zdCB2YWx1ZV90eXBlICpjb25zdF9pdGVyYXRvcjsNCg0KDQogIHN0YXRpYyBjb25zdCBz
aXplX3QgbnBvczsNCg0KDQoNCiAgd3hTdHJpbmcoY29uc3Qgd3hTdHJpbmcmIHN0ciwgc2l6ZV90
IG5Qb3MsIHNpemVfdCBuTGVuKQ0KICB7DQogICAgaWYgKCAhKHN0ci5HZXRTdHJpbmdEYXRhKCkt
PklzVmFsaWQoKSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5oIiwgNzU4
KTsNCiAgICBJbml0V2l0aChzdHIuY19zdHIoKSwgblBvcywgbkxlbiA9PSBucG9zID8gMCA6IG5M
ZW4pOw0KICB9DQoNCiAgd3hTdHJpbmcoY29uc3Qgdm9pZCAqcFN0YXJ0LCBjb25zdCB2b2lkICpw
RW5kKTsNCg0KDQoNCiAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBMZW4oKTsgfQ0KDQog
IHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBMZW4oKTsgfQ0KDQogIHNpemVfdCBtYXhf
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHd4U1RSSU5HX01BWExFTjsgfQ0KDQogIHZvaWQgcmVzaXpl
KHNpemVfdCBuU2l6ZSwgY2hhciBjaCA9ICdcMCcpOw0KDQogIHZvaWQgY2xlYXIoKSB7IEVtcHR5
KCk7IH0NCg0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gSXNFbXB0eSgpOyB9DQoNCiAg
dm9pZCByZXNlcnZlKHNpemVfdCBzaXplKSB7IEFsbG9jKHNpemUpOyB9DQoNCg0KDQogIGNoYXIg
YXQoc2l6ZV90IG4pIGNvbnN0IHsgcmV0dXJuIEdldENoYXIobik7IH0NCg0KICBjaGFyJiBhdChz
aXplX3QgbikgeyByZXR1cm4gR2V0V3JpdGFibGVDaGFyKG4pOyB9DQoNCg0KICBjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHd4X3N0cigpOyB9DQoNCiAgY29uc3RfaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gd3hfc3RyKCkgKyBsZW5ndGgoKTsgfQ0KDQoNCg0KICB3
eFN0cmluZyYgYXBwZW5kKGNvbnN0IHd4U3RyaW5nJiBzdHIpDQogICAgeyAqdGhpcyArPSBzdHI7
IHJldHVybiAqdGhpczsgfQ0KDQogIHd4U3RyaW5nJiBhcHBlbmQoY29uc3Qgd3hTdHJpbmcmIHN0
ciwgc2l6ZV90IHBvcywgc2l6ZV90IG4pDQogICAgeyBDb25jYXRTZWxmKG4sIHN0ci5jX3N0cigp
ICsgcG9zKTsgcmV0dXJuICp0aGlzOyB9DQoNCiAgd3hTdHJpbmcmIGFwcGVuZChjb25zdCBjaGFy
ICpzeiwgc2l6ZV90IG4gPSBucG9zKQ0KICAgIHsgQ29uY2F0U2VsZihuID09IG5wb3MgPyB3eFN0
cmxlbihzeikgOiBuLCBzeik7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgd3hTdHJpbmcmIGFwcGVu
ZChzaXplX3QgbiwgY2hhciBjaCkgeyByZXR1cm4gUGFkKG4sIGNoKTsgfQ0KDQoNCiAgd3hTdHJp
bmcmIGFzc2lnbihjb25zdCB3eFN0cmluZyYgc3RyKSB7IHJldHVybiAoKnRoaXMpID0gc3RyOyB9
DQoNCiAgd3hTdHJpbmcmIGFzc2lnbihjb25zdCB3eFN0cmluZyYgc3RyLCBzaXplX3QgcG9zLCBz
aXplX3QgbikNCiAgICB7IHJldHVybiAqdGhpcyA9IHd4U3RyaW5nKChjb25zdCBjaGFyICopc3Ry
ICsgcG9zLCBuKTsgfQ0KDQogIHd4U3RyaW5nJiBhc3NpZ24oY29uc3QgY2hhciAqc3osIHNpemVf
dCBuID0gbnBvcykNCiAgICB7IHJldHVybiAqdGhpcyA9IHd4U3RyaW5nKHN6LCBuKTsgfQ0KDQog
IHd4U3RyaW5nJiBhc3NpZ24oc2l6ZV90IG4sIGNoYXIgY2gpDQogICAgeyByZXR1cm4gKnRoaXMg
PSB3eFN0cmluZyhjaCwgbik7IH0NCg0KDQogIHd4U3RyaW5nJiBpbnNlcnQoc2l6ZV90IG5Qb3Ms
IGNvbnN0IHd4U3RyaW5nJiBzdHIpOw0KDQogIHd4U3RyaW5nJiBpbnNlcnQoc2l6ZV90IG5Qb3Ms
IGNvbnN0IHd4U3RyaW5nJiBzdHIsIHNpemVfdCBuU3RhcnQsIHNpemVfdCBuKQ0KICAgIHsgcmV0
dXJuIGluc2VydChuUG9zLCB3eFN0cmluZygoY29uc3QgY2hhciAqKXN0ciArIG5TdGFydCwgbikp
OyB9DQoNCg0KICB3eFN0cmluZyYgaW5zZXJ0KHNpemVfdCBuUG9zLCBjb25zdCBjaGFyICpzeiwg
c2l6ZV90IG4gPSBucG9zKQ0KICAgIHsgcmV0dXJuIGluc2VydChuUG9zLCB3eFN0cmluZyhzeiwg
bikpOyB9DQoNCiAgd3hTdHJpbmcmIGluc2VydChzaXplX3QgblBvcywgc2l6ZV90IG4sIGNoYXIg
Y2gpDQogICAgeyByZXR1cm4gaW5zZXJ0KG5Qb3MsIHd4U3RyaW5nKGNoLCBuKSk7IH0NCg0KDQog
IHd4U3RyaW5nJiBlcmFzZShzaXplX3QgblN0YXJ0ID0gMCwgc2l6ZV90IG5MZW4gPSBucG9zKTsN
Cg0KDQogIHd4U3RyaW5nJiByZXBsYWNlKHNpemVfdCBuU3RhcnQsIHNpemVfdCBuTGVuLCBjb25z
dCBjaGFyKiBzeik7DQoNCiAgd3hTdHJpbmcmIHJlcGxhY2Uoc2l6ZV90IG5TdGFydCwgc2l6ZV90
IG5MZW4sIHNpemVfdCBuQ291bnQsIGNoYXIgY2gpOw0KDQogIHd4U3RyaW5nJiByZXBsYWNlKHNp
emVfdCBuU3RhcnQsIHNpemVfdCBuTGVuLA0KICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgc3RyLCBzaXplX3QgblN0YXJ0Miwgc2l6ZV90IG5MZW4yKTsNCg0KICB3eFN0cmluZyYg
cmVwbGFjZShzaXplX3QgblN0YXJ0LCBzaXplX3QgbkxlbiwNCiAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogc3osIHNpemVfdCBuQ291bnQpOw0KDQoNCiAgdm9pZCBzd2FwKHd4U3RyaW5n
JiBzdHIpOw0KDQoNCg0KDQoNCg0KICBzaXplX3QgZmluZChjb25zdCB3eFN0cmluZyYgc3RyLCBz
aXplX3QgblN0YXJ0ID0gMCkgY29uc3Q7DQoNCg0KDQoNCiAgc2l6ZV90IGZpbmQoY29uc3QgY2hh
ciogc3osIHNpemVfdCBuU3RhcnQgPSAwLCBzaXplX3QgbiA9IG5wb3MpIGNvbnN0Ow0KDQoNCg0K
DQoNCiAgc2l6ZV90IGZpbmQoY2hhciBjaCwgc2l6ZV90IG5TdGFydCA9IDApIGNvbnN0Ow0KDQoN
Cg0KDQogIHNpemVfdCByZmluZChjb25zdCB3eFN0cmluZyYgc3RyLCBzaXplX3QgblN0YXJ0ID0g
bnBvcykgY29uc3Q7DQoNCg0KDQoNCiAgc2l6ZV90IHJmaW5kKGNvbnN0IGNoYXIqIHN6LCBzaXpl
X3QgblN0YXJ0ID0gbnBvcywNCiAgICAgICAgICBzaXplX3QgbiA9IG5wb3MpIGNvbnN0Ow0KDQog
IHNpemVfdCByZmluZChjaGFyIGNoLCBzaXplX3QgblN0YXJ0ID0gbnBvcykgY29uc3Q7DQoNCg0K
DQoNCg0KICBzaXplX3QgZmluZF9maXJzdF9vZihjb25zdCB3eFN0cmluZyYgc3RyLCBzaXplX3Qg
blN0YXJ0ID0gMCkgY29uc3QNCiAgICB7IHJldHVybiBmaW5kX2ZpcnN0X29mKHN0ci5jX3N0cigp
LCBuU3RhcnQpOyB9DQoNCiAgc2l6ZV90IGZpbmRfZmlyc3Rfb2YoY29uc3QgY2hhciogc3osIHNp
emVfdCBuU3RhcnQgPSAwKSBjb25zdDsNCg0KICBzaXplX3QgZmluZF9maXJzdF9vZihjaGFyIGMs
IHNpemVfdCBuU3RhcnQgPSAwKSBjb25zdA0KICAgIHsgcmV0dXJuIGZpbmQoYywgblN0YXJ0KTsg
fQ0KDQogIHNpemVfdCBmaW5kX2xhc3Rfb2YgKGNvbnN0IHd4U3RyaW5nJiBzdHIsIHNpemVfdCBu
U3RhcnQgPSBucG9zKSBjb25zdA0KICAgIHsgcmV0dXJuIGZpbmRfbGFzdF9vZihzdHIuY19zdHIo
KSwgblN0YXJ0KTsgfQ0KDQogIHNpemVfdCBmaW5kX2xhc3Rfb2YgKGNvbnN0IGNoYXIqIHN6LCBz
aXplX3QgblN0YXJ0ID0gbnBvcykgY29uc3Q7DQoNCiAgc2l6ZV90IGZpbmRfbGFzdF9vZihjaGFy
IGMsIHNpemVfdCBuU3RhcnQgPSBucG9zKSBjb25zdA0KICAgIHsgcmV0dXJuIHJmaW5kKGMsIG5T
dGFydCk7IH0NCg0KDQoNCg0KICBzaXplX3QgZmluZF9maXJzdF9ub3Rfb2YoY29uc3Qgd3hTdHJp
bmcmIHN0ciwgc2l6ZV90IG5TdGFydCA9IDApIGNvbnN0DQogICAgeyByZXR1cm4gZmluZF9maXJz
dF9ub3Rfb2Yoc3RyLmNfc3RyKCksIG5TdGFydCk7IH0NCg0KICBzaXplX3QgZmluZF9maXJzdF9u
b3Rfb2YoY29uc3QgY2hhciogc3osIHNpemVfdCBuU3RhcnQgPSAwKSBjb25zdDsNCg0KICBzaXpl
X3QgZmluZF9maXJzdF9ub3Rfb2YoY2hhciBjaCwgc2l6ZV90IG5TdGFydCA9IDApIGNvbnN0Ow0K
DQogIHNpemVfdCBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IHd4U3RyaW5nJiBzdHIsIHNpemVfdCBu
U3RhcnQgPSBucG9zKSBjb25zdA0KICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfbm90X29mKHN0ci5j
X3N0cigpLCBuU3RhcnQpOyB9DQoNCiAgc2l6ZV90IGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgY2hh
ciogc3osIHNpemVfdCBuU3RhcnQgPSBucG9zKSBjb25zdDsNCg0KICBzaXplX3QgZmluZF9sYXN0
X25vdF9vZihjaGFyIGNoLCBzaXplX3QgblN0YXJ0ID0gbnBvcykgY29uc3Q7DQoNCg0KDQoNCg0K
ICBpbnQgY29tcGFyZShjb25zdCB3eFN0cmluZyYgc3RyKSBjb25zdCB7IHJldHVybiBDbXAoc3Ry
KTsgfQ0KDQogIGludCBjb21wYXJlKHNpemVfdCBuU3RhcnQsIHNpemVfdCBuTGVuLCBjb25zdCB3
eFN0cmluZyYgc3RyKSBjb25zdA0KICAgIHsgcmV0dXJuIE1pZChuU3RhcnQsIG5MZW4pLkNtcChz
dHIpOyB9DQoNCiAgaW50IGNvbXBhcmUoc2l6ZV90IG5TdGFydCwgc2l6ZV90IG5MZW4sDQogICAg
ICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBzdHIsIHNpemVfdCBuU3RhcnQyLCBzaXplX3Qgbkxl
bjIpIGNvbnN0DQogICAgeyByZXR1cm4gTWlkKG5TdGFydCwgbkxlbikuQ21wKHN0ci5NaWQoblN0
YXJ0MiwgbkxlbjIpKTsgfQ0KDQogIGludCBjb21wYXJlKGNvbnN0IGNoYXIqIHN6KSBjb25zdCB7
IHJldHVybiBDbXAoc3opOyB9DQoNCiAgaW50IGNvbXBhcmUoc2l6ZV90IG5TdGFydCwgc2l6ZV90
IG5MZW4sDQogICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN6LCBzaXplX3QgbkNvdW50ID0gbnBv
cykgY29uc3QNCiAgICB7IHJldHVybiBNaWQoblN0YXJ0LCBuTGVuKS5DbXAod3hTdHJpbmcoc3os
IG5Db3VudCkpOyB9DQoNCg0KICB3eFN0cmluZyBzdWJzdHIoc2l6ZV90IG5TdGFydCA9IDAsIHNp
emVfdCBuTGVuID0gbnBvcykgY29uc3QNCiAgICB7IHJldHVybiBNaWQoblN0YXJ0LCBuTGVuKTsg
fQ0KDQp9Ow0KIyA5NTUgIi4uLy4uL2luY2x1ZGUvd3gvc3RyaW5nLmgiDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSB3eEFycmF5U3RyaW5nDQp7DQpwdWJsaWM6DQoNCiAgdHlwZWRl
ZiBpbnQgKCpDb21wYXJlRnVuY3Rpb24pKGNvbnN0IHd4U3RyaW5nJiBmaXJzdCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBzZWNvbmQpOw0KDQoNCg0K
DQogIHd4QXJyYXlTdHJpbmcoYm9vbCBhdXRvU29ydCA9IDApOw0KDQogIHd4QXJyYXlTdHJpbmco
Y29uc3Qgd3hBcnJheVN0cmluZyYgYXJyYXkpOw0KDQogIHd4QXJyYXlTdHJpbmcmIG9wZXJhdG9y
PShjb25zdCB3eEFycmF5U3RyaW5nJiBzcmMpOw0KDQogfnd4QXJyYXlTdHJpbmcoKTsNCg0KDQoN
CiAgdm9pZCBFbXB0eSgpOw0KDQogIHZvaWQgQ2xlYXIoKTsNCg0KICB2b2lkIEFsbG9jKHNpemVf
dCBuQ291bnQpOw0KDQogIHZvaWQgU2hyaW5rKCk7DQoNCg0KDQogIHNpemVfdCBHZXRDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbkNvdW50OyB9DQoNCiAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9uQ291bnQgPT0gMDsgfQ0KDQogIHNpemVfdCBDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbkNvdW50OyB9DQoNCg0KDQogIHd4U3RyaW5nJiBJdGVtKHNpemVfdCBuSW5kZXgpIGNvbnN0
DQogICAgeyBpZiAoICEobkluZGV4IDwgbV9uQ291bnQpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5j
bHVkZS93eC9zdHJpbmcuaCIsIDk5NCk7IHJldHVybiAqKHd4U3RyaW5nICopJihtX3BJdGVtc1tu
SW5kZXhdKTsgfQ0KDQogIHd4U3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBuSW5kZXgpIGNvbnN0
IHsgcmV0dXJuIEl0ZW0obkluZGV4KTsgfQ0KDQogIHd4U3RyaW5nJiBMYXN0KCkgY29uc3QgeyBp
ZiAoICEoIUlzRW1wdHkoKSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L3N0cmluZy5o
IiwgOTk4KTsgcmV0dXJuIEl0ZW0oQ291bnQoKSAtIDEpOyB9DQoNCg0KDQoNCg0KDQogIGludCBJ
bmRleCAoY29uc3QgY2hhciAqc3osIGJvb2wgYkNhc2UgPSAxLCBib29sIGJGcm9tRW5kID0gMCkg
Y29uc3Q7DQoNCg0KICBzaXplX3QgQWRkKGNvbnN0IHd4U3RyaW5nJiBzdHIpOw0KDQogIHZvaWQg
SW5zZXJ0KGNvbnN0IHd4U3RyaW5nJiBzdHIsIHNpemVfdCB1aUluZGV4KTsNCg0KICB2b2lkIFJl
bW92ZShjb25zdCBjaGFyICpzeik7DQoNCiAgdm9pZCBSZW1vdmVBdChzaXplX3QgbkluZGV4KTsN
Cg0KDQogIHZvaWQgUmVtb3ZlKHNpemVfdCBuSW5kZXgpOw0KDQoNCg0KDQogIHZvaWQgU29ydChi
b29sIHJldmVyc2VPcmRlciA9IDApOw0KDQogIHZvaWQgU29ydChDb21wYXJlRnVuY3Rpb24gY29t
cGFyZUZ1bmN0aW9uKTsNCg0KDQoNCiAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHd4QXJyYXlTdHJp
bmcmIGEpIGNvbnN0Ow0KDQogIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3eEFycmF5U3RyaW5nJiBh
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IGEpOyB9DQoNCnByb3RlY3RlZDoNCiAgdm9pZCBD
b3B5KGNvbnN0IHd4QXJyYXlTdHJpbmcmIHNyYyk7DQoNCnByaXZhdGU6DQogIHZvaWQgR3Jvdygp
Ow0KICB2b2lkIEZyZWUoKTsNCg0KICB2b2lkIERvU29ydCgpOw0KDQogIHNpemVfdCBtX25TaXpl
LA0KICAgICAgICAgIG1fbkNvdW50Ow0KDQogIGNoYXIgKiptX3BJdGVtczsNCg0KICBib29sIG1f
YXV0b1NvcnQ7DQp9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFNvcnRl
ZEFycmF5U3RyaW5nIDogcHVibGljIHd4QXJyYXlTdHJpbmcNCnsNCnB1YmxpYzoNCiAgd3hTb3J0
ZWRBcnJheVN0cmluZygpIDogd3hBcnJheVN0cmluZygxKQ0KICAgIHsgfQ0KICB3eFNvcnRlZEFy
cmF5U3RyaW5nKGNvbnN0IHd4QXJyYXlTdHJpbmcmIGFycmF5KSA6IHd4QXJyYXlTdHJpbmcoMSkN
CiAgICB7IENvcHkoYXJyYXkpOyB9DQp9Ow0KDQoNCg0KDQoNCg0KaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCB3eFN0cmluZyYgczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMx
LkNtcChzMikgPT0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCB3eFN0cmlu
ZyYgczEsIGNvbnN0IGNoYXIgKiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgPT0gMCk7IH0NCg0K
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyICogczEsIGNvbnN0IHd4U3RyaW5nJiBz
MikgeyByZXR1cm4gKHMyLkNtcChzMSkgPT0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCB3eFN0cmluZyYgczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMxLkNt
cChzMikgIT0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3eFN0cmluZyYg
czEsIGNvbnN0IGNoYXIgKiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgIT0gMCk7IH0NCg0KaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyICogczEsIGNvbnN0IHd4U3RyaW5nJiBzMikg
eyByZXR1cm4gKHMyLkNtcChzMSkgIT0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I8IChj
b25zdCB3eFN0cmluZyYgczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMxLkNtcChz
MikgPCAwKTsgfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcjwgKGNvbnN0IHd4U3RyaW5nJiBzMSwg
Y29uc3QgY2hhciAqIHMyKSB7IHJldHVybiAoczEuQ21wKHMyKSA8IDApOyB9DQoNCmlubGluZSBi
b29sIG9wZXJhdG9yPCAoY29uc3QgY2hhciAqIHMxLCBjb25zdCB3eFN0cmluZyYgczIpIHsgcmV0
dXJuIChzMi5DbXAoczEpID4gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I+IChjb25zdCB3
eFN0cmluZyYgczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgPiAw
KTsgfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IHd4U3RyaW5nJiBzMSwgY29uc3Qg
Y2hhciAqIHMyKSB7IHJldHVybiAoczEuQ21wKHMyKSA+IDApOyB9DQoNCmlubGluZSBib29sIG9w
ZXJhdG9yPiAoY29uc3QgY2hhciAqIHMxLCBjb25zdCB3eFN0cmluZyYgczIpIHsgcmV0dXJuIChz
Mi5DbXAoczEpIDwgMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCB3eFN0cmlu
ZyYgczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgPD0gMCk7IH0N
Cg0KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCB3eFN0cmluZyYgczEsIGNvbnN0IGNoYXIg
KiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgPD0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBjaGFyICogczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMyLkNt
cChzMSkgPj0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCB3eFN0cmluZyYg
czEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMxLkNtcChzMikgPj0gMCk7IH0NCg0K
aW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCB3eFN0cmluZyYgczEsIGNvbnN0IGNoYXIgKiBz
MikgeyByZXR1cm4gKHMxLkNtcChzMikgPj0gMCk7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBjaGFyICogczEsIGNvbnN0IHd4U3RyaW5nJiBzMikgeyByZXR1cm4gKHMyLkNtcChz
MSkgPD0gMCk7IH0NCg0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNoYXIgYywgY29uc3Qgd3hT
dHJpbmcmIHMpIHsgcmV0dXJuIHMuSXNTYW1lQXMoYyk7IH0NCmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3Qgd3hTdHJpbmcmIHMsIGNoYXIgYykgeyByZXR1cm4gcy5Jc1NhbWVBcyhjKTsgfQ0K
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjaGFyIGMsIGNvbnN0IHd4U3RyaW5nJiBzKSB7IHJldHVy
biAhcy5Jc1NhbWVBcyhjKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3eFN0cmlu
ZyYgcywgY2hhciBjKSB7IHJldHVybiAhcy5Jc1NhbWVBcyhjKTsgfQ0KIyAxMTE1ICIuLi8uLi9p
bmNsdWRlL3d4L3N0cmluZy5oIg0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCB3eFN0cmlu
ZyYgczEsIGNvbnN0IHd4Q2hhckJ1ZmZlciYgczIpDQogICAgeyByZXR1cm4gKHMxLkNtcCgoY29u
c3QgY2hhciAqKXMyKSA9PSAwKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCB3eENo
YXJCdWZmZXImIHMxLCBjb25zdCB3eFN0cmluZyYgczIpDQogICAgeyByZXR1cm4gKHMyLkNtcCgo
Y29uc3QgY2hhciAqKXMxKSA9PSAwKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3
eFN0cmluZyYgczEsIGNvbnN0IHd4Q2hhckJ1ZmZlciYgczIpDQogICAgeyByZXR1cm4gKHMxLkNt
cCgoY29uc3QgY2hhciAqKXMyKSAhPSAwKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCB3eENoYXJCdWZmZXImIHMxLCBjb25zdCB3eFN0cmluZyYgczIpDQogICAgeyByZXR1cm4gKHMy
LkNtcCgoY29uc3QgY2hhciAqKXMxKSAhPSAwKTsgfQ0KDQoNCnd4U3RyaW5nIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIG9wZXJhdG9yKyhjb25zdCB3eFN0cmluZyYgc3RyaW5nMSwgY29uc3Qg
d3hTdHJpbmcmIHN0cmluZzIpOw0Kd3hTdHJpbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
b3BlcmF0b3IrKGNvbnN0IHd4U3RyaW5nJiBzdHJpbmcsIGNoYXIgY2gpOw0Kd3hTdHJpbmcgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3BlcmF0b3IrKGNoYXIgY2gsIGNvbnN0IHd4U3RyaW5n
JiBzdHJpbmcpOw0Kd3hTdHJpbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3BlcmF0b3Ir
KGNvbnN0IHd4U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKnBzeik7DQp3eFN0cmluZyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBvcGVyYXRvcisoY29uc3QgY2hhciAqcHN6LCBjb25zdCB3
eFN0cmluZyYgc3RyaW5nKTsNCg0KDQoNCg0KDQoNCmlubGluZSB3eFN0cmluZyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSBvcGVyYXRvcisoY29uc3Qgd3hTdHJpbmcmIHN0cmluZywgY29uc3Qg
d3hDaGFyQnVmZmVyJiBidWYpDQogICAgeyByZXR1cm4gc3RyaW5nICsgKGNvbnN0IGNoYXIgKili
dWY7IH0NCmlubGluZSB3eFN0cmluZyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBvcGVyYXRv
cisoY29uc3Qgd3hDaGFyQnVmZmVyJiBidWYsIGNvbnN0IHd4U3RyaW5nJiBzdHJpbmcpDQogICAg
eyByZXR1cm4gKGNvbnN0IGNoYXIgKilidWYgKyBzdHJpbmc7IH0NCiMgMjEgIi4uLy4uL2luY2x1
ZGUvd3gvbWVtb3J5LmgiIDINCiMgMjkgIi4uLy4uL2luY2x1ZGUvd3gvbWVtb3J5LmgiDQojIDEg
InQ6L21zeXMvMS4wL21pbmd3L2xpYi9nY2MtbGliL2k2ODYtcGMtbWluZ3czMi8zLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzDQojIDMwICIuLi8uLi9pbmNsdWRlL3d4L21lbW9yeS5oIiAyDQoNCg0K
DQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JhY2t3YXJkL2lvc3RyZWFt
LmgiIDEgMw0KIyAzMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYmFja3dhcmQv
aW9zdHJlYW0uaCIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iYWNr
d2FyZC9iYWNrd2FyZF93YXJuaW5nLmgiIDEgMw0KIyAzMiAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9nKystdjMvYmFja3dhcmQvaW9zdHJlYW0uaCIgMiAzDQojIDEgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2lvc3RyZWFtIiAxIDMNCiMgNDMgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL2lvc3RyZWFtIiAzDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvYysrY29uZmlnLmgiIDEgMw0KIyAzNCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvYysr
Y29uZmlnLmgiIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1w
Yy1taW5ndzMyL2JpdHMvb3NfZGVmaW5lcy5oIiAxIDMNCiMgMzUgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2MrK2NvbmZpZy5oIiAyIDMNCiMg
NDUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2lvc3RyZWFtIiAyIDMNCiMgMSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvb3N0cmVhbSIgMSAzDQojIDQ0ICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9vc3RyZWFtIiAzDQoNCiMgMSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaW9zIiAxIDMNCiMgNDMgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL2lvcyIgMw0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL2lvc2Z3ZCIgMSAzDQojIDQzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9pb3Nmd2QiIDMNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RyaW5nZndkLmgiIDEgMw0KIyA0MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdHJpbmdmd2QuaCIgMw0KDQoNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KICB0ZW1wbGF0
ZTxjbGFzcyBfQ2hhclQ+DQogICAgc3RydWN0IGNoYXJfdHJhaXRzOw0KDQogIHRlbXBsYXRlPD4g
c3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+Ow0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9B
bGxvYz4NCiAgICBjbGFzcyBhbGxvY2F0b3I7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwNCiAgICAgICAgICAgdHlw
ZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX3N0cmlu
ZzsNCg0KICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBzdHJpbmc7DQogIHR5cGVkZWYgYmFz
aWNfc3RyaW5nPHdjaGFyX3Q+IHdzdHJpbmc7DQp9DQojIDQ2ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9pb3Nmd2QiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL2Zwb3MuaCIgMSAzDQojIDQzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL2Zwb3MuaCIgMw0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2MrK2lvLmgiIDEgMw0KIyAzNSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvYysraW8uaCIgMw0K
IyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jc3RkaW8iIDEgMw0KIyA0OCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3N0ZGlvIiAzDQoNCg0KIyAxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jc3RkZGVmIiAxIDMNCiMgNDcgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2NzdGRkZWYiIDMNCg0KIyAxICJ0Oi9tc3lzLzEuMC9t
aW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEg
Mw0KIyA0OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3N0ZGRlZiIgMiAzDQoN
Cm5hbWVzcGFjZSBzdGQNCnsNCiAgdXNpbmcgOjpwdHJkaWZmX3Q7DQogIHVzaW5nIDo6c2l6ZV90
Ow0KfQ0KIyA1MSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3N0ZGlvIiAyIDMN
CiMgOTcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2NzdGRpbyIgMw0KbmFtZXNw
YWNlIHN0ZA0Kew0KICB1c2luZyA6OkZJTEU7DQogIHVzaW5nIDo6ZnBvc190Ow0KDQogIHVzaW5n
IDo6Y2xlYXJlcnI7DQogIHVzaW5nIDo6ZmNsb3NlOw0KICB1c2luZyA6OmZlb2Y7DQogIHVzaW5n
IDo6ZmVycm9yOw0KICB1c2luZyA6OmZmbHVzaDsNCiAgdXNpbmcgOjpmZ2V0YzsNCiAgdXNpbmcg
OjpmZ2V0cG9zOw0KICB1c2luZyA6OmZnZXRzOw0KICB1c2luZyA6OmZvcGVuOw0KICB1c2luZyA6
OmZwcmludGY7DQogIHVzaW5nIDo6ZnB1dGM7DQogIHVzaW5nIDo6ZnB1dHM7DQogIHVzaW5nIDo6
ZnJlYWQ7DQogIHVzaW5nIDo6ZnJlb3BlbjsNCiAgdXNpbmcgOjpmc2NhbmY7DQogIHVzaW5nIDo6
ZnNlZWs7DQogIHVzaW5nIDo6ZnNldHBvczsNCiAgdXNpbmcgOjpmdGVsbDsNCiAgdXNpbmcgOjpm
d3JpdGU7DQogIHVzaW5nIDo6Z2V0YzsNCiAgdXNpbmcgOjpnZXRjaGFyOw0KICB1c2luZyA6Omdl
dHM7DQogIHVzaW5nIDo6cGVycm9yOw0KICB1c2luZyA6OnByaW50ZjsNCiAgdXNpbmcgOjpwdXRj
Ow0KICB1c2luZyA6OnB1dGNoYXI7DQogIHVzaW5nIDo6cHV0czsNCiAgdXNpbmcgOjpyZW1vdmU7
DQogIHVzaW5nIDo6cmVuYW1lOw0KICB1c2luZyA6OnJld2luZDsNCiAgdXNpbmcgOjpzY2FuZjsN
CiAgdXNpbmcgOjpzZXRidWY7DQogIHVzaW5nIDo6c2V0dmJ1ZjsNCiAgdXNpbmcgOjpzcHJpbnRm
Ow0KICB1c2luZyA6OnNzY2FuZjsNCiAgdXNpbmcgOjp0bXBmaWxlOw0KICB1c2luZyA6OnRtcG5h
bTsNCiAgdXNpbmcgOjp1bmdldGM7DQogIHVzaW5nIDo6dmZwcmludGY7DQogIHVzaW5nIDo6dnBy
aW50ZjsNCiAgdXNpbmcgOjp2c3ByaW50ZjsNCn0NCiMgMzYgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2MrK2lvLmgiIDIgMw0KDQojIDEgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2d0aHIu
aCIgMSAzDQojIDk4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pNjg2LXBjLW1p
bmd3MzIvYml0cy9ndGhyLmgiIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvZ3Roci1kZWZhdWx0LmgiIDEgMw0KIyA2NyAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvZ3Roci1kZWZh
dWx0LmgiIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9lcnJuby5oIiAxIDMNCiMg
OTYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZXJybm8uaCIgMw0KZXh0ZXJuICJDIiB7DQoj
IDEwNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9lcnJuby5oIiAzDQppbnQqIF9lcnJubygp
Ow0KDQoNCg0KDQp9DQojIDY4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pNjg2
LXBjLW1pbmd3MzIvYml0cy9ndGhyLWRlZmF1bHQuaCIgMiAzDQojIDMzMSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvZ3Roci1kZWZhdWx0Lmgi
IDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDEgMw0KIyA5OCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDMNCiMgMSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS93aW5kZWYuaCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCiMgMTIwICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRlZi5oIiAzDQp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgRFdPUkQ7DQp0eXBlZGVmIGludCBXSU5CT09MLCpQV0lOQk9PTCwqTFBXSU5CT09MOw0KDQoN
Cg0KdHlwZWRlZiBXSU5CT09MIEJPT0w7DQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQllU
RTsNCg0KdHlwZWRlZiBCT09MICpQQk9PTCwqTFBCT09MOw0KdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBXT1JEOw0KdHlwZWRlZiBmbG9hdCBGTE9BVDsNCnR5cGVkZWYgRkxPQVQgKlBGTE9BVDsNCnR5
cGVkZWYgQllURSAqUEJZVEUsKkxQQllURTsNCnR5cGVkZWYgaW50ICpQSU5ULCpMUElOVDsNCnR5
cGVkZWYgV09SRCAqUFdPUkQsKkxQV09SRDsNCnR5cGVkZWYgbG9uZyAqTFBMT05HOw0KdHlwZWRl
ZiBEV09SRCAqUERXT1JELCpMUERXT1JEOw0KdHlwZWRlZiB2b2lkICpQVk9JRCwqTFBWT0lEOw0K
dHlwZWRlZiBjb25zdCB2b2lkICpQQ1ZPSUQsKkxQQ1ZPSUQ7DQp0eXBlZGVmIGludCBJTlQ7DQp0
eXBlZGVmIHVuc2lnbmVkIGludCBVSU5ULCpQVUlOVCwqTFBVSU5UOw0KDQojIDEgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvd2lubnQuaCIgMSAzDQojIDI3ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL3dpbm50LmgiIDMNCmV4dGVybiAiQyIgew0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS93aW5lcnJvci5oIiAxIDMNCiMgMzEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvd2lubnQuaCIgMiAzDQojIDQ1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm50Lmgi
IDMNCnR5cGVkZWYgY2hhciBDSEFSOw0KdHlwZWRlZiBzaG9ydCBTSE9SVDsNCnR5cGVkZWYgbG9u
ZyBMT05HOw0KdHlwZWRlZiBDSEFSIENDSEFSOw0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVDSEFS
LCpQVUNIQVI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVTSE9SVCwqUFVTSE9SVDsNCnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBVTE9ORywqUFVMT05HOw0KdHlwZWRlZiBjaGFyICpQU1o7DQojIDY1
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm50LmgiIDMNCnR5cGVkZWYgd2NoYXJfdCBX
Q0hBUjsNCnR5cGVkZWYgV0NIQVIgKlBXQ0hBUiwqTFBXQ0gsKlBXQ0gsKk5XUFNUUiwqTFBXU1RS
LCpQV1NUUjsNCnR5cGVkZWYgY29uc3QgV0NIQVIgKkxQQ1dDSCwqUENXQ0gsKkxQQ1dTVFIsKlBD
V1NUUjsNCnR5cGVkZWYgQ0hBUiAqUENIQVIsKkxQQ0gsKlBDSCwqTlBTVFIsKkxQU1RSLCpQU1RS
Ow0KdHlwZWRlZiBjb25zdCBDSEFSICpMUENDSCwqUENTVFIsKkxQQ1NUUjsNCiMgNzkgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvd2lubnQuaCIgMw0KdHlwZWRlZiBDSEFSIFRDSEFSOw0KDQoN
CnR5cGVkZWYgVENIQVIgVEJZVEUsKlBUQ0gsKlBUQllURTsNCnR5cGVkZWYgVENIQVIgKkxQVENI
LCpQVFNUUiwqTFBUU1RSLCpMUCwqUFRDSEFSOw0KdHlwZWRlZiBjb25zdCBUQ0hBUiAqTFBDVFNU
UjsNCiMgMTAzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm50LmgiIDMNCnR5cGVkZWYg
U0hPUlQgKlBTSE9SVDsNCnR5cGVkZWYgTE9ORyAqUExPTkc7DQp0eXBlZGVmIHZvaWQgKkhBTkRM
RTsNCnR5cGVkZWYgSEFORExFICpQSEFORExFLCpMUEhBTkRMRTsNCg0KDQoNCg0KDQp0eXBlZGVm
IERXT1JEIExDSUQ7DQp0eXBlZGVmIFBEV09SRCBQTENJRDsNCnR5cGVkZWYgV09SRCBMQU5HSUQ7
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgbG9uZyBsb25nIExPTkdMT05HOw0KdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgRFdPUkRMT05HOw0KDQoNCg0KdHlwZWRlZiBMT05HTE9ORyAqUExPTkdM
T05HOw0KdHlwZWRlZiBEV09SRExPTkcgKlBEV09SRExPTkc7DQp0eXBlZGVmIERXT1JETE9ORyBV
TE9OR0xPTkcsKlBVTE9OR0xPTkc7DQp0eXBlZGVmIExPTkdMT05HIFVTTjsNCiMgMTQwICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm50LmgiIDMNCnR5cGVkZWYgQllURSBCT09MRUFOLCpQ
Qk9PTEVBTjsNCg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9iYXNldHNkLmgi
IDEgMw0KIyA0NSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9iYXNldHNkLmgiIDMNCmV4dGVy
biAiQyIgew0KDQp0eXBlZGVmIGludCBMT05HMzIsICpQTE9ORzMyOw0KDQp0eXBlZGVmIGludCBJ
TlQzMiwgKlBJTlQzMjsNCg0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUxPTkczMiwgKlBVTE9ORzMy
Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgRFdPUkQzMiwgKlBEV09SRDMyOw0KdHlwZWRlZiB1bnNp
Z25lZCBpbnQgVUlOVDMyLCAqUFVJTlQzMjsNCiMgOTQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvYmFzZXRzZC5oIiAzDQp0eXBlZGVmIGludCBJTlRfUFRSLCAqUElOVF9QVFI7DQp0eXBlZGVm
IHVuc2lnbmVkIGludCBVSU5UX1BUUiwgKlBVSU5UX1BUUjsNCnR5cGVkZWYgbG9uZyBMT05HX1BU
UiwgKlBMT05HX1BUUjsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBVTE9OR19QVFIsICpQVUxPTkdf
UFRSOw0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVSEFMRl9QVFIsICpQVUhBTEZfUFRSOw0KdHlw
ZWRlZiBzaG9ydCBIQUxGX1BUUiwgKlBIQUxGX1BUUjsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBI
QU5ETEVfUFRSOw0KDQoNCnR5cGVkZWYgVUxPTkdfUFRSIFNJWkVfVCwgKlBTSVpFX1Q7DQp0eXBl
ZGVmIExPTkdfUFRSIFNTSVpFX1QsICpQU1NJWkVfVDsNCnR5cGVkZWYgVUxPTkdfUFRSIERXT1JE
X1BUUiwgKlBEV09SRF9QVFI7DQp0eXBlZGVmIGxvbmcgbG9uZyBMT05HNjQsICpQTE9ORzY0Ow0K
dHlwZWRlZiBsb25nIGxvbmcgSU5UNjQsICpQSU5UNjQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBVTE9ORzY0LCAqUFVMT05HNjQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBEV09S
RDY0LCAqUERXT1JENjQ7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBVSU5UNjQsICpQVUlO
VDY0Ow0KDQp9DQojIDE0NSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5udC5oIiAyIDMN
CiMgMTA2OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5udC5oIiAzDQp0eXBlZGVmIERX
T1JEIEFDQ0VTU19NQVNLOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9HVUlEIHsNCiAgICAgICAgdW5z
aWduZWQgbG9uZyBEYXRhMTsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgRGF0YTI7DQogICAgICAg
IHVuc2lnbmVkIHNob3J0IERhdGEzOw0KICAgICAgICB1bnNpZ25lZCBjaGFyIERhdGE0WzhdOw0K
fSBHVUlELCAqUkVGR1VJRCwgKkxQR1VJRDsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfR0VORVJJQ19N
QVBQSU5HIHsNCiAgICAgICAgQUNDRVNTX01BU0sgR2VuZXJpY1JlYWQ7DQogICAgICAgIEFDQ0VT
U19NQVNLIEdlbmVyaWNXcml0ZTsNCiAgICAgICAgQUNDRVNTX01BU0sgR2VuZXJpY0V4ZWN1dGU7
DQogICAgICAgIEFDQ0VTU19NQVNLIEdlbmVyaWNBbGw7DQp9IEdFTkVSSUNfTUFQUElORywgKlBH
RU5FUklDX01BUFBJTkc7DQp0eXBlZGVmIHN0cnVjdCBfQUNFX0hFQURFUiB7DQogICAgICAgIEJZ
VEUgQWNlVHlwZTsNCiAgICAgICAgQllURSBBY2VGbGFnczsNCiAgICAgICAgV09SRCBBY2VTaXpl
Ow0KfSBBQ0VfSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgX0FDQ0VTU19BTExPV0VEX0FDRSB7DQog
ICAgICAgIEFDRV9IRUFERVIgSGVhZGVyOw0KICAgICAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAg
ICAgICBEV09SRCBTaWRTdGFydDsNCn0gQUNDRVNTX0FMTE9XRURfQUNFOw0KdHlwZWRlZiBzdHJ1
Y3QgX0FDQ0VTU19ERU5JRURfQUNFIHsNCiAgICAgICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAg
ICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBBQ0NFU1Nf
REVOSUVEX0FDRTsNCnR5cGVkZWYgc3RydWN0IF9TWVNURU1fQVVESVRfQUNFIHsNCiAgICAgICAg
QUNFX0hFQURFUiBIZWFkZXI7DQogICAgICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgICAgIERX
T1JEIFNpZFN0YXJ0Ow0KfSBTWVNURU1fQVVESVRfQUNFOw0KdHlwZWRlZiBTWVNURU1fQVVESVRf
QUNFICpQU1lTVEVNX0FVRElUX0FDRTsNCnR5cGVkZWYgc3RydWN0IF9TWVNURU1fQUxBUk1fQUNF
IHsNCiAgICAgICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAgICAgIEFDQ0VTU19NQVNLIE1hc2s7
DQogICAgICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBTWVNURU1fQUxBUk1fQUNFLCpQU1lTVEVNX0FM
QVJNX0FDRTsNCnR5cGVkZWYgc3RydWN0IF9BQ0NFU1NfQUxMT1dFRF9PQkpFQ1RfQUNFIHsNCiAg
ICAgICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAgICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAg
ICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBHVUlEIE9iamVjdFR5cGU7DQogICAgICAgIEdVSUQg
SW5oZXJpdGVkT2JqZWN0VHlwZTsNCiAgICAgICAgRFdPUkQgU2lkU3RhcnQ7DQp9IEFDQ0VTU19B
TExPV0VEX09CSkVDVF9BQ0UsKlBBQ0NFU1NfQUxMT1dFRF9PQkpFQ1RfQUNFOw0KdHlwZWRlZiBz
dHJ1Y3QgX0FDQ0VTU19ERU5JRURfT0JKRUNUX0FDRSB7DQogICAgICAgIEFDRV9IRUFERVIgSGVh
ZGVyOw0KICAgICAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgICAgICBEV09SRCBGbGFnczsNCiAg
ICAgICAgR1VJRCBPYmplY3RUeXBlOw0KICAgICAgICBHVUlEIEluaGVyaXRlZE9iamVjdFR5cGU7
DQogICAgICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBBQ0NFU1NfREVOSUVEX09CSkVDVF9BQ0UsKlBB
Q0NFU1NfREVOSUVEX09CSkVDVF9BQ0U7DQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FVRElUX09C
SkVDVF9BQ0Ugew0KICAgICAgICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICAgICAgQUNDRVNTX01B
U0sgTWFzazsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIEdVSUQgT2JqZWN0VHlwZTsN
CiAgICAgICAgR1VJRCBJbmhlcml0ZWRPYmplY3RUeXBlOw0KICAgICAgICBEV09SRCBTaWRTdGFy
dDsNCn0gU1lTVEVNX0FVRElUX09CSkVDVF9BQ0UsKlBTWVNURU1fQVVESVRfT0JKRUNUX0FDRTsN
CnR5cGVkZWYgc3RydWN0IF9TWVNURU1fQUxBUk1fT0JKRUNUX0FDRSB7DQogICAgICAgIEFDRV9I
RUFERVIgSGVhZGVyOw0KICAgICAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgICAgICBEV09SRCBG
bGFnczsNCiAgICAgICAgR1VJRCBPYmplY3RUeXBlOw0KICAgICAgICBHVUlEIEluaGVyaXRlZE9i
amVjdFR5cGU7DQogICAgICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBTWVNURU1fQUxBUk1fT0JKRUNU
X0FDRSwqUFNZU1RFTV9BTEFSTV9PQkpFQ1RfQUNFOw0KdHlwZWRlZiBzdHJ1Y3QgX0FDTCB7DQog
ICAgICAgIEJZVEUgQWNsUmV2aXNpb247DQogICAgICAgIEJZVEUgU2J6MTsNCiAgICAgICAgV09S
RCBBY2xTaXplOw0KICAgICAgICBXT1JEIEFjZUNvdW50Ow0KICAgICAgICBXT1JEIFNiejI7DQp9
IEFDTCwqUEFDTDsNCnR5cGVkZWYgc3RydWN0IF9BQ0xfUkVWSVNJT05fSU5GT1JNQVRJT04gew0K
ICAgICAgICBEV09SRCBBY2xSZXZpc2lvbjsNCn0gQUNMX1JFVklTSU9OX0lORk9STUFUSU9OOw0K
dHlwZWRlZiBzdHJ1Y3QgX0FDTF9TSVpFX0lORk9STUFUSU9OIHsNCiAgICAgICAgRFdPUkQgQWNl
Q291bnQ7DQogICAgICAgIERXT1JEIEFjbEJ5dGVzSW5Vc2U7DQogICAgICAgIERXT1JEIEFjbEJ5
dGVzRnJlZTsNCn0gQUNMX1NJWkVfSU5GT1JNQVRJT047DQojIDExNzEgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvd2lubnQuaCIgMw0KdHlwZWRlZiBzdHJ1Y3QgX0ZMT0FUSU5HX1NBVkVfQVJF
QSB7DQogICAgICAgIERXT1JEIENvbnRyb2xXb3JkOw0KICAgICAgICBEV09SRCBTdGF0dXNXb3Jk
Ow0KICAgICAgICBEV09SRCBUYWdXb3JkOw0KICAgICAgICBEV09SRCBFcnJvck9mZnNldDsNCiAg
ICAgICAgRFdPUkQgRXJyb3JTZWxlY3RvcjsNCiAgICAgICAgRFdPUkQgRGF0YU9mZnNldDsNCiAg
ICAgICAgRFdPUkQgRGF0YVNlbGVjdG9yOw0KICAgICAgICBCWVRFIFJlZ2lzdGVyQXJlYVs4MF07
DQogICAgICAgIERXT1JEIENyME5weFN0YXRlOw0KfSBGTE9BVElOR19TQVZFX0FSRUE7DQp0eXBl
ZGVmIHN0cnVjdCBfQ09OVEVYVCB7DQogICAgICAgIERXT1JEIENvbnRleHRGbGFnczsNCiAgICAg
ICAgRFdPUkQgRHIwOw0KICAgICAgICBEV09SRCBEcjE7DQogICAgICAgIERXT1JEIERyMjsNCiAg
ICAgICAgRFdPUkQgRHIzOw0KICAgICAgICBEV09SRCBEcjY7DQogICAgICAgIERXT1JEIERyNzsN
CiAgICAgICAgRkxPQVRJTkdfU0FWRV9BUkVBIEZsb2F0U2F2ZTsNCiAgICAgICAgRFdPUkQgU2Vn
R3M7DQogICAgICAgIERXT1JEIFNlZ0ZzOw0KICAgICAgICBEV09SRCBTZWdFczsNCiAgICAgICAg
RFdPUkQgU2VnRHM7DQogICAgICAgIERXT1JEIEVkaTsNCiAgICAgICAgRFdPUkQgRXNpOw0KICAg
ICAgICBEV09SRCBFYng7DQogICAgICAgIERXT1JEIEVkeDsNCiAgICAgICAgRFdPUkQgRWN4Ow0K
ICAgICAgICBEV09SRCBFYXg7DQogICAgICAgIERXT1JEIEVicDsNCiAgICAgICAgRFdPUkQgRWlw
Ow0KICAgICAgICBEV09SRCBTZWdDczsNCiAgICAgICAgRFdPUkQgRUZsYWdzOw0KICAgICAgICBE
V09SRCBFc3A7DQogICAgICAgIERXT1JEIFNlZ1NzOw0KfSBDT05URVhUOw0KIyAxNjkwICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm50LmgiIDMNCnR5cGVkZWYgQ09OVEVYVCAqUENPTlRF
WFQsKkxQQ09OVEVYVDsNCnR5cGVkZWYgc3RydWN0IF9FWENFUFRJT05fUkVDT1JEIHsNCiAgICAg
ICAgRFdPUkQgRXhjZXB0aW9uQ29kZTsNCiAgICAgICAgRFdPUkQgRXhjZXB0aW9uRmxhZ3M7DQog
ICAgICAgIHN0cnVjdCBfRVhDRVBUSU9OX1JFQ09SRCAqRXhjZXB0aW9uUmVjb3JkOw0KICAgICAg
ICBQVk9JRCBFeGNlcHRpb25BZGRyZXNzOw0KICAgICAgICBEV09SRCBOdW1iZXJQYXJhbWV0ZXJz
Ow0KICAgICAgICBEV09SRCBFeGNlcHRpb25JbmZvcm1hdGlvblsxNV07DQp9IEVYQ0VQVElPTl9S
RUNPUkQsKlBFWENFUFRJT05fUkVDT1JEOw0KdHlwZWRlZiBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lO
VEVSUyB7DQogICAgICAgIFBFWENFUFRJT05fUkVDT1JEIEV4Y2VwdGlvblJlY29yZDsNCiAgICAg
ICAgUENPTlRFWFQgQ29udGV4dFJlY29yZDsNCn0gRVhDRVBUSU9OX1BPSU5URVJTLCpQRVhDRVBU
SU9OX1BPSU5URVJTLCpMUEVYQ0VQVElPTl9QT0lOVEVSUzsNCnR5cGVkZWYgdW5pb24gX0xBUkdF
X0lOVEVHRVIgew0KICBzdHJ1Y3Qgew0KICAgIERXT1JEIExvd1BhcnQ7DQogICAgTE9ORyBIaWdo
UGFydDsNCiAgfSB1Ow0KDQogIHN0cnVjdCB7DQogICAgRFdPUkQgTG93UGFydDsNCiAgICBMT05H
IEhpZ2hQYXJ0Ow0KICB9Ow0KDQogIExPTkdMT05HIFF1YWRQYXJ0Ow0KfSBMQVJHRV9JTlRFR0VS
LCAqUExBUkdFX0lOVEVHRVI7DQp0eXBlZGVmIHVuaW9uIF9VTEFSR0VfSU5URUdFUiB7DQogIHN0
cnVjdCB7DQogICAgRFdPUkQgTG93UGFydDsNCiAgICBEV09SRCBIaWdoUGFydDsNCiAgfSB1Ow0K
DQogIHN0cnVjdCB7DQogICAgRFdPUkQgTG93UGFydDsNCiAgICBEV09SRCBIaWdoUGFydDsNCiAg
fTsNCg0KICBVTE9OR0xPTkcgUXVhZFBhcnQ7DQp9IFVMQVJHRV9JTlRFR0VSLCAqUFVMQVJHRV9J
TlRFR0VSOw0KdHlwZWRlZiBMQVJHRV9JTlRFR0VSIExVSUQsKlBMVUlEOw0KI3ByYWdtYSBwYWNr
KHB1c2gsNCkNCnR5cGVkZWYgc3RydWN0IF9MVUlEX0FORF9BVFRSSUJVVEVTIHsNCiAgICAgICAg
TFVJRCBMdWlkOw0KICAgICAgICBEV09SRCBBdHRyaWJ1dGVzOw0KfSBMVUlEX0FORF9BVFRSSUJV
VEVTOw0KI3ByYWdtYSBwYWNrKHBvcCkNCnR5cGVkZWYgTFVJRF9BTkRfQVRUUklCVVRFUyBMVUlE
X0FORF9BVFRSSUJVVEVTX0FSUkFZWzFdOw0KdHlwZWRlZiBMVUlEX0FORF9BVFRSSUJVVEVTX0FS
UkFZICpQTFVJRF9BTkRfQVRUUklCVVRFU19BUlJBWTsNCnR5cGVkZWYgc3RydWN0IF9QUklWSUxF
R0VfU0VUIHsNCiAgICAgICAgRFdPUkQgUHJpdmlsZWdlQ291bnQ7DQogICAgICAgIERXT1JEIENv
bnRyb2w7DQogICAgICAgIExVSURfQU5EX0FUVFJJQlVURVMgUHJpdmlsZWdlWzFdOw0KfSBQUklW
SUxFR0VfU0VULCpQUFJJVklMRUdFX1NFVDsNCnR5cGVkZWYgc3RydWN0IF9TRUNVUklUWV9BVFRS
SUJVVEVTIHsNCiAgICAgICAgRFdPUkQgbkxlbmd0aDsNCiAgICAgICAgTFBWT0lEIGxwU2VjdXJp
dHlEZXNjcmlwdG9yOw0KICAgICAgICBCT09MIGJJbmhlcml0SGFuZGxlOw0KfSBTRUNVUklUWV9B
VFRSSUJVVEVTLCpQU0VDVVJJVFlfQVRUUklCVVRFUywqTFBTRUNVUklUWV9BVFRSSUJVVEVTOw0K
dHlwZWRlZiBlbnVtIF9TRUNVUklUWV9JTVBFUlNPTkFUSU9OX0xFVkVMIHsNCiAgICAgICAgU2Vj
dXJpdHlBbm9ueW1vdXMsDQogICAgICAgIFNlY3VyaXR5SWRlbnRpZmljYXRpb24sDQogICAgICAg
IFNlY3VyaXR5SW1wZXJzb25hdGlvbiwNCiAgICAgICAgU2VjdXJpdHlEZWxlZ2F0aW9uDQp9IFNF
Q1VSSVRZX0lNUEVSU09OQVRJT05fTEVWRUw7DQp0eXBlZGVmIEJPT0xFQU4gU0VDVVJJVFlfQ09O
VEVYVF9UUkFDS0lOR19NT0RFLCpQU0VDVVJJVFlfQ09OVEVYVF9UUkFDS0lOR19NT0RFOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1NFQ1VSSVRZX1FVQUxJVFlfT0ZfU0VSVklDRSB7DQogICAgICAgIERXT1JE
IExlbmd0aDsNCiAgICAgICAgU0VDVVJJVFlfSU1QRVJTT05BVElPTl9MRVZFTCBJbXBlcnNvbmF0
aW9uTGV2ZWw7DQogICAgICAgIFNFQ1VSSVRZX0NPTlRFWFRfVFJBQ0tJTkdfTU9ERSBDb250ZXh0
VHJhY2tpbmdNb2RlOw0KICAgICAgICBCT09MRUFOIEVmZmVjdGl2ZU9ubHk7DQp9IFNFQ1VSSVRZ
X1FVQUxJVFlfT0ZfU0VSVklDRSwqUFNFQ1VSSVRZX1FVQUxJVFlfT0ZfU0VSVklDRTsNCnR5cGVk
ZWYgUFZPSUQgUEFDQ0VTU19UT0tFTjsNCnR5cGVkZWYgc3RydWN0IF9TRV9JTVBFUlNPTkFUSU9O
X1NUQVRFIHsNCiAgICAgICAgUEFDQ0VTU19UT0tFTiBUb2tlbjsNCiAgICAgICAgQk9PTEVBTiBD
b3B5T25PcGVuOw0KICAgICAgICBCT09MRUFOIEVmZmVjdGl2ZU9ubHk7DQogICAgICAgIFNFQ1VS
SVRZX0lNUEVSU09OQVRJT05fTEVWRUwgTGV2ZWw7DQp9IFNFX0lNUEVSU09OQVRJT05fU1RBVEUs
KlBTRV9JTVBFUlNPTkFUSU9OX1NUQVRFOw0KDQp0eXBlZGVmIHN0cnVjdCBfU0lEX0lERU5USUZJ
RVJfQVVUSE9SSVRZIHsNCiAgICAgICAgQllURSBWYWx1ZVs2XTsNCn0gU0lEX0lERU5USUZJRVJf
QVVUSE9SSVRZLCpQU0lEX0lERU5USUZJRVJfQVVUSE9SSVRZLCpMUFNJRF9JREVOVElGSUVSX0FV
VEhPUklUWTsNCnR5cGVkZWYgUFZPSUQgUFNJRDsNCnR5cGVkZWYgc3RydWN0IF9TSUQgew0KICAg
QllURSBSZXZpc2lvbjsNCiAgIEJZVEUgU3ViQXV0aG9yaXR5Q291bnQ7DQogICBTSURfSURFTlRJ
RklFUl9BVVRIT1JJVFkgSWRlbnRpZmllckF1dGhvcml0eTsNCiAgIERXT1JEIFN1YkF1dGhvcml0
eVsxXTsNCn0gU0lELCAqUElTSUQ7DQp0eXBlZGVmIHN0cnVjdCBfU0lEX0FORF9BVFRSSUJVVEVT
IHsNCiAgICAgICAgUFNJRCBTaWQ7DQogICAgICAgIERXT1JEIEF0dHJpYnV0ZXM7DQp9IFNJRF9B
TkRfQVRUUklCVVRFUzsNCnR5cGVkZWYgU0lEX0FORF9BVFRSSUJVVEVTIFNJRF9BTkRfQVRUUklC
VVRFU19BUlJBWVsxXTsNCnR5cGVkZWYgU0lEX0FORF9BVFRSSUJVVEVTX0FSUkFZICpQU0lEX0FO
RF9BVFRSSUJVVEVTX0FSUkFZOw0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX1NPVVJDRSB7DQogICAg
ICAgIENIQVIgU291cmNlTmFtZVs4XTsNCiAgICAgICAgTFVJRCBTb3VyY2VJZGVudGlmaWVyOw0K
fSBUT0tFTl9TT1VSQ0UsKlBUT0tFTl9TT1VSQ0U7DQp0eXBlZGVmIHN0cnVjdCBfVE9LRU5fQ09O
VFJPTCB7DQogICAgICAgIExVSUQgVG9rZW5JZDsNCiAgICAgICAgTFVJRCBBdXRoZW50aWNhdGlv
bklkOw0KICAgICAgICBMVUlEIE1vZGlmaWVkSWQ7DQogICAgICAgIFRPS0VOX1NPVVJDRSBUb2tl
blNvdXJjZTsNCn0gVE9LRU5fQ09OVFJPTCwqUFRPS0VOX0NPTlRST0w7DQp0eXBlZGVmIHN0cnVj
dCBfVE9LRU5fREVGQVVMVF9EQUNMIHsNCiAgICAgICAgUEFDTCBEZWZhdWx0RGFjbDsNCn0gVE9L
RU5fREVGQVVMVF9EQUNMLCpQVE9LRU5fREVGQVVMVF9EQUNMOw0KdHlwZWRlZiBzdHJ1Y3QgX1RP
S0VOX0dST1VQUyB7DQogICAgICAgIERXT1JEIEdyb3VwQ291bnQ7DQogICAgICAgIFNJRF9BTkRf
QVRUUklCVVRFUyBHcm91cHNbMV07DQp9IFRPS0VOX0dST1VQUywqUFRPS0VOX0dST1VQUywqTFBU
T0tFTl9HUk9VUFM7DQp0eXBlZGVmIHN0cnVjdCBfVE9LRU5fT1dORVIgew0KICAgICAgICBQU0lE
IE93bmVyOw0KfSBUT0tFTl9PV05FUiwqUFRPS0VOX09XTkVSOw0KdHlwZWRlZiBzdHJ1Y3QgX1RP
S0VOX1BSSU1BUllfR1JPVVAgew0KICAgICAgICBQU0lEIFByaW1hcnlHcm91cDsNCn0gVE9LRU5f
UFJJTUFSWV9HUk9VUCwqUFRPS0VOX1BSSU1BUllfR1JPVVA7DQp0eXBlZGVmIHN0cnVjdCBfVE9L
RU5fUFJJVklMRUdFUyB7DQogICAgICAgIERXT1JEIFByaXZpbGVnZUNvdW50Ow0KICAgICAgICBM
VUlEX0FORF9BVFRSSUJVVEVTIFByaXZpbGVnZXNbMV07DQp9IFRPS0VOX1BSSVZJTEVHRVMsKlBU
T0tFTl9QUklWSUxFR0VTLCpMUFRPS0VOX1BSSVZJTEVHRVM7DQp0eXBlZGVmIGVudW0gdGFnVE9L
RU5fVFlQRSB7IFRva2VuUHJpbWFyeT0xLFRva2VuSW1wZXJzb25hdGlvbiB9VE9LRU5fVFlQRTsN
CnR5cGVkZWYgc3RydWN0IF9UT0tFTl9TVEFUSVNUSUNTIHsNCiAgICAgICAgTFVJRCBUb2tlbklk
Ow0KICAgICAgICBMVUlEIEF1dGhlbnRpY2F0aW9uSWQ7DQogICAgICAgIExBUkdFX0lOVEVHRVIg
RXhwaXJhdGlvblRpbWU7DQogICAgICAgIFRPS0VOX1RZUEUgVG9rZW5UeXBlOw0KICAgICAgICBT
RUNVUklUWV9JTVBFUlNPTkFUSU9OX0xFVkVMIEltcGVyc29uYXRpb25MZXZlbDsNCiAgICAgICAg
RFdPUkQgRHluYW1pY0NoYXJnZWQ7DQogICAgICAgIERXT1JEIER5bmFtaWNBdmFpbGFibGU7DQog
ICAgICAgIERXT1JEIEdyb3VwQ291bnQ7DQogICAgICAgIERXT1JEIFByaXZpbGVnZUNvdW50Ow0K
ICAgICAgICBMVUlEIE1vZGlmaWVkSWQ7DQp9IFRPS0VOX1NUQVRJU1RJQ1M7DQp0eXBlZGVmIHN0
cnVjdCBfVE9LRU5fVVNFUiB7DQogICAgICAgIFNJRF9BTkRfQVRUUklCVVRFUyBVc2VyOw0KfSBU
T0tFTl9VU0VSLCAqUFRPS0VOX1VTRVI7DQp0eXBlZGVmIERXT1JEIFNFQ1VSSVRZX0lORk9STUFU
SU9OLCpQU0VDVVJJVFlfSU5GT1JNQVRJT047DQp0eXBlZGVmIFdPUkQgU0VDVVJJVFlfREVTQ1JJ
UFRPUl9DT05UUk9MLCpQU0VDVVJJVFlfREVTQ1JJUFRPUl9DT05UUk9MOw0KdHlwZWRlZiBzdHJ1
Y3QgX1NFQ1VSSVRZX0RFU0NSSVBUT1Igew0KICAgICAgICBCWVRFIFJldmlzaW9uOw0KICAgICAg
ICBCWVRFIFNiejE7DQogICAgICAgIFNFQ1VSSVRZX0RFU0NSSVBUT1JfQ09OVFJPTCBDb250cm9s
Ow0KICAgICAgICBQU0lEIE93bmVyOw0KICAgICAgICBQU0lEIEdyb3VwOw0KICAgICAgICBQQUNM
IFNhY2w7DQogICAgICAgIFBBQ0wgRGFjbDsNCn0gU0VDVVJJVFlfREVTQ1JJUFRPUiwgKlBTRUNV
UklUWV9ERVNDUklQVE9SLCAqUElTRUNVUklUWV9ERVNDUklQVE9SOw0KdHlwZWRlZiBlbnVtIF9U
T0tFTl9JTkZPUk1BVElPTl9DTEFTUyB7DQogICAgICAgIFRva2VuVXNlcj0xLFRva2VuR3JvdXBz
LFRva2VuUHJpdmlsZWdlcyxUb2tlbk93bmVyLA0KICAgICAgICBUb2tlblByaW1hcnlHcm91cCxU
b2tlbkRlZmF1bHREYWNsLFRva2VuU291cmNlLFRva2VuVHlwZSwNCiAgICAgICAgVG9rZW5JbXBl
cnNvbmF0aW9uTGV2ZWwsVG9rZW5TdGF0aXN0aWNzLFRva2VuUmVzdHJpY3RlZFNpZHMsDQogICAg
ICAgIFRva2VuU2Vzc2lvbklkDQp9IFRPS0VOX0lORk9STUFUSU9OX0NMQVNTOw0KdHlwZWRlZiBl
bnVtIF9TSURfTkFNRV9VU0Ugew0KICAgICAgICBTaWRUeXBlVXNlcj0xLFNpZFR5cGVHcm91cCxT
aWRUeXBlRG9tYWluLFNpZFR5cGVBbGlhcyxTaWRUeXBlV2VsbEtub3duR3JvdXAsDQogICAgICAg
IFNpZFR5cGVEZWxldGVkQWNjb3VudCxTaWRUeXBlSW52YWxpZCxTaWRUeXBlVW5rbm93bg0KfSBT
SURfTkFNRV9VU0UsKlBTSURfTkFNRV9VU0U7DQp0eXBlZGVmIHN0cnVjdCBfUVVPVEFfTElNSVRT
IHsNCiAgICAgICAgU0laRV9UIFBhZ2VkUG9vbExpbWl0Ow0KICAgICAgICBTSVpFX1QgTm9uUGFn
ZWRQb29sTGltaXQ7DQogICAgICAgIFNJWkVfVCBNaW5pbXVtV29ya2luZ1NldFNpemU7DQogICAg
ICAgIFNJWkVfVCBNYXhpbXVtV29ya2luZ1NldFNpemU7DQogICAgICAgIFNJWkVfVCBQYWdlZmls
ZUxpbWl0Ow0KICAgICAgICBMQVJHRV9JTlRFR0VSIFRpbWVMaW1pdDsNCn0gUVVPVEFfTElNSVRT
LCpQUVVPVEFfTElNSVRTOw0KdHlwZWRlZiBzdHJ1Y3QgX0lPX0NPVU5URVJTIHsNCiAgICAgICAg
VUxPTkdMT05HIFJlYWRPcGVyYXRpb25Db3VudDsNCiAgICAgICAgVUxPTkdMT05HIFdyaXRlT3Bl
cmF0aW9uQ291bnQ7DQogICAgICAgIFVMT05HTE9ORyBPdGhlck9wZXJhdGlvbkNvdW50Ow0KICAg
ICAgICBVTE9OR0xPTkcgUmVhZFRyYW5zZmVyQ291bnQ7DQogICAgICAgIFVMT05HTE9ORyBXcml0
ZVRyYW5zZmVyQ291bnQ7DQogICAgICAgIFVMT05HTE9ORyBPdGhlclRyYW5zZmVyQ291bnQ7DQp9
IElPX0NPVU5URVJTLCAqUElPX0NPVU5URVJTOw0KdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfTk9USUZZ
X0lORk9STUFUSU9OIHsNCiAgICAgICAgRFdPUkQgTmV4dEVudHJ5T2Zmc2V0Ow0KICAgICAgICBE
V09SRCBBY3Rpb247DQogICAgICAgIERXT1JEIEZpbGVOYW1lTGVuZ3RoOw0KICAgICAgICBXQ0hB
UiBGaWxlTmFtZVsxXTsNCn0gRklMRV9OT1RJRllfSU5GT1JNQVRJT04sKlBGSUxFX05PVElGWV9J
TkZPUk1BVElPTjsNCnR5cGVkZWYgc3RydWN0IF9UQVBFX0VSQVNFIHsNCiAgICAgICAgRFdPUkQg
VHlwZTsNCiAgICAgICAgQk9PTEVBTiBJbW1lZGlhdGU7DQp9IFRBUEVfRVJBU0UsKlBUQVBFX0VS
QVNFOw0KdHlwZWRlZiBzdHJ1Y3QgX1RBUEVfR0VUX0RSSVZFX1BBUkFNRVRFUlMgew0KICAgICAg
ICBCT09MRUFOIEVDQzsNCiAgICAgICAgQk9PTEVBTiBDb21wcmVzc2lvbjsNCiAgICAgICAgQk9P
TEVBTiBEYXRhUGFkZGluZzsNCiAgICAgICAgQk9PTEVBTiBSZXBvcnRTZXRtYXJrczsNCiAgICAg
ICAgRFdPUkQgRGVmYXVsdEJsb2NrU2l6ZTsNCiAgICAgICAgRFdPUkQgTWF4aW11bUJsb2NrU2l6
ZTsNCiAgICAgICAgRFdPUkQgTWluaW11bUJsb2NrU2l6ZTsNCiAgICAgICAgRFdPUkQgTWF4aW11
bVBhcnRpdGlvbkNvdW50Ow0KICAgICAgICBEV09SRCBGZWF0dXJlc0xvdzsNCiAgICAgICAgRFdP
UkQgRmVhdHVyZXNIaWdoOw0KICAgICAgICBEV09SRCBFT1RXYXJuaW5nWm9uZVNpemU7DQp9IFRB
UEVfR0VUX0RSSVZFX1BBUkFNRVRFUlMsKlBUQVBFX0dFVF9EUklWRV9QQVJBTUVURVJTOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1RBUEVfR0VUX01FRElBX1BBUkFNRVRFUlMgew0KICAgICAgICBMQVJHRV9J
TlRFR0VSIENhcGFjaXR5Ow0KICAgICAgICBMQVJHRV9JTlRFR0VSIFJlbWFpbmluZzsNCiAgICAg
ICAgRFdPUkQgQmxvY2tTaXplOw0KICAgICAgICBEV09SRCBQYXJ0aXRpb25Db3VudDsNCiAgICAg
ICAgQk9PTEVBTiBXcml0ZVByb3RlY3RlZDsNCn0gVEFQRV9HRVRfTUVESUFfUEFSQU1FVEVSUywq
UFRBUEVfR0VUX01FRElBX1BBUkFNRVRFUlM7DQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9HRVRfUE9T
SVRJT04gew0KICAgICAgICBVTE9ORyBUeXBlOw0KICAgICAgICBVTE9ORyBQYXJ0aXRpb247DQog
ICAgICAgIFVMT05HIE9mZnNldExvdzsNCiAgICAgICAgVUxPTkcgT2Zmc2V0SGlnaDsNCn0gVEFQ
RV9HRVRfUE9TSVRJT04sKlBUQVBFX0dFVF9QT1NJVElPTjsNCnR5cGVkZWYgc3RydWN0IF9UQVBF
X1BSRVBBUkUgew0KICAgICAgICBEV09SRCBPcGVyYXRpb247DQogICAgICAgIEJPT0xFQU4gSW1t
ZWRpYXRlOw0KfSBUQVBFX1BSRVBBUkUsKlBUQVBFX1BSRVBBUkU7DQp0eXBlZGVmIHN0cnVjdCBf
VEFQRV9TRVRfRFJJVkVfUEFSQU1FVEVSUyB7DQogICAgICAgIEJPT0xFQU4gRUNDOw0KICAgICAg
ICBCT09MRUFOIENvbXByZXNzaW9uOw0KICAgICAgICBCT09MRUFOIERhdGFQYWRkaW5nOw0KICAg
ICAgICBCT09MRUFOIFJlcG9ydFNldG1hcmtzOw0KICAgICAgICBVTE9ORyBFT1RXYXJuaW5nWm9u
ZVNpemU7DQp9IFRBUEVfU0VUX0RSSVZFX1BBUkFNRVRFUlMsKlBUQVBFX1NFVF9EUklWRV9QQVJB
TUVURVJTOw0KdHlwZWRlZiBzdHJ1Y3QgX1RBUEVfU0VUX01FRElBX1BBUkFNRVRFUlMgew0KICAg
ICAgICBVTE9ORyBCbG9ja1NpemU7DQp9IFRBUEVfU0VUX01FRElBX1BBUkFNRVRFUlMsKlBUQVBF
X1NFVF9NRURJQV9QQVJBTUVURVJTOw0KdHlwZWRlZiBzdHJ1Y3QgX1RBUEVfU0VUX1BPU0lUSU9O
IHsNCiAgICAgICAgRFdPUkQgTWV0aG9kOw0KICAgICAgICBEV09SRCBQYXJ0aXRpb247DQogICAg
ICAgIExBUkdFX0lOVEVHRVIgT2Zmc2V0Ow0KICAgICAgICBCT09MRUFOIEltbWVkaWF0ZTsNCn0g
VEFQRV9TRVRfUE9TSVRJT04sKlBUQVBFX1NFVF9QT1NJVElPTjsNCnR5cGVkZWYgc3RydWN0IF9U
QVBFX1dSSVRFX01BUktTIHsNCiAgICAgICAgRFdPUkQgVHlwZTsNCiAgICAgICAgRFdPUkQgQ291
bnQ7DQogICAgICAgIEJPT0xFQU4gSW1tZWRpYXRlOw0KfSBUQVBFX1dSSVRFX01BUktTLCpQVEFQ
RV9XUklURV9NQVJLUzsNCnR5cGVkZWYgc3RydWN0IF9UQVBFX0NSRUFURV9QQVJUSVRJT04gew0K
ICAgICAgICBEV09SRCBNZXRob2Q7DQogICAgICAgIERXT1JEIENvdW50Ow0KICAgICAgICBEV09S
RCBTaXplOw0KfSBUQVBFX0NSRUFURV9QQVJUSVRJT04sKlBUQVBFX0NSRUFURV9QQVJUSVRJT047
DQp0eXBlZGVmIHN0cnVjdCBfTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OIHsNCiAgICAgICAgUFZP
SUQgQmFzZUFkZHJlc3M7DQogICAgICAgIFBWT0lEIEFsbG9jYXRpb25CYXNlOw0KICAgICAgICBE
V09SRCBBbGxvY2F0aW9uUHJvdGVjdDsNCiAgICAgICAgRFdPUkQgUmVnaW9uU2l6ZTsNCiAgICAg
ICAgRFdPUkQgU3RhdGU7DQogICAgICAgIERXT1JEIFByb3RlY3Q7DQogICAgICAgIERXT1JEIFR5
cGU7DQp9IE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiwqUE1FTU9SWV9CQVNJQ19JTkZPUk1BVElP
TjsNCnR5cGVkZWYgc3RydWN0IF9NRVNTQUdFX1JFU09VUkNFX0VOVFJZIHsNCiAgICAgICAgV09S
RCBMZW5ndGg7DQogICAgICAgIFdPUkQgRmxhZ3M7DQogICAgICAgIEJZVEUgVGV4dFsxXTsNCn0g
TUVTU0FHRV9SRVNPVVJDRV9FTlRSWSwqUE1FU1NBR0VfUkVTT1VSQ0VfRU5UUlk7DQp0eXBlZGVm
IHN0cnVjdCBfTUVTU0FHRV9SRVNPVVJDRV9CTE9DSyB7DQogICAgICAgIERXT1JEIExvd0lkOw0K
ICAgICAgICBEV09SRCBIaWdoSWQ7DQogICAgICAgIERXT1JEIE9mZnNldFRvRW50cmllczsNCn0g
TUVTU0FHRV9SRVNPVVJDRV9CTE9DSywqUE1FU1NBR0VfUkVTT1VSQ0VfQkxPQ0s7DQp0eXBlZGVm
IHN0cnVjdCBfTUVTU0FHRV9SRVNPVVJDRV9EQVRBIHsNCiAgICAgICAgRFdPUkQgTnVtYmVyT2ZC
bG9ja3M7DQogICAgICAgIE1FU1NBR0VfUkVTT1VSQ0VfQkxPQ0sgQmxvY2tzWzFdOw0KfSBNRVNT
QUdFX1JFU09VUkNFX0RBVEEsKlBNRVNTQUdFX1JFU09VUkNFX0RBVEE7DQp0eXBlZGVmIHN0cnVj
dCBfTElTVF9FTlRSWSB7DQogICAgICAgIHN0cnVjdCBfTElTVF9FTlRSWSAqRmxpbms7DQogICAg
ICAgIHN0cnVjdCBfTElTVF9FTlRSWSAqQmxpbms7DQp9IExJU1RfRU5UUlksKlBMSVNUX0VOVFJZ
Ow0KdHlwZWRlZiBzdHJ1Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OX0RFQlVHIHsNCiAgICAgICAg
V09SRCBUeXBlOw0KICAgICAgICBXT1JEIENyZWF0b3JCYWNrVHJhY2VJbmRleDsNCiAgICAgICAg
c3RydWN0IF9SVExfQ1JJVElDQUxfU0VDVElPTiAqQ3JpdGljYWxTZWN0aW9uOw0KICAgICAgICBM
SVNUX0VOVFJZIFByb2Nlc3NMb2Nrc0xpc3Q7DQogICAgICAgIERXT1JEIEVudHJ5Q291bnQ7DQog
ICAgICAgIERXT1JEIENvbnRlbnRpb25Db3VudDsNCiAgICAgICAgRFdPUkQgU3BhcmVbMl07DQp9
IFJUTF9DUklUSUNBTF9TRUNUSU9OX0RFQlVHLCpQUlRMX0NSSVRJQ0FMX1NFQ1RJT05fREVCVUc7
DQp0eXBlZGVmIHN0cnVjdCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gew0KICAgICAgICBQUlRMX0NS
SVRJQ0FMX1NFQ1RJT05fREVCVUcgRGVidWdJbmZvOw0KICAgICAgICBMT05HIExvY2tDb3VudDsN
CiAgICAgICAgTE9ORyBSZWN1cnNpb25Db3VudDsNCiAgICAgICAgSEFORExFIE93bmluZ1RocmVh
ZDsNCiAgICAgICAgSEFORExFIExvY2tTZW1hcGhvcmU7DQogICAgICAgIERXT1JEIFJlc2VydmVk
Ow0KfSBSVExfQ1JJVElDQUxfU0VDVElPTiwqUFJUTF9DUklUSUNBTF9TRUNUSU9OOw0KdHlwZWRl
ZiBzdHJ1Y3QgX0VWRU5UTE9HUkVDT1JEIHsNCiAgICAgICAgRFdPUkQgTGVuZ3RoOw0KICAgICAg
ICBEV09SRCBSZXNlcnZlZDsNCiAgICAgICAgRFdPUkQgUmVjb3JkTnVtYmVyOw0KICAgICAgICBE
V09SRCBUaW1lR2VuZXJhdGVkOw0KICAgICAgICBEV09SRCBUaW1lV3JpdHRlbjsNCiAgICAgICAg
RFdPUkQgRXZlbnRJRDsNCiAgICAgICAgV09SRCBFdmVudFR5cGU7DQogICAgICAgIFdPUkQgTnVt
U3RyaW5nczsNCiAgICAgICAgV09SRCBFdmVudENhdGVnb3J5Ow0KICAgICAgICBXT1JEIFJlc2Vy
dmVkRmxhZ3M7DQogICAgICAgIERXT1JEIENsb3NpbmdSZWNvcmROdW1iZXI7DQogICAgICAgIERX
T1JEIFN0cmluZ09mZnNldDsNCiAgICAgICAgRFdPUkQgVXNlclNpZExlbmd0aDsNCiAgICAgICAg
RFdPUkQgVXNlclNpZE9mZnNldDsNCiAgICAgICAgRFdPUkQgRGF0YUxlbmd0aDsNCiAgICAgICAg
RFdPUkQgRGF0YU9mZnNldDsNCn0gRVZFTlRMT0dSRUNPUkQsKlBFVkVOVExPR1JFQ09SRDsNCiNw
cmFnbWEgcGFjayhwdXNoLDIpDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfVlhEX0hFQURFUiB7DQog
ICAgICAgIFdPUkQgZTMyX21hZ2ljOw0KICAgICAgICBCWVRFIGUzMl9ib3JkZXI7DQogICAgICAg
IEJZVEUgZTMyX3dvcmRlcjsNCiAgICAgICAgRFdPUkQgZTMyX2xldmVsOw0KICAgICAgICBXT1JE
IGUzMl9jcHU7DQogICAgICAgIFdPUkQgZTMyX29zOw0KICAgICAgICBEV09SRCBlMzJfdmVyOw0K
ICAgICAgICBEV09SRCBlMzJfbWZsYWdzOw0KICAgICAgICBEV09SRCBlMzJfbXBhZ2VzOw0KICAg
ICAgICBEV09SRCBlMzJfc3RhcnRvYmo7DQogICAgICAgIERXT1JEIGUzMl9laXA7DQogICAgICAg
IERXT1JEIGUzMl9zdGFja29iajsNCiAgICAgICAgRFdPUkQgZTMyX2VzcDsNCiAgICAgICAgRFdP
UkQgZTMyX3BhZ2VzaXplOw0KICAgICAgICBEV09SRCBlMzJfbGFzdHBhZ2VzaXplOw0KICAgICAg
ICBEV09SRCBlMzJfZml4dXBzaXplOw0KICAgICAgICBEV09SRCBlMzJfZml4dXBzdW07DQogICAg
ICAgIERXT1JEIGUzMl9sZHJzaXplOw0KICAgICAgICBEV09SRCBlMzJfbGRyc3VtOw0KICAgICAg
ICBEV09SRCBlMzJfb2JqdGFiOw0KICAgICAgICBEV09SRCBlMzJfb2JqY250Ow0KICAgICAgICBE
V09SRCBlMzJfb2JqbWFwOw0KICAgICAgICBEV09SRCBlMzJfaXRlcm1hcDsNCiAgICAgICAgRFdP
UkQgZTMyX3JzcmN0YWI7DQogICAgICAgIERXT1JEIGUzMl9yc3JjY250Ow0KICAgICAgICBEV09S
RCBlMzJfcmVzdGFiOw0KICAgICAgICBEV09SRCBlMzJfZW50dGFiOw0KICAgICAgICBEV09SRCBl
MzJfZGlydGFiOw0KICAgICAgICBEV09SRCBlMzJfZGlyY250Ow0KICAgICAgICBEV09SRCBlMzJf
ZnBhZ2V0YWI7DQogICAgICAgIERXT1JEIGUzMl9mcmVjdGFiOw0KICAgICAgICBEV09SRCBlMzJf
aW1wbW9kOw0KICAgICAgICBEV09SRCBlMzJfaW1wbW9kY250Ow0KICAgICAgICBEV09SRCBlMzJf
aW1wcHJvYzsNCiAgICAgICAgRFdPUkQgZTMyX3BhZ2VzdW07DQogICAgICAgIERXT1JEIGUzMl9k
YXRhcGFnZTsNCiAgICAgICAgRFdPUkQgZTMyX3ByZWxvYWQ7DQogICAgICAgIERXT1JEIGUzMl9u
cmVzdGFiOw0KICAgICAgICBEV09SRCBlMzJfY2JucmVzdGFiOw0KICAgICAgICBEV09SRCBlMzJf
bnJlc3N1bTsNCiAgICAgICAgRFdPUkQgZTMyX2F1dG9kYXRhOw0KICAgICAgICBEV09SRCBlMzJf
ZGVidWdpbmZvOw0KICAgICAgICBEV09SRCBlMzJfZGVidWdsZW47DQogICAgICAgIERXT1JEIGUz
Ml9pbnN0cHJlbG9hZDsNCiAgICAgICAgRFdPUkQgZTMyX2luc3RkZW1hbmQ7DQogICAgICAgIERX
T1JEIGUzMl9oZWFwc2l6ZTsNCiAgICAgICAgQllURSBlMzJfcmVzM1sxMl07DQogICAgICAgIERX
T1JEIGUzMl93aW5yZXNvZmY7DQogICAgICAgIERXT1JEIGUzMl93aW5yZXNsZW47DQogICAgICAg
IFdPUkQgZTMyX2RldmlkOw0KICAgICAgICBXT1JEIGUzMl9kZGt2ZXI7DQp9IElNQUdFX1ZYRF9I
RUFERVIsKlBJTUFHRV9WWERfSEVBREVSOw0KI3ByYWdtYSBwYWNrKHBvcCkNCiNwcmFnbWEgcGFj
ayhwdXNoLDQpDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfRklMRV9IRUFERVIgew0KICAgICAgICBX
T1JEIE1hY2hpbmU7DQogICAgICAgIFdPUkQgTnVtYmVyT2ZTZWN0aW9uczsNCiAgICAgICAgRFdP
UkQgVGltZURhdGVTdGFtcDsNCiAgICAgICAgRFdPUkQgUG9pbnRlclRvU3ltYm9sVGFibGU7DQog
ICAgICAgIERXT1JEIE51bWJlck9mU3ltYm9sczsNCiAgICAgICAgV09SRCBTaXplT2ZPcHRpb25h
bEhlYWRlcjsNCiAgICAgICAgV09SRCBDaGFyYWN0ZXJpc3RpY3M7DQp9IElNQUdFX0ZJTEVfSEVB
REVSLCAqUElNQUdFX0ZJTEVfSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0RBVEFfRElS
RUNUT1JZIHsNCiAgICAgICAgRFdPUkQgVmlydHVhbEFkZHJlc3M7DQogICAgICAgIERXT1JEIFNp
emU7DQp9IElNQUdFX0RBVEFfRElSRUNUT1JZLCpQSU1BR0VfREFUQV9ESVJFQ1RPUlk7DQp0eXBl
ZGVmIHN0cnVjdCBfSU1BR0VfT1BUSU9OQUxfSEVBREVSIHsNCiAgICAgICAgV09SRCBNYWdpYzsN
CiAgICAgICAgQllURSBNYWpvckxpbmtlclZlcnNpb247DQogICAgICAgIEJZVEUgTWlub3JMaW5r
ZXJWZXJzaW9uOw0KICAgICAgICBEV09SRCBTaXplT2ZDb2RlOw0KICAgICAgICBEV09SRCBTaXpl
T2ZJbml0aWFsaXplZERhdGE7DQogICAgICAgIERXT1JEIFNpemVPZlVuaW5pdGlhbGl6ZWREYXRh
Ow0KICAgICAgICBEV09SRCBBZGRyZXNzT2ZFbnRyeVBvaW50Ow0KICAgICAgICBEV09SRCBCYXNl
T2ZDb2RlOw0KICAgICAgICBEV09SRCBCYXNlT2ZEYXRhOw0KICAgICAgICBEV09SRCBJbWFnZUJh
c2U7DQogICAgICAgIERXT1JEIFNlY3Rpb25BbGlnbm1lbnQ7DQogICAgICAgIERXT1JEIEZpbGVB
bGlnbm1lbnQ7DQogICAgICAgIFdPUkQgTWFqb3JPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uOw0KICAg
ICAgICBXT1JEIE1pbm9yT3BlcmF0aW5nU3lzdGVtVmVyc2lvbjsNCiAgICAgICAgV09SRCBNYWpv
ckltYWdlVmVyc2lvbjsNCiAgICAgICAgV09SRCBNaW5vckltYWdlVmVyc2lvbjsNCiAgICAgICAg
V09SRCBNYWpvclN1YnN5c3RlbVZlcnNpb247DQogICAgICAgIFdPUkQgTWlub3JTdWJzeXN0ZW1W
ZXJzaW9uOw0KICAgICAgICBEV09SRCBSZXNlcnZlZDE7DQogICAgICAgIERXT1JEIFNpemVPZklt
YWdlOw0KICAgICAgICBEV09SRCBTaXplT2ZIZWFkZXJzOw0KICAgICAgICBEV09SRCBDaGVja1N1
bTsNCiAgICAgICAgV09SRCBTdWJzeXN0ZW07DQogICAgICAgIFdPUkQgRGxsQ2hhcmFjdGVyaXN0
aWNzOw0KICAgICAgICBEV09SRCBTaXplT2ZTdGFja1Jlc2VydmU7DQogICAgICAgIERXT1JEIFNp
emVPZlN0YWNrQ29tbWl0Ow0KICAgICAgICBEV09SRCBTaXplT2ZIZWFwUmVzZXJ2ZTsNCiAgICAg
ICAgRFdPUkQgU2l6ZU9mSGVhcENvbW1pdDsNCiAgICAgICAgRFdPUkQgTG9hZGVyRmxhZ3M7DQog
ICAgICAgIERXT1JEIE51bWJlck9mUnZhQW5kU2l6ZXM7DQogICAgICAgIElNQUdFX0RBVEFfRElS
RUNUT1JZIERhdGFEaXJlY3RvcnlbMTZdOw0KfSBJTUFHRV9PUFRJT05BTF9IRUFERVIsKlBJTUFH
RV9PUFRJT05BTF9IRUFERVI7DQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfUk9NX09QVElPTkFMX0hF
QURFUiB7DQogICAgICAgIFdPUkQgTWFnaWM7DQogICAgICAgIEJZVEUgTWFqb3JMaW5rZXJWZXJz
aW9uOw0KICAgICAgICBCWVRFIE1pbm9yTGlua2VyVmVyc2lvbjsNCiAgICAgICAgRFdPUkQgU2l6
ZU9mQ29kZTsNCiAgICAgICAgRFdPUkQgU2l6ZU9mSW5pdGlhbGl6ZWREYXRhOw0KICAgICAgICBE
V09SRCBTaXplT2ZVbmluaXRpYWxpemVkRGF0YTsNCiAgICAgICAgRFdPUkQgQWRkcmVzc09mRW50
cnlQb2ludDsNCiAgICAgICAgRFdPUkQgQmFzZU9mQ29kZTsNCiAgICAgICAgRFdPUkQgQmFzZU9m
RGF0YTsNCiAgICAgICAgRFdPUkQgQmFzZU9mQnNzOw0KICAgICAgICBEV09SRCBHcHJNYXNrOw0K
ICAgICAgICBEV09SRCBDcHJNYXNrWzRdOw0KICAgICAgICBEV09SRCBHcFZhbHVlOw0KfSBJTUFH
RV9ST01fT1BUSU9OQUxfSEVBREVSLCpQSU1BR0VfUk9NX09QVElPTkFMX0hFQURFUjsNCiNwcmFn
bWEgcGFjayhwb3ApDQojcHJhZ21hIHBhY2socHVzaCwyKQ0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdF
X0RPU19IRUFERVIgew0KICAgICAgICBXT1JEIGVfbWFnaWM7DQogICAgICAgIFdPUkQgZV9jYmxw
Ow0KICAgICAgICBXT1JEIGVfY3A7DQogICAgICAgIFdPUkQgZV9jcmxjOw0KICAgICAgICBXT1JE
IGVfY3BhcmhkcjsNCiAgICAgICAgV09SRCBlX21pbmFsbG9jOw0KICAgICAgICBXT1JEIGVfbWF4
YWxsb2M7DQogICAgICAgIFdPUkQgZV9zczsNCiAgICAgICAgV09SRCBlX3NwOw0KICAgICAgICBX
T1JEIGVfY3N1bTsNCiAgICAgICAgV09SRCBlX2lwOw0KICAgICAgICBXT1JEIGVfY3M7DQogICAg
ICAgIFdPUkQgZV9sZmFybGM7DQogICAgICAgIFdPUkQgZV9vdm5vOw0KICAgICAgICBXT1JEIGVf
cmVzWzRdOw0KICAgICAgICBXT1JEIGVfb2VtaWQ7DQogICAgICAgIFdPUkQgZV9vZW1pbmZvOw0K
ICAgICAgICBXT1JEIGVfcmVzMlsxMF07DQogICAgICAgIExPTkcgZV9sZmFuZXc7DQp9IElNQUdF
X0RPU19IRUFERVIsKlBJTUFHRV9ET1NfSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX09T
Ml9IRUFERVIgew0KICAgICAgICBXT1JEIG5lX21hZ2ljOw0KICAgICAgICBDSEFSIG5lX3ZlcjsN
CiAgICAgICAgQ0hBUiBuZV9yZXY7DQogICAgICAgIFdPUkQgbmVfZW50dGFiOw0KICAgICAgICBX
T1JEIG5lX2NiZW50dGFiOw0KICAgICAgICBMT05HIG5lX2NyYzsNCiAgICAgICAgV09SRCBuZV9m
bGFnczsNCiAgICAgICAgV09SRCBuZV9hdXRvZGF0YTsNCiAgICAgICAgV09SRCBuZV9oZWFwOw0K
ICAgICAgICBXT1JEIG5lX3N0YWNrOw0KICAgICAgICBMT05HIG5lX2NzaXA7DQogICAgICAgIExP
TkcgbmVfc3NzcDsNCiAgICAgICAgV09SRCBuZV9jc2VnOw0KICAgICAgICBXT1JEIG5lX2Ntb2Q7
DQogICAgICAgIFdPUkQgbmVfY2JucmVzdGFiOw0KICAgICAgICBXT1JEIG5lX3NlZ3RhYjsNCiAg
ICAgICAgV09SRCBuZV9yc3JjdGFiOw0KICAgICAgICBXT1JEIG5lX3Jlc3RhYjsNCiAgICAgICAg
V09SRCBuZV9tb2R0YWI7DQogICAgICAgIFdPUkQgbmVfaW1wdGFiOw0KICAgICAgICBMT05HIG5l
X25yZXN0YWI7DQogICAgICAgIFdPUkQgbmVfY21vdmVudDsNCiAgICAgICAgV09SRCBuZV9hbGln
bjsNCiAgICAgICAgV09SRCBuZV9jcmVzOw0KICAgICAgICBCWVRFIG5lX2V4ZXR5cDsNCiAgICAg
ICAgQllURSBuZV9mbGFnc290aGVyczsNCiAgICAgICAgV09SRCBuZV9wcmV0dGh1bmtzOw0KICAg
ICAgICBXT1JEIG5lX3BzZWdyZWZieXRlczsNCiAgICAgICAgV09SRCBuZV9zd2FwYXJlYTsNCiAg
ICAgICAgV09SRCBuZV9leHB2ZXI7DQp9IElNQUdFX09TMl9IRUFERVIsKlBJTUFHRV9PUzJfSEVB
REVSOw0KI3ByYWdtYSBwYWNrKHBvcCkNCiNwcmFnbWEgcGFjayhwdXNoLDQpDQp0eXBlZGVmIHN0
cnVjdCBfSU1BR0VfTlRfSEVBREVSUyB7DQogICAgICAgIERXT1JEIFNpZ25hdHVyZTsNCiAgICAg
ICAgSU1BR0VfRklMRV9IRUFERVIgRmlsZUhlYWRlcjsNCiAgICAgICAgSU1BR0VfT1BUSU9OQUxf
SEVBREVSIE9wdGlvbmFsSGVhZGVyOw0KfSBJTUFHRV9OVF9IRUFERVJTLCpQSU1BR0VfTlRfSEVB
REVSUzsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ST01fSEVBREVSUyB7DQogICAgICAgIElNQUdF
X0ZJTEVfSEVBREVSIEZpbGVIZWFkZXI7DQogICAgICAgIElNQUdFX1JPTV9PUFRJT05BTF9IRUFE
RVIgT3B0aW9uYWxIZWFkZXI7DQp9IElNQUdFX1JPTV9IRUFERVJTLCpQSU1BR0VfUk9NX0hFQURF
UlM7DQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfU0VDVElPTl9IRUFERVIgew0KICAgICAgICBCWVRF
IE5hbWVbOF07DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBEV09SRCBQaHlzaWNh
bEFkZHJlc3M7DQogICAgICAgICAgICAgICAgRFdPUkQgVmlydHVhbFNpemU7DQogICAgICAgIH0g
TWlzYzsNCiAgICAgICAgRFdPUkQgVmlydHVhbEFkZHJlc3M7DQogICAgICAgIERXT1JEIFNpemVP
ZlJhd0RhdGE7DQogICAgICAgIERXT1JEIFBvaW50ZXJUb1Jhd0RhdGE7DQogICAgICAgIERXT1JE
IFBvaW50ZXJUb1JlbG9jYXRpb25zOw0KICAgICAgICBEV09SRCBQb2ludGVyVG9MaW5lbnVtYmVy
czsNCiAgICAgICAgV09SRCBOdW1iZXJPZlJlbG9jYXRpb25zOw0KICAgICAgICBXT1JEIE51bWJl
ck9mTGluZW51bWJlcnM7DQogICAgICAgIERXT1JEIENoYXJhY3RlcmlzdGljczsNCn0gSU1BR0Vf
U0VDVElPTl9IRUFERVIsKlBJTUFHRV9TRUNUSU9OX0hFQURFUjsNCiNwcmFnbWEgcGFjayhwb3Ap
DQojcHJhZ21hIHBhY2socHVzaCwyKQ0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX1NZTUJPTCB7DQog
ICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBCWVRFIFNob3J0TmFtZVs4XTsNCiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgU2hvcnQ7
DQogICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBMb25nOw0KICAgICAgICAgICAgICAgIH0g
TmFtZTsNCiAgICAgICAgICAgICAgICBQQllURSBMb25nTmFtZVsyXTsNCiAgICAgICAgfSBOOw0K
ICAgICAgICBEV09SRCBWYWx1ZTsNCiAgICAgICAgU0hPUlQgU2VjdGlvbk51bWJlcjsNCiAgICAg
ICAgV09SRCBUeXBlOw0KICAgICAgICBCWVRFIFN0b3JhZ2VDbGFzczsNCiAgICAgICAgQllURSBO
dW1iZXJPZkF1eFN5bWJvbHM7DQp9IElNQUdFX1NZTUJPTCwqUElNQUdFX1NZTUJPTDsNCnR5cGVk
ZWYgdW5pb24gX0lNQUdFX0FVWF9TWU1CT0wgew0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAg
ICAgICAgIERXT1JEIFRhZ0luZGV4Ow0KICAgICAgICAgICAgICAgIHVuaW9uIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdPUkQgTGluZW51bWJlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV09SRCBT
aXplOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBMblN6Ow0KICAgICAgICAgICAgICAgICAg
ICAgICAgRFdPUkQgVG90YWxTaXplOw0KICAgICAgICAgICAgICAgIH0gTWlzYzsNCiAgICAgICAg
ICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBQb2ludGVyVG9MaW5lbnVtYmVyOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBQb2ludGVyVG9OZXh0RnVuY3Rpb247
DQogICAgICAgICAgICAgICAgICAgICAgICB9IEZ1bmN0aW9uOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV09SRCBEaW1l
bnNpb25bNF07DQogICAgICAgICAgICAgICAgICAgICAgICB9IEFycmF5Ow0KICAgICAgICAgICAg
ICAgIH0gRmNuQXJ5Ow0KICAgICAgICAgICAgICAgIFdPUkQgVHZJbmRleDsNCiAgICAgICAgfSBT
eW07DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgQllURSBOYW1lWzE4XTsNCiAg
ICAgICAgfSBGaWxlOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgIERXT1JEIExl
bmd0aDsNCiAgICAgICAgICAgICAgICBXT1JEIE51bWJlck9mUmVsb2NhdGlvbnM7DQogICAgICAg
ICAgICAgICAgV09SRCBOdW1iZXJPZkxpbmVudW1iZXJzOw0KICAgICAgICAgICAgICAgIERXT1JE
IENoZWNrU3VtOw0KICAgICAgICAgICAgICAgIFNIT1JUIE51bWJlcjsNCiAgICAgICAgICAgICAg
ICBCWVRFIFNlbGVjdGlvbjsNCiAgICAgICAgfSBTZWN0aW9uOw0KfSBJTUFHRV9BVVhfU1lNQk9M
LCpQSU1BR0VfQVVYX1NZTUJPTDsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9DT0ZGX1NZTUJPTFNf
SEVBREVSIHsNCiAgICAgICAgRFdPUkQgTnVtYmVyT2ZTeW1ib2xzOw0KICAgICAgICBEV09SRCBM
dmFUb0ZpcnN0U3ltYm9sOw0KICAgICAgICBEV09SRCBOdW1iZXJPZkxpbmVudW1iZXJzOw0KICAg
ICAgICBEV09SRCBMdmFUb0ZpcnN0TGluZW51bWJlcjsNCiAgICAgICAgRFdPUkQgUnZhVG9GaXJz
dEJ5dGVPZkNvZGU7DQogICAgICAgIERXT1JEIFJ2YVRvTGFzdEJ5dGVPZkNvZGU7DQogICAgICAg
IERXT1JEIFJ2YVRvRmlyc3RCeXRlT2ZEYXRhOw0KICAgICAgICBEV09SRCBSdmFUb0xhc3RCeXRl
T2ZEYXRhOw0KfSBJTUFHRV9DT0ZGX1NZTUJPTFNfSEVBREVSLCpQSU1BR0VfQ09GRl9TWU1CT0xT
X0hFQURFUjsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9SRUxPQ0FUSU9OIHsNCiAgICAgICAgX19l
eHRlbnNpb25fXyB1bmlvbiB7DQogICAgICAgICAgICAgICAgRFdPUkQgVmlydHVhbEFkZHJlc3M7
DQogICAgICAgICAgICAgICAgRFdPUkQgUmVsb2NDb3VudDsNCiAgICAgICAgfSA7DQogICAgICAg
IERXT1JEIFN5bWJvbFRhYmxlSW5kZXg7DQogICAgICAgIFdPUkQgVHlwZTsNCn0gSU1BR0VfUkVM
T0NBVElPTiwqUElNQUdFX1JFTE9DQVRJT047DQojcHJhZ21hIHBhY2socG9wKQ0KI3ByYWdtYSBw
YWNrKHB1c2gsNCkNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9CQVNFX1JFTE9DQVRJT04gew0KICAg
ICAgICBEV09SRCBWaXJ0dWFsQWRkcmVzczsNCiAgICAgICAgRFdPUkQgU2l6ZU9mQmxvY2s7DQp9
IElNQUdFX0JBU0VfUkVMT0NBVElPTiwqUElNQUdFX0JBU0VfUkVMT0NBVElPTjsNCiNwcmFnbWEg
cGFjayhwb3ApDQojcHJhZ21hIHBhY2socHVzaCwyKQ0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0xJ
TkVOVU1CRVIgew0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICAgICAgRFdPUkQgU3ltYm9s
VGFibGVJbmRleDsNCiAgICAgICAgICAgICAgICBEV09SRCBWaXJ0dWFsQWRkcmVzczsNCiAgICAg
ICAgfSBUeXBlOw0KICAgICAgICBXT1JEIExpbmVudW1iZXI7DQp9IElNQUdFX0xJTkVOVU1CRVIs
KlBJTUFHRV9MSU5FTlVNQkVSOw0KI3ByYWdtYSBwYWNrKHBvcCkNCiNwcmFnbWEgcGFjayhwdXNo
LDQpDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfQVJDSElWRV9NRU1CRVJfSEVBREVSIHsNCiAgICAg
ICAgQllURSBOYW1lWzE2XTsNCiAgICAgICAgQllURSBEYXRlWzEyXTsNCiAgICAgICAgQllURSBV
c2VySURbNl07DQogICAgICAgIEJZVEUgR3JvdXBJRFs2XTsNCiAgICAgICAgQllURSBNb2RlWzhd
Ow0KICAgICAgICBCWVRFIFNpemVbMTBdOw0KICAgICAgICBCWVRFIEVuZEhlYWRlclsyXTsNCn0g
SU1BR0VfQVJDSElWRV9NRU1CRVJfSEVBREVSLCpQSU1BR0VfQVJDSElWRV9NRU1CRVJfSEVBREVS
Ow0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0VYUE9SVF9ESVJFQ1RPUlkgew0KICAgICAgICBEV09S
RCBDaGFyYWN0ZXJpc3RpY3M7DQogICAgICAgIERXT1JEIFRpbWVEYXRlU3RhbXA7DQogICAgICAg
IFdPUkQgTWFqb3JWZXJzaW9uOw0KICAgICAgICBXT1JEIE1pbm9yVmVyc2lvbjsNCiAgICAgICAg
RFdPUkQgTmFtZTsNCiAgICAgICAgRFdPUkQgQmFzZTsNCiAgICAgICAgRFdPUkQgTnVtYmVyT2ZG
dW5jdGlvbnM7DQogICAgICAgIERXT1JEIE51bWJlck9mTmFtZXM7DQogICAgICAgIFBEV09SRCAq
QWRkcmVzc09mRnVuY3Rpb25zOw0KICAgICAgICBQRFdPUkQgKkFkZHJlc3NPZk5hbWVzOw0KICAg
ICAgICBQV09SRCAqQWRkcmVzc09mTmFtZU9yZGluYWxzOw0KfSBJTUFHRV9FWFBPUlRfRElSRUNU
T1JZLCpQSU1BR0VfRVhQT1JUX0RJUkVDVE9SWTsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9JTVBP
UlRfQllfTkFNRSB7DQogICAgICAgIFdPUkQgSGludDsNCiAgICAgICAgQllURSBOYW1lWzFdOw0K
fSBJTUFHRV9JTVBPUlRfQllfTkFNRSwqUElNQUdFX0lNUE9SVF9CWV9OQU1FOw0KdHlwZWRlZiBz
dHJ1Y3QgX0lNQUdFX1RIVU5LX0RBVEEgew0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICAg
ICAgUEJZVEUgRm9yd2FyZGVyU3RyaW5nOw0KICAgICAgICAgICAgICAgIFBEV09SRCBGdW5jdGlv
bjsNCiAgICAgICAgICAgICAgICBEV09SRCBPcmRpbmFsOw0KICAgICAgICAgICAgICAgIFBJTUFH
RV9JTVBPUlRfQllfTkFNRSBBZGRyZXNzT2ZEYXRhOw0KICAgICAgICB9IHUxOw0KfSBJTUFHRV9U
SFVOS19EQVRBLCpQSU1BR0VfVEhVTktfREFUQTsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9JTVBP
UlRfREVTQ1JJUFRPUiB7DQogICAgICAgIF9fZXh0ZW5zaW9uX18gdW5pb24gew0KICAgICAgICAg
ICAgICAgIERXT1JEIENoYXJhY3RlcmlzdGljczsNCiAgICAgICAgICAgICAgICBQSU1BR0VfVEhV
TktfREFUQSBPcmlnaW5hbEZpcnN0VGh1bms7DQogICAgICAgIH0gOw0KICAgICAgICBEV09SRCBU
aW1lRGF0ZVN0YW1wOw0KICAgICAgICBEV09SRCBGb3J3YXJkZXJDaGFpbjsNCiAgICAgICAgRFdP
UkQgTmFtZTsNCiAgICAgICAgUElNQUdFX1RIVU5LX0RBVEEgRmlyc3RUaHVuazsNCn0gSU1BR0Vf
SU1QT1JUX0RFU0NSSVBUT1IsKlBJTUFHRV9JTVBPUlRfREVTQ1JJUFRPUjsNCnR5cGVkZWYgc3Ry
dWN0IF9JTUFHRV9CT1VORF9JTVBPUlRfREVTQ1JJUFRPUiB7DQogICAgICAgIERXT1JEIFRpbWVE
YXRlU3RhbXA7DQogICAgICAgIFdPUkQgT2Zmc2V0TW9kdWxlTmFtZTsNCiAgICAgICAgV09SRCBO
dW1iZXJPZk1vZHVsZUZvcndhcmRlclJlZnM7DQp9IElNQUdFX0JPVU5EX0lNUE9SVF9ERVNDUklQ
VE9SLCpQSU1BR0VfQk9VTkRfSU1QT1JUX0RFU0NSSVBUT1I7DQp0eXBlZGVmIHN0cnVjdCBfSU1B
R0VfQk9VTkRfRk9SV0FSREVSX1JFRiB7DQogICAgICAgIERXT1JEIFRpbWVEYXRlU3RhbXA7DQog
ICAgICAgIFdPUkQgT2Zmc2V0TW9kdWxlTmFtZTsNCiAgICAgICAgV09SRCBSZXNlcnZlZDsNCn0g
SU1BR0VfQk9VTkRfRk9SV0FSREVSX1JFRiwqUElNQUdFX0JPVU5EX0ZPUldBUkRFUl9SRUY7DQp0
eXBlZGVmIHZvaWQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUElNQUdFX1RMU19DQUxM
QkFDSykoUFZPSUQsRFdPUkQsUFZPSUQpOw0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX1RMU19ESVJF
Q1RPUlkgew0KICAgICAgICBEV09SRCBTdGFydEFkZHJlc3NPZlJhd0RhdGE7DQogICAgICAgIERX
T1JEIEVuZEFkZHJlc3NPZlJhd0RhdGE7DQogICAgICAgIFBEV09SRCBBZGRyZXNzT2ZJbmRleDsN
CiAgICAgICAgUElNQUdFX1RMU19DQUxMQkFDSyAqQWRkcmVzc09mQ2FsbEJhY2tzOw0KICAgICAg
ICBEV09SRCBTaXplT2ZaZXJvRmlsbDsNCiAgICAgICAgRFdPUkQgQ2hhcmFjdGVyaXN0aWNzOw0K
fSBJTUFHRV9UTFNfRElSRUNUT1JZLCpQSU1BR0VfVExTX0RJUkVDVE9SWTsNCnR5cGVkZWYgc3Ry
dWN0IF9JTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUlkgew0KICAgICAgICBEV09SRCBDaGFyYWN0ZXJp
c3RpY3M7DQogICAgICAgIERXT1JEIFRpbWVEYXRlU3RhbXA7DQogICAgICAgIFdPUkQgTWFqb3JW
ZXJzaW9uOw0KICAgICAgICBXT1JEIE1pbm9yVmVyc2lvbjsNCiAgICAgICAgV09SRCBOdW1iZXJP
Zk5hbWVkRW50cmllczsNCiAgICAgICAgV09SRCBOdW1iZXJPZklkRW50cmllczsNCn0gSU1BR0Vf
UkVTT1VSQ0VfRElSRUNUT1JZLCpQSU1BR0VfUkVTT1VSQ0VfRElSRUNUT1JZOw0KX19leHRlbnNp
b25fXyB0eXBlZGVmIHN0cnVjdCBfSU1BR0VfUkVTT1VSQ0VfRElSRUNUT1JZX0VOVFJZIHsNCiAg
ICAgICAgX19leHRlbnNpb25fXyB1bmlvbiB7DQogICAgICAgICAgICAgICAgX19leHRlbnNpb25f
XyBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgTmFtZU9mZnNldDozMTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIE5hbWVJc1N0cmluZzoxOw0KICAgICAgICAg
ICAgICAgIH07DQogICAgICAgICAgICAgICAgRFdPUkQgTmFtZTsNCiAgICAgICAgICAgICAgICBX
T1JEIElkOw0KICAgICAgICB9IDsNCiAgICAgICAgX19leHRlbnNpb25fXyB1bmlvbiB7DQogICAg
ICAgICAgICAgICAgRFdPUkQgT2Zmc2V0VG9EYXRhOw0KICAgICAgICAgICAgICAgIF9fZXh0ZW5z
aW9uX18gc3RydWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIE9mZnNldFRvRGly
ZWN0b3J5OjMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgRGF0YUlzRGlyZWN0b3J5
OjE7DQogICAgICAgICAgICAgICAgfSA7DQogICAgICAgIH0gOw0KfSBJTUFHRV9SRVNPVVJDRV9E
SVJFQ1RPUllfRU5UUlksKlBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllfRU5UUlk7DQp0eXBlZGVm
IHN0cnVjdCBfSU1BR0VfUkVTT1VSQ0VfRElSRUNUT1JZX1NUUklORyB7DQogICAgICAgIFdPUkQg
TGVuZ3RoOw0KICAgICAgICBDSEFSIE5hbWVTdHJpbmdbMV07DQp9IElNQUdFX1JFU09VUkNFX0RJ
UkVDVE9SWV9TVFJJTkcsKlBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllfU1RSSU5HOw0KdHlwZWRl
ZiBzdHJ1Y3QgX0lNQUdFX1JFU09VUkNFX0RJUl9TVFJJTkdfVSB7DQogICAgICAgIFdPUkQgTGVu
Z3RoOw0KICAgICAgICBXQ0hBUiBOYW1lU3RyaW5nWzFdOw0KfSBJTUFHRV9SRVNPVVJDRV9ESVJf
U1RSSU5HX1UsKlBJTUFHRV9SRVNPVVJDRV9ESVJfU1RSSU5HX1U7DQp0eXBlZGVmIHN0cnVjdCBf
SU1BR0VfUkVTT1VSQ0VfREFUQV9FTlRSWSB7DQogICAgICAgIERXT1JEIE9mZnNldFRvRGF0YTsN
CiAgICAgICAgRFdPUkQgU2l6ZTsNCiAgICAgICAgRFdPUkQgQ29kZVBhZ2U7DQogICAgICAgIERX
T1JEIFJlc2VydmVkOw0KfSBJTUFHRV9SRVNPVVJDRV9EQVRBX0VOVFJZLCpQSU1BR0VfUkVTT1VS
Q0VfREFUQV9FTlRSWTsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9MT0FEX0NPTkZJR19ESVJFQ1RP
Ulkgew0KICAgICAgICBEV09SRCBDaGFyYWN0ZXJpc3RpY3M7DQogICAgICAgIERXT1JEIFRpbWVE
YXRlU3RhbXA7DQogICAgICAgIFdPUkQgTWFqb3JWZXJzaW9uOw0KICAgICAgICBXT1JEIE1pbm9y
VmVyc2lvbjsNCiAgICAgICAgRFdPUkQgR2xvYmFsRmxhZ3NDbGVhcjsNCiAgICAgICAgRFdPUkQg
R2xvYmFsRmxhZ3NTZXQ7DQogICAgICAgIERXT1JEIENyaXRpY2FsU2VjdGlvbkRlZmF1bHRUaW1l
b3V0Ow0KICAgICAgICBEV09SRCBEZUNvbW1pdEZyZWVCbG9ja1RocmVzaG9sZDsNCiAgICAgICAg
RFdPUkQgRGVDb21taXRUb3RhbEZyZWVUaHJlc2hvbGQ7DQogICAgICAgIFBWT0lEIExvY2tQcmVm
aXhUYWJsZTsNCiAgICAgICAgRFdPUkQgTWF4aW11bUFsbG9jYXRpb25TaXplOw0KICAgICAgICBE
V09SRCBWaXJ0dWFsTWVtb3J5VGhyZXNob2xkOw0KICAgICAgICBEV09SRCBQcm9jZXNzSGVhcEZs
YWdzOw0KICAgICAgICBEV09SRCBSZXNlcnZlZFs0XTsNCn0gSU1BR0VfTE9BRF9DT05GSUdfRElS
RUNUT1JZLCpQSU1BR0VfTE9BRF9DT05GSUdfRElSRUNUT1JZOw0KdHlwZWRlZiBzdHJ1Y3QgX0lN
QUdFX1JVTlRJTUVfRlVOQ1RJT05fRU5UUlkgew0KICAgICAgICBEV09SRCBCZWdpbkFkZHJlc3M7
DQogICAgICAgIERXT1JEIEVuZEFkZHJlc3M7DQogICAgICAgIFBWT0lEIEV4Y2VwdGlvbkhhbmRs
ZXI7DQogICAgICAgIFBWT0lEIEhhbmRsZXJEYXRhOw0KICAgICAgICBEV09SRCBQcm9sb2dFbmRB
ZGRyZXNzOw0KfSBJTUFHRV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZLCpQSU1BR0VfUlVOVElNRV9G
VU5DVElPTl9FTlRSWTsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ERUJVR19ESVJFQ1RPUlkgew0K
ICAgICAgICBEV09SRCBDaGFyYWN0ZXJpc3RpY3M7DQogICAgICAgIERXT1JEIFRpbWVEYXRlU3Rh
bXA7DQogICAgICAgIFdPUkQgTWFqb3JWZXJzaW9uOw0KICAgICAgICBXT1JEIE1pbm9yVmVyc2lv
bjsNCiAgICAgICAgRFdPUkQgVHlwZTsNCiAgICAgICAgRFdPUkQgU2l6ZU9mRGF0YTsNCiAgICAg
ICAgRFdPUkQgQWRkcmVzc09mUmF3RGF0YTsNCiAgICAgICAgRFdPUkQgUG9pbnRlclRvUmF3RGF0
YTsNCn0gSU1BR0VfREVCVUdfRElSRUNUT1JZLCpQSU1BR0VfREVCVUdfRElSRUNUT1JZOw0KdHlw
ZWRlZiBzdHJ1Y3QgX0ZQT19EQVRBIHsNCiAgICAgICAgRFdPUkQgdWxPZmZTdGFydDsNCiAgICAg
ICAgRFdPUkQgY2JQcm9jU2l6ZTsNCiAgICAgICAgRFdPUkQgY2R3TG9jYWxzOw0KICAgICAgICBX
T1JEIGNkd1BhcmFtczsNCiAgICAgICAgV09SRCBjYlByb2xvZzo4Ow0KICAgICAgICBXT1JEIGNi
UmVnczozOw0KICAgICAgICBXT1JEIGZIYXNTRUg6MTsNCiAgICAgICAgV09SRCBmVXNlQlA6MTsN
CiAgICAgICAgV09SRCByZXNlcnZlZDoxOw0KICAgICAgICBXT1JEIGNiRnJhbWU6MjsNCn0gRlBP
X0RBVEEsKlBGUE9fREFUQTsNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ERUJVR19NSVNDIHsNCiAg
ICAgICAgRFdPUkQgRGF0YVR5cGU7DQogICAgICAgIERXT1JEIExlbmd0aDsNCiAgICAgICAgQk9P
TEVBTiBVbmljb2RlOw0KICAgICAgICBCWVRFIFJlc2VydmVkWzNdOw0KICAgICAgICBCWVRFIERh
dGFbMV07DQp9IElNQUdFX0RFQlVHX01JU0MsKlBJTUFHRV9ERUJVR19NSVNDOw0KdHlwZWRlZiBz
dHJ1Y3QgX0lNQUdFX0ZVTkNUSU9OX0VOVFJZIHsNCiAgICAgICAgRFdPUkQgU3RhcnRpbmdBZGRy
ZXNzOw0KICAgICAgICBEV09SRCBFbmRpbmdBZGRyZXNzOw0KICAgICAgICBEV09SRCBFbmRPZlBy
b2xvZ3VlOw0KfSBJTUFHRV9GVU5DVElPTl9FTlRSWSwqUElNQUdFX0ZVTkNUSU9OX0VOVFJZOw0K
dHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX1NFUEFSQVRFX0RFQlVHX0hFQURFUiB7DQogICAgICAgIFdP
UkQgU2lnbmF0dXJlOw0KICAgICAgICBXT1JEIEZsYWdzOw0KICAgICAgICBXT1JEIE1hY2hpbmU7
DQogICAgICAgIFdPUkQgQ2hhcmFjdGVyaXN0aWNzOw0KICAgICAgICBEV09SRCBUaW1lRGF0ZVN0
YW1wOw0KICAgICAgICBEV09SRCBDaGVja1N1bTsNCiAgICAgICAgRFdPUkQgSW1hZ2VCYXNlOw0K
ICAgICAgICBEV09SRCBTaXplT2ZJbWFnZTsNCiAgICAgICAgRFdPUkQgTnVtYmVyT2ZTZWN0aW9u
czsNCiAgICAgICAgRFdPUkQgRXhwb3J0ZWROYW1lc1NpemU7DQogICAgICAgIERXT1JEIERlYnVn
RGlyZWN0b3J5U2l6ZTsNCiAgICAgICAgRFdPUkQgUmVzZXJ2ZWRbM107DQp9IElNQUdFX1NFUEFS
QVRFX0RFQlVHX0hFQURFUiwqUElNQUdFX1NFUEFSQVRFX0RFQlVHX0hFQURFUjsNCiNwcmFnbWEg
cGFjayhwb3ApDQp0eXBlZGVmIGVudW0gX0NNX1NFUlZJQ0VfTk9ERV9UWVBFIHsNCiAgICAgICAg
RHJpdmVyVHlwZT0xLA0KICAgICAgICBGaWxlU3lzdGVtVHlwZT0yLA0KICAgICAgICBXaW4zMlNl
cnZpY2VPd25Qcm9jZXNzPTE2LA0KICAgICAgICBXaW4zMlNlcnZpY2VTaGFyZVByb2Nlc3M9MzIs
DQogICAgICAgIEFkYXB0ZXJUeXBlPTQsDQogICAgICAgIFJlY29nbml6ZXJUeXBlPTgNCn0gU0VS
VklDRV9OT0RFX1RZUEU7DQp0eXBlZGVmIGVudW0gX0NNX1NFUlZJQ0VfTE9BRF9UWVBFIHsNCiAg
ICAgICAgQm9vdExvYWQ9MCwNCiAgICAgICAgU3lzdGVtTG9hZD0xLA0KICAgICAgICBBdXRvTG9h
ZD0yLA0KICAgICAgICBEZW1hbmRMb2FkPTMsDQogICAgICAgIERpc2FibGVMb2FkPTQNCn0gU0VS
VklDRV9MT0FEX1RZUEU7DQp0eXBlZGVmIGVudW0gX0NNX0VSUk9SX0NPTlRST0xfVFlQRSB7DQog
ICAgICAgIElnbm9yZUVycm9yPTAsDQogICAgICAgIE5vcm1hbEVycm9yPTEsDQogICAgICAgIFNl
dmVyZUVycm9yPTIsDQogICAgICAgIENyaXRpY2FsRXJyb3I9Mw0KfSBTRVJWSUNFX0VSUk9SX1RZ
UEU7DQp0eXBlZGVmIHN0cnVjdCBfTlRfVElCIHsNCiAgICAgICAgc3RydWN0IF9FWENFUFRJT05f
UkVHSVNUUkFUSU9OX1JFQ09SRCAqRXhjZXB0aW9uTGlzdDsNCiAgICAgICAgUFZPSUQgU3RhY2tC
YXNlOw0KICAgICAgICBQVk9JRCBTdGFja0xpbWl0Ow0KICAgICAgICBQVk9JRCBTdWJTeXN0ZW1U
aWI7DQogICAgICAgIF9fZXh0ZW5zaW9uX18gdW5pb24gew0KICAgICAgICAgICAgICAgIFBWT0lE
IEZpYmVyRGF0YTsNCiAgICAgICAgICAgICAgICBEV09SRCBWZXJzaW9uOw0KICAgICAgICB9IDsN
CiAgICAgICAgUFZPSUQgQXJiaXRyYXJ5VXNlclBvaW50ZXI7DQogICAgICAgIHN0cnVjdCBfTlRf
VElCICpTZWxmOw0KfSBOVF9USUIsKlBOVF9USUI7DQp0eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9E
QVRBX0JVRkZFUiB7DQogICAgICAgIERXT1JEIFJlcGFyc2VUYWc7DQogICAgICAgIFdPUkQgUmVw
YXJzZURhdGFMZW5ndGg7DQogICAgICAgIFdPUkQgUmVzZXJ2ZWQ7DQogICAgICAgIF9fZXh0ZW5z
aW9uX18gdW5pb24gew0KICAgICAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBXT1JEIFN1YnN0aXR1dGVOYW1lT2Zmc2V0Ow0KICAgICAgICAgICAgICAgICAgICAg
ICAgV09SRCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIFdP
UkQgUHJpbnROYW1lT2Zmc2V0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgV09SRCBQcmludE5h
bWVMZW5ndGg7DQogICAgICAgICAgICAgICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOw0K
ICAgICAgICAgICAgICAgIH0gU3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlcjsNCiAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgICAgICAgICAgV09SRCBTdWJzdGl0dXRlTmFt
ZU9mZnNldDsNCiAgICAgICAgICAgICAgICAgICAgICAgIFdPUkQgU3Vic3RpdHV0ZU5hbWVMZW5n
dGg7DQogICAgICAgICAgICAgICAgICAgICAgICBXT1JEIFByaW50TmFtZU9mZnNldDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIFdPUkQgUHJpbnROYW1lTGVuZ3RoOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgV0NIQVIgUGF0aEJ1ZmZlclsxXTsNCiAgICAgICAgICAgICAgICB9IE1vdW50UG9p
bnRSZXBhcnNlQnVmZmVyOw0KICAgICAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBCWVRFIERhdGFCdWZmZXJbMV07DQogICAgICAgICAgICAgICAgfSBHZW5lcmlj
UmVwYXJzZUJ1ZmZlcjsNCiAgICAgICAgfSA7DQp9IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQ
QVJTRV9EQVRBX0JVRkZFUjsNCnR5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0dVSURfREFUQV9CVUZG
RVIgew0KICAgICAgICBEV09SRCBSZXBhcnNlVGFnOw0KICAgICAgICBXT1JEIFJlcGFyc2VEYXRh
TGVuZ3RoOw0KICAgICAgICBXT1JEIFJlc2VydmVkOw0KICAgICAgICBHVUlEIFJlcGFyc2VHdWlk
Ow0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgIEJZVEUgRGF0YUJ1ZmZlclsxXTsN
CiAgICAgICAgfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsNCn0gUkVQQVJTRV9HVUlEX0RBVEFfQlVG
RkVSLCAqUFJFUEFSU0VfR1VJRF9EQVRBX0JVRkZFUjsNCnR5cGVkZWYgc3RydWN0IF9SRVBBUlNF
X1BPSU5UX0lORk9STUFUSU9OIHsNCiAgICAgICAgV09SRCBSZXBhcnNlRGF0YUxlbmd0aDsNCiAg
ICAgICAgV09SRCBVbnBhcnNlZE5hbWVMZW5ndGg7DQp9IFJFUEFSU0VfUE9JTlRfSU5GT1JNQVRJ
T04sICpQUkVQQVJTRV9QT0lOVF9JTkZPUk1BVElPTjsNCmV4dGVybiBfX2lubGluZV9fIFBWT0lE
IEdldEN1cnJlbnRGaWJlcih2b2lkKQ0Kew0KICAgIHZvaWQqIHJldDsNCiAgICBfX2FzbV9fIHZv
bGF0aWxlICgNCiAgICAgICAgICAgICAgIm1vdmwJJSVmczoweDEwLCUwIg0KICAgICAgICAgICAg
ICAgIDogIj1yIiAocmV0KQ0KICAgICAgICAgICAgICAgIDoNCiAgICAgICAgICAgICAgICApOw0K
ICAgIHJldHVybiByZXQ7DQp9DQoNCmV4dGVybiBfX2lubGluZV9fIFBWT0lEIEdldEZpYmVyRGF0
YSh2b2lkKQ0Kew0KICAgIHZvaWQqIHJldDsNCiAgICBfX2FzbV9fIHZvbGF0aWxlICgNCiAgICAg
ICAgICAgICAgIm1vdmwJJSVmczoweDEwLCUwXG4iDQogICAgICAgICAgICAgICJtb3ZsCSglMCks
JTAiDQogICAgICAgICAgICAgICA6ICI9ciIgKHJldCkNCiAgICAgICAgICAgICAgIDoNCiAgICAg
ICAgICAgICAgKTsNCiAgICByZXR1cm4gcmV0Ow0KfQ0KDQoNCg0KfQ0KIyAxNDYgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvd2luZGVmLmgiIDIgMw0KDQp0eXBlZGVmIFVJTlQgV1BBUkFNOw0K
dHlwZWRlZiBMT05HIExQQVJBTTsNCnR5cGVkZWYgTE9ORyBMUkVTVUxUOw0KDQp0eXBlZGVmIExP
TkcgSFJFU1VMVDsNCg0KDQoNCnR5cGVkZWYgV09SRCBBVE9NOw0KDQp0eXBlZGVmIEhBTkRMRSBI
R0xPQkFMOw0KdHlwZWRlZiBIQU5ETEUgSExPQ0FMOw0KdHlwZWRlZiBIQU5ETEUgR0xPQkFMSEFO
RExFOw0KdHlwZWRlZiBIQU5ETEUgTE9DQUxIQU5ETEU7DQp0eXBlZGVmIHZvaWQgKkhHRElPQko7
DQp0eXBlZGVmIHN0cnVjdCBIQUNDRUxfX3tpbnQgaTt9KkhBQ0NFTDsNCnR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfX3tpbnQgaTt9KkhCSVRNQVA7DQp0eXBlZGVmIHN0cnVjdCBIQlJVU0hfX3tpbnQg
aTt9KkhCUlVTSDsNCnR5cGVkZWYgc3RydWN0IEhDT0xPUlNQQUNFX197aW50IGk7fSpIQ09MT1JT
UEFDRTsNCnR5cGVkZWYgc3RydWN0IEhEQ19fe2ludCBpO30qSERDOw0KdHlwZWRlZiBzdHJ1Y3Qg
SEdMUkNfX3tpbnQgaTt9KkhHTFJDOw0KdHlwZWRlZiBzdHJ1Y3QgSERFU0tfX3tpbnQgaTt9KkhE
RVNLOw0KdHlwZWRlZiBzdHJ1Y3QgSEVOSE1FVEFGSUxFX197aW50IGk7fSpIRU5ITUVUQUZJTEU7
DQp0eXBlZGVmIHN0cnVjdCBIRk9OVF9fe2ludCBpO30qSEZPTlQ7DQp0eXBlZGVmIHN0cnVjdCBI
SUNPTl9fe2ludCBpO30qSElDT047DQp0eXBlZGVmIHN0cnVjdCBIS0VZX197aW50IGk7fSpIS0VZ
Ow0KDQoNCnR5cGVkZWYgc3RydWN0IEhNT05JVE9SX197aW50IGk7fSpITU9OSVRPUjsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSFRFUk1JTkFMX197aW50IGk7fSpIVEVSTUlOQUw7DQp0eXBlZGVmIHN0cnVj
dCBIV0lORVZFTlRIT09LX197aW50IGk7fSpIV0lORVZFTlRIT09LOw0KDQp0eXBlZGVmIEhLRVkg
KlBIS0VZOw0KdHlwZWRlZiBzdHJ1Y3QgSE1FTlVfX3tpbnQgaTt9KkhNRU5VOw0KdHlwZWRlZiBz
dHJ1Y3QgSE1FVEFGSUxFX197aW50IGk7fSpITUVUQUZJTEU7DQp0eXBlZGVmIHN0cnVjdCBISU5T
VEFOQ0VfX3tpbnQgaTt9KkhJTlNUQU5DRTsNCnR5cGVkZWYgSElOU1RBTkNFIEhNT0RVTEU7DQp0
eXBlZGVmIHN0cnVjdCBIUEFMRVRURV9fe2ludCBpO30qSFBBTEVUVEU7DQp0eXBlZGVmIHN0cnVj
dCBIUEVOX197aW50IGk7fSpIUEVOOw0KdHlwZWRlZiBzdHJ1Y3QgSFJHTl9fe2ludCBpO30qSFJH
TjsNCnR5cGVkZWYgc3RydWN0IEhSU1JDX197aW50IGk7fSpIUlNSQzsNCnR5cGVkZWYgc3RydWN0
IEhTVFJfX3tpbnQgaTt9KkhTVFI7DQp0eXBlZGVmIHN0cnVjdCBIVEFTS19fe2ludCBpO30qSFRB
U0s7DQp0eXBlZGVmIHN0cnVjdCBIV05EX197aW50IGk7fSpIV05EOw0KdHlwZWRlZiBzdHJ1Y3Qg
SFdJTlNUQV9fe2ludCBpO30qSFdJTlNUQTsNCnR5cGVkZWYgc3RydWN0IEhLTF9fe2ludCBpO30q
SEtMOw0KdHlwZWRlZiBpbnQgSEZJTEU7DQp0eXBlZGVmIEhJQ09OIEhDVVJTT1I7DQp0eXBlZGVm
IERXT1JEIENPTE9SUkVGOw0KdHlwZWRlZiBpbnQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgKkZBUlBST0MpKCk7DQp0eXBlZGVmIGludCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSAqTkVBUlBST0MpKCk7DQp0eXBlZGVmIGludCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSAqUFJPQykoKTsNCnR5cGVkZWYgc3RydWN0IHRhZ1JFQ1Qgew0KICAgICAgICBMT05HIGxlZnQ7
DQogICAgICAgIExPTkcgdG9wOw0KICAgICAgICBMT05HIHJpZ2h0Ow0KICAgICAgICBMT05HIGJv
dHRvbTsNCn0gUkVDVCwqUFJFQ1QsKkxQUkVDVDsNCnR5cGVkZWYgY29uc3QgUkVDVCAqTFBDUkVD
VDsNCnR5cGVkZWYgc3RydWN0IHRhZ1JFQ1RMIHsNCiAgICAgICAgTE9ORyBsZWZ0Ow0KICAgICAg
ICBMT05HIHRvcDsNCiAgICAgICAgTE9ORyByaWdodDsNCiAgICAgICAgTE9ORyBib3R0b207DQp9
IFJFQ1RMLCpQUkVDVEwsKkxQUkVDVEw7DQp0eXBlZGVmIGNvbnN0IFJFQ1RMICpMUENSRUNUTDsN
CnR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UIHsNCiAgICAgICAgTE9ORyB4Ow0KICAgICAgICBMT05H
IHk7DQp9IFBPSU5ULFBPSU5UTCwqUFBPSU5ULCpMUFBPSU5ULCpQUE9JTlRMLCpMUFBPSU5UTDsN
CnR5cGVkZWYgc3RydWN0IHRhZ1NJWkUgew0KICAgICAgICBMT05HIGN4Ow0KICAgICAgICBMT05H
IGN5Ow0KfSBTSVpFLFNJWkVMLCpQU0laRSwqTFBTSVpFLCpQU0laRUwsKkxQU0laRUw7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdQT0lOVFMgew0KICAgICAgICBTSE9SVCB4Ow0KICAgICAgICBTSE9SVCB5
Ow0KfSBQT0lOVFMsKlBQT0lOVFMsKkxQUE9JTlRTOw0KDQoNCn0NCiMgOTkgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS93aW5jb24uaCIgMSAzDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KIyA1MSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS93aW5jb24uaCIgMw0KdHlwZWRlZiBzdHJ1Y3QgX0NIQVJfSU5GTyB7
DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBXQ0hBUiBVbmljb2RlQ2hhcjsNCiAg
ICAgICAgICAgICAgICBDSEFSIEFzY2lpQ2hhcjsNCiAgICAgICAgfSBDaGFyOw0KICAgICAgICBX
T1JEIEF0dHJpYnV0ZXM7DQp9IENIQVJfSU5GTywqUENIQVJfSU5GTzsNCnR5cGVkZWYgc3RydWN0
IF9TTUFMTF9SRUNUIHsNCiAgICAgICAgU0hPUlQgTGVmdDsNCiAgICAgICAgU0hPUlQgVG9wOw0K
ICAgICAgICBTSE9SVCBSaWdodDsNCiAgICAgICAgU0hPUlQgQm90dG9tOw0KfSBTTUFMTF9SRUNU
LCpQU01BTExfUkVDVDsNCnR5cGVkZWYgc3RydWN0IF9DT05TT0xFX0NVUlNPUl9JTkZPIHsNCiAg
ICAgICAgRFdPUkQgZHdTaXplOw0KICAgICAgICBCT09MIGJWaXNpYmxlOw0KfSBDT05TT0xFX0NV
UlNPUl9JTkZPLCpQQ09OU09MRV9DVVJTT1JfSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9DT09SRCB7
DQogICAgICAgIFNIT1JUIFg7DQogICAgICAgIFNIT1JUIFk7DQp9IENPT1JEOw0KdHlwZWRlZiBz
dHJ1Y3QgX0NPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIHsNCiAgICAgICAgQ09PUkQgZHdTaXpl
Ow0KICAgICAgICBDT09SRCBkd0N1cnNvclBvc2l0aW9uOw0KICAgICAgICBXT1JEIHdBdHRyaWJ1
dGVzOw0KICAgICAgICBTTUFMTF9SRUNUIHNyV2luZG93Ow0KICAgICAgICBDT09SRCBkd01heGlt
dW1XaW5kb3dTaXplOw0KfSBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTywqUENPTlNPTEVfU0NS
RUVOX0JVRkZFUl9JTkZPOw0KdHlwZWRlZiBCT09MKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgKlBIQU5ETEVSX1JPVVRJTkUpKERXT1JEKTsNCnR5cGVkZWYgc3RydWN0IF9LRVlfRVZFTlRf
UkVDT1JEIHsNCiAgICAgICAgQk9PTCBiS2V5RG93bjsNCiAgICAgICAgV09SRCB3UmVwZWF0Q291
bnQ7DQogICAgICAgIFdPUkQgd1ZpcnR1YWxLZXlDb2RlOw0KICAgICAgICBXT1JEIHdWaXJ0dWFs
U2NhbkNvZGU7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBXQ0hBUiBVbmljb2Rl
Q2hhcjsNCiAgICAgICAgICAgICAgICBDSEFSIEFzY2lpQ2hhcjsNCiAgICAgICAgfSB1Q2hhcjsN
CiAgICAgICAgRFdPUkQgZHdDb250cm9sS2V5U3RhdGU7DQp9DQoNCg0KIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpDQoNCktFWV9FVkVOVF9SRUNPUkQ7DQoNCnR5cGVkZWYgc3RydWN0IF9NT1VTRV9F
VkVOVF9SRUNPUkQgew0KICAgICAgICBDT09SRCBkd01vdXNlUG9zaXRpb247DQogICAgICAgIERX
T1JEIGR3QnV0dG9uU3RhdGU7DQogICAgICAgIERXT1JEIGR3Q29udHJvbEtleVN0YXRlOw0KICAg
ICAgICBEV09SRCBkd0V2ZW50RmxhZ3M7DQp9IE1PVVNFX0VWRU5UX1JFQ09SRDsNCnR5cGVkZWYg
c3RydWN0IF9XSU5ET1dfQlVGRkVSX1NJWkVfUkVDT1JEIHsgQ09PUkQgZHdTaXplOyB9IFdJTkRP
V19CVUZGRVJfU0laRV9SRUNPUkQ7DQp0eXBlZGVmIHN0cnVjdCBfTUVOVV9FVkVOVF9SRUNPUkQg
eyBVSU5UIGR3Q29tbWFuZElkOyB9IE1FTlVfRVZFTlRfUkVDT1JELCpQTUVOVV9FVkVOVF9SRUNP
UkQ7DQp0eXBlZGVmIHN0cnVjdCBfRk9DVVNfRVZFTlRfUkVDT1JEIHsgQk9PTCBiU2V0Rm9jdXM7
IH0gRk9DVVNfRVZFTlRfUkVDT1JEOw0KdHlwZWRlZiBzdHJ1Y3QgX0lOUFVUX1JFQ09SRCB7DQog
ICAgICAgIFdPUkQgRXZlbnRUeXBlOw0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICAgICAg
S0VZX0VWRU5UX1JFQ09SRCBLZXlFdmVudDsNCiAgICAgICAgICAgICAgICBNT1VTRV9FVkVOVF9S
RUNPUkQgTW91c2VFdmVudDsNCiAgICAgICAgICAgICAgICBXSU5ET1dfQlVGRkVSX1NJWkVfUkVD
T1JEIFdpbmRvd0J1ZmZlclNpemVFdmVudDsNCiAgICAgICAgICAgICAgICBNRU5VX0VWRU5UX1JF
Q09SRCBNZW51RXZlbnQ7DQogICAgICAgICAgICAgICAgRk9DVVNfRVZFTlRfUkVDT1JEIEZvY3Vz
RXZlbnQ7DQogICAgICAgIH0gRXZlbnQ7DQp9IElOUFVUX1JFQ09SRCwqUElOUFVUX1JFQ09SRDsN
Cg0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFsbG9jQ29uc29sZSh2b2lkKTsN
CkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUNvbnNvbGVTY3JlZW5C
dWZmZXIoRFdPUkQsRFdPUkQsTFBTRUNVUklUWV9BVFRSSUJVVEVTLERXT1JELFBWT0lEKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0
ZShIQU5ETEUsV09SRCxEV09SRCxDT09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEZpbGxDb25zb2xlT3V0cHV0Q2hhcmFjdGVyQShIQU5ETEUsQ0hBUixEV09S
RCxDT09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbGxD
b25zb2xlT3V0cHV0Q2hhcmFjdGVyVyhIQU5ETEUsV0NIQVIsRFdPUkQsQ09PUkQsUERXT1JEKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGbHVzaENvbnNvbGVJbnB1dEJ1ZmZl
cihIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZyZWVDb25zb2xl
KHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdlbmVyYXRlQ29uc29s
ZUN0cmxFdmVudChEV09SRCxEV09SRCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0Q29uc29sZUNQKHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldENvbnNvbGVDdXJzb3JJbmZvKEhBTkRMRSxQQ09OU09MRV9DVVJTT1JfSU5GTyk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q29uc29sZU1vZGUoSEFORExFLFBEV09S
RCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q29uc29sZU91dHB1dENQ
KHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENvbnNvbGVTY3Jl
ZW5CdWZmZXJJbmZvKEhBTkRMRSxQQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8pOw0KRFdPUkQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDb25zb2xlVGl0bGVBKExQU1RSLERXT1JE
KTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q29uc29sZVRpdGxlVyhM
UFdTVFIsRFdPUkQpOw0KQ09PUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRMYXJn
ZXN0Q29uc29sZVdpbmRvd1NpemUoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBHZXROdW1iZXJPZkNvbnNvbGVJbnB1dEV2ZW50cyhIQU5ETEUsUERXT1JEKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXROdW1iZXJPZkNvbnNvbGVNb3VzZUJ1
dHRvbnMoUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQZWVrQ29u
c29sZUlucHV0QShIQU5ETEUsUElOUFVUX1JFQ09SRCxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBlZWtDb25zb2xlSW5wdXRXKEhBTkRMRSxQSU5QVVRf
UkVDT1JELERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UmVhZENvbnNvbGVBKEhBTkRMRSxQVk9JRCxEV09SRCxQRFdPUkQsUFZPSUQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlYWRDb25zb2xlVyhIQU5ETEUsUFZPSUQsRFdPUkQs
UERXT1JELFBWT0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWFkQ29u
c29sZUlucHV0QShIQU5ETEUsUElOUFVUX1JFQ09SRCxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlYWRDb25zb2xlSW5wdXRXKEhBTkRMRSxQSU5QVVRf
UkVDT1JELERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UmVhZENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUoSEFORExFLExQV09SRCxEV09SRCxDT09SRCxMUERX
T1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWFkQ29uc29sZU91dHB1
dENoYXJhY3RlckEoSEFORExFLExQU1RSLERXT1JELENPT1JELFBEV09SRCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVhZENvbnNvbGVPdXRwdXRDaGFyYWN0ZXJXKEhBTkRM
RSxMUFdTVFIsRFdPUkQsQ09PUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBSZWFkQ29uc29sZU91dHB1dEEoSEFORExFLFBDSEFSX0lORk8sQ09PUkQsQ09PUkQs
UFNNQUxMX1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlYWRDb25z
b2xlT3V0cHV0VyhIQU5ETEUsUENIQVJfSU5GTyxDT09SRCxDT09SRCxQU01BTExfUkVDVCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2Nyb2xsQ29uc29sZVNjcmVlbkJ1ZmZl
ckEoSEFORExFLGNvbnN0IFNNQUxMX1JFQ1QqLGNvbnN0IFNNQUxMX1JFQ1QqLENPT1JELGNvbnN0
IENIQVJfSU5GTyopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNjcm9sbENv
bnNvbGVTY3JlZW5CdWZmZXJXKEhBTkRMRSxjb25zdCBTTUFMTF9SRUNUKixjb25zdCBTTUFMTF9S
RUNUKixDT09SRCxjb25zdCBDSEFSX0lORk8qKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRDb25zb2xlQWN0aXZlU2NyZWVuQnVmZmVyKEhBTkRMRSk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29uc29sZUNQKFVJTlQpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENvbnNvbGVDdHJsSGFuZGxlcihQSEFORExFUl9ST1VU
SU5FLEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENvbnNvbGVD
dXJzb3JJbmZvKEhBTkRMRSxjb25zdCBDT05TT0xFX0NVUlNPUl9JTkZPKik7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uKEhBTkRMRSxD
T09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29uc29sZU1vZGUo
SEFORExFLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRDb25z
b2xlT3V0cHV0Q1AoVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0
Q29uc29sZVNjcmVlbkJ1ZmZlclNpemUoSEFORExFLENPT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShIQU5ETEUsV09SRCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29uc29sZVRpdGxlQShMUENTVFIp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENvbnNvbGVUaXRsZVcoTFBD
V1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29uc29sZVdpbmRv
d0luZm8oSEFORExFLEJPT0wsY29uc3QgU01BTExfUkVDVCopOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZUEoSEFORExFLFBDVk9JRCxEV09SRCxQRFdPUkQs
UFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZVco
SEFORExFLFBDVk9JRCxEV09SRCxQRFdPUkQsUFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZUlucHV0QShIQU5ETEUsY29uc3QgSU5QVVRfUkVDT1JE
KixEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRl
Q29uc29sZUlucHV0VyhIQU5ETEUsY29uc3QgSU5QVVRfUkVDT1JEKixEV09SRCxQRFdPUkQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZU91dHB1dEEoSEFO
RExFLGNvbnN0IENIQVJfSU5GTyosQ09PUkQsQ09PUkQsUFNNQUxMX1JFQ1QpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZU91dHB1dFcoSEFORExFLGNvbnN0
IENIQVJfSU5GTyosQ09PUkQsQ09PUkQsUFNNQUxMX1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFdyaXRlQ29uc29sZU91dHB1dEF0dHJpYnV0ZShIQU5ETEUsY29uc3Qg
V09SRCosRFdPUkQsQ09PUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXJBKEhBTkRMRSxMUENTVFIsRFdPUkQsQ09P
UkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXcml0ZUNvbnNv
bGVPdXRwdXRDaGFyYWN0ZXJXKEhBTkRMRSxMUENXU1RSLERXT1JELENPT1JELFBEV09SRCk7DQoj
IDIwMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5jb24uaCIgMw0KfQ0KIyAxMDAgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9iYXNldHlwcy5oIiAxIDMNCiMgODkgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvYmFzZXR5cHMuaCIgMw0KdHlwZWRlZiBHVUlEIFVVSUQ7DQoNCnR5cGVkZWYgR1VJRCBJ
SUQ7DQp0eXBlZGVmIEdVSUQgQ0xTSUQ7DQp0eXBlZGVmIENMU0lEICpMUENMU0lEOw0KdHlwZWRl
ZiBJSUQgKkxQSUlEOw0KdHlwZWRlZiBJSUQgKlJFRklJRDsNCnR5cGVkZWYgQ0xTSUQgKlJFRkNM
U0lEOw0KdHlwZWRlZiBHVUlEIEZNVElEOw0KdHlwZWRlZiBGTVRJRCAqUkVGRk1USUQ7DQp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgZXJyb3Jfc3RhdHVzX3Q7DQoNCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBQUk9QSUQ7DQojIDEwMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIg
Mw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2V4Y3B0LmgiIDEgMw0KIyAzOSAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9leGNwdC5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvd2luZG93cy5oIiAxIDMNCiMgNDAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZXhjcHQuaCIgMiAzDQojIDUzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2V4Y3B0LmgiIDMN
CnR5cGVkZWYgZW51bSB7DQogICAgICAgIEV4Y2VwdGlvbkNvbnRpbnVlRXhlY3V0aW9uLA0KICAg
ICAgICBFeGNlcHRpb25Db250aW51ZVNlYXJjaCwNCiAgICAgICAgRXhjZXB0aW9uTmVzdGVkRXhj
ZXB0aW9uLA0KICAgICAgICBFeGNlcHRpb25Db2xsaWRlZFVud2luZA0KfSBFWENFUFRJT05fRElT
UE9TSVRJT047DQojIDY3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2V4Y3B0LmgiIDMNCmV4
dGVybiAiQyIgew0KDQoNCg0KDQoNCg0KdHlwZWRlZiBFWENFUFRJT05fRElTUE9TSVRJT04gKCpQ
RVhDRVBUSU9OX0hBTkRMRVIpDQogICAgICAgICAgICAgICAgKHN0cnVjdCBfRVhDRVBUSU9OX1JF
Q09SRCosIHZvaWQqLCBzdHJ1Y3QgX0NPTlRFWFQqLCB2b2lkKik7DQoNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0VYQ0VQVElPTl9SRUdJU1RSQVRJT04NCnsNCiAgICAgICAgc3RydWN0IF9FWENF
UFRJT05fUkVHSVNUUkFUSU9OKiBwcmV2Ow0KICAgICAgICBQRVhDRVBUSU9OX0hBTkRMRVIgaGFu
ZGxlcjsNCn0gRVhDRVBUSU9OX1JFR0lTVFJBVElPTiwgKlBFWENFUFRJT05fUkVHSVNUUkFUSU9O
Ow0KDQp0eXBlZGVmIEVYQ0VQVElPTl9SRUdJU1RSQVRJT04gRVhDRVBUSU9OX1JFR0lTVFJBVElP
Tl9SRUNPUkQ7DQp0eXBlZGVmIFBFWENFUFRJT05fUkVHSVNUUkFUSU9OIFBFWENFUFRJT05fUkVH
SVNUUkFUSU9OX1JFQ09SRDsNCiMgMTE2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2V4Y3B0
LmgiIDMNCn0NCiMgMTAyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIgMiAz
DQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luYmFzZS5oIiAxIDMNCg0KDQoNCg0K
ZXh0ZXJuICJDIiB7DQojIDUwMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5iYXNlLmgi
IDMNCnR5cGVkZWYgc3RydWN0IF9GSUxFVElNRSB7DQogICAgICAgIERXT1JEIGR3TG93RGF0ZVRp
bWU7DQogICAgICAgIERXT1JEIGR3SGlnaERhdGVUaW1lOw0KfSBGSUxFVElNRSwqUEZJTEVUSU1F
LCpMUEZJTEVUSU1FOw0KdHlwZWRlZiBzdHJ1Y3QgX0JZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9O
IHsNCiAgICAgICAgRFdPUkQgZHdGaWxlQXR0cmlidXRlczsNCiAgICAgICAgRklMRVRJTUUgZnRD
cmVhdGlvblRpbWU7DQogICAgICAgIEZJTEVUSU1FIGZ0TGFzdEFjY2Vzc1RpbWU7DQogICAgICAg
IEZJTEVUSU1FIGZ0TGFzdFdyaXRlVGltZTsNCiAgICAgICAgRFdPUkQgZHdWb2x1bWVTZXJpYWxO
dW1iZXI7DQogICAgICAgIERXT1JEIG5GaWxlU2l6ZUhpZ2g7DQogICAgICAgIERXT1JEIG5GaWxl
U2l6ZUxvdzsNCiAgICAgICAgRFdPUkQgbk51bWJlck9mTGlua3M7DQogICAgICAgIERXT1JEIG5G
aWxlSW5kZXhIaWdoOw0KICAgICAgICBEV09SRCBuRmlsZUluZGV4TG93Ow0KfSBCWV9IQU5ETEVf
RklMRV9JTkZPUk1BVElPTiwqTFBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTjsNCnR5cGVkZWYg
c3RydWN0IF9EQ0Igew0KICAgICAgICBEV09SRCBEQ0JsZW5ndGg7DQogICAgICAgIERXT1JEIEJh
dWRSYXRlOw0KICAgICAgICBEV09SRCBmQmluYXJ5OjE7DQogICAgICAgIERXT1JEIGZQYXJpdHk6
MTsNCiAgICAgICAgRFdPUkQgZk91dHhDdHNGbG93OjE7DQogICAgICAgIERXT1JEIGZPdXR4RHNy
RmxvdzoxOw0KICAgICAgICBEV09SRCBmRHRyQ29udHJvbDoyOw0KICAgICAgICBEV09SRCBmRHNy
U2Vuc2l0aXZpdHk6MTsNCiAgICAgICAgRFdPUkQgZlRYQ29udGludWVPblhvZmY6MTsNCiAgICAg
ICAgRFdPUkQgZk91dFg6MTsNCiAgICAgICAgRFdPUkQgZkluWDoxOw0KICAgICAgICBEV09SRCBm
RXJyb3JDaGFyOjE7DQogICAgICAgIERXT1JEIGZOdWxsOjE7DQogICAgICAgIERXT1JEIGZSdHND
b250cm9sOjI7DQogICAgICAgIERXT1JEIGZBYm9ydE9uRXJyb3I6MTsNCiAgICAgICAgRFdPUkQg
ZkR1bW15MjoxNzsNCiAgICAgICAgV09SRCB3UmVzZXJ2ZWQ7DQogICAgICAgIFdPUkQgWG9uTGlt
Ow0KICAgICAgICBXT1JEIFhvZmZMaW07DQogICAgICAgIEJZVEUgQnl0ZVNpemU7DQogICAgICAg
IEJZVEUgUGFyaXR5Ow0KICAgICAgICBCWVRFIFN0b3BCaXRzOw0KICAgICAgICBjaGFyIFhvbkNo
YXI7DQogICAgICAgIGNoYXIgWG9mZkNoYXI7DQogICAgICAgIGNoYXIgRXJyb3JDaGFyOw0KICAg
ICAgICBjaGFyIEVvZkNoYXI7DQogICAgICAgIGNoYXIgRXZ0Q2hhcjsNCiAgICAgICAgV09SRCB3
UmVzZXJ2ZWQxOw0KfSBEQ0IsKkxQRENCOw0KdHlwZWRlZiBzdHJ1Y3QgX0NPTU1fQ09ORklHIHsN
CiAgICAgICAgRFdPUkQgZHdTaXplOw0KICAgICAgICBXT1JEIHdWZXJzaW9uOw0KICAgICAgICBX
T1JEIHdSZXNlcnZlZDsNCiAgICAgICAgRENCIGRjYjsNCiAgICAgICAgRFdPUkQgZHdQcm92aWRl
clN1YlR5cGU7DQogICAgICAgIERXT1JEIGR3UHJvdmlkZXJPZmZzZXQ7DQogICAgICAgIERXT1JE
IGR3UHJvdmlkZXJTaXplOw0KICAgICAgICBXQ0hBUiB3Y1Byb3ZpZGVyRGF0YVsxXTsNCn0gQ09N
TUNPTkZJRywqTFBDT01NQ09ORklHOw0KdHlwZWRlZiBzdHJ1Y3QgX0NPTU1QUk9QIHsNCiAgICAg
ICAgV09SRCB3UGFja2V0TGVuZ3RoOw0KICAgICAgICBXT1JEIHdQYWNrZXRWZXJzaW9uOw0KICAg
ICAgICBEV09SRCBkd1NlcnZpY2VNYXNrOw0KICAgICAgICBEV09SRCBkd1Jlc2VydmVkMTsNCiAg
ICAgICAgRFdPUkQgZHdNYXhUeFF1ZXVlOw0KICAgICAgICBEV09SRCBkd01heFJ4UXVldWU7DQog
ICAgICAgIERXT1JEIGR3TWF4QmF1ZDsNCiAgICAgICAgRFdPUkQgZHdQcm92U3ViVHlwZTsNCiAg
ICAgICAgRFdPUkQgZHdQcm92Q2FwYWJpbGl0aWVzOw0KICAgICAgICBEV09SRCBkd1NldHRhYmxl
UGFyYW1zOw0KICAgICAgICBEV09SRCBkd1NldHRhYmxlQmF1ZDsNCiAgICAgICAgV09SRCB3U2V0
dGFibGVEYXRhOw0KICAgICAgICBXT1JEIHdTZXR0YWJsZVN0b3BQYXJpdHk7DQogICAgICAgIERX
T1JEIGR3Q3VycmVudFR4UXVldWU7DQogICAgICAgIERXT1JEIGR3Q3VycmVudFJ4UXVldWU7DQog
ICAgICAgIERXT1JEIGR3UHJvdlNwZWMxOw0KICAgICAgICBEV09SRCBkd1Byb3ZTcGVjMjsNCiAg
ICAgICAgV0NIQVIgd2NQcm92Q2hhclsxXTsNCn0gQ09NTVBST1AsKkxQQ09NTVBST1A7DQp0eXBl
ZGVmIHN0cnVjdCBfQ09NTVRJTUVPVVRTIHsNCiAgICAgICAgRFdPUkQgUmVhZEludGVydmFsVGlt
ZW91dDsNCiAgICAgICAgRFdPUkQgUmVhZFRvdGFsVGltZW91dE11bHRpcGxpZXI7DQogICAgICAg
IERXT1JEIFJlYWRUb3RhbFRpbWVvdXRDb25zdGFudDsNCiAgICAgICAgRFdPUkQgV3JpdGVUb3Rh
bFRpbWVvdXRNdWx0aXBsaWVyOw0KICAgICAgICBEV09SRCBXcml0ZVRvdGFsVGltZW91dENvbnN0
YW50Ow0KfSBDT01NVElNRU9VVFMsKkxQQ09NTVRJTUVPVVRTOw0KdHlwZWRlZiBzdHJ1Y3QgX0NP
TVNUQVQgew0KICAgICAgICBEV09SRCBmQ3RzSG9sZDoxOw0KICAgICAgICBEV09SRCBmRHNySG9s
ZDoxOw0KICAgICAgICBEV09SRCBmUmxzZEhvbGQ6MTsNCiAgICAgICAgRFdPUkQgZlhvZmZIb2xk
OjE7DQogICAgICAgIERXT1JEIGZYb2ZmU2VudDoxOw0KICAgICAgICBEV09SRCBmRW9mOjE7DQog
ICAgICAgIERXT1JEIGZUeGltOjE7DQogICAgICAgIERXT1JEIGZSZXNlcnZlZDoyNTsNCiAgICAg
ICAgRFdPUkQgY2JJblF1ZTsNCiAgICAgICAgRFdPUkQgY2JPdXRRdWU7DQp9IENPTVNUQVQsKkxQ
Q09NU1RBVDsNCnR5cGVkZWYgRFdPUkQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkxQ
VEhSRUFEX1NUQVJUX1JPVVRJTkUpKExQVk9JRCk7DQp0eXBlZGVmIHN0cnVjdCBfQ1JFQVRFX1BS
T0NFU1NfREVCVUdfSU5GTyB7DQogICAgICAgIEhBTkRMRSBoRmlsZTsNCiAgICAgICAgSEFORExF
IGhQcm9jZXNzOw0KICAgICAgICBIQU5ETEUgaFRocmVhZDsNCiAgICAgICAgTFBWT0lEIGxwQmFz
ZU9mSW1hZ2U7DQogICAgICAgIERXT1JEIGR3RGVidWdJbmZvRmlsZU9mZnNldDsNCiAgICAgICAg
RFdPUkQgbkRlYnVnSW5mb1NpemU7DQogICAgICAgIExQVk9JRCBscFRocmVhZExvY2FsQmFzZTsN
CiAgICAgICAgTFBUSFJFQURfU1RBUlRfUk9VVElORSBscFN0YXJ0QWRkcmVzczsNCiAgICAgICAg
TFBWT0lEIGxwSW1hZ2VOYW1lOw0KICAgICAgICBXT1JEIGZVbmljb2RlOw0KfSBDUkVBVEVfUFJP
Q0VTU19ERUJVR19JTkZPLCpMUENSRUFURV9QUk9DRVNTX0RFQlVHX0lORk87DQp0eXBlZGVmIHN0
cnVjdCBfQ1JFQVRFX1RIUkVBRF9ERUJVR19JTkZPIHsNCiAgICAgICAgSEFORExFIGhUaHJlYWQ7
DQogICAgICAgIExQVk9JRCBscFRocmVhZExvY2FsQmFzZTsNCiAgICAgICAgTFBUSFJFQURfU1RB
UlRfUk9VVElORSBscFN0YXJ0QWRkcmVzczsNCn0gQ1JFQVRFX1RIUkVBRF9ERUJVR19JTkZPLCpM
UENSRUFURV9USFJFQURfREVCVUdfSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9FWENFUFRJT05fREVC
VUdfSU5GTyB7DQogICAgICAgIEVYQ0VQVElPTl9SRUNPUkQgRXhjZXB0aW9uUmVjb3JkOw0KICAg
ICAgICBEV09SRCBkd0ZpcnN0Q2hhbmNlOw0KfSBFWENFUFRJT05fREVCVUdfSU5GTywqTFBFWENF
UFRJT05fREVCVUdfSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9FWElUX1RIUkVBRF9ERUJVR19JTkZP
IHsNCiAgICAgICAgRFdPUkQgZHdFeGl0Q29kZTsNCn0gRVhJVF9USFJFQURfREVCVUdfSU5GTywq
TFBFWElUX1RIUkVBRF9ERUJVR19JTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgX0VYSVRfUFJPQ0VTU19E
RUJVR19JTkZPIHsNCiAgICAgICAgRFdPUkQgZHdFeGl0Q29kZTsNCn0gRVhJVF9QUk9DRVNTX0RF
QlVHX0lORk8sKkxQRVhJVF9QUk9DRVNTX0RFQlVHX0lORk87DQp0eXBlZGVmIHN0cnVjdCBfTE9B
RF9ETExfREVCVUdfSU5GTyB7DQogICAgICAgIEhBTkRMRSBoRmlsZTsNCiAgICAgICAgTFBWT0lE
IGxwQmFzZU9mRGxsOw0KICAgICAgICBEV09SRCBkd0RlYnVnSW5mb0ZpbGVPZmZzZXQ7DQogICAg
ICAgIERXT1JEIG5EZWJ1Z0luZm9TaXplOw0KICAgICAgICBMUFZPSUQgbHBJbWFnZU5hbWU7DQog
ICAgICAgIFdPUkQgZlVuaWNvZGU7DQp9IExPQURfRExMX0RFQlVHX0lORk8sKkxQTE9BRF9ETExf
REVCVUdfSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9VTkxPQURfRExMX0RFQlVHX0lORk8gew0KICAg
ICAgICBMUFZPSUQgbHBCYXNlT2ZEbGw7DQp9IFVOTE9BRF9ETExfREVCVUdfSU5GTywqTFBVTkxP
QURfRExMX0RFQlVHX0lORk87DQp0eXBlZGVmIHN0cnVjdCBfT1VUUFVUX0RFQlVHX1NUUklOR19J
TkZPIHsNCiAgICAgICAgTFBTVFIgbHBEZWJ1Z1N0cmluZ0RhdGE7DQogICAgICAgIFdPUkQgZlVu
aWNvZGU7DQogICAgICAgIFdPUkQgbkRlYnVnU3RyaW5nTGVuZ3RoOw0KfSBPVVRQVVRfREVCVUdf
U1RSSU5HX0lORk8sKkxQT1VUUFVUX0RFQlVHX1NUUklOR19JTkZPOw0KdHlwZWRlZiBzdHJ1Y3Qg
X1JJUF9JTkZPIHsNCiAgICAgICAgRFdPUkQgZHdFcnJvcjsNCiAgICAgICAgRFdPUkQgZHdUeXBl
Ow0KfSBSSVBfSU5GTywqTFBSSVBfSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9ERUJVR19FVkVOVCB7
DQogICAgICAgIERXT1JEIGR3RGVidWdFdmVudENvZGU7DQogICAgICAgIERXT1JEIGR3UHJvY2Vz
c0lkOw0KICAgICAgICBEV09SRCBkd1RocmVhZElkOw0KICAgICAgICB1bmlvbiB7DQogICAgICAg
ICAgICAgICAgRVhDRVBUSU9OX0RFQlVHX0lORk8gRXhjZXB0aW9uOw0KICAgICAgICAgICAgICAg
IENSRUFURV9USFJFQURfREVCVUdfSU5GTyBDcmVhdGVUaHJlYWQ7DQogICAgICAgICAgICAgICAg
Q1JFQVRFX1BST0NFU1NfREVCVUdfSU5GTyBDcmVhdGVQcm9jZXNzSW5mbzsNCiAgICAgICAgICAg
ICAgICBFWElUX1RIUkVBRF9ERUJVR19JTkZPIEV4aXRUaHJlYWQ7DQogICAgICAgICAgICAgICAg
RVhJVF9QUk9DRVNTX0RFQlVHX0lORk8gRXhpdFByb2Nlc3M7DQogICAgICAgICAgICAgICAgTE9B
RF9ETExfREVCVUdfSU5GTyBMb2FkRGxsOw0KICAgICAgICAgICAgICAgIFVOTE9BRF9ETExfREVC
VUdfSU5GTyBVbmxvYWREbGw7DQogICAgICAgICAgICAgICAgT1VUUFVUX0RFQlVHX1NUUklOR19J
TkZPIERlYnVnU3RyaW5nOw0KICAgICAgICAgICAgICAgIFJJUF9JTkZPIFJpcEluZm87DQogICAg
ICAgIH0gdTsNCn0gREVCVUdfRVZFTlQsKkxQREVCVUdfRVZFTlQ7DQp0eXBlZGVmIHN0cnVjdCBf
T1ZFUkxBUFBFRCB7DQogICAgICAgIERXT1JEIEludGVybmFsOw0KICAgICAgICBEV09SRCBJbnRl
cm5hbEhpZ2g7DQogICAgICAgIERXT1JEIE9mZnNldDsNCiAgICAgICAgRFdPUkQgT2Zmc2V0SGln
aDsNCiAgICAgICAgSEFORExFIGhFdmVudDsNCn0gT1ZFUkxBUFBFRCwqUE9WRVJMQVBQRUQsKkxQ
T1ZFUkxBUFBFRDsNCnR5cGVkZWYgc3RydWN0IF9TVEFSVFVQSU5GT0Egew0KICAgICAgICBEV09S
RCBjYjsNCiAgICAgICAgTFBTVFIgbHBSZXNlcnZlZDsNCiAgICAgICAgTFBTVFIgbHBEZXNrdG9w
Ow0KICAgICAgICBMUFNUUiBscFRpdGxlOw0KICAgICAgICBEV09SRCBkd1g7DQogICAgICAgIERX
T1JEIGR3WTsNCiAgICAgICAgRFdPUkQgZHdYU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdZU2l6ZTsN
CiAgICAgICAgRFdPUkQgZHdYQ291bnRDaGFyczsNCiAgICAgICAgRFdPUkQgZHdZQ291bnRDaGFy
czsNCiAgICAgICAgRFdPUkQgZHdGaWxsQXR0cmlidXRlOw0KICAgICAgICBEV09SRCBkd0ZsYWdz
Ow0KICAgICAgICBXT1JEIHdTaG93V2luZG93Ow0KICAgICAgICBXT1JEIGNiUmVzZXJ2ZWQyOw0K
ICAgICAgICBQQllURSBscFJlc2VydmVkMjsNCiAgICAgICAgSEFORExFIGhTdGRJbnB1dDsNCiAg
ICAgICAgSEFORExFIGhTdGRPdXRwdXQ7DQogICAgICAgIEhBTkRMRSBoU3RkRXJyb3I7DQp9IFNU
QVJUVVBJTkZPQSwqTFBTVEFSVFVQSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCBfU1RBUlRVUElORk9X
IHsNCiAgICAgICAgRFdPUkQgY2I7DQogICAgICAgIExQV1NUUiBscFJlc2VydmVkOw0KICAgICAg
ICBMUFdTVFIgbHBEZXNrdG9wOw0KICAgICAgICBMUFdTVFIgbHBUaXRsZTsNCiAgICAgICAgRFdP
UkQgZHdYOw0KICAgICAgICBEV09SRCBkd1k7DQogICAgICAgIERXT1JEIGR3WFNpemU7DQogICAg
ICAgIERXT1JEIGR3WVNpemU7DQogICAgICAgIERXT1JEIGR3WENvdW50Q2hhcnM7DQogICAgICAg
IERXT1JEIGR3WUNvdW50Q2hhcnM7DQogICAgICAgIERXT1JEIGR3RmlsbEF0dHJpYnV0ZTsNCiAg
ICAgICAgRFdPUkQgZHdGbGFnczsNCiAgICAgICAgV09SRCB3U2hvd1dpbmRvdzsNCiAgICAgICAg
V09SRCBjYlJlc2VydmVkMjsNCiAgICAgICAgUEJZVEUgbHBSZXNlcnZlZDI7DQogICAgICAgIEhB
TkRMRSBoU3RkSW5wdXQ7DQogICAgICAgIEhBTkRMRSBoU3RkT3V0cHV0Ow0KICAgICAgICBIQU5E
TEUgaFN0ZEVycm9yOw0KfSBTVEFSVFVQSU5GT1csKkxQU1RBUlRVUElORk9XOw0KdHlwZWRlZiBz
dHJ1Y3QgX1BST0NFU1NfSU5GT1JNQVRJT04gew0KICAgICAgICBIQU5ETEUgaFByb2Nlc3M7DQog
ICAgICAgIEhBTkRMRSBoVGhyZWFkOw0KICAgICAgICBEV09SRCBkd1Byb2Nlc3NJZDsNCiAgICAg
ICAgRFdPUkQgZHdUaHJlYWRJZDsNCn0gUFJPQ0VTU19JTkZPUk1BVElPTiwqTFBQUk9DRVNTX0lO
Rk9STUFUSU9OOw0KdHlwZWRlZiBzdHJ1Y3QgX0NSSVRJQ0FMX1NFQ1RJT05fREVCVUcgew0KICAg
ICAgICBXT1JEIFR5cGU7DQogICAgICAgIFdPUkQgQ3JlYXRvckJhY2tUcmFjZUluZGV4Ow0KICAg
ICAgICBzdHJ1Y3QgX0NSSVRJQ0FMX1NFQ1RJT04gKkNyaXRpY2FsU2VjdGlvbjsNCiAgICAgICAg
TElTVF9FTlRSWSBQcm9jZXNzTG9ja3NMaXN0Ow0KICAgICAgICBEV09SRCBFbnRyeUNvdW50Ow0K
ICAgICAgICBEV09SRCBDb250ZW50aW9uQ291bnQ7DQogICAgICAgIERXT1JEIFNwYXJlIFsyXTsN
Cn0gQ1JJVElDQUxfU0VDVElPTl9ERUJVRywqUENSSVRJQ0FMX1NFQ1RJT05fREVCVUc7DQp0eXBl
ZGVmIHN0cnVjdCBfQ1JJVElDQUxfU0VDVElPTiB7DQogICAgICAgIFBDUklUSUNBTF9TRUNUSU9O
X0RFQlVHIERlYnVnSW5mbzsNCiAgICAgICAgTE9ORyBMb2NrQ291bnQ7DQogICAgICAgIExPTkcg
UmVjdXJzaW9uQ291bnQ7DQogICAgICAgIEhBTkRMRSBPd25pbmdUaHJlYWQ7DQogICAgICAgIEhB
TkRMRSBMb2NrU2VtYXBob3JlOw0KICAgICAgICBEV09SRCBTcGluQ291bnQ7DQp9IENSSVRJQ0FM
X1NFQ1RJT04sKlBDUklUSUNBTF9TRUNUSU9OLCpMUENSSVRJQ0FMX1NFQ1RJT047DQp0eXBlZGVm
IHN0cnVjdCBfU1lTVEVNVElNRSB7DQogICAgICAgIFdPUkQgd1llYXI7DQogICAgICAgIFdPUkQg
d01vbnRoOw0KICAgICAgICBXT1JEIHdEYXlPZldlZWs7DQogICAgICAgIFdPUkQgd0RheTsNCiAg
ICAgICAgV09SRCB3SG91cjsNCiAgICAgICAgV09SRCB3TWludXRlOw0KICAgICAgICBXT1JEIHdT
ZWNvbmQ7DQogICAgICAgIFdPUkQgd01pbGxpc2Vjb25kczsNCn0gU1lTVEVNVElNRSwqTFBTWVNU
RU1USU1FOw0KdHlwZWRlZiBzdHJ1Y3QgX1dJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgew0KICAg
ICAgICBEV09SRCBkd0ZpbGVBdHRyaWJ1dGVzOw0KICAgICAgICBGSUxFVElNRSBmdENyZWF0aW9u
VGltZTsNCiAgICAgICAgRklMRVRJTUUgZnRMYXN0QWNjZXNzVGltZTsNCiAgICAgICAgRklMRVRJ
TUUgZnRMYXN0V3JpdGVUaW1lOw0KICAgICAgICBEV09SRCBuRmlsZVNpemVIaWdoOw0KICAgICAg
ICBEV09SRCBuRmlsZVNpemVMb3c7DQp9IFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEsKkxQV0lO
MzJfRklMRV9BVFRSSUJVVEVfREFUQTsNCnR5cGVkZWYgc3RydWN0IF9XSU4zMl9GSU5EX0RBVEFB
IHsNCiAgICAgICAgRFdPUkQgZHdGaWxlQXR0cmlidXRlczsNCiAgICAgICAgRklMRVRJTUUgZnRD
cmVhdGlvblRpbWU7DQogICAgICAgIEZJTEVUSU1FIGZ0TGFzdEFjY2Vzc1RpbWU7DQogICAgICAg
IEZJTEVUSU1FIGZ0TGFzdFdyaXRlVGltZTsNCiAgICAgICAgRFdPUkQgbkZpbGVTaXplSGlnaDsN
CiAgICAgICAgRFdPUkQgbkZpbGVTaXplTG93Ow0KICAgICAgICBEV09SRCBkd1Jlc2VydmVkMDsN
CiAgICAgICAgRFdPUkQgZHdSZXNlcnZlZDE7DQogICAgICAgIENIQVIgY0ZpbGVOYW1lWzI2MF07
DQogICAgICAgIENIQVIgY0FsdGVybmF0ZUZpbGVOYW1lWzE0XTsNCn0gV0lOMzJfRklORF9EQVRB
QSwqTFBXSU4zMl9GSU5EX0RBVEFBOw0KdHlwZWRlZiBzdHJ1Y3QgX1dJTjMyX0ZJTkRfREFUQVcg
ew0KICAgICAgICBEV09SRCBkd0ZpbGVBdHRyaWJ1dGVzOw0KICAgICAgICBGSUxFVElNRSBmdENy
ZWF0aW9uVGltZTsNCiAgICAgICAgRklMRVRJTUUgZnRMYXN0QWNjZXNzVGltZTsNCiAgICAgICAg
RklMRVRJTUUgZnRMYXN0V3JpdGVUaW1lOw0KICAgICAgICBEV09SRCBuRmlsZVNpemVIaWdoOw0K
ICAgICAgICBEV09SRCBuRmlsZVNpemVMb3c7DQogICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQwOw0K
ICAgICAgICBEV09SRCBkd1Jlc2VydmVkMTsNCiAgICAgICAgV0NIQVIgY0ZpbGVOYW1lWzI2MF07
DQogICAgICAgIFdDSEFSIGNBbHRlcm5hdGVGaWxlTmFtZVsxNF07DQp9IFdJTjMyX0ZJTkRfREFU
QVcsKkxQV0lOMzJfRklORF9EQVRBVzsNCnR5cGVkZWYgc3RydWN0IF9XSU4zMl9TVFJFQU1fSUQg
ew0KICAgICAgICBEV09SRCBkd1N0cmVhbUlkOw0KICAgICAgICBEV09SRCBkd1N0cmVhbUF0dHJp
YnV0ZXM7DQogICAgICAgIExBUkdFX0lOVEVHRVIgU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdTdHJl
YW1OYW1lU2l6ZTsNCiAgICAgICAgV0NIQVIgY1N0cmVhbU5hbWVbMV07DQp9IFdJTjMyX1NUUkVB
TV9JRDsNCnR5cGVkZWYgZW51bSBfRklOREVYX0lORk9fTEVWRUxTIHsNCiAgICAgICAgRmluZEV4
SW5mb1N0YW5kYXJkLA0KICAgICAgICBGaW5kRXhJbmZvTWF4SW5mb0xldmVsDQp9IEZJTkRFWF9J
TkZPX0xFVkVMUzsNCnR5cGVkZWYgZW51bSBfRklOREVYX1NFQVJDSF9PUFMgew0KICAgICAgICBG
aW5kRXhTZWFyY2hOYW1lTWF0Y2gsDQogICAgICAgIEZpbmRFeFNlYXJjaExpbWl0VG9EaXJlY3Rv
cmllcywNCiAgICAgICAgRmluZEV4U2VhcmNoTGltaXRUb0RldmljZXMsDQogICAgICAgIEZpbmRF
eFNlYXJjaE1heFNlYXJjaE9wDQp9IEZJTkRFWF9TRUFSQ0hfT1BTOw0KdHlwZWRlZiBlbnVtIF9B
Q0xfSU5GT1JNQVRJT05fQ0xBU1Mgew0KICAgICAgICBBY2xSZXZpc2lvbkluZm9ybWF0aW9uPTEs
DQogICAgICAgIEFjbFNpemVJbmZvcm1hdGlvbg0KfSBBQ0xfSU5GT1JNQVRJT05fQ0xBU1M7DQp0
eXBlZGVmIHN0cnVjdCB0YWdIV19QUk9GSUxFX0lORk9BIHsNCiAgICAgICAgRFdPUkQgZHdEb2Nr
SW5mbzsNCiAgICAgICAgQ0hBUiBzekh3UHJvZmlsZUd1aWRbMzldOw0KICAgICAgICBDSEFSIHN6
SHdQcm9maWxlTmFtZVs4MF07DQp9IEhXX1BST0ZJTEVfSU5GT0EsKkxQSFdfUFJPRklMRV9JTkZP
QTsNCnR5cGVkZWYgc3RydWN0IHRhZ0hXX1BST0ZJTEVfSU5GT1cgew0KICAgICAgICBEV09SRCBk
d0RvY2tJbmZvOw0KICAgICAgICBXQ0hBUiBzekh3UHJvZmlsZUd1aWRbMzldOw0KICAgICAgICBX
Q0hBUiBzekh3UHJvZmlsZU5hbWVbODBdOw0KfSBIV19QUk9GSUxFX0lORk9XLCpMUEhXX1BST0ZJ
TEVfSU5GT1c7DQp0eXBlZGVmIGVudW0gX0dFVF9GSUxFRVhfSU5GT19MRVZFTFMgew0KICAgICAg
ICBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsDQogICAgICAgIEdldEZpbGVFeE1heEluZm9MZXZlbA0K
fSBHRVRfRklMRUVYX0lORk9fTEVWRUxTOw0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9JTkZPIHsN
CiAgICAgICAgX19leHRlbnNpb25fXyB1bmlvbiB7DQogICAgICAgICAgICAgICAgRFdPUkQgZHdP
ZW1JZDsNCiAgICAgICAgICAgICAgICBfX2V4dGVuc2lvbl9fIHN0cnVjdCB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBXT1JEIHdQcm9jZXNzb3JBcmNoaXRlY3R1cmU7DQogICAgICAgICAgICAg
ICAgICAgICAgICBXT1JEIHdSZXNlcnZlZDsNCiAgICAgICAgICAgICAgICB9IDsNCiAgICAgICAg
fSA7DQogICAgICAgIERXT1JEIGR3UGFnZVNpemU7DQogICAgICAgIFBWT0lEIGxwTWluaW11bUFw
cGxpY2F0aW9uQWRkcmVzczsNCiAgICAgICAgUFZPSUQgbHBNYXhpbXVtQXBwbGljYXRpb25BZGRy
ZXNzOw0KICAgICAgICBEV09SRCBkd0FjdGl2ZVByb2Nlc3Nvck1hc2s7DQogICAgICAgIERXT1JE
IGR3TnVtYmVyT2ZQcm9jZXNzb3JzOw0KICAgICAgICBEV09SRCBkd1Byb2Nlc3NvclR5cGU7DQog
ICAgICAgIERXT1JEIGR3QWxsb2NhdGlvbkdyYW51bGFyaXR5Ow0KICAgICAgICBXT1JEIHdQcm9j
ZXNzb3JMZXZlbDsNCiAgICAgICAgV09SRCB3UHJvY2Vzc29yUmV2aXNpb247DQp9IFNZU1RFTV9J
TkZPLCpMUFNZU1RFTV9JTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9QT1dFUl9TVEFUVVMg
ew0KICAgICAgICBCWVRFIEFDTGluZVN0YXR1czsNCiAgICAgICAgQllURSBCYXR0ZXJ5RmxhZzsN
CiAgICAgICAgQllURSBCYXR0ZXJ5TGlmZVBlcmNlbnQ7DQogICAgICAgIEJZVEUgUmVzZXJ2ZWQx
Ow0KICAgICAgICBEV09SRCBCYXR0ZXJ5TGlmZVRpbWU7DQogICAgICAgIERXT1JEIEJhdHRlcnlG
dWxsTGlmZVRpbWU7DQp9IFNZU1RFTV9QT1dFUl9TVEFUVVMsKkxQU1lTVEVNX1BPV0VSX1NUQVRV
UzsNCnR5cGVkZWYgc3RydWN0IF9USU1FX1pPTkVfSU5GT1JNQVRJT04gew0KICAgICAgICBMT05H
IEJpYXM7DQogICAgICAgIFdDSEFSIFN0YW5kYXJkTmFtZVszMl07DQogICAgICAgIFNZU1RFTVRJ
TUUgU3RhbmRhcmREYXRlOw0KICAgICAgICBMT05HIFN0YW5kYXJkQmlhczsNCiAgICAgICAgV0NI
QVIgRGF5bGlnaHROYW1lWzMyXTsNCiAgICAgICAgU1lTVEVNVElNRSBEYXlsaWdodERhdGU7DQog
ICAgICAgIExPTkcgRGF5bGlnaHRCaWFzOw0KfSBUSU1FX1pPTkVfSU5GT1JNQVRJT04sKkxQVElN
RV9aT05FX0lORk9STUFUSU9OOw0KdHlwZWRlZiBzdHJ1Y3QgX09TVkVSU0lPTklORk9BIHsNCiAg
ICAgICAgRFdPUkQgZHdPU1ZlcnNpb25JbmZvU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdNYWpvclZl
cnNpb247DQogICAgICAgIERXT1JEIGR3TWlub3JWZXJzaW9uOw0KICAgICAgICBEV09SRCBkd0J1
aWxkTnVtYmVyOw0KICAgICAgICBEV09SRCBkd1BsYXRmb3JtSWQ7DQogICAgICAgIENIQVIgc3pD
U0RWZXJzaW9uWzEyOF07DQp9IE9TVkVSU0lPTklORk9BLCpQT1NWRVJTSU9OSU5GT0EsKkxQT1NW
RVJTSU9OSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCBfT1NWRVJTSU9OSU5GT1cgew0KICAgICAgICBE
V09SRCBkd09TVmVyc2lvbkluZm9TaXplOw0KICAgICAgICBEV09SRCBkd01ham9yVmVyc2lvbjsN
CiAgICAgICAgRFdPUkQgZHdNaW5vclZlcnNpb247DQogICAgICAgIERXT1JEIGR3QnVpbGROdW1i
ZXI7DQogICAgICAgIERXT1JEIGR3UGxhdGZvcm1JZDsNCiAgICAgICAgV0NIQVIgc3pDU0RWZXJz
aW9uWzEyOF07DQp9IE9TVkVSU0lPTklORk9XLCpQT1NWRVJTSU9OSU5GT1csKkxQT1NWRVJTSU9O
SU5GT1c7DQp0eXBlZGVmIHN0cnVjdCBfTUVNT1JZU1RBVFVTIHsNCiAgICAgICAgRFdPUkQgZHdM
ZW5ndGg7DQogICAgICAgIERXT1JEIGR3TWVtb3J5TG9hZDsNCiAgICAgICAgRFdPUkQgZHdUb3Rh
bFBoeXM7DQogICAgICAgIERXT1JEIGR3QXZhaWxQaHlzOw0KICAgICAgICBEV09SRCBkd1RvdGFs
UGFnZUZpbGU7DQogICAgICAgIERXT1JEIGR3QXZhaWxQYWdlRmlsZTsNCiAgICAgICAgRFdPUkQg
ZHdUb3RhbFZpcnR1YWw7DQogICAgICAgIERXT1JEIGR3QXZhaWxWaXJ0dWFsOw0KfSBNRU1PUllT
VEFUVVMsKkxQTUVNT1JZU1RBVFVTOw0KdHlwZWRlZiBzdHJ1Y3QgX0xEVF9FTlRSWSB7DQogICAg
ICAgIFdPUkQgTGltaXRMb3c7DQogICAgICAgIFdPUkQgQmFzZUxvdzsNCiAgICAgICAgdW5pb24g
ew0KICAgICAgICAgICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICBCWVRF
IEJhc2VNaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICBCWVRFIEZsYWdzMTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIEJZVEUgRmxhZ3MyOw0KICAgICAgICAgICAgICAgICAgICAgICAgQllU
RSBCYXNlSGk7DQogICAgICAgICAgICAgICAgfSBCeXRlczsNCiAgICAgICAgICAgICAgICBzdHJ1
Y3Qgew0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgQmFzZU1pZDo4Ow0KICAgICAgICAg
ICAgICAgICAgICAgICAgRFdPUkQgVHlwZTo1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgRFdP
UkQgRHBsOjI7DQogICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBQcmVzOjE7DQogICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCBMaW1pdEhpOjQ7DQogICAgICAgICAgICAgICAgICAgICAg
ICBEV09SRCBTeXM6MTsNCiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIFJlc2VydmVkXzA6
MTsNCiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIERlZmF1bHRfQmlnOjE7DQogICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCBHcmFudWxhcml0eToxOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgRFdPUkQgQmFzZUhpOjg7DQogICAgICAgICAgICAgICAgfSBCaXRzOw0KICAgICAgICB9
IEhpZ2hXb3JkOw0KfSBMRFRfRU5UUlksKlBMRFRfRU5UUlksKkxQTERUX0VOVFJZOw0KdHlwZWRl
ZiBzdHJ1Y3QgX1BST0NFU1NfSEVBUF9FTlRSWSB7DQogICAgICAgIFBWT0lEIGxwRGF0YTsNCiAg
ICAgICAgRFdPUkQgY2JEYXRhOw0KICAgICAgICBCWVRFIGNiT3ZlcmhlYWQ7DQogICAgICAgIEJZ
VEUgaVJlZ2lvbkluZGV4Ow0KICAgICAgICBXT1JEIHdGbGFnczsNCiAgICAgICAgX19leHRlbnNp
b25fXyB1bmlvbiB7DQogICAgICAgICAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIEhBTkRMRSBoTWVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZHdSZXNl
cnZlZFszXTsNCiAgICAgICAgICAgICAgICB9IEJsb2NrOw0KICAgICAgICAgICAgICAgIHN0cnVj
dCB7DQogICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkd0NvbW1pdHRlZFNpemU7DQogICAg
ICAgICAgICAgICAgICAgICAgICBEV09SRCBkd1VuQ29tbWl0dGVkU2l6ZTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIExQVk9JRCBscEZpcnN0QmxvY2s7DQogICAgICAgICAgICAgICAgICAgICAg
ICBMUFZPSUQgbHBMYXN0QmxvY2s7DQogICAgICAgICAgICAgICAgfSBSZWdpb247DQogICAgICAg
IH0gOw0KfSBQUk9DRVNTX0hFQVBfRU5UUlksKkxQUFJPQ0VTU19IRUFQX0VOVFJZOw0KdHlwZWRl
ZiBzdHJ1Y3QgX09GU1RSVUNUIHsNCiAgICAgICAgQllURSBjQnl0ZXM7DQogICAgICAgIEJZVEUg
ZkZpeGVkRGlzazsNCiAgICAgICAgV09SRCBuRXJyQ29kZTsNCiAgICAgICAgV09SRCBSZXNlcnZl
ZDE7DQogICAgICAgIFdPUkQgUmVzZXJ2ZWQyOw0KICAgICAgICBDSEFSIHN6UGF0aE5hbWVbMTI4
XTsNCn0gT0ZTVFJVQ1QsKkxQT0ZTVFJVQ1QsKlBPRlNUUlVDVDsNCnR5cGVkZWYgc3RydWN0IF9X
SU5fQ0VSVElGSUNBVEUgew0KICAgICAgRFdPUkQgZHdMZW5ndGg7DQogICAgICBXT1JEIHdSZXZp
c2lvbjsNCiAgICAgIFdPUkQgd0NlcnRpZmljYXRlVHlwZTsNCiAgICAgIEJZVEUgYkNlcnRpZmlj
YXRlWzFdOw0KfSBXSU5fQ0VSVElGSUNBVEUsICpMUFdJTl9DRVJUSUZJQ0FURTsNCg0KdHlwZWRl
ZiBEV09SRChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpMUFBST0dSRVNTX1JPVVRJTkUp
KExBUkdFX0lOVEVHRVIsTEFSR0VfSU5URUdFUixMQVJHRV9JTlRFR0VSLExBUkdFX0lOVEVHRVIs
RFdPUkQsRFdPUkQsSEFORExFLEhBTkRMRSxMUFZPSUQpOw0KdHlwZWRlZiB2b2lkKF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgKkxQRklCRVJfU1RBUlRfUk9VVElORSkoUFZPSUQpOw0KdHlw
ZWRlZiBCT09MKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkVOVU1SRVNMQU5HUFJPQyko
SE1PRFVMRSxMUENUU1RSLExQQ1RTVFIsV09SRCxMT05HKTsNCnR5cGVkZWYgQk9PTChfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpICpFTlVNUkVTTkFNRVBST0MpKEhNT0RVTEUsTFBDVFNUUixM
UFRTVFIsTE9ORyk7DQp0eXBlZGVmIEJPT0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAq
RU5VTVJFU1RZUEVQUk9DKShITU9EVUxFLExQVFNUUixMT05HKTsNCnR5cGVkZWYgdm9pZChfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpMUE9WRVJMQVBQRURfQ09NUExFVElPTl9ST1VUSU5F
KShEV09SRCxEV09SRCxMUE9WRVJMQVBQRUQpOw0KdHlwZWRlZiBMT05HKF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgKlBUT1BfTEVWRUxfRVhDRVBUSU9OX0ZJTFRFUikoTFBFWENFUFRJT05f
UE9JTlRFUlMpOw0KdHlwZWRlZiBQVE9QX0xFVkVMX0VYQ0VQVElPTl9GSUxURVIgTFBUT1BfTEVW
RUxfRVhDRVBUSU9OX0ZJTFRFUjsNCnR5cGVkZWYgdm9pZChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpICpQQVBDRlVOQykoRFdPUkQpOw0KdHlwZWRlZiB2b2lkKF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgKlBUSU1FUkFQQ1JPVVRJTkUpKFBWT0lELERXT1JELERXT1JEKTsNCg0KDQoN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdpbk1haW4oSElOU1RBTkNFLEhJTlNU
QU5DRSxMUFNUUixpbnQpOw0KDQoNCg0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
d1dpbk1haW4oSElOU1RBTkNFLEhJTlNUQU5DRSxMUFdTVFIsaW50KTsNCmxvbmcgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBfaHJlYWQoSEZJTEUsTFBWT0lELGxvbmcpOw0KbG9uZyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIF9od3JpdGUoSEZJTEUsTFBDU1RSLGxvbmcpOw0KSEZJ
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBfbGNsb3NlKEhGSUxFKTsNCkhGSUxFIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgX2xjcmVhdChMUENTVFIsaW50KTsNCkxPTkcgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBfbGxzZWVrKEhGSUxFLExPTkcsaW50KTsNCkhGSUxF
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgX2xvcGVuKExQQ1NUUixpbnQpOw0KVUlOVCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIF9scmVhZChIRklMRSxMUFZPSUQsVUlOVCk7DQpV
SU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgX2x3cml0ZShIRklMRSxMUENTVFIsVUlO
VCk7DQoNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBY2Nlc3NDaGVjayhQU0VD
VVJJVFlfREVTQ1JJUFRPUixIQU5ETEUsRFdPUkQsUEdFTkVSSUNfTUFQUElORyxQUFJJVklMRUdF
X1NFVCxQRFdPUkQsUERXT1JELFBCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBBY2Nlc3NDaGVja0FuZEF1ZGl0QWxhcm1BKExQQ1NUUixMUFZPSUQsTFBTVFIsTFBTVFIs
UFNFQ1VSSVRZX0RFU0NSSVBUT1IsRFdPUkQsUEdFTkVSSUNfTUFQUElORyxCT09MLFBEV09SRCxQ
Qk9PTCxQQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWNjZXNzQ2hl
Y2tBbmRBdWRpdEFsYXJtVyhMUENXU1RSLExQVk9JRCxMUFdTVFIsTFBXU1RSLFBTRUNVUklUWV9E
RVNDUklQVE9SLERXT1JELFBHRU5FUklDX01BUFBJTkcsQk9PTCxQRFdPUkQsUEJPT0wsUEJPT0wp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFkZEFjY2Vzc0FsbG93ZWRBY2Uo
UEFDTCxEV09SRCxEV09SRCxQU0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBBZGRBY2Nlc3NEZW5pZWRBY2UoUEFDTCxEV09SRCxEV09SRCxQU0lEKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRBY2UoUEFDTCxEV09SRCxEV09SRCxQVk9JRCxEV09S
RCk7DQpBVE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWRkQXRvbUEoTFBDU1RSKTsN
CkFUT00gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRBdG9tVyhMUENXU1RSKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRBdWRpdEFjY2Vzc0FjZShQQUNMLERX
T1JELERXT1JELFBTSUQsQk9PTCxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBBZGp1c3RUb2tlbkdyb3VwcyhIQU5ETEUsQk9PTCxQVE9LRU5fR1JPVVBTLERXT1JELFBU
T0tFTl9HUk9VUFMsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBB
ZGp1c3RUb2tlblByaXZpbGVnZXMoSEFORExFLEJPT0wsUFRPS0VOX1BSSVZJTEVHRVMsRFdPUkQs
UFRPS0VOX1BSSVZJTEVHRVMsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQoUFNJRF9JREVOVElGSUVSX0FVVEhPUklUWSxC
WVRFLERXT1JELERXT1JELERXT1JELERXT1JELERXT1JELERXT1JELERXT1JELERXT1JELFBTSUQq
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBbGxvY2F0ZUxvY2FsbHlVbmlx
dWVJZChQTFVJRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQXJlQWxsQWNj
ZXNzZXNHcmFudGVkKERXT1JELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBBcmVBbnlBY2Nlc3Nlc0dyYW50ZWQoRFdPUkQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEFyZUZpbGVBcGlzQU5TSSh2b2lkKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBCYWNrdXBFdmVudExvZ0EoSEFORExFLExQQ1NUUik7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQmFja3VwRXZlbnRMb2dXKEhBTkRMRSxMUENX
U1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCYWNrdXBSZWFkKEhBTkRM
RSxQQllURSxEV09SRCxQRFdPUkQsQk9PTCxCT09MLFBWT0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBCYWNrdXBTZWVrKEhBTkRMRSxEV09SRCxEV09SRCxQRFdPUkQsUERX
T1JELFBWT0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCYWNrdXBXcml0
ZShIQU5ETEUsUEJZVEUsRFdPUkQsUERXT1JELEJPT0wsQk9PTCxQVk9JRCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQmVlcChEV09SRCxEV09SRCk7DQpIQU5ETEUgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBCZWdpblVwZGF0ZVJlc291cmNlQShMUENTVFIsQk9PTCk7
DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCZWdpblVwZGF0ZVJlc291cmNl
VyhMUENXU1RSLEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEJ1aWxk
Q29tbURDQkEoTFBDU1RSLExQRENCKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBCdWlsZENvbW1EQ0JXKExQQ1dTVFIsTFBEQ0IpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEJ1aWxkQ29tbURDQkFuZFRpbWVvdXRzQShMUENTVFIsTFBEQ0IsTFBDT01NVElN
RU9VVFMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEJ1aWxkQ29tbURDQkFu
ZFRpbWVvdXRzVyhMUENXU1RSLExQRENCLExQQ09NTVRJTUVPVVRTKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBDYWxsTmFtZWRQaXBlQShMUENTVFIsUFZPSUQsRFdPUkQsUFZP
SUQsRFdPUkQsUERXT1JELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBDYWxsTmFtZWRQaXBlVyhMUENXU1RSLFBWT0lELERXT1JELFBWT0lELERXT1JELFBEV09SRCxE
V09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2FuY2VsSW8oSEFORExF
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDYW5jZWxXYWl0YWJsZVRpbWVy
KEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2xlYXJDb21tQnJl
YWsoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDbGVhckNvbW1F
cnJvcihIQU5ETEUsUERXT1JELExQQ09NU1RBVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgQ2xlYXJFdmVudExvZ0EoSEFORExFLExQQ1NUUik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ2xlYXJFdmVudExvZ1coSEFORExFLExQQ1dTVFIpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENsb3NlRXZlbnRMb2coSEFORExFKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDbG9zZUhhbmRsZShIQU5ETEUpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvbW1Db25maWdEaWFsb2dBKExQQ1NUUixIV05E
LExQQ09NTUNPTkZJRyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29tbUNv
bmZpZ0RpYWxvZ1coTFBDV1NUUixIV05ELExQQ09NTUNPTkZJRyk7DQpMT05HIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ29tcGFyZUZpbGVUaW1lKGNvbnN0IEZJTEVUSU1FKixjb25zdCBG
SUxFVElNRSopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvbm5lY3ROYW1l
ZFBpcGUoSEFORExFLExQT1ZFUkxBUFBFRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgQ29udGludWVEZWJ1Z0V2ZW50KERXT1JELERXT1JELERXT1JEKTsNClBWT0lEIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29udmVydFRocmVhZFRvRmliZXIoUFZPSUQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvcHlGaWxlQShMUENTVFIsTFBDU1RSLEJP
T0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvcHlGaWxlVyhMUENXU1RS
LExQQ1dTVFIsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29weUZp
bGVFeEEoTFBDU1RSLExQQ1NUUixMUFBST0dSRVNTX1JPVVRJTkUsTFBWT0lELExQQk9PTCxEV09S
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29weUZpbGVFeFcoTFBDV1NU
UixMUENXU1RSLExQUFJPR1JFU1NfUk9VVElORSxMUFZPSUQsTFBCT09MLERXT1JEKTsNCiMgMTAx
MSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5iYXNlLmgiIDMNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBDb3B5U2lkKERXT1JELFBTSUQsUFNJRCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlRGlyZWN0b3J5QShMUENTVFIsTFBTRUNVUklU
WV9BVFRSSUJVVEVTKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVE
aXJlY3RvcnlXKExQQ1dTVFIsTFBTRUNVUklUWV9BVFRSSUJVVEVTKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVEaXJlY3RvcnlFeEEoTFBDU1RSLExQQ1NUUixMUFNF
Q1VSSVRZX0FUVFJJQlVURVMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENy
ZWF0ZURpcmVjdG9yeUV4VyhMUENXU1RSLExQQ1dTVFIsTFBTRUNVUklUWV9BVFRSSUJVVEVTKTsN
CkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUV2ZW50QShMUFNFQ1VS
SVRZX0FUVFJJQlVURVMsQk9PTCxCT09MLExQQ1NUUik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBDcmVhdGVFdmVudFcoTFBTRUNVUklUWV9BVFRSSUJVVEVTLEJPT0wsQk9P
TCxMUENXU1RSKTsNCkxQVk9JRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUZp
YmVyKERXT1JELExQRklCRVJfU1RBUlRfUk9VVElORSxMUFZPSUQpOw0KSEFORExFIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlRmlsZUEoTFBDU1RSLERXT1JELERXT1JELExQU0VD
VVJJVFlfQVRUUklCVVRFUyxEV09SRCxEV09SRCxIQU5ETEUpOw0KSEFORExFIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlRmlsZVcoTFBDV1NUUixEV09SRCxEV09SRCxMUFNFQ1VS
SVRZX0FUVFJJQlVURVMsRFdPUkQsRFdPUkQsSEFORExFKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIENyZWF0ZUZpbGVNYXBwaW5nQShIQU5ETEUsTFBTRUNVUklUWV9BVFRS
SUJVVEVTLERXT1JELERXT1JELERXT1JELExQQ1NUUik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBDcmVhdGVGaWxlTWFwcGluZ1coSEFORExFLExQU0VDVVJJVFlfQVRUUklC
VVRFUyxEV09SRCxEV09SRCxEV09SRCxMUENXU1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIENyZWF0ZUhhcmRMaW5rQShMUENTVFIsTFBDU1RSLExQU0VDVVJJVFlfQVRU
UklCVVRFUyk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVIYXJk
TGlua1coTFBDV1NUUixMUENXU1RSLExQU0VDVVJJVFlfQVRUUklCVVRFUyk7DQpIQU5ETEUgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVJb0NvbXBsZXRpb25Qb3J0KEhBTkRMRSxI
QU5ETEUsRFdPUkQsRFdPUkQpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
Q3JlYXRlTWFpbHNsb3RBKExQQ1NUUixEV09SRCxEV09SRCxMUFNFQ1VSSVRZX0FUVFJJQlVURVMp
Ow0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlTWFpbHNsb3RXKExQ
Q1dTVFIsRFdPUkQsRFdPUkQsTFBTRUNVUklUWV9BVFRSSUJVVEVTKTsNCkhBTkRMRSBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZU11dGV4QShMUFNFQ1VSSVRZX0FUVFJJQlVURVMs
Qk9PTCxMUENTVFIpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRl
TXV0ZXhXKExQU0VDVVJJVFlfQVRUUklCVVRFUyxCT09MLExQQ1dTVFIpOw0KSEFORExFIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlTmFtZWRQaXBlQShMUENTVFIsRFdPUkQsRFdP
UkQsRFdPUkQsRFdPUkQsRFdPUkQsRFdPUkQsTFBTRUNVUklUWV9BVFRSSUJVVEVTKTsNCkhBTkRM
RSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZU5hbWVkUGlwZVcoTFBDV1NUUixE
V09SRCxEV09SRCxEV09SRCxEV09SRCxEV09SRCxEV09SRCxMUFNFQ1VSSVRZX0FUVFJJQlVURVMp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZVBpcGUoUEhBTkRMRSxQ
SEFORExFLExQU0VDVVJJVFlfQVRUUklCVVRFUyxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ3JlYXRlUHJpdmF0ZU9iamVjdFNlY3VyaXR5KFBTRUNVUklUWV9ERVND
UklQVE9SLFBTRUNVUklUWV9ERVNDUklQVE9SLFBTRUNVUklUWV9ERVNDUklQVE9SKixCT09MLEhB
TkRMRSxQR0VORVJJQ19NQVBQSU5HKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBDcmVhdGVQcm9jZXNzQShMUENTVFIsTFBTVFIsTFBTRUNVUklUWV9BVFRSSUJVVEVTLExQU0VD
VVJJVFlfQVRUUklCVVRFUyxCT09MLERXT1JELFBWT0lELExQQ1NUUixMUFNUQVJUVVBJTkZPQSxM
UFBST0NFU1NfSU5GT1JNQVRJT04pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IENyZWF0ZVByb2Nlc3NXKExQQ1dTVFIsTFBXU1RSLExQU0VDVVJJVFlfQVRUUklCVVRFUyxMUFNF
Q1VSSVRZX0FUVFJJQlVURVMsQk9PTCxEV09SRCxQVk9JRCxMUENXU1RSLExQU1RBUlRVUElORk9X
LExQUFJPQ0VTU19JTkZPUk1BVElPTik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgQ3JlYXRlUHJvY2Vzc0FzVXNlckEoSEFORExFLExQQ1NUUixMUFNUUixMUFNFQ1VSSVRZX0FU
VFJJQlVURVMsTFBTRUNVUklUWV9BVFRSSUJVVEVTLEJPT0wsRFdPUkQsUFZPSUQsTFBDU1RSLExQ
U1RBUlRVUElORk9BLExQUFJPQ0VTU19JTkZPUk1BVElPTik7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ3JlYXRlUHJvY2Vzc0FzVXNlclcoSEFORExFLExQQ1dTVFIsTFBXU1RS
LExQU0VDVVJJVFlfQVRUUklCVVRFUyxMUFNFQ1VSSVRZX0FUVFJJQlVURVMsQk9PTCxEV09SRCxQ
Vk9JRCxMUENXU1RSLExQU1RBUlRVUElORk9XLExQUFJPQ0VTU19JTkZPUk1BVElPTik7DQpIQU5E
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVSZW1vdGVUaHJlYWQoSEFORExF
LExQU0VDVVJJVFlfQVRUUklCVVRFUyxEV09SRCxMUFRIUkVBRF9TVEFSVF9ST1VUSU5FLExQVk9J
RCxEV09SRCxMUERXT1JEKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENy
ZWF0ZVNlbWFwaG9yZUEoTFBTRUNVUklUWV9BVFRSSUJVVEVTLExPTkcsTE9ORyxMUENTVFIpOw0K
SEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlU2VtYXBob3JlVyhMUFNF
Q1VSSVRZX0FUVFJJQlVURVMsTE9ORyxMT05HLExQQ1dTVFIpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBDcmVhdGVUYXBlUGFydGl0aW9uKEhBTkRMRSxEV09SRCxEV09SRCxE
V09SRCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVUaHJlYWQo
TFBTRUNVUklUWV9BVFRSSUJVVEVTLERXT1JELExQVEhSRUFEX1NUQVJUX1JPVVRJTkUsUFZPSUQs
RFdPUkQsUERXT1JEKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0
ZVdhaXRhYmxlVGltZXJBKExQU0VDVVJJVFlfQVRUUklCVVRFUyxCT09MLExQQ1NUUik7DQpIQU5E
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVXYWl0YWJsZVRpbWVyVyhMUFNF
Q1VSSVRZX0FUVFJJQlVURVMsQk9PTCxMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBEZWJ1Z0FjdGl2ZVByb2Nlc3MoRFdPUkQpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlYnVnQnJlYWsodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRGVmaW5lRG9zRGV2aWNlQShEV09SRCxMUENTVFIsTFBDU1RSKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWZpbmVEb3NEZXZpY2VXKERXT1JELExQQ1dT
VFIsTFBDV1NUUik7DQoNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWxldGVB
Y2UoUEFDTCxEV09SRCk7DQpBVE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRl
QXRvbShBVE9NKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWxldGVDcml0
aWNhbFNlY3Rpb24oUENSSVRJQ0FMX1NFQ1RJT04pOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIERlbGV0ZUZpYmVyKFBWT0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBEZWxldGVGaWxlQShMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIERlbGV0ZUZpbGVXKExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIERlcmVnaXN0ZXJFdmVudFNvdXJjZShIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlc3Ryb3lQcml2YXRlT2JqZWN0U2VjdXJpdHkoUFNFQ1VSSVRZX0RF
U0NSSVBUT1IqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZXZpY2VJb0Nv
bnRyb2woSEFORExFLERXT1JELFBWT0lELERXT1JELFBWT0lELERXT1JELFBEV09SRCxQT1ZFUkxB
UFBFRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGlzYWJsZVRocmVhZExp
YnJhcnlDYWxscyhITU9EVUxFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBE
aXNjb25uZWN0TmFtZWRQaXBlKEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRG9zRGF0ZVRpbWVUb0ZpbGVUaW1lKFdPUkQsV09SRCxMUEZJTEVUSU1FKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEdXBsaWNhdGVIYW5kbGUoSEFORExFLEhBTkRM
RSxIQU5ETEUsUEhBTkRMRSxEV09SRCxCT09MLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBEdXBsaWNhdGVUb2tlbihIQU5ETEUsU0VDVVJJVFlfSU1QRVJTT05BVElP
Tl9MRVZFTCxQSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEdXBs
aWNhdGVUb2tlbkV4KEhBTkRMRSxEV09SRCxMUFNFQ1VSSVRZX0FUVFJJQlVURVMsU0VDVVJJVFlf
SU1QRVJTT05BVElPTl9MRVZFTCxUT0tFTl9UWVBFLFBIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEVuZFVwZGF0ZVJlc291cmNlQShIQU5ETEUsQk9PTCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW5kVXBkYXRlUmVzb3VyY2VXKEhBTkRMRSxC
T09MKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnRlckNyaXRpY2FsU2Vj
dGlvbihMUENSSVRJQ0FMX1NFQ1RJT04pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEVudW1SZXNvdXJjZUxhbmd1YWdlc0EoSElOU1RBTkNFLExQQ1NUUixMUENTVFIsRU5VTVJF
U0xBTkdQUk9DLExPTkcpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1S
ZXNvdXJjZUxhbmd1YWdlc1coSElOU1RBTkNFLExQQ1dTVFIsTFBDV1NUUixFTlVNUkVTTEFOR1BS
T0MsTE9ORyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bVJlc291cmNl
TmFtZXNBKEhJTlNUQU5DRSxMUENTVFIsRU5VTVJFU05BTUVQUk9DLExPTkcpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1SZXNvdXJjZU5hbWVzVyhISU5TVEFOQ0UsTFBD
V1NUUixFTlVNUkVTTkFNRVBST0MsTE9ORyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRW51bVJlc291cmNlVHlwZXNBKEhJTlNUQU5DRSxFTlVNUkVTVFlQRVBST0MsTE9ORyk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bVJlc291cmNlVHlwZXNXKEhJ
TlNUQU5DRSxFTlVNUkVTVFlQRVBST0MsTE9ORyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgRXF1YWxQcmVmaXhTaWQoUFNJRCxQU0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBFcXVhbFNpZChQU0lELFBTSUQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBFcmFzZVRhcGUoSEFORExFLERXT1JELEJPT0wpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVzY2FwZUNvbW1GdW5jdGlvbihIQU5ETEUsRFdPUkQpOw0K
X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgRXhpdFByb2Nlc3MoVUlOVCk7DQpfX2F0dHJpYnV0ZV9fKChub3JldHVybikpIHZvaWQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFeGl0VGhyZWFkKERXT1JEKTsNCkRXT1JEIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQShMUENTVFIs
TFBTVFIsRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFeHBhbmRF
bnZpcm9ubWVudFN0cmluZ3NXKExQQ1dTVFIsTFBXU1RSLERXT1JEKTsNCnZvaWQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBGYXRhbEFwcEV4aXRBKFVJTlQsTFBDU1RSKTsNCnZvaWQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGYXRhbEFwcEV4aXRXKFVJTlQsTFBDV1NUUik7DQp2
b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmF0YWxFeGl0KGludCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmlsZVRpbWVUb0Rvc0RhdGVUaW1lKGNvbnN0IEZJ
TEVUSU1FICosTFBXT1JELExQV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgRmlsZVRpbWVUb0xvY2FsRmlsZVRpbWUoRklMRVRJTUUgKixMUEZJTEVUSU1FKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaWxlVGltZVRvU3lzdGVtVGltZShjb25zdCBG
SUxFVElNRSAqLExQU1lTVEVNVElNRSk7DQpBVE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgRmluZEF0b21BKExQQ1NUUik7DQpBVE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RmluZEF0b21XKExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZp
bmRDbG9zZShIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmRD
bG9zZUNoYW5nZU5vdGlmaWNhdGlvbihIQU5ETEUpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRmluZEZpcnN0Q2hhbmdlTm90aWZpY2F0aW9uQShMUENTVFIsQk9PTCxEV09S
RCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaW5kRmlyc3RDaGFuZ2VO
b3RpZmljYXRpb25XKExQQ1dTVFIsQk9PTCxEV09SRCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBGaW5kRmlyc3RGaWxlQShMUENTVFIsTFBXSU4zMl9GSU5EX0RBVEFBKTsN
CkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmRGaXJzdEZpbGVXKExQQ1dT
VFIsTFBXSU4zMl9GSU5EX0RBVEFXKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEZpbmRGaXJzdEZpbGVFeEEoTFBDU1RSLEZJTkRFWF9JTkZPX0xFVkVMUyxQVk9JRCxGSU5E
RVhfU0VBUkNIX09QUyxQVk9JRCxEV09SRCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBGaW5kRmlyc3RGaWxlRXhXKExQQ1dTVFIsRklOREVYX0lORk9fTEVWRUxTLFBWT0lE
LEZJTkRFWF9TRUFSQ0hfT1BTLFBWT0lELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBGaW5kRmlyc3RGcmVlQWNlKFBBQ0wsUFZPSUQqKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBGaW5kTmV4dENoYW5nZU5vdGlmaWNhdGlvbihIQU5ETEUpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmROZXh0RmlsZUEoSEFORExFLExQ
V0lOMzJfRklORF9EQVRBQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmlu
ZE5leHRGaWxlVyhIQU5ETEUsTFBXSU4zMl9GSU5EX0RBVEFXKTsNCkhSU1JDIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgRmluZFJlc291cmNlQShITU9EVUxFLExQQ1NUUixMUENTVFIpOw0K
SFJTUkMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaW5kUmVzb3VyY2VXKEhJTlNUQU5D
RSxMUENXU1RSLExQQ1dTVFIpOw0KSFJTUkMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBG
aW5kUmVzb3VyY2VFeEEoSElOU1RBTkNFLExQQ1NUUixMUENTVFIsV09SRCk7DQpIUlNSQyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmRSZXNvdXJjZUV4VyhISU5TVEFOQ0UsTFBDV1NU
UixMUENXU1RSLFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZsdXNo
RmlsZUJ1ZmZlcnMoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBG
bHVzaEluc3RydWN0aW9uQ2FjaGUoSEFORExFLFBDVk9JRCxEV09SRCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgRmx1c2hWaWV3T2ZGaWxlKFBDVk9JRCxEV09SRCk7DQpEV09S
RCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZvcm1hdE1lc3NhZ2VBKERXT1JELFBDVk9J
RCxEV09SRCxEV09SRCxMUFNUUixEV09SRCx2YV9saXN0Kik7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEZvcm1hdE1lc3NhZ2VXKERXT1JELFBDVk9JRCxEV09SRCxEV09SRCxM
UFdTVFIsRFdPUkQsdmFfbGlzdCopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEZyZWVFbnZpcm9ubWVudFN0cmluZ3NBKExQU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBGcmVlRW52aXJvbm1lbnRTdHJpbmdzVyhMUFdTVFIpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZyZWVMaWJyYXJ5KEhNT0RVTEUpOw0KX19hdHRyaWJ1dGVf
Xygobm9yZXR1cm4pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRnJlZUxpYnJh
cnlBbmRFeGl0VGhyZWFkKEhNT0RVTEUsRFdPUkQpOw0KDQoNCg0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEZyZWVSZXNvdXJjZShIR0xPQkFMKTsNCg0KUFZPSUQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBGcmVlU2lkKFBTSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldEFjZShQQUNMLERXT1JELFBWT0lEKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRBY2xJbmZvcm1hdGlvbihQQUNMLFBWT0lELERXT1JELEFDTF9J
TkZPUk1BVElPTl9DTEFTUyk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
QXRvbU5hbWVBKEFUT00sTFBTVFIsaW50KTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRBdG9tTmFtZVcoQVRPTSxMUFdTVFIsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRCaW5hcnlUeXBlQShMUENTVFIsUERXT1JEKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRCaW5hcnlUeXBlVyhMUENXU1RSLFBEV09SRCk7DQpM
UFNUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENvbW1hbmRMaW5lQSh2b2lkKTsN
CkxQV1NUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENvbW1hbmRMaW5lVyh2b2lk
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDb21tQ29uZmlnKEhBTkRM
RSxMUENPTU1DT05GSUcsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRDb21tTWFzayhIQU5ETEUsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBHZXRDb21tTW9kZW1TdGF0dXMoSEFORExFLFBEV09SRCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q29tbVByb3BlcnRpZXMoSEFORExFLExQQ09NTVBST1Ap
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENvbW1TdGF0ZShIQU5ETEUs
TFBEQ0IpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENvbW1UaW1lb3V0
cyhIQU5ETEUsTFBDT01NVElNRU9VVFMpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRDb21wcmVzc2VkRmlsZVNpemVBKExQQ1NUUixQRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDb21wcmVzc2VkRmlsZVNpemVXKExQQ1dTVFIsUERX
T1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDb21wdXRlck5hbWVB
KExQU1RSLFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q29t
cHV0ZXJOYW1lVyhMUFdTVFIsUERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0Q3VycmVudERpcmVjdG9yeUEoRFdPUkQsTFBTVFIpOw0KRFdPUkQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRDdXJyZW50RGlyZWN0b3J5VyhEV09SRCxMUFdTVFIpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEN1cnJlbnRId1Byb2ZpbGVBKExQ
SFdfUFJPRklMRV9JTkZPQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
Q3VycmVudEh3UHJvZmlsZVcoTFBIV19QUk9GSUxFX0lORk9XKTsNCkhBTkRMRSBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdldEN1cnJlbnRQcm9jZXNzKHZvaWQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDdXJyZW50UHJvY2Vzc0lkKHZvaWQpOw0KSEFORExF
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q3VycmVudFRocmVhZCh2b2lkKTsNCkRX
T1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q3VycmVudFRocmVhZElkKHZvaWQp
Ow0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RGVmYXVsdENvbW1Db25m
aWdBKExQQ1NUUixMUENPTU1DT05GSUcsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBHZXREZWZhdWx0Q29tbUNvbmZpZ1coTFBDV1NUUixMUENPTU1DT05GSUcsUERX
T1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXREaXNrRnJlZVNwYWNl
QShMUENTVFIsUERXT1JELFBEV09SRCxQRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXREaXNrRnJlZVNwYWNlVyhMUENXU1RSLFBEV09SRCxQRFdPUkQs
UERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RGlz
a0ZyZWVTcGFjZUV4QShMUENTVFIsUFVMQVJHRV9JTlRFR0VSLFBVTEFSR0VfSU5URUdFUixQVUxB
UkdFX0lOVEVHRVIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERpc2tG
cmVlU3BhY2VFeFcoTFBDV1NUUixQVUxBUkdFX0lOVEVHRVIsUFVMQVJHRV9JTlRFR0VSLFBVTEFS
R0VfSU5URUdFUik7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RHJpdmVU
eXBlQShMUENTVFIpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERyaXZl
VHlwZVcoTFBDV1NUUik7DQpMUFNUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEVu
dmlyb25tZW50U3RyaW5ncyh2b2lkKTsNCkxQU1RSIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0RW52aXJvbm1lbnRTdHJpbmdzQSh2b2lkKTsNCkxQV1NUUiBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldEVudmlyb25tZW50U3RyaW5nc1codm9pZCk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEVudmlyb25tZW50VmFyaWFibGVBKExQQ1NUUixMUFNU
UixEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEVudmlyb25t
ZW50VmFyaWFibGVXKExQQ1dTVFIsTFBXU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRFeGl0Q29kZVByb2Nlc3MoSEFORExFLFBEV09SRCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RXhpdENvZGVUaHJlYWQoSEFORExFLFBEV09S
RCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVBdHRyaWJ1dGVz
QShMUENTVFIpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRGaWxlQXR0
cmlidXRlc1coTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
RmlsZUF0dHJpYnV0ZXNFeEEoTFBDU1RSLEdFVF9GSUxFRVhfSU5GT19MRVZFTFMsUFZPSUQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVBdHRyaWJ1dGVzRXhXKExQ
Q1dTVFIsR0VUX0ZJTEVFWF9JTkZPX0xFVkVMUyxQVk9JRCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoSEFORExFLExQQllfSEFO
RExFX0ZJTEVfSU5GT1JNQVRJT04pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldEZpbGVTZWN1cml0eUEoTFBDU1RSLFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklUWV9E
RVNDUklQVE9SLERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0RmlsZVNlY3VyaXR5VyhMUENXU1RSLFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklU
WV9ERVNDUklQVE9SLERXT1JELFBEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldEZpbGVTaXplKEhBTkRMRSxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldEZpbGVUaW1lKEhBTkRMRSxMUEZJTEVUSU1FLExQRklMRVRJTUUsTFBG
SUxFVElNRSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVUeXBl
KEhBTkRMRSk7DQoNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RnVsbFBh
dGhOYW1lQShMUENTVFIsRFdPUkQsTFBTVFIsTFBTVFIqKTsNCkRXT1JEIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0RnVsbFBhdGhOYW1lVyhMUENXU1RSLERXT1JELExQV1NUUixMUFdT
VFIqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRIYW5kbGVJbmZvcm1h
dGlvbihIQU5ETEUsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBH
ZXRLZXJuZWxPYmplY3RTZWN1cml0eShIQU5ETEUsU0VDVVJJVFlfSU5GT1JNQVRJT04sUFNFQ1VS
SVRZX0RFU0NSSVBUT1IsRFdPUkQsUERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0TGVuZ3RoU2lkKFBTSUQpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldExvY2FsVGltZShMUFNZU1RFTVRJTUUpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRMb2dpY2FsRHJpdmVzKHZvaWQpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRMb2dpY2FsRHJpdmVTdHJpbmdzQShEV09SRCxMUFNUUik7DQpE
V09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldExvZ2ljYWxEcml2ZVN0cmluZ3NX
KERXT1JELExQV1NUUik7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldExv
bmdQYXRoTmFtZUEoTFBDU1RSLExQU1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0TG9uZ1BhdGhOYW1lVyhMUENXU1RSLExQV1NUUixEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWFpbHNsb3RJbmZvKEhBTkRMRSxQRFdP
UkQsUERXT1JELFBEV09SRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRNb2R1bGVGaWxlTmFtZUEoSElOU1RBTkNFLExQU1RSLERXT1JEKTsNCkRXT1JEIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TW9kdWxlRmlsZU5hbWVXKEhJTlNUQU5DRSxM
UFdTVFIsRFdPUkQpOw0KSE1PRFVMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE1v
ZHVsZUhhbmRsZUEoTFBDU1RSKTsNCkhNT0RVTEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRNb2R1bGVIYW5kbGVXKExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldE5hbWVkUGlwZUhhbmRsZVN0YXRlQShIQU5ETEUsUERXT1JELFBEV09SRCxQRFdP
UkQsUERXT1JELExQU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXROYW1lZFBpcGVIYW5kbGVTdGF0ZVcoSEFORExFLFBEV09SRCxQRFdPUkQsUERXT1JELFBE
V09SRCxMUFdTVFIsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dE5hbWVkUGlwZUluZm8oSEFORExFLFBEV09SRCxQRFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMo
SEFORExFLFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0T2xk
ZXN0RXZlbnRMb2dSZWNvcmQoSEFORExFLFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0T3ZlcmxhcHBlZFJlc3VsdChIQU5ETEUsTFBPVkVSTEFQUEVELFBEV09S
RCxCT09MKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJpb3JpdHlD
bGFzcyhIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByaXZh
dGVPYmplY3RTZWN1cml0eShQU0VDVVJJVFlfREVTQ1JJUFRPUixTRUNVUklUWV9JTkZPUk1BVElP
TixQU0VDVVJJVFlfREVTQ1JJUFRPUixEV09SRCxQRFdPUkQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldFByaXZhdGVQcm9maWxlSW50QShMUENTVFIsTFBDU1RSLElOVCxM
UENTVFIpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByaXZhdGVQcm9m
aWxlSW50VyhMUENXU1RSLExQQ1dTVFIsSU5ULExQQ1dTVFIpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25BKExQQ1NUUixMUFNUUixE
V09SRCxMUENTVFIpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcml2
YXRlUHJvZmlsZVNlY3Rpb25XKExQQ1dTVFIsTFBXU1RSLERXT1JELExQQ1dTVFIpOw0KRFdPUkQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb25OYW1l
c0EoTFBTVFIsRFdPUkQsTFBDU1RSKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uTmFtZXNXKExQV1NUUixEV09SRCxMUENXU1RSKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJpdmF0ZVByb2ZpbGVTdHJp
bmdBKExQQ1NUUixMUENTVFIsTFBDU1RSLExQU1RSLERXT1JELExQQ1NUUik7DQpEV09SRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMUENXU1RS
LExQQ1dTVFIsTFBDV1NUUixMUFdTVFIsRFdPUkQsTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0UHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKExQQ1NUUixMUENTVFIs
UFZPSUQsVUlOVCxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dFByaXZhdGVQcm9maWxlU3RydWN0VyhMUENXU1RSLExQQ1dTVFIsUFZPSUQsVUlOVCxMUENXU1RS
KTsNCkZBUlBST0MgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcm9jQWRkcmVzcyhI
SU5TVEFOQ0UsTFBDU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQ
cm9jZXNzQWZmaW5pdHlNYXNrKEhBTkRMRSxQRFdPUkQsUERXT1JEKTsNCkhBTkRMRSBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByb2Nlc3NIZWFwKHZvaWQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcm9jZXNzSGVhcHMoRFdPUkQsUEhBTkRMRSk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJvY2Vzc1ByaW9yaXR5Qm9vc3Qo
SEFORExFLFBCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcm9j
ZXNzU2h1dGRvd25QYXJhbWV0ZXJzKFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldFByb2Nlc3NUaW1lcyhIQU5ETEUsTFBGSUxFVElNRSxMUEZJTEVU
SU1FLExQRklMRVRJTUUsTFBGSUxFVElNRSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldFByb2Nlc3NWZXJzaW9uKERXT1JEKTsNCkhXSU5TVEEgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRQcm9jZXNzV2luZG93U3RhdGlvbih2b2lkKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcm9jZXNzV29ya2luZ1NldFNpemUoSEFORExFLFBE
V09SRCxQRFdPUkQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByb2Zp
bGVJbnRBKExQQ1NUUixMUENTVFIsSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRQcm9maWxlSW50VyhMUENXU1RSLExQQ1dTVFIsSU5UKTsNCkRXT1JEIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJvZmlsZVNlY3Rpb25BKExQQ1NUUixMUFNUUixEV09S
RCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByb2ZpbGVTZWN0aW9u
VyhMUENXU1RSLExQV1NUUixEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFByb2ZpbGVTdHJpbmdBKExQQ1NUUixMUENTVFIsTFBDU1RSLExQU1RSLERXT1JEKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJvZmlsZVN0cmluZ1coTFBD
V1NUUixMUENXU1RSLExQQ1dTVFIsTFBXU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRRdWV1ZWRDb21wbGV0aW9uU3RhdHVzKEhBTkRMRSxQRFdPUkQsUERX
T1JELExQT1ZFUkxBUFBFRCosRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFNlY3VyaXR5RGVzY3JpcHRvckNvbnRyb2woUFNFQ1VSSVRZX0RFU0NSSVBUT1IsUFNF
Q1VSSVRZX0RFU0NSSVBUT1JfQ09OVFJPTCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldFNlY3VyaXR5RGVzY3JpcHRvckRhY2woUFNFQ1VSSVRZX0RFU0NSSVBU
T1IsTFBCT09MLFBBQ0wqLExQQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0U2VjdXJpdHlEZXNjcmlwdG9yR3JvdXAoUFNFQ1VSSVRZX0RFU0NSSVBUT1IsUFNJRCos
TFBCT09MKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U2VjdXJpdHlE
ZXNjcmlwdG9yTGVuZ3RoKFBTRUNVUklUWV9ERVNDUklQVE9SKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRTZWN1cml0eURlc2NyaXB0b3JPd25lcihQU0VDVVJJVFlfREVT
Q1JJUFRPUixQU0lEKixMUEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldFNlY3VyaXR5RGVzY3JpcHRvclNhY2woUFNFQ1VSSVRZX0RFU0NSSVBUT1IsTFBCT09MLFBB
Q0wqLExQQk9PTCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFNob3J0
UGF0aE5hbWVBKExQQ1NUUixMUFNUUixEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEdldFNob3J0UGF0aE5hbWVXKExQQ1dTVFIsTFBXU1RSLERXT1JEKTsNClBTSURf
SURFTlRJRklFUl9BVVRIT1JJVFkgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTaWRJ
ZGVudGlmaWVyQXV0aG9yaXR5KFBTSUQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRTaWRMZW5ndGhSZXF1aXJlZChVQ0hBUik7DQpQRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRTaWRTdWJBdXRob3JpdHkoUFNJRCxEV09SRCk7DQpQVUNIQVIgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTaWRTdWJBdXRob3JpdHlDb3VudChQU0lEKTsN
CnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTdGFydHVwSW5mb0EoTFBTVEFS
VFVQSU5GT0EpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFN0YXJ0dXBJ
bmZvVyhMUFNUQVJUVVBJTkZPVyk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRTdGRIYW5kbGUoRFdPUkQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldFN5c3RlbURpcmVjdG9yeUEoTFBTVFIsVUlOVCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0U3lzdGVtRGlyZWN0b3J5VyhMUFdTVFIsVUlOVCk7DQp2b2lkIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U3lzdGVtSW5mbyhMUFNZU1RFTV9JTkZPKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTeXN0ZW1Qb3dlclN0YXR1cyhMUFNZ
U1RFTV9QT1dFUl9TVEFUVVMpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dFN5c3RlbVRpbWUoTFBTWVNURU1USU1FKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudChQRFdPUkQsUERXT1JELFBCT09MKTsNCnZvaWQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZShMUEZJ
TEVUSU1FKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGFwZVBhcmFt
ZXRlcnMoSEFORExFLERXT1JELFBEV09SRCxQVk9JRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldFRhcGVQb3NpdGlvbihIQU5ETEUsRFdPUkQsUERXT1JELFBEV09SRCxQ
RFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRUYXBlU3RhdHVz
KEhBTkRMRSk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGVtcEZpbGVO
YW1lQShMUENTVFIsTFBDU1RSLFVJTlQsTFBTVFIpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEdldFRlbXBGaWxlTmFtZVcoTFBDV1NUUixMUENXU1RSLFVJTlQsTFBXU1RSKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGVtcFBhdGhBKERXT1JELExQ
U1RSKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGVtcFBhdGhXKERX
T1JELExQV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGhyZWFk
Q29udGV4dChIQU5ETEUsTFBDT05URVhUKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFRocmVhZFByaW9yaXR5KEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0VGhyZWFkUHJpb3JpdHlCb29zdChIQU5ETEUsUEJPT0wpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRocmVhZFNlbGVjdG9yRW50cnkoSEFORExFLERX
T1JELExQTERUX0VOVFJZKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRU
aHJlYWRUaW1lcyhIQU5ETEUsTFBGSUxFVElNRSxMUEZJTEVUSU1FLExQRklMRVRJTUUsTFBGSUxF
VElNRSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRpY2tDb3VudCh2
b2lkKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VGltZVpvbmVJbmZv
cm1hdGlvbihMUFRJTUVfWk9ORV9JTkZPUk1BVElPTik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0VG9rZW5JbmZvcm1hdGlvbihIQU5ETEUsVE9LRU5fSU5GT1JNQVRJT05f
Q0xBU1MsUFZPSUQsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRVc2VyTmFtZUEgKExQU1RSLFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0VXNlck5hbWVXKExQV1NUUixQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRWZXJzaW9uKHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldFZlcnNpb25FeEEoTFBPU1ZFUlNJT05JTkZPQSk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0VmVyc2lvbkV4VyhMUE9TVkVSU0lPTklORk9X
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRWb2x1bWVJbmZvcm1hdGlv
bkEoTFBDU1RSLExQU1RSLERXT1JELFBEV09SRCxQRFdPUkQsUERXT1JELExQU1RSLERXT1JEKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRWb2x1bWVJbmZvcm1hdGlvblco
TFBDV1NUUixMUFdTVFIsRFdPUkQsUERXT1JELFBEV09SRCxQRFdPUkQsTFBXU1RSLERXT1JEKTsN
ClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dzRGlyZWN0b3J5QShM
UFNUUixVSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dz
RGlyZWN0b3J5VyhMUFdTVFIsVUlOVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZChIV05ELFBEV09SRCk7DQpBVE9NIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsQWRkQXRvbUEoTFBDU1RSKTsNCkFUT00gX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHbG9iYWxBZGRBdG9tVyggTFBDV1NUUik7DQpIR0xPQkFM
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsQWxsb2MoVUlOVCxEV09SRCk7DQpV
SU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsQ29tcGFjdChEV09SRCk7DQpB
VE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsRGVsZXRlQXRvbShBVE9NKTsN
CkhHTE9CQUwgR2xvYmFsRGlzY2FyZChIR0xPQkFMKTsNCkFUT00gX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBHbG9iYWxGaW5kQXRvbUEoTFBDU1RSKTsNCkFUT00gX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHbG9iYWxGaW5kQXRvbVcoTFBDV1NUUik7DQp2b2lkIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsRml4KEhHTE9CQUwpOw0KVUlOVCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdsb2JhbEZsYWdzKEhHTE9CQUwpOw0KSEdMT0JBTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdsb2JhbEZyZWUoSEdMT0JBTCk7DQpVSU5UIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsR2V0QXRvbU5hbWVBKEFUT00sTFBTVFIsaW50KTsNClVJ
TlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHbG9iYWxHZXRBdG9tTmFtZVcoQVRPTSxM
UFdTVFIsaW50KTsNCkhHTE9CQUwgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHbG9iYWxI
YW5kbGUoUENWT0lEKTsNCkxQVk9JRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdsb2Jh
bExvY2soSEdMT0JBTCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFs
TWVtb3J5U3RhdHVzKExQTUVNT1JZU1RBVFVTKTsNCkhHTE9CQUwgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBHbG9iYWxSZUFsbG9jKEhHTE9CQUwsRFdPUkQsVUlOVCk7DQpEV09SRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdsb2JhbFNpemUoSEdMT0JBTCk7DQp2b2lkIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsVW5maXgoSEdMT0JBTCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsVW5sb2NrKEhHTE9CQUwpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdsb2JhbFVuV2lyZShIR0xPQkFMKTsNClBWT0lEIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2xvYmFsV2lyZShIR0xPQkFMKTsNCg0KUFZPSUQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBIZWFwQWxsb2MoSEFORExFLERXT1JELERXT1JE
KTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBIZWFwQ29tcGFjdChIQU5ETEUs
RFdPUkQpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSGVhcENyZWF0ZShE
V09SRCxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSGVh
cERlc3Ryb3koSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBIZWFw
RnJlZShIQU5ETEUsRFdPUkQsUFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEhlYXBMb2NrKEhBTkRMRSk7DQpQVk9JRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEhlYXBSZUFsbG9jKEhBTkRMRSxEV09SRCxQVk9JRCxEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEhlYXBTaXplKEhBTkRMRSxEV09SRCxQQ1ZPSUQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEhlYXBVbmxvY2soSEFORExFKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBIZWFwVmFsaWRhdGUoSEFORExFLERXT1JELFBDVk9J
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSGVhcFdhbGsoSEFORExFLExQ
UFJPQ0VTU19IRUFQX0VOVFJZKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJ
bXBlcnNvbmF0ZUxvZ2dlZE9uVXNlcihIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEltcGVyc29uYXRlTmFtZWRQaXBlQ2xpZW50KEhBTkRMRSk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSW1wZXJzb25hdGVTZWxmKFNFQ1VSSVRZX0lNUEVSU09O
QVRJT05fTEVWRUwpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEluaXRBdG9t
VGFibGUoRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEluaXRpYWxp
emVBY2woUEFDTCxEV09SRCxEV09SRCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihMUENSSVRJQ0FMX1NFQ1RJT04pOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEluaXRpYWxpemVTZWN1cml0eURlc2NyaXB0b3Io
UFNFQ1VSSVRZX0RFU0NSSVBUT1IsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEluaXRpYWxpemVTaWQgKFBTSUQsUFNJRF9JREVOVElGSUVSX0FVVEhPUklUWSxCWVRF
KTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZShMUExPTkcsTE9ORyxMT05HKTsNCg0KDQoNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBJbnRlcmxvY2tlZERlY3JlbWVudChMUExPTkcpOw0KTE9ORyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEludGVybG9ja2VkRXhjaGFuZ2UoTFBMT05HLExPTkcpOw0KDQoN
Cg0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEludGVybG9ja2VkRXhjaGFuZ2VB
ZGQoUExPTkcsTE9ORyk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSW50ZXJs
b2NrZWRJbmNyZW1lbnQoTFBMT05HKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBJc0JhZENvZGVQdHIoRkFSUFJPQyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgSXNCYWRIdWdlUmVhZFB0cihQQ1ZPSUQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgSXNCYWRIdWdlV3JpdGVQdHIoUFZPSUQsVUlOVCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgSXNCYWRSZWFkUHRyKFBDVk9JRCxVSU5UKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0JhZFN0cmluZ1B0ckEoTFBDU1RSLFVJTlQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzQmFkU3RyaW5nUHRyVyhMUENXU1RS
LFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzQmFkV3JpdGVQdHIo
UFZPSUQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSXNEZWJ1Z2dl
clByZXNlbnQodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSXNQcm9j
ZXNzb3JGZWF0dXJlUHJlc2VudChEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgSXNUZXh0VW5pY29kZShQQ1ZPSUQsaW50LExQSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBJc1ZhbGlkQWNsKFBBQ0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIElzVmFsaWRTZWN1cml0eURlc2NyaXB0b3IoUFNFQ1VSSVRZX0RFU0NSSVBU
T1IpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzVmFsaWRTaWQoUFNJRCk7
DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTGVhdmVDcml0aWNhbFNlY3Rpb24o
TFBDUklUSUNBTF9TRUNUSU9OKTsNCg0KSElOU1RBTkNFIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgTG9hZExpYnJhcnlBKExQQ1NUUik7DQpISU5TVEFOQ0UgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBMb2FkTGlicmFyeUV4QShMUENTVFIsSEFORExFLERXT1JEKTsNCkhJTlNUQU5D
RSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvYWRMaWJyYXJ5RXhXKExQQ1dTVFIsSEFO
RExFLERXT1JEKTsNCkhJTlNUQU5DRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvYWRM
aWJyYXJ5VyhMUENXU1RSKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9h
ZE1vZHVsZShMUENTVFIsUFZPSUQpOw0KSEdMT0JBTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIExvYWRSZXNvdXJjZShISU5TVEFOQ0UsSFJTUkMpOw0KSExPQ0FMIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgTG9jYWxBbGxvYyhVSU5ULFVJTlQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIExvY2FsQ29tcGFjdChVSU5UKTsNCkhMT0NBTCBMb2NhbERpc2NhcmQo
SExPQ0FMKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2NhbEZpbGVUaW1l
VG9GaWxlVGltZShjb25zdCBGSUxFVElNRSAqLExQRklMRVRJTUUpOw0KVUlOVCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIExvY2FsRmxhZ3MoSExPQ0FMKTsNCkhMT0NBTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIExvY2FsRnJlZShITE9DQUwpOw0KSExPQ0FMIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgTG9jYWxIYW5kbGUoTFBDVk9JRCk7DQpQVk9JRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIExvY2FsTG9jayhITE9DQUwpOw0KSExPQ0FMIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgTG9jYWxSZUFsbG9jKEhMT0NBTCxVSU5ULFVJTlQpOw0KVUlOVCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvY2FsU2hyaW5rKEhMT0NBTCxVSU5UKTsNClVJ
TlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2NhbFNpemUoSExPQ0FMKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2NhbFVubG9jayhITE9DQUwpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvY2tGaWxlKEhBTkRMRSxEV09SRCxEV09SRCxE
V09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9ja0ZpbGVF
eChIQU5ETEUsRFdPUkQsRFdPUkQsRFdPUkQsRFdPUkQsTFBPVkVSTEFQUEVEKTsNClBWT0lEIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9ja1Jlc291cmNlKEhHTE9CQUwpOw0KDQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9nb25Vc2VyQShMUFNUUixMUFNUUixMUFNU
UixEV09SRCxEV09SRCxQSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBMb2dvblVzZXJXKExQV1NUUixMUFdTVFIsTFBXU1RSLERXT1JELERXT1JELFBIQU5ETEUpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvb2t1cEFjY291bnROYW1lQShMUENT
VFIsTFBDU1RSLFBTSUQsUERXT1JELExQU1RSLFBEV09SRCxQU0lEX05BTUVfVVNFKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb29rdXBBY2NvdW50TmFtZVcoTFBDV1NUUixM
UENXU1RSLFBTSUQsUERXT1JELExQV1NUUixQRFdPUkQsUFNJRF9OQU1FX1VTRSk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9va3VwQWNjb3VudFNpZEEoTFBDU1RSLFBTSUQs
TFBTVFIsUERXT1JELExQU1RSLFBEV09SRCxQU0lEX05BTUVfVVNFKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBMb29rdXBBY2NvdW50U2lkVyhMUENXU1RSLFBTSUQsTFBXU1RS
LFBEV09SRCxMUFdTVFIsUERXT1JELFBTSURfTkFNRV9VU0UpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIExvb2t1cFByaXZpbGVnZURpc3BsYXlOYW1lQShMUENTVFIsTFBDU1RS
LExQU1RSLFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IExvb2t1cFByaXZpbGVnZURpc3BsYXlOYW1lVyhMUENXU1RSLExQQ1dTVFIsTFBXU1RSLFBEV09S
RCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvb2t1cFByaXZp
bGVnZU5hbWVBKExQQ1NUUixQTFVJRCxMUFNUUixQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIExvb2t1cFByaXZpbGVnZU5hbWVXKExQQ1dTVFIsUExVSUQsTFBXU1RS
LFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9va3VwUHJpdmls
ZWdlVmFsdWVBKExQQ1NUUixMUENTVFIsUExVSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIExvb2t1cFByaXZpbGVnZVZhbHVlVyhMUENXU1RSLExQQ1dTVFIsUExVSUQpOw0K
TFBTVFIgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBsc3RyY2F0QShMUFNUUixMUENTVFIp
Ow0KTFBXU1RSIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbHN0cmNhdFcoTFBXU1RSLExQ
Q1dTVFIpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbHN0cmNtcEEoTFBDU1RS
LExQQ1NUUik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBsc3RyY21waUEoTFBD
U1RSLExQQ1NUUik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBsc3RyY21waVco
IExQQ1dTVFIsTFBDV1NUUik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBsc3Ry
Y21wVyhMUENXU1RSLExQQ1dTVFIpOw0KTFBTVFIgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBsc3RyY3B5QShMUFNUUixMUENTVFIpOw0KTFBTVFIgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBsc3RyY3B5bkEoTFBTVFIsTFBDU1RSLGludCk7DQpMUFdTVFIgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBsc3RyY3B5blcoTFBXU1RSLExQQ1dTVFIsaW50KTsNCkxQV1NUUiBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGxzdHJjcHlXKExQV1NUUixMUENXU1RSKTsNCmludCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGxzdHJsZW5BKExQQ1NUUik7DQppbnQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBsc3RybGVuVyhMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBNYWtlQWJzb2x1dGVTRChQU0VDVVJJVFlfREVTQ1JJUFRPUixQ
U0VDVVJJVFlfREVTQ1JJUFRPUixQRFdPUkQsUEFDTCxQRFdPUkQsUEFDTCxQRFdPUkQsUFNJRCxQ
RFdPUkQsUFNJRCxQRFdPUkQpOw0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
TWFrZVNlbGZSZWxhdGl2ZVNEKFBTRUNVUklUWV9ERVNDUklQVE9SLFBTRUNVUklUWV9ERVNDUklQ
VE9SLFBEV09SRCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTWFwR2VuZXJp
Y01hc2soUERXT1JELFBHRU5FUklDX01BUFBJTkcpOw0KUFZPSUQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBNYXBWaWV3T2ZGaWxlKEhBTkRMRSxEV09SRCxEV09SRCxEV09SRCxEV09SRCk7
DQpQVk9JRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1hcFZpZXdPZkZpbGVFeChIQU5E
TEUsRFdPUkQsRFdPUkQsRFdPUkQsRFdPUkQsUFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE1vdmVGaWxlQShMUENTVFIsTFBDU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBNb3ZlRmlsZUV4QShMUENTVFIsTFBDU1RSLERXT1JEKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBNb3ZlRmlsZUV4VyhMUENXU1RSLExQQ1dTVFIs
RFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1vdmVGaWxlVyhMUENX
U1RSLExQQ1dTVFIpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTXVsRGl2KGlu
dCxpbnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBOb3RpZnlDaGFu
Z2VFdmVudExvZyhIQU5ETEUsSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBPYmplY3RDbG9zZUF1ZGl0QWxhcm1BKExQQ1NUUixQVk9JRCxCT09MKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPYmplY3RDbG9zZUF1ZGl0QWxhcm1XKExQQ1dTVFIs
UFZPSUQsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT2JqZWN0RGVs
ZXRlQXVkaXRBbGFybUEoTFBDU1RSLFBWT0lELEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE9iamVjdERlbGV0ZUF1ZGl0QWxhcm1XKExQQ1dTVFIsUFZPSUQsQk9PTCk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT2JqZWN0T3BlbkF1ZGl0QWxhcm1B
KExQQ1NUUixQVk9JRCxMUFNUUixMUFNUUixQU0VDVVJJVFlfREVTQ1JJUFRPUixIQU5ETEUsRFdP
UkQsRFdPUkQsUFBSSVZJTEVHRV9TRVQsQk9PTCxCT09MLFBCT09MKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBPYmplY3RPcGVuQXVkaXRBbGFybVcoTFBDV1NUUixQVk9JRCxM
UFdTVFIsTFBXU1RSLFBTRUNVUklUWV9ERVNDUklQVE9SLEhBTkRMRSxEV09SRCxEV09SRCxQUFJJ
VklMRUdFX1NFVCxCT09MLEJPT0wsUEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIE9iamVjdFByaXZpbGVnZUF1ZGl0QWxhcm1BKExQQ1NUUixQVk9JRCxIQU5ETEUsRFdP
UkQsUFBSSVZJTEVHRV9TRVQsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgT2JqZWN0UHJpdmlsZWdlQXVkaXRBbGFybVcoTFBDV1NUUixQVk9JRCxIQU5ETEUsRFdPUkQs
UFBSSVZJTEVHRV9TRVQsQk9PTCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBPcGVuQmFja3VwRXZlbnRMb2dBKExQQ1NUUixMUENTVFIpOw0KSEFORExFIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgT3BlbkJhY2t1cEV2ZW50TG9nVyhMUENXU1RSLExQQ1dTVFIpOw0K
SEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlbkV2ZW50QShEV09SRCxCT09M
LExQQ1NUUik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuRXZlbnRM
b2dBIChMUENTVFIsTFBDU1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IE9wZW5FdmVudExvZ1coTFBDV1NUUixMUENXU1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE9wZW5FdmVudFcoRFdPUkQsQk9PTCxMUENXU1RSKTsNCkhGSUxFIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlbkZpbGUoTFBDU1RSLExQT0ZTVFJVQ1QsVUlOVCk7
DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuRmlsZU1hcHBpbmdBKERX
T1JELEJPT0wsTFBDU1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9w
ZW5GaWxlTWFwcGluZ1coRFdPUkQsQk9PTCxMUENXU1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIE9wZW5NdXRleEEoRFdPUkQsQk9PTCxMUENTVFIpOw0KSEFORExFIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3Blbk11dGV4VyhEV09SRCxCT09MLExQQ1dTVFIp
Ow0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlblByb2Nlc3MoRFdPUkQs
Qk9PTCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlblByb2Nl
c3NUb2tlbihIQU5ETEUsRFdPUkQsUEhBTkRMRSk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBPcGVuU2VtYXBob3JlQShEV09SRCxCT09MLExQQ1NUUik7DQpIQU5ETEUgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuU2VtYXBob3JlVyhEV09SRCxCT09MLExQQ1dT
VFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9wZW5UaHJlYWRUb2tlbihI
QU5ETEUsRFdPUkQsQk9PTCxQSEFORExFKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIE9wZW5XYWl0YWJsZVRpbWVyQShEV09SRCxCT09MLExQQ1NUUik7DQpIQU5ETEUgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuV2FpdGFibGVUaW1lclcoRFdPUkQsQk9PTCxM
UENXU1RSKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPdXRwdXREZWJ1Z1N0
cmluZ0EoTFBDU1RSKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPdXRwdXRE
ZWJ1Z1N0cmluZ1coTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UGVla05hbWVkUGlwZShIQU5ETEUsUFZPSUQsRFdPUkQsUERXT1JELFBEV09SRCxQRFdPUkQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBvc3RRdWV1ZWRDb21wbGV0aW9uU3Rh
dHVzKEhBTkRMRSxEV09SRCxEV09SRCxMUE9WRVJMQVBQRUQpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBQcmVwYXJlVGFwZShIQU5ETEUsRFdPUkQsQk9PTCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUHJpdmlsZWdlQ2hlY2sgKEhBTkRMRSxQUFJJVklM
RUdFX1NFVCxQQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUHJpdmls
ZWdlZFNlcnZpY2VBdWRpdEFsYXJtQShMUENTVFIsTFBDU1RSLEhBTkRMRSxQUFJJVklMRUdFX1NF
VCxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQcml2aWxlZ2VkU2Vy
dmljZUF1ZGl0QWxhcm1XKExQQ1dTVFIsTFBDV1NUUixIQU5ETEUsUFBSSVZJTEVHRV9TRVQsQk9P
TCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUHVsc2VFdmVudChIQU5ETEUp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFB1cmdlQ29tbShIQU5ETEUsRFdP
UkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBRdWVyeURvc0RldmljZUEo
TFBDU1RSLExQU1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UXVlcnlEb3NEZXZpY2VXKExQQ1dTVFIsTFBXU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcihQTEFSR0VfSU5URUdFUik7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUXVlcnlQZXJmb3JtYW5jZUZyZXF1
ZW5jeShQTEFSR0VfSU5URUdFUik7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFF1ZXVlVXNlckFQQyhQQVBDRlVOQyxIQU5ETEUsRFdPUkQpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJhaXNlRXhjZXB0aW9uKERXT1JELERXT1JELERXT1JELGNvbnN0IERX
T1JEKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVhZERpcmVjdG9yeUNo
YW5nZXNXKEhBTkRMRSxQVk9JRCxEV09SRCxCT09MLERXT1JELFBEV09SRCxMUE9WRVJMQVBQRUQs
TFBPVkVSTEFQUEVEX0NPTVBMRVRJT05fUk9VVElORSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgUmVhZEV2ZW50TG9nQShIQU5ETEUsRFdPUkQsRFdPUkQsUFZPSUQsRFdPUkQs
RFdPUkQgKixEV09SRCAqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWFk
RXZlbnRMb2dXKEhBTkRMRSxEV09SRCxEV09SRCxQVk9JRCxEV09SRCxEV09SRCAqLERXT1JEICop
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlYWRGaWxlKEhBTkRMRSxQVk9J
RCxEV09SRCxQRFdPUkQsTFBPVkVSTEFQUEVEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBSZWFkRmlsZUV4KEhBTkRMRSxQVk9JRCxEV09SRCxMUE9WRVJMQVBQRUQsTFBPVkVS
TEFQUEVEX0NPTVBMRVRJT05fUk9VVElORSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgUmVhZFByb2Nlc3NNZW1vcnkoSEFORExFLFBDVk9JRCxQVk9JRCxEV09SRCxQRFdPUkQp
Ow0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnaXN0ZXJFdmVudFNvdXJj
ZUEgKExQQ1NUUixMUENTVFIpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UmVnaXN0ZXJFdmVudFNvdXJjZVcoTFBDV1NUUixMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBSZWxlYXNlTXV0ZXgoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBSZWxlYXNlU2VtYXBob3JlKEhBTkRMRSxMT05HLExQTE9ORyk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVtb3ZlRGlyZWN0b3J5QShMUENTVFIp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlbW92ZURpcmVjdG9yeVcoTFBD
V1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVwb3J0RXZlbnRBKEhB
TkRMRSxXT1JELFdPUkQsRFdPUkQsUFNJRCxXT1JELERXT1JELExQQ1NUUiosUFZPSUQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlcG9ydEV2ZW50VyhIQU5ETEUsV09SRCxX
T1JELERXT1JELFBTSUQsV09SRCxEV09SRCxMUENXU1RSKixQVk9JRCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgUmVzZXRFdmVudChIQU5ETEUpOw0KRFdPUkQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBSZXN1bWVUaHJlYWQoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBSZXZlcnRUb1NlbGYodm9pZCk7DQpEV09SRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFNlYXJjaFBhdGhBKExQQ1NUUixMUENTVFIsTFBDU1RSLERXT1JE
LExQU1RSLExQU1RSKik7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlYXJj
aFBhdGhXKExQQ1dTVFIsTFBDV1NUUixMUENXU1RSLERXT1JELExQV1NUUixMUFdTVFIqKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRBY2xJbmZvcm1hdGlvbihQQUNMLFBW
T0lELERXT1JELEFDTF9JTkZPUk1BVElPTl9DTEFTUyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0Q29tbUJyZWFrKEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0Q29tbUNvbmZpZyhIQU5ETEUsTFBDT01NQ09ORklHLERXT1JEKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRDb21tTWFzayhIQU5ETEUsRFdPUkQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENvbW1TdGF0ZShIQU5ETEUs
TFBEQ0IpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENvbW1UaW1lb3V0
cyhIQU5ETEUsTFBDT01NVElNRU9VVFMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFNldENvbXB1dGVyTmFtZUEoTFBDU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRDb21wdXRlck5hbWVXKExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFNldEN1cnJlbnREaXJlY3RvcnlBKExQQ1NUUik7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q3VycmVudERpcmVjdG9yeVcoTFBDV1NUUik7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RGVmYXVsdENvbW1Db25maWdBKExQQ1NU
UixMUENPTU1DT05GSUcsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFNldERlZmF1bHRDb21tQ29uZmlnVyhMUENXU1RSLExQQ09NTUNPTkZJRyxEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RW5kT2ZGaWxlKEhBTkRMRSk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoTFBD
U1RSLExQQ1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RW52aXJv
bm1lbnRWYXJpYWJsZVcoTFBDV1NUUixMUENXU1RSKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBTZXRFcnJvck1vZGUoVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgU2V0RXZlbnQoSEFORExFKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBTZXRGaWxlQXBpc1RvQU5TSSh2b2lkKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRGaWxlQXBpc1RvT0VNKHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldEZpbGVBdHRyaWJ1dGVzQShMUENTVFIsRFdPUkQpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldEZpbGVBdHRyaWJ1dGVzVyhMUENXU1RSLERXT1JEKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RmlsZVBvaW50ZXIoSEFORExF
LExPTkcsUExPTkcsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNl
dEZpbGVTZWN1cml0eUEoTFBDU1RSLFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklUWV9ERVND
UklQVE9SKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRGaWxlU2VjdXJp
dHlXKExQQ1dTVFIsU0VDVVJJVFlfSU5GT1JNQVRJT04sUFNFQ1VSSVRZX0RFU0NSSVBUT1IpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldEZpbGVUaW1lKEhBTkRMRSxjb25z
dCBGSUxFVElNRSosY29uc3QgRklMRVRJTUUqLGNvbnN0IEZJTEVUSU1FKik7DQpVSU5UIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0SGFuZGxlQ291bnQoVUlOVCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0SGFuZGxlSW5mb3JtYXRpb24oSEFORExFLERXT1JE
LERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRLZXJuZWxPYmpl
Y3RTZWN1cml0eShIQU5ETEUsU0VDVVJJVFlfSU5GT1JNQVRJT04sUFNFQ1VSSVRZX0RFU0NSSVBU
T1IpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldExhc3RFcnJvcihEV09S
RCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0TGFzdEVycm9yRXgoRFdP
UkQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldExvY2FsVGlt
ZShjb25zdCBTWVNURU1USU1FKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
U2V0TWFpbHNsb3RJbmZvKEhBTkRMRSxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoSEFORExFLFBEV09SRCxQRFdPUkQsUERX
T1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRQcmlvcml0eUNsYXNz
KEhBTkRMRSxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0UHJp
dmF0ZU9iamVjdFNlY3VyaXR5KFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklUWV9ERVNDUklQ
VE9SLFBTRUNVUklUWV9ERVNDUklQVE9SICosUEdFTkVSSUNfTUFQUElORyxIQU5ETEUpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFByb2Nlc3NBZmZpbml0eU1hc2soSEFO
RExFLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRQcm9jZXNz
UHJpb3JpdHlCb29zdChIQU5ETEUsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgU2V0UHJvY2Vzc1NodXRkb3duUGFyYW1ldGVycyhEV09SRCxEV09SRCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0UHJvY2Vzc1dvcmtpbmdTZXRTaXplKEhBTkRM
RSxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U2Vj
dXJpdHlEZXNjcmlwdG9yQ29udHJvbChQU0VDVVJJVFlfREVTQ1JJUFRPUixTRUNVUklUWV9ERVND
UklQVE9SX0NPTlRST0wsU0VDVVJJVFlfREVTQ1JJUFRPUl9DT05UUk9MKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsKFBTRUNVUklU
WV9ERVNDUklQVE9SLEJPT0wsUEFDTCxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRTZWN1cml0eURlc2NyaXB0b3JHcm91cChQU0VDVVJJVFlfREVTQ1JJUFRPUixQ
U0lELEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFNlY3VyaXR5
RGVzY3JpcHRvck93bmVyKFBTRUNVUklUWV9ERVNDUklQVE9SLFBTSUQsQk9PTCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U2VjdXJpdHlEZXNjcmlwdG9yU2FjbChQU0VD
VVJJVFlfREVTQ1JJUFRPUixCT09MLFBBQ0wsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0U3RkSGFuZGxlKERXT1JELEhBTkRMRSk7DQoNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBTZXRTeXN0ZW1Qb3dlclN0YXRlKEJPT0wsQk9PTCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U3lzdGVtVGltZShjb25zdCBTWVNURU1U
SU1FKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U3lzdGVtVGltZUFk
anVzdG1lbnQoRFdPUkQsQk9PTCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFNldFRhcGVQYXJhbWV0ZXJzKEhBTkRMRSxEV09SRCxQVk9JRCk7DQpEV09SRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFNldFRhcGVQb3NpdGlvbihIQU5ETEUsRFdPUkQsRFdPUkQsRFdP
UkQsRFdPUkQsQk9PTCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFRo
cmVhZEFmZmluaXR5TWFzayhIQU5ETEUsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldFRocmVhZENvbnRleHQoSEFORExFLGNvbnN0IENPTlRFWFQqKTsNCkRXT1JE
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0VGhyZWFkSWRlYWxQcm9jZXNzb3IoSEFO
RExFLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRUaHJlYWRQ
cmlvcml0eShIQU5ETEUsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBT
ZXRUaHJlYWRQcmlvcml0eUJvb3N0KEhBTkRMRSxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBTZXRUaHJlYWRUb2tlbiAoUEhBTkRMRSxIQU5ETEUpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFRpbWVab25lSW5mb3JtYXRpb24oY29uc3QgVElN
RV9aT05FX0lORk9STUFUSU9OICopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFNldFRva2VuSW5mb3JtYXRpb24oSEFORExFLFRPS0VOX0lORk9STUFUSU9OX0NMQVNTLFBWT0lE
LERXT1JEKTsNCkxQVE9QX0xFVkVMX0VYQ0VQVElPTl9GSUxURVIgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoTFBUT1BfTEVWRUxfRVhDRVBU
SU9OX0ZJTFRFUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0dXBDb21t
KEhBTkRMRSxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
U2V0Vm9sdW1lTGFiZWxBKExQQ1NUUixMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldFZvbHVtZUxhYmVsVyhMUENXU1RSLExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdhaXRhYmxlVGltZXIoSEFORExFLGNvbnN0IExBUkdF
X0lOVEVHRVIqLExPTkcsUFRJTUVSQVBDUk9VVElORSxQVk9JRCxCT09MKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTaWduYWxPYmplY3RBbmRXYWl0KEhBTkRMRSxIQU5ETEUs
RFdPUkQsQk9PTCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNpemVvZlJl
c291cmNlKEhJTlNUQU5DRSxIUlNSQyk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgU2xlZXAoRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTbGVl
cEV4KERXT1JELEJPT0wpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdXNw
ZW5kVGhyZWFkKEhBTkRMRSk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3dp
dGNoVG9GaWJlcihQVk9JRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3dp
dGNoVG9UaHJlYWQodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3lz
dGVtVGltZVRvRmlsZVRpbWUoY29uc3QgU1lTVEVNVElNRSosTFBGSUxFVElNRSk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGlt
ZShMUFRJTUVfWk9ORV9JTkZPUk1BVElPTixMUFNZU1RFTVRJTUUsTFBTWVNURU1USU1FKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUZXJtaW5hdGVQcm9jZXNzKEhBTkRMRSxV
SU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUZXJtaW5hdGVUaHJlYWQo
SEFORExFLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVGxzQWxs
b2Modm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVGxzRnJlZShEV09S
RCk7DQpQVk9JRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFRsc0dldFZhbHVlKERXT1JE
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUbHNTZXRWYWx1ZShEV09SRCxQ
Vk9JRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVHJhbnNhY3ROYW1lZFBp
cGUoSEFORExFLFBWT0lELERXT1JELFBWT0lELERXT1JELFBEV09SRCxMUE9WRVJMQVBQRUQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFRyYW5zbWl0Q29tbUNoYXIoSEFORExF
LGNoYXIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFRyeUVudGVyQ3JpdGlj
YWxTZWN0aW9uKExQQ1JJVElDQUxfU0VDVElPTik7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKExQRVhDRVBUSU9OX1BPSU5URVJTKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVbmxvY2tGaWxlKEhBTkRMRSxEV09S
RCxEV09SRCxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
VW5sb2NrRmlsZUV4KEhBTkRMRSxEV09SRCxEV09SRCxEV09SRCxMUE9WRVJMQVBQRUQpOw0KDQoN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVbm1hcFZpZXdPZkZpbGUoUFZPSUQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFVwZGF0ZVJlc291cmNlQShIQU5E
TEUsTFBDU1RSLExQQ1NUUixXT1JELFBWT0lELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBVcGRhdGVSZXNvdXJjZVcoSEFORExFLExQQ1dTVFIsTFBDV1NUUixXT1JE
LFBWT0lELERXT1JEKTsNClBWT0lEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmlydHVh
bEFsbG9jKFBWT0lELERXT1JELERXT1JELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBWaXJ0dWFsRnJlZShQVk9JRCxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgVmlydHVhbEZyZWVFeChIQU5ETEUsUFZPSUQsRFdPUkQsRFdP
UkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFZpcnR1YWxMb2NrKFBWT0lE
LERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBWaXJ0dWFsUHJvdGVj
dChQVk9JRCxEV09SRCxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFZpcnR1YWxQcm90ZWN0RXgoSEFORExFLFBWT0lELERXT1JELERXT1JELFBEV09SRCk7
DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFZpcnR1YWxRdWVyeShMUENWT0lE
LFBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04sRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBWaXJ0dWFsUXVlcnlFeChIQU5ETEUsTFBDVk9JRCxQTUVNT1JZX0JBU0lD
X0lORk9STUFUSU9OLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBW
aXJ0dWFsVW5sb2NrKFBWT0lELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBXYWl0Q29tbUV2ZW50KEhBTkRMRSxQRFdPUkQsTFBPVkVSTEFQUEVEKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXYWl0Rm9yRGVidWdFdmVudChMUERFQlVHX0VWRU5U
LERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV2FpdEZvck11bHRp
cGxlT2JqZWN0cyhEV09SRCxjb25zdCBIQU5ETEUqLEJPT0wsRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoRFdPUkQsY29u
c3QgSEFORExFKixCT09MLERXT1JELEJPT0wpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBXYWl0Rm9yU2luZ2xlT2JqZWN0KEhBTkRMRSxEV09SRCk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdhaXRGb3JTaW5nbGVPYmplY3RFeChIQU5ETEUsRFdPUkQs
Qk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV2FpdE5hbWVkUGlwZUEo
TFBDU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXYWl0TmFt
ZWRQaXBlVyhMUENXU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBXaW5Mb2FkVHJ1c3RQcm92aWRlcihHVUlEKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgV3JpdGVGaWxlKEhBTkRMRSxQQ1ZPSUQsRFdPUkQsUERXT1JELExQT1ZFUkxBUFBF
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVGaWxlRXgoSEFORExF
LFBDVk9JRCxEV09SRCxMUE9WRVJMQVBQRUQsTFBPVkVSTEFQUEVEX0NPTVBMRVRJT05fUk9VVElO
RSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQcml2YXRlUHJvZmls
ZVNlY3Rpb25BKExQQ1NUUixMUENTVFIsTFBDU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvblcoTFBDV1NUUixMUENXU1RSLExQ
Q1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRlUHJpdmF0ZVBy
b2ZpbGVTdHJpbmdBKExQQ1NUUixMUENTVFIsTFBDU1RSLExQQ1NUUik7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQcml2YXRlUHJvZmlsZVN0cmluZ1coTFBDV1NUUixM
UENXU1RSLExQQ1dTVFIsTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgV3JpdGVQcml2YXRlUHJvZmlsZVN0cnVjdEEoTFBDU1RSLExQQ1NUUixQVk9JRCxVSU5ULExQ
Q1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQcml2YXRlUHJv
ZmlsZVN0cnVjdFcoTFBDV1NUUixMUENXU1RSLFBWT0lELFVJTlQsTFBDV1NUUik7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQcm9jZXNzTWVtb3J5KEhBTkRMRSxQVk9J
RCxQVk9JRCxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFdyaXRlUHJvZmlsZVNlY3Rpb25BKExQQ1NUUixMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFdyaXRlUHJvZmlsZVNlY3Rpb25XKExQQ1dTVFIsTFBDV1NUUik7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQcm9maWxlU3RyaW5nQShMUENT
VFIsTFBDU1RSLExQQ1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3Jp
dGVQcm9maWxlU3RyaW5nVyhMUENXU1RSLExQQ1dTVFIsTFBDV1NUUik7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdyaXRlVGFwZW1hcmsoSEFORExFLERXT1JELERXT1JELEJP
T0wpOw0KIyAxNzIwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmJhc2UuaCIgMw0KdHlw
ZWRlZiBTVEFSVFVQSU5GT0EgU1RBUlRVUElORk8sKkxQU1RBUlRVUElORk87DQp0eXBlZGVmIFdJ
TjMyX0ZJTkRfREFUQUEgV0lOMzJfRklORF9EQVRBLCpMUFdJTjMyX0ZJTkRfREFUQTsNCnR5cGVk
ZWYgSFdfUFJPRklMRV9JTkZPQSBIV19QUk9GSUxFX0lORk8sKkxQSFdfUFJPRklMRV9JTkZPOw0K
dHlwZWRlZiBPU1ZFUlNJT05JTkZPQSBPU1ZFUlNJT05JTkZPLCpQT1NWRVJTSU9OSU5GTywqTFBP
U1ZFUlNJT05JTkZPOw0KIyAxODU4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmJhc2Uu
aCIgMw0KfQ0KIyAxMDMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAyIDMN
Cg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmdkaS5oIiAxIDMNCg0KDQoNCmV4
dGVybiAiQyIgew0KIyAxMTUzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmdkaS5oIiAz
DQp0eXBlZGVmIHN0cnVjdCBfQUJDIHsNCiAgICAgICAgaW50IGFiY0E7DQogICAgICAgIFVJTlQg
YWJjQjsNCiAgICAgICAgaW50IGFiY0M7DQp9IEFCQywqTFBBQkM7DQp0eXBlZGVmIHN0cnVjdCBf
QUJDRkxPQVQgew0KICAgICAgICBGTE9BVCBhYmNmQTsNCiAgICAgICAgRkxPQVQgYWJjZkI7DQog
ICAgICAgIEZMT0FUIGFiY2ZDOw0KfSBBQkNGTE9BVCwqTFBBQkNGTE9BVDsNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0JJVE1BUCB7DQogICAgICAgIExPTkcgYm1UeXBlOw0KICAgICAgICBMT05HIGJtV2lk
dGg7DQogICAgICAgIExPTkcgYm1IZWlnaHQ7DQogICAgICAgIExPTkcgYm1XaWR0aEJ5dGVzOw0K
ICAgICAgICBXT1JEIGJtUGxhbmVzOw0KICAgICAgICBXT1JEIGJtQml0c1BpeGVsOw0KICAgICAg
ICBMUFZPSUQgYm1CaXRzOw0KfSBCSVRNQVAsKlBCSVRNQVAsKkxQQklUTUFQOw0KdHlwZWRlZiBz
dHJ1Y3QgdGFnQklUTUFQQ09SRUhFQURFUiB7DQogICAgICAgIERXT1JEIGJjU2l6ZTsNCiAgICAg
ICAgV09SRCBiY1dpZHRoOw0KICAgICAgICBXT1JEIGJjSGVpZ2h0Ow0KICAgICAgICBXT1JEIGJj
UGxhbmVzOw0KICAgICAgICBXT1JEIGJjQml0Q291bnQ7DQp9IEJJVE1BUENPUkVIRUFERVIsKkxQ
QklUTUFQQ09SRUhFQURFUiwqUEJJVE1BUENPUkVIRUFERVI7DQojcHJhZ21hIHBhY2socHVzaCwx
KQ0KdHlwZWRlZiBzdHJ1Y3QgdGFnUkdCVFJJUExFIHsNCiAgICAgICAgQllURSByZ2J0Qmx1ZTsN
CiAgICAgICAgQllURSByZ2J0R3JlZW47DQogICAgICAgIEJZVEUgcmdidFJlZDsNCn0gUkdCVFJJ
UExFOw0KI3ByYWdtYSBwYWNrKHBvcCkNCiNwcmFnbWEgcGFjayhwdXNoLDIpDQp0eXBlZGVmIHN0
cnVjdCB0YWdCSVRNQVBGSUxFSEVBREVSIHsNCiAgICAgICAgV09SRCBiZlR5cGU7DQogICAgICAg
IERXT1JEIGJmU2l6ZTsNCiAgICAgICAgV09SRCBiZlJlc2VydmVkMTsNCiAgICAgICAgV09SRCBi
ZlJlc2VydmVkMjsNCiAgICAgICAgRFdPUkQgYmZPZmZCaXRzOw0KfSBCSVRNQVBGSUxFSEVBREVS
LCpMUEJJVE1BUEZJTEVIRUFERVIsKlBCSVRNQVBGSUxFSEVBREVSOw0KI3ByYWdtYSBwYWNrKHBv
cCkNCnR5cGVkZWYgc3RydWN0IF9CSVRNQVBDT1JFSU5GTyB7DQogICAgICAgIEJJVE1BUENPUkVI
RUFERVIgYm1jaUhlYWRlcjsNCiAgICAgICAgUkdCVFJJUExFIGJtY2lDb2xvcnNbMV07DQp9IEJJ
VE1BUENPUkVJTkZPLCpMUEJJVE1BUENPUkVJTkZPLCpQQklUTUFQQ09SRUlORk87DQp0eXBlZGVm
IHN0cnVjdCB0YWdCSVRNQVBJTkZPSEVBREVSew0KICAgICAgICBEV09SRCBiaVNpemU7DQogICAg
ICAgIExPTkcgYmlXaWR0aDsNCiAgICAgICAgTE9ORyBiaUhlaWdodDsNCiAgICAgICAgV09SRCBi
aVBsYW5lczsNCiAgICAgICAgV09SRCBiaUJpdENvdW50Ow0KICAgICAgICBEV09SRCBiaUNvbXBy
ZXNzaW9uOw0KICAgICAgICBEV09SRCBiaVNpemVJbWFnZTsNCiAgICAgICAgTE9ORyBiaVhQZWxz
UGVyTWV0ZXI7DQogICAgICAgIExPTkcgYmlZUGVsc1Blck1ldGVyOw0KICAgICAgICBEV09SRCBi
aUNsclVzZWQ7DQogICAgICAgIERXT1JEIGJpQ2xySW1wb3J0YW50Ow0KfSBCSVRNQVBJTkZPSEVB
REVSLCpMUEJJVE1BUElORk9IRUFERVIsKlBCSVRNQVBJTkZPSEVBREVSOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnUkdCUVVBRCB7DQogICAgICAgIEJZVEUgcmdiQmx1ZTsNCiAgICAgICAgQllURSByZ2JH
cmVlbjsNCiAgICAgICAgQllURSByZ2JSZWQ7DQogICAgICAgIEJZVEUgcmdiUmVzZXJ2ZWQ7DQp9
IFJHQlFVQUQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdCSVRNQVBJTkZPIHsNCiAgICAgICAgQklUTUFQ
SU5GT0hFQURFUiBibWlIZWFkZXI7DQogICAgICAgIFJHQlFVQUQgYm1pQ29sb3JzWzFdOw0KfSBC
SVRNQVBJTkZPLCpMUEJJVE1BUElORk8sKlBCSVRNQVBJTkZPOw0KdHlwZWRlZiBsb25nIEZYUFQx
NkRPVDE2LCpMUEZYUFQxNkRPVDE2Ow0KdHlwZWRlZiBsb25nIEZYUFQyRE9UMzAsKkxQRlhQVDJE
T1QzMDsNCnR5cGVkZWYgc3RydWN0IHRhZ0NJRVhZWiB7DQogICAgICAgIEZYUFQyRE9UMzAgY2ll
eHl6WDsNCiAgICAgICAgRlhQVDJET1QzMCBjaWV4eXpZOw0KICAgICAgICBGWFBUMkRPVDMwIGNp
ZXh5elo7DQp9IENJRVhZWiwqTFBDSUVYWVo7DQp0eXBlZGVmIHN0cnVjdCB0YWdDSUVYWVpUUklQ
TEUgew0KICAgICAgICBDSUVYWVogY2lleHl6UmVkOw0KICAgICAgICBDSUVYWVogY2lleHl6R3Jl
ZW47DQogICAgICAgIENJRVhZWiBjaWV4eXpCbHVlOw0KfSBDSUVYWVpUUklQTEUsKkxQQ0lFWFla
VFJJUExFOw0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgICAgICBEV09SRCBiVjRTaXplOw0KICAgICAg
ICBMT05HIGJWNFdpZHRoOw0KICAgICAgICBMT05HIGJWNEhlaWdodDsNCiAgICAgICAgV09SRCBi
VjRQbGFuZXM7DQogICAgICAgIFdPUkQgYlY0Qml0Q291bnQ7DQogICAgICAgIERXT1JEIGJWNFY0
Q29tcHJlc3Npb247DQogICAgICAgIERXT1JEIGJWNFNpemVJbWFnZTsNCiAgICAgICAgTE9ORyBi
VjRYUGVsc1Blck1ldGVyOw0KICAgICAgICBMT05HIGJWNFlQZWxzUGVyTWV0ZXI7DQogICAgICAg
IERXT1JEIGJWNENsclVzZWQ7DQogICAgICAgIERXT1JEIGJWNENsckltcG9ydGFudDsNCiAgICAg
ICAgRFdPUkQgYlY0UmVkTWFzazsNCiAgICAgICAgRFdPUkQgYlY0R3JlZW5NYXNrOw0KICAgICAg
ICBEV09SRCBiVjRCbHVlTWFzazsNCiAgICAgICAgRFdPUkQgYlY0QWxwaGFNYXNrOw0KICAgICAg
ICBEV09SRCBiVjRDU1R5cGU7DQogICAgICAgIENJRVhZWlRSSVBMRSBiVjRFbmRwb2ludHM7DQog
ICAgICAgIERXT1JEIGJWNEdhbW1hUmVkOw0KICAgICAgICBEV09SRCBiVjRHYW1tYUdyZWVuOw0K
ICAgICAgICBEV09SRCBiVjRHYW1tYUJsdWU7DQp9IEJJVE1BUFY0SEVBREVSLCpMUEJJVE1BUFY0
SEVBREVSLCpQQklUTUFQVjRIRUFERVI7DQp0eXBlZGVmIHN0cnVjdCB0YWdGT05UU0lHTkFUVVJF
IHsNCiAgICAgICAgRFdPUkQgZnNVc2JbNF07DQogICAgICAgIERXT1JEIGZzQ3NiWzJdOw0KfSBG
T05UU0lHTkFUVVJFLCpMUEZPTlRTSUdOQVRVUkU7DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAg
IFVJTlQgY2lDaGFyc2V0Ow0KICAgICAgICBVSU5UIGNpQUNQOw0KICAgICAgICBGT05UU0lHTkFU
VVJFIGZzOw0KfSBDSEFSU0VUSU5GTywqTFBDSEFSU0VUSU5GTzsNCnR5cGVkZWYgc3RydWN0IHRh
Z0NPTE9SQURKVVNUTUVOVCB7DQogICAgICAgIFdPUkQgY2FTaXplOw0KICAgICAgICBXT1JEIGNh
RmxhZ3M7DQogICAgICAgIFdPUkQgY2FJbGx1bWluYW50SW5kZXg7DQogICAgICAgIFdPUkQgY2FS
ZWRHYW1tYTsNCiAgICAgICAgV09SRCBjYUdyZWVuR2FtbWE7DQogICAgICAgIFdPUkQgY2FCbHVl
R2FtbWE7DQogICAgICAgIFdPUkQgY2FSZWZlcmVuY2VCbGFjazsNCiAgICAgICAgV09SRCBjYVJl
ZmVyZW5jZVdoaXRlOw0KICAgICAgICBTSE9SVCBjYUNvbnRyYXN0Ow0KICAgICAgICBTSE9SVCBj
YUJyaWdodG5lc3M7DQogICAgICAgIFNIT1JUIGNhQ29sb3JmdWxuZXNzOw0KICAgICAgICBTSE9S
VCBjYVJlZEdyZWVuVGludDsNCn0gQ09MT1JBREpVU1RNRU5ULCpMUENPTE9SQURKVVNUTUVOVDsN
CnR5cGVkZWYgc3RydWN0IF9kZXZpY2Vtb2RlQSB7DQogICAgICAgIEJZVEUgZG1EZXZpY2VOYW1l
WzMyXTsNCiAgICAgICAgV09SRCBkbVNwZWNWZXJzaW9uOw0KICAgICAgICBXT1JEIGRtRHJpdmVy
VmVyc2lvbjsNCiAgICAgICAgV09SRCBkbVNpemU7DQogICAgICAgIFdPUkQgZG1Ecml2ZXJFeHRy
YTsNCiAgICAgICAgRFdPUkQgZG1GaWVsZHM7DQogICAgICAgIHNob3J0IGRtT3JpZW50YXRpb247
DQogICAgICAgIHNob3J0IGRtUGFwZXJTaXplOw0KICAgICAgICBzaG9ydCBkbVBhcGVyTGVuZ3Ro
Ow0KICAgICAgICBzaG9ydCBkbVBhcGVyV2lkdGg7DQogICAgICAgIHNob3J0IGRtU2NhbGU7DQog
ICAgICAgIHNob3J0IGRtQ29waWVzOw0KICAgICAgICBzaG9ydCBkbURlZmF1bHRTb3VyY2U7DQog
ICAgICAgIHNob3J0IGRtUHJpbnRRdWFsaXR5Ow0KICAgICAgICBzaG9ydCBkbUNvbG9yOw0KICAg
ICAgICBzaG9ydCBkbUR1cGxleDsNCiAgICAgICAgc2hvcnQgZG1ZUmVzb2x1dGlvbjsNCiAgICAg
ICAgc2hvcnQgZG1UVE9wdGlvbjsNCiAgICAgICAgc2hvcnQgZG1Db2xsYXRlOw0KICAgICAgICBC
WVRFIGRtRm9ybU5hbWVbMzJdOw0KICAgICAgICBXT1JEIGRtTG9nUGl4ZWxzOw0KICAgICAgICBE
V09SRCBkbUJpdHNQZXJQZWw7DQogICAgICAgIERXT1JEIGRtUGVsc1dpZHRoOw0KICAgICAgICBE
V09SRCBkbVBlbHNIZWlnaHQ7DQogICAgICAgIERXT1JEIGRtRGlzcGxheUZsYWdzOw0KICAgICAg
ICBEV09SRCBkbURpc3BsYXlGcmVxdWVuY3k7DQogICAgICAgIERXT1JEIGRtSUNNTWV0aG9kOw0K
ICAgICAgICBEV09SRCBkbUlDTUludGVudDsNCiAgICAgICAgRFdPUkQgZG1NZWRpYVR5cGU7DQog
ICAgICAgIERXT1JEIGRtRGl0aGVyVHlwZTsNCiAgICAgICAgRFdPUkQgZG1JQ0NNYW51ZmFjdHVy
ZXI7DQogICAgICAgIERXT1JEIGRtSUNDTW9kZWw7DQp9IERFVk1PREVBLCpMUERFVk1PREVBLCpQ
REVWTU9ERUE7DQp0eXBlZGVmIHN0cnVjdCBfZGV2aWNlbW9kZVcgew0KICAgICAgICBXQ0hBUiBk
bURldmljZU5hbWVbMzJdOw0KICAgICAgICBXT1JEIGRtU3BlY1ZlcnNpb247DQogICAgICAgIFdP
UkQgZG1Ecml2ZXJWZXJzaW9uOw0KICAgICAgICBXT1JEIGRtU2l6ZTsNCiAgICAgICAgV09SRCBk
bURyaXZlckV4dHJhOw0KICAgICAgICBEV09SRCBkbUZpZWxkczsNCiAgICAgICAgc2hvcnQgZG1P
cmllbnRhdGlvbjsNCiAgICAgICAgc2hvcnQgZG1QYXBlclNpemU7DQogICAgICAgIHNob3J0IGRt
UGFwZXJMZW5ndGg7DQogICAgICAgIHNob3J0IGRtUGFwZXJXaWR0aDsNCiAgICAgICAgc2hvcnQg
ZG1TY2FsZTsNCiAgICAgICAgc2hvcnQgZG1Db3BpZXM7DQogICAgICAgIHNob3J0IGRtRGVmYXVs
dFNvdXJjZTsNCiAgICAgICAgc2hvcnQgZG1QcmludFF1YWxpdHk7DQogICAgICAgIHNob3J0IGRt
Q29sb3I7DQogICAgICAgIHNob3J0IGRtRHVwbGV4Ow0KICAgICAgICBzaG9ydCBkbVlSZXNvbHV0
aW9uOw0KICAgICAgICBzaG9ydCBkbVRUT3B0aW9uOw0KICAgICAgICBzaG9ydCBkbUNvbGxhdGU7
DQogICAgICAgIFdDSEFSIGRtRm9ybU5hbWVbMzJdOw0KICAgICAgICBXT1JEIGRtTG9nUGl4ZWxz
Ow0KICAgICAgICBEV09SRCBkbUJpdHNQZXJQZWw7DQogICAgICAgIERXT1JEIGRtUGVsc1dpZHRo
Ow0KICAgICAgICBEV09SRCBkbVBlbHNIZWlnaHQ7DQogICAgICAgIERXT1JEIGRtRGlzcGxheUZs
YWdzOw0KICAgICAgICBEV09SRCBkbURpc3BsYXlGcmVxdWVuY3k7DQogICAgICAgIERXT1JEIGRt
SUNNTWV0aG9kOw0KICAgICAgICBEV09SRCBkbUlDTUludGVudDsNCiAgICAgICAgRFdPUkQgZG1N
ZWRpYVR5cGU7DQogICAgICAgIERXT1JEIGRtRGl0aGVyVHlwZTsNCiAgICAgICAgRFdPUkQgZG1J
Q0NNYW51ZmFjdHVyZXI7DQogICAgICAgIERXT1JEIGRtSUNDTW9kZWw7DQp9IERFVk1PREVXLCpM
UERFVk1PREVXLCpQREVWTU9ERVc7DQp0eXBlZGVmIHN0cnVjdCB0YWdESUJTRUNUSU9OIHsNCiAg
ICAgICAgQklUTUFQIGRzQm07DQogICAgICAgIEJJVE1BUElORk9IRUFERVIgZHNCbWloOw0KICAg
ICAgICBEV09SRCBkc0JpdGZpZWxkc1szXTsNCiAgICAgICAgSEFORExFIGRzaFNlY3Rpb247DQog
ICAgICAgIERXT1JEIGRzT2Zmc2V0Ow0KfSBESUJTRUNUSU9OOw0KdHlwZWRlZiBzdHJ1Y3QgX0RP
Q0lORk9BIHsNCiAgICAgICAgaW50IGNiU2l6ZTsNCiAgICAgICAgTFBDVFNUUiBscHN6RG9jTmFt
ZTsNCiAgICAgICAgTFBDVFNUUiBscHN6T3V0cHV0Ow0KICAgICAgICBMUENUU1RSIGxwc3pEYXRh
dHlwZTsNCiAgICAgICAgRFdPUkQgZndUeXBlOw0KfSBET0NJTkZPQSwqTFBET0NJTkZPQTsNCnR5
cGVkZWYgc3RydWN0IF9ET0NJTkZPVyB7DQogICAgICAgIGludCBjYlNpemU7DQogICAgICAgIExQ
Q1dTVFIgbHBzekRvY05hbWU7DQogICAgICAgIExQQ1dTVFIgbHBzek91dHB1dDsNCiAgICAgICAg
TFBDV1NUUiBscHN6RGF0YXR5cGU7DQogICAgICAgIERXT1JEIGZ3VHlwZTsNCn0gRE9DSU5GT1cs
KkxQRE9DSU5GT1c7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVIgew0KICAgICAgICBEV09SRCBpVHlw
ZTsNCiAgICAgICAgRFdPUkQgblNpemU7DQp9IEVNUiwqUEVNUjsNCnR5cGVkZWYgc3RydWN0IHRh
Z0VNUkFOR0xFQVJDIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUE9JTlRMIHB0bENlbnRl
cjsNCiAgICAgICAgRFdPUkQgblJhZGl1czsNCiAgICAgICAgRkxPQVQgZVN0YXJ0QW5nbGU7DQog
ICAgICAgIEZMT0FUIGVTd2VlcEFuZ2xlOw0KfSBFTVJBTkdMRUFSQywqUEVNUkFOR0xFQVJDOw0K
dHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQVJDIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVD
VEwgcmNsQm94Ow0KICAgICAgICBQT0lOVEwgcHRsU3RhcnQ7DQogICAgICAgIFBPSU5UTCBwdGxF
bmQ7DQp9IEVNUkFSQywqUEVNUkFSQyxFTVJBUkNUTywqUEVNUkFSQ1RPLEVNUkNIT1JELCpQRU1S
Q0hPUkQsRU1SUElFLCpQRU1SUElFOw0KdHlwZWRlZiBzdHJ1Y3QgX1hGT1JNIHsNCiAgICAgICAg
RkxPQVQgZU0xMTsNCiAgICAgICAgRkxPQVQgZU0xMjsNCiAgICAgICAgRkxPQVQgZU0yMTsNCiAg
ICAgICAgRkxPQVQgZU0yMjsNCiAgICAgICAgRkxPQVQgZUR4Ow0KICAgICAgICBGTE9BVCBlRHk7
DQp9IFhGT1JNLCpMUFhGT1JNOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQklUQkxUIHsNCiAgICAg
ICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBMT05HIHhEZXN0
Ow0KICAgICAgICBMT05HIHlEZXN0Ow0KICAgICAgICBMT05HIGN4RGVzdDsNCiAgICAgICAgTE9O
RyBjeURlc3Q7DQogICAgICAgIERXT1JEIGR3Um9wOw0KICAgICAgICBMT05HIHhTcmM7DQogICAg
ICAgIExPTkcgeVNyYzsNCiAgICAgICAgWEZPUk0geGZvcm1TcmM7DQogICAgICAgIENPTE9SUkVG
IGNyQmtDb2xvclNyYzsNCiAgICAgICAgRFdPUkQgaVVzYWdlU3JjOw0KICAgICAgICBEV09SRCBv
ZmZCbWlTcmM7DQogICAgICAgIERXT1JEIG9mZkJpdHNTcmM7DQogICAgICAgIERXT1JEIGNiQml0
c1NyYzsNCn0gRU1SQklUQkxULCpQRU1SQklUQkxUOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTE9HQlJV
U0ggew0KICAgICAgICBVSU5UIGxiU3R5bGU7DQogICAgICAgIENPTE9SUkVGIGxiQ29sb3I7DQog
ICAgICAgIExPTkcgbGJIYXRjaDsNCn0gTE9HQlJVU0gsKkxQTE9HQlJVU0g7DQp0eXBlZGVmIExP
R0JSVVNIIFBBVFRFUk4sKlBQQVRURVJOLCpMUFBBVFRFUk47DQp0eXBlZGVmIHN0cnVjdCB0YWdF
TVJDUkVBVEVCUlVTSElORElSRUNUIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgRFdPUkQg
aWhCcnVzaDsNCiAgICAgICAgTE9HQlJVU0ggbGI7DQp9IEVNUkNSRUFURUJSVVNISU5ESVJFQ1Qs
KlBFTVJDUkVBVEVCUlVTSElORElSRUNUOw0KdHlwZWRlZiBMT05HIExDU0NTVFlQRTsNCnR5cGVk
ZWYgTE9ORyBMQ1NHQU1VVE1BVENIOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTE9HQ09MT1JTUEFDRUEg
ew0KICAgICAgICBEV09SRCBsY3NTaWduYXR1cmU7DQogICAgICAgIERXT1JEIGxjc1ZlcnNpb247
DQogICAgICAgIERXT1JEIGxjc1NpemU7DQogICAgICAgIExDU0NTVFlQRSBsY3NDU1R5cGU7DQog
ICAgICAgIExDU0dBTVVUTUFUQ0ggbGNzSW50ZW50Ow0KICAgICAgICBDSUVYWVpUUklQTEUgbGNz
RW5kcG9pbnRzOw0KICAgICAgICBEV09SRCBsY3NHYW1tYVJlZDsNCiAgICAgICAgRFdPUkQgbGNz
R2FtbWFHcmVlbjsNCiAgICAgICAgRFdPUkQgbGNzR2FtbWFCbHVlOw0KICAgICAgICBDSEFSIGxj
c0ZpbGVuYW1lWzI2MF07DQp9IExPR0NPTE9SU1BBQ0VBLCpMUExPR0NPTE9SU1BBQ0VBOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnTE9HQ09MT1JTUEFDRVcgew0KICAgICAgICBEV09SRCBsY3NTaWduYXR1
cmU7DQogICAgICAgIERXT1JEIGxjc1ZlcnNpb247DQogICAgICAgIERXT1JEIGxjc1NpemU7DQog
ICAgICAgIExDU0NTVFlQRSBsY3NDU1R5cGU7DQogICAgICAgIExDU0dBTVVUTUFUQ0ggbGNzSW50
ZW50Ow0KICAgICAgICBDSUVYWVpUUklQTEUgbGNzRW5kcG9pbnRzOw0KICAgICAgICBEV09SRCBs
Y3NHYW1tYVJlZDsNCiAgICAgICAgRFdPUkQgbGNzR2FtbWFHcmVlbjsNCiAgICAgICAgRFdPUkQg
bGNzR2FtbWFCbHVlOw0KICAgICAgICBXQ0hBUiBsY3NGaWxlbmFtZVsyNjBdOw0KfSBMT0dDT0xP
UlNQQUNFVywqTFBMT0dDT0xPUlNQQUNFVzsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkNSRUFURUNP
TE9SU1BBQ0Ugew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBEV09SRCBpaENTOw0KICAgICAg
ICBMT0dDT0xPUlNQQUNFVyBsY3M7DQp9IEVNUkNSRUFURUNPTE9SU1BBQ0UsKlBFTVJDUkVBVEVD
T0xPUlNQQUNFOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQ1JFQVRFRElCUEFUVEVSTkJSVVNIUFQg
ew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBEV09SRCBpaEJydXNoOw0KICAgICAgICBEV09S
RCBpVXNhZ2U7DQogICAgICAgIERXT1JEIG9mZkJtaTsNCiAgICAgICAgRFdPUkQgY2JCbWk7DQog
ICAgICAgIERXT1JEIG9mZkJpdHM7DQogICAgICAgIERXT1JEIGNiQml0czsNCn0gRU1SQ1JFQVRF
RElCUEFUVEVSTkJSVVNIUFQsKlBFTVJDUkVBVEVESUJQQVRURVJOQlJVU0hQVDsNCnR5cGVkZWYg
c3RydWN0IHRhZ0VNUkNSRUFURU1PTk9CUlVTSCB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAg
IERXT1JEIGloQnJ1c2g7DQogICAgICAgIERXT1JEIGlVc2FnZTsNCiAgICAgICAgRFdPUkQgb2Zm
Qm1pOw0KICAgICAgICBEV09SRCBjYkJtaTsNCiAgICAgICAgRFdPUkQgb2ZmQml0czsNCiAgICAg
ICAgRFdPUkQgY2JCaXRzOw0KfSBFTVJDUkVBVEVNT05PQlJVU0gsKlBFTVJDUkVBVEVNT05PQlJV
U0g7DQp0eXBlZGVmIHN0cnVjdCB0YWdQQUxFVFRFRU5UUlkgew0KICAgICAgICBCWVRFIHBlUmVk
Ow0KICAgICAgICBCWVRFIHBlR3JlZW47DQogICAgICAgIEJZVEUgcGVCbHVlOw0KICAgICAgICBC
WVRFIHBlRmxhZ3M7DQp9IFBBTEVUVEVFTlRSWSwqTFBQQUxFVFRFRU5UUlksKlBQQUxFVFRFRU5U
Ulk7DQp0eXBlZGVmIHN0cnVjdCB0YWdMT0dQQUxFVFRFIHsNCiAgICAgICAgV09SRCBwYWxWZXJz
aW9uOw0KICAgICAgICBXT1JEIHBhbE51bUVudHJpZXM7DQogICAgICAgIFBBTEVUVEVFTlRSWSBw
YWxQYWxFbnRyeVsxXTsNCn0gTE9HUEFMRVRURSwqTlBMT0dQQUxFVFRFLCpQTE9HUEFMRVRURSwq
TFBMT0dQQUxFVFRFOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQ1JFQVRFUEFMRVRURSB7DQogICAg
ICAgIEVNUiBlbXI7DQogICAgICAgIERXT1JEIGloUGFsOw0KICAgICAgICBMT0dQQUxFVFRFIGxn
cGw7DQp9IEVNUkNSRUFURVBBTEVUVEUsKlBFTVJDUkVBVEVQQUxFVFRFOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTE9HUEVOIHsNCiAgICAgICAgVUlOVCBsb3BuU3R5bGU7DQogICAgICAgIFBPSU5UIGxv
cG5XaWR0aDsNCiAgICAgICAgQ09MT1JSRUYgbG9wbkNvbG9yOw0KfSBMT0dQRU4sKkxQTE9HUEVO
Ow0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQ1JFQVRFUEVOIHsNCiAgICAgICAgRU1SIGVtcjsNCiAg
ICAgICAgRFdPUkQgaWhQZW47DQogICAgICAgIExPR1BFTiBsb3BuOw0KfSBFTVJDUkVBVEVQRU4s
KlBFTVJDUkVBVEVQRU47DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJFTExJUFNFIHsNCiAgICAgICAg
RU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm94Ow0KfSBFTVJFTExJUFNFLCpQRU1SRUxMSVBT
RSxFTVJSRUNUQU5HTEUsKlBFTVJSRUNUQU5HTEU7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJFT0Yg
ew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBEV09SRCBuUGFsRW50cmllczsNCiAgICAgICAg
RFdPUkQgb2ZmUGFsRW50cmllczsNCiAgICAgICAgRFdPUkQgblNpemVMYXN0Ow0KfSBFTVJFT0Ys
KlBFTVJFT0Y7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJFWENMVURFQ0xJUFJFQ1Qgew0KICAgICAg
ICBFTVIgZW1yOw0KICAgICAgICBSRUNUTCByY2xDbGlwOw0KfSBFTVJFWENMVURFQ0xJUFJFQ1Qs
KlBFTVJFWENMVURFQ0xJUFJFQ1QsRU1SSU5URVJTRUNUQ0xJUFJFQ1QsKlBFTVJJTlRFUlNFQ1RD
TElQUkVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ1BBTk9TRSB7DQogICAgICAgIEJZVEUgYkZhbWls
eVR5cGU7DQogICAgICAgIEJZVEUgYlNlcmlmU3R5bGU7DQogICAgICAgIEJZVEUgYldlaWdodDsN
CiAgICAgICAgQllURSBiUHJvcG9ydGlvbjsNCiAgICAgICAgQllURSBiQ29udHJhc3Q7DQogICAg
ICAgIEJZVEUgYlN0cm9rZVZhcmlhdGlvbjsNCiAgICAgICAgQllURSBiQXJtU3R5bGU7DQogICAg
ICAgIEJZVEUgYkxldHRlcmZvcm07DQogICAgICAgIEJZVEUgYk1pZGxpbmU7DQogICAgICAgIEJZ
VEUgYlhIZWlnaHQ7DQp9IFBBTk9TRTsNCnR5cGVkZWYgc3RydWN0IHRhZ0xPR0ZPTlRBIHsNCiAg
ICAgICAgTE9ORyBsZkhlaWdodDsNCiAgICAgICAgTE9ORyBsZldpZHRoOw0KICAgICAgICBMT05H
IGxmRXNjYXBlbWVudDsNCiAgICAgICAgTE9ORyBsZk9yaWVudGF0aW9uOw0KICAgICAgICBMT05H
IGxmV2VpZ2h0Ow0KICAgICAgICBCWVRFIGxmSXRhbGljOw0KICAgICAgICBCWVRFIGxmVW5kZXJs
aW5lOw0KICAgICAgICBCWVRFIGxmU3RyaWtlT3V0Ow0KICAgICAgICBCWVRFIGxmQ2hhclNldDsN
CiAgICAgICAgQllURSBsZk91dFByZWNpc2lvbjsNCiAgICAgICAgQllURSBsZkNsaXBQcmVjaXNp
b247DQogICAgICAgIEJZVEUgbGZRdWFsaXR5Ow0KICAgICAgICBCWVRFIGxmUGl0Y2hBbmRGYW1p
bHk7DQogICAgICAgIENIQVIgbGZGYWNlTmFtZVszMl07DQp9IExPR0ZPTlRBLCpQTE9HRk9OVEEs
KkxQTE9HRk9OVEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdMT0dGT05UVyB7DQogICAgICAgIExPTkcg
bGZIZWlnaHQ7DQogICAgICAgIExPTkcgbGZXaWR0aDsNCiAgICAgICAgTE9ORyBsZkVzY2FwZW1l
bnQ7DQogICAgICAgIExPTkcgbGZPcmllbnRhdGlvbjsNCiAgICAgICAgTE9ORyBsZldlaWdodDsN
CiAgICAgICAgQllURSBsZkl0YWxpYzsNCiAgICAgICAgQllURSBsZlVuZGVybGluZTsNCiAgICAg
ICAgQllURSBsZlN0cmlrZU91dDsNCiAgICAgICAgQllURSBsZkNoYXJTZXQ7DQogICAgICAgIEJZ
VEUgbGZPdXRQcmVjaXNpb247DQogICAgICAgIEJZVEUgbGZDbGlwUHJlY2lzaW9uOw0KICAgICAg
ICBCWVRFIGxmUXVhbGl0eTsNCiAgICAgICAgQllURSBsZlBpdGNoQW5kRmFtaWx5Ow0KICAgICAg
ICBXQ0hBUiBsZkZhY2VOYW1lWzMyXTsNCn0gTE9HRk9OVFcsKlBMT0dGT05UVywqTFBMT0dGT05U
VzsNCnR5cGVkZWYgc3RydWN0IHRhZ0VYVExPR0ZPTlRBIHsNCiAgICAgICAgTE9HRk9OVEEgZWxm
TG9nRm9udDsNCiAgICAgICAgQllURSBlbGZGdWxsTmFtZVs2NF07DQogICAgICAgIEJZVEUgZWxm
U3R5bGVbMzJdOw0KICAgICAgICBEV09SRCBlbGZWZXJzaW9uOw0KICAgICAgICBEV09SRCBlbGZT
dHlsZVNpemU7DQogICAgICAgIERXT1JEIGVsZk1hdGNoOw0KICAgICAgICBEV09SRCBlbGZSZXNl
cnZlZDsNCiAgICAgICAgQllURSBlbGZWZW5kb3JJZFs0XTsNCiAgICAgICAgRFdPUkQgZWxmQ3Vs
dHVyZTsNCiAgICAgICAgUEFOT1NFIGVsZlBhbm9zZTsNCn0gRVhUTE9HRk9OVEEsKlBFWFRMT0dG
T05UQSwqTFBFWFRMT0dGT05UQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0VYVExPR0ZPTlRXIHsNCiAg
ICAgICAgTE9HRk9OVFcgZWxmTG9nRm9udDsNCiAgICAgICAgV0NIQVIgZWxmRnVsbE5hbWVbNjRd
Ow0KICAgICAgICBXQ0hBUiBlbGZTdHlsZVszMl07DQogICAgICAgIERXT1JEIGVsZlZlcnNpb247
DQogICAgICAgIERXT1JEIGVsZlN0eWxlU2l6ZTsNCiAgICAgICAgRFdPUkQgZWxmTWF0Y2g7DQog
ICAgICAgIERXT1JEIGVsZlJlc2VydmVkOw0KICAgICAgICBCWVRFIGVsZlZlbmRvcklkWzRdOw0K
ICAgICAgICBEV09SRCBlbGZDdWx0dXJlOw0KICAgICAgICBQQU5PU0UgZWxmUGFub3NlOw0KfSBF
WFRMT0dGT05UVywqUEVYVExPR0ZPTlRXLCpMUEVYVExPR0ZPTlRXOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRU1SRVhUQ1JFQVRFRk9OVElORElSRUNUVyB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAg
IERXT1JEIGloRm9udDsNCiAgICAgICAgRVhUTE9HRk9OVFcgZWxmdzsNCn0gRU1SRVhUQ1JFQVRF
Rk9OVElORElSRUNUVywqUEVNUkVYVENSRUFURUZPTlRJTkRJUkVDVFc7DQp0eXBlZGVmIHN0cnVj
dCB0YWdFWFRMT0dQRU4gew0KICAgICAgICBVSU5UIGVscFBlblN0eWxlOw0KICAgICAgICBVSU5U
IGVscFdpZHRoOw0KICAgICAgICBVSU5UIGVscEJydXNoU3R5bGU7DQogICAgICAgIENPTE9SUkVG
IGVscENvbG9yOw0KICAgICAgICBMT05HIGVscEhhdGNoOw0KICAgICAgICBEV09SRCBlbHBOdW1F
bnRyaWVzOw0KICAgICAgICBEV09SRCBlbHBTdHlsZUVudHJ5WzFdOw0KfSBFWFRMT0dQRU4sKlBF
WFRMT0dQRU4sKkxQRVhUTE9HUEVOOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SRVhUQ1JFQVRFUEVO
IHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgRFdPUkQgaWhQZW47DQogICAgICAgIERXT1JE
IG9mZkJtaTsNCiAgICAgICAgRFdPUkQgY2JCbWk7DQogICAgICAgIERXT1JEIG9mZkJpdHM7DQog
ICAgICAgIERXT1JEIGNiQml0czsNCiAgICAgICAgRVhUTE9HUEVOIGVscDsNCn0gRU1SRVhUQ1JF
QVRFUEVOLCpQRU1SRVhUQ1JFQVRFUEVOOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SRVhURkxPT0RG
SUxMIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUE9JTlRMIHB0bFN0YXJ0Ow0KICAgICAg
ICBDT0xPUlJFRiBjckNvbG9yOw0KICAgICAgICBEV09SRCBpTW9kZTsNCn0gRU1SRVhURkxPT0RG
SUxMLCpQRU1SRVhURkxPT0RGSUxMOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SRVhUU0VMRUNUQ0xJ
UFJHTiB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIERXT1JEIGNiUmduRGF0YTsNCiAgICAg
ICAgRFdPUkQgaU1vZGU7DQogICAgICAgIEJZVEUgUmduRGF0YVsxXTsNCn0gRU1SRVhUU0VMRUNU
Q0xJUFJHTiwqUEVNUkVYVFNFTEVDVENMSVBSR047DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJURVhU
IHsNCiAgICAgICAgUE9JTlRMIHB0bFJlZmVyZW5jZTsNCiAgICAgICAgRFdPUkQgbkNoYXJzOw0K
ICAgICAgICBEV09SRCBvZmZTdHJpbmc7DQogICAgICAgIERXT1JEIGZPcHRpb25zOw0KICAgICAg
ICBSRUNUTCByY2w7DQogICAgICAgIERXT1JEIG9mZkR4Ow0KfSBFTVJURVhULCpQRU1SVEVYVDsN
CnR5cGVkZWYgc3RydWN0IHRhZ0VNUkVYVFRFWFRPVVRBIHsNCiAgICAgICAgRU1SIGVtcjsNCiAg
ICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBEV09SRCBpR3JhcGhpY3NNb2RlOw0KICAg
ICAgICBGTE9BVCBleFNjYWxlOw0KICAgICAgICBGTE9BVCBleVNjYWxlOw0KICAgICAgICBFTVJU
RVhUIGVtcnRleHQ7DQp9IEVNUkVYVFRFWFRPVVRBLCpQRU1SRVhUVEVYVE9VVEEsRU1SRVhUVEVY
VE9VVFcsKlBFTVJFWFRURVhUT1VUVzsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkZJTExQQVRIIHsN
CiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KfSBFTVJGSUxMUEFU
SCwqUEVNUkZJTExQQVRILEVNUlNUUk9LRUFOREZJTExQQVRILCpQRU1SU1RST0tFQU5ERklMTFBB
VEgsRU1SU1RST0tFUEFUSCwqUEVNUlNUUk9LRVBBVEg7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJG
SUxMUkdOIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAg
ICAgICBEV09SRCBjYlJnbkRhdGE7DQogICAgICAgIERXT1JEIGloQnJ1c2g7DQogICAgICAgIEJZ
VEUgUmduRGF0YVsxXTsNCn0gRU1SRklMTFJHTiwqUEVNUkZJTExSR047DQp0eXBlZGVmIHN0cnVj
dCB0YWdFTVJGT1JNQVQgew0KICAgICAgICBEV09SRCBkU2lnbmF0dXJlOw0KICAgICAgICBEV09S
RCBuVmVyc2lvbjsNCiAgICAgICAgRFdPUkQgY2JEYXRhOw0KICAgICAgICBEV09SRCBvZmZEYXRh
Ow0KfSBFTVJGT1JNQVQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJGUkFNRVJHTiB7DQogICAgICAg
IEVNUiBlbXI7DQogICAgICAgIFJFQ1RMIHJjbEJvdW5kczsNCiAgICAgICAgRFdPUkQgY2JSZ25E
YXRhOw0KICAgICAgICBEV09SRCBpaEJydXNoOw0KICAgICAgICBTSVpFTCBzemxTdHJva2U7DQog
ICAgICAgIEJZVEUgUmduRGF0YVsxXTsNCn0gRU1SRlJBTUVSR04sKlBFTVJGUkFNRVJHTjsNCnR5
cGVkZWYgc3RydWN0IHRhZ0VNUkdESUNPTU1FTlQgew0KICAgICAgICBFTVIgZW1yOw0KICAgICAg
ICBEV09SRCBjYkRhdGE7DQogICAgICAgIEJZVEUgRGF0YVsxXTsNCn0gRU1SR0RJQ09NTUVOVCwq
UEVNUkdESUNPTU1FTlQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJJTlZFUlRSR04gew0KICAgICAg
ICBFTVIgZW1yOw0KICAgICAgICBSRUNUTCByY2xCb3VuZHM7DQogICAgICAgIERXT1JEIGNiUmdu
RGF0YTsNCiAgICAgICAgQllURSBSZ25EYXRhWzFdOw0KfSBFTVJJTlZFUlRSR04sKlBFTVJJTlZF
UlRSR04sRU1SUEFJTlRSR04sKlBFTVJQQUlOVFJHTjsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkxJ
TkVUTyB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIFBPSU5UTCBwdGw7DQp9IEVNUkxJTkVU
TywqUEVNUkxJTkVUTyxFTVJNT1ZFVE9FWCwqUEVNUk1PVkVUT0VYOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRU1STUFTS0JMVCB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIFJFQ1RMIHJjbEJvdW5k
czsNCiAgICAgICAgTE9ORyB4RGVzdDsNCiAgICAgICAgTE9ORyB5RGVzdDsNCiAgICAgICAgTE9O
RyBjeERlc3Q7DQogICAgICAgIExPTkcgY3lEZXN0Ow0KICAgICAgICBEV09SRCBkd1JvcDsNCiAg
ICAgICAgTE9ORyB4U3JjOw0KICAgICAgICBMT05HIHlTcmM7DQogICAgICAgIFhGT1JNIHhmb3Jt
U3JjOw0KICAgICAgICBDT0xPUlJFRiBjckJrQ29sb3JTcmM7DQogICAgICAgIERXT1JEIGlVc2Fn
ZVNyYzsNCiAgICAgICAgRFdPUkQgb2ZmQm1pU3JjOw0KICAgICAgICBEV09SRCBjYkJtaVNyYzsN
CiAgICAgICAgRFdPUkQgb2ZmQml0c1NyYzsNCiAgICAgICAgRFdPUkQgY2JCaXRzU3JjOw0KICAg
ICAgICBMT05HIHhNYXNrOw0KICAgICAgICBMT05HIHlNYXNrOw0KICAgICAgICBEV09SRCBpVXNh
Z2VNYXNrOw0KICAgICAgICBEV09SRCBvZmZCbWlNYXNrOw0KICAgICAgICBEV09SRCBjYkJtaU1h
c2s7DQogICAgICAgIERXT1JEIG9mZkJpdHNNYXNrOw0KICAgICAgICBEV09SRCBjYkJpdHNNYXNr
Ow0KfSBFTVJNQVNLQkxULCpQRU1STUFTS0JMVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUk1PRElG
WVdPUkxEVFJBTlNGT1JNIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgWEZPUk0geGZvcm07
DQogICAgICAgIERXT1JEIGlNb2RlOw0KfSBFTVJNT0RJRllXT1JMRFRSQU5TRk9STSwqUEVNUk1P
RElGWVdPUkxEVFJBTlNGT1JNOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1ST0ZGU0VUQ0xJUFJHTiB7
DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIFBPSU5UTCBwdGxPZmZzZXQ7DQp9IEVNUk9GRlNF
VENMSVBSR04sKlBFTVJPRkZTRVRDTElQUkdOOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUExHQkxU
IHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBQ
T0lOVEwgYXB0bERlc3RbM107DQogICAgICAgIExPTkcgeFNyYzsNCiAgICAgICAgTE9ORyB5U3Jj
Ow0KICAgICAgICBMT05HIGN4U3JjOw0KICAgICAgICBMT05HIGN5U3JjOw0KICAgICAgICBYRk9S
TSB4Zm9ybVNyYzsNCiAgICAgICAgQ09MT1JSRUYgY3JCa0NvbG9yU3JjOw0KICAgICAgICBEV09S
RCBpVXNhZ2VTcmM7DQogICAgICAgIERXT1JEIG9mZkJtaVNyYzsNCiAgICAgICAgRFdPUkQgY2JC
bWlTcmM7DQogICAgICAgIERXT1JEIG9mZkJpdHNTcmM7DQogICAgICAgIERXT1JEIGNiQml0c1Ny
YzsNCiAgICAgICAgTE9ORyB4TWFzazsNCiAgICAgICAgTE9ORyB5TWFzazsNCiAgICAgICAgRFdP
UkQgaVVzYWdlTWFzazsNCiAgICAgICAgRFdPUkQgb2ZmQm1pTWFzazsNCiAgICAgICAgRFdPUkQg
Y2JCbWlNYXNrOw0KICAgICAgICBEV09SRCBvZmZCaXRzTWFzazsNCiAgICAgICAgRFdPUkQgY2JC
aXRzTWFzazsNCn0gRU1SUExHQkxULCpQRU1SUExHQkxUOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1S
UE9MWURSQVcgew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBSRUNUTCByY2xCb3VuZHM7DQog
ICAgICAgIERXT1JEIGNwdGw7DQogICAgICAgIFBPSU5UTCBhcHRsWzFdOw0KICAgICAgICBCWVRF
IGFiVHlwZXNbMV07DQp9IEVNUlBPTFlEUkFXLCpQRU1SUE9MWURSQVc7DQp0eXBlZGVmIHN0cnVj
dCB0YWdFTVJQT0xZRFJBVzE2IHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNs
Qm91bmRzOw0KICAgICAgICBEV09SRCBjcHRzOw0KICAgICAgICBQT0lOVFMgYXB0c1sxXTsNCiAg
ICAgICAgQllURSBhYlR5cGVzWzFdOw0KfSBFTVJQT0xZRFJBVzE2LCpQRU1SUE9MWURSQVcxNjsN
CnR5cGVkZWYgc3RydWN0IHRhZ0VNUlBPTFlMSU5FIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAg
ICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBEV09SRCBjcHRsOw0KICAgICAgICBQT0lOVEwg
YXB0bFsxXTsNCn0gRU1SUE9MWUxJTkUsKlBFTVJQT0xZTElORSxFTVJQT0xZQkVaSUVSLCpQRU1S
UE9MWUJFWklFUixFTVJQT0xZR09OLCpQRU1SUE9MWUdPTixFTVJQT0xZQkVaSUVSVE8sKlBFTVJQ
T0xZQkVaSUVSVE8sRU1SUE9MWUxJTkVUTywqUEVNUlBPTFlMSU5FVE87DQp0eXBlZGVmIHN0cnVj
dCB0YWdFTVJQT0xZTElORTE2IHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNs
Qm91bmRzOw0KICAgICAgICBEV09SRCBjcHRzOw0KICAgICAgICBQT0lOVEwgYXB0c1sxXTsNCn0g
RU1SUE9MWUxJTkUxNiwqUEVNUlBPTFlMSU5FMTYsRU1SUE9MWUJFWklFUjE2LCpQRU1SUE9MWUJF
WklFUjE2LEVNUlBPTFlHT04xNiwqUEVNUlBPTFlHT04xNixFTVJQT0xZQkVaSUVSVE8xNiwqUEVN
UlBPTFlCRVpJRVJUTzE2LEVNUlBPTFlMSU5FVE8xNiwqUEVNUlBPTFlMSU5FVE8xNjsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0VNUlBPTFlQT0xZTElORSB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAg
IFJFQ1RMIHJjbEJvdW5kczsNCiAgICAgICAgRFdPUkQgblBvbHlzOw0KICAgICAgICBEV09SRCBj
cHRsOw0KICAgICAgICBEV09SRCBhUG9seUNvdW50c1sxXTsNCiAgICAgICAgUE9JTlRMIGFwdGxb
MV07DQp9IEVNUlBPTFlQT0xZTElORSwqUEVNUlBPTFlQT0xZTElORSxFTVJQT0xZUE9MWUdPTiwq
UEVNUlBPTFlQT0xZR09OOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUE9MWVBPTFlMSU5FMTYgew0K
ICAgICAgICBFTVIgZW1yOw0KICAgICAgICBSRUNUTCByY2xCb3VuZHM7DQogICAgICAgIERXT1JE
IG5Qb2x5czsNCiAgICAgICAgRFdPUkQgY3B0czsNCiAgICAgICAgRFdPUkQgYVBvbHlDb3VudHNb
MV07DQogICAgICAgIFBPSU5UUyBhcHRzWzFdOw0KfSBFTVJQT0xZUE9MWUxJTkUxNiwqUEVNUlBP
TFlQT0xZTElORTE2LEVNUlBPTFlQT0xZR09OMTYsKlBFTVJQT0xZUE9MWUdPTjE2Ow0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnRU1SUE9MWVRFWFRPVVRBIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAg
UkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBEV09SRCBpR3JhcGhpY3NNb2RlOw0KICAgICAgICBG
TE9BVCBleFNjYWxlOw0KICAgICAgICBGTE9BVCBleVNjYWxlOw0KICAgICAgICBMT05HIGNTdHJp
bmdzOw0KICAgICAgICBFTVJURVhUIGFlbXJ0ZXh0WzFdOw0KfSBFTVJQT0xZVEVYVE9VVEEsKlBF
TVJQT0xZVEVYVE9VVEEsRU1SUE9MWVRFWFRPVVRXLCpQRU1SUE9MWVRFWFRPVVRXOw0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnRU1SUkVTSVpFUEFMRVRURSB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAg
IERXT1JEIGloUGFsOw0KICAgICAgICBEV09SRCBjRW50cmllczsNCn0gRU1SUkVTSVpFUEFMRVRU
RSwqUEVNUlJFU0laRVBBTEVUVEU7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJSRVNUT1JFREMgew0K
ICAgICAgICBFTVIgZW1yOw0KICAgICAgICBMT05HIGlSZWxhdGl2ZTsNCn0gRU1SUkVTVE9SRURD
LCpQRU1SUkVTVE9SRURDOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUk9VTkRSRUNUIHsNCiAgICAg
ICAgRU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm94Ow0KICAgICAgICBTSVpFTCBzemxDb3Ju
ZXI7DQp9IEVNUlJPVU5EUkVDVCwqUEVNUlJPVU5EUkVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0VN
UlNDQUxFVklFV1BPUlRFWFRFWCB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIExPTkcgeE51
bTsNCiAgICAgICAgTE9ORyB4RGVub207DQogICAgICAgIExPTkcgeU51bTsNCiAgICAgICAgTE9O
RyB5RGVub207DQp9IEVNUlNDQUxFVklFV1BPUlRFWFRFWCwqUEVNUlNDQUxFVklFV1BPUlRFWFRF
WCxFTVJTQ0FMRVdJTkRPV0VYVEVYLCpQRU1SU0NBTEVXSU5ET1dFWFRFWDsNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0VNUlNFTEVDVENPTE9SU1BBQ0Ugew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBE
V09SRCBpaENTOw0KfSBFTVJTRUxFQ1RDT0xPUlNQQUNFLCpQRU1SU0VMRUNUQ09MT1JTUEFDRSxF
TVJERUxFVEVDT0xPUlNQQUNFLCpQRU1SREVMRVRFQ09MT1JTUEFDRTsNCnR5cGVkZWYgc3RydWN0
IHRhZ0VNUlNFTEVDVE9CSkVDVCB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIERXT1JEIGlo
T2JqZWN0Ow0KfSBFTVJTRUxFQ1RPQkpFQ1QsKlBFTVJTRUxFQ1RPQkpFQ1QsRU1SREVMRVRFT0JK
RUNULCpQRU1SREVMRVRFT0JKRUNUOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SU0VMRUNUUEFMRVRU
RSB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIERXT1JEIGloUGFsOw0KfSBFTVJTRUxFQ1RQ
QUxFVFRFLCpQRU1SU0VMRUNUUEFMRVRURTsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVEFSQ0RJ
UkVDVElPTiB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIERXT1JEIGlBcmNEaXJlY3Rpb247
DQp9IEVNUlNFVEFSQ0RJUkVDVElPTiwqUEVNUlNFVEFSQ0RJUkVDVElPTjsNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0VNUlNFVFRFWFRDT0xPUiB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIENPTE9S
UkVGIGNyQ29sb3I7DQp9IEVNUlNFVEJLQ09MT1IsKlBFTVJTRVRCS0NPTE9SLEVNUlNFVFRFWFRD
T0xPUiwqUEVNUlNFVFRFWFRDT0xPUjsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVENPTE9SQURK
VVNUTUVOVCB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIENPTE9SQURKVVNUTUVOVCBDb2xv
ckFkanVzdG1lbnQ7DQp9IEVNUlNFVENPTE9SQURKVVNUTUVOVCwqUEVNUlNFVENPTE9SQURKVVNU
TUVOVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVERJQklUU1RPREVWSUNFIHsNCiAgICAgICAg
RU1SIGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBMT05HIHhEZXN0Ow0K
ICAgICAgICBMT05HIHlEZXN0Ow0KICAgICAgICBMT05HIHhTcmM7DQogICAgICAgIExPTkcgeVNy
YzsNCiAgICAgICAgTE9ORyBjeFNyYzsNCiAgICAgICAgTE9ORyBjeVNyYzsNCiAgICAgICAgRFdP
UkQgb2ZmQm1pU3JjOw0KICAgICAgICBEV09SRCBjYkJtaVNyYzsNCiAgICAgICAgRFdPUkQgb2Zm
Qml0c1NyYzsNCiAgICAgICAgRFdPUkQgY2JCaXRzU3JjOw0KICAgICAgICBEV09SRCBpVXNhZ2VT
cmM7DQogICAgICAgIERXT1JEIGlTdGFydFNjYW47DQogICAgICAgIERXT1JEIGNTY2FuczsNCn0g
RU1SU0VURElCSVRTVE9ERVZJQ0UsKlBFTVJTRVRESUJJVFNUT0RFVklDRTsNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0VNUlNFVE1BUFBFUkZMQUdTIHsNCiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgRFdP
UkQgZHdGbGFnczsNCn0gRU1SU0VUTUFQUEVSRkxBR1MsKlBFTVJTRVRNQVBQRVJGTEFHUzsNCnR5
cGVkZWYgc3RydWN0IHRhZ0VNUlNFVE1JVEVSTElNSVQgew0KICAgICAgICBFTVIgZW1yOw0KICAg
ICAgICBGTE9BVCBlTWl0ZXJMaW1pdDsNCn0gRU1SU0VUTUlURVJMSU1JVCwqUEVNUlNFVE1JVEVS
TElNSVQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRVRQQUxFVFRFRU5UUklFUyB7DQogICAgICAg
IEVNUiBlbXI7DQogICAgICAgIERXT1JEIGloUGFsOw0KICAgICAgICBEV09SRCBpU3RhcnQ7DQog
ICAgICAgIERXT1JEIGNFbnRyaWVzOw0KICAgICAgICBQQUxFVFRFRU5UUlkgYVBhbEVudHJpZXNb
MV07DQp9IEVNUlNFVFBBTEVUVEVFTlRSSUVTLCpQRU1SU0VUUEFMRVRURUVOVFJJRVM7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdFTVJTRVRQSVhFTFYgew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBQ
T0lOVEwgcHRsUGl4ZWw7DQogICAgICAgIENPTE9SUkVGIGNyQ29sb3I7DQp9IEVNUlNFVFBJWEVM
ViwqUEVNUlNFVFBJWEVMVjsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVFZJRVdQT1JURVhURVgg
ew0KICAgICAgICBFTVIgZW1yOw0KICAgICAgICBTSVpFTCBzemxFeHRlbnQ7DQp9IEVNUlNFVFZJ
RVdQT1JURVhURVgsKlBFTVJTRVRWSUVXUE9SVEVYVEVYLEVNUlNFVFdJTkRPV0VYVEVYLCpQRU1S
U0VUV0lORE9XRVhURVg7DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRVRWSUVXUE9SVE9SR0VYIHsN
CiAgICAgICAgRU1SIGVtcjsNCiAgICAgICAgUE9JTlRMIHB0bE9yaWdpbjsNCn0gRU1SU0VUVklF
V1BPUlRPUkdFWCwqUEVNUlNFVFZJRVdQT1JUT1JHRVgsRU1SU0VUV0lORE9XT1JHRVgsKlBFTVJT
RVRXSU5ET1dPUkdFWCxFTVJTRVRCUlVTSE9SR0VYLCpQRU1SU0VUQlJVU0hPUkdFWDsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0VNUlNFVFdPUkxEVFJBTlNGT1JNIHsNCiAgICAgICAgRU1SIGVtcjsNCiAg
ICAgICAgWEZPUk0geGZvcm07DQp9IEVNUlNFVFdPUkxEVFJBTlNGT1JNLCpQRU1SU0VUV09STERU
UkFOU0ZPUk07DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTVFJFVENIQkxUIHsNCiAgICAgICAgRU1S
IGVtcjsNCiAgICAgICAgUkVDVEwgcmNsQm91bmRzOw0KICAgICAgICBMT05HIHhEZXN0Ow0KICAg
ICAgICBMT05HIHlEZXN0Ow0KICAgICAgICBMT05HIGN4RGVzdDsNCiAgICAgICAgTE9ORyBjeURl
c3Q7DQogICAgICAgIERXT1JEIGR3Um9wOw0KICAgICAgICBMT05HIHhTcmM7DQogICAgICAgIExP
TkcgeVNyYzsNCiAgICAgICAgWEZPUk0geGZvcm1TcmM7DQogICAgICAgIENPTE9SUkVGIGNyQmtD
b2xvclNyYzsNCiAgICAgICAgRFdPUkQgaVVzYWdlU3JjOw0KICAgICAgICBEV09SRCBvZmZCbWlT
cmM7DQogICAgICAgIERXT1JEIGNiQm1pU3JjOw0KICAgICAgICBEV09SRCBvZmZCaXRzU3JjOw0K
ICAgICAgICBEV09SRCBjYkJpdHNTcmM7DQogICAgICAgIExPTkcgY3hTcmM7DQogICAgICAgIExP
TkcgY3lTcmM7DQp9IEVNUlNUUkVUQ0hCTFQsKlBFTVJTVFJFVENIQkxUOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnRU1SU1RSRVRDSERJQklUUyB7DQogICAgICAgIEVNUiBlbXI7DQogICAgICAgIFJFQ1RM
IHJjbEJvdW5kczsNCiAgICAgICAgTE9ORyB4RGVzdDsNCiAgICAgICAgTE9ORyB5RGVzdDsNCiAg
ICAgICAgTE9ORyB4U3JjOw0KICAgICAgICBMT05HIHlTcmM7DQogICAgICAgIExPTkcgY3hTcmM7
DQogICAgICAgIExPTkcgY3lTcmM7DQogICAgICAgIERXT1JEIG9mZkJtaVNyYzsNCiAgICAgICAg
RFdPUkQgY2JCbWlTcmM7DQogICAgICAgIERXT1JEIG9mZkJpdHNTcmM7DQogICAgICAgIERXT1JE
IGNiQml0c1NyYzsNCiAgICAgICAgRFdPUkQgaVVzYWdlU3JjOw0KICAgICAgICBEV09SRCBkd1Jv
cDsNCiAgICAgICAgTE9ORyBjeERlc3Q7DQogICAgICAgIExPTkcgY3lEZXN0Ow0KfSBFTVJTVFJF
VENIRElCSVRTLCpQRU1SU1RSRVRDSERJQklUUzsNCnR5cGVkZWYgc3RydWN0IHRhZ0FCT1JUUEFU
SCB7DQogICAgICAgIEVNUiBlbXI7DQp9IEVNUkFCT1JUUEFUSCwqUEVNUkFCT1JUUEFUSCxFTVJC
RUdJTlBBVEgsKlBFTVJCRUdJTlBBVEgsRU1SRU5EUEFUSCwqUEVNUkVORFBBVEgsRU1SQ0xPU0VG
SUdVUkUsKlBFTVJDTE9TRUZJR1VSRSxFTVJGTEFUVEVOUEFUSCwqUEVNUkZMQVRURU5QQVRILEVN
UldJREVOUEFUSCwqUEVNUldJREVOUEFUSCxFTVJTRVRNRVRBUkdOLCpQRU1SU0VUTUVUQVJHTixF
TVJTQVZFREMsKlBFTVJTQVZFREMsRU1SUkVBTElaRVBBTEVUVEUsKlBFTVJSRUFMSVpFUEFMRVRU
RTsNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFTEVDVENMSVBQQVRIIHsNCiAgICAgICAgRU1SIGVt
cjsNCiAgICAgICAgRFdPUkQgaU1vZGU7DQp9IEVNUlNFTEVDVENMSVBQQVRILCpQRU1SU0VMRUNU
Q0xJUFBBVEgsRU1SU0VUQktNT0RFLCpQRU1SU0VUQktNT0RFLEVNUlNFVE1BUE1PREUsKlBFTVJT
RVRNQVBNT0RFLEVNUlNFVFBPTFlGSUxMTU9ERSwqUEVNUlNFVFBPTFlGSUxMTU9ERSxFTVJTRVRS
T1AyLCpQRU1SU0VUUk9QMixFTVJTRVRTVFJFVENIQkxUTU9ERSwqUEVNUlNFVFNUUkVUQ0hCTFRN
T0RFLEVNUlNFVFRFWFRBTElHTiwqUEVNUlNFVFRFWFRBTElHTixFTVJFTkFCTEVJQ00sKlBFTVJF
TkFCTEVJQ007DQojcHJhZ21hIHBhY2socHVzaCwyKQ0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQUhF
QURFUiB7DQogICAgICAgIFdPUkQgbXRUeXBlOw0KICAgICAgICBXT1JEIG10SGVhZGVyU2l6ZTsN
CiAgICAgICAgV09SRCBtdFZlcnNpb247DQogICAgICAgIERXT1JEIG10U2l6ZTsNCiAgICAgICAg
V09SRCBtdE5vT2JqZWN0czsNCiAgICAgICAgRFdPUkQgbXRNYXhSZWNvcmQ7DQogICAgICAgIFdP
UkQgbXROb1BhcmFtZXRlcnM7DQp9IE1FVEFIRUFERVIsKlBNRVRBSEVBREVSLCpMUE1FVEFIRUFE
RVI7DQojcHJhZ21hIHBhY2socG9wKQ0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU5ITUVUQUhFQURFUiB7
DQogICAgICAgIERXT1JEIGlUeXBlOw0KICAgICAgICBEV09SRCBuU2l6ZTsNCiAgICAgICAgUkVD
VEwgcmNsQm91bmRzOw0KICAgICAgICBSRUNUTCByY2xGcmFtZTsNCiAgICAgICAgRFdPUkQgZFNp
Z25hdHVyZTsNCiAgICAgICAgRFdPUkQgblZlcnNpb247DQogICAgICAgIERXT1JEIG5CeXRlczsN
CiAgICAgICAgRFdPUkQgblJlY29yZHM7DQogICAgICAgIFdPUkQgbkhhbmRsZXM7DQogICAgICAg
IFdPUkQgc1Jlc2VydmVkOw0KICAgICAgICBEV09SRCBuRGVzY3JpcHRpb247DQogICAgICAgIERX
T1JEIG9mZkRlc2NyaXB0aW9uOw0KICAgICAgICBEV09SRCBuUGFsRW50cmllczsNCiAgICAgICAg
U0laRUwgc3psRGV2aWNlOw0KICAgICAgICBTSVpFTCBzemxNaWxsaW1ldGVyczsNCn0gRU5ITUVU
QUhFQURFUiwqTFBFTkhNRVRBSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQVJFQ09SRCB7
DQogICAgICAgIERXT1JEIHJkU2l6ZTsNCiAgICAgICAgV09SRCByZEZ1bmN0aW9uOw0KICAgICAg
ICBXT1JEIHJkUGFybVsxXTsNCn0gTUVUQVJFQ09SRCwqUE1FVEFSRUNPUkQsKkxQTUVUQVJFQ09S
RDsNCnR5cGVkZWYgc3RydWN0IHRhZ0VOSE1FVEFSRUNPUkQgew0KICAgICAgICBEV09SRCBpVHlw
ZTsNCiAgICAgICAgRFdPUkQgblNpemU7DQogICAgICAgIERXT1JEIGRQYXJtWzFdOw0KfSBFTkhN
RVRBUkVDT1JELCpMUEVOSE1FVEFSRUNPUkQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdIQU5ETEVUQUJM
RSB7DQogICAgICAgIEhHRElPQkogb2JqZWN0SGFuZGxlWzFdOw0KfSBIQU5ETEVUQUJMRSwqTFBI
QU5ETEVUQUJMRTsNCnR5cGVkZWYgc3RydWN0IHRhZ1RFWFRNRVRSSUNBIHsNCiAgICAgICAgTE9O
RyB0bUhlaWdodDsNCiAgICAgICAgTE9ORyB0bUFzY2VudDsNCiAgICAgICAgTE9ORyB0bURlc2Nl
bnQ7DQogICAgICAgIExPTkcgdG1JbnRlcm5hbExlYWRpbmc7DQogICAgICAgIExPTkcgdG1FeHRl
cm5hbExlYWRpbmc7DQogICAgICAgIExPTkcgdG1BdmVDaGFyV2lkdGg7DQogICAgICAgIExPTkcg
dG1NYXhDaGFyV2lkdGg7DQogICAgICAgIExPTkcgdG1XZWlnaHQ7DQogICAgICAgIExPTkcgdG1P
dmVyaGFuZzsNCiAgICAgICAgTE9ORyB0bURpZ2l0aXplZEFzcGVjdFg7DQogICAgICAgIExPTkcg
dG1EaWdpdGl6ZWRBc3BlY3RZOw0KICAgICAgICBCWVRFIHRtRmlyc3RDaGFyOw0KICAgICAgICBC
WVRFIHRtTGFzdENoYXI7DQogICAgICAgIEJZVEUgdG1EZWZhdWx0Q2hhcjsNCiAgICAgICAgQllU
RSB0bUJyZWFrQ2hhcjsNCiAgICAgICAgQllURSB0bUl0YWxpYzsNCiAgICAgICAgQllURSB0bVVu
ZGVybGluZWQ7DQogICAgICAgIEJZVEUgdG1TdHJ1Y2tPdXQ7DQogICAgICAgIEJZVEUgdG1QaXRj
aEFuZEZhbWlseTsNCiAgICAgICAgQllURSB0bUNoYXJTZXQ7DQp9IFRFWFRNRVRSSUNBLCpQVEVY
VE1FVFJJQ0EsKkxQVEVYVE1FVFJJQ0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdURVhUTUVUUklDVyB7
DQogICAgICAgIExPTkcgdG1IZWlnaHQ7DQogICAgICAgIExPTkcgdG1Bc2NlbnQ7DQogICAgICAg
IExPTkcgdG1EZXNjZW50Ow0KICAgICAgICBMT05HIHRtSW50ZXJuYWxMZWFkaW5nOw0KICAgICAg
ICBMT05HIHRtRXh0ZXJuYWxMZWFkaW5nOw0KICAgICAgICBMT05HIHRtQXZlQ2hhcldpZHRoOw0K
ICAgICAgICBMT05HIHRtTWF4Q2hhcldpZHRoOw0KICAgICAgICBMT05HIHRtV2VpZ2h0Ow0KICAg
ICAgICBMT05HIHRtT3Zlcmhhbmc7DQogICAgICAgIExPTkcgdG1EaWdpdGl6ZWRBc3BlY3RYOw0K
ICAgICAgICBMT05HIHRtRGlnaXRpemVkQXNwZWN0WTsNCiAgICAgICAgV0NIQVIgdG1GaXJzdENo
YXI7DQogICAgICAgIFdDSEFSIHRtTGFzdENoYXI7DQogICAgICAgIFdDSEFSIHRtRGVmYXVsdENo
YXI7DQogICAgICAgIFdDSEFSIHRtQnJlYWtDaGFyOw0KICAgICAgICBCWVRFIHRtSXRhbGljOw0K
ICAgICAgICBCWVRFIHRtVW5kZXJsaW5lZDsNCiAgICAgICAgQllURSB0bVN0cnVja091dDsNCiAg
ICAgICAgQllURSB0bVBpdGNoQW5kRmFtaWx5Ow0KICAgICAgICBCWVRFIHRtQ2hhclNldDsNCn0g
VEVYVE1FVFJJQ1csKlBURVhUTUVUUklDVywqTFBURVhUTUVUUklDVzsNCnR5cGVkZWYgc3RydWN0
IF9SR05EQVRBSEVBREVSIHsNCiAgICAgICAgRFdPUkQgZHdTaXplOw0KICAgICAgICBEV09SRCBp
VHlwZTsNCiAgICAgICAgRFdPUkQgbkNvdW50Ow0KICAgICAgICBEV09SRCBuUmduU2l6ZTsNCiAg
ICAgICAgUkVDVCByY0JvdW5kOw0KfSBSR05EQVRBSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgX1JH
TkRBVEEgew0KICAgICAgICBSR05EQVRBSEVBREVSIHJkaDsNCiAgICAgICAgY2hhciBCdWZmZXJb
MV07DQp9IFJHTkRBVEEsKkxQUkdOREFUQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0dDUF9SRVNVTFRT
QSB7DQogICAgICAgIERXT1JEIGxTdHJ1Y3RTaXplOw0KICAgICAgICBMUFNUUiBscE91dFN0cmlu
ZzsNCiAgICAgICAgVUlOVCAqbHBPcmRlcjsNCiAgICAgICAgSU5UICpscER4Ow0KICAgICAgICBJ
TlQgKmxwQ2FyZXRQb3M7DQogICAgICAgIExQU1RSIGxwQ2xhc3M7DQogICAgICAgIFVJTlQgKmxw
R2x5cGhzOw0KICAgICAgICBVSU5UIG5HbHlwaHM7DQogICAgICAgIFVJTlQgbk1heEZpdDsNCn0g
R0NQX1JFU1VMVFNBLCpMUEdDUF9SRVNVTFRTQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0dDUF9SRVNV
TFRTVyB7DQogICAgICAgIERXT1JEIGxTdHJ1Y3RTaXplOw0KICAgICAgICBMUFdTVFIgbHBPdXRT
dHJpbmc7DQogICAgICAgIFVJTlQgKmxwT3JkZXI7DQogICAgICAgIElOVCAqbHBEeDsNCiAgICAg
ICAgSU5UICpscENhcmV0UG9zOw0KICAgICAgICBMUFdTVFIgbHBDbGFzczsNCiAgICAgICAgVUlO
VCAqbHBHbHlwaHM7DQogICAgICAgIFVJTlQgbkdseXBoczsNCiAgICAgICAgVUlOVCBuTWF4Rml0
Ow0KfSBHQ1BfUkVTVUxUU1csKkxQR0NQX1JFU1VMVFNXOw0KdHlwZWRlZiBzdHJ1Y3QgX0dMWVBI
TUVUUklDUyB7DQogICAgICAgIFVJTlQgZ21CbGFja0JveFg7DQogICAgICAgIFVJTlQgZ21CbGFj
a0JveFk7DQogICAgICAgIFBPSU5UIGdtcHRHbHlwaE9yaWdpbjsNCiAgICAgICAgc2hvcnQgZ21D
ZWxsSW5jWDsNCiAgICAgICAgc2hvcnQgZ21DZWxsSW5jWTsNCn0gR0xZUEhNRVRSSUNTLCpMUEdM
WVBITUVUUklDUzsNCnR5cGVkZWYgc3RydWN0IHRhZ0tFUk5JTkdQQUlSIHsNCiAgICAgICAgV09S
RCB3Rmlyc3Q7DQogICAgICAgIFdPUkQgd1NlY29uZDsNCiAgICAgICAgaW50IGlLZXJuQW1vdW50
Ow0KfSBLRVJOSU5HUEFJUiwqTFBLRVJOSU5HUEFJUjsNCnR5cGVkZWYgc3RydWN0IF9GSVhFRCB7
DQogICAgICAgIFdPUkQgZnJhY3Q7DQogICAgICAgIHNob3J0IHZhbHVlOw0KfSBGSVhFRDsNCnR5
cGVkZWYgc3RydWN0IF9NQVQyIHsNCiAgICAgICAgRklYRUQgZU0xMTsNCiAgICAgICAgRklYRUQg
ZU0xMjsNCiAgICAgICAgRklYRUQgZU0yMTsNCiAgICAgICAgRklYRUQgZU0yMjsNCn0gTUFUMiwq
TFBNQVQyOw0KdHlwZWRlZiBzdHJ1Y3QgX09VVExJTkVURVhUTUVUUklDQSB7DQogICAgICAgIFVJ
TlQgb3RtU2l6ZTsNCiAgICAgICAgVEVYVE1FVFJJQ0Egb3RtVGV4dE1ldHJpY3M7DQogICAgICAg
IEJZVEUgb3RtRmlsbGVyOw0KICAgICAgICBQQU5PU0Ugb3RtUGFub3NlTnVtYmVyOw0KICAgICAg
ICBVSU5UIG90bWZzU2VsZWN0aW9uOw0KICAgICAgICBVSU5UIG90bWZzVHlwZTsNCiAgICAgICAg
aW50IG90bXNDaGFyU2xvcGVSaXNlOw0KICAgICAgICBpbnQgb3Rtc0NoYXJTbG9wZVJ1bjsNCiAg
ICAgICAgaW50IG90bUl0YWxpY0FuZ2xlOw0KICAgICAgICBVSU5UIG90bUVNU3F1YXJlOw0KICAg
ICAgICBpbnQgb3RtQXNjZW50Ow0KICAgICAgICBpbnQgb3RtRGVzY2VudDsNCiAgICAgICAgVUlO
VCBvdG1MaW5lR2FwOw0KICAgICAgICBVSU5UIG90bXNDYXBFbUhlaWdodDsNCiAgICAgICAgVUlO
VCBvdG1zWEhlaWdodDsNCiAgICAgICAgUkVDVCBvdG1yY0ZvbnRCb3g7DQogICAgICAgIGludCBv
dG1NYWNBc2NlbnQ7DQogICAgICAgIGludCBvdG1NYWNEZXNjZW50Ow0KICAgICAgICBVSU5UIG90
bU1hY0xpbmVHYXA7DQogICAgICAgIFVJTlQgb3RtdXNNaW5pbXVtUFBFTTsNCiAgICAgICAgUE9J
TlQgb3RtcHRTdWJzY3JpcHRTaXplOw0KICAgICAgICBQT0lOVCBvdG1wdFN1YnNjcmlwdE9mZnNl
dDsNCiAgICAgICAgUE9JTlQgb3RtcHRTdXBlcnNjcmlwdFNpemU7DQogICAgICAgIFBPSU5UIG90
bXB0U3VwZXJzY3JpcHRPZmZzZXQ7DQogICAgICAgIFVJTlQgb3Rtc1N0cmlrZW91dFNpemU7DQog
ICAgICAgIGludCBvdG1zU3RyaWtlb3V0UG9zaXRpb247DQogICAgICAgIGludCBvdG1zVW5kZXJz
Y29yZVNpemU7DQogICAgICAgIGludCBvdG1zVW5kZXJzY29yZVBvc2l0aW9uOw0KICAgICAgICBQ
U1RSIG90bXBGYW1pbHlOYW1lOw0KICAgICAgICBQU1RSIG90bXBGYWNlTmFtZTsNCiAgICAgICAg
UFNUUiBvdG1wU3R5bGVOYW1lOw0KICAgICAgICBQU1RSIG90bXBGdWxsTmFtZTsNCn0gT1VUTElO
RVRFWFRNRVRSSUNBLCpQT1VUTElORVRFWFRNRVRSSUNBLCpMUE9VVExJTkVURVhUTUVUUklDQTsN
CnR5cGVkZWYgc3RydWN0IF9PVVRMSU5FVEVYVE1FVFJJQ1cgew0KICAgICAgICBVSU5UIG90bVNp
emU7DQogICAgICAgIFRFWFRNRVRSSUNXIG90bVRleHRNZXRyaWNzOw0KICAgICAgICBCWVRFIG90
bUZpbGxlcjsNCiAgICAgICAgUEFOT1NFIG90bVBhbm9zZU51bWJlcjsNCiAgICAgICAgVUlOVCBv
dG1mc1NlbGVjdGlvbjsNCiAgICAgICAgVUlOVCBvdG1mc1R5cGU7DQogICAgICAgIGludCBvdG1z
Q2hhclNsb3BlUmlzZTsNCiAgICAgICAgaW50IG90bXNDaGFyU2xvcGVSdW47DQogICAgICAgIGlu
dCBvdG1JdGFsaWNBbmdsZTsNCiAgICAgICAgVUlOVCBvdG1FTVNxdWFyZTsNCiAgICAgICAgaW50
IG90bUFzY2VudDsNCiAgICAgICAgaW50IG90bURlc2NlbnQ7DQogICAgICAgIFVJTlQgb3RtTGlu
ZUdhcDsNCiAgICAgICAgVUlOVCBvdG1zQ2FwRW1IZWlnaHQ7DQogICAgICAgIFVJTlQgb3Rtc1hI
ZWlnaHQ7DQogICAgICAgIFJFQ1Qgb3RtcmNGb250Qm94Ow0KICAgICAgICBpbnQgb3RtTWFjQXNj
ZW50Ow0KICAgICAgICBpbnQgb3RtTWFjRGVzY2VudDsNCiAgICAgICAgVUlOVCBvdG1NYWNMaW5l
R2FwOw0KICAgICAgICBVSU5UIG90bXVzTWluaW11bVBQRU07DQogICAgICAgIFBPSU5UIG90bXB0
U3Vic2NyaXB0U2l6ZTsNCiAgICAgICAgUE9JTlQgb3RtcHRTdWJzY3JpcHRPZmZzZXQ7DQogICAg
ICAgIFBPSU5UIG90bXB0U3VwZXJzY3JpcHRTaXplOw0KICAgICAgICBQT0lOVCBvdG1wdFN1cGVy
c2NyaXB0T2Zmc2V0Ow0KICAgICAgICBVSU5UIG90bXNTdHJpa2VvdXRTaXplOw0KICAgICAgICBp
bnQgb3Rtc1N0cmlrZW91dFBvc2l0aW9uOw0KICAgICAgICBpbnQgb3Rtc1VuZGVyc2NvcmVTaXpl
Ow0KICAgICAgICBpbnQgb3Rtc1VuZGVyc2NvcmVQb3NpdGlvbjsNCiAgICAgICAgUFNUUiBvdG1w
RmFtaWx5TmFtZTsNCiAgICAgICAgUFNUUiBvdG1wRmFjZU5hbWU7DQogICAgICAgIFBTVFIgb3Rt
cFN0eWxlTmFtZTsNCiAgICAgICAgUFNUUiBvdG1wRnVsbE5hbWU7DQp9IE9VVExJTkVURVhUTUVU
UklDVywqUE9VVExJTkVURVhUTUVUUklDVywqTFBPVVRMSU5FVEVYVE1FVFJJQ1c7DQp0eXBlZGVm
IHN0cnVjdCBfUkFTVEVSSVpFUl9TVEFUVVMgew0KICAgICAgICBzaG9ydCBuU2l6ZTsNCiAgICAg
ICAgc2hvcnQgd0ZsYWdzOw0KICAgICAgICBzaG9ydCBuTGFuZ3VhZ2VJRDsNCn0gUkFTVEVSSVpF
Ul9TVEFUVVMsKkxQUkFTVEVSSVpFUl9TVEFUVVM7DQp0eXBlZGVmIHN0cnVjdCBfUE9MWVRFWFRB
IHsNCiAgICAgICAgaW50IHg7DQogICAgICAgIGludCB5Ow0KICAgICAgICBVSU5UIG47DQogICAg
ICAgIExQQ1NUUiBscHN0cjsNCiAgICAgICAgVUlOVCB1aUZsYWdzOw0KICAgICAgICBSRUNUIHJj
bDsNCiAgICAgICAgaW50ICpwZHg7DQp9IFBPTFlURVhUQTsNCnR5cGVkZWYgc3RydWN0IF9QT0xZ
VEVYVFcgew0KICAgICAgICBpbnQgeDsNCiAgICAgICAgaW50IHk7DQogICAgICAgIFVJTlQgbjsN
CiAgICAgICAgTFBDV1NUUiBscHN0cjsNCiAgICAgICAgVUlOVCB1aUZsYWdzOw0KICAgICAgICBS
RUNUIHJjbDsNCiAgICAgICAgaW50ICpwZHg7DQp9IFBPTFlURVhUVzsNCnR5cGVkZWYgc3RydWN0
IHRhZ1BJWEVMRk9STUFUREVTQ1JJUFRPUiB7DQogICAgICAgIFdPUkQgblNpemU7DQogICAgICAg
IFdPUkQgblZlcnNpb247DQogICAgICAgIERXT1JEIGR3RmxhZ3M7DQogICAgICAgIEJZVEUgaVBp
eGVsVHlwZTsNCiAgICAgICAgQllURSBjQ29sb3JCaXRzOw0KICAgICAgICBCWVRFIGNSZWRCaXRz
Ow0KICAgICAgICBCWVRFIGNSZWRTaGlmdDsNCiAgICAgICAgQllURSBjR3JlZW5CaXRzOw0KICAg
ICAgICBCWVRFIGNHcmVlblNoaWZ0Ow0KICAgICAgICBCWVRFIGNCbHVlQml0czsNCiAgICAgICAg
QllURSBjQmx1ZVNoaWZ0Ow0KICAgICAgICBCWVRFIGNBbHBoYUJpdHM7DQogICAgICAgIEJZVEUg
Y0FscGhhU2hpZnQ7DQogICAgICAgIEJZVEUgY0FjY3VtQml0czsNCiAgICAgICAgQllURSBjQWNj
dW1SZWRCaXRzOw0KICAgICAgICBCWVRFIGNBY2N1bUdyZWVuQml0czsNCiAgICAgICAgQllURSBj
QWNjdW1CbHVlQml0czsNCiAgICAgICAgQllURSBjQWNjdW1BbHBoYUJpdHM7DQogICAgICAgIEJZ
VEUgY0RlcHRoQml0czsNCiAgICAgICAgQllURSBjU3RlbmNpbEJpdHM7DQogICAgICAgIEJZVEUg
Y0F1eEJ1ZmZlcnM7DQogICAgICAgIEJZVEUgaUxheWVyVHlwZTsNCiAgICAgICAgQllURSBiUmVz
ZXJ2ZWQ7DQogICAgICAgIERXT1JEIGR3TGF5ZXJNYXNrOw0KICAgICAgICBEV09SRCBkd1Zpc2li
bGVNYXNrOw0KICAgICAgICBEV09SRCBkd0RhbWFnZU1hc2s7DQp9IFBJWEVMRk9STUFUREVTQ1JJ
UFRPUiwqUFBJWEVMRk9STUFUREVTQ1JJUFRPUiwqTFBQSVhFTEZPUk1BVERFU0NSSVBUT1I7DQp0
eXBlZGVmIHN0cnVjdCB0YWdNRVRBRklMRVBJQ1Qgew0KICAgICAgICBMT05HIG1tOw0KICAgICAg
ICBMT05HIHhFeHQ7DQogICAgICAgIExPTkcgeUV4dDsNCiAgICAgICAgSE1FVEFGSUxFIGhNRjsN
Cn0gTUVUQUZJTEVQSUNULCpMUE1FVEFGSUxFUElDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0xPQ0FM
RVNJR05BVFVSRSB7DQogICAgICAgIERXT1JEIGxzVXNiWzRdOw0KICAgICAgICBEV09SRCBsc0Nz
YkRlZmF1bHRbMl07DQogICAgICAgIERXT1JEIGxzQ3NiU3VwcG9ydGVkWzJdOw0KfSBMT0NBTEVT
SUdOQVRVUkUsKlBMT0NBTEVTSUdOQVRVUkUsKkxQTE9DQUxFU0lHTkFUVVJFOw0KdHlwZWRlZiBM
T05HIExDU1RZUEU7DQojcHJhZ21hIHBhY2socHVzaCw0KQ0KdHlwZWRlZiBzdHJ1Y3QgdGFnTkVX
VEVYVE1FVFJJQ0Egew0KICAgICAgICBMT05HIHRtSGVpZ2h0Ow0KICAgICAgICBMT05HIHRtQXNj
ZW50Ow0KICAgICAgICBMT05HIHRtRGVzY2VudDsNCiAgICAgICAgTE9ORyB0bUludGVybmFsTGVh
ZGluZzsNCiAgICAgICAgTE9ORyB0bUV4dGVybmFsTGVhZGluZzsNCiAgICAgICAgTE9ORyB0bUF2
ZUNoYXJXaWR0aDsNCiAgICAgICAgTE9ORyB0bU1heENoYXJXaWR0aDsNCiAgICAgICAgTE9ORyB0
bVdlaWdodDsNCiAgICAgICAgTE9ORyB0bU92ZXJoYW5nOw0KICAgICAgICBMT05HIHRtRGlnaXRp
emVkQXNwZWN0WDsNCiAgICAgICAgTE9ORyB0bURpZ2l0aXplZEFzcGVjdFk7DQogICAgICAgIEJZ
VEUgdG1GaXJzdENoYXI7DQogICAgICAgIEJZVEUgdG1MYXN0Q2hhcjsNCiAgICAgICAgQllURSB0
bURlZmF1bHRDaGFyOw0KICAgICAgICBCWVRFIHRtQnJlYWtDaGFyOw0KICAgICAgICBCWVRFIHRt
SXRhbGljOw0KICAgICAgICBCWVRFIHRtVW5kZXJsaW5lZDsNCiAgICAgICAgQllURSB0bVN0cnVj
a091dDsNCiAgICAgICAgQllURSB0bVBpdGNoQW5kRmFtaWx5Ow0KICAgICAgICBCWVRFIHRtQ2hh
clNldDsNCiAgICAgICAgRFdPUkQgbnRtRmxhZ3M7DQogICAgICAgIFVJTlQgbnRtU2l6ZUVNOw0K
ICAgICAgICBVSU5UIG50bUNlbGxIZWlnaHQ7DQogICAgICAgIFVJTlQgbnRtQXZnV2lkdGg7DQp9
IE5FV1RFWFRNRVRSSUNBLCpQTkVXVEVYVE1FVFJJQ0EsKkxQTkVXVEVYVE1FVFJJQ0E7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdORVdURVhUTUVUUklDVyB7DQogICAgICAgIExPTkcgdG1IZWlnaHQ7DQog
ICAgICAgIExPTkcgdG1Bc2NlbnQ7DQogICAgICAgIExPTkcgdG1EZXNjZW50Ow0KICAgICAgICBM
T05HIHRtSW50ZXJuYWxMZWFkaW5nOw0KICAgICAgICBMT05HIHRtRXh0ZXJuYWxMZWFkaW5nOw0K
ICAgICAgICBMT05HIHRtQXZlQ2hhcldpZHRoOw0KICAgICAgICBMT05HIHRtTWF4Q2hhcldpZHRo
Ow0KICAgICAgICBMT05HIHRtV2VpZ2h0Ow0KICAgICAgICBMT05HIHRtT3Zlcmhhbmc7DQogICAg
ICAgIExPTkcgdG1EaWdpdGl6ZWRBc3BlY3RYOw0KICAgICAgICBMT05HIHRtRGlnaXRpemVkQXNw
ZWN0WTsNCiAgICAgICAgV0NIQVIgdG1GaXJzdENoYXI7DQogICAgICAgIFdDSEFSIHRtTGFzdENo
YXI7DQogICAgICAgIFdDSEFSIHRtRGVmYXVsdENoYXI7DQogICAgICAgIFdDSEFSIHRtQnJlYWtD
aGFyOw0KICAgICAgICBCWVRFIHRtSXRhbGljOw0KICAgICAgICBCWVRFIHRtVW5kZXJsaW5lZDsN
CiAgICAgICAgQllURSB0bVN0cnVja091dDsNCiAgICAgICAgQllURSB0bVBpdGNoQW5kRmFtaWx5
Ow0KICAgICAgICBCWVRFIHRtQ2hhclNldDsNCiAgICAgICAgRFdPUkQgbnRtRmxhZ3M7DQogICAg
ICAgIFVJTlQgbnRtU2l6ZUVNOw0KICAgICAgICBVSU5UIG50bUNlbGxIZWlnaHQ7DQogICAgICAg
IFVJTlQgbnRtQXZnV2lkdGg7DQp9IE5FV1RFWFRNRVRSSUNXLCpQTkVXVEVYVE1FVFJJQ1csKkxQ
TkVXVEVYVE1FVFJJQ1c7DQojcHJhZ21hIHBhY2socG9wKQ0KdHlwZWRlZiBzdHJ1Y3QgdGFnTkVX
VEVYVE1FVFJJQ0VYQSB7DQogICAgICAgIE5FV1RFWFRNRVRSSUNBIG50bVRtOw0KICAgICAgICBG
T05UU0lHTkFUVVJFIG50bUZvbnRTaWc7DQp9IE5FV1RFWFRNRVRSSUNFWEE7DQp0eXBlZGVmIHN0
cnVjdCB0YWdORVdURVhUTUVUUklDRVhXIHsNCiAgICAgICAgTkVXVEVYVE1FVFJJQ1cgbnRtVG07
DQogICAgICAgIEZPTlRTSUdOQVRVUkUgbnRtRm9udFNpZzsNCn0gTkVXVEVYVE1FVFJJQ0VYVzsN
CnR5cGVkZWYgc3RydWN0IHRhZ1BFTEFSUkFZIHsNCiAgICAgICAgTE9ORyBwYVhDb3VudDsNCiAg
ICAgICAgTE9ORyBwYVlDb3VudDsNCiAgICAgICAgTE9ORyBwYVhFeHQ7DQogICAgICAgIExPTkcg
cGFZRXh0Ow0KICAgICAgICBCWVRFIHBhUkdCczsNCn0gUEVMQVJSQVksKlBQRUxBUlJBWSwqTFBQ
RUxBUlJBWTsNCnR5cGVkZWYgc3RydWN0IHRhZ0VOVU1MT0dGT05UQSB7DQogICAgICAgIExPR0ZP
TlRBIGVsZkxvZ0ZvbnQ7DQogICAgICAgIEJZVEUgZWxmRnVsbE5hbWVbNjRdOw0KICAgICAgICBC
WVRFIGVsZlN0eWxlWzMyXTsNCn0gRU5VTUxPR0ZPTlRBLCpMUEVOVU1MT0dGT05UQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0VOVU1MT0dGT05UVyB7DQogICAgICAgIExPR0ZPTlRXIGVsZkxvZ0ZvbnQ7
DQogICAgICAgIFdDSEFSIGVsZkZ1bGxOYW1lWzY0XTsNCiAgICAgICAgV0NIQVIgZWxmU3R5bGVb
MzJdOw0KfSBFTlVNTE9HRk9OVFcsKkxQRU5VTUxPR0ZPTlRXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFn
RU5VTUxPR0ZPTlRFWEEgew0KICAgICAgICBMT0dGT05UQSBlbGZMb2dGb250Ow0KICAgICAgICBC
WVRFIGVsZkZ1bGxOYW1lWzY0XTsNCiAgICAgICAgQllURSBlbGZTdHlsZVszMl07DQogICAgICAg
IEJZVEUgZWxmU2NyaXB0WzMyXTsNCn0gRU5VTUxPR0ZPTlRFWEEsKkxQRU5VTUxPR0ZPTlRFWEE7
DQp0eXBlZGVmIHN0cnVjdCB0YWdFTlVNTE9HRk9OVEVYVyB7DQogICAgICAgIExPR0ZPTlRXIGVs
ZkxvZ0ZvbnQ7DQogICAgICAgIFdDSEFSIGVsZkZ1bGxOYW1lWzY0XTsNCiAgICAgICAgQllURSBl
bGZTdHlsZVszMl07DQogICAgICAgIEJZVEUgZWxmU2NyaXB0WzMyXTsNCn0gRU5VTUxPR0ZPTlRF
WFcsKkxQRU5VTUxPR0ZPTlRFWFc7DQp0eXBlZGVmIHN0cnVjdCB0YWdQT0lOVEZYIHsNCiAgICAg
ICAgRklYRUQgeDsNCiAgICAgICAgRklYRUQgeTsNCn0gUE9JTlRGWCwqTFBQT0lOVEZYOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnVFRQT0xZQ1VSVkUgew0KICAgICAgICBXT1JEIHdUeXBlOw0KICAgICAg
ICBXT1JEIGNwZng7DQogICAgICAgIFBPSU5URlggYXBmeFsxXTsNCn0gVFRQT0xZQ1VSVkUsKkxQ
VFRQT0xZQ1VSVkU7DQp0eXBlZGVmIHN0cnVjdCB0YWdUVFBPTFlHT05IRUFERVIgew0KICAgICAg
ICBEV09SRCBjYjsNCiAgICAgICAgRFdPUkQgZHdUeXBlOw0KICAgICAgICBQT0lOVEZYIHBmeFN0
YXJ0Ow0KfSBUVFBPTFlHT05IRUFERVIsKkxQVFRQT0xZR09OSEVBREVSOw0KdHlwZWRlZiBzdHJ1
Y3QgX1BPSU5URkxPQVQgew0KICAgICAgICBGTE9BVCB4Ow0KICAgICAgICBGTE9BVCB5Ow0KfSBQ
T0lOVEZMT0FULCpQUE9JTlRGTE9BVDsNCnR5cGVkZWYgc3RydWN0IF9HTFlQSE1FVFJJQ1NGTE9B
VCB7DQogICAgICAgIEZMT0FUIGdtZkJsYWNrQm94WDsNCiAgICAgICAgRkxPQVQgZ21mQmxhY2tC
b3hZOw0KICAgICAgICBQT0lOVEZMT0FUIGdtZnB0R2x5cGhPcmlnaW47DQogICAgICAgIEZMT0FU
IGdtZkNlbGxJbmNYOw0KICAgICAgICBGTE9BVCBnbWZDZWxsSW5jWTsNCn0gR0xZUEhNRVRSSUNT
RkxPQVQsKlBHTFlQSE1FVFJJQ1NGTE9BVCwqTFBHTFlQSE1FVFJJQ1NGTE9BVDsNCnR5cGVkZWYg
c3RydWN0IHRhZ0xBWUVSUExBTkVERVNDUklQVE9SIHsNCiAgICAgICAgV09SRCBuU2l6ZTsNCiAg
ICAgICAgV09SRCBuVmVyc2lvbjsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCiAgICAgICAgQllU
RSBpUGl4ZWxUeXBlOw0KICAgICAgICBCWVRFIGNDb2xvckJpdHM7DQogICAgICAgIEJZVEUgY1Jl
ZEJpdHM7DQogICAgICAgIEJZVEUgY1JlZFNoaWZ0Ow0KICAgICAgICBCWVRFIGNHcmVlbkJpdHM7
DQogICAgICAgIEJZVEUgY0dyZWVuU2hpZnQ7DQogICAgICAgIEJZVEUgY0JsdWVCaXRzOw0KICAg
ICAgICBCWVRFIGNCbHVlU2hpZnQ7DQogICAgICAgIEJZVEUgY0FscGhhQml0czsNCiAgICAgICAg
QllURSBjQWxwaGFTaGlmdDsNCiAgICAgICAgQllURSBjQWNjdW1CaXRzOw0KICAgICAgICBCWVRF
IGNBY2N1bVJlZEJpdHM7DQogICAgICAgIEJZVEUgY0FjY3VtR3JlZW5CaXRzOw0KICAgICAgICBC
WVRFIGNBY2N1bUJsdWVCaXRzOw0KICAgICAgICBCWVRFIGNBY2N1bUFscGhhQml0czsNCiAgICAg
ICAgQllURSBjRGVwdGhCaXRzOw0KICAgICAgICBCWVRFIGNTdGVuY2lsQml0czsNCiAgICAgICAg
QllURSBjQXV4QnVmZmVyczsNCiAgICAgICAgQllURSBpTGF5ZXJQbGFuZTsNCiAgICAgICAgQllU
RSBiUmVzZXJ2ZWQ7DQogICAgICAgIENPTE9SUkVGIGNyVHJhbnNwYXJlbnQ7DQp9IExBWUVSUExB
TkVERVNDUklQVE9SLCpQTEFZRVJQTEFORURFU0NSSVBUT1IsKkxQTEFZRVJQTEFORURFU0NSSVBU
T1I7DQp0eXBlZGVmIHN0cnVjdCBfQkxFTkRGVU5DVElPTiB7DQogICAgQllURSBCbGVuZE9wOw0K
ICAgIEJZVEUgQmxlbmRGbGFnczsNCiAgICBCWVRFIFNvdXJjZUNvbnN0YW50QWxwaGE7DQogICAg
QllURSBBbHBoYUZvcm1hdDsNCn0gQkxFTkRGVU5DVElPTiwqUEJMRU5ERlVOQ1RJT04sKkxQQkxF
TkRGVU5DVElPTjsNCnR5cGVkZWYgQk9PTCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAq
QUJPUlRQUk9DKShIREMsaW50KTsNCnR5cGVkZWYgaW50IChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpICpNRkVOVU1QUk9DKShIREMsSEFORExFVEFCTEUqLE1FVEFSRUNPUkQqLGludCxMUEFS
QU0pOw0KdHlwZWRlZiBpbnQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkVOSE1GRU5V
TVBST0MpKEhEQyxIQU5ETEVUQUJMRSosRU5ITUVUQVJFQ09SRCosaW50LExQQVJBTSk7DQp0eXBl
ZGVmIGludCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqT0xERk9OVEVOVU1QUk9DQSko
Y29uc3QgTE9HRk9OVEEqLGNvbnN0IFRFWFRNRVRSSUNBKixEV09SRCxMUEFSQU0pOw0KdHlwZWRl
ZiBpbnQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKk9MREZPTlRFTlVNUFJPQ1cpKGNv
bnN0IExPR0ZPTlRXKixjb25zdCBURVhUTUVUUklDVyosRFdPUkQsTFBBUkFNKTsNCnR5cGVkZWYg
T0xERk9OVEVOVU1QUk9DQSBGT05URU5VTVBST0NBOw0KdHlwZWRlZiBPTERGT05URU5VTVBST0NX
IEZPTlRFTlVNUFJPQ1c7DQp0eXBlZGVmIGludCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSAqSUNNRU5VTVBST0NBKShMUFNUUixMUEFSQU0pOw0KdHlwZWRlZiBpbnQgKF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgKklDTUVOVU1QUk9DVykoTFBXU1RSLExQQVJBTSk7DQp0eXBlZGVm
IHZvaWQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkdPQkpFTlVNUFJPQykoTFBWT0lE
LExQQVJBTSk7DQp0eXBlZGVmIHZvaWQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkxJ
TkVEREFQUk9DKShpbnQsaW50LExQQVJBTSk7DQp0eXBlZGVmIFVJTlQgKF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgKkxQRk5ERVZNT0RFKShIV05ELEhNT0RVTEUsTFBERVZNT0RFQSxMUFNU
UixMUFNUUixMUERFVk1PREVBLExQU1RSLFVJTlQpOw0KdHlwZWRlZiBEV09SRCAoX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSAqTFBGTkRFVkNBUFMpKExQU1RSLExQU1RSLFVJTlQsTFBTVFIs
TFBERVZNT0RFQSk7DQoNCg0KDQoNCg0KDQoNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEFib3J0RG9jKEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWJv
cnRQYXRoKEhEQyk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRGb250UmVz
b3VyY2VBKExQQ1NUUik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRGb250
UmVzb3VyY2VXKExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFu
Z2xlQXJjKEhEQyxpbnQsaW50LERXT1JELEZMT0FULEZMT0FUKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBBbmltYXRlUGFsZXR0ZShIUEFMRVRURSxVSU5ULFVJTlQsY29uc3Qg
UEFMRVRURUVOVFJZKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQXJjKEhE
QyxpbnQsaW50LGludCxpbnQsaW50LGludCxpbnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBBcmNUbyhIREMsaW50LGludCxpbnQsaW50LGludCxpbnQsaW50LGludCk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQmVnaW5QYXRoKEhEQyk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQml0Qmx0KEhEQyxpbnQsaW50LGludCxpbnQs
SERDLGludCxpbnQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENh
bmNlbERDKEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hlY2tDb2xv
cnNJbkdhbXV0KEhEQyxQVk9JRCxQVk9JRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgQ2hvcmQoSERDLGludCxpbnQsaW50LGludCxpbnQsaW50LGludCxpbnQpOw0K
aW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hvb3NlUGl4ZWxGb3JtYXQoSERDLGNv
bnN0IFBJWEVMRk9STUFUREVTQ1JJUFRPUiopOw0KSEVOSE1FVEFGSUxFIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ2xvc2VFbmhNZXRhRmlsZShIREMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIENsb3NlRmlndXJlKEhEQyk7DQpITUVUQUZJTEUgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBDbG9zZU1ldGFGaWxlKEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ29sb3JNYXRjaFRvVGFyZ2V0KEhEQyxIREMsRFdPUkQpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29tYmluZVJnbihIUkdOLEhSR04sSFJHTixpbnQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvbWJpbmVUcmFuc2Zvcm0oTFBY
Rk9STSxjb25zdCBYRk9STSosY29uc3QgWEZPUk0qKTsNCkhFTkhNRVRBRklMRSBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIENvcHlFbmhNZXRhRmlsZUEoSEVOSE1FVEFGSUxFLExQQ1NUUik7
DQpIRU5ITUVUQUZJTEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3B5RW5oTWV0YUZp
bGVXKEhFTkhNRVRBRklMRSxMUENXU1RSKTsNCkhNRVRBRklMRSBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIENvcHlNZXRhRmlsZUEoSE1FVEFGSUxFLExQQ1NUUik7DQpITUVUQUZJTEUgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3B5TWV0YUZpbGVXKEhNRVRBRklMRSxMUENXU1RS
KTsNCkhCSVRNQVAgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVCaXRtYXAoaW50
LGludCxVSU5ULFVJTlQsUENWT0lEKTsNCkhCSVRNQVAgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDcmVhdGVCaXRtYXBJbmRpcmVjdChjb25zdCBCSVRNQVAqKTsNCkhCUlVTSCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUJydXNoSW5kaXJlY3QoY29uc3QgTE9HQlJVU0gq
KTsNCkhDT0xPUlNQQUNFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlQ29sb3JT
cGFjZUEoTFBMT0dDT0xPUlNQQUNFQSk7DQpIQ09MT1JTUEFDRSBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIENyZWF0ZUNvbG9yU3BhY2VXKExQTE9HQ09MT1JTUEFDRVcpOw0KSEJJVE1BUCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUNvbXBhdGlibGVCaXRtYXAoSERDLGlu
dCxpbnQpOw0KSERDIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlQ29tcGF0aWJs
ZURDKEhEQyk7DQpIREMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVEQ0EoTFBD
U1RSLExQQ1NUUixMUENTVFIsY29uc3QgREVWTU9ERUEqKTsNCkhEQyBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIENyZWF0ZURDVyhMUENXU1RSLExQQ1dTVFIsTFBDV1NUUixjb25zdCBERVZN
T0RFVyopOw0KSEJJVE1BUCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZURJQml0
bWFwKEhEQyxjb25zdCBCSVRNQVBJTkZPSEVBREVSKixEV09SRCxQQ1ZPSUQsY29uc3QgQklUTUFQ
SU5GTyosVUlOVCk7DQpIQlJVU0ggX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVE
SUJQYXR0ZXJuQnJ1c2goSEdMT0JBTCxVSU5UKTsNCkhCUlVTSCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0KFBDVk9JRCxVSU5UKTsNCkhCSVRNQVAg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVESUJTZWN0aW9uKEhEQyxjb25zdCBC
SVRNQVBJTkZPKixVSU5ULHZvaWQqKixIQU5ETEUsRFdPUkQpOw0KSEJJVE1BUCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZURpc2NhcmRhYmxlQml0bWFwKEhEQyxpbnQsaW50KTsN
CkhSR04gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVFbGxpcHRpY1JnbihpbnQs
aW50LGludCxpbnQpOw0KSFJHTiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUVs
bGlwdGljUmduSW5kaXJlY3QoTFBDUkVDVCk7DQpIREMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDcmVhdGVFbmhNZXRhRmlsZUEoSERDLExQQ1NUUixMUENSRUNULExQQ1NUUik7DQpIREMg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVFbmhNZXRhRmlsZVcoSERDLExQQ1dT
VFIsTFBDUkVDVCxMUENXU1RSKTsNCkhGT05UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
Q3JlYXRlRm9udEEoaW50LGludCxpbnQsaW50LGludCxEV09SRCxEV09SRCxEV09SRCxEV09SRCxE
V09SRCxEV09SRCxEV09SRCxEV09SRCxMUENTVFIpOw0KSEZPTlQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDcmVhdGVGb250VyhpbnQsaW50LGludCxpbnQsaW50LERXT1JELERXT1JELERX
T1JELERXT1JELERXT1JELERXT1JELERXT1JELERXT1JELExQQ1dTVFIpOw0KSEZPTlQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVGb250SW5kaXJlY3RBKGNvbnN0IExPR0ZPTlRB
Kik7DQpIRk9OVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUZvbnRJbmRpcmVj
dFcoY29uc3QgTE9HRk9OVFcqKTsNCkhQQUxFVFRFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgQ3JlYXRlSGFsZnRvbmVQYWxldHRlKEhEQyk7DQpIQlJVU0ggX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDcmVhdGVIYXRjaEJydXNoKGludCxDT0xPUlJFRik7DQpIREMgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVJQ0EoTFBDU1RSLExQQ1NUUixMUENTVFIsY29uc3Qg
REVWTU9ERUEqKTsNCkhEQyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUlDVyhM
UENXU1RSLExQQ1dTVFIsTFBDV1NUUixjb25zdCBERVZNT0RFVyopOw0KSERDIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlTWV0YUZpbGVBKExQQ1NUUik7DQpIREMgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVNZXRhRmlsZVcoTFBDV1NUUik7DQpIUEFMRVRURSBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZVBhbGV0dGUoY29uc3QgTE9HUEFMRVRU
RSopOw0KSEJSVVNIIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlUGF0dGVybkJy
dXNoKEhCSVRNQVApOw0KSFBFTiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZVBl
bihpbnQsaW50LENPTE9SUkVGKTsNCkhQRU4gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBD
cmVhdGVQZW5JbmRpcmVjdChjb25zdCBMT0dQRU4qKTsNCkhSR04gX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDcmVhdGVQb2x5Z29uUmduKGNvbnN0IFBPSU5UKixpbnQsaW50KTsNCkhSR04g
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVQb2x5UG9seWdvblJnbihjb25zdCBQ
T0lOVCosY29uc3QgSU5UKixpbnQsaW50KTsNCkhSR04gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDcmVhdGVSZWN0UmduKGludCxpbnQsaW50LGludCk7DQpIUkdOIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ3JlYXRlUmVjdFJnbkluZGlyZWN0KExQQ1JFQ1QpOw0KSFJHTiBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZVJvdW5kUmVjdFJnbihpbnQsaW50LGludCxp
bnQsaW50LGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlU2Nh
bGFibGVGb250UmVzb3VyY2VBKERXT1JELExQQ1NUUixMUENTVFIsTFBDU1RSKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVTY2FsYWJsZUZvbnRSZXNvdXJjZVcoRFdP
UkQsTFBDV1NUUixMUENXU1RSLExQQ1dTVFIpOw0KSEJSVVNIIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgQ3JlYXRlU29saWRCcnVzaChDT0xPUlJFRik7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRGVsZXRlQ29sb3JTcGFjZShIQ09MT1JTUEFDRSk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRlREMoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBEZWxldGVFbmhNZXRhRmlsZShIRU5ITUVUQUZJTEUpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZU1ldGFGaWxlKEhNRVRBRklMRSk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRlT2JqZWN0KEhHRElPQkopOw0K
aW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVzY3JpYmVQaXhlbEZvcm1hdChIREMs
aW50LFVJTlQsTFBQSVhFTEZPUk1BVERFU0NSSVBUT1IpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBEZXZpY2VDYXBhYmlsaXRpZXNBKExQQ1NUUixMUENTVFIsV09SRCxMUFNU
Uixjb25zdCBERVZNT0RFQSopOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBE
ZXZpY2VDYXBhYmlsaXRpZXNXKExQQ1dTVFIsTFBDV1NUUixXT1JELExQV1NUUixjb25zdCBERVZN
T0RFVyopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERQdG9MUChIREMsTFBQ
T0lOVCxpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd0VzY2FwZShI
REMsaW50LGludCxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVs
bGlwc2UoSERDLGludCxpbnQsaW50LGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBFbmREb2MoSERDKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVuZFBh
Z2UoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbmRQYXRoKEhEQyk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bUVuaE1ldGFGaWxlKEhEQyxI
RU5ITUVUQUZJTEUsRU5ITUZFTlVNUFJPQyxQVk9JRCxMUENSRUNUKTsNCmludCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Gb250RmFtaWxpZXNBKEhEQyxMUENTVFIsRk9OVEVOVU1Q
Uk9DQSxMUEFSQU0pOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bUZvbnRG
YW1pbGllc1coSERDLExQQ1dTVFIsRk9OVEVOVU1QUk9DVyxMUEFSQU0pOw0KaW50IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bUZvbnRGYW1pbGllc0V4QShIREMsUExPR0ZPTlRBLEZP
TlRFTlVNUFJPQ0EsTFBBUkFNLERXT1JEKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEVudW1Gb250RmFtaWxpZXNFeFcoSERDLFBMT0dGT05UVyxGT05URU5VTVBST0NXLExQQVJB
TSxEV09SRCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtRm9udHNBKEhE
QyxMUENTVFIsRk9OVEVOVU1QUk9DQSxMUEFSQU0pOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgRW51bUZvbnRzVyhIREMsTFBDV1NUUixGT05URU5VTVBST0NBLExQQVJBTSk7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtSUNNUHJvZmlsZXNBKEhEQyxJQ01F
TlVNUFJPQ0EsTFBBUkFNKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1J
Q01Qcm9maWxlc1coSERDLElDTUVOVU1QUk9DVyxMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEVudW1NZXRhRmlsZShIREMsSE1FVEFGSUxFLE1GRU5VTVBST0MsTFBB
UkFNKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1PYmplY3RzKEhEQyxp
bnQsR09CSkVOVU1QUk9DLExQQVJBTSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgRXF1YWxSZ24oSFJHTixIUkdOKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEVzY2FwZShIREMsaW50LGludCxMUENTVFIsUFZPSUQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRXhjbHVkZUNsaXBSZWN0KEhEQyxpbnQsaW50LGludCxpbnQpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXhjbHVkZVVwZGF0ZVJnbihIREMsSFdORCk7DQpI
UEVOIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXh0Q3JlYXRlUGVuKERXT1JELERXT1JE
LGNvbnN0IExPR0JSVVNIKixEV09SRCxjb25zdCBEV09SRCopOw0KSFJHTiBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEV4dENyZWF0ZVJlZ2lvbihjb25zdCBYRk9STSosRFdPUkQsY29uc3Qg
UkdOREFUQSopOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXh0RXNjYXBlKEhE
QyxpbnQsaW50LExQQ1NUUixpbnQsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEV4dEZsb29kRmlsbChIREMsaW50LGludCxDT0xPUlJFRixVSU5UKTsNCmludCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEV4dFNlbGVjdENsaXBSZ24oSERDLEhSR04saW50KTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFeHRUZXh0T3V0QShIREMsaW50LGlu
dCxVSU5ULExQQ1JFQ1QsTFBDU1RSLFVJTlQsY29uc3QgSU5UKik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgRXh0VGV4dE91dFcoSERDLGludCxpbnQsVUlOVCxMUENSRUNULExQ
Q1dTVFIsVUlOVCxjb25zdCBJTlQqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBGaWxsUGF0aChIREMpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmlsbFJl
Y3QoSERDLExQQ1JFQ1QsSEJSVVNIKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEZpbGxSZ24oSERDLEhSR04sSEJSVVNIKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBGaXhCcnVzaE9yZ0V4KEhEQyxpbnQsaW50LExQUE9JTlQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEZsYXR0ZW5QYXRoKEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRmxvb2RGaWxsKEhEQyxpbnQsaW50LENPTE9SUkVGKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZGlDb21tZW50KEhEQyxVSU5ULGNvbnN0IEJZVEUq
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZGlGbHVzaCh2b2lkKTsNCkRX
T1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2RpR2V0QmF0Y2hMaW1pdCh2b2lkKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2RpU2V0QmF0Y2hMaW1pdChEV09S
RCk7DQojIDI0NzMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZ2RpLmgiIDMNCmludCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEFyY0RpcmVjdGlvbihIREMpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEFzcGVjdFJhdGlvRmlsdGVyRXgoSERDLExQ
U0laRSk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Qml0bWFwQml0cyhI
QklUTUFQLExPTkcsUFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dEJpdG1hcERpbWVuc2lvbkV4KEhCSVRNQVAsTFBTSVpFKTsNCkNPTE9SUkVGIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0QmtDb2xvcihIREMpOw0KaW50IF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0QmtNb2RlKEhEQyk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0Qm91bmRzUmVjdChIREMsTFBSRUNULFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldEJydXNoT3JnRXgoSERDLExQUE9JTlQpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENoYXJBQkNXaWR0aHNBKEhEQyxVSU5ULFVJTlQsTFBB
QkMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENoYXJBQkNXaWR0aHNX
KEhEQyxVSU5ULFVJTlQsTFBBQkMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldENoYXJBQkNXaWR0aHNGbG9hdEEoSERDLFVJTlQsVUlOVCxMUEFCQ0ZMT0FUKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDaGFyQUJDV2lkdGhzRmxvYXRXKEhEQyxV
SU5ULFVJTlQsTFBBQkNGTE9BVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldENoYXJhY3RlclBsYWNlbWVudEEoSERDLExQQ1NUUixpbnQsaW50LExQR0NQX1JFU1VMVFNB
LERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2hhcmFjdGVy
UGxhY2VtZW50VyhIREMsTFBDV1NUUixpbnQsaW50LExQR0NQX1JFU1VMVFNXLERXT1JEKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDaGFyV2lkdGgzMkEoSERDLFVJTlQs
VUlOVCxMUElOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2hhcldp
ZHRoMzJXKEhEQyxVSU5ULFVJTlQsTFBJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldENoYXJXaWR0aEEoSERDLFVJTlQsVUlOVCxMUElOVCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2hhcldpZHRoVyhIREMsVUlOVCxVSU5ULExQSU5UKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDaGFyV2lkdGhGbG9hdEEoSERD
LFVJTlQsVUlOVCxQRkxPQVQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dENoYXJXaWR0aEZsb2F0VyhIREMsVUlOVCxVSU5ULFBGTE9BVCk7DQppbnQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRDbGlwQm94KEhEQyxMUFJFQ1QpOw0KaW50IF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xpcFJnbihIREMsSFJHTik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0Q29sb3JBZGp1c3RtZW50KEhEQyxMUENPTE9SQURKVVNUTUVO
VCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDb2xvclNwYWNlKEhE
Qyk7DQpIR0RJT0JKIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q3VycmVudE9iamVj
dChIREMsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q3VycmVu
dFBvc2l0aW9uRXgoSERDLExQUE9JTlQpOw0KSENVUlNPUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldEN1cnNvcih2b2lkKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXREQ09yZ0V4KEhEQyxMUFBPSU5UKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldERldmljZUNhcHMoSERDLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0RGV2aWNlR2FtbWFSYW1wKEhEQyxQVk9JRCk7DQpVSU5UIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0RElCQ29sb3JUYWJsZShIREMsVUlOVCxVSU5ULFJHQlFVQUQqKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERJQml0cyhIREMsSEJJVE1BUCxV
SU5ULFVJTlQsUFZPSUQsTFBCSVRNQVBJTkZPLFVJTlQpOw0KSEVOSE1FVEFGSUxFIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RW5oTWV0YUZpbGVBKExQQ1NUUik7DQpIRU5ITUVUQUZJ
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRFbmhNZXRhRmlsZVcoTFBDV1NUUik7
DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RW5oTWV0YUZpbGVEZXNjcmlw
dGlvbkEoSEVOSE1FVEFGSUxFLFVJTlQsTFBTVFIpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEdldEVuaE1ldGFGaWxlRGVzY3JpcHRpb25XKEhFTkhNRVRBRklMRSxVSU5ULExQ
V1NUUik7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RW5oTWV0YUZpbGVI
ZWFkZXIoSEVOSE1FVEFGSUxFLFVJTlQsTFBFTkhNRVRBSEVBREVSKTsNClVJTlQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRFbmhNZXRhRmlsZVBhbGV0dGVFbnRyaWVzKEhFTkhNRVRB
RklMRSxVSU5ULExQUEFMRVRURUVOVFJZKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRFbmhNZXRhRmlsZVBpeGVsRm9ybWF0KEhFTkhNRVRBRklMRSxEV09SRCxQSVhFTEZP
Uk1BVERFU0NSSVBUT1IqKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
Rm9udERhdGEoSERDLERXT1JELERXT1JELFBWT0lELERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0Rm9udExhbmd1YWdlSW5mbyhIREMpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRHbHlwaE91dGxpbmVBKEhEQyxVSU5ULFVJTlQsTFBH
TFlQSE1FVFJJQ1MsRFdPUkQsUFZPSUQsY29uc3QgTUFUMiopOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRHbHlwaE91dGxpbmVXKEhEQyxVSU5ULFVJTlQsTFBHTFlQSE1F
VFJJQ1MsRFdPUkQsUFZPSUQsY29uc3QgTUFUMiopOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0R3JhcGhpY3NNb2RlKEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0SUNNUHJvZmlsZUEoSERDLERXT1JELExQU1RSKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRJQ01Qcm9maWxlVyhIREMsRFdPUkQsTFBXU1RSKTsNCkRX
T1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0S2VybmluZ1BhaXJzQShIREMsRFdP
UkQsTFBLRVJOSU5HUEFJUik7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dEtlcm5pbmdQYWlyc1coSERDLERXT1JELExQS0VSTklOR1BBSVIpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdldExvZ0NvbG9yU3BhY2VBKEhDT0xPUlNQQUNFLExQTE9HQ09M
T1JTUEFDRUEsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldExv
Z0NvbG9yU3BhY2VXKEhDT0xPUlNQQUNFLExQTE9HQ09MT1JTUEFDRVcsRFdPUkQpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWFwTW9kZShIREMpOw0KSE1FVEFGSUxFIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWV0YUZpbGVBKExQQ1NUUik7DQpITUVUQUZJ
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRNZXRhRmlsZVcoTFBDV1NUUik7DQpV
SU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWV0YUZpbGVCaXRzRXgoSE1FVEFG
SUxFLFVJTlQsUFZPSUQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWV0
YVJnbihIREMsSFJHTik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWl0
ZXJMaW1pdChIREMsUEZMT0FUKTsNCkNPTE9SUkVGIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0TmVhcmVzdENvbG9yKEhEQyxDT0xPUlJFRik7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0TmVhcmVzdFBhbGV0dGVJbmRleChIUEFMRVRURSxDT0xPUlJFRik7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRPYmplY3RBKEhHRElPQkosaW50LFBW
T0lEKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE9iamVjdFcoSEdESU9C
SixpbnQsUFZPSUQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRPYmpl
Y3RUeXBlKEhHRElPQkopOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE91
dGxpbmVUZXh0TWV0cmljc0EoSERDLFVJTlQsTFBPVVRMSU5FVEVYVE1FVFJJQ0EpOw0KVUlOVCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE91dGxpbmVUZXh0TWV0cmljc1coSERDLFVJ
TlQsTFBPVVRMSU5FVEVYVE1FVFJJQ1cpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFBhbGV0dGVFbnRyaWVzKEhQQUxFVFRFLFVJTlQsVUlOVCxMUFBBTEVUVEVFTlRSWSk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQYXRoKEhEQyxMUFBPSU5ULFBC
WVRFLGludCk7DQpDT0xPUlJFRiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFBpeGVs
KEhEQyxpbnQsaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFBpeGVs
Rm9ybWF0KEhEQyk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQb2x5Rmls
bE1vZGUoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRSYXN0ZXJp
emVyQ2FwcyhMUFJBU1RFUklaRVJfU1RBVFVTLFVJTlQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRSZWdpb25EYXRhKEhSR04sRFdPUkQsTFBSR05EQVRBKTsNCmludCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFJnbkJveChIUkdOLExQUkVDVCk7DQppbnQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRST1AyKEhEQyk7DQpIR0RJT0JKIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U3RvY2tPYmplY3QoaW50KTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFN0cmV0Y2hCbHRNb2RlKEhEQyk7DQpVSU5UIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMoSERDLFVJTlQs
VUlOVCxMUFBBTEVUVEVFTlRSWSk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0U3lzdGVtUGFsZXR0ZVVzZShIREMpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldFRleHRBbGlnbihIREMpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0VGV4dENoYXJhY3RlckV4dHJhKEhEQyk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRUZXh0Q2hhcnNldChIREMpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0VGV4dENoYXJzZXRJbmZvKEhEQyxMUEZPTlRTSUdOQVRVUkUsRFdPUkQpOw0KQ09MT1JS
RUYgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRUZXh0Q29sb3IoSERDKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRUZXh0RXh0ZW50RXhQb2ludEEoSERDLExQ
Q1NUUixpbnQsaW50LExQSU5ULExQSU5ULExQU0laRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0VGV4dEV4dGVudEV4UG9pbnRXKCBIREMsTFBDV1NUUixpbnQsaW50LExQ
SU5ULExQSU5ULExQU0laRSApOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dFRleHRFeHRlbnRQb2ludEEoSERDLExQQ1NUUixpbnQsTFBTSVpFKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRUZXh0RXh0ZW50UG9pbnRXKEhEQyxMUENXU1RSLGludCxM
UFNJWkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRleHRFeHRlbnRQ
b2ludDMyQShIREMsTFBDU1RSLGludCxMUFNJWkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEdldFRleHRFeHRlbnRQb2ludDMyVyggSERDLExQQ1dTVFIsaW50LExQU0laRSk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRUZXh0RmFjZUEoSERDLGludCxM
UFNUUik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRUZXh0RmFjZVcoSERD
LGludCxMUFdTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRleHRN
ZXRyaWNzQShIREMsTFBURVhUTUVUUklDQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0VGV4dE1ldHJpY3NXKEhEQyxMUFRFWFRNRVRSSUNXKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRWaWV3cG9ydEV4dEV4KEhEQyxMUFNJWkUpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFZpZXdwb3J0T3JnRXgoSERDLExQUE9JTlQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdpbmRvd0V4dEV4KEhEQyxM
UFNJWkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdpbmRvd09yZ0V4
KEhEQyxMUFBPSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5N
ZXRhRmlsZUJpdHMoSEVOSE1FVEFGSUxFLFVJTlQsTFBCWVRFLElOVCxIREMpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdvcmxkVHJhbnNmb3JtKEhEQyxMUFhGT1JNKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEludGVyc2VjdENsaXBSZWN0KEhEQyxp
bnQsaW50LGludCxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEludmVy
dFJnbihIREMsSFJHTik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTGluZURE
QShpbnQsaW50LGludCxpbnQsTElORUREQVBST0MsTFBBUkFNKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBMaW5lVG8oSERDLGludCxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIExQdG9EUChIREMsTFBQT0lOVCxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIE1hc2tCbHQoSERDLGludCxpbnQsaW50LGludCxIREMsaW50LGlu
dCxIQklUTUFQLGludCxpbnQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIE1vZGlmeVdvcmxkVHJhbnNmb3JtKEhEQyxjb25zdCBYRk9STSosRFdPUkQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1vdmVUb0V4KEhEQyxpbnQsaW50LExQUE9JTlQp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT2Zmc2V0Q2xpcFJnbihIREMsaW50
LGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPZmZzZXRSZ24oSFJHTixp
bnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPZmZzZXRWaWV3cG9y
dE9yZ0V4KEhEQyxpbnQsaW50LExQUE9JTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIE9mZnNldFdpbmRvd09yZ0V4KEhEQyxpbnQsaW50LExQUE9JTlQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBhaW50UmduKEhEQyxIUkdOKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBQYXRCbHQoSERDLGludCxpbnQsaW50LGludCxEV09SRCk7
DQpIUkdOIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUGF0aFRvUmVnaW9uKEhEQyk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUGllKEhEQyxpbnQsaW50LGludCxpbnQs
aW50LGludCxpbnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQbGF5
RW5oTWV0YUZpbGUoSERDLEhFTkhNRVRBRklMRSxMUENSRUNUKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBQbGF5RW5oTWV0YUZpbGVSZWNvcmQoSERDLExQSEFORExFVEFCTEUs
Y29uc3QgRU5ITUVUQVJFQ09SRCosVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgUGxheU1ldGFGaWxlKEhEQyxITUVUQUZJTEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFBsYXlNZXRhRmlsZVJlY29yZChIREMsTFBIQU5ETEVUQUJMRSxMUE1FVEFS
RUNPUkQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUGxnQmx0KEhE
Qyxjb25zdCBQT0lOVCosSERDLGludCxpbnQsaW50LGludCxIQklUTUFQLGludCxpbnQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBvbHlCZXppZXIoSERDLGNvbnN0IFBPSU5U
KixEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUG9seUJlemllclRv
KEhEQyxjb25zdCBQT0lOVCosRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFBvbHlEcmF3KEhEQyxjb25zdCBQT0lOVCosY29uc3QgQllURSosaW50KTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQb2x5Z29uKEhEQyxjb25zdCBQT0lOVCosaW50KTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQb2x5bGluZShIREMsY29uc3QgUE9J
TlQqLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUG9seWxpbmVUbyhI
REMsY29uc3QgUE9JTlQqLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBQb2x5UG9seWdvbihIREMsY29uc3QgUE9JTlQqLGNvbnN0IElOVCosaW50KTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQb2x5UG9seWxpbmUoSERDLGNvbnN0IFBPSU5UKixj
b25zdCBEV09SRCosRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBv
bHlUZXh0T3V0QShIREMsY29uc3QgUE9MWVRFWFRBKixpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFBvbHlUZXh0T3V0VyhIREMsY29uc3QgUE9MWVRFWFRXKixpbnQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFB0SW5SZWdpb24oSFJHTixpbnQsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQdFZpc2libGUoSERDLGludCxp
bnQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlYWxpemVQYWxldHRlKEhE
Qyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVjdGFuZ2xlKEhEQyxpbnQs
aW50LGludCxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlY3RJblJl
Z2lvbihIUkdOLExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJl
Y3RWaXNpYmxlKEhEQyxMUENSRUNUKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBSZW1vdmVGb250UmVzb3VyY2VBKExQQ1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgUmVtb3ZlRm9udFJlc291cmNlVyhMUENXU1RSKTsNCkhEQyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJlc2V0RENBKEhEQyxjb25zdCBERVZNT0RFQSopOw0KSERDIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVzZXREQ1coSERDLGNvbnN0IERFVk1PREVXKik7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVzaXplUGFsZXR0ZShIUEFMRVRURSxV
SU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZXN0b3JlREMoSERDLGlu
dCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUm91bmRSZWN0KEhEQyxpbnQs
aW50LGludCxpbnQsaW50LGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBT
YXZlREMoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTY2FsZVZpZXdw
b3J0RXh0RXgoSERDLGludCxpbnQsaW50LGludCxMUFNJWkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFNjYWxlV2luZG93RXh0RXgoSERDLGludCxpbnQsaW50LGludCxMUFNJ
WkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlbGVjdENsaXBQYXRoKEhE
QyxpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2VsZWN0Q2xpcFJnbihI
REMsSFJHTik7DQpIR0RJT0JKIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2VsZWN0T2Jq
ZWN0KEhEQyxIR0RJT0JKKTsNCkhQQUxFVFRFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
U2VsZWN0UGFsZXR0ZShIREMsSFBBTEVUVEUsQk9PTCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBTZXRBYm9ydFByb2MoSERDLEFCT1JUUFJPQyk7DQppbnQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBTZXRBcmNEaXJlY3Rpb24oSERDLGludCk7DQpMT05HIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Qml0bWFwQml0cyhIQklUTUFQLERXT1JELFBDVk9JRCk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Qml0bWFwRGltZW5zaW9uRXgo
SEJJVE1BUCxpbnQsaW50LExQU0laRSk7DQpDT0xPUlJFRiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFNldEJrQ29sb3IoSERDLENPTE9SUkVGKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldEJrTW9kZShIREMsaW50KTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRCb3VuZHNSZWN0KEhEQyxMUENSRUNULFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFNldEJydXNoT3JnRXgoSERDLGludCxpbnQsTFBQT0lOVCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q29sb3JBZGp1c3RtZW50KEhEQyxj
b25zdCBDT0xPUkFESlVTVE1FTlQqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBTZXRDb2xvclNwYWNlKEhEQyxIQ09MT1JTUEFDRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0RGV2aWNlR2FtbWFSYW1wKEhEQyxQVk9JRCk7DQpVSU5UIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RElCQ29sb3JUYWJsZShIREMsVUlOVCxVSU5ULGNvbnN0
IFJHQlFVQUQqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldERJQml0cyhI
REMsSEJJVE1BUCxVSU5ULFVJTlQsUENWT0lELGNvbnN0IEJJVE1BUElORk8qLFVJTlQpOw0KaW50
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RElCaXRzVG9EZXZpY2UoSERDLGludCxp
bnQsRFdPUkQsRFdPUkQsaW50LGludCxVSU5ULFVJTlQsUENWT0lELGNvbnN0IEJJVE1BUElORk8q
LFVJTlQpOw0KSEVOSE1FVEFGSUxFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0RW5o
TWV0YUZpbGVCaXRzKFVJTlQsY29uc3QgQllURSopOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgU2V0R3JhcGhpY3NNb2RlKEhEQyxpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0SUNNTW9kZShIREMsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBTZXRJQ01Qcm9maWxlQShIREMsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFNldElDTVByb2ZpbGVXKEhEQyxMUFdTVFIpOw0KaW50IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0TWFwTW9kZShIREMsaW50KTsNCkRXT1JEIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0TWFwcGVyRmxhZ3MoSERDLERXT1JEKTsNCkhNRVRBRklM
RSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldE1ldGFGaWxlQml0c0V4KFVJTlQsY29u
c3QgQllURSAqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldE1ldGFSZ24o
SERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRNaXRlckxpbWl0KEhE
QyxGTE9BVCxQRkxPQVQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFBh
bGV0dGVFbnRyaWVzKEhQQUxFVFRFLFVJTlQsVUlOVCxjb25zdCBQQUxFVFRFRU5UUlkqKTsNCkNP
TE9SUkVGIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0UGl4ZWwoSERDLGludCxpbnQs
Q09MT1JSRUYpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFBpeGVsRm9y
bWF0KEhEQyxpbnQsUElYRUxGT1JNQVRERVNDUklQVE9SKik7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgU2V0UGl4ZWxWKEhEQyxpbnQsaW50LENPTE9SUkVGKTsNCmludCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFBvbHlGaWxsTW9kZShIREMsaW50KTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRSZWN0UmduKEhSR04saW50LGludCxpbnQs
aW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFJPUDIoSERDLGludCk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRTdHJldGNoQmx0TW9kZShIREMs
aW50KTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRTeXN0ZW1QYWxldHRl
VXNlKEhEQyxVSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRUZXh0
QWxpZ24oSERDLFVJTlQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0VGV4
dENoYXJhY3RlckV4dHJhKEhEQyxpbnQpOw0KQ09MT1JSRUYgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRUZXh0Q29sb3IoSERDLENPTE9SUkVGKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBTZXRUZXh0SnVzdGlmaWNhdGlvbihIREMsaW50LGludCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Vmlld3BvcnRFeHRFeChIREMsaW50LGludCxM
UFNJWkUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFZpZXdwb3J0T3Jn
RXgoSERDLGludCxpbnQsTFBQT0lOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgU2V0V2luZG93RXh0RXgoSERDLGludCxpbnQsTFBTSVpFKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBTZXRXaW5kb3dPcmdFeChIREMsaW50LGludCxMUFBPSU5UKTsNCkhF
TkhNRVRBRklMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdpbk1ldGFGaWxlQml0
cyhVSU5ULGNvbnN0IEJZVEUqLEhEQyxjb25zdCBNRVRBRklMRVBJQ1QqKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRXb3JsZFRyYW5zZm9ybShIREMsY29uc3QgWEZPUk0g
Kik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdGFydERvY0EoSERDLGNvbnN0
IERPQ0lORk9BKik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdGFydERvY1co
SERDLGNvbnN0IERPQ0lORk9XKik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBT
dGFydFBhZ2UoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdHJldGNo
Qmx0KEhEQyxpbnQsaW50LGludCxpbnQsSERDLGludCxpbnQsaW50LGludCxEV09SRCk7DQppbnQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdHJldGNoRElCaXRzKEhEQyxpbnQsaW50LGlu
dCxpbnQsaW50LGludCxpbnQsaW50LGNvbnN0IHZvaWQgKixjb25zdCBCSVRNQVBJTkZPICosVUlO
VCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3Ryb2tlQW5kRmls
bFBhdGgoSERDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdHJva2VQYXRo
KEhEQyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3dhcEJ1ZmZlcnMoSERD
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUZXh0T3V0QShIREMsaW50LGlu
dCxMUENTVFIsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUZXh0T3V0
VyhIREMsaW50LGludCxMUENXU1RSLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgVHJhbnNsYXRlQ2hhcnNldEluZm8oUERXT1JELExQQ0hBUlNFVElORk8sRFdPUkQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFVucmVhbGl6ZU9iamVjdChIR0RJT0JK
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVcGRhdGVDb2xvcnMoSERDKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVcGRhdGVJQ01SZWdLZXlBKERXT1JE
LERXT1JELExQU1RSLFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFVw
ZGF0ZUlDTVJlZ0tleVcoRFdPUkQsRFdPUkQsTFBXU1RSLFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFdpZGVuUGF0aChIREMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIHdnbENvcHlDb250ZXh0KEhHTFJDLEhHTFJDLFVJTlQpOw0KSEdMUkMgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xDcmVhdGVDb250ZXh0KEhEQyk7DQpIR0xSQyBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdnbENyZWF0ZUxheWVyQ29udGV4dChIREMsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xEZWxldGVDb250ZXh0KEhH
TFJDKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xEZXNjcmliZUxheWVy
UGxhbmUoSERDLGludCxpbnQsVUlOVCxMUExBWUVSUExBTkVERVNDUklQVE9SKTsNCkhHTFJDIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2dsR2V0Q3VycmVudENvbnRleHQodm9pZCk7DQpI
REMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xHZXRDdXJyZW50REModm9pZCk7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xHZXRMYXllclBhbGV0dGVFbnRyaWVz
KEhEQyxpbnQsaW50LGludCxDT0xPUlJFRiopOw0KUFJPQyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIHdnbEdldFByb2NBZGRyZXNzKExQQ1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgd2dsTWFrZUN1cnJlbnQoSERDLEhHTFJDKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSB3Z2xSZWFsaXplTGF5ZXJQYWxldHRlKEhEQyxpbnQsQk9PTCk7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3Z2xTZXRMYXllclBhbGV0dGVFbnRyaWVz
KEhEQyxpbnQsaW50LGludCxjb25zdCBDT0xPUlJFRiopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIHdnbFNoYXJlTGlzdHMoSEdMUkMsSEdMUkMpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIHdnbFN3YXBMYXllckJ1ZmZlcnMoSERDLFVJTlQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdnbFVzZUZvbnRCaXRtYXBzQShIREMsRFdPUkQs
RFdPUkQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdnbFVzZUZv
bnRCaXRtYXBzVyhIREMsRFdPUkQsRFdPUkQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIHdnbFVzZUZvbnRPdXRsaW5lc0EoSERDLERXT1JELERXT1JELERXT1JELEZM
T0FULEZMT0FULGludCxMUEdMWVBITUVUUklDU0ZMT0FUKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSB3Z2xVc2VGb250T3V0bGluZXNXKEhEQyxEV09SRCxEV09SRCxEV09SRCxG
TE9BVCxGTE9BVCxpbnQsTFBHTFlQSE1FVFJJQ1NGTE9BVCk7DQojIDI3NjIgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvd2luZ2RpLmgiIDMNCnR5cGVkZWYgQllURSBCQ0hBUjsNCnR5cGVkZWYg
RE9DSU5GT0EgRE9DSU5GTywgKkxQRE9DSU5GTzsNCnR5cGVkZWYgTE9HRk9OVEEgTE9HRk9OVCwq
UExPR0ZPTlQsKkxQTE9HRk9OVDsNCnR5cGVkZWYgVEVYVE1FVFJJQ0EgVEVYVE1FVFJJQywqUFRF
WFRNRVRSSUMsKkxQVEVYVE1FVFJJQzsNCg0KDQp0eXBlZGVmIERFVk1PREVBIERFVk1PREUsKlBE
RVZNT0RFLCpMUERFVk1PREU7DQp0eXBlZGVmIEVYVExPR0ZPTlRBIEVYVExPR0ZPTlQsKlBFWFRM
T0dGT05ULCpMUEVYVExPR0ZPTlQ7DQp0eXBlZGVmIEdDUF9SRVNVTFRTQSBHQ1BfUkVTVUxUUywq
TFBHQ1BfUkVTVUxUUzsNCnR5cGVkZWYgT1VUTElORVRFWFRNRVRSSUNBIE9VVExJTkVURVhUTUVU
UklDLCpQT1VUTElORVRFWFRNRVRSSUMsKkxQT1VUTElORVRFWFRNRVRSSUM7DQp0eXBlZGVmIFBP
TFlURVhUQSBQT0xZVEVYVDsNCnR5cGVkZWYgTE9HQ09MT1JTUEFDRUEgTE9HQ09MT1JTUEFDRSwq
TFBMT0dDT0xPUlNQQUNFOw0KdHlwZWRlZiBORVdURVhUTUVUUklDQSBORVdURVhUTUVUUklDLCpQ
TkVXVEVYVE1FVFJJQywqTFBORVdURVhUTUVUUklDOw0KdHlwZWRlZiBORVdURVhUTUVUUklDRVhB
IE5FV1RFWFRNRVRSSUNFWDsNCnR5cGVkZWYgRU5VTUxPR0ZPTlRBIEVOVU1MT0dGT05ULCpMUEVO
VU1MT0dGT05UOw0KdHlwZWRlZiBFTlVNTE9HRk9OVEVYQSBFTlVNTE9HRk9OVEVYLCpMUEVOVU1M
T0dGT05URVg7DQojIDI4MjYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZ2RpLmgiIDMN
Cn0NCiMgMTA1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIgMiAzDQoNCg0K
IyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnVzZXIuaCIgMSAzDQoNCg0KDQpleHRl
cm4gIkMiIHsNCiMgMTg1MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW51c2VyLmgiIDMN
CnR5cGVkZWYgQk9PTChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpETEdQUk9DKShIV05E
LFVJTlQsV1BBUkFNLExQQVJBTSk7DQp0eXBlZGVmIHZvaWQoX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSAqVElNRVJQUk9DKShIV05ELFVJTlQsVUlOVCxEV09SRCk7DQp0eXBlZGVmIEJPT0wo
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqR1JBWVNUUklOR1BST0MpKEhEQyxMUEFSQU0s
aW50KTsNCnR5cGVkZWYgTFJFU1VMVChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpIT09L
UFJPQykoaW50LFdQQVJBTSxMUEFSQU0pOw0KdHlwZWRlZiBCT09MKF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgKlBST1BFTlVNUFJPQ0EpKEhXTkQsTFBDU1RSLEhBTkRMRSk7DQp0eXBlZGVm
IEJPT0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUFJPUEVOVU1QUk9DVykoSFdORCxM
UENXU1RSLEhBTkRMRSk7DQp0eXBlZGVmIEJPT0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSAqUFJPUEVOVU1QUk9DRVhBKShIV05ELExQU1RSLEhBTkRMRSxEV09SRCk7DQp0eXBlZGVmIEJP
T0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUFJPUEVOVU1QUk9DRVhXKShIV05ELExQ
V1NUUixIQU5ETEUsRFdPUkQpOw0KdHlwZWRlZiBpbnQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSAqRURJVFdPUkRCUkVBS1BST0NBKShMUFNUUixpbnQsaW50LGludCk7DQp0eXBlZGVmIGlu
dChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpFRElUV09SREJSRUFLUFJPQ1cpKExQV1NU
UixpbnQsaW50LGludCk7DQp0eXBlZGVmIExSRVNVTFQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSAqV05EUFJPQykoSFdORCxVSU5ULFdQQVJBTSxMUEFSQU0pOw0KdHlwZWRlZiBCT09MKF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkRSQVdTVEFURVBST0MpKEhEQyxMUEFSQU0sV1BB
UkFNLGludCxpbnQpOw0KdHlwZWRlZiBCT09MKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
KldOREVOVU1QUk9DKShIV05ELExQQVJBTSk7DQp0eXBlZGVmIEJPT0woX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSAqRU5VTVdJTkRPV1NQUk9DKShIV05ELExQQVJBTSk7DQp0eXBlZGVmIEJP
T0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqTkFNRUVOVU1QUk9DQSkoTFBTVFIsTFBB
UkFNKTsNCnR5cGVkZWYgQk9PTChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpOQU1FRU5V
TVBST0NXKShMUFdTVFIsTFBBUkFNKTsNCnR5cGVkZWYgTkFNRUVOVU1QUk9DQSBERVNLVE9QRU5V
TVBST0NBOw0KdHlwZWRlZiBOQU1FRU5VTVBST0NXIERFU0tUT1BFTlVNUFJPQ1c7DQp0eXBlZGVm
IE5BTUVFTlVNUFJPQ0EgV0lOU1RBRU5VTVBST0NBOw0KdHlwZWRlZiBOQU1FRU5VTVBST0NXIFdJ
TlNUQUVOVU1QUk9DVzsNCnR5cGVkZWYgdm9pZChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
ICpTRU5EQVNZTkNQUk9DKShIV05ELFVJTlQsRFdPUkQsTFJFU1VMVCk7DQp0eXBlZGVmIHN0cnVj
dCBISE9PS19fe2ludCBpO30qSEhPT0s7DQp0eXBlZGVmIHN0cnVjdCBIRFdQX197aW50IGk7fSpI
RFdQOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQUNDRUwgew0KICAgICAgICBCWVRFIGZWaXJ0Ow0KICAg
ICAgICBXT1JEIGtleTsNCiAgICAgICAgV09SRCBjbWQ7DQp9IEFDQ0VMLCpMUEFDQ0VMOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnQUNDRVNTVElNRU9VVCB7DQogICAgICAgIFVJTlQgY2JTaXplOw0KICAg
ICAgICBEV09SRCBkd0ZsYWdzOw0KICAgICAgICBEV09SRCBpVGltZU91dE1TZWM7DQp9IEFDQ0VT
U1RJTUVPVVQ7DQp0eXBlZGVmIHN0cnVjdCB0YWdBTklNQVRJT05JTkZPIHsNCiAgICAgICAgVUlO
VCBjYlNpemU7DQogICAgICAgIGludCBpTWluQW5pbWF0ZTsNCn0gQU5JTUFUSU9OSU5GTywqTFBB
TklNQVRJT05JTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ1JFQVRFU1RSVUNUIHsNCiAgICAgICAg
TFBWT0lEIGxwQ3JlYXRlUGFyYW1zOw0KICAgICAgICBISU5TVEFOQ0UgaEluc3RhbmNlOw0KICAg
ICAgICBITUVOVSBoTWVudTsNCiAgICAgICAgSFdORCBod25kUGFyZW50Ow0KICAgICAgICBpbnQg
Y3k7DQogICAgICAgIGludCBjeDsNCiAgICAgICAgaW50IHk7DQogICAgICAgIGludCB4Ow0KICAg
ICAgICBMT05HIHN0eWxlOw0KICAgICAgICBMUENUU1RSIGxwc3pOYW1lOw0KICAgICAgICBMUENU
U1RSIGxwc3pDbGFzczsNCiAgICAgICAgRFdPUkQgZHdFeFN0eWxlOw0KfSBDUkVBVEVTVFJVQ1Qs
KkxQQ1JFQVRFU1RSVUNUOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0JUX0NSRUFURVdORCB7DQogICAg
ICAgIExQQ1JFQVRFU1RSVUNUIGxwY3M7DQogICAgICAgIEhXTkQgaHduZEluc2VydEFmdGVyOw0K
fSBDQlRfQ1JFQVRFV05EOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0JUQUNUSVZBVEVTVFJVQ1Qgew0K
ICAgICAgICBCT09MIGZNb3VzZTsNCiAgICAgICAgSFdORCBoV25kQWN0aXZlOw0KfSBDQlRBQ1RJ
VkFURVNUUlVDVCwqTFBDQlRBQ1RJVkFURVNUUlVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0NMSUVO
VENSRUFURVNUUlVDVCB7DQogICAgICAgIEhBTkRMRSBoV2luZG93TWVudTsNCiAgICAgICAgVUlO
VCBpZEZpcnN0Q2hpbGQ7DQp9IENMSUVOVENSRUFURVNUUlVDVCwqTFBDTElFTlRDUkVBVEVTVFJV
Q1Q7DQp0eXBlZGVmIHN0cnVjdCB0YWdDT01QQVJFSVRFTVNUUlVDVCB7DQogICAgICAgIFVJTlQg
Q3RsVHlwZTsNCiAgICAgICAgVUlOVCBDdGxJRDsNCiAgICAgICAgSFdORCBod25kSXRlbTsNCiAg
ICAgICAgVUlOVCBpdGVtSUQxOw0KICAgICAgICBEV09SRCBpdGVtRGF0YTE7DQogICAgICAgIFVJ
TlQgaXRlbUlEMjsNCiAgICAgICAgRFdPUkQgaXRlbURhdGEyOw0KICAgICAgICBEV09SRCBkd0xv
Y2FsZUlkOw0KfSBDT01QQVJFSVRFTVNUUlVDVCwqTFBDT01QQVJFSVRFTVNUUlVDVDsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0NPUFlEQVRBU1RSVUNUIHsNCiAgICAgICAgRFdPUkQgZHdEYXRhOw0KICAg
ICAgICBEV09SRCBjYkRhdGE7DQogICAgICAgIFBWT0lEIGxwRGF0YTsNCn0gQ09QWURBVEFTVFJV
Q1QsKlBDT1BZREFUQVNUUlVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0NVUlNPUlNIQVBFIHsNCiAg
ICAgICAgaW50IHhIb3RTcG90Ow0KICAgICAgICBpbnQgeUhvdFNwb3Q7DQogICAgICAgIGludCBj
eDsNCiAgICAgICAgaW50IGN5Ow0KICAgICAgICBpbnQgY2JXaWR0aDsNCiAgICBCWVRFIFBsYW5l
czsNCiAgICBCWVRFIEJpdHNQaXhlbDsNCn0gQ1VSU09SU0hBUEUsKkxQQ1VSU09SU0hBUEU7DQp0
eXBlZGVmIHN0cnVjdCB0YWdDV1BSRVRTVFJVQ1Qgew0KICAgICAgICBMUkVTVUxUIGxSZXN1bHQ7
DQogICAgICAgIExQQVJBTSBsUGFyYW07DQogICAgICAgIFdQQVJBTSB3UGFyYW07DQogICAgICAg
IERXT1JEIG1lc3NhZ2U7DQogICAgICAgIEhXTkQgaHduZDsNCn0gQ1dQUkVUU1RSVUNUOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnQ1dQU1RSVUNUIHsNCiAgICAgICAgTFBBUkFNIGxQYXJhbTsNCiAgICAg
ICAgV1BBUkFNIHdQYXJhbTsNCiAgICAgICAgVUlOVCBtZXNzYWdlOw0KICAgICAgICBIV05EIGh3
bmQ7DQp9IENXUFNUUlVDVCwqUENXUFNUUlVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0RFQlVHSE9P
S0lORk8gew0KICAgICAgICBEV09SRCBpZFRocmVhZDsNCiAgICAgICAgRFdPUkQgaWRUaHJlYWRJ
bnN0YWxsZXI7DQogICAgICAgIExQQVJBTSBsUGFyYW07DQogICAgICAgIFdQQVJBTSB3UGFyYW07
DQogICAgICAgIGludCBjb2RlOw0KfSBERUJVR0hPT0tJTkZPLCpQREVCVUdIT09LSU5GTywqTFBE
RUJVR0hPT0tJTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnREVMRVRFSVRFTVNUUlVDVCB7DQogICAg
ICAgIFVJTlQgQ3RsVHlwZTsNCiAgICAgICAgVUlOVCBDdGxJRDsNCiAgICAgICAgVUlOVCBpdGVt
SUQ7DQogICAgICAgIEhXTkQgaHduZEl0ZW07DQogICAgICAgIFVJTlQgaXRlbURhdGE7DQp9IERF
TEVURUlURU1TVFJVQ1QsKlBERUxFVEVJVEVNU1RSVUNULCpMUERFTEVURUlURU1TVFJVQ1Q7DQoj
cHJhZ21hIHBhY2socHVzaCwyKQ0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgICAgICBEV09SRCBzdHls
ZTsNCiAgICAgICAgRFdPUkQgZHdFeHRlbmRlZFN0eWxlOw0KICAgICAgICBzaG9ydCB4Ow0KICAg
ICAgICBzaG9ydCB5Ow0KICAgICAgICBzaG9ydCBjeDsNCiAgICAgICAgc2hvcnQgY3k7DQogICAg
ICAgIFdPUkQgaWQ7DQp9IERMR0lURU1URU1QTEFURSwqTFBETEdJVEVNVEVNUExBVEU7DQp0eXBl
ZGVmIHN0cnVjdCB7DQogICAgICAgIERXT1JEIHN0eWxlOw0KICAgICAgICBEV09SRCBkd0V4dGVu
ZGVkU3R5bGU7DQogICAgICAgIFdPUkQgY2RpdDsNCiAgICAgICAgc2hvcnQgeDsNCiAgICAgICAg
c2hvcnQgeTsNCiAgICAgICAgc2hvcnQgY3g7DQogICAgICAgIHNob3J0IGN5Ow0KfSBETEdURU1Q
TEFURSwqTFBETEdURU1QTEFURTsNCnR5cGVkZWYgY29uc3QgRExHVEVNUExBVEUgKkxQQ0RMR1RF
TVBMQVRFOw0KI3ByYWdtYSBwYWNrKHBvcCkNCnR5cGVkZWYgc3RydWN0IHRhZ0RSQVdJVEVNU1RS
VUNUIHsNCiAgICAgICAgVUlOVCBDdGxUeXBlOw0KICAgICAgICBVSU5UIEN0bElEOw0KICAgICAg
ICBVSU5UIGl0ZW1JRDsNCiAgICAgICAgVUlOVCBpdGVtQWN0aW9uOw0KICAgICAgICBVSU5UIGl0
ZW1TdGF0ZTsNCiAgICAgICAgSFdORCBod25kSXRlbTsNCiAgICAgICAgSERDIGhEQzsNCiAgICAg
ICAgUkVDVCByY0l0ZW07DQogICAgICAgIERXT1JEIGl0ZW1EYXRhOw0KfSBEUkFXSVRFTVNUUlVD
VCwqTFBEUkFXSVRFTVNUUlVDVCwqUERSQVdJVEVNU1RSVUNUOw0KdHlwZWRlZiBzdHJ1Y3Qgew0K
ICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgaW50IGlUYWJMZW5ndGg7DQogICAgICAgIGlu
dCBpTGVmdE1hcmdpbjsNCiAgICAgICAgaW50IGlSaWdodE1hcmdpbjsNCiAgICAgICAgVUlOVCB1
aUxlbmd0aERyYXduOw0KfSBEUkFXVEVYVFBBUkFNUywqTFBEUkFXVEVYVFBBUkFNUzsNCnR5cGVk
ZWYgc3RydWN0IHRhZ1BBSU5UU1RSVUNUIHsNCiAgICAgICAgSERDIGhkYzsNCiAgICAgICAgQk9P
TCBmRXJhc2U7DQogICAgICAgIFJFQ1QgcmNQYWludDsNCiAgICAgICAgQk9PTCBmUmVzdG9yZTsN
CiAgICAgICAgQk9PTCBmSW5jVXBkYXRlOw0KICAgICAgICBCWVRFIHJnYlJlc2VydmVkWzMyXTsN
Cn0gUEFJTlRTVFJVQ1QsKkxQUEFJTlRTVFJVQ1Q7DQp0eXBlZGVmIHN0cnVjdCB0YWdNU0cgew0K
ICAgICAgICBIV05EIGh3bmQ7DQogICAgICAgIFVJTlQgbWVzc2FnZTsNCiAgICAgICAgV1BBUkFN
IHdQYXJhbTsNCiAgICAgICAgTFBBUkFNIGxQYXJhbTsNCiAgICAgICAgRFdPUkQgdGltZTsNCiAg
ICAgICAgUE9JTlQgcHQ7DQp9IE1TRywqTFBNU0csKlBNU0c7DQp0eXBlZGVmIHN0cnVjdCBfSUNP
TklORk8gew0KICAgICAgICBCT09MIGZJY29uOw0KICAgICAgICBEV09SRCB4SG90c3BvdDsNCiAg
ICAgICAgRFdPUkQgeUhvdHNwb3Q7DQogICAgICAgIEhCSVRNQVAgaGJtTWFzazsNCiAgICAgICAg
SEJJVE1BUCBoYm1Db2xvcjsNCn0gSUNPTklORk8sKlBJQ09OSU5GTzsNCnR5cGVkZWYgc3RydWN0
IHRhZ05NSERSIHsNCiAgICAgICAgSFdORCBod25kRnJvbTsNCiAgICAgICAgVUlOVCBpZEZyb207
DQogICAgICAgIFVJTlQgY29kZTsNCn0gTk1IRFIsKkxQTk1IRFI7DQp0eXBlZGVmIHN0cnVjdCBf
V05EQ0xBU1NBIHsNCiAgICAgICAgVUlOVCBzdHlsZTsNCiAgICAgICAgV05EUFJPQyBscGZuV25k
UHJvYzsNCiAgICAgICAgaW50IGNiQ2xzRXh0cmE7DQogICAgICAgIGludCBjYlduZEV4dHJhOw0K
ICAgICAgICBIQU5ETEUgaEluc3RhbmNlOw0KICAgICAgICBISUNPTiBoSWNvbjsNCiAgICAgICAg
SENVUlNPUiBoQ3Vyc29yOw0KICAgICAgICBIQlJVU0ggaGJyQmFja2dyb3VuZDsNCiAgICAgICAg
TFBDU1RSIGxwc3pNZW51TmFtZTsNCiAgICAgICAgTFBDU1RSIGxwc3pDbGFzc05hbWU7DQp9IFdO
RENMQVNTQSwqTFBXTkRDTEFTU0EsKlBXTkRDTEFTU0E7DQp0eXBlZGVmIHN0cnVjdCBfV05EQ0xB
U1NXIHsNCiAgICAgICAgVUlOVCBzdHlsZTsNCiAgICAgICAgV05EUFJPQyBscGZuV25kUHJvYzsN
CiAgICAgICAgaW50IGNiQ2xzRXh0cmE7DQogICAgICAgIGludCBjYlduZEV4dHJhOw0KICAgICAg
ICBIQU5ETEUgaEluc3RhbmNlOw0KICAgICAgICBISUNPTiBoSWNvbjsNCiAgICAgICAgSENVUlNP
UiBoQ3Vyc29yOw0KICAgICAgICBIQlJVU0ggaGJyQmFja2dyb3VuZDsNCiAgICAgICAgTFBDV1NU
UiBscHN6TWVudU5hbWU7DQogICAgICAgIExQQ1dTVFIgbHBzekNsYXNzTmFtZTsNCn0gV05EQ0xB
U1NXLCpMUFdORENMQVNTVywqUFdORENMQVNTVzsNCnR5cGVkZWYgc3RydWN0IF9XTkRDTEFTU0VY
QSB7DQogICAgICAgIFVJTlQgY2JTaXplOw0KICAgICAgICBVSU5UIHN0eWxlOw0KICAgICAgICBX
TkRQUk9DIGxwZm5XbmRQcm9jOw0KICAgICAgICBpbnQgY2JDbHNFeHRyYTsNCiAgICAgICAgaW50
IGNiV25kRXh0cmE7DQogICAgICAgIEhBTkRMRSBoSW5zdGFuY2U7DQogICAgICAgIEhJQ09OIGhJ
Y29uOw0KICAgICAgICBIQ1VSU09SIGhDdXJzb3I7DQogICAgICAgIEhCUlVTSCBoYnJCYWNrZ3Jv
dW5kOw0KICAgICAgICBMUENTVFIgbHBzek1lbnVOYW1lOw0KICAgICAgICBMUENTVFIgbHBzekNs
YXNzTmFtZTsNCiAgICAgICAgSElDT04gaEljb25TbTsNCn0gV05EQ0xBU1NFWEEsKkxQV05EQ0xB
U1NFWEEsKlBXTkRDTEFTU0VYQTsNCnR5cGVkZWYgc3RydWN0IF9XTkRDTEFTU0VYVyB7DQogICAg
ICAgIFVJTlQgY2JTaXplOw0KICAgICAgICBVSU5UIHN0eWxlOw0KICAgICAgICBXTkRQUk9DIGxw
Zm5XbmRQcm9jOw0KICAgICAgICBpbnQgY2JDbHNFeHRyYTsNCiAgICAgICAgaW50IGNiV25kRXh0
cmE7DQogICAgICAgIEhBTkRMRSBoSW5zdGFuY2U7DQogICAgICAgIEhJQ09OIGhJY29uOw0KICAg
ICAgICBIQ1VSU09SIGhDdXJzb3I7DQogICAgICAgIEhCUlVTSCBoYnJCYWNrZ3JvdW5kOw0KICAg
ICAgICBMUENXU1RSIGxwc3pNZW51TmFtZTsNCiAgICAgICAgTFBDV1NUUiBscHN6Q2xhc3NOYW1l
Ow0KICAgICAgICBISUNPTiBoSWNvblNtOw0KfSBXTkRDTEFTU0VYVywqTFBXTkRDTEFTU0VYVywq
UFdORENMQVNTRVhXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVUlURU1JTkZPQSB7DQogICAgICAg
IFVJTlQgY2JTaXplOw0KICAgICAgICBVSU5UIGZNYXNrOw0KICAgICAgICBVSU5UIGZUeXBlOw0K
ICAgICAgICBVSU5UIGZTdGF0ZTsNCiAgICAgICAgVUlOVCB3SUQ7DQogICAgICAgIEhNRU5VIGhT
dWJNZW51Ow0KICAgICAgICBIQklUTUFQIGhibXBDaGVja2VkOw0KICAgICAgICBIQklUTUFQIGhi
bXBVbmNoZWNrZWQ7DQogICAgICAgIERXT1JEIGR3SXRlbURhdGE7DQogICAgICAgIExQU1RSIGR3
VHlwZURhdGE7DQogICAgICAgIFVJTlQgY2NoOw0KDQoNCg0KfSBNRU5VSVRFTUlORk9BLCpMUE1F
TlVJVEVNSU5GT0E7DQp0eXBlZGVmIGNvbnN0IE1FTlVJVEVNSU5GT0EgKkxQQ01FTlVJVEVNSU5G
T0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNRU5VSVRFTUlORk9XIHsNCiAgICAgICAgVUlOVCBjYlNp
emU7DQogICAgICAgIFVJTlQgZk1hc2s7DQogICAgICAgIFVJTlQgZlR5cGU7DQogICAgICAgIFVJ
TlQgZlN0YXRlOw0KICAgICAgICBVSU5UIHdJRDsNCiAgICAgICAgSE1FTlUgaFN1Yk1lbnU7DQog
ICAgICAgIEhCSVRNQVAgaGJtcENoZWNrZWQ7DQogICAgICAgIEhCSVRNQVAgaGJtcFVuY2hlY2tl
ZDsNCiAgICAgICAgRFdPUkQgZHdJdGVtRGF0YTsNCiAgICAgICAgTFBXU1RSIGR3VHlwZURhdGE7
DQogICAgICAgIFVJTlQgY2NoOw0KDQoNCg0KfSBNRU5VSVRFTUlORk9XLCpMUE1FTlVJVEVNSU5G
T1c7DQp0eXBlZGVmIGNvbnN0IE1FTlVJVEVNSU5GT1cgKkxQQ01FTlVJVEVNSU5GT1c7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdTQ1JPTExJTkZPIHsNCiAgICAgICAgVUlOVCBjYlNpemU7DQogICAgICAg
IFVJTlQgZk1hc2s7DQogICAgICAgIGludCBuTWluOw0KICAgICAgICBpbnQgbk1heDsNCiAgICAg
ICAgVUlOVCBuUGFnZTsNCiAgICAgICAgaW50IG5Qb3M7DQogICAgICAgIGludCBuVHJhY2tQb3M7
DQp9IFNDUk9MTElORk8sKkxQU0NST0xMSU5GTzsNCnR5cGVkZWYgY29uc3QgU0NST0xMSU5GTyAq
TFBDU0NST0xMSU5GTzsNCnR5cGVkZWYgc3RydWN0IF9XSU5ET1dQTEFDRU1FTlQgew0KICAgICAg
ICBVSU5UIGxlbmd0aDsNCiAgICAgICAgVUlOVCBmbGFnczsNCiAgICAgICAgVUlOVCBzaG93Q21k
Ow0KICAgICAgICBQT0lOVCBwdE1pblBvc2l0aW9uOw0KICAgICAgICBQT0lOVCBwdE1heFBvc2l0
aW9uOw0KICAgICAgICBSRUNUIHJjTm9ybWFsUG9zaXRpb247DQp9IFdJTkRPV1BMQUNFTUVOVCwq
TFBXSU5ET1dQTEFDRU1FTlQsKlBXSU5ET1dQTEFDRU1FTlQ7DQp0eXBlZGVmIHN0cnVjdCB7DQog
ICAgICAgIFdPUkQgdmVyc2lvbk51bWJlcjsNCiAgICAgICAgV09SRCBvZmZzZXQ7DQp9IE1FTlVJ
VEVNVEVNUExBVEVIRUFERVI7DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAgIFdPUkQgbXRPcHRp
b247DQogICAgICAgIFdPUkQgbXRJRDsNCiAgICAgICAgV0NIQVIgbXRTdHJpbmdbMV07DQp9IE1F
TlVJVEVNVEVNUExBVEU7DQp0eXBlZGVmIHZvaWQgTUVOVVRFTVBMQVRFLE1FTlVURU1QTEFURUEs
TUVOVVRFTVBMQVRFVywqTFBNRU5VVEVNUExBVEVBLCpMUE1FTlVURU1QTEFURVcsKkxQTUVOVVRF
TVBMQVRFOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnSEVMUElORk8gew0KICAgICAgICBVSU5UIGNiU2l6
ZTsNCiAgICAgICAgaW50IGlDb250ZXh0VHlwZTsNCiAgICAgICAgaW50IGlDdHJsSWQ7DQogICAg
ICAgIEhBTkRMRSBoSXRlbUhhbmRsZTsNCiAgICAgICAgRFdPUkQgZHdDb250ZXh0SWQ7DQogICAg
ICAgIFBPSU5UIE1vdXNlUG9zOw0KfSBIRUxQSU5GTywqTFBIRUxQSU5GTzsNCnR5cGVkZWYgdm9p
ZChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpNU0dCT1hDQUxMQkFDSykoTFBIRUxQSU5G
Tyk7DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAgIFVJTlQgY2JTaXplOw0KICAgICAgICBIV05E
IGh3bmRPd25lcjsNCiAgICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZTsNCiAgICAgICAgTFBDU1RS
IGxwc3pUZXh0Ow0KICAgICAgICBMUENTVFIgbHBzekNhcHRpb247DQogICAgICAgIERXT1JEIGR3
U3R5bGU7DQogICAgICAgIExQQ1NUUiBscHN6SWNvbjsNCiAgICAgICAgRFdPUkQgZHdDb250ZXh0
SGVscElkOw0KICAgICAgICBNU0dCT1hDQUxMQkFDSyBscGZuTXNnQm94Q2FsbGJhY2s7DQogICAg
ICAgIERXT1JEIGR3TGFuZ3VhZ2VJZDsNCn0gTVNHQk9YUEFSQU1TQSwqUE1TR0JPWFBBUkFNU0Es
KkxQTVNHQk9YUEFSQU1TQTsNCnR5cGVkZWYgc3RydWN0IHsNCiAgICAgICAgVUlOVCBjYlNpemU7
DQogICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAgICAgICBISU5TVEFOQ0UgaEluc3RhbmNlOw0K
ICAgICAgICBMUENXU1RSIGxwc3pUZXh0Ow0KICAgICAgICBMUENXU1RSIGxwc3pDYXB0aW9uOw0K
ICAgICAgICBEV09SRCBkd1N0eWxlOw0KICAgICAgICBMUENXU1RSIGxwc3pJY29uOw0KICAgICAg
ICBEV09SRCBkd0NvbnRleHRIZWxwSWQ7DQogICAgICAgIE1TR0JPWENBTExCQUNLIGxwZm5Nc2dC
b3hDYWxsYmFjazsNCiAgICAgICAgRFdPUkQgZHdMYW5ndWFnZUlkOw0KfSBNU0dCT1hQQVJBTVNX
LCpQTVNHQk9YUEFSQU1TVywqTFBNU0dCT1hQQVJBTVNXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnVVNF
Uk9CSkVDVEZMQUdTIHsNCiAgICAgICAgQk9PTCBmSW5oZXJpdDsNCiAgICAgICAgQk9PTCBmUmVz
ZXJ2ZWQ7DQogICAgICAgIERXT1JEIGR3RmxhZ3M7DQp9IFVTRVJPQkpFQ1RGTEFHUzsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0ZJTFRFUktFWVMgew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAg
RFdPUkQgZHdGbGFnczsNCiAgICAgICAgRFdPUkQgaVdhaXRNU2VjOw0KICAgICAgICBEV09SRCBp
RGVsYXlNU2VjOw0KICAgICAgICBEV09SRCBpUmVwZWF0TVNlYzsNCiAgICAgICAgRFdPUkQgaUJv
dW5jZU1TZWM7DQp9IEZJTFRFUktFWVM7DQp0eXBlZGVmIHN0cnVjdCB0YWdISUdIQ09OVFJBU1RB
IHsNCiAgICAgICAgVUlOVCBjYlNpemU7DQogICAgICAgIERXT1JEIGR3RmxhZ3M7DQogICAgICAg
IExQU1RSIGxwc3pEZWZhdWx0U2NoZW1lOw0KfSBISUdIQ09OVFJBU1RBLCpMUEhJR0hDT05UUkFT
VEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdISUdIQ09OVFJBU1RXIHsNCiAgICAgICAgVUlOVCBjYlNp
emU7DQogICAgICAgIERXT1JEIGR3RmxhZ3M7DQogICAgICAgIExQV1NUUiBscHN6RGVmYXVsdFNj
aGVtZTsNCn0gSElHSENPTlRSQVNUVywqTFBISUdIQ09OVFJBU1RXOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnSUNPTk1FVFJJQ1NBIHsNCiAgICAgICAgVUlOVCBjYlNpemU7DQogICAgICAgIGludCBpSG9y
elNwYWNpbmc7DQogICAgICAgIGludCBpVmVydFNwYWNpbmc7DQogICAgICAgIGludCBpVGl0bGVX
cmFwOw0KICAgICAgICBMT0dGT05UQSBsZkZvbnQ7DQp9IElDT05NRVRSSUNTQSwqTFBJQ09OTUVU
UklDU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdJQ09OTUVUUklDU1cgew0KICAgICAgICBVSU5UIGNi
U2l6ZTsNCiAgICAgICAgaW50IGlIb3J6U3BhY2luZzsNCiAgICAgICAgaW50IGlWZXJ0U3BhY2lu
ZzsNCiAgICAgICAgaW50IGlUaXRsZVdyYXA7DQogICAgICAgIExPR0ZPTlRXIGxmRm9udDsNCn0g
SUNPTk1FVFJJQ1NXLCpMUElDT05NRVRSSUNTVzsNCnR5cGVkZWYgc3RydWN0IHRhZ01JTklNSVpF
RE1FVFJJQ1Mgew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgaW50IGlXaWR0aDsNCiAg
ICAgICAgaW50IGlIb3J6R2FwOw0KICAgICAgICBpbnQgaVZlcnRHYXA7DQogICAgICAgIGludCBp
QXJyYW5nZTsNCn0gTUlOSU1JWkVETUVUUklDUywqTFBNSU5JTUlaRURNRVRSSUNTOw0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnTU9VU0VLRVlTew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgRFdP
UkQgZHdGbGFnczsNCiAgICAgICAgRFdPUkQgaU1heFNwZWVkOw0KICAgICAgICBEV09SRCBpVGlt
ZVRvTWF4U3BlZWQ7DQogICAgICAgIERXT1JEIGlDdHJsU3BlZWQ7DQogICAgICAgIERXT1JEIGR3
UmVzZXJ2ZWQxOw0KICAgICAgICBEV09SRCBkd1Jlc2VydmVkMjsNCn0gTU9VU0VLRVlTLCAqTFBN
T1VTRUtFWVM7DQp0eXBlZGVmIHN0cnVjdCB0YWdOT05DTElFTlRNRVRSSUNTQSB7DQogICAgICAg
IFVJTlQgY2JTaXplOw0KICAgICAgICBpbnQgaUJvcmRlcldpZHRoOw0KICAgICAgICBpbnQgaVNj
cm9sbFdpZHRoOw0KICAgICAgICBpbnQgaVNjcm9sbEhlaWdodDsNCiAgICAgICAgaW50IGlDYXB0
aW9uV2lkdGg7DQogICAgICAgIGludCBpQ2FwdGlvbkhlaWdodDsNCiAgICAgICAgTE9HRk9OVEEg
bGZDYXB0aW9uRm9udDsNCiAgICAgICAgaW50IGlTbUNhcHRpb25XaWR0aDsNCiAgICAgICAgaW50
IGlTbUNhcHRpb25IZWlnaHQ7DQogICAgICAgIExPR0ZPTlRBIGxmU21DYXB0aW9uRm9udDsNCiAg
ICAgICAgaW50IGlNZW51V2lkdGg7DQogICAgICAgIGludCBpTWVudUhlaWdodDsNCiAgICAgICAg
TE9HRk9OVEEgbGZNZW51Rm9udDsNCiAgICAgICAgTE9HRk9OVEEgbGZTdGF0dXNGb250Ow0KICAg
ICAgICBMT0dGT05UQSBsZk1lc3NhZ2VGb250Ow0KfSBOT05DTElFTlRNRVRSSUNTQSwqTFBOT05D
TElFTlRNRVRSSUNTQTsNCnR5cGVkZWYgc3RydWN0IHRhZ05PTkNMSUVOVE1FVFJJQ1NXIHsNCiAg
ICAgICAgVUlOVCBjYlNpemU7DQogICAgICAgIGludCBpQm9yZGVyV2lkdGg7DQogICAgICAgIGlu
dCBpU2Nyb2xsV2lkdGg7DQogICAgICAgIGludCBpU2Nyb2xsSGVpZ2h0Ow0KICAgICAgICBpbnQg
aUNhcHRpb25XaWR0aDsNCiAgICAgICAgaW50IGlDYXB0aW9uSGVpZ2h0Ow0KICAgICAgICBMT0dG
T05UVyBsZkNhcHRpb25Gb250Ow0KICAgICAgICBpbnQgaVNtQ2FwdGlvbldpZHRoOw0KICAgICAg
ICBpbnQgaVNtQ2FwdGlvbkhlaWdodDsNCiAgICAgICAgTE9HRk9OVFcgbGZTbUNhcHRpb25Gb250
Ow0KICAgICAgICBpbnQgaU1lbnVXaWR0aDsNCiAgICAgICAgaW50IGlNZW51SGVpZ2h0Ow0KICAg
ICAgICBMT0dGT05UVyBsZk1lbnVGb250Ow0KICAgICAgICBMT0dGT05UVyBsZlN0YXR1c0ZvbnQ7
DQogICAgICAgIExPR0ZPTlRXIGxmTWVzc2FnZUZvbnQ7DQp9IE5PTkNMSUVOVE1FVFJJQ1NXLCpM
UE5PTkNMSUVOVE1FVFJJQ1NXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnU0VSSUFMS0VZU0Egew0KICAg
ICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCiAgICAgICAgTFBTVFIg
bHBzekFjdGl2ZVBvcnQ7DQogICAgICAgIExQU1RSIGxwc3pQb3J0Ow0KICAgICAgICBVSU5UIGlC
YXVkUmF0ZTsNCiAgICAgICAgVUlOVCBpUG9ydFN0YXRlOw0KICAgICAgICBVSU5UIGlBY3RpdmU7
DQp9IFNFUklBTEtFWVNBLCpMUFNFUklBTEtFWVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnU0VSSUFM
S0VZU1cgew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCiAg
ICAgICAgTFBXU1RSIGxwc3pBY3RpdmVQb3J0Ow0KICAgICAgICBMUFdTVFIgbHBzelBvcnQ7DQog
ICAgICAgIFVJTlQgaUJhdWRSYXRlOw0KICAgICAgICBVSU5UIGlQb3J0U3RhdGU7DQogICAgICAg
IFVJTlQgaUFjdGl2ZTsNCn0gU0VSSUFMS0VZU1csKkxQU0VSSUFMS0VZU1c7DQp0eXBlZGVmIHN0
cnVjdCB0YWdTT1VORFNFTlRSWUEgew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgRFdP
UkQgZHdGbGFnczsNCiAgICAgICAgRFdPUkQgaUZTVGV4dEVmZmVjdDsNCiAgICAgICAgRFdPUkQg
aUZTVGV4dEVmZmVjdE1TZWM7DQogICAgICAgIERXT1JEIGlGU1RleHRFZmZlY3RDb2xvckJpdHM7
DQogICAgICAgIERXT1JEIGlGU0dyYWZFZmZlY3Q7DQogICAgICAgIERXT1JEIGlGU0dyYWZFZmZl
Y3RNU2VjOw0KICAgICAgICBEV09SRCBpRlNHcmFmRWZmZWN0Q29sb3I7DQogICAgICAgIERXT1JE
IGlXaW5kb3dzRWZmZWN0Ow0KICAgICAgICBEV09SRCBpV2luZG93c0VmZmVjdE1TZWM7DQogICAg
ICAgIExQU1RSIGxwc3pXaW5kb3dzRWZmZWN0RExMOw0KICAgICAgICBEV09SRCBpV2luZG93c0Vm
ZmVjdE9yZGluYWw7DQp9IFNPVU5EU0VOVFJZQSwqTFBTT1VORFNFTlRSWUE7DQp0eXBlZGVmIHN0
cnVjdCB0YWdTT1VORFNFTlRSWVcgew0KICAgICAgICBVSU5UIGNiU2l6ZTsNCiAgICAgICAgRFdP
UkQgZHdGbGFnczsNCiAgICAgICAgRFdPUkQgaUZTVGV4dEVmZmVjdDsNCiAgICAgICAgRFdPUkQg
aUZTVGV4dEVmZmVjdE1TZWM7DQogICAgICAgIERXT1JEIGlGU1RleHRFZmZlY3RDb2xvckJpdHM7
DQogICAgICAgIERXT1JEIGlGU0dyYWZFZmZlY3Q7DQogICAgICAgIERXT1JEIGlGU0dyYWZFZmZl
Y3RNU2VjOw0KICAgICAgICBEV09SRCBpRlNHcmFmRWZmZWN0Q29sb3I7DQogICAgICAgIERXT1JE
IGlXaW5kb3dzRWZmZWN0Ow0KICAgICAgICBEV09SRCBpV2luZG93c0VmZmVjdE1TZWM7DQogICAg
ICAgIExQV1NUUiBscHN6V2luZG93c0VmZmVjdERMTDsNCiAgICAgICAgRFdPUkQgaVdpbmRvd3NF
ZmZlY3RPcmRpbmFsOw0KfSBTT1VORFNFTlRSWVcsKkxQU09VTkRTRU5UUllXOw0KdHlwZWRlZiBz
dHJ1Y3QgdGFnU1RJQ0tZS0VZUyB7DQogICAgICAgIERXT1JEIGNiU2l6ZTsNCiAgICAgICAgRFdP
UkQgZHdGbGFnczsNCn0gU1RJQ0tZS0VZUywqTFBTVElDS1lLRVlTOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnVE9HR0xFS0VZUyB7DQogICAgICAgIERXT1JEIGNiU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdG
bGFnczsNCn0gVE9HR0xFS0VZUzsNCnR5cGVkZWYgc3RydWN0IHRhZ1RSQUNLTU9VU0VFVkVOVCB7
DQogICAgICAgIERXT1JEIGNiU2l6ZTsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCiAgICAgICAg
SFdORCBod25kVHJhY2s7DQogICAgICAgIERXT1JEIGR3SG92ZXJUaW1lOw0KfSBUUkFDS01PVVNF
RVZFTlQsKkxQVFJBQ0tNT1VTRUVWRU5UOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnVFBNUEFSQU1TIHsN
CiAgICAgICAgVUlOVCBjYlNpemU7DQogICAgICAgIFJFQ1QgcmNFeGNsdWRlOw0KfSBUUE1QQVJB
TVMsKkxQVFBNUEFSQU1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRVZFTlRNU0cgew0KICAgICAgICBV
SU5UIG1lc3NhZ2U7DQogICAgICAgIFVJTlQgcGFyYW1MOw0KICAgICAgICBVSU5UIHBhcmFtSDsN
CiAgICAgICAgRFdPUkQgdGltZTsNCiAgICAgICAgSFdORCBod25kOw0KfSBFVkVOVE1TRywqUEVW
RU5UTVNHTVNHLCpMUEVWRU5UTVNHTVNHLCAqUEVWRU5UTVNHLCAqTFBFVkVOVE1TRzsNCnR5cGVk
ZWYgc3RydWN0IF9XSU5ET1dQT1Mgew0KICAgICAgICBIV05EIGh3bmQ7DQogICAgICAgIEhXTkQg
aHduZEluc2VydEFmdGVyOw0KICAgICAgICBpbnQgeDsNCiAgICAgICAgaW50IHk7DQogICAgICAg
IGludCBjeDsNCiAgICAgICAgaW50IGN5Ow0KICAgICAgICBVSU5UIGZsYWdzOw0KfSBXSU5ET1dQ
T1MsKlBXSU5ET1dQT1MsKkxQV0lORE9XUE9TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTURJQ1JFQVRF
U1RSVUNUQSB7DQogICAgICAgIExQQ1NUUiBzekNsYXNzOw0KICAgICAgICBMUENTVFIgc3pUaXRs
ZTsNCiAgICAgICAgSEFORExFIGhPd25lcjsNCiAgICAgICAgaW50IHg7DQogICAgICAgIGludCB5
Ow0KICAgICAgICBpbnQgY3g7DQogICAgICAgIGludCBjeTsNCiAgICAgICAgRFdPUkQgc3R5bGU7
DQogICAgICAgIExQQVJBTSBsUGFyYW07DQp9IE1ESUNSRUFURVNUUlVDVEEsKkxQTURJQ1JFQVRF
U1RSVUNUQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01ESUNSRUFURVNUUlVDVFcgew0KICAgICAgICBM
UENXU1RSIHN6Q2xhc3M7DQogICAgICAgIExQQ1dTVFIgc3pUaXRsZTsNCiAgICAgICAgSEFORExF
IGhPd25lcjsNCiAgICAgICAgaW50IHg7DQogICAgICAgIGludCB5Ow0KICAgICAgICBpbnQgY3g7
DQogICAgICAgIGludCBjeTsNCiAgICAgICAgRFdPUkQgc3R5bGU7DQogICAgICAgIExQQVJBTSBs
UGFyYW07DQp9IE1ESUNSRUFURVNUUlVDVFcsKkxQTURJQ1JFQVRFU1RSVUNUVzsNCnR5cGVkZWYg
c3RydWN0IHRhZ01JTk1BWElORk8gew0KICAgICAgICBQT0lOVCBwdFJlc2VydmVkOw0KICAgICAg
ICBQT0lOVCBwdE1heFNpemU7DQogICAgICAgIFBPSU5UIHB0TWF4UG9zaXRpb247DQogICAgICAg
IFBPSU5UIHB0TWluVHJhY2tTaXplOw0KICAgICAgICBQT0lOVCBwdE1heFRyYWNrU2l6ZTsNCn0g
TUlOTUFYSU5GTywqUE1JTk1BWElORk8sKkxQTUlOTUFYSU5GTzsNCnR5cGVkZWYgc3RydWN0IHRh
Z01ESU5FWFRNRU5VIHsNCiAgICAgICAgSE1FTlUgaG1lbnVJbjsNCiAgICAgICAgSE1FTlUgaG1l
bnVOZXh0Ow0KICAgICAgICBIV05EIGh3bmROZXh0Ow0KfSBNRElORVhUTUVOVSwqUE1ESU5FWFRN
RU5VLCpMUE1ESU5FWFRNRU5VOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVBU1VSRUlURU1TVFJVQ1Qg
ew0KICAgICAgICBVSU5UIEN0bFR5cGU7DQogICAgICAgIFVJTlQgQ3RsSUQ7DQogICAgICAgIFVJ
TlQgaXRlbUlEOw0KICAgICAgICBVSU5UIGl0ZW1XaWR0aDsNCiAgICAgICAgVUlOVCBpdGVtSGVp
Z2h0Ow0KICAgICAgICBEV09SRCBpdGVtRGF0YTsNCn0gTUVBU1VSRUlURU1TVFJVQ1QsKlBNRUFT
VVJFSVRFTVNUUlVDVCwqTFBNRUFTVVJFSVRFTVNUUlVDVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0RS
T1BTVFJVQ1Qgew0KICAgICAgICBIV05EIGh3bmRTb3VyY2U7DQogICAgICAgIEhXTkQgaHduZFNp
bms7DQogICAgICAgIERXT1JEIHdGbXQ7DQogICAgICAgIERXT1JEIGR3RGF0YTsNCiAgICAgICAg
UE9JTlQgcHREcm9wOw0KICAgICAgICBEV09SRCBkd0NvbnRyb2xEYXRhOw0KfSBEUk9QU1RSVUNU
LCpQRFJPUFNUUlVDVCwqTFBEUk9QU1RSVUNUOw0KdHlwZWRlZiBEV09SRCBIRUxQUE9MWTsNCnR5
cGVkZWYgc3RydWN0IHRhZ01VTFRJS0VZSEVMUEEgew0KICAgICAgICBEV09SRCBta1NpemU7DQog
ICAgICAgIENIQVIgbWtLZXlsaXN0Ow0KICAgICAgICBDSEFSIHN6S2V5cGhyYXNlWzFdOw0KfSBN
VUxUSUtFWUhFTFBBLCpQTVVMVElLRVlIRUxQQSwqTFBNVUxUSUtFWUhFTFBBOw0KdHlwZWRlZiBz
dHJ1Y3QgdGFnTVVMVElLRVlIRUxQVyB7DQogICAgICAgIERXT1JEIG1rU2l6ZTsNCiAgICAgICAg
V0NIQVIgbWtLZXlsaXN0Ow0KICAgICAgICBXQ0hBUiBzektleXBocmFzZVsxXTsNCn0gTVVMVElL
RVlIRUxQVywqUE1VTFRJS0VZSEVMUFcsKkxQTVVMVElLRVlIRUxQVzsNCnR5cGVkZWYgc3RydWN0
IHRhZ0hFTFBXSU5JTkZPQSB7DQogICAgICAgIGludCB3U3RydWN0U2l6ZTsNCiAgICAgICAgaW50
IHg7DQogICAgICAgIGludCB5Ow0KICAgICAgICBpbnQgZHg7DQogICAgICAgIGludCBkeTsNCiAg
ICAgICAgaW50IHdNYXg7DQogICAgICAgIENIQVIgcmdjaE1lbWJlclsyXTsNCn0gSEVMUFdJTklO
Rk9BLCpQSEVMUFdJTklORk9BLCpMUEhFTFBXSU5JTkZPQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0hF
TFBXSU5JTkZPVyB7DQogICAgICAgIGludCB3U3RydWN0U2l6ZTsNCiAgICAgICAgaW50IHg7DQog
ICAgICAgIGludCB5Ow0KICAgICAgICBpbnQgZHg7DQogICAgICAgIGludCBkeTsNCiAgICAgICAg
aW50IHdNYXg7DQogICAgICAgIFdDSEFSIHJnY2hNZW1iZXJbMl07DQp9IEhFTFBXSU5JTkZPVywq
UEhFTFBXSU5JTkZPVywqTFBIRUxQV0lOSU5GT1c7DQp0eXBlZGVmIHN0cnVjdCB0YWdTVFlMRVNU
UlVDVCB7DQogICAgICAgIERXT1JEIHN0eWxlT2xkOw0KICAgICAgICBEV09SRCBzdHlsZU5ldzsN
Cn0gU1RZTEVTVFJVQ1QsKkxQU1RZTEVTVFJVQ1Q7DQojIDI0NDggInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvd2ludXNlci5oIiAzDQpIS0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBB
Y3RpdmF0ZUtleWJvYXJkTGF5b3V0KEhLTCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBBZGp1c3RXaW5kb3dSZWN0KExQUkVDVCxEV09SRCxCT09MKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGp1c3RXaW5kb3dSZWN0RXgoTFBSRUNULERXT1JE
LEJPT0wsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFueVBvcHVw
KHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFwcGVuZE1lbnVBKEhN
RU5VLFVJTlQsVUlOVCxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEFwcGVuZE1lbnVXKEhNRU5VLFVJTlQsVUlOVCxMUENXU1RSKTsNClVJTlQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBBcnJhbmdlSWNvbmljV2luZG93cyhIV05EKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBBdHRhY2hUaHJlYWRJbnB1dChEV09SRCxEV09SRCxCT09M
KTsNCkhEV1AgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCZWdpbkRlZmVyV2luZG93UG9z
KGludCk7DQpIREMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCZWdpblBhaW50KEhXTkQs
TFBQQUlOVFNUUlVDVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQnJpbmdX
aW5kb3dUb1RvcChIV05EKTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBCcm9h
ZGNhc3RTeXN0ZW1NZXNzYWdlKERXT1JELExQRFdPUkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDYWxsTXNnRmlsdGVyKFBNU0csaW50KTsN
CkxSRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDYWxsTmV4dEhvb2tFeChISE9P
SyxpbnQsV1BBUkFNLExQQVJBTSk7DQpMUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgQ2FsbFdpbmRvd1Byb2NBKFdORFBST0MsSFdORCxVSU5ULFdQQVJBTSxMUEFSQU0pOw0KTFJF
U1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENhbGxXaW5kb3dQcm9jVyhXTkRQUk9D
LEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCldPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDYXNjYWRlV2luZG93cyhIV05ELFVJTlQsTFBDUkVDVCxVSU5ULGNvbnN0IEhXTkQqKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGFuZ2VDbGlwYm9hcmRDaGFpbihI
V05ELEhXTkQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYW5nZURpc3Bs
YXlTZXR0aW5nc0EoUERFVk1PREVBLERXT1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBDaGFuZ2VEaXNwbGF5U2V0dGluZ3NXKFBERVZNT0RFVyxEV09SRCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hhbmdlTWVudUEoSE1FTlUsVUlOVCxMUENTVFIs
VUlOVCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGFuZ2VNZW51
VyhITUVOVSxVSU5ULExQQ1dTVFIsVUlOVCxVSU5UKTsNCkxQU1RSIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgQ2hhckxvd2VyQShMUFNUUik7DQpMUFdTVFIgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDaGFyTG93ZXJXKExQV1NUUik7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIENoYXJMb3dlckJ1ZmZBKExQU1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ2hhckxvd2VyQnVmZlcoTFBXU1RSLERXT1JEKTsNCkxQU1RSIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hhck5leHRBKExQQ1NUUik7DQpMUFdTVFIgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGFyTmV4dFcoTFBDV1NUUik7DQpMUFNUUiBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJOZXh0RXhBKFdPUkQsTFBDU1RSLERXT1JEKTsN
CkxQV1NUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJOZXh0RXhXKFdPUkQsTFBD
V1NUUixEV09SRCk7DQpMUFNUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJQcmV2
QShMUENTVFIsTFBDU1RSKTsNCkxQV1NUUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENo
YXJQcmV2VyhMUENXU1RSLExQQ1dTVFIpOw0KTFBTVFIgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDaGFyUHJldkV4QShXT1JELExQQ1NUUixMUENTVFIsRFdPUkQpOw0KTFBXU1RSIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hhclByZXZFeFcoV09SRCxMUENXU1RSLExQQ1dTVFIs
RFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJUb09lbUEoTFBD
U1RSLExQU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGFyVG9PZW1X
KExQQ1dTVFIsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJU
b09lbUJ1ZmZBKExQQ1NUUixMUFNUUixEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgQ2hhclRvT2VtQnVmZlcoTFBDV1NUUixMUFNUUixEV09SRCk7DQpMUFNUUiBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJVcHBlckEoTFBTVFIpOw0KTFBXU1RSIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hhclVwcGVyVyhMUFdTVFIpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGFyVXBwZXJCdWZmQShMUFNUUixEV09SRCk7DQpEV09S
RCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoYXJVcHBlckJ1ZmZXKExQV1NUUixEV09S
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hlY2tEbGdCdXR0b24oSFdO
RCxpbnQsVUlOVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENoZWNrTWVu
dUl0ZW0oSE1FTlUsVUlOVCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBDaGVja01lbnVSYWRpb0l0ZW0oSE1FTlUsVUlOVCxVSU5ULFVJTlQsVUlOVCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hlY2tSYWRpb0J1dHRvbihIV05ELGludCxpbnQs
aW50KTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGlsZFdpbmRvd0Zyb21Q
b2ludChIV05ELFBPSU5UKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaGls
ZFdpbmRvd0Zyb21Qb2ludEV4KEhXTkQsUE9JTlQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ2xpZW50VG9TY3JlZW4oSFdORCxMUFBPSU5UKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBDbGlwQ3Vyc29yKExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIENsb3NlQ2xpcGJvYXJkKHZvaWQpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIENsb3NlRGVza3RvcChIREVTSyk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgQ2xvc2VXaW5kb3coSFdORCk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ2xvc2VXaW5kb3dTdGF0aW9uKEhXSU5TVEEpOw0KaW50IF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29weUFjY2VsZXJhdG9yVGFibGVBKEhBQ0NFTCxMUEFD
Q0VMLGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3B5QWNjZWxlcmF0
b3JUYWJsZVcoSEFDQ0VMLExQQUNDRUwsaW50KTsNCkhDVVJTT1IgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDb3B5Q3Vyc29yKEhDVVJTT1IpOw0KSElDT04gX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBDb3B5SWNvbihISUNPTik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBDb3B5SW1hZ2UoSEFORExFLFVJTlQsaW50LGludCxVSU5UKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3B5UmVjdChMUFJFQ1QsTFBDUkVDVCk7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3VudENsaXBib2FyZEZvcm1hdHModm9pZCk7DQpI
QUNDRUwgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVBY2NlbGVyYXRvclRhYmxl
QShMUEFDQ0VMLGludCk7DQpIQUNDRUwgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVh
dGVBY2NlbGVyYXRvclRhYmxlVyhMUEFDQ0VMLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgQ3JlYXRlQ2FyZXQoSFdORCxIQklUTUFQLGludCxpbnQpOw0KSENVUlNPUiBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZUN1cnNvcihISU5TVEFOQ0UsaW50LGlu
dCxpbnQsaW50LFBDVk9JRCxQQ1ZPSUQpOw0KSERFU0sgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBDcmVhdGVEZXNrdG9wQShMUFNUUixMUFNUUixMUERFVk1PREVBLERXT1JELERXT1JELExQ
U0VDVVJJVFlfQVRUUklCVVRFUyk7DQpIREVTSyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IENyZWF0ZURlc2t0b3BXKExQV1NUUixMUFdTVFIsTFBERVZNT0RFVyxEV09SRCxEV09SRCxMUFNF
Q1VSSVRZX0FUVFJJQlVURVMpOw0KDQoNCg0KDQpIV05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbUEoSElOU1RBTkNFLExQQ0RMR1RFTVBMQVRF
LEhXTkQsRExHUFJPQyxMUEFSQU0pOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IENyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1XKEhJTlNUQU5DRSxMUENETEdURU1QTEFURSxIV05E
LERMR1BST0MsTFBBUkFNKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVh
dGVEaWFsb2dQYXJhbUEoSElOU1RBTkNFLExQQ1NUUixIV05ELERMR1BST0MsTFBBUkFNKTsNCkhX
TkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVEaWFsb2dQYXJhbVcoSElOU1RB
TkNFLExQQ1dTVFIsSFdORCxETEdQUk9DLExQQVJBTSk7DQpISUNPTiBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIENyZWF0ZUljb24oSElOU1RBTkNFLGludCxpbnQsQllURSxCWVRFLGNvbnN0
IEJZVEUqLGNvbnN0IEJZVEUqKTsNCkhJQ09OIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
Q3JlYXRlSWNvbkZyb21SZXNvdXJjZShQQllURSxEV09SRCxCT09MLERXT1JEKTsNCkhJQ09OIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlSWNvbkZyb21SZXNvdXJjZUV4KFBCWVRF
LERXT1JELEJPT0wsRFdPUkQsaW50LGludCxVSU5UKTsNCkhJQ09OIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgQ3JlYXRlSWNvbkluZGlyZWN0KFBJQ09OSU5GTyk7DQpIV05EIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlTURJV2luZG93QShMUFNUUixMUFNUUixEV09SRCxp
bnQsaW50LGludCxpbnQsSFdORCxISU5TVEFOQ0UsTFBBUkFNKTsNCkhXTkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBDcmVhdGVNRElXaW5kb3dXKExQV1NUUixMUFdTVFIsRFdPUkQsaW50
LGludCxpbnQsaW50LEhXTkQsSElOU1RBTkNFLExQQVJBTSk7DQpITUVOVSBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIENyZWF0ZU1lbnUodm9pZCk7DQpITUVOVSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIENyZWF0ZVBvcHVwTWVudSh2b2lkKTsNCg0KDQpIV05EIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlV2luZG93RXhBKERXT1JELExQQ1NUUixMUENTVFIsRFdP
UkQsaW50LGludCxpbnQsaW50LEhXTkQsSE1FTlUsSElOU1RBTkNFLExQVk9JRCk7DQpIV05EIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ3JlYXRlV2luZG93RXhXKERXT1JELExQQ1dTVFIs
TFBDV1NUUixEV09SRCxpbnQsaW50LGludCxpbnQsSFdORCxITUVOVSxISU5TVEFOQ0UsTFBWT0lE
KTsNCkhXSU5TVEEgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVXaW5kb3dTdGF0
aW9uQShMUFNUUixEV09SRCxEV09SRCxMUFNFQ1VSSVRZX0FUVFJJQlVURVMpOw0KSFdJTlNUQSBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENyZWF0ZVdpbmRvd1N0YXRpb25XKExQV1NUUixE
V09SRCxEV09SRCxMUFNFQ1VSSVRZX0FUVFJJQlVURVMpOw0KTFJFU1VMVCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlZkRsZ1Byb2NBKEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCkxS
RVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWZEbGdQcm9jVyhIV05ELFVJTlQs
V1BBUkFNLExQQVJBTSk7DQpIRFdQIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVmZXJX
aW5kb3dQb3MoSERXUCxIV05ELEhXTkQsaW50LGludCxpbnQsaW50LFVJTlQpOw0KTFJFU1VMVCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlZkZyYW1lUHJvY0EoSFdORCxIV05ELFVJTlQs
V1BBUkFNLExQQVJBTSk7DQpMUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVm
RnJhbWVQcm9jVyhIV05ELEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCg0KTFJFU1VMVCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlZk1ESUNoaWxkUHJvY0EoSFdORCxVSU5ULFdQQVJB
TSxMUEFSQU0pOw0KTFJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlZk1ESUNo
aWxkUHJvY1coSFdORCxVSU5ULFdQQVJBTSxMUEFSQU0pOw0KTFJFU1VMVCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlZldpbmRvd1Byb2NBKEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsN
CkxSRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWZXaW5kb3dQcm9jVyhIV05E
LFVJTlQsV1BBUkFNLExQQVJBTSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RGVsZXRlTWVudShITUVOVSxVSU5ULFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlKEhBQ0NFTCk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgRGVzdHJveUNhcmV0KHZvaWQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlc3Ryb3lDdXJzb3IoSENVUlNPUik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgRGVzdHJveUljb24oSElDT04pOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERlc3Ryb3lNZW51KEhNRU5VKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBEZXN0cm95V2luZG93KEhXTkQpOw0KDQoNCg0KDQppbnQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtQShISU5TVEFOQ0UsTFBD
RExHVEVNUExBVEUsSFdORCxETEdQUk9DLExQQVJBTSk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtVyhISU5TVEFOQ0UsTFBDRExHVEVNUExB
VEUsSFdORCxETEdQUk9DLExQQVJBTSk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBEaWFsb2dCb3hQYXJhbUEoSElOU1RBTkNFLExQQ1NUUixIV05ELERMR1BST0MsTFBBUkFNKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERpYWxvZ0JveFBhcmFtVyhISU5TVEFO
Q0UsTFBDV1NUUixIV05ELERMR1BST0MsTFBBUkFNKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBEaXNwYXRjaE1lc3NhZ2VBKGNvbnN0IE1TRyopOw0KTE9ORyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIERpc3BhdGNoTWVzc2FnZVcoY29uc3QgTVNHKik7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEbGdEaXJMaXN0QShIV05ELExQU1RSLGludCxpbnQs
VUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEbGdEaXJMaXN0VyhIV05E
LExQV1NUUixpbnQsaW50LFVJTlQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RGxnRGlyTGlzdENvbWJvQm94QShIV05ELExQU1RSLGludCxpbnQsVUlOVCk7DQppbnQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBEbGdEaXJMaXN0Q29tYm9Cb3hXKEhXTkQsTFBXU1RSLGlu
dCxpbnQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGxnRGlyU2Vs
ZWN0Q29tYm9Cb3hFeEEoSFdORCxMUFNUUixpbnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBEbGdEaXJTZWxlY3RDb21ib0JveEV4VyhIV05ELExQV1NUUixpbnQsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEbGdEaXJTZWxlY3RFeEEoSFdO
RCxMUFNUUixpbnQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEbGdE
aXJTZWxlY3RFeFcoSFdORCxMUFdTVFIsaW50LGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRHJhZ0RldGVjdChIV05ELFBPSU5UKTsNCkRXT1JEIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRHJhZ09iamVjdChIV05ELEhXTkQsVUlOVCxEV09SRCxIQ1VSU09SKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEcmF3QW5pbWF0ZWRSZWN0cyhIV05E
LGludCxMUENSRUNULExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IERyYXdDYXB0aW9uKEhXTkQsSERDLExQQ1JFQ1QsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRHJhd0VkZ2UoSERDLExQUkVDVCxVSU5ULFVJTlQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERyYXdGb2N1c1JlY3QoSERDLExQQ1JFQ1QpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERyYXdGcmFtZUNvbnRyb2woSERDLExQUkVD
VCxVSU5ULFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERyYXdJY29u
KEhEQyxpbnQsaW50LEhJQ09OKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBE
cmF3SWNvbkV4KEhEQyxpbnQsaW50LEhJQ09OLGludCxpbnQsVUlOVCxIQlJVU0gsVUlOVCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd01lbnVCYXIoSFdORCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd1N0YXRlQShIREMsSEJSVVNILERSQVdT
VEFURVBST0MsTFBBUkFNLFdQQVJBTSxpbnQsaW50LGludCxpbnQsVUlOVCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd1N0YXRlVyhIREMsSEJSVVNILERSQVdTVEFURVBS
T0MsTFBBUkFNLFdQQVJBTSxpbnQsaW50LGludCxpbnQsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBEcmF3VGV4dEEoSERDLExQQ1NUUixpbnQsTFBSRUNULFVJTlQpOw0K
aW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd1RleHRXKEhEQyxMUENXU1RSLGlu
dCxMUFJFQ1QsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEcmF3VGV4
dEV4QShIREMsTFBTVFIsaW50LExQUkVDVCxVSU5ULExQRFJBV1RFWFRQQVJBTVMpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhd1RleHRFeFcoSERDLExQV1NUUixpbnQsTFBS
RUNULFVJTlQsTFBEUkFXVEVYVFBBUkFNUyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRW1wdHlDbGlwYm9hcmQodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRW5hYmxlTWVudUl0ZW0oSE1FTlUsVUlOVCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBFbmFibGVTY3JvbGxCYXIoSFdORCxVSU5ULFVJTlQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVuYWJsZVdpbmRvdyhIV05ELEJPT0wpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVuZERlZmVyV2luZG93UG9zKEhEV1ApOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVuZERpYWxvZyhIV05ELGludCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW5kUGFpbnQoSFdORCxjb25zdCBQQUlO
VFNUUlVDVCopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1DaGlsZFdp
bmRvd3MoSFdORCxFTlVNV0lORE9XU1BST0MsTFBBUkFNKTsNClVJTlQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBFbnVtQ2xpcGJvYXJkRm9ybWF0cyhVSU5UKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBFbnVtRGVza3RvcHNBKEhXSU5TVEEsREVTS1RPUEVOVU1QUk9D
QSxMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1EZXNrdG9w
c1coSFdJTlNUQSxERVNLVE9QRU5VTVBST0NXLExQQVJBTSk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRW51bURlc2t0b3BXaW5kb3dzKEhERVNLLEVOVU1XSU5ET1dTUFJPQyxM
UEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1EaXNwbGF5U2V0
dGluZ3NBKExQQ1NUUixEV09SRCxQREVWTU9ERUEpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEVudW1EaXNwbGF5U2V0dGluZ3NXKExQQ1dTVFIsRFdPUkQsUERFVk1PREVXKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Qcm9wc0EoSFdORCxQUk9QRU5V
TVBST0NBKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Qcm9wc1coSFdO
RCxQUk9QRU5VTVBST0NXKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Q
cm9wc0V4QShIV05ELFBST1BFTlVNUFJPQ0VYQSxMUEFSQU0pOw0KaW50IF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRW51bVByb3BzRXhXKEhXTkQsUFJPUEVOVU1QUk9DRVhXLExQQVJBTSk7
DQoNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtVGhyZWFkV2luZG93cyhE
V09SRCxXTkRFTlVNUFJPQyxMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEVudW1XaW5kb3dzKFdOREVOVU1QUk9DLExQQVJBTSk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRW51bVdpbmRvd1N0YXRpb25zQShXSU5TVEFFTlVNUFJPQ0EsTFBBUkFN
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtV2luZG93U3RhdGlvbnNX
KFdJTlNUQUVOVU1QUk9DVyxMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEVxdWFsUmVjdChMUENSRUNULExQQ1JFQ1QpOw0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRXhpdFdpbmRvd3NFeChVSU5ULERXT1JEKTsNCkhXTkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBGaW5kV2luZG93QShMUENTVFIsTFBDU1RSKTsNCkhXTkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaW5kV2luZG93RXhBKEhXTkQsSFdORCxMUENTVFIsTFBD
U1RSKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGaW5kV2luZG93RXhXKEhX
TkQsSFdORCxMUENXU1RSLExQQ1dTVFIpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEZpbmRXaW5kb3dXKExQQ1dTVFIsTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRmxhc2hXaW5kb3coSFdORCxCT09MKTsNCmludCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEZyYW1lUmVjdChIREMsTFBDUkVDVCxIQlJVU0gpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZyYW1lUmduKEhEQyxIUkdOLEhCUlVTSCxpbnQsaW50KTsN
CkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRBY3RpdmVXaW5kb3codm9pZCk7
DQpTSE9SVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEFzeW5jS2V5U3RhdGUoaW50
KTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDYXB0dXJlKHZvaWQpOw0K
VUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENhcmV0QmxpbmtUaW1lKHZvaWQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENhcmV0UG9zKExQUE9JTlQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENsYXNzSW5mb0EoSElOU1RB
TkNFLExQQ1NUUixQV05EQ0xBU1NBKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRDbGFzc0luZm9FeEEoSElOU1RBTkNFLExQQ1NUUixQV05EQ0xBU1NFWEEpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENsYXNzSW5mb1coSElOU1RBTkNFLExQQ1dT
VFIsUFdORENMQVNTVyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xh
c3NJbmZvRXhXKEhJTlNUQU5DRSxMUENXU1RSLFBXTkRDTEFTU0VYVyk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENsYXNzTG9uZ0EoSFdORCxpbnQpOw0KRFdPUkQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDbGFzc0xvbmdXKEhXTkQsaW50KTsNCmludCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENsYXNzTmFtZUEoSFdORCxMUFNUUixpbnQp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xhc3NOYW1lVyhIV05ELExQ
V1NUUixpbnQpOw0KV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENsYXNzV29y
ZChIV05ELGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xpZW50
UmVjdChIV05ELExQUkVDVCk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBH
ZXRDbGlwYm9hcmREYXRhKFVJTlQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0Q2xpcGJvYXJkRm9ybWF0TmFtZUEoVUlOVCxMUFNUUixpbnQpOw0KaW50IF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xpcGJvYXJkRm9ybWF0TmFtZVcoVUlOVCxMUFdTVFIsaW50
KTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDbGlwYm9hcmRPd25lcih2
b2lkKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDbGlwYm9hcmRWaWV3
ZXIodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0Q2xpcEN1cnNv
cihMUFJFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEN1cnNvclBv
cyhMUFBPSU5UKTsNCkhEQyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERDKEhXTkQp
Ow0KSERDIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RENFeChIV05ELEhSR04sRFdP
UkQpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERlc2t0b3BXaW5kb3co
dm9pZCk7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RGlhbG9nQmFzZVVu
aXRzKHZvaWQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RGxnQ3RybElE
KEhXTkQpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERsZ0l0ZW0oSFdO
RCxpbnQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERsZ0l0ZW1JbnQo
SFdORCxpbnQsUEJPT0wsQk9PTCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0RGxnSXRlbVRleHRBKEhXTkQsaW50LExQU1RSLGludCk7DQpVSU5UIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0RGxnSXRlbVRleHRXKEhXTkQsaW50LExQV1NUUixpbnQpOw0KVUlO
VCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERvdWJsZUNsaWNrVGltZSh2b2lkKTsN
CkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRGb2N1cyh2b2lkKTsNCkhXTkQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRGb3JlZ3JvdW5kV2luZG93KHZvaWQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEljb25JbmZvKEhJQ09OLFBJQ09O
SU5GTyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0SW5wdXRTdGF0ZSh2
b2lkKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRLQkNvZGVQYWdlKHZv
aWQpOw0KSEtMIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0S2V5Ym9hcmRMYXlvdXQo
RFdPUkQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0S2V5Ym9hcmRMYXlv
dXRMaXN0KGludCxIS0wqKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRL
ZXlib2FyZExheW91dE5hbWVBKExQU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRLZXlib2FyZExheW91dE5hbWVXKExQV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0S2V5Ym9hcmRTdGF0ZShQQllURSk7DQppbnQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRLZXlib2FyZFR5cGUoaW50KTsNCmludCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldEtleU5hbWVUZXh0QShMT05HLExQU1RSLGludCk7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRLZXlOYW1lVGV4dFcoTE9ORyxMUFdTVFIsaW50
KTsNClNIT1JUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0S2V5U3RhdGUoaW50KTsN
CkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRMYXN0QWN0aXZlUG9wdXAoSFdO
RCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldExhc3RFcnJvcih2b2lk
KTsNCkhNRU5VIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWVudShIV05EKTsNCkxP
TkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRNZW51Q2hlY2tNYXJrRGltZW5zaW9u
cyh2b2lkKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWVudUNvbnRl
eHRIZWxwSWQoSE1FTlUpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE1l
bnVEZWZhdWx0SXRlbShITUVOVSxVSU5ULFVJTlQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0TWVudUl0ZW1Db3VudChITUVOVSk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0TWVudUl0ZW1JRChITUVOVSxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldE1lbnVJdGVtSW5mb0EoSE1FTlUsVUlOVCxCT09MLExQTUVOVUlU
RU1JTkZPQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWVudUl0ZW1J
bmZvVyhITUVOVSxVSU5ULEJPT0wsTFBNRU5VSVRFTUlORk9XKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRNZW51SXRlbVJlY3QoSFdORCxITUVOVSxVSU5ULExQUkVDVCk7
DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWVudVN0YXRlKEhNRU5VLFVJ
TlQsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRNZW51U3RyaW5n
QShITUVOVSxVSU5ULExQU1RSLGludCxVSU5UKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldE1lbnVTdHJpbmdXKEhNRU5VLFVJTlQsTFBXU1RSLGludCxVSU5UKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRNZXNzYWdlQShMUE1TRyxIV05ELFVJTlQs
VUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TWVzc2FnZVcoTFBN
U0csSFdORCxVSU5ULFVJTlQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dE1lc3NhZ2VFeHRyYUluZm8odm9pZCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldE1lc3NhZ2VQb3Modm9pZCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0TWVzc2FnZVRpbWUodm9pZCk7DQpIV05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0TmV4dERsZ0dyb3VwSXRlbShIV05ELEhXTkQsQk9PTCk7DQpIV05EIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0TmV4dERsZ1RhYkl0ZW0oSFdORCxIV05ELEJPT0wpOw0KDQpI
V05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0T3BlbkNsaXBib2FyZFdpbmRvdyh2
b2lkKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQYXJlbnQoSFdORCk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcmlvcml0eUNsaXBib2FyZEZv
cm1hdChVSU5UKixpbnQpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
UHJvcEEoSFdORCxMUENTVFIpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0UHJvcFcoSFdORCxMUENXU1RSKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0UXVldWVTdGF0dXMoVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgR2V0U2Nyb2xsSW5mbyhIV05ELGludCxMUFNDUk9MTElORk8pOw0KaW50IF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgR2V0U2Nyb2xsUG9zKEhXTkQsaW50KTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRTY3JvbGxSYW5nZShIV05ELGludCxMUElOVCxMUElOVCk7
DQpITUVOVSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFN1Yk1lbnUoSE1FTlUsaW50
KTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U3lzQ29sb3IoaW50KTsN
CkhCUlVTSCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFN5c0NvbG9yQnJ1c2goaW50
KTsNCg0KSE1FTlUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTeXN0ZW1NZW51KEhX
TkQsQk9PTCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTeXN0ZW1NZXRy
aWNzKGludCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRhYmJlZFRl
eHRFeHRlbnRBKEhEQyxMUENTVFIsaW50LGludCxMUElOVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldFRhYmJlZFRleHRFeHRlbnRXKEhEQyxMUENXU1RSLGludCxpbnQs
TFBJTlQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdpbmRvd0xvbmdB
KEhXTkQsaW50KTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dM
b25nVyhIV05ELGludCk7DQpIREVTSyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRo
cmVhZERlc2t0b3AoRFdPUkQpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdl
dFRvcFdpbmRvdyhIV05EKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRV
cGRhdGVSZWN0KEhXTkQsTFBSRUNULEJPT0wpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0VXBkYXRlUmduKEhXTkQsSFJHTixCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25BKEhBTkRMRSxpbnQsUFZPSUQs
RFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRVc2Vy
T2JqZWN0SW5mb3JtYXRpb25XKEhBTkRMRSxpbnQsUFZPSUQsRFdPUkQsUERXT1JEKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRVc2VyT2JqZWN0U2VjdXJpdHkoSEFORExF
LFBTRUNVUklUWV9JTkZPUk1BVElPTixQU0VDVVJJVFlfREVTQ1JJUFRPUixEV09SRCxQRFdPUkQp
Ow0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdpbmRvdyhIV05ELFVJTlQp
Ow0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dDb250ZXh0SGVs
cElkKEhXTkQpOw0KSERDIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2luZG93REMo
SFdORCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2luZG93RXh0RXgo
SERDLExQU0laRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2luZG93
UGxhY2VtZW50KEhXTkQsV0lORE9XUExBQ0VNRU5UKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgR2V0V2luZG93UmVjdChIV05ELExQUkVDVCk7DQppbnQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dSZ24oSFdORCxIUkdOKTsNCg0KaW50IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2luZG93VGV4dEEoSFdORCxMUFNUUixpbnQpOw0KaW50
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2luZG93VGV4dExlbmd0aEEoSFdORCk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRXaW5kb3dUZXh0TGVuZ3RoVyhI
V05EKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFdpbmRvd1RleHRXKEhX
TkQsTFBXU1RSLGludCk7DQpXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0V2lu
ZG93V29yZChIV05ELGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR3Jh
eVN0cmluZ0EoSERDLEhCUlVTSCxHUkFZU1RSSU5HUFJPQyxMUEFSQU0saW50LGludCxpbnQsaW50
LGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR3JheVN0cmluZ1coSERD
LEhCUlVTSCxHUkFZU1RSSU5HUFJPQyxMUEFSQU0saW50LGludCxpbnQsaW50LGludCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSGlkZUNhcmV0KEhXTkQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEhpbGl0ZU1lbnVJdGVtKEhXTkQsSE1FTlUsVUlOVCxV
SU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJbmZsYXRlUmVjdChMUFJF
Q1QsaW50LGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSW5TZW5kTWVz
c2FnZSh2b2lkKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJbnNlcnRNZW51
QShITUVOVSxVSU5ULFVJTlQsVUlOVCxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEluc2VydE1lbnVXKEhNRU5VLFVJTlQsVUlOVCxVSU5ULExQQ1dTVFIpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEluc2VydE1lbnVJdGVtQShITUVOVSxVSU5U
LEJPT0wsTFBDTUVOVUlURU1JTkZPQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgSW5zZXJ0TWVudUl0ZW1XKEhNRU5VLFVJTlQsQk9PTCxMUENNRU5VSVRFTUlORk9XKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJbnRlcnNlY3RSZWN0KExQUkVDVCxMUENS
RUNULExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEludmFsaWRh
dGVSZWN0KEhXTkQsTFBDUkVDVCxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBJbnZhbGlkYXRlUmduKEhXTkQsSFJHTixCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBJbnZlcnRSZWN0KEhEQyxMUENSRUNUKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBJc0NoYXJBbHBoYUEoQ0hBUiBjaCk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgSXNDaGFyQWxwaGFOdW1lcmljQShDSEFSKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0NoYXJBbHBoYU51bWVyaWNXKFdDSEFSKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0NoYXJBbHBoYVcoV0NIQVIpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzQ2hhckxvd2VyQShDSEFSKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0NoYXJMb3dlclcoV0NIQVIpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzQ2hhclVwcGVyQShDSEFSKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0NoYXJVcHBlclcoV0NIQVIpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzQ2hpbGQoSFdORCxIV05EKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShVSU5UKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc0RpYWxvZ01lc3NhZ2VBKEhXTkQsTFBN
U0cpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzRGlhbG9nTWVzc2FnZVco
SFdORCxMUE1TRyk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSXNEbGdCdXR0
b25DaGVja2VkKEhXTkQsaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJ
c0ljb25pYyhIV05EKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc01lbnUo
SE1FTlUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzUmVjdEVtcHR5KExQ
Q1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzV2luZG93KEhXTkQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzV2luZG93RW5hYmxlZChIV05E
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJc1dpbmRvd1VuaWNvZGUoSFdO
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSXNXaW5kb3dWaXNpYmxlKEhX
TkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElzWm9vbWVkKEhXTkQpOw0K
dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGtleWJkX2V2ZW50KEJZVEUsQllURSxE
V09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgS2lsbFRpbWVy
KEhXTkQsVUlOVCk7DQpIQUNDRUwgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2FkQWNj
ZWxlcmF0b3JzQShISU5TVEFOQ0UsTFBDU1RSKTsNCkhBQ0NFTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIExvYWRBY2NlbGVyYXRvcnNXKEhJTlNUQU5DRSxMUENXU1RSKTsNCkhCSVRNQVAg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2FkQml0bWFwQShISU5TVEFOQ0UsTFBDU1RS
KTsNCkhCSVRNQVAgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2FkQml0bWFwVyhISU5T
VEFOQ0UsTFBDV1NUUik7DQpIQ1VSU09SIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9h
ZEN1cnNvckEoSElOU1RBTkNFLExQQ1NUUik7DQpIQ1VSU09SIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgTG9hZEN1cnNvckZyb21GaWxlQShMUENTVFIpOw0KSENVUlNPUiBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIExvYWRDdXJzb3JGcm9tRmlsZVcoTFBDV1NUUik7DQpIQ1VSU09S
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9hZEN1cnNvclcoSElOU1RBTkNFLExQQ1dT
VFIpOw0KSElDT04gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2FkSWNvbkEoSElOU1RB
TkNFLExQQ1NUUik7DQpISUNPTiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExvYWRJY29u
VyhISU5TVEFOQ0UsTFBDV1NUUik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBMb2FkSW1hZ2VBKEhJTlNUQU5DRSxMUENTVFIsVUlOVCxpbnQsaW50LFVJTlQpOw0KSEFORExF
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9hZEltYWdlVyhISU5TVEFOQ0UsTFBDV1NU
UixVSU5ULGludCxpbnQsVUlOVCk7DQpIS0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBM
b2FkS2V5Ym9hcmRMYXlvdXRBKExQQ1NUUixVSU5UKTsNCkhLTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIExvYWRLZXlib2FyZExheW91dFcoTFBDV1NUUixVSU5UKTsNCkhNRU5VIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9hZE1lbnVBKEhJTlNUQU5DRSxMUENTVFIpOw0KSE1F
TlUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2FkTWVudUluZGlyZWN0QShjb25zdCBN
RU5VVEVNUExBVEUqKTsNCkhNRU5VIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9hZE1l
bnVJbmRpcmVjdFcoY29uc3QgTUVOVVRFTVBMQVRFKik7DQpITUVOVSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIExvYWRNZW51VyhISU5TVEFOQ0UsTFBDV1NUUik7DQppbnQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBMb2FkU3RyaW5nQShISU5TVEFOQ0UsVUlOVCxMUFNUUixpbnQp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9hZFN0cmluZ1coSElOU1RBTkNF
LFVJTlQsTFBXU1RSLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTG9j
a1dpbmRvd1VwZGF0ZShIV05EKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIExv
b2t1cEljb25JZEZyb21EaXJlY3RvcnkoUEJZVEUsQk9PTCk7DQppbnQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgoUEJZVEUsQk9PTCxpbnQs
aW50LFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1hcERpYWxvZ1Jl
Y3QoSFdORCxMUFJFQ1QpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1hcFZp
cnR1YWxLZXlBKFVJTlQsVUlOVCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
TWFwVmlydHVhbEtleUV4QShVSU5ULFVJTlQsSEtMKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBNYXBWaXJ0dWFsS2V5RXhXKFVJTlQsVUlOVCxIS0wpOw0KVUlOVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1hcFZpcnR1YWxLZXlXKFVJTlQsVUlOVCk7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBNYXBXaW5kb3dQb2ludHMoSFdORCxIV05ELExQUE9J
TlQsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBNZW51SXRlbUZyb21Q
b2ludChIV05ELEhNRU5VLFBPSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBNZXNzYWdlQmVlcChVSU5UKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1l
c3NhZ2VCb3hBKEhXTkQsTFBDU1RSLExQQ1NUUixVSU5UKTsNCmludCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE1lc3NhZ2VCb3hXKEhXTkQsTFBDV1NUUixMUENXU1RSLFVJTlQpOw0KaW50
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTWVzc2FnZUJveEV4QShIV05ELExQQ1NUUixM
UENTVFIsVUlOVCxXT1JEKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1lc3Nh
Z2VCb3hFeFcoSFdORCxMUENXU1RSLExQQ1dTVFIsVUlOVCxXT1JEKTsNCmludCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIE1lc3NhZ2VCb3hJbmRpcmVjdEEoTFBNU0dCT1hQQVJBTVNBKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE1lc3NhZ2VCb3hJbmRpcmVjdFcoTFBN
U0dCT1hQQVJBTVNXKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBNb2RpZnlN
ZW51QShITUVOVSxVSU5ULFVJTlQsVUlOVCxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE1vZGlmeU1lbnVXKEhNRU5VLFVJTlQsVUlOVCxVSU5ULExQQ1dTVFIpOw0K
dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1vdXNlX2V2ZW50KERXT1JELERXT1JE
LERXT1JELERXT1JELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBN
b3ZlV2luZG93KEhXTkQsaW50LGludCxpbnQsaW50LEJPT0wpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKERXT1JELExQSEFORExF
LEJPT0wsRFdPUkQsRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBN
c2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoRFdPUkQsTFBIQU5ETEUsRFdPUkQsRFdPUkQsRFdP
UkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPZW1LZXlTY2FuKFdPUkQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9lbVRvQ2hhckEoTFBDU1RSLExQ
U1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPZW1Ub0NoYXJCdWZmQShM
UENTVFIsTFBTVFIsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9l
bVRvQ2hhckJ1ZmZXKExQQ1NUUixMUFdTVFIsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE9lbVRvQ2hhclcoTFBDU1RSLExQV1NUUik7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgT2Zmc2V0UmVjdChMUFJFQ1QsaW50LGludCk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlbkNsaXBib2FyZChIV05EKTsNCkhERVNLIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlbkRlc2t0b3BBKExQU1RSLERXT1JELEJPT0wsRFdP
UkQpOw0KSERFU0sgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuRGVza3RvcFcoTFBX
U1RSLERXT1JELEJPT0wsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IE9wZW5JY29uKEhXTkQpOw0KSERFU0sgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVu
SW5wdXREZXNrdG9wKERXT1JELEJPT0wsRFdPUkQpOw0KSFdJTlNUQSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE9wZW5XaW5kb3dTdGF0aW9uQShMUFNUUixCT09MLERXT1JEKTsNCkhXSU5T
VEEgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBPcGVuV2luZG93U3RhdGlvblcoTFBXU1RS
LEJPT0wsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBhaW50RGVz
a3RvcChIREMpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBlZWtNZXNzYWdl
QShMUE1TRyxIV05ELFVJTlQsVUlOVCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBQZWVrTWVzc2FnZVcoTFBNU0csSFdORCxVSU5ULFVJTlQsVUlOVCk7DQoNCg0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBvc3RNZXNzYWdlQShIV05ELFVJTlQsV1BB
UkFNLExQQVJBTSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUG9zdE1lc3Nh
Z2VXKEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBQb3N0UXVpdE1lc3NhZ2UoaW50KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBQb3N0VGhyZWFkTWVzc2FnZUEoRFdPUkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQb3N0VGhyZWFkTWVzc2FnZVcoRFdPUkQs
VUlOVCxXUEFSQU0sTFBBUkFNKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQ
dEluUmVjdChMUENSRUNULFBPSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBSZWRyYXdXaW5kb3coSFdORCxMUENSRUNULEhSR04sVUlOVCk7DQpBVE9NIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUmVnaXN0ZXJDbGFzc0EoY29uc3QgV05EQ0xBU1NBKik7DQpBVE9N
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnaXN0ZXJDbGFzc1coY29uc3QgV05EQ0xB
U1NXKik7DQpBVE9NIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnaXN0ZXJDbGFzc0V4
QShjb25zdCBXTkRDTEFTU0VYQSopOw0KQVRPTSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJlZ2lzdGVyQ2xhc3NFeFcoY29uc3QgV05EQ0xBU1NFWFcqKTsNClVJTlQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBSZWdpc3RlckNsaXBib2FyZEZvcm1hdEEoTFBDU1RSKTsNClVJTlQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdpc3RlckNsaXBib2FyZEZvcm1hdFcoTFBD
V1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnaXN0ZXJIb3RLZXko
SFdORCxpbnQsVUlOVCxVSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBS
ZWdpc3RlcldpbmRvd01lc3NhZ2VBKExQQ1NUUik7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgUmVnaXN0ZXJXaW5kb3dNZXNzYWdlVyhMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBSZWxlYXNlQ2FwdHVyZSh2b2lkKTsNCmludCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFJlbGVhc2VEQyhIV05ELEhEQyk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUmVtb3ZlTWVudShITUVOVSxVSU5ULFVJTlQpOw0KSEFORExFIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVtb3ZlUHJvcEEoSFdORCxMUENTVFIpOw0KSEFO
RExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVtb3ZlUHJvcFcoSFdORCxMUENXU1RS
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZXBseU1lc3NhZ2UoTFJFU1VM
VCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2NyZWVuVG9DbGllbnQoSFdO
RCxMUFBPSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTY3JvbGxEQyhI
REMsaW50LGludCxMUENSRUNULExQQ1JFQ1QsSFJHTixMUFJFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFNjcm9sbFdpbmRvdyhIV05ELGludCxpbnQsTFBDUkVDVCxMUENS
RUNUKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNjcm9sbFdpbmRvd0V4KEhX
TkQsaW50LGludCxMUENSRUNULExQQ1JFQ1QsSFJHTixMUFJFQ1QsVUlOVCk7DQpMT05HIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2VuZERsZ0l0ZW1NZXNzYWdlQShIV05ELGludCxVSU5U
LFdQQVJBTSxMUEFSQU0pOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlbmRE
bGdJdGVtTWVzc2FnZVcoSFdORCxpbnQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCkxSRVNVTFQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZW5kTWVzc2FnZUEoSFdORCxVSU5ULFdQQVJBTSxM
UEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlbmRNZXNzYWdlQ2Fs
bGJhY2tBKEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNLFNFTkRBU1lOQ1BST0MsRFdPUkQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlbmRNZXNzYWdlQ2FsbGJhY2tXKEhXTkQs
VUlOVCxXUEFSQU0sTFBBUkFNLFNFTkRBU1lOQ1BST0MsRFdPUkQpOw0KTFJFU1VMVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNlbmRNZXNzYWdlVGltZW91dEEoSFdORCxVSU5ULFdQQVJB
TSxMUEFSQU0sVUlOVCxVSU5ULFBEV09SRCk7DQpMUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgU2VuZE1lc3NhZ2VUaW1lb3V0VyhIV05ELFVJTlQsV1BBUkFNLExQQVJBTSxVSU5U
LFVJTlQsUERXT1JEKTsNCkxSRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZW5k
TWVzc2FnZVcoSFdORCxVSU5ULFdQQVJBTSxMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFNlbmROb3RpZnlNZXNzYWdlQShIV05ELFVJTlQsV1BBUkFNLExQQVJBTSk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2VuZE5vdGlmeU1lc3NhZ2VXKEhX
TkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBTZXRBY3RpdmVXaW5kb3coSFdORCk7DQpIV05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgU2V0Q2FwdHVyZShIV05EIGhXbmQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFNldENhcmV0QmxpbmtUaW1lKFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFNldENhcmV0UG9zKGludCxpbnQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRDbGFzc0xvbmdBKEhXTkQsaW50LExPTkcpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBTZXRDbGFzc0xvbmdXKEhXTkQsaW50LExPTkcpOw0KV09SRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENsYXNzV29yZChIV05ELGludCxXT1JEKTsNCkhB
TkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENsaXBib2FyZERhdGEoVUlOVCxI
QU5ETEUpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldENsaXBib2FyZFZp
ZXdlcihIV05EKTsNCkhDVVJTT1IgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRDdXJz
b3IoSENVUlNPUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Q3Vyc29y
UG9zKGludCxpbnQpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldERlYnVn
RXJyb3JMZXZlbChEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0
RGxnSXRlbUludChIV05ELGludCxVSU5ULEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldERsZ0l0ZW1UZXh0QShIV05ELGludCxMUENTVFIpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldERsZ0l0ZW1UZXh0VyhIV05ELGludCxMUENXU1RSKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXREb3VibGVDbGlja1RpbWUoVUlO
VCk7DQpIV05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Rm9jdXMoSFdORCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Rm9yZWdyb3VuZFdpbmRvdyhIV05E
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRLZXlib2FyZFN0YXRlKFBC
WVRFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRNZW51KEhXTkQsSE1F
TlUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldE1lbnVDb250ZXh0SGVs
cElkKEhNRU5VLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRN
ZW51RGVmYXVsdEl0ZW0oSE1FTlUsVUlOVCxVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBTZXRNZW51SXRlbUJpdG1hcHMoSE1FTlUsVUlOVCxVSU5ULEhCSVRNQVAsSEJJ
VE1BUCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0TWVudUl0ZW1JbmZv
QShITUVOVSxVSU5ULEJPT0wsTFBDTUVOVUlURU1JTkZPQSk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgU2V0TWVudUl0ZW1JbmZvVyggSE1FTlUsVUlOVCxCT09MLExQQ01FTlVJ
VEVNSU5GT1cpOw0KTFBBUkFNIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0TWVzc2Fn
ZUV4dHJhSW5mbyhMUEFSQU0pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNl
dE1lc3NhZ2VRdWV1ZShpbnQpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNl
dFBhcmVudChIV05ELEhXTkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNl
dFByb2Nlc3NXaW5kb3dTdGF0aW9uKEhXSU5TVEEpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldFByb3BBKEhXTkQsTFBDU1RSLEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgU2V0UHJvcFcoSFdORCxMUENXU1RSLEhBTkRMRSk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0UmVjdChMUFJFQ1QsaW50LGludCxpbnQsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRSZWN0RW1wdHkoTFBSRUNU
KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFNjcm9sbEluZm8oSFdORCxp
bnQsTFBDU0NST0xMSU5GTyxCT09MKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFNldFNjcm9sbFBvcyhIV05ELGludCxpbnQsQk9PTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgU2V0U2Nyb2xsUmFuZ2UoSFdORCxpbnQsaW50LGludCxCT09MKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRTeXNDb2xvcnMoaW50LGNvbnN0IElOVCAq
LGNvbnN0IENPTE9SUkVGICopOw0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
U2V0U3lzdGVtQ3Vyc29yKEhDVVJTT1IsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldFRocmVhZERlc2t0b3AoSERFU0spOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFNldFRpbWVyKEhXTkQsVUlOVCxVSU5ULFRJTUVSUFJPQyk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0VXNlck9iamVjdEluZm9ybWF0aW9uQShIQU5E
TEUsaW50LFBWT0lELERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBT
ZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25XKEhBTkRMRSxpbnQsUFZPSUQsRFdPUkQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFVzZXJPYmplY3RTZWN1cml0eShIQU5ETEUs
UFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklUWV9ERVNDUklQVE9SKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRXaW5kb3dDb250ZXh0SGVscElkKEhXTkQsRFdPUkQp
Ow0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdpbmRvd0xvbmdBKEhXTkQs
aW50LExPTkcpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdpbmRvd0xv
bmdXKEhXTkQsaW50LExPTkcpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNl
dFdpbmRvd1BsYWNlbWVudChIV05EIGhXbmQsY29uc3QgV0lORE9XUExBQ0VNRU5UKik7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0V2luZG93UG9zKEhXTkQsSFdORCxpbnQs
aW50LGludCxpbnQsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRX
aW5kb3dSZ24oSFdORCxIUkdOLEJPT0wpOw0KSE9PS1BST0MgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTZXRXaW5kb3dzSG9va0EoaW50LEhPT0tQUk9DKTsNCkhIT09LIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgU2V0V2luZG93c0hvb2tFeEEoaW50LEhPT0tQUk9DLEhJTlNUQU5D
RSxEV09SRCk7DQpISE9PSyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdpbmRvd3NI
b29rRXhXKGludCxIT09LUFJPQyxISU5TVEFOQ0UsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFNldFdpbmRvd1RleHRBKEhXTkQsTFBDU1RSKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRXaW5kb3dUZXh0VyhIV05ELExQQ1dTVFIpOw0KV09S
RCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFdpbmRvd1dvcmQoSFdORCxpbnQsV09S
RCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2hvd0NhcmV0KEhXTkQpOw0K
aW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2hvd0N1cnNvcihCT09MKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTaG93T3duZWRQb3B1cHMoSFdORCxCT09MKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTaG93U2Nyb2xsQmFyKEhXTkQsaW50
LEJPT0wpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNob3dXaW5kb3coSFdO
RCxpbnQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNob3dXaW5kb3dBc3lu
YyhIV05ELGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3VidHJhY3RS
ZWN0KExQUkVDVCxMUENSRUNULExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFN3YXBNb3VzZUJ1dHRvbihCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTd2l0Y2hEZXNrdG9wKEhERVNLKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EoVUlOVCxVSU5ULFBWT0lELFVJTlQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFN5c3RlbVBhcmFtZXRlcnNJbmZvVyhVSU5U
LFVJTlQsUFZPSUQsVUlOVCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVGFi
YmVkVGV4dE91dEEoSERDLGludCxpbnQsTFBDU1RSLGludCxpbnQsTFBJTlQsaW50KTsNCkxPTkcg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUYWJiZWRUZXh0T3V0VyhIREMsaW50LGludCxM
UENXU1RSLGludCxpbnQsTFBJTlQsaW50KTsNCldPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBUaWxlV2luZG93cyhIV05ELFVJTlQsTFBDUkVDVCxVSU5ULGNvbnN0IEhXTkQgKik7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUb0FzY2lpKFVJTlQsVUlOVCxQQllURSxM
UFdPUkQsVUlOVCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUb0FzY2lpRXgo
VUlOVCxVSU5ULFBCWVRFLExQV09SRCxVSU5ULEhLTCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBUb1VuaWNvZGUoVUlOVCxVSU5ULFBCWVRFLExQV1NUUixpbnQsVUlOVCk7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBUb1VuaWNvZGVFeChVSU5ULFVJTlQsUEJZ
VEUsTFBXU1RSLGludCxVSU5ULEhLTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgVHJhY2tNb3VzZUV2ZW50KExQVFJBQ0tNT1VTRUVWRU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBUcmFja1BvcHVwTWVudShITUVOVSxVSU5ULGludCxpbnQsaW50LEhX
TkQsTFBDUkVDVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVHJhY2tQb3B1
cE1lbnVFeChITUVOVSxVSU5ULGludCxpbnQsSFdORCxMUFRQTVBBUkFNUyk7DQppbnQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBUcmFuc2xhdGVBY2NlbGVyYXRvckEoSFdORCxIQUNDRUws
TFBNU0cpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVHJhbnNsYXRlQWNjZWxl
cmF0b3JXKEhXTkQsSEFDQ0VMLExQTVNHKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBUcmFuc2xhdGVNRElTeXNBY2NlbChIV05ELExQTVNHKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBUcmFuc2xhdGVNZXNzYWdlKGNvbnN0IE1TRyopOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFVuaG9va1dpbmRvd3NIb29rKGludCxIT09LUFJPQyk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVW5ob29rV2luZG93c0hvb2tFeChI
SE9PSyk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVW5pb25SZWN0KExQUkVD
VCxMUENSRUNULExQQ1JFQ1QpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFVu
bG9hZEtleWJvYXJkTGF5b3V0KEhLTCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgVW5yZWdpc3RlckNsYXNzQShMUENTVFIsSElOU1RBTkNFKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBVbnJlZ2lzdGVyQ2xhc3NXKExQQ1dTVFIsSElOU1RBTkNFKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVbnJlZ2lzdGVySG90S2V5KEhXTkQsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVcGRhdGVXaW5kb3coSFdORCk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmFsaWRhdGVSZWN0KEhXTkQsTFBD
UkVDVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmFsaWRhdGVSZ24oSFdO
RCxIUkdOKTsNClNIT1JUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmtLZXlTY2FuQShD
SEFSKTsNClNIT1JUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmtLZXlTY2FuRXhBKENI
QVIsSEtMKTsNClNIT1JUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmtLZXlTY2FuRXhX
KFdDSEFSLEhLTCk7DQpTSE9SVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFZrS2V5U2Nh
blcoV0NIQVIpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXYWl0Rm9ySW5w
dXRJZGxlKEhBTkRMRSxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
V2FpdE1lc3NhZ2Uodm9pZCk7DQpIV05EIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV2lu
ZG93RnJvbURDKEhEQyBoREMpOw0KSFdORCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdp
bmRvd0Zyb21Qb2ludChQT0lOVCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
V2luRXhlYyhMUENTVFIsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
V2luSGVscEEoSFdORCxMUENTVFIsVUlOVCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgV2luSGVscFcoSFdORCxMUENXU1RSLFVJTlQsRFdPUkQpOw0KaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHdzcHJpbnRmQShMUFNUUixMUENTVFIsLi4uKTsNCmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3c3ByaW50ZlcoTFBXU1RSLExQQ1dTVFIsLi4uKTsN
CmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHd2c3ByaW50ZkEoTFBTVFIsTFBDU1RS
LHZhX2xpc3QgYXJnbGlzdCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3dnNw
cmludGZXKExQV1NUUixMUENXU1RSLHZhX2xpc3QgYXJnbGlzdCk7DQojIDMxMjQgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvd2ludXNlci5oIiAzDQp0eXBlZGVmIFdORENMQVNTQSBXTkRDTEFT
UywqTFBXTkRDTEFTUywqUFdORENMQVNTOw0KdHlwZWRlZiBXTkRDTEFTU0VYQSBXTkRDTEFTU0VY
LCpMUFdORENMQVNTRVgsKlBXTkRDTEFTU0VYOw0KdHlwZWRlZiBNRU5VSVRFTUlORk9BIE1FTlVJ
VEVNSU5GTywqTFBNRU5VSVRFTUlORk87DQp0eXBlZGVmIExQQ01FTlVJVEVNSU5GT0EgTFBDTUVO
VUlURU1JTkZPOw0KdHlwZWRlZiBNU0dCT1hQQVJBTVNBIE1TR0JPWFBBUkFNUywqUE1TR0JPWFBB
UkFNUywqTFBNU0dCT1hQQVJBTVM7DQp0eXBlZGVmIEhJR0hDT05UUkFTVEEgSElHSENPTlRSQVNU
LCpMUEhJR0hDT05UUkFTVDsNCnR5cGVkZWYgSUNPTk1FVFJJQ1NBIElDT05NRVRSSUNTLCpMUElD
T05NRVRSSUNTOw0KdHlwZWRlZiBOT05DTElFTlRNRVRSSUNTQSBOT05DTElFTlRNRVRSSUNTLCpM
UE5PTkNMSUVOVE1FVFJJQ1M7DQp0eXBlZGVmIFNFUklBTEtFWVNBIFNFUklBTEtFWVMsKkxQU0VS
SUFMS0VZUzsNCnR5cGVkZWYgU09VTkRTRU5UUllBIFNPVU5EU0VOVFJZLCpMUFNPVU5EU0VOVFJZ
Ow0KdHlwZWRlZiBNRElDUkVBVEVTVFJVQ1RBIE1ESUNSRUFURVNUUlVDVCwqTFBNRElDUkVBVEVT
VFJVQ1Q7DQp0eXBlZGVmIE1VTFRJS0VZSEVMUEEgTVVMVElLRVlIRUxQLCpQTVVMVElLRVlIRUxQ
LCpMUE1VTFRJS0VZSEVMUDsNCiMgMzI2NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW51
c2VyLmgiIDMNCn0NCiMgMTA4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIg
MiAzDQoNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbm5scy5oIiAxIDMNCg0K
DQoNCmV4dGVybiAiQyIgew0KIyA0MTUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lubmxz
LmgiIDMNCnR5cGVkZWYgRFdPUkQgTENUWVBFOw0KdHlwZWRlZiBEV09SRCBDQUxUWVBFOw0KdHlw
ZWRlZiBEV09SRCBDQUxJRDsNCnR5cGVkZWYgRFdPUkQgTEdSUElEOw0KdHlwZWRlZiBCT09MIChf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpDQUxJTkZPX0VOVU1QUk9DQSkoTFBTVFIpOw0K
dHlwZWRlZiBCT09MIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpDQUxJTkZPX0VOVU1Q
Uk9DVykoTFBXU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSogQ0FMSU5GT19FTlVNUFJPQ0VYQSkoTFBTVFIsIENBTElEKTsNCnR5cGVkZWYgQk9PTCAoX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSogQ0FMSU5GT19FTlVNUFJPQ0VYVykoTFBXU1RSLCBD
QUxJRCk7DQp0eXBlZGVmIEJPT0wgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkqIExBTkdV
QUdFR1JPVVBfRU5VTVBST0NBKShMR1JQSUQsIExQU1RSLCBMUFNUUiwgRFdPUkQsIExPTkdfUFRS
KTsNCnR5cGVkZWYgQk9PTCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSogTEFOR1VBR0VH
Uk9VUF9FTlVNUFJPQ1cpKExHUlBJRCwgTFBXU1RSLCBMUFdTVFIsIERXT1JELCBMT05HX1BUUik7
DQp0eXBlZGVmIEJPT0wgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkqIExBTkdHUk9VUExP
Q0FMRV9FTlVNUFJPQ0EpKExHUlBJRCwgTENJRCwgTFBTVFIsIExPTkdfUFRSKTsNCnR5cGVkZWYg
Qk9PTCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSogTEFOR0dST1VQTE9DQUxFX0VOVU1Q
Uk9DVykoTEdSUElELCBMQ0lELCBMUFdTVFIsIExPTkdfUFRSKTsNCnR5cGVkZWYgQk9PTCAoX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSogVUlMQU5HVUFHRV9FTlVNUFJPQ1cpKExQV1NUUiwg
TE9OR19QVFIpOw0KdHlwZWRlZiBCT09MIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpKiBV
SUxBTkdVQUdFX0VOVU1QUk9DQSkoTFBTVFIsIExPTkdfUFRSKTsNCnR5cGVkZWYgQk9PTCAoX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqTE9DQUxFX0VOVU1QUk9DQSkoTFBTVFIpOw0KdHlw
ZWRlZiBCT09MIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpMT0NBTEVfRU5VTVBST0NX
KShMUFdTVFIpOw0KdHlwZWRlZiBCT09MIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpD
T0RFUEFHRV9FTlVNUFJPQ0EpKExQU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSAqQ09ERVBBR0VfRU5VTVBST0NXKShMUFdTVFIpOw0KdHlwZWRlZiBCT09M
IChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpEQVRFRk1UX0VOVU1QUk9DQSkoTFBTVFIp
Ow0KdHlwZWRlZiBCT09MIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpEQVRFRk1UX0VO
VU1QUk9DVykoTFBXU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSogREFURUZNVF9FTlVNUFJPQ0VYQSkoTFBTVFIsIENBTElEKTsNCnR5cGVkZWYgQk9PTCAo
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSogREFURUZNVF9FTlVNUFJPQ0VYVykoTFBXU1RS
LCBDQUxJRCk7DQp0eXBlZGVmIEJPT0wgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKlRJ
TUVGTVRfRU5VTVBST0NBKShMUFNUUik7DQp0eXBlZGVmIEJPT0wgKF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgKlRJTUVGTVRfRU5VTVBST0NXKShMUFdTVFIpOw0KDQp0eXBlZGVmIHN0cnVj
dCBfY3BpbmZvIHsNCiAgICAgICAgVUlOVCBNYXhDaGFyU2l6ZTsNCiAgICAgICAgQllURSBEZWZh
dWx0Q2hhclsyXTsNCiAgICAgICAgQllURSBMZWFkQnl0ZVsxMl07DQp9IENQSU5GTywqTFBDUElO
Rk87DQp0eXBlZGVmIHN0cnVjdCBfY3BpbmZvZXhBIHsNCiAgICBVSU5UIE1heENoYXJTaXplOw0K
ICAgIEJZVEUgRGVmYXVsdENoYXJbMl07DQogICAgQllURSBMZWFkQnl0ZVsxMl07DQogICAgV0NI
QVIgVW5pY29kZURlZmF1bHRDaGFyOw0KICAgIFVJTlQgQ29kZVBhZ2U7DQogICAgQ0hBUiBDb2Rl
UGFnZU5hbWVbMjYwXTsNCn0gQ1BJTkZPRVhBLCAqTFBDUElORk9FWEE7DQp0eXBlZGVmIHN0cnVj
dCBfY3BpbmZvZXhXIHsNCiAgICBVSU5UIE1heENoYXJTaXplOw0KICAgIEJZVEUgRGVmYXVsdENo
YXJbMl07DQogICAgQllURSBMZWFkQnl0ZVsxMl07DQogICAgV0NIQVIgVW5pY29kZURlZmF1bHRD
aGFyOw0KICAgIFVJTlQgQ29kZVBhZ2U7DQogICAgV0NIQVIgQ29kZVBhZ2VOYW1lWzI2MF07DQp9
IENQSU5GT0VYVywgKkxQQ1BJTkZPRVhXOw0KdHlwZWRlZiBzdHJ1Y3QgX2N1cnJlbmN5Zm10QSB7
DQogICAgICAgIFVJTlQgTnVtRGlnaXRzOw0KICAgICAgICBVSU5UIExlYWRpbmdaZXJvOw0KICAg
ICAgICBVSU5UIEdyb3VwaW5nOw0KICAgICAgICBMUFNUUiBscERlY2ltYWxTZXA7DQogICAgICAg
IExQU1RSIGxwVGhvdXNhbmRTZXA7DQogICAgICAgIFVJTlQgTmVnYXRpdmVPcmRlcjsNCiAgICAg
ICAgVUlOVCBQb3NpdGl2ZU9yZGVyOw0KICAgICAgICBMUFNUUiBscEN1cnJlbmN5U3ltYm9sOw0K
fSBDVVJSRU5DWUZNVEEsICpMUENVUlJFTkNZRk1UQTsNCnR5cGVkZWYgc3RydWN0IF9jdXJyZW5j
eWZtdFcgew0KICAgICAgICBVSU5UIE51bURpZ2l0czsNCiAgICAgICAgVUlOVCBMZWFkaW5nWmVy
bzsNCiAgICAgICAgVUlOVCBHcm91cGluZzsNCiAgICAgICAgTFBXU1RSIGxwRGVjaW1hbFNlcDsN
CiAgICAgICAgTFBXU1RSIGxwVGhvdXNhbmRTZXA7DQogICAgICAgIFVJTlQgTmVnYXRpdmVPcmRl
cjsNCiAgICAgICAgVUlOVCBQb3NpdGl2ZU9yZGVyOw0KICAgICAgICBMUFdTVFIgbHBDdXJyZW5j
eVN5bWJvbDsNCn0gQ1VSUkVOQ1lGTVRXLCAqTFBDVVJSRU5DWUZNVFc7DQp0eXBlZGVmIHN0cnVj
dCBfbnVtYmVyZm10QSB7DQogICAgICAgIFVJTlQgTnVtRGlnaXRzOw0KICAgICAgICBVSU5UIExl
YWRpbmdaZXJvOw0KICAgICAgICBVSU5UIEdyb3VwaW5nOw0KICAgICAgICBMUFNUUiBscERlY2lt
YWxTZXA7DQogICAgICAgIExQU1RSIGxwVGhvdXNhbmRTZXA7DQogICAgICAgIFVJTlQgTmVnYXRp
dmVPcmRlcjsNCn0gTlVNQkVSRk1UQSwgKkxQTlVNQkVSRk1UQTsNCnR5cGVkZWYgc3RydWN0IF9u
dW1iZXJmbXRXIHsNCiAgICAgICAgVUlOVCBOdW1EaWdpdHM7DQogICAgICAgIFVJTlQgTGVhZGlu
Z1plcm87DQogICAgICAgIFVJTlQgR3JvdXBpbmc7DQogICAgICAgIExQV1NUUiBscERlY2ltYWxT
ZXA7DQogICAgICAgIExQV1NUUiBscFRob3VzYW5kU2VwOw0KICAgICAgICBVSU5UIE5lZ2F0aXZl
T3JkZXI7DQp9IE5VTUJFUkZNVFcsICpMUE5VTUJFUkZNVFc7DQoNCmludCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIENvbXBhcmVTdHJpbmdBKExDSUQsRFdPUkQsTFBDU1RSLGludCxMUENT
VFIsaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvbXBhcmVTdHJpbmdX
KExDSUQsRFdPUkQsTFBDV1NUUixpbnQsTFBDV1NUUixpbnQpOw0KTENJRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIENvbnZlcnREZWZhdWx0TG9jYWxlKExDSUQpOw0KQk9PTCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1DYWxlbmRhckluZm9BKENBTElORk9fRU5VTVBST0NB
LExDSUQsQ0FMSUQsQ0FMVFlQRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RW51bUNhbGVuZGFySW5mb1coQ0FMSU5GT19FTlVNUFJPQ1csTENJRCxDQUxJRCxDQUxUWVBFKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtRGF0ZUZvcm1hdHNBKERBVEVG
TVRfRU5VTVBST0NBLExDSUQsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEVudW1EYXRlRm9ybWF0c1coREFURUZNVF9FTlVNUFJPQ1csTENJRCxEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bVN5c3RlbUNvZGVQYWdlc0EoQ09ERVBB
R0VfRU5VTVBST0NBLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBF
bnVtU3lzdGVtQ29kZVBhZ2VzVyhDT0RFUEFHRV9FTlVNUFJPQ1csRFdPUkQpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1TeXN0ZW1Mb2NhbGVzQShMT0NBTEVfRU5VTVBS
T0NBLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtU3lzdGVt
TG9jYWxlc1coTE9DQUxFX0VOVU1QUk9DVyxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRW51bVRpbWVGb3JtYXRzQShUSU1FRk1UX0VOVU1QUk9DQSxMQ0lELERXT1JE
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtVGltZUZvcm1hdHNXKFRJ
TUVGTVRfRU5VTVBST0NXLExDSUQsRFdPUkQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRm9sZFN0cmluZ0EoRFdPUkQsTFBDU1RSLGludCxMUFNUUixpbnQpOw0KaW50IF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRm9sZFN0cmluZ1coRFdPUkQsTFBDV1NUUixpbnQsTFBX
U1RSLGludCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0QUNQKHZvaWQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldENQSW5mbyhVSU5ULExQQ1BJ
TkZPKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRDUEluZm9FeEEoVUlO
VCxEV09SRCxMUENQSU5GT0VYQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
R2V0Q1BJbmZvRXhXKFVJTlQsRFdPUkQsTFBDUElORk9FWFcpOw0KaW50IF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgR2V0Q3VycmVuY3lGb3JtYXRBKExDSUQsRFdPUkQsTFBDU1RSLGNvbnN0
IENVUlJFTkNZRk1UQSosTFBTVFIsaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldEN1cnJlbmN5Rm9ybWF0VyhMQ0lELERXT1JELExQQ1dTVFIsY29uc3QgQ1VSUkVOQ1lG
TVRXKixMUFdTVFIsaW50KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldERh
dGVGb3JtYXRBKExDSUQsRFdPUkQsY29uc3QgU1lTVEVNVElNRSosTFBDU1RSLExQU1RSLGludCk7
DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXREYXRlRm9ybWF0VyhMQ0lELERX
T1JELGNvbnN0IFNZU1RFTVRJTUUqLExQQ1dTVFIsTFBXU1RSLGludCk7DQppbnQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRMb2NhbGVJbmZvQShMQ0lELExDVFlQRSxMUFNUUixpbnQp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0TG9jYWxlSW5mb1coTENJRCxM
Q1RZUEUsTFBXU1RSLGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRO
dW1iZXJGb3JtYXRBKExDSUQsRFdPUkQsTFBDU1RSLGNvbnN0IE5VTUJFUkZNVEEqLExQU1RSLGlu
dCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXROdW1iZXJGb3JtYXRXKExD
SUQsRFdPUkQsTFBDV1NUUixjb25zdCBOVU1CRVJGTVRXKixMUFdTVFIsaW50KTsNClVJTlQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRPRU1DUCh2b2lkKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBHZXRTdHJpbmdUeXBlQShMQ0lELERXT1JELExQQ1NUUixpbnQs
TFBXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTdHJpbmdUeXBl
VyhEV09SRCxMUENXU1RSLGludCxMUFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEdldFN0cmluZ1R5cGVFeEEoTENJRCxEV09SRCxMUENTVFIsaW50LExQV09SRCk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U3RyaW5nVHlwZUV4VyhMQ0lELERX
T1JELExQQ1dTVFIsaW50LExQV09SRCk7DQpMQU5HSUQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRTeXN0ZW1EZWZhdWx0TGFuZ0lEKHZvaWQpOw0KTENJRCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldFN5c3RlbURlZmF1bHRMQ0lEKHZvaWQpOw0KTENJRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRocmVhZExvY2FsZSh2b2lkKTsNCmludCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdldFRpbWVGb3JtYXRBKExDSUQsRFdPUkQsY29uc3QgU1lTVEVN
VElNRSosTFBDU1RSLExQU1RSLGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRUaW1lRm9ybWF0VyhMQ0lELERXT1JELGNvbnN0IFNZU1RFTVRJTUUqLExQQ1dTVFIsTFBX
U1RSLGludCk7DQpMQU5HSUQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRVc2VyRGVm
YXVsdExhbmdJRCh2b2lkKTsNCkxDSUQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRV
c2VyRGVmYXVsdExDSUQodm9pZCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
SXNEQkNTTGVhZEJ5dGUoQllURSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
SXNEQkNTTGVhZEJ5dGVFeChVSU5ULEJZVEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIElzVmFsaWRDb2RlUGFnZShVSU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBJc1ZhbGlkTG9jYWxlKExDSUQsRFdPUkQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgTENNYXBTdHJpbmdBKExDSUQsRFdPUkQsTFBDU1RSLGludCxMUFNUUixpbnQp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTENNYXBTdHJpbmdXKExDSUQsRFdP
UkQsTFBDV1NUUixpbnQsTFBXU1RSLGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBNdWx0aUJ5dGVUb1dpZGVDaGFyKFVJTlQsRFdPUkQsTFBDU1RSLGludCxMUFdTVFIsaW50
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRMb2NhbGVJbmZvQShMQ0lE
LExDVFlQRSxMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldExv
Y2FsZUluZm9XKExDSUQsTENUWVBFLExQQ1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNldFRocmVhZExvY2FsZShMQ0lEKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFdpZGVDaGFyVG9NdWx0aUJ5dGUoVUlOVCxEV09SRCxMUENXU1RSLGludCxMUFNU
UixpbnQsTFBDU1RSLExQQk9PTCk7DQojIDYxNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93
aW5ubHMuaCIgMw0KdHlwZWRlZiBDUElORk9FWEEgQ1BJTkZPRVg7DQp0eXBlZGVmIExQQ1BJTkZP
RVhBIExQQ1BJTkZPRVg7DQp0eXBlZGVmIENVUlJFTkNZRk1UQSBDVVJSRU5DWUZNVDsNCnR5cGVk
ZWYgTFBDVVJSRU5DWUZNVEEgTFBDVVJSRU5DWUZNVDsNCnR5cGVkZWYgTlVNQkVSRk1UQSBOVU1C
RVJGTVQ7DQp0eXBlZGVmIExQTlVNQkVSRk1UQSBMUE5VTUJFUkZNVDsNCiMgNjQ1ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL3dpbm5scy5oIiAzDQp9DQojIDExMSAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS93aW52ZXIuaCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCiMgODEgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvd2ludmVyLmgiIDMNCnR5cGVkZWYgc3RydWN0IHRhZ1ZTX0ZJWEVERklM
RUlORk8gew0KICAgICAgICBEV09SRCBkd1NpZ25hdHVyZTsNCiAgICAgICAgRFdPUkQgZHdTdHJ1
Y1ZlcnNpb247DQogICAgICAgIERXT1JEIGR3RmlsZVZlcnNpb25NUzsNCiAgICAgICAgRFdPUkQg
ZHdGaWxlVmVyc2lvbkxTOw0KICAgICAgICBEV09SRCBkd1Byb2R1Y3RWZXJzaW9uTVM7DQogICAg
ICAgIERXT1JEIGR3UHJvZHVjdFZlcnNpb25MUzsNCiAgICAgICAgRFdPUkQgZHdGaWxlRmxhZ3NN
YXNrOw0KICAgICAgICBEV09SRCBkd0ZpbGVGbGFnczsNCiAgICAgICAgRFdPUkQgZHdGaWxlT1M7
DQogICAgICAgIERXT1JEIGR3RmlsZVR5cGU7DQogICAgICAgIERXT1JEIGR3RmlsZVN1YnR5cGU7
DQogICAgICAgIERXT1JEIGR3RmlsZURhdGVNUzsNCiAgICAgICAgRFdPUkQgZHdGaWxlRGF0ZUxT
Ow0KfSBWU19GSVhFREZJTEVJTkZPOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBWZXJGaW5kRmlsZUEoRFdPUkQsTFBTVFIsTFBTVFIsTFBTVFIsTFBTVFIsUFVJTlQsTFBTVFIs
UFVJTlQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBWZXJGaW5kRmlsZVco
RFdPUkQsTFBXU1RSLExQV1NUUixMUFdTVFIsTFBXU1RSLFBVSU5ULExQV1NUUixQVUlOVCk7DQpE
V09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFZlckluc3RhbGxGaWxlQShEV09SRCxM
UFNUUixMUFNUUixMUFNUUixMUFNUUixMUFNUUixMUFNUUixQVUlOVCk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFZlckluc3RhbGxGaWxlVyhEV09SRCxMUFdTVFIsTFBXU1RS
LExQV1NUUixMUFdTVFIsTFBXU1RSLExQV1NUUixQVUlOVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBKExQU1RSLFBEV09SRCk7DQpE
V09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVWZXJzaW9uSW5mb1NpemVX
KExQV1NUUixQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZp
bGVWZXJzaW9uSW5mb0EoTFBTVFIsRFdPUkQsRFdPUkQsUFZPSUQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVWZXJzaW9uSW5mb1coTFBXU1RSLERXT1JELERXT1JE
LFBWT0lEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVmVyTGFuZ3VhZ2VO
YW1lQShEV09SRCxMUFNUUixEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFZlckxhbmd1YWdlTmFtZVcoRFdPUkQsTFBXU1RSLERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBWZXJRdWVyeVZhbHVlQShQQ1ZPSUQsTFBTVFIsUFZPSUQqLFBV
SU5UKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBWZXJRdWVyeVZhbHVlVyhQ
Q1ZPSUQsTFBXU1RSLFBWT0lEKixQVUlOVCk7DQojIDEyNyAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS93aW52ZXIuaCIgMw0KfQ0KIyAxMTQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lu
ZG93cy5oIiAyIDMNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lubmV0d2su
aCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCiMgMTU2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3dpbm5ldHdrLmgiIDMNCnR5cGVkZWYgc3RydWN0IF9ORVRSRVNPVVJDRUEgew0KICAgICAg
ICBEV09SRCBkd1Njb3BlOw0KICAgICAgICBEV09SRCBkd1R5cGU7DQogICAgICAgIERXT1JEIGR3
RGlzcGxheVR5cGU7DQogICAgICAgIERXT1JEIGR3VXNhZ2U7DQogICAgICAgIExQU1RSIGxwTG9j
YWxOYW1lOw0KICAgICAgICBMUFNUUiBscFJlbW90ZU5hbWU7DQogICAgICAgIExQU1RSIGxwQ29t
bWVudCA7DQogICAgICAgIExQU1RSIGxwUHJvdmlkZXI7DQp9TkVUUkVTT1VSQ0VBLCpMUE5FVFJF
U09VUkNFQTsNCnR5cGVkZWYgc3RydWN0IF9ORVRSRVNPVVJDRVcgew0KICAgICAgICBEV09SRCBk
d1Njb3BlOw0KICAgICAgICBEV09SRCBkd1R5cGU7DQogICAgICAgIERXT1JEIGR3RGlzcGxheVR5
cGU7DQogICAgICAgIERXT1JEIGR3VXNhZ2U7DQogICAgICAgIExQV1NUUiBscExvY2FsTmFtZTsN
CiAgICAgICAgTFBXU1RSIGxwUmVtb3RlTmFtZTsNCiAgICAgICAgTFBXU1RSIGxwQ29tbWVudCA7
DQogICAgICAgIExQV1NUUiBscFByb3ZpZGVyOw0KfU5FVFJFU09VUkNFVywqTFBORVRSRVNPVVJD
RVc7DQp0eXBlZGVmIHN0cnVjdCBfQ09OTkVDVERMR1NUUlVDVEF7DQogICAgICAgIERXT1JEIGNi
U3RydWN0dXJlOw0KICAgICAgICBIV05EIGh3bmRPd25lcjsNCiAgICAgICAgTFBORVRSRVNPVVJD
RUEgbHBDb25uUmVzOw0KICAgICAgICBEV09SRCBkd0ZsYWdzOw0KICAgICAgICBEV09SRCBkd0Rl
dk51bTsNCn0gQ09OTkVDVERMR1NUUlVDVEEsKkxQQ09OTkVDVERMR1NUUlVDVEE7DQp0eXBlZGVm
IHN0cnVjdCBfQ09OTkVDVERMR1NUUlVDVFd7DQogICAgICAgIERXT1JEIGNiU3RydWN0dXJlOw0K
ICAgICAgICBIV05EIGh3bmRPd25lcjsNCiAgICAgICAgTFBORVRSRVNPVVJDRVcgbHBDb25uUmVz
Ow0KICAgICAgICBEV09SRCBkd0ZsYWdzOw0KICAgICAgICBEV09SRCBkd0Rldk51bTsNCn0gQ09O
TkVDVERMR1NUUlVDVFcsKkxQQ09OTkVDVERMR1NUUlVDVFc7DQp0eXBlZGVmIHN0cnVjdCBfRElT
Q0RMR1NUUlVDVEF7DQogICAgICAgIERXT1JEIGNiU3RydWN0dXJlOw0KICAgICAgICBIV05EIGh3
bmRPd25lcjsNCiAgICAgICAgTFBTVFIgbHBMb2NhbE5hbWU7DQogICAgICAgIExQU1RSIGxwUmVt
b3RlTmFtZTsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCn0gRElTQ0RMR1NUUlVDVEEsKkxQRElT
Q0RMR1NUUlVDVEE7DQp0eXBlZGVmIHN0cnVjdCBfRElTQ0RMR1NUUlVDVFd7DQogICAgICAgIERX
T1JEIGNiU3RydWN0dXJlOw0KICAgICAgICBIV05EIGh3bmRPd25lcjsNCiAgICAgICAgTFBXU1RS
IGxwTG9jYWxOYW1lOw0KICAgICAgICBMUFdTVFIgbHBSZW1vdGVOYW1lOw0KICAgICAgICBEV09S
RCBkd0ZsYWdzOw0KfSBESVNDRExHU1RSVUNUVywqTFBESVNDRExHU1RSVUNUVzsNCnR5cGVkZWYg
c3RydWN0IF9VTklWRVJTQUxfTkFNRV9JTkZPQSB7IExQU1RSIGxwVW5pdmVyc2FsTmFtZTsgfVVO
SVZFUlNBTF9OQU1FX0lORk9BLCpMUFVOSVZFUlNBTF9OQU1FX0lORk9BOw0KdHlwZWRlZiBzdHJ1
Y3QgX1VOSVZFUlNBTF9OQU1FX0lORk9XIHsgTFBXU1RSIGxwVW5pdmVyc2FsTmFtZTsgfVVOSVZF
UlNBTF9OQU1FX0lORk9XLCpMUFVOSVZFUlNBTF9OQU1FX0lORk9XOw0KdHlwZWRlZiBzdHJ1Y3Qg
X1JFTU9URV9OQU1FX0lORk9BIHsNCiAgICAgICAgTFBTVFIgbHBVbml2ZXJzYWxOYW1lOw0KICAg
ICAgICBMUFNUUiBscENvbm5lY3Rpb25OYW1lOw0KICAgICAgICBMUFNUUiBscFJlbWFpbmluZ1Bh
dGg7DQp9UkVNT1RFX05BTUVfSU5GT0EsKkxQUkVNT1RFX05BTUVfSU5GT0E7DQp0eXBlZGVmIHN0
cnVjdCBfUkVNT1RFX05BTUVfSU5GT1cgew0KICAgICAgICBMUFdTVFIgbHBVbml2ZXJzYWxOYW1l
Ow0KICAgICAgICBMUFdTVFIgbHBDb25uZWN0aW9uTmFtZTsNCiAgICAgICAgTFBXU1RSIGxwUmVt
YWluaW5nUGF0aDsNCn1SRU1PVEVfTkFNRV9JTkZPVywqTFBSRU1PVEVfTkFNRV9JTkZPVzsNCnR5
cGVkZWYgc3RydWN0IF9ORVRJTkZPU1RSVUNUew0KICAgICAgICBEV09SRCBjYlN0cnVjdHVyZTsN
CiAgICAgICAgRFdPUkQgZHdQcm92aWRlclZlcnNpb247DQogICAgICAgIERXT1JEIGR3U3RhdHVz
Ow0KICAgICAgICBEV09SRCBkd0NoYXJhY3RlcmlzdGljczsNCiAgICAgICAgRFdPUkQgZHdIYW5k
bGU7DQogICAgICAgIFdPUkQgd05ldFR5cGU7DQogICAgICAgIERXT1JEIGR3UHJpbnRlcnM7DQog
ICAgICAgIERXT1JEIGR3RHJpdmVzOw0KfSBORVRJTkZPU1RSVUNULCpMUE5FVElORk9TVFJVQ1Q7
DQp0eXBlZGVmIFVJTlQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUEZOR0VUUFJPRklM
RVBBVEhBKShMUENTVFIsTFBTVFIsVUlOVCk7DQp0eXBlZGVmIFVJTlQoX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSAqUEZOR0VUUFJPRklMRVBBVEhXKShMUENXU1RSLExQV1NUUixVSU5UKTsN
CnR5cGVkZWYgVUlOVChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpQRk5SRUNPTkNJTEVQ
Uk9GSUxFQSkoTFBDU1RSLExQQ1NUUixEV09SRCk7DQp0eXBlZGVmIFVJTlQoX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSAqUEZOUkVDT05DSUxFUFJPRklMRVcpKExQQ1dTVFIsTFBDV1NUUixE
V09SRCk7DQp0eXBlZGVmIEJPT0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUEZOUFJP
Q0VTU1BPTElDSUVTQSkoSFdORCxMUENTVFIsTFBDU1RSLExQQ1NUUixEV09SRCk7DQp0eXBlZGVm
IEJPT0woX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUEZOUFJPQ0VTU1BPTElDSUVTVyko
SFdORCxMUENXU1RSLExQQ1dTVFIsTFBDV1NUUixEV09SRCk7DQp0eXBlZGVmIHN0cnVjdCBfTkVU
Q09OTkVDVElORk9TVFJVQ1R7DQogICAgICAgIERXT1JEIGNiU3RydWN0dXJlOw0KICAgICAgICBE
V09SRCBkd0ZsYWdzOw0KICAgICAgICBEV09SRCBkd1NwZWVkOw0KICAgICAgICBEV09SRCBkd0Rl
bGF5Ow0KICAgICAgICBEV09SRCBkd09wdERhdGFTaXplOw0KfSBORVRDT05ORUNUSU5GT1NUUlVD
VCwqTFBORVRDT05ORUNUSU5GT1NUUlVDVDsNCg0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBXTmV0QWRkQ29ubmVjdGlvbkEoTFBDU1RSLExQQ1NUUixMUENTVFIpOw0KRFdPUkQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0QWRkQ29ubmVjdGlvblcoTFBDV1NUUixM
UENXU1RSLExQQ1dTVFIpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0
QWRkQ29ubmVjdGlvbjJBKExQTkVUUkVTT1VSQ0VBLExQQ1NUUixMUENTVFIsRFdPUkQpOw0KRFdP
UkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0QWRkQ29ubmVjdGlvbjJXKExQTkVU
UkVTT1VSQ0VXLExQQ1dTVFIsTFBDV1NUUixEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFdOZXRBZGRDb25uZWN0aW9uM0EoSFdORCxMUE5FVFJFU09VUkNFQSxMUENT
VFIsTFBDU1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05l
dEFkZENvbm5lY3Rpb24zVyhIV05ELExQTkVUUkVTT1VSQ0VXLExQQ1dTVFIsTFBDV1NUUixEV09S
RCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRDYW5jZWxDb25uZWN0
aW9uQShMUENTVFIsQk9PTCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdO
ZXRDYW5jZWxDb25uZWN0aW9uVyhMUENXU1RSLEJPT0wpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBXTmV0Q2FuY2VsQ29ubmVjdGlvbjJBKExQQ1NUUixEV09SRCxCT09MKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05ldENhbmNlbENvbm5lY3Rpb24y
VyhMUENXU1RSLERXT1JELEJPT0wpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBXTmV0R2V0Q29ubmVjdGlvbkEoTFBDU1RSLExQU1RSLFBEV09SRCk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRHZXRDb25uZWN0aW9uVyhMUENXU1RSLExQV1NUUixQ
RFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0VXNlQ29ubmVj
dGlvbkEoSFdORCxMUE5FVFJFU09VUkNFQSxMUENTVFIsTFBDU1RSLERXT1JELExQU1RSLFBEV09S
RCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0VXNlQ29u
bmVjdGlvblcoSFdORCxMUE5FVFJFU09VUkNFVyxMUENXU1RSLExQQ1dTVFIsRFdPUkQsTFBXU1RS
LFBEV09SRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0
U2V0Q29ubmVjdGlvbkEoTFBDU1RSLERXT1JELFBWT0lEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgV05ldFNldENvbm5lY3Rpb25XKExQQ1dTVFIsRFdPUkQsUFZPSUQpOw0K
RFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0Q29ubmVjdGlvbkRpYWxvZyhI
V05ELERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05ldERpc2Nv
bm5lY3REaWFsb2coSFdORCxEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFdOZXRDb25uZWN0aW9uRGlhbG9nMUEoTFBDT05ORUNURExHU1RSVUNUQSk7DQpEV09SRCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRDb25uZWN0aW9uRGlhbG9nMVcoTFBDT05O
RUNURExHU1RSVUNUVyk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRE
aXNjb25uZWN0RGlhbG9nMUEoTFBESVNDRExHU1RSVUNUQSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFdOZXREaXNjb25uZWN0RGlhbG9nMVcoTFBESVNDRExHU1RSVUNUVyk7
DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRPcGVuRW51bUEoRFdPUkQs
RFdPUkQsRFdPUkQsTFBORVRSRVNPVVJDRUEsTFBIQU5ETEUpOw0KRFdPUkQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBXTmV0T3BlbkVudW1XKERXT1JELERXT1JELERXT1JELExQTkVUUkVT
T1VSQ0VXLExQSEFORExFKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05l
dEVudW1SZXNvdXJjZUEoSEFORExFLFBEV09SRCxQVk9JRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0RW51bVJlc291cmNlVyhIQU5ETEUsUERXT1JELFBW
T0lELFBEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRDbG9z
ZUVudW0oSEFORExFKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05ldEdl
dFVuaXZlcnNhbE5hbWVBKExQQ1NUUixEV09SRCxQVk9JRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0R2V0VW5pdmVyc2FsTmFtZVcoTFBDV1NUUixEV09S
RCxQVk9JRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0
R2V0VXNlckEoTFBDU1RSLExQU1RSLFBEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFdOZXRHZXRVc2VyVyhMUENXU1RSLExQV1NUUixQRFdPUkQpOw0KRFdPUkQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0R2V0UHJvdmlkZXJOYW1lQShEV09SRCxMUFNU
UixQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXTmV0R2V0UHJv
dmlkZXJOYW1lVyhEV09SRCxMUFdTVFIsUERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgV05ldEdldE5ldHdvcmtJbmZvcm1hdGlvbkEoTFBDU1RSLExQTkVUSU5GT1NU
UlVDVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdOZXRHZXROZXR3b3Jr
SW5mb3JtYXRpb25XKExQQ1dTVFIsTFBORVRJTkZPU1RSVUNUKTsNCkRXT1JEIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgV05ldEdldExhc3RFcnJvckEoUERXT1JELExQU1RSLERXT1JELExQ
U1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV05ldEdldExh
c3RFcnJvclcoUERXT1JELExQV1NUUixEV09SRCxMUFdTVFIsRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBNdWx0aW5ldEdldENvbm5lY3Rpb25QZXJmb3JtYW5jZUEo
TFBORVRSRVNPVVJDRUEsTFBORVRDT05ORUNUSU5GT1NUUlVDVCk7DQpEV09SRCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIE11bHRpbmV0R2V0Q29ubmVjdGlvblBlcmZvcm1hbmNlVyhMUE5F
VFJFU09VUkNFVyxMUE5FVENPTk5FQ1RJTkZPU1RSVUNUKTsNCiMgMzEwICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL3dpbm5ldHdrLmgiIDMNCnR5cGVkZWYgTkVUUkVTT1VSQ0VBIE5FVFJFU09V
UkNFLCpMUE5FVFJFU09VUkNFOw0KdHlwZWRlZiBDT05ORUNURExHU1RSVUNUQSBDT05ORUNURExH
U1RSVUNULCpMUENPTk5FQ1RETEdTVFJVQ1Q7DQp0eXBlZGVmIERJU0NETEdTVFJVQ1RBIERJU0NE
TEdTVFJVQ1QsKkxQRElTQ0RMR1NUUlVDVDsNCnR5cGVkZWYgVU5JVkVSU0FMX05BTUVfSU5GT0Eg
VU5JVkVSU0FMX05BTUVfSU5GTywqTFBVTklWRVJTQUxfTkFNRV9JTkZPOw0KdHlwZWRlZiBSRU1P
VEVfTkFNRV9JTkZPQSBSRU1PVEVfTkFNRV9JTkZPLCpMUFJFTU9URV9OQU1FX0lORk87DQojIDMz
NiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5uZXR3ay5oIiAzDQp9DQojIDExNyAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KDQoNCiMgMSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS93aW5yZWcuaCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCiMgMzUg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lucmVnLmgiIDMNCnR5cGVkZWYgQUNDRVNTX01B
U0sgUkVHU0FNOw0KdHlwZWRlZiBzdHJ1Y3QgdmFsdWVfZW50QSB7DQogICAgICAgIExQU1RSIHZl
X3ZhbHVlbmFtZTsNCiAgICAgICAgRFdPUkQgdmVfdmFsdWVsZW47DQogICAgICAgIERXT1JEIHZl
X3ZhbHVlcHRyOw0KICAgICAgICBEV09SRCB2ZV90eXBlOw0KfSBWQUxFTlRBLCpQVkFMRU5UQTsN
CnR5cGVkZWYgc3RydWN0IHZhbHVlX2VudFcgew0KICAgICAgICBMUFdTVFIgdmVfdmFsdWVuYW1l
Ow0KICAgICAgICBEV09SRCB2ZV92YWx1ZWxlbjsNCiAgICAgICAgRFdPUkQgdmVfdmFsdWVwdHI7
DQogICAgICAgIERXT1JEIHZlX3R5cGU7DQp9IFZBTEVOVFcsKlBWQUxFTlRXOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFib3J0U3lzdGVtU2h1dGRvd25BKExQQ1NUUik7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWJvcnRTeXN0ZW1TaHV0ZG93blcoTFBD
V1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSW5pdGlhdGVTeXN0ZW1T
aHV0ZG93bkEoTFBTVFIsTFBTVFIsRFdPUkQsQk9PTCxCT09MKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBJbml0aWF0ZVN5c3RlbVNodXRkb3duVyhMUFdTVFIsTFBXU1RSLERX
T1JELEJPT0wsQk9PTCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnQ2xv
c2VLZXkoSEtFWSk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnQ29ubmVj
dFJlZ2lzdHJ5QShMUFNUUixIS0VZLFBIS0VZKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBSZWdDb25uZWN0UmVnaXN0cnlXKExQV1NUUixIS0VZLFBIS0VZKTsNCkxPTkcgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdDcmVhdGVLZXlBKEhLRVksTFBDU1RSLFBIS0VZ
KTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdDcmVhdGVLZXlFeEEoSEtF
WSxMUENTVFIsRFdPUkQsTFBTVFIsRFdPUkQsUkVHU0FNLExQU0VDVVJJVFlfQVRUUklCVVRFUyxQ
SEtFWSxQRFdPUkQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ0NyZWF0
ZUtleUV4VyhIS0VZLExQQ1dTVFIsRFdPUkQsTFBXU1RSLERXT1JELFJFR1NBTSxMUFNFQ1VSSVRZ
X0FUVFJJQlVURVMsUEhLRVksUERXT1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBSZWdDcmVhdGVLZXlXKEhLRVksTFBDV1NUUixQSEtFWSk7DQpMT05HIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUmVnRGVsZXRlS2V5QShIS0VZLExQQ1NUUik7DQpMT05HIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnRGVsZXRlS2V5VyhIS0VZLExQQ1dTVFIpOw0KTE9O
RyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ0RlbGV0ZVZhbHVlQSAoSEtFWSxMUENT
VFIpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ0RlbGV0ZVZhbHVlVyhI
S0VZLExQQ1dTVFIpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ0VudW1L
ZXlBIChIS0VZLERXT1JELExQU1RSLERXT1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBSZWdFbnVtS2V5VyhIS0VZLERXT1JELExQV1NUUixEV09SRCk7DQpMT05HIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnRW51bUtleUV4QShIS0VZLERXT1JELExQU1RSLFBE
V09SRCxQRFdPUkQsTFBTVFIsUERXT1JELFBGSUxFVElNRSk7DQpMT05HIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUmVnRW51bUtleUV4VyhIS0VZLERXT1JELExQV1NUUixQRFdPUkQsUERX
T1JELExQV1NUUixQRFdPUkQsUEZJTEVUSU1FKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBSZWdFbnVtVmFsdWVBKEhLRVksRFdPUkQsTFBTVFIsUERXT1JELFBEV09SRCxQRFdP
UkQsTFBCWVRFLFBEV09SRCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVn
RW51bVZhbHVlVyhIS0VZLERXT1JELExQV1NUUixQRFdPUkQsUERXT1JELFBEV09SRCxMUEJZVEUs
UERXT1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdGbHVzaEtleShI
S0VZKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdHZXRLZXlTZWN1cml0
eShIS0VZLFNFQ1VSSVRZX0lORk9STUFUSU9OLFBTRUNVUklUWV9ERVNDUklQVE9SLFBEV09SRCk7
DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnTG9hZEtleUEoSEtFWSxMUENT
VFIsTFBDU1RSKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdMb2FkS2V5
VyhIS0VZLExQQ1dTVFIsTFBDV1NUUik7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUmVnTm90aWZ5Q2hhbmdlS2V5VmFsdWUoSEtFWSxCT09MLERXT1JELEhBTkRMRSxCT09MKTsN
CkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdPcGVuS2V5QShIS0VZLExQQ1NU
UixQSEtFWSk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnT3BlbktleUV4
QShIS0VZLExQQ1NUUixEV09SRCxSRUdTQU0sUEhLRVkpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFJlZ09wZW5LZXlFeFcoSEtFWSxMUENXU1RSLERXT1JELFJFR1NBTSxQSEtF
WSk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnT3BlbktleVcoSEtFWSxM
UENXU1RSLFBIS0VZKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdRdWVy
eUluZm9LZXlBKEhLRVksTFBTVFIsUERXT1JELFBEV09SRCxQRFdPUkQsUERXT1JELFBEV09SRCxQ
RFdPUkQsUERXT1JELFBEV09SRCxQRFdPUkQsUEZJTEVUSU1FKTsNCkxPTkcgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBSZWdRdWVyeUluZm9LZXlXKEhLRVksTFBXU1RSLFBEV09SRCxQRFdP
UkQsUERXT1JELFBEV09SRCxQRFdPUkQsUERXT1JELFBEV09SRCxQRFdPUkQsUERXT1JELFBGSUxF
VElNRSk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnUXVlcnlNdWx0aXBs
ZVZhbHVlc0EoSEtFWSxQVkFMRU5UQSxEV09SRCxMUFNUUixQRFdPUkQpOw0KTE9ORyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ1F1ZXJ5TXVsdGlwbGVWYWx1ZXNXKEhLRVksUFZBTEVO
VFcsRFdPUkQsTFBXU1RSLFBEV09SRCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUmVnUXVlcnlWYWx1ZUEoSEtFWSxMUENTVFIsTFBTVFIsUExPTkcpOw0KTE9ORyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ1F1ZXJ5VmFsdWVFeEEgKEhLRVksTFBDU1RSLFBEV09S
RCxQRFdPUkQsTFBCWVRFLFBEV09SRCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUmVnUXVlcnlWYWx1ZUV4VyhIS0VZLExQQ1dTVFIsUERXT1JELFBEV09SRCxMUEJZVEUsUERX
T1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdRdWVyeVZhbHVlVyhI
S0VZLExQQ1dTVFIsTFBXU1RSLFBMT05HKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBSZWdSZXBsYWNlS2V5QShIS0VZLExQQ1NUUixMUENTVFIsTFBDU1RSKTsNCkxPTkcgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdSZXBsYWNlS2V5VyhIS0VZLExQQ1dTVFIsTFBD
V1NUUixMUENXU1RSKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdSZXN0
b3JlS2V5QSAoSEtFWSxMUENTVFIsRFdPUkQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFJlZ1Jlc3RvcmVLZXlXKEhLRVksTFBDV1NUUixEV09SRCk7DQpMT05HIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgUmVnU2F2ZUtleUEoSEtFWSxMUENTVFIsTFBTRUNVUklUWV9B
VFRSSUJVVEVTKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdTYXZlS2V5
VyhIS0VZLExQQ1dTVFIsTFBTRUNVUklUWV9BVFRSSUJVVEVTKTsNCkxPTkcgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBSZWdTZXRLZXlTZWN1cml0eShIS0VZLFNFQ1VSSVRZX0lORk9STUFU
SU9OLFBTRUNVUklUWV9ERVNDUklQVE9SKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBSZWdTZXRWYWx1ZUEoSEtFWSxMUENTVFIsRFdPUkQsTFBDU1RSLERXT1JEKTsNCkxPTkcg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdTZXRWYWx1ZUV4QShIS0VZLExQQ1NUUixE
V09SRCxEV09SRCxjb25zdCBCWVRFKixEV09SRCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgUmVnU2V0VmFsdWVFeFcoSEtFWSxMUENXU1RSLERXT1JELERXT1JELGNvbnN0IEJZ
VEUqLERXT1JEKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZWdTZXRWYWx1
ZVcoSEtFWSxMUENXU1RSLERXT1JELExQQ1dTVFIsRFdPUkQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJlZ1VuTG9hZEtleUEoSEtFWSxMUENTVFIpOw0KTE9ORyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlZ1VuTG9hZEtleVcoSEtFWSxMUENXU1RSKTsNCiMgMTI2
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnJlZy5oIiAzDQp0eXBlZGVmIFZBTEVOVEEg
VkFMRU5ULCpQVkFMRU5UOw0KIyAxNTMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lucmVn
LmgiIDMNCn0NCiMgMTIwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIgMiAz
DQoNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnN2Yy5oIiAxIDMNCg0KDQoN
CmV4dGVybiAiQyIgew0KIyA1MCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5zdmMuaCIg
Mw0KdHlwZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfU1RBVFVTIHsNCiAgICAgICAgRFdPUkQgZHdTZXJ2
aWNlVHlwZTsNCiAgICAgICAgRFdPUkQgZHdDdXJyZW50U3RhdGU7DQogICAgICAgIERXT1JEIGR3
Q29udHJvbHNBY2NlcHRlZDsNCiAgICAgICAgRFdPUkQgZHdXaW4zMkV4aXRDb2RlOw0KICAgICAg
ICBEV09SRCBkd1NlcnZpY2VTcGVjaWZpY0V4aXRDb2RlOw0KICAgICAgICBEV09SRCBkd0NoZWNr
UG9pbnQ7DQogICAgICAgIERXT1JEIGR3V2FpdEhpbnQ7DQp9IFNFUlZJQ0VfU1RBVFVTLCpMUFNF
UlZJQ0VfU1RBVFVTOw0KdHlwZWRlZiBzdHJ1Y3QgX0VOVU1fU0VSVklDRV9TVEFUVVNBIHsNCiAg
ICAgICAgTFBTVFIgbHBTZXJ2aWNlTmFtZTsNCiAgICAgICAgTFBTVFIgbHBEaXNwbGF5TmFtZTsN
CiAgICAgICAgU0VSVklDRV9TVEFUVVMgU2VydmljZVN0YXR1czsNCn0gRU5VTV9TRVJWSUNFX1NU
QVRVU0EsKkxQRU5VTV9TRVJWSUNFX1NUQVRVU0E7DQp0eXBlZGVmIHN0cnVjdCBfRU5VTV9TRVJW
SUNFX1NUQVRVU1cgew0KICAgICAgICBMUFdTVFIgbHBTZXJ2aWNlTmFtZTsNCiAgICAgICAgTFBX
U1RSIGxwRGlzcGxheU5hbWU7DQogICAgICAgIFNFUlZJQ0VfU1RBVFVTIFNlcnZpY2VTdGF0dXM7
DQp9IEVOVU1fU0VSVklDRV9TVEFUVVNXLCpMUEVOVU1fU0VSVklDRV9TVEFUVVNXOw0KdHlwZWRl
ZiBzdHJ1Y3QgX1FVRVJZX1NFUlZJQ0VfQ09ORklHQSB7DQogICAgICAgIERXT1JEIGR3U2Vydmlj
ZVR5cGU7DQogICAgICAgIERXT1JEIGR3U3RhcnRUeXBlOw0KICAgICAgICBEV09SRCBkd0Vycm9y
Q29udHJvbDsNCiAgICAgICAgTFBTVFIgbHBCaW5hcnlQYXRoTmFtZTsNCiAgICAgICAgTFBTVFIg
bHBMb2FkT3JkZXJHcm91cDsNCiAgICAgICAgRFdPUkQgZHdUYWdJZDsNCiAgICAgICAgTFBTVFIg
bHBEZXBlbmRlbmNpZXM7DQogICAgICAgIExQU1RSIGxwU2VydmljZVN0YXJ0TmFtZTsNCiAgICAg
ICAgTFBTVFIgbHBEaXNwbGF5TmFtZTsNCn0gUVVFUllfU0VSVklDRV9DT05GSUdBLCpMUFFVRVJZ
X1NFUlZJQ0VfQ09ORklHQTsNCnR5cGVkZWYgc3RydWN0IF9RVUVSWV9TRVJWSUNFX0NPTkZJR1cg
ew0KICAgICAgICBEV09SRCBkd1NlcnZpY2VUeXBlOw0KICAgICAgICBEV09SRCBkd1N0YXJ0VHlw
ZTsNCiAgICAgICAgRFdPUkQgZHdFcnJvckNvbnRyb2w7DQogICAgICAgIExQV1NUUiBscEJpbmFy
eVBhdGhOYW1lOw0KICAgICAgICBMUFdTVFIgbHBMb2FkT3JkZXJHcm91cDsNCiAgICAgICAgRFdP
UkQgZHdUYWdJZDsNCiAgICAgICAgTFBXU1RSIGxwRGVwZW5kZW5jaWVzOw0KICAgICAgICBMUFdT
VFIgbHBTZXJ2aWNlU3RhcnROYW1lOw0KICAgICAgICBMUFdTVFIgbHBEaXNwbGF5TmFtZTsNCn0g
UVVFUllfU0VSVklDRV9DT05GSUdXLCpMUFFVRVJZX1NFUlZJQ0VfQ09ORklHVzsNCnR5cGVkZWYg
c3RydWN0IF9RVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTQSB7DQogICAgICAgIERXT1JEIGZJc0xv
Y2tlZDsNCiAgICAgICAgTFBTVFIgbHBMb2NrT3duZXI7DQogICAgICAgIERXT1JEIGR3TG9ja0R1
cmF0aW9uOw0KfSBRVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTQSwqTFBRVUVSWV9TRVJWSUNFX0xP
Q0tfU1RBVFVTQTsNCnR5cGVkZWYgc3RydWN0IF9RVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTVyB7
DQogICAgICAgIERXT1JEIGZJc0xvY2tlZDsNCiAgICAgICAgTFBXU1RSIGxwTG9ja093bmVyOw0K
ICAgICAgICBEV09SRCBkd0xvY2tEdXJhdGlvbjsNCn0gUVVFUllfU0VSVklDRV9MT0NLX1NUQVRV
U1csKkxQUVVFUllfU0VSVklDRV9MT0NLX1NUQVRVU1c7DQp0eXBlZGVmIHZvaWQgKF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgKkxQU0VSVklDRV9NQUlOX0ZVTkNUSU9OQSkoRFdPUkQsTFBT
VFIqKTsNCnR5cGVkZWYgdm9pZCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqTFBTRVJW
SUNFX01BSU5fRlVOQ1RJT05XKShEV09SRCxMUFdTVFIqKTsNCnR5cGVkZWYgc3RydWN0IF9TRVJW
SUNFX1RBQkxFX0VOVFJZQSB7DQogICAgICAgIExQU1RSIGxwU2VydmljZU5hbWU7DQogICAgICAg
IExQU0VSVklDRV9NQUlOX0ZVTkNUSU9OQSBscFNlcnZpY2VQcm9jOw0KfSBTRVJWSUNFX1RBQkxF
X0VOVFJZQSwqTFBTRVJWSUNFX1RBQkxFX0VOVFJZQTsNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNF
X1RBQkxFX0VOVFJZVyB7DQogICAgICAgIExQV1NUUiBscFNlcnZpY2VOYW1lOw0KICAgICAgICBM
UFNFUlZJQ0VfTUFJTl9GVU5DVElPTlcgbHBTZXJ2aWNlUHJvYzsNCn0gU0VSVklDRV9UQUJMRV9F
TlRSWVcsKkxQU0VSVklDRV9UQUJMRV9FTlRSWVc7DQp0eXBlZGVmIHN0cnVjdCBTQ19IQU5ETEVf
X3tpbnQgaTt9KlNDX0hBTkRMRTsNCnR5cGVkZWYgU0NfSEFORExFICpMUFNDX0hBTkRMRTsNCnR5
cGVkZWYgUFZPSUQgU0NfTE9DSzsNCnR5cGVkZWYgRFdPUkQgU0VSVklDRV9TVEFUVVNfSEFORExF
Ow0KdHlwZWRlZiB2b2lkKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKkxQSEFORExFUl9G
VU5DVElPTikoRFdPUkQpOw0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hh
bmdlU2VydmljZUNvbmZpZ0EoU0NfSEFORExFLERXT1JELERXT1JELERXT1JELExQQ1NUUixMUENT
VFIsTFBEV09SRCxMUENTVFIsTFBDU1RSLExQQ1NUUixMUENTVFIpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIENoYW5nZVNlcnZpY2VDb25maWdXKFNDX0hBTkRMRSxEV09SRCxE
V09SRCxEV09SRCxMUENXU1RSLExQQ1dTVFIsTFBEV09SRCxMUENXU1RSLExQQ1dTVFIsTFBDV1NU
UixMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDbG9zZVNlcnZp
Y2VIYW5kbGUoU0NfSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBD
b250cm9sU2VydmljZShTQ19IQU5ETEUsRFdPUkQsTFBTRVJWSUNFX1NUQVRVUyk7DQpTQ19IQU5E
TEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDcmVhdGVTZXJ2aWNlQShTQ19IQU5ETEUs
TFBDU1RSLExQQ1NUUixEV09SRCxEV09SRCxEV09SRCxEV09SRCxMUENTVFIsTFBDU1RSLFBEV09S
RCxMUENTVFIsTFBDU1RSLExQQ1NUUik7DQpTQ19IQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBDcmVhdGVTZXJ2aWNlVyhTQ19IQU5ETEUsTFBDV1NUUixMUENXU1RSLERXT1JELERX
T1JELERXT1JELERXT1JELExQQ1dTVFIsTFBDV1NUUixQRFdPUkQsTFBDV1NUUixMUENXU1RSLExQ
Q1dTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZVNlcnZpY2Uo
U0NfSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVtRGVwZW5k
ZW50U2VydmljZXNBKFNDX0hBTkRMRSxEV09SRCxMUEVOVU1fU0VSVklDRV9TVEFUVVNBLERXT1JE
LFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1E
ZXBlbmRlbnRTZXJ2aWNlc1coU0NfSEFORExFLERXT1JELExQRU5VTV9TRVJWSUNFX1NUQVRVU1cs
RFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RW51bVNlcnZpY2VzU3RhdHVzQShTQ19IQU5ETEUsRFdPUkQsRFdPUkQsTFBFTlVNX1NFUlZJQ0Vf
U1RBVFVTQSxEV09SRCxQRFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgRW51bVNlcnZpY2VzU3RhdHVzVyhTQ19IQU5ETEUsRFdPUkQsRFdPUkQs
TFBFTlVNX1NFUlZJQ0VfU1RBVFVTVyxEV09SRCxQRFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U2VydmljZURpc3BsYXlOYW1lQShTQ19I
QU5ETEUsTFBDU1RSLExQU1RSLFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgR2V0U2VydmljZURpc3BsYXlOYW1lVyhTQ19IQU5ETEUsTFBDV1NUUixMUFdTVFIsUERX
T1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRTZXJ2aWNlS2V5TmFt
ZUEoU0NfSEFORExFLExQQ1NUUixMUFNUUixQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEdldFNlcnZpY2VLZXlOYW1lVyhTQ19IQU5ETEUsTFBDV1NUUixMUFdTVFIs
UERXT1JEKTsNClNDX0xPQ0sgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMb2NrU2Vydmlj
ZURhdGFiYXNlKFNDX0hBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
Tm90aWZ5Qm9vdENvbmZpZ1N0YXR1cyhCT09MKTsNClNDX0hBTkRMRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIE9wZW5TQ01hbmFnZXJBKExQQ1NUUixMUENTVFIsRFdPUkQpOw0KU0NfSEFO
RExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlblNDTWFuYWdlclcoTFBDV1NUUixM
UENXU1RSLERXT1JEKTsNClNDX0hBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9w
ZW5TZXJ2aWNlQShTQ19IQU5ETEUsTFBDU1RSLERXT1JEKTsNClNDX0hBTkRMRSBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIE9wZW5TZXJ2aWNlVyhTQ19IQU5ETEUsTFBDV1NUUixEV09SRCk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUXVlcnlTZXJ2aWNlQ29uZmlnQShT
Q19IQU5ETEUsTFBRVUVSWV9TRVJWSUNFX0NPTkZJR0EsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBRdWVyeVNlcnZpY2VDb25maWdXKFNDX0hBTkRMRSxM
UFFVRVJZX1NFUlZJQ0VfQ09ORklHVyxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFF1ZXJ5U2VydmljZUxvY2tTdGF0dXNBKFNDX0hBTkRMRSxMUFFVRVJZ
X1NFUlZJQ0VfTE9DS19TVEFUVVNBLERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUXVlcnlTZXJ2aWNlTG9ja1N0YXR1c1coU0NfSEFORExFLExQUVVFUllf
U0VSVklDRV9MT0NLX1NUQVRVU1csRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBRdWVyeVNlcnZpY2VPYmplY3RTZWN1cml0eShTQ19IQU5ETEUsU0VDVVJJ
VFlfSU5GT1JNQVRJT04sUFNFQ1VSSVRZX0RFU0NSSVBUT1IsRFdPUkQsTFBEV09SRCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUXVlcnlTZXJ2aWNlU3RhdHVzKFNDX0hBTkRM
RSxMUFNFUlZJQ0VfU1RBVFVTKTsNClNFUlZJQ0VfU1RBVFVTX0hBTkRMRSBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyQShMUENTVFIsTFBIQU5E
TEVSX0ZVTkNUSU9OKTsNClNFUlZJQ0VfU1RBVFVTX0hBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyVyhMUENXU1RSLExQSEFORExFUl9G
VU5DVElPTik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U2VydmljZU9i
amVjdFNlY3VyaXR5KFNDX0hBTkRMRSxTRUNVUklUWV9JTkZPUk1BVElPTixQU0VDVVJJVFlfREVT
Q1JJUFRPUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0U2VydmljZVN0
YXR1cyhTRVJWSUNFX1NUQVRVU19IQU5ETEUsTFBTRVJWSUNFX1NUQVRVUyk7DQpCT09MIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3RhcnRTZXJ2aWNlQShTQ19IQU5ETEUsRFdPUkQsTFBD
U1RSKik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU3RhcnRTZXJ2aWNlQ3Ry
bERpc3BhdGNoZXJBKExQU0VSVklDRV9UQUJMRV9FTlRSWUEpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyVyhMUFNFUlZJQ0VfVEFC
TEVfRU5UUllXKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdGFydFNlcnZp
Y2VXKFNDX0hBTkRMRSxEV09SRCxMUENXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBVbmxvY2tTZXJ2aWNlRGF0YWJhc2UoU0NfTE9DSyk7DQojIDE3NyAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS93aW5zdmMuaCIgMw0KdHlwZWRlZiBFTlVNX1NFUlZJQ0VfU1RBVFVT
QSBFTlVNX1NFUlZJQ0VfU1RBVFVTLCpMUEVOVU1fU0VSVklDRV9TVEFUVVM7DQp0eXBlZGVmIFFV
RVJZX1NFUlZJQ0VfQ09ORklHQSBRVUVSWV9TRVJWSUNFX0NPTkZJRywqTFBRVUVSWV9TRVJWSUNF
X0NPTkZJRzsNCnR5cGVkZWYgUVVFUllfU0VSVklDRV9MT0NLX1NUQVRVU0EgUVVFUllfU0VSVklD
RV9MT0NLX1NUQVRVUywqTFBRVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTOw0KdHlwZWRlZiBTRVJW
SUNFX1RBQkxFX0VOVFJZQSBTRVJWSUNFX1RBQkxFX0VOVFJZLCpMUFNFUlZJQ0VfVEFCTEVfRU5U
Ulk7DQp0eXBlZGVmIExQU0VSVklDRV9NQUlOX0ZVTkNUSU9OQSBMUFNFUlZJQ0VfTUFJTl9GVU5D
VElPTjsNCiMgMjAwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnN2Yy5oIiAzDQp9DQoj
IDEyMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KDQoNCg0KIyAx
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2NvbW1kbGcuaCIgMSAzDQoNCg0KDQpleHRlcm4g
IkMiIHsNCg0KI3ByYWdtYSBwYWNrKHB1c2gsMSkNCiMgMjAyICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2NvbW1kbGcuaCIgMw0KdHlwZWRlZiBVSU5UIChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpICpfX0NESE9PS1BST0MpKEhXTkQsVUlOVCxXUEFSQU0sTFBBUkFNKTsNCnR5cGVkZWYg
X19DREhPT0tQUk9DIExQQ0NIT09LUFJPQzsNCnR5cGVkZWYgX19DREhPT0tQUk9DIExQQ0ZIT09L
UFJPQzsNCnR5cGVkZWYgX19DREhPT0tQUk9DIExQRlJIT09LUFJPQzsNCnR5cGVkZWYgX19DREhP
T0tQUk9DIExQT0ZOSE9PS1BST0M7DQp0eXBlZGVmIF9fQ0RIT09LUFJPQyBMUFBBR0VQQUlOVEhP
T0s7DQp0eXBlZGVmIF9fQ0RIT09LUFJPQyBMUFBBR0VTRVRVUEhPT0s7DQp0eXBlZGVmIF9fQ0RI
T09LUFJPQyBMUFNFVFVQSE9PS1BST0M7DQp0eXBlZGVmIF9fQ0RIT09LUFJPQyBMUFBSSU5USE9P
S1BST0M7DQp0eXBlZGVmIHN0cnVjdCB0YWdDSE9PU0VDT0xPUkEgew0KICAgICAgICBEV09SRCBs
U3RydWN0U2l6ZTsNCiAgICAgICAgSFdORCBod25kT3duZXI7DQogICAgICAgIEhXTkQgaEluc3Rh
bmNlOw0KICAgICAgICBDT0xPUlJFRiByZ2JSZXN1bHQ7DQogICAgICAgIENPTE9SUkVGKiBscEN1
c3RDb2xvcnM7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBMUEFSQU0gbEN1c3REYXRh
Ow0KICAgICAgICBMUENDSE9PS1BST0MgbHBmbkhvb2s7DQogICAgICAgIExQQ1NUUiBscFRlbXBs
YXRlTmFtZTsNCn0gQ0hPT1NFQ09MT1JBLCpMUENIT09TRUNPTE9SQTsNCnR5cGVkZWYgc3RydWN0
IHRhZ0NIT09TRUNPTE9SVyB7DQogICAgICAgIERXT1JEIGxTdHJ1Y3RTaXplOw0KICAgICAgICBI
V05EIGh3bmRPd25lcjsNCiAgICAgICAgSFdORCBoSW5zdGFuY2U7DQogICAgICAgIENPTE9SUkVG
IHJnYlJlc3VsdDsNCiAgICAgICAgQ09MT1JSRUYqIGxwQ3VzdENvbG9yczsNCiAgICAgICAgRFdP
UkQgRmxhZ3M7DQogICAgICAgIExQQVJBTSBsQ3VzdERhdGE7DQogICAgICAgIExQQ0NIT09LUFJP
QyBscGZuSG9vazsNCiAgICAgICAgTFBDV1NUUiBscFRlbXBsYXRlTmFtZTsNCn0gQ0hPT1NFQ09M
T1JXLCpMUENIT09TRUNPTE9SVzsNCnR5cGVkZWYgc3RydWN0IHRhZ0NIT09TRUZPTlRBIHsNCiAg
ICAgICAgRFdPUkQgbFN0cnVjdFNpemU7DQogICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAgICAg
ICBIREMgaERDOw0KICAgICAgICBMUExPR0ZPTlRBIGxwTG9nRm9udDsNCiAgICAgICAgSU5UIGlQ
b2ludFNpemU7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBEV09SRCByZ2JDb2xvcnM7
DQogICAgICAgIExQQVJBTSBsQ3VzdERhdGE7DQogICAgICAgIExQQ0ZIT09LUFJPQyBscGZuSG9v
azsNCiAgICAgICAgTFBDU1RSIGxwVGVtcGxhdGVOYW1lOw0KICAgICAgICBISU5TVEFOQ0UgaElu
c3RhbmNlOw0KICAgICAgICBMUFNUUiBscHN6U3R5bGU7DQogICAgICAgIFdPUkQgbkZvbnRUeXBl
Ow0KICAgICAgICBXT1JEIF9fX01JU1NJTkdfQUxJR05NRU5UX187DQogICAgICAgIElOVCBuU2l6
ZU1pbjsNCiAgICAgICAgSU5UIG5TaXplTWF4Ow0KfSBDSE9PU0VGT05UQSwqTFBDSE9PU0VGT05U
QTsNCnR5cGVkZWYgc3RydWN0IHRhZ0NIT09TRUZPTlRXIHsNCiAgICAgICAgRFdPUkQgbFN0cnVj
dFNpemU7DQogICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAgICAgICBIREMgaERDOw0KICAgICAg
ICBMUExPR0ZPTlRXIGxwTG9nRm9udDsNCiAgICAgICAgSU5UIGlQb2ludFNpemU7DQogICAgICAg
IERXT1JEIEZsYWdzOw0KICAgICAgICBEV09SRCByZ2JDb2xvcnM7DQogICAgICAgIExQQVJBTSBs
Q3VzdERhdGE7DQogICAgICAgIExQQ0ZIT09LUFJPQyBscGZuSG9vazsNCiAgICAgICAgTFBDV1NU
UiBscFRlbXBsYXRlTmFtZTsNCiAgICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZTsNCiAgICAgICAg
TFBXU1RSIGxwc3pTdHlsZTsNCiAgICAgICAgV09SRCBuRm9udFR5cGU7DQogICAgICAgIFdPUkQg
X19fTUlTU0lOR19BTElHTk1FTlRfXzsNCiAgICAgICAgSU5UIG5TaXplTWluOw0KICAgICAgICBJ
TlQgblNpemVNYXg7DQp9IENIT09TRUZPTlRXLCpMUENIT09TRUZPTlRXOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnREVWTkFNRVMgew0KICAgICAgICBXT1JEIHdEcml2ZXJPZmZzZXQ7DQogICAgICAgIFdP
UkQgd0RldmljZU9mZnNldDsNCiAgICAgICAgV09SRCB3T3V0cHV0T2Zmc2V0Ow0KICAgICAgICBX
T1JEIHdEZWZhdWx0Ow0KfSBERVZOQU1FUywqTFBERVZOQU1FUzsNCnR5cGVkZWYgc3RydWN0IHsN
CiAgICAgICAgRFdPUkQgbFN0cnVjdFNpemU7DQogICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAg
ICAgICBISU5TVEFOQ0UgaEluc3RhbmNlOw0KICAgICAgICBEV09SRCBGbGFnczsNCiAgICAgICAg
TFBTVFIgbHBzdHJGaW5kV2hhdDsNCiAgICAgICAgTFBTVFIgbHBzdHJSZXBsYWNlV2l0aDsNCiAg
ICAgICAgV09SRCB3RmluZFdoYXRMZW47DQogICAgICAgIFdPUkQgd1JlcGxhY2VXaXRoTGVuOw0K
ICAgICAgICBMUEFSQU0gbEN1c3REYXRhOw0KICAgICAgICBMUEZSSE9PS1BST0MgbHBmbkhvb2s7
DQogICAgICAgIExQQ1NUUiBscFRlbXBsYXRlTmFtZTsNCn0gRklORFJFUExBQ0VBLCpMUEZJTkRS
RVBMQUNFQTsNCnR5cGVkZWYgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgbFN0cnVjdFNpemU7DQog
ICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAgICAgICBISU5TVEFOQ0UgaEluc3RhbmNlOw0KICAg
ICAgICBEV09SRCBGbGFnczsNCiAgICAgICAgTFBXU1RSIGxwc3RyRmluZFdoYXQ7DQogICAgICAg
IExQV1NUUiBscHN0clJlcGxhY2VXaXRoOw0KICAgICAgICBXT1JEIHdGaW5kV2hhdExlbjsNCiAg
ICAgICAgV09SRCB3UmVwbGFjZVdpdGhMZW47DQogICAgICAgIExQQVJBTSBsQ3VzdERhdGE7DQog
ICAgICAgIExQRlJIT09LUFJPQyBscGZuSG9vazsNCiAgICAgICAgTFBDV1NUUiBscFRlbXBsYXRl
TmFtZTsNCn0gRklORFJFUExBQ0VXLCpMUEZJTkRSRVBMQUNFVzsNCnR5cGVkZWYgc3RydWN0IHRh
Z09GTkEgew0KICAgICAgICBEV09SRCBsU3RydWN0U2l6ZTsNCiAgICAgICAgSFdORCBod25kT3du
ZXI7DQogICAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2U7DQogICAgICAgIExQQ1NUUiBscHN0ckZp
bHRlcjsNCiAgICAgICAgTFBTVFIgbHBzdHJDdXN0b21GaWx0ZXI7DQogICAgICAgIERXT1JEIG5N
YXhDdXN0RmlsdGVyOw0KICAgICAgICBEV09SRCBuRmlsdGVySW5kZXg7DQogICAgICAgIExQU1RS
IGxwc3RyRmlsZTsNCiAgICAgICAgRFdPUkQgbk1heEZpbGU7DQogICAgICAgIExQU1RSIGxwc3Ry
RmlsZVRpdGxlOw0KICAgICAgICBEV09SRCBuTWF4RmlsZVRpdGxlOw0KICAgICAgICBMUENTVFIg
bHBzdHJJbml0aWFsRGlyOw0KICAgICAgICBMUENTVFIgbHBzdHJUaXRsZTsNCiAgICAgICAgRFdP
UkQgRmxhZ3M7DQogICAgICAgIFdPUkQgbkZpbGVPZmZzZXQ7DQogICAgICAgIFdPUkQgbkZpbGVF
eHRlbnNpb247DQogICAgICAgIExQQ1NUUiBscHN0ckRlZkV4dDsNCiAgICAgICAgRFdPUkQgbEN1
c3REYXRhOw0KICAgICAgICBMUE9GTkhPT0tQUk9DIGxwZm5Ib29rOw0KICAgICAgICBMUENTVFIg
bHBUZW1wbGF0ZU5hbWU7DQp9IE9QRU5GSUxFTkFNRUEsKkxQT1BFTkZJTEVOQU1FQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ09GTlcgew0KICAgICAgICBEV09SRCBsU3RydWN0U2l6ZTsNCiAgICAgICAg
SFdORCBod25kT3duZXI7DQogICAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2U7DQogICAgICAgIExQ
Q1dTVFIgbHBzdHJGaWx0ZXI7DQogICAgICAgIExQV1NUUiBscHN0ckN1c3RvbUZpbHRlcjsNCiAg
ICAgICAgRFdPUkQgbk1heEN1c3RGaWx0ZXI7DQogICAgICAgIERXT1JEIG5GaWx0ZXJJbmRleDsN
CiAgICAgICAgTFBXU1RSIGxwc3RyRmlsZTsNCiAgICAgICAgRFdPUkQgbk1heEZpbGU7DQogICAg
ICAgIExQV1NUUiBscHN0ckZpbGVUaXRsZTsNCiAgICAgICAgRFdPUkQgbk1heEZpbGVUaXRsZTsN
CiAgICAgICAgTFBDV1NUUiBscHN0ckluaXRpYWxEaXI7DQogICAgICAgIExQQ1dTVFIgbHBzdHJU
aXRsZTsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIFdPUkQgbkZpbGVPZmZzZXQ7DQog
ICAgICAgIFdPUkQgbkZpbGVFeHRlbnNpb247DQogICAgICAgIExQQ1dTVFIgbHBzdHJEZWZFeHQ7
DQogICAgICAgIERXT1JEIGxDdXN0RGF0YTsNCiAgICAgICAgTFBPRk5IT09LUFJPQyBscGZuSG9v
azsNCiAgICAgICAgTFBDV1NUUiBscFRlbXBsYXRlTmFtZTsNCn0gT1BFTkZJTEVOQU1FVywqTFBP
UEVORklMRU5BTUVXOw0KdHlwZWRlZiBzdHJ1Y3QgX09GTk9USUZZQSB7DQogICAgICAgIE5NSERS
IGhkcjsNCiAgICAgICAgTFBPUEVORklMRU5BTUVBIGxwT0ZOOw0KICAgICAgICBMUFNUUiBwc3pG
aWxlOw0KfSBPRk5PVElGWUEsKkxQT0ZOT1RJRllBOw0KdHlwZWRlZiBzdHJ1Y3QgX09GTk9USUZZ
VyB7DQogICAgICAgIE5NSERSIGhkcjsNCiAgICAgICAgTFBPUEVORklMRU5BTUVXIGxwT0ZOOw0K
ICAgICAgICBMUFdTVFIgcHN6RmlsZTsNCn0gT0ZOT1RJRllXLCpMUE9GTk9USUZZVzsNCnR5cGVk
ZWYgc3RydWN0IHRhZ1BTREEgew0KICAgICAgICBEV09SRCBsU3RydWN0U2l6ZTsNCiAgICAgICAg
SFdORCBod25kT3duZXI7DQogICAgICAgIEhHTE9CQUwgaERldk1vZGU7DQogICAgICAgIEhHTE9C
QUwgaERldk5hbWVzOw0KICAgICAgICBEV09SRCBGbGFnczsNCiAgICAgICAgUE9JTlQgcHRQYXBl
clNpemU7DQogICAgICAgIFJFQ1QgcnRNaW5NYXJnaW47DQogICAgICAgIFJFQ1QgcnRNYXJnaW47
DQogICAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2U7DQogICAgICAgIExQQVJBTSBsQ3VzdERhdGE7
DQogICAgICAgIExQUEFHRVNFVFVQSE9PSyBscGZuUGFnZVNldHVwSG9vazsNCiAgICAgICAgTFBQ
QUdFUEFJTlRIT09LIGxwZm5QYWdlUGFpbnRIb29rOw0KICAgICAgICBMUENTVFIgbHBQYWdlU2V0
dXBUZW1wbGF0ZU5hbWU7DQogICAgICAgIEhHTE9CQUwgaFBhZ2VTZXR1cFRlbXBsYXRlOw0KfSBQ
QUdFU0VUVVBETEdBLCpMUFBBR0VTRVRVUERMR0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdQU0RXIHsN
CiAgICAgICAgRFdPUkQgbFN0cnVjdFNpemU7DQogICAgICAgIEhXTkQgaHduZE93bmVyOw0KICAg
ICAgICBIR0xPQkFMIGhEZXZNb2RlOw0KICAgICAgICBIR0xPQkFMIGhEZXZOYW1lczsNCiAgICAg
ICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIFBPSU5UIHB0UGFwZXJTaXplOw0KICAgICAgICBSRUNU
IHJ0TWluTWFyZ2luOw0KICAgICAgICBSRUNUIHJ0TWFyZ2luOw0KICAgICAgICBISU5TVEFOQ0Ug
aEluc3RhbmNlOw0KICAgICAgICBMUEFSQU0gbEN1c3REYXRhOw0KICAgICAgICBMUFBBR0VTRVRV
UEhPT0sgbHBmblBhZ2VTZXR1cEhvb2s7DQogICAgICAgIExQUEFHRVBBSU5USE9PSyBscGZuUGFn
ZVBhaW50SG9vazsNCiAgICAgICAgTFBDV1NUUiBscFBhZ2VTZXR1cFRlbXBsYXRlTmFtZTsNCiAg
ICAgICAgSEdMT0JBTCBoUGFnZVNldHVwVGVtcGxhdGU7DQp9IFBBR0VTRVRVUERMR1csKkxQUEFH
RVNFVFVQRExHVzsNCnR5cGVkZWYgc3RydWN0IHRhZ1BEQSB7DQogICAgICAgIERXT1JEIGxTdHJ1
Y3RTaXplOw0KICAgICAgICBIV05EIGh3bmRPd25lcjsNCiAgICAgICAgSEFORExFIGhEZXZNb2Rl
Ow0KICAgICAgICBIQU5ETEUgaERldk5hbWVzOw0KICAgICAgICBIREMgaERDOw0KICAgICAgICBE
V09SRCBGbGFnczsNCiAgICAgICAgV09SRCBuRnJvbVBhZ2U7DQogICAgICAgIFdPUkQgblRvUGFn
ZTsNCiAgICAgICAgV09SRCBuTWluUGFnZTsNCiAgICAgICAgV09SRCBuTWF4UGFnZTsNCiAgICAg
ICAgV09SRCBuQ29waWVzOw0KICAgICAgICBISU5TVEFOQ0UgaEluc3RhbmNlOw0KICAgICAgICBE
V09SRCBsQ3VzdERhdGE7DQogICAgICAgIExQUFJJTlRIT09LUFJPQyBscGZuUHJpbnRIb29rOw0K
ICAgICAgICBMUFNFVFVQSE9PS1BST0MgbHBmblNldHVwSG9vazsNCiAgICAgICAgTFBDU1RSIGxw
UHJpbnRUZW1wbGF0ZU5hbWU7DQogICAgICAgIExQQ1NUUiBscFNldHVwVGVtcGxhdGVOYW1lOw0K
ICAgICAgICBIQU5ETEUgaFByaW50VGVtcGxhdGU7DQogICAgICAgIEhBTkRMRSBoU2V0dXBUZW1w
bGF0ZTsNCn0gUFJJTlRETEdBLCpMUFBSSU5URExHQTsNCnR5cGVkZWYgc3RydWN0IHRhZ1BEVyB7
DQogICAgICAgIERXT1JEIGxTdHJ1Y3RTaXplOw0KICAgICAgICBIV05EIGh3bmRPd25lcjsNCiAg
ICAgICAgSEFORExFIGhEZXZNb2RlOw0KICAgICAgICBIQU5ETEUgaERldk5hbWVzOw0KICAgICAg
ICBIREMgaERDOw0KICAgICAgICBEV09SRCBGbGFnczsNCiAgICAgICAgV09SRCBuRnJvbVBhZ2U7
DQogICAgICAgIFdPUkQgblRvUGFnZTsNCiAgICAgICAgV09SRCBuTWluUGFnZTsNCiAgICAgICAg
V09SRCBuTWF4UGFnZTsNCiAgICAgICAgV09SRCBuQ29waWVzOw0KICAgICAgICBISU5TVEFOQ0Ug
aEluc3RhbmNlOw0KICAgICAgICBEV09SRCBsQ3VzdERhdGE7DQogICAgICAgIExQUFJJTlRIT09L
UFJPQyBscGZuUHJpbnRIb29rOw0KICAgICAgICBMUFNFVFVQSE9PS1BST0MgbHBmblNldHVwSG9v
azsNCiAgICAgICAgTFBDV1NUUiBscFByaW50VGVtcGxhdGVOYW1lOw0KICAgICAgICBMUENXU1RS
IGxwU2V0dXBUZW1wbGF0ZU5hbWU7DQogICAgICAgIEhBTkRMRSBoUHJpbnRUZW1wbGF0ZTsNCiAg
ICAgICAgSEFORExFIGhTZXR1cFRlbXBsYXRlOw0KfSBQUklOVERMR1csKkxQUFJJTlRETEdXOw0K
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2hvb3NlQ29sb3JBKExQQ0hPT1NF
Q09MT1JBKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDaG9vc2VDb2xvclco
TFBDSE9PU0VDT0xPUlcpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENob29z
ZUZvbnRBKExQQ0hPT1NFRk9OVEEpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IENob29zZUZvbnRXKExQQ0hPT1NFRk9OVFcpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBDb21tRGxnRXh0ZW5kZWRFcnJvcih2b2lkKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBGaW5kVGV4dEEoTFBGSU5EUkVQTEFDRUEpOw0KSFdORCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmRUZXh0VyhMUEZJTkRSRVBMQUNFVyk7DQpzaG9ydCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZpbGVUaXRsZUEoTFBDU1RSLExQU1RSLFdPUkQp
Ow0Kc2hvcnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRGaWxlVGl0bGVXKExQQ1dT
VFIsTFBXU1RSLFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldE9w
ZW5GaWxlTmFtZUEoTFBPUEVORklMRU5BTUVBKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBHZXRPcGVuRmlsZU5hbWVXKExQT1BFTkZJTEVOQU1FVyk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0U2F2ZUZpbGVOYW1lQShMUE9QRU5GSUxFTkFNRUEpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFNhdmVGaWxlTmFtZVcoTFBPUEVO
RklMRU5BTUVXKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBQYWdlU2V0dXBE
bGdBKExQUEFHRVNFVFVQRExHQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UGFnZVNldHVwRGxnVyhMUFBBR0VTRVRVUERMR1cpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFByaW50RGxnQShMUFBSSU5URExHQSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgUHJpbnREbGdXKExQUFJJTlRETEdXKTsNCkhXTkQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBSZXBsYWNlVGV4dEEoTFBGSU5EUkVQTEFDRUEpOw0KSFdORCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJlcGxhY2VUZXh0VyhMUEZJTkRSRVBMQUNFVyk7DQojIDQ4
MiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9jb21tZGxnLmgiIDMNCnR5cGVkZWYgQ0hPT1NF
Q09MT1JBIENIT09TRUNPTE9SLCpMUENIT09TRUNPTE9SOw0KdHlwZWRlZiBDSE9PU0VGT05UQSBD
SE9PU0VGT05ULCpMUENIT09TRUZPTlQ7DQp0eXBlZGVmIEZJTkRSRVBMQUNFQSBGSU5EUkVQTEFD
RSwqTFBGSU5EUkVQTEFDRTsNCnR5cGVkZWYgT1BFTkZJTEVOQU1FQSBPUEVORklMRU5BTUUsKkxQ
T1BFTkZJTEVOQU1FOw0KdHlwZWRlZiBPRk5PVElGWUEgT0ZOT1RJRlksKkxQT0ZOT1RJRlk7DQp0
eXBlZGVmIFBBR0VTRVRVUERMR0EgUEFHRVNFVFVQRExHLCpMUFBBR0VTRVRVUERMRzsNCnR5cGVk
ZWYgUFJJTlRETEdBIFBSSU5URExHLCpMUFBSSU5URExHOw0KIyA0OTkgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvY29tbWRsZy5oIiAzDQojcHJhZ21hIHBhY2socG9wKQ0KDQp9DQojIDEyNyAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KIyAxICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2NkZXJyLmgiIDEgMw0KIyAxMjggInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvd2luZG93cy5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9kZGUu
aCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCiMgMTkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZGRlLmgiIDMNCnR5cGVkZWYgc3RydWN0IHsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgYkFw
cFJldHVybkNvZGU6OCxyZXNlcnZlZDo2LGZCdXN5OjEsZkFjazoxOw0KfSBEREVBQ0s7DQp0eXBl
ZGVmIHN0cnVjdCB7DQogICAgICAgIHVuc2lnbmVkIHNob3J0IHJlc2VydmVkOjE0LGZEZWZlclVw
ZDoxLGZBY2tSZXE6MTsNCiAgICAgICAgc2hvcnQgY2ZGb3JtYXQ7DQp9IERERUFEVklTRTsNCnR5
cGVkZWYgc3RydWN0IHsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2VkOjEyLGZSZXNwb25z
ZToxLGZSZWxlYXNlOjEscmVzZXJ2ZWQ6MSxmQWNrUmVxOjE7DQogICAgICAgIHNob3J0IGNmRm9y
bWF0Ow0KICAgICAgICBCWVRFIFZhbHVlWzFdOw0KfSBEREVEQVRBOw0KdHlwZWRlZiBzdHJ1Y3Qg
ew0KICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWQ6MTMsZlJlbGVhc2U6MSxmUmVzZXJ2ZWQ6
MjsNCiAgICAgICAgc2hvcnQgY2ZGb3JtYXQ7DQogICAgICAgIEJZVEUgVmFsdWVbMV07DQp9IERE
RVBPS0U7DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDox
MywNCiAgICAgICAgICAgICAgICAgZlJlbGVhc2U6MSwNCiAgICAgICAgICAgICAgICAgZkRlZmVy
VXBkOjEsDQogICAgICAgICBmQWNrUmVxOjE7DQogICAgc2hvcnQgY2ZGb3JtYXQ7DQp9IERERUxO
Ow0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDoxMixm
QWNrOjEsZlJlbGVhc2U6MSxmUmVzZXJ2ZWQ6MSxmQWNrUmVxOjE7DQogICAgc2hvcnQgY2ZGb3Jt
YXQ7DQogICAgQllURSByZ2JbMV07DQp9IERERVVQOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIERkZVNldFF1YWxpdHlPZlNlcnZpY2UoSFdORCxjb25zdCBTRUNVUklUWV9RVUFM
SVRZX09GX1NFUlZJQ0UqLFBTRUNVUklUWV9RVUFMSVRZX09GX1NFUlZJQ0UpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEltcGVyc29uYXRlRGRlQ2xpZW50V2luZG93KEhXTkQs
SFdORCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUGFja0RERWxQYXJhbShV
SU5ULFVJTlQsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVW5wYWNr
RERFbFBhcmFtKFVJTlQsTE9ORyxQVUlOVCxQVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRnJlZURERWxQYXJhbShVSU5ULExPTkcpOw0KTE9ORyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJldXNlRERFbFBhcmFtKExPTkcsVUlOVCxVSU5ULFVJTlQsVUlOVCk7
DQoNCg0KDQp9DQojIDEyOSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIg
Mw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2RkZW1sLmgiIDEgMw0KDQoNCg0KZXh0
ZXJuICJDIiB7DQojIDEzNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9kZGVtbC5oIiAzDQp0
eXBlZGVmIHN0cnVjdCBIQ09OVkxJU1RfX3tpbnQgaTt9KkhDT05WTElTVDsNCnR5cGVkZWYgc3Ry
dWN0IEhDT05WX197aW50IGk7fSpIQ09OVjsNCnR5cGVkZWYgc3RydWN0IEhTWl9fe2ludCBpO30q
SFNaOw0KdHlwZWRlZiBzdHJ1Y3QgSERERURBVEFfX3tpbnQgaTt9KkhEREVEQVRBOw0KdHlwZWRl
ZiBIRERFREFUQSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZOQ0FMTEJBQ0soVUlOVCxV
SU5ULEhDT05WLEhTWixIU1osSERERURBVEEsRFdPUkQsRFdPUkQpOw0KdHlwZWRlZiBIRERFREFU
QShfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpQRk5DQUxMQkFDSykoVUlOVCxVSU5ULEhD
T05WLEhTWixIU1osSERERURBVEEsRFdPUkQsRFdPUkQpOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnSFNa
UEFJUiB7DQogICAgICAgIEhTWiBoc3pTdmM7DQogICAgICAgIEhTWiBoc3pUb3BpYzsNCn0gSFNa
UEFJUiwgKlBIU1pQQUlSOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ09OVkNPTlRFWFQgew0KICAgICAg
ICBVSU5UIGNiOw0KICAgICAgICBVSU5UIHdGbGFnczsNCiAgICAgICAgVUlOVCB3Q291bnRyeUlE
Ow0KICAgICAgICBpbnQgaUNvZGVQYWdlOw0KICAgICAgICBEV09SRCBkd0xhbmdJRDsNCiAgICAg
ICAgRFdPUkQgZHdTZWN1cml0eTsNCiAgICAgICAgU0VDVVJJVFlfUVVBTElUWV9PRl9TRVJWSUNF
IHFvczsNCn0gQ09OVkNPTlRFWFQsKlBDT05WQ09OVEVYVDsNCnR5cGVkZWYgc3RydWN0IHRhZ0NP
TlZJTkZPIHsNCiAgICAgICAgRFdPUkQgY2I7DQogICAgICAgIERXT1JEIGhVc2VyOw0KICAgICAg
ICBIQ09OViBoQ29udlBhcnRuZXI7DQogICAgICAgIEhTWiBoc3pTdmNQYXJ0bmVyOw0KICAgICAg
ICBIU1ogaHN6U2VydmljZVJlcTsNCiAgICAgICAgSFNaIGhzelRvcGljOw0KICAgICAgICBIU1og
aHN6SXRlbTsNCiAgICAgICAgVUlOVCB3Rm10Ow0KICAgICAgICBVSU5UIHdUeXBlOw0KICAgICAg
ICBVSU5UIHdTdGF0dXM7DQogICAgICAgIFVJTlQgd0NvbnZzdDsNCiAgICAgICAgVUlOVCB3TGFz
dEVycm9yOw0KICAgICAgICBIQ09OVkxJU1QgaENvbnZMaXN0Ow0KICAgICAgICBDT05WQ09OVEVY
VCBDb252Q3R4dDsNCiAgICAgICAgSFdORCBod25kOw0KICAgICAgICBIV05EIGh3bmRQYXJ0bmVy
Ow0KfSBDT05WSU5GTywqUENPTlZJTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRERFTUxfTVNHX0hP
T0tfREFUQSB7DQogICAgICAgIFVJTlQgdWlMbzsNCiAgICAgICAgVUlOVCB1aUhpOw0KICAgICAg
ICBEV09SRCBjYkRhdGE7DQogICAgICAgIERXT1JEIERhdGFbOF07DQp9IERERU1MX01TR19IT09L
X0RBVEE7DQoNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVBYmFuZG9uVHJh
bnNhY3Rpb24oRFdPUkQsSENPTlYsRFdPUkQpOw0KUEJZVEUgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBEZGVBY2Nlc3NEYXRhKEhEREVEQVRBLFBEV09SRCk7DQpIRERFREFUQSBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIERkZUFkZERhdGEoSERERURBVEEsUEJZVEUsRFdPUkQsRFdP
UkQpOw0KSERERURBVEEgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVDbGllbnRUcmFu
c2FjdGlvbihQQllURSxEV09SRCxIQ09OVixIU1osVUlOVCxVSU5ULERXT1JELFBEV09SRCk7DQpp
bnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVDbXBTdHJpbmdIYW5kbGVzKEhTWixI
U1opOw0KSENPTlYgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVDb25uZWN0KERXT1JE
LEhTWixIU1osUENPTlZDT05URVhUKTsNCkhDT05WTElTVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIERkZUNvbm5lY3RMaXN0KERXT1JELEhTWixIU1osSENPTlZMSVNULFBDT05WQ09OVEVY
VCk7DQpIRERFREFUQSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERkZUNyZWF0ZURhdGFI
YW5kbGUoRFdPUkQsUEJZVEUsRFdPUkQsRFdPUkQsSFNaLFVJTlQsVUlOVCk7DQpIU1ogX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVDcmVhdGVTdHJpbmdIYW5kbGVBKERXT1JELExQQ1NU
UixpbnQpOw0KSFNaIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGRlQ3JlYXRlU3RyaW5n
SGFuZGxlVyhEV09SRCxMUENXU1RSLGludCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRGRlRGlzY29ubmVjdChIQ09OVik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgRGRlRGlzY29ubmVjdExpc3QoSENPTlZMSVNUKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBEZGVFbmFibGVDYWxsYmFjayhEV09SRCxIQ09OVixVSU5UKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVGcmVlRGF0YUhhbmRsZShIRERFREFUQSk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGRlRnJlZVN0cmluZ0hhbmRsZShE
V09SRCxIU1opOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVHZXREYXRh
KEhEREVEQVRBLFBCWVRFLERXT1JELERXT1JEKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBEZGVHZXRMYXN0RXJyb3IoRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIERkZUltcGVyc29uYXRlQ2xpZW50KEhDT05WKTsNClVJTlQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBEZGVJbml0aWFsaXplQShQRFdPUkQsUEZOQ0FMTEJBQ0ssRFdPUkQs
RFdPUkQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERkZUluaXRpYWxpemVX
KFBEV09SRCxQRk5DQUxMQkFDSyxEV09SRCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRGRlS2VlcFN0cmluZ0hhbmRsZShEV09SRCxIU1opOw0KSERERURBVEEgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVOYW1lU2VydmljZShEV09SRCxIU1osSFNaLFVJ
TlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERkZVBvc3RBZHZpc2UoRFdP
UkQsSFNaLEhTWik7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGRlUXVlcnlD
b252SW5mbyhIQ09OVixEV09SRCxQQ09OVklORk8pOw0KSENPTlYgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBEZGVRdWVyeU5leHRTZXJ2ZXIoSENPTlZMSVNULEhDT05WKTsNCkRXT1JEIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGRlUXVlcnlTdHJpbmdBKERXT1JELEhTWixMUFNU
UixEV09SRCxpbnQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZGVRdWVy
eVN0cmluZ1coRFdPUkQsSFNaLExQV1NUUixEV09SRCxpbnQpOw0KSENPTlYgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBEZGVSZWNvbm5lY3QoSENPTlYpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIERkZVNldFVzZXJIYW5kbGUoSENPTlYsRFdPUkQsRFdPUkQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERkZVVuYWNjZXNzRGF0YShIRERFREFUQSk7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGRlVW5pbml0aWFsaXplKERXT1JE
KTsNCiMgMjM5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2RkZW1sLmgiIDMNCn0NCiMgMTMw
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIgMiAzDQojIDEgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZGxncy5oIiAxIDMNCg0KDQoNCmV4dGVybiAiQyIgew0KIyAxNzIg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZGxncy5oIiAzDQp0eXBlZGVmIHN0cnVjdCB0YWdD
UkdCIHsNCiBCWVRFIGJSZWQ7DQogQllURSBiR3JlZW47DQogQllURSBiQmx1ZTsNCiBCWVRFIGJF
eHRyYTsNCn0gQ1JHQjsNCg0KDQp9DQojIDEzMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93
aW5kb3dzLmgiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2x6ZXhwYW5kLmgi
IDEgMw0KDQoNCg0KZXh0ZXJuICJDIiB7DQojIDE0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2x6ZXhwYW5kLmgiIDMNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBDb3B5TFpG
aWxlKElOVCxJTlQpOw0KSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RXhwYW5k
ZWROYW1lQShMUFNUUixMUFNUUik7DQpJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBH
ZXRFeHBhbmRlZE5hbWVXKExQV1NUUixMUFdTVFIpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIExaQ2xvc2UoSU5UKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBMWkNvcHkoSU5ULElOVCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTFpE
b25lKHZvaWQpOw0KSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTFpJbml0KElOVCk7
DQpJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBMWk9wZW5GaWxlQShMUFNUUixMUE9G
U1RSVUNULFdPUkQpOw0KSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTFpPcGVuRmls
ZVcoTFBXU1RSLExQT0ZTVFJVQ1QsV09SRCk7DQpJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBMWlJlYWQoSU5ULExQU1RSLElOVCk7DQpMT05HIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgTFpTZWVrKElOVCxMT05HLElOVCk7DQpJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBMWlN0YXJ0KHZvaWQpOw0KIyAzNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9semV4
cGFuZC5oIiAzDQp9DQojIDEzMiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgi
IDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL21tc3lzdGVtLmgiIDEgMw0KDQoN
Cg0KI3ByYWdtYSBwYWNrKHB1c2gsMSkNCg0KZXh0ZXJuICJDIiB7DQojIDg5NiAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9tbXN5c3RlbS5oIiAzDQp0eXBlZGVmIERXT1JEIE1DSUVSUk9SOw0K
dHlwZWRlZiBVSU5UIE1DSURFVklDRUlEOw0KdHlwZWRlZiBVSU5UKF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgKllJRUxEUFJPQykoTUNJREVWSUNFSUQsRFdPUkQpOw0KdHlwZWRlZiBVSU5U
IE1NVkVSU0lPTjsNCnR5cGVkZWYgVUlOVCBNTVJFU1VMVDsNCnR5cGVkZWYgc3RydWN0IG1tdGlt
ZV90YWcgew0KICAgICAgICBVSU5UIHdUeXBlOw0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAg
ICAgICAgRFdPUkQgbXM7DQogICAgICAgICAgICAgICAgRFdPUkQgc2FtcGxlOw0KICAgICAgICAg
ICAgICAgIERXT1JEIGNiOw0KICAgICAgICAgICAgICAgIERXT1JEIHRpY2tzOw0KICAgICAgICAg
ICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICBCWVRFIGhvdXI7DQogICAg
ICAgICAgICAgICAgICAgICAgICBCWVRFIG1pbjsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJZ
VEUgc2VjOw0KICAgICAgICAgICAgICAgICAgICAgICAgQllURSBmcmFtZTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIEJZVEUgZnBzOw0KICAgICAgICAgICAgICAgICAgICAgICAgQllURSBkdW1t
eTsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJZVEUgcGFkWzJdOw0KICAgICAgICAgICAgICAg
IH0gc21wdGU7DQogICAgICAgICAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIERXT1JEIHNvbmdwdHJwb3M7DQogICAgICAgICAgICAgICAgfSBtaWRpOw0KICAgICAgICB9
IHU7DQp9IE1NVElNRSwqUE1NVElNRSwqTFBNTVRJTUU7DQp0eXBlZGVmIHN0cnVjdCBIRFJWUl9f
e2ludCBpO30qSERSVlI7DQp0eXBlZGVmIHN0cnVjdCB0YWdEUlZDT05GSUdJTkZPIHsNCiAgICAg
ICAgRFdPUkQgZHdEQ0lTaXplOw0KICAgICAgICBMUENXU1RSIGxwc3pEQ0lTZWN0aW9uTmFtZTsN
CiAgICAgICAgTFBDV1NUUiBscHN6RENJQWxpYXNOYW1lOw0KfSBEUlZDT05GSUdJTkZPLCpQRFJW
Q09ORklHSU5GTywqTFBEUlZDT05GSUdJTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgRFJWQ09ORklHSU5G
T0VYIHsNCiAgICAgICAgRFdPUkQgZHdEQ0lTaXplOw0KICAgICAgICBMUENXU1RSIGxwc3pEQ0lT
ZWN0aW9uTmFtZTsNCiAgICAgICAgTFBDV1NUUiBscHN6RENJQWxpYXNOYW1lOw0KICAgICAgICBE
V09SRCBkbkRldk5vZGU7DQp9IERSVkNPTkZJR0lORk9FWCwqUERSVkNPTkZJR0lORk9FWCwqTFBE
UlZDT05GSUdJTkZPRVg7DQp0eXBlZGVmIExSRVNVTFQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSogRFJJVkVSUFJPQykoRFdPUkQsSERSVlIsVUlOVCxMUEFSQU0sTFBBUkFNKTsNCnR5cGVk
ZWYgdm9pZCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEUlZDQUxMQkFDSykoSERSVlIs
VUlOVCxEV09SRCxEV09SRCxEV09SRCk7DQp0eXBlZGVmIERSVkNBTExCQUNLICpMUERSVkNBTExC
QUNLOw0KdHlwZWRlZiBEUlZDQUxMQkFDSyAqUERSVkNBTExCQUNLOw0KdHlwZWRlZiBzdHJ1Y3Qg
SFdBVkVfX3tpbnQgaTt9KkhXQVZFOw0KdHlwZWRlZiBzdHJ1Y3QgSFdBVkVJTl9fe2ludCBpO30q
SFdBVkVJTjsNCnR5cGVkZWYgc3RydWN0IEhXQVZFT1VUX197aW50IGk7fSpIV0FWRU9VVDsNCnR5
cGVkZWYgSFdBVkVJTiAqTFBIV0FWRUlOOw0KdHlwZWRlZiBIV0FWRU9VVCAqTFBIV0FWRU9VVDsN
CnR5cGVkZWYgRFJWQ0FMTEJBQ0sgV0FWRUNBTExCQUNLOw0KdHlwZWRlZiBXQVZFQ0FMTEJBQ0sg
KkxQV0FWRUNBTExCQUNLOw0KdHlwZWRlZiBzdHJ1Y3Qgd2F2ZWhkcl90YWcgew0KICAgICAgICBM
UFNUUiBscERhdGE7DQogICAgICAgIERXT1JEIGR3QnVmZmVyTGVuZ3RoOw0KICAgICAgICBEV09S
RCBkd0J5dGVzUmVjb3JkZWQ7DQogICAgICAgIERXT1JEIGR3VXNlcjsNCiAgICAgICAgRFdPUkQg
ZHdGbGFnczsNCiAgICAgICAgRFdPUkQgZHdMb29wczsNCiAgICAgICAgc3RydWN0IHdhdmVoZHJf
dGFnICpscE5leHQ7DQogICAgICAgIERXT1JEIHJlc2VydmVkOw0KfSBXQVZFSERSLCpQV0FWRUhE
UiwqTFBXQVZFSERSOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnV0FWRU9VVENBUFNBIHsNCiAgICAgICAg
V09SRCB3TWlkOw0KICAgICAgICBXT1JEIHdQaWQ7DQogICAgICAgIE1NVkVSU0lPTiB2RHJpdmVy
VmVyc2lvbjsNCiAgICAgICAgQ0hBUiBzelBuYW1lWzMyXTsNCiAgICAgICAgRFdPUkQgZHdGb3Jt
YXRzOw0KICAgICAgICBXT1JEIHdDaGFubmVsczsNCiAgICAgICAgV09SRCB3UmVzZXJ2ZWQxOw0K
ICAgICAgICBEV09SRCBkd1N1cHBvcnQ7DQp9IFdBVkVPVVRDQVBTQSwqUFdBVkVPVVRDQVBTQSwq
TFBXQVZFT1VUQ0FQU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZFT1VUQ0FQU1cgew0KICAgICAg
ICBXT1JEIHdNaWQ7DQogICAgICAgIFdPUkQgd1BpZDsNCiAgICAgICAgTU1WRVJTSU9OIHZEcml2
ZXJWZXJzaW9uOw0KICAgICAgICBXQ0hBUiBzelBuYW1lWzMyXTsNCiAgICAgICAgRFdPUkQgZHdG
b3JtYXRzOw0KICAgICAgICBXT1JEIHdDaGFubmVsczsNCiAgICAgICAgV09SRCB3UmVzZXJ2ZWQx
Ow0KICAgICAgICBEV09SRCBkd1N1cHBvcnQ7DQp9IFdBVkVPVVRDQVBTVywqUFdBVkVPVVRDQVBT
VywqTFBXQVZFT1VUQ0FQU1c7DQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZFSU5DQVBTQSB7DQogICAg
ICAgIFdPUkQgd01pZDsNCiAgICAgICAgV09SRCB3UGlkOw0KICAgICAgICBNTVZFUlNJT04gdkRy
aXZlclZlcnNpb247DQogICAgICAgIENIQVIgc3pQbmFtZVszMl07DQogICAgICAgIERXT1JEIGR3
Rm9ybWF0czsNCiAgICAgICAgV09SRCB3Q2hhbm5lbHM7DQogICAgICAgIFdPUkQgd1Jlc2VydmVk
MTsNCn0gV0FWRUlOQ0FQU0EsKlBXQVZFSU5DQVBTQSwqTFBXQVZFSU5DQVBTQTsNCnR5cGVkZWYg
c3RydWN0IHRhZ1dBVkVJTkNBUFNXIHsNCiAgICAgICAgV09SRCB3TWlkOw0KICAgICAgICBXT1JE
IHdQaWQ7DQogICAgICAgIE1NVkVSU0lPTiB2RHJpdmVyVmVyc2lvbjsNCiAgICAgICAgV0NIQVIg
c3pQbmFtZVszMl07DQogICAgICAgIERXT1JEIGR3Rm9ybWF0czsNCiAgICAgICAgV09SRCB3Q2hh
bm5lbHM7DQogICAgICAgIFdPUkQgd1Jlc2VydmVkMTsNCn0gV0FWRUlOQ0FQU1csKlBXQVZFSU5D
QVBTVywqTFBXQVZFSU5DQVBTVzsNCnR5cGVkZWYgc3RydWN0IHdhdmVmb3JtYXRfdGFnIHsNCiAg
ICAgICAgV09SRCB3Rm9ybWF0VGFnOw0KICAgICAgICBXT1JEIG5DaGFubmVsczsNCiAgICAgICAg
RFdPUkQgblNhbXBsZXNQZXJTZWM7DQogICAgICAgIERXT1JEIG5BdmdCeXRlc1BlclNlYzsNCiAg
ICAgICAgV09SRCBuQmxvY2tBbGlnbjsNCn0gV0FWRUZPUk1BVCwqUFdBVkVGT1JNQVQsKkxQV0FW
RUZPUk1BVDsNCnR5cGVkZWYgc3RydWN0IHBjbXdhdmVmb3JtYXRfdGFnIHsNCiAgICAgICAgV0FW
RUZPUk1BVCB3ZjsNCiAgICAgICAgV09SRCB3Qml0c1BlclNhbXBsZTsNCn0gUENNV0FWRUZPUk1B
VCwgKlBQQ01XQVZFRk9STUFULCpMUFBDTVdBVkVGT1JNQVQ7DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dFdBVkVGT1JNQVRFWCB7DQogICAgICAgIFdPUkQgd0Zvcm1hdFRhZzsNCiAgICAgICAgV09SRCBu
Q2hhbm5lbHM7DQogICAgICAgIERXT1JEIG5TYW1wbGVzUGVyU2VjOw0KICAgICAgICBEV09SRCBu
QXZnQnl0ZXNQZXJTZWM7DQogICAgICAgIFdPUkQgbkJsb2NrQWxpZ247DQogICAgICAgIFdPUkQg
d0JpdHNQZXJTYW1wbGU7DQogICAgICAgIFdPUkQgY2JTaXplOw0KfSBXQVZFRk9STUFURVgsKlBX
QVZFRk9STUFURVgsKkxQV0FWRUZPUk1BVEVYOw0KdHlwZWRlZiBjb25zdCBXQVZFRk9STUFURVgg
KkxQQ1dBVkVGT1JNQVRFWDsNCg0KdHlwZWRlZiBzdHJ1Y3QgSE1JRElfX3tpbnQgaTt9KkhNSURJ
Ow0KdHlwZWRlZiBzdHJ1Y3QgSE1JRElJTl9fe2ludCBpO30qSE1JRElJTjsNCnR5cGVkZWYgc3Ry
dWN0IEhNSURJT1VUX197aW50IGk7fSpITUlESU9VVDsNCnR5cGVkZWYgc3RydWN0IEhNSURJU1RS
TV9fe2ludCBpO30qSE1JRElTVFJNOw0KdHlwZWRlZiBITUlESSAqTFBITUlESTsNCnR5cGVkZWYg
SE1JRElJTiAqTFBITUlESUlOOw0KdHlwZWRlZiBITUlESU9VVCAqTFBITUlESU9VVDsNCnR5cGVk
ZWYgSE1JRElTVFJNICpMUEhNSURJU1RSTTsNCnR5cGVkZWYgRFJWQ0FMTEJBQ0sgTUlESUNBTExC
QUNLOw0KdHlwZWRlZiBNSURJQ0FMTEJBQ0sgKkxQTUlESUNBTExCQUNLOw0KdHlwZWRlZiBXT1JE
IFBBVENIQVJSQVlbMTI4XTsNCnR5cGVkZWYgV09SRCAqTFBQQVRDSEFSUkFZOw0KdHlwZWRlZiBX
T1JEIEtFWUFSUkFZWzEyOF07DQp0eXBlZGVmIFdPUkQgKkxQS0VZQVJSQVk7DQp0eXBlZGVmIHN0
cnVjdCB0YWdNSURJT1VUQ0FQU0Egew0KICAgICAgICBXT1JEIHdNaWQ7DQogICAgICAgIFdPUkQg
d1BpZDsNCiAgICAgICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOw0KICAgICAgICBDSEFSIHN6
UG5hbWVbMzJdOw0KICAgICAgICBXT1JEIHdUZWNobm9sb2d5Ow0KICAgICAgICBXT1JEIHdWb2lj
ZXM7DQogICAgICAgIFdPUkQgd05vdGVzOw0KICAgICAgICBXT1JEIHdDaGFubmVsTWFzazsNCiAg
ICAgICAgRFdPUkQgZHdTdXBwb3J0Ow0KfSBNSURJT1VUQ0FQU0EsKlBNSURJT1VUQ0FQU0EsKkxQ
TUlESU9VVENBUFNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlESU9VVENBUFNXIHsNCiAgICAgICAg
V09SRCB3TWlkOw0KICAgICAgICBXT1JEIHdQaWQ7DQogICAgICAgIE1NVkVSU0lPTiB2RHJpdmVy
VmVyc2lvbjsNCiAgICAgICAgV0NIQVIgc3pQbmFtZVszMl07DQogICAgICAgIFdPUkQgd1RlY2hu
b2xvZ3k7DQogICAgICAgIFdPUkQgd1ZvaWNlczsNCiAgICAgICAgV09SRCB3Tm90ZXM7DQogICAg
ICAgIFdPUkQgd0NoYW5uZWxNYXNrOw0KICAgICAgICBEV09SRCBkd1N1cHBvcnQ7DQp9IE1JRElP
VVRDQVBTVywqUE1JRElPVVRDQVBTVywqTFBNSURJT1VUQ0FQU1c7DQp0eXBlZGVmIHN0cnVjdCB0
YWdNSURJSU5DQVBTQSB7DQogICAgICAgIFdPUkQgd01pZDsNCiAgICAgICAgV09SRCB3UGlkOw0K
ICAgICAgICBNTVZFUlNJT04gdkRyaXZlclZlcnNpb247DQogICAgICAgIENIQVIgc3pQbmFtZVsz
Ml07DQogICAgICAgIERXT1JEIGR3U3VwcG9ydDsNCn0gTUlESUlOQ0FQU0EsKlBNSURJSU5DQVBT
QSwqTFBNSURJSU5DQVBTQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01JRElJTkNBUFNXIHsNCiAgICAg
ICAgV09SRCB3TWlkOw0KICAgICAgICBXT1JEIHdQaWQ7DQogICAgICAgIE1NVkVSU0lPTiB2RHJp
dmVyVmVyc2lvbjsNCiAgICAgICAgV0NIQVIgc3pQbmFtZVszMl07DQogICAgICAgIERXT1JEIGR3
U3VwcG9ydDsNCn0gTUlESUlOQ0FQU1csKlBNSURJSU5DQVBTVywqTlBNSURJSU5DQVBTVywqTFBN
SURJSU5DQVBTVzsNCnR5cGVkZWYgc3RydWN0IG1pZGloZHJfdGFnIHsNCiAgICAgICAgTFBTVFIg
bHBEYXRhOw0KICAgICAgICBEV09SRCBkd0J1ZmZlckxlbmd0aDsNCiAgICAgICAgRFdPUkQgZHdC
eXRlc1JlY29yZGVkOw0KICAgICAgICBEV09SRCBkd1VzZXI7DQogICAgICAgIERXT1JEIGR3Rmxh
Z3M7DQogICAgICAgIHN0cnVjdCBtaWRpaGRyX3RhZyAqbHBOZXh0Ow0KICAgICAgICBEV09SRCBy
ZXNlcnZlZDsNCiAgICAgICAgRFdPUkQgZHdPZmZzZXQ7DQogICAgICAgIERXT1JEIGR3UmVzZXJ2
ZWRbOF07DQp9IE1JRElIRFIsKlBNSURJSERSLCpMUE1JRElIRFI7DQp0eXBlZGVmIHN0cnVjdCBt
aWRpZXZlbnRfdGFnIHsNCiAgICAgICAgRFdPUkQgZHdEZWx0YVRpbWU7DQogICAgICAgIERXT1JE
IGR3U3RyZWFtSUQ7DQogICAgICAgIERXT1JEIGR3RXZlbnQ7DQogICAgICAgIERXT1JEIGR3UGFy
bXNbMV07DQp9IE1JRElFVkVOVDsNCnR5cGVkZWYgc3RydWN0IG1pZGlzdHJtYnVmZnZlcl90YWcg
ew0KICAgICAgICBEV09SRCBkd1ZlcnNpb247DQogICAgICAgIERXT1JEIGR3TWlkOw0KICAgICAg
ICBEV09SRCBkd09FTVZlcnNpb247DQp9IE1JRElTVFJNQlVGRlZFUjsNCnR5cGVkZWYgc3RydWN0
IG1pZGlwcm9wdGltZWRpdl90YWcgew0KICAgICAgICBEV09SRCBjYlN0cnVjdDsNCiAgICAgICAg
RFdPUkQgZHdUaW1lRGl2Ow0KfSBNSURJUFJPUFRJTUVESVYsKkxQTUlESVBST1BUSU1FRElWOw0K
dHlwZWRlZiBzdHJ1Y3QgbWlkaXByb3B0ZW1wb190YWcgew0KICAgICAgICBEV09SRCBjYlN0cnVj
dDsNCiAgICAgICAgRFdPUkQgZHdUZW1wbzsNCn0gTUlESVBST1BURU1QTywqTFBNSURJUFJPUFRF
TVBPOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQVVYQ0FQU0Egew0KICAgICAgICBXT1JEIHdNaWQ7DQog
ICAgICAgIFdPUkQgd1BpZDsNCiAgICAgICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOw0KICAg
ICAgICBDSEFSIHN6UG5hbWVbMzJdOw0KICAgICAgICBXT1JEIHdUZWNobm9sb2d5Ow0KICAgICAg
ICBXT1JEIHdSZXNlcnZlZDE7DQogICAgICAgIERXT1JEIGR3U3VwcG9ydDsNCn0gQVVYQ0FQU0Es
KlBBVVhDQVBTQSwqTFBBVVhDQVBTQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0FVWENBUFNXIHsNCiAg
ICAgICAgV09SRCB3TWlkOw0KICAgICAgICBXT1JEIHdQaWQ7DQogICAgICAgIE1NVkVSU0lPTiB2
RHJpdmVyVmVyc2lvbjsNCiAgICAgICAgV0NIQVIgc3pQbmFtZVszMl07DQogICAgICAgIFdPUkQg
d1RlY2hub2xvZ3k7DQogICAgICAgIFdPUkQgd1Jlc2VydmVkMTsNCiAgICAgICAgRFdPUkQgZHdT
dXBwb3J0Ow0KfSBBVVhDQVBTVywqUEFVWENBUFNXLCpMUEFVWENBUFNXOw0KdHlwZWRlZiBzdHJ1
Y3QgSE1JWEVST0JKX197aW50IGk7fSpITUlYRVJPQko7DQp0eXBlZGVmIEhNSVhFUk9CSiAqTFBI
TUlYRVJPQko7DQp0eXBlZGVmIHN0cnVjdCBITUlYRVJfX3tpbnQgaTt9KkhNSVhFUjsNCnR5cGVk
ZWYgSE1JWEVSICpMUEhNSVhFUjsNCnR5cGVkZWYgc3RydWN0IHRhZ01JWEVSQ0FQU0Egew0KICAg
ICAgICBXT1JEIHdNaWQ7DQogICAgICAgIFdPUkQgd1BpZDsNCiAgICAgICAgTU1WRVJTSU9OIHZE
cml2ZXJWZXJzaW9uOw0KICAgICAgICBDSEFSIHN6UG5hbWVbMzJdOw0KICAgICAgICBEV09SRCBm
ZHdTdXBwb3J0Ow0KICAgICAgICBEV09SRCBjRGVzdGluYXRpb25zOw0KfSBNSVhFUkNBUFNBLCpQ
TUlYRVJDQVBTQSwqTFBNSVhFUkNBUFNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlYRVJDQVBTVyB7
DQogICAgICAgIFdPUkQgd01pZDsNCiAgICAgICAgV09SRCB3UGlkOw0KICAgICAgICBNTVZFUlNJ
T04gdkRyaXZlclZlcnNpb247DQogICAgICAgIFdDSEFSIHN6UG5hbWVbMzJdOw0KICAgICAgICBE
V09SRCBmZHdTdXBwb3J0Ow0KICAgICAgICBEV09SRCBjRGVzdGluYXRpb25zOw0KfSBNSVhFUkNB
UFNXLCpQTUlYRVJDQVBTVywqTFBNSVhFUkNBUFNXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlYRVJM
SU5FQSB7DQogICAgICAgIERXT1JEIGNiU3RydWN0Ow0KICAgICAgICBEV09SRCBkd0Rlc3RpbmF0
aW9uOw0KICAgICAgICBEV09SRCBkd1NvdXJjZTsNCiAgICAgICAgRFdPUkQgZHdMaW5lSUQ7DQog
ICAgICAgIERXT1JEIGZkd0xpbmU7DQogICAgICAgIERXT1JEIGR3VXNlcjsNCiAgICAgICAgRFdP
UkQgZHdDb21wb25lbnRUeXBlOw0KICAgICAgICBEV09SRCBjQ2hhbm5lbHM7DQogICAgICAgIERX
T1JEIGNDb25uZWN0aW9uczsNCiAgICAgICAgRFdPUkQgY0NvbnRyb2xzOw0KICAgICAgICBDSEFS
IHN6U2hvcnROYW1lWzE2XTsNCiAgICAgICAgQ0hBUiBzek5hbWVbNjRdOw0KICAgICAgICBzdHJ1
Y3Qgew0KICAgICAgICAgICAgICAgIERXT1JEIGR3VHlwZTsNCiAgICAgICAgICAgICAgICBEV09S
RCBkd0RldmljZUlEOw0KICAgICAgICAgICAgICAgIFdPUkQgd01pZDsNCiAgICAgICAgICAgICAg
ICBXT1JEIHdQaWQ7DQogICAgICAgICAgICAgICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOw0K
ICAgICAgICAgICAgICAgIENIQVIgc3pQbmFtZVszMl07DQogICAgICAgIH0gVGFyZ2V0Ow0KfSBN
SVhFUkxJTkVBLCpQTUlYRVJMSU5FQSwqTFBNSVhFUkxJTkVBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TUlYRVJMSU5FVyB7DQogICAgICAgIERXT1JEIGNiU3RydWN0Ow0KICAgICAgICBEV09SRCBkd0Rl
c3RpbmF0aW9uOw0KICAgICAgICBEV09SRCBkd1NvdXJjZTsNCiAgICAgICAgRFdPUkQgZHdMaW5l
SUQ7DQogICAgICAgIERXT1JEIGZkd0xpbmU7DQogICAgICAgIERXT1JEIGR3VXNlcjsNCiAgICAg
ICAgRFdPUkQgZHdDb21wb25lbnRUeXBlOw0KICAgICAgICBEV09SRCBjQ2hhbm5lbHM7DQogICAg
ICAgIERXT1JEIGNDb25uZWN0aW9uczsNCiAgICAgICAgRFdPUkQgY0NvbnRyb2xzOw0KICAgICAg
ICBXQ0hBUiBzelNob3J0TmFtZVsxNl07DQogICAgICAgIFdDSEFSIHN6TmFtZVs2NF07DQogICAg
ICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgRFdPUkQgZHdUeXBlOw0KICAgICAgICAgICAg
ICAgIERXT1JEIGR3RGV2aWNlSUQ7DQogICAgICAgICAgICAgICAgV09SRCB3TWlkOw0KICAgICAg
ICAgICAgICAgIFdPUkQgd1BpZDsNCiAgICAgICAgICAgICAgICBNTVZFUlNJT04gdkRyaXZlclZl
cnNpb247DQogICAgICAgICAgICAgICAgV0NIQVIgc3pQbmFtZVszMl07DQogICAgICAgIH0gVGFy
Z2V0Ow0KfSBNSVhFUkxJTkVXLCpQTUlYRVJMSU5FVywqTFBNSVhFUkxJTkVXOw0KdHlwZWRlZiBz
dHJ1Y3QgdGFnTUlYRVJDT05UUk9MQSB7DQogICAgICAgIERXT1JEIGNiU3RydWN0Ow0KICAgICAg
ICBEV09SRCBkd0NvbnRyb2xJRDsNCiAgICAgICAgRFdPUkQgZHdDb250cm9sVHlwZTsNCiAgICAg
ICAgRFdPUkQgZmR3Q29udHJvbDsNCiAgICAgICAgRFdPUkQgY011bHRpcGxlSXRlbXM7DQogICAg
ICAgIENIQVIgc3pTaG9ydE5hbWVbMTZdOw0KICAgICAgICBDSEFSIHN6TmFtZVs2NF07DQogICAg
ICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBfX2V4dGVuc2lvbl9fIHN0cnVjdCB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBMT05HIGxNaW5pbXVtOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgTE9ORyBsTWF4aW11bTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIF9f
ZXh0ZW5zaW9uX18gc3RydWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGR3TWlu
aW11bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGR3TWF4aW11bTsNCiAgICAgICAg
ICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWRbNl07DQogICAgICAg
IH0gQm91bmRzOw0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICAgICAgRFdPUkQgY1N0ZXBz
Ow0KICAgICAgICAgICAgICAgIERXT1JEIGNiQ3VzdG9tRGF0YTsNCiAgICAgICAgICAgICAgICBE
V09SRCBkd1Jlc2VydmVkWzZdOw0KICAgICAgICB9IE1ldHJpY3M7DQp9IE1JWEVSQ09OVFJPTEEs
KlBNSVhFUkNPTlRST0xBLCpMUE1JWEVSQ09OVFJPTEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdNSVhF
UkNPTlRST0xXIHsNCiAgICAgICAgRFdPUkQgY2JTdHJ1Y3Q7DQogICAgICAgIERXT1JEIGR3Q29u
dHJvbElEOw0KICAgICAgICBEV09SRCBkd0NvbnRyb2xUeXBlOw0KICAgICAgICBEV09SRCBmZHdD
b250cm9sOw0KICAgICAgICBEV09SRCBjTXVsdGlwbGVJdGVtczsNCiAgICAgICAgV0NIQVIgc3pT
aG9ydE5hbWVbMTZdOw0KICAgICAgICBXQ0hBUiBzek5hbWVbNjRdOw0KICAgICAgICB1bmlvbiB7
DQogICAgICAgICAgICAgICAgX19leHRlbnNpb25fXyBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgTE9ORyBsTWluaW11bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIExPTkcgbE1h
eGltdW07DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICBfX2V4dGVuc2lvbl9f
IHN0cnVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkd01pbmltdW07DQogICAg
ICAgICAgICAgICAgICAgICAgICBEV09SRCBkd01heGltdW07DQogICAgICAgICAgICAgICAgfTsN
CiAgICAgICAgICAgICAgICBEV09SRCBkd1Jlc2VydmVkWzZdOw0KICAgICAgICB9IEJvdW5kczsN
CiAgICAgICAgdW5pb24gew0KICAgICAgICAgICAgICAgIERXT1JEIGNTdGVwczsNCiAgICAgICAg
ICAgICAgICBEV09SRCBjYkN1c3RvbURhdGE7DQogICAgICAgICAgICAgICAgRFdPUkQgZHdSZXNl
cnZlZFs2XTsNCiAgICAgICAgfSBNZXRyaWNzOw0KfSBNSVhFUkNPTlRST0xXLCpQTUlYRVJDT05U
Uk9MVywqTFBNSVhFUkNPTlRST0xXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlYRVJMSU5FQ09OVFJP
TFNBIHsNCiAgICAgICAgRFdPUkQgY2JTdHJ1Y3Q7DQogICAgICAgIERXT1JEIGR3TGluZUlEOw0K
ICAgICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBEV09SRCBkd0Nv
bnRyb2xJRDsNCiAgICAgICAgICAgICAgICBEV09SRCBkd0NvbnRyb2xUeXBlOw0KICAgICAgICB9
IDsNCiAgICAgICAgRFdPUkQgY0NvbnRyb2xzOw0KICAgICAgICBEV09SRCBjYm14Y3RybDsNCiAg
ICAgICAgTFBNSVhFUkNPTlRST0xBIHBhbXhjdHJsOw0KfSBNSVhFUkxJTkVDT05UUk9MU0EsKlBN
SVhFUkxJTkVDT05UUk9MU0EsKkxQTUlYRVJMSU5FQ09OVFJPTFNBOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnTUlYRVJMSU5FQ09OVFJPTFNXIHsNCiAgICAgICAgRFdPUkQgY2JTdHJ1Y3Q7DQogICAgICAg
IERXT1JEIGR3TGluZUlEOw0KICAgICAgICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsNCiAgICAgICAg
ICAgICAgICBEV09SRCBkd0NvbnRyb2xJRDsNCiAgICAgICAgICAgICAgICBEV09SRCBkd0NvbnRy
b2xUeXBlOw0KICAgICAgICB9IDsNCiAgICAgICAgRFdPUkQgY0NvbnRyb2xzOw0KICAgICAgICBE
V09SRCBjYm14Y3RybDsNCiAgICAgICAgTFBNSVhFUkNPTlRST0xXIHBhbXhjdHJsOw0KfSBNSVhF
UkxJTkVDT05UUk9MU1csKlBNSVhFUkxJTkVDT05UUk9MU1csKkxQTUlYRVJMSU5FQ09OVFJPTFNX
Ow0KdHlwZWRlZiBzdHJ1Y3QgdE1JWEVSQ09OVFJPTERFVEFJTFMgew0KICAgICAgICBEV09SRCBj
YlN0cnVjdDsNCiAgICAgICAgRFdPUkQgZHdDb250cm9sSUQ7DQogICAgICAgIERXT1JEIGNDaGFu
bmVsczsNCiAgICAgICAgX19leHRlbnNpb25fXyB1bmlvbiB7DQogICAgICAgICAgICAgICAgSFdO
RCBod25kT3duZXI7DQogICAgICAgICAgICAgICAgRFdPUkQgY011bHRpcGxlSXRlbXM7DQogICAg
ICAgIH0gOw0KICAgICAgICBEV09SRCBjYkRldGFpbHM7DQogICAgICAgIFBWT0lEIHBhRGV0YWls
czsNCn0gTUlYRVJDT05UUk9MREVUQUlMUywqUE1JWEVSQ09OVFJPTERFVEFJTFMsKkxQTUlYRVJD
T05UUk9MREVUQUlMUzsNCnR5cGVkZWYgc3RydWN0IHRhZ01JWEVSQ09OVFJPTERFVEFJTFNfTElT
VFRFWFRBIHsNCiAgICAgICAgRFdPUkQgZHdQYXJhbTE7DQogICAgICAgIERXT1JEIGR3UGFyYW0y
Ow0KICAgICAgICBDSEFSIHN6TmFtZVs2NF07DQp9IE1JWEVSQ09OVFJPTERFVEFJTFNfTElTVFRF
WFRBLCpQTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVYVEEsKkxQTUlYRVJDT05UUk9MREVUQUlM
U19MSVNUVEVYVEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdNSVhFUkNPTlRST0xERVRBSUxTX0xJU1RU
RVhUVyB7DQogICAgICAgIERXT1JEIGR3UGFyYW0xOw0KICAgICAgICBEV09SRCBkd1BhcmFtMjsN
CiAgICAgICAgV0NIQVIgc3pOYW1lWzY0XTsNCn0gTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVY
VFcsKlBNSVhFUkNPTlRST0xERVRBSUxTX0xJU1RURVhUVywqTFBNSVhFUkNPTlRST0xERVRBSUxT
X0xJU1RURVhUVzsNCnR5cGVkZWYgc3RydWN0IHRNSVhFUkNPTlRST0xERVRBSUxTX0JPT0xFQU4g
ew0KICAgICAgICBMT05HIGZWYWx1ZTsNCn0gTUlYRVJDT05UUk9MREVUQUlMU19CT09MRUFOLCpQ
TUlYRVJDT05UUk9MREVUQUlMU19CT09MRUFOLCpMUE1JWEVSQ09OVFJPTERFVEFJTFNfQk9PTEVB
TjsNCnR5cGVkZWYgc3RydWN0IHRNSVhFUkNPTlRST0xERVRBSUxTX1NJR05FRCB7DQogICAgICAg
IExPTkcgbFZhbHVlOw0KfSBNSVhFUkNPTlRST0xERVRBSUxTX1NJR05FRCwqUE1JWEVSQ09OVFJP
TERFVEFJTFNfU0lHTkVELCpMUE1JWEVSQ09OVFJPTERFVEFJTFNfU0lHTkVEOw0KdHlwZWRlZiBz
dHJ1Y3QgdE1JWEVSQ09OVFJPTERFVEFJTFNfVU5TSUdORUQgew0KICAgICAgICBEV09SRCBkd1Zh
bHVlOw0KfSBNSVhFUkNPTlRST0xERVRBSUxTX1VOU0lHTkVELCpQTUlYRVJDT05UUk9MREVUQUlM
U19VTlNJR05FRCwqTFBNSVhFUkNPTlRST0xERVRBSUxTX1VOU0lHTkVEOw0KdHlwZWRlZiB2b2lk
KF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVElNRUNBTExCQUNLKShVSU5ULFVJTlQsRFdP
UkQsRFdPUkQsRFdPUkQpOw0KdHlwZWRlZiBUSU1FQ0FMTEJBQ0sgKkxQVElNRUNBTExCQUNLOw0K
dHlwZWRlZiBzdHJ1Y3QgdGltZWNhcHNfdGFnIHsNCiAgICAgICAgVUlOVCB3UGVyaW9kTWluOw0K
ICAgICAgICBVSU5UIHdQZXJpb2RNYXg7DQp9IFRJTUVDQVBTLCpQVElNRUNBUFMsKkxQVElNRUNB
UFM7DQp0eXBlZGVmIHN0cnVjdCB0YWdKT1lDQVBTQSB7DQogICAgICAgIFdPUkQgd01pZDsNCiAg
ICAgICAgV09SRCB3UGlkOw0KICAgICAgICBDSEFSIHN6UG5hbWVbMzJdOw0KICAgICAgICBVSU5U
IHdYbWluOw0KICAgICAgICBVSU5UIHdYbWF4Ow0KICAgICAgICBVSU5UIHdZbWluOw0KICAgICAg
ICBVSU5UIHdZbWF4Ow0KICAgICAgICBVSU5UIHdabWluOw0KICAgICAgICBVSU5UIHdabWF4Ow0K
ICAgICAgICBVSU5UIHdOdW1CdXR0b25zOw0KICAgICAgICBVSU5UIHdQZXJpb2RNaW47DQogICAg
ICAgIFVJTlQgd1BlcmlvZE1heDsNCiAgICAgICAgVUlOVCB3Um1pbjsNCiAgICAgICAgVUlOVCB3
Um1heDsNCiAgICAgICAgVUlOVCB3VW1pbjsNCiAgICAgICAgVUlOVCB3VW1heDsNCiAgICAgICAg
VUlOVCB3Vm1pbjsNCiAgICAgICAgVUlOVCB3Vm1heDsNCiAgICAgICAgVUlOVCB3Q2FwczsNCiAg
ICAgICAgVUlOVCB3TWF4QXhlczsNCiAgICAgICAgVUlOVCB3TnVtQXhlczsNCiAgICAgICAgVUlO
VCB3TWF4QnV0dG9uczsNCiAgICAgICAgQ0hBUiBzelJlZ0tleVszMl07DQogICAgICAgIENIQVIg
c3pPRU1WeERbMjYwXTsNCn0gSk9ZQ0FQU0EsKlBKT1lDQVBTQSwqTFBKT1lDQVBTQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ0pPWUNBUFNXIHsNCiAgICAgICAgV09SRCB3TWlkOw0KICAgICAgICBXT1JE
IHdQaWQ7DQogICAgICAgIFdDSEFSIHN6UG5hbWVbMzJdOw0KICAgICAgICBVSU5UIHdYbWluOw0K
ICAgICAgICBVSU5UIHdYbWF4Ow0KICAgICAgICBVSU5UIHdZbWluOw0KICAgICAgICBVSU5UIHdZ
bWF4Ow0KICAgICAgICBVSU5UIHdabWluOw0KICAgICAgICBVSU5UIHdabWF4Ow0KICAgICAgICBV
SU5UIHdOdW1CdXR0b25zOw0KICAgICAgICBVSU5UIHdQZXJpb2RNaW47DQogICAgICAgIFVJTlQg
d1BlcmlvZE1heDsNCiAgICAgICAgVUlOVCB3Um1pbjsNCiAgICAgICAgVUlOVCB3Um1heDsNCiAg
ICAgICAgVUlOVCB3VW1pbjsNCiAgICAgICAgVUlOVCB3VW1heDsNCiAgICAgICAgVUlOVCB3Vm1p
bjsNCiAgICAgICAgVUlOVCB3Vm1heDsNCiAgICAgICAgVUlOVCB3Q2FwczsNCiAgICAgICAgVUlO
VCB3TWF4QXhlczsNCiAgICAgICAgVUlOVCB3TnVtQXhlczsNCiAgICAgICAgVUlOVCB3TWF4QnV0
dG9uczsNCiAgICAgICAgV0NIQVIgc3pSZWdLZXlbMzJdOw0KICAgICAgICBXQ0hBUiBzek9FTVZ4
RFsyNjBdOw0KfSBKT1lDQVBTVywqUEpPWUNBUFNXLCpMUEpPWUNBUFNXOw0KdHlwZWRlZiBzdHJ1
Y3Qgam95aW5mb190YWcgew0KICAgICAgICBVSU5UIHdYcG9zOw0KICAgICAgICBVSU5UIHdZcG9z
Ow0KICAgICAgICBVSU5UIHdacG9zOw0KICAgICAgICBVSU5UIHdCdXR0b25zOw0KfSBKT1lJTkZP
LCpQSk9ZSU5GTywqTFBKT1lJTkZPOw0KdHlwZWRlZiBzdHJ1Y3Qgam95aW5mb2V4X3RhZyB7DQog
ICAgICAgIERXT1JEIGR3U2l6ZTsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCiAgICAgICAgRFdP
UkQgZHdYcG9zOw0KICAgICAgICBEV09SRCBkd1lwb3M7DQogICAgICAgIERXT1JEIGR3WnBvczsN
CiAgICAgICAgRFdPUkQgZHdScG9zOw0KICAgICAgICBEV09SRCBkd1Vwb3M7DQogICAgICAgIERX
T1JEIGR3VnBvczsNCiAgICAgICAgRFdPUkQgZHdCdXR0b25zOw0KICAgICAgICBEV09SRCBkd0J1
dHRvbk51bWJlcjsNCiAgICAgICAgRFdPUkQgZHdQT1Y7DQogICAgICAgIERXT1JEIGR3UmVzZXJ2
ZWQxOw0KICAgICAgICBEV09SRCBkd1Jlc2VydmVkMjsNCn0gSk9ZSU5GT0VYLCpQSk9ZSU5GT0VY
LCpMUEpPWUlORk9FWDsNCnR5cGVkZWYgRFdPUkQgRk9VUkNDOw0KdHlwZWRlZiBjaGFyICpIUFNU
UjsNCnR5cGVkZWYgc3RydWN0IEhNTUlPX197aW50IGk7fSpITU1JTzsNCnR5cGVkZWYgTFJFU1VM
VCAoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBNTUlPUFJPQykoTFBTVFIsVUlOVCxMUEFS
QU0sTFBBUkFNKTsNCnR5cGVkZWYgTU1JT1BST0MgKkxQTU1JT1BST0M7DQp0eXBlZGVmIHN0cnVj
dCBfTU1JT0lORk8gew0KICAgICAgICBEV09SRCBkd0ZsYWdzOw0KICAgICAgICBGT1VSQ0MgZmNj
SU9Qcm9jOw0KICAgICAgICBMUE1NSU9QUk9DIHBJT1Byb2M7DQogICAgICAgIFVJTlQgd0Vycm9y
UmV0Ow0KICAgICAgICBIVEFTSyBodGFzazsNCiAgICAgICAgTE9ORyBjY2hCdWZmZXI7DQogICAg
ICAgIEhQU1RSIHBjaEJ1ZmZlcjsNCiAgICAgICAgSFBTVFIgcGNoTmV4dDsNCiAgICAgICAgSFBT
VFIgcGNoRW5kUmVhZDsNCiAgICAgICAgSFBTVFIgcGNoRW5kV3JpdGU7DQogICAgICAgIExPTkcg
bEJ1Zk9mZnNldDsNCiAgICAgICAgTE9ORyBsRGlza09mZnNldDsNCiAgICAgICAgRFdPUkQgYWR3
SW5mb1szXTsNCiAgICAgICAgRFdPUkQgZHdSZXNlcnZlZDE7DQogICAgICAgIERXT1JEIGR3UmVz
ZXJ2ZWQyOw0KICAgICAgICBITU1JTyBobW1pbzsNCn0gTU1JT0lORk8sKlBNTUlPSU5GTywqTFBN
TUlPSU5GTzsNCnR5cGVkZWYgY29uc3QgTU1JT0lORk8gKkxQQ01NSU9JTkZPOw0KdHlwZWRlZiBz
dHJ1Y3QgX01NQ0tJTkZPIHsNCiAgICAgICAgRk9VUkNDIGNraWQ7DQogICAgICAgIERXT1JEIGNr
c2l6ZTsNCiAgICAgICAgRk9VUkNDIGZjY1R5cGU7DQogICAgICAgIERXT1JEIGR3RGF0YU9mZnNl
dDsNCiAgICAgICAgRFdPUkQgZHdGbGFnczsNCn0gTU1DS0lORk8sKlBNTUNLSU5GTywqTFBNTUNL
SU5GTzsNCnR5cGVkZWYgY29uc3QgTU1DS0lORk8gKkxQQ01NQ0tJTkZPOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTUNJX0dFTkVSSUNfUEFSTVMgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KfSBN
Q0lfR0VORVJJQ19QQVJNUywqUE1DSV9HRU5FUklDX1BBUk1TLCpMUE1DSV9HRU5FUklDX1BBUk1T
Ow0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX09QRU5fUEFSTVNBIHsNCiAgICAgICAgRFdPUkQgZHdD
YWxsYmFjazsNCiAgICAgICAgTUNJREVWSUNFSUQgd0RldmljZUlEOw0KICAgICAgICBMUENTVFIg
bHBzdHJEZXZpY2VUeXBlOw0KICAgICAgICBMUENTVFIgbHBzdHJFbGVtZW50TmFtZTsNCiAgICAg
ICAgTFBDU1RSIGxwc3RyQWxpYXM7DQp9IE1DSV9PUEVOX1BBUk1TQSwqUE1DSV9PUEVOX1BBUk1T
QSwqTFBNQ0lfT1BFTl9QQVJNU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfT1BFTl9QQVJNU1cg
ew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KICAgICAgICBNQ0lERVZJQ0VJRCB3RGV2aWNl
SUQ7DQogICAgICAgIExQQ1dTVFIgbHBzdHJEZXZpY2VUeXBlOw0KICAgICAgICBMUENXU1RSIGxw
c3RyRWxlbWVudE5hbWU7DQogICAgICAgIExQQ1dTVFIgbHBzdHJBbGlhczsNCn0gTUNJX09QRU5f
UEFSTVNXLCpQTUNJX09QRU5fUEFSTVNXLCpMUE1DSV9PUEVOX1BBUk1TVzsNCnR5cGVkZWYgc3Ry
dWN0IHRhZ01DSV9QTEFZX1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAg
ICAgRFdPUkQgZHdGcm9tOw0KICAgICAgICBEV09SRCBkd1RvOw0KfSBNQ0lfUExBWV9QQVJNUywq
UE1DSV9QTEFZX1BBUk1TLCpMUE1DSV9QTEFZX1BBUk1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJ
X1NFRUtfUEFSTVMgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KICAgICAgICBEV09SRCBk
d1RvOw0KfSBNQ0lfU0VFS19QQVJNUywgKlBNQ0lfU0VFS19QQVJNUywqTFBNQ0lfU0VFS19QQVJN
UzsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9TVEFUVVNfUEFSTVMgew0KICAgICAgICBEV09SRCBk
d0NhbGxiYWNrOw0KICAgICAgICBEV09SRCBkd1JldHVybjsNCiAgICAgICAgRFdPUkQgZHdJdGVt
Ow0KICAgICAgICBEV09SRCBkd1RyYWNrOw0KfSBNQ0lfU1RBVFVTX1BBUk1TLCpQTUNJX1NUQVRV
U19QQVJNUywqTFBNQ0lfU1RBVFVTX1BBUk1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX0lORk9f
UEFSTVNBIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTFBTVFIgbHBzdHJS
ZXR1cm47DQogICAgICAgIERXT1JEIGR3UmV0U2l6ZTsNCn0gTUNJX0lORk9fUEFSTVNBLCpMUE1D
SV9JTkZPX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9JTkZPX1BBUk1TVyB7DQogICAg
ICAgIERXT1JEIGR3Q2FsbGJhY2s7DQogICAgICAgIExQV1NUUiBscHN0clJldHVybjsNCiAgICAg
ICAgRFdPUkQgZHdSZXRTaXplOw0KfSBNQ0lfSU5GT19QQVJNU1csKkxQTUNJX0lORk9fUEFSTVNX
Ow0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX0dFVERFVkNBUFNfUEFSTVMgew0KICAgICAgICBEV09S
RCBkd0NhbGxiYWNrOw0KICAgICAgICBEV09SRCBkd1JldHVybjsNCiAgICAgICAgRFdPUkQgZHdJ
dGVtOw0KfSBNQ0lfR0VUREVWQ0FQU19QQVJNUywqUE1DSV9HRVRERVZDQVBTX1BBUk1TLCpMUE1D
SV9HRVRERVZDQVBTX1BBUk1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1NZU0lORk9fUEFSTVNB
IHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTFBTVFIgbHBzdHJSZXR1cm47
DQogICAgICAgIERXT1JEIGR3UmV0U2l6ZTsNCiAgICAgICAgRFdPUkQgZHdOdW1iZXI7DQogICAg
ICAgIFVJTlQgd0RldmljZVR5cGU7DQp9IE1DSV9TWVNJTkZPX1BBUk1TQSwqUE1DSV9TWVNJTkZP
X1BBUk1TQSwqTFBNQ0lfU1lTSU5GT19QQVJNU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfU1lT
SU5GT19QQVJNU1cgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KICAgICAgICBMUFdTVFIg
bHBzdHJSZXR1cm47DQogICAgICAgIERXT1JEIGR3UmV0U2l6ZTsNCiAgICAgICAgRFdPUkQgZHdO
dW1iZXI7DQogICAgICAgIFVJTlQgd0RldmljZVR5cGU7DQp9IE1DSV9TWVNJTkZPX1BBUk1TVywq
UE1DSV9TWVNJTkZPX1BBUk1TVywqTFBNQ0lfU1lTSU5GT19QQVJNU1c7DQp0eXBlZGVmIHN0cnVj
dCB0YWdNQ0lfU0VUX1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAg
RFdPUkQgZHdUaW1lRm9ybWF0Ow0KICAgICAgICBEV09SRCBkd0F1ZGlvOw0KfSBNQ0lfU0VUX1BB
Uk1TLCpQTUNJX1NFVF9QQVJNUywqTFBNQ0lfU0VUX1BBUk1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TUNJX0JSRUFLX1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgaW50
IG5WaXJ0S2V5Ow0KICAgICAgICBIV05EIGh3bmRCcmVhazsNCn0gTUNJX0JSRUFLX1BBUk1TLCpQ
TUNJX0JSRUFLX1BBUk1TLCpMUE1DSV9CUkVBS19QQVJNUzsNCnR5cGVkZWYgc3RydWN0IHRhZ01D
SV9TQVZFX1BBUk1TQSB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7DQogICAgICAgIExQQ1NU
UiBscGZpbGVuYW1lOw0KfSBNQ0lfU0FWRV9QQVJNU0EsKlBNQ0lfU0FWRV9QQVJNU0EsKkxQTUNJ
X1NBVkVfUEFSTVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1NBVkVfUEFSTVNXIHsNCiAgICAg
ICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTFBDV1NUUiBscGZpbGVuYW1lOw0KfSBNQ0lf
U0FWRV9QQVJNU1csKlBNQ0lfU0FWRV9QQVJNU1csKkxQTUNJX1NBVkVfUEFSTVNXOw0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnTUNJX0xPQURfUEFSTVNBIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsN
CiAgICAgICAgTFBDU1RSIGxwZmlsZW5hbWU7DQp9IE1DSV9MT0FEX1BBUk1TQSwqUE1DSV9MT0FE
X1BBUk1TQSwqTFBNQ0lfTE9BRF9QQVJNU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfTE9BRF9Q
QVJNU1cgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KICAgICAgICBMUENXU1RSIGxwZmls
ZW5hbWU7DQp9IE1DSV9MT0FEX1BBUk1TVywqUE1DSV9MT0FEX1BBUk1TVywqTFBNQ0lfTE9BRF9Q
QVJNU1c7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfUkVDT1JEX1BBUk1TIHsNCiAgICAgICAgRFdP
UkQgZHdDYWxsYmFjazsNCiAgICAgICAgRFdPUkQgZHdGcm9tOw0KICAgICAgICBEV09SRCBkd1Rv
Ow0KfSBNQ0lfUkVDT1JEX1BBUk1TLCpMUE1DSV9SRUNPUkRfUEFSTVM7DQp0eXBlZGVmIHN0cnVj
dCB0YWdNQ0lfVkRfUExBWV9QQVJNUyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7DQogICAg
ICAgIERXT1JEIGR3RnJvbTsNCiAgICAgICAgRFdPUkQgZHdUbzsNCiAgICAgICAgRFdPUkQgZHdT
cGVlZDsNCn0gTUNJX1ZEX1BMQVlfUEFSTVMsKlBNQ0lfVkRfUExBWV9QQVJNUywqTFBNQ0lfVkRf
UExBWV9QQVJNUzsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9WRF9TVEVQX1BBUk1TIHsNCiAgICAg
ICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgRFdPUkQgZHdGcmFtZXM7DQp9IE1DSV9WRF9T
VEVQX1BBUk1TLCpQTUNJX1ZEX1NURVBfUEFSTVMsKkxQTUNJX1ZEX1NURVBfUEFSTVM7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdNQ0lfVkRfRVNDQVBFX1BBUk1TQSB7DQogICAgICAgIERXT1JEIGR3Q2Fs
bGJhY2s7DQogICAgICAgIExQQ1NUUiBscHN0ckNvbW1hbmQ7DQp9IE1DSV9WRF9FU0NBUEVfUEFS
TVNBLCpQTUNJX1ZEX0VTQ0FQRV9QQVJNU0EsKkxQTUNJX1ZEX0VTQ0FQRV9QQVJNU0E7DQp0eXBl
ZGVmIHN0cnVjdCB0YWdNQ0lfVkRfRVNDQVBFX1BBUk1TVyB7DQogICAgICAgIERXT1JEIGR3Q2Fs
bGJhY2s7DQogICAgICAgIExQQ1dTVFIgbHBzdHJDb21tYW5kOw0KfSBNQ0lfVkRfRVNDQVBFX1BB
Uk1TVywqUE1DSV9WRF9FU0NBUEVfUEFSTVNXLCpMUE1DSV9WRF9FU0NBUEVfUEFSTVNXOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnTUNJX1dBVkVfT1BFTl9QQVJNU0Egew0KICAgICAgICBEV09SRCBkd0Nh
bGxiYWNrOw0KICAgICAgICBNQ0lERVZJQ0VJRCB3RGV2aWNlSUQ7DQogICAgICAgIExQQ1NUUiBs
cHN0ckRldmljZVR5cGU7DQogICAgICAgIExQQ1NUUiBscHN0ckVsZW1lbnROYW1lOw0KICAgICAg
ICBMUENTVFIgbHBzdHJBbGlhczsNCiAgICAgICAgRFdPUkQgZHdCdWZmZXJTZWNvbmRzOw0KfSBN
Q0lfV0FWRV9PUEVOX1BBUk1TQSwqUE1DSV9XQVZFX09QRU5fUEFSTVNBLCpMUE1DSV9XQVZFX09Q
RU5fUEFSTVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1dBVkVfT1BFTl9QQVJNU1cgew0KICAg
ICAgICBEV09SRCBkd0NhbGxiYWNrOw0KICAgICAgICBNQ0lERVZJQ0VJRCB3RGV2aWNlSUQ7DQog
ICAgICAgIExQQ1dTVFIgbHBzdHJEZXZpY2VUeXBlOw0KICAgICAgICBMUENXU1RSIGxwc3RyRWxl
bWVudE5hbWU7DQogICAgICAgIExQQ1dTVFIgbHBzdHJBbGlhczsNCiAgICAgICAgRFdPUkQgZHdC
dWZmZXJTZWNvbmRzOw0KfSBNQ0lfV0FWRV9PUEVOX1BBUk1TVywqUE1DSV9XQVZFX09QRU5fUEFS
TVNXLCpMUE1DSV9XQVZFX09QRU5fUEFSTVNXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1dBVkVf
REVMRVRFX1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgRFdPUkQg
ZHdGcm9tOw0KICAgICAgICBEV09SRCBkd1RvOw0KfSBNQ0lfV0FWRV9ERUxFVEVfUEFSTVMsICpQ
TUNJX1dBVkVfREVMRVRFX1BBUk1TLCpMUE1DSV9XQVZFX0RFTEVURV9QQVJNUzsNCnR5cGVkZWYg
c3RydWN0IHRhZ01DSV9XQVZFX1NFVF9QQVJNUyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7
DQogICAgICAgIERXT1JEIGR3VGltZUZvcm1hdDsNCiAgICAgICAgRFdPUkQgZHdBdWRpbzsNCiAg
ICAgICAgVUlOVCB3SW5wdXQ7DQogICAgICAgIFVJTlQgd091dHB1dDsNCiAgICAgICAgV09SRCB3
Rm9ybWF0VGFnOw0KICAgICAgICBXT1JEIHdSZXNlcnZlZDI7DQogICAgICAgIFdPUkQgbkNoYW5u
ZWxzOw0KICAgICAgICBXT1JEIHdSZXNlcnZlZDM7DQogICAgICAgIERXT1JEIG5TYW1wbGVzUGVy
U2VjOw0KICAgICAgICBEV09SRCBuQXZnQnl0ZXNQZXJTZWM7DQogICAgICAgIFdPUkQgbkJsb2Nr
QWxpZ247DQogICAgICAgIFdPUkQgd1Jlc2VydmVkNDsNCiAgICAgICAgV09SRCB3Qml0c1BlclNh
bXBsZTsNCiAgICAgICAgV09SRCB3UmVzZXJ2ZWQ1Ow0KfSBNQ0lfV0FWRV9TRVRfUEFSTVMsKlBN
Q0lfV0FWRV9TRVRfUEFSTVMsKkxQTUNJX1dBVkVfU0VUX1BBUk1TOw0KDQpMUkVTVUxUIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ2xvc2VEcml2ZXIoSERSVlIsTE9ORyxMT05HKTsNCkhE
UlZSIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgT3BlbkRyaXZlcihMUENXU1RSLExQQ1dT
VFIsTE9ORyk7DQpMUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2VuZERyaXZl
ck1lc3NhZ2UoSERSVlIsVUlOVCxMT05HLExPTkcpOw0KSE1PRFVMRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIERydkdldE1vZHVsZUhhbmRsZShIRFJWUik7DQpITU9EVUxFIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0RHJpdmVyTW9kdWxlSGFuZGxlKEhEUlZSKTsNCkxSRVNV
TFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWZEcml2ZXJQcm9jKERXT1JELEhEUlZS
LFVJTlQsTFBBUkFNLExQQVJBTSk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
bW1zeXN0ZW1HZXRWZXJzaW9uKHZvaWQpOw0KDQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgc25kUGxheVNvdW5kQShMUENTVFIsVUlOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgc25kUGxheVNvdW5kVyhMUENXU1RSLFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFBsYXlTb3VuZEEoTFBDU1RSLEhNT0RVTEUsRFdPUkQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBsYXlTb3VuZFcoTFBDV1NUUixITU9EVUxF
LERXT1JEKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0R2V0TnVt
RGV2cyh2b2lkKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZU91
dEdldERldkNhcHNBKFVJTlQsTFBXQVZFT1VUQ0FQU0EsVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdhdmVPdXRHZXREZXZDYXBzVyhVSU5ULExQV0FWRU9VVENB
UFNXLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0
R2V0Vm9sdW1lKEhXQVZFT1VULFBEV09SRCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIHdhdmVPdXRTZXRWb2x1bWUoSFdBVkVPVVQsRFdPUkQpOw0KTU1SRVNVTFQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0R2V0RXJyb3JUZXh0QShNTVJFU1VMVCxM
UFNUUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZU91
dEdldEVycm9yVGV4dFcoTU1SRVNVTFQsTFBXU1RSLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0T3BlbihMUEhXQVZFT1VULFVJTlQsTFBDV0FWRUZP
Uk1BVEVYLERXT1JELERXT1JELERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgd2F2ZU91dENsb3NlKEhXQVZFT1VUKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgd2F2ZU91dFByZXBhcmVIZWFkZXIoSFdBVkVPVVQsTFBXQVZFSERSLFVJ
TlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0VW5wcmVw
YXJlSGVhZGVyKEhXQVZFT1VULExQV0FWRUhEUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgd2F2ZU91dFdyaXRlKEhXQVZFT1VULExQV0FWRUhEUixVSU5UKTsN
Ck1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZU91dFBhdXNlKEhXQVZF
T1VUKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZU91dFJlc3Rh
cnQoSFdBVkVPVVQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZl
T3V0UmVzZXQoSFdBVkVPVVQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSB3YXZlT3V0QnJlYWtMb29wKEhXQVZFT1VUKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgd2F2ZU91dEdldFBvc2l0aW9uKEhXQVZFT1VULExQTU1USU1FLFVJTlQpOw0K
TU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0R2V0UGl0Y2goSFdB
VkVPVVQsUERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2
ZU91dFNldFBpdGNoKEhXQVZFT1VULERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgd2F2ZU91dEdldFBsYXliYWNrUmF0ZShIV0FWRU9VVCxQRFdPUkQpOw0KTU1S
RVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlT3V0U2V0UGxheWJhY2tSYXRl
KEhXQVZFT1VULERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
d2F2ZU91dEdldElEKEhXQVZFT1VULExQVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIHdhdmVPdXRNZXNzYWdlKEhXQVZFT1VULFVJTlQsRFdPUkQsRFdPUkQpOw0K
VUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdhdmVJbkdldE51bURldnModm9pZCk7
DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdhdmVJbkdldERldkNhcHNB
KFVJTlQsTFBXQVZFSU5DQVBTQSxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgd2F2ZUluR2V0RGV2Q2Fwc1coVUlOVCxMUFdBVkVJTkNBUFNXLFVJTlQpOw0KTU1S
RVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlSW5HZXRFcnJvclRleHRBKE1N
UkVTVUxULExQU1RSLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSB3YXZlSW5HZXRFcnJvclRleHRXKE1NUkVTVUxULExQV1NUUixVSU5UKTsNCk1NUkVTVUxUIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZUluT3BlbihMUEhXQVZFSU4sVUlOVCxMUENX
QVZFRk9STUFURVgsRFdPUkQsRFdPUkQsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSB3YXZlSW5DbG9zZShIV0FWRUlOKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgd2F2ZUluUHJlcGFyZUhlYWRlcihIV0FWRUlOLExQV0FWRUhEUixV
SU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZUluVW5wcmVw
YXJlSGVhZGVyKEhXQVZFSU4sTFBXQVZFSERSLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSB3YXZlSW5BZGRCdWZmZXIoSFdBVkVJTixMUFdBVkVIRFIsVUlOVCk7
DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHdhdmVJblN0YXJ0KEhXQVZF
SU4pOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlSW5TdG9wKEhX
QVZFSU4pOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlSW5SZXNl
dChIV0FWRUlOKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgd2F2ZUlu
R2V0UG9zaXRpb24oSFdBVkVJTixMUE1NVElNRSxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgd2F2ZUluR2V0SUQoSFdBVkVJTixMUFVJTlQpOw0KTU1SRVNVTFQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB3YXZlSW5NZXNzYWdlKEhXQVZFSU4sVUlOVCxE
V09SRCxEV09SRCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaU91dEdl
dE51bURldnModm9pZCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1p
ZGlTdHJlYW1PcGVuKExQSE1JRElTVFJNLExQVUlOVCxEV09SRCxEV09SRCxEV09SRCxEV09SRCk7
DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlTdHJlYW1DbG9zZShI
TUlESVNUUk0pOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpU3Ry
ZWFtUHJvcGVydHkoSE1JRElTVFJNLExQQllURSxEV09SRCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlTdHJlYW1Qb3NpdGlvbihITUlESVNUUk0sTFBNTVRJTUUs
VUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlTdHJlYW1P
dXQoSE1JRElTVFJNLExQTUlESUhEUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgbWlkaVN0cmVhbVBhdXNlKEhNSURJU1RSTSk7DQpNTVJFU1VMVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlTdHJlYW1SZXN0YXJ0KEhNSURJU1RSTSk7DQpNTVJF
U1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlTdHJlYW1TdG9wKEhNSURJU1RS
TSk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlDb25uZWN0KEhN
SURJLEhNSURJT1VULFBWT0lEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgbWlkaURpc2Nvbm5lY3QoSE1JREksSE1JRElPVVQsUFZPSUQpOw0KTU1SRVNVTFQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpT3V0R2V0RGV2Q2Fwc0EoVUlOVCxMUE1JRElPVVRD
QVBTQSxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaU91
dEdldERldkNhcHNXKFVJTlQsTFBNSURJT1VUQ0FQU1csVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRHZXRWb2x1bWUoSE1JRElPVVQsUERXT1JEKTsN
Ck1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaU91dFNldFZvbHVtZShI
TUlESU9VVCxEV09SRCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1p
ZGlPdXRHZXRFcnJvclRleHRBKE1NUkVTVUxULExQU1RSLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpT3V0R2V0RXJyb3JUZXh0VyhNTVJFU1VMVCxMUFdT
VFIsVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRP
cGVuKExQSE1JRElPVVQsVUlOVCxEV09SRCxEV09SRCxEV09SRCk7DQpNTVJFU1VMVCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRDbG9zZShITUlESU9VVCk7DQpNTVJFU1VMVCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRQcmVwYXJlSGVhZGVyKEhNSURJT1VU
LExQTUlESUhEUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
bWlkaU91dFVucHJlcGFyZUhlYWRlcihITUlESU9VVCxMUE1JRElIRFIsVUlOVCk7DQpNTVJFU1VM
VCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRTaG9ydE1zZyhITUlESU9VVCxE
V09SRCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRMb25n
TXNnKEhNSURJT1VULExQTUlESUhEUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgbWlkaU91dFJlc2V0KEhNSURJT1VUKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgbWlkaU91dENhY2hlUGF0Y2hlcyhITUlESU9VVCxVSU5ULExQV09S
RCxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaU91dENh
Y2hlRHJ1bVBhdGNoZXMoSE1JRElPVVQsVUlOVCxMUFdPUkQsVUlOVCk7DQpNTVJFU1VMVCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlPdXRHZXRJRChITUlESU9VVCxMUFVJTlQpOw0K
TU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpT3V0TWVzc2FnZShITUlE
SU9VVCxVSU5ULERXT1JELERXT1JEKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBtaWRpSW5HZXROdW1EZXZzKHZvaWQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBtaWRpSW5HZXREZXZDYXBzQShVSU5ULExQTUlESUlOQ0FQU0EsVUlOVCk7DQpNTVJF
U1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlJbkdldERldkNhcHNXKFVJTlQs
TFBNSURJSU5DQVBTVyxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgbWlkaUluR2V0RXJyb3JUZXh0QShNTVJFU1VMVCxMUFNUUixVSU5UKTsNCk1NUkVTVUxUIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaUluR2V0RXJyb3JUZXh0VyhNTVJFU1VMVCxM
UFdTVFIsVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlJ
bk9wZW4oTFBITUlESUlOLFVJTlQsRFdPUkQsRFdPUkQsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpSW5DbG9zZShITUlESUlOKTsNCk1NUkVTVUxUIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlkaUluUHJlcGFyZUhlYWRlcihITUlESUlOLExQ
TUlESUhEUixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWlk
aUluVW5wcmVwYXJlSGVhZGVyKEhNSURJSU4sTFBNSURJSERSLFVJTlQpOw0KTU1SRVNVTFQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRpSW5BZGRCdWZmZXIoSE1JRElJTixMUE1JRElI
RFIsVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1pZGlJblN0
YXJ0KEhNSURJSU4pOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtaWRp
SW5TdG9wKEhNSURJSU4pOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBt
aWRpSW5SZXNldChITUlESUlOKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgbWlkaUluR2V0SUQoSE1JRElJTixMUFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBtaWRpSW5NZXNzYWdlKEhNSURJSU4sVUlOVCxEV09SRCxEV09SRCk7DQpV
SU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgYXV4R2V0TnVtRGV2cyh2b2lkKTsNCk1N
UkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgYXV4R2V0RGV2Q2Fwc0EoVUlOVCxM
UEFVWENBUFNBLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBh
dXhHZXREZXZDYXBzVyhVSU5ULExQQVVYQ0FQU1csVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIGF1eFNldFZvbHVtZShVSU5ULERXT1JEKTsNCk1NUkVTVUxUIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgYXV4R2V0Vm9sdW1lKFVJTlQsUERXT1JEKTsNCk1N
UkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgYXV4T3V0TWVzc2FnZShVSU5ULFVJ
TlQsRFdPUkQsRFdPUkQpOw0KVUlOVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1peGVy
R2V0TnVtRGV2cyh2b2lkKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
bWl4ZXJHZXREZXZDYXBzQShVSU5ULExQTUlYRVJDQVBTQSxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWl4ZXJHZXREZXZDYXBzVyhVSU5ULExQTUlYRVJDQVBT
VyxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWl4ZXJPcGVu
KExQSE1JWEVSLFVJTlQsRFdPUkQsRFdPUkQsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBtaXhlckNsb3NlKEhNSVhFUik7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIG1peGVyTWVzc2FnZShITUlYRVIsVUlOVCxEV09SRCxEV09SRCk7DQpN
TVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1peGVyR2V0TGluZUluZm9BKEhN
SVhFUk9CSixMUE1JWEVSTElORUEsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBtaXhlckdldExpbmVJbmZvVyhITUlYRVJPQkosTFBNSVhFUkxJTkVXLERXT1JE
KTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWl4ZXJHZXRJRChITUlY
RVJPQkosUFVJTlQsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBtaXhlckdldExpbmVDb250cm9sc0EoSE1JWEVST0JKLExQTUlYRVJMSU5FQ09OVFJPTFNBLERX
T1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWl4ZXJHZXRMaW5l
Q29udHJvbHNXKEhNSVhFUk9CSixMUE1JWEVSTElORUNPTlRST0xTVyxEV09SRCk7DQpNTVJFU1VM
VCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1peGVyR2V0Q29udHJvbERldGFpbHNBKEhN
SVhFUk9CSixMUE1JWEVSQ09OVFJPTERFVEFJTFMsRFdPUkQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBtaXhlckdldENvbnRyb2xEZXRhaWxzVyhITUlYRVJPQkosTFBN
SVhFUkNPTlRST0xERVRBSUxTLERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgbWl4ZXJTZXRDb250cm9sRGV0YWlscyhITUlYRVJPQkosTFBNSVhFUkNPTlRST0xE
RVRBSUxTLERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgdGlt
ZUdldFN5c3RlbVRpbWUoTFBNTVRJTUUsVUlOVCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIHRpbWVHZXRUaW1lKHZvaWQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSB0aW1lU2V0RXZlbnQoVUlOVCxVSU5ULExQVElNRUNBTExCQUNLLERXT1JELFVJ
TlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB0aW1lS2lsbEV2ZW50
KFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSB0aW1lR2V0RGV2
Q2FwcyhMUFRJTUVDQVBTLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSB0aW1lQmVnaW5QZXJpb2QoVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIHRpbWVFbmRQZXJpb2QoVUlOVCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgam95R2V0TnVtRGV2cyh2b2lkKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgam95R2V0RGV2Q2Fwc0EoVUlOVCxMUEpPWUNBUFNBLFVJTlQpOw0KTU1SRVNV
TFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBqb3lHZXREZXZDYXBzVyhVSU5ULExQSk9Z
Q0FQU1csVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGpveUdl
dFBvcyhVSU5ULExQSk9ZSU5GTyk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIGpveUdldFBvc0V4KFVJTlQsTFBKT1lJTkZPRVgpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBqb3lHZXRUaHJlc2hvbGQoVUlOVCxMUFVJTlQpOw0KTU1SRVNVTFQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBqb3lSZWxlYXNlQ2FwdHVyZShVSU5UKTsNCk1N
UkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgam95U2V0Q2FwdHVyZShIV05ELFVJ
TlQsVUlOVCxCT09MKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgam95
U2V0VGhyZXNob2xkKFVJTlQsVUlOVCk7DQpGT1VSQ0MgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBtbWlvU3RyaW5nVG9GT1VSQ0NBKExQQ1NUUixVSU5UKTsNCkZPVVJDQyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIG1taW9TdHJpbmdUb0ZPVVJDQ1coTFBDV1NUUixVSU5UKTsNCkxQ
TU1JT1BST0MgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtbWlvSW5zdGFsbElPUHJvY0Eo
Rk9VUkNDLExQTU1JT1BST0MsRFdPUkQpOw0KTFBNTUlPUFJPQyBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIG1taW9JbnN0YWxsSU9Qcm9jVyhGT1VSQ0MsTFBNTUlPUFJPQyxEV09SRCk7DQpI
TU1JTyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1taW9PcGVuQShMUFNUUixMUE1NSU9J
TkZPLERXT1JEKTsNCkhNTUlPIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbW1pb09wZW5X
KExQV1NUUixMUE1NSU9JTkZPLERXT1JEKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgbW1pb1JlbmFtZUEoTFBDU1RSLExQQ1NUUixMUENNTUlPSU5GTyxEV09SRCk7DQpN
TVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1taW9SZW5hbWVXKExQQ1dTVFIs
TFBDV1NUUixMUENNTUlPSU5GTyxEV09SRCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIG1taW9DbG9zZShITU1JTyxVSU5UKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBtbWlvUmVhZChITU1JTyxIUFNUUixMT05HKTsNCkxPTkcgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBtbWlvV3JpdGUoSE1NSU8sTFBDU1RSLExPTkcpOw0KTE9ORyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1taW9TZWVrKEhNTUlPLExPTkcsaW50KTsNCk1NUkVT
VUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbW1pb0dldEluZm8oSE1NSU8sTFBNTUlP
SU5GTyxVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbW1pb1Nl
dEluZm8oSE1NSU8sTFBDTU1JT0lORk8sVUlOVCk7DQpNTVJFU1VMVCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIG1taW9TZXRCdWZmZXIoSE1NSU8sTFBTVFIsTE9ORyxVSU5UKTsNCk1NUkVT
VUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbW1pb0ZsdXNoKEhNTUlPLFVJTlQpOw0K
TU1SRVNVTFQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtbWlvQWR2YW5jZShITU1JTyxM
UE1NSU9JTkZPLFVJTlQpOw0KTFJFU1VMVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1t
aW9TZW5kTWVzc2FnZShITU1JTyxVSU5ULExQQVJBTSxMUEFSQU0pOw0KTU1SRVNVTFQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBtbWlvRGVzY2VuZChITU1JTyxMUE1NQ0tJTkZPLGNvbnN0
IE1NQ0tJTkZPKixVSU5UKTsNCk1NUkVTVUxUIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
bW1pb0FzY2VuZChITU1JTyxMUE1NQ0tJTkZPLFVJTlQpOw0KTU1SRVNVTFQgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBtbWlvQ3JlYXRlQ2h1bmsoSE1NSU8sTFBNTUNLSU5GTyxVSU5UKTsN
Ck1DSUVSUk9SIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWNpU2VuZENvbW1hbmRBKE1D
SURFVklDRUlELFVJTlQsRFdPUkQsRFdPUkQpOw0KTUNJRVJST1IgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBtY2lTZW5kQ29tbWFuZFcoTUNJREVWSUNFSUQsVUlOVCxEV09SRCxEV09SRCk7
DQpNQ0lFUlJPUiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1jaVNlbmRTdHJpbmdBKExQ
Q1NUUixMUFNUUixVSU5ULEhXTkQpOw0KTUNJRVJST1IgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBtY2lTZW5kU3RyaW5nVyhMUENXU1RSLExQV1NUUixVSU5ULEhXTkQpOw0KTUNJREVWSUNF
SUQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtY2lHZXREZXZpY2VJREEoTFBDU1RSKTsN
Ck1DSURFVklDRUlEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWNpR2V0RGV2aWNlSURX
KExQQ1dTVFIpOw0KTUNJREVWSUNFSUQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBtY2lH
ZXREZXZpY2VJREZyb21FbGVtZW50SURBKERXT1JELExQQ1NUUik7DQpNQ0lERVZJQ0VJRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1jaUdldERldmljZUlERnJvbUVsZW1lbnRJRFcoRFdP
UkQsTFBDV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWNpR2V0RXJy
b3JTdHJpbmdBKE1DSUVSUk9SLExQU1RSLFVJTlQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIG1jaUdldEVycm9yU3RyaW5nVyhNQ0lFUlJPUixMUFdTVFIsVUlOVCk7DQpCT09M
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgbWNpU2V0WWllbGRQcm9jKE1DSURFVklDRUlE
LFlJRUxEUFJPQyxEV09SRCk7DQpIVEFTSyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG1j
aUdldENyZWF0b3JUYXNrKE1DSURFVklDRUlEKTsNCllJRUxEUFJPQyBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIG1jaUdldFlpZWxkUHJvYyhNQ0lERVZJQ0VJRCxQRFdPUkQpOw0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdNQ0lfU0VRX1NFVF9QQVJNUyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJh
Y2s7DQogICAgICAgIERXT1JEIGR3VGltZUZvcm1hdDsNCiAgICAgICAgRFdPUkQgZHdBdWRpbzsN
CiAgICAgICAgRFdPUkQgZHdUZW1wbzsNCiAgICAgICAgRFdPUkQgZHdQb3J0Ow0KICAgICAgICBE
V09SRCBkd1NsYXZlOw0KICAgICAgICBEV09SRCBkd01hc3RlcjsNCiAgICAgICAgRFdPUkQgZHdP
ZmZzZXQ7DQp9IE1DSV9TRVFfU0VUX1BBUk1TLCpQTUNJX1NFUV9TRVRfUEFSTVMsKkxQTUNJX1NF
UV9TRVRfUEFSTVM7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfQU5JTV9PUEVOX1BBUk1TQSB7DQog
ICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7DQogICAgICAgIE1DSURFVklDRUlEIHdEZXZpY2VJRDsN
CiAgICAgICAgTFBDU1RSIGxwc3RyRGV2aWNlVHlwZTsNCiAgICAgICAgTFBDU1RSIGxwc3RyRWxl
bWVudE5hbWU7DQogICAgICAgIExQQ1NUUiBscHN0ckFsaWFzOw0KICAgICAgICBEV09SRCBkd1N0
eWxlOw0KICAgICAgICBIV05EIGhXbmRQYXJlbnQ7DQp9IE1DSV9BTklNX09QRU5fUEFSTVNBLCpQ
TUNJX0FOSU1fT1BFTl9QQVJNU0EsKkxQTUNJX0FOSU1fT1BFTl9QQVJNU0E7DQp0eXBlZGVmIHN0
cnVjdCB0YWdNQ0lfQU5JTV9PUEVOX1BBUk1TVyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7
DQogICAgICAgIE1DSURFVklDRUlEIHdEZXZpY2VJRDsNCiAgICAgICAgTFBDV1NUUiBscHN0ckRl
dmljZVR5cGU7DQogICAgICAgIExQQ1dTVFIgbHBzdHJFbGVtZW50TmFtZTsNCiAgICAgICAgTFBD
V1NUUiBscHN0ckFsaWFzOw0KICAgICAgICBEV09SRCBkd1N0eWxlOw0KICAgICAgICBIV05EIGhX
bmRQYXJlbnQ7DQp9IE1DSV9BTklNX09QRU5fUEFSTVNXLCpQTUNJX0FOSU1fT1BFTl9QQVJNU1cs
KkxQTUNJX0FOSU1fT1BFTl9QQVJNU1c7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfQU5JTV9QTEFZ
X1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgRFdPUkQgZHdGcm9t
Ow0KICAgICAgICBEV09SRCBkd1RvOw0KICAgICAgICBEV09SRCBkd1NwZWVkOw0KfSBNQ0lfQU5J
TV9QTEFZX1BBUk1TLCpQTUNJX0FOSU1fUExBWV9QQVJNUywqTFBNQ0lfQU5JTV9QTEFZX1BBUk1T
Ow0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX0FOSU1fU1RFUF9QQVJNUyB7DQogICAgICAgIERXT1JE
IGR3Q2FsbGJhY2s7DQogICAgICAgIERXT1JEIGR3RnJhbWVzOw0KfSBNQ0lfQU5JTV9TVEVQX1BB
Uk1TLCpQTUNJX0FOSU1fU1RFUF9QQVJNUywqTFBNQ0lfQU5JTV9TVEVQX1BBUk1TOw0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnTUNJX0FOSU1fV0lORE9XX1BBUk1TQSB7DQogICAgICAgIERXT1JEIGR3Q2Fs
bGJhY2s7DQogICAgICAgIEhXTkQgaFduZDsNCiAgICAgICAgVUlOVCBuQ21kU2hvdzsNCiAgICAg
ICAgTFBDU1RSIGxwc3RyVGV4dDsNCn0gTUNJX0FOSU1fV0lORE9XX1BBUk1TQSwqUE1DSV9BTklN
X1dJTkRPV19QQVJNU0EsKkxQTUNJX0FOSU1fV0lORE9XX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0
IHRhZ01DSV9BTklNX1dJTkRPV19QQVJNU1cgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0K
ICAgICAgICBIV05EIGhXbmQ7DQogICAgICAgIFVJTlQgbkNtZFNob3c7DQogICAgICAgIExQQ1dT
VFIgbHBzdHJUZXh0Ow0KfSBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNXLCpQTUNJX0FOSU1fV0lORE9X
X1BBUk1TVywqTFBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNXOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJ
X0FOSU1fUkVDVF9QQVJNUyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7DQoNCg0KDQoNCiAg
ICAgICAgUkVDVCByYzsNCg0KfSBNQ0lfQU5JTV9SRUNUX1BBUk1TLCpQTUNJX0FOSU1fUkVDVF9Q
QVJNUywqTFBNQ0lfQU5JTV9SRUNUX1BBUk1TOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX0FOSU1f
VVBEQVRFX1BBUk1TIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgUkVDVCBy
YzsNCiAgICAgICAgSERDIGhEQzsNCn0gTUNJX0FOSU1fVVBEQVRFX1BBUk1TLCpQTUNJX0FOSU1f
VVBEQVRFX1BBUk1TLCpMUE1DSV9BTklNX1VQREFURV9QQVJNUzsNCnR5cGVkZWYgc3RydWN0IHRh
Z01DSV9PVkxZX09QRU5fUEFSTVNBIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAg
ICAgTUNJREVWSUNFSUQgd0RldmljZUlEOw0KICAgICAgICBMUENTVFIgbHBzdHJEZXZpY2VUeXBl
Ow0KICAgICAgICBMUENTVFIgbHBzdHJFbGVtZW50TmFtZTsNCiAgICAgICAgTFBDU1RSIGxwc3Ry
QWxpYXM7DQogICAgICAgIERXT1JEIGR3U3R5bGU7DQogICAgICAgIEhXTkQgaFduZFBhcmVudDsN
Cn0gTUNJX09WTFlfT1BFTl9QQVJNU0EsKlBNQ0lfT1ZMWV9PUEVOX1BBUk1TQSwqTFBNQ0lfT1ZM
WV9PUEVOX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9PVkxZX09QRU5fUEFSTVNXIHsN
CiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTUNJREVWSUNFSUQgd0RldmljZUlE
Ow0KICAgICAgICBMUENXU1RSIGxwc3RyRGV2aWNlVHlwZTsNCiAgICAgICAgTFBDV1NUUiBscHN0
ckVsZW1lbnROYW1lOw0KICAgICAgICBMUENXU1RSIGxwc3RyQWxpYXM7DQogICAgICAgIERXT1JE
IGR3U3R5bGU7DQogICAgICAgIEhXTkQgaFduZFBhcmVudDsNCn0gTUNJX09WTFlfT1BFTl9QQVJN
U1csKlBNQ0lfT1ZMWV9PUEVOX1BBUk1TVywqTFBNQ0lfT1ZMWV9PUEVOX1BBUk1TVzsNCnR5cGVk
ZWYgc3RydWN0IHRhZ01DSV9PVkxZX1dJTkRPV19QQVJNU0Egew0KICAgICAgICBEV09SRCBkd0Nh
bGxiYWNrOw0KICAgICAgICBIV05EIGhXbmQ7DQogICAgICAgIFVJTlQgbkNtZFNob3c7DQogICAg
ICAgIExQQ1NUUiBscHN0clRleHQ7DQp9IE1DSV9PVkxZX1dJTkRPV19QQVJNU0EsKlBNQ0lfT1ZM
WV9XSU5ET1dfUEFSTVNBLCpMUE1DSV9PVkxZX1dJTkRPV19QQVJNU0E7DQp0eXBlZGVmIHN0cnVj
dCB0YWdNQ0lfT1ZMWV9XSU5ET1dfUEFSTVNXIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsN
CiAgICAgICAgSFdORCBoV25kOw0KICAgICAgICBVSU5UIG5DbWRTaG93Ow0KICAgICAgICBMUENX
U1RSIGxwc3RyVGV4dDsNCn0gTUNJX09WTFlfV0lORE9XX1BBUk1TVywqUE1DSV9PVkxZX1dJTkRP
V19QQVJNU1csKkxQTUNJX09WTFlfV0lORE9XX1BBUk1TVzsNCnR5cGVkZWYgc3RydWN0IHRhZ01D
SV9PVkxZX1JFQ1RfUEFSTVMgew0KICAgICAgICBEV09SRCBkd0NhbGxiYWNrOw0KDQoNCg0KDQog
ICAgICAgIFJFQ1QgcmM7DQoNCn0gTUNJX09WTFlfUkVDVF9QQVJNUywqUE1DSV9PVkxZX1JFQ1Rf
UEFSTVMsKkxQTUNJX09WTFlfUkVDVF9QQVJNUzsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9PVkxZ
X1NBVkVfUEFSTVNBIHsNCiAgICAgICAgRFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTFBDU1RS
IGxwZmlsZW5hbWU7DQogICAgICAgIFJFQ1QgcmM7DQp9IE1DSV9PVkxZX1NBVkVfUEFSTVNBLCpQ
TUNJX09WTFlfU0FWRV9QQVJNU0EsKkxQTUNJX09WTFlfU0FWRV9QQVJNU0E7DQp0eXBlZGVmIHN0
cnVjdCB0YWdNQ0lfT1ZMWV9TQVZFX1BBUk1TVyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7
DQogICAgICAgIExQQ1dTVFIgbHBmaWxlbmFtZTsNCiAgICAgICAgUkVDVCByYzsNCn0gTUNJX09W
TFlfU0FWRV9QQVJNU1csKlBNQ0lfT1ZMWV9TQVZFX1BBUk1TVywqTFBNQ0lfT1ZMWV9TQVZFX1BB
Uk1TVzsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9PVkxZX0xPQURfUEFSTVNBIHsNCiAgICAgICAg
RFdPUkQgZHdDYWxsYmFjazsNCiAgICAgICAgTFBDU1RSIGxwZmlsZW5hbWU7DQogICAgICAgIFJF
Q1QgcmM7DQp9IE1DSV9PVkxZX0xPQURfUEFSTVNBLCpQTUNJX09WTFlfTE9BRF9QQVJNU0EsKkxQ
TUNJX09WTFlfTE9BRF9QQVJNU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfT1ZMWV9MT0FEX1BB
Uk1TVyB7DQogICAgICAgIERXT1JEIGR3Q2FsbGJhY2s7DQogICAgICAgIExQQ1dTVFIgbHBmaWxl
bmFtZTsNCiAgICAgICAgUkVDVCByYzsNCn0gTUNJX09WTFlfTE9BRF9QQVJNU1csKlBNQ0lfT1ZM
WV9MT0FEX1BBUk1TVywqTFBNQ0lfT1ZMWV9MT0FEX1BBUk1TVzsNCiMgMTg4MCAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9tbXN5c3RlbS5oIiAzDQp0eXBlZGVmIFdBVkVPVVRDQVBTQSBXQVZF
T1VUQ0FQUywqUFdBVkVPVVRDQVBTLCpMUFdBVkVPVVRDQVBTOw0KdHlwZWRlZiBXQVZFSU5DQVBT
QSBXQVZFSU5DQVBTLCpQV0FWRUlOQ0FQUywqTFBXQVZFSU5DQVBTOw0KdHlwZWRlZiBNSURJT1VU
Q0FQU0EgTUlESU9VVENBUFMsKlBNSURJT1VUQ0FQUywqTFBNSURJT1VUQ0FQUzsNCnR5cGVkZWYg
TUlESUlOQ0FQU0EgTUlESUlOQ0FQUywqUE1JRElJTkNBUFMsKkxQTUlESUlOQ0FQUzsNCnR5cGVk
ZWYgQVVYQ0FQU0EgQVVYQ0FQUywqUEFVWENBUFMsKkxQQVVYQ0FQUzsNCnR5cGVkZWYgTUlYRVJD
QVBTQSBNSVhFUkNBUFMsKlBNSVhFUkNBUFMsKkxQTUlYRVJDQVBTOw0KdHlwZWRlZiBNSVhFUkxJ
TkVBIE1JWEVSTElORSwqUE1JWEVSTElORSwqTFBNSVhFUkxJTkU7DQp0eXBlZGVmIE1JWEVSQ09O
VFJPTEEgTUlYRVJDT05UUk9MLCpQTUlYRVJDT05UUk9MLCpMUE1JWEVSQ09OVFJPTDsNCnR5cGVk
ZWYgTUlYRVJMSU5FQ09OVFJPTFNBIE1JWEVSTElORUNPTlRST0xTLCpQTUlYRVJMSU5FQ09OVFJP
TFMsKkxQTUlYRVJMSU5FQ09OVFJPTFM7DQp0eXBlZGVmIE1JWEVSQ09OVFJPTERFVEFJTFNfTElT
VFRFWFRBIE1JWEVSQ09OVFJPTERFVEFJTFNfTElTVFRFWFQsKlBNSVhFUkNPTlRST0xERVRBSUxT
X0xJU1RURVhULCpMUE1JWEVSQ09OVFJPTERFVEFJTFNfTElTVFRFWFQ7DQp0eXBlZGVmIEpPWUNB
UFNBIEpPWUNBUFMsKlBKT1lDQVBTLCpMUEpPWUNBUFM7DQp0eXBlZGVmIE1DSV9PUEVOX1BBUk1T
QSBNQ0lfT1BFTl9QQVJNUywqUE1DSV9PUEVOX1BBUk1TLCpMUE1DSV9PUEVOX1BBUk1TOw0KdHlw
ZWRlZiBNQ0lfSU5GT19QQVJNU0EgTUNJX0lORk9fUEFSTVMsKkxQTUNJX0lORk9fUEFSTVM7DQp0
eXBlZGVmIE1DSV9TWVNJTkZPX1BBUk1TQSBNQ0lfU1lTSU5GT19QQVJNUywqUE1DSV9TWVNJTkZP
X1BBUk1TLCpMUE1DSV9TWVNJTkZPX1BBUk1TOw0KdHlwZWRlZiBNQ0lfU0FWRV9QQVJNU0EgTUNJ
X1NBVkVfUEFSTVMsKlBNQ0lfU0FWRV9QQVJNUywqTFBNQ0lfU0FWRV9QQVJNUzsNCnR5cGVkZWYg
TUNJX0xPQURfUEFSTVNBIE1DSV9MT0FEX1BBUk1TLCpQTUNJX0xPQURfUEFSTVMsKkxQTUNJX0xP
QURfUEFSTVM7DQp0eXBlZGVmIE1DSV9WRF9FU0NBUEVfUEFSTVNBIE1DSV9WRF9FU0NBUEVfUEFS
TVMsKlBNQ0lfVkRfRVNDQVBFX1BBUk1TLCpMUE1DSV9WRF9FU0NBUEVfUEFSTVM7DQp0eXBlZGVm
IE1DSV9XQVZFX09QRU5fUEFSTVNBIE1DSV9XQVZFX09QRU5fUEFSTVMsKlBNQ0lfV0FWRV9PUEVO
X1BBUk1TLCpMUE1DSV9XQVZFX09QRU5fUEFSTVM7DQp0eXBlZGVmIE1DSV9BTklNX09QRU5fUEFS
TVNBIE1DSV9BTklNX09QRU5fUEFSTVMsKlBNQ0lfQU5JTV9PUEVOX1BBUk1TLCpMUE1DSV9BTklN
X09QRU5fUEFSTVM7DQp0eXBlZGVmIE1DSV9BTklNX1dJTkRPV19QQVJNU0EgTUNJX0FOSU1fV0lO
RE9XX1BBUk1TLCpQTUNJX0FOSU1fV0lORE9XX1BBUk1TLCpMUE1DSV9BTklNX1dJTkRPV19QQVJN
UzsNCnR5cGVkZWYgTUNJX09WTFlfT1BFTl9QQVJNU0EgTUNJX09WTFlfT1BFTl9QQVJNUywqUE1D
SV9PVkxZX09QRU5fUEFSTVMsKkxQTUNJX09WTFlfT1BFTl9QQVJNUzsNCnR5cGVkZWYgTUNJX09W
TFlfV0lORE9XX1BBUk1TQSBNQ0lfT1ZMWV9XSU5ET1dfUEFSTVMsKlBNQ0lfT1ZMWV9XSU5ET1df
UEFSTVMsKkxQTUNJX09WTFlfV0lORE9XX1BBUk1TOw0KdHlwZWRlZiBNQ0lfT1ZMWV9TQVZFX1BB
Uk1TQSBNQ0lfT1ZMWV9TQVZFX1BBUk1TLCpQTUNJX09WTFlfU0FWRV9QQVJNUywqTFBNQ0lfT1ZM
WV9TQVZFX1BBUk1TOw0KIyAxOTMwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL21tc3lzdGVt
LmgiIDMNCn0NCg0KI3ByYWdtYSBwYWNrKHBvcCkNCiMgMTMzICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL3dpbmRvd3MuaCIgMiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvbmIz
MC5oIiAxIDMNCg0KDQoNCmV4dGVybiAiQyIgew0KIyA5MSAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9uYjMwLmgiIDMNCnR5cGVkZWYgc3RydWN0IF9BQ1RJT05fSEVBREVSIHsNCiAgICAgICAg
VUxPTkcgdHJhbnNwb3J0X2lkOw0KICAgICAgICBVU0hPUlQgYWN0aW9uX2NvZGU7DQogICAgICAg
IFVTSE9SVCByZXNlcnZlZDsNCn0gQUNUSU9OX0hFQURFUiwqUEFDVElPTl9IRUFERVI7DQp0eXBl
ZGVmIHN0cnVjdCBfQURBUFRFUl9TVEFUVVMgew0KICAgICAgICBVQ0hBUiBhZGFwdGVyX2FkZHJl
c3NbNl07DQogICAgICAgIFVDSEFSIHJldl9tYWpvcjsNCiAgICAgICAgVUNIQVIgcmVzZXJ2ZWQw
Ow0KICAgICAgICBVQ0hBUiBhZGFwdGVyX3R5cGU7DQogICAgICAgIFVDSEFSIHJldl9taW5vcjsN
CiAgICAgICAgV09SRCBkdXJhdGlvbjsNCiAgICAgICAgV09SRCBmcm1yX3JlY3Y7DQogICAgICAg
IFdPUkQgZnJtcl94bWl0Ow0KICAgICAgICBXT1JEIGlmcmFtZV9yZWN2X2VycjsNCiAgICAgICAg
V09SRCB4bWl0X2Fib3J0czsNCiAgICAgICAgRFdPUkQgeG1pdF9zdWNjZXNzOw0KICAgICAgICBE
V09SRCByZWN2X3N1Y2Nlc3M7DQogICAgICAgIFdPUkQgaWZyYW1lX3htaXRfZXJyOw0KICAgICAg
ICBXT1JEIHJlY3ZfYnVmZl91bmF2YWlsOw0KICAgICAgICBXT1JEIHQxX3RpbWVvdXRzOw0KICAg
ICAgICBXT1JEIHRpX3RpbWVvdXRzOw0KICAgICAgICBEV09SRCByZXNlcnZlZDE7DQogICAgICAg
IFdPUkQgZnJlZV9uY2JzOw0KICAgICAgICBXT1JEIG1heF9jZmdfbmNiczsNCiAgICAgICAgV09S
RCBtYXhfbmNiczsNCiAgICAgICAgV09SRCB4bWl0X2J1Zl91bmF2YWlsOw0KICAgICAgICBXT1JE
IG1heF9kZ3JhbV9zaXplOw0KICAgICAgICBXT1JEIHBlbmRpbmdfc2VzczsNCiAgICAgICAgV09S
RCBtYXhfY2ZnX3Nlc3M7DQogICAgICAgIFdPUkQgbWF4X3Nlc3M7DQogICAgICAgIFdPUkQgbWF4
X3Nlc3NfcGt0X3NpemU7DQogICAgICAgIFdPUkQgbmFtZV9jb3VudDsNCn0gQURBUFRFUl9TVEFU
VVMsKlBBREFQVEVSX1NUQVRVUzsNCnR5cGVkZWYgc3RydWN0IF9GSU5EX05BTUVfQlVGRkVSIHsN
CiAgICAgICAgVUNIQVIgbGVuZ3RoOw0KICAgICAgICBVQ0hBUiBhY2Nlc3NfY29udHJvbDsNCiAg
ICAgICAgVUNIQVIgZnJhbWVfY29udHJvbDsNCiAgICAgICAgVUNIQVIgZGVzdGluYXRpb25fYWRk
cls2XTsNCiAgICAgICAgVUNIQVIgc291cmNlX2FkZHJbNl07DQogICAgICAgIFVDSEFSIHJvdXRp
bmdfaW5mb1sxOF07DQp9IEZJTkRfTkFNRV9CVUZGRVIsKlBGSU5EX05BTUVfQlVGRkVSOw0KdHlw
ZWRlZiBzdHJ1Y3QgX0ZJTkRfTkFNRV9IRUFERVIgew0KICAgICAgICBXT1JEIG5vZGVfY291bnQ7
DQogICAgICAgIFVDSEFSIHJlc2VydmVkOw0KICAgICAgICBVQ0hBUiB1bmlxdWVfZ3JvdXA7DQp9
IEZJTkRfTkFNRV9IRUFERVIsKlBGSU5EX05BTUVfSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgX0xB
TkFfRU5VTSB7DQogICAgICAgIFVDSEFSIGxlbmd0aDsNCiAgICAgICAgVUNIQVIgbGFuYVsyNTQg
KzFdOw0KfSBMQU5BX0VOVU0sKlBMQU5BX0VOVU07DQp0eXBlZGVmIHN0cnVjdCBfTkFNRV9CVUZG
RVIgew0KICAgICAgICBVQ0hBUiBuYW1lWzE2XTsNCiAgICAgICAgVUNIQVIgbmFtZV9udW07DQog
ICAgICAgIFVDSEFSIG5hbWVfZmxhZ3M7DQp9IE5BTUVfQlVGRkVSLCpQTkFNRV9CVUZGRVI7DQp0
eXBlZGVmIHN0cnVjdCBfTkNCIHsNCiAgICAgICAgVUNIQVIgbmNiX2NvbW1hbmQ7DQogICAgICAg
IFVDSEFSIG5jYl9yZXRjb2RlOw0KICAgICAgICBVQ0hBUiBuY2JfbHNuOw0KICAgICAgICBVQ0hB
UiBuY2JfbnVtOw0KICAgICAgICBQVUNIQVIgbmNiX2J1ZmZlcjsNCiAgICAgICAgV09SRCBuY2Jf
bGVuZ3RoOw0KICAgICAgICBVQ0hBUiBuY2JfY2FsbG5hbWVbMTZdOw0KICAgICAgICBVQ0hBUiBu
Y2JfbmFtZVsxNl07DQogICAgICAgIFVDSEFSIG5jYl9ydG87DQogICAgICAgIFVDSEFSIG5jYl9z
dG87DQogICAgICAgIHZvaWQgKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgKm5jYl9wb3N0
KShzdHJ1Y3QgX05DQiopOw0KICAgICAgICBVQ0hBUiBuY2JfbGFuYV9udW07DQogICAgICAgIFVD
SEFSIG5jYl9jbWRfY3BsdDsNCiAgICAgICAgVUNIQVIgbmNiX3Jlc2VydmVbMTBdOw0KICAgICAg
ICBIQU5ETEUgbmNiX2V2ZW50Ow0KfSBOQ0IsKlBOQ0I7DQp0eXBlZGVmIHN0cnVjdCBfU0VTU0lP
Tl9CVUZGRVIgew0KICAgICAgICBVQ0hBUiBsc247DQogICAgICAgIFVDSEFSIHN0YXRlOw0KICAg
ICAgICBVQ0hBUiBsb2NhbF9uYW1lWzE2XTsNCiAgICAgICAgVUNIQVIgcmVtb3RlX25hbWVbMTZd
Ow0KICAgICAgICBVQ0hBUiByY3ZzX291dHN0YW5kaW5nOw0KICAgICAgICBVQ0hBUiBzZW5kc19v
dXRzdGFuZGluZzsNCn0gU0VTU0lPTl9CVUZGRVIsKlBTRVNTSU9OX0JVRkZFUjsNCnR5cGVkZWYg
c3RydWN0IF9TRVNTSU9OX0hFQURFUiB7DQogICAgICAgIFVDSEFSIHNlc3NfbmFtZTsNCiAgICAg
ICAgVUNIQVIgbnVtX3Nlc3M7DQogICAgICAgIFVDSEFSIHJjdl9kZ19vdXRzdGFuZGluZzsNCiAg
ICAgICAgVUNIQVIgcmN2X2FueV9vdXRzdGFuZGluZzsNCn0gU0VTU0lPTl9IRUFERVIsKlBTRVNT
SU9OX0hFQURFUjsNClVDSEFSIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgTmV0YmlvcyhQ
TkNCKTsNCg0KfQ0KIyAxMzQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAy
IDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9ycGMuaCIgMSAzDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIHsNCiMgMjYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvcnBjLmgiIDMN
CnR5cGVkZWYgdm9pZCAqSV9SUENfSEFORExFOw0KdHlwZWRlZiBsb25nIFJQQ19TVEFUVVM7DQoN
CiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9ycGNkY2UuaCIgMSAzDQoNCg0KDQoNCmV4
dGVybiAiQyIgew0KIyA4OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9ycGNkY2UuaCIgMw0K
dHlwZWRlZiBJX1JQQ19IQU5ETEUgUlBDX0JJTkRJTkdfSEFORExFOw0KdHlwZWRlZiBSUENfQklO
RElOR19IQU5ETEUgaGFuZGxlX3Q7DQp0eXBlZGVmIHN0cnVjdCBfUlBDX0JJTkRJTkdfVkVDVE9S
IHsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBDb3VudDsNCiAgICAgICAgUlBDX0JJTkRJTkdfSEFO
RExFIEJpbmRpbmdIWzFdOw0KfSBSUENfQklORElOR19WRUNUT1I7DQp0eXBlZGVmIHN0cnVjdCBf
VVVJRF9WRUNUT1Igew0KICAgICAgICB1bnNpZ25lZCBsb25nIENvdW50Ow0KICAgICAgICBVVUlE
ICpVdWlkWzFdOw0KfSBVVUlEX1ZFQ1RPUjsNCnR5cGVkZWYgdm9pZCAqUlBDX0lGX0hBTkRMRTsN
CnR5cGVkZWYgc3RydWN0IF9SUENfSUZfSUQgew0KICAgICAgICBVVUlEIFV1aWQ7DQogICAgICAg
IHVuc2lnbmVkIHNob3J0IFZlcnNNYWpvcjsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgVmVyc01p
bm9yOw0KfSBSUENfSUZfSUQ7DQp0eXBlZGVmIHN0cnVjdCBfUlBDX1BPTElDWSB7DQogICAgICAg
IHVuc2lnbmVkIGludCBMZW5ndGggOw0KICAgICAgICB1bnNpZ25lZCBsb25nIEVuZHBvaW50Rmxh
Z3MgOw0KICAgICAgICB1bnNpZ25lZCBsb25nIE5JQ0ZsYWdzIDsNCn0gUlBDX1BPTElDWSwqUFJQ
Q19QT0xJQ1kgOw0KdHlwZWRlZiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUlBD
X09CSkVDVF9JTlFfRk4oVVVJRCosVVVJRCosUlBDX1NUQVRVUyopOw0KdHlwZWRlZiBSUENfU1RB
VFVTIFJQQ19JRl9DQUxMQkFDS19GTihSUENfSUZfSEFORExFLHZvaWQqKTsNCnR5cGVkZWYgc3Ry
dWN0IHsNCiAgICAgICAgdW5zaWduZWQgaW50IENvdW50Ow0KICAgICAgICB1bnNpZ25lZCBsb25n
IFN0YXRzWzFdOw0KfSBSUENfU1RBVFNfVkVDVE9SOw0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgICAg
ICB1bnNpZ25lZCBsb25nIENvdW50Ow0KICAgICAgICBSUENfSUZfSUQqSWZJZFsxXTsNCn0gUlBD
X0lGX0lEX1ZFQ1RPUjsNCnR5cGVkZWYgdm9pZCAqUlBDX0FVVEhfSURFTlRJVFlfSEFORExFOw0K
dHlwZWRlZiB2b2lkICpSUENfQVVUSFpfSEFORExFOw0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19TRUNV
UklUWV9RT1Mgew0KICAgICAgICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQogICAgICAgIHVuc2ln
bmVkIGxvbmcgQ2FwYWJpbGl0aWVzOw0KICAgICAgICB1bnNpZ25lZCBsb25nIElkZW50aXR5VHJh
Y2tpbmc7DQogICAgICAgIHVuc2lnbmVkIGxvbmcgSW1wZXJzb25hdGlvblR5cGU7DQp9IFJQQ19T
RUNVUklUWV9RT1MsKlBSUENfU0VDVVJJVFlfUU9TOw0KdHlwZWRlZiBzdHJ1Y3QgX1NFQ19XSU5O
VF9BVVRIX0lERU5USVRZX1cgew0KICAgICAgICB1bnNpZ25lZCBzaG9ydCAqVXNlcjsNCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBVc2VyTGVuZ3RoOw0KICAgICAgICB1bnNpZ25lZCBzaG9ydCAqRG9t
YWluOw0KICAgICAgICB1bnNpZ25lZCBsb25nIERvbWFpbkxlbmd0aDsNCiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgKlBhc3N3b3JkOw0KICAgICAgICB1bnNpZ25lZCBsb25nIFBhc3N3b3JkTGVuZ3Ro
Ow0KICAgICAgICB1bnNpZ25lZCBsb25nIEZsYWdzOw0KfSBTRUNfV0lOTlRfQVVUSF9JREVOVElU
WV9XLCpQU0VDX1dJTk5UX0FVVEhfSURFTlRJVFlfVzsNCnR5cGVkZWYgc3RydWN0IF9TRUNfV0lO
TlRfQVVUSF9JREVOVElUWV9BIHsNCiAgICAgICAgdW5zaWduZWQgY2hhciAqVXNlcjsNCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBVc2VyTGVuZ3RoOw0KICAgICAgICB1bnNpZ25lZCBjaGFyICpEb21h
aW47DQogICAgICAgIHVuc2lnbmVkIGxvbmcgRG9tYWluTGVuZ3RoOw0KICAgICAgICB1bnNpZ25l
ZCBjaGFyICpQYXNzd29yZDsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBQYXNzd29yZExlbmd0aDsN
CiAgICAgICAgdW5zaWduZWQgbG9uZyBGbGFnczsNCn0gU0VDX1dJTk5UX0FVVEhfSURFTlRJVFlf
QSwqUFNFQ19XSU5OVF9BVVRIX0lERU5USVRZX0E7DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAg
IHVuc2lnbmVkIGNoYXIgKlVzZXJOYW1lOw0KICAgICAgICB1bnNpZ25lZCBjaGFyICpDb21wdXRl
ck5hbWU7DQogICAgICAgIHVuc2lnbmVkIHNob3J0IFByaXZpbGVnZTsNCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBBdXRoRmxhZ3M7DQp9IFJQQ19DTElFTlRfSU5GT1JNQVRJT04xLCogUFJQQ19DTElF
TlRfSU5GT1JNQVRJT04xOw0KdHlwZWRlZiBJX1JQQ19IQU5ETEUgKlJQQ19FUF9JTlFfSEFORExF
Ow0KdHlwZWRlZiBpbnQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSAqUlBDX01HTVRfQVVU
SE9SSVpBVElPTl9GTikoUlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIGxvbmcsUlBDX1NUQVRV
UyopOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9SUENfUFJPVFNFUV9WRUNUT1JBIHsNCiAgICAgICAg
dW5zaWduZWQgaW50IENvdW50Ow0KICAgICAgICB1bnNpZ25lZCBjaGFyKlByb3RzZXFbMV07DQp9
IFJQQ19QUk9UU0VRX1ZFQ1RPUkE7DQp0eXBlZGVmIHN0cnVjdCBfUlBDX1BST1RTRVFfVkVDVE9S
VyB7DQogICAgICAgIHVuc2lnbmVkIGludCBDb3VudDsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQq
UHJvdHNlcVsxXTsNCn0gUlBDX1BST1RTRVFfVkVDVE9SVzsNClJQQ19TVEFUVVMgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBScGNCaW5kaW5nRnJvbVN0cmluZ0JpbmRpbmdBKHVuc2lnbmVk
IGNoYXIgKixSUENfQklORElOR19IQU5ETEUgKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUnBjQmluZGluZ0Zyb21TdHJpbmdCaW5kaW5nVyh1bnNpZ25lZCBzaG9y
dCAqLFJQQ19CSU5ESU5HX0hBTkRMRSAqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNCaW5kaW5nVG9TdHJpbmdCaW5kaW5nQShSUENfQklORElOR19IQU5ETEUs
dW5zaWduZWQgY2hhcioqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBScGNCaW5kaW5nVG9TdHJpbmdCaW5kaW5nVyhSUENfQklORElOR19IQU5ETEUsdW5zaWduZWQg
c2hvcnQqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU3Ry
aW5nQmluZGluZ0NvbXBvc2VBKHVuc2lnbmVkIGNoYXIgKix1bnNpZ25lZCBjaGFyICosdW5zaWdu
ZWQgY2hhciAqLHVuc2lnbmVkIGNoYXIgKix1bnNpZ25lZCBjaGFyICosdW5zaWduZWQgY2hhciAq
Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU3RyaW5nQmlu
ZGluZ0NvbXBvc2VXKHVuc2lnbmVkIHNob3J0ICosdW5zaWduZWQgc2hvcnQgKix1bnNpZ25lZCBz
aG9ydCAqLHVuc2lnbmVkIHNob3J0ICosdW5zaWduZWQgc2hvcnQgKix1bnNpZ25lZCBzaG9ydCAq
Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU3RyaW5nQmlu
ZGluZ1BhcnNlQSh1bnNpZ25lZCBjaGFyICosdW5zaWduZWQgY2hhciAqKix1bnNpZ25lZCBjaGFy
ICoqLHVuc2lnbmVkIGNoYXIgKiosdW5zaWduZWQgY2hhciAqKix1bnNpZ25lZCBjaGFyICoqKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNTdHJpbmdCaW5kaW5n
UGFyc2VXKHVuc2lnbmVkIHNob3J0ICosdW5zaWduZWQgc2hvcnQgKiosdW5zaWduZWQgc2hvcnQg
KiosdW5zaWduZWQgc2hvcnQgKiosdW5zaWduZWQgc2hvcnQgKiosdW5zaWduZWQgc2hvcnQgKiop
Ow0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1N0cmluZ0ZyZWVB
KHVuc2lnbmVkIGNoYXIqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjU3RyaW5nRnJlZVcodW5zaWduZWQgc2hvcnQqKik7DQpSUENfU1RBVFVTIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTmV0d29ya0lzUHJvdHNlcVZhbGlkQSh1bnNpZ25lZCBj
aGFyKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTmV0d29y
a0lzUHJvdHNlcVZhbGlkVyh1bnNpZ25lZCBzaG9ydCopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05ldHdvcmtJbnFQcm90c2Vxc0EoUlBDX1BST1RTRVFfVkVD
VE9SQSoqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOZXR3
b3JrSW5xUHJvdHNlcXNXKFJQQ19QUk9UU0VRX1ZFQ1RPUlcqKik7DQpSUENfU1RBVFVTIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjUHJvdHNlcVZlY3RvckZyZWVBKFJQQ19QUk9UU0VR
X1ZFQ1RPUkEqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBj
UHJvdHNlcVZlY3RvckZyZWVXKFJQQ19QUk9UU0VRX1ZFQ1RPUlcqKik7DQpSUENfU1RBVFVTIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU2VydmVyVXNlUHJvdHNlcUEodW5zaWduZWQg
Y2hhciosdW5zaWduZWQgaW50LHZvaWQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNTZXJ2ZXJVc2VQcm90c2VxVyh1bnNpZ25lZCBzaG9ydCosdW5zaWduZWQg
aW50LHZvaWQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNT
ZXJ2ZXJVc2VQcm90c2VxRXhBKHVuc2lnbmVkIGNoYXIqLHVuc2lnbmVkIGludCBNYXhDYWxscyx2
b2lkKixQUlBDX1BPTElDWSk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjU2VydmVyVXNlUHJvdHNlcUV4Vyh1bnNpZ25lZCBzaG9ydCosdW5zaWduZWQgaW50LHZv
aWQqLFBSUENfUE9MSUNZKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBScGNTZXJ2ZXJVc2VQcm90c2VxRXBBKHVuc2lnbmVkIGNoYXIqLHVuc2lnbmVkIGludCx1bnNp
Z25lZCBjaGFyKix2b2lkKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjU2VydmVyVXNlUHJvdHNlcUVwRXhBKHVuc2lnbmVkIGNoYXIqLHVuc2lnbmVkIGludCx1
bnNpZ25lZCBjaGFyKix2b2lkKixQUlBDX1BPTElDWSk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUnBjU2VydmVyVXNlUHJvdHNlcUVwVyh1bnNpZ25lZCBzaG9ydCos
dW5zaWduZWQgaW50LHVuc2lnbmVkIHNob3J0Kix2b2lkKik7DQpSUENfU1RBVFVTIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU2VydmVyVXNlUHJvdHNlcUVwRXhXKHVuc2lnbmVkIHNo
b3J0Kix1bnNpZ25lZCBpbnQsdW5zaWduZWQgc2hvcnQqLHZvaWQqLFBSUENfUE9MSUNZKTsNClJQ
Q19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNTZXJ2ZXJVc2VQcm90c2Vx
SWZBKHVuc2lnbmVkIGNoYXIqLHVuc2lnbmVkIGludCxSUENfSUZfSEFORExFLHZvaWQqKTsNClJQ
Q19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNTZXJ2ZXJVc2VQcm90c2Vx
SWZFeEEodW5zaWduZWQgY2hhciosdW5zaWduZWQgaW50LFJQQ19JRl9IQU5ETEUsdm9pZCosUFJQ
Q19QT0xJQ1kpOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1Nl
cnZlclVzZVByb3RzZXFJZlcodW5zaWduZWQgc2hvcnQqLHVuc2lnbmVkIGludCxSUENfSUZfSEFO
RExFLHZvaWQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNT
ZXJ2ZXJVc2VQcm90c2VxSWZFeFcodW5zaWduZWQgc2hvcnQqLHVuc2lnbmVkIGludCxSUENfSUZf
SEFORExFLHZvaWQqLFBSUENfUE9MSUNZKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNNZ210SW5xU2VydmVyUHJpbmNOYW1lQShSUENfQklORElOR19IQU5ETEUs
dW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKiopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJwY01nbXRJbnFTZXJ2ZXJQcmluY05hbWVXKFJQQ19CSU5ESU5HX0hB
TkRMRSx1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0KiopOw0KUlBDX1NUQVRVUyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlcklucURlZmF1bHRQcmluY05hbWVBKHVuc2ln
bmVkIGxvbmcsdW5zaWduZWQgY2hhcioqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNTZXJ2ZXJJbnFEZWZhdWx0UHJpbmNOYW1lVyh1bnNpZ25lZCBsb25nLHVu
c2lnbmVkIHNob3J0KiopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJwY05zQmluZGluZ0lucUVudHJ5TmFtZUEoUlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIGxv
bmcsdW5zaWduZWQgY2hhcioqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBScGNOc0JpbmRpbmdJbnFFbnRyeU5hbWVXKFJQQ19CSU5ESU5HX0hBTkRMRSx1bnNpZ25l
ZCBsb25nLHVuc2lnbmVkIHNob3J0KiopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFJwY0JpbmRpbmdJbnFBdXRoQ2xpZW50QShSUENfQklORElOR19IQU5ETEUsUlBD
X0FVVEhaX0hBTkRMRSAqLHVuc2lnbmVkIGNoYXIqKix1bnNpZ25lZCBsb25nKix1bnNpZ25lZCBs
b25nKix1bnNpZ25lZCBsb25nKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgUnBjQmluZGluZ0lucUF1dGhDbGllbnRXKFJQQ19CSU5ESU5HX0hBTkRMRSxSUENfQVVU
SFpfSEFORExFICosdW5zaWduZWQgc2hvcnQqKix1bnNpZ25lZCBsb25nKix1bnNpZ25lZCBsb25n
Kix1bnNpZ25lZCBsb25nKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjQmluZGluZ0lucUF1dGhJbmZvQShSUENfQklORElOR19IQU5ETEUsdW5zaWduZWQgY2hh
cioqLHVuc2lnbmVkIGxvbmcqLHVuc2lnbmVkIGxvbmcqLFJQQ19BVVRIX0lERU5USVRZX0hBTkRM
RSosdW5zaWduZWQgbG9uZyopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFJwY0JpbmRpbmdJbnFBdXRoSW5mb1coUlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIHNo
b3J0KiosdW5zaWduZWQgbG9uZyosdW5zaWduZWQgbG9uZyosUlBDX0FVVEhfSURFTlRJVFlfSEFO
RExFKix1bnNpZ25lZCBsb25nKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgUnBjQmluZGluZ1NldEF1dGhJbmZvQShSUENfQklORElOR19IQU5ETEUsdW5zaWduZWQg
Y2hhciosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nLFJQQ19BVVRIX0lERU5USVRZX0hBTkRM
RSx1bnNpZ25lZCBsb25nKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBScGNCaW5kaW5nU2V0QXV0aEluZm9FeEEoUlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIGNo
YXIqLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgbG9uZyxSUENfQVVUSF9JREVOVElUWV9IQU5ETEUs
dW5zaWduZWQgbG9uZyxSUENfU0VDVVJJVFlfUU9TKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUnBjQmluZGluZ1NldEF1dGhJbmZvVyhSUENfQklORElOR19IQU5E
TEUsdW5zaWduZWQgc2hvcnQqLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgbG9uZyxSUENfQVVUSF9J
REVOVElUWV9IQU5ETEUsdW5zaWduZWQgbG9uZyk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUnBjQmluZGluZ1NldEF1dGhJbmZvRXhXKFJQQ19CSU5ESU5HX0hBTkRM
RSx1bnNpZ25lZCBzaG9ydCosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nLFJQQ19BVVRIX0lE
RU5USVRZX0hBTkRMRSx1bnNpZ25lZCBsb25nLFJQQ19TRUNVUklUWV9RT1MqKTsNClJQQ19TVEFU
VVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNCaW5kaW5nSW5xQXV0aEluZm9FeEEo
UlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIGNoYXIqKix1bnNpZ25lZCBsb25nKix1bnNpZ25l
ZCBsb25nKixSUENfQVVUSF9JREVOVElUWV9IQU5ETEUqLHVuc2lnbmVkIGxvbmcqLHVuc2lnbmVk
IGxvbmcsUlBDX1NFQ1VSSVRZX1FPUyopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFJwY0JpbmRpbmdJbnFBdXRoSW5mb0V4VyhSUENfQklORElOR19IQU5ETEUsdW5z
aWduZWQgc2hvcnQgKiogLCB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgKiwgUlBDX0FV
VEhfSURFTlRJVFlfSEFORExFICosIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAsIFJQ
Q19TRUNVUklUWV9RT1MgKik7DQp0eXBlZGVmIHZvaWQoX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSAqUlBDX0FVVEhfS0VZX1JFVFJJRVZBTF9GTikodm9pZCosdW5zaWduZWQgc2hvcnQqLHVu
c2lnbmVkIGxvbmcsdm9pZCoqLFJQQ19TVEFUVVMqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBScGNTZXJ2ZXJSZWdpc3RlckF1dGhJbmZvQSh1bnNpZ25lZCBjaGFy
Kix1bnNpZ25lZCBsb25nLFJQQ19BVVRIX0tFWV9SRVRSSUVWQUxfRk4sdm9pZCopOw0KUlBDX1NU
QVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlclJlZ2lzdGVyQXV0aElu
Zm9XKHVuc2lnbmVkIHNob3J0Kix1bnNpZ25lZCBsb25nLFJQQ19BVVRIX0tFWV9SRVRSSUVWQUxf
Rk4sdm9pZCopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFV1aWRU
b1N0cmluZ0EoVVVJRCosdW5zaWduZWQgY2hhcioqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBVdWlkRnJvbVN0cmluZ0EodW5zaWduZWQgY2hhciosVVVJRCopOw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFV1aWRUb1N0cmluZ1coVVVJ
RCosdW5zaWduZWQgc2hvcnQqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgVXVpZEZyb21TdHJpbmdXKHVuc2lnbmVkIHNob3J0KixVVUlEKik7DQpSUENfU1RBVFVT
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjRXBSZWdpc3Rlck5vUmVwbGFjZUEoUlBD
X0lGX0hBTkRMRSxSUENfQklORElOR19WRUNUT1IqLFVVSURfVkVDVE9SKix1bnNpZ25lZCBjaGFy
Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjRXBSZWdpc3Rl
ck5vUmVwbGFjZVcoUlBDX0lGX0hBTkRMRSxSUENfQklORElOR19WRUNUT1IqLCBVVUlEX1ZFQ1RP
UiosdW5zaWduZWQgc2hvcnQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBScGNFcFJlZ2lzdGVyQShSUENfSUZfSEFORExFLFJQQ19CSU5ESU5HX1ZFQ1RPUiosVVVJ
RF9WRUNUT1IqLHVuc2lnbmVkIGNoYXIqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNFcFJlZ2lzdGVyVyhSUENfSUZfSEFORExFLFJQQ19CSU5ESU5HX1ZFQ1RP
UiosVVVJRF9WRUNUT1IqLHVuc2lnbmVkIHNob3J0Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgRGNlRXJyb3JJbnFUZXh0QShSUENfU1RBVFVTLHVuc2lnbmVkIGNo
YXIqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEY2VFcnJvcklu
cVRleHRXKFJQQ19TVEFUVVMsdW5zaWduZWQgc2hvcnQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBScGNNZ210RXBFbHRJbnFOZXh0QShSUENfRVBfSU5RX0hBTkRM
RSxSUENfSUZfSUQqLFJQQ19CSU5ESU5HX0hBTkRMRSosVVVJRCosdW5zaWduZWQgY2hhcioqKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNNZ210RXBFbHRJbnFO
ZXh0VyhSUENfRVBfSU5RX0hBTkRMRSxSUENfSUZfSUQqLFJQQ19CSU5ESU5HX0hBTkRMRSosVVVJ
RCosdW5zaWduZWQgc2hvcnQqKik7DQojIDMyNiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9y
cGNkY2UuaCIgMw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0Jp
bmRpbmdDb3B5KFJQQ19CSU5ESU5HX0hBTkRMRSxSUENfQklORElOR19IQU5ETEUqKTsNClJQQ19T
VEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNCaW5kaW5nRnJlZShSUENfQklO
RElOR19IQU5ETEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBS
cGNCaW5kaW5nSW5xT2JqZWN0KFJQQ19CSU5ESU5HX0hBTkRMRSxVVUlEICopOw0KUlBDX1NUQVRV
UyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0JpbmRpbmdSZXNldChSUENfQklORElO
R19IQU5ETEUpOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0Jp
bmRpbmdTZXRPYmplY3QoUlBDX0JJTkRJTkdfSEFORExFLFVVSUQgKik7DQpSUENfU1RBVFVTIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTWdtdElucURlZmF1bHRQcm90ZWN0TGV2ZWwo
dW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nICopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJwY0JpbmRpbmdWZWN0b3JGcmVlKFJQQ19CSU5ESU5HX1ZFQ1RPUiAq
Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjSWZJbnFJZChS
UENfSUZfSEFORExFLFJQQ19JRl9JRCAqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBScGNNZ210SW5xQ29tVGltZW91dChSUENfQklORElOR19IQU5ETEUsdW5zaWdu
ZWQgaW50Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTWdt
dFNldENvbVRpbWVvdXQoUlBDX0JJTkRJTkdfSEFORExFLHVuc2lnbmVkIGludCk7DQpSUENfU1RB
VFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTWdtdFNldENhbmNlbFRpbWVvdXQo
bG9uZyBUaW1lb3V0KTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBS
cGNPYmplY3RJbnFUeXBlKFVVSUQgKixVVUlEICopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFJwY09iamVjdFNldElucUZuKFJQQ19PQkpFQ1RfSU5RX0ZOICopOw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY09iamVjdFNldFR5cGUo
VVVJRCAqLFVVSUQgKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UnBjUHJvdHNlcVZlY3RvckZyZWVBKFJQQ19QUk9UU0VRX1ZFQ1RPUkEgKiopOw0KUlBDX1NUQVRV
UyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlcklucUlmKFJQQ19JRl9IQU5E
TEUsVVVJRCosdm9pZCoqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBScGNTZXJ2ZXJMaXN0ZW4odW5zaWduZWQgaW50LHVuc2lnbmVkIGludCx1bnNpZ25lZCBpbnQp
Ow0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlclJlZ2lz
dGVySWYoUlBDX0lGX0hBTkRMRSxVVUlEKix2b2lkKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUnBjU2VydmVyUmVnaXN0ZXJJZkV4KFJQQ19JRl9IQU5ETEUsVVVJ
RCosdm9pZCosdW5zaWduZWQgaW50LHVuc2lnbmVkIGludCxSUENfSUZfQ0FMTEJBQ0tfRk4qKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNTZXJ2ZXJVbnJlZ2lz
dGVySWYoUlBDX0lGX0hBTkRMRSxVVUlEKix1bnNpZ25lZCBpbnQpOw0KUlBDX1NUQVRVUyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlclVzZUFsbFByb3RzZXFzKHVuc2lnbmVk
IGludCx2b2lkKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBj
U2VydmVyVXNlQWxsUHJvdHNlcXNFeCh1bnNpZ25lZCBpbnQsdm9pZCosUFJQQ19QT0xJQ1kpOw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlclVzZUFsbFBy
b3RzZXFzSWYodW5zaWduZWQgaW50LFJQQ19JRl9IQU5ETEUsdm9pZCopOw0KUlBDX1NUQVRVUyBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY1NlcnZlclVzZUFsbFByb3RzZXFzSWZFeCh1
bnNpZ25lZCBpbnQsUlBDX0lGX0hBTkRMRSx2b2lkKixQUlBDX1BPTElDWSk7DQpSUENfU1RBVFVT
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTWdtdFN0YXRzVmVjdG9yRnJlZShSUENf
U1RBVFNfVkVDVE9SKiopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJwY01nbXRJbnFTdGF0cyhSUENfQklORElOR19IQU5ETEUsUlBDX1NUQVRTX1ZFQ1RPUioqKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNNZ210SXNTZXJ2ZXJM
aXN0ZW5pbmcoUlBDX0JJTkRJTkdfSEFORExFKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBScGNNZ210U3RvcFNlcnZlckxpc3RlbmluZyhSUENfQklORElOR19IQU5E
TEUpOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY01nbXRXYWl0
U2VydmVyTGlzdGVuKHZvaWQpOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFJwY01nbXRTZXRTZXJ2ZXJTdGFja1NpemUodW5zaWduZWQgbG9uZyk7DQp2b2lkIF9fYXR0
cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjU3NEb250U2VyaWFsaXplQ29udGV4dCh2b2lkKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNNZ210RW5hYmxlSWRs
ZUNsZWFudXAodm9pZCk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UnBjTWdtdElucUlmSWRzKFJQQ19CSU5ESU5HX0hBTkRMRSxSUENfSUZfSURfVkVDVE9SKiopOw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0lmSWRWZWN0b3JGcmVl
KFJQQ19JRl9JRF9WRUNUT1IqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2Fs
bF9fKSkgUnBjRXBSZXNvbHZlQmluZGluZyhSUENfQklORElOR19IQU5ETEUsUlBDX0lGX0hBTkRM
RSk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjQmluZGluZ1Nl
cnZlckZyb21DbGllbnQoUlBDX0JJTkRJTkdfSEFORExFLFJQQ19CSU5ESU5HX0hBTkRMRSopOw0K
X19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjUmFpc2VFeGNlcHRpb24oUlBDX1NUQVRVUyk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUnBjVGVzdENhbmNlbCgpOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0NhbmNlbFRocmVhZCh2b2lkKik7DQpSUENfU1RBVFVTIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVXVpZENyZWF0ZShVVUlEKik7DQpzaWduZWQgaW50
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgVXVpZENvbXBhcmUoVVVJRCosVVVJRCosIFJQ
Q19TVEFUVVMqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVdWlk
Q3JlYXRlTmlsKFVVSUQqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFV1aWRF
cXVhbChVVUlEKixVVUlEKiwgUlBDX1NUQVRVUyopOw0KdW5zaWduZWQgc2hvcnQgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBVdWlkSGFzaChVVUlEKixSUENfU1RBVFVTKik7DQppbnQgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBVdWlkSXNOaWwoVVVJRCosUlBDX1NUQVRVUyopOw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY0VwVW5yZWdpc3RlcihS
UENfSUZfSEFORExFLFJQQ19CSU5ESU5HX1ZFQ1RPUiosVVVJRF9WRUNUT1IqKTsNClJQQ19TVEFU
VVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNNZ210RXBFbHRJbnFCZWdpbihSUENf
QklORElOR19IQU5ETEUsdW5zaWduZWQgbG9uZyxSUENfSUZfSUQqLHVuc2lnbmVkIGxvbmcsVVVJ
RCosUlBDX0VQX0lOUV9IQU5ETEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBScGNNZ210RXBFbHRJbnFEb25lKFJQQ19FUF9JTlFfSEFORExFKik7DQpSUENfU1RB
VFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTWdtdEVwVW5yZWdpc3RlcihSUENf
QklORElOR19IQU5ETEUsUlBDX0lGX0lEKixSUENfQklORElOR19IQU5ETEUsVVVJRCopOw0KUlBD
X1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY01nbXRTZXRBdXRob3JpemF0
aW9uRm4oUlBDX01HTVRfQVVUSE9SSVpBVElPTl9GTik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgUnBjTWdtdElucVBhcmFtZXRlcih1bnNpZ25lZCBpbnQsdW5zaWdu
ZWQgbG9uZyopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY01n
bXRTZXRQYXJhbWV0ZXIodW5zaWduZWQgaW50LHVuc2lnbmVkIGxvbmcpOw0KUlBDX1NUQVRVUyBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY01nbXRCaW5kaW5nSW5xUGFyYW1ldGVyKFJQ
Q19CSU5ESU5HX0hBTkRMRSx1bnNpZ25lZCBpbnQsdW5zaWduZWQgbG9uZyopOw0KUlBDX1NUQVRV
UyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY01nbXRCaW5kaW5nU2V0UGFyYW1ldGVy
KFJQQ19CSU5ESU5HX0hBTkRMRSx1bnNpZ25lZCBpbnQsdW5zaWduZWQgbG9uZyk7DQojIDEgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvcnBjZGNlcC5oIiAxIDMNCg0KDQoNCmV4dGVybiAiQyIg
ew0KIyAxOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9ycGNkY2VwLmgiIDMNCnR5cGVkZWYg
c3RydWN0IF9SUENfVkVSU0lPTiB7DQogICAgICAgIHVuc2lnbmVkIHNob3J0IE1ham9yVmVyc2lv
bjsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgTWlub3JWZXJzaW9uOw0KfSBSUENfVkVSU0lPTjsN
CnR5cGVkZWYgc3RydWN0IF9SUENfU1lOVEFYX0lERU5USUZJRVIgew0KICAgICAgICBHVUlEIFN5
bnRheEdVSUQ7DQogICAgICAgIFJQQ19WRVJTSU9OIFN5bnRheFZlcnNpb247DQp9IFJQQ19TWU5U
QVhfSURFTlRJRklFUiwgKlBSUENfU1lOVEFYX0lERU5USUZJRVI7DQp0eXBlZGVmIHN0cnVjdCBf
UlBDX01FU1NBR0Ugew0KICAgICAgICBIQU5ETEUgSGFuZGxlOw0KICAgICAgICB1bnNpZ25lZCBs
b25nIERhdGFSZXByZXNlbnRhdGlvbjsNCiAgICAgICAgdm9pZCAqQnVmZmVyOw0KICAgICAgICB1
bnNpZ25lZCBpbnQgQnVmZmVyTGVuZ3RoOw0KICAgICAgICB1bnNpZ25lZCBpbnQgUHJvY051bTsN
CiAgICAgICAgUFJQQ19TWU5UQVhfSURFTlRJRklFUiBUcmFuc2ZlclN5bnRheDsNCiAgICAgICAg
dm9pZCAqUnBjSW50ZXJmYWNlSW5mb3JtYXRpb247DQogICAgICAgIHZvaWQgKlJlc2VydmVkRm9y
UnVudGltZTsNCiAgICAgICAgdm9pZCAqTWFuYWdlckVwdjsNCiAgICAgICAgdm9pZCAqSW1wb3J0
Q29udGV4dDsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBScGNGbGFnczsNCn0gUlBDX01FU1NBR0Us
KlBSUENfTUVTU0FHRTsNCnR5cGVkZWYgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJQQ19GT1JXQVJEX0ZVTkNUSU9OKEdVSUQqLFJQQ19WRVJTSU9OKixHVUlEKix1bnNpZ25lZCBj
aGFyKix2b2lkKiopOw0KdHlwZWRlZiB2b2lkKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
KlJQQ19ESVNQQVRDSF9GVU5DVElPTikgKCBQUlBDX01FU1NBR0UgTWVzc2FnZSk7DQp0eXBlZGVm
IHN0cnVjdCB7DQogICAgICAgIHVuc2lnbmVkIGludCBEaXNwYXRjaFRhYmxlQ291bnQ7DQogICAg
ICAgIFJQQ19ESVNQQVRDSF9GVU5DVElPTiAqRGlzcGF0Y2hUYWJsZTsNCiAgICAgICAgaW50IFJl
c2VydmVkOw0KfSBSUENfRElTUEFUQ0hfVEFCTEUsKlBSUENfRElTUEFUQ0hfVEFCTEU7DQp0eXBl
ZGVmIHN0cnVjdCBfUlBDX1BST1RTRVFfRU5EUE9JTlQgew0KICAgICAgICB1bnNpZ25lZCBjaGFy
ICpScGNQcm90b2NvbFNlcXVlbmNlOw0KICAgICAgICB1bnNpZ25lZCBjaGFyICpFbmRwb2ludDsN
Cn0gUlBDX1BST1RTRVFfRU5EUE9JTlQsKlBSUENfUFJPVFNFUV9FTkRQT0lOVDsNCnR5cGVkZWYg
c3RydWN0IF9SUENfU0VSVkVSX0lOVEVSRkFDRSB7DQogICAgICAgIHVuc2lnbmVkIGludCBMZW5n
dGg7DQogICAgICAgIFJQQ19TWU5UQVhfSURFTlRJRklFUiBJbnRlcmZhY2VJZDsNCiAgICAgICAg
UlBDX1NZTlRBWF9JREVOVElGSUVSIFRyYW5zZmVyU3ludGF4Ow0KICAgICAgICBQUlBDX0RJU1BB
VENIX1RBQkxFIERpc3BhdGNoVGFibGU7DQogICAgICAgIHVuc2lnbmVkIGludCBScGNQcm90c2Vx
RW5kcG9pbnRDb3VudDsNCiAgICAgICAgUFJQQ19QUk9UU0VRX0VORFBPSU5UIFJwY1Byb3RzZXFF
bmRwb2ludDsNCiAgICAgICAgdm9pZCAqRGVmYXVsdE1hbmFnZXJFcHY7DQogICAgICAgIHZvaWQg
Y29uc3QgKkludGVycHJldGVySW5mbzsNCn0gUlBDX1NFUlZFUl9JTlRFUkZBQ0UsKlBSUENfU0VS
VkVSX0lOVEVSRkFDRTsNCnR5cGVkZWYgc3RydWN0IF9SUENfQ0xJRU5UX0lOVEVSRkFDRSB7DQog
ICAgICAgIHVuc2lnbmVkIGludCBMZW5ndGg7DQogICAgICAgIFJQQ19TWU5UQVhfSURFTlRJRklF
UiBJbnRlcmZhY2VJZDsNCiAgICAgICAgUlBDX1NZTlRBWF9JREVOVElGSUVSIFRyYW5zZmVyU3lu
dGF4Ow0KICAgICAgICBQUlBDX0RJU1BBVENIX1RBQkxFIERpc3BhdGNoVGFibGU7DQogICAgICAg
IHVuc2lnbmVkIGludCBScGNQcm90c2VxRW5kcG9pbnRDb3VudDsNCiAgICAgICAgUFJQQ19QUk9U
U0VRX0VORFBPSU5UIFJwY1Byb3RzZXFFbmRwb2ludDsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBS
ZXNlcnZlZDsNCiAgICAgICAgdm9pZCBjb25zdCAqSW50ZXJwcmV0ZXJJbmZvOw0KfSBSUENfQ0xJ
RU5UX0lOVEVSRkFDRSwqUFJQQ19DTElFTlRfSU5URVJGQUNFOw0KdHlwZWRlZiB2b2lkICpJX1JQ
Q19NVVRFWDsNCnR5cGVkZWYgc3RydWN0IF9SUENfVFJBTlNGRVJfU1lOVEFYIHsNCiAgICAgICAg
R1VJRCBVdWlkOw0KICAgICAgICB1bnNpZ25lZCBzaG9ydCBWZXJzTWFqb3I7DQogICAgICAgIHVu
c2lnbmVkIHNob3J0IFZlcnNNaW5vcjsNCn0gUlBDX1RSQU5TRkVSX1NZTlRBWDsNCnR5cGVkZWYg
bG9uZyhfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpICpSUENfQkxPQ0tJTkdfRlVOQ1RJT04p
KHZvaWQqLHZvaWQqKTsNCg0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBj
R2V0QnVmZmVyKFJQQ19NRVNTQUdFKik7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgSV9ScGNTZW5kUmVjZWl2ZShSUENfTUVTU0FHRSopOw0KbG9uZyBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIElfUnBjRnJlZUJ1ZmZlcihSUENfTUVTU0FHRSopOw0Kdm9pZCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBjUmVxdWVzdE11dGV4KElfUlBDX01VVEVYKik7DQp2
b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNDbGVhck11dGV4KElfUlBDX01V
VEVYKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJX1JwY0RlbGV0ZU11dGV4
KElfUlBDX01VVEVYKTsNCl9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgdm9pZCAqSV9ScGNB
bGxvY2F0ZSh1bnNpZ25lZCBpbnQpOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IElfUnBjRnJlZSh2b2lkKik7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9S
cGNQYXVzZUV4ZWN1dGlvbih1bnNpZ25lZCBsb25nKTsNCnR5cGVkZWYgdm9pZChfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpICpQUlBDX1JVTkRPV04pICh2b2lkKik7DQpsb25nIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNNb25pdG9yQXNzb2NpYXRpb24oSEFORExFLFBSUENf
UlVORE9XTix2b2lkKik7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNT
dG9wTW9uaXRvckFzc29jaWF0aW9uKEhBTkRMRSk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBJX1JwY0dldEN1cnJlbnRDYWxsSGFuZGxlKHZvaWQpOw0KbG9uZyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBjR2V0QXNzb2NpYXRpb25Db250ZXh0KHZvaWQqKik7
DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNTZXRBc3NvY2lhdGlvbkNv
bnRleHQodm9pZCopOw0KDQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNO
c0JpbmRpbmdTZXRFbnRyeU5hbWUoSEFORExFLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgc2hvcnQq
KTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJX1JwY0JpbmRpbmdJbnFEeW5h
bWljRW5kcG9pbnQoSEFORExFLCB1bnNpZ25lZCBzaG9ydCoqKTsNCg0KDQoNCg0KbG9uZyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBjQmluZGluZ0lucVRyYW5zcG9ydFR5cGUoSEFO
RExFLHVuc2lnbmVkIGludCopOw0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElf
UnBjSWZJbnFUcmFuc2ZlclN5bnRheGVzKEhBTkRMRSxSUENfVFJBTlNGRVJfU1lOVEFYKix1bnNp
Z25lZCBpbnQsdW5zaWduZWQgaW50Kik7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgSV9VdWlkQ3JlYXRlKEdVSUQqKTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBJX1JwY0JpbmRpbmdDb3B5KEhBTkRMRSxIQU5ETEUqKTsNCmxvbmcgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBJX1JwY0JpbmRpbmdJc0NsaWVudExvY2FsKEhBTkRMRSx1bnNpZ25lZCBp
bnQqKTsNCnZvaWQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBJX1JwY1NzRG9udFNlcmlh
bGl6ZUNvbnRleHQodm9pZCk7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9S
cGNTZXJ2ZXJSZWdpc3RlckZvcndhcmRGdW5jdGlvbihSUENfRk9SV0FSRF9GVU5DVElPTiopOw0K
bG9uZyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBjQ29ubmVjdGlvbklucVNvY2tC
dWZmU2l6ZSh1bnNpZ25lZCBsb25nKix1bnNpZ25lZCBsb25nKik7DQpsb25nIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgSV9ScGNDb25uZWN0aW9uU2V0U29ja0J1ZmZTaXplKHVuc2lnbmVk
IGxvbmcsdW5zaWduZWQgbG9uZyk7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
SV9ScGNCaW5kaW5nU2V0QXN5bmMoSEFORExFLFJQQ19CTE9DS0lOR19GVU5DVElPTik7DQpsb25n
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNBc3luY1NlbmRSZWNlaXZlKFJQQ19N
RVNTQUdFKix2b2lkKik7DQpsb25nIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNH
ZXRUaHJlYWRXaW5kb3dIYW5kbGUodm9pZCoqKTsNCmxvbmcgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBJX1JwY1NlcnZlclRocmVhZFBhdXNlTGlzdGVuaW5nKCk7DQpsb25nIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNTZXJ2ZXJUaHJlYWRDb250aW51ZUxpc3RlbmluZygp
Ow0KbG9uZyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIElfUnBjU2VydmVyVW5yZWdpc3Rl
ckVuZHBvaW50QSh1bnNpZ25lZCBjaGFyKix1bnNpZ25lZCBjaGFyKik7DQpsb25nIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgSV9ScGNTZXJ2ZXJVbnJlZ2lzdGVyRW5kcG9pbnRXKHVuc2ln
bmVkIHNob3J0Kix1bnNpZ25lZCBzaG9ydCopOw0KDQoNCg0KDQoNCg0KfQ0KIyAzODEgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvcnBjZGNlLmgiIDIgMw0KDQp9DQojIDMwICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL3JwYy5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9ycGNuc2kuaCIgMSAzDQoNCg0KDQpleHRlcm4gIkMiIHsNCg0KdHlwZWRlZiB2b2lkICpSUENf
TlNfSEFORExFOw0KIyAxNiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9ycGNuc2kuaCIgMw0K
UlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zQmluZGluZ0V4cG9y
dEEodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKixSUENfSUZfSEFORExFLFJQQ19CSU5ESU5H
X1ZFQ1RPUiosVVVJRF9WRUNUT1IqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBScGNOc0JpbmRpbmdVbmV4cG9ydEEodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFy
KixSUENfSUZfSEFORExFLFVVSURfVkVDVE9SKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUnBjTnNCaW5kaW5nTG9va3VwQmVnaW5BKHVuc2lnbmVkIGxvbmcsdW5z
aWduZWQgY2hhciosUlBDX0lGX0hBTkRMRSxVVUlEKix1bnNpZ25lZCBsb25nLFJQQ19OU19IQU5E
TEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0JpbmRp
bmdMb29rdXBOZXh0KFJQQ19OU19IQU5ETEUsUlBDX0JJTkRJTkdfVkVDVE9SKiopOw0KUlBDX1NU
QVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zQmluZGluZ0xvb2t1cERvbmUo
UlBDX05TX0hBTkRMRSopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJwY05zR3JvdXBEZWxldGVBKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciopOw0KUlBDX1NU
QVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zR3JvdXBNYnJBZGRBKHVuc2ln
bmVkIGxvbmcsdW5zaWduZWQgY2hhciosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKik7DQpS
UENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNHcm91cE1iclJlbW92
ZUEodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKix1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNo
YXIqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0dyb3Vw
TWJySW5xQmVnaW5BKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciosdW5zaWduZWQgbG9uZyxS
UENfTlNfSEFORExFKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
UnBjTnNHcm91cE1icklucU5leHRBKFJQQ19OU19IQU5ETEUsdW5zaWduZWQgY2hhcioqKTsNClJQ
Q19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0dyb3VwTWJySW5xRG9u
ZShSUENfTlNfSEFORExFKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgUnBjTnNQcm9maWxlRGVsZXRlQSh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNoYXIqKTsNClJQ
Q19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc1Byb2ZpbGVFbHRBZGRB
KHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciosUlBDX0lGX0lEKix1bnNpZ25lZCBsb25nLHVu
c2lnbmVkIGNoYXIqLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciopOw0KUlBDX1NUQVRVUyBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zUHJvZmlsZUVsdFJlbW92ZUEodW5zaWdu
ZWQgbG9uZyx1bnNpZ25lZCBjaGFyKixSUENfSUZfSUQqLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQg
Y2hhciopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zUHJv
ZmlsZUVsdElucUJlZ2luQSh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNoYXIqLHVuc2lnbmVkIGxv
bmcsUlBDX0lGX0lEKix1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhcios
UlBDX05TX0hBTkRMRSopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFJwY05zUHJvZmlsZUVsdElucU5leHRBKFJQQ19OU19IQU5ETEUsUlBDX0lGX0lEKix1bnNpZ25l
ZCBjaGFyKiosdW5zaWduZWQgbG9uZyosdW5zaWduZWQgY2hhcioqKTsNClJQQ19TVEFUVVMgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc1Byb2ZpbGVFbHRJbnFEb25lKFJQQ19OU19I
QU5ETEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0Vu
dHJ5T2JqZWN0SW5xTmV4dCggUlBDX05TX0hBTkRMRSwgVVVJRCopOw0KUlBDX1NUQVRVUyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zRW50cnlPYmplY3RJbnFEb25lKCBSUENfTlNf
SEFORExFKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNF
bnRyeUV4cGFuZE5hbWVBKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciosdW5zaWduZWQgY2hh
cioqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc01nbXRC
aW5kaW5nVW5leHBvcnRBKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgY2hhciosUlBDX0lGX0lEKix1
bnNpZ25lZCBsb25nLFVVSURfVkVDVE9SKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgUnBjTnNNZ210RW50cnlDcmVhdGVBKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQg
Y2hhciopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zTWdt
dEVudHJ5RGVsZXRlQSh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNoYXIqKTsNClJQQ19TVEFUVVMg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc01nbXRFbnRyeUlucUlmSWRzQSh1bnNp
Z25lZCBsb25nLHVuc2lnbmVkIGNoYXIqLFJQQ19JRl9JRF9WRUNUT1IqKik7DQpSUENfU1RBVFVT
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNNZ210SGFuZGxlU2V0RXhwQWdlKFJQ
Q19OU19IQU5ETEUsdW5zaWduZWQgbG9uZyk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgUnBjTnNNZ210SW5xRXhwQWdlKHVuc2lnbmVkIGxvbmcqKTsNClJQQ19TVEFU
VVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc01nbXRTZXRFeHBBZ2UodW5zaWdu
ZWQgbG9uZyk7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNC
aW5kaW5nSW1wb3J0TmV4dChSUENfTlNfSEFORExFLFJQQ19CSU5ESU5HX0hBTkRMRSopOw0KUlBD
X1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zQmluZGluZ0ltcG9ydERv
bmUoUlBDX05TX0hBTkRMRSopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFJwY05zQmluZGluZ1NlbGVjdChSUENfQklORElOR19WRUNUT1IqLFJQQ19CSU5ESU5HX0hB
TkRMRSopOw0KDQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNF
bnRyeU9iamVjdElucUJlZ2luQSh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNoYXIqLFJQQ19OU19I
QU5ETEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0Jp
bmRpbmdJbXBvcnRCZWdpbkEodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBjaGFyKixSUENfSUZfSEFO
RExFLFVVSUQqLFJQQ19OU19IQU5ETEUqKTsNCg0KDQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUnBjTnNCaW5kaW5nRXhwb3J0Vyh1bnNpZ25lZCBsb25nLHVuc2lnbmVk
IHNob3J0KixSUENfSUZfSEFORExFLFJQQ19CSU5ESU5HX1ZFQ1RPUiosVVVJRF9WRUNUT1IqKTsN
ClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0JpbmRpbmdVbmV4
cG9ydFcodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBzaG9ydCosUlBDX0lGX0hBTkRMRSxVVUlEX1ZF
Q1RPUiopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zQmlu
ZGluZ0xvb2t1cEJlZ2luVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0KixSUENfSUZfSEFO
RExFLFVVSUQqLHVuc2lnbmVkIGxvbmcsUlBDX05TX0hBTkRMRSopOw0KUlBDX1NUQVRVUyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zR3JvdXBEZWxldGVXKHVuc2lnbmVkIGxvbmcs
dW5zaWduZWQgc2hvcnQqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBScGNOc0dyb3VwTWJyQWRkVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0Kix1bnNpZ25l
ZCBsb25nLHVuc2lnbmVkIHNob3J0Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgUnBjTnNHcm91cE1iclJlbW92ZVcodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBzaG9y
dCosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBzaG9ydCopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zR3JvdXBNYnJJbnFCZWdpblcodW5zaWduZWQgbG9uZyx1
bnNpZ25lZCBzaG9ydCosdW5zaWduZWQgbG9uZyxSUENfTlNfSEFORExFKik7DQpSUENfU1RBVFVT
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNHcm91cE1icklucU5leHRXKFJQQ19O
U19IQU5ETEUsdW5zaWduZWQgc2hvcnQqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgUnBjTnNQcm9maWxlRGVsZXRlVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNo
b3J0Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNQcm9m
aWxlRWx0QWRkVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0KiwgUlBDX0lGX0lEKix1bnNp
Z25lZCBsb25nLHVuc2lnbmVkIHNob3J0Kix1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0Kik7
DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNQcm9maWxlRWx0
UmVtb3ZlVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0KiwgUlBDX0lGX0lEKix1bnNpZ25l
ZCBsb25nLHVuc2lnbmVkIHNob3J0Kik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgUnBjTnNQcm9maWxlRWx0SW5xQmVnaW5XKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQg
c2hvcnQqLCB1bnNpZ25lZCBsb25nLFJQQ19JRl9JRCosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBs
b25nLHVuc2lnbmVkIHNob3J0KiwgUlBDX05TX0hBTkRMRSopOw0KUlBDX1NUQVRVUyBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05zUHJvZmlsZUVsdElucU5leHRXKFJQQ19OU19IQU5E
TEUsUlBDX0lGX0lEKiwgdW5zaWduZWQgc2hvcnQqKix1bnNpZ25lZCBsb25nKix1bnNpZ25lZCBz
aG9ydCoqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0Vu
dHJ5T2JqZWN0SW5xQmVnaW5XKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgc2hvcnQqLFJQQ19OU19I
QU5ETEUqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNOc0Vu
dHJ5RXhwYW5kTmFtZVcodW5zaWduZWQgbG9uZyx1bnNpZ25lZCBzaG9ydCosdW5zaWduZWQgc2hv
cnQqKik7DQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNNZ210
QmluZGluZ1VuZXhwb3J0Vyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0KixSUENfSUZfSUQq
LHVuc2lnbmVkIGxvbmcsVVVJRF9WRUNUT1IqKTsNClJQQ19TVEFUVVMgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBScGNOc01nbXRFbnRyeUNyZWF0ZVcodW5zaWduZWQgbG9uZyx1bnNpZ25l
ZCBzaG9ydCopOw0KUlBDX1NUQVRVUyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFJwY05z
TWdtdEVudHJ5RGVsZXRlVyh1bnNpZ25lZCBsb25nLHVuc2lnbmVkIHNob3J0Kik7DQpSUENfU1RB
VFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNNZ210RW50cnlJbnFJZklkc1co
dW5zaWduZWQgbG9uZyx1bnNpZ25lZCBzaG9ydCAsIFJQQ19JRl9JRF9WRUNUT1IqKik7DQpSUENf
U1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBjTnNCaW5kaW5nSW1wb3J0QmVn
aW5XKHVuc2lnbmVkIGxvbmcsdW5zaWduZWQgc2hvcnQqLFJQQ19JRl9IQU5ETEUsVVVJRCosUlBD
X05TX0hBTkRMRSopOw0KIyAxMTYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvcnBjbnNpLmgi
IDMNCn0NCiMgMzEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvcnBjLmgiIDIgMw0KIyAxICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3JwY250ZXJyLmgiIDEgMw0KIyAzMiAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9ycGMuaCIgMiAzDQojIDQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL3JwYy5oIiAzDQpSUENfU1RBVFVTIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUnBj
SW1wZXJzb25hdGVDbGllbnQoUlBDX0JJTkRJTkdfSEFORExFKTsNClJQQ19TVEFUVVMgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBScGNSZXZlcnRUb1NlbGYoKTsNCmxvbmcgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBJX1JwY01hcFdpbjMyU3RhdHVzKFJQQ19TVEFUVVMpOw0KDQp9
DQojIDEzNSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KIyAxICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3NoZWxsYXBpLmgiIDEgMw0KDQoNCg0KZXh0ZXJuICJD
IiB7DQojIDg4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3NoZWxsYXBpLmgiIDMNCnR5cGVk
ZWYgV09SRCBGSUxFT1BfRkxBR1M7DQp0eXBlZGVmIFdPUkQgUFJJTlRFUk9QX0ZMQUdTOw0KdHlw
ZWRlZiBzdHJ1Y3QgX0FwcEJhckRhdGEgew0KICAgICAgICBEV09SRCBjYlNpemU7DQogICAgICAg
IEhXTkQgaFduZDsNCiAgICAgICAgVUlOVCB1Q2FsbGJhY2tNZXNzYWdlOw0KICAgICAgICBVSU5U
IHVFZGdlOw0KICAgICAgICBSRUNUIHJjOw0KICAgICAgICBMUEFSQU0gbFBhcmFtOw0KfSBBUFBC
QVJEQVRBLCpQQVBQQkFSREFUQTsNCnR5cGVkZWYgc3RydWN0IEhEUk9QX197aW50IGk7fSpIRFJP
UDsNCnR5cGVkZWYgc3RydWN0IF9OT1RJRllJQ09OREFUQUEgew0KICAgICAgICBEV09SRCBjYlNp
emU7DQogICAgICAgIEhXTkQgaFduZDsNCiAgICAgICAgVUlOVCB1SUQ7DQogICAgICAgIFVJTlQg
dUZsYWdzOw0KICAgICAgICBVSU5UIHVDYWxsYmFja01lc3NhZ2U7DQogICAgICAgIEhJQ09OIGhJ
Y29uOw0KICAgICAgICBDSEFSIHN6VGlwWzY0XTsNCn0gTk9USUZZSUNPTkRBVEFBLCpQTk9USUZZ
SUNPTkRBVEFBOw0KdHlwZWRlZiBzdHJ1Y3QgX05PVElGWUlDT05EQVRBVyB7DQogICAgICAgIERX
T1JEIGNiU2l6ZTsNCiAgICAgICAgSFdORCBoV25kOw0KICAgICAgICBVSU5UIHVJRDsNCiAgICAg
ICAgVUlOVCB1RmxhZ3M7DQogICAgICAgIFVJTlQgdUNhbGxiYWNrTWVzc2FnZTsNCiAgICAgICAg
SElDT04gaEljb247DQogICAgICAgIFdDSEFSIHN6VGlwWzY0XTsNCn0gTk9USUZZSUNPTkRBVEFX
LCpQTk9USUZZSUNPTkRBVEFXOw0KdHlwZWRlZiBzdHJ1Y3QgX1NIRUxMRVhFQ1VURUlORk9BIHsN
CiAgICAgICAgRFdPUkQgY2JTaXplOw0KICAgICAgICBVTE9ORyBmTWFzazsNCiAgICAgICAgSFdO
RCBod25kOw0KICAgICAgICBMUENTVFIgbHBWZXJiOw0KICAgICAgICBMUENTVFIgbHBGaWxlOw0K
ICAgICAgICBMUENTVFIgbHBQYXJhbWV0ZXJzOw0KICAgICAgICBMUENTVFIgbHBEaXJlY3Rvcnk7
DQogICAgICAgIGludCBuU2hvdzsNCiAgICAgICAgSElOU1RBTkNFIGhJbnN0QXBwOw0KICAgICAg
ICBQVk9JRCBscElETGlzdDsNCiAgICAgICAgTFBDU1RSIGxwQ2xhc3M7DQogICAgICAgIEhLRVkg
aGtleUNsYXNzOw0KICAgICAgICBEV09SRCBkd0hvdEtleTsNCiAgICAgICAgSEFORExFIGhJY29u
Ow0KICAgICAgICBIQU5ETEUgaFByb2Nlc3M7DQp9IFNIRUxMRVhFQ1VURUlORk9BLCpMUFNIRUxM
RVhFQ1VURUlORk9BOw0KdHlwZWRlZiBzdHJ1Y3QgX1NIRUxMRVhFQ1VURUlORk9XIHsNCiAgICAg
ICAgRFdPUkQgY2JTaXplOw0KICAgICAgICBVTE9ORyBmTWFzazsNCiAgICAgICAgSFdORCBod25k
Ow0KICAgICAgICBMUENXU1RSIGxwVmVyYjsNCiAgICAgICAgTFBDV1NUUiBscEZpbGU7DQogICAg
ICAgIExQQ1dTVFIgbHBQYXJhbWV0ZXJzOw0KICAgICAgICBMUENXU1RSIGxwRGlyZWN0b3J5Ow0K
ICAgICAgICBpbnQgblNob3c7DQogICAgICAgIEhJTlNUQU5DRSBoSW5zdEFwcDsNCiAgICAgICAg
UFZPSUQgbHBJRExpc3Q7DQogICAgICAgIExQQ1dTVFIgbHBDbGFzczsNCiAgICAgICAgSEtFWSBo
a2V5Q2xhc3M7DQogICAgICAgIERXT1JEIGR3SG90S2V5Ow0KICAgICAgICBIQU5ETEUgaEljb247
DQogICAgICAgIEhBTkRMRSBoUHJvY2VzczsNCn0gU0hFTExFWEVDVVRFSU5GT1csKkxQU0hFTExF
WEVDVVRFSU5GT1c7DQp0eXBlZGVmIHN0cnVjdCBfU0hGSUxFT1BTVFJVQ1RBIHsNCiAgICAgICAg
SFdORCBod25kOw0KICAgICAgICBVSU5UIHdGdW5jOw0KICAgICAgICBMUENTVFIgcEZyb207DQog
ICAgICAgIExQQ1NUUiBwVG87DQogICAgICAgIEZJTEVPUF9GTEFHUyBmRmxhZ3M7DQogICAgICAg
IEJPT0wgZkFueU9wZXJhdGlvbnNBYm9ydGVkOw0KICAgICAgICBQVk9JRCBoTmFtZU1hcHBpbmdz
Ow0KICAgICAgICBMUENTVFIgbHBzelByb2dyZXNzVGl0bGU7DQp9IFNIRklMRU9QU1RSVUNUQSwq
TFBTSEZJTEVPUFNUUlVDVEE7DQp0eXBlZGVmIHN0cnVjdCBfU0hGSUxFT1BTVFJVQ1RXIHsNCiAg
ICAgICAgSFdORCBod25kOw0KICAgICAgICBVSU5UIHdGdW5jOw0KICAgICAgICBMUENXU1RSIHBG
cm9tOw0KICAgICAgICBMUENXU1RSIHBUbzsNCiAgICAgICAgRklMRU9QX0ZMQUdTIGZGbGFnczsN
CiAgICAgICAgQk9PTCBmQW55T3BlcmF0aW9uc0Fib3J0ZWQ7DQogICAgICAgIFBWT0lEIGhOYW1l
TWFwcGluZ3M7DQogICAgICAgIExQQ1dTVFIgbHBzelByb2dyZXNzVGl0bGU7DQp9IFNIRklMRU9Q
U1RSVUNUVywqTFBTSEZJTEVPUFNUUlVDVFc7DQp0eXBlZGVmIHN0cnVjdCBfU0hGSUxFSU5GT0Eg
ew0KICAgICAgICBISUNPTiBoSWNvbjsNCiAgICAgICAgaW50IGlJY29uOw0KICAgICAgICBEV09S
RCBkd0F0dHJpYnV0ZXM7DQogICAgICAgIENIQVIgc3pEaXNwbGF5TmFtZVsyNjBdOw0KICAgICAg
ICBDSEFSIHN6VHlwZU5hbWVbODBdOw0KfSBTSEZJTEVJTkZPQTsNCnR5cGVkZWYgc3RydWN0IF9T
SEZJTEVJTkZPVyB7DQogICAgICAgIEhJQ09OIGhJY29uOw0KICAgICAgICBpbnQgaUljb247DQog
ICAgICAgIERXT1JEIGR3QXR0cmlidXRlczsNCiAgICAgICAgV0NIQVIgc3pEaXNwbGF5TmFtZVsy
NjBdOw0KICAgICAgICBXQ0hBUiBzelR5cGVOYW1lWzgwXTsNCn0gU0hGSUxFSU5GT1c7DQoNCkxQ
V1NUUiAqIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29tbWFuZExpbmVUb0FyZ3ZXKExQ
Q1dTVFIsaW50Kik7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhZ0FjY2Vw
dEZpbGVzKEhXTkQsQk9PTCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJh
Z0ZpbmlzaChIRFJPUCk7DQpVSU5UIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRHJhZ1F1
ZXJ5RmlsZUEoSERST1AsVUlOVCxMUFNUUixVSU5UKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBEcmFnUXVlcnlGaWxlVyhIRFJPUCxVSU5ULExQV1NUUixVSU5UKTsNCkJPT0wg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEcmFnUXVlcnlQb2ludChIRFJPUCxMUFBPSU5U
KTsNCkhJQ09OIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXh0cmFjdEFzc29jaWF0ZWRJ
Y29uQShISU5TVEFOQ0UsTFBDU1RSLFBXT1JEKTsNCkhJQ09OIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgRXh0cmFjdEFzc29jaWF0ZWRJY29uVyhISU5TVEFOQ0UsTFBDV1NUUixQV09SRCk7
DQpISUNPTiBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEV4dHJhY3RJY29uQShISU5TVEFO
Q0UsTFBDU1RSLFVJTlQpOw0KSElDT04gX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFeHRy
YWN0SWNvblcoSElOU1RBTkNFLExQQ1dTVFIsVUlOVCk7DQpISUNPTiBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEV4dHJhY3RJY29uRXhBKExQQ1NUUixpbnQsSElDT04qLEhJQ09OKixVSU5U
KTsNCkhJQ09OIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRXh0cmFjdEljb25FeFcoTFBD
V1NUUixpbnQsSElDT04qLEhJQ09OKixVSU5UKTsNCkhJTlNUQU5DRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEZpbmRFeGVjdXRhYmxlQShMUENTVFIsTFBDU1RSLExQU1RSKTsNCkhJTlNU
QU5DRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEZpbmRFeGVjdXRhYmxlVyhMUENXU1RS
LExQQ1dTVFIsTFBXU1RSKTsNClVJTlQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTSEFw
cEJhck1lc3NhZ2UoRFdPUkQsUEFQUEJBUkRBVEEpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNoZWxsX05vdGlmeUljb25BKERXT1JELFBOT1RJRllJQ09OREFUQUEpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNoZWxsX05vdGlmeUljb25XKERXT1JELFBO
T1RJRllJQ09OREFUQVcpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2hlbGxB
Ym91dEEoSFdORCxMUENTVFIsTFBDU1RSLEhJQ09OKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIFNoZWxsQWJvdXRXKEhXTkQsTFBDV1NUUixMUENXU1RSLEhJQ09OKTsNCkhJTlNU
QU5DRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNoZWxsRXhlY3V0ZUEoSFdORCxMUENT
VFIsTFBDU1RSLExQQ1NUUixMUENTVFIsSU5UKTsNCkhJTlNUQU5DRSBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFNoZWxsRXhlY3V0ZVcoSFdORCxMUENXU1RSLExQQ1dTVFIsTFBDV1NUUixM
UENXU1RSLElOVCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2hlbGxFeGVj
dXRlRXhBKExQU0hFTExFWEVDVVRFSU5GT0EpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIFNoZWxsRXhlY3V0ZUV4VyhMUFNIRUxMRVhFQ1VURUlORk9XKTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNIRmlsZU9wZXJhdGlvbkEoTFBTSEZJTEVPUFNUUlVDVEEp
Ow0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU0hGaWxlT3BlcmF0aW9uVyhMUFNI
RklMRU9QU1RSVUNUVyk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU0hGcmVl
TmFtZU1hcHBpbmdzKEhBTkRMRSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFNIR2V0RmlsZUluZm9BKExQQ1NUUixEV09SRCxTSEZJTEVJTkZPQSosVUlOVCxVSU5UKTsNCkRX
T1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU0hHZXRGaWxlSW5mb1coTFBDV1NUUixE
V09SRCxTSEZJTEVJTkZPVyosVUlOVCxVSU5UKTsNCiMgMjMyICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL3NoZWxsYXBpLmgiIDMNCnR5cGVkZWYgTk9USUZZSUNPTkRBVEFBIE5PVElGWUlDT05E
QVRBLCpQTk9USUZZSUNPTkRBVEE7DQp0eXBlZGVmIFNIRUxMRVhFQ1VURUlORk9BIFNIRUxMRVhF
Q1VURUlORk8sKkxQU0hFTExFWEVDVVRFSU5GTzsNCnR5cGVkZWYgU0hGSUxFT1BTVFJVQ1RBIFNI
RklMRU9QU1RSVUNULCpMUFNIRklMRU9QU1RSVUNUOw0KdHlwZWRlZiBTSEZJTEVJTkZPQSBTSEZJ
TEVJTkZPOw0KIyAyNDkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvc2hlbGxhcGkuaCIgMw0K
fQ0KIyAxMzYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAyIDMNCiMgMSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5wZXJmLmgiIDEgMw0KDQoNCg0KZXh0ZXJuICJD
IiB7DQojIDc0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnBlcmYuaCIgMw0KdHlwZWRl
ZiBzdHJ1Y3QgX1BFUkZfREFUQV9CTE9DSyB7DQogICAgICAgIFdDSEFSIFNpZ25hdHVyZVs0XTsN
CiAgICAgICAgRFdPUkQgTGl0dGxlRW5kaWFuOw0KICAgICAgICBEV09SRCBWZXJzaW9uOw0KICAg
ICAgICBEV09SRCBSZXZpc2lvbjsNCiAgICAgICAgRFdPUkQgVG90YWxCeXRlTGVuZ3RoOw0KICAg
ICAgICBEV09SRCBIZWFkZXJMZW5ndGg7DQogICAgICAgIERXT1JEIE51bU9iamVjdFR5cGVzOw0K
ICAgICAgICBMT05HIERlZmF1bHRPYmplY3Q7DQogICAgICAgIFNZU1RFTVRJTUUgU3lzdGVtVGlt
ZTsNCiAgICAgICAgTEFSR0VfSU5URUdFUiBQZXJmVGltZTsNCiAgICAgICAgTEFSR0VfSU5URUdF
UiBQZXJmRnJlcTsNCiAgICAgICAgTEFSR0VfSU5URUdFUiBQZXJmVGltZTEwMG5TZWM7DQogICAg
ICAgIERXT1JEIFN5c3RlbU5hbWVMZW5ndGg7DQogICAgICAgIERXT1JEIFN5c3RlbU5hbWVPZmZz
ZXQ7DQp9IFBFUkZfREFUQV9CTE9DSywgKlBQRVJGX0RBVEFfQkxPQ0s7DQp0eXBlZGVmIHN0cnVj
dCBfUEVSRl9PQkpFQ1RfVFlQRSB7DQogICAgICAgIERXT1JEIFRvdGFsQnl0ZUxlbmd0aDsNCiAg
ICAgICAgRFdPUkQgRGVmaW5pdGlvbkxlbmd0aDsNCiAgICAgICAgRFdPUkQgSGVhZGVyTGVuZ3Ro
Ow0KICAgICAgICBEV09SRCBPYmplY3ROYW1lVGl0bGVJbmRleDsNCiAgICAgICAgTFBXU1RSIE9i
amVjdE5hbWVUaXRsZTsNCiAgICAgICAgRFdPUkQgT2JqZWN0SGVscFRpdGxlSW5kZXg7DQogICAg
ICAgIExQV1NUUiBPYmplY3RIZWxwVGl0bGU7DQogICAgICAgIERXT1JEIERldGFpbExldmVsOw0K
ICAgICAgICBEV09SRCBOdW1Db3VudGVyczsNCiAgICAgICAgTE9ORyBEZWZhdWx0Q291bnRlcjsN
CiAgICAgICAgTE9ORyBOdW1JbnN0YW5jZXM7DQogICAgICAgIERXT1JEIENvZGVQYWdlOw0KICAg
ICAgICBMQVJHRV9JTlRFR0VSIFBlcmZUaW1lOw0KICAgICAgICBMQVJHRV9JTlRFR0VSIFBlcmZG
cmVxOw0KfSBQRVJGX09CSkVDVF9UWVBFLCAqUFBFUkZfT0JKRUNUX1RZUEU7DQp0eXBlZGVmIHN0
cnVjdCBfUEVSRl9DT1VOVEVSX0RFRklOSVRJT04gew0KICAgICAgICBEV09SRCBCeXRlTGVuZ3Ro
Ow0KICAgICAgICBEV09SRCBDb3VudGVyTmFtZVRpdGxlSW5kZXg7DQogICAgICAgIExQV1NUUiBD
b3VudGVyTmFtZVRpdGxlOw0KICAgICAgICBEV09SRCBDb3VudGVySGVscFRpdGxlSW5kZXg7DQog
ICAgICAgIExQV1NUUiBDb3VudGVySGVscFRpdGxlOw0KICAgICAgICBMT05HIERlZmF1bHRTY2Fs
ZTsNCiAgICAgICAgRFdPUkQgRGV0YWlsTGV2ZWw7DQogICAgICAgIERXT1JEIENvdW50ZXJUeXBl
Ow0KICAgICAgICBEV09SRCBDb3VudGVyU2l6ZTsNCiAgICAgICAgRFdPUkQgQ291bnRlck9mZnNl
dDsNCn0gUEVSRl9DT1VOVEVSX0RFRklOSVRJT04sKlBQRVJGX0NPVU5URVJfREVGSU5JVElPTjsN
CnR5cGVkZWYgc3RydWN0IF9QRVJGX0lOU1RBTkNFX0RFRklOSVRJT04gew0KICAgICAgICBEV09S
RCBCeXRlTGVuZ3RoOw0KICAgICAgICBEV09SRCBQYXJlbnRPYmplY3RUaXRsZUluZGV4Ow0KICAg
ICAgICBEV09SRCBQYXJlbnRPYmplY3RJbnN0YW5jZTsNCiAgICAgICAgTE9ORyBVbmlxdWVJRDsN
CiAgICAgICAgRFdPUkQgTmFtZU9mZnNldDsNCiAgICAgICAgRFdPUkQgTmFtZUxlbmd0aDsNCn0g
UEVSRl9JTlNUQU5DRV9ERUZJTklUSU9OLCpQUEVSRl9JTlNUQU5DRV9ERUZJTklUSU9OOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1BFUkZfQ09VTlRFUl9CTE9DSyB7DQogICAgICAgIERXT1JEIEJ5dGVMZW5n
dGg7DQp9IFBFUkZfQ09VTlRFUl9CTE9DSywgKlBQRVJGX0NPVU5URVJfQkxPQ0s7DQp0eXBlZGVm
IERXT1JEKF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUE1fT1BFTl9QUk9DKShMUFdTVFIp
Ow0KdHlwZWRlZiBEV09SRChfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFBNX0NPTExFQ1Rf
UFJPQykoTFBXU1RSLFBWT0lEKixQRFdPUkQsUERXT1JEKTsNCnR5cGVkZWYgRFdPUkQoX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBQTV9DTE9TRV9QUk9DKSh2b2lkKTsNCg0KfQ0KIyAxMzcg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luZG93cy5oIiAyIDMNCiMgMSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS93aW5zcG9vbC5oIiAxIDMNCg0KDQoNCmV4dGVybiAiQyIgew0KIyAy
MTcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luc3Bvb2wuaCIgMw0KdHlwZWRlZiBzdHJ1
Y3QgX0FEREpPQl9JTkZPXzFBIHsNCiAgICAgICAgTFBTVFIgUGF0aDsNCiAgICAgICAgRFdPUkQg
Sm9iSWQ7DQp9IEFEREpPQl9JTkZPXzFBLCpQQURESk9CX0lORk9fMUEsKkxQQURESk9CX0lORk9f
MUE7DQp0eXBlZGVmIHN0cnVjdCBfQURESk9CX0lORk9fMVcgew0KICAgICAgICBMUFdTVFIgUGF0
aDsNCiAgICAgICAgRFdPUkQgSm9iSWQ7DQp9IEFEREpPQl9JTkZPXzFXLCpQQURESk9CX0lORk9f
MVcsKkxQQURESk9CX0lORk9fMVc7DQp0eXBlZGVmIHN0cnVjdCBfREFUQVRZUEVTX0lORk9fMUF7
TFBTVFIgcE5hbWU7fSBEQVRBVFlQRVNfSU5GT18xQSwqUERBVEFUWVBFU19JTkZPXzFBLCpMUERB
VEFUWVBFU19JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX0RBVEFUWVBFU19JTkZPXzFXe0xQV1NU
UiBwTmFtZTt9IERBVEFUWVBFU19JTkZPXzFXLCpQREFUQVRZUEVTX0lORk9fMVcsKkxQREFUQVRZ
UEVTX0lORk9fMVc7DQp0eXBlZGVmIHN0cnVjdCBfSk9CX0lORk9fMUEgew0KICAgICAgICBEV09S
RCBKb2JJZDsNCiAgICAgICAgTFBTVFIgcFByaW50ZXJOYW1lOw0KICAgICAgICBMUFNUUiBwTWFj
aGluZU5hbWU7DQogICAgICAgIExQU1RSIHBVc2VyTmFtZTsNCiAgICAgICAgTFBTVFIgcERvY3Vt
ZW50Ow0KICAgICAgICBMUFNUUiBwRGF0YXR5cGU7DQogICAgICAgIExQU1RSIHBTdGF0dXM7DQog
ICAgICAgIERXT1JEIFN0YXR1czsNCiAgICAgICAgRFdPUkQgUHJpb3JpdHk7DQogICAgICAgIERX
T1JEIFBvc2l0aW9uOw0KICAgICAgICBEV09SRCBUb3RhbFBhZ2VzOw0KICAgICAgICBEV09SRCBQ
YWdlc1ByaW50ZWQ7DQogICAgICAgIFNZU1RFTVRJTUUgU3VibWl0dGVkOw0KfSBKT0JfSU5GT18x
QSwqUEpPQl9JTkZPXzFBLCpMUEpPQl9JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX0pPQl9JTkZP
XzFXIHsNCiAgICAgICAgRFdPUkQgSm9iSWQ7DQogICAgICAgIExQV1NUUiBwUHJpbnRlck5hbWU7
DQogICAgICAgIExQV1NUUiBwTWFjaGluZU5hbWU7DQogICAgICAgIExQV1NUUiBwVXNlck5hbWU7
DQogICAgICAgIExQV1NUUiBwRG9jdW1lbnQ7DQogICAgICAgIExQV1NUUiBwRGF0YXR5cGU7DQog
ICAgICAgIExQV1NUUiBwU3RhdHVzOw0KICAgICAgICBEV09SRCBTdGF0dXM7DQogICAgICAgIERX
T1JEIFByaW9yaXR5Ow0KICAgICAgICBEV09SRCBQb3NpdGlvbjsNCiAgICAgICAgRFdPUkQgVG90
YWxQYWdlczsNCiAgICAgICAgRFdPUkQgUGFnZXNQcmludGVkOw0KICAgICAgICBTWVNURU1USU1F
IFN1Ym1pdHRlZDsNCn0gSk9CX0lORk9fMVcsKlBKT0JfSU5GT18xVywqTFBKT0JfSU5GT18xVzsN
CnR5cGVkZWYgc3RydWN0IF9KT0JfSU5GT18yQSB7DQogICAgICAgIERXT1JEIEpvYklkOw0KICAg
ICAgICBMUFNUUiBwUHJpbnRlck5hbWU7DQogICAgICAgIExQU1RSIHBNYWNoaW5lTmFtZTsNCiAg
ICAgICAgTFBTVFIgcFVzZXJOYW1lOw0KICAgICAgICBMUFNUUiBwRG9jdW1lbnQ7DQogICAgICAg
IExQU1RSIHBOb3RpZnlOYW1lOw0KICAgICAgICBMUFNUUiBwRGF0YXR5cGU7DQogICAgICAgIExQ
U1RSIHBQcmludFByb2Nlc3NvcjsNCiAgICAgICAgTFBTVFIgcFBhcmFtZXRlcnM7DQogICAgICAg
IExQU1RSIHBEcml2ZXJOYW1lOw0KICAgICAgICBMUERFVk1PREVBIHBEZXZNb2RlOw0KICAgICAg
ICBMUFNUUiBwU3RhdHVzOw0KICAgICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlE
ZXNjcmlwdG9yOw0KICAgICAgICBEV09SRCBTdGF0dXM7DQogICAgICAgIERXT1JEIFByaW9yaXR5
Ow0KICAgICAgICBEV09SRCBQb3NpdGlvbjsNCiAgICAgICAgRFdPUkQgU3RhcnRUaW1lOw0KICAg
ICAgICBEV09SRCBVbnRpbFRpbWU7DQogICAgICAgIERXT1JEIFRvdGFsUGFnZXM7DQogICAgICAg
IERXT1JEIFNpemU7DQogICAgICAgIFNZU1RFTVRJTUUgU3VibWl0dGVkOw0KICAgICAgICBEV09S
RCBUaW1lOw0KICAgICAgICBEV09SRCBQYWdlc1ByaW50ZWQ7DQp9IEpPQl9JTkZPXzJBLCpQSk9C
X0lORk9fMkEsKkxQSk9CX0lORk9fMkE7DQp0eXBlZGVmIHN0cnVjdCBfSk9CX0lORk9fMlcgew0K
ICAgICAgICBEV09SRCBKb2JJZDsNCiAgICAgICAgTFBXU1RSIHBQcmludGVyTmFtZTsNCiAgICAg
ICAgTFBXU1RSIHBNYWNoaW5lTmFtZTsNCiAgICAgICAgTFBXU1RSIHBVc2VyTmFtZTsNCiAgICAg
ICAgTFBXU1RSIHBEb2N1bWVudDsNCiAgICAgICAgTFBXU1RSIHBOb3RpZnlOYW1lOw0KICAgICAg
ICBMUFdTVFIgcERhdGF0eXBlOw0KICAgICAgICBMUFdTVFIgcFByaW50UHJvY2Vzc29yOw0KICAg
ICAgICBMUFdTVFIgcFBhcmFtZXRlcnM7DQogICAgICAgIExQV1NUUiBwRHJpdmVyTmFtZTsNCiAg
ICAgICAgTFBERVZNT0RFVyBwRGV2TW9kZTsNCiAgICAgICAgTFBXU1RSIHBTdGF0dXM7DQogICAg
ICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3I7DQogICAgICAgIERX
T1JEIFN0YXR1czsNCiAgICAgICAgRFdPUkQgUHJpb3JpdHk7DQogICAgICAgIERXT1JEIFBvc2l0
aW9uOw0KICAgICAgICBEV09SRCBTdGFydFRpbWU7DQogICAgICAgIERXT1JEIFVudGlsVGltZTsN
CiAgICAgICAgRFdPUkQgVG90YWxQYWdlczsNCiAgICAgICAgRFdPUkQgU2l6ZTsNCiAgICAgICAg
U1lTVEVNVElNRSBTdWJtaXR0ZWQ7DQogICAgICAgIERXT1JEIFRpbWU7DQogICAgICAgIERXT1JE
IFBhZ2VzUHJpbnRlZDsNCn0gSk9CX0lORk9fMlcsKlBKT0JfSU5GT18yVywqTFBKT0JfSU5GT18y
VzsNCnR5cGVkZWYgc3RydWN0IF9ET0NfSU5GT18xQSB7DQogICAgICAgIExQU1RSIHBEb2NOYW1l
Ow0KICAgICAgICBMUFNUUiBwT3V0cHV0RmlsZTsNCiAgICAgICAgTFBTVFIgcERhdGF0eXBlOw0K
fSBET0NfSU5GT18xQSwqUERPQ19JTkZPXzFBLCpMUERPQ19JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1
Y3QgX0RPQ19JTkZPXzFXIHsNCiAgICAgICAgTFBXU1RSIHBEb2NOYW1lOw0KICAgICAgICBMUFdT
VFIgcE91dHB1dEZpbGU7DQogICAgICAgIExQV1NUUiBwRGF0YXR5cGU7DQp9IERPQ19JTkZPXzFX
LCpQRE9DX0lORk9fMVcsKkxQRE9DX0lORk9fMVc7DQp0eXBlZGVmIHN0cnVjdCBfRE9DX0lORk9f
MkEgew0KICAgICAgICBMUFNUUiBwRG9jTmFtZTsNCiAgICAgICAgTFBTVFIgcE91dHB1dEZpbGU7
DQogICAgICAgIExQU1RSIHBEYXRhdHlwZTsNCiAgICAgICAgRFdPUkQgZHdNb2RlOw0KICAgICAg
ICBEV09SRCBKb2JJZDsNCn0gRE9DX0lORk9fMkEsKlBET0NfSU5GT18yQSwqTFBET0NfSU5GT18y
QTsNCnR5cGVkZWYgc3RydWN0IF9ET0NfSU5GT18yVyB7DQogICAgICAgIExQV1NUUiBwRG9jTmFt
ZTsNCiAgICAgICAgTFBXU1RSIHBPdXRwdXRGaWxlOw0KICAgICAgICBMUFdTVFIgcERhdGF0eXBl
Ow0KICAgICAgICBEV09SRCBkd01vZGU7DQogICAgICAgIERXT1JEIEpvYklkOw0KfSBET0NfSU5G
T18yVywqUERPQ19JTkZPXzJXLCpMUERPQ19JTkZPXzJXOw0KdHlwZWRlZiBzdHJ1Y3QgX0RSSVZF
Ul9JTkZPXzFBIHtMUFNUUiBwTmFtZTt9IERSSVZFUl9JTkZPXzFBLCpQRFJJVkVSX0lORk9fMUEs
KkxQRFJJVkVSX0lORk9fMUE7DQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fMVcge0xQV1NU
UiBwTmFtZTt9IERSSVZFUl9JTkZPXzFXLCpQRFJJVkVSX0lORk9fMVcsKkxQRFJJVkVSX0lORk9f
MVc7DQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fMkEgew0KICAgICAgICBEV09SRCBjVmVy
c2lvbjsNCiAgICAgICAgTFBTVFIgcE5hbWU7DQogICAgICAgIExQU1RSIHBFbnZpcm9ubWVudDsN
CiAgICAgICAgTFBTVFIgcERyaXZlclBhdGg7DQogICAgICAgIExQU1RSIHBEYXRhRmlsZTsNCiAg
ICAgICAgTFBTVFIgcENvbmZpZ0ZpbGU7DQp9IERSSVZFUl9JTkZPXzJBLCpQRFJJVkVSX0lORk9f
MkEsKkxQRFJJVkVSX0lORk9fMkE7DQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fMlcgew0K
ICAgICAgICBEV09SRCBjVmVyc2lvbjsNCiAgICAgICAgTFBXU1RSIHBOYW1lOw0KICAgICAgICBM
UFdTVFIgcEVudmlyb25tZW50Ow0KICAgICAgICBMUFdTVFIgcERyaXZlclBhdGg7DQogICAgICAg
IExQV1NUUiBwRGF0YUZpbGU7DQogICAgICAgIExQV1NUUiBwQ29uZmlnRmlsZTsNCn0gRFJJVkVS
X0lORk9fMlcsKlBEUklWRVJfSU5GT18yVywqTFBEUklWRVJfSU5GT18yVzsNCnR5cGVkZWYgc3Ry
dWN0IF9EUklWRVJfSU5GT18zQSB7DQogICAgICAgIERXT1JEIGNWZXJzaW9uOw0KICAgICAgICBM
UFNUUiBwTmFtZTsNCiAgICAgICAgTFBTVFIgcEVudmlyb25tZW50Ow0KICAgICAgICBMUFNUUiBw
RHJpdmVyUGF0aDsNCiAgICAgICAgTFBTVFIgcERhdGFGaWxlOw0KICAgICAgICBMUFNUUiBwQ29u
ZmlnRmlsZTsNCiAgICAgICAgTFBTVFIgcEhlbHBGaWxlOw0KICAgICAgICBMUFNUUiBwRGVwZW5k
ZW50RmlsZXM7DQogICAgICAgIExQU1RSIHBNb25pdG9yTmFtZTsNCiAgICAgICAgTFBTVFIgcERl
ZmF1bHREYXRhVHlwZTsNCn0gRFJJVkVSX0lORk9fM0EsKlBEUklWRVJfSU5GT18zQSwqTFBEUklW
RVJfSU5GT18zQTsNCnR5cGVkZWYgc3RydWN0IF9EUklWRVJfSU5GT18zVyB7DQogICAgICAgIERX
T1JEIGNWZXJzaW9uOw0KICAgICAgICBMUFdTVFIgcE5hbWU7DQogICAgICAgIExQV1NUUiBwRW52
aXJvbm1lbnQ7DQogICAgICAgIExQV1NUUiBwRHJpdmVyUGF0aDsNCiAgICAgICAgTFBXU1RSIHBE
YXRhRmlsZTsNCiAgICAgICAgTFBXU1RSIHBDb25maWdGaWxlOw0KICAgICAgICBMUFdTVFIgcEhl
bHBGaWxlOw0KICAgICAgICBMUFdTVFIgcERlcGVuZGVudEZpbGVzOw0KICAgICAgICBMUFdTVFIg
cE1vbml0b3JOYW1lOw0KICAgICAgICBMUFdTVFIgcERlZmF1bHREYXRhVHlwZTsNCn0gRFJJVkVS
X0lORk9fM1csKlBEUklWRVJfSU5GT18zVywqTFBEUklWRVJfSU5GT18zVzsNCnR5cGVkZWYgc3Ry
dWN0IF9NT05JVE9SX0lORk9fMUF7TFBTVFIgcE5hbWU7fSBNT05JVE9SX0lORk9fMUEsKlBNT05J
VE9SX0lORk9fMUEsKkxQTU9OSVRPUl9JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX01PTklUT1Jf
SU5GT18xV3tMUFdTVFIgcE5hbWU7fSBNT05JVE9SX0lORk9fMVcsKlBNT05JVE9SX0lORk9fMVcs
KkxQTU9OSVRPUl9JTkZPXzFXOw0KdHlwZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18xQSB7TFBTVFIg
cE5hbWU7fSBQT1JUX0lORk9fMUEsKlBQT1JUX0lORk9fMUEsKkxQUE9SVF9JTkZPXzFBOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18xVyB7TFBXU1RSIHBOYW1lO30gUE9SVF9JTkZPXzFXLCpQ
UE9SVF9JTkZPXzFXLCpMUFBPUlRfSU5GT18xVzsNCnR5cGVkZWYgc3RydWN0IF9NT05JVE9SX0lO
Rk9fMkF7DQogICAgICAgIExQU1RSIHBOYW1lOw0KICAgICAgICBMUFNUUiBwRW52aXJvbm1lbnQ7
DQogICAgICAgIExQU1RSIHBETExOYW1lOw0KfSBNT05JVE9SX0lORk9fMkEsKlBNT05JVE9SX0lO
Rk9fMkEsKkxQTU9OSVRPUl9JTkZPXzJBOw0KdHlwZWRlZiBzdHJ1Y3QgX01PTklUT1JfSU5GT18y
V3sNCiAgICAgICAgTFBXU1RSIHBOYW1lOw0KICAgICAgICBMUFdTVFIgcEVudmlyb25tZW50Ow0K
ICAgICAgICBMUFdTVFIgcERMTE5hbWU7DQp9IE1PTklUT1JfSU5GT18yVywqUE1PTklUT1JfSU5G
T18yVywqTFBNT05JVE9SX0lORk9fMlc7DQp0eXBlZGVmIHN0cnVjdCBfUE9SVF9JTkZPXzJBIHsN
CiAgICAgICAgTFBTVFIgcFBvcnROYW1lOw0KICAgICAgICBMUFNUUiBwTW9uaXRvck5hbWU7DQog
ICAgICAgIExQU1RSIHBEZXNjcmlwdGlvbjsNCiAgICAgICAgRFdPUkQgZlBvcnRUeXBlOw0KICAg
ICAgICBEV09SRCBSZXNlcnZlZDsNCn0gUE9SVF9JTkZPXzJBLCpQUE9SVF9JTkZPXzJBLCpMUFBP
UlRfSU5GT18yQTsNCnR5cGVkZWYgc3RydWN0IF9QT1JUX0lORk9fMlcgew0KICAgICAgICBMUFdT
VFIgcFBvcnROYW1lOw0KICAgICAgICBMUFdTVFIgcE1vbml0b3JOYW1lOw0KICAgICAgICBMUFdT
VFIgcERlc2NyaXB0aW9uOw0KICAgICAgICBEV09SRCBmUG9ydFR5cGU7DQogICAgICAgIERXT1JE
IFJlc2VydmVkOw0KfSBQT1JUX0lORk9fMlcsKlBQT1JUX0lORk9fMlcsKkxQUE9SVF9JTkZPXzJX
Ow0KdHlwZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18zQSB7DQogICAgICAgIERXT1JEIGR3U3RhdHVz
Ow0KICAgICAgICBMUFNUUiBwc3pTdGF0dXM7DQogICAgICAgIERXT1JEIGR3U2V2ZXJpdHk7DQp9
IFBPUlRfSU5GT18zQSwqUFBPUlRfSU5GT18zQSwqTFBQT1JUX0lORk9fM0E7DQp0eXBlZGVmIHN0
cnVjdCBfUE9SVF9JTkZPXzNXIHsNCiAgICAgICAgRFdPUkQgZHdTdGF0dXM7DQogICAgICAgIExQ
V1NUUiBwc3pTdGF0dXM7DQogICAgICAgIERXT1JEIGR3U2V2ZXJpdHk7DQp9IFBPUlRfSU5GT18z
VywqUFBPUlRfSU5GT18zVywqTFBQT1JUX0lORk9fM1c7DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRF
Ul9JTkZPXzFBIHsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIExQU1RSIHBEZXNjcmlw
dGlvbjsNCiAgICAgICAgTFBTVFIgcE5hbWU7DQogICAgICAgIExQU1RSIHBDb21tZW50Ow0KfSBQ
UklOVEVSX0lORk9fMUEsKlBQUklOVEVSX0lORk9fMUEsKkxQUFJJTlRFUl9JTkZPXzFBOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT18xVyB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAg
ICAgICBMUFdTVFIgcERlc2NyaXB0aW9uOw0KICAgICAgICBMUFdTVFIgcE5hbWU7DQogICAgICAg
IExQV1NUUiBwQ29tbWVudDsNCn0gUFJJTlRFUl9JTkZPXzFXLCpQUFJJTlRFUl9JTkZPXzFXLCpM
UFBSSU5URVJfSU5GT18xVzsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fMkEgew0KICAg
ICAgICBMUFNUUiBwU2VydmVyTmFtZTsNCiAgICAgICAgTFBTVFIgcFByaW50ZXJOYW1lOw0KICAg
ICAgICBMUFNUUiBwU2hhcmVOYW1lOw0KICAgICAgICBMUFNUUiBwUG9ydE5hbWU7DQogICAgICAg
IExQU1RSIHBEcml2ZXJOYW1lOw0KICAgICAgICBMUFNUUiBwQ29tbWVudDsNCiAgICAgICAgTFBT
VFIgcExvY2F0aW9uOw0KICAgICAgICBMUERFVk1PREVBIHBEZXZNb2RlOw0KICAgICAgICBMUFNU
UiBwU2VwRmlsZTsNCiAgICAgICAgTFBTVFIgcFByaW50UHJvY2Vzc29yOw0KICAgICAgICBMUFNU
UiBwRGF0YXR5cGU7DQogICAgICAgIExQU1RSIHBQYXJhbWV0ZXJzOw0KICAgICAgICBQU0VDVVJJ
VFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yOw0KICAgICAgICBEV09SRCBBdHRyaWJ1
dGVzOw0KICAgICAgICBEV09SRCBQcmlvcml0eTsNCiAgICAgICAgRFdPUkQgRGVmYXVsdFByaW9y
aXR5Ow0KICAgICAgICBEV09SRCBTdGFydFRpbWU7DQogICAgICAgIERXT1JEIFVudGlsVGltZTsN
CiAgICAgICAgRFdPUkQgU3RhdHVzOw0KICAgICAgICBEV09SRCBjSm9iczsNCiAgICAgICAgRFdP
UkQgQXZlcmFnZVBQTTsNCn0gUFJJTlRFUl9JTkZPXzJBLCpQUFJJTlRFUl9JTkZPXzJBLCpMUFBS
SU5URVJfSU5GT18yQTsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fMlcgew0KICAgICAg
ICBMUFdTVFIgcFNlcnZlck5hbWU7DQogICAgICAgIExQV1NUUiBwUHJpbnRlck5hbWU7DQogICAg
ICAgIExQV1NUUiBwU2hhcmVOYW1lOw0KICAgICAgICBMUFdTVFIgcFBvcnROYW1lOw0KICAgICAg
ICBMUFdTVFIgcERyaXZlck5hbWU7DQogICAgICAgIExQV1NUUiBwQ29tbWVudDsNCiAgICAgICAg
TFBXU1RSIHBMb2NhdGlvbjsNCiAgICAgICAgTFBERVZNT0RFVyBwRGV2TW9kZTsNCiAgICAgICAg
TFBXU1RSIHBTZXBGaWxlOw0KICAgICAgICBMUFdTVFIgcFByaW50UHJvY2Vzc29yOw0KICAgICAg
ICBMUFdTVFIgcERhdGF0eXBlOw0KICAgICAgICBMUFdTVFIgcFBhcmFtZXRlcnM7DQogICAgICAg
IFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3I7DQogICAgICAgIERXT1JE
IEF0dHJpYnV0ZXM7DQogICAgICAgIERXT1JEIFByaW9yaXR5Ow0KICAgICAgICBEV09SRCBEZWZh
dWx0UHJpb3JpdHk7DQogICAgICAgIERXT1JEIFN0YXJ0VGltZTsNCiAgICAgICAgRFdPUkQgVW50
aWxUaW1lOw0KICAgICAgICBEV09SRCBTdGF0dXM7DQogICAgICAgIERXT1JEIGNKb2JzOw0KICAg
ICAgICBEV09SRCBBdmVyYWdlUFBNOw0KfSBQUklOVEVSX0lORk9fMlcsKlBQUklOVEVSX0lORk9f
MlcsKkxQUFJJTlRFUl9JTkZPXzJXOw0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT18zIHsN
CiAgICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvcjsNCn0gUFJJ
TlRFUl9JTkZPXzMsKlBQUklOVEVSX0lORk9fMywqTFBQUklOVEVSX0lORk9fMzsNCnR5cGVkZWYg
c3RydWN0IF9QUklOVEVSX0lORk9fNEEgew0KICAgICAgICBMUFNUUiBwUHJpbnRlck5hbWU7DQog
ICAgICAgIExQU1RSIHBTZXJ2ZXJOYW1lOw0KICAgICAgICBEV09SRCBBdHRyaWJ1dGVzOw0KfSBQ
UklOVEVSX0lORk9fNEEsKlBQUklOVEVSX0lORk9fNEEsKkxQUFJJTlRFUl9JTkZPXzRBOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT180VyB7DQogICAgICAgIExQV1NUUiBwUHJpbnRlck5h
bWU7DQogICAgICAgIExQV1NUUiBwU2VydmVyTmFtZTsNCiAgICAgICAgRFdPUkQgQXR0cmlidXRl
czsNCn0gUFJJTlRFUl9JTkZPXzRXLCpQUFJJTlRFUl9JTkZPXzRXLCpMUFBSSU5URVJfSU5GT180
VzsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fNUEgew0KICAgICAgICBMUFNUUiBwUHJp
bnRlck5hbWU7DQogICAgICAgIExQU1RSIHBQb3J0TmFtZTsNCiAgICAgICAgRFdPUkQgQXR0cmli
dXRlczsNCiAgICAgICAgRFdPUkQgRGV2aWNlTm90U2VsZWN0ZWRUaW1lb3V0Ow0KICAgICAgICBE
V09SRCBUcmFuc21pc3Npb25SZXRyeVRpbWVvdXQ7DQp9IFBSSU5URVJfSU5GT181QSwqUFBSSU5U
RVJfSU5GT181QSwqTFBQUklOVEVSX0lORk9fNUE7DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9J
TkZPXzVXIHsNCiAgICAgICAgTFBXU1RSIHBQcmludGVyTmFtZTsNCiAgICAgICAgTFBXU1RSIHBQ
b3J0TmFtZTsNCiAgICAgICAgRFdPUkQgQXR0cmlidXRlczsNCiAgICAgICAgRFdPUkQgRGV2aWNl
Tm90U2VsZWN0ZWRUaW1lb3V0Ow0KICAgICAgICBEV09SRCBUcmFuc21pc3Npb25SZXRyeVRpbWVv
dXQ7DQp9IFBSSU5URVJfSU5GT181VywqUFBSSU5URVJfSU5GT181VywqTFBQUklOVEVSX0lORk9f
NVc7DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRQUk9DRVNTT1JfSU5GT18xQSB7TFBTVFIgcE5hbWU7
fSBQUklOVFBST0NFU1NPUl9JTkZPXzFBLCpQUFJJTlRQUk9DRVNTT1JfSU5GT18xQSwqTFBQUklO
VFBST0NFU1NPUl9JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5UUFJPQ0VTU09SX0lORk9f
MVcge0xQV1NUUiBwTmFtZTt9IFBSSU5UUFJPQ0VTU09SX0lORk9fMVcsKlBQUklOVFBST0NFU1NP
Ul9JTkZPXzFXLCpMUFBSSU5UUFJPQ0VTU09SX0lORk9fMVc7DQp0eXBlZGVmIHN0cnVjdCBfUFJJ
TlRFUl9OT1RJRllfSU5GT19EQVRBIHsNCiAgICAgICAgV09SRCBUeXBlOw0KICAgICAgICBXT1JE
IEZpZWxkOw0KICAgICAgICBEV09SRCBSZXNlcnZlZDsNCiAgICAgICAgRFdPUkQgSWQ7DQogICAg
ICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBEV09SRCBhZHdEYXRhWzJdOw0KICAgICAgICAg
ICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBjYkJ1ZjsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIFBWT0lEIHBCdWY7DQogICAgICAgICAgICAgICAgfSBEYXRh
Ow0KICAgICAgICB9IE5vdGlmeURhdGE7DQp9IFBSSU5URVJfTk9USUZZX0lORk9fREFUQSwqUFBS
SU5URVJfTk9USUZZX0lORk9fREFUQSwqTFBQUklOVEVSX05PVElGWV9JTkZPX0RBVEE7DQp0eXBl
ZGVmIHN0cnVjdCBfUFJJTlRFUl9OT1RJRllfSU5GTyB7DQogICAgICAgIERXT1JEIFZlcnNpb247
DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBEV09SRCBDb3VudDsNCiAgICAgICAgUFJJ
TlRFUl9OT1RJRllfSU5GT19EQVRBIGFEYXRhWzFdOw0KfSBQUklOVEVSX05PVElGWV9JTkZPLCpQ
UFJJTlRFUl9OT1RJRllfSU5GTywqTFBQUklOVEVSX05PVElGWV9JTkZPOw0KdHlwZWRlZiBzdHJ1
Y3QgX0ZPUk1fSU5GT18xQSB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBMUFNUUiBw
TmFtZTsNCiAgICAgICAgU0laRUwgU2l6ZTsNCiAgICAgICAgUkVDVEwgSW1hZ2VhYmxlQXJlYTsN
Cn0gRk9STV9JTkZPXzFBLCpQRk9STV9JTkZPXzFBLCpMUEZPUk1fSU5GT18xQTsNCnR5cGVkZWYg
c3RydWN0IF9GT1JNX0lORk9fMVcgew0KICAgICAgICBEV09SRCBGbGFnczsNCiAgICAgICAgTFBX
U1RSIHBOYW1lOw0KICAgICAgICBTSVpFTCBTaXplOw0KICAgICAgICBSRUNUTCBJbWFnZWFibGVB
cmVhOw0KfSBGT1JNX0lORk9fMVcsKlBGT1JNX0lORk9fMVcsKkxQRk9STV9JTkZPXzFXOw0KdHlw
ZWRlZiBzdHJ1Y3QgX1BSSU5URVJfREVGQVVMVFNBIHsNCiAgICAgICAgTFBTVFIgcERhdGF0eXBl
Ow0KICAgICAgICBMUERFVk1PREUgcERldk1vZGU7DQogICAgICAgIEFDQ0VTU19NQVNLIERlc2ly
ZWRBY2Nlc3M7DQp9IFBSSU5URVJfREVGQVVMVFNBLCpQUFJJTlRFUl9ERUZBVUxUU0EsKkxQUFJJ
TlRFUl9ERUZBVUxUU0E7DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9ERUZBVUxUU1cgew0KICAg
ICAgICBMUFdTVFIgcERhdGF0eXBlOw0KICAgICAgICBMUERFVk1PREUgcERldk1vZGU7DQogICAg
ICAgIEFDQ0VTU19NQVNLIERlc2lyZWRBY2Nlc3M7DQp9IFBSSU5URVJfREVGQVVMVFNXLCpQUFJJ
TlRFUl9ERUZBVUxUU1csKkxQUFJJTlRFUl9ERUZBVUxUU1c7DQoNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBBYm9ydFByaW50ZXIoSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVf
XygoX19zdGRjYWxsX18pKSBBZGRGb3JtQShIQU5ETEUsRFdPUkQsUEJZVEUpOw0KQk9PTCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFkZEZvcm1XKEhBTkRMRSxEV09SRCxQQllURSk7DQpC
T09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWRkSm9iQShIQU5ETEUsRFdPUkQsUEJZ
VEUsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRK
b2JXKEhBTkRMRSxEV09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEFkZE1vbml0b3JBKExQU1RSLERXT1JELFBCWVRFKTsNCkJPT0wgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRNb25pdG9yVyhMUFdTVFIsRFdPUkQsUEJZVEUp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFkZFBvcnRBKExQU1RSLEhXTkQs
TFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFkZFBvcnRXKExQV1NU
UixIV05ELExQV1NUUik7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRQ
cmludGVyQShMUFNUUixEV09SRCxQQllURSk7DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBBZGRQcmludGVyVyhMUFdTVFIsRFdPUkQsUEJZVEUpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEFkZFByaW50ZXJDb25uZWN0aW9uQShMUFNUUik7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWRkUHJpbnRlckNvbm5lY3Rpb25XKExQV1NUUik7
DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQWRkUHJpbnRlckRyaXZlckEoTFBT
VFIsRFdPUkQsUEJZVEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEFkZFBy
aW50ZXJEcml2ZXJXKExQV1NUUixEV09SRCxQQllURSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgQWRkUHJpbnRQcm9jZXNzb3JBKExQU1RSLExQU1RSLExQU1RSLExQU1RSKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZGRQcmludFByb2Nlc3NvclcoTFBX
U1RSLExQV1NUUixMUFdTVFIsTFBXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBBZGRQcmludFByb3ZpZG9yQShMUFNUUixEV09SRCxQQllURSk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgQWRkUHJpbnRQcm92aWRvclcoTFBXU1RSLERXT1JELFBCWVRF
KTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZHZhbmNlZERvY3VtZW50UHJv
cGVydGllc0EoSFdORCxIQU5ETEUsTFBTVFIsUERFVk1PREUsUERFVk1PREVBKTsNCkxPTkcgX19h
dHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBBZHZhbmNlZERvY3VtZW50UHJvcGVydGllc1coSFdO
RCxIQU5ETEUsTFBXU1RSLFBERVZNT0RFLFBERVZNT0RFVyk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ2xvc2VQcmludGVyKEhBTkRMRSk7DQpCT09MIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgQ29uZmlndXJlUG9ydEEoTFBTVFIsSFdORCxMUFNUUik7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgQ29uZmlndXJlUG9ydFcoTFBXU1RSLEhXTkQsTFBX
U1RSKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIENvbm5lY3RUb1ByaW50
ZXJEbGcoSFdORCxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVs
ZXRlRm9ybUEoSEFORExFLExQU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBEZWxldGVGb3JtVyhIQU5ETEUsTFBXU1RSKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBEZWxldGVNb25pdG9yQShMUFNUUixMUFNUUixMUFNUUik7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRlTW9uaXRvclcoTFBXU1RSLExQV1NUUixMUFdTVFIp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZVBvcnRBKExQU1RSLEhX
TkQsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZVBvcnRX
KExQV1NUUixIV05ELExQV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
RGVsZXRlUHJpbnRlcihIQU5ETEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IERlbGV0ZVByaW50ZXJDb25uZWN0aW9uQShMUFNUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRGVsZXRlUHJpbnRlckNvbm5lY3Rpb25XKExQV1NUUik7DQpEV09SRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZVByaW50ZXJEYXRhQShIQU5ETEUsTFBTVFIp
Ow0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWxldGVQcmludGVyRGF0YVco
SEFORExFLExQV1NUUik7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRl
UHJpbnRlckRyaXZlckEoTFBTVFIsTFBTVFIsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIERlbGV0ZVByaW50ZXJEcml2ZXJXKExQV1NUUixMUFdTVFIsTFBXU1RSKTsN
CkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBEZWxldGVQcmludFByb2Nlc3NvckEo
TFBTVFIsTFBTVFIsTFBTVFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERl
bGV0ZVByaW50UHJvY2Vzc29yVyhMUFdTVFIsTFBXU1RSLExQV1NUUik7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgRGVsZXRlUHJpbnRQcm92aWRvckEoTFBTVFIsTFBTVFIsTFBT
VFIpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERlbGV0ZVByaW50UHJvdmlk
b3JXKExQV1NUUixMUFdTVFIsTFBXU1RSKTsNCkxPTkcgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBEb2N1bWVudFByb3BlcnRpZXNBKEhXTkQsSEFORExFLExQU1RSLFBERVZNT0RFQSxQREVW
TU9ERUEsRFdPUkQpOw0KTE9ORyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIERvY3VtZW50
UHJvcGVydGllc1coSFdORCxIQU5ETEUsTFBXU1RSLFBERVZNT0RFQSxQREVWTU9ERUEsRFdPUkQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVuZERvY1ByaW50ZXIoSEFORExF
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbmRQYWdlUHJpbnRlcihIQU5E
TEUpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Gb3Jtc0EoSEFORExF
LERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIEVudW1Gb3Jtc1coSEFORExFLERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQ
RFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Kb2JzQShIQU5E
TEUsRFdPUkQsRFdPUkQsRFdPUkQsUEJZVEUsRFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bUpvYnNXKEhBTkRMRSxEV09SRCxEV09SRCxE
V09SRCxQQllURSxEV09SRCxQRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBFbnVtTW9uaXRvcnNBKExQU1RSLERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQ
RFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Nb25pdG9yc1co
TFBXU1RSLERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0
ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1Qb3J0c0EoTFBTVFIsRFdPUkQsUEJZVEUsRFdPUkQsUERX
T1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bVBvcnRz
VyhMUFdTVFIsRFdPUkQsUEJZVEUsRFdPUkQsUERXT1JELFBEV09SRCk7DQpEV09SRCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1QcmludGVyRGF0YUEoSEFORExFLERXT1JELExQU1RS
LERXT1JELFBEV09SRCxQRFdPUkQsUEJZVEUsRFdPUkQsUERXT1JEKTsNCkRXT1JEIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgRW51bVByaW50ZXJEYXRhVyhIQU5ETEUsRFdPUkQsTFBXU1RS
LERXT1JELFBEV09SRCxQRFdPUkQsUEJZVEUsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1
dGVfXygoX19zdGRjYWxsX18pKSBFbnVtUHJpbnRlckRyaXZlcnNBKExQU1RSLExQU1RSLERXT1JE
LFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIEVudW1QcmludGVyRHJpdmVyc1coTFBXU1RSLExQV1NUUixEV09SRCxQQllURSxEV09S
RCxQRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBFbnVt
UHJpbnRlcnNBKERXT1JELExQU1RSLERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0K
Qk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVudW1QcmludGVyc1coRFdPUkQsTFBX
U1RSLERXT1JELFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIEVudW1QcmludFByb2Nlc3NvckRhdGF0eXBlc0EoTFBTVFIsTFBTVFIs
RFdPUkQsUEJZVEUsRFdPUkQsUERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRW51bVByaW50UHJvY2Vzc29yRGF0YXR5cGVzVyhMUFdTVFIsTFBXU1RSLERX
T1JELFBCWVRFLERXT1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0
ZGNhbGxfXykpIEVudW1QcmludFByb2Nlc3NvcnNBKExQU1RSLExQU1RSLERXT1JELFBCWVRFLERX
T1JELFBEV09SRCxQRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEVu
dW1QcmludFByb2Nlc3NvcnNXKExQV1NUUixMUFdTVFIsRFdPUkQsUEJZVEUsRFdPUkQsUERXT1JE
LFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmluZENsb3NlUHJp
bnRlckNoYW5nZU5vdGlmaWNhdGlvbihIQU5ETEUpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgRmluZEZpcnN0UHJpbnRlckNoYW5nZU5vdGlmaWNhdGlvbihIQU5ETEUsRFdP
UkQsRFdPUkQsUFZPSUQpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgRmlu
ZE5leHRQcmludGVyQ2hhbmdlTm90aWZpY2F0aW9uKEhBTkRMRSxQRFdPUkQsUFZPSUQsUFZPSUQq
KTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBGcmVlUHJpbnRlck5vdGlmeUlu
Zm8oUFBSSU5URVJfTk9USUZZX0lORk8pOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIEdldEZvcm1BKEhBTkRMRSxMUFNUUixEV09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KQk9P
TCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEZvcm1XKEhBTkRMRSxMUFdTVFIsRFdP
UkQsUEJZVEUsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18p
KSBHZXRKb2JBKEhBTkRMRSxEV09SRCxEV09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KQk9PTCBf
X2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldEpvYlcoSEFORExFLERXT1JELERXT1JELFBC
WVRFLERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0
UHJpbnRlckEoSEFORExFLERXT1JELFBCWVRFLERXT1JELFBEV09SRCk7DQpCT09MIF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJpbnRlclcoSEFORExFLERXT1JELFBCWVRFLERXT1JE
LFBEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByaW50ZXJE
YXRhQShIQU5ETEUsTFBTVFIsUERXT1JELFBCWVRFLERXT1JELFBEV09SRCk7DQpEV09SRCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIEdldFByaW50ZXJEYXRhVyhIQU5ETEUsTFBXU1RSLFBE
V09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBHZXRQcmludGVyRHJpdmVyQShIQU5ETEUsTFBTVFIsRFdPUkQsUEJZVEUsRFdPUkQsUERX
T1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgR2V0UHJpbnRlckRyaXZl
clcoSEFORExFLExQV1NUUixEV09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5QShMUFNUUixM
UFNUUixEV09SRCxQQllURSxEV09SRCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5VyhMUFdTVFIsTFBXU1RSLERXT1JE
LFBCWVRFLERXT1JELFBEV09SRCk7DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IEdldFByaW50UHJvY2Vzc29yRGlyZWN0b3J5QShMUFNUUixMUFNUUixEV09SRCxQQllURSxEV09S
RCxQRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBHZXRQcmludFBy
b2Nlc3NvckRpcmVjdG9yeVcoTFBXU1RSLExQV1NUUixEV09SRCxQQllURSxEV09SRCxQRFdPUkQp
Ow0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIE9wZW5QcmludGVyQShMUFNUUixQ
SEFORExFLExQUFJJTlRFUl9ERUZBVUxUU0EpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNh
bGxfXykpIE9wZW5QcmludGVyVyhMUFdTVFIsUEhBTkRMRSxMUFBSSU5URVJfREVGQVVMVFNXKTsN
CkRXT1JEIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgUHJpbnRlck1lc3NhZ2VCb3hBKEhB
TkRMRSxEV09SRCxIV05ELExQU1RSLExQU1RSLERXT1JEKTsNCkRXT1JEIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgUHJpbnRlck1lc3NhZ2VCb3hXKEhBTkRMRSxEV09SRCxIV05ELExQV1NU
UixMUFdTVFIsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFByaW50
ZXJQcm9wZXJ0aWVzKEhXTkQsSEFORExFKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBSZWFkUHJpbnRlcihIQU5ETEUsUFZPSUQsRFdPUkQsUERXT1JEKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZXNldFByaW50ZXJBKEhBTkRMRSxMUFBSSU5URVJfREVG
QVVMVFNBKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBSZXNldFByaW50ZXJX
KEhBTkRMRSxMUFBSSU5URVJfREVGQVVMVFNXKTsNCkJPT0wgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBTY2hlZHVsZUpvYihIQU5ETEUsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFNldEZvcm1BKEhBTkRMRSxMUFNUUixEV09SRCxQQllURSk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Rm9ybVcoSEFORExFLExQV1NUUixEV09SRCxQ
QllURSk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0Sm9iQShIQU5ETEUs
RFdPUkQsRFdPUkQsUEJZVEUsRFdPUkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxf
XykpIFNldEpvYlcoSEFORExFLERXT1JELERXT1JELFBCWVRFLERXT1JEKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBTZXRQcmludGVyQShIQU5ETEUsRFdPUkQsUEJZVEUsRFdP
UkQpOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFNldFByaW50ZXJXKEhBTkRM
RSxEV09SRCxQQllURSxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
U2V0UHJpbnRlckRhdGFBKEhBTkRMRSxMUFNUUixEV09SRCxQQllURSxEV09SRCk7DQpCT09MIF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgU2V0UHJpbnRlckRhdGFXKEhBTkRMRSxMUFdTVFIs
RFdPUkQsUEJZVEUsRFdPUkQpOw0KRFdPUkQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBT
dGFydERvY1ByaW50ZXJBKEhBTkRMRSxEV09SRCxQQllURSk7DQpEV09SRCBfX2F0dHJpYnV0ZV9f
KChfX3N0ZGNhbGxfXykpIFN0YXJ0RG9jUHJpbnRlclcoSEFORExFLERXT1JELFBCWVRFKTsNCkJP
T0wgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBTdGFydFBhZ2VQcmludGVyKEhBTkRMRSk7
DQpEV09SRCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdhaXRGb3JQcmludGVyQ2hhbmdl
KEhBTkRMRSxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV3JpdGVQ
cmludGVyKEhBTkRMRSxQVk9JRCxEV09SRCxQRFdPUkQpOw0KIyA3MTAgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvd2luc3Bvb2wuaCIgMw0KdHlwZWRlZiBKT0JfSU5GT18xQSBKT0JfSU5GT18x
LCpQSk9CX0lORk9fMSwqTFBKT0JfSU5GT18xOw0KdHlwZWRlZiBKT0JfSU5GT18yQSBKT0JfSU5G
T18yLCpQSk9CX0lORk9fMiwqTFBKT0JfSU5GT18yOw0KdHlwZWRlZiBBRERKT0JfSU5GT18xQSBB
RERKT0JfSU5GT18xLCpQQURESk9CX0lORk9fMSwqTFBBRERKT0JfSU5GT18xOw0KdHlwZWRlZiBE
QVRBVFlQRVNfSU5GT18xQSBEQVRBVFlQRVNfSU5GT18xLCpQREFUQVRZUEVTX0lORk9fMSwqTFBE
QVRBVFlQRVNfSU5GT18xOw0KdHlwZWRlZiBNT05JVE9SX0lORk9fMUEgTU9OSVRPUl9JTkZPXzEs
KlBNT05JVE9SX0lORk9fMSwqTFBNT05JVE9SX0lORk9fMTsNCnR5cGVkZWYgTU9OSVRPUl9JTkZP
XzJBIE1PTklUT1JfSU5GT18yLCpQTU9OSVRPUl9JTkZPXzIsKkxQTU9OSVRPUl9JTkZPXzI7DQp0
eXBlZGVmIERPQ19JTkZPXzFBIERPQ19JTkZPXzEsKlBET0NfSU5GT18xLCpMUERPQ19JTkZPXzE7
DQp0eXBlZGVmIERPQ19JTkZPXzJBIERPQ19JTkZPXzIsKlBET0NfSU5GT18yLCpMUERPQ19JTkZP
XzI7DQp0eXBlZGVmIFBPUlRfSU5GT18xQSBQT1JUX0lORk9fMSwqUFBPUlRfSU5GT18xLCpMUFBP
UlRfSU5GT18xOw0KdHlwZWRlZiBQT1JUX0lORk9fMkEgUE9SVF9JTkZPXzIsKlBQT1JUX0lORk9f
MiwqTFBQT1JUX0lORk9fMjsNCnR5cGVkZWYgUE9SVF9JTkZPXzNBIFBPUlRfSU5GT18zLCpQUE9S
VF9JTkZPXzMsKkxQUE9SVF9JTkZPXzM7DQp0eXBlZGVmIERSSVZFUl9JTkZPXzJBIERSSVZFUl9J
TkZPXzIsKlBEUklWRVJfSU5GT18yLCpMUERSSVZFUl9JTkZPXzI7DQp0eXBlZGVmIFBSSU5URVJf
SU5GT18xQSBQUklOVEVSX0lORk9fMSwqUFBSSU5URVJfSU5GT18xLCpMUFBSSU5URVJfSU5GT18x
Ow0KdHlwZWRlZiBQUklOVEVSX0lORk9fMkEgUFJJTlRFUl9JTkZPXzIsKlBQUklOVEVSX0lORk9f
MiwqTFBQUklOVEVSX0lORk9fMjsNCnR5cGVkZWYgUFJJTlRFUl9JTkZPXzRBIFBSSU5URVJfSU5G
T180LCpQUFJJTlRFUl9JTkZPXzQsKkxQUFJJTlRFUl9JTkZPXzQ7DQp0eXBlZGVmIFBSSU5URVJf
SU5GT181QSBQUklOVEVSX0lORk9fNSwqUFBSSU5URVJfSU5GT181LCpMUFBSSU5URVJfSU5GT181
Ow0KdHlwZWRlZiBQUklOVFBST0NFU1NPUl9JTkZPXzFBIFBSSU5UUFJPQ0VTU09SX0lORk9fMSwq
UFBSSU5UUFJPQ0VTU09SX0lORk9fMSwqTFBQUklOVFBST0NFU1NPUl9JTkZPXzE7DQp0eXBlZGVm
IEZPUk1fSU5GT18xQSBGT1JNX0lORk9fMSwqUEZPUk1fSU5GT18xLCpMUEZPUk1fSU5GT18xOw0K
dHlwZWRlZiBQUklOVEVSX0RFRkFVTFRTQSBQUklOVEVSX0RFRkFVTFRTLCpQUFJJTlRFUl9ERUZB
VUxUUywqTFBQUklOVEVSX0RFRkFVTFRTOw0KIyA3NzYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvd2luc3Bvb2wuaCIgMw0KfQ0KIyAxMzggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2lu
ZG93cy5oIiAyIDMNCiMgMTU0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbmRvd3MuaCIg
Mw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIgMSAzDQojIDE3ICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIgMw0KZXh0ZXJuICJDIiB7DQoNCg0K
DQoNCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHVfc2hvcnQ7DQp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsNCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1X2xvbmc7DQoNCg0KdHlwZWRlZiB1X2ludCBTT0NLRVQ7DQojIDQ1ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIgMw0KdHlwZWRlZiBzdHJ1Y3QgZmRfc2V0IHsNCiAg
ICAgICAgdV9pbnQgZmRfY291bnQ7DQogICAgICAgIFNPQ0tFVCBmZF9hcnJheVs2NF07DQp9IGZk
X3NldDsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIF9fV1NBRkRJc1NldChTT0NL
RVQsZmRfc2V0Kik7DQojIDgyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIg
Mw0Kc3RydWN0IHRpbWV2YWwgew0KICAgICAgICBsb25nIHR2X3NlYzsNCiAgICAgICAgbG9uZyB0
dl91c2VjOw0KfTsNCnN0cnVjdCBob3N0ZW50IHsNCiAgICAgICAgY2hhciAqaF9uYW1lOw0KICAg
ICAgICBjaGFyICoqaF9hbGlhc2VzOw0KICAgICAgICBzaG9ydCBoX2FkZHJ0eXBlOw0KICAgICAg
ICBzaG9ydCBoX2xlbmd0aDsNCiAgICAgICAgY2hhciAqKmhfYWRkcl9saXN0Ow0KDQp9Ow0Kc3Ry
dWN0IGxpbmdlciB7DQogICAgICAgIHVfc2hvcnQgbF9vbm9mZjsNCiAgICAgICAgdV9zaG9ydCBs
X2xpbmdlcjsNCn07DQojIDEyNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5zb2NrLmgi
IDMNCnN0cnVjdCBuZXRlbnQgew0KICAgICAgICBjaGFyICogbl9uYW1lOw0KICAgICAgICBjaGFy
ICoqbl9hbGlhc2VzOw0KICAgICAgICBzaG9ydCBuX2FkZHJ0eXBlOw0KICAgICAgICB1X2xvbmcg
bl9uZXQ7DQp9Ow0Kc3RydWN0IHNlcnZlbnQgew0KICAgICAgICBjaGFyICpzX25hbWU7DQogICAg
ICAgIGNoYXIgKipzX2FsaWFzZXM7DQogICAgICAgIHNob3J0IHNfcG9ydDsNCiAgICAgICAgY2hh
ciAqc19wcm90bzsNCn07DQpzdHJ1Y3QgcHJvdG9lbnQgew0KICAgICAgICBjaGFyICpwX25hbWU7
DQogICAgICAgIGNoYXIgKipwX2FsaWFzZXM7DQogICAgICAgIHNob3J0IHBfcHJvdG87DQp9Ow0K
IyAxODUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2luc29jay5oIiAzDQpzdHJ1Y3QgaW5f
YWRkciB7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgICAgICBzdHJ1Y3QgeyB1X2NoYXIg
c19iMSxzX2IyLHNfYjMsc19iNDsgfSBTX3VuX2I7DQogICAgICAgICAgICAgICAgc3RydWN0IHsg
dV9zaG9ydCBzX3cxLHNfdzI7IH0gU191bl93Ow0KICAgICAgICAgICAgICAgIHVfbG9uZyBTX2Fk
ZHI7DQogICAgICAgIH0gU191bjsNCg0KDQoNCg0KDQoNCn07DQojIDIxNiAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS93aW5zb2NrLmgiIDMNCnN0cnVjdCBzb2NrYWRkcl9pbiB7DQogICAgICAg
IHNob3J0IHNpbl9mYW1pbHk7DQogICAgICAgIHVfc2hvcnQgc2luX3BvcnQ7DQogICAgICAgIHN0
cnVjdCBpbl9hZGRyIHNpbl9hZGRyOw0KICAgICAgICBjaGFyIHNpbl96ZXJvWzhdOw0KfTsNCg0K
DQp0eXBlZGVmIHN0cnVjdCBXU0FEYXRhIHsNCiAgICAgICAgV09SRCB3VmVyc2lvbjsNCiAgICAg
ICAgV09SRCB3SGlnaFZlcnNpb247DQogICAgICAgIGNoYXIgc3pEZXNjcmlwdGlvblsyNTYgKzFd
Ow0KICAgICAgICBjaGFyIHN6U3lzdGVtU3RhdHVzWzEyOCArMV07DQogICAgICAgIHVuc2lnbmVk
IHNob3J0IGlNYXhTb2NrZXRzOw0KICAgICAgICB1bnNpZ25lZCBzaG9ydCBpTWF4VWRwRGc7DQog
ICAgICAgIGNoYXIgKiBscFZlbmRvckluZm87DQp9IFdTQURBVEE7DQp0eXBlZGVmIFdTQURBVEEg
KkxQV1NBREFUQTsNCiMgMjcwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIg
Mw0Kc3RydWN0IGlwX21yZXEgew0KICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfbXVsdGlhZGRy
Ow0KICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfaW50ZXJmYWNlOw0KfTsNCiMgMzEwICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIgMw0Kc3RydWN0IHNvY2thZGRyIHsNCiAg
ICAgICAgdV9zaG9ydCBzYV9mYW1pbHk7DQogICAgICAgIGNoYXIgc2FfZGF0YVsxNF07DQp9Ow0K
DQoNCnN0cnVjdCBzb2NrcHJvdG8gew0KICAgICAgICB1X3Nob3J0IHNwX2ZhbWlseTsNCiAgICAg
ICAgdV9zaG9ydCBzcF9wcm90b2NvbDsNCn07DQojIDQyMyAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS93aW5zb2NrLmgiIDMNClNPQ0tFVCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGFj
Y2VwdChTT0NLRVQsc3RydWN0IHNvY2thZGRyKixpbnQqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIGJpbmQoU09DS0VULGNvbnN0IHN0cnVjdCBzb2NrYWRkciosaW50KTsNCmlu
dCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGNsb3Nlc29ja2V0KFNPQ0tFVCk7DQppbnQg
X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBjb25uZWN0KFNPQ0tFVCxjb25zdCBzdHJ1Y3Qg
c29ja2FkZHIqLGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBpb2N0bHNv
Y2tldChTT0NLRVQsbG9uZyx1X2xvbmcgKik7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxs
X18pKSBnZXRwZWVybmFtZShTT0NLRVQsc3RydWN0IHNvY2thZGRyKixpbnQqKTsNCmludCBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGdldHNvY2tuYW1lKFNPQ0tFVCxzdHJ1Y3Qgc29ja2Fk
ZHIqLGludCopOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgZ2V0c29ja29wdChT
T0NLRVQsaW50LGludCxjaGFyKixpbnQqKTsNCnVuc2lnbmVkIGxvbmcgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBpbmV0X2FkZHIoY29uc3QgY2hhciopOw0KX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBjaGFyICppbmV0X250b2Eoc3RydWN0IGluX2FkZHIpOw0KaW50IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgbGlzdGVuKFNPQ0tFVCxpbnQpOw0KaW50IF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgcmVjdihTT0NLRVQsY2hhciosaW50LGludCk7DQppbnQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSByZWN2ZnJvbShTT0NLRVQsY2hhciosaW50LGludCxzdHJ1
Y3Qgc29ja2FkZHIqLGludCopOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgc2Vu
ZChTT0NLRVQsY29uc3QgY2hhciosaW50LGludCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBzZW5kdG8oU09DS0VULGNvbnN0IGNoYXIqLGludCxpbnQsY29uc3Qgc3RydWN0IHNv
Y2thZGRyKixpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgc2V0c29ja29w
dChTT0NLRVQsaW50LGludCxjb25zdCBjaGFyKixpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9f
c3RkY2FsbF9fKSkgc2h1dGRvd24oU09DS0VULGludCk7DQpTT0NLRVQgX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBzb2NrZXQoaW50LGludCxpbnQpOw0KX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5YWRkcihjb25zdCBjaGFyKixpbnQsaW50
KTsNCl9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgc3RydWN0IGhvc3RlbnQgKmdldGhvc3Ri
eW5hbWUoY29uc3QgY2hhciopOw0KX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBzdHJ1Y3Qg
c2VydmVudCAqZ2V0c2VydmJ5cG9ydChpbnQsY29uc3QgY2hhciopOw0KX19hdHRyaWJ1dGVfXygo
X19zdGRjYWxsX18pKSBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5bmFtZShjb25zdCBjaGFyKixj
b25zdCBjaGFyKik7DQpfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIHN0cnVjdCBwcm90b2Vu
dCAqZ2V0cHJvdG9ieW51bWJlcihpbnQpOw0KX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBz
dHJ1Y3QgcHJvdG9lbnQgKmdldHByb3RvYnluYW1lKGNvbnN0IGNoYXIqKTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQVN0YXJ0dXAoV09SRCxMUFdTQURBVEEpOw0KaW50IF9f
YXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgV1NBQ2xlYW51cCh2b2lkKTsNCnZvaWQgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBXU0FTZXRMYXN0RXJyb3IoaW50KTsNCmludCBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQUdldExhc3RFcnJvcih2b2lkKTsNCkJPT0wgX19hdHRy
aWJ1dGVfXygoX19zdGRjYWxsX18pKSBXU0FJc0Jsb2NraW5nKHZvaWQpOw0KaW50IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgV1NBVW5ob29rQmxvY2tpbmdIb29rKHZvaWQpOw0KRkFSUFJP
QyBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQVNldEJsb2NraW5nSG9vayhGQVJQUk9D
KTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQUNhbmNlbEJsb2NraW5nQ2Fs
bCh2b2lkKTsNCkhBTkRMRSBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQUFzeW5jR2V0
U2VydkJ5TmFtZShIV05ELHVfaW50LGNvbnN0IGNoYXIqLGNvbnN0IGNoYXIqLGNoYXIqLGludCk7
DQpIQU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXU0FBc3luY0dldFNlcnZCeVBv
cnQoSFdORCx1X2ludCxpbnQsY29uc3QgY2hhciosY2hhciosaW50KTsNCkhBTkRMRSBfX2F0dHJp
YnV0ZV9fKChfX3N0ZGNhbGxfXykpIFdTQUFzeW5jR2V0UHJvdG9CeU5hbWUoSFdORCx1X2ludCxj
b25zdCBjaGFyKixjaGFyKixpbnQpOw0KSEFORExFIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9f
KSkgV1NBQXN5bmNHZXRQcm90b0J5TnVtYmVyKEhXTkQsdV9pbnQsaW50LGNoYXIqLGludCk7DQpI
QU5ETEUgX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBXU0FBc3luY0dldEhvc3RCeU5hbWUo
SFdORCx1X2ludCxjb25zdCBjaGFyKixjaGFyKixpbnQpOw0KSEFORExFIF9fYXR0cmlidXRlX18o
KF9fc3RkY2FsbF9fKSkgV1NBQXN5bmNHZXRIb3N0QnlBZGRyKEhXTkQsdV9pbnQsY29uc3QgY2hh
ciosaW50LGludCxjaGFyKixpbnQpOw0KaW50IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkg
V1NBQ2FuY2VsQXN5bmNSZXF1ZXN0KEhBTkRMRSk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19zdGRj
YWxsX18pKSBXU0FBc3luY1NlbGVjdChTT0NLRVQsSFdORCx1X2ludCxsb25nKTsNCg0KdV9sb25n
IF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgaHRvbmwodV9sb25nKTsNCnVfbG9uZyBfX2F0
dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIG50b2hsKHVfbG9uZyk7DQp1X3Nob3J0IF9fYXR0cmli
dXRlX18oKF9fc3RkY2FsbF9fKSkgaHRvbnModV9zaG9ydCk7DQp1X3Nob3J0IF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgbnRvaHModV9zaG9ydCk7DQppbnQgX19hdHRyaWJ1dGVfXygoX19z
dGRjYWxsX18pKSBzZWxlY3QoaW50IG5mZHMsZmRfc2V0KixmZF9zZXQqLGZkX3NldCosY29uc3Qg
c3RydWN0IHRpbWV2YWwqKTsNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpIGdldGhv
c3RuYW1lKGNoYXIqLGludCk7DQojIDQ3OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5z
b2NrLmgiIDMNCnR5cGVkZWYgc3RydWN0IHNvY2thZGRyIFNPQ0tBRERSOw0KdHlwZWRlZiBzdHJ1
Y3Qgc29ja2FkZHIgKlBTT0NLQUREUjsNCnR5cGVkZWYgc3RydWN0IHNvY2thZGRyICpMUFNPQ0tB
RERSOw0KdHlwZWRlZiBzdHJ1Y3Qgc29ja2FkZHJfaW4gU09DS0FERFJfSU47DQp0eXBlZGVmIHN0
cnVjdCBzb2NrYWRkcl9pbiAqUFNPQ0tBRERSX0lOOw0KdHlwZWRlZiBzdHJ1Y3Qgc29ja2FkZHJf
aW4gKkxQU09DS0FERFJfSU47DQp0eXBlZGVmIHN0cnVjdCBsaW5nZXIgTElOR0VSOw0KdHlwZWRl
ZiBzdHJ1Y3QgbGluZ2VyICpQTElOR0VSOw0KdHlwZWRlZiBzdHJ1Y3QgbGluZ2VyICpMUExJTkdF
UjsNCnR5cGVkZWYgc3RydWN0IGluX2FkZHIgSU5fQUREUjsNCnR5cGVkZWYgc3RydWN0IGluX2Fk
ZHIgKlBJTl9BRERSOw0KdHlwZWRlZiBzdHJ1Y3QgaW5fYWRkciAqTFBJTl9BRERSOw0KdHlwZWRl
ZiBzdHJ1Y3QgZmRfc2V0IEZEX1NFVDsNCnR5cGVkZWYgc3RydWN0IGZkX3NldCAqUEZEX1NFVDsN
CnR5cGVkZWYgc3RydWN0IGZkX3NldCAqTFBGRF9TRVQ7DQp0eXBlZGVmIHN0cnVjdCBob3N0ZW50
IEhPU1RFTlQ7DQp0eXBlZGVmIHN0cnVjdCBob3N0ZW50ICpQSE9TVEVOVDsNCnR5cGVkZWYgc3Ry
dWN0IGhvc3RlbnQgKkxQSE9TVEVOVDsNCnR5cGVkZWYgc3RydWN0IHNlcnZlbnQgU0VSVkVOVDsN
CnR5cGVkZWYgc3RydWN0IHNlcnZlbnQgKlBTRVJWRU5UOw0KdHlwZWRlZiBzdHJ1Y3Qgc2VydmVu
dCAqTFBTRVJWRU5UOw0KdHlwZWRlZiBzdHJ1Y3QgcHJvdG9lbnQgUFJPVE9FTlQ7DQp0eXBlZGVm
IHN0cnVjdCBwcm90b2VudCAqUFBST1RPRU5UOw0KdHlwZWRlZiBzdHJ1Y3QgcHJvdG9lbnQgKkxQ
UFJPVE9FTlQ7DQp0eXBlZGVmIHN0cnVjdCB0aW1ldmFsIFRJTUVWQUw7DQp0eXBlZGVmIHN0cnVj
dCB0aW1ldmFsICpQVElNRVZBTDsNCnR5cGVkZWYgc3RydWN0IHRpbWV2YWwgKkxQVElNRVZBTDsN
Cg0KDQp9DQojIDUyMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5zb2NrLmgiIDMNCiMg
MSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9tc3dzb2NrLmgiIDEgMw0KIyAxNiAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9tc3dzb2NrLmgiIDMNCmV4dGVybiAiQyIgew0KIyA0MyAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9tc3dzb2NrLmgiIDMNCnR5cGVkZWYgc3RydWN0IF9UUkFO
U01JVF9GSUxFX0JVRkZFUlMgew0KICAgICAgICBQVk9JRCBIZWFkOw0KICAgICAgICBEV09SRCBI
ZWFkTGVuZ3RoOw0KICAgICAgICBQVk9JRCBUYWlsOw0KICAgICAgICBEV09SRCBUYWlsTGVuZ3Ro
Ow0KfSBUUkFOU01JVF9GSUxFX0JVRkZFUlMsICpQVFJBTlNNSVRfRklMRV9CVUZGRVJTLCAqTFBU
UkFOU01JVF9GSUxFX0JVRkZFUlM7DQoNCmludCBfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp
IFdTQVJlY3ZFeChTT0NLRVQsY2hhciosaW50LGludCopOw0KQk9PTCBfX2F0dHJpYnV0ZV9fKChf
X3N0ZGNhbGxfXykpIFRyYW5zbWl0RmlsZShTT0NLRVQsSEFORExFLERXT1JELERXT1JELExQT1ZF
UkxBUFBFRCxMUFRSQU5TTUlUX0ZJTEVfQlVGRkVSUyxEV09SRCk7DQpCT09MIF9fYXR0cmlidXRl
X18oKF9fc3RkY2FsbF9fKSkgQWNjZXB0RXgoU09DS0VULFNPQ0tFVCxQVk9JRCxEV09SRCxEV09S
RCxEV09SRCxMUERXT1JELExQT1ZFUkxBUFBFRCk7DQp2b2lkIF9fYXR0cmlidXRlX18oKF9fc3Rk
Y2FsbF9fKSkgR2V0QWNjZXB0RXhTb2NrYWRkcnMoUFZPSUQsRFdPUkQsRFdPUkQsRFdPUkQsc3Ry
dWN0IHNvY2thZGRyKiosIExQSU5ULCBzdHJ1Y3Qgc29ja2FkZHIqKiwgTFBJTlQpOw0KDQoNCn0N
CiMgNTI0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3dpbnNvY2suaCIgMiAzDQojIDE1NSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93aW5kb3dzLmgiIDIgMw0KIyAzMzIgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2d0aHItZGVmYXVs
dC5oIiAyIDMNCg0KdHlwZWRlZiBEV09SRCBfX2d0aHJlYWRfa2V5X3Q7DQoNCnR5cGVkZWYgc3Ry
dWN0IHsNCiAgaW50IGRvbmU7DQogIGxvbmcgc3RhcnRlZDsNCn0gX19ndGhyZWFkX29uY2VfdDsN
Cg0KdHlwZWRlZiBIQU5ETEUgX19ndGhyZWFkX211dGV4X3Q7DQojIDM0OSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvZ3Roci1kZWZhdWx0Lmgi
IDMNCmV4dGVybiAiQyIgew0KDQpleHRlcm4gaW50IF9fbWluZ3d0aHJfa2V5X2R0b3IgKERXT1JE
LCB2b2lkICgqKSAodm9pZCAqKSk7DQoNCn0NCg0KDQoNCg0KDQpleHRlcm4gaW50IF9DUlRfTVQ7
DQoNCg0Kc3RhdGljIGlubGluZSBpbnQNCl9fZ3RocmVhZF9hY3RpdmVfcCAodm9pZCkNCnsNCg0K
ICByZXR1cm4gX0NSVF9NVDsNCg0KDQoNCn0NCg0Kc3RhdGljIGlubGluZSBpbnQNCl9fZ3RocmVh
ZF9vbmNlIChfX2d0aHJlYWRfb25jZV90ICpvbmNlLCB2b2lkICgqZnVuYykgKHZvaWQpKQ0Kew0K
ICBpZiAoISBfX2d0aHJlYWRfYWN0aXZlX3AgKCkpDQogICAgcmV0dXJuIC0xOw0KICBlbHNlIGlm
IChvbmNlID09IF9fbnVsbCB8fCBmdW5jID09IF9fbnVsbCkNCiAgICByZXR1cm4gMjI7DQoNCiAg
aWYgKCEgb25jZS0+ZG9uZSkNCiAgICB7DQogICAgICBpZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQg
KCYob25jZS0+c3RhcnRlZCkpID09IDApDQogICAgICAgIHsNCiAgICAgICAgICAoKmZ1bmMpICgp
Ow0KICAgICAgICAgIG9uY2UtPmRvbmUgPSAxOw0KICAgICAgICB9DQogICAgICBlbHNlDQogICAg
ICAgIHsNCg0KDQoNCg0KDQogICAgICAgICAgd2hpbGUgKCEgb25jZS0+ZG9uZSkNCiAgICAgICAg
ICAgIFNsZWVwICgwKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICByZXR1cm4gMDsNCn0NCg0KDQoN
Cg0Kc3RhdGljIGlubGluZSBpbnQNCl9fZ3RocmVhZF9rZXlfY3JlYXRlIChfX2d0aHJlYWRfa2V5
X3QgKmtleSwgdm9pZCAoKmR0b3IpICh2b2lkICopKQ0Kew0KICBpbnQgc3RhdHVzID0gMDsNCiAg
RFdPUkQgdGxzX2luZGV4ID0gVGxzQWxsb2MgKCk7DQogIGlmICh0bHNfaW5kZXggIT0gMHhGRkZG
RkZGRikNCiAgICB7DQogICAgICAqa2V5ID0gdGxzX2luZGV4Ow0KDQoNCg0KICAgICAgc3RhdHVz
ID0gX19taW5nd3Rocl9rZXlfZHRvciAoKmtleSwgZHRvcik7DQoNCiAgICB9DQogIGVsc2UNCiAg
ICBzdGF0dXMgPSAoaW50KSBHZXRMYXN0RXJyb3IgKCk7DQogIHJldHVybiBzdGF0dXM7DQp9DQoN
Cg0KDQpzdGF0aWMgaW5saW5lIGludA0KX19ndGhyZWFkX2tleV9kdG9yIChfX2d0aHJlYWRfa2V5
X3Qga2V5LCB2b2lkICpwdHIpDQp7DQoNCiAgcmV0dXJuIDA7DQp9DQoNCnN0YXRpYyBpbmxpbmUg
aW50DQpfX2d0aHJlYWRfa2V5X2RlbGV0ZSAoX19ndGhyZWFkX2tleV90IGtleSkNCnsNCiAgcmV0
dXJuIChUbHNGcmVlIChrZXkpICE9IDApID8gMCA6IChpbnQpIEdldExhc3RFcnJvciAoKTsNCn0N
Cg0Kc3RhdGljIGlubGluZSB2b2lkICoNCl9fZ3RocmVhZF9nZXRzcGVjaWZpYyAoX19ndGhyZWFk
X2tleV90IGtleSkNCnsNCiAgRFdPUkQgbGFzdGVycm9yOw0KICB2b2lkICpwdHI7DQoNCiAgbGFz
dGVycm9yID0gR2V0TGFzdEVycm9yKCk7DQoNCiAgcHRyID0gVGxzR2V0VmFsdWUoa2V5KTsNCg0K
ICBTZXRMYXN0RXJyb3IoIGxhc3RlcnJvciApOw0KDQogIHJldHVybiBwdHI7DQp9DQoNCnN0YXRp
YyBpbmxpbmUgaW50DQpfX2d0aHJlYWRfc2V0c3BlY2lmaWMgKF9fZ3RocmVhZF9rZXlfdCBrZXks
IGNvbnN0IHZvaWQgKnB0cikNCnsNCiAgcmV0dXJuIChUbHNTZXRWYWx1ZSAoa2V5LCAodm9pZCop
IHB0cikgIT0gMCkgPyAwIDogKGludCkgR2V0TGFzdEVycm9yICgpOw0KfQ0KDQpzdGF0aWMgaW5s
aW5lIHZvaWQNCl9fZ3RocmVhZF9tdXRleF9pbml0X2Z1bmN0aW9uIChfX2d0aHJlYWRfbXV0ZXhf
dCAqbXV0ZXgpDQp7DQoNCiAgKm11dGV4ID0gQ3JlYXRlTXV0ZXhBIChfX251bGwsIDAsIF9fbnVs
bCk7DQp9DQoNCnN0YXRpYyBpbmxpbmUgaW50DQpfX2d0aHJlYWRfbXV0ZXhfbG9jayAoX19ndGhy
ZWFkX211dGV4X3QgKm11dGV4KQ0Kew0KICBpbnQgc3RhdHVzID0gMDsNCg0KICBpZiAoX19ndGhy
ZWFkX2FjdGl2ZV9wICgpKQ0KICAgIHsNCiAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0ICgq
bXV0ZXgsIDB4RkZGRkZGRkYpID09IDApDQogICAgICAgIHN0YXR1cyA9IDA7DQogICAgICBlbHNl
DQogICAgICAgIHN0YXR1cyA9IDE7DQogICAgfQ0KICByZXR1cm4gc3RhdHVzOw0KfQ0KDQpzdGF0
aWMgaW5saW5lIGludA0KX19ndGhyZWFkX211dGV4X3RyeWxvY2sgKF9fZ3RocmVhZF9tdXRleF90
ICptdXRleCkNCnsNCiAgaW50IHN0YXR1cyA9IDA7DQoNCiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVf
cCAoKSkNCiAgICB7DQogICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdCAoKm11dGV4LCAwKSA9
PSAwKQ0KICAgICAgICBzdGF0dXMgPSAwOw0KICAgICAgZWxzZQ0KICAgICAgICBzdGF0dXMgPSAx
Ow0KICAgIH0NCiAgcmV0dXJuIHN0YXR1czsNCn0NCg0Kc3RhdGljIGlubGluZSBpbnQNCl9fZ3Ro
cmVhZF9tdXRleF91bmxvY2sgKF9fZ3RocmVhZF9tdXRleF90ICptdXRleCkNCnsNCiAgaWYgKF9f
Z3RocmVhZF9hY3RpdmVfcCAoKSkNCiAgICByZXR1cm4gKFJlbGVhc2VNdXRleCAoKm11dGV4KSAh
PSAwKSA/IDAgOiAxOw0KICBlbHNlDQogICAgcmV0dXJuIDA7DQp9DQojIDk5ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9pNjg2LXBjLW1pbmd3MzIvYml0cy9ndGhyLmgiIDIgMw0K
IyAzOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2Jp
dHMvYysraW8uaCIgMiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCg0KICB0eXBlZGVmIGxvbmcgc3Ry
ZWFtb2ZmOw0KICB0eXBlZGVmIHB0cmRpZmZfdCBzdHJlYW1zaXplOw0KDQoNCg0KICB0eXBlZGVm
IGZwb3NfdCBfX2Nfc3RyZWFtcG9zOw0KDQogIHR5cGVkZWYgX19ndGhyZWFkX211dGV4X3QgX19j
X2xvY2s7DQoNCg0KICB0eXBlZGVmIEZJTEUgX19jX2ZpbGU7DQoNCg0KICBzdHJ1Y3QgX19pb3Nf
ZmxhZ3MNCiAgew0KICAgIHR5cGVkZWYgc2hvcnQgX19pbnRfdHlwZTsNCg0KICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2Jvb2xhbHBoYSA9IDB4MDAwMTsNCiAgICBzdGF0aWMgY29uc3Qg
X19pbnRfdHlwZSBfU19kZWMgPSAweDAwMDI7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg
X1NfZml4ZWQgPSAweDAwMDQ7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfaGV4ID0g
MHgwMDA4Ow0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2ludGVybmFsID0gMHgwMDEw
Ow0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2xlZnQgPSAweDAwMjA7DQogICAgc3Rh
dGljIGNvbnN0IF9faW50X3R5cGUgX1Nfb2N0ID0gMHgwMDQwOw0KICAgIHN0YXRpYyBjb25zdCBf
X2ludF90eXBlIF9TX3JpZ2h0ID0gMHgwMDgwOw0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX3NjaWVudGlmaWMgPSAweDAxMDA7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nf
c2hvd2Jhc2UgPSAweDAyMDA7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd3Bv
aW50ID0gMHgwNDAwOw0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3dwb3MgPSAw
eDA4MDA7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2tpcHdzID0gMHgxMDAwOw0K
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3VuaXRidWYgPSAweDIwMDA7DQogICAgc3Rh
dGljIGNvbnN0IF9faW50X3R5cGUgX1NfdXBwZXJjYXNlID0gMHg0MDAwOw0KICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2FkanVzdGZpZWxkID0gMHgwMDIwIHwgMHgwMDgwIHwgMHgwMDEw
Ow0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2Jhc2VmaWVsZCA9IDB4MDAwMiB8IDB4
MDA0MCB8IDB4MDAwODsNCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19mbG9hdGZpZWxk
ID0gMHgwMTAwIHwgMHgwMDA0Ow0KDQoNCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19i
YWRiaXQgPSAweDAxOw0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2VvZmJpdCA9IDB4
MDI7DQogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZmFpbGJpdCA9IDB4MDQ7DQoNCg0K
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2FwcCA9IDB4MDE7DQogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1NfYXRlID0gMHgwMjsNCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlw
ZSBfU19iaW4gPSAweDA0Ow0KICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2luID0gMHgw
ODsNCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19vdXQgPSAweDEwOw0KICAgIHN0YXRp
YyBjb25zdCBfX2ludF90eXBlIF9TX3RydW5jID0gMHgyMDsNCiAgfTsNCn0NCiMgNDUgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvZnBvcy5oIiAyIDMNCiMgMSAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3djaGFyIiAxIDMNCiMgNDggInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2N3Y2hhciIgMw0KDQoNCg0KIyAxICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9jdGltZSIgMSAzDQojIDQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9jdGltZSIgMw0KIyA2NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvY3RpbWUiIDMNCm5hbWVzcGFjZSBzdGQNCnsNCiAgdXNpbmcgOjpjbG9ja190Ow0KICB1
c2luZyA6OnRpbWVfdDsNCiAgdXNpbmcgOjp0bTsNCg0KICB1c2luZyA6OmNsb2NrOw0KICB1c2lu
ZyA6OmRpZmZ0aW1lOw0KICB1c2luZyA6Om1rdGltZTsNCiAgdXNpbmcgOjp0aW1lOw0KICB1c2lu
ZyA6OmFzY3RpbWU7DQogIHVzaW5nIDo6Y3RpbWU7DQogIHVzaW5nIDo6Z210aW1lOw0KICB1c2lu
ZyA6OmxvY2FsdGltZTsNCiAgdXNpbmcgOjpzdHJmdGltZTsNCn0NCiMgNTIgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2N3Y2hhciIgMiAzDQojIDY5ICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9jd2NoYXIiIDMNCm5hbWVzcGFjZSBzdGQNCnsNCiAgdXNpbmcgOjpt
YnN0YXRlX3Q7DQp9DQojIDQ2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L2Zwb3MuaCIgMiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1N0YXRlVD4NCiAgICBjbGFzcyBmcG9zDQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAg
dHlwZWRlZiBfU3RhdGVUIF9fc3RhdGVfdHlwZTsNCg0KICAgIHByaXZhdGU6DQogICAgICBzdHJl
YW1vZmYgX01fb2ZmOw0KICAgICAgX19zdGF0ZV90eXBlIF9NX3N0Ow0KDQogICAgcHVibGljOg0K
ICAgICAgX19zdGF0ZV90eXBlDQogICAgICBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3N0OyB9
DQoNCiAgICAgIHZvaWQNCiAgICAgIHN0YXRlKF9fc3RhdGVfdHlwZSBfX3N0KSB7IF9NX3N0ID0g
X19zdDsgfQ0KDQoNCg0KICAgICAgZnBvcygpOiBfTV9vZmYoc3RyZWFtb2ZmKCkpLCBfTV9zdChf
X3N0YXRlX3R5cGUoKSkgeyB9DQoNCiAgICAgIGZwb3Moc3RyZWFtb2ZmIF9fb2ZmLCBfX3N0YXRl
X3R5cGUgX19zdCA9IF9fc3RhdGVfdHlwZSgpKQ0KICAgICAgOiBfTV9vZmYoX19vZmYpLCBfTV9z
dChfX3N0KSB7IH0NCg0KICAgICAgb3BlcmF0b3Igc3RyZWFtb2ZmKCkgY29uc3QgeyByZXR1cm4g
X01fb2ZmOyB9DQoNCiAgICAgIGZwb3MmDQogICAgICBvcGVyYXRvcis9KHN0cmVhbW9mZiBfX29m
ZikgeyBfTV9vZmYgKz0gX19vZmY7IHJldHVybiAqdGhpczsgfQ0KDQogICAgICBmcG9zJg0KICAg
ICAgb3BlcmF0b3ItPShzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmIC09IF9fb2ZmOyByZXR1cm4g
KnRoaXM7IH0NCg0KICAgICAgZnBvcw0KICAgICAgb3BlcmF0b3IrKHN0cmVhbW9mZiBfX29mZikN
CiAgICAgIHsNCiAgICAgICAgZnBvcyBfX3QoKnRoaXMpOw0KICAgICAgICBfX3QgKz0gX19vZmY7
DQogICAgICAgIHJldHVybiBfX3Q7DQogICAgICB9DQoNCiAgICAgIGZwb3MNCiAgICAgIG9wZXJh
dG9yLShzdHJlYW1vZmYgX19vZmYpDQogICAgICB7DQogICAgICAgIGZwb3MgX190KCp0aGlzKTsN
CiAgICAgICAgX190IC09IF9fb2ZmOw0KICAgICAgICByZXR1cm4gX190Ow0KICAgICAgfQ0KDQog
ICAgICBib29sDQogICAgICBvcGVyYXRvcj09KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdA0KICAg
ICAgeyByZXR1cm4gX01fb2ZmID09IF9fcG9zLl9NX29mZjsgfQ0KDQogICAgICBib29sDQogICAg
ICBvcGVyYXRvciE9KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdA0KICAgICAgeyByZXR1cm4gX01f
b2ZmICE9IF9fcG9zLl9NX29mZjsgfQ0KDQogICAgICBzdHJlYW1vZmYNCiAgICAgIF9NX3Bvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gX01fb2ZmOyB9DQoNCiAgICAgIHZvaWQNCiAgICAgIF9NX3Bv
c2l0aW9uKHN0cmVhbW9mZiBfX29mZikgeyBfTV9vZmYgPSBfX29mZjsgfQ0KICAgIH07DQoNCg0K
ICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiBzdHJlYW1wb3M7DQoNCg0KDQp9DQojIDQ3ICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pb3Nmd2QiIDIgMw0KIyAxICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDEgMw0KIyAzNCAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4Y2VwdC5oIiAzDQojIDEg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2V4Y2VwdGlvbl9kZWZpbmVzLmgiIDEg
Mw0KIyAzNSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4Y2Vw
dC5oIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KDQogIHZvaWQNCiAgX190aHJvd19iYWRfZXhj
ZXB0aW9uKHZvaWQpOw0KDQoNCiAgdm9pZA0KICBfX3Rocm93X2JhZF9hbGxvYyh2b2lkKTsNCg0K
DQogIHZvaWQNCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsNCg0KICB2b2lkDQogIF9fdGhyb3df
YmFkX3R5cGVpZCh2b2lkKTsNCg0KDQogIHZvaWQNCiAgX190aHJvd19sb2dpY19lcnJvcihjb25z
dCBjaGFyKiBfX3MpOw0KDQogIHZvaWQNCiAgX190aHJvd19kb21haW5fZXJyb3IoY29uc3QgY2hh
ciogX19zKTsNCg0KICB2b2lkDQogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVudChjb25zdCBjaGFy
KiBfX3MpOw0KDQogIHZvaWQNCiAgX190aHJvd19sZW5ndGhfZXJyb3IoY29uc3QgY2hhciogX19z
KTsNCg0KICB2b2lkDQogIF9fdGhyb3dfb3V0X29mX3JhbmdlKGNvbnN0IGNoYXIqIF9fcyk7DQoN
CiAgdm9pZA0KICBfX3Rocm93X3J1bnRpbWVfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0KICB2
b2lkDQogIF9fdGhyb3dfcmFuZ2VfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0KICB2b2lkDQog
IF9fdGhyb3dfb3ZlcmZsb3dfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0KICB2b2lkDQogIF9f
dGhyb3dfdW5kZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCg0KICB2b2lkDQogIF9f
dGhyb3dfaW9zX2ZhaWx1cmUoY29uc3QgY2hhciogX19zKTsNCn0NCiMgNDggInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2lvc2Z3ZCIgMiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8
X0NoYXJUPiA+DQogICAgY2xhc3MgYmFzaWNfaW9zOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPg0KICAgIGNsYXNz
IGJhc2ljX3N0cmVhbWJ1ZjsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4NCiAgICBjbGFzcyBiYXNpY19pc3RyZWFt
Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJf
dHJhaXRzPF9DaGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX29zdHJlYW07DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+
DQogICAgY2xhc3MgYmFzaWNfaW9zdHJlYW07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwNCiAgICAgICAgICAgIHR5
cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4NCiAgICBjbGFzcyBiYXNpY19zdHJp
bmdidWY7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiwNCiAgICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2Nh
dG9yPF9DaGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX2lzdHJpbmdzdHJlYW07DQoNCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJU
PiwNCiAgICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPg0KICAg
IGNsYXNzIGJhc2ljX29zdHJpbmdzdHJlYW07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwNCiAgICAgICAgICAgdHlw
ZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX3N0cmlu
Z3N0cmVhbTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMg
PSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4NCiAgICBjbGFzcyBiYXNpY19maWxlYnVmOw0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9D
aGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX2lmc3RyZWFtOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPg0KICAgIGNs
YXNzIGJhc2ljX29mc3RyZWFtOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPg0KICAgIGNsYXNzIGJhc2ljX2ZzdHJl
YW07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh
cl90cmFpdHM8X0NoYXJUPiA+DQogICAgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjsNCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxf
Q2hhclQ+ID4NCiAgICBjbGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yOw0KDQoNCg0KICBjbGFzcyBp
b3NfYmFzZTsNCg0KDQogIHR5cGVkZWYgYmFzaWNfaW9zPGNoYXI+IGlvczsNCiAgdHlwZWRlZiBi
YXNpY19zdHJlYW1idWY8Y2hhcj4gc3RyZWFtYnVmOw0KICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08
Y2hhcj4gaXN0cmVhbTsNCiAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPGNoYXI+IG9zdHJlYW07DQog
IHR5cGVkZWYgYmFzaWNfaW9zdHJlYW08Y2hhcj4gaW9zdHJlYW07DQogIHR5cGVkZWYgYmFzaWNf
c3RyaW5nYnVmPGNoYXI+IHN0cmluZ2J1ZjsNCiAgdHlwZWRlZiBiYXNpY19pc3RyaW5nc3RyZWFt
PGNoYXI+IGlzdHJpbmdzdHJlYW07DQogIHR5cGVkZWYgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFy
PiBvc3RyaW5nc3RyZWFtOw0KICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBzdHJp
bmdzdHJlYW07DQogIHR5cGVkZWYgYmFzaWNfZmlsZWJ1ZjxjaGFyPiBmaWxlYnVmOw0KICB0eXBl
ZGVmIGJhc2ljX2lmc3RyZWFtPGNoYXI+IGlmc3RyZWFtOw0KICB0eXBlZGVmIGJhc2ljX29mc3Ry
ZWFtPGNoYXI+IG9mc3RyZWFtOw0KICB0eXBlZGVmIGJhc2ljX2ZzdHJlYW08Y2hhcj4gZnN0cmVh
bTsNCg0KICB0eXBlZGVmIGJhc2ljX2lvczx3Y2hhcl90PiB3aW9zOw0KICB0eXBlZGVmIGJhc2lj
X3N0cmVhbWJ1Zjx3Y2hhcl90PiB3c3RyZWFtYnVmOw0KICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08
d2NoYXJfdD4gd2lzdHJlYW07DQogIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTx3Y2hhcl90PiB3b3N0
cmVhbTsNCiAgdHlwZWRlZiBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PiB3aW9zdHJlYW07DQogIHR5
cGVkZWYgYmFzaWNfc3RyaW5nYnVmPHdjaGFyX3Q+IHdzdHJpbmdidWY7DQogIHR5cGVkZWYgYmFz
aWNfaXN0cmluZ3N0cmVhbTx3Y2hhcl90PiB3aXN0cmluZ3N0cmVhbTsNCiAgdHlwZWRlZiBiYXNp
Y19vc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdvc3RyaW5nc3RyZWFtOw0KICB0eXBlZGVmIGJhc2lj
X3N0cmluZ3N0cmVhbTx3Y2hhcl90PiB3c3RyaW5nc3RyZWFtOw0KICB0eXBlZGVmIGJhc2ljX2Zp
bGVidWY8d2NoYXJfdD4gd2ZpbGVidWY7DQogIHR5cGVkZWYgYmFzaWNfaWZzdHJlYW08d2NoYXJf
dD4gd2lmc3RyZWFtOw0KICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtPHdjaGFyX3Q+IHdvZnN0cmVh
bTsNCiAgdHlwZWRlZiBiYXNpY19mc3RyZWFtPHdjaGFyX3Q+IHdmc3RyZWFtOw0KfQ0KIyA0NSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaW9zIiAyIDMNCiMgMSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAxIDMNCiMgNDAgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2V4Y2VwdGlvbiIgMw0KZXh0ZXJuICJDKysiIHsNCg0KbmFt
ZXNwYWNlIHN0ZA0Kew0KDQoNCg0KDQoNCg0KICBjbGFzcyBleGNlcHRpb24NCiAgew0KICBwdWJs
aWM6DQogICAgZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0NCiAgICB2aXJ0dWFsIH5leGNlcHRpb24o
KSB0aHJvdygpOw0KDQoNCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJv
dygpOw0KICB9Ow0KDQoNCg0KICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlv
bg0KICB7DQogIHB1YmxpYzoNCiAgICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0NCg0KDQog
ICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbigpIHRocm93KCk7DQogIH07DQoNCg0KICB0eXBlZGVm
IHZvaWQgKCp0ZXJtaW5hdGVfaGFuZGxlcikgKCk7DQoNCiAgdHlwZWRlZiB2b2lkICgqdW5leHBl
Y3RlZF9oYW5kbGVyKSAoKTsNCg0KDQogIHRlcm1pbmF0ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUo
dGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7DQoNCg0KICB2b2lkIHRlcm1pbmF0ZSgpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsNCg0KDQogIHVuZXhwZWN0ZWRfaGFuZGxlciBzZXRf
dW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRocm93KCk7DQoNCg0KICB2b2lkIHVuZXhw
ZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7DQojIDk4ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9leGNlcHRpb24iIDMNCiAgYm9vbCB1bmNhdWdodF9leGNl
cHRpb24oKSB0aHJvdygpOw0KfQ0KDQpuYW1lc3BhY2UgX19nbnVfY3h4DQp7DQojIDExMSAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAzDQogIHZvaWQgX192ZXJi
b3NlX3Rlcm1pbmF0ZV9oYW5kbGVyICgpOw0KfQ0KDQp9DQojIDQ2ICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9pb3MiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL2NoYXJfdHJhaXRzLmgiIDEgMw0KIyA0MyAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9jaGFyX3RyYWl0cy5oIiAzDQoNCiMgMSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvY3N0cmluZyIgMSAzDQojIDQ4ICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9jc3RyaW5nIiAzDQojIDc3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9jc3RyaW5nIiAzDQpuYW1lc3BhY2Ugc3RkDQp7DQogIHVzaW5nIDo6bWVtY3B5
Ow0KICB1c2luZyA6Om1lbW1vdmU7DQogIHVzaW5nIDo6c3RyY3B5Ow0KICB1c2luZyA6OnN0cm5j
cHk7DQogIHVzaW5nIDo6c3RyY2F0Ow0KICB1c2luZyA6OnN0cm5jYXQ7DQogIHVzaW5nIDo6bWVt
Y21wOw0KICB1c2luZyA6OnN0cmNtcDsNCiAgdXNpbmcgOjpzdHJjb2xsOw0KICB1c2luZyA6OnN0
cm5jbXA7DQogIHVzaW5nIDo6c3RyeGZybTsNCiAgdXNpbmcgOjpzdHJjc3BuOw0KICB1c2luZyA6
OnN0cnNwbjsNCiAgdXNpbmcgOjpzdHJ0b2s7DQogIHVzaW5nIDo6bWVtc2V0Ow0KICB1c2luZyA6
OnN0cmVycm9yOw0KICB1c2luZyA6OnN0cmxlbjsNCg0KICB1c2luZyA6Om1lbWNocjsNCg0KICBp
bmxpbmUgdm9pZCoNCiAgbWVtY2hyKHZvaWQqIF9fcCwgaW50IF9fYywgc2l6ZV90IF9fbikNCiAg
eyByZXR1cm4gbWVtY2hyKGNvbnN0X2Nhc3Q8Y29uc3Qgdm9pZCo+KF9fcCksIF9fYywgX19uKTsg
fQ0KDQogIHVzaW5nIDo6c3RyY2hyOw0KDQogIGlubGluZSBjaGFyKg0KICBzdHJjaHIoY2hhciog
X19zMSwgaW50IF9fbikNCiAgeyByZXR1cm4gX19idWlsdGluX3N0cmNocihjb25zdF9jYXN0PGNv
bnN0IGNoYXIqPihfX3MxKSwgX19uKTsgfQ0KDQogIHVzaW5nIDo6c3RycGJyazsNCg0KICBpbmxp
bmUgY2hhcioNCiAgc3RycGJyayhjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3MyKQ0KICB7IHJl
dHVybiBfX2J1aWx0aW5fc3RycGJyayhjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihfX3MxKSwgX19z
Mik7IH0NCg0KICB1c2luZyA6OnN0cnJjaHI7DQoNCiAgaW5saW5lIGNoYXIqDQogIHN0cnJjaHIo
Y2hhciogX19zMSwgaW50IF9fbikNCiAgeyByZXR1cm4gX19idWlsdGluX3N0cnJjaHIoY29uc3Rf
Y2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fbik7IH0NCg0KICB1c2luZyA6OnN0cnN0cjsNCg0K
ICBpbmxpbmUgY2hhcioNCiAgc3Ryc3RyKGNoYXIqIF9fczEsIGNvbnN0IGNoYXIqIF9fczIpDQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9zdHJzdHIoY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oX19zMSks
IF9fczIpOyB9DQp9DQojIDQ1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L2NoYXJfdHJhaXRzLmgiIDIgMw0KDQoNCm5hbWVzcGFjZSBzdGQNCnsNCg0KDQoNCiAgdGVtcGxh
dGU8Y2xhc3MgX0NoYXJUPg0KICAgIHN0cnVjdCBjaGFyX3RyYWl0cw0KICAgIHsNCiAgICAgIHR5
cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCg0KICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dF90eXBlOw0KICAgICAgdHlwZWRlZiBzdHJlYW1wb3MgcG9zX3R5cGU7DQogICAgICB0eXBlZGVm
IHN0cmVhbW9mZiBvZmZfdHlwZTsNCiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7
DQoNCiAgICAgIHN0YXRpYyB2b2lkDQogICAgICBhc3NpZ24oY2hhcl90eXBlJiBfX2MxLCBjb25z
dCBjaGFyX3R5cGUmIF9fYzIpDQogICAgICB7IF9fYzEgPSBfX2MyOyB9DQoNCiAgICAgIHN0YXRp
YyBib29sDQogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYg
X19jMikNCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQ0KDQogICAgICBzdGF0aWMgYm9v
bA0KICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIp
DQogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQ0KDQogICAgICBzdGF0aWMgaW50DQogICAg
ICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBz
aXplX3QgX19uKQ0KICAgICAgew0KICAgICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBf
X247ICsrX19pKQ0KICAgICAgICAgIGlmICghZXEoX19zMVtfX2ldLCBfX3MyW19faV0pKQ0KICAg
ICAgICAgICAgcmV0dXJuIGx0KF9fczFbX19pXSwgX19zMltfX2ldKSA/IC0xIDogMTsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgICB9DQoNCiAgICAgIHN0YXRpYyBzaXplX3QNCiAgICAgIGxlbmd0
aChjb25zdCBjaGFyX3R5cGUqIF9fcykNCiAgICAgIHsNCiAgICAgICAgY29uc3QgY2hhcl90eXBl
KiBfX3AgPSBfX3M7DQogICAgICAgIHdoaWxlICgqX19wKSArK19fcDsNCiAgICAgICAgcmV0dXJu
IChfX3AgLSBfX3MpOw0KICAgICAgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKg0K
ICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90
eXBlJiBfX2EpDQogICAgICB7DQogICAgICAgIGZvciAoY29uc3QgY2hhcl90eXBlKiBfX3AgPSBf
X3M7IHNpemVfdChfX3AgLSBfX3MpIDwgX19uOyArK19fcCkNCiAgICAgICAgICBpZiAoKl9fcCA9
PSBfX2EpIHJldHVybiBfX3A7DQogICAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KDQogICAgICBz
dGF0aWMgY2hhcl90eXBlKg0KICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJf
dHlwZSogX19zMiwgc2l6ZV90IF9fbikNCiAgICAgIHsgcmV0dXJuIChjaGFyX3R5cGUqKSBtZW1t
b3ZlKF9fczEsIF9fczIsIF9fbiAqIHNpemVvZihjaGFyX3R5cGUpKTsgfQ0KDQogICAgICBzdGF0
aWMgY2hhcl90eXBlKg0KICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlw
ZSogX19zMiwgc2l6ZV90IF9fbikNCiAgICAgIHsgcmV0dXJuIChjaGFyX3R5cGUqKSBtZW1jcHko
X19zMSwgX19zMiwgX19uICogc2l6ZW9mKGNoYXJfdHlwZSkpOyB9DQoNCiAgICAgIHN0YXRpYyBj
aGFyX3R5cGUqDQogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNoYXJf
dHlwZSBfX2EpDQogICAgICB7DQogICAgICAgIGZvciAoY2hhcl90eXBlKiBfX3AgPSBfX3M7IF9f
cCA8IF9fcyArIF9fbjsgKytfX3ApDQogICAgICAgICAgYXNzaWduKCpfX3AsIF9fYSk7DQogICAg
ICAgIHJldHVybiBfX3M7DQogICAgICB9DQoNCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUNCiAgICAg
IHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKQ0KICAgICAgeyByZXR1cm4gY2hhcl90
eXBlKF9fYyk7IH0NCg0KICAgICAgc3RhdGljIGludF90eXBlDQogICAgICB0b19pbnRfdHlwZShj
b25zdCBjaGFyX3R5cGUmIF9fYykgeyByZXR1cm4gaW50X3R5cGUoX19jKTsgfQ0KDQogICAgICBz
dGF0aWMgYm9vbA0KICAgICAgZXFfaW50X3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYzEsIGNvbnN0
IGludF90eXBlJiBfX2MyKQ0KICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9DQoNCiAgICAg
IHN0YXRpYyBpbnRfdHlwZQ0KICAgICAgZW9mKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50X3R5
cGU+KC0xKTsgfQ0KDQogICAgICBzdGF0aWMgaW50X3R5cGUNCiAgICAgIG5vdF9lb2YoY29uc3Qg
aW50X3R5cGUmIF9fYykNCiAgICAgIHsgcmV0dXJuIGVxX2ludF90eXBlKF9fYywgZW9mKCkpID8g
aW50X3R5cGUoMCkgOiBfX2M7IH0NCiAgICB9Ow0KDQoNCg0KICB0ZW1wbGF0ZTw+DQogICAgc3Ry
dWN0IGNoYXJfdHJhaXRzPGNoYXI+DQogICAgew0KICAgICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlw
ZTsNCiAgICAgIHR5cGVkZWYgaW50IGludF90eXBlOw0KICAgICAgdHlwZWRlZiBzdHJlYW1wb3Mg
cG9zX3R5cGU7DQogICAgICB0eXBlZGVmIHN0cmVhbW9mZiBvZmZfdHlwZTsNCiAgICAgIHR5cGVk
ZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7DQoNCiAgICAgIHN0YXRpYyB2b2lkDQogICAgICBhc3Np
Z24oY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpDQogICAgICB7IF9fYzEg
PSBfX2MyOyB9DQoNCiAgICAgIHN0YXRpYyBib29sDQogICAgICBlcShjb25zdCBjaGFyX3R5cGUm
IF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikNCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19j
MjsgfQ0KDQogICAgICBzdGF0aWMgYm9vbA0KICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBfX2Mx
LCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpDQogICAgICB7IHJldHVybiBfX2MxIDwgX19jMjsgfQ0K
DQogICAgICBzdGF0aWMgaW50DQogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwg
Y29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQ0KICAgICAgeyByZXR1cm4gbWVtY21w
KF9fczEsIF9fczIsIF9fbik7IH0NCg0KICAgICAgc3RhdGljIHNpemVfdA0KICAgICAgbGVuZ3Ro
KGNvbnN0IGNoYXJfdHlwZSogX19zKQ0KICAgICAgeyByZXR1cm4gc3RybGVuKF9fcyk7IH0NCg0K
ICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoNCiAgICAgIGZpbmQoY29uc3QgY2hhcl90eXBl
KiBfX3MsIHNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlwZSYgX19hKQ0KICAgICAgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4obWVtY2hyKF9fcywgX19hLCBfX24pKTsgfQ0K
DQogICAgICBzdGF0aWMgY2hhcl90eXBlKg0KICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNv
bnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNoYXJfdHlwZSo+KG1lbW1vdmUoX19zMSwgX19zMiwgX19uKSk7IH0NCg0KICAgICAgc3Rh
dGljIGNoYXJfdHlwZSoNCiAgICAgIGNvcHkoY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5
cGUqIF9fczIsIHNpemVfdCBfX24pDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5
cGUqPihtZW1jcHkoX19zMSwgX19zMiwgX19uKSk7IH0NCg0KICAgICAgc3RhdGljIGNoYXJfdHlw
ZSoNCiAgICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY2hhcl90eXBlIF9f
YSkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KG1lbXNldChfX3MsIF9f
YSwgX19uKSk7IH0NCg0KICAgICAgc3RhdGljIGNoYXJfdHlwZQ0KICAgICAgdG9fY2hhcl90eXBl
KGNvbnN0IGludF90eXBlJiBfX2MpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5
cGU+KF9fYyk7IH0NCg0KDQoNCiAgICAgIHN0YXRpYyBpbnRfdHlwZQ0KICAgICAgdG9faW50X3R5
cGUoY29uc3QgY2hhcl90eXBlJiBfX2MpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRf
dHlwZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKSk7IH0NCg0KICAgICAgc3RhdGlj
IGJvb2wNCiAgICAgIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRf
dHlwZSYgX19jMikNCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQ0KDQogICAgICBzdGF0
aWMgaW50X3R5cGUNCiAgICAgIGVvZigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigo
LTEpKTsgfQ0KDQogICAgICBzdGF0aWMgaW50X3R5cGUNCiAgICAgIG5vdF9lb2YoY29uc3QgaW50
X3R5cGUmIF9fYykNCiAgICAgIHsgcmV0dXJuIChfX2MgPT0gZW9mKCkpID8gMCA6IF9fYzsgfQ0K
ICB9Ow0KIyAyNjkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvY2hhcl90
cmFpdHMuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+
DQogICAgc3RydWN0IF9DaGFyX3RyYWl0c19tYXRjaA0KICAgIHsNCiAgICAgIF9DaGFyVCBfTV9j
Ow0KICAgICAgX0NoYXJfdHJhaXRzX21hdGNoKF9DaGFyVCBjb25zdCYgX19jKSA6IF9NX2MoX19j
KSB7IH0NCg0KICAgICAgYm9vbA0KICAgICAgb3BlcmF0b3IoKShfQ2hhclQgY29uc3QmIF9fYSkg
eyByZXR1cm4gX1RyYWl0czo6ZXEoX01fYywgX19hKTsgfQ0KICAgIH07DQp9DQojIDQ3ICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pb3MiIDIgMw0KDQojIDEgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlZndkLmgiIDEgMw0KIyA0NCAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2NhbGVmd2QuaCIgMw0KDQoNCiMgMSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvYysr
bG9jYWxlLmgiIDEgMw0KIyAzNiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4
Ni1wYy1taW5ndzMyL2JpdHMvYysrbG9jYWxlLmgiIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvY2xvY2FsZSIgMSAzDQojIDQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9jbG9jYWxlIiAzDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9s
b2NhbGUuaCIgMSAzDQojIDU3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2xvY2FsZS5oIiAz
DQpzdHJ1Y3QgbGNvbnYNCnsNCiAgICAgICAgY2hhciogZGVjaW1hbF9wb2ludDsNCiAgICAgICAg
Y2hhciogdGhvdXNhbmRzX3NlcDsNCiAgICAgICAgY2hhciogZ3JvdXBpbmc7DQogICAgICAgIGNo
YXIqIGludF9jdXJyX3N5bWJvbDsNCiAgICAgICAgY2hhciogY3VycmVuY3lfc3ltYm9sOw0KICAg
ICAgICBjaGFyKiBtb25fZGVjaW1hbF9wb2ludDsNCiAgICAgICAgY2hhciogbW9uX3Rob3VzYW5k
c19zZXA7DQogICAgICAgIGNoYXIqIG1vbl9ncm91cGluZzsNCiAgICAgICAgY2hhciogcG9zaXRp
dmVfc2lnbjsNCiAgICAgICAgY2hhciogbmVnYXRpdmVfc2lnbjsNCiAgICAgICAgY2hhciBpbnRf
ZnJhY19kaWdpdHM7DQogICAgICAgIGNoYXIgZnJhY19kaWdpdHM7DQogICAgICAgIGNoYXIgcF9j
c19wcmVjZWRlczsNCiAgICAgICAgY2hhciBwX3NlcF9ieV9zcGFjZTsNCiAgICAgICAgY2hhciBu
X2NzX3ByZWNlZGVzOw0KICAgICAgICBjaGFyIG5fc2VwX2J5X3NwYWNlOw0KICAgICAgICBjaGFy
IHBfc2lnbl9wb3NuOw0KICAgICAgICBjaGFyIG5fc2lnbl9wb3NuOw0KfTsNCg0KDQpleHRlcm4g
IkMiIHsNCg0KDQpjaGFyKiBzZXRsb2NhbGUgKGludCwgY29uc3QgY2hhciopOw0Kc3RydWN0IGxj
b252KiBsb2NhbGVjb252ICh2b2lkKTsNCiMgOTQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
bG9jYWxlLmgiIDMNCn0NCiMgNTAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Ns
b2NhbGUiIDIgMw0KDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQNCnsNCiAgdXNpbmcgOjpsY29udjsN
CiAgdXNpbmcgOjpzZXRsb2NhbGU7DQogIHVzaW5nIDo6bG9jYWxlY29udjsNCn0NCiMgMzcgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2MrK2xv
Y2FsZS5oIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KICB0eXBlZGVmIGludCogX19jX2xvY2Fs
ZTsNCn0NCiMgNDcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxl
ZndkLmgiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jbGltaXRz
IiAxIDMNCiMgNDggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2NsaW1pdHMiIDMN
Cg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4x
L2luY2x1ZGUvbGltaXRzLmgiIDEgMw0KIyA1MCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvY2xpbWl0cyIgMiAzDQojIDQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9iaXRzL2xvY2FsZWZ3ZC5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvY2N0eXBlIiAxIDMNCiMgNDcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYz
L2NjdHlwZSIgMw0KIyA2NiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY2N0eXBl
IiAzDQpuYW1lc3BhY2Ugc3RkDQp7DQogIHVzaW5nIDo6aXNhbG51bTsNCiAgdXNpbmcgOjppc2Fs
cGhhOw0KICB1c2luZyA6OmlzY250cmw7DQogIHVzaW5nIDo6aXNkaWdpdDsNCiAgdXNpbmcgOjpp
c2dyYXBoOw0KICB1c2luZyA6OmlzbG93ZXI7DQogIHVzaW5nIDo6aXNwcmludDsNCiAgdXNpbmcg
Ojppc3B1bmN0Ow0KICB1c2luZyA6Omlzc3BhY2U7DQogIHVzaW5nIDo6aXN1cHBlcjsNCiAgdXNp
bmcgOjppc3hkaWdpdDsNCiAgdXNpbmcgOjp0b2xvd2VyOw0KICB1c2luZyA6OnRvdXBwZXI7DQp9
DQojIDQ5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZWZ3ZC5o
IiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvc3RyaW5nIiAxIDMN
CiMgNDQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL3N0cmluZyIgMw0KDQoNCg0K
DQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMSAzDQojIDUz
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9tZW1vcnkiIDMNCg0KIyAxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAxIDMNCiMg
NjcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgi
IDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3N0ZGxpYiIgMSAzDQoj
IDQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jc3RkbGliIiAzDQojIDg0ICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jc3RkbGliIiAzDQpuYW1lc3BhY2Ugc3Rk
DQp7DQogIHVzaW5nIDo6ZGl2X3Q7DQogIHVzaW5nIDo6bGRpdl90Ow0KDQogIHVzaW5nIDo6YWJv
cnQ7DQogIHVzaW5nIDo6YWJzOw0KICB1c2luZyA6OmF0ZXhpdDsNCiAgdXNpbmcgOjphdG9mOw0K
ICB1c2luZyA6OmF0b2k7DQogIHVzaW5nIDo6YXRvbDsNCiAgdXNpbmcgOjpic2VhcmNoOw0KICB1
c2luZyA6OmNhbGxvYzsNCiAgdXNpbmcgOjpkaXY7DQogIHVzaW5nIDo6ZXhpdDsNCiAgdXNpbmcg
OjpmcmVlOw0KICB1c2luZyA6OmdldGVudjsNCiAgdXNpbmcgOjpsYWJzOw0KICB1c2luZyA6Omxk
aXY7DQogIHVzaW5nIDo6bWFsbG9jOw0KICB1c2luZyA6Om1ibGVuOw0KICB1c2luZyA6Om1ic3Rv
d2NzOw0KICB1c2luZyA6Om1idG93YzsNCiAgdXNpbmcgOjpxc29ydDsNCiAgdXNpbmcgOjpyYW5k
Ow0KICB1c2luZyA6OnJlYWxsb2M7DQogIHVzaW5nIDo6c3JhbmQ7DQogIHVzaW5nIDo6c3RydG9k
Ow0KICB1c2luZyA6OnN0cnRvbDsNCiAgdXNpbmcgOjpzdHJ0b3VsOw0KICB1c2luZyA6OnN5c3Rl
bTsNCiAgdXNpbmcgOjp3Y3N0b21iczsNCiAgdXNpbmcgOjp3Y3RvbWI7DQoNCiAgaW5saW5lIGxv
bmcNCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBsYWJzKF9faSk7IH0NCg0KICBpbmxpbmUgbGRp
dl90DQogIGRpdihsb25nIF9faSwgbG9uZyBfX2opIHsgcmV0dXJuIGxkaXYoX19pLCBfX2opOyB9
DQp9DQojIDY4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdv
YmFzZS5oIiAyIDMNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9uZXci
IDEgMw0KIyA0NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvbmV3IiAzDQpleHRl
cm4gIkMrKyIgew0KDQpuYW1lc3BhY2Ugc3RkDQp7DQoNCg0KICBjbGFzcyBiYWRfYWxsb2MgOiBw
dWJsaWMgZXhjZXB0aW9uDQogIHsNCiAgcHVibGljOg0KICAgIGJhZF9hbGxvYygpIHRocm93KCkg
eyB9DQoNCg0KICAgIHZpcnR1YWwgfmJhZF9hbGxvYygpIHRocm93KCk7DQogIH07DQoNCiAgc3Ry
dWN0IG5vdGhyb3dfdCB7IH07DQogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsNCg0K
DQogIHR5cGVkZWYgdm9pZCAoKm5ld19oYW5kbGVyKSgpOw0KDQogIG5ld19oYW5kbGVyIHNldF9u
ZXdfaGFuZGxlcihuZXdfaGFuZGxlcik7DQp9DQojIDc5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9uZXciIDMNCnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCkgdGhyb3cg
KHN0ZDo6YmFkX2FsbG9jKTsNCnZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90KSB0aHJv
dyAoc3RkOjpiYWRfYWxsb2MpOw0Kdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHRocm93KCk7
DQp2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqKSB0aHJvdygpOw0Kdm9pZCogb3BlcmF0b3Ig
bmV3KHN0ZDo6c2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7DQp2b2lkKiBv
cGVyYXRvciBuZXdbXShzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygp
Ow0Kdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhy
b3coKTsNCnZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCosIGNvbnN0IHN0ZDo6bm90aHJvd190
JikgdGhyb3coKTsNCg0KDQppbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90LCB2
b2lkKiBfX3ApIHRocm93KCkgeyByZXR1cm4gX19wOyB9DQppbmxpbmUgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc3RkOjpzaXplX3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7IHJldHVybiBfX3A7IH0NCg0K
fQ0KIyA3MCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMiAzDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9z
dGxfcGFpci5oIiAxIDMNCiMgNjQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX3BhaXIuaCIgMw0KbmFtZXNwYWNlIHN0ZA0Kew0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VDEsIGNsYXNzIF9UMj4NCnN0cnVjdCBwYWlyIHsNCiAgdHlwZWRlZiBfVDEgZmlyc3RfdHlwZTsN
CiAgdHlwZWRlZiBfVDIgc2Vjb25kX3R5cGU7DQoNCiAgX1QxIGZpcnN0Ow0KICBfVDIgc2Vjb25k
Ow0KDQoNCg0KDQogIHBhaXIoKSA6IGZpcnN0KCksIHNlY29uZCgpIHt9DQoNCg0KDQoNCiAgcGFp
cihjb25zdCBfVDEmIF9fYSwgY29uc3QgX1QyJiBfX2IpIDogZmlyc3QoX19hKSwgc2Vjb25kKF9f
Yikge30NCg0KDQogIHRlbXBsYXRlIDxjbGFzcyBfVTEsIGNsYXNzIF9VMj4NCiAgcGFpcihjb25z
dCBwYWlyPF9VMSwgX1UyPiYgX19wKSA6IGZpcnN0KF9fcC5maXJzdCksIHNlY29uZChfX3Auc2Vj
b25kKSB7fQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQppbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1Qx
LCBfVDI+JiBfX3kpDQp7DQogIHJldHVybiBfX3guZmlyc3QgPT0gX195LmZpcnN0ICYmIF9feC5z
ZWNvbmQgPT0gX195LnNlY29uZDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBf
VDI+DQppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29u
c3QgcGFpcjxfVDEsIF9UMj4mIF9feSkNCnsNCiAgcmV0dXJuIF9feC5maXJzdCA8IF9feS5maXJz
dCB8fA0KICAgICAgICAgKCEoX195LmZpcnN0IDwgX194LmZpcnN0KSAmJiBfX3guc2Vjb25kIDwg
X195LnNlY29uZCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly
PF9UMSwgX1QyPiYgX195KSB7DQogIHJldHVybiAhKF9feCA9PSBfX3kpOw0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBw
YWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7DQogIHJldHVy
biBfX3kgPCBfX3g7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KaW5s
aW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWly
PF9UMSwgX1QyPiYgX195KSB7DQogIHJldHVybiAhKF9feSA8IF9feCk7DQp9DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPg0KaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBw
YWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KSB7DQogIHJldHVy
biAhKF9feCA8IF9feSk7DQp9DQojIDE0MCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfcGFpci5oIiAzDQp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQoN
Cg0KaW5saW5lIHBhaXI8X1QxLCBfVDI+IG1ha2VfcGFpcihfVDEgX194LCBfVDIgX195KQ0KDQoN
Cg0Kew0KICByZXR1cm4gcGFpcjxfVDEsIF9UMj4oX194LCBfX3kpOw0KfQ0KDQp9DQojIDcyICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMN
CiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy90eXBlX3RyYWl0cy5o
IiAxIDMNCiMgNTMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvdHlwZV90
cmFpdHMuaCIgMw0KIyA5MCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy90
eXBlX3RyYWl0cy5oIiAzDQpzdHJ1Y3QgX190cnVlX3R5cGUge307DQpzdHJ1Y3QgX19mYWxzZV90
eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0IF9fdHlwZV90cmFpdHMgew0K
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSB0aGlzX2R1bW15X21lbWJlcl9tdXN0X2JlX2ZpcnN0Ow0K
IyAxMTMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvdHlwZV90cmFpdHMu
aCIgMw0KICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1
Y3RvcjsNCiAgIHR5cGVkZWYgX19mYWxzZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7DQogICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJh
dG9yOw0KICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsNCiAg
IHR5cGVkZWYgX19mYWxzZV90eXBlIGlzX1BPRF90eXBlOw0KfTsNCg0KDQoNCg0KdGVtcGxhdGU8
PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxib29sPiB7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhh
c190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhh
c190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190
cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190
cml2aWFsX2Rlc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOw0K
fTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7DQogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7DQogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7DQogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGlzX1BPRF90eXBlOw0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxzaWdu
ZWQgY2hhcj4gew0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2Nv
bnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0
cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOw0K
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsNCn07DQoNCnRlbXBsYXRlPD4gc3Ry
dWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgY2hhcj4gew0KICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo
YXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlw
ZTsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8d2NoYXJfdD4gew0KICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOw0KICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOw0KICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOw0KICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBpc19QT0RfdHlwZTsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFp
dHM8c2hvcnQ+IHsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9j
b25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25z
dHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsN
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0
cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIHNob3J0PiB7DQogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2Rlc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90
eXBlOw0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxpbnQ+IHsNCiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsNCiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsNCiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgaXNfUE9EX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRz
PHVuc2lnbmVkIGludD4gew0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZh
dWx0X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5
X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25t
ZW50X29wZXJhdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsNCn07DQoNCnRlbXBsYXRl
PD4gc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZz4gew0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo
YXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBo
YXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yOw0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsN
Cn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgbG9uZz4gew0K
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOw0K
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOw0KICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOw0KICAg
dHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOw0KICAgdHlwZWRlZiBf
X3RydWVfdHlwZSBpc19QT0RfdHlwZTsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90
cmFpdHM8bG9uZyBsb25nPiB7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rl
ZmF1bHRfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Nv
cHlfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOw0KfTsNCg0KdGVtcGxh
dGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBsb25nIGxvbmc+IHsNCiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsNCiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgaXNfUE9EX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGZs
b2F0PiB7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0
b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7DQogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOw0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3Qg
X190eXBlX3RyYWl0czxkb3VibGU+IHsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfY29weV9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7DQp9Ow0KDQp0
ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgZG91YmxlPiB7DQogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7DQogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7DQogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7DQogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7DQogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGlzX1BPRF90eXBlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcD4NCnN0cnVjdCBfX3R5cGVf
dHJhaXRzPF9UcCo+IHsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVs
dF9jb25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVu
dF9vcGVyYXRvcjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjsNCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5cGU7DQp9Ow0KDQoNCg0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBfSXNfaW50ZWdlciB7DQogIHR5cGVkZWYgX19mYWxz
ZV90eXBlIF9JbnRlZ3JhbDsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPGJv
b2w+IHsNCiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7DQp9Ow0KDQp0ZW1wbGF0ZTw+
IHN0cnVjdCBfSXNfaW50ZWdlcjxjaGFyPiB7DQogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVn
cmFsOw0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8c2lnbmVkIGNoYXI+IHsN
CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVj
dCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBjaGFyPiB7DQogIHR5cGVkZWYgX190cnVlX3R5cGUgX0lu
dGVncmFsOw0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8d2NoYXJfdD4gew0K
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0
IF9Jc19pbnRlZ2VyPHNob3J0PiB7DQogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOw0K
fTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgc2hvcnQ+IHsNCiAg
dHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBf
SXNfaW50ZWdlcjxpbnQ+IHsNCiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7DQp9Ow0K
DQp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHsNCiAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50
ZWdlcjxsb25nPiB7DQogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOw0KfTsNCg0KdGVt
cGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgbG9uZz4gew0KICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9JbnRlZ3JhbDsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2Vy
PGxvbmcgbG9uZz4gew0KICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsNCn07DQoNCnRl
bXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmcgbG9uZz4gew0KICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
c3RydWN0IF9Jc19ub3JtYWxfaXRlcmF0b3Igew0KICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX05v
cm1hbDsNCn07DQoNCg0KbmFtZXNwYWNlIF9fZ251X2N4eA0Kew0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+IGNsYXNzIF9fbm9ybWFsX2l0ZXJhdG9y
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+
DQpzdHJ1Y3QgX0lzX25vcm1hbF9pdGVyYXRvcjwgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRv
cjxfSXRlcmF0b3IsIF9Db250YWluZXI+ID4gew0KICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfTm9y
bWFsOw0KfTsNCiMgNzMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3Rs
X2FsZ29iYXNlLmgiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDEgMw0KIyA2OCAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzDQoNCm5h
bWVzcGFjZSBzdGQNCnsNCiMgODAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMw0KICBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3Jf
dGFnIHt9Ow0KDQogIHN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfdGFnIHt9Ow0KDQogIHN0cnVjdCBm
b3J3YXJkX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90YWcge307DQoNCiAg
c3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0
b3JfdGFnIHt9Ow0KDQogIHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyA6IHB1Ymxp
YyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsNCiMgMTAwICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NhdGVnb3J5LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9EaXN0YW5j
ZSA9IHB0cmRpZmZfdCwNCiAgICAgICAgICAgdHlwZW5hbWUgX1BvaW50ZXIgPSBfVHAqLCB0eXBl
bmFtZSBfUmVmZXJlbmNlID0gX1RwJj4NCiAgICBzdHJ1Y3QgaXRlcmF0b3Igew0KDQogICAgICB0
eXBlZGVmIF9DYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsNCg0KICAgICAgdHlwZWRlZiBfVHAg
dmFsdWVfdHlwZTsNCg0KICAgICAgdHlwZWRlZiBfRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOw0K
DQogICAgICB0eXBlZGVmIF9Qb2ludGVyIHBvaW50ZXI7DQoNCiAgICAgIHR5cGVkZWYgX1JlZmVy
ZW5jZSByZWZlcmVuY2U7DQogICAgfTsNCg0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3I+DQogICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0cyB7DQogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9JdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7
DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBl
Ow0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZm
ZXJlbmNlX3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cG9pbnRlciBw
b2ludGVyOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnJlZmVyZW5jZSByZWZl
cmVuY2U7DQogICAgfTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+DQogICAgc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxfVHAqPiB7DQogICAgICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5Ow0KICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsN
CiAgICAgIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsNCiAgICAgIHR5cGVkZWYg
X1RwKiBwb2ludGVyOw0KICAgICAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsNCiAgICB9Ow0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCiAgICBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGNvbnN0
IF9UcCo+IHsNCiAgICAgIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0
b3JfY2F0ZWdvcnk7DQogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOw0KICAgICAgdHlwZWRl
ZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOw0KICAgICAgdHlwZWRlZiBjb25zdCBfVHAqIHBv
aW50ZXI7DQogICAgICB0eXBlZGVmIGNvbnN0IF9UcCYgcmVmZXJlbmNlOw0KICAgIH07DQoNCg0K
DQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+DQogICAgaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5DQogICAgX19pdGVyYXRv
cl9jYXRlZ29yeShjb25zdCBfSXRlciYpDQogICAgeyByZXR1cm4gdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkoKTsgfQ0KDQp9DQojIDc0ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMNCiMgMSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9m
dW5jcy5oIiAxIDMNCiMgNjggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
c3RsX2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMSAzDQojIDM5ICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMw0KIyA2OSAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9mdW5jcy5o
IiAyIDMNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlcmF0b3I+DQogIGlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0
b3I+OjpkaWZmZXJlbmNlX3R5cGUNCiAgX19kaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIGlucHV0X2l0ZXJhdG9yX3RhZykNCiAgew0KDQogICAN
Cg0KICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZSBfX24gPSAwOw0KICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgew0KICAgICAg
KytfX2ZpcnN0OyArK19fbjsNCiAgICB9DQogICAgcmV0dXJuIF9fbjsNCiAgfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQogIGlubGluZSB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQogIF9f
ZGlzdGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsDQogICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpDQog
IHsNCg0KICAgDQogICAgcmV0dXJuIF9fbGFzdCAtIF9fZmlyc3Q7DQogIH0NCiMgMTExICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNz
LmgiIDMNCnRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPg0KICBpbmxpbmUgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQogIGRp
c3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkNCiAg
ew0KDQogICAgcmV0dXJuIF9fZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2l0ZXJhdG9yX2Nh
dGVnb3J5KF9fZmlyc3QpKTsNCiAgfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0
eXBlbmFtZSBfRGlzdGFuY2U+DQogIGlubGluZSB2b2lkDQogIF9fYWR2YW5jZShfSW5wdXRJdGVy
JiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykNCiAgew0KDQogICANCiAg
ICB3aGlsZSAoX19uLS0pICsrX19pOw0KICB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZT4NCiAgaW5saW5lIHZvaWQNCiAgX19h
ZHZhbmNlKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwNCiAgICAg
ICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQ0KICB7DQoNCiAgIA0KDQogICAgaWYg
KF9fbiA+IDApDQogICAgICB3aGlsZSAoX19uLS0pICsrX19pOw0KICAgIGVsc2UNCiAgICAgIHdo
aWxlIChfX24rKykgLS1fX2k7DQogIH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yLCB0eXBlbmFtZSBfRGlzdGFuY2U+DQogIGlubGluZSB2b2lkDQogIF9fYWR2YW5j
ZShfUmFuZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwNCiAgICAgICAgICAg
IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQ0KICB7DQoNCiAgIA0KICAgIF9faSArPSBfX247
DQogIH0NCiMgMTY0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9p
dGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMNCnRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBfRGlzdGFuY2U+DQogIGlubGluZSB2b2lkDQogIGFkdmFuY2UoX0lucHV0SXRl
cmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbikNCiAgew0KDQogICAgX19hZHZhbmNlKF9faSwgX19u
LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9faSkpOw0KICB9DQoNCn0NCiMgNzUgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMw0KIyAxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAxIDMNCiMg
NjggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgi
IDMNCm5hbWVzcGFjZSBzdGQNCnsNCiMgODkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y
Pg0KICAgIGNsYXNzIHJldmVyc2VfaXRlcmF0b3INCiAgICA6IHB1YmxpYyBpdGVyYXRvcjx0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnksDQogICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZh
bHVlX3R5cGUsDQogICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRz
PF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlciwNCiAgICAgICAgICAgICAg
ICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlPg0K
ICAgIHsNCiAgICBwcm90ZWN0ZWQ6DQogICAgICBfSXRlcmF0b3IgY3VycmVudDsNCg0KICAgIHB1
YmxpYzoNCiAgICAgIHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7DQogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZmZlcmVuY2VfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZSByZWZlcmVuY2U7DQogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyIHBvaW50ZXI7DQoNCiAg
ICBwdWJsaWM6DQoNCg0KDQogICAgICByZXZlcnNlX2l0ZXJhdG9yKCkgeyB9DQoNCg0KDQoNCiAg
ICAgIGV4cGxpY2l0DQogICAgICByZXZlcnNlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX194KSA6
IGN1cnJlbnQoX194KSB7IH0NCg0KDQoNCg0KICAgICAgcmV2ZXJzZV9pdGVyYXRvcihjb25zdCBy
ZXZlcnNlX2l0ZXJhdG9yJiBfX3gpDQogICAgICA6IGN1cnJlbnQoX194LmN1cnJlbnQpIHsgfQ0K
DQoNCg0KDQoNCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyPg0KICAgICAgICByZXZlcnNl
X2l0ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+JiBfX3gpDQogICAgICAgIDog
Y3VycmVudChfX3guYmFzZSgpKSB7IH0NCg0KDQoNCg0KICAgICAgaXRlcmF0b3JfdHlwZQ0KICAg
ICAgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0NCg0KDQoNCg0KDQoNCiAgICAgIHJl
ZmVyZW5jZQ0KICAgICAgb3BlcmF0b3IqKCkgY29uc3QNCiAgICAgIHsNCiAgICAgICAgX0l0ZXJh
dG9yIF9fdG1wID0gY3VycmVudDsNCiAgICAgICAgcmV0dXJuICotLV9fdG1wOw0KICAgICAgfQ0K
DQoNCg0KDQoNCg0KICAgICAgcG9pbnRlcg0KICAgICAgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuICYob3BlcmF0b3IqKCkpOyB9DQoNCg0KDQoNCg0KDQogICAgICByZXZlcnNlX2l0ZXJhdG9y
Jg0KICAgICAgb3BlcmF0b3IrKygpDQogICAgICB7DQogICAgICAgIC0tY3VycmVudDsNCiAgICAg
ICAgcmV0dXJuICp0aGlzOw0KICAgICAgfQ0KDQoNCg0KDQoNCg0KICAgICAgcmV2ZXJzZV9pdGVy
YXRvcg0KICAgICAgb3BlcmF0b3IrKyhpbnQpDQogICAgICB7DQogICAgICAgIHJldmVyc2VfaXRl
cmF0b3IgX190bXAgPSAqdGhpczsNCiAgICAgICAgLS1jdXJyZW50Ow0KICAgICAgICByZXR1cm4g
X190bXA7DQogICAgICB9DQoNCg0KDQoNCg0KDQogICAgICByZXZlcnNlX2l0ZXJhdG9yJg0KICAg
ICAgb3BlcmF0b3ItLSgpDQogICAgICB7DQogICAgICAgICsrY3VycmVudDsNCiAgICAgICAgcmV0
dXJuICp0aGlzOw0KICAgICAgfQ0KDQoNCg0KDQoNCg0KICAgICAgcmV2ZXJzZV9pdGVyYXRvciBv
cGVyYXRvci0tKGludCkNCiAgICAgIHsNCiAgICAgICAgcmV2ZXJzZV9pdGVyYXRvciBfX3RtcCA9
ICp0aGlzOw0KICAgICAgICArK2N1cnJlbnQ7DQogICAgICAgIHJldHVybiBfX3RtcDsNCiAgICAg
IH0NCg0KDQoNCg0KDQoNCiAgICAgIHJldmVyc2VfaXRlcmF0b3INCiAgICAgIG9wZXJhdG9yKyhk
aWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdA0KICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihjdXJyZW50IC0gX19uKTsgfQ0KDQoNCg0KDQoNCg0KICAgICAgcmV2ZXJzZV9pdGVyYXRvciYN
CiAgICAgIG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIF9fbikNCiAgICAgIHsNCiAgICAgICAg
Y3VycmVudCAtPSBfX247DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KDQoNCg0K
DQoNCiAgICAgIHJldmVyc2VfaXRlcmF0b3INCiAgICAgIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5
cGUgX19uKSBjb25zdA0KICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihjdXJyZW50ICsg
X19uKTsgfQ0KDQoNCg0KDQoNCg0KICAgICAgcmV2ZXJzZV9pdGVyYXRvciYNCiAgICAgIG9wZXJh
dG9yLT0oZGlmZmVyZW5jZV90eXBlIF9fbikNCiAgICAgIHsNCiAgICAgICAgY3VycmVudCArPSBf
X247DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KDQoNCg0KDQoNCiAgICAgIHJl
ZmVyZW5jZQ0KICAgICAgb3BlcmF0b3JbXShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdCB7IHJl
dHVybiAqKCp0aGlzICsgX19uKTsgfQ0KICAgIH07DQojIDI2OSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSXRlcmF0b3I+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj09KGNvbnN0IHJldmVy
c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LA0KICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJz
ZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpDQogICAgeyByZXR1cm4gX194LmJhc2UoKSA9PSBf
X3kuYmFzZSgpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPg0KICAgIGlubGlu
ZSBib29sDQogICAgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194LA0KICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9f
eSkNCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JdGVyYXRvcj4NCiAgICBpbmxpbmUgYm9vbA0KICAgIG9wZXJhdG9yIT0oY29u
c3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsDQogICAgICAgICAgICAgICBjb25z
dCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkNCiAgICB7IHJldHVybiAhKF9feCA9
PSBfX3kpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPg0KICAgIGlubGluZSBi
b29sDQogICAgb3BlcmF0b3I+KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194
LA0KICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkN
CiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0
b3I+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcjw9KGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX194LA0KICAgICAgICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX195KQ0KICAgIHsgcmV0dXJuICEoX195IDwgX194KTsgfQ0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4NCiAgICBpbmxpbmUgYm9vbA0KICAgIG9wZXJhdG9y
Pj0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsDQogICAgICAgICAgICAg
ICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkNCiAgICB7IHJldHVybiAh
KF9feCA8IF9feSk7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+DQogICAgaW5s
aW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBl
DQogICAgb3BlcmF0b3ItKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LA0K
ICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkNCiAg
ICB7IHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9JdGVyYXRvcj4NCiAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+DQog
ICAgb3BlcmF0b3IrKHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlIF9fbiwNCiAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3I+JiBfX3gpDQogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+KF9f
eC5iYXNlKCkgLSBfX24pOyB9DQojIDMyNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVy
Pg0KICAgIGNsYXNzIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yDQogICAgOiBwdWJsaWMgaXRlcmF0b3I8
b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4NCiAgICB7DQogICAg
cHJvdGVjdGVkOg0KICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOw0KDQogICAgcHVibGljOg0K
DQogICAgICB0eXBlZGVmIF9Db250YWluZXIgY29udGFpbmVyX3R5cGU7DQoNCg0KICAgICAgZXhw
bGljaXQNCiAgICAgIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCkgOiBjb250
YWluZXIoJl9feCkgeyB9DQojIDM1MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfaXRlcmF0b3IuaCIgMw0KICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3ImDQogICAg
ICBvcGVyYXRvcj0odHlwZW5hbWUgX0NvbnRhaW5lcjo6Y29uc3RfcmVmZXJlbmNlIF9fdmFsdWUp
DQogICAgICB7DQogICAgICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOw0KICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgICB9DQoNCg0KICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3Im
DQogICAgICBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICAgIGJhY2tfaW5z
ZXJ0X2l0ZXJhdG9yJg0KICAgICAgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9DQoNCg0K
ICAgICAgYmFja19pbnNlcnRfaXRlcmF0b3INCiAgICAgIG9wZXJhdG9yKysoaW50KSB7IHJldHVy
biAqdGhpczsgfQ0KICAgIH07DQojIDM4NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVy
Pg0KICAgIGlubGluZSBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPg0KICAgIGJhY2tf
aW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KQ0KICAgIHsgcmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJh
dG9yPF9Db250YWluZXI+KF9feCk7IH0NCiMgMzk3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250
YWluZXI+DQogICAgY2xhc3MgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yDQogICAgOiBwdWJsaWMgaXRl
cmF0b3I8b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4NCiAgICB7
DQogICAgcHJvdGVjdGVkOg0KICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOw0KDQogICAgcHVi
bGljOg0KDQogICAgICB0eXBlZGVmIF9Db250YWluZXIgY29udGFpbmVyX3R5cGU7DQoNCg0KICAg
ICAgZXhwbGljaXQgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCkgOiBjb250
YWluZXIoJl9feCkgeyB9DQojIDQyMiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfaXRlcmF0b3IuaCIgMw0KICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJg0KICAg
ICAgb3BlcmF0b3I9KHR5cGVuYW1lIF9Db250YWluZXI6OmNvbnN0X3JlZmVyZW5jZSBfX3ZhbHVl
KQ0KICAgICAgew0KICAgICAgICBjb250YWluZXItPnB1c2hfZnJvbnQoX192YWx1ZSk7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KDQogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0
b3ImDQogICAgICBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICAgIGZyb250
X2luc2VydF9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQ0K
DQoNCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRvcg0KICAgICAgb3BlcmF0b3IrKyhpbnQpIHsg
cmV0dXJuICp0aGlzOyB9DQogICAgfTsNCiMgNDUzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db250
YWluZXI+DQogICAgaW5saW5lIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPg0KICAg
IGZyb250X2luc2VydGVyKF9Db250YWluZXImIF9feCkNCiAgICB7IHJldHVybiBmcm9udF9pbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsgfQ0KIyA0NzAgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NvbnRhaW5lcj4NCiAgICBjbGFzcyBpbnNlcnRfaXRlcmF0b3INCiAgICA6IHB1YmxpYyBp
dGVyYXRvcjxvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPg0KICAg
IHsNCiAgICBwcm90ZWN0ZWQ6DQogICAgICBfQ29udGFpbmVyKiBjb250YWluZXI7DQogICAgICB0
eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOw0KDQogICAgcHVibGljOg0KDQogICAg
ICB0eXBlZGVmIF9Db250YWluZXIgY29udGFpbmVyX3R5cGU7DQoNCg0KDQoNCg0KICAgICAgaW5z
ZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCwgdHlwZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0
b3IgX19pKQ0KICAgICAgOiBjb250YWluZXIoJl9feCksIGl0ZXIoX19pKSB7fQ0KIyA1MTIgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMNCiAg
ICAgIGluc2VydF9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29u
dGFpbmVyOjpjb25zdF9yZWZlcmVuY2UgX192YWx1ZSkNCiAgICAgIHsNCiAgICAgICAgaXRlciA9
IGNvbnRhaW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUpOw0KICAgICAgICArK2l0ZXI7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KDQogICAgICBpbnNlcnRfaXRlcmF0b3ImDQog
ICAgICBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICAgIGluc2VydF9pdGVy
YXRvciYNCiAgICAgIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICAgIGlu
c2VydF9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQ0K
ICAgIH07DQojIDU0NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
aXRlcmF0b3IuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyLCB0eXBlbmFtZSBf
SXRlcmF0b3I+DQogICAgaW5saW5lIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPg0KICAgIGlu
c2VydGVyKF9Db250YWluZXImIF9feCwgX0l0ZXJhdG9yIF9faSkNCiAgICB7DQogICAgICByZXR1
cm4gaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IoX19pKSk7
DQogICAgfQ0KfQ0KDQpuYW1lc3BhY2UgX19nbnVfY3h4DQp7DQoNCg0KDQoNCg0KDQoNCiAgdXNp
bmcgc3RkOjppdGVyYXRvcl90cmFpdHM7DQogIHVzaW5nIHN0ZDo6aXRlcmF0b3I7DQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4NCiAgICBjbGFzcyBf
X25vcm1hbF9pdGVyYXRvcg0KICAgICAgOiBwdWJsaWMgaXRlcmF0b3I8dHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZhbHVlX3R5cGUs
DQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJh
dG9yPjo6ZGlmZmVyZW5jZV90eXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50ZXIsDQogICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlPg0KICAg
IHsNCiAgICBwcm90ZWN0ZWQ6DQogICAgICBfSXRlcmF0b3IgX01fY3VycmVudDsNCg0KICAgIHB1
YmxpYzoNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46
OmRpZmZlcmVuY2VfdHlwZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOw0KICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnBvaW50
ZXIgcG9pbnRlcjsNCg0KICAgICAgX19ub3JtYWxfaXRlcmF0b3IoKSA6IF9NX2N1cnJlbnQoX0l0
ZXJhdG9yKCkpIHsgfQ0KDQogICAgICBleHBsaWNpdA0KICAgICAgX19ub3JtYWxfaXRlcmF0b3Io
Y29uc3QgX0l0ZXJhdG9yJiBfX2kpIDogX01fY3VycmVudChfX2kpIHsgfQ0KDQoNCiAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyPg0KICAgICAgaW5saW5lIF9fbm9ybWFsX2l0ZXJhdG9yKGNv
bnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyLCBfQ29udGFpbmVyPiYgX19pKQ0KICAgICAgICA6
IF9NX2N1cnJlbnQoX19pLmJhc2UoKSkgeyB9DQoNCg0KICAgICAgcmVmZXJlbmNlDQogICAgICBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqX01fY3VycmVudDsgfQ0KDQogICAgICBwb2ludGVy
DQogICAgICBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gX01fY3VycmVudDsgfQ0KDQogICAg
ICBfX25vcm1hbF9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yKysoKSB7ICsrX01fY3VycmVudDsg
cmV0dXJuICp0aGlzOyB9DQoNCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yDQogICAgICBvcGVyYXRv
cisrKGludCkgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCsrKTsgfQ0KDQoN
CiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yJg0KICAgICAgb3BlcmF0b3ItLSgpIHsgLS1fTV9jdXJy
ZW50OyByZXR1cm4gKnRoaXM7IH0NCg0KICAgICAgX19ub3JtYWxfaXRlcmF0b3INCiAgICAgIG9w
ZXJhdG9yLS0oaW50KSB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50LS0pOyB9
DQoNCg0KICAgICAgcmVmZXJlbmNlDQogICAgICBvcGVyYXRvcltdKGNvbnN0IGRpZmZlcmVuY2Vf
dHlwZSYgX19uKSBjb25zdA0KICAgICAgeyByZXR1cm4gX01fY3VycmVudFtfX25dOyB9DQoNCiAg
ICAgIF9fbm9ybWFsX2l0ZXJhdG9yJg0KICAgICAgb3BlcmF0b3IrPShjb25zdCBkaWZmZXJlbmNl
X3R5cGUmIF9fbikNCiAgICAgIHsgX01fY3VycmVudCArPSBfX247IHJldHVybiAqdGhpczsgfQ0K
DQogICAgICBfX25vcm1hbF9pdGVyYXRvcg0KICAgICAgb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVu
Y2VfdHlwZSYgX19uKSBjb25zdA0KICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01f
Y3VycmVudCArIF9fbik7IH0NCg0KICAgICAgX19ub3JtYWxfaXRlcmF0b3ImDQogICAgICBvcGVy
YXRvci09KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKQ0KICAgICAgeyBfTV9jdXJyZW50IC09
IF9fbjsgcmV0dXJuICp0aGlzOyB9DQoNCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yDQogICAgICBv
cGVyYXRvci0oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pIGNvbnN0DQogICAgICB7IHJldHVy
biBfX25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50IC0gX19uKTsgfQ0KDQogICAgICBkaWZmZXJl
bmNlX3R5cGUNCiAgICAgIG9wZXJhdG9yLShjb25zdCBfX25vcm1hbF9pdGVyYXRvciYgX19pKSBj
b25zdA0KICAgICAgeyByZXR1cm4gX01fY3VycmVudCAtIF9faS5fTV9jdXJyZW50OyB9DQoNCiAg
ICAgIGNvbnN0IF9JdGVyYXRvciYNCiAgICAgIGJhc2UoKSBjb25zdCB7IHJldHVybiBfTV9jdXJy
ZW50OyB9DQogICAgfTsNCiMgNjQ5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL3N0bF9pdGVyYXRvci5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5
cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+DQogIGlubGluZSBib29sDQog
IG9wZXJhdG9yPT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5l
cj4mIF9fbGhzLA0KICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRv
clIsIF9Db250YWluZXI+JiBfX3JocykNCiAgeyByZXR1cm4gX19saHMuYmFzZSgpID09IF9fcmhz
LmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0Nv
bnRhaW5lcj4NCiAgaW5saW5lIGJvb2wNCiAgb3BlcmF0b3I9PShjb25zdCBfX25vcm1hbF9pdGVy
YXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywNCiAgICAgICAgICAgICBjb25zdCBf
X25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykNCiAgeyByZXR1
cm4gX19saHMuYmFzZSgpID09IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+DQog
IGlubGluZSBib29sDQogIG9wZXJhdG9yIT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh
dG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLA0KICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0
ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykNCiAgeyByZXR1cm4gX19saHMu
YmFzZSgpICE9IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4NCiAgaW5saW5lIGJvb2wNCiAgb3BlcmF0b3IhPShjb25z
dCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywNCiAgICAg
ICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBf
X3JocykNCiAgeyByZXR1cm4gX19saHMuYmFzZSgpICE9IF9fcmhzLmJhc2UoKTsgfQ0KDQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5h
bWUgX0NvbnRhaW5lcj4NCiAgaW5saW5lIGJvb2wNCiAgb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWluZXI+JiBfX2xocywNCiAgICAgICAgICAgIGNv
bnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykNCiAg
eyByZXR1cm4gX19saHMuYmFzZSgpIDwgX19yaHMuYmFzZSgpOyB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPg0KICBpbmxpbmUgYm9vbA0KICBv
cGVyYXRvcjwoY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYg
X19saHMsDQogICAgICAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBf
Q29udGFpbmVyPiYgX19yaHMpDQogIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA8IF9fcmhzLmJhc2Uo
KTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRv
clIsIHR5cGVuYW1lIF9Db250YWluZXI+DQogIGlubGluZSBib29sDQogIG9wZXJhdG9yPihjb25z
dCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsDQogICAg
ICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYg
X19yaHMpDQogIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4NCiAgaW5saW5l
IGJvb2wNCiAgb3BlcmF0b3I+KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0Nv
bnRhaW5lcj4mIF9fbGhzLA0KICAgICAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0
ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpDQogIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA+IF9f
cmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1l
IF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+DQogIGlubGluZSBib29sDQogIG9wZXJh
dG9yPD0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9f
bGhzLA0KICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9D
b250YWluZXI+JiBfX3JocykNCiAgeyByZXR1cm4gX19saHMuYmFzZSgpIDw9IF9fcmhzLmJhc2Uo
KTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5l
cj4NCiAgaW5saW5lIGJvb2wNCiAgb3BlcmF0b3I8PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxf
SXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywNCiAgICAgICAgICAgICBjb25zdCBfX25vcm1h
bF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykNCiAgeyByZXR1cm4gX19s
aHMuYmFzZSgpIDw9IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVy
YXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+DQogIGlubGlu
ZSBib29sDQogIG9wZXJhdG9yPj0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwg
X0NvbnRhaW5lcj4mIF9fbGhzLA0KICAgICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9y
PF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykNCiAgeyByZXR1cm4gX19saHMuYmFzZSgp
ID49IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlw
ZW5hbWUgX0NvbnRhaW5lcj4NCiAgaW5saW5lIGJvb2wNCiAgb3BlcmF0b3I+PShjb25zdCBfX25v
cm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2xocywNCiAgICAgICAgICAg
ICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX3JocykN
CiAgeyByZXR1cm4gX19saHMuYmFzZSgpID49IF9fcmhzLmJhc2UoKTsgfQ0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4NCiAgaW5saW5lIF9fbm9y
bWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4NCiAgb3BlcmF0b3IrKHR5cGVuYW1l
IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46OmRpZmZlcmVuY2VfdHlw
ZSBfX24sDQogICAgICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9D
b250YWluZXI+JiBfX2kpDQogIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwg
X0NvbnRhaW5lcj4oX19pLmJhc2UoKSArIF9fbik7IH0NCn0NCiMgNzYgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMw0KDQoNCm5hbWVzcGFj
ZSBzdGQNCnsNCiMgOTEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3Rs
X2FsZ29iYXNlLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyMSwgdHlwZW5h
bWUgX0ZvcndhcmRJdGVyMj4NCiAgICBpbmxpbmUgdm9pZA0KICAgIGl0ZXJfc3dhcChfRm9yd2Fy
ZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IpDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyMT46OnZhbHVlX3R5cGUgX1ZhbHVlVHlw
ZTE7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXIy
Pjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMjsNCg0KDQogICAgIA0KICAgICANCiAgICAgDQogICAg
IA0KDQogICAgICBfVmFsdWVUeXBlMSBfX3RtcCA9ICpfX2E7DQogICAgICAqX19hID0gKl9fYjsN
CiAgICAgICpfX2IgPSBfX3RtcDsNCiAgICB9DQojIDExOCAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+DQogICAgaW5saW5lIHZvaWQNCiAgICBzd2FwKF9UcCYgX19hLCBfVHAmIF9fYikNCiAgICB7
DQoNCiAgICAgDQoNCiAgICAgIF9UcCBfX3RtcCA9IF9fYTsNCiAgICAgIF9fYSA9IF9fYjsNCiAg
ICAgIF9fYiA9IF9fdG1wOw0KICAgIH0NCiMgMTQ2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4N
CiAgICBpbmxpbmUgY29uc3QgX1RwJg0KICAgIG1pbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1Rw
JiBfX2IpDQogICAgew0KDQogICAgIA0KDQogICAgICBpZiAoX19iIDwgX19hKSByZXR1cm4gX19i
OyByZXR1cm4gX19hOw0KICAgIH0NCiMgMTY2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCiAg
ICBpbmxpbmUgY29uc3QgX1RwJg0KICAgIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBf
X2IpDQogICAgew0KDQogICAgIA0KDQogICAgICBpZiAoX19hIDwgX19iKSByZXR1cm4gX19iOyBy
ZXR1cm4gX19hOw0KICAgIH0NCiMgMTg2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5h
bWUgX0NvbXBhcmU+DQogICAgaW5saW5lIGNvbnN0IF9UcCYNCiAgICBtaW4oY29uc3QgX1RwJiBf
X2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KDQogICAgICBpZiAo
X19jb21wKF9fYiwgX19hKSkgcmV0dXJuIF9fYjsgcmV0dXJuIF9fYTsNCiAgICB9DQojIDIwNCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMw0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAgIGlubGluZSBj
b25zdCBfVHAmDQogICAgbWF4KGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgX0NvbXBh
cmUgX19jb21wKQ0KICAgIHsNCg0KICAgICAgaWYgKF9fY29tcChfX2EsIF9fYikpIHJldHVybiBf
X2I7IHJldHVybiBfX2E7DQogICAgfQ0KIyAyMjEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXI+DQogICAgaW5saW5lIF9PdXRwdXRJdGVyDQogICAg
X19jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsDQogICAgICAgICAg
IF9PdXRwdXRJdGVyIF9fcmVzdWx0LA0KICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpDQog
ICAgew0KICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2Zp
cnN0KQ0KICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCiAgICAgIHJldHVybiBfX3Jlc3Vs
dDsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVu
YW1lIF9PdXRwdXRJdGVyPg0KICAgIGlubGluZSBfT3V0cHV0SXRlcg0KICAgIF9fY29weShfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQogICAgICAg
ICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LA0KICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJh
dG9yX3RhZykNCiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
UmFuZG9tQWNjZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZQ0KICAgICAgICAgIF9EaXN0YW5jZTsN
CiAgICAgIGZvciAoX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0t
X19uKSB7DQogICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7
DQogICAgICAgICsrX19yZXN1bHQ7DQogICAgICB9DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQog
ICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCiAgICBpbmxpbmUgX1RwKg0KICAgIF9f
Y29weV90cml2aWFsKGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCog
X19yZXN1bHQpDQogICAgew0KICAgICAgbWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9m
KF9UcCkgKiAoX19sYXN0IC0gX19maXJzdCkpOw0KICAgICAgcmV0dXJuIF9fcmVzdWx0ICsgKF9f
bGFzdCAtIF9fZmlyc3QpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVy
LCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4NCiAgICBpbmxpbmUgX091dHB1dEl0ZXINCiAgICBfX2Nv
cHlfYXV4MihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAg
ICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfX2ZhbHNlX3R5cGUpDQogICAgeyByZXR1cm4g
X19jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19m
aXJzdCkpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091
dHB1dEl0ZXI+DQogICAgaW5saW5lIF9PdXRwdXRJdGVyDQogICAgX19jb3B5X2F1eDIoX0lucHV0
SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwgX190cnVlX3R5cGUpDQogICAgeyByZXR1cm4gX19jb3B5KF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHQsIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOyB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPg0KICAgIGlubGluZSBfVHAqDQogICAgX19jb3B5X2F1eDIo
X1RwKiBfX2ZpcnN0LCBfVHAqIF9fbGFzdCwNCiAgICAgICAgICAgICAgICBfVHAqIF9fcmVzdWx0
LCBfX3RydWVfdHlwZSkNCiAgICB7IHJldHVybiBfX2NvcHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xh
c3QsIF9fcmVzdWx0KTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCiAgICBpbmxpbmUg
X1RwKg0KICAgIF9fY29weV9hdXgyKGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xh
c3QsDQogICAgICAgICAgICAgICAgX1RwKiBfX3Jlc3VsdCwgX190cnVlX3R5cGUpDQogICAgeyBy
ZXR1cm4gX19jb3B5X3RyaXZpYWwoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0NCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4NCiAgICBp
bmxpbmUgX091dHB1dEl0ZXINCiAgICBfX2NvcHlfbmkyKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lu
cHV0SXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX190
cnVlX3R5cGUpDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0lucHV0SXRlcj46OnZhbHVlX3R5cGUNCiAgICAgICAgICBfVmFsdWVUeXBlOw0KICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9WYWx1ZVR5cGU+OjpoYXNfdHJpdmlhbF9hc3Np
Z25tZW50X29wZXJhdG9yDQogICAgICAgICAgX1RyaXZpYWw7DQogICAgICByZXR1cm4gX091dHB1
dEl0ZXIoX19jb3B5X2F1eDIoX19maXJzdCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzdWx0LmJhc2UoKSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfVHJpdmlhbCgpKSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPg0KICAgIGlubGluZSBfT3V0cHV0SXRl
cg0KICAgIF9fY29weV9uaTIoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwN
CiAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfX2ZhbHNlX3R5cGUpDQogICAg
ew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcj46OnZh
bHVlX3R5cGUNCiAgICAgICAgICBfVmFsdWVUeXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf
X3R5cGVfdHJhaXRzPF9WYWx1ZVR5cGU+OjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9y
DQogICAgICAgICAgX1RyaXZpYWw7DQogICAgICByZXR1cm4gX19jb3B5X2F1eDIoX19maXJzdCwg
X19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgIF9Ucml2aWFsKCkpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4NCiAgICBpbmxpbmUgX091dHB1dEl0ZXIN
CiAgICBfX2NvcHlfbmkxKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsDQog
ICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX190cnVlX3R5cGUpDQogICAgew0K
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9PdXRwdXRJdGVyPjo6
X05vcm1hbCBfX05vcm1hbDsNCiAgICAgIHJldHVybiBfX2NvcHlfbmkyKF9fZmlyc3QuYmFzZSgp
LCBfX2xhc3QuYmFzZSgpLCBfX3Jlc3VsdCwgX19Ob3JtYWwoKSk7DQogICAgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPg0KICAgIGlubGlu
ZSBfT3V0cHV0SXRlcg0KICAgIF9fY29weV9uaTEoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfX2ZhbHNl
X3R5cGUpDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9y
PF9PdXRwdXRJdGVyPjo6X05vcm1hbCBfX05vcm1hbDsNCiAgICAgIHJldHVybiBfX2NvcHlfbmky
KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9fTm9ybWFsKCkpOw0KICAgIH0NCiMgMzM5ICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPg0KICAg
IGlubGluZSBfT3V0cHV0SXRlcg0KICAgIGNvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwgX091dHB1dEl0ZXIgX19yZXN1bHQpDQogICAgew0KDQogICAgIA0KICAgICAN
Cg0KDQogICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9JbnB1dEl0
ZXI+OjpfTm9ybWFsIF9fTm9ybWFsOw0KICAgICAgIHJldHVybiBfX2NvcHlfbmkxKF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHQsIF9fTm9ybWFsKCkpOw0KICAgIH0NCg0KDQoNCg0KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0
ZXIyPg0KICAgIGlubGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIyDQogICAgX19jb3B5X2JhY2t3YXJk
KF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qs
DQogICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQsDQogICAg
ICAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQ0KICAgIHsNCiAgICAg
IHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkNCiAgICAgICAgKi0tX19yZXN1bHQgPSAqLS1fX2xh
c3Q7DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXI+DQogICAgaW5s
aW5lIF9CaWRpcmVjdGlvbmFsSXRlcg0KICAgIF9fY29weV9iYWNrd2FyZChfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Jlc3VsdCwNCiAgICAgICAgICAgICAgICAgICAgcmFu
ZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpDQogICAgew0KICAgICAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbjsNCiAgICAgIGZv
ciAoX19uID0gX19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1fX24pDQogICAgICAgICotLV9f
cmVzdWx0ID0gKi0tX19sYXN0Ow0KICAgICAgcmV0dXJuIF9fcmVzdWx0Ow0KICAgIH0NCg0KDQoN
Cg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIxLCB0eXBlbmFt
ZSBfQmlkaXJlY3Rpb25hbEl0ZXIyLA0KICAgICAgICAgICB0eXBlbmFtZSBfQm9vbFR5cGU+DQog
ICAgc3RydWN0IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaA0KICAgIHsNCiAgICAgIHN0YXRpYyBf
QmlkaXJlY3Rpb25hbEl0ZXIyDQogICAgICBjb3B5KF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJz
dCwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsDQogICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlcjIgX19yZXN1bHQpDQogICAgICB7DQogICAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmQo
X19maXJzdCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19m
aXJzdCkpOw0KICAgICAgfQ0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPg0KICAg
IHN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+
DQogICAgew0KICAgICAgc3RhdGljIF9UcCoNCiAgICAgIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0
LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jlc3VsdCkNCiAgICAgIHsNCiAgICAgICAgY29u
c3QgcHRyZGlmZl90IF9OdW0gPSBfX2xhc3QgLSBfX2ZpcnN0Ow0KICAgICAgICBtZW1tb3ZlKF9f
cmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiBfTnVtKTsNCiAgICAgICAgcmV0
dXJuIF9fcmVzdWx0IC0gX051bTsNCiAgICAgIH0NCiAgICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4NCiAgICBzdHJ1Y3QgX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPGNvbnN0IF9UcCos
IF9UcCosIF9fdHJ1ZV90eXBlPg0KICAgIHsNCiAgICAgIHN0YXRpYyBfVHAqDQogICAgICBjb3B5
KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpDQog
ICAgICB7DQogICAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8X1RwKiwgX1Rw
KiwgX190cnVlX3R5cGU+DQogICAgICAgICAgOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1
bHQpOw0KICAgICAgfQ0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JJMSwgdHlwZW5h
bWUgX0JJMj4NCiAgICBpbmxpbmUgX0JJMg0KICAgIF9fY29weV9iYWNrd2FyZF9hdXgoX0JJMSBf
X2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBfX3Jlc3VsdCkNCiAgICB7DQogICAgICB0eXBlZGVm
IHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CSTI+Ojp2
YWx1ZV90eXBlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6aGFzX3RyaXZpYWxfYXNz
aWdubWVudF9vcGVyYXRvciBfVHJpdmlhbDsNCiAgICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRf
ZGlzcGF0Y2g8X0JJMSwgX0JJMiwgX1RyaXZpYWw+DQogICAgICAgICAgICAgICAgICA6OmNvcHko
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7DQogICAgfQ0KDQogIHRlbXBsYXRlIDx0eXBlbmFt
ZSBfQkkxLCB0eXBlbmFtZSBfQkkyPg0KICAgIGlubGluZSBfQkkyDQogICAgX19jb3B5X2JhY2t3
YXJkX291dHB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBf
X3RydWVfdHlwZSkNCiAgICB7IHJldHVybiBfQkkyKF9fY29weV9iYWNrd2FyZF9hdXgoX19maXJz
dCwgX19sYXN0LCBfX3Jlc3VsdC5iYXNlKCkpKTsgfQ0KDQogIHRlbXBsYXRlIDx0eXBlbmFtZSBf
QkkxLCB0eXBlbmFtZSBfQkkyPg0KICAgIGlubGluZSBfQkkyDQogICAgX19jb3B5X2JhY2t3YXJk
X291dHB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBfX2Zh
bHNlX3R5cGUpDQogICAgeyByZXR1cm4gX19jb3B5X2JhY2t3YXJkX2F1eChfX2ZpcnN0LCBfX2xh
c3QsIF9fcmVzdWx0KTsgfQ0KDQogIHRlbXBsYXRlIDx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBf
QkkyPg0KICAgIGlubGluZSBfQkkyDQogICAgX19jb3B5X2JhY2t3YXJkX2lucHV0X25vcm1hbF9p
dGVyYXRvcihfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0JJMiBfX3Jlc3VsdCwgX190cnVlX3R5cGUpDQogICAgew0K
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9CSTI+OjpfTm9ybWFs
IF9fTm9ybWFsOw0KICAgICAgcmV0dXJuIF9fY29weV9iYWNrd2FyZF9vdXRwdXRfbm9ybWFsX2l0
ZXJhdG9yKF9fZmlyc3QuYmFzZSgpLCBfX2xhc3QuYmFzZSgpLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0LCBfX05vcm1hbCgpKTsN
CiAgICB9DQoNCiAgdGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+DQogICAg
aW5saW5lIF9CSTINCiAgICBfX2NvcHlfYmFja3dhcmRfaW5wdXRfbm9ybWFsX2l0ZXJhdG9yKF9C
STEgX19maXJzdCwgX0JJMSBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBfX2ZhbHNlX3R5cGUpDQogICAgew0KICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfSXNfbm9ybWFsX2l0ZXJhdG9yPF9CSTI+OjpfTm9ybWFsIF9fTm9ybWFs
Ow0KICAgICAgcmV0dXJuIF9fY29weV9iYWNrd2FyZF9vdXRwdXRfbm9ybWFsX2l0ZXJhdG9yKF9f
Zmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19Ob3JtYWwoKSk7DQogICAgfQ0KIyA0NzcgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMNCiAgdGVtcGxh
dGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+DQogICAgaW5saW5lIF9CSTINCiAgICBj
b3B5X2JhY2t3YXJkKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpDQog
ICAgew0KDQogICAgIA0KICAgICANCiAgICAgDQoNCg0KDQogICAgICB0eXBlZGVmIHR5cGVuYW1l
IF9Jc19ub3JtYWxfaXRlcmF0b3I8X0JJMT46Ol9Ob3JtYWwgX19Ob3JtYWw7DQogICAgICByZXR1
cm4gX19jb3B5X2JhY2t3YXJkX2lucHV0X25vcm1hbF9pdGVyYXRvcihfX2ZpcnN0LCBfX2xhc3Qs
IF9fcmVzdWx0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19Ob3JtYWwoKSk7DQogICAgfQ0KIyA1MDkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv
cndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+DQogICAgdm9pZA0KICAgIGZpbGwoX0ZvcndhcmRJdGVy
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZSkNCiAgICB7
DQoNCiAgICAgDQoNCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkN
CiAgICAgICAgKl9fZmlyc3QgPSBfX3ZhbHVlOw0KICAgIH0NCiMgNTMxICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9PdXRwdXRJdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwPg0KICAgIF9P
dXRwdXRJdGVyDQogICAgZmlsbF9uKF9PdXRwdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwgY29u
c3QgX1RwJiBfX3ZhbHVlKQ0KICAgIHsNCg0KICAgICANCg0KICAgICAgZm9yICggOyBfX24gPiAw
OyAtLV9fbiwgKytfX2ZpcnN0KQ0KICAgICAgICAqX19maXJzdCA9IF9fdmFsdWU7DQogICAgICBy
ZXR1cm4gX19maXJzdDsNCiAgICB9DQoNCg0KDQogIGlubGluZSB2b2lkDQogIGZpbGwodW5zaWdu
ZWQgY2hhciogX19maXJzdCwgdW5zaWduZWQgY2hhciogX19sYXN0LCBjb25zdCB1bnNpZ25lZCBj
aGFyJiBfX2MpDQogIHsNCiAgICB1bnNpZ25lZCBjaGFyIF9fdG1wID0gX19jOw0KICAgIG1lbXNl
dChfX2ZpcnN0LCBfX3RtcCwgX19sYXN0IC0gX19maXJzdCk7DQogIH0NCg0KICBpbmxpbmUgdm9p
ZA0KICBmaWxsKHNpZ25lZCBjaGFyKiBfX2ZpcnN0LCBzaWduZWQgY2hhciogX19sYXN0LCBjb25z
dCBzaWduZWQgY2hhciYgX19jKQ0KICB7DQogICAgc2lnbmVkIGNoYXIgX190bXAgPSBfX2M7DQog
ICAgbWVtc2V0KF9fZmlyc3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fdG1wKSwgX19s
YXN0IC0gX19maXJzdCk7DQogIH0NCg0KICBpbmxpbmUgdm9pZA0KICBmaWxsKGNoYXIqIF9fZmly
c3QsIGNoYXIqIF9fbGFzdCwgY29uc3QgY2hhciYgX19jKQ0KICB7DQogICAgY2hhciBfX3RtcCA9
IF9fYzsNCiAgICBtZW1zZXQoX19maXJzdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX190
bXApLCBfX2xhc3QgLSBfX2ZpcnN0KTsNCiAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaXpl
Pg0KICAgIGlubGluZSB1bnNpZ25lZCBjaGFyKg0KICAgIGZpbGxfbih1bnNpZ25lZCBjaGFyKiBf
X2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IHVuc2lnbmVkIGNoYXImIF9fYykNCiAgICB7DQogICAg
ICBmaWxsKF9fZmlyc3QsIF9fZmlyc3QgKyBfX24sIF9fYyk7DQogICAgICByZXR1cm4gX19maXJz
dCArIF9fbjsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1NpemU+DQogICAgaW5saW5l
IHNpZ25lZCBjaGFyKg0KICAgIGZpbGxfbihjaGFyKiBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0
IHNpZ25lZCBjaGFyJiBfX2MpDQogICAgew0KICAgICAgZmlsbChfX2ZpcnN0LCBfX2ZpcnN0ICsg
X19uLCBfX2MpOw0KICAgICAgcmV0dXJuIF9fZmlyc3QgKyBfX247DQogICAgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9TaXplPg0KICAgIGlubGluZSBjaGFyKg0KICAgIGZpbGxfbihjaGFyKiBf
X2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IGNoYXImIF9fYykNCiAgICB7DQogICAgICBmaWxsKF9f
Zmlyc3QsIF9fZmlyc3QgKyBfX24sIF9fYyk7DQogICAgICByZXR1cm4gX19maXJzdCArIF9fbjsN
CiAgICB9DQojIDYwNiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
YWxnb2Jhc2UuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUg
X0lucHV0SXRlcjI+DQogICAgcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+DQogICAgbWlz
bWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsDQogICAgICAg
ICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIpDQogICAgew0KDQogICAgIA0KICAgICANCiAgICAg
DQoNCiAgICAgDQoNCg0KICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgKl9fZmly
c3QxID09ICpfX2ZpcnN0Mikgew0KICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICArK19fZmly
c3QyOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcjEsIF9JbnB1dEl0ZXIy
PihfX2ZpcnN0MSwgX19maXJzdDIpOw0KICAgIH0NCiMgNjQwICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX0JpbmFyeVByZWRp
Y2F0ZT4NCiAgICBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4NCiAgICBtaXNtYXRjaChf
SW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICBf
SW5wdXRJdGVyMiBfX2ZpcnN0MiwNCiAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmlu
YXJ5X3ByZWQpDQogICAgew0KDQogICAgIA0KICAgICANCg0KICAgICAgd2hpbGUgKF9fZmlyc3Qx
ICE9IF9fbGFzdDEgJiYgX19iaW5hcnlfcHJlZCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsNCiAg
ICAgICAgKytfX2ZpcnN0MTsNCiAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgIH0NCiAgICAgIHJl
dHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJzdDEsIF9fZmlyc3QyKTsN
CiAgICB9DQojIDY2OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
YWxnb2Jhc2UuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUg
X0lucHV0SXRlcjI+DQogICAgaW5saW5lIGJvb2wNCiAgICBlcXVhbChfSW5wdXRJdGVyMSBfX2Zp
cnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwNCiAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0
MikNCiAgICB7DQoNCiAgICAgDQogICAgIA0KICAgICANCg0KDQoNCiAgICAgIGZvciAoIDsgX19m
aXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikNCiAgICAgICAgaWYgKCEo
Kl9fZmlyc3QxID09ICpfX2ZpcnN0MikpDQogICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAg
cmV0dXJuIHRydWU7DQogICAgfQ0KIyA2OTkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRl
cjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPg0KICAg
IGlubGluZSBib29sDQogICAgZXF1YWwoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIx
IF9fbGFzdDEsDQogICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsDQogICAgICAgICAgX0Jp
bmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCiAg
ICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MikN
CiAgICAgICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkNCiAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQojIDczMiAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMw0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjI+DQogICAg
Ym9vbA0KICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBf
SW5wdXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0
ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyKQ0KICAgIHsNCg0KICAgICANCiAgICAg
DQogICAgIA0KDQogICAgIA0KDQoNCiAgICAgIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MSAm
JiBfX2ZpcnN0MiAhPSBfX2xhc3QyDQogICAgICAgICAgICA7ICsrX19maXJzdDEsICsrX19maXJz
dDIpIHsNCiAgICAgICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikNCiAgICAgICAgICByZXR1
cm4gdHJ1ZTsNCiAgICAgICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkNCiAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgICB9DQogICAgICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAm
JiBfX2ZpcnN0MiAhPSBfX2xhc3QyOw0KICAgIH0NCiMgNzY3ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX0NvbXBhcmU+DQog
ICAgYm9vbA0KICAgIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JbnB1dEl0ZXIxIF9fZmlyc3Qx
LCBfSW5wdXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1
dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQogICAg
ICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0Mg0KICAg
ICAgICAgICAgOyArK19fZmlyc3QxLCArK19fZmlyc3QyKSB7DQogICAgICAgIGlmIChfX2NvbXAo
Kl9fZmlyc3QxLCAqX19maXJzdDIpKQ0KICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICBp
ZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkNCiAgICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgICB9DQogICAgICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAh
PSBfX2xhc3QyOw0KICAgIH0NCg0KICBpbmxpbmUgYm9vbA0KICBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwgY29uc3QgdW5zaWduZWQgY2hhciog
X19sYXN0MSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciog
X19maXJzdDIsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpDQogIHsNCiAgICBjb25zdCBz
aXplX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOw0KICAgIGNvbnN0IHNpemVfdCBfX2xl
bjIgPSBfX2xhc3QyIC0gX19maXJzdDI7DQogICAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVtY21w
KF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7DQogICAgcmV0dXJuIF9f
cmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCA8IDAgOiBfX2xlbjEgPCBfX2xlbjI7DQogIH0NCg0KICBp
bmxpbmUgYm9vbA0KICBsZXhpY29ncmFwaGljYWxfY29tcGFyZShjb25zdCBjaGFyKiBfX2ZpcnN0
MSwgY29uc3QgY2hhciogX19sYXN0MSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpDQogIHsNCg0KICAgIHJldHVybiBs
ZXhpY29ncmFwaGljYWxfY29tcGFyZSgoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19s
YXN0MSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBj
aGFyKikgX19maXJzdDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z
dCBzaWduZWQgY2hhciopIF9fbGFzdDIpOw0KDQoNCg0KDQoNCg0KICB9DQoNCn0NCiMgNTUgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMiAzDQojIDEgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiIDEgMw0KIyA4NCAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxsb2MuaCIgMw0KIyAxICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jYXNzZXJ0IiAxIDMNCiMgNDcgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Nhc3NlcnQiIDMNCiMgODUgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiIDIgMw0KIyAxICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDEgMw0KIyAzNCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4Y2VwdC5oIiAzDQoj
IDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2V4Y2VwdGlvbl9kZWZpbmVzLmgi
IDEgMw0KIyAzNSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4
Y2VwdC5oIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KDQogIHZvaWQNCiAgX190aHJvd19iYWRf
ZXhjZXB0aW9uKHZvaWQpOw0KDQoNCiAgdm9pZA0KICBfX3Rocm93X2JhZF9hbGxvYyh2b2lkKTsN
Cg0KDQogIHZvaWQNCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsNCg0KICB2b2lkDQogIF9fdGhy
b3dfYmFkX3R5cGVpZCh2b2lkKTsNCg0KDQogIHZvaWQNCiAgX190aHJvd19sb2dpY19lcnJvcihj
b25zdCBjaGFyKiBfX3MpOw0KDQogIHZvaWQNCiAgX190aHJvd19kb21haW5fZXJyb3IoY29uc3Qg
Y2hhciogX19zKTsNCg0KICB2b2lkDQogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVudChjb25zdCBj
aGFyKiBfX3MpOw0KDQogIHZvaWQNCiAgX190aHJvd19sZW5ndGhfZXJyb3IoY29uc3QgY2hhciog
X19zKTsNCg0KICB2b2lkDQogIF9fdGhyb3dfb3V0X29mX3JhbmdlKGNvbnN0IGNoYXIqIF9fcyk7
DQoNCiAgdm9pZA0KICBfX3Rocm93X3J1bnRpbWVfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0K
ICB2b2lkDQogIF9fdGhyb3dfcmFuZ2VfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0KICB2b2lk
DQogIF9fdGhyb3dfb3ZlcmZsb3dfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0KICB2b2lkDQog
IF9fdGhyb3dfdW5kZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCg0KICB2b2lkDQog
IF9fdGhyb3dfaW9zX2ZhaWx1cmUoY29uc3QgY2hhciogX19zKTsNCn0NCiMgODYgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiIDIgMw0KIyAxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF90aHJlYWRzLmgiIDEgMw0KIyA1
NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfdGhyZWFkcy5oIiAz
DQpuYW1lc3BhY2Ugc3RkDQp7DQoNCg0KDQoNCiAgc3RydWN0IF9SZWZjb3VudF9CYXNlDQogIHsN
Cg0KICAgIHR5cGVkZWYgc2l6ZV90IF9SQ190Ow0KDQoNCiAgICB2b2xhdGlsZSBfUkNfdCBfTV9y
ZWZfY291bnQ7DQoNCg0KICAgIF9fZ3RocmVhZF9tdXRleF90IF9NX3JlZl9jb3VudF9sb2NrOw0K
DQogICAgX1JlZmNvdW50X0Jhc2UoX1JDX3QgX19uKSA6IF9NX3JlZl9jb3VudChfX24pDQogICAg
ew0KDQoNCg0KDQogICAgICBfX2d0aHJlYWRfbXV0ZXhfaW5pdF9mdW5jdGlvbiAoJl9NX3JlZl9j
b3VudF9sb2NrKTsNCg0KDQoNCiAgICB9DQoNCiAgICB2b2lkDQogICAgX01faW5jcigpDQogICAg
ew0KICAgICAgX19ndGhyZWFkX211dGV4X2xvY2soJl9NX3JlZl9jb3VudF9sb2NrKTsNCiAgICAg
ICsrX01fcmVmX2NvdW50Ow0KICAgICAgX19ndGhyZWFkX211dGV4X3VubG9jaygmX01fcmVmX2Nv
dW50X2xvY2spOw0KICAgIH0NCg0KICAgIF9SQ190DQogICAgX01fZGVjcigpDQogICAgew0KICAg
ICAgX19ndGhyZWFkX211dGV4X2xvY2soJl9NX3JlZl9jb3VudF9sb2NrKTsNCiAgICAgIHZvbGF0
aWxlIF9SQ190IF9fdG1wID0gLS1fTV9yZWZfY291bnQ7DQogICAgICBfX2d0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZfTV9yZWZfY291bnRfbG9jayk7DQogICAgICByZXR1cm4gX190bXA7DQogICAgfQ0K
ICB9Ow0KIyAxNDQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX3Ro
cmVhZHMuaCIgMw0KICBleHRlcm4gX19ndGhyZWFkX211dGV4X3QgX0dMSUJDUFBfbXV0ZXg7DQog
IGV4dGVybiBfX2d0aHJlYWRfbXV0ZXhfdCAqX0dMSUJDUFBfbXV0ZXhfYWRkcmVzczsNCiAgZXh0
ZXJuIF9fZ3RocmVhZF9vbmNlX3QgX0dMSUJDUFBfb25jZTsNCiAgZXh0ZXJuIHZvaWQgX0dMSUJD
UFBfbXV0ZXhfaW5pdCAodm9pZCk7DQogIGV4dGVybiB2b2lkIF9HTElCQ1BQX211dGV4X2FkZHJl
c3NfaW5pdCAodm9pZCk7DQoNCg0KICBzdHJ1Y3QgX1NUTF9tdXRleF9sb2NrDQogIHsNCg0KDQog
ICAgdm9sYXRpbGUgaW50IF9NX2luaXRfZmxhZzsNCiAgICBfX2d0aHJlYWRfb25jZV90IF9NX29u
Y2U7DQoNCiAgICBfX2d0aHJlYWRfbXV0ZXhfdCBfTV9sb2NrOw0KDQogICAgdm9pZA0KICAgIF9N
X2luaXRpYWxpemUoKQ0KICAgIHsNCg0KDQoNCiAgICAgIGlmIChfTV9pbml0X2ZsYWcpIHJldHVy
bjsNCiAgICAgIGlmIChfX2d0aHJlYWRfb25jZSAoJl9HTElCQ1BQX29uY2UsIF9HTElCQ1BQX211
dGV4X2luaXQpICE9IDANCiAgICAgICAgICAmJiBfX2d0aHJlYWRfYWN0aXZlX3AgKCkpDQogICAg
ICAgIGFib3J0ICgpOw0KICAgICAgX19ndGhyZWFkX211dGV4X2xvY2sgKCZfR0xJQkNQUF9tdXRl
eCk7DQogICAgICBpZiAoIV9NX2luaXRfZmxhZykNCiAgICAgICAgew0KDQoNCg0KICAgICAgICAg
IF9HTElCQ1BQX211dGV4X2FkZHJlc3MgPSAmX01fbG9jazsNCiAgICAgICAgICBpZiAoX19ndGhy
ZWFkX29uY2UgKCZfTV9vbmNlLCBfR0xJQkNQUF9tdXRleF9hZGRyZXNzX2luaXQpICE9IDANCiAg
ICAgICAgICAgICYmIF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkNCiAgICAgICAgICAgIGFib3J0ICgp
Ow0KICAgICAgICAgIF9NX2luaXRfZmxhZyA9IDE7DQogICAgICAgIH0NCiAgICAgIF9fZ3RocmVh
ZF9tdXRleF91bmxvY2sgKCZfR0xJQkNQUF9tdXRleCk7DQoNCiAgICB9DQoNCiAgICB2b2lkDQog
ICAgX01fYWNxdWlyZV9sb2NrKCkNCiAgICB7DQoNCiAgICAgIGlmICghX01faW5pdF9mbGFnKSBf
TV9pbml0aWFsaXplKCk7DQoNCiAgICAgIF9fZ3RocmVhZF9tdXRleF9sb2NrKCZfTV9sb2NrKTsN
CiAgICB9DQoNCiAgICB2b2lkDQogICAgX01fcmVsZWFzZV9sb2NrKCkNCiAgICB7DQoNCiAgICAg
IGlmICghX01faW5pdF9mbGFnKSBfTV9pbml0aWFsaXplKCk7DQoNCiAgICAgIF9fZ3RocmVhZF9t
dXRleF91bmxvY2soJl9NX2xvY2spOw0KICAgIH0NCiAgfTsNCiMgMjIwICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF90aHJlYWRzLmgiIDMNCiAgc3RydWN0IF9TVExf
YXV0b19sb2NrDQogIHsNCiAgICBfU1RMX211dGV4X2xvY2smIF9NX2xvY2s7DQoNCiAgICBfU1RM
X2F1dG9fbG9jayhfU1RMX211dGV4X2xvY2smIF9fbG9jaykgOiBfTV9sb2NrKF9fbG9jaykNCiAg
ICB7IF9NX2xvY2suX01fYWNxdWlyZV9sb2NrKCk7IH0NCg0KICAgIH5fU1RMX2F1dG9fbG9jaygp
IHsgX01fbG9jay5fTV9yZWxlYXNlX2xvY2soKTsgfQ0KDQogIHByaXZhdGU6DQogICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgX1NUTF9hdXRvX2xvY2smKTsNCiAgICBfU1RMX2F1dG9fbG9jayhjb25z
dCBfU1RMX2F1dG9fbG9jayYpOw0KICB9Ow0KDQp9DQojIDg3ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGxvYy5oIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0K
IyA5OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxsb2MuaCIg
Mw0KICBjbGFzcyBfX25ld19hbGxvYw0KICB7DQogIHB1YmxpYzoNCiAgICBzdGF0aWMgdm9pZCoN
CiAgICBhbGxvY2F0ZShzaXplX3QgX19uKQ0KICAgIHsgcmV0dXJuIDo6b3BlcmF0b3IgbmV3KF9f
bik7IH0NCg0KICAgIHN0YXRpYyB2b2lkDQogICAgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVf
dCkNCiAgICB7IDo6b3BlcmF0b3IgZGVsZXRlKF9fcCk7IH0NCiAgfTsNCiMgMTIxICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGxvYy5oIiAzDQogIHRlbXBsYXRl
IDxpbnQgX19pbnN0Pg0KICAgIGNsYXNzIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlDQogICAgew0K
ICAgIHByaXZhdGU6DQogICAgICBzdGF0aWMgdm9pZCogX1Nfb29tX21hbGxvYyhzaXplX3QpOw0K
ICAgICAgc3RhdGljIHZvaWQqIF9TX29vbV9yZWFsbG9jKHZvaWQqLCBzaXplX3QpOw0KICAgICAg
c3RhdGljIHZvaWQgKCogX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIpKCk7DQoNCiAgICBwdWJs
aWM6DQogICAgICBzdGF0aWMgdm9pZCoNCiAgICAgIGFsbG9jYXRlKHNpemVfdCBfX24pDQogICAg
ICB7DQogICAgICAgIHZvaWQqIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7DQogICAgICAgIGlmICgw
ID09IF9fcmVzdWx0KSBfX3Jlc3VsdCA9IF9TX29vbV9tYWxsb2MoX19uKTsNCiAgICAgICAgcmV0
dXJuIF9fcmVzdWx0Ow0KICAgICAgfQ0KDQogICAgICBzdGF0aWMgdm9pZA0KICAgICAgZGVhbGxv
Y2F0ZSh2b2lkKiBfX3AsIHNpemVfdCApDQogICAgICB7IGZyZWUoX19wKTsgfQ0KDQogICAgICBz
dGF0aWMgdm9pZCoNCiAgICAgIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgLCBzaXplX3Qg
X19uZXdfc3opDQogICAgICB7DQogICAgICAgIHZvaWQqIF9fcmVzdWx0ID0gcmVhbGxvYyhfX3As
IF9fbmV3X3N6KTsNCiAgICAgICAgaWYgKDAgPT0gX19yZXN1bHQpIF9fcmVzdWx0ID0gX1Nfb29t
X3JlYWxsb2MoX19wLCBfX25ld19zeik7DQogICAgICAgIHJldHVybiBfX3Jlc3VsdDsNCiAgICAg
IH0NCg0KICAgICAgc3RhdGljIHZvaWQgKCogX19zZXRfbWFsbG9jX2hhbmRsZXIodm9pZCAoKl9f
ZikoKSkpKCkNCiAgICAgIHsNCiAgICAgICAgdm9pZCAoKiBfX29sZCkoKSA9IF9fbWFsbG9jX2Fs
bG9jX29vbV9oYW5kbGVyOw0KICAgICAgICBfX21hbGxvY19hbGxvY19vb21faGFuZGxlciA9IF9f
ZjsNCiAgICAgICAgcmV0dXJuKF9fb2xkKTsNCiAgICAgIH0NCiAgICB9Ow0KDQoNCiAgdGVtcGxh
dGUgPGludCBfX2luc3Q+DQogICAgdm9pZCAoKiBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2lu
c3Q+OjpfX21hbGxvY19hbGxvY19vb21faGFuZGxlcikoKSA9IDA7DQoNCiAgdGVtcGxhdGUgPGlu
dCBfX2luc3Q+DQogICAgdm9pZCoNCiAgICBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+
OjpfU19vb21fbWFsbG9jKHNpemVfdCBfX24pDQogICAgew0KICAgICAgdm9pZCAoKiBfX215X21h
bGxvY19oYW5kbGVyKSgpOw0KICAgICAgdm9pZCogX19yZXN1bHQ7DQoNCiAgICAgIGZvciAoOzsp
DQogICAgICAgIHsNCiAgICAgICAgICBfX215X21hbGxvY19oYW5kbGVyID0gX19tYWxsb2NfYWxs
b2Nfb29tX2hhbmRsZXI7DQogICAgICAgICAgaWYgKDAgPT0gX19teV9tYWxsb2NfaGFuZGxlcikN
CiAgICAgICAgICAgIHN0ZDo6X190aHJvd19iYWRfYWxsb2MoKTsNCiAgICAgICAgICAoKl9fbXlf
bWFsbG9jX2hhbmRsZXIpKCk7DQogICAgICAgICAgX19yZXN1bHQgPSBtYWxsb2MoX19uKTsNCiAg
ICAgICAgICBpZiAoX19yZXN1bHQpDQogICAgICAgICAgICByZXR1cm4oX19yZXN1bHQpOw0KICAg
ICAgICB9DQogICAgfQ0KDQogIHRlbXBsYXRlIDxpbnQgX19pbnN0Pg0KICAgIHZvaWQqDQogICAg
X19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X1Nfb29tX3JlYWxsb2Modm9pZCogX19w
LCBzaXplX3QgX19uKQ0KICAgIHsNCiAgICAgIHZvaWQgKCogX19teV9tYWxsb2NfaGFuZGxlciko
KTsNCiAgICAgIHZvaWQqIF9fcmVzdWx0Ow0KDQogICAgICBmb3IgKDs7KQ0KICAgICAgICB7DQog
ICAgICAgICAgX19teV9tYWxsb2NfaGFuZGxlciA9IF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVy
Ow0KICAgICAgICAgIGlmICgwID09IF9fbXlfbWFsbG9jX2hhbmRsZXIpDQogICAgICAgICAgICBz
dGQ6Ol9fdGhyb3dfYmFkX2FsbG9jKCk7DQogICAgICAgICAgKCpfX215X21hbGxvY19oYW5kbGVy
KSgpOw0KICAgICAgICAgIF9fcmVzdWx0ID0gcmVhbGxvYyhfX3AsIF9fbik7DQogICAgICAgICAg
aWYgKF9fcmVzdWx0KQ0KICAgICAgICAgICAgcmV0dXJuKF9fcmVzdWx0KTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KDQoNCg0KDQoNCiAgdHlwZWRlZiBfX25ld19hbGxvYyBfX21lbV9pbnRlcmZhY2U7
DQojIDIxOSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxsb2Mu
aCIgMw0KICB0ZW1wbGF0ZTxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4NCiAgY2xhc3MgX19zaW1w
bGVfYWxsb2MNCiAgew0KICBwdWJsaWM6DQogICAgc3RhdGljIF9UcCogYWxsb2NhdGUoc2l6ZV90
IF9fbikNCiAgICB7IHJldHVybiAwID09IF9fbiA/IDAgOiAoX1RwKikgX0FsbG9jOjphbGxvY2F0
ZShfX24gKiBzaXplb2YgKF9UcCkpOyB9DQoNCiAgICBzdGF0aWMgX1RwKiBhbGxvY2F0ZSgpDQog
ICAgeyByZXR1cm4gKF9UcCopIF9BbGxvYzo6YWxsb2NhdGUoc2l6ZW9mIChfVHApKTsgfQ0KDQog
ICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShfVHAqIF9fcCwgc2l6ZV90IF9fbikNCiAgICB7IGlm
ICgwICE9IF9fbikgX0FsbG9jOjpkZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mIChfVHApKTsg
fQ0KDQogICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShfVHAqIF9fcCkNCiAgICB7IF9BbGxvYzo6
ZGVhbGxvY2F0ZShfX3AsIHNpemVvZiAoX1RwKSk7IH0NCiAgfTsNCiMgMjUxICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGxvYy5oIiAzDQogIHRlbXBsYXRlIDxj
bGFzcyBfQWxsb2M+DQogIGNsYXNzIF9fZGVidWdfYWxsb2MNCiAgew0KICBwcml2YXRlOg0KICAg
IGVudW0ge19TX2V4dHJhID0gOH07DQoNCg0KICBwdWJsaWM6DQoNCiAgICBzdGF0aWMgdm9pZCog
YWxsb2NhdGUoc2l6ZV90IF9fbikNCiAgICB7DQogICAgICBjaGFyKiBfX3Jlc3VsdCA9IChjaGFy
KilfQWxsb2M6OmFsbG9jYXRlKF9fbiArIChpbnQpIF9TX2V4dHJhKTsNCiAgICAgICooc2l6ZV90
KilfX3Jlc3VsdCA9IF9fbjsNCiAgICAgIHJldHVybiBfX3Jlc3VsdCArIChpbnQpIF9TX2V4dHJh
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3Qg
X19uKQ0KICAgIHsNCiAgICAgIGNoYXIqIF9fcmVhbF9wID0gKGNoYXIqKV9fcCAtIChpbnQpIF9T
X2V4dHJhOw0KICAgICAgKCgqKHNpemVfdCopX19yZWFsX3AgPT0gX19uKSA/ICh2b2lkKTAgOiBf
YXNzZXJ0KCIqKHNpemVfdCopX19yZWFsX3AgPT0gX19uIiwgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiLCAyNzApKTsNCiAgICAgIF9BbGxvYzo6ZGVh
bGxvY2F0ZShfX3JlYWxfcCwgX19uICsgKGludCkgX1NfZXh0cmEpOw0KICAgIH0NCg0KICAgIHN0
YXRpYyB2b2lkKiByZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fb2xkX3N6LCBzaXplX3Qg
X19uZXdfc3opDQogICAgew0KICAgICAgY2hhciogX19yZWFsX3AgPSAoY2hhciopX19wIC0gKGlu
dCkgX1NfZXh0cmE7DQogICAgICAoKCooc2l6ZV90KilfX3JlYWxfcCA9PSBfX29sZF9zeikgPyAo
dm9pZCkwIDogX2Fzc2VydCgiKihzaXplX3QqKV9fcmVhbF9wID09IF9fb2xkX3N6IiwgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiLCAyNzcpKTsNCiAg
ICAgIGNoYXIqIF9fcmVzdWx0ID0gKGNoYXIqKQ0KICAgICAgICBfQWxsb2M6OnJlYWxsb2NhdGUo
X19yZWFsX3AsIF9fb2xkX3N6ICsgKGludCkgX1NfZXh0cmEsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19uZXdfc3ogKyAoaW50KSBfU19leHRyYSk7DQogICAgICAqKHNp
emVfdCopX19yZXN1bHQgPSBfX25ld19zejsNCiAgICAgIHJldHVybiBfX3Jlc3VsdCArIChpbnQp
IF9TX2V4dHJhOw0KICAgIH0NCiAgfTsNCiMgMzI0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9hbGxvYy5oIiAzDQp0ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywgaW50
IF9faW5zdD4NCiAgY2xhc3MgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlDQogIHsNCiAgcHJpdmF0
ZToNCiAgICBlbnVtIHtfQUxJR04gPSA4fTsNCiAgICBlbnVtIHtfTUFYX0JZVEVTID0gMTI4fTsN
CiAgICBlbnVtIHtfTkZSRUVMSVNUUyA9IF9NQVhfQllURVMgLyBfQUxJR059Ow0KDQogICAgdW5p
b24gX09iag0KICAgIHsNCiAgICAgIHVuaW9uIF9PYmoqIF9NX2ZyZWVfbGlzdF9saW5rOw0KICAg
ICAgY2hhciBfTV9jbGllbnRfZGF0YVsxXTsNCiAgICB9Ow0KDQogICAgc3RhdGljIF9PYmoqIHZv
bGF0aWxlIF9TX2ZyZWVfbGlzdFtfTkZSRUVMSVNUU107DQoNCg0KICAgIHN0YXRpYyBjaGFyKiBf
U19zdGFydF9mcmVlOw0KICAgIHN0YXRpYyBjaGFyKiBfU19lbmRfZnJlZTsNCiAgICBzdGF0aWMg
c2l6ZV90IF9TX2hlYXBfc2l6ZTsNCg0KICAgIHN0YXRpYyBfU1RMX211dGV4X2xvY2sgX1Nfbm9k
ZV9hbGxvY2F0b3JfbG9jazsNCg0KICAgIHN0YXRpYyBzaXplX3QNCiAgICBfU19yb3VuZF91cChz
aXplX3QgX19ieXRlcykNCiAgICB7IHJldHVybiAoKChfX2J5dGVzKSArIChzaXplX3QpIF9BTElH
Ti0xKSAmIH4oKHNpemVfdCkgX0FMSUdOIC0gMSkpOyB9DQoNCiAgICBzdGF0aWMgc2l6ZV90DQog
ICAgX1NfZnJlZWxpc3RfaW5kZXgoc2l6ZV90IF9fYnl0ZXMpDQogICAgeyByZXR1cm4gKCgoX19i
eXRlcykgKyAoc2l6ZV90KV9BTElHTi0xKS8oc2l6ZV90KV9BTElHTiAtIDEpOyB9DQoNCg0KDQog
ICAgc3RhdGljIHZvaWQqDQogICAgX1NfcmVmaWxsKHNpemVfdCBfX24pOw0KDQoNCg0KICAgIHN0
YXRpYyBjaGFyKg0KICAgIF9TX2NodW5rX2FsbG9jKHNpemVfdCBfX3NpemUsIGludCYgX19ub2Jq
cyk7DQoNCg0KDQogICAgY2xhc3MgX0xvY2sNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgX0xv
Y2soKSB7IGlmIChfX3RocmVhZHMpIF9TX25vZGVfYWxsb2NhdG9yX2xvY2suX01fYWNxdWlyZV9s
b2NrKCk7IH0NCiAgICAgIH5fTG9jaygpIHsgaWYgKF9fdGhyZWFkcykgX1Nfbm9kZV9hbGxvY2F0
b3JfbG9jay5fTV9yZWxlYXNlX2xvY2soKTsgfQ0KICAgIH0gX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsNCiAgICBmcmllbmQgY2xhc3MgX0xvY2s7DQoNCiAgcHVibGljOg0KDQogICAgc3Rh
dGljIHZvaWQqDQogICAgYWxsb2NhdGUoc2l6ZV90IF9fbikNCiAgICB7DQogICAgICB2b2lkKiBf
X3JldCA9IDA7DQoNCiAgICAgIGlmIChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKQ0KICAgICAg
ICBfX3JldCA9IF9fbWVtX2ludGVyZmFjZTo6YWxsb2NhdGUoX19uKTsNCiAgICAgIGVsc2UNCiAg
ICAgICAgew0KICAgICAgICAgIF9PYmoqIHZvbGF0aWxlKiBfX215X2ZyZWVfbGlzdCA9IF9TX2Zy
ZWVfbGlzdA0KICAgICAgICAgICAgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOw0KDQoNCg0KICAg
ICAgICAgIF9Mb2NrIF9fbG9ja19pbnN0YW5jZTsNCiAgICAgICAgICBfT2JqKiBfX3Jlc3RyaWN0
X18gX19yZXN1bHQgPSAqX19teV9mcmVlX2xpc3Q7DQogICAgICAgICAgaWYgKF9fcmVzdWx0ID09
IDApDQogICAgICAgICAgICBfX3JldCA9IF9TX3JlZmlsbChfU19yb3VuZF91cChfX24pKTsNCiAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICpfX215X2ZyZWVfbGlz
dCA9IF9fcmVzdWx0IC0+IF9NX2ZyZWVfbGlzdF9saW5rOw0KICAgICAgICAgICAgICBfX3JldCA9
IF9fcmVzdWx0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gX19yZXQ7
DQogICAgfTsNCg0KDQogICAgc3RhdGljIHZvaWQNCiAgICBkZWFsbG9jYXRlKHZvaWQqIF9fcCwg
c2l6ZV90IF9fbikNCiAgICB7DQogICAgICBpZiAoX19uID4gKHNpemVfdCkgX01BWF9CWVRFUykN
CiAgICAgICAgX19tZW1faW50ZXJmYWNlOjpkZWFsbG9jYXRlKF9fcCwgX19uKTsNCiAgICAgIGVs
c2UNCiAgICAgICAgew0KICAgICAgICAgIF9PYmoqIHZvbGF0aWxlKiBfX215X2ZyZWVfbGlzdA0K
ICAgICAgICAgICAgPSBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOw0KICAg
ICAgICAgIF9PYmoqIF9fcSA9IChfT2JqKilfX3A7DQoNCg0KDQogICAgICAgICAgX0xvY2sgX19s
b2NrX2luc3RhbmNlOw0KICAgICAgICAgIF9fcSAtPiBfTV9mcmVlX2xpc3RfbGluayA9ICpfX215
X2ZyZWVfbGlzdDsNCiAgICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3E7DQogICAgICAgIH0N
CiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCoNCiAgICByZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6
ZV90IF9fb2xkX3N6LCBzaXplX3QgX19uZXdfc3opOw0KICB9Ow0KDQoNCiAgdGVtcGxhdGU8Ym9v
bCBfX3RocmVhZHMsIGludCBfX2luc3Q+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj09
KGNvbnN0IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mLA0KICAg
ICAgICAgICAgICAgY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19p
bnN0PiYpDQogICAgeyByZXR1cm4gdHJ1ZTsgfQ0KDQogIHRlbXBsYXRlPGJvb2wgX190aHJlYWRz
LCBpbnQgX19pbnN0Pg0KICAgIGlubGluZSBib29sDQogICAgb3BlcmF0b3IhPShjb25zdCBfX2Rl
ZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+JiwNCiAgICAgICAgICAgICAg
IGNvbnN0IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mKQ0KICAg
IHsgcmV0dXJuIGZhbHNlOyB9DQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywg
aW50IF9faW5zdD4NCiAgICBjaGFyKg0KICAgIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3Ro
cmVhZHMsIF9faW5zdD46Ol9TX2NodW5rX2FsbG9jKHNpemVfdCBfX3NpemUsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
JiBfX25vYmpzKQ0KICAgIHsNCiAgICAgIGNoYXIqIF9fcmVzdWx0Ow0KICAgICAgc2l6ZV90IF9f
dG90YWxfYnl0ZXMgPSBfX3NpemUgKiBfX25vYmpzOw0KICAgICAgc2l6ZV90IF9fYnl0ZXNfbGVm
dCA9IF9TX2VuZF9mcmVlIC0gX1Nfc3RhcnRfZnJlZTsNCg0KICAgICAgaWYgKF9fYnl0ZXNfbGVm
dCA+PSBfX3RvdGFsX2J5dGVzKQ0KICAgICAgew0KICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0YXJ0
X2ZyZWU7DQogICAgICAgIF9TX3N0YXJ0X2ZyZWUgKz0gX190b3RhbF9ieXRlczsNCiAgICAgICAg
cmV0dXJuKF9fcmVzdWx0KTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKF9fYnl0ZXNfbGVmdCA+
PSBfX3NpemUpDQogICAgICAgIHsNCiAgICAgICAgICBfX25vYmpzID0gKGludCkoX19ieXRlc19s
ZWZ0L19fc2l6ZSk7DQogICAgICAgICAgX190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7
DQogICAgICAgICAgX19yZXN1bHQgPSBfU19zdGFydF9mcmVlOw0KICAgICAgICAgIF9TX3N0YXJ0
X2ZyZWUgKz0gX190b3RhbF9ieXRlczsNCiAgICAgICAgICByZXR1cm4oX19yZXN1bHQpOw0KICAg
ICAgICB9DQogICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICBzaXplX3QgX19ieXRlc190
b19nZXQgPQ0KICAgICAgICAgICAgMiAqIF9fdG90YWxfYnl0ZXMgKyBfU19yb3VuZF91cChfU19o
ZWFwX3NpemUgPj4gNCk7DQoNCiAgICAgICAgICBpZiAoX19ieXRlc19sZWZ0ID4gMCkNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgX09iaiogdm9sYXRpbGUqIF9fbXlfZnJlZV9saXN0ID0N
CiAgICAgICAgICAgICAgICBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX2J5dGVz
X2xlZnQpOw0KDQogICAgICAgICAgICAgICgoX09iaiopX1Nfc3RhcnRfZnJlZSkgLT4gX01fZnJl
ZV9saXN0X2xpbmsgPSAqX19teV9mcmVlX2xpc3Q7DQogICAgICAgICAgICAgICpfX215X2ZyZWVf
bGlzdCA9IChfT2JqKilfU19zdGFydF9mcmVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIF9T
X3N0YXJ0X2ZyZWUgPSAoY2hhciopIF9fbWVtX2ludGVyZmFjZTo6YWxsb2NhdGUoX19ieXRlc190
b19nZXQpOw0KICAgICAgICAgIGlmICgwID09IF9TX3N0YXJ0X2ZyZWUpDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgIHNpemVfdCBfX2k7DQogICAgICAgICAgICAgIF9PYmoqIHZvbGF0aWxl
KiBfX215X2ZyZWVfbGlzdDsNCiAgICAgICAgICAgICAgX09iaiogX19wOw0KDQoNCg0KICAgICAg
ICAgICAgICBfX2kgPSBfX3NpemU7DQogICAgICAgICAgICAgIGZvciAoOyBfX2kgPD0gKHNpemVf
dCkgX01BWF9CWVRFUzsgX19pICs9IChzaXplX3QpIF9BTElHTikNCiAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCArIF9TX2Zy
ZWVsaXN0X2luZGV4KF9faSk7DQogICAgICAgICAgICAgICAgICBfX3AgPSAqX19teV9mcmVlX2xp
c3Q7DQogICAgICAgICAgICAgICAgICBpZiAoMCAhPSBfX3ApDQogICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3AgLT4gX01fZnJl
ZV9saXN0X2xpbms7DQogICAgICAgICAgICAgICAgICAgICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFy
KilfX3A7DQogICAgICAgICAgICAgICAgICAgICAgX1NfZW5kX2ZyZWUgPSBfU19zdGFydF9mcmVl
ICsgX19pOw0KICAgICAgICAgICAgICAgICAgICAgIHJldHVybihfU19jaHVua19hbGxvYyhfX3Np
emUsIF9fbm9ianMpKTsNCg0KDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgIF9TX2VuZF9mcmVlID0gMDsNCiAgICAgICAgICAgICAgX1Nfc3Rh
cnRfZnJlZSA9IChjaGFyKilfX21lbV9pbnRlcmZhY2U6OmFsbG9jYXRlKF9fYnl0ZXNfdG9fZ2V0
KTsNCg0KDQogICAgICAgICAgICB9DQogICAgICAgICAgX1NfaGVhcF9zaXplICs9IF9fYnl0ZXNf
dG9fZ2V0Ow0KICAgICAgICAgIF9TX2VuZF9mcmVlID0gX1Nfc3RhcnRfZnJlZSArIF9fYnl0ZXNf
dG9fZ2V0Ow0KICAgICAgICAgIHJldHVybihfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMp
KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQogIHRlbXBsYXRlPGJvb2wgX190aHJlYWRz
LCBpbnQgX19pbnN0Pg0KICAgIHZvaWQqDQogICAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9f
dGhyZWFkcywgX19pbnN0Pjo6X1NfcmVmaWxsKHNpemVfdCBfX24pDQogICAgew0KICAgICAgaW50
IF9fbm9ianMgPSAyMDsNCiAgICAgIGNoYXIqIF9fY2h1bmsgPSBfU19jaHVua19hbGxvYyhfX24s
IF9fbm9ianMpOw0KICAgICAgX09iaiogdm9sYXRpbGUqIF9fbXlfZnJlZV9saXN0Ow0KICAgICAg
X09iaiogX19yZXN1bHQ7DQogICAgICBfT2JqKiBfX2N1cnJlbnRfb2JqOw0KICAgICAgX09iaiog
X19uZXh0X29iajsNCiAgICAgIGludCBfX2k7DQoNCiAgICAgIGlmICgxID09IF9fbm9ianMpIHJl
dHVybihfX2NodW5rKTsNCiAgICAgIF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9saXN0ICsgX1Nf
ZnJlZWxpc3RfaW5kZXgoX19uKTsNCg0KDQogICAgICBfX3Jlc3VsdCA9IChfT2JqKilfX2NodW5r
Ow0KICAgICAgKl9fbXlfZnJlZV9saXN0ID0gX19uZXh0X29iaiA9IChfT2JqKikoX19jaHVuayAr
IF9fbik7DQogICAgICBmb3IgKF9faSA9IDE7IDsgX19pKyspIHsNCiAgICAgICAgX19jdXJyZW50
X29iaiA9IF9fbmV4dF9vYmo7DQogICAgICAgIF9fbmV4dF9vYmogPSAoX09iaiopKChjaGFyKilf
X25leHRfb2JqICsgX19uKTsNCiAgICAgICAgaWYgKF9fbm9ianMgLSAxID09IF9faSkgew0KICAg
ICAgICAgIF9fY3VycmVudF9vYmogLT4gX01fZnJlZV9saXN0X2xpbmsgPSAwOw0KICAgICAgICAg
IGJyZWFrOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIF9fY3VycmVudF9vYmogLT4gX01f
ZnJlZV9saXN0X2xpbmsgPSBfX25leHRfb2JqOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBy
ZXR1cm4oX19yZXN1bHQpOw0KICAgIH0NCg0KDQogIHRlbXBsYXRlPGJvb2wgdGhyZWFkcywgaW50
IGluc3Q+DQogICAgdm9pZCoNCiAgICBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8dGhyZWFkcywg
aW5zdD46OnJlYWxsb2NhdGUodm9pZCogX19wLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vbGRfc3osDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25l
d19zeikNCiAgICB7DQogICAgICB2b2lkKiBfX3Jlc3VsdDsNCiAgICAgIHNpemVfdCBfX2NvcHlf
c3o7DQoNCiAgICAgIGlmIChfX29sZF9zeiA+IChzaXplX3QpIF9NQVhfQllURVMgJiYgX19uZXdf
c3ogPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB7DQogICAgICAgIHJldHVybihyZWFsbG9jKF9fcCwg
X19uZXdfc3opKTsNCiAgICAgIH0NCiAgICAgIGlmIChfU19yb3VuZF91cChfX29sZF9zeikgPT0g
X1Nfcm91bmRfdXAoX19uZXdfc3opKSByZXR1cm4oX19wKTsNCiAgICAgIF9fcmVzdWx0ID0gYWxs
b2NhdGUoX19uZXdfc3opOw0KICAgICAgX19jb3B5X3N6ID0gX19uZXdfc3ogPiBfX29sZF9zej8g
X19vbGRfc3ogOiBfX25ld19zejsNCiAgICAgIG1lbWNweShfX3Jlc3VsdCwgX19wLCBfX2NvcHlf
c3opOw0KICAgICAgZGVhbGxvY2F0ZShfX3AsIF9fb2xkX3N6KTsNCiAgICAgIHJldHVybihfX3Jl
c3VsdCk7DQogICAgfQ0KDQogIHRlbXBsYXRlPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pg0K
ICBfU1RMX211dGV4X2xvY2sNCiAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywg
X19pbnN0Pjo6X1Nfbm9kZV9hbGxvY2F0b3JfbG9jaw0KICA9IHsgMCwgezAsIC0xfSB9Ow0KDQog
IHRlbXBsYXRlPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pg0KICBjaGFyKiBfX2RlZmF1bHRf
YWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19zdGFydF9mcmVlID0gMDsNCg0K
ICB0ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4NCiAgY2hhciogX19kZWZhdWx0
X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfZW5kX2ZyZWUgPSAwOw0KDQog
IHRlbXBsYXRlPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0Pg0KICBzaXplX3QgX19kZWZhdWx0
X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfaGVhcF9zaXplID0gMDsNCg0K
ICB0ZW1wbGF0ZTxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4NCiAgdHlwZW5hbWUgX19kZWZh
dWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X09iaiogdm9sYXRpbGUNCiAg
X19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfZnJlZV9saXN0
W19ORlJFRUxJU1RTXTsNCg0KICB0eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTx0cnVl
LCAwPiBfX2FsbG9jOw0KICB0eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxmYWxzZSwg
MD4gX19zaW5nbGVfY2xpZW50X2FsbG9jOw0KIyA2MTMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2FsbG9jLmgiIDMNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpjbGFz
cyBhbGxvY2F0b3INCnsNCiAgdHlwZWRlZiBfX2FsbG9jIF9BbGxvYzsNCnB1YmxpYzoNCiAgdHlw
ZWRlZiBzaXplX3Qgc2l6ZV90eXBlOw0KICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7DQogIHR5cGVkZWYgX1RwKiBwb2ludGVyOw0KICB0eXBlZGVmIGNvbnN0IF9UcCogY29uc3Rf
cG9pbnRlcjsNCiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsNCiAgdHlwZWRlZiBjb25zdCBfVHAm
IGNvbnN0X3JlZmVyZW5jZTsNCiAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsNCg0KICB0ZW1wbGF0
ZSA8Y2xhc3MgX1RwMT4gc3RydWN0IHJlYmluZCB7DQogICAgdHlwZWRlZiBhbGxvY2F0b3I8X1Rw
MT4gb3RoZXI7DQogIH07DQoNCiAgYWxsb2NhdG9yKCkgdGhyb3coKSB7fQ0KICBhbGxvY2F0b3Io
Y29uc3QgYWxsb2NhdG9yJikgdGhyb3coKSB7fQ0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gYWxs
b2NhdG9yKGNvbnN0IGFsbG9jYXRvcjxfVHAxPiYpIHRocm93KCkge30NCiAgfmFsbG9jYXRvcigp
IHRocm93KCkge30NCg0KICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3QgeyBy
ZXR1cm4gJl9feDsgfQ0KICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIF9f
eCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQ0KDQoNCg0KICBfVHAqIGFsbG9jYXRlKHNpemVfdHlw
ZSBfX24sIGNvbnN0IHZvaWQqID0gMCkgew0KICAgIHJldHVybiBfX24gIT0gMCA/IHN0YXRpY19j
YXN0PF9UcCo+KF9BbGxvYzo6YWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCkpKQ0KICAgICAgICAg
ICAgICAgICAgICA6IDA7DQogIH0NCg0KDQogIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwg
c2l6ZV90eXBlIF9fbikNCiAgICB7IF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIF9fbiAqIHNpemVv
ZihfVHApKTsgfQ0KDQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkNCiAgICB7
IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0NCg0KICB2b2lkIGNvbnN0cnVjdChw
b2ludGVyIF9fcCwgY29uc3QgX1RwJiBfX3ZhbCkgeyBuZXcoX19wKSBfVHAoX192YWwpOyB9DQog
IHZvaWQgZGVzdHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQ0KfTsNCg0KdGVtcGxh
dGU8Pg0KY2xhc3MgYWxsb2NhdG9yPHZvaWQ+IHsNCnB1YmxpYzoNCiAgdHlwZWRlZiBzaXplX3Qg
c2l6ZV90eXBlOw0KICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7DQogIHR5cGVk
ZWYgdm9pZCogcG9pbnRlcjsNCiAgdHlwZWRlZiBjb25zdCB2b2lkKiBjb25zdF9wb2ludGVyOw0K
ICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gc3Ry
dWN0IHJlYmluZCB7DQogICAgdHlwZWRlZiBhbGxvY2F0b3I8X1RwMT4gb3RoZXI7DQogIH07DQp9
Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8X1QyPiYpDQp7DQog
IHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQppbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGFsbG9jYXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9y
PF9UMj4mKQ0Kew0KICByZXR1cm4gZmFsc2U7DQp9DQojIDY5NSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxsb2MuaCIgMw0KdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0FsbG9jPg0Kc3RydWN0IF9fYWxsb2NhdG9yDQp7DQogIF9BbGxvYyBfX3VuZGVybHlp
bmdfYWxsb2M7DQoNCiAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOw0KICB0eXBlZGVmIHB0cmRp
ZmZfdCBkaWZmZXJlbmNlX3R5cGU7DQogIHR5cGVkZWYgX1RwKiBwb2ludGVyOw0KICB0eXBlZGVm
IGNvbnN0IF9UcCogY29uc3RfcG9pbnRlcjsNCiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsNCiAg
dHlwZWRlZiBjb25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsNCiAgdHlwZWRlZiBfVHAgdmFsdWVf
dHlwZTsNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gc3RydWN0IHJlYmluZCB7DQogICAgdHlw
ZWRlZiBfX2FsbG9jYXRvcjxfVHAxLCBfQWxsb2M+IG90aGVyOw0KICB9Ow0KDQogIF9fYWxsb2Nh
dG9yKCkgdGhyb3coKSB7fQ0KICBfX2FsbG9jYXRvcihjb25zdCBfX2FsbG9jYXRvciYgX19hKSB0
aHJvdygpDQogICAgOiBfX3VuZGVybHlpbmdfYWxsb2MoX19hLl9fdW5kZXJseWluZ19hbGxvYykg
e30NCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+DQogIF9fYWxsb2NhdG9yKGNvbnN0IF9fYWxsb2Nh
dG9yPF9UcDEsIF9BbGxvYz4mIF9fYSkgdGhyb3coKQ0KICAgIDogX191bmRlcmx5aW5nX2FsbG9j
KF9fYS5fX3VuZGVybHlpbmdfYWxsb2MpIHt9DQogIH5fX2FsbG9jYXRvcigpIHRocm93KCkge30N
Cg0KICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsg
fQ0KICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIF9feCkgY29uc3QgeyBy
ZXR1cm4gJl9feDsgfQ0KDQoNCiAgX1RwKiBhbGxvY2F0ZShzaXplX3R5cGUgX19uLCBjb25zdCB2
b2lkKiA9IDApIHsNCiAgICByZXR1cm4gX19uICE9IDANCiAgICAgICAgPyBzdGF0aWNfY2FzdDxf
VHAqPihfX3VuZGVybHlpbmdfYWxsb2MuYWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCkpKQ0KICAg
ICAgICA6IDA7DQogIH0NCg0KDQogIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90
eXBlIF9fbikNCiAgICB7IF9fdW5kZXJseWluZ19hbGxvYy5kZWFsbG9jYXRlKF9fcCwgX19uICog
c2l6ZW9mKF9UcCkpOyB9DQoNCiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgdGhyb3coKQ0K
ICAgIHsgcmV0dXJuIHNpemVfdCgtMSkgLyBzaXplb2YoX1RwKTsgfQ0KDQogIHZvaWQgY29uc3Ry
dWN0KHBvaW50ZXIgX19wLCBjb25zdCBfVHAmIF9fdmFsKSB7IG5ldyhfX3ApIF9UcChfX3ZhbCk7
IH0NCiAgdm9pZCBkZXN0cm95KHBvaW50ZXIgX19wKSB7IF9fcC0+fl9UcCgpOyB9DQp9Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0KY2xhc3MgX19hbGxvY2F0b3I8dm9pZCwgX0FsbG9jPiB7
DQogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsNCiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVy
ZW5jZV90eXBlOw0KICB0eXBlZGVmIHZvaWQqIHBvaW50ZXI7DQogIHR5cGVkZWYgY29uc3Qgdm9p
ZCogY29uc3RfcG9pbnRlcjsNCiAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7DQoNCiAgdGVtcGxh
dGUgPGNsYXNzIF9UcDE+IHN0cnVjdCByZWJpbmQgew0KICAgIHR5cGVkZWYgX19hbGxvY2F0b3I8
X1RwMSwgX0FsbG9jPiBvdGhlcjsNCiAgfTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9BbGxvYz4NCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgX19hbGxvY2F0b3I8X1Rw
LCBfQWxsb2M+JiBfX2ExLA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2FsbG9jYXRv
cjxfVHAsIF9BbGxvYz4mIF9fYTIpDQp7DQogIHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19hbGxv
YyA9PSBfX2EyLl9fdW5kZXJseWluZ19hbGxvYzsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0FsbG9jPg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX2FsbG9jYXRvcjxf
VHAsIF9BbGxvYz4mIF9fYTEsDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxsb2Nh
dG9yPF9UcCwgX0FsbG9jPiYgX19hMikNCnsNCiAgcmV0dXJuIF9fYTEuX191bmRlcmx5aW5nX2Fs
bG9jICE9IF9fYTIuX191bmRlcmx5aW5nX2FsbG9jOw0KfQ0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0
ZSA8aW50IGluc3Q+DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9fbWFsbG9jX2FsbG9j
X3RlbXBsYXRlPGluc3Q+JiwNCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19tYWxsb2Nf
YWxsb2NfdGVtcGxhdGU8aW5zdD4mKQ0Kew0KICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGUg
PGludCBfX2luc3Q+DQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IF9fbWFsbG9jX2FsbG9j
X3RlbXBsYXRlPF9faW5zdD4mLA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX21hbGxv
Y19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+JikNCnsNCiAgcmV0dXJuIGZhbHNlOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0FsbG9jPg0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBfX2RlYnVn
X2FsbG9jPF9BbGxvYz4mLA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2RlYnVnX2Fs
bG9jPF9BbGxvYz4mKSB7DQogIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Fs
bG9jPg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBfX2RlYnVnX2FsbG9jPF9BbGxvYz4m
LA0KICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2RlYnVnX2FsbG9jPF9BbGxvYz4mKSB7
DQogIHJldHVybiBmYWxzZTsNCn0NCiMgODQwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9hbGxvYy5oIiAzDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxs
b2NhdG9yPg0Kc3RydWN0IF9BbGxvY190cmFpdHMNCnsNCiAgc3RhdGljIGNvbnN0IGJvb2wgX1Nf
aW5zdGFuY2VsZXNzID0gZmFsc2U7DQogIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jYXRvcjo6dGVt
cGxhdGUgcmViaW5kPF9UcD46Om90aGVyIGFsbG9jYXRvcl90eXBlOw0KfTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRvcj4NCmNvbnN0IGJvb2wgX0FsbG9jX3RyYWl0czxf
VHAsIF9BbGxvY2F0b3I+OjpfU19pbnN0YW5jZWxlc3M7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
cCwgY2xhc3MgX1RwMT4NCnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgYWxsb2NhdG9yPF9UcDE+
ID4NCnsNCiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsNCiAgdHlw
ZWRlZiBfX3NpbXBsZV9hbGxvYzxfVHAsIF9fYWxsb2M+IF9BbGxvY190eXBlOw0KICB0eXBlZGVm
IGFsbG9jYXRvcjxfVHA+IGFsbG9jYXRvcl90eXBlOw0KfTsNCg0KDQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UcCwgaW50IF9faW5zdD4NCnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19tYWxsb2Nf
YWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+DQp7DQogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3Rh
bmNlbGVzcyA9IHRydWU7DQogIHR5cGVkZWYgX19zaW1wbGVfYWxsb2M8X1RwLCBfX21hbGxvY19h
bGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gX0FsbG9jX3R5cGU7DQogIHR5cGVkZWYgX19hbGxvY2F0
b3I8X1RwLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gYWxsb2NhdG9yX3R5cGU7
DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0
Pg0Kc3RydWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190
aHJlYWRzLCBfX2luc3Q+ID4NCnsNCiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNz
ID0gdHJ1ZTsNCiAgdHlwZWRlZiBfX3NpbXBsZV9hbGxvYzxfVHAsIF9fZGVmYXVsdF9hbGxvY190
ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4gPg0KICAgICAgICAgIF9BbGxvY190eXBlOw0KICB0
eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFk
cywgX19pbnN0PiA+DQogICAgICAgICAgYWxsb2NhdG9yX3R5cGU7DQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4NCnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19k
ZWJ1Z19hbGxvYzxfQWxsb2M+ID4NCnsNCiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2Vs
ZXNzID0gdHJ1ZTsNCiAgdHlwZWRlZiBfX3NpbXBsZV9hbGxvYzxfVHAsIF9fZGVidWdfYWxsb2M8
X0FsbG9jPiA+IF9BbGxvY190eXBlOw0KICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19kZWJ1
Z19hbGxvYzxfQWxsb2M+ID4gYWxsb2NhdG9yX3R5cGU7DQp9Ow0KDQoNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfVHAxLCBpbnQgX19pbnN0Pg0Kc3RydWN0IF9BbGxvY190cmFpdHM8
X1RwLA0KICAgICAgICAgICAgICAgICAgICAgX19hbGxvY2F0b3I8X1RwMSwgX19tYWxsb2NfYWxs
b2NfdGVtcGxhdGU8X19pbnN0PiA+ID4NCnsNCiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFu
Y2VsZXNzID0gdHJ1ZTsNCiAgdHlwZWRlZiBfX3NpbXBsZV9hbGxvYzxfVHAsIF9fbWFsbG9jX2Fs
bG9jX3RlbXBsYXRlPF9faW5zdD4gPiBfQWxsb2NfdHlwZTsNCiAgdHlwZWRlZiBfX2FsbG9jYXRv
cjxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD4gPiBhbGxvY2F0b3JfdHlwZTsN
Cn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1RwMSwgYm9vbCBfX3RociwgaW50
IF9faW5zdD4NCnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwNCiAgICAgICAgICAgICAgICAgICAg
ICBfX2FsbG9jYXRvcjxfVHAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
ZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RociwgX19pbnN0PiA+ID4NCnsNCiAgc3RhdGljIGNv
bnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsNCiAgdHlwZWRlZiBfX3NpbXBsZV9hbGxv
YzxfVHAsIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4NCiAgICAgICAg
ICBfQWxsb2NfdHlwZTsNCiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fZGVmYXVsdF9hbGxv
Y190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4NCiAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsNCn07
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1RwMSwgY2xhc3MgX0FsbG9jPg0Kc3Ry
dWN0IF9BbGxvY190cmFpdHM8X1RwLCBfX2FsbG9jYXRvcjxfVHAxLCBfX2RlYnVnX2FsbG9jPF9B
bGxvYz4gPiA+DQp7DQogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7
DQogIHR5cGVkZWYgX19zaW1wbGVfYWxsb2M8X1RwLCBfX2RlYnVnX2FsbG9jPF9BbGxvYz4gPiBf
QWxsb2NfdHlwZTsNCiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fZGVidWdfYWxsb2M8X0Fs
bG9jPiA+IGFsbG9jYXRvcl90eXBlOw0KfTsNCg0KDQoNCg0KDQogIGV4dGVybiB0ZW1wbGF0ZSBj
bGFzcyBhbGxvY2F0b3I8Y2hhcj47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBhbGxvY2F0b3I8
d2NoYXJfdD47DQoNCg0KDQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX2RlZmF1bHRfYWxsb2Nf
dGVtcGxhdGU8dHJ1ZSwgMD47DQoNCn0NCiMgNTYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL21lbW9yeSIgMiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAxIDMNCiMgNjcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAzDQpuYW1lc3BhY2Ugc3RkDQp7DQoNCg0K
DQoNCg0KDQogIHRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4NCiAgICBpbmxpbmUgdm9p
ZA0KICAgIF9Db25zdHJ1Y3QoX1QxKiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkNCiAgICB7IG5l
dyAoc3RhdGljX2Nhc3Q8dm9pZCo+KF9fcCkpIF9UMShfX3ZhbHVlKTsgfQ0KDQoNCg0KDQoNCg0K
DQogIHRlbXBsYXRlIDxjbGFzcyBfVDE+DQogICAgaW5saW5lIHZvaWQNCiAgICBfQ29uc3RydWN0
KF9UMSogX19wKQ0KICAgIHsgbmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oX19wKSkgX1QxKCk7IH0N
CiMgOTggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2NvbnN0cnVj
dC5oIiAzDQogIHRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPg0KICAgIGlubGluZSB2
b2lkDQogICAgX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNlX3R5cGUpDQogICAgeyBmb3IgKCA7IF9fZmlyc3QgIT0g
X19sYXN0OyArK19fZmlyc3QpIF9EZXN0cm95KCYqX19maXJzdCk7IH0NCiMgMTEyICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMw0KICB0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4NCiAgICBpbmxpbmUgdm9pZA0KICAgIF9fZGVz
dHJveV9hdXgoX0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvciwgX190cnVlX3R5cGUp
DQogICAgeyB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlIDxjbGFzcyBfVHA+DQogICAgaW5saW5l
IHZvaWQNCiAgICBfRGVzdHJveShfVHAqIF9fcG9pbnRlcikNCiAgICB7IF9fcG9pbnRlci0+fl9U
cCgpOyB9DQojIDEzNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
Y29uc3RydWN0LmgiIDMNCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+DQogICAg
aW5saW5lIHZvaWQNCiAgICBfRGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0KQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQogICAgICAgICAgICAgICAg
ICAgICAgIF9WYWx1ZV90eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRz
PF9WYWx1ZV90eXBlPjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcg0KICAgICAgICAgICAgICAgICAg
ICAgICBfSGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsNCg0KICAgICAgX19kZXN0cm95X2F1eChfX2Zp
cnN0LCBfX2xhc3QsIF9IYXNfdHJpdmlhbF9kZXN0cnVjdG9yKCkpOw0KICAgIH0NCn0NCiMgNTcg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMiAzDQoNCiMgMSAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAx
IDMNCiMgNjYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX3VuaW5p
dGlhbGl6ZWQuaCIgMw0KbmFtZXNwYWNlIHN0ZA0Kew0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+DQogICAgaW5saW5lIF9Gb3J3YXJk
SXRlcg0KICAgIF9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJdGVyIF9fZmlyc3QsIF9J
bnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIgX19yZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdHJ1ZV90eXBlKQ0K
ICAgIHsgcmV0dXJuIGNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7IH0NCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXI+DQogICAgX0Zv
cndhcmRJdGVyDQogICAgX191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX3Jlc3VsdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90
eXBlKQ0KICAgIHsNCiAgICAgIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fcmVzdWx0Ow0KICAgICAg
aWYgKHRydWUpIHsNCiAgICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0
LCArK19fY3VyKQ0KICAgICAgICAgIF9Db25zdHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOw0KICAg
ICAgICByZXR1cm4gX19jdXI7DQogICAgICB9DQogICAgICBpZiAoZmFsc2UpDQogICAgICAgIHsN
CiAgICAgICAgICBfRGVzdHJveShfX3Jlc3VsdCwgX19jdXIpOw0KICAgICAgICAgIDsNCiAgICAg
ICAgfQ0KICAgIH0NCiMgMTA2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L3N0bF91bmluaXRpYWxpemVkLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwg
dHlwZW5hbWUgX0ZvcndhcmRJdGVyPg0KICAgIGlubGluZSBfRm9yd2FyZEl0ZXINCiAgICB1bmlu
aXRpYWxpemVkX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwgX0Zv
cndhcmRJdGVyIF9fcmVzdWx0KQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsNCiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVmFsdWVUeXBlPjo6aXNfUE9EX3R5cGUgX0lz
X1BPRDsNCiAgICAgIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCwgX0lzX1BPRCgpKTsNCiAgICB9DQoNCiAgaW5saW5lIGNoYXIqDQogIHVu
aW5pdGlhbGl6ZWRfY29weShjb25zdCBjaGFyKiBfX2ZpcnN0LCBjb25zdCBjaGFyKiBfX2xhc3Qs
IGNoYXIqIF9fcmVzdWx0KQ0KICB7DQogICAgbWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgX19s
YXN0IC0gX19maXJzdCk7DQogICAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3Qp
Ow0KICB9DQoNCiAgaW5saW5lIHdjaGFyX3QqDQogIHVuaW5pdGlhbGl6ZWRfY29weShjb25zdCB3
Y2hhcl90KiBfX2ZpcnN0LCBjb25zdCB3Y2hhcl90KiBfX2xhc3QsDQogICAgICAgICAgICAgICAg
ICAgICB3Y2hhcl90KiBfX3Jlc3VsdCkNCiAgew0KICAgIG1lbW1vdmUoX19yZXN1bHQsIF9fZmly
c3QsIHNpemVvZih3Y2hhcl90KSAqIChfX2xhc3QgLSBfX2ZpcnN0KSk7DQogICAgcmV0dXJuIF9f
cmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3QpOw0KICB9DQoNCg0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwPg0KICAgIGlubGluZSB2b2lkDQogICAgX191
bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIg
X19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX190
cnVlX3R5cGUpDQogICAgeyBmaWxsKF9fZmlyc3QsIF9fbGFzdCwgX194KTsgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwPg0KICAgIHZvaWQNCiAgICBf
X3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBf
X2ZhbHNlX3R5cGUpDQogICAgew0KICAgICAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19maXJzdDsN
CiAgICAgIGlmICh0cnVlKSB7DQogICAgICAgIGZvciAoIDsgX19jdXIgIT0gX19sYXN0OyArK19f
Y3VyKQ0KICAgICAgICAgIF9Db25zdHJ1Y3QoJipfX2N1ciwgX194KTsNCiAgICAgIH0NCiAgICAg
IGlmIChmYWxzZSkNCiAgICAgICAgew0KICAgICAgICAgIF9EZXN0cm95KF9fZmlyc3QsIF9fY3Vy
KTsNCiAgICAgICAgICA7DQogICAgICAgIH0NCiAgICB9DQojIDE2NCAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAzDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1RwPg0KICAgIGlubGluZSB2b2lkDQog
ICAgdW5pbml0aWFsaXplZF9maWxsKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIg
X19sYXN0LCBjb25zdCBfVHAmIF9feCkNCiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7DQogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1ZhbHVlVHlwZT46OmlzX1BPRF90eXBl
IF9Jc19QT0Q7DQogICAgICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX19maXJzdCwgX19sYXN0
LCBfX3gsIF9Jc19QT0QoKSk7DQogICAgfQ0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXIsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+DQogICAgaW5saW5lIF9Gb3J3
YXJkSXRlcg0KICAgIF9fdW5pbml0aWFsaXplZF9maWxsX25fYXV4KF9Gb3J3YXJkSXRlciBfX2Zp
cnN0LCBfU2l6ZSBfX24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3gsIF9fdHJ1ZV90eXBlKQ0KICAgIHsNCiAgICAgIHJldHVybiBmaWxsX24oX19maXJzdCwg
X19uLCBfX3gpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5
cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+DQogICAgX0ZvcndhcmRJdGVyDQogICAgX191bmlu
aXRpYWxpemVkX2ZpbGxfbl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX19mYWxzZV90eXBl
KQ0KICAgIHsNCiAgICAgIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7DQogICAgICBpZiAo
dHJ1ZSkgew0KICAgICAgICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fY3VyKQ0KICAgICAg
ICAgIF9Db25zdHJ1Y3QoJipfX2N1ciwgX194KTsNCiAgICAgICAgcmV0dXJuIF9fY3VyOw0KICAg
ICAgfQ0KICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICB7DQogICAgICAgICAgX0Rlc3Ryb3koX19m
aXJzdCwgX19jdXIpOw0KICAgICAgICAgIDsNCiAgICAgICAgfQ0KICAgIH0NCiMgMjEwICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5h
bWUgX1RwPg0KICAgIGlubGluZSBfRm9yd2FyZEl0ZXINCiAgICB1bmluaXRpYWxpemVkX2ZpbGxf
bihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9feCkNCiAgICB7
DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2
YWx1ZV90eXBlIF9WYWx1ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFp
dHM8X1ZhbHVlVHlwZT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7DQogICAgICByZXR1cm4gX191bmlu
aXRpYWxpemVkX2ZpbGxfbl9hdXgoX19maXJzdCwgX19uLCBfX3gsIF9Jc19QT0QoKSk7DQogICAg
fQ0KIyAyMjcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX3VuaW5p
dGlhbGl6ZWQuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUg
X0lucHV0SXRlcjIsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAgICBpbmxpbmUgX0ZvcndhcmRJ
dGVyDQogICAgX191bmluaXRpYWxpemVkX2NvcHlfY29weShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwg
X0lucHV0SXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1
dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KQ0KICAgIHsNCiAgICAgIF9Gb3J3YXJk
SXRlciBfX21pZCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1
bHQpOw0KICAgICAgaWYgKHRydWUpIHsNCiAgICAgICAgcmV0dXJuIHVuaW5pdGlhbGl6ZWRfY29w
eShfX2ZpcnN0MiwgX19sYXN0MiwgX19taWQpOw0KICAgICAgfQ0KICAgICAgaWYgKGZhbHNlKQ0K
ICAgICAgICB7DQogICAgICAgICAgX0Rlc3Ryb3koX19yZXN1bHQsIF9fbWlkKTsNCiAgICAgICAg
ICA7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9JbnB1dEl0ZXI+DQogICAgaW5saW5lIF9G
b3J3YXJkSXRlcg0KICAgIF9fdW5pbml0aWFsaXplZF9maWxsX2NvcHkoX0ZvcndhcmRJdGVyIF9f
cmVzdWx0LCBfRm9yd2FyZEl0ZXIgX19taWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBfVHAmIF9feCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QpDQogICAgew0KICAgICAgdW5pbml0aWFsaXpl
ZF9maWxsKF9fcmVzdWx0LCBfX21pZCwgX194KTsNCiAgICAgIGlmICh0cnVlKSB7DQogICAgICAg
IHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX21pZCk7DQogICAg
ICB9DQogICAgICBpZiAoZmFsc2UpDQogICAgICAgIHsNCiAgICAgICAgICBfRGVzdHJveShfX3Jl
c3VsdCwgX19taWQpOw0KICAgICAgICAgIDsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVu
YW1lIF9UcD4NCiAgICBpbmxpbmUgdm9pZA0KICAgIF9fdW5pbml0aWFsaXplZF9jb3B5X2ZpbGwo
X0lucHV0SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3QxLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIgX19sYXN0
MiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194KQ0KICAgIHsN
CiAgICAgIF9Gb3J3YXJkSXRlciBfX21pZDIgPSB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDEs
IF9fbGFzdDEsIF9fZmlyc3QyKTsNCiAgICAgIGlmICh0cnVlKSB7DQogICAgICAgIHVuaW5pdGlh
bGl6ZWRfZmlsbChfX21pZDIsIF9fbGFzdDIsIF9feCk7DQogICAgICB9DQogICAgICBpZiAoZmFs
c2UpDQogICAgICAgIHsNCiAgICAgICAgICBfRGVzdHJveShfX2ZpcnN0MiwgX19taWQyKTsNCiAg
ICAgICAgICA7DQogICAgICAgIH0NCiAgICB9DQoNCn0NCiMgNTkgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX3Jhd19zdG9yYWdlX2l0ZXIuaCIgMSAzDQojIDY0ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDMN
Cm5hbWVzcGFjZSBzdGQNCnsNCg0KDQoNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVy
YXRvciwgY2xhc3MgX1RwPg0KICBjbGFzcyByYXdfc3RvcmFnZV9pdGVyYXRvcg0KICAgIDogcHVi
bGljIGl0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+
DQogICAgew0KICAgIHByb3RlY3RlZDoNCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX01faXRlcjsN
Cg0KICAgIHB1YmxpYzoNCiAgICAgIGV4cGxpY2l0DQogICAgICByYXdfc3RvcmFnZV9pdGVyYXRv
cihfRm9yd2FyZEl0ZXJhdG9yIF9feCkgOiBfTV9pdGVyKF9feCkge30NCg0KICAgICAgcmF3X3N0
b3JhZ2VfaXRlcmF0b3ImDQogICAgICBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQ0KDQog
ICAgICByYXdfc3RvcmFnZV9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yPShjb25zdCBfVHAmIF9f
ZWxlbWVudCkNCiAgICAgIHsNCiAgICAgICAgX0NvbnN0cnVjdCgmKl9NX2l0ZXIsIF9fZWxlbWVu
dCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KICAgICAgcmF3X3N0b3JhZ2Vf
aXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiYNCiAgICAgIG9wZXJhdG9yKysoKQ0KICAg
ICAgew0KICAgICAgICArK19NX2l0ZXI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0N
Cg0KICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPg0KICAg
ICAgb3BlcmF0b3IrKyhpbnQpDQogICAgICB7DQogICAgICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9y
PF9Gb3J3YXJkSXRlcmF0b3IsIF9UcD4gX190bXAgPSAqdGhpczsNCiAgICAgICAgKytfTV9pdGVy
Ow0KICAgICAgICByZXR1cm4gX190bXA7DQogICAgICB9DQogICAgfTsNCn0NCiMgNjAgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMiAzDQoNCm5hbWVzcGFjZSBzdGQN
CnsNCg0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0KICBwYWlyPF9UcCosIHB0
cmRpZmZfdD4NCiAgX19nZXRfdGVtcG9yYXJ5X2J1ZmZlcihwdHJkaWZmX3QgX19sZW4sIF9UcCop
DQogIHsNCiAgICBpZiAoX19sZW4gPiBwdHJkaWZmX3QoMjE0NzQ4MzY0NyAvIHNpemVvZihfVHAp
KSkNCiAgICAgIF9fbGVuID0gMjE0NzQ4MzY0NyAvIHNpemVvZihfVHApOw0KDQogICAgd2hpbGUg
KF9fbGVuID4gMCkgew0KICAgICAgX1RwKiBfX3RtcCA9IChfVHAqKSBzdGQ6Om1hbGxvYygoc3Rk
OjpzaXplX3QpX19sZW4gKiBzaXplb2YoX1RwKSk7DQogICAgICBpZiAoX190bXAgIT0gMCkNCiAg
ICAgICAgcmV0dXJuIHBhaXI8X1RwKiwgcHRyZGlmZl90PihfX3RtcCwgX19sZW4pOw0KICAgICAg
X19sZW4gLz0gMjsNCiAgICB9DQoNCiAgICByZXR1cm4gcGFpcjxfVHAqLCBwdHJkaWZmX3Q+KChf
VHAqKTAsIDApOw0KICB9DQojIDEwMiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
bWVtb3J5IiAzDQogIHRlbXBsYXRlIDxjbGFzcyBfVHA+DQogIGlubGluZSBwYWlyPF9UcCosIHB0
cmRpZmZfdD4gZ2V0X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9fbGVuKSB7DQogICAgcmV0
dXJuIF9fZ2V0X3RlbXBvcmFyeV9idWZmZXIoX19sZW4sIChfVHAqKSAwKTsNCiAgfQ0KIyAxMTQg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL21lbW9yeSIgMw0KICB0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPg0KICB2b2lkIHJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9UcCogX19wKSB7DQog
ICAgc3RkOjpmcmVlKF9fcCk7DQogIH0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4NCiAgc3Ry
dWN0IGF1dG9fcHRyX3JlZg0Kew0KICAgX1RwMSogX01fcHRyOw0KICAgYXV0b19wdHJfcmVmKF9U
cDEqIF9fcCkgOiBfTV9wdHIoX19wKSB7fQ0KfTsNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
cD4NCiAgY2xhc3MgYXV0b19wdHINCnsNCnByaXZhdGU6DQogIF9UcCogX01fcHRyOw0KDQpwdWJs
aWM6DQogIHR5cGVkZWYgX1RwIGVsZW1lbnRfdHlwZTsNCg0KICBleHBsaWNpdCBhdXRvX3B0cihf
VHAqIF9fcCA9IDApIHRocm93KCkgOiBfTV9wdHIoX19wKSB7fQ0KICBhdXRvX3B0cihhdXRvX3B0
ciYgX19hKSB0aHJvdygpIDogX01fcHRyKF9fYS5yZWxlYXNlKCkpIHt9DQoNCiAgdGVtcGxhdGUg
PGNsYXNzIF9UcDE+IGF1dG9fcHRyKGF1dG9fcHRyPF9UcDE+JiBfX2EpIHRocm93KCkNCiAgICA6
IF9NX3B0cihfX2EucmVsZWFzZSgpKSB7fQ0KDQogIGF1dG9fcHRyJiBvcGVyYXRvcj0oYXV0b19w
dHImIF9fYSkgdGhyb3coKSB7DQogICAgcmVzZXQoX19hLnJlbGVhc2UoKSk7DQogICAgcmV0dXJu
ICp0aGlzOw0KICB9DQoNCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+DQogIGF1dG9fcHRyJiBvcGVy
YXRvcj0oYXV0b19wdHI8X1RwMT4mIF9fYSkgdGhyb3coKSB7DQogICAgcmVzZXQoX19hLnJlbGVh
c2UoKSk7DQogICAgcmV0dXJuICp0aGlzOw0KICB9DQoNCg0KDQoNCg0KICB+YXV0b19wdHIoKSB7
IGRlbGV0ZSBfTV9wdHI7IH0NCg0KICBfVHAmIG9wZXJhdG9yKigpIGNvbnN0IHRocm93KCkgew0K
ICAgIHJldHVybiAqX01fcHRyOw0KICB9DQogIF9UcCogb3BlcmF0b3ItPigpIGNvbnN0IHRocm93
KCkgew0KICAgIHJldHVybiBfTV9wdHI7DQogIH0NCiAgX1RwKiBnZXQoKSBjb25zdCB0aHJvdygp
IHsNCiAgICByZXR1cm4gX01fcHRyOw0KICB9DQogIF9UcCogcmVsZWFzZSgpIHRocm93KCkgew0K
ICAgIF9UcCogX190bXAgPSBfTV9wdHI7DQogICAgX01fcHRyID0gMDsNCiAgICByZXR1cm4gX190
bXA7DQogIH0NCiAgdm9pZCByZXNldChfVHAqIF9fcCA9IDApIHRocm93KCkgew0KICAgIGlmIChf
X3AgIT0gX01fcHRyKSB7DQogICAgICBkZWxldGUgX01fcHRyOw0KICAgICAgX01fcHRyID0gX19w
Ow0KICAgIH0NCiAgfQ0KDQpwdWJsaWM6DQogIGF1dG9fcHRyKGF1dG9fcHRyX3JlZjxfVHA+IF9f
cmVmKSB0aHJvdygpDQogICAgOiBfTV9wdHIoX19yZWYuX01fcHRyKSB7fQ0KDQogIGF1dG9fcHRy
JiBvcGVyYXRvcj0oYXV0b19wdHJfcmVmPF9UcD4gX19yZWYpIHRocm93KCkgew0KICAgIGlmIChf
X3JlZi5fTV9wdHIgIT0gdGhpcy0+Z2V0KCkpIHsNCiAgICAgIGRlbGV0ZSBfTV9wdHI7DQogICAg
ICBfTV9wdHIgPSBfX3JlZi5fTV9wdHI7DQogICAgfQ0KICAgIHJldHVybiAqdGhpczsNCiAgfQ0K
DQogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBvcGVyYXRvciBhdXRvX3B0cl9yZWY8X1RwMT4oKSB0
aHJvdygpDQogICAgeyByZXR1cm4gYXV0b19wdHJfcmVmPF9UcD4odGhpcy0+cmVsZWFzZSgpKTsg
fQ0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gb3BlcmF0b3IgYXV0b19wdHI8X1RwMT4oKSB0aHJv
dygpDQogICAgeyByZXR1cm4gYXV0b19wdHI8X1RwMT4odGhpcy0+cmVsZWFzZSgpKTsgfQ0KfTsN
Cg0KfQ0KIyA0OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvc3RyaW5nIiAyIDMN
Cg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfZnVu
Y3Rpb24uaCIgMSAzDQojIDY0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L3N0bF9mdW5jdGlvbi5oIiAzDQpuYW1lc3BhY2Ugc3RkDQp7DQojIDEwMSAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfZnVuY3Rpb24uaCIgMw0KdGVtcGxhdGUgPGNs
YXNzIF9BcmcsIGNsYXNzIF9SZXN1bHQ+DQpzdHJ1Y3QgdW5hcnlfZnVuY3Rpb24gew0KICB0eXBl
ZGVmIF9BcmcgYXJndW1lbnRfdHlwZTsNCiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOw0K
fTsNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xhc3MgX1Jl
c3VsdD4NCnN0cnVjdCBiaW5hcnlfZnVuY3Rpb24gew0KICB0eXBlZGVmIF9BcmcxIGZpcnN0X2Fy
Z3VtZW50X3R5cGU7DQogIHR5cGVkZWYgX0FyZzIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7DQogIHR5
cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsNCn07DQojIDEyNyAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfZnVuY3Rpb24uaCIgMw0KdGVtcGxhdGUgPGNsYXNzIF9U
cD4NCnN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gew0K
ICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsg
cmV0dXJuIF9feCArIF9feTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0
IG1pbnVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gew0KICBfVHAgb3Bl
cmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9f
eCAtIF9feTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0IG11bHRpcGxp
ZXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7DQogIF9UcCBvcGVyYXRv
cigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICog
X195OyB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpzdHJ1Y3QgZGl2aWRlcyA6IHB1
YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsNCiAgX1RwIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggLyBfX3k7IH0N
Cn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcD4NCnN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4NCnsNCiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1Rw
JiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggJSBfX3k7IH0NCn07DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UcD4NCnN0cnVjdCBuZWdhdGUgOiBwdWJsaWMgdW5hcnlfZnVu
Y3Rpb248X1RwLF9UcD4NCnsNCiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0
IHsgcmV0dXJuIC1fX3g7IH0NCn07DQojIDE3MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvYml0cy9zdGxfZnVuY3Rpb24uaCIgMw0KdGVtcGxhdGUgPGNsYXNzIF9UcD4NCnN0cnVj
dCBlcXVhbF90byA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPg0Kew0KICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJl
dHVybiBfX3ggPT0gX195OyB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpzdHJ1Y3Qg
bm90X2VxdWFsX3RvIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+DQp7DQog
IGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsg
cmV0dXJuIF9feCAhPSBfX3k7IH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcD4NCnN0cnVj
dCBncmVhdGVyIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+DQp7DQogIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0
dXJuIF9feCA+IF9feTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0IGxl
c3MgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4NCnsNCiAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194
IDwgX195OyB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpzdHJ1Y3QgZ3JlYXRlcl9l
cXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPg0Kew0KICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBf
X3ggPj0gX195OyB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpzdHJ1Y3QgbGVzc19l
cXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPg0Kew0KICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBf
X3ggPD0gX195OyB9DQp9Ow0KIyAyMjIgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpzdHJ1Y3QgbG9n
aWNhbF9hbmQgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4NCnsNCiAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1
cm4gX194ICYmIF9feTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0IGxv
Z2ljYWxfb3IgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4NCnsNCiAgYm9v
bCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1
cm4gX194IHx8IF9feTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPg0Kc3RydWN0IGxv
Z2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCxib29sPg0Kew0KICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuICFfX3g7IH0NCn07DQojIDI3
MSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfZnVuY3Rpb24uaCIg
Mw0KdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+DQpjbGFzcyB1bmFyeV9uZWdhdGUNCiAgOiBw
dWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX1ByZWRpY2F0ZTo6YXJndW1lbnRfdHlwZSwg
Ym9vbD4gew0KcHJvdGVjdGVkOg0KICBfUHJlZGljYXRlIF9NX3ByZWQ7DQpwdWJsaWM6DQogIGV4
cGxpY2l0IHVuYXJ5X25lZ2F0ZShjb25zdCBfUHJlZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gp
IHt9DQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVu
dF90eXBlJiBfX3gpIGNvbnN0IHsNCiAgICByZXR1cm4gIV9NX3ByZWQoX194KTsNCiAgfQ0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4NCmlubGluZSB1bmFyeV9uZWdhdGU8X1By
ZWRpY2F0ZT4NCm5vdDEoY29uc3QgX1ByZWRpY2F0ZSYgX19wcmVkKQ0Kew0KICByZXR1cm4gdW5h
cnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Q
cmVkaWNhdGU+DQpjbGFzcyBiaW5hcnlfbmVnYXRlDQogIDogcHVibGljIGJpbmFyeV9mdW5jdGlv
bjx0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sPiB7DQpwcm90ZWN0ZWQ6DQogIF9QcmVk
aWNhdGUgX01fcHJlZDsNCnB1YmxpYzoNCiAgZXhwbGljaXQgYmluYXJ5X25lZ2F0ZShjb25zdCBf
UHJlZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gpIHt9DQogIGJvb2wgb3BlcmF0b3IoKShjb25z
dCB0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gsDQogICAgICAg
ICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlw
ZSYgX195KSBjb25zdA0KICB7DQogICAgcmV0dXJuICFfTV9wcmVkKF9feCwgX195KTsNCiAgfQ0K
fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4NCmlubGluZSBiaW5hcnlfbmVnYXRl
PF9QcmVkaWNhdGU+DQpub3QyKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkNCnsNCiAgcmV0dXJu
IGJpbmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsNCn0NCiMgMzQ5ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzDQp0ZW1wbGF0ZSA8
Y2xhc3MgX09wZXJhdGlvbj4NCmNsYXNzIGJpbmRlcjFzdA0KICA6IHB1YmxpYyB1bmFyeV9mdW5j
dGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+IHsNCnBy
b3RlY3RlZDoNCiAgX09wZXJhdGlvbiBvcDsNCiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3Rf
YXJndW1lbnRfdHlwZSB2YWx1ZTsNCnB1YmxpYzoNCiAgYmluZGVyMXN0KGNvbnN0IF9PcGVyYXRp
b24mIF9feCwNCiAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2Fy
Z3VtZW50X3R5cGUmIF9feSkNCiAgICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7fQ0KICB0eXBl
bmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQ0KICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1l
IF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsNCiAgICByZXR1
cm4gb3AodmFsdWUsIF9feCk7DQogIH0NCg0KDQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs
dF90eXBlDQogIG9wZXJhdG9yKCkodHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50
X3R5cGUmIF9feCkgY29uc3Qgew0KICAgIHJldHVybiBvcCh2YWx1ZSwgX194KTsNCiAgfQ0KDQp9
Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBfVHA+DQppbmxpbmUgYmlu
ZGVyMXN0PF9PcGVyYXRpb24+DQpiaW5kMXN0KGNvbnN0IF9PcGVyYXRpb24mIF9fZm4sIGNvbnN0
IF9UcCYgX194KQ0Kew0KICB0eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3Vt
ZW50X3R5cGUgX0FyZzFfdHlwZTsNCiAgcmV0dXJuIGJpbmRlcjFzdDxfT3BlcmF0aW9uPihfX2Zu
LCBfQXJnMV90eXBlKF9feCkpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uPg0K
Y2xhc3MgYmluZGVyMm5kDQogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVy
YXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlPiB7DQpwcm90ZWN0ZWQ6DQogIF9PcGVyYXRp
b24gb3A7DQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVl
Ow0KcHVibGljOg0KICBiaW5kZXIybmQoY29uc3QgX09wZXJhdGlvbiYgX194LA0KICAgICAgICAg
ICAgY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkN
CiAgICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7fQ0KICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpy
ZXN1bHRfdHlwZQ0KICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0
X2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3Qgew0KICAgIHJldHVybiBvcChfX3gsIHZhbHVlKTsN
CiAgfQ0KDQoNCiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUNCiAgb3BlcmF0b3Io
KSh0eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsN
CiAgICByZXR1cm4gb3AoX194LCB2YWx1ZSk7DQogIH0NCg0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX09wZXJhdGlvbiwgY2xhc3MgX1RwPg0KaW5saW5lIGJpbmRlcjJuZDxfT3BlcmF0aW9uPg0K
YmluZDJuZChjb25zdCBfT3BlcmF0aW9uJiBfX2ZuLCBjb25zdCBfVHAmIF9feCkNCnsNCiAgdHlw
ZWRlZiB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBfQXJnMl90eXBl
Ow0KICByZXR1cm4gYmluZGVyMm5kPF9PcGVyYXRpb24+KF9fZm4sIF9BcmcyX3R5cGUoX194KSk7
DQp9DQojIDQzOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfZnVu
Y3Rpb24uaCIgMw0KdGVtcGxhdGUgPGNsYXNzIF9BcmcsIGNsYXNzIF9SZXN1bHQ+DQpjbGFzcyBw
b2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9S
ZXN1bHQ+IHsNCnByb3RlY3RlZDoNCiAgX1Jlc3VsdCAoKl9NX3B0cikoX0FyZyk7DQpwdWJsaWM6
DQogIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oKSB7fQ0KICBleHBsaWNpdCBwb2ludGVyX3Rv
X3VuYXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9BcmcpKSA6IF9NX3B0cihfX3gpIHt9DQog
IF9SZXN1bHQgb3BlcmF0b3IoKShfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gX01fcHRyKF9feCk7
IH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BcmcsIGNsYXNzIF9SZXN1bHQ+DQppbmxpbmUg
cG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVzdWx0PiBwdHJfZnVuKF9SZXN1bHQg
KCpfX3gpKF9BcmcpKQ0Kew0KICByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJn
LCBfUmVzdWx0PihfX3gpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0Fy
ZzIsIGNsYXNzIF9SZXN1bHQ+DQpjbGFzcyBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbiA6DQog
IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4gew0KcHJvdGVjdGVk
Og0KICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7DQpwdWJsaWM6DQogICAgcG9p
bnRlcl90b19iaW5hcnlfZnVuY3Rpb24oKSB7fQ0KICAgIGV4cGxpY2l0IHBvaW50ZXJfdG9fYmlu
YXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9BcmcxLCBfQXJnMikpDQogICAgICA6IF9NX3B0
cihfX3gpIHt9DQogICAgX1Jlc3VsdCBvcGVyYXRvcigpKF9BcmcxIF9feCwgX0FyZzIgX195KSBj
b25zdCB7DQogICAgICByZXR1cm4gX01fcHRyKF9feCwgX195KTsNCiAgICB9DQp9Ow0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+DQppbmxpbmUg
cG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4NCnB0cl9mdW4o
X1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgew0KICByZXR1cm4gcG9pbnRlcl90b19iaW5h
cnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4oX194KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPg0Kc3RydWN0IF9JZGVudGl0eSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAs
X1RwPiB7DQogIF9UcCYgb3BlcmF0b3IoKShfVHAmIF9feCkgY29uc3QgeyByZXR1cm4gX194OyB9
DQogIGNvbnN0IF9UcCYgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QgeyByZXR1cm4g
X194OyB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+DQpzdHJ1Y3QgX1NlbGVjdDFzdCA6
IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGU+
IHsNCiAgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmIG9wZXJhdG9yKCkoX1BhaXImIF9feCkg
Y29uc3Qgew0KICAgIHJldHVybiBfX3guZmlyc3Q7DQogIH0NCiAgY29uc3QgdHlwZW5hbWUgX1Bh
aXI6OmZpcnN0X3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX1BhaXImIF9feCkgY29uc3Qgew0KICAg
IHJldHVybiBfX3guZmlyc3Q7DQogIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4NCnN0
cnVjdCBfU2VsZWN0Mm5kIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9QYWlyLCB0eXBlbmFtZSBf
UGFpcjo6c2Vjb25kX3R5cGU+DQp7DQogIHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZSYgb3Bl
cmF0b3IoKShfUGFpciYgX194KSBjb25zdCB7DQogICAgcmV0dXJuIF9feC5zZWNvbmQ7DQogIH0N
CiAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OnNlY29uZF90eXBlJiBvcGVyYXRvcigpKGNvbnN0IF9Q
YWlyJiBfX3gpIGNvbnN0IHsNCiAgICByZXR1cm4gX194LnNlY29uZDsNCiAgfQ0KfTsNCiMgNTI4
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9mdW5jdGlvbi5oIiAz
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPg0KY2xhc3MgbWVtX2Z1bl90IDogcHVi
bGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosX1JldD4gew0KcHVibGljOg0KICBleHBsaWNpdCBtZW1f
ZnVuX3QoX1JldCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9DQogIF9SZXQgb3BlcmF0
b3IoKShfVHAqIF9fcCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0NCnByaXZhdGU6
DQogIF9SZXQgKF9UcDo6Kl9NX2YpKCk7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfVHA+DQpjbGFzcyBjb25zdF9tZW1fZnVuX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248
Y29uc3QgX1RwKixfUmV0PiB7DQpwdWJsaWM6DQogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fdChf
UmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19wZikge30NCiAgX1JldCBvcGVyYXRv
cigpKGNvbnN0IF9UcCogX19wKSBjb25zdCB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQ0KcHJp
dmF0ZToNCiAgX1JldCAoX1RwOjoqX01fZikoKSBjb25zdDsNCn07DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzIF9UcD4NCmNsYXNzIG1lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlf
ZnVuY3Rpb248X1RwLF9SZXQ+IHsNCnB1YmxpYzoNCiAgZXhwbGljaXQgbWVtX2Z1bl9yZWZfdChf
UmV0IChfVHA6OipfX3BmKSgpKSA6IF9NX2YoX19wZikge30NCiAgX1JldCBvcGVyYXRvcigpKF9U
cCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9DQpwcml2YXRlOg0KICBfUmV0
IChfVHA6OipfTV9mKSgpOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1Rw
Pg0KY2xhc3MgY29uc3RfbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAs
X1JldD4gew0KcHVibGljOg0KICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90KF9SZXQgKF9U
cDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQ0KICBfUmV0IG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3IpIGNvbnN0IHsgcmV0dXJuIChfX3IuKl9NX2YpKCk7IH0NCnByaXZhdGU6DQog
IF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmV0
LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+DQpjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAqLF9BcmcsX1JldD4gew0KcHVibGljOg0KICBleHBsaWNpdCBtZW1fZnVu
MV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30NCiAgX1JldCBvcGVy
YXRvcigpKF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9f
eCk7IH0NCnByaXZhdGU6DQogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOw0KfTsNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPg0KY2xhc3MgY29uc3RfbWVt
X2Z1bjFfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLF9SZXQ+IHsN
CnB1YmxpYzoNCiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfdChfUmV0IChfVHA6OipfX3BmKShf
QXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9DQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAq
IF9fcCwgX0FyZyBfX3gpIGNvbnN0DQogICAgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7IH0N
CnByaXZhdGU6DQogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Ow0KfTsNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPg0KY2xhc3MgbWVtX2Z1bjFf
cmVmX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLF9SZXQ+IHsNCnB1YmxpYzoN
CiAgZXhwbGljaXQgbWVtX2Z1bjFfcmVmX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykpIDogX01f
ZihfX3BmKSB7fQ0KICBfUmV0IG9wZXJhdG9yKCkoX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7
IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9DQpwcml2YXRlOg0KICBfUmV0IChfVHA6OipfTV9m
KShfQXJnKTsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3Mg
X0FyZz4NCmNsYXNzIGNvbnN0X21lbV9mdW4xX3JlZl90IDogcHVibGljIGJpbmFyeV9mdW5jdGlv
bjxfVHAsX0FyZyxfUmV0PiB7DQpwdWJsaWM6DQogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3Jl
Zl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6IF9NX2YoX19wZikge30NCiAgX1Jl
dCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9f
ci4qX01fZikoX194KTsgfQ0KcHJpdmF0ZToNCiAgX1JldCAoX1RwOjoqX01fZikoX0FyZykgY29u
c3Q7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpjbGFzcyBtZW1fZnVuX3Q8dm9pZCwg
X1RwPiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAqLHZvaWQ+IHsNCnB1YmxpYzoNCiAgZXhw
bGljaXQgbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihfX3BmKSB7fQ0KICB2
b2lkIG9wZXJhdG9yKCkoX1RwKiBfX3ApIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKCk7IH0NCnByaXZh
dGU6DQogIHZvaWQgKF9UcDo6Kl9NX2YpKCk7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+
DQpjbGFzcyBjb25zdF9tZW1fZnVuX3Q8dm9pZCwgX1RwPiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlv
bjxjb25zdCBfVHAqLHZvaWQ+IHsNCnB1YmxpYzoNCiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90
KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQ0KICB2b2lkIG9wZXJh
dG9yKCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKCk7IH0NCnByaXZhdGU6
DQogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHA+DQpjbGFzcyBtZW1fZnVuX3JlZl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rp
b248X1RwLHZvaWQ+IHsNCnB1YmxpYzoNCiAgZXhwbGljaXQgbWVtX2Z1bl9yZWZfdCh2b2lkIChf
VHA6OipfX3BmKSgpKSA6IF9NX2YoX19wZikge30NCiAgdm9pZCBvcGVyYXRvcigpKF9UcCYgX19y
KSBjb25zdCB7IChfX3IuKl9NX2YpKCk7IH0NCnByaXZhdGU6DQogIHZvaWQgKF9UcDo6Kl9NX2Yp
KCk7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHA+DQpjbGFzcyBjb25zdF9tZW1fZnVuX3Jl
Zl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLHZvaWQ+IHsNCnB1Ymxp
YzoNCiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl9yZWZfdCh2b2lkIChfVHA6OipfX3BmKSgpIGNv
bnN0KSA6IF9NX2YoX19wZikge30NCiAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yKSBj
b25zdCB7IChfX3IuKl9NX2YpKCk7IH0NCnByaXZhdGU6DQogIHZvaWQgKF9UcDo6Kl9NX2YpKCkg
Y29uc3Q7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+DQpjbGFzcyBt
ZW1fZnVuMV90PHZvaWQsIF9UcCwgX0FyZz4gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCos
X0FyZyx2b2lkPiB7DQpwdWJsaWM6DQogIGV4cGxpY2l0IG1lbV9mdW4xX3Qodm9pZCAoX1RwOjoq
X19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQ0KICB2b2lkIG9wZXJhdG9yKCkoX1RwKiBfX3As
IF9BcmcgX194KSBjb25zdCB7IChfX3AtPipfTV9mKShfX3gpOyB9DQpwcml2YXRlOg0KICB2b2lk
IChfVHA6OipfTV9mKShfQXJnKTsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0FyZz4NCmNsYXNzIGNvbnN0X21lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJnPg0KICA6IHB1Ymxp
YyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLHZvaWQ+IHsNCnB1YmxpYzoNCiAgZXhw
bGljaXQgY29uc3RfbWVtX2Z1bjFfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSBjb25zdCkgOiBf
TV9mKF9fcGYpIHt9DQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0FyZyBfX3gp
IGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7IH0NCnByaXZhdGU6DQogIHZvaWQgKF9UcDo6Kl9N
X2YpKF9BcmcpIGNvbnN0Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQXJn
Pg0KY2xhc3MgbWVtX2Z1bjFfcmVmX3Q8dm9pZCwgX1RwLCBfQXJnPg0KICA6IHB1YmxpYyBiaW5h
cnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gew0KcHVibGljOg0KICBleHBsaWNpdCBtZW1fZnVu
MV9yZWZfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9DQogIHZvaWQg
b3BlcmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsg
fQ0KcHJpdmF0ZToNCiAgdm9pZCAoX1RwOjoqX01fZikoX0FyZyk7DQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+DQpjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdDx2b2lk
LCBfVHAsIF9Bcmc+DQogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0FyZyx2b2lkPiB7
DQpwdWJsaWM6DQogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KHZvaWQgKF9UcDo6Kl9f
cGYpKF9BcmcpIGNvbnN0KSA6IF9NX2YoX19wZikge30NCiAgdm9pZCBvcGVyYXRvcigpKGNvbnN0
IF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyAoX19yLipfTV9mKShfX3gpOyB9DQpwcml2YXRl
Og0KICB2b2lkIChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsNCn07DQoNCg0KDQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4NCmlubGluZSBtZW1fZnVuX3Q8X1JldCxfVHA+IG1l
bV9mdW4oX1JldCAoX1RwOjoqX19mKSgpKQ0KICB7IHJldHVybiBtZW1fZnVuX3Q8X1JldCxfVHA+
KF9fZik7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4NCmlubGluZSBjb25z
dF9tZW1fZnVuX3Q8X1JldCxfVHA+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQ0K
ICB7IHJldHVybiBjb25zdF9tZW1fZnVuX3Q8X1JldCxfVHA+KF9fZik7IH0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4NCmlubGluZSBtZW1fZnVuX3JlZl90PF9SZXQsX1RwPiBt
ZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKCkpDQogIHsgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8
X1JldCxfVHA+KF9fZik7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4NCmlu
bGluZSBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsX1RwPiBtZW1fZnVuX3JlZihfUmV0IChfVHA6
OipfX2YpKCkgY29uc3QpDQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW5fcmVmX3Q8X1JldCxfVHA+
KF9fZik7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4N
CmlubGluZSBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19m
KShfQXJnKSkNCiAgeyByZXR1cm4gbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+DQppbmxpbmUgY29u
c3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPiBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0Fy
ZykgY29uc3QpDQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4oX19m
KTsgfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPg0KaW5s
aW5lIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6
Kl9fZikoX0FyZykpDQogIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9f
Zik7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4NCmlu
bGluZSBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPg0KbWVtX2Z1bl9yZWYoX1Jl
dCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkNCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bjFfcmVm
X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQ0KDQoNCg0KfQ0KIyA1MyAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS9nKystdjMvc3RyaW5nIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9nKystdjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMSAzDQojIDQ0ICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzDQoNCiMgMSAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvYXRvbWljaXR5
LmgiIDEgMw0KIyAzMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1t
aW5ndzMyL2JpdHMvYXRvbWljaXR5LmgiIDMNCnR5cGVkZWYgaW50IF9BdG9taWNfd29yZDsNCg0K
c3RhdGljIGlubGluZSBfQXRvbWljX3dvcmQNCl9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkN
Cl9fZXhjaGFuZ2VfYW5kX2FkZCAodm9sYXRpbGUgX0F0b21pY193b3JkICpfX21lbSwgaW50IF9f
dmFsKQ0Kew0KICByZWdpc3RlciBfQXRvbWljX3dvcmQgX19yZXN1bHQ7DQogIF9fYXNtX18gX192
b2xhdGlsZV9fICgibG9jazsgeGFkZGwgJTAsJTIiDQogICAgICAgICAgICAgICAgICAgICAgICA6
ICI9ciIgKF9fcmVzdWx0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgOiAiMCIgKF9fdmFsKSwg
Im0iICgqX19tZW0pDQogICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsNCiAgcmV0
dXJuIF9fcmVzdWx0Ow0KfQ0KDQpzdGF0aWMgaW5saW5lIHZvaWQNCl9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSkNCl9fYXRvbWljX2FkZCAodm9sYXRpbGUgX0F0b21pY193b3JkKiBfX21lbSwg
aW50IF9fdmFsKQ0Kew0KICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJTAsJTEi
DQogICAgICAgICAgICAgICAgICAgICAgICA6IDogImlyIiAoX192YWwpLCAibSIgKCpfX21lbSkg
OiAibWVtb3J5Iik7DQp9DQojIDQ2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL2Jhc2ljX3N0cmluZy5oIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KIyA4OCAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9iYXNpY19zdHJpbmcuaCIgMw0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4N
CiAgICBjbGFzcyBiYXNpY19zdHJpbmcNCiAgICB7DQoNCiAgICBwdWJsaWM6DQogICAgICB0eXBl
ZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6
OmNoYXJfdHlwZSB2YWx1ZV90eXBlOw0KICAgICAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5
cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6c2l6ZV90eXBlIHNpemVfdHlwZTsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnJlZmVyZW5jZSByZWZlcmVu
Y2U7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0
X3JlZmVyZW5jZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpwb2ludGVyIHBvaW50
ZXI7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6Y29uc3RfcG9pbnRlciBjb25zdF9w
b2ludGVyOw0KICAgICAgdHlwZWRlZiBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPHBvaW50
ZXIsIGJhc2ljX3N0cmluZz4gaXRlcmF0b3I7DQogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19u
b3JtYWxfaXRlcmF0b3I8Y29uc3RfcG9pbnRlciwgYmFzaWNfc3RyaW5nPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRl
cmF0b3I7DQogICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNv
bnN0X3JldmVyc2VfaXRlcmF0b3I7DQogICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8aXRl
cmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7DQoNCiAgICBwcml2YXRlOg0KIyAxMjMgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMNCiAgICAgIHN0
cnVjdCBfUmVwDQogICAgICB7DQoNCiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnRl
bXBsYXRlIHJlYmluZDxjaGFyPjo6b3RoZXIgX1Jhd19ieXRlc19hbGxvYzsNCiMgMTQxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzDQogICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgX1NfbWF4X3NpemU7DQogICAgICAgIHN0YXRpYyBj
b25zdCBfQ2hhclQgX1NfdGVybWluYWw7DQoNCiAgICAgICAgc2l6ZV90eXBlIF9NX2xlbmd0aDsN
CiAgICAgICAgc2l6ZV90eXBlIF9NX2NhcGFjaXR5Ow0KICAgICAgICBfQXRvbWljX3dvcmQgX01f
cmVmZXJlbmNlczsNCg0KICAgICAgICBib29sDQogICAgICAgIF9NX2lzX2xlYWtlZCgpIGNvbnN0
DQogICAgICAgIHsgcmV0dXJuIF9NX3JlZmVyZW5jZXMgPCAwOyB9DQoNCiAgICAgICAgYm9vbA0K
ICAgICAgICBfTV9pc19zaGFyZWQoKSBjb25zdA0KICAgICAgICB7IHJldHVybiBfTV9yZWZlcmVu
Y2VzID4gMDsgfQ0KDQogICAgICAgIHZvaWQNCiAgICAgICAgX01fc2V0X2xlYWtlZCgpDQogICAg
ICAgIHsgX01fcmVmZXJlbmNlcyA9IC0xOyB9DQoNCiAgICAgICAgdm9pZA0KICAgICAgICBfTV9z
ZXRfc2hhcmFibGUoKQ0KICAgICAgICB7IF9NX3JlZmVyZW5jZXMgPSAwOyB9DQoNCiAgICAgICAg
X0NoYXJUKg0KICAgICAgICBfTV9yZWZkYXRhKCkgdGhyb3coKQ0KICAgICAgICB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PF9DaGFyVCo+KHRoaXMgKyAxKTsgfQ0KDQogICAgICAgIF9DaGFyVCYN
CiAgICAgICAgb3BlcmF0b3JbXShzaXplX3QgX19zKSB0aHJvdygpDQogICAgICAgIHsgcmV0dXJu
IF9NX3JlZmRhdGEoKSBbX19zXTsgfQ0KDQogICAgICAgIF9DaGFyVCoNCiAgICAgICAgX01fZ3Jh
Yihjb25zdCBfQWxsb2MmIF9fYWxsb2MxLCBjb25zdCBfQWxsb2MmIF9fYWxsb2MyKQ0KICAgICAg
ICB7DQogICAgICAgICAgcmV0dXJuICghX01faXNfbGVha2VkKCkgJiYgX19hbGxvYzEgPT0gX19h
bGxvYzIpDQogICAgICAgICAgICAgICAgICA/IF9NX3JlZmNvcHkoKSA6IF9NX2Nsb25lKF9fYWxs
b2MxKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgc3RhdGljIF9SZXAqDQogICAgICAgIF9TX2Ny
ZWF0ZShzaXplX3QsIGNvbnN0IF9BbGxvYyYpOw0KDQogICAgICAgIHZvaWQNCiAgICAgICAgX01f
ZGlzcG9zZShjb25zdCBfQWxsb2MmIF9fYSkNCiAgICAgICAgew0KICAgICAgICAgIGlmIChfX2V4
Y2hhbmdlX2FuZF9hZGQoJl9NX3JlZmVyZW5jZXMsIC0xKSA8PSAwKQ0KICAgICAgICAgICAgX01f
ZGVzdHJveShfX2EpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZA0KICAgICAgICBfTV9kZXN0
cm95KGNvbnN0IF9BbGxvYyYpIHRocm93KCk7DQoNCiAgICAgICAgX0NoYXJUKg0KICAgICAgICBf
TV9yZWZjb3B5KCkgdGhyb3coKQ0KICAgICAgICB7DQogICAgICAgICAgX19hdG9taWNfYWRkKCZf
TV9yZWZlcmVuY2VzLCAxKTsNCiAgICAgICAgICByZXR1cm4gX01fcmVmZGF0YSgpOw0KICAgICAg
ICB9DQoNCiAgICAgICAgX0NoYXJUKg0KICAgICAgICBfTV9jbG9uZShjb25zdCBfQWxsb2MmLCBz
aXplX3R5cGUgX19yZXMgPSAwKTsNCiAgICAgIH07DQoNCg0KICAgICAgc3RydWN0IF9BbGxvY19o
aWRlciA6IF9BbGxvYw0KICAgICAgew0KICAgICAgICBfQWxsb2NfaGlkZXIoX0NoYXJUKiBfX2Rh
dCwgY29uc3QgX0FsbG9jJiBfX2EpDQogICAgICAgIDogX0FsbG9jKF9fYSksIF9NX3AoX19kYXQp
IHsgfQ0KDQogICAgICAgIF9DaGFyVCogX01fcDsNCiAgICAgIH07DQoNCiAgICBwdWJsaWM6DQoN
Cg0KDQogICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlIG5wb3MgPSBzdGF0aWNfY2FzdDxzaXpl
X3R5cGU+KC0xKTsNCg0KICAgIHByaXZhdGU6DQoNCiAgICAgIG11dGFibGUgX0FsbG9jX2hpZGVy
IF9NX2RhdGFwbHVzOw0KDQoNCg0KICAgICAgc3RhdGljIHNpemVfdHlwZSBfU19lbXB0eV9yZXBf
c3RvcmFnZVsoc2l6ZW9mKF9SZXApICsgc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2Yoc2l6ZV90eXBl
KSAtIDEpL3NpemVvZihzaXplX3R5cGUpXTsNCg0KICAgICAgX0NoYXJUKg0KICAgICAgX01fZGF0
YSgpIGNvbnN0DQogICAgICB7IHJldHVybiBfTV9kYXRhcGx1cy5fTV9wOyB9DQoNCiAgICAgIF9D
aGFyVCoNCiAgICAgIF9NX2RhdGEoX0NoYXJUKiBfX3ApDQogICAgICB7IHJldHVybiAoX01fZGF0
YXBsdXMuX01fcCA9IF9fcCk7IH0NCg0KICAgICAgX1JlcCoNCiAgICAgIF9NX3JlcCgpIGNvbnN0
DQogICAgICB7IHJldHVybiAmKChyZWludGVycHJldF9jYXN0PF9SZXAqPiAoX01fZGF0YSgpKSlb
LTFdKTsgfQ0KDQoNCg0KICAgICAgaXRlcmF0b3INCiAgICAgIF9NX2liZWdpbigpIGNvbnN0IHsg
cmV0dXJuIGl0ZXJhdG9yKF9NX2RhdGEoKSk7IH0NCg0KICAgICAgaXRlcmF0b3INCiAgICAgIF9N
X2llbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkp
OyB9DQoNCiAgICAgIHZvaWQNCiAgICAgIF9NX2xlYWsoKQ0KICAgICAgew0KICAgICAgICBpZiAo
IV9NX3JlcCgpLT5fTV9pc19sZWFrZWQoKSkNCiAgICAgICAgICBfTV9sZWFrX2hhcmQoKTsNCiAg
ICAgIH0NCg0KICAgICAgaXRlcmF0b3INCiAgICAgIF9NX2NoZWNrKHNpemVfdHlwZSBfX3Bvcykg
Y29uc3QNCiAgICAgIHsNCiAgICAgICAgaWYgKF9fcG9zID4gdGhpcy0+c2l6ZSgpKQ0KICAgICAg
ICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6Ol9NX2NoZWNrIik7DQogICAg
ICAgIHJldHVybiBfTV9pYmVnaW4oKSArIF9fcG9zOw0KICAgICAgfQ0KDQoNCiAgICAgIGl0ZXJh
dG9yDQogICAgICBfTV9mb2xkKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fb2ZmKSBjb25z
dA0KICAgICAgew0KICAgICAgICBib29sIF9fdGVzdG9mZiA9IF9fb2ZmIDwgdGhpcy0+c2l6ZSgp
IC0gX19wb3M7DQogICAgICAgIHNpemVfdHlwZSBfX25ld29mZiA9IF9fdGVzdG9mZiA/IF9fb2Zm
IDogdGhpcy0+c2l6ZSgpIC0gX19wb3M7DQogICAgICAgIHJldHVybiAoX01faWJlZ2luKCkgKyBf
X3BvcyArIF9fbmV3b2ZmKTsNCiAgICAgIH0NCg0KDQoNCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9J
dGVyYXRvcj4NCiAgICAgICAgc3RhdGljIHZvaWQNCiAgICAgICAgX1NfY29weV9jaGFycyhfQ2hh
clQqIF9fcCwgX0l0ZXJhdG9yIF9fazEsIF9JdGVyYXRvciBfX2syKQ0KICAgICAgICB7DQogICAg
ICAgICAgZm9yICg7IF9fazEgIT0gX19rMjsgKytfX2sxLCArK19fcCkNCiAgICAgICAgICAgIHRy
YWl0c190eXBlOjphc3NpZ24oKl9fcCwgKl9fazEpOw0KICAgICAgICB9DQoNCiAgICAgIHN0YXRp
YyB2b2lkDQogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBpdGVyYXRvciBfX2sxLCBp
dGVyYXRvciBfX2syKQ0KICAgICAgeyBfU19jb3B5X2NoYXJzKF9fcCwgX19rMS5iYXNlKCksIF9f
azIuYmFzZSgpKTsgfQ0KDQogICAgICBzdGF0aWMgdm9pZA0KICAgICAgX1NfY29weV9jaGFycyhf
Q2hhclQqIF9fcCwgY29uc3RfaXRlcmF0b3IgX19rMSwgY29uc3RfaXRlcmF0b3IgX19rMikNCiAg
ICAgIHsgX1NfY29weV9jaGFycyhfX3AsIF9fazEuYmFzZSgpLCBfX2syLmJhc2UoKSk7IH0NCg0K
ICAgICAgc3RhdGljIHZvaWQNCiAgICAgIF9TX2NvcHlfY2hhcnMoX0NoYXJUKiBfX3AsIF9DaGFy
VCogX19rMSwgX0NoYXJUKiBfX2syKQ0KICAgICAgeyB0cmFpdHNfdHlwZTo6Y29weShfX3AsIF9f
azEsIF9fazIgLSBfX2sxKTsgfQ0KDQogICAgICBzdGF0aWMgdm9pZA0KICAgICAgX1NfY29weV9j
aGFycyhfQ2hhclQqIF9fcCwgY29uc3QgX0NoYXJUKiBfX2sxLCBjb25zdCBfQ2hhclQqIF9fazIp
DQogICAgICB7IHRyYWl0c190eXBlOjpjb3B5KF9fcCwgX19rMSwgX19rMiAtIF9fazEpOyB9DQoN
CiAgICAgIHZvaWQNCiAgICAgIF9NX211dGF0ZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBf
X2xlbjEsIHNpemVfdHlwZSBfX2xlbjIpOw0KDQogICAgICB2b2lkDQogICAgICBfTV9sZWFrX2hh
cmQoKTsNCg0KICAgICAgc3RhdGljIF9SZXAmDQogICAgICBfU19lbXB0eV9yZXAoKQ0KICAgICAg
eyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8X1JlcCo+KCZfU19lbXB0eV9yZXBfc3RvcmFnZSk7
IH0NCg0KICAgIHB1YmxpYzoNCg0KDQoNCg0KICAgICAgaW5saW5lDQogICAgICBiYXNpY19zdHJp
bmcoKTsNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBfQWxsb2Mm
IF9fYSk7DQoNCg0KICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIp
Ow0KICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlw
ZSBfX3BvcywNCiAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19uID0gbnBvcyk7DQogICAg
ICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9z
LA0KICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX24sIGNvbnN0IF9BbGxvYyYgX19hKTsN
Cg0KICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uLA0K
ICAgICAgICAgICAgICAgICAgIGNvbnN0IF9BbGxvYyYgX19hID0gX0FsbG9jKCkpOw0KICAgICAg
YmFzaWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zLCBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxv
YygpKTsNCiAgICAgIGJhc2ljX3N0cmluZyhzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jLCBjb25z
dCBfQWxsb2MmIF9fYSA9IF9BbGxvYygpKTsNCg0KICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0
SXRlcmF0b3I+DQogICAgICAgIGJhc2ljX3N0cmluZyhfSW5wdXRJdGVyYXRvciBfX2JlZywgX0lu
cHV0SXRlcmF0b3IgX19lbmQsDQogICAgICAgICAgICAgICAgICAgICBjb25zdCBfQWxsb2MmIF9f
YSA9IF9BbGxvYygpKTsNCg0KICAgICAgfmJhc2ljX3N0cmluZygpDQogICAgICB7IF9NX3JlcCgp
LT5fTV9kaXNwb3NlKHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7IH0NCg0KICAgICAgYmFzaWNfc3Ry
aW5nJg0KICAgICAgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpIHsgcmV0dXJu
IHRoaXMtPmFzc2lnbihfX3N0cik7IH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgb3Bl
cmF0b3I9KGNvbnN0IF9DaGFyVCogX19zKSB7IHJldHVybiB0aGlzLT5hc3NpZ24oX19zKTsgfQ0K
DQogICAgICBiYXNpY19zdHJpbmcmDQogICAgICBvcGVyYXRvcj0oX0NoYXJUIF9fYykgeyByZXR1
cm4gdGhpcy0+YXNzaWduKDEsIF9fYyk7IH0NCg0KDQogICAgICBpdGVyYXRvcg0KICAgICAgYmVn
aW4oKQ0KICAgICAgew0KICAgICAgICBfTV9sZWFrKCk7DQogICAgICAgIHJldHVybiBpdGVyYXRv
cihfTV9kYXRhKCkpOw0KICAgICAgfQ0KDQogICAgICBjb25zdF9pdGVyYXRvcg0KICAgICAgYmVn
aW4oKSBjb25zdA0KICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgpKTsgfQ0K
DQogICAgICBpdGVyYXRvcg0KICAgICAgZW5kKCkNCiAgICAgIHsNCiAgICAgICAgIF9NX2xlYWso
KTsNCiAgICAgICAgIHJldHVybiBpdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOw0K
ICAgICAgfQ0KDQogICAgICBjb25zdF9pdGVyYXRvcg0KICAgICAgZW5kKCkgY29uc3QNCiAgICAg
IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKF9NX2RhdGEoKSArIHRoaXMtPnNpemUoKSk7IH0NCg0K
ICAgICAgcmV2ZXJzZV9pdGVyYXRvcg0KICAgICAgcmJlZ2luKCkNCiAgICAgIHsgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IodGhpcy0+ZW5kKCkpOyB9DQoNCiAgICAgIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3INCiAgICAgIHJiZWdpbigpIGNvbnN0DQogICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yKHRoaXMtPmVuZCgpKTsgfQ0KDQogICAgICByZXZlcnNlX2l0ZXJhdG9yDQogICAg
ICByZW5kKCkNCiAgICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IodGhpcy0+YmVnaW4oKSk7
IH0NCg0KICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcg0KICAgICAgcmVuZCgpIGNvbnN0DQog
ICAgICB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmJlZ2luKCkpOyB9DQoN
CiAgICBwdWJsaWM6DQoNCiAgICAgIHNpemVfdHlwZQ0KICAgICAgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIF9NX3JlcCgpLT5fTV9sZW5ndGg7IH0NCg0KICAgICAgc2l6ZV90eXBlDQogICAgICBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBfTV9yZXAoKS0+X01fbGVuZ3RoOyB9DQoNCiAgICAgIHNpemVf
dHlwZQ0KICAgICAgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBfUmVwOjpfU19tYXhfc2l6ZTsg
fQ0KDQogICAgICB2b2lkDQogICAgICByZXNpemUoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7
DQoNCiAgICAgIHZvaWQNCiAgICAgIHJlc2l6ZShzaXplX3R5cGUgX19uKSB7IHRoaXMtPnJlc2l6
ZShfX24sIF9DaGFyVCgpKTsgfQ0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGNhcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gX01fcmVwKCktPl9NX2NhcGFjaXR5OyB9DQoNCiAgICAgIHZvaWQNCiAg
ICAgIHJlc2VydmUoc2l6ZV90eXBlIF9fcmVzX2FyZyA9IDApOw0KDQogICAgICB2b2lkDQogICAg
ICBjbGVhcigpIHsgX01fbXV0YXRlKDAsIHRoaXMtPnNpemUoKSwgMCk7IH0NCg0KICAgICAgYm9v
bA0KICAgICAgZW1wdHkoKSBjb25zdCB7IHJldHVybiB0aGlzLT5zaXplKCkgPT0gMDsgfQ0KDQoN
CiAgICAgIGNvbnN0X3JlZmVyZW5jZQ0KICAgICAgb3BlcmF0b3JbXSAoc2l6ZV90eXBlIF9fcG9z
KSBjb25zdA0KICAgICAgeyByZXR1cm4gX01fZGF0YSgpW19fcG9zXTsgfQ0KDQogICAgICByZWZl
cmVuY2UNCiAgICAgIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fcG9zKQ0KICAgICAgew0KICAgICAg
ICBfTV9sZWFrKCk7DQogICAgICAgIHJldHVybiBfTV9kYXRhKClbX19wb3NdOw0KICAgICAgfQ0K
DQogICAgICBjb25zdF9yZWZlcmVuY2UNCiAgICAgIGF0KHNpemVfdHlwZSBfX24pIGNvbnN0DQog
ICAgICB7DQogICAgICAgIGlmIChfX24gPj0gdGhpcy0+c2l6ZSgpKQ0KICAgICAgICAgIF9fdGhy
b3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmF0Iik7DQogICAgICAgIHJldHVybiBfTV9k
YXRhKClbX19uXTsNCiAgICAgIH0NCg0KICAgICAgcmVmZXJlbmNlDQogICAgICBhdChzaXplX3R5
cGUgX19uKQ0KICAgICAgew0KICAgICAgICBpZiAoX19uID49IHNpemUoKSkNCiAgICAgICAgICBf
X3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjphdCIpOw0KICAgICAgICBfTV9sZWFr
KCk7DQogICAgICAgIHJldHVybiBfTV9kYXRhKClbX19uXTsNCiAgICAgIH0NCg0KDQogICAgICBi
YXNpY19zdHJpbmcmDQogICAgICBvcGVyYXRvcis9KGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIp
IHsgcmV0dXJuIHRoaXMtPmFwcGVuZChfX3N0cik7IH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0K
ICAgICAgb3BlcmF0b3IrPShjb25zdCBfQ2hhclQqIF9fcykgeyByZXR1cm4gdGhpcy0+YXBwZW5k
KF9fcyk7IH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgb3BlcmF0b3IrPShfQ2hhclQg
X19jKSB7IHJldHVybiB0aGlzLT5hcHBlbmQoc2l6ZV90eXBlKDEpLCBfX2MpOyB9DQoNCiAgICAg
IGJhc2ljX3N0cmluZyYNCiAgICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKTsN
Cg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgYXBwZW5kKGNvbnN0IGJhc2ljX3N0cmluZyYg
X19zdHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbik7DQoNCiAgICAgIGJhc2ljX3N0
cmluZyYNCiAgICAgIGFwcGVuZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbik7DQoN
CiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIGFwcGVuZChjb25zdCBfQ2hhclQqIF9fcykNCiAg
ICAgIHsgcmV0dXJuIHRoaXMtPmFwcGVuZChfX3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7
IH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgYXBwZW5kKHNpemVfdHlwZSBfX24sIF9D
aGFyVCBfX2MpOw0KDQogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4NCiAgICAg
ICAgYmFzaWNfc3RyaW5nJg0KICAgICAgICBhcHBlbmQoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0KQ0KICAgICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9N
X2llbmQoKSwgX01faWVuZCgpLCBfX2ZpcnN0LCBfX2xhc3QpOyB9DQoNCiAgICAgIHZvaWQNCiAg
ICAgIHB1c2hfYmFjayhfQ2hhclQgX19jKQ0KICAgICAgeyB0aGlzLT5yZXBsYWNlKF9NX2llbmQo
KSwgX01faWVuZCgpLCAxLCBfX2MpOyB9DQoNCiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIGFz
c2lnbihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKTsNCg0KICAgICAgYmFzaWNfc3RyaW5nJg0K
ICAgICAgYXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3Bvcywg
c2l6ZV90eXBlIF9fbikNCiAgICAgIHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc3Ryc2l6
ZSA9IF9fc3RyLnNpemUoKTsNCiAgICAgICAgaWYgKF9fcG9zID4gX19zdHJzaXplKQ0KICAgICAg
ICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmFzc2lnbiIpOw0KICAgICAg
ICBjb25zdCBib29sIF9fdGVzdG4gPSBfX24gPCBfX3N0cnNpemUgLSBfX3BvczsNCiAgICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9fbmV3c2l6ZSA9IF9fdGVzdG4gPyBfX24gOiBfX3N0cnNpemUgLSBf
X3BvczsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmFzc2lnbihfX3N0ci5fTV9kYXRhKCkgKyBfX3Bv
cywgX19uZXdzaXplKTsNCiAgICAgIH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgYXNz
aWduKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uKQ0KICAgICAgew0KICAgICAgICBp
ZiAoX19uID4gdGhpcy0+bWF4X3NpemUoKSkNCiAgICAgICAgICBfX3Rocm93X2xlbmd0aF9lcnJv
cigiYmFzaWNfc3RyaW5nOjphc3NpZ24iKTsNCiAgICAgICAgaWYgKF9NX3JlcCgpLT5fTV9pc19z
aGFyZWQoKSB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBfTV9kYXRhKCkpDQogICAgICAg
ICAgICB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX01fZGF0YSgpICsgdGhpcy0+c2l6ZSgpLCBf
X3MpKQ0KICAgICAgICAgIHJldHVybiBfTV9yZXBsYWNlX3NhZmUoX01faWJlZ2luKCksIF9NX2ll
bmQoKSwgX19zLCBfX3MgKyBfX24pOw0KICAgICAgICBlbHNlDQogICAgICAgICAgew0KDQogICAg
ICAgICAgICBjb25zdCBzaXplX3R5cGUgX19wb3MgPSBfX3MgLSBfTV9kYXRhKCk7DQogICAgICAg
ICAgICBpZiAoX19wb3MgPj0gX19uKQ0KICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShf
TV9kYXRhKCksIF9fcywgX19uKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKF9fcG9zKQ0KICAgICAg
ICAgICAgICB0cmFpdHNfdHlwZTo6bW92ZShfTV9kYXRhKCksIF9fcywgX19uKTsNCiAgICAgICAg
ICAgIF9NX3JlcCgpLT5fTV9sZW5ndGggPSBfX247DQogICAgICAgICAgICBfTV9kYXRhKClbX19u
XSA9IF9SZXA6Ol9TX3Rlcm1pbmFsOw0KICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAg
ICAgIH0NCiAgICAgIH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgYXNzaWduKGNvbnN0
IF9DaGFyVCogX19zKQ0KICAgICAgeyByZXR1cm4gdGhpcy0+YXNzaWduKF9fcywgdHJhaXRzX3R5
cGU6Omxlbmd0aChfX3MpKTsgfQ0KDQogICAgICBiYXNpY19zdHJpbmcmDQogICAgICBhc3NpZ24o
c2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykNCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2Uo
X01faWJlZ2luKCksIF9NX2llbmQoKSwgX19uLCBfX2MpOyB9DQoNCiAgICAgIHRlbXBsYXRlPGNs
YXNzIF9JbnB1dEl0ZXJhdG9yPg0KICAgICAgICBiYXNpY19zdHJpbmcmDQogICAgICAgIGFzc2ln
bihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpDQogICAgICAg
IHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX01faWJlZ2luKCksIF9NX2llbmQoKSwgX19maXJzdCwg
X19sYXN0KTsgfQ0KDQogICAgICB2b2lkDQogICAgICBpbnNlcnQoaXRlcmF0b3IgX19wLCBzaXpl
X3R5cGUgX19uLCBfQ2hhclQgX19jKQ0KICAgICAgeyB0aGlzLT5yZXBsYWNlKF9fcCwgX19wLCBf
X24sIF9fYyk7IH0NCg0KICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+DQogICAg
ICAgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcCwgX0lucHV0SXRlcmF0b3IgX19iZWcsIF9JbnB1
dEl0ZXJhdG9yIF9fZW5kKQ0KICAgICAgICB7IHRoaXMtPnJlcGxhY2UoX19wLCBfX3AsIF9fYmVn
LCBfX2VuZCk7IH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgaW5zZXJ0KHNpemVfdHlw
ZSBfX3BvczEsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpDQogICAgICB7IHJldHVybiB0aGlz
LT5pbnNlcnQoX19wb3MxLCBfX3N0ciwgMCwgX19zdHIuc2l6ZSgpKTsgfQ0KDQogICAgICBiYXNp
Y19zdHJpbmcmDQogICAgICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zMSwgY29uc3QgYmFzaWNfc3Ry
aW5nJiBfX3N0ciwNCiAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MyLCBzaXplX3R5cGUgX19u
KQ0KICAgICAgew0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX19zdHJzaXplID0gX19zdHIuc2l6
ZSgpOw0KICAgICAgICBpZiAoX19wb3MyID4gX19zdHJzaXplKQ0KICAgICAgICAgIF9fdGhyb3df
b3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6Omluc2VydCIpOw0KICAgICAgICBjb25zdCBib29s
IF9fdGVzdG4gPSBfX24gPCBfX3N0cnNpemUgLSBfX3BvczI7DQogICAgICAgIGNvbnN0IHNpemVf
dHlwZSBfX25ld3NpemUgPSBfX3Rlc3RuID8gX19uIDogX19zdHJzaXplIC0gX19wb3MyOw0KICAg
ICAgICByZXR1cm4gdGhpcy0+aW5zZXJ0KF9fcG9zMSwgX19zdHIuX01fZGF0YSgpICsgX19wb3My
LCBfX25ld3NpemUpOw0KICAgICAgfQ0KDQogICAgICBiYXNpY19zdHJpbmcmDQogICAgICBpbnNl
cnQoc2l6ZV90eXBlIF9fcG9zLCBjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikNCiAg
ICAgIHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsNCiAg
ICAgICAgaWYgKF9fcG9zID4gX19zaXplKQ0KICAgICAgICAgIF9fdGhyb3dfb3V0X29mX3Jhbmdl
KCJiYXNpY19zdHJpbmc6Omluc2VydCIpOw0KICAgICAgICBpZiAoX19zaXplID4gdGhpcy0+bWF4
X3NpemUoKSAtIF9fbikNCiAgICAgICAgICBfX3Rocm93X2xlbmd0aF9lcnJvcigiYmFzaWNfc3Ry
aW5nOjppbnNlcnQiKTsNCiAgICAgICAgaWYgKF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSB8fCBs
ZXNzPGNvbnN0IF9DaGFyVCo+KCkoX19zLCBfTV9kYXRhKCkpDQogICAgICAgICAgICB8fCBsZXNz
PGNvbnN0IF9DaGFyVCo+KCkoX01fZGF0YSgpICsgX19zaXplLCBfX3MpKQ0KICAgICAgICAgIHJl
dHVybiBfTV9yZXBsYWNlX3NhZmUoX01faWJlZ2luKCkgKyBfX3BvcywgX01faWJlZ2luKCkgKyBf
X3BvcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcywgX19zICsgX19uKTsN
CiAgICAgICAgZWxzZQ0KICAgICAgICAgIHsNCg0KDQoNCiAgICAgICAgICAgIGNvbnN0IHNpemVf
dHlwZSBfX29mZiA9IF9fcyAtIF9NX2RhdGEoKTsNCiAgICAgICAgICAgIF9NX211dGF0ZShfX3Bv
cywgMCwgX19uKTsNCiAgICAgICAgICAgIF9fcyA9IF9NX2RhdGEoKSArIF9fb2ZmOw0KICAgICAg
ICAgICAgX0NoYXJUKiBfX3AgPSBfTV9kYXRhKCkgKyBfX3BvczsNCiAgICAgICAgICAgIGlmIChf
X3MgKyBfX24gPD0gX19wKQ0KICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3AsIF9f
cywgX19uKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKF9fcyA+PSBfX3ApDQogICAgICAgICAgICAg
IHRyYWl0c190eXBlOjpjb3B5KF9fcCwgX19zICsgX19uLCBfX24pOw0KICAgICAgICAgICAgZWxz
ZQ0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19w
LCBfX3MsIF9fcCAtIF9fcyk7DQogICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19w
ICsgKF9fcCAtIF9fcyksIF9fcCArIF9fbiwgX19uIC0gKF9fcCAtIF9fcykpOw0KICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgICAgfQ0KICAgICAgIH0N
Cg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvcywgY29u
c3QgX0NoYXJUKiBfX3MpDQogICAgICB7IHJldHVybiB0aGlzLT5pbnNlcnQoX19wb3MsIF9fcywg
dHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsgfQ0KDQogICAgICBiYXNpY19zdHJpbmcmDQogICAg
ICBpbnNlcnQoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQ0KICAg
ICAgew0KICAgICAgICB0aGlzLT5pbnNlcnQoX01fY2hlY2soX19wb3MpLCBfX24sIF9fYyk7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KICAgICAgaXRlcmF0b3INCiAgICAgIGlu
c2VydChpdGVyYXRvciBfX3AsIF9DaGFyVCBfX2MgPSBfQ2hhclQoKSkNCiAgICAgIHsNCiAgICAg
ICAgc2l6ZV90eXBlIF9fcG9zID0gX19wIC0gX01faWJlZ2luKCk7DQogICAgICAgIHRoaXMtPmlu
c2VydChfTV9jaGVjayhfX3BvcyksIHNpemVfdHlwZSgxKSwgX19jKTsNCiAgICAgICAgX01fcmVw
KCktPl9NX3NldF9sZWFrZWQoKTsNCiAgICAgICAgcmV0dXJuIHRoaXMtPl9NX2liZWdpbigpICsg
X19wb3M7DQogICAgICB9DQoNCiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIGVyYXNlKHNpemVf
dHlwZSBfX3BvcyA9IDAsIHNpemVfdHlwZSBfX24gPSBucG9zKQ0KICAgICAgew0KICAgICAgICBy
ZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9jaGVjayhfX3BvcyksIF9NX2ZvbGQoX19wb3MsIF9fbiks
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2RhdGEoKSwgX01fZGF0YSgpKTsNCiAg
ICAgIH0NCg0KICAgICAgaXRlcmF0b3INCiAgICAgIGVyYXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24p
DQogICAgICB7DQogICAgICAgIHNpemVfdHlwZSBfX2kgPSBfX3Bvc2l0aW9uIC0gX01faWJlZ2lu
KCk7DQogICAgICAgIHRoaXMtPnJlcGxhY2UoX19wb3NpdGlvbiwgX19wb3NpdGlvbiArIDEsIF9N
X2RhdGEoKSwgX01fZGF0YSgpKTsNCiAgICAgICAgX01fcmVwKCktPl9NX3NldF9sZWFrZWQoKTsN
CiAgICAgICAgcmV0dXJuIF9NX2liZWdpbigpICsgX19pOw0KICAgICAgfQ0KDQogICAgICBpdGVy
YXRvcg0KICAgICAgZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KQ0KICAg
ICAgew0KICAgICAgICBzaXplX3R5cGUgX19pID0gX19maXJzdCAtIF9NX2liZWdpbigpOw0KICAg
ICAgICB0aGlzLT5yZXBsYWNlKF9fZmlyc3QsIF9fbGFzdCwgX01fZGF0YSgpLCBfTV9kYXRhKCkp
Ow0KICAgICAgICBfTV9yZXAoKS0+X01fc2V0X2xlYWtlZCgpOw0KICAgICAgIHJldHVybiBfTV9p
YmVnaW4oKSArIF9faTsNCiAgICAgIH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgcmVw
bGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IGJhc2ljX3N0cmluZyYg
X19zdHIpDQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zLCBfX24sIF9fc3RyLl9N
X2RhdGEoKSwgX19zdHIuc2l6ZSgpKTsgfQ0KDQogICAgICBiYXNpY19zdHJpbmcmDQogICAgICBy
ZXBsYWNlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNpY19zdHJp
bmcmIF9fc3RyLA0KICAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MyLCBzaXplX3R5cGUgX19u
Mik7DQoNCiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9z
LCBzaXplX3R5cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MsDQogICAgICAgICAgICAgIHNpemVf
dHlwZSBfX24yKQ0KICAgICAgew0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX19zaXplID0gdGhp
cy0+c2l6ZSgpOw0KICAgICAgICBpZiAoX19wb3MgPiBfX3NpemUpDQogICAgICAgICAgX190aHJv
d19vdXRfb2ZfcmFuZ2UoImJhc2ljX3N0cmluZzo6cmVwbGFjZSIpOw0KICAgICAgICBjb25zdCBi
b29sIF9fdGVzdG4xID0gX19uMSA8IF9fc2l6ZSAtIF9fcG9zOw0KICAgICAgICBjb25zdCBzaXpl
X3R5cGUgX19mb2xkbjEgPSBfX3Rlc3RuMSA/IF9fbjEgOiBfX3NpemUgLSBfX3BvczsNCiAgICAg
ICAgaWYgKF9fc2l6ZSAtIF9fZm9sZG4xID4gdGhpcy0+bWF4X3NpemUoKSAtIF9fbjIpDQogICAg
ICAgICAgX190aHJvd19sZW5ndGhfZXJyb3IoImJhc2ljX3N0cmluZzo6cmVwbGFjZSIpOw0KICAg
ICAgICBpZiAoX01fcmVwKCktPl9NX2lzX3NoYXJlZCgpIHx8IGxlc3M8Y29uc3QgX0NoYXJUKj4o
KShfX3MsIF9NX2RhdGEoKSkNCiAgICAgICAgICAgIHx8IGxlc3M8Y29uc3QgX0NoYXJUKj4oKShf
TV9kYXRhKCkgKyBfX3NpemUsIF9fcykpDQogICAgICAgICAgcmV0dXJuIF9NX3JlcGxhY2Vfc2Fm
ZShfTV9pYmVnaW4oKSArIF9fcG9zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X01faWJlZ2luKCkgKyBfX3BvcyArIF9fZm9sZG4xLCBfX3MsIF9fcyArIF9fbjIpOw0KICAgICAg
ICBlbHNlIHJldHVybiB0aGlzLT5yZXBsYWNlKF9NX2NoZWNrKF9fcG9zKSwgX01fZm9sZChfX3Bv
cywgX19uMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zLCBfX3MgKyBf
X24yKTsNCiAgICAgIH0NCg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgcmVwbGFjZShzaXpl
X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcykNCiAgICAgIHsg
cmV0dXJuIHRoaXMtPnJlcGxhY2UoX19wb3MsIF9fbjEsIF9fcywgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpKTsgfQ0KDQogICAgICBiYXNpY19zdHJpbmcmDQogICAgICByZXBsYWNlKHNpemVfdHlw
ZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIHNpemVfdHlwZSBfX24yLCBfQ2hhclQgX19jKQ0KICAg
ICAgeyByZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9jaGVjayhfX3BvcyksIF9NX2ZvbGQoX19wb3Ms
IF9fbjEpLCBfX24yLCBfX2MpOyB9DQoNCiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIHJlcGxh
Y2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0
cikNCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSwgX19pMiwgX19zdHIuX01fZGF0
YSgpLCBfX3N0ci5zaXplKCkpOyB9DQoNCiAgICAgIGJhc2ljX3N0cmluZyYNCiAgICAgIHJlcGxh
Y2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19uKQ0KICAgICAgeyByZXR1cm4gdGhp
cy0+cmVwbGFjZShfX2kxIC0gX01faWJlZ2luKCksIF9faTIgLSBfX2kxLCBfX3MsIF9fbik7IH0N
Cg0KICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVy
YXRvciBfX2kyLCBjb25zdCBfQ2hhclQqIF9fcykNCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxh
Y2UoX19pMSwgX19pMiwgX19zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9DQoNCiAgICAg
IGJhc2ljX3N0cmluZyYNCiAgICAgIHJlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19p
Miwgc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7DQoNCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yPg0KICAgICAgICBiYXNpY19zdHJpbmcmDQogICAgICAgIHJlcGxhY2UoaXRl
cmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwNCiAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRv
ciBfX2sxLCBfSW5wdXRJdGVyYXRvciBfX2syKQ0KICAgICAgICB7IHJldHVybiBfTV9yZXBsYWNl
KF9faTEsIF9faTIsIF9fazEsIF9fazIsDQogICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkoKSk7IH0NCg0KICAgIHBy
aXZhdGU6DQogICAgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4NCiAgICAgICAgYmFz
aWNfc3RyaW5nJg0KICAgICAgICBfTV9yZXBsYWNlKGl0ZXJhdG9yIF9faTEsIGl0ZXJhdG9yIF9f
aTIsIF9JbnB1dEl0ZXJhdG9yIF9fazEsDQogICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0
b3IgX19rMiwgaW5wdXRfaXRlcmF0b3JfdGFnKTsNCg0KICAgICAgdGVtcGxhdGU8Y2xhc3MgX0Zv
cndhcmRJdGVyYXRvcj4NCiAgICAgICAgYmFzaWNfc3RyaW5nJg0KICAgICAgICBfTV9yZXBsYWNl
X3NhZmUoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0ZvcndhcmRJdGVyYXRvciBfX2sx
LA0KICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19rMik7DQoNCg0KDQogICAg
ICB0ZW1wbGF0ZTxjbGFzcyBfSW5JdGVyPg0KICAgICAgICBzdGF0aWMgX0NoYXJUKg0KICAgICAg
ICBfU19jb25zdHJ1Y3RfYXV4KF9Jbkl0ZXIgX19iZWcsIF9Jbkl0ZXIgX19lbmQsIGNvbnN0IF9B
bGxvYyYgX19hLA0KICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkNCiAgICAg
ICAgew0KICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Jbkl0ZXI+
OjppdGVyYXRvcl9jYXRlZ29yeSBfVGFnOw0KICAgICAgICAgIHJldHVybiBfU19jb25zdHJ1Y3Qo
X19iZWcsIF9fZW5kLCBfX2EsIF9UYWcoKSk7DQogICAgICAgIH0NCg0KICAgICAgdGVtcGxhdGU8
Y2xhc3MgX0luSXRlcj4NCiAgICAgICAgc3RhdGljIF9DaGFyVCoNCiAgICAgICAgX1NfY29uc3Ry
dWN0X2F1eChfSW5JdGVyIF9fYmVnLCBfSW5JdGVyIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkNCiAgICAgICAgew0KICAgICAg
ICAgIHJldHVybiBfU19jb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX2JlZyksDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihfX2Vu
ZCksIF9fYSk7DQogICAgICAgIH0NCg0KICAgICAgdGVtcGxhdGU8Y2xhc3MgX0luSXRlcj4NCiAg
ICAgICAgc3RhdGljIF9DaGFyVCoNCiAgICAgICAgX1NfY29uc3RydWN0KF9Jbkl0ZXIgX19iZWcs
IF9Jbkl0ZXIgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hKQ0KICAgICAgICB7DQogICAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5JdGVyPjo6X0ludGVncmFsIF9JbnRlZ3Jh
bDsNCiAgICAgICAgICByZXR1cm4gX1NfY29uc3RydWN0X2F1eChfX2JlZywgX19lbmQsIF9fYSwg
X0ludGVncmFsKCkpOw0KICAgICAgICB9DQoNCg0KICAgICAgdGVtcGxhdGU8Y2xhc3MgX0luSXRl
cj4NCiAgICAgICAgc3RhdGljIF9DaGFyVCoNCiAgICAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVy
IF9fYmVnLCBfSW5JdGVyIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwNCiAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpOw0KDQoNCg0KICAgICAgdGVtcGxhdGU8Y2xhc3Mg
X0Z3ZEl0ZXI+DQogICAgICAgIHN0YXRpYyBfQ2hhclQqDQogICAgICAgIF9TX2NvbnN0cnVjdChf
RndkSXRlciBfX2JlZywgX0Z3ZEl0ZXIgX19lbmQsIGNvbnN0IF9BbGxvYyYgX19hLA0KICAgICAg
ICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcpOw0KDQogICAgICBzdGF0aWMgX0No
YXJUKg0KICAgICAgX1NfY29uc3RydWN0KHNpemVfdHlwZSBfX3JlcSwgX0NoYXJUIF9fYywgY29u
c3QgX0FsbG9jJiBfX2EpOw0KDQogICAgcHVibGljOg0KDQogICAgICBzaXplX3R5cGUNCiAgICAg
IGNvcHkoX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIHNpemVfdHlwZSBfX3BvcyA9IDApIGNv
bnN0Ow0KDQogICAgICB2b2lkDQogICAgICBzd2FwKGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mIF9fcyk7DQoNCg0KICAgICAgY29uc3QgX0NoYXJUKg0KICAgICAgY19zdHIo
KSBjb25zdA0KICAgICAgew0KDQogICAgICAgIHNpemVfdHlwZSBfX24gPSB0aGlzLT5zaXplKCk7
DQogICAgICAgIHRyYWl0c190eXBlOjphc3NpZ24oX01fZGF0YSgpW19fbl0sIF9SZXA6Ol9TX3Rl
cm1pbmFsKTsNCiAgICAgICAgcmV0dXJuIF9NX2RhdGEoKTsNCiAgICAgIH0NCg0KICAgICAgY29u
c3QgX0NoYXJUKg0KICAgICAgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIF9NX2RhdGEoKTsgfQ0KDQog
ICAgICBhbGxvY2F0b3JfdHlwZQ0KICAgICAgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJu
IF9NX2RhdGFwbHVzOyB9DQoNCiAgICAgIHNpemVfdHlwZQ0KICAgICAgZmluZChjb25zdCBfQ2hh
clQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdDsNCg0KICAgICAg
c2l6ZV90eXBlDQogICAgICBmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlw
ZSBfX3BvcyA9IDApIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5maW5kKF9fc3RyLmRhdGEo
KSwgX19wb3MsIF9fc3RyLnNpemUoKSk7IH0NCg0KICAgICAgc2l6ZV90eXBlDQogICAgICBmaW5k
KGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdA0KICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZmluZChfX3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9
DQoNCiAgICAgIHNpemVfdHlwZQ0KICAgICAgZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19w
b3MgPSAwKSBjb25zdDsNCg0KICAgICAgc2l6ZV90eXBlDQogICAgICByZmluZChjb25zdCBiYXNp
Y19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdA0KICAgICAgeyBy
ZXR1cm4gdGhpcy0+cmZpbmQoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQ0K
DQogICAgICBzaXplX3R5cGUNCiAgICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0Ow0KDQogICAgICBzaXplX3R5cGUNCiAgICAg
IHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdA0K
ICAgICAgeyByZXR1cm4gdGhpcy0+cmZpbmQoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpKTsgfQ0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIHJmaW5kKF9DaGFyVCBfX2MsIHNp
emVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0Ow0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGZp
bmRfZmlyc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0g
MCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfZmlyc3Rfb2YoX19zdHIuZGF0YSgp
LCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQ0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGZpbmRf
Zmlyc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9f
bikgY29uc3Q7DQoNCiAgICAgIHNpemVfdHlwZQ0KICAgICAgZmluZF9maXJzdF9vZihjb25zdCBf
Q2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRo
aXMtPmZpbmRfZmlyc3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsg
fQ0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGZpbmRfZmlyc3Rfb2YoX0NoYXJUIF9fYywgc2l6
ZV90eXBlIF9fcG9zID0gMCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmQoX19jLCBf
X3Bvcyk7IH0NCg0KICAgICAgc2l6ZV90eXBlDQogICAgICBmaW5kX2xhc3Rfb2YoY29uc3QgYmFz
aWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29uc3QNCiAgICAgIHsg
cmV0dXJuIHRoaXMtPmZpbmRfbGFzdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXpl
KCkpOyB9DQoNCiAgICAgIHNpemVfdHlwZQ0KICAgICAgZmluZF9sYXN0X29mKGNvbnN0IF9DaGFy
VCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0Ow0KDQogICAgICBz
aXplX3R5cGUNCiAgICAgIGZpbmRfbGFzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBl
IF9fcG9zID0gbnBvcykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfbGFzdF9vZihf
X3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOyB9DQoNCiAgICAgIHNpemVfdHlw
ZQ0KICAgICAgZmluZF9sYXN0X29mKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3Mp
IGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5yZmluZChfX2MsIF9fcG9zKTsgfQ0KDQogICAg
ICBzaXplX3R5cGUNCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYg
X19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5m
aW5kX2ZpcnN0X25vdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9DQoN
CiAgICAgIHNpemVfdHlwZQ0KICAgICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBf
X3MsIHNpemVfdHlwZSBfX3BvcywNCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBf
X24pIGNvbnN0Ow0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNv
bnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAwKSBjb25zdA0KICAgICAgeyByZXR1
cm4gdGhpcy0+ZmluZF9maXJzdF9ub3Rfb2YoX19zLCBfX3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0
aChfX3MpKTsgfQ0KDQogICAgICBzaXplX3R5cGUNCiAgICAgIGZpbmRfZmlyc3Rfbm90X29mKF9D
aGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0Ow0KDQogICAgICBzaXplX3R5cGUN
CiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90
eXBlIF9fcG9zID0gbnBvcykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmZpbmRfbGFzdF9u
b3Rfb2YoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQ0KDQogICAgICBzaXpl
X3R5cGUNCiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlw
ZSBfX3BvcywNCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fbikgY29uc3Q7DQog
ICAgICBzaXplX3R5cGUNCiAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3Ms
IHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5maW5k
X2xhc3Rfbm90X29mKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7IH0NCg0K
ICAgICAgc2l6ZV90eXBlDQogICAgICBmaW5kX2xhc3Rfbm90X29mKF9DaGFyVCBfX2MsIHNpemVf
dHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0Ow0KDQogICAgICBiYXNpY19zdHJpbmcNCiAgICAgIHN1
YnN0cihzaXplX3R5cGUgX19wb3MgPSAwLCBzaXplX3R5cGUgX19uID0gbnBvcykgY29uc3QNCiAg
ICAgIHsNCiAgICAgICAgaWYgKF9fcG9zID4gdGhpcy0+c2l6ZSgpKQ0KICAgICAgICAgIF9fdGhy
b3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OnN1YnN0ciIpOw0KICAgICAgICByZXR1cm4g
YmFzaWNfc3RyaW5nKCp0aGlzLCBfX3BvcywgX19uKTsNCiAgICAgIH0NCg0KICAgICAgaW50DQog
ICAgICBjb21wYXJlKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpIGNvbnN0DQogICAgICB7DQog
ICAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7DQogICAgICAgIHNpemVfdHlw
ZSBfX29zaXplID0gX19zdHIuc2l6ZSgpOw0KICAgICAgICBzaXplX3R5cGUgX19sZW4gPSBtaW4o
X19zaXplLCBfX29zaXplKTsNCg0KICAgICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBh
cmUoX01fZGF0YSgpLCBfX3N0ci5kYXRhKCksIF9fbGVuKTsNCiAgICAgICAgaWYgKCFfX3IpDQog
ICAgICAgICAgX19yID0gX19zaXplIC0gX19vc2l6ZTsNCiAgICAgICAgcmV0dXJuIF9fcjsNCiAg
ICAgIH0NCg0KICAgICAgaW50DQogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90
eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikgY29uc3Q7DQoNCiAgICAgIGludA0K
ICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwgY29uc3QgYmFz
aWNfc3RyaW5nJiBfX3N0ciwNCiAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zMiwgc2l6ZV90
eXBlIF9fbjIpIGNvbnN0Ow0KDQogICAgICBpbnQNCiAgICAgIGNvbXBhcmUoY29uc3QgX0NoYXJU
KiBfX3MpIGNvbnN0Ow0KDQoNCg0KICAgICAgaW50DQogICAgICBjb21wYXJlKHNpemVfdHlwZSBf
X3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCogX19zKSBjb25zdDsNCg0KICAgICAg
aW50DQogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0
IF9DaGFyVCogX19zLA0KICAgICAgICAgICAgICBzaXplX3R5cGUgX19uMikgY29uc3Q7DQogIH07
DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu
YW1lIF9BbGxvYz4NCiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6DQogICAgYmFzaWNfc3RyaW5nKCkNCiAgICA6IF9NX2RhdGFwbHVzKF9TX2VtcHR5X3Jl
cCgpLl9NX3JlZmNvcHkoKSwgX0FsbG9jKCkpIHsgfQ0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPg0KICAgIG9wZXJhdG9yKyhjb25zdCBiYXNpY19z
dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywNCiAgICAgICAgICAgICAgY29u
c3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQogICAgew0K
ICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cihfX2xocyk7
DQogICAgICBfX3N0ci5hcHBlbmQoX19yaHMpOw0KICAgICAgcmV0dXJuIF9fc3RyOw0KICAgIH0N
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1l
IF9BbGxvYz4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPg0KICAgIG9w
ZXJhdG9yKyhjb25zdCBfQ2hhclQqIF9fbGhzLA0KICAgICAgICAgICAgICBjb25zdCBiYXNpY19z
dHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jPiYgX19yaHMpOw0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsX1RyYWl0cyxfQWxsb2M+DQogICAgb3BlcmF0b3IrKF9DaGFyVCBfX2xo
cywgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCxfVHJhaXRzLF9BbGxvYz4mIF9fcmhzKTsNCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4NCiAgICBpbmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPg0K
ICAgIG9wZXJhdG9yKyhjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JiBfX2xocywNCiAgICAgICAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQ0KICAgIHsNCiAgICAg
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHIoX19saHMpOw0KICAg
ICAgX19zdHIuYXBwZW5kKF9fcmhzKTsNCiAgICAgIHJldHVybiBfX3N0cjsNCiAgICB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+DQogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4NCiAg
ICBvcGVyYXRvcisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYg
X19saHMsIF9DaGFyVCBfX3JocykNCiAgICB7DQogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJpbmdfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOw0KICAgICAgX19zdHJp
bmdfdHlwZSBfX3N0cihfX2xocyk7DQogICAgICBfX3N0ci5hcHBlbmQoX19zaXplX3R5cGUoMSks
IF9fcmhzKTsNCiAgICAgIHJldHVybiBfX3N0cjsNCiAgICB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbmxp
bmUgYm9vbA0KICAgIG9wZXJhdG9yPT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19saHMsDQogICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykNCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJl
KF9fcmhzKSA9PSAwOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj09
KGNvbnN0IF9DaGFyVCogX19saHMsDQogICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykNCiAgICB7IHJldHVybiBfX3Jocy5jb21w
YXJlKF9fbGhzKSA9PSAwOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRv
cj09KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLA0K
ICAgICAgICAgICAgICAgY29uc3QgX0NoYXJUKiBfX3JocykNCiAgICB7IHJldHVybiBfX2xocy5j
b21wYXJlKF9fcmhzKSA9PSAwOyB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbmxpbmUgYm9vbA0KICAgIG9w
ZXJhdG9yIT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19s
aHMsDQogICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JiBfX3JocykNCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSAhPSAwOyB9
DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvciE9KGNvbnN0IF9DaGFyVCog
X19saHMsDQogICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+JiBfX3JocykNCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSAhPSAw
OyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl
bmFtZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvciE9KGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLA0KICAgICAgICAgICAgICAg
Y29uc3QgX0NoYXJUKiBfX3JocykNCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSAh
PSAwOyB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs
IHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbmxpbmUgYm9vbA0KICAgIG9wZXJhdG9yPChjb25zdCBi
YXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywNCiAgICAgICAgICAg
ICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQog
ICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPCAwOyB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5s
aW5lIGJvb2wNCiAgICBvcGVyYXRvcjwoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0
cywgX0FsbG9jPiYgX19saHMsDQogICAgICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpDQog
ICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPCAwOyB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5s
aW5lIGJvb2wNCiAgICBvcGVyYXRvcjwoY29uc3QgX0NoYXJUKiBfX2xocywNCiAgICAgICAgICAg
ICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQog
ICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPiAwOyB9DQoNCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBp
bmxpbmUgYm9vbA0KICAgIG9wZXJhdG9yPihjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+JiBfX2xocywNCiAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQogICAgeyByZXR1cm4gX19saHMuY29tcGFy
ZShfX3JocykgPiAwOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj4o
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsDQogICAg
ICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpDQogICAgeyByZXR1cm4gX19saHMuY29tcGFy
ZShfX3JocykgPiAwOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj4o
Y29uc3QgX0NoYXJUKiBfX2xocywNCiAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQogICAgeyByZXR1cm4gX19yaHMuY29tcGFy
ZShfX2xocykgPCAwOyB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbmxpbmUgYm9vbA0KICAgIG9wZXJhdG9y
PD0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsDQog
ICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JiBfX3JocykNCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8PSAwOyB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcjw9KGNvbnN0IGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLA0KICAgICAgICAgICAgICAgY29uc3QgX0No
YXJUKiBfX3JocykNCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8PSAwOyB9DQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf
QWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcjw9KGNvbnN0IF9DaGFyVCogX19s
aHMsDQogICAgICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JiBfX3JocykNCiAgeyByZXR1cm4gX19yaHMuY29tcGFyZShfX2xocykgPj0gMDsgfQ0K
DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj49KGNvbnN0IGJhc2ljX3N0
cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLA0KICAgICAgICAgICAgICAgY29u
c3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpDQogICAgeyBy
ZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPj0gMDsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGlubGluZSBi
b29sDQogICAgb3BlcmF0b3I+PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+JiBfX2xocywNCiAgICAgICAgICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpDQogICAg
eyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPj0gMDsgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGlubGlu
ZSBib29sDQogICAgb3BlcmF0b3I+PShjb25zdCBfQ2hhclQqIF9fbGhzLA0KICAgICAgICAgICAg
IGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQ0KICAg
IHsgcmV0dXJuIF9fcmhzLmNvbXBhcmUoX19saHMpIDw9IDA7IH0NCg0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGlu
bGluZSB2b2lkDQogICAgc3dhcChiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
JiBfX2xocywNCiAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4m
IF9fcmhzKQ0KICAgIHsgX19saHMuc3dhcChfX3Jocyk7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mIF9faXMsDQogICAgICAgICAgICAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0cik7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgYmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+Jg0KICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+JiBfX29zLA0KICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPiYgX19zdHIpOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULF9UcmFpdHM+Jg0KICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX2lzLA0KICAgICAgICAgICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j
PiYgX19zdHIsIF9DaGFyVCBfX2RlbGltKTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbmxpbmUgYmFzaWNfaXN0
cmVhbTxfQ2hhclQsX1RyYWl0cz4mDQogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mIF9faXMsDQogICAgICAgICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+JiBfX3N0cik7DQp9DQojIDU0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9zdHJpbmciIDIgMw0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYWxnb3JpdGhtIiAxIDMNCiMgNjUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYz
L2FsZ29yaXRobSIgMw0KDQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RsX2FsZ28uaCIgMSAzDQojIDY0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGxfaGVhcC5oIiAxIDMNCiMgNjMgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RsX2hlYXAuaCIgMw0KbmFtZXNwYWNlIHN0ZA0Kew0KDQoNCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0
YW5jZSwgdHlwZW5hbWUgX1RwPg0KICAgIHZvaWQNCiAgICBfX3B1c2hfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwNCiAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19ob2xlSW5k
ZXgsIF9EaXN0YW5jZSBfX3RvcEluZGV4LCBfVHAgX192YWx1ZSkNCiAgICB7DQogICAgICBfRGlz
dGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7DQogICAgICB3aGlsZSAoX19o
b2xlSW5kZXggPiBfX3RvcEluZGV4ICYmICooX19maXJzdCArIF9fcGFyZW50KSA8IF9fdmFsdWUp
IHsNCiAgICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgX19wYXJl
bnQpOw0KICAgICAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50Ow0KICAgICAgICBfX3BhcmVudCA9
IChfX2hvbGVJbmRleCAtIDEpIC8gMjsNCiAgICAgIH0NCiAgICAgICooX19maXJzdCArIF9faG9s
ZUluZGV4KSA9IF9fdmFsdWU7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj4NCiAgICBpbmxpbmUgdm9pZA0KICAgIHB1c2hfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkNCiAgICB7
DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlDQogICAgICAgICAgX1ZhbHVlVHlwZTsNCiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVu
Y2VfdHlwZQ0KICAgICAgICAgIF9EaXN0YW5jZVR5cGU7DQoNCg0KICAgICANCg0KICAgICANCg0K
ICAgICAgX19wdXNoX2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlVHlwZSgoX19sYXN0IC0gX19maXJz
dCkgLSAxKSwgX0Rpc3RhbmNlVHlwZSgwKSwNCiAgICAgICAgICAgICAgICAgIF9WYWx1ZVR5cGUo
KihfX2xhc3QgLSAxKSkpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1RwLA0KICAgICAgICAg
ICAgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgdm9pZA0KICAgIF9fcHVzaF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQogICAgICAgICAg
ICAgICAgX0Rpc3RhbmNlIF9fdG9wSW5kZXgsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXAp
DQogICAgew0KICAgICAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAy
Ow0KICAgICAgd2hpbGUgKF9faG9sZUluZGV4ID4gX190b3BJbmRleCAmJiBfX2NvbXAoKihfX2Zp
cnN0ICsgX19wYXJlbnQpLCBfX3ZhbHVlKSkgew0KICAgICAgICAqKF9fZmlyc3QgKyBfX2hvbGVJ
bmRleCkgPSAqKF9fZmlyc3QgKyBfX3BhcmVudCk7DQogICAgICAgIF9faG9sZUluZGV4ID0gX19w
YXJlbnQ7DQogICAgICAgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOw0KICAgICAg
fQ0KICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gX192YWx1ZTsNCiAgICB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFy
ZT4NCiAgICBpbmxpbmUgdm9pZA0KICAgIHB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCiAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCiAgICAgICAgICBfVmFsdWVU
eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlDQogICAgICAgICAgX0Rpc3RhbmNlVHlwZTsNCg0K
DQogICAgIA0KDQoNCiAgICAgIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZVR5cGUoKF9f
bGFzdCAtIF9fZmlyc3QpIC0gMSksIF9EaXN0YW5jZVR5cGUoMCksDQogICAgICAgICAgICAgICAg
ICBfVmFsdWVUeXBlKCooX19sYXN0IC0gMSkpLCBfX2NvbXApOw0KICAgIH0NCg0KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlw
ZW5hbWUgX1RwPg0KICAgIHZvaWQNCiAgICBfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsDQogICAgICAgICAgICAgICAgICBf
RGlzdGFuY2UgX19sZW4sIF9UcCBfX3ZhbHVlKQ0KICAgIHsNCiAgICAgIF9EaXN0YW5jZSBfX3Rv
cEluZGV4ID0gX19ob2xlSW5kZXg7DQogICAgICBfRGlzdGFuY2UgX19zZWNvbmRDaGlsZCA9IDIg
KiBfX2hvbGVJbmRleCArIDI7DQogICAgICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKSB7
DQogICAgICAgIGlmICgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSA8ICooX19maXJzdCArIChf
X3NlY29uZENoaWxkIC0gMSkpKQ0KICAgICAgICAgIF9fc2Vjb25kQ2hpbGQtLTsNCiAgICAgICAg
KihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7DQog
ICAgICAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsNCiAgICAgICAgX19zZWNvbmRDaGls
ZCA9IDIgKiAoX19zZWNvbmRDaGlsZCArIDEpOw0KICAgICAgfQ0KICAgICAgaWYgKF9fc2Vjb25k
Q2hpbGQgPT0gX19sZW4pIHsNCiAgICAgICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihf
X2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSk7DQogICAgICAgIF9faG9sZUluZGV4ID0gX19z
ZWNvbmRDaGlsZCAtIDE7DQogICAgICB9DQogICAgICBfX3B1c2hfaGVhcChfX2ZpcnN0LCBfX2hv
bGVJbmRleCwgX190b3BJbmRleCwgX192YWx1ZSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgX1RwPg0KICAgIGlubGluZSB2b2lk
DQogICAgX19wb3BfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCiAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUpDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9E
aXN0YW5jZTsNCiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KICAgICAgX19hZGp1c3RfaGVh
cChfX2ZpcnN0LCBfRGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwgX192
YWx1ZSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRv
cj4NCiAgICBpbmxpbmUgdm9pZA0KICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQ0KICAgIHsNCiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVl
X3R5cGUgX1ZhbHVlVHlwZTsNCg0KDQogICAgIA0KDQogICAgIA0KDQogICAgICBfX3BvcF9oZWFw
KF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9fbGFzdCAtIDEsIF9WYWx1ZVR5cGUoKihfX2xhc3QgLSAx
KSkpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIF9EaXN0YW5jZSwNCiAgICAgICAgICAgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
Q29tcGFyZT4NCiAgICB2b2lkDQogICAgX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LA0KICAgICAgICAgICAgICAgICAgX0Rp
c3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAg
IF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7DQogICAgICBfRGlzdGFuY2UgX19z
ZWNvbmRDaGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7DQogICAgICB3aGlsZSAoX19zZWNvbmRD
aGlsZCA8IF9fbGVuKSB7DQogICAgICAgIGlmIChfX2NvbXAoKihfX2ZpcnN0ICsgX19zZWNvbmRD
aGlsZCksICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpKSkNCiAgICAgICAgICBfX3Nl
Y29uZENoaWxkLS07DQogICAgICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJz
dCArIF9fc2Vjb25kQ2hpbGQpOw0KICAgICAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQ7
DQogICAgICAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsNCiAgICAg
IH0NCiAgICAgIGlmIChfX3NlY29uZENoaWxkID09IF9fbGVuKSB7DQogICAgICAgICooX19maXJz
dCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpOw0KICAg
ICAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQgLSAxOw0KICAgICAgfQ0KICAgICAgX19w
dXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUsIF9fY29t
cCk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICBpbmxpbmUgdm9pZA0KICAgIF9f
cG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2xhc3QsDQogICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1
bHQsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlIF9EaXN0YW5jZTsNCiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KICAgICAgX19h
ZGp1c3RfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoMCksIF9EaXN0YW5jZShfX2xhc3QgLSBfX2Zp
cnN0KSwNCiAgICAgICAgICAgICAgICAgICAgX192YWx1ZSwgX19jb21wKTsNCiAgICB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFy
ZT4NCiAgICBpbmxpbmUgdm9pZA0KICAgIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2ZpcnN0LA0KICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21w
YXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAgDQoNCg0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBfVmFsdWVU
eXBlOw0KICAgICAgX19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBfX2xhc3QgLSAxLCBf
VmFsdWVUeXBlKCooX19sYXN0IC0gMSkpLCBfX2NvbXApOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQogICAgdm9pZA0KICAgIG1ha2VfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCkNCiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9t
QWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlDQogICAgICAgICAgX1ZhbHVlVHlwZTsNCiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46
OmRpZmZlcmVuY2VfdHlwZQ0KICAgICAgICAgIF9EaXN0YW5jZVR5cGU7DQoNCg0KICAgICANCg0K
ICAgICANCg0KICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKSByZXR1cm47DQogICAgICBf
RGlzdGFuY2VUeXBlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsNCiAgICAgIF9EaXN0YW5jZVR5
cGUgX19wYXJlbnQgPSAoX19sZW4gLSAyKS8yOw0KDQogICAgICB3aGlsZSAodHJ1ZSkgew0KICAg
ICAgICBfX2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xlbiwgX1ZhbHVlVHlwZSgq
KF9fZmlyc3QgKyBfX3BhcmVudCkpKTsNCiAgICAgICAgaWYgKF9fcGFyZW50ID09IDApIHJldHVy
bjsNCiAgICAgICAgX19wYXJlbnQtLTsNCiAgICAgIH0NCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICBpbmxp
bmUgdm9pZA0KICAgIG1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwNCiAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21w
KQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21B
Y2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUNCiAgICAgICAgICBfVmFsdWVUeXBlOw0KICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlDQogICAgICAgICAgX0Rpc3RhbmNlVHlwZTsNCg0KDQogICAgIA0KDQoN
CiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0IDwgMikgcmV0dXJuOw0KICAgICAgX0Rpc3RhbmNl
VHlwZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7DQogICAgICBfRGlzdGFuY2VUeXBlIF9fcGFy
ZW50ID0gKF9fbGVuIC0gMikvMjsNCg0KICAgICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgX19h
ZGp1c3RfaGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sDQogICAgICAgICAgICAgICAgICAg
ICAgX1ZhbHVlVHlwZSgqKF9fZmlyc3QgKyBfX3BhcmVudCkpLCBfX2NvbXApOw0KICAgICAgICBp
ZiAoX19wYXJlbnQgPT0gMCkgcmV0dXJuOw0KICAgICAgICBfX3BhcmVudC0tOw0KICAgICAgfQ0K
ICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+DQogICAg
dm9pZA0KICAgIHNvcnRfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkNCiAgICB7DQoNCiAgICAgDQoNCiAgICAgDQoNCg0KICAg
ICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQ0KICAgICAgICBwb3BfaGVhcChfX2ZpcnN0
LCBfX2xhc3QtLSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgdm9pZA0KICAgIHNvcnRfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwN
CiAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCg0KICAgICANCg0KDQogICAg
ICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpDQogICAgICAgIHBvcF9oZWFwKF9fZmlyc3Qs
IF9fbGFzdC0tLCBfX2NvbXApOw0KICAgIH0NCg0KfQ0KIyA2NSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfdGVtcGJ1Zi5oIiAxIDMNCiMgNjQgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX3RlbXBidWYuaCIgMw0KbmFtZXNwYWNl
IHN0ZA0Kew0KIyA3NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
dGVtcGJ1Zi5oIiAzDQp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1Rw
Pg0KICBjbGFzcyBfVGVtcG9yYXJ5X2J1ZmZlcg0Kew0KDQogDQoNCiAgcHRyZGlmZl90IF9NX29y
aWdpbmFsX2xlbjsNCiAgcHRyZGlmZl90IF9NX2xlbjsNCiAgX1RwKiBfTV9idWZmZXI7DQoNCg0K
ICB2b2lkIF9NX2FsbG9jYXRlX2J1ZmZlcigpIHsNCiAgICBfTV9vcmlnaW5hbF9sZW4gPSBfTV9s
ZW47DQogICAgX01fYnVmZmVyID0gMDsNCg0KICAgIGlmIChfTV9sZW4gPiAocHRyZGlmZl90KSgy
MTQ3NDgzNjQ3IC8gc2l6ZW9mKF9UcCkpKQ0KICAgICAgX01fbGVuID0gMjE0NzQ4MzY0NyAvIHNp
emVvZihfVHApOw0KDQogICAgd2hpbGUgKF9NX2xlbiA+IDApIHsNCiAgICAgIF9NX2J1ZmZlciA9
IChfVHAqKSBtYWxsb2MoX01fbGVuICogc2l6ZW9mKF9UcCkpOw0KICAgICAgaWYgKF9NX2J1ZmZl
cikNCiAgICAgICAgYnJlYWs7DQogICAgICBfTV9sZW4gLz0gMjsNCiAgICB9DQogIH0NCg0KICB2
b2lkIF9NX2luaXRpYWxpemVfYnVmZmVyKGNvbnN0IF9UcCYsIF9fdHJ1ZV90eXBlKSB7fQ0KICB2
b2lkIF9NX2luaXRpYWxpemVfYnVmZmVyKGNvbnN0IF9UcCYgdmFsLCBfX2ZhbHNlX3R5cGUpIHsN
CiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9idWZmZXIsIF9NX2xlbiwgdmFsKTsNCiAgfQ0K
DQpwdWJsaWM6DQoNCiAgcHRyZGlmZl90IHNpemUoKSBjb25zdCB7IHJldHVybiBfTV9sZW47IH0N
Cg0KICBwdHJkaWZmX3QgcmVxdWVzdGVkX3NpemUoKSBjb25zdCB7IHJldHVybiBfTV9vcmlnaW5h
bF9sZW47IH0NCg0KICBfVHAqIGJlZ2luKCkgeyByZXR1cm4gX01fYnVmZmVyOyB9DQoNCiAgX1Rw
KiBlbmQoKSB7IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47IH0NCg0KICBfVGVtcG9yYXJ5X2J1
ZmZlcihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KSB7
DQoNCiAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aGFzX3RyaXZpYWxf
ZGVmYXVsdF9jb25zdHJ1Y3Rvcg0KICAgICAgICAgICAgX1RyaXZpYWw7DQoNCiAgICBpZiAodHJ1
ZSkgew0KICAgICAgX01fbGVuID0gZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KTsNCiAgICAgIF9N
X2FsbG9jYXRlX2J1ZmZlcigpOw0KICAgICAgaWYgKF9NX2xlbiA+IDApDQogICAgICAgIF9NX2lu
aXRpYWxpemVfYnVmZmVyKCpfX2ZpcnN0LCBfVHJpdmlhbCgpKTsNCiAgICB9DQogICAgaWYgKGZh
bHNlKQ0KICAgICAgew0KICAgICAgICBmcmVlKF9NX2J1ZmZlcik7DQogICAgICAgIF9NX2J1ZmZl
ciA9IDA7DQogICAgICAgIF9NX2xlbiA9IDA7DQogICAgICAgIDsNCiAgICAgIH0NCiAgfQ0KDQog
IH5fVGVtcG9yYXJ5X2J1ZmZlcigpIHsNCiAgICBfRGVzdHJveShfTV9idWZmZXIsIF9NX2J1ZmZl
ciArIF9NX2xlbik7DQogICAgZnJlZShfTV9idWZmZXIpOw0KICB9DQoNCnByaXZhdGU6DQoNCiAg
X1RlbXBvcmFyeV9idWZmZXIoY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKSB7fQ0KICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBfVGVtcG9yYXJ5X2J1ZmZlciYpIHt9DQp9Ow0KDQp9DQojIDY2ICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDIgMw0KDQoNCg0K
bmFtZXNwYWNlIHN0ZA0Kew0KIyA4NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4NCiAgaW5saW5lIGNv
bnN0IF9UcCYNCiAgICBfX21lZGlhbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIGNv
bnN0IF9UcCYgX19jKQ0KICAgIHsNCg0KICAgICANCiAgICAgIGlmIChfX2EgPCBfX2IpDQogICAg
ICAgIGlmIChfX2IgPCBfX2MpDQogICAgICAgICAgcmV0dXJuIF9fYjsNCiAgICAgICAgZWxzZSBp
ZiAoX19hIDwgX19jKQ0KICAgICAgICAgIHJldHVybiBfX2M7DQogICAgICAgIGVsc2UNCiAgICAg
ICAgICByZXR1cm4gX19hOw0KICAgICAgZWxzZSBpZiAoX19hIDwgX19jKQ0KICAgICAgICByZXR1
cm4gX19hOw0KICAgICAgZWxzZSBpZiAoX19iIDwgX19jKQ0KICAgICAgICByZXR1cm4gX19jOw0K
ICAgICAgZWxzZQ0KICAgICAgICByZXR1cm4gX19iOw0KICAgIH0NCiMgMTE4ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICBpbmxpbmUgY29uc3QgX1RwJg0KICAg
IF9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1RwJiBfX2Ms
IF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAgDQogICAgICBpZiAoX19jb21wKF9fYSwg
X19iKSkNCiAgICAgICAgaWYgKF9fY29tcChfX2IsIF9fYykpDQogICAgICAgICAgcmV0dXJuIF9f
YjsNCiAgICAgICAgZWxzZSBpZiAoX19jb21wKF9fYSwgX19jKSkNCiAgICAgICAgICByZXR1cm4g
X19jOw0KICAgICAgICBlbHNlDQogICAgICAgICAgcmV0dXJuIF9fYTsNCiAgICAgIGVsc2UgaWYg
KF9fY29tcChfX2EsIF9fYykpDQogICAgICAgIHJldHVybiBfX2E7DQogICAgICBlbHNlIGlmIChf
X2NvbXAoX19iLCBfX2MpKQ0KICAgICAgICByZXR1cm4gX19jOw0KICAgICAgZWxzZQ0KICAgICAg
ICByZXR1cm4gX19iOw0KICAgIH0NCiMgMTUwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwg
dHlwZW5hbWUgX0Z1bmN0aW9uPg0KICAgIF9GdW5jdGlvbg0KICAgIGZvcl9lYWNoKF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9GdW5jdGlvbiBfX2YpDQogICAgew0KDQog
ICAgIA0KICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQ0KICAgICAg
ICBfX2YoKl9fZmlyc3QpOw0KICAgICAgcmV0dXJuIF9fZjsNCiAgICB9DQoNCg0KDQoNCg0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICBpbmxpbmUg
X0lucHV0SXRlcg0KICAgIGZpbmQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFz
dCwNCiAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsDQogICAgICAgICBpbnB1dF9pdGVyYXRvcl90
YWcpDQogICAgew0KICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0ICYmICEoKl9fZmlyc3Qg
PT0gX192YWwpKQ0KICAgICAgICArK19fZmlyc3Q7DQogICAgICByZXR1cm4gX19maXJzdDsNCiAg
ICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1l
IF9QcmVkaWNhdGU+DQogICAgaW5saW5lIF9JbnB1dEl0ZXINCiAgICBmaW5kX2lmKF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsDQogICAgICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwNCiAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykNCiAgICB7DQogICAgICB3aGls
ZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgIV9fcHJlZCgqX19maXJzdCkpDQogICAgICAgICsrX19m
aXJzdDsNCiAgICAgIHJldHVybiBfX2ZpcnN0Ow0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICBfUmFuZG9t
QWNjZXNzSXRlcg0KICAgIGZpbmQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19sYXN0LA0KICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwNCiAgICAgICAgIHJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQ0KICAgIHsNCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfX3RyaXBfY291bnQN
CiAgICAgICAgPSAoX19sYXN0IC0gX19maXJzdCkgPj4gMjsNCg0KICAgICAgZm9yICggOyBfX3Ry
aXBfY291bnQgPiAwIDsgLS1fX3RyaXBfY291bnQpIHsNCiAgICAgICAgaWYgKCpfX2ZpcnN0ID09
IF9fdmFsKSByZXR1cm4gX19maXJzdDsNCiAgICAgICAgKytfX2ZpcnN0Ow0KDQogICAgICAgIGlm
ICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7DQogICAgICAgICsrX19maXJzdDsN
Cg0KICAgICAgICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAg
ICArK19fZmlyc3Q7DQoNCiAgICAgICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19m
aXJzdDsNCiAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAgfQ0KDQogICAgICBzd2l0Y2goX19sYXN0
IC0gX19maXJzdCkgew0KICAgICAgY2FzZSAzOg0KICAgICAgICBpZiAoKl9fZmlyc3QgPT0gX192
YWwpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7DQogICAgICBjYXNlIDI6DQog
ICAgICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7DQogICAgICAgICsr
X19maXJzdDsNCiAgICAgIGNhc2UgMToNCiAgICAgICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSBy
ZXR1cm4gX19maXJzdDsNCiAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAgY2FzZSAwOg0KICAgICAg
ZGVmYXVsdDoNCiAgICAgICAgcmV0dXJuIF9fbGFzdDsNCiAgICAgIH0NCiAgICB9DQoNCg0KDQoN
Cg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfUHJl
ZGljYXRlPg0KICAgIF9SYW5kb21BY2Nlc3NJdGVyDQogICAgZmluZF9pZihfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQogICAgICAgICAgICBfUHJl
ZGljYXRlIF9fcHJlZCwNCiAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQ0K
ICAgIHsNCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46
OmRpZmZlcmVuY2VfdHlwZSBfX3RyaXBfY291bnQNCiAgICAgICAgPSAoX19sYXN0IC0gX19maXJz
dCkgPj4gMjsNCg0KICAgICAgZm9yICggOyBfX3RyaXBfY291bnQgPiAwIDsgLS1fX3RyaXBfY291
bnQpIHsNCiAgICAgICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0Ow0KICAg
ICAgICArK19fZmlyc3Q7DQoNCiAgICAgICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBf
X2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7DQoNCiAgICAgICAgaWYgKF9fcHJlZCgqX19maXJz
dCkpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7DQoNCiAgICAgICAgaWYgKF9f
cHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7DQogICAg
ICB9DQoNCiAgICAgIHN3aXRjaChfX2xhc3QgLSBfX2ZpcnN0KSB7DQogICAgICBjYXNlIDM6DQog
ICAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsNCiAgICAgICAgKytf
X2ZpcnN0Ow0KICAgICAgY2FzZSAyOg0KICAgICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkgcmV0
dXJuIF9fZmlyc3Q7DQogICAgICAgICsrX19maXJzdDsNCiAgICAgIGNhc2UgMToNCiAgICAgICAg
aWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgICArK19fZmlyc3Q7
DQogICAgICBjYXNlIDA6DQogICAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gX19sYXN0Ow0K
ICAgICAgfQ0KICAgIH0NCiMgMjg5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5h
bWUgX1RwPg0KICAgIGlubGluZSBfSW5wdXRJdGVyDQogICAgZmluZChfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCkNCiAgICB7
DQoNCiAgICAgDQogICAgIA0KDQogICAgICByZXR1cm4gZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9f
dmFsLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsNCiAgICB9DQojIDMwOSAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGU+DQogICAgaW5saW5lIF9J
bnB1dEl0ZXINCiAgICBmaW5kX2lmKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsDQogICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkNCiAgICB7DQoNCiAgICAgDQogICAg
IA0KDQogICAgICByZXR1cm4gZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVy
YXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7DQogICAgfQ0KIyAzMjkgInQ6L21zeXMvMS4wL21pbmd3
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Rm9yd2FyZEl0ZXI+DQogICAgX0ZvcndhcmRJdGVyDQogICAgYWRqYWNlbnRfZmluZChfRm9yd2Fy
ZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkNCiAgICB7DQoNCiAgICAgDQogICAg
IA0KDQogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpDQogICAgICAgIHJldHVybiBfX2xhc3Q7
DQogICAgICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsNCiAgICAgIHdoaWxlKCsrX19u
ZXh0ICE9IF9fbGFzdCkgew0KICAgICAgICBpZiAoKl9fZmlyc3QgPT0gKl9fbmV4dCkNCiAgICAg
ICAgICByZXR1cm4gX19maXJzdDsNCiAgICAgICAgX19maXJzdCA9IF9fbmV4dDsNCiAgICAgIH0N
CiAgICAgIHJldHVybiBfX2xhc3Q7DQogICAgfQ0KIyAzNTggInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y
d2FyZEl0ZXIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+DQogICAgX0ZvcndhcmRJdGVyDQog
ICAgYWRqYWNlbnRfZmluZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFz
dCwNCiAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkNCiAg
ICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkNCiAg
ICAgICAgcmV0dXJuIF9fbGFzdDsNCiAgICAgIF9Gb3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0
Ow0KICAgICAgd2hpbGUoKytfX25leHQgIT0gX19sYXN0KSB7DQogICAgICAgIGlmIChfX2JpbmFy
eV9wcmVkKCpfX2ZpcnN0LCAqX19uZXh0KSkNCiAgICAgICAgICByZXR1cm4gX19maXJzdDsNCiAg
ICAgICAgX19maXJzdCA9IF9fbmV4dDsNCiAgICAgIH0NCiAgICAgIHJldHVybiBfX2xhc3Q7DQog
ICAgfQ0KIyAzODcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2Fs
Z28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFtZSBfVHA+DQog
ICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUN
CiAgICBjb3VudChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBjb25zdCBf
VHAmIF9fdmFsdWUpDQogICAgew0KDQogICAgIA0KICAgICANCg0KICAgICANCiAgICAgIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7
DQogICAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpDQogICAgICAgIGlm
ICgqX19maXJzdCA9PSBfX3ZhbHVlKQ0KICAgICAgICAgICsrX19uOw0KICAgICAgcmV0dXJuIF9f
bjsNCiAgICB9DQojIDQxMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9z
dGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9Q
cmVkaWNhdGU+DQogICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZm
ZXJlbmNlX3R5cGUNCiAgICBjb3VudF9pZihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIg
X19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQogICAg
ICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcj46OmRpZmZlcmVuY2VfdHlwZSBf
X24gPSAwOw0KICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQ0KICAg
ICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkNCiAgICAgICAgICArK19fbjsNCiAgICAgIHJldHVy
biBfX247DQogICAgfQ0KIyA0NTAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIxLCB0eXBl
bmFtZSBfRm9yd2FyZEl0ZXIyPg0KICAgIF9Gb3J3YXJkSXRlcjENCiAgICBzZWFyY2goX0Zvcndh
cmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICBfRm9y
d2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIpDQogICAgew0KDQogICAg
IA0KICAgICANCiAgICAgDQoNCg0KDQoNCiAgICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxIHx8
IF9fZmlyc3QyID09IF9fbGFzdDIpDQogICAgICAgIHJldHVybiBfX2ZpcnN0MTsNCg0KDQogICAg
ICBfRm9yd2FyZEl0ZXIyIF9fdG1wKF9fZmlyc3QyKTsNCiAgICAgICsrX190bXA7DQogICAgICBp
ZiAoX190bXAgPT0gX19sYXN0MikNCiAgICAgICAgcmV0dXJuIGZpbmQoX19maXJzdDEsIF9fbGFz
dDEsICpfX2ZpcnN0Mik7DQoNCg0KDQogICAgICBfRm9yd2FyZEl0ZXIyIF9fcDEsIF9fcDsNCg0K
ICAgICAgX19wMSA9IF9fZmlyc3QyOyArK19fcDE7DQoNCiAgICAgIF9Gb3J3YXJkSXRlcjEgX19j
dXJyZW50ID0gX19maXJzdDE7DQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7
DQogICAgICAgIF9fZmlyc3QxID0gZmluZChfX2ZpcnN0MSwgX19sYXN0MSwgKl9fZmlyc3QyKTsN
CiAgICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpDQogICAgICAgICAgcmV0dXJuIF9fbGFz
dDE7DQoNCiAgICAgICAgX19wID0gX19wMTsNCiAgICAgICAgX19jdXJyZW50ID0gX19maXJzdDE7
DQogICAgICAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKQ0KICAgICAgICAgIHJldHVybiBf
X2xhc3QxOw0KDQogICAgICAgIHdoaWxlICgqX19jdXJyZW50ID09ICpfX3ApIHsNCiAgICAgICAg
ICBpZiAoKytfX3AgPT0gX19sYXN0MikNCiAgICAgICAgICAgIHJldHVybiBfX2ZpcnN0MTsNCiAg
ICAgICAgICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkNCiAgICAgICAgICAgIHJldHVybiBf
X2xhc3QxOw0KICAgICAgICB9DQoNCiAgICAgICAgKytfX2ZpcnN0MTsNCiAgICAgIH0NCiAgICAg
IHJldHVybiBfX2ZpcnN0MTsNCiAgICB9DQojIDUyMiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJk
SXRlcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkPg0KICAg
IF9Gb3J3YXJkSXRlcjENCiAgICBzZWFyY2goX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0Zvcndh
cmRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9y
d2FyZEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgIF9CaW5hcnlQcmVkIF9fcHJlZGljYXRlKQ0K
ICAgIHsNCg0KICAgICANCiAgICAgDQogICAgIA0KDQoNCg0KDQogICAgICBpZiAoX19maXJzdDEg
PT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xhc3QyKQ0KICAgICAgICByZXR1cm4gX19maXJz
dDE7DQoNCg0KICAgICAgX0ZvcndhcmRJdGVyMiBfX3RtcChfX2ZpcnN0Mik7DQogICAgICArK19f
dG1wOw0KICAgICAgaWYgKF9fdG1wID09IF9fbGFzdDIpIHsNCiAgICAgICAgd2hpbGUgKF9fZmly
c3QxICE9IF9fbGFzdDEgJiYgIV9fcHJlZGljYXRlKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkNCiAg
ICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICByZXR1cm4gX19maXJzdDE7DQogICAgICB9DQoN
Cg0KDQogICAgICBfRm9yd2FyZEl0ZXIyIF9fcDEsIF9fcDsNCg0KICAgICAgX19wMSA9IF9fZmly
c3QyOyArK19fcDE7DQoNCiAgICAgIF9Gb3J3YXJkSXRlcjEgX19jdXJyZW50ID0gX19maXJzdDE7
DQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7DQogICAgICAgIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxKSB7DQogICAgICAgICAgaWYgKF9fcHJlZGljYXRlKCpfX2ZpcnN0
MSwgKl9fZmlyc3QyKSkNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICsrX19maXJzdDE7
DQogICAgICAgIH0NCiAgICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJl
ZGljYXRlKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAg
ICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkNCiAgICAgICAgICByZXR1cm4gX19sYXN0MTsN
Cg0KICAgICAgICBfX3AgPSBfX3AxOw0KICAgICAgICBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsNCiAg
ICAgICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpIHJldHVybiBfX2xhc3QxOw0KDQogICAg
ICAgIHdoaWxlIChfX3ByZWRpY2F0ZSgqX19jdXJyZW50LCAqX19wKSkgew0KICAgICAgICAgIGlm
ICgrK19fcCA9PSBfX2xhc3QyKQ0KICAgICAgICAgICAgcmV0dXJuIF9fZmlyc3QxOw0KICAgICAg
ICAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKQ0KICAgICAgICAgICAgcmV0dXJuIF9fbGFz
dDE7DQogICAgICAgIH0NCg0KICAgICAgICArK19fZmlyc3QxOw0KICAgICAgfQ0KICAgICAgcmV0
dXJuIF9fZmlyc3QxOw0KICAgIH0NCiMgNTk2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
LCB0eXBlbmFtZSBfSW50ZWdlciwgdHlwZW5hbWUgX1RwPg0KICAgIF9Gb3J3YXJkSXRlcg0KICAg
IHNlYXJjaF9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LA0KICAg
ICAgICAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwpDQogICAgew0KDQog
ICAgIA0KICAgICANCg0KICAgICANCg0KICAgICAgaWYgKF9fY291bnQgPD0gMCkNCiAgICAgICAg
cmV0dXJuIF9fZmlyc3Q7DQogICAgICBlbHNlIHsNCiAgICAgICAgX19maXJzdCA9IGZpbmQoX19m
aXJzdCwgX19sYXN0LCBfX3ZhbCk7DQogICAgICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkg
ew0KICAgICAgICAgIF9JbnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOw0KICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX2kgPSBfX2ZpcnN0Ow0KICAgICAgICAgICsrX19pOw0KICAgICAgICAgIHdoaWxl
IChfX2kgIT0gX19sYXN0ICYmIF9fbiAhPSAwICYmICpfX2kgPT0gX192YWwpIHsNCiAgICAgICAg
ICAgICsrX19pOw0KICAgICAgICAgICAgLS1fX247DQogICAgICAgICAgfQ0KICAgICAgICAgIGlm
IChfX24gPT0gMCkNCiAgICAgICAgICAgIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgIF9fZmlyc3QgPSBmaW5kKF9faSwgX19sYXN0LCBfX3ZhbCk7DQogICAgICAg
IH0NCiAgICAgICAgcmV0dXJuIF9fbGFzdDsNCiAgICAgIH0NCiAgICB9DQojIDY0MyAidDovbXN5
cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0ludGVnZXIsIHR5cGVuYW1lIF9UcCwN
CiAgICAgICAgICAgdHlwZW5hbWUgX0JpbmFyeVByZWQ+DQogICAgX0ZvcndhcmRJdGVyDQogICAg
c2VhcmNoX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQogICAg
ICAgICAgICAgX0ludGVnZXIgX19jb3VudCwgY29uc3QgX1RwJiBfX3ZhbCwNCiAgICAgICAgICAg
ICBfQmluYXJ5UHJlZCBfX2JpbmFyeV9wcmVkKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCg0K
ICAgICAgaWYgKF9fY291bnQgPD0gMCkNCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7DQogICAgICBl
bHNlIHsNCiAgICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7DQogICAgICAgICAgaWYg
KF9fYmluYXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkNCiAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICsrX19maXJzdDsNCiAgICAgICAgfQ0KICAgICAgICB3aGlsZSAoX19maXJzdCAhPSBf
X2xhc3QpIHsNCiAgICAgICAgICBfSW50ZWdlciBfX24gPSBfX2NvdW50IC0gMTsNCiAgICAgICAg
ICBfRm9yd2FyZEl0ZXIgX19pID0gX19maXJzdDsNCiAgICAgICAgICArK19faTsNCiAgICAgICAg
ICB3aGlsZSAoX19pICE9IF9fbGFzdCAmJiBfX24gIT0gMCAmJiBfX2JpbmFyeV9wcmVkKCpfX2ks
IF9fdmFsKSkgew0KICAgICAgICAgICAgKytfX2k7DQogICAgICAgICAgICAtLV9fbjsNCiAgICAg
ICAgICB9DQogICAgICAgICAgaWYgKF9fbiA9PSAwKQ0KICAgICAgICAgICAgcmV0dXJuIF9fZmly
c3Q7DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB3aGlsZSAoX19pICE9IF9fbGFzdCkg
ew0KICAgICAgICAgICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpDQogICAgICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICsrX19pOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgX19maXJzdCA9IF9faTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAg
cmV0dXJuIF9fbGFzdDsNCiAgICAgIH0NCiAgICB9DQojIDY5NyAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9G
b3J3YXJkSXRlcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjI+DQogICAgX0ZvcndhcmRJdGVyMg0K
ICAgIHN3YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19s
YXN0MSwNCiAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyKQ0KICAgIHsNCg0K
ICAgICANCiAgICAgDQogICAgIA0KDQoNCiAgICAgDQoNCg0KDQogICAgICBmb3IgKCA7IF9fZmly
c3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpDQogICAgICAgIGl0ZXJfc3dh
cChfX2ZpcnN0MSwgX19maXJzdDIpOw0KICAgICAgcmV0dXJuIF9fZmlyc3QyOw0KICAgIH0NCiMg
NzMyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXIsIHR5
cGVuYW1lIF9VbmFyeU9wZXJhdGlvbj4NCiAgICBfT3V0cHV0SXRlcg0KICAgIHRyYW5zZm9ybShf
SW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICBfT3V0
cHV0SXRlciBfX3Jlc3VsdCwgX1VuYXJ5T3BlcmF0aW9uIF9fdW5hcnlfb3ApDQogICAgew0KDQog
ICAgIA0KICAgICANCg0KDQoNCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19m
aXJzdCwgKytfX3Jlc3VsdCkNCiAgICAgICAgKl9fcmVzdWx0ID0gX191bmFyeV9vcCgqX19maXJz
dCk7DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0KIyA3NjUgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5cGVuYW1lIF9PdXRwdXRJdGVy
LA0KICAgICAgICAgICB0eXBlbmFtZSBfQmluYXJ5T3BlcmF0aW9uPg0KICAgIF9PdXRwdXRJdGVy
DQogICAgdHJhbnNmb3JtKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3Qx
LA0KICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX091dHB1dEl0ZXIgX19yZXN1
bHQsDQogICAgICAgICAgICAgIF9CaW5hcnlPcGVyYXRpb24gX19iaW5hcnlfb3ApDQogICAgew0K
DQogICAgIA0KICAgICANCiAgICAgDQoNCg0KDQogICAgICBmb3IgKCA7IF9fZmlyc3QxICE9IF9f
bGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIsICsrX19yZXN1bHQpDQogICAgICAgICpfX3Jl
c3VsdCA9IF9fYmluYXJ5X29wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKTsNCiAgICAgIHJldHVybiBf
X3Jlc3VsdDsNCiAgICB9DQojIDc5NiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlw
ZW5hbWUgX1RwPg0KICAgIHZvaWQNCiAgICByZXBsYWNlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBf
Rm9yd2FyZEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgY29uc3QgX1RwJiBfX29sZF92YWx1ZSwg
Y29uc3QgX1RwJiBfX25ld192YWx1ZSkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQogICAgIA0K
DQoNCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkNCiAgICAgICAg
aWYgKCpfX2ZpcnN0ID09IF9fb2xkX3ZhbHVlKQ0KICAgICAgICAgICpfX2ZpcnN0ID0gX19uZXdf
dmFsdWU7DQogICAgfQ0KIyA4MjUgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVu
YW1lIF9QcmVkaWNhdGUsIHR5cGVuYW1lIF9UcD4NCiAgICB2b2lkDQogICAgcmVwbGFjZV9pZihf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAg
IF9QcmVkaWNhdGUgX19wcmVkLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKQ0KICAgIHsNCg0KICAg
ICANCiAgICAgDQoNCiAgICAgDQoNCg0KICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsg
KytfX2ZpcnN0KQ0KICAgICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkNCiAgICAgICAgICAqX19m
aXJzdCA9IF9fbmV3X3ZhbHVlOw0KICAgIH0NCiMgODU2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0
SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICBfT3V0cHV0SXRl
cg0KICAgIHJlcGxhY2VfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0
LA0KICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwNCiAgICAgICAgICAgICAg
ICAgY29uc3QgX1RwJiBfX29sZF92YWx1ZSwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkNCiAgICB7
DQoNCiAgICAgDQogICAgIA0KDQogICAgIA0KDQoNCiAgICAgIGZvciAoIDsgX19maXJzdCAhPSBf
X2xhc3Q7ICsrX19maXJzdCwgKytfX3Jlc3VsdCkNCiAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmly
c3QgPT0gX19vbGRfdmFsdWUgPyBfX25ld192YWx1ZSA6ICpfX2ZpcnN0Ow0KICAgICAgcmV0dXJu
IF9fcmVzdWx0Ow0KICAgIH0NCiMgODg4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlw
ZW5hbWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9QcmVkaWNhdGUsDQogICAgICAgICAgIHR5cGVu
YW1lIF9UcD4NCiAgICBfT3V0cHV0SXRlcg0KICAgIHJlcGxhY2VfY29weV9pZihfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwNCiAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIGNv
bnN0IF9UcCYgX19uZXdfdmFsdWUpDQogICAgew0KDQogICAgIA0KICAgICANCg0KICAgICANCg0K
DQogICAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQp
DQogICAgICAgICpfX3Jlc3VsdCA9IF9fcHJlZCgqX19maXJzdCkgPyBfX25ld192YWx1ZSA6ICpf
X2ZpcnN0Ow0KICAgICAgcmV0dXJuIF9fcmVzdWx0Ow0KICAgIH0NCiMgOTE4ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfR2VuZXJhdG9yPg0KICAgIHZvaWQNCiAgICBn
ZW5lcmF0ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgX0dlbmVy
YXRvciBfX2dlbikNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIGZvciAoIDsgX19m
aXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkNCiAgICAgICAgKl9fZmlyc3QgPSBfX2dlbigpOw0K
ICAgIH0NCiMgOTQyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9h
bGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX091dHB1dEl0ZXIsIHR5cGVuYW1lIF9TaXpl
LCB0eXBlbmFtZSBfR2VuZXJhdG9yPg0KICAgIF9PdXRwdXRJdGVyDQogICAgZ2VuZXJhdGVfbihf
T3V0cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9HZW5lcmF0b3IgX19nZW4pDQogICAgew0K
DQogICAgIA0KDQoNCg0KICAgICAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2ZpcnN0KQ0K
ICAgICAgICAqX19maXJzdCA9IF9fZ2VuKCk7DQogICAgICByZXR1cm4gX19maXJzdDsNCiAgICB9
DQojIDk2OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5o
IiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVy
LCB0eXBlbmFtZSBfVHA+DQogICAgX091dHB1dEl0ZXINCiAgICByZW1vdmVfY29weShfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgIF9PdXRwdXRJ
dGVyIF9fcmVzdWx0LCBjb25zdCBfVHAmIF9fdmFsdWUpDQogICAgew0KDQogICAgIA0KICAgICAN
Cg0KICAgICANCg0KDQogICAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qp
DQogICAgICAgIGlmICghKCpfX2ZpcnN0ID09IF9fdmFsdWUpKSB7DQogICAgICAgICAgKl9fcmVz
dWx0ID0gKl9fZmlyc3Q7DQogICAgICAgICAgKytfX3Jlc3VsdDsNCiAgICAgICAgfQ0KICAgICAg
cmV0dXJuIF9fcmVzdWx0Ow0KICAgIH0NCiMgMTAwMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0
ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRlPg0KICAgIF9PdXRw
dXRJdGVyDQogICAgcmVtb3ZlX2NvcHlfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVy
IF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX1ByZWRp
Y2F0ZSBfX3ByZWQpDQogICAgew0KDQogICAgIA0KICAgICANCg0KICAgICANCg0KDQogICAgICBm
b3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpDQogICAgICAgIGlmICghX19wcmVk
KCpfX2ZpcnN0KSkgew0KICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0Ow0KICAgICAgICAg
ICsrX19yZXN1bHQ7DQogICAgICAgIH0NCiAgICAgIHJldHVybiBfX3Jlc3VsdDsNCiAgICB9DQoj
IDEwMzkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIg
Mw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICBf
Rm9yd2FyZEl0ZXINCiAgICByZW1vdmUoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX2xhc3QsDQogICAgICAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkNCiAgICB7DQoNCiAgICAg
DQogICAgIA0KDQogICAgIA0KDQoNCiAgICAgIF9fZmlyc3QgPSBmaW5kKF9fZmlyc3QsIF9fbGFz
dCwgX192YWx1ZSk7DQogICAgICBfRm9yd2FyZEl0ZXIgX19pID0gX19maXJzdDsNCiAgICAgIHJl
dHVybiBfX2ZpcnN0ID09IF9fbGFzdCA/IF9fZmlyc3QNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IHJlbW92ZV9jb3B5KCsrX19pLCBfX2xhc3QsIF9fZmlyc3QsIF9fdmFsdWUpOw0K
ICAgIH0NCiMgMTA3MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
YWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1By
ZWRpY2F0ZT4NCiAgICBfRm9yd2FyZEl0ZXINCiAgICByZW1vdmVfaWYoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQogICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19w
cmVkKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCg0KICAgICAgX19maXJzdCA9IGZpbmRfaWYo
X19maXJzdCwgX19sYXN0LCBfX3ByZWQpOw0KICAgICAgX0ZvcndhcmRJdGVyIF9faSA9IF9fZmly
c3Q7DQogICAgICByZXR1cm4gX19maXJzdCA9PSBfX2xhc3QgPyBfX2ZpcnN0DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiByZW1vdmVfY29weV9pZigrK19faSwgX19sYXN0LCBfX2Zp
cnN0LCBfX3ByZWQpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4NCiAgICBfT3V0cHV0SXRlcg0KICAgIF9f
dW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwNCiAgICAg
ICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LA0KICAgICAgICAgICAgICAgICAgb3V0
cHV0X2l0ZXJhdG9yX3RhZykNCiAgICB7DQoNCiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSW5wdXRJdGVyPjo6dmFsdWVfdHlwZSBfX3ZhbHVlID0gKl9fZmlyc3Q7DQogICAgICAqX19y
ZXN1bHQgPSBfX3ZhbHVlOw0KICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpDQogICAg
ICAgIGlmICghKF9fdmFsdWUgPT0gKl9fZmlyc3QpKSB7DQogICAgICAgICAgX192YWx1ZSA9ICpf
X2ZpcnN0Ow0KICAgICAgICAgICorK19fcmVzdWx0ID0gX192YWx1ZTsNCiAgICAgICAgfQ0KICAg
ICAgcmV0dXJuICsrX19yZXN1bHQ7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAgICBfRm9yd2FyZEl0
ZXINCiAgICBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsDQogICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsDQogICAgICAgICAg
ICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykNCiAgICB7DQoNCiAgICAgICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0Ow0KICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpDQogICAgICAgIGlm
ICghKCpfX3Jlc3VsdCA9PSAqX19maXJzdCkpDQogICAgICAgICAgKisrX19yZXN1bHQgPSAqX19m
aXJzdDsNCiAgICAgIHJldHVybiArK19fcmVzdWx0Ow0KICAgIH0NCiMgMTE0NSAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPg0KICAgIGlubGluZSBfT3V0
cHV0SXRlcg0KICAgIHVuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBf
X2xhc3QsDQogICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpDQogICAgew0KDQog
ICAgIA0KICAgICANCg0KICAgICANCg0KDQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfT3V0cHV0SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyVHlwZTsNCg0KICAg
ICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19yZXN1bHQ7DQogICAgICByZXR1cm4g
X191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfSXRlclR5cGUoKSk7DQog
ICAgfQ0KIyAxMTcwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9h
bGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1
dEl0ZXIsIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+DQogICAgX091dHB1dEl0ZXINCiAgICBf
X3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsDQogICAg
ICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwNCiAgICAgICAgICAgICAgICAgIF9C
aW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwNCiAgICAgICAgICAgICAgICAgIG91dHB1dF9p
dGVyYXRvcl90YWcpDQogICAgew0KDQogICAgIA0KDQoNCg0KICAgICAgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9fdmFsdWUgPSAqX19maXJzdDsNCiAg
ICAgICpfX3Jlc3VsdCA9IF9fdmFsdWU7DQogICAgICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFz
dCkNCiAgICAgICAgaWYgKCFfX2JpbmFyeV9wcmVkKF9fdmFsdWUsICpfX2ZpcnN0KSkgew0KICAg
ICAgICAgIF9fdmFsdWUgPSAqX19maXJzdDsNCiAgICAgICAgICAqKytfX3Jlc3VsdCA9IF9fdmFs
dWU7DQogICAgICAgIH0NCiAgICAgIHJldHVybiArK19fcmVzdWx0Ow0KICAgIH0NCiMgMTE5OSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5h
bWUgX0JpbmFyeVByZWRpY2F0ZT4NCiAgICBfRm9yd2FyZEl0ZXINCiAgICBfX3VuaXF1ZV9jb3B5
KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAg
ICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsDQogICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGlj
YXRlIF9fYmluYXJ5X3ByZWQsDQogICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3Rh
ZykNCiAgICB7DQoNCiAgICAgDQoNCg0KDQogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDsNCiAg
ICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQ0KICAgICAgICBpZiAoIV9fYmluYXJ5X3By
ZWQoKl9fcmVzdWx0LCAqX19maXJzdCkpICorK19fcmVzdWx0ID0gKl9fZmlyc3Q7DQogICAgICBy
ZXR1cm4gKytfX3Jlc3VsdDsNCiAgICB9DQojIDEyMzIgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJ
dGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlciwgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4NCiAg
ICBpbmxpbmUgX091dHB1dEl0ZXINCiAgICB1bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0
LA0KICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkNCiAgICB7
DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9PdXRwdXRJdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJUeXBlOw0KDQogICAgICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX3Jlc3VsdDsNCiAgICAgIHJldHVybiBfX3Vu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwNCl9fcmVzdWx0LCBfX2JpbmFyeV9wcmVkLCBfSXRl
clR5cGUoKSk7DQogICAgfQ0KIyAxMjYzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyPg0K
ICAgIF9Gb3J3YXJkSXRlcg0KICAgIHVuaXF1ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCkNCiAgICB7DQoNCiAgICAgICAgIA0KICAgICAgICAgDQoNCg0KICAgICAg
ICAgIF9fZmlyc3QgPSBhZGphY2VudF9maW5kKF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICAgICAg
cmV0dXJuIHVuaXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19maXJzdCk7DQogICAgfQ0KIyAx
MjkwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGlj
YXRlPg0KICAgIF9Gb3J3YXJkSXRlcg0KICAgIHVuaXF1ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFy
eV9wcmVkKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCg0KDQogICAgICBfX2ZpcnN0ID0gYWRq
YWNlbnRfZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fYmluYXJ5X3ByZWQpOw0KICAgICAgcmV0dXJu
IHVuaXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19maXJzdCwgX19iaW5hcnlfcHJlZCk7DQog
ICAgfQ0KDQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cj4NCiAgICB2b2lkDQogICAgX19yZXZlcnNlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBf
QmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRp
cmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykNCiAgICB7DQogICAgICAgICAgd2hpbGUgKHRydWUpDQog
ICAgICAgICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QgfHwgX19maXJzdCA9PSAtLV9fbGFzdCkN
CiAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICAgIGl0ZXJfc3dhcChfX2ZpcnN0KyssIF9fbGFzdCk7DQogICAgfQ0KDQoNCg0KDQoNCg0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0KICAgIHZvaWQNCiAgICBf
X3JldmVyc2UoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZykNCiAgICB7DQogICAgICAgICAgd2hpbGUgKF9fZmlyc3QgPCBfX2xhc3QpDQogICAgICAgICAg
ICBpdGVyX3N3YXAoX19maXJzdCsrLCAtLV9fbGFzdCk7DQogICAgfQ0KIyAxMzQ5ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyPg0KICAgIGlubGluZSB2b2lkDQogICAgcmV2ZXJz
ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCkN
CiAgICB7DQoNCiAgICAgICAgIA0KDQogICAgICAgICAgX19yZXZlcnNlKF9fZmlyc3QsIF9fbGFz
dCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7DQogICAgfQ0KIyAxMzc0ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyLCB0eXBlbmFtZSBfT3V0cHV0SXRlcj4NCiAgICBf
T3V0cHV0SXRlcg0KICAgIHJldmVyc2VfY29weShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwg
X0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQpDQogICAgew0KDQogICAgIA0KICAgICANCg0KDQogICAgICB3
aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsNCiAgICAgICAgLS1fX2xhc3Q7DQogICAgICAgICpf
X3Jlc3VsdCA9ICpfX2xhc3Q7DQogICAgICAgICsrX19yZXN1bHQ7DQogICAgICB9DQogICAgICBy
ZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0KIyAxMzk5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0V1Y2xpZGVh
blJpbmdFbGVtZW50Pg0KICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudA0KICAgIF9fZ2NkKF9FdWNs
aWRlYW5SaW5nRWxlbWVudCBfX20sIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX24pDQogICAgew0K
ICAgICAgd2hpbGUgKF9fbiAhPSAwKSB7DQogICAgICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBf
X3QgPSBfX20gJSBfX247DQogICAgICAgIF9fbSA9IF9fbjsNCiAgICAgICAgX19uID0gX190Ow0K
ICAgICAgfQ0KICAgICAgcmV0dXJuIF9fbTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAgICB2b2lkDQogICAgX19yb3RhdGUoX0ZvcndhcmRJ
dGVyIF9fZmlyc3QsDQogICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlLA0KICAgICAg
ICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQogICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0
b3JfdGFnKQ0KICAgIHsNCiAgICAgIGlmICgoX19maXJzdCA9PSBfX21pZGRsZSkgfHwgKF9fbGFz
dCA9PSBfX21pZGRsZSkpDQogICAgICAgIHJldHVybjsNCg0KICAgICAgX0ZvcndhcmRJdGVyIF9f
Zmlyc3QyID0gX19taWRkbGU7DQogICAgICBkbyB7DQogICAgICAgIHN3YXAoKl9fZmlyc3QrKywg
Kl9fZmlyc3QyKyspOw0KICAgICAgICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkNCiAgICAgICAg
ICBfX21pZGRsZSA9IF9fZmlyc3QyOw0KICAgICAgfSB3aGlsZSAoX19maXJzdDIgIT0gX19sYXN0
KTsNCg0KICAgICAgX19maXJzdDIgPSBfX21pZGRsZTsNCg0KICAgICAgd2hpbGUgKF9fZmlyc3Qy
ICE9IF9fbGFzdCkgew0KICAgICAgICBzd2FwKCpfX2ZpcnN0KyssICpfX2ZpcnN0MisrKTsNCiAg
ICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpDQogICAgICAgICAgX19taWRkbGUgPSBfX2Zp
cnN0MjsNCiAgICAgICAgZWxzZSBpZiAoX19maXJzdDIgPT0gX19sYXN0KQ0KICAgICAgICAgIF9f
Zmlyc3QyID0gX19taWRkbGU7DQogICAgICB9DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXI+DQogICAgdm9pZA0KICAgIF9fcm90YXRlKF9C
aWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LA0KICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRl
ciBfX21pZGRsZSwNCiAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LA0KICAg
ICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykNCiAgICB7DQoNCiAgICAgDQoN
Cg0KICAgICAgaWYgKChfX2ZpcnN0ID09IF9fbWlkZGxlKSB8fCAoX19sYXN0ID09IF9fbWlkZGxl
KSkNCiAgICAgICAgcmV0dXJuOw0KDQogICAgICBfX3JldmVyc2UoX19maXJzdCwgX19taWRkbGUs
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOw0KICAgICAgX19yZXZlcnNlKF9fbWlkZGxl
LCBfX2xhc3QsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOw0KDQogICAgICB3aGlsZSAo
X19maXJzdCAhPSBfX21pZGRsZSAmJiBfX21pZGRsZSAhPSBfX2xhc3QpDQogICAgICAgIHN3YXAg
KCpfX2ZpcnN0KyssICotLV9fbGFzdCk7DQoNCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxl
KSB7DQogICAgICAgIF9fcmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yX3RhZygpKTsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICBfX3JldmVyc2Uo
X19maXJzdCwgX19taWRkbGUsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOw0KICAgICAg
fQ0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0
ZXI+DQogICAgdm9pZA0KICAgIF9fcm90YXRlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsDQog
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUsDQogICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0KICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnKQ0KICAgIHsNCg0KICAgICANCg0KDQogICAgICBpZiAoKF9fZmlyc3QgPT0gX19taWRk
bGUpIHx8IChfX2xhc3QgPT0gX19taWRkbGUpKQ0KICAgICAgICByZXR1cm47DQoNCiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6ZGlmZmVy
ZW5jZV90eXBlIF9EaXN0YW5jZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOw0KDQogICAgICBf
RGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19maXJzdDsNCiAgICAgIF9EaXN0YW5jZSBfX2sgPSBf
X21pZGRsZSAtIF9fZmlyc3Q7DQogICAgICBfRGlzdGFuY2UgX19sID0gX19uIC0gX19rOw0KDQog
ICAgICBpZiAoX19rID09IF9fbCkgew0KICAgICAgICBzd2FwX3JhbmdlcyhfX2ZpcnN0LCBfX21p
ZGRsZSwgX19taWRkbGUpOw0KICAgICAgICByZXR1cm47DQogICAgICB9DQoNCiAgICAgIF9EaXN0
YW5jZSBfX2QgPSBfX2djZChfX24sIF9fayk7DQoNCiAgICAgIGZvciAoX0Rpc3RhbmNlIF9faSA9
IDA7IF9faSA8IF9fZDsgX19pKyspIHsNCiAgICAgICAgX1ZhbHVlVHlwZSBfX3RtcCA9ICpfX2Zp
cnN0Ow0KICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3AgPSBfX2ZpcnN0Ow0KDQogICAgICAg
IGlmIChfX2sgPCBfX2wpIHsNCiAgICAgICAgICBmb3IgKF9EaXN0YW5jZSBfX2ogPSAwOyBfX2og
PCBfX2wvX19kOyBfX2orKykgew0KICAgICAgICAgICAgaWYgKF9fcCA+IF9fZmlyc3QgKyBfX2wp
IHsNCiAgICAgICAgICAgICAgKl9fcCA9ICooX19wIC0gX19sKTsNCiAgICAgICAgICAgICAgX19w
IC09IF9fbDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgKl9fcCA9ICooX19wICsgX19r
KTsNCiAgICAgICAgICAgIF9fcCArPSBfX2s7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAg
ICAgICAgZWxzZSB7DQogICAgICAgICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19r
L19fZCAtIDE7IF9faiArKykgew0KICAgICAgICAgICAgaWYgKF9fcCA8IF9fbGFzdCAtIF9faykg
ew0KICAgICAgICAgICAgICAqX19wID0gKihfX3AgKyBfX2spOw0KICAgICAgICAgICAgICBfX3Ag
Kz0gX19rOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAqX19wID0gKiAoX19wIC0gX19s
KTsNCiAgICAgICAgICAgIF9fcCAtPSBfX2w7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAg
ICAgICAgKl9fcCA9IF9fdG1wOw0KICAgICAgICArK19fZmlyc3Q7DQogICAgICB9DQogICAgfQ0K
IyAxNTYxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgi
IDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyPg0KICAgIGlubGluZSB2b2lkDQog
ICAgcm90YXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19taWRkbGUsIF9G
b3J3YXJkSXRlciBfX2xhc3QpDQogICAgew0KDQogICAgIA0KDQogICAgICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfSXRl
clR5cGU7DQogICAgICBfX3JvdGF0ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfSXRlclR5
cGUoKSk7DQogICAgfQ0KIyAxNTg5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBl
bmFtZSBfT3V0cHV0SXRlcj4NCiAgICBfT3V0cHV0SXRlcg0KICAgIHJvdGF0ZV9jb3B5KF9Gb3J3
YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19taWRkbGUsDQogICAgICAgICAgICAgICAg
X0ZvcndhcmRJdGVyIF9fbGFzdCwgX091dHB1dEl0ZXIgX19yZXN1bHQpDQogICAgew0KDQogICAg
IA0KICAgICANCg0KDQogICAgICByZXR1cm4gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgY29weShf
X21pZGRsZSwgX19sYXN0LCBfX3Jlc3VsdCkpOw0KICAgIH0NCiMgMTYxMiAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9EaXN0YW5jZT4NCiAgICBpbmxpbmUgX0Rpc3RhbmNlDQogICAgX19yYW5kb21fbnVtYmVy
KF9EaXN0YW5jZSBfX24pDQogICAgew0KDQoNCg0KICAgICAgcmV0dXJuIHJhbmQoKSAlIF9fbjsN
Cg0KICAgIH0NCiMgMTYzNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9z
dGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0KICAg
IGlubGluZSB2b2lkDQogICAgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQ0KICAgIHsNCg0KICAgICANCg0KDQogICAgICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsNCiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0
ZXIgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQ0KICAgICAgICBpdGVy
X3N3YXAoX19pLCBfX2ZpcnN0ICsgX19yYW5kb21fbnVtYmVyKChfX2kgLSBfX2ZpcnN0KSArIDEp
KTsNCiAgICB9DQojIDE2NjAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
c3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlw
ZW5hbWUgX1JhbmRvbU51bWJlckdlbmVyYXRvcj4NCiAgICB2b2lkDQogICAgcmFuZG9tX3NodWZm
bGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0K
ICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fcmFuZCkNCiAgICB7
DQoNCiAgICAgDQoNCg0KICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47DQogICAg
ICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0
OyArK19faSkNCiAgICAgICAgaXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9fcmFuZCgoX19pIC0g
X19maXJzdCkgKyAxKSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4NCiAgICBfRm9yd2FyZEl0ZXINCiAg
ICBfX3BhcnRpdGlvbihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwN
CiAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwNCiAgICAgICAgICAgICAgICBmb3J3
YXJkX2l0ZXJhdG9yX3RhZykNCiAgICB7DQogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJl
dHVybiBfX2ZpcnN0Ow0KDQogICAgICB3aGlsZSAoX19wcmVkKCpfX2ZpcnN0KSkNCiAgICAgICAg
aWYgKCsrX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0Ow0KDQogICAgICBfRm9yd2Fy
ZEl0ZXIgX19uZXh0ID0gX19maXJzdDsNCg0KICAgICAgd2hpbGUgKCsrX19uZXh0ICE9IF9fbGFz
dCkNCiAgICAgICAgaWYgKF9fcHJlZCgqX19uZXh0KSkgew0KICAgICAgICAgIHN3YXAoKl9fZmly
c3QsICpfX25leHQpOw0KICAgICAgICAgICsrX19maXJzdDsNCiAgICAgICAgfQ0KDQogICAgICBy
ZXR1cm4gX19maXJzdDsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9C
aWRpcmVjdGlvbmFsSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4NCiAgICBfQmlkaXJlY3Rpb25h
bEl0ZXINCiAgICBfX3BhcnRpdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGly
ZWN0aW9uYWxJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwN
CiAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykNCiAgICB7DQogICAg
ICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICB3aGlsZSAodHJ1ZSkNCiAgICAgICAgICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpDQogICAgICAgICAgICByZXR1cm4gX19maXJzdDsNCiAgICAgICAgICBl
bHNlIGlmIChfX3ByZWQoKl9fZmlyc3QpKQ0KICAgICAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAg
ICAgIGVsc2UNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAtLV9fbGFzdDsNCiAgICAgICAg
d2hpbGUgKHRydWUpDQogICAgICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQ0KICAgICAgICAg
ICAgcmV0dXJuIF9fZmlyc3Q7DQogICAgICAgICAgZWxzZSBpZiAoIV9fcHJlZCgqX19sYXN0KSkN
CiAgICAgICAgICAgIC0tX19sYXN0Ow0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsNCiAgICAgICAgKytfX2ZpcnN0
Ow0KICAgICAgfQ0KICAgIH0NCiMgMTc0OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwg
dHlwZW5hbWUgX1ByZWRpY2F0ZT4NCiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyDQogICAgcGFydGl0
aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LA0KICAgICAgICAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAg
IHJldHVybiBfX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVyYXRvcl9j
YXRlZ29yeShfX2ZpcnN0KSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwgdHlwZW5hbWUgX0Rpc3RhbmNl
Pg0KICAgIF9Gb3J3YXJkSXRlcg0KICAgIF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9Gb3J3
YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBfRGlzdGFuY2UgX19sZW4pDQogICAgew0K
ICAgICAgaWYgKF9fbGVuID09IDEpDQogICAgICAgIHJldHVybiBfX3ByZWQoKl9fZmlyc3QpID8g
X19sYXN0IDogX19maXJzdDsNCiAgICAgIF9Gb3J3YXJkSXRlciBfX21pZGRsZSA9IF9fZmlyc3Q7
DQogICAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2xlbiAvIDIpOw0KICAgICAgX0ZvcndhcmRJdGVy
IF9fYmVnaW4gPSBfX2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlvbihfX2ZpcnN0LCBfX21pZGRsZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19wcmVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xlbiAvIDIpOw0KICAgICAgX0ZvcndhcmRJdGVyIF9fZW5kID0gX19pbnBsYWNl
X3N0YWJsZV9wYXJ0aXRpb24oX19taWRkbGUsIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHJlZCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuIC0gX19sZW4gLyAy
KTsNCiAgICAgIHJvdGF0ZShfX2JlZ2luLCBfX21pZGRsZSwgX19lbmQpOw0KICAgICAgYWR2YW5j
ZShfX2JlZ2luLCBkaXN0YW5jZShfX21pZGRsZSwgX19lbmQpKTsNCiAgICAgIHJldHVybiBfX2Jl
Z2luOw0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy
LCB0eXBlbmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX1ByZWRpY2F0ZSwNCiAgICAgICAgICAgdHlw
ZW5hbWUgX0Rpc3RhbmNlPg0KICAgIF9Gb3J3YXJkSXRlcg0KICAgIF9fc3RhYmxlX3BhcnRpdGlv
bl9hZGFwdGl2ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0YW5j
ZSBfX2xlbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BvaW50ZXIgX19idWZm
ZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9z
aXplKQ0KICAgIHsNCiAgICAgIGlmIChfX2xlbiA8PSBfX2J1ZmZlcl9zaXplKSB7DQogICAgICAg
IF9Gb3J3YXJkSXRlciBfX3Jlc3VsdDEgPSBfX2ZpcnN0Ow0KICAgICAgICBfUG9pbnRlciBfX3Jl
c3VsdDIgPSBfX2J1ZmZlcjsNCiAgICAgICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdCA7ICsr
X19maXJzdCkNCiAgICAgICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkgew0KICAgICAgICAgICAg
Kl9fcmVzdWx0MSA9ICpfX2ZpcnN0Ow0KICAgICAgICAgICAgKytfX3Jlc3VsdDE7DQogICAgICAg
ICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgKl9fcmVzdWx0MiA9ICpfX2ZpcnN0
Ow0KICAgICAgICAgICAgKytfX3Jlc3VsdDI7DQogICAgICAgICAgfQ0KICAgICAgICBjb3B5KF9f
YnVmZmVyLCBfX3Jlc3VsdDIsIF9fcmVzdWx0MSk7DQogICAgICAgIHJldHVybiBfX3Jlc3VsdDE7
DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlID0g
X19maXJzdDsNCiAgICAgICAgYWR2YW5jZShfX21pZGRsZSwgX19sZW4gLyAyKTsNCiAgICAgICAg
X0ZvcndhcmRJdGVyIF9fYmVnaW4gPSBfX3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUoX19maXJz
dCwgX19taWRkbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcHJlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4gLyAyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1ZmZlciwgX19idWZm
ZXJfc2l6ZSk7DQogICAgICAgIF9Gb3J3YXJkSXRlciBfX2VuZCA9IF9fc3RhYmxlX3BhcnRpdGlv
bl9hZGFwdGl2ZSggX19taWRkbGUsIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ByZWQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4gLSBfX2xlbiAv
IDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOw0KICAgICAgICByb3RhdGUoX19iZWdpbiwg
X19taWRkbGUsIF9fZW5kKTsNCiAgICAgICAgYWR2YW5jZShfX2JlZ2luLCBkaXN0YW5jZShfX21p
ZGRsZSwgX19lbmQpKTsNCiAgICAgICAgcmV0dXJuIF9fYmVnaW47DQogICAgICB9DQogICAgfQ0K
IyAxODQ4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgi
IDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfUHJlZGljYXRl
Pg0KICAgIF9Gb3J3YXJkSXRlcg0KICAgIHN0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICBfUHJlZGlj
YXRlIF9fcHJlZCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkNCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7DQogICAgICBlbHNlDQogICAgICB7
DQogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46
OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsNCiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0ZvcndhcmRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZVR5cGU7DQoN
CiAgICAgICAgX1RlbXBvcmFyeV9idWZmZXI8X0ZvcndhcmRJdGVyLCBfVmFsdWVUeXBlPiBfX2J1
ZihfX2ZpcnN0LCBfX2xhc3QpOw0KICAgICAgICBpZiAoX19idWYuc2l6ZSgpID4gMCkNCiAgICAg
ICAgICByZXR1cm4gX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwg
X19wcmVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rp
c3RhbmNlVHlwZShfX2J1Zi5yZXF1ZXN0ZWRfc2l6ZSgpKSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVmLmJlZ2luKCksIF9fYnVmLnNpemUoKSk7DQog
ICAgICAgIGVsc2UNCiAgICAgICAgICByZXR1cm4gX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24o
X19maXJzdCwgX19sYXN0LCBfX3ByZWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9EaXN0YW5jZVR5cGUoX19idWYucmVxdWVzdGVkX3NpemUoKSkpOw0KICAg
ICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vz
c0l0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICBfUmFuZG9tQWNjZXNzSXRlcg0KICAgIF9fdW5ndWFy
ZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCBfX3Bpdm90KQ0KICAgIHsN
CiAgICAgIHdoaWxlICh0cnVlKSB7DQogICAgICAgIHdoaWxlICgqX19maXJzdCA8IF9fcGl2b3Qp
DQogICAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAgICAtLV9fbGFzdDsNCiAgICAgICAgd2hpbGUg
KF9fcGl2b3QgPCAqX19sYXN0KQ0KICAgICAgICAgIC0tX19sYXN0Ow0KICAgICAgICBpZiAoIShf
X2ZpcnN0IDwgX19sYXN0KSkNCiAgICAgICAgICByZXR1cm4gX19maXJzdDsNCiAgICAgICAgaXRl
cl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICAgICsrX19maXJzdDsNCiAgICAgIH0NCiAg
ICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0
eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAgIF9SYW5kb21BY2Nlc3NJdGVyDQog
ICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1RwIF9fcGl2
b3QsIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQogICAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAg
ICB3aGlsZSAoX19jb21wKCpfX2ZpcnN0LCBfX3Bpdm90KSkNCiAgICAgICAgICArK19fZmlyc3Q7
DQogICAgICAgIC0tX19sYXN0Ow0KICAgICAgICB3aGlsZSAoX19jb21wKF9fcGl2b3QsICpfX2xh
c3QpKQ0KICAgICAgICAgIC0tX19sYXN0Ow0KICAgICAgICBpZiAoIShfX2ZpcnN0IDwgX19sYXN0
KSkNCiAgICAgICAgICByZXR1cm4gX19maXJzdDsNCiAgICAgICAgaXRlcl9zd2FwKF9fZmlyc3Qs
IF9fbGFzdCk7DQogICAgICAgICsrX19maXJzdDsNCiAgICAgIH0NCiAgICB9DQojIDE5MjkgInQ6
L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICBlbnVt
IHsgX01fdGhyZXNob2xkID0gMTYgfTsNCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9UcD4NCiAgICB2b2lkDQogICAgX191bmd1YXJk
ZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCBfX3ZhbCkNCiAg
ICB7DQogICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX25leHQgPSBfX2xhc3Q7DQogICAgICAtLV9f
bmV4dDsNCiAgICAgIHdoaWxlIChfX3ZhbCA8ICpfX25leHQpIHsNCiAgICAgICAgKl9fbGFzdCA9
ICpfX25leHQ7DQogICAgICAgIF9fbGFzdCA9IF9fbmV4dDsNCiAgICAgICAgLS1fX25leHQ7DQog
ICAgICB9DQogICAgICAqX19sYXN0ID0gX192YWw7DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
Q29tcGFyZT4NCiAgICB2b2lkDQogICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfUmFuZG9t
QWNjZXNzSXRlciBfX2xhc3QsIF9UcCBfX3ZhbCwgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsNCiAgICAgIC0tX19uZXh0Ow0K
ICAgICAgd2hpbGUgKF9fY29tcChfX3ZhbCwgKl9fbmV4dCkpIHsNCiAgICAgICAgKl9fbGFzdCA9
ICpfX25leHQ7DQogICAgICAgIF9fbGFzdCA9IF9fbmV4dDsNCiAgICAgICAgLS1fX25leHQ7DQog
ICAgICB9DQogICAgICAqX19sYXN0ID0gX192YWw7DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcj4NCiAgICB2b2lkDQogICAgX19pbnNlcnRp
b25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xh
c3QpDQogICAgew0KICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47DQoNCiAgICAg
IGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7
ICsrX19pKQ0KICAgICAgew0KICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRv
bUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9fdmFsID0gKl9faTsNCiAgICAgICAgaWYgKF9fdmFs
IDwgKl9fZmlyc3QpIHsNCiAgICAgICAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9faSwgX19p
ICsgMSk7DQogICAgICAgICAgKl9fZmlyc3QgPSBfX3ZhbDsNCiAgICAgICAgfQ0KICAgICAgICBl
bHNlDQogICAgICAgICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ksIF9fdmFsKTsNCiAg
ICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICB2b2lkDQogICAgX19pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQog
ICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KSByZXR1cm47DQoNCiAgICAgIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19pID0gX19maXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQ0KICAgICAgew0KICAgICAg
ICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBl
IF9fdmFsID0gKl9faTsNCiAgICAgICAgaWYgKF9fY29tcChfX3ZhbCwgKl9fZmlyc3QpKSB7DQog
ICAgICAgICAgY29weV9iYWNrd2FyZChfX2ZpcnN0LCBfX2ksIF9faSArIDEpOw0KICAgICAgICAg
ICpfX2ZpcnN0ID0gX192YWw7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICAgIF9f
dW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX19pLCBfX3ZhbCwgX19jb21wKTsNCiAgICAgIH0NCiAg
ICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0K
ICAgIGlubGluZSB2b2lkDQogICAgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQ0KICAgIHsNCiAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFs
dWVfdHlwZSBfVmFsdWVUeXBlOw0KDQogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9
IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQ0KICAgICAgICBfX3VuZ3VhcmRlZF9saW5l
YXJfaW5zZXJ0KF9faSwgX1ZhbHVlVHlwZSgqX19pKSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+DQog
ICAgaW5saW5lIHZvaWQNCiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNj
ZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBf
VmFsdWVUeXBlOw0KDQogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3Q7
IF9faSAhPSBfX2xhc3Q7ICsrX19pKQ0KICAgICAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0
KF9faSwgX1ZhbHVlVHlwZSgqX19pKSwgX19jb21wKTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0KICAgIHZvaWQNCiAgICBfX2ZpbmFs
X2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fbGFzdCkNCiAgICB7DQogICAgICBpZiAoX19sYXN0IC0gX19maXJzdCA+IF9NX3RocmVz
aG9sZCkgew0KICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBfTV90
aHJlc2hvbGQpOw0KICAgICAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfX2ZpcnN0ICsg
X01fdGhyZXNob2xkLCBfX2xhc3QpOw0KICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgICBfX2lu
c2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAg
dm9pZA0KICAgIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAgIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gX01f
dGhyZXNob2xkKSB7DQogICAgICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCAr
IF9NX3RocmVzaG9sZCwgX19jb21wKTsNCiAgICAgICAgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3Nv
cnQoX19maXJzdCArIF9NX3RocmVzaG9sZCwgX19sYXN0LCBfX2NvbXApOw0KICAgICAgfQ0KICAg
ICAgZWxzZQ0KICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21w
KTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9TaXplPg0KICAgIGlu
bGluZSBfU2l6ZQ0KICAgIF9fbGcoX1NpemUgX19uKQ0KICAgIHsNCiAgICAgIF9TaXplIF9fazsN
CiAgICAgIGZvciAoX19rID0gMDsgX19uICE9IDE7IF9fbiA+Pj0gMSkgKytfX2s7DQogICAgICBy
ZXR1cm4gX19rOw0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRv
bUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9TaXplPg0KICAgIHZvaWQNCiAgICBfX2ludHJvc29ydF9s
b29wKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwN
CiAgICAgICAgICAgICAgICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQpDQogICAgew0KICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1
ZV90eXBlIF9WYWx1ZVR5cGU7DQoNCiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gX01f
dGhyZXNob2xkKSB7DQogICAgICAgIGlmIChfX2RlcHRoX2xpbWl0ID09IDApIHsNCiAgICAgICAg
ICBwYXJ0aWFsX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2xhc3QpOw0KICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KICAgICAgICAtLV9fZGVwdGhfbGltaXQ7DQogICAgICAgIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fY3V0ID0NCiAgICAgICAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJz
dCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVmFsdWVUeXBlKF9f
bWVkaWFuKCpfX2ZpcnN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8yKSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEp
KSkpOw0KICAgICAgICBfX2ludHJvc29ydF9sb29wKF9fY3V0LCBfX2xhc3QsIF9fZGVwdGhfbGlt
aXQpOw0KICAgICAgICBfX2xhc3QgPSBfX2N1dDsNCiAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBlbmFtZSBfU2l6ZSwg
dHlwZW5hbWUgX0NvbXBhcmU+DQogICAgdm9pZA0KICAgIF9faW50cm9zb3J0X2xvb3AoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0KICAgICAgICAg
ICAgICAgICAgICAgX1NpemUgX19kZXB0aF9saW1pdCwgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
Pjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOw0KDQogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJz
dCA+IF9NX3RocmVzaG9sZCkgew0KICAgICAgICBpZiAoX19kZXB0aF9saW1pdCA9PSAwKSB7DQog
ICAgICAgICAgcGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0LCBfX2NvbXApOw0K
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICAtLV9fZGVwdGhfbGltaXQ7DQog
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0NCiAgICAgICAgICBfX3VuZ3VhcmRlZF9w
YXJ0aXRpb24oX19maXJzdCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfVmFsdWVUeXBlKF9fbWVkaWFuKCpfX2ZpcnN0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0
KS8yKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqKF9fbGFzdCAtIDEpLCBfX2NvbXApKSwNCiAgICAgICAgICAgX19jb21wKTsNCiAgICAgICAg
X19pbnRyb3NvcnRfbG9vcChfX2N1dCwgX19sYXN0LCBfX2RlcHRoX2xpbWl0LCBfX2NvbXApOw0K
ICAgICAgICBfX2xhc3QgPSBfX2N1dDsNCiAgICAgIH0NCiAgICB9DQojIDIxNjYgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcj4NCiAgICBpbmxpbmUgdm9pZA0KICAgIHNvcnQoX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQ0KICAgIHsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVy
Pjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOw0KDQoNCiAgICAgDQoNCiAgICAgDQoNCiAgICAgIGlm
IChfX2ZpcnN0ICE9IF9fbGFzdCkgew0KICAgICAgICBfX2ludHJvc29ydF9sb29wKF9fZmlyc3Qs
IF9fbGFzdCwgX19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIpOw0KICAgICAgICBfX2ZpbmFsX2lu
c2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICB9DQogICAgfQ0KIyAyMTk3ICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAg
IGlubGluZSB2b2lkDQogICAgc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQogICAgICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUg
X1ZhbHVlVHlwZTsNCg0KDQogICAgIA0KDQogICAgIA0KDQogICAgICBpZiAoX19maXJzdCAhPSBf
X2xhc3QpIHsNCiAgICAgICAgX19pbnRyb3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fbGco
X19sYXN0IC0gX19maXJzdCkgKiAyLCBfX2NvbXApOw0KICAgICAgICBfX2ZpbmFsX2luc2VydGlv
bl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsNCiAgICAgIH0NCiAgICB9DQoNCg0KDQoN
Cg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXI+DQogICAgdm9pZA0K
ICAgIF9faW5wbGFjZV9zdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QpDQogICAgew0KICAgICAgaWYgKF9fbGFzdCAtIF9fZmlyc3Qg
PCAxNSkgew0KICAgICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7DQogICAg
ICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlID0g
X19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KSAvIDI7DQogICAgICBfX2lucGxhY2Vfc3RhYmxl
X3NvcnQoX19maXJzdCwgX19taWRkbGUpOw0KICAgICAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
bWlkZGxlLCBfX2xhc3QpOw0KICAgICAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBf
X21pZGRsZSwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21pZGRsZSAt
IF9fZmlyc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGFzdCAtIF9fbWlkZGxl
KTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJ
dGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICB2b2lkDQogICAgX19pbnBsYWNlX3N0YWJsZV9z
b3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAg
IGlmIChfX2xhc3QgLSBfX2ZpcnN0IDwgMTUpIHsNCiAgICAgICAgX19pbnNlcnRpb25fc29ydChf
X2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlID0gX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0
KSAvIDI7DQogICAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19maXJzdCwgX19taWRkbGUsIF9f
Y29tcCk7DQogICAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFzdCwgX19j
b21wKTsNCiAgICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9f
bGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUgLSBfX2ZpcnN0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xhc3QgLSBfX21pZGRsZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXIxLCB0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcjIsDQogICAg
ICAgICAgIHR5cGVuYW1lIF9EaXN0YW5jZT4NCiAgICB2b2lkDQogICAgX19tZXJnZV9zb3J0X2xv
b3AoX1JhbmRvbUFjY2Vzc0l0ZXIxIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyMSBfX2xhc3Qs
DQogICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIyIF9fcmVzdWx0LCBfRGlz
dGFuY2UgX19zdGVwX3NpemUpDQogICAgew0KICAgICAgX0Rpc3RhbmNlIF9fdHdvX3N0ZXAgPSAy
ICogX19zdGVwX3NpemU7DQoNCiAgICAgIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fdHdv
X3N0ZXApIHsNCiAgICAgICAgX19yZXN1bHQgPSBtZXJnZShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19z
dGVwX3NpemUsDQogICAgICAgICAgICAgICAgICAgICAgICAgX19maXJzdCArIF9fc3RlcF9zaXpl
LCBfX2ZpcnN0ICsgX190d29fc3RlcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3Vs
dCk7DQogICAgICAgIF9fZmlyc3QgKz0gX190d29fc3RlcDsNCiAgICAgIH0NCg0KICAgICAgX19z
dGVwX3NpemUgPSBtaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7
DQogICAgICBtZXJnZShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fZmlyc3QgKyBf
X3N0ZXBfc2l6ZSwgX19sYXN0LA0KICAgICAgICAgICAgX19yZXN1bHQpOw0KICAgIH0NCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcjEsIHR5cGVuYW1lIF9SYW5kb21BY2Nl
c3NJdGVyMiwNCiAgICAgICAgICAgdHlwZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfQ29tcGFy
ZT4NCiAgICB2b2lkDQogICAgX19tZXJnZV9zb3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIxIF9f
Zmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyMSBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIyIF9fcmVzdWx0LCBfRGlzdGFuY2UgX19zdGVwX3NpemUsDQogICAg
ICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAgIF9EaXN0YW5j
ZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOw0KDQogICAgICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+PSBfX3R3b19zdGVwKSB7DQogICAgICAgIF9fcmVzdWx0ID0gbWVyZ2UoX19maXJz
dCwgX19maXJzdCArIF9fc3RlcF9zaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmly
c3QgKyBfX3N0ZXBfc2l6ZSwgX19maXJzdCArIF9fdHdvX3N0ZXAsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsNCiAg
ICAgICAgX19maXJzdCArPSBfX3R3b19zdGVwOw0KICAgICAgfQ0KICAgICAgX19zdGVwX3NpemUg
PSBtaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7DQoNCiAgICAg
IG1lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwNCiAgICAgICAgICAgIF9fZmly
c3QgKyBfX3N0ZXBfc2l6ZSwgX19sYXN0LA0KICAgICAgICAgICAgX19yZXN1bHQsDQogICAgICAg
ICAgICBfX2NvbXApOw0KICAgIH0NCg0KICBlbnVtIHsgX01fY2h1bmtfc2l6ZSA9IDcgfTsNCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0Rpc3RhbmNl
Pg0KICAgIHZvaWQNCiAgICBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9EaXN0YW5jZSBfX2NodW5rX3NpemUpDQogICAgew0KICAgICAgd2hpbGUgKF9fbGFz
dCAtIF9fZmlyc3QgPj0gX19jaHVua19zaXplKSB7DQogICAgICAgIF9faW5zZXJ0aW9uX3NvcnQo
X19maXJzdCwgX19maXJzdCArIF9fY2h1bmtfc2l6ZSk7DQogICAgICAgIF9fZmlyc3QgKz0gX19j
aHVua19zaXplOw0KICAgICAgfQ0KICAgICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xh
c3QpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlw
ZW5hbWUgX0Rpc3RhbmNlLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICB2b2lkDQogICAgX19jaHVu
a19pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19jaHVu
a19zaXplLCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgd2hpbGUgKF9fbGFzdCAtIF9f
Zmlyc3QgPj0gX19jaHVua19zaXplKSB7DQogICAgICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJz
dCwgX19maXJzdCArIF9fY2h1bmtfc2l6ZSwgX19jb21wKTsNCiAgICAgICAgX19maXJzdCArPSBf
X2NodW5rX3NpemU7DQogICAgICB9DQogICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9f
bGFzdCwgX19jb21wKTsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vz
c0l0ZXIsIHR5cGVuYW1lIF9Qb2ludGVyPg0KICAgIHZvaWQNCiAgICBfX21lcmdlX3NvcnRfd2l0
aF9idWZmZXIoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlcikNCiAg
ICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2U7DQoNCiAgICAgIF9EaXN0YW5jZSBfX2xl
biA9IF9fbGFzdCAtIF9fZmlyc3Q7DQogICAgICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19i
dWZmZXIgKyBfX2xlbjsNCg0KICAgICAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX01fY2h1bmtf
c2l6ZTsNCiAgICAgIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0
ZXBfc2l6ZSk7DQoNCiAgICAgIHdoaWxlIChfX3N0ZXBfc2l6ZSA8IF9fbGVuKSB7DQogICAgICAg
IF9fbWVyZ2Vfc29ydF9sb29wKF9fZmlyc3QsIF9fbGFzdCwgX19idWZmZXIsIF9fc3RlcF9zaXpl
KTsNCiAgICAgICAgX19zdGVwX3NpemUgKj0gMjsNCiAgICAgICAgX19tZXJnZV9zb3J0X2xvb3Ao
X19idWZmZXIsIF9fYnVmZmVyX2xhc3QsIF9fZmlyc3QsIF9fc3RlcF9zaXplKTsNCiAgICAgICAg
X19zdGVwX3NpemUgKj0gMjsNCiAgICAgIH0NCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Qb2ludGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4N
CiAgICB2b2lkDQogICAgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIsIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQogICAg
ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OmRp
ZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2U7DQoNCiAgICAgIF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFz
dCAtIF9fZmlyc3Q7DQogICAgICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19idWZmZXIgKyBf
X2xlbjsNCg0KICAgICAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX01fY2h1bmtfc2l6ZTsNCiAg
ICAgIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0ZXBfc2l6ZSwg
X19jb21wKTsNCg0KICAgICAgd2hpbGUgKF9fc3RlcF9zaXplIDwgX19sZW4pIHsNCiAgICAgICAg
X19tZXJnZV9zb3J0X2xvb3AoX19maXJzdCwgX19sYXN0LCBfX2J1ZmZlciwgX19zdGVwX3NpemUs
IF9fY29tcCk7DQogICAgICAgIF9fc3RlcF9zaXplICo9IDI7DQogICAgICAgIF9fbWVyZ2Vfc29y
dF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LCBfX3N0ZXBfc2l6ZSwgX19j
b21wKTsNCiAgICAgICAgX19zdGVwX3NpemUgKj0gMjsNCiAgICAgIH0NCiAgICB9DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Qb2ludGVyLCB0eXBl
bmFtZSBfRGlzdGFuY2U+DQogICAgdm9pZA0KICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZl
cl9zaXplKQ0KICAgIHsNCiAgICAgIF9EaXN0YW5jZSBfX2xlbiA9IChfX2xhc3QgLSBfX2ZpcnN0
ICsgMSkgLyAyOw0KICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUgPSBfX2ZpcnN0ICsg
X19sZW47DQogICAgICBpZiAoX19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7DQogICAgICAgIF9fc3Rh
YmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZlcl9z
aXplKTsNCiAgICAgICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfX21pZGRsZSwgX19sYXN0LCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAg
X19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlcik7DQog
ICAgICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZl
cik7DQogICAgICB9DQogICAgICBfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X2xhc3QsIF9EaXN0YW5jZShfX21pZGRsZSAtIF9fZmlyc3QpLA0KICAgICAgICAgICAgICAgICAg
ICAgICBfRGlzdGFuY2UoX19sYXN0IC0gX19taWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6
ZSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyLCB0eXBl
bmFtZSBfUG9pbnRlciwgdHlwZW5hbWUgX0Rpc3RhbmNlLA0KICAgICAgICAgICB0eXBlbmFtZSBf
Q29tcGFyZT4NCiAgICB2b2lkDQogICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfUmFuZG9tQWNj
ZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAg
ICAgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3QgKyAxKSAvIDI7DQogICAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9IF9fZmlyc3QgKyBfX2xlbjsNCiAgICAgIGlmIChf
X2xlbiA+IF9fYnVmZmVyX3NpemUpIHsNCiAgICAgICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShf
X2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb21wKTsNCiAgICAgICAgX19zdGFibGVfc29ydF9hZGFwdGl2
ZShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbXApOw0KICAgICAgfQ0KICAgICAgZWxzZSB7DQogICAg
ICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIs
IF9fY29tcCk7DQogICAgICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21pZGRsZSwgX19s
YXN0LCBfX2J1ZmZlciwgX19jb21wKTsNCiAgICAgIH0NCiAgICAgIF9fbWVyZ2VfYWRhcHRpdmUo
X19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX0Rpc3RhbmNlKF9fbWlkZGxlIC0gX19maXJzdCks
DQogICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX2xhc3QgLSBfX21pZGRsZSksIF9f
YnVmZmVyLCBfX2J1ZmZlcl9zaXplLA0KICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOw0K
ICAgIH0NCiMgMjQzMCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
YWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0KICAgIGlu
bGluZSB2b2lkDQogICAgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlOw0K
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+
OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsNCg0KDQogICAgIA0KDQogICAgIA0KDQog
ICAgICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlciwgX1ZhbHVlVHlwZT4gYnVm
KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICBpZiAoYnVmLmJlZ2luKCkgPT0gMCkNCiAgICAgICAg
X19pbnBsYWNlX3N0YWJsZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICBlbHNlDQogICAg
ICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19sYXN0LCBidWYuYmVnaW4oKSwg
X0Rpc3RhbmNlVHlwZShidWYuc2l6ZSgpKSk7DQogICAgfQ0KIyAyNDY2ICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAgIGlubGluZSB2b2lk
DQogICAgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1
ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNj
ZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VUeXBlOw0KDQoNCiAgICAgDQoNCiAg
ICAgDQoNCg0KICAgICAgX1RlbXBvcmFyeV9idWZmZXI8X1JhbmRvbUFjY2Vzc0l0ZXIsIF9WYWx1
ZVR5cGU+IGJ1ZihfX2ZpcnN0LCBfX2xhc3QpOw0KICAgICAgaWYgKGJ1Zi5iZWdpbigpID09IDAp
DQogICAgICAgIF9faW5wbGFjZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7
DQogICAgICBlbHNlDQogICAgICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19s
YXN0LCBidWYuYmVnaW4oKSwgX0Rpc3RhbmNlVHlwZShidWYuc2l6ZSgpKSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbXApOw0KICAgIH0NCiMgMjUwMiAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9SYW5kb21BY2Nlc3NJdGVyPg0KICAgIHZvaWQNCiAgICBwYXJ0aWFsX3NvcnQoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwNCiAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19taWRkbGUsDQogICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkNCiAg
ICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNz
SXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsNCg0KDQogICAgIA0KDQogICAgIA0KDQogICAg
ICBtYWtlX2hlYXAoX19maXJzdCwgX19taWRkbGUpOw0KICAgICAgZm9yIChfUmFuZG9tQWNjZXNz
SXRlciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19faSkNCiAgICAgICAgaWYgKCpf
X2kgPCAqX19maXJzdCkNCiAgICAgICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X2ksIF9WYWx1ZVR5cGUoKl9faSkpOw0KICAgICAgc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxl
KTsNCiAgICB9DQojIDI1NDAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
c3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlw
ZW5hbWUgX0NvbXBhcmU+DQogICAgdm9pZA0KICAgIHBhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LA0KICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRs
ZSwNCiAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LA0KICAgICAgICAg
ICAgICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7
DQoNCg0KICAgICANCg0KICAgICANCg0KDQogICAgICBtYWtlX2hlYXAoX19maXJzdCwgX19taWRk
bGUsIF9fY29tcCk7DQogICAgICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fbWlkZGxl
OyBfX2kgPCBfX2xhc3Q7ICsrX19pKQ0KICAgICAgICBpZiAoX19jb21wKCpfX2ksICpfX2ZpcnN0
KSkNCiAgICAgICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9WYWx1ZVR5
cGUoKl9faSksIF9fY29tcCk7DQogICAgICBzb3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9f
Y29tcCk7DQogICAgfQ0KIyAyNTc5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5h
bWUgX1JhbmRvbUFjY2Vzc0l0ZXI+DQogICAgX1JhbmRvbUFjY2Vzc0l0ZXINCiAgICBwYXJ0aWFs
X3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LA0KICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2ZpcnN0LA0KICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2xhc3QpDQogICAgew0K
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcj46OnZhbHVl
X3R5cGUgX0lucHV0VmFsdWVUeXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9PdXRwdXRWYWx1ZVR5cGU7DQog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46
OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VUeXBlOw0KDQoNCiAgICAgDQogICAgIA0KICAgICAN
CiAgICAgDQoNCiAgICAgIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0KSByZXR1
cm4gX19yZXN1bHRfbGFzdDsNCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X3JlYWxf
bGFzdCA9IF9fcmVzdWx0X2ZpcnN0Ow0KICAgICAgd2hpbGUoX19maXJzdCAhPSBfX2xhc3QgJiYg
X19yZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpIHsNCiAgICAgICAgKl9fcmVzdWx0
X3JlYWxfbGFzdCA9ICpfX2ZpcnN0Ow0KICAgICAgICArK19fcmVzdWx0X3JlYWxfbGFzdDsNCiAg
ICAgICAgKytfX2ZpcnN0Ow0KICAgICAgfQ0KICAgICAgbWFrZV9oZWFwKF9fcmVzdWx0X2ZpcnN0
LCBfX3Jlc3VsdF9yZWFsX2xhc3QpOw0KICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7
DQogICAgICAgIGlmICgqX19maXJzdCA8ICpfX3Jlc3VsdF9maXJzdCkNCiAgICAgICAgICBfX2Fk
anVzdF9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfRGlzdGFuY2VUeXBlKDApLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgX0Rpc3RhbmNlVHlwZShfX3Jlc3VsdF9yZWFsX2xhc3QgLSBfX3Jlc3VsdF9m
aXJzdCksDQogICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRWYWx1ZVR5cGUoKl9fZmlyc3Qp
KTsNCiAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAgfQ0KICAgICAgc29ydF9oZWFwKF9fcmVzdWx0
X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QpOw0KICAgICAgcmV0dXJuIF9fcmVzdWx0X3JlYWxf
bGFzdDsNCiAgICB9DQojIDI2MzMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyLCB0eXBlbmFt
ZSBfUmFuZG9tQWNjZXNzSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgX1JhbmRvbUFjY2Vz
c0l0ZXINCiAgICBwYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVz
dWx0X2ZpcnN0LA0KICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVz
dWx0X2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1
ZV90eXBlIF9JbnB1dFZhbHVlVHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyPjo6dmFsdWVfdHlwZSBfT3V0cHV0VmFsdWVUeXBlOw0K
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+
OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsNCg0KDQogICAgIA0KICAgICANCiAgICAg
DQogICAgIA0KDQoNCiAgICAgIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0KSBy
ZXR1cm4gX19yZXN1bHRfbGFzdDsNCiAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X3Jl
YWxfbGFzdCA9IF9fcmVzdWx0X2ZpcnN0Ow0KICAgICAgd2hpbGUoX19maXJzdCAhPSBfX2xhc3Qg
JiYgX19yZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpIHsNCiAgICAgICAgKl9fcmVz
dWx0X3JlYWxfbGFzdCA9ICpfX2ZpcnN0Ow0KICAgICAgICArK19fcmVzdWx0X3JlYWxfbGFzdDsN
CiAgICAgICAgKytfX2ZpcnN0Ow0KICAgICAgfQ0KICAgICAgbWFrZV9oZWFwKF9fcmVzdWx0X2Zp
cnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QsIF9fY29tcCk7DQogICAgICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsNCiAgICAgICAgaWYgKF9fY29tcCgqX19maXJzdCwgKl9fcmVzdWx0X2ZpcnN0
KSkNCiAgICAgICAgICBfX2FkanVzdF9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfRGlzdGFuY2VUeXBl
KDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlVHlwZShfX3Jlc3VsdF9yZWFs
X2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksDQogICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRW
YWx1ZVR5cGUoKl9fZmlyc3QpLA0KICAgICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsNCiAg
ICAgICAgKytfX2ZpcnN0Ow0KICAgICAgfQ0KICAgICAgc29ydF9oZWFwKF9fcmVzdWx0X2ZpcnN0
LCBfX3Jlc3VsdF9yZWFsX2xhc3QsIF9fY29tcCk7DQogICAgICByZXR1cm4gX19yZXN1bHRfcmVh
bF9sYXN0Ow0KICAgIH0NCiMgMjY4NiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVy
Pg0KICAgIHZvaWQNCiAgICBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LA0K
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLA0KICAgICAgICAgICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkNCiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlw
ZTsNCg0KDQogICAgIA0KICAgICANCg0KICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAz
KSB7DQogICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0NCiAgICAgICAgICBfX3VuZ3Vh
cmRlZF9wYXJ0aXRpb24oX19maXJzdCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfVmFsdWVUeXBlKF9fbWVkaWFuKCpfX2ZpcnN0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBf
X2ZpcnN0KS8yKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqKF9fbGFzdCAtIDEpKSkpOw0KICAgICAgICBpZiAoX19jdXQgPD0gX19udGgpDQog
ICAgICAgICAgX19maXJzdCA9IF9fY3V0Ow0KICAgICAgICBlbHNlDQogICAgICAgICAgX19sYXN0
ID0gX19jdXQ7DQogICAgICB9DQogICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFz
dCk7DQogICAgfQ0KIyAyNzI4ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JhbmRvbUFjY2Vzc0l0ZXIsIHR5
cGVuYW1lIF9Db21wYXJlPg0KICAgIHZvaWQNCiAgICBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LA0KICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLA0K
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1
ZVR5cGU7DQoNCg0KICAgICANCiAgICAgDQoNCg0KICAgICAgd2hpbGUgKF9fbGFzdCAtIF9fZmly
c3QgPiAzKSB7DQogICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0NCiAgICAgICAgICBf
X3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJzdCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfVmFsdWVUeXBlKF9fbWVkaWFuKCpfX2ZpcnN0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xh
c3QgLSBfX2ZpcnN0KS8yKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCkpLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbXApOw0KICAgICAgICBpZiAoX19jdXQgPD0gX19udGgpDQogICAgICAg
ICAgX19maXJzdCA9IF9fY3V0Ow0KICAgICAgICBlbHNlDQogICAgICAgICAgX19sYXN0ID0gX19j
dXQ7DQogICAgICB9DQogICAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19j
b21wKTsNCiAgICB9DQojIDI3NjggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIsIHR5cGVu
YW1lIF9UcD4NCiAgICBfRm9yd2FyZEl0ZXINCiAgICBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXIg
X19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCkNCiAgICB7DQog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1
ZV90eXBlIF9WYWx1ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfRm9yd2FyZEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsNCg0KDQoNCg0K
DQoNCiAgICAgDQogICAgIA0KICAgICANCg0KICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IGRp
c3RhbmNlKF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsNCiAg
ICAgIF9Gb3J3YXJkSXRlciBfX21pZGRsZTsNCg0KICAgICAgd2hpbGUgKF9fbGVuID4gMCkgew0K
ICAgICAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOw0KICAgICAgICBfX21pZGRsZSA9IF9fZmlyc3Q7
DQogICAgICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7DQogICAgICAgIGlmICgqX19taWRk
bGUgPCBfX3ZhbCkgew0KICAgICAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsNCiAgICAgICAgICAr
K19fZmlyc3Q7DQogICAgICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7DQogICAgICAg
IH0NCiAgICAgICAgZWxzZQ0KICAgICAgICAgIF9fbGVuID0gX19oYWxmOw0KICAgICAgfQ0KICAg
ICAgcmV0dXJuIF9fZmlyc3Q7DQogICAgfQ0KIyAyODE2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh
cmRJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAgIF9Gb3J3YXJkSXRl
cg0KICAgIGxvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19s
YXN0LA0KICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkN
CiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0
ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsN
Cg0KDQogICAgIA0KICAgICANCg0KICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IGRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsNCiAgICAgIF9G
b3J3YXJkSXRlciBfX21pZGRsZTsNCg0KICAgICAgd2hpbGUgKF9fbGVuID4gMCkgew0KICAgICAg
ICBfX2hhbGYgPSBfX2xlbiA+PiAxOw0KICAgICAgICBfX21pZGRsZSA9IF9fZmlyc3Q7DQogICAg
ICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7DQogICAgICAgIGlmIChfX2NvbXAoKl9fbWlk
ZGxlLCBfX3ZhbCkpIHsNCiAgICAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7DQogICAgICAgICAg
KytfX2ZpcnN0Ow0KICAgICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOw0KICAgICAg
ICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICBfX2xlbiA9IF9faGFsZjsNCiAgICAgIH0NCiAg
ICAgIHJldHVybiBfX2ZpcnN0Ow0KICAgIH0NCiMgMjg1NiAidDovbXN5cy8xLjAvbWluZ3cvaW5j
bHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3
YXJkSXRlciwgdHlwZW5hbWUgX1RwPg0KICAgIF9Gb3J3YXJkSXRlcg0KICAgIHVwcGVyX2JvdW5k
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9f
dmFsKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3
YXJkSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VU
eXBlOw0KDQoNCg0KICAgICANCiAgICAgDQogICAgIA0KDQogICAgICBfRGlzdGFuY2VUeXBlIF9f
bGVuID0gZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KTsNCiAgICAgIF9EaXN0YW5jZVR5cGUgX19o
YWxmOw0KICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOw0KDQogICAgICB3aGlsZSAoX19sZW4g
PiAwKSB7DQogICAgICAgIF9faGFsZiA9IF9fbGVuID4+IDE7DQogICAgICAgIF9fbWlkZGxlID0g
X19maXJzdDsNCiAgICAgICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsNCiAgICAgICAgaWYg
KF9fdmFsIDwgKl9fbWlkZGxlKQ0KICAgICAgICAgIF9fbGVuID0gX19oYWxmOw0KICAgICAgICBl
bHNlIHsNCiAgICAgICAgICBfX2ZpcnN0ID0gX19taWRkbGU7DQogICAgICAgICAgKytfX2ZpcnN0
Ow0KICAgICAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOw0KICAgICAgICB9DQogICAg
ICB9DQogICAgICByZXR1cm4gX19maXJzdDsNCiAgICB9DQojIDI5MDEgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRm9yd2FyZEl0ZXIsIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgX0Zv
cndhcmRJdGVyDQogICAgdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBhcmUg
X19jb21wKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9G
b3J3YXJkSXRlcj46OnZhbHVlX3R5cGUgX1ZhbHVlVHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFu
Y2VUeXBlOw0KDQoNCiAgICAgDQogICAgIA0KDQogICAgICBfRGlzdGFuY2VUeXBlIF9fbGVuID0g
ZGlzdGFuY2UoX19maXJzdCwgX19sYXN0KTsNCiAgICAgIF9EaXN0YW5jZVR5cGUgX19oYWxmOw0K
ICAgICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOw0KDQogICAgICB3aGlsZSAoX19sZW4gPiAwKSB7
DQogICAgICAgIF9faGFsZiA9IF9fbGVuID4+IDE7DQogICAgICAgIF9fbWlkZGxlID0gX19maXJz
dDsNCiAgICAgICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsNCiAgICAgICAgaWYgKF9fY29t
cChfX3ZhbCwgKl9fbWlkZGxlKSkNCiAgICAgICAgICBfX2xlbiA9IF9faGFsZjsNCiAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgX19maXJzdCA9IF9fbWlkZGxlOw0KICAgICAgICAgICsrX19maXJz
dDsNCiAgICAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsNCiAgICAgICAgfQ0KICAg
ICAgfQ0KICAgICAgcmV0dXJuIF9fZmlyc3Q7DQogICAgfQ0KIyAyOTQ4ICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+DQogICAgcGFpcjxfRm9yd2FyZEl0ZXIsIF9G
b3J3YXJkSXRlcj4NCiAgICBlcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCkNCiAgICB7DQogICAgICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5
cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXI+
OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlVHlwZTsNCg0KDQoNCiAgICAgDQogICAgIA0KICAg
ICANCg0KICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFz
dCk7DQogICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsNCiAgICAgIF9Gb3J3YXJkSXRlciBfX21p
ZGRsZSwgX19sZWZ0LCBfX3JpZ2h0Ow0KDQogICAgICB3aGlsZSAoX19sZW4gPiAwKSB7DQogICAg
ICAgIF9faGFsZiA9IF9fbGVuID4+IDE7DQogICAgICAgIF9fbWlkZGxlID0gX19maXJzdDsNCiAg
ICAgICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsNCiAgICAgICAgaWYgKCpfX21pZGRsZSA8
IF9fdmFsKSB7DQogICAgICAgICAgX19maXJzdCA9IF9fbWlkZGxlOw0KICAgICAgICAgICsrX19m
aXJzdDsNCiAgICAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsNCiAgICAgICAgfQ0K
ICAgICAgICBlbHNlIGlmIChfX3ZhbCA8ICpfX21pZGRsZSkNCiAgICAgICAgICBfX2xlbiA9IF9f
aGFsZjsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgX19sZWZ0ID0gbG93ZXJfYm91bmQoX19m
aXJzdCwgX19taWRkbGUsIF9fdmFsKTsNCiAgICAgICAgICBhZHZhbmNlKF9fZmlyc3QsIF9fbGVu
KTsNCiAgICAgICAgICBfX3JpZ2h0ID0gdXBwZXJfYm91bmQoKytfX21pZGRsZSwgX19maXJzdCwg
X192YWwpOw0KICAgICAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVy
PihfX2xlZnQsIF9fcmlnaHQpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gcGFp
cjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7DQogICAgfQ0K
IyAzMDAzICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgi
IDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHAsIHR5cGVu
YW1lIF9Db21wYXJlPg0KICAgIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+DQogICAg
ZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNv
bnN0IF9UcCYgX192YWwsDQogICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcj46OnZh
bHVlX3R5cGUgX1ZhbHVlVHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9Gb3J3YXJkSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfRGlzdGFuY2VUeXBlOw0KDQoNCiAg
ICAgDQogICAgIA0KICAgICANCg0KICAgICAgX0Rpc3RhbmNlVHlwZSBfX2xlbiA9IGRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCk7DQogICAgICBfRGlzdGFuY2VUeXBlIF9faGFsZjsNCiAgICAgIF9G
b3J3YXJkSXRlciBfX21pZGRsZSwgX19sZWZ0LCBfX3JpZ2h0Ow0KDQogICAgICB3aGlsZSAoX19s
ZW4gPiAwKSB7DQogICAgICAgIF9faGFsZiA9IF9fbGVuID4+IDE7DQogICAgICAgIF9fbWlkZGxl
ID0gX19maXJzdDsNCiAgICAgICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsNCiAgICAgICAg
aWYgKF9fY29tcCgqX19taWRkbGUsIF9fdmFsKSkgew0KICAgICAgICAgIF9fZmlyc3QgPSBfX21p
ZGRsZTsNCiAgICAgICAgICArK19fZmlyc3Q7DQogICAgICAgICAgX19sZW4gPSBfX2xlbiAtIF9f
aGFsZiAtIDE7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoX19jb21wKF9fdmFsLCAqX19t
aWRkbGUpKQ0KICAgICAgICAgIF9fbGVuID0gX19oYWxmOw0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICBfX2xlZnQgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgX192YWwsIF9fY29t
cCk7DQogICAgICAgICAgYWR2YW5jZShfX2ZpcnN0LCBfX2xlbik7DQogICAgICAgICAgX19yaWdo
dCA9IHVwcGVyX2JvdW5kKCsrX19taWRkbGUsIF9fZmlyc3QsIF9fdmFsLCBfX2NvbXApOw0KICAg
ICAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9f
cmlnaHQpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gcGFpcjxfRm9yd2FyZEl0
ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7DQogICAgfQ0KIyAzMDUyICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyLCB0eXBlbmFtZSBfVHA+DQogICAgYm9vbA0KICAgIGJp
bmFyeV9zZWFyY2goX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQog
ICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsKQ0KICAgIHsNCg0KDQogICAgIA0KICAg
ICANCg0KICAgICANCg0KICAgICAgX0ZvcndhcmRJdGVyIF9faSA9IGxvd2VyX2JvdW5kKF9fZmly
c3QsIF9fbGFzdCwgX192YWwpOw0KICAgICAgcmV0dXJuIF9faSAhPSBfX2xhc3QgJiYgIShfX3Zh
bCA8ICpfX2kpOw0KICAgIH0NCiMgMzA4MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwg
dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICBib29sDQogICAgYmluYXJ5X3Nl
YXJjaChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwNCiAgICAgICAg
ICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAg
ICAgDQogICAgIA0KDQogICAgIA0KDQoNCiAgICAgIF9Gb3J3YXJkSXRlciBfX2kgPSBsb3dlcl9i
b3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBfX2NvbXApOw0KICAgICAgcmV0dXJuIF9faSAh
PSBfX2xhc3QgJiYgIV9fY29tcChfX3ZhbCwgKl9faSk7DQogICAgfQ0KIyAzMTE1ICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgiIDMNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0lucHV0SXRlcjEsIHR5cGVuYW1lIF9JbnB1dEl0ZXIyLCB0eXBlbmFtZSBfT3V0
cHV0SXRlcj4NCiAgICBfT3V0cHV0SXRlcg0KICAgIG1lcmdlKF9JbnB1dEl0ZXIxIF9fZmlyc3Qx
LCBfSW5wdXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBf
SW5wdXRJdGVyMiBfX2xhc3QyLA0KICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KQ0KICAg
IHsNCg0KICAgICANCiAgICAgDQogICAgIA0KDQogICAgIA0KDQoNCiAgICAgDQoNCg0KICAgICAg
d2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0Mikgew0KICAg
ICAgICBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKSB7DQogICAgICAgICAgKl9fcmVzdWx0ID0g
Kl9fZmlyc3QyOw0KICAgICAgICAgICsrX19maXJzdDI7DQogICAgICAgIH0NCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOw0KICAgICAgICAgICsrX19maXJz
dDE7DQogICAgICAgIH0NCiAgICAgICAgKytfX3Jlc3VsdDsNCiAgICAgIH0NCiAgICAgIHJldHVy
biBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3Vs
dCkpOw0KICAgIH0NCiMgMzE2NiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0
cy9zdGxfYWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFt
ZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsDQogICAgICAgICAgIHR5cGVuYW1l
IF9Db21wYXJlPg0KICAgIF9PdXRwdXRJdGVyDQogICAgbWVyZ2UoX0lucHV0SXRlcjEgX19maXJz
dDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsDQogICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIs
IF9JbnB1dEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9D
b21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KICAgICANCg0KDQogICAgIA0K
DQogICAgIA0KDQoNCg0KICAgICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJz
dDIgIT0gX19sYXN0Mikgew0KICAgICAgICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3Qx
KSkgew0KICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsNCiAgICAgICAgICArK19fZmly
c3QyOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0MTsNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICB9DQogICAgICAgICsrX19y
ZXN1bHQ7DQogICAgICB9DQogICAgICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19sYXN0MiwgY29w
eShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlciwgdHlwZW5hbWUgX0Rpc3RhbmNlPg0K
ICAgIHZvaWQNCiAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlciBf
X2ZpcnN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
bWlkZGxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
bGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0
YW5jZSBfX2xlbjIpDQogICAgew0KICAgICAgaWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAw
KQ0KICAgICAgICByZXR1cm47DQogICAgICBpZiAoX19sZW4xICsgX19sZW4yID09IDIpIHsNCiAg
ICAgICAgaWYgKCpfX21pZGRsZSA8ICpfX2ZpcnN0KQ0KICAgICAgICAgICAgICBpdGVyX3N3YXAo
X19maXJzdCwgX19taWRkbGUpOw0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0Ow0KICAgICAgX0JpZGlyZWN0aW9u
YWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOw0KICAgICAgX0Rpc3RhbmNlIF9fbGVuMTEg
PSAwOw0KICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOw0KICAgICAgaWYgKF9fbGVuMSA+IF9f
bGVuMikgew0KICAgICAgICBfX2xlbjExID0gX19sZW4xIC8gMjsNCiAgICAgICAgYWR2YW5jZShf
X2ZpcnN0X2N1dCwgX19sZW4xMSk7DQogICAgICAgIF9fc2Vjb25kX2N1dCA9IGxvd2VyX2JvdW5k
KF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCk7DQogICAgICAgIF9fbGVuMjIgPSBkaXN0
YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAg
ICAgICBfX2xlbjIyID0gX19sZW4yIC8gMjsNCiAgICAgICAgYWR2YW5jZShfX3NlY29uZF9jdXQs
IF9fbGVuMjIpOw0KICAgICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9f
bWlkZGxlLCAqX19zZWNvbmRfY3V0KTsNCiAgICAgICAgX19sZW4xMSA9IGRpc3RhbmNlKF9fZmly
c3QsIF9fZmlyc3RfY3V0KTsNCiAgICAgIH0NCiAgICAgIHJvdGF0ZShfX2ZpcnN0X2N1dCwgX19t
aWRkbGUsIF9fc2Vjb25kX2N1dCk7DQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19uZXdfbWlk
ZGxlID0gX19maXJzdF9jdXQ7DQogICAgICBhZHZhbmNlKF9fbmV3X21pZGRsZSwgZGlzdGFuY2Uo
X19taWRkbGUsIF9fc2Vjb25kX2N1dCkpOw0KICAgICAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihf
X2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xlbjExLCBfX2xlbjIyKTsNCiAgICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIo
X19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sZW4xIC0gX19sZW4xMSwgX19sZW4yIC0gX19sZW4yMik7DQogICAgfQ0KDQoN
Cg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIsIHR5cGVuYW1l
IF9EaXN0YW5jZSwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgdm9pZA0KICAgIF9fbWVyZ2Vfd2l0
aG91dF9idWZmZXIoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQogICAgICBpZiAoX19sZW4x
ID09IDAgfHwgX19sZW4yID09IDApDQogICAgICAgIHJldHVybjsNCiAgICAgIGlmIChfX2xlbjEg
KyBfX2xlbjIgPT0gMikgew0KICAgICAgICBpZiAoX19jb21wKCpfX21pZGRsZSwgKl9fZmlyc3Qp
KQ0KICAgICAgICAgICAgICBpdGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOw0KICAgICAgICBy
ZXR1cm47DQogICAgICB9DQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdF9jdXQgPSBf
X2ZpcnN0Ow0KICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxl
Ow0KICAgICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOw0KICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIg
PSAwOw0KICAgICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgew0KICAgICAgICBfX2xlbjExID0gX19s
ZW4xIC8gMjsNCiAgICAgICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7DQogICAgICAg
IF9fc2Vjb25kX2N1dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1
dCwgX19jb21wKTsNCiAgICAgICAgX19sZW4yMiA9IGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29u
ZF9jdXQpOw0KICAgICAgfQ0KICAgICAgZWxzZSB7DQogICAgICAgIF9fbGVuMjIgPSBfX2xlbjIg
LyAyOw0KICAgICAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7DQogICAgICAgIF9f
Zmlyc3RfY3V0ID0gdXBwZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsICpfX3NlY29uZF9jdXQs
IF9fY29tcCk7DQogICAgICAgIF9fbGVuMTEgPSBkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1
dCk7DQogICAgICB9DQogICAgICByb3RhdGUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29u
ZF9jdXQpOw0KICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZSA9IF9fZmlyc3Rf
Y3V0Ow0KICAgICAgYWR2YW5jZShfX25ld19taWRkbGUsIGRpc3RhbmNlKF9fbWlkZGxlLCBfX3Nl
Y29uZF9jdXQpKTsNCiAgICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19maXJz
dF9jdXQsIF9fbmV3X21pZGRsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4x
MSwgX19sZW4yMiwgX19jb21wKTsNCiAgICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdf
bWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19sZW4xIC0gX19sZW4xMSwgX19sZW4yIC0gX19sZW4yMiwgX19jb21wKTsNCiAgICB9DQoN
Cg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjEsIHR5cGVu
YW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsDQogICAgICAgICAgIHR5cGVuYW1lIF9EaXN0YW5jZT4N
CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxDQogICAgX19yb3RhdGVfYWRhcHRpdmUoX0JpZGlyZWN0
aW9uYWxJdGVyMSBfX2ZpcnN0LA0KICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlcjEgX19taWRkbGUsDQogICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
MSBfX2xhc3QsDQogICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3Rh
bmNlIF9fbGVuMiwNCiAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9f
YnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKQ0K
ICAgIHsNCiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19idWZmZXJfZW5kOw0KICAgICAgaWYg
KF9fbGVuMSA+IF9fbGVuMiAmJiBfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkgew0KICAgICAgICBf
X2J1ZmZlcl9lbmQgPSBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyKTsNCiAgICAgICAg
Y29weV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0KTsNCiAgICAgICAgcmV0dXJu
IGNvcHkoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19maXJzdCk7DQogICAgICB9DQogICAgICBl
bHNlIGlmIChfX2xlbjEgPD0gX19idWZmZXJfc2l6ZSkgew0KICAgICAgICBfX2J1ZmZlcl9lbmQg
PSBjb3B5KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlcik7DQogICAgICAgIGNvcHkoX19taWRk
bGUsIF9fbGFzdCwgX19maXJzdCk7DQogICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fYnVm
ZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCk7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAg
ICAgcm90YXRlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOw0KICAgICAgICBhZHZhbmNlKF9f
Zmlyc3QsIGRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QpKTsNCiAgICAgICAgcmV0dXJuIF9fZmly
c3Q7DQogICAgICB9DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlk
aXJlY3Rpb25hbEl0ZXIxLCB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIyLA0KICAgICAgICAg
ICB0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIzPg0KICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMN
CiAgICBfX21lcmdlX2JhY2t3YXJkKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdDEsIF9CaWRp
cmVjdGlvbmFsSXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjIgX19maXJzdDIsIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19sYXN0MiwNCiAgICAgICAg
ICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMgX19yZXN1bHQpDQogICAgew0KICAgICAg
aWYgKF9fZmlyc3QxID09IF9fbGFzdDEpDQogICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9f
Zmlyc3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7DQogICAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0
MikNCiAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVz
dWx0KTsNCiAgICAgIC0tX19sYXN0MTsNCiAgICAgIC0tX19sYXN0MjsNCiAgICAgIHdoaWxlICh0
cnVlKSB7DQogICAgICAgIGlmICgqX19sYXN0MiA8ICpfX2xhc3QxKSB7DQogICAgICAgICAgKi0t
X19yZXN1bHQgPSAqX19sYXN0MTsNCiAgICAgICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkN
CiAgICAgICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3QyLCArK19fbGFzdDIsIF9f
cmVzdWx0KTsNCiAgICAgICAgICAtLV9fbGFzdDE7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7
DQogICAgICAgICAgKi0tX19yZXN1bHQgPSAqX19sYXN0MjsNCiAgICAgICAgICBpZiAoX19maXJz
dDIgPT0gX19sYXN0MikNCiAgICAgICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3Qx
LCArK19fbGFzdDEsIF9fcmVzdWx0KTsNCiAgICAgICAgICAtLV9fbGFzdDI7DQogICAgICAgIH0N
CiAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVj
dGlvbmFsSXRlcjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsDQogICAgICAgICAgIHR5
cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjMsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAgIF9CaWRp
cmVjdGlvbmFsSXRlcjMNCiAgICBfX21lcmdlX2JhY2t3YXJkKF9CaWRpcmVjdGlvbmFsSXRlcjEg
X19maXJzdDEsIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19s
YXN0MiwNCiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMgX19yZXN1bHQs
DQogICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgaWYg
KF9fZmlyc3QxID09IF9fbGFzdDEpDQogICAgICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmly
c3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7DQogICAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikN
CiAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0
KTsNCiAgICAgIC0tX19sYXN0MTsNCiAgICAgIC0tX19sYXN0MjsNCiAgICAgIHdoaWxlICh0cnVl
KSB7DQogICAgICAgIGlmIChfX2NvbXAoKl9fbGFzdDIsICpfX2xhc3QxKSkgew0KICAgICAgICAg
ICotLV9fcmVzdWx0ID0gKl9fbGFzdDE7DQogICAgICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFz
dDEpDQogICAgICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3Qy
LCBfX3Jlc3VsdCk7DQogICAgICAgICAgLS1fX2xhc3QxOw0KICAgICAgICB9DQogICAgICAgIGVs
c2Ugew0KICAgICAgICAgICotLV9fcmVzdWx0ID0gKl9fbGFzdDI7DQogICAgICAgICAgaWYgKF9f
Zmlyc3QyID09IF9fbGFzdDIpDQogICAgICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2Zp
cnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7DQogICAgICAgICAgLS1fX2xhc3QyOw0KICAgICAg
ICB9DQogICAgICB9DQogICAgfQ0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlk
aXJlY3Rpb25hbEl0ZXIsIHR5cGVuYW1lIF9EaXN0YW5jZSwgdHlwZW5hbWUgX1BvaW50ZXI+DQog
ICAgdm9pZA0KICAgIF9fbWVyZ2VfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3Qs
DQogICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsDQogICAg
ICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwNCiAgICAgICAgICAg
ICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkNCiAg
ICB7DQogICAgICAgICAgaWYgKF9fbGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVmZmVy
X3NpemUpIHsNCiAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19maXJz
dCwgX19taWRkbGUsIF9fYnVmZmVyKTsNCiAgICAgICAgICAgIG1lcmdlKF9fYnVmZmVyLCBfX2J1
ZmZlcl9lbmQsIF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QpOw0KICAgICAgICAgIH0NCiAgICAg
ICAgICBlbHNlIGlmIChfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkgew0KICAgICAgICAgICAgX1Bv
aW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7DQog
ICAgICAgICAgICBfX21lcmdlX2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwg
X19idWZmZXJfZW5kLCBfX2xhc3QpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7DQogICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7DQogICAg
ICAgICAgICBfRGlzdGFuY2UgX19sZW4xMSA9IDA7DQogICAgICAgICAgICBfRGlzdGFuY2UgX19s
ZW4yMiA9IDA7DQogICAgICAgICAgICBpZiAoX19sZW4xID4gX19sZW4yKSB7DQogICAgICAgICAg
ICAgICAgICBfX2xlbjExID0gX19sZW4xIC8gMjsNCiAgICAgICAgICAgICAgICAgIGFkdmFuY2Uo
X19maXJzdF9jdXQsIF9fbGVuMTEpOw0KICAgICAgICAgICAgICAgICAgX19zZWNvbmRfY3V0ID0g
bG93ZXJfYm91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0KTsNCiAgICAgICAgICAg
ICAgICAgIF9fbGVuMjIgPSBkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgX19sZW4yMiA9
IF9fbGVuMiAvIDI7DQogICAgICAgICAgICAgICAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19s
ZW4yMik7DQogICAgICAgICAgICAgICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmly
c3QsIF9fbWlkZGxlLCAqX19zZWNvbmRfY3V0KTsNCiAgICAgICAgICAgICAgICAgIF9fbGVuMTEg
PSBkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCk7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19uZXdfbWlkZGxlID0NCiAgICAgICAgICAgICAgICAg
IF9fcm90YXRlX2FkYXB0aXZlKF9fZmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRfY3V0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4xIC0gX19sZW4xMSwgX19s
ZW4yMiwgX19idWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1
ZmZlcl9zaXplKTsNCiAgICAgICAgICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19maXJz
dF9jdXQsIF9fbmV3X21pZGRsZSwgX19sZW4xMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOw0KICAgICAgICAgICAgX19tZXJn
ZV9hZGFwdGl2ZShfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LCBfX2xlbjEgLSBf
X2xlbjExLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlbjIgLSBfX2xlbjIyLCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7DQogICAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyLCB0eXBlbmFtZSBfRGlzdGFu
Y2UsIHR5cGVuYW1lIF9Qb2ludGVyLA0KICAgICAgICAgICB0eXBlbmFtZSBfQ29tcGFyZT4NCiAg
ICB2b2lkDQogICAgX19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwN
CiAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwNCiAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsDQogICAgICAgICAgICAg
ICAgICAgICBfRGlzdGFuY2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yLA0KICAgICAgICAgICAg
ICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplLA0KICAg
ICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCiAgICAgICAgICBpZiAo
X19sZW4xIDw9IF9fbGVuMiAmJiBfX2xlbjEgPD0gX19idWZmZXJfc2l6ZSkgew0KICAgICAgICAg
ICAgX1BvaW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZm
ZXIpOw0KICAgICAgICAgICAgbWVyZ2UoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19taWRkbGUs
IF9fbGFzdCwgX19maXJzdCwgX19jb21wKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBp
ZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpIHsNCiAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVm
ZmVyX2VuZCA9IGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIpOw0KICAgICAgICAgICAg
X19tZXJnZV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVmZmVyX2Vu
ZCwgX19sYXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb21wKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0Ow0KICAgICAgICAgICAgX0JpZGly
ZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOw0KICAgICAgICAgICAgX0Rpc3Rh
bmNlIF9fbGVuMTEgPSAwOw0KICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOw0KICAg
ICAgICAgICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgew0KICAgICAgICAgICAgICAgICAgX19sZW4x
MSA9IF9fbGVuMSAvIDI7DQogICAgICAgICAgICAgICAgICBhZHZhbmNlKF9fZmlyc3RfY3V0LCBf
X2xlbjExKTsNCiAgICAgICAgICAgICAgICAgIF9fc2Vjb25kX2N1dCA9IGxvd2VyX2JvdW5kKF9f
bWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsNCiAgICAgICAgICAgICAgICAg
IF9fbGVuMjIgPSBkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgX19sZW4yMiA9IF9fbGVu
MiAvIDI7DQogICAgICAgICAgICAgICAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7
DQogICAgICAgICAgICAgICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9f
bWlkZGxlLCAqX19zZWNvbmRfY3V0LCBfX2NvbXApOw0KICAgICAgICAgICAgICAgICAgX19sZW4x
MSA9IGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0KTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX25ld19taWRkbGUgPQ0KICAgICAgICAgICAgICAg
ICAgX19yb3RhdGVfYWRhcHRpdmUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xlbjEgLSBfX2xlbjExLCBf
X2xlbjIyLCBfX2J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
YnVmZmVyX3NpemUpOw0KICAgICAgICAgICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX2Zp
cnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgX19jb21wKTsNCiAgICAgICAg
ICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwg
X19sZW4xIC0gX19sZW4xMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4yIC0g
X19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUsIF9fY29tcCk7DQogICAgICAgICAgfQ0K
ICAgIH0NCiMgMzUwOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
YWxnby5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcj4NCiAgICB2
b2lkDQogICAgaW5wbGFjZV9tZXJnZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwNCiAgICAg
ICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwNCiAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyPjo6dmFsdWVfdHlwZQ0KICAg
ICAgICAgIF9WYWx1ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfQmlkaXJlY3Rpb25hbEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUNCiAgICAgICAgICBfRGlzdGFu
Y2VUeXBlOw0KDQoNCiAgICAgDQoNCiAgICAgDQoNCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbWlk
ZGxlIHx8IF9fbWlkZGxlID09IF9fbGFzdCkNCiAgICAgICAgcmV0dXJuOw0KDQogICAgICBfRGlz
dGFuY2VUeXBlIF9fbGVuMSA9IGRpc3RhbmNlKF9fZmlyc3QsIF9fbWlkZGxlKTsNCiAgICAgIF9E
aXN0YW5jZVR5cGUgX19sZW4yID0gZGlzdGFuY2UoX19taWRkbGUsIF9fbGFzdCk7DQoNCiAgICAg
IF9UZW1wb3JhcnlfYnVmZmVyPF9CaWRpcmVjdGlvbmFsSXRlciwgX1ZhbHVlVHlwZT4gX19idWYo
X19maXJzdCwgX19sYXN0KTsNCiAgICAgIGlmIChfX2J1Zi5iZWdpbigpID09IDApDQogICAgICAg
IF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4x
LCBfX2xlbjIpOw0KICAgICAgZWxzZQ0KICAgICAgICBfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3Qs
IF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZVR5cGUoX19idWYuc2l6ZSgpKSk7DQogICAgfQ0K
IyAzNTU5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgi
IDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyLCB0eXBlbmFtZSBfQ29t
cGFyZT4NCiAgICB2b2lkDQogICAgaW5wbGFjZV9tZXJnZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19m
aXJzdCwNCiAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwNCiAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsDQogICAgICAgICAgICAg
ICAgICBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyPjo6dmFsdWVfdHlwZQ0KICAgICAgICAgIF9W
YWx1ZVR5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJl
Y3Rpb25hbEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUNCiAgICAgICAgICBfRGlzdGFuY2VUeXBlOw0K
DQoNCiAgICAgDQoNCiAgICAgDQoNCg0KICAgICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUgfHwg
X19taWRkbGUgPT0gX19sYXN0KQ0KICAgICAgICByZXR1cm47DQoNCiAgICAgIF9EaXN0YW5jZVR5
cGUgX19sZW4xID0gZGlzdGFuY2UoX19maXJzdCwgX19taWRkbGUpOw0KICAgICAgX0Rpc3RhbmNl
VHlwZSBfX2xlbjIgPSBkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0KTsNCg0KICAgICAgX1RlbXBv
cmFyeV9idWZmZXI8X0JpZGlyZWN0aW9uYWxJdGVyLCBfVmFsdWVUeXBlPiBfX2J1ZihfX2ZpcnN0
LCBfX2xhc3QpOw0KICAgICAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkNCiAgICAgICAgX19tZXJn
ZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX2xlbjEsIF9fbGVu
MiwgX19jb21wKTsNCiAgICAgIGVsc2UNCiAgICAgICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0
LCBfX21pZGRsZSwgX19sYXN0LCBfX2xlbjEsIF9fbGVuMiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2J1Zi5iZWdpbigpLCBfRGlzdGFuY2VUeXBlKF9fYnVmLnNpemUoKSksDQogICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb21wKTsNCiAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMj4NCiAgICBib29sDQog
ICAgaW5jbHVkZXMoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsDQog
ICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpDQog
ICAgew0KDQogICAgIA0KICAgICANCiAgICAgDQoNCg0KICAgICANCg0KDQogICAgICB3aGlsZSAo
X19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQ0KICAgICAgICBpZiAo
Kl9fZmlyc3QyIDwgKl9fZmlyc3QxKQ0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAg
ZWxzZSBpZigqX19maXJzdDEgPCAqX19maXJzdDIpDQogICAgICAgICAgKytfX2ZpcnN0MTsNCiAg
ICAgICAgZWxzZQ0KICAgICAgICAgICsrX19maXJzdDEsICsrX19maXJzdDI7DQoNCiAgICAgIHJl
dHVybiBfX2ZpcnN0MiA9PSBfX2xhc3QyOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
SW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5cGVuYW1lIF9Db21wYXJlPg0KICAg
IGJvb2wNCiAgICBpbmNsdWRlcyhfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19s
YXN0MSwNCiAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQogICAgIA0KDQoN
CiAgICAgDQoNCg0KDQogICAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0
MiAhPSBfX2xhc3QyKQ0KICAgICAgICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkN
CiAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGVsc2UgaWYoX19jb21wKCpfX2ZpcnN0
MSwgKl9fZmlyc3QyKSkNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICBlbHNlDQogICAg
ICAgICAgKytfX2ZpcnN0MSwgKytfX2ZpcnN0MjsNCg0KICAgICAgcmV0dXJuIF9fZmlyc3QyID09
IF9fbGFzdDI7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBl
bmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXI+DQogICAgX091dHB1dEl0ZXIN
CiAgICBzZXRfdW5pb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEs
DQogICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3Qy
LA0KICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkNCiAgICB7DQoNCiAgICAgDQog
ICAgIA0KICAgICANCg0KICAgICANCg0KDQogICAgIA0KDQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0
MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsNCiAgICAgICAgaWYgKCpfX2Zp
cnN0MSA8ICpfX2ZpcnN0Mikgew0KICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsNCiAg
ICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKCpfX2ZpcnN0
MiA8ICpfX2ZpcnN0MSkgew0KICAgICAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsNCiAgICAg
ICAgICArK19fZmlyc3QyOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICpf
X3Jlc3VsdCA9ICpfX2ZpcnN0MTsNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICAgICsr
X19maXJzdDI7DQogICAgICAgIH0NCiAgICAgICAgKytfX3Jlc3VsdDsNCiAgICAgIH0NCiAgICAg
IHJldHVybiBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBf
X3Jlc3VsdCkpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlw
ZW5hbWUgX0lucHV0SXRlcjIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyLA0KICAgICAgICAgICB0eXBl
bmFtZSBfQ29tcGFyZT4NCiAgICBfT3V0cHV0SXRlcg0KICAgIHNldF91bmlvbihfSW5wdXRJdGVy
MSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICAgX0lucHV0SXRl
cjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgICAgIF9PdXRwdXRJ
dGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KDQogICAgIA0KICAgICANCiAg
ICAgDQoNCg0KICAgICANCg0KICAgICANCg0KDQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBf
X2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsNCiAgICAgICAgaWYgKF9fY29tcCgqX19m
aXJzdDEsICpfX2ZpcnN0MikpIHsNCiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7DQog
ICAgICAgICAgKytfX2ZpcnN0MTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChfX2NvbXAo
Kl9fZmlyc3QyLCAqX19maXJzdDEpKSB7DQogICAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qy
Ow0KICAgICAgICAgICsrX19maXJzdDI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOw0KICAgICAgICAgICsrX19maXJzdDE7DQogICAg
ICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAgfQ0KICAgICAgICArK19fcmVzdWx0Ow0KICAgICAg
fQ0KICAgICAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9f
bGFzdDEsIF9fcmVzdWx0KSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0
ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXI+DQogICAgX091
dHB1dEl0ZXINCiAgICBzZXRfaW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5w
dXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJz
dDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRl
ciBfX3Jlc3VsdCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KICAgICANCg0KICAgICANCg0KDQog
ICAgIA0KDQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9
IF9fbGFzdDIpDQogICAgICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpDQogICAgICAgICAg
KytfX2ZpcnN0MTsNCiAgICAgICAgZWxzZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKQ0KICAg
ICAgICAgICsrX19maXJzdDI7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0MTsNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICAgICsrX19maXJzdDI7
DQogICAgICAgICAgKytfX3Jlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fcmVzdWx0
Ow0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lu
cHV0SXRlcjIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyLA0KICAgICAgICAgICB0eXBlbmFtZSBfQ29t
cGFyZT4NCiAgICBfT3V0cHV0SXRlcg0KICAgIHNldF9pbnRlcnNlY3Rpb24oX0lucHV0SXRlcjEg
X19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsDQogICAgICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwNCiAgICAgICAgICAgICAgICAg
ICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApDQogICAgew0KDQogICAg
IA0KICAgICANCiAgICAgDQoNCg0KICAgICANCg0KICAgICANCg0KDQoNCiAgICAgIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpDQogICAgICAgIGlmIChf
X2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKQ0KICAgICAgICAgICsrX19maXJzdDE7DQogICAg
ICAgIGVsc2UgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpDQogICAgICAgICAgKytf
X2ZpcnN0MjsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
Ow0KICAgICAgICAgICsrX19maXJzdDE7DQogICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAg
ICArK19fcmVzdWx0Ow0KICAgICAgICB9DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJdGVyMiwg
dHlwZW5hbWUgX091dHB1dEl0ZXI+DQogICAgX091dHB1dEl0ZXINCiAgICBzZXRfZGlmZmVyZW5j
ZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAg
ICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwNCiAgICAg
ICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkNCiAgICB7DQoNCiAgICAgDQogICAg
IA0KICAgICANCg0KICAgICANCg0KDQogICAgIA0KDQoNCiAgICAgIHdoaWxlIChfX2ZpcnN0MSAh
PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpDQogICAgICAgIGlmICgqX19maXJzdDEg
PCAqX19maXJzdDIpIHsNCiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7DQogICAgICAg
ICAgKytfX2ZpcnN0MTsNCiAgICAgICAgICArK19fcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAg
IGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkNCiAgICAgICAgICArK19fZmlyc3QyOw0K
ICAgICAgICBlbHNlIHsNCiAgICAgICAgICArK19fZmlyc3QxOw0KICAgICAgICAgICsrX19maXJz
dDI7DQogICAgICAgIH0NCiAgICAgIHJldHVybiBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jl
c3VsdCk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFt
ZSBfSW5wdXRJdGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsDQogICAgICAgICAgIHR5cGVuYW1l
IF9Db21wYXJlPg0KICAgIF9PdXRwdXRJdGVyDQogICAgc2V0X2RpZmZlcmVuY2UoX0lucHV0SXRl
cjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsDQogICAgICAgICAgICAgICAgICAgX0lu
cHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgICAgICAg
ICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAg
DQogICAgIA0KICAgICANCg0KDQogICAgIA0KDQogICAgIA0KDQoNCg0KICAgICAgd2hpbGUgKF9f
Zmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikNCiAgICAgICAgaWYgKF9f
Y29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsNCiAgICAgICAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDE7DQogICAgICAgICAgKytfX2ZpcnN0MTsNCiAgICAgICAgICArK19fcmVzdWx0Ow0KICAg
ICAgICB9DQogICAgICAgIGVsc2UgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpDQog
ICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgKytfX2ZpcnN0
MTsNCiAgICAgICAgICArK19fZmlyc3QyOw0KICAgICAgICB9DQogICAgICByZXR1cm4gY29weShf
X2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfSW5wdXRJdGVyMSwgdHlwZW5hbWUgX0lucHV0SXRlcjIsIHR5cGVuYW1lIF9PdXRwdXRJdGVy
Pg0KICAgIF9PdXRwdXRJdGVyDQogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0
ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpDQogICAgew0KDQog
ICAgIA0KICAgICANCiAgICAgDQoNCiAgICAgDQoNCg0KICAgICANCg0KDQogICAgICB3aGlsZSAo
X19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQ0KICAgICAgICBpZiAo
Kl9fZmlyc3QxIDwgKl9fZmlyc3QyKSB7DQogICAgICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
Ow0KICAgICAgICAgICsrX19maXJzdDE7DQogICAgICAgICAgKytfX3Jlc3VsdDsNCiAgICAgICAg
fQ0KICAgICAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpIHsNCiAgICAgICAgICAq
X19yZXN1bHQgPSAqX19maXJzdDI7DQogICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAgICAr
K19fcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICsrX19maXJz
dDE7DQogICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIGNvcHko
X19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7DQog
ICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIxLCB0eXBlbmFtZSBfSW5wdXRJ
dGVyMiwgdHlwZW5hbWUgX091dHB1dEl0ZXIsDQogICAgICAgICAgIHR5cGVuYW1lIF9Db21wYXJl
Pg0KICAgIF9PdXRwdXRJdGVyDQogICAgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0
ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAgDQogICAg
IA0KICAgICANCg0KDQogICAgIA0KDQogICAgIA0KDQoNCg0KICAgICAgd2hpbGUgKF9fZmlyc3Qx
ICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikNCiAgICAgICAgaWYgKF9fY29tcCgq
X19maXJzdDEsICpfX2ZpcnN0MikpIHsNCiAgICAgICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7
DQogICAgICAgICAgKytfX2ZpcnN0MTsNCiAgICAgICAgICArK19fcmVzdWx0Ow0KICAgICAgICB9
DQogICAgICAgIGVsc2UgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpIHsNCiAgICAg
ICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7DQogICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAg
ICAgICArK19fcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICsr
X19maXJzdDE7DQogICAgICAgICAgKytfX2ZpcnN0MjsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJu
IGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0
KSk7DQogICAgfQ0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAg
ICBfRm9yd2FyZEl0ZXINCiAgICBtYXhfZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zv
cndhcmRJdGVyIF9fbGFzdCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIGlmIChf
X2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7DQogICAgICBfRm9yd2FyZEl0ZXIgX19y
ZXN1bHQgPSBfX2ZpcnN0Ow0KICAgICAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpDQogICAg
ICAgIGlmICgqX19yZXN1bHQgPCAqX19maXJzdCkNCiAgICAgICAgICBfX3Jlc3VsdCA9IF9fZmly
c3Q7DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0NvbXBhcmU+DQogICAgX0ZvcndhcmRJdGVyDQogICAg
bWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQog
ICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoN
Cg0KDQogICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAg
X0ZvcndhcmRJdGVyIF9fcmVzdWx0ID0gX19maXJzdDsNCiAgICAgIHdoaWxlICgrK19fZmlyc3Qg
IT0gX19sYXN0KQ0KICAgICAgICBpZiAoX19jb21wKCpfX3Jlc3VsdCwgKl9fZmlyc3QpKSBfX3Jl
c3VsdCA9IF9fZmlyc3Q7DQogICAgICByZXR1cm4gX19yZXN1bHQ7DQogICAgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAgICBfRm9yd2FyZEl0ZXINCiAgICBtaW5fZWxl
bWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkNCiAgICB7DQoN
CiAgICAgDQogICAgIA0KDQoNCiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9f
Zmlyc3Q7DQogICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQgPSBfX2ZpcnN0Ow0KICAgICAgd2hp
bGUgKCsrX19maXJzdCAhPSBfX2xhc3QpDQogICAgICAgIGlmICgqX19maXJzdCA8ICpfX3Jlc3Vs
dCkNCiAgICAgICAgICBfX3Jlc3VsdCA9IF9fZmlyc3Q7DQogICAgICByZXR1cm4gX19yZXN1bHQ7
DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0Nv
bXBhcmU+DQogICAgX0ZvcndhcmRJdGVyDQogICAgbWluX2VsZW1lbnQoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsDQogICAgICAgICAgICAgICAgX0NvbXBhcmUgX19j
b21wKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCg0KDQogICAgICBpZiAoX19maXJzdCA9PSBf
X2xhc3QpIHJldHVybiBfX2ZpcnN0Ow0KICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0ID0gX19m
aXJzdDsNCiAgICAgIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQ0KICAgICAgICBpZiAoX19j
b21wKCpfX2ZpcnN0LCAqX19yZXN1bHQpKQ0KICAgICAgICAgIF9fcmVzdWx0ID0gX19maXJzdDsN
CiAgICAgIHJldHVybiBfX3Jlc3VsdDsNCiAgICB9DQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0JpZGlyZWN0aW9uYWxJdGVyPg0KICAgIGJvb2wNCiAgICBuZXh0X3Blcm11dGF0aW9uKF9C
aWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0KQ0KICAg
IHsNCg0KICAgICANCiAgICAgDQoNCg0KICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQ0KICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJz
dDsNCiAgICAgICsrX19pOw0KICAgICAgaWYgKF9faSA9PSBfX2xhc3QpDQogICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICAgIF9faSA9IF9fbGFzdDsNCiAgICAgIC0tX19pOw0KDQogICAgICBmb3Io
OzspIHsNCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7DQogICAgICAgIC0t
X19pOw0KICAgICAgICBpZiAoKl9faSA8ICpfX2lpKSB7DQogICAgICAgICAgX0JpZGlyZWN0aW9u
YWxJdGVyIF9faiA9IF9fbGFzdDsNCiAgICAgICAgICB3aGlsZSAoISgqX19pIDwgKi0tX19qKSkN
CiAgICAgICAgICAgIHt9DQogICAgICAgICAgaXRlcl9zd2FwKF9faSwgX19qKTsNCiAgICAgICAg
ICByZXZlcnNlKF9faWksIF9fbGFzdCk7DQogICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAg
IH0NCiAgICAgICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7DQogICAgICAgICAgcmV2ZXJzZShfX2Zp
cnN0LCBfX2xhc3QpOw0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAg
fQ0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQmlkaXJlY3Rpb25hbEl0ZXIsIHR5cGVu
YW1lIF9Db21wYXJlPg0KICAgIGJvb2wNCiAgICBuZXh0X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlv
bmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LA0KICAgICAgICAgICAg
ICAgICAgICAgX0NvbXBhcmUgX19jb21wKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQoNCg0KDQog
ICAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0Ow0KICAgICAgKytfX2k7DQogICAgICBp
ZiAoX19pID09IF9fbGFzdCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgX19pID0gX19s
YXN0Ow0KICAgICAgLS1fX2k7DQoNCiAgICAgIGZvcig7Oykgew0KICAgICAgICBfQmlkaXJlY3Rp
b25hbEl0ZXIgX19paSA9IF9faTsNCiAgICAgICAgLS1fX2k7DQogICAgICAgIGlmIChfX2NvbXAo
Kl9faSwgKl9faWkpKSB7DQogICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faiA9IF9fbGFz
dDsNCiAgICAgICAgICB3aGlsZSAoIV9fY29tcCgqX19pLCAqLS1fX2opKQ0KICAgICAgICAgICAg
e30NCiAgICAgICAgICBpdGVyX3N3YXAoX19pLCBfX2opOw0KICAgICAgICAgIHJldmVyc2UoX19p
aSwgX19sYXN0KTsNCiAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBp
ZiAoX19pID09IF9fZmlyc3QpIHsNCiAgICAgICAgICByZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCk7
DQogICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcj4NCiAgICBib29sDQogICAgcHJl
dl9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCkNCiAgICB7DQoNCiAgICAgDQogICAgIA0KDQoNCiAgICAgIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9faSA9IF9fZmlyc3Q7DQogICAgICArK19faTsNCiAgICAgIGlmIChfX2kgPT0gX19sYXN0
KQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICBfX2kgPSBfX2xhc3Q7DQogICAgICAtLV9f
aTsNCg0KICAgICAgZm9yKDs7KSB7DQogICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2lpID0g
X19pOw0KICAgICAgICAtLV9faTsNCiAgICAgICAgaWYgKCpfX2lpIDwgKl9faSkgew0KICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7DQogICAgICAgICAgd2hpbGUgKCEo
Ki0tX19qIDwgKl9faSkpDQogICAgICAgICAgICB7fQ0KICAgICAgICAgIGl0ZXJfc3dhcChfX2ks
IF9faik7DQogICAgICAgICAgcmV2ZXJzZShfX2lpLCBfX2xhc3QpOw0KICAgICAgICAgIHJldHVy
biB0cnVlOw0KICAgICAgICB9DQogICAgICAgIGlmIChfX2kgPT0gX19maXJzdCkgew0KICAgICAg
ICAgIHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsNCiAgICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0
aW9uYWxJdGVyLCB0eXBlbmFtZSBfQ29tcGFyZT4NCiAgICBib29sDQogICAgcHJldl9wZXJtdXRh
dGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFz
dCwNCiAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkNCiAgICB7DQoNCiAgICAg
DQogICAgIA0KDQoNCg0KICAgICAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQ0KICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsNCiAgICAg
ICsrX19pOw0KICAgICAgaWYgKF9faSA9PSBfX2xhc3QpDQogICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICAgIF9faSA9IF9fbGFzdDsNCiAgICAgIC0tX19pOw0KDQogICAgICBmb3IoOzspIHsNCiAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7DQogICAgICAgIC0tX19pOw0KICAg
ICAgICBpZiAoX19jb21wKCpfX2lpLCAqX19pKSkgew0KICAgICAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2ogPSBfX2xhc3Q7DQogICAgICAgICAgd2hpbGUgKCFfX2NvbXAoKi0tX19qLCAqX19p
KSkNCiAgICAgICAgICAgIHt9DQogICAgICAgICAgaXRlcl9zd2FwKF9faSwgX19qKTsNCiAgICAg
ICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7DQogICAgICAgICAgcmV0dXJuIHRydWU7DQogICAg
ICAgIH0NCiAgICAgICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7DQogICAgICAgICAgcmV2ZXJzZShf
X2ZpcnN0LCBfX2xhc3QpOw0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAg
ICAgfQ0KICAgIH0NCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5h
bWUgX0ZvcndhcmRJdGVyPg0KICAgIF9JbnB1dEl0ZXINCiAgICBmaW5kX2ZpcnN0X29mKF9JbnB1
dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIgX19sYXN0MSwNCiAgICAgICAgICAgICAgICAgIF9G
b3J3YXJkSXRlciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyIF9fbGFzdDIpDQogICAgew0KDQogICAg
IA0KICAgICANCiAgICAgDQoNCg0KDQogICAgICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7
ICsrX19maXJzdDEpDQogICAgICAgIGZvciAoX0ZvcndhcmRJdGVyIF9faXRlciA9IF9fZmlyc3Qy
OyBfX2l0ZXIgIT0gX19sYXN0MjsgKytfX2l0ZXIpDQogICAgICAgICAgaWYgKCpfX2ZpcnN0MSA9
PSAqX19pdGVyKQ0KICAgICAgICAgICAgcmV0dXJuIF9fZmlyc3QxOw0KICAgICAgcmV0dXJuIF9f
bGFzdDE7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1l
IF9Gb3J3YXJkSXRlciwgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4NCiAgICBfSW5wdXRJdGVy
DQogICAgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyIF9fZmlyc3QxLCBfSW5wdXRJdGVyIF9fbGFz
dDEsDQogICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19maXJzdDIsIF9Gb3J3YXJkSXRl
ciBfX2xhc3QyLA0KICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApDQog
ICAgew0KDQogICAgIA0KICAgICANCiAgICAgDQoNCg0KICAgICANCg0KDQoNCiAgICAgIGZvciAo
IDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSkNCiAgICAgICAgZm9yIChfRm9yd2Fy
ZEl0ZXIgX19pdGVyID0gX19maXJzdDI7IF9faXRlciAhPSBfX2xhc3QyOyArK19faXRlcikNCiAg
ICAgICAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9faXRlcikpDQogICAgICAgICAgICByZXR1
cm4gX19maXJzdDE7DQogICAgICByZXR1cm4gX19sYXN0MTsNCiAgICB9DQojIDQyMDEgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIgMw0KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXIxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXIyPg0KICAgIF9G
b3J3YXJkSXRlcjENCiAgICBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3
YXJkSXRlcjEgX19sYXN0MSwNCiAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIs
IF9Gb3J3YXJkSXRlcjIgX19sYXN0MiwNCiAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3Jf
dGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykNCiAgICB7DQogICAgICBpZiAoX19maXJzdDIgPT0g
X19sYXN0MikNCiAgICAgICAgcmV0dXJuIF9fbGFzdDE7DQogICAgICBlbHNlIHsNCiAgICAgICAg
X0ZvcndhcmRJdGVyMSBfX3Jlc3VsdCA9IF9fbGFzdDE7DQogICAgICAgIHdoaWxlICgxKSB7DQog
ICAgICAgICAgX0ZvcndhcmRJdGVyMSBfX25ld19yZXN1bHQNCiAgICAgICAgICAgID0gc2VhcmNo
KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7DQogICAgICAgICAgaWYgKF9f
bmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQ0KICAgICAgICAgICAgcmV0dXJuIF9fcmVzdWx0Ow0KICAg
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7DQogICAg
ICAgICAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3VsdDsNCiAgICAgICAgICAgICsrX19maXJzdDE7
DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjIsDQogICAgICAgICAg
IHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+DQogICAgX0ZvcndhcmRJdGVyMQ0KICAgIF9fZmlu
ZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLA0KICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3Qy
LA0KICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcsIGZvcndhcmRfaXRlcmF0b3Jf
dGFnLA0KICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApDQogICAgew0KICAg
ICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpDQogICAgICAgIHJldHVybiBfX2xhc3QxOw0KICAg
ICAgZWxzZSB7DQogICAgICAgIF9Gb3J3YXJkSXRlcjEgX19yZXN1bHQgPSBfX2xhc3QxOw0KICAg
ICAgICB3aGlsZSAoMSkgew0KICAgICAgICAgIF9Gb3J3YXJkSXRlcjEgX19uZXdfcmVzdWx0DQog
ICAgICAgICAgICA9IHNlYXJjaChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIs
IF9fY29tcCk7DQogICAgICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQ0KICAgICAg
ICAgICAgcmV0dXJuIF9fcmVzdWx0Ow0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgX19y
ZXN1bHQgPSBfX25ld19yZXN1bHQ7DQogICAgICAgICAgICBfX2ZpcnN0MSA9IF9fbmV3X3Jlc3Vs
dDsNCiAgICAgICAgICAgICsrX19maXJzdDE7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
ICB9DQogICAgfQ0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyMSwg
dHlwZW5hbWUgX0JpZGlyZWN0aW9uYWxJdGVyMj4NCiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxDQog
ICAgX19maW5kX2VuZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QxLCBfQmlkaXJlY3Rpb25h
bEl0ZXIxIF9fbGFzdDEsDQogICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fZmly
c3QyLCBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsDQogICAgICAgICAgICAgICBiaWRpcmVj
dGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpDQogICAgew0K
DQogICAgIA0KICAgICANCg0KICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPF9CaWRpcmVj
dGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsNCiAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkaXJlY3Rpb25hbEl0ZXIyPiBfUmV2SXRlcjI7DQoNCiAgICAgIF9SZXZJdGVyMSBfX3JsYXN0
MShfX2ZpcnN0MSk7DQogICAgICBfUmV2SXRlcjIgX19ybGFzdDIoX19maXJzdDIpOw0KICAgICAg
X1Jldkl0ZXIxIF9fcnJlc3VsdCA9IHNlYXJjaChfUmV2SXRlcjEoX19sYXN0MSksIF9fcmxhc3Qx
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmV2SXRlcjIoX19sYXN0Miks
IF9fcmxhc3QyKTsNCg0KICAgICAgaWYgKF9fcnJlc3VsdCA9PSBfX3JsYXN0MSkNCiAgICAgICAg
cmV0dXJuIF9fbGFzdDE7DQogICAgICBlbHNlIHsNCiAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
MSBfX3Jlc3VsdCA9IF9fcnJlc3VsdC5iYXNlKCk7DQogICAgICAgIGFkdmFuY2UoX19yZXN1bHQs
IC1kaXN0YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOw0KICAgICAgICByZXR1cm4gX19yZXN1bHQ7
DQogICAgICB9DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRl
cjEsIHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcjIsDQogICAgICAgICAgIHR5cGVuYW1lIF9C
aW5hcnlQcmVkaWNhdGU+DQogICAgX0JpZGlyZWN0aW9uYWxJdGVyMQ0KICAgIF9fZmluZF9lbmQo
X0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qx
LA0KICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2ZpcnN0MiwgX0JpZGlyZWN0
aW9uYWxJdGVyMiBfX2xhc3QyLA0KICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cl90YWcsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLA0KICAgICAgICAgICAgICAgX0JpbmFy
eVByZWRpY2F0ZSBfX2NvbXApDQogICAgew0KDQogICAgIA0KICAgICANCg0KICAgICAgdHlwZWRl
ZiByZXZlcnNlX2l0ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsNCiAgICAg
IHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXIyPiBfUmV2SXRlcjI7
DQoNCiAgICAgIF9SZXZJdGVyMSBfX3JsYXN0MShfX2ZpcnN0MSk7DQogICAgICBfUmV2SXRlcjIg
X19ybGFzdDIoX19maXJzdDIpOw0KICAgICAgX1Jldkl0ZXIxIF9fcnJlc3VsdCA9IHNlYXJjaChf
UmV2SXRlcjEoX19sYXN0MSksIF9fcmxhc3QxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfUmV2SXRlcjIoX19sYXN0MiksIF9fcmxhc3QyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbXApOw0KDQogICAgICBpZiAoX19ycmVzdWx0ID09IF9fcmxh
c3QxKQ0KICAgICAgICByZXR1cm4gX19sYXN0MTsNCiAgICAgIGVsc2Ugew0KICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIxIF9fcmVzdWx0ID0gX19ycmVzdWx0LmJhc2UoKTsNCiAgICAgICAgYWR2
YW5jZShfX3Jlc3VsdCwgLWRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7DQogICAgICAgIHJl
dHVybiBfX3Jlc3VsdDsNCiAgICAgIH0NCiAgICB9DQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjI+DQogICAgaW5saW5lIF9Gb3J3
YXJkSXRlcjENCiAgICBmaW5kX2VuZChfRm9yd2FyZEl0ZXIxIF9fZmlyc3QxLCBfRm9yd2FyZEl0
ZXIxIF9fbGFzdDEsDQogICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0Zvcndh
cmRJdGVyMiBfX2xhc3QyKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQogICAgIA0KDQoNCg0KICAg
ICAgcmV0dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3Qy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSks
DQogICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSk7
DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcjEsIHR5cGVuYW1lIF9G
b3J3YXJkSXRlcjIsDQogICAgICAgICAgIHR5cGVuYW1lIF9CaW5hcnlQcmVkaWNhdGU+DQogICAg
aW5saW5lIF9Gb3J3YXJkSXRlcjENCiAgICBmaW5kX2VuZChfRm9yd2FyZEl0ZXIxIF9fZmlyc3Qx
LCBfRm9yd2FyZEl0ZXIxIF9fbGFzdDEsDQogICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2Zp
cnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyLA0KICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNh
dGUgX19jb21wKQ0KICAgIHsNCg0KICAgICANCiAgICAgDQogICAgIA0KDQoNCg0KICAgICAgcmV0
dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSksDQogICAg
ICAgICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29tcCk7DQogICAgfQ0KDQp9DQojIDcwICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My9hbGdvcml0aG0iIDIgMw0KIyA1NyAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvc3RyaW5nIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvYml0cy9iYXNpY19zdHJpbmcudGNjIiAxIDMNCiMgNDUgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMw0KDQpuYW1l
c3BhY2Ugc3RkDQp7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGNvbnN0IHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQ0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIF9SZXA6Ol9TX21heF9zaXplID0gKCgobnBvcyAtIHNp
emVvZihfUmVwKSkvc2l6ZW9mKF9DaGFyVCkpIC0gMSkgLyA0Ow0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGNvbnN0
IF9DaGFyVA0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAg
IF9SZXA6Ol9TX3Rlcm1pbmFsID0gX0NoYXJUKCk7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgY29uc3QgdHlwZW5h
bWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlDQogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6bnBvczsNCg0KDQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
DQogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6
ZV90eXBlDQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6X1NfZW1w
dHlfcmVwX3N0b3JhZ2VbDQogICAgKHNpemVvZihfUmVwKSArIHNpemVvZihfQ2hhclQpICsgc2l6
ZW9mKHNpemVfdHlwZSkgLSAxKS9zaXplb2Yoc2l6ZV90eXBlKV07DQoNCg0KDQoNCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4N
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5JdGVyPg0KICAgICAgX0NoYXJUKg0KICAgICAgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgICBfU19jb25zdHJ1Y3Qo
X0luSXRlciBfX2JlZywgX0luSXRlciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EsDQogICAgICAg
ICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQ0KICAgICAgew0KICAgICAgICBpZiAoX19i
ZWcgPT0gX19lbmQgJiYgX19hID09IF9BbGxvYygpKQ0KICAgICAgICAgIHJldHVybiBfU19lbXB0
eV9yZXAoKS5fTV9yZWZjb3B5KCk7DQoNCiAgICAgICAgX0NoYXJUIF9fYnVmWzEwMF07DQogICAg
ICAgIHNpemVfdHlwZSBfX2kgPSAwOw0KICAgICAgICB3aGlsZSAoX19iZWcgIT0gX19lbmQgJiYg
X19pIDwgc2l6ZW9mKF9fYnVmKSAvIHNpemVvZihfQ2hhclQpKQ0KICAgICAgICAgIHsNCiAgICAg
ICAgICAgIF9fYnVmW19faSsrXSA9ICpfX2JlZzsNCiAgICAgICAgICAgICsrX19iZWc7DQogICAg
ICAgICAgfQ0KICAgICAgICBfUmVwKiBfX3IgPSBfUmVwOjpfU19jcmVhdGUoX19pLCBfX2EpOw0K
ICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3ItPl9NX3JlZmRhdGEoKSwgX19idWYsIF9faSk7
DQogICAgICAgIF9fci0+X01fbGVuZ3RoID0gX19pOw0KICAgICAgICBpZiAodHJ1ZSkNCiAgICAg
ICAgICB7DQoNCg0KDQogICAgICAgICAgICBmb3IgKDs7KQ0KICAgICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgX0NoYXJUKiBfX3AgPSBfX3ItPl9NX3JlZmRhdGEoKSArIF9fci0+X01fbGVu
Z3RoOw0KICAgICAgICAgICAgICAgIF9DaGFyVCogX19sYXN0ID0gX19yLT5fTV9yZWZkYXRhKCkg
KyBfX3ItPl9NX2NhcGFjaXR5Ow0KICAgICAgICAgICAgICAgIGZvciAoOzspDQogICAgICAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChfX2JlZyA9PSBfX2VuZCkNCiAgICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBfX3ItPl9NX2xlbmd0
aCA9IF9fcCAtIF9fci0+X01fcmVmZGF0YSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgKl9f
cCA9IF9SZXA6Ol9TX3Rlcm1pbmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9f
ci0+X01fcmVmZGF0YSgpOw0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgaWYgKF9fcCA9PSBfX2xhc3QpDQogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQog
ICAgICAgICAgICAgICAgICAgICpfX3ArKyA9ICpfX2JlZzsNCiAgICAgICAgICAgICAgICAgICAg
KytfX2JlZzsNCiAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHNpemVfdHlw
ZSBfX2xlbiA9IF9fcCAtIF9fci0+X01fcmVmZGF0YSgpOw0KICAgICAgICAgICAgICAgIF9SZXAq
IF9fYW5vdGhlciA9IF9SZXA6Ol9TX2NyZWF0ZShfX2xlbiArIDEsIF9fYSk7DQogICAgICAgICAg
ICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19hbm90aGVyLT5fTV9yZWZkYXRhKCksDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yLT5fTV9yZWZkYXRhKCksIF9fbGVuKTsNCiAg
ICAgICAgICAgICAgICBfX3ItPl9NX2Rlc3Ryb3koX19hKTsNCiAgICAgICAgICAgICAgICBfX3Ig
PSBfX2Fub3RoZXI7DQogICAgICAgICAgICAgICAgX19yLT5fTV9sZW5ndGggPSBfX2xlbjsNCiAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAg
IHsNCiAgICAgICAgICAgIF9fci0+X01fZGVzdHJveShfX2EpOw0KICAgICAgICAgICAgOw0KICAg
ICAgICAgIH0NCiAgICAgICAgcmV0dXJuIDA7DQogICAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdGVtcGxh
dGUgPGNsYXNzIF9Jbkl0ZXI+DQogICAgICBfQ2hhclQqDQogICAgICBiYXNpY19zdHJpbmc8X0No
YXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICAgIF9TX2NvbnN0cnVjdChfSW5JdGVyIF9fYmVn
LCBfSW5JdGVyIF9fZW5kLCBjb25zdCBfQWxsb2MmIF9fYSwNCiAgICAgICAgICAgICAgICAgICBm
b3J3YXJkX2l0ZXJhdG9yX3RhZykNCiAgICAgIHsNCiAgICAgICAgc2l6ZV90eXBlIF9fZG5ldyA9
IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oZGlzdGFuY2UoX19iZWcsIF9fZW5kKSk7DQoNCg0KICAg
ICAgICBpZiAoX19idWlsdGluX2V4cGVjdChfX2JlZyA9PSBfSW5JdGVyKDApLCAwKSkNCiAgICAg
ICAgICBfX3Rocm93X2xvZ2ljX2Vycm9yKCJhdHRlbXB0IHRvIGNyZWF0ZSBzdHJpbmcgd2l0aCBu
dWxsIHBvaW50ZXIiKTsNCg0KICAgICAgICBpZiAoX19iZWcgPT0gX19lbmQgJiYgX19hID09IF9B
bGxvYygpKQ0KICAgICAgICAgIHJldHVybiBfU19lbXB0eV9yZXAoKS5fTV9yZWZjb3B5KCk7DQoN
Cg0KICAgICAgICBfUmVwKiBfX3IgPSBfUmVwOjpfU19jcmVhdGUoX19kbmV3LCBfX2EpOw0KICAg
ICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICB7IF9TX2NvcHlfY2hhcnMoX19yLT5fTV9yZWZkYXRh
KCksIF9fYmVnLCBfX2VuZCk7IH0NCiAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgIHsNCiAg
ICAgICAgICAgIF9fci0+X01fZGVzdHJveShfX2EpOw0KICAgICAgICAgICAgOw0KICAgICAgICAg
IH0NCiAgICAgICAgX19yLT5fTV9sZW5ndGggPSBfX2RuZXc7DQoNCiAgICAgICAgX19yLT5fTV9y
ZWZkYXRhKClbX19kbmV3XSA9IF9SZXA6Ol9TX3Rlcm1pbmFsOw0KICAgICAgICByZXR1cm4gX19y
LT5fTV9yZWZkYXRhKCk7DQogICAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgX0NoYXJUKg0KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIF9TX2NvbnN0cnVjdChzaXpl
X3R5cGUgX19uLCBfQ2hhclQgX19jLCBjb25zdCBfQWxsb2MmIF9fYSkNCiAgICB7DQogICAgICBp
ZiAoX19uID09IDAgJiYgX19hID09IF9BbGxvYygpKQ0KICAgICAgICByZXR1cm4gX1NfZW1wdHlf
cmVwKCkuX01fcmVmY29weSgpOw0KDQoNCiAgICAgIF9SZXAqIF9fciA9IF9SZXA6Ol9TX2NyZWF0
ZShfX24sIF9fYSk7DQogICAgICBpZiAodHJ1ZSkNCiAgICAgICAgew0KICAgICAgICAgIGlmIChf
X24pDQogICAgICAgICAgICB0cmFpdHNfdHlwZTo6YXNzaWduKF9fci0+X01fcmVmZGF0YSgpLCBf
X24sIF9fYyk7DQogICAgICAgIH0NCiAgICAgIGlmIChmYWxzZSkNCiAgICAgICAgew0KICAgICAg
ICAgIF9fci0+X01fZGVzdHJveShfX2EpOw0KICAgICAgICAgIDsNCiAgICAgICAgfQ0KICAgICAg
X19yLT5fTV9sZW5ndGggPSBfX247DQogICAgICBfX3ItPl9NX3JlZmRhdGEoKVtfX25dID0gX1Jl
cDo6X1NfdGVybWluYWw7DQogICAgICByZXR1cm4gX19yLT5fTV9yZWZkYXRhKCk7DQogICAgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPg0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAg
IGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQ0KICAgIDogX01fZGF0YXBs
dXMoX19zdHIuX01fcmVwKCktPl9NX2dyYWIoX0FsbG9jKCksIF9fc3RyLmdldF9hbGxvY2F0b3Io
KSksDQogICAgICAgICAgICAgICAgIF9fc3RyLmdldF9hbGxvY2F0b3IoKSkNCiAgICB7IH0NCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9B
bGxvYz4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBi
YXNpY19zdHJpbmcoY29uc3QgX0FsbG9jJiBfX2EpDQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25z
dHJ1Y3Qoc2l6ZV90eXBlKCksIF9DaGFyVCgpLCBfX2EpLCBfX2EpDQogICAgeyB9DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
DQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgYmFzaWNf
c3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90
eXBlIF9fbikNCiAgICA6IF9NX2RhdGFwbHVzKF9TX2NvbnN0cnVjdChfX3N0ci5fTV9jaGVjayhf
X3BvcyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zdHIuX01fZm9sZChfX3Bv
cywgX19uKSwgX0FsbG9jKCkpLCBfQWxsb2MoKSkNCiAgICB7IH0NCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBiYXNpY19zdHJpbmcoY29u
c3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLA0KICAgICAgICAgICAgICAg
ICBzaXplX3R5cGUgX19uLCBjb25zdCBfQWxsb2MmIF9fYSkNCiAgICA6IF9NX2RhdGFwbHVzKF9T
X2NvbnN0cnVjdChfX3N0ci5fTV9jaGVjayhfX3BvcyksDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19zdHIuX01fZm9sZChfX3BvcywgX19uKSwgX19hKSwgX19hKQ0KICAgIHsgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg
X0FsbG9jPg0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAg
IGJhc2ljX3N0cmluZyhjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0Fs
bG9jJiBfX2EpDQogICAgOiBfTV9kYXRhcGx1cyhfU19jb25zdHJ1Y3QoX19zLCBfX3MgKyBfX24s
IF9fYSksIF9fYSkNCiAgICB7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjoNCiAgICBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNv
bnN0IF9BbGxvYyYgX19hKQ0KICAgIDogX01fZGF0YXBsdXMoX1NfY29uc3RydWN0KF9fcywgX19z
ID8gX19zICsgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpIDogMCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2EpLCBfX2EpDQogICAgeyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgYmFzaWNfc3RyaW5nKHNpemVfdHlw
ZSBfX24sIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19hKQ0KICAgIDogX01fZGF0YXBsdXMo
X1NfY29uc3RydWN0KF9fbiwgX19jLCBfX2EpLCBfX2EpDQogICAgeyB9DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcj4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjoNCiAgICBiYXNpY19zdHJpbmcoX0lucHV0SXRlciBfX2JlZywgX0lu
cHV0SXRlciBfX2VuZCwgY29uc3QgX0FsbG9jJiBfX2EpDQogICAgOiBfTV9kYXRhcGx1cyhfU19j
b25zdHJ1Y3QoX19iZWcsIF9fZW5kLCBfX2EpLCBfX2EpDQogICAgeyB9DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYNCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ojphc3NpZ24oY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0
cikNCiAgICB7DQogICAgICBpZiAoX01fcmVwKCkgIT0gX19zdHIuX01fcmVwKCkpDQogICAgICAg
IHsNCg0KICAgICAgICAgIGFsbG9jYXRvcl90eXBlIF9fYSA9IHRoaXMtPmdldF9hbGxvY2F0b3Io
KTsNCiAgICAgICAgICBfQ2hhclQqIF9fdG1wID0gX19zdHIuX01fcmVwKCktPl9NX2dyYWIoX19h
LCBfX3N0ci5nZXRfYWxsb2NhdG9yKCkpOw0KICAgICAgICAgIF9NX3JlcCgpLT5fTV9kaXNwb3Nl
KF9fYSk7DQogICAgICAgICAgX01fZGF0YShfX3RtcCk7DQogICAgICAgIH0NCiAgICAgIHJldHVy
biAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdm9pZA0KICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46Ol9SZXA6Og0KICAgIF9NX2Rlc3Ryb3koY29uc3QgX0FsbG9j
JiBfX2EpIHRocm93ICgpDQogICAgew0KICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHNpemVvZihf
UmVwKSArIChfTV9jYXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCk7DQogICAgICBfUmF3X2J5
dGVzX2FsbG9jKF9fYSkuZGVhbGxvY2F0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSwg
X19zaXplKTsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdm9pZA0KICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46Ol9NX2xlYWtfaGFyZCgpDQogICAgew0KICAgICAgaWYgKF9N
X3JlcCgpLT5fTV9pc19zaGFyZWQoKSkNCiAgICAgICAgX01fbXV0YXRlKDAsIDAsIDApOw0KICAg
ICAgX01fcmVwKCktPl9NX3NldF9sZWFrZWQoKTsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
DQogICAgdm9pZA0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0K
ICAgIF9NX211dGF0ZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX2xlbjEsIHNpemVfdHlw
ZSBfX2xlbjIpDQogICAgew0KICAgICAgc2l6ZV90eXBlIF9fb2xkX3NpemUgPSB0aGlzLT5zaXpl
KCk7DQogICAgICBjb25zdCBzaXplX3R5cGUgX19uZXdfc2l6ZSA9IF9fb2xkX3NpemUgKyBfX2xl
bjIgLSBfX2xlbjE7DQogICAgICBjb25zdCBfQ2hhclQqIF9fc3JjID0gX01fZGF0YSgpICsgX19w
b3MgKyBfX2xlbjE7DQogICAgICBjb25zdCBzaXplX3R5cGUgX19ob3dfbXVjaCA9IF9fb2xkX3Np
emUgLSBfX3BvcyAtIF9fbGVuMTsNCg0KICAgICAgaWYgKF9NX3JlcCgpLT5fTV9pc19zaGFyZWQo
KSB8fCBfX25ld19zaXplID4gY2FwYWNpdHkoKSkNCiAgICAgICAgew0KDQogICAgICAgICAgYWxs
b2NhdG9yX3R5cGUgX19hID0gZ2V0X2FsbG9jYXRvcigpOw0KDQoNCiAgICAgICAgICBjb25zdCBz
aXplX3R5cGUgX19wYWdlc2l6ZSA9IDQwOTY7DQogICAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f
bWFsbG9jX2hlYWRlcl9zaXplID0gNCAqIHNpemVvZiAodm9pZCopOw0KDQogICAgICAgICAgY29u
c3Qgc2l6ZV90eXBlIF9fcGFnZV9jYXBhY2l0eSA9IChfX3BhZ2VzaXplIC0gX19tYWxsb2NfaGVh
ZGVyX3NpemUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0g
c2l6ZW9mKF9SZXApIC0gc2l6ZW9mKF9DaGFyVCkpDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvIHNpemVvZihfQ2hhclQpOw0KICAgICAgICAgIF9SZXAqIF9f
cjsNCiAgICAgICAgICBpZiAoX19uZXdfc2l6ZSA+IGNhcGFjaXR5KCkgJiYgX19uZXdfc2l6ZSA+
IF9fcGFnZV9jYXBhY2l0eSkNCg0KICAgICAgICAgICAgX19yID0gX1JlcDo6X1NfY3JlYXRlKF9f
bmV3X3NpemUgPiAyKmNhcGFjaXR5KCkgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fbmV3X3NpemUgOiAyKmNhcGFjaXR5KCksIF9fYSk7DQogICAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgX19yID0gX1JlcDo6X1NfY3JlYXRlKF9fbmV3X3NpemUsIF9fYSk7DQogICAgICAg
ICAgaWYgKHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGlmIChfX3BvcykNCiAg
ICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3ItPl9NX3JlZmRhdGEoKSwgX01fZGF0
YSgpLCBfX3Bvcyk7DQogICAgICAgICAgICAgIGlmIChfX2hvd19tdWNoKQ0KICAgICAgICAgICAg
ICAgIHRyYWl0c190eXBlOjpjb3B5KF9fci0+X01fcmVmZGF0YSgpICsgX19wb3MgKyBfX2xlbjIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19zcmMsIF9faG93X211Y2gpOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgX19yLT5fTV9kaXNwb3NlKGdldF9hbGxvY2F0b3IoKSk7DQogICAgICAgICAgICAg
IDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBfTV9yZXAoKS0+X01fZGlzcG9zZShfX2EpOw0K
ICAgICAgICAgIF9NX2RhdGEoX19yLT5fTV9yZWZkYXRhKCkpOw0KICAgICAgfQ0KICAgICAgZWxz
ZSBpZiAoX19ob3dfbXVjaCAmJiBfX2xlbjEgIT0gX19sZW4yKQ0KICAgICAgICB7DQoNCiAgICAg
ICAgICB0cmFpdHNfdHlwZTo6bW92ZShfTV9kYXRhKCkgKyBfX3BvcyArIF9fbGVuMiwgX19zcmMs
IF9faG93X211Y2gpOw0KICAgICAgICB9DQogICAgICBfTV9yZXAoKS0+X01fc2V0X3NoYXJhYmxl
KCk7DQogICAgICBfTV9yZXAoKS0+X01fbGVuZ3RoID0gX19uZXdfc2l6ZTsNCiAgICAgIF9NX2Rh
dGEoKVtfX25ld19zaXplXSA9IF9SZXA6Ol9TX3Rlcm1pbmFsOw0KDQogICAgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0K
ICAgIHZvaWQNCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpyZXNl
cnZlKHNpemVfdHlwZSBfX3JlcykNCiAgICB7DQogICAgICBpZiAoX19yZXMgPiB0aGlzLT5jYXBh
Y2l0eSgpIHx8IF9NX3JlcCgpLT5fTV9pc19zaGFyZWQoKSkNCiAgICAgICAgew0KICAgICAgICAg
IGlmIChfX3JlcyA+IHRoaXMtPm1heF9zaXplKCkpDQogICAgICAgICAgICBfX3Rocm93X2xlbmd0
aF9lcnJvcigiYmFzaWNfc3RyaW5nOjpyZXNlcnZlIik7DQoNCiAgICAgICAgICBpZiAoX19yZXMg
PCB0aGlzLT5zaXplKCkpDQogICAgICAgICAgICBfX3JlcyA9IHRoaXMtPnNpemUoKTsNCiAgICAg
ICAgICBhbGxvY2F0b3JfdHlwZSBfX2EgPSBnZXRfYWxsb2NhdG9yKCk7DQogICAgICAgICAgX0No
YXJUKiBfX3RtcCA9IF9NX3JlcCgpLT5fTV9jbG9uZShfX2EsIF9fcmVzIC0gdGhpcy0+c2l6ZSgp
KTsNCiAgICAgICAgICBfTV9yZXAoKS0+X01fZGlzcG9zZShfX2EpOw0KICAgICAgICAgIF9NX2Rh
dGEoX190bXApOw0KICAgICAgICB9DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHZvaWQgYmFzaWNfc3Ry
aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c3dhcChiYXNpY19zdHJpbmcmIF9fcykNCiAg
ICB7DQogICAgICBpZiAoX01fcmVwKCktPl9NX2lzX2xlYWtlZCgpKQ0KICAgICAgICBfTV9yZXAo
KS0+X01fc2V0X3NoYXJhYmxlKCk7DQogICAgICBpZiAoX19zLl9NX3JlcCgpLT5fTV9pc19sZWFr
ZWQoKSkNCiAgICAgICAgX19zLl9NX3JlcCgpLT5fTV9zZXRfc2hhcmFibGUoKTsNCiAgICAgIGlm
ICh0aGlzLT5nZXRfYWxsb2NhdG9yKCkgPT0gX19zLmdldF9hbGxvY2F0b3IoKSkNCiAgICAgICAg
ew0KICAgICAgICAgIF9DaGFyVCogX190bXAgPSBfTV9kYXRhKCk7DQogICAgICAgICAgX01fZGF0
YShfX3MuX01fZGF0YSgpKTsNCiAgICAgICAgICBfX3MuX01fZGF0YShfX3RtcCk7DQogICAgICAg
IH0NCg0KICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgYmFzaWNfc3RyaW5nIF9fdG1w
MShfTV9pYmVnaW4oKSwgX01faWVuZCgpLCBfX3MuZ2V0X2FsbG9jYXRvcigpKTsNCiAgICAgICAg
ICBiYXNpY19zdHJpbmcgX190bXAyKF9fcy5fTV9pYmVnaW4oKSwgX19zLl9NX2llbmQoKSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmdldF9hbGxvY2F0b3IoKSk7DQogICAg
ICAgICAgKnRoaXMgPSBfX3RtcDI7DQogICAgICAgICAgX19zID0gX190bXAxOw0KICAgICAgICB9
DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg
dHlwZW5hbWUgX0FsbG9jPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz46Ol9SZXAqDQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6X1JlcDo6DQogICAgX1NfY3JlYXRlKHNpemVfdCBfX2NhcGFjaXR5LCBjb25zdCBfQWxs
b2MmIF9fYWxsb2MpDQogICAgew0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7DQoNCg0KICAgICAgaWYgKF9fY2FwYWNpdHkg
PiBfU19tYXhfc2l6ZSkNCg0KDQoNCiAgICAgICAgX190aHJvd19sZW5ndGhfZXJyb3IoImJhc2lj
X3N0cmluZzo6X1NfY3JlYXRlIik7DQoNCg0KDQoNCiAgICAgIHNpemVfdCBfX3NpemUgPSAoX19j
YXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2YoX1JlcCk7DQojIDQyMSAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9iYXNpY19zdHJpbmcudGNjIiAzDQog
ICAgICBjb25zdCBzaXplX3QgX19wYWdlc2l6ZSA9IDQwOTY7DQogICAgICBjb25zdCBzaXplX3Qg
X19zdWJwYWdlc2l6ZSA9IDEyODsNCiAgICAgIGNvbnN0IHNpemVfdCBfX21hbGxvY19oZWFkZXJf
c2l6ZSA9IDQgKiBzaXplb2YgKHZvaWQqKTsNCiAgICAgIGlmICgoX19zaXplICsgX19tYWxsb2Nf
aGVhZGVyX3NpemUpID4gX19wYWdlc2l6ZSkNCiAgICAgICAgew0KICAgICAgICAgIHNpemVfdCBf
X2V4dHJhID0NCiAgICAgICAgICAgIChfX3BhZ2VzaXplIC0gKChfX3NpemUgKyBfX21hbGxvY19o
ZWFkZXJfc2l6ZSkgJSBfX3BhZ2VzaXplKSkNCiAgICAgICAgICAgICUgX19wYWdlc2l6ZTsNCiAg
ICAgICAgICBfX2NhcGFjaXR5ICs9IF9fZXh0cmEgLyBzaXplb2YoX0NoYXJUKTsNCiAgICAgICAg
ICBfX3NpemUgPSAoX19jYXBhY2l0eSArIDEpICogc2l6ZW9mKF9DaGFyVCkgKyBzaXplb2YoX1Jl
cCk7DQogICAgICAgIH0NCiAgICAgIGVsc2UgaWYgKF9fc2l6ZSA+IF9fc3VicGFnZXNpemUpDQog
ICAgICAgIHsNCiAgICAgICAgICBzaXplX3QgX19leHRyYSA9DQogICAgICAgICAgICAoX19zdWJw
YWdlc2l6ZSAtICgoX19zaXplICsgX19tYWxsb2NfaGVhZGVyX3NpemUpICUgX19zdWJwYWdlc2l6
ZSkpDQogICAgICAgICAgICAlIF9fc3VicGFnZXNpemU7DQogICAgICAgICAgX19jYXBhY2l0eSAr
PSBfX2V4dHJhIC8gc2l6ZW9mKF9DaGFyVCk7DQogICAgICAgICAgX19zaXplID0gKF9fY2FwYWNp
dHkgKyAxKSAqIHNpemVvZihfQ2hhclQpICsgc2l6ZW9mKF9SZXApOw0KICAgICAgICB9DQoNCg0K
DQogICAgICB2b2lkKiBfX3BsYWNlID0gX1Jhd19ieXRlc19hbGxvYyhfX2FsbG9jKS5hbGxvY2F0
ZShfX3NpemUpOw0KICAgICAgX1JlcCAqX19wID0gbmV3IChfX3BsYWNlKSBfUmVwOw0KICAgICAg
X19wLT5fTV9jYXBhY2l0eSA9IF9fY2FwYWNpdHk7DQogICAgICBfX3AtPl9NX3NldF9zaGFyYWJs
ZSgpOw0KICAgICAgX19wLT5fTV9sZW5ndGggPSAwOw0KICAgICAgcmV0dXJuIF9fcDsNCiAgICB9
DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFt
ZSBfQWxsb2M+DQogICAgX0NoYXJUKg0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs
IF9BbGxvYz46Ol9SZXA6Og0KICAgIF9NX2Nsb25lKGNvbnN0IF9BbGxvYyYgX19hbGxvYywgc2l6
ZV90eXBlIF9fcmVzKQ0KICAgIHsNCg0KICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fcmVxdWVzdGVk
X2NhcCA9IF9NX2xlbmd0aCArIF9fcmVzOw0KDQogICAgICBjb25zdCBzaXplX3R5cGUgX19wYWdl
c2l6ZSA9IDQwOTY7DQogICAgICBjb25zdCBzaXplX3R5cGUgX19tYWxsb2NfaGVhZGVyX3NpemUg
PSA0ICogc2l6ZW9mICh2b2lkKik7DQoNCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BhZ2VfY2Fw
YWNpdHkgPQ0KICAgICAgICAoX19wYWdlc2l6ZSAtIF9fbWFsbG9jX2hlYWRlcl9zaXplIC0gc2l6
ZW9mKF9SZXApIC0gc2l6ZW9mKF9DaGFyVCkpDQogICAgICAgIC8gc2l6ZW9mKF9DaGFyVCk7DQog
ICAgICBfUmVwKiBfX3I7DQogICAgICBpZiAoX19yZXF1ZXN0ZWRfY2FwID4gX01fY2FwYWNpdHkg
JiYgX19yZXF1ZXN0ZWRfY2FwID4gX19wYWdlX2NhcGFjaXR5KQ0KDQogICAgICAgIF9fciA9IF9S
ZXA6Ol9TX2NyZWF0ZShfX3JlcXVlc3RlZF9jYXAgPiAyKl9NX2NhcGFjaXR5ID8NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVxdWVzdGVkX2NhcCA6IDIqX01fY2FwYWNpdHksIF9f
YWxsb2MpOw0KICAgICAgZWxzZQ0KICAgICAgICBfX3IgPSBfUmVwOjpfU19jcmVhdGUoX19yZXF1
ZXN0ZWRfY2FwLCBfX2FsbG9jKTsNCg0KICAgICAgaWYgKF9NX2xlbmd0aCkNCiAgICAgICAgew0K
ICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgeyB0cmFpdHNfdHlwZTo6Y29weShfX3It
Pl9NX3JlZmRhdGEoKSwgX01fcmVmZGF0YSgpLCBfTV9sZW5ndGgpOyB9DQogICAgICAgICAgaWYg
KGZhbHNlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBfX3ItPl9NX2Rlc3Ryb3koX19h
bGxvYyk7DQogICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAg
X19yLT5fTV9sZW5ndGggPSBfTV9sZW5ndGg7DQogICAgICByZXR1cm4gX19yLT5fTV9yZWZkYXRh
KCk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHZvaWQNCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+OjpyZXNpemUoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykNCiAgICB7
DQogICAgICBpZiAoX19uID4gbWF4X3NpemUoKSkNCiAgICAgICAgX190aHJvd19sZW5ndGhfZXJy
b3IoImJhc2ljX3N0cmluZzo6cmVzaXplIik7DQogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhp
cy0+c2l6ZSgpOw0KICAgICAgaWYgKF9fc2l6ZSA8IF9fbikNCiAgICAgICAgdGhpcy0+YXBwZW5k
KF9fbiAtIF9fc2l6ZSwgX19jKTsNCiAgICAgIGVsc2UgaWYgKF9fbiA8IF9fc2l6ZSkNCiAgICAg
ICAgdGhpcy0+ZXJhc2UoX19uKTsNCg0KICAgIH0NCiMgNTA4ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX3N0cmluZy50Y2MiIDMNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX0lucHV0SXRlcj4NCiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp
dHMsIF9BbGxvYz4mDQogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjoNCiAgICAgIF9NX3JlcGxhY2UoaXRlcmF0b3IgX19pMSwgaXRlcmF0b3IgX19pMiwgX0lucHV0
SXRlciBfX2sxLA0KICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyIF9fazIsIGlucHV0X2l0ZXJh
dG9yX3RhZykNCiAgICAgIHsNCg0KICAgICAgICBiYXNpY19zdHJpbmcgX19zKF9fazEsIF9fazIp
Ow0KICAgICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9faTEsIF9faTIsIF9fcy5fTV9pYmVn
aW4oKSwgX19zLl9NX2llbmQoKSk7DQogICAgICB9DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcj4NCiAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4mDQogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf
QWxsb2M+OjoNCiAgICAgIF9NX3JlcGxhY2Vfc2FmZShpdGVyYXRvciBfX2kxLCBpdGVyYXRvciBf
X2kyLCBfRm9yd2FyZEl0ZXIgX19rMSwNCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIgX19rMikNCiAgICAgIHsNCiAgICAgICAgc2l6ZV90eXBlIF9fZG5ldyA9IHN0YXRpY19jYXN0
PHNpemVfdHlwZT4oZGlzdGFuY2UoX19rMSwgX19rMikpOw0KICAgICAgICBzaXplX3R5cGUgX19k
b2xkID0gX19pMiAtIF9faTE7DQogICAgICAgIHNpemVfdHlwZSBfX2RtYXggPSB0aGlzLT5tYXhf
c2l6ZSgpOw0KDQogICAgICAgIGlmIChfX2RtYXggPD0gX19kbmV3KQ0KICAgICAgICAgIF9fdGhy
b3dfbGVuZ3RoX2Vycm9yKCJiYXNpY19zdHJpbmc6Ol9NX3JlcGxhY2UiKTsNCiAgICAgICAgc2l6
ZV90eXBlIF9fb2ZmID0gX19pMSAtIF9NX2liZWdpbigpOw0KICAgICAgICBfTV9tdXRhdGUoX19v
ZmYsIF9fZG9sZCwgX19kbmV3KTsNCg0KDQogICAgICAgIGlmIChfX2RuZXcpDQogICAgICAgICAg
X1NfY29weV9jaGFycyhfTV9kYXRhKCkgKyBfX29mZiwgX19rMSwgX19rMik7DQoNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz4mDQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs
bG9jPjo6DQogICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwgY29u
c3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwNCiAgICAgICAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNp
emVfdHlwZSBfX24yKQ0KICAgIHsNCiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3N0cnNpemUgPSBf
X3N0ci5zaXplKCk7DQogICAgICBpZiAoX19wb3MyID4gX19zdHJzaXplKQ0KICAgICAgICBfX3Ro
cm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIik7DQogICAgICBjb25zdCBi
b29sIF9fdGVzdG4yID0gX19uMiA8IF9fc3Ryc2l6ZSAtIF9fcG9zMjsNCiAgICAgIGNvbnN0IHNp
emVfdHlwZSBfX2ZvbGRuMiA9IF9fdGVzdG4yID8gX19uMiA6IF9fc3Ryc2l6ZSAtIF9fcG9zMjsN
CiAgICAgIHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zMSwgX19uMSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fc3RyLl9NX2RhdGEoKSArIF9fcG9zMiwgX19mb2xkbjIpOw0KICAgIH0N
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1l
IF9BbGxvYz4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Jg0KICAg
IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGFwcGVuZChjb25z
dCBiYXNpY19zdHJpbmcmIF9fc3RyKQ0KICAgIHsNCg0KDQoNCiAgICAgIHNpemVfdHlwZSBfX3Np
emUgPSBfX3N0ci5zaXplKCk7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBfX3NpemUgKyB0aGlz
LT5zaXplKCk7DQogICAgICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpKQ0KICAgICAgICB0
aGlzLT5yZXNlcnZlKF9fbGVuKTsNCiAgICAgIHJldHVybiBfTV9yZXBsYWNlX3NhZmUoX01faWVu
ZCgpLCBfTV9pZW5kKCksIF9fc3RyLl9NX2liZWdpbigpLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3N0ci5fTV9pZW5kKCkpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNpY19zdHJp
bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Jg0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz46Og0KICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBz
aXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pDQogICAgew0KDQoNCg0KICAgICAgc2l6ZV90
eXBlIF9fbGVuID0gbWluKF9fc3RyLnNpemUoKSAtIF9fcG9zLCBfX24pICsgdGhpcy0+c2l6ZSgp
Ow0KICAgICAgaWYgKF9fbGVuID4gdGhpcy0+Y2FwYWNpdHkoKSkNCiAgICAgICAgdGhpcy0+cmVz
ZXJ2ZShfX2xlbik7DQogICAgICByZXR1cm4gX01fcmVwbGFjZV9zYWZlKF9NX2llbmQoKSwgX01f
aWVuZCgpLCBfX3N0ci5fTV9jaGVjayhfX3BvcyksDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fc3RyLl9NX2ZvbGQoX19wb3MsIF9fbikpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNp
Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Jg0KICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGFwcGVuZChjb25zdCBfQ2hhclQqIF9fcywgc2l6
ZV90eXBlIF9fbikNCiAgICB7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBfX24gKyB0aGlzLT5z
aXplKCk7DQogICAgICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpKQ0KICAgICAgICB0aGlz
LT5yZXNlcnZlKF9fbGVuKTsNCiAgICAgIHJldHVybiBfTV9yZXBsYWNlX3NhZmUoX01faWVuZCgp
LCBfTV9pZW5kKCksIF9fcywgX19zICsgX19uKTsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgYmFzaWNf
c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYNCiAgICBiYXNpY19zdHJpbmc8X0NoYXJU
LCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBhcHBlbmQoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9f
YykNCiAgICB7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBfX24gKyB0aGlzLT5zaXplKCk7DQog
ICAgICBpZiAoX19sZW4gPiB0aGlzLT5jYXBhY2l0eSgpKQ0KICAgICAgICB0aGlzLT5yZXNlcnZl
KF9fbGVuKTsNCiAgICAgICByZXR1cm4gdGhpcy0+cmVwbGFjZShfTV9pZW5kKCksIF9NX2llbmQo
KSwgX19uLCBfX2MpOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBf
VHJhaXRzLCBfQWxsb2M+DQogICAgb3BlcmF0b3IrKGNvbnN0IF9DaGFyVCogX19saHMsDQogICAg
ICAgICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9f
cmhzKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg
X0FsbG9jPiBfX3N0cmluZ190eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190
eXBlOjpzaXplX3R5cGUgX19zaXplX3R5cGU7DQogICAgICBfX3NpemVfdHlwZSBfX2xlbiA9IF9U
cmFpdHM6Omxlbmd0aChfX2xocyk7DQogICAgICBfX3N0cmluZ190eXBlIF9fc3RyOw0KICAgICAg
X19zdHIucmVzZXJ2ZShfX2xlbiArIF9fcmhzLnNpemUoKSk7DQogICAgICBfX3N0ci5hcHBlbmQo
X19saHMsIF9fbGhzICsgX19sZW4pOw0KICAgICAgX19zdHIuYXBwZW5kKF9fcmhzKTsNCiAgICAg
IHJldHVybiBfX3N0cjsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPg0KICAgIG9wZXJhdG9yKyhfQ2hhclQgX19saHMsIGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQ0KICAgIHsNCiAgICAgIHR5
cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfX3N0cmluZ190eXBl
Ow0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190eXBlOjpzaXplX3R5cGUgX19zaXpl
X3R5cGU7DQogICAgICBfX3N0cmluZ190eXBlIF9fc3RyOw0KICAgICAgX19zaXplX3R5cGUgX19s
ZW4gPSBfX3Jocy5zaXplKCk7DQogICAgICBfX3N0ci5yZXNlcnZlKF9fbGVuICsgMSk7DQogICAg
ICBfX3N0ci5hcHBlbmQoX19zaXplX3R5cGUoMSksIF9fbGhzKTsNCiAgICAgIF9fc3RyLmFwcGVu
ZChfX3Jocyk7DQogICAgICByZXR1cm4gX19zdHI7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mDQogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgcmVwbGFjZShpdGVyYXRvciBfX2kxLCBpdGVyYXRv
ciBfX2kyLCBzaXplX3R5cGUgX19uMiwgX0NoYXJUIF9fYykNCiAgICB7DQogICAgICBzaXplX3R5
cGUgX19uMSA9IF9faTIgLSBfX2kxOw0KICAgICAgc2l6ZV90eXBlIF9fb2ZmMSA9IF9faTEgLSBf
TV9pYmVnaW4oKTsNCiAgICAgIGlmIChtYXhfc2l6ZSgpIC0gKHRoaXMtPnNpemUoKSAtIF9fbjEp
IDw9IF9fbjIpDQogICAgICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCJiYXNpY19zdHJpbmc6OnJl
cGxhY2UiKTsNCiAgICAgIF9NX211dGF0ZSAoX19vZmYxLCBfX24xLCBfX24yKTsNCg0KICAgICAg
aWYgKF9fbjIpDQogICAgICAgIHRyYWl0c190eXBlOjphc3NpZ24oX01fZGF0YSgpICsgX19vZmYx
LCBfX24yLCBfX2MpOw0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICB0
eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUN
CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBjb3B5KF9D
aGFyVCogX19zLCBzaXplX3R5cGUgX19uLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0DQogICAgew0K
ICAgICAgaWYgKF9fcG9zID4gdGhpcy0+c2l6ZSgpKQ0KICAgICAgICBfX3Rocm93X291dF9vZl9y
YW5nZSgiYmFzaWNfc3RyaW5nOjpjb3B5Iik7DQoNCiAgICAgIGlmIChfX24gPiB0aGlzLT5zaXpl
KCkgLSBfX3BvcykNCiAgICAgICAgX19uID0gdGhpcy0+c2l6ZSgpIC0gX19wb3M7DQoNCiAgICAg
IHRyYWl0c190eXBlOjpjb3B5KF9fcywgX01fZGF0YSgpICsgX19wb3MsIF9fbik7DQoNCiAgICAg
IHJldHVybiBfX247DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxf
Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQ0KICAgIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVf
dHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QNCiAgICB7DQogICAgICBzaXplX3R5cGUg
X19zaXplID0gdGhpcy0+c2l6ZSgpOw0KICAgICAgc2l6ZV90IF9feHBvcyA9IF9fcG9zOw0KICAg
ICAgY29uc3QgX0NoYXJUKiBfX2RhdGEgPSBfTV9kYXRhKCk7DQogICAgICBmb3IgKDsgX194cG9z
ICsgX19uIDw9IF9fc2l6ZTsgKytfX3hwb3MpDQogICAgICAgIGlmICh0cmFpdHNfdHlwZTo6Y29t
cGFyZShfX2RhdGEgKyBfX3hwb3MsIF9fcywgX19uKSA9PSAwKQ0KICAgICAgICAgIHJldHVybiBf
X3hwb3M7DQogICAgICByZXR1cm4gbnBvczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdHlwZW5hbWUg
YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlDQogICAgYmFz
aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgZmluZChfQ2hhclQgX19j
LCBzaXplX3R5cGUgX19wb3MpIGNvbnN0DQogICAgew0KICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9
IHRoaXMtPnNpemUoKTsNCiAgICAgIHNpemVfdHlwZSBfX3JldCA9IG5wb3M7DQogICAgICBpZiAo
X19wb3MgPCBfX3NpemUpDQogICAgICAgIHsNCiAgICAgICAgICBjb25zdCBfQ2hhclQqIF9fZGF0
YSA9IF9NX2RhdGEoKTsNCiAgICAgICAgICBzaXplX3R5cGUgX19uID0gX19zaXplIC0gX19wb3M7
DQogICAgICAgICAgY29uc3QgX0NoYXJUKiBfX3AgPSB0cmFpdHNfdHlwZTo6ZmluZChfX2RhdGEg
KyBfX3BvcywgX19uLCBfX2MpOw0KICAgICAgICAgIGlmIChfX3ApDQogICAgICAgICAgICBfX3Jl
dCA9IF9fcCAtIF9fZGF0YTsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fcmV0Ow0KICAgIH0N
Cg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h
bWUgX0FsbG9jPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B
bGxvYz46OnNpemVfdHlwZQ0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz46Og0KICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVf
dHlwZSBfX24pIGNvbnN0DQogICAgew0KICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNp
emUoKTsNCiAgICAgIGlmIChfX24gPD0gX19zaXplKQ0KICAgICAgICB7DQogICAgICAgICAgX19w
b3MgPSBzdGQ6Om1pbihfX3NpemUgLSBfX24sIF9fcG9zKTsNCiAgICAgICAgICBjb25zdCBfQ2hh
clQqIF9fZGF0YSA9IF9NX2RhdGEoKTsNCiAgICAgICAgICBkbw0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmNvbXBhcmUoX19kYXRhICsgX19wb3MsIF9fcywg
X19uKSA9PSAwKQ0KICAgICAgICAgICAgICAgIHJldHVybiBfX3BvczsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICB3aGlsZSAoX19wb3MtLSA+IDApOw0KICAgICAgICB9DQogICAgICByZXR1cm4g
bnBvczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlDQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry
YWl0cywgX0FsbG9jPjo6DQogICAgcmZpbmQoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zKSBj
b25zdA0KICAgIHsNCiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7DQogICAg
ICBpZiAoX19zaXplKQ0KICAgICAgICB7DQogICAgICAgICAgc2l6ZV90IF9feHBvcyA9IF9fc2l6
ZSAtIDE7DQogICAgICAgICAgaWYgKF9feHBvcyA+IF9fcG9zKQ0KICAgICAgICAgICAgX194cG9z
ID0gX19wb3M7DQoNCiAgICAgICAgICBmb3IgKCsrX194cG9zOyBfX3hwb3MtLSA+IDA7ICkNCiAg
ICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXEoX01fZGF0YSgpW19feHBvc10sIF9fYykpDQog
ICAgICAgICAgICAgIHJldHVybiBfX3hwb3M7DQogICAgICAgIH0NCiAgICAgIHJldHVybiBucG9z
Ow0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs
IHR5cGVuYW1lIF9BbGxvYz4NCiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh
aXRzLCBfQWxsb2M+OjpzaXplX3R5cGUNCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz
LCBfQWxsb2M+OjoNCiAgICBmaW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5
cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0DQogICAgew0KICAgICAgZm9yICg7IF9fbiAm
JiBfX3BvcyA8IHRoaXMtPnNpemUoKTsgKytfX3BvcykNCiAgICAgICAgew0KICAgICAgICAgIGNv
bnN0IF9DaGFyVCogX19wID0gdHJhaXRzX3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtf
X3Bvc10pOw0KICAgICAgICAgIGlmIChfX3ApDQogICAgICAgICAgICByZXR1cm4gX19wb3M7DQog
ICAgICAgIH0NCiAgICAgIHJldHVybiBucG9zOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICB0eXBlbmFt
ZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUNCiAgICBi
YXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBmaW5kX2xhc3Rfb2Yo
Y29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QN
CiAgICB7DQogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOw0KICAgICAgaWYg
KF9fc2l6ZSAmJiBfX24pDQogICAgICAgIHsNCiAgICAgICAgICBpZiAoLS1fX3NpemUgPiBfX3Bv
cykNCiAgICAgICAgICAgIF9fc2l6ZSA9IF9fcG9zOw0KICAgICAgICAgIGRvDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0
YSgpW19fc2l6ZV0pKQ0KICAgICAgICAgICAgICAgIHJldHVybiBfX3NpemU7DQogICAgICAgICAg
ICB9DQogICAgICAgICAgd2hpbGUgKF9fc2l6ZS0tICE9IDApOw0KICAgICAgICB9DQogICAgICBy
ZXR1cm4gbnBvczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9D
aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlDQogICAgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6DQogICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJU
KiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QNCiAgICB7DQogICAg
ICBzaXplX3QgX194cG9zID0gX19wb3M7DQogICAgICBmb3IgKDsgX194cG9zIDwgdGhpcy0+c2l6
ZSgpOyArK19feHBvcykNCiAgICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwg
X01fZGF0YSgpW19feHBvc10pKQ0KICAgICAgICAgIHJldHVybiBfX3hwb3M7DQogICAgICByZXR1
cm4gbnBvczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+DQogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFy
VCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlDQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwg
X1RyYWl0cywgX0FsbG9jPjo6DQogICAgZmluZF9maXJzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6
ZV90eXBlIF9fcG9zKSBjb25zdA0KICAgIHsNCiAgICAgIHNpemVfdCBfX3hwb3MgPSBfX3BvczsN
CiAgICAgIGZvciAoOyBfX3hwb3MgPCB0aGlzLT5zaXplKCk7ICsrX194cG9zKQ0KICAgICAgICBp
ZiAoIXRyYWl0c190eXBlOjplcShfTV9kYXRhKClbX194cG9zXSwgX19jKSkNCiAgICAgICAgICBy
ZXR1cm4gX194cG9zOw0KICAgICAgcmV0dXJuIG5wb3M7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHR5
cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQ0K
ICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGZpbmRfbGFz
dF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9f
bikgY29uc3QNCiAgICB7DQogICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOw0K
ICAgICAgaWYgKF9fc2l6ZSkNCiAgICAgICAgew0KICAgICAgICAgIGlmICgtLV9fc2l6ZSA+IF9f
cG9zKQ0KICAgICAgICAgICAgX19zaXplID0gX19wb3M7DQogICAgICAgICAgZG8NCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwgX01f
ZGF0YSgpW19fc2l6ZV0pKQ0KICAgICAgICAgICAgICAgIHJldHVybiBfX3NpemU7DQogICAgICAg
ICAgICB9DQogICAgICAgICAgd2hpbGUgKF9fc2l6ZS0tKTsNCiAgICAgICAgfQ0KICAgICAgcmV0
dXJuIG5wb3M7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg
X1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hh
clQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQ0KICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs
IF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGZpbmRfbGFzdF9ub3Rfb2YoX0NoYXJUIF9fYywgc2l6
ZV90eXBlIF9fcG9zKSBjb25zdA0KICAgIHsNCiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlz
LT5zaXplKCk7DQogICAgICBpZiAoX19zaXplKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKC0t
X19zaXplID4gX19wb3MpDQogICAgICAgICAgICBfX3NpemUgPSBfX3BvczsNCiAgICAgICAgICBk
bw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBpZiAoIXRyYWl0c190eXBlOjplcShfTV9k
YXRhKClbX19zaXplXSwgX19jKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gX19zaXplOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgIHdoaWxlIChfX3NpemUtLSk7DQogICAgICAgIH0NCiAgICAg
IHJldHVybiBucG9zOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbnQNCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywg
c2l6ZV90eXBlIF9fbiwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikgY29uc3QNCiAgICB7DQog
ICAgICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOw0KICAgICAgc2l6ZV90eXBlIF9f
b3NpemUgPSBfX3N0ci5zaXplKCk7DQogICAgICBpZiAoX19wb3MgPiBfX3NpemUpDQogICAgICAg
IF9fdGhyb3dfb3V0X29mX3JhbmdlKCJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsNCg0KICAgICAg
c2l6ZV90eXBlIF9fcnNpemU9IG1pbihfX3NpemUgLSBfX3BvcywgX19uKTsNCiAgICAgIHNpemVf
dHlwZSBfX2xlbiA9IG1pbihfX3JzaXplLCBfX29zaXplKTsNCiAgICAgIGludCBfX3IgPSB0cmFp
dHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCkgKyBfX3BvcywgX19zdHIuZGF0YSgpLCBfX2xlbik7
DQogICAgICBpZiAoIV9fcikNCiAgICAgICAgX19yID0gX19yc2l6ZSAtIF9fb3NpemU7DQogICAg
ICByZXR1cm4gX19yOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBpbnQNCiAgICBiYXNpY19zdHJpbmc8
X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoNCiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3BvczEs
IHNpemVfdHlwZSBfX24xLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLA0KICAgICAgICAgICAg
c2l6ZV90eXBlIF9fcG9zMiwgc2l6ZV90eXBlIF9fbjIpIGNvbnN0DQogICAgew0KICAgICAgc2l6
ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsNCiAgICAgIHNpemVfdHlwZSBfX29zaXplID0g
X19zdHIuc2l6ZSgpOw0KICAgICAgaWYgKF9fcG9zMSA+IF9fc2l6ZSB8fCBfX3BvczIgPiBfX29z
aXplKQ0KICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjpjb21wYXJl
Iik7DQoNCiAgICAgIHNpemVfdHlwZSBfX3JzaXplID0gbWluKF9fc2l6ZSAtIF9fcG9zMSwgX19u
MSk7DQogICAgICBzaXplX3R5cGUgX19yb3NpemUgPSBtaW4oX19vc2l6ZSAtIF9fcG9zMiwgX19u
Mik7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBtaW4oX19yc2l6ZSwgX19yb3NpemUpOw0KICAg
ICAgaW50IF9fciA9IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSArIF9fcG9zMSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3N0ci5kYXRhKCkgKyBfX3BvczIs
IF9fbGVuKTsNCiAgICAgIGlmICghX19yKQ0KICAgICAgICBfX3IgPSBfX3JzaXplIC0gX19yb3Np
emU7DQogICAgICByZXR1cm4gX19yOw0KICAgIH0NCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGludA0KICAgIGJh
c2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46Og0KICAgIGNvbXBhcmUoY29uc3Qg
X0NoYXJUKiBfX3MpIGNvbnN0DQogICAgew0KICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMt
PnNpemUoKTsNCiAgICAgIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRhKCks
IF9fcywgX19zaXplKTsNCiAgICAgIGlmICghX19yKQ0KICAgICAgICBfX3IgPSBfX3NpemUgLSB0
cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyk7DQogICAgICByZXR1cm4gX19yOw0KICAgIH0NCg0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPg0KICAgIGludA0KICAgIGJhc2ljX3N0cmluZyA8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+
OjoNCiAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9D
aGFyVCogX19zKSBjb25zdA0KICAgIHsNCiAgICAgIHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5z
aXplKCk7DQogICAgICBpZiAoX19wb3MgPiBfX3NpemUpDQogICAgICAgIF9fdGhyb3dfb3V0X29m
X3JhbmdlKCJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsNCg0KICAgICAgc2l6ZV90eXBlIF9fb3Np
emUgPSB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcyk7DQogICAgICBzaXplX3R5cGUgX19yc2l6ZSA9
IG1pbihfX3NpemUgLSBfX3BvcywgX19uMSk7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBtaW4o
X19yc2l6ZSwgX19vc2l6ZSk7DQogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUo
X01fZGF0YSgpICsgX19wb3MsIF9fcywgX19sZW4pOw0KICAgICAgaWYgKCFfX3IpDQogICAgICAg
IF9fciA9IF9fcnNpemUgLSBfX29zaXplOw0KICAgICAgcmV0dXJuIF9fcjsNCiAgICB9DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxs
b2M+DQogICAgaW50DQogICAgYmFzaWNfc3RyaW5nIDxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46
Og0KICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgY29uc3QgX0No
YXJUKiBfX3MsDQogICAgICAgICAgICBzaXplX3R5cGUgX19uMikgY29uc3QNCiAgICB7DQogICAg
ICBzaXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOw0KICAgICAgaWYgKF9fcG9zID4gX19z
aXplKQ0KICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgiYmFzaWNfc3RyaW5nOjpjb21wYXJl
Iik7DQoNCiAgICAgIHNpemVfdHlwZSBfX29zaXplID0gbWluKHRyYWl0c190eXBlOjpsZW5ndGgo
X19zKSwgX19uMik7DQogICAgICBzaXplX3R5cGUgX19yc2l6ZSA9IG1pbihfX3NpemUgLSBfX3Bv
cywgX19uMSk7DQogICAgICBzaXplX3R5cGUgX19sZW4gPSBtaW4oX19yc2l6ZSwgX19vc2l6ZSk7
DQogICAgICBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19wb3Ms
IF9fcywgX19sZW4pOw0KICAgICAgaWYgKCFfX3IpDQogICAgICAgIF9fciA9IF9fcnNpemUgLSBf
X29zaXplOw0KICAgICAgcmV0dXJuIF9fcjsNCiAgICB9DQoNCiAgdGVtcGxhdGUgPGNsYXNzIF9D
aGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KICAgIHZvaWQNCiAgICBfU19zdHJp
bmdfY29weShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0
ciwNCiAgICAgICAgICAgICAgICAgICBfQ2hhclQqIF9fYnVmLCB0eXBlbmFtZSBfQWxsb2M6OnNp
emVfdHlwZSBfX2J1ZnNpeikNCiAgICB7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6
c2l6ZV90eXBlIHNpemVfdHlwZTsNCiAgICAgIHNpemVfdHlwZSBfX3N0cnNpemUgPSBfX3N0ci5z
aXplKCk7DQogICAgICBzaXplX3R5cGUgX19ieXRlcyA9IG1pbihfX3N0cnNpemUsIF9fYnVmc2l6
IC0gMSk7DQogICAgICBfVHJhaXRzOjpjb3B5KF9fYnVmLCBfX3N0ci5kYXRhKCksIF9fYnl0ZXMp
Ow0KICAgICAgX19idWZbX19ieXRlc10gPSBfQ2hhclQoKTsNCiAgICB9DQoNCg0KDQoNCiAgZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3N0cmluZzxjaGFyPjsNCiAgZXh0ZXJuIHRlbXBsYXRl
DQogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYNCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08
Y2hhcj4mLCBzdHJpbmcmKTsNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYmFzaWNfb3N0cmVhbTxj
aGFyPiYNCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhcj4mLCBjb25zdCBzdHJpbmcm
KTsNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYNCiAgICBnZXRs
aW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mLCBzdHJpbmcmLCBjaGFyKTsNCiAgZXh0ZXJuIHRlbXBs
YXRlDQogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYNCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08
Y2hhcj4mLCBzdHJpbmcmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfc3RyaW5n
PHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+
Jg0KICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsNCiAg
ZXh0ZXJuIHRlbXBsYXRlDQogICAgYmFzaWNfb3N0cmVhbTx3Y2hhcl90PiYNCiAgICBvcGVyYXRv
cjw8KGJhc2ljX29zdHJlYW08d2NoYXJfdD4mLCBjb25zdCB3c3RyaW5nJik7DQogIGV4dGVybiB0
ZW1wbGF0ZQ0KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mDQogICAgZ2V0bGluZShiYXNpY19p
c3RyZWFtPHdjaGFyX3Q+Jiwgd3N0cmluZyYsIHdjaGFyX3QpOw0KICBleHRlcm4gdGVtcGxhdGUN
CiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+Jg0KICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTx3
Y2hhcl90PiYsIHdzdHJpbmcmKTsNCn0NCiMgNTggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL3N0cmluZyIgMiAzDQojIDUwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9iaXRzL2xvY2FsZWZ3ZC5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvYml0cy9mdW5jdGV4Y2VwdC5oIiAxIDMNCiMgMzQgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvZnVuY3RleGNlcHQuaCIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9leGNlcHRpb25fZGVmaW5lcy5oIiAxIDMNCiMgMzUgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvZnVuY3RleGNlcHQuaCIgMiAzDQoNCm5hbWVz
cGFjZSBzdGQNCnsNCg0KICB2b2lkDQogIF9fdGhyb3dfYmFkX2V4Y2VwdGlvbih2b2lkKTsNCg0K
DQogIHZvaWQNCiAgX190aHJvd19iYWRfYWxsb2Modm9pZCk7DQoNCg0KICB2b2lkDQogIF9fdGhy
b3dfYmFkX2Nhc3Qodm9pZCk7DQoNCiAgdm9pZA0KICBfX3Rocm93X2JhZF90eXBlaWQodm9pZCk7
DQoNCg0KICB2b2lkDQogIF9fdGhyb3dfbG9naWNfZXJyb3IoY29uc3QgY2hhciogX19zKTsNCg0K
ICB2b2lkDQogIF9fdGhyb3dfZG9tYWluX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCiAgdm9p
ZA0KICBfX3Rocm93X2ludmFsaWRfYXJndW1lbnQoY29uc3QgY2hhciogX19zKTsNCg0KICB2b2lk
DQogIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCiAgdm9pZA0KICBf
X3Rocm93X291dF9vZl9yYW5nZShjb25zdCBjaGFyKiBfX3MpOw0KDQogIHZvaWQNCiAgX190aHJv
d19ydW50aW1lX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCiAgdm9pZA0KICBfX3Rocm93X3Jh
bmdlX2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCiAgdm9pZA0KICBfX3Rocm93X292ZXJmbG93
X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7DQoNCiAgdm9pZA0KICBfX3Rocm93X3VuZGVyZmxvd19l
cnJvcihjb25zdCBjaGFyKiBfX3MpOw0KDQoNCiAgdm9pZA0KICBfX3Rocm93X2lvc19mYWlsdXJl
KGNvbnN0IGNoYXIqIF9fcyk7DQp9DQojIDUxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL2xvY2FsZWZ3ZC5oIiAyIDMNCg0KDQpuYW1lc3BhY2Ugc3RkDQp7DQoNCiAgY2xh
c3MgbG9jYWxlOw0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGlubGluZSBi
b29sDQogICAgaXNzcGFjZShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOw0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVD4NCiAgICBpbmxpbmUgYm9vbA0KICAgIGlzcHJpbnQoX0NoYXJULCBjb25z
dCBsb2NhbGUmKTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgaW5saW5lIGJv
b2wNCiAgICBpc2NudHJsKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJUPg0KICAgIGlubGluZSBib29sDQogICAgaXN1cHBlcihfQ2hhclQsIGNvbnN0
IGxvY2FsZSYpOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBpbmxpbmUgYm9v
bA0KICAgIGlzbG93ZXIoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsNCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQ+DQogICAgaW5saW5lIGJvb2wNCiAgICBpc2FscGhhKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGlubGluZSBib29s
DQogICAgaXNkaWdpdChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOw0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4NCiAgICBpbmxpbmUgYm9vbA0KICAgIGlzcHVuY3QoX0NoYXJULCBjb25zdCBs
b2NhbGUmKTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgaW5saW5lIGJvb2wN
CiAgICBpc3hkaWdpdChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOw0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVD4NCiAgICBpbmxpbmUgYm9vbA0KICAgIGlzYWxudW0oX0NoYXJULCBjb25zdCBs
b2NhbGUmKTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgaW5saW5lIGJvb2wN
CiAgICBpc2dyYXBoKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPg0KICAgIGlubGluZSBfQ2hhclQNCiAgICB0b3VwcGVyKF9DaGFyVCwgY29uc3Qg
bG9jYWxlJik7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGlubGluZSBfQ2hh
clQNCiAgICB0b2xvd2VyKF9DaGFyVCwgY29uc3QgbG9jYWxlJik7DQoNCg0KDQogIGNsYXNzIGN0
eXBlX2Jhc2U7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBjbGFzcyBjdHlwZTsN
CiAgdGVtcGxhdGU8PiBjbGFzcyBjdHlwZTxjaGFyPjsNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJUPg0KICAgIGNsYXNzIGN0eXBlX2J5bmFtZTsNCg0KDQogIGNsYXNzIGNvZGVjdnRf
YmFzZTsNCiAgY2xhc3MgX19lbmNfdHJhaXRzOw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJu
VCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1lIF9TdGF0ZVQ+DQogICAgY2xhc3MgY29kZWN2
dDsNCiAgdGVtcGxhdGU8PiBjbGFzcyBjb2RlY3Z0PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD47DQoN
Cg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRlcm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlw
ZW5hbWUgX1N0YXRlVD4NCiAgICBjbGFzcyBjb2RlY3Z0X2J5bmFtZTsNCg0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlciA9IGlzdHJlYW1idWZfaXRlcmF0b3I8
X0NoYXJUPiA+DQogICAgY2xhc3MgbnVtX2dldDsNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfT3V0SXRlciA9IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+DQogICAg
Y2xhc3MgbnVtX3B1dDsNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPiBjbGFzcyBudW1wdW5j
dDsNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPiBjbGFzcyBudW1wdW5jdF9ieW5hbWU7DQoN
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgY2xhc3MgY29sbGF0ZTsNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJUPiBjbGFzcw0KICAgIGNvbGxhdGVfYnluYW1lOw0KDQoNCiAg
Y2xhc3MgdGltZV9iYXNlOw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9J
bkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPg0KICAgIGNsYXNzIHRpbWVfZ2V0
Ow0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFt
YnVmX2l0ZXJhdG9yPF9DaGFyVD4gPg0KICAgIGNsYXNzIHRpbWVfZ2V0X2J5bmFtZTsNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlciA9IG9zdHJlYW1idWZfaXRl
cmF0b3I8X0NoYXJUPiA+DQogICAgY2xhc3MgdGltZV9wdXQ7DQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXIgPSBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4g
Pg0KICAgIGNsYXNzIHRpbWVfcHV0X2J5bmFtZTsNCg0KDQogIGNsYXNzIG1vbmV5X2Jhc2U7DQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlciA9IGlzdHJlYW1idWZf
aXRlcmF0b3I8X0NoYXJUPiA+DQogICAgY2xhc3MgbW9uZXlfZ2V0Ow0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hh
clQ+ID4NCiAgICBjbGFzcyBtb25leV9wdXQ7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
Ym9vbCBfSW50bCA9IGZhbHNlPg0KICAgIGNsYXNzIG1vbmV5cHVuY3Q7DQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bCA9IGZhbHNlPg0KICAgIGNsYXNzIG1vbmV5cHVuY3Rf
YnluYW1lOw0KDQoNCiAgY2xhc3MgbWVzc2FnZXNfYmFzZTsNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJUPg0KICAgIGNsYXNzIG1lc3NhZ2VzOw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+
DQogICAgY2xhc3MgbWVzc2FnZXNfYnluYW1lOw0KDQoNCiAgY2xhc3MgbG9jYWxlDQogIHsNCiAg
cHVibGljOg0KDQogICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgY2F0ZWdvcnk7DQoNCg0KICAgIGNs
YXNzIGZhY2V0Ow0KICAgIGNsYXNzIGlkOw0KICAgIGNsYXNzIF9JbXBsOw0KDQogICAgZnJpZW5k
IGNsYXNzIGZhY2V0Ow0KICAgIGZyaWVuZCBjbGFzcyBfSW1wbDsNCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9GYWNldD4NCiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQmDQogICAgICB1c2VfZmFj
ZXQoY29uc3QgbG9jYWxlJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+DQogICAg
ICBmcmllbmQgYm9vbA0KICAgICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7DQoN
Cg0KDQogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IG5vbmUgPSAwOw0KICAgIHN0YXRpYyBjb25z
dCBjYXRlZ29yeSBjdHlwZSA9IDFMIDw8IDA7DQogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IG51
bWVyaWMgPSAxTCA8PCAxOw0KICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBjb2xsYXRlID0gMUwg
PDwgMjsNCiAgICBzdGF0aWMgY29uc3QgY2F0ZWdvcnkgdGltZSA9IDFMIDw8IDM7DQogICAgc3Rh
dGljIGNvbnN0IGNhdGVnb3J5IG1vbmV0YXJ5ID0gMUwgPDwgNDsNCiAgICBzdGF0aWMgY29uc3Qg
Y2F0ZWdvcnkgbWVzc2FnZXMgPSAxTCA8PCA1Ow0KICAgIHN0YXRpYyBjb25zdCBjYXRlZ29yeSBh
bGwgPSAoY29sbGF0ZSB8IGN0eXBlIHwgbW9uZXRhcnkgfA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWMgfCB0aW1lIHwgbWVzc2FnZXMpOw0KDQoNCiAg
ICBsb2NhbGUoKSB0aHJvdygpOw0KDQogICAgbG9jYWxlKGNvbnN0IGxvY2FsZSYgX19vdGhlcikg
dGhyb3coKTsNCg0KICAgIGV4cGxpY2l0DQogICAgbG9jYWxlKGNvbnN0IGNoYXIqIF9fcyk7DQoN
CiAgICBsb2NhbGUoY29uc3QgbG9jYWxlJiBfX2Jhc2UsIGNvbnN0IGNoYXIqIF9fcywgY2F0ZWdv
cnkgX19jYXQpOw0KDQogICAgbG9jYWxlKGNvbnN0IGxvY2FsZSYgX19iYXNlLCBjb25zdCBsb2Nh
bGUmIF9fYWRkLCBjYXRlZ29yeSBfX2NhdCk7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFj
ZXQ+DQogICAgICBsb2NhbGUoY29uc3QgbG9jYWxlJiBfX290aGVyLCBfRmFjZXQqIF9fZik7DQoN
CiAgICB+bG9jYWxlKCkgdGhyb3coKTsNCg0KICAgIGNvbnN0IGxvY2FsZSYNCiAgICBvcGVyYXRv
cj0oY29uc3QgbG9jYWxlJiBfX290aGVyKSB0aHJvdygpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ZhY2V0Pg0KICAgICAgbG9jYWxlDQogICAgICBjb21iaW5lKGNvbnN0IGxvY2FsZSYgX19v
dGhlcikgY29uc3Q7DQoNCg0KICAgIHN0cmluZw0KICAgIG5hbWUoKSBjb25zdDsNCg0KICAgIGJv
b2wNCiAgICBvcGVyYXRvcj09KGNvbnN0IGxvY2FsZSYgX19vdGhlcikgY29uc3QgdGhyb3cgKCk7
DQoNCiAgICBpbmxpbmUgYm9vbA0KICAgIG9wZXJhdG9yIT0oY29uc3QgbG9jYWxlJiBfX290aGVy
KSBjb25zdCB0aHJvdyAoKQ0KICAgIHsgcmV0dXJuICEodGhpcy0+b3BlcmF0b3I9PShfX290aGVy
KSk7IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyLCB0eXBlbmFtZSBfVHJhaXRzLCB0
eXBlbmFtZSBfQWxsb2M+DQogICAgICBib29sDQogICAgICBvcGVyYXRvcigpKGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhciwgX1RyYWl0cywgX0FsbG9jPiYgX19zMSwNCiAgICAgICAgICAgICAgICAg
Y29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyLCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MyKSBjb25zdDsN
Cg0KDQogICAgc3RhdGljIGxvY2FsZQ0KICAgIGdsb2JhbChjb25zdCBsb2NhbGUmKTsNCg0KICAg
IHN0YXRpYyBjb25zdCBsb2NhbGUmDQogICAgY2xhc3NpYygpOw0KDQogIHByaXZhdGU6DQoNCiAg
ICBfSW1wbCogX01faW1wbDsNCg0KDQogICAgc3RhdGljIF9JbXBsKiBfU19jbGFzc2ljOw0KDQoN
CiAgICBzdGF0aWMgX0ltcGwqIF9TX2dsb2JhbDsNCg0KICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
X1NfbnVtX2NhdGVnb3JpZXMgPSA2Ow0KDQogICAgZXhwbGljaXQNCiAgICBsb2NhbGUoX0ltcGwq
KSB0aHJvdygpOw0KDQogICAgc3RhdGljIGlubGluZSB2b2lkDQogICAgX1NfaW5pdGlhbGl6ZSgp
DQogICAgew0KICAgICAgaWYgKCFfU19jbGFzc2ljKQ0KICAgICAgICBjbGFzc2ljKCk7DQogICAg
fQ0KDQogICAgc3RhdGljIGNhdGVnb3J5DQogICAgX1Nfbm9ybWFsaXplX2NhdGVnb3J5KGNhdGVn
b3J5KTsNCg0KICAgIHZvaWQNCiAgICBfTV9jb2FsZXNjZShjb25zdCBsb2NhbGUmIF9fYmFzZSwg
Y29uc3QgbG9jYWxlJiBfX2FkZCwgY2F0ZWdvcnkgX19jYXQpOw0KICB9Ow0KDQoNCg0KICBjbGFz
cyBsb2NhbGU6Ol9JbXBsDQogIHsNCiAgcHVibGljOg0KDQogICAgZnJpZW5kIGNsYXNzIGxvY2Fs
ZTsNCiAgICBmcmllbmQgY2xhc3MgbG9jYWxlOjpmYWNldDsNCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9GYWNldD4NCiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQmDQogICAgICB1c2VfZmFjZXQo
Y29uc3QgbG9jYWxlJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+DQogICAgICBm
cmllbmQgYm9vbA0KICAgICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7DQoNCiAg
cHJpdmF0ZToNCg0KICAgIF9BdG9taWNfd29yZCBfTV9yZWZlcmVuY2VzOw0KICAgIGZhY2V0Kiog
X01fZmFjZXRzOw0KICAgIHNpemVfdCBfTV9mYWNldHNfc2l6ZTsNCiAgICBjb25zdCBjaGFyKiBf
TV9uYW1lc1tfU19udW1fY2F0ZWdvcmllc107DQogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQq
IGNvbnN0IF9TX2lkX2N0eXBlW107DQogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0
IF9TX2lkX251bWVyaWNbXTsNCiAgICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1Nf
aWRfY29sbGF0ZVtdOw0KICAgIHN0YXRpYyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF90
aW1lW107DQogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX21vbmV0YXJ5
W107DQogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX21lc3NhZ2VzW107
DQogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0KiBjb25zdCBfU19mYWNldF9jYXRl
Z29yaWVzW107DQoNCiAgICBpbmxpbmUgdm9pZA0KICAgIF9NX2FkZF9yZWZlcmVuY2UoKSB0aHJv
dygpDQogICAgeyBfX2F0b21pY19hZGQoJl9NX3JlZmVyZW5jZXMsIDEpOyB9DQoNCiAgICBpbmxp
bmUgdm9pZA0KICAgIF9NX3JlbW92ZV9yZWZlcmVuY2UoKSB0aHJvdygpDQogICAgew0KICAgICAg
aWYgKF9fZXhjaGFuZ2VfYW5kX2FkZCgmX01fcmVmZXJlbmNlcywgLTEpID09IDEpDQogICAgICAg
IHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsgZGVsZXRlIHRoaXM7IH0NCiAg
ICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIF9JbXBsKGNvbnN0IF9JbXBsJiwgc2l6ZV90KTsNCiAgICBfSW1wbChjb25zdCBjaGFyKiwg
c2l6ZV90KTsNCiAgICBfSW1wbChmYWNldCoqLCBzaXplX3QsIGJvb2wpOw0KDQogICB+X0ltcGwo
KSB0aHJvdygpOw0KDQogICAgX0ltcGwoY29uc3QgX0ltcGwmKTsNCg0KICAgIHZvaWQNCiAgICBv
cGVyYXRvcj0oY29uc3QgX0ltcGwmKTsNCg0KICAgIGlubGluZSBib29sDQogICAgX01fY2hlY2tf
c2FtZV9uYW1lKCkNCiAgICB7DQogICAgICBib29sIF9fcmV0ID0gdHJ1ZTsNCiAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBfX3JldCAmJiBpIDwgX1NfbnVtX2NhdGVnb3JpZXMgLSAxOyArK2kpDQog
ICAgICAgIF9fcmV0ICY9IChzdHJjbXAoX01fbmFtZXNbaV0sIF9NX25hbWVzW2kgKyAxXSkgPT0g
MCk7DQogICAgICByZXR1cm4gX19yZXQ7DQogICAgfQ0KDQogICAgdm9pZA0KICAgIF9NX3JlcGxh
Y2VfY2F0ZWdvcmllcyhjb25zdCBfSW1wbCosIGNhdGVnb3J5KTsNCg0KICAgIHZvaWQNCiAgICBf
TV9yZXBsYWNlX2NhdGVnb3J5KGNvbnN0IF9JbXBsKiwgY29uc3QgbG9jYWxlOjppZCogY29uc3Qq
KTsNCg0KICAgIHZvaWQNCiAgICBfTV9yZXBsYWNlX2ZhY2V0KGNvbnN0IF9JbXBsKiwgY29uc3Qg
bG9jYWxlOjppZCopOw0KDQogICAgdm9pZA0KICAgIF9NX2luc3RhbGxfZmFjZXQoY29uc3QgbG9j
YWxlOjppZCosIGZhY2V0Kik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+DQogICAg
ICBpbmxpbmUgdm9pZA0KICAgICAgX01faW5pdF9mYWNldChfRmFjZXQqIF9fZmFjZXQpDQogICAg
ICB7IF9NX2luc3RhbGxfZmFjZXQoJl9GYWNldDo6aWQsIF9fZmFjZXQpOyB9DQogIH07DQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0Pg0KICAgIGxvY2FsZTo6bG9jYWxlKGNvbnN0IGxvY2Fs
ZSYgX19vdGhlciwgX0ZhY2V0KiBfX2YpDQogICAgew0KICAgICAgX01faW1wbCA9IG5ldyBfSW1w
bCgqX19vdGhlci5fTV9pbXBsLCAxKTsNCiAgICAgIF9NX2ltcGwtPl9NX2luc3RhbGxfZmFjZXQo
Jl9GYWNldDo6aWQsIF9fZik7DQogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfU19u
dW1fY2F0ZWdvcmllczsgKytfX2kpDQogICAgICAgIF9NX2ltcGwtPl9NX25hbWVzW19faV0gPSAi
KiI7DQogICAgfQ0KDQoNCiAgY2xhc3MgbG9jYWxlOjpmYWNldA0KICB7DQogIHByaXZhdGU6DQog
ICAgZnJpZW5kIGNsYXNzIGxvY2FsZTsNCiAgICBmcmllbmQgY2xhc3MgbG9jYWxlOjpfSW1wbDsN
Cg0KICAgIF9BdG9taWNfd29yZCBfTV9yZWZlcmVuY2VzOw0KDQogIHByb3RlY3RlZDoNCg0KDQog
ICAgc3RhdGljIF9fY19sb2NhbGUgX1NfY19sb2NhbGU7DQoNCiAgICBleHBsaWNpdA0KICAgIGZh
Y2V0KHNpemVfdCBfX3JlZnMgPSAwKSB0aHJvdygpOw0KDQogICAgdmlydHVhbA0KICAgIH5mYWNl
dCgpOw0KDQogICAgc3RhdGljIHZvaWQNCiAgICBfU19jcmVhdGVfY19sb2NhbGUoX19jX2xvY2Fs
ZSYgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsDQogICAgICAgICAgICAgICAgICAgICAgIF9fY19s
b2NhbGUgX19vbGQgPSAwKTsNCg0KICAgIHN0YXRpYyBfX2NfbG9jYWxlDQogICAgX1NfY2xvbmVf
Y19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKTsNCg0KICAgIHN0YXRpYyB2b2lkDQogICAgX1Nf
ZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpOw0KDQogIHByaXZhdGU6DQogICAg
dm9pZA0KICAgIF9NX2FkZF9yZWZlcmVuY2UoKSB0aHJvdygpOw0KDQogICAgdm9pZA0KICAgIF9N
X3JlbW92ZV9yZWZlcmVuY2UoKSB0aHJvdygpOw0KDQogICAgZmFjZXQoY29uc3QgZmFjZXQmKTsN
Cg0KICAgIHZvaWQNCiAgICBvcGVyYXRvcj0oY29uc3QgZmFjZXQmKTsNCiAgfTsNCg0KDQoNCiAg
Y2xhc3MgbG9jYWxlOjppZA0KICB7DQogIHByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIGxvY2Fs
ZTsNCiAgICBmcmllbmQgY2xhc3MgbG9jYWxlOjpfSW1wbDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfRmFjZXQ+DQogICAgICBmcmllbmQgY29uc3QgX0ZhY2V0Jg0KICAgICAgdXNlX2ZhY2V0KGNv
bnN0IGxvY2FsZSYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4NCiAgICAgIGZyaWVu
ZCBib29sDQogICAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJikgdGhyb3cgKCk7DQoNCg0KDQoN
CiAgICBtdXRhYmxlIHNpemVfdCBfTV9pbmRleDsNCg0KDQogICAgc3RhdGljIF9BdG9taWNfd29y
ZCBfU19oaWdod2F0ZXI7DQoNCiAgICB2b2lkDQogICAgb3BlcmF0b3I9KGNvbnN0IGlkJik7DQoN
CiAgICBpZChjb25zdCBpZCYpOw0KDQogIHB1YmxpYzoNCg0KDQogICAgaWQoKTsNCg0KICAgIGlu
bGluZSBzaXplX3QNCiAgICBfTV9pZCgpIGNvbnN0DQogICAgew0KICAgICAgaWYgKCFfTV9pbmRl
eCkNCiAgICAgICAgX01faW5kZXggPSAxICsgX19leGNoYW5nZV9hbmRfYWRkKCZfU19oaWdod2F0
ZXIsIDEpOw0KICAgICAgcmV0dXJuIF9NX2luZGV4IC0gMTsNCiAgICB9DQogIH07DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ZhY2V0Pg0KICAgIGNvbnN0IF9GYWNldCYNCiAgICB1c2VfZmFjZXQo
Y29uc3QgbG9jYWxlJiBfX2xvYyk7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0Pg0KICAg
IGJvb2wNCiAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJiBfX2xvYykgdGhyb3coKTsNCn0NCiMg
NDkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2lvcyIgMiAzDQojIDEgInQ6L21z
eXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvaW9zX2Jhc2UuaCIgMSAzDQojIDQ0ICJ0
Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2lvc19iYXNlLmgiIDMNCg0KDQoN
Cm5hbWVzcGFjZSBzdGQNCnsNCg0KDQoNCg0KICBlbnVtIF9Jb3NfRm10ZmxhZ3MgeyBfTV9pb3Nf
Zm10ZmxhZ3NfZW5kID0gMUwgPDwgMTYgfTsNCg0KICBpbmxpbmUgX0lvc19GbXRmbGFncw0KICBv
cGVyYXRvciYoX0lvc19GbXRmbGFncyBfX2EsIF9Jb3NfRm10ZmxhZ3MgX19iKQ0KICB7IHJldHVy
biBfSW9zX0ZtdGZsYWdzKHN0YXRpY19jYXN0PGludD4oX19hKSAmIHN0YXRpY19jYXN0PGludD4o
X19iKSk7IH0NCg0KICBpbmxpbmUgX0lvc19GbXRmbGFncw0KICBvcGVyYXRvcnwoX0lvc19GbXRm
bGFncyBfX2EsIF9Jb3NfRm10ZmxhZ3MgX19iKQ0KICB7IHJldHVybiBfSW9zX0ZtdGZsYWdzKHN0
YXRpY19jYXN0PGludD4oX19hKSB8IHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0NCg0KICBpbmxp
bmUgX0lvc19GbXRmbGFncw0KICBvcGVyYXRvcl4oX0lvc19GbXRmbGFncyBfX2EsIF9Jb3NfRm10
ZmxhZ3MgX19iKQ0KICB7IHJldHVybiBfSW9zX0ZtdGZsYWdzKHN0YXRpY19jYXN0PGludD4oX19h
KSBeIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0NCg0KICBpbmxpbmUgX0lvc19GbXRmbGFncw0K
ICBvcGVyYXRvcnw9KF9Jb3NfRm10ZmxhZ3MmIF9fYSwgX0lvc19GbXRmbGFncyBfX2IpDQogIHsg
cmV0dXJuIF9fYSA9IF9fYSB8IF9fYjsgfQ0KDQogIGlubGluZSBfSW9zX0ZtdGZsYWdzDQogIG9w
ZXJhdG9yJj0oX0lvc19GbXRmbGFncyYgX19hLCBfSW9zX0ZtdGZsYWdzIF9fYikNCiAgeyByZXR1
cm4gX19hID0gX19hICYgX19iOyB9DQoNCiAgaW5saW5lIF9Jb3NfRm10ZmxhZ3MNCiAgb3BlcmF0
b3JePShfSW9zX0ZtdGZsYWdzJiBfX2EsIF9Jb3NfRm10ZmxhZ3MgX19iKQ0KICB7IHJldHVybiBf
X2EgPSBfX2EgXiBfX2I7IH0NCg0KICBpbmxpbmUgX0lvc19GbXRmbGFncw0KICBvcGVyYXRvcn4o
X0lvc19GbXRmbGFncyBfX2EpDQogIHsgcmV0dXJuIF9Jb3NfRm10ZmxhZ3MofnN0YXRpY19jYXN0
PGludD4oX19hKSk7IH0NCg0KDQogIGVudW0gX0lvc19PcGVubW9kZSB7IF9NX2lvc19vcGVubW9k
ZV9lbmQgPSAxTCA8PCAxNiB9Ow0KDQogIGlubGluZSBfSW9zX09wZW5tb2RlDQogIG9wZXJhdG9y
JihfSW9zX09wZW5tb2RlIF9fYSwgX0lvc19PcGVubW9kZSBfX2IpDQogIHsgcmV0dXJuIF9Jb3Nf
T3Blbm1vZGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpICYgc3RhdGljX2Nhc3Q8aW50PihfX2IpKTsg
fQ0KDQogIGlubGluZSBfSW9zX09wZW5tb2RlDQogIG9wZXJhdG9yfChfSW9zX09wZW5tb2RlIF9f
YSwgX0lvc19PcGVubW9kZSBfX2IpDQogIHsgcmV0dXJuIF9Jb3NfT3Blbm1vZGUoc3RhdGljX2Nh
c3Q8aW50PihfX2EpIHwgc3RhdGljX2Nhc3Q8aW50PihfX2IpKTsgfQ0KDQogIGlubGluZSBfSW9z
X09wZW5tb2RlDQogIG9wZXJhdG9yXihfSW9zX09wZW5tb2RlIF9fYSwgX0lvc19PcGVubW9kZSBf
X2IpDQogIHsgcmV0dXJuIF9Jb3NfT3Blbm1vZGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpIF4gc3Rh
dGljX2Nhc3Q8aW50PihfX2IpKTsgfQ0KDQogIGlubGluZSBfSW9zX09wZW5tb2RlDQogIG9wZXJh
dG9yfD0oX0lvc19PcGVubW9kZSYgX19hLCBfSW9zX09wZW5tb2RlIF9fYikNCiAgeyByZXR1cm4g
X19hID0gX19hIHwgX19iOyB9DQoNCiAgaW5saW5lIF9Jb3NfT3Blbm1vZGUNCiAgb3BlcmF0b3Im
PShfSW9zX09wZW5tb2RlJiBfX2EsIF9Jb3NfT3Blbm1vZGUgX19iKQ0KICB7IHJldHVybiBfX2Eg
PSBfX2EgJiBfX2I7IH0NCg0KICBpbmxpbmUgX0lvc19PcGVubW9kZQ0KICBvcGVyYXRvcl49KF9J
b3NfT3Blbm1vZGUmIF9fYSwgX0lvc19PcGVubW9kZSBfX2IpDQogIHsgcmV0dXJuIF9fYSA9IF9f
YSBeIF9fYjsgfQ0KDQogIGlubGluZSBfSW9zX09wZW5tb2RlDQogIG9wZXJhdG9yfihfSW9zX09w
ZW5tb2RlIF9fYSkNCiAgeyByZXR1cm4gX0lvc19PcGVubW9kZSh+c3RhdGljX2Nhc3Q8aW50Pihf
X2EpKTsgfQ0KDQoNCiAgZW51bSBfSW9zX0lvc3RhdGUgeyBfTV9pb3NfaW9zdGF0ZV9lbmQgPSAx
TCA8PCAxNiB9Ow0KDQogIGlubGluZSBfSW9zX0lvc3RhdGUNCiAgb3BlcmF0b3ImKF9Jb3NfSW9z
dGF0ZSBfX2EsIF9Jb3NfSW9zdGF0ZSBfX2IpDQogIHsgcmV0dXJuIF9Jb3NfSW9zdGF0ZShzdGF0
aWNfY2FzdDxpbnQ+KF9fYSkgJiBzdGF0aWNfY2FzdDxpbnQ+KF9fYikpOyB9DQoNCiAgaW5saW5l
IF9Jb3NfSW9zdGF0ZQ0KICBvcGVyYXRvcnwoX0lvc19Jb3N0YXRlIF9fYSwgX0lvc19Jb3N0YXRl
IF9fYikNCiAgeyByZXR1cm4gX0lvc19Jb3N0YXRlKHN0YXRpY19jYXN0PGludD4oX19hKSB8IHN0
YXRpY19jYXN0PGludD4oX19iKSk7IH0NCg0KICBpbmxpbmUgX0lvc19Jb3N0YXRlDQogIG9wZXJh
dG9yXihfSW9zX0lvc3RhdGUgX19hLCBfSW9zX0lvc3RhdGUgX19iKQ0KICB7IHJldHVybiBfSW9z
X0lvc3RhdGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpIF4gc3RhdGljX2Nhc3Q8aW50PihfX2IpKTsg
fQ0KDQogIGlubGluZSBfSW9zX0lvc3RhdGUNCiAgb3BlcmF0b3J8PShfSW9zX0lvc3RhdGUmIF9f
YSwgX0lvc19Jb3N0YXRlIF9fYikNCiAgeyByZXR1cm4gX19hID0gX19hIHwgX19iOyB9DQoNCiAg
aW5saW5lIF9Jb3NfSW9zdGF0ZQ0KICBvcGVyYXRvciY9KF9Jb3NfSW9zdGF0ZSYgX19hLCBfSW9z
X0lvc3RhdGUgX19iKQ0KICB7IHJldHVybiBfX2EgPSBfX2EgJiBfX2I7IH0NCg0KICBpbmxpbmUg
X0lvc19Jb3N0YXRlDQogIG9wZXJhdG9yXj0oX0lvc19Jb3N0YXRlJiBfX2EsIF9Jb3NfSW9zdGF0
ZSBfX2IpDQogIHsgcmV0dXJuIF9fYSA9IF9fYSBeIF9fYjsgfQ0KDQogIGlubGluZSBfSW9zX0lv
c3RhdGUNCiAgb3BlcmF0b3J+KF9Jb3NfSW9zdGF0ZSBfX2EpDQogIHsgcmV0dXJuIF9Jb3NfSW9z
dGF0ZSh+c3RhdGljX2Nhc3Q8aW50PihfX2EpKTsgfQ0KDQogIGVudW0gX0lvc19TZWVrZGlyIHsg
X01faW9zX3NlZWtkaXJfZW5kID0gMUwgPDwgMTYgfTsNCg0KDQogIGNsYXNzIGlvc19iYXNlDQog
IHsNCiAgcHVibGljOg0KDQoNCiAgICBjbGFzcyBmYWlsdXJlIDogcHVibGljIGV4Y2VwdGlvbg0K
ICAgIHsNCiAgICBwdWJsaWM6DQoNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIGZhaWx1cmUoY29u
c3Qgc3RyaW5nJiBfX3N0cikgdGhyb3coKTsNCg0KDQoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5m
YWlsdXJlKCkgdGhyb3coKTsNCg0KICAgICAgdmlydHVhbCBjb25zdCBjaGFyKg0KICAgICAgd2hh
dCgpIGNvbnN0IHRocm93KCk7DQoNCiAgICBwcml2YXRlOg0KICAgICAgZW51bSB7IF9NX2J1ZnNp
emUgPSAyNTYgfTsNCiAgICAgIGNoYXIgX01fbmFtZVtfTV9idWZzaXplXTsNCg0KICAgIH07DQoN
Cg0KICAgIHR5cGVkZWYgX0lvc19GbXRmbGFncyBmbXRmbGFnczsNCg0KICAgIHN0YXRpYyBjb25z
dCBmbXRmbGFncyBib29sYWxwaGEgPSBmbXRmbGFncyhfX2lvc19mbGFnczo6X1NfYm9vbGFscGhh
KTsNCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgZGVjID0gZm10ZmxhZ3MoX19pb3NfZmxhZ3M6
Ol9TX2RlYyk7DQogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGZpeGVkID0gZm10ZmxhZ3MoX19p
b3NfZmxhZ3M6Ol9TX2ZpeGVkKTsNCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgaGV4ID0gZm10
ZmxhZ3MoX19pb3NfZmxhZ3M6Ol9TX2hleCk7DQogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGlu
dGVybmFsID0gZm10ZmxhZ3MoX19pb3NfZmxhZ3M6Ol9TX2ludGVybmFsKTsNCiAgICBzdGF0aWMg
Y29uc3QgZm10ZmxhZ3MgbGVmdCA9IGZtdGZsYWdzKF9faW9zX2ZsYWdzOjpfU19sZWZ0KTsNCiAg
ICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgb2N0ID0gZm10ZmxhZ3MoX19pb3NfZmxhZ3M6Ol9TX29j
dCk7DQogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHJpZ2h0ID0gZm10ZmxhZ3MoX19pb3NfZmxh
Z3M6Ol9TX3JpZ2h0KTsNCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2NpZW50aWZpYyA9IGZt
dGZsYWdzKF9faW9zX2ZsYWdzOjpfU19zY2llbnRpZmljKTsNCiAgICBzdGF0aWMgY29uc3QgZm10
ZmxhZ3Mgc2hvd2Jhc2UgPSBmbXRmbGFncyhfX2lvc19mbGFnczo6X1Nfc2hvd2Jhc2UpOw0KICAg
IHN0YXRpYyBjb25zdCBmbXRmbGFncyBzaG93cG9pbnQgPSBmbXRmbGFncyhfX2lvc19mbGFnczo6
X1Nfc2hvd3BvaW50KTsNCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2hvd3BvcyA9IGZtdGZs
YWdzKF9faW9zX2ZsYWdzOjpfU19zaG93cG9zKTsNCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mg
c2tpcHdzID0gZm10ZmxhZ3MoX19pb3NfZmxhZ3M6Ol9TX3NraXB3cyk7DQogICAgc3RhdGljIGNv
bnN0IGZtdGZsYWdzIHVuaXRidWYgPSBmbXRmbGFncyhfX2lvc19mbGFnczo6X1NfdW5pdGJ1Zik7
DQogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHVwcGVyY2FzZSA9IGZtdGZsYWdzKF9faW9zX2Zs
YWdzOjpfU191cHBlcmNhc2UpOw0KICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBhZGp1c3RmaWVs
ZCA9IGZtdGZsYWdzKF9faW9zX2ZsYWdzOjpfU19hZGp1c3RmaWVsZCk7DQogICAgc3RhdGljIGNv
bnN0IGZtdGZsYWdzIGJhc2VmaWVsZCA9IGZtdGZsYWdzKF9faW9zX2ZsYWdzOjpfU19iYXNlZmll
bGQpOw0KICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBmbG9hdGZpZWxkID0gZm10ZmxhZ3MoX19p
b3NfZmxhZ3M6Ol9TX2Zsb2F0ZmllbGQpOw0KDQoNCiAgICB0eXBlZGVmIF9Jb3NfSW9zdGF0ZSBp
b3N0YXRlOw0KICAgIHN0YXRpYyBjb25zdCBpb3N0YXRlIGJhZGJpdCA9IGlvc3RhdGUoX19pb3Nf
ZmxhZ3M6Ol9TX2JhZGJpdCk7DQogICAgc3RhdGljIGNvbnN0IGlvc3RhdGUgZW9mYml0ID0gaW9z
dGF0ZShfX2lvc19mbGFnczo6X1NfZW9mYml0KTsNCiAgICBzdGF0aWMgY29uc3QgaW9zdGF0ZSBm
YWlsYml0ID0gaW9zdGF0ZShfX2lvc19mbGFnczo6X1NfZmFpbGJpdCk7DQogICAgc3RhdGljIGNv
bnN0IGlvc3RhdGUgZ29vZGJpdCA9IGlvc3RhdGUoMCk7DQoNCg0KICAgIHR5cGVkZWYgX0lvc19P
cGVubW9kZSBvcGVubW9kZTsNCiAgICBzdGF0aWMgY29uc3Qgb3Blbm1vZGUgYXBwID0gb3Blbm1v
ZGUoX19pb3NfZmxhZ3M6Ol9TX2FwcCk7DQogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGF0ZSA9
IG9wZW5tb2RlKF9faW9zX2ZsYWdzOjpfU19hdGUpOw0KICAgIHN0YXRpYyBjb25zdCBvcGVubW9k
ZSBiaW5hcnkgPSBvcGVubW9kZShfX2lvc19mbGFnczo6X1NfYmluKTsNCiAgICBzdGF0aWMgY29u
c3Qgb3Blbm1vZGUgaW4gPSBvcGVubW9kZShfX2lvc19mbGFnczo6X1NfaW4pOw0KICAgIHN0YXRp
YyBjb25zdCBvcGVubW9kZSBvdXQgPSBvcGVubW9kZShfX2lvc19mbGFnczo6X1Nfb3V0KTsNCiAg
ICBzdGF0aWMgY29uc3Qgb3Blbm1vZGUgdHJ1bmMgPSBvcGVubW9kZShfX2lvc19mbGFnczo6X1Nf
dHJ1bmMpOw0KDQoNCiAgICB0eXBlZGVmIF9Jb3NfU2Vla2RpciBzZWVrZGlyOw0KICAgIHN0YXRp
YyBjb25zdCBzZWVrZGlyIGJlZyA9IHNlZWtkaXIoMCk7DQogICAgc3RhdGljIGNvbnN0IHNlZWtk
aXIgY3VyID0gc2Vla2RpcigoMSkpOw0KICAgIHN0YXRpYyBjb25zdCBzZWVrZGlyIGVuZCA9IHNl
ZWtkaXIoKDIpKTsNCiMgMjI2ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L2lvc19iYXNlLmgiIDMNCiAgICBlbnVtIGV2ZW50DQogICAgew0KICAgICAgZXJhc2VfZXZlbnQs
DQogICAgICBpbWJ1ZV9ldmVudCwNCiAgICAgIGNvcHlmbXRfZXZlbnQNCiAgICB9Ow0KDQogICAg
dHlwZWRlZiB2b2lkICgqZXZlbnRfY2FsbGJhY2spIChldmVudCwgaW9zX2Jhc2UmLCBpbnQpOw0K
DQogICAgdm9pZA0KICAgIHJlZ2lzdGVyX2NhbGxiYWNrKGV2ZW50X2NhbGxiYWNrIF9fZm4sIGlu
dCBfX2luZGV4KTsNCg0KICBwcm90ZWN0ZWQ6DQoNCiAgICBzdHJlYW1zaXplIF9NX3ByZWNpc2lv
bjsNCiAgICBzdHJlYW1zaXplIF9NX3dpZHRoOw0KICAgIGZtdGZsYWdzIF9NX2ZsYWdzOw0KICAg
IGlvc3RhdGUgX01fZXhjZXB0aW9uOw0KICAgIGlvc3RhdGUgX01fc3RyZWFtYnVmX3N0YXRlOw0K
DQoNCg0KICAgIHN0cnVjdCBfQ2FsbGJhY2tfbGlzdA0KICAgIHsNCg0KICAgICAgX0NhbGxiYWNr
X2xpc3QqIF9NX25leHQ7DQogICAgICBpb3NfYmFzZTo6ZXZlbnRfY2FsbGJhY2sgX01fZm47DQog
ICAgICBpbnQgX01faW5kZXg7DQogICAgICBfQXRvbWljX3dvcmQgX01fcmVmY291bnQ7DQoNCiAg
ICAgIF9DYWxsYmFja19saXN0KGlvc19iYXNlOjpldmVudF9jYWxsYmFjayBfX2ZuLCBpbnQgX19p
bmRleCwNCiAgICAgICAgICAgICAgICAgICAgIF9DYWxsYmFja19saXN0KiBfX2NiKQ0KICAgICAg
OiBfTV9uZXh0KF9fY2IpLCBfTV9mbihfX2ZuKSwgX01faW5kZXgoX19pbmRleCksIF9NX3JlZmNv
dW50KDApIHsgfQ0KDQogICAgICB2b2lkDQogICAgICBfTV9hZGRfcmVmZXJlbmNlKCkgeyBfX2F0
b21pY19hZGQoJl9NX3JlZmNvdW50LCAxKTsgfQ0KDQoNCiAgICAgIGludA0KICAgICAgX01fcmVt
b3ZlX3JlZmVyZW5jZSgpIHsgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZCgmX01fcmVmY291bnQs
IC0xKTsgfQ0KICAgIH07DQoNCiAgICAgX0NhbGxiYWNrX2xpc3QqIF9NX2NhbGxiYWNrczsNCg0K
ICAgIHZvaWQNCiAgICBfTV9jYWxsX2NhbGxiYWNrcyhldmVudCBfX2V2KSB0aHJvdygpOw0KDQog
ICAgdm9pZA0KICAgIF9NX2Rpc3Bvc2VfY2FsbGJhY2tzKHZvaWQpOw0KDQoNCiAgICBzdHJ1Y3Qg
X1dvcmRzDQogICAgew0KICAgICAgdm9pZCogX01fcHdvcmQ7DQogICAgICBsb25nIF9NX2l3b3Jk
Ow0KICAgICAgX1dvcmRzKCkgOiBfTV9wd29yZCgwKSwgX01faXdvcmQoMCkgeyB9DQogICAgfTsN
Cg0KDQogICAgX1dvcmRzIF9NX3dvcmRfemVybzsNCg0KDQogICAgc3RhdGljIGNvbnN0IGludCBf
U19sb2NhbF93b3JkX3NpemUgPSA4Ow0KICAgIF9Xb3JkcyBfTV9sb2NhbF93b3JkW19TX2xvY2Fs
X3dvcmRfc2l6ZV07DQoNCg0KICAgIGludCBfTV93b3JkX3NpemU7DQogICAgX1dvcmRzKiBfTV93
b3JkOw0KDQogICAgX1dvcmRzJg0KICAgIF9NX2dyb3dfd29yZHMoaW50IF9faW5kZXgpOw0KDQoN
CiAgICBsb2NhbGUgX01faW9zX2xvY2FsZTsNCg0KICAgIHZvaWQNCiAgICBfTV9pbml0KCk7DQoN
CiAgcHVibGljOg0KDQoNCg0KDQoNCiAgICBjbGFzcyBJbml0DQogICAgew0KICAgICAgZnJpZW5k
IGNsYXNzIGlvc19iYXNlOw0KICAgIHB1YmxpYzoNCiAgICAgIEluaXQoKTsNCiAgICAgIH5Jbml0
KCk7DQoNCiAgICAgIHN0YXRpYyB2b2lkDQogICAgICBfU19pb3NfY3JlYXRlKGJvb2wgX19zeW5j
KTsNCg0KICAgICAgc3RhdGljIHZvaWQNCiAgICAgIF9TX2lvc19kZXN0cm95KCk7DQoNCiAgICBw
cml2YXRlOg0KICAgICAgc3RhdGljIGludCBfU19pb3NfYmFzZV9pbml0Ow0KICAgICAgc3RhdGlj
IGJvb2wgX1Nfc3luY2VkX3dpdGhfc3RkaW87DQogICAgfTsNCg0KDQogICAgaW5saW5lIGZtdGZs
YWdzDQogICAgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBfTV9mbGFnczsgfQ0KDQogICAgaW5saW5l
IGZtdGZsYWdzDQogICAgZmxhZ3MoZm10ZmxhZ3MgX19mbXRmbCkNCiAgICB7DQogICAgICBmbXRm
bGFncyBfX29sZCA9IF9NX2ZsYWdzOw0KICAgICAgX01fZmxhZ3MgPSBfX2ZtdGZsOw0KICAgICAg
cmV0dXJuIF9fb2xkOw0KICAgIH0NCg0KICAgIGlubGluZSBmbXRmbGFncw0KICAgIHNldGYoZm10
ZmxhZ3MgX19mbXRmbCkNCiAgICB7DQogICAgICBmbXRmbGFncyBfX29sZCA9IF9NX2ZsYWdzOw0K
ICAgICAgX01fZmxhZ3MgfD0gX19mbXRmbDsNCiAgICAgIHJldHVybiBfX29sZDsNCiAgICB9DQoN
CiAgICBpbmxpbmUgZm10ZmxhZ3MNCiAgICBzZXRmKGZtdGZsYWdzIF9fZm10ZmwsIGZtdGZsYWdz
IF9fbWFzaykNCiAgICB7DQogICAgICBmbXRmbGFncyBfX29sZCA9IF9NX2ZsYWdzOw0KICAgICAg
X01fZmxhZ3MgJj0gfl9fbWFzazsNCiAgICAgIF9NX2ZsYWdzIHw9IChfX2ZtdGZsICYgX19tYXNr
KTsNCiAgICAgIHJldHVybiBfX29sZDsNCiAgICB9DQoNCiAgICBpbmxpbmUgdm9pZA0KICAgIHVu
c2V0ZihmbXRmbGFncyBfX21hc2spIHsgX01fZmxhZ3MgJj0gfl9fbWFzazsgfQ0KDQogICAgaW5s
aW5lIHN0cmVhbXNpemUNCiAgICBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBfTV9wcmVjaXNp
b247IH0NCg0KICAgIGlubGluZSBzdHJlYW1zaXplDQogICAgcHJlY2lzaW9uKHN0cmVhbXNpemUg
X19wcmVjKQ0KICAgIHsNCiAgICAgIHN0cmVhbXNpemUgX19vbGQgPSBfTV9wcmVjaXNpb247DQog
ICAgICBfTV9wcmVjaXNpb24gPSBfX3ByZWM7DQogICAgICByZXR1cm4gX19vbGQ7DQogICAgfQ0K
DQogICAgaW5saW5lIHN0cmVhbXNpemUNCiAgICB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIF9NX3dp
ZHRoOyB9DQoNCiAgICBpbmxpbmUgc3RyZWFtc2l6ZQ0KICAgIHdpZHRoKHN0cmVhbXNpemUgX193
aWRlKQ0KICAgIHsNCiAgICAgIHN0cmVhbXNpemUgX19vbGQgPSBfTV93aWR0aDsNCiAgICAgIF9N
X3dpZHRoID0gX193aWRlOw0KICAgICAgcmV0dXJuIF9fb2xkOw0KICAgIH0NCg0KICAgIHN0YXRp
YyBib29sDQogICAgc3luY193aXRoX3N0ZGlvKGJvb2wgX19zeW5jID0gdHJ1ZSk7DQoNCg0KICAg
IGxvY2FsZQ0KICAgIGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2MpOw0KDQogICAgaW5saW5lIGxv
Y2FsZQ0KICAgIGdldGxvYygpIGNvbnN0IHsgcmV0dXJuIF9NX2lvc19sb2NhbGU7IH0NCg0KDQog
ICAgc3RhdGljIGludA0KICAgIHhhbGxvYygpIHRocm93KCk7DQoNCiAgICBpbmxpbmUgbG9uZyYN
CiAgICBpd29yZChpbnQgX19peCkNCiAgICB7DQogICAgICBfV29yZHMmIF9fd29yZCA9IChfX2l4
IDwgX01fd29yZF9zaXplKQ0KICAgICAgICAgICAgICAgICAgICAgICAgPyBfTV93b3JkW19faXhd
IDogX01fZ3Jvd193b3JkcyhfX2l4KTsNCiAgICAgIHJldHVybiBfX3dvcmQuX01faXdvcmQ7DQog
ICAgfQ0KDQogICAgaW5saW5lIHZvaWQqJg0KICAgIHB3b3JkKGludCBfX2l4KQ0KICAgIHsNCiAg
ICAgIF9Xb3JkcyYgX193b3JkID0gKF9faXggPCBfTV93b3JkX3NpemUpDQogICAgICAgICAgICAg
ICAgICAgICAgICA/IF9NX3dvcmRbX19peF0gOiBfTV9ncm93X3dvcmRzKF9faXgpOw0KICAgICAg
cmV0dXJuIF9fd29yZC5fTV9wd29yZDsNCiAgICB9DQoNCg0KICAgIH5pb3NfYmFzZSgpOw0KDQog
IHByb3RlY3RlZDoNCiAgICBpb3NfYmFzZSgpOw0KDQoNCg0KICBwcml2YXRlOg0KICAgIGlvc19i
YXNlKGNvbnN0IGlvc19iYXNlJik7DQoNCiAgICBpb3NfYmFzZSYNCiAgICBvcGVyYXRvcj0oY29u
c3QgaW9zX2Jhc2UmKTsNCg0KICB9Ow0KDQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBib29sYWxw
aGEoaW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpib29s
YWxwaGEpOw0KICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KICBpbmxpbmUgaW9zX2Jhc2UmDQog
IG5vYm9vbGFscGhhKGlvc19iYXNlJiBfX2Jhc2UpDQogIHsNCiAgICBfX2Jhc2UudW5zZXRmKGlv
c19iYXNlOjpib29sYWxwaGEpOw0KICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KICBpbmxpbmUg
aW9zX2Jhc2UmDQogIHNob3diYXNlKGlvc19iYXNlJiBfX2Jhc2UpDQogIHsNCiAgICBfX2Jhc2Uu
c2V0Zihpb3NfYmFzZTo6c2hvd2Jhc2UpOw0KICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KICBp
bmxpbmUgaW9zX2Jhc2UmDQogIG5vc2hvd2Jhc2UoaW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAg
IF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNob3diYXNlKTsNCiAgICByZXR1cm4gX19iYXNlOw0K
ICB9DQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBzaG93cG9pbnQoaW9zX2Jhc2UmIF9fYmFzZSkN
CiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzaG93cG9pbnQpOw0KICAgIHJldHVybiBf
X2Jhc2U7DQogIH0NCg0KICBpbmxpbmUgaW9zX2Jhc2UmDQogIG5vc2hvd3BvaW50KGlvc19iYXNl
JiBfX2Jhc2UpDQogIHsNCiAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjpzaG93cG9pbnQpOw0K
ICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KICBpbmxpbmUgaW9zX2Jhc2UmDQogIHNob3dwb3Mo
aW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzaG93cG9z
KTsNCiAgICByZXR1cm4gX19iYXNlOw0KICB9DQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBub3No
b3dwb3MoaW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6
OnNob3dwb3MpOw0KICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KICBpbmxpbmUgaW9zX2Jhc2Um
DQogIHNraXB3cyhpb3NfYmFzZSYgX19iYXNlKQ0KICB7DQogICAgX19iYXNlLnNldGYoaW9zX2Jh
c2U6OnNraXB3cyk7DQogICAgcmV0dXJuIF9fYmFzZTsNCiAgfQ0KDQogIGlubGluZSBpb3NfYmFz
ZSYNCiAgbm9za2lwd3MoaW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS51bnNldGYo
aW9zX2Jhc2U6OnNraXB3cyk7DQogICAgcmV0dXJuIF9fYmFzZTsNCiAgfQ0KDQogIGlubGluZSBp
b3NfYmFzZSYNCiAgdXBwZXJjYXNlKGlvc19iYXNlJiBfX2Jhc2UpDQogIHsNCiAgICBfX2Jhc2Uu
c2V0Zihpb3NfYmFzZTo6dXBwZXJjYXNlKTsNCiAgICByZXR1cm4gX19iYXNlOw0KICB9DQoNCiAg
aW5saW5lIGlvc19iYXNlJg0KICBub3VwcGVyY2FzZShpb3NfYmFzZSYgX19iYXNlKQ0KICB7DQog
ICAgX19iYXNlLnVuc2V0Zihpb3NfYmFzZTo6dXBwZXJjYXNlKTsNCiAgICByZXR1cm4gX19iYXNl
Ow0KICB9DQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICB1bml0YnVmKGlvc19iYXNlJiBfX2Jhc2Up
DQogIHsNCiAgICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnVuaXRidWYpOw0KICAgICByZXR1cm4g
X19iYXNlOw0KICB9DQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBub3VuaXRidWYoaW9zX2Jhc2Um
IF9fYmFzZSkNCiAgew0KICAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjp1bml0YnVmKTsNCiAg
ICAgcmV0dXJuIF9fYmFzZTsNCiAgfQ0KDQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBpbnRlcm5h
bChpb3NfYmFzZSYgX19iYXNlKQ0KICB7DQogICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjppbnRl
cm5hbCwgaW9zX2Jhc2U6OmFkanVzdGZpZWxkKTsNCiAgICAgcmV0dXJuIF9fYmFzZTsNCiAgfQ0K
DQogIGlubGluZSBpb3NfYmFzZSYNCiAgbGVmdChpb3NfYmFzZSYgX19iYXNlKQ0KICB7DQogICAg
X19iYXNlLnNldGYoaW9zX2Jhc2U6OmxlZnQsIGlvc19iYXNlOjphZGp1c3RmaWVsZCk7DQogICAg
cmV0dXJuIF9fYmFzZTsNCiAgfQ0KDQogIGlubGluZSBpb3NfYmFzZSYNCiAgcmlnaHQoaW9zX2Jh
c2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpyaWdodCwgaW9zX2Jh
c2U6OmFkanVzdGZpZWxkKTsNCiAgICByZXR1cm4gX19iYXNlOw0KICB9DQoNCg0KICBpbmxpbmUg
aW9zX2Jhc2UmDQogIGRlYyhpb3NfYmFzZSYgX19iYXNlKQ0KICB7DQogICAgX19iYXNlLnNldGYo
aW9zX2Jhc2U6OmRlYywgaW9zX2Jhc2U6OmJhc2VmaWVsZCk7DQogICAgcmV0dXJuIF9fYmFzZTsN
CiAgfQ0KDQogIGlubGluZSBpb3NfYmFzZSYNCiAgaGV4KGlvc19iYXNlJiBfX2Jhc2UpDQogIHsN
CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6aGV4LCBpb3NfYmFzZTo6YmFzZWZpZWxkKTsNCiAg
ICByZXR1cm4gX19iYXNlOw0KICB9DQoNCiAgaW5saW5lIGlvc19iYXNlJg0KICBvY3QoaW9zX2Jh
c2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpvY3QsIGlvc19iYXNl
OjpiYXNlZmllbGQpOw0KICAgIHJldHVybiBfX2Jhc2U7DQogIH0NCg0KDQogIGlubGluZSBpb3Nf
YmFzZSYNCiAgZml4ZWQoaW9zX2Jhc2UmIF9fYmFzZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlv
c19iYXNlOjpmaXhlZCwgaW9zX2Jhc2U6OmZsb2F0ZmllbGQpOw0KICAgIHJldHVybiBfX2Jhc2U7
DQogIH0NCg0KICBpbmxpbmUgaW9zX2Jhc2UmDQogIHNjaWVudGlmaWMoaW9zX2Jhc2UmIF9fYmFz
ZSkNCiAgew0KICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpzY2llbnRpZmljLCBpb3NfYmFzZTo6
ZmxvYXRmaWVsZCk7DQogICAgcmV0dXJuIF9fYmFzZTsNCiAgfQ0KDQp9DQojIDUwICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pb3MiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9zdHJlYW1idWYiIDEgMw0KIyA0NCAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvc3RyZWFtYnVmIiAzDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQN
CnsNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHN0
cmVhbXNpemUNCiAgICBfX2NvcHlfc3RyZWFtYnVmcyhiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRz
PiYgX2lvcywNCiAgICAgICAgICAgICAgICAgICAgICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBf
VHJhaXRzPiogX19zYmluLA0KICAgICAgICAgICAgICAgICAgICAgIGJhc2ljX3N0cmVhbWJ1Zjxf
Q2hhclQsIF9UcmFpdHM+KiBfX3Nib3V0KTsNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWYNCiAgICB7DQog
ICAgcHVibGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0eXBl
ZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190
eXBlOjppbnRfdHlwZSBpbnRfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5
cGU6OnBvc190eXBlIHBvc190eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlw
ZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7DQoNCg0KICAgICAgdHlwZWRlZiBjdHlwZTxjaGFyX3R5cGU+
IF9fY3R5cGVfdHlwZTsNCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSwg
dHJhaXRzX3R5cGU+IF9fc3RyZWFtYnVmX3R5cGU7DQoNCiAgICAgIGZyaWVuZCBjbGFzcyBiYXNp
Y19pb3M8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47DQogICAgICBmcmllbmQgY2xhc3MgYmFzaWNf
aXN0cmVhbTxjaGFyX3R5cGUsIHRyYWl0c190eXBlPjsNCiAgICAgIGZyaWVuZCBjbGFzcyBiYXNp
Y19vc3RyZWFtPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+Ow0KICAgICAgZnJpZW5kIGNsYXNzIGlz
dHJlYW1idWZfaXRlcmF0b3I8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47DQogICAgICBmcmllbmQg
Y2xhc3Mgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPjsNCg0KICAg
ICAgZnJpZW5kIHN0cmVhbXNpemUNCiAgICAgIF9fY29weV9zdHJlYW1idWZzPD4oYmFzaWNfaW9z
PGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+JiBfX2lvcywNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19zdHJlYW1idWZfdHlwZSogX19zYmluLF9fc3RyZWFtYnVmX3R5cGUqIF9fc2JvdXQpOw0K
DQogICAgcHJvdGVjdGVkOg0KDQoNCg0KDQoNCiAgICAgIGNoYXJfdHlwZSogX01fYnVmOw0KDQoN
CiAgICAgIGludF90eXBlIF9NX2J1Zl9zaXplOw0KDQoNCiAgICAgIGludF90eXBlIF9NX2J1Zl9z
aXplX29wdDsNCg0KDQoNCiAgICAgIGJvb2wgX01fYnVmX3VuaWZpZWQ7DQoNCg0KDQoNCg0KDQog
ICAgICBjaGFyX3R5cGUqIF9NX2luX2JlZzsNCiAgICAgIGNoYXJfdHlwZSogX01faW5fY3VyOw0K
ICAgICAgY2hhcl90eXBlKiBfTV9pbl9lbmQ7DQogICAgICBjaGFyX3R5cGUqIF9NX291dF9iZWc7
DQogICAgICBjaGFyX3R5cGUqIF9NX291dF9jdXI7DQogICAgICBjaGFyX3R5cGUqIF9NX291dF9l
bmQ7DQoNCg0KICAgICAgaW9zX2Jhc2U6Om9wZW5tb2RlIF9NX21vZGU7DQoNCg0KICAgICAgbG9j
YWxlIF9NX2J1Zl9sb2NhbGU7DQoNCg0KICAgICAgYm9vbCBfTV9idWZfbG9jYWxlX2luaXQ7DQoN
Cg0KDQoNCg0KDQogICAgICBzdGF0aWMgY29uc3QgaW50X3R5cGUgX1NfcGJhY2tfc2l6ZSA9IDE7
DQogICAgICBjaGFyX3R5cGUgX01fcGJhY2tbX1NfcGJhY2tfc2l6ZV07DQogICAgICBjaGFyX3R5
cGUqIF9NX3BiYWNrX2N1cl9zYXZlOw0KICAgICAgY2hhcl90eXBlKiBfTV9wYmFja19lbmRfc2F2
ZTsNCiAgICAgIGJvb2wgX01fcGJhY2tfaW5pdDsNCg0KDQoNCg0KICAgICAgdm9pZA0KICAgICAg
X01fcGJhY2tfY3JlYXRlKCkNCiAgICAgIHsNCiAgICAgICAgaWYgKCFfTV9wYmFja19pbml0KQ0K
ICAgICAgICAgIHsNCiAgICAgICAgICAgIGludF90eXBlIF9fZGlzdCA9IF9NX2luX2VuZCAtIF9N
X2luX2N1cjsNCiAgICAgICAgICAgIGludF90eXBlIF9fbGVuID0gbWluKF9TX3BiYWNrX3NpemUs
IF9fZGlzdCk7DQogICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfTV9wYmFjaywgX01faW5f
Y3VyLCBfX2xlbik7DQogICAgICAgICAgICBfTV9wYmFja19jdXJfc2F2ZSA9IF9NX2luX2N1cjsN
CiAgICAgICAgICAgIF9NX3BiYWNrX2VuZF9zYXZlID0gX01faW5fZW5kOw0KICAgICAgICAgICAg
dGhpcy0+c2V0ZyhfTV9wYmFjaywgX01fcGJhY2ssIF9NX3BiYWNrICsgX19sZW4pOw0KICAgICAg
ICAgICAgX01fcGJhY2tfaW5pdCA9IHRydWU7DQogICAgICAgICAgfQ0KICAgICAgfQ0KDQoNCg0K
DQogICAgICB2b2lkDQogICAgICBfTV9wYmFja19kZXN0cm95KCkNCiAgICAgIHsNCiAgICAgICAg
aWYgKF9NX3BiYWNrX2luaXQpDQogICAgICAgICAgew0KDQogICAgICAgICAgICBpbnRfdHlwZSBf
X29mZl9jdXIgPSBfTV9pbl9jdXIgLSBfTV9wYmFjazsNCg0KDQogICAgICAgICAgICBpbnRfdHlw
ZSBfX29mZl9lbmQgPSAwOw0KICAgICAgICAgICAgaW50X3R5cGUgX19wYmFja19sZW4gPSBfTV9p
bl9lbmQgLSBfTV9wYmFjazsNCiAgICAgICAgICAgIGludF90eXBlIF9fc2F2ZV9sZW4gPSBfTV9w
YmFja19lbmRfc2F2ZSAtIF9NX2J1ZjsNCiAgICAgICAgICAgIGlmIChfX3BiYWNrX2xlbiA+IF9f
c2F2ZV9sZW4pDQogICAgICAgICAgICAgIF9fb2ZmX2VuZCA9IF9fcGJhY2tfbGVuIC0gX19zYXZl
X2xlbjsNCg0KICAgICAgICAgICAgdGhpcy0+c2V0ZyhfTV9idWYsIF9NX3BiYWNrX2N1cl9zYXZl
ICsgX19vZmZfY3VyLA0KICAgICAgICAgICAgICAgICAgICAgICBfTV9wYmFja19lbmRfc2F2ZSAr
IF9fb2ZmX2VuZCk7DQogICAgICAgICAgICBfTV9wYmFja19jdXJfc2F2ZSA9IF9fbnVsbDsNCiAg
ICAgICAgICAgIF9NX3BiYWNrX2VuZF9zYXZlID0gX19udWxsOw0KICAgICAgICAgICAgX01fcGJh
Y2tfaW5pdCA9IGZhbHNlOw0KICAgICAgICAgIH0NCiAgICAgIH0NCg0KDQoNCiAgICAgIHZvaWQN
CiAgICAgIF9NX2luX2N1cl9tb3ZlKG9mZl90eXBlIF9fbikNCiAgICAgIHsNCiAgICAgICAgYm9v
bCBfX3Rlc3RvdXQgPSBfTV9vdXRfY3VyOw0KICAgICAgICBfTV9pbl9jdXIgKz0gX19uOw0KICAg
ICAgICBpZiAoX190ZXN0b3V0ICYmIF9NX2J1Zl91bmlmaWVkKQ0KICAgICAgICAgIF9NX291dF9j
dXIgKz0gX19uOw0KICAgICAgfQ0KIyAxOTggInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL3N0cmVhbWJ1ZiIgMw0KICAgICAgdm9pZA0KICAgICAgX01fb3V0X2N1cl9tb3ZlKG9mZl90
eXBlIF9fbikNCiAgICAgIHsNCiAgICAgICAgYm9vbCBfX3Rlc3RpbiA9IF9NX2luX2N1cjsNCg0K
ICAgICAgICBfTV9vdXRfY3VyICs9IF9fbjsNCiAgICAgICAgaWYgKF9fdGVzdGluICYmIF9NX2J1
Zl91bmlmaWVkKQ0KICAgICAgICAgIF9NX2luX2N1ciArPSBfX247DQogICAgICAgIGlmIChfTV9v
dXRfY3VyID4gX01fb3V0X2VuZCkNCiAgICAgICAgICB7DQogICAgICAgICAgICBfTV9vdXRfZW5k
ID0gX01fb3V0X2N1cjsNCg0KICAgICAgICAgICAgaWYgKF9fdGVzdGluKQ0KICAgICAgICAgICAg
ICBfTV9pbl9lbmQgKz0gX19uOw0KICAgICAgICAgIH0NCiAgICAgIH0NCg0KDQoNCg0KICAgICAg
b2ZmX3R5cGUNCiAgICAgIF9NX291dF9idWZfc2l6ZSgpDQogICAgICB7DQogICAgICAgIG9mZl90
eXBlIF9fcmV0ID0gMDsNCiAgICAgICAgaWYgKF9NX291dF9jdXIpDQogICAgICAgICAgew0KDQog
ICAgICAgICAgICBpZiAoX01fb3V0X2JlZyA9PSBfTV9idWYpDQogICAgICAgICAgICAgIF9fcmV0
ID0gX01fb3V0X2JlZyArIF9NX2J1Zl9zaXplIC0gX01fb3V0X2N1cjsNCg0KICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICBfX3JldCA9IF9NX291dF9lbmQgLSBfTV9vdXRfY3VyOw0KICAg
ICAgICAgIH0NCiAgICAgICAgcmV0dXJuIF9fcmV0Ow0KICAgICAgfQ0KDQogIHB1YmxpYzoNCiAg
ICAgIHZpcnR1YWwNCiAgICAgIH5iYXNpY19zdHJlYW1idWYoKQ0KICAgICAgew0KICAgICAgICBf
TV9idWZfdW5pZmllZCA9IGZhbHNlOw0KICAgICAgICBfTV9idWZfc2l6ZSA9IDA7DQogICAgICAg
IF9NX2J1Zl9zaXplX29wdCA9IDA7DQogICAgICAgIF9NX21vZGUgPSBpb3NfYmFzZTo6b3Blbm1v
ZGUoMCk7DQogICAgICAgIF9NX2J1Zl9sb2NhbGVfaW5pdCA9IGZhbHNlOw0KICAgICAgfQ0KDQoN
CiAgICAgIGxvY2FsZQ0KICAgICAgcHViaW1idWUoY29uc3QgbG9jYWxlICZfX2xvYykNCiAgICAg
IHsNCiAgICAgICAgbG9jYWxlIF9fdG1wKHRoaXMtPmdldGxvYygpKTsNCiAgICAgICAgdGhpcy0+
aW1idWUoX19sb2MpOw0KICAgICAgICByZXR1cm4gX190bXA7DQogICAgICB9DQoNCiAgICAgIGxv
Y2FsZQ0KICAgICAgZ2V0bG9jKCkgY29uc3QNCiAgICAgIHsNCiAgICAgICAgaWYgKF9NX2J1Zl9s
b2NhbGVfaW5pdCkNCiAgICAgICAgICByZXR1cm4gX01fYnVmX2xvY2FsZTsNCiAgICAgICAgZWxz
ZQ0KICAgICAgICAgIHJldHVybiBsb2NhbGUoKTsNCiAgICAgIH0NCg0KDQogICAgICBfX3N0cmVh
bWJ1Zl90eXBlKg0KICAgICAgcHVic2V0YnVmKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9f
bikNCiAgICAgIHsgcmV0dXJuIHRoaXMtPnNldGJ1ZihfX3MsIF9fbik7IH0NCg0KICAgICAgcG9z
X3R5cGUNCiAgICAgIHB1YnNlZWtvZmYob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGly
IF9fd2F5LA0KICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6b3Blbm1vZGUgX19tb2RlID0gaW9z
X2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkNCiAgICAgIHsgcmV0dXJuIHRoaXMtPnNlZWtvZmYo
X19vZmYsIF9fd2F5LCBfX21vZGUpOyB9DQoNCiAgICAgIHBvc190eXBlDQogICAgICBwdWJzZWVr
cG9zKHBvc190eXBlIF9fc3AsDQogICAgICAgICAgICAgICAgIGlvc19iYXNlOjpvcGVubW9kZSBf
X21vZGUgPSBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0KQ0KICAgICAgeyByZXR1cm4gdGhp
cy0+c2Vla3BvcyhfX3NwLCBfX21vZGUpOyB9DQoNCiAgICAgIGludA0KICAgICAgcHVic3luYygp
IHsgcmV0dXJuIHRoaXMtPnN5bmMoKTsgfQ0KDQoNCg0KICAgICAgc3RyZWFtc2l6ZQ0KICAgICAg
aW5fYXZhaWwoKQ0KICAgICAgew0KICAgICAgICBzdHJlYW1zaXplIF9fcmV0Ow0KICAgICAgICBp
ZiAoX01faW5fY3VyICYmIF9NX2luX2N1ciA8IF9NX2luX2VuZCkNCiAgICAgICAgICB7DQogICAg
ICAgICAgICBpZiAoX01fcGJhY2tfaW5pdCkNCiAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIGludF90eXBlIF9fc2F2ZV9sZW4gPSBfTV9wYmFja19lbmRfc2F2ZSAtIF9NX3BiYWNrX2N1
cl9zYXZlOw0KICAgICAgICAgICAgICAgIGludF90eXBlIF9fcGJhY2tfbGVuID0gX01faW5fY3Vy
IC0gX01fcGJhY2s7DQogICAgICAgICAgICAgICAgX19yZXQgPSBfX3NhdmVfbGVuIC0gX19wYmFj
a19sZW47DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
X19yZXQgPSB0aGlzLT5lZ3B0cigpIC0gdGhpcy0+Z3B0cigpOw0KICAgICAgICAgIH0NCiAgICAg
ICAgZWxzZQ0KICAgICAgICAgIF9fcmV0ID0gdGhpcy0+c2hvd21hbnljKCk7DQogICAgICAgIHJl
dHVybiBfX3JldDsNCiAgICAgIH0NCg0KICAgICAgaW50X3R5cGUNCiAgICAgIHNuZXh0YygpDQog
ICAgICB7DQogICAgICAgIGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOw0KICAg
ICAgICByZXR1cm4gKHRoaXMtPnNidW1wYygpID09IF9fZW9mID8gX19lb2YgOiB0aGlzLT5zZ2V0
YygpKTsNCiAgICAgIH0NCg0KICAgICAgaW50X3R5cGUNCiAgICAgIHNidW1wYygpOw0KDQogICAg
ICBpbnRfdHlwZQ0KICAgICAgc2dldGMoKQ0KICAgICAgew0KICAgICAgICBpbnRfdHlwZSBfX3Jl
dDsNCiAgICAgICAgaWYgKF9NX2luX2N1ciAmJiBfTV9pbl9jdXIgPCBfTV9pbl9lbmQpDQogICAg
ICAgICAgX19yZXQgPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKih0aGlzLT5ncHRyKCkpKTsN
CiAgICAgICAgZWxzZQ0KICAgICAgICAgIF9fcmV0ID0gdGhpcy0+dW5kZXJmbG93KCk7DQogICAg
ICAgIHJldHVybiBfX3JldDsNCiAgICAgIH0NCg0KICAgICAgc3RyZWFtc2l6ZQ0KICAgICAgc2dl
dG4oY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQ0KICAgICAgeyByZXR1cm4gdGhpcy0+
eHNnZXRuKF9fcywgX19uKTsgfQ0KDQoNCiAgICAgIGludF90eXBlDQogICAgICBzcHV0YmFja2Mo
Y2hhcl90eXBlIF9fYyk7DQoNCiAgICAgIGludF90eXBlDQogICAgICBzdW5nZXRjKCk7DQoNCg0K
ICAgICAgaW50X3R5cGUNCiAgICAgIHNwdXRjKGNoYXJfdHlwZSBfX2MpOw0KDQogICAgICBzdHJl
YW1zaXplDQogICAgICBzcHV0bihjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24p
DQogICAgICB7IHJldHVybiB0aGlzLT54c3B1dG4oX19zLCBfX24pOyB9DQoNCiAgICBwcm90ZWN0
ZWQ6DQogICAgICBiYXNpY19zdHJlYW1idWYoKQ0KICAgICAgOiBfTV9idWYoX19udWxsKSwgX01f
YnVmX3NpemUoMCksDQogICAgICBfTV9idWZfc2l6ZV9vcHQoc3RhdGljX2Nhc3Q8aW50X3R5cGU+
KDUxMikpLCBfTV9idWZfdW5pZmllZChmYWxzZSksDQogICAgICBfTV9pbl9iZWcoMCksIF9NX2lu
X2N1cigwKSwgX01faW5fZW5kKDApLCBfTV9vdXRfYmVnKDApLCBfTV9vdXRfY3VyKDApLA0KICAg
ICAgX01fb3V0X2VuZCgwKSwgX01fbW9kZShpb3NfYmFzZTo6b3Blbm1vZGUoMCkpLCBfTV9idWZf
bG9jYWxlKGxvY2FsZSgpKSwNCiAgICAgIF9NX2J1Zl9sb2NhbGVfaW5pdChmYWxzZSksIF9NX3Bi
YWNrX2N1cl9zYXZlKDApLCBfTV9wYmFja19lbmRfc2F2ZSgwKSwNCiAgICAgIF9NX3BiYWNrX2lu
aXQoZmFsc2UpDQogICAgICB7IH0NCg0KDQogICAgICBjaGFyX3R5cGUqDQogICAgICBlYmFjaygp
IGNvbnN0IHsgcmV0dXJuIF9NX2luX2JlZzsgfQ0KDQogICAgICBjaGFyX3R5cGUqDQogICAgICBn
cHRyKCkgY29uc3QgeyByZXR1cm4gX01faW5fY3VyOyB9DQoNCiAgICAgIGNoYXJfdHlwZSoNCiAg
ICAgIGVncHRyKCkgY29uc3QgeyByZXR1cm4gX01faW5fZW5kOyB9DQoNCiAgICAgIHZvaWQNCiAg
ICAgIGdidW1wKGludCBfX24pIHsgX01faW5fY3VyICs9IF9fbjsgfQ0KDQogICAgICB2b2lkDQog
ICAgICBzZXRnKGNoYXJfdHlwZSogX19nYmVnLCBjaGFyX3R5cGUqIF9fZ25leHQsIGNoYXJfdHlw
ZSogX19nZW5kKQ0KICAgICAgew0KICAgICAgICBfTV9pbl9iZWcgPSBfX2diZWc7DQogICAgICAg
IF9NX2luX2N1ciA9IF9fZ25leHQ7DQogICAgICAgIF9NX2luX2VuZCA9IF9fZ2VuZDsNCiAgICAg
ICAgaWYgKCEoX01fbW9kZSAmIGlvc19iYXNlOjppbikgJiYgX19nYmVnICYmIF9fZ25leHQgJiYg
X19nZW5kKQ0KICAgICAgICAgIF9NX21vZGUgPSBfTV9tb2RlIHwgaW9zX2Jhc2U6OmluOw0KICAg
ICAgfQ0KDQoNCiAgICAgIGNoYXJfdHlwZSoNCiAgICAgIHBiYXNlKCkgY29uc3QgeyByZXR1cm4g
X01fb3V0X2JlZzsgfQ0KDQogICAgICBjaGFyX3R5cGUqDQogICAgICBwcHRyKCkgY29uc3QgeyBy
ZXR1cm4gX01fb3V0X2N1cjsgfQ0KDQogICAgICBjaGFyX3R5cGUqDQogICAgICBlcHB0cigpIGNv
bnN0IHsgcmV0dXJuIF9NX291dF9lbmQ7IH0NCg0KICAgICAgdm9pZA0KICAgICAgcGJ1bXAoaW50
IF9fbikgeyBfTV9vdXRfY3VyICs9IF9fbjsgfQ0KDQogICAgICB2b2lkDQogICAgICBzZXRwKGNo
YXJfdHlwZSogX19wYmVnLCBjaGFyX3R5cGUqIF9fcGVuZCkNCiAgICAgIHsNCiAgICAgICAgX01f
b3V0X2JlZyA9IF9NX291dF9jdXIgPSBfX3BiZWc7DQogICAgICAgIF9NX291dF9lbmQgPSBfX3Bl
bmQ7DQogICAgICAgIGlmICghKF9NX21vZGUgJiBpb3NfYmFzZTo6b3V0KSAmJiBfX3BiZWcgJiYg
X19wZW5kKQ0KICAgICAgICAgIF9NX21vZGUgPSBfTV9tb2RlIHwgaW9zX2Jhc2U6Om91dDsNCiAg
ICAgIH0NCg0KDQoNCiAgICAgIHZpcnR1YWwgdm9pZA0KICAgICAgaW1idWUoY29uc3QgbG9jYWxl
JiBfX2xvYykNCiAgICAgIHsNCiAgICAgICAgX01fYnVmX2xvY2FsZV9pbml0ID0gdHJ1ZTsNCiAg
ICAgICAgaWYgKF9NX2J1Zl9sb2NhbGUgIT0gX19sb2MpDQogICAgICAgICAgX01fYnVmX2xvY2Fs
ZSA9IF9fbG9jOw0KICAgICAgfQ0KDQoNCiAgICAgIHZpcnR1YWwgYmFzaWNfc3RyZWFtYnVmPGNo
YXJfdHlwZSxfVHJhaXRzPioNCiAgICAgIHNldGJ1ZihjaGFyX3R5cGUqLCBzdHJlYW1zaXplKQ0K
ICAgICAgeyByZXR1cm4gdGhpczsgfQ0KDQogICAgICB2aXJ0dWFsIHBvc190eXBlDQogICAgICBz
ZWVrb2ZmKG9mZl90eXBlLCBpb3NfYmFzZTo6c2Vla2RpciwNCiAgICAgICAgICAgICAgaW9zX2Jh
c2U6Om9wZW5tb2RlID0gaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkNCiAgICAgIHsgcmV0
dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7IH0NCg0KICAgICAgdmlydHVhbCBwb3NfdHlwZQ0K
ICAgICAgc2Vla3Bvcyhwb3NfdHlwZSwNCiAgICAgICAgICAgICAgaW9zX2Jhc2U6Om9wZW5tb2Rl
ID0gaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkNCiAgICAgIHsgcmV0dXJuIHBvc190eXBl
KG9mZl90eXBlKC0xKSk7IH0NCg0KICAgICAgdmlydHVhbCBpbnQNCiAgICAgIHN5bmMoKSB7IHJl
dHVybiAwOyB9DQoNCg0KICAgICAgdmlydHVhbCBzdHJlYW1zaXplDQogICAgICBzaG93bWFueWMo
KSB7IHJldHVybiAwOyB9DQoNCiAgICAgIHZpcnR1YWwgc3RyZWFtc2l6ZQ0KICAgICAgeHNnZXRu
KGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbik7DQoNCiAgICAgIHZpcnR1YWwgaW50X3R5
cGUNCiAgICAgIHVuZGVyZmxvdygpDQogICAgICB7IHJldHVybiB0cmFpdHNfdHlwZTo6ZW9mKCk7
IH0NCg0KICAgICAgdmlydHVhbCBpbnRfdHlwZQ0KICAgICAgdWZsb3coKQ0KICAgICAgew0KICAg
ICAgICBpbnRfdHlwZSBfX3JldCA9IHRyYWl0c190eXBlOjplb2YoKTsNCiAgICAgICAgYm9vbCBf
X3Rlc3Rlb2YgPSB0aGlzLT51bmRlcmZsb3coKSA9PSBfX3JldDsNCiAgICAgICAgYm9vbCBfX3Rl
c3RwZW5kaW5nID0gX01faW5fY3VyICYmIF9NX2luX2N1ciA8IF9NX2luX2VuZDsNCiAgICAgICAg
aWYgKCFfX3Rlc3Rlb2YgJiYgX190ZXN0cGVuZGluZykNCiAgICAgICAgICB7DQogICAgICAgICAg
ICBfX3JldCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqX01faW5fY3VyKTsNCiAgICAgICAg
ICAgICsrX01faW5fY3VyOw0KICAgICAgICAgICAgaWYgKF9NX2J1Zl91bmlmaWVkICYmIF9NX21v
ZGUgJiBpb3NfYmFzZTo6b3V0KQ0KICAgICAgICAgICAgICArK19NX291dF9jdXI7DQogICAgICAg
ICAgfQ0KICAgICAgICByZXR1cm4gX19yZXQ7DQogICAgICB9DQoNCg0KICAgICAgdmlydHVhbCBp
bnRfdHlwZQ0KICAgICAgcGJhY2tmYWlsKGludF90eXBlID0gdHJhaXRzX3R5cGU6OmVvZigpKQ0K
ICAgICAgeyByZXR1cm4gdHJhaXRzX3R5cGU6OmVvZigpOyB9DQoNCg0KICAgICAgdmlydHVhbCBz
dHJlYW1zaXplDQogICAgICB4c3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUg
X19uKTsNCg0KICAgICAgdmlydHVhbCBpbnRfdHlwZQ0KICAgICAgb3ZlcmZsb3coaW50X3R5cGUg
PSB0cmFpdHNfdHlwZTo6ZW9mKCkpDQogICAgICB7IHJldHVybiB0cmFpdHNfdHlwZTo6ZW9mKCk7
IH0NCiMgNDgwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9zdHJlYW1idWYiIDMN
CiAgICBwcml2YXRlOg0KICAgICAgYmFzaWNfc3RyZWFtYnVmKGNvbnN0IF9fc3RyZWFtYnVmX3R5
cGUmKSB7IH07DQoNCiAgICAgIF9fc3RyZWFtYnVmX3R5cGUmDQogICAgICBvcGVyYXRvcj0oY29u
c3QgX19zdHJlYW1idWZfdHlwZSYpIHsgcmV0dXJuICp0aGlzOyB9Ow0KDQogICAgfTsNCn0NCg0K
DQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RyZWFt
YnVmLnRjYyIgMSAzDQojIDM5ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRz
L3N0cmVhbWJ1Zi50Y2MiIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgY29uc3QgdHlwZW5hbWUgYmFzaWNfc3Ry
ZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz46OmludF90eXBlDQogICAgYmFzaWNfc3RyZWFtYnVmPF9D
aGFyVCwgX1RyYWl0cz46Ol9TX3BiYWNrX3NpemU7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hh
clQsIF9UcmFpdHM+OjppbnRfdHlwZQ0KICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFp
dHM+OjoNCiAgICBzYnVtcGMoKQ0KICAgIHsNCiAgICAgIGludF90eXBlIF9fcmV0Ow0KICAgICAg
aWYgKF9NX2luX2N1ciAmJiBfTV9pbl9jdXIgPCBfTV9pbl9lbmQpDQogICAgICAgIHsNCiAgICAg
ICAgICBjaGFyX3R5cGUgX19jID0gKih0aGlzLT5ncHRyKCkpOw0KICAgICAgICAgIF9NX2luX2N1
cl9tb3ZlKDEpOw0KICAgICAgICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9f
Yyk7DQogICAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgICAgX19yZXQgPSB0aGlzLT51Zmxvdygp
Ow0KICAgICAgcmV0dXJuIF9fcmV0Ow0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgdHlwZW5hbWUgYmFzaWNfc3RyZWFtYnVmPF9DaGFy
VCwgX1RyYWl0cz46OmludF90eXBlDQogICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0
cz46Og0KICAgIHNwdXRiYWNrYyhjaGFyX3R5cGUgX19jKQ0KICAgIHsNCiAgICAgIGludF90eXBl
IF9fcmV0Ow0KICAgICAgYm9vbCBfX3Rlc3Rwb3MgPSBfTV9pbl9jdXIgJiYgX01faW5fYmVnIDwg
X01faW5fY3VyOw0KICAgICAgYm9vbCBfX3Rlc3RuZSA9IF9NX2luX2N1ciAmJiAhdHJhaXRzX3R5
cGU6OmVxKF9fYywgdGhpcy0+Z3B0cigpWy0xXSk7DQogICAgICBpZiAoIV9fdGVzdHBvcyB8fCBf
X3Rlc3RuZSkNCiAgICAgICAgX19yZXQgPSBwYmFja2ZhaWwodHJhaXRzX3R5cGU6OnRvX2ludF90
eXBlKF9fYykpOw0KICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgX01faW5fY3VyX21v
dmUoLTEpOw0KICAgICAgICAgIF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlz
LT5ncHRyKCkpOw0KICAgICAgICB9DQogICAgICByZXR1cm4gX19yZXQ7DQogICAgfQ0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICB0eXBlbmFtZSBi
YXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUNCiAgICBiYXNpY19zdHJl
YW1idWY8X0NoYXJULCBfVHJhaXRzPjo6DQogICAgc3VuZ2V0YygpDQogICAgew0KICAgICAgaW50
X3R5cGUgX19yZXQ7DQogICAgICBpZiAoX01faW5fY3VyICYmIF9NX2luX2JlZyA8IF9NX2luX2N1
cikNCiAgICAgICAgew0KICAgICAgICAgIF9NX2luX2N1cl9tb3ZlKC0xKTsNCiAgICAgICAgICBf
X3JldCA9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqX01faW5fY3VyKTsNCiAgICAgICAgfQ0K
ICAgICAgZWxzZQ0KICAgICAgICBfX3JldCA9IHRoaXMtPnBiYWNrZmFpbCgpOw0KICAgICAgcmV0
dXJuIF9fcmV0Ow0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHR5cGVuYW1lIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQs
IF9UcmFpdHM+OjppbnRfdHlwZQ0KICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+
OjoNCiAgICBzcHV0YyhjaGFyX3R5cGUgX19jKQ0KICAgIHsNCiAgICAgIGludF90eXBlIF9fcmV0
Ow0KICAgICAgaWYgKF9NX291dF9idWZfc2l6ZSgpKQ0KICAgICAgICB7DQogICAgICAgICAgKl9N
X291dF9jdXIgPSBfX2M7DQogICAgICAgICAgX01fb3V0X2N1cl9tb3ZlKDEpOw0KICAgICAgICAg
IF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9fYyk7DQogICAgICAgIH0NCiAgICAg
IGVsc2UNCiAgICAgICAgX19yZXQgPSB0aGlzLT5vdmVyZmxvdyh0cmFpdHNfdHlwZTo6dG9faW50
X3R5cGUoX19jKSk7DQogICAgICByZXR1cm4gX19yZXQ7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBzdHJlYW1zaXplDQogICAgYmFz
aWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIHhzZ2V0bihjaGFyX3R5cGUqIF9f
cywgc3RyZWFtc2l6ZSBfX24pDQogICAgew0KICAgICAgc3RyZWFtc2l6ZSBfX3JldCA9IDA7DQog
ICAgICB3aGlsZSAoX19yZXQgPCBfX24pDQogICAgICAgIHsNCiAgICAgICAgICBzaXplX3QgX19i
dWZfbGVuID0gX01faW5fZW5kIC0gX01faW5fY3VyOw0KICAgICAgICAgIGlmIChfX2J1Zl9sZW4g
PiAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBzaXplX3QgX19yZW1haW5pbmcgPSBf
X24gLSBfX3JldDsNCiAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuID0gbWluKF9fYnVmX2xlbiwg
X19yZW1haW5pbmcpOw0KICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3MsIF9NX2lu
X2N1ciwgX19sZW4pOw0KICAgICAgICAgICAgICBfX3JldCArPSBfX2xlbjsNCiAgICAgICAgICAg
ICAgX19zICs9IF9fbGVuOw0KICAgICAgICAgICAgICBfTV9pbl9jdXJfbW92ZShfX2xlbik7DQog
ICAgICAgICAgICB9DQoNCiAgICAgICAgICBpZiAoX19yZXQgPCBfX24pDQogICAgICAgICAgICB7
DQogICAgICAgICAgICAgIGludF90eXBlIF9fYyA9IHRoaXMtPnVmbG93KCk7DQogICAgICAgICAg
ICAgIGlmIChfX2MgIT0gdHJhaXRzX3R5cGU6OmVvZigpKQ0KICAgICAgICAgICAgICAgIHsNCiAg
ICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjphc3NpZ24oKl9fcysrLCB0cmFpdHNfdHlwZTo6
dG9fY2hhcl90eXBlKF9fYykpOw0KICAgICAgICAgICAgICAgICAgKytfX3JldDsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fcmV0Ow0KICAgIH0NCg0KDQoN
Cg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAg
IHN0cmVhbXNpemUNCiAgICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPjo6DQogICAg
eHNwdXRuKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikNCiAgICB7DQogICAg
ICBzdHJlYW1zaXplIF9fcmV0ID0gMDsNCiAgICAgIHdoaWxlIChfX3JldCA8IF9fbikNCiAgICAg
ICAgew0KICAgICAgICAgIG9mZl90eXBlIF9fYnVmX2xlbiA9IF9NX291dF9idWZfc2l6ZSgpOw0K
ICAgICAgICAgIGlmIChfX2J1Zl9sZW4gPiAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICBvZmZfdHlwZSBfX3JlbWFpbmluZyA9IF9fbiAtIF9fcmV0Ow0KICAgICAgICAgICAgICBvZmZf
dHlwZSBfX2xlbiA9IG1pbihfX2J1Zl9sZW4sIF9fcmVtYWluaW5nKTsNCiAgICAgICAgICAgICAg
dHJhaXRzX3R5cGU6OmNvcHkoX01fb3V0X2N1ciwgX19zLCBfX2xlbik7DQogICAgICAgICAgICAg
IF9fcmV0ICs9IF9fbGVuOw0KICAgICAgICAgICAgICBfX3MgKz0gX19sZW47DQogICAgICAgICAg
ICAgIF9NX291dF9jdXJfbW92ZShfX2xlbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICBp
ZiAoX19yZXQgPCBfX24pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGludF90eXBlIF9f
YyA9IHRoaXMtPm92ZXJmbG93KHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqX19zKSk7DQogICAg
ICAgICAgICAgIGlmIChfX2MgIT0gdHJhaXRzX3R5cGU6OmVvZigpKQ0KICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICsrX19yZXQ7DQogICAgICAgICAgICAgICAgICArK19fczsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fcmV0Ow0KICAg
IH0NCg0KDQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4NCiAgICBzdHJlYW1zaXplDQogICAgX19jb3B5X3N0cmVhbWJ1ZnMoYmFzaWNfaW9zPF9DaGFy
VCwgX1RyYWl0cz4mIF9faW9zLA0KICAgICAgICAgICAgICAgICAgICAgIGJhc2ljX3N0cmVhbWJ1
ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiaW4sDQogICAgICAgICAgICAgICAgICAgICAgYmFzaWNf
c3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2JvdXQpDQogIHsNCiAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7DQoNCiAgICAgIHN0cmVhbXNpemUg
X19yZXQgPSAwOw0KICAgICAgc3RyZWFtc2l6ZSBfX2J1ZnNpemUgPSBfX3NiaW4tPmluX2F2YWls
KCk7DQogICAgICBzdHJlYW1zaXplIF9feHRyY3Q7DQogICAgICBib29sIF9fdGVzdHB1dCA9IF9f
c2JvdXQtPl9NX21vZGUgJiBpb3NfYmFzZTo6b3V0Ow0KICAgICAgaWYgKHRydWUpDQogICAgICAg
IHsNCiAgICAgICAgICB3aGlsZSAoX190ZXN0cHV0ICYmIF9fYnVmc2l6ZSAhPSAtMSkNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgX194dHJjdCA9IF9fc2JvdXQtPnNwdXRuKF9fc2Jpbi0+
Z3B0cigpLCBfX2J1ZnNpemUpOw0KICAgICAgICAgICAgICBfX3JldCArPSBfX3h0cmN0Ow0KICAg
ICAgICAgICAgICBfX3NiaW4tPl9NX2luX2N1cl9tb3ZlKF9feHRyY3QpOw0KICAgICAgICAgICAg
ICBpZiAoX194dHJjdCA9PSBfX2J1ZnNpemUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgICAgaWYgKF9fc2Jpbi0+c2dldGMoKSA9PSBfVHJhaXRzOjplb2YoKSkNCiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICBfX2J1ZnNpemUgPSBfX3NiaW4t
PmluX2F2YWlsKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGlmIChm
YWxzZSkNCiAgICAgICAgew0KICAgICAgICAgIF9faW9zLnNldHN0YXRlKGlvc19iYXNlOjpmYWls
Yml0KTsNCiAgICAgICAgICBpZiAoKF9faW9zLmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpmYWls
Yml0KSAhPSAwKQ0KICAgICAgICAgICAgOw0KICAgICAgICB9DQogICAgICByZXR1cm4gX19yZXQ7
DQogICAgfQ0KDQoNCg0KDQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19zdHJlYW1idWY8
Y2hhcj47DQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIHN0cmVhbXNpemUNCiAgICBfX2NvcHlfc3Ry
ZWFtYnVmcyhiYXNpY19pb3M8Y2hhcj4mLCBiYXNpY19zdHJlYW1idWY8Y2hhcj4qLA0KICAgICAg
ICAgICAgICAgICAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiopOw0KDQogIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBiYXNpY19zdHJlYW1idWY8d2NoYXJfdD47DQogIGV4dGVybiB0ZW1wbGF0ZQ0K
ICAgIHN0cmVhbXNpemUNCiAgICBfX2NvcHlfc3RyZWFtYnVmcyhiYXNpY19pb3M8d2NoYXJfdD4m
LCBiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4qLA0KICAgICAgICAgICAgICAgICAgICAgIGJhc2lj
X3N0cmVhbWJ1Zjx3Y2hhcl90PiopOw0KfQ0KIyA0OTQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL3N0cmVhbWJ1ZiIgMiAzDQojIDUxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9pb3MiIDIgMw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL2Jhc2ljX2lvcy5oIiAxIDMNCiMgMzkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL2JpdHMvYmFzaWNfaW9zLmgiIDMNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRvci5oIiAxIDMNCiMgNDIgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RyZWFtYnVmX2l0ZXJhdG9yLmgiIDMNCg0KbmFt
ZXNwYWNlIHN0ZA0Kew0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry
YWl0cz4NCiAgICBjbGFzcyBpc3RyZWFtYnVmX2l0ZXJhdG9yDQogICAgOiBwdWJsaWMgaXRlcmF0
b3I8aW5wdXRfaXRlcmF0b3JfdGFnLCBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM6Om9mZl90eXBl
LA0KICAgICAgICAgICAgICAgICAgICAgIF9DaGFyVCosIF9DaGFyVCY+DQogICAgew0KICAgIHB1
YmxpYzoNCg0KICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBf
VHJhaXRzIHRyYWl0c190eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRf
dHlwZSBpbnRfdHlwZTsNCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1Ry
YWl0cz4gc3RyZWFtYnVmX3R5cGU7DQogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiBpc3RyZWFtX3R5cGU7DQoNCiAgICBwcml2YXRlOg0KDQoNCg0KDQoNCg0KDQog
ICAgICBtdXRhYmxlIHN0cmVhbWJ1Zl90eXBlKiBfTV9zYnVmOw0KICAgICAgaW50X3R5cGUgX01f
YzsNCg0KICAgIHB1YmxpYzoNCiAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3IoKSB0aHJvdygpDQog
ICAgICA6IF9NX3NidWYoMCksIF9NX2MoLTIpIHsgfQ0KDQogICAgICBpc3RyZWFtYnVmX2l0ZXJh
dG9yKGlzdHJlYW1fdHlwZSYgX19zKSB0aHJvdygpDQogICAgICA6IF9NX3NidWYoX19zLnJkYnVm
KCkpLCBfTV9jKC0yKSB7IH0NCg0KICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcihzdHJlYW1idWZf
dHlwZSogX19zKSB0aHJvdygpDQogICAgICA6IF9NX3NidWYoX19zKSwgX01fYygtMikgeyB9DQoN
Cg0KICAgICAgY2hhcl90eXBlDQogICAgICBvcGVyYXRvciooKSBjb25zdA0KICAgICAgeyByZXR1
cm4gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfTV9nZXQoKSk7IH0NCg0KICAgICAgaXN0cmVh
bWJ1Zl9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yKysoKQ0KICAgICAgew0KICAgICAgICBpZiAo
X01fc2J1ZiAmJiBfTV9zYnVmLT5zYnVtcGMoKSA9PSB0cmFpdHNfdHlwZTo6ZW9mKCkpDQogICAg
ICAgICAgX01fc2J1ZiA9IDA7DQogICAgICAgIGVsc2UNCiAgICAgICAgICBfTV9jID0gLTI7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgIH0NCg0KICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRv
cg0KICAgICAgb3BlcmF0b3IrKyhpbnQpDQogICAgICB7DQogICAgICAgIGlzdHJlYW1idWZfaXRl
cmF0b3IgX19vbGQgPSAqdGhpczsNCiAgICAgICAgaWYgKF9NX3NidWYgJiYgKF9fb2xkLl9NX2Mg
PSBfTV9zYnVmLT5zYnVtcGMoKSkgPT0gdHJhaXRzX3R5cGU6OmVvZigpKQ0KICAgICAgICAgIF9N
X3NidWYgPSAwOw0KICAgICAgICBlbHNlDQogICAgICAgICAgX01fYyA9IC0yOw0KICAgICAgICBy
ZXR1cm4gX19vbGQ7DQogICAgICB9DQoNCg0KDQoNCiAgICAgIGJvb2wNCiAgICAgIGVxdWFsKGNv
bnN0IGlzdHJlYW1idWZfaXRlcmF0b3ImIF9fYikgY29uc3QNCiAgICAgIHsNCiAgICAgICAgY29u
c3QgaW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7DQogICAgICAgIGJvb2wgX190
aGlzZW9mID0gX01fZ2V0KCkgPT0gX19lb2Y7DQogICAgICAgIGJvb2wgX19iZW9mID0gX19iLl9N
X2dldCgpID09IF9fZW9mOw0KICAgICAgICByZXR1cm4gKF9fdGhpc2VvZiAmJiBfX2Jlb2YgfHwg
KCFfX3RoaXNlb2YgJiYgIV9fYmVvZikpOw0KICAgICAgfQ0KDQoNCiAgICBwcml2YXRlOg0KICAg
ICAgaW50X3R5cGUNCiAgICAgIF9NX2dldCgpIGNvbnN0DQogICAgICB7DQogICAgICAgIGludF90
eXBlIF9fcmV0ID0gdHJhaXRzX3R5cGU6OmVvZigpOw0KICAgICAgICBpZiAoX01fc2J1ZikNCiAg
ICAgICAgICB7DQogICAgICAgICAgICBpZiAoX01fYyAhPSBzdGF0aWNfY2FzdDxpbnRfdHlwZT4o
LTIpKQ0KICAgICAgICAgICAgICBfX3JldCA9IF9NX2M7DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgIGlmICgoX19yZXQgPSBfTV9zYnVmLT5zZ2V0YygpKSA9PSB0cmFpdHNfdHlwZTo6
ZW9mKCkpDQogICAgICAgICAgICAgICAgX01fc2J1ZiA9IDA7DQogICAgICAgICAgfQ0KICAgICAg
ICByZXR1cm4gX19yZXQ7DQogICAgICB9DQogICAgfTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvcj09
KGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiYgX19hLA0KICAgICAg
ICAgICAgICAgY29uc3QgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFpdHM+JiBfX2Ip
DQogICAgeyByZXR1cm4gX19hLmVxdWFsKF9fYik7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgaW5saW5lIGJvb2wNCiAgICBvcGVyYXRvciE9
KGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiYgX19hLA0KICAgICAg
ICAgICAgICAgY29uc3QgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFpdHM+JiBfX2Ip
DQogICAgeyByZXR1cm4gIV9fYS5lcXVhbChfX2IpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3IN
CiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2
b2lkLCB2b2lkPg0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNo
YXJfdHlwZTsNCiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsNCiAgICAgIHR5cGVk
ZWYgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gc3RyZWFtYnVmX3R5cGU7DQogICAg
ICB0eXBlZGVmIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBvc3RyZWFtX3R5cGU7DQoN
CiAgICBwcml2YXRlOg0KICAgICAgc3RyZWFtYnVmX3R5cGUqIF9NX3NidWY7DQogICAgICBib29s
IF9NX2ZhaWxlZDsNCg0KICAgIHB1YmxpYzoNCiAgICAgIGlubGluZQ0KICAgICAgb3N0cmVhbWJ1
Zl9pdGVyYXRvcihvc3RyZWFtX3R5cGUmIF9fcykgdGhyb3cgKCkNCiAgICAgIDogX01fc2J1Zihf
X3MucmRidWYoKSksIF9NX2ZhaWxlZCghX01fc2J1ZikgeyB9DQoNCiAgICAgIG9zdHJlYW1idWZf
aXRlcmF0b3Ioc3RyZWFtYnVmX3R5cGUqIF9fcykgdGhyb3cgKCkNCiAgICAgIDogX01fc2J1Zihf
X3MpLCBfTV9mYWlsZWQoIV9NX3NidWYpIHsgfQ0KDQogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9y
Jg0KICAgICAgb3BlcmF0b3I9KF9DaGFyVCBfX2MpOw0KDQogICAgICBvc3RyZWFtYnVmX2l0ZXJh
dG9yJg0KICAgICAgb3BlcmF0b3IqKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gKnRoaXM7IH0N
Cg0KICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYNCiAgICAgIG9wZXJhdG9yKysoaW50KSB0aHJv
dygpDQogICAgICB7IHJldHVybiAqdGhpczsgfQ0KDQogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9y
Jg0KICAgICAgb3BlcmF0b3IrKygpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9DQoN
CiAgICAgIGJvb2wNCiAgICAgIGZhaWxlZCgpIGNvbnN0IHRocm93KCkNCiAgICAgIHsgcmV0dXJu
IF9NX2ZhaWxlZDsgfQ0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPg0KICAgIGlubGluZSBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVCwgX1Ry
YWl0cz4mDQogICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRv
cj0oX0NoYXJUIF9fYykNCiAgICB7DQogICAgICBpZiAoIV9NX2ZhaWxlZCAmJg0KICAgICAgICAg
IF9UcmFpdHM6OmVxX2ludF90eXBlKF9NX3NidWYtPnNwdXRjKF9fYyksIF9UcmFpdHM6OmVvZigp
KSkNCiAgICAgICAgX01fZmFpbGVkID0gdHJ1ZTsNCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9
DQp9DQojIDQxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX2lv
cy5oIiAyIDMNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2Nh
bGVfZmFjZXRzLmgiIDEgMw0KIyA0NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1
ZGUvZysrLXYzL2N3Y3R5cGUiIDEgMw0KIyA0OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvY3djdHlwZSIgMw0KDQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
d2N0eXBlLmgiIDEgMw0KIyAzMiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93Y3R5cGUuaCIg
Mw0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9saWIvZ2NjLWxpYi9pNjg2LXBjLW1pbmd3MzIvMy4x
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMw0KIyAzMyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS93
Y3R5cGUuaCIgMiAzDQojIDU0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL3djdHlwZS5oIiAz
DQpleHRlcm4gIkMiIHsNCiMgNjcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvd2N0eXBlLmgi
IDMNCmludCBpc3dhbG51bSh3aW50X3QpOw0KaW50IGlzd2FscGhhKHdpbnRfdCk7DQppbnQgaXN3
YXNjaWkod2ludF90KTsNCmludCBpc3djbnRybCh3aW50X3QpOw0KaW50IGlzd2N0eXBlKHdpbnRf
dCwgd2N0eXBlX3QpOw0KaW50IGlzX3djdHlwZSh3aW50X3QsIHdjdHlwZV90KTsNCmludCBpc3dk
aWdpdCh3aW50X3QpOw0KaW50IGlzd2dyYXBoKHdpbnRfdCk7DQppbnQgaXN3bG93ZXIod2ludF90
KTsNCmludCBpc3dwcmludCh3aW50X3QpOw0KaW50IGlzd3B1bmN0KHdpbnRfdCk7DQppbnQgaXN3
c3BhY2Uod2ludF90KTsNCmludCBpc3d1cHBlcih3aW50X3QpOw0KaW50IGlzd3hkaWdpdCh3aW50
X3QpOw0KDQp3Y2hhcl90IHRvd2xvd2VyKHdjaGFyX3QpOw0Kd2NoYXJfdCB0b3d1cHBlcih3Y2hh
cl90KTsNCg0KaW50IGlzbGVhZGJ5dGUgKGludCk7DQoNCnR5cGVkZWYgd2NoYXJfdCB3Y3RyYW5z
X3Q7DQp3aW50X3QgdG93Y3RyYW5zKHdpbnRfdCwgd2N0cmFuc190KTsNCndjdHJhbnNfdCB3Y3Ry
YW5zKGNvbnN0IGNoYXIqKTsNCndjdHlwZV90IHdjdHlwZShjb25zdCBjaGFyKik7DQoNCg0KfQ0K
IyA1MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY3djdHlwZSIgMiAzDQojIDQ3
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2lvcyIgMSAzDQojIDQ4
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMuaCIg
MiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCiMgNjAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2N0eXBlX2Jhc2UuaCIgMSAzDQojIDM2
ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pNjg2LXBjLW1pbmd3MzIvYml0cy9j
dHlwZV9iYXNlLmgiIDMNCiAgc3RydWN0IGN0eXBlX2Jhc2UNCiAgew0KDQogICAgdHlwZWRlZiBj
b25zdCBpbnQqIF9fdG9fdHlwZTsNCg0KDQoNCiAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG1h
c2s7DQogICAgc3RhdGljIGNvbnN0IG1hc2sgdXBwZXIgPSAweDAwMDE7DQogICAgc3RhdGljIGNv
bnN0IG1hc2sgbG93ZXIgPSAweDAwMDI7DQogICAgc3RhdGljIGNvbnN0IG1hc2sgYWxwaGEgPSAw
eDAxMDM7DQogICAgc3RhdGljIGNvbnN0IG1hc2sgZGlnaXQgPSAweDAwMDQ7DQogICAgc3RhdGlj
IGNvbnN0IG1hc2sgeGRpZ2l0ID0gMHgwMDgwOw0KICAgIHN0YXRpYyBjb25zdCBtYXNrIHNwYWNl
ID0gMHgwMDA4Ow0KICAgIHN0YXRpYyBjb25zdCBtYXNrIHByaW50ID0gKDB4MDA0MCB8IDB4MDAx
MHwgMHgwMTAzIHwgMHgwMDA0KTsNCiAgICBzdGF0aWMgY29uc3QgbWFzayBncmFwaCA9ICgweDAw
MTAgfCAweDAxMDMgfCAweDAwMDQpOw0KICAgIHN0YXRpYyBjb25zdCBtYXNrIGNudHJsID0gMHgw
MDIwOw0KICAgIHN0YXRpYyBjb25zdCBtYXNrIHB1bmN0ID0gMHgwMDEwOw0KICAgIHN0YXRpYyBj
b25zdCBtYXNrIGFsbnVtID0gKDB4MDEwMyB8IDB4MDAwNCk7DQogIH07DQojIDYxICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzDQoNCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgY2xhc3MgX19jdHlwZV9hYnN0cmFjdF9i
YXNlIDogcHVibGljIGxvY2FsZTo6ZmFjZXQsIHB1YmxpYyBjdHlwZV9iYXNlDQogICAgew0KICAg
IHB1YmxpYzoNCg0KICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOw0KDQogICAgICBib29s
DQogICAgICBpcyhtYXNrIF9fbSwgY2hhcl90eXBlIF9fYykgY29uc3QNCiAgICAgIHsgcmV0dXJu
IHRoaXMtPmRvX2lzKF9fbSwgX19jKTsgfQ0KDQogICAgICBjb25zdCBjaGFyX3R5cGUqDQogICAg
ICBpcyhjb25zdCBjaGFyX3R5cGUgKl9fbG8sIGNvbnN0IGNoYXJfdHlwZSAqX19oaSwgbWFzayAq
X192ZWMpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb19pcyhfX2xvLCBfX2hpLCBfX3Zl
Yyk7IH0NCg0KICAgICAgY29uc3QgY2hhcl90eXBlKg0KICAgICAgc2Nhbl9pcyhtYXNrIF9fbSwg
Y29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0DQogICAg
ICB7IHJldHVybiB0aGlzLT5kb19zY2FuX2lzKF9fbSwgX19sbywgX19oaSk7IH0NCg0KICAgICAg
Y29uc3QgY2hhcl90eXBlKg0KICAgICAgc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlw
ZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fc2Nhbl9ub3QoX19tLCBfX2xvLCBfX2hpKTsgfQ0KDQogICAgICBjaGFyX3R5cGUNCiAg
ICAgIHRvdXBwZXIoY2hhcl90eXBlIF9fYykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRv
X3RvdXBwZXIoX19jKTsgfQ0KDQogICAgICBjb25zdCBjaGFyX3R5cGUqDQogICAgICB0b3VwcGVy
KGNoYXJfdHlwZSAqX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdA0KICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZG9fdG91cHBlcihfX2xvLCBfX2hpKTsgfQ0KDQogICAgICBjaGFyX3R5cGUN
CiAgICAgIHRvbG93ZXIoY2hhcl90eXBlIF9fYykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX3RvbG93ZXIoX19jKTsgfQ0KDQogICAgICBjb25zdCBjaGFyX3R5cGUqDQogICAgICB0b2xv
d2VyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdA0KICAgICAg
eyByZXR1cm4gdGhpcy0+ZG9fdG9sb3dlcihfX2xvLCBfX2hpKTsgfQ0KDQogICAgICBjaGFyX3R5
cGUNCiAgICAgIHdpZGVuKGNoYXIgX19jKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f
d2lkZW4oX19jKTsgfQ0KDQogICAgICBjb25zdCBjaGFyKg0KICAgICAgd2lkZW4oY29uc3QgY2hh
ciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX3RvKSBjb25zdA0KICAgICAg
eyByZXR1cm4gdGhpcy0+ZG9fd2lkZW4oX19sbywgX19oaSwgX190byk7IH0NCg0KICAgICAgY2hh
cg0KICAgICAgbmFycm93KGNoYXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0DQogICAg
ICB7IHJldHVybiB0aGlzLT5kb19uYXJyb3coX19jLCBfX2RmYXVsdCk7IH0NCg0KICAgICAgY29u
c3QgY2hhcl90eXBlKg0KICAgICAgbmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3Qg
Y2hhcl90eXBlKiBfX2hpLA0KICAgICAgICAgICAgICBjaGFyIF9fZGZhdWx0LCBjaGFyICpfX3Rv
KSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fbG8sIF9faGksIF9fZGZh
dWx0LCBfX3RvKTsgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAgZXhwbGljaXQNCiAgICAgIF9f
Y3R5cGVfYWJzdHJhY3RfYmFzZShzaXplX3QgX19yZWZzID0gMCk6IGxvY2FsZTo6ZmFjZXQoX19y
ZWZzKSB7IH0NCg0KICAgICAgdmlydHVhbA0KICAgICAgfl9fY3R5cGVfYWJzdHJhY3RfYmFzZSgp
IHsgfQ0KDQogICAgICB2aXJ0dWFsIGJvb2wNCiAgICAgIGRvX2lzKG1hc2sgX19tLCBjaGFyX3R5
cGUgX19jKSBjb25zdCA9IDA7DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKg0KICAg
ICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGksDQog
ICAgICAgICAgICBtYXNrKiBfX3ZlYykgY29uc3QgPSAwOw0KDQogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoNCiAgICAgIGRvX3NjYW5faXMobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSog
X19sbywNCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdCA9IDA7
DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKg0KICAgICAgZG9fc2Nhbl9ub3QobWFz
ayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywNCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXJfdHlwZSogX19oaSkgY29uc3QgPSAwOw0KDQogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQ0KICAg
ICAgZG9fdG91cHBlcihjaGFyX3R5cGUpIGNvbnN0ID0gMDsNCg0KICAgICAgdmlydHVhbCBjb25z
dCBjaGFyX3R5cGUqDQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hh
cl90eXBlKiBfX2hpKSBjb25zdCA9IDA7DQoNCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlDQogICAg
ICBkb190b2xvd2VyKGNoYXJfdHlwZSkgY29uc3QgPSAwOw0KDQogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoNCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFy
X3R5cGUqIF9faGkpIGNvbnN0ID0gMDsNCg0KICAgICAgdmlydHVhbCBjaGFyX3R5cGUNCiAgICAg
IGRvX3dpZGVuKGNoYXIpIGNvbnN0ID0gMDsNCg0KICAgICAgdmlydHVhbCBjb25zdCBjaGFyKg0K
ICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwNCiAgICAg
ICAgICAgICAgIGNoYXJfdHlwZSogX19kZXN0KSBjb25zdCA9IDA7DQoNCiAgICAgIHZpcnR1YWwg
Y2hhcg0KICAgICAgZG9fbmFycm93KGNoYXJfdHlwZSwgY2hhciBfX2RmYXVsdCkgY29uc3QgPSAw
Ow0KDQogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoNCiAgICAgIGRvX25hcnJvdyhjb25z
dCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwNCiAgICAgICAgICAgICAg
ICAgY2hhciBfX2RmYXVsdCwgY2hhciogX19kZXN0KSBjb25zdCA9IDA7DQogICAgfTsNCg0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBjbGFzcyBjdHlwZSA6IHB1YmxpYyBfX2N0
eXBlX2Fic3RyYWN0X2Jhc2U8X0NoYXJUPg0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5
cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY3R5cGU6Om1h
c2sgbWFzazsNCg0KICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7DQoNCiAgICAgIGV4cGxpY2l0
DQogICAgICBjdHlwZShzaXplX3QgX19yZWZzID0gMCkgOiBfX2N0eXBlX2Fic3RyYWN0X2Jhc2U8
X0NoYXJUPihfX3JlZnMpIHsgfQ0KDQogICBwcm90ZWN0ZWQ6DQogICAgICB2aXJ0dWFsDQogICAg
ICB+Y3R5cGUoKTsNCg0KICAgICAgdmlydHVhbCBib29sDQogICAgICBkb19pcyhtYXNrIF9fbSwg
Y2hhcl90eXBlIF9fYykgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKg0K
ICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGks
IG1hc2sqIF9fdmVjKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqDQog
ICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNo
YXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKg0K
ICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywNCiAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1
YWwgY2hhcl90eXBlDQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSBfX2MpIGNvbnN0Ow0KDQog
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoNCiAgICAgIGRvX3RvdXBwZXIoY2hhcl90eXBl
KiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGNo
YXJfdHlwZQ0KICAgICAgZG9fdG9sb3dlcihjaGFyX3R5cGUgX19jKSBjb25zdDsNCg0KICAgICAg
dmlydHVhbCBjb25zdCBjaGFyX3R5cGUqDQogICAgICBkb190b2xvd2VyKGNoYXJfdHlwZSogX19s
bywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBjaGFyX3R5
cGUNCiAgICAgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBjb25z
dCBjaGFyKg0KICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19o
aSwgY2hhcl90eXBlKiBfX2Rlc3QpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGNoYXINCiAgICAg
IGRvX25hcnJvdyhjaGFyX3R5cGUsIGNoYXIgX19kZmF1bHQpIGNvbnN0Ow0KDQogICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXJfdHlwZSoNCiAgICAgIGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9f
bG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSwNCiAgICAgICAgICAgICAgICBjaGFyIF9fZGZhdWx0
LCBjaGFyKiBfX2Rlc3QpIGNvbnN0Ow0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJUPg0KICAgIGxvY2FsZTo6aWQgY3R5cGU8X0NoYXJUPjo6aWQ7DQoNCg0KICB0ZW1wbGF0ZTw+
DQogICAgY2xhc3MgY3R5cGU8Y2hhcj4gOiBwdWJsaWMgX19jdHlwZV9hYnN0cmFjdF9iYXNlPGNo
YXI+DQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsN
Cg0KICAgIHByb3RlY3RlZDoNCg0KICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jdHlwZTsN
CiAgICAgIGJvb2wgX01fZGVsOw0KICAgICAgX190b190eXBlIF9NX3RvdXBwZXI7DQogICAgICBf
X3RvX3R5cGUgX01fdG9sb3dlcjsNCiAgICAgIGNvbnN0IG1hc2sqIF9NX3RhYmxlOw0KDQogICAg
cHVibGljOg0KICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7DQogICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHRhYmxlX3NpemUgPSAxICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oLTEpOw0K
DQogICAgICBleHBsaWNpdA0KICAgICAgY3R5cGUoY29uc3QgbWFzayogX190YWJsZSA9IDAsIGJv
b2wgX19kZWwgPSBmYWxzZSwgc2l6ZV90IF9fcmVmcyA9IDApOw0KDQogICAgICBleHBsaWNpdA0K
ICAgICAgY3R5cGUoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IG1hc2sqIF9fdGFibGUgPSAwLCBi
b29sIF9fZGVsID0gZmFsc2UsDQogICAgICAgICAgICBzaXplX3QgX19yZWZzID0gMCk7DQoNCiAg
ICAgIGlubGluZSBib29sDQogICAgICBpcyhtYXNrIF9fbSwgY2hhciBfX2MpIGNvbnN0Ow0KDQog
ICAgICBpbmxpbmUgY29uc3QgY2hhcioNCiAgICAgIGlzKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0
IGNoYXIqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdDsNCg0KICAgICAgaW5saW5lIGNvbnN0IGNo
YXIqDQogICAgICBzY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFy
KiBfX2hpKSBjb25zdDsNCg0KICAgICAgaW5saW5lIGNvbnN0IGNoYXIqDQogICAgICBzY2FuX25v
dChtYXNrIF9fbSwgY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSkgY29uc3Q7DQoN
CiAgICBwcm90ZWN0ZWQ6DQogICAgICBjb25zdCBtYXNrKg0KICAgICAgdGFibGUoKSBjb25zdCB0
aHJvdygpDQogICAgICB7IHJldHVybiBfTV90YWJsZTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3Qg
bWFzayoNCiAgICAgIGNsYXNzaWNfdGFibGUoKSB0aHJvdygpOw0KDQogICAgICB2aXJ0dWFsDQog
ICAgICB+Y3R5cGUoKTsNCg0KICAgICAgdmlydHVhbCBib29sDQogICAgICBkb19pcyhtYXNrIF9f
bSwgY2hhcl90eXBlIF9fYykgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBl
Kg0KICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9f
aGksIG1hc2sqIF9fdmVjKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUq
DQogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0
IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBl
Kg0KICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywNCiAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZp
cnR1YWwgY2hhcl90eXBlDQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSkgY29uc3Q7DQoNCiAg
ICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKg0KICAgICAgZG9fdG91cHBlcihjaGFyX3R5cGUq
IF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY2hh
cl90eXBlDQogICAgICBkb190b2xvd2VyKGNoYXJfdHlwZSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1
YWwgY29uc3QgY2hhcl90eXBlKg0KICAgICAgZG9fdG9sb3dlcihjaGFyX3R5cGUqIF9fbG8sIGNv
bnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlDQog
ICAgICBkb193aWRlbihjaGFyKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBjb25zdCBjaGFyKg0K
ICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90
eXBlKiBfX2Rlc3QpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGNoYXINCiAgICAgIGRvX25hcnJv
dyhjaGFyX3R5cGUsIGNoYXIgX19kZmF1bHQpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXJfdHlwZSoNCiAgICAgIGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0
IGNoYXJfdHlwZSogX19oaSwNCiAgICAgICAgICAgICAgICBjaGFyIF9fZGZhdWx0LCBjaGFyKiBf
X2Rlc3QpIGNvbnN0Ow0KICAgIH07DQoNCiAgdGVtcGxhdGU8Pg0KICAgIGNvbnN0IGN0eXBlPGNo
YXI+Jg0KICAgIHVzZV9mYWNldDxjdHlwZTxjaGFyPiA+KGNvbnN0IGxvY2FsZSYgX19sb2MpOw0K
IyAzOTcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0
cy5oIiAzDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbWlu
Z3czMi9iaXRzL2N0eXBlX2lubGluZS5oIiAxIDMNCiMgMzggInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2k2ODYtcGMtbWluZ3czMi9iaXRzL2N0eXBlX2lubGluZS5oIiAzDQogIGJv
b2wNCiAgY3R5cGU8Y2hhcj46Og0KICBpcyhtYXNrIF9fbSwgY2hhciBfX2MpIGNvbnN0DQogIHsN
CiAgICAgICAgcmV0dXJuIChfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX2Mp
IF0gJiBfX20pOw0KICB9DQoNCg0KICBjb25zdCBjaGFyKg0KICBjdHlwZTxjaGFyPjo6DQogIGlz
KGNvbnN0IGNoYXIqIF9fbG93LCBjb25zdCBjaGFyKiBfX2hpZ2gsIG1hc2sqIF9fdmVjKSBjb25z
dA0KICB7DQogICAgd2hpbGUgKF9fbG93IDwgX19oaWdoKQ0KICAgICAgKl9fdmVjKysgPSBfTV90
YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sb3crKyldOw0KICAgIHJldHVybiBf
X2hpZ2g7DQogIH0NCg0KICBjb25zdCBjaGFyKg0KICBjdHlwZTxjaGFyPjo6DQogIHNjYW5faXMo
bWFzayBfX20sIGNvbnN0IGNoYXIqIF9fbG93LCBjb25zdCBjaGFyKiBfX2hpZ2gpIGNvbnN0DQog
IHsNCiAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2ggJiYgIXRoaXMtPmlzKF9fbSwgKl9fbG93KSkN
CiAgICAgICsrX19sb3c7DQogICAgcmV0dXJuIF9fbG93Ow0KICB9DQoNCiAgY29uc3QgY2hhcioN
CiAgY3R5cGU8Y2hhcj46Og0KICBzY2FuX25vdChtYXNrIF9fbSwgY29uc3QgY2hhciogX19sb3cs
IGNvbnN0IGNoYXIqIF9faGlnaCkgY29uc3QNCiAgew0KICAgIHdoaWxlIChfX2xvdyA8IF9faGln
aCAmJiB0aGlzLT5pcyhfX20sICpfX2xvdykgIT0gMCkNCiAgICAgICsrX19sb3c7DQogICAgcmV0
dXJuIF9fbG93Ow0KICB9DQojIDM5OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDIgMw0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
Pg0KICAgIGNsYXNzIGN0eXBlX2J5bmFtZSA6IHB1YmxpYyBjdHlwZTxfQ2hhclQ+DQogICAgew0K
ICAgIHB1YmxpYzoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCg0KICAgICAgZXhw
bGljaXQNCiAgICAgIGN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMg
PSAwKTsNCg0KICAgIHByb3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5jdHlwZV9ieW5h
bWUoKSB7IH07DQogICAgfTsNCg0KDQogIHRlbXBsYXRlPD4NCiAgICBjdHlwZV9ieW5hbWU8Y2hh
cj46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiwgc2l6ZV90IHJlZnMpOw0KDQogIHRlbXBsYXRl
PD4NCiAgICBjdHlwZV9ieW5hbWU8d2NoYXJfdD46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiwg
c2l6ZV90IHJlZnMpOw0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9jb2RlY3Z0LmgiIDEgMw0KIyA0NSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9jb2RlY3Z0LmgiIDMNCg0KDQogIGNsYXNzIGNvZGVjdnRfYmFzZQ0KICB7DQogIHB1
YmxpYzoNCiAgICBlbnVtIHJlc3VsdA0KICAgIHsNCiAgICAgIG9rLA0KICAgICAgcGFydGlhbCwN
CiAgICAgIGVycm9yLA0KICAgICAgbm9jb252DQogICAgfTsNCiAgfTsNCg0KDQoNCg0KDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9JbnRlcm5ULCB0eXBlbmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0
YXRlVD4NCiAgICBjbGFzcyBfX2NvZGVjdnRfYWJzdHJhY3RfYmFzZQ0KICAgIDogcHVibGljIGxv
Y2FsZTo6ZmFjZXQsIHB1YmxpYyBjb2RlY3Z0X2Jhc2UNCiAgICB7DQogICAgcHVibGljOg0KDQog
ICAgICB0eXBlZGVmIGNvZGVjdnRfYmFzZTo6cmVzdWx0IHJlc3VsdDsNCiAgICAgIHR5cGVkZWYg
X0ludGVyblQgaW50ZXJuX3R5cGU7DQogICAgICB0eXBlZGVmIF9FeHRlcm5UIGV4dGVybl90eXBl
Ow0KICAgICAgdHlwZWRlZiBfU3RhdGVUIHN0YXRlX3R5cGU7DQoNCg0KICAgICAgcmVzdWx0DQog
ICAgICBvdXQoc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbSwN
CiAgICAgICAgICBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5
cGUqJiBfX2Zyb21fbmV4dCwNCiAgICAgICAgICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5
cGUqIF9fdG9fZW5kLA0KICAgICAgICAgIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdA0K
ICAgICAgew0KICAgICAgICByZXR1cm4gdGhpcy0+ZG9fb3V0KF9fc3RhdGUsIF9fZnJvbSwgX19m
cm9tX2VuZCwgX19mcm9tX25leHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX190bywg
X190b19lbmQsIF9fdG9fbmV4dCk7DQogICAgICB9DQoNCiAgICAgIHJlc3VsdA0KICAgICAgdW5z
aGlmdChzdGF0ZV90eXBlJiBfX3N0YXRlLCBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUq
IF9fdG9fZW5kLA0KICAgICAgICAgICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QN
CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3Vuc2hpZnQoX19zdGF0ZSwgX190byxfX3RvX2VuZCxf
X3RvX25leHQpOyB9DQoNCiAgICAgIHJlc3VsdA0KICAgICAgaW4oc3RhdGVfdHlwZSYgX19zdGF0
ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwNCiAgICAgICAgIGNvbnN0IGV4dGVybl90eXBl
KiBfX2Zyb21fZW5kLCBjb25zdCBleHRlcm5fdHlwZSomIF9fZnJvbV9uZXh0LA0KICAgICAgICAg
aW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwNCiAgICAgICAgIGludGVy
bl90eXBlKiYgX190b19uZXh0KSBjb25zdA0KICAgICAgew0KICAgICAgICByZXR1cm4gdGhpcy0+
ZG9faW4oX19zdGF0ZSwgX19mcm9tLCBfX2Zyb21fZW5kLCBfX2Zyb21fbmV4dCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdG8sIF9fdG9fZW5kLCBfX3RvX25leHQpOw0KICAgICAgfQ0K
DQogICAgICBpbnQNCiAgICAgIGVuY29kaW5nKCkgY29uc3QgdGhyb3coKQ0KICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZW5jb2RpbmcoKTsgfQ0KDQogICAgICBib29sDQogICAgICBhbHdheXNfbm9j
b252KCkgY29uc3QgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fYWx3YXlzX25vY29u
digpOyB9DQoNCiAgICAgIGludA0KICAgICAgbGVuZ3RoKGNvbnN0IHN0YXRlX3R5cGUmIF9fc3Rh
dGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sDQogICAgICAgICAgICAgY29uc3QgZXh0ZXJu
X3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5k
b19sZW5ndGgoX19zdGF0ZSwgX19mcm9tLCBfX2VuZCwgX19tYXgpOyB9DQoNCiAgICAgIGludA0K
ICAgICAgbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRv
X21heF9sZW5ndGgoKTsgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAgZXhwbGljaXQNCiAgICAg
IF9fY29kZWN2dF9hYnN0cmFjdF9iYXNlKHNpemVfdCBfX3JlZnMgPSAwKSA6IGxvY2FsZTo6ZmFj
ZXQoX19yZWZzKSB7IH0NCg0KICAgICAgdmlydHVhbA0KICAgICAgfl9fY29kZWN2dF9hYnN0cmFj
dF9iYXNlKCkgeyB9DQoNCiAgICAgIHZpcnR1YWwgcmVzdWx0DQogICAgICBkb19vdXQoc3RhdGVf
dHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbSwNCiAgICAgICAgICAgICBj
b25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21f
bmV4dCwNCiAgICAgICAgICAgICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9f
ZW5kLA0KICAgICAgICAgICAgIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdCA9IDA7DQoN
CiAgICAgIHZpcnR1YWwgcmVzdWx0DQogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3Rh
dGUsIGV4dGVybl90eXBlKiBfX3RvLA0KICAgICAgICAgICAgICAgICBleHRlcm5fdHlwZSogX190
b19lbmQsIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdCA9IDA7DQoNCiAgICAgIHZpcnR1
YWwgcmVzdWx0DQogICAgICBkb19pbihzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5f
dHlwZSogX19mcm9tLA0KICAgICAgICAgICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQs
IGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsDQogICAgICAgICAgICBpbnRlcm5fdHlw
ZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9fZW5kLA0KICAgICAgICAgICAgaW50ZXJuX3R5cGUq
JiBfX3RvX25leHQpIGNvbnN0ID0gMDsNCg0KICAgICAgdmlydHVhbCBpbnQNCiAgICAgIGRvX2Vu
Y29kaW5nKCkgY29uc3QgdGhyb3coKSA9IDA7DQoNCiAgICAgIHZpcnR1YWwgYm9vbA0KICAgICAg
ZG9fYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93KCkgPSAwOw0KDQogICAgICB2aXJ0dWFsIGlu
dA0KICAgICAgZG9fbGVuZ3RoKGNvbnN0IHN0YXRlX3R5cGUmLCBjb25zdCBleHRlcm5fdHlwZSog
X19mcm9tLA0KICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybl90eXBlKiBfX2VuZCwgc2l6ZV90
IF9fbWF4KSBjb25zdCA9IDA7DQoNCiAgICAgIHZpcnR1YWwgaW50DQogICAgICBkb19tYXhfbGVu
Z3RoKCkgY29uc3QgdGhyb3coKSA9IDA7DQogICAgfTsNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVUPg0KICAgIGNs
YXNzIGNvZGVjdnQNCiAgICA6IHB1YmxpYyBfX2NvZGVjdnRfYWJzdHJhY3RfYmFzZTxfSW50ZXJu
VCwgX0V4dGVyblQsIF9TdGF0ZVQ+DQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAgdHlwZWRl
ZiBjb2RlY3Z0X2Jhc2U6OnJlc3VsdCByZXN1bHQ7DQogICAgICB0eXBlZGVmIF9JbnRlcm5UIGlu
dGVybl90eXBlOw0KICAgICAgdHlwZWRlZiBfRXh0ZXJuVCBleHRlcm5fdHlwZTsNCiAgICAgIHR5
cGVkZWYgX1N0YXRlVCBzdGF0ZV90eXBlOw0KDQoNCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlk
Ow0KDQogICAgICBleHBsaWNpdA0KICAgICAgY29kZWN2dChzaXplX3QgX19yZWZzID0gMCkNCiAg
ICAgIDogX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8X0ludGVyblQsX0V4dGVyblQsX1N0YXRlVD4g
KF9fcmVmcykgeyB9DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICB2aXJ0dWFsDQogICAgICB+Y29k
ZWN2dCgpIHsgfQ0KDQogICAgICB2aXJ0dWFsIHJlc3VsdA0KICAgICAgZG9fb3V0KHN0YXRlX3R5
cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sDQogICAgICAgICAgICAgY29u
c3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19mcm9tX25l
eHQsDQogICAgICAgICAgICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3RvX2Vu
ZCwNCiAgICAgICAgICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7DQoNCiAgICAg
IHZpcnR1YWwgcmVzdWx0DQogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGV4
dGVybl90eXBlKiBfX3RvLA0KICAgICAgICAgICAgICAgICBleHRlcm5fdHlwZSogX190b19lbmQs
IGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdDsNCg0KICAgICAgdmlydHVhbCByZXN1bHQN
CiAgICAgIGRvX2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zy
b20sDQogICAgICAgICAgICBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0
ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwNCiAgICAgICAgICAgIGludGVybl90eXBlKiBfX3RvLCBp
bnRlcm5fdHlwZSogX190b19lbmQsDQogICAgICAgICAgICBpbnRlcm5fdHlwZSomIF9fdG9fbmV4
dCkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgaW50DQogICAgICBkb19lbmNvZGluZygpIGNvbnN0
IHRocm93KCk7DQoNCiAgICAgIHZpcnR1YWwgYm9vbA0KICAgICAgZG9fYWx3YXlzX25vY29udigp
IGNvbnN0IHRocm93KCk7DQoNCiAgICAgIHZpcnR1YWwgaW50DQogICAgICBkb19sZW5ndGgoY29u
c3Qgc3RhdGVfdHlwZSYsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sDQogICAgICAgICAgICAg
ICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0Ow0KDQogICAg
ICB2aXJ0dWFsIGludA0KICAgICAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCk7DQogICAg
fTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJuVCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5
cGVuYW1lIF9TdGF0ZVQ+DQogICAgbG9jYWxlOjppZCBjb2RlY3Z0PF9JbnRlcm5ULCBfRXh0ZXJu
VCwgX1N0YXRlVD46OmlkOw0KDQoNCiAgdGVtcGxhdGU8Pg0KICAgIGNsYXNzIGNvZGVjdnQ8Y2hh
ciwgY2hhciwgbWJzdGF0ZV90Pg0KICAgIDogcHVibGljIF9fY29kZWN2dF9hYnN0cmFjdF9iYXNl
PGNoYXIsIGNoYXIsIG1ic3RhdGVfdD4NCiAgICB7DQogICAgcHVibGljOg0KDQogICAgICB0eXBl
ZGVmIGNoYXIgaW50ZXJuX3R5cGU7DQogICAgICB0eXBlZGVmIGNoYXIgZXh0ZXJuX3R5cGU7DQog
ICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOw0KDQoNCiAgICAgIHN0YXRpYyBsb2Nh
bGU6OmlkIGlkOw0KDQogICAgICBleHBsaWNpdA0KICAgICAgY29kZWN2dChzaXplX3QgX19yZWZz
ID0gMCk7DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICB2aXJ0dWFsDQogICAgICB+Y29kZWN2dCgp
Ow0KDQogICAgICB2aXJ0dWFsIHJlc3VsdA0KICAgICAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3Rh
dGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sDQogICAgICAgICAgICAgY29uc3QgaW50ZXJu
X3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19mcm9tX25leHQsDQogICAg
ICAgICAgICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3RvX2VuZCwNCiAgICAg
ICAgICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwg
cmVzdWx0DQogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGV4dGVybl90eXBl
KiBfX3RvLA0KICAgICAgICAgICAgICAgICBleHRlcm5fdHlwZSogX190b19lbmQsIGV4dGVybl90
eXBlKiYgX190b19uZXh0KSBjb25zdDsNCg0KICAgICAgdmlydHVhbCByZXN1bHQNCiAgICAgIGRv
X2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sDQogICAg
ICAgICAgICBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0ZXJuX3R5cGUq
JiBfX2Zyb21fbmV4dCwNCiAgICAgICAgICAgIGludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlw
ZSogX190b19lbmQsDQogICAgICAgICAgICBpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7
DQoNCiAgICAgIHZpcnR1YWwgaW50DQogICAgICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCk7
DQoNCiAgICAgIHZpcnR1YWwgYm9vbA0KICAgICAgZG9fYWx3YXlzX25vY29udigpIGNvbnN0IHRo
cm93KCk7DQoNCiAgICAgIHZpcnR1YWwgaW50DQogICAgICBkb19sZW5ndGgoY29uc3Qgc3RhdGVf
dHlwZSYsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sDQogICAgICAgICAgICAgICAgY29uc3Qg
ZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3QgX19tYXgpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFs
IGludA0KICAgICAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCk7DQogIH07DQojIDMxOCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9jb2RlY3Z0LmgiIDMNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3Rh
dGVUPg0KICAgIGNsYXNzIGNvZGVjdnRfYnluYW1lIDogcHVibGljIGNvZGVjdnQ8X0ludGVyblQs
IF9FeHRlcm5ULCBfU3RhdGVUPg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICBleHBsaWNpdA0K
ICAgICAgY29kZWN2dF9ieW5hbWUoY29uc3QgY2hhciosIHNpemVfdCBfX3JlZnMgPSAwKQ0KICAg
ICAgOiBjb2RlY3Z0PF9JbnRlcm5ULCBfRXh0ZXJuVCwgX1N0YXRlVD4oX19yZWZzKSB7IH0NCiAg
ICBwcm90ZWN0ZWQ6DQogICAgICB2aXJ0dWFsDQogICAgICB+Y29kZWN2dF9ieW5hbWUoKSB7IH0N
CiAgICB9Ow0KIyA0MjMgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9j
YWxlX2ZhY2V0cy5oIiAyIDMNCg0KDQoNCiAgY2xhc3MgX19udW1fYmFzZQ0KICB7DQogIHByb3Rl
Y3RlZDoNCg0KDQogICAgc3RhdGljIGNvbnN0IGNoYXIgX1NfYXRvbXNbXTsNCg0KICAgIGVudW0N
CiAgICB7DQogICAgICBfTV96ZXJvLA0KICAgICAgX01fZSA9IF9NX3plcm8gKyAxMCwNCiAgICAg
IF9NX0UgPSBfTV96ZXJvICsgMTEsDQogICAgICBfTV9zaXplID0gMjEgKyAxDQogICAgfTsNCg0K
DQoNCiAgICBzdGF0aWMgYm9vbA0KICAgIF9TX2Zvcm1hdF9mbG9hdChjb25zdCBpb3NfYmFzZSYg
X19pbywgY2hhciogX19mcHRyLCBjaGFyIF9fbW9kLA0KICAgICAgICAgICAgICAgICAgICBzdHJl
YW1zaXplIF9fcHJlYyk7DQoNCg0KICAgIHN0YXRpYyB2b2lkDQogICAgX1NfZm9ybWF0X2ludChj
b25zdCBpb3NfYmFzZSYgX19pbywgY2hhciogX19mcHRyLCBjaGFyIF9fbW9kLCBjaGFyIF9fbW9k
bCk7DQogIH07DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgY2xhc3MgbnVt
cHVuY3QgOiBwdWJsaWMgbG9jYWxlOjpmYWNldA0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAg
IHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9D
aGFyVD4gc3RyaW5nX3R5cGU7DQoNCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOw0KDQogICAg
cHJpdmF0ZToNCiAgICAgIGNoYXJfdHlwZSBfTV9kZWNpbWFsX3BvaW50Ow0KICAgICAgY2hhcl90
eXBlIF9NX3Rob3VzYW5kc19zZXA7DQogICAgICBjb25zdCBjaGFyKiBfTV9ncm91cGluZzsNCiAg
ICAgIGNvbnN0IGNoYXJfdHlwZSogX01fdHJ1ZW5hbWU7DQogICAgICBjb25zdCBjaGFyX3R5cGUq
IF9NX2ZhbHNlbmFtZTsNCg0KICAgIHB1YmxpYzoNCiAgICAgIGV4cGxpY2l0DQogICAgICBudW1w
dW5jdChzaXplX3QgX19yZWZzID0gMCkgOiBsb2NhbGU6OmZhY2V0KF9fcmVmcykNCiAgICAgIHsg
X01faW5pdGlhbGl6ZV9udW1wdW5jdCgpOyB9DQoNCiAgICAgIGV4cGxpY2l0DQogICAgICBudW1w
dW5jdChfX2NfbG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApIDogbG9jYWxlOjpmYWNl
dChfX3JlZnMpDQogICAgICB7IF9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jbG9jKTsgfQ0KDQog
ICAgICBjaGFyX3R5cGUNCiAgICAgIGRlY2ltYWxfcG9pbnQoKSBjb25zdA0KICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZGVjaW1hbF9wb2ludCgpOyB9DQoNCiAgICAgIGNoYXJfdHlwZQ0KICAgICAg
dGhvdXNhbmRzX3NlcCgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb190aG91c2FuZHNf
c2VwKCk7IH0NCg0KICAgICAgc3RyaW5nDQogICAgICBncm91cGluZygpIGNvbnN0DQogICAgICB7
IHJldHVybiB0aGlzLT5kb19ncm91cGluZygpOyB9DQoNCiAgICAgIHN0cmluZ190eXBlDQogICAg
ICB0cnVlbmFtZSgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb190cnVlbmFtZSgpOyB9
DQoNCiAgICAgIHN0cmluZ190eXBlDQogICAgICBmYWxzZW5hbWUoKSBjb25zdA0KICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZG9fZmFsc2VuYW1lKCk7IH0NCg0KICAgIHByb3RlY3RlZDoNCiAgICAgIHZp
cnR1YWwNCiAgICAgIH5udW1wdW5jdCgpOw0KDQogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQ0KICAg
ICAgZG9fZGVjaW1hbF9wb2ludCgpIGNvbnN0DQogICAgICB7IHJldHVybiBfTV9kZWNpbWFsX3Bv
aW50OyB9DQoNCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlDQogICAgICBkb190aG91c2FuZHNfc2Vw
KCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9NX3Rob3VzYW5kc19zZXA7IH0NCg0KICAgICAgdmly
dHVhbCBzdHJpbmcNCiAgICAgIGRvX2dyb3VwaW5nKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9N
X2dyb3VwaW5nOyB9DQoNCiAgICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUNCiAgICAgIGRvX3RydWVu
YW1lKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9NX3RydWVuYW1lOyB9DQoNCiAgICAgIHZpcnR1
YWwgc3RyaW5nX3R5cGUNCiAgICAgIGRvX2ZhbHNlbmFtZSgpIGNvbnN0DQogICAgICB7IHJldHVy
biBfTV9mYWxzZW5hbWU7IH0NCg0KDQogICAgICB2b2lkDQogICAgICBfTV9pbml0aWFsaXplX251
bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jID0gX1NfY19sb2NhbGUpOw0KICAgIH07DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGxvY2FsZTo6aWQgbnVtcHVuY3Q8X0NoYXJUPjo6
aWQ7DQoNCiAgdGVtcGxhdGU8Pg0KICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKTsNCg0K
ICB0ZW1wbGF0ZTw+DQogICAgdm9pZA0KICAgIG51bXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXpl
X251bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKTsNCiMgNTQ3ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQ+DQogICAgY2xhc3MgbnVtcHVuY3RfYnluYW1lIDogcHVibGljIG51bXB1bmN0PF9D
aGFyVD4NCiAgICB7DQoNCiAgICAgIF9fY19sb2NhbGUgX01fY19sb2NhbGVfbnVtcHVuY3Q7DQoN
CiAgICBwdWJsaWM6DQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0eXBl
ZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOw0KDQogICAgICBleHBsaWNpdA0K
ICAgICAgbnVtcHVuY3RfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDAp
DQogICAgICA6IG51bXB1bmN0PF9DaGFyVD4oX19yZWZzKQ0KICAgICAgew0KICAgICAgICBfU19j
cmVhdGVfY19sb2NhbGUoX01fY19sb2NhbGVfbnVtcHVuY3QsIF9fcyk7DQogICAgICAgIF9NX2lu
aXRpYWxpemVfbnVtcHVuY3QoX01fY19sb2NhbGVfbnVtcHVuY3QpOw0KICAgICAgfQ0KDQogICAg
cHJvdGVjdGVkOg0KICAgICAgdmlydHVhbA0KICAgICAgfm51bXB1bmN0X2J5bmFtZSgpDQogICAg
ICB7IF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfbnVtcHVuY3QpOyB9DQogICAgfTsN
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgY2xh
c3MgbnVtX2dldCA6IHB1YmxpYyBsb2NhbGU6OmZhY2V0LCBwdWJsaWMgX19udW1fYmFzZQ0KICAg
IHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAg
IHR5cGVkZWYgX0luSXRlciBpdGVyX3R5cGU7DQoNCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlk
Ow0KDQogICAgICBleHBsaWNpdA0KICAgICAgbnVtX2dldChzaXplX3QgX19yZWZzID0gMCkgOiBs
b2NhbGU6OmZhY2V0KF9fcmVmcykgeyB9DQoNCiAgICAgIGl0ZXJfdHlwZQ0KICAgICAgZ2V0KGl0
ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAg
IGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgYm9vbCYgX192KSBjb25zdA0KICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQ0KDQogICAg
ICBpdGVyX3R5cGUNCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBp
b3NfYmFzZSYgX19pbywNCiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcm
IF9fdikgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19p
bywgX19lcnIsIF9fdik7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBnZXQoaXRlcl90eXBl
IF9faW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgaW9zX2Jh
c2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBzaG9ydCYgX192KSBjb25zdA0KICAgICAgeyBy
ZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQ0KDQog
ICAgICBpdGVyX3R5cGUNCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5k
LCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVu
c2lnbmVkIGludCYgX192KSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4s
IF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQ0KDQogICAgICBpdGVyX3R5cGUNCiAgICAgIGdl
dChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywNCiAgICAg
ICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIGxvbmcmIF9fdikgY29uc3QN
CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9f
dik7IH0NCiMgNjIxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2Fs
ZV9mYWNldHMuaCIgMw0KICAgICAgaXRlcl90eXBlDQogICAgICBnZXQoaXRlcl90eXBlIF9faW4s
IGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgaW9zX2Jhc2U6Omlv
c3RhdGUmIF9fZXJyLCBmbG9hdCYgX192KSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f
Z2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQ0KDQogICAgICBpdGVyX3R5cGUN
CiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19p
bywNCiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGRvdWJsZSYgX192KSBjb25z
dA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2Vyciwg
X192KTsgfQ0KDQogICAgICBpdGVyX3R5cGUNCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRl
cl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0
ZSYgX19lcnIsIGxvbmcgZG91YmxlJiBfX3YpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5k
b19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9DQoNCiAgICAgIGl0ZXJfdHlw
ZQ0KICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBf
X2lvLA0KICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgdm9pZComIF9fdikgY29u
c3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIs
IF9fdik7IH0NCg0KICAgIHByb3RlY3RlZDoNCiAgICAgIHZpcnR1YWwgfm51bV9nZXQoKSB7IH0N
Cg0KICAgICAgaXRlcl90eXBlDQogICAgICBfTV9leHRyYWN0X2Zsb2F0KGl0ZXJfdHlwZSwgaXRl
cl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nJiBfX3h0cmMpIGNvbnN0Ow0KDQogICAgICBpdGVyX3R5cGUNCiAgICAgIF9N
X2V4dHJhY3RfaW50KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjpp
b3N0YXRlJiwNCiAgICAgICAgICAgICAgICAgICAgIHN0cmluZyYgX194dHJjLCBpbnQmIF9fYmFz
ZSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBkb19nZXQoaXRlcl90
eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLCBib29sJikgY29u
c3Q7DQoNCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBkb19nZXQoaXRlcl90eXBlLCBp
dGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLCBsb25nJikgY29uc3Q7DQoN
CiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBkb19nZXQoaXRlcl90eXBlLCBpdGVyX3R5
cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLA0KICAgICAgICAgICAgICB1
bnNpZ25lZCBzaG9ydCYpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQ0KICAgICAg
ZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRl
JiBfX2VyciwNCiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQmKSBjb25zdDsNCg0KICAgICAgdmly
dHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jh
c2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsDQogICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyYpIGNvbnN0Ow0KIyA2ODAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
bG9jYWxlX2ZhY2V0cy5oIiAzDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQ0KICAgICAgZG9fZ2V0
KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vy
ciwNCiAgICAgICAgICAgICBmbG9hdCYpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlw
ZQ0KICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNl
Ojppb3N0YXRlJiBfX2VyciwNCiAgICAgICAgICAgICBkb3VibGUmKSBjb25zdDsNCg0KICAgICAg
dmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9z
X2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsDQogICAgICAgICAgICAgbG9uZyBkb3Vi
bGUmKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldChpdGVy
X3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsDQog
ICAgICAgICAgICAgdm9pZComKSBjb25zdDsNCiAgICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1l
IF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBsb2NhbGU6OmlkIG51bV9nZXQ8X0NoYXJU
LCBfSW5JdGVyPjo6aWQ7DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
T3V0SXRlcj4NCiAgICBjbGFzcyBudW1fcHV0IDogcHVibGljIGxvY2FsZTo6ZmFjZXQsIHB1Ymxp
YyBfX251bV9iYXNlDQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAgdHlwZWRlZiBfQ2hhclQg
Y2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBfT3V0SXRlciBpdGVyX3R5cGU7DQoNCiAgICAgIHN0
YXRpYyBsb2NhbGU6OmlkIGlkOw0KDQogICAgICBleHBsaWNpdA0KICAgICAgbnVtX3B1dChzaXpl
X3QgX19yZWZzID0gMCkgOiBsb2NhbGU6OmZhY2V0KF9fcmVmcykgeyB9DQoNCiAgICAgIGl0ZXJf
dHlwZQ0KICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2YsIGNoYXJfdHlwZSBf
X2ZpbGwsIGJvb2wgX192KSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywg
X19mLCBfX2ZpbGwsIF9fdik7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBwdXQoaXRlcl90
eXBlIF9fcywgaW9zX2Jhc2UmIF9fZiwgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBfX3YpIGNvbnN0
DQogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2YsIF9fZmlsbCwgX192KTsgfQ0K
DQogICAgICBpdGVyX3R5cGUNCiAgICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19m
LCBjaGFyX3R5cGUgX19maWxsLA0KICAgICAgICAgIHVuc2lnbmVkIGxvbmcgX192KSBjb25zdA0K
ICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19mLCBfX2ZpbGwsIF9fdik7IH0NCiMg
NzM3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMu
aCIgMw0KICAgICAgaXRlcl90eXBlDQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2Um
IF9fZiwgY2hhcl90eXBlIF9fZmlsbCwgZG91YmxlIF9fdikgY29uc3QNCiAgICAgIHsgcmV0dXJu
IHRoaXMtPmRvX3B1dChfX3MsIF9fZiwgX19maWxsLCBfX3YpOyB9DQoNCiAgICAgIGl0ZXJfdHlw
ZQ0KICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2YsIGNoYXJfdHlwZSBfX2Zp
bGwsDQogICAgICAgICAgbG9uZyBkb3VibGUgX192KSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhp
cy0+ZG9fcHV0KF9fcywgX19mLCBfX2ZpbGwsIF9fdik7IH0NCg0KICAgICAgaXRlcl90eXBlDQog
ICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9fZiwgY2hhcl90eXBlIF9fZmlsbCwN
CiAgICAgICAgICBjb25zdCB2b2lkKiBfX3YpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5k
b19wdXQoX19zLCBfX2YsIF9fZmlsbCwgX192KTsgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlVD4NCiAgICAgICAgaXRlcl90eXBlDQogICAgICAgIF9N
X2NvbnZlcnRfZmxvYXQoaXRlcl90eXBlLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmls
bCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fbW9kLCBfVmFsdWVUIF9fdikgY29u
c3Q7DQoNCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+DQogICAgICAgIGl0ZXJfdHlw
ZQ0KICAgICAgICBfTV9jb252ZXJ0X2ludChpdGVyX3R5cGUsIGlvc19iYXNlJiBfX2lvLCBjaGFy
X3R5cGUgX19maWxsLA0KICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fbW9kLCBjaGFyIF9f
bW9kbCwgX1ZhbHVlVCBfX3YpIGNvbnN0Ow0KDQogICAgICBpdGVyX3R5cGUNCiAgICAgIF9NX3dp
ZGVuX2Zsb2F0KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGNo
YXIqIF9fY3MsDQogICAgICAgICAgICAgICAgICAgICBpbnQgX19sZW4pIGNvbnN0Ow0KDQogICAg
ICBpdGVyX3R5cGUNCiAgICAgIF9NX3dpZGVuX2ludChpdGVyX3R5cGUsIGlvc19iYXNlJiBfX2lv
LCBjaGFyX3R5cGUgX19maWxsLCBjaGFyKiBfX2NzLA0KICAgICAgICAgICAgICAgICAgIGludCBf
X2xlbikgY29uc3Q7DQoNCiAgICAgIGl0ZXJfdHlwZQ0KICAgICAgX01faW5zZXJ0KGl0ZXJfdHlw
ZSwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsDQogICAgICAgICAgICAgICAgY29u
c3QgY2hhcl90eXBlKiBfX3dzLCBpbnQgX19sZW4pIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsDQog
ICAgICB+bnVtX3B1dCgpIHsgfTsNCg0KICAgICAgdmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRv
X3B1dChpdGVyX3R5cGUsIGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgYm9vbCBfX3YpIGNv
bnN0Ow0KDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQ0KICAgICAgZG9fcHV0KGl0ZXJfdHlwZSwg
aW9zX2Jhc2UmLCBjaGFyX3R5cGUgX19maWxsLCBsb25nIF9fdikgY29uc3Q7DQoNCiAgICAgIHZp
cnR1YWwgaXRlcl90eXBlDQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYsIGNoYXJf
dHlwZSBfX2ZpbGwsIHVuc2lnbmVkIGxvbmcpIGNvbnN0Ow0KIyA3OTQgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzDQogICAgICB2aXJ0dWFs
IGl0ZXJfdHlwZQ0KICAgICAgZG9fcHV0KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBjaGFyX3R5cGUg
X19maWxsLCBkb3VibGUgX192KSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBpdGVyX3R5cGUNCiAg
ICAgIGRvX3B1dChpdGVyX3R5cGUsIGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBk
b3VibGUgX192KSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX3B1
dChpdGVyX3R5cGUsIGlvc19iYXNlJiwgY2hhcl90eXBlIF9fZmlsbCwgY29uc3Qgdm9pZCogX192
KSBjb25zdDsNCiAgICB9Ow0KDQogIHRlbXBsYXRlIDx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9PdXRJdGVyPg0KICAgIGxvY2FsZTo6aWQgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6aWQ7
DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgY2xhc3MgY29sbGF0ZSA6IHB1
YmxpYyBsb2NhbGU6OmZhY2V0DQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAgdHlwZWRlZiBf
Q2hhclQgY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJUPiBzdHJp
bmdfdHlwZTsNCg0KICAgIHByb3RlY3RlZDoNCg0KDQogICAgICBfX2NfbG9jYWxlIF9NX2NfbG9j
YWxlX2NvbGxhdGU7DQoNCiAgICBwdWJsaWM6DQogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsN
Cg0KICAgICAgZXhwbGljaXQNCiAgICAgIGNvbGxhdGUoc2l6ZV90IF9fcmVmcyA9IDApDQogICAg
ICA6IGxvY2FsZTo6ZmFjZXQoX19yZWZzKQ0KICAgICAgeyBfTV9jX2xvY2FsZV9jb2xsYXRlID0g
X1NfY19sb2NhbGU7IH0NCg0KDQogICAgICBleHBsaWNpdA0KICAgICAgY29sbGF0ZShfX2NfbG9j
YWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApDQogICAgICA6IGxvY2FsZTo6ZmFjZXQoX19y
ZWZzKQ0KICAgICAgeyBfTV9jX2xvY2FsZV9jb2xsYXRlID0gX1NfY2xvbmVfY19sb2NhbGUoX19j
bG9jKTsgfQ0KDQogICAgICBpbnQNCiAgICAgIGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX2xvMSwg
Y29uc3QgX0NoYXJUKiBfX2hpMSwNCiAgICAgICAgICAgICAgY29uc3QgX0NoYXJUKiBfX2xvMiwg
Y29uc3QgX0NoYXJUKiBfX2hpMikgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2NvbXBh
cmUoX19sbzEsIF9faGkxLCBfX2xvMiwgX19oaTIpOyB9DQoNCiAgICAgIHN0cmluZ190eXBlDQog
ICAgICB0cmFuc2Zvcm0oY29uc3QgX0NoYXJUKiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNv
bnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb190cmFuc2Zvcm0oX19sbywgX19oaSk7IH0NCg0K
ICAgICAgbG9uZw0KICAgICAgaGFzaChjb25zdCBfQ2hhclQqIF9fbG8sIGNvbnN0IF9DaGFyVCog
X19oaSkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2hhc2goX19sbywgX19oaSk7IH0N
Cg0KDQogICAgICBpbnQNCiAgICAgIF9NX2NvbXBhcmUoY29uc3QgX0NoYXJUKiwgY29uc3QgX0No
YXJUKikgY29uc3Q7DQoNCiAgICAgIHNpemVfdA0KICAgICAgX01fdHJhbnNmb3JtKF9DaGFyVCos
IGNvbnN0IF9DaGFyVCosIHNpemVfdCkgY29uc3Q7DQoNCiAgcHJvdGVjdGVkOg0KICAgICAgdmly
dHVhbA0KICAgICAgfmNvbGxhdGUoKQ0KICAgICAgew0KICAgICAgICBpZiAoX01fY19sb2NhbGVf
Y29sbGF0ZSAhPSBfU19jX2xvY2FsZSkNCiAgICAgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9N
X2NfbG9jYWxlX2NvbGxhdGUpOw0KICAgICAgfQ0KDQogICAgICB2aXJ0dWFsIGludA0KICAgICAg
ZG9fY29tcGFyZShjb25zdCBfQ2hhclQqIF9fbG8xLCBjb25zdCBfQ2hhclQqIF9faGkxLA0KICAg
ICAgICAgICAgICAgICBjb25zdCBfQ2hhclQqIF9fbG8yLCBjb25zdCBfQ2hhclQqIF9faGkyKSBj
b25zdDsNCg0KICAgICAgdmlydHVhbCBzdHJpbmdfdHlwZQ0KICAgICAgZG9fdHJhbnNmb3JtKGNv
bnN0IF9DaGFyVCogX19sbywgY29uc3QgX0NoYXJUKiBfX2hpKSBjb25zdDsNCg0KICAgICAgdmly
dHVhbCBsb25nDQogICAgICBkb19oYXNoKGNvbnN0IF9DaGFyVCogX19sbywgY29uc3QgX0NoYXJU
KiBfX2hpKSBjb25zdDsNCiAgICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAg
ICBsb2NhbGU6OmlkIGNvbGxhdGU8X0NoYXJUPjo6aWQ7DQoNCg0KICB0ZW1wbGF0ZTw+DQogICAg
aW50DQogICAgY29sbGF0ZTxjaGFyPjo6X01fY29tcGFyZShjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciopIGNvbnN0Ow0KDQogIHRlbXBsYXRlPD4NCiAgICBzaXplX3QNCiAgICBjb2xsYXRlPGNoYXI+
OjpfTV90cmFuc2Zvcm0oY2hhciosIGNvbnN0IGNoYXIqLCBzaXplX3QpIGNvbnN0Ow0KIyA4OTYg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBjbGFzcyBjb2xsYXRlX2J5bmFtZSA6
IHB1YmxpYyBjb2xsYXRlPF9DaGFyVD4NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgdHlwZWRl
ZiBfQ2hhclQgY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJUPiBz
dHJpbmdfdHlwZTsNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIGNvbGxhdGVfYnluYW1lKGNvbnN0
IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApDQogICAgICA6IGNvbGxhdGU8X0NoYXJUPihf
X3JlZnMpDQogICAgICB7DQogICAgICAgIGlmIChfTV9jX2xvY2FsZV9jb2xsYXRlICE9IF9TX2Nf
bG9jYWxlKQ0KICAgICAgICAgIF9TX2Rlc3Ryb3lfY19sb2NhbGUoX01fY19sb2NhbGVfY29sbGF0
ZSk7DQogICAgICAgIF9TX2NyZWF0ZV9jX2xvY2FsZShfTV9jX2xvY2FsZV9jb2xsYXRlLCBfX3Mp
Ow0KICAgICAgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAgdmlydHVhbA0KICAgICAgfmNvbGxh
dGVfYnluYW1lKCkgeyB9DQogICAgfTsNCg0KDQogIGNsYXNzIHRpbWVfYmFzZQ0KICB7DQogIHB1
YmxpYzoNCiAgICBlbnVtIGRhdGVvcmRlciB7IG5vX29yZGVyLCBkbXksIG1keSwgeW1kLCB5ZG0g
fTsNCiAgfTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgY2xhc3MgX190aW1l
cHVuY3QgOiBwdWJsaWMgbG9jYWxlOjpmYWNldA0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAg
IHR5cGVkZWYgX0NoYXJUIF9fY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8
X0NoYXJUPiBfX3N0cmluZ190eXBlOw0KDQogICAgICBzdGF0aWMgbG9jYWxlOjppZCBpZDsNCg0K
DQogICAgICBzdGF0aWMgY29uc3QgX0NoYXJUKiBfU190aW1lem9uZXNbMTRdOw0KDQogICAgcHJv
dGVjdGVkOg0KICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV90aW1lcHVuY3Q7DQogICAgICBj
b25zdCBjaGFyKiBfTV9uYW1lX3RpbWVwdW5jdDsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF0
ZV9mb3JtYXQ7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX2RhdGVfZXJhX2Zvcm1hdDsNCiAgICAg
IGNvbnN0IF9DaGFyVCogX01fdGltZV9mb3JtYXQ7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX3Rp
bWVfZXJhX2Zvcm1hdDsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF0ZV90aW1lX2Zvcm1hdDsN
CiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF0ZV90aW1lX2VyYV9mb3JtYXQ7DQogICAgICBjb25z
dCBfQ2hhclQqIF9NX2FtOw0KICAgICAgY29uc3QgX0NoYXJUKiBfTV9wbTsNCiAgICAgIGNvbnN0
IF9DaGFyVCogX01fYW1fcG1fZm9ybWF0Ow0KDQoNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5
MTsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5MjsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01f
ZGF5MzsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5NDsNCiAgICAgIGNvbnN0IF9DaGFyVCog
X01fZGF5NTsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5NjsNCiAgICAgIGNvbnN0IF9DaGFy
VCogX01fZGF5NzsNCg0KDQogICAgICBjb25zdCBfQ2hhclQqIF9NX2RheV9hMTsNCiAgICAgIGNv
bnN0IF9DaGFyVCogX01fZGF5X2EyOw0KICAgICAgY29uc3QgX0NoYXJUKiBfTV9kYXlfYTM7DQog
ICAgICBjb25zdCBfQ2hhclQqIF9NX2RheV9hNDsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fZGF5
X2E1Ow0KICAgICAgY29uc3QgX0NoYXJUKiBfTV9kYXlfYTY7DQogICAgICBjb25zdCBfQ2hhclQq
IF9NX2RheV9hNzsNCg0KDQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDE7DQogICAgICBj
b25zdCBfQ2hhclQqIF9NX21vbnRoMDI7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDM7
DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDQ7DQogICAgICBjb25zdCBfQ2hhclQqIF9N
X21vbnRoMDU7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDY7DQogICAgICBjb25zdCBf
Q2hhclQqIF9NX21vbnRoMDc7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDg7DQogICAg
ICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMDk7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRo
MTA7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoMTE7DQogICAgICBjb25zdCBfQ2hhclQq
IF9NX21vbnRoMTI7DQoNCg0KICAgICAgY29uc3QgX0NoYXJUKiBfTV9tb250aF9hMDE7DQogICAg
ICBjb25zdCBfQ2hhclQqIF9NX21vbnRoX2EwMjsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9u
dGhfYTAzOw0KICAgICAgY29uc3QgX0NoYXJUKiBfTV9tb250aF9hMDQ7DQogICAgICBjb25zdCBf
Q2hhclQqIF9NX21vbnRoX2EwNTsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGhfYTA2Ow0K
ICAgICAgY29uc3QgX0NoYXJUKiBfTV9tb250aF9hMDc7DQogICAgICBjb25zdCBfQ2hhclQqIF9N
X21vbnRoX2EwODsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGhfYTA5Ow0KICAgICAgY29u
c3QgX0NoYXJUKiBfTV9tb250aF9hMTA7DQogICAgICBjb25zdCBfQ2hhclQqIF9NX21vbnRoX2Ex
MTsNCiAgICAgIGNvbnN0IF9DaGFyVCogX01fbW9udGhfYTEyOw0KDQogICAgcHVibGljOg0KICAg
ICAgZXhwbGljaXQNCiAgICAgIF9fdGltZXB1bmN0KHNpemVfdCBfX3JlZnMgPSAwKQ0KICAgICAg
OiBsb2NhbGU6OmZhY2V0KF9fcmVmcyksIF9NX25hbWVfdGltZXB1bmN0KCJDIikNCiAgICAgIHsg
X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoKTsgfQ0KDQogICAgICBleHBsaWNpdA0KICAgICAgX190
aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVm
cyA9IDApDQogICAgICA6IGxvY2FsZTo6ZmFjZXQoX19yZWZzKSwgX01fbmFtZV90aW1lcHVuY3Qo
X19zKQ0KICAgICAgeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOyB9DQoNCiAgICAg
IHZvaWQNCiAgICAgIF9NX3B1dChfQ2hhclQqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCBf
Q2hhclQqIF9fZm9ybWF0LA0KICAgICAgICAgICAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdDsNCg0K
ICAgICAgdm9pZA0KICAgICAgX01fZGF0ZV9mb3JtYXRzKGNvbnN0IF9DaGFyVCoqIF9fZGF0ZSkg
Y29uc3QNCiAgICAgIHsNCg0KICAgICAgICBfX2RhdGVbMF0gPSBfTV9kYXRlX2Zvcm1hdDsNCiAg
ICAgICAgX19kYXRlWzFdID0gX01fZGF0ZV9lcmFfZm9ybWF0Ow0KICAgICAgfQ0KDQogICAgICB2
b2lkDQogICAgICBfTV90aW1lX2Zvcm1hdHMoY29uc3QgX0NoYXJUKiogX190aW1lKSBjb25zdA0K
ICAgICAgew0KDQogICAgICAgIF9fdGltZVswXSA9IF9NX3RpbWVfZm9ybWF0Ow0KICAgICAgICBf
X3RpbWVbMV0gPSBfTV90aW1lX2VyYV9mb3JtYXQ7DQogICAgICB9DQoNCiAgICAgIHZvaWQNCiAg
ICAgIF9NX2FtcG0oY29uc3QgX0NoYXJUKiogX19hbXBtKSBjb25zdA0KICAgICAgew0KICAgICAg
ICBfX2FtcG1bMF0gPSBfTV9hbTsNCiAgICAgICAgX19hbXBtWzFdID0gX01fcG07DQogICAgICB9
DQoNCiAgICAgIHZvaWQNCiAgICAgIF9NX2RhdGVfdGltZV9mb3JtYXRzKGNvbnN0IF9DaGFyVCoq
IF9fZHQpIGNvbnN0DQogICAgICB7DQoNCiAgICAgICAgX19kdFswXSA9IF9NX2RhdGVfdGltZV9m
b3JtYXQ7DQogICAgICAgIF9fZHRbMV0gPSBfTV9kYXRlX3RpbWVfZXJhX2Zvcm1hdDsNCiAgICAg
IH0NCg0KICAgICAgdm9pZA0KICAgICAgX01fZGF5cyhjb25zdCBfQ2hhclQqKiBfX2RheXMpIGNv
bnN0DQogICAgICB7DQogICAgICAgIF9fZGF5c1swXSA9IF9NX2RheTE7DQogICAgICAgIF9fZGF5
c1sxXSA9IF9NX2RheTI7DQogICAgICAgIF9fZGF5c1syXSA9IF9NX2RheTM7DQogICAgICAgIF9f
ZGF5c1szXSA9IF9NX2RheTQ7DQogICAgICAgIF9fZGF5c1s0XSA9IF9NX2RheTU7DQogICAgICAg
IF9fZGF5c1s1XSA9IF9NX2RheTY7DQogICAgICAgIF9fZGF5c1s2XSA9IF9NX2RheTc7DQogICAg
ICB9DQoNCiAgICAgIHZvaWQNCiAgICAgIF9NX2RheXNfYWJicmV2aWF0ZWQoY29uc3QgX0NoYXJU
KiogX19kYXlzKSBjb25zdA0KICAgICAgew0KICAgICAgICBfX2RheXNbMF0gPSBfTV9kYXlfYTE7
DQogICAgICAgIF9fZGF5c1sxXSA9IF9NX2RheV9hMjsNCiAgICAgICAgX19kYXlzWzJdID0gX01f
ZGF5X2EzOw0KICAgICAgICBfX2RheXNbM10gPSBfTV9kYXlfYTQ7DQogICAgICAgIF9fZGF5c1s0
XSA9IF9NX2RheV9hNTsNCiAgICAgICAgX19kYXlzWzVdID0gX01fZGF5X2E2Ow0KICAgICAgICBf
X2RheXNbNl0gPSBfTV9kYXlfYTc7DQogICAgICB9DQoNCiAgICAgIHZvaWQNCiAgICAgIF9NX21v
bnRocyhjb25zdCBfQ2hhclQqKiBfX21vbnRocykgY29uc3QNCiAgICAgIHsNCiAgICAgICAgX19t
b250aHNbMF0gPSBfTV9tb250aDAxOw0KICAgICAgICBfX21vbnRoc1sxXSA9IF9NX21vbnRoMDI7
DQogICAgICAgIF9fbW9udGhzWzJdID0gX01fbW9udGgwMzsNCiAgICAgICAgX19tb250aHNbM10g
PSBfTV9tb250aDA0Ow0KICAgICAgICBfX21vbnRoc1s0XSA9IF9NX21vbnRoMDU7DQogICAgICAg
IF9fbW9udGhzWzVdID0gX01fbW9udGgwNjsNCiAgICAgICAgX19tb250aHNbNl0gPSBfTV9tb250
aDA3Ow0KICAgICAgICBfX21vbnRoc1s3XSA9IF9NX21vbnRoMDg7DQogICAgICAgIF9fbW9udGhz
WzhdID0gX01fbW9udGgwOTsNCiAgICAgICAgX19tb250aHNbOV0gPSBfTV9tb250aDEwOw0KICAg
ICAgICBfX21vbnRoc1sxMF0gPSBfTV9tb250aDExOw0KICAgICAgICBfX21vbnRoc1sxMV0gPSBf
TV9tb250aDEyOw0KICAgICAgfQ0KDQogICAgICB2b2lkDQogICAgICBfTV9tb250aHNfYWJicmV2
aWF0ZWQoY29uc3QgX0NoYXJUKiogX19tb250aHMpIGNvbnN0DQogICAgICB7DQogICAgICAgIF9f
bW9udGhzWzBdID0gX01fbW9udGhfYTAxOw0KICAgICAgICBfX21vbnRoc1sxXSA9IF9NX21vbnRo
X2EwMjsNCiAgICAgICAgX19tb250aHNbMl0gPSBfTV9tb250aF9hMDM7DQogICAgICAgIF9fbW9u
dGhzWzNdID0gX01fbW9udGhfYTA0Ow0KICAgICAgICBfX21vbnRoc1s0XSA9IF9NX21vbnRoX2Ew
NTsNCiAgICAgICAgX19tb250aHNbNV0gPSBfTV9tb250aF9hMDY7DQogICAgICAgIF9fbW9udGhz
WzZdID0gX01fbW9udGhfYTA3Ow0KICAgICAgICBfX21vbnRoc1s3XSA9IF9NX21vbnRoX2EwODsN
CiAgICAgICAgX19tb250aHNbOF0gPSBfTV9tb250aF9hMDk7DQogICAgICAgIF9fbW9udGhzWzld
ID0gX01fbW9udGhfYTEwOw0KICAgICAgICBfX21vbnRoc1sxMF0gPSBfTV9tb250aF9hMTE7DQog
ICAgICAgIF9fbW9udGhzWzExXSA9IF9NX21vbnRoX2ExMjsNCiAgICAgIH0NCg0KICAgIHByb3Rl
Y3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5fX3RpbWVwdW5jdCgpOw0KDQoNCiAgICAgIHZv
aWQNCiAgICAgIF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jID0gX1Nf
Y19sb2NhbGUpOw0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGxv
Y2FsZTo6aWQgX190aW1lcHVuY3Q8X0NoYXJUPjo6aWQ7DQoNCg0KICB0ZW1wbGF0ZTw+DQogICAg
X190aW1lcHVuY3Q8Y2hhcj46On5fX3RpbWVwdW5jdCgpOw0KDQogIHRlbXBsYXRlPD4NCiAgICBj
b25zdCBjaGFyKg0KICAgIF9fdGltZXB1bmN0PGNoYXI+OjpfU190aW1lem9uZXNbMTRdOw0KDQog
IHRlbXBsYXRlPD4NCiAgICB2b2lkDQogICAgX190aW1lcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxp
emVfdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jKTsNCg0KICB0ZW1wbGF0ZTw+DQogICAgdm9p
ZA0KICAgIF9fdGltZXB1bmN0PGNoYXI+OjpfTV9wdXQoY2hhciosIHNpemVfdCwgY29uc3QgY2hh
ciosIGNvbnN0IHRtKikgY29uc3Q7DQojIDExNDcgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUv
ZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VD4NCiAgICBjb25zdCBfQ2hhclQqIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9TX3RpbWV6b25lc1sx
NF07DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQog
ICAgY2xhc3MgdGltZV9nZXQgOiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIHRpbWVfYmFz
ZQ0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsN
CiAgICAgIHR5cGVkZWYgX0luSXRlciBpdGVyX3R5cGU7DQogICAgICB0eXBlZGVmIGJhc2ljX3N0
cmluZzxfQ2hhclQ+IF9fc3RyaW5nX3R5cGU7DQoNCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlk
Ow0KDQogICAgICBleHBsaWNpdA0KICAgICAgdGltZV9nZXQoc2l6ZV90IF9fcmVmcyA9IDApDQog
ICAgICA6IGxvY2FsZTo6ZmFjZXQgKF9fcmVmcykgeyB9DQoNCiAgICAgIGRhdGVvcmRlcg0KICAg
ICAgZGF0ZV9vcmRlcigpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb19kYXRlX29yZGVy
KCk7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBnZXRfdGltZShpdGVyX3R5cGUgX19iZWcs
IGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+
ZG9fZ2V0X3RpbWUoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSk7IH0NCg0KICAgICAg
aXRlcl90eXBlDQogICAgICBnZXRfZGF0ZShpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2Vu
ZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsIHRtKiBfX3RtKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0X2RhdGUoX19i
ZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSk7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAg
ICBnZXRfd2Vla2RheShpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2Um
IF9faW8sDQogICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBf
X3RtKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0X3dlZWtkYXkoX19iZWcsIF9f
ZW5kLCBfX2lvLCBfX2VyciwgX190bSk7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBnZXRf
bW9udGhuYW1lKGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19p
bywNCiAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB0bSogX190
bSkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldF9tb250aG5hbWUoX19iZWcsIF9f
ZW5kLCBfX2lvLCBfX2VyciwgX190bSk7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBnZXRf
eWVhcihpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQog
ICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdA0K
ICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0X3llYXIoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2Vy
ciwgX190bSk7IH0NCg0KICAgIHByb3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH50aW1l
X2dldCgpIHsgfQ0KDQogICAgICB2aXJ0dWFsIGRhdGVvcmRlcg0KICAgICAgZG9fZGF0ZV9vcmRl
cigpIGNvbnN0Ow0KDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQ0KICAgICAgZG9fZ2V0X3RpbWUo
aXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAg
ICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB0bSogX190bSkgY29uc3Q7DQoN
CiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBkb19nZXRfZGF0ZShpdGVyX3R5cGUgX19i
ZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgICAgICAgICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdDsNCg0KICAgICAgdmlydHVh
bCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldF93ZWVrZGF5KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90
eXBlIF9fZW5kLCBpb3NfYmFzZSYsDQogICAgICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9z
dGF0ZSYgX19lcnIsIHRtKiBfX3RtKSBjb25zdDsNCg0KICAgICAgdmlydHVhbCBpdGVyX3R5cGUN
CiAgICAgIGRvX2dldF9tb250aG5hbWUoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQs
IGlvc19iYXNlJiwNCiAgICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9f
ZXJyLCB0bSogX190bSkgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBk
b19nZXRfeWVhcihpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9f
aW8sDQogICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3Rt
KSBjb25zdDsNCg0KDQogICAgICB2b2lkDQogICAgICBfTV9leHRyYWN0X251bShpdGVyX3R5cGUm
IF9fYmVnLCBpdGVyX3R5cGUmIF9fZW5kLCBpbnQmIF9fbWVtYmVyLA0KICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fbWluLCBpbnQgX19tYXgsIHNpemVfdCBfX2xlbiwNCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGN0eXBlPF9DaGFyVD4mIF9fY3R5cGUsDQogICAgICAgICAgICAgICAgICAg
ICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIpIGNvbnN0Ow0KDQoNCg0KICAgICAgdm9pZA0KICAg
ICAgX01fZXh0cmFjdF9uYW1lKGl0ZXJfdHlwZSYgX19iZWcsIGl0ZXJfdHlwZSYgX19lbmQsIGlu
dCYgX19tZW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgY29uc3QgX0NoYXJUKiogX19uYW1l
cywgc2l6ZV90IF9faW5kZXhsZW4sDQogICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlv
c3RhdGUmIF9fZXJyKSBjb25zdDsNCg0KDQogICAgICB2b2lkDQogICAgICBfTV9leHRyYWN0X3Zp
YV9mb3JtYXQoaXRlcl90eXBlJiBfX2JlZywgaXRlcl90eXBlJiBfX2VuZCwgaW9zX2Jhc2UmIF9f
aW8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJy
LCB0bSogX190bSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfQ2hhclQqIF9f
Zm9ybWF0KSBjb25zdDsNCiAgICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX0luSXRlcj4NCiAgICBsb2NhbGU6OmlkIHRpbWVfZ2V0PF9DaGFyVCwgX0luSXRlcj46
OmlkOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAg
ICBjbGFzcyB0aW1lX2dldF9ieW5hbWUgOiBwdWJsaWMgdGltZV9nZXQ8X0NoYXJULCBfSW5JdGVy
Pg0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsN
CiAgICAgIHR5cGVkZWYgX0luSXRlciBpdGVyX3R5cGU7DQoNCiAgICAgIGV4cGxpY2l0DQogICAg
ICB0aW1lX2dldF9ieW5hbWUoY29uc3QgY2hhciosIHNpemVfdCBfX3JlZnMgPSAwKQ0KICAgICAg
OiB0aW1lX2dldDxfQ2hhclQsIF9Jbkl0ZXI+KF9fcmVmcykgeyB9DQoNCiAgICBwcm90ZWN0ZWQ6
DQogICAgICB2aXJ0dWFsDQogICAgICB+dGltZV9nZXRfYnluYW1lKCkgeyB9DQogICAgfTsNCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPg0KICAgIGNsYXNz
IHRpbWVfcHV0IDogcHVibGljIGxvY2FsZTo6ZmFjZXQsIHB1YmxpYyB0aW1lX2Jhc2UNCiAgICB7
DQogICAgcHVibGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0
eXBlZGVmIF9PdXRJdGVyIGl0ZXJfdHlwZTsNCg0KICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7
DQoNCiAgICAgIGV4cGxpY2l0DQogICAgICB0aW1lX3B1dChzaXplX3QgX19yZWZzID0gMCkNCiAg
ICAgIDogbG9jYWxlOjpmYWNldChfX3JlZnMpIHsgfQ0KDQogICAgICBpdGVyX3R5cGUNCiAgICAg
IHB1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgY29u
c3QgdG0qIF9fdG0sDQogICAgICAgICAgY29uc3QgX0NoYXJUKiBfX2JlZywgY29uc3QgX0NoYXJU
KiBfX2VuZCkgY29uc3Q7DQoNCiAgICAgIGl0ZXJfdHlwZQ0KICAgICAgcHV0KGl0ZXJfdHlwZSBf
X3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLA0KICAgICAgICAgIGNvbnN0IHRt
KiBfX3RtLCBjaGFyIF9fZm9ybWF0LCBjaGFyIF9fbW9kID0gMCkgY29uc3QNCiAgICAgIHsgcmV0
dXJuIHRoaXMtPmRvX3B1dChfX3MsIF9faW8sIF9fZmlsbCwgX190bSwgX19mb3JtYXQsIF9fbW9k
KTsgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAgdmlydHVhbA0KICAgICAgfnRpbWVfcHV0KCkN
CiAgICAgIHsgfQ0KDQogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQ0KICAgICAgZG9fcHV0KGl0ZXJf
dHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBjb25zdCB0bSogX190
bSwNCiAgICAgICAgICAgICBjaGFyIF9fZm9ybWF0LCBjaGFyIF9fbW9kKSBjb25zdDsNCiAgICB9
Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+DQogICAg
bG9jYWxlOjppZCB0aW1lX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6aWQ7DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBjbGFzcyB0aW1lX3B1dF9i
eW5hbWUgOiBwdWJsaWMgdGltZV9wdXQ8X0NoYXJULCBfT3V0SXRlcj4NCiAgICB7DQogICAgcHVi
bGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0eXBlZGVmIF9P
dXRJdGVyIGl0ZXJfdHlwZTsNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIHRpbWVfcHV0X2J5bmFt
ZShjb25zdCBjaGFyKiAsIHNpemVfdCBfX3JlZnMgPSAwKQ0KICAgICAgOiB0aW1lX3B1dDxfQ2hh
clQsIF9PdXRJdGVyPihfX3JlZnMpDQogICAgICB7IH07DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAg
ICB2aXJ0dWFsDQogICAgICB+dGltZV9wdXRfYnluYW1lKCkgeyB9DQogICAgfTsNCg0KDQogIGNs
YXNzIG1vbmV5X2Jhc2UNCiAgew0KICBwdWJsaWM6DQogICAgZW51bSBwYXJ0IHsgbm9uZSwgc3Bh
Y2UsIHN5bWJvbCwgc2lnbiwgdmFsdWUgfTsNCiAgICBzdHJ1Y3QgcGF0dGVybiB7IGNoYXIgZmll
bGRbNF07IH07DQoNCiAgICBzdGF0aWMgY29uc3QgcGF0dGVybiBfU19kZWZhdWx0X3BhdHRlcm47
DQoNCg0KDQogICAgc3RhdGljIHBhdHRlcm4NCiAgICBfU19jb25zdHJ1Y3RfcGF0dGVybihjaGFy
IF9fcHJlY2VkZXMsIGNoYXIgX19zcGFjZSwgY2hhciBfX3Bvc24pOw0KICB9Ow0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bD4NCiAgICBjbGFzcyBtb25leXB1bmN0IDog
cHVibGljIGxvY2FsZTo6ZmFjZXQsIHB1YmxpYyBtb25leV9iYXNlDQogICAgew0KICAgIHB1Ymxp
YzoNCg0KICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNp
Y19zdHJpbmc8X0NoYXJUPiBzdHJpbmdfdHlwZTsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aW50bCA9IF9JbnRsOw0KICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7DQoNCiAgICBwcml2YXRl
Og0KICAgICAgY29uc3QgY2hhciogX01fZ3JvdXBpbmc7DQogICAgICBjaGFyX3R5cGUgX01fZGVj
aW1hbF9wb2ludDsNCiAgICAgIGNoYXJfdHlwZSBfTV90aG91c2FuZHNfc2VwOw0KICAgICAgY29u
c3QgY2hhcl90eXBlKiBfTV9jdXJyX3N5bWJvbDsNCiAgICAgIGNvbnN0IGNoYXJfdHlwZSogX01f
cG9zaXRpdmVfc2lnbjsNCiAgICAgIGNvbnN0IGNoYXJfdHlwZSogX01fbmVnYXRpdmVfc2lnbjsN
CiAgICAgIGludCBfTV9mcmFjX2RpZ2l0czsNCiAgICAgIHBhdHRlcm4gX01fcG9zX2Zvcm1hdDsN
CiAgICAgIHBhdHRlcm4gX01fbmVnX2Zvcm1hdDsNCg0KICAgIHB1YmxpYzoNCiAgICAgIGV4cGxp
Y2l0DQogICAgICBtb25leXB1bmN0KHNpemVfdCBfX3JlZnMgPSAwKSA6IGxvY2FsZTo6ZmFjZXQo
X19yZWZzKQ0KICAgICAgeyBfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoKTsgfQ0KDQogICAgICBl
eHBsaWNpdA0KICAgICAgbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVm
cyA9IDApIDogbG9jYWxlOjpmYWNldChfX3JlZnMpDQogICAgICB7IF9NX2luaXRpYWxpemVfbW9u
ZXlwdW5jdChfX2Nsb2MpOyB9DQoNCiAgICAgIGNoYXJfdHlwZQ0KICAgICAgZGVjaW1hbF9wb2lu
dCgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb19kZWNpbWFsX3BvaW50KCk7IH0NCg0K
ICAgICAgY2hhcl90eXBlDQogICAgICB0aG91c2FuZHNfc2VwKCkgY29uc3QNCiAgICAgIHsgcmV0
dXJuIHRoaXMtPmRvX3Rob3VzYW5kc19zZXAoKTsgfQ0KDQogICAgICBzdHJpbmcNCiAgICAgIGdy
b3VwaW5nKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dyb3VwaW5nKCk7IH0NCg0K
ICAgICAgc3RyaW5nX3R5cGUNCiAgICAgIGN1cnJfc3ltYm9sKCkgY29uc3QNCiAgICAgIHsgcmV0
dXJuIHRoaXMtPmRvX2N1cnJfc3ltYm9sKCk7IH0NCg0KICAgICAgc3RyaW5nX3R5cGUNCiAgICAg
IHBvc2l0aXZlX3NpZ24oKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcG9zaXRpdmVf
c2lnbigpOyB9DQoNCiAgICAgIHN0cmluZ190eXBlDQogICAgICBuZWdhdGl2ZV9zaWduKCkgY29u
c3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX25lZ2F0aXZlX3NpZ24oKTsgfQ0KDQogICAgICBp
bnQNCiAgICAgIGZyYWNfZGlnaXRzKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2Zy
YWNfZGlnaXRzKCk7IH0NCg0KICAgICAgcGF0dGVybg0KICAgICAgcG9zX2Zvcm1hdCgpIGNvbnN0
DQogICAgICB7IHJldHVybiB0aGlzLT5kb19wb3NfZm9ybWF0KCk7IH0NCg0KICAgICAgcGF0dGVy
bg0KICAgICAgbmVnX2Zvcm1hdCgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5kb19uZWdf
Zm9ybWF0KCk7IH0NCg0KICAgIHByb3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5tb25l
eXB1bmN0KCk7DQoNCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlDQogICAgICBkb19kZWNpbWFsX3Bv
aW50KCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9NX2RlY2ltYWxfcG9pbnQ7IH0NCg0KICAgICAg
dmlydHVhbCBjaGFyX3R5cGUNCiAgICAgIGRvX3Rob3VzYW5kc19zZXAoKSBjb25zdA0KICAgICAg
eyByZXR1cm4gX01fdGhvdXNhbmRzX3NlcDsgfQ0KDQogICAgICB2aXJ0dWFsIHN0cmluZw0KICAg
ICAgZG9fZ3JvdXBpbmcoKSBjb25zdA0KICAgICAgeyByZXR1cm4gX01fZ3JvdXBpbmc7IH0NCg0K
ICAgICAgdmlydHVhbCBzdHJpbmdfdHlwZQ0KICAgICAgZG9fY3Vycl9zeW1ib2woKSBjb25zdA0K
ICAgICAgeyByZXR1cm4gX01fY3Vycl9zeW1ib2w7IH0NCg0KICAgICAgdmlydHVhbCBzdHJpbmdf
dHlwZQ0KICAgICAgZG9fcG9zaXRpdmVfc2lnbigpIGNvbnN0DQogICAgICB7IHJldHVybiBfTV9w
b3NpdGl2ZV9zaWduOyB9DQoNCiAgICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUNCiAgICAgIGRvX25l
Z2F0aXZlX3NpZ24oKSBjb25zdA0KICAgICAgeyByZXR1cm4gX01fbmVnYXRpdmVfc2lnbjsgfQ0K
DQogICAgICB2aXJ0dWFsIGludA0KICAgICAgZG9fZnJhY19kaWdpdHMoKSBjb25zdA0KICAgICAg
eyByZXR1cm4gX01fZnJhY19kaWdpdHM7IH0NCg0KICAgICAgdmlydHVhbCBwYXR0ZXJuDQogICAg
ICBkb19wb3NfZm9ybWF0KCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9NX3Bvc19mb3JtYXQ7IH0N
Cg0KICAgICAgdmlydHVhbCBwYXR0ZXJuDQogICAgICBkb19uZWdfZm9ybWF0KCkgY29uc3QNCiAg
ICAgIHsgcmV0dXJuIF9NX25lZ19mb3JtYXQ7IH0NCg0KDQogICAgICAgdm9pZA0KICAgICAgIF9N
X2luaXRpYWxpemVfbW9uZXlwdW5jdChfX2NfbG9jYWxlIF9fY2xvYyA9IF9TX2NfbG9jYWxlKTsN
CiAgICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bD4NCiAgICBs
b2NhbGU6OmlkIG1vbmV5cHVuY3Q8X0NoYXJULCBfSW50bD46OmlkOw0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bD4NCiAgICBjb25zdCBib29sIG1vbmV5cHVuY3Q8X0No
YXJULCBfSW50bD46OmludGw7DQoNCiAgdGVtcGxhdGU8Pg0KICAgIG1vbmV5cHVuY3Q8Y2hhciwg
dHJ1ZT46On5tb25leXB1bmN0KCk7DQoNCiAgdGVtcGxhdGU8Pg0KICAgIG1vbmV5cHVuY3Q8Y2hh
ciwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpOw0KDQogIHRlbXBsYXRlPD4NCiAgICB2b2lkDQogICAg
bW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2Nh
bGUgX19jbG9jKTsNCg0KICB0ZW1wbGF0ZTw+DQogICAgdm9pZA0KICAgIG1vbmV5cHVuY3Q8Y2hh
ciwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpOw0K
IyAxNDgwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNl
dHMuaCIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIGJvb2wgX0ludGw+DQogICAgY2xh
c3MgbW9uZXlwdW5jdF9ieW5hbWUgOiBwdWJsaWMgbW9uZXlwdW5jdDxfQ2hhclQsIF9JbnRsPg0K
ICAgIHsNCiAgICAgIF9fY19sb2NhbGUgX01fY19sb2NhbGVfbW9uZXlwdW5jdDsNCg0KICAgIHB1
YmxpYzoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAgIHR5cGVkZWYgYmFz
aWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGludGwgPSBfSW50bDsNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIG1vbmV5cHVuY3RfYnluYW1l
KGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApDQogICAgICA6IG1vbmV5cHVuY3Q8
X0NoYXJULCBfSW50bD4oX19yZWZzKQ0KICAgICAgew0KICAgICAgICBfU19jcmVhdGVfY19sb2Nh
bGUoX01fY19sb2NhbGVfbW9uZXlwdW5jdCwgX19zKTsNCiAgICAgICAgX01faW5pdGlhbGl6ZV9t
b25leXB1bmN0KF9NX2NfbG9jYWxlX21vbmV5cHVuY3QpOw0KICAgICAgfQ0KDQogICAgcHJvdGVj
dGVkOg0KICAgICAgdmlydHVhbA0KICAgICAgfm1vbmV5cHVuY3RfYnluYW1lKCkNCiAgICAgIHsg
X1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tb25leXB1bmN0KTsgfQ0KICAgIH07DQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsPg0KICAgIGNvbnN0IGJvb2wg
bW9uZXlwdW5jdF9ieW5hbWU8X0NoYXJULCBfSW50bD46OmludGw7DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0KICAgIGNsYXNzIG1vbmV5X2dldCA6IHB1
YmxpYyBsb2NhbGU6OmZhY2V0DQogICAgew0KICAgIHB1YmxpYzoNCg0KICAgICAgdHlwZWRlZiBf
Q2hhclQgY2hhcl90eXBlOw0KICAgICAgdHlwZWRlZiBfSW5JdGVyIGl0ZXJfdHlwZTsNCiAgICAg
IHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7DQoNCiAgICAgIHN0YXRp
YyBsb2NhbGU6OmlkIGlkOw0KDQogICAgICBleHBsaWNpdA0KICAgICAgbW9uZXlfZ2V0KHNpemVf
dCBfX3JlZnMgPSAwKSA6IGxvY2FsZTo6ZmFjZXQoX19yZWZzKSB7IH0NCg0KICAgICAgaXRlcl90
eXBlDQogICAgICBnZXQoaXRlcl90eXBlIF9fcywgaXRlcl90eXBlIF9fZW5kLCBib29sIF9faW50
bCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBs
b25nIGRvdWJsZSYgX191bml0cykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChf
X3MsIF9fZW5kLCBfX2ludGwsIF9faW8sIF9fZXJyLCBfX3VuaXRzKTsgfQ0KDQogICAgICBpdGVy
X3R5cGUNCiAgICAgIGdldChpdGVyX3R5cGUgX19zLCBpdGVyX3R5cGUgX19lbmQsIGJvb2wgX19p
bnRsLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIs
IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dl
dChfX3MsIF9fZW5kLCBfX2ludGwsIF9faW8sIF9fZXJyLCBfX2RpZ2l0cyk7IH0NCg0KICAgIHBy
b3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5tb25leV9nZXQoKSB7IH0NCg0KICAgICAg
dmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldChpdGVyX3R5cGUgX19zLCBpdGVyX3R5cGUg
X19lbmQsIGJvb2wgX19pbnRsLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgZG91YmxlJiBfX3VuaXRzKSBjb25zdDsNCg0KICAgICAg
dmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX2dldChpdGVyX3R5cGUgX19zLCBpdGVyX3R5cGUg
X19lbmQsIGJvb2wgX19pbnRsLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICAgICBpb3NfYmFz
ZTo6aW9zdGF0ZSYgX19lcnIsIHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3Q7DQogICAgfTsN
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgbG9j
YWxlOjppZCBtb25leV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6aWQ7DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBjbGFzcyBtb25leV9wdXQgOiBw
dWJsaWMgbG9jYWxlOjpmYWNldA0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICB0eXBlZGVmIF9D
aGFyVCBjaGFyX3R5cGU7DQogICAgICB0eXBlZGVmIF9PdXRJdGVyIGl0ZXJfdHlwZTsNCiAgICAg
IHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7DQoNCiAgICAgIHN0YXRp
YyBsb2NhbGU6OmlkIGlkOw0KDQogICAgICBleHBsaWNpdA0KICAgICAgbW9uZXlfcHV0KHNpemVf
dCBfX3JlZnMgPSAwKSA6IGxvY2FsZTo6ZmFjZXQoX19yZWZzKSB7IH0NCg0KICAgICAgaXRlcl90
eXBlDQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lv
LA0KICAgICAgICAgIGNoYXJfdHlwZSBfX2ZpbGwsIGxvbmcgZG91YmxlIF9fdW5pdHMpIGNvbnN0
DQogICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2ludGwsIF9faW8sIF9fZmlsbCwg
X191bml0cyk7IH0NCg0KICAgICAgaXRlcl90eXBlDQogICAgICBwdXQoaXRlcl90eXBlIF9fcywg
Ym9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgIGNoYXJfdHlwZSBfX2ZpbGws
IGNvbnN0IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMt
PmRvX3B1dChfX3MsIF9faW50bCwgX19pbywgX19maWxsLCBfX2RpZ2l0cyk7IH0NCg0KICAgIHBy
b3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5tb25leV9wdXQoKSB7IH0NCg0KICAgICAg
dmlydHVhbCBpdGVyX3R5cGUNCiAgICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBib29sIF9faW50
bCwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsDQogICAgICAgICAgICAgbG9uZyBk
b3VibGUgX191bml0cykgY29uc3Q7DQoNCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlDQogICAgICBk
b19wdXQoaXRlcl90eXBlIF9fcywgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5
cGUgX19maWxsLA0KICAgICAgICAgICAgIGNvbnN0IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29u
c3Q7DQogICAgfTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJ
dGVyPg0KICAgIGxvY2FsZTo6aWQgbW9uZXlfcHV0PF9DaGFyVCwgX091dEl0ZXI+OjppZDsNCg0K
DQogIHN0cnVjdCBtZXNzYWdlc19iYXNlDQogIHsNCiAgICB0eXBlZGVmIGludCBjYXRhbG9nOw0K
ICB9Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBjbGFzcyBtZXNzYWdlcyA6
IHB1YmxpYyBsb2NhbGU6OmZhY2V0LCBwdWJsaWMgbWVzc2FnZXNfYmFzZQ0KICAgIHsNCiAgICBw
dWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAgIHR5cGVkZWYg
YmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7DQoNCiAgICBwcm90ZWN0ZWQ6DQoNCg0K
ICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9tZXNzYWdlczsNCg0KDQogICAgICBjb25zdCBj
aGFyKiBfTV9uYW1lX21lc3NhZ2VzOw0KDQoNCiAgICBwdWJsaWM6DQogICAgICBzdGF0aWMgbG9j
YWxlOjppZCBpZDsNCg0KICAgICAgZXhwbGljaXQNCiAgICAgIG1lc3NhZ2VzKHNpemVfdCBfX3Jl
ZnMgPSAwKQ0KICAgICAgOiBsb2NhbGU6OmZhY2V0KF9fcmVmcyksIF9NX25hbWVfbWVzc2FnZXMo
IkMiKQ0KICAgICAgeyBfTV9jX2xvY2FsZV9tZXNzYWdlcyA9IF9TX2NfbG9jYWxlOyB9DQoNCg0K
ICAgICAgZXhwbGljaXQNCiAgICAgIG1lc3NhZ2VzKF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBj
aGFyKiBfX25hbWUsIHNpemVfdCBfX3JlZnMgPSAwKQ0KICAgICAgOiBsb2NhbGU6OmZhY2V0KF9f
cmVmcykNCiAgICAgIHsNCiAgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fbmFtZTsNCiAgICAg
ICAgX01fY19sb2NhbGVfbWVzc2FnZXMgPSBfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpOw0KICAg
ICAgfQ0KDQogICAgICBjYXRhbG9nDQogICAgICBvcGVuKGNvbnN0IGJhc2ljX3N0cmluZzxjaGFy
PiYgX19zLCBjb25zdCBsb2NhbGUmIF9fbG9jKSBjb25zdA0KICAgICAgeyByZXR1cm4gdGhpcy0+
ZG9fb3BlbihfX3MsIF9fbG9jKTsgfQ0KDQoNCiAgICAgIGNhdGFsb2cNCiAgICAgIG9wZW4oY29u
c3QgYmFzaWNfc3RyaW5nPGNoYXI+JiwgY29uc3QgbG9jYWxlJiwgY29uc3QgY2hhciopIGNvbnN0
Ow0KDQogICAgICBzdHJpbmdfdHlwZQ0KICAgICAgZ2V0KGNhdGFsb2cgX19jLCBpbnQgX19zZXQs
IGludCBfX21zZ2lkLCBjb25zdCBzdHJpbmdfdHlwZSYgX19zKSBjb25zdA0KICAgICAgeyByZXR1
cm4gdGhpcy0+ZG9fZ2V0KF9fYywgX19zZXQsIF9fbXNnaWQsIF9fcyk7IH0NCg0KICAgICAgdm9p
ZA0KICAgICAgY2xvc2UoY2F0YWxvZyBfX2MpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5k
b19jbG9zZShfX2MpOyB9DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICB2aXJ0dWFsDQogICAgICB+
bWVzc2FnZXMoKQ0KICAgICAgIHsNCiAgICAgICAgIGlmIChfTV9jX2xvY2FsZV9tZXNzYWdlcyAh
PSBfU19jX2xvY2FsZSkNCiAgICAgICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2Fs
ZV9tZXNzYWdlcyk7DQogICAgICAgfQ0KDQogICAgICB2aXJ0dWFsIGNhdGFsb2cNCiAgICAgIGRv
X29wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiwgY29uc3QgbG9jYWxlJikgY29uc3Q7DQoN
CiAgICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUNCiAgICAgIGRvX2dldChjYXRhbG9nLCBpbnQsIGlu
dCwgY29uc3Qgc3RyaW5nX3R5cGUmIF9fZGZhdWx0KSBjb25zdDsNCg0KICAgICAgdmlydHVhbCB2
b2lkDQogICAgICBkb19jbG9zZShjYXRhbG9nKSBjb25zdDsNCg0KDQogICAgICBjaGFyKg0KICAg
ICAgX01fY29udmVydF90b19jaGFyKGNvbnN0IHN0cmluZ190eXBlJiBfX21zZykgY29uc3QNCiAg
ICAgIHsNCg0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RfY2Fz
dDxfQ2hhclQqPihfX21zZy5jX3N0cigpKSk7DQogICAgICB9DQoNCg0KICAgICAgc3RyaW5nX3R5
cGUNCiAgICAgIF9NX2NvbnZlcnRfZnJvbV9jaGFyKGNoYXIqIF9fbXNnKSBjb25zdA0KICAgICAg
ew0KDQogICAgICAgIHNpemVfdCBfX2xlbiA9IGNoYXJfdHJhaXRzPGNoYXI+OjpsZW5ndGgoX19t
c2cpIC0gMTsNCiMgMTcwNSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9s
b2NhbGVfZmFjZXRzLmgiIDMNCiAgICAgICAgcmV0dXJuIHN0cmluZ190eXBlKCk7DQogICAgICB9
DQogICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGxvY2FsZTo6aWQg
bWVzc2FnZXM8X0NoYXJUPjo6aWQ7DQoNCg0KICB0ZW1wbGF0ZTw+DQogICAgc3RyaW5nDQogICAg
bWVzc2FnZXM8Y2hhcj46OmRvX2dldChjYXRhbG9nLCBpbnQsIGludCwgY29uc3Qgc3RyaW5nJikg
Y29uc3Q7DQoNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pNjg2LXBj
LW1pbmd3MzIvYml0cy9tZXNzYWdlc19tZW1iZXJzLmgiIDEgMw0KIyAzNyAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1taW5ndzMyL2JpdHMvbWVzc2FnZXNfbWVtYmVy
cy5oIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICB0eXBlbmFtZSBtZXNzYWdl
czxfQ2hhclQ+OjpjYXRhbG9nDQogICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNp
Y19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqKSBjb25zdA0KICAgIHsgcmV0dXJuIHRoaXMtPmRvX29w
ZW4oX19zLCBfX2xvYyk7IH0NCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICB0
eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nDQogICAgbWVzc2FnZXM8X0NoYXJUPjo6
ZG9fb3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mLCBjb25zdCBsb2NhbGUmKSBjb25zdA0K
ICAgIHsgcmV0dXJuIDA7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgdHlw
ZW5hbWUgbWVzc2FnZXM8X0NoYXJUPjo6c3RyaW5nX3R5cGUNCiAgICBtZXNzYWdlczxfQ2hhclQ+
Ojpkb19nZXQoY2F0YWxvZywgaW50LCBpbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cmluZ190eXBlJiBfX2RmYXVsdCkgY29uc3QNCiAgICB7IHJldHVybiBfX2RmYXVs
dDsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICB2b2lkDQogICAgbWVzc2Fn
ZXM8X0NoYXJUPjo6ZG9fY2xvc2UoY2F0YWxvZykgY29uc3QNCiAgICB7IH0NCiMgMTcxOSAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDIgMw0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBjbGFzcyBtZXNzYWdlc19ieW5hbWUg
OiBwdWJsaWMgbWVzc2FnZXM8X0NoYXJUPg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICB0eXBl
ZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+
IHN0cmluZ190eXBlOw0KDQogICAgICBleHBsaWNpdA0KICAgICAgbWVzc2FnZXNfYnluYW1lKGNv
bnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApDQogICAgICA6IG1lc3NhZ2VzPF9DaGFy
VD4oX19yZWZzKQ0KICAgICAgew0KICAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX19zOw0KICAg
ICAgICBpZiAoX01fY19sb2NhbGVfbWVzc2FnZXMgIT0gX1NfY19sb2NhbGUpDQogICAgICAgICAg
X1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7DQogICAgICAgIF9TX2Ny
ZWF0ZV9jX2xvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcywgX19zKTsNCiAgICAgIH0NCg0KICAg
IHByb3RlY3RlZDoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5tZXNzYWdlc19ieW5hbWUoKQ0KICAg
ICAgeyB9DQogICAgfTsNCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0K
ICAgIGlubGluZSBib29sDQogICAgaXNzcGFjZShfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9f
bG9jKQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0
eXBlX2Jhc2U6OnNwYWNlLCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0K
ICAgIGlubGluZSBib29sDQogICAgaXNwcmludChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9f
bG9jKQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0
eXBlX2Jhc2U6OnByaW50LCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0K
ICAgIGlubGluZSBib29sDQogICAgaXNjbnRybChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9f
bG9jKQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0
eXBlX2Jhc2U6OmNudHJsLCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0K
ICAgIGlubGluZSBib29sDQogICAgaXN1cHBlcihfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9f
bG9jKQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0
eXBlX2Jhc2U6OnVwcGVyLCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0K
ICAgIGlubGluZSBib29sIGlzbG93ZXIoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykN
CiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i
YXNlOjpsb3dlciwgX19jKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBp
bmxpbmUgYm9vbA0KICAgIGlzYWxwaGEoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykN
CiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i
YXNlOjphbHBoYSwgX19jKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBp
bmxpbmUgYm9vbA0KICAgIGlzZGlnaXQoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykN
CiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i
YXNlOjpkaWdpdCwgX19jKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBp
bmxpbmUgYm9vbA0KICAgIGlzcHVuY3QoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykN
CiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i
YXNlOjpwdW5jdCwgX19jKTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBp
bmxpbmUgYm9vbA0KICAgIGlzeGRpZ2l0KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2Mp
DQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVf
YmFzZTo6eGRpZ2l0LCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAg
IGlubGluZSBib29sDQogICAgaXNhbG51bShfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9j
KQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBl
X2Jhc2U6OmFsbnVtLCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAg
IGlubGluZSBib29sDQogICAgaXNncmFwaChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9j
KQ0KICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBl
X2Jhc2U6OmdyYXBoLCBfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAg
IGlubGluZSBfQ2hhclQNCiAgICB0b3VwcGVyKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19s
b2MpDQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykudG91cHBl
cihfX2MpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGlubGluZSBfQ2hh
clQNCiAgICB0b2xvd2VyKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpDQogICAgeyBy
ZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykudG9sb3dlcihfX2MpOyB9DQp9
DQojIDQyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX2lvcy5o
IiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX1RyYWl0cz4NCiAgICBjbGFzcyBiYXNpY19pb3MgOiBwdWJsaWMgaW9zX2Jhc2UN
CiAgICB7DQogICAgcHVibGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQog
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBlOw0KICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlwZTsNCiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7DQogICAgICB0eXBlZGVmIF9U
cmFpdHMgdHJhaXRzX3R5cGU7DQoNCg0KICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5
cGVfdHlwZTsNCiAgICAgIHR5cGVkZWYgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIF9UcmFp
dHM+IF9fb3N0cmVhbWJ1Zl9pdGVyOw0KICAgICAgdHlwZWRlZiBudW1fcHV0PF9DaGFyVCwgX19v
c3RyZWFtYnVmX2l0ZXI+IF9fbnVtcHV0X3R5cGU7DQogICAgICB0eXBlZGVmIGlzdHJlYW1idWZf
aXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1idWZfaXRlcjsNCiAgICAgIHR5cGVk
ZWYgbnVtX2dldDxfQ2hhclQsIF9faXN0cmVhbWJ1Zl9pdGVyPiBfX251bWdldF90eXBlOw0KDQoN
CiAgICBwcm90ZWN0ZWQ6DQogICAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qIF9N
X3RpZTsNCiAgICAgIG11dGFibGUgY2hhcl90eXBlIF9NX2ZpbGw7DQogICAgICBtdXRhYmxlIGJv
b2wgX01fZmlsbF9pbml0Ow0KICAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4q
IF9NX3N0cmVhbWJ1ZjsNCg0KDQogICAgICBjb25zdCBfX2N0eXBlX3R5cGUqIF9NX2ZjdHlwZTsN
Cg0KICAgICAgY29uc3QgX19udW1wdXRfdHlwZSogX01fZm51bXB1dDsNCg0KICAgICAgY29uc3Qg
X19udW1nZXRfdHlwZSogX01fZm51bWdldDsNCg0KICAgIHB1YmxpYzoNCiAgICAgIG9wZXJhdG9y
IHZvaWQqKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIHRoaXMtPmZhaWwoKSA/IDAgOiBjb25zdF9j
YXN0PGJhc2ljX2lvcyo+KHRoaXMpOyB9DQoNCiAgICAgIGJvb2wNCiAgICAgIG9wZXJhdG9yISgp
IGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5mYWlsKCk7IH0NCg0KICAgICAgaW9zdGF0ZQ0K
ICAgICAgcmRzdGF0ZSgpIGNvbnN0DQogICAgICB7IHJldHVybiBfTV9zdHJlYW1idWZfc3RhdGU7
IH0NCg0KICAgICAgdm9pZA0KICAgICAgY2xlYXIoaW9zdGF0ZSBfX3N0YXRlID0gZ29vZGJpdCk7
DQoNCiAgICAgIHZvaWQNCiAgICAgIHNldHN0YXRlKGlvc3RhdGUgX19zdGF0ZSkNCiAgICAgIHsg
dGhpcy0+Y2xlYXIodGhpcy0+cmRzdGF0ZSgpIHwgX19zdGF0ZSk7IH0NCg0KICAgICAgYm9vbA0K
ICAgICAgZ29vZCgpIGNvbnN0DQogICAgICB7IHJldHVybiB0aGlzLT5yZHN0YXRlKCkgPT0gMDsg
fQ0KDQogICAgICBib29sDQogICAgICBlb2YoKSBjb25zdA0KICAgICAgeyByZXR1cm4gKHRoaXMt
PnJkc3RhdGUoKSAmIGVvZmJpdCkgIT0gMDsgfQ0KDQogICAgICBib29sDQogICAgICBmYWlsKCkg
Y29uc3QNCiAgICAgIHsgcmV0dXJuICh0aGlzLT5yZHN0YXRlKCkgJiAoYmFkYml0IHwgZmFpbGJp
dCkpICE9IDA7IH0NCg0KICAgICAgYm9vbA0KICAgICAgYmFkKCkgY29uc3QNCiAgICAgIHsgcmV0
dXJuICh0aGlzLT5yZHN0YXRlKCkgJiBiYWRiaXQpICE9IDA7IH0NCg0KICAgICAgaW9zdGF0ZQ0K
ICAgICAgZXhjZXB0aW9ucygpIGNvbnN0DQogICAgICB7IHJldHVybiBfTV9leGNlcHRpb247IH0N
Cg0KICAgICAgdm9pZA0KICAgICAgZXhjZXB0aW9ucyhpb3N0YXRlIF9fZXhjZXB0KQ0KICAgICAg
ew0KICAgICAgICBfTV9leGNlcHRpb24gPSBfX2V4Y2VwdDsNCiAgICAgICAgdGhpcy0+Y2xlYXIo
X01fc3RyZWFtYnVmX3N0YXRlKTsNCiAgICAgIH0NCg0KDQogICAgICBleHBsaWNpdA0KICAgICAg
YmFzaWNfaW9zKGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiKSA6IGlvc19i
YXNlKCkNCiAgICAgIHsgdGhpcy0+aW5pdChfX3NiKTsgfQ0KDQogICAgICB2aXJ0dWFsDQogICAg
ICB+YmFzaWNfaW9zKCkgeyB9DQoNCg0KICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+Kg0KICAgICAgdGllKCkgY29uc3QNCiAgICAgIHsgcmV0dXJuIF9NX3RpZTsgfQ0KDQogICAg
ICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4qDQogICAgICB0aWUoYmFzaWNfb3N0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+KiBfX3RpZXN0cikNCiAgICAgIHsNCiAgICAgICAgYmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+KiBfX29sZCA9IF9NX3RpZTsNCiAgICAgICAgX01fdGllID0g
X190aWVzdHI7DQogICAgICAgIHJldHVybiBfX29sZDsNCiAgICAgIH0NCg0KICAgICAgYmFzaWNf
c3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qDQogICAgICByZGJ1ZigpIGNvbnN0DQogICAgICB7
IHJldHVybiBfTV9zdHJlYW1idWY7IH0NCg0KICAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwg
X1RyYWl0cz4qDQogICAgICByZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiog
X19zYik7DQoNCiAgICAgIGJhc2ljX2lvcyYNCiAgICAgIGNvcHlmbXQoY29uc3QgYmFzaWNfaW9z
JiBfX3Jocyk7DQoNCiAgICAgIGNoYXJfdHlwZQ0KICAgICAgZmlsbCgpIGNvbnN0DQogICAgICB7
DQogICAgICAgIGlmICghX01fZmlsbF9pbml0KQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIF9N
X2ZpbGwgPSB0aGlzLT53aWRlbignICcpOw0KICAgICAgICAgICAgX01fZmlsbF9pbml0ID0gdHJ1
ZTsNCiAgICAgICAgICB9DQogICAgICAgIHJldHVybiBfTV9maWxsOw0KICAgICAgfQ0KDQogICAg
ICBjaGFyX3R5cGUNCiAgICAgIGZpbGwoY2hhcl90eXBlIF9fY2gpDQogICAgICB7DQogICAgICAg
IGNoYXJfdHlwZSBfX29sZCA9IHRoaXMtPmZpbGwoKTsNCiAgICAgICAgX01fZmlsbCA9IF9fY2g7
DQogICAgICAgIHJldHVybiBfX29sZDsNCiAgICAgIH0NCg0KDQogICAgICBsb2NhbGUNCiAgICAg
IGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2MpOw0KDQogICAgICBjaGFyDQogICAgICBuYXJyb3co
Y2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVsdCkgY29uc3Q7DQoNCiAgICAgIGNoYXJfdHlwZQ0K
ICAgICAgd2lkZW4oY2hhciBfX2MpIGNvbnN0Ow0KDQogICAgcHJvdGVjdGVkOg0KDQogICAgICBi
YXNpY19pb3MoKSA6IGlvc19iYXNlKCkNCiAgICAgIHsgfQ0KDQogICAgICB2b2lkDQogICAgICBp
bml0KGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3NiKTsNCg0KICAgICAgYm9v
bA0KICAgICAgX01fY2hlY2tfZmFjZXQoY29uc3QgbG9jYWxlOjpmYWNldCogX19mKSBjb25zdA0K
ICAgICAgew0KICAgICAgICBpZiAoIV9fZikNCiAgICAgICAgICBfX3Rocm93X2JhZF9jYXN0KCk7
DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgfQ0KDQogICAgICB2b2lkDQogICAgICBfTV9j
YWNoZV9mYWNldHMoY29uc3QgbG9jYWxlJiBfX2xvYyk7DQogICAgfTsNCn0NCg0KDQoNCiMgMSAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9iYXNpY19pb3MudGNjIiAxIDMN
CiMgMzQgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvYmFzaWNfaW9zLnRj
YyIgMw0KDQpuYW1lc3BhY2Ugc3RkDQp7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw
ZW5hbWUgX1RyYWl0cz4NCiAgICB2b2lkDQogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46
OmNsZWFyKGlvc3RhdGUgX19zdGF0ZSkNCiAgICB7DQogICAgICBpZiAodGhpcy0+cmRidWYoKSkN
CiAgICAgICAgX01fc3RyZWFtYnVmX3N0YXRlID0gX19zdGF0ZTsNCiAgICAgIGVsc2UNCiAgICAg
ICAgICBfTV9zdHJlYW1idWZfc3RhdGUgPSBfX3N0YXRlIHwgYmFkYml0Ow0KICAgICAgaWYgKCh0
aGlzLT5yZHN0YXRlKCkgJiB0aGlzLT5leGNlcHRpb25zKCkpKQ0KICAgICAgICBfX3Rocm93X2lv
c19mYWlsdXJlKCJiYXNpY19pb3M6OmNsZWFyKGlvc3RhdGUpIGNhdXNlZCBleGNlcHRpb24iKTsN
CiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0K
ICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+Kg0KICAgIGJhc2ljX2lvczxfQ2hh
clQsIF9UcmFpdHM+OjpyZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19z
YikNCiAgICB7DQogICAgICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19vbGQg
PSBfTV9zdHJlYW1idWY7DQogICAgICBfTV9zdHJlYW1idWYgPSBfX3NiOw0KICAgICAgdGhpcy0+
Y2xlYXIoKTsNCiAgICAgIHJldHVybiBfX29sZDsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFp
dHM+Jg0KICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+Ojpjb3B5Zm10KGNvbnN0IGJhc2lj
X2lvcyYgX19yaHMpDQogICAgew0KDQoNCg0KDQogICAgICBfV29yZHMqIF9fd29yZHMgPSAoX19y
aHMuX01fd29yZF9zaXplIDw9IF9TX2xvY2FsX3dvcmRfc2l6ZSkgPw0KICAgICAgICBfTV9sb2Nh
bF93b3JkIDogbmV3IF9Xb3Jkc1tfX3Jocy5fTV93b3JkX3NpemVdOw0KDQoNCiAgICAgIF9DYWxs
YmFja19saXN0KiBfX2NiID0gX19yaHMuX01fY2FsbGJhY2tzOw0KICAgICAgaWYgKF9fY2IpDQog
ICAgICAgIF9fY2ItPl9NX2FkZF9yZWZlcmVuY2UoKTsNCiAgICAgIF9NX2NhbGxfY2FsbGJhY2tz
KGVyYXNlX2V2ZW50KTsNCiAgICAgIGlmIChfTV93b3JkICE9IF9NX2xvY2FsX3dvcmQpDQogICAg
ICAgIHsNCiAgICAgICAgICBkZWxldGUgW10gX01fd29yZDsNCiAgICAgICAgICBfTV93b3JkID0g
MDsNCiAgICAgICAgfQ0KICAgICAgX01fZGlzcG9zZV9jYWxsYmFja3MoKTsNCg0KICAgICAgX01f
Y2FsbGJhY2tzID0gX19jYjsNCiAgICAgIGZvciAoaW50IF9faSA9IDA7IF9faSA8IF9fcmhzLl9N
X3dvcmRfc2l6ZTsgKytfX2kpDQogICAgICAgIF9fd29yZHNbX19pXSA9IF9fcmhzLl9NX3dvcmRb
X19pXTsNCiAgICAgIGlmIChfTV93b3JkICE9IF9NX2xvY2FsX3dvcmQpDQogICAgICAgIHsNCiAg
ICAgICAgICBkZWxldGUgW10gX01fd29yZDsNCiAgICAgICAgICBfTV93b3JkID0gMDsNCiAgICAg
ICAgfQ0KICAgICAgX01fd29yZCA9IF9fd29yZHM7DQogICAgICBfTV93b3JkX3NpemUgPSBfX3Jo
cy5fTV93b3JkX3NpemU7DQoNCiAgICAgIHRoaXMtPmZsYWdzKF9fcmhzLmZsYWdzKCkpOw0KICAg
ICAgdGhpcy0+d2lkdGgoX19yaHMud2lkdGgoKSk7DQogICAgICB0aGlzLT5wcmVjaXNpb24oX19y
aHMucHJlY2lzaW9uKCkpOw0KICAgICAgdGhpcy0+dGllKF9fcmhzLnRpZSgpKTsNCiAgICAgIHRo
aXMtPmZpbGwoX19yaHMuZmlsbCgpKTsNCg0KICAgICAgdGhpcy0+ZXhjZXB0aW9ucyhfX3Jocy5l
eGNlcHRpb25zKCkpOw0KDQogICAgICBfTV9jYWxsX2NhbGxiYWNrcyhjb3B5Zm10X2V2ZW50KTsN
CiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGNoYXINCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJh
aXRzPjo6bmFycm93KGNoYXJfdHlwZSBfX2MsIGNoYXIgX19kZmF1bHQpIGNvbnN0DQogICAgew0K
ICAgICAgY2hhciBfX3JldCA9IF9fZGZhdWx0Ow0KICAgICAgaWYgKF9NX2NoZWNrX2ZhY2V0KF9N
X2ZjdHlwZSkpDQogICAgICAgIF9fcmV0ID0gX01fZmN0eXBlLT5uYXJyb3coX19jLCBfX2RmYXVs
dCk7DQogICAgICByZXR1cm4gX19yZXQ7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBfQ2hhclQNCiAgICBiYXNpY19pb3M8X0NoYXJU
LCBfVHJhaXRzPjo6d2lkZW4oY2hhciBfX2MpIGNvbnN0DQogICAgew0KICAgICAgY2hhcl90eXBl
IF9fcmV0ID0gY2hhcl90eXBlKCk7DQogICAgICBpZiAoX01fY2hlY2tfZmFjZXQoX01fZmN0eXBl
KSkNCiAgICAgICAgX19yZXQgPSBfTV9mY3R5cGUtPndpZGVuKF9fYyk7DQogICAgICByZXR1cm4g
X19yZXQ7DQogICAgfQ0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPg0KICAgIGxvY2FsZQ0KICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+OjppbWJ1
ZShjb25zdCBsb2NhbGUmIF9fbG9jKQ0KICAgIHsNCiAgICAgIGxvY2FsZSBfX29sZCh0aGlzLT5n
ZXRsb2MoKSk7DQogICAgICBpb3NfYmFzZTo6aW1idWUoX19sb2MpOw0KICAgICAgX01fY2FjaGVf
ZmFjZXRzKF9fbG9jKTsNCiAgICAgIGlmICh0aGlzLT5yZGJ1ZigpICE9IDApDQogICAgICAgIHRo
aXMtPnJkYnVmKCktPnB1YmltYnVlKF9fbG9jKTsNCiAgICAgIHJldHVybiBfX29sZDsNCiAgICB9
DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHZv
aWQNCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6aW5pdChiYXNpY19zdHJlYW1idWY8
X0NoYXJULCBfVHJhaXRzPiogX19zYikNCiAgICB7DQoNCiAgICAgIGlvc19iYXNlOjpfTV9pbml0
KCk7DQogICAgICBfTV9jYWNoZV9mYWNldHMoX01faW9zX2xvY2FsZSk7DQogICAgICBfTV90aWUg
PSAwOw0KIyAxNTkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvYmFzaWNf
aW9zLnRjYyIgMw0KICAgICAgX01fZmlsbCA9IDA7DQogICAgICBfTV9maWxsX2luaXQgPSBmYWxz
ZTsNCg0KICAgICAgX01fZXhjZXB0aW9uID0gZ29vZGJpdDsNCiAgICAgIF9NX3N0cmVhbWJ1ZiA9
IF9fc2I7DQogICAgICBfTV9zdHJlYW1idWZfc3RhdGUgPSBfX3NiID8gZ29vZGJpdCA6IGJhZGJp
dDsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
Pg0KICAgIHZvaWQNCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6X01fY2FjaGVfZmFj
ZXRzKGNvbnN0IGxvY2FsZSYgX19sb2MpDQogICAgew0KICAgICAgaWYgKGhhc19mYWNldDxfX2N0
eXBlX3R5cGU+KF9fbG9jKSkNCiAgICAgICAgX01fZmN0eXBlID0gJnVzZV9mYWNldDxfX2N0eXBl
X3R5cGU+KF9fbG9jKTsNCiAgICAgIGVsc2UNCiAgICAgICAgX01fZmN0eXBlID0gMDsNCg0KICAg
ICAgaWYgKGhhc19mYWNldDxfX251bXB1dF90eXBlPihfX2xvYykpDQogICAgICAgIF9NX2ZudW1w
dXQgPSAmdXNlX2ZhY2V0PF9fbnVtcHV0X3R5cGU+KF9fbG9jKTsNCiAgICAgIGVsc2UNCiAgICAg
ICAgX01fZm51bXB1dCA9IDA7DQogICAgICBpZiAoaGFzX2ZhY2V0PF9fbnVtZ2V0X3R5cGU+KF9f
bG9jKSkNCiAgICAgICAgX01fZm51bWdldCA9ICZ1c2VfZmFjZXQ8X19udW1nZXRfdHlwZT4oX19s
b2MpOw0KICAgICAgZWxzZQ0KICAgICAgICBfTV9mbnVtZ2V0ID0gMDsNCiAgICB9DQoNCg0KDQoN
CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lvczxjaGFyPjsNCiAgZXh0ZXJuIHRlbXBs
YXRlIGNsYXNzIGJhc2ljX2lvczx3Y2hhcl90PjsNCn0NCiMgMjA4ICJ0Oi9tc3lzLzEuMC9taW5n
dy9pbmNsdWRlL2crKy12My9iaXRzL2Jhc2ljX2lvcy5oIiAyIDMNCiMgNTIgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2lvcyIgMiAzDQojIDQ2ICJ0Oi9tc3lzLzEuMC9taW5ndy9p
bmNsdWRlL2crKy12My9vc3RyZWFtIiAyIDMNCg0KbmFtZXNwYWNlIHN0ZA0Kew0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBjbGFzcyBiYXNpY19v
c3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz4NCiAgICB7
DQogICAgcHVibGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7DQogICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBlOw0KICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7DQogICAgICB0eXBlZGVmIF9UcmFpdHMg
dHJhaXRzX3R5cGU7DQoNCg0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBf
VHJhaXRzPiBfX3N0cmVhbWJ1Zl90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19pb3M8X0NoYXJU
LCBfVHJhaXRzPiBfX2lvc190eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7DQogICAgICB0eXBlZGVmIG9zdHJlYW1idWZfaXRl
cmF0b3I8X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1idWZfaXRlcjsNCiAgICAgIHR5cGVkZWYg
bnVtX3B1dDxfQ2hhclQsIF9fb3N0cmVhbWJ1Zl9pdGVyPiBfX251bXB1dF90eXBlOw0KICAgICAg
dHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsNCg0KDQogICAgICBleHBsaWNpdA0K
ICAgICAgYmFzaWNfb3N0cmVhbShfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiKQ0KICAgICAgeyB0aGlz
LT5pbml0KF9fc2IpOyB9DQoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5iYXNpY19vc3RyZWFtKCkg
eyB9DQoNCg0KICAgICAgY2xhc3Mgc2VudHJ5Ow0KICAgICAgZnJpZW5kIGNsYXNzIHNlbnRyeTsN
Cg0KDQoNCiAgICAgIF9fb3N0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I8PChfX29zdHJlYW1f
dHlwZSYgKCpfX3BmKShfX29zdHJlYW1fdHlwZSYpKTsNCg0KICAgICAgX19vc3RyZWFtX3R5cGUm
DQogICAgICBvcGVyYXRvcjw8KF9faW9zX3R5cGUmICgqX19wZikoX19pb3NfdHlwZSYpKTsNCg0K
ICAgICAgX19vc3RyZWFtX3R5cGUmDQogICAgICBvcGVyYXRvcjw8KGlvc19iYXNlJiAoKl9fcGYp
IChpb3NfYmFzZSYpKTsNCg0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9y
PDwobG9uZyBfX24pOw0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPDwo
dW5zaWduZWQgbG9uZyBfX24pOw0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJh
dG9yPDwoYm9vbCBfX24pOw0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9y
PDwoc2hvcnQgX19uKQ0KICAgICAgew0KICAgICAgICBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbXQg
PSB0aGlzLT5mbGFncygpICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsNCiAgICAgICAgaWYgKF9fZm10
ICYgaW9zX2Jhc2U6Om9jdCB8fCBfX2ZtdCAmIGlvc19iYXNlOjpoZXgpDQogICAgICAgICAgcmV0
dXJuIHRoaXMtPm9wZXJhdG9yPDwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KF9f
bikpKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIHJldHVybiB0aGlzLT5vcGVyYXRvcjw8KHN0
YXRpY19jYXN0PGxvbmc+KF9fbikpOw0KICAgICAgfQ0KDQogICAgICBfX29zdHJlYW1fdHlwZSYN
CiAgICAgIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgX19uKQ0KICAgICAgeyByZXR1cm4gdGhp
cy0+b3BlcmF0b3I8PChzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfX24pKTsgfQ0KDQogICAg
ICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPDwoaW50IF9fbikNCiAgICAgIHsNCiAg
ICAgICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZm10ID0gdGhpcy0+ZmxhZ3MoKSAmIGlvc19iYXNl
OjpiYXNlZmllbGQ7DQogICAgICAgIGlmIChfX2ZtdCAmIGlvc19iYXNlOjpvY3QgfHwgX19mbXQg
JiBpb3NfYmFzZTo6aGV4KQ0KICAgICAgICAgIHJldHVybiB0aGlzLT5vcGVyYXRvcjw8KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oX19uKSkpOw0KICAgICAgICBlbHNlDQogICAgICAg
ICAgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPDwoc3RhdGljX2Nhc3Q8bG9uZz4oX19uKSk7DQogICAg
ICB9DQoNCiAgICAgIF9fb3N0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I8PCh1bnNpZ25lZCBp
bnQgX19uKQ0KICAgICAgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3I8PChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihfX24pKTsgfQ0KIyAxNDAgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysr
LXYzL29zdHJlYW0iIDMNCiAgICAgIF9fb3N0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I8PChk
b3VibGUgX19mKTsNCg0KICAgICAgX19vc3RyZWFtX3R5cGUmDQogICAgICBvcGVyYXRvcjw8KGZs
b2F0IF9fZikNCiAgICAgIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPDwoc3RhdGljX2Nhc3Q8ZG91
YmxlPihfX2YpKTsgfQ0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPDwo
bG9uZyBkb3VibGUgX19mKTsNCg0KICAgICAgX19vc3RyZWFtX3R5cGUmDQogICAgICBvcGVyYXRv
cjw8KGNvbnN0IHZvaWQqIF9fcCk7DQoNCiAgICAgIF9fb3N0cmVhbV90eXBlJg0KICAgICAgb3Bl
cmF0b3I8PChfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiKTsNCg0KDQogICAgICBfX29zdHJlYW1fdHlw
ZSYNCiAgICAgIHB1dChjaGFyX3R5cGUgX19jKTsNCg0KICAgICAgX19vc3RyZWFtX3R5cGUmDQog
ICAgICB3cml0ZShjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pOw0KDQogICAg
ICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIGZsdXNoKCk7DQoNCg0KICAgICAgcG9zX3R5cGUNCiAg
ICAgIHRlbGxwKCk7DQoNCiAgICAgIF9fb3N0cmVhbV90eXBlJg0KICAgICAgc2Vla3AocG9zX3R5
cGUpOw0KDQogICAgICBfX29zdHJlYW1fdHlwZSYNCiAgICAgIHNlZWtwKG9mZl90eXBlLCBpb3Nf
YmFzZTo6c2Vla2Rpcik7DQogICAgfTsNCg0KDQogIHRlbXBsYXRlIDx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHM+DQogICAgY2xhc3MgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+OjpzZW50cnkNCiAgICB7DQoNCiAgICAgIGJvb2wgX01fb2s7DQogICAgICBiYXNpY19vc3Ry
ZWFtPF9DaGFyVCxfVHJhaXRzPiYgX01fb3M7DQoNCiAgICBwdWJsaWM6DQogICAgICBleHBsaWNp
dA0KICAgICAgc2VudHJ5KGJhc2ljX29zdHJlYW08X0NoYXJULF9UcmFpdHM+JiBfX29zKTsNCg0K
ICAgICAgfnNlbnRyeSgpDQogICAgICB7DQoNCiAgICAgICAgaWYgKF9NX29zLmZsYWdzKCkgJiBp
b3NfYmFzZTo6dW5pdGJ1ZiAmJiAhdW5jYXVnaHRfZXhjZXB0aW9uKCkpDQogICAgICAgICAgew0K
DQogICAgICAgICAgICBpZiAoX01fb3MucmRidWYoKSAmJiBfTV9vcy5yZGJ1ZigpLT5wdWJzeW5j
KCkgPT0gLTEpDQogICAgICAgICAgICAgIF9NX29zLnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQp
Ow0KICAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgb3BlcmF0b3IgYm9vbCgpDQogICAgICB7
IHJldHVybiBfTV9vazsgfQ0KICAgIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAg
ICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIF9DaGFy
VCBfX2MpOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4N
CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I8PChiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3V0LCBjaGFyIF9fYykNCiAgICB7IHJldHVy
biAoX19vdXQgPDwgX19vdXQud2lkZW4oX19jKSk7IH0NCg0KDQogIHRlbXBsYXRlIDxjbGFzcyBf
VHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I8
PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX291dCwgY2hhciBfX2MpOw0KDQoNCiAg
dGVtcGxhdGU8Y2xhc3MgX1RyYWl0cz4NCiAgICBiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+
Jg0KICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19vdXQsIHNp
Z25lZCBjaGFyIF9fYykNCiAgICB7IHJldHVybiAoX19vdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4o
X19jKSk7IH0NCg0KICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08
Y2hhciwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFp
dHM+JiBfX291dCwgdW5zaWduZWQgY2hhciBfX2MpDQogICAgeyByZXR1cm4gKF9fb3V0IDw8IHN0
YXRpY19jYXN0PGNoYXI+KF9fYykpOyB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAg
ICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0
IF9DaGFyVCogX19zKTsNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+ICYNCiAgICBvcGVyYXRv
cjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IGNoYXIqIF9f
cyk7DQoNCg0KICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08Y2hh
ciwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+
JiBfX291dCwgY29uc3QgY2hhciogX19zKTsNCg0KDQogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+
DQogICAgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcjw8KGJhc2lj
X29zdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCBjb25zdCBzaWduZWQgY2hhciogX19zKQ0K
ICAgIHsgcmV0dXJuIChfX291dCA8PCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihfX3Mp
KTsgfQ0KDQogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxjaGFy
LCBfVHJhaXRzPiAmDQogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+
JiBfX291dCwgY29uc3QgdW5zaWduZWQgY2hhciogX19zKQ0KICAgIHsgcmV0dXJuIChfX291dCA8
PCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihfX3MpKTsgfQ0KDQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPiYNCiAgICBlbmRsKGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19vcykNCiAgICB7IHJldHVybiBmbHVzaChfX29zLnB1dChfX29zLndpZGVuKCdcbicpKSk7IH0N
Cg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGVuZHMoYmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX29zKQ0KICAgIHsgcmV0dXJuIF9fb3MucHV0KF9DaGFyVCgpKTsgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNp
Y19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgZmx1c2goYmFzaWNfb3N0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX29zKQ0KICAgIHsgcmV0dXJuIF9fb3MuZmx1c2goKTsgfQ0KDQp9DQoN
Cg0KDQoNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL29zdHJl
YW0udGNjIiAxIDMNCiMgMzYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
b3N0cmVhbS50Y2MiIDMNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9s
b2NhbGUiIDEgMw0KIyA0MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvbG9jYWxl
IiAzDQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9j
YWxlX2ZhY2V0cy50Y2MiIDEgMw0KIyAzNyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKyst
djMvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMw0KDQojIDEgInQ6L21zeXMvMS4wL21pbmd3L2lu
Y2x1ZGUvZysrLXYzL2NlcnJubyIgMSAzDQojIDQ3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRl
L2crKy12My9jZXJybm8iIDMNCiMgMzkgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYz
L2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDIgMw0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvY21hdGgiIDEgMw0KIyA0OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9nKystdjMvY21hdGgiIDMNCg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9t
YXRoLmgiIDEgMw0KIyA2NSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9tYXRoLmgiIDMNCmV4
dGVybiAiQyIgew0KIyA5MyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9tYXRoLmgiIDMNCmV4
dGVybiBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBkb3VibGUgX0hVR0U7DQojIDEwMyAidDov
bXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9tYXRoLmgiIDMNCnN0cnVjdCBfZXhjZXB0aW9uDQp7DQog
ICAgICAgIGludCB0eXBlOw0KICAgICAgICBjaGFyICpuYW1lOw0KICAgICAgICBkb3VibGUgYXJn
MTsNCiAgICAgICAgZG91YmxlIGFyZzI7DQogICAgICAgIGRvdWJsZSByZXR2YWw7DQp9Ow0KDQoN
CmRvdWJsZSBzaW4gKGRvdWJsZSk7DQpkb3VibGUgY29zIChkb3VibGUpOw0KZG91YmxlIHRhbiAo
ZG91YmxlKTsNCmRvdWJsZSBzaW5oIChkb3VibGUpOw0KZG91YmxlIGNvc2ggKGRvdWJsZSk7DQpk
b3VibGUgdGFuaCAoZG91YmxlKTsNCmRvdWJsZSBhc2luIChkb3VibGUpOw0KZG91YmxlIGFjb3Mg
KGRvdWJsZSk7DQpkb3VibGUgYXRhbiAoZG91YmxlKTsNCmRvdWJsZSBhdGFuMiAoZG91YmxlLCBk
b3VibGUpOw0KZG91YmxlIGV4cCAoZG91YmxlKTsNCmRvdWJsZSBsb2cgKGRvdWJsZSk7DQpkb3Vi
bGUgbG9nMTAgKGRvdWJsZSk7DQpkb3VibGUgcG93IChkb3VibGUsIGRvdWJsZSk7DQpkb3VibGUg
c3FydCAoZG91YmxlKTsNCmRvdWJsZSBjZWlsIChkb3VibGUpOw0KZG91YmxlIGZsb29yIChkb3Vi
bGUpOw0KZG91YmxlIGZhYnMgKGRvdWJsZSk7DQpkb3VibGUgbGRleHAgKGRvdWJsZSwgaW50KTsN
CmRvdWJsZSBmcmV4cCAoZG91YmxlLCBpbnQqKTsNCmRvdWJsZSBtb2RmIChkb3VibGUsIGRvdWJs
ZSopOw0KZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91YmxlKTsNCg0KDQoNCg0KDQpzdHJ1Y3QgX2Nv
bXBsZXgNCnsNCiAgICAgICAgZG91YmxlIHg7DQogICAgICAgIGRvdWJsZSB5Ow0KfTsNCg0KZG91
YmxlIF9jYWJzIChzdHJ1Y3QgX2NvbXBsZXgpOw0KZG91YmxlIF9oeXBvdCAoZG91YmxlLCBkb3Vi
bGUpOw0KZG91YmxlIF9qMCAoZG91YmxlKTsNCmRvdWJsZSBfajEgKGRvdWJsZSk7DQpkb3VibGUg
X2puIChpbnQsIGRvdWJsZSk7DQpkb3VibGUgX3kwIChkb3VibGUpOw0KZG91YmxlIF95MSAoZG91
YmxlKTsNCmRvdWJsZSBfeW4gKGludCwgZG91YmxlKTsNCmludCBfbWF0aGVyciAoc3RydWN0IF9l
eGNlcHRpb24gKik7DQoNCg0KDQoNCg0KDQoNCmRvdWJsZSBjYWJzIChzdHJ1Y3QgX2NvbXBsZXgp
Ow0KZG91YmxlIGh5cG90IChkb3VibGUsIGRvdWJsZSk7DQpkb3VibGUgajAgKGRvdWJsZSk7DQpk
b3VibGUgajEgKGRvdWJsZSk7DQpkb3VibGUgam4gKGludCwgZG91YmxlKTsNCmRvdWJsZSB5MCAo
ZG91YmxlKTsNCmRvdWJsZSB5MSAoZG91YmxlKTsNCmRvdWJsZSB5biAoaW50LCBkb3VibGUpOw0K
DQoNCg0KDQoNCg0KfQ0KIyA1MiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY21h
dGgiIDIgMw0KIyA3OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvY21hdGgiIDMN
Cm5hbWVzcGFjZSBzdGQNCnsNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gX1RwIF9fY21h
dGhfcG93ZXIoX1RwLCB1bnNpZ25lZCBpbnQpOw0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4N
CiAgaW5saW5lIF9UcA0KICAgIF9fY21hdGhfYWJzKF9UcCBfX3gpDQogICAgew0KICAgICAgcmV0
dXJuIF9feCA8IF9UcCgpID8gLV9feCA6IF9feDsNCiAgICB9DQoNCiAgaW5saW5lIGRvdWJsZQ0K
ICBhYnMoZG91YmxlIF9feCkNCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnMoX194KTsgfQ0KDQog
IGlubGluZSBmbG9hdA0KICBhYnMoZmxvYXQgX194KQ0KICB7IHJldHVybiBfX2J1aWx0aW5fZmFi
c2YoX194KTsgfQ0KDQogIGlubGluZSBsb25nIGRvdWJsZQ0KICBhYnMobG9uZyBkb3VibGUgX194
KQ0KICB7IHJldHVybiBfX2J1aWx0aW5fZmFic2woX194KTsgfQ0KDQoNCg0KDQoNCiAgaW5saW5l
IGZsb2F0DQogIGFjb3MoZmxvYXQgX194KSB7IHJldHVybiA6OmFjb3Moc3RhdGljX2Nhc3Q8ZG91
YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjphY29zOw0KDQoNCg0KDQoNCiAgaW5saW5lIGxv
bmcgZG91YmxlDQogIGFjb3MobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmFjb3Moc3RhdGlj
X2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjphc2luOw0KDQoNCg0KDQoNCiAg
aW5saW5lIGZsb2F0DQogIGFzaW4oZmxvYXQgX194KSB7IHJldHVybiA6OmFzaW4oc3RhdGljX2Nh
c3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAg
YXNpbihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6YXNpbihzdGF0aWNfY2FzdDxkb3VibGU+
KF9feCkpOyB9DQoNCg0KICB1c2luZyA6OmF0YW47DQoNCg0KDQoNCg0KICBpbmxpbmUgZmxvYXQN
CiAgYXRhbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6YXRhbihzdGF0aWNfY2FzdDxkb3VibGU+KF9f
eCkpOyB9DQoNCg0KDQoNCg0KDQogIGlubGluZSBsb25nIGRvdWJsZQ0KICBhdGFuKGxvbmcgZG91
YmxlIF9feCkgeyByZXR1cm4gOjphdGFuKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0NCg0K
DQogIHVzaW5nIDo6YXRhbjI7DQoNCg0KDQoNCg0KICBpbmxpbmUgZmxvYXQNCiAgYXRhbjIoZmxv
YXQgX195LCBmbG9hdCBfX3gpDQogIHsgcmV0dXJuIDo6YXRhbjIoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfX3kpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9DQoNCg0KDQoNCg0KDQogIGlubGlu
ZSBsb25nIGRvdWJsZQ0KICBhdGFuMihsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkN
CiAgeyByZXR1cm4gOjphdGFuMihzdGF0aWNfY2FzdDxkb3VibGU+KF9feSksIHN0YXRpY19jYXN0
PGRvdWJsZT4oX194KSk7IH0NCg0KDQogIHVzaW5nIDo6Y2VpbDsNCg0KDQoNCg0KDQogIGlubGlu
ZSBmbG9hdA0KICBjZWlsKGZsb2F0IF9feCkgeyByZXR1cm4gOjpjZWlsKHN0YXRpY19jYXN0PGRv
dWJsZT4oX194KSk7IH0NCg0KDQoNCg0KDQoNCiAgaW5saW5lIGxvbmcgZG91YmxlDQogIGNlaWwo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmNlaWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gp
KTsgfQ0KDQoNCiAgdXNpbmcgOjpjb3M7DQoNCiAgaW5saW5lIGZsb2F0DQogIGNvcyhmbG9hdCBf
X3gpDQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NmKF9feCk7IH0NCg0KICBpbmxpbmUgbG9uZyBk
b3VibGUNCiAgY29zKGxvbmcgZG91YmxlIF9feCkNCiAgeyByZXR1cm4gX19idWlsdGluX2Nvc2wo
X194KTsgfQ0KDQogIHVzaW5nIDo6Y29zaDsNCg0KDQoNCg0KDQogIGlubGluZSBmbG9hdA0KICBj
b3NoKGZsb2F0IF9feCkgeyByZXR1cm4gOjpjb3NoKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7
IH0NCg0KDQoNCg0KDQoNCiAgaW5saW5lIGxvbmcgZG91YmxlDQogIGNvc2gobG9uZyBkb3VibGUg
X194KSB7IHJldHVybiA6OmNvc2goc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCiAg
dXNpbmcgOjpleHA7DQoNCg0KDQoNCg0KICBpbmxpbmUgZmxvYXQNCiAgZXhwKGZsb2F0IF9feCkg
eyByZXR1cm4gOjpleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0K
ICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgZXhwKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpl
eHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjpmYWJzOw0KDQog
IGlubGluZSBmbG9hdA0KICBmYWJzKGZsb2F0IF9feCkNCiAgeyByZXR1cm4gX19idWlsdGluX2Zh
YnNmKF9feCk7IH0NCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgZmFicyhsb25nIGRvdWJsZSBf
X3gpDQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChfX3gpOyB9DQoNCiAgdXNpbmcgOjpmbG9v
cjsNCg0KDQoNCg0KDQogIGlubGluZSBmbG9hdA0KICBmbG9vcihmbG9hdCBfX3gpIHsgcmV0dXJu
IDo6Zmxvb3Ioc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxp
bmUgbG9uZyBkb3VibGUNCiAgZmxvb3IobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmZsb29y
KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0NCg0KDQogIHVzaW5nIDo6Zm1vZDsNCg0KDQoN
Cg0KDQogIGlubGluZSBmbG9hdA0KICBmbW9kKGZsb2F0IF9feCwgZmxvYXQgX195KQ0KICB7IHJl
dHVybiA6OmZtb2Qoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCBzdGF0aWNfY2FzdDxkb3VibGU+
KF9feSkpOyB9DQoNCg0KDQoNCg0KDQogIGlubGluZSBsb25nIGRvdWJsZQ0KICBmbW9kKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQ0KICB7IHJldHVybiA6OmZtb2Qoc3RhdGljX2Nh
c3Q8ZG91YmxlPihfX3gpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9feSkpOyB9DQoNCg0KICB1c2lu
ZyA6OmZyZXhwOw0KDQoNCg0KDQoNCiAgaW5saW5lIGZsb2F0DQogIGZyZXhwKGZsb2F0IF9feCwg
aW50KiBfX2V4cCkgeyByZXR1cm4gOjpmcmV4cChfX3gsIF9fZXhwKTsgfQ0KDQoNCg0KDQoNCg0K
ICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgZnJleHAobG9uZyBkb3VibGUgX194LCBpbnQqIF9fZXhw
KQ0KICB7IHJldHVybiA6OmZyZXhwKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwgX19leHApOyB9
DQoNCg0KICB1c2luZyA6OmxkZXhwOw0KDQoNCg0KDQoNCiAgaW5saW5lIGZsb2F0DQogIGxkZXhw
KGZsb2F0IF9feCwgaW50IF9fZXhwKQ0KICB7IHJldHVybiA6OmxkZXhwKHN0YXRpY19jYXN0PGRv
dWJsZT4oX194KSwgX19leHApOyB9DQoNCg0KDQoNCg0KDQogIGlubGluZSBsb25nIGRvdWJsZQ0K
ICBsZGV4cChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cCkNCiAgeyByZXR1cm4gOjpsZGV4cChz
dGF0aWNfY2FzdDxkb3VibGU+KF9feCksIF9fZXhwKTsgfQ0KDQoNCiAgdXNpbmcgOjpsb2c7DQoN
Cg0KDQoNCg0KICBpbmxpbmUgZmxvYXQgbG9nKGZsb2F0IF9feCkNCiAgeyByZXR1cm4gOjpsb2co
c3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBk
b3VibGUNCiAgbG9nKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpsb2coc3RhdGljX2Nhc3Q8
ZG91YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjpsb2cxMDsNCg0KDQoNCg0KDQogIGlubGlu
ZSBmbG9hdA0KICBsb2cxMChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6bG9nMTAoc3RhdGljX2Nhc3Q8
ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgbG9n
MTAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4o
X194KSk7IH0NCg0KDQogIHVzaW5nIDo6bW9kZjsNCg0KDQoNCg0KDQogIGlubGluZSBmbG9hdA0K
ICBtb2RmKGZsb2F0IF9feCwgZmxvYXQqIF9faXB0cikNCiAgew0KICAgIGRvdWJsZSBfX3RtcDsN
CiAgICBkb3VibGUgX19yZXMgPSA6Om1vZGYoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCAmX190
bXApOw0KICAgICpfX2lwdHIgPSBzdGF0aWNfY2FzdDxmbG9hdD4oX190bXApOw0KICAgIHJldHVy
biBfX3JlczsNCiAgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgbW9kZihs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlKiBfX2lwdHIpDQogIHsNCiAgICBkb3VibGUgX190
bXA7DQogICAgZG91YmxlIF9fcmVzID0gOjptb2RmKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwg
Jl9fdG1wKTsNCiAgICAqIF9faXB0ciA9IHN0YXRpY19jYXN0PGxvbmcgZG91YmxlPihfX3RtcCk7
DQogICAgcmV0dXJuIF9fcmVzOw0KICB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+DQog
ICAgaW5saW5lIF9UcA0KICAgIF9fcG93X2hlbHBlcihfVHAgX194LCBpbnQgX19uKQ0KICAgIHsN
CiAgICAgIHJldHVybiBfX24gPCAwDQogICAgICAgID8gX1RwKDEpL19fY21hdGhfcG93ZXIoX194
LCAtX19uKQ0KICAgICAgICA6IF9fY21hdGhfcG93ZXIoX194LCBfX24pOw0KICAgIH0NCg0KICB1
c2luZyA6OnBvdzsNCg0KDQoNCg0KDQogIGlubGluZSBmbG9hdA0KICBwb3coZmxvYXQgX194LCBm
bG9hdCBfX3kpDQogIHsgcmV0dXJuIDo6cG93KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihfX3kpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3Vi
bGUNCiAgcG93KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KQ0KICB7IHJldHVybiA6
OnBvdyhzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksIHN0YXRpY19jYXN0PGRvdWJsZT4oX195KSk7
IH0NCg0KDQogIGlubGluZSBkb3VibGUNCiAgcG93KGRvdWJsZSBfX3gsIGludCBfX2kpDQogIHsg
cmV0dXJuIF9fcG93X2hlbHBlcihfX3gsIF9faSk7IH0NCg0KICBpbmxpbmUgZmxvYXQNCiAgcG93
KGZsb2F0IF9feCwgaW50IF9fbikNCiAgeyByZXR1cm4gX19wb3dfaGVscGVyKF9feCwgX19uKTsg
fQ0KDQogIGlubGluZSBsb25nIGRvdWJsZQ0KICBwb3cobG9uZyBkb3VibGUgX194LCBpbnQgX19u
KQ0KICB7IHJldHVybiBfX3Bvd19oZWxwZXIoX194LCBfX24pOyB9DQoNCiAgdXNpbmcgOjpzaW47
DQoNCiAgaW5saW5lIGZsb2F0DQogIHNpbihmbG9hdCBfX3gpDQogIHsgcmV0dXJuIF9fYnVpbHRp
bl9zaW5mKF9feCk7IH0NCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgc2luKGxvbmcgZG91Ymxl
IF9feCkNCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmwoX194KTsgfQ0KDQogIHVzaW5nIDo6c2lu
aDsNCg0KDQoNCg0KDQogIGlubGluZSBmbG9hdA0KICBzaW5oKGZsb2F0IF9feCkgeyByZXR1cm4g
OjpzaW5oKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0NCg0KDQoNCg0KDQoNCiAgaW5saW5l
IGxvbmcgZG91YmxlDQogIHNpbmgobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnNpbmgoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjpzcXJ0Ow0KDQogIGlubGlu
ZSBmbG9hdA0KICBzcXJ0KGZsb2F0IF9feCkNCiAgeyByZXR1cm4gX19idWlsdGluX3NxcnRmKF9f
eCk7IH0NCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgc3FydChsb25nIGRvdWJsZSBfX3gpDQog
IHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0bChfX3gpOyB9DQoNCiAgdXNpbmcgOjp0YW47DQoNCg0K
DQoNCg0KICBpbmxpbmUgZmxvYXQNCiAgdGFuKGZsb2F0IF9feCkgeyByZXR1cm4gOjp0YW4oc3Rh
dGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3Vi
bGUNCiAgdGFuKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjp0YW4oc3RhdGljX2Nhc3Q8ZG91
YmxlPihfX3gpKTsgfQ0KDQoNCiAgdXNpbmcgOjp0YW5oOw0KDQoNCg0KDQoNCiAgaW5saW5lIGZs
b2F0DQogIHRhbmgoZmxvYXQgX194KSB7IHJldHVybiA6OnRhbmgoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfX3gpKTsgfQ0KDQoNCg0KDQoNCg0KICBpbmxpbmUgbG9uZyBkb3VibGUNCiAgdGFuaChsb25n
IGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6dGFuaChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9
DQoNCn0NCiMgNjYxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9jbWF0aCIgMw0K
IyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2NtYXRoLnRjYyIgMSAz
DQojIDM1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2NtYXRoLnRjYyIg
Mw0KbmFtZXNwYWNlIHN0ZA0Kew0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+DQogICAgX1RwDQog
ICAgX19jbWF0aF9wb3dlcihfVHAgX194LCB1bnNpZ25lZCBpbnQgX19uKQ0KICAgIHsNCiAgICAg
IF9UcCBfX3kgPSBfX24gJSAyID8gX194IDogMTsNCg0KICAgICAgd2hpbGUgKF9fbiA+Pj0gMSkN
CiAgICAgICAgew0KICAgICAgICAgIF9feCA9IF9feCAqIF9feDsNCiAgICAgICAgICBpZiAoX19u
ICUgMikNCiAgICAgICAgICAgIF9feSA9IF9feSAqIF9feDsNCiAgICAgICAgfQ0KDQogICAgICBy
ZXR1cm4gX195Ow0KICAgIH0NCn0NCiMgNjYyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9jbWF0aCIgMiAzDQojIDQyICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9i
aXRzL2xvY2FsZV9mYWNldHMudGNjIiAyIDMNCg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNs
dWRlL2crKy12My9saW1pdHMiIDEgMw0KIyA0NyAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvbGltaXRzIiAzDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
aTY4Ni1wYy1taW5ndzMyL2JpdHMvY3B1X2xpbWl0cy5oIiAxIDMNCiMgNDkgInQ6L21zeXMvMS4w
L21pbmd3L2luY2x1ZGUvZysrLXYzL2xpbWl0cyIgMiAzDQojIDg4NyAidDovbXN5cy8xLjAvbWlu
Z3cvaW5jbHVkZS9nKystdjMvbGltaXRzIiAzDQpuYW1lc3BhY2Ugc3RkDQp7DQogIGVudW0gZmxv
YXRfcm91bmRfc3R5bGUNCiAgew0KICAgIHJvdW5kX2luZGV0ZXJtaW5hdGUgPSAtMSwNCiAgICBy
b3VuZF90b3dhcmRfemVybyA9IDAsDQogICAgcm91bmRfdG9fbmVhcmVzdCA9IDEsDQogICAgcm91
bmRfdG93YXJkX2luZmluaXR5ID0gMiwNCiAgICByb3VuZF90b3dhcmRfbmVnX2luZmluaXR5ID0g
Mw0KICB9Ow0KDQogIGVudW0gZmxvYXRfZGVub3JtX3N0eWxlDQogIHsNCiAgICBkZW5vcm1faW5k
ZXRlcm1pbmF0ZSA9IC0xLA0KICAgIGRlbm9ybV9hYnNlbnQgPSAwLA0KICAgIGRlbm9ybV9wcmVz
ZW50ID0gMQ0KICB9Ow0KDQoNCg0KDQogIHN0cnVjdCBfX251bWVyaWNfbGltaXRzX2Jhc2UNCiAg
ew0KICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gZmFsc2U7DQoNCiAgICBz
dGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IDA7DQogICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMx
MCA9IDA7DQogICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gZmFsc2U7DQogICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX2V4YWN0ID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDA7DQoNCiAg
ICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9IDA7DQogICAgc3RhdGljIGNvbnN0IGlu
dCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQg
PSAwOw0KICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOw0KDQogICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWdu
YWxpbmdfTmFOID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBo
YXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVu
b3JtX2xvc3MgPSBmYWxzZTsNCg0KICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IGZh
bHNlOw0KICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSBmYWxzZTsNCiAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsNCg0KICAgIHN0YXRpYyBjb25zdCBib29s
IHRyYXBzID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0g
ZmFsc2U7DQogICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0g
cm91bmRfdG93YXJkX3plcm87DQogIH07DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPg0KICAg
IHN0cnVjdCBudW1lcmljX2xpbWl0cyA6IHB1YmxpYyBfX251bWVyaWNfbGltaXRzX2Jhc2UNCiAg
ICB7DQogICAgICBzdGF0aWMgX1RwIG1pbigpIHRocm93KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
X1RwPigwKTsgfQ0KICAgICAgc3RhdGljIF9UcCBtYXgoKSB0aHJvdygpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PF9UcD4oMCk7IH0NCiAgICAgIHN0YXRpYyBfVHAgZXBzaWxvbigpIHRocm93KCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsgfQ0KICAgICAgc3RhdGljIF9UcCByb3VuZF9lcnJv
cigpIHRocm93KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsgfQ0KICAgICAgc3RhdGlj
IF9UcCBpbmZpbml0eSgpIHRocm93KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsgfQ0K
ICAgICAgc3RhdGljIF9UcCBxdWlldF9OYU4oKSB0aHJvdygpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PF9UcD4oMCk7IH0NCiAgICAgIHN0YXRpYyBfVHAgc2lnbmFsaW5nX05hTigpIHRocm93KCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8X1RwPigwKTsgfQ0KICAgICAgc3RhdGljIF9UcCBkZW5vcm1fbWlu
KCkgdGhyb3coKSB7IHJldHVybiBzdGF0aWNfY2FzdDxfVHA+KDApOyB9DQogICAgfTsNCg0KDQoN
CiAgdGVtcGxhdGU8Pg0KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxib29sPg0KICAgIHsNCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3Rh
dGljIGJvb2wgbWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gZmFsc2U7IH0NCg0KICAgICAg
c3RhdGljIGJvb2wgbWF4KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gdHJ1ZTsgfQ0KDQogICAg
ICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IDE7DQogICAgICBzdGF0aWMgY29uc3QgaW50IGRp
Z2l0czEwID0gMDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNlOw0K
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7DQogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4
ID0gMjsNCiAgICAgIHN0YXRpYyBib29sIGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJldHVy
biBmYWxzZTsgfQ0KICAgICAgc3RhdGljIGJvb2wgcm91bmRfZXJyb3IoKSB0aHJvdygpDQogICAg
ICB7IHJldHVybiBmYWxzZTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVu
dCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsNCiAgICAg
IHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0gMDsNCiAgICAgIHN0YXRpYyBjb25zdCBp
bnQgbWF4X2V4cG9uZW50MTAgPSAwOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfaW5m
aW5pdHkgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSBm
YWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7
DQogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5v
cm1fYWJzZW50Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFs
c2U7DQoNCiAgICAgIHN0YXRpYyBib29sIGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1
cm4gZmFsc2U7IH0NCiAgICAgIHN0YXRpYyBib29sIHF1aWV0X05hTigpIHRocm93KCkNCiAgICAg
IHsgcmV0dXJuIGZhbHNlOyB9DQogICAgICBzdGF0aWMgYm9vbCBzaWduYWxpbmdfTmFOKCkgdGhy
b3coKQ0KICAgICAgeyByZXR1cm4gZmFsc2U7IH0NCiAgICAgIHN0YXRpYyBib29sIGRlbm9ybV9t
aW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBmYWxzZTsgfQ0KDQogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2Jv
dW5kZWQgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gZmFsc2U7
DQoNCg0KDQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZQ0KICAgICAgICAg
ICAgICAgfHwgdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxl
ID0gcm91bmRfdG93YXJkX3plcm87DQogICAgfTsNCg0KDQoNCiAgdGVtcGxhdGU8Pg0KICAgIHN0
cnVjdCBudW1lcmljX2xpbWl0czxjaGFyPg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGNoYXIgbWluKCkgdGhyb3co
KQ0KICAgICAgeyByZXR1cm4gKGNoYXIpKC0xMjcgLSAxKTsgfQ0KICAgICAgc3RhdGljIGNoYXIg
bWF4KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gKGNoYXIpMTI3OyB9DQoNCiAgICAgIHN0YXRp
YyBjb25zdCBpbnQgZGlnaXRzID0gNzsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAg
PSA3Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNfZXhhY3QgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7DQog
ICAgICBzdGF0aWMgY2hhciBlcHNpbG9uKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gY2hhcigp
OyB9DQogICAgICBzdGF0aWMgY2hhciByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsgcmV0
dXJuIGNoYXIoKTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9IDA7
DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsNCiAgICAgIHN0YXRp
YyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0gMDsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
X2V4cG9uZW50MTAgPSAwOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfaW5maW5pdHkg
PSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsN
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7DQogICAg
ICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5vcm1fYWJz
ZW50Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7DQoN
CiAgICAgIHN0YXRpYyBjaGFyIGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gY2hh
cigpOyB9DQogICAgICBzdGF0aWMgY2hhciBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7IHJl
dHVybiBjaGFyKCk7IH0NCiAgICAgIHN0YXRpYyBjaGFyIHNpZ25hbGluZ19OYU4oKSB0aHJvdygp
DQogICAgICB7IHJldHVybiBjaGFyKCk7IH0NCiAgICAgIHN0YXRpYyBjaGFyIGRlbm9ybV9taW4o
KSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPigwKTsgfQ0KDQogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9k
dWxvID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOw0KICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7DQogICAgICBzdGF0
aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVy
bzsNCiAgICB9Ow0KIyAxMDcxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9saW1p
dHMiIDMNCiAgdGVtcGxhdGU8Pg0KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxzaWduZWQgY2hh
cj4NCiAgICB7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7
DQoNCiAgICAgIHN0YXRpYyBzaWduZWQgY2hhciBtaW4oKSB0aHJvdygpDQogICAgICB7IHJldHVy
biAoLTEyNyAtIDEpOyB9DQogICAgICBzdGF0aWMgc2lnbmVkIGNoYXIgbWF4KCkgdGhyb3coKQ0K
ICAgICAgeyByZXR1cm4gMTI3OyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0g
NzsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAyOw0KICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2lu
dGVnZXIgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOw0K
ICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7DQogICAgICBzdGF0aWMgc2lnbmVkIGNo
YXIgZXBzaWxvbigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCiAgICAgIHN0YXRpYyBz
aWduZWQgY2hhciByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCg0K
ICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNv
bnN0IGludCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9l
eHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsN
Cg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7DQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZs
b2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0KDQogICAgICBzdGF0aWMgc2ln
bmVkIGNoYXIgaW5maW5pdHkoKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxz
aWduZWQgY2hhcj4oMCk7IH0NCiAgICAgIHN0YXRpYyBzaWduZWQgY2hhciBxdWlldF9OYU4oKSB0
aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oMCk7IH0NCiAg
ICAgIHN0YXRpYyBzaWduZWQgY2hhciBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KDApOyB9DQogICAgICBzdGF0aWMgc2lnbmVk
IGNoYXIgZGVub3JtX21pbigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNp
Z25lZCBjaGFyPigwKTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBm
YWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOw0KICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdHJhcHMgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVm
b3JlID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRf
c3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsNCiAgICB9Ow0KIyAxMTI4ICJ0Oi9tc3lzLzEuMC9t
aW5ndy9pbmNsdWRlL2crKy12My9saW1pdHMiIDMNCiAgdGVtcGxhdGU8Pg0KICAgIHN0cnVjdCBu
dW1lcmljX2xpbWl0czx1bnNpZ25lZCBjaGFyPg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIg
bWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMDsgfQ0KICAgICAgc3RhdGljIHVuc2lnbmVk
IGNoYXIgbWF4KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gKDEyNyAqIDIgKyAxKTsgfQ0KDQog
ICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IDg7DQogICAgICBzdGF0aWMgY29uc3QgaW50
IGRpZ2l0czEwID0gMjsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNl
Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7DQogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgaW50IHJh
ZGl4ID0gMjsNCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGVwc2lsb24oKSB0aHJvdygpDQog
ICAgICB7IHJldHVybiAwOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciByb3VuZF9lcnJv
cigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGlu
dCBtaW5fZXhwb25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQx
MCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7DQogICAgICBz
dGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsNCg0KICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNf
cXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5n
X05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNf
ZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5v
cm1fbG9zcyA9IGZhbHNlOw0KDQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBpbmZpbml0eSgp
IHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDApOyB9
DQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKTsgfQ0KICAgICAgc3RhdGljIHVu
c2lnbmVkIGNoYXIgc2lnbmFsaW5nX05hTigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KDApOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBk
ZW5vcm1fbWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oMCk7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsNCiAgICAgIHN0YXRp
YyBjb25zdCBib29sIGlzX21vZHVsbyA9IHRydWU7DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29s
IHRyYXBzID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxl
ID0gcm91bmRfdG93YXJkX3plcm87DQogICAgfTsNCg0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8Pg0K
ICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czx3Y2hhcl90Pg0KICAgIHsNCiAgICAgIHN0YXRpYyBj
b25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIHdjaGFyX3Qg
bWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gKHdjaGFyX3QpKC0yMTQ3NDgzNjQ3TCAtIDEp
OyB9DQogICAgICBzdGF0aWMgd2NoYXJfdCBtYXgoKSB0aHJvdygpDQogICAgICB7IHJldHVybiAo
d2NoYXJfdCkyMTQ3NDgzNjQ3TDsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9
IDMxOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9IDk7DQogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc19zaWduZWQgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNf
aW50ZWdlciA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7
DQogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMjsNCiAgICAgIHN0YXRpYyB3Y2hhcl90
IGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwOyB9DQogICAgICBzdGF0aWMgd2No
YXJfdCByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCg0KICAgICAg
c3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGlu
dCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVu
dCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsNCg0KICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7DQogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rl
bm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0KDQogICAgICBzdGF0aWMgd2NoYXJfdCBp
bmZpbml0eSgpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHdjaGFyX3QoKTsgfQ0KICAgICAgc3Rh
dGljIHdjaGFyX3QgcXVpZXRfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gd2NoYXJfdCgp
OyB9DQogICAgICBzdGF0aWMgd2NoYXJfdCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAg
eyByZXR1cm4gd2NoYXJfdCgpOyB9DQogICAgICBzdGF0aWMgd2NoYXJfdCBkZW5vcm1fbWluKCkg
dGhyb3coKQ0KICAgICAgeyByZXR1cm4gd2NoYXJfdCgpOyB9DQoNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2llYzU1OSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91
bmRlZCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSB0cnVlOw0K
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IHRydWU7DQogICAgICBzdGF0aWMgY29u
c3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBmbG9h
dF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOw0KICAgIH07DQoj
IDEyNDEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2xpbWl0cyIgMw0KICB0ZW1w
bGF0ZTw+DQogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHNob3J0Pg0KICAgIHsNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIHNo
b3J0IG1pbigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuICgtMzI3NjcgLSAxKTsgfQ0KICAgICAg
c3RhdGljIHNob3J0IG1heCgpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDMyNzY3OyB9DQoNCiAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gMTU7DQogICAgICBzdGF0aWMgY29uc3QgaW50
IGRpZ2l0czEwID0gNDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IHRydWU7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsNCiAgICAgIHN0YXRp
YyBjb25zdCBib29sIGlzX2V4YWN0ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFk
aXggPSAyOw0KICAgICAgc3RhdGljIHNob3J0IGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJl
dHVybiAwOyB9DQogICAgICBzdGF0aWMgc2hvcnQgcm91bmRfZXJyb3IoKSB0aHJvdygpDQogICAg
ICB7IHJldHVybiAwOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0g
MDsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSAwOw0KICAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBt
YXhfZXhwb25lbnQxMCA9IDA7DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0
eSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNl
Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsNCiAg
ICAgIHN0YXRpYyBjb25zdCBmbG9hdF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9h
YnNlbnQ7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsN
Cg0KICAgICAgc3RhdGljIHNob3J0IGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4g
c2hvcnQoKTsgfQ0KICAgICAgc3RhdGljIHNob3J0IHF1aWV0X05hTigpIHRocm93KCkNCiAgICAg
IHsgcmV0dXJuIHNob3J0KCk7IH0NCiAgICAgIHN0YXRpYyBzaG9ydCBzaWduYWxpbmdfTmFOKCkg
dGhyb3coKQ0KICAgICAgeyByZXR1cm4gc2hvcnQoKTsgfQ0KICAgICAgc3RhdGljIHNob3J0IGRl
bm9ybV9taW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzaG9ydCgpOyB9DQoNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc19ib3VuZGVkID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9
IHRydWU7DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNv
bnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87DQog
ICAgfTsNCiMgMTI5OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvbGltaXRzIiAz
DQogIHRlbXBsYXRlPD4NCiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+
DQogICAgew0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOw0K
DQogICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgbWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1
cm4gMDsgfQ0KICAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IG1heCgpIHRocm93KCkNCiAgICAg
IHsgcmV0dXJuICgzMjc2NyAqIDIgKyAxKTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IGRp
Z2l0cyA9IDE2Ow0KICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9IDQ7DQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX2ludGVnZXIgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3Qg
PSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7DQogICAgICBzdGF0aWMg
dW5zaWduZWQgc2hvcnQgZXBzaWxvbigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCiAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsg
cmV0dXJuIDA7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOw0K
ICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0aWMg
Y29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9l
eHBvbmVudDEwID0gMDsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0g
ZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQog
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAg
c3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2Vu
dDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0KDQog
ICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5maW5pdHkoKSB0aHJvdygpDQogICAgICB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMCk7IH0NCiAgICAgIHN0YXRpYyB1bnNp
Z25lZCBzaG9ydCBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBzaG9ydD4oMCk7IH0NCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzaWdu
YWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KDApOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGVub3JtX21pbigpIHRo
cm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigwKTsgfQ0K
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOw0KICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c19tb2R1bG8gPSB0cnVlOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IHRydWU7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsNCiAgICAg
IHN0YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2Fy
ZF96ZXJvOw0KICAgIH07DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPD4NCiAgICBzdHJ1Y3QgbnVt
ZXJpY19saW1pdHM8aW50Pg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNp
YWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGludCBtaW4oKSB0aHJvdygpDQogICAgICB7
IHJldHVybiAoaW50KSgtMjE0NzQ4MzY0N0wgLSAxKTsgfQ0KICAgICAgc3RhdGljIGludCBtYXgo
KSB0aHJvdygpDQogICAgICB7IHJldHVybiAoaW50KTIxNDc0ODM2NDdMOyB9DQoNCiAgICAgIHN0
YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gMzE7DQogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0
czEwID0gOTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IHRydWU7DQogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2V4YWN0ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAy
Ow0KICAgICAgc3RhdGljIGludCBlcHNpbG9uKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMDsg
fQ0KICAgICAgc3RhdGljIGludCByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJu
IDA7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOw0KICAgICAg
c3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0aWMgY29uc3Qg
aW50IG1heF9leHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVu
dDEwID0gMDsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGlj
IGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0KDQogICAgICBz
dGF0aWMgaW50IGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PigwKTsgfQ0KICAgICAgc3RhdGljIGludCBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9DQogICAgICBzdGF0aWMgaW50IHNpZ25hbGlu
Z19OYU4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KDApOyB9DQog
ICAgICBzdGF0aWMgaW50IGRlbm9ybV9taW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KDApOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9
IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19ib3VuZGVkID0gdHJ1ZTsNCiAgICAg
IHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IHRydWU7DQoNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIHRyYXBzID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2Jl
Zm9yZSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5k
X3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87DQogICAgfTsNCiMgMTQxMCAidDovbXN5cy8xLjAv
bWluZ3cvaW5jbHVkZS9nKystdjMvbGltaXRzIiAzDQogIHRlbXBsYXRlPD4NCiAgICBzdHJ1Y3Qg
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBt
aW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwOyB9DQogICAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGludCBtYXgoKSB0aHJvdygpDQogICAgICB7IHJldHVybiAodW5zaWduZWQpKDIxNDc0ODM2
NDdMICogMlUgKyAxKTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IDMyOw0K
ICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9IDk7DQogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc19zaWduZWQgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVn
ZXIgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOw0KICAg
ICAgc3RhdGljIGNvbnN0IGludCByYWRpeCA9IDI7DQogICAgICBzdGF0aWMgdW5zaWduZWQgaW50
IGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwOyB9DQogICAgICBzdGF0aWMgdW5z
aWduZWQgaW50IHJvdW5kX2Vycm9yKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMDsgfQ0KDQog
ICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29u
c3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4
cG9uZW50ID0gMDsNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOw0K
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfaW5maW5pdHkgPSBmYWxzZTsNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9OYU4gPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgZmxv
YXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5vcm1fYWJzZW50Ow0KICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2U7DQoNCiAgICAgIHN0YXRpYyB1bnNp
Z25lZCBpbnQgaW5maW5pdHkoKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KDApOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgaW50IHF1aWV0X05hTigp
IHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7IH0N
CiAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2lnbmFsaW5nX05hTigpIHRocm93KCkNCiAgICAg
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oMCk7IH0NCiAgICAgIHN0YXRpYyB1
bnNpZ25lZCBpbnQgZGVub3JtX21pbigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oMCk7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaWVj
NTU5ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOw0K
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsNCg0KICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5l
c3NfYmVmb3JlID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUg
cm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsNCiAgICB9Ow0KDQoNCg0KDQoNCg0KICB0
ZW1wbGF0ZTw+DQogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPGxvbmc+DQogICAgew0KICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOw0KDQogICAgICBzdGF0aWMg
bG9uZyBtaW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAoLTIxNDc0ODM2NDdMIC0gMSk7IH0N
CiAgICAgIHN0YXRpYyBsb25nIG1heCgpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDIxNDc0ODM2
NDdMOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gMzE7DQogICAgICBzdGF0
aWMgY29uc3QgaW50IGRpZ2l0czEwID0gOTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3Np
Z25lZCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gdHJ1ZTsN
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2V4YWN0ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgcmFkaXggPSAyOw0KICAgICAgc3RhdGljIGxvbmcgZXBzaWxvbigpIHRocm93KCkN
CiAgICAgIHsgcmV0dXJuIDA7IH0NCiAgICAgIHN0YXRpYyBsb25nIHJvdW5kX2Vycm9yKCkgdGhy
b3coKQ0KICAgICAgeyByZXR1cm4gMDsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9l
eHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0gMDsN
CiAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4X2V4cG9uZW50ID0gMDsNCiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbWF4X2V4cG9uZW50MTAgPSAwOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNfaW5maW5pdHkgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19xdWlldF9O
YU4gPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0g
ZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0g
PSBkZW5vcm1fYWJzZW50Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3Nz
ID0gZmFsc2U7DQoNCiAgICAgIHN0YXRpYyBsb25nIGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0NCiAgICAgIHN0YXRpYyBsb25nIHF1aWV0
X05hTigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KDApOyB9DQog
ICAgICBzdGF0aWMgbG9uZyBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8bG9uZz4oMCk7IH0NCiAgICAgIHN0YXRpYyBsb25nIGRlbm9ybV9taW4oKSB0
aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25nPigwKTsgfQ0KDQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNfYm91bmRlZCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8g
PSB0cnVlOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IHRydWU7DQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBj
b25zdCBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOw0K
ICAgIH07DQojIDE1MjIgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2xpbWl0cyIg
Mw0KICB0ZW1wbGF0ZTw+DQogICAgc3RydWN0IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+
DQogICAgew0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOw0K
DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtaW4oKSB0aHJvdygpDQogICAgICB7IHJldHVy
biAwOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYXgoKSB0aHJvdygpDQogICAgICB7
IHJldHVybiAoMjE0NzQ4MzY0N0wgKiAyVSArIDEpOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBp
bnQgZGlnaXRzID0gMzI7DQogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gOTsNCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19l
eGFjdCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMjsNCiAgICAgIHN0
YXRpYyB1bnNpZ25lZCBsb25nIGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwOyB9
DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyByb3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAg
IHsgcmV0dXJuIDA7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAw
Ow0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0
aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1h
eF9leHBvbmVudDEwID0gMDsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5
ID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAg
ICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fi
c2VudDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0K
DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBpbmZpbml0eSgpIHRocm93KCkNCiAgICAgIHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KDApOyB9DQogICAgICBzdGF0aWMgdW5z
aWduZWQgbG9uZyBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPigwKTsgfQ0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2lnbmFs
aW5nX05hTigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KDApOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBkZW5vcm1fbWluKCkgdGhyb3co
KQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oMCk7IH0NCg0KICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25z
dCBib29sIGlzX2JvdW5kZWQgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9k
dWxvID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdHJhcHMgPSB0cnVlOw0KICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7DQogICAgICBzdGF0
aWMgY29uc3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVy
bzsNCiAgICB9Ow0KDQoNCg0KDQoNCg0KICB0ZW1wbGF0ZTw+DQogICAgc3RydWN0IG51bWVyaWNf
bGltaXRzPGxvbmcgbG9uZz4NCiAgICB7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVj
aWFsaXplZCA9IHRydWU7DQoNCiAgICAgIHN0YXRpYyBsb25nIGxvbmcgbWluKCkgdGhyb3coKQ0K
ICAgICAgeyByZXR1cm4gKC05MjIzMzcyMDM2ODU0Nzc1ODA3TEwgLSAxKTsgfQ0KICAgICAgc3Rh
dGljIGxvbmcgbG9uZyBtYXgoKSB0aHJvdygpDQogICAgICB7IHJldHVybiA5MjIzMzcyMDM2ODU0
Nzc1ODA3TEw7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMgPSA2MzsNCiAgICAg
IHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAxODsNCiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGlzX3NpZ25lZCA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0g
dHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2V4YWN0ID0gdHJ1ZTsNCiAgICAgIHN0
YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOw0KICAgICAgc3RhdGljIGxvbmcgbG9uZyBlcHNpbG9u
KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMDsgfQ0KICAgICAgc3RhdGljIGxvbmcgbG9uZyBy
b3VuZF9lcnJvcigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCg0KICAgICAgc3RhdGlj
IGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5f
ZXhwb25lbnQxMCA9IDA7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDA7
DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsNCg0KICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNf
c2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9z
dHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc19kZW5vcm1fbG9zcyA9IGZhbHNlOw0KDQogICAgICBzdGF0aWMgbG9uZyBsb25nIGluZmlu
aXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigwKTsg
fQ0KICAgICAgc3RhdGljIGxvbmcgbG9uZyBxdWlldF9OYU4oKSB0aHJvdygpDQogICAgICB7IHJl
dHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDApOyB9DQogICAgICBzdGF0aWMgbG9uZyBsb25n
IHNpZ25hbGluZ19OYU4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KDApOyB9DQogICAgICBzdGF0aWMgbG9uZyBsb25nIGRlbm9ybV9taW4oKSB0aHJvdygp
DQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDApOyB9DQoNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc19ib3VuZGVkID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9
IHRydWU7DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRyYXBzID0gdHJ1ZTsNCiAgICAgIHN0
YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNv
bnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG93YXJkX3plcm87DQog
ICAgfTsNCiMgMTYzNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvbGltaXRzIiAz
DQogIHRlbXBsYXRlPD4NCiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZyBs
b25nPg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNpYWxpemVkID0gdHJ1
ZTsNCg0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBtaW4oKSB0aHJvdygpDQogICAg
ICB7IHJldHVybiAwOyB9DQogICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG1heCgpIHRo
cm93KCkNCiAgICAgIHsgcmV0dXJuICg5MjIzMzcyMDM2ODU0Nzc1ODA3TEwgKiAyVUxMICsgMSk7
IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMgPSA2NDsNCiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgZGlnaXRzMTAgPSAxOTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25l
ZCA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHRydWU7DQog
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IHRydWU7DQogICAgICBzdGF0aWMgY29u
c3QgaW50IHJhZGl4ID0gMjsNCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZXBzaWxv
bigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDA7IH0NCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBs
b25nIGxvbmcgcm91bmRfZXJyb3IoKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwOyB9DQoNCiAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50ID0gMDsNCiAgICAgIHN0YXRpYyBjb25z
dCBpbnQgbWluX2V4cG9uZW50MTAgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhw
b25lbnQgPSAwOw0KICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDA7DQoN
CiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOw0KICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBmbG9h
dF9kZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7DQogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsNCg0KICAgICAgc3RhdGljIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbmZpbml0eSgpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oMCk7IH0NCiAgICAgIHN0YXRpYyB1bnNpZ25lZCBsb25n
IGxvbmcgcXVpZXRfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPigwKTsgfQ0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBz
aWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPigwKTsgfQ0KICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBkZW5v
cm1fbWluKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPigwKTsgfQ0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVl
Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7DQogICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSB0cnVlOw0KDQogICAgICBzdGF0aWMgY29uc3QgYm9v
bCB0cmFwcyA9IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUg
PSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHls
ZSA9IHJvdW5kX3Rvd2FyZF96ZXJvOw0KICAgIH07DQoNCg0KDQoNCg0KDQogIHRlbXBsYXRlPD4N
CiAgICBzdHJ1Y3QgbnVtZXJpY19saW1pdHM8ZmxvYXQ+DQogICAgew0KICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOw0KDQogICAgICBzdGF0aWMgZmxvYXQgbWlu
KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMS4xNzU0OTQzNWUtMzhGOyB9DQogICAgICBzdGF0
aWMgZmxvYXQgbWF4KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMy40MDI4MjM0N2UrMzhGOyB9
DQoNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gMjQ7DQogICAgICBzdGF0aWMgY29u
c3QgaW50IGRpZ2l0czEwID0gNjsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9
IHRydWU7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7DQogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19leGFjdCA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0
IGludCByYWRpeCA9IDI7DQogICAgICBzdGF0aWMgZmxvYXQgZXBzaWxvbigpIHRocm93KCkNCiAg
ICAgIHsgcmV0dXJuIDEuMTkyMDkyOTBlLTA3RjsgfQ0KICAgICAgc3RhdGljIGZsb2F0IHJvdW5k
X2Vycm9yKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMS4wRjsgfQ0KDQogICAgICBzdGF0aWMg
Y29uc3QgaW50IG1pbl9leHBvbmVudCA9IC0xMjU7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1p
bl9leHBvbmVudDEwID0gLTM3Ow0KICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQg
PSAxMjg7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMzg7DQoNCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOw0KICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBmbG9hdF9k
ZW5vcm1fc3R5bGUgaGFzX2Rlbm9ybSA9IGRlbm9ybV9hYnNlbnQ7DQogICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZTsNCg0KICAgICAgc3RhdGljIGZsb2F0IGlu
ZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMC4wRjsgfQ0KICAgICAgc3RhdGljIGZs
b2F0IHF1aWV0X05hTigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDAuMEY7IH0NCiAgICAgIHN0
YXRpYyBmbG9hdCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMC4wRjsg
fQ0KICAgICAgc3RhdGljIGZsb2F0IGRlbm9ybV9taW4oKSB0aHJvdygpDQogICAgICB7IHJldHVy
biAwLjBGOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOw0K
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7DQogICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dHJhcHMgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9
IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxl
ID0gcm91bmRfdG93YXJkX3plcm87DQogICAgfTsNCiMgMTc2NSAidDovbXN5cy8xLjAvbWluZ3cv
aW5jbHVkZS9nKystdjMvbGltaXRzIiAzDQogIHRlbXBsYXRlPD4NCiAgICBzdHJ1Y3QgbnVtZXJp
Y19saW1pdHM8ZG91YmxlPg0KICAgIHsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NwZWNp
YWxpemVkID0gdHJ1ZTsNCg0KICAgICAgc3RhdGljIGRvdWJsZSBtaW4oKSB0aHJvdygpDQogICAg
ICB7IHJldHVybiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODsgfQ0KICAgICAgc3RhdGljIGRvdWJs
ZSBtYXgoKSB0aHJvdygpDQogICAgICB7IHJldHVybiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODsg
fQ0KDQogICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0cyA9IDUzOw0KICAgICAgc3RhdGljIGNv
bnN0IGludCBkaWdpdHMxMCA9IDE1Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVk
ID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSBmYWxzZTsNCiAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2V4YWN0ID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29u
c3QgaW50IHJhZGl4ID0gMjsNCiAgICAgIHN0YXRpYyBkb3VibGUgZXBzaWxvbigpIHRocm93KCkN
CiAgICAgIHsgcmV0dXJuIDIuMjIwNDQ2MDQ5MjUwMzEzMWUtMTY7IH0NCiAgICAgIHN0YXRpYyBk
b3VibGUgcm91bmRfZXJyb3IoKSB0aHJvdygpDQogICAgICB7IHJldHVybiAxLjA7IH0NCg0KICAg
ICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhwb25lbnQgPSAtMTAyMTsNCiAgICAgIHN0YXRpYyBj
b25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSAtMzA3Ow0KICAgICAgc3RhdGljIGNvbnN0IGludCBt
YXhfZXhwb25lbnQgPSAxMDI0Ow0KICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQx
MCA9IDMwODsNCg0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2luZmluaXR5ID0gZmFsc2U7
DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFOID0gZmFsc2U7DQogICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNfc2lnbmFsaW5nX05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGlj
IGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0NCiAgICAgICAgICAgICAgZGVu
b3JtX2Fic2VudDsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc19kZW5vcm1fbG9zcyA9IGZh
bHNlOw0KDQogICAgICBzdGF0aWMgZG91YmxlIGluZmluaXR5KCkgdGhyb3coKQ0KICAgICAgeyBy
ZXR1cm4gMC4wOyB9DQogICAgICBzdGF0aWMgZG91YmxlIHF1aWV0X05hTigpIHRocm93KCkNCiAg
ICAgIHsgcmV0dXJuIDAuMDsgfQ0KICAgICAgc3RhdGljIGRvdWJsZSBzaWduYWxpbmdfTmFOKCkg
dGhyb3coKQ0KICAgICAgeyByZXR1cm4gMC4wOyB9DQogICAgICBzdGF0aWMgZG91YmxlIGRlbm9y
bV9taW4oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAwLjA7IH0NCg0KICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNfaWVjNTU5ID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19i
b3VuZGVkID0gdHJ1ZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX21vZHVsbyA9IGZhbHNl
Ow0KDQogICAgICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyA9IGZhbHNlOw0KICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgdGlueW5lc3NfYmVmb3JlID0gZmFsc2U7DQogICAgICBzdGF0aWMgY29uc3Qg
ZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPQ0KICAgICAgICAgICAgICByb3VuZF90b3dh
cmRfemVybzsNCiAgICB9Ow0KIyAxODQ0ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9saW1pdHMiIDMNCiAgdGVtcGxhdGU8Pg0KICAgIHN0cnVjdCBudW1lcmljX2xpbWl0czxsb25n
IGRvdWJsZT4NCiAgICB7DQogICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVjaWFsaXplZCA9
IHRydWU7DQoNCiAgICAgIHN0YXRpYyBsb25nIGRvdWJsZSBtaW4oKSB0aHJvdygpDQogICAgICB7
IHJldHVybiAzLjM2MjEwMzE0MzExMjA5MzUwNjI2ZS00OTMyTDsgfQ0KICAgICAgc3RhdGljIGxv
bmcgZG91YmxlIG1heCgpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDEuMTg5NzMxNDk1MzU3MjMx
NzY1MDJlKzQ5MzJMOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzID0gNjQ7DQog
ICAgICBzdGF0aWMgY29uc3QgaW50IGRpZ2l0czEwID0gMTg7DQogICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc19zaWduZWQgPSB0cnVlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdl
ciA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSBmYWxzZTsNCiAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgcmFkaXggPSAyOw0KICAgICAgc3RhdGljIGxvbmcgZG91Ymxl
IGVwc2lsb24oKSB0aHJvdygpDQogICAgICB7IHJldHVybiAxLjA4NDIwMjE3MjQ4NTUwNDQzNDAx
ZS0xOUw7IH0NCiAgICAgIHN0YXRpYyBsb25nIGRvdWJsZSByb3VuZF9lcnJvcigpIHRocm93KCkN
CiAgICAgIHsgcmV0dXJuIDEuMEw7IH0NCg0KICAgICAgc3RhdGljIGNvbnN0IGludCBtaW5fZXhw
b25lbnQgPSAtMTYzODE7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudDEwID0g
LTQ5MzE7DQogICAgICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCA9IDE2Mzg0Ow0KICAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQxMCA9IDQ5MzI7DQoNCiAgICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc19pbmZpbml0eSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzX3F1aWV0X05hTiA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3Np
Z25hbGluZ19OYU4gPQ0KICAgICAgICAgICAgICAgIGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0
IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0NCiAgICAgICAgICAgICAgICBkZW5vcm1f
YWJzZW50Ow0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX2Rlbm9ybV9sb3NzID0NCiAgICAg
ICAgICAgICAgICBmYWxzZTsNCg0KICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGluZmluaXR5KCkg
dGhyb3coKQ0KICAgICAgeyByZXR1cm4gMC4wTDsgfQ0KICAgICAgc3RhdGljIGxvbmcgZG91Ymxl
IHF1aWV0X05hTigpIHRocm93KCkNCiAgICAgIHsgcmV0dXJuIDAuMEw7IH0NCiAgICAgIHN0YXRp
YyBsb25nIGRvdWJsZSBzaWduYWxpbmdfTmFOKCkgdGhyb3coKQ0KICAgICAgeyByZXR1cm4gMC4w
TDsgfQ0KICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGRlbm9ybV9taW4oKSB0aHJvdygpDQogICAg
ICB7IHJldHVybiAwLjBMOyB9DQoNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSA9
IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7DQogICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc19tb2R1bG8gPSBmYWxzZTsNCg0KICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdHJhcHMgPSBmYWxzZTsNCiAgICAgIHN0YXRpYyBjb25zdCBib29sIHRpbnluZXNz
X2JlZm9yZSA9IGZhbHNlOw0KICAgICAgc3RhdGljIGNvbnN0IGZsb2F0X3JvdW5kX3N0eWxlIHJv
dW5kX3N0eWxlID0NCiAgICAgICAgcm91bmRfdG93YXJkX3plcm87DQogICAgfTsNCiMgMTkyNCAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvbGltaXRzIiAzDQp9DQojIDQ0ICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAyIDMN
Cg0KIyAxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My90eXBlaW5mbyIgMSAzDQoj
IDQwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My90eXBlaW5mbyIgMw0KZXh0ZXJu
ICJDKysiIHsNCg0KbmFtZXNwYWNlIF9fY3h4YWJpdjENCnsNCiAgY2xhc3MgX19jbGFzc190eXBl
X2luZm87DQp9DQojIDU1ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My90eXBlaW5m
byIgMw0KbmFtZXNwYWNlIHN0ZA0Kew0KDQoNCg0KICBjbGFzcyB0eXBlX2luZm8NCiAgew0KICBw
dWJsaWM6DQoNCg0KDQoNCiAgICB2aXJ0dWFsIH50eXBlX2luZm8oKTsNCg0KICBwcml2YXRlOg0K
DQogICAgdHlwZV9pbmZvJiBvcGVyYXRvcj0oY29uc3QgdHlwZV9pbmZvJik7DQogICAgdHlwZV9p
bmZvKGNvbnN0IHR5cGVfaW5mbyYpOw0KDQogIHByb3RlY3RlZDoNCiAgICBjb25zdCBjaGFyICpf
X25hbWU7DQoNCiAgcHJvdGVjdGVkOg0KICAgIGV4cGxpY2l0IHR5cGVfaW5mbyhjb25zdCBjaGFy
ICpfX24pOiBfX25hbWUoX19uKSB7IH0NCg0KICBwdWJsaWM6DQoNCg0KDQogICAgY29uc3QgY2hh
ciogbmFtZSgpIGNvbnN0DQogICAgeyByZXR1cm4gX19uYW1lOyB9DQojIDk4ICJ0Oi9tc3lzLzEu
MC9taW5ndy9pbmNsdWRlL2crKy12My90eXBlaW5mbyIgMw0KICAgIGJvb2wgYmVmb3JlKGNvbnN0
IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0DQogICAgeyByZXR1cm4gX19uYW1lIDwgX19hcmcuX19u
YW1lOyB9DQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0
DQogICAgeyByZXR1cm4gX19uYW1lID09IF9fYXJnLl9fbmFtZTsgfQ0KDQogICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0DQogICAgeyByZXR1cm4gIW9wZXJh
dG9yPT0oX19hcmcpOyB9DQoNCg0KICBwdWJsaWM6DQoNCiAgICB2aXJ0dWFsIGJvb2wgX19pc19w
b2ludGVyX3AoKSBjb25zdDsNCg0KICAgIHZpcnR1YWwgYm9vbCBfX2lzX2Z1bmN0aW9uX3AoKSBj
b25zdDsNCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBfX2RvX2NhdGNoKGNvbnN0IHR5
cGVfaW5mbyAqX190aHJfdHlwZSwgdm9pZCAqKl9fdGhyX29iaiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBfX291dGVyKSBjb25zdDsNCg0KDQogICAgdmlydHVhbCBib29s
IF9fZG9fdXBjYXN0KGNvbnN0IF9fY3h4YWJpdjE6Ol9fY2xhc3NfdHlwZV9pbmZvICpfX3Rhcmdl
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKl9fb2JqX3B0cikgY29uc3Q7
DQogIH07DQoNCg0KDQogIGNsYXNzIGJhZF9jYXN0IDogcHVibGljIGV4Y2VwdGlvbg0KICB7DQog
IHB1YmxpYzoNCiAgICBiYWRfY2FzdCgpIHRocm93KCkgeyB9DQoNCg0KICAgIHZpcnR1YWwgfmJh
ZF9jYXN0KCkgdGhyb3coKTsNCiAgfTsNCg0KDQogIGNsYXNzIGJhZF90eXBlaWQgOiBwdWJsaWMg
ZXhjZXB0aW9uDQogIHsNCiAgcHVibGljOg0KICAgIGJhZF90eXBlaWQgKCkgdGhyb3coKSB7IH0N
Cg0KDQogICAgdmlydHVhbCB+YmFkX3R5cGVpZCgpIHRocm93KCk7DQogIH07DQp9DQoNCn0NCiMg
NDYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy50
Y2MiIDIgMw0KDQpuYW1lc3BhY2Ugc3RkDQp7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4N
CiAgICBsb2NhbGUNCiAgICBsb2NhbGU6OmNvbWJpbmUoY29uc3QgbG9jYWxlJiBfX290aGVyKSBj
b25zdA0KICAgIHsNCiAgICAgIF9JbXBsKiBfX3RtcCA9IG5ldyBfSW1wbCgqX01faW1wbCwgMSk7
DQogICAgICBfX3RtcC0+X01fcmVwbGFjZV9mYWNldChfX290aGVyLl9NX2ltcGwsICZfRmFjZXQ6
OmlkKTsNCiAgICAgIHJldHVybiBsb2NhbGUoX190bXApOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4NCiAgICBi
b29sDQogICAgbG9jYWxlOjpvcGVyYXRvcigpKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U
cmFpdHMsIF9BbGxvYz4mIF9fczEsDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fczIpIGNvbnN0DQogICAgew0KICAg
ICAgdHlwZWRlZiBzdGQ6OmNvbGxhdGU8X0NoYXJUPiBfX2NvbGxhdGVfdHlwZTsNCiAgICAgIGNv
bnN0IF9fY29sbGF0ZV90eXBlJiBfX2NvbGxhdGUgPSB1c2VfZmFjZXQ8X19jb2xsYXRlX3R5cGU+
KCp0aGlzKTsNCiAgICAgIHJldHVybiAoX19jb2xsYXRlLmNvbXBhcmUoX19zMS5kYXRhKCksIF9f
czEuZGF0YSgpICsgX19zMS5sZW5ndGgoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMi5kYXRhKCksIF9fczIuZGF0YSgpICsgX19zMi5sZW5ndGgoKSkgPCAwKTsNCiAgICB9
DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0Pg0KICAgIGNvbnN0IF9GYWNldCYNCiAgICB1
c2VfZmFjZXQoY29uc3QgbG9jYWxlJiBfX2xvYykNCiAgICB7DQogICAgICBzaXplX3QgX19pID0g
X0ZhY2V0OjppZC5fTV9pZCgpOw0KICAgICAgbG9jYWxlOjpmYWNldCoqIF9fZmFjZXRzID0gX19s
b2MuX01faW1wbC0+X01fZmFjZXRzOw0KICAgICAgaWYgKCEoX19pIDwgX19sb2MuX01faW1wbC0+
X01fZmFjZXRzX3NpemUgJiYgX19mYWNldHNbX19pXSkpDQogICAgICAgIF9fdGhyb3dfYmFkX2Nh
c3QoKTsNCiAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQmPigqX19mYWNldHNb
X19pXSk7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4NCiAgICBib29sDQog
ICAgaGFzX2ZhY2V0KGNvbnN0IGxvY2FsZSYgX19sb2MpIHRocm93KCkNCiAgICB7DQogICAgICBz
aXplX3QgX19pID0gX0ZhY2V0OjppZC5fTV9pZCgpOw0KICAgICAgbG9jYWxlOjpmYWNldCoqIF9f
ZmFjZXRzID0gX19sb2MuX01faW1wbC0+X01fZmFjZXRzOw0KICAgICAgcmV0dXJuIChfX2kgPCBf
X2xvYy5fTV9pbXBsLT5fTV9mYWNldHNfc2l6ZSAmJiBfX2ZhY2V0c1tfX2ldKTsNCiAgICB9DQoN
Cg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBf
SW5JdGVyDQogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBfTV9leHRyYWN0X2Zs
b2F0KF9Jbkl0ZXIgX19iZWcsIF9Jbkl0ZXIgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAg
ICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBzdHJpbmcmIF9feHRyYykg
Y29uc3QNCiAgICB7DQogICAgICBjb25zdCBsb2NhbGUgX19sb2MgPSBfX2lvLmdldGxvYygpOw0K
ICAgICAgY29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hh
clQ+ID4oX19sb2MpOw0KICAgICAgY29uc3QgbnVtcHVuY3Q8X0NoYXJUPiYgX19ucCA9IHVzZV9m
YWNldDxudW1wdW5jdDxfQ2hhclQ+ID4oX19sb2MpOw0KDQoNCiAgICAgIGNvbnN0IGNoYXJfdHlw
ZSBfX3BsdXMgPSBfX2N0eXBlLndpZGVuKCcrJyk7DQogICAgICBjb25zdCBjaGFyX3R5cGUgX19t
aW51cyA9IF9fY3R5cGUud2lkZW4oJy0nKTsNCiAgICAgIGludCBfX3BvcyA9IDA7DQogICAgICBj
aGFyX3R5cGUgX19jID0gKl9fYmVnOw0KICAgICAgaWYgKChfX2MgPT0gX19wbHVzIHx8IF9fYyA9
PSBfX21pbnVzKSAmJiBfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAgew0KICAgICAgICAgIF9feHRy
YyArPSBfX2N0eXBlLm5hcnJvdyhfX2MsIGNoYXIoKSk7DQogICAgICAgICAgKytfX3BvczsNCiAg
ICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICB9DQoNCg0KICAgICAgY29uc3QgY2hh
cl90eXBlIF9femVybyA9IF9fY3R5cGUud2lkZW4oX1NfYXRvbXNbX01femVyb10pOw0KICAgICAg
Ym9vbCBfX2ZvdW5kX3plcm8gPSBmYWxzZTsNCiAgICAgIHdoaWxlIChfX2MgPT0gX196ZXJvICYm
IF9fYmVnICE9IF9fZW5kKQ0KICAgICAgICB7DQogICAgICAgICAgX19jID0gKigrK19fYmVnKTsN
CiAgICAgICAgICBfX2ZvdW5kX3plcm8gPSB0cnVlOw0KICAgICAgICB9DQogICAgICBpZiAoX19m
b3VuZF96ZXJvKQ0KICAgICAgICB7DQogICAgICAgICAgX194dHJjICs9IF9TX2F0b21zW19NX3pl
cm9dOw0KICAgICAgICAgICsrX19wb3M7DQogICAgICAgIH0NCg0KDQogICAgICBjb25zdCBzaXpl
X3QgX19sZW4gPSBfTV9FIC0gX01femVybyArIDE7DQogICAgICBjaGFyX3R5cGUgX193YXRvbXNb
X19sZW5dOw0KICAgICAgX19jdHlwZS53aWRlbihfU19hdG9tcywgX1NfYXRvbXMgKyBfX2xlbiwg
X193YXRvbXMpOw0KICAgICAgYm9vbCBfX2ZvdW5kX2RlYyA9IGZhbHNlOw0KICAgICAgYm9vbCBf
X2ZvdW5kX3NjaSA9IGZhbHNlOw0KICAgICAgY29uc3QgY2hhcl90eXBlIF9fZGVjID0gX19ucC5k
ZWNpbWFsX3BvaW50KCk7DQoNCiAgICAgIHN0cmluZyBfX2ZvdW5kX2dyb3VwaW5nOw0KICAgICAg
Y29uc3Qgc3RyaW5nIF9fZ3JvdXBpbmcgPSBfX25wLmdyb3VwaW5nKCk7DQogICAgICBib29sIF9f
Y2hlY2tfZ3JvdXBpbmcgPSBfX2dyb3VwaW5nLnNpemUoKTsNCiAgICAgIGludCBfX3NlcF9wb3Mg
PSAwOw0KICAgICAgY29uc3QgY2hhcl90eXBlIF9fc2VwID0gX19ucC50aG91c2FuZHNfc2VwKCk7
DQoNCiAgICAgIHdoaWxlIChfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAgew0KDQogICAgICAgICAg
dHlwZWRlZiBjaGFyX3RyYWl0czxfQ2hhclQ+IF9fdHJhaXRzX3R5cGU7DQogICAgICAgICAgY29u
c3QgY2hhcl90eXBlKiBfX3AgPSBfX3RyYWl0c190eXBlOjpmaW5kKF9fd2F0b21zLCAxMCwgX19j
KTsNCg0KDQogICAgICAgICAgaWYgKF9fcCAmJiBfX2MpDQogICAgICAgICAgICB7DQoNCiAgICAg
ICAgICAgICAgKytfX3BvczsNCiAgICAgICAgICAgICAgX194dHJjICs9IF9TX2F0b21zW19fcCAt
IF9fd2F0b21zXTsNCiAgICAgICAgICAgICAgKytfX3NlcF9wb3M7DQogICAgICAgICAgICAgIF9f
YyA9ICooKytfX2JlZyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoX19jID09
IF9fc2VwICYmIF9fY2hlY2tfZ3JvdXBpbmcgJiYgIV9fZm91bmRfZGVjKQ0KICAgICAgICAgICAg
ew0KDQoNCiAgICAgICAgICAgICAgaWYgKF9fc2VwX3BvcykNCiAgICAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgICAgICBfX2ZvdW5kX2dyb3VwaW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9f
c2VwX3Bvcyk7DQogICAgICAgICAgICAgICAgICBfX3NlcF9wb3MgPSAwOw0KICAgICAgICAgICAg
ICAgICAgX19jID0gKigrK19fYmVnKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
IGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3Nf
YmFzZTo6ZmFpbGJpdDsNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmIChfX2MgPT0gX19kZWMgJiYgIV9f
Zm91bmRfZGVjKQ0KICAgICAgICAgICAgew0KDQoNCg0KICAgICAgICAgICAgICBpZiAoX19mb3Vu
ZF9ncm91cGluZy5zaXplKCkpDQogICAgICAgICAgICAgICAgX19mb3VuZF9ncm91cGluZyArPSBz
dGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOw0KICAgICAgICAgICAgICArK19fcG9zOw0KICAg
ICAgICAgICAgICBfX3h0cmMgKz0gJy4nOw0KICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcp
Ow0KICAgICAgICAgICAgICBfX2ZvdW5kX2RlYyA9IHRydWU7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgZWxzZSBpZiAoKF9fYyA9PSBfX3dhdG9tc1tfTV9lXSB8fCBfX2MgPT0gX193YXRvbXNb
X01fRV0pDQogICAgICAgICAgICAgICAgICAgJiYgIV9fZm91bmRfc2NpICYmIF9fcG9zKQ0KICAg
ICAgICAgICAgew0KDQogICAgICAgICAgICAgICsrX19wb3M7DQogICAgICAgICAgICAgIF9feHRy
YyArPSBfX2N0eXBlLm5hcnJvdyhfX2MsIGNoYXIoKSk7DQogICAgICAgICAgICAgIF9fYyA9ICoo
KytfX2JlZyk7DQoNCg0KICAgICAgICAgICAgICBpZiAoX19jID09IF9fcGx1cyB8fCBfX2MgPT0g
X19taW51cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICArK19fcG9zOw0K
ICAgICAgICAgICAgICAgICAgX194dHJjICs9IF9fY3R5cGUubmFycm93KF9fYywgY2hhcigpKTsN
CiAgICAgICAgICAgICAgICAgIF9fYyA9ICooKytfX2JlZyk7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICBfX2ZvdW5kX3NjaSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgZWxzZQ0KDQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KDQoNCg0KICAgICAgaWYg
KF9fY2hlY2tfZ3JvdXBpbmcgJiYgX19mb3VuZF9ncm91cGluZy5zaXplKCkpDQogICAgICAgIHsN
Cg0KICAgICAgICAgIGlmICghX19mb3VuZF9kZWMpDQogICAgICAgICAgICBfX2ZvdW5kX2dyb3Vw
aW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7DQogICAgICAgICAgaWYgKCFfX3Zl
cmlmeV9ncm91cGluZyhfX2dyb3VwaW5nLCBfX2ZvdW5kX2dyb3VwaW5nKSkNCiAgICAgICAgICAg
IF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAgICB9DQoNCg0KICAgICAgX194dHJj
ICs9IGNoYXIoKTsNCiAgICAgIGlmIChfX2JlZyA9PSBfX2VuZCkNCiAgICAgICAgX19lcnIgfD0g
aW9zX2Jhc2U6OmVvZmJpdDsNCiAgICAgIHJldHVybiBfX2JlZzsNCiAgICB9DQoNCg0KICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgX0luSXRlcg0KICAg
IG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6DQogICAgX01fZXh0cmFjdF9pbnQoX0luSXRlciBf
X2JlZywgX0luSXRlciBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgICAgICAgICAg
aW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBzdHJpbmcmIF9feHRyYywgaW50JiBfX2Jhc2UpIGNv
bnN0DQogICAgew0KICAgICAgY29uc3QgbG9jYWxlIF9fbG9jID0gX19pby5nZXRsb2MoKTsNCiAg
ICAgIGNvbnN0IGN0eXBlPF9DaGFyVD4mIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJU
PiA+KF9fbG9jKTsNCiAgICAgIGNvbnN0IG51bXB1bmN0PF9DaGFyVD4mIF9fbnAgPSB1c2VfZmFj
ZXQ8bnVtcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsNCg0KDQogICAgICBpb3NfYmFzZTo6Zm10Zmxh
Z3MgX19iYXNlZmllbGQgPSBfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6YmFzZWZpZWxkOw0KICAg
ICAgaWYgKF9fYmFzZWZpZWxkID09IGlvc19iYXNlOjpvY3QpDQogICAgICAgIF9fYmFzZSA9IDg7
DQogICAgICBlbHNlIGlmIChfX2Jhc2VmaWVsZCA9PSBpb3NfYmFzZTo6aGV4KQ0KICAgICAgICBf
X2Jhc2UgPSAxNjsNCiAgICAgIGVsc2UNCiAgICAgICAgX19iYXNlID0gMTA7DQoNCg0KICAgICAg
aW50IF9fcG9zID0gMDsNCiAgICAgIGNoYXJfdHlwZSBfX2MgPSAqX19iZWc7DQogICAgICBpZiAo
KF9fYyA9PSBfX2N0eXBlLndpZGVuKCcrJykgfHwgX19jID09IF9fY3R5cGUud2lkZW4oJy0nKSkN
CiAgICAgICAgICAmJiBfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAgew0KICAgICAgICAgIF9feHRy
YyArPSBfX2N0eXBlLm5hcnJvdyhfX2MsIGNoYXIoKSk7DQogICAgICAgICAgKytfX3BvczsNCiAg
ICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICB9DQoNCg0KICAgICAgY29uc3QgY2hh
cl90eXBlIF9femVybyA9IF9fY3R5cGUud2lkZW4oX1NfYXRvbXNbX01femVyb10pOw0KICAgICAg
Y29uc3QgY2hhcl90eXBlIF9feCA9IF9fY3R5cGUud2lkZW4oJ3gnKTsNCiAgICAgIGNvbnN0IGNo
YXJfdHlwZSBfX1ggPSBfX2N0eXBlLndpZGVuKCdYJyk7DQogICAgICBpZiAoX19iYXNlID09IDEw
KQ0KICAgICAgICB7DQogICAgICAgICAgYm9vbCBfX2ZvdW5kX3plcm8gPSBmYWxzZTsNCiAgICAg
ICAgICB3aGlsZSAoX19jID09IF9femVybyAmJiBfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgX19jID0gKigrK19fYmVnKTsNCiAgICAgICAgICAgICAgX19mb3Vu
ZF96ZXJvID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoX19mb3VuZF96ZXJv
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBfX3h0cmMgKz0gX1NfYXRvbXNbX01femVy
b107DQogICAgICAgICAgICAgICsrX19wb3M7DQogICAgICAgICAgICAgIGlmIChfX2Jhc2VmaWVs
ZCA9PSAwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIGlmICgoX19jID09
IF9feCB8fCBfX2MgPT0gX19YKSAmJiBfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgIF9feHRyYyArPSBfX2N0eXBlLm5hcnJvdyhfX2Ms
IGNoYXIoKSk7DQogICAgICAgICAgICAgICAgICAgICAgKytfX3BvczsNCiAgICAgICAgICAgICAg
ICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICAgICAgICAgICAgICAgIF9fYmFzZSA9
IDE2Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgICAgIF9fYmFzZSA9IDg7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgICBlbHNlIGlmIChfX2Jhc2UgPT0gMTYpDQogICAgICAgIHsN
CiAgICAgICAgICBpZiAoX19jID09IF9femVybyAmJiBfX2JlZyAhPSBfX2VuZCkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgX194dHJjICs9IF9TX2F0b21zW19NX3plcm9dOw0KICAgICAg
ICAgICAgICArK19fcG9zOw0KICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAg
ICAgICAgICBpZiAoKF9fYyA9PSBfX3ggfHwgX19jID09IF9fWCkgJiYgX19iZWcgIT0gX19lbmQp
DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgX194dHJjICs9IF9fY3R5cGUu
bmFycm93KF9fYywgY2hhcigpKTsNCiAgICAgICAgICAgICAgICAgICsrX19wb3M7DQogICAgICAg
ICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KICAgICAgc2l6ZV90IF9fbGVuOw0KICAgICAgaWYgKF9f
YmFzZSA9PSAxNikNCiAgICAgICAgX19sZW4gPSBfTV9zaXplOw0KICAgICAgZWxzZQ0KICAgICAg
ICBfX2xlbiA9IF9fYmFzZTsNCg0KDQogICAgICBjaGFyX3R5cGUgX193YXRvbXNbX01fc2l6ZV07
DQogICAgICBfX2N0eXBlLndpZGVuKF9TX2F0b21zLCBfU19hdG9tcyArIF9fbGVuLCBfX3dhdG9t
cyk7DQogICAgICBzdHJpbmcgX19mb3VuZF9ncm91cGluZzsNCiAgICAgIGNvbnN0IHN0cmluZyBf
X2dyb3VwaW5nID0gX19ucC5ncm91cGluZygpOw0KICAgICAgYm9vbCBfX2NoZWNrX2dyb3VwaW5n
ID0gX19ncm91cGluZy5zaXplKCk7DQogICAgICBpbnQgX19zZXBfcG9zID0gMDsNCiAgICAgIGNv
bnN0IGNoYXJfdHlwZSBfX3NlcCA9IF9fbnAudGhvdXNhbmRzX3NlcCgpOw0KICAgICAgd2hpbGUg
KF9fYmVnICE9IF9fZW5kKQ0KICAgICAgICB7DQogICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0
czxfQ2hhclQ+IF9fdHJhaXRzX3R5cGU7DQogICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX3Ag
PSBfX3RyYWl0c190eXBlOjpmaW5kKF9fd2F0b21zLCBfX2xlbiwgX19jKTsNCg0KDQogICAgICAg
ICAgaWYgKF9fcCAmJiBfX2MpDQogICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgX194dHJj
ICs9IF9TX2F0b21zW19fcCAtIF9fd2F0b21zXTsNCiAgICAgICAgICAgICAgKytfX3BvczsNCiAg
ICAgICAgICAgICAgKytfX3NlcF9wb3M7DQogICAgICAgICAgICAgIF9fYyA9ICooKytfX2JlZyk7
DQogICAgICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoX19jID09IF9fc2VwICYmIF9fY2hl
Y2tfZ3JvdXBpbmcpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICBpZiAoX19zZXBf
cG9zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIF9fZm91bmRfZ3JvdXBp
bmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBfcG9zKTsNCiAgICAgICAgICAgICAgICAgIF9f
c2VwX3BvcyA9IDA7DQogICAgICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGVs
c2UNCg0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KDQoNCiAgICAgIGlmIChfX2No
ZWNrX2dyb3VwaW5nICYmIF9fZm91bmRfZ3JvdXBpbmcuc2l6ZSgpKQ0KICAgICAgICB7DQoNCiAg
ICAgICAgICBfX2ZvdW5kX2dyb3VwaW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7
DQogICAgICAgICAgaWYgKCFfX3ZlcmlmeV9ncm91cGluZyhfX2dyb3VwaW5nLCBfX2ZvdW5kX2dy
b3VwaW5nKSkNCiAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAg
ICB9DQoNCg0KICAgICAgX194dHJjICs9IGNoYXIoKTsNCiAgICAgIGlmIChfX2JlZyA9PSBfX2Vu
ZCkNCiAgICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsNCiAgICAgIHJldHVybiBfX2Jl
ZzsNCiAgICB9DQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0lu
SXRlcj4NCiAgICBfSW5JdGVyDQogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBk
b19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0K
ICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGJvb2wmIF9fdikgY29uc3QNCiAg
ICB7DQoNCiAgICAgIGlmICghKF9faW8uZmxhZ3MoKSAmIGlvc19iYXNlOjpib29sYWxwaGEpKQ0K
ICAgICAgICB7DQoNCg0KICAgICAgICAgIHN0cmluZyBfX3h0cmM7DQogICAgICAgICAgaW50IF9f
YmFzZTsNCiAgICAgICAgICBfX2JlZyA9IF9NX2V4dHJhY3RfaW50KF9fYmVnLCBfX2VuZCwgX19p
bywgX19lcnIsIF9feHRyYywgX19iYXNlKTsNCg0KICAgICAgICAgIHVuc2lnbmVkIGxvbmcgX191
bDsNCiAgICAgICAgICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX191bCwgX19lcnIs
IF9TX2NfbG9jYWxlLCBfX2Jhc2UpOw0KICAgICAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6
OmZhaWxiaXQpICYmIF9fdWwgPD0gMSkNCiAgICAgICAgICAgIF9fdiA9IF9fdWw7DQogICAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7DQogICAgICAg
IH0NCg0KDQogICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICB0eXBlZGVmIGJhc2ljX3N0
cmluZzxfQ2hhclQ+IF9fc3RyaW5nX3R5cGU7DQogICAgICAgICAgbG9jYWxlIF9fbG9jID0gX19p
by5nZXRsb2MoKTsNCiAgICAgICAgICBjb25zdCBudW1wdW5jdDxfQ2hhclQ+JiBfX25wID0gdXNl
X2ZhY2V0PG51bXB1bmN0PF9DaGFyVD4gPihfX2xvYyk7DQogICAgICAgICAgY29uc3QgX19zdHJp
bmdfdHlwZSBfX3RydWUgPSBfX25wLnRydWVuYW1lKCk7DQogICAgICAgICAgY29uc3QgX19zdHJp
bmdfdHlwZSBfX2ZhbHNlID0gX19ucC5mYWxzZW5hbWUoKTsNCiAgICAgICAgICBjb25zdCBjaGFy
X3R5cGUqIF9fdHJ1ZXMgPSBfX3RydWUuY19zdHIoKTsNCiAgICAgICAgICBjb25zdCBjaGFyX3R5
cGUqIF9fZmFsc2VzID0gX19mYWxzZS5jX3N0cigpOw0KICAgICAgICAgIGNvbnN0IHNpemVfdCBf
X3RydWVuID0gX190cnVlLnNpemUoKSAtIDE7DQogICAgICAgICAgY29uc3Qgc2l6ZV90IF9fZmFs
c2VuID0gX19mYWxzZS5zaXplKCkgLSAxOw0KDQogICAgICAgICAgZm9yIChzaXplX3QgX19uID0g
MDsgX19iZWcgIT0gX19lbmQ7ICsrX19uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBj
aGFyX3R5cGUgX19jID0gKl9fYmVnKys7DQogICAgICAgICAgICAgIGJvb2wgX190ZXN0ZiA9IF9f
biA8PSBfX2ZhbHNlbiA/IF9fYyA9PSBfX2ZhbHNlc1tfX25dIDogZmFsc2U7DQogICAgICAgICAg
ICAgIGJvb2wgX190ZXN0dCA9IF9fbiA8PSBfX3RydWVuID8gX19jID09IF9fdHJ1ZXNbX19uXSA6
IGZhbHNlOw0KICAgICAgICAgICAgICBpZiAoIShfX3Rlc3RmIHx8IF9fdGVzdHQpKQ0KICAgICAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0
Ow0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICBlbHNlIGlmIChfX3Rlc3RmICYmIF9fbiA9PSBfX2ZhbHNlbikNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICBfX3YgPSAwOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBlbHNlIGlmIChfX3Rlc3R0ICYmIF9f
biA9PSBfX3RydWVuKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIF9fdiA9
IDE7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQ0KICAgICAgICAgICAgX19lcnIg
fD0gaW9zX2Jhc2U6OmVvZmJpdDsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fYmVnOw0KICAg
IH0NCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAg
ICBfSW5JdGVyDQogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBkb19nZXQoaXRl
cl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAg
ICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcmIF9fdikgY29uc3QNCiAgICB7DQogICAg
ICBzdHJpbmcgX194dHJjOw0KICAgICAgaW50IF9fYmFzZTsNCiAgICAgIF9fYmVnID0gX01fZXh0
cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJjLCBfX2Jhc2UpOw0KICAg
ICAgX19jb252ZXJ0X3RvX3YoX194dHJjLmNfc3RyKCksIF9fdiwgX19lcnIsIF9TX2NfbG9jYWxl
LCBfX2Jhc2UpOw0KICAgICAgcmV0dXJuIF9fYmVnOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgX0luSXRlcg0KICAgIG51bV9nZXQ8
X0NoYXJULCBfSW5JdGVyPjo6DQogICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBl
IF9fZW5kLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9f
ZXJyLCB1bnNpZ25lZCBzaG9ydCYgX192KSBjb25zdA0KICAgIHsNCiAgICAgIHN0cmluZyBfX3h0
cmM7DQogICAgICBpbnQgX19iYXNlOw0KICAgICAgX19iZWcgPSBfTV9leHRyYWN0X2ludChfX2Jl
ZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3h0cmMsIF9fYmFzZSk7DQogICAgICB1bnNpZ25lZCBs
b25nIF9fdWw7DQogICAgICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX191bCwgX19l
cnIsIF9TX2NfbG9jYWxlLCBfX2Jhc2UpOw0KICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6
ZmFpbGJpdCkNCiAgICAgICAgICAmJiBfX3VsIDw9IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNo
b3J0Pjo6bWF4KCkpDQogICAgICAgIF9fdiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pihf
X3VsKTsNCiAgICAgIGVsc2UNCiAgICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7DQog
ICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5JdGVyDQogICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0
ZXI+OjoNCiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19i
YXNlJiBfX2lvLA0KICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVk
IGludCYgX192KSBjb25zdA0KICAgIHsNCiAgICAgIHN0cmluZyBfX3h0cmM7DQogICAgICBpbnQg
X19iYXNlOw0KICAgICAgX19iZWcgPSBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9faW8s
IF9fZXJyLCBfX3h0cmMsIF9fYmFzZSk7DQogICAgICB1bnNpZ25lZCBsb25nIF9fdWw7DQogICAg
ICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX191bCwgX19lcnIsIF9TX2NfbG9jYWxl
LCBfX2Jhc2UpOw0KICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkNCiAgICAg
ICAgICAmJiBfX3VsIDw9IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpKQ0KICAg
ICAgICBfX3YgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9fdWwpOw0KICAgICAgZWxzZQ0K
ICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCiAgICAgIHJldHVybiBfX2JlZzsN
CiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0K
ICAgIF9Jbkl0ZXINCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46Og0KICAgIGRvX2dldChp
dGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAg
ICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5zaWduZWQgbG9uZyYgX192KSBjb25zdA0K
ICAgIHsNCiAgICAgIHN0cmluZyBfX3h0cmM7DQogICAgICBpbnQgX19iYXNlOw0KICAgICAgX19i
ZWcgPSBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3h0cmMsIF9f
YmFzZSk7DQogICAgICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX192LCBfX2Vyciwg
X1NfY19sb2NhbGUsIF9fYmFzZSk7DQogICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0KIyA1Mjcg
InQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2Mi
IDMNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0KICAgIF9J
bkl0ZXINCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46Og0KICAgIGRvX2dldChpdGVyX3R5
cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAgIGlv
c19iYXNlOjppb3N0YXRlJiBfX2VyciwgZmxvYXQmIF9fdikgY29uc3QNCiAgICB7DQogICAgICBz
dHJpbmcgX194dHJjOw0KICAgICAgX194dHJjLnJlc2VydmUoMzIpOw0KICAgICAgX19iZWcgPSBf
TV9leHRyYWN0X2Zsb2F0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9feHRyYyk7DQogICAg
ICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX192LCBfX2VyciwgX1NfY19sb2NhbGUp
Ow0KICAgICAgcmV0dXJuIF9fYmVnOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgX0luSXRlcg0KICAgIG51bV9nZXQ8X0NoYXJULCBf
SW5JdGVyPjo6DQogICAgZG9fZ2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBp
b3NfYmFzZSYgX19pbywNCiAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBkb3Vi
bGUmIF9fdikgY29uc3QNCiAgICB7DQogICAgICBzdHJpbmcgX194dHJjOw0KICAgICAgX194dHJj
LnJlc2VydmUoMzIpOw0KICAgICAgX19iZWcgPSBfTV9leHRyYWN0X2Zsb2F0KF9fYmVnLCBfX2Vu
ZCwgX19pbywgX19lcnIsIF9feHRyYyk7DQogICAgICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19z
dHIoKSwgX192LCBfX2VyciwgX1NfY19sb2NhbGUpOw0KICAgICAgcmV0dXJuIF9fYmVnOw0KICAg
IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAg
X0luSXRlcg0KICAgIG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6DQogICAgZG9fZ2V0KGl0ZXJf
dHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICAg
aW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBsb25nIGRvdWJsZSYgX192KSBjb25zdA0KICAgIHsN
CiAgICAgIHN0cmluZyBfX3h0cmM7DQogICAgICBfX3h0cmMucmVzZXJ2ZSgzMik7DQogICAgICBf
X2JlZyA9IF9NX2V4dHJhY3RfZmxvYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJj
KTsNCiAgICAgIF9fY29udmVydF90b192KF9feHRyYy5jX3N0cigpLCBfX3YsIF9fZXJyLCBfU19j
X2xvY2FsZSk7DQogICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5JdGVyDQogICAgbnVtX2dldDxf
Q2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUg
X19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsIHZvaWQqJiBfX3YpIGNvbnN0DQogICAgew0KDQogICAgICB0eXBlZGVmIGlvc19iYXNlOjpm
bXRmbGFncyBmbXRmbGFnczsNCiAgICAgIGZtdGZsYWdzIF9fZm10ID0gX19pby5mbGFncygpOw0K
ICAgICAgZm10ZmxhZ3MgX19mbXRtYXNrID0gfihpb3NfYmFzZTo6c2hvd3BvcyB8IGlvc19iYXNl
OjpiYXNlZmllbGQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpb3NfYmFzZTo6dXBw
ZXJjYXNlIHwgaW9zX2Jhc2U6OmludGVybmFsKTsNCiAgICAgIF9faW8uZmxhZ3MoX19mbXQgJiBf
X2ZtdG1hc2sgfCAoaW9zX2Jhc2U6OmhleCB8IGlvc19iYXNlOjpzaG93YmFzZSkpOw0KDQogICAg
ICBzdHJpbmcgX194dHJjOw0KICAgICAgaW50IF9fYmFzZTsNCiAgICAgIF9fYmVnID0gX01fZXh0
cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJjLCBfX2Jhc2UpOw0KDQoN
CiAgICAgIF9faW8uZmxhZ3MoX19mbXQpOw0KDQogICAgICB1bnNpZ25lZCBsb25nIF9fdWw7DQog
ICAgICBfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX191bCwgX19lcnIsIF9TX2NfbG9j
YWxlLCBfX2Jhc2UpOw0KICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpDQog
ICAgICAgIF9fdiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9fdWwpOw0KICAgICAgZWxzZQ0K
ICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCiAgICAgIHJldHVybiBfX2JlZzsN
CiAgICB9DQojIDYwNCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2Nh
bGVfZmFjZXRzLnRjYyIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9P
dXRJdGVyPg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+DQogICAgICBfT3V0SXRlcg0K
ICAgICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6DQogICAgICBfTV9jb252ZXJ0X2Zsb2F0
KF9PdXRJdGVyIF9fcywgaW9zX2Jhc2UmIF9faW8sIF9DaGFyVCBfX2ZpbGwsIGNoYXIgX19tb2Qs
DQogICAgICAgICAgICAgICAgICAgICAgIF9WYWx1ZVQgX192KSBjb25zdA0KICAgICAgew0KDQoN
CiAgICAgICAgY29uc3QgaW50IF9fbWF4X2RpZ2l0cyA9IG51bWVyaWNfbGltaXRzPF9WYWx1ZVQ+
OjpkaWdpdHMxMCArIDE7DQogICAgICAgIHN0cmVhbXNpemUgX19wcmVjID0gX19pby5wcmVjaXNp
b24oKTsNCg0KICAgICAgICBpZiAoX19wcmVjID4gc3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX19t
YXhfZGlnaXRzKSkNCiAgICAgICAgICBfX3ByZWMgPSBzdGF0aWNfY2FzdDxzdHJlYW1zaXplPihf
X21heF9kaWdpdHMpOw0KDQoNCiAgICAgICAgY2hhciBfX2ZidWZbMTZdOw0KDQoNCiAgICAgICAg
aW50IF9fbGVuOw0KIyA2NTEgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2JpdHMv
bG9jYWxlX2ZhY2V0cy50Y2MiIDMNCiAgICAgICAgY29uc3QgYm9vbCBfX2ZpeGVkID0gX19pby5m
bGFncygpICYgaW9zX2Jhc2U6OmZpeGVkOw0KICAgICAgICBjb25zdCBpbnQgX19tYXhfZXhwID0g
bnVtZXJpY19saW1pdHM8X1ZhbHVlVD46Om1heF9leHBvbmVudDEwOw0KDQoNCg0KDQoNCiAgICAg
ICAgY29uc3QgaW50IF9fY3Nfc2l6ZSA9IF9fZml4ZWQgPyBfX21heF9leHAgKyBfX21heF9kaWdp
dHMgKyA0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19tYXhfZGln
aXRzICogMzsNCiAgICAgICAgY2hhciogX19jcyA9IHN0YXRpY19jYXN0PGNoYXIqPihfX2J1aWx0
aW5fYWxsb2NhKF9fY3Nfc2l6ZSkpOw0KDQogICAgICAgIGlmIChfU19mb3JtYXRfZmxvYXQoX19p
bywgX19mYnVmLCBfX21vZCwgX19wcmVjKSkNCiAgICAgICAgICBfX2xlbiA9IF9fY29udmVydF9m
cm9tX3YoX19jcywgMCwgX19mYnVmLCBfX3YsIF9TX2NfbG9jYWxlLCBfX3ByZWMpOw0KICAgICAg
ICBlbHNlDQogICAgICAgICAgX19sZW4gPSBfX2NvbnZlcnRfZnJvbV92KF9fY3MsIDAsIF9fZmJ1
ZiwgX192LCBfU19jX2xvY2FsZSk7DQoNCiAgICAgICAgcmV0dXJuIF9NX3dpZGVuX2Zsb2F0KF9f
cywgX19pbywgX19maWxsLCBfX2NzLCBfX2xlbik7DQogICAgICB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VmFsdWVUPg0KICAgICAgX091dEl0ZXINCiAgICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46
Og0KICAgICAgX01fY29udmVydF9pbnQoX091dEl0ZXIgX19zLCBpb3NfYmFzZSYgX19pbywgX0No
YXJUIF9fZmlsbCwgY2hhciBfX21vZCwNCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19tb2Rs
LCBfVmFsdWVUIF9fdikgY29uc3QNCiAgICAgIHsNCg0KDQoNCiAgICAgICAgY2hhciBfX2ZidWZb
MTZdOw0KICAgICAgICBfU19mb3JtYXRfaW50KF9faW8sIF9fZmJ1ZiwgX19tb2QsIF9fbW9kbCk7
DQojIDY5OSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2NhbGVfZmFj
ZXRzLnRjYyIgMw0KICAgICAgICBjaGFyIF9fY3NbMTI4XTsNCiAgICAgICAgaW50IF9fbGVuID0g
X19jb252ZXJ0X2Zyb21fdihfX2NzLCAwLCBfX2ZidWYsIF9fdiwgX1NfY19sb2NhbGUpOw0KDQog
ICAgICAgIHJldHVybiBfTV93aWRlbl9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fY3MsIF9fbGVu
KTsNCiAgICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJ
dGVyPg0KICAgIF9PdXRJdGVyDQogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6DQogICAg
X01fd2lkZW5fZmxvYXQoX091dEl0ZXIgX19zLCBpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmls
bCwgY2hhciogX19jcywNCiAgICAgICAgICAgICAgICAgICBpbnQgX19sZW4pIGNvbnN0DQogICAg
ew0KDQoNCiAgICAgIGNvbnN0IGxvY2FsZSBfX2xvYyA9IF9faW8uZ2V0bG9jKCk7DQogICAgICBj
b25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihf
X2xvYyk7DQogICAgICBfQ2hhclQqIF9fd3MgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0
aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogX19sZW4pKTsNCg0KDQogICAgICBfQ2hhclQq
IF9fd3MyID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0No
YXJUKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiBfX2xlbiAqIDIpKTsNCiAgICAgIF9fY3R5cGUud2lkZW4oX19jcywgX19jcyAr
IF9fbGVuLCBfX3dzKTsNCg0KDQogICAgICBjb25zdCBfQ2hhclQqIF9fcDsNCiAgICAgIGNvbnN0
IG51bXB1bmN0PF9DaGFyVD4mIF9fbnAgPSB1c2VfZmFjZXQ8bnVtcHVuY3Q8X0NoYXJUPiA+KF9f
bG9jKTsNCiAgICAgIGlmIChfX3AgPSBjaGFyX3RyYWl0czxfQ2hhclQ+OjpmaW5kKF9fd3MsIF9f
bGVuLCBfX2N0eXBlLndpZGVuKCcuJykpKQ0KICAgICAgICBfX3dzW19fcCAtIF9fd3NdID0gX19u
cC5kZWNpbWFsX3BvaW50KCk7DQoNCg0KDQoNCiAgICAgIGNvbnN0IHN0cmluZyBfX2dyb3VwaW5n
ID0gX19ucC5ncm91cGluZygpOw0KICAgICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fYmFzZWZpZWxk
ID0gX19pby5mbGFncygpICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsNCiAgICAgIGlmIChfX2dyb3Vw
aW5nLnNpemUoKSkNCiAgICAgICAgew0KICAgICAgICAgIF9DaGFyVCogX19wMjsNCiAgICAgICAg
ICBpbnQgX19kZWNsZW4gPSBfX3AgPyBfX3AgLSBfX3dzIDogX19sZW47DQogICAgICAgICAgX19w
MiA9IF9fYWRkX2dyb3VwaW5nKF9fd3MyLCBfX25wLnRob3VzYW5kc19zZXAoKSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19ncm91cGluZy5jX3N0cigpLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2dyb3VwaW5nLmNfc3RyKCkgKyBfX2dyb3VwaW5nLnNpemUo
KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX193cywgX193cyArIF9fZGVjbGVu
KTsNCiAgICAgICAgICBpbnQgX19uZXdsZW4gPSBfX3AyIC0gX193czI7DQoNCg0KICAgICAgICAg
IGlmIChfX3ApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGNoYXJfdHJhaXRzPF9DaGFy
VD46OmNvcHkoX19wMiwgX19wLCBfX2xlbiAtIF9fZGVjbGVuKTsNCiAgICAgICAgICAgICAgX19u
ZXdsZW4gKz0gX19sZW4gLSBfX2RlY2xlbjsNCiAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAg
X193cyA9IF9fd3MyOw0KICAgICAgICAgIF9fbGVuID0gX19uZXdsZW47DQogICAgICAgIH0NCg0K
ICAgICAgcmV0dXJuIF9NX2luc2VydChfX3MsIF9faW8sIF9fZmlsbCwgX193cywgX19sZW4pOw0K
ICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPg0K
ICAgIF9PdXRJdGVyDQogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6DQogICAgX01fd2lk
ZW5faW50KF9PdXRJdGVyIF9fcywgaW9zX2Jhc2UmIF9faW8sIF9DaGFyVCBfX2ZpbGwsIGNoYXIq
IF9fY3MsDQogICAgICAgICAgICAgICAgIGludCBfX2xlbikgY29uc3QNCiAgICB7DQoNCg0KICAg
ICAgY29uc3QgbG9jYWxlIF9fbG9jID0gX19pby5nZXRsb2MoKTsNCiAgICAgIGNvbnN0IGN0eXBl
PF9DaGFyVD4mIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsNCiAg
ICAgIF9DaGFyVCogX193cyA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eo
c2l6ZW9mKF9DaGFyVCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiBfX2xlbikpOw0KDQoNCiAgICAgIF9DaGFyVCogX193czIgPSBz
dGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
IF9fbGVuICogMikpOw0KICAgICAgX19jdHlwZS53aWRlbihfX2NzLCBfX2NzICsgX19sZW4sIF9f
d3MpOw0KDQoNCiAgICAgIGNvbnN0IG51bXB1bmN0PF9DaGFyVD4mIF9fbnAgPSB1c2VfZmFjZXQ8
bnVtcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsNCiAgICAgIGNvbnN0IHN0cmluZyBfX2dyb3VwaW5n
ID0gX19ucC5ncm91cGluZygpOw0KICAgICAgY29uc3QgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fYmFz
ZWZpZWxkID0gX19pby5mbGFncygpICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsNCiAgICAgIGlmIChf
X2dyb3VwaW5nLnNpemUoKSkNCiAgICAgICAgew0KDQoNCg0KICAgICAgICAgIHN0cmVhbXNpemUg
X19vZmYgPSAwOw0KICAgICAgICAgIGlmIChfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6c2hvd2Jh
c2UpDQogICAgICAgICAgICBpZiAoX19iYXNlZmllbGQgPT0gaW9zX2Jhc2U6Om9jdCkNCiAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIF9fb2ZmID0gMTsNCiAgICAgICAgICAgICAgICAq
X193czIgPSAqX193czsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoX19i
YXNlZmllbGQgPT0gaW9zX2Jhc2U6OmhleCkNCiAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIF9fb2ZmID0gMjsNCiAgICAgICAgICAgICAgICAqX193czIgPSAqX193czsNCiAgICAgICAg
ICAgICAgICAqKF9fd3MyICsgMSkgPSAqKF9fd3MgKyAxKTsNCiAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgIF9DaGFyVCogX19wOw0KICAgICAgICAgIF9fcCA9IF9fYWRkX2dyb3VwaW5nKF9fd3My
ICsgX19vZmYsIF9fbnAudGhvdXNhbmRzX3NlcCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fZ3JvdXBpbmcuY19zdHIoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2dyb3VwaW5nLmNfc3RyKCkgKyBfX2dyb3VwaW5nLnNpemUoKSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3dzICsgX19vZmYsIF9fd3MgKyBfX2xlbik7DQogICAgICAgICAg
X19sZW4gPSBfX3AgLSBfX3dzMjsNCg0KICAgICAgICAgIF9fd3MgPSBfX3dzMjsNCiAgICAgICAg
fQ0KICAgICAgcmV0dXJuIF9NX2luc2VydChfX3MsIF9faW8sIF9fZmlsbCwgX193cywgX19sZW4p
Ow0KICAgIH0NCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0
SXRlcj4NCiAgICBfT3V0SXRlcg0KICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46Og0KICAg
IF9NX2luc2VydChfT3V0SXRlciBfX3MsIGlvc19iYXNlJiBfX2lvLCBfQ2hhclQgX19maWxsLCBj
b25zdCBfQ2hhclQqIF9fd3MsDQogICAgICAgICAgICAgIGludCBfX2xlbikgY29uc3QNCiAgICB7
DQoNCiAgICAgIHN0cmVhbXNpemUgX193ID0gX19pby53aWR0aCgpOw0KICAgICAgX0NoYXJUKiBf
X3dzMiA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFy
VCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICogX193KSk7DQogICAgICBpZiAoX193ID4gc3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4o
X19sZW4pKQ0KICAgICAgICB7DQogICAgICAgICAgX19wYWQoX19pbywgX19maWxsLCBfX3dzMiwg
X193cywgX193LCBfX2xlbiwgdHJ1ZSk7DQogICAgICAgICAgX19sZW4gPSBzdGF0aWNfY2FzdDxp
bnQ+KF9fdyk7DQoNCiAgICAgICAgICBfX3dzID0gX193czI7DQogICAgICAgIH0NCiAgICAgIF9f
aW8ud2lkdGgoMCk7DQoNCg0KDQogICAgICBmb3IgKGludCBfX2ogPSAwOyBfX2ogPCBfX2xlbjsg
KytfX2osICsrX19zKQ0KICAgICAgICAqX19zID0gX193c1tfX2pdOw0KICAgICAgcmV0dXJuIF9f
czsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRl
cj4NCiAgICBfT3V0SXRlcg0KICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46Og0KICAgIGRv
X3B1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgYm9v
bCBfX3YpIGNvbnN0DQogICAgew0KICAgICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBf
X2lvLmZsYWdzKCk7DQogICAgICBpZiAoKF9fZmxhZ3MgJiBpb3NfYmFzZTo6Ym9vbGFscGhhKSA9
PSAwKQ0KICAgICAgICB7DQogICAgICAgICAgdW5zaWduZWQgbG9uZyBfX3V2ID0gX192Ow0KICAg
ICAgICAgIF9fcyA9IF9NX2NvbnZlcnRfaW50KF9fcywgX19pbywgX19maWxsLCAndScsIGNoYXJf
dHlwZSgpLCBfX3V2KTsNCiAgICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAg
ICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJUPiBfX3N0cmluZ190eXBlOw0KICAgICAgICAg
IGxvY2FsZSBfX2xvYyA9IF9faW8uZ2V0bG9jKCk7DQogICAgICAgICAgY29uc3QgbnVtcHVuY3Q8
X0NoYXJUPiYgX19ucCA9IHVzZV9mYWNldDxudW1wdW5jdDxfQ2hhclQ+ID4oX19sb2MpOw0KICAg
ICAgICAgIF9fc3RyaW5nX3R5cGUgX19uYW1lOw0KICAgICAgICAgIGlmIChfX3YpDQogICAgICAg
ICAgICBfX25hbWUgPSBfX25wLnRydWVuYW1lKCk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgX19uYW1lID0gX19ucC5mYWxzZW5hbWUoKTsNCiAgICAgICAgICBfX3MgPSBfTV9pbnNlcnQo
X19zLCBfX2lvLCBfX2ZpbGwsIF9fbmFtZS5jX3N0cigpLCBfX25hbWUuc2l6ZSgpKTsNCiAgICAg
ICAgfQ0KICAgICAgcmV0dXJuIF9fczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBfT3V0SXRlcg0KICAgIG51bV9wdXQ8X0NoYXJU
LCBfT3V0SXRlcj46Og0KICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywg
Y2hhcl90eXBlIF9fZmlsbCwgbG9uZyBfX3YpIGNvbnN0DQogICAgeyByZXR1cm4gX01fY29udmVy
dF9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsICdkJywgY2hhcl90eXBlKCksIF9fdik7IH0NCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPg0KICAgIF9PdXRJdGVy
DQogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6DQogICAgZG9fcHV0KGl0ZXJfdHlwZSBf
X3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLA0KICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIF9fdikgY29uc3QNCiAgICB7IHJldHVybiBfTV9jb252ZXJ0X2ludChfX3MsIF9faW8s
IF9fZmlsbCwgJ3UnLCBjaGFyX3R5cGUoKSwgX192KTsgfQ0KIyA4OTMgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBfT3V0SXRlcg0KICAgIG51
bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46Og0KICAgIGRvX3B1dChpdGVyX3R5cGUgX19zLCBpb3Nf
YmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgZG91YmxlIF9fdikgY29uc3QNCiAgICB7IHJl
dHVybiBfTV9jb252ZXJ0X2Zsb2F0KF9fcywgX19pbywgX19maWxsLCBjaGFyX3R5cGUoKSwgX192
KTsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+DQog
ICAgX091dEl0ZXINCiAgICBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjoNCiAgICBkb19wdXQo
aXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsDQogICAgICAg
ICAgIGxvbmcgZG91YmxlIF9fdikgY29uc3QNCiAgICB7IHJldHVybiBfTV9jb252ZXJ0X2Zsb2F0
KF9fcywgX19pbywgX19maWxsLCAnTCcsIF9fdik7IH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPg0KICAgIF9PdXRJdGVyDQogICAgbnVtX3B1dDxfQ2hh
clQsIF9PdXRJdGVyPjo6DQogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lv
LCBjaGFyX3R5cGUgX19maWxsLA0KICAgICAgICAgICBjb25zdCB2b2lkKiBfX3YpIGNvbnN0DQog
ICAgew0KICAgICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lvLmZsYWdzKCk7DQog
ICAgICBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbXQgPSB+KGlvc19iYXNlOjpzaG93cG9zIHwgaW9z
X2Jhc2U6OmJhc2VmaWVsZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlv
c19iYXNlOjp1cHBlcmNhc2UgfCBpb3NfYmFzZTo6aW50ZXJuYWwpOw0KICAgICAgX19pby5mbGFn
cyhfX2ZsYWdzICYgX19mbXQgfCAoaW9zX2Jhc2U6OmhleCB8IGlvc19iYXNlOjpzaG93YmFzZSkp
Ow0KICAgICAgaWYgKHRydWUpDQogICAgICAgIHsNCiAgICAgICAgICBfX3MgPSBfTV9jb252ZXJ0
X2ludChfX3MsIF9faW8sIF9fZmlsbCwgJ3UnLCBjaGFyX3R5cGUoKSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+KF9fdikpOw0K
ICAgICAgICAgIF9faW8uZmxhZ3MoX19mbGFncyk7DQogICAgICAgIH0NCiAgICAgIGlmIChmYWxz
ZSkNCiAgICAgICAgew0KICAgICAgICAgIF9faW8uZmxhZ3MoX19mbGFncyk7DQogICAgICAgICAg
Ow0KICAgICAgICB9DQogICAgICByZXR1cm4gX19zOw0KICAgIH0NCg0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5JdGVyDQogICAgbW9uZXlf
Z2V0PF9DaGFyVCwgX0luSXRlcj46Og0KICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJf
dHlwZSBfX2VuZCwgYm9vbCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgICBpb3Nf
YmFzZTo6aW9zdGF0ZSYgX19lcnIsIGxvbmcgZG91YmxlJiBfX3VuaXRzKSBjb25zdA0KICAgIHsN
CiAgICAgIHN0cmluZ190eXBlIF9fc3RyOw0KICAgICAgX19iZWcgPSB0aGlzLT5kb19nZXQoX19i
ZWcsIF9fZW5kLCBfX2ludGwsIF9faW8sIF9fZXJyLCBfX3N0cik7DQoNCiAgICAgIGNvbnN0IGlu
dCBfX24gPSBudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46OmRpZ2l0czEwOw0KICAgICAgY2hh
ciogX19jcyA9IHN0YXRpY19jYXN0PGNoYXIqPihfX2J1aWx0aW5fYWxsb2NhKF9fbikpOw0KICAg
ICAgY29uc3QgbG9jYWxlIF9fbG9jID0gX19pby5nZXRsb2MoKTsNCiAgICAgIGNvbnN0IGN0eXBl
PF9DaGFyVD4mIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsNCiAg
ICAgIGNvbnN0IF9DaGFyVCogX193Y3MgPSBfX3N0ci5jX3N0cigpOw0KICAgICAgX19jdHlwZS5u
YXJyb3coX193Y3MsIF9fd2NzICsgX19zdHIuc2l6ZSgpICsgMSwgY2hhcigpLCBfX2NzKTsNCiAg
ICAgIF9fY29udmVydF90b192KF9fY3MsIF9fdW5pdHMsIF9fZXJyLCBfU19jX2xvY2FsZSk7DQog
ICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg
dHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5JdGVyDQogICAgbW9uZXlfZ2V0PF9DaGFyVCwgX0lu
SXRlcj46Og0KICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgYm9v
bCBfX2ludGwsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYg
X19lcnIsIHN0cmluZ190eXBlJiBfX3VuaXRzKSBjb25zdA0KICAgIHsNCg0KICAgICAgdHlwZWRl
ZiBtb25leXB1bmN0PF9DaGFyVCwgdHJ1ZT4gX19tb25leV90cnVlOw0KICAgICAgdHlwZWRlZiBt
b25leXB1bmN0PF9DaGFyVCwgZmFsc2U+IF9fbW9uZXlfZmFsc2U7DQogICAgICB0eXBlZGVmIG1v
bmV5X2Jhc2U6OnBhcnQgcGFydDsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6
OnNpemVfdHlwZSBzaXplX3R5cGU7DQoNCiAgICAgIGNvbnN0IGxvY2FsZSBfX2xvYyA9IF9faW8u
Z2V0bG9jKCk7DQogICAgICBjb25zdCBfX21vbmV5X3RydWUmIF9fbXB0ID0gdXNlX2ZhY2V0PF9f
bW9uZXlfdHJ1ZT4oX19sb2MpOw0KICAgICAgY29uc3QgX19tb25leV9mYWxzZSYgX19tcGYgPSB1
c2VfZmFjZXQ8X19tb25leV9mYWxzZT4oX19sb2MpOw0KICAgICAgY29uc3QgY3R5cGU8X0NoYXJU
PiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpOw0KDQogICAgICBj
b25zdCBtb25leV9iYXNlOjpwYXR0ZXJuIF9fcCA9IF9faW50bCA/IF9fbXB0Lm5lZ19mb3JtYXQo
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX21wZi5u
ZWdfZm9ybWF0KCk7DQoNCiAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9fcG9zX3NpZ24gPV9faW50
bCA/IF9fbXB0LnBvc2l0aXZlX3NpZ24oKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogX19tcGYucG9zaXRpdmVfc2lnbigpOw0KICAgICAgY29uc3Qgc3RyaW5n
X3R5cGUgX19uZWdfc2lnbiA9X19pbnRsID8gX19tcHQubmVnYXRpdmVfc2lnbigpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX21wZi5uZWdhdGl2ZV9zaWdu
KCk7DQogICAgICBjb25zdCBjaGFyX3R5cGUgX19kID0gX19pbnRsID8gX19tcHQuZGVjaW1hbF9w
b2ludCgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19tcGYuZGVjaW1h
bF9wb2ludCgpOw0KICAgICAgY29uc3QgY2hhcl90eXBlIF9fc2VwID0gX19pbnRsID8gX19tcHQu
dGhvdXNhbmRzX3NlcCgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBf
X21wZi50aG91c2FuZHNfc2VwKCk7DQoNCiAgICAgIGNvbnN0IHN0cmluZyBfX2dyb3VwaW5nID0g
X19pbnRsID8gX19tcHQuZ3JvdXBpbmcoKSA6IF9fbXBmLmdyb3VwaW5nKCk7DQoNCg0KICAgICAg
c3RyaW5nX3R5cGUgX19zaWduOw0KDQogICAgICBzdHJpbmcgX19ncm91cGluZ190bXA7DQoNCiAg
ICAgIGludCBfX3NlcF9wb3MgPSAwOw0KDQogICAgICBib29sIF9fdGVzdHZhbGlkID0gdHJ1ZTsN
Cg0KICAgICAgYm9vbCBfX3Rlc3RkZWNmb3VuZCA9IGZhbHNlOw0KDQoNCiAgICAgIHN0cmluZ190
eXBlIF9fdGVtcF91bml0czsNCg0KICAgICAgY2hhcl90eXBlIF9fYyA9ICpfX2JlZzsNCiAgICAg
IGNoYXJfdHlwZSBfX2VvZiA9IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oY2hhcl90cmFpdHM8Y2hh
cl90eXBlPjo6ZW9mKCkpOw0KICAgICAgZm9yIChpbnQgX19pID0gMDsgX19iZWcgIT0gX19lbmQg
JiYgX19pIDwgNCAmJiBfX3Rlc3R2YWxpZDsgKytfX2kpDQogICAgICAgIHsNCiAgICAgICAgICBw
YXJ0IF9fd2hpY2ggPSBzdGF0aWNfY2FzdDxwYXJ0PihfX3AuZmllbGRbX19pXSk7DQogICAgICAg
ICAgc3dpdGNoIChfX3doaWNoKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBj
YXNlIG1vbmV5X2Jhc2U6OnN5bWJvbDoNCiAgICAgICAgICAgICAgICAgIGlmIChfX2lvLmZsYWdz
KCkgJiBpb3NfYmFzZTo6c2hvd2Jhc2UNCiAgICAgICAgICAgICAgICAgICAgICB8fCBfX2kgPCAy
IHx8IF9fc2lnbi5zaXplKCkgPiAxDQogICAgICAgICAgICAgICAgICAgICAgfHwgKChzdGF0aWNf
Y2FzdDxwYXJ0PihfX3AuZmllbGRbM10pICE9IG1vbmV5X2Jhc2U6Om5vbmUpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIF9faSA9PSAyKSkNCiAgICAgICAgICAgICAgICAgICAgew0KDQoN
Cg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdfdHlwZSBfX3N5bWJvbCA9
IF9faW50bCA/IF9fbXB0LmN1cnJfc3ltYm9sKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19tcGYuY3Vycl9zeW1ib2woKTsNCiAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19sZW4gPSBfX3N5bWJvbC5zaXplKCk7DQog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9faiA9IDA7DQogICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKF9fYmVnICE9IF9fZW5kDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIF9faiA8IF9fbGVuICYmIF9fc3ltYm9sW19fal0gPT0gX19jKQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICArK19fajsNCiAgICAgICAgICAgICAgICAgICAgICAg
IH0NCg0KDQogICAgICAgICAgICAgICAgICAgICAgaWYgKF9faiAhPSBfX2xlbiAmJiAoX19pby5m
bGFncygpICYgaW9zX2Jhc2U6OnNob3diYXNlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dGVzdHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgbW9uZXlfYmFzZTo6c2lnbjoNCg0KICAg
ICAgICAgICAgICAgICAgaWYgKF9fcG9zX3NpZ24uc2l6ZSgpICYmIF9fbmVnX3NpZ24uc2l6ZSgp
KQ0KICAgICAgICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICAgIGlmIChfX2MgPT0g
X19wb3Nfc2lnblswXSkNCiAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBfX3NpZ24gPSBfX3Bvc19zaWduOw0KICAgICAgICAgICAgICAgICAgICAgICAgX19j
ID0gKigrK19fYmVnKTsNCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKF9fYyA9PSBfX25lZ19zaWduWzBdKQ0KICAgICAgICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9fc2lnbiA9IF9fbmVnX3NpZ247DQogICAgICAg
ICAgICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgIF9fdGVz
dHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICBl
bHNlIGlmIChfX3Bvc19zaWduLnNpemUoKSAmJiBfX2MgPT0gX19wb3Nfc2lnblswXSkNCiAgICAg
ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgIF9fc2lnbiA9IF9fcG9zX3Np
Z247DQogICAgICAgICAgICAgICAgICAgICAgX19jID0gKigrK19fYmVnKTsNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX19uZWdfc2lnbi5zaXplKCkg
JiYgX19jID09IF9fbmVnX3NpZ25bMF0pDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgICAgICBfX3NpZ24gPSBfX25lZ19zaWduOw0KICAgICAgICAgICAgICAgICAgICAg
IF9fYyA9ICooKytfX2JlZyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgbW9uZXlfYmFzZTo6dmFsdWU6DQoNCg0K
ICAgICAgICAgICAgICAgICAgd2hpbGUgKF9fYmVnICE9IF9fZW5kDQogICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKF9fY3R5cGUuaXMoY3R5cGVfYmFzZTo6ZGlnaXQsIF9fYykNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgKF9fYyA9PSBfX2QgJiYgIV9fdGVzdGRlY2ZvdW5kKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBfX2MgPT0gX19zZXApKQ0KICAgICAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgaWYgKF9fYyA9PSBfX2QpDQogICAg
ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3JvdXBp
bmdfdG1wICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fc2VwX3BvcyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGVz
dGRlY2ZvdW5kID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChfX2MgPT0gX19zZXApDQogICAgICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfX2dyb3VwaW5nLnNpemUoKSkNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fZ3JvdXBpbmdfdG1wICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3NlcF9wb3MgPSAwOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGVz
dHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3RlbXBfdW5pdHMgKz0gX19jOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICArK19fc2VwX3BvczsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIG1vbmV5
X2Jhc2U6OnNwYWNlOg0KICAgICAgICAgICAgICAgIGNhc2UgbW9uZXlfYmFzZTo6bm9uZToNCg0K
ICAgICAgICAgICAgICAgICAgaWYgKF9faSAhPSAzKQ0KICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoX19iZWcgIT0gX19lbmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIF9fY3R5cGUu
aXMoY3R5cGVfYmFzZTo6c3BhY2UsIF9fYykpDQogICAgICAgICAgICAgICAgICAgICAgX19jID0g
KigrK19fYmVnKTsNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KDQoNCiAgICAgIGlmIChfX3NpZ24uc2l6ZSgpID4gMSkNCiAgICAgICAgew0K
ICAgICAgICAgIHNpemVfdHlwZSBfX2xlbiA9IF9fc2lnbi5zaXplKCk7DQogICAgICAgICAgc2l6
ZV90eXBlIF9faSA9IDE7DQogICAgICAgICAgZm9yICg7IF9fYyAhPSBfX2VvZiAmJiBfX2kgPCBf
X2xlbjsgKytfX2kpDQogICAgICAgICAgICB3aGlsZSAoX19iZWcgIT0gX19lbmQgJiYgX19jICE9
IF9fc2lnbltfX2ldKQ0KICAgICAgICAgICAgICBfX2MgPSAqKCsrX19iZWcpOw0KDQogICAgICAg
ICAgaWYgKF9faSAhPSBfX2xlbikNCiAgICAgICAgICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7DQog
ICAgICAgIH0NCg0KDQogICAgICB3aGlsZSAoX190ZW1wX3VuaXRzWzBdID09IF9fY3R5cGUud2lk
ZW4oJzAnKSkNCiAgICAgICAgX190ZW1wX3VuaXRzLmVyYXNlKF9fdGVtcF91bml0cy5iZWdpbigp
KTsNCg0KICAgICAgaWYgKF9fc2lnbi5zaXplKCkgJiYgX19zaWduID09IF9fbmVnX3NpZ24pDQog
ICAgICAgIF9fdGVtcF91bml0cy5pbnNlcnQoX190ZW1wX3VuaXRzLmJlZ2luKCksIF9fY3R5cGUu
d2lkZW4oJy0nKSk7DQoNCg0KICAgICAgaWYgKF9fZ3JvdXBpbmcuc2l6ZSgpICYmIF9fZ3JvdXBp
bmdfdG1wLnNpemUoKSkNCiAgICAgICAgew0KICAgICAgICAgIGlmICghX192ZXJpZnlfZ3JvdXBp
bmcoX19ncm91cGluZywgX19ncm91cGluZ190bXApKQ0KICAgICAgICAgICAgX190ZXN0dmFsaWQg
PSBmYWxzZTsNCiAgICAgICAgfQ0KDQoNCiAgICAgIGlmIChfX2MgPT0gX19lb2YpDQogICAgICAg
IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7DQoNCg0KICAgICAgaWYgKCFfX3Rlc3R2YWxpZCB8
fCAhX190ZW1wX3VuaXRzLnNpemUoKSkNCiAgICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxi
aXQ7DQogICAgICBlbHNlDQoNCiAgICAgICAgX190ZW1wX3VuaXRzLnN3YXAoX191bml0cyk7DQoN
CiAgICAgIHJldHVybiBfX2JlZzsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBfT3V0SXRlcg0KICAgIG1vbmV5X3B1dDxfQ2hhclQs
IF9PdXRJdGVyPjo6DQogICAgZG9fcHV0KGl0ZXJfdHlwZSBfX3MsIGJvb2wgX19pbnRsLCBpb3Nf
YmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwNCiAgICAgICAgICAgbG9uZyBkb3VibGUgX191
bml0cykgY29uc3QNCiAgICB7DQogICAgICBjb25zdCBsb2NhbGUgX19sb2MgPSBfX2lvLmdldGxv
YygpOw0KICAgICAgY29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdHlwZSA9IHVzZV9mYWNldDxjdHlw
ZTxfQ2hhclQ+ID4oX19sb2MpOw0KIyAxMTcxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzDQogICAgICBjb25zdCBpbnQgX19jc19zaXpl
ID0gbnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjptYXhfZXhwb25lbnQxMCArIDU7DQogICAg
ICBjaGFyKiBfX2NzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KF9fYnVpbHRpbl9hbGxvY2EoX19jc19z
aXplKSk7DQogICAgICBpbnQgX19sZW4gPSBfX2NvbnZlcnRfZnJvbV92KF9fY3MsIDAsICIlLjAx
TGYiLCBfX3VuaXRzLCBfU19jX2xvY2FsZSk7DQoNCiAgICAgIF9DaGFyVCogX193cyA9IHN0YXRp
Y19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkgKiBfX2NzX3Np
emUpKTsNCiAgICAgIF9fY3R5cGUud2lkZW4oX19jcywgX19jcyArIF9fbGVuLCBfX3dzKTsNCiAg
ICAgIHN0cmluZ190eXBlIF9fZGlnaXRzKF9fd3MpOw0KICAgICAgcmV0dXJuIHRoaXMtPmRvX3B1
dChfX3MsIF9faW50bCwgX19pbywgX19maWxsLCBfX2RpZ2l0cyk7DQogICAgfQ0KDQogIHRlbXBs
YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+DQogICAgX091dEl0ZXINCiAg
ICBtb25leV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46Og0KICAgIGRvX3B1dChpdGVyX3R5cGUgX19z
LCBib29sIF9faW50bCwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsDQogICAgICAg
ICAgIGNvbnN0IHN0cmluZ190eXBlJiBfX2RpZ2l0cykgY29uc3QNCiAgICB7DQogICAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOw0KICAgICAgdHlw
ZWRlZiBtb25leV9iYXNlOjpwYXJ0IHBhcnQ7DQoNCiAgICAgIGNvbnN0IGxvY2FsZSBfX2xvYyA9
IF9faW8uZ2V0bG9jKCk7DQogICAgICBjb25zdCBzaXplX3R5cGUgX193aWR0aCA9IHN0YXRpY19j
YXN0PHNpemVfdHlwZT4oX19pby53aWR0aCgpKTsNCg0KDQogICAgICB0eXBlZGVmIG1vbmV5cHVu
Y3Q8X0NoYXJULCB0cnVlPiBfX21vbmV5X3RydWU7DQogICAgICB0eXBlZGVmIG1vbmV5cHVuY3Q8
X0NoYXJULCBmYWxzZT4gX19tb25leV9mYWxzZTsNCiAgICAgIGNvbnN0IF9fbW9uZXlfdHJ1ZSYg
X19tcHQgPSB1c2VfZmFjZXQ8X19tb25leV90cnVlPihfX2xvYyk7DQogICAgICBjb25zdCBfX21v
bmV5X2ZhbHNlJiBfX21wZiA9IHVzZV9mYWNldDxfX21vbmV5X2ZhbHNlPihfX2xvYyk7DQogICAg
ICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4g
PihfX2xvYyk7DQoNCg0KDQogICAgICBjb25zdCBjaGFyX3R5cGUqIF9fYmVnID0gX19kaWdpdHMu
ZGF0YSgpOw0KICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2VuZCA9IF9fYmVnICsgX19kaWdpdHMu
c2l6ZSgpOw0KICAgICAgbW9uZXlfYmFzZTo6cGF0dGVybiBfX3A7DQogICAgICBzdHJpbmdfdHlw
ZSBfX3NpZ247DQogICAgICBpZiAoKl9fYmVnICE9IF9fY3R5cGUud2lkZW4oJy0nKSkNCiAgICAg
ICAgew0KICAgICAgICAgIF9fcCA9IF9faW50bCA/IF9fbXB0LnBvc19mb3JtYXQoKSA6IF9fbXBm
LnBvc19mb3JtYXQoKTsNCiAgICAgICAgICBfX3NpZ24gPV9faW50bCA/IF9fbXB0LnBvc2l0aXZl
X3NpZ24oKSA6IF9fbXBmLnBvc2l0aXZlX3NpZ24oKTsNCiAgICAgICAgfQ0KICAgICAgZWxzZQ0K
ICAgICAgICB7DQogICAgICAgICAgX19wID0gX19pbnRsID8gX19tcHQubmVnX2Zvcm1hdCgpIDog
X19tcGYubmVnX2Zvcm1hdCgpOw0KICAgICAgICAgIF9fc2lnbiA9X19pbnRsID8gX19tcHQubmVn
YXRpdmVfc2lnbigpIDogX19tcGYubmVnYXRpdmVfc2lnbigpOw0KICAgICAgICAgICsrX19iZWc7
DQogICAgICAgIH0NCg0KDQogICAgICBfX2VuZCA9IF9fY3R5cGUuc2Nhbl9ub3QoY3R5cGVfYmFz
ZTo6ZGlnaXQsIF9fYmVnLCBfX2VuZCk7DQogICAgICBpZiAoX19iZWcgIT0gX19lbmQpDQogICAg
ICAgIHsNCg0KDQoNCiAgICAgICAgICBzdHJpbmdfdHlwZSBfX3JlczsNCiAgICAgICAgICBzdHJp
bmdfdHlwZSBfX3ZhbHVlOw0KICAgICAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9fc3ltYm9sID0g
X19pbnRsID8gX19tcHQuY3Vycl9zeW1ib2woKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogX19tcGYuY3Vycl9zeW1ib2woKTsNCg0KDQogICAgICAgICAg
Y29uc3QgaW50IF9fZnJhYyA9IF9faW50bCA/IF9fbXB0LmZyYWNfZGlnaXRzKCkNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19tcGYuZnJhY19kaWdpdHMoKTsNCiAgICAg
ICAgICBpZiAoX19mcmFjID4gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY29uc3Qg
Y2hhcl90eXBlIF9fZCA9IF9faW50bCA/IF9fbXB0LmRlY2ltYWxfcG9pbnQoKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19tcGYuZGVjaW1hbF9wb2ludCgp
Ow0KICAgICAgICAgICAgICBpZiAoX19lbmQgLSBfX2JlZyA+PSBfX2ZyYWMpDQogICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgX192YWx1ZSA9IHN0cmluZ190eXBlKF9fZW5kIC0g
X19mcmFjLCBfX2VuZCk7DQogICAgICAgICAgICAgICAgICBfX3ZhbHVlLmluc2VydChfX3ZhbHVl
LmJlZ2luKCksIF9fZCk7DQogICAgICAgICAgICAgICAgICBfX2VuZCAtPSBfX2ZyYWM7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KDQog
ICAgICAgICAgICAgICAgICBfX3ZhbHVlID0gc3RyaW5nX3R5cGUoX19iZWcsIF9fZW5kKTsNCiAg
ICAgICAgICAgICAgICAgIGludCBfX3BhZGRlYyA9IF9fZnJhYyAtIChfX2VuZCAtIF9fYmVnKTsN
CiAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZSBfX3plcm8gPSBfX2N0eXBlLndpZGVuKCcwJyk7
DQogICAgICAgICAgICAgICAgICBfX3ZhbHVlLmluc2VydChfX3ZhbHVlLmJlZ2luKCksIF9fcGFk
ZGVjLCBfX3plcm8pOw0KICAgICAgICAgICAgICAgICAgX192YWx1ZS5pbnNlcnQoX192YWx1ZS5i
ZWdpbigpLCBfX2QpOw0KICAgICAgICAgICAgICAgICAgX19iZWcgPSBfX2VuZDsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQoNCg0KDQogICAgICAgICAgaWYgKF9fYmVnICE9IF9f
ZW5kKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBjb25zdCBzdHJpbmcgX19ncm91cGlu
ZyA9IF9faW50bCA/IF9fbXB0Lmdyb3VwaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBfX21wZi5ncm91cGluZygpOw0KICAgICAgICAgICAgICBp
ZiAoX19ncm91cGluZy5zaXplKCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhcl90eXBlIF9fc2VwID0gX19pbnRsID8gX19tcHQudGhvdXNhbmRzX3NlcCgp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfX21w
Zi50aG91c2FuZHNfc2VwKCk7DQogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX2diZWcg
PSBfX2dyb3VwaW5nLmNfc3RyKCk7DQogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX2dl
bmQgPSBfX2diZWcgKyBfX2dyb3VwaW5nLnNpemUoKTsNCiAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCBfX24gPSAoX19lbmQgLSBfX2JlZykgKiAyOw0KICAgICAgICAgICAgICAgICAgX0NoYXJU
KiBfX3dzMiA9DQogICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVp
bHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkgKiBfX24pKTsNCiAgICAgICAgICAgICAgICAgIF9D
aGFyVCogX193c19lbmQgPSBfX2FkZF9ncm91cGluZyhfX3dzMiwgX19zZXAsIF9fZ2JlZywNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dlbmQs
IF9fYmVnLCBfX2VuZCk7DQogICAgICAgICAgICAgICAgICBfX3ZhbHVlLmluc2VydCgwLCBfX3dz
MiwgX193c19lbmQgLSBfX3dzMik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBl
bHNlDQogICAgICAgICAgICAgICAgX192YWx1ZS5pbnNlcnQoMCwgc3RyaW5nX3R5cGUoX19iZWcs
IF9fZW5kKSk7DQogICAgICAgICAgICB9DQoNCg0KICAgICAgICAgIGlvc19iYXNlOjpmbXRmbGFn
cyBfX2YgPSBfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6YWRqdXN0ZmllbGQ7DQogICAgICAgICAg
c2l6ZV90eXBlIF9fbGVuID0gX192YWx1ZS5zaXplKCkgKyBfX3NpZ24uc2l6ZSgpOw0KICAgICAg
ICAgIF9fbGVuICs9IChfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6c2hvd2Jhc2UpID8gX19zeW1i
b2wuc2l6ZSgpIDogMDsNCiAgICAgICAgICBib29sIF9fdGVzdGlwYWQgPSBfX2YgPT0gaW9zX2Jh
c2U6OmludGVybmFsICYmIF9fbGVuIDwgX193aWR0aDsNCg0KDQogICAgICAgICAgZm9yIChpbnQg
X19pID0gMDsgX19pIDwgNDsgKytfX2kpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIHBh
cnQgX193aGljaCA9IHN0YXRpY19jYXN0PHBhcnQ+KF9fcC5maWVsZFtfX2ldKTsNCiAgICAgICAg
ICAgICAgc3dpdGNoIChfX3doaWNoKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICBjYXNlIG1vbmV5X2Jhc2U6OnN5bWJvbDoNCiAgICAgICAgICAgICAgICAgIGlmIChfX2lvLmZs
YWdzKCkgJiBpb3NfYmFzZTo6c2hvd2Jhc2UpDQogICAgICAgICAgICAgICAgICAgIF9fcmVzICs9
IF9fc3ltYm9sOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2Fz
ZSBtb25leV9iYXNlOjpzaWduOg0KDQoNCg0KICAgICAgICAgICAgICAgICAgaWYgKF9fc2lnbi5z
aXplKCkpDQogICAgICAgICAgICAgICAgICAgIF9fcmVzICs9IF9fc2lnblswXTsNCiAgICAgICAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgbW9uZXlfYmFzZTo6dmFsdWU6
DQogICAgICAgICAgICAgICAgICBfX3JlcyArPSBfX3ZhbHVlOw0KICAgICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBtb25leV9iYXNlOjpzcGFjZToNCg0KDQoNCiAg
ICAgICAgICAgICAgICAgIGlmIChfX3Rlc3RpcGFkKQ0KICAgICAgICAgICAgICAgICAgICBfX3Jl
cyArPSBzdHJpbmdfdHlwZShfX3dpZHRoIC0gX19sZW4sIF9fZmlsbCk7DQogICAgICAgICAgICAg
ICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIF9fcmVzICs9IF9fY3R5cGUud2lkZW4oX19m
aWxsKTsNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgbW9u
ZXlfYmFzZTo6bm9uZToNCiAgICAgICAgICAgICAgICAgIGlmIChfX3Rlc3RpcGFkKQ0KICAgICAg
ICAgICAgICAgICAgICBfX3JlcyArPSBzdHJpbmdfdHlwZShfX3dpZHRoIC0gX19sZW4sIF9fZmls
bCk7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQoNCg0KICAgICAgICAgIGlmIChfX3NpZ24uc2l6ZSgpID4gMSkNCiAgICAgICAgICAg
IF9fcmVzICs9IHN0cmluZ190eXBlKF9fc2lnbi5iZWdpbigpICsgMSwgX19zaWduLmVuZCgpKTsN
Cg0KDQogICAgICAgICAgX19sZW4gPSBfX3Jlcy5zaXplKCk7DQogICAgICAgICAgaWYgKF9fd2lk
dGggPiBfX2xlbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWYgKF9fZiA9PSBpb3Nf
YmFzZTo6bGVmdCkNCg0KICAgICAgICAgICAgICAgIF9fcmVzLmFwcGVuZChfX3dpZHRoIC0gX19s
ZW4sIF9fZmlsbCk7DQogICAgICAgICAgICAgIGVsc2UNCg0KICAgICAgICAgICAgICAgIF9fcmVz
Lmluc2VydCgwLCBzdHJpbmdfdHlwZShfX3dpZHRoIC0gX19sZW4sIF9fZmlsbCkpOw0KICAgICAg
ICAgICAgICBfX2xlbiA9IF9fd2lkdGg7DQogICAgICAgICAgICB9DQoNCg0KICAgICAgICAgIGZv
ciAoc2l6ZV90eXBlIF9faiA9IDA7IF9faiA8IF9fbGVuOyArK19faiwgKytfX3MpDQogICAgICAg
ICAgICAqX19zID0gX19yZXNbX19qXTsNCiAgICAgICAgfQ0KICAgICAgX19pby53aWR0aCgwKTsN
CiAgICAgIHJldHVybiBfX3M7DQogICAgfQ0KDQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0KICAgIHRpbWVfYmFzZTo6ZGF0ZW9yZGVyDQogICAg
dGltZV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6ZG9fZGF0ZV9vcmRlcigpIGNvbnN0DQogICAgeyBy
ZXR1cm4gdGltZV9iYXNlOjpub19vcmRlcjsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICB2b2lkDQogICAgdGltZV9nZXQ8X0NoYXJULCBfSW5J
dGVyPjo6DQogICAgX01fZXh0cmFjdF92aWFfZm9ybWF0KGl0ZXJfdHlwZSYgX19iZWcsIGl0ZXJf
dHlwZSYgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBp
b3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHRtKiBfX3RtLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfQ2hhclQqIF9fZm9ybWF0KSBjb25zdA0KICAgIHsNCiAgICAgIGxvY2FsZSBf
X2xvYyA9IF9faW8uZ2V0bG9jKCk7DQogICAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+IGNvbnN0JiBf
X3RwID0gdXNlX2ZhY2V0PF9fdGltZXB1bmN0PF9DaGFyVD4gPihfX2xvYyk7DQogICAgICBjb25z
dCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xv
Yyk7DQogICAgICBzaXplX3QgX19sZW4gPSBjaGFyX3RyYWl0czxfQ2hhclQ+OjpsZW5ndGgoX19m
b3JtYXQpOw0KDQogICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2JlZyAhPSBfX2VuZCAmJiBf
X2kgPCBfX2xlbiAmJiAhX19lcnI7ICsrX19pKQ0KICAgICAgICB7DQogICAgICAgICAgY2hhciBf
X2MgPSBfX2Zvcm1hdFtfX2ldOw0KICAgICAgICAgIGlmIChfX2MgPT0gJyUnKQ0KICAgICAgICAg
ICAgew0KDQogICAgICAgICAgICAgIF9fYyA9IF9fZm9ybWF0WysrX19pXTsNCiAgICAgICAgICAg
ICAgY2hhciBfX21vZCA9IDA7DQogICAgICAgICAgICAgIGludCBfX21lbSA9IDA7DQogICAgICAg
ICAgICAgIGlmIChfX2MgPT0gJ0UnIHx8IF9fYyA9PSAnTycpDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgX19tb2QgPSBfX2M7DQogICAgICAgICAgICAgICAgICBfX2MgPSBf
X2Zvcm1hdFsrK19faV07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBzd2l0Y2gg
KF9fYykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBf
X2NzOw0KICAgICAgICAgICAgICAgICAgX0NoYXJUIF9fd2NzWzEwXTsNCiAgICAgICAgICAgICAg
ICBjYXNlICdhJzoNCg0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2RheXMx
WzddOw0KICAgICAgICAgICAgICAgICAgX190cC5fTV9kYXlzX2FiYnJldmlhdGVkKF9fZGF5czEp
Ow0KICAgICAgICAgICAgICAgICAgX01fZXh0cmFjdF9uYW1lKF9fYmVnLCBfX2VuZCwgX190bS0+
dG1fd2RheSwgX19kYXlzMSwgNywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2Vycik7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdB
JzoNCg0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2RheXMyWzddOw0KICAg
ICAgICAgICAgICAgICAgX190cC5fTV9kYXlzKF9fZGF5czIpOw0KICAgICAgICAgICAgICAgICAg
X01fZXh0cmFjdF9uYW1lKF9fYmVnLCBfX2VuZCwgX190bS0+dG1fd2RheSwgX19kYXlzMiwgNywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vycik7DQogICAgICAgICAgICAg
ICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdoJzoNCiAgICAgICAgICAgICAgICBj
YXNlICdiJzoNCg0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX21vbnRoczFb
MTJdOw0KICAgICAgICAgICAgICAgICAgX190cC5fTV9tb250aHNfYWJicmV2aWF0ZWQoX19tb250
aHMxKTsNCiAgICAgICAgICAgICAgICAgIF9NX2V4dHJhY3RfbmFtZShfX2JlZywgX19lbmQsIF9f
dG0tPnRtX21vbiwgX19tb250aHMxLCAxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2Vycik7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBj
YXNlICdCJzoNCg0KICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX21vbnRoczJb
MTJdOw0KICAgICAgICAgICAgICAgICAgX190cC5fTV9tb250aHMoX19tb250aHMyKTsNCiAgICAg
ICAgICAgICAgICAgIF9NX2V4dHJhY3RfbmFtZShfX2JlZywgX19lbmQsIF9fdG0tPnRtX21vbiwg
X19tb250aHMyLCAxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Vycik7
DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdjJzoNCg0K
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2R0WzJdOw0KICAgICAgICAgICAg
ICAgICAgX190cC5fTV9kYXRlX3RpbWVfZm9ybWF0cyhfX2R0KTsNCiAgICAgICAgICAgICAgICAg
IF9NX2V4dHJhY3RfdmlhX2Zvcm1hdChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3RtLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZHRbMF0pOw0KICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnZCc6DQoNCiAgICAgICAg
ICAgICAgICAgIF9NX2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwgX190bS0+dG1fbWRheSwgMSwg
MzEsIDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2N0eXBlLCBfX2Vycik7
DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdEJzoNCg0K
ICAgICAgICAgICAgICAgICAgX19jcyA9ICIlbS8lZC8leSI7DQogICAgICAgICAgICAgICAgICBf
X2N0eXBlLndpZGVuKF9fY3MsIF9fY3MgKyA5LCBfX3djcyk7DQogICAgICAgICAgICAgICAgICBf
TV9leHRyYWN0X3ZpYV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3djcyk7DQogICAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdIJzoNCg0KICAgICAgICAgICAg
ICAgICAgX01fZXh0cmFjdF9udW0oX19iZWcsIF9fZW5kLCBfX3RtLT50bV9ob3VyLCAwLCAyMywg
MiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY3R5cGUsIF9fZXJyKTsNCiAg
ICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ0knOg0KDQogICAg
ICAgICAgICAgICAgICBfTV9leHRyYWN0X251bShfX2JlZywgX19lbmQsIF9fdG0tPnRtX2hvdXIs
IDEsIDEyLCAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jdHlwZSwgX19l
cnIpOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnbSc6
DQoNCiAgICAgICAgICAgICAgICAgIF9NX2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwgX19tZW0s
IDEsIDEyLCAyLCBfX2N0eXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19l
cnIpOw0KICAgICAgICAgICAgICAgICAgaWYgKCFfX2VycikNCiAgICAgICAgICAgICAgICAgICAg
X190bS0+dG1fbW9uID0gX19tZW0gLSAxOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAg
ICAgICAgICAgICAgY2FzZSAnTSc6DQoNCiAgICAgICAgICAgICAgICAgIF9NX2V4dHJhY3RfbnVt
KF9fYmVnLCBfX2VuZCwgX190bS0+dG1fbWluLCAwLCA1OSwgMiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY3R5cGUsIF9fZXJyKTsNCiAgICAgICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgICAgICAgIGNhc2UgJ24nOg0KICAgICAgICAgICAgICAgICAgaWYgKF9fY3R5
cGUubmFycm93KCpfX2JlZywgMCkgPT0gJ1xuJykNCiAgICAgICAgICAgICAgICAgICAgKytfX2Jl
ZzsNCiAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgX19lcnIgfD0g
aW9zX2Jhc2U6OmZhaWxiaXQ7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAg
ICAgICBjYXNlICdSJzoNCg0KICAgICAgICAgICAgICAgICAgX19jcyA9ICIlSDolTSI7DQogICAg
ICAgICAgICAgICAgICBfX2N0eXBlLndpZGVuKF9fY3MsIF9fY3MgKyA2LCBfX3djcyk7DQogICAg
ICAgICAgICAgICAgICBfTV9leHRyYWN0X3ZpYV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBf
X2VyciwgX190bSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3dj
cyk7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdTJzoN
Cg0KICAgICAgICAgICAgICAgICAgX01fZXh0cmFjdF9udW0oX19iZWcsIF9fZW5kLCBfX3RtLT50
bV9zZWMsIDAsIDU5LCAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jdHlw
ZSwgX19lcnIpOw0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2Fz
ZSAndCc6DQogICAgICAgICAgICAgICAgICBpZiAoX19jdHlwZS5uYXJyb3coKl9fYmVnLCAwKSA9
PSAnXHQnKQ0KICAgICAgICAgICAgICAgICAgICArK19fYmVnOw0KICAgICAgICAgICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnVCc6DQoNCiAgICAgICAg
ICAgICAgICAgIF9fY3MgPSAiJUg6JU06JVMiOw0KICAgICAgICAgICAgICAgICAgX19jdHlwZS53
aWRlbihfX2NzLCBfX2NzICsgOSwgX193Y3MpOw0KICAgICAgICAgICAgICAgICAgX01fZXh0cmFj
dF92aWFfZm9ybWF0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdG0sDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX193Y3MpOw0KICAgICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAneCc6DQoNCiAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXJfdHlwZSogX19kYXRlc1syXTsNCiAgICAgICAgICAgICAgICAgIF9fdHAuX01fZGF0
ZV9mb3JtYXRzKF9fZGF0ZXMpOw0KICAgICAgICAgICAgICAgICAgX01fZXh0cmFjdF92aWFfZm9y
bWF0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdG0sDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19kYXRlc1swXSk7DQogICAgICAgICAgICAgICAgICBicmVh
azsNCiAgICAgICAgICAgICAgICBjYXNlICdYJzoNCg0KICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhcl90eXBlKiBfX3RpbWVzWzJdOw0KICAgICAgICAgICAgICAgICAgX190cC5fTV90aW1lX2Zv
cm1hdHMoX190aW1lcyk7DQogICAgICAgICAgICAgICAgICBfTV9leHRyYWN0X3ZpYV9mb3JtYXQo
X19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3RpbWVzWzBdKTsNCiAgICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgICAgIGNhc2UgJ3knOg0KDQogICAgICAgICAgICAgICAgICBfTV9leHRyYWN0
X251bShfX2JlZywgX19lbmQsIF9fdG0tPnRtX3llYXIsIDAsIDk5LCAyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jdHlwZSwgX19lcnIpOw0KICAgICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnWSc6DQoNCiAgICAgICAgICAgICAgICAgIF9N
X2V4dHJhY3RfbnVtKF9fYmVnLCBfX2VuZCwgX19tZW0sIDAsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSwgNCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY3R5cGUsIF9fZXJyKTsNCiAgICAgICAgICAgICAgICAg
IGlmICghX19lcnIpDQogICAgICAgICAgICAgICAgICAgIF9fdG0tPnRtX3llYXIgPSBfX21lbSAt
IDE5MDA7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICda
JzoNCg0KICAgICAgICAgICAgICAgICAgaWYgKF9fY3R5cGUuaXMoY3R5cGVfYmFzZTo6dXBwZXIs
ICpfX2JlZykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICBp
bnQgX190bXA7DQogICAgICAgICAgICAgICAgICAgICAgX01fZXh0cmFjdF9uYW1lKF9fYmVnLCBf
X2VuZCwgX190bXAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdGlt
ZXB1bmN0PF9DaGFyVD46Ol9TX3RpbWV6b25lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTQsIF9fZXJyKTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgY2hhcl90
eXBlIF9fYyA9ICpfX2JlZzsNCiAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9fZXJyICYmIF9f
dG1wID09IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKF9fYyA9PSBfX2N0eXBlLndp
ZGVuKCctJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IF9fYyA9PSBfX2N0eXBl
LndpZGVuKCcrJykpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICBfTV9leHRyYWN0X251bShfX2JlZywgX19lbmQsIF9fdG1wLCAwLCAyMywgMiwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY3R5cGUsIF9fZXJy
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX01fZXh0cmFjdF9udW0oX19iZWcsIF9fZW5k
LCBfX3RtcCwgMCwgNTksIDIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2N0eXBlLCBfX2Vycik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCiAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCg0KICAgICAg
ICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICBpZiAoX19jID09IF9fY3R5cGUubmFycm93
KCpfX2JlZywgMCkpDQogICAgICAgICAgICAgICAgICAgICsrX19iZWc7DQogICAgICAgICAgICAg
ICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgdm9pZA0KICAgIHRpbWVfZ2V0PF9D
aGFyVCwgX0luSXRlcj46Og0KICAgIF9NX2V4dHJhY3RfbnVtKGl0ZXJfdHlwZSYgX19iZWcsIGl0
ZXJfdHlwZSYgX19lbmQsIGludCYgX19tZW1iZXIsDQogICAgICAgICAgICAgICAgICAgaW50IF9f
bWluLCBpbnQgX19tYXgsIHNpemVfdCBfX2xlbiwNCiAgICAgICAgICAgICAgICAgICBjb25zdCBj
dHlwZTxfQ2hhclQ+JiBfX2N0eXBlLA0KICAgICAgICAgICAgICAgICAgIGlvc19iYXNlOjppb3N0
YXRlJiBfX2VycikgY29uc3QNCiAgICB7DQogICAgICBzaXplX3QgX19pID0gMDsNCiAgICAgIHN0
cmluZyBfX2RpZ2l0czsNCiAgICAgIGJvb2wgX190ZXN0dmFsaWQgPSB0cnVlOw0KICAgICAgY2hh
cl90eXBlIF9fYyA9ICpfX2JlZzsNCiAgICAgIHdoaWxlIChfX2JlZyAhPSBfX2VuZCAmJiBfX2kg
PCBfX2xlbg0KICAgICAgICAgICAgICYmIF9fY3R5cGUuaXMoY3R5cGVfYmFzZTo6ZGlnaXQsIF9f
YykpDQogICAgICAgIHsNCiAgICAgICAgICBfX2RpZ2l0cyArPSBfX2N0eXBlLm5hcnJvdyhfX2Ms
IDApOw0KICAgICAgICAgIF9fYyA9ICooKytfX2JlZyk7DQogICAgICAgICAgKytfX2k7DQogICAg
ICAgIH0NCiAgICAgIGlmIChfX2kgPT0gX19sZW4pDQogICAgICAgIHsNCiAgICAgICAgICBpbnQg
X192YWx1ZSA9IGF0b2koX19kaWdpdHMuY19zdHIoKSk7DQogICAgICAgICAgaWYgKF9fbWluIDw9
IF9fdmFsdWUgJiYgX192YWx1ZSA8PSBfX21heCkNCiAgICAgICAgICAgIF9fbWVtYmVyID0gX192
YWx1ZTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICBfX3Rlc3R2YWxpZCA9IGZhbHNlOw0K
ICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7DQogICAg
ICBpZiAoIV9fdGVzdHZhbGlkKQ0KICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsN
CiAgICB9DQoNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRl
cj4NCiAgICB2b2lkDQogICAgdGltZV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6DQogICAgX01fZXh0
cmFjdF9uYW1lKGl0ZXJfdHlwZSYgX19iZWcsIGl0ZXJfdHlwZSYgX19lbmQsIGludCYgX19tZW1i
ZXIsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9DaGFyVCoqIF9fbmFtZXMsIHNpemVfdCBf
X2luZGV4bGVuLA0KICAgICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIp
IGNvbnN0DQogICAgew0KICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+IF9fdHJh
aXRzX3R5cGU7DQogICAgICBpbnQqIF9fbWF0Y2hlcyA9IHN0YXRpY19jYXN0PGludCo+KF9fYnVp
bHRpbl9hbGxvY2Eoc2l6ZW9mKGludCkgKiBfX2luZGV4bGVuKSk7DQogICAgICBzaXplX3QgX19u
bWF0Y2hlcyA9IDA7DQogICAgICBzaXplX3QgX19wb3MgPSAwOw0KICAgICAgYm9vbCBfX3Rlc3R2
YWxpZCA9IHRydWU7DQogICAgICBjb25zdCBjaGFyX3R5cGUqIF9fbmFtZTsNCg0KICAgICAgY2hh
cl90eXBlIF9fYyA9ICpfX2JlZzsNCg0KICAgICAgZm9yIChzaXplX3QgX19pMSA9IDA7IF9faTEg
PCBfX2luZGV4bGVuOyArK19faTEpDQogICAgICAgIGlmIChfX2MgPT0gX19uYW1lc1tfX2kxXVsw
XSkNCiAgICAgICAgICBfX21hdGNoZXNbX19ubWF0Y2hlcysrXSA9IF9faTE7DQoNCiAgICAgIHdo
aWxlKF9fbm1hdGNoZXMgPiAxKQ0KICAgICAgICB7DQoNCiAgICAgICAgICBzaXplX3QgX19taW5s
ZW4gPSAxMDsNCiAgICAgICAgICBmb3IgKHNpemVfdCBfX2kyID0gMDsgX19pMiA8IF9fbm1hdGNo
ZXM7ICsrX19pMikNCiAgICAgICAgICAgIF9fbWlubGVuID0gbWluKF9fbWlubGVuLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX190cmFpdHNfdHlwZTo6bGVuZ3RoKF9fbmFtZXNbX19tYXRj
aGVzW19faTJdXSkpOw0KDQogICAgICAgICAgaWYgKF9fcG9zIDwgX19taW5sZW4gJiYgX19iZWcg
IT0gX19lbmQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICsrX19wb3M7DQogICAgICAg
ICAgICAgIF9fYyA9ICooKytfX2JlZyk7DQogICAgICAgICAgICAgIGZvciAoc2l6ZV90IF9faTMg
PSAwOyBfX2kzIDwgX19ubWF0Y2hlczsgKytfX2kzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgIF9fbmFtZSA9IF9fbmFtZXNbX19tYXRjaGVzW19faTNdXTsNCiAgICAgICAg
ICAgICAgICAgIGlmIChfX25hbWVbX19wb3NdICE9IF9fYykNCiAgICAgICAgICAgICAgICAgICAg
X19tYXRjaGVzW19faTNdID0gX19tYXRjaGVzWy0tX19ubWF0Y2hlc107DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICB9DQoNCiAgICAgIGlmIChfX25tYXRjaGVzID09IDEpDQogICAgICAgIHsNCg0KICAg
ICAgICAgIF9fbmFtZSA9IF9fbmFtZXNbX19tYXRjaGVzWzBdXTsNCiAgICAgICAgICBjb25zdCBz
aXplX3QgX19sZW4gPSBfX3RyYWl0c190eXBlOjpsZW5ndGgoX19uYW1lKTsNCiAgICAgICAgICB3
aGlsZSAoX19wb3MgPCBfX2xlbiAmJiBfX2JlZyAhPSBfX2VuZCAmJiBfX25hbWVbX19wb3NdID09
ICpfX2JlZykNCiAgICAgICAgICAgICsrX19iZWcsICsrX19wb3M7DQoNCiAgICAgICAgICBpZiAo
X19sZW4gPT0gX19wb3MpDQogICAgICAgICAgICBfX21lbWJlciA9IF9fbWF0Y2hlc1swXTsNCiAg
ICAgICAgICBlbHNlDQogICAgICAgICAgICBfX3Rlc3R2YWxpZCA9IGZhbHNlOw0KICAgICAgICB9
DQogICAgICBlbHNlDQogICAgICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7DQogICAgICBpZiAoIV9f
dGVzdHZhbGlkKQ0KICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCiAgICB9DQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0KICAgIF9Jbkl0
ZXINCiAgICB0aW1lX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBkb19nZXRfdGltZShpdGVy
X3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sDQogICAgICAgICAg
ICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB0bSogX190bSkgY29uc3QNCiAgICB7DQog
ICAgICBfQ2hhclQgX193Y3NbM107DQogICAgICBjb25zdCBjaGFyKiBfX2NzID0gIiVYIjsNCiAg
ICAgIGxvY2FsZSBfX2xvYyA9IF9faW8uZ2V0bG9jKCk7DQogICAgICBjdHlwZTxfQ2hhclQ+IGNv
bnN0JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7DQogICAgICBf
X2N0eXBlLndpZGVuKF9fY3MsIF9fY3MgKyAzLCBfX3djcyk7DQogICAgICBfTV9leHRyYWN0X3Zp
YV9mb3JtYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX190bSwgX193Y3MpOw0KICAgICAg
aWYgKF9fYmVnID09IF9fZW5kKQ0KICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0Ow0K
ICAgICAgcmV0dXJuIF9fYmVnOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9Jbkl0ZXI+DQogICAgX0luSXRlcg0KICAgIHRpbWVfZ2V0PF9DaGFyVCwgX0lu
SXRlcj46Og0KICAgIGRvX2dldF9kYXRlKGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5k
LCBpb3NfYmFzZSYgX19pbywNCiAgICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19l
cnIsIHRtKiBfX3RtKSBjb25zdA0KICAgIHsNCiAgICAgIF9DaGFyVCBfX3djc1szXTsNCiAgICAg
IGNvbnN0IGNoYXIqIF9fY3MgPSAiJXgiOw0KICAgICAgbG9jYWxlIF9fbG9jID0gX19pby5nZXRs
b2MoKTsNCiAgICAgIGN0eXBlPF9DaGFyVD4gY29uc3QmIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5
cGU8X0NoYXJUPiA+KF9fbG9jKTsNCiAgICAgIF9fY3R5cGUud2lkZW4oX19jcywgX19jcyArIDMs
IF9fd2NzKTsNCiAgICAgIF9NX2V4dHJhY3RfdmlhX2Zvcm1hdChfX2JlZywgX19lbmQsIF9faW8s
IF9fZXJyLCBfX3RtLCBfX3djcyk7DQogICAgICBpZiAoX19iZWcgPT0gX19lbmQpDQogICAgICAg
IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7DQogICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5J
dGVyDQogICAgdGltZV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6DQogICAgZG9fZ2V0X3dlZWtkYXko
aXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAg
ICAgICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0DQog
ICAgew0KICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+IF9fdHJhaXRzX3R5cGU7
DQogICAgICBsb2NhbGUgX19sb2MgPSBfX2lvLmdldGxvYygpOw0KICAgICAgX190aW1lcHVuY3Q8
X0NoYXJUPiBjb25zdCYgX190cCA9IHVzZV9mYWNldDxfX3RpbWVwdW5jdDxfQ2hhclQ+ID4oX19s
b2MpOw0KICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2RheXNbN107DQogICAgICBfX3RwLl9NX2Rh
eXNfYWJicmV2aWF0ZWQoX19kYXlzKTsNCiAgICAgIGludCBfX3RtcHdkYXk7DQogICAgICBfTV9l
eHRyYWN0X25hbWUoX19iZWcsIF9fZW5kLCBfX3RtcHdkYXksIF9fZGF5cywgNywgX19lcnIpOw0K
DQoNCg0KDQoNCg0KDQogICAgICBpZiAoIV9fZXJyKQ0KICAgICAgICB7DQogICAgICAgICAgc2l6
ZV90IF9fcG9zID0gX190cmFpdHNfdHlwZTo6bGVuZ3RoKF9fZGF5c1tfX3RtcHdkYXldKTsNCiAg
ICAgICAgICBfX3RwLl9NX2RheXMoX19kYXlzKTsNCiAgICAgICAgICBjb25zdCBjaGFyX3R5cGUq
IF9fbmFtZSA9IF9fZGF5c1tfX3RtcHdkYXldOw0KICAgICAgICAgIGlmIChfX25hbWVbX19wb3Nd
ID09ICpfX2JlZykNCiAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
X19sZW4gPSBfX3RyYWl0c190eXBlOjpsZW5ndGgoX19uYW1lKTsNCiAgICAgICAgICAgICAgd2hp
bGUgKF9fcG9zIDwgX19sZW4gJiYgX19iZWcgIT0gX19lbmQNCiAgICAgICAgICAgICAgICAgICAg
ICYmIF9fbmFtZVtfX3Bvc10gPT0gKl9fYmVnKQ0KICAgICAgICAgICAgICAgICsrX19iZWcsICsr
X19wb3M7DQogICAgICAgICAgICAgIGlmIChfX2xlbiAhPSBfX3BvcykNCiAgICAgICAgICAgICAg
ICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBp
ZiAoIV9fZXJyKQ0KICAgICAgICAgICAgX190bS0+dG1fd2RheSA9IF9fdG1wd2RheTsNCiAgICAg
ICAgfQ0KICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQ0KICAgICAgICBfX2VyciB8PSBpb3NfYmFz
ZTo6ZW9mYml0Ow0KICAgICAgcmV0dXJuIF9fYmVnOw0KICAgICB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPg0KICAgIF9Jbkl0ZXINCiAgICB0aW1lX2dl
dDxfQ2hhclQsIF9Jbkl0ZXI+OjoNCiAgICBkb19nZXRfbW9udGhuYW1lKGl0ZXJfdHlwZSBfX2Jl
ZywgaXRlcl90eXBlIF9fZW5kLA0KICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2UmIF9faW8s
IGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0DQogICAgew0KICAgICAg
dHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+IF9fdHJhaXRzX3R5cGU7DQogICAgICBsb2Nh
bGUgX19sb2MgPSBfX2lvLmdldGxvYygpOw0KICAgICAgX190aW1lcHVuY3Q8X0NoYXJUPiBjb25z
dCYgX190cCA9IHVzZV9mYWNldDxfX3RpbWVwdW5jdDxfQ2hhclQ+ID4oX19sb2MpOw0KICAgICAg
Y29uc3QgY2hhcl90eXBlKiBfX21vbnRoc1sxMl07DQogICAgICBfX3RwLl9NX21vbnRoc19hYmJy
ZXZpYXRlZChfX21vbnRocyk7DQogICAgICBpbnQgX190bXBtb247DQogICAgICBfTV9leHRyYWN0
X25hbWUoX19iZWcsIF9fZW5kLCBfX3RtcG1vbiwgX19tb250aHMsIDEyLCBfX2Vycik7DQoNCg0K
DQoNCg0KDQoNCiAgICAgIGlmICghX19lcnIpDQogICAgICAgIHsNCiAgICAgICAgICBzaXplX3Qg
X19wb3MgPSBfX3RyYWl0c190eXBlOjpsZW5ndGgoX19tb250aHNbX190bXBtb25dKTsNCiAgICAg
ICAgICBfX3RwLl9NX21vbnRocyhfX21vbnRocyk7DQogICAgICAgICAgY29uc3QgY2hhcl90eXBl
KiBfX25hbWUgPSBfX21vbnRoc1tfX3RtcG1vbl07DQogICAgICAgICAgaWYgKF9fbmFtZVtfX3Bv
c10gPT0gKl9fYmVnKQ0KICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBfX2xlbiA9IF9fdHJhaXRzX3R5cGU6Omxlbmd0aChfX25hbWUpOw0KICAgICAgICAgICAgICB3
aGlsZSAoX19wb3MgPCBfX2xlbiAmJiBfX2JlZyAhPSBfX2VuZA0KICAgICAgICAgICAgICAgICAg
ICAgJiYgX19uYW1lW19fcG9zXSA9PSAqX19iZWcpDQogICAgICAgICAgICAgICAgKytfX2JlZywg
KytfX3BvczsNCiAgICAgICAgICAgICAgaWYgKF9fbGVuICE9IF9fcG9zKQ0KICAgICAgICAgICAg
ICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAg
IGlmICghX19lcnIpDQogICAgICAgICAgICBfX3RtLT50bV9tb24gPSBfX3RtcG1vbjsNCiAgICAg
ICAgfQ0KDQogICAgICBpZiAoX19iZWcgPT0gX19lbmQpDQogICAgICAgIF9fZXJyIHw9IGlvc19i
YXNlOjplb2ZiaXQ7DQogICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4NCiAgICBfSW5JdGVyDQogICAgdGltZV9n
ZXQ8X0NoYXJULCBfSW5JdGVyPjo6DQogICAgZG9fZ2V0X3llYXIoaXRlcl90eXBlIF9fYmVnLCBp
dGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLA0KICAgICAgICAgICAgICAgIGlvc19iYXNl
Ojppb3N0YXRlJiBfX2VyciwgdG0qIF9fdG0pIGNvbnN0DQogICAgew0KICAgICAgbG9jYWxlIF9f
bG9jID0gX19pby5nZXRsb2MoKTsNCiAgICAgIGNvbnN0IGN0eXBlPF9DaGFyVD4mIF9fY3R5cGUg
PSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsNCg0KICAgICAgY2hhcl90eXBlIF9f
YyA9ICpfX2JlZzsNCiAgICAgIHNpemVfdCBfX2kgPSAwOw0KICAgICAgc3RyaW5nIF9fZGlnaXRz
Ow0KICAgICAgd2hpbGUgKF9faSA8IDQgJiYgX19iZWcgIT0gX19lbmQgJiYgX19jdHlwZS5pcyhj
dHlwZV9iYXNlOjpkaWdpdCwgX19jKSkNCiAgICAgICAgew0KICAgICAgICAgIF9fZGlnaXRzICs9
IF9fY3R5cGUubmFycm93KF9fYywgMCk7DQogICAgICAgICAgX19jID0gKigrK19fYmVnKTsNCiAg
ICAgICAgICArK19faTsNCiAgICAgICAgfQ0KICAgICAgaWYgKF9faSA9PSAyIHx8IF9faSA9PSA0
KQ0KICAgICAgICB7DQogICAgICAgICAgbG9uZyBfX2w7DQogICAgICAgICAgX19jb252ZXJ0X3Rv
X3YoX19kaWdpdHMuY19zdHIoKSwgX19sLCBfX2VyciwgX1NfY19sb2NhbGUpOw0KICAgICAgICAg
IGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpICYmIF9fbCA8PSAyMTQ3NDgzNjQ3KQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICBfX2wgPSBfX2kgPT0gMiA/IF9fbCA6IF9fbCAt
IDE5MDA7DQogICAgICAgICAgICAgIF9fdG0tPnRtX3llYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KF9f
bCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgICAgX19lcnIg
fD0gaW9zX2Jhc2U6OmZhaWxiaXQ7DQogICAgICBpZiAoX19iZWcgPT0gX19lbmQpDQogICAgICAg
IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7DQogICAgICByZXR1cm4gX19iZWc7DQogICAgfQ0K
DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+DQogICAgX091
dEl0ZXINCiAgICB0aW1lX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6DQogICAgcHV0KGl0ZXJfdHlw
ZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUsIGNvbnN0IHRtKiBfX3RtLA0KICAgICAg
ICBjb25zdCBfQ2hhclQqIF9fYmVnLCBjb25zdCBfQ2hhclQqIF9fZW5kKSBjb25zdA0KICAgIHsN
CiAgICAgIGxvY2FsZSBfX2xvYyA9IF9faW8uZ2V0bG9jKCk7DQogICAgICBjdHlwZTxfQ2hhclQ+
IGNvbnN0JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7DQogICAg
ICB3aGlsZSAoX19iZWcgIT0gX19lbmQpDQogICAgICAgIHsNCiAgICAgICAgICBjaGFyIF9fYyA9
IF9fY3R5cGUubmFycm93KCpfX2JlZywgMCk7DQogICAgICAgICAgKytfX2JlZzsNCiAgICAgICAg
ICBpZiAoX19jID09ICclJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY2hhciBfX2Zv
cm1hdDsNCiAgICAgICAgICAgICAgY2hhciBfX21vZCA9IDA7DQogICAgICAgICAgICAgIHNpemVf
dCBfX2xlbiA9IDE7DQogICAgICAgICAgICAgIF9fYyA9IF9fY3R5cGUubmFycm93KCpfX2JlZywg
MCk7DQogICAgICAgICAgICAgICsrX19iZWc7DQogICAgICAgICAgICAgIGlmIChfX2MgPT0gJ0Un
IHx8IF9fYyA9PSAnTycpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgX19t
b2QgPSBfX2M7DQogICAgICAgICAgICAgICAgICBfX2Zvcm1hdCA9IF9fY3R5cGUubmFycm93KCpf
X2JlZywgMCk7DQogICAgICAgICAgICAgICAgICArK19fYmVnOw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIF9fZm9ybWF0ID0gX19jOw0KICAg
ICAgICAgICAgICBfX3MgPSB0aGlzLT5kb19wdXQoX19zLCBfX2lvLCBjaGFyX3R5cGUoKSwgX190
bSwgX19mb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21vZCk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAqX19zID0gX19jOw0KICAgICAgICAgICAgICArK19fczsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgICAgcmV0dXJuIF9fczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfT3V0SXRlcj4NCiAgICBfT3V0SXRlcg0KICAgIHRpbWVfcHV0PF9DaGFy
VCwgX091dEl0ZXI+OjoNCiAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8s
IGNoYXJfdHlwZSwgY29uc3QgdG0qIF9fdG0sDQogICAgICAgICAgIGNoYXIgX19mb3JtYXQsIGNo
YXIgX19tb2QpIGNvbnN0DQogICAgew0KICAgICAgbG9jYWxlIF9fbG9jID0gX19pby5nZXRsb2Mo
KTsNCiAgICAgIGN0eXBlPF9DaGFyVD4gY29uc3QmIF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8
X0NoYXJUPiA+KF9fbG9jKTsNCiAgICAgIF9fdGltZXB1bmN0PF9DaGFyVD4gY29uc3QmIF9fdHAg
PSB1c2VfZmFjZXQ8X190aW1lcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsNCg0KDQoNCiAgICAgIGNv
bnN0IHNpemVfdCBfX21heGxlbiA9IDY0Ow0KICAgICAgY2hhcl90eXBlKiBfX3JlcyA9DQogICAg
ICAgIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKGNoYXJf
dHlwZSkgKiBfX21heGxlbikpOw0KDQoNCg0KDQoNCg0KICAgICAgY2hhcl90eXBlIF9fZm10WzRd
Ow0KICAgICAgX19mbXRbMF0gPSBfX2N0eXBlLndpZGVuKCclJyk7DQogICAgICBpZiAoIV9fbW9k
KQ0KICAgICAgICB7DQogICAgICAgICAgX19mbXRbMV0gPSBfX2Zvcm1hdDsNCiAgICAgICAgICBf
X2ZtdFsyXSA9IGNoYXJfdHlwZSgpOw0KICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAgIHsN
CiAgICAgICAgICBfX2ZtdFsxXSA9IF9fbW9kOw0KICAgICAgICAgIF9fZm10WzJdID0gX19mb3Jt
YXQ7DQogICAgICAgICAgX19mbXRbM10gPSBjaGFyX3R5cGUoKTsNCiAgICAgICAgfQ0KDQogICAg
ICBfX3RwLl9NX3B1dChfX3JlcywgX19tYXhsZW4sIF9fZm10LCBfX3RtKTsNCg0KDQogICAgICBz
aXplX3QgX19sZW4gPSBjaGFyX3RyYWl0czxjaGFyX3R5cGU+OjpsZW5ndGgoX19yZXMpOw0KICAg
ICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19sZW47ICsrX19pLCArK19fcykNCiAgICAg
ICAgKl9fcyA9IF9fcmVzW19faV07DQogICAgICByZXR1cm4gX19zOw0KICAgIH0NCg0KDQoNCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGludA0KICAgIGNvbGxhdGU8X0NoYXJUPjo6
X01fY29tcGFyZShjb25zdCBfQ2hhclQqLCBjb25zdCBfQ2hhclQqKSBjb25zdA0KICAgIHsgcmV0
dXJuIDA7IH0NCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4NCiAgICBzaXplX3QNCiAg
ICBjb2xsYXRlPF9DaGFyVD46Ol9NX3RyYW5zZm9ybShfQ2hhclQqLCBjb25zdCBfQ2hhclQqLCBz
aXplX3QpIGNvbnN0DQogICAgeyByZXR1cm4gMDsgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVD4NCiAgICBpbnQNCiAgICBjb2xsYXRlPF9DaGFyVD46Og0KICAgIGRvX2NvbXBhcmUoY29u
c3QgX0NoYXJUKiBfX2xvMSwgY29uc3QgX0NoYXJUKiBfX2hpMSwNCiAgICAgICAgICAgICAgIGNv
bnN0IF9DaGFyVCogX19sbzIsIGNvbnN0IF9DaGFyVCogX19oaTIpIGNvbnN0DQogICAgew0KICAg
ICAgY29uc3Qgc3RyaW5nX3R5cGUgX19vbmUoX19sbzEsIF9faGkxKTsNCiAgICAgIGNvbnN0IHN0
cmluZ190eXBlIF9fdHdvKF9fbG8yLCBfX2hpMik7DQogICAgICByZXR1cm4gX01fY29tcGFyZShf
X29uZS5jX3N0cigpLCBfX3R3by5jX3N0cigpKTsNCiAgICB9DQoNCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQ+DQogICAgdHlwZW5hbWUgY29sbGF0ZTxfQ2hhclQ+OjpzdHJpbmdfdHlwZQ0KICAg
IGNvbGxhdGU8X0NoYXJUPjo6DQogICAgZG9fdHJhbnNmb3JtKGNvbnN0IF9DaGFyVCogX19sbywg
Y29uc3QgX0NoYXJUKiBfX2hpKSBjb25zdA0KICAgIHsNCiAgICAgIHNpemVfdCBfX2xlbiA9IChf
X2hpIC0gX19sbykgKiAyOw0KDQogICAgICBfQ2hhclQqIF9fYyA9DQogICAgICAgIHN0YXRpY19j
YXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkgKiBfX2xlbikpOw0K
ICAgICAgc2l6ZV90IF9fcmVzID0gX01fdHJhbnNmb3JtKF9fYywgX19sbywgX19sZW4pOw0KDQog
ICAgICBpZiAoX19yZXMgPj0gX19sZW4pDQogICAgICAgIHsNCiAgICAgICAgICBfX2MgPQ0KICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0No
YXJUKSAqIChfX3JlcyArIDEpKSk7DQogICAgICAgICAgX01fdHJhbnNmb3JtKF9fYywgX19sbywg
X19yZXMgKyAxKTsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIHN0cmluZ190eXBlKF9fYyk7DQog
ICAgfQ0KDQogdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIGxvbmcNCiAgICBjb2xsYXRl
PF9DaGFyVD46Og0KICAgIGRvX2hhc2goY29uc3QgX0NoYXJUKiBfX2xvLCBjb25zdCBfQ2hhclQq
IF9faGkpIGNvbnN0DQogICAgew0KICAgICAgdW5zaWduZWQgbG9uZyBfX3ZhbCA9IDA7DQogICAg
ICBmb3IgKDsgX19sbyA8IF9faGk7ICsrX19sbykNCiAgICAgICAgX192YWwgPSAqX19sbyArICgo
X192YWwgPDwgNykgfA0KICAgICAgICAgICAgICAgICAgICAgICAoX192YWwgPj4gKG51bWVyaWNf
bGltaXRzPHVuc2lnbmVkIGxvbmc+OjpkaWdpdHMgLSA3KSkpOw0KICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGxvbmc+KF9fdmFsKTsNCiAgICB9DQoNCg0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1R2Pg0KICAgIHZvaWQNCiAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX2luLCBfVHYm
IF9fb3V0LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsDQogICAgICAgICAgICAgICAgICAgY29u
c3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19iYXNlID0gMTApOw0KIyAxOTcxICJ0Oi9tc3lz
LzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzDQogIHRl
bXBsYXRlPHR5cGVuYW1lIF9Udj4NCiAgICBpbnQNCiAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIq
IF9fb3V0LCBjb25zdCBpbnQsIGNvbnN0IGNoYXIqIF9fZm10LCBfVHYgX192LA0KICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMgPSAtMSkNCiAgICB7DQog
ICAgICBpbnQgX19yZXQ7DQogICAgICBjb25zdCBjaGFyKiBfX29sZCA9IHNldGxvY2FsZSgwLCAi
QyIpOw0KICAgICAgaWYgKF9fcHJlYyA+PSAwKQ0KICAgICAgICBfX3JldCA9IHNwcmludGYoX19v
dXQsIF9fZm10LCBfX3ByZWMsIF9fdik7DQogICAgICBlbHNlDQogICAgICAgIF9fcmV0ID0gc3By
aW50ZihfX291dCwgX19mbXQsIF9fdik7DQogICAgICBzZXRsb2NhbGUoMCwgX19vbGQpOw0KICAg
ICAgcmV0dXJuIF9fcmV0Ow0KICAgIH0NCiMgMTk5NSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVk
ZS9nKystdjMvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgdm9pZA0KICAgIF9fcGFkKGlvc19iYXNlJiBf
X2lvLCBfQ2hhclQgX19maWxsLCBfQ2hhclQqIF9fbmV3cywgY29uc3QgX0NoYXJUKiBfX29sZHMs
DQogICAgICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX25ld2xlbiwgY29uc3Qgc3RyZWFtc2l6ZSBf
X29sZGxlbiwNCiAgICAgICAgICBjb25zdCBib29sIF9fbnVtKQ0KICAgIHsNCiAgICAgIHR5cGVk
ZWYgX0NoYXJUIGNoYXJfdHlwZTsNCiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGludF90eXBlOw0K
DQogICAgICBpbnRfdHlwZSBfX3BsZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fbmV3bGVuIC0g
X19vbGRsZW4pOw0KICAgICAgY2hhcl90eXBlKiBfX3BhZHMgPSBzdGF0aWNfY2FzdDxjaGFyX3R5
cGUqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihjaGFyX3R5cGUpICogX19wbGVuKSk7DQogICAg
ICB0cmFpdHNfdHlwZTo6YXNzaWduKF9fcGFkcywgX19wbGVuLCBfX2ZpbGwpOw0KDQogICAgICBj
aGFyX3R5cGUqIF9fYmVnOw0KICAgICAgY2hhcl90eXBlKiBfX2VuZDsNCiAgICAgIHNpemVfdCBf
X21vZCA9IDA7DQogICAgICBzaXplX3QgX19iZWdsZW47DQogICAgICBpb3NfYmFzZTo6Zm10Zmxh
Z3MgX19hZGp1c3QgPSBfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6YWRqdXN0ZmllbGQ7DQoNCiAg
ICAgIGlmIChfX2FkanVzdCA9PSBpb3NfYmFzZTo6bGVmdCkNCiAgICAgICAgew0KDQogICAgICAg
ICAgX19iZWcgPSBjb25zdF9jYXN0PGNoYXJfdHlwZSo+KF9fb2xkcyk7DQogICAgICAgICAgX19i
ZWdsZW4gPSBfX29sZGxlbjsNCiAgICAgICAgICBfX2VuZCA9IF9fcGFkczsNCiAgICAgICAgfQ0K
ICAgICAgZWxzZSBpZiAoX19hZGp1c3QgPT0gaW9zX2Jhc2U6OmludGVybmFsICYmIF9fbnVtKQ0K
ICAgICAgICB7DQoNCg0KDQogICAgICAgICAgbG9jYWxlIF9fbG9jID0gX19pby5nZXRsb2MoKTsN
CiAgICAgICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNlX2ZhY2V0PGN0eXBl
PF9DaGFyVD4gPihfX2xvYyk7DQogICAgICAgICAgY29uc3QgY2hhcl90eXBlIF9fbWludXMgPSBf
X2N0eXBlLndpZGVuKCctJyk7DQogICAgICAgICAgY29uc3QgY2hhcl90eXBlIF9fcGx1cyA9IF9f
Y3R5cGUud2lkZW4oJysnKTsNCiAgICAgICAgICBib29sIF9fdGVzdHNpZ24gPSBfX29sZHNbMF0g
PT0gX19taW51cyB8fCBfX29sZHNbMF0gPT0gX19wbHVzOw0KICAgICAgICAgIGJvb2wgX190ZXN0
aGV4ID0gX19jdHlwZS53aWRlbignMCcpID09IF9fb2xkc1swXQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKF9fY3R5cGUud2lkZW4oJ3gnKSA9PSBfX29sZHNbMV0NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCBfX2N0eXBlLndpZGVuKCdYJykgPT0gX19vbGRzWzFdKTsN
CiAgICAgICAgICBpZiAoX190ZXN0aGV4KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBf
X25ld3NbMF0gPSBfX29sZHNbMF07DQogICAgICAgICAgICAgIF9fbmV3c1sxXSA9IF9fb2xkc1sx
XTsNCiAgICAgICAgICAgICAgX19tb2QgKz0gMjsNCiAgICAgICAgICAgICAgX19uZXdzICs9IDI7
DQogICAgICAgICAgICAgIF9fYmVnID0gX19wYWRzOw0KICAgICAgICAgICAgICBfX2JlZ2xlbiA9
IF9fcGxlbjsNCiAgICAgICAgICAgICAgX19lbmQgPSBjb25zdF9jYXN0PGNoYXJfdHlwZSo+KF9f
b2xkcyArIF9fbW9kKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmIChfX3Rlc3Rz
aWduKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBfX25ld3NbMF0gPSBfX29sZHNbMF0g
PT0gX19wbHVzID8gX19wbHVzIDogX19taW51czsNCiAgICAgICAgICAgICAgKytfX21vZDsNCiAg
ICAgICAgICAgICAgKytfX25ld3M7DQogICAgICAgICAgICAgIF9fYmVnID0gX19wYWRzOw0KICAg
ICAgICAgICAgICBfX2JlZ2xlbiA9IF9fcGxlbjsNCiAgICAgICAgICAgICAgX19lbmQgPSBjb25z
dF9jYXN0PGNoYXJfdHlwZSo+KF9fb2xkcyArIF9fbW9kKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICBlbHNlDQogICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgX19iZWcgPSBfX3BhZHM7
DQogICAgICAgICAgICAgIF9fYmVnbGVuID0gX19wbGVuOw0KICAgICAgICAgICAgICBfX2VuZCA9
IGNvbnN0X2Nhc3Q8Y2hhcl90eXBlKj4oX19vbGRzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgICAgZWxzZQ0KICAgICAgICB7DQoNCiAgICAgICAgICBfX2JlZyA9IF9fcGFkczsNCiAg
ICAgICAgICBfX2JlZ2xlbiA9IF9fcGxlbjsNCiAgICAgICAgICBfX2VuZCA9IGNvbnN0X2Nhc3Q8
Y2hhcl90eXBlKj4oX19vbGRzKTsNCiAgICAgICAgfQ0KICAgICAgdHJhaXRzX3R5cGU6OmNvcHko
X19uZXdzLCBfX2JlZywgX19iZWdsZW4pOw0KICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX19uZXdz
ICsgX19iZWdsZW4sIF9fZW5kLCBfX25ld2xlbiAtIF9fYmVnbGVuIC0gX19tb2QpOw0KICAgIH0N
Cg0KDQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgdm9pZA0KICAgIF9fcGFk
KGlvc19iYXNlJiBfX2lvLCBfQ2hhclQgX19maWxsLCBfQ2hhclQqIF9fbmV3cywgY29uc3QgX0No
YXJUKiBfX29sZHMsDQogICAgICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX25ld2xlbiwgY29uc3Qg
c3RyZWFtc2l6ZSBfX29sZGxlbiwNCiAgICAgICAgICBjb25zdCBib29sIF9fbnVtKQ0KICAgIHsN
CiAgICAgIHJldHVybiBfX3BhZDxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPihfX2lvLCBf
X2ZpbGwsIF9fbmV3cywgX19vbGRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbmV3bGVuLCBfX29sZGxlbiwgX19udW0pOw0KICAgIH0NCiMgMjA5
NCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9sb2NhbGVfZmFjZXRzLnRj
YyIgMw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+DQogICAgYm9vbA0KICAgIF9fdmVyaWZ5
X2dyb3VwaW5nKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQ+JiBfX2dyb3VwaW5nLA0KICAgICAg
ICAgICAgICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQ+JiBfX2dyb3VwaW5nX3RtcCkNCiAg
ICB7DQogICAgICBpbnQgX19pID0gMDsNCiAgICAgIGludCBfX2ogPSAwOw0KICAgICAgY29uc3Qg
aW50IF9fbGVuID0gX19ncm91cGluZy5zaXplKCk7DQogICAgICBjb25zdCBpbnQgX19uID0gX19n
cm91cGluZ190bXAuc2l6ZSgpOw0KICAgICAgYm9vbCBfX3Rlc3QgPSB0cnVlOw0KDQoNCg0KDQog
ICAgICB3aGlsZSAoX190ZXN0ICYmIF9faSA8IF9fbiAtIDEpDQogICAgICAgIGZvciAoX19qID0g
MDsgX190ZXN0ICYmIF9faiA8IF9fbGVuICYmIF9faSA8IF9fbiAtIDE7ICsrX19qLCsrX19pKQ0K
ICAgICAgICAgIF9fdGVzdCAmPSBfX2dyb3VwaW5nW19fal0gPT0gX19ncm91cGluZ190bXBbX19u
IC0gX19pIC0gMV07DQoNCg0KICAgICAgX19qID09IF9fbGVuID8gX19qID0gMCA6IF9fajsNCiAg
ICAgIF9fdGVzdCAmPSBfX2dyb3VwaW5nW19fal0gPj0gX19ncm91cGluZ190bXBbX19uIC0gX19p
IC0gMV07DQogICAgICByZXR1cm4gX190ZXN0Ow0KICAgIH0NCg0KDQoNCg0KDQoNCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJUPg0KICAgIF9DaGFyVCoNCiAgICBfX2FkZF9ncm91cGluZyhfQ2hh
clQqIF9fcywgX0NoYXJUIF9fc2VwLA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9f
Z2JlZywgY29uc3QgY2hhciogX19nZW5kLA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IF9DaGFy
VCogX19maXJzdCwgY29uc3QgX0NoYXJUKiBfX2xhc3QpDQogICAgew0KICAgICAgaWYgKF9fbGFz
dCAtIF9fZmlyc3QgPiAqX19nYmVnKQ0KICAgICAgICB7DQogICAgICAgICAgX19zID0gX19hZGRf
Z3JvdXBpbmcoX19zLCBfX3NlcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19n
YmVnICsgMSA9PSBfX2dlbmQgPyBfX2diZWcgOiBfX2diZWcgKyAxKSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2dlbmQsIF9fZmlyc3QsIF9fbGFzdCAtICpfX2diZWcpOw0KICAg
ICAgICAgIF9fZmlyc3QgPSBfX2xhc3QgLSAqX19nYmVnOw0KICAgICAgICAgICpfX3MrKyA9IF9f
c2VwOw0KICAgICAgICB9DQogICAgICBkbw0KICAgICAgICAqX19zKysgPSAqX19maXJzdCsrOw0K
ICAgICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KTsNCiAgICAgIHJldHVybiBfX3M7DQogICAg
fQ0KDQoNCg0KDQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBtb25leXB1bmN0PGNoYXIsIGZhbHNl
PjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT47DQogIGV4
dGVybiB0ZW1wbGF0ZSBjbGFzcyBtb25leXB1bmN0X2J5bmFtZTxjaGFyLCBmYWxzZT47DQogIGV4
dGVybiB0ZW1wbGF0ZSBjbGFzcyBtb25leXB1bmN0X2J5bmFtZTxjaGFyLCB0cnVlPjsNCiAgZXh0
ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5X2dldDxjaGFyPjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNs
YXNzIG1vbmV5X3B1dDxjaGFyPjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3Q8
d2NoYXJfdCwgZmFsc2U+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlwdW5jdDx3Y2hh
cl90LCB0cnVlPjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3RfYnluYW1lPHdj
aGFyX3QsIGZhbHNlPjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG1vbmV5cHVuY3RfYnluYW1l
PHdjaGFyX3QsIHRydWU+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlfZ2V0PHdjaGFy
X3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbW9uZXlfcHV0PHdjaGFyX3Q+Ow0KICBleHRl
cm4gdGVtcGxhdGUgY2xhc3MgbnVtcHVuY3Q8Y2hhcj47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFz
cyBudW1wdW5jdF9ieW5hbWU8Y2hhcj47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0
PGNoYXI+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbnVtX3B1dDxjaGFyPjsNCiAgZXh0ZXJu
IHRlbXBsYXRlIGNsYXNzIG51bXB1bmN0PHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xh
c3MgbnVtcHVuY3RfYnluYW1lPHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbnVt
X2dldDx3Y2hhcl90PjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51bV9wdXQ8d2NoYXJfdD47
DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX3RpbWVwdW5jdDxjaGFyPjsNCiAgZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIHRpbWVfcHV0PGNoYXI+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGlt
ZV9wdXRfYnluYW1lPGNoYXI+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGltZV9nZXQ8Y2hh
cj47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyB0aW1lX2dldF9ieW5hbWU8Y2hhcj47DQogIGV4
dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX3RpbWVwdW5jdDx3Y2hhcl90PjsNCiAgZXh0ZXJuIHRlbXBs
YXRlIGNsYXNzIHRpbWVfcHV0PHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGlt
ZV9wdXRfYnluYW1lPHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgdGltZV9nZXQ8
d2NoYXJfdD47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyB0aW1lX2dldF9ieW5hbWU8d2NoYXJf
dD47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBtZXNzYWdlczxjaGFyPjsNCiAgZXh0ZXJuIHRl
bXBsYXRlIGNsYXNzIG1lc3NhZ2VzX2J5bmFtZTxjaGFyPjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNs
YXNzIG1lc3NhZ2VzPHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgbWVzc2FnZXNf
YnluYW1lPHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY3R5cGVfYnluYW1lPGNo
YXI+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY3R5cGVfYnluYW1lPHdjaGFyX3Q+Ow0KICBl
eHRlcm4gdGVtcGxhdGUgY2xhc3MgY29kZWN2dF9ieW5hbWU8Y2hhciwgY2hhciwgbWJzdGF0ZV90
PjsNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvZGVjdnRfYnluYW1lPHdjaGFyX3QsIGNoYXIs
IG1ic3RhdGVfdD47DQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBjb2xsYXRlPGNoYXI+Ow0KICBl
eHRlcm4gdGVtcGxhdGUgY2xhc3MgY29sbGF0ZV9ieW5hbWU8Y2hhcj47DQogIGV4dGVybiB0ZW1w
bGF0ZSBjbGFzcyBjb2xsYXRlPHdjaGFyX3Q+Ow0KICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY29s
bGF0ZV9ieW5hbWU8d2NoYXJfdD47DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgY29k
ZWN2dDxjaGFyLCBjaGFyLCBtYnN0YXRlX3Q+Jg0KICAgIHVzZV9mYWNldDxjb2RlY3Z0PGNoYXIs
IGNoYXIsIG1ic3RhdGVfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUN
CiAgICBjb25zdCBjb2xsYXRlPGNoYXI+Jg0KICAgIHVzZV9mYWNldDxjb2xsYXRlPGNoYXI+ID4o
Y29uc3QgbG9jYWxlJik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbnVtcHVuY3Q8
Y2hhcj4mDQogICAgdXNlX2ZhY2V0PG51bXB1bmN0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7DQoN
CiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbnVtX3B1dDxjaGFyPiYNCiAgICB1c2VfZmFj
ZXQ8bnVtX3B1dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0K
ICAgIGNvbnN0IG51bV9nZXQ8Y2hhcj4mDQogICAgdXNlX2ZhY2V0PG51bV9nZXQ8Y2hhcj4gPihj
b25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBjb25zdCBtb25leXB1bmN0
PGNoYXIsIHRydWU+Jg0KICAgIHVzZV9mYWNldDxtb25leXB1bmN0PGNoYXIsIHRydWU+ID4oY29u
c3QgbG9jYWxlJik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbW9uZXlwdW5jdDxj
aGFyLCBmYWxzZT4mDQogICAgdXNlX2ZhY2V0PG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+ID4oY29u
c3QgbG9jYWxlJik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbW9uZXlfcHV0PGNo
YXI+Jg0KICAgIHVzZV9mYWNldDxtb25leV9wdXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsNCg0K
ICBleHRlcm4gdGVtcGxhdGUNCiAgICBjb25zdCBtb25leV9nZXQ8Y2hhcj4mDQogICAgdXNlX2Zh
Y2V0PG1vbmV5X2dldDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0
ZQ0KICAgIGNvbnN0IF9fdGltZXB1bmN0PGNoYXI+Jg0KICAgIHVzZV9mYWNldDxfX3RpbWVwdW5j
dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNvbnN0
IHRpbWVfcHV0PGNoYXI+Jg0KICAgIHVzZV9mYWNldDx0aW1lX3B1dDxjaGFyPiA+KGNvbnN0IGxv
Y2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNvbnN0IHRpbWVfZ2V0PGNoYXI+Jg0K
ICAgIHVzZV9mYWNldDx0aW1lX2dldDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVy
biB0ZW1wbGF0ZQ0KICAgIGNvbnN0IG1lc3NhZ2VzPGNoYXI+Jg0KICAgIHVzZV9mYWNldDxtZXNz
YWdlczxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNv
bnN0IGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90PiYNCiAgICB1c2VfZmFjZXQ8Y29k
ZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+ID4obG9jYWxlIGNvbnN0Jik7DQoNCiAgZXh0
ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgY29sbGF0ZTx3Y2hhcl90PiYNCiAgICB1c2VfZmFjZXQ8
Y29sbGF0ZTx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0K
ICAgIGNvbnN0IG51bXB1bmN0PHdjaGFyX3Q+Jg0KICAgIHVzZV9mYWNldDxudW1wdW5jdDx3Y2hh
cl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNvbnN0IG51
bV9wdXQ8d2NoYXJfdD4mDQogICAgdXNlX2ZhY2V0PG51bV9wdXQ8d2NoYXJfdD4gPihjb25zdCBs
b2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBjb25zdCBudW1fZ2V0PHdjaGFyX3Q+
Jg0KICAgIHVzZV9mYWNldDxudW1fZ2V0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7DQoNCiAg
ZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPiYNCiAg
ICB1c2VfZmFjZXQ8bW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPiA+KGNvbnN0IGxvY2FsZSYpOw0K
DQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNvbnN0IG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+
Jg0KICAgIHVzZV9mYWNldDxtb25leXB1bmN0PHdjaGFyX3QsIGZhbHNlPiA+KGNvbnN0IGxvY2Fs
ZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGNvbnN0IG1vbmV5X3B1dDx3Y2hhcl90PiYN
CiAgICB1c2VfZmFjZXQ8bW9uZXlfcHV0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7DQoNCiAg
ZXh0ZXJuIHRlbXBsYXRlDQogICAgY29uc3QgbW9uZXlfZ2V0PHdjaGFyX3Q+Jg0KICAgIHVzZV9m
YWNldDxtb25leV9nZXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVt
cGxhdGUNCiAgICBjb25zdCBfX3RpbWVwdW5jdDx3Y2hhcl90PiYNCiAgICB1c2VfZmFjZXQ8X190
aW1lcHVuY3Q8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUN
CiAgICBjb25zdCB0aW1lX3B1dDx3Y2hhcl90PiYNCiAgICB1c2VfZmFjZXQ8dGltZV9wdXQ8d2No
YXJfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBjb25zdCB0
aW1lX2dldDx3Y2hhcl90PiYNCiAgICB1c2VfZmFjZXQ8dGltZV9nZXQ8d2NoYXJfdD4gPihjb25z
dCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBjb25zdCBtZXNzYWdlczx3Y2hh
cl90PiYNCiAgICB1c2VfZmFjZXQ8bWVzc2FnZXM8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsN
Cg0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8Y3R5cGU8Y2hh
cj4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBib29sDQogICAg
aGFzX2ZhY2V0PGNvZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90PiA+KGNvbnN0IGxvY2FsZSYp
Ow0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8Y29sbGF0ZTxj
aGFyPiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAg
ICBoYXNfZmFjZXQ8bnVtcHVuY3Q8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4g
dGVtcGxhdGUNCiAgICBib29sDQogICAgaGFzX2ZhY2V0PG51bV9wdXQ8Y2hhcj4gPihjb25zdCBs
b2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBib29sDQogICAgaGFzX2ZhY2V0PG51
bV9nZXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBi
b29sDQogICAgaGFzX2ZhY2V0PG1vbmV5cHVuY3Q8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsNCg0K
ICBleHRlcm4gdGVtcGxhdGUNCiAgICBib29sDQogICAgaGFzX2ZhY2V0PG1vbmV5X3B1dDxjaGFy
PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBo
YXNfZmFjZXQ8bW9uZXlfZ2V0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7DQoNCiAgZXh0ZXJuIHRl
bXBsYXRlDQogICAgYm9vbA0KICAgIGhhc19mYWNldDxfX3RpbWVwdW5jdDxjaGFyPiA+KGNvbnN0
IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8
dGltZV9wdXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAg
ICBib29sDQogICAgaGFzX2ZhY2V0PHRpbWVfZ2V0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7DQoN
CiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0KICAgIGhhc19mYWNldDxtZXNzYWdlczxjaGFy
PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogZXh0ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0KICAgIGhh
c19mYWNldDxjdHlwZTx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1w
bGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0
YXRlX3Q+ID4oY29uc3QgbG9jYWxlJik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0K
ICAgIGhhc19mYWNldDxjb2xsYXRlPHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7DQoNCiAgZXh0
ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0KICAgIGhhc19mYWNldDxudW1wdW5jdDx3Y2hhcl90PiA+
KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNf
ZmFjZXQ8bnVtX3B1dDx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1w
bGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8bnVtX2dldDx3Y2hhcl90PiA+KGNvbnN0IGxv
Y2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8bW9u
ZXlwdW5jdDx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0K
ICAgIGJvb2wNCiAgICBoYXNfZmFjZXQ8bW9uZXlfcHV0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxl
Jik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0KICAgIGhhc19mYWNldDxtb25leV9n
ZXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBleHRlcm4gdGVtcGxhdGUNCiAgICBi
b29sDQogICAgaGFzX2ZhY2V0PF9fdGltZXB1bmN0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7
DQoNCiAgZXh0ZXJuIHRlbXBsYXRlDQogICAgYm9vbA0KICAgIGhhc19mYWNldDx0aW1lX3B1dDx3
Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOw0KDQogIGV4dGVybiB0ZW1wbGF0ZQ0KICAgIGJvb2wN
CiAgICBoYXNfZmFjZXQ8dGltZV9nZXQ8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKTsNCg0KICBl
eHRlcm4gdGVtcGxhdGUNCiAgICBib29sDQogICAgaGFzX2ZhY2V0PG1lc3NhZ2VzPHdjaGFyX3Q+
ID4oY29uc3QgbG9jYWxlJik7DQp9DQojIDQ3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9sb2NhbGUiIDIgMw0KIyAzOCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
Yml0cy9vc3RyZWFtLnRjYyIgMiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJU
LCBfVHJhaXRzPjo6c2VudHJ5OjoNCiAgICBzZW50cnkoYmFzaWNfb3N0cmVhbTxfQ2hhclQsX1Ry
YWl0cz4mIF9fb3MpDQogICAgOiBfTV9vayhfX29zLmdvb2QoKSksIF9NX29zKF9fb3MpDQogICAg
ew0KDQogICAgICBpZiAoX01fb2sgJiYgX19vcy50aWUoKSkNCiAgICAgICAgX19vcy50aWUoKS0+
Zmx1c2goKTsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19v
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIG9wZXJhdG9yPDwoX19vc3RyZWFtX3R5cGUm
ICgqX19wZikoX19vc3RyZWFtX3R5cGUmKSkNCiAgICB7DQogICAgICBzZW50cnkgX19jZXJiKCp0
aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkN
CiAgICAgICAgICAgIHsgX19wZigqdGhpcyk7IH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAg
ICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFk
Yml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6
YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh
clQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgb3BlcmF0b3I8PChf
X2lvc190eXBlJiAoKl9fcGYpKF9faW9zX3R5cGUmKSkNCiAgICB7DQogICAgICBzZW50cnkgX19j
ZXJiKCp0aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAo
dHJ1ZSkNCiAgICAgICAgICAgIHsgX19wZigqdGhpcyk7IH0NCiAgICAgICAgICBpZiAoZmFsc2Up
DQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3Nf
YmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgb3BlcmF0
b3I8PChpb3NfYmFzZSYgKCpfX3BmKShpb3NfYmFzZSYpKQ0KICAgIHsNCiAgICAgIHNlbnRyeSBf
X2NlcmIoKnRoaXMpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlm
ICh0cnVlKQ0KICAgICAgICAgICAgeyBfX3BmKCp0aGlzKTsgfQ0KICAgICAgICAgIGlmIChmYWxz
ZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19i
YXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlv
c19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwg
X1RyYWl0cz4mDQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRvcjw8
KF9fc3RyZWFtYnVmX3R5cGUqIF9fc2JpbikNCiAgICB7DQogICAgICBzZW50cnkgX19jZXJiKCp0
aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgc3RyZWFtc2l6ZSBfX3h0cmN0ID0gMDsNCiAg
ICAgICAgICAgICAgaWYgKF9fc2JpbikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3Nib3V0ID0gdGhpcy0+cmRidWYoKTsNCiAgICAgICAg
ICAgICAgICAgIF9feHRyY3QgPSBfX2NvcHlfc3RyZWFtYnVmcygqdGhpcywgX19zYmluLCBfX3Ni
b3V0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYg
KCFfX3h0cmN0KQ0KICAgICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpmYWls
Yml0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7
DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAg
ICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAh
PSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJh
c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6b3BlcmF0b3I8PChib29sIF9fbikNCiAgICB7
DQogICAgICBzZW50cnkgX19jZXJiKCp0aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAg
IHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWYg
KF9NX2NoZWNrX2ZhY2V0KF9NX2ZudW1wdXQpKQ0KICAgICAgICAgICAgICAgIGlmIChfTV9mbnVt
cHV0LT5wdXQoKnRoaXMsICp0aGlzLCB0aGlzLT5maWxsKCksIF9fbikuZmFpbGVkKCkpDQogICAg
ICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAg
ICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYg
KCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAg
ICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQog
ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6b3BlcmF0b3I8PChsb25nIF9fbikNCiAgICB7DQogICAgICBzZW50cnkg
X19jZXJiKCp0aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBp
ZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY2hhcl90eXBlIF9fYyA9IHRo
aXMtPmZpbGwoKTsNCiAgICAgICAgICAgICAgaW9zX2Jhc2U6OmZtdGZsYWdzIF9fZm10ID0gdGhp
cy0+ZmxhZ3MoKSAmIGlvc19iYXNlOjpiYXNlZmllbGQ7DQogICAgICAgICAgICAgIGlmIChfTV9j
aGVja19mYWNldChfTV9mbnVtcHV0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgICBib29sIF9fYiA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgaWYgKChfX2ZtdCAmIGlv
c19iYXNlOjpvY3QpIHx8IChfX2ZtdCAmIGlvc19iYXNlOjpoZXgpKQ0KICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBfX2wgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihfX24pOw0KICAgICAgICAgICAgICAgICAgICAgIF9fYiA9IF9N
X2ZudW1wdXQtPnB1dCgqdGhpcywgKnRoaXMsIF9fYywgX19sKS5mYWlsZWQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICBfX2IgPSBfTV9mbnVtcHV0LT5wdXQoKnRoaXMsICp0aGlzLCBfX2MsIF9fbikuZmFpbGVkKCk7
DQogICAgICAgICAgICAgICAgICBpZiAoX19iKQ0KICAgICAgICAgICAgICAgICAgICB0aGlzLT5z
ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAg
ICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgo
dGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAg
ICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAg
IGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19vc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz46Om9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBfX24pDQogICAgew0KICAgICAg
c2VudHJ5IF9fY2VyYigqdGhpcyk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAg
ICAgICAgaWYgKHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGlmIChfTV9jaGVj
a19mYWNldChfTV9mbnVtcHV0KSkNCiAgICAgICAgICAgICAgICBpZiAoX01fZm51bXB1dC0+cHV0
KCp0aGlzLCAqdGhpcywgdGhpcy0+ZmlsbCgpLCBfX24pLmZhaWxlZCgpKQ0KICAgICAgICAgICAg
ICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhp
cy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+
ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoj
IDMwMSAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9vc3RyZWFtLnRjYyIg
Mw0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFz
aWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBf
VHJhaXRzPjo6b3BlcmF0b3I8PChkb3VibGUgX19uKQ0KICAgIHsNCiAgICAgIHNlbnRyeSBfX2Nl
cmIoKnRoaXMpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0
cnVlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBpZiAoX01fY2hlY2tfZmFjZXQoX01f
Zm51bXB1dCkpDQogICAgICAgICAgICAgICAgaWYgKF9NX2ZudW1wdXQtPnB1dCgqdGhpcywgKnRo
aXMsIHRoaXMtPmZpbGwoKSwgX19uKS5mYWlsZWQoKSkNCiAgICAgICAgICAgICAgICAgIHRoaXMt
PnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlm
IChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMo
KSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRl
PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19vc3RyZWFtPF9D
aGFyVCwgX1RyYWl0cz4mDQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjpvcGVy
YXRvcjw8KGxvbmcgZG91YmxlIF9fbikNCiAgICB7DQogICAgICBzZW50cnkgX19jZXJiKCp0aGlz
KTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWYgKF9NX2NoZWNrX2ZhY2V0KF9NX2ZudW1wdXQp
KQ0KICAgICAgICAgICAgICAgIGlmIChfTV9mbnVtcHV0LT5wdXQoKnRoaXMsICp0aGlzLCB0aGlz
LT5maWxsKCksIF9fbikuZmFpbGVkKCkpDQogICAgICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0
ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2Up
DQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFz
ZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3Nf
YmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6b3BlcmF0b3I8PChj
b25zdCB2b2lkKiBfX24pDQogICAgew0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcyk7DQogICAg
ICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgIGlmIChfTV9jaGVja19mYWNldChfTV9mbnVtcHV0KSkNCiAgICAg
ICAgICAgICAgICBpZiAoX01fZm51bXB1dC0+cHV0KCp0aGlzLCAqdGhpcywgdGhpcy0+ZmlsbCgp
LCBfX24pLmZhaWxlZCgpKQ0KICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jh
c2U6OmJhZGJpdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAg
ICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJp
dCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJh
ZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYN
CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OnB1dChjaGFyX3R5cGUgX19jKQ0K
ICAgIHsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMpOw0KICAgICAgaWYgKF9fY2VyYikNCiAg
ICAgICAgew0KICAgICAgICAgIGludF90eXBlIF9fcHV0ID0gcmRidWYoKS0+c3B1dGMoX19jKTsN
CiAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fcHV0LCB0cmFpdHNfdHlw
ZTo6ZW9mKCkpKQ0KICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7
DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYNCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OndyaXRlKGNv
bnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikNCiAgICB7DQogICAgICBzZW50cnkgX19j
ZXJiKCp0aGlzKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBzdHJl
YW1zaXplIF9fcHV0ID0gdGhpcy0+cmRidWYoKS0+c3B1dG4oX19zLCBfX24pOw0KICAgICAgICAg
IGlmICggX19wdXQgIT0gX19uKQ0KICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6
OmJhZGJpdCk7DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX29zdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46
OmZsdXNoKCkNCiAgICB7DQogICAgICBzZW50cnkgX19jZXJiKCp0aGlzKTsNCiAgICAgIGlmIChf
X2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodGhpcy0+cmRidWYoKSAmJiB0aGlzLT5y
ZGJ1ZigpLT5wdWJzeW5jKCkgPT0gLTEpDQogICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3Nf
YmFzZTo6YmFkYml0KTsNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgdHlwZW5h
bWUgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Ojpwb3NfdHlwZQ0KICAgIGJhc2ljX29z
dHJlYW08X0NoYXJULCBfVHJhaXRzPjo6dGVsbHAoKQ0KICAgIHsNCiAgICAgIHBvc190eXBlIF9f
cmV0ID0gcG9zX3R5cGUoLTEpOw0KICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpDQogICAgICAgIF9f
cmV0ID0gdGhpcy0+cmRidWYoKS0+cHVic2Vla29mZigwLCBpb3NfYmFzZTo6Y3VyLCBpb3NfYmFz
ZTo6b3V0KTsNCiAgICAgIHJldHVybiBfX3JldDsNCiAgICB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6c2Vla3AocG9z
X3R5cGUgX19wb3MpDQogICAgew0KICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpDQogICAgICAgIHsN
Cg0KDQogICAgICAgICAgcG9zX3R5cGUgX19lcnIgPSB0aGlzLT5yZGJ1ZigpLT5wdWJzZWVrcG9z
KF9fcG9zLCBpb3NfYmFzZTo6b3V0KTsNCg0KDQogICAgICAgICAgaWYgKF9fZXJyID09IHBvc190
eXBlKG9mZl90eXBlKC0xKSkpDQogICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6
ZmFpbGJpdCk7DQoNCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0
cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
Pjo6DQogICAgc2Vla3Aob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fZCkNCiAg
ICB7DQogICAgICBpZiAoIXRoaXMtPmZhaWwoKSkNCiAgICAgICAgew0KDQoNCiAgICAgICAgICBw
b3NfdHlwZSBfX2VyciA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtvZmYoX19vZmYsIF9fZCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zX2Jh
c2U6Om91dCk7DQoNCg0KICAgICAgICAgIGlmIChfX2VyciA9PSBwb3NfdHlwZShvZmZfdHlwZSgt
MSkpKQ0KICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOw0KDQog
ICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCg0KICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs
IF9UcmFpdHM+Jg0KICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+
JiBfX291dCwgX0NoYXJUIF9fYykNCiAgICB7DQogICAgICB0eXBlZGVmIGJhc2ljX29zdHJlYW08
X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsNCiAgICAgIHR5cGVuYW1lIF9fb3N0cmVh
bV90eXBlOjpzZW50cnkgX19jZXJiKF9fb3V0KTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAg
IHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgc3Ry
ZWFtc2l6ZSBfX3cgPSBfX291dC53aWR0aCgpOw0KICAgICAgICAgICAgICBfQ2hhclQqIF9fcGFk
cyA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkg
KiAoX193ICsgMSkpKTsNCiAgICAgICAgICAgICAgX19wYWRzWzBdID0gX19jOw0KICAgICAgICAg
ICAgICBzdHJlYW1zaXplIF9fbGVuID0gMTsNCiAgICAgICAgICAgICAgaWYgKF9fdyA+IF9fbGVu
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIF9fcGFkKF9fb3V0LCBfX291
dC5maWxsKCksIF9fcGFkcywgJl9fYywgX193LCBfX2xlbiwgZmFsc2UpOw0KICAgICAgICAgICAg
ICAgICAgX19sZW4gPSBfX3c7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBfX291
dC53cml0ZShfX3BhZHMsIF9fbGVuKTsNCiAgICAgICAgICAgICAgX19vdXQud2lkdGgoMCk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAg
ICAgICAgICAgICAgX19vdXQuc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAg
ICAgIGlmICgoX19vdXQuZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAg
ICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiBf
X291dDsNCiAgICB9DQoNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0cz4NCiAgICBiYXNpY19v
c3RyZWFtPGNoYXIsIF9UcmFpdHM+Jg0KICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFy
LCBfVHJhaXRzPiYgX19vdXQsIGNoYXIgX19jKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgYmFzaWNf
b3N0cmVhbTxjaGFyLCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsNCiAgICAgIHR5cGVuYW1lIF9f
b3N0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9fb3V0KTsNCiAgICAgIGlmIChfX2NlcmIpDQog
ICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgc3RyZWFtc2l6ZSBfX3cgPSBfX291dC53aWR0aCgpOw0KICAgICAgICAgICAgICBjaGFyKiBf
X3BhZHMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oX19idWlsdGluX2FsbG9jYShfX3cgKyAxKSk7DQog
ICAgICAgICAgICAgIF9fcGFkc1swXSA9IF9fYzsNCiAgICAgICAgICAgICAgc3RyZWFtc2l6ZSBf
X2xlbiA9IDE7DQogICAgICAgICAgICAgIGlmIChfX3cgPiBfX2xlbikNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICBfX3BhZChfX291dCwgX19vdXQuZmlsbCgpLCBfX3BhZHMs
ICZfX2MsIF9fdywgX19sZW4sIGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgIF9fbGVuID0gX193
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgX19vdXQud3JpdGUoX19wYWRzLCBf
X2xlbik7DQogICAgICAgICAgICAgIF9fb3V0LndpZHRoKDApOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgIGlmIChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIF9fb3V0
LnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKF9fb3V0LmV4
Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gX19vdXQ7DQogICAgIH0NCg0K
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNf
b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX291dCwgY29uc3QgX0NoYXJUKiBfX3MpDQogICAgew0KICAgICAg
dHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7DQog
ICAgICB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX291dCk7DQogICAg
ICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUpDQogICAgICAgICAg
ICB7DQogICAgICAgICAgICAgIHN0cmVhbXNpemUgX193ID0gX19vdXQud2lkdGgoKTsNCiAgICAg
ICAgICAgICAgX0NoYXJUKiBfX3BhZHMgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5f
YWxsb2NhKHNpemVvZihfQ2hhclQpICogX193KSk7DQogICAgICAgICAgICAgIHN0cmVhbXNpemUg
X19sZW4gPSBzdGF0aWNfY2FzdDxzdHJlYW1zaXplPihfVHJhaXRzOjpsZW5ndGgoX19zKSk7DQog
ICAgICAgICAgICAgIGlmIChfX3cgPiBfX2xlbikNCiAgICAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgICBfX3BhZChfX291dCwgX19vdXQuZmlsbCgpLCBfX3BhZHMsIF9fcywgX193LCBf
X2xlbiwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgX19zID0gX19wYWRzOw0KICAgICAgICAg
ICAgICAgICAgX19sZW4gPSBfX3c7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBf
X291dC53cml0ZShfX3MsIF9fbGVuKTsNCiAgICAgICAgICAgICAgX19vdXQud2lkdGgoMCk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAg
ICAgICAgICAgICAgX19vdXQuc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAg
ICAgIGlmICgoX19vdXQuZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAg
ICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiBf
X291dDsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcjw8
KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0IGNoYXIqIF9fcykN
CiAgICB7DQogICAgICB0eXBlZGVmIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29z
dHJlYW1fdHlwZTsNCg0KDQoNCiAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcj4gX19jdHJh
aXRzX3R5cGU7DQoNCiAgICAgIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpzZW50cnkgX19jZXJi
KF9fb3V0KTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBzaXplX3Qg
X19jbGVuID0gX19jdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpOw0KICAgICAgICAgIF9DaGFyVCog
X193cyA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFy
VCkgKiAoX19jbGVuICsgMSkpKTsNCiAgICAgICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kg
PD0gX19jbGVuOyArK19faSkNCiAgICAgICAgICAgIF9fd3NbX19pXSA9IF9fb3V0LndpZGVuKF9f
c1tfX2ldKTsNCiAgICAgICAgICBfQ2hhclQqIF9fc3RyID0gX193czsNCg0KICAgICAgICAgIGlm
ICh0cnVlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBzdHJlYW1zaXplIF9fbGVuID0g
c3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX19jbGVuKTsNCiAgICAgICAgICAgICAgc3RyZWFtc2l6
ZSBfX3cgPSBfX291dC53aWR0aCgpOw0KICAgICAgICAgICAgICBfQ2hhclQqIF9fcGFkcyA9IHN0
YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkgKiBfX3cp
KTsNCg0KICAgICAgICAgICAgICBpZiAoX193ID4gX19sZW4pDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgX19wYWQoX19vdXQsIF9fb3V0LmZpbGwoKSwgX19wYWRzLCBfX3dz
LCBfX3csIF9fbGVuLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICBfX3N0ciA9IF9fcGFkczsN
CiAgICAgICAgICAgICAgICAgIF9fbGVuID0gX193Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgX19vdXQud3JpdGUoX19zdHIsIF9fbGVuKTsNCiAgICAgICAgICAgICAgX19vdXQu
d2lkdGgoMCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAg
ICAgew0KDQoNCiAgICAgICAgICAgICAgX19vdXQuc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7
DQogICAgICAgICAgICAgIGlmICgoX19vdXQuZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJp
dCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgIHJldHVybiBfX291dDsNCiAgICB9DQoNCg0KICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPg0K
ICAgIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I8PChiYXNpY19v
c3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX291dCwgY29uc3QgY2hhciogX19zKQ0KICAgIHsNCiAg
ICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsN
CiAgICAgIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9fb3V0KTsNCiAg
ICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgc3RyZWFtc2l6ZSBfX3cgPSBfX291dC53aWR0aCgpOw0KICAg
ICAgICAgICAgICBjaGFyKiBfX3BhZHMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oX19idWlsdGluX2Fs
bG9jYShfX3cpKTsNCiAgICAgICAgICAgICAgc3RyZWFtc2l6ZSBfX2xlbiA9IHN0YXRpY19jYXN0
PHN0cmVhbXNpemU+KF9UcmFpdHM6Omxlbmd0aChfX3MpKTsNCiAgICAgICAgICAgICAgaWYgKF9f
dyA+IF9fbGVuKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgIF9fcGFkKF9f
b3V0LCBfX291dC5maWxsKCksIF9fcGFkcywgX19zLCBfX3csIF9fbGVuLCBmYWxzZSk7DQogICAg
ICAgICAgICAgICAgICBfX3MgPSBfX3BhZHM7DQogICAgICAgICAgICAgICAgICBfX2xlbiA9IF9f
dzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIF9fb3V0LndyaXRlKF9fcywgX19s
ZW4pOw0KICAgICAgICAgICAgICBfX291dC53aWR0aCgwKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICBfX291dC5z
ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKChfX291dC5leGNl
cHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuIF9fb3V0Ow0KICAgIH0NCg0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0Fs
bG9jPg0KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcjw8
KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsDQogICAgICAgICAgICAgICBj
b25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0cikNCiAgICB7
DQogICAgICB0eXBlZGVmIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1f
dHlwZTsNCiAgICAgIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjpzZW50cnkgX19jZXJiKF9fb3V0
KTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBjb25zdCBfQ2hhclQq
IF9fcyA9IF9fc3RyLmRhdGEoKTsNCiAgICAgICAgICBzdHJlYW1zaXplIF9fdyA9IF9fb3V0Lndp
ZHRoKCk7DQogICAgICAgICAgX0NoYXJUKiBfX3BhZHMgPSBzdGF0aWNfY2FzdDxfQ2hhclQqPihf
X2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpICogX193KSk7DQogICAgICAgICAgc3RyZWFt
c2l6ZSBfX2xlbiA9IHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9fc3RyLnNpemUoKSk7DQoNCg0K
DQogICAgICAgICAgaWYgKF9fdyA+IF9fbGVuKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICBfX3BhZChfX291dCwgX19vdXQuZmlsbCgpLCBfX3BhZHMsIF9fcywgX193LCBfX2xlbiwgZmFs
c2UpOw0KICAgICAgICAgICAgICBfX3MgPSBfX3BhZHM7DQogICAgICAgICAgICAgIF9fbGVuID0g
X193Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgIHN0cmVhbXNpemUgX19yZXMgPSBfX291dC5y
ZGJ1ZigpLT5zcHV0bihfX3MsIF9fbGVuKTsNCiAgICAgICAgICBfX291dC53aWR0aCgwKTsNCiAg
ICAgICAgICBpZiAoX19yZXMgIT0gX19sZW4pDQogICAgICAgICAgICBfX291dC5zZXRzdGF0ZShp
b3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICAgIH0NCiAgICAgIHJldHVybiBfX291dDsNCiAgICB9
DQoNCg0KDQoNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX29zdHJlYW08Y2hhcj47DQog
IGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBlbmRsKG9zdHJlYW0mKTsNCiAgZXh0ZXJuIHRlbXBs
YXRlIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYpOw0KICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYg
Zmx1c2gob3N0cmVhbSYpOw0KICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChv
c3RyZWFtJiwgY2hhcik7DQogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9z
dHJlYW0mLCB1bnNpZ25lZCBjaGFyKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYsIHNpZ25lZCBjaGFyKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0m
IG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IGNoYXIqKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIG9z
dHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqKTsNCiAgZXh0
ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IHNpZ25lZCBj
aGFyKik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX29zdHJlYW08d2NoYXJfdD47
DQogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgZW5kbCh3b3N0cmVhbSYpOw0KICBleHRlcm4g
dGVtcGxhdGUgd29zdHJlYW0mIGVuZHMod29zdHJlYW0mKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIHdv
c3RyZWFtJiBmbHVzaCh3b3N0cmVhbSYpOw0KICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIG9w
ZXJhdG9yPDwod29zdHJlYW0mLCB3Y2hhcl90KTsNCiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFt
JiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwgY2hhcik7DQogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVh
bSYgb3BlcmF0b3I8PCh3b3N0cmVhbSYsIGNvbnN0IHdjaGFyX3QqKTsNCiAgZXh0ZXJuIHRlbXBs
YXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwgY29uc3QgY2hhciopOw0KfQ0KIyAy
NzYgInQ6L21zeXMvMS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL29zdHJlYW0iIDIgMw0KIyA0NiAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvaW9zdHJlYW0iIDIgMw0KIyAxICJ0Oi9t
c3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9pc3RyZWFtIiAxIDMNCiMgNDMgInQ6L21zeXMv
MS4wL21pbmd3L2luY2x1ZGUvZysrLXYzL2lzdHJlYW0iIDMNCg0KDQoNCg0KbmFtZXNwYWNlIHN0
ZA0Kew0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAg
ICBjbGFzcyBiYXNpY19pc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNfaW9zPF9DaGFyVCwg
X1RyYWl0cz4NCiAgICB7DQogICAgcHVibGljOg0KDQogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFy
X3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBl
Ow0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlwZTsNCiAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7DQogICAgICB0
eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7DQoNCg0KICAgICAgdHlwZWRlZiBiYXNpY19zdHJl
YW1idWY8X0NoYXJULCBfVHJhaXRzPiBfX3N0cmVhbWJ1Zl90eXBlOw0KICAgICAgdHlwZWRlZiBi
YXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPiBfX2lvc190eXBlOw0KICAgICAgdHlwZWRlZiBiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7DQogICAgICB0eXBlZGVm
IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1idWZfaXRlcjsN
CiAgICAgIHR5cGVkZWYgbnVtX2dldDxfQ2hhclQsIF9faXN0cmVhbWJ1Zl9pdGVyPiBfX251bWdl
dF90eXBlOw0KICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsNCg0KICAg
IHByb3RlY3RlZDoNCg0KICAgICAgc3RyZWFtc2l6ZSBfTV9nY291bnQ7DQoNCiAgICBwdWJsaWM6
DQoNCiAgICAgIGV4cGxpY2l0DQogICAgICBiYXNpY19pc3RyZWFtKF9fc3RyZWFtYnVmX3R5cGUq
IF9fc2IpDQogICAgICB7DQogICAgICAgIHRoaXMtPmluaXQoX19zYik7DQogICAgICAgIF9NX2dj
b3VudCA9IHN0cmVhbXNpemUoMCk7DQogICAgICB9DQoNCiAgICAgIHZpcnR1YWwNCiAgICAgIH5i
YXNpY19pc3RyZWFtKCkNCiAgICAgIHsgX01fZ2NvdW50ID0gc3RyZWFtc2l6ZSgwKTsgfQ0KDQoN
CiAgICAgIGNsYXNzIHNlbnRyeTsNCiAgICAgIGZyaWVuZCBjbGFzcyBzZW50cnk7DQoNCg0KDQog
ICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPj4oX19pc3RyZWFtX3R5cGUmICgq
X19wZikoX19pc3RyZWFtX3R5cGUmKSk7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAg
b3BlcmF0b3I+PihfX2lvc190eXBlJiAoKl9fcGYpKF9faW9zX3R5cGUmKSk7DQoNCiAgICAgIF9f
aXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+Pihpb3NfYmFzZSYgKCpfX3BmKShpb3NfYmFz
ZSYpKTsNCg0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPj4oYm9vbCYg
X19uKTsNCg0KICAgICAgX19pc3RyZWFtX3R5cGUmDQogICAgICBvcGVyYXRvcj4+KHNob3J0JiBf
X24pOw0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPj4odW5zaWduZWQg
c2hvcnQmIF9fbik7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+Pihp
bnQmIF9fbik7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+Pih1bnNp
Z25lZCBpbnQmIF9fbik7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+
Pihsb25nJiBfX24pOw0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPj4o
dW5zaWduZWQgbG9uZyYgX19uKTsNCiMgMTMxICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2cr
Ky12My9pc3RyZWFtIiAzDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9yPj4o
ZmxvYXQmIF9fZik7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+Pihk
b3VibGUmIF9fZik7DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgb3BlcmF0b3I+Pihs
b25nIGRvdWJsZSYgX19mKTsNCg0KICAgICAgX19pc3RyZWFtX3R5cGUmDQogICAgICBvcGVyYXRv
cj4+KHZvaWQqJiBfX3ApOw0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIG9wZXJhdG9y
Pj4oX19zdHJlYW1idWZfdHlwZSogX19zYik7DQoNCg0KICAgICAgaW5saW5lIHN0cmVhbXNpemUN
CiAgICAgIGdjb3VudCh2b2lkKSBjb25zdA0KICAgICAgeyByZXR1cm4gX01fZ2NvdW50OyB9DQoN
CiAgICAgIGludF90eXBlDQogICAgICBnZXQodm9pZCk7DQoNCiAgICAgIF9faXN0cmVhbV90eXBl
Jg0KICAgICAgZ2V0KGNoYXJfdHlwZSYgX19jKTsNCg0KICAgICAgX19pc3RyZWFtX3R5cGUmDQog
ICAgICBnZXQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5cGUgX19kZWxp
bSk7DQoNCiAgICAgIGlubGluZSBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIGdldChjaGFyX3R5cGUq
IF9fcywgc3RyZWFtc2l6ZSBfX24pDQogICAgICB7IHJldHVybiB0aGlzLT5nZXQoX19zLCBfX24s
IHRoaXMtPndpZGVuKCdcbicpKTsgfQ0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIGdl
dChfX3N0cmVhbWJ1Zl90eXBlJiBfX3NiLCBjaGFyX3R5cGUgX19kZWxpbSk7DQoNCiAgICAgIGlu
bGluZSBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBfX3NiKQ0K
ICAgICAgeyByZXR1cm4gdGhpcy0+Z2V0KF9fc2IsIHRoaXMtPndpZGVuKCdcbicpKTsgfQ0KDQog
ICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVh
bXNpemUgX19uLCBjaGFyX3R5cGUgX19kZWxpbSk7DQoNCiAgICAgIGlubGluZSBfX2lzdHJlYW1f
dHlwZSYNCiAgICAgIGdldGxpbmUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQ0KICAg
ICAgeyByZXR1cm4gdGhpcy0+Z2V0bGluZShfX3MsIF9fbiwgdGhpcy0+d2lkZW4oJ1xuJykpOyB9
DQoNCiAgICAgIF9faXN0cmVhbV90eXBlJg0KICAgICAgaWdub3JlKHN0cmVhbXNpemUgX19uID0g
MSwgaW50X3R5cGUgX19kZWxpbSA9IHRyYWl0c190eXBlOjplb2YoKSk7DQoNCiAgICAgIGludF90
eXBlDQogICAgICBwZWVrKHZvaWQpOw0KDQogICAgICBfX2lzdHJlYW1fdHlwZSYNCiAgICAgIHJl
YWQoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsNCg0KICAgICAgc3RyZWFtc2l6ZQ0K
ICAgICAgcmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsNCg0KICAgICAg
X19pc3RyZWFtX3R5cGUmDQogICAgICBwdXRiYWNrKGNoYXJfdHlwZSBfX2MpOw0KDQogICAgICBf
X2lzdHJlYW1fdHlwZSYNCiAgICAgIHVuZ2V0KHZvaWQpOw0KDQogICAgICBpbnQNCiAgICAgIHN5
bmModm9pZCk7DQoNCiAgICAgIHBvc190eXBlDQogICAgICB0ZWxsZyh2b2lkKTsNCg0KICAgICAg
X19pc3RyZWFtX3R5cGUmDQogICAgICBzZWVrZyhwb3NfdHlwZSk7DQoNCiAgICAgIF9faXN0cmVh
bV90eXBlJg0KICAgICAgc2Vla2cob2ZmX3R5cGUsIGlvc19iYXNlOjpzZWVrZGlyKTsNCiAgICB9
Ow0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBj
bGFzcyBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OnNlbnRyeQ0KICAgIHsNCiAgICBw
dWJsaWM6DQogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7DQogICAgICB0eXBlZGVm
IGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+IF9fc3RyZWFtYnVmX3R5cGU7DQogICAg
ICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsN
CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0
eXBlX3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIF9faW50
X3R5cGU7DQoNCiAgICAgIGV4cGxpY2l0DQogICAgICBzZW50cnkoYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JiBfX2lzLCBib29sIF9fbm9za2lwd3MgPSBmYWxzZSk7DQoNCiAgICAgIG9w
ZXJhdG9yIGJvb2woKSB7IHJldHVybiBfTV9vazsgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgIGJv
b2wgX01fb2s7DQogICAgfTsNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgb3Bl
cmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sIF9DaGFyVCYgX19j
KTsNCg0KICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08Y2hhciwg
X1RyYWl0cz4mDQogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBf
X2luLCB1bnNpZ25lZCBjaGFyJiBfX2MpDQogICAgeyByZXR1cm4gKF9faW4gPj4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyJj4oX19jKSk7IH0NCg0KICB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPg0KICAg
IGJhc2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0cz4mDQogICAgb3BlcmF0b3I+PihiYXNpY19pc3Ry
ZWFtPGNoYXIsIF9UcmFpdHM+JiBfX2luLCBzaWduZWQgY2hhciYgX19jKQ0KICAgIHsgcmV0dXJu
IChfX2luID4+IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KF9fYykpOyB9DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJh
aXRzPiYgX19pbiwgX0NoYXJUKiBfX3MpOw0KDQogIHRlbXBsYXRlPGNsYXNzIF9UcmFpdHM+DQog
ICAgYmFzaWNfaXN0cmVhbTxjaGFyLF9UcmFpdHM+Jg0KICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0
cmVhbTxjaGFyLF9UcmFpdHM+JiBfX2luLCB1bnNpZ25lZCBjaGFyKiBfX3MpDQogICAgeyByZXR1
cm4gKF9faW4gPj4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oX19zKSk7IH0NCg0KICB0ZW1wbGF0
ZTxjbGFzcyBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08Y2hhcixfVHJhaXRzPiYNCiAgICBv
cGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhcixfVHJhaXRzPiYgX19pbiwgc2lnbmVkIGNoYXIq
IF9fcykNCiAgICB7IHJldHVybiAoX19pbiA+PiByZWludGVycHJldF9jYXN0PGNoYXIqPihfX3Mp
KTsgfQ0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0K
ICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtDQogICAgOiBwdWJsaWMgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+LA0KICAgICAgcHVibGljIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz
Pg0KICAgIHsNCiAgICBwdWJsaWM6DQoNCiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOw0KICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7DQoNCiAgICAgIGV4cGxpY2l0DQogICAg
ICBiYXNpY19pb3N0cmVhbShiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19zYikN
CiAgICAgIDogX19pc3RyZWFtX3R5cGUoX19zYiksIF9fb3N0cmVhbV90eXBlKF9fc2IpDQogICAg
ICB7IH0NCg0KICAgICAgdmlydHVhbA0KICAgICAgfmJhc2ljX2lvc3RyZWFtKCkgeyB9DQogICAg
fTsNCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAg
ICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgd3MoYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+JiBfX2lzKTsNCn0NCg0KDQoNCg0KDQojIDEgInQ6L21zeXMvMS4wL21p
bmd3L2luY2x1ZGUvZysrLXYzL2JpdHMvaXN0cmVhbS50Y2MiIDEgMw0KIyAzNiAidDovbXN5cy8x
LjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYml0cy9pc3RyZWFtLnRjYyIgMw0KDQoNCg0KDQpuYW1l
c3BhY2Ugc3RkDQp7DQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0
cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OnNlbnRyeTo6DQogICAgc2Vu
dHJ5KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pbiwgYm9vbCBfX25vc2tpcHdz
KQ0KICAgIHsNCiAgICAgIGlmIChfX2luLmdvb2QoKSkNCiAgICAgICAgew0KICAgICAgICAgIGlm
IChfX2luLnRpZSgpKQ0KICAgICAgICAgICAgX19pbi50aWUoKS0+Zmx1c2goKTsNCiAgICAgICAg
ICBpZiAoIV9fbm9za2lwd3MgJiYgKF9faW4uZmxhZ3MoKSAmIGlvc19iYXNlOjpza2lwd3MpKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICBjb25zdCBfX2ludF90eXBlIF9fZW9mID0gdHJh
aXRzX3R5cGU6OmVvZigpOw0KICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0g
X19pbi5yZGJ1ZigpOw0KICAgICAgICAgICAgICBfX2ludF90eXBlIF9fYyA9IF9fc2ItPnNnZXRj
KCk7DQoNCiAgICAgICAgICAgICAgaWYgKF9faW4uX01fY2hlY2tfZmFjZXQoX19pbi5fTV9mY3R5
cGUpKQ0KICAgICAgICAgICAgICAgIHdoaWxlIChfX2MgIT0gX19lb2YNCiAgICAgICAgICAgICAg
ICAgICAgICAgJiYgX19pbi5fTV9mY3R5cGUtPmlzKGN0eXBlX2Jhc2U6OnNwYWNlLCBfX2MpKQ0K
ICAgICAgICAgICAgICAgICAgX19jID0gX19zYi0+c25leHRjKCk7DQoNCg0KDQogICAgICAgICAg
ICAgIGlmIChfX2MgPT0gX19lb2YpDQogICAgICAgICAgICAgICAgX19pbi5zZXRzdGF0ZShpb3Nf
YmFzZTo6ZW9mYml0KTsNCg0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgIGlmIChf
X2luLmdvb2QoKSkNCiAgICAgICAgX01fb2sgPSB0cnVlOw0KICAgICAgZWxzZQ0KICAgICAgICB7
DQogICAgICAgICAgX01fb2sgPSBmYWxzZTsNCiAgICAgICAgICBfX2luLnNldHN0YXRlKGlvc19i
YXNlOjpmYWlsYml0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+Jg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgb3BlcmF0b3I+
PihfX2lzdHJlYW1fdHlwZSYgKCpfX3BmKShfX2lzdHJlYW1fdHlwZSYpKQ0KICAgIHsNCiAgICAg
IF9fcGYoKnRoaXMpOw0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAg
b3BlcmF0b3I+PihfX2lvc190eXBlJiAoKl9fcGYpKF9faW9zX3R5cGUmKSkNCiAgICB7DQogICAg
ICBfX3BmKCp0aGlzKTsNCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAg
IG9wZXJhdG9yPj4oaW9zX2Jhc2UmICgqX19wZikoaW9zX2Jhc2UmKSkNCiAgICB7DQogICAgICBf
X3BmKCp0aGlzKTsNCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIG9w
ZXJhdG9yPj4oYm9vbCYgX19uKQ0KICAgIHsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIGZh
bHNlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkN
CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBp
b3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7DQogICAgICAgICAgICAgIGlmIChf
TV9jaGVja19mYWNldChfTV9mbnVtZ2V0KSkNCiAgICAgICAgICAgICAgICBfTV9mbnVtZ2V0LT5n
ZXQoKnRoaXMsIDAsICp0aGlzLCBfX2VyciwgX19uKTsNCiAgICAgICAgICAgICAgdGhpcy0+c2V0
c3RhdGUoX19lcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAgICAg
ICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpiYWRi
aXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpi
YWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoNCiAgICBvcGVyYXRvcj4+KHNo
b3J0JiBfX24pDQogICAgew0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2UpOw0KICAg
ICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpp
b3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsNCiAgICAgICAgICAgICAgbG9uZyBfX2w7DQogICAg
ICAgICAgICAgIGlmIChfTV9jaGVja19mYWNldChfTV9mbnVtZ2V0KSkNCiAgICAgICAgICAgICAg
ICBfTV9mbnVtZ2V0LT5nZXQoKnRoaXMsIDAsICp0aGlzLCBfX2VyciwgX19sKTsNCg0KDQogICAg
ICAgICAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpDQogICAgICAgICAgICAg
ICAgICAmJiAobnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSA8PSBfX2wNCiAgICAgICAgICAg
ICAgICAgICAgICAmJiBfX2wgPD0gbnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpDQogICAg
ICAgICAgICAgICAgX19uID0gX19sOw0KICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAg
ICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7DQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0
c3RhdGUoX19lcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAgICAg
ICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpiYWRi
aXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpi
YWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy
VCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoNCiAgICBvcGVyYXRvcj4+KHVu
c2lnbmVkIHNob3J0JiBfX24pDQogICAgew0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFs
c2UpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlv
c19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsNCiAgICAgICAgICAgICAgaWYgKF9N
X2NoZWNrX2ZhY2V0KF9NX2ZudW1nZXQpKQ0KICAgICAgICAgICAgICAgIF9NX2ZudW1nZXQtPmdl
dCgqdGhpcywgMCwgKnRoaXMsIF9fZXJyLCBfX24pOw0KICAgICAgICAgICAgICB0aGlzLT5zZXRz
dGF0ZShfX2Vycik7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAg
ICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJp
dCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJh
ZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYN
CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIG9wZXJhdG9yPj4oaW50
JiBfX24pDQogICAgew0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2UpOw0KICAgICAg
aWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0
YXRlKGlvc19iYXNlOjpnb29kYml0KTsNCiAgICAgICAgICAgICAgbG9uZyBfX2w7DQogICAgICAg
ICAgICAgIGlmIChfTV9jaGVja19mYWNldChfTV9mbnVtZ2V0KSkNCiAgICAgICAgICAgICAgICBf
TV9mbnVtZ2V0LT5nZXQoKnRoaXMsIDAsICp0aGlzLCBfX2VyciwgX19sKTsNCg0KDQogICAgICAg
ICAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpDQogICAgICAgICAgICAgICAg
ICAmJiAobnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgPD0gX19sDQogICAgICAgICAgICAgICAg
ICAgICAgJiYgX19sIDw9IG51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkNCiAgICAgICAgICAg
ICAgICBfX24gPSBfX2w7DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBfX2Vy
ciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShf
X2Vycik7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAg
ew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQog
ICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkg
IT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
IHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBi
YXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIG9wZXJhdG9yPj4odW5zaWduZWQg
aW50JiBfX24pDQogICAgew0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2UpOw0KICAg
ICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpp
b3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsNCiAgICAgICAgICAgICAgaWYgKF9NX2NoZWNrX2Zh
Y2V0KF9NX2ZudW1nZXQpKQ0KICAgICAgICAgICAgICAgIF9NX2ZudW1nZXQtPmdldCgqdGhpcywg
MCwgKnRoaXMsIF9fZXJyLCBfX24pOw0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vy
cik7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0K
DQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAg
ICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0g
MCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJl
dHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt
ZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIG9wZXJhdG9yPj4obG9uZyYgX19uKQ0K
ICAgIHsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIGZhbHNlKTsNCiAgICAgIGlmIChfX2Nl
cmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6aW9zdGF0ZShpb3Nf
YmFzZTo6Z29vZGJpdCk7DQogICAgICAgICAgICAgIGlmIChfTV9jaGVja19mYWNldChfTV9mbnVt
Z2V0KSkNCiAgICAgICAgICAgICAgICBfTV9mbnVtZ2V0LT5nZXQoKnRoaXMsIDAsICp0aGlzLCBf
X2VyciwgX19uKTsNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAg
ICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBp
ZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAg
ICAgICAgICAgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gKnRoaXM7
DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4N
CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+OjoNCiAgICBvcGVyYXRvcj4+KHVuc2lnbmVkIGxvbmcmIF9fbikNCiAg
ICB7DQogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCBmYWxzZSk7DQogICAgICBpZiAoX19jZXJi
KQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUpDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jh
c2U6Omdvb2RiaXQpOw0KICAgICAgICAgICAgICBpZiAoX01fY2hlY2tfZmFjZXQoX01fZm51bWdl
dCkpDQogICAgICAgICAgICAgICAgX01fZm51bWdldC0+Z2V0KCp0aGlzLCAwLCAqdGhpcywgX19l
cnIsIF9fbik7DQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAg
ICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYg
KCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAg
ICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCiMgMzcwICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12My9iaXRzL2lzdHJl
YW0udGNjIiAzDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4N
CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgYmFzaWNfaXN0cmVhbTxf
Q2hhclQsIF9UcmFpdHM+OjoNCiAgICBvcGVyYXRvcj4+KGZsb2F0JiBfX24pDQogICAgew0KICAg
ICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2UpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAg
ICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBp
b3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29k
Yml0KTsNCiAgICAgICAgICAgICAgaWYgKF9NX2NoZWNrX2ZhY2V0KF9NX2ZudW1nZXQpKQ0KICAg
ICAgICAgICAgICAgIF9NX2ZudW1nZXQtPmdldCgqdGhpcywgMCwgKnRoaXMsIF9fZXJyLCBfX24p
Ow0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhp
cy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+
ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz46Og0KICAgIG9wZXJhdG9yPj4oZG91YmxlJiBfX24pDQogICAgew0KICAgICAgc2VudHJ5
IF9fY2VyYigqdGhpcywgZmFsc2UpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAg
ICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBpb3NfYmFzZTo6
aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjppb3N0YXRlKGlvc19iYXNlOjpnb29kYml0KTsNCiAg
ICAgICAgICAgICAgaWYgKF9NX2NoZWNrX2ZhY2V0KF9NX2ZudW1nZXQpKQ0KICAgICAgICAgICAg
ICAgIF9NX2ZudW1nZXQtPmdldCgqdGhpcywgMCwgKnRoaXMsIF9fZXJyLCBfX24pOw0KICAgICAg
ICAgICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7DQogICAgICAgICAgICB9DQogICAgICAgICAg
aWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3Rh
dGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9u
cygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAg
ICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08
X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0K
ICAgIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmIF9fbikNCiAgICB7DQogICAgICBzZW50cnkgX19j
ZXJiKCp0aGlzLCBmYWxzZSk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAg
ICAgaWYgKHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGlvc19iYXNlOjppb3N0
YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omlvc3RhdGUoaW9zX2Jhc2U6Omdvb2RiaXQpOw0KICAgICAg
ICAgICAgICBpZiAoX01fY2hlY2tfZmFjZXQoX01fZm51bWdldCkpDQogICAgICAgICAgICAgICAg
X01fZm51bWdldC0+Z2V0KCp0aGlzLCAwLCAqdGhpcywgX19lcnIsIF9fbik7DQogICAgICAgICAg
ICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICBpZiAo
ZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShp
b3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkg
JiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAg
b3BlcmF0b3I+Pih2b2lkKiYgX19uKQ0KICAgIHsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMs
IGZhbHNlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAodHJ1
ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIg
PSBpb3NfYmFzZTo6aW9zdGF0ZShpb3NfYmFzZTo6Z29vZGJpdCk7DQogICAgICAgICAgICAgIGlm
IChfTV9jaGVja19mYWNldChfTV9mbnVtZ2V0KSkNCiAgICAgICAgICAgICAgICBfTV9mbnVtZ2V0
LT5nZXQoKnRoaXMsIDAsICp0aGlzLCBfX2VyciwgX19uKTsNCiAgICAgICAgICAgICAgdGhpcy0+
c2V0c3RhdGUoX19lcnIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAg
ICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpi
YWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNl
OjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mDQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoNCiAgICBvcGVyYXRvcj4+
KF9fc3RyZWFtYnVmX3R5cGUqIF9fc2JvdXQpDQogICAgew0KICAgICAgIHNlbnRyeSBfX2NlcmIo
KnRoaXMsIGZhbHNlKTsNCiAgICAgICBpZiAoX19jZXJiKQ0KICAgICAgICAgew0KICAgICAgICAg
ICBpZiAodHJ1ZSkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICBzdHJlYW1zaXplIF9f
eHRyY3QgPSAwOw0KICAgICAgICAgICAgICAgaWYgKF9fc2JvdXQpDQogICAgICAgICAgICAgICAg
IHsNCiAgICAgICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiaW4gPSB0aGlzLT5y
ZGJ1ZigpOw0KICAgICAgICAgICAgICAgICAgIF9feHRyY3QgPSBfX2NvcHlfc3RyZWFtYnVmcygq
dGhpcywgX19zYmluLCBfX3Nib3V0KTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgaWYgKCFfX3Nib3V0IHx8ICFfX3h0cmN0KQ0KICAgICAgICAgICAgICAgICB0aGlzLT5zZXRz
dGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICBpZiAo
ZmFsc2UpDQogICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25z
KCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgICA7DQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHR5cGVuYW1lIGJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUNCiAgICBiYXNpY19pc3RyZWFt
PF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIGdldCh2b2lkKQ0KICAgIHsNCiAgICAgIGNvbnN0IGlu
dF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOw0KICAgICAgaW50X3R5cGUgX19jID0g
X19lb2Y7DQogICAgICBfTV9nY291bnQgPSAwOw0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywg
dHJ1ZSk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIF9fYyA9IHRoaXMtPnJkYnVmKCktPnNidW1w
YygpOw0KDQogICAgICAgICAgICAgIGlmIChfX2MgIT0gX19lb2YpDQogICAgICAgICAgICAgICAg
X01fZ2NvdW50ID0gMTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHRoaXMt
PnNldHN0YXRlKGlvc19iYXNlOjplb2ZiaXQgfCBpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICAg
ICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAg
ICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlm
ICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAg
ICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiBfX2M7DQog
ICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAg
ICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+OjoNCiAgICBnZXQoY2hhcl90eXBlJiBfX2MpDQogICAgew0KICAgICAgX01f
Z2NvdW50ID0gMDsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOw0KICAgICAgaWYg
KF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsN
CiAgICAgICAgICAgICAgaW50X3R5cGUgX19idWZ2YWwgPSB0aGlzLT5yZGJ1ZigpLT5zYnVtcGMo
KTsNCg0KICAgICAgICAgICAgICBpZiAoX19idWZ2YWwgIT0gX19lb2YpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgX01fZ2NvdW50ID0gMTsNCiAgICAgICAgICAgICAgICAg
IF9fYyA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19idWZ2YWwpOw0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRl
KGlvc19iYXNlOjplb2ZiaXQgfCBpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhp
cy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+
ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoN
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2lj
X2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry
YWl0cz46Og0KICAgIGdldChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24sIGNoYXJfdHlw
ZSBfX2RlbGltKQ0KICAgIHsNCiAgICAgIF9NX2djb3VudCA9IDA7DQogICAgICBzZW50cnkgX19j
ZXJiKCp0aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAg
ICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY29uc3QgaW50X3R5cGUg
X19pZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxpbSk7DQogICAgICAgICAg
ICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOw0KICAgICAgICAg
ICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYoKTsNCiAgICAgICAgICAg
ICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsNCg0KICAgICAgICAgICAgICB3aGlsZSAo
X01fZ2NvdW50ICsgMSA8IF9fbiAmJiBfX2MgIT0gX19lb2YgJiYgX19jICE9IF9faWRlbGltKQ0K
ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICpfX3MrKyA9IHRyYWl0c190eXBl
Ojp0b19jaGFyX3R5cGUoX19jKTsNCiAgICAgICAgICAgICAgICAgIF9fYyA9IF9fc2ItPnNuZXh0
YygpOw0KICAgICAgICAgICAgICAgICAgKytfTV9nY291bnQ7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICBpZiAoX19jID09IF9fZW9mKQ0KICAgICAgICAgICAgICAgIHRoaXMtPnNl
dHN0YXRlKGlvc19iYXNlOjplb2ZiaXQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlmIChm
YWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlv
c19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAm
IGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgICAqX19zID0gY2hhcl90eXBlKCk7DQogICAgICBpZiAoIV9NX2dj
b3VudCkNCiAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOw0KICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHM+DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgZ2V0KF9fc3RyZWFtYnVmX3R5cGUm
IF9fc2IsIGNoYXJfdHlwZSBfX2RlbGltKQ0KICAgIHsNCiAgICAgIF9NX2djb3VudCA9IDA7DQog
ICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAg
ICAgIHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
Y29uc3QgaW50X3R5cGUgX19pZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxp
bSk7DQogICAgICAgICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVv
ZigpOw0KICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3RoaXNfc2IgPSB0aGlzLT5y
ZGJ1ZigpOw0KICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3RoaXNfc2ItPnNnZXRjKCk7
DQoNCiAgICAgICAgICAgICAgd2hpbGUgKF9fYyAhPSBfX2VvZiAmJiBfX2MgIT0gX19pZGVsaW0N
CiAgICAgICAgICAgICAgICAgICAgICYmIChfX3NiLnNwdXRjKHRyYWl0c190eXBlOjp0b19jaGFy
X3R5cGUoX19jKSkgIT0gX19lb2YpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
ICAgICsrX01fZ2NvdW50Ow0KICAgICAgICAgICAgICAgICAgX19jID0gX190aGlzX3NiLT5zbmV4
dGMoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGlmIChfX2MgPT0gX19lb2Yp
DQogICAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmVvZmJpdCk7DQogICAg
ICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAg
ICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAg
IGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAg
ICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGlmICghX01fZ2Nv
dW50KQ0KICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cz4NCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgYmFz
aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoNCiAgICBnZXRsaW5lKGNoYXJfdHlwZSogX19z
LCBzdHJlYW1zaXplIF9fbiwgY2hhcl90eXBlIF9fZGVsaW0pDQogICAgew0KICAgICAgX01fZ2Nv
dW50ID0gMDsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOw0KICAgICAgaWYgKF9f
Y2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2lkZWxpbSA9IHRyYWl0c190eXBlOjp0b19pbnRf
dHlwZShfX2RlbGltKTsNCiAgICAgICAgICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSB0cmFp
dHNfdHlwZTo6ZW9mKCk7DQogICAgICAgICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IgPSB0
aGlzLT5yZGJ1ZigpOw0KICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0Yygp
Ow0KDQogICAgICAgICAgICAgIHdoaWxlIChfTV9nY291bnQgKyAxIDwgX19uICYmIF9fYyAhPSBf
X2VvZiAmJiBfX2MgIT0gX19pZGVsaW0pDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgKl9fcysrID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpOw0KICAgICAgICAg
ICAgICAgICAgX19jID0gX19zYi0+c25leHRjKCk7DQogICAgICAgICAgICAgICAgICArK19NX2dj
b3VudDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGlmIChfX2MgPT0gX19lb2Yp
DQogICAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmVvZmJpdCk7DQogICAg
ICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICBpZiAo
X19jID09IF9faWRlbGltKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
ICAgICAgX19zYi0+c25leHRjKCk7DQogICAgICAgICAgICAgICAgICAgICAgKytfTV9nY291bnQ7
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAg
ICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsN
CiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0
KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
ICAgKl9fcyA9IGNoYXJfdHlwZSgpOw0KICAgICAgaWYgKCFfTV9nY291bnQpDQogICAgICAgIHRo
aXMtPnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsNCiAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAg
IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFy
VCwgX1RyYWl0cz46Og0KICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbiwgaW50X3R5cGUgX19kZWxp
bSkNCiAgICB7DQogICAgICBfTV9nY291bnQgPSAwOw0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhp
cywgdHJ1ZSk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRy
dWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0g
dHJhaXRzX3R5cGU6OmVvZigpOw0KICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3Ni
ID0gdGhpcy0+cmRidWYoKTsNCiAgICAgICAgICAgICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dl
dGMoKTsNCg0KICAgICAgICAgICAgICBfX24gPSBtaW4oX19uLCBudW1lcmljX2xpbWl0czxzdHJl
YW1zaXplPjo6bWF4KCkpOw0KICAgICAgICAgICAgICB3aGlsZSAoX01fZ2NvdW50IDwgX19uICYm
IF9fYyAhPV9fZW9mICYmIF9fYyAhPSBfX2RlbGltKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICAgICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOw0KICAgICAgICAgICAgICAgICAgKytf
TV9nY291bnQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBpZiAoX19jID09IF9f
ZW9mKQ0KICAgICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjplb2ZiaXQpOw0K
ICAgICAgICAgICAgICBlbHNlIGlmIChfX2MgPT0gX19kZWxpbSkNCiAgICAgICAgICAgICAgICB7
DQogICAgICAgICAgICAgICAgICBfX3NiLT5zbmV4dGMoKTsNCiAgICAgICAgICAgICAgICAgICsr
X01fZ2NvdW50Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICBp
ZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0
ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5leGNlcHRpb25z
KCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAgdHlwZW5hbWUgYmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjppbnRfdHlwZQ0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6DQogICAgcGVlayh2b2lkKQ0KICAgIHsNCiAgICAgIGludF90eXBlIF9f
YyA9IHRyYWl0c190eXBlOjplb2YoKTsNCiAgICAgIF9NX2djb3VudCA9IDA7DQogICAgICBzZW50
cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAg
ICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsgX19jID0gdGhpcy0+cmRidWYoKS0+c2dl
dGMoKTsgfQ0KICAgICAgICAgIGlmIChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAg
ICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBp
ZiAoKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAg
ICAgICAgICAgOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gX19jOw0K
ICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQog
ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6DQogICAgcmVhZChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24p
DQogICAgew0KICAgICAgX01fZ2NvdW50ID0gMDsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMs
IHRydWUpOw0KICAgICAgaWYgKF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVl
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBfTV9nY291bnQgPSB0aGlzLT5yZGJ1Zigp
LT5zZ2V0bihfX3MsIF9fbik7DQogICAgICAgICAgICAgIGlmIChfTV9nY291bnQgIT0gX19uKQ0K
ICAgICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjplb2ZiaXQgfCBpb3NfYmFz
ZTo6ZmFpbGJpdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAg
ICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJp
dCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJh
ZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICAgIGVsc2UNCiAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOw0K
ICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHM+DQogICAgc3RyZWFtc2l6ZQ0KICAgIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6DQogICAgcmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUg
X19uKQ0KICAgIHsNCiAgICAgIF9NX2djb3VudCA9IDA7DQogICAgICBzZW50cnkgX19jZXJiKCp0
aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBpZiAo
dHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY29uc3QgaW50X3R5cGUgX19lb2Yg
PSB0cmFpdHNfdHlwZTo6ZW9mKCk7DQogICAgICAgICAgICAgIHN0cmVhbXNpemUgX19udW0gPSB0
aGlzLT5yZGJ1ZigpLT5pbl9hdmFpbCgpOw0KICAgICAgICAgICAgICBpZiAoX19udW0gIT0gc3Rh
dGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX19lb2YpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAgIF9fbnVtID0gbWluKF9fbnVtLCBfX24pOw0KICAgICAgICAgICAgICAgICAgaWYg
KF9fbnVtKQ0KICAgICAgICAgICAgICAgICAgICBfTV9nY291bnQgPSB0aGlzLT5yZGJ1ZigpLT5z
Z2V0bihfX3MsIF9fbnVtKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZW9mYml0KTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAg
ICAgICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAg
aWYgKCh0aGlzLT5leGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAg
ICAgICAgICAgIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAg
ICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICByZXR1cm4gX01fZ2Nv
dW50Ow0KICAgIH0NCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp
dHM+DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgcHV0YmFjayhjaGFyX3R5cGUgX19jKQ0KICAgIHsN
CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOw0KICAgICAgaWYgKF9fY2VyYikNCiAg
ICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsNCiAgICAgICAgICAg
ICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVmKCk7DQogICAgICAgICAgICAg
IGlmICghX19zYiB8fCBfX3NiLT5zcHV0YmFja2MoX19jKSA9PSBfX2VvZikNCiAgICAgICAgICAg
ICAgICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICB0aGlz
LT5zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsNCiAgICAgICAgICAgICAgaWYgKCh0aGlzLT5l
eGNlcHRpb25zKCkgJiBpb3NfYmFzZTo6YmFkYml0KSAhPSAwKQ0KICAgICAgICAgICAgICAgIDsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgICB0aGlzLT5zZXRz
dGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQog
IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4NCiAgICBiYXNpY19p
c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mDQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp
dHM+OjoNCiAgICB1bmdldCh2b2lkKQ0KICAgIHsNCiAgICAgIF9NX2djb3VudCA9IDA7DQogICAg
ICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAg
IHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgY29u
c3QgaW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7DQogICAgICAgICAgICAgIF9f
c3RyZWFtYnVmX3R5cGUqIF9fc2IgPSB0aGlzLT5yZGJ1ZigpOw0KICAgICAgICAgICAgICBpZiAo
IV9fc2IgfHwgX19lb2YgPT0gX19zYi0+c3VuZ2V0YygpKQ0KICAgICAgICAgICAgICAgIHRoaXMt
PnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIGlm
IChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0YXRl
KGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlvbnMo
KSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAgIHRoaXMtPnNldHN0YXRlKGlvc19i
YXNlOjpmYWlsYml0KTsNCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGludA0KICAgIGJhc2ljX2lz
dHJlYW08X0NoYXJULCBfVHJhaXRzPjo6DQogICAgc3luYyh2b2lkKQ0KICAgIHsNCiAgICAgIGlu
dCBfX3JldCA9IHRyYWl0c190eXBlOjplb2YoKTsNCiAgICAgIF9NX2djb3VudCA9IDA7DQogICAg
ICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAg
IHsNCiAgICAgICAgICBpZiAodHJ1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgX19z
dHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVmKCk7DQogICAgICAgICAgICAgIGlmICgh
X19zYiB8fCBfX3JldCA9PSBfX3NiLT5wdWJzeW5jKCkpDQogICAgICAgICAgICAgICAgdGhpcy0+
c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICBfX3JldCA9IDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNlKQ0K
ICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6
OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jh
c2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICAgIHJldHVybiBfX3JldDsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIHR5cGVuYW1lIGJhc2ljX2lzdHJlYW08X0No
YXJULCBfVHJhaXRzPjo6cG9zX3R5cGUNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz46Og0KICAgIHRlbGxnKHZvaWQpDQogICAgew0KICAgICAgcG9zX3R5cGUgX19yZXQgPSBwb3Nf
dHlwZSgtMSk7DQogICAgICBfTV9nY291bnQgPSAwOw0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhp
cywgdHJ1ZSk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRy
dWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgX19yZXQgPSB0aGlzLT5yZGJ1ZigpLT5w
dWJzZWVrb2ZmKDAsIGlvc19iYXNlOjpjdXIsIGlvc19iYXNlOjppbik7DQogICAgICAgICAgICB9
DQogICAgICAgICAgaWYgKGZhbHNlKQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAg
dGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhp
cy0+ZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAg
ICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIHJldHVybiBfX3JldDsNCiAgICB9
DQoNCg0KICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+DQogICAg
YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPjo6DQogICAgc2Vla2cocG9zX3R5cGUgX19wb3MpDQogICAgew0KICAgICAgX01f
Z2NvdW50ID0gMDsNCiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOw0KICAgICAgaWYg
KF9fY2VyYikNCiAgICAgICAgew0KICAgICAgICAgIGlmICh0cnVlKQ0KICAgICAgICAgICAgew0K
DQoNCiAgICAgICAgICAgICAgcG9zX3R5cGUgX19lcnIgPSB0aGlzLT5yZGJ1ZigpLT5wdWJzZWVr
cG9zKF9fcG9zLCBpb3NfYmFzZTo6aW4pOw0KDQoNCiAgICAgICAgICAgICAgaWYgKF9fZXJyID09
IHBvc190eXBlKG9mZl90eXBlKC0xKSkpDQogICAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUo
aW9zX2Jhc2U6OmZhaWxiaXQpOw0KDQogICAgICAgICAgICB9DQogICAgICAgICAgaWYgKGZhbHNl
KQ0KICAgICAgICAgICAgew0KDQoNCiAgICAgICAgICAgICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jh
c2U6OmJhZGJpdCk7DQogICAgICAgICAgICAgIGlmICgodGhpcy0+ZXhjZXB0aW9ucygpICYgaW9z
X2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYNCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Og0KICAgIHNlZWtn
KG9mZl90eXBlIF9fb2ZmLCBpb3NfYmFzZTo6c2Vla2RpciBfX2RpcikNCiAgICB7DQogICAgICBf
TV9nY291bnQgPSAwOw0KICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7DQogICAgICBp
ZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUpDQogICAgICAgICAgICB7
DQoNCg0KICAgICAgICAgICAgICBwb3NfdHlwZSBfX2VyciA9IHRoaXMtPnJkYnVmKCktPnB1YnNl
ZWtvZmYoX19vZmYsIF9fZGlyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6OmluKTsNCg0KDQogICAgICAgICAgICAgIGlm
IChfX2VyciA9PSBwb3NfdHlwZShvZmZfdHlwZSgtMSkpKQ0KICAgICAgICAgICAgICAgIHRoaXMt
PnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsNCg0KICAgICAgICAgICAgfQ0KICAgICAgICAg
IGlmIChmYWxzZSkNCiAgICAgICAgICAgIHsNCg0KDQogICAgICAgICAgICAgIHRoaXMtPnNldHN0
YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKHRoaXMtPmV4Y2VwdGlv
bnMoKSAmIGlvc19iYXNlOjpiYWRiaXQpICE9IDApDQogICAgICAgICAgICAgICAgOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0KICAgIGJhc2ljX2lzdHJl
YW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJU
LCBfVHJhaXRzPiYgX19pbiwgX0NoYXJUJiBfX2MpDQogICAgew0KICAgICAgdHlwZWRlZiBiYXNp
Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7DQogICAgICB0eXBlbmFt
ZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX2luLCBmYWxzZSk7DQogICAgICBpZiAo
X19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKHRydWUpDQogICAgICAgICAgICB7IF9f
aW4uZ2V0KF9fYyk7IH0NCiAgICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0K
ICAgICAgICAgICAgICBfX2luLnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAg
ICAgICBpZiAoKF9faW4uZXhjZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAg
ICAgICAgICAgICAgICA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGVsc2UNCiAg
ICAgICAgX19pbi5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7DQogICAgICByZXR1cm4gX19p
bjsNCiAgICB9DQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
Pg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYNCiAgICBvcGVyYXRvcj4+KGJh
c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pbiwgX0NoYXJUKiBfX3MpDQogICAgew0K
ICAgICAgdHlwZWRlZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5
cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjpfX3N0cmVhbWJ1Zl90
eXBlIF9fc3RyZWFtYnVmX3R5cGU7DQogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6Omlu
dF90eXBlIGludF90eXBlOw0KICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOw0KICAgICAg
dHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsNCiAgICAgIHN0cmVhbXNpemUgX19l
eHRyYWN0ZWQgPSAwOw0KDQogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9f
Y2VyYihfX2luLCBmYWxzZSk7DQogICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAg
ICAgaWYgKHRydWUpDQogICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgc3RyZWFtc2l6ZSBf
X251bSA9IF9faW4ud2lkdGgoKTsNCiAgICAgICAgICAgICAgaWYgKF9fbnVtID09IDApDQogICAg
ICAgICAgICAgICAgX19udW0gPSBudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCk7DQoN
CiAgICAgICAgICAgICAgY29uc3QgX19jdHlwZV90eXBlJiBfX2N0eXBlID0gdXNlX2ZhY2V0PF9f
Y3R5cGVfdHlwZT4oX19pbi5nZXRsb2MoKSk7DQogICAgICAgICAgICAgIGNvbnN0IGludF90eXBl
IF9fZW9mID0gX1RyYWl0czo6ZW9mKCk7DQogICAgICAgICAgICAgIF9fc3RyZWFtYnVmX3R5cGUq
IF9fc2IgPSBfX2luLnJkYnVmKCk7DQogICAgICAgICAgICAgIGludF90eXBlIF9fYyA9IF9fc2It
PnNnZXRjKCk7DQoNCiAgICAgICAgICAgICAgd2hpbGUgKF9fZXh0cmFjdGVkIDwgX19udW0gLSAx
DQogICAgICAgICAgICAgICAgICAgICAmJiBfX2MgIT0gX19lb2YgJiYgIV9fY3R5cGUuaXMoY3R5
cGVfYmFzZTo6c3BhY2UsIF9fYykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgKl9fcysrID0gX19jOw0KICAgICAgICAgICAgICAgICAgKytfX2V4dHJhY3RlZDsNCiAgICAg
ICAgICAgICAgICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgaWYgKF9fYyA9PSBfX2VvZikNCiAgICAgICAgICAgICAgICBfX2luLnNldHN0
YXRlKGlvc19iYXNlOjplb2ZiaXQpOw0KDQoNCg0KICAgICAgICAgICAgICAqX19zID0gY2hhcl90
eXBlKCk7DQoNCiAgICAgICAgICAgICAgX19pbi53aWR0aCgwKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAgICB7DQoNCg0KICAgICAgICAgICAgICBfX2lu
LnNldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOw0KICAgICAgICAgICAgICBpZiAoKF9faW4uZXhj
ZXB0aW9ucygpICYgaW9zX2Jhc2U6OmJhZGJpdCkgIT0gMCkNCiAgICAgICAgICAgICAgICA7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIGlmICghX19leHRyYWN0ZWQpDQogICAgICAg
IF9faW4uc2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOw0KICAgICAgcmV0dXJuIF9faW47DQog
ICAgfQ0KDQoNCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPg0K
ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULF9UcmFpdHM+Jg0KICAgIHdzKGJhc2ljX2lzdHJlYW08
X0NoYXJULF9UcmFpdHM+JiBfX2luKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVh
bTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfX2lzdHJlYW1fdHlwZTo6X19zdHJlYW1idWZfdHlwZSBfX3N0cmVhbWJ1Zl90eXBlOw0KICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6X19jdHlwZV90eXBlIF9fY3R5cGVf
dHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9f
aW50X3R5cGU7DQoNCiAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYgX19jdHlwZSA9IHVzZV9mYWNl
dDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOw0KICAgICAgY29uc3QgX19pbnRfdHlwZSBf
X2VvZiA9IF9UcmFpdHM6OmVvZigpOw0KICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IF9f
aW4ucmRidWYoKTsNCiAgICAgIF9faW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsNCg0KICAg
ICAgd2hpbGUgKF9fYyAhPSBfX2VvZiAmJiBfX2N0eXBlLmlzKGN0eXBlX2Jhc2U6OnNwYWNlLCBf
X2MpKQ0KICAgICAgICBfX2MgPSBfX3NiLT5zbmV4dGMoKTsNCiAgICAgIGlmIChfX2MgPT0gX19l
b2YpDQogICAgICAgIF9faW4uc2V0c3RhdGUoaW9zX2Jhc2U6OmVvZmJpdCk7DQoNCiAgICAgIHJl
dHVybiBfX2luOw0KICAgIH0NCg0KDQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPg0KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYNCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg
X19pbiwNCiAgICAgICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv
Yz4mIF9fc3RyKQ0KICAgIHsNCiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U
cmFpdHM+IF9faXN0cmVhbV90eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1f
dHlwZTo6aW50X3R5cGUgX19pbnRfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3Ry
ZWFtX3R5cGU6Ol9fc3RyZWFtYnVmX3R5cGUgX19zdHJlYW1idWZfdHlwZTsNCiAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0eXBlX3R5cGU7DQog
ICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJp
bmdfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBl
IF9fc2l6ZV90eXBlOw0KICAgICAgX19zaXplX3R5cGUgX19leHRyYWN0ZWQgPSAwOw0KDQogICAg
ICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX2luLCBmYWxzZSk7DQog
ICAgICBpZiAoX19jZXJiKQ0KICAgICAgICB7DQogICAgICAgICAgX19zdHIuZXJhc2UoKTsNCiAg
ICAgICAgICBzdHJlYW1zaXplIF9fdyA9IF9faW4ud2lkdGgoKTsNCiAgICAgICAgICBfX3NpemVf
dHlwZSBfX247DQogICAgICAgICAgX19uID0gX193ID4gMCA/IHN0YXRpY19jYXN0PF9fc2l6ZV90
eXBlPihfX3cpIDogX19zdHIubWF4X3NpemUoKTsNCg0KICAgICAgICAgIGNvbnN0IF9fY3R5cGVf
dHlwZSYgX19jdHlwZSA9IHVzZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOw0K
ICAgICAgICAgIGNvbnN0IF9faW50X3R5cGUgX19lb2YgPSBfVHJhaXRzOjplb2YoKTsNCiAgICAg
ICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19pbi5yZGJ1ZigpOw0KICAgICAgICAgIF9f
aW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsNCg0KICAgICAgICAgIHdoaWxlIChfX2V4dHJh
Y3RlZCA8IF9fbg0KICAgICAgICAgICAgICAgICAmJiBfX2MgIT0gX19lb2YgJiYgIV9fY3R5cGUu
aXMoY3R5cGVfYmFzZTo6c3BhY2UsIF9fYykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
IF9fc3RyICs9IF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOw0KICAgICAgICAgICAgICArK19f
ZXh0cmFjdGVkOw0KICAgICAgICAgICAgICBfX2MgPSBfX3NiLT5zbmV4dGMoKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICBpZiAoX19jID09IF9fZW9mKQ0KICAgICAgICAgICAgX19pbi5zZXRz
dGF0ZShpb3NfYmFzZTo6ZW9mYml0KTsNCiAgICAgICAgICBfX2luLndpZHRoKDApOw0KICAgICAg
ICB9DQoNCg0KICAgICAgaWYgKCFfX2V4dHJhY3RlZCkNCiAgICAgICAgX19pbi5zZXRzdGF0ZSAo
aW9zX2Jhc2U6OmZhaWxiaXQpOw0KDQogICAgICByZXR1cm4gX19pbjsNCiAgICB9DQoNCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+
DQogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jg0KICAgIGdldGxpbmUoYmFzaWNf
aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLA0KICAgICAgICAgICAgYmFzaWNfc3RyaW5n
PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIsIF9DaGFyVCBfX2RlbGltKQ0KICAgIHsN
CiAgICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90
eXBlOw0KICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50X3R5cGUgX19p
bnRfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fc3RyZWFt
YnVmX3R5cGUgX19zdHJlYW1idWZfdHlwZTsNCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3Ry
ZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBfX2N0eXBlX3R5cGU7DQogICAgICB0eXBlZGVmIGJhc2lj
X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJpbmdfdHlwZTsNCiAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOw0KDQog
ICAgICBfX3NpemVfdHlwZSBfX2V4dHJhY3RlZCA9IDA7DQogICAgICBib29sIF9fdGVzdGRlbGlt
ID0gZmFsc2U7DQogICAgICB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihf
X2luLCB0cnVlKTsNCiAgICAgIGlmIChfX2NlcmIpDQogICAgICAgIHsNCiAgICAgICAgICBfX3N0
ci5lcmFzZSgpOw0KICAgICAgICAgIF9fc2l6ZV90eXBlIF9fbiA9IF9fc3RyLm1heF9zaXplKCk7
DQoNCiAgICAgICAgICBfX2ludF90eXBlIF9faWRlbGltID0gX1RyYWl0czo6dG9faW50X3R5cGUo
X19kZWxpbSk7DQogICAgICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IF9faW4ucmRidWYo
KTsNCiAgICAgICAgICBfX2ludF90eXBlIF9fYyA9IF9fc2ItPnNidW1wYygpOw0KICAgICAgICAg
IGNvbnN0IF9faW50X3R5cGUgX19lb2YgPSBfVHJhaXRzOjplb2YoKTsNCiAgICAgICAgICBfX3Rl
c3RkZWxpbSA9IF9fYyA9PSBfX2lkZWxpbTsNCg0KICAgICAgICAgIHdoaWxlIChfX2V4dHJhY3Rl
ZCA8PSBfX24gJiYgX19jICE9IF9fZW9mICYmICFfX3Rlc3RkZWxpbSkNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgX19zdHIgKz0gX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYyk7DQogICAg
ICAgICAgICAgICsrX19leHRyYWN0ZWQ7DQogICAgICAgICAgICAgIF9fYyA9IF9fc2ItPnNidW1w
YygpOw0KICAgICAgICAgICAgICBfX3Rlc3RkZWxpbSA9IF9fYyA9PSBfX2lkZWxpbTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICBpZiAoX19jID09IF9fZW9mKQ0KICAgICAgICAgICAgX19pbi5z
ZXRzdGF0ZShpb3NfYmFzZTo6ZW9mYml0KTsNCiAgICAgICAgfQ0KICAgICAgaWYgKCFfX2V4dHJh
Y3RlZCAmJiAhX190ZXN0ZGVsaW0pDQogICAgICAgIF9faW4uc2V0c3RhdGUoaW9zX2Jhc2U6OmZh
aWxiaXQpOw0KICAgICAgcmV0dXJuIF9faW47DQogICAgfQ0KDQogIHRlbXBsYXRlPGNsYXNzIF9D
aGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KICAgIGlubGluZSBiYXNpY19pc3Ry
ZWFtPF9DaGFyVCxfVHJhaXRzPiYNCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08X0NoYXJULCBf
VHJhaXRzPiYgX19pbiwNCiAgICAgICAgICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsX1RyYWl0cyxf
QWxsb2M+JiBfX3N0cikNCiAgICB7IHJldHVybiBnZXRsaW5lKF9faW4sIF9fc3RyLCBfX2luLndp
ZGVuKCdcbicpKTsgfQ0KDQoNCg0KDQogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19pc3Ry
ZWFtPGNoYXI+Ow0KICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgd3MoaXN0cmVhbSYpOw0KICBl
eHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgY2hhciYpOw0KICBl
eHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgY2hhciopOw0KICBl
eHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgdW5zaWduZWQgY2hh
ciYpOw0KICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgc2ln
bmVkIGNoYXImKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVh
bSYsIHVuc2lnbmVkIGNoYXIqKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9y
Pj4oaXN0cmVhbSYsIHNpZ25lZCBjaGFyKik7DQoNCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJh
c2ljX2lzdHJlYW08d2NoYXJfdD47DQogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgd3Mod2lz
dHJlYW0mKTsNCiAgZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiBvcGVyYXRvcj4+KHdpc3RyZWFt
Jiwgd2NoYXJfdCYpOw0KICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIG9wZXJhdG9yPj4od2lz
dHJlYW0mLCB3Y2hhcl90Kik7DQp9DQojIDI4OCAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9n
KystdjMvaXN0cmVhbSIgMiAzDQojIDQ3ICJ0Oi9tc3lzLzEuMC9taW5ndy9pbmNsdWRlL2crKy12
My9pb3N0cmVhbSIgMiAzDQoNCm5hbWVzcGFjZSBzdGQNCnsNCiAgZXh0ZXJuIGlzdHJlYW0gY2lu
Ow0KICBleHRlcm4gb3N0cmVhbSBjb3V0Ow0KICBleHRlcm4gb3N0cmVhbSBjZXJyOw0KICBleHRl
cm4gb3N0cmVhbSBjbG9nOw0KIyA2MiAidDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMv
aW9zdHJlYW0iIDMNCiAgc3RhdGljIGlvc19iYXNlOjpJbml0IF9faW9pbml0Ow0KfQ0KIyAzMyAi
dDovbXN5cy8xLjAvbWluZ3cvaW5jbHVkZS9nKystdjMvYmFja3dhcmQvaW9zdHJlYW0uaCIgMiAz
DQoNCnVzaW5nIHN0ZDo6aW9zdHJlYW07DQp1c2luZyBzdGQ6Om9zdHJlYW07DQp1c2luZyBzdGQ6
OmlzdHJlYW07DQp1c2luZyBzdGQ6OmlvczsNCnVzaW5nIHN0ZDo6c3RyZWFtYnVmOw0KDQp1c2lu
ZyBzdGQ6OmNvdXQ7DQp1c2luZyBzdGQ6OmNpbjsNCnVzaW5nIHN0ZDo6Y2VycjsNCnVzaW5nIHN0
ZDo6Y2xvZzsNCg0KDQoNCg0KDQoNCg0KdXNpbmcgc3RkOjp3czsNCnVzaW5nIHN0ZDo6ZW5kbDsN
CnVzaW5nIHN0ZDo6ZW5kczsNCnVzaW5nIHN0ZDo6Zmx1c2g7DQojIDM0ICIuLi8uLi9pbmNsdWRl
L3d4L21lbW9yeS5oIiAyDQojIDQzICIuLi8uLi9pbmNsdWRlL3d4L21lbW9yeS5oIg0Kdm9pZCAq
IHd4RGVidWdBbGxvYyhzaXplX3Qgc2l6ZSwgY2hhciAqIGZpbGVOYW1lLCBpbnQgbGluZU51bSwg
Ym9vbCBpc09iamVjdCwgYm9vbCBpc1ZlY3QgPSAwKTsNCnZvaWQgd3hEZWJ1Z0ZyZWUodm9pZCAq
IGJ1ZiwgYm9vbCBpc1ZlY3QgPSAwKTsNCiMgOTQgIi4uLy4uL2luY2x1ZGUvd3gvbWVtb3J5Lmgi
DQp0eXBlZGVmIHVuc2lnbmVkIGludCB3eE1hcmtlclR5cGU7DQoNCg0KDQoNCg0KDQpjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1lbVN0cnVjdCB7DQoNCmZyaWVuZCBjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eERlYnVnQ29udGV4dDsNCg0KcHVibGljOg0KcHVi
bGljOg0KICAgIGludCBBc3NlcnRMaXN0ICgpOw0KDQogICAgc2l6ZV90IFJlcXVlc3RTaXplICgp
IHsgcmV0dXJuIG1fcmVxU2l6ZTsgfQ0KICAgIHd4TWFya2VyVHlwZSBNYXJrZXIgKCkgeyByZXR1
cm4gbV9maXJzdE1hcmtlcjsgfQ0KDQoNCiAgICBpbmxpbmUgdm9pZCBTZXREZWxldGVkICgpOw0K
ICAgIGlubGluZSBpbnQgSXNEZWxldGVkICgpOw0KDQogICAgaW50IEFwcGVuZCAoKTsNCiAgICBp
bnQgVW5saW5rICgpOw0KDQoNCg0KICAgIGludCBBc3NlcnRJdCAoKTsNCg0KDQogICAgaW50IFZh
bGlkYXRlTm9kZSAoKTsNCg0KDQogICAgaW50IENoZWNrQmxvY2sgKCk7DQogICAgaW50IENoZWNr
QWxsUHJldmlvdXMgKCk7DQoNCg0KICAgIHZvaWQgUHJpbnROb2RlICgpOw0KDQoNCiAgICB2b2lk
IEVycm9yTXNnIChjb25zdCBjaGFyICopOw0KICAgIHZvaWQgRXJyb3JNc2cgKCk7DQoNCiAgICBp
bmxpbmUgdm9pZCAqR2V0QWN0dWFsRGF0YSh2b2lkKSBjb25zdCB7IHJldHVybiBtX2FjdHVhbERh
dGE7IH0NCg0KICAgIHZvaWQgRHVtcCh2b2lkKTsNCg0KcHVibGljOg0KDQoNCiAgICB3eE1hcmtl
clR5cGUgbV9maXJzdE1hcmtlcjsNCg0KDQogICAgY2hhciogbV9maWxlTmFtZTsNCiAgICBpbnQg
bV9saW5lTnVtOw0KDQoNCiAgICBzaXplX3QgbV9yZXFTaXplOw0KDQoNCg0KDQogICAgd3hNYXJr
ZXJUeXBlIG1faWQ7DQoNCiAgICB3eE1lbVN0cnVjdCAqIG1fcHJldjsNCiAgICB3eE1lbVN0cnVj
dCAqIG1fbmV4dDsNCg0KICAgIHZvaWQgKiBtX2FjdHVhbERhdGE7DQogICAgYm9vbCBtX2lzT2Jq
ZWN0Ow0KfTsNCg0KDQp0eXBlZGVmIHZvaWQgKHd4TWVtU3RydWN0OjoqUG1TRlYpICgpOw0KIyAx
NzkgIi4uLy4uL2luY2x1ZGUvd3gvbWVtb3J5LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eERlYnVnQ29udGV4dCB7DQoNCnByb3RlY3RlZDoNCg0KICAgIHN0YXRpYyBzaXpl
X3QgQ2FsY0FsaWdubWVudCAoKTsNCg0KDQoNCg0KICAgIHN0YXRpYyBzaXplX3QgR2V0UGFkZGlu
ZyAoY29uc3Qgc2l6ZV90IHNpemUpIDsNCg0KDQogICAgc3RhdGljIHZvaWQgVHJhdmVyc2VMaXN0
IChQbVNGViwgd3hNZW1TdHJ1Y3QgKmZyb20gPSBfX251bGwpOw0KDQogICAgc3RhdGljIHN0cmVh
bWJ1ZiAqbV9zdHJlYW1CdWY7DQogICAgc3RhdGljIG9zdHJlYW0gKm1fZGVidWdTdHJlYW07DQoN
CiAgICBzdGF0aWMgaW50IGRlYnVnTGV2ZWw7DQogICAgc3RhdGljIGJvb2wgZGVidWdPbjsNCg0K
ICAgICAgICBzdGF0aWMgaW50IG1fYmFsaWduOw0KICAgICAgICBzdGF0aWMgaW50IG1fYmFsaWdu
bWFzazsNCnB1YmxpYzoNCg0KDQogICAgc3RhdGljIHd4TWVtU3RydWN0ICpjaGVja1BvaW50Ow0K
DQogICAgd3hEZWJ1Z0NvbnRleHQodm9pZCk7DQogICAgfnd4RGVidWdDb250ZXh0KHZvaWQpOw0K
DQogICAgc3RhdGljIGJvb2wgSGFzU3RyZWFtKHZvaWQpIHsgcmV0dXJuIChtX2RlYnVnU3RyZWFt
ICE9IF9fbnVsbCk7IH07DQogICAgc3RhdGljIG9zdHJlYW0mIEdldFN0cmVhbSh2b2lkKSB7IHJl
dHVybiAqbV9kZWJ1Z1N0cmVhbTsgfQ0KICAgIHN0YXRpYyBzdHJlYW1idWYgKkdldFN0cmVhbUJ1
Zih2b2lkKSB7IHJldHVybiBtX3N0cmVhbUJ1ZjsgfQ0KICAgIHN0YXRpYyB2b2lkIFNldFN0cmVh
bShvc3RyZWFtICpzdHJlYW0sIHN0cmVhbWJ1ZiAqYnVmID0gX19udWxsKTsNCiAgICBzdGF0aWMg
Ym9vbCBTZXRGaWxlKGNvbnN0IHd4U3RyaW5nJiBmaWxlKTsNCiAgICBzdGF0aWMgYm9vbCBTZXRT
dGFuZGFyZEVycm9yKHZvaWQpOw0KDQogICAgc3RhdGljIGludCBHZXRMZXZlbCh2b2lkKSB7IHJl
dHVybiBkZWJ1Z0xldmVsOyB9DQogICAgc3RhdGljIHZvaWQgU2V0TGV2ZWwoaW50IGxldmVsKSB7
IGRlYnVnTGV2ZWwgPSBsZXZlbDsgfQ0KDQogICAgc3RhdGljIGJvb2wgR2V0RGVidWdNb2RlKHZv
aWQpIHsgcmV0dXJuIGRlYnVnT247IH0NCiAgICBzdGF0aWMgdm9pZCBTZXREZWJ1Z01vZGUoYm9v
bCBmbGFnKSB7IGRlYnVnT24gPSBmbGFnOyB9DQoNCiAgICBzdGF0aWMgdm9pZCBTZXRDaGVja3Bv
aW50KGJvb2wgYWxsID0gMCk7DQogICAgc3RhdGljIHd4TWVtU3RydWN0ICpHZXRDaGVja3BvaW50
KHZvaWQpIHsgcmV0dXJuIGNoZWNrUG9pbnQ7IH0NCg0KDQoNCiAgICBzdGF0aWMgc2l6ZV90IFBh
ZGRlZFNpemUgKGNvbnN0IHNpemVfdCByZXFTaXplKTsNCg0KDQoNCiAgICBzdGF0aWMgc2l6ZV90
IFRvdFNpemUgKGNvbnN0IHNpemVfdCByZXFTaXplKTsNCg0KDQogICAgc3RhdGljIGNoYXIgKiBT
dHJ1Y3RQb3MgKGNvbnN0IGNoYXIgKiBidWYpOw0KICAgIHN0YXRpYyBjaGFyICogTWlkTWFya2Vy
UG9zIChjb25zdCBjaGFyICogYnVmKTsNCiAgICBzdGF0aWMgY2hhciAqIENhbGxlck1lbVBvcyAo
Y29uc3QgY2hhciAqIGJ1Zik7DQogICAgc3RhdGljIGNoYXIgKiBFbmRNYXJrZXJQb3MgKGNvbnN0
IGNoYXIgKiBidWYsIGNvbnN0IHNpemVfdCBzaXplKTsNCg0KDQoNCiAgICBzdGF0aWMgY2hhciAq
IFN0YXJ0UG9zIChjb25zdCBjaGFyICogY2FsbGVyKTsNCg0KDQogICAgc3RhdGljIHd4TWVtU3Ry
dWN0ICogR2V0SGVhZCAoKSB7IHJldHVybiBtX2hlYWQ7IH0NCiAgICBzdGF0aWMgd3hNZW1TdHJ1
Y3QgKiBHZXRUYWlsICgpIHsgcmV0dXJuIG1fdGFpbDsgfQ0KDQoNCiAgICBzdGF0aWMgd3hNZW1T
dHJ1Y3QgKiBTZXRIZWFkICh3eE1lbVN0cnVjdCAqIHN0KSB7IHJldHVybiAobV9oZWFkID0gc3Qp
OyB9DQogICAgc3RhdGljIHd4TWVtU3RydWN0ICogU2V0VGFpbCAod3hNZW1TdHJ1Y3QgKiBzdCkg
eyByZXR1cm4gKG1fdGFpbCA9IHN0KTsgfQ0KDQoNCg0KICAgIHN0YXRpYyBib29sIEdldENoZWNr
UHJldmlvdXMgKCkgeyByZXR1cm4gbV9jaGVja1ByZXZpb3VzOyB9DQogICAgc3RhdGljIHZvaWQg
U2V0Q2hlY2tQcmV2aW91cyAoYm9vbCB2YWx1ZSkgeyBtX2NoZWNrUHJldmlvdXMgPSB2YWx1ZTsg
fQ0KDQoNCiAgICBzdGF0aWMgaW50IENoZWNrKGJvb2wgY2hlY2tBbGwgPSAwKTsNCg0KDQogICAg
c3RhdGljIGJvb2wgUHJpbnRMaXN0KHZvaWQpOw0KDQoNCiAgICBzdGF0aWMgYm9vbCBEdW1wKHZv
aWQpOw0KDQoNCiAgICBzdGF0aWMgYm9vbCBQcmludFN0YXRpc3RpY3MoYm9vbCBkZXRhaWxlZCA9
IDEpOw0KDQoNCiAgICBzdGF0aWMgYm9vbCBQcmludENsYXNzZXModm9pZCk7DQoNCg0KDQogICAg
c3RhdGljIGludCBDb3VudE9iamVjdHNMZWZ0KGJvb2wgc2luY2VDaGVja3BvaW50ID0gMCk7DQoN
CnByaXZhdGU6DQoNCg0KICAgIHN0YXRpYyB3eE1lbVN0cnVjdCogbV9oZWFkOw0KICAgIHN0YXRp
YyB3eE1lbVN0cnVjdCogbV90YWlsOw0KDQoNCg0KICAgIHN0YXRpYyBib29sIG1fY2hlY2tQcmV2
aW91czsNCn07DQoNCg0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRyYWNlKGNv
bnN0IGNoYXIgKmZtdCAuLi4pOw0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRy
YWNlTGV2ZWwoaW50IGxldmVsLCBjb25zdCBjaGFyICpmbXQgLi4uKTsNCiMgMzA0ICIuLi8uLi9p
bmNsdWRlL3d4L21lbW9yeS5oIg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy93aW51bmRlZi5o
IiAxDQojIDMyICIuLi8uLi9pbmNsdWRlL3d4L21zdy93aW51bmRlZi5oIg0KICAgaW5saW5lIEJP
T0wgR2V0Q2hhcldpZHRoKEhEQyBkYywgVUlOVCBmaXJzdCwgVUlOVCBsYXN0LCBMUElOVCBidWZm
ZXIpDQogICB7DQoNCg0KDQogICAgICByZXR1cm4gR2V0Q2hhcldpZHRoQShkYywgZmlyc3QsIGxh
c3QsIGJ1ZmZlcik7DQoNCiAgIH0NCiMgNTIgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3dpbnVuZGVm
LmgiDQogICBpbmxpbmUgSFdORCBGaW5kV2luZG93KExQQ1NUUiBjbGFzc25hbWUsIExQQ1NUUiB3
aW5kb3duYW1lKQ0KICAgew0KICAgICAgcmV0dXJuIEZpbmRXaW5kb3dBKGNsYXNzbmFtZSwgd2lu
ZG93bmFtZSk7DQogICB9DQojIDY5ICIuLi8uLi9pbmNsdWRlL3d4L21zdy93aW51bmRlZi5oIg0K
ICAgaW5saW5lIGludCBHZXRDbGFzc05hbWUoSFdORCBoLCBMUFNUUiBjbGFzc25hbWUsIGludCBt
YXhjb3VudCkNCiAgIHsNCiAgICAgIHJldHVybiBHZXRDbGFzc05hbWVBKGgsIGNsYXNzbmFtZSwg
bWF4Y291bnQpOw0KICAgfQ0KIyA4NiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvd2ludW5kZWYuaCIN
CiAgIGlubGluZSBCT09MIEdldENsYXNzSW5mbyhISU5TVEFOQ0UgaCwgTFBDU1RSIG5hbWUsIExQ
V05EQ0xBU1NBIHdpbmNsYXNzKQ0KICAgew0KICAgICAgcmV0dXJuIEdldENsYXNzSW5mb0EoaCwg
bmFtZSwgd2luY2xhc3MpOw0KICAgfQ0KIyAxMDMgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3dpbnVu
ZGVmLmgiDQogICBpbmxpbmUgSEFDQ0VMIExvYWRBY2NlbGVyYXRvcnMoSElOU1RBTkNFIGgsIExQ
Q1NUUiBuYW1lKQ0KICAgew0KICAgICAgcmV0dXJuIExvYWRBY2NlbGVyYXRvcnNBKGgsIG5hbWUp
Ow0KICAgfQ0KIyAxMjAgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3dpbnVuZGVmLmgiDQogICBpbmxp
bmUgaW50IERyYXdUZXh0KEhEQyBoLCBMUENTVFIgc3RyLCBpbnQgY291bnQsIExQUkVDVCByZWN0
LCBVSU5UIGZvcm1hdCkNCiAgIHsNCiAgICAgIHJldHVybiBEcmF3VGV4dEEoaCwgc3RyLCBjb3Vu
dCwgcmVjdCwgZm9ybWF0KTsNCiAgIH0NCiMgMTQxICIuLi8uLi9pbmNsdWRlL3d4L21zdy93aW51
bmRlZi5oIg0KICAgaW5saW5lIGludCBTdGFydERvYyhIREMgaCwgY29uc3QgRE9DSU5GTyogaW5m
bykNCiAgIHsNCiAgICAgIHJldHVybiBTdGFydERvY0EoaCwgaW5mbyk7DQogICB9DQoNCg0KDQoN
Cg0KDQoNCiAgIGlubGluZSBpbnQgR2V0T2JqZWN0KEhHRElPQkogaCwgaW50IGksIExQVk9JRCBi
dWZmZXIpDQogICB7DQoNCg0KDQogICAgICByZXR1cm4gR2V0T2JqZWN0QShoLCBpLCBidWZmZXIp
Ow0KDQogICB9DQoNCg0KDQoNCg0KDQogICBpbmxpbmUgaW50IEdldE1lc3NhZ2UoTFBNU0cgbHBN
c2csIEhXTkQgaFduZCwgVUlOVCB3TXNnRmlsdGVyTWluLCBVSU5UIHdNc2dGaWx0ZXJNYXgpDQog
ICB7DQoNCg0KDQogICAgICByZXR1cm4gR2V0TWVzc2FnZUEobHBNc2csIGhXbmQsIHdNc2dGaWx0
ZXJNaW4sIHdNc2dGaWx0ZXJNYXgpOw0KDQogICB9DQojIDE4NiAiLi4vLi4vaW5jbHVkZS93eC9t
c3cvd2ludW5kZWYuaCINCiAgICBpbmxpbmUgSElOU1RBTkNFIExvYWRMaWJyYXJ5KExQQ1NUUiBs
cExpYkZpbGVOYW1lKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIExvYWRMaWJyYXJ5QShscExpYkZp
bGVOYW1lKTsNCiAgICB9DQojIDIwMiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvd2ludW5kZWYuaCIN
CiAgICBpbmxpbmUgSFJTUkMgRmluZFJlc291cmNlKEhNT0RVTEUgaE1vZHVsZSwgTFBDU1RSIGxw
TmFtZSwgTFBDU1RSIGxwVHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBGaW5kUmVzb3VyY2VB
KGhNb2R1bGUsIGxwTmFtZSwgbHBUeXBlKTsNCiAgICB9DQojIDMwNSAiLi4vLi4vaW5jbHVkZS93
eC9tZW1vcnkuaCIgMg0KIyAyMSAiLi4vLi4vaW5jbHVkZS93eC9vYmplY3QuaCIgMg0KDQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE9iamVjdDsNCiMgMzUgIi4uLy4uL2luY2x1
ZGUvd3gvb2JqZWN0LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENsYXNz
SW5mbzsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4SW5wdXRTdHJlYW07DQpj
bGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE91dHB1dFN0cmVhbTsNCmNsYXNzIF9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4T2JqZWN0SW5wdXRTdHJlYW07DQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE9iamVjdE91dHB1dFN0cmVhbTsNCmNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4SGFzaFRhYmxlOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hPYmplY3RfU2VyaWFsaXplOw0KIyA1MSAiLi4vLi4vaW5jbHVkZS93eC9v
YmplY3QuaCINCnR5cGVkZWYgd3hPYmplY3QgKiAoKnd4T2JqZWN0Q29uc3RydWN0b3JGbikgKHZv
aWQpOw0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENsYXNzSW5mbw0Kew0K
IHB1YmxpYzoNCiAgIHd4Q2xhc3NJbmZvKGNoYXIgKmNOYW1lLCBjaGFyICpiYXNlTmFtZTEsIGNo
YXIgKmJhc2VOYW1lMiwgaW50IHN6LCB3eE9iamVjdENvbnN0cnVjdG9yRm4gZm4pOw0KDQogICB3
eE9iamVjdCAqQ3JlYXRlT2JqZWN0KHZvaWQpOw0KDQogICBpbmxpbmUgY2hhciAqR2V0Q2xhc3NO
YW1lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lOyB9DQogICBpbmxpbmUgY2hhciAq
R2V0QmFzZUNsYXNzTmFtZTEodm9pZCkgY29uc3QgeyByZXR1cm4gbV9iYXNlQ2xhc3NOYW1lMTsg
fQ0KICAgaW5saW5lIGNoYXIgKkdldEJhc2VDbGFzc05hbWUyKHZvaWQpIGNvbnN0IHsgcmV0dXJu
IG1fYmFzZUNsYXNzTmFtZTI7IH0NCiAgIGlubGluZSB3eENsYXNzSW5mbyogR2V0QmFzZUNsYXNz
MSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZUluZm8xOyB9DQogICBpbmxpbmUgd3hDbGFzc0luZm8q
IEdldEJhc2VDbGFzczIoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VJbmZvMjsgfQ0KICAgaW5saW5l
IGludCBHZXRTaXplKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsgfQ0KICAgaW5s
aW5lIHd4T2JqZWN0Q29uc3RydWN0b3JGbiBHZXRDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0Q29uc3RydWN0b3I7IH0NCiAgIHN0YXRpYyBpbmxpbmUgd3hDbGFzc0luZm8qIEdl
dEZpcnN0KCkgeyByZXR1cm4gc21fZmlyc3Q7IH0NCiAgIGlubGluZSB3eENsYXNzSW5mbyogR2V0
TmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQ0KICAgYm9vbCBJc0tpbmRPZih3eENsYXNz
SW5mbyAqaW5mbykgY29uc3Q7DQoNCiAgIHN0YXRpYyB3eENsYXNzSW5mbyAqRmluZENsYXNzKGNo
YXIgKmMpOw0KDQoNCiAgIHN0YXRpYyB2b2lkIEluaXRpYWxpemVDbGFzc2VzKHZvaWQpOw0KDQoN
CiAgIHN0YXRpYyB2b2lkIENsZWFuVXBDbGFzc2VzKHZvaWQpOw0KDQpwdWJsaWM6DQogICBjaGFy
KiBtX2NsYXNzTmFtZTsNCiAgIGNoYXIqIG1fYmFzZUNsYXNzTmFtZTE7DQogICBjaGFyKiBtX2Jh
c2VDbGFzc05hbWUyOw0KICAgaW50IG1fb2JqZWN0U2l6ZTsNCiAgIHd4T2JqZWN0Q29uc3RydWN0
b3JGbiBtX29iamVjdENvbnN0cnVjdG9yOw0KDQoNCg0KICAgd3hDbGFzc0luZm8qIG1fYmFzZUlu
Zm8xOw0KICAgd3hDbGFzc0luZm8qIG1fYmFzZUluZm8yOw0KDQogICBzdGF0aWMgd3hDbGFzc0lu
Zm8qIHNtX2ZpcnN0Ow0KICAgd3hDbGFzc0luZm8qIG1fbmV4dDsNCg0KICAgc3RhdGljIHd4SGFz
aFRhYmxlKiBzbV9jbGFzc1RhYmxlOw0KfTsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hPYmplY3QqIHd4Q3JlYXRlRHluYW1pY09iamVjdChjb25zdCBjaGFyICpuYW1lKTsNCiMgMTc2
ICIuLi8uLi9pbmNsdWRlL3d4L29iamVjdC5oIg0KICAgIGlubGluZSB2b2lkIHd4Q2hlY2tDYXN0
KHZvaWQgKnB0cikNCiAgICB7DQogICAgICAgIGlmICggIShwdHIpICkgd3hPbkFzc2VydCgiLi4v
Li4vaW5jbHVkZS93eC9vYmplY3QuaCIsIDE3OCwgInd4U3RhdGljQ2FzdCgpIHVzZWQgaW5jb3Jy
ZWN0bHkiKTsNCiAgICB9DQojIDE5NyAiLi4vLi4vaW5jbHVkZS93eC9vYmplY3QuaCINCmNsYXNz
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4T2JqZWN0UmVmRGF0YTsNCg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hPYmplY3QNCnsNCiBwdWJsaWM6DQoNCg0KICBzdGF0
aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE9iamVjdDsNCg0KICB3eE9iamVjdCh2b2lkKTsNCiAg
dmlydHVhbCB+d3hPYmplY3Qodm9pZCk7DQoNCiAgdmlydHVhbCB3eENsYXNzSW5mbyAqR2V0Q2xh
c3NJbmZvKHZvaWQpIGNvbnN0IHsgcmV0dXJuICZzbV9jbGFzc3d4T2JqZWN0OyB9DQogIHd4T2Jq
ZWN0ICpDbG9uZSh2b2lkKSBjb25zdDsNCiAgdmlydHVhbCB2b2lkIENvcHlPYmplY3Qod3hPYmpl
Y3QmIG9iamVjdF9kZXN0KSBjb25zdDsNCg0KICBib29sIElzS2luZE9mKHd4Q2xhc3NJbmZvICpp
bmZvKSBjb25zdDsNCiMgMjQ4ICIuLi8uLi9pbmNsdWRlL3d4L29iamVjdC5oIg0KICB2b2lkIFJl
Zihjb25zdCB3eE9iamVjdCYgY2xvbmUpOw0KDQoNCiAgdm9pZCBVblJlZih2b2lkKTsNCg0KICBp
bmxpbmUgd3hPYmplY3RSZWZEYXRhICpHZXRSZWZEYXRhKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmRGF0YTsgfQ0KICBpbmxpbmUgdm9pZCBTZXRSZWZEYXRhKHd4T2JqZWN0UmVmRGF0YSAqZGF0
YSkgeyBtX3JlZkRhdGEgPSBkYXRhOyB9DQoNCnByb3RlY3RlZDoNCiAgd3hPYmplY3RSZWZEYXRh
KiBtX3JlZkRhdGE7DQoNCg0KDQp9Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4T2JqZWN0UmVmRGF0YSB7DQoNCiAgICBmcmllbmQgY2xhc3Mgd3hPYmplY3Q7
DQoNCnB1YmxpYzoNCiAgICB3eE9iamVjdFJlZkRhdGEodm9pZCk7DQogICAgdmlydHVhbCB+d3hP
YmplY3RSZWZEYXRhKHZvaWQpOw0KDQogICAgaW5saW5lIGludCBHZXRSZWZDb3VudCh2b2lkKSBj
b25zdCB7IHJldHVybiBtX2NvdW50OyB9DQpwcml2YXRlOg0KICAgIGludCBtX2NvdW50Ow0KfTsN
CiMgMTcgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2R5
bmFycmF5LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvZHluYXJyYXkuaCINCiNwcmFnbWEg
aW50ZXJmYWNlICJkeW5hcnJheS5oIg0KIyA0NSAiLi4vLi4vaW5jbHVkZS93eC9keW5hcnJheS5o
Ig0KdHlwZWRlZiBpbnQgKCAqQ01QRlVOQykoY29uc3Qgdm9pZCogcEl0ZW0xLCBjb25zdCB2b2lk
KiBwSXRlbTIpOw0KIyA2MCAiLi4vLi4vaW5jbHVkZS93eC9keW5hcnJheS5oIg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCYXNlQXJyYXkNCnsNCnB1YmxpYzoNCg0KDQoNCiAg
d3hCYXNlQXJyYXkoKTsNCg0KICB3eEJhc2VBcnJheShjb25zdCB3eEJhc2VBcnJheSYgYXJyYXkp
Ow0KDQogIHd4QmFzZUFycmF5JiBvcGVyYXRvcj0oY29uc3Qgd3hCYXNlQXJyYXkmIHNyYyk7DQoN
Cg0KDQogdmlydHVhbA0KDQogIH53eEJhc2VBcnJheSgpOw0KDQoNCg0KDQoNCiAgdm9pZCBFbXB0
eSgpIHsgbV9uQ291bnQgPSAwOyB9DQoNCiAgdm9pZCBDbGVhcigpOw0KDQogIHZvaWQgQWxsb2Mo
c2l6ZV90IHVpU2l6ZSk7DQoNCiAgdm9pZCBTaHJpbmsoKTsNCg0KDQoNCg0KDQogIHNpemVfdCBD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbkNvdW50OyB9DQogIHNpemVfdCBHZXRDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbkNvdW50OyB9DQoNCiAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9uQ291bnQgPT0gMDsgfQ0KDQoNCnByb3RlY3RlZDoNCg0KDQoNCg0KDQoNCg0KICBsb25n
JiBJdGVtKHNpemVfdCB1aUluZGV4KSBjb25zdA0KICAgIHsgaWYgKCAhKHVpSW5kZXggPCBtX25D
b3VudCkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L2R5bmFycmF5LmgiLCAxMDkpOyBy
ZXR1cm4gbV9wSXRlbXNbdWlJbmRleF07IH0NCg0KICBsb25nJiBvcGVyYXRvcltdKHNpemVfdCB1
aUluZGV4KSBjb25zdCB7IHJldHVybiBJdGVtKHVpSW5kZXgpOyB9DQojIDEyMiAiLi4vLi4vaW5j
bHVkZS93eC9keW5hcnJheS5oIg0KICBpbnQgSW5kZXgobG9uZyBsSXRlbSwgYm9vbCBiRnJvbUVu
ZCA9IDApIGNvbnN0Ow0KDQogIGludCBJbmRleChsb25nIGxJdGVtLCBDTVBGVU5DIGZuQ29tcGFy
ZSkgY29uc3Q7DQoNCiAgdm9pZCBBZGQobG9uZyBsSXRlbSk7DQoNCiAgdm9pZCBBZGQobG9uZyBs
SXRlbSwgQ01QRlVOQyBmbkNvbXBhcmUpOw0KDQogIHZvaWQgSW5zZXJ0KGxvbmcgbEl0ZW0sIHNp
emVfdCB1aUluZGV4KTsNCg0KICB2b2lkIFJlbW92ZShsb25nIGxJdGVtKTsNCg0KICB2b2lkIFJl
bW92ZUF0KHNpemVfdCB1aUluZGV4KTsNCg0KDQoNCiAgdm9pZCBTb3J0KENNUEZVTkMgZm5Db21w
YXJlKTsNCg0KcHJpdmF0ZToNCiAgdm9pZCBHcm93KCk7DQoNCiAgc2l6ZV90IG1fblNpemUsDQog
ICAgICAgICAgbV9uQ291bnQ7DQoNCiAgbG9uZyAqbV9wSXRlbXM7DQp9Ow0KIyA0MzkgIi4uLy4u
L2luY2x1ZGUvd3gvZHluYXJyYXkuaCINCnR5cGVkZWYgaW50IF9Bd3hBcnJheUludDsgdHlwZWRl
ZiBpbnQgKCAqQ01QRlVOQ19Bd3hBcnJheUludCkoX0F3eEFycmF5SW50ICpwSXRlbTEsIF9Bd3hB
cnJheUludCAqcEl0ZW0yKTsgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hBcnJh
eUludCA6IHB1YmxpYyB3eEJhc2VBcnJheSB7IHB1YmxpYzogd3hBcnJheUludCgpIHsgc2l6ZV90
IHR5cGUgPSBzaXplb2YoX0F3eEFycmF5SW50KTsgc2l6ZV90IHNpemVsb25nID0gc2l6ZW9mKGxv
bmcpOyBpZiAoIHR5cGUgPiBzaXplbG9uZyApIHsgaWYgKCAhKHd4RmFsc2UpICkgd3hPbkFzc2Vy
dCgiLi4vLi4vaW5jbHVkZS93eC9keW5hcnJheS5oIiwgNDM5LCAiaWxsZWdhbCB1c2Ugb2YgREVG
SU5FX0FSUkFZIik7IH0gfSB3eEFycmF5SW50JiBvcGVyYXRvcj0oY29uc3Qgd3hBcnJheUludCYg
c3JjKSB7IHd4QmFzZUFycmF5KiB0ZW1wID0gKHd4QmFzZUFycmF5KikgdGhpczsgKCp0ZW1wKSA9
ICgoY29uc3Qgd3hCYXNlQXJyYXkmKXNyYyk7IHJldHVybiAqdGhpczsgfSBfQXd4QXJyYXlJbnQm
IG9wZXJhdG9yW10oc2l6ZV90IHVpSW5kZXgpIGNvbnN0IHsgcmV0dXJuIChfQXd4QXJyYXlJbnQm
KSh3eEJhc2VBcnJheTo6SXRlbSh1aUluZGV4KSk7IH0gX0F3eEFycmF5SW50JiBJdGVtKHNpemVf
dCB1aUluZGV4KSBjb25zdCB7IHJldHVybiAoX0F3eEFycmF5SW50Jikod3hCYXNlQXJyYXk6Okl0
ZW0odWlJbmRleCkpOyB9IF9Bd3hBcnJheUludCYgTGFzdCgpIGNvbnN0IHsgcmV0dXJuIChfQXd4
QXJyYXlJbnQmKSh3eEJhc2VBcnJheTo6SXRlbShDb3VudCgpIC0gMSkpOyB9IGludCBJbmRleChf
QXd4QXJyYXlJbnQgSXRlbSwgYm9vbCBiRnJvbUVuZCA9IDApIGNvbnN0IHsgcmV0dXJuIHd4QmFz
ZUFycmF5OjpJbmRleCgobG9uZylJdGVtLCBiRnJvbUVuZCk7IH0gdm9pZCBBZGQoX0F3eEFycmF5
SW50IEl0ZW0pIHsgd3hCYXNlQXJyYXk6OkFkZCgobG9uZylJdGVtKTsgfSB2b2lkIEluc2VydChf
QXd4QXJyYXlJbnQgSXRlbSwgc2l6ZV90IHVpSW5kZXgpIHsgd3hCYXNlQXJyYXk6Okluc2VydCgo
bG9uZylJdGVtLCB1aUluZGV4KSA7IH0gdm9pZCBSZW1vdmUoc2l6ZV90IHVpSW5kZXgpIHsgUmVt
b3ZlQXQodWlJbmRleCk7IH0gdm9pZCBSZW1vdmVBdChzaXplX3QgdWlJbmRleCkgeyB3eEJhc2VB
cnJheTo6UmVtb3ZlQXQodWlJbmRleCk7IH0gdm9pZCBSZW1vdmUoX0F3eEFycmF5SW50IEl0ZW0p
IHsgaW50IGlJbmRleCA9IEluZGV4KEl0ZW0pOyBpZiAoIShpSW5kZXggIT0gKC0xKSkpIHtpZiAo
ICEod3hGYWxzZSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L2R5bmFycmF5LmgiLCA0
MzksICJyZW1vdmluZyBpbmV4aXN0aW5nIGVsZW1lbnQgaW4gd3hBcnJheTo6UmVtb3ZlIik7IHJl
dHVybjsgfTsgd3hCYXNlQXJyYXk6OlJlbW92ZUF0KChzaXplX3QpaUluZGV4KTsgfSB2b2lkIFNv
cnQoQ01QRlVOQ19Bd3hBcnJheUludCBmQ21wKSB7IHd4QmFzZUFycmF5OjpTb3J0KChDTVBGVU5D
KWZDbXApOyB9IH07DQoNCnR5cGVkZWYgbG9uZyBfQXd4QXJyYXlMb25nOyB0eXBlZGVmIGludCAo
ICpDTVBGVU5DX0F3eEFycmF5TG9uZykoX0F3eEFycmF5TG9uZyAqcEl0ZW0xLCBfQXd4QXJyYXlM
b25nICpwSXRlbTIpOyBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEFycmF5TG9u
ZyA6IHB1YmxpYyB3eEJhc2VBcnJheSB7IHB1YmxpYzogd3hBcnJheUxvbmcoKSB7IHNpemVfdCB0
eXBlID0gc2l6ZW9mKF9Bd3hBcnJheUxvbmcpOyBzaXplX3Qgc2l6ZWxvbmcgPSBzaXplb2YobG9u
Zyk7IGlmICggdHlwZSA+IHNpemVsb25nICkgeyBpZiAoICEod3hGYWxzZSkgKSB3eE9uQXNzZXJ0
KCIuLi8uLi9pbmNsdWRlL3d4L2R5bmFycmF5LmgiLCA0NDEsICJpbGxlZ2FsIHVzZSBvZiBERUZJ
TkVfQVJSQVkiKTsgfSB9IHd4QXJyYXlMb25nJiBvcGVyYXRvcj0oY29uc3Qgd3hBcnJheUxvbmcm
IHNyYykgeyB3eEJhc2VBcnJheSogdGVtcCA9ICh3eEJhc2VBcnJheSopIHRoaXM7ICgqdGVtcCkg
PSAoKGNvbnN0IHd4QmFzZUFycmF5JilzcmMpOyByZXR1cm4gKnRoaXM7IH0gX0F3eEFycmF5TG9u
ZyYgb3BlcmF0b3JbXShzaXplX3QgdWlJbmRleCkgY29uc3QgeyByZXR1cm4gKF9Bd3hBcnJheUxv
bmcmKSh3eEJhc2VBcnJheTo6SXRlbSh1aUluZGV4KSk7IH0gX0F3eEFycmF5TG9uZyYgSXRlbShz
aXplX3QgdWlJbmRleCkgY29uc3QgeyByZXR1cm4gKF9Bd3hBcnJheUxvbmcmKSh3eEJhc2VBcnJh
eTo6SXRlbSh1aUluZGV4KSk7IH0gX0F3eEFycmF5TG9uZyYgTGFzdCgpIGNvbnN0IHsgcmV0dXJu
IChfQXd4QXJyYXlMb25nJikod3hCYXNlQXJyYXk6Okl0ZW0oQ291bnQoKSAtIDEpKTsgfSBpbnQg
SW5kZXgoX0F3eEFycmF5TG9uZyBJdGVtLCBib29sIGJGcm9tRW5kID0gMCkgY29uc3QgeyByZXR1
cm4gd3hCYXNlQXJyYXk6OkluZGV4KChsb25nKUl0ZW0sIGJGcm9tRW5kKTsgfSB2b2lkIEFkZChf
QXd4QXJyYXlMb25nIEl0ZW0pIHsgd3hCYXNlQXJyYXk6OkFkZCgobG9uZylJdGVtKTsgfSB2b2lk
IEluc2VydChfQXd4QXJyYXlMb25nIEl0ZW0sIHNpemVfdCB1aUluZGV4KSB7IHd4QmFzZUFycmF5
OjpJbnNlcnQoKGxvbmcpSXRlbSwgdWlJbmRleCkgOyB9IHZvaWQgUmVtb3ZlKHNpemVfdCB1aUlu
ZGV4KSB7IFJlbW92ZUF0KHVpSW5kZXgpOyB9IHZvaWQgUmVtb3ZlQXQoc2l6ZV90IHVpSW5kZXgp
IHsgd3hCYXNlQXJyYXk6OlJlbW92ZUF0KHVpSW5kZXgpOyB9IHZvaWQgUmVtb3ZlKF9Bd3hBcnJh
eUxvbmcgSXRlbSkgeyBpbnQgaUluZGV4ID0gSW5kZXgoSXRlbSk7IGlmICghKGlJbmRleCAhPSAo
LTEpKSkge2lmICggISh3eEZhbHNlKSApIHd4T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUvd3gvZHlu
YXJyYXkuaCIsIDQ0MSwgInJlbW92aW5nIGluZXhpc3RpbmcgZWxlbWVudCBpbiB3eEFycmF5OjpS
ZW1vdmUiKTsgcmV0dXJuOyB9OyB3eEJhc2VBcnJheTo6UmVtb3ZlQXQoKHNpemVfdClpSW5kZXgp
OyB9IHZvaWQgU29ydChDTVBGVU5DX0F3eEFycmF5TG9uZyBmQ21wKSB7IHd4QmFzZUFycmF5OjpT
b3J0KChDTVBGVU5DKWZDbXApOyB9IH07DQoNCnR5cGVkZWYgdm9pZCAqIF9Bd3hBcnJheVB0clZv
aWQ7IHR5cGVkZWYgaW50ICggKkNNUEZVTkNfQXd4QXJyYXlQdHJWb2lkKShfQXd4QXJyYXlQdHJW
b2lkICpwSXRlbTEsIF9Bd3hBcnJheVB0clZvaWQgKnBJdGVtMik7IGNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4QXJyYXlQdHJWb2lkIDogcHVibGljIHd4QmFzZUFycmF5IHsgcHVi
bGljOiB3eEFycmF5UHRyVm9pZCgpIHsgc2l6ZV90IHR5cGUgPSBzaXplb2YoX0F3eEFycmF5UHRy
Vm9pZCk7IHNpemVfdCBzaXplbG9uZyA9IHNpemVvZihsb25nKTsgaWYgKCB0eXBlID4gc2l6ZWxv
bmcgKSB7IGlmICggISh3eEZhbHNlKSApIHd4T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUvd3gvZHlu
YXJyYXkuaCIsIDQ0MywgImlsbGVnYWwgdXNlIG9mIERFRklORV9BUlJBWSIpOyB9IH0gd3hBcnJh
eVB0clZvaWQmIG9wZXJhdG9yPShjb25zdCB3eEFycmF5UHRyVm9pZCYgc3JjKSB7IHd4QmFzZUFy
cmF5KiB0ZW1wID0gKHd4QmFzZUFycmF5KikgdGhpczsgKCp0ZW1wKSA9ICgoY29uc3Qgd3hCYXNl
QXJyYXkmKXNyYyk7IHJldHVybiAqdGhpczsgfSBfQXd4QXJyYXlQdHJWb2lkJiBvcGVyYXRvcltd
KHNpemVfdCB1aUluZGV4KSBjb25zdCB7IHJldHVybiAoX0F3eEFycmF5UHRyVm9pZCYpKHd4QmFz
ZUFycmF5OjpJdGVtKHVpSW5kZXgpKTsgfSBfQXd4QXJyYXlQdHJWb2lkJiBJdGVtKHNpemVfdCB1
aUluZGV4KSBjb25zdCB7IHJldHVybiAoX0F3eEFycmF5UHRyVm9pZCYpKHd4QmFzZUFycmF5OjpJ
dGVtKHVpSW5kZXgpKTsgfSBfQXd4QXJyYXlQdHJWb2lkJiBMYXN0KCkgY29uc3QgeyByZXR1cm4g
KF9Bd3hBcnJheVB0clZvaWQmKSh3eEJhc2VBcnJheTo6SXRlbShDb3VudCgpIC0gMSkpOyB9IGlu
dCBJbmRleChfQXd4QXJyYXlQdHJWb2lkIEl0ZW0sIGJvb2wgYkZyb21FbmQgPSAwKSBjb25zdCB7
IHJldHVybiB3eEJhc2VBcnJheTo6SW5kZXgoKGxvbmcpSXRlbSwgYkZyb21FbmQpOyB9IHZvaWQg
QWRkKF9Bd3hBcnJheVB0clZvaWQgSXRlbSkgeyB3eEJhc2VBcnJheTo6QWRkKChsb25nKUl0ZW0p
OyB9IHZvaWQgSW5zZXJ0KF9Bd3hBcnJheVB0clZvaWQgSXRlbSwgc2l6ZV90IHVpSW5kZXgpIHsg
d3hCYXNlQXJyYXk6Okluc2VydCgobG9uZylJdGVtLCB1aUluZGV4KSA7IH0gdm9pZCBSZW1vdmUo
c2l6ZV90IHVpSW5kZXgpIHsgUmVtb3ZlQXQodWlJbmRleCk7IH0gdm9pZCBSZW1vdmVBdChzaXpl
X3QgdWlJbmRleCkgeyB3eEJhc2VBcnJheTo6UmVtb3ZlQXQodWlJbmRleCk7IH0gdm9pZCBSZW1v
dmUoX0F3eEFycmF5UHRyVm9pZCBJdGVtKSB7IGludCBpSW5kZXggPSBJbmRleChJdGVtKTsgaWYg
KCEoaUluZGV4ICE9ICgtMSkpKSB7aWYgKCAhKHd4RmFsc2UpICkgd3hPbkFzc2VydCgiLi4vLi4v
aW5jbHVkZS93eC9keW5hcnJheS5oIiwgNDQzLCAicmVtb3ZpbmcgaW5leGlzdGluZyBlbGVtZW50
IGluIHd4QXJyYXk6OlJlbW92ZSIpOyByZXR1cm47IH07IHd4QmFzZUFycmF5OjpSZW1vdmVBdCgo
c2l6ZV90KWlJbmRleCk7IH0gdm9pZCBTb3J0KENNUEZVTkNfQXd4QXJyYXlQdHJWb2lkIGZDbXAp
IHsgd3hCYXNlQXJyYXk6OlNvcnQoKENNUEZVTkMpZkNtcCk7IH0gfTsNCiMgMTggIi4uLy4uL2lu
Y2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2xpc3QuaCIgMQ0KIyAzMCAi
Li4vLi4vaW5jbHVkZS93eC9saXN0LmgiDQojcHJhZ21hIGludGVyZmFjZSAibGlzdC5oIg0KIyA0
MyAiLi4vLi4vaW5jbHVkZS93eC9saXN0LmgiDQpleHRlcm4gX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgY2hhciogY29weXN0cmluZyhjb25zdCBjaGFyICpzKTsNCg0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hPYmplY3RMaXN0Tm9kZTsNCnR5cGVkZWYgd3hPYmplY3RMaXN0
Tm9kZSB3eE5vZGU7DQoNCg0KDQoNCg0KDQoNCmVudW0gd3hLZXlUeXBlDQp7DQogICAgd3hLRVlf
Tk9ORSwNCiAgICB3eEtFWV9JTlRFR0VSLA0KICAgIHd4S0VZX1NUUklORw0KfTsNCiMgNjggIi4u
Ly4uL2luY2x1ZGUvd3gvbGlzdC5oIg0KdHlwZWRlZiBpbnQgKCogd3hTb3J0Q29tcGFyZUZ1bmN0
aW9uKShjb25zdCB2b2lkICplbGVtMSwgY29uc3Qgdm9pZCAqZWxlbTIpOw0KDQoNCnR5cGVkZWYg
aW50ICgqIHd4TGlzdEl0ZXJhdGVGdW5jdGlvbikodm9pZCAqY3VycmVudCk7DQoNCg0KDQoNCg0K
dW5pb24gd3hMaXN0S2V5VmFsdWUNCnsNCiAgICBsb25nIGludGVnZXI7DQogICAgY2hhciAqc3Ry
aW5nOw0KfTsNCg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hMaXN0S2V5DQp7DQpwdWJsaWM6DQoNCiAgICB3eExpc3RLZXkoKQ0KICAgICAgICB7IG1fa2V5
VHlwZSA9IHd4S0VZX05PTkU7IH0NCiAgICB3eExpc3RLZXkobG9uZyBpKQ0KICAgICAgICB7IG1f
a2V5VHlwZSA9IHd4S0VZX0lOVEVHRVI7IG1fa2V5LmludGVnZXIgPSBpOyB9DQogICAgd3hMaXN0
S2V5KGNvbnN0IGNoYXIgKnMpDQogICAgICAgIHsgbV9rZXlUeXBlID0gd3hLRVlfU1RSSU5HOyBt
X2tleS5zdHJpbmcgPSBzdHJkdXAocyk7IH0NCiAgICB3eExpc3RLZXkoY29uc3Qgd3hTdHJpbmcm
IHMpDQogICAgICAgIHsgbV9rZXlUeXBlID0gd3hLRVlfU1RSSU5HOyBtX2tleS5zdHJpbmcgPSBz
dHJkdXAocy5jX3N0cigpKTsgfQ0KDQoNCiAgICB3eEtleVR5cGUgR2V0S2V5VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5VHlwZTsgfQ0KICAgIGNvbnN0IGNoYXIgKkdldFN0cmluZygpIGNvbnN0
DQogICAgICAgIHsgaWYgKCAhKG1fa2V5VHlwZSA9PSB3eEtFWV9TVFJJTkcpICkgd3hPbkFzc2Vy
dCgiLi4vLi4vaW5jbHVkZS93eC9saXN0LmgiLCAxMDUpOyByZXR1cm4gbV9rZXkuc3RyaW5nOyB9
DQogICAgbG9uZyBHZXROdW1iZXIoKSBjb25zdA0KICAgICAgICB7IGlmICggIShtX2tleVR5cGUg
PT0gd3hLRVlfSU5URUdFUikgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4L2xpc3QuaCIs
IDEwNyk7IHJldHVybiBtX2tleS5pbnRlZ2VyOyB9DQoNCg0KDQoNCiAgICBib29sIG9wZXJhdG9y
PT0od3hMaXN0S2V5VmFsdWUgdmFsdWUpIGNvbnN0IDsNCg0KDQogICAgfnd4TGlzdEtleSgpDQog
ICAgew0KICAgICAgICBpZiAoIG1fa2V5VHlwZSA9PSB3eEtFWV9TVFJJTkcgKQ0KICAgICAgICAg
ICAgZnJlZShtX2tleS5zdHJpbmcpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB3eEtleVR5cGUg
bV9rZXlUeXBlOw0KICAgIHd4TGlzdEtleVZhbHVlIG1fa2V5Ow0KfTsNCg0KDQoNCg0KDQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hMaXN0S2V5IHd4RGVmYXVsdExpc3RLZXk7
DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Tm9kZUJhc2UNCnsNCmZyaWVu
ZCBjbGFzcyB3eExpc3RCYXNlOw0KcHVibGljOg0KDQogICAgd3hOb2RlQmFzZSh3eExpc3RCYXNl
ICpsaXN0ID0gKHd4TGlzdEJhc2UgKilfX251bGwsDQogICAgICAgICAgICAgICB3eE5vZGVCYXNl
ICpwcmV2aW91cyA9ICh3eE5vZGVCYXNlICopX19udWxsLA0KICAgICAgICAgICAgICAgd3hOb2Rl
QmFzZSAqbmV4dCA9ICh3eE5vZGVCYXNlICopX19udWxsLA0KICAgICAgICAgICAgICAgdm9pZCAq
ZGF0YSA9IF9fbnVsbCwNCiAgICAgICAgICAgICAgIGNvbnN0IHd4TGlzdEtleSYga2V5ID0gd3hE
ZWZhdWx0TGlzdEtleSk7DQoNCiAgICB2aXJ0dWFsIH53eE5vZGVCYXNlKCk7DQoNCg0KICAgIGNv
bnN0IGNoYXIgKkdldEtleVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5LnN0cmluZzsgfQ0K
ICAgIGxvbmcgR2V0S2V5SW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5LmludGVnZXI7IH0N
Cg0KDQogICAgdm9pZCBTZXRLZXlTdHJpbmcoY2hhciogcykgeyBtX2tleS5zdHJpbmcgPSBzOyB9
DQogICAgdm9pZCBTZXRLZXlJbnRlZ2VyKGxvbmcgaSkgeyBtX2tleS5pbnRlZ2VyID0gaTsgfQ0K
DQoNCg0KICAgIHd4Tm9kZSAqTmV4dCgpIGNvbnN0IHsgcmV0dXJuICh3eE5vZGUgKilHZXROZXh0
KCk7IH0NCiAgICB3eE5vZGUgKlByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gKHd4Tm9kZSAqKUdl
dFByZXZpb3VzKCk7IH0NCiAgICB3eE9iamVjdCAqRGF0YSgpIGNvbnN0IHsgcmV0dXJuICh3eE9i
amVjdCAqKUdldERhdGEoKTsgfQ0KDQoNCnByb3RlY3RlZDoNCg0KICAgIHd4Tm9kZUJhc2UgKkdl
dE5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0NCiAgICB3eE5vZGVCYXNlICpHZXRQcmV2
aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXM7IH0NCg0KICAgIHZvaWQgKkdldERhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0NCiAgICB2b2lkIFNldERhdGEodm9pZCAqZGF0YSkg
eyBtX2RhdGEgPSBkYXRhOyB9DQoNCg0KICAgIGludCBJbmRleE9mKCkgY29uc3Q7DQoNCiAgICB2
aXJ0dWFsIHZvaWQgRGVsZXRlRGF0YSgpIHsgfQ0KDQpwcml2YXRlOg0KDQogICAgd3hMaXN0S2V5
VmFsdWUgbV9rZXk7DQoNCiAgICB2b2lkICptX2RhdGE7DQogICAgd3hOb2RlQmFzZSAqbV9uZXh0
LA0KICAgICAgICAgICAgICAgICptX3ByZXZpb3VzOw0KDQogICAgd3hMaXN0QmFzZSAqbV9saXN0
Ow0KfTsNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMaXN0QmFz
ZSA6IHB1YmxpYyB3eE9iamVjdA0Kew0KZnJpZW5kIGNsYXNzIHd4Tm9kZUJhc2U7DQpmcmllbmQg
Y2xhc3Mgd3hIYXNoVGFibGVCYXNlOw0KcHVibGljOg0KDQogICAgd3hMaXN0QmFzZSh3eEtleVR5
cGUga2V5VHlwZSA9IHd4S0VZX05PTkUpIHsgSW5pdChrZXlUeXBlKTsgfQ0KICAgIHZpcnR1YWwg
fnd4TGlzdEJhc2UoKTsNCg0KDQoNCiAgICBzaXplX3QgR2V0Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NvdW50OyB9DQoNCg0KDQoNCiAgICB2b2lkIENsZWFyKCk7DQoNCg0KICAgIHZvaWQgRGVs
ZXRlQ29udGVudHMoYm9vbCBkZXN0cm95KSB7IG1fZGVzdHJveSA9IGRlc3Ryb3k7IH0NCg0KDQog
ICAgYm9vbCBHZXREZWxldGVDb250ZW50cygpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fZGVz
dHJveTsgfQ0KDQoNCiAgICB3eEtleVR5cGUgR2V0S2V5VHlwZSgpIGNvbnN0DQogICAgICAgIHsg
cmV0dXJuIG1fa2V5VHlwZTsgfQ0KDQoNCiAgICB2b2lkIFNldEtleVR5cGUod3hLZXlUeXBlIGtl
eVR5cGUpDQogICAgICAgIHsgaWYgKCAhKG1fY291bnQ9PTApICkgd3hPbkFzc2VydCgiLi4vLi4v
aW5jbHVkZS93eC9saXN0LmgiLCAyMTgpOyBtX2tleVR5cGUgPSBrZXlUeXBlOyB9DQoNCg0KICAg
IGludCBOdW1iZXIoKSBjb25zdCB7IHJldHVybiBHZXRDb3VudCgpOyB9DQogICAgd3hOb2RlICpG
aXJzdCgpIGNvbnN0IHsgcmV0dXJuICh3eE5vZGUgKilHZXRGaXJzdCgpOyB9DQogICAgd3hOb2Rl
ICpMYXN0KCkgY29uc3QgeyByZXR1cm4gKHd4Tm9kZSAqKUdldExhc3QoKTsgfQ0KICAgIHd4Tm9k
ZSAqTnRoKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gKHd4Tm9kZSAqKUl0ZW0oaW5kZXgp
OyB9DQoNCg0KcHJvdGVjdGVkOg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIHd4Tm9kZUJhc2UgKkNy
ZWF0ZU5vZGUod3hOb2RlQmFzZSAqcHJldiwgd3hOb2RlQmFzZSAqbmV4dCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgd3hMaXN0S2V5JiBrZXkgPSB3eERlZmF1bHRMaXN0S2V5KSA9
IDA7DQojIDI0NCAiLi4vLi4vaW5jbHVkZS93eC9saXN0LmgiDQogICAgd3hMaXN0QmFzZShzaXpl
X3QgY291bnQsIHZvaWQgKmVsZW1lbnRzW10pOw0KDQogICAgd3hMaXN0QmFzZSh2b2lkICpvYmpl
Y3QsIC4uLiApOw0KDQpwcm90ZWN0ZWQ6DQoNCiAgICB3eExpc3RCYXNlJiBvcGVyYXRvcj0oY29u
c3Qgd3hMaXN0QmFzZSYgbGlzdCkNCiAgICAgICAgeyBDbGVhcigpOyBEb0NvcHkobGlzdCk7IHJl
dHVybiAqdGhpczsgfQ0KDQoNCiAgICB3eE5vZGVCYXNlICpHZXRGaXJzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZUZpcnN0OyB9DQogICAgd3hOb2RlQmFzZSAqR2V0TGFzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZUxhc3Q7IH0NCg0KDQogICAgd3hOb2RlQmFzZSAqSXRlbShzaXplX3QgaW5kZXgp
IGNvbnN0Ow0KDQoNCiAgICB2b2lkICpvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QNCiAg
ICAgICAgeyB3eE5vZGVCYXNlICpub2RlID0gSXRlbShpbmRleCk7IHJldHVybiBub2RlID8gbm9k
ZS0+R2V0RGF0YSgpIDogKHd4Tm9kZUJhc2UqKV9fbnVsbDsgfQ0KDQoNCg0KICAgIHd4Tm9kZUJh
c2UgKkFwcGVuZCh2b2lkICpvYmplY3QpOw0KDQogICAgd3hOb2RlQmFzZSAqSW5zZXJ0KHZvaWQg
Km9iamVjdCkgeyByZXR1cm4gSW5zZXJ0KCAod3hOb2RlQmFzZSopX19udWxsLCBvYmplY3QpOyB9
DQoNCiAgICB3eE5vZGVCYXNlICpJbnNlcnQoc2l6ZV90IHBvcywgdm9pZCAqb2JqZWN0KQ0KICAg
ICAgICB7IHJldHVybiBwb3MgPT0gR2V0Q291bnQoKSA/IEFwcGVuZChvYmplY3QpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogSW5zZXJ0KEl0ZW0ocG9zKSwgb2JqZWN0KTsg
fQ0KDQogICAgd3hOb2RlQmFzZSAqSW5zZXJ0KHd4Tm9kZUJhc2UgKnByZXYsIHZvaWQgKm9iamVj
dCk7DQoNCg0KICAgIHd4Tm9kZUJhc2UgKkFwcGVuZChsb25nIGtleSwgdm9pZCAqb2JqZWN0KTsN
CiAgICB3eE5vZGVCYXNlICpBcHBlbmQoY29uc3QgY2hhciAqa2V5LCB2b2lkICpvYmplY3QpOw0K
DQoNCg0KICAgIHd4Tm9kZUJhc2UgKkRldGFjaE5vZGUod3hOb2RlQmFzZSAqbm9kZSk7DQoNCiAg
ICBib29sIERlbGV0ZU5vZGUod3hOb2RlQmFzZSAqbm9kZSk7DQoNCg0KICAgIGJvb2wgRGVsZXRl
T2JqZWN0KHZvaWQgKm9iamVjdCk7DQoNCg0KDQogICAgd3hOb2RlQmFzZSAqRmluZCh2b2lkICpv
YmplY3QpIGNvbnN0Ow0KDQoNCiAgICB3eE5vZGVCYXNlICpGaW5kKGNvbnN0IHd4TGlzdEtleSYg
a2V5KSBjb25zdDsNCg0KDQogICAgaW50IEluZGV4T2YoIHZvaWQgKm9iamVjdCApIGNvbnN0Ow0K
DQoNCg0KICAgIHZvaWQgU29ydChjb25zdCB3eFNvcnRDb21wYXJlRnVuY3Rpb24gY29tcGZ1bmMp
Ow0KDQoNCiAgICB2b2lkICpGaXJzdFRoYXQod3hMaXN0SXRlcmF0ZUZ1bmN0aW9uIGZ1bmMpOw0K
ICAgIHZvaWQgRm9yRWFjaCh3eExpc3RJdGVyYXRlRnVuY3Rpb24gZnVuYyk7DQogICAgdm9pZCAq
TGFzdFRoYXQod3hMaXN0SXRlcmF0ZUZ1bmN0aW9uIGZ1bmMpOw0KDQpwcml2YXRlOg0KDQoNCiAg
ICB2b2lkIEluaXQod3hLZXlUeXBlIGtleVR5cGUgPSB3eEtFWV9OT05FKTsNCg0KICAgIHZvaWQg
RG9Db3B5KGNvbnN0IHd4TGlzdEJhc2UmIGxpc3QpOw0KDQogICAgd3hOb2RlQmFzZSAqQXBwZW5k
Q29tbW9uKHd4Tm9kZUJhc2UgKm5vZGUpOw0KDQogICAgdm9pZCBEb0RlbGV0ZU5vZGUod3hOb2Rl
QmFzZSAqbm9kZSk7DQoNCiAgICBzaXplX3QgbV9jb3VudDsNCiAgICBib29sIG1fZGVzdHJveTsN
CiAgICB3eE5vZGVCYXNlICptX25vZGVGaXJzdCwNCiAgICAgICAgICAgICAgICptX25vZGVMYXN0
Ow0KDQogICAgd3hLZXlUeXBlIG1fa2V5VHlwZTsNCg0KcHJvdGVjdGVkOg0KDQogICAgd3hMaXN0
QmFzZShjb25zdCB3eExpc3RCYXNlJiBsaXN0KSA6IHd4T2JqZWN0KCkNCiAgICAgICAgeyBJbml0
KCk7IERvQ29weShsaXN0KTsgfQ0KfTsNCiMgNDg1ICIuLi8uLi9pbmNsdWRlL3d4L2xpc3QuaCIN
CnR5cGVkZWYgaW50ICgqd3hTb3J0RnVuY0Zvcl93eE9iamVjdExpc3QpKGNvbnN0IHd4T2JqZWN0
ICoqLCBjb25zdCB3eE9iamVjdCAqKik7IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4T2JqZWN0TGlzdE5vZGUgOiBwdWJsaWMgd3hOb2RlQmFzZSB7IHB1YmxpYzogd3hPYmplY3RM
aXN0Tm9kZSh3eExpc3RCYXNlICpsaXN0ID0gKHd4TGlzdEJhc2UgKilfX251bGwsIHd4T2JqZWN0
TGlzdE5vZGUgKnByZXZpb3VzID0gKHd4T2JqZWN0TGlzdE5vZGUgKilfX251bGwsIHd4T2JqZWN0
TGlzdE5vZGUgKm5leHQgPSAod3hPYmplY3RMaXN0Tm9kZSAqKV9fbnVsbCwgd3hPYmplY3QgKmRh
dGEgPSAod3hPYmplY3QgKilfX251bGwsIGNvbnN0IHd4TGlzdEtleSYga2V5ID0gd3hEZWZhdWx0
TGlzdEtleSkgOiB3eE5vZGVCYXNlKGxpc3QsIHByZXZpb3VzLCBuZXh0LCBkYXRhLCBrZXkpIHsg
fSB3eE9iamVjdExpc3ROb2RlICpHZXROZXh0KCkgY29uc3QgeyByZXR1cm4gKHd4T2JqZWN0TGlz
dE5vZGUgKil3eE5vZGVCYXNlOjpHZXROZXh0KCk7IH0gd3hPYmplY3RMaXN0Tm9kZSAqR2V0UHJl
dmlvdXMoKSBjb25zdCB7IHJldHVybiAod3hPYmplY3RMaXN0Tm9kZSAqKXd4Tm9kZUJhc2U6Okdl
dFByZXZpb3VzKCk7IH0gd3hPYmplY3QgKkdldERhdGEoKSBjb25zdCB7IHJldHVybiAod3hPYmpl
Y3QgKil3eE5vZGVCYXNlOjpHZXREYXRhKCk7IH0gdm9pZCBTZXREYXRhKHd4T2JqZWN0ICpkYXRh
KSB7IHd4Tm9kZUJhc2U6OlNldERhdGEoZGF0YSk7IH0gdmlydHVhbCB2b2lkIERlbGV0ZURhdGEo
KTsgfTsgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hPYmplY3RMaXN0IDogcHVi
bGljIHd4TGlzdEJhc2UgeyBwdWJsaWM6IHR5cGVkZWYgd3hPYmplY3RMaXN0Tm9kZSBOb2RlOyB3
eE9iamVjdExpc3Qod3hLZXlUeXBlIGtleVR5cGUgPSB3eEtFWV9OT05FKSA6IHd4TGlzdEJhc2Uo
a2V5VHlwZSkgeyB9IHd4T2JqZWN0TGlzdChzaXplX3QgY291bnQsIHd4T2JqZWN0ICplbGVtZW50
c1tdKSA6IHd4TGlzdEJhc2UoY291bnQsICh2b2lkICoqKWVsZW1lbnRzKSB7IH0gd3hPYmplY3RM
aXN0JiBvcGVyYXRvcj0oY29uc3Qgd3hPYmplY3RMaXN0JiBsaXN0KSB7IHJldHVybiAod3hPYmpl
Y3RMaXN0Jil3eExpc3RCYXNlOjpvcGVyYXRvcj0obGlzdCk7IH0gd3hPYmplY3RMaXN0Tm9kZSAq
R2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAod3hPYmplY3RMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6
OkdldEZpcnN0KCk7IH0gd3hPYmplY3RMaXN0Tm9kZSAqR2V0TGFzdCgpIGNvbnN0IHsgcmV0dXJu
ICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0QmFzZTo6R2V0TGFzdCgpOyB9IHd4T2JqZWN0TGlz
dE5vZGUgKkl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiAod3hPYmplY3RMaXN0Tm9k
ZSAqKXd4TGlzdEJhc2U6Okl0ZW0oaW5kZXgpOyB9IHd4T2JqZWN0ICpvcGVyYXRvcltdKHNpemVf
dCBpbmRleCkgY29uc3QgeyB3eE9iamVjdExpc3ROb2RlICpub2RlID0gSXRlbShpbmRleCk7IHJl
dHVybiBub2RlID8gKHd4T2JqZWN0Kikobm9kZS0+R2V0RGF0YSgpKSA6ICh3eE9iamVjdCopX19u
dWxsOyB9IHd4T2JqZWN0TGlzdE5vZGUgKkFwcGVuZCh3eE9iamVjdCAqb2JqZWN0KSB7IHJldHVy
biAod3hPYmplY3RMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkFwcGVuZChvYmplY3QpOyB9IHd4T2Jq
ZWN0TGlzdE5vZGUgKkluc2VydCh3eE9iamVjdCAqb2JqZWN0KSB7IHJldHVybiAod3hPYmplY3RM
aXN0Tm9kZSAqKUluc2VydCgod3hPYmplY3RMaXN0Tm9kZSopX19udWxsLCBvYmplY3QpOyB9IHd4
T2JqZWN0TGlzdE5vZGUgKkluc2VydChzaXplX3QgcG9zLCB3eE9iamVjdCAqb2JqZWN0KSB7IHJl
dHVybiAod3hPYmplY3RMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6Okluc2VydChwb3MsIG9iamVjdCk7
IH0gd3hPYmplY3RMaXN0Tm9kZSAqSW5zZXJ0KHd4T2JqZWN0TGlzdE5vZGUgKnByZXYsIHd4T2Jq
ZWN0ICpvYmplY3QpIHsgcmV0dXJuICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0QmFzZTo6SW5z
ZXJ0KHByZXYsIG9iamVjdCk7IH0gd3hPYmplY3RMaXN0Tm9kZSAqQXBwZW5kKGxvbmcga2V5LCB2
b2lkICpvYmplY3QpIHsgcmV0dXJuICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0QmFzZTo6QXBw
ZW5kKGtleSwgb2JqZWN0KTsgfSB3eE9iamVjdExpc3ROb2RlICpBcHBlbmQoY29uc3QgY2hhciAq
a2V5LCB2b2lkICpvYmplY3QpIHsgcmV0dXJuICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0QmFz
ZTo6QXBwZW5kKGtleSwgb2JqZWN0KTsgfSB3eE9iamVjdExpc3ROb2RlICpEZXRhY2hOb2RlKHd4
T2JqZWN0TGlzdE5vZGUgKm5vZGUpIHsgcmV0dXJuICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0
QmFzZTo6RGV0YWNoTm9kZShub2RlKTsgfSBib29sIERlbGV0ZU5vZGUod3hPYmplY3RMaXN0Tm9k
ZSAqbm9kZSkgeyByZXR1cm4gd3hMaXN0QmFzZTo6RGVsZXRlTm9kZShub2RlKTsgfSBib29sIERl
bGV0ZU9iamVjdCh3eE9iamVjdCAqb2JqZWN0KSB7IHJldHVybiB3eExpc3RCYXNlOjpEZWxldGVP
YmplY3Qob2JqZWN0KTsgfSB3eE9iamVjdExpc3ROb2RlICpGaW5kKHd4T2JqZWN0ICpvYmplY3Qp
IGNvbnN0IHsgcmV0dXJuICh3eE9iamVjdExpc3ROb2RlICopd3hMaXN0QmFzZTo6RmluZChvYmpl
Y3QpOyB9IHZpcnR1YWwgd3hPYmplY3RMaXN0Tm9kZSAqRmluZChjb25zdCB3eExpc3RLZXkmIGtl
eSkgY29uc3QgeyByZXR1cm4gKHd4T2JqZWN0TGlzdE5vZGUgKil3eExpc3RCYXNlOjpGaW5kKGtl
eSk7IH0gaW50IEluZGV4T2Yod3hPYmplY3QgKm9iamVjdCkgY29uc3QgeyByZXR1cm4gd3hMaXN0
QmFzZTo6SW5kZXhPZihvYmplY3QpOyB9IHZvaWQgU29ydCh3eFNvcnRGdW5jRm9yX3d4T2JqZWN0
TGlzdCBmdW5jKSB7IHd4TGlzdEJhc2U6OlNvcnQoKHd4U29ydENvbXBhcmVGdW5jdGlvbilmdW5j
KTsgfSBwcm90ZWN0ZWQ6IHd4Tm9kZUJhc2UgKkNyZWF0ZU5vZGUod3hOb2RlQmFzZSAqcHJldiwg
d3hOb2RlQmFzZSAqbmV4dCwgdm9pZCAqZGF0YSwgY29uc3Qgd3hMaXN0S2V5JiBrZXkgPSB3eERl
ZmF1bHRMaXN0S2V5KSB7IHJldHVybiBuZXcgd3hPYmplY3RMaXN0Tm9kZSh0aGlzLCAod3hPYmpl
Y3RMaXN0Tm9kZSAqKXByZXYsICh3eE9iamVjdExpc3ROb2RlICopbmV4dCwgKHd4T2JqZWN0ICop
ZGF0YSwga2V5KTsgfSB9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eExp
c3QgOiBwdWJsaWMgd3hPYmplY3RMaXN0DQp7DQpwdWJsaWM6DQogICAgd3hMaXN0KGludCBrZXlf
dHlwZSA9IHd4S0VZX05PTkUpIDogd3hPYmplY3RMaXN0KCh3eEtleVR5cGUpa2V5X3R5cGUpIHsg
fQ0KDQogICAgd3hMaXN0JiBvcGVyYXRvcj0oY29uc3Qgd3hMaXN0JiBsaXN0KQ0KICAgICAgICB7
IHJldHVybiAod3hMaXN0Jil3eExpc3RCYXNlOjpvcGVyYXRvcj0obGlzdCk7IH0NCg0KDQogICAg
dm9pZCBTb3J0KHd4U29ydENvbXBhcmVGdW5jdGlvbiBjb21wZnVuYykgeyB3eExpc3RCYXNlOjpT
b3J0KGNvbXBmdW5jKTsgfQ0KDQogICAgd3hOb2RlICpNZW1iZXIod3hPYmplY3QgKm9iamVjdCkg
Y29uc3QgeyByZXR1cm4gKHd4Tm9kZSAqKUZpbmQob2JqZWN0KTsgfQ0KfTsNCg0KDQoNCg0KDQp0
eXBlZGVmIGludCAoKnd4U29ydEZ1bmNGb3Jfd3hTdHJpbmdMaXN0QmFzZSkoY29uc3QgY2hhciAq
KiwgY29uc3QgY2hhciAqKik7IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3Ry
aW5nTGlzdE5vZGUgOiBwdWJsaWMgd3hOb2RlQmFzZSB7IHB1YmxpYzogd3hTdHJpbmdMaXN0Tm9k
ZSh3eExpc3RCYXNlICpsaXN0ID0gKHd4TGlzdEJhc2UgKilfX251bGwsIHd4U3RyaW5nTGlzdE5v
ZGUgKnByZXZpb3VzID0gKHd4U3RyaW5nTGlzdE5vZGUgKilfX251bGwsIHd4U3RyaW5nTGlzdE5v
ZGUgKm5leHQgPSAod3hTdHJpbmdMaXN0Tm9kZSAqKV9fbnVsbCwgY2hhciAqZGF0YSA9IChjaGFy
ICopX19udWxsLCBjb25zdCB3eExpc3RLZXkmIGtleSA9IHd4RGVmYXVsdExpc3RLZXkpIDogd3hO
b2RlQmFzZShsaXN0LCBwcmV2aW91cywgbmV4dCwgZGF0YSwga2V5KSB7IH0gd3hTdHJpbmdMaXN0
Tm9kZSAqR2V0TmV4dCgpIGNvbnN0IHsgcmV0dXJuICh3eFN0cmluZ0xpc3ROb2RlICopd3hOb2Rl
QmFzZTo6R2V0TmV4dCgpOyB9IHd4U3RyaW5nTGlzdE5vZGUgKkdldFByZXZpb3VzKCkgY29uc3Qg
eyByZXR1cm4gKHd4U3RyaW5nTGlzdE5vZGUgKil3eE5vZGVCYXNlOjpHZXRQcmV2aW91cygpOyB9
IGNoYXIgKkdldERhdGEoKSBjb25zdCB7IHJldHVybiAoY2hhciAqKXd4Tm9kZUJhc2U6OkdldERh
dGEoKTsgfSB2b2lkIFNldERhdGEoY2hhciAqZGF0YSkgeyB3eE5vZGVCYXNlOjpTZXREYXRhKGRh
dGEpOyB9IHZpcnR1YWwgdm9pZCBEZWxldGVEYXRhKCk7IH07IGNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4U3RyaW5nTGlzdEJhc2UgOiBwdWJsaWMgd3hMaXN0QmFzZSB7IHB1Ymxp
YzogdHlwZWRlZiB3eFN0cmluZ0xpc3ROb2RlIE5vZGU7IHd4U3RyaW5nTGlzdEJhc2Uod3hLZXlU
eXBlIGtleVR5cGUgPSB3eEtFWV9OT05FKSA6IHd4TGlzdEJhc2Uoa2V5VHlwZSkgeyB9IHd4U3Ry
aW5nTGlzdEJhc2Uoc2l6ZV90IGNvdW50LCBjaGFyICplbGVtZW50c1tdKSA6IHd4TGlzdEJhc2Uo
Y291bnQsICh2b2lkICoqKWVsZW1lbnRzKSB7IH0gd3hTdHJpbmdMaXN0QmFzZSYgb3BlcmF0b3I9
KGNvbnN0IHd4U3RyaW5nTGlzdEJhc2UmIGxpc3QpIHsgcmV0dXJuICh3eFN0cmluZ0xpc3RCYXNl
Jil3eExpc3RCYXNlOjpvcGVyYXRvcj0obGlzdCk7IH0gd3hTdHJpbmdMaXN0Tm9kZSAqR2V0Rmly
c3QoKSBjb25zdCB7IHJldHVybiAod3hTdHJpbmdMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkdldEZp
cnN0KCk7IH0gd3hTdHJpbmdMaXN0Tm9kZSAqR2V0TGFzdCgpIGNvbnN0IHsgcmV0dXJuICh3eFN0
cmluZ0xpc3ROb2RlICopd3hMaXN0QmFzZTo6R2V0TGFzdCgpOyB9IHd4U3RyaW5nTGlzdE5vZGUg
Kkl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiAod3hTdHJpbmdMaXN0Tm9kZSAqKXd4
TGlzdEJhc2U6Okl0ZW0oaW5kZXgpOyB9IGNoYXIgKm9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBj
b25zdCB7IHd4U3RyaW5nTGlzdE5vZGUgKm5vZGUgPSBJdGVtKGluZGV4KTsgcmV0dXJuIG5vZGUg
PyAoY2hhciopKG5vZGUtPkdldERhdGEoKSkgOiAoY2hhciopX19udWxsOyB9IHd4U3RyaW5nTGlz
dE5vZGUgKkFwcGVuZChjaGFyICpvYmplY3QpIHsgcmV0dXJuICh3eFN0cmluZ0xpc3ROb2RlICop
d3hMaXN0QmFzZTo6QXBwZW5kKG9iamVjdCk7IH0gd3hTdHJpbmdMaXN0Tm9kZSAqSW5zZXJ0KGNo
YXIgKm9iamVjdCkgeyByZXR1cm4gKHd4U3RyaW5nTGlzdE5vZGUgKilJbnNlcnQoKHd4U3RyaW5n
TGlzdE5vZGUqKV9fbnVsbCwgb2JqZWN0KTsgfSB3eFN0cmluZ0xpc3ROb2RlICpJbnNlcnQoc2l6
ZV90IHBvcywgY2hhciAqb2JqZWN0KSB7IHJldHVybiAod3hTdHJpbmdMaXN0Tm9kZSAqKXd4TGlz
dEJhc2U6Okluc2VydChwb3MsIG9iamVjdCk7IH0gd3hTdHJpbmdMaXN0Tm9kZSAqSW5zZXJ0KHd4
U3RyaW5nTGlzdE5vZGUgKnByZXYsIGNoYXIgKm9iamVjdCkgeyByZXR1cm4gKHd4U3RyaW5nTGlz
dE5vZGUgKil3eExpc3RCYXNlOjpJbnNlcnQocHJldiwgb2JqZWN0KTsgfSB3eFN0cmluZ0xpc3RO
b2RlICpBcHBlbmQobG9uZyBrZXksIHZvaWQgKm9iamVjdCkgeyByZXR1cm4gKHd4U3RyaW5nTGlz
dE5vZGUgKil3eExpc3RCYXNlOjpBcHBlbmQoa2V5LCBvYmplY3QpOyB9IHd4U3RyaW5nTGlzdE5v
ZGUgKkFwcGVuZChjb25zdCBjaGFyICprZXksIHZvaWQgKm9iamVjdCkgeyByZXR1cm4gKHd4U3Ry
aW5nTGlzdE5vZGUgKil3eExpc3RCYXNlOjpBcHBlbmQoa2V5LCBvYmplY3QpOyB9IHd4U3RyaW5n
TGlzdE5vZGUgKkRldGFjaE5vZGUod3hTdHJpbmdMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gKHd4
U3RyaW5nTGlzdE5vZGUgKil3eExpc3RCYXNlOjpEZXRhY2hOb2RlKG5vZGUpOyB9IGJvb2wgRGVs
ZXRlTm9kZSh3eFN0cmluZ0xpc3ROb2RlICpub2RlKSB7IHJldHVybiB3eExpc3RCYXNlOjpEZWxl
dGVOb2RlKG5vZGUpOyB9IGJvb2wgRGVsZXRlT2JqZWN0KGNoYXIgKm9iamVjdCkgeyByZXR1cm4g
d3hMaXN0QmFzZTo6RGVsZXRlT2JqZWN0KG9iamVjdCk7IH0gd3hTdHJpbmdMaXN0Tm9kZSAqRmlu
ZChjaGFyICpvYmplY3QpIGNvbnN0IHsgcmV0dXJuICh3eFN0cmluZ0xpc3ROb2RlICopd3hMaXN0
QmFzZTo6RmluZChvYmplY3QpOyB9IHZpcnR1YWwgd3hTdHJpbmdMaXN0Tm9kZSAqRmluZChjb25z
dCB3eExpc3RLZXkmIGtleSkgY29uc3QgeyByZXR1cm4gKHd4U3RyaW5nTGlzdE5vZGUgKil3eExp
c3RCYXNlOjpGaW5kKGtleSk7IH0gaW50IEluZGV4T2YoY2hhciAqb2JqZWN0KSBjb25zdCB7IHJl
dHVybiB3eExpc3RCYXNlOjpJbmRleE9mKG9iamVjdCk7IH0gdm9pZCBTb3J0KHd4U29ydEZ1bmNG
b3Jfd3hTdHJpbmdMaXN0QmFzZSBmdW5jKSB7IHd4TGlzdEJhc2U6OlNvcnQoKHd4U29ydENvbXBh
cmVGdW5jdGlvbilmdW5jKTsgfSBwcm90ZWN0ZWQ6IHd4Tm9kZUJhc2UgKkNyZWF0ZU5vZGUod3hO
b2RlQmFzZSAqcHJldiwgd3hOb2RlQmFzZSAqbmV4dCwgdm9pZCAqZGF0YSwgY29uc3Qgd3hMaXN0
S2V5JiBrZXkgPSB3eERlZmF1bHRMaXN0S2V5KSB7IHJldHVybiBuZXcgd3hTdHJpbmdMaXN0Tm9k
ZSh0aGlzLCAod3hTdHJpbmdMaXN0Tm9kZSAqKXByZXYsICh3eFN0cmluZ0xpc3ROb2RlICopbmV4
dCwgKGNoYXIgKilkYXRhLCBrZXkpOyB9IH07DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4U3RyaW5nTGlzdCA6IHB1YmxpYyB3eFN0cmluZ0xpc3RCYXNlDQp7DQpwdWJsaWM6
DQoNCg0KICAgIHd4U3RyaW5nTGlzdCgpIHsgRGVsZXRlQ29udGVudHMoMSk7IH0NCiAgICB3eFN0
cmluZ0xpc3QoY29uc3QgY2hhciAqZmlyc3QgLi4uKTsNCg0KDQoNCiAgICB3eFN0cmluZ0xpc3Qo
Y29uc3Qgd3hTdHJpbmdMaXN0JiBvdGhlcikgOiB3eFN0cmluZ0xpc3RCYXNlKCkNCiAgICAgICAg
eyBEZWxldGVDb250ZW50cygxKTsgRG9Db3B5KG90aGVyKTsgfQ0KICAgIHd4U3RyaW5nTGlzdCYg
b3BlcmF0b3I9KGNvbnN0IHd4U3RyaW5nTGlzdCYgb3RoZXIpDQogICAgICAgIHsgQ2xlYXIoKTsg
RG9Db3B5KG90aGVyKTsgcmV0dXJuICp0aGlzOyB9DQoNCg0KDQogICAgd3hOb2RlICpBZGQoY29u
c3QgY2hhciAqcykNCiAgICAgICAgeyByZXR1cm4gKHd4Tm9kZSAqKXd4U3RyaW5nTGlzdEJhc2U6
OkFwcGVuZChjb3B5c3RyaW5nKHMpKTsgfQ0KDQogICAgYm9vbCBEZWxldGUoY29uc3QgY2hhciAq
cyk7DQoNCiAgICBjaGFyICoqTGlzdFRvQXJyYXkoYm9vbCBuZXdfY29waWVzID0gMCkgY29uc3Q7
DQogICAgYm9vbCBNZW1iZXIoY29uc3QgY2hhciAqcykgY29uc3Q7DQoNCg0KICAgIHZvaWQgU29y
dCgpOw0KDQpwcml2YXRlOg0KICAgIHZvaWQgRG9Db3B5KGNvbnN0IHd4U3RyaW5nTGlzdCYpOw0K
fTsNCiMgMTkgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4
L2hhc2guaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9oYXNoLmgiDQojcHJhZ21hIGludGVy
ZmFjZSAiaGFzaC5oIg0KIyAzNyAiLi4vLi4vaW5jbHVkZS93eC9oYXNoLmgiDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEhhc2hUYWJsZUJhc2UgOiBwdWJsaWMgd3hPYmplY3QN
CnsNCnB1YmxpYzoNCiAgICB3eEhhc2hUYWJsZUJhc2UoKTsNCg0KICAgIHZvaWQgQ3JlYXRlKHd4
S2V5VHlwZSBrZXlUeXBlID0gd3hLRVlfSU5URUdFUiwNCiAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9ICgxMDAwKSk7DQogICAgdm9pZCBEZXN0cm95KCk7DQoNCiAgICBzaXplX3QgR2V0U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaFNpemU7IH0NCiAgICBzaXplX3QgR2V0Q291bnQoKSBj
b25zdCB7IHJldHVybiBtX2NvdW50OyB9DQoNCiAgICB2b2lkIERlbGV0ZUNvbnRlbnRzKGJvb2wg
ZmxhZyk7DQoNCnByb3RlY3RlZDoNCg0KICAgIHd4Tm9kZUJhc2UgKkdldE5vZGUobG9uZyBrZXks
IGxvbmcgdmFsdWUpIGNvbnN0Ow0KDQoNCiAgICB3eExpc3RCYXNlICoqbV9oYXNoVGFibGU7DQoN
Cg0KICAgIHNpemVfdCBtX2hhc2hTaXplOw0KDQoNCiAgICB3eEtleVR5cGUgbV9rZXlUeXBlOw0K
DQoNCiAgICBzaXplX3QgbV9jb3VudDsNCg0KDQogICAgYm9vbCBtX2RlbGV0ZUNvbnRlbnRzOw0K
DQpwcml2YXRlOg0KDQogICAgcHJpdmF0ZTogd3hIYXNoVGFibGVCYXNlKGNvbnN0IHd4SGFzaFRh
YmxlQmFzZSYpOyB3eEhhc2hUYWJsZUJhc2UmIG9wZXJhdG9yPShjb25zdCB3eEhhc2hUYWJsZUJh
c2UmKTsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hI
YXNoVGFibGVMb25nIDogcHVibGljIHd4T2JqZWN0DQp7DQpwdWJsaWM6DQogICAgd3hIYXNoVGFi
bGVMb25nKHNpemVfdCBzaXplID0gKDEwMDApKSB7IEluaXQoc2l6ZSk7IH0NCiAgICB2aXJ0dWFs
IH53eEhhc2hUYWJsZUxvbmcoKTsNCg0KICAgIHZvaWQgQ3JlYXRlKHNpemVfdCBzaXplID0gKDEw
MDApKTsNCiAgICB2b2lkIERlc3Ryb3koKTsNCg0KICAgIHNpemVfdCBHZXRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoU2l6ZTsgfQ0KICAgIHNpemVfdCBHZXRDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnQ7IH0NCg0KICAgIHZvaWQgUHV0KGxvbmcga2V5LCBsb25nIHZhbHVlKTsNCiAg
ICBsb25nIEdldChsb25nIGtleSkgY29uc3Q7DQogICAgbG9uZyBEZWxldGUobG9uZyBrZXkpOw0K
DQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBJbml0KHNpemVfdCBzaXplKTsNCg0KcHJpdmF0ZToNCiAg
ICB3eEFycmF5TG9uZyAqKm1fdmFsdWVzLA0KICAgICAgICAgICAgICAgICoqbV9rZXlzOw0KDQoN
CiAgICBzaXplX3QgbV9oYXNoU2l6ZTsNCg0KDQogICAgc2l6ZV90IG1fY291bnQ7DQoNCg0KICAg
IHByaXZhdGU6IHd4SGFzaFRhYmxlTG9uZyhjb25zdCB3eEhhc2hUYWJsZUxvbmcmKTsgd3hIYXNo
VGFibGVMb25nJiBvcGVyYXRvcj0oY29uc3Qgd3hIYXNoVGFibGVMb25nJik7DQp9Ow0KDQoNCg0K
DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4SGFzaFRhYmxlIDogcHVibGlj
IHd4T2JqZWN0DQp7DQpwdWJsaWM6DQogICAgaW50IG47DQogICAgaW50IGN1cnJlbnRfcG9zaXRp
b247DQogICAgd3hOb2RlICpjdXJyZW50X25vZGU7DQoNCiAgICB1bnNpZ25lZCBpbnQga2V5X3R5
cGU7DQogICAgd3hMaXN0ICoqaGFzaF90YWJsZTsNCg0KICAgIHd4SGFzaFRhYmxlKGludCB0aGVf
a2V5X3R5cGUgPSB3eEtFWV9JTlRFR0VSLA0KICAgICAgICAgICAgICAgIGludCBzaXplID0gKDEw
MDApKTsNCiAgICB+d3hIYXNoVGFibGUoKTsNCg0KDQogICAgd3hIYXNoVGFibGUoY29uc3Qgd3hI
YXNoVGFibGUmIHRhYmxlKSA6IHd4T2JqZWN0KCkgeyBEb0NvcHkodGFibGUpOyB9DQogICAgd3hI
YXNoVGFibGUmIG9wZXJhdG9yPShjb25zdCB3eEhhc2hUYWJsZSYgdGFibGUpDQogICAgICAgIHsg
Q2xlYXIoKTsgRG9Db3B5KHRhYmxlKTsgcmV0dXJuICp0aGlzOyB9DQoNCiAgICB2b2lkIERvQ29w
eShjb25zdCB3eEhhc2hUYWJsZSYgdGFibGUpOw0KDQogICAgdm9pZCBEZXN0cm95KCk7DQoNCiAg
ICBib29sIENyZWF0ZShpbnQgdGhlX2tleV90eXBlID0gd3hLRVlfSU5URUdFUiwNCiAgICAgICAg
ICAgICAgICBpbnQgc2l6ZSA9ICgxMDAwKSk7DQojIDE1NSAiLi4vLi4vaW5jbHVkZS93eC9oYXNo
LmgiDQogICAgdm9pZCBQdXQobG9uZyBrZXksIGxvbmcgdmFsdWUsIHd4T2JqZWN0ICpvYmplY3Qp
Ow0KICAgIHZvaWQgUHV0KGxvbmcga2V5LCBjb25zdCBjaGFyICp2YWx1ZSwgd3hPYmplY3QgKm9i
amVjdCk7DQoNCg0KICAgIHZvaWQgUHV0KGxvbmcgdmFsdWUsIHd4T2JqZWN0ICpvYmplY3QpOw0K
ICAgIHZvaWQgUHV0KGNvbnN0IGNoYXIgKnZhbHVlLCB3eE9iamVjdCAqb2JqZWN0KTsNCg0KDQog
ICAgd3hPYmplY3QgKkdldChsb25nIGtleSwgbG9uZyB2YWx1ZSkgY29uc3Q7DQogICAgd3hPYmpl
Y3QgKkdldChsb25nIGtleSwgY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0Ow0KDQoNCiAgICB3eE9i
amVjdCAqR2V0KGxvbmcgdmFsdWUpIGNvbnN0Ow0KICAgIHd4T2JqZWN0ICpHZXQoY29uc3QgY2hh
ciAqdmFsdWUpIGNvbnN0Ow0KDQoNCiAgICB3eE9iamVjdCAqRGVsZXRlKGxvbmcga2V5KTsNCiAg
ICB3eE9iamVjdCAqRGVsZXRlKGNvbnN0IGNoYXIgKmtleSk7DQoNCiAgICB3eE9iamVjdCAqRGVs
ZXRlKGxvbmcga2V5LCBpbnQgdmFsdWUpOw0KICAgIHd4T2JqZWN0ICpEZWxldGUobG9uZyBrZXks
IGNvbnN0IGNoYXIgKnZhbHVlKTsNCg0KDQoNCiAgICBsb25nIE1ha2VLZXkoY29uc3QgY2hhciAq
c3RyaW5nKSBjb25zdDsNCg0KDQoNCg0KDQogICAgdm9pZCBCZWdpbkZpbmQoKTsNCiAgICB3eE5v
ZGUgKk5leHQoKTsNCg0KICAgIHZvaWQgRGVsZXRlQ29udGVudHMoYm9vbCBmbGFnKTsNCiAgICB2
b2lkIENsZWFyKCk7DQoNCg0KICAgIHNpemVfdCBHZXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bnQ7IH0NCg0KcHJpdmF0ZToNCiAgICBzaXplX3QgbV9jb3VudDsNCiAgICBib29sIG1fZGVs
ZXRlQ29udGVudHM7DQoNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4
SGFzaFRhYmxlOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4
SGFzaFRhYmxlOjpzbV9jbGFzc3d4SGFzaFRhYmxlOyB9DQp9Ow0KIyAyMCAiLi4vLi4vaW5jbHVk
ZS93eC93eC5oIiAyDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9pbnRsLmgiIDENCiMgMTYgIi4u
Ly4uL2luY2x1ZGUvd3gvaW50bC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImludGwuaCINCiMgNDUg
Ii4uLy4uL2luY2x1ZGUvd3gvaW50bC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgd3hMb2NhbGU7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1zZ0NhdGFs
b2c7DQojIDU2ICIuLi8uLi9pbmNsdWRlL3d4L2ludGwuaCINCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4TG9jYWxlDQp7DQpwdWJsaWM6DQoNCg0KDQoNCiAgICB3eExvY2FsZSgp
Ow0KDQogICAgd3hMb2NhbGUoY29uc3QgY2hhciAqc3pOYW1lLA0KICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnN6U2hvcnQgPSAoY29uc3QgY2hhciAqKSBfX251bGwsDQogICAgICAgICAgICAgY29u
c3QgY2hhciAqc3pMb2NhbGUgPSAoY29uc3QgY2hhciAqKSBfX251bGwsDQogICAgICAgICAgICAg
Ym9vbCBiTG9hZERlZmF1bHQgPSAxLA0KICAgICAgICAgICAgIGJvb2wgYkNvbnZlcnRFbmNvZGlu
ZyA9IDApDQogICAgICAgIHsgSW5pdChzek5hbWUsIHN6U2hvcnQsIHN6TG9jYWxlLCBiTG9hZERl
ZmF1bHQsIGJDb252ZXJ0RW5jb2RpbmcpOyB9DQoNCiAgICBib29sIEluaXQoY29uc3QgY2hhciAq
c3pOYW1lLA0KICAgICAgICAgICAgICBjb25zdCBjaGFyICpzelNob3J0ID0gKGNvbnN0IGNoYXIg
KikgX19udWxsLA0KICAgICAgICAgICAgICBjb25zdCBjaGFyICpzekxvY2FsZSA9IChjb25zdCBj
aGFyICopIF9fbnVsbCwNCiAgICAgICAgICAgICAgYm9vbCBiTG9hZERlZmF1bHQgPSAxLA0KICAg
ICAgICAgICAgICBib29sIGJDb252ZXJ0RW5jb2RpbmcgPSAwKTsNCg0KICAgIH53eExvY2FsZSgp
Ow0KDQoNCiAgICBib29sIElzT2soKSBjb25zdCB7IHJldHVybiBtX3Bzek9sZExvY2FsZSAhPSBf
X251bGw7IH0NCg0KDQogICAgY29uc3QgY2hhciAqR2V0TG9jYWxlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJMb2NhbGU7IH0NCg0KDQoNCg0KDQoNCiAgICBzdGF0aWMgdm9pZCBBZGRDYXRhbG9nTG9v
a3VwUGF0aFByZWZpeChjb25zdCB3eFN0cmluZyYgcHJlZml4KTsNCiMgMTAwICIuLi8uLi9pbmNs
dWRlL3d4L2ludGwuaCINCiAgICBib29sIEFkZENhdGFsb2coY29uc3QgY2hhciAqc3pEb21haW4p
Ow0KDQoNCiAgICBib29sIElzTG9hZGVkKGNvbnN0IGNoYXIgKnN6RG9tYWluKSBjb25zdDsNCiMg
MTE1ICIuLi8uLi9pbmNsdWRlL3d4L2ludGwuaCINCiAgICBjb25zdCBjaGFyKiBHZXRTdHJpbmco
Y29uc3QgY2hhciAqc3pPcmlnU3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnN6RG9tYWluID0gKGNvbnN0IGNoYXIgKikgX19udWxsKSBjb25zdDsNCg0K
DQogICAgY29uc3Qgd3hTdHJpbmcmIEdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3N0clNob3J0
OyB9DQoNCnByaXZhdGU6DQoNCiAgICB3eE1zZ0NhdGFsb2cgKkZpbmRDYXRhbG9nKGNvbnN0IGNo
YXIgKnN6RG9tYWluKSBjb25zdDsNCg0KICAgIHd4U3RyaW5nIG1fc3RyTG9jYWxlLA0KICAgICAg
ICAgICAgICAgICAgIG1fc3RyU2hvcnQ7DQoNCiAgICBjb25zdCBjaGFyICptX3Bzek9sZExvY2Fs
ZTsNCiAgICB3eExvY2FsZSAqbV9wT2xkTG9jYWxlOw0KDQogICAgd3hNc2dDYXRhbG9nICptX3BN
c2dDYXQ7DQoNCiAgICBib29sIG1fYkNvbnZlcnRFbmNvZGluZzsNCn07DQoNCg0KDQoNCg0KDQpl
eHRlcm4gX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMb2NhbGUqIHd4R2V0TG9jYWxlKCk7
DQoNCg0KaW5saW5lIGNvbnN0IGNoYXIqIHd4R2V0VHJhbnNsYXRpb24oY29uc3QgY2hhciAqc3op
DQp7DQogICAgd3hMb2NhbGUgKnBMb2MgPSB3eEdldExvY2FsZSgpOw0KICAgIGlmIChwTG9jKQ0K
ICAgICAgICByZXR1cm4gcExvYy0+R2V0U3RyaW5nKHN6KTsNCiAgICBlbHNlDQogICAgICAgIHJl
dHVybiAoY29uc3QgY2hhciopc3o7DQp9DQojIDIyICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDIN
CiMgMSAiLi4vLi4vaW5jbHVkZS93eC9sb2cuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9s
b2cuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJsb2cuaCINCiMgMjYgIi4uLy4uL2luY2x1ZGUvd3gv
bG9nLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRleHRDdHJsOw0KY2xh
c3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMb2dGcmFtZTsNCmNsYXNzIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4RnJhbWU7DQoNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBs
b25nIHd4VHJhY2VNYXNrOw0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIHd4TG9nTGV2ZWw7DQojIDUy
ICIuLi8uLi9pbmNsdWRlL3d4L2xvZy5oIg0KZW51bQ0Kew0KICAgIHd4TE9HX0ZhdGFsRXJyb3Is
DQogICAgd3hMT0dfRXJyb3IsDQogICAgd3hMT0dfV2FybmluZywNCiAgICB3eExPR19NZXNzYWdl
LA0KICAgIHd4TE9HX0luZm8sDQogICAgd3hMT0dfU3RhdHVzLA0KICAgIHd4TE9HX0RlYnVnLA0K
ICAgIHd4TE9HX1RyYWNlLA0KICAgIHd4TE9HX1Byb2dyZXNzLA0KICAgIHd4TE9HX1VzZXIgPSAx
MDANCn07DQojIDkzICIuLi8uLi9pbmNsdWRlL3d4L2xvZy5oIg0KIyAxICIuLi8uLi9pbmNsdWRl
L3d4L2lvc3dyYXAuaCIgMQ0KIyA5NCAiLi4vLi4vaW5jbHVkZS93eC9sb2cuaCIgMg0KDQoNCg0K
DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMb2cNCnsNCnB1YmxpYzoN
Cg0KICAgIHd4TG9nKCk7DQoNCg0KDQogICAgc3RhdGljIGJvb2wgSXNFbmFibGVkKCkgeyByZXR1
cm4gbXNfZG9Mb2c7IH0NCg0KICAgIHN0YXRpYyBib29sIEVuYWJsZUxvZ2dpbmcoYm9vbCBkb0l0
ID0gMSkNCiAgICAgICAgeyBib29sIGRvTG9nT2xkID0gbXNfZG9Mb2c7IG1zX2RvTG9nID0gZG9J
dDsgcmV0dXJuIGRvTG9nT2xkOyB9DQoNCg0KDQogICAgc3RhdGljIHZvaWQgT25Mb2cod3hMb2dM
ZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqc3pTdHJpbmcsIHRpbWVfdCB0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKCBJc0VuYWJsZWQoKSApIHsNCiAgICAgICAgICAgIHd4TG9nICpwTG9nZ2VyID0gR2V0
QWN0aXZlVGFyZ2V0KCk7DQogICAgICAgICAgICBpZiAoIHBMb2dnZXIgKQ0KICAgICAgICAgICAg
ICAgIHBMb2dnZXItPkRvTG9nKGxldmVsLCBzelN0cmluZywgdCk7DQogICAgICAgIH0NCiAgICB9
DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBGbHVzaCgpOw0KDQoNCg0KICAgIGJvb2wgSGFz
UGVuZGluZ01lc3NhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9iSGFzTWVzc2FnZXM7IH0NCg0KDQoN
CiAgICBzdGF0aWMgdm9pZCBGbHVzaEFjdGl2ZSgpDQogICAgew0KICAgICAgICBpZiAoICFtc19z
dXNwZW5kQ291bnQgKQ0KICAgICAgICB7DQogICAgICAgICAgICB3eExvZyAqbG9nID0gR2V0QWN0
aXZlVGFyZ2V0KCk7DQogICAgICAgICAgICBpZiAoIGxvZyAmJiBsb2ctPkhhc1BlbmRpbmdNZXNz
YWdlcygpICkNCiAgICAgICAgICAgICAgICBsb2ctPkZsdXNoKCk7DQogICAgICAgIH0NCiAgICB9
DQoNCg0KICAgIHN0YXRpYyB3eExvZyAqR2V0QWN0aXZlVGFyZ2V0KCk7DQoNCiAgICBzdGF0aWMg
d3hMb2cgKlNldEFjdGl2ZVRhcmdldCh3eExvZyAqcExvZ2dlcik7DQoNCg0KDQoNCiAgICBzdGF0
aWMgdm9pZCBTdXNwZW5kKCkgeyBtc19zdXNwZW5kQ291bnQrKzsgfQ0KDQogICAgc3RhdGljIHZv
aWQgUmVzdW1lKCkgeyBtc19zdXNwZW5kQ291bnQtLTsgfQ0KDQoNCg0KDQogICAgdm9pZCBTZXRW
ZXJib3NlKGJvb2wgYlZlcmJvc2UgPSAxKSB7IG1fYlZlcmJvc2UgPSBiVmVyYm9zZTsgfQ0KDQoN
CiAgICBzdGF0aWMgdm9pZCBEb250Q3JlYXRlT25EZW1hbmQoKSB7IG1zX2JBdXRvQ3JlYXRlID0g
MDsgfQ0KDQoNCiAgICBzdGF0aWMgdm9pZCBTZXRUcmFjZU1hc2sod3hUcmFjZU1hc2sgdWxNYXNr
KSB7IG1zX3VsVHJhY2VNYXNrID0gdWxNYXNrOyB9DQoNCiAgICBzdGF0aWMgdm9pZCBBZGRUcmFj
ZU1hc2soY29uc3Qgd3hTdHJpbmcmIHN0cikgeyBtc19hVHJhY2VNYXNrcy5BZGQoc3RyKTsgfQ0K
DQogICAgc3RhdGljIHZvaWQgUmVtb3ZlVHJhY2VNYXNrKGNvbnN0IHd4U3RyaW5nJiBzdHIpOw0K
DQoNCg0KDQogICAgc3RhdGljIHZvaWQgU2V0VGltZXN0YW1wKGNvbnN0IGNoYXIgKnRzKSB7IG1z
X3RpbWVzdGFtcCA9IHRzOyB9DQoNCg0KDQogICAgYm9vbCBHZXRWZXJib3NlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iVmVyYm9zZTsgfQ0KDQogICAgc3RhdGljIHd4VHJhY2VNYXNrIEdldFRyYWNlTWFz
aygpIHsgcmV0dXJuIG1zX3VsVHJhY2VNYXNrOyB9DQoNCiAgICBzdGF0aWMgYm9vbCBJc0FsbG93
ZWRUcmFjZU1hc2soY29uc3QgY2hhciAqbWFzaykNCiAgICAgICAgeyByZXR1cm4gbXNfYVRyYWNl
TWFza3MuSW5kZXgobWFzaykgIT0gKC0xKTsgfQ0KDQoNCiAgICBzdGF0aWMgY29uc3QgY2hhciAq
R2V0VGltZXN0YW1wKCkgeyByZXR1cm4gbXNfdGltZXN0YW1wOyB9DQoNCg0KDQoNCiAgICBzdGF0
aWMgdm9pZCBUaW1lU3RhbXAod3hTdHJpbmcgKnN0cik7DQoNCg0KICAgIHZpcnR1YWwgfnd4TG9n
KCkgeyB9DQoNCnByb3RlY3RlZDoNCiAgICBib29sIG1fYkhhc01lc3NhZ2VzOw0KICAgIGJvb2wg
bV9iVmVyYm9zZTsNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0xvZyh3eExvZ0xldmVsIGxl
dmVsLCBjb25zdCBjaGFyICpzelN0cmluZywgdGltZV90IHQpOw0KDQoNCiAgICB2aXJ0dWFsIHZv
aWQgRG9Mb2dTdHJpbmcoY29uc3QgY2hhciAqc3pTdHJpbmcsIHRpbWVfdCB0KTsNCg0KcHJpdmF0
ZToNCg0KDQoNCiAgICBzdGF0aWMgd3hMb2cgKm1zX3BMb2dnZXI7DQogICAgc3RhdGljIGJvb2wg
bXNfZG9Mb2c7DQogICAgc3RhdGljIGJvb2wgbXNfYkF1dG9DcmVhdGU7DQoNCiAgICBzdGF0aWMg
c2l6ZV90IG1zX3N1c3BlbmRDb3VudDsNCg0KDQoNCiAgICBzdGF0aWMgY29uc3QgY2hhciAqbXNf
dGltZXN0YW1wOw0KDQogICAgc3RhdGljIHd4VHJhY2VNYXNrIG1zX3VsVHJhY2VNYXNrOw0KICAg
IHN0YXRpYyB3eEFycmF5U3RyaW5nIG1zX2FUcmFjZU1hc2tzOw0KfTsNCg0KDQoNCg0KDQoNCmNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nU3RkZXJyIDogcHVibGljIHd4TG9n
DQp7DQpwdWJsaWM6DQoNCiAgICB3eExvZ1N0ZGVycihGSUxFICpmcCA9IChGSUxFICopIF9fbnVs
bCk7DQoNCnByaXZhdGU6DQoNCiAgICB2aXJ0dWFsIHZvaWQgRG9Mb2dTdHJpbmcoY29uc3QgY2hh
ciAqc3pTdHJpbmcsIHRpbWVfdCB0KTsNCg0KICAgIEZJTEUgKm1fZnA7DQp9Ow0KIyAyNzAgIi4u
Ly4uL2luY2x1ZGUvd3gvbG9nLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eExvZ1RleHRDdHJsIDogcHVibGljIHd4TG9nDQp7DQpwdWJsaWM6DQogICAgd3hMb2dUZXh0Q3Ry
bCh3eFRleHRDdHJsICpwVGV4dEN0cmwpOw0KDQpwcml2YXRlOg0KDQogICAgdmlydHVhbCB2b2lk
IERvTG9nU3RyaW5nKGNvbnN0IGNoYXIgKnN6U3RyaW5nLCB0aW1lX3QgdCk7DQoNCg0KICAgIHd4
VGV4dEN0cmwgKm1fcFRleHRDdHJsOw0KfTsNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hMb2dHdWkgOiBwdWJsaWMgd3hMb2cNCnsNCnB1YmxpYzoNCg0KICAgIHd4
TG9nR3VpKCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBGbHVzaCgpOw0KDQpwcm90ZWN0ZWQ6DQog
ICAgdmlydHVhbCB2b2lkIERvTG9nKHd4TG9nTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKnN6U3Ry
aW5nLCB0aW1lX3QgdCk7DQoNCg0KICAgIHZvaWQgQ2xlYXIoKTsNCg0KICAgIHd4QXJyYXlTdHJp
bmcgbV9hTWVzc2FnZXM7DQogICAgd3hBcnJheUludCBtX2FTZXZlcml0eTsNCiAgICB3eEFycmF5
TG9uZyBtX2FUaW1lczsNCiAgICBib29sIG1fYkVycm9ycywNCiAgICAgICAgICAgICAgICAgIG1f
Yldhcm5pbmdzOw0KfTsNCg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hMb2dXaW5kb3cgOiBwdWJsaWMgd3hMb2cNCnsNCnB1YmxpYzoNCiAgICB3eExvZ1dp
bmRvdyh3eEZyYW1lICpwUGFyZW50LA0KICAgICAgICAgICAgY29uc3QgY2hhciAqc3pUaXRsZSwN
CiAgICAgICAgICAgIGJvb2wgYlNob3cgPSAxLA0KICAgICAgICAgICAgYm9vbCBiUGFzc1RvT2xk
ID0gMSk7DQogICAgfnd4TG9nV2luZG93KCk7DQoNCg0KDQogICAgdm9pZCBTaG93KGJvb2wgYlNo
b3cgPSAxKTsNCg0KICAgIHd4RnJhbWUgKkdldEZyYW1lKCkgY29uc3Q7DQoNCg0KDQogICAgd3hM
b2cgKkdldE9sZExvZygpIGNvbnN0IHsgcmV0dXJuIG1fcE9sZExvZzsgfQ0KDQogICAgYm9vbCBJ
c1Bhc3NpbmdNZXNzYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYlBhc3NNZXNzYWdlczsgfQ0KDQoN
Cg0KDQogICAgdm9pZCBQYXNzTWVzc2FnZXMoYm9vbCBiRG9QYXNzKSB7IG1fYlBhc3NNZXNzYWdl
cyA9IGJEb1Bhc3M7IH0NCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgRmx1c2goKTsNCg0KDQoNCg0K
ICAgIHZpcnR1YWwgdm9pZCBPbkZyYW1lQ3JlYXRlKHd4RnJhbWUgKmZyYW1lKTsNCg0KDQoNCg0K
ICAgIHZpcnR1YWwgYm9vbCBPbkZyYW1lQ2xvc2Uod3hGcmFtZSAqZnJhbWUpOw0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgT25GcmFtZURlbGV0ZSh3eEZyYW1lICpmcmFtZSk7DQoNCnByb3RlY3RlZDoN
CiAgICB2aXJ0dWFsIHZvaWQgRG9Mb2cod3hMb2dMZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqc3pT
dHJpbmcsIHRpbWVfdCB0KTsNCiAgICB2aXJ0dWFsIHZvaWQgRG9Mb2dTdHJpbmcoY29uc3QgY2hh
ciAqc3pTdHJpbmcsIHRpbWVfdCB0KTsNCg0KcHJpdmF0ZToNCiAgICBib29sIG1fYlBhc3NNZXNz
YWdlczsNCiAgICB3eExvZyAqbV9wT2xkTG9nOw0KICAgIHd4TG9nRnJhbWUgKm1fcExvZ0ZyYW1l
Ow0KfTsNCiMgMzg2ICIuLi8uLi9pbmNsdWRlL3d4L2xvZy5oIg0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hMb2dOdWxsDQp7DQpwdWJsaWM6DQogICAgd3hMb2dOdWxsKCkgeyBt
X2ZsYWdPbGQgPSB3eExvZzo6RW5hYmxlTG9nZ2luZygwKTsgfQ0KICAgIH53eExvZ051bGwoKSB7
ICh2b2lkKXd4TG9nOjpFbmFibGVMb2dnaW5nKG1fZmxhZ09sZCk7IH0NCg0KcHJpdmF0ZToNCiAg
ICBib29sIG1fZmxhZ09sZDsNCn07DQojIDQwOSAiLi4vLi4vaW5jbHVkZS93eC9sb2cuaCINCl9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBib29sIGdfYlZlcmJvc2U7DQoNCg0KDQoN
Cg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB1bnNpZ25lZCBsb25nIHd4U3lzRXJyb3JD
b2RlKCk7DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGNvbnN0IGNoYXIqIHd4U3lzRXJy
b3JNc2codW5zaWduZWQgbG9uZyBuRXJyQ29kZSA9IDApOw0KIyA0MzkgIi4uLy4uL2luY2x1ZGUv
d3gvbG9nLmgiDQpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eExvZ0dl
bmVyaWMod3hMb2dMZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqc3pGb3JtYXQsIC4uLik7DQoNCg0K
ZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMb2dGYXRhbEVycm9yKGNv
bnN0IGNoYXIgKnN6Rm9ybWF0LCAuLi4pOw0KZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hMb2dFcnJvcihjb25zdCBjaGFyICpzekZvcm1hdCwgLi4uKTsNCmV4dGVybiB2
b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nV2FybmluZyhjb25zdCBjaGFyICpz
ekZvcm1hdCwgLi4uKTsNCmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4
TG9nTWVzc2FnZShjb25zdCBjaGFyICpzekZvcm1hdCwgLi4uKTsNCmV4dGVybiB2b2lkIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nSW5mbyhjb25zdCBjaGFyICpzekZvcm1hdCwgLi4u
KTsNCmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nVmVyYm9zZShj
b25zdCBjaGFyICpzekZvcm1hdCwgLi4uKTsNCg0KDQoNCmV4dGVybiB2b2lkIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4TG9nU3RhdHVzKGNvbnN0IGNoYXIgKnN6Rm9ybWF0LCAuLi4pOw0K
DQoNCg0KZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMb2dTdGF0dXMo
d3hGcmFtZSAqcEZyYW1lLCBjb25zdCBjaGFyICpzekZvcm1hdCwgLi4uKTsNCg0KDQoNCmV4dGVy
biB2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nU3lzRXJyb3IoY29uc3QgY2hh
ciAqc3pGb3JtYXQsIC4uLik7DQoNCg0KDQpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eExvZ1N5c0Vycm9yKGxvbmcgbEVyckNvZGUsIGNvbnN0IGNoYXIgKnN6Rm9ybWF0
LCAuLi4pOw0KDQoNCg0KICAgIGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4TG9nRGVidWcoY29uc3QgY2hhciAqc3pGb3JtYXQsIC4uLik7DQoNCg0KICAgIGV4dGVybiB2
b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TG9nVHJhY2UoY29uc3QgY2hhciAqc3pG
b3JtYXQsIC4uLik7DQoNCg0KDQogICAgZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hMb2dUcmFjZShjb25zdCBjaGFyICptYXNrLCBjb25zdCBjaGFyICpzekZvcm1hdCwg
Li4uKTsNCg0KDQoNCg0KICAgIGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4TG9nVHJhY2Uod3hUcmFjZU1hc2sgbWFzaywgY29uc3QgY2hhciAqc3pGb3JtYXQsIC4uLik7
DQojIDIzICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9l
dmVudC5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2V2ZW50LmgiDQojcHJhZ21hIGludGVy
ZmFjZSAiZXZlbnQuaCINCg0KDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9nZGljbW4u
aCIgMQ0KIyAyMCAiLi4vLi4vaW5jbHVkZS93eC9nZGljbW4uaCINCiNwcmFnbWEgaW50ZXJmYWNl
ICJnZGljbW4uaCINCg0KDQoNCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2NvbG91ci5o
IiAxDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvY29sb3VyLmgiIDENCiMgMTYg
Ii4uLy4uL2luY2x1ZGUvd3gvbXN3L2NvbG91ci5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImNvbG91
ci5oIg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENvbG91cjog
cHVibGljIHd4T2JqZWN0DQp7DQpwdWJsaWM6DQoNCg0KICB3eENvbG91cigpOw0KDQogIHd4Q29s
b3VyKCB1bnNpZ25lZCBjaGFyIHJlZCwgdW5zaWduZWQgY2hhciBncmVlbiwgdW5zaWduZWQgY2hh
ciBibHVlICk7DQogIHd4Q29sb3VyKCB1bnNpZ25lZCBsb25nIGNvbFJHQiApIHsgU2V0KGNvbFJH
Qik7IH0NCg0KDQogIHd4Q29sb3VyKCBjb25zdCB3eFN0cmluZyAmY29sb3VyTmFtZSApIHsgSW5p
dEZyb21OYW1lKGNvbG91ck5hbWUpOyB9DQogIHd4Q29sb3VyKCBjb25zdCBjaGFyICpjb2xvdXJO
YW1lICkgeyBJbml0RnJvbU5hbWUoY29sb3VyTmFtZSk7IH0NCg0KDQoNCiAgd3hDb2xvdXIoIGNv
bnN0IHd4Q29sb3VyJiBjb2wgKTsNCg0KICB3eENvbG91ciYgb3BlcmF0b3IgPSAoIGNvbnN0IHd4
Q29sb3VyJiBjb2wgKTsNCg0KDQogIH53eENvbG91cigpOw0KDQoNCiAgdm9pZCBTZXQoIHVuc2ln
bmVkIGNoYXIgcmVkLCB1bnNpZ25lZCBjaGFyIGdyZWVuLCB1bnNpZ25lZCBjaGFyIGJsdWUgKTsN
CiAgdm9pZCBTZXQodW5zaWduZWQgbG9uZyBjb2xSR0IpDQogIHsNCg0KDQogICAgU2V0KCh1bnNp
Z25lZCBjaGFyKWNvbFJHQiwNCiAgICAgICAgKHVuc2lnbmVkIGNoYXIpKGNvbFJHQiA+PiA4KSwN
CiAgICAgICAgKHVuc2lnbmVkIGNoYXIpKGNvbFJHQiA+PiAxNikpOw0KICB9DQoNCg0KICBib29s
IE9rKCkgY29uc3Qge3JldHVybiBtX2lzSW5pdDsgfQ0KDQoNCg0KDQoNCg0KICB1bnNpZ25lZCBj
aGFyIFJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkOyB9DQogIHVuc2lnbmVkIGNoYXIgR3JlZW4o
KSBjb25zdCB7IHJldHVybiBtX2dyZWVuOyB9DQogIHVuc2lnbmVkIGNoYXIgQmx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmx1ZTsgfQ0KDQoNCiAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgd3hDb2xv
dXImIGNvbG91cikgY29uc3QNCiAgew0KICAgIHJldHVybiAobV9yZWQgPT0gY29sb3VyLm1fcmVk
ICYmDQogICAgICAgICAgICBtX2dyZWVuID09IGNvbG91ci5tX2dyZWVuICYmDQogICAgICAgICAg
ICBtX2JsdWUgPT0gY29sb3VyLm1fYmx1ZSk7DQogIH0NCiAgYm9vbCBvcGVyYXRvciAhPSAoY29u
c3Qgd3hDb2xvdXImIGNvbG91cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBjb2xvdXIpOyB9
DQoNCiAgV1hDT0xPUlJFRiBHZXRQaXhlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWw7IH07DQoN
CnB1YmxpYzoNCiAgV1hDT0xPUlJFRiBtX3BpeGVsOw0KDQpwcml2YXRlOg0KICBib29sIG1faXNJ
bml0Ow0KICB1bnNpZ25lZCBjaGFyIG1fcmVkOw0KICB1bnNpZ25lZCBjaGFyIG1fYmx1ZTsNCiAg
dW5zaWduZWQgY2hhciBtX2dyZWVuOw0KDQoNCiAgdm9pZCBJbml0RnJvbU5hbWUoY29uc3Qgd3hT
dHJpbmcmIGNvbG91ck5hbWUpOw0KDQpwcml2YXRlOg0KICBwdWJsaWM6IHN0YXRpYyB3eENsYXNz
SW5mbyBzbV9jbGFzc3d4Q29sb3VyOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJnd4Q29sb3VyOjpzbV9jbGFzc3d4Q29sb3VyOyB9DQp9Ow0KIyA2ICIuLi8uLi9p
bmNsdWRlL3d4L2NvbG91ci5oIiAyDQojIDI5ICIuLi8uLi9pbmNsdWRlL3d4L2dkaWNtbi5oIiAy
DQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZm9udC5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4
L2ZvbnQuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJmb250YmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoj
IDEgIi4uLy4uL2luY2x1ZGUvd3gvZm9udGVuYy5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4
L2ZvbnRlbmMuaCINCmVudW0gd3hGb250RW5jb2RpbmcNCnsNCiAgICB3eEZPTlRFTkNPRElOR19T
WVNURU0gPSAtMSwNCiAgICB3eEZPTlRFTkNPRElOR19ERUZBVUxULA0KDQoNCiAgICB3eEZPTlRF
TkNPRElOR19JU084ODU5XzEsDQogICAgd3hGT05URU5DT0RJTkdfSVNPODg1OV8yLA0KICAgIHd4
Rk9OVEVOQ09ESU5HX0lTTzg4NTlfMywNCiAgICB3eEZPTlRFTkNPRElOR19JU084ODU5XzQsDQog
ICAgd3hGT05URU5DT0RJTkdfSVNPODg1OV81LA0KICAgIHd4Rk9OVEVOQ09ESU5HX0lTTzg4NTlf
NiwNCiAgICB3eEZPTlRFTkNPRElOR19JU084ODU5XzcsDQogICAgd3hGT05URU5DT0RJTkdfSVNP
ODg1OV84LA0KICAgIHd4Rk9OVEVOQ09ESU5HX0lTTzg4NTlfOSwNCiAgICB3eEZPTlRFTkNPRElO
R19JU084ODU5XzEwLA0KICAgIHd4Rk9OVEVOQ09ESU5HX0lTTzg4NTlfMTEsDQogICAgd3hGT05U
RU5DT0RJTkdfSVNPODg1OV8xMiwNCg0KDQogICAgd3hGT05URU5DT0RJTkdfSVNPODg1OV8xMywN
CiAgICB3eEZPTlRFTkNPRElOR19JU084ODU5XzE0LA0KICAgIHd4Rk9OVEVOQ09ESU5HX0lTTzg4
NTlfMTUsDQogICAgd3hGT05URU5DT0RJTkdfSVNPODg1OV9NQVgsDQoNCg0KICAgIHd4Rk9OVEVO
Q09ESU5HX0tPSTgsDQogICAgd3hGT05URU5DT0RJTkdfQUxURVJOQVRJVkUsDQogICAgd3hGT05U
RU5DT0RJTkdfQlVMR0FSSUFOLA0KDQoNCg0KICAgIHd4Rk9OVEVOQ09ESU5HX0NQNDM3LA0KICAg
IHd4Rk9OVEVOQ09ESU5HX0NQODUwLA0KICAgIHd4Rk9OVEVOQ09ESU5HX0NQODUyLA0KICAgIHd4
Rk9OVEVOQ09ESU5HX0NQODU1LA0KICAgIHd4Rk9OVEVOQ09ESU5HX0NQODY2LA0KDQogICAgd3hG
T05URU5DT0RJTkdfQ1A4NzQsDQogICAgd3hGT05URU5DT0RJTkdfQ1AxMjUwLA0KICAgIHd4Rk9O
VEVOQ09ESU5HX0NQMTI1MSwNCiAgICB3eEZPTlRFTkNPRElOR19DUDEyNTIsDQogICAgd3hGT05U
RU5DT0RJTkdfQ1AxMjUzLA0KICAgIHd4Rk9OVEVOQ09ESU5HX0NQMTI1NCwNCiAgICB3eEZPTlRF
TkNPRElOR19DUDEyNTUsDQogICAgd3hGT05URU5DT0RJTkdfQ1AxMjU2LA0KICAgIHd4Rk9OVEVO
Q09ESU5HX0NQMTI1NywNCiAgICB3eEZPTlRFTkNPRElOR19DUDEyX01BWCwNCg0KICAgIHd4Rk9O
VEVOQ09ESU5HX1VOSUNPREUsDQoNCg0KICAgIHd4Rk9OVEVOQ09ESU5HX01BWA0KfTsNCiMgMjUg
Ii4uLy4uL2luY2x1ZGUvd3gvZm9udC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZ2Rpb2Jq
LmgiIDENCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9nZGlvYmouaCIgMQ0KIyAx
NiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvZ2Rpb2JqLmgiDQojcHJhZ21hIGludGVyZmFjZSAiZ2Rp
b2JqLmgiDQojIDI3ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9nZGlvYmouaCINCmNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R0RJUmVmRGF0YSA6IHB1YmxpYyB3eE9iamVjdFJlZkRh
dGENCnsNCg0KfTsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eEdESU9iamVjdCA6IHB1YmxpYyB3eE9iamVjdA0Kew0KcHVibGljOg0KICAgIHd4R0RJT2JqZWN0
KCkgeyBtX3Zpc2libGUgPSAwOyB9Ow0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgUmVhbGl6ZVJlc291
cmNlKCkgeyByZXR1cm4gMDsgfTsNCg0KDQogICAgdmlydHVhbCBib29sIEZyZWVSZXNvdXJjZShi
b29sID0gMCkgeyByZXR1cm4gMDsgfQ0KDQogICAgdmlydHVhbCBib29sIElzRnJlZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0NCg0KICAgIGJvb2wgSXNOdWxsKCkgY29uc3QgeyByZXR1cm4gKG1fcmVm
RGF0YSA9PSAwKTsgfQ0KDQoNCiAgICB2aXJ0dWFsIFdYSEFORExFIEdldFJlc291cmNlSGFuZGxl
KCkgeyByZXR1cm4gMDsgfQ0KDQogICAgdmlydHVhbCBib29sIEdldFZpc2libGUoKSB7IHJldHVy
biBtX3Zpc2libGU7IH0NCiAgICB2aXJ0dWFsIHZvaWQgU2V0VmlzaWJsZShib29sIHYpIHsgbV92
aXNpYmxlID0gdjsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgYm9vbCBtX3Zpc2libGU7DQoNCnByaXZh
dGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eEdESU9iamVjdDsg
d3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEdESU9iamVjdDo6
c21fY2xhc3N3eEdESU9iamVjdDsgfQ0KfTsNCiMgNiAiLi4vLi4vaW5jbHVkZS93eC9nZGlvYmou
aCIgMg0KIyAyNiAiLi4vLi4vaW5jbHVkZS93eC9mb250LmgiIDINCg0KDQoNCg0KDQpjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEZvbnREYXRhOw0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hGb250QmFzZTsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4Rm9udDsNCg0KDQoNCg0KDQoNCmVudW0gd3hGb250RmFtaWx5DQp7DQogICAgd3hGT05U
RkFNSUxZX0RFRkFVTFQgPSB3eERFRkFVTFQsDQogICAgd3hGT05URkFNSUxZX0RFQ09SQVRJVkUg
PSB3eERFQ09SQVRJVkUsDQogICAgd3hGT05URkFNSUxZX1JPTUFOID0gd3hST01BTiwNCiAgICB3
eEZPTlRGQU1JTFlfU0NSSVBUID0gd3hTQ1JJUFQsDQogICAgd3hGT05URkFNSUxZX1NXSVNTID0g
d3hTV0lTUywNCiAgICB3eEZPTlRGQU1JTFlfTU9ERVJOID0gd3hNT0RFUk4sDQogICAgd3hGT05U
RkFNSUxZX1RFTEVUWVBFID0gd3hURUxFVFlQRSwNCiAgICB3eEZPTlRGQU1JTFlfTUFYDQp9Ow0K
DQoNCmVudW0gd3hGb250U3R5bGUNCnsNCiAgICB3eEZPTlRTVFlMRV9OT1JNQUwgPSB3eE5PUk1B
TCwNCiAgICB3eEZPTlRTVFlMRV9JVEFMSUMgPSB3eElUQUxJQywNCiAgICB3eEZPTlRTVFlMRV9T
TEFOVCA9IHd4U0xBTlQsDQogICAgd3hGT05UU1RZTEVfTUFYDQp9Ow0KDQoNCmVudW0gd3hGb250
V2VpZ2h0DQp7DQogICAgd3hGT05UV0VJR0hUX05PUk1BTCA9IHd4Tk9STUFMLA0KICAgIHd4Rk9O
VFdFSUdIVF9MSUdIVCA9IHd4TElHSFQsDQogICAgd3hGT05UV0VJR0hUX0JPTEQgPSB3eEJPTEQs
DQogICAgd3hGT05UV0VJR0hUX01BWA0KfTsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eEZvbnRSZWZEYXRhOw0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eEZvbnRCYXNlIDogcHVibGljIHd4R0RJT2JqZWN0DQp7DQpwdWJsaWM6DQoNCiAg
ICBzdGF0aWMgd3hGb250ICpOZXcoDQogICAgICAgIGludCBwb2ludFNpemUsDQogICAgICAgIGlu
dCBmYW1pbHksDQogICAgICAgIGludCBzdHlsZSwNCiAgICAgICAgaW50IHdlaWdodCwNCiAgICAg
ICAgYm9vbCB1bmRlcmxpbmVkID0gMCwNCiAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGZhY2UgPSB3
eEVtcHR5U3RyaW5nLA0KICAgICAgICB3eEZvbnRFbmNvZGluZyBlbmNvZGluZyA9IHd4Rk9OVEVO
Q09ESU5HX0RFRkFVTFQpOw0KDQoNCiAgICBib29sIE9rKCkgY29uc3QgeyByZXR1cm4gbV9yZWZE
YXRhICE9IF9fbnVsbDsgfQ0KDQoNCiAgICBib29sIG9wZXJhdG9yID09IChjb25zdCB3eEZvbnQm
IGZvbnQpIGNvbnN0Ow0KICAgIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHd4Rm9udCYgZm9udCkg
Y29uc3Q7DQoNCg0KICAgIHZpcnR1YWwgaW50IEdldFBvaW50U2l6ZSgpIGNvbnN0ID0gMDsNCiAg
ICB2aXJ0dWFsIGludCBHZXRGYW1pbHkoKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCBpbnQgR2V0
U3R5bGUoKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCBpbnQgR2V0V2VpZ2h0KCkgY29uc3QgPSAw
Ow0KICAgIHZpcnR1YWwgYm9vbCBHZXRVbmRlcmxpbmVkKCkgY29uc3QgPSAwOw0KICAgIHZpcnR1
YWwgd3hTdHJpbmcgR2V0RmFjZU5hbWUoKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCB3eEZvbnRF
bmNvZGluZyBHZXRFbmNvZGluZygpIGNvbnN0ID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIFNl
dFBvaW50U2l6ZSggaW50IHBvaW50U2l6ZSApID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0RmFt
aWx5KCBpbnQgZmFtaWx5ICkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRTdHlsZSggaW50IHN0
eWxlICkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRXZWlnaHQoIGludCB3ZWlnaHQgKSA9IDA7
DQogICAgdmlydHVhbCB2b2lkIFNldEZhY2VOYW1lKCBjb25zdCB3eFN0cmluZyYgZmFjZU5hbWUg
KSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFNldFVuZGVybGluZWQoIGJvb2wgdW5kZXJsaW5lZCAp
ID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0RW5jb2Rpbmcod3hGb250RW5jb2RpbmcgZW5jb2Rp
bmcpID0gMDsNCg0KDQoNCiAgICB3eFN0cmluZyBHZXRGYW1pbHlTdHJpbmcoKSBjb25zdDsNCiAg
ICB3eFN0cmluZyBHZXRTdHlsZVN0cmluZygpIGNvbnN0Ow0KICAgIHd4U3RyaW5nIEdldFdlaWdo
dFN0cmluZygpIGNvbnN0Ow0KDQoNCg0KICAgIHN0YXRpYyB3eEZvbnRFbmNvZGluZyBHZXREZWZh
dWx0RW5jb2RpbmcoKQ0KICAgICAgICB7IHJldHVybiBtc19lbmNvZGluZ0RlZmF1bHQ7IH0NCiAg
ICBzdGF0aWMgdm9pZCBTZXREZWZhdWx0RW5jb2Rpbmcod3hGb250RW5jb2RpbmcgZW5jb2Rpbmcp
DQogICAgICAgIHsgbXNfZW5jb2RpbmdEZWZhdWx0ID0gZW5jb2Rpbmc7IH0NCg0KcHJvdGVjdGVk
Og0KDQogICAgd3hGb250UmVmRGF0YSAqR2V0Rm9udERhdGEoKSBjb25zdA0KICAgICAgICB7IHJl
dHVybiAod3hGb250UmVmRGF0YSAqKW1fcmVmRGF0YTsgfQ0KDQpwcml2YXRlOg0KDQoNCg0KDQog
ICAgc3RhdGljIHd4Rm9udEVuY29kaW5nIG1zX2VuY29kaW5nRGVmYXVsdDsNCn07DQoNCg0KDQoj
IDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2ZvbnQuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93
eC9tc3cvZm9udC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImZvbnQuaCINCg0KDQoNCg0KDQoNCmNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Rm9udCA6IHB1YmxpYyB3eEZvbnRCYXNl
DQp7DQpwdWJsaWM6DQoNCiAgICB3eEZvbnQoKSB7IEluaXQoKTsgfQ0KICAgIHd4Rm9udChjb25z
dCB3eEZvbnQmIGZvbnQpIHsgSW5pdCgpOyBSZWYoZm9udCk7IH0NCg0KICAgIHd4Rm9udChpbnQg
c2l6ZSwNCiAgICAgICAgICAgaW50IGZhbWlseSwNCiAgICAgICAgICAgaW50IHN0eWxlLA0KICAg
ICAgICAgICBpbnQgd2VpZ2h0LA0KICAgICAgICAgICBib29sIHVuZGVybGluZWQgPSAwLA0KICAg
ICAgICAgICBjb25zdCB3eFN0cmluZyYgZmFjZSA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAg
IHd4Rm9udEVuY29kaW5nIGVuY29kaW5nID0gd3hGT05URU5DT0RJTkdfREVGQVVMVCkNCiAgICB7
DQogICAgICAgIEluaXQoKTsNCg0KICAgICAgICAodm9pZClDcmVhdGUoc2l6ZSwgZmFtaWx5LCBz
dHlsZSwgd2VpZ2h0LCB1bmRlcmxpbmVkLCBmYWNlLCBlbmNvZGluZyk7DQogICAgfQ0KDQogICAg
Ym9vbCBDcmVhdGUoaW50IHNpemUsDQogICAgICAgICAgICAgICAgaW50IGZhbWlseSwNCiAgICAg
ICAgICAgICAgICBpbnQgc3R5bGUsDQogICAgICAgICAgICAgICAgaW50IHdlaWdodCwNCiAgICAg
ICAgICAgICAgICBib29sIHVuZGVybGluZWQgPSAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4
U3RyaW5nJiBmYWNlID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgICB3eEZvbnRFbmNv
ZGluZyBlbmNvZGluZyA9IHd4Rk9OVEVOQ09ESU5HX0RFRkFVTFQpOw0KDQogICAgdmlydHVhbCB+
d3hGb250KCk7DQoNCg0KICAgIHd4Rm9udCYgb3BlcmF0b3I9KGNvbnN0IHd4Rm9udCYgZm9udCk7
DQoNCg0KICAgIHZpcnR1YWwgaW50IEdldFBvaW50U2l6ZSgpIGNvbnN0Ow0KICAgIHZpcnR1YWwg
aW50IEdldEZhbWlseSgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgaW50IEdldFN0eWxlKCkgY29uc3Q7
DQogICAgdmlydHVhbCBpbnQgR2V0V2VpZ2h0KCkgY29uc3Q7DQogICAgdmlydHVhbCBib29sIEdl
dFVuZGVybGluZWQoKSBjb25zdDsNCiAgICB2aXJ0dWFsIHd4U3RyaW5nIEdldEZhY2VOYW1lKCkg
Y29uc3Q7DQogICAgdmlydHVhbCB3eEZvbnRFbmNvZGluZyBHZXRFbmNvZGluZygpIGNvbnN0Ow0K
DQogICAgdmlydHVhbCB2b2lkIFNldFBvaW50U2l6ZShpbnQgcG9pbnRTaXplKTsNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0RmFtaWx5KGludCBmYW1pbHkpOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRTdHls
ZShpbnQgc3R5bGUpOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRXZWlnaHQoaW50IHdlaWdodCk7DQog
ICAgdmlydHVhbCB2b2lkIFNldEZhY2VOYW1lKGNvbnN0IHd4U3RyaW5nJiBmYWNlTmFtZSk7DQog
ICAgdmlydHVhbCB2b2lkIFNldFVuZGVybGluZWQoYm9vbCB1bmRlcmxpbmVkKTsNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0RW5jb2Rpbmcod3hGb250RW5jb2RpbmcgZW5jb2RpbmcpOw0KDQoNCg0KDQog
ICAgaW50IEdldEZvbnRJZCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgYm9vbCBJc0ZyZWUoKSBjb25z
dDsNCiAgICB2aXJ0dWFsIGJvb2wgUmVhbGl6ZVJlc291cmNlKCk7DQogICAgdmlydHVhbCBXWEhB
TkRMRSBHZXRSZXNvdXJjZUhhbmRsZSgpOw0KICAgIHZpcnR1YWwgYm9vbCBGcmVlUmVzb3VyY2Uo
Ym9vbCBmb3JjZSA9IDApOw0KDQoNCg0KICAgIFdYSEZPTlQgR2V0SEZPTlQoKSBjb25zdDsNCg0K
DQoNCg0KDQoNCnByb3RlY3RlZDoNCg0KICAgIHZvaWQgSW5pdCgpOw0KDQogICAgdm9pZCBVbnNo
YXJlKCk7DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xh
c3N3eEZvbnQ7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hG
b250OjpzbV9jbGFzc3d4Rm9udDsgfQ0KfTsNCiMgMTQzICIuLi8uLi9pbmNsdWRlL3d4L2ZvbnQu
aCIgMg0KIyAzMCAiLi4vLi4vaW5jbHVkZS93eC9nZGljbW4uaCIgMg0KDQoNCg0KDQoNCmNsYXNz
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Qml0bWFwOw0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hCcnVzaDsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4Q29sb3VyOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDdXJzb3I7DQpj
bGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEZvbnQ7DQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eEljb247DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eFBhbGV0dGU7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFBlbjsNCmNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4UmVnaW9uOw0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJpbmc7DQoNCg0KDQoNCg0KDQplbnVtDQp7DQogICAgd3hC
SVRNQVBfVFlQRV9JTlZBTElELA0KICAgIHd4QklUTUFQX1RZUEVfQk1QLA0KICAgIHd4QklUTUFQ
X1RZUEVfQk1QX1JFU09VUkNFLA0KICAgIHd4QklUTUFQX1RZUEVfUkVTT1VSQ0UgPSB3eEJJVE1B
UF9UWVBFX0JNUF9SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX0lDTywNCiAgICB3eEJJVE1B
UF9UWVBFX0lDT19SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX0NVUiwNCiAgICB3eEJJVE1B
UF9UWVBFX0NVUl9SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX1hCTSwNCiAgICB3eEJJVE1B
UF9UWVBFX1hCTV9EQVRBLA0KICAgIHd4QklUTUFQX1RZUEVfWFBNLA0KICAgIHd4QklUTUFQX1RZ
UEVfWFBNX0RBVEEsDQogICAgd3hCSVRNQVBfVFlQRV9USUYsDQogICAgd3hCSVRNQVBfVFlQRV9U
SUZfUkVTT1VSQ0UsDQogICAgd3hCSVRNQVBfVFlQRV9HSUYsDQogICAgd3hCSVRNQVBfVFlQRV9H
SUZfUkVTT1VSQ0UsDQogICAgd3hCSVRNQVBfVFlQRV9QTkcsDQogICAgd3hCSVRNQVBfVFlQRV9Q
TkdfUkVTT1VSQ0UsDQogICAgd3hCSVRNQVBfVFlQRV9KUEVHLA0KICAgIHd4QklUTUFQX1RZUEVf
SlBFR19SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX1BOTSwNCiAgICB3eEJJVE1BUF9UWVBF
X1BOTV9SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX1BDWCwNCiAgICB3eEJJVE1BUF9UWVBF
X1BDWF9SRVNPVVJDRSwNCiAgICB3eEJJVE1BUF9UWVBFX1BJQ1QsDQogICAgd3hCSVRNQVBfVFlQ
RV9QSUNUX1JFU09VUkNFLA0KICAgIHd4QklUTUFQX1RZUEVfSUNPTiwNCiAgICB3eEJJVE1BUF9U
WVBFX0lDT05fUkVTT1VSQ0UsDQogICAgd3hCSVRNQVBfVFlQRV9NQUNDVVJTT1IsDQogICAgd3hC
SVRNQVBfVFlQRV9NQUNDVVJTT1JfUkVTT1VSQ0UsDQogICAgd3hCSVRNQVBfVFlQRV9BTlkgPSA1
MA0KfTsNCg0KDQplbnVtIHd4U3RvY2tDdXJzb3INCnsNCiAgICB3eENVUlNPUl9OT05FLA0KICAg
IHd4Q1VSU09SX0FSUk9XLA0KICAgIHd4Q1VSU09SX0JVTExTRVlFLA0KICAgIHd4Q1VSU09SX0NI
QVIsDQogICAgd3hDVVJTT1JfQ1JPU1MsDQogICAgd3hDVVJTT1JfSEFORCwNCiAgICB3eENVUlNP
Ul9JQkVBTSwNCiAgICB3eENVUlNPUl9MRUZUX0JVVFRPTiwNCiAgICB3eENVUlNPUl9NQUdOSUZJ
RVIsDQogICAgd3hDVVJTT1JfTUlERExFX0JVVFRPTiwNCiAgICB3eENVUlNPUl9OT19FTlRSWSwN
CiAgICB3eENVUlNPUl9QQUlOVF9CUlVTSCwNCiAgICB3eENVUlNPUl9QRU5DSUwsDQogICAgd3hD
VVJTT1JfUE9JTlRfTEVGVCwNCiAgICB3eENVUlNPUl9QT0lOVF9SSUdIVCwNCiAgICB3eENVUlNP
Ul9RVUVTVElPTl9BUlJPVywNCiAgICB3eENVUlNPUl9SSUdIVF9CVVRUT04sDQogICAgd3hDVVJT
T1JfU0laRU5FU1csDQogICAgd3hDVVJTT1JfU0laRU5TLA0KICAgIHd4Q1VSU09SX1NJWkVOV1NF
LA0KICAgIHd4Q1VSU09SX1NJWkVXRSwNCiAgICB3eENVUlNPUl9TSVpJTkcsDQogICAgd3hDVVJT
T1JfU1BSQVlDQU4sDQogICAgd3hDVVJTT1JfV0FJVCwNCiAgICB3eENVUlNPUl9XQVRDSCwNCiAg
ICB3eENVUlNPUl9CTEFOSywNCiMgMTI2ICIuLi8uLi9pbmNsdWRlL3d4L2dkaWNtbi5oIg0KICAg
IHd4Q1VSU09SX01BWA0KfTsNCiMgMTg0ICIuLi8uLi9pbmNsdWRlL3d4L2dkaWNtbi5oIg0KY2xh
c3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTaXplDQp7DQpwdWJsaWM6DQoNCg0KDQog
ICAgaW50IHgsIHk7DQoNCg0KICAgIHd4U2l6ZSgpIHsgeCA9IHkgPSAwOyB9DQogICAgd3hTaXpl
KGludCB4eCwgaW50IHl5KSB7IFNldCh4eCwgeXkpOyB9DQoNCg0KICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCB3eFNpemUmIHN6KSBjb25zdCB7IHJldHVybiB4ID09IHN6LnggJiYgeSA9PSBzei55
OyB9DQoNCg0KICAgIHd4U2l6ZSBvcGVyYXRvcisoY29uc3Qgd3hTaXplJiBzeikgeyByZXR1cm4g
d3hTaXplKHggKyBzei54LCB5ICsgc3oueSk7IH0NCiAgICB3eFNpemUgb3BlcmF0b3ItKGNvbnN0
IHd4U2l6ZSYgc3opIHsgcmV0dXJuIHd4U2l6ZSh4IC0gc3oueCwgeSAtIHN6LnkpOyB9DQoNCg0K
ICAgIHZvaWQgU2V0KGludCB4eCwgaW50IHl5KSB7IHggPSB4eDsgeSA9IHl5OyB9DQogICAgdm9p
ZCBTZXRXaWR0aChpbnQgdykgeyB4ID0gdzsgfQ0KICAgIHZvaWQgU2V0SGVpZ2h0KGludCBoKSB7
IHkgPSBoOyB9DQoNCiAgICBpbnQgR2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiB4OyB9DQogICAg
aW50IEdldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHk7IH0NCg0KDQogICAgaW50IEdldFgoKSBj
b25zdCB7IHJldHVybiB4OyB9DQogICAgaW50IEdldFkoKSBjb25zdCB7IHJldHVybiB5OyB9DQp9
Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4UmVhbFBvaW50
DQp7DQpwdWJsaWM6DQogICAgZG91YmxlIHg7DQogICAgZG91YmxlIHk7DQoNCiAgICB3eFJlYWxQ
b2ludCgpIHsgeCA9IHkgPSAwLjA7IH07DQogICAgd3hSZWFsUG9pbnQoZG91YmxlIHh4LCBkb3Vi
bGUgeXkpIHsgeCA9IHh4OyB5ID0geXk7IH07DQoNCiAgICB3eFJlYWxQb2ludCBvcGVyYXRvciso
Y29uc3Qgd3hSZWFsUG9pbnQmIHB0KSBjb25zdCB7IHJldHVybiB3eFJlYWxQb2ludCh4ICsgcHQu
eCwgeSArIHB0LnkpOyB9DQogICAgd3hSZWFsUG9pbnQgb3BlcmF0b3ItKGNvbnN0IHd4UmVhbFBv
aW50JiBwdCkgY29uc3QgeyByZXR1cm4gd3hSZWFsUG9pbnQoeCAtIHB0LngsIHkgLSBwdC55KTsg
fQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHd4UmVhbFBvaW50JiBwdCkgY29uc3QgeyBy
ZXR1cm4geCA9PSBwdC54ICYmIHkgPT0gcHQueTsgfQ0KfTsNCg0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hQb2ludA0Kew0KcHVibGljOg0KICAgIGludCB4LCB5Ow0KDQogICAg
d3hQb2ludCgpIHsgeCA9IHkgPSAwOyB9Ow0KICAgIHd4UG9pbnQoaW50IHh4LCBpbnQgeXkpIHsg
eCA9IHh4OyB5ID0geXk7IH07DQoNCg0KDQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qgd3hQ
b2ludCYgcCkgY29uc3QgeyByZXR1cm4geCA9PSBwLnggJiYgeSA9PSBwLnk7IH0NCiAgICBib29s
IG9wZXJhdG9yIT0oY29uc3Qgd3hQb2ludCYgcCkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBw
KTsgfQ0KDQoNCiAgICB3eFBvaW50IG9wZXJhdG9yKyhjb25zdCB3eFBvaW50JiBwKSBjb25zdCB7
IHJldHVybiB3eFBvaW50KHggKyBwLngsIHkgKyBwLnkpOyB9DQogICAgd3hQb2ludCBvcGVyYXRv
ci0oY29uc3Qgd3hQb2ludCYgcCkgY29uc3QgeyByZXR1cm4gd3hQb2ludCh4IC0gcC54LCB5IC0g
cC55KTsgfQ0KDQogICAgd3hQb2ludCYgb3BlcmF0b3IrPShjb25zdCB3eFBvaW50JiBwKSB7IHgg
Kz0gcC54OyB5ICs9IHAueTsgcmV0dXJuICp0aGlzOyB9DQogICAgd3hQb2ludCYgb3BlcmF0b3It
PShjb25zdCB3eFBvaW50JiBwKSB7IHggLT0gcC54OyB5IC09IHAueTsgcmV0dXJuICp0aGlzOyB9
DQp9Ow0KIyAyNjYgIi4uLy4uL2luY2x1ZGUvd3gvZ2RpY21uLmgiDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eFJlY3QNCnsNCnB1YmxpYzoNCiAgICB3eFJlY3QoKSB7IHggPSB5
ID0gd2lkdGggPSBoZWlnaHQgPSAwOyB9DQogICAgd3hSZWN0KGludCB4eCwgaW50IHl5LCBpbnQg
d3csIGludCBoaCkNCiAgICAgICAgeyB4ID0geHg7IHkgPSB5eTsgd2lkdGggPSB3dzsgaGVpZ2h0
ID0gaGg7IH0NCiAgICB3eFJlY3QoY29uc3Qgd3hQb2ludCYgdG9wTGVmdCwgY29uc3Qgd3hQb2lu
dCYgYm90dG9tUmlnaHQpOw0KICAgIHd4UmVjdChjb25zdCB3eFBvaW50JiBwb3MsIGNvbnN0IHd4
U2l6ZSYgc2l6ZSk7DQoNCg0KDQogICAgaW50IEdldFgoKSBjb25zdCB7IHJldHVybiB4OyB9DQog
ICAgdm9pZCBTZXRYKGludCB4eCkgeyB4ID0geHg7IH0NCg0KICAgIGludCBHZXRZKCkgY29uc3Qg
eyByZXR1cm4geTsgfQ0KICAgIHZvaWQgU2V0WShpbnQgeXkpIHsgeSA9IHl5OyB9DQoNCiAgICBp
bnQgR2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiB3aWR0aDsgfQ0KICAgIHZvaWQgU2V0V2lkdGgo
aW50IHcpIHsgd2lkdGggPSB3OyB9DQoNCiAgICBpbnQgR2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gaGVpZ2h0OyB9DQogICAgdm9pZCBTZXRIZWlnaHQoaW50IGgpIHsgaGVpZ2h0ID0gaDsgfQ0K
DQogICAgd3hQb2ludCBHZXRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHd4UG9pbnQoeCwgeSk7
IH0NCiAgICB3eFNpemUgR2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHd4U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsgfQ0KDQogICAgaW50IEdldExlZnQoKSBjb25zdCB7IHJldHVybiB4OyB9DQogICAgaW50
IEdldFRvcCgpIGNvbnN0IHsgcmV0dXJuIHk7IH0NCiAgICBpbnQgR2V0Qm90dG9tKCkgY29uc3Qg
eyByZXR1cm4geSArIGhlaWdodCAtIDE7IH0NCiAgICBpbnQgR2V0UmlnaHQoKSBjb25zdCB7IHJl
dHVybiB4ICsgd2lkdGggLSAxOyB9DQoNCiAgICB2b2lkIFNldExlZnQoaW50IGxlZnQpIHsgeCA9
IGxlZnQ7IH0NCiAgICB2b2lkIFNldFJpZ2h0KGludCByaWdodCkgeyB3aWR0aCA9IHJpZ2h0IC0g
eCArIDE7IH0NCiAgICB2b2lkIFNldFRvcChpbnQgdG9wKSB7IHkgPSB0b3A7IH0NCiAgICB2b2lk
IFNldEJvdHRvbShpbnQgYm90dG9tKSB7IGhlaWdodCA9IGJvdHRvbSAtIHkgKyAxOyB9DQoNCiAg
ICB2b2lkIEluZmxhdGUod3hDb29yZCBkeCwgd3hDb29yZCBkeSkNCiAgICB7DQogICAgICAgIHgg
LT0gZHg7DQogICAgICAgIHkgLT0gZHk7DQogICAgICAgIHdpZHRoICs9IDIqZHg7DQogICAgICAg
IGhlaWdodCArPSAyKmR5Ow0KICAgIH0NCg0KICAgIHZvaWQgSW5mbGF0ZSh3eENvb3JkIGQpIHsg
SW5mbGF0ZShkLCBkKTsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHd4UmVjdCYgcmVj
dCkgY29uc3Q7DQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHd4UmVjdCYgcmVjdCkgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSByZWN0KTsgfQ0KDQogICAgYm9vbCBJbnNpZGUoaW50IGN4LCBp
bnQgY3kpIGNvbnN0Ow0KICAgIHd4UmVjdCBvcGVyYXRvcisoY29uc3Qgd3hSZWN0JiByZWN0KSBj
b25zdDsNCiAgICB3eFJlY3QmIG9wZXJhdG9yKz0oY29uc3Qgd3hSZWN0JiByZWN0KTsNCg0KcHVi
bGljOg0KICAgIGludCB4LCB5LCB3aWR0aCwgaGVpZ2h0Ow0KfTsNCg0KDQoNCg0KDQp0eXBlZGVm
IGNoYXIgc2lnbmVkIHd4RGFzaDsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hQZW5MaXN0IDogcHVibGljIHd4TGlzdA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJ
bmZvIHNtX2NsYXNzd3hQZW5MaXN0OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJnd4UGVuTGlzdDo6c21fY2xhc3N3eFBlbkxpc3Q7IH0NCg0KcHVibGljOg0KICAg
IHd4UGVuTGlzdCgpIHsgfQ0KICAgIH53eFBlbkxpc3QoKTsNCg0KICAgIHZvaWQgQWRkUGVuKHd4
UGVuICpwZW4pOw0KICAgIHZvaWQgUmVtb3ZlUGVuKHd4UGVuICpwZW4pOw0KICAgIHd4UGVuICpG
aW5kT3JDcmVhdGVQZW4oY29uc3Qgd3hDb2xvdXImIGNvbG91ciwgaW50IHdpZHRoLCBpbnQgc3R5
bGUpOw0KfTsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCcnVzaExpc3Qg
OiBwdWJsaWMgd3hMaXN0DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xh
c3N3eEJydXNoTGlzdDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
ICZ3eEJydXNoTGlzdDo6c21fY2xhc3N3eEJydXNoTGlzdDsgfQ0KDQpwdWJsaWM6DQogICAgd3hC
cnVzaExpc3QoKSB7IH0NCiAgICB+d3hCcnVzaExpc3QoKTsNCg0KICAgIHZvaWQgQWRkQnJ1c2go
d3hCcnVzaCAqYnJ1c2gpOw0KICAgIHZvaWQgUmVtb3ZlQnJ1c2god3hCcnVzaCAqYnJ1c2gpOw0K
ICAgIHd4QnJ1c2ggKkZpbmRPckNyZWF0ZUJydXNoKGNvbnN0IHd4Q29sb3VyJiBjb2xvdXIsIGlu
dCBzdHlsZSk7DQp9Ow0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3Qg
Y2hhciogd3hFbXB0eVN0cmluZzsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hGb250TGlzdCA6IHB1YmxpYyB3eExpc3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNz
SW5mbyBzbV9jbGFzc3d4Rm9udExpc3Q7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmd3hGb250TGlzdDo6c21fY2xhc3N3eEZvbnRMaXN0OyB9DQoNCnB1YmxpYzoN
CiAgICB3eEZvbnRMaXN0KCkgeyB9DQogICAgfnd4Rm9udExpc3QoKTsNCg0KICAgIHZvaWQgQWRk
Rm9udCh3eEZvbnQgKmZvbnQpOw0KICAgIHZvaWQgUmVtb3ZlRm9udCh3eEZvbnQgKmZvbnQpOw0K
ICAgIHd4Rm9udCAqRmluZE9yQ3JlYXRlRm9udChpbnQgcG9pbnRTaXplLCBpbnQgZmFtaWx5LCBp
bnQgc3R5bGUsIGludCB3ZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5kZXJsaW5lID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJp
bmcmIGZhY2UgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
eEZvbnRFbmNvZGluZyBlbmNvZGluZyA9IHd4Rk9OVEVOQ09ESU5HX0RFRkFVTFQpOw0KfTsNCg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDb2xvdXJEYXRhYmFzZSA6IHB1Ymxp
YyB3eExpc3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Q29s
b3VyRGF0YWJhc2U7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAm
d3hDb2xvdXJEYXRhYmFzZTo6c21fY2xhc3N3eENvbG91ckRhdGFiYXNlOyB9DQoNCnB1YmxpYzoN
CiAgICB3eENvbG91ckRhdGFiYXNlKGludCB0eXBlKTsNCiAgICB+d3hDb2xvdXJEYXRhYmFzZSgp
IDsNCg0KDQogICAgd3hDb2xvdXIgKkZpbmRDb2xvdXIoY29uc3Qgd3hTdHJpbmcmIGNvbG91cikg
Ow0KICAgIHd4U3RyaW5nIEZpbmROYW1lKGNvbnN0IHd4Q29sb3VyJiBjb2xvdXIpIGNvbnN0Ow0K
ICAgIHZvaWQgSW5pdGlhbGl6ZSgpOw0KfTsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hCaXRtYXBMaXN0IDogcHVibGljIHd4TGlzdA0Kew0KICAgIHB1YmxpYzogc3RhdGlj
IHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hCaXRtYXBMaXN0OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJnd4Qml0bWFwTGlzdDo6c21fY2xhc3N3eEJpdG1hcExpc3Q7
IH0NCg0KcHVibGljOg0KICAgIHd4Qml0bWFwTGlzdCgpOw0KICAgIH53eEJpdG1hcExpc3QoKTsN
Cg0KICAgIHZvaWQgQWRkQml0bWFwKHd4Qml0bWFwICpiaXRtYXApOw0KICAgIHZvaWQgUmVtb3Zl
Qml0bWFwKHd4Qml0bWFwICpiaXRtYXApOw0KfTsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hSZXNvdXJjZUNhY2hlOiBwdWJsaWMgd3hMaXN0DQp7DQpwdWJsaWM6DQogICAg
d3hSZXNvdXJjZUNhY2hlKCkgeyB9DQogICAgd3hSZXNvdXJjZUNhY2hlKGNvbnN0IHVuc2lnbmVk
IGludCBrZXlUeXBlKSA6IHd4TGlzdChrZXlUeXBlKSB7IH0NCiAgICB+d3hSZXNvdXJjZUNhY2hl
KCk7DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3
eFJlc291cmNlQ2FjaGU7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biAmd3hSZXNvdXJjZUNhY2hlOjpzbV9jbGFzc3d4UmVzb3VyY2VDYWNoZTsgfQ0KfTsNCg0KDQoN
Cg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFBlbkxpc3QqIHd4VGhl
UGVuTGlzdDsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEJydXNoTGlzdCog
d3hUaGVCcnVzaExpc3Q7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hGb250
TGlzdCogd3hUaGVGb250TGlzdDsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3
eEJpdG1hcExpc3QqIHd4VGhlQml0bWFwTGlzdDsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSBleHRlcm4gd3hGb250KiB3eE5PUk1BTF9GT05UOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgZXh0ZXJuIHd4Rm9udCogd3hTTUFMTF9GT05UOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgZXh0ZXJuIHd4Rm9udCogd3hJVEFMSUNfRk9OVDsNCl9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIGV4dGVybiB3eEZvbnQqIHd4U1dJU1NfRk9OVDsNCg0KX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgZXh0ZXJuIHd4UGVuKiB3eFJFRF9QRU47DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSBleHRlcm4gd3hQZW4qIHd4Q1lBTl9QRU47DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSBleHRlcm4gd3hQZW4qIHd4R1JFRU5fUEVOOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
ZXh0ZXJuIHd4UGVuKiB3eEJMQUNLX1BFTjsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4
dGVybiB3eFBlbiogd3hXSElURV9QRU47DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRl
cm4gd3hQZW4qIHd4VFJBTlNQQVJFTlRfUEVOOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
ZXh0ZXJuIHd4UGVuKiB3eEJMQUNLX0RBU0hFRF9QRU47DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSBleHRlcm4gd3hQZW4qIHd4R1JFWV9QRU47DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSBleHRlcm4gd3hQZW4qIHd4TUVESVVNX0dSRVlfUEVOOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgZXh0ZXJuIHd4UGVuKiB3eExJR0hUX0dSRVlfUEVOOw0KDQpfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSBleHRlcm4gd3hCcnVzaCogd3hCTFVFX0JSVVNIOw0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgZXh0ZXJuIHd4QnJ1c2gqIHd4R1JFRU5fQlJVU0g7DQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSBleHRlcm4gd3hCcnVzaCogd3hXSElURV9CUlVTSDsNCl9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEJydXNoKiB3eEJMQUNLX0JSVVNIOw0KX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4QnJ1c2gqIHd4R1JFWV9CUlVTSDsNCl9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEJydXNoKiB3eE1FRElVTV9HUkVZX0JSVVNIOw0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4QnJ1c2gqIHd4TElHSFRfR1JFWV9C
UlVTSDsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEJydXNoKiB3eFRSQU5T
UEFSRU5UX0JSVVNIOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4QnJ1c2gq
IHd4Q1lBTl9CUlVTSDsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEJydXNo
KiB3eFJFRF9CUlVTSDsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q29s
b3VyKiB3eEJMQUNLOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q29sb3Vy
KiB3eFdISVRFOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q29sb3VyKiB3
eFJFRDsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eENvbG91ciogd3hCTFVF
Ow0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q29sb3VyKiB3eEdSRUVOOw0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q29sb3VyKiB3eENZQU47DQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hDb2xvdXIqIHd4TElHSFRfR1JFWTsNCg0K
DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hCaXRtYXAgd3hOdWxsQml0bWFw
Ow0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4SWNvbiB3eE51bGxJY29uOw0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q3Vyc29yIHd4TnVsbEN1cnNvcjsN
Cl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFBlbiB3eE51bGxQZW47DQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gd3hCcnVzaCB3eE51bGxCcnVzaDsNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFBhbGV0dGUgd3hOdWxsUGFsZXR0ZTsNCl9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEZvbnQgd3hOdWxsRm9udDsNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eENvbG91ciB3eE51bGxDb2xvdXI7DQoNCg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q3Vyc29yKiB3eFNUQU5EQVJEX0NV
UlNPUjsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eEN1cnNvciogd3hIT1VS
R0xBU1NfQ1VSU09SOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4Q3Vyc29y
KiB3eENST1NTX0NVUlNPUjsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4
Q29sb3VyRGF0YWJhc2UqIHd4VGhlQ29sb3VyRGF0YWJhc2U7DQoNCl9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFyKiB3eFBhbmVsTmFtZVN0cjsNCg0KX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IHd4U2l6ZSB3eERlZmF1bHRTaXplOw0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IHd4UG9pbnQgd3hEZWZhdWx0UG9z
aXRpb247DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4TGlzdCB3eFBl
bmRpbmdEZWxldGU7DQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eEluaXRpYWxpemVTdG9ja09iamVjdHMoKTsNCmV4dGVybiB2b2lkIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4SW5pdGlhbGl6ZVN0b2NrTGlzdHMoKTsNCmV4dGVybiB2b2lk
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RGVsZXRlU3RvY2tPYmplY3RzKCk7DQpleHRl
cm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eERlbGV0ZVN0b2NrTGlzdHMoKTsN
Cg0KDQpleHRlcm4gYm9vbCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENvbG91ckRpc3Bs
YXkoKTsNCg0KDQpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RGlzcGxh
eURlcHRoKCk7DQoNCg0KDQpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eERpc3BsYXlTaXplKGludCAqd2lkdGgsIGludCAqaGVpZ2h0KTsNCmV4dGVybiB3eFNpemUgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hHZXREaXNwbGF5U2l6ZSgpOw0KDQoNCmV4dGVybiB2
b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U2V0Q3Vyc29yKGNvbnN0IHd4Q3Vyc29y
JiBjdXJzb3IpOw0KIyAyNCAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIiAyDQojIDEgIi4uLy4u
L2luY2x1ZGUvd3gvY3Vyc29yLmgiIDENCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21z
dy9jdXJzb3IuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvY3Vyc29yLmgiDQojcHJh
Z21hIGludGVyZmFjZSAiY3Vyc29yLmgiDQojIDMxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9jdXJz
b3IuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvZ2RpaW1hZ2UuaCIgMQ0KIyAyMCAiLi4v
Li4vaW5jbHVkZS93eC9tc3cvZ2RpaW1hZ2UuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJnZGlpbWFn
ZS5oIg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hHRElJ
bWFnZVJlZkRhdGE7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEdESUltYWdl
SGFuZGxlcjsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R0RJSW1hZ2U7DQoN
Cg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hHRElJbWFnZVJlZkRh
dGEgOiBwdWJsaWMgd3hHRElSZWZEYXRhDQp7DQpwdWJsaWM6DQogICAgd3hHRElJbWFnZVJlZkRh
dGEoKQ0KICAgIHsNCiAgICAgICAgbV93aWR0aCA9IG1faGVpZ2h0ID0gbV9kZXB0aCA9IDA7DQoN
CiAgICAgICAgbV9oYW5kbGUgPSAwOw0KDQoNCg0KDQogICAgfQ0KDQoNCiAgICBib29sIElzT2so
KSBjb25zdCB7IHJldHVybiBtX2hhbmRsZSAhPSAwOyB9DQoNCiAgICB2b2lkIFNldFNpemUoaW50
IHcsIGludCBoKSB7IG1fd2lkdGggPSB3OyBtX2hlaWdodCA9IGg7IH0NCg0KDQogICAgdmlydHVh
bCB2b2lkIEZyZWUoKSA9IDA7DQoNCg0KDQoNCiAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7DQoN
Cg0KICAgIGludCBtX2RlcHRoOw0KDQoNCiAgICB1bmlvbg0KICAgIHsNCiAgICAgICAgV1hIQU5E
TEUgbV9oYW5kbGU7DQogICAgICAgIFdYSEJJVE1BUCBtX2hCaXRtYXA7DQogICAgICAgIFdYSElD
T04gbV9oSWNvbjsNCiAgICAgICAgV1hIQ1VSU09SIG1faEN1cnNvcjsNCiAgICB9Ow0KIyA4MSAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvZ2RpaW1hZ2UuaCINCn07DQoNCg0KDQoNCg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hHRElJbWFnZUhhbmRsZXIgOiBwdWJsaWMgd3hPYmpl
Y3QNCnsNCnB1YmxpYzoNCg0KICAgIHd4R0RJSW1hZ2VIYW5kbGVyKCkgeyBtX3R5cGUgPSB3eEJJ
VE1BUF9UWVBFX0lOVkFMSUQ7IH0NCiAgICB3eEdESUltYWdlSGFuZGxlcihjb25zdCB3eFN0cmlu
ZyYgbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgZXh0LA0KICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgdHlwZSkNCiAgICAgICAgOiBtX25hbWUobmFtZSksIG1f
ZXh0ZW5zaW9uKGV4dCkNCiAgICB7DQogICAgICAgIG1fdHlwZSA9IHR5cGU7DQogICAgfQ0KDQoN
CiAgICB2b2lkIFNldE5hbWUoY29uc3Qgd3hTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsg
fQ0KICAgIHZvaWQgU2V0RXh0ZW5zaW9uKGNvbnN0IHd4U3RyaW5nJiBleHQpIHsgbV9leHRlbnNp
b24gPSBleHQ7IH0NCiAgICB2b2lkIFNldFR5cGUobG9uZyB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7
IH0NCg0KICAgIHd4U3RyaW5nIEdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0NCiAg
ICB3eFN0cmluZyBHZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvbjsgfQ0K
ICAgIGxvbmcgR2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQ0KDQoNCiAgICB2aXJ0
dWFsIGJvb2wgQ3JlYXRlKHd4R0RJSW1hZ2UgKmltYWdlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqZGF0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MsDQogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZXB0aCA9IDEp
ID0gMDsNCiAgICB2aXJ0dWFsIGJvb2wgTG9hZCh3eEdESUltYWdlICppbWFnZSwNCiAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSwNCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGZsYWdzLA0KICAgICAgICAgICAgICAgICAgICAgIGludCBkZXNpcmVkV2lkdGgsIGlu
dCBkZXNpcmVkSGVpZ2h0KSA9IDA7DQogICAgdmlydHVhbCBib29sIFNhdmUod3hHRElJbWFnZSAq
aW1hZ2UsDQogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUsDQogICAg
ICAgICAgICAgICAgICAgICAgaW50IHR5cGUpID0gMDsNCg0KcHJvdGVjdGVkOg0KICAgIHd4U3Ry
aW5nIG1fbmFtZTsNCiAgICB3eFN0cmluZyBtX2V4dGVuc2lvbjsNCiAgICBsb25nIG1fdHlwZTsN
Cn07DQoNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R0RJ
SW1hZ2UgOiBwdWJsaWMgd3hHRElPYmplY3QNCnsNCnB1YmxpYzoNCg0KICAgIHN0YXRpYyB3eExp
c3QmIEdldEhhbmRsZXJzKCkgeyByZXR1cm4gbXNfaGFuZGxlcnM7IH0NCg0KICAgIHN0YXRpYyB2
b2lkIEFkZEhhbmRsZXIod3hHRElJbWFnZUhhbmRsZXIgKmhhbmRsZXIpOw0KICAgIHN0YXRpYyB2
b2lkIEluc2VydEhhbmRsZXIod3hHRElJbWFnZUhhbmRsZXIgKmhhbmRsZXIpOw0KICAgIHN0YXRp
YyBib29sIFJlbW92ZUhhbmRsZXIoY29uc3Qgd3hTdHJpbmcmIG5hbWUpOw0KDQogICAgc3RhdGlj
IHd4R0RJSW1hZ2VIYW5kbGVyICpGaW5kSGFuZGxlcihjb25zdCB3eFN0cmluZyYgbmFtZSk7DQog
ICAgc3RhdGljIHd4R0RJSW1hZ2VIYW5kbGVyICpGaW5kSGFuZGxlcihjb25zdCB3eFN0cmluZyYg
ZXh0ZW5zaW9uLCBsb25nIHR5cGUpOw0KICAgIHN0YXRpYyB3eEdESUltYWdlSGFuZGxlciAqRmlu
ZEhhbmRsZXIobG9uZyB0eXBlKTsNCg0KICAgIHN0YXRpYyB2b2lkIEluaXRTdGFuZGFyZEhhbmRs
ZXJzKCk7DQogICAgc3RhdGljIHZvaWQgQ2xlYW5VcEhhbmRsZXJzKCk7DQoNCg0KICAgIHd4R0RJ
SW1hZ2VSZWZEYXRhICpHZXRHRElJbWFnZURhdGEoKSBjb25zdA0KICAgICAgICB7IHJldHVybiAo
d3hHRElJbWFnZVJlZkRhdGEgKiltX3JlZkRhdGE7IH0NCg0KDQogICAgdm9pZCBFbnN1cmVIYXNE
YXRhKCkgeyBpZiAoIElzTnVsbCgpICkgbV9yZWZEYXRhID0gQ3JlYXRlRGF0YSgpOyB9DQoNCg0K
ICAgIFdYSEFORExFIEdldEhhbmRsZSgpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIElzTnVsbCgp
ID8gMCA6IEdldEdESUltYWdlRGF0YSgpLT5tX2hhbmRsZTsgfQ0KICAgIHZvaWQgU2V0SGFuZGxl
KFdYSEFORExFIGhhbmRsZSkNCiAgICAgICAgeyBFbnN1cmVIYXNEYXRhKCk7IEdldEdESUltYWdl
RGF0YSgpLT5tX2hhbmRsZSA9IGhhbmRsZTsgfQ0KDQogICAgYm9vbCBPaygpIGNvbnN0IHsgcmV0
dXJuIEdldEhhbmRsZSgpICE9IDA7IH0NCg0KICAgIGludCBHZXRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIElzTnVsbCgpID8gMCA6IEdldEdESUltYWdlRGF0YSgpLT5tX3dpZHRoOyB9DQogICAgaW50
IEdldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIElzTnVsbCgpID8gMCA6IEdldEdESUltYWdlRGF0
YSgpLT5tX2hlaWdodDsgfQ0KICAgIGludCBHZXREZXB0aCgpIGNvbnN0IHsgcmV0dXJuIElzTnVs
bCgpID8gMCA6IEdldEdESUltYWdlRGF0YSgpLT5tX2RlcHRoOyB9DQoNCiAgICB2b2lkIFNldFdp
ZHRoKGludCB3KSB7IEVuc3VyZUhhc0RhdGEoKTsgR2V0R0RJSW1hZ2VEYXRhKCktPm1fd2lkdGgg
PSB3OyB9DQogICAgdm9pZCBTZXRIZWlnaHQoaW50IGgpIHsgRW5zdXJlSGFzRGF0YSgpOyBHZXRH
RElJbWFnZURhdGEoKS0+bV9oZWlnaHQgPSBoOyB9DQogICAgdm9pZCBTZXREZXB0aChpbnQgZCkg
eyBFbnN1cmVIYXNEYXRhKCk7IEdldEdESUltYWdlRGF0YSgpLT5tX2RlcHRoID0gZDsgfQ0KDQog
ICAgdm9pZCBTZXRTaXplKGludCB3LCBpbnQgaCkNCiAgICB7DQogICAgICAgIEVuc3VyZUhhc0Rh
dGEoKTsNCiAgICAgICAgR2V0R0RJSW1hZ2VEYXRhKCktPlNldFNpemUodywgaCk7DQogICAgfQ0K
ICAgIHZvaWQgU2V0U2l6ZShjb25zdCB3eFNpemUmIHNpemUpIHsgU2V0U2l6ZShzaXplLngsIHNp
emUueSk7IH0NCg0KDQogICAgYm9vbCBGcmVlUmVzb3VyY2UoYm9vbCBmb3JjZSA9IDApOw0KICAg
IHZpcnR1YWwgV1hIQU5ETEUgR2V0UmVzb3VyY2VIYW5kbGUoKTsNCg0KcHJvdGVjdGVkOg0KDQog
ICAgdmlydHVhbCB3eEdESUltYWdlUmVmRGF0YSAqQ3JlYXRlRGF0YSgpIGNvbnN0ID0gMDsNCg0K
ICAgIHN0YXRpYyB3eExpc3QgbXNfaGFuZGxlcnM7DQp9Ow0KIyAzMiAiLi4vLi4vaW5jbHVkZS93
eC9tc3cvY3Vyc29yLmgiIDINCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB3eEN1cnNvclJlZkRhdGEgOiBwdWJsaWMgd3hHRElJbWFnZVJlZkRhdGENCnsNCnB1Ymxp
YzoNCiAgICB3eEN1cnNvclJlZkRhdGEoKTsNCiAgICB2aXJ0dWFsIH53eEN1cnNvclJlZkRhdGEo
KSB7IEZyZWUoKTsgfQ0KDQogICAgdmlydHVhbCB2b2lkIEZyZWUoKTsNCg0KDQpwdWJsaWM6DQog
ICAgYm9vbCBtX2Rlc3Ryb3lDdXJzb3I7DQp9Ow0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4Q3Vyc29yIDogcHVibGljIHd4R0RJSW1hZ2UNCnsNCnB1YmxpYzoNCiAgICB3
eEN1cnNvcigpOw0KDQoNCiAgICB3eEN1cnNvcihjb25zdCB3eEN1cnNvciYgY3Vyc29yKSB7IFJl
ZihjdXJzb3IpOyB9DQoNCiAgICB3eEN1cnNvcihjb25zdCBjaGFyIGJpdHNbXSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LA0KICAgICAgICAgICAgIGludCBob3RTcG90WCA9IC0xLCBpbnQgaG90U3Bv
dFkgPSAtMSwNCiAgICAgICAgICAgICBjb25zdCBjaGFyIG1hc2tCaXRzW10gPSBfX251bGwpOw0K
ICAgIHd4Q3Vyc29yKGNvbnN0IHd4U3RyaW5nJiBuYW1lLA0KICAgICAgICAgICAgIGxvbmcgZmxh
Z3MgPSB3eEJJVE1BUF9UWVBFX0NVUl9SRVNPVVJDRSwNCiAgICAgICAgICAgICBpbnQgaG90U3Bv
dFggPSAwLCBpbnQgaG90U3BvdFkgPSAwKTsNCiAgICB3eEN1cnNvcihpbnQgY3Vyc29yX3R5cGUp
Ow0KICAgIHZpcnR1YWwgfnd4Q3Vyc29yKCk7DQoNCiAgICB3eEN1cnNvciYgb3BlcmF0b3IgPSAo
Y29uc3Qgd3hDdXJzb3ImIGN1cnNvcikgeyBpZiAoKnRoaXMgPT0gY3Vyc29yKSByZXR1cm4gKCp0
aGlzKTsgUmVmKGN1cnNvcik7IHJldHVybiAqdGhpczsgfQ0KICAgIGJvb2wgb3BlcmF0b3IgPT0g
KGNvbnN0IHd4Q3Vyc29yJiBjdXJzb3IpIGNvbnN0IHsgcmV0dXJuIG1fcmVmRGF0YSA9PSBjdXJz
b3IubV9yZWZEYXRhOyB9DQogICAgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgd3hDdXJzb3ImIGN1
cnNvcikgY29uc3QgeyByZXR1cm4gbV9yZWZEYXRhICE9IGN1cnNvci5tX3JlZkRhdGE7IH0NCg0K
ICAgIHZvaWQgU2V0SENVUlNPUihXWEhDVVJTT1IgY3Vyc29yKSB7IFNldEhhbmRsZSgoV1hIQU5E
TEUpY3Vyc29yKTsgfQ0KICAgIFdYSENVUlNPUiBHZXRIQ1VSU09SKCkgY29uc3QgeyByZXR1cm4g
KFdYSENVUlNPUilHZXRIYW5kbGUoKTsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB3eEdE
SUltYWdlUmVmRGF0YSAqQ3JlYXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG5ldyB3eEN1cnNvclJl
ZkRhdGE7IH0NCg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9j
bGFzc3d4Q3Vyc29yOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
Jnd4Q3Vyc29yOjpzbV9jbGFzc3d4Q3Vyc29yOyB9DQp9Ow0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4
L2N1cnNvci5oIiAyDQojIDIwICIuLi8uLi9pbmNsdWRlL3d4L2N1cnNvci5oIg0KIyAxICIuLi8u
Li9pbmNsdWRlL3d4L3V0aWxzLmgiIDENCiMgMjAgIi4uLy4uL2luY2x1ZGUvd3gvdXRpbHMuaCIN
CiNwcmFnbWEgaW50ZXJmYWNlICJ1dGlscy5oIg0KDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVk
ZS93eC9maWxlZm4uaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9maWxlZm4uaCINCiNwcmFn
bWEgaW50ZXJmYWNlICJmaWxlZm4uaCINCiMgNTEgIi4uLy4uL2luY2x1ZGUvd3gvZmlsZWZuLmgi
DQpjb25zdCBvZmZfdCB3eEludmFsaWRPZmZzZXQgPSAob2ZmX3QpLTE7DQoNCg0KZW51bSB3eFNl
ZWtNb2RlDQp7DQogIHd4RnJvbVN0YXJ0LA0KICB3eEZyb21DdXJyZW50LA0KICB3eEZyb21FbmQN
Cn07DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFyKiB3eEVt
cHR5U3RyaW5nOw0KIyAxNDAgIi4uLy4uL2luY2x1ZGUvd3gvZmlsZWZuLmgiDQpfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4RmlsZUV4aXN0cyhjb25zdCB3eFN0cmluZyYgZmlsZW5h
bWUpOw0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eFBhdGhFeGlzdHMo
Y29uc3QgY2hhciAqcHN6UGF0aE5hbWUpOw0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSBib29sIHd4SXNBYnNvbHV0ZVBhdGgoY29uc3Qgd3hTdHJpbmcmIGZpbGVuYW1lKTsNCg0K
DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGNoYXIqIHd4RmlsZU5hbWVGcm9tUGF0aChj
aGFyICpwYXRoKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4RmlsZU5h
bWVGcm9tUGF0aChjb25zdCB3eFN0cmluZyYgcGF0aCk7DQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFN0cmluZyB3eFBhdGhPbmx5KGNvbnN0IHd4U3RyaW5nJiBwYXRoKTsNCg0K
DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4UmVhbFBhdGgoY29uc3Qg
d3hTdHJpbmcmIHBhdGgpOw0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB2b2lkIHd4RG9z
MlVuaXhGaWxlbmFtZShjaGFyICpzKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB2
b2lkIHd4VW5peDJEb3NGaWxlbmFtZShjaGFyICpzKTsNCiMgMTgwICIuLi8uLi9pbmNsdWRlL3d4
L2ZpbGVmbi5oIg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCB3eFN0cmlwRXh0ZW5z
aW9uKGNoYXIgKmJ1ZmZlcik7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB2b2lkIHd4U3Ry
aXBFeHRlbnNpb24od3hTdHJpbmcmIGJ1ZmZlcik7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgY2hhciogd3hHZXRUZW1wRmlsZU5hbWUoY29uc3Qgd3hTdHJpbmcmIHByZWZpeCwgY2hh
ciAqYnVmID0gKGNoYXIgKikgX19udWxsKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJv
b2wgd3hHZXRUZW1wRmlsZU5hbWUoY29uc3Qgd3hTdHJpbmcmIHByZWZpeCwgd3hTdHJpbmcmIGJ1
Zik7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgY2hhciogd3hFeHBhbmRQYXRoKGNo
YXIgKmRlc3QsIGNvbnN0IGNoYXIgKnBhdGgpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
Ym9vbCB3eEV4cGFuZFBhdGgod3hTdHJpbmcmIGRlc3QsIGNvbnN0IGNoYXIgKnBhdGgpOw0KDQoN
Cg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBjaGFyKiB3eENvbnRyYWN0UGF0aChjb25z
dCB3eFN0cmluZyYgZmlsZW5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHd4U3RyaW5nJiBlbnZuYW1lID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHVzZXIgPSB3eEVtcHR5U3RyaW5n
KTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBjaGFyKiB3eFJlYWxQYXRoKGNoYXIg
KnBhdGgpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGNoYXIqIHd4Q29weUFic29s
dXRlUGF0aChjb25zdCB3eFN0cmluZyYgcGF0aCk7DQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hTdHJpbmcgd3hGaW5kRmlyc3RGaWxlKGNvbnN0IGNoYXIgKnNwZWMsIGlu
dCBmbGFncyA9IDEpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJpbmcgd3hGaW5k
TmV4dEZpbGUoKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4SXNXaWxk
KGNvbnN0IHd4U3RyaW5nJiBwYXR0ZXJuKTsNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgYm9vbCB3eE1hdGNoV2lsZChjb25zdCB3eFN0cmluZyYgcGF0dGVybiwgY29uc3Qgd3hT
dHJpbmcmIHRleHQsIGJvb2wgZG90X3NwZWNpYWwgPSAxKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSBib29sIHd4Q29uY2F0RmlsZXMoY29uc3Qgd3hTdHJpbmcmIGZpbGUxLCBjb25z
dCB3eFN0cmluZyYgZmlsZTIsIGNvbnN0IHd4U3RyaW5nJiBmaWxlMyk7DQoNCg0KX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eENvcHlGaWxlKGNvbnN0IHd4U3RyaW5nJiBmaWxlMSwg
Y29uc3Qgd3hTdHJpbmcmIGZpbGUyKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBi
b29sIHd4UmVtb3ZlRmlsZShjb25zdCB3eFN0cmluZyYgZmlsZSk7DQoNCg0KX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgYm9vbCB3eFJlbmFtZUZpbGUoY29uc3Qgd3hTdHJpbmcmIGZpbGUxLCBj
b25zdCB3eFN0cmluZyYgZmlsZTIpOw0KDQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgY2hhciogd3hHZXRXb3JraW5nRGlyZWN0b3J5KGNoYXIgKmJ1ZiA9IChjaGFyICopIF9f
bnVsbCwgaW50IHN6ID0gMTAwMCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hT
dHJpbmcgd3hHZXRDd2QoKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4
U2V0V29ya2luZ0RpcmVjdG9yeShjb25zdCB3eFN0cmluZyYgZCk7DQoNCg0KX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgYm9vbCB3eE1rZGlyKGNvbnN0IHd4U3RyaW5nJiBkaXIsIGludCBwZXJt
ID0gMDc3Nyk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eFJtZGlyKGNv
bnN0IHd4U3RyaW5nJiBkaXIsIGludCBmbGFncyA9IDApOw0KIyAyNzkgIi4uLy4uL2luY2x1ZGUv
d3gvZmlsZWZuLmgiDQppbmxpbmUgYm9vbCB3eElzUGF0aFNlcGFyYXRvcihjaGFyIGMpDQogIHsg
cmV0dXJuIGMgPT0gJ1xcJyB8fCBjID09ICcvJzsgfQ0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIGJvb2wgd3hFbmRzV2l0aFBhdGhTZXBhcmF0b3IoY29uc3QgY2hhciAqcHN6RmlsZU5h
bWUpOw0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCB3eFNwbGl0UGF0aChj
b25zdCBjaGFyICpwc3pGaWxlTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hT
dHJpbmcgKnBzdHJQYXRoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eFN0cmluZyAq
cHN0ck5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4U3RyaW5nICpwc3RyRXh0
KTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4RmluZEZpbGVJblBhdGgo
d3hTdHJpbmcgKnBTdHIsIGNvbnN0IGNoYXIgKnBzelBhdGgsIGNvbnN0IGNoYXIgKnBzekZpbGUp
Ow0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJpbmcgd3hHZXRPU0RpcmVj
dG9yeSgpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHRpbWVfdCB3eEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IHd4U3RyaW5nJiBmaWxlbmFtZSk7DQoNCg0KDQoNCg0KDQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFBhdGhMaXN0IDogcHVibGljIHd4U3RyaW5n
TGlzdA0Kew0KcHVibGljOg0KDQogICAgdm9pZCBBZGRFbnZMaXN0KGNvbnN0IHd4U3RyaW5nJiBl
bnZWYXJpYWJsZSk7DQoNCiAgICB2b2lkIEFkZChjb25zdCB3eFN0cmluZyYgcGF0aCk7DQoNCiAg
ICB3eE5vZGUgKkFkZChjb25zdCBjaGFyICpzKSB7IHJldHVybiB3eFN0cmluZ0xpc3Q6OkFkZChz
KTsgfQ0KDQogICAgd3hTdHJpbmcgRmluZFZhbGlkUGF0aChjb25zdCB3eFN0cmluZyYgZmlsZW5h
bWUpOw0KDQoNCiAgICB3eFN0cmluZyBGaW5kQWJzb2x1dGVWYWxpZFBhdGgoY29uc3Qgd3hTdHJp
bmcmIGZpbGVuYW1lKTsNCg0KICAgIHZvaWQgRW5zdXJlRmlsZUFjY2Vzc2libGUoY29uc3Qgd3hT
dHJpbmcmIHBhdGgpOw0KDQogICAgYm9vbCBNZW1iZXIoY29uc3Qgd3hTdHJpbmcmIHBhdGgpOw0K
DQpwcml2YXRlOg0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hQYXRo
TGlzdDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFBhdGhM
aXN0OjpzbV9jbGFzc3d4UGF0aExpc3Q7IH0NCn07DQojIDI3ICIuLi8uLi9pbmNsdWRlL3d4L3V0
aWxzLmgiIDINCiMgMzkgIi4uLy4uL2luY2x1ZGUvd3gvdXRpbHMuaCINCmNsYXNzIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4UHJvY2VzczsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4RnJhbWU7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFdpbmRv
dzsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4V2luZG93TGlzdDsNCiMgNjIg
Ii4uLy4uL2luY2x1ZGUvd3gvdXRpbHMuaCINCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4
dGVybiBjaGFyKiB3eEJ1ZmZlcjsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBjaGFy
KiBjb3B5c3RyaW5nKGNvbnN0IGNoYXIgKnMpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIGJvb2wgU3RyaW5nTWF0Y2goY2hhciAqb25lLCBjaGFyICp0d28sIGJvb2wgc3ViU3RyaW5n
ID0gMSwgYm9vbCBleGFjdCA9IDApOw0KIyA3OCAiLi4vLi4vaW5jbHVkZS93eC91dGlscy5oIg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCB3eEJlbGwoKTsNCg0KDQpfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eFN0cmluZyB3eEdldE9zRGVzY3JpcHRpb24oKTsNCg0KDQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBpbnQgd3hHZXRPc1ZlcnNpb24oaW50ICptYWpvclZzbiA9
IChpbnQgKikgX19udWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbWlu
b3JWc24gPSAoaW50ICopIF9fbnVsbCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hTdHJpbmcgd3hOb3coKTsNCg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBi
b29sIHd4U2V0RGV0ZWN0YWJsZUF1dG9SZXBlYXQoIGJvb2wgZmxhZyApOw0KDQoNCg0KDQoNCg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgbG9uZyB3eE5ld0lkKCk7DQoNCg0KDQoNCg0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCB3eFJlZ2lzdGVySWQobG9uZyBpZCk7DQoNCg0K
DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgbG9uZyB3eEdldEN1cnJlbnRJZCgpOw0K
DQoNCg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hh
ciogd3hGbG9hdFRvU3RyaW5nU3RyOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJu
IGNvbnN0IGNoYXIqIHd4RG91YmxlVG9TdHJpbmdTdHI7DQoNCl9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHZvaWQgU3RyaW5nVG9GbG9hdChjaGFyICpzLCBmbG9hdCAqbnVtYmVyKTsNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGNoYXIqIEZsb2F0VG9TdHJpbmcoZmxvYXQgbnVtYmVyLCBj
b25zdCBjaGFyICpmbXQgPSB3eEZsb2F0VG9TdHJpbmdTdHIpOw0KX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgdm9pZCBTdHJpbmdUb0RvdWJsZShjaGFyICpzLCBkb3VibGUgKm51bWJlcik7DQpf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBjaGFyKiBEb3VibGVUb1N0cmluZyhkb3VibGUgbnVt
YmVyLCBjb25zdCBjaGFyICpmbXQgPSB3eERvdWJsZVRvU3RyaW5nU3RyKTsNCl9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHZvaWQgU3RyaW5nVG9JbnQoY2hhciAqcywgaW50ICpudW1iZXIpOw0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCBTdHJpbmdUb0xvbmcoY2hhciAqcywgbG9u
ZyAqbnVtYmVyKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGNoYXIqIEludFRvU3RyaW5n
KGludCBudW1iZXIpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgY2hhciogTG9uZ1RvU3Ry
aW5nKGxvbmcgbnVtYmVyKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBpbnQgd3hI
ZXhUb0RlYyhjb25zdCB3eFN0cmluZyYgYnVmKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB2b2lkIHd4RGVjVG9IZXgoaW50IGRlYywgY2hhciAqYnVmKTsNCl9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4RGVjVG9IZXgoaW50IGRlYyk7DQoNCg0KDQoNCg0KDQpf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBsb25nIHd4RXhlY3V0ZShjaGFyICoqYXJndiwgYm9v
bCBzeW5jID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4UHJvY2VzcyAqcHJvY2Vz
cyA9ICh3eFByb2Nlc3MgKikgX19udWxsKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGxv
bmcgd3hFeGVjdXRlKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kLCBib29sIHN5bmMgPSAwLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3hQcm9jZXNzICpwcm9jZXNzID0gKHd4UHJvY2VzcyAq
KSBfX251bGwpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGxvbmcgd3hFeGVjdXRl
KGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hB
cnJheVN0cmluZyYgb3V0cHV0KTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBsb25n
IHd4RXhlY3V0ZShjb25zdCB3eFN0cmluZyYgY29tbWFuZCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHd4QXJyYXlTdHJpbmcmIG91dHB1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHd4QXJyYXlTdHJpbmcmIGVycm9yKTsNCg0KZW51bSB3eFNpZ25hbA0Kew0KICAgIHd4U0lHTk9O
RSA9IDAsDQogICAgd3hTSUdIVVAsDQogICAgd3hTSUdJTlQsDQogICAgd3hTSUdRVUlULA0KICAg
IHd4U0lHSUxMLA0KICAgIHd4U0lHVFJBUCwNCiAgICB3eFNJR0FCUlQsDQogICAgd3hTSUdJT1Qg
PSB3eFNJR0FCUlQsDQogICAgd3hTSUdFTVQsDQogICAgd3hTSUdGUEUsDQogICAgd3hTSUdLSUxM
LA0KICAgIHd4U0lHQlVTLA0KICAgIHd4U0lHU0VHViwNCiAgICB3eFNJR1NZUywNCiAgICB3eFNJ
R1BJUEUsDQogICAgd3hTSUdBTFJNLA0KICAgIHd4U0lHVEVSTQ0KDQoNCn07DQoNCg0KX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgaW50IHd4S2lsbChsb25nIHBpZCwgd3hTaWduYWwgc2lnID0g
d3hTSUdURVJNKTsNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hTaGVs
bChjb25zdCB3eFN0cmluZyYgY29tbWFuZCA9IHd4RW1wdHlTdHJpbmcpOw0KDQoNCg0KX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eFNoZWxsKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5k
LCB3eEFycmF5U3RyaW5nJiBvdXRwdXQpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHZvaWQgd3hTbGVlcChpbnQgblNlY3MpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHZvaWQgd3hVc2xlZXAodW5zaWduZWQgbG9uZyBtaWxsaXNlY29uZHMpOw0KDQoNCl9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIGxvbmcgd3hHZXRGcmVlTWVtb3J5KCk7DQoNCg0KX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eEhhbmRsZUZhdGFsRXhjZXB0aW9ucyhib29sIGRvaXQg
PSAxKTsNCiMgMjEyICIuLi8uLi9pbmNsdWRlL3d4L3V0aWxzLmgiDQpfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSBib29sIHd4R2V0RW1haWxBZGRyZXNzKGNoYXIgKmJ1ZiwgaW50IG1heFNpemUp
Ow0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJpbmcgd3hHZXRFbWFpbEFkZHJlc3Mo
KTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4R2V0SG9zdE5hbWUoY2hh
ciAqYnVmLCBpbnQgbWF4U2l6ZSk7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFN0cmlu
ZyB3eEdldEhvc3ROYW1lKCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJp
bmcgd3hHZXRGdWxsSG9zdE5hbWUoKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wg
d3hHZXRGdWxsSG9zdE5hbWUoY2hhciAqYnVmLCBpbnQgbWF4U2l6ZSk7DQoNCg0KX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eEdldFVzZXJJZChjaGFyICpidWYsIGludCBtYXhTaXpl
KTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4R2V0VXNlcklkKCk7DQoN
Cg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgYm9vbCB3eEdldFVzZXJOYW1lKGNoYXIgKmJ1
ZiwgaW50IG1heFNpemUpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJpbmcgd3hH
ZXRVc2VyTmFtZSgpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4
R2V0SG9tZURpcigpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgY29uc3QgY2hhciogd3hH
ZXRIb21lRGlyKHd4U3RyaW5nICpwc3RyKTsNCg0KDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIGNoYXIqIHd4R2V0VXNlckhvbWUoY29uc3Qgd3hTdHJpbmcmIHVzZXIgPSB3eEVt
cHR5U3RyaW5nKTsNCiMgMjQ5ICIuLi8uLi9pbmNsdWRlL3d4L3V0aWxzLmgiDQpfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSBjaGFyKiB3eFN0cmlwTWVudUNvZGVzKGNoYXIgKmluLCBjaGFyICpv
dXQgPSAoY2hhciAqKSBfX251bGwpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdHJp
bmcgd3hTdHJpcE1lbnVDb2Rlcyhjb25zdCB3eFN0cmluZyYgc3RyKTsNCg0KDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEFjY2VsZXJhdG9yRW50cnk7DQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eEFjY2VsZXJhdG9yRW50cnkgKnd4R2V0QWNjZWxGcm9tU3RyaW5nKGNv
bnN0IHd4U3RyaW5nJiBsYWJlbCk7DQojIDI2NCAiLi4vLi4vaW5jbHVkZS93eC91dGlscy5oIg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3cqIHd4RmluZFdpbmRvd0J5TGFiZWwo
Y29uc3Qgd3hTdHJpbmcmIHRpdGxlLCB3eFdpbmRvdyAqcGFyZW50ID0gKHd4V2luZG93ICopIF9f
bnVsbCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3cqIHd4RmluZFdp
bmRvd0J5TmFtZShjb25zdCB3eFN0cmluZyYgbmFtZSwgd3hXaW5kb3cgKnBhcmVudCA9ICh3eFdp
bmRvdyAqKSBfX251bGwpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGludCB3eEZp
bmRNZW51SXRlbUlkKHd4RnJhbWUgKmZyYW1lLCBjb25zdCB3eFN0cmluZyYgbWVudVN0cmluZywg
Y29uc3Qgd3hTdHJpbmcmIGl0ZW1TdHJpbmcpOw0KDQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgYm9vbCB3eFlpZWxkKCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgYm9vbCB3eFlpZWxkSWZOZWVkZWQoKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSBib29sIHd4U2FmZVlpZWxkKHd4V2luZG93ICp3aW4gPSBfX251bGwpOw0KDQoNCl9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHZvaWQgd3hFbmFibGVUb3BMZXZlbFdpbmRvd3MoYm9vbCBlbmFi
bGUgPSAxKTsNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hDaGVja0Zv
ckludGVycnVwdCh3eFdpbmRvdyAqd25kKTsNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB2b2lkIHd4Rmx1c2hFdmVudHMoKTsNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4V2luZG93RGlzYWJsZXINCnsNCnB1YmxpYzoNCiAgICB3eFdpbmRvd0Rpc2FibGVy
KHd4V2luZG93ICp3aW5Ub1NraXAgPSAod3hXaW5kb3cgKilfX251bGwpOw0KICAgIH53eFdpbmRv
d0Rpc2FibGVyKCk7DQoNCnByaXZhdGU6DQogICAgd3hXaW5kb3dMaXN0ICptX3dpbkRpc2FibGVk
Ow0KDQoNCg0KICAgIHd4V2luZG93ICptX3dpblRvcDsNCg0KfTsNCg0KDQoNCg0KDQoNCmNsYXNz
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Q3Vyc29yOw0KX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgZXh0ZXJuIHd4Q3Vyc29yKiB3eEhPVVJHTEFTU19DVVJTT1I7DQpfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB2b2lkIHd4QmVnaW5CdXN5Q3Vyc29yKHd4Q3Vyc29yICpjdXJzb3Ig
PSB3eEhPVVJHTEFTU19DVVJTT1IpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHZv
aWQgd3hFbmRCdXN5Q3Vyc29yKCk7DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgYm9v
bCB3eElzQnVzeSgpOw0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4QnVz
eUN1cnNvcg0Kew0KcHVibGljOg0KICAgIHd4QnVzeUN1cnNvcih3eEN1cnNvciogY3Vyc29yID0g
d3hIT1VSR0xBU1NfQ1VSU09SKQ0KICAgICAgICB7IHd4QmVnaW5CdXN5Q3Vyc29yKGN1cnNvcik7
IH0NCiAgICB+d3hCdXN5Q3Vyc29yKCkNCiAgICAgICAgeyB3eEVuZEJ1c3lDdXJzb3IoKTsgfQ0K
DQoNCg0KDQoNCg0KICAgIHN0YXRpYyBjb25zdCB3eEN1cnNvciAmR2V0U3RvcmVkQ3Vyc29yKCk7
DQogICAgc3RhdGljIGNvbnN0IHd4Q3Vyc29yIEdldEJ1c3lDdXJzb3IoKTsNCn07DQoNCg0KDQoN
Cg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hXcml0ZVJlc291cmNlKGNv
bnN0IHd4U3RyaW5nJiBzZWN0aW9uLCBjb25zdCB3eFN0cmluZyYgZW50cnksIGNvbnN0IHd4U3Ry
aW5nJiB2YWx1ZSwgY29uc3Qgd3hTdHJpbmcmIGZpbGUgPSB3eEVtcHR5U3RyaW5nKTsNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hXcml0ZVJlc291cmNlKGNvbnN0IHd4U3RyaW5n
JiBzZWN0aW9uLCBjb25zdCB3eFN0cmluZyYgZW50cnksIGZsb2F0IHZhbHVlLCBjb25zdCB3eFN0
cmluZyYgZmlsZSA9IHd4RW1wdHlTdHJpbmcpOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
Ym9vbCB3eFdyaXRlUmVzb3VyY2UoY29uc3Qgd3hTdHJpbmcmIHNlY3Rpb24sIGNvbnN0IHd4U3Ry
aW5nJiBlbnRyeSwgbG9uZyB2YWx1ZSwgY29uc3Qgd3hTdHJpbmcmIGZpbGUgPSB3eEVtcHR5U3Ry
aW5nKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hXcml0ZVJlc291cmNlKGNv
bnN0IHd4U3RyaW5nJiBzZWN0aW9uLCBjb25zdCB3eFN0cmluZyYgZW50cnksIGludCB2YWx1ZSwg
Y29uc3Qgd3hTdHJpbmcmIGZpbGUgPSB3eEVtcHR5U3RyaW5nKTsNCg0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgYm9vbCB3eEdldFJlc291cmNlKGNvbnN0IHd4U3RyaW5nJiBzZWN0aW9uLCBj
b25zdCB3eFN0cmluZyYgZW50cnksIGNoYXIgKip2YWx1ZSwgY29uc3Qgd3hTdHJpbmcmIGZpbGUg
PSB3eEVtcHR5U3RyaW5nKTsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGJvb2wgd3hHZXRS
ZXNvdXJjZShjb25zdCB3eFN0cmluZyYgc2VjdGlvbiwgY29uc3Qgd3hTdHJpbmcmIGVudHJ5LCBm
bG9hdCAqdmFsdWUsIGNvbnN0IHd4U3RyaW5nJiBmaWxlID0gd3hFbXB0eVN0cmluZyk7DQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBib29sIHd4R2V0UmVzb3VyY2UoY29uc3Qgd3hTdHJpbmcm
IHNlY3Rpb24sIGNvbnN0IHd4U3RyaW5nJiBlbnRyeSwgbG9uZyAqdmFsdWUsIGNvbnN0IHd4U3Ry
aW5nJiBmaWxlID0gd3hFbXB0eVN0cmluZyk7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBi
b29sIHd4R2V0UmVzb3VyY2UoY29uc3Qgd3hTdHJpbmcmIHNlY3Rpb24sIGNvbnN0IHd4U3RyaW5n
JiBlbnRyeSwgaW50ICp2YWx1ZSwgY29uc3Qgd3hTdHJpbmcmIGZpbGUgPSB3eEVtcHR5U3RyaW5n
KTsNCg0KDQp2b2lkIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R2V0TW91c2VQb3NpdGlv
biggaW50KiB4LCBpbnQqIHkgKTsNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
ZXh0ZXJuIGNvbnN0IGNoYXIqIHd4VXNlclJlc291cmNlU3RyOw0KX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgY2hhciogd3hMb2FkVXNlclJlc291cmNlKGNvbnN0IHd4U3RyaW5nJiByZXNvdXJj
ZU5hbWUsIGNvbnN0IHd4U3RyaW5nJiByZXNvdXJjZVR5cGUgPSB3eFVzZXJSZXNvdXJjZVN0cik7
DQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB2b2lkIHd4UmVkaXJlY3RJT1RvQ29u
c29sZSgpOw0KIyA0MzAgIi4uLy4uL2luY2x1ZGUvd3gvdXRpbHMuaCINCl9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHZvaWQgd3hEZWJ1Z01zZyhjb25zdCBjaGFyICpmbXQgLi4uKTsNCg0KDQpf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hJbnRlcm5hbEVy
cm9yU3RyOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCB3eEVycm9yKGNvbnN0IHd4
U3RyaW5nJiBtc2csIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSA9IHd4SW50ZXJuYWxFcnJvclN0cik7
DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4RmF0
YWxFcnJvclN0cjsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHZvaWQgd3hGYXRhbEVycm9y
KGNvbnN0IHd4U3RyaW5nJiBtc2csIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSA9IHd4RmF0YWxFcnJv
clN0cik7DQojIDIxICIuLi8uLi9pbmNsdWRlL3d4L2N1cnNvci5oIiAyDQojIDM4ICIuLi8uLi9p
bmNsdWRlL3d4L2N1cnNvci5oIg0KY2xhc3Mgd3hCdXN5Q3Vyc29yU3VzcGVuZGVyDQp7DQpwdWJs
aWM6DQogICAgd3hCdXN5Q3Vyc29yU3VzcGVuZGVyKCkNCiAgICB7DQogICAgICAgIGlmKCB3eElz
QnVzeSgpICkNCiAgICAgICAgew0KICAgICAgICAgICAgd3hTZXRDdXJzb3IoIHd4QnVzeUN1cnNv
cjo6R2V0U3RvcmVkQ3Vyc29yKCkgKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICB+d3hCdXN5Q3Vy
c29yU3VzcGVuZGVyKCkNCiAgICB7DQogICAgICAgIGlmKCB3eElzQnVzeSgpICkNCiAgICAgICAg
ew0KICAgICAgICAgICAgd3hTZXRDdXJzb3IoIHd4QnVzeUN1cnNvcjo6R2V0QnVzeUN1cnNvcigp
ICk7DQogICAgICAgIH0NCiAgICB9DQp9Ow0KIyAyNSAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5o
IiAyDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3RocmVhZC5oIiAxDQojIDI3ICIuLi8uLi9p
bmNsdWRlL3d4L3RocmVhZC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInRocmVhZC5oIg0KDQoNCg0K
IyAxICIuLi8uLi9pbmNsdWRlL3d4L21vZHVsZS5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4
L21vZHVsZS5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgIm1vZHVsZS5oIg0KDQoNCg0KDQoNCg0KY2xh
c3Mgd3hNb2R1bGU7DQp0eXBlZGVmIHd4TW9kdWxlIF9XWF9MSVNUX0lURU1fVFlQRV93eE1vZHVs
ZUxpc3Q7IHR5cGVkZWYgaW50ICgqd3hTb3J0RnVuY0Zvcl93eE1vZHVsZUxpc3QpKGNvbnN0IHd4
TW9kdWxlICoqLCBjb25zdCB3eE1vZHVsZSAqKik7IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4d3hNb2R1bGVMaXN0Tm9kZSA6IHB1YmxpYyB3eE5vZGVCYXNlIHsgcHVibGljOiB3
eHd4TW9kdWxlTGlzdE5vZGUod3hMaXN0QmFzZSAqbGlzdCA9ICh3eExpc3RCYXNlICopX19udWxs
LCB3eHd4TW9kdWxlTGlzdE5vZGUgKnByZXZpb3VzID0gKHd4d3hNb2R1bGVMaXN0Tm9kZSAqKV9f
bnVsbCwgd3h3eE1vZHVsZUxpc3ROb2RlICpuZXh0ID0gKHd4d3hNb2R1bGVMaXN0Tm9kZSAqKV9f
bnVsbCwgd3hNb2R1bGUgKmRhdGEgPSAod3hNb2R1bGUgKilfX251bGwsIGNvbnN0IHd4TGlzdEtl
eSYga2V5ID0gd3hEZWZhdWx0TGlzdEtleSkgOiB3eE5vZGVCYXNlKGxpc3QsIHByZXZpb3VzLCBu
ZXh0LCBkYXRhLCBrZXkpIHsgfSB3eHd4TW9kdWxlTGlzdE5vZGUgKkdldE5leHQoKSBjb25zdCB7
IHJldHVybiAod3h3eE1vZHVsZUxpc3ROb2RlICopd3hOb2RlQmFzZTo6R2V0TmV4dCgpOyB9IHd4
d3hNb2R1bGVMaXN0Tm9kZSAqR2V0UHJldmlvdXMoKSBjb25zdCB7IHJldHVybiAod3h3eE1vZHVs
ZUxpc3ROb2RlICopd3hOb2RlQmFzZTo6R2V0UHJldmlvdXMoKTsgfSB3eE1vZHVsZSAqR2V0RGF0
YSgpIGNvbnN0IHsgcmV0dXJuICh3eE1vZHVsZSAqKXd4Tm9kZUJhc2U6OkdldERhdGEoKTsgfSB2
b2lkIFNldERhdGEod3hNb2R1bGUgKmRhdGEpIHsgd3hOb2RlQmFzZTo6U2V0RGF0YShkYXRhKTsg
fSB2aXJ0dWFsIHZvaWQgRGVsZXRlRGF0YSgpOyB9OyBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eE1vZHVsZUxpc3QgOiBwdWJsaWMgd3hMaXN0QmFzZSB7IHB1YmxpYzogdHlwZWRl
ZiB3eHd4TW9kdWxlTGlzdE5vZGUgTm9kZTsgd3hNb2R1bGVMaXN0KHd4S2V5VHlwZSBrZXlUeXBl
ID0gd3hLRVlfTk9ORSkgOiB3eExpc3RCYXNlKGtleVR5cGUpIHsgfSB3eE1vZHVsZUxpc3Qoc2l6
ZV90IGNvdW50LCB3eE1vZHVsZSAqZWxlbWVudHNbXSkgOiB3eExpc3RCYXNlKGNvdW50LCAodm9p
ZCAqKillbGVtZW50cykgeyB9IHd4TW9kdWxlTGlzdCYgb3BlcmF0b3I9KGNvbnN0IHd4TW9kdWxl
TGlzdCYgbGlzdCkgeyByZXR1cm4gKHd4TW9kdWxlTGlzdCYpd3hMaXN0QmFzZTo6b3BlcmF0b3I9
KGxpc3QpOyB9IHd4d3hNb2R1bGVMaXN0Tm9kZSAqR2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAo
d3h3eE1vZHVsZUxpc3ROb2RlICopd3hMaXN0QmFzZTo6R2V0Rmlyc3QoKTsgfSB3eHd4TW9kdWxl
TGlzdE5vZGUgKkdldExhc3QoKSBjb25zdCB7IHJldHVybiAod3h3eE1vZHVsZUxpc3ROb2RlICop
d3hMaXN0QmFzZTo6R2V0TGFzdCgpOyB9IHd4d3hNb2R1bGVMaXN0Tm9kZSAqSXRlbShzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuICh3eHd4TW9kdWxlTGlzdE5vZGUgKil3eExpc3RCYXNlOjpJ
dGVtKGluZGV4KTsgfSB3eE1vZHVsZSAqb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsg
d3h3eE1vZHVsZUxpc3ROb2RlICpub2RlID0gSXRlbShpbmRleCk7IHJldHVybiBub2RlID8gKHd4
TW9kdWxlKikobm9kZS0+R2V0RGF0YSgpKSA6ICh3eE1vZHVsZSopX19udWxsOyB9IHd4d3hNb2R1
bGVMaXN0Tm9kZSAqQXBwZW5kKHd4TW9kdWxlICpvYmplY3QpIHsgcmV0dXJuICh3eHd4TW9kdWxl
TGlzdE5vZGUgKil3eExpc3RCYXNlOjpBcHBlbmQob2JqZWN0KTsgfSB3eHd4TW9kdWxlTGlzdE5v
ZGUgKkluc2VydCh3eE1vZHVsZSAqb2JqZWN0KSB7IHJldHVybiAod3h3eE1vZHVsZUxpc3ROb2Rl
ICopSW5zZXJ0KCh3eHd4TW9kdWxlTGlzdE5vZGUqKV9fbnVsbCwgb2JqZWN0KTsgfSB3eHd4TW9k
dWxlTGlzdE5vZGUgKkluc2VydChzaXplX3QgcG9zLCB3eE1vZHVsZSAqb2JqZWN0KSB7IHJldHVy
biAod3h3eE1vZHVsZUxpc3ROb2RlICopd3hMaXN0QmFzZTo6SW5zZXJ0KHBvcywgb2JqZWN0KTsg
fSB3eHd4TW9kdWxlTGlzdE5vZGUgKkluc2VydCh3eHd4TW9kdWxlTGlzdE5vZGUgKnByZXYsIHd4
TW9kdWxlICpvYmplY3QpIHsgcmV0dXJuICh3eHd4TW9kdWxlTGlzdE5vZGUgKil3eExpc3RCYXNl
OjpJbnNlcnQocHJldiwgb2JqZWN0KTsgfSB3eHd4TW9kdWxlTGlzdE5vZGUgKkFwcGVuZChsb25n
IGtleSwgdm9pZCAqb2JqZWN0KSB7IHJldHVybiAod3h3eE1vZHVsZUxpc3ROb2RlICopd3hMaXN0
QmFzZTo6QXBwZW5kKGtleSwgb2JqZWN0KTsgfSB3eHd4TW9kdWxlTGlzdE5vZGUgKkFwcGVuZChj
b25zdCBjaGFyICprZXksIHZvaWQgKm9iamVjdCkgeyByZXR1cm4gKHd4d3hNb2R1bGVMaXN0Tm9k
ZSAqKXd4TGlzdEJhc2U6OkFwcGVuZChrZXksIG9iamVjdCk7IH0gd3h3eE1vZHVsZUxpc3ROb2Rl
ICpEZXRhY2hOb2RlKHd4d3hNb2R1bGVMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gKHd4d3hNb2R1
bGVMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkRldGFjaE5vZGUobm9kZSk7IH0gYm9vbCBEZWxldGVO
b2RlKHd4d3hNb2R1bGVMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gd3hMaXN0QmFzZTo6RGVsZXRl
Tm9kZShub2RlKTsgfSBib29sIERlbGV0ZU9iamVjdCh3eE1vZHVsZSAqb2JqZWN0KSB7IHJldHVy
biB3eExpc3RCYXNlOjpEZWxldGVPYmplY3Qob2JqZWN0KTsgfSB3eHd4TW9kdWxlTGlzdE5vZGUg
KkZpbmQod3hNb2R1bGUgKm9iamVjdCkgY29uc3QgeyByZXR1cm4gKHd4d3hNb2R1bGVMaXN0Tm9k
ZSAqKXd4TGlzdEJhc2U6OkZpbmQob2JqZWN0KTsgfSB2aXJ0dWFsIHd4d3hNb2R1bGVMaXN0Tm9k
ZSAqRmluZChjb25zdCB3eExpc3RLZXkmIGtleSkgY29uc3QgeyByZXR1cm4gKHd4d3hNb2R1bGVM
aXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkZpbmQoa2V5KTsgfSBpbnQgSW5kZXhPZih3eE1vZHVsZSAq
b2JqZWN0KSBjb25zdCB7IHJldHVybiB3eExpc3RCYXNlOjpJbmRleE9mKG9iamVjdCk7IH0gdm9p
ZCBTb3J0KHd4U29ydEZ1bmNGb3Jfd3hNb2R1bGVMaXN0IGZ1bmMpIHsgd3hMaXN0QmFzZTo6U29y
dCgod3hTb3J0Q29tcGFyZUZ1bmN0aW9uKWZ1bmMpOyB9IHByb3RlY3RlZDogd3hOb2RlQmFzZSAq
Q3JlYXRlTm9kZSh3eE5vZGVCYXNlICpwcmV2LCB3eE5vZGVCYXNlICpuZXh0LCB2b2lkICpkYXRh
LCBjb25zdCB3eExpc3RLZXkmIGtleSA9IHd4RGVmYXVsdExpc3RLZXkpIHsgcmV0dXJuIG5ldyB3
eHd4TW9kdWxlTGlzdE5vZGUodGhpcywgKHd4d3hNb2R1bGVMaXN0Tm9kZSAqKXByZXYsICh3eHd4
TW9kdWxlTGlzdE5vZGUgKiluZXh0LCAod3hNb2R1bGUgKilkYXRhLCBrZXkpOyB9IH07DQoNCg0K
DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TW9kdWxlIDogcHVibGljIHd4
T2JqZWN0DQp7DQpwdWJsaWM6DQogICAgd3hNb2R1bGUoKSB7fQ0KICAgIHZpcnR1YWwgfnd4TW9k
dWxlKCkge30NCg0KDQogICAgYm9vbCBJbml0KCkgeyByZXR1cm4gT25Jbml0KCk7IH0NCiAgICB2
b2lkIEV4aXQoKSB7IE9uRXhpdCgpOyB9DQoNCg0KDQogICAgdmlydHVhbCBib29sIE9uSW5pdCgp
ID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIE9uRXhpdCgpID0gMDsNCg0KICAgIHN0YXRpYyB2
b2lkIFJlZ2lzdGVyTW9kdWxlKHd4TW9kdWxlKiBtb2R1bGUpOw0KICAgIHN0YXRpYyB2b2lkIFJl
Z2lzdGVyTW9kdWxlcygpOw0KICAgIHN0YXRpYyBib29sIEluaXRpYWxpemVNb2R1bGVzKCk7DQog
ICAgc3RhdGljIHZvaWQgQ2xlYW5VcE1vZHVsZXMoKTsNCg0KcHJvdGVjdGVkOg0KICAgIHN0YXRp
YyB3eE1vZHVsZUxpc3QgbV9tb2R1bGVzOw0KDQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0lu
Zm8gc21fY2xhc3N3eE1vZHVsZTsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZ3eE1vZHVsZTo6c21fY2xhc3N3eE1vZHVsZTsgfQ0KfTsNCiMgMzIgIi4uLy4uL2lu
Y2x1ZGUvd3gvdGhyZWFkLmgiIDINCiMgNDIgIi4uLy4uL2luY2x1ZGUvd3gvdGhyZWFkLmgiDQpl
bnVtIHd4TXV0ZXhFcnJvcg0Kew0KICAgIHd4TVVURVhfTk9fRVJST1IgPSAwLA0KICAgIHd4TVVU
RVhfREVBRF9MT0NLLA0KICAgIHd4TVVURVhfQlVTWSwNCiAgICB3eE1VVEVYX1VOTE9DS0VELA0K
ICAgIHd4TVVURVhfTUlTQ19FUlJPUg0KfTsNCg0KZW51bSB3eFRocmVhZEVycm9yDQp7DQogICAg
d3hUSFJFQURfTk9fRVJST1IgPSAwLA0KICAgIHd4VEhSRUFEX05PX1JFU09VUkNFLA0KICAgIHd4
VEhSRUFEX1JVTk5JTkcsDQogICAgd3hUSFJFQURfTk9UX1JVTk5JTkcsDQogICAgd3hUSFJFQURf
S0lMTEVELA0KICAgIHd4VEhSRUFEX01JU0NfRVJST1INCn07DQoNCmVudW0gd3hUaHJlYWRLaW5k
DQp7DQogICAgd3hUSFJFQURfREVUQUNIRUQsDQogICAgd3hUSFJFQURfSk9JTkFCTEUNCn07DQoN
Cg0KZW51bQ0Kew0KICAgIFdYVEhSRUFEX01JTl9QUklPUklUWSA9IDB1LA0KICAgIFdYVEhSRUFE
X0RFRkFVTFRfUFJJT1JJVFkgPSA1MHUsDQogICAgV1hUSFJFQURfTUFYX1BSSU9SSVRZID0gMTAw
dQ0KfTsNCiMgODQgIi4uLy4uL2luY2x1ZGUvd3gvdGhyZWFkLmgiDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eE11dGV4SW50ZXJuYWw7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eE11dGV4DQp7DQpwdWJsaWM6DQoNCiAgICB3eE11dGV4KCk7DQogICAgfnd4
TXV0ZXgoKTsNCg0KDQogICAgd3hNdXRleEVycm9yIExvY2soKTsNCg0KICAgIHd4TXV0ZXhFcnJv
ciBUcnlMb2NrKCk7DQoNCiAgICB3eE11dGV4RXJyb3IgVW5sb2NrKCk7DQoNCg0KICAgIGJvb2wg
SXNMb2NrZWQoKSBjb25zdCB7IHJldHVybiAobV9sb2NrZWQgPiAwKTsgfQ0KDQpwcm90ZWN0ZWQ6
DQogICAgZnJpZW5kIGNsYXNzIHd4Q29uZGl0aW9uOw0KDQoNCiAgICB3eE11dGV4KGNvbnN0IHd4
TXV0ZXgmKTsNCiAgICB3eE11dGV4JiBvcGVyYXRvcj0oY29uc3Qgd3hNdXRleCYpOw0KDQogICAg
aW50IG1fbG9ja2VkOw0KICAgIHd4TXV0ZXhJbnRlcm5hbCAqbV9pbnRlcm5hbDsNCn07DQoNCg0K
DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TXV0ZXhMb2NrZXINCnsNCnB1
YmxpYzoNCg0KICAgIHd4TXV0ZXhMb2NrZXIod3hNdXRleCYgbXV0ZXgpIDogbV9tdXRleChtdXRl
eCkNCiAgICAgICAgeyBtX2lzT2sgPSBtX211dGV4LkxvY2soKSA9PSB3eE1VVEVYX05PX0VSUk9S
OyB9DQoNCg0KICAgIGJvb2wgSXNPaygpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1faXNPazsg
fQ0KDQoNCiAgICB+d3hNdXRleExvY2tlcigpDQogICAgICAgIHsgaWYgKCBJc09rKCkgKSBtX211
dGV4LlVubG9jaygpOyB9DQoNCnByaXZhdGU6DQoNCiAgICB3eE11dGV4TG9ja2VyKGNvbnN0IHd4
TXV0ZXhMb2NrZXImKTsNCiAgICB3eE11dGV4TG9ja2VyJiBvcGVyYXRvcj0oY29uc3Qgd3hNdXRl
eExvY2tlciYpOw0KDQogICAgYm9vbCBtX2lzT2s7DQogICAgd3hNdXRleCYgbV9tdXRleDsNCn07
DQojIDE1MCAiLi4vLi4vaW5jbHVkZS93eC90aHJlYWQuaCINCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4Q3JpdGljYWxTZWN0aW9uSW50ZXJuYWw7DQojIDE2NiAiLi4vLi4vaW5j
bHVkZS93eC90aHJlYWQuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Q3Jp
dGljYWxTZWN0aW9uDQp7DQpwdWJsaWM6DQoNCiAgICB3eENyaXRpY2FsU2VjdGlvbigpOw0KICAg
IH53eENyaXRpY2FsU2VjdGlvbigpOw0KDQoNCiAgICB2b2lkIEVudGVyKCk7DQoNCiAgICB2b2lk
IExlYXZlKCk7DQoNCnByaXZhdGU6DQoNCiAgICB3eENyaXRpY2FsU2VjdGlvbihjb25zdCB3eENy
aXRpY2FsU2VjdGlvbiYpOw0KICAgIHd4Q3JpdGljYWxTZWN0aW9uJiBvcGVyYXRvcj0oY29uc3Qg
d3hDcml0aWNhbFNlY3Rpb24mKTsNCg0KDQoNCg0KDQoNCg0KICAgIGNoYXIgbV9idWZmZXJbMjRd
Ow0KDQoNCg0KDQoNCn07DQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB3eENyaXRpY2FsU2VjdGlvbkxvY2tlcg0Kew0KcHVibGljOg0KICAgIGlubGluZSB3eENy
aXRpY2FsU2VjdGlvbkxvY2tlcih3eENyaXRpY2FsU2VjdGlvbiYgY3JpdHNlY3QpOw0KICAgIGlu
bGluZSB+d3hDcml0aWNhbFNlY3Rpb25Mb2NrZXIoKTsNCg0KcHJpdmF0ZToNCg0KICAgIHd4Q3Jp
dGljYWxTZWN0aW9uTG9ja2VyKGNvbnN0IHd4Q3JpdGljYWxTZWN0aW9uTG9ja2VyJik7DQogICAg
d3hDcml0aWNhbFNlY3Rpb25Mb2NrZXImIG9wZXJhdG9yPShjb25zdCB3eENyaXRpY2FsU2VjdGlv
bkxvY2tlciYpOw0KDQogICAgd3hDcml0aWNhbFNlY3Rpb24mIG1fY3JpdHNlY3Q7DQp9Ow0KDQoN
Cg0KDQoNCg0KY2xhc3Mgd3hDb25kaXRpb25JbnRlcm5hbDsNCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4Q29uZGl0aW9uDQp7DQpwdWJsaWM6DQoNCiAgICB3eENvbmRpdGlvbigp
Ow0KICAgIH53eENvbmRpdGlvbigpOw0KDQoNCg0KICAgIHZvaWQgV2FpdCgpOw0KDQogICAgYm9v
bCBXYWl0KHVuc2lnbmVkIGxvbmcgc2VjLCB1bnNpZ25lZCBsb25nIG5zZWMpOw0KDQoNCg0KICAg
IHZvaWQgU2lnbmFsKCk7DQoNCiAgICB2b2lkIEJyb2FkY2FzdCgpOw0KDQpwcml2YXRlOg0KICAg
IHd4Q29uZGl0aW9uSW50ZXJuYWwgKm1faW50ZXJuYWw7DQp9Ow0KIyAyNTggIi4uLy4uL2luY2x1
ZGUvd3gvdGhyZWFkLmgiDQpjbGFzcyB3eFRocmVhZEludGVybmFsOw0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hUaHJlYWQNCnsNCnB1YmxpYzoNCg0KICAgIHR5cGVkZWYgdm9p
ZCAqRXhpdENvZGU7DQoNCg0KDQoNCg0KDQoNCiAgICBzdGF0aWMgd3hUaHJlYWQgKlRoaXMoKTsN
Cg0KDQogICAgc3RhdGljIGJvb2wgSXNNYWluKCk7DQoNCg0KICAgIHN0YXRpYyB2b2lkIFlpZWxk
KCk7DQoNCg0KDQoNCiAgICBzdGF0aWMgdm9pZCBTbGVlcCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vj
b25kcyk7DQoNCg0KDQoNCg0KICAgIHN0YXRpYyBpbnQgR2V0Q1BVQ291bnQoKTsNCiMgMjk3ICIu
Li8uLi9pbmNsdWRlL3d4L3RocmVhZC5oIg0KICAgIHN0YXRpYyBib29sIFNldENvbmN1cnJlbmN5
KHNpemVfdCBsZXZlbCk7DQoNCg0KDQogICAgd3hUaHJlYWQod3hUaHJlYWRLaW5kIGtpbmQgPSB3
eFRIUkVBRF9ERVRBQ0hFRCk7DQoNCg0KDQoNCg0KDQogICAgd3hUaHJlYWRFcnJvciBDcmVhdGUo
KTsNCg0KDQoNCg0KICAgIHd4VGhyZWFkRXJyb3IgUnVuKCk7DQojIDMyNSAiLi4vLi4vaW5jbHVk
ZS93eC90aHJlYWQuaCINCiAgICB3eFRocmVhZEVycm9yIERlbGV0ZShFeGl0Q29kZSAqcmMgPSAo
RXhpdENvZGUgKilfX251bGwpOw0KDQoNCg0KDQoNCiAgICBFeGl0Q29kZSBXYWl0KCk7DQojIDM0
MSAiLi4vLi4vaW5jbHVkZS93eC90aHJlYWQuaCINCiAgICB3eFRocmVhZEVycm9yIEtpbGwoKTsN
Cg0KDQoNCiAgICB3eFRocmVhZEVycm9yIFBhdXNlKCk7DQoNCg0KICAgIHd4VGhyZWFkRXJyb3Ig
UmVzdW1lKCk7DQoNCg0KDQoNCg0KICAgIHZvaWQgU2V0UHJpb3JpdHkodW5zaWduZWQgaW50IHBy
aW8pOw0KDQoNCiAgICB1bnNpZ25lZCBpbnQgR2V0UHJpb3JpdHkoKSBjb25zdDsNCg0KDQoNCiAg
ICBib29sIElzQWxpdmUoKSBjb25zdDsNCg0KICAgIGJvb2wgSXNSdW5uaW5nKCkgY29uc3Q7DQoN
CiAgICBib29sIElzUGF1c2VkKCkgY29uc3Q7DQoNCg0KICAgIGJvb2wgSXNEZXRhY2hlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNEZXRhY2hlZDsgfQ0KDQoNCg0KICAgIHVuc2lnbmVkIGxvbmcgR2V0
SWQoKSBjb25zdDsNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBPbkV4aXQoKSB7IH0NCg0KDQoN
CiAgICB2aXJ0dWFsIH53eFRocmVhZCgpOw0KDQpwcm90ZWN0ZWQ6DQoNCg0KDQogICAgYm9vbCBU
ZXN0RGVzdHJveSgpOw0KDQoNCiAgICB2b2lkIEV4aXQoRXhpdENvZGUgZXhpdGNvZGUgPSAwKTsN
Cg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgKkVudHJ5KCkgPSAwOw0KDQpwcml2YXRlOg0KDQogICAg
d3hUaHJlYWQoY29uc3Qgd3hUaHJlYWQmKTsNCiAgICB3eFRocmVhZCYgb3BlcmF0b3I9KGNvbnN0
IHd4VGhyZWFkJik7DQoNCiAgICBmcmllbmQgY2xhc3Mgd3hUaHJlYWRJbnRlcm5hbDsNCg0KDQog
ICAgd3hUaHJlYWRJbnRlcm5hbCAqbV9pbnRlcm5hbDsNCg0KDQogICAgd3hDcml0aWNhbFNlY3Rp
b24gbV9jcml0c2VjdDsNCg0KDQogICAgYm9vbCBtX2lzRGV0YWNoZWQ7DQp9Ow0KDQoNCg0KDQoN
Cg0Kdm9pZCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE11dGV4R3VpRW50ZXIoKTsNCnZv
aWQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNdXRleEd1aUxlYXZlKCk7DQojIDQ0NiAi
Li4vLi4vaW5jbHVkZS93eC90aHJlYWQuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4TXV0ZXhHdWlMb2NrZXINCnsNCnB1YmxpYzoNCiAgICB3eE11dGV4R3VpTG9ja2VyKCkg
eyB3eE11dGV4R3VpRW50ZXIoKTsgfQ0KICAgfnd4TXV0ZXhHdWlMb2NrZXIoKSB7IHd4TXV0ZXhH
dWlMZWF2ZSgpOyB9DQp9Ow0KIyA0NjMgIi4uLy4uL2luY2x1ZGUvd3gvdGhyZWFkLmgiDQogICAg
ZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNdXRleEd1aUxlYXZlT3JF
bnRlcigpOw0KDQoNCiAgICBleHRlcm4gYm9vbCBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eEd1aU93bmVkQnlNYWluVGhyZWFkKCk7DQoNCg0KICAgIGV4dGVybiB2b2lkIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4V2FrZVVwTWFpblRocmVhZCgpOw0KDQoNCg0KICAgIGV4dGVybiBi
b29sIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4SXNXYWl0aW5nRm9yVGhyZWFkKCk7DQoj
IDUxMCAiLi4vLi4vaW5jbHVkZS93eC90aHJlYWQuaCINCiAgICBpbmxpbmUNCiAgICB3eENyaXRp
Y2FsU2VjdGlvbkxvY2tlcjo6IHd4Q3JpdGljYWxTZWN0aW9uTG9ja2VyKHd4Q3JpdGljYWxTZWN0
aW9uJiBjcykNCiAgICAgICAgOiBtX2NyaXRzZWN0KGNzKSB7IG1fY3JpdHNlY3QuRW50ZXIoKTsg
fQ0KICAgIGlubGluZQ0KICAgIHd4Q3JpdGljYWxTZWN0aW9uTG9ja2VyOjp+d3hDcml0aWNhbFNl
Y3Rpb25Mb2NrZXIoKSB7IG1fY3JpdHNlY3QuTGVhdmUoKTsgfQ0KIyAyOCAiLi4vLi4vaW5jbHVk
ZS93eC9ldmVudC5oIiAyDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgd3hMaXN0Ow0KDQoNCiAgICBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENs
aWVudERhdGE7DQogICAgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hEQzsNCiAg
ICBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1lbnU7DQogICAgY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3c7DQojIDUyICIuLi8uLi9pbmNsdWRlL3d4
L2V2ZW50LmgiDQp0eXBlZGVmIGludCB3eEV2ZW50VHlwZTsNCiMgNjcgIi4uLy4uL2luY2x1ZGUv
d3gvZXZlbnQuaCINCmVudW0NCnsNCiAgICB3eEVWVF9OVUxMID0gMCwNCiAgICB3eEVWVF9GSVJT
VCA9IDEwMDAwLA0KDQogICAgd3hFVlRfQ09NTUFORF9CVVRUT05fQ0xJQ0tFRCA9IHd4RVZUX0ZJ
UlNUICsgMSwNCiAgICB3eEVWVF9DT01NQU5EX0NIRUNLQk9YX0NMSUNLRUQgPSB3eEVWVF9GSVJT
VCArIDIsDQogICAgd3hFVlRfQ09NTUFORF9DSE9JQ0VfU0VMRUNURUQgPSB3eEVWVF9GSVJTVCAr
IDMsDQogICAgd3hFVlRfQ09NTUFORF9MSVNUQk9YX1NFTEVDVEVEID0gd3hFVlRfRklSU1QgKyA0
LA0KICAgIHd4RVZUX0NPTU1BTkRfTElTVEJPWF9ET1VCTEVDTElDS0VEID0gd3hFVlRfRklSU1Qg
KyA1LA0KICAgIHd4RVZUX0NPTU1BTkRfQ0hFQ0tMSVNUQk9YX1RPR0dMRUQgPSB3eEVWVF9GSVJT
VCArIDYsDQogICAgd3hFVlRfQ09NTUFORF9URVhUX1VQREFURUQgPSB3eEVWVF9GSVJTVCArIDcs
DQogICAgd3hFVlRfQ09NTUFORF9URVhUX0VOVEVSID0gd3hFVlRfRklSU1QgKyA4LA0KICAgIHd4
RVZUX0NPTU1BTkRfTUVOVV9TRUxFQ1RFRCA9IHd4RVZUX0ZJUlNUICsgOSwNCiAgICB3eEVWVF9D
T01NQU5EX1RPT0xfQ0xJQ0tFRCA9IHd4RVZUX0NPTU1BTkRfTUVOVV9TRUxFQ1RFRCwNCiAgICB3
eEVWVF9DT01NQU5EX1NMSURFUl9VUERBVEVEID0gd3hFVlRfRklSU1QgKyAxMCwNCiAgICB3eEVW
VF9DT01NQU5EX1JBRElPQk9YX1NFTEVDVEVEID0gd3hFVlRfRklSU1QgKyAxMSwNCiAgICB3eEVW
VF9DT01NQU5EX1JBRElPQlVUVE9OX1NFTEVDVEVEID0gd3hFVlRfRklSU1QgKyAxMiwNCg0KICAg
IHd4RVZUX0NPTU1BTkRfU0NST0xMQkFSX1VQREFURUQgPSB3eEVWVF9GSVJTVCArIDEzLA0KICAg
IHd4RVZUX0NPTU1BTkRfVkxCT1hfU0VMRUNURUQgPSB3eEVWVF9GSVJTVCArIDE0LA0KICAgIHd4
RVZUX0NPTU1BTkRfQ09NQk9CT1hfU0VMRUNURUQgPSB3eEVWVF9GSVJTVCArIDE1LA0KICAgIHd4
RVZUX0NPTU1BTkRfVE9PTF9SQ0xJQ0tFRCA9IHd4RVZUX0ZJUlNUICsgMTYsDQogICAgd3hFVlRf
Q09NTUFORF9UT09MX0VOVEVSID0gd3hFVlRfRklSU1QgKyAxNywNCiAgICB3eEVWVF9DT01NQU5E
X1NQSU5DVFJMX1VQREFURUQgPSB3eEVWVF9GSVJTVCArIDE4LA0KDQoNCiAgICB3eEVWVF9TT0NL
RVQgPSB3eEVWVF9GSVJTVCArIDUwLA0KICAgIHd4RVZUX1RJTUVSID0gd3hFVlRfRklSU1QgKyA4
MCwNCg0KDQogICAgd3hFVlRfTEVGVF9ET1dOID0gd3hFVlRfRklSU1QgKyAxMDAsDQogICAgd3hF
VlRfTEVGVF9VUCA9IHd4RVZUX0ZJUlNUICsgMTAxLA0KICAgIHd4RVZUX01JRERMRV9ET1dOID0g
d3hFVlRfRklSU1QgKyAxMDIsDQogICAgd3hFVlRfTUlERExFX1VQID0gd3hFVlRfRklSU1QgKyAx
MDMsDQogICAgd3hFVlRfUklHSFRfRE9XTiA9IHd4RVZUX0ZJUlNUICsgMTA0LA0KICAgIHd4RVZU
X1JJR0hUX1VQID0gd3hFVlRfRklSU1QgKyAxMDUsDQogICAgd3hFVlRfTU9USU9OID0gd3hFVlRf
RklSU1QgKyAxMDYsDQogICAgd3hFVlRfRU5URVJfV0lORE9XID0gd3hFVlRfRklSU1QgKyAxMDcs
DQogICAgd3hFVlRfTEVBVkVfV0lORE9XID0gd3hFVlRfRklSU1QgKyAxMDgsDQogICAgd3hFVlRf
TEVGVF9EQ0xJQ0sgPSB3eEVWVF9GSVJTVCArIDEwOSwNCiAgICB3eEVWVF9NSURETEVfRENMSUNL
ID0gd3hFVlRfRklSU1QgKyAxMTAsDQogICAgd3hFVlRfUklHSFRfRENMSUNLID0gd3hFVlRfRklS
U1QgKyAxMTEsDQogICAgd3hFVlRfU0VUX0ZPQ1VTID0gd3hFVlRfRklSU1QgKyAxMTIsDQogICAg
d3hFVlRfS0lMTF9GT0NVUyA9IHd4RVZUX0ZJUlNUICsgMTEzLA0KDQoNCiAgICB3eEVWVF9OQ19M
RUZUX0RPV04gPSB3eEVWVF9GSVJTVCArIDIwMCwNCiAgICB3eEVWVF9OQ19MRUZUX1VQID0gd3hF
VlRfRklSU1QgKyAyMDEsDQogICAgd3hFVlRfTkNfTUlERExFX0RPV04gPSB3eEVWVF9GSVJTVCAr
IDIwMiwNCiAgICB3eEVWVF9OQ19NSURETEVfVVAgPSB3eEVWVF9GSVJTVCArIDIwMywNCiAgICB3
eEVWVF9OQ19SSUdIVF9ET1dOID0gd3hFVlRfRklSU1QgKyAyMDQsDQogICAgd3hFVlRfTkNfUklH
SFRfVVAgPSB3eEVWVF9GSVJTVCArIDIwNSwNCiAgICB3eEVWVF9OQ19NT1RJT04gPSB3eEVWVF9G
SVJTVCArIDIwNiwNCiAgICB3eEVWVF9OQ19FTlRFUl9XSU5ET1cgPSB3eEVWVF9GSVJTVCArIDIw
NywNCiAgICB3eEVWVF9OQ19MRUFWRV9XSU5ET1cgPSB3eEVWVF9GSVJTVCArIDIwOCwNCiAgICB3
eEVWVF9OQ19MRUZUX0RDTElDSyA9IHd4RVZUX0ZJUlNUICsgMjA5LA0KICAgIHd4RVZUX05DX01J
RERMRV9EQ0xJQ0sgPSB3eEVWVF9GSVJTVCArIDIxMCwNCiAgICB3eEVWVF9OQ19SSUdIVF9EQ0xJ
Q0sgPSB3eEVWVF9GSVJTVCArIDIxMSwNCg0KDQogICAgd3hFVlRfQ0hBUiA9IHd4RVZUX0ZJUlNU
ICsgMjEyLA0KICAgIHd4RVZUX0NIQVJfSE9PSyA9IHd4RVZUX0ZJUlNUICsgMjEzLA0KICAgIHd4
RVZUX05BVklHQVRJT05fS0VZID0gd3hFVlRfRklSU1QgKyAyMTQsDQogICAgd3hFVlRfS0VZX0RP
V04gPSB3eEVWVF9GSVJTVCArIDIxNSwNCiAgICB3eEVWVF9LRVlfVVAgPSB3eEVWVF9GSVJTVCAr
IDIxNiwNCg0KDQogICAgd3hFVlRfU0VUX0NVUlNPUiA9IHd4RVZUX0ZJUlNUICsgMjMwLA0KDQoN
Cg0KDQogICAgd3hFVlRfU0NST0xMX1RPUCA9IHd4RVZUX0ZJUlNUICsgMzAwLA0KICAgIHd4RVZU
X1NDUk9MTF9CT1RUT00gPSB3eEVWVF9GSVJTVCArIDMwMSwNCiAgICB3eEVWVF9TQ1JPTExfTElO
RVVQID0gd3hFVlRfRklSU1QgKyAzMDIsDQogICAgd3hFVlRfU0NST0xMX0xJTkVET1dOID0gd3hF
VlRfRklSU1QgKyAzMDMsDQogICAgd3hFVlRfU0NST0xMX1BBR0VVUCA9IHd4RVZUX0ZJUlNUICsg
MzA0LA0KICAgIHd4RVZUX1NDUk9MTF9QQUdFRE9XTiA9IHd4RVZUX0ZJUlNUICsgMzA1LA0KICAg
IHd4RVZUX1NDUk9MTF9USFVNQlRSQUNLID0gd3hFVlRfRklSU1QgKyAzMDYsDQogICAgd3hFVlRf
U0NST0xMX1RIVU1CUkVMRUFTRSA9IHd4RVZUX0ZJUlNUICsgMzA3LA0KDQoNCg0KDQogICAgd3hF
VlRfU0NST0xMV0lOX1RPUCA9IHd4RVZUX0ZJUlNUICsgMzIwLA0KICAgIHd4RVZUX1NDUk9MTFdJ
Tl9CT1RUT00gPSB3eEVWVF9GSVJTVCArIDMyMSwNCiAgICB3eEVWVF9TQ1JPTExXSU5fTElORVVQ
ID0gd3hFVlRfRklSU1QgKyAzMjIsDQogICAgd3hFVlRfU0NST0xMV0lOX0xJTkVET1dOID0gd3hF
VlRfRklSU1QgKyAzMjMsDQogICAgd3hFVlRfU0NST0xMV0lOX1BBR0VVUCA9IHd4RVZUX0ZJUlNU
ICsgMzI0LA0KICAgIHd4RVZUX1NDUk9MTFdJTl9QQUdFRE9XTiA9IHd4RVZUX0ZJUlNUICsgMzI1
LA0KICAgIHd4RVZUX1NDUk9MTFdJTl9USFVNQlRSQUNLID0gd3hFVlRfRklSU1QgKyAzMjYsDQog
ICAgd3hFVlRfU0NST0xMV0lOX1RIVU1CUkVMRUFTRSA9IHd4RVZUX0ZJUlNUICsgMzI3LA0KDQoN
Cg0KDQogICAgd3hFVlRfU0laRSA9IHd4RVZUX0ZJUlNUICsgNDAwLA0KICAgIHd4RVZUX01PVkUg
PSB3eEVWVF9GSVJTVCArIDQwMSwNCiAgICB3eEVWVF9DTE9TRV9XSU5ET1cgPSB3eEVWVF9GSVJT
VCArIDQwMiwNCiAgICB3eEVWVF9FTkRfU0VTU0lPTiA9IHd4RVZUX0ZJUlNUICsgNDAzLA0KICAg
IHd4RVZUX1FVRVJZX0VORF9TRVNTSU9OID0gd3hFVlRfRklSU1QgKyA0MDQsDQogICAgd3hFVlRf
QUNUSVZBVEVfQVBQID0gd3hFVlRfRklSU1QgKyA0MDUsDQogICAgd3hFVlRfUE9XRVIgPSB3eEVW
VF9GSVJTVCArIDQwNiwNCiAgICB3eEVWVF9BQ1RJVkFURSA9IHd4RVZUX0ZJUlNUICsgNDA5LA0K
ICAgIHd4RVZUX0NSRUFURSA9IHd4RVZUX0ZJUlNUICsgNDEwLA0KICAgIHd4RVZUX0RFU1RST1kg
PSB3eEVWVF9GSVJTVCArIDQxMSwNCiAgICB3eEVWVF9TSE9XID0gd3hFVlRfRklSU1QgKyA0MTIs
DQogICAgd3hFVlRfSUNPTklaRSA9IHd4RVZUX0ZJUlNUICsgNDEzLA0KICAgIHd4RVZUX01BWElN
SVpFID0gd3hFVlRfRklSU1QgKyA0MTQsDQogICAgd3hFVlRfTU9VU0VfQ0FQVFVSRV9DSEFOR0VE
ID0gd3hFVlRfRklSU1QgKyA0MTUsDQogICAgd3hFVlRfUEFJTlQgPSB3eEVWVF9GSVJTVCArIDQx
NiwNCiAgICB3eEVWVF9FUkFTRV9CQUNLR1JPVU5EID0gd3hFVlRfRklSU1QgKyA0MTcsDQogICAg
d3hFVlRfTkNfUEFJTlQgPSB3eEVWVF9GSVJTVCArIDQxOCwNCiAgICB3eEVWVF9QQUlOVF9JQ09O
ID0gd3hFVlRfRklSU1QgKyA0MTksDQogICAgd3hFVlRfTUVOVV9DSEFSID0gd3hFVlRfRklSU1Qg
KyA0MjAsDQogICAgd3hFVlRfTUVOVV9JTklUID0gd3hFVlRfRklSU1QgKyA0MjEsDQogICAgd3hF
VlRfTUVOVV9ISUdITElHSFQgPSB3eEVWVF9GSVJTVCArIDQyMiwNCiAgICB3eEVWVF9QT1BVUF9N
RU5VX0lOSVQgPSB3eEVWVF9GSVJTVCArIDQyMywNCiAgICB3eEVWVF9DT05URVhUX01FTlUgPSB3
eEVWVF9GSVJTVCArIDQyNCwNCiAgICB3eEVWVF9TWVNfQ09MT1VSX0NIQU5HRUQgPSB3eEVWVF9G
SVJTVCArIDQyNSwNCiAgICB3eEVWVF9TRVRUSU5HX0NIQU5HRUQgPSB3eEVWVF9GSVJTVCArIDQy
NiwNCiAgICB3eEVWVF9RVUVSWV9ORVdfUEFMRVRURSA9IHd4RVZUX0ZJUlNUICsgNDI3LA0KICAg
IHd4RVZUX1BBTEVUVEVfQ0hBTkdFRCA9IHd4RVZUX0ZJUlNUICsgNDI4LA0KICAgIHd4RVZUX0pP
WV9CVVRUT05fRE9XTiA9IHd4RVZUX0ZJUlNUICsgNDI5LA0KICAgIHd4RVZUX0pPWV9CVVRUT05f
VVAgPSB3eEVWVF9GSVJTVCArIDQzMCwNCiAgICB3eEVWVF9KT1lfTU9WRSA9IHd4RVZUX0ZJUlNU
ICsgNDMxLA0KICAgIHd4RVZUX0pPWV9aTU9WRSA9IHd4RVZUX0ZJUlNUICsgNDMyLA0KICAgIHd4
RVZUX0RST1BfRklMRVMgPSB3eEVWVF9GSVJTVCArIDQzMywNCiAgICB3eEVWVF9EUkFXX0lURU0g
PSB3eEVWVF9GSVJTVCArIDQzNCwNCiAgICB3eEVWVF9NRUFTVVJFX0lURU0gPSB3eEVWVF9GSVJT
VCArIDQzNSwNCiAgICB3eEVWVF9DT01QQVJFX0lURU0gPSB3eEVWVF9GSVJTVCArIDQzNiwNCiAg
ICB3eEVWVF9JTklUX0RJQUxPRyA9IHd4RVZUX0ZJUlNUICsgNDM3LA0KICAgIHd4RVZUX0lETEUg
PSB3eEVWVF9GSVJTVCArIDQzOCwNCiAgICB3eEVWVF9VUERBVEVfVUkgPSB3eEVWVF9GSVJTVCAr
IDQzOSwNCg0KDQogICAgd3hFVlRfRU5EX1BST0NFU1MgPSB3eEVWVF9GSVJTVCArIDQ0MCwNCg0K
DQogICAgd3hFVlRfRElBTFVQX0NPTk5FQ1RFRCA9IHd4RVZUX0ZJUlNUICsgNDUwLA0KICAgIHd4
RVZUX0RJQUxVUF9ESVNDT05ORUNURUQgPSB3eEVWVF9GSVJTVCArIDQ1MSwNCg0KDQoNCiAgICB3
eEVWVF9DT01NQU5EX0xFRlRfQ0xJQ0sgPSB3eEVWVF9GSVJTVCArIDUwMCwNCiAgICB3eEVWVF9D
T01NQU5EX0xFRlRfRENMSUNLID0gd3hFVlRfRklSU1QgKyA1MDEsDQogICAgd3hFVlRfQ09NTUFO
RF9SSUdIVF9DTElDSyA9IHd4RVZUX0ZJUlNUICsgNTAyLA0KICAgIHd4RVZUX0NPTU1BTkRfUklH
SFRfRENMSUNLID0gd3hFVlRfRklSU1QgKyA1MDMsDQogICAgd3hFVlRfQ09NTUFORF9TRVRfRk9D
VVMgPSB3eEVWVF9GSVJTVCArIDUwNCwNCiAgICB3eEVWVF9DT01NQU5EX0tJTExfRk9DVVMgPSB3
eEVWVF9GSVJTVCArIDUwNSwNCiAgICB3eEVWVF9DT01NQU5EX0VOVEVSID0gd3hFVlRfRklSU1Qg
KyA1MDYsDQoNCg0KICAgIHd4RVZUX0NPTU1BTkRfVFJFRV9CRUdJTl9EUkFHID0gd3hFVlRfRklS
U1QgKyA2MDAsDQogICAgd3hFVlRfQ09NTUFORF9UUkVFX0JFR0lOX1JEUkFHID0gd3hFVlRfRklS
U1QgKyA2MDEsDQogICAgd3hFVlRfQ09NTUFORF9UUkVFX0JFR0lOX0xBQkVMX0VESVQgPSB3eEVW
VF9GSVJTVCArIDYwMiwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfRU5EX0xBQkVMX0VESVQgPSB3
eEVWVF9GSVJTVCArIDYwMywNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfREVMRVRFX0lURU0gPSB3
eEVWVF9GSVJTVCArIDYwNCwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfR0VUX0lORk8gPSB3eEVW
VF9GSVJTVCArIDYwNSwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfU0VUX0lORk8gPSB3eEVWVF9G
SVJTVCArIDYwNiwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfSVRFTV9FWFBBTkRFRCA9IHd4RVZU
X0ZJUlNUICsgNjA3LA0KICAgIHd4RVZUX0NPTU1BTkRfVFJFRV9JVEVNX0VYUEFORElORyA9IHd4
RVZUX0ZJUlNUICsgNjA4LA0KICAgIHd4RVZUX0NPTU1BTkRfVFJFRV9JVEVNX0NPTExBUFNFRCA9
IHd4RVZUX0ZJUlNUICsgNjA5LA0KICAgIHd4RVZUX0NPTU1BTkRfVFJFRV9JVEVNX0NPTExBUFNJ
TkcgPSB3eEVWVF9GSVJTVCArIDYxMCwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfU0VMX0NIQU5H
RUQgPSB3eEVWVF9GSVJTVCArIDYxMSwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfU0VMX0NIQU5H
SU5HID0gd3hFVlRfRklSU1QgKyA2MTIsDQogICAgd3hFVlRfQ09NTUFORF9UUkVFX0tFWV9ET1dO
ID0gd3hFVlRfRklSU1QgKyA2MTMsDQogICAgd3hFVlRfQ09NTUFORF9UUkVFX0lURU1fQUNUSVZB
VEVEID0gd3hFVlRfRklSU1QgKyA2MTQsDQogICAgd3hFVlRfQ09NTUFORF9UUkVFX0lURU1fUklH
SFRfQ0xJQ0sgPSB3eEVWVF9GSVJTVCArIDYxNSwNCiAgICB3eEVWVF9DT01NQU5EX1RSRUVfSVRF
TV9NSURETEVfQ0xJQ0sgPSB3eEVWVF9GSVJTVCArIDYxNiwNCiAgICB3eEVWVF9DT01NQU5EX1RS
RUVfRU5EX0RSQUcgPSB3eEVWVF9GSVJTVCArIDYxNywNCg0KDQogICAgd3hFVlRfQ09NTUFORF9M
SVNUX0JFR0lOX0RSQUcgPSB3eEVWVF9GSVJTVCArIDcwMCwNCiAgICB3eEVWVF9DT01NQU5EX0xJ
U1RfQkVHSU5fUkRSQUcgPSB3eEVWVF9GSVJTVCArIDcwMSwNCiAgICB3eEVWVF9DT01NQU5EX0xJ
U1RfQkVHSU5fTEFCRUxfRURJVCA9IHd4RVZUX0ZJUlNUICsgNzAyLA0KICAgIHd4RVZUX0NPTU1B
TkRfTElTVF9FTkRfTEFCRUxfRURJVCA9IHd4RVZUX0ZJUlNUICsgNzAzLA0KICAgIHd4RVZUX0NP
TU1BTkRfTElTVF9ERUxFVEVfSVRFTSA9IHd4RVZUX0ZJUlNUICsgNzA0LA0KICAgIHd4RVZUX0NP
TU1BTkRfTElTVF9ERUxFVEVfQUxMX0lURU1TID0gd3hFVlRfRklSU1QgKyA3MDUsDQogICAgd3hF
VlRfQ09NTUFORF9MSVNUX0dFVF9JTkZPID0gd3hFVlRfRklSU1QgKyA3MDYsDQogICAgd3hFVlRf
Q09NTUFORF9MSVNUX1NFVF9JTkZPID0gd3hFVlRfRklSU1QgKyA3MDcsDQogICAgd3hFVlRfQ09N
TUFORF9MSVNUX0lURU1fU0VMRUNURUQgPSB3eEVWVF9GSVJTVCArIDcwOCwNCiAgICB3eEVWVF9D
T01NQU5EX0xJU1RfSVRFTV9ERVNFTEVDVEVEID0gd3hFVlRfRklSU1QgKyA3MDksDQogICAgd3hF
VlRfQ09NTUFORF9MSVNUX0tFWV9ET1dOID0gd3hFVlRfRklSU1QgKyA3MTAsDQogICAgd3hFVlRf
Q09NTUFORF9MSVNUX0lOU0VSVF9JVEVNID0gd3hFVlRfRklSU1QgKyA3MTEsDQogICAgd3hFVlRf
Q09NTUFORF9MSVNUX0NPTF9DTElDSyA9IHd4RVZUX0ZJUlNUICsgNzEyLA0KICAgIHd4RVZUX0NP
TU1BTkRfTElTVF9JVEVNX1JJR0hUX0NMSUNLID0gd3hFVlRfRklSU1QgKyA3MTMsDQogICAgd3hF
VlRfQ09NTUFORF9MSVNUX0lURU1fTUlERExFX0NMSUNLID0gd3hFVlRfRklSU1QgKyA3MTQsDQog
ICAgd3hFVlRfQ09NTUFORF9MSVNUX0lURU1fQUNUSVZBVEVEID0gd3hFVlRfRklSU1QgKyA3MTUs
DQoNCg0KICAgIHd4RVZUX0NPTU1BTkRfVEFCX1NFTF9DSEFOR0VEID0gd3hFVlRfRklSU1QgKyA4
MDAsDQogICAgd3hFVlRfQ09NTUFORF9UQUJfU0VMX0NIQU5HSU5HID0gd3hFVlRfRklSU1QgKyA4
MDEsDQogICAgd3hFVlRfQ09NTUFORF9OT1RFQk9PS19QQUdFX0NIQU5HRUQgPSB3eEVWVF9GSVJT
VCArIDgwMiwNCiAgICB3eEVWVF9DT01NQU5EX05PVEVCT09LX1BBR0VfQ0hBTkdJTkcgPSB3eEVW
VF9GSVJTVCArIDgwMywNCg0KDQogICAgd3hFVlRfQ09NTUFORF9TUExJVFRFUl9TQVNIX1BPU19D
SEFOR0VEID0gd3hFVlRfRklSU1QgKyA4NTAsDQogICAgd3hFVlRfQ09NTUFORF9TUExJVFRFUl9T
QVNIX1BPU19DSEFOR0lORyA9IHd4RVZUX0ZJUlNUICsgODUxLA0KICAgIHd4RVZUX0NPTU1BTkRf
U1BMSVRURVJfRE9VQkxFQ0xJQ0tFRCA9IHd4RVZUX0ZJUlNUICsgODUyLA0KICAgIHd4RVZUX0NP
TU1BTkRfU1BMSVRURVJfVU5TUExJVCA9IHd4RVZUX0ZJUlNUICsgODUzLA0KDQoNCiAgICB3eEVW
VF9XSVpBUkRfUEFHRV9DSEFOR0VEID0gd3hFVlRfRklSU1QgKyA5MDAsDQogICAgd3hFVlRfV0la
QVJEX1BBR0VfQ0hBTkdJTkcgPSB3eEVWVF9GSVJTVCArIDkwMSwNCiAgICB3eEVWVF9XSVpBUkRf
Q0FOQ0VMID0gd3hFVlRfRklSU1QgKyA5MDIsDQoNCg0KICAgIHd4RVZUX0NBTEVOREFSX1NFTF9D
SEFOR0VEID0gd3hFVlRfRklSU1QgKyA5NTAsDQogICAgd3hFVlRfQ0FMRU5EQVJfREFZX0NIQU5H
RUQgPSB3eEVWVF9GSVJTVCArIDk1MSwNCiAgICB3eEVWVF9DQUxFTkRBUl9NT05USF9DSEFOR0VE
ID0gd3hFVlRfRklSU1QgKyA5NTIsDQogICAgd3hFVlRfQ0FMRU5EQVJfWUVBUl9DSEFOR0VEID0g
d3hFVlRfRklSU1QgKyA5NTMsDQogICAgd3hFVlRfQ0FMRU5EQVJfRE9VQkxFQ0xJQ0tFRCA9IHd4
RVZUX0ZJUlNUICsgOTU0LA0KICAgIHd4RVZUX0NBTEVOREFSX1dFRUtEQVlfQ0xJQ0tFRCA9IHd4
RVZUX0ZJUlNUICsgOTU1LA0KDQoNCiAgICB3eEVWVF9QTE9UX1NFTF9DSEFOR0lORyA9IHd4RVZU
X0ZJUlNUICsgMTAwMCwNCiAgICB3eEVWVF9QTE9UX1NFTF9DSEFOR0VEID0gd3hFVlRfRklSU1Qg
KyAxMDAxLA0KICAgIHd4RVZUX1BMT1RfQ0xJQ0tFRCA9IHd4RVZUX0ZJUlNUICsgMTAwMiwNCiAg
ICB3eEVWVF9QTE9UX0RPVUJMRUNMSUNLRUQgPSB3eEVWVF9GSVJTVCArIDEwMDMsDQogICAgd3hF
VlRfUExPVF9aT09NX0lOID0gd3hFVlRfRklSU1QgKyAxMDA0LA0KICAgIHd4RVZUX1BMT1RfWk9P
TV9PVVQgPSB3eEVWVF9GSVJTVCArIDEwMDUsDQogICAgd3hFVlRfUExPVF9WQUxVRV9TRUxfQ1JF
QVRJTkcgPSB3eEVWVF9GSVJTVCArIDEwMTAsDQogICAgd3hFVlRfUExPVF9WQUxVRV9TRUxfQ1JF
QVRFRCA9IHd4RVZUX0ZJUlNUICsgMTAxMSwNCiAgICB3eEVWVF9QTE9UX1ZBTFVFX1NFTF9DSEFO
R0lORyA9IHd4RVZUX0ZJUlNUICsgMTAxMiwNCiAgICB3eEVWVF9QTE9UX1ZBTFVFX1NFTF9DSEFO
R0VEID0gd3hFVlRfRklSU1QgKyAxMDEzLA0KICAgIHd4RVZUX1BMT1RfQVJFQV9TRUxfQ1JFQVRJ
TkcgPSB3eEVWVF9GSVJTVCArIDEwMTQsDQogICAgd3hFVlRfUExPVF9BUkVBX1NFTF9DUkVBVEVE
ID0gd3hFVlRfRklSU1QgKyAxMDE1LA0KICAgIHd4RVZUX1BMT1RfQVJFQV9TRUxfQ0hBTkdJTkcg
PSB3eEVWVF9GSVJTVCArIDEwMTYsDQogICAgd3hFVlRfUExPVF9BUkVBX1NFTF9DSEFOR0VEID0g
d3hFVlRfRklSU1QgKyAxMDE3LA0KICAgIHd4RVZUX1BMT1RfQkVHSU5fWF9MQUJFTF9FRElUID0g
d3hFVlRfRklSU1QgKyAxMDIwLA0KICAgIHd4RVZUX1BMT1RfRU5EX1hfTEFCRUxfRURJVCA9IHd4
RVZUX0ZJUlNUICsgMTAyMSwNCiAgICB3eEVWVF9QTE9UX0JFR0lOX1lfTEFCRUxfRURJVCA9IHd4
RVZUX0ZJUlNUICsgMTAyMiwNCiAgICB3eEVWVF9QTE9UX0VORF9ZX0xBQkVMX0VESVQgPSB3eEVW
VF9GSVJTVCArIDEwMjMsDQogICAgd3hFVlRfUExPVF9CRUdJTl9USVRMRV9FRElUID0gd3hFVlRf
RklSU1QgKyAxMDI0LA0KICAgIHd4RVZUX1BMT1RfRU5EX1RJVExFX0VESVQgPSB3eEVWVF9GSVJT
VCArIDEwMjUsDQogICAgd3hFVlRfUExPVF9BUkVBX0NSRUFURSA9IHd4RVZUX0ZJUlNUICsgMTAy
NiwNCg0KICAgIHd4RVZUX1VTRVJfRklSU1QgPSB3eEVWVF9GSVJTVCArIDIwMDANCn07DQojIDM2
NiAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hFdmVudCA6IHB1YmxpYyB3eE9iamVjdA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4
Q2xhc3NJbmZvIHNtX2NsYXNzd3hFdmVudDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZ3eEV2ZW50OjpzbV9jbGFzc3d4RXZlbnQ7IH0NCg0KcHVibGljOg0KICAg
IHd4RXZlbnQoaW50IGlkID0gMCk7DQogICAgfnd4RXZlbnQoKSB7fQ0KDQogICAgdm9pZCBTZXRF
dmVudFR5cGUod3hFdmVudFR5cGUgdHlwKSB7IG1fZXZlbnRUeXBlID0gdHlwOyB9DQogICAgd3hF
dmVudFR5cGUgR2V0RXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0NCiAg
ICB3eE9iamVjdCAqR2V0RXZlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50T2JqZWN0
OyB9DQogICAgdm9pZCBTZXRFdmVudE9iamVjdCh3eE9iamVjdCAqb2JqKSB7IG1fZXZlbnRPYmpl
Y3QgPSBvYmo7IH0NCiAgICBsb25nIEdldFRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZVN0YW1wOyB9DQogICAgdm9pZCBTZXRUaW1lc3RhbXAobG9uZyB0cyA9IDApIHsgbV90aW1lU3Rh
bXAgPSB0czsgfQ0KICAgIGludCBHZXRJZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0NCiAgICB2
b2lkIFNldElkKGludCBJZCkgeyBtX2lkID0gSWQ7IH0NCg0KDQoNCg0KDQogICAgdm9pZCBTa2lw
KGJvb2wgc2tpcCA9IDEpIHsgbV9za2lwcGVkID0gc2tpcDsgfQ0KICAgIGJvb2wgR2V0U2tpcHBl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHBlZDsgfTsNCg0KDQoNCiAgICBib29sIElzQ29tbWFu
ZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbW1hbmRFdmVudDsgfQ0KDQogICAgdm9pZCBD
b3B5T2JqZWN0KHd4T2JqZWN0JiBvYmplY3RfZGVzdCkgY29uc3Q7DQoNCnB1YmxpYzoNCiAgICB3
eE9iamVjdCogbV9ldmVudE9iamVjdDsNCiAgICB3eEV2ZW50VHlwZSBtX2V2ZW50VHlwZTsNCiAg
ICBsb25nIG1fdGltZVN0YW1wOw0KICAgIGludCBtX2lkOw0KICAgIHd4T2JqZWN0KiBtX2NhbGxi
YWNrVXNlckRhdGE7DQogICAgYm9vbCBtX3NraXBwZWQ7DQoNCg0KDQogICAgYm9vbCBtX2lzQ29t
bWFuZEV2ZW50Ow0KfTsNCiMgNDI5ICIuLi8uLi9pbmNsdWRlL3d4L2V2ZW50LmgiDQpjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENvbW1hbmRFdmVudCA6IHB1YmxpYyB3eEV2ZW50
DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eENvbW1hbmRFdmVu
dDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eENvbW1hbmRF
dmVudDo6c21fY2xhc3N3eENvbW1hbmRFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hDb21tYW5k
RXZlbnQod3hFdmVudFR5cGUgY29tbWFuZFR5cGUgPSB3eEVWVF9OVUxMLCBpbnQgaWQgPSAwKTsN
CiAgICB+d3hDb21tYW5kRXZlbnQoKSB7fQ0KDQoNCg0KDQoNCg0KDQogICAgdm9pZCBTZXRDbGll
bnREYXRhKHZvaWQqIGNsaWVudERhdGEpIHsgbV9jbGllbnREYXRhID0gY2xpZW50RGF0YTsgfQ0K
ICAgIHZvaWQgKkdldENsaWVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudERhdGE7IH0N
Cg0KDQogICAgdm9pZCBTZXRDbGllbnRPYmplY3Qod3hDbGllbnREYXRhKiBjbGllbnRPYmplY3Qp
IHsgbV9jbGllbnRPYmplY3QgPSBjbGllbnRPYmplY3Q7IH0NCiAgICB2b2lkICpHZXRDbGllbnRP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudE9iamVjdDsgfQ0KDQoNCiAgICBpbnQgR2V0
U2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kSW50OyB9DQoNCg0KICAgIHZvaWQg
U2V0U3RyaW5nKGNvbnN0IHd4U3RyaW5nJiBzKSB7IG1fY29tbWFuZFN0cmluZyA9IHM7IH0NCiAg
ICB3eFN0cmluZyBHZXRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRTdHJpbmc7IH0N
Cg0KDQogICAgYm9vbCBJc0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRJbnQgIT0g
MDsgfQ0KDQoNCiAgICBib29sIElzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gKG1fZXh0cmFM
b25nICE9IDApOyB9DQoNCiAgICB2b2lkIFNldEV4dHJhTG9uZyhsb25nIGV4dHJhTG9uZykgeyBt
X2V4dHJhTG9uZyA9IGV4dHJhTG9uZzsgfQ0KICAgIGxvbmcgR2V0RXh0cmFMb25nKCkgY29uc3Qg
eyByZXR1cm4gbV9leHRyYUxvbmcgOyB9DQoNCiAgICB2b2lkIFNldEludChpbnQgaSkgeyBtX2Nv
bW1hbmRJbnQgPSBpOyB9DQogICAgbG9uZyBHZXRJbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1h
bmRJbnQgOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iaikgY29uc3Q7DQoN
Cg0KDQoNCg0KcHVibGljOg0KICAgIHd4U3RyaW5nIG1fY29tbWFuZFN0cmluZzsNCiAgICBpbnQg
bV9jb21tYW5kSW50Ow0KICAgIGxvbmcgbV9leHRyYUxvbmc7DQogICAgdm9pZCogbV9jbGllbnRE
YXRhOw0KICAgIHd4Q2xpZW50RGF0YSogbV9jbGllbnRPYmplY3Q7DQp9Ow0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hOb3RpZnlFdmVudCA6IHB1YmxpYyB3eENvbW1h
bmRFdmVudA0Kew0KcHVibGljOg0KICAgIHd4Tm90aWZ5RXZlbnQod3hFdmVudFR5cGUgY29tbWFu
ZFR5cGUgPSB3eEVWVF9OVUxMLCBpbnQgaWQgPSAwKQ0KICAgICAgICAgICAgICAgIDogd3hDb21t
YW5kRXZlbnQoY29tbWFuZFR5cGUsIGlkKSB7IG1fYkFsbG93ID0gMTsgfQ0KDQoNCiAgICB2b2lk
IFZldG8oKSB7IG1fYkFsbG93ID0gMDsgfQ0KDQoNCiAgICB2b2lkIEFsbG93KCkgeyBtX2JBbGxv
dyA9IDE7IH0NCg0KDQogICAgYm9vbCBJc0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2JBbGxv
dzsgfQ0KDQoNCg0KICAgIHZvaWQgQ29weU9iamVjdCh3eE9iamVjdCYgb2JqKSBjb25zdDsNCg0K
cHJpdmF0ZToNCiAgICBib29sIG1fYkFsbG93Ow0KDQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFz
c0luZm8gc21fY2xhc3N3eE5vdGlmeUV2ZW50OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJnd4Tm90aWZ5RXZlbnQ6OnNtX2NsYXNzd3hOb3RpZnlFdmVudDsgfQ0K
fTsNCiMgNTIzICIuLi8uLi9pbmNsdWRlL3d4L2V2ZW50LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eFNjcm9sbEV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50DQp7DQog
ICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFNjcm9sbEV2ZW50OyB3eENs
YXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U2Nyb2xsRXZlbnQ6OnNt
X2NsYXNzd3hTY3JvbGxFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hTY3JvbGxFdmVudCh3eEV2
ZW50VHlwZSBjb21tYW5kVHlwZSA9IHd4RVZUX05VTEwsDQogICAgICAgICAgICAgICAgICBpbnQg
aWQgPSAwLCBpbnQgcG9zID0gMCwgaW50IG9yaWVudCA9IDApOw0KICAgIH53eFNjcm9sbEV2ZW50
KCkge30NCg0KDQoNCg0KDQoNCiAgICBpbnQgR2V0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biAoaW50KSBtX2V4dHJhTG9uZyA7IH0NCiAgICBpbnQgR2V0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvbW1hbmRJbnQgOyB9DQogICAgdm9pZCBTZXRPcmllbnRhdGlvbihpbnQgb3JpZW50
KSB7IG1fZXh0cmFMb25nID0gKGxvbmcpIG9yaWVudDsgfQ0KICAgIHZvaWQgU2V0UG9zaXRpb24o
aW50IHBvcykgeyBtX2NvbW1hbmRJbnQgPSBwb3M7IH0NCn07DQojIDU1NiAiLi4vLi4vaW5jbHVk
ZS93eC9ldmVudC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTY3JvbGxX
aW5FdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0lu
Zm8gc21fY2xhc3N3eFNjcm9sbFdpbkV2ZW50OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJnd4U2Nyb2xsV2luRXZlbnQ6OnNtX2NsYXNzd3hTY3JvbGxXaW5FdmVu
dDsgfQ0KDQpwdWJsaWM6DQogICAgd3hTY3JvbGxXaW5FdmVudCh3eEV2ZW50VHlwZSBjb21tYW5k
VHlwZSA9IHd4RVZUX05VTEwsDQogICAgICAgICAgICAgICAgICAgICBpbnQgcG9zID0gMCwgaW50
IG9yaWVudCA9IDApOw0KICAgIH53eFNjcm9sbFdpbkV2ZW50KCkge30NCg0KDQoNCg0KDQogICAg
aW50IEdldE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGludCkgbV9leHRyYUxvbmcgOyB9
DQogICAgaW50IEdldFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kSW50IDsgfQ0K
ICAgIHZvaWQgU2V0T3JpZW50YXRpb24oaW50IG9yaWVudCkgeyBtX2V4dHJhTG9uZyA9IChsb25n
KSBvcmllbnQ7IH0NCiAgICB2b2lkIFNldFBvc2l0aW9uKGludCBwb3MpIHsgbV9jb21tYW5kSW50
ID0gcG9zOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iamVjdF9kZXN0KSBj
b25zdDsNCnB1YmxpYzoNCiAgICBpbnQgbV9jb21tYW5kSW50Ow0KICAgIGxvbmcgbV9leHRyYUxv
bmc7DQp9Ow0KIyA2MDkgIi4uLy4uL2luY2x1ZGUvd3gvZXZlbnQuaCINCmNsYXNzIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4TW91c2VFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAg
cHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE1vdXNlRXZlbnQ7IHd4Q2xhc3NJ
bmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hNb3VzZUV2ZW50OjpzbV9jbGFz
c3d4TW91c2VFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hNb3VzZUV2ZW50KHd4RXZlbnRUeXBl
IG1vdXNlVHlwZSA9IHd4RVZUX05VTEwpOw0KDQoNCiAgICBib29sIElzQnV0dG9uKCkgY29uc3Qg
eyByZXR1cm4gQnV0dG9uKC0xKTsgfQ0KDQoNCiAgICBib29sIEJ1dHRvbkRvd24oaW50IGJ1dCA9
IC0xKSBjb25zdDsNCg0KDQogICAgYm9vbCBCdXR0b25EQ2xpY2soaW50IGJ1dCA9IC0xKSBjb25z
dDsNCg0KDQogICAgYm9vbCBCdXR0b25VcChpbnQgYnV0ID0gLTEpIGNvbnN0Ow0KDQoNCiAgICBi
b29sIEJ1dHRvbihpbnQgYnV0KSBjb25zdDsNCg0KDQogICAgYm9vbCBCdXR0b25Jc0Rvd24oaW50
IGJ1dCkgY29uc3Q7DQoNCg0KICAgIGJvb2wgQ29udHJvbERvd24oKSBjb25zdCB7IHJldHVybiBt
X2NvbnRyb2xEb3duOyB9DQogICAgYm9vbCBNZXRhRG93bigpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YURvd247IH0NCiAgICBib29sIEFsdERvd24oKSBjb25zdCB7IHJldHVybiBtX2FsdERvd247IH0N
CiAgICBib29sIFNoaWZ0RG93bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnREb3duOyB9DQoNCg0K
ICAgIGJvb2wgTGVmdERvd24oKSBjb25zdCB7IHJldHVybiAobV9ldmVudFR5cGUgPT0gd3hFVlRf
TEVGVF9ET1dOKTsgfQ0KICAgIGJvb2wgTWlkZGxlRG93bigpIGNvbnN0IHsgcmV0dXJuIChtX2V2
ZW50VHlwZSA9PSB3eEVWVF9NSURETEVfRE9XTik7IH0NCiAgICBib29sIFJpZ2h0RG93bigpIGNv
bnN0IHsgcmV0dXJuIChtX2V2ZW50VHlwZSA9PSB3eEVWVF9SSUdIVF9ET1dOKTsgfQ0KDQogICAg
Ym9vbCBMZWZ0VXAoKSBjb25zdCB7IHJldHVybiAobV9ldmVudFR5cGUgPT0gd3hFVlRfTEVGVF9V
UCk7IH0NCiAgICBib29sIE1pZGRsZVVwKCkgY29uc3QgeyByZXR1cm4gKG1fZXZlbnRUeXBlID09
IHd4RVZUX01JRERMRV9VUCk7IH0NCiAgICBib29sIFJpZ2h0VXAoKSBjb25zdCB7IHJldHVybiAo
bV9ldmVudFR5cGUgPT0gd3hFVlRfUklHSFRfVVApOyB9DQoNCiAgICBib29sIExlZnREQ2xpY2so
KSBjb25zdCB7IHJldHVybiAobV9ldmVudFR5cGUgPT0gd3hFVlRfTEVGVF9EQ0xJQ0spOyB9DQog
ICAgYm9vbCBNaWRkbGVEQ2xpY2soKSBjb25zdCB7IHJldHVybiAobV9ldmVudFR5cGUgPT0gd3hF
VlRfTUlERExFX0RDTElDSyk7IH0NCiAgICBib29sIFJpZ2h0RENsaWNrKCkgY29uc3QgeyByZXR1
cm4gKG1fZXZlbnRUeXBlID09IHd4RVZUX1JJR0hUX0RDTElDSyk7IH0NCg0KDQoNCiAgICBib29s
IExlZnRJc0Rvd24oKSBjb25zdCB7IHJldHVybiBtX2xlZnREb3duOyB9DQogICAgYm9vbCBNaWRk
bGVJc0Rvd24oKSBjb25zdCB7IHJldHVybiBtX21pZGRsZURvd247IH0NCiAgICBib29sIFJpZ2h0
SXNEb3duKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodERvd247IH0NCg0KDQogICAgYm9vbCBEcmFn
Z2luZygpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gKChtX2V2ZW50VHlwZSA9PSB3eEVW
VF9NT1RJT04pICYmDQogICAgICAgICAgICAgICAgKExlZnRJc0Rvd24oKSB8fCBNaWRkbGVJc0Rv
d24oKSB8fCBSaWdodElzRG93bigpKSk7DQogICAgfQ0KDQoNCiAgICBib29sIE1vdmluZygpIGNv
bnN0IHsgcmV0dXJuIChtX2V2ZW50VHlwZSA9PSB3eEVWVF9NT1RJT04pOyB9DQoNCg0KICAgIGJv
b2wgRW50ZXJpbmcoKSBjb25zdCB7IHJldHVybiAobV9ldmVudFR5cGUgPT0gd3hFVlRfRU5URVJf
V0lORE9XKTsgfQ0KDQoNCiAgICBib29sIExlYXZpbmcoKSBjb25zdCB7IHJldHVybiAobV9ldmVu
dFR5cGUgPT0gd3hFVlRfTEVBVkVfV0lORE9XKTsgfQ0KDQoNCiAgICB2b2lkIEdldFBvc2l0aW9u
KHd4Q29vcmQgKnhwb3MsIHd4Q29vcmQgKnlwb3MpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAo
eHBvcykNCiAgICAgICAgICAgICp4cG9zID0gbV94Ow0KICAgICAgICBpZiAoeXBvcykNCiAgICAg
ICAgICAgICp5cG9zID0gbV95Ow0KICAgIH0NCg0KDQogICAgdm9pZCBHZXRQb3NpdGlvbihsb25n
ICp4cG9zLCBsb25nICp5cG9zKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKHhwb3MpDQogICAg
ICAgICAgICAqeHBvcyA9IChsb25nKW1feDsNCiAgICAgICAgaWYgKHlwb3MpDQogICAgICAgICAg
ICAqeXBvcyA9IChsb25nKW1feTsNCiAgICB9DQoNCg0KDQogICAgd3hQb2ludCBHZXRQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHd4UG9pbnQobV94LCBtX3kpOyB9DQoNCg0KICAgIHd4UG9pbnQg
R2V0TG9naWNhbFBvc2l0aW9uKGNvbnN0IHd4REMmIGRjKSBjb25zdCA7DQojIDcxNyAiLi4vLi4v
aW5jbHVkZS93eC9ldmVudC5oIg0KICAgIHd4Q29vcmQgR2V0WCgpIGNvbnN0IHsgcmV0dXJuIG1f
eDsgfQ0KDQoNCiAgICB3eENvb3JkIEdldFkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0NCg0KICAg
IHZvaWQgQ29weU9iamVjdCh3eE9iamVjdCYgb2JqKSBjb25zdDsNCg0KcHVibGljOg0KICAgIHd4
Q29vcmQgbV94LCBtX3k7DQoNCiAgICBib29sIG1fbGVmdERvd247DQogICAgYm9vbCBtX21pZGRs
ZURvd247DQogICAgYm9vbCBtX3JpZ2h0RG93bjsNCg0KICAgIGJvb2wgbV9jb250cm9sRG93bjsN
CiAgICBib29sIG1fc2hpZnREb3duOw0KICAgIGJvb2wgbV9hbHREb3duOw0KICAgIGJvb2wgbV9t
ZXRhRG93bjsNCn07DQoNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4U2V0Q3Vyc29yRXZlbnQgOiBwdWJsaWMgd3hFdmVudA0Kew0KcHVibGljOg0KICAgIHd4
U2V0Q3Vyc29yRXZlbnQod3hDb29yZCB4LCB3eENvb3JkIHkpDQogICAgew0KICAgICAgICBtX2V2
ZW50VHlwZSA9IHd4RVZUX1NFVF9DVVJTT1I7DQoNCiAgICAgICAgbV94ID0geDsNCiAgICAgICAg
bV95ID0geTsNCiAgICB9DQoNCiAgICB3eENvb3JkIEdldFgoKSBjb25zdCB7IHJldHVybiBtX3g7
IH0NCiAgICB3eENvb3JkIEdldFkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0NCg0KICAgIHZvaWQg
U2V0Q3Vyc29yKGNvbnN0IHd4Q3Vyc29yJiBjdXJzb3IpIHsgbV9jdXJzb3IgPSBjdXJzb3I7IH0N
CiAgICBjb25zdCB3eEN1cnNvciYgR2V0Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3I7
IH0NCiAgICBib29sIEhhc0N1cnNvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yLk9rKCk7IH0N
Cg0KcHJpdmF0ZToNCiAgICB3eENvb3JkIG1feCwgbV95Ow0KICAgIHd4Q3Vyc29yIG1fY3Vyc29y
Ow0KfTsNCiMgNzc1ICIuLi8uLi9pbmNsdWRlL3d4L2V2ZW50LmgiDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eEtleUV2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCiAgICBwdWJs
aWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4S2V5RXZlbnQ7IHd4Q2xhc3NJbmZvICpH
ZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hLZXlFdmVudDo6c21fY2xhc3N3eEtleUV2
ZW50OyB9DQoNCnB1YmxpYzoNCiAgICB3eEtleUV2ZW50KHd4RXZlbnRUeXBlIGtleVR5cGUgPSB3
eEVWVF9OVUxMKTsNCg0KDQogICAgYm9vbCBDb250cm9sRG93bigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udHJvbERvd247IH0NCiAgICBib29sIE1ldGFEb3duKCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
RG93bjsgfQ0KICAgIGJvb2wgQWx0RG93bigpIGNvbnN0IHsgcmV0dXJuIG1fYWx0RG93bjsgfQ0K
ICAgIGJvb2wgU2hpZnREb3duKCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdERvd247IH0NCg0KICAg
IGJvb2wgSGFzTW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gQ29udHJvbERvd24oKSB8fCBBbHRE
b3duKCkgfHwgTWV0YURvd24oKTsgfQ0KDQoNCiAgICBpbnQgR2V0S2V5Q29kZSgpIGNvbnN0IHsg
cmV0dXJuIChpbnQpbV9rZXlDb2RlOyB9DQoNCg0KICAgIHZvaWQgR2V0UG9zaXRpb24od3hDb29y
ZCAqeHBvcywgd3hDb29yZCAqeXBvcykgY29uc3QNCiAgICB7DQogICAgICAgIGlmICh4cG9zKSAq
eHBvcyA9IG1feDsNCiAgICAgICAgaWYgKHlwb3MpICp5cG9zID0gbV95Ow0KICAgIH0NCg0KDQog
ICAgdm9pZCBHZXRQb3NpdGlvbihsb25nICp4cG9zLCBsb25nICp5cG9zKSBjb25zdA0KICAgIHsN
CiAgICAgICAgaWYgKHhwb3MpICp4cG9zID0gKGxvbmcpbV94Ow0KICAgICAgICBpZiAoeXBvcykg
Knlwb3MgPSAobG9uZyltX3k7DQogICAgfQ0KDQoNCiAgICB3eFBvaW50IEdldFBvc2l0aW9uKCkg
Y29uc3QNCiAgICAgICAgeyByZXR1cm4gd3hQb2ludChtX3gsIG1feSk7IH0NCg0KDQogICAgd3hD
b29yZCBHZXRYKCkgY29uc3QgeyByZXR1cm4gbV94OyB9DQoNCg0KICAgIHd4Q29vcmQgR2V0WSgp
IGNvbnN0IHsgcmV0dXJuIG1feTsgfQ0KDQogICAgdm9pZCBDb3B5T2JqZWN0KHd4T2JqZWN0JiBv
YmopIGNvbnN0Ow0KDQoNCiAgICBsb25nIEtleUNvZGUoKSBjb25zdCB7IHJldHVybiBtX2tleUNv
ZGU7IH0NCg0KcHVibGljOg0KICAgIHd4Q29vcmQgbV94LCBtX3k7DQoNCiAgICBsb25nIG1fa2V5
Q29kZTsNCg0KICAgIGJvb2wgbV9jb250cm9sRG93bjsNCiAgICBib29sIG1fc2hpZnREb3duOw0K
ICAgIGJvb2wgbV9hbHREb3duOw0KICAgIGJvb2wgbV9tZXRhRG93bjsNCiAgICBib29sIG1fc2Nh
bkNvZGU7DQp9Ow0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hTaXplRXZlbnQgOiBwdWJsaWMgd3hFdmVudA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xh
c3NJbmZvIHNtX2NsYXNzd3hTaXplRXZlbnQ7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmd3hTaXplRXZlbnQ6OnNtX2NsYXNzd3hTaXplRXZlbnQ7IH0NCg0KcHVi
bGljOg0KICAgIHd4U2l6ZSBtX3NpemU7DQoNCiAgICB3eFNpemVFdmVudCgpIHsgbV9ldmVudFR5
cGUgPSB3eEVWVF9TSVpFOyB9DQogICAgd3hTaXplRXZlbnQoY29uc3Qgd3hTaXplJiBzeiwgaW50
IGlkID0gMCkNCiAgICAgICAgOiBtX3NpemUoc3opDQogICAgICAgIHsgbV9ldmVudFR5cGUgPSB3
eEVWVF9TSVpFOyBtX2lkID0gaWQ7IH0NCg0KICAgIHd4U2l6ZSBHZXRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iaikgY29u
c3Q7DQp9Ow0KDQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eE1vdmVFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFz
c0luZm8gc21fY2xhc3N3eE1vdmVFdmVudDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZ3eE1vdmVFdmVudDo6c21fY2xhc3N3eE1vdmVFdmVudDsgfQ0KDQpwdWJs
aWM6DQogICAgd3hQb2ludCBtX3BvczsNCg0KICAgIHd4TW92ZUV2ZW50KCkgeyBtX2V2ZW50VHlw
ZSA9IHd4RVZUX01PVkU7IH0NCiAgICB3eE1vdmVFdmVudChjb25zdCB3eFBvaW50JiBwb3MsIGlu
dCBpZCA9IDApDQogICAgICAgIDogbV9wb3MocG9zKQ0KICAgICAgICB7IG1fZXZlbnRUeXBlID0g
d3hFVlRfTU9WRTsgbV9pZCA9IGlkOyB9DQoNCiAgICB3eFBvaW50IEdldFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3M7IH0NCg0KICAgIHZvaWQgQ29weU9iamVjdCh3eE9iamVjdCYgb2Jq
KSBjb25zdDsNCn07DQojIDg4OCAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KICAgIGV4dGVy
biBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBpbnQgZ19pc1BhaW50aW5nOw0KDQoNCmNsYXNz
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4UGFpbnRFdmVudCA6IHB1YmxpYyB3eEV2ZW50
DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFBhaW50RXZlbnQ7
IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hQYWludEV2ZW50
OjpzbV9jbGFzc3d4UGFpbnRFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hQYWludEV2ZW50KGlu
dCBJZCA9IDApDQogICAgew0KICAgICAgICBtX2V2ZW50VHlwZSA9IHd4RVZUX1BBSU5UOw0KICAg
ICAgICBtX2lkID0gSWQ7DQoNCg0KDQogICAgICAgIGdfaXNQYWludGluZysrOw0KDQogICAgfQ0K
DQoNCiAgICB+d3hQYWludEV2ZW50KCkNCiAgICB7DQogICAgICAgIGdfaXNQYWludGluZy0tOw0K
ICAgIH0NCg0KfTsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4RXJhc2VFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hD
bGFzc0luZm8gc21fY2xhc3N3eEVyYXNlRXZlbnQ7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8o
KSBjb25zdCB7IHJldHVybiAmd3hFcmFzZUV2ZW50OjpzbV9jbGFzc3d4RXJhc2VFdmVudDsgfQ0K
DQpwdWJsaWM6DQogICAgd3hEQyAqbV9kYzsNCg0KICAgIHd4RXJhc2VFdmVudChpbnQgSWQgPSAw
LCB3eERDICpkYyA9ICh3eERDICopIF9fbnVsbCkNCiAgICAgICAgeyBtX2V2ZW50VHlwZSA9IHd4
RVZUX0VSQVNFX0JBQ0tHUk9VTkQ7IG1faWQgPSBJZDsgbV9kYyA9IGRjOyB9DQogICAgd3hEQyAq
R2V0REMoKSBjb25zdCB7IHJldHVybiBtX2RjOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hP
YmplY3QmIG9iaikgY29uc3Q7DQp9Ow0KDQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eEZvY3VzRXZlbnQgOiBwdWJsaWMgd3hFdmVudA0Kew0KICAgIHB1Ymxp
Yzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hGb2N1c0V2ZW50OyB3eENsYXNzSW5mbyAq
R2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4Rm9jdXNFdmVudDo6c21fY2xhc3N3eEZv
Y3VzRXZlbnQ7IH0NCg0KcHVibGljOg0KICAgIHd4Rm9jdXNFdmVudCh3eEV2ZW50VHlwZSB0eXBl
ID0gd3hFVlRfTlVMTCwgaW50IElkID0gMCkNCiAgICAgICAgeyBtX2V2ZW50VHlwZSA9IHR5cGU7
IG1faWQgPSBJZDsgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hBY3RpdmF0ZUV2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCiAgICBwdWJsaWM6
IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4QWN0aXZhdGVFdmVudDsgd3hDbGFzc0luZm8g
KkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEFjdGl2YXRlRXZlbnQ6OnNtX2NsYXNz
d3hBY3RpdmF0ZUV2ZW50OyB9DQoNCnB1YmxpYzoNCiAgICB3eEFjdGl2YXRlRXZlbnQod3hFdmVu
dFR5cGUgdHlwZSA9IHd4RVZUX05VTEwsIGJvb2wgYWN0aXZlID0gMSwgaW50IElkID0gMCkNCiAg
ICAgICAgeyBtX2V2ZW50VHlwZSA9IHR5cGU7IG1fYWN0aXZlID0gYWN0aXZlOyBtX2lkID0gSWQ7
IH0NCiAgICBib29sIEdldEFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9DQoNCiAg
ICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iaikgY29uc3Q7DQoNCnByaXZhdGU6DQogICAg
Ym9vbCBtX2FjdGl2ZTsNCn07DQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eEluaXREaWFsb2dFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGlj
OiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eEluaXREaWFsb2dFdmVudDsgd3hDbGFzc0lu
Zm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEluaXREaWFsb2dFdmVudDo6c21f
Y2xhc3N3eEluaXREaWFsb2dFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hJbml0RGlhbG9nRXZl
bnQoaW50IElkID0gMCkNCiAgICAgICAgeyBtX2V2ZW50VHlwZSA9IHd4RVZUX0lOSVRfRElBTE9H
OyBtX2lkID0gSWQ7IH0NCn07DQojIDk5MyAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KY2xh
c3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW51RXZlbnQgOiBwdWJsaWMgd3hFdmVu
dA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hNZW51RXZlbnQ7
IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hNZW51RXZlbnQ6
OnNtX2NsYXNzd3hNZW51RXZlbnQ7IH0NCg0KcHVibGljOg0KICAgIHd4TWVudUV2ZW50KHd4RXZl
bnRUeXBlIHR5cGUgPSB3eEVWVF9OVUxMLCBpbnQgaWQgPSAwKQ0KICAgICAgeyBtX2V2ZW50VHlw
ZSA9IHR5cGU7IG1fbWVudUlkID0gaWQ7IG1faWQgPSBpZDsgfQ0KDQogICAgaW50IEdldE1lbnVJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudUlkOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hP
YmplY3QmIG9iaikgY29uc3Q7DQpwcml2YXRlOg0KICAgIGludCBtX21lbnVJZDsNCn07DQojIDEw
MTUgIi4uLy4uL2luY2x1ZGUvd3gvZXZlbnQuaCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4Q2xvc2VFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGljOiBzdGF0
aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eENsb3NlRXZlbnQ7IHd4Q2xhc3NJbmZvICpHZXRDbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hDbG9zZUV2ZW50OjpzbV9jbGFzc3d4Q2xvc2VFdmVu
dDsgfQ0KDQpwdWJsaWM6DQogICAgd3hDbG9zZUV2ZW50KHd4RXZlbnRUeXBlIHR5cGUgPSB3eEVW
VF9OVUxMLCBpbnQgaWQgPSAwKQ0KICAgIHsNCiAgICAgICAgbV9ldmVudFR5cGUgPSB0eXBlOw0K
ICAgICAgICBtX2xvZ2dpbmdPZmYgPSAxOw0KICAgICAgICBtX3ZldG8gPSAwOw0KICAgICAgICBt
X2lkID0gaWQ7DQoNCg0KDQogICAgICAgIG1fY2FuVmV0byA9IDE7DQogICAgfQ0KDQogICAgdm9p
ZCBTZXRMb2dnaW5nT2ZmKGJvb2wgbG9nT2ZmKSB7IG1fbG9nZ2luZ09mZiA9IGxvZ09mZjsgfQ0K
ICAgIGJvb2wgR2V0TG9nZ2luZ09mZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2luZ09mZjsgfQ0K
DQogICAgdm9pZCBWZXRvKGJvb2wgdmV0byA9IDEpDQogICAgew0KDQogICAgICAgIGlmICghKG1f
Y2FuVmV0bykpIHtpZiAoICEod3hGYWxzZSkgKSB3eE9uQXNzZXJ0KCIuLi8uLi9pbmNsdWRlL3d4
L2V2ZW50LmgiLCAxMDM5LCAiY2FsbCB0byBWZXRvKCkgaWdub3JlZCAoY2FuJ3QgdmV0byB0aGlz
IGV2ZW50KSIpOyByZXR1cm47IH07DQoNCg0KICAgICAgICBtX3ZldG8gPSB2ZXRvOw0KICAgIH0N
CiAgICB2b2lkIFNldENhblZldG8oYm9vbCBjYW5WZXRvKSB7IG1fY2FuVmV0byA9IGNhblZldG87
IH0NCg0KICAgIGJvb2wgQ2FuVmV0bygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuVmV0bzsgfQ0KICAg
IGJvb2wgR2V0VmV0bygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuVmV0byAmJiBtX3ZldG87IH0NCiMg
MTA1NiAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KICAgIHZvaWQgQ29weU9iamVjdCh3eE9i
amVjdCYgb2JqKSBjb25zdDsNCg0KcHJvdGVjdGVkOg0KICAgIGJvb2wgbV9sb2dnaW5nT2ZmOw0K
ICAgIGJvb2wgbV92ZXRvLCBtX2NhblZldG87DQoNCg0KDQoNCn07DQoNCg0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTaG93RXZlbnQgOiBwdWJsaWMgd3hFdmVudA0K
ew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hTaG93RXZlbnQ7IHd4
Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hTaG93RXZlbnQ6OnNt
X2NsYXNzd3hTaG93RXZlbnQ7IH0NCg0KcHVibGljOg0KDQogICAgd3hTaG93RXZlbnQoaW50IGlk
ID0gMCwgYm9vbCBzaG93ID0gMCkNCiAgICAgICAgeyBtX2V2ZW50VHlwZSA9IHd4RVZUX1NIT1c7
IG1faWQgPSBpZDsgbV9zaG93ID0gc2hvdzsgfQ0KDQogICAgdm9pZCBTZXRTaG93KGJvb2wgc2hv
dykgeyBtX3Nob3cgPSBzaG93OyB9DQogICAgYm9vbCBHZXRTaG93KCkgY29uc3QgeyByZXR1cm4g
bV9zaG93OyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iaikgY29uc3Q7DQoN
CnByb3RlY3RlZDoNCiAgICBib29sIG1fc2hvdzsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hJY29uaXplRXZlbnQgOiBwdWJsaWMgd3hFdmVudA0Kew0K
ICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hJY29uaXplRXZlbnQ7IHd4
Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hJY29uaXplRXZlbnQ6
OnNtX2NsYXNzd3hJY29uaXplRXZlbnQ7IH0NCg0KcHVibGljOg0KICAgIHd4SWNvbml6ZUV2ZW50
KGludCBpZCA9IDApDQogICAgICAgIHsgbV9ldmVudFR5cGUgPSB3eEVWVF9JQ09OSVpFOyBtX2lk
ID0gaWQ7IH0NCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hNYXhpbWl6ZUV2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3
eENsYXNzSW5mbyBzbV9jbGFzc3d4TWF4aW1pemVFdmVudDsgd3hDbGFzc0luZm8gKkdldENsYXNz
SW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eE1heGltaXplRXZlbnQ6OnNtX2NsYXNzd3hNYXhpbWl6
ZUV2ZW50OyB9DQoNCnB1YmxpYzoNCiAgd3hNYXhpbWl6ZUV2ZW50KGludCBpZCA9IDApDQogICAg
ICB7IG1fZXZlbnRUeXBlID0gd3hFVlRfTUFYSU1JWkU7IG1faWQgPSBpZDsgfQ0KfTsNCiMgMTEz
NCAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hKb3lzdGlja0V2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCiAgICBwdWJsaWM6IHN0
YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Sm95c3RpY2tFdmVudDsgd3hDbGFzc0luZm8gKkdl
dENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEpveXN0aWNrRXZlbnQ6OnNtX2NsYXNzd3hK
b3lzdGlja0V2ZW50OyB9DQoNCnB1YmxpYzoNCiAgICB3eFBvaW50IG1fcG9zOw0KICAgIGludCBt
X3pQb3NpdGlvbjsNCiAgICBpbnQgbV9idXR0b25DaGFuZ2U7DQogICAgaW50IG1fYnV0dG9uU3Rh
dGU7DQogICAgaW50IG1fam95U3RpY2s7DQoNCiAgICB3eEpveXN0aWNrRXZlbnQod3hFdmVudFR5
cGUgdHlwZSA9IHd4RVZUX05VTEwsDQogICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSA9IDAs
DQogICAgICAgICAgICAgICAgICAgIGludCBqb3lzdGljayA9IDAsDQogICAgICAgICAgICAgICAg
ICAgIGludCBjaGFuZ2UgPSAwKQ0KICAgIHsNCiAgICAgICAgbV9ldmVudFR5cGUgPSB0eXBlOw0K
ICAgICAgICBtX2J1dHRvblN0YXRlID0gc3RhdGU7DQogICAgICAgIG1fcG9zID0gd3hQb2ludCgw
LDApOw0KICAgICAgICBtX3pQb3NpdGlvbiA9IDA7DQogICAgICAgIG1fam95U3RpY2sgPSBqb3lz
dGljazsNCiAgICAgICAgbV9idXR0b25DaGFuZ2UgPSBjaGFuZ2U7DQogICAgfQ0KDQogICAgd3hQ
b2ludCBHZXRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9DQogICAgaW50IEdldFpQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1felBvc2l0aW9uOyB9DQogICAgaW50IEdldEJ1dHRv
blN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b25TdGF0ZTsgfQ0KICAgIGludCBHZXRCdXR0
b25DaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbkNoYW5nZTsgfQ0KICAgIGludCBHZXRK
b3lzdGljaygpIGNvbnN0IHsgcmV0dXJuIG1fam95U3RpY2s7IH0NCg0KICAgIHZvaWQgU2V0Sm95
c3RpY2soaW50IHN0aWNrKSB7IG1fam95U3RpY2sgPSBzdGljazsgfQ0KICAgIHZvaWQgU2V0QnV0
dG9uU3RhdGUoaW50IHN0YXRlKSB7IG1fYnV0dG9uU3RhdGUgPSBzdGF0ZTsgfQ0KICAgIHZvaWQg
U2V0QnV0dG9uQ2hhbmdlKGludCBjaGFuZ2UpIHsgbV9idXR0b25DaGFuZ2UgPSBjaGFuZ2U7IH0N
CiAgICB2b2lkIFNldFBvc2l0aW9uKGNvbnN0IHd4UG9pbnQmIHBvcykgeyBtX3BvcyA9IHBvczsg
fQ0KICAgIHZvaWQgU2V0WlBvc2l0aW9uKGludCB6UG9zKSB7IG1felBvc2l0aW9uID0gelBvczsg
fQ0KDQoNCiAgICBib29sIElzQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gKChHZXRFdmVudFR5cGUo
KSA9PSB3eEVWVF9KT1lfQlVUVE9OX0RPV04pIHx8DQogICAgICAgICAgICAoR2V0RXZlbnRUeXBl
KCkgPT0gd3hFVlRfSk9ZX0JVVFRPTl9VUCkpOyB9DQoNCg0KICAgIGJvb2wgSXNNb3ZlKCkgY29u
c3QgeyByZXR1cm4gKEdldEV2ZW50VHlwZSgpID09IHd4RVZUX0pPWV9NT1ZFKSA7IH0NCg0KDQog
ICAgYm9vbCBJc1pNb3ZlKCkgY29uc3QgeyByZXR1cm4gKEdldEV2ZW50VHlwZSgpID09IHd4RVZU
X0pPWV9aTU9WRSkgOyB9DQoNCg0KICAgIGJvb2wgQnV0dG9uRG93bihpbnQgYnV0ID0gLTEpIGNv
bnN0DQogICAgeyByZXR1cm4gKChHZXRFdmVudFR5cGUoKSA9PSB3eEVWVF9KT1lfQlVUVE9OX0RP
V04pICYmDQogICAgICAgICAgICAoKGJ1dCA9PSAtMSkgfHwgKGJ1dCA9PSBtX2J1dHRvbkNoYW5n
ZSkpKTsgfQ0KDQoNCiAgICBib29sIEJ1dHRvblVwKGludCBidXQgPSAtMSkgY29uc3QNCiAgICB7
IHJldHVybiAoKEdldEV2ZW50VHlwZSgpID09IHd4RVZUX0pPWV9CVVRUT05fVVApICYmDQogICAg
ICAgICAgICAoKGJ1dCA9PSAtMSkgfHwgKGJ1dCA9PSBtX2J1dHRvbkNoYW5nZSkpKTsgfQ0KDQoN
CiAgICBib29sIEJ1dHRvbklzRG93bihpbnQgYnV0ID0gLTEpIGNvbnN0DQogICAgeyByZXR1cm4g
KCgoYnV0ID09IC0xKSAmJiAobV9idXR0b25TdGF0ZSAhPSAwKSkgfHwNCiAgICAgICAgICAgICgo
bV9idXR0b25TdGF0ZSAmIGJ1dCkgPT0gYnV0KSk7IH0NCg0KICAgIHZvaWQgQ29weU9iamVjdCh3
eE9iamVjdCYgb2JqKSBjb25zdDsNCn07DQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eERyb3BGaWxlc0V2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCiAgICBw
dWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4RHJvcEZpbGVzRXZlbnQ7IHd4Q2xh
c3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hEcm9wRmlsZXNFdmVudDo6
c21fY2xhc3N3eERyb3BGaWxlc0V2ZW50OyB9DQoNCnB1YmxpYzoNCiAgICBpbnQgbV9ub0ZpbGVz
Ow0KICAgIHd4UG9pbnQgbV9wb3M7DQogICAgd3hTdHJpbmcqIG1fZmlsZXM7DQoNCiAgICB3eERy
b3BGaWxlc0V2ZW50KHd4RXZlbnRUeXBlIHR5cGUgPSB3eEVWVF9OVUxMLA0KICAgICAgICAgICAg
ICAgICAgICAgaW50IG5vRmlsZXMgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgd3hTdHJpbmcg
KmZpbGVzID0gKHd4U3RyaW5nICopIF9fbnVsbCkNCiAgICAgICAgeyBtX2V2ZW50VHlwZSA9IHR5
cGU7IG1fbm9GaWxlcyA9IG5vRmlsZXM7IG1fZmlsZXMgPSBmaWxlczsgfQ0KDQogICAgd3hQb2lu
dCBHZXRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9DQogICAgaW50IEdldE51bWJl
ck9mRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX25vRmlsZXM7IH0NCiAgICB3eFN0cmluZyAqR2V0
RmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVzOyB9DQoNCiAgICB2b2lkIENvcHlPYmplY3Qo
d3hPYmplY3QmIG9iaikgY29uc3Q7DQp9Ow0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hVcGRhdGVVSUV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50DQp7
DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFVwZGF0ZVVJRXZlbnQ7
IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hVcGRhdGVVSUV2
ZW50OjpzbV9jbGFzc3d4VXBkYXRlVUlFdmVudDsgfQ0KDQpwdWJsaWM6DQogICAgd3hVcGRhdGVV
SUV2ZW50KHd4V2luZG93SUQgY29tbWFuZElkID0gMCkNCiAgICB7DQogICAgICAgIG1fZXZlbnRU
eXBlID0gd3hFVlRfVVBEQVRFX1VJOw0KICAgICAgICBtX2lkID0gY29tbWFuZElkOw0KICAgICAg
ICBtX2NoZWNrZWQgPSAwOw0KICAgICAgICBtX3NldENoZWNrZWQgPSAwOw0KICAgICAgICBtX2Vu
YWJsZWQgPSAwOw0KICAgICAgICBtX3NldEVuYWJsZWQgPSAwOw0KICAgICAgICBtX3NldFRleHQg
PSAwOw0KICAgICAgICBtX3RleHQgPSAiIjsNCiAgICB9DQoNCiAgICBib29sIEdldENoZWNrZWQo
KSBjb25zdCB7IHJldHVybiBtX2NoZWNrZWQ7IH0NCiAgICBib29sIEdldEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0NCiAgICB3eFN0cmluZyBHZXRUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0OyB9DQogICAgYm9vbCBHZXRTZXRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRUZXh0OyB9DQogICAgYm9vbCBHZXRTZXRDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV9zZXRD
aGVja2VkOyB9DQogICAgYm9vbCBHZXRTZXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZXRF
bmFibGVkOyB9DQoNCiAgICB2b2lkIENoZWNrKGJvb2wgY2hlY2spIHsgbV9jaGVja2VkID0gY2hl
Y2s7IG1fc2V0Q2hlY2tlZCA9IDE7IH0NCiAgICB2b2lkIEVuYWJsZShib29sIGVuYWJsZSkgeyBt
X2VuYWJsZWQgPSBlbmFibGU7IG1fc2V0RW5hYmxlZCA9IDE7IH0NCiAgICB2b2lkIFNldFRleHQo
Y29uc3Qgd3hTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgbV9zZXRUZXh0ID0gMTsgfQ0K
DQogICAgdm9pZCBDb3B5T2JqZWN0KHd4T2JqZWN0JiBvYmopIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6
DQogICAgYm9vbCBtX2NoZWNrZWQ7DQogICAgYm9vbCBtX2VuYWJsZWQ7DQogICAgYm9vbCBtX3Nl
dEVuYWJsZWQ7DQogICAgYm9vbCBtX3NldFRleHQ7DQogICAgYm9vbCBtX3NldENoZWNrZWQ7DQog
ICAgd3hTdHJpbmcgbV90ZXh0Ow0KfTsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50IDogcHVibGljIHd4RXZlbnQNCnsN
CiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4U3lzQ29sb3VyQ2hhbmdl
ZEV2ZW50OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U3lz
Q29sb3VyQ2hhbmdlZEV2ZW50OjpzbV9jbGFzc3d4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50OyB9DQoN
CnB1YmxpYzoNCiAgICB3eFN5c0NvbG91ckNoYW5nZWRFdmVudCgpDQogICAgICAgIHsgbV9ldmVu
dFR5cGUgPSB3eEVWVF9TWVNfQ09MT1VSX0NIQU5HRUQ7IH0NCn07DQoNCg0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hQYWxldHRlQ2hhbmdlZEV2ZW50IDogcHVibGlj
IHd4RXZlbnQNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4UGFs
ZXR0ZUNoYW5nZWRFdmVudDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuICZ3eFBhbGV0dGVDaGFuZ2VkRXZlbnQ6OnNtX2NsYXNzd3hQYWxldHRlQ2hhbmdlZEV2ZW50
OyB9DQoNCnB1YmxpYzoNCiAgICB3eFBhbGV0dGVDaGFuZ2VkRXZlbnQod3hXaW5kb3dJRCBpZCA9
IDApIDogd3hFdmVudChpZCkNCiAgICB7DQogICAgICAgIG1fZXZlbnRUeXBlID0gd3hFVlRfUEFM
RVRURV9DSEFOR0VEOw0KICAgICAgICBtX2NoYW5nZWRXaW5kb3cgPSAod3hXaW5kb3cgKikgX19u
dWxsOw0KICAgIH0NCg0KICAgIHZvaWQgU2V0Q2hhbmdlZFdpbmRvdyh3eFdpbmRvdyogd2luKSB7
IG1fY2hhbmdlZFdpbmRvdyA9IHdpbjsgfQ0KICAgIHd4V2luZG93KiBHZXRDaGFuZ2VkV2luZG93
KCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkV2luZG93OyB9DQoNCiAgICB2b2lkIENvcHlPYmpl
Y3Qod3hPYmplY3QmIG9iaikgY29uc3Q7DQoNCnByb3RlY3RlZDoNCiAgICB3eFdpbmRvdyogbV9j
aGFuZ2VkV2luZG93Ow0KfTsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4UXVlcnlOZXdQYWxldHRlRXZlbnQgOiBwdWJsaWMgd3hFdmVudA0Kew0KICAgIHB1
YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hRdWVyeU5ld1BhbGV0dGVFdmVudDsg
d3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFF1ZXJ5TmV3UGFs
ZXR0ZUV2ZW50OjpzbV9jbGFzc3d4UXVlcnlOZXdQYWxldHRlRXZlbnQ7IH0NCg0KcHVibGljOg0K
ICAgIHd4UXVlcnlOZXdQYWxldHRlRXZlbnQod3hXaW5kb3dJRCBpZCA9IDApOiB3eEV2ZW50KGlk
KQ0KICAgICAgICB7IG1fZXZlbnRUeXBlID0gd3hFVlRfUVVFUllfTkVXX1BBTEVUVEU7IG1fcGFs
ZXR0ZVJlYWxpemVkID0gMDsgfQ0KDQoNCiAgICB2b2lkIFNldFBhbGV0dGVSZWFsaXplZChib29s
IHJlYWxpemVkKSB7IG1fcGFsZXR0ZVJlYWxpemVkID0gcmVhbGl6ZWQ7IH0NCiAgICBib29sIEdl
dFBhbGV0dGVSZWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFsZXR0ZVJlYWxpemVkOyB9DQoN
CiAgICB2b2lkIENvcHlPYmplY3Qod3hPYmplY3QmIG9iaikgY29uc3Q7DQoNCnByb3RlY3RlZDoN
CiAgICBib29sIG1fcGFsZXR0ZVJlYWxpemVkOw0KfTsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TmF2aWdhdGlvbktleUV2ZW50IDogcHVibGljIHd4RXZl
bnQNCnsNCnB1YmxpYzoNCiAgICB3eE5hdmlnYXRpb25LZXlFdmVudCgpDQogICAgew0KICAgICAg
ICBTZXRFdmVudFR5cGUod3hFVlRfTkFWSUdBVElPTl9LRVkpOw0KDQogICAgICAgIG1fZmxhZ3Mg
PSBJc0ZvcndhcmQgfCBQcm9wYWdhdGU7DQogICAgICAgIG1fZm9jdXMgPSAod3hXaW5kb3cgKilf
X251bGw7DQogICAgfQ0KDQoNCiAgICBib29sIEdldERpcmVjdGlvbigpIGNvbnN0DQogICAgICAg
IHsgcmV0dXJuIChtX2ZsYWdzICYgSXNGb3J3YXJkKSAhPSAwOyB9DQogICAgdm9pZCBTZXREaXJl
Y3Rpb24oYm9vbCBiRm9yd2FyZCkNCiAgICAgICAgeyBpZiAoIGJGb3J3YXJkICkgbV9mbGFncyB8
PSBJc0ZvcndhcmQ7IGVsc2UgbV9mbGFncyAmPSB+SXNGb3J3YXJkOyB9DQoNCg0KDQogICAgYm9v
bCBJc1dpbmRvd0NoYW5nZSgpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIChtX2ZsYWdzICYgV2lu
Q2hhbmdlKSAhPSAwOyB9DQogICAgdm9pZCBTZXRXaW5kb3dDaGFuZ2UoYm9vbCBiSXMpDQogICAg
ICAgIHsgaWYgKCBiSXMgKSBtX2ZsYWdzIHw9IFdpbkNoYW5nZTsgZWxzZSBtX2ZsYWdzICY9IH5X
aW5DaGFuZ2U7IH0NCg0KDQoNCg0KICAgIGJvb2wgU2hvdWxkUHJvcGFnYXRlKCkgY29uc3QNCiAg
ICAgICAgeyByZXR1cm4gKG1fZmxhZ3MgJiBQcm9wYWdhdGUpICE9IDA7IH0NCiAgICB2b2lkIFNl
dFByb3BhZ2F0ZShib29sIGJEb0l0KQ0KICAgICAgICB7IGlmICggYkRvSXQgKSBtX2ZsYWdzIHw9
IFByb3BhZ2F0ZTsgZWxzZSBtX2ZsYWdzICY9IH5Qcm9wYWdhdGU7IH0NCg0KDQoNCiAgICB3eFdp
bmRvdyogR2V0Q3VycmVudEZvY3VzKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1czsgfQ0KICAgIHZv
aWQgU2V0Q3VycmVudEZvY3VzKHd4V2luZG93ICp3aW4pIHsgbV9mb2N1cyA9IHdpbjsgfQ0KDQpw
cml2YXRlOg0KICAgIGVudW0NCiAgICB7DQogICAgICAgIElzRm9yd2FyZCA9IDB4MDAwMSwNCiAg
ICAgICAgV2luQ2hhbmdlID0gMHgwMDAyLA0KICAgICAgICBQcm9wYWdhdGUgPSAweDAwMDQNCiAg
ICB9Ow0KDQogICAgbG9uZyBtX2ZsYWdzOw0KICAgIHd4V2luZG93ICptX2ZvY3VzOw0KDQogICAg
cHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE5hdmlnYXRpb25LZXlFdmVudDsg
d3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eE5hdmlnYXRpb25L
ZXlFdmVudDo6c21fY2xhc3N3eE5hdmlnYXRpb25LZXlFdmVudDsgfQ0KfTsNCiMgMTM5NSAiLi4v
Li4vaW5jbHVkZS93eC9ldmVudC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hXaW5kb3dDcmVhdGVFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudA0Kew0KICAgIHB1Ymxp
Yzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hXaW5kb3dDcmVhdGVFdmVudDsgd3hDbGFz
c0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFdpbmRvd0NyZWF0ZUV2ZW50
OjpzbV9jbGFzc3d4V2luZG93Q3JlYXRlRXZlbnQ7IH0NCg0KcHVibGljOg0KICAgIHd4V2luZG93
Q3JlYXRlRXZlbnQod3hXaW5kb3cgKndpbiA9IF9fbnVsbCk7DQoNCiAgICB3eFdpbmRvdyAqR2V0
V2luZG93KCkgY29uc3QgeyByZXR1cm4gKHd4V2luZG93ICopR2V0RXZlbnRPYmplY3QoKTsgfQ0K
fTsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3dEZXN0cm95RXZl
bnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNz
SW5mbyBzbV9jbGFzc3d4V2luZG93RGVzdHJveUV2ZW50OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJnd4V2luZG93RGVzdHJveUV2ZW50OjpzbV9jbGFzc3d4V2lu
ZG93RGVzdHJveUV2ZW50OyB9DQoNCnB1YmxpYzoNCiAgICB3eFdpbmRvd0Rlc3Ryb3lFdmVudCh3
eFdpbmRvdyAqd2luID0gX19udWxsKTsNCg0KICAgIHd4V2luZG93ICpHZXRXaW5kb3coKSBjb25z
dCB7IHJldHVybiAod3hXaW5kb3cgKilHZXRFdmVudE9iamVjdCgpOyB9DQp9Ow0KIyAxNDIyICIu
Li8uLi9pbmNsdWRlL3d4L2V2ZW50LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eElkbGVFdmVudCA6IHB1YmxpYyB3eEV2ZW50DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hD
bGFzc0luZm8gc21fY2xhc3N3eElkbGVFdmVudDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygp
IGNvbnN0IHsgcmV0dXJuICZ3eElkbGVFdmVudDo6c21fY2xhc3N3eElkbGVFdmVudDsgfQ0KDQpw
dWJsaWM6DQogICAgd3hJZGxlRXZlbnQoKQ0KICAgICAgICB7IG1fZXZlbnRUeXBlID0gd3hFVlRf
SURMRTsgbV9yZXF1ZXN0TW9yZSA9IDA7IH0NCg0KICAgIHZvaWQgUmVxdWVzdE1vcmUoYm9vbCBu
ZWVkTW9yZSA9IDEpIHsgbV9yZXF1ZXN0TW9yZSA9IG5lZWRNb3JlOyB9DQogICAgYm9vbCBNb3Jl
UmVxdWVzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0TW9yZTsgfQ0KDQogICAgdm9pZCBD
b3B5T2JqZWN0KHd4T2JqZWN0JiBvYmopIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQogICAgYm9vbCBt
X3JlcXVlc3RNb3JlOw0KfTsNCiMgMTQ1NCAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KdHlw
ZWRlZiB2b2lkICh3eE9iamVjdDo6Knd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudCYpOw0K
DQpzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hFdmVudFRhYmxlRW50cnkNCnsN
Cg0KICAgIGludCBtX2V2ZW50VHlwZTsNCiAgICBpbnQgbV9pZDsNCiAgICBpbnQgbV9sYXN0SWQ7
DQogICAgd3hPYmplY3RFdmVudEZ1bmN0aW9uIG1fZm47DQoNCg0KICAgIHd4T2JqZWN0KiBtX2Nh
bGxiYWNrVXNlckRhdGE7DQp9Ow0KDQpzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hFdmVudFRhYmxlDQp7DQogICAgY29uc3Qgd3hFdmVudFRhYmxlICpiYXNlVGFibGU7DQogICAg
Y29uc3Qgd3hFdmVudFRhYmxlRW50cnkgKmVudHJpZXM7DQp9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eEV2dEhhbmRsZXIgOiBwdWJsaWMgd3hPYmplY3QNCnsNCiAgICBw
dWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4RXZ0SGFuZGxlcjsgd3hDbGFzc0lu
Zm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEV2dEhhbmRsZXI6OnNtX2NsYXNz
d3hFdnRIYW5kbGVyOyB9DQoNCnB1YmxpYzoNCiAgICB3eEV2dEhhbmRsZXIoKTsNCiAgICB+d3hF
dnRIYW5kbGVyKCk7DQoNCiAgICB3eEV2dEhhbmRsZXIgKkdldE5leHRIYW5kbGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0SGFuZGxlcjsgfQ0KICAgIHd4RXZ0SGFuZGxlciAqR2V0UHJldmlvdXNI
YW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0hhbmRsZXI7IH0NCiAgICB2b2lkIFNl
dE5leHRIYW5kbGVyKHd4RXZ0SGFuZGxlciAqaGFuZGxlcikgeyBtX25leHRIYW5kbGVyID0gaGFu
ZGxlcjsgfQ0KICAgIHZvaWQgU2V0UHJldmlvdXNIYW5kbGVyKHd4RXZ0SGFuZGxlciAqaGFuZGxl
cikgeyBtX3ByZXZpb3VzSGFuZGxlciA9IGhhbmRsZXI7IH0NCg0KICAgIHZvaWQgU2V0RXZ0SGFu
ZGxlckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0NCiAgICBi
b29sIEdldEV2dEhhbmRsZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9DQoN
Cg0KICAgIHZpcnR1YWwgYm9vbCBQcm9jZXNzRXZlbnQod3hFdmVudCYgZXZlbnQpOw0KDQoNCiAg
ICB2b2lkIEFkZFBlbmRpbmdFdmVudCh3eEV2ZW50JiBldmVudCk7DQoNCg0KICAgIHZvaWQgUHJv
Y2Vzc1BlbmRpbmdFdmVudHMoKTsNCg0KDQoNCiAgICBib29sIFByb2Nlc3NUaHJlYWRFdmVudCh3
eEV2ZW50JiBldmVudCk7DQoNCg0KDQoNCiAgICB2b2lkIENvbm5lY3QoIGludCBpZCwgaW50IGxh
c3RJZCwgd3hFdmVudFR5cGUgZXZlbnRUeXBlLA0KICAgICAgICAgICAgICAgICAgd3hPYmplY3RF
dmVudEZ1bmN0aW9uIGZ1bmMsDQogICAgICAgICAgICAgICAgICB3eE9iamVjdCAqdXNlckRhdGEg
PSAod3hPYmplY3QgKikgX19udWxsICk7DQoNCg0KICAgIHZvaWQgQ29ubmVjdCggaW50IGlkLCB3
eEV2ZW50VHlwZSBldmVudFR5cGUsDQogICAgICAgICAgICAgICAgICB3eE9iamVjdEV2ZW50RnVu
Y3Rpb24gZnVuYywNCiAgICAgICAgICAgICAgICAgIHd4T2JqZWN0ICp1c2VyRGF0YSA9ICh3eE9i
amVjdCAqKSBfX251bGwgKQ0KICAgICAgICB7IENvbm5lY3QoaWQsIC0xLCBldmVudFR5cGUsIGZ1
bmMsIHVzZXJEYXRhKTsgfQ0KDQogICAgYm9vbCBEaXNjb25uZWN0KCBpbnQgaWQsIGludCBsYXN0
SWQgPSAtMSwgd3hFdmVudFR5cGUgZXZlbnRUeXBlID0gd3hFVlRfTlVMTCwNCiAgICAgICAgICAg
ICAgICAgIHd4T2JqZWN0RXZlbnRGdW5jdGlvbiBmdW5jID0gX19udWxsLA0KICAgICAgICAgICAg
ICAgICAgd3hPYmplY3QgKnVzZXJEYXRhID0gKHd4T2JqZWN0ICopIF9fbnVsbCApOw0KDQoNCiAg
ICBib29sIERpc2Nvbm5lY3QoIGludCBpZCwgd3hFdmVudFR5cGUgZXZlbnRUeXBlID0gd3hFVlRf
TlVMTCwNCiAgICAgICAgICAgICAgICAgIHd4T2JqZWN0RXZlbnRGdW5jdGlvbiBmdW5jID0gX19u
dWxsLA0KICAgICAgICAgICAgICAgICAgd3hPYmplY3QgKnVzZXJEYXRhID0gKHd4T2JqZWN0ICop
IF9fbnVsbCApDQogICAgICAgIHsgcmV0dXJuIERpc2Nvbm5lY3QoaWQsIC0xLCBldmVudFR5cGUs
IGZ1bmMsIHVzZXJEYXRhKTsgfQ0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgU2VhcmNoRXZlbnRUYWJs
ZSh3eEV2ZW50VGFibGUmIHRhYmxlLCB3eEV2ZW50JiBldmVudCk7DQogICAgYm9vbCBTZWFyY2hE
eW5hbWljRXZlbnRUYWJsZSggd3hFdmVudCYgZXZlbnQgKTsNCg0KDQogICAgdm9pZCBDbGVhckV2
ZW50TG9ja2VyKCkNCiAgIHsNCg0KICAgICAgZGVsZXRlIG1fZXZlbnRzTG9ja2VyOw0KICAgICAg
bV9ldmVudHNMb2NrZXIgPSBfX251bGw7DQoNCiAgIH07DQojIDE1NTggIi4uLy4uL2luY2x1ZGUv
d3gvZXZlbnQuaCINCnByaXZhdGU6DQogICAgc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZUVudHJ5
IHNtX2V2ZW50VGFibGVFbnRyaWVzW107DQoNCnByb3RlY3RlZDoNCiAgICBzdGF0aWMgY29uc3Qg
d3hFdmVudFRhYmxlIHNtX2V2ZW50VGFibGU7DQoNCiAgICB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRU
YWJsZSAqR2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQogICAgd3hFdnRIYW5k
bGVyKiBtX25leHRIYW5kbGVyOw0KICAgIHd4RXZ0SGFuZGxlciogbV9wcmV2aW91c0hhbmRsZXI7
DQogICAgd3hMaXN0KiBtX2R5bmFtaWNFdmVudHM7DQogICAgd3hMaXN0KiBtX3BlbmRpbmdFdmVu
dHM7DQoNCg0KDQoNCiAgICB3eENyaXRpY2FsU2VjdGlvbiogbV9ldmVudHNMb2NrZXI7DQoNCg0K
DQoNCg0KICAgIGJvb2wgbV9pc1dpbmRvdzsNCg0KDQogICAgYm9vbCBtX2VuYWJsZWQ7DQp9Ow0K
DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4RXZlbnRGdW5jdGlvbikod3hFdmVudCYp
Ow0KDQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4Q29tbWFuZEV2ZW50RnVuY3Rpb24p
KHd4Q29tbWFuZEV2ZW50Jik7DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4U2Nyb2xs
RXZlbnRGdW5jdGlvbikod3hTY3JvbGxFdmVudCYpOw0KdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRs
ZXI6Oip3eFNjcm9sbFdpbkV2ZW50RnVuY3Rpb24pKHd4U2Nyb2xsV2luRXZlbnQmKTsNCnR5cGVk
ZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hTaXplRXZlbnRGdW5jdGlvbikod3hTaXplRXZlbnQm
KTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hNb3ZlRXZlbnRGdW5jdGlvbikod3hN
b3ZlRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hQYWludEV2ZW50RnVu
Y3Rpb24pKHd4UGFpbnRFdmVudCYpOw0KdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eEVy
YXNlRXZlbnRGdW5jdGlvbikod3hFcmFzZUV2ZW50Jik7DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFu
ZGxlcjo6Knd4TW91c2VFdmVudEZ1bmN0aW9uKSh3eE1vdXNlRXZlbnQmKTsNCnR5cGVkZWYgdm9p
ZCAod3hFdnRIYW5kbGVyOjoqd3hDaGFyRXZlbnRGdW5jdGlvbikod3hLZXlFdmVudCYpOw0KdHlw
ZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eEZvY3VzRXZlbnRGdW5jdGlvbikod3hGb2N1c0V2
ZW50Jik7DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4QWN0aXZhdGVFdmVudEZ1bmN0
aW9uKSh3eEFjdGl2YXRlRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hN
ZW51RXZlbnRGdW5jdGlvbikod3hNZW51RXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5k
bGVyOjoqd3hKb3lzdGlja0V2ZW50RnVuY3Rpb24pKHd4Sm95c3RpY2tFdmVudCYpOw0KdHlwZWRl
ZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eERyb3BGaWxlc0V2ZW50RnVuY3Rpb24pKHd4RHJvcEZp
bGVzRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hJbml0RGlhbG9nRXZl
bnRGdW5jdGlvbikod3hJbml0RGlhbG9nRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5k
bGVyOjoqd3hTeXNDb2xvdXJDaGFuZ2VkRnVuY3Rpb24pKHd4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50
Jik7DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4VXBkYXRlVUlFdmVudEZ1bmN0aW9u
KSh3eFVwZGF0ZVVJRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hJZGxl
RXZlbnRGdW5jdGlvbikod3hJZGxlRXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVy
Ojoqd3hDbG9zZUV2ZW50RnVuY3Rpb24pKHd4Q2xvc2VFdmVudCYpOw0KdHlwZWRlZiB2b2lkICh3
eEV2dEhhbmRsZXI6Oip3eFNob3dFdmVudEZ1bmN0aW9uKSh3eFNob3dFdmVudCYpOw0KdHlwZWRl
ZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eEljb25pemVFdmVudEZ1bmN0aW9uKSh3eFNob3dFdmVu
dCYpOw0KdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eE1heGltaXplRXZlbnRGdW5jdGlv
bikod3hTaG93RXZlbnQmKTsNCnR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hOYXZpZ2F0
aW9uS2V5RXZlbnRGdW5jdGlvbikod3hOYXZpZ2F0aW9uS2V5RXZlbnQmKTsNCnR5cGVkZWYgdm9p
ZCAod3hFdnRIYW5kbGVyOjoqd3hQYWxldHRlQ2hhbmdlZEV2ZW50RnVuY3Rpb24pKHd4UGFsZXR0
ZUNoYW5nZWRFdmVudCYpOw0KdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFF1ZXJ5TmV3
UGFsZXR0ZUV2ZW50RnVuY3Rpb24pKHd4UXVlcnlOZXdQYWxldHRlRXZlbnQmKTsNCnR5cGVkZWYg
dm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXaW5kb3dDcmVhdGVFdmVudEZ1bmN0aW9uKSh3eFdpbmRv
d0NyZWF0ZUV2ZW50Jik7DQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Knd4V2luZG93RGVz
dHJveUV2ZW50RnVuY3Rpb24pKHd4V2luZG93RGVzdHJveUV2ZW50Jik7DQp0eXBlZGVmIHZvaWQg
KHd4RXZ0SGFuZGxlcjo6Knd4U2V0Q3Vyc29yRXZlbnRGdW5jdGlvbikod3hTZXRDdXJzb3JFdmVu
dCYpOw0KdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eE5vdGlmeUV2ZW50RnVuY3Rpb24p
KHd4Tm90aWZ5RXZlbnQmKTsNCiMgMTgzOSAiLi4vLi4vaW5jbHVkZS93eC9ldmVudC5oIg0KZXh0
ZXJuIHd4TGlzdCAqd3hQZW5kaW5nRXZlbnRzOw0KDQogICAgZXh0ZXJuIHd4Q3JpdGljYWxTZWN0
aW9uICp3eFBlbmRpbmdFdmVudHNMb2NrZXI7DQojIDE4NTIgIi4uLy4uL2luY2x1ZGUvd3gvZXZl
bnQuaCINCnd4V2luZG93KiB3eEZpbmRGb2N1c0Rlc2NlbmRhbnQod3hXaW5kb3cqIGFuY2VzdG9y
KTsNCiMgMjQgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4
L2FwcC5oIiAxDQojIDE3ICIuLi8uLi9pbmNsdWRlL3d4L2FwcC5oIg0KI3ByYWdtYSBpbnRlcmZh
Y2UgImFwcGJhc2UuaCINCg0KDQoNCg0KDQoNCg0KICAgIGNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4QXBwOw0KICAgIHR5cGVkZWYgd3hBcHAqICgqd3hBcHBJbml0aWFsaXplckZ1
bmN0aW9uKSgpOw0KIyA0MSAiLi4vLi4vaW5jbHVkZS93eC9hcHAuaCINCiMgMSAiLi4vLi4vaW5j
bHVkZS93eC93aW5kb3cuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC93aW5kb3cuaCINCiNw
cmFnbWEgaW50ZXJmYWNlICJ3aW5kb3diYXNlLmgiDQojIDMwICIuLi8uLi9pbmNsdWRlL3d4L3dp
bmRvdy5oIg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3JlZ2lvbi5oIiAxDQoNCg0KDQoNCiMgMSAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvcmVnaW9uLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gv
bXN3L3JlZ2lvbi5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInJlZ2lvbi5oIg0KDQoNCg0KDQoNCg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hSZWN0Ow0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hQb2ludDsNCg0KZW51bSB3eFJlZ2lvbkNvbnRhaW4gew0KICAg
ICAgICB3eE91dFJlZ2lvbiA9IDAsIHd4UGFydFJlZ2lvbiA9IDEsIHd4SW5SZWdpb24gPSAyDQp9
Ow0KDQoNCmVudW0gd3hSZWdpb25PcCB7DQp3eFJHTl9BTkQsDQp3eFJHTl9DT1BZLA0Kd3hSR05f
RElGRiwNCnd4UkdOX09SLA0Kd3hSR05fWE9SDQp9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFJlZ2lvbiA6IHB1YmxpYyB3eEdESU9iamVjdCB7DQpwdWJsaWM6IHN0YXRp
YyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4UmVnaW9uOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJnd4UmVnaW9uOjpzbV9jbGFzc3d4UmVnaW9uOyB9Ow0KICAgICAg
ICBmcmllbmQgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hSZWdpb25JdGVyYXRv
cjsNCnB1YmxpYzoNCiAgICB3eFJlZ2lvbih3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb29yZCB3
LCB3eENvb3JkIGgpOw0KICAgIHd4UmVnaW9uKGNvbnN0IHd4UG9pbnQmIHRvcExlZnQsIGNvbnN0
IHd4UG9pbnQmIGJvdHRvbVJpZ2h0KTsNCiAgICB3eFJlZ2lvbihjb25zdCB3eFJlY3QmIHJlY3Qp
Ow0KICAgIHd4UmVnaW9uKFdYSFJHTiBoUmVnaW9uKTsNCg0KICAgICAgICB3eFJlZ2lvbih2b2lk
KTsNCiAgICAgICAgfnd4UmVnaW9uKHZvaWQpOw0KDQoNCiAgICAgICAgaW5saW5lIHd4UmVnaW9u
KGNvbnN0IHd4UmVnaW9uJiByKQ0KICAgICAgICAgICAgICAgIHsgUmVmKHIpOyB9DQogICAgICAg
IGlubGluZSB3eFJlZ2lvbiYgb3BlcmF0b3IgPSAoY29uc3Qgd3hSZWdpb24mIHIpDQogICAgICAg
ICAgICAgICAgeyBSZWYocik7IHJldHVybiAoKnRoaXMpOyB9DQoNCg0KDQogICAgICAgIHZvaWQg
Q2xlYXIodm9pZCk7DQoNCg0KICAgICAgICBpbmxpbmUgYm9vbCBVbmlvbih3eENvb3JkIHgsIHd4
Q29vcmQgeSwgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQpIHsgcmV0dXJuIENvbWJpbmUo
eCwgeSwgd2lkdGgsIGhlaWdodCwgd3hSR05fT1IpOyB9DQogICAgICAgIGlubGluZSBib29sIFVu
aW9uKGNvbnN0IHd4UmVjdCYgcmVjdCkgeyByZXR1cm4gQ29tYmluZShyZWN0LCB3eFJHTl9PUik7
IH0NCiAgICAgICAgaW5saW5lIGJvb2wgVW5pb24oY29uc3Qgd3hSZWdpb24mIHJlZ2lvbikgeyBy
ZXR1cm4gQ29tYmluZShyZWdpb24sIHd4UkdOX09SKTsgfQ0KDQoNCiAgICAgICAgaW5saW5lIGJv
b2wgSW50ZXJzZWN0KHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3eENvb3JkIHdpZHRoLCB3eENvb3Jk
IGhlaWdodCkgeyByZXR1cm4gQ29tYmluZSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCB3eFJHTl9BTkQp
OyB9DQogICAgICAgIGlubGluZSBib29sIEludGVyc2VjdChjb25zdCB3eFJlY3QmIHJlY3QpIHsg
cmV0dXJuIENvbWJpbmUocmVjdCwgd3hSR05fQU5EKTsgfQ0KICAgICAgICBpbmxpbmUgYm9vbCBJ
bnRlcnNlY3QoY29uc3Qgd3hSZWdpb24mIHJlZ2lvbikgeyByZXR1cm4gQ29tYmluZShyZWdpb24s
IHd4UkdOX0FORCk7IH0NCg0KDQoNCiAgICAgICAgaW5saW5lIGJvb2wgU3VidHJhY3Qod3hDb29y
ZCB4LCB3eENvb3JkIHksIHd4Q29vcmQgd2lkdGgsIHd4Q29vcmQgaGVpZ2h0KSB7IHJldHVybiBD
b21iaW5lKHgsIHksIHdpZHRoLCBoZWlnaHQsIHd4UkdOX0RJRkYpOyB9DQogICAgICAgIGlubGlu
ZSBib29sIFN1YnRyYWN0KGNvbnN0IHd4UmVjdCYgcmVjdCkgeyByZXR1cm4gQ29tYmluZShyZWN0
LCB3eFJHTl9ESUZGKTsgfQ0KICAgICAgICBpbmxpbmUgYm9vbCBTdWJ0cmFjdChjb25zdCB3eFJl
Z2lvbiYgcmVnaW9uKSB7IHJldHVybiBDb21iaW5lKHJlZ2lvbiwgd3hSR05fRElGRik7IH0NCg0K
DQogICAgICAgIGlubGluZSBib29sIFhvcih3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb29yZCB3
aWR0aCwgd3hDb29yZCBoZWlnaHQpIHsgcmV0dXJuIENvbWJpbmUoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgd3hSR05fWE9SKTsgfQ0KICAgICAgICBpbmxpbmUgYm9vbCBYb3IoY29uc3Qgd3hSZWN0JiBy
ZWN0KSB7IHJldHVybiBDb21iaW5lKHJlY3QsIHd4UkdOX1hPUik7IH0NCiAgICAgICAgaW5saW5l
IGJvb2wgWG9yKGNvbnN0IHd4UmVnaW9uJiByZWdpb24pIHsgcmV0dXJuIENvbWJpbmUocmVnaW9u
LCB3eFJHTl9YT1IpOyB9DQoNCg0KDQogICAgICAgIHZvaWQgR2V0Qm94KHd4Q29vcmQmIHgsIHd4
Q29vcmQmIHksIHd4Q29vcmQmdywgd3hDb29yZCAmaCkgY29uc3Q7DQogICAgICAgIHd4UmVjdCBH
ZXRCb3godm9pZCkgY29uc3QgOw0KDQoNCiAgICAgICAgYm9vbCBFbXB0eSh2b2lkKSBjb25zdDsN
CiAgICBpbmxpbmUgYm9vbCBJc0VtcHR5KHZvaWQpIGNvbnN0IHsgcmV0dXJuIEVtcHR5KCk7IH0N
Cg0KDQoNCiAgICAgICAgd3hSZWdpb25Db250YWluIENvbnRhaW5zKHd4Q29vcmQgeCwgd3hDb29y
ZCB5KSBjb25zdDsNCg0KICAgICAgICB3eFJlZ2lvbkNvbnRhaW4gQ29udGFpbnMoY29uc3Qgd3hQ
b2ludCYgcHQpIGNvbnN0Ow0KDQogICAgICAgIHd4UmVnaW9uQ29udGFpbiBDb250YWlucyh3eENv
b3JkIHgsIHd4Q29vcmQgeSwgd3hDb29yZCB3LCB3eENvb3JkIGgpIGNvbnN0Ow0KDQogICAgICAg
IHd4UmVnaW9uQ29udGFpbiBDb250YWlucyhjb25zdCB3eFJlY3QmIHJlY3QpIGNvbnN0Ow0KDQoN
CiAgICAgICAgYm9vbCBDb21iaW5lKHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3eENvb3JkIHdpZHRo
LCB3eENvb3JkIGhlaWdodCwgd3hSZWdpb25PcCBvcCk7DQogICAgICAgIGJvb2wgQ29tYmluZShj
b25zdCB3eFJlZ2lvbiYgcmVnaW9uLCB3eFJlZ2lvbk9wIG9wKTsNCiAgICAgICAgYm9vbCBDb21i
aW5lKGNvbnN0IHd4UmVjdCYgcmVjdCwgd3hSZWdpb25PcCBvcCk7DQoNCg0KICAgIFdYSFJHTiBH
ZXRIUkdOKCkgY29uc3Q7DQp9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eFJlZ2lvbkl0ZXJhdG9yIDogcHVibGljIHd4T2JqZWN0IHsNCnB1YmxpYzogc3RhdGljIHd4Q2xh
c3NJbmZvIHNtX2NsYXNzd3hSZWdpb25JdGVyYXRvcjsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZ3eFJlZ2lvbkl0ZXJhdG9yOjpzbV9jbGFzc3d4UmVnaW9uSXRl
cmF0b3I7IH07DQpwdWJsaWM6DQogICAgICAgIHd4UmVnaW9uSXRlcmF0b3Iodm9pZCk7DQogICAg
ICAgIHd4UmVnaW9uSXRlcmF0b3IoY29uc3Qgd3hSZWdpb24mIHJlZ2lvbik7DQogICAgICAgIH53
eFJlZ2lvbkl0ZXJhdG9yKHZvaWQpOw0KDQogICAgICAgIHZvaWQgUmVzZXQodm9pZCkgeyBtX2N1
cnJlbnQgPSAwOyB9DQogICAgICAgIHZvaWQgUmVzZXQoY29uc3Qgd3hSZWdpb24mIHJlZ2lvbik7
DQoNCg0KICAgICAgICBvcGVyYXRvciBib29sICh2b2lkKSBjb25zdCB7IHJldHVybiAobV9jdXJy
ZW50IDwgbV9udW1SZWN0cyk7IH0NCg0KDQogICAgICAgIGJvb2wgSGF2ZVJlY3RzKHZvaWQpIGNv
bnN0IHsgcmV0dXJuIChtX2N1cnJlbnQgPCBtX251bVJlY3RzKTsgfQ0KDQogICAgICAgIHZvaWQg
b3BlcmF0b3IgKysgKHZvaWQpOw0KICAgICAgICB2b2lkIG9wZXJhdG9yICsrIChpbnQpOw0KDQog
ICAgICAgIHd4Q29vcmQgR2V0WCh2b2lkKSBjb25zdDsNCiAgICAgICAgd3hDb29yZCBHZXRZKHZv
aWQpIGNvbnN0Ow0KICAgICAgICB3eENvb3JkIEdldFcodm9pZCkgY29uc3Q7DQogICAgICAgIHd4
Q29vcmQgR2V0V2lkdGgodm9pZCkgY29uc3QgeyByZXR1cm4gR2V0VygpOyB9DQogICAgICAgIHd4
Q29vcmQgR2V0SCh2b2lkKSBjb25zdDsNCiAgICAgICAgd3hDb29yZCBHZXRIZWlnaHQodm9pZCkg
Y29uc3QgeyByZXR1cm4gR2V0SCgpOyB9DQogICAgd3hSZWN0IEdldFJlY3QoKSBjb25zdCB7IHJl
dHVybiB3eFJlY3QoR2V0WCgpLCBHZXRZKCksIEdldFdpZHRoKCksIEdldEhlaWdodCgpKTsgfQ0K
DQpwcml2YXRlOg0KICAgICAgICBsb25nIG1fY3VycmVudDsNCiAgICAgICAgbG9uZyBtX251bVJl
Y3RzOw0KICAgICAgICB3eFJlZ2lvbiBtX3JlZ2lvbjsNCiAgICB3eFJlY3QqIG1fcmVjdHM7DQp9
Ow0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L3JlZ2lvbi5oIiAyDQojIDMxICIuLi8uLi9pbmNsdWRl
L3d4L3dpbmRvdy5oIiAyDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3ZhbGlkYXRlLmgiIDEN
CiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvdmFsaWRhdGUuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJ2
YWxpZGF0ZS5oIg0KIyAzMCAiLi4vLi4vaW5jbHVkZS93eC92YWxpZGF0ZS5oIg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3c7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFdpbmRvd0Jhc2U7DQojIDQ1ICIuLi8uLi9pbmNsdWRlL3d4L3ZhbGlkYXRl
LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFZhbGlkYXRvciA6IHB1Ymxp
YyB3eEV2dEhhbmRsZXINCnsNCnB1YmxpYzoNCiAgICB3eFZhbGlkYXRvcigpOw0KICAgIHZpcnR1
YWwgfnd4VmFsaWRhdG9yKCk7DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgd3hPYmplY3QgKkNsb25l
KCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gKHd4VmFsaWRhdG9yICopX19udWxsOyB9DQogICAg
Ym9vbCBDb3B5KGNvbnN0IHd4VmFsaWRhdG9yJiB2YWwpDQogICAgICAgIHsgbV92YWxpZGF0b3JX
aW5kb3cgPSB2YWwubV92YWxpZGF0b3JXaW5kb3c7IHJldHVybiAxOyB9DQoNCg0KDQogICAgdmly
dHVhbCBib29sIFZhbGlkYXRlKHd4V2luZG93ICopIHsgcmV0dXJuIDA7IH07DQoNCg0KICAgIHZp
cnR1YWwgYm9vbCBUcmFuc2ZlclRvV2luZG93KCkgeyByZXR1cm4gMDsgfQ0KDQoNCiAgICB2aXJ0
dWFsIGJvb2wgVHJhbnNmZXJGcm9tV2luZG93KCkgeyByZXR1cm4gMDsgfTsNCg0KDQogICAgd3hX
aW5kb3cgKkdldFdpbmRvdygpIGNvbnN0IHsgcmV0dXJuICh3eFdpbmRvdyAqKW1fdmFsaWRhdG9y
V2luZG93OyB9DQogICAgdm9pZCBTZXRXaW5kb3cod3hXaW5kb3dCYXNlICp3aW4pIHsgbV92YWxp
ZGF0b3JXaW5kb3cgPSB3aW47IH0NCg0KDQoNCiAgICBzdGF0aWMgYm9vbCBJc1NpbGVudCgpIHsg
cmV0dXJuIG1zX2lzU2lsZW50OyB9DQogICAgc3RhdGljIHZvaWQgU2V0QmVsbE9uRXJyb3IoYm9v
bCBkb0l0ID0gMSkgeyBtc19pc1NpbGVudCA9IGRvSXQ7IH0NCg0KcHJvdGVjdGVkOg0KICAgIHd4
V2luZG93QmFzZSAqbV92YWxpZGF0b3JXaW5kb3c7DQoNCnByaXZhdGU6DQogICAgc3RhdGljIGJv
b2wgbXNfaXNTaWxlbnQ7DQoNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFz
c3d4VmFsaWRhdG9yOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
Jnd4VmFsaWRhdG9yOjpzbV9jbGFzc3d4VmFsaWRhdG9yOyB9DQp9Ow0KDQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3Qgd3hWYWxpZGF0b3Igd3hEZWZhdWx0VmFsaWRhdG9y
Ow0KIyAzNCAiLi4vLi4vaW5jbHVkZS93eC93aW5kb3cuaCIgMg0KDQoNCiMgMSAiLi4vLi4vaW5j
bHVkZS93eC9hY2NlbC5oIiAxDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvYWNj
ZWwuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvYWNjZWwuaCINCiNwcmFnbWEgaW50
ZXJmYWNlICJhY2NlbC5oIg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eEFjY2VsZXJhdG9yVGFibGU7DQojIDQzICIuLi8uLi9pbmNsdWRlL3d4L21zdy9hY2NlbC5o
Ig0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hBY2NlbGVyYXRvckVudHJ5DQp7
DQpwdWJsaWM6DQogICAgd3hBY2NlbGVyYXRvckVudHJ5KGludCBmbGFncyA9IDAsIGludCBrZXlD
b2RlID0gMCwgaW50IGNtZCA9IDApDQogICAgew0KICAgICAgICBTZXQoZmxhZ3MsIGtleUNvZGUs
IGNtZCk7DQogICAgfQ0KDQogICAgdm9pZCBTZXQoaW50IGZsYWdzLCBpbnQga2V5Q29kZSwgaW50
IGNtZCkNCiAgICB7DQogICAgICAgIG1fZmxhZ3MgPSBmbGFnczsgbV9rZXlDb2RlID0ga2V5Q29k
ZTsgbV9jb21tYW5kID0gY21kOw0KICAgIH0NCg0KICAgIGludCBHZXRGbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3M7IH0NCiAgICBpbnQgR2V0S2V5Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5Q29kZTsgfQ0KICAgIGludCBHZXRDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5k
OyB9DQoNCg0KICAgIGludCBtX2ZsYWdzOw0KICAgIGludCBtX2tleUNvZGU7DQogICAgaW50IG1f
Y29tbWFuZDsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hBY2NlbGVyYXRvclRhYmxlIDogcHVibGljIHd4T2JqZWN0DQp7DQpwdWJsaWM6IHN0YXRpYyB3
eENsYXNzSW5mbyBzbV9jbGFzc3d4QWNjZWxlcmF0b3JUYWJsZTsgd3hDbGFzc0luZm8gKkdldENs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEFjY2VsZXJhdG9yVGFibGU6OnNtX2NsYXNzd3hB
Y2NlbGVyYXRvclRhYmxlOyB9DQpwdWJsaWM6DQogICAgd3hBY2NlbGVyYXRvclRhYmxlKCk7DQog
ICAgd3hBY2NlbGVyYXRvclRhYmxlKGNvbnN0IHd4U3RyaW5nJiByZXNvdXJjZSk7DQogICAgd3hB
Y2NlbGVyYXRvclRhYmxlKGludCBuLCBjb25zdCB3eEFjY2VsZXJhdG9yRW50cnkgZW50cmllc1td
KTsNCg0KDQogICAgaW5saW5lIHd4QWNjZWxlcmF0b3JUYWJsZShjb25zdCB3eEFjY2VsZXJhdG9y
VGFibGUmIGFjY2VsKSB7IFJlZihhY2NlbCk7IH0NCiAgICBpbmxpbmUgd3hBY2NlbGVyYXRvclRh
YmxlKGNvbnN0IHd4QWNjZWxlcmF0b3JUYWJsZSogYWNjZWwpIHsgaWYgKGFjY2VsKSBSZWYoKmFj
Y2VsKTsgfQ0KDQogICAgfnd4QWNjZWxlcmF0b3JUYWJsZSgpOw0KDQogICAgaW5saW5lIHd4QWNj
ZWxlcmF0b3JUYWJsZSYgb3BlcmF0b3IgPSAoY29uc3Qgd3hBY2NlbGVyYXRvclRhYmxlJiBhY2Nl
bCkgeyBpZiAoICp0aGlzICE9IGFjY2VsICkgUmVmKGFjY2VsKTsgcmV0dXJuICp0aGlzOyB9DQog
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHd4QWNjZWxlcmF0b3JUYWJsZSYgYWNj
ZWwpIGNvbnN0IHsgcmV0dXJuIG1fcmVmRGF0YSA9PSBhY2NlbC5tX3JlZkRhdGE7IH0NCiAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgd3hBY2NlbGVyYXRvclRhYmxlJiBhY2NlbCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZEYXRhICE9IGFjY2VsLm1fcmVmRGF0YTsgfQ0KDQogICAgYm9v
bCBPaygpIGNvbnN0Ow0KICAgIHZvaWQgU2V0SEFDQ0VMKFdYSEFDQ0VMIGhBY2NlbCk7DQogICAg
V1hIQUNDRUwgR2V0SEFDQ0VMKCkgY29uc3Q7DQoNCg0KICAgIGJvb2wgVHJhbnNsYXRlKHd4V2lu
ZG93ICp3aW5kb3csIFdYTVNHICptc2cpIGNvbnN0Ow0KfTsNCg0KX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgZXh0ZXJuIHd4QWNjZWxlcmF0b3JUYWJsZSB3eE51bGxBY2NlbGVyYXRvclRhYmxl
Ow0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L2FjY2VsLmgiIDINCiMgMzcgIi4uLy4uL2luY2x1ZGUv
d3gvd2luZG93LmgiIDINCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4Q2FyZXQ7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENsaWVudERh
dGE7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENvbnRyb2w7DQpjbGFzcyBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEN1cnNvcjsNCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4REM7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eERy
b3BUYXJnZXQ7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEl0ZW1SZXNvdXJj
ZTsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TGF5b3V0Q29uc3RyYWludHM7
DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFJlc291cmNlVGFibGU7DQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFNpemVyOw0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hUb29sVGlwOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgd3hXaW5kb3dCYXNlOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5k
b3c7DQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgKCp3eFNvcnRGdW5jRm9yX3d4V2luZG93TGlzdCko
Y29uc3Qgd3hXaW5kb3cgKiosIGNvbnN0IHd4V2luZG93ICoqKTsgY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hXaW5kb3dMaXN0Tm9kZSA6IHB1YmxpYyB3eE5vZGVCYXNlIHsgcHVi
bGljOiB3eFdpbmRvd0xpc3ROb2RlKHd4TGlzdEJhc2UgKmxpc3QgPSAod3hMaXN0QmFzZSAqKV9f
bnVsbCwgd3hXaW5kb3dMaXN0Tm9kZSAqcHJldmlvdXMgPSAod3hXaW5kb3dMaXN0Tm9kZSAqKV9f
bnVsbCwgd3hXaW5kb3dMaXN0Tm9kZSAqbmV4dCA9ICh3eFdpbmRvd0xpc3ROb2RlICopX19udWxs
LCB3eFdpbmRvdyAqZGF0YSA9ICh3eFdpbmRvdyAqKV9fbnVsbCwgY29uc3Qgd3hMaXN0S2V5JiBr
ZXkgPSB3eERlZmF1bHRMaXN0S2V5KSA6IHd4Tm9kZUJhc2UobGlzdCwgcHJldmlvdXMsIG5leHQs
IGRhdGEsIGtleSkgeyB9IHd4V2luZG93TGlzdE5vZGUgKkdldE5leHQoKSBjb25zdCB7IHJldHVy
biAod3hXaW5kb3dMaXN0Tm9kZSAqKXd4Tm9kZUJhc2U6OkdldE5leHQoKTsgfSB3eFdpbmRvd0xp
c3ROb2RlICpHZXRQcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuICh3eFdpbmRvd0xpc3ROb2RlICop
d3hOb2RlQmFzZTo6R2V0UHJldmlvdXMoKTsgfSB3eFdpbmRvdyAqR2V0RGF0YSgpIGNvbnN0IHsg
cmV0dXJuICh3eFdpbmRvdyAqKXd4Tm9kZUJhc2U6OkdldERhdGEoKTsgfSB2b2lkIFNldERhdGEo
d3hXaW5kb3cgKmRhdGEpIHsgd3hOb2RlQmFzZTo6U2V0RGF0YShkYXRhKTsgfSB2aXJ0dWFsIHZv
aWQgRGVsZXRlRGF0YSgpOyB9OyBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFdp
bmRvd0xpc3QgOiBwdWJsaWMgd3hMaXN0QmFzZSB7IHB1YmxpYzogdHlwZWRlZiB3eFdpbmRvd0xp
c3ROb2RlIE5vZGU7IHd4V2luZG93TGlzdCh3eEtleVR5cGUga2V5VHlwZSA9IHd4S0VZX05PTkUp
IDogd3hMaXN0QmFzZShrZXlUeXBlKSB7IH0gd3hXaW5kb3dMaXN0KHNpemVfdCBjb3VudCwgd3hX
aW5kb3cgKmVsZW1lbnRzW10pIDogd3hMaXN0QmFzZShjb3VudCwgKHZvaWQgKiopZWxlbWVudHMp
IHsgfSB3eFdpbmRvd0xpc3QmIG9wZXJhdG9yPShjb25zdCB3eFdpbmRvd0xpc3QmIGxpc3QpIHsg
cmV0dXJuICh3eFdpbmRvd0xpc3QmKXd4TGlzdEJhc2U6Om9wZXJhdG9yPShsaXN0KTsgfSB3eFdp
bmRvd0xpc3ROb2RlICpHZXRGaXJzdCgpIGNvbnN0IHsgcmV0dXJuICh3eFdpbmRvd0xpc3ROb2Rl
ICopd3hMaXN0QmFzZTo6R2V0Rmlyc3QoKTsgfSB3eFdpbmRvd0xpc3ROb2RlICpHZXRMYXN0KCkg
Y29uc3QgeyByZXR1cm4gKHd4V2luZG93TGlzdE5vZGUgKil3eExpc3RCYXNlOjpHZXRMYXN0KCk7
IH0gd3hXaW5kb3dMaXN0Tm9kZSAqSXRlbShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuICh3
eFdpbmRvd0xpc3ROb2RlICopd3hMaXN0QmFzZTo6SXRlbShpbmRleCk7IH0gd3hXaW5kb3cgKm9w
ZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHd4V2luZG93TGlzdE5vZGUgKm5vZGUgPSBJ
dGVtKGluZGV4KTsgcmV0dXJuIG5vZGUgPyAod3hXaW5kb3cqKShub2RlLT5HZXREYXRhKCkpIDog
KHd4V2luZG93KilfX251bGw7IH0gd3hXaW5kb3dMaXN0Tm9kZSAqQXBwZW5kKHd4V2luZG93QmFz
ZSAqb2JqZWN0KSB7IHJldHVybiAod3hXaW5kb3dMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkFwcGVu
ZChvYmplY3QpOyB9IHd4V2luZG93TGlzdE5vZGUgKkluc2VydCh3eFdpbmRvd0Jhc2UgKm9iamVj
dCkgeyByZXR1cm4gKHd4V2luZG93TGlzdE5vZGUgKilJbnNlcnQoKHd4V2luZG93TGlzdE5vZGUq
KV9fbnVsbCwgb2JqZWN0KTsgfSB3eFdpbmRvd0xpc3ROb2RlICpJbnNlcnQoc2l6ZV90IHBvcywg
d3hXaW5kb3dCYXNlICpvYmplY3QpIHsgcmV0dXJuICh3eFdpbmRvd0xpc3ROb2RlICopd3hMaXN0
QmFzZTo6SW5zZXJ0KHBvcywgb2JqZWN0KTsgfSB3eFdpbmRvd0xpc3ROb2RlICpJbnNlcnQod3hX
aW5kb3dMaXN0Tm9kZSAqcHJldiwgd3hXaW5kb3dCYXNlICpvYmplY3QpIHsgcmV0dXJuICh3eFdp
bmRvd0xpc3ROb2RlICopd3hMaXN0QmFzZTo6SW5zZXJ0KHByZXYsIG9iamVjdCk7IH0gd3hXaW5k
b3dMaXN0Tm9kZSAqQXBwZW5kKGxvbmcga2V5LCB2b2lkICpvYmplY3QpIHsgcmV0dXJuICh3eFdp
bmRvd0xpc3ROb2RlICopd3hMaXN0QmFzZTo6QXBwZW5kKGtleSwgb2JqZWN0KTsgfSB3eFdpbmRv
d0xpc3ROb2RlICpBcHBlbmQoY29uc3QgY2hhciAqa2V5LCB2b2lkICpvYmplY3QpIHsgcmV0dXJu
ICh3eFdpbmRvd0xpc3ROb2RlICopd3hMaXN0QmFzZTo6QXBwZW5kKGtleSwgb2JqZWN0KTsgfSB3
eFdpbmRvd0xpc3ROb2RlICpEZXRhY2hOb2RlKHd4V2luZG93TGlzdE5vZGUgKm5vZGUpIHsgcmV0
dXJuICh3eFdpbmRvd0xpc3ROb2RlICopd3hMaXN0QmFzZTo6RGV0YWNoTm9kZShub2RlKTsgfSBi
b29sIERlbGV0ZU5vZGUod3hXaW5kb3dMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gd3hMaXN0QmFz
ZTo6RGVsZXRlTm9kZShub2RlKTsgfSBib29sIERlbGV0ZU9iamVjdCh3eFdpbmRvd0Jhc2UgKm9i
amVjdCkgeyByZXR1cm4gd3hMaXN0QmFzZTo6RGVsZXRlT2JqZWN0KG9iamVjdCk7IH0gd3hXaW5k
b3dMaXN0Tm9kZSAqRmluZCh3eFdpbmRvd0Jhc2UgKm9iamVjdCkgY29uc3QgeyByZXR1cm4gKHd4
V2luZG93TGlzdE5vZGUgKil3eExpc3RCYXNlOjpGaW5kKG9iamVjdCk7IH0gdmlydHVhbCB3eFdp
bmRvd0xpc3ROb2RlICpGaW5kKGNvbnN0IHd4TGlzdEtleSYga2V5KSBjb25zdCB7IHJldHVybiAo
d3hXaW5kb3dMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkZpbmQoa2V5KTsgfSBpbnQgSW5kZXhPZih3
eFdpbmRvd0Jhc2UgKm9iamVjdCkgY29uc3QgeyByZXR1cm4gd3hMaXN0QmFzZTo6SW5kZXhPZihv
YmplY3QpOyB9IHZvaWQgU29ydCh3eFNvcnRGdW5jRm9yX3d4V2luZG93TGlzdCBmdW5jKSB7IHd4
TGlzdEJhc2U6OlNvcnQoKHd4U29ydENvbXBhcmVGdW5jdGlvbilmdW5jKTsgfSBwcm90ZWN0ZWQ6
IHd4Tm9kZUJhc2UgKkNyZWF0ZU5vZGUod3hOb2RlQmFzZSAqcHJldiwgd3hOb2RlQmFzZSAqbmV4
dCwgdm9pZCAqZGF0YSwgY29uc3Qgd3hMaXN0S2V5JiBrZXkgPSB3eERlZmF1bHRMaXN0S2V5KSB7
IHJldHVybiBuZXcgd3hXaW5kb3dMaXN0Tm9kZSh0aGlzLCAod3hXaW5kb3dMaXN0Tm9kZSAqKXBy
ZXYsICh3eFdpbmRvd0xpc3ROb2RlICopbmV4dCwgKHd4V2luZG93ICopZGF0YSwga2V5KTsgfSB9
Ow0KDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFdpbmRvd0xp
c3Qgd3hUb3BMZXZlbFdpbmRvd3M7DQoNCg0KDQoNCg0KDQoNCmNsYXNzIHd4Q2xpZW50RGF0YQ0K
ew0KcHVibGljOg0KICAgIHd4Q2xpZW50RGF0YSgpIHsgfQ0KICAgIHZpcnR1YWwgfnd4Q2xpZW50
RGF0YSgpIHsgfQ0KfTsNCg0KY2xhc3Mgd3hTdHJpbmdDbGllbnREYXRhIDogcHVibGljIHd4Q2xp
ZW50RGF0YQ0Kew0KcHVibGljOg0KICAgIHd4U3RyaW5nQ2xpZW50RGF0YSgpIHsgfQ0KICAgIHd4
U3RyaW5nQ2xpZW50RGF0YSggY29uc3Qgd3hTdHJpbmcgJmRhdGEgKSA6IG1fZGF0YShkYXRhKSB7
IH0NCiAgICB2b2lkIFNldERhdGEoIGNvbnN0IHd4U3RyaW5nICZkYXRhICkgeyBtX2RhdGEgPSBk
YXRhOyB9DQogICAgY29uc3Qgd3hTdHJpbmcmIEdldERhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0NCg0KcHJpdmF0ZToNCiAgICB3eFN0cmluZyBtX2RhdGE7DQp9Ow0KIyAxMDUgIi4uLy4u
L2luY2x1ZGUvd3gvd2luZG93LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eFdpbmRvd0Jhc2UgOiBwdWJsaWMgd3hFdnRIYW5kbGVyDQp7DQogICAgcHVibGljOiBzdGF0aWMg
d3hDbGFzc0luZm8gc21fY2xhc3N3eFdpbmRvd0Jhc2U7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmd3hXaW5kb3dCYXNlOjpzbV9jbGFzc3d4V2luZG93QmFzZTsg
fTsNCg0KcHVibGljOg0KDQoNCg0KDQogICAgd3hXaW5kb3dCYXNlKCkgeyBJbml0QmFzZSgpOyB9
DQoNCg0KICAgIGJvb2wgQ3JlYXRlQmFzZSh3eFdpbmRvd0Jhc2UgKnBhcmVudCwNCiAgICAgICAg
ICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hQ
b2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICAgICAgICAgIGNvbnN0
IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgICAgIGxvbmcg
c3R5bGUgPSAwLA0KICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsaWRh
dG9yID0gd3hEZWZhdWx0VmFsaWRhdG9yLA0KICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgbmFtZSA9IHd4UGFuZWxOYW1lU3RyKTsNCg0KICAgIHZpcnR1YWwgfnd4V2luZG93QmFz
ZSgpOw0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBMb2FkRnJvbVJlc291cmNlKHd4V2luZG93ICpw
YXJlbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcm
IHJlc291cmNlTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
eFJlc291cmNlVGFibGUgKnRhYmxlID0gKGNvbnN0IHd4UmVzb3VyY2VUYWJsZSAqKSBfX251bGwp
Ow0KICAgIHZpcnR1YWwgd3hDb250cm9sICpDcmVhdGVJdGVtKGNvbnN0IHd4SXRlbVJlc291cmNl
KiBjaGlsZFJlc291cmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHd4SXRlbVJlc291cmNlKiBwYXJlbnRSZXNvdXJjZSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB3eFJlc291cmNlVGFibGUgKnRhYmxlID0gKGNvbnN0IHd4UmVzb3Vy
Y2VUYWJsZSAqKSBfX251bGwpOw0KDQoNCg0KDQoNCg0KDQogICAgYm9vbCBDbG9zZSggYm9vbCBm
b3JjZSA9IDAgKTsNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgRGVzdHJveSgpOw0KDQog
ICAgYm9vbCBEZXN0cm95Q2hpbGRyZW4oKTsNCg0KDQogICAgYm9vbCBJc0JlaW5nRGVsZXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNCZWluZ0RlbGV0ZWQ7IH0NCg0KDQoNCg0KDQoNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0VGl0bGUoIGNvbnN0IHd4U3RyaW5nICYgKSB7IH0NCiAgICB2aXJ0dWFsIHd4
U3RyaW5nIEdldFRpdGxlKCkgY29uc3QgeyByZXR1cm4gIiI7IH0NCg0KDQoNCiAgICB2aXJ0dWFs
IHZvaWQgU2V0TGFiZWwoY29uc3Qgd3hTdHJpbmcmIGxhYmVsKSB7IFNldFRpdGxlKGxhYmVsKTsg
fQ0KICAgIHZpcnR1YWwgd3hTdHJpbmcgR2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBHZXRUaXRs
ZSgpOyB9DQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldE5hbWUoIGNvbnN0IHd4U3RyaW5nICZu
YW1lICkgeyBtX3dpbmRvd05hbWUgPSBuYW1lOyB9DQogICAgdmlydHVhbCB3eFN0cmluZyBHZXRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dOYW1lOyB9DQoNCg0KDQogICAgdm9pZCBTZXRJ
ZCggd3hXaW5kb3dJRCBpZCApIHsgbV93aW5kb3dJZCA9IGlkOyB9DQogICAgd3hXaW5kb3dJRCBH
ZXRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93SWQ7IH0NCg0KDQoNCiAgICBzdGF0aWMgaW50
IE5ld0NvbnRyb2xJZCgpIHsgcmV0dXJuIC0tbXNfbGFzdENvbnRyb2xJZDsgfQ0KDQoNCiAgICBz
dGF0aWMgaW50IE5leHRDb250cm9sSWQoaW50IGlkKSB7IHJldHVybiBpZCAtIDE7IH0NCg0KDQog
ICAgc3RhdGljIGludCBQcmV2Q29udHJvbElkKGludCBpZCkgeyByZXR1cm4gaWQgKyAxOyB9DQoN
Cg0KDQoNCg0KICAgIHZvaWQgU2V0U2l6ZSggaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQsDQogICAgICAgICAgICAgICAgICBpbnQgc2l6ZUZsYWdzID0gKDB4MDAwMXwweDAwMDIp
ICkNCiAgICAgICAgeyBEb1NldFNpemUoeCwgeSwgd2lkdGgsIGhlaWdodCwgc2l6ZUZsYWdzKTsg
fQ0KDQogICAgdm9pZCBTZXRTaXplKCBpbnQgd2lkdGgsIGludCBoZWlnaHQgKQ0KICAgICAgICB7
IERvU2V0U2l6ZSggLTEsIC0xLCB3aWR0aCwgaGVpZ2h0LCAweDAwMDAgKTsgfQ0KDQogICAgdm9p
ZCBTZXRTaXplKCBjb25zdCB3eFNpemUmIHNpemUgKQ0KICAgICAgICB7IFNldFNpemUoIHNpemUu
eCwgc2l6ZS55KTsgfQ0KDQogICAgdm9pZCBTZXRTaXplKGNvbnN0IHd4UmVjdCYgcmVjdCwgaW50
IHNpemVGbGFncyA9ICgweDAwMDF8MHgwMDAyKSkNCiAgICAgICAgeyBEb1NldFNpemUocmVjdC54
LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0LCBzaXplRmxhZ3MpOyB9DQoNCiAgICB2
b2lkIE1vdmUoIGludCB4LCBpbnQgeSApDQogICAgICAgIHsgRG9TZXRTaXplKCB4LCB5LCAtMSwg
LTEsIDB4MDAwMCApOyB9DQoNCiAgICB2b2lkIE1vdmUoY29uc3Qgd3hQb2ludCYgcHQpDQogICAg
ICAgIHsgTW92ZShwdC54LCBwdC55KTsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgUmFpc2UoKSA9
IDA7DQogICAgdmlydHVhbCB2b2lkIExvd2VyKCkgPSAwOw0KDQoNCiAgICB2b2lkIFNldENsaWVu
dFNpemUoIGludCB3aWR0aCwgaW50IGhlaWdodCApDQogICAgICAgIHsgRG9TZXRDbGllbnRTaXpl
KHdpZHRoLCBoZWlnaHQpOyB9DQoNCiAgICB2b2lkIFNldENsaWVudFNpemUoIGNvbnN0IHd4U2l6
ZSYgc2l6ZSApDQogICAgICAgIHsgRG9TZXRDbGllbnRTaXplKHNpemUueCwgc2l6ZS55KTsgfQ0K
DQogICAgdm9pZCBTZXRDbGllbnRTaXplKGNvbnN0IHd4UmVjdCYgcmVjdCkNCiAgICAgICAgeyBT
ZXRDbGllbnRTaXplKCByZWN0LndpZHRoLCByZWN0LmhlaWdodCApOyB9DQoNCg0KICAgIHZvaWQg
R2V0UG9zaXRpb24oIGludCAqeCwgaW50ICp5ICkgY29uc3QgeyBEb0dldFBvc2l0aW9uKHgsIHkp
OyB9DQogICAgd3hQb2ludCBHZXRQb3NpdGlvbigpIGNvbnN0DQogICAgew0KICAgICAgICBpbnQg
dywgaDsNCiAgICAgICAgRG9HZXRQb3NpdGlvbigmdywgJmgpOw0KDQogICAgICAgIHJldHVybiB3
eFBvaW50KHcsIGgpOw0KICAgIH0NCg0KICAgIHZvaWQgR2V0U2l6ZSggaW50ICp3LCBpbnQgKmgg
KSBjb25zdCB7IERvR2V0U2l6ZSh3LCBoKTsgfQ0KICAgIHd4U2l6ZSBHZXRTaXplKCkgY29uc3QN
CiAgICB7DQogICAgICAgIGludCB3LCBoOw0KICAgICAgICBEb0dldFNpemUoJiB3LCAmIGgpOw0K
ICAgICAgICByZXR1cm4gd3hTaXplKHcsIGgpOw0KICAgIH0NCg0KICAgIHd4UmVjdCBHZXRSZWN0
KCkgY29uc3QNCiAgICB7DQogICAgICAgIGludCB4LCB5LCB3LCBoOw0KICAgICAgICBHZXRQb3Np
dGlvbigmIHgsICYgeSk7DQogICAgICAgIEdldFNpemUoJiB3LCAmIGgpOw0KDQogICAgICAgIHJl
dHVybiB3eFJlY3QoeCwgeSwgdywgaCk7DQogICAgfQ0KDQogICAgdm9pZCBHZXRDbGllbnRTaXpl
KCBpbnQgKncsIGludCAqaCApIGNvbnN0IHsgRG9HZXRDbGllbnRTaXplKHcsIGgpOyB9DQogICAg
d3hTaXplIEdldENsaWVudFNpemUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaW50IHcsIGg7DQog
ICAgICAgIERvR2V0Q2xpZW50U2l6ZSgmIHcsICYgaCk7DQoNCiAgICAgICAgcmV0dXJuIHd4U2l6
ZSh3LCBoKTsNCiAgICB9DQoNCg0KDQogICAgd3hTaXplIEdldEJlc3RTaXplKCkgY29uc3QgeyBy
ZXR1cm4gRG9HZXRCZXN0U2l6ZSgpOyB9DQogICAgdm9pZCBHZXRCZXN0U2l6ZShpbnQgKncsIGlu
dCAqaCkgY29uc3QNCiAgICB7DQogICAgICAgIHd4U2l6ZSBzID0gRG9HZXRCZXN0U2l6ZSgpOw0K
ICAgICAgICBpZiAoIHcgKQ0KICAgICAgICAgICAgKncgPSBzLng7DQogICAgICAgIGlmICggaCAp
DQogICAgICAgICAgICAqaCA9IHMueTsNCiAgICB9DQoNCg0KDQoNCiAgICB2b2lkIENlbnRyZSgg
aW50IGRpcmVjdGlvbiA9IHd4Qk9USCApOw0KICAgIHZvaWQgQ2VudGVyKCBpbnQgZGlyZWN0aW9u
ID0gd3hCT1RIICkgeyBDZW50cmUoZGlyZWN0aW9uKTsgfQ0KDQoNCiAgICB2b2lkIENlbnRyZU9u
U2NyZWVuKGludCBkaXIgPSB3eEJPVEgpIHsgQ2VudHJlKGRpciB8IDB4MDAwMik7IH0NCiAgICB2
b2lkIENlbnRlck9uU2NyZWVuKGludCBkaXIgPSB3eEJPVEgpIHsgQ2VudHJlT25TY3JlZW4oZGly
KTsgfQ0KDQoNCiAgICB2b2lkIENlbnRyZU9uUGFyZW50KGludCBkaXIgPSB3eEJPVEgpIHsgQ2Vu
dHJlKGRpciB8IDB4MDAwMCk7IH0NCiAgICB2b2lkIENlbnRlck9uUGFyZW50KGludCBkaXIgPSB3
eEJPVEgpIHsgQ2VudHJlT25QYXJlbnQoZGlyKTsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgRml0
KCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRTaXplSGludHMoIGludCBtaW5XLCBpbnQgbWlu
SCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4VyA9IC0xLCBpbnQgbWF4
SCA9IC0xLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmNXID0gLTEsIGlu
dCBpbmNIID0gLTEgKTsNCg0KICAgIGludCBHZXRNaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWluV2lkdGg7IH0NCiAgICBpbnQgR2V0TWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9taW5I
ZWlnaHQ7IH0NCiAgICBpbnQgR2V0TWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21heFdpZHRo
OyB9DQogICAgaW50IEdldE1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4SGVpZ2h0OyB9
DQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBib29sIFNob3coIGJvb2wgc2hvdyA9IDEgKTsNCiAg
ICBib29sIEhpZGUoKSB7IHJldHVybiBTaG93KDApOyB9DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBF
bmFibGUoIGJvb2wgZW5hYmxlID0gMSApOw0KICAgIGJvb2wgRGlzYWJsZSgpIHsgcmV0dXJuIEVu
YWJsZSgwKTsgfQ0KDQogICAgYm9vbCBJc1Nob3duKCkgY29uc3QgeyByZXR1cm4gbV9pc1Nob3du
OyB9DQogICAgYm9vbCBJc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQ0K
DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRXaW5kb3dTdHlsZUZsYWcoIGxvbmcgc3R5bGUgKSB7
IG1fd2luZG93U3R5bGUgPSBzdHlsZTsgfQ0KICAgIHZpcnR1YWwgbG9uZyBHZXRXaW5kb3dTdHls
ZUZsYWcoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1N0eWxlOyB9DQoNCg0KICAgIHZvaWQgU2V0
V2luZG93U3R5bGUoIGxvbmcgc3R5bGUgKSB7IFNldFdpbmRvd1N0eWxlRmxhZyhzdHlsZSk7IH0N
CiAgICBsb25nIEdldFdpbmRvd1N0eWxlKCkgY29uc3QgeyByZXR1cm4gR2V0V2luZG93U3R5bGVG
bGFnKCk7IH0NCg0KICAgIGJvb2wgSGFzRmxhZyhpbnQgZmxhZykgY29uc3QgeyByZXR1cm4gKG1f
d2luZG93U3R5bGUgJiBmbGFnKSAhPSAwOyB9DQogICAgdmlydHVhbCBib29sIElzUmV0YWluZWQo
KSBjb25zdCB7IHJldHVybiBIYXNGbGFnKDB4MDAwMjAwMDApOyB9DQoNCg0KDQogICAgdm9pZCBT
ZXRFeHRyYVN0eWxlKGxvbmcgZXhTdHlsZSkgeyBtX2V4U3R5bGUgPSBleFN0eWxlOyB9DQogICAg
bG9uZyBHZXRFeHRyYVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9leFN0eWxlOyB9DQoNCg0KICAg
IHZpcnR1YWwgdm9pZCBNYWtlTW9kYWwoYm9vbCBtb2RhbCA9IDEpOw0KDQoNCg0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgU2V0Rm9jdXMoKSA9IDA7DQoNCg0KICAgIHN0YXRpYyB3eFdpbmRvdyAqRmlu
ZEZvY3VzKCkgOw0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgQWNjZXB0c0ZvY3VzKCkgY29uc3QgeyBy
ZXR1cm4gSXNTaG93bigpICYmIElzRW5hYmxlZCgpOyB9DQoNCg0KDQoNCg0KICAgIGNvbnN0IHd4
V2luZG93TGlzdCYgR2V0Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9DQog
ICAgd3hXaW5kb3dMaXN0JiBHZXRDaGlsZHJlbigpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0NCg0K
DQogICAgd3hXaW5kb3cgKkdldFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9DQog
ICAgaW5saW5lIHd4V2luZG93ICpHZXRHcmFuZFBhcmVudCgpIGNvbnN0Ow0KDQoNCiAgICB2aXJ0
dWFsIGJvb2wgSXNUb3BMZXZlbCgpIGNvbnN0Ow0KDQoNCiAgICB2b2lkIFNldFBhcmVudCggd3hX
aW5kb3dCYXNlICpwYXJlbnQgKSB7IG1fcGFyZW50ID0gKHd4V2luZG93ICopcGFyZW50OyB9DQoN
Cg0KICAgIHZpcnR1YWwgYm9vbCBSZXBhcmVudCggd3hXaW5kb3dCYXNlICpuZXdQYXJlbnQgKTsN
Cg0KDQoNCiAgICB3eFdpbmRvdyAqRmluZFdpbmRvdyggbG9uZyBpZCApOw0KICAgIHd4V2luZG93
ICpGaW5kV2luZG93KCBjb25zdCB3eFN0cmluZyYgbmFtZSApOw0KDQoNCiAgICB2aXJ0dWFsIHZv
aWQgQWRkQ2hpbGQoIHd4V2luZG93QmFzZSAqY2hpbGQgKTsNCiAgICB2aXJ0dWFsIHZvaWQgUmVt
b3ZlQ2hpbGQoIHd4V2luZG93QmFzZSAqY2hpbGQgKTsNCg0KDQoNCg0KDQogICAgd3hFdnRIYW5k
bGVyICpHZXRFdmVudEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50SGFuZGxlcjsgfQ0K
DQoNCg0KICAgIHZvaWQgU2V0RXZlbnRIYW5kbGVyKCB3eEV2dEhhbmRsZXIgKmhhbmRsZXIgKSB7
IG1fZXZlbnRIYW5kbGVyID0gaGFuZGxlcjsgfQ0KDQoNCg0KICAgIHZvaWQgUHVzaEV2ZW50SGFu
ZGxlciggd3hFdnRIYW5kbGVyICpoYW5kbGVyICk7DQogICAgd3hFdnRIYW5kbGVyICpQb3BFdmVu
dEhhbmRsZXIoIGJvb2wgZGVsZXRlSGFuZGxlciA9IDAgKTsNCg0KDQoNCg0KDQoNCg0KICAgIHZp
cnR1YWwgdm9pZCBTZXRWYWxpZGF0b3IoIGNvbnN0IHd4VmFsaWRhdG9yICZ2YWxpZGF0b3IgKTsN
CiAgICB2aXJ0dWFsIHd4VmFsaWRhdG9yICpHZXRWYWxpZGF0b3IoKSB7IHJldHVybiBtX3dpbmRv
d1ZhbGlkYXRvcjsgfQ0KDQoNCg0KDQoNCg0KICAgIHZvaWQgU2V0Q2xpZW50T2JqZWN0KCB3eENs
aWVudERhdGEgKmRhdGEgKSB7IERvU2V0Q2xpZW50T2JqZWN0KGRhdGEpOyB9DQogICAgd3hDbGll
bnREYXRhICpHZXRDbGllbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBEb0dldENsaWVudE9iamVj
dCgpOyB9DQoNCiAgICB2b2lkIFNldENsaWVudERhdGEoIHZvaWQgKmRhdGEgKSB7IERvU2V0Q2xp
ZW50RGF0YShkYXRhKTsgfQ0KICAgIHZvaWQgKkdldENsaWVudERhdGEoKSBjb25zdCB7IHJldHVy
biBEb0dldENsaWVudERhdGEoKTsgfQ0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgVmFsaWRh
dGUoKTsNCg0KDQogICAgdmlydHVhbCBib29sIFRyYW5zZmVyRGF0YVRvV2luZG93KCk7DQogICAg
dmlydHVhbCBib29sIFRyYW5zZmVyRGF0YUZyb21XaW5kb3coKTsNCg0KICAgIHZpcnR1YWwgdm9p
ZCBJbml0RGlhbG9nKCk7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0QWNjZWxlcmF0b3JU
YWJsZSggY29uc3Qgd3hBY2NlbGVyYXRvclRhYmxlJiBhY2NlbCApDQogICAgICAgIHsgbV9hY2Nl
bGVyYXRvclRhYmxlID0gYWNjZWw7IH0NCiAgICB3eEFjY2VsZXJhdG9yVGFibGUgKkdldEFjY2Vs
ZXJhdG9yVGFibGUoKQ0KICAgICAgICB7IHJldHVybiAmbV9hY2NlbGVyYXRvclRhYmxlOyB9DQoN
Cg0KDQoNCg0KICAgIHd4UG9pbnQgQ29udmVydFBpeGVsc1RvRGlhbG9nKCBjb25zdCB3eFBvaW50
JiBwdCApOw0KICAgIHd4UG9pbnQgQ29udmVydERpYWxvZ1RvUGl4ZWxzKCBjb25zdCB3eFBvaW50
JiBwdCApOw0KICAgIHd4U2l6ZSBDb252ZXJ0UGl4ZWxzVG9EaWFsb2coIGNvbnN0IHd4U2l6ZSYg
c3ogKQ0KICAgIHsNCiAgICAgICAgd3hQb2ludCBwdChDb252ZXJ0UGl4ZWxzVG9EaWFsb2cod3hQ
b2ludChzei54LCBzei55KSkpOw0KDQogICAgICAgIHJldHVybiB3eFNpemUocHQueCwgcHQueSk7
DQogICAgfQ0KDQogICAgd3hTaXplIENvbnZlcnREaWFsb2dUb1BpeGVscyggY29uc3Qgd3hTaXpl
JiBzeiApDQogICAgew0KICAgICAgICB3eFBvaW50IHB0KENvbnZlcnREaWFsb2dUb1BpeGVscyh3
eFBvaW50KHN6LngsIHN6LnkpKSk7DQoNCiAgICAgICAgcmV0dXJuIHd4U2l6ZShwdC54LCBwdC55
KTsNCiAgICB9DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBXYXJwUG9pbnRlcihpbnQgeCwg
aW50IHkpID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIENhcHR1cmVNb3VzZSgpID0gMDsNCiAg
ICB2aXJ0dWFsIHZvaWQgUmVsZWFzZU1vdXNlKCkgPSAwOw0KDQoNCg0KDQoNCg0KICAgIHZpcnR1
YWwgdm9pZCBSZWZyZXNoKCBib29sIGVyYXNlQmFja2dyb3VuZCA9IDEsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHd4UmVjdCAqcmVjdCA9IChjb25zdCB3eFJlY3QgKikgX19udWxs
ICkgPSAwOw0KDQogICAgdmlydHVhbCB2b2lkIENsZWFyKCkgPSAwOw0KDQoNCiAgICB2aXJ0dWFs
IHZvaWQgUHJlcGFyZURDKCB3eERDICYgKSB7IH0NCg0KDQoNCiAgICBjb25zdCB3eFJlZ2lvbiYg
R2V0VXBkYXRlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVSZWdpb247IH0NCiAgICB3
eFJlZ2lvbiYgR2V0VXBkYXRlUmVnaW9uKCkgeyByZXR1cm4gbV91cGRhdGVSZWdpb247IH0NCg0K
DQoNCiAgICBib29sIElzRXhwb3NlZCggaW50IHgsIGludCB5ICkgY29uc3Q7DQogICAgYm9vbCBJ
c0V4cG9zZWQoIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoICkgY29uc3Q7DQoNCiAgICBib29s
IElzRXhwb3NlZCggY29uc3Qgd3hQb2ludCYgcHQgKSBjb25zdA0KICAgICAgICB7IHJldHVybiBJ
c0V4cG9zZWQocHQueCwgcHQueSk7IH0NCiAgICBib29sIElzRXhwb3NlZCggY29uc3Qgd3hSZWN0
JiByZWN0ICkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gSXNFeHBvc2VkKHJlY3QueCwgcmVjdC55
LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7IH0NCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJv
b2wgU2V0QmFja2dyb3VuZENvbG91ciggY29uc3Qgd3hDb2xvdXIgJmNvbG91ciApOw0KICAgIHZp
cnR1YWwgYm9vbCBTZXRGb3JlZ3JvdW5kQ29sb3VyKCBjb25zdCB3eENvbG91ciAmY29sb3VyICk7
DQoNCiAgICB3eENvbG91ciBHZXRCYWNrZ3JvdW5kQ29sb3VyKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3VyOyB9DQogICAgd3hDb2xvdXIgR2V0Rm9yZWdyb3VuZENvbG91cigpIGNv
bnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG91cjsgfQ0KDQoNCg0KICAgIHZpcnR1YWwgYm9v
bCBTZXRDdXJzb3IoIGNvbnN0IHd4Q3Vyc29yICZjdXJzb3IgKTsNCiAgICBjb25zdCB3eEN1cnNv
ciYgR2V0Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3I7IH0NCiAgICB3eEN1cnNvciYg
R2V0Q3Vyc29yKCkgeyByZXR1cm4gbV9jdXJzb3I7IH0NCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wg
U2V0Rm9udCggY29uc3Qgd3hGb250ICZmb250ICkgPSAwOw0KICAgIGNvbnN0IHd4Rm9udCYgR2V0
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQ0KICAgIHd4Rm9udCYgR2V0Rm9udCgpIHsg
cmV0dXJuIG1fZm9udDsgfQ0KDQoNCg0KICAgIHZvaWQgU2V0Q2FyZXQod3hDYXJldCAqY2FyZXQp
Ow0KDQogICAgd3hDYXJldCAqR2V0Q2FyZXQoKSBjb25zdCB7IHJldHVybiBtX2NhcmV0OyB9DQoN
Cg0KDQogICAgdmlydHVhbCBpbnQgR2V0Q2hhckhlaWdodCgpIGNvbnN0ID0gMDsNCiAgICB2aXJ0
dWFsIGludCBHZXRDaGFyV2lkdGgoKSBjb25zdCA9IDA7DQoNCg0KDQogICAgdmlydHVhbCB2b2lk
IEdldFRleHRFeHRlbnQoY29uc3Qgd3hTdHJpbmcmIHN0cmluZywNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKngsIGludCAqeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKmRlc2NlbnQgPSAoaW50ICopIF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKmV4dGVybmFsTGVhZGluZyA9IChpbnQgKikgX19udWxsLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4Rm9udCAqdGhlRm9udCA9IChjb25zdCB3
eEZvbnQgKikgX19udWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ID0g
MDsNCg0KDQogICAgdm9pZCBDbGllbnRUb1NjcmVlbiggaW50ICp4LCBpbnQgKnkgKSBjb25zdA0K
ICAgICAgICB7IERvQ2xpZW50VG9TY3JlZW4oeCwgeSk7IH0NCiAgICB2b2lkIFNjcmVlblRvQ2xp
ZW50KCBpbnQgKngsIGludCAqeSApIGNvbnN0DQogICAgICAgIHsgRG9TY3JlZW5Ub0NsaWVudCh4
LCB5KTsgfQ0KICAgIHd4UG9pbnQgQ2xpZW50VG9TY3JlZW4oY29uc3Qgd3hQb2ludCYgcHQpIGNv
bnN0DQogICAgew0KICAgICAgICBpbnQgeCA9IHB0LngsIHkgPSBwdC55Ow0KICAgICAgICBEb0Ns
aWVudFRvU2NyZWVuKCZ4LCAmeSk7DQoNCiAgICAgICAgcmV0dXJuIHd4UG9pbnQoeCwgeSk7DQog
ICAgfQ0KDQogICAgd3hQb2ludCBTY3JlZW5Ub0NsaWVudChjb25zdCB3eFBvaW50JiBwdCkgY29u
c3QNCiAgICB7DQogICAgICAgIGludCB4ID0gcHQueCwgeSA9IHB0Lnk7DQogICAgICAgIERvU2Ny
ZWVuVG9DbGllbnQoJngsICZ5KTsNCg0KICAgICAgICByZXR1cm4gd3hQb2ludCh4LCB5KTsNCiAg
ICB9DQoNCg0KDQoNCiAgICB2b2lkIFVwZGF0ZVdpbmRvd1VJKCk7DQoNCiAgICBib29sIFBvcHVw
TWVudSggd3hNZW51ICptZW51LCBjb25zdCB3eFBvaW50JiBwb3MgKQ0KICAgICAgICB7IHJldHVy
biBEb1BvcHVwTWVudShtZW51LCBwb3MueCwgcG9zLnkpOyB9DQogICAgYm9vbCBQb3B1cE1lbnUo
IHd4TWVudSAqbWVudSwgaW50IHgsIGludCB5ICkNCiAgICAgICAgeyByZXR1cm4gRG9Qb3B1cE1l
bnUobWVudSwgeCwgeSk7IH0NCg0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldFNjcm9sbGJh
ciggaW50IG9yaWVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHVtYlZpc2libGUsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhbmdlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVmcmVzaCA9IDEgKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFNldFNj
cm9sbFBvcyggaW50IG9yaWVudCwgaW50IHBvcywgYm9vbCByZWZyZXNoID0gMSApID0gMDsNCiAg
ICB2aXJ0dWFsIGludCBHZXRTY3JvbGxQb3MoIGludCBvcmllbnQgKSBjb25zdCA9IDA7DQogICAg
dmlydHVhbCBpbnQgR2V0U2Nyb2xsVGh1bWIoIGludCBvcmllbnQgKSBjb25zdCA9IDA7DQogICAg
dmlydHVhbCBpbnQgR2V0U2Nyb2xsUmFuZ2UoIGludCBvcmllbnQgKSBjb25zdCA9IDA7DQoNCg0K
ICAgIHZpcnR1YWwgdm9pZCBTY3JvbGxXaW5kb3coIGludCBkeCwgaW50IGR5LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4UmVjdCogcmVjdCA9ICh3eFJlY3QgKikgX19u
dWxsICkgPSAwOw0KDQoNCg0KDQoNCiAgICB2b2lkIFNldFRvb2xUaXAoIGNvbnN0IHd4U3RyaW5n
ICZ0aXAgKTsNCg0KICAgIHZvaWQgU2V0VG9vbFRpcCggd3hUb29sVGlwICp0aXAgKSB7IERvU2V0
VG9vbFRpcCh0aXApOyB9DQoNCiAgICB3eFRvb2xUaXAqIEdldFRvb2xUaXAoKSBjb25zdCB7IHJl
dHVybiBtX3Rvb2x0aXA7IH0NCg0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXREcm9w
VGFyZ2V0KCB3eERyb3BUYXJnZXQgKmRyb3BUYXJnZXQgKSA9IDA7DQogICAgdmlydHVhbCB3eERy
b3BUYXJnZXQgKkdldERyb3BUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BUYXJnZXQ7IH0N
Cg0KDQoNCg0KDQoNCiAgICB2b2lkIFNldENvbnN0cmFpbnRzKCB3eExheW91dENvbnN0cmFpbnRz
ICpjb25zdHJhaW50cyApOw0KICAgIHd4TGF5b3V0Q29uc3RyYWludHMgKkdldENvbnN0cmFpbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50czsgfQ0KDQoNCg0KDQogICAgdm9pZCBTZXRB
dXRvTGF5b3V0KCBib29sIGF1dG9MYXlvdXQgKSB7IG1fYXV0b0xheW91dCA9IGF1dG9MYXlvdXQ7
IH0NCiAgICBib29sIEdldEF1dG9MYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9MYXlvdXQ7
IH0NCg0KDQogICAgdmlydHVhbCBib29sIExheW91dCgpOw0KDQoNCiAgICB2b2lkIFVuc2V0Q29u
c3RyYWludHMod3hMYXlvdXRDb25zdHJhaW50cyAqYyk7DQogICAgd3hXaW5kb3dMaXN0ICpHZXRD
b25zdHJhaW50c0ludm9sdmVkSW4oKSBjb25zdA0KICAgICAgICB7IHJldHVybiBtX2NvbnN0cmFp
bnRzSW52b2x2ZWRJbjsgfQ0KICAgIHZvaWQgQWRkQ29uc3RyYWludFJlZmVyZW5jZSh3eFdpbmRv
d0Jhc2UgKm90aGVyV2luKTsNCiAgICB2b2lkIFJlbW92ZUNvbnN0cmFpbnRSZWZlcmVuY2Uod3hX
aW5kb3dCYXNlICpvdGhlcldpbik7DQogICAgdm9pZCBEZWxldGVSZWxhdGVkQ29uc3RyYWludHMo
KTsNCiAgICB2b2lkIFJlc2V0Q29uc3RyYWludHMoKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIFNl
dENvbnN0cmFpbnRTaXplcyhib29sIHJlY3Vyc2UgPSAxKTsNCiAgICB2aXJ0dWFsIGJvb2wgTGF5
b3V0UGhhc2UxKGludCAqbm9DaGFuZ2VzKTsNCiAgICB2aXJ0dWFsIGJvb2wgTGF5b3V0UGhhc2Uy
KGludCAqbm9DaGFuZ2VzKTsNCiAgICB2aXJ0dWFsIGJvb2wgRG9QaGFzZShpbnQgcGhhc2UpOw0K
DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U2l6ZUNvbnN0cmFpbnQoaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGgpOw0KICAgIHZpcnR1YWwgdm9pZCBNb3ZlQ29uc3RyYWludChpbnQgeCwgaW50IHkp
Ow0KICAgIHZpcnR1YWwgdm9pZCBHZXRTaXplQ29uc3RyYWludChpbnQgKncsIGludCAqaCkgY29u
c3QgOw0KICAgIHZpcnR1YWwgdm9pZCBHZXRDbGllbnRTaXplQ29uc3RyYWludChpbnQgKncsIGlu
dCAqaCkgY29uc3QgOw0KICAgIHZpcnR1YWwgdm9pZCBHZXRQb3NpdGlvbkNvbnN0cmFpbnQoaW50
ICp4LCBpbnQgKnkpIGNvbnN0IDsNCg0KDQoNCiAgICB2b2lkIFNldFNpemVyKCB3eFNpemVyICpz
aXplciApOw0KICAgIHd4U2l6ZXIgKkdldFNpemVyKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dT
aXplcjsgfQ0KIyA2NjEgIi4uLy4uL2luY2x1ZGUvd3gvd2luZG93LmgiDQogICAgdm9pZCBPblN5
c0NvbG91ckNoYW5nZWQoIHd4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50JiBldmVudCApOw0KICAgIHZv
aWQgT25Jbml0RGlhbG9nKCB3eEluaXREaWFsb2dFdmVudCAmZXZlbnQgKTsNCiAgICB2b2lkIE9u
TWlkZGxlQ2xpY2soIHd4TW91c2VFdmVudCYgZXZlbnQgKTsNCg0KDQoNCg0KICAgIHZpcnR1YWwg
V1hXaWRnZXQgR2V0SGFuZGxlKCkgY29uc3QgPSAwOw0KDQpwcm90ZWN0ZWQ6DQoNCg0KICAgIHd4
V2luZG93SUQgbV93aW5kb3dJZDsNCg0KDQoNCiAgICB3eFdpbmRvdyAqbV9wYXJlbnQ7DQogICAg
d3hXaW5kb3dMaXN0IG1fY2hpbGRyZW47DQoNCg0KDQogICAgaW50IG1fbWluV2lkdGgsIG1fbWlu
SGVpZ2h0LCBtX21heFdpZHRoLCBtX21heEhlaWdodDsNCg0KDQoNCiAgICB3eEV2dEhhbmRsZXIg
Km1fZXZlbnRIYW5kbGVyOw0KDQoNCg0KICAgIHd4VmFsaWRhdG9yICptX3dpbmRvd1ZhbGlkYXRv
cjsNCg0KDQoNCiAgICB3eERyb3BUYXJnZXQgKm1fZHJvcFRhcmdldDsNCg0KDQoNCiAgICB3eEN1
cnNvciBtX2N1cnNvcjsNCiAgICB3eEZvbnQgbV9mb250Ow0KICAgIHd4Q29sb3VyIG1fYmFja2dy
b3VuZENvbG91ciwgbV9mb3JlZ3JvdW5kQ29sb3VyOw0KDQoNCiAgICB3eENhcmV0ICptX2NhcmV0
Ow0KDQoNCg0KICAgIHd4UmVnaW9uIG1fdXBkYXRlUmVnaW9uOw0KDQoNCg0KDQogICAgd3hBY2Nl
bGVyYXRvclRhYmxlIG1fYWNjZWxlcmF0b3JUYWJsZTsNCg0KDQoNCg0KDQoNCg0KICAgIHVuaW9u
DQogICAgew0KICAgICAgICB3eENsaWVudERhdGEgKm1fY2xpZW50T2JqZWN0Ow0KICAgICAgICB2
b2lkICptX2NsaWVudERhdGE7DQogICAgfTsNCg0KDQoNCiAgICB3eFRvb2xUaXAgKm1fdG9vbHRp
cDsNCg0KDQoNCg0KDQogICAgd3hMYXlvdXRDb25zdHJhaW50cyAqbV9jb25zdHJhaW50czsNCg0K
DQogICAgd3hXaW5kb3dMaXN0ICptX2NvbnN0cmFpbnRzSW52b2x2ZWRJbjsNCg0KDQoNCiAgICB3
eFNpemVyICptX3dpbmRvd1NpemVyOw0KICAgIHd4V2luZG93QmFzZSAqbV9zaXplclBhcmVudDsN
Cg0KDQogICAgYm9vbCBtX2F1dG9MYXlvdXQ6MTsNCg0KDQoNCiAgICBib29sIG1faXNTaG93bjox
Ow0KICAgIGJvb2wgbV9pc0VuYWJsZWQ6MTsNCiAgICBib29sIG1faXNCZWluZ0RlbGV0ZWQ6MTsN
Cg0KDQogICAgbG9uZyBtX3dpbmRvd1N0eWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZXhTdHlsZTsNCiAgICB3eFN0cmluZyBtX3dpbmRvd05hbWU7DQoNCnByb3RlY3RlZDoNCg0KDQog
ICAgdm9pZCBJbml0QmFzZSgpOw0KDQoNCg0KICAgIHN0YXRpYyBpbnQgV2lkdGhEZWZhdWx0KGlu
dCB3KSB7IHJldHVybiB3ID09IC0xID8gMjAgOiB3OyB9DQogICAgc3RhdGljIGludCBIZWlnaHRE
ZWZhdWx0KGludCBoKSB7IHJldHVybiBoID09IC0xID8gMjAgOiBoOyB9DQoNCg0KDQoNCg0KDQoN
CiAgICB2b2lkIFNldFNpemVPckRlZmF1bHQoY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0
U2l6ZSkNCiAgICB7DQogICAgICAgIGlmICggc2l6ZS54ID09IC0xIHx8IHNpemUueSA9PSAtMSAp
DQogICAgICAgIHsNCiAgICAgICAgICAgIHd4U2l6ZSBzaXplRGVmID0gR2V0QmVzdFNpemUoKTsN
CiAgICAgICAgICAgIFNldFNpemUoIHNpemUueCA9PSAtMSA/IHNpemVEZWYueCA6IHNpemUueCwN
CiAgICAgICAgICAgICAgICAgICAgIHNpemUueSA9PSAtMSA/IHNpemVEZWYueSA6IHNpemUueSk7
DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBTZXRTaXpl
KHNpemUpOw0KICAgICAgICB9DQogICAgfQ0KIyA4MDEgIi4uLy4uL2luY2x1ZGUvd3gvd2luZG93
LmgiDQogICAgdmlydHVhbCB2b2lkIERvQ2xpZW50VG9TY3JlZW4oIGludCAqeCwgaW50ICp5ICkg
Y29uc3QgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBEb1NjcmVlblRvQ2xpZW50KCBpbnQgKngsIGlu
dCAqeSApIGNvbnN0ID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvR2V0UG9zaXRpb24oIGlu
dCAqeCwgaW50ICp5ICkgY29uc3QgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBEb0dldFNpemUoIGlu
dCAqd2lkdGgsIGludCAqaGVpZ2h0ICkgY29uc3QgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBEb0dl
dENsaWVudFNpemUoIGludCAqd2lkdGgsIGludCAqaGVpZ2h0ICkgY29uc3QgPSAwOw0KDQoNCg0K
DQogICAgdmlydHVhbCB3eFNpemUgRG9HZXRCZXN0U2l6ZSgpIGNvbnN0Ow0KDQoNCg0KDQogICAg
dmlydHVhbCB2b2lkIERvU2V0U2l6ZShpbnQgeCwgaW50IHksDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2l6ZUZsYWdzID0gKDB4MDAwMXwweDAwMDIpKSA9IDA7DQoNCg0KICAgIHZpcnR1YWwg
dm9pZCBEb1NldENsaWVudFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7DQoNCg0KDQoN
Cg0KICAgIHZpcnR1YWwgdm9pZCBEb01vdmVXaW5kb3coaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvU2V0VG9vbFRpcCggd3hU
b29sVGlwICp0aXAgKTsNCg0KDQogICAgdmlydHVhbCBib29sIERvUG9wdXBNZW51KCB3eE1lbnUg
Km1lbnUsIGludCB4LCBpbnQgeSApID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvU2V0Q2xp
ZW50T2JqZWN0KCB3eENsaWVudERhdGEgKmRhdGEgKTsNCiAgICB2aXJ0dWFsIHd4Q2xpZW50RGF0
YSAqRG9HZXRDbGllbnRPYmplY3QoKSBjb25zdDsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb1NldENs
aWVudERhdGEoIHZvaWQgKmRhdGEgKTsNCiAgICB2aXJ0dWFsIHZvaWQgKkRvR2V0Q2xpZW50RGF0
YSgpIGNvbnN0Ow0KDQoNCiAgICBlbnVtIHd4Q2xpZW50RGF0YVR5cGUNCiAgICB7DQogICAgICAg
IENsaWVudERhdGFfTm9uZSwNCiAgICAgICAgQ2xpZW50RGF0YV9PYmplY3QsDQogICAgICAgIENs
aWVudERhdGFfVm9pZA0KICAgIH0gbV9jbGllbnREYXRhVHlwZTsNCg0KcHJpdmF0ZToNCg0KICAg
IHN0YXRpYyBpbnQgbXNfbGFzdENvbnRyb2xJZDsNCg0KICAgIHByaXZhdGU6IHd4V2luZG93QmFz
ZShjb25zdCB3eFdpbmRvd0Jhc2UmKTsgd3hXaW5kb3dCYXNlJiBvcGVyYXRvcj0oY29uc3Qgd3hX
aW5kb3dCYXNlJik7DQogICAgcHJpdmF0ZTogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZUVudHJ5
IHNtX2V2ZW50VGFibGVFbnRyaWVzW107cHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qgd3hFdmVudFRh
YmxlIHNtX2V2ZW50VGFibGU7IHZpcnR1YWwgY29uc3Qgd3hFdmVudFRhYmxlKiBHZXRFdmVudFRh
YmxlKCkgY29uc3Q7DQp9Ow0KDQoNCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy93
aW5kb3cuaCIgMQ0KIyAyMCAiLi4vLi4vaW5jbHVkZS93eC9tc3cvd2luZG93LmgiDQojcHJhZ21h
IGludGVyZmFjZSAid2luZG93LmgiDQojIDM2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy93aW5kb3cu
aCINCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4QnV0dG9uOw0KDQoNCg0KDQoN
Cg0KZW51bQ0Kew0KICAgIHd4S0VZX1NISUZUID0gMSwNCiAgICB3eEtFWV9DVFJMID0gMg0KfTsN
Cg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFdpbmRvdyA6IHB1
YmxpYyB3eFdpbmRvd0Jhc2UNCnsNCnB1YmxpYzoNCiAgICB3eFdpbmRvdygpIHsgSW5pdCgpOyB9
DQoNCiAgICB3eFdpbmRvdyh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAgIHd4V2luZG93
SUQgaWQsDQogICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRp
b24sDQogICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwNCiAg
ICAgICAgICAgICBsb25nIHN0eWxlID0gMCwNCiAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYg
bmFtZSA9IHd4UGFuZWxOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAgSW5pdCgpOw0KICAgICAgICBD
cmVhdGUocGFyZW50LCBpZCwgcG9zLCBzaXplLCBzdHlsZSwgbmFtZSk7DQogICAgfQ0KDQogICAg
dmlydHVhbCB+d3hXaW5kb3coKTsNCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQs
DQogICAgICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICBjb25zdCB3
eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3
eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUg
PSAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hQYW5lbE5hbWVT
dHIpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0VGl0bGUoIGNvbnN0IHd4U3RyaW5nJiB0aXRs
ZSk7DQogICAgdmlydHVhbCB3eFN0cmluZyBHZXRUaXRsZSgpIGNvbnN0Ow0KDQogICAgdmlydHVh
bCB2b2lkIFJhaXNlKCk7DQogICAgdmlydHVhbCB2b2lkIExvd2VyKCk7DQoNCiAgICB2aXJ0dWFs
IGJvb2wgU2hvdyggYm9vbCBzaG93ID0gMSApOw0KICAgIHZpcnR1YWwgYm9vbCBFbmFibGUoIGJv
b2wgZW5hYmxlID0gMSApOw0KDQogICAgdmlydHVhbCB2b2lkIFNldEZvY3VzKCk7DQoNCiAgICB2
aXJ0dWFsIGJvb2wgUmVwYXJlbnQoIHd4V2luZG93ICpuZXdQYXJlbnQgKTsNCg0KICAgIHZpcnR1
YWwgdm9pZCBXYXJwUG9pbnRlcihpbnQgeCwgaW50IHkpOw0KICAgIHZpcnR1YWwgdm9pZCBDYXB0
dXJlTW91c2UoKTsNCiAgICB2aXJ0dWFsIHZvaWQgUmVsZWFzZU1vdXNlKCk7DQoNCiAgICB2aXJ0
dWFsIHZvaWQgUmVmcmVzaCggYm9vbCBlcmFzZUJhY2tncm91bmQgPSAxLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3eFJlY3QgKnJlY3QgPSAoY29uc3Qgd3hSZWN0ICopIF9fbnVs
bCApOw0KICAgIHZpcnR1YWwgdm9pZCBDbGVhcigpOw0KDQogICAgdmlydHVhbCBib29sIFNldEN1
cnNvciggY29uc3Qgd3hDdXJzb3IgJmN1cnNvciApOw0KICAgIHZpcnR1YWwgYm9vbCBTZXRGb250
KCBjb25zdCB3eEZvbnQgJmZvbnQgKTsNCg0KICAgIHZpcnR1YWwgaW50IEdldENoYXJIZWlnaHQo
KSBjb25zdDsNCiAgICB2aXJ0dWFsIGludCBHZXRDaGFyV2lkdGgoKSBjb25zdDsNCiAgICB2aXJ0
dWFsIHZvaWQgR2V0VGV4dEV4dGVudChjb25zdCB3eFN0cmluZyYgc3RyaW5nLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqeCwgaW50ICp5LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqZGVzY2VudCA9IChpbnQgKikgX19udWxsLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqZXh0ZXJuYWxMZWFkaW5nID0gKGludCAqKSBfX251bGws
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hGb250ICp0aGVGb250ID0g
KGNvbnN0IHd4Rm9udCAqKSBfX251bGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Q7DQoNCiAgICB2aXJ0dWFsIGJvb2wgRG9Qb3B1cE1lbnUoIHd4TWVudSAqbWVudSwgaW50
IHgsIGludCB5ICk7DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U2Nyb2xsYmFyKCBpbnQgb3JpZW50
LCBpbnQgcG9zLCBpbnQgdGh1bWJWaXNpYmxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCByYW5nZSwgYm9vbCByZWZyZXNoID0gMSApOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRT
Y3JvbGxQb3MoIGludCBvcmllbnQsIGludCBwb3MsIGJvb2wgcmVmcmVzaCA9IDEgKTsNCiAgICB2
aXJ0dWFsIGludCBHZXRTY3JvbGxQb3MoIGludCBvcmllbnQgKSBjb25zdDsNCiAgICB2aXJ0dWFs
IGludCBHZXRTY3JvbGxUaHVtYiggaW50IG9yaWVudCApIGNvbnN0Ow0KICAgIHZpcnR1YWwgaW50
IEdldFNjcm9sbFJhbmdlKCBpbnQgb3JpZW50ICkgY29uc3Q7DQogICAgdmlydHVhbCB2b2lkIFNj
cm9sbFdpbmRvdyggaW50IGR4LCBpbnQgZHksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd3hSZWN0KiByZWN0ID0gKHd4UmVjdCAqKSBfX251bGwgKTsNCg0KDQogICAgdmly
dHVhbCB2b2lkIFNldERyb3BUYXJnZXQoIHd4RHJvcFRhcmdldCAqZHJvcFRhcmdldCApOw0KDQoN
Cg0KICAgIHZpcnR1YWwgdm9pZCBEcmFnQWNjZXB0RmlsZXMoYm9vbCBhY2NlcHQpOw0KIyAxNTkg
Ii4uLy4uL2luY2x1ZGUvd3gvbXN3L3dpbmRvdy5oIg0KICAgIHZpcnR1YWwgYm9vbCBMb2FkTmF0
aXZlRGlhbG9nKHd4V2luZG93KiBwYXJlbnQsIHd4V2luZG93SUQmIGlkKTsNCiAgICB2aXJ0dWFs
IGJvb2wgTG9hZE5hdGl2ZURpYWxvZyh3eFdpbmRvdyogcGFyZW50LCBjb25zdCB3eFN0cmluZyYg
bmFtZSk7DQogICAgd3hXaW5kb3cqIEdldFdpbmRvd0NoaWxkMSh3eFdpbmRvd0lEIGlkKTsNCiAg
ICB3eFdpbmRvdyogR2V0V2luZG93Q2hpbGQod3hXaW5kb3dJRCBpZCk7DQoNCg0KDQogICAgdm9p
ZCBTZW5kU2l6ZUV2ZW50KCk7DQoNCg0KDQoNCg0KDQoNCiAgICBXWEhXTkQgR2V0SFdORCgpIGNv
bnN0IHsgcmV0dXJuIG1faFduZDsgfQ0KICAgIHZvaWQgU2V0SFdORChXWEhXTkQgaFduZCkgeyBt
X2hXbmQgPSBoV25kOyB9DQogICAgdmlydHVhbCBXWFdpZGdldCBHZXRIYW5kbGUoKSBjb25zdCB7
IHJldHVybiBHZXRIV05EKCk7IH0NCg0KICAgIGJvb2wgR2V0VXNlQ3RsM0QoKSBjb25zdCB7IHJl
dHVybiBtX3VzZUN0bDNEOyB9DQogICAgYm9vbCBHZXRUcmFuc3BhcmVudEJhY2tncm91bmQoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tncm91bmRUcmFuc3BhcmVudDsgfQ0KICAgIHZvaWQgU2V0VHJh
bnNwYXJlbnQoYm9vbCB0ID0gMSkgeyBtX2JhY2tncm91bmRUcmFuc3BhcmVudCA9IHQ7IH0NCg0K
DQoNCg0KICAgIHZvaWQgT25TZXRGb2N1cyh3eEZvY3VzRXZlbnQmIGV2ZW50KTsNCiAgICB2b2lk
IE9uRXJhc2VCYWNrZ3JvdW5kKHd4RXJhc2VFdmVudCYgZXZlbnQpOw0KICAgIHZvaWQgT25JZGxl
KHd4SWRsZUV2ZW50JiBldmVudCk7DQoNCnB1YmxpYzoNCg0KDQogICAgdmlydHVhbCB3eFBvaW50
IEdldENsaWVudEFyZWFPcmlnaW4oKSBjb25zdDsNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQWRq
dXN0Rm9yUGFyZW50Q2xpZW50T3JpZ2luKGludCYgeCwgaW50JiB5LCBpbnQgc2l6ZUZsYWdzKTsN
Cg0KDQogICAgdm9pZCBTdWJjbGFzc1dpbihXWEhXTkQgaFduZCk7DQogICAgdm9pZCBVbnN1YmNs
YXNzV2luKCk7DQoNCiAgICBXWEZBUlBST0MgTVNXR2V0T2xkV25kUHJvYygpIGNvbnN0IHsgcmV0
dXJuIG1fb2xkV25kUHJvYzsgfQ0KICAgIHZvaWQgTVNXU2V0T2xkV25kUHJvYyhXWEZBUlBST0Mg
cHJvYykgeyBtX29sZFduZFByb2MgPSBwcm9jOyB9DQoNCiAgICB3eFdpbmRvdyAqRmluZEl0ZW0o
bG9uZyBpZCkgY29uc3Q7DQogICAgd3hXaW5kb3cgKkZpbmRJdGVtQnlIV05EKFdYSFdORCBoV25k
LCBib29sIGNvbnRyb2xPbmx5ID0gMCkgY29uc3Q7DQoNCg0KICAgIHN0YXRpYyBXWERXT1JEIE1h
a2VFeHRlbmRlZFN0eWxlKGxvbmcgc3R5bGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBlbGltaW5hdGVCb3JkZXJzID0gMSk7DQoNCiAgICBXWERXT1JEIERldGVy
bWluZTNERWZmZWN0cyhXWERXT1JEIGRlZmF1bHRCb3JkZXJTdHlsZSwgYm9vbCAqd2FudDNEKSBj
b25zdDsNCg0KDQogICAgdmlydHVhbCBib29sIENvbnRhaW5zSFdORChXWEhXTkQgKSBjb25zdCB7
IHJldHVybiAwOyB9Ow0KDQoNCiAgICBib29sIE1TV0NyZWF0ZShpbnQgaWQsDQogICAgICAgICAg
ICAgICAgICAgd3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICp3Y2xhc3MsDQogICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnd4X3dpbiwNCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICp0aXRsZSwNCiAgICAgICAgICAgICAgICAgICBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwNCiAgICAgICAgICAgICAgICAgICBXWERXT1JE
IHN0eWxlLA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRpYWxvZ190ZW1wbGF0ZSA9
IF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgICBXWERXT1JEIGV4ZW5kZWRTdHlsZSA9IDApOw0K
ICAgIHZpcnR1YWwgYm9vbCBNU1dDb21tYW5kKFdYVUlOVCBwYXJhbSwgV1hXT1JEIGlkKTsNCg0K
DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgd3hXaW5kb3cqIENyZWF0ZVdpbmRvd0Zyb21IV05EKHd4
V2luZG93KiBwYXJlbnQsIFdYSFdORCBoV25kKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIEFkb3B0
QXR0cmlidXRlc0Zyb21IV05EKCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXR1cENvbG91cnMo
KTsNCg0KDQoNCg0KDQoNCg0KICAgIHZvaWQgVW5wYWNrQ29tbWFuZChXWFdQQVJBTSB3UGFyYW0s
IFdYTFBBUkFNIGxQYXJhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgV1hXT1JEICppZCwgV1hI
V05EICpod25kLCBXWFdPUkQgKmNtZCk7DQogICAgdm9pZCBVbnBhY2tBY3RpdmF0ZShXWFdQQVJB
TSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFdYV09S
RCAqc3RhdGUsIFdYV09SRCAqbWluaW1pemVkLCBXWEhXTkQgKmh3bmQpOw0KICAgIHZvaWQgVW5w
YWNrU2Nyb2xsKFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtLA0KICAgICAgICAgICAg
ICAgICAgICAgIFdYV09SRCAqY29kZSwgV1hXT1JEICpwb3MsIFdYSFdORCAqaHduZCk7DQogICAg
dm9pZCBVbnBhY2tDdGxDb2xvcihXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgIFdYV09SRCAqbkN0bENvbG9yLCBXWEhEQyAqaGRjLCBXWEhX
TkQgKmh3bmQpOw0KICAgIHZvaWQgVW5wYWNrTWVudVNlbGVjdChXWFdQQVJBTSB3UGFyYW0sIFdY
TFBBUkFNIGxQYXJhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgV1hXT1JEICppdGVtLCBX
WFdPUkQgKmZsYWdzLCBXWEhNRU5VICpobWVudSk7DQojIDI3MyAiLi4vLi4vaW5jbHVkZS93eC9t
c3cvd2luZG93LmgiDQogICAgdmlydHVhbCBib29sIE1TV09uU2Nyb2xsKGludCBvcmllbnRhdGlv
biwgV1hXT1JEIG5TQkNvZGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdYV09SRCBw
b3MsIFdYSFdORCBjb250cm9sKTsNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgTVNXT25Ob3RpZnko
aW50IGlkQ3RybCwgV1hMUEFSQU0gbFBhcmFtLCBXWExQQVJBTSAqcmVzdWx0KTsNCg0KDQoNCiAg
ICB2aXJ0dWFsIGJvb2wgTVNXT25EcmF3SXRlbShpbnQgaWQsIFdYRFJBV0lURU1TVFJVQ1QgKml0
ZW0pOw0KICAgIHZpcnR1YWwgYm9vbCBNU1dPbk1lYXN1cmVJdGVtKGludCBpZCwgV1hNRUFTVVJF
SVRFTVNUUlVDVCAqaXRlbSk7DQoNCg0KICAgIGJvb2wgSGFuZGxlQ3JlYXRlKFdYTFBDUkVBVEVT
VFJVQ1QgY3MsIGJvb2wgKm1heUNyZWF0ZSk7DQogICAgYm9vbCBIYW5kbGVJbml0RGlhbG9nKFdY
SFdORCBoV25kRm9jdXMpOw0KICAgIGJvb2wgSGFuZGxlRGVzdHJveSgpOw0KDQogICAgYm9vbCBI
YW5kbGVQYWludCgpOw0KICAgIGJvb2wgSGFuZGxlRXJhc2VCa2duZChXWEhEQyBwREMpOw0KDQog
ICAgYm9vbCBIYW5kbGVNaW5pbWl6ZSgpOw0KICAgIGJvb2wgSGFuZGxlTWF4aW1pemUoKTsNCiAg
ICBib29sIEhhbmRsZVNpemUoaW50IHgsIGludCB5LCBXWFVJTlQgZmxhZyk7DQogICAgYm9vbCBI
YW5kbGVHZXRNaW5NYXhJbmZvKHZvaWQgKm1tSW5mbyk7DQoNCiAgICBib29sIEhhbmRsZVNob3co
Ym9vbCBzaG93LCBpbnQgc3RhdHVzKTsNCiAgICBib29sIEhhbmRsZUFjdGl2YXRlKGludCBmbGFn
LCBib29sIG1pbmltaXplZCwgV1hIV05EIGFjdGl2YXRlKTsNCg0KICAgIGJvb2wgSGFuZGxlQ29t
bWFuZChXWFdPUkQgaWQsIFdYV09SRCBjbWQsIFdYSFdORCBjb250cm9sKTsNCiAgICBib29sIEhh
bmRsZVN5c0NvbW1hbmQoV1hXUEFSQU0gd1BhcmFtLCBXWExQQVJBTSBsUGFyYW0pOw0KDQogICAg
Ym9vbCBIYW5kbGVDdGxDb2xvcihXWEhCUlVTSCAqaEJydXNoLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgV1hIREMgaGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgV1hIV05EIGhXbmQsDQog
ICAgICAgICAgICAgICAgICAgICAgICBXWFVJTlQgbkN0bENvbG9yLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgV1hVSU5UIG1lc3NhZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICBXWFdQQVJB
TSB3UGFyYW0sDQogICAgICAgICAgICAgICAgICAgICAgICBXWExQQVJBTSBsUGFyYW0pOw0KDQog
ICAgYm9vbCBIYW5kbGVQYWxldHRlQ2hhbmdlZChXWEhXTkQgaFduZFBhbENoYW5nZSk7DQogICAg
Ym9vbCBIYW5kbGVRdWVyeU5ld1BhbGV0dGUoKTsNCiAgICBib29sIEhhbmRsZVN5c0NvbG9yQ2hh
bmdlKCk7DQoNCiAgICBib29sIEhhbmRsZVF1ZXJ5RW5kU2Vzc2lvbihsb25nIGxvZ09mZiwgYm9v
bCAqbWF5RW5kKTsNCiAgICBib29sIEhhbmRsZUVuZFNlc3Npb24oYm9vbCBlbmRTZXNzaW9uLCBs
b25nIGxvZ09mZik7DQoNCiAgICBib29sIEhhbmRsZVNldEZvY3VzKFdYSFdORCB3bmQpOw0KICAg
IGJvb2wgSGFuZGxlS2lsbEZvY3VzKFdYSFdORCB3bmQpOw0KDQogICAgYm9vbCBIYW5kbGVEcm9w
RmlsZXMoV1hXUEFSQU0gd1BhcmFtKTsNCg0KICAgIGJvb2wgSGFuZGxlTW91c2VFdmVudChXWFVJ
TlQgbXNnLCBpbnQgeCwgaW50IHksIFdYVUlOVCBmbGFncyk7DQogICAgYm9vbCBIYW5kbGVNb3Vz
ZU1vdmUoaW50IHgsIGludCB5LCBXWFVJTlQgZmxhZ3MpOw0KDQogICAgYm9vbCBIYW5kbGVDaGFy
KFdYV09SRCB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSwgYm9vbCBpc0FTQ0lJID0gMCk7DQogICAg
Ym9vbCBIYW5kbGVLZXlEb3duKFdYV09SRCB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQogICAg
Ym9vbCBIYW5kbGVLZXlVcChXWFdPUkQgd1BhcmFtLCBXWExQQVJBTSBsUGFyYW0pOw0KDQogICAg
Ym9vbCBIYW5kbGVRdWVyeURyYWdJY29uKFdYSElDT04gKmhJY29uKTsNCg0KICAgIGJvb2wgSGFu
ZGxlU2V0Q3Vyc29yKFdYSFdORCBoV25kLCBzaG9ydCBuSGl0VGVzdCwgaW50IG1vdXNlTXNnKTsN
Cg0KDQogICAgdmlydHVhbCBsb25nIE1TV1dpbmRvd1Byb2MoV1hVSU5UIG5Nc2csIFdYV1BBUkFN
IHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KDQogICAgdmlydHVhbCBsb25nIE1TV0RlZldp
bmRvd1Byb2MoV1hVSU5UIG5Nc2csIFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsN
CiAgICB2aXJ0dWFsIGJvb2wgTVNXUHJvY2Vzc01lc3NhZ2UoV1hNU0cqIHBNc2cpOw0KICAgIHZp
cnR1YWwgYm9vbCBNU1dUcmFuc2xhdGVNZXNzYWdlKFdYTVNHKiBwTXNnKTsNCiAgICB2aXJ0dWFs
IHZvaWQgTVNXRGVzdHJveVdpbmRvdygpOw0KDQoNCiAgICB2b2lkIE1TV0RldGFjaFdpbmRvd01l
bnUoKTsNCg0KDQoNCiAgICB2aXJ0dWFsIFdYSEJSVVNIIE9uQ3RsQ29sb3IoV1hIREMgaERDLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXWEhXTkQgaFduZCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV1hVSU5UIG5DdGxDb2xvciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV1hVSU5UIG1lc3NhZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdYV1BBUkFNIHdQYXJhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V1hMUEFSQU0gbFBhcmFtKTsNCg0KDQoNCg0KDQoNCg0KICAgIHZvaWQgT25TeXNDb2xvdXJDaGFu
Z2VkKHd4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50JiBldmVudCk7DQoNCg0KICAgIHZvaWQgSW5pdE1v
dXNlRXZlbnQod3hNb3VzZUV2ZW50JiBldmVudCwgaW50IHgsIGludCB5LCBXWFVJTlQgZmxhZ3Mp
Ow0KDQpwcm90ZWN0ZWQ6DQoNCiAgICBXWEhXTkQgbV9oV25kOw0KDQoNCiAgICBXWEZBUlBST0Mg
bV9vbGRXbmRQcm9jOw0KDQoNCiAgICBib29sIG1fdXNlQ3RsM0Q6MTsNCiAgICBib29sIG1fYmFj
a2dyb3VuZFRyYW5zcGFyZW50OjE7DQogICAgYm9vbCBtX21vdXNlSW5XaW5kb3c6MTsNCiAgICBi
b29sIG1fZG91YmxlQ2xpY2tBbGxvd2VkOjE7DQogICAgYm9vbCBtX3dpbkNhcHR1cmVkOjE7DQoN
Cg0KICAgIGludCBtX3hUaHVtYlNpemU7DQogICAgaW50IG1feVRodW1iU2l6ZTsNCiMgMzkyICIu
Li8uLi9pbmNsdWRlL3d4L21zdy93aW5kb3cuaCINCiAgICBXWEhNRU5VIG1faE1lbnU7DQoNCg0K
ICAgIGxvbmcgbV9sRGxnQ29kZTsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvQ2xpZW50VG9TY3Jl
ZW4oIGludCAqeCwgaW50ICp5ICkgY29uc3Q7DQogICAgdmlydHVhbCB2b2lkIERvU2NyZWVuVG9D
bGllbnQoIGludCAqeCwgaW50ICp5ICkgY29uc3Q7DQogICAgdmlydHVhbCB2b2lkIERvR2V0UG9z
aXRpb24oIGludCAqeCwgaW50ICp5ICkgY29uc3Q7DQogICAgdmlydHVhbCB2b2lkIERvR2V0U2l6
ZSggaW50ICp3aWR0aCwgaW50ICpoZWlnaHQgKSBjb25zdDsNCiAgICB2aXJ0dWFsIHZvaWQgRG9H
ZXRDbGllbnRTaXplKCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCApIGNvbnN0Ow0KICAgIHZpcnR1
YWwgdm9pZCBEb1NldFNpemUoaW50IHgsIGludCB5LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNpemVGbGFncyA9ICgweDAwMDF8MHgwMDAyKSk7DQogICAgdmlydHVhbCB2b2lkIERvU2V0Q2xp
ZW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOw0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZv
aWQgRG9Nb3ZlV2luZG93KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCg0K
DQogICAgdmlydHVhbCB2b2lkIERvU2V0VG9vbFRpcCggd3hUb29sVGlwICp0aXAgKTsNCg0KDQpw
cml2YXRlOg0KDQogICAgdm9pZCBJbml0KCk7DQoNCg0KICAgIGJvb2wgSGFuZGxlTW92ZShpbnQg
eCwgaW50IHkpOw0KICAgIGJvb2wgSGFuZGxlSm95c3RpY2tFdmVudChXWFVJTlQgbXNnLCBpbnQg
eCwgaW50IHksIFdYVUlOVCBmbGFncyk7DQoNCg0KICAgIGJvb2wgSGFuZGxlTm90aWZ5KGludCBp
ZEN0cmwsIFdYTFBBUkFNIGxQYXJhbSwgV1hMUEFSQU0gKnJlc3VsdCk7DQoNCg0KDQogICAgd3hL
ZXlFdmVudCBDcmVhdGVLZXlFdmVudCh3eEV2ZW50VHlwZSBldlR5cGUsIGludCBpZCwgV1hMUEFS
QU0gbHApIGNvbnN0Ow0KDQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3
eFdpbmRvdzsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFdp
bmRvdzo6c21fY2xhc3N3eFdpbmRvdzsgfTsNCiAgICBwcml2YXRlOiB3eFdpbmRvdyhjb25zdCB3
eFdpbmRvdyYpOyB3eFdpbmRvdyYgb3BlcmF0b3I9KGNvbnN0IHd4V2luZG93Jik7DQogICAgcHJp
dmF0ZTogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZUVudHJ5IHNtX2V2ZW50VGFibGVFbnRyaWVz
W107cHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxlIHNtX2V2ZW50VGFibGU7IHZp
cnR1YWwgY29uc3Qgd3hFdmVudFRhYmxlKiBHZXRFdmVudFRhYmxlKCkgY29uc3Q7DQp9Ow0KDQoN
Cg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgaW50IHd4Q2hhckNvZGVNU1dUb1dY
KGludCBrZXlTeW0pOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgaW50IHd4Q2hhckNvZGVX
WFRvTVNXKGludCBpZCwgYm9vbCAqSXNWaXJ0dWFsKTsNCiMgODY1ICIuLi8uLi9pbmNsdWRlL3d4
L3dpbmRvdy5oIiAyDQojIDg4MiAiLi4vLi4vaW5jbHVkZS93eC93aW5kb3cuaCINCmlubGluZSB3
eFdpbmRvdyAqd3hXaW5kb3dCYXNlOjpHZXRHcmFuZFBhcmVudCgpIGNvbnN0DQp7DQogICAgcmV0
dXJuIG1fcGFyZW50ID8gbV9wYXJlbnQtPkdldFBhcmVudCgpIDogKHd4V2luZG93ICopX19udWxs
Ow0KfQ0KDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFdpbmRv
dyogd3hHZXRBY3RpdmVXaW5kb3coKTsNCg0KDQppbmxpbmUgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgaW50IE5ld0NvbnRyb2xJZCgpIHsgcmV0dXJuIHd4V2luZG93QmFzZTo6TmV3Q29udHJv
bElkKCk7IH0NCiMgNDIgIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiIDINCiMgNTIgIi4uLy4uL2lu
Y2x1ZGUvd3gvYXBwLmgiDQpzdGF0aWMgY29uc3QgaW50IHd4UFJJTlRfV0lORE9XUyA9IDE7DQpz
dGF0aWMgY29uc3QgaW50IHd4UFJJTlRfUE9TVFNDUklQVCA9IDI7DQoNCg0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hBcHBCYXNlIDogcHVibGljIHd4RXZ0SGFuZGxl
cg0Kew0KcHVibGljOg0KIyA3MSAiLi4vLi4vaW5jbHVkZS93eC9hcHAuaCINCiAgICB2aXJ0dWFs
IGJvb2wgT25Jbml0KCkgeyByZXR1cm4gMDsgfTsNCiMgODEgIi4uLy4uL2luY2x1ZGUvd3gvYXBw
LmgiDQogICAgdmlydHVhbCBib29sIE9uSW5pdEd1aSgpIHsgcmV0dXJuIDE7IH0NCiMgOTIgIi4u
Ly4uL2luY2x1ZGUvd3gvYXBwLmgiDQogICAgdmlydHVhbCBpbnQgT25SdW4oKSB7IHJldHVybiBN
YWluTG9vcCgpOyB9Ow0KIyAxMDMgIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiDQogICAgdmlydHVh
bCBpbnQgT25FeGl0KCk7DQojIDExMyAiLi4vLi4vaW5jbHVkZS93eC9hcHAuaCINCiAgICB2aXJ0
dWFsIHZvaWQgT25GYXRhbEV4Y2VwdGlvbigpIHsgfQ0KDQoNCg0KDQoNCg0KICAgIHZpcnR1YWwg
aW50IE1haW5Mb29wKCkgPSAwOw0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBFeGl0TWFpbkxvb3Ao
KSA9IDA7DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBJbml0aWFsaXplZCgpID0gMDsNCg0KDQogICAg
dmlydHVhbCBib29sIFBlbmRpbmcoKSA9IDA7DQoNCg0KDQogICAgdmlydHVhbCB2b2lkIERpc3Bh
dGNoKCkgPSAwOw0KIyAxNDUgIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiDQogICAgd3hTdHJpbmcg
R2V0QXBwTmFtZSgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoICFtX2FwcE5hbWUgKQ0KICAg
ICAgICAgICAgcmV0dXJuIG1fY2xhc3NOYW1lOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBy
ZXR1cm4gbV9hcHBOYW1lOw0KICAgIH0NCiAgICB2b2lkIFNldEFwcE5hbWUoY29uc3Qgd3hTdHJp
bmcmIG5hbWUpIHsgbV9hcHBOYW1lID0gbmFtZTsgfQ0KDQoNCiAgICB3eFN0cmluZyBHZXRDbGFz
c05hbWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzTmFtZTsgfQ0KICAgIHZvaWQgU2V0Q2xhc3NO
YW1lKGNvbnN0IHd4U3RyaW5nJiBuYW1lKSB7IG1fY2xhc3NOYW1lID0gbmFtZTsgfQ0KDQoNCiAg
ICBjb25zdCB3eFN0cmluZyYgR2V0VmVuZG9yTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVuZG9y
TmFtZTsgfQ0KICAgIHZvaWQgU2V0VmVuZG9yTmFtZShjb25zdCB3eFN0cmluZyYgbmFtZSkgeyBt
X3ZlbmRvck5hbWUgPSBuYW1lOyB9DQoNCg0KDQoNCg0KDQogICAgdm9pZCBTZXRUb3BXaW5kb3co
d3hXaW5kb3cgKndpbikgeyBtX3RvcFdpbmRvdyA9IHdpbjsgfQ0KDQoNCg0KDQogICAgd3hXaW5k
b3cgKkdldFRvcFdpbmRvdygpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAobV90b3BXaW5kb3cp
DQogICAgICAgICAgICByZXR1cm4gbV90b3BXaW5kb3c7DQogICAgICAgIGVsc2UgaWYgKHd4VG9w
TGV2ZWxXaW5kb3dzLkdldENvdW50KCkgPiAwKQ0KICAgICAgICAgICAgcmV0dXJuIHd4VG9wTGV2
ZWxXaW5kb3dzLkdldEZpcnN0KCktPkdldERhdGEoKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgcmV0dXJuICh3eFdpbmRvdyAqKV9fbnVsbDsNCiAgICB9DQoNCg0KDQoNCg0KDQogICAgdm9p
ZCBTZXRFeGl0T25GcmFtZURlbGV0ZShib29sIGZsYWcpIHsgbV9leGl0T25GcmFtZURlbGV0ZSA9
IGZsYWc7IH0NCiAgICBib29sIEdldEV4aXRPbkZyYW1lRGVsZXRlKCkgY29uc3QgeyByZXR1cm4g
bV9leGl0T25GcmFtZURlbGV0ZTsgfQ0KIyAyMDAgIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiDQog
ICAgdmlydHVhbCB3eExvZyAqQ3JlYXRlTG9nVGFyZ2V0KCkNCg0KICAgICAgICB7IHJldHVybiBu
ZXcgd3hMb2dHdWk7IH0NCiMgMjEyICIuLi8uLi9pbmNsdWRlL3d4L2FwcC5oIg0KICAgIHZpcnR1
YWwgd3hJY29uIEdldFN0ZEljb24oaW50IHdoaWNoKSBjb25zdCA9IDA7DQoNCg0KICAgIHZvaWQg
U2V0V2FudERlYnVnT3V0cHV0KCBib29sIGZsYWcgKSB7IG1fd2FudERlYnVnT3V0cHV0ID0gZmxh
ZzsgfQ0KICAgIGJvb2wgR2V0V2FudERlYnVnT3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbV93YW50
RGVidWdPdXRwdXQ7IH0NCg0KDQogICAgdm9pZCBTZXRVc2VCZXN0VmlzdWFsKCBib29sIGZsYWcg
KSB7IG1fdXNlQmVzdFZpc3VhbCA9IGZsYWc7IH0NCiAgICBib29sIEdldFVzZUJlc3RWaXN1YWwo
KSBjb25zdCB7IHJldHVybiBtX3VzZUJlc3RWaXN1YWw7IH0NCg0KDQoNCg0KDQogICAgdmlydHVh
bCB2b2lkIFNldFByaW50TW9kZShpbnQgKSB7IH0NCiAgICBpbnQgR2V0UHJpbnRNb2RlKCkgY29u
c3QgeyByZXR1cm4gd3hQUklOVF9QT1NUU0NSSVBUOyB9DQoNCg0KDQoNCg0KDQogICAgc3RhdGlj
IHZvaWQgU2V0SW5pdGlhbGl6ZXJGdW5jdGlvbih3eEFwcEluaXRpYWxpemVyRnVuY3Rpb24gZm4p
DQogICAgICAgIHsgbV9hcHBJbml0Rm4gPSBmbjsgfQ0KICAgIHN0YXRpYyB3eEFwcEluaXRpYWxp
emVyRnVuY3Rpb24gR2V0SW5pdGlhbGl6ZXJGdW5jdGlvbigpDQogICAgICAgIHsgcmV0dXJuIG1f
YXBwSW5pdEZuOyB9DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBQcm9jZXNzUGVuZGluZ0V2ZW50cygp
Ow0KDQoNCiAgICBpbnQgYXJnYzsNCiAgICBjaGFyICoqYXJndjsNCg0KDQpwcm90ZWN0ZWQ6DQoN
CiAgICBzdGF0aWMgd3hBcHBJbml0aWFsaXplckZ1bmN0aW9uIG1fYXBwSW5pdEZuOw0KDQoNCiAg
ICB3eFN0cmluZyBtX3ZlbmRvck5hbWUsDQogICAgICAgICAgICAgbV9hcHBOYW1lLA0KICAgICAg
ICAgICAgIG1fY2xhc3NOYW1lOw0KDQoNCiAgICBib29sIG1fZXhpdE9uRnJhbWVEZWxldGU7DQoN
Cg0KICAgIGJvb2wgbV93YW50RGVidWdPdXRwdXQ7DQoNCg0KDQogICAgYm9vbCBtX3VzZUJlc3RW
aXN1YWw7DQoNCg0KDQogICAgd3hXaW5kb3cgKm1fdG9wV2luZG93Ow0KDQp9Ow0KDQoNCg0KDQoN
Cg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2FwcC5oIiAxDQojIDE2ICIuLi8uLi9pbmNs
dWRlL3d4L21zdy9hcHAuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJhcHAuaCINCg0KDQoNCiMgMSAi
Li4vLi4vaW5jbHVkZS93eC9pY29uLmgiIDENCiMgMTEgIi4uLy4uL2luY2x1ZGUvd3gvaWNvbi5o
Ig0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9pY29uLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1
ZGUvd3gvbXN3L2ljb24uaCINCiNwcmFnbWEgaW50ZXJmYWNlICJpY29uLmgiDQojIDQ3ICIuLi8u
Li9pbmNsdWRlL3d4L21zdy9pY29uLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eEljb25SZWZEYXRhIDogcHVibGljIHd4R0RJSW1hZ2VSZWZEYXRhDQp7DQpwdWJsaWM6DQog
ICAgd3hJY29uUmVmRGF0YSgpIHsgfQ0KICAgIHZpcnR1YWwgfnd4SWNvblJlZkRhdGEoKSB7IEZy
ZWUoKTsgfQ0KDQogICAgdmlydHVhbCB2b2lkIEZyZWUoKTsNCn07DQoNCg0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hJY29uIDogcHVibGljIHd4R0RJSW1hZ2UNCnsN
CnB1YmxpYzoNCg0KDQogICAgd3hJY29uKCkgeyB9DQoNCg0KICAgIHd4SWNvbihjb25zdCB3eElj
b24mIGljb24pIHsgUmVmKGljb24pOyB9DQoNCg0KICAgIHd4SWNvbihjb25zdCBjaGFyIGJpdHNb
XSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCg0KICAgIHd4SWNvbihjb25zdCBjaGFyICoqZGF0
YSkgeyBDcmVhdGVJY29uRnJvbVhwbShkYXRhKTsgfQ0KICAgIHd4SWNvbihjaGFyICoqZGF0YSkg
eyBDcmVhdGVJY29uRnJvbVhwbSgoY29uc3QgY2hhciAqKilkYXRhKTsgfQ0KDQogICAgd3hJY29u
KGNvbnN0IHd4U3RyaW5nJiBuYW1lLA0KICAgICAgICAgICBsb25nIHR5cGUgPSB3eEJJVE1BUF9U
WVBFX0lDT19SRVNPVVJDRSwNCiAgICAgICAgICAgaW50IGRlc2lyZWRXaWR0aCA9IC0xLCBpbnQg
ZGVzaXJlZEhlaWdodCA9IC0xKTsNCg0KICAgIHZpcnR1YWwgfnd4SWNvbigpOw0KDQogICAgdmly
dHVhbCBib29sIExvYWRGaWxlKGNvbnN0IHd4U3RyaW5nJiBuYW1lLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb25nIHR5cGUgPSB3eEJJVE1BUF9UWVBFX0lDT19SRVNPVVJDRSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWRXaWR0aCA9IC0xLCBpbnQgZGVzaXJlZEhl
aWdodCA9IC0xKTsNCg0KICAgIHd4SWNvbiYgb3BlcmF0b3IgPSAoY29uc3Qgd3hJY29uJiBpY29u
KQ0KICAgICAgICB7IGlmICggKnRoaXMgIT0gaWNvbiApIFJlZihpY29uKTsgcmV0dXJuICp0aGlz
OyB9DQogICAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgd3hJY29uJiBpY29uKSBjb25zdA0KICAg
ICAgICB7IHJldHVybiBtX3JlZkRhdGEgPT0gaWNvbi5tX3JlZkRhdGE7IH0NCiAgICBib29sIG9w
ZXJhdG9yICE9IChjb25zdCB3eEljb24mIGljb24pIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1f
cmVmRGF0YSAhPSBpY29uLm1fcmVmRGF0YTsgfQ0KDQoNCiAgICB3eEljb25SZWZEYXRhICpHZXRJ
Y29uRGF0YSgpIGNvbnN0IHsgcmV0dXJuICh3eEljb25SZWZEYXRhICopbV9yZWZEYXRhOyB9DQoN
CiAgICB2b2lkIFNldEhJQ09OKFdYSElDT04gaWNvbikgeyBTZXRIYW5kbGUoKFdYSEFORExFKWlj
b24pOyB9DQogICAgV1hISUNPTiBHZXRISUNPTigpIGNvbnN0IHsgcmV0dXJuIChXWEhJQ09OKUdl
dEhhbmRsZSgpOyB9DQoNCg0KDQoNCiAgICB2b2lkIENvcHlGcm9tQml0bWFwKGNvbnN0IHd4Qml0
bWFwJiBibXApOw0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB3eEdESUltYWdlUmVmRGF0YSAq
Q3JlYXRlRGF0YSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbmV3IHd4SWNvblJlZkRh
dGE7DQogICAgfQ0KDQoNCiAgICB2b2lkIENyZWF0ZUljb25Gcm9tWHBtKGNvbnN0IGNoYXIgKipk
YXRhKTsNCg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFz
c3d4SWNvbjsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eElj
b246OnNtX2NsYXNzd3hJY29uOyB9DQp9Ow0KIyAxMiAiLi4vLi4vaW5jbHVkZS93eC9pY29uLmgi
IDINCiMgMjEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2FwcC5oIiAyDQoNCmNsYXNzIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4RnJhbWU7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB3eFdpbmRvdzsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4QXBwIDsN
CmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4S2V5RXZlbnQ7DQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eExvZzsNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4QXBwIDogcHVibGljIHd4QXBwQmFzZQ0Kew0KICAgIHB1YmxpYzogc3Rh
dGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hBcHA7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8o
KSBjb25zdCB7IHJldHVybiAmd3hBcHA6OnNtX2NsYXNzd3hBcHA7IH0NCg0KcHVibGljOg0KICAg
IHd4QXBwKCk7DQogICAgdmlydHVhbCB+d3hBcHAoKTsNCg0KDQogICAgdmlydHVhbCBpbnQgTWFp
bkxvb3AoKTsNCiAgICB2aXJ0dWFsIHZvaWQgRXhpdE1haW5Mb29wKCk7DQogICAgdmlydHVhbCBi
b29sIEluaXRpYWxpemVkKCk7DQogICAgdmlydHVhbCBib29sIFBlbmRpbmcoKSA7DQogICAgdmly
dHVhbCB2b2lkIERpc3BhdGNoKCkgOw0KDQogICAgdmlydHVhbCB3eEljb24gR2V0U3RkSWNvbihp
bnQgd2hpY2gpIGNvbnN0Ow0KDQogICAgdmlydHVhbCB2b2lkIFNldFByaW50TW9kZShpbnQgbW9k
ZSkgeyBtX3ByaW50TW9kZSA9IG1vZGU7IH0NCiAgICB2aXJ0dWFsIGludCBHZXRQcmludE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3ByaW50TW9kZTsgfQ0KDQoNCiAgICB2b2lkIE9uSWRsZSh3eElk
bGVFdmVudCYgZXZlbnQpOw0KICAgIHZvaWQgT25FbmRTZXNzaW9uKHd4Q2xvc2VFdmVudCYgZXZl
bnQpOw0KICAgIHZvaWQgT25RdWVyeUVuZFNlc3Npb24od3hDbG9zZUV2ZW50JiBldmVudCk7DQoN
Cg0KDQogICAgYm9vbCBTZW5kSWRsZUV2ZW50cygpOw0KDQoNCg0KICAgIGJvb2wgU2VuZElkbGVF
dmVudHMod3hXaW5kb3cqIHdpbik7DQoNCiAgICB2b2lkIFNldEF1dG8zRChib29sIGZsYWcpIHsg
bV9hdXRvM0QgPSBmbGFnOyB9DQogICAgYm9vbCBHZXRBdXRvM0QoKSBjb25zdCB7IHJldHVybiBt
X2F1dG8zRDsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgYm9vbCBtX3Nob3dPbkluaXQ7DQogICAgaW50
IG1fcHJpbnRNb2RlOw0KICAgIGJvb2wgbV9hdXRvM0QgOw0KDQoNCg0KcHVibGljOg0KDQoNCiAg
ICBzdGF0aWMgYm9vbCBJbml0aWFsaXplKCk7DQogICAgc3RhdGljIHZvaWQgQ2xlYW5VcCgpOw0K
DQogICAgc3RhdGljIGJvb2wgUmVnaXN0ZXJXaW5kb3dDbGFzc2VzKCk7DQoNCiAgICB2b2lkIENv
bnZlcnRUb1N0YW5kYXJkQ29tbWFuZEFyZ3MoY2hhciogcCk7DQoNCiAgICAgICAgICAgICAgICB2
b2lkIERvTWVzc2FnZShXWE1TRyAqcE1zZyk7DQogICAgdmlydHVhbCBib29sIERvTWVzc2FnZSgp
Ow0KDQogICAgdmlydHVhbCBib29sIFByb2Nlc3NNZXNzYWdlKFdYTVNHKiBwTXNnKTsNCiAgICB2
b2lkIERlbGV0ZVBlbmRpbmdPYmplY3RzKCk7DQogICAgYm9vbCBQcm9jZXNzSWRsZSgpOw0KDQoN
Cg0KDQogICAgc3RhdGljIGJvb2wgSW5pdFJpY2hFZGl0KGludCB2ZXJzaW9uID0gMik7DQoNCg0K
DQoNCiAgICBzdGF0aWMgaW50IEdldENvbUN0bDMyVmVyc2lvbigpOw0KDQpwdWJsaWM6DQogICAg
aW50IG1fbkNtZFNob3c7DQoNCnByb3RlY3RlZDoNCiAgICBib29sIG1fa2VlcEdvaW5nIDsNCg0K
ICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRhYmxl
RW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVudFRh
YmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0K
fTsNCg0KDQppbnQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hFbnRyeShXWEhJTlNUQU5D
RSBoSW5zdGFuY2UsIFdYSElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsDQogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpscHN6Q21kTGluZSwgaW50IG5DbWRTaG93LCBib29sIGVudGVyTG9vcCA9
IDEpOw0KIyAyNzkgIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiIDINCiMgMzA3ICIuLi8uLi9pbmNs
dWRlL3d4L2FwcC5oIg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIHd4QXBwKiB3
eFRoZUFwcDsNCiMgMzE3ICIuLi8uLi9pbmNsdWRlL3d4L2FwcC5oIg0KZXh0ZXJuIHZvaWQgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hFeGl0KCk7DQoNCg0KZXh0ZXJuIGJvb2wgX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hZaWVsZCgpOw0KDQoNCmV4dGVybiB2b2lkIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIHd4V2FrZVVwSWRsZSgpOw0KDQoNCg0KaW5saW5lIHZvaWQgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hQb3N0RXZlbnQod3hFdnRIYW5kbGVyICpkZXN0LCB3
eEV2ZW50JiBldmVudCkNCnsNCiAgICBpZiAoIShkZXN0KSkge2lmICggISh3eEZhbHNlKSApIHd4
T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUvd3gvYXBwLmgiLCAzMjksICJuZWVkIGFuIG9iamVjdCB0
byBwb3N0IGV2ZW50IHRvIGluIHd4UG9zdEV2ZW50Iik7IHJldHVybjsgfTsNCg0KDQogICAgZGVz
dC0+QWRkUGVuZGluZ0V2ZW50KGV2ZW50KTsNCg0KDQoNCn0NCiMgMzYyICIuLi8uLi9pbmNsdWRl
L3d4L2FwcC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hBcHBJbml0aWFs
aXplcg0Kew0KcHVibGljOg0KICAgIHd4QXBwSW5pdGlhbGl6ZXIod3hBcHBJbml0aWFsaXplckZ1
bmN0aW9uIGZuKQ0KICAgICAgICB7IHd4QXBwOjpTZXRJbml0aWFsaXplckZ1bmN0aW9uKGZuKTsg
fQ0KfTsNCiMgMzg0ICIuLi8uLi9pbmNsdWRlL3d4L2FwcC5oIg0KIyAxICIuLi8uLi9pbmNsdWRl
L3d4L21zdy93aW51bmRlZi5oIiAxDQojIDM4NSAiLi4vLi4vaW5jbHVkZS93eC9hcHAuaCIgMg0K
IyAyNSAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQoNCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNs
dWRlL3d4L3BhbmVsLmgiIDENCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9nZW5lcmljL3Bh
bmVsZy5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2dlbmVyaWMvcGFuZWxnLmgiDQojcHJh
Z21hIGludGVyZmFjZSAicGFuZWxnLmgiDQojIDI1ICIuLi8uLi9pbmNsdWRlL3d4L2dlbmVyaWMv
cGFuZWxnLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEJ1dHRvbjsNCg0K
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4UGFuZWxOYW1l
U3RyOw0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4UGFuZWwg
OiBwdWJsaWMgd3hXaW5kb3cNCnsNCnB1YmxpYzoNCiAgICB3eFBhbmVsKCkgeyBJbml0KCk7IH0N
Cg0KDQoNCiAgICB3eFBhbmVsKHd4V2luZG93ICpwYXJlbnQsDQogICAgICAgICAgICBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwNCiAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAw
eDAwMDgwMDAwIHwgMHgwMDIwMDAwMCwNCiAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1l
ID0gd3hQYW5lbE5hbWVTdHIpDQogICAgew0KICAgICAgICBJbml0KCk7DQoNCiAgICAgICAgQ3Jl
YXRlKHBhcmVudCwgLTEsIHd4UG9pbnQoeCwgeSksIHd4U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgc3R5
bGUsIG5hbWUpOw0KICAgIH0NCg0KDQogICAgd3hQYW5lbCh3eFdpbmRvdyAqcGFyZW50LA0KICAg
ICAgICAgICAgd3hXaW5kb3dJRCBpZCA9IC0xLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYg
cG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUg
PSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgbG9uZyBzdHlsZSA9IDB4MDAwODAwMDAgfCAw
eDAwMjAwMDAwLA0KICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFBhbmVsTmFt
ZVN0cikNCiAgICB7DQogICAgICAgIEluaXQoKTsNCg0KICAgICAgICBDcmVhdGUocGFyZW50LCBp
ZCwgcG9zLCBzaXplLCBzdHlsZSwgbmFtZSk7DQogICAgfQ0KDQoNCiAgICBib29sIENyZWF0ZSh3
eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4
UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4
U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9
IDB4MDAwODAwMDAgfCAweDAwMjAwMDAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5n
JiBuYW1lID0gd3hQYW5lbE5hbWVTdHIpOw0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBJbml0RGlh
bG9nKCk7DQoNCg0KICAgIHd4QnV0dG9uICpHZXREZWZhdWx0SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnRuRGVmYXVsdDsgfQ0KICAgIHZvaWQgU2V0RGVmYXVsdEl0ZW0od3hCdXR0b24gKmJ0bikg
eyBtX2J0bkRlZmF1bHQgPSBidG47IH0NCg0KDQoNCg0KDQogICAgdm9pZCBPblN5c0NvbG91ckNo
YW5nZWQod3hTeXNDb2xvdXJDaGFuZ2VkRXZlbnQmIGV2ZW50KTsNCg0KDQogICAgdm9pZCBPbk5h
dmlnYXRpb25LZXkod3hOYXZpZ2F0aW9uS2V5RXZlbnQmIGV2ZW50KTsNCg0KDQogICAgdm9pZCBP
bkZvY3VzKHd4Rm9jdXNFdmVudCYgZXZlbnQpOw0KDQoNCiAgICB2b2lkIE9uU2l6ZSh3eFNpemVF
dmVudCYgZXZlbnQpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0Rm9jdXMoKTsNCg0KDQogICAg
dm9pZCBTZXRMYXN0Rm9jdXMod3hXaW5kb3cgKndpbikgeyBtX3dpbkxhc3RGb2N1c2VkID0gd2lu
OyB9DQogICAgd3hXaW5kb3cgKkdldExhc3RGb2N1cygpIGNvbnN0IHsgcmV0dXJuIG1fd2luTGFz
dEZvY3VzZWQ7IH0NCg0KcHJvdGVjdGVkOg0KDQogICAgdm9pZCBJbml0KCk7DQoNCg0KICAgIGJv
b2wgU2V0Rm9jdXNUb0NoaWxkKCk7DQoNCg0KICAgIHd4V2luZG93ICptX3dpbkxhc3RGb2N1c2Vk
Ow0KDQoNCiAgICB3eEJ1dHRvbiAqbV9idG5EZWZhdWx0Ow0KDQpwcml2YXRlOg0KICAgIHB1Ymxp
Yzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hQYW5lbDsgd3hDbGFzc0luZm8gKkdldENs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFBhbmVsOjpzbV9jbGFzc3d4UGFuZWw7IH0NCiAg
ICBwcml2YXRlOiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxlRW50cnkgc21fZXZlbnRUYWJsZUVu
dHJpZXNbXTtwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGUgc21fZXZlbnRUYWJs
ZTsgdmlydHVhbCBjb25zdCB3eEV2ZW50VGFibGUqIEdldEV2ZW50VGFibGUoKSBjb25zdDsNCn07
DQoNCg0KZXh0ZXJuIGJvb2wgd3hTZXRGb2N1c1RvQ2hpbGQod3hXaW5kb3cgKndpbiwgd3hXaW5k
b3cgKipjaGlsZCk7DQojIDUgIi4uLy4uL2luY2x1ZGUvd3gvcGFuZWwuaCIgMg0KIyAzMSAiLi4v
Li4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZnJhbWUuaCIgMQ0K
IyAyMCAiLi4vLi4vaW5jbHVkZS93eC9mcmFtZS5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImZyYW1l
YmFzZS5oIg0KDQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNv
bnN0IGNoYXIqIHd4RnJhbWVOYW1lU3RyOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0
ZXJuIGNvbnN0IGNoYXIqIHd4U3RhdHVzTGluZU5hbWVTdHI7DQpfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hUb29sQmFyTmFtZVN0cjsNCl9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIGV4dGVybiB3eFdpbmRvdyogd3hXbmRIb29rOw0KDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1lbnVCYXI7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFN0YXR1c0JhcjsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4VG9vbEJhcjsNCiMgNTYgIi4uLy4uL2luY2x1ZGUvd3gvZnJhbWUuaCINCmNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RnJhbWVCYXNlIDogcHVibGljIHd4V2luZG93DQp7DQpw
dWJsaWM6DQoNCiAgICB3eEZyYW1lQmFzZSgpOw0KDQogICAgd3hGcmFtZSAqTmV3KHd4V2luZG93
ICpwYXJlbnQsDQogICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICAg
ICAgIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSwNCiAgICAgICAgICAgICAgICAgY29uc3Qgd3hQb2lu
dCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6
ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAo
MHgwODAwIHwgMHgwMDQwIHwgMHgwNDAwIHwgMHgwMjAwIHwgMHgyMDAwMDAwMCB8IDB4MDA0MDAw
MDApLA0KICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4RnJhbWVOYW1l
U3RyKTsNCg0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIE1heGltaXplKGJvb2wgbWF4aW1pemUg
PSAxKSA9IDA7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBSZXN0b3JlKCkgPSAwOw0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgSWNvbml6ZShib29sIGljb25pemUgPSAxKSA9IDA7DQoNCg0KICAgIHZpcnR1
YWwgYm9vbCBJc01heGltaXplZCgpIGNvbnN0ID0gMDsNCg0KDQogICAgdmlydHVhbCBib29sIElz
SWNvbml6ZWQoKSBjb25zdCA9IDA7DQoNCg0KICAgIGNvbnN0IHd4SWNvbiYgR2V0SWNvbigpIGNv
bnN0IHsgcmV0dXJuIG1faWNvbjsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0SWNvbihjb25z
dCB3eEljb24mIGljb24pIHsgbV9pY29uID0gaWNvbjsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQg
TWFrZU1vZGFsKGJvb2wgbW9kYWwgPSAxKTsNCg0KDQoNCiAgICB2aXJ0dWFsIHd4UG9pbnQgR2V0
Q2xpZW50QXJlYU9yaWdpbigpIGNvbnN0Ow0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldE1l
bnVCYXIod3hNZW51QmFyICptZW51YmFyKSA9IDA7DQogICAgdmlydHVhbCB3eE1lbnVCYXIgKkdl
dE1lbnVCYXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTWVudUJhcjsgfQ0KDQoNCiAgICBib29s
IENvbW1hbmQoaW50IGlkKSB7IHJldHVybiBQcm9jZXNzQ29tbWFuZChpZCk7IH0NCg0KDQogICAg
Ym9vbCBQcm9jZXNzQ29tbWFuZChpbnQgaWQpOw0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIHd4U3Rh
dHVzQmFyKiBDcmVhdGVTdGF0dXNCYXIoaW50IG51bWJlciA9IDEsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAweDAwMTAsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQgPSAwLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4U3RhdHVzTGlu
ZU5hbWVTdHIpOw0KDQogICAgdmlydHVhbCB3eFN0YXR1c0JhciAqT25DcmVhdGVTdGF0dXNCYXIo
aW50IG51bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIHN0eWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4
V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd3hTdHJpbmcmIG5hbWUpOw0KDQogICAgdmlydHVhbCB3eFN0YXR1c0JhciAqR2V0U3Rh
dHVzQmFyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVN0YXR1c0JhcjsgfQ0KDQoNCiAgICB2b2lk
IFNldFN0YXR1c0Jhcih3eFN0YXR1c0JhciAqc3RhdEJhcikgeyBtX2ZyYW1lU3RhdHVzQmFyID0g
c3RhdEJhcjsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U3RhdHVzVGV4dChjb25zdCB3eFN0
cmluZyAmdGV4dCwgaW50IG51bWJlciA9IDApOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRTdGF0dXNX
aWR0aHMoaW50IG4sIGNvbnN0IGludCB3aWR0aHNfZmllbGRbXSk7DQoNCg0KDQoNCg0KDQogICAg
dmlydHVhbCB3eFRvb2xCYXIqIENyZWF0ZVRvb2xCYXIobG9uZyBzdHlsZSA9IDB4MDAyMDAwMDB8
d3hIT1JJWk9OVEFMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4V2lu
ZG93SUQgaWQgPSAtMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3eFN0cmluZyYgbmFtZSA9IHd4VG9vbEJhck5hbWVTdHIpOw0KDQogICAgdmlydHVhbCB3eFRv
b2xCYXIgKk9uQ3JlYXRlVG9vbEJhcihsb25nIHN0eWxlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lICk7DQoNCg0KICAgIHZpcnR1YWwg
d3hUb29sQmFyICpHZXRUb29sQmFyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVRvb2xCYXI7IH0N
CiAgICB2aXJ0dWFsIHZvaWQgU2V0VG9vbEJhcih3eFRvb2xCYXIgKnRvb2xiYXIpIHsgbV9mcmFt
ZVRvb2xCYXIgPSB0b29sYmFyOyB9DQojIDE2NCAiLi4vLi4vaW5jbHVkZS93eC9mcmFtZS5oIg0K
ICAgIHZpcnR1YWwgYm9vbCBEZXN0cm95KCk7DQogICAgdmlydHVhbCBib29sIElzVG9wTGV2ZWwo
KSBjb25zdCB7IHJldHVybiAxOyB9DQoNCg0KICAgIHZvaWQgT25JZGxlKHd4SWRsZUV2ZW50JiBl
dmVudCk7DQogICAgdm9pZCBPbkNsb3NlV2luZG93KHd4Q2xvc2VFdmVudCYgZXZlbnQpOw0KICAg
IHZvaWQgT25NZW51SGlnaGxpZ2h0KHd4TWVudUV2ZW50JiBldmVudCk7DQogICAgdm9pZCBPblNp
emUod3hTaXplRXZlbnQmIGV2ZW50KTsNCg0KDQogICAgdm9pZCBPbkFjdGl2YXRlKHd4QWN0aXZh
dGVFdmVudCAmKSB7IH0NCg0KDQogICAgdm9pZCBEb01lbnVVcGRhdGVzKCk7DQogICAgdm9pZCBE
b01lbnVVcGRhdGVzKHd4TWVudSogbWVudSwgd3hXaW5kb3cqIGZvY3VzV2luKTsNCg0KcHJvdGVj
dGVkOg0KDQoNCg0KDQoNCiAgICB2b2lkIERlbGV0ZUFsbEJhcnMoKTsNCg0KICAgIHd4TWVudUJh
ciAqbV9mcmFtZU1lbnVCYXI7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgUG9zaXRpb25TdGF0
dXNCYXIoKSB7IH0NCg0KDQoNCiAgICBib29sIFNob3dNZW51SGVscCh3eFN0YXR1c0JhciAqc3Rh
dGJhciwgaW50IGlkKTsNCg0KICAgIHd4U3RhdHVzQmFyICptX2ZyYW1lU3RhdHVzQmFyOw0KDQoN
Cg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgUG9zaXRpb25Ub29sQmFyKCkgeyB9DQoNCiAgICB3eFRv
b2xCYXIgKm1fZnJhbWVUb29sQmFyOw0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIERvQ2xpZW50
VG9TY3JlZW4oaW50ICp4LCBpbnQgKnkpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBEb1NjcmVl
blRvQ2xpZW50KGludCAqeCwgaW50ICp5KSBjb25zdDsNCg0KDQogICAgd3hJY29uIG1faWNvbjsN
Cg0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRh
YmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVu
dFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0
Ow0KfTsNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvZnJhbWUuaCIgMQ0KIyAxNiAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvZnJhbWUuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJmcmFtZS5o
Ig0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RnJhbWUgOiBwdWJsaWMg
d3hGcmFtZUJhc2UNCnsNCnB1YmxpYzoNCg0KICAgIHd4RnJhbWUoKSB7IEluaXQoKTsgfQ0KICAg
IHd4RnJhbWUod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgIHd4V2luZG93SUQgaWQsDQog
ICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgdGl0bGUsDQogICAgICAgICAgICBjb25zdCB3eFBv
aW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYg
c2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICBsb25nIHN0eWxlID0gKDB4MDgwMCB8
IDB4MDA0MCB8IDB4MDQwMCB8IDB4MDIwMCB8IDB4MjAwMDAwMDAgfCAweDAwNDAwMDAwKSwNCiAg
ICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hGcmFtZU5hbWVTdHIpDQogICAgew0K
ICAgICAgICBJbml0KCk7DQoNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIHRpdGxlLCBwb3Ms
IHNpemUsIHN0eWxlLCBuYW1lKTsNCiAgICB9DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAq
cGFyZW50LA0KICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAg
Y29uc3Qgd3hTdHJpbmcmIHRpdGxlLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBv
cyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6
ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9ICgweDA4MDAg
fCAweDAwNDAgfCAweDA0MDAgfCAweDAyMDAgfCAweDIwMDAwMDAwIHwgMHgwMDQwMDAwMCksDQog
ICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eEZyYW1lTmFtZVN0cik7DQoN
CiAgICB2aXJ0dWFsIH53eEZyYW1lKCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBNYXhpbWl6ZShi
b29sIG1heGltaXplID0gMSk7DQogICAgdmlydHVhbCBib29sIElzTWF4aW1pemVkKCkgY29uc3Q7
DQogICAgdmlydHVhbCB2b2lkIEljb25pemUoYm9vbCBpY29uaXplID0gMSk7DQogICAgdmlydHVh
bCBib29sIElzSWNvbml6ZWQoKSBjb25zdDsNCiAgICB2aXJ0dWFsIHZvaWQgUmVzdG9yZSgpOw0K
ICAgIHZpcnR1YWwgdm9pZCBTZXRNZW51QmFyKHd4TWVudUJhciAqbWVudWJhcik7DQogICAgdmly
dHVhbCB2b2lkIFNldEljb24oY29uc3Qgd3hJY29uJiBpY29uKTsNCiAgICB2aXJ0dWFsIGJvb2wg
U2hvd0Z1bGxTY3JlZW4oYm9vbCBzaG93LCBsb25nIHN0eWxlID0gKDB4MDEgfCAweDAyIHwgMHgw
NCB8IDB4MDggfCAweDEwKSk7DQogICAgdmlydHVhbCBib29sIElzRnVsbFNjcmVlbigpIGNvbnN0
IHsgcmV0dXJuIG1fZnNJc1Nob3dpbmc7IH07DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBT
aG93KGJvb2wgc2hvdyA9IDEpOw0KDQoNCiAgICB2b2lkIE9uQWN0aXZhdGUod3hBY3RpdmF0ZUV2
ZW50JiBldmVudCk7DQogICAgdm9pZCBPblN5c0NvbG91ckNoYW5nZWQod3hTeXNDb2xvdXJDaGFu
Z2VkRXZlbnQmIGV2ZW50KTsNCg0KDQoNCiAgICB2aXJ0dWFsIHd4VG9vbEJhciogQ3JlYXRlVG9v
bEJhcihsb25nIHN0eWxlID0gMHgwMDIwMDAwMCB8IHd4SE9SSVpPTlRBTCB8IDB4MDAyMCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eFdpbmRvd0lEIGlkID0gLTEsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUg
PSB3eFRvb2xCYXJOYW1lU3RyKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBQb3NpdGlvblRvb2xCYXIo
KTsNCg0KDQoNCg0KICAgIHZpcnR1YWwgd3hTdGF0dXNCYXIqIE9uQ3JlYXRlU3RhdHVzQmFyKGlu
dCBudW1iZXIgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgc3R5bGUgPSAweDAwMTAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3hXaW5kb3dJRCBpZCA9IDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFN0YXR1c0xpbmVOYW1lU3Ry
KTsNCg0KICAgIHZpcnR1YWwgdm9pZCBQb3NpdGlvblN0YXR1c0JhcigpOw0KDQoNCg0KDQoNCg0K
ICAgIHN0YXRpYyB2b2lkIFVzZU5hdGl2ZVN0YXR1c0Jhcihib29sIHVzZU5hdGl2ZSkNCiAgICAg
ICAgeyBtX3VzZU5hdGl2ZVN0YXR1c0JhciA9IHVzZU5hdGl2ZTsgfTsNCiAgICBzdGF0aWMgYm9v
bCBVc2VzTmF0aXZlU3RhdHVzQmFyKCkNCiAgICAgICAgeyByZXR1cm4gbV91c2VOYXRpdmVTdGF0
dXNCYXI7IH07DQoNCg0KICAgIFdYSE1FTlUgR2V0V2luTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1f
aE1lbnU7IH0NCg0KICAgIHZpcnR1YWwgdm9pZCBSZW1vdmVDaGlsZCh3eFdpbmRvd0Jhc2UgKmNo
aWxkKTsNCg0KDQogICAgYm9vbCBIYW5kbGVQYWludCgpOw0KICAgIGJvb2wgSGFuZGxlU2l6ZShp
bnQgeCwgaW50IHksIFdYVUlOVCBmbGFnKTsNCiAgICBib29sIEhhbmRsZUNvbW1hbmQoV1hXT1JE
IGlkLCBXWFdPUkQgY21kLCBXWEhXTkQgY29udHJvbCk7DQogICAgYm9vbCBIYW5kbGVNZW51U2Vs
ZWN0KFdYV09SRCBuSXRlbSwgV1hXT1JEIG5GbGFncywgV1hITUVOVSBoTWVudSk7DQoNCiAgICBi
b29sIE1TV0NyZWF0ZShpbnQgaWQsIHd4V2luZG93ICpwYXJlbnQsIGNvbnN0IGNoYXIgKndjbGFz
cywNCiAgICAgICAgICAgICAgICAgICB3eFdpbmRvdyAqd3hfd2luLCBjb25zdCBjaGFyICp0aXRs
ZSwNCiAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo
dCwgbG9uZyBzdHlsZSk7DQoNCg0KDQogICAgV1hIV05EIEdldFRvb2xUaXBDdHJsKCkgY29uc3Qg
eyByZXR1cm4gbV9od25kVG9vbFRpcDsgfQ0KICAgIHZvaWQgU2V0VG9vbFRpcEN0cmwoV1hIV05E
IGh3bmRUVCkgeyBtX2h3bmRUb29sVGlwID0gaHduZFRUOyB9DQoNCg0KcHJvdGVjdGVkOg0KDQog
ICAgdm9pZCBJbml0KCk7DQoNCg0KICAgIHZvaWQgRG9TaG93V2luZG93KGludCBuU2hvd0NtZCk7
DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0dldENsaWVudFNpemUoaW50ICp3aWR0aCwgaW50ICpo
ZWlnaHQpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBEb0dldFNpemUoaW50ICp3aWR0aCwgaW50
ICpoZWlnaHQpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBEb0dldFBvc2l0aW9uKGludCAqeCwg
aW50ICp5KSBjb25zdDsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb1NldENsaWVudFNpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsNCg0KDQogICAgdm9pZCBEZXRhY2hNZW51QmFyKCk7DQoNCg0KDQog
ICAgdmlydHVhbCB2b2lkIEludGVybmFsU2V0TWVudUJhcigpOw0KDQoNCiAgICB2b2lkIEljb25p
emVDaGlsZEZyYW1lcyhib29sIGJJY29uaXplKTsNCg0KDQogICAgYm9vbCBNU1dUcmFuc2xhdGVN
ZXNzYWdlKFdYTVNHKiBwTXNnKTsNCg0KDQogICAgbG9uZyBNU1dXaW5kb3dQcm9jKFdYVUlOVCBt
ZXNzYWdlLCBXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQoNCiAgICBib29sIG1f
aWNvbml6ZWQ7DQogICAgV1hISUNPTiBtX2RlZmF1bHRJY29uOw0KDQoNCiAgICBzdGF0aWMgYm9v
bCBtX3VzZU5hdGl2ZVN0YXR1c0JhcjsNCg0KDQoNCiAgICB3eFdpbmRvdyAqbV93aW5MYXN0Rm9j
dXNlZDsNCg0KDQogICAgbG9uZyBtX2ZzU3R5bGU7DQogICAgd3hSZWN0IG1fZnNPbGRTaXplOw0K
ICAgIGxvbmcgbV9mc09sZFdpbmRvd1N0eWxlOw0KICAgIGludCBtX2ZzU3RhdHVzQmFyRmllbGRz
Ow0KICAgIGludCBtX2ZzU3RhdHVzQmFySGVpZ2h0Ow0KICAgIGludCBtX2ZzVG9vbEJhckhlaWdo
dDsNCg0KICAgIGJvb2wgbV9mc0lzTWF4aW1pemVkOw0KICAgIGJvb2wgbV9mc0lzU2hvd2luZzsN
Cg0KcHJpdmF0ZToNCg0KICAgIFdYSFdORCBtX2h3bmRUb29sVGlwOw0KDQoNCiAgICBwcml2YXRl
OiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxlRW50cnkgc21fZXZlbnRUYWJsZUVudHJpZXNbXTtw
cm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGUgc21fZXZlbnRUYWJsZTsgdmlydHVh
bCBjb25zdCB3eEV2ZW50VGFibGUqIEdldEV2ZW50VGFibGUoKSBjb25zdDsNCiAgICBwdWJsaWM6
IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4RnJhbWU7IHd4Q2xhc3NJbmZvICpHZXRDbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hGcmFtZTo6c21fY2xhc3N3eEZyYW1lOyB9DQp9Ow0K
IyAyMjQgIi4uLy4uL2luY2x1ZGUvd3gvZnJhbWUuaCIgMg0KIyAzMiAiLi4vLi4vaW5jbHVkZS93
eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZGMuaCIgMQ0KIyAxNiAiLi4vLi4vaW5j
bHVkZS93eC9kYy5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImRjYmFzZS5oIg0KIyAyOCAiLi4vLi4v
aW5jbHVkZS93eC9kYy5oIg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2JydXNoLmgiIDENCg0KDQoN
Cg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9icnVzaC5oIiAxDQojIDE2ICIuLi8uLi9pbmNs
dWRlL3d4L21zdy9icnVzaC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImJydXNoLmgiDQoNCg0KDQoN
CiMgMSAiLi4vLi4vaW5jbHVkZS93eC9iaXRtYXAuaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2lu
Y2x1ZGUvd3gvbXN3L2JpdG1hcC5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9iaXRt
YXAuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJiaXRtYXAuaCINCg0KDQoNCg0KIyAxICIuLi8uLi9p
bmNsdWRlL3d4L3BhbGV0dGUuaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3
L3BhbGV0dGUuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvcGFsZXR0ZS5oIg0KI3By
YWdtYSBpbnRlcmZhY2UgInBhbGV0dGUuaCINCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hQYWxldHRlOw0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eFBhbGV0dGVSZWZEYXRhOiBwdWJsaWMgd3hHRElSZWZEYXRhDQp7DQogICAgZnJpZW5kIGNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4UGFsZXR0ZTsNCnB1YmxpYzoNCiAgICB3
eFBhbGV0dGVSZWZEYXRhKHZvaWQpOw0KICAgIH53eFBhbGV0dGVSZWZEYXRhKHZvaWQpOw0KcHJv
dGVjdGVkOg0KIFdYSFBBTEVUVEUgbV9oUGFsZXR0ZTsNCn07DQoNCg0KDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSB3eFBhbGV0dGU6IHB1YmxpYyB3eEdESU9iamVjdA0Kew0KICBw
dWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4UGFsZXR0ZTsgd3hDbGFzc0luZm8g
KkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFBhbGV0dGU6OnNtX2NsYXNzd3hQYWxl
dHRlOyB9DQoNCnB1YmxpYzoNCiAgd3hQYWxldHRlKHZvaWQpOw0KICBpbmxpbmUgd3hQYWxldHRl
KGNvbnN0IHd4UGFsZXR0ZSYgcGFsZXR0ZSkgeyBSZWYocGFsZXR0ZSk7IH0NCg0KICB3eFBhbGV0
dGUoaW50IG4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlZCwgY29uc3QgdW5zaWduZWQgY2hhciAq
Z3JlZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJsdWUpOw0KICB+d3hQYWxldHRlKHZvaWQpOw0K
ICBib29sIENyZWF0ZShpbnQgbiwgY29uc3QgdW5zaWduZWQgY2hhciAqcmVkLCBjb25zdCB1bnNp
Z25lZCBjaGFyICpncmVlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqYmx1ZSk7DQogIGludCBHZXRQ
aXhlbChjb25zdCB1bnNpZ25lZCBjaGFyIHJlZCwgY29uc3QgdW5zaWduZWQgY2hhciBncmVlbiwg
Y29uc3QgdW5zaWduZWQgY2hhciBibHVlKSBjb25zdDsNCiAgYm9vbCBHZXRSR0IoaW50IHBpeGVs
LCB1bnNpZ25lZCBjaGFyICpyZWQsIHVuc2lnbmVkIGNoYXIgKmdyZWVuLCB1bnNpZ25lZCBjaGFy
ICpibHVlKSBjb25zdDsNCg0KICB2aXJ0dWFsIGJvb2wgT2sodm9pZCkgY29uc3QgeyByZXR1cm4g
KG1fcmVmRGF0YSAhPSBfX251bGwpIDsgfQ0KDQogIGlubGluZSB3eFBhbGV0dGUmIG9wZXJhdG9y
ID0gKGNvbnN0IHd4UGFsZXR0ZSYgcGFsZXR0ZSkgeyBpZiAoKnRoaXMgPT0gcGFsZXR0ZSkgcmV0
dXJuICgqdGhpcyk7IFJlZihwYWxldHRlKTsgcmV0dXJuICp0aGlzOyB9DQogIGlubGluZSBib29s
IG9wZXJhdG9yID09IChjb25zdCB3eFBhbGV0dGUmIHBhbGV0dGUpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmRGF0YSA9PSBwYWxldHRlLm1fcmVmRGF0YTsgfQ0KICBpbmxpbmUgYm9vbCBvcGVyYXRvciAh
PSAoY29uc3Qgd3hQYWxldHRlJiBwYWxldHRlKSBjb25zdCB7IHJldHVybiBtX3JlZkRhdGEgIT0g
cGFsZXR0ZS5tX3JlZkRhdGE7IH0NCg0KICB2aXJ0dWFsIGJvb2wgRnJlZVJlc291cmNlKGJvb2wg
Zm9yY2UgPSAwKTsNCg0KICBpbmxpbmUgV1hIUEFMRVRURSBHZXRIUEFMRVRURSh2b2lkKSBjb25z
dCB7IHJldHVybiAoKCh3eFBhbGV0dGVSZWZEYXRhICopbV9yZWZEYXRhKSA/ICgod3hQYWxldHRl
UmVmRGF0YSAqKW1fcmVmRGF0YSktPm1faFBhbGV0dGUgOiAwKTsgfQ0KICB2b2lkIFNldEhQQUxF
VFRFKFdYSFBBTEVUVEUgcGFsKTsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvcGFsZXR0ZS5o
IiAyDQojIDIyICIuLi8uLi9pbmNsdWRlL3d4L21zdy9iaXRtYXAuaCIgMg0KDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eERDOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hDb250cm9sOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCaXRt
YXA7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEJpdG1hcEhhbmRsZXI7DQpj
bGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEljb247DQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eE1hc2s7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eEN1cnNvcjsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Q29udHJvbDsN
CiMgMzkgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2JpdG1hcC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgd3hCaXRtYXBSZWZEYXRhIDogcHVibGljIHd4R0RJSW1hZ2VSZWZEYXRh
DQp7DQpwdWJsaWM6DQogICAgd3hCaXRtYXBSZWZEYXRhKCk7DQogICAgdmlydHVhbCB+d3hCaXRt
YXBSZWZEYXRhKCkgeyBGcmVlKCk7IH0NCg0KICAgIHZpcnR1YWwgdm9pZCBGcmVlKCk7DQoNCnB1
YmxpYzoNCiAgICBpbnQgbV9udW1Db2xvcnM7DQogICAgd3hQYWxldHRlIG1fYml0bWFwUGFsZXR0
ZTsNCiAgICBpbnQgbV9xdWFsaXR5Ow0KDQoNCg0KDQoNCg0KDQogICAgd3hEQyAqbV9zZWxlY3Rl
ZEludG87DQoNCg0KICAgIHd4TWFzayAqbV9iaXRtYXBNYXNrOw0KfTsNCg0KDQoNCg0KDQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEJpdG1hcCA6IHB1YmxpYyB3eEdESUltYWdl
DQp7DQpwdWJsaWM6DQoNCiAgICB3eEJpdG1hcCgpIHsgSW5pdCgpOyB9DQoNCg0KICAgIHd4Qml0
bWFwKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXApIHsgSW5pdCgpOyBSZWYoYml0bWFwKTsgfQ0KDQoN
CiAgICB3eEJpdG1hcChjb25zdCBjaGFyIGJpdHNbXSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgZGVwdGggPSAxKTsNCg0KDQogICAgd3hCaXRtYXAoY29uc3QgY2hhciAqKmRhdGEpIHsgQ3Jl
YXRlRnJvbVhwbShkYXRhKTsgfQ0KICAgIHd4Qml0bWFwKGNoYXIgKipkYXRhKSB7IENyZWF0ZUZy
b21YcG0oKGNvbnN0IGNoYXIgKiopZGF0YSk7IH0NCg0KDQogICAgd3hCaXRtYXAoY29uc3Qgd3hT
dHJpbmcmIG5hbWUsIGxvbmcgdHlwZSA9IHd4QklUTUFQX1RZUEVfQk1QX1JFU09VUkNFKTsNCg0K
DQogICAgd3hCaXRtYXAodm9pZCAqZGF0YSwgbG9uZyB0eXBlLCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBkZXB0aCA9IDEpOw0KDQoNCiAgICB3eEJpdG1hcChpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBkZXB0aCA9IC0xKTsNCg0KDQoNCiAgICB3eEJpdG1hcChjb25zdCB3eEljb24mIGlj
b24pIHsgSW5pdCgpOyBDb3B5RnJvbUljb24oaWNvbik7IH0NCg0KICAgIHd4Qml0bWFwJiBvcGVy
YXRvcj0oY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCkNCiAgICB7DQogICAgICAgIGlmICggbV9yZWZE
YXRhICE9IGJpdG1hcC5tX3JlZkRhdGEgKQ0KICAgICAgICAgICAgUmVmKGJpdG1hcCk7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB3eEJpdG1hcCYgb3BlcmF0b3I9KGNvbnN0
IHd4SWNvbiYgaWNvbikNCiAgICB7DQogICAgICAgICh2b2lkKUNvcHlGcm9tSWNvbihpY29uKTsN
Cg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgd3hCaXRtYXAmIG9wZXJhdG9y
PShjb25zdCB3eEN1cnNvciYgY3Vyc29yKQ0KICAgIHsNCiAgICAgICAgKHZvaWQpQ29weUZyb21D
dXJzb3IoY3Vyc29yKTsNCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdmly
dHVhbCB+d3hCaXRtYXAoKTsNCg0KDQogICAgd3hCaXRtYXAgR2V0U3ViQml0bWFwKCBjb25zdCB3
eFJlY3QmIHJlY3QgKSBjb25zdDsNCg0KDQogICAgYm9vbCBDb3B5RnJvbUljb24oY29uc3Qgd3hJ
Y29uJiBpY29uKTsNCg0KDQogICAgYm9vbCBDb3B5RnJvbUN1cnNvcihjb25zdCB3eEN1cnNvciYg
Y3Vyc29yKTsNCg0KICAgIHZpcnR1YWwgYm9vbCBDcmVhdGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgZGVwdGggPSAtMSk7DQogICAgdmlydHVhbCBib29sIENyZWF0ZSh2b2lkICpkYXRhLCBs
b25nIHR5cGUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRoID0gMSk7DQogICAgdmly
dHVhbCBib29sIExvYWRGaWxlKGNvbnN0IHd4U3RyaW5nJiBuYW1lLCBsb25nIHR5cGUgPSB3eEJJ
VE1BUF9UWVBFX0JNUF9SRVNPVVJDRSk7DQogICAgdmlydHVhbCBib29sIFNhdmVGaWxlKGNvbnN0
IHd4U3RyaW5nJiBuYW1lLCBpbnQgdHlwZSwgY29uc3Qgd3hQYWxldHRlICpjbWFwID0gX19udWxs
KTsNCg0KICAgIHd4Qml0bWFwUmVmRGF0YSAqR2V0Qml0bWFwRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICh3eEJpdG1hcFJlZkRhdGEgKiltX3JlZkRhdGE7IH0NCg0KICAgIGludCBHZXRRdWFsaXR5KCkg
Y29uc3QgeyByZXR1cm4gKEdldEJpdG1hcERhdGEoKSA/IEdldEJpdG1hcERhdGEoKS0+bV9xdWFs
aXR5IDogMCk7IH0NCiAgICB2b2lkIFNldFF1YWxpdHkoaW50IHEpOw0KDQogICAgd3hQYWxldHRl
KiBHZXRQYWxldHRlKCkgY29uc3QgeyByZXR1cm4gKEdldEJpdG1hcERhdGEoKSA/ICgmIEdldEJp
dG1hcERhdGEoKS0+bV9iaXRtYXBQYWxldHRlKSA6ICh3eFBhbGV0dGUqKSBfX251bGwpOyB9DQog
ICAgdm9pZCBTZXRQYWxldHRlKGNvbnN0IHd4UGFsZXR0ZSYgcGFsZXR0ZSk7DQoNCiAgICB3eE1h
c2sgKkdldE1hc2soKSBjb25zdCB7IHJldHVybiAoR2V0Qml0bWFwRGF0YSgpID8gR2V0Qml0bWFw
RGF0YSgpLT5tX2JpdG1hcE1hc2sgOiAod3hNYXNrKikgX19udWxsKTsgfQ0KICAgIHZvaWQgU2V0
TWFzayh3eE1hc2sgKm1hc2spIDsNCg0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB3eEJpdG1h
cCYgYml0bWFwKSBjb25zdCB7IHJldHVybiBtX3JlZkRhdGEgPT0gYml0bWFwLm1fcmVmRGF0YTsg
fQ0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3eEJpdG1hcCYgYml0bWFwKSBjb25zdCB7IHJl
dHVybiBtX3JlZkRhdGEgIT0gYml0bWFwLm1fcmVmRGF0YTsgfQ0KIyAxNTggIi4uLy4uL2luY2x1
ZGUvd3gvbXN3L2JpdG1hcC5oIg0KcHVibGljOg0KICAgIHZvaWQgU2V0SEJJVE1BUChXWEhCSVRN
QVAgYm1wKSB7IFNldEhhbmRsZSgoV1hIQU5ETEUpYm1wKTsgfQ0KICAgIFdYSEJJVE1BUCBHZXRI
QklUTUFQKCkgY29uc3QgeyByZXR1cm4gKFdYSEJJVE1BUClHZXRIYW5kbGUoKTsgfQ0KDQogICAg
dm9pZCBTZXRTZWxlY3RlZEludG8od3hEQyAqZGMpIHsgaWYgKEdldEJpdG1hcERhdGEoKSkgR2V0
Qml0bWFwRGF0YSgpLT5tX3NlbGVjdGVkSW50byA9IGRjOyB9DQogICAgd3hEQyAqR2V0U2VsZWN0
ZWRJbnRvKCkgY29uc3QgeyByZXR1cm4gKEdldEJpdG1hcERhdGEoKSA/IEdldEJpdG1hcERhdGEo
KS0+bV9zZWxlY3RlZEludG8gOiAod3hEQyopIF9fbnVsbCk7IH0NCiMgMTc3ICIuLi8uLi9pbmNs
dWRlL3d4L21zdy9iaXRtYXAuaCINCiAgICB3eEJpdG1hcCBHZXRCaXRtYXBGb3JEQyh3eERDJiBk
YykgY29uc3Q7DQoNCnByb3RlY3RlZDoNCg0KICAgIHZvaWQgSW5pdCgpOw0KDQogICAgdmlydHVh
bCB3eEdESUltYWdlUmVmRGF0YSAqQ3JlYXRlRGF0YSgpIGNvbnN0DQogICAgICAgIHsgcmV0dXJu
IG5ldyB3eEJpdG1hcFJlZkRhdGE7IH0NCg0KDQogICAgYm9vbCBDcmVhdGVGcm9tWHBtKGNvbnN0
IGNoYXIgKipiaXRzKTsNCg0KcHJpdmF0ZToNCg0KDQogICAgYm9vbCBDb3B5RnJvbUljb25PckN1
cnNvcihjb25zdCB3eEdESUltYWdlJiBpY29uKTsNCg0KDQogICAgcHVibGljOiBzdGF0aWMgd3hD
bGFzc0luZm8gc21fY2xhc3N3eEJpdG1hcDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZ3eEJpdG1hcDo6c21fY2xhc3N3eEJpdG1hcDsgfQ0KfTsNCg0KDQoNCg0K
DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1hc2sgOiBwdWJsaWMgd3hPYmpl
Y3QNCnsNCnB1YmxpYzoNCiAgICB3eE1hc2soKTsNCg0KDQoNCiAgICB3eE1hc2soY29uc3Qgd3hC
aXRtYXAmIGJpdG1hcCwgY29uc3Qgd3hDb2xvdXImIGNvbG91cik7DQoNCg0KDQogICAgd3hNYXNr
KGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAsIGludCBwYWxldHRlSW5kZXgpOw0KDQoNCiAgICB3eE1h
c2soY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCk7DQoNCg0KICAgIHd4TWFzayhXWEhCSVRNQVAgaGJt
cCkgeyBtX21hc2tCaXRtYXAgPSBoYm1wOyB9DQoNCiAgICB2aXJ0dWFsIH53eE1hc2soKTsNCg0K
ICAgIGJvb2wgQ3JlYXRlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAsIGNvbnN0IHd4Q29sb3VyJiBj
b2xvdXIpOw0KICAgIGJvb2wgQ3JlYXRlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAsIGludCBwYWxl
dHRlSW5kZXgpOw0KICAgIGJvb2wgQ3JlYXRlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXApOw0KDQoN
CiAgICBXWEhCSVRNQVAgR2V0TWFza0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0JpdG1h
cDsgfQ0KICAgIHZvaWQgU2V0TWFza0JpdG1hcChXWEhCSVRNQVAgYm1wKSB7IG1fbWFza0JpdG1h
cCA9IGJtcDsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgV1hIQklUTUFQIG1fbWFza0JpdG1hcDsNCg0K
ICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hNYXNrOyB3eENsYXNzSW5m
byAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4TWFzazo6c21fY2xhc3N3eE1hc2s7
IH0NCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCaXRt
YXBIYW5kbGVyIDogcHVibGljIHd4R0RJSW1hZ2VIYW5kbGVyDQp7DQpwdWJsaWM6DQogICAgd3hC
aXRtYXBIYW5kbGVyKCkgeyBtX3R5cGUgPSB3eEJJVE1BUF9UWVBFX0lOVkFMSUQ7IH0NCiAgICB3
eEJpdG1hcEhhbmRsZXIoY29uc3Qgd3hTdHJpbmcmIG5hbWUsIGNvbnN0IHd4U3RyaW5nJiBleHQs
IGxvbmcgdHlwZSkNCiAgICAgICAgOiB3eEdESUltYWdlSGFuZGxlcihuYW1lLCBleHQsIHR5cGUp
DQogICAgew0KICAgIH0NCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKHd4Qml0bWFwICpi
aXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgbG9uZyBmbGFncywNCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0
aCwgaW50IGhlaWdodCwgaW50IGRlcHRoID0gMSk7DQogICAgdmlydHVhbCBib29sIExvYWRGaWxl
KHd4Qml0bWFwICpiaXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3Ry
aW5nJiBuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZFdpZHRoLCBpbnQgZGVzaXJlZEhlaWdodCk7
DQogICAgdmlydHVhbCBib29sIFNhdmVGaWxlKHd4Qml0bWFwICpiaXRtYXAsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hQYWxl
dHRlICpwYWxldHRlID0gX19udWxsKTsNCg0KICAgIHZpcnR1YWwgYm9vbCBDcmVhdGUod3hHRElJ
bWFnZSAqaW1hZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncywNCiAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRoID0gMSk7DQogICAgdmlydHVhbCBib29sIExv
YWQod3hHRElJbWFnZSAqaW1hZ2UsDQogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJp
bmcmIG5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgbG9uZyBmbGFncywNCiAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZGVzaXJlZFdpZHRoLCBpbnQgZGVzaXJlZEhlaWdodCk7DQogICAgdmly
dHVhbCBib29sIFNhdmUod3hHRElJbWFnZSAqaW1hZ2UsDQogICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd3hTdHJpbmcmIG5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUpOw0K
DQpwcml2YXRlOg0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hCaXRt
YXBIYW5kbGVyOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4
Qml0bWFwSGFuZGxlcjo6c21fY2xhc3N3eEJpdG1hcEhhbmRsZXI7IH0NCn07DQojIDYgIi4uLy4u
L2luY2x1ZGUvd3gvYml0bWFwLmgiIDINCiMgMjIgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2JydXNo
LmgiIDINCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCcnVzaDsNCg0KY2xh
c3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCcnVzaFJlZkRhdGE6IHB1YmxpYyB3eEdE
SVJlZkRhdGENCnsNCiAgICBmcmllbmQgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hCcnVzaDsNCnB1YmxpYzoNCiAgICB3eEJydXNoUmVmRGF0YSh2b2lkKTsNCiAgICB3eEJydXNo
UmVmRGF0YShjb25zdCB3eEJydXNoUmVmRGF0YSYgZGF0YSk7DQogICAgfnd4QnJ1c2hSZWZEYXRh
KHZvaWQpOw0KDQpwcm90ZWN0ZWQ6DQogIGludCBtX3N0eWxlOw0KICB3eEJpdG1hcCBtX3N0aXBw
bGUgOw0KICB3eENvbG91ciBtX2NvbG91cjsNCiAgV1hIQlJVU0ggbV9oQnJ1c2g7DQp9Ow0KDQoN
Cg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEJydXNoOiBwdWJsaWMgd3hH
RElPYmplY3QNCnsNCiAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eEJydXNo
OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4QnJ1c2g6OnNt
X2NsYXNzd3hCcnVzaDsgfQ0KDQpwdWJsaWM6DQogIHd4QnJ1c2godm9pZCk7DQogIHd4QnJ1c2go
Y29uc3Qgd3hDb2xvdXImIGNvbCwgaW50IHN0eWxlKTsNCiAgd3hCcnVzaChjb25zdCB3eEJpdG1h
cCYgc3RpcHBsZSk7DQogIGlubGluZSB3eEJydXNoKGNvbnN0IHd4QnJ1c2gmIGJydXNoKSB7IFJl
ZihicnVzaCk7IH0NCiAgfnd4QnJ1c2godm9pZCk7DQoNCiAgdmlydHVhbCB2b2lkIFNldENvbG91
cihjb25zdCB3eENvbG91ciYgY29sKSA7DQogIHZpcnR1YWwgdm9pZCBTZXRDb2xvdXIodW5zaWdu
ZWQgY2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYikgOw0KICB2aXJ0dWFs
IHZvaWQgU2V0U3R5bGUoaW50IHN0eWxlKSA7DQogIHZpcnR1YWwgdm9pZCBTZXRTdGlwcGxlKGNv
bnN0IHd4Qml0bWFwJiBzdGlwcGxlKSA7DQoNCiAgaW5saW5lIHd4QnJ1c2gmIG9wZXJhdG9yID0g
KGNvbnN0IHd4QnJ1c2gmIGJydXNoKSB7IGlmICgqdGhpcyA9PSBicnVzaCkgcmV0dXJuICgqdGhp
cyk7IFJlZihicnVzaCk7IHJldHVybiAqdGhpczsgfQ0KICBpbmxpbmUgYm9vbCBvcGVyYXRvciA9
PSAoY29uc3Qgd3hCcnVzaCYgYnJ1c2gpIGNvbnN0IHsgcmV0dXJuIG1fcmVmRGF0YSA9PSBicnVz
aC5tX3JlZkRhdGE7IH0NCiAgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHd4QnJ1c2gm
IGJydXNoKSBjb25zdCB7IHJldHVybiBtX3JlZkRhdGEgIT0gYnJ1c2gubV9yZWZEYXRhOyB9DQoN
CiAgaW5saW5lIHd4Q29sb3VyJiBHZXRDb2xvdXIodm9pZCkgY29uc3QgeyByZXR1cm4gKCgod3hC
cnVzaFJlZkRhdGEgKiltX3JlZkRhdGEpID8gKCh3eEJydXNoUmVmRGF0YSAqKW1fcmVmRGF0YSkt
Pm1fY29sb3VyIDogd3hOdWxsQ29sb3VyKTsgfTsNCiAgaW5saW5lIGludCBHZXRTdHlsZSh2b2lk
KSBjb25zdCB7IHJldHVybiAoKCh3eEJydXNoUmVmRGF0YSAqKW1fcmVmRGF0YSkgPyAoKHd4QnJ1
c2hSZWZEYXRhICopbV9yZWZEYXRhKS0+bV9zdHlsZSA6IDApOyB9Ow0KICBpbmxpbmUgd3hCaXRt
YXAgKkdldFN0aXBwbGUodm9pZCkgY29uc3QgeyByZXR1cm4gKCgod3hCcnVzaFJlZkRhdGEgKilt
X3JlZkRhdGEpID8gJiAoKHd4QnJ1c2hSZWZEYXRhICopbV9yZWZEYXRhKS0+bV9zdGlwcGxlIDog
MCk7IH07DQoNCiAgdmlydHVhbCBib29sIE9rKHZvaWQpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkRh
dGEgIT0gX19udWxsKSA7IH0NCg0KDQogIGJvb2wgUmVhbGl6ZVJlc291cmNlKHZvaWQpOw0KICBX
WEhBTkRMRSBHZXRSZXNvdXJjZUhhbmRsZSh2b2lkKSA7DQogIGJvb2wgRnJlZVJlc291cmNlKGJv
b2wgZm9yY2UgPSAwKTsNCiAgYm9vbCBJc0ZyZWUoKSBjb25zdDsNCiAgdm9pZCBVbnNoYXJlKCk7
DQp9Ow0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L2JydXNoLmgiIDINCiMgMjkgIi4uLy4uL2luY2x1
ZGUvd3gvZGMuaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3Blbi5oIiAxDQoNCg0KDQoNCiMg
MSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvcGVuLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gv
bXN3L3Blbi5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInBlbi5oIg0KDQoNCg0KDQoNCnR5cGVkZWYg
V1hEV09SRCB3eE1TV0Rhc2g7DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4
UGVuOw0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFBlblJlZkRhdGE6IHB1
YmxpYyB3eEdESVJlZkRhdGENCnsNCiAgICBmcmllbmQgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hQZW47DQpwdWJsaWM6DQogICAgd3hQZW5SZWZEYXRhKCk7DQogICAgd3hQZW5S
ZWZEYXRhKGNvbnN0IHd4UGVuUmVmRGF0YSYgZGF0YSk7DQogICAgfnd4UGVuUmVmRGF0YSgpOw0K
DQpwcm90ZWN0ZWQ6DQogIGludCBtX3dpZHRoOw0KICBpbnQgbV9zdHlsZTsNCiAgaW50IG1fam9p
biA7DQogIGludCBtX2NhcCA7DQogIHd4Qml0bWFwIG1fc3RpcHBsZSA7DQogIGludCBtX25iRGFz
aCA7DQogIHd4TVNXRGFzaCAqIG1fZGFzaCA7DQogIHd4Q29sb3VyIG1fY29sb3VyOw0KICBXWEhQ
RU4gbV9oUGVuOw0KfTsNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hQZW46IHB1YmxpYyB3eEdESU9iamVjdA0Kew0KICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5m
byBzbV9jbGFzc3d4UGVuOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJnd4UGVuOjpzbV9jbGFzc3d4UGVuOyB9DQpwdWJsaWM6DQogIHd4UGVuKCk7DQogIHd4UGVu
KGNvbnN0IHd4Q29sb3VyJiBjb2wsIGludCB3aWR0aCwgaW50IHN0eWxlKTsNCiAgd3hQZW4oY29u
c3Qgd3hCaXRtYXAmIHN0aXBwbGUsIGludCB3aWR0aCk7DQogIGlubGluZSB3eFBlbihjb25zdCB3
eFBlbiYgcGVuKSB7IFJlZihwZW4pOyB9DQogIH53eFBlbigpOw0KDQogIGlubGluZSB3eFBlbiYg
b3BlcmF0b3IgPSAoY29uc3Qgd3hQZW4mIHBlbikgeyBpZiAoKnRoaXMgPT0gcGVuKSByZXR1cm4g
KCp0aGlzKTsgUmVmKHBlbik7IHJldHVybiAqdGhpczsgfQ0KICBpbmxpbmUgYm9vbCBvcGVyYXRv
ciA9PSAoY29uc3Qgd3hQZW4mIHBlbikgY29uc3QgeyByZXR1cm4gbV9yZWZEYXRhID09IHBlbi5t
X3JlZkRhdGE7IH0NCiAgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHd4UGVuJiBwZW4p
IGNvbnN0IHsgcmV0dXJuIG1fcmVmRGF0YSAhPSBwZW4ubV9yZWZEYXRhOyB9DQoNCiAgdmlydHVh
bCBib29sIE9rKCkgY29uc3QgeyByZXR1cm4gKG1fcmVmRGF0YSAhPSBfX251bGwpIDsgfQ0KDQoN
CiAgdm9pZCBTZXRDb2xvdXIoY29uc3Qgd3hDb2xvdXImIGNvbCkgOw0KICB2b2lkIFNldENvbG91
cih1bnNpZ25lZCBjaGFyIHIsIHVuc2lnbmVkIGNoYXIgZywgdW5zaWduZWQgY2hhciBiKTsNCg0K
ICB2b2lkIFNldFdpZHRoKGludCB3aWR0aCkgOw0KICB2b2lkIFNldFN0eWxlKGludCBzdHlsZSkg
Ow0KICB2b2lkIFNldFN0aXBwbGUoY29uc3Qgd3hCaXRtYXAmIHN0aXBwbGUpIDsNCiAgdm9pZCBT
ZXREYXNoZXMoaW50IG5iX2Rhc2hlcywgY29uc3Qgd3hEYXNoICpkYXNoKSA7DQogIHZvaWQgU2V0
Sm9pbihpbnQgam9pbikgOw0KICB2b2lkIFNldENhcChpbnQgY2FwKSA7DQoNCiAgaW5saW5lIHd4
Q29sb3VyJiBHZXRDb2xvdXIoKSBjb25zdCB7IHJldHVybiAoKCh3eFBlblJlZkRhdGEgKiltX3Jl
ZkRhdGEpID8gKCh3eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpLT5tX2NvbG91ciA6IHd4TnVsbENv
bG91cik7IH07DQogIGlubGluZSBpbnQgR2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiAoKCh3eFBl
blJlZkRhdGEgKiltX3JlZkRhdGEpID8gKCh3eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpLT5tX3dp
ZHRoIDogMCk7IH07DQogIGlubGluZSBpbnQgR2V0U3R5bGUoKSBjb25zdCB7IHJldHVybiAoKCh3
eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpID8gKCh3eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpLT5t
X3N0eWxlIDogMCk7IH07DQogIGlubGluZSBpbnQgR2V0Sm9pbigpIGNvbnN0IHsgcmV0dXJuICgo
KHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0YSkgPyAoKHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0YSkt
Pm1fam9pbiA6IDApOyB9Ow0KICBpbmxpbmUgaW50IEdldENhcCgpIGNvbnN0IHsgcmV0dXJuICgo
KHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0YSkgPyAoKHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0YSkt
Pm1fY2FwIDogMCk7IH07DQogIGlubGluZSBpbnQgR2V0RGFzaGVzKHd4RGFzaCAqKnB0cikgY29u
c3QNCiAgew0KICAgICpwdHIgPSAoKCh3eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpID8gKHd4RGFz
aCopKCh3eFBlblJlZkRhdGEgKiltX3JlZkRhdGEpLT5tX2Rhc2ggOiAod3hEYXNoKikgX19udWxs
KTsNCiAgICByZXR1cm4gKCgod3hQZW5SZWZEYXRhICopbV9yZWZEYXRhKSA/ICgod3hQZW5SZWZE
YXRhICopbV9yZWZEYXRhKS0+bV9uYkRhc2ggOiAwKTsNCiAgfQ0KDQogIGlubGluZSB3eEJpdG1h
cCAqR2V0U3RpcHBsZSgpIGNvbnN0IHsgcmV0dXJuICgoKHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0
YSkgPyAoJiAoKHd4UGVuUmVmRGF0YSAqKW1fcmVmRGF0YSktPm1fc3RpcHBsZSkgOiAod3hCaXRt
YXAqKSBfX251bGwpOyB9Ow0KDQoNCiAgYm9vbCBSZWFsaXplUmVzb3VyY2UoKTsNCiAgYm9vbCBG
cmVlUmVzb3VyY2UoYm9vbCBmb3JjZSA9IDApOw0KICBXWEhBTkRMRSBHZXRSZXNvdXJjZUhhbmRs
ZSgpIDsNCiAgYm9vbCBJc0ZyZWUoKSBjb25zdDsNCiAgdm9pZCBVbnNoYXJlKCk7DQp9Ow0KDQpp
bnQgd3gybXNQZW5TdHlsZShpbnQgd3hfc3R5bGUpOw0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L3Bl
bi5oIiAyDQojIDMwICIuLi8uLi9pbmNsdWRlL3d4L2RjLmgiIDINCiMgMzggIi4uLy4uL2luY2x1
ZGUvd3gvZGMuaCINCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBpbnQgd3hQYWdl
TnVtYmVyOw0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RENC
YXNlIDogcHVibGljIHd4T2JqZWN0DQp7DQpwdWJsaWM6DQogICAgd3hEQ0Jhc2UoKQ0KICAgIHsN
CiAgICAgICAgbV9jbGlwcGluZyA9IDA7DQogICAgICAgIG1fb2sgPSAxOw0KDQogICAgICAgIFJl
c2V0Qm91bmRpbmdCb3goKTsNCg0KICAgICAgICBtX3NpZ25YID0gbV9zaWduWSA9IDE7DQoNCiAg
ICAgICAgbV9sb2dpY2FsT3JpZ2luWCA9IG1fbG9naWNhbE9yaWdpblkgPQ0KICAgICAgICBtX2Rl
dmljZU9yaWdpblggPSBtX2RldmljZU9yaWdpblkgPSAwOw0KDQogICAgICAgIG1fbG9naWNhbFNj
YWxlWCA9IG1fbG9naWNhbFNjYWxlWSA9DQogICAgICAgIG1fdXNlclNjYWxlWCA9IG1fdXNlclNj
YWxlWSA9DQogICAgICAgIG1fc2NhbGVYID0gbV9zY2FsZVkgPSAxLjA7DQoNCiAgICAgICAgbV9s
b2dpY2FsRnVuY3Rpb24gPSB3eENPUFk7DQoNCiAgICAgICAgbV9iYWNrZ3JvdW5kTW9kZSA9IHd4
VFJBTlNQQVJFTlQ7DQoNCiAgICAgICAgbV9tYXBwaW5nTW9kZSA9IDE7DQoNCiAgICAgICAgbV9i
YWNrZ3JvdW5kQnJ1c2ggPSAqd3hUUkFOU1BBUkVOVF9CUlVTSDsNCg0KICAgICAgICBtX3RleHRG
b3JlZ3JvdW5kQ29sb3VyID0gKnd4QkxBQ0s7DQogICAgICAgIG1fdGV4dEJhY2tncm91bmRDb2xv
dXIgPSAqd3hXSElURTsNCg0KICAgICAgICBtX2NvbG91ciA9IHd4Q29sb3VyRGlzcGxheSgpOw0K
ICAgIH0NCg0KICAgIH53eERDQmFzZSgpIHsgfQ0KDQogICAgdmlydHVhbCB2b2lkIEJlZ2luRHJh
d2luZygpIHsgfQ0KICAgIHZpcnR1YWwgdm9pZCBFbmREcmF3aW5nKCkgeyB9DQoNCg0KDQoNCiAg
ICB2b2lkIEZsb29kRmlsbCh3eENvb3JkIHgsIHd4Q29vcmQgeSwgY29uc3Qgd3hDb2xvdXImIGNv
bCwNCiAgICAgICAgICAgICAgICAgICBpbnQgc3R5bGUgPSAxKQ0KICAgICAgICB7IERvRmxvb2RG
aWxsKHgsIHksIGNvbCwgc3R5bGUpOyB9DQogICAgdm9pZCBGbG9vZEZpbGwoY29uc3Qgd3hQb2lu
dCYgcHQsIGNvbnN0IHd4Q29sb3VyJiBjb2wsDQogICAgICAgICAgICAgICAgICAgaW50IHN0eWxl
ID0gMSkNCiAgICAgICAgeyBEb0Zsb29kRmlsbChwdC54LCBwdC55LCBjb2wsIHN0eWxlKTsgfQ0K
DQogICAgYm9vbCBHZXRQaXhlbCh3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb2xvdXIgKmNvbCkg
Y29uc3QNCiAgICAgICAgeyByZXR1cm4gRG9HZXRQaXhlbCh4LCB5LCBjb2wpOyB9DQogICAgYm9v
bCBHZXRQaXhlbChjb25zdCB3eFBvaW50JiBwdCwgd3hDb2xvdXIgKmNvbCkgY29uc3QNCiAgICAg
ICAgeyByZXR1cm4gRG9HZXRQaXhlbChwdC54LCBwdC55LCBjb2wpOyB9DQoNCiAgICB2b2lkIERy
YXdMaW5lKHd4Q29vcmQgeDEsIHd4Q29vcmQgeTEsIHd4Q29vcmQgeDIsIHd4Q29vcmQgeTIpDQog
ICAgICAgIHsgRG9EcmF3TGluZSh4MSwgeTEsIHgyLCB5Mik7IH0NCiAgICB2b2lkIERyYXdMaW5l
KGNvbnN0IHd4UG9pbnQmIHB0MSwgY29uc3Qgd3hQb2ludCYgcHQyKQ0KICAgICAgICB7IERvRHJh
d0xpbmUocHQxLngsIHB0MS55LCBwdDIueCwgcHQyLnkpOyB9DQoNCiAgICB2b2lkIENyb3NzSGFp
cih3eENvb3JkIHgsIHd4Q29vcmQgeSkNCiAgICAgICAgeyBEb0Nyb3NzSGFpcih4LCB5KTsgfQ0K
ICAgIHZvaWQgQ3Jvc3NIYWlyKGNvbnN0IHd4UG9pbnQmIHB0KQ0KICAgICAgICB7IERvQ3Jvc3NI
YWlyKHB0LngsIHB0LnkpOyB9DQoNCiAgICB2b2lkIERyYXdBcmMod3hDb29yZCB4MSwgd3hDb29y
ZCB5MSwgd3hDb29yZCB4Miwgd3hDb29yZCB5MiwNCiAgICAgICAgICAgICAgICAgd3hDb29yZCB4
Yywgd3hDb29yZCB5YykNCiAgICAgICAgeyBEb0RyYXdBcmMoeDEsIHkxLCB4MiwgeTIsIHhjLCB5
Yyk7IH0NCiAgICB2b2lkIERyYXdBcmMoY29uc3Qgd3hQb2ludCYgcHQxLCBjb25zdCB3eFBvaW50
JiBwdDIsIGNvbnN0IHd4UG9pbnQmIGNlbnRyZSkNCiAgICAgICAgeyBEb0RyYXdBcmMocHQxLngs
IHB0MS55LCBwdDIueCwgcHQyLnksIGNlbnRyZS54LCBjZW50cmUueSk7IH0NCg0KICAgIHZvaWQg
RHJhd0NoZWNrTWFyayh3eENvb3JkIHgsIHd4Q29vcmQgeSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQpDQogICAgICAgIHsgRG9EcmF3Q2hlY2tN
YXJrKHgsIHksIHdpZHRoLCBoZWlnaHQpOyB9DQogICAgdm9pZCBEcmF3Q2hlY2tNYXJrKGNvbnN0
IHd4UmVjdCYgcmVjdCkNCiAgICAgICAgeyBEb0RyYXdDaGVja01hcmsocmVjdC54LCByZWN0Lnks
IHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTsgfQ0KDQogICAgdm9pZCBEcmF3RWxsaXB0aWNBcmMo
d3hDb29yZCB4LCB3eENvb3JkIHksIHd4Q29vcmQgdywgd3hDb29yZCBoLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSBzYSwgZG91YmxlIGVhKQ0KICAgICAgICB7IERvRHJhd0VsbGlw
dGljQXJjKHgsIHksIHcsIGgsIHNhLCBlYSk7IH0NCiAgICB2b2lkIERyYXdFbGxpcHRpY0FyYyhj
b25zdCB3eFBvaW50JiBwdCwgY29uc3Qgd3hTaXplJiBzeiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgc2EsIGRvdWJsZSBlYSkNCiAgICAgICAgeyBEb0RyYXdFbGxpcHRpY0FyYyhw
dC54LCBwdC55LCBzei54LCBzei55LCBzYSwgZWEpOyB9DQoNCiAgICB2b2lkIERyYXdQb2ludCh3
eENvb3JkIHgsIHd4Q29vcmQgeSkNCiAgICAgICAgeyBEb0RyYXdQb2ludCh4LCB5KTsgfQ0KICAg
IHZvaWQgRHJhd1BvaW50KGNvbnN0IHd4UG9pbnQmIHB0KQ0KICAgICAgICB7IERvRHJhd1BvaW50
KHB0LngsIHB0LnkpOyB9DQoNCiAgICB2b2lkIERyYXdMaW5lcyhpbnQgbiwgd3hQb2ludCBwb2lu
dHNbXSwNCiAgICAgICAgICAgICAgICAgICB3eENvb3JkIHhvZmZzZXQgPSAwLCB3eENvb3JkIHlv
ZmZzZXQgPSAwKQ0KICAgICAgICB7IERvRHJhd0xpbmVzKG4sIHBvaW50cywgeG9mZnNldCwgeW9m
ZnNldCk7IH0NCiAgICB2b2lkIERyYXdMaW5lcyhjb25zdCB3eExpc3QgKmxpc3QsDQogICAgICAg
ICAgICAgICAgICAgd3hDb29yZCB4b2Zmc2V0ID0gMCwgd3hDb29yZCB5b2Zmc2V0ID0gMCk7DQoN
CiAgICB2b2lkIERyYXdQb2x5Z29uKGludCBuLCB3eFBvaW50IHBvaW50c1tdLA0KICAgICAgICAg
ICAgICAgICAgICAgd3hDb29yZCB4b2Zmc2V0ID0gMCwgd3hDb29yZCB5b2Zmc2V0ID0gMCwNCiAg
ICAgICAgICAgICAgICAgICAgIGludCBmaWxsU3R5bGUgPSAxKQ0KICAgICAgICB7IERvRHJhd1Bv
bHlnb24obiwgcG9pbnRzLCB4b2Zmc2V0LCB5b2Zmc2V0LCBmaWxsU3R5bGUpOyB9DQoNCiAgICB2
b2lkIERyYXdQb2x5Z29uKGNvbnN0IHd4TGlzdCAqbGlzdCwNCiAgICAgICAgICAgICAgICAgICAg
IHd4Q29vcmQgeG9mZnNldCA9IDAsIHd4Q29vcmQgeW9mZnNldCA9IDAsDQogICAgICAgICAgICAg
ICAgICAgICBpbnQgZmlsbFN0eWxlID0gMSk7DQoNCiAgICB2b2lkIERyYXdSZWN0YW5nbGUod3hD
b29yZCB4LCB3eENvb3JkIHksIHd4Q29vcmQgd2lkdGgsIHd4Q29vcmQgaGVpZ2h0KQ0KICAgICAg
ICB7IERvRHJhd1JlY3RhbmdsZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsgfQ0KICAgIHZvaWQgRHJh
d1JlY3RhbmdsZShjb25zdCB3eFBvaW50JiBwdCwgY29uc3Qgd3hTaXplJiBzeikNCiAgICAgICAg
eyBEb0RyYXdSZWN0YW5nbGUocHQueCwgcHQueSwgc3oueCwgc3oueSk7IH0NCiAgICB2b2lkIERy
YXdSZWN0YW5nbGUoY29uc3Qgd3hSZWN0JiByZWN0KQ0KICAgICAgICB7IERvRHJhd1JlY3Rhbmds
ZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOyB9DQoNCiAgICB2b2lk
IERyYXdSb3VuZGVkUmVjdGFuZ2xlKHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3eENvb3JkIHdpZHRo
LCB3eENvb3JkIGhlaWdodCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBy
YWRpdXMpDQogICAgICAgIHsgRG9EcmF3Um91bmRlZFJlY3RhbmdsZSh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCByYWRpdXMpOyB9DQogICAgdm9pZCBEcmF3Um91bmRlZFJlY3RhbmdsZShjb25zdCB3eFBv
aW50JiBwdCwgY29uc3Qgd3hTaXplJiBzeiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHJhZGl1cykNCiAgICAgICAgeyBEb0RyYXdSb3VuZGVkUmVjdGFuZ2xlKHB0LngsIHB0
LnksIHN6LngsIHN6LnksIHJhZGl1cyk7IH0NCiAgICB2b2lkIERyYXdSb3VuZGVkUmVjdGFuZ2xl
KGNvbnN0IHd4UmVjdCYgciwgZG91YmxlIHJhZGl1cykNCiAgICAgICAgeyBEb0RyYXdSb3VuZGVk
UmVjdGFuZ2xlKHIueCwgci55LCByLndpZHRoLCByLmhlaWdodCwgcmFkaXVzKTsgfQ0KDQogICAg
dm9pZCBEcmF3Q2lyY2xlKHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3eENvb3JkIHJhZGl1cykNCiAg
ICAgICAgeyBEb0RyYXdFbGxpcHNlKHggLSByYWRpdXMsIHkgLSByYWRpdXMsIDIqcmFkaXVzLCAy
KnJhZGl1cyk7IH0NCiAgICB2b2lkIERyYXdFbGxpcHNlKHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3
eENvb3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCkNCiAgICAgICAgeyBEb0RyYXdFbGxpcHNlKHgs
IHksIHdpZHRoLCBoZWlnaHQpOyB9DQogICAgdm9pZCBEcmF3RWxsaXBzZShjb25zdCB3eFBvaW50
JiBwdCwgY29uc3Qgd3hTaXplJiBzeikNCiAgICAgICAgeyBEb0RyYXdFbGxpcHNlKHB0LngsIHB0
LnksIHN6LngsIHN6LnkpOyB9DQogICAgdm9pZCBEcmF3RWxsaXBzZShjb25zdCB3eFJlY3QmIHJl
Y3QpDQogICAgICAgIHsgRG9EcmF3RWxsaXBzZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwg
cmVjdC5oZWlnaHQpOyB9DQoNCiAgICB2b2lkIERyYXdJY29uKGNvbnN0IHd4SWNvbiYgaWNvbiwg
d3hDb29yZCB4LCB3eENvb3JkIHkpDQogICAgICAgIHsgRG9EcmF3SWNvbihpY29uLCB4LCB5KTsg
fQ0KICAgIHZvaWQgRHJhd0ljb24oY29uc3Qgd3hJY29uJiBpY29uLCBjb25zdCB3eFBvaW50JiBw
dCkNCiAgICAgICAgeyBEb0RyYXdJY29uKGljb24sIHB0LngsIHB0LnkpOyB9DQoNCiAgICB2b2lk
IERyYXdCaXRtYXAoY29uc3Qgd3hCaXRtYXAgJmJtcCwgd3hDb29yZCB4LCB3eENvb3JkIHksDQog
ICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlTWFzayA9IDApDQogICAgICAgIHsgRG9EcmF3Qml0
bWFwKGJtcCwgeCwgeSwgdXNlTWFzayk7IH0NCiAgICB2b2lkIERyYXdCaXRtYXAoY29uc3Qgd3hC
aXRtYXAgJmJtcCwgY29uc3Qgd3hQb2ludCYgcHQsDQogICAgICAgICAgICAgICAgICAgIGJvb2wg
dXNlTWFzayA9IDApDQogICAgICAgIHsgRG9EcmF3Qml0bWFwKGJtcCwgcHQueCwgcHQueSwgdXNl
TWFzayk7IH0NCg0KICAgIHZvaWQgRHJhd1RleHQoY29uc3Qgd3hTdHJpbmcmIHRleHQsIHd4Q29v
cmQgeCwgd3hDb29yZCB5KQ0KICAgICAgICB7IERvRHJhd1RleHQodGV4dCwgeCwgeSk7IH0NCiAg
ICB2b2lkIERyYXdUZXh0KGNvbnN0IHd4U3RyaW5nJiB0ZXh0LCBjb25zdCB3eFBvaW50JiBwdCkN
CiAgICAgICAgeyBEb0RyYXdUZXh0KHRleHQsIHB0LngsIHB0LnkpOyB9DQoNCiAgICB2b2lkIERy
YXdSb3RhdGVkVGV4dChjb25zdCB3eFN0cmluZyYgdGV4dCwgd3hDb29yZCB4LCB3eENvb3JkIHks
IGRvdWJsZSBhbmdsZSkNCiAgICAgICAgeyBEb0RyYXdSb3RhdGVkVGV4dCh0ZXh0LCB4LCB5LCBh
bmdsZSk7IH0NCiAgICB2b2lkIERyYXdSb3RhdGVkVGV4dChjb25zdCB3eFN0cmluZyYgdGV4dCwg
Y29uc3Qgd3hQb2ludCYgcHQsIGRvdWJsZSBhbmdsZSkNCiAgICAgICAgeyBEb0RyYXdSb3RhdGVk
VGV4dCh0ZXh0LCBwdC54LCBwdC55LCBhbmdsZSk7IH0NCg0KICAgIGJvb2wgQmxpdCh3eENvb3Jk
IHhkZXN0LCB3eENvb3JkIHlkZXN0LCB3eENvb3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCwNCiAg
ICAgICAgICAgICAgd3hEQyAqc291cmNlLCB3eENvb3JkIHhzcmMsIHd4Q29vcmQgeXNyYywNCiAg
ICAgICAgICAgICAgaW50IHJvcCA9IHd4Q09QWSwgYm9vbCB1c2VNYXNrID0gMCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBEb0JsaXQoeGRlc3QsIHlkZXN0LCB3aWR0aCwgaGVpZ2h0LA0KICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSwgeHNyYywgeXNyYywgcm9wLCB1c2VNYXNrKTsNCiAgICB9
DQogICAgYm9vbCBCbGl0KGNvbnN0IHd4UG9pbnQmIGRlc3RQdCwgY29uc3Qgd3hTaXplJiBzeiwN
CiAgICAgICAgICAgICAgd3hEQyAqc291cmNlLCBjb25zdCB3eFBvaW50JiBzcmNQdCwNCiAgICAg
ICAgICAgICAgaW50IHJvcCA9IHd4Q09QWSwgYm9vbCB1c2VNYXNrID0gMCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBEb0JsaXQoZGVzdFB0LngsIGRlc3RQdC55LCBzei54LCBzei55LA0KICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSwgc3JjUHQueCwgc3JjUHQueSwgcm9wLCB1c2VNYXNrKTsN
CiAgICB9DQoNCg0KDQogICAgdm9pZCBEcmF3U3BsaW5lKHd4Q29vcmQgeDEsIHd4Q29vcmQgeTEs
DQogICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgeDIsIHd4Q29vcmQgeTIsDQogICAgICAgICAg
ICAgICAgICAgIHd4Q29vcmQgeDMsIHd4Q29vcmQgeTMpOw0KICAgIHZvaWQgRHJhd1NwbGluZShp
bnQgbiwgd3hQb2ludCBwb2ludHNbXSk7DQoNCiAgICB2b2lkIERyYXdTcGxpbmUod3hMaXN0ICpw
b2ludHMpIHsgRG9EcmF3U3BsaW5lKHBvaW50cyk7IH0NCg0KDQoNCg0KDQogICAgdmlydHVhbCB2
b2lkIENsZWFyKCkgPSAwOw0KDQogICAgdmlydHVhbCBib29sIFN0YXJ0RG9jKGNvbnN0IHd4U3Ry
aW5nJiApIHsgcmV0dXJuIDE7IH0NCiAgICB2aXJ0dWFsIHZvaWQgRW5kRG9jKCkgeyB9DQoNCiAg
ICB2aXJ0dWFsIHZvaWQgU3RhcnRQYWdlKCkgeyB9DQogICAgdmlydHVhbCB2b2lkIEVuZFBhZ2Uo
KSB7IH0NCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRGb250KGNvbnN0IHd4Rm9udCYgZm9u
dCkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRQZW4oY29uc3Qgd3hQZW4mIHBlbikgPSAwOw0K
ICAgIHZpcnR1YWwgdm9pZCBTZXRCcnVzaChjb25zdCB3eEJydXNoJiBicnVzaCkgPSAwOw0KICAg
IHZpcnR1YWwgdm9pZCBTZXRCYWNrZ3JvdW5kKGNvbnN0IHd4QnJ1c2gmIGJydXNoKSA9IDA7DQog
ICAgdmlydHVhbCB2b2lkIFNldEJhY2tncm91bmRNb2RlKGludCBtb2RlKSA9IDA7DQogICAgdmly
dHVhbCB2b2lkIFNldFBhbGV0dGUoY29uc3Qgd3hQYWxldHRlJiBwYWxldHRlKSA9IDA7DQoNCg0K
DQoNCiAgICB2b2lkIFNldENsaXBwaW5nUmVnaW9uKHd4Q29vcmQgeCwgd3hDb29yZCB5LCB3eENv
b3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCkNCiAgICAgICAgeyBEb1NldENsaXBwaW5nUmVnaW9u
KHgsIHksIHdpZHRoLCBoZWlnaHQpOyB9DQogICAgdm9pZCBTZXRDbGlwcGluZ1JlZ2lvbihjb25z
dCB3eFBvaW50JiBwdCwgY29uc3Qgd3hTaXplJiBzeikNCiAgICAgICAgeyBEb1NldENsaXBwaW5n
UmVnaW9uKHB0LngsIHB0LnksIHN6LngsIHN6LnkpOyB9DQogICAgdm9pZCBTZXRDbGlwcGluZ1Jl
Z2lvbihjb25zdCB3eFJlY3QmIHJlY3QpDQogICAgICAgIHsgRG9TZXRDbGlwcGluZ1JlZ2lvbihy
ZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOyB9DQogICAgdm9pZCBTZXRD
bGlwcGluZ1JlZ2lvbihjb25zdCB3eFJlZ2lvbiYgcmVnaW9uKQ0KICAgICAgICB7IERvU2V0Q2xp
cHBpbmdSZWdpb25Bc1JlZ2lvbihyZWdpb24pOyB9DQoNCiAgICB2aXJ0dWFsIHZvaWQgRGVzdHJv
eUNsaXBwaW5nUmVnaW9uKCkgPSAwOw0KDQogICAgdm9pZCBHZXRDbGlwcGluZ0JveCh3eENvb3Jk
ICp4LCB3eENvb3JkICp5LCB3eENvb3JkICp3LCB3eENvb3JkICpoKSBjb25zdA0KICAgICAgICB7
IERvR2V0Q2xpcHBpbmdCb3goeCwgeSwgdywgaCk7IH0NCiAgICB2b2lkIEdldENsaXBwaW5nQm94
KHd4UmVjdCYgcmVjdCkgY29uc3QNCiAgICAgICAgew0KDQogICAgICAgICAgd3hDb29yZCB4LCB5
LCB3LCBoOw0KICAgICAgICAgIERvR2V0Q2xpcHBpbmdCb3goJngsICZ5LCAmdywgJmgpOw0KICAg
ICAgICAgIHJlY3QueCA9IHg7IHJlY3QueSA9IHk7IHJlY3Qud2lkdGggPSB3OyByZWN0LmhlaWdo
dCA9IGg7DQogICAgICAgIH0NCg0KDQoNCg0KICAgIHZpcnR1YWwgd3hDb29yZCBHZXRDaGFySGVp
Z2h0KCkgY29uc3QgPSAwOw0KICAgIHZpcnR1YWwgd3hDb29yZCBHZXRDaGFyV2lkdGgoKSBjb25z
dCA9IDA7DQoNCiAgICB2b2lkIEdldFRleHRFeHRlbnQoY29uc3Qgd3hTdHJpbmcmIHN0cmluZywN
CiAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCAqeCwgd3hDb29yZCAqeSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgd3hDb29yZCAqZGVzY2VudCA9IF9fbnVsbCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgd3hDb29yZCAqZXh0ZXJuYWxMZWFkaW5nID0gX19udWxsLA0KICAgICAgICAgICAg
ICAgICAgICAgICB3eEZvbnQgKnRoZUZvbnQgPSBfX251bGwpIGNvbnN0DQogICAgICAgIHsgRG9H
ZXRUZXh0RXh0ZW50KHN0cmluZywgeCwgeSwgZGVzY2VudCwgZXh0ZXJuYWxMZWFkaW5nLCB0aGVG
b250KTsgfQ0KDQoNCg0KDQoNCiAgICB2b2lkIEdldFNpemUoaW50ICp3aWR0aCwgaW50ICpoZWln
aHQpIGNvbnN0DQogICAgICAgIHsgRG9HZXRTaXplKHdpZHRoLCBoZWlnaHQpOyB9DQogICAgd3hT
aXplIEdldFNpemUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaW50IHcsIGg7DQogICAgICAgIERv
R2V0U2l6ZSgmdywgJmgpOw0KDQogICAgICAgIHJldHVybiB3eFNpemUodywgaCk7DQogICAgfQ0K
DQoNCiAgICB2b2lkIEdldFNpemVNTShpbnQqIHdpZHRoLCBpbnQqIGhlaWdodCkgY29uc3QNCiAg
ICAgICAgeyBEb0dldFNpemVNTSh3aWR0aCwgaGVpZ2h0KTsgfQ0KICAgIHd4U2l6ZSBHZXRTaXpl
TU0oKSBjb25zdA0KICAgIHsNCiAgICAgICAgaW50IHcsIGg7DQogICAgICAgIERvR2V0U2l6ZU1N
KCZ3LCAmaCk7DQoNCiAgICAgICAgcmV0dXJuIHd4U2l6ZSh3LCBoKTsNCiAgICB9DQoNCg0KDQoN
Cg0KDQogICAgd3hDb29yZCBEZXZpY2VUb0xvZ2ljYWxYKHd4Q29vcmQgeCkgY29uc3Q7DQogICAg
d3hDb29yZCBEZXZpY2VUb0xvZ2ljYWxZKHd4Q29vcmQgeSkgY29uc3Q7DQogICAgd3hDb29yZCBE
ZXZpY2VUb0xvZ2ljYWxYUmVsKHd4Q29vcmQgeCkgY29uc3Q7DQogICAgd3hDb29yZCBEZXZpY2VU
b0xvZ2ljYWxZUmVsKHd4Q29vcmQgeSkgY29uc3Q7DQogICAgd3hDb29yZCBMb2dpY2FsVG9EZXZp
Y2VYKHd4Q29vcmQgeCkgY29uc3Q7DQogICAgd3hDb29yZCBMb2dpY2FsVG9EZXZpY2VZKHd4Q29v
cmQgeSkgY29uc3Q7DQogICAgd3hDb29yZCBMb2dpY2FsVG9EZXZpY2VYUmVsKHd4Q29vcmQgeCkg
Y29uc3Q7DQogICAgd3hDb29yZCBMb2dpY2FsVG9EZXZpY2VZUmVsKHd4Q29vcmQgeSkgY29uc3Q7
DQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgQ2FuRHJhd0JpdG1hcCgpIGNvbnN0ID0gMDsNCiAg
ICB2aXJ0dWFsIGJvb2wgQ2FuR2V0VGV4dEV4dGVudCgpIGNvbnN0ID0gMDsNCg0KDQogICAgdmly
dHVhbCBpbnQgR2V0RGVwdGgoKSBjb25zdCA9IDA7DQoNCg0KICAgIHZpcnR1YWwgd3hTaXplIEdl
dFBQSSgpIGNvbnN0ID0gMDsNCg0KICAgIHZpcnR1YWwgYm9vbCBPaygpIGNvbnN0IHsgcmV0dXJu
IG1fb2s7IH0NCg0KDQoNCg0KDQogICAgaW50IEdldEJhY2tncm91bmRNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kTW9kZTsgfQ0KICAgIGNvbnN0IHd4QnJ1c2gmIEdldEJhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRCcnVzaDsgfQ0KICAgIGNvbnN0IHd4QnJ1
c2gmIEdldEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9icnVzaDsgfQ0KICAgIGNvbnN0IHd4Rm9u
dCYgR2V0Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQ0KICAgIGNvbnN0IHd4UGVuJiBH
ZXRQZW4oKSBjb25zdCB7IHJldHVybiBtX3BlbjsgfQ0KICAgIGNvbnN0IHd4Q29sb3VyJiBHZXRU
ZXh0QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEJhY2tncm91bmRDb2xvdXI7IH0N
CiAgICBjb25zdCB3eENvbG91ciYgR2V0VGV4dEZvcmVncm91bmQoKSBjb25zdCB7IHJldHVybiBt
X3RleHRGb3JlZ3JvdW5kQ29sb3VyOyB9DQoNCg0KICAgIHd4QnJ1c2gmIEdldEJhY2tncm91bmQo
KSB7IHJldHVybiBtX2JhY2tncm91bmRCcnVzaDsgfQ0KICAgIHd4QnJ1c2gmIEdldEJydXNoKCkg
eyByZXR1cm4gbV9icnVzaDsgfQ0KICAgIHd4Rm9udCYgR2V0Rm9udCgpIHsgcmV0dXJuIG1fZm9u
dDsgfQ0KICAgIHd4UGVuJiBHZXRQZW4oKSB7IHJldHVybiBtX3BlbjsgfQ0KICAgIHd4Q29sb3Vy
JiBHZXRUZXh0QmFja2dyb3VuZCgpIHsgcmV0dXJuIG1fdGV4dEJhY2tncm91bmRDb2xvdXI7IH0N
CiAgICB3eENvbG91ciYgR2V0VGV4dEZvcmVncm91bmQoKSB7IHJldHVybiBtX3RleHRGb3JlZ3Jv
dW5kQ29sb3VyOyB9DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0VGV4dEZvcmVncm91bmQoY29uc3Qg
d3hDb2xvdXImIGNvbG91cikNCiAgICAgICAgeyBtX3RleHRGb3JlZ3JvdW5kQ29sb3VyID0gY29s
b3VyOyB9DQogICAgdmlydHVhbCB2b2lkIFNldFRleHRCYWNrZ3JvdW5kKGNvbnN0IHd4Q29sb3Vy
JiBjb2xvdXIpDQogICAgICAgIHsgbV90ZXh0QmFja2dyb3VuZENvbG91ciA9IGNvbG91cjsgfQ0K
DQogICAgaW50IEdldE1hcE1vZGUoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmdNb2RlOyB9DQog
ICAgdmlydHVhbCB2b2lkIFNldE1hcE1vZGUoaW50IG1vZGUpID0gMDsNCg0KICAgIHZpcnR1YWwg
dm9pZCBHZXRVc2VyU2NhbGUoZG91YmxlICp4LCBkb3VibGUgKnkpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAoIHggKSAqeCA9IG1fdXNlclNjYWxlWDsNCiAgICAgICAgaWYgKCB5ICkgKnkgPSBt
X3VzZXJTY2FsZVk7DQogICAgfQ0KICAgIHZpcnR1YWwgdm9pZCBTZXRVc2VyU2NhbGUoZG91Ymxl
IHgsIGRvdWJsZSB5KSA9IDA7DQoNCiAgICB2aXJ0dWFsIHZvaWQgR2V0TG9naWNhbFNjYWxlKGRv
dWJsZSAqeCwgZG91YmxlICp5KQ0KICAgIHsNCiAgICAgICAgaWYgKCB4ICkgKnggPSBtX2xvZ2lj
YWxTY2FsZVg7DQogICAgICAgIGlmICggeSApICp5ID0gbV9sb2dpY2FsU2NhbGVZOw0KICAgIH0N
CiAgICB2aXJ0dWFsIHZvaWQgU2V0TG9naWNhbFNjYWxlKGRvdWJsZSB4LCBkb3VibGUgeSkNCiAg
ICB7DQogICAgICAgIG1fbG9naWNhbFNjYWxlWCA9IHg7DQogICAgICAgIG1fbG9naWNhbFNjYWxl
WSA9IHk7DQogICAgfQ0KDQogICAgdm9pZCBHZXRMb2dpY2FsT3JpZ2luKHd4Q29vcmQgKngsIHd4
Q29vcmQgKnkpIGNvbnN0DQogICAgICAgIHsgRG9HZXRMb2dpY2FsT3JpZ2luKHgsIHkpOyB9DQog
ICAgd3hQb2ludCBHZXRMb2dpY2FsT3JpZ2luKCkgY29uc3QNCiAgICAgICAgeyB3eENvb3JkIHgs
IHk7IERvR2V0TG9naWNhbE9yaWdpbigmeCwgJnkpOyByZXR1cm4gd3hQb2ludCh4LCB5KTsgfQ0K
ICAgIHZpcnR1YWwgdm9pZCBTZXRMb2dpY2FsT3JpZ2luKHd4Q29vcmQgeCwgd3hDb29yZCB5KSA9
IDA7DQoNCiAgICB2b2lkIEdldERldmljZU9yaWdpbih3eENvb3JkICp4LCB3eENvb3JkICp5KSBj
b25zdA0KICAgICAgICB7IERvR2V0RGV2aWNlT3JpZ2luKHgsIHkpOyB9DQogICAgd3hQb2ludCBH
ZXREZXZpY2VPcmlnaW4oKSBjb25zdA0KICAgICAgICB7IHd4Q29vcmQgeCwgeTsgRG9HZXREZXZp
Y2VPcmlnaW4oJngsICZ5KTsgcmV0dXJuIHd4UG9pbnQoeCwgeSk7IH0NCiAgICB2aXJ0dWFsIHZv
aWQgU2V0RGV2aWNlT3JpZ2luKHd4Q29vcmQgeCwgd3hDb29yZCB5KSA9IDA7DQoNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0QXhpc09yaWVudGF0aW9uKGJvb2wgeExlZnRSaWdodCwgYm9vbCB5Qm90dG9t
VXApID0gMDsNCg0KICAgIGludCBHZXRMb2dpY2FsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2xvZ2ljYWxGdW5jdGlvbjsgfQ0KICAgIHZpcnR1YWwgdm9pZCBTZXRMb2dpY2FsRnVuY3Rpb24o
aW50IGZ1bmN0aW9uKSA9IDA7DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRPcHRpbWl6
YXRpb24oYm9vbCApIHsgfQ0KICAgIHZpcnR1YWwgYm9vbCBHZXRPcHRpbWl6YXRpb24oKSB7IHJl
dHVybiAwOyB9DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQ2FsY0JvdW5kaW5nQm94KHd4Q29v
cmQgeCwgd3hDb29yZCB5KQ0KICAgIHsNCiAgICAgIGlmICggbV9pc0JCb3hWYWxpZCApDQogICAg
ICB7DQogICAgICAgICBpZiAoIHggPCBtX21pblggKSBtX21pblggPSB4Ow0KICAgICAgICAgaWYg
KCB5IDwgbV9taW5ZICkgbV9taW5ZID0geTsNCiAgICAgICAgIGlmICggeCA+IG1fbWF4WCApIG1f
bWF4WCA9IHg7DQogICAgICAgICBpZiAoIHkgPiBtX21heFkgKSBtX21heFkgPSB5Ow0KICAgICAg
fQ0KICAgICAgZWxzZQ0KICAgICAgew0KICAgICAgICAgbV9pc0JCb3hWYWxpZCA9IDE7DQoNCiAg
ICAgICAgIG1fbWluWCA9IHg7DQogICAgICAgICBtX21pblkgPSB5Ow0KICAgICAgICAgbV9tYXhY
ID0geDsNCiAgICAgICAgIG1fbWF4WSA9IHk7DQogICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBS
ZXNldEJvdW5kaW5nQm94KCkNCiAgICB7DQogICAgICAgIG1faXNCQm94VmFsaWQgPSAwOw0KDQog
ICAgICAgIG1fbWluWCA9IG1fbWF4WCA9IG1fbWluWSA9IG1fbWF4WSA9IDA7DQogICAgfQ0KDQoN
CiAgICB3eENvb3JkIE1pblgoKSBjb25zdCB7IHJldHVybiBtX21pblg7IH0NCiAgICB3eENvb3Jk
IE1heFgoKSBjb25zdCB7IHJldHVybiBtX21heFg7IH0NCiAgICB3eENvb3JkIE1pblkoKSBjb25z
dCB7IHJldHVybiBtX21pblk7IH0NCiAgICB3eENvb3JkIE1heFkoKSBjb25zdCB7IHJldHVybiBt
X21heFk7IH0NCg0KDQoNCg0KDQoNCiAgICB2b2lkIEdldFRleHRFeHRlbnQoY29uc3Qgd3hTdHJp
bmcmIHN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqeCwgbG9uZyAqeSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyAqZGVzY2VudCA9IF9fbnVsbCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgbG9uZyAqZXh0ZXJuYWxMZWFkaW5nID0gX19udWxsLA0KICAgICAgICAgICAg
ICAgICAgICAgICB3eEZvbnQgKnRoZUZvbnQgPSBfX251bGwpIGNvbnN0DQogICAgew0KICAgICAg
ICB3eENvb3JkIHgyLCB5MiwgZGVzY2VudDIsIGV4dGVybmFsTGVhZGluZzI7DQogICAgICAgIERv
R2V0VGV4dEV4dGVudChzdHJpbmcsICZ4MiwgJnkyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
JmRlc2NlbnQyLCAmZXh0ZXJuYWxMZWFkaW5nMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZUZvbnQpOw0KICAgICAgICBpZiAoIHggKQ0KICAgICAgICAgICAgKnggPSB4MjsNCiAgICAgICAg
aWYgKCB5ICkNCiAgICAgICAgICAgICp5ID0geTI7DQogICAgICAgIGlmICggZGVzY2VudCApDQog
ICAgICAgICAgICAqZGVzY2VudCA9IGRlc2NlbnQyOw0KICAgICAgICBpZiAoIGV4dGVybmFsTGVh
ZGluZyApDQogICAgICAgICAgICAqZXh0ZXJuYWxMZWFkaW5nID0gZXh0ZXJuYWxMZWFkaW5nMjsN
CiAgICB9DQoNCiAgICB2b2lkIEdldExvZ2ljYWxPcmlnaW4obG9uZyAqeCwgbG9uZyAqeSkgY29u
c3QNCiAgICB7DQogICAgICAgIHd4Q29vcmQgeDIsIHkyOw0KICAgICAgICBEb0dldExvZ2ljYWxP
cmlnaW4oJngyLCAmeTIpOw0KICAgICAgICBpZiAoIHggKQ0KICAgICAgICAgICAgKnggPSB4MjsN
CiAgICAgICAgaWYgKCB5ICkNCiAgICAgICAgICAgICp5ID0geTI7DQogICAgfQ0KDQogICAgdm9p
ZCBHZXREZXZpY2VPcmlnaW4obG9uZyAqeCwgbG9uZyAqeSkgY29uc3QNCiAgICB7DQogICAgICAg
IHd4Q29vcmQgeDIsIHkyOw0KICAgICAgICBEb0dldERldmljZU9yaWdpbigmeDIsICZ5Mik7DQog
ICAgICAgIGlmICggeCApDQogICAgICAgICAgICAqeCA9IHgyOw0KICAgICAgICBpZiAoIHkgKQ0K
ICAgICAgICAgICAgKnkgPSB5MjsNCiAgICB9DQogICAgdm9pZCBHZXRDbGlwcGluZ0JveChsb25n
ICp4LCBsb25nICp5LCBsb25nICp3LCBsb25nICpoKSBjb25zdA0KICAgIHsNCiAgICAgICAgd3hD
b29yZCB4eCx5eSx3dyxoaDsNCiAgICAgICAgRG9HZXRDbGlwcGluZ0JveCgmeHgsICZ5eSwgJnd3
LCAmaGgpOw0KICAgICAgICBpZiAoeCkgKnggPSB4eDsNCiAgICAgICAgaWYgKHkpICp5ID0geXk7
DQogICAgICAgIGlmICh3KSAqdyA9IHd3Ow0KICAgICAgICBpZiAoaCkgKmggPSBoaDsNCiAgICB9
DQojIDQ5OSAiLi4vLi4vaW5jbHVkZS93eC9kYy5oIg0KcHJvdGVjdGVkOg0KDQogICAgdmlydHVh
bCB2b2lkIERvRmxvb2RGaWxsKHd4Q29vcmQgeCwgd3hDb29yZCB5LCBjb25zdCB3eENvbG91ciYg
Y29sLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3R5bGUgPSAxKSA9IDA7DQoN
CiAgICB2aXJ0dWFsIGJvb2wgRG9HZXRQaXhlbCh3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb2xv
dXIgKmNvbCkgY29uc3QgPSAwOw0KDQogICAgdmlydHVhbCB2b2lkIERvRHJhd1BvaW50KHd4Q29v
cmQgeCwgd3hDb29yZCB5KSA9IDA7DQogICAgdmlydHVhbCB2b2lkIERvRHJhd0xpbmUod3hDb29y
ZCB4MSwgd3hDb29yZCB5MSwgd3hDb29yZCB4Miwgd3hDb29yZCB5MikgPSAwOw0KDQogICAgdmly
dHVhbCB2b2lkIERvRHJhd0FyYyh3eENvb3JkIHgxLCB3eENvb3JkIHkxLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3hDb29yZCB4Miwgd3hDb29yZCB5MiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4Q29vcmQgeGMsIHd4Q29vcmQgeWMpID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQg
RG9EcmF3Q2hlY2tNYXJrKHd4Q29vcmQgeCwgd3hDb29yZCB5LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQpOw0KICAgIHZpcnR1
YWwgdm9pZCBEb0RyYXdFbGxpcHRpY0FyYyh3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb29yZCB3
LCB3eENvb3JkIGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBz
YSwgZG91YmxlIGVhKSA9IDA7DQoNCiAgICB2aXJ0dWFsIHZvaWQgRG9EcmF3UmVjdGFuZ2xlKHd4
Q29vcmQgeCwgd3hDb29yZCB5LCB3eENvb3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCkgPSAwOw0K
ICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdSb3VuZGVkUmVjdGFuZ2xlKHd4Q29vcmQgeCwgd3hDb29y
ZCB5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgd2lk
dGgsIHd4Q29vcmQgaGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZSByYWRpdXMpID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgRG9EcmF3RWxsaXBzZSh3
eENvb3JkIHgsIHd4Q29vcmQgeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eENv
b3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCkgPSAwOw0KDQogICAgdmlydHVhbCB2b2lkIERvQ3Jv
c3NIYWlyKHd4Q29vcmQgeCwgd3hDb29yZCB5KSA9IDA7DQoNCiAgICB2aXJ0dWFsIHZvaWQgRG9E
cmF3SWNvbihjb25zdCB3eEljb24mIGljb24sIHd4Q29vcmQgeCwgd3hDb29yZCB5KSA9IDA7DQog
ICAgdmlydHVhbCB2b2lkIERvRHJhd0JpdG1hcChjb25zdCB3eEJpdG1hcCAmYm1wLCB3eENvb3Jk
IHgsIHd4Q29vcmQgeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlTWFz
ayA9IDApID0gMDsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdUZXh0KGNvbnN0IHd4U3RyaW5n
JiB0ZXh0LCB3eENvb3JkIHgsIHd4Q29vcmQgeSkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBEb0Ry
YXdSb3RhdGVkVGV4dChjb25zdCB3eFN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3hDb29yZCB4LCB3eENvb3JkIHksIGRvdWJsZSBhbmdsZSkgPSAwOw0K
DQogICAgdmlydHVhbCBib29sIERvQmxpdCh3eENvb3JkIHhkZXN0LCB3eENvb3JkIHlkZXN0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQsDQog
ICAgICAgICAgICAgICAgICAgICAgICB3eERDICpzb3VyY2UsIHd4Q29vcmQgeHNyYywgd3hDb29y
ZCB5c3JjLA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvcCA9IHd4Q09QWSwgYm9vbCB1
c2VNYXNrID0gMCkgPSAwOw0KDQogICAgdmlydHVhbCB2b2lkIERvR2V0U2l6ZShpbnQgKndpZHRo
LCBpbnQgKmhlaWdodCkgY29uc3QgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBEb0dldFNpemVNTShp
bnQqIHdpZHRoLCBpbnQqIGhlaWdodCkgY29uc3QgPSAwOw0KDQogICAgdmlydHVhbCB2b2lkIERv
RHJhd0xpbmVzKGludCBuLCB3eFBvaW50IHBvaW50c1tdLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3eENvb3JkIHhvZmZzZXQsIHd4Q29vcmQgeW9mZnNldCkgPSAwOw0KICAgIHZpcnR1
YWwgdm9pZCBEb0RyYXdQb2x5Z29uKGludCBuLCB3eFBvaW50IHBvaW50c1tdLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgeG9mZnNldCwgd3hDb29yZCB5b2Zmc2V0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsU3R5bGUgPSAxKSA9IDA7DQoN
CiAgICB2aXJ0dWFsIHZvaWQgRG9TZXRDbGlwcGluZ1JlZ2lvbkFzUmVnaW9uKGNvbnN0IHd4UmVn
aW9uJiByZWdpb24pID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgRG9TZXRDbGlwcGluZ1JlZ2lvbih3
eENvb3JkIHgsIHd4Q29vcmQgeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3eENvb3JkIHdpZHRoLCB3eENvb3JkIGhlaWdodCkgPSAwOw0KDQoNCiAgICB2aXJ0dWFsIHZv
aWQgRG9HZXRDbGlwcGluZ1JlZ2lvbih3eENvb3JkICp4LCB3eENvb3JkICp5LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgKncsIHd4Q29vcmQgKmgpDQogICAg
ICAgIHsgRG9HZXRDbGlwcGluZ0JveCh4LCB5LCB3LCBoKTsgfQ0KICAgIHZpcnR1YWwgdm9pZCBE
b0dldENsaXBwaW5nQm94KHd4Q29vcmQgKngsIHd4Q29vcmQgKnksDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3hDb29yZCAqdywgd3hDb29yZCAqaCkgY29uc3QNCiAgICB7DQog
ICAgICAgIGlmICggbV9jbGlwcGluZyApDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICggeCAp
ICp4ID0gbV9jbGlwWDE7DQogICAgICAgICAgICBpZiAoIHkgKSAqeSA9IG1fY2xpcFkxOw0KICAg
ICAgICAgICAgaWYgKCB3ICkgKncgPSBtX2NsaXBYMiAtIG1fY2xpcFgxOw0KICAgICAgICAgICAg
aWYgKCBoICkgKmggPSBtX2NsaXBZMiAtIG1fY2xpcFkxOw0KICAgICAgICB9DQogICAgICAgIGVs
c2UNCiAgICAgICAgew0KICAgICAgICAgICAgKnggPSAqeSA9ICp3ID0gKmggPSAwOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIERvR2V0TG9naWNhbE9yaWdpbih3eENvb3Jk
ICp4LCB3eENvb3JkICp5KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCB4ICkgKnggPSBtX2xv
Z2ljYWxPcmlnaW5YOw0KICAgICAgICBpZiAoIHkgKSAqeSA9IG1fbG9naWNhbE9yaWdpblk7DQog
ICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIERvR2V0RGV2aWNlT3JpZ2luKHd4Q29vcmQgKngsIHd4
Q29vcmQgKnkpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIHggKSAqeCA9IG1fZGV2aWNlT3Jp
Z2luWDsNCiAgICAgICAgaWYgKCB5ICkgKnkgPSBtX2RldmljZU9yaWdpblk7DQogICAgfQ0KDQog
ICAgdmlydHVhbCB2b2lkIERvR2V0VGV4dEV4dGVudChjb25zdCB3eFN0cmluZyYgc3RyaW5nLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCAqeCwgd3hDb29yZCAqeSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgKmRlc2NlbnQgPSBfX251
bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eENvb3JkICpleHRlcm5hbExl
YWRpbmcgPSBfX251bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eEZvbnQg
KnRoZUZvbnQgPSBfX251bGwpIGNvbnN0ID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvRHJh
d1NwbGluZSh3eExpc3QgKnBvaW50cykgPSAwOw0KDQoNCnByb3RlY3RlZDoNCg0KICAgIGJvb2wg
bV9jb2xvdXI6MTsNCiAgICBib29sIG1fb2s6MTsNCiAgICBib29sIG1fY2xpcHBpbmc6MTsNCiAg
ICBib29sIG1faXNJbnRlcmFjdGl2ZToxOw0KICAgIGJvb2wgbV9pc0JCb3hWYWxpZDoxOw0KDQoN
Cg0KDQoNCiAgICB3eENvb3JkIG1fbG9naWNhbE9yaWdpblgsIG1fbG9naWNhbE9yaWdpblk7DQog
ICAgd3hDb29yZCBtX2RldmljZU9yaWdpblgsIG1fZGV2aWNlT3JpZ2luWTsNCg0KICAgIGRvdWJs
ZSBtX2xvZ2ljYWxTY2FsZVgsIG1fbG9naWNhbFNjYWxlWTsNCiAgICBkb3VibGUgbV91c2VyU2Nh
bGVYLCBtX3VzZXJTY2FsZVk7DQogICAgZG91YmxlIG1fc2NhbGVYLCBtX3NjYWxlWTsNCg0KDQog
ICAgaW50IG1fc2lnblgsIG1fc2lnblk7DQoNCg0KICAgIHd4Q29vcmQgbV9taW5YLCBtX21pblks
IG1fbWF4WCwgbV9tYXhZOw0KICAgIHd4Q29vcmQgbV9jbGlwWDEsIG1fY2xpcFkxLCBtX2NsaXBY
MiwgbV9jbGlwWTI7DQoNCiAgICBpbnQgbV9sb2dpY2FsRnVuY3Rpb247DQogICAgaW50IG1fYmFj
a2dyb3VuZE1vZGU7DQogICAgaW50IG1fbWFwcGluZ01vZGU7DQoNCg0KICAgIHd4UGVuIG1fcGVu
Ow0KICAgIHd4QnJ1c2ggbV9icnVzaDsNCiAgICB3eEJydXNoIG1fYmFja2dyb3VuZEJydXNoOw0K
ICAgIHd4Q29sb3VyIG1fdGV4dEZvcmVncm91bmRDb2xvdXI7DQogICAgd3hDb2xvdXIgbV90ZXh0
QmFja2dyb3VuZENvbG91cjsNCiAgICB3eEZvbnQgbV9mb250Ow0KICAgIHd4UGFsZXR0ZSBtX3Bh
bGV0dGU7DQoNCnByaXZhdGU6DQogICAgcHJpdmF0ZTogd3hEQ0Jhc2UoY29uc3Qgd3hEQ0Jhc2Um
KTsgd3hEQ0Jhc2UmIG9wZXJhdG9yPShjb25zdCB3eERDQmFzZSYpOw0KICAgIHB1YmxpYzogc3Rh
dGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hEQ0Jhc2U7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmd3hEQ0Jhc2U6OnNtX2NsYXNzd3hEQ0Jhc2U7IH0NCn07DQoN
Cg0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2RjLmgiIDENCiMgMTYgIi4uLy4u
L2luY2x1ZGUvd3gvbXN3L2RjLmgiDQojcHJhZ21hIGludGVyZmFjZSAiZGMuaCINCg0KDQoNCiMg
MSAiLi4vLi4vaW5jbHVkZS93eC9kYy5oIiAxDQojIDIxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9k
Yy5oIiAyDQojIDc0ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9kYy5oIg0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hEQyA6IHB1YmxpYyB3eERDQmFzZQ0Kew0KICAgIHB1YmxpYzog
c3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hEQzsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZ3eERDOjpzbV9jbGFzc3d4REM7IH0NCg0KcHVibGljOg0KICAg
IHd4REMoKTsNCiAgICB+d3hEQygpOw0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIENsZWFyKCk7
DQoNCiAgICB2aXJ0dWFsIGJvb2wgU3RhcnREb2MoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UpOw0K
ICAgIHZpcnR1YWwgdm9pZCBFbmREb2MoKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBTdGFydFBhZ2Uo
KTsNCiAgICB2aXJ0dWFsIHZvaWQgRW5kUGFnZSgpOw0KDQogICAgdmlydHVhbCB2b2lkIFNldEZv
bnQoY29uc3Qgd3hGb250JiBmb250KTsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0UGVuKGNvbnN0IHd4
UGVuJiBwZW4pOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRCcnVzaChjb25zdCB3eEJydXNoJiBicnVz
aCk7DQogICAgdmlydHVhbCB2b2lkIFNldEJhY2tncm91bmQoY29uc3Qgd3hCcnVzaCYgYnJ1c2gp
Ow0KICAgIHZpcnR1YWwgdm9pZCBTZXRCYWNrZ3JvdW5kTW9kZShpbnQgbW9kZSk7DQogICAgdmly
dHVhbCB2b2lkIFNldFBhbGV0dGUoY29uc3Qgd3hQYWxldHRlJiBwYWxldHRlKTsNCg0KICAgIHZp
cnR1YWwgdm9pZCBEZXN0cm95Q2xpcHBpbmdSZWdpb24oKTsNCg0KICAgIHZpcnR1YWwgd3hDb29y
ZCBHZXRDaGFySGVpZ2h0KCkgY29uc3Q7DQogICAgdmlydHVhbCB3eENvb3JkIEdldENoYXJXaWR0
aCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBEb0dldFRleHRFeHRlbnQoY29uc3Qgd3hTdHJp
bmcmIHN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgKngs
IHd4Q29vcmQgKnksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eENvb3JkICpk
ZXNjZW50ID0gX19udWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29y
ZCAqZXh0ZXJuYWxMZWFkaW5nID0gX19udWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3hGb250ICp0aGVGb250ID0gX19udWxsKSBjb25zdDsNCg0KICAgIHZpcnR1YWwgYm9v
bCBDYW5EcmF3Qml0bWFwKCkgY29uc3Q7DQogICAgdmlydHVhbCBib29sIENhbkdldFRleHRFeHRl
bnQoKSBjb25zdDsNCiAgICB2aXJ0dWFsIGludCBHZXREZXB0aCgpIGNvbnN0Ow0KICAgIHZpcnR1
YWwgd3hTaXplIEdldFBQSSgpIGNvbnN0Ow0KDQogICAgdmlydHVhbCB2b2lkIFNldE1hcE1vZGUo
aW50IG1vZGUpOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRVc2VyU2NhbGUoZG91YmxlIHgsIGRvdWJs
ZSB5KTsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U3lzdGVtU2NhbGUoZG91YmxlIHgsIGRvdWJsZSB5
KTsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0TG9naWNhbFNjYWxlKGRvdWJsZSB4LCBkb3VibGUgeSk7
DQogICAgdmlydHVhbCB2b2lkIFNldExvZ2ljYWxPcmlnaW4od3hDb29yZCB4LCB3eENvb3JkIHkp
Ow0KICAgIHZpcnR1YWwgdm9pZCBTZXREZXZpY2VPcmlnaW4od3hDb29yZCB4LCB3eENvb3JkIHkp
Ow0KICAgIHZpcnR1YWwgdm9pZCBTZXRBeGlzT3JpZW50YXRpb24oYm9vbCB4TGVmdFJpZ2h0LCBi
b29sIHlCb3R0b21VcCk7DQogICAgdmlydHVhbCB2b2lkIFNldExvZ2ljYWxGdW5jdGlvbihpbnQg
ZnVuY3Rpb24pOw0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldFJvcChXWEhEQyBjZGMpOw0K
ICAgIHZpcnR1YWwgdm9pZCBTZWxlY3RPbGRPYmplY3RzKFdYSERDIGRjKTsNCg0KICAgIHd4V2lu
ZG93ICpHZXRXaW5kb3coKSBjb25zdCB7IHJldHVybiBtX2NhbnZhczsgfQ0KICAgIHZvaWQgU2V0
V2luZG93KHd4V2luZG93ICp3aW4pIHsgbV9jYW52YXMgPSB3aW47IH0NCg0KICAgIFdYSERDIEdl
dEhEQygpIGNvbnN0IHsgcmV0dXJuIG1faERDOyB9DQogICAgdm9pZCBTZXRIREMoV1hIREMgZGMs
IGJvb2wgYk93bnNEQyA9IDApDQogICAgew0KICAgICAgICBtX2hEQyA9IGRjOw0KICAgICAgICBt
X2JPd25zREMgPSBiT3duc0RDOw0KICAgIH0NCg0KICAgIGNvbnN0IHd4Qml0bWFwJiBHZXRTZWxl
Y3RlZEJpdG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWRCaXRtYXA7IH0NCiAgICB3eEJp
dG1hcCYgR2V0U2VsZWN0ZWRCaXRtYXAoKSB7IHJldHVybiBtX3NlbGVjdGVkQml0bWFwOyB9DQoN
CnByb3RlY3RlZDoNCiAgICB2aXJ0dWFsIHZvaWQgRG9GbG9vZEZpbGwod3hDb29yZCB4LCB3eENv
b3JkIHksIGNvbnN0IHd4Q29sb3VyJiBjb2wsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzdHlsZSA9IDEpOw0KDQogICAgdmlydHVhbCBib29sIERvR2V0UGl4ZWwod3hDb29yZCB4
LCB3eENvb3JkIHksIHd4Q29sb3VyICpjb2wpIGNvbnN0Ow0KDQogICAgdmlydHVhbCB2b2lkIERv
RHJhd1BvaW50KHd4Q29vcmQgeCwgd3hDb29yZCB5KTsNCiAgICB2aXJ0dWFsIHZvaWQgRG9EcmF3
TGluZSh3eENvb3JkIHgxLCB3eENvb3JkIHkxLCB3eENvb3JkIHgyLCB3eENvb3JkIHkyKTsNCg0K
ICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdBcmMod3hDb29yZCB4MSwgd3hDb29yZCB5MSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgeDIsIHd4Q29vcmQgeTIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICB3eENvb3JkIHhjLCB3eENvb3JkIHljKTsNCiAgICB2aXJ0dWFsIHZv
aWQgRG9EcmF3Q2hlY2tNYXJrKHd4Q29vcmQgeCwgd3hDb29yZCB5LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQpOw0KICAgIHZp
cnR1YWwgdm9pZCBEb0RyYXdFbGxpcHRpY0FyYyh3eENvb3JkIHgsIHd4Q29vcmQgeSwgd3hDb29y
ZCB3LCB3eENvb3JkIGgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBzYSwgZG91YmxlIGVhKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdSZWN0YW5nbGUod3hD
b29yZCB4LCB3eENvb3JkIHksIHd4Q29vcmQgd2lkdGgsIHd4Q29vcmQgaGVpZ2h0KTsNCiAgICB2
aXJ0dWFsIHZvaWQgRG9EcmF3Um91bmRlZFJlY3RhbmdsZSh3eENvb3JkIHgsIHd4Q29vcmQgeSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eENvb3JkIHdpZHRoLCB3
eENvb3JkIGhlaWdodCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgcmFkaXVzKTsNCiAgICB2aXJ0dWFsIHZvaWQgRG9EcmF3RWxsaXBzZSh3eENvb3JkIHgs
IHd4Q29vcmQgeSwgd3hDb29yZCB3aWR0aCwgd3hDb29yZCBoZWlnaHQpOw0KDQogICAgdmlydHVh
bCB2b2lkIERvQ3Jvc3NIYWlyKHd4Q29vcmQgeCwgd3hDb29yZCB5KTsNCg0KICAgIHZpcnR1YWwg
dm9pZCBEb0RyYXdJY29uKGNvbnN0IHd4SWNvbiYgaWNvbiwgd3hDb29yZCB4LCB3eENvb3JkIHkp
Ow0KICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdCaXRtYXAoY29uc3Qgd3hCaXRtYXAgJmJtcCwgd3hD
b29yZCB4LCB3eENvb3JkIHksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVz
ZU1hc2sgPSAwKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdUZXh0KGNvbnN0IHd4U3RyaW5n
JiB0ZXh0LCB3eENvb3JkIHgsIHd4Q29vcmQgeSk7DQogICAgdmlydHVhbCB2b2lkIERvRHJhd1Jv
dGF0ZWRUZXh0KGNvbnN0IHd4U3RyaW5nJiB0ZXh0LCB3eENvb3JkIHgsIHd4Q29vcmQgeSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlKTsNCg0KICAgIHZp
cnR1YWwgYm9vbCBEb0JsaXQod3hDb29yZCB4ZGVzdCwgd3hDb29yZCB5ZGVzdCwgd3hDb29yZCB3
aWR0aCwgd3hDb29yZCBoZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICB3eERDICpzb3Vy
Y2UsIHd4Q29vcmQgeHNyYywgd3hDb29yZCB5c3JjLA0KICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHJvcCA9IHd4Q09QWSwgYm9vbCB1c2VNYXNrID0gMCk7DQoNCg0KDQogICAgdmlydHVhbCB2
b2lkIERvU2V0Q2xpcHBpbmdSZWdpb25Bc1JlZ2lvbihjb25zdCB3eFJlZ2lvbiYgcmVnaW9uKTsN
CiAgICB2aXJ0dWFsIHZvaWQgRG9TZXRDbGlwcGluZ1JlZ2lvbih3eENvb3JkIHgsIHd4Q29vcmQg
eSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eENvb3JkIHdpZHRoLCB3
eENvb3JkIGhlaWdodCk7DQogICAgdmlydHVhbCB2b2lkIERvR2V0Q2xpcHBpbmdSZWdpb24od3hD
b29yZCAqeCwgd3hDb29yZCAqeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3eENvb3JkICp3aWR0aCwgd3hDb29yZCAqaGVpZ2h0KQ0KICAgIHsNCiAgICAgICAgR2V0Q2xp
cHBpbmdCb3goeCwgeSwgd2lkdGgsIGhlaWdodCk7DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lk
IERvR2V0U2l6ZShpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkgY29uc3Q7DQogICAgdmlydHVhbCB2
b2lkIERvR2V0U2l6ZU1NKGludCogd2lkdGgsIGludCogaGVpZ2h0KSBjb25zdDsNCg0KICAgIHZp
cnR1YWwgdm9pZCBEb0RyYXdMaW5lcyhpbnQgbiwgd3hQb2ludCBwb2ludHNbXSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCB4b2Zmc2V0LCB3eENvb3JkIHlvZmZzZXQpOw0K
ICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdQb2x5Z29uKGludCBuLCB3eFBvaW50IHBvaW50c1tdLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgeG9mZnNldCwgd3hDb29yZCB5
b2Zmc2V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWxsU3R5bGUgPSAx
KTsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvRHJhd1NwbGluZSh3eExpc3QgKnBvaW50cyk7DQoN
Cg0KDQogICAgdm9pZCBEcmF3QW55VGV4dChjb25zdCB3eFN0cmluZyYgdGV4dCwgd3hDb29yZCB4
LCB3eENvb3JkIHkpOw0KDQoNCiAgICBpbnQgbV93aW5kb3dFeHRYOw0KICAgIGludCBtX3dpbmRv
d0V4dFk7DQoNCg0KICAgIHd4V2luZG93ICptX2NhbnZhczsNCg0KICAgIHd4Qml0bWFwIG1fc2Vs
ZWN0ZWRCaXRtYXA7DQoNCg0KICAgIGJvb2wgbV9iT3duc0RDOjE7DQoNCg0KDQogICAgV1hIREMg
bV9oREM7DQogICAgaW50IG1faERDQ291bnQ7DQoNCg0KDQoNCiAgICBXWEhCSVRNQVAgbV9vbGRC
aXRtYXA7DQogICAgV1hIUEVOIG1fb2xkUGVuOw0KICAgIFdYSEJSVVNIIG1fb2xkQnJ1c2g7DQog
ICAgV1hIRk9OVCBtX29sZEZvbnQ7DQogICAgV1hIUEFMRVRURSBtX29sZFBhbGV0dGU7DQp9Ow0K
IyA2NDQgIi4uLy4uL2luY2x1ZGUvd3gvZGMuaCIgMg0KIyAzMyAiLi4vLi4vaW5jbHVkZS93eC93
eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZGNjbGllbnQuaCIgMQ0KDQoNCg0KDQojIDEg
Ii4uLy4uL2luY2x1ZGUvd3gvbXN3L2RjY2xpZW50LmgiIDENCiMgMjAgIi4uLy4uL2luY2x1ZGUv
d3gvbXN3L2RjY2xpZW50LmgiDQojcHJhZ21hIGludGVyZmFjZSAiZGNjbGllbnQuaCINCiMgMzEg
Ii4uLy4uL2luY2x1ZGUvd3gvbXN3L2RjY2xpZW50LmgiDQpzdHJ1Y3QgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hQYWludERDSW5mbzsNCg0KdHlwZWRlZiB3eFBhaW50RENJbmZvIF9Md3hB
cnJheURDSW5mbzsgdHlwZWRlZiBpbnQgKCAqQ01QRlVOQ19Md3hBcnJheURDSW5mbykoX0x3eEFy
cmF5RENJbmZvKiogcEl0ZW0xLCBfTHd4QXJyYXlEQ0luZm8qKiBwSXRlbTIpOyBjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEFycmF5RENJbmZvIDogcHVibGljIHd4QmFzZUFycmF5
IHsgcHVibGljOiB3eEFycmF5RENJbmZvKCkgeyB9IHd4QXJyYXlEQ0luZm8oY29uc3Qgd3hBcnJh
eURDSW5mbyYgc3JjKTsgd3hBcnJheURDSW5mbyYgb3BlcmF0b3I9KGNvbnN0IHd4QXJyYXlEQ0lu
Zm8mIHNyYyk7IH53eEFycmF5RENJbmZvKCk7IF9Md3hBcnJheURDSW5mbyYgb3BlcmF0b3JbXShz
aXplX3QgdWlJbmRleCkgY29uc3QgeyByZXR1cm4gKihfTHd4QXJyYXlEQ0luZm8qKXd4QmFzZUFy
cmF5OjpJdGVtKHVpSW5kZXgpOyB9IF9Md3hBcnJheURDSW5mbyYgSXRlbShzaXplX3QgdWlJbmRl
eCkgY29uc3QgeyByZXR1cm4gKihfTHd4QXJyYXlEQ0luZm8qKXd4QmFzZUFycmF5OjpJdGVtKHVp
SW5kZXgpOyB9IF9Md3hBcnJheURDSW5mbyYgTGFzdCgpIGNvbnN0IHsgcmV0dXJuICooX0x3eEFy
cmF5RENJbmZvKikod3hCYXNlQXJyYXk6Okl0ZW0oQ291bnQoKSAtIDEpKTsgfSBpbnQgSW5kZXgo
Y29uc3QgX0x3eEFycmF5RENJbmZvJiBJdGVtLCBib29sIGJGcm9tRW5kID0gMCkgY29uc3Q7IHZv
aWQgQWRkKGNvbnN0IF9Md3hBcnJheURDSW5mbyYgSXRlbSk7IHZvaWQgQWRkKGNvbnN0IF9Md3hB
cnJheURDSW5mbyogcEl0ZW0pIHsgd3hCYXNlQXJyYXk6OkFkZCgobG9uZylwSXRlbSk7IH0gdm9p
ZCBJbnNlcnQoY29uc3QgX0x3eEFycmF5RENJbmZvJiBJdGVtLCBzaXplX3QgdWlJbmRleCk7IHZv
aWQgSW5zZXJ0KGNvbnN0IF9Md3hBcnJheURDSW5mbyogcEl0ZW0sIHNpemVfdCB1aUluZGV4KSB7
IHd4QmFzZUFycmF5OjpJbnNlcnQoKGxvbmcpcEl0ZW0sIHVpSW5kZXgpOyB9IHZvaWQgRW1wdHko
KSB7IERvRW1wdHkoKTsgd3hCYXNlQXJyYXk6OkVtcHR5KCk7IH0gdm9pZCBDbGVhcigpIHsgRG9F
bXB0eSgpOyB3eEJhc2VBcnJheTo6Q2xlYXIoKTsgfSBfTHd4QXJyYXlEQ0luZm8qIERldGFjaChz
aXplX3QgdWlJbmRleCkgeyBfTHd4QXJyYXlEQ0luZm8qIHAgPSAoX0x3eEFycmF5RENJbmZvKil3
eEJhc2VBcnJheTo6SXRlbSh1aUluZGV4KTsgd3hCYXNlQXJyYXk6OlJlbW92ZUF0KHVpSW5kZXgp
OyByZXR1cm4gcDsgfSB2b2lkIFJlbW92ZShzaXplX3QgdWlJbmRleCkgeyBSZW1vdmVBdCh1aUlu
ZGV4KTsgfSB2b2lkIFJlbW92ZUF0KHNpemVfdCB1aUluZGV4KTsgdm9pZCBTb3J0KENNUEZVTkNf
THd4QXJyYXlEQ0luZm8gZkNtcCkgeyB3eEJhc2VBcnJheTo6U29ydCgoQ01QRlVOQylmQ21wKTsg
fSBwcml2YXRlOiB2b2lkIERvRW1wdHkoKTsgdm9pZCBEb0NvcHkoY29uc3Qgd3hBcnJheURDSW5m
byYgc3JjKTsgfTsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eFdpbmRvd0RDIDogcHVibGljIHd4REMNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5m
byBzbV9jbGFzc3d4V2luZG93REM7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiAmd3hXaW5kb3dEQzo6c21fY2xhc3N3eFdpbmRvd0RDOyB9DQoNCnB1YmxpYzoNCiAg
ICB3eFdpbmRvd0RDKCk7DQoNCg0KICAgIHd4V2luZG93REMod3hXaW5kb3cgKndpbik7DQoNCiAg
ICB2aXJ0dWFsIH53eFdpbmRvd0RDKCk7DQp9Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSB3eENsaWVudERDIDogcHVibGljIHd4V2luZG93REMNCnsNCiAgICBwdWJsaWM6IHN0
YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Q2xpZW50REM7IHd4Q2xhc3NJbmZvICpHZXRDbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hDbGllbnREQzo6c21fY2xhc3N3eENsaWVudERDOyB9
DQoNCnB1YmxpYzoNCiAgICB3eENsaWVudERDKCk7DQoNCg0KICAgIHd4Q2xpZW50REMod3hXaW5k
b3cgKndpbik7DQoNCiAgICB2aXJ0dWFsIH53eENsaWVudERDKCk7DQp9Ow0KDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFBhaW50REMgOiBwdWJsaWMgd3hXaW5kb3dEQw0Kew0K
ICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hQYWludERDOyB3eENsYXNz
SW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4UGFpbnREQzo6c21fY2xhc3N3
eFBhaW50REM7IH0NCg0KcHVibGljOg0KICAgIHd4UGFpbnREQygpOw0KDQoNCiAgICB3eFBhaW50
REMod3hXaW5kb3cgKndpbik7DQoNCiAgICB2aXJ0dWFsIH53eFBhaW50REMoKTsNCg0KcHJvdGVj
dGVkOg0KICAgIHN0YXRpYyB3eEFycmF5RENJbmZvIG1zX2NhY2hlOw0KDQoNCiAgICB3eFBhaW50
RENJbmZvICpGaW5kSW5DYWNoZShzaXplX3QgKmluZGV4ID0gX19udWxsKSBjb25zdDsNCn07DQoj
IDYgIi4uLy4uL2luY2x1ZGUvd3gvZGNjbGllbnQuaCIgMg0KIyAzNCAiLi4vLi4vaW5jbHVkZS93
eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZGNtZW1vcnkuaCIgMQ0KDQoNCg0KDQoj
IDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2RjbWVtb3J5LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1
ZGUvd3gvbXN3L2RjbWVtb3J5LmgiDQojcHJhZ21hIGludGVyZmFjZSAiZGNtZW1vcnkuaCINCg0K
DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW1vcnlEQyA6IHB1Ymxp
YyB3eERDDQp7DQpwdWJsaWM6DQogICAgd3hNZW1vcnlEQygpOw0KICAgIHd4TWVtb3J5REMod3hE
QyAqZGMpOw0KDQogICAgfnd4TWVtb3J5REMoKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb0RyYXdS
ZWN0YW5nbGUod3hDb29yZCB4LCB3eENvb3JkIHksIHd4Q29vcmQgd2lkdGgsIHd4Q29vcmQgaGVp
Z2h0KTsNCiAgICB2aXJ0dWFsIHZvaWQgU2VsZWN0T2JqZWN0KGNvbnN0IHd4Qml0bWFwJiBiaXRt
YXApOw0KDQogICAgdmlydHVhbCB2b2lkIERvR2V0U2l6ZShpbnQqIHdpZHRoLCBpbnQqIGhlaWdo
dCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21f
Y2xhc3N3eE1lbW9yeURDOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJnd4TWVtb3J5REM6OnNtX2NsYXNzd3hNZW1vcnlEQzsgfQ0KfTsNCiMgNiAiLi4vLi4vaW5j
bHVkZS93eC9kY21lbW9yeS5oIiAyDQojIDM1ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMg
MSAiLi4vLi4vaW5jbHVkZS93eC9kY3ByaW50LmgiIDENCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNs
dWRlL3d4L21zdy9kY3ByaW50LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2RjcHJp
bnQuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJkY3ByaW50LmgiDQoNCg0KDQoNCg0KIyAxICIuLi8u
Li9pbmNsdWRlL3d4L2NtbmRhdGEuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9jbW5kYXRh
LmgiDQojcHJhZ21hIGludGVyZmFjZSAiY21uZGF0YS5oIg0KDQoNCg0KDQojIDEgIi4uLy4uL2lu
Y2x1ZGUvd3gvZm9udHV0aWwuaCIgMQ0KIyAyMCAiLi4vLi4vaW5jbHVkZS93eC9mb250dXRpbC5o
Ig0KI3ByYWdtYSBpbnRlcmZhY2UgImZvbnR1dGlsLmgiDQojIDUyICIuLi8uLi9pbmNsdWRlL3d4
L2ZvbnR1dGlsLmgiDQpzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hOYXRpdmVF
bmNvZGluZ0luZm8NCnsNCiAgICB3eFN0cmluZyBmYWNlbmFtZTsNCiAgICB3eEZvbnRFbmNvZGlu
ZyBlbmNvZGluZzsNCg0KDQogICAgd3hOYXRpdmVFbmNvZGluZ0luZm8oKSB7IGNoYXJzZXQgPSAw
OyB9DQoNCiAgICBpbnQgY2hhcnNldDsNCiMgNzAgIi4uLy4uL2luY2x1ZGUvd3gvZm9udHV0aWwu
aCINCiAgICBib29sIEZyb21TdHJpbmcoY29uc3Qgd3hTdHJpbmcmIHMpOw0KICAgIHd4U3RyaW5n
IFRvU3RyaW5nKCkgY29uc3Q7DQp9Ow0KIyA4MSAiLi4vLi4vaW5jbHVkZS93eC9mb250dXRpbC5o
Ig0KZXh0ZXJuIGJvb2wgd3hHZXROYXRpdmVGb250RW5jb2Rpbmcod3hGb250RW5jb2RpbmcgZW5j
b2RpbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eE5hdGl2ZUVuY29k
aW5nSW5mbyAqaW5mbyk7DQoNCg0KDQpleHRlcm4gYm9vbCB3eFRlc3RGb250RW5jb2RpbmcoY29u
c3Qgd3hOYXRpdmVFbmNvZGluZ0luZm8mIGluZm8pOw0KIyAyMiAiLi4vLi4vaW5jbHVkZS93eC9j
bW5kYXRhLmgiIDINCg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgd3hDb2xvdXJEYXRhOiBwdWJsaWMgd3hPYmplY3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3
eENsYXNzSW5mbyBzbV9jbGFzc3d4Q29sb3VyRGF0YTsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5m
bygpIGNvbnN0IHsgcmV0dXJuICZ3eENvbG91ckRhdGE6OnNtX2NsYXNzd3hDb2xvdXJEYXRhOyB9
DQpwdWJsaWM6DQogICAgd3hDb2xvdXJEYXRhKCk7DQogICAgd3hDb2xvdXJEYXRhKGNvbnN0IHd4
Q29sb3VyRGF0YSYgZGF0YSk7DQogICAgfnd4Q29sb3VyRGF0YSgpOw0KDQogICAgdm9pZCBTZXRD
aG9vc2VGdWxsKGJvb2wgZmxhZykgeyBjaG9vc2VGdWxsID0gZmxhZzsgfQ0KICAgIGJvb2wgR2V0
Q2hvb3NlRnVsbCgpIGNvbnN0IHsgcmV0dXJuIGNob29zZUZ1bGw7IH0NCiAgICB2b2lkIFNldENv
bG91cih3eENvbG91ciYgY29sb3VyKSB7IGRhdGFDb2xvdXIgPSBjb2xvdXI7IH0NCiAgICB3eENv
bG91ciAmR2V0Q29sb3VyKCkgeyByZXR1cm4gZGF0YUNvbG91cjsgfQ0KDQoNCiAgICB2b2lkIFNl
dEN1c3RvbUNvbG91cihpbnQgaSwgd3hDb2xvdXImIGNvbG91cik7DQogICAgd3hDb2xvdXIgR2V0
Q3VzdG9tQ29sb3VyKGludCBpKTsNCg0KICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IHd4Q29sb3Vy
RGF0YSYgZGF0YSk7DQoNCnB1YmxpYzoNCiAgICB3eENvbG91ciBkYXRhQ29sb3VyOw0KICAgIHd4
Q29sb3VyIGN1c3RDb2xvdXJzWzE2XTsNCiAgICBib29sIGNob29zZUZ1bGw7DQp9Ow0KDQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEZvbnREYXRhOiBwdWJsaWMgd3hPYmplY3QN
CnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Rm9udERhdGE7IHd4
Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hGb250RGF0YTo6c21f
Y2xhc3N3eEZvbnREYXRhOyB9DQpwdWJsaWM6DQogICAgd3hGb250RGF0YSgpOw0KICAgIH53eEZv
bnREYXRhKCk7DQoNCiAgICB2b2lkIFNldEFsbG93U3ltYm9scyhib29sIGZsYWcpIHsgYWxsb3dT
eW1ib2xzID0gZmxhZzsgfQ0KICAgIGJvb2wgR2V0QWxsb3dTeW1ib2xzKCkgY29uc3QgeyByZXR1
cm4gYWxsb3dTeW1ib2xzOyB9DQoNCiAgICB2b2lkIFNldENvbG91cihjb25zdCB3eENvbG91ciYg
Y29sb3VyKSB7IGZvbnRDb2xvdXIgPSBjb2xvdXI7IH0NCiAgICB3eENvbG91ciAmR2V0Q29sb3Vy
KCkgeyByZXR1cm4gZm9udENvbG91cjsgfQ0KDQogICAgdm9pZCBTZXRTaG93SGVscChib29sIGZs
YWcpIHsgc2hvd0hlbHAgPSBmbGFnOyB9DQogICAgYm9vbCBHZXRTaG93SGVscCgpIGNvbnN0IHsg
cmV0dXJuIHNob3dIZWxwOyB9DQoNCiAgICB2b2lkIEVuYWJsZUVmZmVjdHMoYm9vbCBmbGFnKSB7
IGVuYWJsZUVmZmVjdHMgPSBmbGFnOyB9DQogICAgYm9vbCBHZXRFbmFibGVFZmZlY3RzKCkgY29u
c3QgeyByZXR1cm4gZW5hYmxlRWZmZWN0czsgfQ0KDQogICAgdm9pZCBTZXRJbml0aWFsRm9udChj
b25zdCB3eEZvbnQmIGZvbnQpIHsgaW5pdGlhbEZvbnQgPSBmb250OyB9DQogICAgd3hGb250IEdl
dEluaXRpYWxGb250KCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbEZvbnQ7IH0NCg0KICAgIHZvaWQg
U2V0Q2hvc2VuRm9udChjb25zdCB3eEZvbnQmIGZvbnQpIHsgY2hvc2VuRm9udCA9IGZvbnQ7IH0N
CiAgICB3eEZvbnQgR2V0Q2hvc2VuRm9udCgpIGNvbnN0IHsgcmV0dXJuIGNob3NlbkZvbnQ7IH0N
Cg0KICAgIHZvaWQgU2V0UmFuZ2UoaW50IG1pblJhbmdlLCBpbnQgbWF4UmFuZ2UpIHsgbWluU2l6
ZSA9IG1pblJhbmdlOyBtYXhTaXplID0gbWF4UmFuZ2U7IH0NCg0KDQoNCg0KICAgIHd4Rm9udEVu
Y29kaW5nIEdldEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGluZzsgfQ0KICAgIHZv
aWQgU2V0RW5jb2Rpbmcod3hGb250RW5jb2RpbmcgZW5jb2RpbmcpIHsgbV9lbmNvZGluZyA9IGVu
Y29kaW5nOyB9DQoNCiAgICB3eE5hdGl2ZUVuY29kaW5nSW5mbyYgRW5jb2RpbmdJbmZvKCkgeyBy
ZXR1cm4gbV9lbmNvZGluZ0luZm87IH0NCg0KcHVibGljOg0KICAgIHd4Q29sb3VyIGZvbnRDb2xv
dXI7DQogICAgYm9vbCBzaG93SGVscDsNCiAgICBib29sIGFsbG93U3ltYm9sczsNCiAgICBib29s
IGVuYWJsZUVmZmVjdHM7DQogICAgd3hGb250IGluaXRpYWxGb250Ow0KICAgIHd4Rm9udCBjaG9z
ZW5Gb250Ow0KICAgIGludCBtaW5TaXplOw0KICAgIGludCBtYXhTaXplOw0KDQpwcml2YXRlOg0K
ICAgIHd4Rm9udEVuY29kaW5nIG1fZW5jb2Rpbmc7DQogICAgd3hOYXRpdmVFbmNvZGluZ0luZm8g
bV9lbmNvZGluZ0luZm87DQp9Ow0KDQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eFByaW50RGF0YTogcHVibGljIHd4T2JqZWN0DQp7DQogICAgcHVibGljOiBz
dGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFByaW50RGF0YTsgd3hDbGFzc0luZm8gKkdldENs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFByaW50RGF0YTo6c21fY2xhc3N3eFByaW50RGF0
YTsgfQ0KDQogICAgd3hQcmludERhdGEoKTsNCiAgICB3eFByaW50RGF0YShjb25zdCB3eFByaW50
RGF0YSYgcHJpbnREYXRhKTsNCiAgICB+d3hQcmludERhdGEoKTsNCg0KICAgIGludCBHZXROb0Nv
cGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnROb0NvcGllczsgfTsNCiAgICBib29sIEdldENv
bGxhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaW50Q29sbGF0ZTsgfTsNCiAgICBpbnQgR2V0T3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByaW50T3JpZW50YXRpb247IH07DQoNCiAgICBj
b25zdCB3eFN0cmluZyYgR2V0UHJpbnRlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW50ZXJO
YW1lOyB9DQogICAgYm9vbCBHZXRDb2xvdXIoKSBjb25zdCB7IHJldHVybiBtX2NvbG91cjsgfQ0K
ICAgIHd4RHVwbGV4TW9kZSBHZXREdXBsZXgoKSBjb25zdCB7IHJldHVybiBtX2R1cGxleE1vZGU7
IH0NCiAgICB3eFBhcGVyU2l6ZSBHZXRQYXBlcklkKCkgY29uc3QgeyByZXR1cm4gbV9wYXBlcklk
OyB9DQogICAgY29uc3Qgd3hTaXplJiBHZXRQYXBlclNpemUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cGVyU2l6ZTsgfQ0KDQogICAgd3hQcmludFF1YWxpdHkgR2V0UXVhbGl0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbnRRdWFsaXR5OyB9DQoNCiAgICB2b2lkIFNldE5vQ29waWVzKGludCB2KSB7IG1f
cHJpbnROb0NvcGllcyA9IHY7IH07DQogICAgdm9pZCBTZXRDb2xsYXRlKGJvb2wgZmxhZykgeyBt
X3ByaW50Q29sbGF0ZSA9IGZsYWc7IH07DQogICAgdm9pZCBTZXRPcmllbnRhdGlvbihpbnQgb3Jp
ZW50KSB7IG1fcHJpbnRPcmllbnRhdGlvbiA9IG9yaWVudDsgfTsNCg0KICAgIHZvaWQgU2V0UHJp
bnRlck5hbWUoY29uc3Qgd3hTdHJpbmcmIG5hbWUpIHsgbV9wcmludGVyTmFtZSA9IG5hbWU7IH0N
CiAgICB2b2lkIFNldENvbG91cihib29sIGNvbG91cikgeyBtX2NvbG91ciA9IGNvbG91cjsgfQ0K
ICAgIHZvaWQgU2V0RHVwbGV4KHd4RHVwbGV4TW9kZSBkdXBsZXgpIHsgbV9kdXBsZXhNb2RlID0g
ZHVwbGV4OyB9DQogICAgdm9pZCBTZXRQYXBlcklkKHd4UGFwZXJTaXplIHNpemVJZCkgeyBtX3Bh
cGVySWQgPSBzaXplSWQ7IH0NCiAgICB2b2lkIFNldFBhcGVyU2l6ZShjb25zdCB3eFNpemUmIHN6
KSB7IG1fcGFwZXJTaXplID0gc3o7IH0NCiAgICB2b2lkIFNldFF1YWxpdHkod3hQcmludFF1YWxp
dHkgcXVhbGl0eSkgeyBtX3ByaW50UXVhbGl0eSA9IHF1YWxpdHk7IH0NCg0KDQogICAgY29uc3Qg
d3hTdHJpbmcmIEdldFByaW50ZXJDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGVyQ29t
bWFuZDsgfQ0KICAgIGNvbnN0IHd4U3RyaW5nJiBHZXRQcmludGVyT3B0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbnRlck9wdGlvbnM7IH0NCiAgICBjb25zdCB3eFN0cmluZyYgR2V0UHJldmll
d0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpZXdDb21tYW5kOyB9DQogICAgY29uc3Qg
d3hTdHJpbmcmIEdldEZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZTsgfQ0KICAg
IGNvbnN0IHd4U3RyaW5nJiBHZXRGb250TWV0cmljUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYWZt
UGF0aDsgfQ0KICAgIGRvdWJsZSBHZXRQcmludGVyU2NhbGVYKCkgY29uc3QgeyByZXR1cm4gbV9w
cmludGVyU2NhbGVYOyB9DQogICAgZG91YmxlIEdldFByaW50ZXJTY2FsZVkoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW50ZXJTY2FsZVk7IH0NCiAgICBsb25nIEdldFByaW50ZXJUcmFuc2xhdGVYKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmludGVyVHJhbnNsYXRlWDsgfQ0KICAgIGxvbmcgR2V0UHJpbnRl
clRyYW5zbGF0ZVkoKSBjb25zdCB7IHJldHVybiBtX3ByaW50ZXJUcmFuc2xhdGVZOyB9DQogICAg
d3hQcmludE1vZGUgR2V0UHJpbnRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wcmludE1vZGU7IH0N
Cg0KICAgIHZvaWQgU2V0UHJpbnRlckNvbW1hbmQoY29uc3Qgd3hTdHJpbmcmIGNvbW1hbmQpIHsg
bV9wcmludGVyQ29tbWFuZCA9IGNvbW1hbmQ7IH0NCiAgICB2b2lkIFNldFByaW50ZXJPcHRpb25z
KGNvbnN0IHd4U3RyaW5nJiBvcHRpb25zKSB7IG1fcHJpbnRlck9wdGlvbnMgPSBvcHRpb25zOyB9
DQogICAgdm9pZCBTZXRQcmV2aWV3Q29tbWFuZChjb25zdCB3eFN0cmluZyYgY29tbWFuZCkgeyBt
X3ByZXZpZXdDb21tYW5kID0gY29tbWFuZDsgfQ0KICAgIHZvaWQgU2V0RmlsZW5hbWUoY29uc3Qg
d3hTdHJpbmcmIGZpbGVuYW1lKSB7IG1fZmlsZW5hbWUgPSBmaWxlbmFtZTsgfQ0KICAgIHZvaWQg
U2V0Rm9udE1ldHJpY1BhdGgoY29uc3Qgd3hTdHJpbmcmIHBhdGgpIHsgbV9hZm1QYXRoID0gcGF0
aDsgfQ0KICAgIHZvaWQgU2V0UHJpbnRlclNjYWxlWChkb3VibGUgeCkgeyBtX3ByaW50ZXJTY2Fs
ZVggPSB4OyB9DQogICAgdm9pZCBTZXRQcmludGVyU2NhbGVZKGRvdWJsZSB5KSB7IG1fcHJpbnRl
clNjYWxlWSA9IHk7IH0NCiAgICB2b2lkIFNldFByaW50ZXJTY2FsaW5nKGRvdWJsZSB4LCBkb3Vi
bGUgeSkgeyBtX3ByaW50ZXJTY2FsZVggPSB4OyBtX3ByaW50ZXJTY2FsZVkgPSB5OyB9DQogICAg
dm9pZCBTZXRQcmludGVyVHJhbnNsYXRlWChsb25nIHgpIHsgbV9wcmludGVyVHJhbnNsYXRlWCA9
IHg7IH0NCiAgICB2b2lkIFNldFByaW50ZXJUcmFuc2xhdGVZKGxvbmcgeSkgeyBtX3ByaW50ZXJU
cmFuc2xhdGVZID0geTsgfQ0KICAgIHZvaWQgU2V0UHJpbnRlclRyYW5zbGF0aW9uKGxvbmcgeCwg
bG9uZyB5KSB7IG1fcHJpbnRlclRyYW5zbGF0ZVggPSB4OyBtX3ByaW50ZXJUcmFuc2xhdGVZID0g
eTsgfQ0KICAgIHZvaWQgU2V0UHJpbnRNb2RlKHd4UHJpbnRNb2RlIHByaW50TW9kZSkgeyBtX3By
aW50TW9kZSA9IHByaW50TW9kZTsgfQ0KDQogICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qgd3hQcmlu
dERhdGEmIGRhdGEpOw0KIyAxNzUgIi4uLy4uL2luY2x1ZGUvd3gvY21uZGF0YS5oIg0KICAgIHZv
aWQgQ29udmVydFRvTmF0aXZlKCk7DQogICAgdm9pZCBDb252ZXJ0RnJvbU5hdGl2ZSgpOw0KICAg
IHZvaWQqIEdldE5hdGl2ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rldk1vZGU7IH0NCiAgICB2
b2lkIFNldE5hdGl2ZURhdGEodm9pZCogZGF0YSkgeyBtX2Rldk1vZGUgPSBkYXRhOyB9DQogICAg
dm9pZCogR2V0TmF0aXZlRGF0YURldk5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9kZXZOYW1lczsg
fQ0KICAgIHZvaWQgU2V0TmF0aXZlRGF0YURldk5hbWVzKHZvaWQqIGRhdGEpIHsgbV9kZXZOYW1l
cyA9IGRhdGE7IH0NCg0KDQoNCg0KDQpwdWJsaWM6DQoNCiAgICB2b2lkKiBtX2Rldk1vZGU7DQog
ICAgdm9pZCogbV9kZXZOYW1lczsNCg0KDQoNCg0KcHJpdmF0ZToNCg0KICAgIGludCBtX3ByaW50
Tm9Db3BpZXM7DQogICAgaW50IG1fcHJpbnRPcmllbnRhdGlvbjsNCiAgICBib29sIG1fcHJpbnRD
b2xsYXRlOw0KDQoNCiAgICB3eFN0cmluZyBtX3ByaW50ZXJOYW1lOw0KICAgIGJvb2wgbV9jb2xv
dXI7DQogICAgd3hEdXBsZXhNb2RlIG1fZHVwbGV4TW9kZTsNCiAgICB3eFByaW50UXVhbGl0eSBt
X3ByaW50UXVhbGl0eTsNCiAgICB3eFBhcGVyU2l6ZSBtX3BhcGVySWQ7DQogICAgd3hTaXplIG1f
cGFwZXJTaXplOw0KDQoNCiAgICB3eFN0cmluZyBtX3ByaW50ZXJDb21tYW5kOw0KICAgIHd4U3Ry
aW5nIG1fcHJldmlld0NvbW1hbmQ7DQogICAgd3hTdHJpbmcgbV9wcmludGVyT3B0aW9uczsNCiAg
ICB3eFN0cmluZyBtX2ZpbGVuYW1lOw0KICAgIHd4U3RyaW5nIG1fYWZtUGF0aDsNCiAgICBkb3Vi
bGUgbV9wcmludGVyU2NhbGVYOw0KICAgIGRvdWJsZSBtX3ByaW50ZXJTY2FsZVk7DQogICAgbG9u
ZyBtX3ByaW50ZXJUcmFuc2xhdGVYOw0KICAgIGxvbmcgbV9wcmludGVyVHJhbnNsYXRlWTsNCiAg
ICB3eFByaW50TW9kZSBtX3ByaW50TW9kZTsNCn07DQojIDIyOCAiLi4vLi4vaW5jbHVkZS93eC9j
bW5kYXRhLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFByaW50RGlhbG9n
RGF0YTogcHVibGljIHd4T2JqZWN0DQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8g
c21fY2xhc3N3eFByaW50RGlhbG9nRGF0YTsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZ3eFByaW50RGlhbG9nRGF0YTo6c21fY2xhc3N3eFByaW50RGlhbG9nRGF0
YTsgfQ0KDQogICAgd3hQcmludERpYWxvZ0RhdGEoKTsNCiAgICB3eFByaW50RGlhbG9nRGF0YShj
b25zdCB3eFByaW50RGlhbG9nRGF0YSYgZGlhbG9nRGF0YSk7DQogICAgd3hQcmludERpYWxvZ0Rh
dGEoY29uc3Qgd3hQcmludERhdGEmIHByaW50RGF0YSk7DQogICAgfnd4UHJpbnREaWFsb2dEYXRh
KCk7DQoNCiAgICBpbnQgR2V0RnJvbVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3ByaW50RnJvbVBh
Z2U7IH07DQogICAgaW50IEdldFRvUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRUb1BhZ2U7
IH07DQogICAgaW50IEdldE1pblBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3ByaW50TWluUGFnZTsg
fTsNCiAgICBpbnQgR2V0TWF4UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRNYXhQYWdlOyB9
Ow0KICAgIGludCBHZXROb0NvcGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnROb0NvcGllczsg
fTsNCiAgICBib29sIEdldEFsbFBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmludEFsbFBhZ2Vz
OyB9Ow0KICAgIGJvb2wgR2V0U2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmludFNlbGVj
dGlvbjsgfTsNCiAgICBib29sIEdldENvbGxhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaW50Q29s
bGF0ZTsgfTsNCiAgICBib29sIEdldFByaW50VG9GaWxlKCkgY29uc3QgeyByZXR1cm4gbV9wcmlu
dFRvRmlsZTsgfTsNCiAgICBib29sIEdldFNldHVwRGlhbG9nKCkgY29uc3QgeyByZXR1cm4gbV9w
cmludFNldHVwRGlhbG9nOyB9Ow0KDQogICAgdm9pZCBTZXRGcm9tUGFnZShpbnQgdikgeyBtX3By
aW50RnJvbVBhZ2UgPSB2OyB9Ow0KICAgIHZvaWQgU2V0VG9QYWdlKGludCB2KSB7IG1fcHJpbnRU
b1BhZ2UgPSB2OyB9Ow0KICAgIHZvaWQgU2V0TWluUGFnZShpbnQgdikgeyBtX3ByaW50TWluUGFn
ZSA9IHY7IH07DQogICAgdm9pZCBTZXRNYXhQYWdlKGludCB2KSB7IG1fcHJpbnRNYXhQYWdlID0g
djsgfTsNCiAgICB2b2lkIFNldE5vQ29waWVzKGludCB2KSB7IG1fcHJpbnROb0NvcGllcyA9IHY7
IH07DQogICAgdm9pZCBTZXRBbGxQYWdlcyhib29sIGZsYWcpIHsgbV9wcmludEFsbFBhZ2VzID0g
ZmxhZzsgfTsNCiAgICB2b2lkIFNldFNlbGVjdGlvbihib29sIGZsYWcpIHsgbV9wcmludFNlbGVj
dGlvbiA9IGZsYWc7IH07DQogICAgdm9pZCBTZXRDb2xsYXRlKGJvb2wgZmxhZykgeyBtX3ByaW50
Q29sbGF0ZSA9IGZsYWc7IH07DQogICAgdm9pZCBTZXRQcmludFRvRmlsZShib29sIGZsYWcpIHsg
bV9wcmludFRvRmlsZSA9IGZsYWc7IH07DQogICAgdm9pZCBTZXRTZXR1cERpYWxvZyhib29sIGZs
YWcpIHsgbV9wcmludFNldHVwRGlhbG9nID0gZmxhZzsgfTsNCg0KICAgIHZvaWQgRW5hYmxlUHJp
bnRUb0ZpbGUoYm9vbCBmbGFnKSB7IG1fcHJpbnRFbmFibGVQcmludFRvRmlsZSA9IGZsYWc7IH07
DQogICAgdm9pZCBFbmFibGVTZWxlY3Rpb24oYm9vbCBmbGFnKSB7IG1fcHJpbnRFbmFibGVTZWxl
Y3Rpb24gPSBmbGFnOyB9Ow0KICAgIHZvaWQgRW5hYmxlUGFnZU51bWJlcnMoYm9vbCBmbGFnKSB7
IG1fcHJpbnRFbmFibGVQYWdlTnVtYmVycyA9IGZsYWc7IH07DQogICAgdm9pZCBFbmFibGVIZWxw
KGJvb2wgZmxhZykgeyBtX3ByaW50RW5hYmxlSGVscCA9IGZsYWc7IH07DQoNCiAgICBib29sIEdl
dEVuYWJsZVByaW50VG9GaWxlKCkgY29uc3QgeyByZXR1cm4gbV9wcmludEVuYWJsZVByaW50VG9G
aWxlOyB9Ow0KICAgIGJvb2wgR2V0RW5hYmxlU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
cmludEVuYWJsZVNlbGVjdGlvbjsgfTsNCiAgICBib29sIEdldEVuYWJsZVBhZ2VOdW1iZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmludEVuYWJsZVBhZ2VOdW1iZXJzOyB9Ow0KICAgIGJvb2wgR2V0
RW5hYmxlSGVscCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRFbmFibGVIZWxwOyB9Ow0KDQogICAg
d3hQcmludERhdGEmIEdldFByaW50RGF0YSgpIHsgcmV0dXJuIG1fcHJpbnREYXRhOyB9DQogICAg
dm9pZCBTZXRQcmludERhdGEoY29uc3Qgd3hQcmludERhdGEmIHByaW50RGF0YSkgeyBtX3ByaW50
RGF0YSA9IHByaW50RGF0YTsgfQ0KDQogICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qgd3hQcmludERp
YWxvZ0RhdGEmIGRhdGEpOw0KICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IHd4UHJpbnREYXRhJiBk
YXRhKTsNCg0KDQoNCiAgICB2b2lkIENvbnZlcnRUb05hdGl2ZSgpOw0KICAgIHZvaWQgQ29udmVy
dEZyb21OYXRpdmUoKTsNCiAgICB2b2lkIFNldE93bmVyV2luZG93KHd4V2luZG93KiB3aW4pOw0K
ICAgIHZvaWQqIEdldE5hdGl2ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3ByaW50RGxnRGF0YTsg
fQ0KDQoNCg0KDQoNCg0KICAgIHZvaWQqIG1fcHJpbnREbGdEYXRhOw0KDQoNCg0KDQpwcml2YXRl
Og0KDQogICAgaW50IG1fcHJpbnRGcm9tUGFnZTsNCiAgICBpbnQgbV9wcmludFRvUGFnZTsNCiAg
ICBpbnQgbV9wcmludE1pblBhZ2U7DQogICAgaW50IG1fcHJpbnRNYXhQYWdlOw0KICAgIGludCBt
X3ByaW50Tm9Db3BpZXM7DQogICAgYm9vbCBtX3ByaW50QWxsUGFnZXM7DQogICAgYm9vbCBtX3By
aW50Q29sbGF0ZTsNCiAgICBib29sIG1fcHJpbnRUb0ZpbGU7DQogICAgYm9vbCBtX3ByaW50U2Vs
ZWN0aW9uOw0KICAgIGJvb2wgbV9wcmludEVuYWJsZVNlbGVjdGlvbjsNCiAgICBib29sIG1fcHJp
bnRFbmFibGVQYWdlTnVtYmVyczsNCiAgICBib29sIG1fcHJpbnRFbmFibGVIZWxwOw0KICAgIGJv
b2wgbV9wcmludEVuYWJsZVByaW50VG9GaWxlOw0KICAgIGJvb2wgbV9wcmludFNldHVwRGlhbG9n
Ow0KDQogICAgd3hQcmludERhdGEgbV9wcmludERhdGE7DQp9Ow0KIyAzMTkgIi4uLy4uL2luY2x1
ZGUvd3gvY21uZGF0YS5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hQYWdl
U2V0dXBEaWFsb2dEYXRhOiBwdWJsaWMgd3hPYmplY3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3
eENsYXNzSW5mbyBzbV9jbGFzc3d4UGFnZVNldHVwRGlhbG9nRGF0YTsgd3hDbGFzc0luZm8gKkdl
dENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFBhZ2VTZXR1cERpYWxvZ0RhdGE6OnNtX2Ns
YXNzd3hQYWdlU2V0dXBEaWFsb2dEYXRhOyB9DQoNCnB1YmxpYzoNCiAgICB3eFBhZ2VTZXR1cERp
YWxvZ0RhdGEoKTsNCiAgICB3eFBhZ2VTZXR1cERpYWxvZ0RhdGEoY29uc3Qgd3hQYWdlU2V0dXBE
aWFsb2dEYXRhJiBkaWFsb2dEYXRhKTsNCiAgICB3eFBhZ2VTZXR1cERpYWxvZ0RhdGEoY29uc3Qg
d3hQcmludERhdGEmIHByaW50RGF0YSk7DQogICAgfnd4UGFnZVNldHVwRGlhbG9nRGF0YSgpOw0K
DQogICAgd3hTaXplIEdldFBhcGVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFwZXJTaXplOyB9
Ow0KICAgIHd4UGFwZXJTaXplIEdldFBhcGVySWQoKSBjb25zdCB7IHJldHVybiBtX3ByaW50RGF0
YS5HZXRQYXBlcklkKCk7IH07DQogICAgd3hQb2ludCBHZXRNaW5NYXJnaW5Ub3BMZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9taW5NYXJnaW5Ub3BMZWZ0OyB9Ow0KICAgIHd4UG9pbnQgR2V0TWluTWFy
Z2luQm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX21pbk1hcmdpbkJvdHRvbVJpZ2h0OyB9
Ow0KICAgIHd4UG9pbnQgR2V0TWFyZ2luVG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2lu
VG9wTGVmdDsgfTsNCiAgICB3eFBvaW50IEdldE1hcmdpbkJvdHRvbVJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXJnaW5Cb3R0b21SaWdodDsgfTsNCg0KICAgIGJvb2wgR2V0RGVmYXVsdE1pbk1h
cmdpbnMoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRNaW5NYXJnaW5zOyB9Ow0KICAgIGJvb2wg
R2V0RW5hYmxlTWFyZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlTWFyZ2luczsgfTsNCiAg
ICBib29sIEdldEVuYWJsZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVPcmll
bnRhdGlvbjsgfTsNCiAgICBib29sIEdldEVuYWJsZVBhcGVyKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVQYXBlcjsgfTsNCiAgICBib29sIEdldEVuYWJsZVByaW50ZXIoKSBjb25zdCB7IHJldHVy
biBtX2VuYWJsZVByaW50ZXI7IH07DQogICAgYm9vbCBHZXREZWZhdWx0SW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fZ2V0RGVmYXVsdEluZm87IH07DQogICAgYm9vbCBHZXRFbmFibGVIZWxwKCkgY29u
c3QgeyByZXR1cm4gbV9lbmFibGVIZWxwOyB9Ow0KDQoNCg0KICAgIHZvaWQgU2V0UGFwZXJTaXpl
KGNvbnN0IHd4U2l6ZSYgc3opOw0KDQogICAgdm9pZCBTZXRQYXBlcklkKHd4UGFwZXJTaXplJiBp
ZCkgeyBtX3ByaW50RGF0YS5TZXRQYXBlcklkKGlkKTsgfTsNCg0KDQogICAgdm9pZCBTZXRQYXBl
clNpemUod3hQYXBlclNpemUgaWQpOw0KDQogICAgdm9pZCBTZXRNaW5NYXJnaW5Ub3BMZWZ0KGNv
bnN0IHd4UG9pbnQmIHB0KSB7IG1fbWluTWFyZ2luVG9wTGVmdCA9IHB0OyB9Ow0KICAgIHZvaWQg
U2V0TWluTWFyZ2luQm90dG9tUmlnaHQoY29uc3Qgd3hQb2ludCYgcHQpIHsgbV9taW5NYXJnaW5C
b3R0b21SaWdodCA9IHB0OyB9Ow0KICAgIHZvaWQgU2V0TWFyZ2luVG9wTGVmdChjb25zdCB3eFBv
aW50JiBwdCkgeyBtX21hcmdpblRvcExlZnQgPSBwdDsgfTsNCiAgICB2b2lkIFNldE1hcmdpbkJv
dHRvbVJpZ2h0KGNvbnN0IHd4UG9pbnQmIHB0KSB7IG1fbWFyZ2luQm90dG9tUmlnaHQgPSBwdDsg
fTsNCiAgICB2b2lkIFNldERlZmF1bHRNaW5NYXJnaW5zKGJvb2wgZmxhZykgeyBtX2RlZmF1bHRN
aW5NYXJnaW5zID0gZmxhZzsgfTsNCiAgICB2b2lkIFNldERlZmF1bHRJbmZvKGJvb2wgZmxhZykg
eyBtX2dldERlZmF1bHRJbmZvID0gZmxhZzsgfTsNCg0KICAgIHZvaWQgRW5hYmxlTWFyZ2lucyhi
b29sIGZsYWcpIHsgbV9lbmFibGVNYXJnaW5zID0gZmxhZzsgfTsNCiAgICB2b2lkIEVuYWJsZU9y
aWVudGF0aW9uKGJvb2wgZmxhZykgeyBtX2VuYWJsZU9yaWVudGF0aW9uID0gZmxhZzsgfTsNCiAg
ICB2b2lkIEVuYWJsZVBhcGVyKGJvb2wgZmxhZykgeyBtX2VuYWJsZVBhcGVyID0gZmxhZzsgfTsN
CiAgICB2b2lkIEVuYWJsZVByaW50ZXIoYm9vbCBmbGFnKSB7IG1fZW5hYmxlUHJpbnRlciA9IGZs
YWc7IH07DQogICAgdm9pZCBFbmFibGVIZWxwKGJvb2wgZmxhZykgeyBtX2VuYWJsZUhlbHAgPSBm
bGFnOyB9Ow0KDQoNCg0KICAgIHZvaWQgQ29udmVydFRvTmF0aXZlKCk7DQogICAgdm9pZCBDb252
ZXJ0RnJvbU5hdGl2ZSgpOw0KICAgIHZvaWQgU2V0T3duZXJXaW5kb3cod3hXaW5kb3cqIHdpbik7
DQogICAgdm9pZCogR2V0TmF0aXZlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNldHVwRGF0
YTsgfQ0KDQoNCg0KDQoNCg0KDQogICAgdm9pZCBDYWxjdWxhdGVJZEZyb21QYXBlclNpemUoKTsN
Cg0KDQogICAgdm9pZCBDYWxjdWxhdGVQYXBlclNpemVGcm9tSWQoKTsNCg0KICAgIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IHd4UGFnZVNldHVwRGlhbG9nRGF0YSYgZGF0YSk7DQogICAgdm9pZCBvcGVy
YXRvcj0oY29uc3Qgd3hQcmludERhdGEmIGRhdGEpOw0KDQogICAgd3hQcmludERhdGEmIEdldFBy
aW50RGF0YSgpIHsgcmV0dXJuIG1fcHJpbnREYXRhOyB9DQogICAgdm9pZCBTZXRQcmludERhdGEo
Y29uc3Qgd3hQcmludERhdGEmIHByaW50RGF0YSkgeyBtX3ByaW50RGF0YSA9IHByaW50RGF0YTsg
fQ0KDQoNCiAgICB2b2lkKiBtX3BhZ2VTZXR1cERhdGE7DQoNCg0KDQoNCnByaXZhdGU6DQoNCiAg
ICB3eFNpemUgbV9wYXBlclNpemU7DQogICAgd3hQb2ludCBtX21pbk1hcmdpblRvcExlZnQ7DQog
ICAgd3hQb2ludCBtX21pbk1hcmdpbkJvdHRvbVJpZ2h0Ow0KICAgIHd4UG9pbnQgbV9tYXJnaW5U
b3BMZWZ0Ow0KICAgIHd4UG9pbnQgbV9tYXJnaW5Cb3R0b21SaWdodDsNCg0KDQogICAgYm9vbCBt
X2RlZmF1bHRNaW5NYXJnaW5zOw0KICAgIGJvb2wgbV9lbmFibGVNYXJnaW5zOw0KICAgIGJvb2wg
bV9lbmFibGVPcmllbnRhdGlvbjsNCiAgICBib29sIG1fZW5hYmxlUGFwZXI7DQogICAgYm9vbCBt
X2VuYWJsZVByaW50ZXI7DQogICAgYm9vbCBtX2dldERlZmF1bHRJbmZvOw0KICAgIGJvb2wgbV9l
bmFibGVIZWxwOw0KDQogICAgd3hQcmludERhdGEgbV9wcmludERhdGE7DQp9Ow0KIyAyMyAiLi4v
Li4vaW5jbHVkZS93eC9tc3cvZGNwcmludC5oIiAyDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4UHJpbnRlckRDOiBwdWJsaWMgd3hEQw0Kew0KcHVibGljOg0KcHVibGljOiBz
dGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFByaW50ZXJEQzsgd3hDbGFzc0luZm8gKkdldENs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFByaW50ZXJEQzo6c21fY2xhc3N3eFByaW50ZXJE
QzsgfQ0KDQoNCiAgICB3eFByaW50ZXJEQyhjb25zdCB3eFN0cmluZyYgZHJpdmVyLCBjb25zdCB3
eFN0cmluZyYgZGV2aWNlLCBjb25zdCB3eFN0cmluZyYgb3V0cHV0LCBib29sIGludGVyYWN0aXZl
ID0gMSwgaW50IG9yaWVudGF0aW9uID0gMSk7DQoNCg0KICAgIHd4UHJpbnRlckRDKGNvbnN0IHd4
UHJpbnREYXRhJiBkYXRhKTsNCg0KICAgIHd4UHJpbnRlckRDKFdYSERDIHRoZURDKTsNCg0KICAg
IH53eFByaW50ZXJEQyh2b2lkKTsNCg0KDQogICAgdmlydHVhbCBib29sIFN0YXJ0RG9jKGNvbnN0
IHd4U3RyaW5nJiBtZXNzYWdlKTsNCiAgICB2aXJ0dWFsIHZvaWQgRW5kRG9jKCk7DQogICAgdmly
dHVhbCB2b2lkIFN0YXJ0UGFnZSgpOw0KICAgIHZpcnR1YWwgdm9pZCBFbmRQYWdlKCk7DQoNCnBy
b3RlY3RlZDoNCiAgICB2aXJ0dWFsIHZvaWQgRG9EcmF3Qml0bWFwKGNvbnN0IHd4Qml0bWFwICZi
bXAsIHd4Q29vcmQgeCwgd3hDb29yZCB5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1c2VNYXNrID0gMCk7DQogICAgdmlydHVhbCBib29sIERvQmxpdCh3eENvb3JkIHhkZXN0
LCB3eENvb3JkIHlkZXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCB3aWR0aCwg
d3hDb29yZCBoZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICB3eERDICpzb3VyY2UsIHd4
Q29vcmQgeHNyYywgd3hDb29yZCB5c3JjLA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJv
cCA9IHd4Q09QWSwgYm9vbCB1c2VNYXNrID0gMCk7DQoNCiAgICB3eFByaW50RGF0YSBtX3ByaW50
RGF0YTsNCn07DQoNCg0KDQoNCg0KV1hIREMgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hH
ZXRQcmludGVyREMoY29uc3Qgd3hQcmludERhdGEmIGRhdGEpOw0KIyA2ICIuLi8uLi9pbmNsdWRl
L3d4L2RjcHJpbnQuaCIgMg0KIyAzNiAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4u
Ly4uL2luY2x1ZGUvd3gvZGNzY3JlZW4uaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUv
d3gvbXN3L2Rjc2NyZWVuLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2Rjc2NyZWVu
LmgiDQojcHJhZ21hIGludGVyZmFjZSAiZGNzY3JlZW4uaCINCg0KDQoNCg0KY2xhc3MgX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTY3JlZW5EQzogcHVibGljIHd4V2luZG93REMNCnsNCiAg
cHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFNjcmVlbkRDOyB3eENsYXNzSW5m
byAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U2NyZWVuREM6OnNtX2NsYXNzd3hT
Y3JlZW5EQzsgfQ0KDQogcHVibGljOg0KDQogIHd4U2NyZWVuREModm9pZCk7DQogIH53eFNjcmVl
bkRDKHZvaWQpOw0KDQoNCg0KICBzdGF0aWMgYm9vbCBTdGFydERyYXdpbmdPblRvcCh3eFdpbmRv
dyogKSB7IHJldHVybiAxOyB9DQogIHN0YXRpYyBib29sIFN0YXJ0RHJhd2luZ09uVG9wKHd4UmVj
dCogPSBfX251bGwpIHsgcmV0dXJuIDE7IH0NCiAgc3RhdGljIGJvb2wgRW5kRHJhd2luZ09uVG9w
KHZvaWQpIHsgcmV0dXJuIDE7IH0NCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvZGNzY3JlZW4u
aCIgMg0KIyAzNyAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUv
d3gvYnV0dG9uLmgiIDENCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9idXR0b24u
aCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvYnV0dG9uLmgiDQojcHJhZ21hIGludGVy
ZmFjZSAiYnV0dG9uLmgiDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2NvbnRyb2wuaCIgMQ0K
IyAyMCAiLi4vLi4vaW5jbHVkZS93eC9jb250cm9sLmgiDQojcHJhZ21hIGludGVyZmFjZSAiY29u
dHJvbGJhc2UuaCINCiMgMjkgIi4uLy4uL2luY2x1ZGUvd3gvY29udHJvbC5oIg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDb250cm9sQmFzZSA6IHB1YmxpYyB3eFdpbmRvdw0K
ew0KcHVibGljOg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQ29tbWFuZCh3eENvbW1hbmRFdmVudCAm
ZXZlbnQpOw0KDQpwcm90ZWN0ZWQ6DQoNCg0KICAgIGJvb2wgQ3JlYXRlQ29udHJvbCh3eFdpbmRv
d0Jhc2UgKnBhcmVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zLA0KICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB3eFNpemUmIHNpemUsDQogICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
c3R5bGUsDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0
b3IsDQogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lKTsNCg0KDQog
ICAgdm9pZCBJbmhlcml0QXR0cmlidXRlcygpOw0KDQoNCiAgICB2b2lkIEluaXRDb21tYW5kRXZl
bnQod3hDb21tYW5kRXZlbnQmIGV2ZW50KSBjb25zdDsNCn07DQoNCg0KDQoNCg0KDQojIDEgIi4u
Ly4uL2luY2x1ZGUvd3gvbXN3L2NvbnRyb2wuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9t
c3cvY29udHJvbC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImNvbnRyb2wuaCINCg0KDQoNCg0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4Q29udHJvbE5hbWVT
dHI7DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDb250cm9sIDogcHVi
bGljIHd4Q29udHJvbEJhc2UNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9j
bGFzc3d4Q29udHJvbDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
ICZ3eENvbnRyb2w6OnNtX2NsYXNzd3hDb250cm9sOyB9DQoNCnB1YmxpYzoNCiAgIHd4Q29udHJv
bCgpOw0KICAgd3hDb250cm9sKHd4V2luZG93ICpwYXJlbnQsIHd4V2luZG93SUQgaWQsDQogICAg
ICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAg
ICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9uZyBzdHlsZSA9IDAs
DQogICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVsdFZh
bGlkYXRvciwNCiAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4Q29udHJvbE5h
bWVTdHIpDQogICAgew0KICAgICAgICBDcmVhdGUocGFyZW50LCBpZCwgcG9zLCBzaXplLCBzdHls
ZSwgdmFsaWRhdG9yLCBuYW1lKTsNCiAgICB9DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAq
cGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0g
d3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERl
ZmF1bHRTaXplLCBsb25nIHN0eWxlID0gMCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9y
JiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgbmFtZSA9IHd4Q29udHJvbE5hbWVTdHIpOw0KDQogICAgdmlydHVhbCB+d3hDb250cm9s
KCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiBldmVudCkg
eyBQcm9jZXNzQ29tbWFuZChldmVudCk7IH0NCg0KDQoNCg0KDQogICAgYm9vbCBQcm9jZXNzQ29t
bWFuZCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBNU1dP
bk5vdGlmeShpbnQgaWRDdHJsLCBXWExQQVJBTSBsUGFyYW0sIFdYTFBBUkFNICpyZXN1bHQpOw0K
DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBNU1dPbkRyYXcoV1hEUkFXSVRFTVNUUlVDVCAqKSB7IHJl
dHVybiAwOyB9Ow0KICAgIHZpcnR1YWwgYm9vbCBNU1dPbk1lYXN1cmUoV1hNRUFTVVJFSVRFTVNU
UlVDVCAqKSB7IHJldHVybiAwOyB9Ow0KDQogICAgd3hBcnJheUxvbmcgR2V0U3ViY29udHJvbHMo
KSB7IHJldHVybiBtX3N1YkNvbnRyb2xzOyB9DQoNCiAgICB2b2lkIE9uRXJhc2VCYWNrZ3JvdW5k
KHd4RXJhc2VFdmVudCYgZXZlbnQpOw0KDQogICAgdmlydHVhbCBXWEhCUlVTSCBPbkN0bENvbG9y
KFdYSERDIHBEQywgV1hIV05EIHBXbmQsIFdYVUlOVCBuQ3RsQ29sb3IsDQogICAgICAgICAgICBX
WFVJTlQgbWVzc2FnZSwgV1hXUEFSQU0gd1BhcmFtLCBXWExQQVJBTSBsUGFyYW0pOw0KIyA5MCAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvY29udHJvbC5oIg0KcHJvdGVjdGVkOg0KDQoNCiAgICB3eEFy
cmF5TG9uZyBtX3N1YkNvbnRyb2xzOw0KDQogICAgdmlydHVhbCB3eFNpemUgRG9HZXRCZXN0U2l6
ZSgpIGNvbnN0Ow0KIyAxMDUgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2NvbnRyb2wuaCINCiAgICBi
b29sIE1TV0NyZWF0ZUNvbnRyb2woY29uc3QgY2hhciAqY2xhc3NuYW1lLA0KICAgICAgICAgICAg
V1hEV09SRCBzdHlsZSwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVs
dFBvc2l0aW9uLA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6
ZSwNCiAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCA9IHd4RW1wdHlTdHJpbmcsDQog
ICAgICAgICAgICBXWERXT1JEIGV4c3R5bGUgPSAoV1hEV09SRCktMSk7DQoNCg0KDQogICAgV1hE
V09SRCBHZXRFeFN0eWxlKFdYRFdPUkQmIHN0eWxlLCBib29sICp3YW50M0QpIGNvbnN0Ow0KDQpw
cml2YXRlOg0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9l
dmVudFRhYmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBz
bV9ldmVudFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgp
IGNvbnN0Ow0KfTsNCiMgNjAgIi4uLy4uL2luY2x1ZGUvd3gvY29udHJvbC5oIiAyDQojIDIwICIu
Li8uLi9pbmNsdWRlL3d4L21zdy9idXR0b24uaCIgMg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hCdXR0b25OYW1lU3RyOw0KDQoNCg0KDQoNCmNsYXNz
IF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4QnV0dG9uIDogcHVibGljIHd4Q29udHJvbA0K
ew0KcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eEJ1dHRvbjsgd3hDbGFzc0lu
Zm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEJ1dHRvbjo6c21fY2xhc3N3eEJ1
dHRvbjsgfQ0KDQpwdWJsaWM6DQogICAgd3hCdXR0b24oKSB7IH0NCiAgICB3eEJ1dHRvbih3eFdp
bmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLCBjb25zdCB3eFN0cmluZyYgbGFiZWwsDQogICAg
ICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAg
ICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsIGxvbmcgc3R5bGUgPSAwLA0K
ICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVsdFZhbGlk
YXRvciwNCiAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hCdXR0b25OYW1lU3Ry
KQ0KICAgIHsNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIGxhYmVsLCBwb3MsIHNpemUsIHN0
eWxlLCB2YWxpZGF0b3IsIG5hbWUpOw0KICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93
ICpwYXJlbnQsIHd4V2luZG93SUQgaWQsIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCwNCiAgICAgICAg
ICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAg
Y29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9uZyBzdHlsZSA9IDAsDQogICAg
ICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsaWRhdG9yID0gd3hEZWZhdWx0VmFsaWRhdG9y
LA0KICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eEJ1dHRvbk5hbWVTdHIpOw0K
DQogICAgdmlydHVhbCB+d3hCdXR0b24oKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXREZWZhdWx0
KCk7DQoNCiAgICBzdGF0aWMgd3hTaXplIEdldERlZmF1bHRTaXplKCk7DQoNCg0KICAgIHZpcnR1
YWwgdm9pZCBDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7DQogICAgdmlydHVhbCBsb25n
IE1TV1dpbmRvd1Byb2MoV1hVSU5UIG5Nc2csIFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBh
cmFtKTsNCiAgICB2aXJ0dWFsIGJvb2wgTVNXQ29tbWFuZChXWFVJTlQgcGFyYW0sIFdYV09SRCBp
ZCk7DQoNCg0KDQogICAgdmlydHVhbCBib29sIFNldEJhY2tncm91bmRDb2xvdXIoY29uc3Qgd3hD
b2xvdXIgJmNvbG91cik7DQogICAgdmlydHVhbCBib29sIFNldEZvcmVncm91bmRDb2xvdXIoY29u
c3Qgd3hDb2xvdXIgJmNvbG91cik7DQoNCiAgICB2aXJ0dWFsIGJvb2wgTVNXT25EcmF3KFdYRFJB
V0lURU1TVFJVQ1QgKml0ZW0pOw0KDQpwcml2YXRlOg0KICAgIHZvaWQgTWFrZU93bmVyRHJhd24o
KTsNCg0KDQpwcm90ZWN0ZWQ6DQoNCiAgICBib29sIFNlbmRDbGlja0V2ZW50KCk7DQoNCiAgICB2
aXJ0dWFsIHd4U2l6ZSBEb0dldEJlc3RTaXplKCkgY29uc3Q7DQp9Ow0KIyA2ICIuLi8uLi9pbmNs
dWRlL3d4L2J1dHRvbi5oIiAyDQojIDM4ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAi
Li4vLi4vaW5jbHVkZS93eC9tZW51LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbWVudS5o
Ig0KI3ByYWdtYSBpbnRlcmZhY2UgIm1lbnViYXNlLmgiDQojIDI4ICIuLi8uLi9pbmNsdWRlL3d4
L21lbnUuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tZW51aXRlbS5oIiAxDQojIDI1ICIuLi8u
Li9pbmNsdWRlL3d4L21lbnVpdGVtLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQp
KSB3eEFjY2VsZXJhdG9yRW50cnk7DQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eE1lbnVJdGVtOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW51Ow0KDQoN
Cg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW51SXRlbUJhc2Ug
OiBwdWJsaWMgd3hPYmplY3QNCnsNCnB1YmxpYzoNCg0KICAgIHN0YXRpYyB3eE1lbnVJdGVtICpO
ZXcod3hNZW51ICpwYXJlbnRNZW51ID0gKHd4TWVudSAqKV9fbnVsbCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpZCA9ICgtMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3eFN0cmluZyYgdGV4dCA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB3eFN0cmluZyYgaGVscCA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2hlY2thYmxlID0gMCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHd4TWVudSAqc3ViTWVudSA9ICh3eE1lbnUgKilfX251bGwpOw0KDQoNCiAgICB2
aXJ0dWFsIH53eE1lbnVJdGVtQmFzZSgpOw0KDQoNCiAgICB3eE1lbnUgKkdldE1lbnUoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudE1lbnU7IH0NCg0KDQogICAgdm9pZCBTZXRJZChpbnQgaWQpIHsg
bV9pZCA9IGlkOyB9DQogICAgaW50IEdldElkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQ0KICAg
IGJvb2wgSXNTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2lkID09ICgtMSk7IH0NCg0KDQoN
Cg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRUZXh0KGNvbnN0IHd4U3RyaW5nJiBzdHIpIHsg
bV90ZXh0ID0gc3RyOyB9DQogICAgd3hTdHJpbmcgR2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBH
ZXRMYWJlbEZyb21UZXh0KG1fdGV4dCk7IH0NCiAgICBjb25zdCB3eFN0cmluZyYgR2V0VGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQ0KDQoNCiAgICBzdGF0aWMgd3hTdHJpbmcgR2V0TGFi
ZWxGcm9tVGV4dChjb25zdCB3eFN0cmluZyYgdGV4dCk7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBT
ZXRDaGVja2FibGUoYm9vbCBjaGVja2FibGUpIHsgbV9pc0NoZWNrYWJsZSA9IGNoZWNrYWJsZTsg
fQ0KICAgIGJvb2wgSXNDaGVja2FibGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hlY2thYmxlOyB9
DQoNCiAgICBib29sIElzU3ViTWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ViTWVudSAhPSBfX251
bGw7IH0NCiAgICB2b2lkIFNldFN1Yk1lbnUod3hNZW51ICptZW51KSB7IG1fc3ViTWVudSA9IG1l
bnU7IH0NCiAgICB3eE1lbnUgKkdldFN1Yk1lbnUoKSBjb25zdCB7IHJldHVybiBtX3N1Yk1lbnU7
IH0NCg0KDQogICAgdmlydHVhbCB2b2lkIEVuYWJsZShib29sIGVuYWJsZSA9IDEpIHsgbV9pc0Vu
YWJsZWQgPSBlbmFibGU7IH0NCiAgICB2aXJ0dWFsIGJvb2wgSXNFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0VuYWJsZWQ7IH0NCg0KICAgIHZpcnR1YWwgdm9pZCBDaGVjayhib29sIGNoZWNr
ID0gMSkgeyBtX2lzQ2hlY2tlZCA9IGNoZWNrOyB9DQogICAgdmlydHVhbCBib29sIElzQ2hlY2tl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDaGVja2VkOyB9DQogICAgdm9pZCBUb2dnbGUoKSB7IENo
ZWNrKCFtX2lzQ2hlY2tlZCk7IH0NCg0KDQogICAgdm9pZCBTZXRIZWxwKGNvbnN0IHd4U3RyaW5n
JiBzdHIpIHsgbV9oZWxwID0gc3RyOyB9DQogICAgY29uc3Qgd3hTdHJpbmcmIEdldEhlbHAoKSBj
b25zdCB7IHJldHVybiBtX2hlbHA7IH0NCg0KDQoNCiAgICB2aXJ0dWFsIHd4QWNjZWxlcmF0b3JF
bnRyeSAqR2V0QWNjZWwoKSBjb25zdCB7IHJldHVybiBfX251bGw7IH0NCg0KDQoNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0QWNjZWwod3hBY2NlbGVyYXRvckVudHJ5ICphY2NlbCk7DQoNCg0KDQogICAg
dm9pZCBTZXROYW1lKGNvbnN0IHd4U3RyaW5nJiBzdHIpIHsgU2V0VGV4dChzdHIpOyB9DQogICAg
Y29uc3Qgd3hTdHJpbmcmIEdldE5hbWUoKSBjb25zdCB7IHJldHVybiBHZXRUZXh0KCk7IH0NCg0K
cHJvdGVjdGVkOg0KICAgIGludCBtX2lkOw0KICAgIHd4TWVudSAqbV9wYXJlbnRNZW51LA0KICAg
ICAgICAgICAgICAgICAqbV9zdWJNZW51Ow0KICAgIHd4U3RyaW5nIG1fdGV4dCwNCiAgICAgICAg
ICAgICAgICAgIG1faGVscDsNCiAgICBib29sIG1faXNDaGVja2FibGU7DQogICAgYm9vbCBtX2lz
Q2hlY2tlZDsNCiAgICBib29sIG1faXNFbmFibGVkOw0KDQoNCiAgICB3eE1lbnVJdGVtQmFzZSgp
IHsgfQ0KDQpwcml2YXRlOg0KDQoNCiAgICB3eE1lbnVJdGVtQmFzZShjb25zdCB3eE1lbnVJdGVt
QmFzZSYgaXRlbSk7DQogICAgd3hNZW51SXRlbUJhc2UmIG9wZXJhdG9yPShjb25zdCB3eE1lbnVJ
dGVtQmFzZSYgaXRlbSk7DQp9Ow0KIyAxMzAgIi4uLy4uL2luY2x1ZGUvd3gvbWVudWl0ZW0uaCIN
CiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvbWVudWl0ZW0uaCIgMQ0KIyAxNiAiLi4vLi4vaW5j
bHVkZS93eC9tc3cvbWVudWl0ZW0uaCINCiNwcmFnbWEgaW50ZXJmYWNlICJtZW51aXRlbS5oIg0K
DQoNCg0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvb3duZXJkcncuaCIgMQ0KIyAxOCAi
Li4vLi4vaW5jbHVkZS93eC9vd25lcmRydy5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgIm93bmVyZHJ3
LmgiDQojIDM0ICIuLi8uLi9pbmNsdWRlL3d4L293bmVyZHJ3LmgiDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eE93bmVyRHJhd24NCnsNCnB1YmxpYzoNCg0KICB3eE93bmVyRHJh
d24oY29uc3Qgd3hTdHJpbmcmIHN0ciA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICBi
b29sIGJDaGVja2FibGUgPSAwLA0KICAgICAgICAgICAgICAgYm9vbCBiTWVudUl0ZW0gPSAwKTsN
CiAgdmlydHVhbCB+d3hPd25lckRyYXduKCkgeyB9DQoNCg0KICB2b2lkIFNldEZvbnQoY29uc3Qg
d3hGb250JiBmb250KQ0KICAgICAgeyBtX2ZvbnQgPSBmb250OyBtX2JPd25lckRyYXduID0gMTsg
fQ0KDQogIHd4Rm9udCYgR2V0Rm9udCgpIGNvbnN0IHsgcmV0dXJuICh3eEZvbnQgJiltX2ZvbnQ7
IH0NCg0KICB2b2lkIFNldFRleHRDb2xvdXIoY29uc3Qgd3hDb2xvdXImIGNvbFRleHQpDQogICAg
ICB7IG1fY29sVGV4dCA9IGNvbFRleHQ7IG1fYk93bmVyRHJhd24gPSAxOyB9DQoNCiAgd3hDb2xv
dXImIEdldFRleHRDb2xvdXIoKSBjb25zdCB7IHJldHVybiAod3hDb2xvdXImKSBtX2NvbFRleHQ7
IH0NCg0KICB2b2lkIFNldEJhY2tncm91bmRDb2xvdXIoY29uc3Qgd3hDb2xvdXImIGNvbEJhY2sp
DQogICAgICB7IG1fY29sQmFjayA9IGNvbEJhY2s7IG1fYk93bmVyRHJhd24gPSAxOyB9DQoNCiAg
d3hDb2xvdXImIEdldEJhY2tncm91bmRDb2xvdXIoKSBjb25zdA0KICAgICAgeyByZXR1cm4gKHd4
Q29sb3VyJikgbV9jb2xCYWNrIDsgfQ0KDQogIHZvaWQgU2V0Qml0bWFwcyhjb25zdCB3eEJpdG1h
cCYgYm1wQ2hlY2tlZCwNCiAgICAgICAgICAgICAgICAgIGNvbnN0IHd4Qml0bWFwJiBibXBVbmNo
ZWNrZWQgPSB3eE51bGxCaXRtYXApDQogICAgICB7IG1fYm1wQ2hlY2tlZCA9IGJtcENoZWNrZWQ7
DQogICAgICAgIG1fYm1wVW5jaGVja2VkID0gYm1wVW5jaGVja2VkOw0KICAgICAgICBtX2JPd25l
ckRyYXduID0gMTsgfQ0KDQogIGNvbnN0IHd4Qml0bWFwJiBHZXRCaXRtYXAoYm9vbCBiQ2hlY2tl
ZCA9IDEpIGNvbnN0DQogICAgICB7IHJldHVybiAoYkNoZWNrZWQgPyBtX2JtcENoZWNrZWQgOiBt
X2JtcFVuY2hlY2tlZCk7IH0NCg0KDQoNCg0KDQoNCg0KICB2b2lkIFNldE1hcmdpbldpZHRoKGlu
dCBuV2lkdGgpDQogIHsNCiAgICAgIG1zX25MYXN0TWFyZ2luV2lkdGggPSBtX25NYXJnaW5XaWR0
aCA9IChzaXplX3QpIG5XaWR0aDsNCiAgICAgIGlmICggKChzaXplX3QpIG5XaWR0aCkgIT0gbXNf
bkRlZmF1bHRNYXJnaW5XaWR0aCApDQogICAgICAgICAgbV9iT3duZXJEcmF3biA9IDE7DQogIH0N
Cg0KICBpbnQgR2V0TWFyZ2luV2lkdGgoKSBjb25zdCB7IHJldHVybiAoaW50KSBtX25NYXJnaW5X
aWR0aDsgfQ0KICBzdGF0aWMgaW50IEdldERlZmF1bHRNYXJnaW5XaWR0aCgpIHsgcmV0dXJuIChp
bnQpIG1zX25EZWZhdWx0TWFyZ2luV2lkdGg7IH0NCg0KDQogIHZvaWQgU2V0TmFtZShjb25zdCB3
eFN0cmluZyYgc3RyTmFtZSkgeyBtX3N0ck5hbWUgPSBzdHJOYW1lOyB9DQogIGNvbnN0IHd4U3Ry
aW5nJiBHZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdHJOYW1lOyB9DQogIHZvaWQgU2V0Q2hl
Y2thYmxlKGJvb2wgY2hlY2thYmxlKSB7IG1fYkNoZWNrYWJsZSA9IGNoZWNrYWJsZTsgfQ0KICBi
b29sIElzQ2hlY2thYmxlKCkgY29uc3QgeyByZXR1cm4gbV9iQ2hlY2thYmxlOyB9DQoNCg0KDQoN
Cg0KDQogIGJvb2wgSXNPd25lckRyYXduKCkgY29uc3QgeyByZXR1cm4gbV9iT3duZXJEcmF3bjsg
fQ0KICB2b2lkIFJlc2V0T3duZXJEcmF3bigpIHsgbV9iT3duZXJEcmF3biA9IDA7IH0NCg0KcHVi
bGljOg0KDQoNCiAgZW51bSB3eE9EQWN0aW9uDQogIHsNCiAgICB3eE9ERHJhd0FsbCA9IDB4MDAw
MSwNCiAgICB3eE9EU2VsZWN0Q2hhbmdlZCA9IDB4MDAwMiwNCiAgICB3eE9ERm9jdXNDaGFuZ2Vk
ID0gMHgwMDA0DQogIH07DQoNCiAgZW51bSB3eE9EU3RhdHVzDQogIHsNCiAgICB3eE9EU2VsZWN0
ZWQgPSAweDAwMDEsDQogICAgd3hPREdyYXllZCA9IDB4MDAwMiwNCiAgICB3eE9ERGlzYWJsZWQg
PSAweDAwMDQsDQogICAgd3hPRENoZWNrZWQgPSAweDAwMDgsDQogICAgd3hPREhhc0ZvY3VzID0g
MHgwMDEwLA0KICAgIHd4T0REZWZhdWx0ID0gMHgwMDIwDQogIH07DQoNCg0KICB2aXJ0dWFsIGJv
b2wgT25NZWFzdXJlSXRlbShzaXplX3QgKnB3aWR0aCwgc2l6ZV90ICpwaGVpZ2h0KTsNCiAgdmly
dHVhbCBib29sIE9uRHJhd0l0ZW0od3hEQyYgZGMsIGNvbnN0IHd4UmVjdCYgcmMsIHd4T0RBY3Rp
b24gYWN0LCB3eE9EU3RhdHVzIHN0YXQpOw0KDQpwcm90ZWN0ZWQ6DQogIHd4U3RyaW5nIG1fc3Ry
TmFtZTsNCg0KcHJpdmF0ZToNCiAgc3RhdGljIHNpemVfdCBtc19uRGVmYXVsdE1hcmdpbldpZHRo
Ow0KICBzdGF0aWMgc2l6ZV90IG1zX25MYXN0TWFyZ2luV2lkdGg7DQoNCiAgYm9vbCBtX2JDaGVj
a2FibGUsDQogICAgICAgICAgICBtX2JPd25lckRyYXduOw0KDQogIHd4Rm9udCBtX2ZvbnQ7DQog
IHd4Q29sb3VyIG1fY29sVGV4dCwNCiAgICAgICAgICAgIG1fY29sQmFjazsNCiAgd3hCaXRtYXAg
bV9ibXBDaGVja2VkLA0KICAgICAgICAgICAgbV9ibXBVbmNoZWNrZWQ7DQoNCiAgc2l6ZV90IG1f
bkhlaWdodCwNCiAgICAgICAgICAgIG1fbk1hcmdpbldpZHRoOw0KfTsNCiMgMjUgIi4uLy4uL2lu
Y2x1ZGUvd3gvbXN3L21lbnVpdGVtLmgiIDINCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4TWVudUl0ZW0gOiBwdWJsaWMgd3hNZW51SXRlbUJhc2UNCg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyB3eE93bmVyRHJhd24NCg0Kew0KcHVi
bGljOg0KDQogICAgd3hNZW51SXRlbSh3eE1lbnUgKnBhcmVudE1lbnUgPSAod3hNZW51ICopX19u
dWxsLA0KICAgICAgICAgICAgICAgaW50IGlkID0gKC0xKSwNCiAgICAgICAgICAgICAgIGNvbnN0
IHd4U3RyaW5nJiBuYW1lID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgIGNvbnN0IHd4
U3RyaW5nJiBoZWxwID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgIGJvb2wgaXNDaGVj
a2FibGUgPSAwLA0KICAgICAgICAgICAgICAgd3hNZW51ICpzdWJNZW51ID0gKHd4TWVudSAqKV9f
bnVsbCk7DQogICAgdmlydHVhbCB+d3hNZW51SXRlbSgpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQg
U2V0VGV4dChjb25zdCB3eFN0cmluZyYgc3RyTmFtZSk7DQogICAgdmlydHVhbCB2b2lkIFNldENo
ZWNrYWJsZShib29sIGNoZWNrYWJsZSk7DQoNCiAgICB2aXJ0dWFsIHZvaWQgRW5hYmxlKGJvb2wg
YkRvRW5hYmxlID0gMSk7DQogICAgdmlydHVhbCB2b2lkIENoZWNrKGJvb2wgYkRvQ2hlY2sgPSAx
KTsNCiAgICB2aXJ0dWFsIGJvb2wgSXNDaGVja2VkKCkgY29uc3Q7DQoNCg0KICAgIHZpcnR1YWwg
d3hBY2NlbGVyYXRvckVudHJ5ICpHZXRBY2NlbCgpIGNvbnN0Ow0KDQoNCg0KDQogICAgYm9vbCBJ
c0NoZWNrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHd4TWVudUl0ZW1CYXNlOjpJc0NoZWNrYWJsZSgp
OyB9DQoNCg0KDQoNCiAgICBpbnQgR2V0UmVhbElkKCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAg
cHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE1lbnVJdGVtOyB3eENsYXNzSW5m
byAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4TWVudUl0ZW06OnNtX2NsYXNzd3hN
ZW51SXRlbTsgfQ0KfTsNCiMgMTMxICIuLi8uLi9pbmNsdWRlL3d4L21lbnVpdGVtLmgiIDINCiMg
MjkgIi4uLy4uL2luY2x1ZGUvd3gvbWVudS5oIiAyDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4TWVudTsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TWVu
dUJhcjsNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TWVudUl0ZW07DQoNCg0K
dHlwZWRlZiB3eE1lbnUgX1dYX0xJU1RfSVRFTV9UWVBFX3d4TWVudUxpc3Q7IHR5cGVkZWYgaW50
ICgqd3hTb3J0RnVuY0Zvcl93eE1lbnVMaXN0KShjb25zdCB3eE1lbnUgKiosIGNvbnN0IHd4TWVu
dSAqKik7IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4d3hNZW51TGlzdE5vZGUg
OiBwdWJsaWMgd3hOb2RlQmFzZSB7IHB1YmxpYzogd3h3eE1lbnVMaXN0Tm9kZSh3eExpc3RCYXNl
ICpsaXN0ID0gKHd4TGlzdEJhc2UgKilfX251bGwsIHd4d3hNZW51TGlzdE5vZGUgKnByZXZpb3Vz
ID0gKHd4d3hNZW51TGlzdE5vZGUgKilfX251bGwsIHd4d3hNZW51TGlzdE5vZGUgKm5leHQgPSAo
d3h3eE1lbnVMaXN0Tm9kZSAqKV9fbnVsbCwgd3hNZW51ICpkYXRhID0gKHd4TWVudSAqKV9fbnVs
bCwgY29uc3Qgd3hMaXN0S2V5JiBrZXkgPSB3eERlZmF1bHRMaXN0S2V5KSA6IHd4Tm9kZUJhc2Uo
bGlzdCwgcHJldmlvdXMsIG5leHQsIGRhdGEsIGtleSkgeyB9IHd4d3hNZW51TGlzdE5vZGUgKkdl
dE5leHQoKSBjb25zdCB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4Tm9kZUJhc2U6Okdl
dE5leHQoKTsgfSB3eHd4TWVudUxpc3ROb2RlICpHZXRQcmV2aW91cygpIGNvbnN0IHsgcmV0dXJu
ICh3eHd4TWVudUxpc3ROb2RlICopd3hOb2RlQmFzZTo6R2V0UHJldmlvdXMoKTsgfSB3eE1lbnUg
KkdldERhdGEoKSBjb25zdCB7IHJldHVybiAod3hNZW51ICopd3hOb2RlQmFzZTo6R2V0RGF0YSgp
OyB9IHZvaWQgU2V0RGF0YSh3eE1lbnUgKmRhdGEpIHsgd3hOb2RlQmFzZTo6U2V0RGF0YShkYXRh
KTsgfSB2aXJ0dWFsIHZvaWQgRGVsZXRlRGF0YSgpOyB9OyBjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eE1lbnVMaXN0IDogcHVibGljIHd4TGlzdEJhc2UgeyBwdWJsaWM6IHR5cGVk
ZWYgd3h3eE1lbnVMaXN0Tm9kZSBOb2RlOyB3eE1lbnVMaXN0KHd4S2V5VHlwZSBrZXlUeXBlID0g
d3hLRVlfTk9ORSkgOiB3eExpc3RCYXNlKGtleVR5cGUpIHsgfSB3eE1lbnVMaXN0KHNpemVfdCBj
b3VudCwgd3hNZW51ICplbGVtZW50c1tdKSA6IHd4TGlzdEJhc2UoY291bnQsICh2b2lkICoqKWVs
ZW1lbnRzKSB7IH0gd3hNZW51TGlzdCYgb3BlcmF0b3I9KGNvbnN0IHd4TWVudUxpc3QmIGxpc3Qp
IHsgcmV0dXJuICh3eE1lbnVMaXN0Jil3eExpc3RCYXNlOjpvcGVyYXRvcj0obGlzdCk7IH0gd3h3
eE1lbnVMaXN0Tm9kZSAqR2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9k
ZSAqKXd4TGlzdEJhc2U6OkdldEZpcnN0KCk7IH0gd3h3eE1lbnVMaXN0Tm9kZSAqR2V0TGFzdCgp
IGNvbnN0IHsgcmV0dXJuICh3eHd4TWVudUxpc3ROb2RlICopd3hMaXN0QmFzZTo6R2V0TGFzdCgp
OyB9IHd4d3hNZW51TGlzdE5vZGUgKkl0ZW0oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiAo
d3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6Okl0ZW0oaW5kZXgpOyB9IHd4TWVudSAqb3Bl
cmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgd3h3eE1lbnVMaXN0Tm9kZSAqbm9kZSA9IEl0
ZW0oaW5kZXgpOyByZXR1cm4gbm9kZSA/ICh3eE1lbnUqKShub2RlLT5HZXREYXRhKCkpIDogKHd4
TWVudSopX19udWxsOyB9IHd4d3hNZW51TGlzdE5vZGUgKkFwcGVuZCh3eE1lbnUgKm9iamVjdCkg
eyByZXR1cm4gKHd4d3hNZW51TGlzdE5vZGUgKil3eExpc3RCYXNlOjpBcHBlbmQob2JqZWN0KTsg
fSB3eHd4TWVudUxpc3ROb2RlICpJbnNlcnQod3hNZW51ICpvYmplY3QpIHsgcmV0dXJuICh3eHd4
TWVudUxpc3ROb2RlICopSW5zZXJ0KCh3eHd4TWVudUxpc3ROb2RlKilfX251bGwsIG9iamVjdCk7
IH0gd3h3eE1lbnVMaXN0Tm9kZSAqSW5zZXJ0KHNpemVfdCBwb3MsIHd4TWVudSAqb2JqZWN0KSB7
IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6Okluc2VydChwb3MsIG9iamVj
dCk7IH0gd3h3eE1lbnVMaXN0Tm9kZSAqSW5zZXJ0KHd4d3hNZW51TGlzdE5vZGUgKnByZXYsIHd4
TWVudSAqb2JqZWN0KSB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6Oklu
c2VydChwcmV2LCBvYmplY3QpOyB9IHd4d3hNZW51TGlzdE5vZGUgKkFwcGVuZChsb25nIGtleSwg
dm9pZCAqb2JqZWN0KSB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkFw
cGVuZChrZXksIG9iamVjdCk7IH0gd3h3eE1lbnVMaXN0Tm9kZSAqQXBwZW5kKGNvbnN0IGNoYXIg
KmtleSwgdm9pZCAqb2JqZWN0KSB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlzdEJh
c2U6OkFwcGVuZChrZXksIG9iamVjdCk7IH0gd3h3eE1lbnVMaXN0Tm9kZSAqRGV0YWNoTm9kZSh3
eHd4TWVudUxpc3ROb2RlICpub2RlKSB7IHJldHVybiAod3h3eE1lbnVMaXN0Tm9kZSAqKXd4TGlz
dEJhc2U6OkRldGFjaE5vZGUobm9kZSk7IH0gYm9vbCBEZWxldGVOb2RlKHd4d3hNZW51TGlzdE5v
ZGUgKm5vZGUpIHsgcmV0dXJuIHd4TGlzdEJhc2U6OkRlbGV0ZU5vZGUobm9kZSk7IH0gYm9vbCBE
ZWxldGVPYmplY3Qod3hNZW51ICpvYmplY3QpIHsgcmV0dXJuIHd4TGlzdEJhc2U6OkRlbGV0ZU9i
amVjdChvYmplY3QpOyB9IHd4d3hNZW51TGlzdE5vZGUgKkZpbmQod3hNZW51ICpvYmplY3QpIGNv
bnN0IHsgcmV0dXJuICh3eHd4TWVudUxpc3ROb2RlICopd3hMaXN0QmFzZTo6RmluZChvYmplY3Qp
OyB9IHZpcnR1YWwgd3h3eE1lbnVMaXN0Tm9kZSAqRmluZChjb25zdCB3eExpc3RLZXkmIGtleSkg
Y29uc3QgeyByZXR1cm4gKHd4d3hNZW51TGlzdE5vZGUgKil3eExpc3RCYXNlOjpGaW5kKGtleSk7
IH0gaW50IEluZGV4T2Yod3hNZW51ICpvYmplY3QpIGNvbnN0IHsgcmV0dXJuIHd4TGlzdEJhc2U6
OkluZGV4T2Yob2JqZWN0KTsgfSB2b2lkIFNvcnQod3hTb3J0RnVuY0Zvcl93eE1lbnVMaXN0IGZ1
bmMpIHsgd3hMaXN0QmFzZTo6U29ydCgod3hTb3J0Q29tcGFyZUZ1bmN0aW9uKWZ1bmMpOyB9IHBy
b3RlY3RlZDogd3hOb2RlQmFzZSAqQ3JlYXRlTm9kZSh3eE5vZGVCYXNlICpwcmV2LCB3eE5vZGVC
YXNlICpuZXh0LCB2b2lkICpkYXRhLCBjb25zdCB3eExpc3RLZXkmIGtleSA9IHd4RGVmYXVsdExp
c3RLZXkpIHsgcmV0dXJuIG5ldyB3eHd4TWVudUxpc3ROb2RlKHRoaXMsICh3eHd4TWVudUxpc3RO
b2RlICopcHJldiwgKHd4d3hNZW51TGlzdE5vZGUgKiluZXh0LCAod3hNZW51ICopZGF0YSwga2V5
KTsgfSB9Ow0KdHlwZWRlZiB3eE1lbnVJdGVtIF9XWF9MSVNUX0lURU1fVFlQRV93eE1lbnVJdGVt
TGlzdDsgdHlwZWRlZiBpbnQgKCp3eFNvcnRGdW5jRm9yX3d4TWVudUl0ZW1MaXN0KShjb25zdCB3
eE1lbnVJdGVtICoqLCBjb25zdCB3eE1lbnVJdGVtICoqKTsgY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3h3eE1lbnVJdGVtTGlzdE5vZGUgOiBwdWJsaWMgd3hOb2RlQmFzZSB7IHB1
YmxpYzogd3h3eE1lbnVJdGVtTGlzdE5vZGUod3hMaXN0QmFzZSAqbGlzdCA9ICh3eExpc3RCYXNl
ICopX19udWxsLCB3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqcHJldmlvdXMgPSAod3h3eE1lbnVJdGVt
TGlzdE5vZGUgKilfX251bGwsIHd4d3hNZW51SXRlbUxpc3ROb2RlICpuZXh0ID0gKHd4d3hNZW51
SXRlbUxpc3ROb2RlICopX19udWxsLCB3eE1lbnVJdGVtICpkYXRhID0gKHd4TWVudUl0ZW0gKilf
X251bGwsIGNvbnN0IHd4TGlzdEtleSYga2V5ID0gd3hEZWZhdWx0TGlzdEtleSkgOiB3eE5vZGVC
YXNlKGxpc3QsIHByZXZpb3VzLCBuZXh0LCBkYXRhLCBrZXkpIHsgfSB3eHd4TWVudUl0ZW1MaXN0
Tm9kZSAqR2V0TmV4dCgpIGNvbnN0IHsgcmV0dXJuICh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqKXd4
Tm9kZUJhc2U6OkdldE5leHQoKTsgfSB3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqR2V0UHJldmlvdXMo
KSBjb25zdCB7IHJldHVybiAod3h3eE1lbnVJdGVtTGlzdE5vZGUgKil3eE5vZGVCYXNlOjpHZXRQ
cmV2aW91cygpOyB9IHd4TWVudUl0ZW0gKkdldERhdGEoKSBjb25zdCB7IHJldHVybiAod3hNZW51
SXRlbSAqKXd4Tm9kZUJhc2U6OkdldERhdGEoKTsgfSB2b2lkIFNldERhdGEod3hNZW51SXRlbSAq
ZGF0YSkgeyB3eE5vZGVCYXNlOjpTZXREYXRhKGRhdGEpOyB9IHZpcnR1YWwgdm9pZCBEZWxldGVE
YXRhKCk7IH07IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TWVudUl0ZW1MaXN0
IDogcHVibGljIHd4TGlzdEJhc2UgeyBwdWJsaWM6IHR5cGVkZWYgd3h3eE1lbnVJdGVtTGlzdE5v
ZGUgTm9kZTsgd3hNZW51SXRlbUxpc3Qod3hLZXlUeXBlIGtleVR5cGUgPSB3eEtFWV9OT05FKSA6
IHd4TGlzdEJhc2Uoa2V5VHlwZSkgeyB9IHd4TWVudUl0ZW1MaXN0KHNpemVfdCBjb3VudCwgd3hN
ZW51SXRlbSAqZWxlbWVudHNbXSkgOiB3eExpc3RCYXNlKGNvdW50LCAodm9pZCAqKillbGVtZW50
cykgeyB9IHd4TWVudUl0ZW1MaXN0JiBvcGVyYXRvcj0oY29uc3Qgd3hNZW51SXRlbUxpc3QmIGxp
c3QpIHsgcmV0dXJuICh3eE1lbnVJdGVtTGlzdCYpd3hMaXN0QmFzZTo6b3BlcmF0b3I9KGxpc3Qp
OyB9IHd4d3hNZW51SXRlbUxpc3ROb2RlICpHZXRGaXJzdCgpIGNvbnN0IHsgcmV0dXJuICh3eHd4
TWVudUl0ZW1MaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkdldEZpcnN0KCk7IH0gd3h3eE1lbnVJdGVt
TGlzdE5vZGUgKkdldExhc3QoKSBjb25zdCB7IHJldHVybiAod3h3eE1lbnVJdGVtTGlzdE5vZGUg
Kil3eExpc3RCYXNlOjpHZXRMYXN0KCk7IH0gd3h3eE1lbnVJdGVtTGlzdE5vZGUgKkl0ZW0oc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiAod3h3eE1lbnVJdGVtTGlzdE5vZGUgKil3eExpc3RC
YXNlOjpJdGVtKGluZGV4KTsgfSB3eE1lbnVJdGVtICpvcGVyYXRvcltdKHNpemVfdCBpbmRleCkg
Y29uc3QgeyB3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqbm9kZSA9IEl0ZW0oaW5kZXgpOyByZXR1cm4g
bm9kZSA/ICh3eE1lbnVJdGVtKikobm9kZS0+R2V0RGF0YSgpKSA6ICh3eE1lbnVJdGVtKilfX251
bGw7IH0gd3h3eE1lbnVJdGVtTGlzdE5vZGUgKkFwcGVuZCh3eE1lbnVJdGVtICpvYmplY3QpIHsg
cmV0dXJuICh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkFwcGVuZChvYmplY3Qp
OyB9IHd4d3hNZW51SXRlbUxpc3ROb2RlICpJbnNlcnQod3hNZW51SXRlbSAqb2JqZWN0KSB7IHJl
dHVybiAod3h3eE1lbnVJdGVtTGlzdE5vZGUgKilJbnNlcnQoKHd4d3hNZW51SXRlbUxpc3ROb2Rl
KilfX251bGwsIG9iamVjdCk7IH0gd3h3eE1lbnVJdGVtTGlzdE5vZGUgKkluc2VydChzaXplX3Qg
cG9zLCB3eE1lbnVJdGVtICpvYmplY3QpIHsgcmV0dXJuICh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAq
KXd4TGlzdEJhc2U6Okluc2VydChwb3MsIG9iamVjdCk7IH0gd3h3eE1lbnVJdGVtTGlzdE5vZGUg
Kkluc2VydCh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqcHJldiwgd3hNZW51SXRlbSAqb2JqZWN0KSB7
IHJldHVybiAod3h3eE1lbnVJdGVtTGlzdE5vZGUgKil3eExpc3RCYXNlOjpJbnNlcnQocHJldiwg
b2JqZWN0KTsgfSB3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqQXBwZW5kKGxvbmcga2V5LCB2b2lkICpv
YmplY3QpIHsgcmV0dXJuICh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkFwcGVu
ZChrZXksIG9iamVjdCk7IH0gd3h3eE1lbnVJdGVtTGlzdE5vZGUgKkFwcGVuZChjb25zdCBjaGFy
ICprZXksIHZvaWQgKm9iamVjdCkgeyByZXR1cm4gKHd4d3hNZW51SXRlbUxpc3ROb2RlICopd3hM
aXN0QmFzZTo6QXBwZW5kKGtleSwgb2JqZWN0KTsgfSB3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqRGV0
YWNoTm9kZSh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gKHd4d3hNZW51SXRl
bUxpc3ROb2RlICopd3hMaXN0QmFzZTo6RGV0YWNoTm9kZShub2RlKTsgfSBib29sIERlbGV0ZU5v
ZGUod3h3eE1lbnVJdGVtTGlzdE5vZGUgKm5vZGUpIHsgcmV0dXJuIHd4TGlzdEJhc2U6OkRlbGV0
ZU5vZGUobm9kZSk7IH0gYm9vbCBEZWxldGVPYmplY3Qod3hNZW51SXRlbSAqb2JqZWN0KSB7IHJl
dHVybiB3eExpc3RCYXNlOjpEZWxldGVPYmplY3Qob2JqZWN0KTsgfSB3eHd4TWVudUl0ZW1MaXN0
Tm9kZSAqRmluZCh3eE1lbnVJdGVtICpvYmplY3QpIGNvbnN0IHsgcmV0dXJuICh3eHd4TWVudUl0
ZW1MaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkZpbmQob2JqZWN0KTsgfSB2aXJ0dWFsIHd4d3hNZW51
SXRlbUxpc3ROb2RlICpGaW5kKGNvbnN0IHd4TGlzdEtleSYga2V5KSBjb25zdCB7IHJldHVybiAo
d3h3eE1lbnVJdGVtTGlzdE5vZGUgKil3eExpc3RCYXNlOjpGaW5kKGtleSk7IH0gaW50IEluZGV4
T2Yod3hNZW51SXRlbSAqb2JqZWN0KSBjb25zdCB7IHJldHVybiB3eExpc3RCYXNlOjpJbmRleE9m
KG9iamVjdCk7IH0gdm9pZCBTb3J0KHd4U29ydEZ1bmNGb3Jfd3hNZW51SXRlbUxpc3QgZnVuYykg
eyB3eExpc3RCYXNlOjpTb3J0KCh3eFNvcnRDb21wYXJlRnVuY3Rpb24pZnVuYyk7IH0gcHJvdGVj
dGVkOiB3eE5vZGVCYXNlICpDcmVhdGVOb2RlKHd4Tm9kZUJhc2UgKnByZXYsIHd4Tm9kZUJhc2Ug
Km5leHQsIHZvaWQgKmRhdGEsIGNvbnN0IHd4TGlzdEtleSYga2V5ID0gd3hEZWZhdWx0TGlzdEtl
eSkgeyByZXR1cm4gbmV3IHd4d3hNZW51SXRlbUxpc3ROb2RlKHRoaXMsICh3eHd4TWVudUl0ZW1M
aXN0Tm9kZSAqKXByZXYsICh3eHd4TWVudUl0ZW1MaXN0Tm9kZSAqKW5leHQsICh3eE1lbnVJdGVt
ICopZGF0YSwga2V5KTsgfSB9Ow0KIyA1NyAiLi4vLi4vaW5jbHVkZS93eC9tZW51LmgiDQpjbGFz
cyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eE1lbnVCYXNlIDogcHVibGljIHd4RXZ0SGFu
ZGxlcg0Kew0KcHVibGljOg0KDQogICAgc3RhdGljIHd4TWVudSAqTmV3KGNvbnN0IHd4U3RyaW5n
JiB0aXRsZSA9IHd4RW1wdHlTdHJpbmcsIGxvbmcgc3R5bGUgPSAwKTsNCg0KDQogICAgd3hNZW51
QmFzZShjb25zdCB3eFN0cmluZyYgdGl0bGUsIGxvbmcgc3R5bGUgPSAwKSA6IG1fdGl0bGUodGl0
bGUpDQogICAgICAgIHsgSW5pdChzdHlsZSk7IH0NCiAgICB3eE1lbnVCYXNlKGxvbmcgc3R5bGUg
PSAwKQ0KICAgICAgICB7IEluaXQoc3R5bGUpOyB9DQoNCg0KICAgIHZpcnR1YWwgfnd4TWVudUJh
c2UoKTsNCg0KDQoNCg0KDQogICAgdm9pZCBBcHBlbmQoaW50IGlkLA0KICAgICAgICAgICAgICAg
IGNvbnN0IHd4U3RyaW5nJiB0ZXh0LA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBo
ZWxwID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgICBib29sIGlzQ2hlY2thYmxlID0g
MCkNCiAgICB7DQogICAgICAgIERvQXBwZW5kKHd4TWVudUl0ZW06Ok5ldygod3hNZW51ICopdGhp
cywgaWQsIHRleHQsIGhlbHAsIGlzQ2hlY2thYmxlKSk7DQogICAgfQ0KDQoNCiAgICB2b2lkIEFw
cGVuZFNlcGFyYXRvcigpIHsgQXBwZW5kKCgtMSksIHd4RW1wdHlTdHJpbmcpOyB9DQoNCg0KICAg
IHZvaWQgQXBwZW5kKGludCBpZCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgdGV4
dCwNCiAgICAgICAgICAgICAgICB3eE1lbnUgKnN1Ym1lbnUsDQogICAgICAgICAgICAgICAgY29u
c3Qgd3hTdHJpbmcmIGhlbHAgPSB3eEVtcHR5U3RyaW5nKQ0KICAgIHsNCiAgICAgICAgRG9BcHBl
bmQod3hNZW51SXRlbTo6TmV3KCh3eE1lbnUgKil0aGlzLCBpZCwgdGV4dCwgaGVscCwgMCwgc3Vi
bWVudSkpOw0KICAgIH0NCg0KDQogICAgdm9pZCBBcHBlbmQod3hNZW51SXRlbSAqaXRlbSkgeyBE
b0FwcGVuZChpdGVtKTsgfQ0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBCcmVhaygpIHsgfQ0KDQoN
CiAgICBib29sIEluc2VydChzaXplX3QgcG9zLCB3eE1lbnVJdGVtICppdGVtKTsNCiAgICB2b2lk
IEluc2VydChzaXplX3QgcG9zLA0KICAgICAgICAgICAgICAgIGludCBpZCwNCiAgICAgICAgICAg
ICAgICBjb25zdCB3eFN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmlu
ZyYgaGVscCA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICAgYm9vbCBpc0NoZWNrYWJs
ZSA9IDApDQogICAgew0KICAgICAgICBJbnNlcnQocG9zLCB3eE1lbnVJdGVtOjpOZXcoKHd4TWVu
dSAqKXRoaXMsIGlkLCB0ZXh0LCBoZWxwLCBpc0NoZWNrYWJsZSkpOw0KICAgIH0NCg0KDQogICAg
dm9pZCBJbnNlcnRTZXBhcmF0b3Ioc2l6ZV90IHBvcykNCiAgICB7DQogICAgICAgIEluc2VydChw
b3MsIHd4TWVudUl0ZW06Ok5ldygod3hNZW51ICopdGhpcykpOw0KICAgIH0NCg0KDQogICAgdm9p
ZCBJbnNlcnQoc2l6ZV90IHBvcywNCiAgICAgICAgICAgICAgICBpbnQgaWQsDQogICAgICAgICAg
ICAgICAgY29uc3Qgd3hTdHJpbmcmIHRleHQsDQogICAgICAgICAgICAgICAgd3hNZW51ICpzdWJt
ZW51LA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBoZWxwID0gd3hFbXB0eVN0cmlu
ZykNCiAgICB7DQogICAgICAgIEluc2VydChwb3MsIHd4TWVudUl0ZW06Ok5ldygod3hNZW51ICop
dGhpcywgaWQsIHRleHQsIGhlbHAsIDAsIHN1Ym1lbnUpKTsNCiAgICB9DQoNCg0KICAgIHZvaWQg
UHJlcGVuZCh3eE1lbnVJdGVtICppdGVtKQ0KICAgIHsNCiAgICAgICAgSW5zZXJ0KDB1LCBpdGVt
KTsNCiAgICB9DQoNCiAgICB2b2lkIFByZXBlbmQoaW50IGlkLA0KICAgICAgICAgICAgICAgICBj
b25zdCB3eFN0cmluZyYgdGV4dCwNCiAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGhl
bHAgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAgICBib29sIGlzQ2hlY2thYmxlID0g
MCkNCiAgICB7DQogICAgICAgIEluc2VydCgwdSwgaWQsIHRleHQsIGhlbHAsIGlzQ2hlY2thYmxl
KTsNCiAgICB9DQoNCg0KICAgIHZvaWQgUHJlcGVuZFNlcGFyYXRvcigpDQogICAgew0KICAgICAg
ICBJbnNlcnRTZXBhcmF0b3IoMHUpOw0KICAgIH0NCg0KDQogICAgdm9pZCBQcmVwZW5kKGludCBp
ZCwNCiAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHRleHQsDQogICAgICAgICAgICAg
ICAgIHd4TWVudSAqc3VibWVudSwNCiAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGhl
bHAgPSB3eEVtcHR5U3RyaW5nKQ0KICAgIHsNCiAgICAgICAgSW5zZXJ0KDB1LCBpZCwgdGV4dCwg
c3VibWVudSwgaGVscCk7DQogICAgfQ0KDQoNCg0KDQogICAgd3hNZW51SXRlbSAqUmVtb3ZlKGlu
dCBpZCkgeyByZXR1cm4gUmVtb3ZlKEZpbmRDaGlsZEl0ZW0oaWQpKTsgfQ0KICAgIHd4TWVudUl0
ZW0gKlJlbW92ZSh3eE1lbnVJdGVtICppdGVtKTsNCg0KDQoNCiAgICBib29sIERlbGV0ZShpbnQg
aWQpIHsgcmV0dXJuIERlbGV0ZShGaW5kQ2hpbGRJdGVtKGlkKSk7IH0NCiAgICBib29sIERlbGV0
ZSh3eE1lbnVJdGVtICppdGVtKTsNCg0KDQogICAgYm9vbCBEZXN0cm95KGludCBpZCkgeyByZXR1
cm4gRGVzdHJveShGaW5kQ2hpbGRJdGVtKGlkKSk7IH0NCiAgICBib29sIERlc3Ryb3kod3hNZW51
SXRlbSAqaXRlbSk7DQoNCg0KDQoNCg0KICAgIHNpemVfdCBHZXRNZW51SXRlbUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9pdGVtcy5HZXRDb3VudCgpOyB9DQoNCiAgICBjb25zdCB3eE1lbnVJdGVt
TGlzdCYgR2V0TWVudUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQ0KICAgIHd4TWVu
dUl0ZW1MaXN0JiBHZXRNZW51SXRlbXMoKSB7IHJldHVybiBtX2l0ZW1zOyB9DQoNCg0KICAgIHZp
cnR1YWwgaW50IEZpbmRJdGVtKGNvbnN0IHd4U3RyaW5nJiBpdGVtU3RyaW5nKSBjb25zdDsNCiAg
ICB3eE1lbnVJdGVtKiBGaW5kSXRlbShpbnQgaWQsIHd4TWVudSAqKm1lbnUgPSBfX251bGwpIGNv
bnN0Ow0KDQoNCiAgICB2b2lkIEVuYWJsZShpbnQgaWQsIGJvb2wgZW5hYmxlKTsNCiAgICBib29s
IElzRW5hYmxlZChpbnQgaWQpIGNvbnN0Ow0KDQogICAgdm9pZCBDaGVjayhpbnQgaWQsIGJvb2wg
Y2hlY2spOw0KICAgIGJvb2wgSXNDaGVja2VkKGludCBpZCkgY29uc3Q7DQoNCiAgICB2b2lkIFNl
dExhYmVsKGludCBpZCwgY29uc3Qgd3hTdHJpbmcmIGxhYmVsKTsNCiAgICB3eFN0cmluZyBHZXRM
YWJlbChpbnQgaWQpIGNvbnN0Ow0KDQogICAgdmlydHVhbCB2b2lkIFNldEhlbHBTdHJpbmcoaW50
IGlkLCBjb25zdCB3eFN0cmluZyYgaGVscFN0cmluZyk7DQogICAgdmlydHVhbCB3eFN0cmluZyBH
ZXRIZWxwU3RyaW5nKGludCBpZCkgY29uc3Q7DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBT
ZXRUaXRsZShjb25zdCB3eFN0cmluZyYgdGl0bGUpIHsgbV90aXRsZSA9IHRpdGxlOyB9DQogICAg
Y29uc3Qgd3hTdHJpbmcgR2V0VGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9DQoNCg0K
ICAgIHZvaWQgU2V0Q2xpZW50RGF0YSh2b2lkKiBjbGllbnREYXRhKSB7IG1fY2xpZW50RGF0YSA9
IGNsaWVudERhdGE7IH0NCiAgICB2b2lkKiBHZXRDbGllbnREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9jbGllbnREYXRhOyB9DQoNCg0KICAgIHZvaWQgU2V0RXZlbnRIYW5kbGVyKHd4RXZ0SGFuZGxl
ciAqaGFuZGxlcikgeyBtX2V2ZW50SGFuZGxlciA9IGhhbmRsZXI7IH0NCiAgICB3eEV2dEhhbmRs
ZXIgKkdldEV2ZW50SGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRIYW5kbGVyOyB9DQoN
Cg0KICAgIHZvaWQgU2V0SW52b2tpbmdXaW5kb3cod3hXaW5kb3cgKndpbikgeyBtX2ludm9raW5n
V2luZG93ID0gd2luOyB9DQogICAgd3hXaW5kb3cgKkdldEludm9raW5nV2luZG93KCkgY29uc3Qg
eyByZXR1cm4gbV9pbnZva2luZ1dpbmRvdzsgfQ0KDQoNCiAgICBsb25nIEdldFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZTsgfQ0KDQoNCg0KDQoNCg0KDQogICAgdm9pZCBVcGRhdGVVSSh3
eEV2dEhhbmRsZXIqIHNvdXJjZSA9ICh3eEV2dEhhbmRsZXIqKV9fbnVsbCk7DQoNCg0KICAgIGJv
b2wgSXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudUJhciAhPSBfX251bGw7IH0NCg0K
DQogICAgdm9pZCBTZXRQYXJlbnQod3hNZW51ICpwYXJlbnQpIHsgbV9tZW51UGFyZW50ID0gcGFy
ZW50OyB9DQogICAgd3hNZW51ICpHZXRQYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVQYXJl
bnQ7IH0NCiMgMjU5ICIuLi8uLi9pbmNsdWRlL3d4L21lbnUuaCINCiAgICB3eE1lbnVJdGVtICpG
aW5kQ2hpbGRJdGVtKGludCBpZCwgc2l6ZV90ICpwb3MgPSBfX251bGwpIGNvbnN0Ow0KDQpwcm90
ZWN0ZWQ6DQoNCg0KDQogICAgdmlydHVhbCBib29sIERvQXBwZW5kKHd4TWVudUl0ZW0gKml0ZW0p
Ow0KICAgIHZpcnR1YWwgYm9vbCBEb0luc2VydChzaXplX3QgcG9zLCB3eE1lbnVJdGVtICppdGVt
KTsNCg0KICAgIHZpcnR1YWwgd3hNZW51SXRlbSAqRG9SZW1vdmUod3hNZW51SXRlbSAqaXRlbSk7
DQogICAgdmlydHVhbCBib29sIERvRGVsZXRlKHd4TWVudUl0ZW0gKml0ZW0pOw0KICAgIHZpcnR1
YWwgYm9vbCBEb0Rlc3Ryb3kod3hNZW51SXRlbSAqaXRlbSk7DQoNCg0KDQoNCg0KICAgIHZvaWQg
SW5pdChsb25nIHN0eWxlKTsNCg0KcHJvdGVjdGVkOg0KICAgIHd4TWVudUJhciAqbV9tZW51QmFy
Ow0KICAgIHd4TWVudSAqbV9tZW51UGFyZW50Ow0KDQogICAgd3hTdHJpbmcgbV90aXRsZTsNCiAg
ICB3eE1lbnVJdGVtTGlzdCBtX2l0ZW1zOw0KDQogICAgd3hXaW5kb3cgKm1faW52b2tpbmdXaW5k
b3c7DQogICAgdm9pZCAqbV9jbGllbnREYXRhOw0KDQogICAgbG9uZyBtX3N0eWxlOw0KDQogICAg
d3hFdnRIYW5kbGVyICptX2V2ZW50SGFuZGxlcjsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW51QmFyQmFzZSA6IHB1YmxpYyB3eFdpbmRvdw0Kew0K
cHVibGljOg0KDQogICAgd3hNZW51QmFyQmFzZSgpOw0KDQoNCiAgICB2aXJ0dWFsIH53eE1lbnVC
YXJCYXNlKCk7DQoNCg0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBBcHBlbmQod3hNZW51ICptZW51
LCBjb25zdCB3eFN0cmluZyYgdGl0bGUpOw0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBJbnNlcnQo
c2l6ZV90IHBvcywgd3hNZW51ICptZW51LCBjb25zdCB3eFN0cmluZyYgdGl0bGUpOw0KDQoNCg0K
DQoNCiAgICBzaXplX3QgR2V0TWVudUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9tZW51cy5HZXRD
b3VudCgpOyB9DQoNCg0KICAgIHd4TWVudSAqR2V0TWVudShzaXplX3QgcG9zKSBjb25zdDsNCg0K
DQoNCiAgICB2aXJ0dWFsIHd4TWVudSAqUmVwbGFjZShzaXplX3QgcG9zLCB3eE1lbnUgKm1lbnUs
IGNvbnN0IHd4U3RyaW5nJiB0aXRsZSk7DQoNCg0KDQogICAgdmlydHVhbCB3eE1lbnUgKlJlbW92
ZShzaXplX3QgcG9zKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIEVuYWJsZVRvcChzaXplX3QgcG9z
LCBib29sIGVuYWJsZSkgPSAwOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0TGFiZWxUb3Aoc2l6
ZV90IHBvcywgY29uc3Qgd3hTdHJpbmcmIGxhYmVsKSA9IDA7DQogICAgdmlydHVhbCB3eFN0cmlu
ZyBHZXRMYWJlbFRvcChzaXplX3QgcG9zKSBjb25zdCA9IDA7DQoNCg0KDQoNCg0KDQogICAgdmly
dHVhbCBpbnQgRmluZE1lbnVJdGVtKGNvbnN0IHd4U3RyaW5nJiBtZW51U3RyaW5nLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgaXRlbVN0cmluZykgY29uc3Qg
PSAwOw0KDQoNCg0KDQogICAgdmlydHVhbCB3eE1lbnVJdGVtKiBGaW5kSXRlbShpbnQgaWQsIHd4
TWVudSAqKm1lbnUgPSBfX251bGwpIGNvbnN0ID0gMDsNCg0KDQogICAgaW50IEZpbmRNZW51KGNv
bnN0IHd4U3RyaW5nJiB0aXRsZSkgY29uc3Q7DQojIDM2NSAiLi4vLi4vaW5jbHVkZS93eC9tZW51
LmgiDQogICAgdm9pZCBFbmFibGUoaW50IGlkLCBib29sIGVuYWJsZSk7DQogICAgdm9pZCBDaGVj
ayhpbnQgaWQsIGJvb2wgY2hlY2spOw0KICAgIGJvb2wgSXNDaGVja2VkKGludCBpZCkgY29uc3Q7
DQogICAgYm9vbCBJc0VuYWJsZWQoaW50IGlkKSBjb25zdDsNCg0KICAgIHZvaWQgU2V0TGFiZWwo
aW50IGlkLCBjb25zdCB3eFN0cmluZyAmbGFiZWwpOw0KICAgIHd4U3RyaW5nIEdldExhYmVsKGlu
dCBpZCkgY29uc3Q7DQoNCiAgICB2b2lkIFNldEhlbHBTdHJpbmcoaW50IGlkLCBjb25zdCB3eFN0
cmluZyYgaGVscFN0cmluZyk7DQogICAgd3hTdHJpbmcgR2V0SGVscFN0cmluZyhpbnQgaWQpIGNv
bnN0Ow0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgRW5hYmxlKGJvb2wgZW5hYmxlID0gMSkgeyByZXR1
cm4gd3hXaW5kb3c6OkVuYWJsZShlbmFibGUpOyB9DQogICAgdmlydHVhbCB2b2lkIFNldExhYmVs
KGNvbnN0IHd4U3RyaW5nJiBzKSB7IHd4V2luZG93OjpTZXRMYWJlbChzKTsgfQ0KICAgIHZpcnR1
YWwgd3hTdHJpbmcgR2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiB3eFdpbmRvdzo6R2V0TGFiZWwo
KTsgfQ0KIyAzOTMgIi4uLy4uL2luY2x1ZGUvd3gvbWVudS5oIg0KcHJvdGVjdGVkOg0KDQogICAg
d3hNZW51TGlzdCBtX21lbnVzOw0KfTsNCiMgNDA2ICIuLi8uLi9pbmNsdWRlL3d4L21lbnUuaCIN
CiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvbWVudS5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRl
L3d4L21zdy9tZW51LmgiDQojcHJhZ21hIGludGVyZmFjZSAibWVudS5oIg0KDQoNCg0KDQoNCg0K
ICAgIHR5cGVkZWYgd3hBY2NlbGVyYXRvckVudHJ5ICogX0F3eEFjY2VsZXJhdG9yQXJyYXk7IHR5
cGVkZWYgaW50ICggKkNNUEZVTkNfQXd4QWNjZWxlcmF0b3JBcnJheSkoX0F3eEFjY2VsZXJhdG9y
QXJyYXkgKnBJdGVtMSwgX0F3eEFjY2VsZXJhdG9yQXJyYXkgKnBJdGVtMik7IGNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4QWNjZWxlcmF0b3JBcnJheSA6IHB1YmxpYyB3eEJhc2VB
cnJheSB7IHB1YmxpYzogd3hBY2NlbGVyYXRvckFycmF5KCkgeyBzaXplX3QgdHlwZSA9IHNpemVv
ZihfQXd4QWNjZWxlcmF0b3JBcnJheSk7IHNpemVfdCBzaXplbG9uZyA9IHNpemVvZihsb25nKTsg
aWYgKCB0eXBlID4gc2l6ZWxvbmcgKSB7IGlmICggISh3eEZhbHNlKSApIHd4T25Bc3NlcnQoIi4u
Ly4uL2luY2x1ZGUvd3gvbXN3L21lbnUuaCIsIDIzLCAiaWxsZWdhbCB1c2Ugb2YgREVGSU5FX0FS
UkFZIik7IH0gfSB3eEFjY2VsZXJhdG9yQXJyYXkmIG9wZXJhdG9yPShjb25zdCB3eEFjY2VsZXJh
dG9yQXJyYXkmIHNyYykgeyB3eEJhc2VBcnJheSogdGVtcCA9ICh3eEJhc2VBcnJheSopIHRoaXM7
ICgqdGVtcCkgPSAoKGNvbnN0IHd4QmFzZUFycmF5JilzcmMpOyByZXR1cm4gKnRoaXM7IH0gX0F3
eEFjY2VsZXJhdG9yQXJyYXkmIG9wZXJhdG9yW10oc2l6ZV90IHVpSW5kZXgpIGNvbnN0IHsgcmV0
dXJuIChfQXd4QWNjZWxlcmF0b3JBcnJheSYpKHd4QmFzZUFycmF5OjpJdGVtKHVpSW5kZXgpKTsg
fSBfQXd4QWNjZWxlcmF0b3JBcnJheSYgSXRlbShzaXplX3QgdWlJbmRleCkgY29uc3QgeyByZXR1
cm4gKF9Bd3hBY2NlbGVyYXRvckFycmF5Jikod3hCYXNlQXJyYXk6Okl0ZW0odWlJbmRleCkpOyB9
IF9Bd3hBY2NlbGVyYXRvckFycmF5JiBMYXN0KCkgY29uc3QgeyByZXR1cm4gKF9Bd3hBY2NlbGVy
YXRvckFycmF5Jikod3hCYXNlQXJyYXk6Okl0ZW0oQ291bnQoKSAtIDEpKTsgfSBpbnQgSW5kZXgo
X0F3eEFjY2VsZXJhdG9yQXJyYXkgSXRlbSwgYm9vbCBiRnJvbUVuZCA9IDApIGNvbnN0IHsgcmV0
dXJuIHd4QmFzZUFycmF5OjpJbmRleCgobG9uZylJdGVtLCBiRnJvbUVuZCk7IH0gdm9pZCBBZGQo
X0F3eEFjY2VsZXJhdG9yQXJyYXkgSXRlbSkgeyB3eEJhc2VBcnJheTo6QWRkKChsb25nKUl0ZW0p
OyB9IHZvaWQgSW5zZXJ0KF9Bd3hBY2NlbGVyYXRvckFycmF5IEl0ZW0sIHNpemVfdCB1aUluZGV4
KSB7IHd4QmFzZUFycmF5OjpJbnNlcnQoKGxvbmcpSXRlbSwgdWlJbmRleCkgOyB9IHZvaWQgUmVt
b3ZlKHNpemVfdCB1aUluZGV4KSB7IFJlbW92ZUF0KHVpSW5kZXgpOyB9IHZvaWQgUmVtb3ZlQXQo
c2l6ZV90IHVpSW5kZXgpIHsgd3hCYXNlQXJyYXk6OlJlbW92ZUF0KHVpSW5kZXgpOyB9IHZvaWQg
UmVtb3ZlKF9Bd3hBY2NlbGVyYXRvckFycmF5IEl0ZW0pIHsgaW50IGlJbmRleCA9IEluZGV4KEl0
ZW0pOyBpZiAoIShpSW5kZXggIT0gKC0xKSkpIHtpZiAoICEod3hGYWxzZSkgKSB3eE9uQXNzZXJ0
KCIuLi8uLi9pbmNsdWRlL3d4L21zdy9tZW51LmgiLCAyMywgInJlbW92aW5nIGluZXhpc3Rpbmcg
ZWxlbWVudCBpbiB3eEFycmF5OjpSZW1vdmUiKTsgcmV0dXJuOyB9OyB3eEJhc2VBcnJheTo6UmVt
b3ZlQXQoKHNpemVfdClpSW5kZXgpOyB9IHZvaWQgU29ydChDTVBGVU5DX0F3eEFjY2VsZXJhdG9y
QXJyYXkgZkNtcCkgeyB3eEJhc2VBcnJheTo6U29ydCgoQ01QRlVOQylmQ21wKTsgfSB9Ow0KDQoN
CmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RnJhbWU7DQoNCg0KDQoNCg0KY2xh
c3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNZW51IDogcHVibGljIHd4TWVudUJhc2UN
CnsNCnB1YmxpYzoNCg0KICAgIHd4TWVudShjb25zdCB3eFN0cmluZyYgdGl0bGUsIGxvbmcgc3R5
bGUgPSAwKQ0KICAgICAgICA6IHd4TWVudUJhc2UodGl0bGUsIHN0eWxlKSB7IEluaXQoKTsgfQ0K
DQogICAgd3hNZW51KGxvbmcgc3R5bGUgPSAwKSA6IHd4TWVudUJhc2Uoc3R5bGUpIHsgSW5pdCgp
OyB9DQoNCiAgICB2aXJ0dWFsIH53eE1lbnUoKTsNCg0KDQogICAgdmlydHVhbCBib29sIERvQXBw
ZW5kKHd4TWVudUl0ZW0gKml0ZW0pOw0KICAgIHZpcnR1YWwgYm9vbCBEb0luc2VydChzaXplX3Qg
cG9zLCB3eE1lbnVJdGVtICppdGVtKTsNCiAgICB2aXJ0dWFsIHd4TWVudUl0ZW0gKkRvUmVtb3Zl
KHd4TWVudUl0ZW0gKml0ZW0pOw0KDQogICAgdmlydHVhbCB2b2lkIEJyZWFrKCk7DQoNCiAgICB2
aXJ0dWFsIHZvaWQgU2V0VGl0bGUoY29uc3Qgd3hTdHJpbmcmIHRpdGxlKTsNCiMgNjQgIi4uLy4u
L2luY2x1ZGUvd3gvbXN3L21lbnUuaCINCiAgICBib29sIFByb2Nlc3NDb21tYW5kKHd4Q29tbWFu
ZEV2ZW50JiBldmVudCk7DQoNCg0KDQoNCiAgICBib29sIE1TV0NvbW1hbmQoV1hVSU5UIHBhcmFt
LCBXWFdPUkQgaWQpOw0KDQoNCg0KICAgIHd4V2luZG93ICpHZXRXaW5kb3coKSBjb25zdDsNCg0K
ICAgIFdYSE1FTlUgR2V0SE1lbnUoKSBjb25zdCB7IHJldHVybiBtX2hNZW51OyB9DQoNCg0KICAg
IHZvaWQgQXR0YWNoKHd4TWVudUJhciAqbWVudWJhcik7DQogICAgdm9pZCBEZXRhY2goKTsNCg0K
DQoNCiAgICBib29sIEhhc0FjY2VscygpIGNvbnN0IHsgcmV0dXJuICFtX2FjY2Vscy5Jc0VtcHR5
KCk7IH0NCiAgICBzaXplX3QgR2V0QWNjZWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxz
LkdldENvdW50KCk7IH0NCiAgICBzaXplX3QgQ29weUFjY2Vscyh3eEFjY2VsZXJhdG9yRW50cnkg
KmFjY2VscykgY29uc3Q7DQoNCg0KICAgIHZvaWQgVXBkYXRlQWNjZWwod3hNZW51SXRlbSAqaXRl
bSk7DQoNCg0KICAgIGludCBGaW5kQWNjZWwoaW50IGlkKSBjb25zdDsNCg0KDQpwcml2YXRlOg0K
DQogICAgdm9pZCBJbml0KCk7DQoNCg0KICAgIGJvb2wgRG9JbnNlcnRPckFwcGVuZCh3eE1lbnVJ
dGVtICppdGVtLCBzaXplX3QgcG9zID0gKHNpemVfdCktMSk7DQoNCg0KICAgIGJvb2wgbV9kb0Jy
ZWFrOw0KDQoNCiAgICBXWEhNRU5VIG1faE1lbnU7DQoNCg0KDQogICAgd3hBY2NlbGVyYXRvckFy
cmF5IG1fYWNjZWxzOw0KDQoNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFz
c3d4TWVudTsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eE1l
bnU6OnNtX2NsYXNzd3hNZW51OyB9DQp9Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18o
KGRsbGltcG9ydCkpIHd4TWVudUJhciA6IHB1YmxpYyB3eE1lbnVCYXJCYXNlDQp7DQpwdWJsaWM6
DQoNCg0KICAgIHd4TWVudUJhcigpOw0KDQogICAgd3hNZW51QmFyKGxvbmcgc3R5bGUpOw0KDQog
ICAgd3hNZW51QmFyKGludCBuLCB3eE1lbnUgKm1lbnVzW10sIGNvbnN0IHd4U3RyaW5nIHRpdGxl
c1tdKTsNCiAgICB2aXJ0dWFsIH53eE1lbnVCYXIoKTsNCg0KDQogICAgdmlydHVhbCBib29sIEFw
cGVuZCggd3hNZW51ICptZW51LCBjb25zdCB3eFN0cmluZyAmdGl0bGUgKTsNCiAgICB2aXJ0dWFs
IGJvb2wgSW5zZXJ0KHNpemVfdCBwb3MsIHd4TWVudSAqbWVudSwgY29uc3Qgd3hTdHJpbmcmIHRp
dGxlKTsNCiAgICB2aXJ0dWFsIHd4TWVudSAqUmVwbGFjZShzaXplX3QgcG9zLCB3eE1lbnUgKm1l
bnUsIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSk7DQogICAgdmlydHVhbCB3eE1lbnUgKlJlbW92ZShz
aXplX3QgcG9zKTsNCg0KICAgIHZpcnR1YWwgaW50IEZpbmRNZW51SXRlbShjb25zdCB3eFN0cmlu
ZyYgbWVudVN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJp
bmcmIGl0ZW1TdHJpbmcpIGNvbnN0Ow0KICAgIHZpcnR1YWwgd3hNZW51SXRlbSogRmluZEl0ZW0o
IGludCBpZCwgd3hNZW51ICoqbWVudSA9IF9fbnVsbCApIGNvbnN0Ow0KDQogICAgdmlydHVhbCB2
b2lkIEVuYWJsZVRvcCggc2l6ZV90IHBvcywgYm9vbCBmbGFnICk7DQogICAgdmlydHVhbCB2b2lk
IFNldExhYmVsVG9wKCBzaXplX3QgcG9zLCBjb25zdCB3eFN0cmluZyYgbGFiZWwgKTsNCiAgICB2
aXJ0dWFsIHd4U3RyaW5nIEdldExhYmVsVG9wKCBzaXplX3QgcG9zICkgY29uc3Q7DQojIDE1NSAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvbWVudS5oIg0KICAgIFdYSE1FTlUgQ3JlYXRlKCk7DQogICAg
dm9pZCBEZXRhY2goKTsNCg0KDQogICAgYm9vbCBJc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tZW51QmFyRnJhbWUgIT0gX19udWxsOyB9DQoNCiAgICB3eEZyYW1lICpHZXRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVudUJhckZyYW1lOyB9DQoNCiAgICB2b2lkIEF0dGFjaCh3eEZyYW1l
ICpmcmFtZSk7DQoNCg0KDQogICAgY29uc3Qgd3hBY2NlbGVyYXRvclRhYmxlJiBHZXRBY2NlbFRh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbFRhYmxlOyB9DQoNCg0KICAgIHZvaWQgUmVidWls
ZEFjY2VsVGFibGUoKTsNCg0KDQoNCiAgICBXWEhNRU5VIEdldEhNZW51KCkgY29uc3QgeyByZXR1
cm4gbV9oTWVudTsgfQ0KDQoNCg0KICAgIHZvaWQgUmVmcmVzaCgpOw0KDQpwcm90ZWN0ZWQ6DQoN
CiAgICB2b2lkIEluaXQoKTsNCg0KDQoNCg0KDQogICAgd3hBcnJheVN0cmluZyBtX3RpdGxlczsN
Cg0KICAgIHd4RnJhbWUgKm1fbWVudUJhckZyYW1lOw0KICAgIFdYSE1FTlUgbV9oTWVudTsNCg0K
DQoNCiAgICB3eEFjY2VsZXJhdG9yVGFibGUgbV9hY2NlbFRhYmxlOw0KDQoNCnByaXZhdGU6DQog
ICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE1lbnVCYXI7IHd4Q2xhc3NJ
bmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hNZW51QmFyOjpzbV9jbGFzc3d4
TWVudUJhcjsgfQ0KfTsNCiMgNDA3ICIuLi8uLi9pbmNsdWRlL3d4L21lbnUuaCIgMg0KIyAzOSAi
Li4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQoNCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4
L2RpYWxvZy5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2RpYWxvZy5oIg0KI3ByYWdtYSBp
bnRlcmZhY2UgImRpYWxvZ2Jhc2UuaCINCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKSB3eERpYWxvZ0Jhc2UgOiBwdWJsaWMgd3hQYW5lbA0Kew0KcHVibGljOg0KDQoN
CiAgICB2b2lkIFNldFJldHVybkNvZGUoaW50IHJldHVybkNvZGUpIHsgbV9yZXR1cm5Db2RlID0g
cmV0dXJuQ29kZTsgfQ0KICAgIGludCBHZXRSZXR1cm5Db2RlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXR1cm5Db2RlOyB9DQoNCg0KDQogICAgd3hTaXplciAqQ3JlYXRlVGV4dFNpemVyKCBjb25zdCB3
eFN0cmluZyAmbWVzc2FnZSApOw0KDQoNCiAgICB3eFNpemVyICpDcmVhdGVCdXR0b25TaXplcigg
bG9uZyBmbGFncyApOw0KDQpwcm90ZWN0ZWQ6DQoNCiAgICBpbnQgbV9yZXR1cm5Db2RlOw0KfTsN
Cg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2RpYWxvZy5oIiAxDQojIDE2ICIuLi8uLi9p
bmNsdWRlL3d4L21zdy9kaWFsb2cuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJkaWFsb2cuaCINCg0K
DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4RGlh
bG9nTmFtZVN0cjsNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eERpYWxv
ZyA6IHB1YmxpYyB3eERpYWxvZ0Jhc2UNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5m
byBzbV9jbGFzc3d4RGlhbG9nOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJnd4RGlhbG9nOjpzbV9jbGFzc3d4RGlhbG9nOyB9DQoNCnB1YmxpYzoNCiAgICB3eERp
YWxvZygpOw0KDQoNCiAgICB3eERpYWxvZyh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAg
IGNvbnN0IHd4U3RyaW5nJiB0aXRsZSwgYm9vbCBtb2RhbCwNCiAgICAgICAgICAgICBpbnQgeCA9
IC0xLCBpbnQgeT0gLTEsIGludCB3aWR0aCA9IDUwMCwgaW50IGhlaWdodCA9IDUwMCwNCiAgICAg
ICAgICAgICBsb25nIHN0eWxlID0gKDB4MDgwMCB8IDB4MjAwMDAwMDApLA0KICAgICAgICAgICAg
IGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hEaWFsb2dOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAg
bG9uZyBtb2RhbFN0eWxlID0gbW9kYWwgPyAweDAwMjAgOiAweDAwMDAgOw0KICAgICAgICBDcmVh
dGUocGFyZW50LCAtMSwgdGl0bGUsIHd4UG9pbnQoeCwgeSksIHd4U2l6ZSh3aWR0aCwgaGVpZ2h0
KSwNCiAgICAgICAgICAgICAgIHN0eWxlIHwgbW9kYWxTdHlsZSwgbmFtZSk7DQogICAgfQ0KDQoN
CiAgICB3eERpYWxvZyh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAg
ICAgIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSwNCiAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBw
b3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUg
PSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAoMHgwODAwIHwgMHgy
MDAwMDAwMCksDQogICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eERpYWxvZ05h
bWVTdHIpDQogICAgew0KICAgICAgICBDcmVhdGUocGFyZW50LCBpZCwgdGl0bGUsIHBvcywgc2l6
ZSwgc3R5bGUsIG5hbWUpOw0KICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJl
bnQsIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHRpdGxl
LA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9u
LA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQog
ICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9ICgweDA4MDAgfCAweDIwMDAwMDAwKSwNCiAgICAg
ICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4RGlhbG9nTmFtZVN0cik7DQoNCiAg
ICB+d3hEaWFsb2coKTsNCg0KDQogICAgdmlydHVhbCBib29sIERlc3Ryb3koKTsNCiAgICB2aXJ0
dWFsIGJvb2wgU2hvdyhib29sIHNob3cpOw0KICAgIHZpcnR1YWwgdm9pZCBJY29uaXplKGJvb2wg
aWNvbml6ZSk7DQogICAgdmlydHVhbCBib29sIElzSWNvbml6ZWQoKSBjb25zdDsNCg0KICAgIHZp
cnR1YWwgYm9vbCBJc1RvcExldmVsKCkgY29uc3QgeyByZXR1cm4gMTsgfQ0KDQogICAgdm9pZCBT
ZXRNb2RhbChib29sIGZsYWcpOw0KICAgIHZpcnR1YWwgYm9vbCBJc01vZGFsKCkgY29uc3Q7DQoN
Cg0KICAgIHZpcnR1YWwgaW50IFNob3dNb2RhbCgpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgRW5k
TW9kYWwoaW50IHJldENvZGUpOw0KDQoNCiAgICBib29sIElzTW9kYWxTaG93aW5nKCkgY29uc3Q7
DQojIDkxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9kaWFsb2cuaCINCiAgICBib29sIE9uQ2xvc2Uo
KTsNCiAgICB2b2lkIE9uQ2hhckhvb2sod3hLZXlFdmVudCYgZXZlbnQpOw0KICAgIHZvaWQgT25D
bG9zZVdpbmRvdyh3eENsb3NlRXZlbnQmIGV2ZW50KTsNCg0KDQogICAgdm9pZCBPbk9LKHd4Q29t
bWFuZEV2ZW50JiBldmVudCk7DQogICAgdm9pZCBPbkFwcGx5KHd4Q29tbWFuZEV2ZW50JiBldmVu
dCk7DQogICAgdm9pZCBPbkNhbmNlbCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KDQoNCiAgICB2
b2lkIE9uU3lzQ29sb3VyQ2hhbmdlZCh3eFN5c0NvbG91ckNoYW5nZWRFdmVudCYgZXZlbnQpOw0K
DQoNCiAgICBsb25nIE1TV1dpbmRvd1Byb2MoV1hVSU5UIG1lc3NhZ2UsIFdYV1BBUkFNIHdQYXJh
bSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KDQoNCg0KDQoNCnByb3RlY3RlZDoNCg0KICAgIHZpcnR1
YWwgdm9pZCBEb1NldENsaWVudFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCiAgICB2aXJ0
dWFsIHZvaWQgRG9HZXRQb3NpdGlvbihpbnQgKngsIGludCAqeSkgY29uc3Q7DQoNCg0KICAgIHZv
aWQgRG9TaG93TW9kYWwoKTsNCg0KcHJpdmF0ZToNCiAgICB3eFdpbmRvdyAqbV9vbGRGb2N1czsN
Cg0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRh
YmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVu
dFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0
Ow0KfTsNCiMgNDQgIi4uLy4uL2luY2x1ZGUvd3gvZGlhbG9nLmgiIDINCiMgNDUgIi4uLy4uL2lu
Y2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3RpbWVyLmgiIDENCiMgMTcg
Ii4uLy4uL2luY2x1ZGUvd3gvdGltZXIuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJ0aW1lcmJhc2Uu
aCINCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2xvbmdsb25nLmgiIDENCiMgMTcgIi4u
Ly4uL2luY2x1ZGUvd3gvbG9uZ2xvbmcuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJsb25nbG9uZy5o
Ig0KDQoNCg0KDQoNCiMgMSAidDovbXN5cy8xLjAvbWluZ3cvbGliL2djYy1saWIvaTY4Ni1wYy1t
aW5ndzMyLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMNCiMgMjQgIi4uLy4uL2luY2x1ZGUvd3gv
bG9uZ2xvbmcuaCIgMg0KIyAxMDUgIi4uLy4uL2luY2x1ZGUvd3gvbG9uZ2xvbmcuaCINCiAgICBj
bGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eExvbmdMb25nTmF0aXZlOw0KICAgIHR5
cGVkZWYgd3hMb25nTG9uZ05hdGl2ZSB3eExvbmdMb25nOw0KIyAxMTcgIi4uLy4uL2luY2x1ZGUv
d3gvbG9uZ2xvbmcuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9pb3N3cmFwLmgiIDENCiMgMTE4
ICIuLi8uLi9pbmNsdWRlL3d4L2xvbmdsb25nLmgiIDINCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4TG9uZ0xvbmdOYXRpdmUNCnsNCnB1YmxpYzoNCg0KDQogICAgd3hM
b25nTG9uZ05hdGl2ZSgpIHsgbV9sbCA9IDA7IH0NCg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUobG9u
ZyBsb25nIGxsKSB7IG1fbGwgPSBsbDsgfQ0KDQogICAgd3hMb25nTG9uZ05hdGl2ZShsb25nIGhp
LCB1bnNpZ25lZCBsb25nIGxvKQ0KICAgIHsNCg0KICAgICAgICBtX2xsID0gKChsb25nIGxvbmcp
IGhpKSA8PCAzMjsNCiAgICAgICAgbV9sbCB8PSAobG9uZyBsb25nKSBsbzsNCiAgICB9DQoNCg0K
DQoNCg0KDQoNCiAgICB3eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvcj0obG9uZyBsb25nIGxsKQ0K
ICAgICAgICB7IG1fbGwgPSBsbDsgcmV0dXJuICp0aGlzOyB9DQoNCg0KDQoNCiAgICB3eExvbmdM
b25nTmF0aXZlJiBBc3NpZ24oZG91YmxlIGQpDQogICAgICAgIHsgbV9sbCA9IChsb25nIGxvbmcp
ZDsgcmV0dXJuICp0aGlzOyB9DQoNCg0KDQoNCg0KICAgIGxvbmcgR2V0SGkoKSBjb25zdA0KICAg
ICAgICB7IHJldHVybiAobG9uZykobV9sbCA+PiAzMik7IH0NCg0KICAgIHVuc2lnbmVkIGxvbmcg
R2V0TG8oKSBjb25zdA0KICAgICAgICB7IHJldHVybiAodW5zaWduZWQgbG9uZyltX2xsOyB9DQoN
Cg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgQWJzKCkgY29uc3QgeyByZXR1cm4gd3hMb25nTG9uZ05h
dGl2ZSgqdGhpcykuQWJzKCk7IH0NCiAgICB3eExvbmdMb25nTmF0aXZlJiBBYnMoKSB7IGlmICgg
bV9sbCA8IDAgKSBtX2xsID0gLW1fbGw7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICBsb25nIGxv
bmcgR2V0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2xsOyB9DQoNCg0KICAgIGxvbmcgVG9Mb25n
KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICggISgobV9sbCA+PSAoLTIxNDc0ODM2NDdMIC0x
KSkgJiYgKG1fbGwgPD0gMjE0NzQ4MzY0N0wpKSApIHd4T25Bc3NlcnQoIi4uLy4uL2luY2x1ZGUv
d3gvbG9uZ2xvbmcuaCIsIDE3MywgInd4TG9uZ0xvbmcgdG8gbG9uZyBjb252ZXJzaW9uIGxvc3Mg
b2YgcHJlY2lzaW9uIik7DQoNCg0KICAgICAgICByZXR1cm4gKGxvbmcpbV9sbDsNCiAgICB9DQoN
Cg0KDQoNCg0KDQoNCiAgICB3eExvbmdMb25nTmF0aXZlIG9wZXJhdG9yKyhjb25zdCB3eExvbmdM
b25nTmF0aXZlJiBsbCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gd3hMb25nTG9uZ05hdGl2ZSht
X2xsICsgbGwubV9sbCk7IH0NCiAgICB3eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvcis9KGNvbnN0
IHd4TG9uZ0xvbmdOYXRpdmUmIGxsKQ0KICAgICAgICB7IG1fbGwgKz0gbGwubV9sbDsgcmV0dXJu
ICp0aGlzOyB9DQoNCiAgICB3eExvbmdMb25nTmF0aXZlIG9wZXJhdG9yKyhjb25zdCBsb25nIGxv
bmcgbGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIHd4TG9uZ0xvbmdOYXRpdmUobV9sbCArIGxs
KTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yKz0oY29uc3QgbG9uZyBsb25nIGxs
KQ0KICAgICAgICB7IG1fbGwgKz0gbGw7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICB3eExvbmdM
b25nTmF0aXZlJiBvcGVyYXRvcisrKCkNCiAgICAgICAgeyBtX2xsKys7IHJldHVybiAqdGhpczsg
fQ0KDQoNCiAgICB3eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvcisrKGludCkNCiAgICAgICAgeyBt
X2xsKys7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICB3eExvbmdMb25nTmF0aXZlIG9wZXJhdG9y
LSgpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIHd4TG9uZ0xvbmdOYXRpdmUoLW1fbGwpOyB9DQoN
Cg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgb3BlcmF0b3ItKGNvbnN0IHd4TG9uZ0xvbmdOYXRpdmUm
IGxsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZlKG1fbGwgLSBsbC5t
X2xsKTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yLT0oY29uc3Qgd3hMb25nTG9u
Z05hdGl2ZSYgbGwpDQogICAgICAgIHsgbV9sbCAtPSBsbC5tX2xsOyByZXR1cm4gKnRoaXM7IH0N
Cg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgb3BlcmF0b3ItKGNvbnN0IGxvbmcgbG9uZyBsbCkgY29u
c3QNCiAgICAgICAgeyByZXR1cm4gd3hMb25nTG9uZ05hdGl2ZShtX2xsIC0gbGwpOyB9DQogICAg
d3hMb25nTG9uZ05hdGl2ZSYgb3BlcmF0b3ItPShjb25zdCBsb25nIGxvbmcgbGwpDQogICAgICAg
IHsgbV9sbCAtPSBsbDsgcmV0dXJuICp0aGlzOyB9DQoNCg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUm
IG9wZXJhdG9yLS0oKQ0KICAgICAgICB7IG1fbGwtLTsgcmV0dXJuICp0aGlzOyB9DQoNCg0KICAg
IHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yLS0oaW50KQ0KICAgICAgICB7IG1fbGwtLTsgcmV0
dXJuICp0aGlzOyB9DQoNCg0KDQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvcjw8KGludCBz
aGlmdCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gd3hMb25nTG9uZ05hdGl2ZShtX2xsIDw8IHNo
aWZ0KTs7IH0NCiAgICB3eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvcjw8PShpbnQgc2hpZnQpDQog
ICAgICAgIHsgbV9sbCA8PD0gc2hpZnQ7IHJldHVybiAqdGhpczsgfQ0KDQoNCiAgICB3eExvbmdM
b25nTmF0aXZlIG9wZXJhdG9yPj4oaW50IHNoaWZ0KSBjb25zdA0KICAgICAgICB7IHJldHVybiB3
eExvbmdMb25nTmF0aXZlKG1fbGwgPj4gc2hpZnQpOzsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUm
IG9wZXJhdG9yPj49KGludCBzaGlmdCkNCiAgICAgICAgeyBtX2xsID4+PSBzaGlmdDsgcmV0dXJu
ICp0aGlzOyB9DQoNCg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgb3BlcmF0b3ImKGNvbnN0IHd4TG9u
Z0xvbmdOYXRpdmUmIGxsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZl
KG1fbGwgJiBsbC5tX2xsKTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yJj0oY29u
c3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwpDQogICAgICAgIHsgbV9sbCAmPSBsbC5tX2xsOyByZXR1
cm4gKnRoaXM7IH0NCg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgb3BlcmF0b3J8KGNvbnN0IHd4TG9u
Z0xvbmdOYXRpdmUmIGxsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZl
KG1fbGwgfCBsbC5tX2xsKTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yfD0oY29u
c3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwpDQogICAgICAgIHsgbV9sbCB8PSBsbC5tX2xsOyByZXR1
cm4gKnRoaXM7IH0NCg0KICAgIHd4TG9uZ0xvbmdOYXRpdmUgb3BlcmF0b3JeKGNvbnN0IHd4TG9u
Z0xvbmdOYXRpdmUmIGxsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZl
KG1fbGwgXiBsbC5tX2xsKTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yXj0oY29u
c3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwpDQogICAgICAgIHsgbV9sbCBePSBsbC5tX2xsOyByZXR1
cm4gKnRoaXM7IH0NCg0KDQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvciooY29uc3Qgd3hM
b25nTG9uZ05hdGl2ZSYgbGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIHd4TG9uZ0xvbmdOYXRp
dmUobV9sbCAqIGxsLm1fbGwpOyB9DQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvcioobG9u
ZyBsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZlKG1fbGwgKiBsKTsg
fQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yKj0oY29uc3Qgd3hMb25nTG9uZ05hdGl2
ZSYgbGwpDQogICAgICAgIHsgbV9sbCAqPSBsbC5tX2xsOyByZXR1cm4gKnRoaXM7IH0NCiAgICB3
eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvcio9KGxvbmcgbCkNCiAgICAgICAgeyBtX2xsICo9IGw7
IHJldHVybiAqdGhpczsgfQ0KDQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvci8oY29uc3Qg
d3hMb25nTG9uZ05hdGl2ZSYgbGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIHd4TG9uZ0xvbmdO
YXRpdmUobV9sbCAvIGxsLm1fbGwpOyB9DQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvci8o
bG9uZyBsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZlKG1fbGwgLyBs
KTsgfQ0KICAgIHd4TG9uZ0xvbmdOYXRpdmUmIG9wZXJhdG9yLz0oY29uc3Qgd3hMb25nTG9uZ05h
dGl2ZSYgbGwpDQogICAgICAgIHsgbV9sbCAvPSBsbC5tX2xsOyByZXR1cm4gKnRoaXM7IH0NCiAg
ICB3eExvbmdMb25nTmF0aXZlJiBvcGVyYXRvci89KGxvbmcgbCkNCiAgICAgICAgeyBtX2xsIC89
IGw7IHJldHVybiAqdGhpczsgfQ0KDQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRvciUoY29u
c3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIHd4TG9uZ0xv
bmdOYXRpdmUobV9sbCAlIGxsLm1fbGwpOyB9DQogICAgd3hMb25nTG9uZ05hdGl2ZSBvcGVyYXRv
ciUobG9uZyBsKSBjb25zdA0KICAgICAgICB7IHJldHVybiB3eExvbmdMb25nTmF0aXZlKG1fbGwg
JSBsKTsgfQ0KDQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qgd3hMb25nTG9uZ05hdGl2ZSYg
bGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fbGwgPT0gbGwubV9sbDsgfQ0KICAgIGJvb2wg
b3BlcmF0b3I9PShsb25nIGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fbGwgPT0gbDsgfQ0K
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB3eExvbmdMb25nTmF0aXZlJiBsbCkgY29uc3QNCiAg
ICAgICAgeyByZXR1cm4gbV9sbCAhPSBsbC5tX2xsOyB9DQogICAgYm9vbCBvcGVyYXRvciE9KGxv
bmcgbCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV9sbCAhPSBsOyB9DQogICAgYm9vbCBvcGVy
YXRvcjwoY29uc3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJu
IG1fbGwgPCBsbC5tX2xsOyB9DQogICAgYm9vbCBvcGVyYXRvcjwobG9uZyBsKSBjb25zdA0KICAg
ICAgICB7IHJldHVybiBtX2xsIDwgbDsgfQ0KICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IHd4TG9u
Z0xvbmdOYXRpdmUmIGxsKSBjb25zdA0KICAgICAgICB7IHJldHVybiBtX2xsID4gbGwubV9sbDsg
fQ0KICAgIGJvb2wgb3BlcmF0b3I+KGxvbmcgbCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV9s
bCA+IGw7IH0NCiAgICBib29sIG9wZXJhdG9yPD0oY29uc3Qgd3hMb25nTG9uZ05hdGl2ZSYgbGwp
IGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fbGwgPD0gbGwubV9sbDsgfQ0KICAgIGJvb2wgb3Bl
cmF0b3I8PShsb25nIGwpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fbGwgPD0gbDsgfQ0KICAg
IGJvb2wgb3BlcmF0b3I+PShjb25zdCB3eExvbmdMb25nTmF0aXZlJiBsbCkgY29uc3QNCiAgICAg
ICAgeyByZXR1cm4gbV9sbCA+PSBsbC5tX2xsOyB9DQogICAgYm9vbCBvcGVyYXRvcj49KGxvbmcg
bCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV9sbCA+PSBsOyB9DQoNCg0KDQogICAgdm9pZCAq
YXNBcnJheSgpIGNvbnN0Ow0KDQoNCg0KDQoNCg0KcHJpdmF0ZToNCiAgICBsb25nIGxvbmcgbV9s
bDsNCn07DQojIDUxOCAiLi4vLi4vaW5jbHVkZS93eC9sb25nbG9uZy5oIg0KaW5saW5lIGJvb2wg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3BlcmF0b3I8KGxvbmcgbCwgY29uc3Qgd3hMb25n
TG9uZyYgbGwpIHsgcmV0dXJuIGxsID4gbDsgfQ0KaW5saW5lIGJvb2wgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgb3BlcmF0b3I+KGxvbmcgbCwgY29uc3Qgd3hMb25nTG9uZyYgbGwpIHsgcmV0
dXJuIGxsID4gbDsgfQ0KaW5saW5lIGJvb2wgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3Bl
cmF0b3I8PShsb25nIGwsIGNvbnN0IHd4TG9uZ0xvbmcmIGxsKSB7IHJldHVybiBsbCA+IGw7IH0N
CmlubGluZSBib29sIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIG9wZXJhdG9yPj0obG9uZyBs
LCBjb25zdCB3eExvbmdMb25nJiBsbCkgeyByZXR1cm4gbGwgPiBsOyB9DQppbmxpbmUgYm9vbCBf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBvcGVyYXRvcj09KGxvbmcgbCwgY29uc3Qgd3hMb25n
TG9uZyYgbGwpIHsgcmV0dXJuIGxsID4gbDsgfQ0KaW5saW5lIGJvb2wgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgb3BlcmF0b3IhPShsb25nIGwsIGNvbnN0IHd4TG9uZ0xvbmcmIGxsKSB7IHJl
dHVybiBsbCA+IGw7IH0NCg0KaW5saW5lIHd4TG9uZ0xvbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgb3BlcmF0b3IrKGxvbmcgbCwgY29uc3Qgd3hMb25nTG9uZyYgbGwpIHsgcmV0dXJuIGxs
ICsgbDsgfQ0KaW5saW5lIHd4TG9uZ0xvbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgb3Bl
cmF0b3ItKGxvbmcgbCwgY29uc3Qgd3hMb25nTG9uZyYgbGwpIHsgcmV0dXJuIGxsIC0gbDsgfQ0K
IyAyMyAiLi4vLi4vaW5jbHVkZS93eC90aW1lci5oIiAyDQojIDMyICIuLi8uLi9pbmNsdWRlL3d4
L3RpbWVyLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRpbWVyQmFzZSA6
IHB1YmxpYyB3eE9iamVjdA0Kew0KcHVibGljOg0KDQoNCg0KDQoNCiAgICB3eFRpbWVyQmFzZSgp
IHsgSW5pdCgpOyBTZXRPd25lcihfX251bGwpOyB9DQoNCg0KDQoNCiAgICB3eFRpbWVyQmFzZSh3
eEV2dEhhbmRsZXIgKm93bmVyLCBpbnQgaWQgPSAtMSkNCiAgICAgICAgeyBJbml0KCk7IFNldE93
bmVyKG93bmVyLCBpZCk7IH0NCg0KDQogICAgdm9pZCBTZXRPd25lcih3eEV2dEhhbmRsZXIgKm93
bmVyLCBpbnQgaWQgPSAtMSkNCiAgICAgICAgeyBtX293bmVyID0gb3duZXI7IG1faWRUaW1lciA9
IGlkOyB9DQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCBib29sIFN0YXJ0KGludCBtaWxsaXNlY29u
ZHMgPSAtMSwgYm9vbCBvbmVTaG90ID0gMCkNCiAgICB7DQogICAgICAgIGlmICggbWlsbGlzZWNv
bmRzICE9IC0xICkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9taWxsaSA9IG1pbGxpc2Vjb25k
czsNCiAgICAgICAgfQ0KDQogICAgICAgIG1fb25lU2hvdCA9IG9uZVNob3Q7DQoNCiAgICAgICAg
cmV0dXJuIDE7DQogICAgfQ0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTdG9wKCkgPSAwOw0KDQoN
Cg0KICAgIHZpcnR1YWwgdm9pZCBOb3RpZnkoKTsNCg0KDQoNCg0KDQogICAgdmlydHVhbCBib29s
IElzUnVubmluZygpIGNvbnN0ID0gMDsNCg0KDQogICAgaW50IEdldEludGVydmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9taWxsaTsgfQ0KDQoNCiAgICBib29sIElzT25lU2hvdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb25lU2hvdDsgfQ0KDQoNCg0KDQoNCg0KDQpwcm90ZWN0ZWQ6DQoNCiAgICB2b2lkIElu
aXQoKSB7IG1fb25lU2hvdCA9IDA7IG1fbWlsbGkgPSAwOyB9DQoNCiAgICB3eEV2dEhhbmRsZXIg
Km1fb3duZXI7DQogICAgaW50IG1faWRUaW1lcjsNCg0KICAgIGludCBtX21pbGxpOw0KICAgIGJv
b2wgbV9vbmVTaG90Ow0KfTsNCg0KDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cv
dGltZXIuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvdGltZXIuaCINCiNwcmFnbWEg
aW50ZXJmYWNlICJ0aW1lci5oIg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4VGltZXIgOiBwdWJsaWMgd3hUaW1lckJhc2UNCnsNCmZyaWVuZCB2b2lkIHd4UHJvY2Vzc1Rp
bWVyKHd4VGltZXImIHRpbWVyKTsNCg0KcHVibGljOg0KICAgIHd4VGltZXIoKSB7IEluaXQoKTsg
fQ0KICAgIHd4VGltZXIod3hFdnRIYW5kbGVyICpvd25lciwgaW50IGlkID0gLTEpIDogd3hUaW1l
ckJhc2Uob3duZXIsIGlkKQ0KICAgICAgICB7IEluaXQoKTsgfQ0KICAgIH53eFRpbWVyKCk7DQoN
CiAgICB2aXJ0dWFsIGJvb2wgU3RhcnQoaW50IG1pbGxpc2Vjb25kcyA9IC0xLCBib29sIG9uZVNo
b3QgPSAwKTsNCiAgICB2aXJ0dWFsIHZvaWQgU3RvcCgpOw0KDQogICAgdmlydHVhbCBib29sIElz
UnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faWQgIT0gMDsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAg
dm9pZCBJbml0KCk7DQoNCiAgICBsb25nIG1faWQ7DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBz
dGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFRpbWVyOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJnd4VGltZXI6OnNtX2NsYXNzd3hUaW1lcjsgfQ0KfTsNCiMg
MTEyICIuLi8uLi9pbmNsdWRlL3d4L3RpbWVyLmgiIDINCiMgMTMwICIuLi8uLi9pbmNsdWRlL3d4
L3RpbWVyLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRpbWVyUnVubmVy
DQp7DQpwdWJsaWM6DQogICAgd3hUaW1lclJ1bm5lcih3eFRpbWVyJiB0aW1lcikgOiBtX3RpbWVy
KHRpbWVyKSB7IH0NCiAgICB3eFRpbWVyUnVubmVyKHd4VGltZXImIHRpbWVyLCBpbnQgbWlsbGks
IGJvb2wgb25lU2hvdCA9IDApDQogICAgICAgIDogbV90aW1lcih0aW1lcikNCiAgICB7DQogICAg
ICAgIG1fdGltZXIuU3RhcnQobWlsbGksIG9uZVNob3QpOw0KICAgIH0NCg0KICAgIHZvaWQgU3Rh
cnQoaW50IG1pbGxpLCBib29sIG9uZVNob3QgPSAwKQ0KICAgIHsNCiAgICAgICAgbV90aW1lci5T
dGFydChtaWxsaSwgb25lU2hvdCk7DQogICAgfQ0KDQogICAgfnd4VGltZXJSdW5uZXIoKQ0KICAg
IHsNCiAgICAgICAgaWYgKCBtX3RpbWVyLklzUnVubmluZygpICkNCiAgICAgICAgew0KICAgICAg
ICAgICAgbV90aW1lci5TdG9wKCk7DQogICAgICAgIH0NCiAgICB9DQoNCnByaXZhdGU6DQogICAg
d3hUaW1lciYgbV90aW1lcjsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hUaW1lckV2ZW50IDogcHVibGljIHd4RXZlbnQNCnsNCnB1YmxpYzoNCiAgICB3
eFRpbWVyRXZlbnQoaW50IGlkID0gMCwgaW50IGludGVydmFsID0gMCkgOiB3eEV2ZW50KGlkKQ0K
ICAgIHsNCiAgICAgICAgbV9ldmVudFR5cGUgPSB3eEVWVF9USU1FUjsNCg0KICAgICAgICBtX2lu
dGVydmFsID0gaW50ZXJ2YWw7DQogICAgfQ0KDQoNCiAgICBpbnQgR2V0SW50ZXJ2YWwoKSBjb25z
dCB7IHJldHVybiBtX2ludGVydmFsOyB9DQoNCnByaXZhdGU6DQogICAgaW50IG1faW50ZXJ2YWw7
DQoNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4VGltZXJFdmVudDsg
d3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFRpbWVyRXZlbnQ6
OnNtX2NsYXNzd3hUaW1lckV2ZW50OyB9DQp9Ow0KDQp0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxl
cjo6Knd4VGltZXJFdmVudEZ1bmN0aW9uKSh3eFRpbWVyRXZlbnQmKTsNCiMgMTkwICIuLi8uLi9p
bmNsdWRlL3d4L3RpbWVyLmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFN0
b3BXYXRjaA0Kew0KcHVibGljOg0KDQogICAgd3hTdG9wV2F0Y2goKSB7IFN0YXJ0KCk7IH0NCiAg
ICB2b2lkIFN0YXJ0KGxvbmcgdCA9IDApOw0KICAgIHZvaWQgUGF1c2UoKSB7IG1fcGF1c2UgPSBH
ZXRFbGFwc2VkVGltZSgpOyB9DQogICAgdm9pZCBSZXN1bWUoKSB7IFN0YXJ0KG1fcGF1c2UpOyB9
DQoNCg0KICAgIGxvbmcgVGltZSgpIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQoNCiAgICBsb25nIEdl
dEVsYXBzZWRUaW1lKCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgd3hMb25nTG9uZyBtX3QwOw0K
ICAgIGxvbmcgbV9wYXVzZTsNCn07DQoNCg0KDQoNCnZvaWQgX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgd3hTdGFydFRpbWVyKCk7DQoNCg0KDQpsb25nIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4R2V0RWxhcHNlZFRpbWUoYm9vbCByZXNldFRpbWVyID0gMSk7DQoNCg0KDQoNCg0KDQpl
eHRlcm4gbG9uZyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEdldExvY2FsVGltZSgpOw0K
DQoNCmV4dGVybiBsb25nIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R2V0VVRDVGltZSgp
Ow0KDQoNCmV4dGVybiB3eExvbmdMb25nIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4R2V0
TG9jYWxUaW1lTWlsbGlzKCk7DQojIDQ2ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAi
Li4vLi4vaW5jbHVkZS93eC9zZXR0aW5ncy5oIiAxDQojIDExMCAiLi4vLi4vaW5jbHVkZS93eC9z
ZXR0aW5ncy5oIg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zZXR0aW5ncy5oIiAxDQojIDE2
ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zZXR0aW5ncy5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInNl
dHRpbmdzLmgiDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hT
eXN0ZW1TZXR0aW5ncyA6IHB1YmxpYyB3eE9iamVjdA0Kew0KcHVibGljOg0KICAgIHd4U3lzdGVt
U2V0dGluZ3MoKSB7IH0NCg0KDQogICAgc3RhdGljIHd4Q29sb3VyIEdldFN5c3RlbUNvbG91cihp
bnQgaW5kZXgpOw0KDQoNCiAgICBzdGF0aWMgd3hGb250IEdldFN5c3RlbUZvbnQoaW50IGluZGV4
KTsNCg0KDQogICAgc3RhdGljIGludCBHZXRTeXN0ZW1NZXRyaWMoaW50IGluZGV4KTsNCn07DQoj
IDExMSAiLi4vLi4vaW5jbHVkZS93eC9zZXR0aW5ncy5oIiAyDQojIDQ3ICIuLi8uLi9pbmNsdWRl
L3d4L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc2dkbGcuaCIgMQ0KDQoNCg0KDQoj
IDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L21zZ2RsZy5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRl
L3d4L21zdy9tc2dkbGcuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJtc2dkbGcuaCINCiMgMjYgIi4u
Ly4uL2luY2x1ZGUvd3gvbXN3L21zZ2RsZy5oIg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
ZXh0ZXJuIGNvbnN0IGNoYXIqIHd4TWVzc2FnZUJveENhcHRpb25TdHI7DQoNCmNsYXNzIF9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TWVzc2FnZURpYWxvZzogcHVibGljIHd4RGlhbG9nDQp7
DQpwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4TWVzc2FnZURpYWxvZzsgd3hD
bGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eE1lc3NhZ2VEaWFsb2c6
OnNtX2NsYXNzd3hNZXNzYWdlRGlhbG9nOyB9DQpwcm90ZWN0ZWQ6DQogICAgd3hTdHJpbmcgbV9j
YXB0aW9uOw0KICAgIHd4U3RyaW5nIG1fbWVzc2FnZTsNCiAgICBsb25nIG1fZGlhbG9nU3R5bGU7
DQogICAgd3hXaW5kb3cgKiBtX3BhcmVudDsNCnB1YmxpYzoNCiAgICB3eE1lc3NhZ2VEaWFsb2co
d3hXaW5kb3cgKnBhcmVudCwgY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IHd4U3RyaW5n
JiBjYXB0aW9uID0gd3hNZXNzYWdlQm94Q2FwdGlvblN0ciwNCiAgICAgICAgbG9uZyBzdHlsZSA9
IDB4MDAwMDAwMDR8d3hDRU5UUkUsIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0
aW9uKTsNCg0KICAgIGludCBTaG93TW9kYWwodm9pZCk7DQp9Ow0KDQoNCmludCBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eE1lc3NhZ2VCb3goY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IHd4U3RyaW5nJiBjYXB0aW9uID0gd3hNZXNzYWdlQm94Q2FwdGlvblN0ciwNCiAgbG9uZyBz
dHlsZSA9IDB4MDAwMDAwMDR8d3hDRU5UUkUsDQogIHd4V2luZG93ICpwYXJlbnQgPSBfX251bGws
IGludCB4ID0gLTEsIGludCB5ID0gLTEpOw0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L21zZ2RsZy5o
IiAyDQojIDQ4ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCg0KDQojIDEgIi4uLy4uL2luY2x1
ZGUvd3gvYm1wYnV0dG4uaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2Jt
cGJ1dHRuLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2JtcGJ1dHRuLmgiDQojcHJh
Z21hIGludGVyZmFjZSAiYm1wYnV0dG4uaCINCg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxp
bXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hCdXR0b25OYW1lU3RyOw0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCaXRtYXBCdXR0b246IHB1YmxpYyB3eEJ1dHRv
bg0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hCaXRtYXBCdXR0
b247IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hCaXRtYXBC
dXR0b246OnNtX2NsYXNzd3hCaXRtYXBCdXR0b247IH0NCg0KcHVibGljOg0KICAgIHd4Qml0bWFw
QnV0dG9uKCkgeyBtX21hcmdpblggPSA0OyBtX21hcmdpblkgPSA0OyB9DQogICAgd3hCaXRtYXBC
dXR0b24od3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwgY29uc3Qgd3hCaXRtYXAmIGJp
dG1hcCwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9u
LA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9uZyBz
dHlsZSA9IDB4MDAwNCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3Ig
PSB3eERlZmF1bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9
IHd4QnV0dG9uTmFtZVN0cikNCiAgICB7DQogICAgICAgIENyZWF0ZShwYXJlbnQsIGlkLCBiaXRt
YXAsIHBvcywgc2l6ZSwgc3R5bGUsIHZhbGlkYXRvciwgbmFtZSk7DQogICAgfQ0KDQogICAgYm9v
bCBDcmVhdGUod3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwgY29uc3Qgd3hCaXRtYXAm
IGJpdG1hcCwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0
aW9uLA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9u
ZyBzdHlsZSA9IDB4MDAwNCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0
b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFt
ZSA9IHd4QnV0dG9uTmFtZVN0cik7DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0TGFiZWwoY29uc3Qg
d3hCaXRtYXAmIGJpdG1hcCkNCiAgICB7DQogICAgICAgIFNldEJpdG1hcExhYmVsKGJpdG1hcCk7
DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIFNldEJpdG1hcExhYmVsKGNvbnN0IHd4Qml0bWFw
JiBiaXRtYXApOw0KDQoNCg0KDQoNCiAgICB3eEJpdG1hcCYgR2V0Qml0bWFwTGFiZWwoKSBjb25z
dCB7IHJldHVybiAod3hCaXRtYXAmKSBtX2J1dHRvbkJpdG1hcDsgfQ0KICAgIHd4Qml0bWFwJiBH
ZXRCaXRtYXBTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICh3eEJpdG1hcCYpIG1fYnV0dG9uQml0
bWFwU2VsZWN0ZWQ7IH0NCiAgICB3eEJpdG1hcCYgR2V0Qml0bWFwRm9jdXMoKSBjb25zdCB7IHJl
dHVybiAod3hCaXRtYXAmKSBtX2J1dHRvbkJpdG1hcEZvY3VzOyB9DQogICAgd3hCaXRtYXAmIEdl
dEJpdG1hcERpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gKHd4Qml0bWFwJikgbV9idXR0b25CaXRt
YXBEaXNhYmxlZDsgfQ0KDQogICAgdm9pZCBTZXRCaXRtYXBTZWxlY3RlZChjb25zdCB3eEJpdG1h
cCYgc2VsKSB7IG1fYnV0dG9uQml0bWFwU2VsZWN0ZWQgPSBzZWw7IH07DQogICAgdm9pZCBTZXRC
aXRtYXBGb2N1cyhjb25zdCB3eEJpdG1hcCYgZm9jdXMpIHsgbV9idXR0b25CaXRtYXBGb2N1cyA9
IGZvY3VzOyB9Ow0KICAgIHZvaWQgU2V0Qml0bWFwRGlzYWJsZWQoY29uc3Qgd3hCaXRtYXAmIGRp
c2FibGVkKSB7IG1fYnV0dG9uQml0bWFwRGlzYWJsZWQgPSBkaXNhYmxlZDsgfTsNCg0KICAgIHZv
aWQgU2V0TWFyZ2lucyhpbnQgeCwgaW50IHkpIHsgbV9tYXJnaW5YID0geDsgbV9tYXJnaW5ZID0g
eTsgfQ0KICAgIGludCBHZXRNYXJnaW5YKCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5YOyB9DQog
ICAgaW50IEdldE1hcmdpblkoKSBjb25zdCB7IHJldHVybiBtX21hcmdpblk7IH0NCg0KDQogICAg
dmlydHVhbCB2b2lkIFNldERlZmF1bHQoKTsNCiAgICB2aXJ0dWFsIGJvb2wgTVNXT25EcmF3KFdY
RFJBV0lURU1TVFJVQ1QgKml0ZW0pOw0KICAgIHZpcnR1YWwgdm9pZCBEcmF3RmFjZSggV1hIREMg
ZGMsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGJvb2wgc2VsICk7
DQogICAgdmlydHVhbCB2b2lkIERyYXdCdXR0b25Gb2N1cyggV1hIREMgZGMsIGludCBsZWZ0LCBp
bnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGJvb2wgc2VsICk7DQogICAgdmlydHVhbCB2
b2lkIERyYXdCdXR0b25EaXNhYmxlKCBXWEhEQyBkYywgaW50IGxlZnQsIGludCB0b3AsIGludCBy
aWdodCwgaW50IGJvdHRvbSwgYm9vbCB3aXRoX21hcmcgKTsNCg0KcHJvdGVjdGVkOg0KICAgIHd4
Qml0bWFwIG1fYnV0dG9uQml0bWFwOw0KICAgIHd4Qml0bWFwIG1fYnV0dG9uQml0bWFwU2VsZWN0
ZWQ7DQogICAgd3hCaXRtYXAgbV9idXR0b25CaXRtYXBGb2N1czsNCiAgICB3eEJpdG1hcCBtX2J1
dHRvbkJpdG1hcERpc2FibGVkOw0KICAgIGludCBtX21hcmdpblg7DQogICAgaW50IG1fbWFyZ2lu
WTsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvYm1wYnV0dG4uaCIgMg0KIyA1MSAiLi4vLi4v
aW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvY2hlY2tib3guaCIgMQ0K
DQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2NoZWNrYm94LmgiIDENCiMgMTYgIi4u
Ly4uL2luY2x1ZGUvd3gvbXN3L2NoZWNrYm94LmgiDQojcHJhZ21hIGludGVyZmFjZSAiY2hlY2ti
b3guaCINCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNo
YXIqIHd4Q2hlY2tCb3hOYW1lU3RyOw0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIHd4Qml0bWFwOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDaGVja0Jv
eCA6IHB1YmxpYyB3eENvbnRyb2wNCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2Ns
YXNzd3hDaGVja0JveDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
ICZ3eENoZWNrQm94OjpzbV9jbGFzc3d4Q2hlY2tCb3g7IH0NCg0KcHVibGljOg0KICAgIHd4Q2hl
Y2tCb3goKSB7IH0NCiAgICB3eENoZWNrQm94KHd4V2luZG93ICpwYXJlbnQsIHd4V2luZG93SUQg
aWQsIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBv
cyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0g
d3hEZWZhdWx0U2l6ZSwgbG9uZyBzdHlsZSA9IDAsDQogICAgICAgICAgICBjb25zdCB3eFZhbGlk
YXRvciYgdmFsaWRhdG9yID0gd3hEZWZhdWx0VmFsaWRhdG9yLA0KICAgICAgICAgICAgY29uc3Qg
d3hTdHJpbmcmIG5hbWUgPSB3eENoZWNrQm94TmFtZVN0cikNCiAgICB7DQogICAgICAgIENyZWF0
ZShwYXJlbnQsIGlkLCBsYWJlbCwgcG9zLCBzaXplLCBzdHlsZSwgdmFsaWRhdG9yLCBuYW1lKTsN
CiAgICB9DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlk
LCBjb25zdCB3eFN0cmluZyYgbGFiZWwsDQogICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3Mg
PSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4
RGVmYXVsdFNpemUsIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0
b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVsdFZhbGlkYXRvciwNCiAgICAgICAgICAgIGNvbnN0IHd4
U3RyaW5nJiBuYW1lID0gd3hDaGVja0JveE5hbWVTdHIpOw0KDQogICAgdmlydHVhbCB2b2lkIFNl
dFZhbHVlKGJvb2wgdmFsdWUpOw0KICAgIHZpcnR1YWwgYm9vbCBHZXRWYWx1ZSgpIGNvbnN0IDsN
Cg0KICAgIHZpcnR1YWwgYm9vbCBNU1dDb21tYW5kKFdYVUlOVCBwYXJhbSwgV1hXT1JEIGlkKTsN
CiAgICB2aXJ0dWFsIHZvaWQgU2V0TGFiZWwoY29uc3Qgd3hTdHJpbmcmIGxhYmVsKTsNCiAgICB2
aXJ0dWFsIHZvaWQgQ29tbWFuZCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KDQpwcm90ZWN0ZWQ6
DQogICAgdmlydHVhbCB3eFNpemUgRG9HZXRCZXN0U2l6ZSgpIGNvbnN0Ow0KfTsNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hCaXRtYXBDaGVja0JveDogcHVibGljIHd4Q2hl
Y2tCb3gNCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hCaXRtYXBDaGVj
a0JveDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEJpdG1h
cENoZWNrQm94OjpzbV9jbGFzc3d4Qml0bWFwQ2hlY2tCb3g7IH0NCg0KcHVibGljOg0KICAgIGlu
dCBjaGVja1dpZHRoIDsNCiAgICBpbnQgY2hlY2tIZWlnaHQgOw0KDQogICAgd3hCaXRtYXBDaGVj
a0JveCgpIHsgY2hlY2tXaWR0aCA9IC0xOyBjaGVja0hlaWdodCA9IC0xOyB9DQogICAgd3hCaXRt
YXBDaGVja0JveCh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLCBjb25zdCB3eEJpdG1h
cCAqbGFiZWwsDQogICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3Np
dGlvbiwNCiAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsIGxv
bmcgc3R5bGUgPSAwLA0KICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3ImIHZhbGlkYXRvciA9
IHd4RGVmYXVsdFZhbGlkYXRvciwNCiAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0g
d3hDaGVja0JveE5hbWVTdHIpDQogICAgew0KICAgICAgICBDcmVhdGUocGFyZW50LCBpZCwgbGFi
ZWwsIHBvcywgc2l6ZSwgc3R5bGUsIHZhbGlkYXRvciwgbmFtZSk7DQogICAgfQ0KDQogICAgYm9v
bCBDcmVhdGUod3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwgY29uc3Qgd3hCaXRtYXAg
KmJpdG1hcCwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0
aW9uLA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9u
ZyBzdHlsZSA9IDAsDQogICAgICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsaWRhdG9yID0g
d3hEZWZhdWx0VmFsaWRhdG9yLA0KICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3
eENoZWNrQm94TmFtZVN0cik7DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0TGFiZWwoY29uc3Qgd3hC
aXRtYXAmIGJpdG1hcCk7DQp9Ow0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L2NoZWNrYm94LmgiIDIN
CiMgNTIgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2No
b2ljZS5oIiAxDQojIDIwICIuLi8uLi9pbmNsdWRlL3d4L2Nob2ljZS5oIg0KI3ByYWdtYSBpbnRl
cmZhY2UgImNob2ljZWJhc2UuaCINCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvY3RybHN1Yi5o
IiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2N0cmxzdWIuaCINCiNwcmFnbWEgaW50ZXJmYWNl
ICJjb250cm9sd2l0aGl0ZW1zLmgiDQojIDI4ICIuLi8uLi9pbmNsdWRlL3d4L2N0cmxzdWIuaCIN
CmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Q29udHJvbFdpdGhJdGVtcyA6IHB1
YmxpYyB3eENvbnRyb2wNCnsNCnB1YmxpYzoNCiAgICB3eENvbnRyb2xXaXRoSXRlbXMoKSB7IG1f
Y2xpZW50RGF0YUl0ZW1zVHlwZSA9IENsaWVudERhdGFfTm9uZTsgfQ0KDQoNCg0KDQogICAgdm9p
ZCBBcHBlbmQoY29uc3Qgd3hTdHJpbmcmIGl0ZW0pDQogICAgICAgIHsgRG9BcHBlbmQoaXRlbSk7
IH0NCiAgICB2b2lkIEFwcGVuZChjb25zdCB3eFN0cmluZyYgaXRlbSwgdm9pZCAqY2xpZW50RGF0
YSkNCiAgICAgICAgeyBpbnQgbiA9IERvQXBwZW5kKGl0ZW0pOyBTZXRDbGllbnREYXRhKG4sIGNs
aWVudERhdGEpOyB9DQogICAgdm9pZCBBcHBlbmQoY29uc3Qgd3hTdHJpbmcmIGl0ZW0sIHd4Q2xp
ZW50RGF0YSAqY2xpZW50RGF0YSkNCiAgICAgICAgeyBpbnQgbiA9IERvQXBwZW5kKGl0ZW0pOyBT
ZXRDbGllbnRPYmplY3QobiwgY2xpZW50RGF0YSk7IH0NCg0KDQoNCg0KICAgIHZpcnR1YWwgdm9p
ZCBDbGVhcigpID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgRGVsZXRlKGludCBuKSA9IDA7DQoNCg0K
DQoNCiAgICB2aXJ0dWFsIGludCBHZXRDb3VudCgpIGNvbnN0ID0gMDsNCiAgICB2aXJ0dWFsIHd4
U3RyaW5nIEdldFN0cmluZyhpbnQgbikgY29uc3QgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRT
dHJpbmcoaW50IG4sIGNvbnN0IHd4U3RyaW5nJiBzKSA9IDA7DQogICAgdmlydHVhbCBpbnQgRmlu
ZFN0cmluZyhjb25zdCB3eFN0cmluZyYgcykgY29uc3QgPSAwOw0KDQoNCg0KDQogICAgdmlydHVh
bCB2b2lkIFNlbGVjdChpbnQgbikgPSAwOw0KICAgIHZpcnR1YWwgaW50IEdldFNlbGVjdGlvbigp
IGNvbnN0ID0gMDsNCg0KICAgIHd4U3RyaW5nIEdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0Ow0K
DQoNCg0KDQoNCiAgICB2b2lkIFNldENsaWVudERhdGEoaW50IG4sIHZvaWQqIGNsaWVudERhdGEp
Ow0KICAgIHZvaWQqIEdldENsaWVudERhdGEoaW50IG4pIGNvbnN0Ow0KDQogICAgdm9pZCBTZXRD
bGllbnRPYmplY3QoaW50IG4sIHd4Q2xpZW50RGF0YSogY2xpZW50RGF0YSk7DQogICAgd3hDbGll
bnREYXRhKiBHZXRDbGllbnRPYmplY3QoaW50IG4pIGNvbnN0Ow0KDQogICAgYm9vbCBIYXNDbGll
bnRPYmplY3REYXRhKCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV9jbGllbnREYXRhSXRlbXNU
eXBlID09IENsaWVudERhdGFfT2JqZWN0OyB9DQogICAgYm9vbCBIYXNDbGllbnRVbnR5cGVkRGF0
YSgpIGNvbnN0DQogICAgICAgIHsgcmV0dXJuIG1fY2xpZW50RGF0YUl0ZW1zVHlwZSA9PSBDbGll
bnREYXRhX1ZvaWQ7IH0NCg0KDQoNCiAgICBpbnQgTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gR2V0
Q291bnQoKTsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCBpbnQgRG9BcHBlbmQoY29uc3Qg
d3hTdHJpbmcmIGl0ZW0pID0gMDsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb1NldEl0ZW1DbGllbnRE
YXRhKGludCBuLCB2b2lkKiBjbGllbnREYXRhKSA9IDA7DQogICAgdmlydHVhbCB2b2lkKiBEb0dl
dEl0ZW1DbGllbnREYXRhKGludCBuKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCB2b2lkIERvU2V0
SXRlbUNsaWVudE9iamVjdChpbnQgbiwgd3hDbGllbnREYXRhKiBjbGllbnREYXRhKSA9IDA7DQog
ICAgdmlydHVhbCB3eENsaWVudERhdGEqIERvR2V0SXRlbUNsaWVudE9iamVjdChpbnQgbikgY29u
c3QgPSAwOw0KDQoNCiAgICB3eENsaWVudERhdGFUeXBlIG1fY2xpZW50RGF0YUl0ZW1zVHlwZTsN
Cn07DQojIDI0ICIuLi8uLi9pbmNsdWRlL3d4L2Nob2ljZS5oIiAyDQoNCg0KDQoNCg0KX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4Q2hvaWNlTmFtZVN0cjsN
Cg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eENob2ljZUJhc2Ug
OiBwdWJsaWMgd3hDb250cm9sV2l0aEl0ZW1zDQp7DQpwdWJsaWM6DQoNCg0KDQogICAgdmlydHVh
bCB2b2lkIFNldFNlbGVjdGlvbihpbnQgbikgPSAwOw0KICAgIHZpcnR1YWwgYm9vbCBTZXRTdHJp
bmdTZWxlY3Rpb24oY29uc3Qgd3hTdHJpbmcmIHMpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2Vs
ZWN0KGludCBuKSB7IFNldFNlbGVjdGlvbihuKTsgfQ0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBT
ZXRDb2x1bW5zKGludCA9IDEgKSB7IH0NCiAgICB2aXJ0dWFsIGludCBHZXRDb2x1bW5zKCkgY29u
c3QgeyByZXR1cm4gMSA7IH0NCg0KDQogICAgdm9pZCBDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiBl
dmVudCk7DQoNCn07DQoNCg0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2Nob2lj
ZS5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9jaG9pY2UuaCINCiNwcmFnbWEgaW50
ZXJmYWNlICJjaG9pY2UuaCINCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGlt
cG9ydCkpIHd4Q2hvaWNlIDogcHVibGljIHd4Q2hvaWNlQmFzZQ0Kew0KICAgIHB1YmxpYzogc3Rh
dGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hDaG9pY2U7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmd3hDaG9pY2U6OnNtX2NsYXNzd3hDaG9pY2U7IH0NCg0KcHVi
bGljOg0KDQogICAgd3hDaG9pY2UoKSB7IH0NCiAgICB2aXJ0dWFsIH53eENob2ljZSgpOw0KDQog
ICAgd3hDaG9pY2Uod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICB3eFdpbmRvd0lEIGlk
LA0KICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0K
ICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAg
ICAgICAgaW50IG4gPSAwLCBjb25zdCB3eFN0cmluZyBjaG9pY2VzW10gPSBfX251bGwsDQogICAg
ICAgICAgICAgbG9uZyBzdHlsZSA9IDAsDQogICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3Im
IHZhbGlkYXRvciA9IHd4RGVmYXVsdFZhbGlkYXRvciwNCiAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgbmFtZSA9IHd4Q2hvaWNlTmFtZVN0cikNCiAgICB7DQogICAgICAgIENyZWF0ZShwYXJl
bnQsIGlkLCBwb3MsIHNpemUsIG4sIGNob2ljZXMsIHN0eWxlLCB2YWxpZGF0b3IsIG5hbWUpOw0K
ICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsDQogICAgICAgICAgICAg
ICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3
eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3
eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgIGludCBuID0gMCwgY29uc3Qgd3hTdHJpbmcg
Y2hvaWNlc1tdID0gX19udWxsLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAg
ICAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxp
ZGF0b3IsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eENob2ljZU5h
bWVTdHIpOw0KDQoNCiAgICB2aXJ0dWFsIGludCBEb0FwcGVuZChjb25zdCB3eFN0cmluZyYgaXRl
bSk7DQogICAgdmlydHVhbCB2b2lkIERlbGV0ZShpbnQgbik7DQogICAgdmlydHVhbCB2b2lkIENs
ZWFyKCk7DQoNCiAgICB2aXJ0dWFsIGludCBHZXRDb3VudCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwg
aW50IEdldFNlbGVjdGlvbigpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBTZXRTZWxlY3Rpb24o
aW50IG4pOw0KDQogICAgdmlydHVhbCBpbnQgRmluZFN0cmluZyhjb25zdCB3eFN0cmluZyYgcykg
Y29uc3Q7DQogICAgdmlydHVhbCB3eFN0cmluZyBHZXRTdHJpbmcoaW50IG4pIGNvbnN0Ow0KICAg
IHZpcnR1YWwgdm9pZCBTZXRTdHJpbmcoaW50IG4sIGNvbnN0IHd4U3RyaW5nJiBzKTsNCg0KDQog
ICAgdmlydHVhbCBib29sIE1TV0NvbW1hbmQoV1hVSU5UIHBhcmFtLCBXWFdPUkQgaWQpOw0KICAg
IGxvbmcgTVNXV2luZG93UHJvYyhXWFVJTlQgbk1zZywgV1hXUEFSQU0gd1BhcmFtLCBXWExQQVJB
TSBsUGFyYW0pOw0KICAgIHZpcnR1YWwgV1hIQlJVU0ggT25DdGxDb2xvcihXWEhEQyBwREMsIFdY
SFdORCBwV25kLCBXWFVJTlQgbkN0bENvbG9yLA0KICAgICAgICAgICAgV1hVSU5UIG1lc3NhZ2Us
IFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KcHJvdGVjdGVkOg0KICAgIHZp
cnR1YWwgdm9pZCBEb1NldEl0ZW1DbGllbnREYXRhKCBpbnQgbiwgdm9pZCogY2xpZW50RGF0YSAp
Ow0KICAgIHZpcnR1YWwgdm9pZCogRG9HZXRJdGVtQ2xpZW50RGF0YSggaW50IG4gKSBjb25zdDsN
CiAgICB2aXJ0dWFsIHZvaWQgRG9TZXRJdGVtQ2xpZW50T2JqZWN0KCBpbnQgbiwgd3hDbGllbnRE
YXRhKiBjbGllbnREYXRhICk7DQogICAgdmlydHVhbCB3eENsaWVudERhdGEqIERvR2V0SXRlbUNs
aWVudE9iamVjdCggaW50IG4gKSBjb25zdDsNCg0KDQogICAgdmlydHVhbCB3eFNpemUgRG9HZXRC
ZXN0U2l6ZSgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBEb1NldFNpemUoaW50IHgsIGludCB5
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemVGbGFncyA9ICgweDAwMDF8MHgwMDAyKSk7
DQoNCg0KICAgIHZvaWQgRnJlZSgpOw0KfTsNCiMgNjMgIi4uLy4uL2luY2x1ZGUvd3gvY2hvaWNl
LmgiIDINCiMgNTMgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRl
L3d4L3Njcm9sYmFyLmgiIDENCg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zY3Jv
bGJhci5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zY3JvbGJhci5oIg0KI3ByYWdt
YSBpbnRlcmZhY2UgInNjcm9sYmFyLmgiDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9y
dCkpIGV4dGVybiBjb25zdCBjaGFyKiB3eFNjcm9sbEJhck5hbWVTdHI7DQoNCg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTY3JvbGxCYXI6IHB1YmxpYyB3eENvbnRyb2wNCnsN
CiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4U2Nyb2xsQmFyOyB3eENs
YXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U2Nyb2xsQmFyOjpzbV9j
bGFzc3d4U2Nyb2xsQmFyOyB9DQoNCnB1YmxpYzoNCiAgICB3eFNjcm9sbEJhcigpIHsgbV9wYWdl
U2l6ZSA9IDA7IG1fdmlld1NpemUgPSAwOyBtX29iamVjdFNpemUgPSAwOyB9DQogICAgfnd4U2Ny
b2xsQmFyKCk7DQoNCiAgICB3eFNjcm9sbEJhcih3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lE
IGlkLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24s
DQogICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAg
ICAgICAgbG9uZyBzdHlsZSA9IHd4SE9SSVpPTlRBTCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFs
aWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25z
dCB3eFN0cmluZyYgbmFtZSA9IHd4U2Nyb2xsQmFyTmFtZVN0cikNCiAgICB7DQogICAgICAgIENy
ZWF0ZShwYXJlbnQsIGlkLCBwb3MsIHNpemUsIHN0eWxlLCB2YWxpZGF0b3IsIG5hbWUpOw0KICAg
IH0NCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAg
ICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAg
ICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgbG9u
ZyBzdHlsZSA9IHd4SE9SSVpPTlRBTCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2
YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25zdCB3eFN0cmlu
ZyYgbmFtZSA9IHd4U2Nyb2xsQmFyTmFtZVN0cik7DQoNCiAgICBpbnQgR2V0VGh1bWJQb3NpdGlv
bigpIGNvbnN0IDsNCiAgICBpbnQgR2V0VGh1bWJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
U2l6ZTsgfQ0KICAgIGludCBHZXRQYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NpemU7
IH0NCiAgICBpbnQgR2V0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFNpemU7IH0NCg0K
ICAgIHZpcnR1YWwgdm9pZCBTZXRUaHVtYlBvc2l0aW9uKGludCB2aWV3U3RhcnQpOw0KICAgIHZp
cnR1YWwgdm9pZCBTZXRTY3JvbGxiYXIoaW50IHBvc2l0aW9uLCBpbnQgdGh1bWJTaXplLCBpbnQg
cmFuZ2UsIGludCBwYWdlU2l6ZSwNCiAgICAgICAgICAgIGJvb2wgcmVmcmVzaCA9IDEpOw0KIyA3
MSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvc2Nyb2xiYXIuaCINCiAgICB2b2lkIENvbW1hbmQod3hD
b21tYW5kRXZlbnQmIGV2ZW50KTsNCiAgICB2aXJ0dWFsIFdYSEJSVVNIIE9uQ3RsQ29sb3IoV1hI
REMgcERDLCBXWEhXTkQgcFduZCwgV1hVSU5UIG5DdGxDb2xvciwNCiAgICAgICAgICAgIFdYVUlO
VCBtZXNzYWdlLCBXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQogICAgdmlydHVh
bCBib29sIE1TV09uU2Nyb2xsKGludCBvcmllbnRhdGlvbiwgV1hXT1JEIHdQYXJhbSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV1hXT1JEIHBvcywgV1hIV05EIGNvbnRyb2wpOw0KDQoN
Cg0KDQoNCg0KcHJvdGVjdGVkOg0KICAgIGludCBtX3BhZ2VTaXplOw0KICAgIGludCBtX3ZpZXdT
aXplOw0KICAgIGludCBtX29iamVjdFNpemU7DQoNCiAgICBwcml2YXRlOiBzdGF0aWMgY29uc3Qg
d3hFdmVudFRhYmxlRW50cnkgc21fZXZlbnRUYWJsZUVudHJpZXNbXTtwcm90ZWN0ZWQ6IHN0YXRp
YyBjb25zdCB3eEV2ZW50VGFibGUgc21fZXZlbnRUYWJsZTsgdmlydHVhbCBjb25zdCB3eEV2ZW50
VGFibGUqIEdldEV2ZW50VGFibGUoKSBjb25zdDsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gv
c2Nyb2xiYXIuaCIgMg0KIyA1NCAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4u
L2luY2x1ZGUvd3gvc3RhdHRleHQuaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gv
bXN3L3N0YXR0ZXh0LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3N0YXR0ZXh0Lmgi
DQojcHJhZ21hIGludGVyZmFjZSAic3RhdHRleHQuaCINCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4U3RhdGljVGV4dE5hbWVTdHI7DQoNCmNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RhdGljVGV4dCA6IHB1YmxpYyB3eENv
bnRyb2wNCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hTdGF0aWNUZXh0
OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U3RhdGljVGV4
dDo6c21fY2xhc3N3eFN0YXRpY1RleHQ7IH0NCg0KcHVibGljOg0KICAgIHd4U3RhdGljVGV4dCgp
IHsgfQ0KDQogICAgd3hTdGF0aWNUZXh0KHd4V2luZG93ICpwYXJlbnQsIHd4V2luZG93SUQgaWQs
DQogICAgICAgIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCwNCiAgICAgICAgY29uc3Qgd3hQb2ludCYg
cG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4
RGVmYXVsdFNpemUsDQogICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICBjb25zdCB3eFN0
cmluZyYgbmFtZSA9IHd4U3RhdGljVGV4dE5hbWVTdHIpDQogICAgew0KICAgICAgICBDcmVhdGUo
cGFyZW50LCBpZCwgbGFiZWwsIHBvcywgc2l6ZSwgc3R5bGUsIG5hbWUpOw0KICAgIH0NCg0KICAg
IGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsIHd4V2luZG93SUQgaWQsDQogICAgICAgIGNv
bnN0IHd4U3RyaW5nJiBsYWJlbCwNCiAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZh
dWx0UG9zaXRpb24sDQogICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUs
DQogICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9
IHd4U3RhdGljVGV4dE5hbWVTdHIpOw0KDQoNCiAgICB2b2lkIFNldExhYmVsKGNvbnN0IHd4U3Ry
aW5nJiBsYWJlbCk7DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBBY2NlcHRzRm9jdXMoKSBjb25zdCB7
IHJldHVybiAwOyB9DQoNCg0KICAgIHZpcnR1YWwgbG9uZyBNU1dXaW5kb3dQcm9jKFdYVUlOVCBu
TXNnLCBXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQoNCnByb3RlY3RlZDoNCiAg
ICB2aXJ0dWFsIHd4U2l6ZSBEb0dldEJlc3RTaXplKCkgY29uc3Q7DQp9Ow0KIyA2ICIuLi8uLi9p
bmNsdWRlL3d4L3N0YXR0ZXh0LmgiIDINCiMgNTUgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0K
IyAxICIuLi8uLi9pbmNsdWRlL3d4L3N0YXRibXAuaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2lu
Y2x1ZGUvd3gvbXN3L3N0YXRibXAuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvc3Rh
dGJtcC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInN0YXRibXAuaCINCg0KDQoNCg0KDQoNCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFyKiB3eFN0YXRpY0JpdG1hcE5h
bWVTdHI7DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdGF0aWNCaXRt
YXAgOiBwdWJsaWMgd3hDb250cm9sDQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8g
c21fY2xhc3N3eFN0YXRpY0JpdG1hcDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuICZ3eFN0YXRpY0JpdG1hcDo6c21fY2xhc3N3eFN0YXRpY0JpdG1hcDsgfQ0KDQpw
dWJsaWM6DQogICAgd3hTdGF0aWNCaXRtYXAoKSB7IEluaXQoKTsgfQ0KDQogICAgd3hTdGF0aWNC
aXRtYXAod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICAgICAgICB3eFdpbmRvd0lEIGlk
LA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4R0RJSW1hZ2UmIGxhYmVsLA0KICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAg
ICAgICAgICAgICAgbG9uZyBzdHlsZSA9IDAsDQogICAgICAgICAgICAgICAgICAgY29uc3Qgd3hT
dHJpbmcmIG5hbWUgPSB3eFN0YXRpY0JpdG1hcE5hbWVTdHIpDQogICAgew0KICAgICAgICBDcmVh
dGUocGFyZW50LCBpZCwgbGFiZWwsIHBvcywgc2l6ZSwgc3R5bGUsIG5hbWUpOw0KICAgIH0NCg0K
ICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsDQogICAgICAgICAgICAgICAgd3hXaW5k
b3dJRCBpZCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eEdESUltYWdlJiBsYWJlbCwNCiAgICAg
ICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAg
ICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAg
ICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBu
YW1lID0gd3hTdGF0aWNCaXRtYXBOYW1lU3RyKTsNCg0KICAgIHZpcnR1YWwgfnd4U3RhdGljQml0
bWFwKCkgeyBGcmVlKCk7IH0NCg0KICAgIHZvaWQgU2V0SWNvbihjb25zdCB3eEljb24mIGljb24p
IHsgU2V0SW1hZ2UoJmljb24pOyB9DQogICAgdm9pZCBTZXRCaXRtYXAoY29uc3Qgd3hCaXRtYXAm
IGJpdG1hcCkgeyBTZXRJbWFnZSgmYml0bWFwKTsgfQ0KDQoNCg0KICAgIGNvbnN0IHd4SWNvbiYg
R2V0SWNvbigpIGNvbnN0DQogICAgICAgIHsgaWYgKCAhKG1faXNJY29uKSApIHd4T25Bc3NlcnQo
Ii4uLy4uL2luY2x1ZGUvd3gvbXN3L3N0YXRibXAuaCIsIDYwKTsgcmV0dXJuICood3hJY29uICop
bV9pbWFnZTsgfQ0KICAgIGNvbnN0IHd4Qml0bWFwJiBHZXRCaXRtYXAoKSBjb25zdA0KICAgICAg
ICB7IGlmICggISghbV9pc0ljb24pICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVkZS93eC9tc3cv
c3RhdGJtcC5oIiwgNjIpOyByZXR1cm4gKih3eEJpdG1hcCAqKW1faW1hZ2U7IH0NCg0KDQogICAg
dmlydHVhbCBib29sIEFjY2VwdHNGb2N1cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0NCg0KDQoNCg0K
DQogICAgdmlydHVhbCBsb25nIE1TV1dpbmRvd1Byb2MoV1hVSU5UIG5Nc2csIFdYV1BBUkFNIHdQ
YXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgd3hTaXpl
IERvR2V0QmVzdFNpemUoKSBjb25zdDsNCg0KICAgIHZvaWQgSW5pdCgpIHsgbV9pc0ljb24gPSAx
OyBtX2ltYWdlID0gX19udWxsOyB9DQogICAgdm9pZCBGcmVlKCk7DQoNCg0KICAgIGJvb2wgSW1h
Z2VJc09rKCkgY29uc3Q7DQoNCiAgICB2b2lkIFNldEltYWdlKGNvbnN0IHd4R0RJSW1hZ2UqIGlt
YWdlKTsNCg0KDQogICAgYm9vbCBtX2lzSWNvbjsNCiAgICB3eEdESUltYWdlICptX2ltYWdlOw0K
fTsNCiMgNiAiLi4vLi4vaW5jbHVkZS93eC9zdGF0Ym1wLmgiIDINCiMgNTYgIi4uLy4uL2luY2x1
ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3N0YXRib3guaCIgMQ0KDQoNCg0K
DQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3N0YXRib3guaCIgMQ0KIyAxNiAiLi4vLi4vaW5j
bHVkZS93eC9tc3cvc3RhdGJveC5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInN0YXRib3guaCINCg0K
DQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4U3Rh
dGljQm94TmFtZVN0cjsNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFN0
YXRpY0JveCA6IHB1YmxpYyB3eENvbnRyb2wNCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZv
IHNtX2NsYXNzd3hTdGF0aWNCb3g7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiAmd3hTdGF0aWNCb3g6OnNtX2NsYXNzd3hTdGF0aWNCb3g7IH0NCg0KcHVibGljOg0K
ICAgIHd4U3RhdGljQm94KCkgeyB9DQoNCiAgICB3eFN0YXRpY0JveCh3eFdpbmRvdyAqcGFyZW50
LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCwN
CiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwN
CiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAg
ICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3Ry
aW5nJiBuYW1lID0gd3hTdGF0aWNCb3hOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAgQ3JlYXRlKHBh
cmVudCwgaWQsIGxhYmVsLCBwb3MsIHNpemUsIHN0eWxlLCBuYW1lKTsNCiAgICB9DQoNCiAgICBi
b29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAg
ICAgIGNvbnN0IHd4U3RyaW5nJiBsYWJlbCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50
JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUm
IHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLA0K
ICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hTdGF0aWNCb3hOYW1lU3Ry
KTsNCg0KDQoNCg0KICAgIHZpcnR1YWwgbG9uZyBNU1dXaW5kb3dQcm9jKFdYVUlOVCBuTXNnLCBX
WFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBB
Y2NlcHRzRm9jdXMoKSBjb25zdCB7IHJldHVybiAwOyB9DQoNCnByb3RlY3RlZDoNCiAgICB2aXJ0
dWFsIHd4U2l6ZSBEb0dldEJlc3RTaXplKCkgY29uc3Q7DQp9Ow0KIyA2ICIuLi8uLi9pbmNsdWRl
L3d4L3N0YXRib3guaCIgMg0KIyA1NyAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4u
Ly4uL2luY2x1ZGUvd3gvbGlzdGJveC5oIiAxDQojIDIwICIuLi8uLi9pbmNsdWRlL3d4L2xpc3Ri
b3guaCINCiNwcmFnbWEgaW50ZXJmYWNlICJsaXN0Ym94YmFzZS5oIg0KIyAzMCAiLi4vLi4vaW5j
bHVkZS93eC9saXN0Ym94LmgiDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eEFy
cmF5SW50Ow0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hBcnJheVN0cmluZzsN
Cg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciog
d3hMaXN0Qm94TmFtZVN0cjsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBv
cnQpKSB3eExpc3RCb3hCYXNlIDogcHVibGljIHd4Q29udHJvbFdpdGhJdGVtcw0Kew0KcHVibGlj
Og0KDQoNCg0KICAgIHZvaWQgSW5zZXJ0KGNvbnN0IHd4U3RyaW5nJiBpdGVtLCBpbnQgcG9zKQ0K
ICAgICAgICB7IERvSW5zZXJ0KGl0ZW0sIHBvcyk7IH0NCiAgICB2b2lkIEluc2VydChjb25zdCB3
eFN0cmluZyYgaXRlbSwgaW50IHBvcywgdm9pZCAqY2xpZW50RGF0YSkNCiAgICAgICAgeyBEb0lu
c2VydChpdGVtLCBwb3MpOyBTZXRDbGllbnREYXRhKHBvcywgY2xpZW50RGF0YSk7IH0NCiAgICB2
b2lkIEluc2VydChjb25zdCB3eFN0cmluZyYgaXRlbSwgaW50IHBvcywgd3hDbGllbnREYXRhICpj
bGllbnREYXRhKQ0KICAgICAgICB7IERvSW5zZXJ0KGl0ZW0sIHBvcyk7IFNldENsaWVudE9iamVj
dChwb3MsIGNsaWVudERhdGEpOyB9DQoNCiAgICB2b2lkIEluc2VydEl0ZW1zKGludCBuSXRlbXMs
IGNvbnN0IHd4U3RyaW5nICppdGVtcywgaW50IHBvcyk7DQogICAgdm9pZCBJbnNlcnRJdGVtcyhj
b25zdCB3eEFycmF5U3RyaW5nJiBpdGVtcywgaW50IHBvcykNCiAgICAgICAgeyBEb0luc2VydEl0
ZW1zKGl0ZW1zLCBwb3MpOyB9DQoNCiAgICB2b2lkIFNldChpbnQgbiwgY29uc3Qgd3hTdHJpbmcq
IGl0ZW1zLCB2b2lkICoqY2xpZW50RGF0YSA9IF9fbnVsbCk7DQogICAgdm9pZCBTZXQoY29uc3Qg
d3hBcnJheVN0cmluZyYgaXRlbXMsIHZvaWQgKipjbGllbnREYXRhID0gX19udWxsKQ0KICAgICAg
ICB7IERvU2V0SXRlbXMoaXRlbXMsIGNsaWVudERhdGEpOyB9DQoNCg0KICAgIHZpcnR1YWwgYm9v
bCBJc1NlbGVjdGVkKGludCBuKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCB2b2lkIFNldFNlbGVj
dGlvbihpbnQgbiwgYm9vbCBzZWxlY3QgPSAxKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFNlbGVj
dChpbnQgbikgeyBTZXRTZWxlY3Rpb24obiwgMSk7IH0NCiAgICB2b2lkIERlc2VsZWN0KGludCBu
KSB7IFNldFNlbGVjdGlvbihuLCAwKTsgfQ0KDQogICAgdmlydHVhbCBib29sIFNldFN0cmluZ1Nl
bGVjdGlvbihjb25zdCB3eFN0cmluZyYgcywgYm9vbCBzZWxlY3QgPSAxKTsNCg0KDQoNCiAgICB2
aXJ0dWFsIGludCBHZXRTZWxlY3Rpb25zKHd4QXJyYXlJbnQmIGFTZWxlY3Rpb25zKSBjb25zdCA9
IDA7DQoNCg0KDQogICAgdm9pZCBTZXRGaXJzdEl0ZW0oaW50IG4pIHsgRG9TZXRGaXJzdEl0ZW0o
bik7IH0NCiAgICB2b2lkIFNldEZpcnN0SXRlbShjb25zdCB3eFN0cmluZyYgcyk7DQoNCg0KDQog
ICAgdm9pZCBDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7DQoNCg0KDQogICAgYm9vbCBT
ZWxlY3RlZChpbnQgbikgY29uc3QgeyByZXR1cm4gSXNTZWxlY3RlZChuKTsgfQ0KDQpwcm90ZWN0
ZWQ6DQoNCg0KICAgIHZvaWQgRG9JbnNlcnQoY29uc3Qgd3hTdHJpbmcmIGl0ZW0sIGludCBwb3Mp
DQogICAgICAgIHsgSW5zZXJ0SXRlbXMoMSwgJml0ZW0sIHBvcyk7IH0NCg0KDQogICAgdmlydHVh
bCB2b2lkIERvSW5zZXJ0SXRlbXMoY29uc3Qgd3hBcnJheVN0cmluZyYgaXRlbXMsIGludCBwb3Mp
ID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgRG9TZXRJdGVtcyhjb25zdCB3eEFycmF5U3RyaW5nJiBp
dGVtcywgdm9pZCAqKmNsaWVudERhdGEpID0gMDsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb1NldEZp
cnN0SXRlbShpbnQgbikgPSAwOw0KfTsNCg0KDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93
eC9tc3cvbGlzdGJveC5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9saXN0Ym94Lmgi
DQojcHJhZ21hIGludGVyZmFjZSAibGlzdGJveC5oIg0KDQoNCg0KDQoNCg0KDQogIGNsYXNzIF9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4T3duZXJEcmF3bjsNCg0KDQoNCg0KICB0eXBlZGVm
IHd4T3duZXJEcmF3biAqIF9Bd3hMaXN0Qm94SXRlbXNBcnJheTsgdHlwZWRlZiBpbnQgKCAqQ01Q
RlVOQ19Bd3hMaXN0Qm94SXRlbXNBcnJheSkoX0F3eExpc3RCb3hJdGVtc0FycmF5ICpwSXRlbTEs
IF9Bd3hMaXN0Qm94SXRlbXNBcnJheSAqcEl0ZW0yKTsgY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hMaXN0Qm94SXRlbXNBcnJheSA6IHB1YmxpYyB3eEJhc2VBcnJheSB7IHB1Ymxp
Yzogd3hMaXN0Qm94SXRlbXNBcnJheSgpIHsgc2l6ZV90IHR5cGUgPSBzaXplb2YoX0F3eExpc3RC
b3hJdGVtc0FycmF5KTsgc2l6ZV90IHNpemVsb25nID0gc2l6ZW9mKGxvbmcpOyBpZiAoIHR5cGUg
PiBzaXplbG9uZyApIHsgaWYgKCAhKHd4RmFsc2UpICkgd3hPbkFzc2VydCgiLi4vLi4vaW5jbHVk
ZS93eC9tc3cvbGlzdGJveC5oIiwgMjksICJpbGxlZ2FsIHVzZSBvZiBERUZJTkVfQVJSQVkiKTsg
fSB9IHd4TGlzdEJveEl0ZW1zQXJyYXkmIG9wZXJhdG9yPShjb25zdCB3eExpc3RCb3hJdGVtc0Fy
cmF5JiBzcmMpIHsgd3hCYXNlQXJyYXkqIHRlbXAgPSAod3hCYXNlQXJyYXkqKSB0aGlzOyAoKnRl
bXApID0gKChjb25zdCB3eEJhc2VBcnJheSYpc3JjKTsgcmV0dXJuICp0aGlzOyB9IF9Bd3hMaXN0
Qm94SXRlbXNBcnJheSYgb3BlcmF0b3JbXShzaXplX3QgdWlJbmRleCkgY29uc3QgeyByZXR1cm4g
KF9Bd3hMaXN0Qm94SXRlbXNBcnJheSYpKHd4QmFzZUFycmF5OjpJdGVtKHVpSW5kZXgpKTsgfSBf
QXd4TGlzdEJveEl0ZW1zQXJyYXkmIEl0ZW0oc2l6ZV90IHVpSW5kZXgpIGNvbnN0IHsgcmV0dXJu
IChfQXd4TGlzdEJveEl0ZW1zQXJyYXkmKSh3eEJhc2VBcnJheTo6SXRlbSh1aUluZGV4KSk7IH0g
X0F3eExpc3RCb3hJdGVtc0FycmF5JiBMYXN0KCkgY29uc3QgeyByZXR1cm4gKF9Bd3hMaXN0Qm94
SXRlbXNBcnJheSYpKHd4QmFzZUFycmF5OjpJdGVtKENvdW50KCkgLSAxKSk7IH0gaW50IEluZGV4
KF9Bd3hMaXN0Qm94SXRlbXNBcnJheSBJdGVtLCBib29sIGJGcm9tRW5kID0gMCkgY29uc3QgeyBy
ZXR1cm4gd3hCYXNlQXJyYXk6OkluZGV4KChsb25nKUl0ZW0sIGJGcm9tRW5kKTsgfSB2b2lkIEFk
ZChfQXd4TGlzdEJveEl0ZW1zQXJyYXkgSXRlbSkgeyB3eEJhc2VBcnJheTo6QWRkKChsb25nKUl0
ZW0pOyB9IHZvaWQgSW5zZXJ0KF9Bd3hMaXN0Qm94SXRlbXNBcnJheSBJdGVtLCBzaXplX3QgdWlJ
bmRleCkgeyB3eEJhc2VBcnJheTo6SW5zZXJ0KChsb25nKUl0ZW0sIHVpSW5kZXgpIDsgfSB2b2lk
IFJlbW92ZShzaXplX3QgdWlJbmRleCkgeyBSZW1vdmVBdCh1aUluZGV4KTsgfSB2b2lkIFJlbW92
ZUF0KHNpemVfdCB1aUluZGV4KSB7IHd4QmFzZUFycmF5OjpSZW1vdmVBdCh1aUluZGV4KTsgfSB2
b2lkIFJlbW92ZShfQXd4TGlzdEJveEl0ZW1zQXJyYXkgSXRlbSkgeyBpbnQgaUluZGV4ID0gSW5k
ZXgoSXRlbSk7IGlmICghKGlJbmRleCAhPSAoLTEpKSkge2lmICggISh3eEZhbHNlKSApIHd4T25B
c3NlcnQoIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2xpc3Rib3guaCIsIDI5LCAicmVtb3ZpbmcgaW5l
eGlzdGluZyBlbGVtZW50IGluIHd4QXJyYXk6OlJlbW92ZSIpOyByZXR1cm47IH07IHd4QmFzZUFy
cmF5OjpSZW1vdmVBdCgoc2l6ZV90KWlJbmRleCk7IH0gdm9pZCBTb3J0KENNUEZVTkNfQXd4TGlz
dEJveEl0ZW1zQXJyYXkgZkNtcCkgeyB3eEJhc2VBcnJheTo6U29ydCgoQ01QRlVOQylmQ21wKTsg
fSB9Ow0KDQoNCg0KY2xhc3Mgd3hBcnJheUludDsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eExpc3RCb3ggOiBwdWJsaWMgd3hMaXN0Qm94QmFzZQ0Kew0KcHVi
bGljOg0KDQogICAgd3hMaXN0Qm94KCk7DQogICAgd3hMaXN0Qm94KHd4V2luZG93ICpwYXJlbnQs
IHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1
bHRQb3NpdGlvbiwNCiAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNp
emUsDQogICAgICAgICAgICBpbnQgbiA9IDAsIGNvbnN0IHd4U3RyaW5nIGNob2ljZXNbXSA9IF9f
bnVsbCwNCiAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAgICAgICAgY29uc3Qgd3hW
YWxpZGF0b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVsdFZhbGlkYXRvciwNCiAgICAgICAgICAgIGNv
bnN0IHd4U3RyaW5nJiBuYW1lID0gd3hMaXN0Qm94TmFtZVN0cikNCiAgICB7DQogICAgICAgIENy
ZWF0ZShwYXJlbnQsIGlkLCBwb3MsIHNpemUsIG4sIGNob2ljZXMsIHN0eWxlLCB2YWxpZGF0b3Is
IG5hbWUpOw0KICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsIHd4V2lu
ZG93SUQgaWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0
UG9zaXRpb24sDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0
U2l6ZSwNCiAgICAgICAgICAgICAgICBpbnQgbiA9IDAsIGNvbnN0IHd4U3RyaW5nIGNob2ljZXNb
XSA9IF9fbnVsbCwNCiAgICAgICAgICAgICAgICBsb25nIHN0eWxlID0gMCwNCiAgICAgICAgICAg
ICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsaWRhdG9yID0gd3hEZWZhdWx0VmFsaWRhdG9yLA0K
ICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hMaXN0Qm94TmFtZVN0cik7
DQoNCiAgICB2aXJ0dWFsIH53eExpc3RCb3goKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIENsZWFy
KCk7DQogICAgdmlydHVhbCB2b2lkIERlbGV0ZShpbnQgbik7DQoNCiAgICB2aXJ0dWFsIGludCBH
ZXRDb3VudCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgd3hTdHJpbmcgR2V0U3RyaW5nKGludCBuKSBj
b25zdDsNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U3RyaW5nKGludCBuLCBjb25zdCB3eFN0cmluZyYg
cyk7DQogICAgdmlydHVhbCBpbnQgRmluZFN0cmluZyhjb25zdCB3eFN0cmluZyYgcykgY29uc3Q7
DQoNCiAgICB2aXJ0dWFsIGJvb2wgSXNTZWxlY3RlZChpbnQgbikgY29uc3Q7DQogICAgdmlydHVh
bCB2b2lkIFNldFNlbGVjdGlvbihpbnQgbiwgYm9vbCBzZWxlY3QgPSAxKTsNCiAgICB2aXJ0dWFs
IGludCBHZXRTZWxlY3Rpb24oKSBjb25zdDsNCiAgICB2aXJ0dWFsIGludCBHZXRTZWxlY3Rpb25z
KHd4QXJyYXlJbnQmIGFTZWxlY3Rpb25zKSBjb25zdDsNCg0KICAgIHZpcnR1YWwgaW50IERvQXBw
ZW5kKGNvbnN0IHd4U3RyaW5nJiBpdGVtKTsNCiAgICB2aXJ0dWFsIHZvaWQgRG9JbnNlcnRJdGVt
cyhjb25zdCB3eEFycmF5U3RyaW5nJiBpdGVtcywgaW50IHBvcyk7DQogICAgdmlydHVhbCB2b2lk
IERvU2V0SXRlbXMoY29uc3Qgd3hBcnJheVN0cmluZyYgaXRlbXMsIHZvaWQgKipjbGllbnREYXRh
KTsNCg0KICAgIHZpcnR1YWwgdm9pZCBEb1NldEZpcnN0SXRlbShpbnQgbik7DQoNCiAgICB2aXJ0
dWFsIHZvaWQgRG9TZXRJdGVtQ2xpZW50RGF0YShpbnQgbiwgdm9pZCogY2xpZW50RGF0YSk7DQog
ICAgdmlydHVhbCB2b2lkKiBEb0dldEl0ZW1DbGllbnREYXRhKGludCBuKSBjb25zdDsNCiAgICB2
aXJ0dWFsIHZvaWQgRG9TZXRJdGVtQ2xpZW50T2JqZWN0KGludCBuLCB3eENsaWVudERhdGEqIGNs
aWVudERhdGEpOw0KICAgIHZpcnR1YWwgd3hDbGllbnREYXRhKiBEb0dldEl0ZW1DbGllbnRPYmpl
Y3QoaW50IG4pIGNvbnN0Ow0KDQoNCg0KICAgIGJvb2wgTVNXT25NZWFzdXJlKFdYTUVBU1VSRUlU
RU1TVFJVQ1QgKml0ZW0pOw0KICAgIGJvb2wgTVNXT25EcmF3KFdYRFJBV0lURU1TVFJVQ1QgKml0
ZW0pOw0KDQoNCiAgICB2aXJ0dWFsIHd4T3duZXJEcmF3biAqQ3JlYXRlSXRlbShzaXplX3Qgbik7
DQoNCg0KICAgIHd4T3duZXJEcmF3biAqR2V0SXRlbShzaXplX3QgbikgY29uc3QgeyByZXR1cm4g
bV9hSXRlbXNbbl07IH0NCg0KDQogICAgaW50IEdldEl0ZW1JbmRleCh3eE93bmVyRHJhd24gKml0
ZW0pIGNvbnN0IHsgcmV0dXJuIG1fYUl0ZW1zLkluZGV4KGl0ZW0pOyB9DQoNCg0KDQoNCg0KICAg
IHZpcnR1YWwgdm9pZCBTZXRIb3Jpem9udGFsRXh0ZW50KGNvbnN0IHd4U3RyaW5nJiBzID0gd3hF
bXB0eVN0cmluZyk7DQoNCg0KICAgIGJvb2wgTVNXQ29tbWFuZChXWFVJTlQgcGFyYW0sIFdYV09S
RCBpZCk7DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0dXBDb2xvdXJzKCk7DQoNCnByb3RlY3RlZDoN
Cg0KICAgIGJvb2wgSGFzTXVsdGlwbGVTZWxlY3Rpb24oKSBjb25zdDsNCg0KDQogICAgdm9pZCBG
cmVlKCk7DQoNCiAgICBpbnQgbV9ub0l0ZW1zOw0KICAgIGludCBtX3NlbGVjdGVkOw0KDQogICAg
dmlydHVhbCB3eFNpemUgRG9HZXRCZXN0U2l6ZSgpIGNvbnN0Ow0KDQoNCg0KICAgIHd4TGlzdEJv
eEl0ZW1zQXJyYXkgbV9hSXRlbXM7DQoNCg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3
eENsYXNzSW5mbyBzbV9jbGFzc3d4TGlzdEJveDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygp
IGNvbnN0IHsgcmV0dXJuICZ3eExpc3RCb3g6OnNtX2NsYXNzd3hMaXN0Qm94OyB9DQp9Ow0KIyAx
MDggIi4uLy4uL2luY2x1ZGUvd3gvbGlzdGJveC5oIiAyDQojIDU4ICIuLi8uLi9pbmNsdWRlL3d4
L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9yYWRpb2JveC5oIiAxDQoNCg0KDQoNCiMg
MSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvcmFkaW9ib3guaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVk
ZS93eC9tc3cvcmFkaW9ib3guaCINCiNwcmFnbWEgaW50ZXJmYWNlICJyYWRpb2JveC5oIg0KDQoN
Cg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hSYWRp
b0JveE5hbWVTdHI7DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Qml0bWFw
Ow0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFJhZGlvQm94IDogcHVibGlj
IHd4Q29udHJvbA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hS
YWRpb0JveDsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFJh
ZGlvQm94OjpzbV9jbGFzc3d4UmFkaW9Cb3g7IH0NCg0KcHVibGljOg0KICAgIHd4UmFkaW9Cb3go
KTsNCg0KICAgIHd4UmFkaW9Cb3god3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwgY29u
c3Qgd3hTdHJpbmcmIHRpdGxlLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hE
ZWZhdWx0UG9zaXRpb24sIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAg
ICAgICAgICBpbnQgbiA9IDAsIGNvbnN0IHd4U3RyaW5nIGNob2ljZXNbXSA9IF9fbnVsbCwNCiAg
ICAgICAgICAgIGludCBtYWpvckRpbSA9IDAsIGxvbmcgc3R5bGUgPSB3eEhPUklaT05UQUwsDQog
ICAgICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsID0gd3hEZWZhdWx0VmFsaWRhdG9yLCBj
b25zdCB3eFN0cmluZyYgbmFtZSA9IHd4UmFkaW9Cb3hOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAg
Q3JlYXRlKHBhcmVudCwgaWQsIHRpdGxlLCBwb3MsIHNpemUsIG4sIGNob2ljZXMsIG1ham9yRGlt
LCBzdHlsZSwgdmFsLCBuYW1lKTsNCiAgICB9DQoNCiAgICB+d3hSYWRpb0JveCgpOw0KDQogICAg
Ym9vbCBDcmVhdGUod3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwgY29uc3Qgd3hTdHJp
bmcmIHRpdGxlLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9z
aXRpb24sIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICBp
bnQgbiA9IDAsIGNvbnN0IHd4U3RyaW5nIGNob2ljZXNbXSA9IF9fbnVsbCwNCiAgICAgICAgICAg
IGludCBtYWpvckRpbSA9IDAsIGxvbmcgc3R5bGUgPSB3eEhPUklaT05UQUwsDQogICAgICAgICAg
ICBjb25zdCB3eFZhbGlkYXRvciYgdmFsID0gd3hEZWZhdWx0VmFsaWRhdG9yLCBjb25zdCB3eFN0
cmluZyYgbmFtZSA9IHd4UmFkaW9Cb3hOYW1lU3RyKTsNCg0KICAgIHZpcnR1YWwgYm9vbCBNU1dD
b21tYW5kKFdYVUlOVCBwYXJhbSwgV1hXT1JEIGlkKTsNCg0KICAgIGludCBGaW5kU3RyaW5nKGNv
bnN0IHd4U3RyaW5nJiBzKSBjb25zdDsNCiAgICB2b2lkIFNldFNlbGVjdGlvbihpbnQgTik7DQog
ICAgaW50IEdldFNlbGVjdGlvbigpIGNvbnN0Ow0KICAgIHd4U3RyaW5nIEdldFN0cmluZyhpbnQg
TikgY29uc3Q7DQoNCiAgICB2b2lkIEdldFNpemUoaW50ICp4LCBpbnQgKnkpIGNvbnN0Ow0KICAg
IHZvaWQgR2V0UG9zaXRpb24oaW50ICp4LCBpbnQgKnkpIGNvbnN0Ow0KDQogICAgdm9pZCBTZXRM
YWJlbChpbnQgaXRlbSwgY29uc3Qgd3hTdHJpbmcmIGxhYmVsKTsNCiAgICB2b2lkIFNldExhYmVs
KGludCBpdGVtLCB3eEJpdG1hcCAqYml0bWFwKTsNCiAgICB3eFN0cmluZyBHZXRMYWJlbChpbnQg
aXRlbSkgY29uc3Q7DQogICAgYm9vbCBTaG93KGJvb2wgc2hvdyk7DQogICAgdm9pZCBTZXRGb2N1
cygpOw0KICAgIGJvb2wgRW5hYmxlKGJvb2wgZW5hYmxlKTsNCiAgICB2b2lkIEVuYWJsZShpbnQg
aXRlbSwgYm9vbCBlbmFibGUpOw0KICAgIHZvaWQgU2hvdyhpbnQgaXRlbSwgYm9vbCBzaG93KTsN
CiAgICB2b2lkIFNldExhYmVsRm9udChjb25zdCB3eEZvbnQmICkge307DQogICAgdm9pZCBTZXRC
dXR0b25Gb250KGNvbnN0IHd4Rm9udCYgZm9udCkgeyBTZXRGb250KGZvbnQpOyB9DQoNCiAgICB2
aXJ0dWFsIHd4U3RyaW5nIEdldFN0cmluZ1NlbGVjdGlvbigpIGNvbnN0Ow0KICAgIHZpcnR1YWwg
Ym9vbCBTZXRTdHJpbmdTZWxlY3Rpb24oY29uc3Qgd3hTdHJpbmcmIHMpOw0KICAgIHZpcnR1YWwg
aW50IE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm9JdGVtczsgfTsNCiAgICB2b2lkIENvbW1h
bmQod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsNCg0KICAgIGludCBHZXROdW1iZXJPZlJvd3NPckNv
bHMoKSBjb25zdCB7IHJldHVybiBtX25vUm93c09yQ29sczsgfQ0KICAgIHZvaWQgU2V0TnVtYmVy
T2ZSb3dzT3JDb2xzKGludCBuKSB7IG1fbm9Sb3dzT3JDb2xzID0gbjsgfQ0KDQoNCg0KDQogICAg
dmlydHVhbCBib29sIFNldEZvbnQoY29uc3Qgd3hGb250JiBmb250KTsNCg0KICAgIGxvbmcgTVNX
V2luZG93UHJvYyhXWFVJTlQgbk1zZywgV1hXUEFSQU0gd1BhcmFtLCBXWExQQVJBTSBsUGFyYW0p
Ow0KICAgIHZpcnR1YWwgV1hIQlJVU0ggT25DdGxDb2xvcihXWEhEQyBwREMsIFdYSFdORCBwV25k
LCBXWFVJTlQgbkN0bENvbG9yLA0KICAgICAgICAgICAgV1hVSU5UIG1lc3NhZ2UsIFdYV1BBUkFN
IHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCiAgICBXWEhXTkQgKkdldFJhZGlvQnV0dG9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaW9CdXR0b25zOyB9DQogICAgYm9vbCBDb250YWluc0hXTkQo
V1hIV05EIGhXbmQpIGNvbnN0Ow0KICAgIHZvaWQgU2VuZE5vdGlmaWNhdGlvbkV2ZW50KCk7DQoN
Cg0KICAgIGludCBHZXROdW1WZXIoKSBjb25zdDsNCiAgICBpbnQgR2V0TnVtSG9yKCkgY29uc3Q7
DQojIDEwMiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvcmFkaW9ib3guaCINCnByb3RlY3RlZDoNCg0K
ICAgIHZvaWQgU3ViY2xhc3NSYWRpb0J1dHRvbihXWEhXTkQgaFduZEJ0bik7DQoNCg0KICAgIHd4
U2l6ZSBHZXRNYXhCdXR0b25TaXplKCkgY29uc3Q7DQoNCg0KICAgIHd4U2l6ZSBHZXRUb3RhbEJ1
dHRvblNpemUoY29uc3Qgd3hTaXplJiBzaXplQnRuKSBjb25zdDsNCg0KICAgIFdYSFdORCAqIG1f
cmFkaW9CdXR0b25zOw0KICAgIGludCBtX21ham9yRGltOw0KICAgIGludCAqIG1fcmFkaW9XaWR0
aDsNCiAgICBpbnQgKiBtX3JhZGlvSGVpZ2h0Ow0KDQogICAgaW50IG1fbm9JdGVtczsNCiAgICBp
bnQgbV9ub1Jvd3NPckNvbHM7DQogICAgaW50IG1fc2VsZWN0ZWRCdXR0b247DQoNCiAgICB2aXJ0
dWFsIHZvaWQgRG9TZXRTaXplKGludCB4LCBpbnQgeSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzaXplRmxhZ3MgPSAoMHgwMDAxfDB4MDAwMikpOw0KICAgIHZpcnR1YWwgd3hTaXplIERvR2V0
QmVzdFNpemUoKSBjb25zdDsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvcmFkaW9ib3guaCIg
Mg0KIyA1OSAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gv
cmFkaW9idXQuaCIgMQ0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3JhZGlvYnV0
LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3JhZGlvYnV0LmgiDQojcHJhZ21hIGlu
dGVyZmFjZSAicmFkaW9idXQuaCINCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
ZXh0ZXJuIGNvbnN0IGNoYXIqIHd4UmFkaW9CdXR0b25OYW1lU3RyOw0KDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSB3eFJhZGlvQnV0dG9uOiBwdWJsaWMgd3hDb250cm9sDQp7DQog
IHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hSYWRpb0J1dHRvbjsgd3hDbGFz
c0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFJhZGlvQnV0dG9uOjpzbV9j
bGFzc3d4UmFkaW9CdXR0b247IH0NCiBwcm90ZWN0ZWQ6DQogcHVibGljOg0KICBpbmxpbmUgd3hS
YWRpb0J1dHRvbih2b2lkKSB7fQ0KICBpbmxpbmUgd3hSYWRpb0J1dHRvbih3eFdpbmRvdyAqcGFy
ZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbGFiZWwsDQog
ICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAg
ICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLCBsb25nIHN0eWxlID0gMCwN
CiAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVsdFZhbGlk
YXRvciwNCiAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFJhZGlvQnV0dG9uTmFt
ZVN0cikNCiAgew0KICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIGxhYmVsLCBwb3MsIHNpemUsIHN0
eWxlLCB2YWxpZGF0b3IsIG5hbWUpOw0KICB9DQoNCiAgYm9vbCBDcmVhdGUod3hXaW5kb3cgKnBh
cmVudCwgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGxhYmVsLA0K
ICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAg
ICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwgbG9uZyBzdHlsZSA9IDAs
DQogICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxp
ZGF0b3IsDQogICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hSYWRpb0J1dHRvbk5h
bWVTdHIpOw0KDQogIHZpcnR1YWwgdm9pZCBTZXRMYWJlbChjb25zdCB3eFN0cmluZyYgbGFiZWwp
Ow0KICB2aXJ0dWFsIHZvaWQgU2V0VmFsdWUoYm9vbCB2YWwpOw0KICB2aXJ0dWFsIGJvb2wgR2V0
VmFsdWUodm9pZCkgY29uc3QgOw0KDQogIGJvb2wgTVNXQ29tbWFuZChXWFVJTlQgcGFyYW0sIFdY
V09SRCBpZCk7DQogIHZpcnR1YWwgV1hIQlJVU0ggT25DdGxDb2xvcihXWEhEQyBwREMsIFdYSFdO
RCBwV25kLCBXWFVJTlQgbkN0bENvbG9yLA0KICAgICAgICAgICAgV1hVSU5UIG1lc3NhZ2UsIFdY
V1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KICB2b2lkIENvbW1hbmQod3hDb21t
YW5kRXZlbnQmIGV2ZW50KTsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvcmFkaW9idXQuaCIg
Mg0KIyA2MCAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gv
dGV4dGN0cmwuaCIgMQ0KIyAxOSAiLi4vLi4vaW5jbHVkZS93eC90ZXh0Y3RybC5oIg0KI3ByYWdt
YSBpbnRlcmZhY2UgInRleHRjdHJsYmFzZS5oIg0KIyA0MiAiLi4vLi4vaW5jbHVkZS93eC90ZXh0
Y3RybC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hUZXh0Q3RybDsNCg0K
DQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hU
ZXh0Q3RybE5hbWVTdHI7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3Qg
Y2hhciogd3hFbXB0eVN0cmluZzsNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRs
bGltcG9ydCkpIHd4VGV4dEN0cmxCYXNlIDogcHVibGljIHd4Q29udHJvbA0KDQoNCg0KDQp7DQpw
dWJsaWM6DQoNCg0KDQogICAgd3hUZXh0Q3RybEJhc2UoKTsNCiAgICB+d3hUZXh0Q3RybEJhc2Uo
KTsNCg0KDQoNCg0KICAgIHZpcnR1YWwgd3hTdHJpbmcgR2V0VmFsdWUoKSBjb25zdCA9IDA7DQog
ICAgdmlydHVhbCB2b2lkIFNldFZhbHVlKGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSkgPSAwOw0KDQog
ICAgdmlydHVhbCBpbnQgR2V0TGluZUxlbmd0aChsb25nIGxpbmVObykgY29uc3QgPSAwOw0KICAg
IHZpcnR1YWwgd3hTdHJpbmcgR2V0TGluZVRleHQobG9uZyBsaW5lTm8pIGNvbnN0ID0gMDsNCiAg
ICB2aXJ0dWFsIGludCBHZXROdW1iZXJPZkxpbmVzKCkgY29uc3QgPSAwOw0KDQogICAgdmlydHVh
bCBib29sIElzTW9kaWZpZWQoKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCBib29sIElzRWRpdGFi
bGUoKSBjb25zdCA9IDA7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBHZXRTZWxlY3Rpb24obG9uZyog
ZnJvbSwgbG9uZyogdG8pIGNvbnN0ID0gMDsNCg0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIENs
ZWFyKCkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCBSZXBsYWNlKGxvbmcgZnJvbSwgbG9uZyB0bywg
Y29uc3Qgd3hTdHJpbmcmIHZhbHVlKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFJlbW92ZShsb25n
IGZyb20sIGxvbmcgdG8pID0gMDsNCg0KDQogICAgdmlydHVhbCBib29sIExvYWRGaWxlKGNvbnN0
IHd4U3RyaW5nJiBmaWxlKTsNCiAgICB2aXJ0dWFsIGJvb2wgU2F2ZUZpbGUoY29uc3Qgd3hTdHJp
bmcmIGZpbGUgPSB3eEVtcHR5U3RyaW5nKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIERpc2NhcmRF
ZGl0cygpID0gMDsNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgV3JpdGVUZXh0KGNvbnN0IHd4U3Ry
aW5nJiB0ZXh0KSA9IDA7DQogICAgdmlydHVhbCB2b2lkIEFwcGVuZFRleHQoY29uc3Qgd3hTdHJp
bmcmIHRleHQpID0gMDsNCg0KDQoNCg0KICAgIHZpcnR1YWwgbG9uZyBYWVRvUG9zaXRpb24obG9u
ZyB4LCBsb25nIHkpIGNvbnN0ID0gMDsNCiAgICB2aXJ0dWFsIGJvb2wgUG9zaXRpb25Ub1hZKGxv
bmcgcG9zLCBsb25nICp4LCBsb25nICp5KSBjb25zdCA9IDA7DQoNCiAgICB2aXJ0dWFsIHZvaWQg
U2hvd1Bvc2l0aW9uKGxvbmcgcG9zKSA9IDA7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBDb3B5KCkg
PSAwOw0KICAgIHZpcnR1YWwgdm9pZCBDdXQoKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFBhc3Rl
KCkgPSAwOw0KDQogICAgdmlydHVhbCBib29sIENhbkNvcHkoKSBjb25zdCA9IDA7DQogICAgdmly
dHVhbCBib29sIENhbkN1dCgpIGNvbnN0ID0gMDsNCiAgICB2aXJ0dWFsIGJvb2wgQ2FuUGFzdGUo
KSBjb25zdCA9IDA7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBVbmRvKCkgPSAwOw0KICAgIHZpcnR1
YWwgdm9pZCBSZWRvKCkgPSAwOw0KDQogICAgdmlydHVhbCBib29sIENhblVuZG8oKSBjb25zdCA9
IDA7DQogICAgdmlydHVhbCBib29sIENhblJlZG8oKSBjb25zdCA9IDA7DQoNCg0KICAgIHZpcnR1
YWwgdm9pZCBTZXRJbnNlcnRpb25Qb2ludChsb25nIHBvcykgPSAwOw0KICAgIHZpcnR1YWwgdm9p
ZCBTZXRJbnNlcnRpb25Qb2ludEVuZCgpID0gMDsNCiAgICB2aXJ0dWFsIGxvbmcgR2V0SW5zZXJ0
aW9uUG9pbnQoKSBjb25zdCA9IDA7DQogICAgdmlydHVhbCBsb25nIEdldExhc3RQb3NpdGlvbigp
IGNvbnN0ID0gMDsNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRTZWxlY3Rpb24obG9uZyBmcm9tLCBs
b25nIHRvKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIFNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUp
ID0gMDsNCiMgMTQ3ICIuLi8uLi9pbmNsdWRlL3d4L3RleHRjdHJsLmgiDQogICAgd3hUZXh0Q3Ry
bCYgb3BlcmF0b3I8PChjb25zdCB3eFN0cmluZyYgcyk7DQogICAgd3hUZXh0Q3RybCYgb3BlcmF0
b3I8PChpbnQgaSk7DQogICAgd3hUZXh0Q3RybCYgb3BlcmF0b3I8PChsb25nIGkpOw0KICAgIHd4
VGV4dEN0cmwmIG9wZXJhdG9yPDwoZmxvYXQgZik7DQogICAgd3hUZXh0Q3RybCYgb3BlcmF0b3I8
PChkb3VibGUgZCk7DQogICAgd3hUZXh0Q3RybCYgb3BlcmF0b3I8PChjb25zdCBjaGFyIGMpOw0K
DQoNCg0KDQoNCg0KcHJvdGVjdGVkOg0KDQoNCiAgICB3eFN0cmluZyBtX2ZpbGVuYW1lOw0KDQpw
cml2YXRlOg0KDQoNCg0KDQoNCn07DQoNCg0KDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gv
bXN3L3RleHRjdHJsLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3RleHRjdHJsLmgi
DQojcHJhZ21hIGludGVyZmFjZSAidGV4dGN0cmwuaCINCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eFRleHRDdHJsIDogcHVibGljIHd4VGV4dEN0cmxCYXNlDQp7DQpwdWJs
aWM6DQoNCg0KDQogICAgd3hUZXh0Q3RybCgpOw0KICAgIHd4VGV4dEN0cmwod3hXaW5kb3cgKnBh
cmVudCwgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiB2YWx1
ZSA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3
eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4
RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICBsb25nIHN0eWxlID0gMCwNCiAgICAgICAgICAg
ICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQog
ICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4VGV4dEN0cmxOYW1lU3RyKQ0K
ICAgIHsNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIHZhbHVlLCBwb3MsIHNpemUsIHN0eWxl
LCB2YWxpZGF0b3IsIG5hbWUpOw0KICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpw
YXJlbnQsIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHZh
bHVlID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3Mg
PSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUg
PSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAwLA0KICAgICAg
ICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0
b3IsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFRleHRDdHJsTmFt
ZVN0cik7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHd4U3RyaW5nIEdldFZhbHVlKCkgY29uc3Q7DQog
ICAgdmlydHVhbCB2b2lkIFNldFZhbHVlKGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSk7DQoNCiAgICB2
aXJ0dWFsIGludCBHZXRMaW5lTGVuZ3RoKGxvbmcgbGluZU5vKSBjb25zdDsNCiAgICB2aXJ0dWFs
IHd4U3RyaW5nIEdldExpbmVUZXh0KGxvbmcgbGluZU5vKSBjb25zdDsNCiAgICB2aXJ0dWFsIGlu
dCBHZXROdW1iZXJPZkxpbmVzKCkgY29uc3Q7DQoNCiAgICB2aXJ0dWFsIGJvb2wgSXNNb2RpZmll
ZCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgYm9vbCBJc0VkaXRhYmxlKCkgY29uc3Q7DQoNCg0KICAg
IHZpcnR1YWwgdm9pZCBHZXRTZWxlY3Rpb24obG9uZyogZnJvbSwgbG9uZyogdG8pIGNvbnN0Ow0K
DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQ2xlYXIoKTsNCiAgICB2aXJ0dWFsIHZvaWQgUmVw
bGFjZShsb25nIGZyb20sIGxvbmcgdG8sIGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSk7DQogICAgdmly
dHVhbCB2b2lkIFJlbW92ZShsb25nIGZyb20sIGxvbmcgdG8pOw0KDQoNCiAgICB2aXJ0dWFsIGJv
b2wgTG9hZEZpbGUoY29uc3Qgd3hTdHJpbmcmIGZpbGUpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQg
RGlzY2FyZEVkaXRzKCk7DQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFdyaXRlVGV4dChjb25zdCB3
eFN0cmluZyYgdGV4dCk7DQogICAgdmlydHVhbCB2b2lkIEFwcGVuZFRleHQoY29uc3Qgd3hTdHJp
bmcmIHRleHQpOw0KDQoNCg0KDQogICAgdmlydHVhbCBsb25nIFhZVG9Qb3NpdGlvbihsb25nIHgs
IGxvbmcgeSkgY29uc3Q7DQogICAgdmlydHVhbCBib29sIFBvc2l0aW9uVG9YWShsb25nIHBvcywg
bG9uZyAqeCwgbG9uZyAqeSkgY29uc3Q7DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2hvd1Bvc2l0aW9u
KGxvbmcgcG9zKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIENvcHkoKTsNCiAgICB2aXJ0dWFsIHZv
aWQgQ3V0KCk7DQogICAgdmlydHVhbCB2b2lkIFBhc3RlKCk7DQoNCiAgICB2aXJ0dWFsIGJvb2wg
Q2FuQ29weSgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgYm9vbCBDYW5DdXQoKSBjb25zdDsNCiAgICB2
aXJ0dWFsIGJvb2wgQ2FuUGFzdGUoKSBjb25zdDsNCg0KDQogICAgdmlydHVhbCB2b2lkIFVuZG8o
KTsNCiAgICB2aXJ0dWFsIHZvaWQgUmVkbygpOw0KDQogICAgdmlydHVhbCBib29sIENhblVuZG8o
KSBjb25zdDsNCiAgICB2aXJ0dWFsIGJvb2wgQ2FuUmVkbygpIGNvbnN0Ow0KDQoNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0SW5zZXJ0aW9uUG9pbnQobG9uZyBwb3MpOw0KICAgIHZpcnR1YWwgdm9pZCBT
ZXRJbnNlcnRpb25Qb2ludEVuZCgpOw0KICAgIHZpcnR1YWwgbG9uZyBHZXRJbnNlcnRpb25Qb2lu
dCgpIGNvbnN0Ow0KICAgIHZpcnR1YWwgbG9uZyBHZXRMYXN0UG9zaXRpb24oKSBjb25zdDsNCg0K
ICAgIHZpcnR1YWwgdm9pZCBTZXRTZWxlY3Rpb24obG9uZyBmcm9tLCBsb25nIHRvKTsNCiAgICB2
aXJ0dWFsIHZvaWQgU2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSk7DQoNCg0KDQoNCiAgICB2aXJ0
dWFsIHZvaWQgQ29tbWFuZCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KICAgIHZpcnR1YWwgYm9v
bCBNU1dDb21tYW5kKFdYVUlOVCBwYXJhbSwgV1hXT1JEIGlkKTsNCiAgICB2aXJ0dWFsIFdYSEJS
VVNIIE9uQ3RsQ29sb3IoV1hIREMgcERDLCBXWEhXTkQgcFduZCwgV1hVSU5UIG5DdGxDb2xvciwN
CiAgICAgICAgICAgIFdYVUlOVCBtZXNzYWdlLCBXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQ
YXJhbSk7DQojIDEyOCAiLi4vLi4vaW5jbHVkZS93eC9tc3cvdGV4dGN0cmwuaCINCiAgICBib29s
IElzUmljaCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSaWNoOyB9DQogICAgdm9pZCBTZXRSaWNoRWRp
dChib29sIGlzUmljaCkgeyBtX2lzUmljaCA9IGlzUmljaDsgfQ0KDQoNCg0KICAgIHZpcnR1YWwg
Ym9vbCBTZXRCYWNrZ3JvdW5kQ29sb3VyKGNvbnN0IHd4Q29sb3VyJiBjb2xvdXIpOw0KICAgIHZp
cnR1YWwgYm9vbCBTZXRGb3JlZ3JvdW5kQ29sb3VyKGNvbnN0IHd4Q29sb3VyJiBjb2xvdXIpOw0K
DQoNCiAgICB2aXJ0dWFsIHZvaWQgQWRvcHRBdHRyaWJ1dGVzRnJvbUhXTkQoKTsNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0dXBDb2xvdXJzKCk7DQoNCiAgICB2aXJ0dWFsIGJvb2wgQWNjZXB0c0ZvY3Vz
KCkgY29uc3Q7DQoNCg0KICAgIHZvaWQgT25Ecm9wRmlsZXMod3hEcm9wRmlsZXNFdmVudCYgZXZl
bnQpOw0KICAgIHZvaWQgT25DaGFyKHd4S2V5RXZlbnQmIGV2ZW50KTsNCg0KICAgIHZvaWQgT25D
dXQod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsNCiAgICB2b2lkIE9uQ29weSh3eENvbW1hbmRFdmVu
dCYgZXZlbnQpOw0KICAgIHZvaWQgT25QYXN0ZSh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KICAg
IHZvaWQgT25VbmRvKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7DQogICAgdm9pZCBPblJlZG8od3hD
b21tYW5kRXZlbnQmIGV2ZW50KTsNCg0KICAgIHZvaWQgT25VcGRhdGVDdXQod3hVcGRhdGVVSUV2
ZW50JiBldmVudCk7DQogICAgdm9pZCBPblVwZGF0ZUNvcHkod3hVcGRhdGVVSUV2ZW50JiBldmVu
dCk7DQogICAgdm9pZCBPblVwZGF0ZVBhc3RlKHd4VXBkYXRlVUlFdmVudCYgZXZlbnQpOw0KICAg
IHZvaWQgT25VcGRhdGVVbmRvKHd4VXBkYXRlVUlFdmVudCYgZXZlbnQpOw0KICAgIHZvaWQgT25V
cGRhdGVSZWRvKHd4VXBkYXRlVUlFdmVudCYgZXZlbnQpOw0KDQpwcm90ZWN0ZWQ6DQoNCiAgICBi
b29sIG1faXNSaWNoOw0KDQoNCg0KDQogICAgdm9pZCBBZGp1c3RTcGFjZUxpbWl0KCk7DQoNCiAg
ICB2aXJ0dWFsIHd4U2l6ZSBEb0dldEJlc3RTaXplKCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAg
cHJpdmF0ZTogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZUVudHJ5IHNtX2V2ZW50VGFibGVFbnRy
aWVzW107cHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxlIHNtX2V2ZW50VGFibGU7
IHZpcnR1YWwgY29uc3Qgd3hFdmVudFRhYmxlKiBHZXRFdmVudFRhYmxlKCkgY29uc3Q7DQogICAg
cHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFRleHRDdHJsOyB3eENsYXNzSW5m
byAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4VGV4dEN0cmw6OnNtX2NsYXNzd3hU
ZXh0Q3RybDsgfQ0KfTsNCiMgMTc4ICIuLi8uLi9pbmNsdWRlL3d4L3RleHRjdHJsLmgiIDINCiMg
NjEgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIgMg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3NsaWRl
ci5oIiAxDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvc2xpZGVyLmgiIDENCiMg
MTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L3NsaWRlci5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInNs
aWRlci5oIg0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zbGlkZXI5NS5oIiAxDQoj
IDE2ICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zbGlkZXI5NS5oIg0KI3ByYWdtYSBpbnRlcmZhY2Ug
InNsaWRlcjk1LmgiDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBj
b25zdCBjaGFyKiB3eFNsaWRlck5hbWVTdHI7DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hTbGlkZXI5NSA6IHB1YmxpYyB3eENvbnRyb2wNCnsNCiAgICBwdWJsaWM6IHN0
YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4U2xpZGVyOTU7IHd4Q2xhc3NJbmZvICpHZXRDbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hTbGlkZXI5NTo6c21fY2xhc3N3eFNsaWRlcjk1OyB9
DQoNCnB1YmxpYzoNCiAgICB3eFNsaWRlcjk1KCk7DQoNCiAgICB3eFNsaWRlcjk1KHd4V2luZG93
ICpwYXJlbnQsIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICBpbnQgdmFsdWUsIGludCBtaW5W
YWx1ZSwgaW50IG1heFZhbHVlLA0KICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hE
ZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1
bHRTaXplLA0KICAgICAgICAgICAgbG9uZyBzdHlsZSA9IHd4SE9SSVpPTlRBTCwNCiAgICAgICAg
ICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1bHRWYWxpZGF0b3IsDQog
ICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4U2xpZGVyTmFtZVN0cikNCiAgICB7
DQogICAgICAgIENyZWF0ZShwYXJlbnQsIGlkLCB2YWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCBw
b3MsIHNpemUsIHN0eWxlLCB2YWxpZGF0b3IsIG5hbWUpOw0KICAgIH0NCg0KICAgIH53eFNsaWRl
cjk1KCk7DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlk
LA0KICAgICAgICAgICAgaW50IHZhbHVlLCBpbnQgbWluVmFsdWUsIGludCBtYXhWYWx1ZSwNCiAg
ICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAg
ICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwNCiAgICAgICAgICAgIGxv
bmcgc3R5bGUgPSB3eEhPUklaT05UQUwsDQogICAgICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYg
dmFsaWRhdG9yID0gd3hEZWZhdWx0VmFsaWRhdG9yLA0KICAgICAgICAgICAgY29uc3Qgd3hTdHJp
bmcmIG5hbWUgPSB3eFNsaWRlck5hbWVTdHIpOw0KDQogICAgdmlydHVhbCBpbnQgR2V0VmFsdWUo
KSBjb25zdCA7DQogICAgdmlydHVhbCB2b2lkIFNldFZhbHVlKGludCk7DQoNCiAgICB2b2lkIEdl
dFNpemUoaW50ICp4LCBpbnQgKnkpIGNvbnN0IDsNCiAgICB2b2lkIEdldFBvc2l0aW9uKGludCAq
eCwgaW50ICp5KSBjb25zdCA7DQoNCiAgICBib29sIFNob3coYm9vbCBzaG93KTsNCg0KICAgIHZv
aWQgU2V0UmFuZ2UoaW50IG1pblZhbHVlLCBpbnQgbWF4VmFsdWUpOw0KDQogICAgaW50IEdldE1p
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VNaW47IH0NCiAgICBpbnQgR2V0TWF4KCkgY29uc3Qg
eyByZXR1cm4gbV9yYW5nZU1heDsgfQ0KDQoNCiAgICB2b2lkIFNldFRpY2tGcmVxKGludCBuLCBp
bnQgcG9zKTsNCiAgICBpbnQgR2V0VGlja0ZyZXEoKSBjb25zdCB7IHJldHVybiBtX3RpY2tGcmVx
OyB9DQogICAgdm9pZCBTZXRQYWdlU2l6ZShpbnQgcGFnZVNpemUpOw0KICAgIGludCBHZXRQYWdl
U2l6ZSgpIGNvbnN0IDsNCiAgICB2b2lkIENsZWFyU2VsKCkgOw0KICAgIHZvaWQgQ2xlYXJUaWNr
cygpIDsNCiAgICB2b2lkIFNldExpbmVTaXplKGludCBsaW5lU2l6ZSk7DQogICAgaW50IEdldExp
bmVTaXplKCkgY29uc3QgOw0KICAgIGludCBHZXRTZWxFbmQoKSBjb25zdCA7DQogICAgaW50IEdl
dFNlbFN0YXJ0KCkgY29uc3QgOw0KICAgIHZvaWQgU2V0U2VsZWN0aW9uKGludCBtaW5Qb3MsIGlu
dCBtYXhQb3MpOw0KICAgIHZvaWQgU2V0VGh1bWJMZW5ndGgoaW50IGxlbikgOw0KICAgIGludCBH
ZXRUaHVtYkxlbmd0aCgpIGNvbnN0IDsNCiAgICB2b2lkIFNldFRpY2soaW50IHRpY2tQb3MpIDsN
Cg0KDQogICAgV1hIV05EIEdldFN0YXRpY01pbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGljTWlu
OyB9DQogICAgV1hIV05EIEdldFN0YXRpY01heCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGljTWF4
OyB9DQogICAgV1hIV05EIEdldEVkaXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGljVmFs
dWU7IH0NCiAgICB2aXJ0dWFsIGJvb2wgQ29udGFpbnNIV05EKFdYSFdORCBoV25kKSBjb25zdDsN
Cg0KICAgIHZvaWQgQ29tbWFuZCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOw0KICAgIHZpcnR1YWwg
V1hIQlJVU0ggT25DdGxDb2xvcihXWEhEQyBwREMsIFdYSFdORCBwV25kLCBXWFVJTlQgbkN0bENv
bG9yLA0KICAgICAgICAgICAgV1hVSU5UIG1lc3NhZ2UsIFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFS
QU0gbFBhcmFtKTsNCiAgICB2aXJ0dWFsIGJvb2wgTVNXT25TY3JvbGwoaW50IG9yaWVudGF0aW9u
LCBXWFdPUkQgd1BhcmFtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXWFdPUkQgcG9z
LCBXWEhXTkQgY29udHJvbCk7DQoNCnByb3RlY3RlZDoNCiAgICBXWEhXTkQgbV9zdGF0aWNNaW47
DQogICAgV1hIV05EIG1fc3RhdGljTWF4Ow0KICAgIFdYSFdORCBtX3N0YXRpY1ZhbHVlOw0KICAg
IGludCBtX3JhbmdlTWluOw0KICAgIGludCBtX3JhbmdlTWF4Ow0KICAgIGludCBtX3BhZ2VTaXpl
Ow0KICAgIGludCBtX2xpbmVTaXplOw0KICAgIGludCBtX3RpY2tGcmVxOw0KDQogICAgdmlydHVh
bCB2b2lkIERvU2V0U2l6ZShpbnQgeCwgaW50IHksDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2l6ZUZsYWdzID0gKDB4MDAwMXwweDAwMDIpKTsNCn07DQojIDIxICIuLi8uLi9pbmNsdWRlL3d4
L21zdy9zbGlkZXIuaCIgMg0KIyA2ICIuLi8uLi9pbmNsdWRlL3d4L3NsaWRlci5oIiAyDQojIDYy
ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9nYXVnZS5o
IiAxDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvZ2F1Z2UuaCIgMQ0KIyAxNiAi
Li4vLi4vaW5jbHVkZS93eC9tc3cvZ2F1Z2UuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJnYXVnZS5o
Ig0KDQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9nYXVnZTk1LmgiIDENCiMgMTYgIi4u
Ly4uL2luY2x1ZGUvd3gvbXN3L2dhdWdlOTUuaCINCiNwcmFnbWEgaW50ZXJmYWNlICJnYXVnZTk1
LmgiDQoNCg0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFy
KiB3eEdhdWdlTmFtZVN0cjsNCg0KDQpjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eEdhdWdlOTUgOiBwdWJsaWMgd3hDb250cm9sDQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFz
c0luZm8gc21fY2xhc3N3eEdhdWdlOTU7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiAmd3hHYXVnZTk1OjpzbV9jbGFzc3d4R2F1Z2U5NTsgfQ0KDQpwdWJsaWM6DQog
ICAgd3hHYXVnZTk1KHZvaWQpIHsgbV9yYW5nZU1heCA9IDA7IG1fZ2F1Z2VQb3MgPSAwOyB9DQoN
CiAgICB3eEdhdWdlOTUod3hXaW5kb3cgKnBhcmVudCwgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAg
ICAgIGludCByYW5nZSwNCiAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVs
dFBvc2l0aW9uLA0KICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6
ZSwNCiAgICAgICAgICAgIGxvbmcgc3R5bGUgPSB3eEhPUklaT05UQUwsDQogICAgICAgICAgICBj
b25zdCB3eFZhbGlkYXRvciYgdmFsaWRhdG9yID0gd3hEZWZhdWx0VmFsaWRhdG9yLA0KICAgICAg
ICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eEdhdWdlTmFtZVN0cikNCiAgICB7DQogICAg
ICAgIENyZWF0ZShwYXJlbnQsIGlkLCByYW5nZSwgcG9zLCBzaXplLCBzdHlsZSwgdmFsaWRhdG9y
LCBuYW1lKTsNCiAgICB9DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LCB3eFdp
bmRvd0lEIGlkLA0KICAgICAgICAgICAgaW50IHJhbmdlLA0KICAgICAgICAgICAgY29uc3Qgd3hQ
b2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICBjb25zdCB3eFNpemUm
IHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgbG9uZyBzdHlsZSA9IHd4SE9SSVpP
TlRBTCwNCiAgICAgICAgICAgIGNvbnN0IHd4VmFsaWRhdG9yJiB2YWxpZGF0b3IgPSB3eERlZmF1
bHRWYWxpZGF0b3IsDQogICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4R2F1Z2VO
YW1lU3RyKTsNCg0KICAgIHZvaWQgU2V0U2hhZG93V2lkdGgoaW50IHcpOw0KICAgIHZvaWQgU2V0
QmV6ZWxGYWNlKGludCB3KTsNCiAgICB2b2lkIFNldFJhbmdlKGludCByKTsNCiAgICB2b2lkIFNl
dFZhbHVlKGludCBwb3MpOw0KDQogICAgaW50IEdldFNoYWRvd1dpZHRoKHZvaWQpIGNvbnN0IDsN
CiAgICBpbnQgR2V0QmV6ZWxGYWNlKHZvaWQpIGNvbnN0IDsNCiAgICBpbnQgR2V0UmFuZ2Uodm9p
ZCkgY29uc3QgOw0KICAgIGludCBHZXRWYWx1ZSh2b2lkKSBjb25zdCA7DQoNCiAgICBib29sIFNl
dEZvcmVncm91bmRDb2xvdXIoY29uc3Qgd3hDb2xvdXImIGNvbCk7DQogICAgYm9vbCBTZXRCYWNr
Z3JvdW5kQ29sb3VyKGNvbnN0IHd4Q29sb3VyJiBjb2wpOw0KDQoNCiAgICB2aXJ0dWFsIGJvb2wg
QWNjZXB0c0ZvY3VzKCkgY29uc3QgeyByZXR1cm4gMDsgfQ0KDQoNCg0KDQoNCg0KICAgIHZpcnR1
YWwgdm9pZCBDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiApIHt9IDsNCg0KcHJvdGVjdGVkOg0KICAg
IGludCBtX3JhbmdlTWF4Ow0KICAgIGludCBtX2dhdWdlUG9zOw0KfTsNCiMgMjEgIi4uLy4uL2lu
Y2x1ZGUvd3gvbXN3L2dhdWdlLmgiIDINCiMgNiAiLi4vLi4vaW5jbHVkZS93eC9nYXVnZS5oIiAy
DQojIDYzICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9j
b21ib2JveC5oIiAxDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cvY29tYm9ib3gu
aCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvY29tYm9ib3guaCINCiNwcmFnbWEgaW50
ZXJmYWNlICJjb21ib2JveC5oIg0KDQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0
KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4Q29tYm9Cb3hOYW1lU3RyOw0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4RW1wdHlTdHJpbmc7DQoNCg0KDQoNCg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hDb21ib0JveDogcHVibGljIHd4Q2hv
aWNlDQp7DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eENvbWJvQm94
OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4Q29tYm9Cb3g6
OnNtX2NsYXNzd3hDb21ib0JveDsgfQ0KDQpwdWJsaWM6DQogICAgd3hDb21ib0JveCgpIHsgfQ0K
DQogICAgd3hDb21ib0JveCh3eFdpbmRvdyAqcGFyZW50LCB3eFdpbmRvd0lEIGlkLA0KICAgICAg
ICAgICAgY29uc3Qgd3hTdHJpbmcmIHZhbHVlID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAg
IGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAgY29u
c3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwNCiAgICAgICAgICAgIGludCBuID0gMCwg
Y29uc3Qgd3hTdHJpbmcgY2hvaWNlc1tdID0gX19udWxsLA0KICAgICAgICAgICAgbG9uZyBzdHls
ZSA9IDAsDQogICAgICAgICAgICBjb25zdCB3eFZhbGlkYXRvciYgdmFsaWRhdG9yID0gd3hEZWZh
dWx0VmFsaWRhdG9yLA0KICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eENvbWJv
Qm94TmFtZVN0cikNCiAgICB7DQogICAgICAgIENyZWF0ZShwYXJlbnQsIGlkLCB2YWx1ZSwgcG9z
LCBzaXplLCBuLCBjaG9pY2VzLCBzdHlsZSwgdmFsaWRhdG9yLCBuYW1lKTsNCiAgICB9DQoNCiAg
ICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAgICAgIHd4V2luZG93
SUQgaWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHZhbHVlID0gd3hFbXB0eVN0
cmluZywNCiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3Np
dGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXpl
LA0KICAgICAgICAgICAgICAgIGludCBuID0gMCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyBjaG9pY2VzW10gPSBfX251bGwsDQogICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9IDAs
DQogICAgICAgICAgICAgICAgY29uc3Qgd3hWYWxpZGF0b3ImIHZhbGlkYXRvciA9IHd4RGVmYXVs
dFZhbGlkYXRvciwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4Q29t
Ym9Cb3hOYW1lU3RyKTsNCg0KDQoNCg0KICAgIHd4U3RyaW5nIEdldFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gR2V0TGFiZWwoKTsgfQ0KICAgIHZpcnR1YWwgdm9pZCBTZXRWYWx1ZShjb25zdCB3eFN0
cmluZyYgdmFsdWUpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQ29weSgpOw0KICAgIHZpcnR1YWwg
dm9pZCBDdXQoKTsNCiAgICB2aXJ0dWFsIHZvaWQgUGFzdGUoKTsNCiAgICB2aXJ0dWFsIHZvaWQg
U2V0SW5zZXJ0aW9uUG9pbnQobG9uZyBwb3MpOw0KICAgIHZpcnR1YWwgdm9pZCBTZXRJbnNlcnRp
b25Qb2ludEVuZCgpOw0KICAgIHZpcnR1YWwgbG9uZyBHZXRJbnNlcnRpb25Qb2ludCgpIGNvbnN0
Ow0KICAgIHZpcnR1YWwgbG9uZyBHZXRMYXN0UG9zaXRpb24oKSBjb25zdDsNCiAgICB2aXJ0dWFs
IHZvaWQgUmVwbGFjZShsb25nIGZyb20sIGxvbmcgdG8sIGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSk7
DQogICAgdmlydHVhbCB2b2lkIFJlbW92ZShsb25nIGZyb20sIGxvbmcgdG8pOw0KICAgIHZpcnR1
YWwgdm9pZCBTZXRTZWxlY3Rpb24oaW50IG4pIHsgd3hDaG9pY2U6OlNldFNlbGVjdGlvbihuKTsg
fQ0KICAgIHZpcnR1YWwgdm9pZCBTZXRTZWxlY3Rpb24obG9uZyBmcm9tLCBsb25nIHRvKTsNCiAg
ICB2aXJ0dWFsIHZvaWQgU2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSk7DQoNCg0KICAgIHZpcnR1
YWwgYm9vbCBNU1dDb21tYW5kKFdYVUlOVCBwYXJhbSwgV1hXT1JEIGlkKTsNCiAgICBib29sIE1T
V1Byb2Nlc3NFZGl0TXNnKFdYVUlOVCBtc2csIFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBh
cmFtKTsNCiAgICB2aXJ0dWFsIFdYSEJSVVNIIE9uQ3RsQ29sb3IoV1hIREMgcERDLCBXWEhXTkQg
cFduZCwgV1hVSU5UIG5DdGxDb2xvciwNCiAgICAgICAgICAgIFdYVUlOVCBtZXNzYWdlLCBXWFdQ
QVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQoNCiAgICBXWEhXTkQgR2V0RWRpdEhXTkQo
KSBjb25zdDsNCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBEb01vdmVXaW5kb3coaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOw0KICAgIHZpcnR1YWwgd3hTaXplIERv
R2V0QmVzdFNpemUoKSBjb25zdDsNCn07DQojIDYgIi4uLy4uL2luY2x1ZGUvd3gvY29tYm9ib3gu
aCIgMg0KIyA2NCAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUv
d3gvbGF5b3V0LmgiIDENCiMgMjAgIi4uLy4uL2luY2x1ZGUvd3gvbGF5b3V0LmgiDQojcHJhZ21h
IGludGVyZmFjZSAibGF5b3V0LmgiDQojIDM3ICIuLi8uLi9pbmNsdWRlL3d4L2xheW91dC5oIg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hXaW5kb3dCYXNlOw0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hMYXlvdXRDb25zdHJhaW50czsNCg0KDQoNCg0KDQoN
Cg0KZW51bSB3eEVkZ2UNCnsNCiAgICB3eExlZnQsIHd4VG9wLCB3eFJpZ2h0LCB3eEJvdHRvbSwg
d3hXaWR0aCwgd3hIZWlnaHQsDQogICAgd3hDZW50cmUsIHd4Q2VudGVyID0gd3hDZW50cmUsIHd4
Q2VudHJlWCwgd3hDZW50cmVZDQp9Ow0KDQplbnVtIHd4UmVsYXRpb25zaGlwDQp7DQogICAgd3hV
bmNvbnN0cmFpbmVkID0gMCwNCiAgICB3eEFzSXMsDQogICAgd3hQZXJjZW50T2YsDQogICAgd3hB
Ym92ZSwNCiAgICB3eEJlbG93LA0KICAgIHd4TGVmdE9mLA0KICAgIHd4UmlnaHRPZiwNCiAgICB3
eFNhbWVBcywNCiAgICB3eEFic29sdXRlDQp9Ow0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4SW5kaXZpZHVhbExheW91dENvbnN0cmFpbnQgOiBwdWJsaWMgd3hP
YmplY3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4SW5kaXZp
ZHVhbExheW91dENvbnN0cmFpbnQ7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiAmd3hJbmRpdmlkdWFsTGF5b3V0Q29uc3RyYWludDo6c21fY2xhc3N3eEluZGl2aWR1
YWxMYXlvdXRDb25zdHJhaW50OyB9DQoNCnByb3RlY3RlZDoNCg0KICAgIGZyaWVuZCBjbGFzcyB3
eEluZGl2aWR1YWxMYXlvdXRDb25zdHJhaW50X1NlcmlhbGl6ZTsNCg0KDQogICAgd3hXaW5kb3dC
YXNlICpvdGhlcldpbjsNCg0KICAgIHd4RWRnZSBteUVkZ2U7DQogICAgd3hSZWxhdGlvbnNoaXAg
cmVsYXRpb25zaGlwOw0KICAgIGludCBtYXJnaW47DQogICAgaW50IHZhbHVlOw0KICAgIGludCBw
ZXJjZW50Ow0KICAgIHd4RWRnZSBvdGhlckVkZ2U7DQogICAgYm9vbCBkb25lOw0KDQpwdWJsaWM6
DQogICAgd3hJbmRpdmlkdWFsTGF5b3V0Q29uc3RyYWludCgpOw0KICAgIH53eEluZGl2aWR1YWxM
YXlvdXRDb25zdHJhaW50KCk7DQoNCiAgICB2b2lkIFNldCh3eFJlbGF0aW9uc2hpcCByZWwsIHd4
V2luZG93QmFzZSAqb3RoZXJXLCB3eEVkZ2Ugb3RoZXJFLCBpbnQgdmFsID0gMCwgaW50IG1hcmcg
PSAwKTsNCg0KDQoNCg0KICAgIHZvaWQgTGVmdE9mKHd4V2luZG93QmFzZSAqc2libGluZywgaW50
IG1hcmcgPSAwKTsNCiAgICB2b2lkIFJpZ2h0T2Yod3hXaW5kb3dCYXNlICpzaWJsaW5nLCBpbnQg
bWFyZyA9IDApOw0KICAgIHZvaWQgQWJvdmUod3hXaW5kb3dCYXNlICpzaWJsaW5nLCBpbnQgbWFy
ZyA9IDApOw0KICAgIHZvaWQgQmVsb3cod3hXaW5kb3dCYXNlICpzaWJsaW5nLCBpbnQgbWFyZyA9
IDApOw0KDQoNCg0KDQogICAgdm9pZCBTYW1lQXMod3hXaW5kb3dCYXNlICpvdGhlclcsIHd4RWRn
ZSBlZGdlLCBpbnQgbWFyZyA9IDApOw0KDQoNCiAgICB2b2lkIFBlcmNlbnRPZih3eFdpbmRvd0Jh
c2UgKm90aGVyVywgd3hFZGdlIHdoLCBpbnQgcGVyKTsNCg0KDQoNCg0KICAgIHZvaWQgQWJzb2x1
dGUoaW50IHZhbCk7DQoNCg0KDQoNCiAgICB2b2lkIFVuY29uc3RyYWluZWQoKSB7IHJlbGF0aW9u
c2hpcCA9IHd4VW5jb25zdHJhaW5lZDsgfQ0KDQoNCg0KDQogICAgdm9pZCBBc0lzKCkgeyByZWxh
dGlvbnNoaXAgPSB3eEFzSXM7IH0NCg0KDQoNCg0KICAgIHd4V2luZG93QmFzZSAqR2V0T3RoZXJX
aW5kb3coKSB7IHJldHVybiBvdGhlcldpbjsgfQ0KICAgIHd4RWRnZSBHZXRNeUVkZ2UoKSBjb25z
dCB7IHJldHVybiBteUVkZ2U7IH0NCiAgICB2b2lkIFNldEVkZ2Uod3hFZGdlIHdoaWNoKSB7IG15
RWRnZSA9IHdoaWNoOyB9DQogICAgdm9pZCBTZXRWYWx1ZShpbnQgdikgeyB2YWx1ZSA9IHY7IH0N
CiAgICBpbnQgR2V0TWFyZ2luKCkgeyByZXR1cm4gbWFyZ2luOyB9DQogICAgdm9pZCBTZXRNYXJn
aW4oaW50IG0pIHsgbWFyZ2luID0gbTsgfQ0KICAgIGludCBHZXRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHZhbHVlOyB9DQogICAgaW50IEdldFBlcmNlbnQoKSBjb25zdCB7IHJldHVybiBwZXJjZW50
OyB9DQogICAgaW50IEdldE90aGVyRWRnZSgpIGNvbnN0IHsgcmV0dXJuIG90aGVyRWRnZTsgfQ0K
ICAgIGJvb2wgR2V0RG9uZSgpIGNvbnN0IHsgcmV0dXJuIGRvbmU7IH0NCiAgICB2b2lkIFNldERv
bmUoYm9vbCBkKSB7IGRvbmUgPSBkOyB9DQogICAgd3hSZWxhdGlvbnNoaXAgR2V0UmVsYXRpb25z
aGlwKCkgeyByZXR1cm4gcmVsYXRpb25zaGlwOyB9DQogICAgdm9pZCBTZXRSZWxhdGlvbnNoaXAo
d3hSZWxhdGlvbnNoaXAgcikgeyByZWxhdGlvbnNoaXAgPSByOyB9DQoNCg0KICAgIGJvb2wgUmVz
ZXRJZldpbih3eFdpbmRvd0Jhc2UgKm90aGVyVyk7DQoNCg0KICAgIGJvb2wgU2F0aXNmeUNvbnN0
cmFpbnQod3hMYXlvdXRDb25zdHJhaW50cyAqY29uc3RyYWludHMsIHd4V2luZG93QmFzZSAqd2lu
KTsNCg0KDQoNCiAgICBpbnQgR2V0RWRnZSh3eEVkZ2Ugd2hpY2gsIHd4V2luZG93QmFzZSAqdGhp
c1dpbiwgd3hXaW5kb3dCYXNlICpvdGhlcikgY29uc3Q7DQp9Ow0KDQoNCg0KDQoNCmNsYXNzIF9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TGF5b3V0Q29uc3RyYWludHMgOiBwdWJsaWMgd3hP
YmplY3QNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4TGF5b3V0
Q29uc3RyYWludHM7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAm
d3hMYXlvdXRDb25zdHJhaW50czo6c21fY2xhc3N3eExheW91dENvbnN0cmFpbnRzOyB9DQoNCnB1
YmxpYzoNCg0KICAgIHd4SW5kaXZpZHVhbExheW91dENvbnN0cmFpbnQgbGVmdDsNCiAgICB3eElu
ZGl2aWR1YWxMYXlvdXRDb25zdHJhaW50IHRvcDsNCiAgICB3eEluZGl2aWR1YWxMYXlvdXRDb25z
dHJhaW50IHJpZ2h0Ow0KICAgIHd4SW5kaXZpZHVhbExheW91dENvbnN0cmFpbnQgYm90dG9tOw0K
DQogICAgd3hJbmRpdmlkdWFsTGF5b3V0Q29uc3RyYWludCB3aWR0aDsNCiAgICB3eEluZGl2aWR1
YWxMYXlvdXRDb25zdHJhaW50IGhlaWdodDsNCg0KICAgIHd4SW5kaXZpZHVhbExheW91dENvbnN0
cmFpbnQgY2VudHJlWDsNCiAgICB3eEluZGl2aWR1YWxMYXlvdXRDb25zdHJhaW50IGNlbnRyZVk7
DQoNCiAgICB3eExheW91dENvbnN0cmFpbnRzKCk7DQogICAgfnd4TGF5b3V0Q29uc3RyYWludHMo
KTsNCg0KICAgIGJvb2wgU2F0aXNmeUNvbnN0cmFpbnRzKHd4V2luZG93QmFzZSAqd2luLCBpbnQg
Km5vQ2hhbmdlcyk7DQogICAgYm9vbCBBcmVTYXRpc2ZpZWQoKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGxlZnQuR2V0RG9uZSgpICYmIHRvcC5HZXREb25lKCkgJiYNCiAgICAgICAgICAg
ICAgIHdpZHRoLkdldERvbmUoKSAmJiBoZWlnaHQuR2V0RG9uZSgpOw0KICAgIH0NCn07DQojIDY1
ICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9zaXplci5o
IiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L3NpemVyLmgiDQojcHJhZ21hIGludGVyZmFjZSAi
c2l6ZXIuaCINCiMgMjkgIi4uLy4uL2luY2x1ZGUvd3gvc2l6ZXIuaCINCmNsYXNzIHd4U3RhdGlj
Qm94Ow0KY2xhc3Mgd3hOb3RlYm9vazsNCg0KY2xhc3Mgd3hTaXplckl0ZW07DQpjbGFzcyB3eFNp
emVyOw0KY2xhc3Mgd3hCb3hTaXplcjsNCmNsYXNzIHd4U3RhdGljQm94U2l6ZXI7DQoNCg0KDQoN
Cg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTaXplckl0ZW06IHB1YmxpYyB3
eE9iamVjdA0Kew0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hTaXpl
ckl0ZW07IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hTaXpl
ckl0ZW06OnNtX2NsYXNzd3hTaXplckl0ZW07IH07DQpwdWJsaWM6DQoNCiAgICB3eFNpemVySXRl
bSggaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgb3B0aW9uLCBpbnQgZmxhZywgaW50IGJvcmRl
ciwgd3hPYmplY3QqIHVzZXJEYXRhKTsNCg0KDQogICAgd3hTaXplckl0ZW0oIHd4V2luZG93ICp3
aW5kb3csIGludCBvcHRpb24sIGludCBmbGFnLCBpbnQgYm9yZGVyLCB3eE9iamVjdCogdXNlckRh
dGEgKTsNCg0KDQogICAgd3hTaXplckl0ZW0oIHd4U2l6ZXIgKnNpemVyLCBpbnQgb3B0aW9uLCBp
bnQgZmxhZywgaW50IGJvcmRlciwgd3hPYmplY3QqIHVzZXJEYXRhICk7DQoNCiAgICB+d3hTaXpl
ckl0ZW0oKTsNCg0KICAgIHZpcnR1YWwgd3hTaXplIEdldFNpemUoKTsNCiAgICB2aXJ0dWFsIHd4
U2l6ZSBDYWxjTWluKCk7DQogICAgdmlydHVhbCB2b2lkIFNldERpbWVuc2lvbiggd3hQb2ludCBw
b3MsIHd4U2l6ZSBzaXplICk7DQoNCiAgICB3eFNpemUgR2V0TWluU2l6ZSgpDQogICAgICAgIHsg
cmV0dXJuIG1fbWluU2l6ZTsgfQ0KDQogICAgdm9pZCBTZXRSYXRpbyggaW50IHdpZHRoLCBpbnQg
aGVpZ2h0ICkNCg0KDQogICAgICAgIHsgbV9yYXRpbyA9ICh3aWR0aCAmJiBoZWlnaHQpID8gKChm
bG9hdCkgd2lkdGggLyAoZmxvYXQpIGhlaWdodCkgOiAxOyB9DQogICAgdm9pZCBTZXRSYXRpbygg
d3hTaXplIHNpemUgKQ0KICAgICAgICB7IG1fcmF0aW8gPSAoc2l6ZS54ICYmIHNpemUueSkgPyAo
KGZsb2F0KSBzaXplLnggLyAoZmxvYXQpIHNpemUueSkgOiAxOyB9DQogICAgdm9pZCBTZXRSYXRp
byggZmxvYXQgcmF0aW8gKQ0KICAgICAgICB7IG1fcmF0aW8gPSByYXRpbzsgfQ0KICAgIGZsb2F0
IEdldFJhdGlvKCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV9yYXRpbzsgfQ0KDQogICAgYm9v
bCBJc1dpbmRvdygpOw0KICAgIGJvb2wgSXNTaXplcigpOw0KICAgIGJvb2wgSXNTcGFjZXIoKTsN
Cg0KICAgIHZvaWQgU2V0SW5pdFNpemUoIGludCB4LCBpbnQgeSApDQogICAgICAgIHsgbV9taW5T
aXplLnggPSB4OyBtX21pblNpemUueSA9IHk7IH0NCiAgICB2b2lkIFNldE9wdGlvbiggaW50IG9w
dGlvbiApDQogICAgICAgIHsgbV9vcHRpb24gPSBvcHRpb247IH0NCiAgICB2b2lkIFNldEZsYWco
IGludCBmbGFnICkNCiAgICAgICAgeyBtX2ZsYWcgPSBmbGFnOyB9DQogICAgdm9pZCBTZXRCb3Jk
ZXIoIGludCBib3JkZXIgKQ0KICAgICAgICB7IG1fYm9yZGVyID0gYm9yZGVyOyB9DQoNCiAgICB3
eFdpbmRvdyAqR2V0V2luZG93KCkgY29uc3QNCiAgICAgICAgeyByZXR1cm4gbV93aW5kb3c7IH0N
CiAgICB2b2lkIFNldFdpbmRvdyggd3hXaW5kb3cgKndpbmRvdyApDQogICAgICAgIHsgbV93aW5k
b3cgPSB3aW5kb3c7IH0NCiAgICB3eFNpemVyICpHZXRTaXplcigpIGNvbnN0DQogICAgICAgIHsg
cmV0dXJuIG1fc2l6ZXI7IH0NCiAgICB2b2lkIFNldFNpemVyKCB3eFNpemVyICpzaXplciApDQog
ICAgICAgIHsgbV9zaXplciA9IHNpemVyOyB9DQogICAgaW50IEdldE9wdGlvbigpIGNvbnN0DQog
ICAgICAgIHsgcmV0dXJuIG1fb3B0aW9uOyB9DQogICAgaW50IEdldEZsYWcoKSBjb25zdA0KICAg
ICAgICB7IHJldHVybiBtX2ZsYWc7IH0NCiAgICBpbnQgR2V0Qm9yZGVyKCkgY29uc3QNCiAgICAg
ICAgeyByZXR1cm4gbV9ib3JkZXI7IH0NCiAgICB3eE9iamVjdCogR2V0VXNlckRhdGEoKQ0KICAg
ICAgICB7IHJldHVybiBtX3VzZXJEYXRhOyB9DQogICAgd3hQb2ludCBHZXRQb3NpdGlvbigpDQog
ICAgICAgIHsgcmV0dXJuIG1fcG9zOyB9DQoNCnByb3RlY3RlZDoNCiAgICB3eFdpbmRvdyAqbV93
aW5kb3c7DQogICAgd3hTaXplciAqbV9zaXplcjsNCiAgICB3eFNpemUgbV9zaXplOw0KICAgIHd4
UG9pbnQgbV9wb3M7DQogICAgd3hTaXplIG1fbWluU2l6ZTsNCiAgICBpbnQgbV9vcHRpb247DQog
ICAgaW50IG1fYm9yZGVyOw0KICAgIGludCBtX2ZsYWc7DQoNCg0KDQoNCiAgICBmbG9hdCBtX3Jh
dGlvOw0KDQoNCiAgICB3eE9iamVjdCAqbV91c2VyRGF0YTsNCn07DQoNCg0KDQoNCg0KY2xhc3Mg
X19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTaXplcjogcHVibGljIHd4T2JqZWN0DQp7DQpw
dWJsaWM6DQogICAgd3hTaXplcigpOw0KICAgIH53eFNpemVyKCk7DQoNCg0KICAgIHZpcnR1YWwg
dm9pZCBBZGQoIHd4V2luZG93ICp3aW5kb3csIGludCBvcHRpb24gPSAwLCBpbnQgZmxhZyA9IDAs
IGludCBib3JkZXIgPSAwLCB3eE9iamVjdCogdXNlckRhdGEgPSBfX251bGwgKTsNCiAgICB2aXJ0
dWFsIHZvaWQgQWRkKCB3eFNpemVyICpzaXplciwgaW50IG9wdGlvbiA9IDAsIGludCBmbGFnID0g
MCwgaW50IGJvcmRlciA9IDAsIHd4T2JqZWN0KiB1c2VyRGF0YSA9IF9fbnVsbCApOw0KICAgIHZp
cnR1YWwgdm9pZCBBZGQoIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG9wdGlvbiA9IDAsIGlu
dCBmbGFnID0gMCwgaW50IGJvcmRlciA9IDAsIHd4T2JqZWN0KiB1c2VyRGF0YSA9IF9fbnVsbCAp
Ow0KDQogICAgdmlydHVhbCB2b2lkIEluc2VydCggaW50IGJlZm9yZSwgd3hXaW5kb3cgKndpbmRv
dywgaW50IG9wdGlvbiA9IDAsIGludCBmbGFnID0gMCwgaW50IGJvcmRlciA9IDAsIHd4T2JqZWN0
KiB1c2VyRGF0YSA9IF9fbnVsbCApOw0KICAgIHZpcnR1YWwgdm9pZCBJbnNlcnQoIGludCBiZWZv
cmUsIHd4U2l6ZXIgKnNpemVyLCBpbnQgb3B0aW9uID0gMCwgaW50IGZsYWcgPSAwLCBpbnQgYm9y
ZGVyID0gMCwgd3hPYmplY3QqIHVzZXJEYXRhID0gX19udWxsICk7DQogICAgdmlydHVhbCB2b2lk
IEluc2VydCggaW50IGJlZm9yZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgb3B0aW9uID0g
MCwgaW50IGZsYWcgPSAwLCBpbnQgYm9yZGVyID0gMCwgd3hPYmplY3QqIHVzZXJEYXRhID0gX19u
dWxsICk7DQoNCiAgICB2aXJ0dWFsIHZvaWQgUHJlcGVuZCggd3hXaW5kb3cgKndpbmRvdywgaW50
IG9wdGlvbiA9IDAsIGludCBmbGFnID0gMCwgaW50IGJvcmRlciA9IDAsIHd4T2JqZWN0KiB1c2Vy
RGF0YSA9IF9fbnVsbCApOw0KICAgIHZpcnR1YWwgdm9pZCBQcmVwZW5kKCB3eFNpemVyICpzaXpl
ciwgaW50IG9wdGlvbiA9IDAsIGludCBmbGFnID0gMCwgaW50IGJvcmRlciA9IDAsIHd4T2JqZWN0
KiB1c2VyRGF0YSA9IF9fbnVsbCApOw0KICAgIHZpcnR1YWwgdm9pZCBQcmVwZW5kKCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBvcHRpb24gPSAwLCBpbnQgZmxhZyA9IDAsIGludCBib3JkZXIg
PSAwLCB3eE9iamVjdCogdXNlckRhdGEgPSBfX251bGwgKTsNCg0KICAgIHZpcnR1YWwgYm9vbCBS
ZW1vdmUoIHd4V2luZG93ICp3aW5kb3cgKTsNCiAgICB2aXJ0dWFsIGJvb2wgUmVtb3ZlKCB3eFNp
emVyICpzaXplciApOw0KICAgIHZpcnR1YWwgYm9vbCBSZW1vdmUoIGludCBwb3MgKTsNCg0KICAg
IHZvaWQgU2V0TWluU2l6ZSggaW50IHdpZHRoLCBpbnQgaGVpZ2h0ICkNCiAgICAgICAgeyBEb1Nl
dE1pblNpemUoIHdpZHRoLCBoZWlnaHQgKTsgfQ0KICAgIHZvaWQgU2V0TWluU2l6ZSggd3hTaXpl
IHNpemUgKQ0KICAgICAgICB7IERvU2V0TWluU2l6ZSggc2l6ZS54LCBzaXplLnkgKTsgfQ0KDQoN
CiAgICBib29sIFNldEl0ZW1NaW5TaXplKCB3eFdpbmRvdyAqd2luZG93LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQgKQ0KICAgICAgICB7IHJldHVybiBEb1NldEl0ZW1NaW5TaXplKCB3aW5kb3csIHdp
ZHRoLCBoZWlnaHQgKTsgfQ0KICAgIGJvb2wgU2V0SXRlbU1pblNpemUoIHd4V2luZG93ICp3aW5k
b3csIHd4U2l6ZSBzaXplICkNCiAgICAgICAgeyByZXR1cm4gRG9TZXRJdGVtTWluU2l6ZSggd2lu
ZG93LCBzaXplLngsIHNpemUueSApOyB9DQoNCg0KICAgIGJvb2wgU2V0SXRlbU1pblNpemUoIHd4
U2l6ZXIgKnNpemVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQgKQ0KICAgICAgICB7IHJldHVybiBE
b1NldEl0ZW1NaW5TaXplKCBzaXplciwgd2lkdGgsIGhlaWdodCApOyB9DQogICAgYm9vbCBTZXRJ
dGVtTWluU2l6ZSggd3hTaXplciAqc2l6ZXIsIHd4U2l6ZSBzaXplICkNCiAgICAgICAgeyByZXR1
cm4gRG9TZXRJdGVtTWluU2l6ZSggc2l6ZXIsIHNpemUueCwgc2l6ZS55ICk7IH0NCg0KICAgIGJv
b2wgU2V0SXRlbU1pblNpemUoIGludCBwb3MsIGludCB3aWR0aCwgaW50IGhlaWdodCApDQogICAg
ICAgIHsgcmV0dXJuIERvU2V0SXRlbU1pblNpemUoIHBvcywgd2lkdGgsIGhlaWdodCApOyB9DQog
ICAgYm9vbCBTZXRJdGVtTWluU2l6ZSggaW50IHBvcywgd3hTaXplIHNpemUgKQ0KICAgICAgICB7
IHJldHVybiBEb1NldEl0ZW1NaW5TaXplKCBwb3MsIHNpemUueCwgc2l6ZS55ICk7IH0NCg0KICAg
IHd4U2l6ZSBHZXRTaXplKCkNCiAgICAgICAgeyByZXR1cm4gbV9zaXplOyB9DQogICAgd3hQb2lu
dCBHZXRQb3NpdGlvbigpDQogICAgICAgIHsgcmV0dXJuIG1fcG9zaXRpb247IH0NCg0KDQogICAg
d3hTaXplIEdldE1pblNpemUoKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBSZWNhbGNTaXplcygpID0g
MDsNCiAgICB2aXJ0dWFsIHd4U2l6ZSBDYWxjTWluKCkgPSAwOw0KDQogICAgdmlydHVhbCB2b2lk
IExheW91dCgpOw0KDQogICAgdm9pZCBGaXQoIHd4V2luZG93ICp3aW5kb3cgKTsNCiAgICB2b2lk
IFNldFNpemVIaW50cyggd3hXaW5kb3cgKndpbmRvdyApOw0KDQogICAgd3hMaXN0JiBHZXRDaGls
ZHJlbigpDQogICAgICAgIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0NCg0KICAgIHZvaWQgU2V0RGlt
ZW5zaW9uKCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCApOw0KDQpwcm90ZWN0
ZWQ6DQogICAgd3hTaXplIG1fc2l6ZTsNCiAgICB3eFNpemUgbV9taW5TaXplOw0KICAgIHd4UG9p
bnQgbV9wb3NpdGlvbjsNCiAgICB3eExpc3QgbV9jaGlsZHJlbjsNCg0KICAgIHd4U2l6ZSBHZXRN
aW5XaW5kb3dTaXplKCB3eFdpbmRvdyAqd2luZG93ICk7DQoNCiAgICB2aXJ0dWFsIHZvaWQgRG9T
ZXRNaW5TaXplKCBpbnQgd2lkdGgsIGludCBoZWlnaHQgKTsNCiAgICB2aXJ0dWFsIGJvb2wgRG9T
ZXRJdGVtTWluU2l6ZSggd3hXaW5kb3cgKndpbmRvdywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0ICk7
DQogICAgdmlydHVhbCBib29sIERvU2V0SXRlbU1pblNpemUoIHd4U2l6ZXIgKnNpemVyLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQgKTsNCiAgICB2aXJ0dWFsIGJvb2wgRG9TZXRJdGVtTWluU2l6ZSgg
aW50IHBvcywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0ICk7DQoNCnByaXZhdGU6DQogICAgcHVibGlj
OiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFNpemVyOyB3eENsYXNzSW5mbyAqR2V0Q2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4U2l6ZXI6OnNtX2NsYXNzd3hTaXplcjsgfTsNCn07
DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hHcmlkU2l6ZXI6
IHB1YmxpYyB3eFNpemVyDQp7DQpwdWJsaWM6DQogICAgd3hHcmlkU2l6ZXIoIGludCByb3dzLCBp
bnQgY29scywgaW50IHZnYXAsIGludCBoZ2FwICk7DQogICAgd3hHcmlkU2l6ZXIoIGludCBjb2xz
LCBpbnQgdmdhcCA9IDAsIGludCBoZ2FwID0gMCApOw0KDQogICAgdm9pZCBSZWNhbGNTaXplcygp
Ow0KICAgIHd4U2l6ZSBDYWxjTWluKCk7DQoNCiAgICB2b2lkIFNldENvbHMoIGludCBjb2xzICkg
eyBtX2NvbHMgPSBjb2xzOyB9DQogICAgdm9pZCBTZXRSb3dzKCBpbnQgcm93cyApIHsgbV9yb3dz
ID0gcm93czsgfQ0KICAgIHZvaWQgU2V0VkdhcCggaW50IGdhcCApIHsgbV92Z2FwID0gZ2FwOyB9
DQogICAgdm9pZCBTZXRIR2FwKCBpbnQgZ2FwICkgeyBtX2hnYXAgPSBnYXA7IH0NCiAgICBpbnQg
R2V0Q29scygpIHsgcmV0dXJuIG1fY29sczsgfQ0KICAgIGludCBHZXRSb3dzKCkgeyByZXR1cm4g
bV9yb3dzOyB9DQogICAgaW50IEdldFZHYXAoKSB7IHJldHVybiBtX3ZnYXA7IH0NCiAgICBpbnQg
R2V0SEdhcCgpIHsgcmV0dXJuIG1faGdhcDsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgaW50IG1fcm93
czsNCiAgICBpbnQgbV9jb2xzOw0KICAgIGludCBtX3ZnYXA7DQogICAgaW50IG1faGdhcDsNCg0K
ICAgIHZvaWQgU2V0SXRlbUJvdW5kcyggd3hTaXplckl0ZW0gKml0ZW0sIGludCB4LCBpbnQgeSwg
aW50IHcsIGludCBoICk7DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0lu
Zm8gc21fY2xhc3N3eEdyaWRTaXplcjsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuICZ3eEdyaWRTaXplcjo6c21fY2xhc3N3eEdyaWRTaXplcjsgfTsNCn07DQoNCg0K
DQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hGbGV4R3JpZFNpemVyOiBw
dWJsaWMgd3hHcmlkU2l6ZXINCnsNCnB1YmxpYzoNCiAgICB3eEZsZXhHcmlkU2l6ZXIoIGludCBy
b3dzLCBpbnQgY29scywgaW50IHZnYXAsIGludCBoZ2FwICk7DQogICAgd3hGbGV4R3JpZFNpemVy
KCBpbnQgY29scywgaW50IHZnYXAgPSAwLCBpbnQgaGdhcCA9IDAgKTsNCiAgICB+d3hGbGV4R3Jp
ZFNpemVyKCk7DQoNCiAgICB2b2lkIFJlY2FsY1NpemVzKCk7DQogICAgd3hTaXplIENhbGNNaW4o
KTsNCg0KICAgIHZvaWQgQWRkR3Jvd2FibGVSb3coIHNpemVfdCBpZHggKTsNCiAgICB2b2lkIFJl
bW92ZUdyb3dhYmxlUm93KCBzaXplX3QgaWR4ICk7DQogICAgdm9pZCBBZGRHcm93YWJsZUNvbCgg
c2l6ZV90IGlkeCApOw0KICAgIHZvaWQgUmVtb3ZlR3Jvd2FibGVDb2woIHNpemVfdCBpZHggKTsN
Cg0KcHJvdGVjdGVkOg0KICAgIGludCAqbV9yb3dIZWlnaHRzOw0KICAgIGludCAqbV9jb2xXaWR0
aHM7DQogICAgd3hBcnJheUludCBtX2dyb3dhYmxlUm93czsNCiAgICB3eEFycmF5SW50IG1fZ3Jv
d2FibGVDb2xzOw0KDQogICAgdm9pZCBDcmVhdGVBcnJheXMoKTsNCg0KcHJpdmF0ZToNCiAgICBw
dWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4RmxleEdyaWRTaXplcjsgd3hDbGFz
c0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eEZsZXhHcmlkU2l6ZXI6OnNt
X2NsYXNzd3hGbGV4R3JpZFNpemVyOyB9Ow0KfTsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eEJveFNpemVyOiBwdWJsaWMgd3hTaXplcg0Kew0KcHVibGljOg0K
ICAgIHd4Qm94U2l6ZXIoIGludCBvcmllbnQgKTsNCg0KICAgIHZvaWQgUmVjYWxjU2l6ZXMoKTsN
CiAgICB3eFNpemUgQ2FsY01pbigpOw0KDQogICAgaW50IEdldE9yaWVudGF0aW9uKCkNCiAgICAg
ICAgeyByZXR1cm4gbV9vcmllbnQ7IH0NCg0KcHJvdGVjdGVkOg0KICAgIGludCBtX29yaWVudDsN
CiAgICBpbnQgbV9zdHJldGNoYWJsZTsNCiAgICBpbnQgbV9taW5XaWR0aDsNCiAgICBpbnQgbV9t
aW5IZWlnaHQ7DQogICAgaW50IG1fZml4ZWRXaWR0aDsNCiAgICBpbnQgbV9maXhlZEhlaWdodDsN
Cg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Qm94
U2l6ZXI7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hCb3hT
aXplcjo6c21fY2xhc3N3eEJveFNpemVyOyB9Ow0KfTsNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSB3eFN0YXRpY0JveFNpemVyOiBwdWJsaWMgd3hCb3hTaXplcg0K
ew0KcHVibGljOg0KICAgIHd4U3RhdGljQm94U2l6ZXIoIHd4U3RhdGljQm94ICpib3gsIGludCBv
cmllbnQgKTsNCg0KICAgIHZvaWQgUmVjYWxjU2l6ZXMoKTsNCiAgICB3eFNpemUgQ2FsY01pbigp
Ow0KDQogICAgd3hTdGF0aWNCb3ggKkdldFN0YXRpY0JveCgpDQogICAgICAgIHsgcmV0dXJuIG1f
c3RhdGljQm94OyB9DQoNCnByb3RlY3RlZDoNCiAgICB3eFN0YXRpY0JveCAqbV9zdGF0aWNCb3g7
DQoNCnByaXZhdGU6DQogICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eFN0
YXRpY0JveFNpemVyOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
Jnd4U3RhdGljQm94U2l6ZXI6OnNtX2NsYXNzd3hTdGF0aWNCb3hTaXplcjsgfTsNCn07DQoNCg0K
DQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4Tm90ZWJvb2tTaXpl
cjogcHVibGljIHd4U2l6ZXINCnsNCnB1YmxpYzoNCiAgICB3eE5vdGVib29rU2l6ZXIoIHd4Tm90
ZWJvb2sgKm5iICk7DQoNCiAgICB2b2lkIFJlY2FsY1NpemVzKCk7DQogICAgd3hTaXplIENhbGNN
aW4oKTsNCg0KICAgIHd4Tm90ZWJvb2sgKkdldE5vdGVib29rKCkNCiAgICAgICAgeyByZXR1cm4g
bV9ub3RlYm9vazsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgd3hOb3RlYm9vayAqbV9ub3RlYm9vazsN
Cg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4Tm90
ZWJvb2tTaXplcjsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3
eE5vdGVib29rU2l6ZXI6OnNtX2NsYXNzd3hOb3RlYm9va1NpemVyOyB9Ow0KfTsNCiMgNjYgIi4u
Ly4uL2luY2x1ZGUvd3gvd3guaCIgMg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbWRpLmgiIDEN
CiMgOSAiLi4vLi4vaW5jbHVkZS93eC9tZGkuaCINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9tc3cv
bWRpLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L21kaS5oIg0KI3ByYWdtYSBpbnRl
cmZhY2UgIm1kaS5oIg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4g
Y29uc3QgY2hhciogd3hGcmFtZU5hbWVTdHI7DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBl
eHRlcm4gY29uc3QgY2hhciogd3hTdGF0dXNMaW5lTmFtZVN0cjsNCg0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hNRElDbGllbnRXaW5kb3c7DQpjbGFzcyBfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSB3eE1ESUNoaWxkRnJhbWU7DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1
dGVfXygoZGxsaW1wb3J0KSkgd3hNRElQYXJlbnRGcmFtZSA6IHB1YmxpYyB3eEZyYW1lDQp7DQog
ICAgcHVibGljOiBzdGF0aWMgd3hDbGFzc0luZm8gc21fY2xhc3N3eE1ESVBhcmVudEZyYW1lOyB3
eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4TURJUGFyZW50RnJh
bWU6OnNtX2NsYXNzd3hNRElQYXJlbnRGcmFtZTsgfQ0KDQpwdWJsaWM6DQogICAgd3hNRElQYXJl
bnRGcmFtZSgpOw0KICAgIHd4TURJUGFyZW50RnJhbWUod3hXaW5kb3cgKnBhcmVudCwNCiAgICAg
ICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAgICAgICBjb25z
dCB3eFN0cmluZyYgdGl0bGUsDQogICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBw
b3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6
ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgICAgICBsb25nIHN0eWxl
ID0gKDB4MDgwMCB8IDB4MDA0MCB8IDB4MDQwMCB8IDB4MDIwMCB8IDB4MjAwMDAwMDAgfCAweDAw
NDAwMDAwKSB8IDB4ODAwMDAwMDAgfCAweDQwMDAwMDAwLA0KICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eEZyYW1lTmFtZVN0cikNCiAgICB7DQogICAgICAgIENy
ZWF0ZShwYXJlbnQsIGlkLCB0aXRsZSwgcG9zLCBzaXplLCBzdHlsZSwgbmFtZSk7DQogICAgfQ0K
DQogICAgfnd4TURJUGFyZW50RnJhbWUoKTsNCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpw
YXJlbnQsDQogICAgICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICBj
b25zdCB3eFN0cmluZyYgdGl0bGUsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9z
ID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXpl
ID0gd3hEZWZhdWx0U2l6ZSwNCiAgICAgICAgICAgICAgICBsb25nIHN0eWxlID0gKDB4MDgwMCB8
IDB4MDA0MCB8IDB4MDQwMCB8IDB4MDIwMCB8IDB4MjAwMDAwMDAgfCAweDAwNDAwMDAwKSB8IDB4
ODAwMDAwMDAgfCAweDQwMDAwMDAwLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBu
YW1lID0gd3hGcmFtZU5hbWVTdHIpOw0KDQoNCg0KDQoNCiAgICB3eE1ESUNoaWxkRnJhbWUgKkdl
dEFjdGl2ZUNoaWxkKCkgY29uc3Q7DQoNCg0KICAgIHd4TURJQ2xpZW50V2luZG93ICpHZXRDbGll
bnRXaW5kb3coKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFdpbmRvdzsgfQ0KDQoNCg0KICAgIHZp
cnR1YWwgd3hNRElDbGllbnRXaW5kb3cgKk9uQ3JlYXRlQ2xpZW50KHZvaWQpOw0KDQoNCiAgICB3
eE1lbnUqIEdldFdpbmRvd01lbnUoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd01lbnU7IH07DQog
ICAgdm9pZCBTZXRXaW5kb3dNZW51KHd4TWVudSogbWVudSkgOw0KDQoNCg0KICAgIHZpcnR1YWwg
dm9pZCBDYXNjYWRlKCk7DQogICAgdmlydHVhbCB2b2lkIFRpbGUoKTsNCiAgICB2aXJ0dWFsIHZv
aWQgQXJyYW5nZUljb25zKCk7DQogICAgdmlydHVhbCB2b2lkIEFjdGl2YXRlTmV4dCgpOw0KICAg
IHZpcnR1YWwgdm9pZCBBY3RpdmF0ZVByZXZpb3VzKCk7DQoNCg0KDQoNCg0KICAgIHZvaWQgT25T
eXNDb2xvdXJDaGFuZ2VkKHd4U3lzQ29sb3VyQ2hhbmdlZEV2ZW50JiBldmVudCk7DQoNCiAgICB2
b2lkIE9uU2l6ZSh3eFNpemVFdmVudCYgZXZlbnQpOw0KDQogICAgYm9vbCBIYW5kbGVBY3RpdmF0
ZShpbnQgc3RhdGUsIGJvb2wgbWluaW1pemVkLCBXWEhXTkQgYWN0aXZhdGUpOw0KICAgIGJvb2wg
SGFuZGxlQ29tbWFuZChXWFdPUkQgaWQsIFdYV09SRCBjbWQsIFdYSFdORCBjb250cm9sKTsNCg0K
DQogICAgdmlydHVhbCBsb25nIE1TV1dpbmRvd1Byb2MoV1hVSU5UIG5Nc2csIFdYV1BBUkFNIHdQ
YXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCg0KICAgIHZpcnR1YWwgbG9uZyBNU1dEZWZXaW5kb3dQ
cm9jKFdYVUlOVCwgV1hXUEFSQU0sIFdYTFBBUkFNKTsNCiAgICB2aXJ0dWFsIGJvb2wgTVNXVHJh
bnNsYXRlTWVzc2FnZShXWE1TRyogbXNnKTsNCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9p
ZCBJbnRlcm5hbFNldE1lbnVCYXIoKTsNCg0KICAgIHd4TURJQ2xpZW50V2luZG93ICogbV9jbGll
bnRXaW5kb3c7DQogICAgd3hNRElDaGlsZEZyYW1lICogbV9jdXJyZW50Q2hpbGQ7DQoNCiAgICB3
eE1lbnUqIG1fd2luZG93TWVudTsNCg0KDQogICAgYm9vbCBtX3BhcmVudEZyYW1lQWN0aXZlOw0K
DQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3
eE1ESUNoaWxkRnJhbWU7DQoNCiAgICBwcml2YXRlOiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxl
RW50cnkgc21fZXZlbnRUYWJsZUVudHJpZXNbXTtwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCB3eEV2
ZW50VGFibGUgc21fZXZlbnRUYWJsZTsgdmlydHVhbCBjb25zdCB3eEV2ZW50VGFibGUqIEdldEV2
ZW50VGFibGUoKSBjb25zdDsNCn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxs
aW1wb3J0KSkgd3hNRElDaGlsZEZyYW1lIDogcHVibGljIHd4RnJhbWUNCnsNCnB1YmxpYzoNCiAg
ICB3eE1ESUNoaWxkRnJhbWUoKSB7IEluaXQoKTsgfQ0KICAgIHd4TURJQ2hpbGRGcmFtZSh3eE1E
SVBhcmVudEZyYW1lICpwYXJlbnQsDQogICAgICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQs
DQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiB0aXRsZSwNCiAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAg
ICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAoMHgwODAwIHwgMHgwMDQwIHwgMHgwNDAwIHwgMHgw
MjAwIHwgMHgyMDAwMDAwMCB8IDB4MDA0MDAwMDApLA0KICAgICAgICAgICAgICAgICAgICBjb25z
dCB3eFN0cmluZyYgbmFtZSA9IHd4RnJhbWVOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAgSW5pdCgp
Ow0KDQogICAgICAgIENyZWF0ZShwYXJlbnQsIGlkLCB0aXRsZSwgcG9zLCBzaXplLCBzdHlsZSwg
bmFtZSk7DQogICAgfQ0KDQogICAgfnd4TURJQ2hpbGRGcmFtZSgpOw0KDQogICAgYm9vbCBDcmVh
dGUod3hNRElQYXJlbnRGcmFtZSAqcGFyZW50LA0KICAgICAgICAgICAgICAgIHd4V2luZG93SUQg
aWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHRpdGxlLA0KICAgICAgICAgICAg
ICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uLA0KICAgICAgICAgICAg
ICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAg
bG9uZyBzdHlsZSA9ICgweDA4MDAgfCAweDAwNDAgfCAweDA0MDAgfCAweDAyMDAgfCAweDIwMDAw
MDAwIHwgMHgwMDQwMDAwMCksDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUg
PSB3eEZyYW1lTmFtZVN0cik7DQoNCiAgICB2aXJ0dWFsIGJvb2wgSXNUb3BMZXZlbCgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0NCg0KDQogICAgdmlydHVhbCB2b2lkIE1heGltaXplKGJvb2wgbWF4aW1p
emUgPSAxKTsNCiAgICB2aXJ0dWFsIHZvaWQgUmVzdG9yZSgpOw0KICAgIHZpcnR1YWwgdm9pZCBB
Y3RpdmF0ZSgpOw0KDQoNCg0KDQoNCiAgICBib29sIEhhbmRsZU1ESUFjdGl2YXRlKGxvbmcgYkFj
dGl2YXRlLCBXWEhXTkQsIFdYSFdORCk7DQogICAgYm9vbCBIYW5kbGVXaW5kb3dQb3NDaGFuZ2lu
Zyh2b2lkICpscFBvcyk7DQogICAgYm9vbCBIYW5kbGVDb21tYW5kKFdYV09SRCBpZCwgV1hXT1JE
IGNtZCwgV1hIV05EIGNvbnRyb2wpOw0KDQogICAgdmlydHVhbCBsb25nIE1TV1dpbmRvd1Byb2Mo
V1hVSU5UIG1lc3NhZ2UsIFdYV1BBUkFNIHdQYXJhbSwgV1hMUEFSQU0gbFBhcmFtKTsNCiAgICB2
aXJ0dWFsIGxvbmcgTVNXRGVmV2luZG93UHJvYyhXWFVJTlQgbWVzc2FnZSwgV1hXUEFSQU0gd1Bh
cmFtLCBXWExQQVJBTSBsUGFyYW0pOw0KICAgIHZpcnR1YWwgYm9vbCBNU1dUcmFuc2xhdGVNZXNz
YWdlKFdYTVNHICptc2cpOw0KDQogICAgdmlydHVhbCB2b2lkIE1TV0Rlc3Ryb3lXaW5kb3coKTsN
Cg0KICAgIGJvb2wgUmVzZXRXaW5kb3dTdHlsZSh2b2lkICp2cmVjdCk7DQoNCiAgICB2b2lkIE9u
SWRsZSh3eElkbGVFdmVudCYgZXZlbnQpOw0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB2b2lk
IERvR2V0UG9zaXRpb24oaW50ICp4LCBpbnQgKnkpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCBE
b1NldENsaWVudFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCiAgICB2aXJ0dWFsIHZvaWQg
SW50ZXJuYWxTZXRNZW51QmFyKCk7DQoNCg0KICAgIHZvaWQgSW5pdCgpOw0KDQpwcml2YXRlOg0K
ICAgIGJvb2wgbV9uZWVkc1Jlc2l6ZTsNCg0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2
ZW50VGFibGVFbnRyeSBzbV9ldmVudFRhYmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNv
bnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVudFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJs
ZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZv
IHNtX2NsYXNzd3hNRElDaGlsZEZyYW1lOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJnd4TURJQ2hpbGRGcmFtZTo6c21fY2xhc3N3eE1ESUNoaWxkRnJhbWU7IH0N
Cn07DQoNCg0KDQoNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hNRElDbGll
bnRXaW5kb3cgOiBwdWJsaWMgd3hXaW5kb3cNCnsNCnB1YmxpYzoNCiAgICB3eE1ESUNsaWVudFdp
bmRvdygpIHsgSW5pdCgpOyB9DQogICAgd3hNRElDbGllbnRXaW5kb3cod3hNRElQYXJlbnRGcmFt
ZSAqcGFyZW50LCBsb25nIHN0eWxlID0gMCkNCiAgICB7DQogICAgICAgIEluaXQoKTsNCg0KICAg
ICAgICBDcmVhdGVDbGllbnQocGFyZW50LCBzdHlsZSk7DQogICAgfQ0KDQoNCiAgICB2aXJ0dWFs
IGJvb2wgQ3JlYXRlQ2xpZW50KHd4TURJUGFyZW50RnJhbWUgKnBhcmVudCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAweDgwMDAwMDAwIHwgMHg0MDAwMDAwMCk7
DQoNCg0KICAgIHZvaWQgT25TY3JvbGwod3hTY3JvbGxFdmVudCYgZXZlbnQpOw0KDQogICAgdmly
dHVhbCB2b2lkIERvU2V0U2l6ZShpbnQgeCwgaW50IHksDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2l6ZUZsYWdzID0gKDB4MDAwMXwweDAwMDIpKTsNCnByb3RlY3RlZDoNCiAgICB2b2lkIElu
aXQoKSB7IG1fc2Nyb2xsWCA9IG1fc2Nyb2xsWSA9IDA7IH0NCg0KICAgIGludCBtX3Njcm9sbFgs
IG1fc2Nyb2xsWTsNCg0KcHJpdmF0ZToNCiAgICBwcml2YXRlOiBzdGF0aWMgY29uc3Qgd3hFdmVu
dFRhYmxlRW50cnkgc21fZXZlbnRUYWJsZUVudHJpZXNbXTtwcm90ZWN0ZWQ6IHN0YXRpYyBjb25z
dCB3eEV2ZW50VGFibGUgc21fZXZlbnRUYWJsZTsgdmlydHVhbCBjb25zdCB3eEV2ZW50VGFibGUq
IEdldEV2ZW50VGFibGUoKSBjb25zdDsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBz
bV9jbGFzc3d4TURJQ2xpZW50V2luZG93OyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gJnd4TURJQ2xpZW50V2luZG93OjpzbV9jbGFzc3d4TURJQ2xpZW50V2luZG93
OyB9DQp9Ow0KIyAxMCAiLi4vLi4vaW5jbHVkZS93eC9tZGkuaCIgMg0KIyA2OCAiLi4vLi4vaW5j
bHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvc2Nyb2x3aW4uaCIgMQ0KDQoN
Cg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L2dlbmVyaWMvc2Nyb2x3aW4uaCIgMQ0KIyAxNiAiLi4v
Li4vaW5jbHVkZS93eC9nZW5lcmljL3Njcm9sd2luLmgiDQojcHJhZ21hIGludGVyZmFjZSAic2Ny
b2x3aW4uaCINCiMgMjYgIi4uLy4uL2luY2x1ZGUvd3gvZ2VuZXJpYy9zY3JvbHdpbi5oIg0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4UGFuZWxOYW1lU3Ry
Ow0KIyAzNSAiLi4vLi4vaW5jbHVkZS93eC9nZW5lcmljL3Njcm9sd2luLmgiDQpjbGFzcyBfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFNjcm9sbGVkV2luZG93IDogcHVibGljIHd4UGFuZWwN
CnsNCnB1YmxpYzoNCiAgICB3eFNjcm9sbGVkV2luZG93KCk7DQogICAgd3hTY3JvbGxlZFdpbmRv
dyh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCA9
IC0xLA0KICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0
UG9zaXRpb24sDQogICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERl
ZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9ICgweDQwMDAwMDAw
IHwgMHg4MDAwMDAwMCksDQogICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFt
ZSA9IHd4UGFuZWxOYW1lU3RyKQ0KICAgIHsNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIHBv
cywgc2l6ZSwgc3R5bGUsIG5hbWUpOw0KICAgIH0NCg0KICAgIH53eFNjcm9sbGVkV2luZG93KCk7
DQoNCiAgICBib29sIENyZWF0ZSh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAgICAgIHd4
V2luZG93SUQgaWQsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZh
dWx0UG9zaXRpb24sDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZh
dWx0U2l6ZSwNCiAgICAgICAgICAgICAgICBsb25nIHN0eWxlID0gKDB4NDAwMDAwMDAgfCAweDgw
MDAwMDAwKSwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4UGFuZWxO
YW1lU3RyKTsNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0VGFyZ2V0V2luZG93KCB3
eFdpbmRvdyAqdGFyZ2V0ICk7DQogICAgdmlydHVhbCB3eFdpbmRvdyAqR2V0VGFyZ2V0V2luZG93
KCk7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0U2Nyb2xsYmFycyhpbnQgcGl4ZWxzUGVy
VW5pdFgsIGludCBwaXhlbHNQZXJVbml0WSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG5vVW5pdHNYLCBpbnQgbm9Vbml0c1ksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCB4UG9zID0gMCwgaW50IHlQb3MgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG5vUmVmcmVzaCA9IDAgKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIFNjcm9sbChpbnQg
eF9wb3MsIGludCB5X3Bvcyk7DQoNCg0KDQoNCg0KDQogICAgaW50IEdldFNjcm9sbFBhZ2VTaXpl
KGludCBvcmllbnQpIGNvbnN0Ow0KICAgIHZvaWQgU2V0U2Nyb2xsUGFnZVNpemUoaW50IG9yaWVu
dCwgaW50IHBhZ2VTaXplKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBHZXRTY3JvbGxQaXhlbHNQZXJV
bml0KGludCAqeF91bml0LCBpbnQgKnlfdW5pdCkgY29uc3Q7DQoNCg0KDQoNCg0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgRW5hYmxlU2Nyb2xsaW5nKGJvb2wgeF9zY3JvbGxpbmcsIGJvb2wgeV9zY3Jv
bGxpbmcpOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgR2V0Vmlld1N0YXJ0KGludCAqeCwgaW50ICp5
KSBjb25zdDsNCg0KICAgIHZvaWQgVmlld1N0YXJ0KGludCAqeCwgaW50ICp5KSBjb25zdA0KICAg
ICAgIHsgR2V0Vmlld1N0YXJ0KCB4LCB5ICk7IH0NCg0KDQogICAgdmlydHVhbCB2b2lkIEdldFZp
cnR1YWxTaXplKGludCAqeCwgaW50ICp5KSBjb25zdDsNCg0KDQogICAgdm9pZCBTZXRTY2FsZShk
b3VibGUgeHMsIGRvdWJsZSB5cykgeyBtX3NjYWxlWCA9IHhzOyBtX3NjYWxlWSA9IHlzOyB9DQog
ICAgZG91YmxlIEdldFNjYWxlWCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVYOyB9DQogICAgZG91
YmxlIEdldFNjYWxlWSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVZOyB9DQoNCiAgICB2aXJ0dWFs
IHZvaWQgQ2FsY1Njcm9sbGVkUG9zaXRpb24oaW50IHgsIGludCB5LCBpbnQgKnh4LCBpbnQgKnl5
KSBjb25zdDsNCiAgICB2aXJ0dWFsIHZvaWQgQ2FsY1Vuc2Nyb2xsZWRQb3NpdGlvbihpbnQgeCwg
aW50IHksIGludCAqeHgsIGludCAqeXkpIGNvbnN0Ow0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgQWRq
dXN0U2Nyb2xsYmFycyh2b2lkKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIE9uRHJhdyh3eERDJiAp
IHt9Ow0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBQcmVwYXJlREMod3hEQyYgZGMpOw0KDQoNCiAg
ICB2b2lkIE9uU2Nyb2xsKHd4U2Nyb2xsV2luRXZlbnQmIGV2ZW50KTsNCiAgICB2b2lkIE9uU2l6
ZSh3eFNpemVFdmVudCYgZXZlbnQpOw0KICAgIHZvaWQgT25QYWludCh3eFBhaW50RXZlbnQmIGV2
ZW50KTsNCiAgICB2b2lkIE9uQ2hhcih3eEtleUV2ZW50JiBldmVudCk7DQoNCg0KICAgIHZpcnR1
YWwgaW50IENhbGNTY3JvbGxJbmMod3hTY3JvbGxXaW5FdmVudCYgZXZlbnQpOw0KDQpwcm90ZWN0
ZWQ6DQogICAgd3hXaW5kb3cgKm1fdGFyZ2V0V2luZG93Ow0KICAgIGludCBtX3hTY3JvbGxQaXhl
bHNQZXJMaW5lOw0KICAgIGludCBtX3lTY3JvbGxQaXhlbHNQZXJMaW5lOw0KICAgIGJvb2wgbV94
U2Nyb2xsaW5nRW5hYmxlZDsNCiAgICBib29sIG1feVNjcm9sbGluZ0VuYWJsZWQ7DQogICAgaW50
IG1feFNjcm9sbFBvc2l0aW9uOw0KICAgIGludCBtX3lTY3JvbGxQb3NpdGlvbjsNCiAgICBpbnQg
bV94U2Nyb2xsTGluZXM7DQogICAgaW50IG1feVNjcm9sbExpbmVzOw0KICAgIGludCBtX3hTY3Jv
bGxMaW5lc1BlclBhZ2U7DQogICAgaW50IG1feVNjcm9sbExpbmVzUGVyUGFnZTsNCiAgICBkb3Vi
bGUgbV9zY2FsZVg7DQogICAgZG91YmxlIG1fc2NhbGVZOw0KDQpwcml2YXRlOg0KICAgIHByaXZh
dGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRhYmxlRW50cmllc1td
O3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVudFRhYmxlOyB2aXJ0
dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0KICAgIHB1Ymxp
Yzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hTY3JvbGxlZFdpbmRvdzsgd3hDbGFzc0lu
Zm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFNjcm9sbGVkV2luZG93OjpzbV9j
bGFzc3d4U2Nyb2xsZWRXaW5kb3c7IH0NCn07DQojIDUgIi4uLy4uL2luY2x1ZGUvd3gvc2Nyb2x3
aW4uaCIgMg0KIyA2OSAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1
ZGUvd3gvc3RhdHVzYnIuaCIgMQ0KIyAyMSAiLi4vLi4vaW5jbHVkZS93eC9zdGF0dXNici5oIg0K
Y2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hTdGF0dXNCYXJCYXNlIDogcHVibGlj
IHd4V2luZG93DQp7DQpwdWJsaWM6DQogICAgd3hTdGF0dXNCYXJCYXNlKCkgeyBtX3N0YXR1c1dp
ZHRocyA9IF9fbnVsbDsgfQ0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0RmllbGRzQ291bnQoaW50
IG51bWJlciA9IDEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAq
d2lkdGhzID0gKGNvbnN0IGludCAqKSBfX251bGwpID0gMDsNCiAgICBpbnQgR2V0RmllbGRzQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX25GaWVsZHM7IH0NCg0KDQogICAgdmlydHVhbCB2b2lkIFNl
dFN0YXR1c1RleHQoY29uc3Qgd3hTdHJpbmcmIHRleHQsIGludCBudW1iZXIgPSAwKSA9IDA7DQog
ICAgdmlydHVhbCB3eFN0cmluZyBHZXRTdGF0dXNUZXh0KGludCBudW1iZXIgPSAwKSBjb25zdCA9
IDA7DQoNCg0KICAgIHZpcnR1YWwgdm9pZCBTZXRTdGF0dXNXaWR0aHMoaW50IG4sIGNvbnN0IGlu
dCB3aWR0aHNbXSkgPSAwOw0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgR2V0RmllbGRSZWN0KGludCBp
LCB3eFJlY3QmIHJlY3QpIGNvbnN0ID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldE1pbkhl
aWdodChpbnQgaGVpZ2h0KSA9IDA7DQoNCg0KICAgIHZpcnR1YWwgaW50IEdldEJvcmRlclgoKSBj
b25zdCA9IDA7DQogICAgdmlydHVhbCBpbnQgR2V0Qm9yZGVyWSgpIGNvbnN0ID0gMDsNCg0KcHJv
dGVjdGVkOg0KICAgIGludCBtX25GaWVsZHM7DQogICAgaW50ICptX3N0YXR1c1dpZHRoczsNCn07
DQoNCg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L21zdy9zdGF0YnI5NS5oIiAxDQojIDE2ICIuLi8u
Li9pbmNsdWRlL3d4L21zdy9zdGF0YnI5NS5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInN0YXRicjk1
LmgiDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RhdHVzQmFy
OTUgOiBwdWJsaWMgd3hTdGF0dXNCYXJCYXNlDQp7DQpwdWJsaWM6DQoNCiAgICB3eFN0YXR1c0Jh
cjk1KCk7DQogICAgd3hTdGF0dXNCYXI5NSh3eFdpbmRvdyAqcGFyZW50LA0KICAgICAgICAgICAg
ICAgICAgd3hXaW5kb3dJRCBpZCA9IC0xLA0KICAgICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9
IDB4MDAxMCwNCiAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBuYW1lID0gd3hFbXB0
eVN0cmluZykNCiAgICB7DQogICAgICAgICh2b2lkKUNyZWF0ZShwYXJlbnQsIGlkLCBzdHlsZSwg
bmFtZSk7DQogICAgfQ0KDQogICAgYm9vbCBDcmVhdGUod3hXaW5kb3cgKnBhcmVudCwNCiAgICAg
ICAgICAgICAgICB3eFdpbmRvd0lEIGlkID0gLTEsDQogICAgICAgICAgICAgICAgbG9uZyBzdHls
ZSA9IDB4MDAxMCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4RW1w
dHlTdHJpbmcpOw0KDQogICAgdmlydHVhbCB+d3hTdGF0dXNCYXI5NSgpOw0KDQoNCiAgICB2aXJ0
dWFsIHZvaWQgU2V0RmllbGRzQ291bnQoaW50IG51bWJlciA9IDEsIGNvbnN0IGludCAqd2lkdGhz
ID0gX19udWxsKTsNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldFN0YXR1c1RleHQoY29uc3Qgd3hT
dHJpbmcmIHRleHQsIGludCBudW1iZXIgPSAwKTsNCiAgICB2aXJ0dWFsIHd4U3RyaW5nIEdldFN0
YXR1c1RleHQoaW50IG51bWJlciA9IDApIGNvbnN0Ow0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0
U3RhdHVzV2lkdGhzKGludCBuLCBjb25zdCBpbnQgd2lkdGhzX2ZpZWxkW10pOw0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgU2V0TWluSGVpZ2h0KGludCBoZWlnaHQpOw0KDQoNCiAgICB2aXJ0dWFsIGJv
b2wgR2V0RmllbGRSZWN0KGludCBpLCB3eFJlY3QmIHJlY3QpIGNvbnN0Ow0KDQoNCiAgICB2aXJ0
dWFsIGludCBHZXRCb3JkZXJYKCkgY29uc3Q7DQogICAgdmlydHVhbCBpbnQgR2V0Qm9yZGVyWSgp
IGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBDb3B5RmllbGRzV2lkdGgoY29uc3QgaW50
IHdpZHRoc1tdKTsNCiAgICB2b2lkIFNldEZpZWxkc1dpZHRoKCk7DQoNCg0KICAgIHZvaWQgRG9N
b3ZlV2luZG93KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsNCg0KcHJpdmF0
ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFzc3d4U3RhdHVzQmFyOTU7
IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hTdGF0dXNCYXI5
NTo6c21fY2xhc3N3eFN0YXR1c0Jhcjk1OyB9Ow0KfTsNCiMgNTUgIi4uLy4uL2luY2x1ZGUvd3gv
c3RhdHVzYnIuaCIgMg0KDQogICAgdHlwZWRlZiB3eFN0YXR1c0Jhcjk1IHd4U3RhdHVzQmFyUmVh
bDsNCiMgNjYgIi4uLy4uL2luY2x1ZGUvd3gvc3RhdHVzYnIuaCINCmNsYXNzIF9fYXR0cmlidXRl
X18oKGRsbGltcG9ydCkpIHd4U3RhdHVzQmFyIDogcHVibGljIHd4U3RhdHVzQmFyUmVhbA0Kew0K
cHVibGljOg0KICAgIHd4U3RhdHVzQmFyKCkgeyB9DQogICAgd3hTdGF0dXNCYXIod3hXaW5kb3cg
KnBhcmVudCwNCiAgICAgICAgICAgICAgICB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAgICAg
IGNvbnN0IHd4UG9pbnQmID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAgICAgICAgY29u
c3Qgd3hTaXplJiA9IHd4RGVmYXVsdFNpemUsDQogICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9
IDB4MDAxMCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4UGFuZWxO
YW1lU3RyKQ0KICAgIHsNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIHN0eWxlLCBuYW1lKTsN
CiAgICB9DQogICAgd3hTdGF0dXNCYXIod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICAg
ICB3eFdpbmRvd0lEIGlkLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUsDQogICAgICAgICAg
ICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFBhbmVsTmFtZVN0cikNCiAgICB7DQogICAg
ICAgIENyZWF0ZShwYXJlbnQsIGlkLCBzdHlsZSwgbmFtZSk7DQogICAgfQ0KDQpwcml2YXRlOg0K
ICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hTdGF0dXNCYXI7IHd4Q2xh
c3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hTdGF0dXNCYXI6OnNtX2Ns
YXNzd3hTdGF0dXNCYXI7IH0NCn07DQojIDcwICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCg0K
IyAxICIuLi8uLi9pbmNsdWRlL3d4L2Nob2ljZGxnLmgiIDENCg0KDQoNCiMgMSAiLi4vLi4vaW5j
bHVkZS93eC9nZW5lcmljL2Nob2ljZGdnLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvZ2Vu
ZXJpYy9jaG9pY2RnZy5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImNob2ljZGdnLmgiDQoNCg0KDQoN
CmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4TGlzdEJveDsNCg0KDQoNCg0KDQoN
CmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U2luZ2xlQ2hvaWNlRGlhbG9nOiBw
dWJsaWMgd3hEaWFsb2cNCnsNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBzbV9jbGFz
c3d4U2luZ2xlQ2hvaWNlRGlhbG9nOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJnd4U2luZ2xlQ2hvaWNlRGlhbG9nOjpzbV9jbGFzc3d4U2luZ2xlQ2hvaWNlRGlh
bG9nOyB9DQoNCnB1YmxpYzoNCiAgICB3eFNpbmdsZUNob2ljZURpYWxvZyh3eFdpbmRvdyAqcGFy
ZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBtZXNzYWdlLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBjYXB0aW9uLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBuLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHd4U3RyaW5nICpjaG9pY2VzLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipjbGll
bnREYXRhID0gKGNoYXIgKiopX19udWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
c3R5bGUgPSAoKDB4MDgwMCB8IDB4MjAwMDAwMDApfDB4MDAwMDAwMDQgfCAweDAwMDAwMDEwIHwg
d3hDRU5UUkUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9
IHd4RGVmYXVsdFBvc2l0aW9uKTsNCg0KICAgIHd4U2luZ2xlQ2hvaWNlRGlhbG9nKHd4V2luZG93
ICpwYXJlbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG1lc3Nh
Z2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGNhcHRpb24sDQog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmdMaXN0JiBjaG9pY2VzLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipjbGllbnREYXRhID0gKGNoYXIgKiopX19udWxs
LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAoKDB4MDgwMCB8IDB4MjAw
MDAwMDApfDB4MDAwMDAwMDQgfCAweDAwMDAwMDEwIHwgd3hDRU5UUkUpLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHd4UG9pbnQmIHBvcyA9IHd4RGVmYXVsdFBvc2l0aW9uKTsNCg0K
ICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsDQogICAgICAgICAgICAgICAgY29uc3Qg
d3hTdHJpbmcmIG1lc3NhZ2UsDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGNhcHRp
b24sDQogICAgICAgICAgICAgICAgaW50IG4sDQogICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJp
bmcgKmNob2ljZXMsDQogICAgICAgICAgICAgICAgY2hhciAqKmNsaWVudERhdGEgPSAoY2hhciAq
KilfX251bGwsDQogICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9ICgoMHgwODAwIHwgMHgyMDAw
MDAwMCl8MHgwMDAwMDAwNCB8IDB4MDAwMDAwMTAgfCB3eENFTlRSRSksDQogICAgICAgICAgICAg
ICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24pOw0KDQogICAgYm9vbCBD
cmVhdGUod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYg
bWVzc2FnZSwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgY2FwdGlvbiwNCiAgICAg
ICAgICAgICAgICBjb25zdCB3eFN0cmluZ0xpc3QmIGNob2ljZXMsDQogICAgICAgICAgICAgICAg
Y2hhciAqKmNsaWVudERhdGEgPSAoY2hhciAqKilfX251bGwsDQogICAgICAgICAgICAgICAgbG9u
ZyBzdHlsZSA9ICgoMHgwODAwIHwgMHgyMDAwMDAwMCl8MHgwMDAwMDAwNCB8IDB4MDAwMDAwMTAg
fCB3eENFTlRSRSksDQogICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZh
dWx0UG9zaXRpb24pOw0KDQogICAgdm9pZCBTZXRTZWxlY3Rpb24oaW50IHNlbCk7DQogICAgaW50
IEdldFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9DQogICAgd3hTdHJp
bmcgR2V0U3RyaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdTZWxlY3Rpb247
IH0NCg0KDQogICAgY2hhciAqR2V0U2VsZWN0aW9uQ2xpZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJu
IChjaGFyICopbV9jbGllbnREYXRhOyB9DQoNCg0KICAgIHZvaWQgT25PSyh3eENvbW1hbmRFdmVu
dCYgZXZlbnQpOw0KICAgIHZvaWQgT25MaXN0Qm94RENsaWNrKHd4Q29tbWFuZEV2ZW50JiBldmVu
dCk7DQoNCnByb3RlY3RlZDoNCiAgICBpbnQgbV9zZWxlY3Rpb247DQogICAgbG9uZyBtX2RpYWxv
Z1N0eWxlOw0KICAgIHd4U3RyaW5nIG1fc3RyaW5nU2VsZWN0aW9uOw0KICAgIHd4TGlzdEJveCAq
bV9saXN0Ym94Ow0KDQpwcml2YXRlOg0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50
VGFibGVFbnRyeSBzbV9ldmVudFRhYmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0
IHd4RXZlbnRUYWJsZSBzbV9ldmVudFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSog
R2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0KfTsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkg
d3hTdHJpbmcgd3hHZXRTaW5nbGVDaG9pY2UoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IHd4U3RyaW5nJiBjYXB0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4sIGNvbnN0
IHd4U3RyaW5nICpjaG9pY2VzLCB3eFdpbmRvdyAqcGFyZW50ID0gKHd4V2luZG93ICopIF9fbnVs
bCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB4ID0gLTEsIGludCB5ID0gLTEsIGJvb2wg
Y2VudHJlID0gMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCA9IDIwMCwgaW50
IGhlaWdodCA9IDE1MCk7DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nIHd4
R2V0U2luZ2xlQ2hvaWNlKGNvbnN0IHd4U3RyaW5nJiBtZXNzYWdlLCBjb25zdCB3eFN0cmluZyYg
Y2FwdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCBjaGFyICpjaG9pY2VzW10s
IHd4V2luZG93ICpwYXJlbnQgPSAod3hXaW5kb3cgKikgX19udWxsLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHggPSAtMSwgaW50IHkgPSAtMSwgYm9vbCBjZW50cmUgPSAxLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHdpZHRoID0gMjAwLCBpbnQgaGVpZ2h0ID0gMTUwKTsNCg0K
DQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGludCB3eEdldFNpbmdsZUNob2ljZUluZGV4
KGNvbnN0IHd4U3RyaW5nJiBtZXNzYWdlLCBjb25zdCB3eFN0cmluZyYgY2FwdGlvbiwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBuLCBjb25zdCB3eFN0cmluZyAqY2hvaWNlcywgd3hX
aW5kb3cgKnBhcmVudCA9ICh3eFdpbmRvdyAqKSBfX251bGwsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgeCA9IC0xLCBpbnQgeSA9IC0xLCBib29sIGNlbnRyZSA9IDEsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGggPSAyMDAsIGludCBoZWlnaHQgPSAxNTApOw0K
DQpfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBpbnQgd3hHZXRTaW5nbGVDaG9pY2VJbmRleChj
b25zdCB3eFN0cmluZyYgbWVzc2FnZSwgY29uc3Qgd3hTdHJpbmcmIGNhcHRpb24sDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbiwgY2hhciAqY2hvaWNlc1tdLCB3eFdpbmRvdyAqcGFy
ZW50ID0gKHd4V2luZG93ICopIF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB4ID0gLTEsIGludCB5ID0gLTEsIGJvb2wgY2VudHJlID0gMSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB3aWR0aCA9IDIwMCwgaW50IGhlaWdodCA9IDE1MCk7DQoNCg0KX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgdm9pZCogd3hHZXRTaW5nbGVDaG9pY2VEYXRhKGNvbnN0IHd4
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCB3eFN0cmluZyYgY2FwdGlvbiwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbiwgY29uc3Qgd3hTdHJpbmcgKmNob2ljZXMsIHZvaWQgKipjbGll
bnRfZGF0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eFdpbmRvdyAqcGFyZW50ID0g
KHd4V2luZG93ICopIF9fbnVsbCwgaW50IHggPSAtMSwgaW50IHkgPSAtMSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNlbnRyZSA9IDEsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHdpZHRoID0gMjAwLCBpbnQgaGVpZ2h0ID0gMTUwKTsNCg0KX19hdHRyaWJ1dGVf
XygoZGxsaW1wb3J0KSkgdm9pZCogd3hHZXRTaW5nbGVDaG9pY2VEYXRhKGNvbnN0IHd4U3RyaW5n
JiBtZXNzYWdlLCBjb25zdCB3eFN0cmluZyYgY2FwdGlvbiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbiwgY2hhciAqY2hvaWNlc1tdLCB2b2lkICoqY2xpZW50X2RhdGEsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnBhcmVudCA9ICh3eFdpbmRvdyAqKSBf
X251bGwsIGludCB4ID0gLTEsIGludCB5ID0gLTEsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjZW50cmUgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0
aCA9IDIwMCwgaW50IGhlaWdodCA9IDE1MCk7DQojIDUgIi4uLy4uL2luY2x1ZGUvd3gvY2hvaWNk
bGcuaCIgMg0KIyA3MiAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4uL2luY2x1
ZGUvd3gvdGV4dGRsZy5oIiAxDQoNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvZ2VuZXJpYy90
ZXh0ZGxnZy5oIiAxDQojIDE2ICIuLi8uLi9pbmNsdWRlL3d4L2dlbmVyaWMvdGV4dGRsZ2cuaCIN
CiNwcmFnbWEgaW50ZXJmYWNlICJ0ZXh0ZGxnZy5oIg0KDQoNCg0KDQoNCg0KY2xhc3MgX19hdHRy
aWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hUZXh0Q3RybDsNCg0KX19hdHRyaWJ1dGVfXygoZGxsaW1w
b3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4R2V0VGV4dEZyb21Vc2VyUHJvbXB0U3RyOw0KX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4RW1wdHlTdHJpbmc7
DQoNCg0KDQoNCg0KDQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4VGV4dEVu
dHJ5RGlhbG9nIDogcHVibGljIHd4RGlhbG9nDQp7DQpwdWJsaWM6DQogICAgd3hUZXh0RW50cnlE
aWFsb2cod3hXaW5kb3cgKnBhcmVudCwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgbWVzc2FnZSwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgY2Fw
dGlvbiA9IHd4R2V0VGV4dEZyb21Vc2VyUHJvbXB0U3RyLA0KICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSA9IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICAg
ICAgICAgbG9uZyBzdHlsZSA9ICgweDAwMDAwMDA0IHwgMHgwMDAwMDAxMCB8IHd4Q0VOVFJFKSwN
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb3MgPSB3eERlZmF1bHRQb3Np
dGlvbik7DQoNCiAgICB2b2lkIFNldFZhbHVlKGNvbnN0IHd4U3RyaW5nJiB2YWwpIHsgbV92YWx1
ZSA9IHZhbDsgfQ0KICAgIHd4U3RyaW5nIEdldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQ0KDQoNCiAgICB2b2lkIE9uT0sod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsNCg0KcHJvdGVj
dGVkOg0KICAgIHd4VGV4dEN0cmwgKm1fdGV4dGN0cmw7DQogICAgd3hTdHJpbmcgbV92YWx1ZTsN
CiAgICBsb25nIG1fZGlhbG9nU3R5bGU7DQoNCnByaXZhdGU6DQogICAgcHJpdmF0ZTogc3RhdGlj
IGNvbnN0IHd4RXZlbnRUYWJsZUVudHJ5IHNtX2V2ZW50VGFibGVFbnRyaWVzW107cHJvdGVjdGVk
OiBzdGF0aWMgY29uc3Qgd3hFdmVudFRhYmxlIHNtX2V2ZW50VGFibGU7IHZpcnR1YWwgY29uc3Qg
d3hFdmVudFRhYmxlKiBHZXRFdmVudFRhYmxlKCkgY29uc3Q7DQogICAgcHVibGljOiBzdGF0aWMg
d3hDbGFzc0luZm8gc21fY2xhc3N3eFRleHRFbnRyeURpYWxvZzsgd3hDbGFzc0luZm8gKkdldENs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZ3eFRleHRFbnRyeURpYWxvZzo6c21fY2xhc3N3eFRl
eHRFbnRyeURpYWxvZzsgfQ0KfTsNCg0KDQoNCg0KDQp3eFN0cmluZyBfX2F0dHJpYnV0ZV9fKChk
bGxpbXBvcnQpKQ0Kd3hHZXRUZXh0RnJvbVVzZXIoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsDQog
ICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgY2FwdGlvbiA9IHd4R2V0VGV4dEZyb21V
c2VyUHJvbXB0U3RyLA0KICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGRlZmF1bHRf
dmFsdWUgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnBhcmVu
dCA9ICh3eFdpbmRvdyAqKSBfX251bGwsDQogICAgICAgICAgICAgICAgICBpbnQgeCA9IC0xLA0K
ICAgICAgICAgICAgICAgICAgaW50IHkgPSAtMSwNCiAgICAgICAgICAgICAgICAgIGJvb2wgY2Vu
dHJlID0gMSk7DQoNCnd4U3RyaW5nIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpDQp3eEdldFBh
c3N3b3JkRnJvbVVzZXIoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsDQogICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd3hTdHJpbmcmIGNhcHRpb24gPSB3eEdldFRleHRGcm9tVXNlclByb21wdFN0
ciwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgZGVmYXVsdF92YWx1ZSA9
IHd4RW1wdHlTdHJpbmcsDQogICAgICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnBhcmVudCA9
ICh3eFdpbmRvdyAqKSBfX251bGwpOw0KIyA1ICIuLi8uLi9pbmNsdWRlL3d4L3RleHRkbGcuaCIg
Mg0KDQoNCg0KDQoNCmxvbmcgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkNCnd4R2V0TnVtYmVy
RnJvbVVzZXIoY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2UsDQogICAgICAgICAgICAgICAgICAgIGNv
bnN0IHd4U3RyaW5nJiBwcm9tcHQsDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5n
JiBjYXB0aW9uLA0KICAgICAgICAgICAgICAgICAgICBsb25nIHZhbHVlID0gMCwNCiAgICAgICAg
ICAgICAgICAgICAgbG9uZyBtaW4gPSAwLA0KICAgICAgICAgICAgICAgICAgICBsb25nIG1heCA9
IDEwMCwNCiAgICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnBhcmVudCA9ICh3eFdpbmRvdyAq
KV9fbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZh
dWx0UG9zaXRpb24pOw0KIyA3MyAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQojIDEgIi4uLy4u
L2luY2x1ZGUvd3gvZmlsZWRsZy5oIiAxDQoNCg0KDQplbnVtDQp7DQogICAgd3hPUEVOID0gMSwN
CiAgICB3eFNBVkUgPSAyLA0KICAgIHd4T1ZFUldSSVRFX1BST01QVCA9IDQsDQogICAgd3hISURF
X1JFQURPTkxZID0gOCwNCiAgICB3eEZJTEVfTVVTVF9FWElTVCA9IDE2LA0KICAgIHd4TVVMVElQ
TEUgPSAzMg0KfTsNCg0KDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2ZpbGVkbGcuaCIgMQ0K
IyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvZmlsZWRsZy5oIg0KI3ByYWdtYSBpbnRlcmZhY2Ug
ImZpbGVkbGcuaCINCiMgMjUgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2ZpbGVkbGcuaCINCl9fYXR0
cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFyKiB3eEZpbGVTZWxlY3RvclBy
b21wdFN0cjsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4dGVybiBjb25zdCBjaGFyKiB3
eEZpbGVTZWxlY3RvckRlZmF1bHRXaWxkY2FyZFN0cjsNCg0KY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hGaWxlRGlhbG9nOiBwdWJsaWMgd3hEaWFsb2cNCnsNCnB1YmxpYzoNCiAg
ICB3eEZpbGVEaWFsb2cod3hXaW5kb3cgKnBhcmVudCwgY29uc3Qgd3hTdHJpbmcmIG1lc3NhZ2Ug
PSB3eEZpbGVTZWxlY3RvclByb21wdFN0ciwNCiAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGRlZmF1
bHREaXIgPSB3eEVtcHR5U3RyaW5nLCBjb25zdCB3eFN0cmluZyYgZGVmYXVsdEZpbGUgPSB3eEVt
cHR5U3RyaW5nLCBjb25zdCB3eFN0cmluZyYgd2lsZENhcmQgPSB3eEZpbGVTZWxlY3RvckRlZmF1
bHRXaWxkY2FyZFN0ciwNCiAgICAgICAgbG9uZyBzdHlsZSA9IDAsIGNvbnN0IHd4UG9pbnQmIHBv
cyA9IHd4RGVmYXVsdFBvc2l0aW9uKTsNCg0KICAgIHZvaWQgU2V0TWVzc2FnZShjb25zdCB3eFN0
cmluZyYgbWVzc2FnZSkgeyBtX21lc3NhZ2UgPSBtZXNzYWdlOyB9DQogICAgdm9pZCBTZXRQYXRo
KGNvbnN0IHd4U3RyaW5nJiBwYXRoKSB7IG1fcGF0aCA9IHBhdGg7IH0NCiAgICB2b2lkIFNldERp
cmVjdG9yeShjb25zdCB3eFN0cmluZyYgZGlyKSB7IG1fZGlyID0gZGlyOyB9DQogICAgdm9pZCBT
ZXRGaWxlbmFtZShjb25zdCB3eFN0cmluZyYgbmFtZSkgeyBtX2ZpbGVOYW1lID0gbmFtZTsgfQ0K
ICAgIHZvaWQgU2V0V2lsZGNhcmQoY29uc3Qgd3hTdHJpbmcmIHdpbGRDYXJkKSB7IG1fd2lsZENh
cmQgPSB3aWxkQ2FyZDsgfQ0KICAgIHZvaWQgU2V0U3R5bGUobG9uZyBzdHlsZSkgeyBtX2RpYWxv
Z1N0eWxlID0gc3R5bGU7IH0NCiAgICB2b2lkIFNldEZpbHRlckluZGV4KGludCBmaWx0ZXJJbmRl
eCkgeyBtX2ZpbHRlckluZGV4ID0gZmlsdGVySW5kZXg7IH0NCg0KICAgIHd4U3RyaW5nIEdldE1l
c3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0NCiAgICB3eFN0cmluZyBHZXRQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9DQogICAgdm9pZCBHZXRQYXRocyh3eEFycmF5U3Ry
aW5nJiBwYXRocykgY29uc3Q7DQogICAgd3hTdHJpbmcgR2V0RGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXI7IH0NCiAgICB3eFN0cmluZyBHZXRGaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsZU5hbWU7IH0NCiAgICB2b2lkIEdldEZpbGVuYW1lcyh3eEFycmF5U3RyaW5nJiBmaWxl
cykgY29uc3QgeyBmaWxlcyA9IG1fZmlsZU5hbWVzOyB9DQogICAgd3hTdHJpbmcgR2V0V2lsZGNh
cmQoKSBjb25zdCB7IHJldHVybiBtX3dpbGRDYXJkOyB9DQogICAgbG9uZyBHZXRTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlhbG9nU3R5bGU7IH0NCiAgICBpbnQgR2V0RmlsdGVySW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2ZpbHRlckluZGV4IDsgfQ0KDQogICAgaW50IFNob3dNb2RhbCgpOw0K
DQpwcm90ZWN0ZWQ6DQogICAgd3hTdHJpbmcgbV9tZXNzYWdlOw0KICAgIGxvbmcgbV9kaWFsb2dT
dHlsZTsNCiAgICB3eFdpbmRvdyAqIG1fcGFyZW50Ow0KICAgIHd4U3RyaW5nIG1fZGlyOw0KICAg
IHd4U3RyaW5nIG1fcGF0aDsNCiAgICB3eFN0cmluZyBtX2ZpbGVOYW1lOw0KICAgIHd4QXJyYXlT
dHJpbmcgbV9maWxlTmFtZXM7DQogICAgd3hTdHJpbmcgbV93aWxkQ2FyZDsNCiAgICBpbnQgbV9m
aWx0ZXJJbmRleDsNCg0KcHJpdmF0ZToNCiAgICBwdWJsaWM6IHN0YXRpYyB3eENsYXNzSW5mbyBz
bV9jbGFzc3d4RmlsZURpYWxvZzsgd3hDbGFzc0luZm8gKkdldENsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZ3eEZpbGVEaWFsb2c6OnNtX2NsYXNzd3hGaWxlRGlhbG9nOyB9DQp9Ow0KDQoNCl9f
YXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nDQp3eEZpbGVTZWxlY3Rvcihjb25zdCBj
aGFyICptZXNzYWdlID0gd3hGaWxlU2VsZWN0b3JQcm9tcHRTdHIsDQogICAgICAgICAgICAgICBj
b25zdCBjaGFyICpkZWZhdWx0X3BhdGggPSBfX251bGwsDQogICAgICAgICAgICAgICBjb25zdCBj
aGFyICpkZWZhdWx0X2ZpbGVuYW1lID0gX19udWxsLA0KICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZGVmYXVsdF9leHRlbnNpb24gPSBfX251bGwsDQogICAgICAgICAgICAgICBjb25zdCBjaGFy
ICp3aWxkY2FyZCA9IHd4RmlsZVNlbGVjdG9yRGVmYXVsdFdpbGRjYXJkU3RyLA0KICAgICAgICAg
ICAgICAgaW50IGZsYWdzID0gMCwNCiAgICAgICAgICAgICAgIHd4V2luZG93ICpwYXJlbnQgPSBf
X251bGwsDQogICAgICAgICAgICAgICBpbnQgeCA9IC0xLCBpbnQgeSA9IC0xKTsNCg0KDQpfX2F0
dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFN0cmluZw0Kd3hGaWxlU2VsZWN0b3JFeChjb25zdCBj
aGFyICptZXNzYWdlID0gd3hGaWxlU2VsZWN0b3JQcm9tcHRTdHIsDQogICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKmRlZmF1bHRfcGF0aCA9IF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqZGVmYXVsdF9maWxlbmFtZSA9IF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgaW50
ICppbmRleERlZmF1bHRFeHRlbnNpb24gPSBfX251bGwsDQogICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKndpbGRjYXJkID0gd3hGaWxlU2VsZWN0b3JEZWZhdWx0V2lsZGNhcmRTdHIsDQogICAg
ICAgICAgICAgICAgIGludCBmbGFncyA9IDAsDQogICAgICAgICAgICAgICAgIHd4V2luZG93ICpw
YXJlbnQgPSBfX251bGwsDQogICAgICAgICAgICAgICAgIGludCB4ID0gLTEsIGludCB5ID0gLTEp
Ow0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4U3RyaW5nDQp3eExvYWRGaWxlU2Vs
ZWN0b3IoY29uc3QgY2hhciAqd2hhdCwNCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
eHRlbnNpb24sDQogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGVmYXVsdF9uYW1lID0g
KGNvbnN0IGNoYXIgKilfX251bGwsDQogICAgICAgICAgICAgICAgICAgd3hXaW5kb3cgKnBhcmVu
dCA9ICh3eFdpbmRvdyAqKSBfX251bGwpOw0KDQoNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkp
IHd4U3RyaW5nDQp3eFNhdmVGaWxlU2VsZWN0b3IoY29uc3QgY2hhciAqd2hhdCwNCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb24sDQogICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqZGVmYXVsdF9uYW1lID0gKGNvbnN0IGNoYXIgKikgX19udWxsLA0KICAgICAgICAg
ICAgICAgICAgIHd4V2luZG93ICpwYXJlbnQgPSAod3hXaW5kb3cgKikgX19udWxsKTsNCiMgMTYg
Ii4uLy4uL2luY2x1ZGUvd3gvZmlsZWRsZy5oIiAyDQojIDc0ICIuLi8uLi9pbmNsdWRlL3d4L3d4
LmgiIDINCiMgMSAiLi4vLi4vaW5jbHVkZS93eC9kaXJkbGcuaCIgMQ0KDQoNCg0KDQoNCg0KDQpf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hEaXJEaWFsb2dO
YW1lU3RyOw0KX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4
RGlyRGlhbG9nRGVmYXVsdEZvbGRlclN0cjsNCl9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIGV4
dGVybiBjb25zdCBjaGFyKiB3eEVtcHR5U3RyaW5nOw0KDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5j
bHVkZS93eC9tc3cvZGlyZGxnLmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvbXN3L2RpcmRs
Zy5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgImRpcmRsZy5oIg0KDQoNCg0KDQpfX2F0dHJpYnV0ZV9f
KChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3QgY2hhciogd3hGaWxlU2VsZWN0b3JQcm9tcHRTdHI7
DQoNCmNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4RGlyRGlhbG9nOiBwdWJsaWMg
d3hEaWFsb2cNCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hEaXJEaWFs
b2c7IHd4Q2xhc3NJbmZvICpHZXRDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmd3hEaXJEaWFs
b2c6OnNtX2NsYXNzd3hEaXJEaWFsb2c7IH0NCnB1YmxpYzoNCiAgICB3eERpckRpYWxvZyh3eFdp
bmRvdyAqcGFyZW50LCBjb25zdCB3eFN0cmluZyYgbWVzc2FnZSA9IHd4RmlsZVNlbGVjdG9yUHJv
bXB0U3RyLA0KICAgICAgICBjb25zdCB3eFN0cmluZyYgZGVmYXVsdFBhdGggPSB3eEVtcHR5U3Ry
aW5nLA0KICAgICAgICBsb25nIHN0eWxlID0gMCwgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZh
dWx0UG9zaXRpb24pOw0KDQogICAgaW5saW5lIHZvaWQgU2V0TWVzc2FnZShjb25zdCB3eFN0cmlu
ZyYgbWVzc2FnZSkgeyBtX21lc3NhZ2UgPSBtZXNzYWdlOyB9DQogICAgaW5saW5lIHZvaWQgU2V0
UGF0aChjb25zdCB3eFN0cmluZyYgcGF0aCkgeyBtX3BhdGggPSBwYXRoOyB9DQogICAgaW5saW5l
IHZvaWQgU2V0U3R5bGUobG9uZyBzdHlsZSkgeyBtX2RpYWxvZ1N0eWxlID0gc3R5bGU7IH0NCg0K
ICAgIGlubGluZSB3eFN0cmluZyBHZXRNZXNzYWdlKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZTsgfQ0KICAgIGlubGluZSB3eFN0cmluZyBHZXRQYXRoKHZvaWQpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0aDsgfQ0KICAgIGlubGluZSBsb25nIEdldFN0eWxlKHZvaWQpIGNvbnN0IHsgcmV0dXJu
IG1fZGlhbG9nU3R5bGU7IH0NCg0KICAgIGludCBTaG93TW9kYWwodm9pZCk7DQoNCnByb3RlY3Rl
ZDoNCiAgICB3eFN0cmluZyBtX21lc3NhZ2U7DQogICAgbG9uZyBtX2RpYWxvZ1N0eWxlOw0KICAg
IHd4V2luZG93ICogbV9wYXJlbnQ7DQogICAgd3hTdHJpbmcgbV9wYXRoOw0KfTsNCiMgMTcgIi4u
Ly4uL2luY2x1ZGUvd3gvZGlyZGxnLmgiIDINCiMgNzUgIi4uLy4uL2luY2x1ZGUvd3gvd3guaCIg
Mg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4L3Rvb2xiYXIuaCIgMQ0KIyAxNSAiLi4vLi4vaW5jbHVk
ZS93eC90b29sYmFyLmgiDQojIDEgIi4uLy4uL2luY2x1ZGUvd3gvdGJhcmJhc2UuaCIgMQ0KIyAy
MCAiLi4vLi4vaW5jbHVkZS93eC90YmFyYmFzZS5oIg0KI3ByYWdtYSBpbnRlcmZhY2UgInRiYXJi
YXNlLmgiDQojIDI5ICIuLi8uLi9pbmNsdWRlL3d4L3RiYXJiYXNlLmgiDQpjbGFzcyBfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRvb2xCYXJCYXNlOw0KY2xhc3MgX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgd3hUb29sQmFyVG9vbEJhc2U7DQoNCg0KDQoNCg0KX19hdHRyaWJ1dGVfXygo
ZGxsaW1wb3J0KSkgZXh0ZXJuIGNvbnN0IGNoYXIqIHd4VG9vbEJhck5hbWVTdHI7DQpfX2F0dHJp
YnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3Qgd3hTaXplIHd4RGVmYXVsdFNpemU7DQpf
X2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSBleHRlcm4gY29uc3Qgd3hQb2ludCB3eERlZmF1bHRQ
b3NpdGlvbjsNCg0KZW51bSB3eFRvb2xCYXJUb29sU3R5bGUNCnsNCiAgICB3eFRPT0xfU1RZTEVf
QlVUVE9OID0gMSwNCiAgICB3eFRPT0xfU1RZTEVfU0VQQVJBVE9SID0gMiwNCiAgICB3eFRPT0xf
U1RZTEVfQ09OVFJPTA0KfTsNCiMgNTggIi4uLy4uL2luY2x1ZGUvd3gvdGJhcmJhc2UuaCINCmNs
YXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4VG9vbEJhclRvb2xCYXNlIDogcHVibGlj
IHd4T2JqZWN0DQp7DQpwdWJsaWM6DQoNCg0KDQogICAgd3hUb29sQmFyVG9vbEJhc2Uod3hUb29s
QmFyQmFzZSAqdGJhciA9ICh3eFRvb2xCYXJCYXNlICopX19udWxsLA0KICAgICAgICAgICAgICAg
ICAgICAgIGludCBpZCA9ICgtMSksDQogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hCaXRt
YXAmIGJpdG1hcDEgPSB3eE51bGxCaXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
d3hCaXRtYXAmIGJpdG1hcDIgPSB3eE51bGxCaXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB0b2dnbGUgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgIHd4T2JqZWN0ICpjbGllbnRE
YXRhID0gKHd4T2JqZWN0ICopIF9fbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
eFN0cmluZyYgc2hvcnRIZWxwU3RyaW5nID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB3eFN0cmluZyYgbG9uZ0hlbHBTdHJpbmcgPSB3eEVtcHR5U3RyaW5nKQ0K
ICAgICAgICA6IG1fc2hvcnRIZWxwU3RyaW5nKHNob3J0SGVscFN0cmluZyksDQogICAgICAgICAg
bV9sb25nSGVscFN0cmluZyhsb25nSGVscFN0cmluZykNCiAgICB7DQogICAgICAgIG1fdGJhciA9
IHRiYXI7DQogICAgICAgIG1faWQgPSBpZDsNCiAgICAgICAgbV9jbGllbnREYXRhID0gY2xpZW50
RGF0YTsNCg0KICAgICAgICBtX2JpdG1hcDEgPSBiaXRtYXAxOw0KICAgICAgICBtX2JpdG1hcDIg
PSBiaXRtYXAyOw0KDQogICAgICAgIG1faXNUb2dnbGUgPSB0b2dnbGU7DQogICAgICAgIG1fZW5h
YmxlZCA9IDE7DQogICAgICAgIG1fdG9nZ2xlZCA9IDA7DQoNCiAgICAgICAgbV90b29sU3R5bGUg
PSBpZCA9PSAoLTEpID8gd3hUT09MX1NUWUxFX1NFUEFSQVRPUg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogd3hUT09MX1NUWUxFX0JVVFRPTjsNCiAgICB9DQoN
CiAgICB3eFRvb2xCYXJUb29sQmFzZSh3eFRvb2xCYXJCYXNlICp0YmFyLCB3eENvbnRyb2wgKmNv
bnRyb2wpDQogICAgew0KICAgICAgICBtX3RiYXIgPSB0YmFyOw0KICAgICAgICBtX2NvbnRyb2wg
PSBjb250cm9sOw0KICAgICAgICBtX2lkID0gY29udHJvbC0+R2V0SWQoKTsNCg0KICAgICAgICBt
X2lzVG9nZ2xlID0gMDsNCiAgICAgICAgbV9lbmFibGVkID0gMTsNCiAgICAgICAgbV90b2dnbGVk
ID0gMDsNCg0KICAgICAgICBtX3Rvb2xTdHlsZSA9IHd4VE9PTF9TVFlMRV9DT05UUk9MOw0KICAg
IH0NCg0KICAgIH53eFRvb2xCYXJUb29sQmFzZSgpOw0KDQoNCg0KDQoNCiAgICBpbnQgR2V0SWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9DQoNCiAgICB3eENvbnRyb2wgKkdldENvbnRyb2woKSBj
b25zdA0KICAgIHsNCiAgICAgICAgaWYgKCAhKElzQ29udHJvbCgpKSApIHd4T25Bc3NlcnQoIi4u
Ly4uL2luY2x1ZGUvd3gvdGJhcmJhc2UuaCIsIDExMywgInRoaXMgdG9vbGJhciB0b29sIGlzIG5v
dCBhIGNvbnRyb2wiKTsNCg0KICAgICAgICByZXR1cm4gbV9jb250cm9sOw0KICAgIH0NCg0KICAg
IHd4VG9vbEJhckJhc2UgKkdldFRvb2xCYXIoKSBjb25zdCB7IHJldHVybiBtX3RiYXI7IH0NCg0K
DQogICAgaW50IElzQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV90b29sU3R5bGUgPT0gd3hUT09M
X1NUWUxFX0JVVFRPTjsgfQ0KICAgIGludCBJc0NvbnRyb2woKSBjb25zdCB7IHJldHVybiBtX3Rv
b2xTdHlsZSA9PSB3eFRPT0xfU1RZTEVfQ09OVFJPTDsgfQ0KICAgIGludCBJc1NlcGFyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdG9vbFN0eWxlID09IHd4VE9PTF9TVFlMRV9TRVBBUkFUT1I7IH0N
CiAgICBpbnQgR2V0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Rvb2xTdHlsZTsgfQ0KDQoNCiAg
ICBib29sIElzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQ0KICAgIGJvb2wg
SXNUb2dnbGVkKCkgY29uc3QgeyByZXR1cm4gbV90b2dnbGVkOyB9DQogICAgYm9vbCBDYW5CZVRv
Z2dsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVG9nZ2xlOyB9DQoNCg0KICAgIGNvbnN0IHd4Qml0
bWFwJiBHZXRCaXRtYXAxKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAxOyB9DQogICAgY29uc3Qg
d3hCaXRtYXAmIEdldEJpdG1hcDIoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcDI7IH0NCg0KICAg
IGNvbnN0IHd4Qml0bWFwJiBHZXRCaXRtYXAoKSBjb25zdA0KICAgICAgICB7IHJldHVybiBJc1Rv
Z2dsZWQoKSA/IG1fYml0bWFwMiA6IG1fYml0bWFwMTsgfQ0KDQogICAgd3hTdHJpbmcgR2V0U2hv
cnRIZWxwKCkgY29uc3QgeyByZXR1cm4gbV9zaG9ydEhlbHBTdHJpbmc7IH0NCiAgICB3eFN0cmlu
ZyBHZXRMb25nSGVscCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ0hlbHBTdHJpbmc7IH0NCg0KICAg
IHd4T2JqZWN0ICpHZXRDbGllbnREYXRhKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICggbV90
b29sU3R5bGUgPT0gd3hUT09MX1NUWUxFX0NPTlRST0wgKQ0KICAgICAgICB7DQogICAgICAgICAg
ICByZXR1cm4gKHd4T2JqZWN0KiltX2NvbnRyb2wtPkdldENsaWVudERhdGEoKTsNCiAgICAgICAg
fQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX2NsaWVudERh
dGE7DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIGJvb2wgRW5hYmxlKGJvb2wgZW5hYmxlKTsN
CiAgICBib29sIFRvZ2dsZShib29sIHRvZ2dsZSk7DQogICAgYm9vbCBTZXRUb2dnbGUoYm9vbCB0
b2dnbGUpOw0KICAgIGJvb2wgU2V0U2hvcnRIZWxwKGNvbnN0IHd4U3RyaW5nJiBoZWxwKTsNCiAg
ICBib29sIFNldExvbmdIZWxwKGNvbnN0IHd4U3RyaW5nJiBoZWxwKTsNCg0KICAgIHZvaWQgVG9n
Z2xlKCkgeyBUb2dnbGUoIUlzVG9nZ2xlZCgpKTsgfQ0KDQogICAgdm9pZCBTZXRCaXRtYXAxKGNv
bnN0IHd4Qml0bWFwJiBibXApIHsgbV9iaXRtYXAxID0gYm1wOyB9DQogICAgdm9pZCBTZXRCaXRt
YXAyKGNvbnN0IHd4Qml0bWFwJiBibXApIHsgbV9iaXRtYXAyID0gYm1wOyB9DQoNCiAgICB2b2lk
IFNldENsaWVudERhdGEod3hPYmplY3QgKmNsaWVudERhdGEpDQogICAgew0KICAgICAgICBpZiAo
IG1fdG9vbFN0eWxlID09IHd4VE9PTF9TVFlMRV9DT05UUk9MICkNCiAgICAgICAgew0KICAgICAg
ICAgICAgbV9jb250cm9sLT5TZXRDbGllbnREYXRhKGNsaWVudERhdGEpOw0KICAgICAgICB9DQog
ICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgbV9jbGllbnREYXRhID0gY2xpZW50
RGF0YTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgdmlydHVhbCB2b2lkIERldGFjaCgpIHsg
bV90YmFyID0gKHd4VG9vbEJhckJhc2UgKilfX251bGw7IH0NCiAgICB2aXJ0dWFsIHZvaWQgQXR0
YWNoKHd4VG9vbEJhckJhc2UgKnRiYXIpIHsgbV90YmFyID0gdGJhcjsgfQ0KDQpwcm90ZWN0ZWQ6
DQogICAgd3hUb29sQmFyQmFzZSAqbV90YmFyOw0KDQogICAgaW50IG1fdG9vbFN0eWxlOw0KICAg
IGludCBtX2lkOw0KDQoNCiAgICB1bmlvbg0KICAgIHsNCiAgICAgICAgd3hPYmplY3QgKm1fY2xp
ZW50RGF0YTsNCiAgICAgICAgd3hDb250cm9sICptX2NvbnRyb2w7DQogICAgfTsNCg0KDQogICAg
Ym9vbCBtX3RvZ2dsZWQ7DQogICAgYm9vbCBtX2lzVG9nZ2xlOw0KICAgIGJvb2wgbV9lbmFibGVk
Ow0KDQoNCiAgICB3eEJpdG1hcCBtX2JpdG1hcDE7DQogICAgd3hCaXRtYXAgbV9iaXRtYXAyOw0K
DQoNCiAgICB3eFN0cmluZyBtX3Nob3J0SGVscFN0cmluZzsNCiAgICB3eFN0cmluZyBtX2xvbmdI
ZWxwU3RyaW5nOw0KfTsNCg0KDQp0eXBlZGVmIHd4VG9vbEJhclRvb2xCYXNlIF9XWF9MSVNUX0lU
RU1fVFlQRV93eFRvb2xCYXJUb29sc0xpc3Q7IHR5cGVkZWYgaW50ICgqd3hTb3J0RnVuY0Zvcl93
eFRvb2xCYXJUb29sc0xpc3QpKGNvbnN0IHd4VG9vbEJhclRvb2xCYXNlICoqLCBjb25zdCB3eFRv
b2xCYXJUb29sQmFzZSAqKik7IGNsYXNzIF9fYXR0cmlidXRlX18oKGRsbGltcG9ydCkpIHd4d3hU
b29sQmFyVG9vbHNMaXN0Tm9kZSA6IHB1YmxpYyB3eE5vZGVCYXNlIHsgcHVibGljOiB3eHd4VG9v
bEJhclRvb2xzTGlzdE5vZGUod3hMaXN0QmFzZSAqbGlzdCA9ICh3eExpc3RCYXNlICopX19udWxs
LCB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKnByZXZpb3VzID0gKHd4d3hUb29sQmFyVG9vbHNM
aXN0Tm9kZSAqKV9fbnVsbCwgd3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICpuZXh0ID0gKHd4d3hU
b29sQmFyVG9vbHNMaXN0Tm9kZSAqKV9fbnVsbCwgd3hUb29sQmFyVG9vbEJhc2UgKmRhdGEgPSAo
d3hUb29sQmFyVG9vbEJhc2UgKilfX251bGwsIGNvbnN0IHd4TGlzdEtleSYga2V5ID0gd3hEZWZh
dWx0TGlzdEtleSkgOiB3eE5vZGVCYXNlKGxpc3QsIHByZXZpb3VzLCBuZXh0LCBkYXRhLCBrZXkp
IHsgfSB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKkdldE5leHQoKSBjb25zdCB7IHJldHVybiAo
d3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICopd3hOb2RlQmFzZTo6R2V0TmV4dCgpOyB9IHd4d3hU
b29sQmFyVG9vbHNMaXN0Tm9kZSAqR2V0UHJldmlvdXMoKSBjb25zdCB7IHJldHVybiAod3h3eFRv
b2xCYXJUb29sc0xpc3ROb2RlICopd3hOb2RlQmFzZTo6R2V0UHJldmlvdXMoKTsgfSB3eFRvb2xC
YXJUb29sQmFzZSAqR2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuICh3eFRvb2xCYXJUb29sQmFzZSAq
KXd4Tm9kZUJhc2U6OkdldERhdGEoKTsgfSB2b2lkIFNldERhdGEod3hUb29sQmFyVG9vbEJhc2Ug
KmRhdGEpIHsgd3hOb2RlQmFzZTo6U2V0RGF0YShkYXRhKTsgfSB2aXJ0dWFsIHZvaWQgRGVsZXRl
RGF0YSgpOyB9OyBjbGFzcyBfX2F0dHJpYnV0ZV9fKChkbGxpbXBvcnQpKSB3eFRvb2xCYXJUb29s
c0xpc3QgOiBwdWJsaWMgd3hMaXN0QmFzZSB7IHB1YmxpYzogdHlwZWRlZiB3eHd4VG9vbEJhclRv
b2xzTGlzdE5vZGUgTm9kZTsgd3hUb29sQmFyVG9vbHNMaXN0KHd4S2V5VHlwZSBrZXlUeXBlID0g
d3hLRVlfTk9ORSkgOiB3eExpc3RCYXNlKGtleVR5cGUpIHsgfSB3eFRvb2xCYXJUb29sc0xpc3Qo
c2l6ZV90IGNvdW50LCB3eFRvb2xCYXJUb29sQmFzZSAqZWxlbWVudHNbXSkgOiB3eExpc3RCYXNl
KGNvdW50LCAodm9pZCAqKillbGVtZW50cykgeyB9IHd4VG9vbEJhclRvb2xzTGlzdCYgb3BlcmF0
b3I9KGNvbnN0IHd4VG9vbEJhclRvb2xzTGlzdCYgbGlzdCkgeyByZXR1cm4gKHd4VG9vbEJhclRv
b2xzTGlzdCYpd3hMaXN0QmFzZTo6b3BlcmF0b3I9KGxpc3QpOyB9IHd4d3hUb29sQmFyVG9vbHNM
aXN0Tm9kZSAqR2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAod3h3eFRvb2xCYXJUb29sc0xpc3RO
b2RlICopd3hMaXN0QmFzZTo6R2V0Rmlyc3QoKTsgfSB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUg
KkdldExhc3QoKSBjb25zdCB7IHJldHVybiAod3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICopd3hM
aXN0QmFzZTo6R2V0TGFzdCgpOyB9IHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqSXRlbShzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuICh3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKil3eExp
c3RCYXNlOjpJdGVtKGluZGV4KTsgfSB3eFRvb2xCYXJUb29sQmFzZSAqb3BlcmF0b3JbXShzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgd3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICpub2RlID0gSXRlbShp
bmRleCk7IHJldHVybiBub2RlID8gKHd4VG9vbEJhclRvb2xCYXNlKikobm9kZS0+R2V0RGF0YSgp
KSA6ICh3eFRvb2xCYXJUb29sQmFzZSopX19udWxsOyB9IHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9k
ZSAqQXBwZW5kKHd4VG9vbEJhclRvb2xCYXNlICpvYmplY3QpIHsgcmV0dXJuICh3eHd4VG9vbEJh
clRvb2xzTGlzdE5vZGUgKil3eExpc3RCYXNlOjpBcHBlbmQob2JqZWN0KTsgfSB3eHd4VG9vbEJh
clRvb2xzTGlzdE5vZGUgKkluc2VydCh3eFRvb2xCYXJUb29sQmFzZSAqb2JqZWN0KSB7IHJldHVy
biAod3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICopSW5zZXJ0KCh3eHd4VG9vbEJhclRvb2xzTGlz
dE5vZGUqKV9fbnVsbCwgb2JqZWN0KTsgfSB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKkluc2Vy
dChzaXplX3QgcG9zLCB3eFRvb2xCYXJUb29sQmFzZSAqb2JqZWN0KSB7IHJldHVybiAod3h3eFRv
b2xCYXJUb29sc0xpc3ROb2RlICopd3hMaXN0QmFzZTo6SW5zZXJ0KHBvcywgb2JqZWN0KTsgfSB3
eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKkluc2VydCh3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUg
KnByZXYsIHd4VG9vbEJhclRvb2xCYXNlICpvYmplY3QpIHsgcmV0dXJuICh3eHd4VG9vbEJhclRv
b2xzTGlzdE5vZGUgKil3eExpc3RCYXNlOjpJbnNlcnQocHJldiwgb2JqZWN0KTsgfSB3eHd4VG9v
bEJhclRvb2xzTGlzdE5vZGUgKkFwcGVuZChsb25nIGtleSwgdm9pZCAqb2JqZWN0KSB7IHJldHVy
biAod3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICopd3hMaXN0QmFzZTo6QXBwZW5kKGtleSwgb2Jq
ZWN0KTsgfSB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKkFwcGVuZChjb25zdCBjaGFyICprZXks
IHZvaWQgKm9iamVjdCkgeyByZXR1cm4gKHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqKXd4TGlz
dEJhc2U6OkFwcGVuZChrZXksIG9iamVjdCk7IH0gd3h3eFRvb2xCYXJUb29sc0xpc3ROb2RlICpE
ZXRhY2hOb2RlKHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gKHd4d3hU
b29sQmFyVG9vbHNMaXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkRldGFjaE5vZGUobm9kZSk7IH0gYm9v
bCBEZWxldGVOb2RlKHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqbm9kZSkgeyByZXR1cm4gd3hM
aXN0QmFzZTo6RGVsZXRlTm9kZShub2RlKTsgfSBib29sIERlbGV0ZU9iamVjdCh3eFRvb2xCYXJU
b29sQmFzZSAqb2JqZWN0KSB7IHJldHVybiB3eExpc3RCYXNlOjpEZWxldGVPYmplY3Qob2JqZWN0
KTsgfSB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKkZpbmQod3hUb29sQmFyVG9vbEJhc2UgKm9i
amVjdCkgY29uc3QgeyByZXR1cm4gKHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqKXd4TGlzdEJh
c2U6OkZpbmQob2JqZWN0KTsgfSB2aXJ0dWFsIHd4d3hUb29sQmFyVG9vbHNMaXN0Tm9kZSAqRmlu
ZChjb25zdCB3eExpc3RLZXkmIGtleSkgY29uc3QgeyByZXR1cm4gKHd4d3hUb29sQmFyVG9vbHNM
aXN0Tm9kZSAqKXd4TGlzdEJhc2U6OkZpbmQoa2V5KTsgfSBpbnQgSW5kZXhPZih3eFRvb2xCYXJU
b29sQmFzZSAqb2JqZWN0KSBjb25zdCB7IHJldHVybiB3eExpc3RCYXNlOjpJbmRleE9mKG9iamVj
dCk7IH0gdm9pZCBTb3J0KHd4U29ydEZ1bmNGb3Jfd3hUb29sQmFyVG9vbHNMaXN0IGZ1bmMpIHsg
d3hMaXN0QmFzZTo6U29ydCgod3hTb3J0Q29tcGFyZUZ1bmN0aW9uKWZ1bmMpOyB9IHByb3RlY3Rl
ZDogd3hOb2RlQmFzZSAqQ3JlYXRlTm9kZSh3eE5vZGVCYXNlICpwcmV2LCB3eE5vZGVCYXNlICpu
ZXh0LCB2b2lkICpkYXRhLCBjb25zdCB3eExpc3RLZXkmIGtleSA9IHd4RGVmYXVsdExpc3RLZXkp
IHsgcmV0dXJuIG5ldyB3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUodGhpcywgKHd4d3hUb29sQmFy
VG9vbHNMaXN0Tm9kZSAqKXByZXYsICh3eHd4VG9vbEJhclRvb2xzTGlzdE5vZGUgKiluZXh0LCAo
d3hUb29sQmFyVG9vbEJhc2UgKilkYXRhLCBrZXkpOyB9IH07DQoNCg0KDQoNCg0KY2xhc3MgX19h
dHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hUb29sQmFyQmFzZSA6IHB1YmxpYyB3eENvbnRyb2wN
CnsNCnB1YmxpYzoNCiAgICB3eFRvb2xCYXJCYXNlKCk7DQogICAgdmlydHVhbCB+d3hUb29sQmFy
QmFzZSgpOw0KDQoNCg0KDQoNCiAgICB3eFRvb2xCYXJUb29sQmFzZSAqQWRkVG9vbChpbnQgaWQs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgc2hvcnRIZWxw
U3RyaW5nID0gd3hFbXB0eVN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB3eFN0cmluZyYgbG9uZ0hlbHBTdHJpbmcgPSB3eEVtcHR5U3RyaW5nKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIEFkZFRvb2woaWQsIGJpdG1hcCwgd3hOdWxsQml0bWFwLCAwLCBfX251bGws
DQogICAgICAgICAgICAgICAgICAgICAgIHNob3J0SGVscFN0cmluZywgbG9uZ0hlbHBTdHJpbmcp
Ow0KICAgIH0NCg0KDQoNCg0KICAgIHd4VG9vbEJhclRvb2xCYXNlICpBZGRUb29sKGludCBpZCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eEJpdG1hcCYgYml0bWFwLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4Qml0bWFwJiBwdXNoZWRCaXRt
YXAgPSB3eE51bGxCaXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0
b2dnbGUgPSAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4T2JqZWN0ICpjbGll
bnREYXRhID0gX19udWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4
U3RyaW5nJiBzaG9ydEhlbHBTdHJpbmcgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBsb25nSGVscFN0cmluZyA9IHd4RW1wdHlT
dHJpbmcpDQogICAgew0KICAgICAgICByZXR1cm4gQWRkVG9vbChpZCwgYml0bWFwLCBwdXNoZWRC
aXRtYXAsIHRvZ2dsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCBjbGllbnREYXRh
LCBzaG9ydEhlbHBTdHJpbmcsIGxvbmdIZWxwU3RyaW5nKTsNCiAgICB9DQoNCg0KICAgIHZpcnR1
YWwgd3hUb29sQmFyVG9vbEJhc2UgKkFkZFRvb2wNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hCaXRtYXAmIHB1c2hlZEJp
dG1hcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0b2dnbGUsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgeFBvcywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCB5UG9zID0gLTEsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd4T2JqZWN0ICpjbGllbnREYXRhID0gX19udWxsLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgaGVscFN0
cmluZzEgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB3eFN0cmluZyYgaGVscFN0cmluZzIgPSB3eEVtcHR5U3RyaW5nDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsNCg0KDQoNCiAgICB2aXJ0dWFsIHd4VG9vbEJhclRvb2xC
YXNlICpJbnNlcnRUb29sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBvcywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3eEJpdG1hcCYgcHVzaGVkQml0bWFwID0gd3hOdWxsQml0bWFw
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAwLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hPYmplY3QgKmNsaWVudERhdGEg
PSBfX251bGwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0
cmluZyYgaGVscDEgPSB3eEVtcHR5U3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIGhlbHAyID0gd3hFbXB0eVN0cmluZw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7DQoNCg0KDQoNCg0KDQogICAgdmlydHVhbCB3eFRvb2xC
YXJUb29sQmFzZSAqQWRkQ29udHJvbCh3eENvbnRyb2wgKmNvbnRyb2wpOw0KICAgIHZpcnR1YWwg
d3hUb29sQmFyVG9vbEJhc2UgKkluc2VydENvbnRyb2woc2l6ZV90IHBvcywgd3hDb250cm9sICpj
b250cm9sKTsNCg0KDQogICAgdmlydHVhbCB3eFRvb2xCYXJUb29sQmFzZSAqQWRkU2VwYXJhdG9y
KCk7DQogICAgdmlydHVhbCB3eFRvb2xCYXJUb29sQmFzZSAqSW5zZXJ0U2VwYXJhdG9yKHNpemVf
dCBwb3MpOw0KDQoNCg0KICAgIHZpcnR1YWwgd3hUb29sQmFyVG9vbEJhc2UgKlJlbW92ZVRvb2wo
aW50IGlkKTsNCg0KDQogICAgdmlydHVhbCBib29sIERlbGV0ZVRvb2xCeVBvcyhzaXplX3QgcG9z
KTsNCiAgICB2aXJ0dWFsIGJvb2wgRGVsZXRlVG9vbChpbnQgaWQpOw0KDQoNCiAgICB2aXJ0dWFs
IHZvaWQgQ2xlYXJUb29scygpOw0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBSZWFsaXplKCk7DQoN
Cg0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgRW5hYmxlVG9vbChpbnQgaWQsIGJvb2wgZW5hYmxlKTsN
CiAgICB2aXJ0dWFsIHZvaWQgVG9nZ2xlVG9vbChpbnQgaWQsIGJvb2wgdG9nZ2xlKTsNCg0KDQog
ICAgdmlydHVhbCB2b2lkIFNldFRvZ2dsZShpbnQgaWQsIGJvb2wgdG9nZ2xlKTsNCg0KDQogICAg
dmlydHVhbCB3eE9iamVjdCAqR2V0VG9vbENsaWVudERhdGEoaW50IGlkKSBjb25zdDsNCiAgICB2
aXJ0dWFsIHZvaWQgU2V0VG9vbENsaWVudERhdGEoaW50IGlkLCB3eE9iamVjdCAqY2xpZW50RGF0
YSk7DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBHZXRUb29sU3RhdGUoaW50IGlkKSBjb25zdDsNCg0K
ICAgIHZpcnR1YWwgYm9vbCBHZXRUb29sRW5hYmxlZChpbnQgaWQpIGNvbnN0Ow0KDQogICAgdmly
dHVhbCB2b2lkIFNldFRvb2xTaG9ydEhlbHAoaW50IGlkLCBjb25zdCB3eFN0cmluZyYgaGVscFN0
cmluZyk7DQogICAgdmlydHVhbCB3eFN0cmluZyBHZXRUb29sU2hvcnRIZWxwKGludCBpZCkgY29u
c3Q7DQogICAgdmlydHVhbCB2b2lkIFNldFRvb2xMb25nSGVscChpbnQgaWQsIGNvbnN0IHd4U3Ry
aW5nJiBoZWxwU3RyaW5nKTsNCiAgICB2aXJ0dWFsIHd4U3RyaW5nIEdldFRvb2xMb25nSGVscChp
bnQgaWQpIGNvbnN0Ow0KDQoNCg0KDQogICAgdmlydHVhbCB2b2lkIFNldE1hcmdpbnMoaW50IHgs
IGludCB5KTsNCiAgICB2b2lkIFNldE1hcmdpbnMoY29uc3Qgd3hTaXplJiBzaXplKQ0KICAgICAg
ICB7IFNldE1hcmdpbnMoKGludCkgc2l6ZS54LCAoaW50KSBzaXplLnkpOyB9DQogICAgdmlydHVh
bCB2b2lkIFNldFRvb2xQYWNraW5nKGludCBwYWNraW5nKQ0KICAgICAgICB7IG1fdG9vbFBhY2tp
bmcgPSBwYWNraW5nOyB9DQogICAgdmlydHVhbCB2b2lkIFNldFRvb2xTZXBhcmF0aW9uKGludCBz
ZXBhcmF0aW9uKQ0KICAgICAgICB7IG1fdG9vbFNlcGFyYXRpb24gPSBzZXBhcmF0aW9uOyB9DQoN
CiAgICB2aXJ0dWFsIHd4U2l6ZSBHZXRUb29sTWFyZ2lucygpIHsgcmV0dXJuIEdldE1hcmdpbnMo
KTsgfQ0KICAgIHZpcnR1YWwgaW50IEdldFRvb2xQYWNraW5nKCkgeyByZXR1cm4gbV90b29sUGFj
a2luZzsgfQ0KICAgIHZpcnR1YWwgaW50IEdldFRvb2xTZXBhcmF0aW9uKCkgeyByZXR1cm4gbV90
b29sU2VwYXJhdGlvbjsgfQ0KDQoNCiAgICB3eFNpemUgR2V0TWFyZ2lucygpIGNvbnN0IHsgcmV0
dXJuIHd4U2l6ZShtX3hNYXJnaW4sIG1feU1hcmdpbik7IH0NCg0KDQoNCg0KDQogICAgdmlydHVh
bCB2b2lkIFNldFJvd3MoaW50IG5Sb3dzKTsNCg0KDQogICAgdm9pZCBTZXRNYXhSb3dzQ29scyhp
bnQgcm93cywgaW50IGNvbHMpDQogICAgICAgIHsgbV9tYXhSb3dzID0gcm93czsgbV9tYXhDb2xz
ID0gY29sczsgfQ0KICAgIGludCBHZXRNYXhSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhSb3dz
OyB9DQogICAgaW50IEdldE1heENvbHMoKSBjb25zdCB7IHJldHVybiBtX21heENvbHM7IH0NCg0K
DQoNCiAgICB2aXJ0dWFsIHZvaWQgU2V0VG9vbEJpdG1hcFNpemUoY29uc3Qgd3hTaXplJiBzaXpl
KQ0KICAgICAgICB7IG1fZGVmYXVsdFdpZHRoID0gc2l6ZS54OyBtX2RlZmF1bHRIZWlnaHQgPSBz
aXplLnk7IH07DQogICAgdmlydHVhbCB3eFNpemUgR2V0VG9vbEJpdG1hcFNpemUoKSBjb25zdA0K
ICAgICAgICB7IHJldHVybiB3eFNpemUobV9kZWZhdWx0V2lkdGgsIG1fZGVmYXVsdEhlaWdodCk7
IH0NCg0KDQoNCiAgICB2aXJ0dWFsIHd4U2l6ZSBHZXRUb29sU2l6ZSgpIGNvbnN0DQogICAgICAg
IHsgcmV0dXJuIEdldFRvb2xCaXRtYXBTaXplKCk7IH0gOw0KDQoNCg0KICAgIHZpcnR1YWwgd3hU
b29sQmFyVG9vbEJhc2UgKkZpbmRUb29sRm9yUG9zaXRpb24od3hDb29yZCB4LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hDb29yZCB5KSBjb25z
dCA9IDA7DQoNCg0KDQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgT25MZWZ0Q2xpY2soaW50IGlk
LCBib29sIHRvZ2dsZURvd24pOw0KDQoNCiAgICB2aXJ0dWFsIHZvaWQgT25SaWdodENsaWNrKGlu
dCBpZCwgbG9uZyB4LCBsb25nIHkpOw0KDQoNCg0KICAgIHZpcnR1YWwgdm9pZCBPbk1vdXNlRW50
ZXIoaW50IGlkKTsNCiMgNDA2ICIuLi8uLi9pbmNsdWRlL3d4L3RiYXJiYXNlLmgiDQogICAgc2l6
ZV90IEdldFRvb2xzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Rvb2xzLkdldENvdW50KCk7IH0N
Cg0KICAgIHZvaWQgT25JZGxlKHd4SWRsZUV2ZW50JiBldmVudCk7DQoNCg0KICAgIHZpcnR1YWwg
dm9pZCBEb1Rvb2xiYXJVcGRhdGVzKCk7DQoNCg0KICAgIHZpcnR1YWwgYm9vbCBBY2NlcHRzRm9j
dXMoKSBjb25zdCB7IHJldHVybiAwOyB9DQoNCnByb3RlY3RlZDoNCg0KDQoNCg0KDQogICAgdmly
dHVhbCBib29sIERvSW5zZXJ0VG9vbChzaXplX3QgcG9zLCB3eFRvb2xCYXJUb29sQmFzZSAqdG9v
bCkgPSAwOw0KDQoNCg0KICAgIHZpcnR1YWwgYm9vbCBEb0RlbGV0ZVRvb2woc2l6ZV90IHBvcywg
d3hUb29sQmFyVG9vbEJhc2UgKnRvb2wpID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvRW5h
YmxlVG9vbCh3eFRvb2xCYXJUb29sQmFzZSAqdG9vbCwgYm9vbCBlbmFibGUpID0gMDsNCg0KDQog
ICAgdmlydHVhbCB2b2lkIERvVG9nZ2xlVG9vbCh3eFRvb2xCYXJUb29sQmFzZSAqdG9vbCwgYm9v
bCB0b2dnbGUpID0gMDsNCg0KDQogICAgdmlydHVhbCB2b2lkIERvU2V0VG9nZ2xlKHd4VG9vbEJh
clRvb2xCYXNlICp0b29sLCBib29sIHRvZ2dsZSkgPSAwOw0KDQoNCiAgICB2aXJ0dWFsIHd4VG9v
bEJhclRvb2xCYXNlICpDcmVhdGVUb29sKGludCBpZCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAxLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hCaXRtYXAmIGJpdG1hcDIsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRvZ2dsZSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4T2JqZWN0ICpjbGllbnRE
YXRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hT
dHJpbmcmIHNob3J0SGVscFN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBsb25nSGVscFN0cmluZykgPSAwOw0KICAgIHZpcnR1
YWwgd3hUb29sQmFyVG9vbEJhc2UgKkNyZWF0ZVRvb2wod3hDb250cm9sICpjb250cm9sKSA9IDA7
DQoNCg0KDQoNCg0KICAgIHd4VG9vbEJhclRvb2xCYXNlICpGaW5kQnlJZChpbnQgaWQpIGNvbnN0
Ow0KDQoNCiAgICB3eFRvb2xCYXJUb29sc0xpc3QgbV90b29sczsNCg0KDQogICAgaW50IG1feE1h
cmdpbjsNCiAgICBpbnQgbV95TWFyZ2luOw0KDQoNCiAgICBpbnQgbV9tYXhSb3dzOw0KICAgIGlu
dCBtX21heENvbHM7DQoNCg0KICAgIGludCBtX3Rvb2xQYWNraW5nLA0KICAgICAgICBtX3Rvb2xT
ZXBhcmF0aW9uOw0KDQoNCiAgICB3eENvb3JkIG1fZGVmYXVsdFdpZHRoLCBtX2RlZmF1bHRIZWln
aHQ7DQoNCnByaXZhdGU6DQogICAgcHJpdmF0ZTogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZUVu
dHJ5IHNtX2V2ZW50VGFibGVFbnRyaWVzW107cHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qgd3hFdmVu
dFRhYmxlIHNtX2V2ZW50VGFibGU7IHZpcnR1YWwgY29uc3Qgd3hFdmVudFRhYmxlKiBHZXRFdmVu
dFRhYmxlKCkgY29uc3Q7DQp9Ow0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC90b29sYmFyLmgiIDIN
CiMgMjUgIi4uLy4uL2luY2x1ZGUvd3gvdG9vbGJhci5oIg0KIyAxICIuLi8uLi9pbmNsdWRlL3d4
L21zdy90YmFyOTUuaCIgMQ0KIyAxNiAiLi4vLi4vaW5jbHVkZS93eC9tc3cvdGJhcjk1LmgiDQoj
cHJhZ21hIGludGVyZmFjZSAidGJhcjk1LmgiDQoNCg0KDQoNCg0KDQpjbGFzcyBfX2F0dHJpYnV0
ZV9fKChkbGxpbXBvcnQpKSB3eFRvb2xCYXIgOiBwdWJsaWMgd3hUb29sQmFyQmFzZQ0Kew0KcHVi
bGljOg0KDQogICAgd3hUb29sQmFyKCkgeyBJbml0KCk7IH0NCg0KICAgIHd4VG9vbEJhcih3eFdp
bmRvdyAqcGFyZW50LA0KICAgICAgICAgICAgICAgIHd4V2luZG93SUQgaWQsDQogICAgICAgICAg
ICAgICAgY29uc3Qgd3hQb2ludCYgcG9zID0gd3hEZWZhdWx0UG9zaXRpb24sDQogICAgICAgICAg
ICAgICAgY29uc3Qgd3hTaXplJiBzaXplID0gd3hEZWZhdWx0U2l6ZSwNCiAgICAgICAgICAgICAg
ICBsb25nIHN0eWxlID0gMHgwMDIwMDAwMCB8IHd4SE9SSVpPTlRBTCwNCiAgICAgICAgICAgICAg
ICBjb25zdCB3eFN0cmluZyYgbmFtZSA9IHd4VG9vbEJhck5hbWVTdHIpDQogICAgew0KICAgICAg
ICBJbml0KCk7DQoNCiAgICAgICAgQ3JlYXRlKHBhcmVudCwgaWQsIHBvcywgc2l6ZSwgc3R5bGUs
IG5hbWUpOw0KICAgIH0NCg0KICAgIGJvb2wgQ3JlYXRlKHd4V2luZG93ICpwYXJlbnQsDQogICAg
ICAgICAgICAgICAgd3hXaW5kb3dJRCBpZCwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50
JiBwb3MgPSB3eERlZmF1bHRQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUm
IHNpemUgPSB3eERlZmF1bHRTaXplLA0KICAgICAgICAgICAgICAgIGxvbmcgc3R5bGUgPSAweDAw
MjAwMDAwIHwgd3hIT1JJWk9OVEFMLA0KICAgICAgICAgICAgICAgIGNvbnN0IHd4U3RyaW5nJiBu
YW1lID0gd3hUb29sQmFyTmFtZVN0cik7DQoNCiAgICB2aXJ0dWFsIH53eFRvb2xCYXIoKTsNCg0K
DQogICAgdmlydHVhbCB3eFRvb2xCYXJUb29sQmFzZSAqRmluZFRvb2xGb3JQb3NpdGlvbih3eENv
b3JkIHgsIHd4Q29vcmQgeSkgY29uc3Q7DQoNCiAgICB2aXJ0dWFsIGJvb2wgUmVhbGl6ZSgpOw0K
DQogICAgdmlydHVhbCB2b2lkIFNldFRvb2xCaXRtYXBTaXplKGNvbnN0IHd4U2l6ZSYgc2l6ZSk7
DQogICAgdmlydHVhbCB3eFNpemUgR2V0VG9vbFNpemUoKSBjb25zdDsNCg0KICAgIHZpcnR1YWwg
dm9pZCBTZXRSb3dzKGludCBuUm93cyk7DQoNCg0KDQoNCiAgICB2aXJ0dWFsIGJvb2wgTVNXQ29t
bWFuZChXWFVJTlQgcGFyYW0sIFdYV09SRCBpZCk7DQogICAgdmlydHVhbCBib29sIE1TV09uTm90
aWZ5KGludCBpZEN0cmwsIFdYTFBBUkFNIGxQYXJhbSwgV1hMUEFSQU0gKnJlc3VsdCk7DQoNCiAg
ICB2b2lkIE9uTW91c2VFdmVudCh3eE1vdXNlRXZlbnQmIGV2ZW50KTsNCiAgICB2b2lkIE9uU3lz
Q29sb3VyQ2hhbmdlZCh3eFN5c0NvbG91ckNoYW5nZWRFdmVudCYgZXZlbnQpOw0KDQpwcm90ZWN0
ZWQ6DQoNCiAgICB2b2lkIEluaXQoKTsNCg0KDQogICAgdmlydHVhbCBib29sIERvSW5zZXJ0VG9v
bChzaXplX3QgcG9zLCB3eFRvb2xCYXJUb29sQmFzZSAqdG9vbCk7DQogICAgdmlydHVhbCBib29s
IERvRGVsZXRlVG9vbChzaXplX3QgcG9zLCB3eFRvb2xCYXJUb29sQmFzZSAqdG9vbCk7DQoNCiAg
ICB2aXJ0dWFsIHZvaWQgRG9FbmFibGVUb29sKHd4VG9vbEJhclRvb2xCYXNlICp0b29sLCBib29s
IGVuYWJsZSk7DQogICAgdmlydHVhbCB2b2lkIERvVG9nZ2xlVG9vbCh3eFRvb2xCYXJUb29sQmFz
ZSAqdG9vbCwgYm9vbCB0b2dnbGUpOw0KICAgIHZpcnR1YWwgdm9pZCBEb1NldFRvZ2dsZSh3eFRv
b2xCYXJUb29sQmFzZSAqdG9vbCwgYm9vbCB0b2dnbGUpOw0KDQogICAgdmlydHVhbCB3eFRvb2xC
YXJUb29sQmFzZSAqQ3JlYXRlVG9vbChpbnQgaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB3eEJpdG1hcCYgYml0bWFwMSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0b2dnbGUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eE9iamVjdCAqY2xpZW50RGF0
YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHd4U3Ry
aW5nJiBzaG9ydEhlbHBTdHJpbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB3eFN0cmluZyYgbG9uZ0hlbHBTdHJpbmcpOw0KICAgIHZpcnR1YWwgd3hU
b29sQmFyVG9vbEJhc2UgKkNyZWF0ZVRvb2wod3hDb250cm9sICpjb250cm9sKTsNCg0KDQogICAg
dm9pZCBVcGRhdGVTaXplKCk7DQoNCg0KICAgIHZpcnR1YWwgbG9uZyBNU1dXaW5kb3dQcm9jKFdY
VUlOVCBuTXNnLCBXWFdQQVJBTSB3UGFyYW0sIFdYTFBBUkFNIGxQYXJhbSk7DQoNCg0KICAgIFdY
SEJJVE1BUCBtX2hCaXRtYXA7DQoNCg0KICAgIHNpemVfdCBtX25CdXR0b25zOw0KDQpwcml2YXRl
Og0KICAgIHByaXZhdGU6IHN0YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRh
YmxlRW50cmllc1tdO3Byb3RlY3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVu
dFRhYmxlOyB2aXJ0dWFsIGNvbnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0
Ow0KICAgIHB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNzd3hUb29sQmFyOyB3eENs
YXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnd4VG9vbEJhcjo6c21fY2xh
c3N3eFRvb2xCYXI7IH0NCn07DQojIDI2ICIuLi8uLi9pbmNsdWRlL3d4L3Rvb2xiYXIuaCIgMg0K
IyA3NiAiLi4vLi4vaW5jbHVkZS93eC93eC5oIiAyDQoNCg0KDQoNCiMgMSAiLi4vLi4vaW5jbHVk
ZS93eC92YWx0ZXh0LmgiIDENCiMgMTYgIi4uLy4uL2luY2x1ZGUvd3gvdmFsdGV4dC5oIg0KI3By
YWdtYSBpbnRlcmZhY2UgInZhbHRleHQuaCINCiMgMzMgIi4uLy4uL2luY2x1ZGUvd3gvdmFsdGV4
dC5oIg0KY2xhc3MgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkgd3hUZXh0VmFsaWRhdG9yOiBw
dWJsaWMgd3hWYWxpZGF0b3INCnsNCnB1YmxpYzogc3RhdGljIHd4Q2xhc3NJbmZvIHNtX2NsYXNz
d3hUZXh0VmFsaWRhdG9yOyB3eENsYXNzSW5mbyAqR2V0Q2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJnd4VGV4dFZhbGlkYXRvcjo6c21fY2xhc3N3eFRleHRWYWxpZGF0b3I7IH0NCnB1YmxpYzoN
CiAgd3hUZXh0VmFsaWRhdG9yKGxvbmcgc3R5bGUgPSAweDAwMDAsIHd4U3RyaW5nICp2YWwgPSAo
d3hTdHJpbmcgKikgX19udWxsKTsNCiAgd3hUZXh0VmFsaWRhdG9yKGNvbnN0IHd4VGV4dFZhbGlk
YXRvciYgdmFsKTsNCg0KICB+d3hUZXh0VmFsaWRhdG9yKCk7DQoNCg0KDQoNCg0KICB2aXJ0dWFs
IHd4T2JqZWN0ICpDbG9uZSh2b2lkKSBjb25zdCB7IHJldHVybiBuZXcgd3hUZXh0VmFsaWRhdG9y
KCp0aGlzKTsgfQ0KICBib29sIENvcHkoY29uc3Qgd3hUZXh0VmFsaWRhdG9yJiB2YWwpOw0KDQoN
Cg0KICB2aXJ0dWFsIGJvb2wgVmFsaWRhdGUod3hXaW5kb3cgKnBhcmVudCk7DQoNCg0KICB2aXJ0
dWFsIGJvb2wgVHJhbnNmZXJUb1dpbmRvdyh2b2lkKTsNCg0KDQogIHZpcnR1YWwgYm9vbCBUcmFu
c2ZlckZyb21XaW5kb3codm9pZCk7DQoNCg0KICBpbmxpbmUgbG9uZyBHZXRTdHlsZSh2b2lkKSBj
b25zdCB7IHJldHVybiBtX3ZhbGlkYXRvclN0eWxlOyB9DQogIGlubGluZSB2b2lkIFNldFN0eWxl
KGxvbmcgc3R5bGUpIHsgbV92YWxpZGF0b3JTdHlsZSA9IHN0eWxlOyB9DQoNCiAgdm9pZCBTZXRJ
bmNsdWRlTGlzdChjb25zdCB3eFN0cmluZ0xpc3QmIGxpc3QpOw0KICBpbmxpbmUgd3hTdHJpbmdM
aXN0JiBHZXRJbmNsdWRlTGlzdCh2b2lkKSB7IHJldHVybiBtX2luY2x1ZGVMaXN0OyB9DQoNCiAg
dm9pZCBTZXRFeGNsdWRlTGlzdChjb25zdCB3eFN0cmluZ0xpc3QmIGxpc3QpOw0KICBpbmxpbmUg
d3hTdHJpbmdMaXN0JiBHZXRFeGNsdWRlTGlzdCh2b2lkKSB7IHJldHVybiBtX2V4Y2x1ZGVMaXN0
OyB9DQoNCg0KICB2b2lkIE9uQ2hhcih3eEtleUV2ZW50JiBldmVudCk7DQoNCnByaXZhdGU6IHN0
YXRpYyBjb25zdCB3eEV2ZW50VGFibGVFbnRyeSBzbV9ldmVudFRhYmxlRW50cmllc1tdO3Byb3Rl
Y3RlZDogc3RhdGljIGNvbnN0IHd4RXZlbnRUYWJsZSBzbV9ldmVudFRhYmxlOyB2aXJ0dWFsIGNv
bnN0IHd4RXZlbnRUYWJsZSogR2V0RXZlbnRUYWJsZSgpIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQog
ICAgbG9uZyBtX3ZhbGlkYXRvclN0eWxlOw0KICAgIHd4U3RyaW5nICogbV9zdHJpbmdWYWx1ZTsN
CiAgICB3eFN0cmluZ0xpc3QgbV9pbmNsdWRlTGlzdDsNCiAgICB3eFN0cmluZ0xpc3QgbV9leGNs
dWRlTGlzdDsNCn07DQojIDgxICIuLi8uLi9pbmNsdWRlL3d4L3d4LmgiIDINCiMgMTcgIm1pbmlt
YWwyLmNwcCIgMg0K


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

end of thread, other threads:[~2003-04-07 13:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-06 23:16 c++/6670: ICE when compiling code that uses __attribute__((dllimport)) Giovanni Bajo
  -- strict thread matches above, loose matches on Subject: below --
2003-04-07 13:56 bangerth
2003-04-07 13:54 bangerth
2003-04-06 23:36 Oscar Fuentes
2002-05-15 20:16 ofv

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